共用方式為


CSP 和密碼編譯器

CryptoAPI 函式會使用 密碼編譯服務提供者 (CSP) 來執行加密和解密,並提供金鑰儲存和安全性。 這些 CSP 是獨立的模組。 在理想情況下,CSP 會寫入為與特定應用程式無關,因此任何應用程式都會以各種 CSP 執行。 不過,事實上,某些應用程式具有需要自訂雲端解決方案提供者的特定需求。 這會與 Windows GDI模型進行比較。 CSP 類似于圖形設備磁碟機。

系統內金鑰的保護品質是雲端解決方案提供者而非整個系統的設計參數。 這可讓應用程式在各種安全性內容中執行,而不需要修改。

存取應用程式必須仔細限制密碼編譯內部。 這有助於安全且可攜式的應用程式開發。

適用下列三個設計規則:

  • 應用程式無法直接存取金鑰處理資料。 由於所有索引鍵處理資料都是在雲端解決方案提供者內產生,並透過不透明控制碼使用應用程式,因此應用程式或其相關聯的 DLL 不會有風險,可能是從不佳的隨機來源中選擇索引鍵資料。
  • 應用程式無法指定密碼編譯作業的詳細資料。 雲端解決方案提供者介面可讓應用程式選擇加密或簽章演算法,但每個密碼編譯作業的實作都是由雲端解決方案提供者完成。
  • 應用程式不會處理使用者 認證 或其他使用者驗證資料。 使用者驗證是由雲端解決方案提供者完成;因此,未來的 CSP 具有進階驗證功能,例如生物特徵辨識輸入,在不需要變更應用程式驗證模型的情況下運作。

雲端解決方案提供者至少包含動態連結程式庫 (DLL) 和簽章檔案。 簽章檔案是必要的,以確保CryptoAPI可辨識雲端解決方案提供者。 CryptoAPI 會定期驗證此簽章,以確保偵測到任何竄改雲端解決方案提供者。

某些 CSP 可以在透過本機 RPC 呼叫的位址分隔服務或透過系統裝置磁碟機呼叫的硬體中,實作其功能的一小部分。 隔離位址分隔服務或硬體中的全域金鑰狀態和集中密碼編譯作業,可保護金鑰和作業安全,避免在應用程式資料空間內遭到竄改。

應用程式不明智地利用特定雲端解決方案提供者特有的屬性。 例如,隨附 CryptoAPI) 提供的 Microsoft 基底密碼編譯提供者 (支援 40 位工作階段金鑰和 512 位公開金鑰。 操作這些金鑰的應用程式必須避免假設儲存這些金鑰所需的記憶體數量,因為如果使用不同的雲端解決方案提供者,應用程式可能會失敗。 撰寫良好的應用程式必須搭配各種 CSP 使用。

如需密碼編譯提供者類型和可搭配 CryptoAPI 使用的預先定義 CSP 的詳細資訊,請參閱 密碼編譯提供者類型和Microsoft 密碼編譯服務提供者