1. Trang chủ
  2. » Luận Văn - Báo Cáo

TIểu luận môn CHỨNG THỰC SỐ TÌM HIỂU DỮ LIỆU CSP

40 1,4K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 637 KB

Nội dung

Chương 1: Giới thiệu chung về CSP (Cryptographic Service Providers) CSP là thuật ngữ để chỉ một thành phần trong hệ điều hành Microsoft Windows chứa cài đặt của các thuật toán và chuẩn mật mã. Một CSP tối thiểu phải có một thư viện dạng liên kết động (DLL) làm nhiệm vụ hiện thực hóa các hàm trong CryptoSPI (interface giao tiếp giữa CSP và hệ thống). Hầu hết các CSP tự hiện thực hóa các hàm chức năng của nó. Cũng có một số CSP sử dụng các dịch vụ của Windows để thực hiện các hàm riêng của mình dưới sự quản lí của Windows Service Control Manager. Một số CSP khác cài đặt các hàm này ở mức phần cứng, chẳng hạn như smartcard, pkitoken… Nếu một CSP không hiện thực tất cả các hàm chức năng cần thiết, nó sẽ hoạt động như là một lớp trung gian, đảm bảo giao tiếp giữa hệ điều hành và chi tiết cài đặt thực sự của các hàm ở lớp bên dưới (hardware). 1. Tổng quan kiến trúc CSP Các ứng dụng liên quan tới mật mã chạy trên Windows không giao tiếp trực tiếp với các CSP mà thông qua việc gọi các hàm trong giao diện CryptoAPI. Các hàm này được cung cấp trong các thư viện động Advapi32.dll và Crypt32.dll. Sau đó, tới lượt các API này làm nhiệm vụ tách lọc và chuyển thông tin từ ứng dụng đến CSP thông qua các hàm trong giao diện CryptoSPI. Các ứng dụng truy xuất data trong CSP thông qua handle của các đối tượng. Mỗi đối tượng bao gồm keycontainer, hashobject, sessionkey và cặp publicprivate key. 1.1 Giao diện CryptoSPI Tất cả các CSP phải hỗ trợ các entrypoint sau trong DLL của nó: CPAcquireContext Hàm này làm nhiệm vụ lấy handle của keycontainer được chỉ đến trong tham số pszContainer. BOOL CPAcquireContext( __out HCRYPTPROV phProv, __in CHAR pszContainer, __in DWORD dwFlags, __in PVTableProvStruc pVTable ); CPCreateHash Tạo một đối tượng hash và khởi tạo quá trình băm dòng dữ liệu BOOL CPCreateHash( __in HCRYPTPROV hProv, __in ALG_ID Algid, __in HCRYPTKEY hKey, __in DWORD dwFlags, __out HCRYPTHASH phHash ); CPDecrypt Giải mã dữ liệu đã được mã hoá trước đó bằng hàm CPEncrypt. Có thể tùy chọn để vừa giải mã vừa băm dữ liệu giải mã được. BOOL CPDecrypt( __in HCRYPTPROV hProv, __in HCRYPTKEY hKey, __in HCRYPTHASH hHash, __in BOOL Final, __in DWORD dwFlags, __inout BYTE pbData, __inout DWORD pdwDataLen ); CPDeriveKey Tạo ra sessionkey bằng cách băm dữ liệu nền (password hoặc dữ liệu khác). Hàm này đảm bảo tất cả các khóa tạo ra từ một dữ liệu nền sử dụng cùng một thuật toán sẽ giống nhau. BOOL CPDeriveKey( __in HCRYPTPROV hProv, __in ALG_ID Algid, __in HCRYPTHASH hBaseData, __in DWORD dwFlags, __out HCRYPTKEY phKey ); CPDestroyHash Hủy đối tượng hash đã được chỉ ra trong tham số hHash. BOOL CPDestroyHash( __in HCRYPTPROV hProv,

Trang 1

có một số CSP sử dụng các dịch vụ của Windows để thực hiện các hàm riêng của mình dưới sự quản lí của Windows Service Control Manager Một số CSP khác cài đặt các hàm này ở mức phần cứng, chẳng hạn như smart-card, pki-token… Nếu một CSP không hiện thực tất cả các hàm chức năng cần thiết, nó sẽ hoạt động như là một lớp trung gian, đảm bảo giao tiếp giữa hệ điều hành và chi tiết cài đặt thực sự của các hàm ở lớp bên dưới

(hardware)

1 Tổng quan kiến trúc CSP

Các ứng dụng liên quan tới mật mã chạy trên Windows không giao tiếp trực tiếp với các CSP mà thông qua việc gọi các hàm trong giao diện CryptoAPI Các hàm này được cung cấp trong các thư viện động Advapi32.dll và Crypt32.dll Sau đó, tới lượt các API này làm nhiệm vụ tách lọc và chuyển thông tin từ ứng dụng đến CSP thông qua các hàm trong giao diện CryptoSPI

Trang 2

Các ứng dụng truy xuất data trong CSP thông qua handle của các đối tượng Mỗi đối tượngbao gồm key-container, hash-object, session-key và cặp public-private key.

1.1 Giao diện CryptoSPI

Tất cả các CSP phải hỗ trợ các entry-point sau trong DLL của nó:

* CPAcquireContext

Hàm này làm nhiệm vụ lấy handle của key-container được chỉ đến trong tham số

pszContainer

BOOL CPAcquireContext(

out HCRYPTPROV *phProv,

in CHAR *pszContainer,

in DWORD dwFlags,

in PVTableProvStruc pVTable

);

* CPCreateHash

Tạo một đối tượng hash và khởi tạo quá trình băm dòng dữ liệu

BOOL CPCreateHash(

in HCRYPTPROV hProv,

in ALG_ID Algid,

in HCRYPTKEY hKey,

in DWORD dwFlags,

out HCRYPTHASH *phHash

in HCRYPTPROV hProv,

in HCRYPTKEY hKey,

in HCRYPTHASH hHash,

in BOOL Final,

in DWORD dwFlags,

inout BYTE *pbData,

inout DWORD *pdwDataLen

);

* CPDeriveKey

Tạo ra session-key bằng cách băm dữ liệu nền (password hoặc dữ liệu khác) Hàm này đảm bảo tất cả các khóa tạo ra từ một dữ liệu nền sử dụng cùng một thuật toán sẽ giống nhau

Trang 3

BOOL CPDeriveKey(

in HCRYPTPROV hProv,

in ALG_ID Algid,

in HCRYPTHASH hBaseData,

in DWORD dwFlags,

out HCRYPTKEY *phKey

);

* CPDestroyHash

Hủy đối tượng hash đã được chỉ ra trong tham số hHash

BOOL CPDestroyHash(

in HCRYPTPROV hProv,

in HCRYPTHASH hHash

in HCRYPTPROV hProv,

in HCRYPTKEY hKey

);

* CPEncrypt

Hàm này làm nhiệm vụ mã hóa dữ liệu Có thể tùy chọn băm dữ liệu đầu ra

BOOL CPEncrypt(

in HCRYPTPROV hProv,

in HCRYPTKEY hKey,

in HCRYPTHASH hHash,

in BOOL Final,

in DWORD dwFlags,

inout BYTE *pbData,

inout DWORD *pdwDataLen,

in DWORD dwBufLen

);

* CPExportKey

Export một khóa ra ngoài key-container của CSP một cách an toàn

BOOL CPExportKey(

in HCRYPTPROV hProv,

in HCRYPTKEY hKey,

in HCRYPTKEY hPubKey,

in DWORD dwBlobType,

in DWORD dwFlags,

out BYTE *pbData,

inout DWORD *pdwDataLen

);

Trang 4

* CPGenKey

Tạo một khóa ngẫu nhiên hoặc một cặp khóa bất đối xứng

BOOL CPGenKey(

in HCRYPTPROV hProv,

in ALG_ID Algid,

in DWORD dwFlags,

out HCRYPTKEY *phKey

);

* CPGenRandom

Tạo các byte ngẫu nhiên để lấp đầy buffer

BOOL CPGenRandom(

in HCRYPTPROV hProv,

in DWORD dwLen,

inout BYTE *pbBuffer

);

* CPGetHashParam

Trích xuất dữ liệu từ các đối tượng hash

BOOL CPGetHashParam(

in HCRYPTPROV hProv,

in HCRYPTHASH hHash,

in DWORD dwParam,

out BYTE *pbData,

inout DWORD *pdwDataLen,

in DWORD dwFlags

);

* CPGetKeyParam

Trích xuất dữ liệu về các tham số của một khóa

BOOL CPGetKeyParam(

in HCRYPTPROV hProv,

in HCRYPTKEY hKey,

in DWORD dwParam,

out LPBYTE pbData,

inout LPDWORD pcbDataLen,

in DWORD dwFlags

);

* CPGetProvParam

Trả về thông tin của CSP

BOOL CPGetProvParam(

in HCRYPTPROV hProv,

in DWORD dwParam,

out BYTE *pbData,

inout DWORD *pdwDataLen,

Trang 5

in DWORD dwFlags

in HCRYPTPROV hProv,

in DWORD dwKeySpec,

out HCRYPTKEY *phUserKey

);

* CPHashData

Cung cấp dữ liệu cho một đối tượng hash

BOOL CPHashData(

in HCRYPTPROV hProv,

in HCRYPTHASH hHash,

in const BYTE *pbData,

in DWORD dwDataLen,

in DWORD dwFlags

in HCRYPTPROV hProv,

in HCRYPTHASH hHash,

in HCRYPTKEY hKey,

in DWORD dwFlags

);

* CPImportKey

Import một khóa từ bên ngoài CSP

BOOL CPImportKey(

in HCRYPTPROV hProv,

in const BYTE *pbData,

in DWORD dwDataLen,

in HCRYPTKEY hPubKey,

in DWORD dwFlags,

out HCRYPTKEY *phKey

Trang 6

in DWORD dwFlags

);

* CPSetHashParam

Tùy chỉnh hoạt động của một đối tượng hash

BOOL CPSetHashParam(

in HCRYPTPROV hProv,

in HCRYPTHASH hHash,

in DWORD dwParam,

in BYTE *pbData,

in DWORD dwFlags

);

* CPSetKeyParam

Tùy chỉnh hoạt động của một khóa

BOOL CPSetKeyParam(

in HCRYPTPROV hProv,

in HCRYPTKEY hKey,

in DWORD dwParam,

in BYTE *pbData,

in DWORD dwFlags

);

* CPSetProvParam

Tùy chỉnh hoạt động của CSP

BOOL CPSetProvParam(

in HCRYPTPROV hProv,

in DWORD dwParam,

in BYTE *pbData,

in DWORD dwFlags

);

* CPSignHash

Kí một đối tượng hash

BOOL CPSignHash(

in HCRYPTPROV hProv,

in HCRYPTHASH hHash,

in DWORD dwKeySpec,

in LPCWSTR sDescription,

in DWORD dwFlags,

out BYTE *pbSignature,

inout DWORD *pdwSigLen

);

* CPVerifySignature

Kiểm chứng một chữ kí điện tử

Trang 7

BOOL CPVerifySignature(

in HCRYPTPROV hProv,

in HCRYPTHASH hHash,

in const BYTE *pbSignature,

in DWORD dwSigLen,

in HCRYPTKEY hPubKey,

Các đối tượng bền vững (persistent data objects)

Một CSP có thể lưu các cặp khóa pb/pr để sử dụng cho nhiều session trong một bộ nhớ bềnvững Nếu là dạng thuần software CSP thì có thể lưu trữ dưới dạng mã hóa trong registry Nếu CSP có chứa thành phần hardware khác thì có thể lưu trữ trong các bộ nhớ được bảo

vệ của hardware đó

Các cặp khóa được lưu dưới dạng đối tượng logic gọi là key-container CSP sẽ quản lí mỗi key-container cho một client sử dụng CSP đó Mỗi key-container có thể chứa nhiều cặp khóa tương ứng với từng loại mà CSP hỗ trợ Chẳng hạn Microsoft Base Cryptographic Provider hỗ trợ 2 loại cặp khóa: lọai cặp dùng để trao đổi khóa (key exchange key pair) và loại cặp dùng để tạo chữ kí (digital signature key pair)

Tại một thời điểm, mỗi key-container có thể được sử dụng bởi nhiều chương trình ứng dụng Mỗi lời gọi tới một hàm trong CryptoSPI đều chỉ ra các tham số áp dụng cho key-container trong hàm đó, như thể hiện trong sơ đồ dưới:

Đối với giao diện CryptoSPI, HCRYPTPROV là handle của một key-container cụ thể trongCSP Tuy nhiên, đối với giao diện CryptoAPI, HCRYPTPROV là handle cho cả key-container và cả CSP đang được sử dụng

Trang 8

Các đối tượng không bền vững (volatile data objects)

Một CSP quản lí các đối tượng session-key và hash-object trong bộ nhớ không bền vững Các đối tượng này được tạo bởi hàm CPGenKey và CPCreateHash, được hủy bởi các hàm CPDestroyKey và CPDestroyHash Các đối tượng trên phải được hủy khi key-container tương ứng được hủy thông qua hàm CPReleaseContext

Các đối tượng trong bộ nhớ không bền vững được truy cập thông qua các handle như hình dưới:

1.2 Các loại Cryptographic Provider

Ngày càng có nhiều chuẩn mã hóa dữ liệu cũng như các giao thức giao tiếp khác nhau Chúng được phân loại thành các nhóm, mỗi nhóm có đặc tính riêng về cách tổ chức định dạng dữ liệu và cách tiến hành các thuật toán Thậm chí nếu hai nhóm dùng chung một thuật toán mật mã, vẫn có những điểm riêng khác biệt trong cách padding, chiều dài khóa… của thuật toán đó Giao diện CryptoAPI được thiết kế sao cho mỗi CSP được gán một kiểu để thể hiện nhóm thuật toán mà nó sử dụng Khi một ứng dụng kết nối tới một CSP thuộc một kiểu cụ thể, mỗi hàm trong giao diện CryptoAPI sẽ hoạt động theo cách thức định trước bởi kiểu CSP đó Mỗi kiểu CSP có các đặc trưng sau:

derivation scheme Định dạng trích xuất session-key từ mã hash.

Key length Độ dài của cặp khóa pb/pr cũng như session-key

Default modes Các chế độ mặc định cho các thuật toán mã hóa/giải mã

Trang 9

Chỉ một vài ứng dụng cao cấp có thể yêu cầu kết nối tới nhiều CSP tại một thời điểm, hầu hết các ứng dụng thường chỉ sử dụng một CSP.

Có các loại CSP thông dụng được định nghĩa trước như sau:

Encryption RC2, RC4, Advanced Encryption Standard (AES)

Hashing MD2, MD4, MD5, SHA-1, SHA-2 (SHA-256, SHA-384, SHA-512)

* PROV_RSA_SIG

Tập con của PROV_RSA_FULL, chỉ hỗ trợ các thuật toán băm và chữ kí điện tử

Key Exchange None

Signature RSA

Encryption None

Hashing MD5, SHA

* PROV_RSA_SCHANNEL

Hỗ trợ cả thuật toán RSA và Schannel

Key Exchange RSA

Trang 10

Hỗ trợ cả thuật toán Diffie-Hellman và Schannel

Key Exchange DH (ephemeral)

Signature DSS

Encryption DES, Triple DES

Hashing MD5, SHA

* PROV_FORTEZZA

Cung cấp các thuật toán thuộc về NIST

Key Exchange KEA

Encryption Tùy thuộc

Hashing Tùy thuộc

Ngoài ra, các nhà phát triển CSP có thể tự định nghĩa kiểu cho riêng mình

Trang 11

1.3 Các CSP được cung cấp bởi Microsoft

Hiện tại Microsoft cung cấp các CSP sau:

Microsoft Base Cryptographic

Provider Cung cấp các hàm chức năng mật mã cơ bản.

Microsoft Strong Cryptographic

Provider Phiên bản mở rộng, áp dụng từ Windows 2000.Microsoft Enhanced Cryptographic

Microsoft Base DSS and

Diffie-Hellman Cryptographic Provider

Bản mở rộng của DSS, hỗ trợ thuật toán trao đổi khóa Dfiie-Hellman

Microsoft Enhanced DSS and

Diffie-Hellman Cryptographic Provider Mở rộng của bản trên, hỗ trợ DSS 40-bit.

Microsoft RSA/Schannel

Cryptographic Provider Hỗ trợ xác thực client.

Microsoft RSA Signature

Cryptographic Provider

Cung cấp cơ chế kí và kiểm chứng chữ kí chuẩn RSA

1.4 Cơ chế tương thích giữa các CSP

Để có thể cùng hoạt động một cách tương thích với các CSP khác, một CSP thuộc kiểu PROV_RSA_FULL phải đảm bảo các yêu cầu cài đặt cụ thể Các CSP kiểu

PROV_RSA_SIG (lớp con của RSA_FULL) không nhất thiết phải áp dụng tất cả các yêu cầu trên

Các điểm quan trọng để đảm bảo tương thích được liệt kê ở bảng sau:

Supported algorithms Tập các thuật toán mã hoá / giải mã tối thiểu mà CSP phải hỗ trợ.Key BLOB formats Chuẩn định dạng cho phép export / import key bên ngòai CSP

Trang 12

Deriving session keys Với cùng giá trị hash, các CSP phải đảm bảo trích xuất được cùng

Trước khi viết CSP cụ thể, nhà phát triển phải chọn trước và hiện thực hóa các thuật toán

mã hoá cũng như định dạng dữ liệu sẽ được đưa vào Quá trình phát triển một CSP bao gồm các bước như sau:

1/ Tạo thư viện động (DLL ) hiện thực các hàm

Quá trình tạo các dll được thực hiện bởi CSP developer’s toolkit Với các CSP có chứa thành phần hardware, trong dll phải chứa driver để điều khiển thành phần này Trong dll cần hiện thực các hàm của giao diện CryptoSPI đã nói ở phần trước

2/ Viết chương trình cài đặt CSP

Chương trình này làm nhiệm vụ sao chép dll vào thư mục cụ thể (trỏ tới bởi biến môi trường PATH), cũng như tạo các khóa cần thiết trong registry

3/ Kiểm chứng hoạt động của CSP

Trang 13

Smart Card CSP

Một trường hợp đặc biệt và khá thông dụng của CSP đó là Smart Card CSP Đó là sự kết hợp giữa các lớp middle-ware và hardware để phục vụ nhu cầu kí, giao dịch an toàn và các dịch vụ mật mã khác

2.1 Tổng quan về Smart Card CSP

Smart Card thường có hai dạng, có thể dưới dạng các thẻ plastic, có thể dưới dạng USB token, chứa các bộ xử lí có khả năng lưu trữ và xử lí thông tin một cách an toàn Trên môi trường Windows, các thẻ tương thích chuẩn PC/SC có thể được sử dụng trực tiếp, các loại thẻ khác cần được nhà sản xuất cung cấp các phương pháp thích hợp để truy xuất thẻ.Lợi ích chính của các smart card là lưu trữ các cặp khóa pb/pr để sử dụng trong các thuật toán mật mã bất đối xứng Các hoạt động yêu cầu khóa pr có thể được thực hiện ngay trên thẻ đển đảm bảo an toàn Do tính gọn nhẹ mà smart card có thể sử dụng trong các giao dịch

ở bất kì đâu, không phụ thuộc vào máy chủ Với cơ chế bảo vệ mã PIN, smart card có thể cung cấp các cơ chế xác thực 2 lớp mạnh mẽ Do đó, chúng thường được dùng trong các hoạt động như xác thực đăng nhập, tạo và kiểm chứng chữ kí điện tử, mã hóa/giải mã dữ liệu

Microsoft cung cấp 2 API độc lập thiết bị để có thể sử dụng các tính năng của smart card,

đó là CryptoAPI và Win32 SCard API Các giao diện này cho phép ứng dụng có thể truy cập tính năng mã hóa hoặc phát sinh chữ kí của thẻ một cách linh hoạt, đồng thời bảo vệ các dữ liệu nhạy cảm của người dùng như khóa pr Tất cả các hoạt động mật mã đều được thực hiện bởi các module độc lập là các CSP

Trang 14

Hạ tầng lớp dưới của smart card bao gồm các lớp cung cấp dịch vụ, một trình quản lí tài nguyên, các driver của thiết bị, và thư viện truy cập thẻ.

Một ứng dụng Win32 có thể truy cập trực tiếp một số dịch vụ của thẻ thông qua SCard API Tuy nhiên, các dịch vụ mật mã của thẻ đòi hỏi ứng dụng phải thông qua CSP

Trình quản lí tài nguyên (resource manager) chịu trách nhiệm quản lí và điều khiển quá trình truy cập thẻ của tất cả các ứng dụng, cấp phát và thu hồi tài nguyên thẻ cũng như đầu đọc thẻ cho các ứng dụng Ngoài ra, chương trình này còn hỗ trợ transaction (các chuỗi hoạt động với tính năng đặc biệt, hoặc là được thực hiện hết, hoặc là hoàn toàn không thực hiện) để đảm bảo tòan vẹn dữ liệu trên thẻ

Driver của từng thiết bị ánh xạ các hàm chức năng của thiết bị đó vào các dịch vụ được cung cấp bởi hệ điều hành

Các chi tiết chung của CSP đã được trình bày ở phần trước, ở đây chỉ nêu các điểm đặc thù của CSP có chứa thành phần phần cứng

Trước hết là các điểm khác biệt giữa hardware và software CSP

CryptAcquireContext CRYPT_SILENCE Tắt tất cả các giao

tiếp UI với thẻ, kể

cả các UI để nhập PIN

Tắt các UI đang yêu cầu xác nhận

password bảo vệ khóa

CryptAcquireContext CRYPT_MACHINE_KEY_SET Không cache bất

cứ thông tin nào thông qua handle trả về của hàm

Tạo các khóa có thể chia sẽ bởi nhiều người trên cùng một máy Không lưu trữ khóa trong user

Trang 15

profileCryptAcquireContext CRYPT_VERIFYCONTEXT Chỉ cho phép CSP

truy cập dữ liệu công cộng trên hardware

Cho phép hoạt động truy cập bất kì

CryptExportKey

CryptImportKey

PRIVATEKEYBLOB PLAINTEXTKEYBLOB Không được hỗ

trợ Không được phép chuyển các khóa pr ra ngoài hardware

Được cho phép xuất các khóa ra bên ngoài

để sử dụng ở nơi khác

Cả hardware và software CSP đều chỉ cho phép chứa một khóa của mỗi loại trong một container Hai loại khóa mặc định là khóa để tạo chữ kí và khóa để trao đổi khóa Khi thêmmột khóa mới vào key-container, khóa cũ cùng loại nếu có sẽ bị ghi đè Do giới hạn khả năng lưu trữ của hardware nên smart card CSP chỉ có thể tạo một số lượng giới hạn các cặpkhóa cũng như key-container, đồng thời, mỗi khóa chỉ có thể tương ứng với một certificate.Software CSP không bị giới hạn này

key-Các mã lỗi của software CSP đã được quy chuẩn rõ ràng, thuận tiện cho phát triển Ngược lại, các mã lỗi của hardware CSP phụ thuộc nhiều vào nhà sản xuất, do đó rất khác nhau

2.2 PIN caching

Khi một ứng dụng yêu cầu truy cập tới khóa pr hoặc các chứng thực cá nhân khác của người sử dụng, trước tiên nó cần xác thực được người đang yêu cầu ứng dụng đó Điều nàyđược thực hiện qua cơ chế yêu cầu mã PIN Sau khi người dùng cung cấp mã PIN hợp lệ, ứng dụng có thể truy cập tới các dữ liệu nhạy cảm trên thẻ

Chẳng hạn, một chương trình email có thể yêu cầu người dùng xác thực mã PIN, sau đó sử dụng khóa pr trong thẻ để kí vào nội dung của một thông điệp Tuy nhiên, vẫn có khả năng khi user vẫn còn được chứng thực (do một chương trình hợp lệ yêu cầu mã PIN trước đó)

và bị một chương trình khác lợi dụng để truy cập vào các dữ liệu trên thẻ Để ngăn chặn điều đó, các smart card cung cấp cơ chế transaction Điều này cho phép thẻ “quên” xác thực mã PIN của người dùng sau mỗi phiên giao dịch Tuy nhiên, điều này lại gây phiền toái cho người sử dụng khi phải nhập PIN liên tục cho mỗi lần giao dịch Do đó, người phát triển CSP phải cung cấp cơ chế lưu trữ PIN tạm thời một cách an toàn (PIN caching).PIN sẽ được lưu trữ trong bộ nhớ của CSP, tương ứng cho từng process, đồng thời gắn với Logon ID của người dùng Mỗi thẻ cũng sẽ có một vùng cache riêng, CSP sẽ xác định process nào trong cache của thẻ nào trong phiên làm việc của user nào có mã PIN hợp lệ CSP có thể lấy PIN từ người dùng (thông qua PIN UI) hoặc từ ứng dụng (thông qua hàm CryptSetProvParam PP_KEYEXCHANGE) Sau đó, mã này được đưa xuống thẻ để xác

Trang 16

thực, đồng thời được cập nhật vào cache để đảm bảo đồng bộ hóa CSP phải xóa bỏ cache khi process kết thúc, khi người dùng thoát, hoặc khi thẻ được gỡ khỏi máy.

Hai hình dưới là quá trình PIN caching tương ứng với hai trường hợp lấy mã từ user đã đề cập ở trên:

Trang 18

Lấy thông số kích thước của certificate (byte)

Ngày đăng: 20/12/2014, 15:00

TỪ KHÓA LIÊN QUAN

w