Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
897,9 KB
Nội dung
MẬT MÃ TRONG ATTT Bài 02: CryptoAPI Ứng dụng mật mã Windows Using Cryptography http://msdn.microsoft.com/enus/library/windows/desktop/aa388162%2 8v=vs.85%29.aspx Kiến trúc CryptoAPI Quản lý khóa CryptoAPI Các nhóm hàm CryptoAPI Sử dụng CryptoAPI Kiến trúc CryptoAPI Quản lý khóa CryptoAPI Các nhóm hàm CryptoAPI Sử dụng CryptoAPI Ứng dụng mật mã Windows Explorer Internet Explorer ↔ IIS, CA Outlook, Outlook Express, Windows Mail Word, Excel, PowerPoint, VPN, Radius, Kerberos Remote Desktop Connection Ứng dụng mật mã Windows Chức mật mã ứng dụng Microsoft Windows cung cấp thông qua thư viện "advapi32.dll" "crypt32.dll" (C:\Windows\System32) Crypto API CryptoAPI API tập hợp lớp, hàm, thủ tục, cấu trúc liệu, số mà chương trình (thư viện, dịch vụ) cung cấp cho chương trình khác sử dụng CryptoAPI (CAPI) API hệ điều hành Windows cho phép nhà lập trình bổ sung tính an tồn cho ứng dụng chạy Windows việc sử dụng mật mã CryptoAPI CryptoAPI Cryptographic Service Provider Cryptographic Service Provider (CSP) module phần mềm cài đặt thuật toán chuẩn mật mã • Mỗi CSP thường tồn dạng file DLL • Có nhiều kiểu CSP (CSP Type) • Trong Windows có sẵn nhiều CSP • Các bên thứ phát triển CSP • Mọi CSP phải ký Microsoft 10 Hàm CryptAcquireContext() Tạo ngữ cảnh (handle) để làm việc với CSP mà khơng sử dụng khóa riêng Tạo ngữ cảnh để làm việc với CSP sử dụng Key Container định Xóa Key Container Tạo Key Container 40 Sử dụng CryptoAPI Mã hóa giải mã liệu sử dụng mật 41 Mã hóa giải mã liệu sử dụng mật Mã hóa giải mã liệu sử dụng mật Phải sử dụng CSP kiểu Phải sử dụng thuật tốn sinh khóa Phải sử dụng thuật tốn mã hóa/giải mã 43 Sinh khóa từ mật 44 Hàm CryptDeriveKey BOOL WINAPI in in in in in_out ); CryptDeriveKey( HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY* phKey CALG_3DES CALG_3DES_112 CALG_AES_128 CALG_AES_192 CALG_AES_256 0x00006603 0x00006609 0x0000660e 0x0000660f 0x00006610 45 Hàm CryptEncrypt BOOL WINAPI CryptEncrypt( in HCRYPTKEY hKey, in HCRYPTHASH hHash, in BOOL Final, in DWORD dwFlags, in_out BYTE* pbData, in_out DWORD* pdwDataLen, in DWORD dwBufLen ); Chức năng: mã hóa liệu Tham số hKey Final dwFlags = 46 Hàm CryptEncrypt in_out BYTE* pbData in: rõ out: mã Nếu NULL: trả dwDatalen kích thước nhớ (bytes) cần thiết để lưu mã in_out DWORD* pdwDataLen in: độ dài rõ (bytes) out: độ dài mã (bytes) Phải chia hết cho kích thước khối, trừ thực mã khối cuối (Final = true) 47 Hàm CryptEncrypt Mã hóa dwDataLen byte cần byte để lưu kết quả? CryptEncrypt(hKey, hHash=null, Final=false, dwFlags=0, pbData=null, pdwDataLen(Size), dwBufLen) Sử dụng giá trị trả làm kích thước buffer dwBufLen = *pdwDataLen + BLOCK_SIZE; pbData = new char[dwBufLen]; ReadPlaintextToBuf(pbData, Size) CryptEncrypt(hKey, hHash=null, Final=false, dwFlags=0, pbData, pdwDataLen(Size), dwBufLen) 48 Sử dụng CryptoAPI Mã hóa giải mã liệu sử dụng khóa phiên ngẫu nhiên 49 Mã hóa giải mã sử dụng khóa ngẫu nhiên Hàm CryptGenKey BOOL WINAPI CryptGenKey( in HCRYPTPROV hProv, in ALG_ID Algid, in DWORD dwFlags, out HCRYPTKEY* phKey ); Chức năng: sinh khóa phiên cặp khóa Tham số: hProv Algid dwFlags=CRYPT_EXPORTABLE !!!!! phKey 51 Hàm CryptExportKey BOOL WINAPI CryptExportKey( in HCRYPTKEY hKey, in HCRYPTKEY hExpKey, in DWORD dwBlobType, in DWORD dwFlags, out BYTE* pbData, in_out DWORD* pdwDataLen ); Chức năng: xuất khóa để lưu truyền Used to transport PRIVATEKEYBLOB public/private key pairs Tham số: hKey hExpKey dwBlobType dwFlags = PUBLICKEYBLOB Used to transport public keys SIMPLEBLOB Used to transport session keys 52 Hàm CryptExportKey in DWORD dwBlobType Chỉ định kiểu khóa cần xuất Giá trị để xuât khóa phiên: dwBlobType = SIMPLEBLOB BLOB = Binary Large Object PRIVATEKEYBLOB Used to transport public/private key pairs PUBLICKEYBLOB Used to transport public keys SIMPLEBLOB Used to transport session keys 53 Hàm CryptImportKey BOOL WINAPI CryptImportKey( in HCRYPTPROV hProv, in BYTE* pbData, in DWORD dwDataLen, in HCRYPTKEY hPubKey, in DWORD dwFlags, out HCRYPTKEY* phKey ); Chức năng: nhập khóa vào CSP Tham số: hPubKey: Khóa bí mật để giải mã khóa phiên 54 ... người dùng khác 22 Kiến trúc CryptoAPI Quản lý khóa CryptoAPI Các nhóm hàm CryptoAPI Sử dụng CryptoAPI CryptoAPI 24 Các nhóm hàm CryptoAPI CAPI Base Funtions CSP Managerment High-Level Function... CryptoAPI (CAPI) API hệ điều hành Windows cho phép nhà lập trình bổ sung tính an tồn cho ứng dụng chạy Windows việc sử dụng mật mã CryptoAPI CryptoAPI Cryptographic Service Provider Cryptographic... CryptVerifySignature 29 Kiến trúc CryptoAPI Quản lý khóa CryptoAPI Các nhóm hàm CryptoAPI Sử dụng CryptoAPI Sử dụng CryptoAPI Tuyệt đại đa số chương trình sử dụng CryptoAPI bắt đầu với hàm CryptAcquireContext