CryptoAPI編程
(1) 微軟Data Encryption Service體系
微軟Data Encryption Service體系CryptoAPI的結構如下圖所示,微軟Data Encryption Service體系包含三層結構和兩個介面,分別為應用程式層、作業系統層(OS)、Data Encryption Service提供者層(Cryptographic Service Provider,CSP),CryptoAPI介面和Data Encryption Service提供者介面(Cryptographic Service Provider Interface,CSPF)。
(2)CryptoAPI體繫結構
CryptoAPI體系架構共由五大主要部分組成:基本加密函數、認證編/解碼函數、認證庫管理函數、簡單訊息函數、底層訊息函數。體繫結構如下圖所系:
基本加密函數:用於選擇CSP、建立CSP串連、產生密鑰、交換及傳輸密鑰等操作。
認證編/解碼函數:用於資料加密、解密、雜湊等操作。這類函數支援資料的加密/解密操作;計算雜湊、建立和校正數位簽章操作;實現認證、認證撤銷列表、認證請求和認證擴充等編碼和解碼操作。
認證庫管理函數:用於數位憑證及認證庫管理等操作。這組函數用於管理憑證、認證撤銷列表和憑證信任清單的使用、儲存、擷取等。
簡單訊息函數:用於訊息處理,比如訊息編碼/解碼、訊息加/解密、數位簽章及簽名驗證等操作。它是把多個底層訊息函數封裝在一起以完成某個特定任務,方便使用者的使用。
底層訊息函數:底層訊息函數對傳輸的PKCS#7資料進行編碼,對接受到的PKCS#7資料進行解碼,並且對接收到的訊息進行解碼和驗證。它可以實現簡單訊息函數可以實現的所有功能,且提供更大的靈活性,但一般會需要更多的函數調用。
(3)CryptoAPI準系統
利用CryptoAPI,開發人員可以給基於Windows的應用程式添加安全服務,包括:ASN.1編碼/解碼、資料加密/解密、身份認證、數位憑證管理,同時支援PKI、對稱密碼技術等。
密鑰管理
在CryptoAPI中,支援兩種類型的密鑰:工作階段金鑰、公/私金鑰組。工作階段金鑰也成為對稱金鑰,用於對稱式加密演算法。為了保證密鑰的安全性,在CryptoAPI中,這些密鑰都儲存在CSP內部,使用者可以通過CryptExpoetKey以加密金鑰快形式匯出。公/私密金鑰對用於非對稱式加密演算法。非對稱式加密演算法主要用於加解密工作階段金鑰和數位簽章。在CryptoAPI中,一般來說,大多數CSP產生的密鑰容器包含兩對金鑰組,一對用於加密工作階段金鑰,稱為交換金鑰組,一對用於產生數位簽章,稱為簽名金鑰組。在CryptoAPI中,所有的密鑰都儲存在CSP中,CSP負責密鑰的建立,銷毀,匯入匯出等操作。
資料編碼/解碼
CryptoAPI採用的編碼方式為ASN.1,編碼規則為DER,表示發送方發送資料時先把資料抽象為ASN.1對象,然後使用DER編碼規則把ASN.1對象轉化為可傳輸的0、1串;接受方接受到資料後,利用DER解碼規則把0、1串轉化為ASN.1對象,然後把ASN.1對象轉化為具體應用支援的資料對象。
資料加/解密
在CryptoAPI中約定加密較大的資料區塊時,採用對稱式加密演算法。通過其封裝好的加解密函數來實現資料解加密操作。
雜湊與數位簽章
雜湊與數位簽章一般用於資料的完整性驗證和身份鑒別。CryptoAPI中,通過其封裝好的雜湊與數位簽章函數來實現相關操作。微軟公司提供的CSP產生的數位簽章遵循RSA標準(PKCS#6).
數位憑證管理
數位憑證主要用於安全通訊中的身份鑒別。CryptoAPI中,對數位憑證的使用管理函數分為認證與認證庫函數、認證驗證函式兩大部分。