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

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

Đ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

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,

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ư 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. 1 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 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 ); * 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 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. 2 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 ); * CPDestroyKey Giải phóng handle được chỉ ra trong tham số hKey. Sau khi giải phóng handle của một khóa, khóa đó sẽ không còn hợp lệ và không sử dụng được nữa. BOOL CPDestroyKey( __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 ); 3 * 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, 4 __in DWORD dwFlags ); * CPGetUserKey Trích xuất hanlde của các cặp khóa chứa trong key-container được chỉ ra trong tham số hProv. BOOL CPGetUserKey( __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 ); * CPHashSessionKey Cung cấp khóa mã cho một đối tượng hash cụ thể. Hàm này cho phép băm một khóa mà không cần truy cập cụ thể đến chi tiết khóa đó. BOOL CPHashSessionKey( __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 ); * CPReleaseContext Giải phóng một context được tạo ra trước đó bởi hàm CPAcquireContext. BOOL CPReleaseContext( __in HCRYPTPROV hProv, 5 __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ử. 6 BOOL CPVerifySignature( __in HCRYPTPROV hProv, __in HCRYPTHASH hHash, __in const BYTE *pbSignature, __in DWORD dwSigLen, __in HCRYPTKEY hPubKey, __in LPCWSTR sDescription, __in DWORD dwFlags ); Các hàm trên hợp thành giao diện giao tiếp CryptoSPI giữa system-layer và CSP-layer. Mỗi hàm tương ứng trực tiếp với một hàm trong giao diện CryptoAPI. 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ền vữ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ể trong CSP. 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. 7 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: Item Description Key exchange algorithm Mỗi kiểu CSP cần định nghĩa và hiện thực hóa duy nhất một thuật toán trao đổi khóa. Digital signature algorithm Mỗi kiểu CSP cần định nghĩa và hiện thực hóa duy nhất một thuật toán phát sinh chữ kí số. Key BLOB formats Định dạng để export và import các khóa từ bên ngoài CSP. Digital signature format Định dạng của chữ kí số. Một chữ kí phát sinh từ một CSP luôn có thể kiểm chứng được bởi một CSP cùng loại. Session key 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ã. 8 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: * PROV_RSA_FULL Cung cấp cả cơ chế chữ kí số cũng như mã hóa dữ liệu, có thể sử dụng cho tất cả hoạt động khóa công khai. Key Exchange RSA Signature RSA Encryption RC2, RC4 Hashing MD5, SHA * PROV_RSA_AES Cung cấp cả cơ chế chữ kí số cũng như mã hóa dữ liệu, có thể sử dụng cho tất cả hoạt động khóa công khai. Key Exchange RSA Signature RSA 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 Signature RSA Encryption Một trong số: RC4, DES, Triple DES Hashing MD5, SHA * PROV_DSS Chỉ hỗ trợ băm và chữ kí điện tử Key Exchange None Signature DSS Encryption None Hashing MD5, SHA 9 * PROV_DSS_DH Mở rộng của PROV_DSS Key Exchange DH Signature DSS Encryption CYLINK_MEK Hashing MD5, SHA * PROV_DH_SCHANNEL 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 Signature DSS Encryption Skipjack Hashing SHA * PROV_MS_EXCHANGE Được thiết kế cho các hoạt động mật mã cần thiết cho ứng dụng thư điện tử Microsoft Echange và sản phẩm tương thích khác. Key Exchange RSA Signature RSA Encryption CAST Hashing MD5 * PROV_SSL Hỗ trợ cho giao thức SSL Key Exchange RSA Signature RSA 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. 10 [...]... Lấy handle chỉ đến một đối tượng hàm băm SHA 3 CryptHashData Băm dữ liệu đã được đưa vào 4 CryptGetHashParam Lấy kích cỡ mã băm, sử dụng tham số HP_HASHVAL 5 CryptGetHashParam Lấy dữ liệu sau khi băm 6 CryptHashData Tiếp tục băm dữ liệu đầu vào 7 CryptSignHash Lấy kích cỡ chữ kí 8 CryptSignHash Kí vào chuỗi dữ liệu đã băm, trả về dữ liệu đã kí 9 CryptDestroyHash Giải phóng handle của đối tượng hash... kiểm chứng lẫn nhau 1.5 Quá trình viết các CSP 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... chuỗi hoạt động có đặc điểm chỉ được thực hiện tất cả, hoặc không thực hiện hoạt động nào) nhằm đảm bảo toàn vẹn dữ liệu trên thẻ 24 3.2.2 Cấp phát bộ nhớ: Mọi API trong minidriver nếu cần cấp phát động bộ nhớ động thì phải sử dụng hàm PFN _CSP_ ALLOC, và tương ứng là PFN _CSP_ FREE để giải phóng 3.2.3 Cache: Lớp Card Interface trong Base CSP/ KSP hiện thực một cache để giảm thiểu lượng data ghi/đọc xuống thẻ... key-container Xác thực người dùng Quá trình này trong Windows XP trải qua các bước sau: 1 CryptAcquireContext Lấy handle chỉ đến key-container mặc định trên hardware 2 CryptCreateHash Lấy handle chỉ đến một đối tượng hàm băm SHA 3 CryptSetHashParam Sử dụng tham số HP_HASHVAL, không có dữ liệu vào 4 CryptSignHash 21 Lấy kích cỡ chữ kí 5 CryptSignHash Kí vào chuỗi dữ liệu đã băm, trả về dữ liệu đã kí 6 CryptDestroyHash... tự hiện thực lại chúng Chi tiết các hàm này như sau: PFN _CSP_ ALLOC typedef LPVOID (WINAPI *PFN _CSP_ ALLOC)( in SIZE_T Size ); PFN _CSP_ REALLOC typedef LPVOID (WINAPI *PFN _CSP_ REALLOC)( in LPVOID Address, in SIZE_T Size ); PFN _CSP_ FREE typedef void (WINAPI *PFN _CSP_ FREE)( in LPVOID Address ); PFN _CSP_ CACHE_ADD_FILE typedef DWORD (WINAPI *PFN _CSP_ CACHE_ADD_FILE)( in PVOID pvCacheContext, in LPWSTR... Các thao tác mã PIN được thực hiện trong các transaction để đảm bảo an toàn và toàn vẹn dữ liệu 3.2.6.2.1 CardAuthenticatePin Hàm này chuyển một chuỗi PIN cho card để kiểm tra xác thực người dùng Nếu thành công, người dùng sẽ được cấp quyền với một số đối tượng data cũng như một số tác vụ nhất định trên thẻ Nếu không thành công, số đếm tương ứng với PIN đó sẽ bị giảm đi Nếu số đếm giảm về 0 thì mã PIN... tối thiểu mà CSP phải hỗ trợ 11 Key BLOB formats Deriving session keys Hashing session keys Digital signature mechanics Chuẩn định dạng cho phép export / import key bên ngòai CSP Với cùng giá trị hash, các CSP phải đảm bảo trích xuất được cùng một session-key Cho trước một key, các CSP phải đảm bảo hash ra được cùng một giá trị Các CSP phải có cùng cơ chế phát sinh chữ kí điện tử để có thể kiểm chứng. .. 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 4/ Kí CSP Một CSP phải được kí bởi Microsoft để có thể sử dụng được trong các hệ điều hành Windows 5/ Kiểm tra lại hoạt động của CSP. .. Software CSP không bị giới hạn này 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. .. 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 . (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. registry. 3/ Kiểm chứng hoạt động của CSP 4/ Kí CSP Một CSP phải được kí bởi Microsoft để có thể sử dụng được trong các hệ điều hành Windows 5/ Kiểm tra lại hoạt động của CSP sau khi được kí 12 Chươ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: Item Description Key exchange algorithm Mỗi kiểu CSP cần định nghĩa và hiện thực hóa duy nhất một thuật toán trao

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan