加密服務提供程序 (CSP) 是 Windows 操作系統中提供一般加密功能的硬件和軟件組件。
可以編寫這些 CSP 以提供各種加密和簽名算法。
配置爲由某個證書模板使用的每個 CSP 都可以潛在支持不同的加密算法,因此,可以支持不同的密鑰長度。
這意味着,必須將證書模板配置爲支持一個或多個 CSP。
選擇特定的 CSP,可讓管理員控制此證書使用的算法和密鑰長度。
Windows Server 2003 家族包含許多 CSP,但還可添加其他 CS。
微軟制訂的CSP接口(Cryptographic Service Provider),是爲Windows系列操作系統制訂的底層加密接口,實現數據的加密、解密、數字簽名、驗證和數據摘要等密碼操作。
應用通過CryptoAPI系列函數調用,其操作對象爲容器,一個容器內有加密公私鑰對、加密證書、簽名公私鑰對和簽名證書。
可以通過容器完成加解密、簽名驗籤等操作。
CSP加密服務提供者(Cryptographic Service Provider)具有一下幾個特點:
CSP是真正執行密碼運算的獨立模塊
物理上一個CSP由兩部分組成:一個動態連接庫,一個簽名文件
簽名文件保證密碼服務提供者經過了認證,以防出現攻擊者冒充CSP
若加密算法用硬件實現,則CSP還包括硬件裝置
Microsoft通過捆綁RSA Base Provider,在操作系統中提供一個CSP,使用RSA公司的公鑰加密算法,更多的CSP可以根據需要增加到應用中。
Windows 2000以後自帶了多種不同的CSP
CSP服務體系從系統結構,系統調用層次方面來看,分爲相互獨立的三層(如上圖:服務分層體系):
1)最底層是加密服務提供層,即具體的一個CSP,它是加密服務提供機構提供的獨立模塊,擔當真正的數據加密工作,包括使用不同的加密和簽名算法產生密鑰,交換密鑰、進行數據加密以及產生數據摘要、數字化簽名它是獨立於應用層和操作系統,其提供的通用的SPI編程接El與操作系統層進行交互;有些CSP使用特殊硬件一起擔當加密工作,而有些則通過RPC分散其功能,以達到更爲安全。
2)中間層,即操作系統(0S)層,在此是指具體的Win9X、NT和2K及更高版本的32位操作平臺,在CSP體系中,以及爲應用層提供統一的API接口,爲加密服務提供層提供SPI接口,操作系統層爲應用層隔離了底層CSP和具體加密實現細節,用戶可獨立各個CSP進行交互它擔當一定管理功能,包括定期驗證CSP等。
3)應用層,也就是任意用戶進程或線程具體通過調用操作系統層提供的Crypto API使用加密服務的應用程序。
根據CSP服務分層體系,應用程序不必關心底層CSP的具體實現細節,利用統一的API接口進行編程,而由操作系統通過統一的SPI接口來與具體的加密服務提供者進行交互,由其他的廠商根據服務編程接口SPI實現加密、簽名算法,有利於實現數字加密與數字簽名。
應用程序中要實現數字加密與數字簽名時,一般是調用微軟提供的應用程序編程接口Crypto API。應用程序不能直接與加密服務提供者(CSP)通信,只能通過Crypto API操作系統界面過濾後,經過Crypto SPI系統服務接口與相應的CSP通信。CSP纔是真正實現所有加密操作的獨立模塊。