CNG 功能

CNG 具有下列功能。

密碼編譯靈活度

CNG 的主要價值主張之一是密碼編譯靈活度,有時稱為密碼編譯無從驗證原則。 將 安全通訊端層通訊協定 (SSL) 或 傳輸層安全性 (TLS) 、CMS (S/MIME) 、IPsec、Kerberos 等通訊協定的實作轉換為 CNG,但必須讓這項功能具有價值。 在 CNG 層級,必須針對對稱、非對稱、非對稱、雜湊函式) 、亂數產生和其他公用程式函式的所有演算法 (類型提供替代和可探索性。 通訊協定層級變更更為重要,因為在許多情況下,新增演算法選取所需的通訊協定 API 和其他未存在的彈性選項。

CNG 第一次可在 Windows Vista 中使用,並已定位為取代整個 Microsoft 軟體堆疊中 CryptoAPI 的現有用法。 協力廠商開發人員會在 CNG 中找到許多新功能,包括:

  • 新的密碼編譯組態系統,支援更好的密碼編譯靈活度。
  • 金鑰儲存體 (與演算法作業分離) 更精細的抽象概念。
  • 使用長期金鑰進行作業的程式隔離。
  • 可取代的亂數產生器。
  • 免除匯出簽署限制。
  • 整個堆疊的執行緒安全性。
  • 核心模式密碼編譯 API。

此外,CNG 也支援所有必要的 Suite B 演算法,包括 橢圓曲線加密 (ECC) 。 現有的 CryptoAPI 應用程式會繼續運作,因為 CNG 可供使用。

認證與合規性

CNG 會驗證為聯邦資訊處理標準 (FIPS) 140-2,並且屬於 Windows 通用準則認證的評估目標。 CNG 是設計成可作為 FIPS 層級 2 驗證系統中的元件使用。

CNG 透過在安全程式中儲存和使用長期金鑰,以符合通用準則需求。

Suite B 支援

CNG 的重要功能是其對 Suite B 演算法的支援。 2005 年 2 月,美國國家安全局 (美國 NSA) 宣佈一組協調的對稱加密、非對稱密碼協定 (也稱為金鑰交換) 、數位簽章和雜湊函式,以供未來的美國政府使用套件 B。NSA 宣佈經認證的 Suite B 實作可用於保護指定為「最秘密」、「秘密」和「私人資訊」的資訊,在過去稱為「敏感性-但未分類」。 因此,Suite B 支援對於應用程式軟體廠商和系統整合者以及 Microsoft 而言非常重要。

所有 Suite B 演算法都是公開已知的。 它們已開發于與密碼編譯演算法開發相關聯的政府密碼範圍之外。 在這個相同的時間範圍內,有些歐洲國家/地區也提出保護其資訊的相同 Suite B 需求。

Suite B 密碼編譯建議在許多現有通訊協定中使用橢圓曲線Diffie-Hellman (ECDH) ,例如 Internet Key Exchange (IKE,主要用於 IPsec) 、 傳輸層安全性 (TLS) ,以及安全 MIME (S/MIME) 。

CNG 包含擴充至所有必要演算法的 Suite B 支援:AES (所有金鑰大小) , SHA-2 系列 (SHA-256、SHA-384 和 SHA-512) 雜湊演算法、ECDH 和橢圓曲線 DSA (ECDSA) 在 NIST 標準質曲線 P-256、P-384 和 P-521 上。 Windows Vista 隨附的 Microsoft 演算法提供者不支援二進位曲線、Koblitz 曲線、自訂質曲線和橢圓曲線 Menezes-Qu-Vanstone (ECMQV) 。

舊版支援

CNG 提供 CryptoAPI 1.0 中目前一組演算法的支援。 CNG 將繼續支援 CryptoAPI 1.0 中目前支援的每個演算法。

核心模式支援

CNG 在核心模式中支援密碼編譯。 核心和使用者模式都使用相同的 API,以完全支援密碼編譯功能。 除了將使用 CNG 的開機程式之外,SSL/TLS 和 IPsec 也會以核心模式運作。 並非所有 CNG 函式都可以從核心模式呼叫。 無法從核心模式呼叫之函式的參考主題,會明確指出無法從核心模式呼叫函式。 否則,如果呼叫端在IRQLPASSIVE_LEVEL執行,則可以從核心模式呼叫所有 CNG 函式。 此外,視提供者的功能而定,某些核心模式 CNG 函式可能會在 DISPATCH_LEVEL IRQL上呼叫。

Microsoft 核心安全性支援提供者介面 (Ksecdd.sys) 是位於 Windows 核心模式層級的一般用途、軟體型密碼編譯模組。 Ksecdd.sys會以核心模式匯出驅動程式的形式執行,並透過其記載的介面將密碼編譯服務提供給核心元件。 Ksecdd.sys不支援的唯一內建 Microsoft 提供者演算法是 DSA。

Windows Server 2008 和 Windows Vista: CNG 不支援核心模式中的可插入式演算法和提供者。 核心模式中唯一支援的密碼編譯演算法是 Microsoft 透過核心模式 CNG API 所提供的實作。

稽核

為了符合一些通用準則需求,除了提供完整的安全性之外,CNG 層中發生的許多動作都會在 Microsoft 軟體金鑰儲存提供者中稽核, (KSP) 。 Microsoft KSP 遵循下列指導方針,在安全性記錄中建立稽核記錄:

  • 必須稽核金鑰和金鑰組產生失敗,包括自我測試失敗。
  • 金鑰匯入和匯出必須經過稽核。
  • 必須稽核金鑰解構失敗。
  • 寫入和讀取檔案時,必須稽核持續性金鑰。
  • 必須稽核配對一致性檢查失敗。
  • 必須稽核秘密金鑰驗證失敗,例如 3DES 金鑰的同位檢查。
  • 必須稽核加密、解密、雜湊、簽章、驗證、金鑰交換和亂數字產生失敗。
  • 必須稽核密碼編譯自我測試。

一般而言,如果索引鍵沒有名稱,則為暫時索引鍵。 暫時金鑰不會保存,而且 Microsoft KSP 不會產生暫時金鑰的稽核記錄。 Microsoft KSP 只會在 LSA 程式中以使用者模式產生稽核記錄。 核心模式 CNG 不會產生稽核記錄。 系統管理員必須設定稽核原則,以從安全性記錄取得所有 KSP 稽核記錄。 系統管理員必須執行下列命令列,以設定 KSP 所產生的其他稽核:

auditpol /set /subcategory:「other system events」 /success:enable /failure:enable

可取代的亂數產生器

CNG 提供的另一項改進是能夠取代預設亂數產生器 (RNG) 。 在 CryptoAPI 中,您可以將替代 RNG 作為密碼編譯服務提供者的一部分, (CSP) ,但無法將 Microsoft Base CSP 重新導向為使用另一個 RNG。 CNG 可讓您明確指定特定 RNG 以在特定呼叫內使用。

執行緒安全性

從個別執行緒呼叫時,任何同時修改相同記憶體區域的函式, (重要區段) 都不是安全線程。

作業模式

CNG 支援五種可透過加密 API 搭配對稱區塊加密使用的作業模式。 下表列出這些模式及其支援性。 藉由使用BCryptSetProperty函式設定演算法提供者的 BCRYPT_CHAINING_MODE屬性,即可變更作業模式。

作業模式 BCRYPT_CHAINING_MODE值 演算法 標準
ECB (電副程式代碼手冊) BCRYPT_CHAIN_MODE_ECB 對稱區塊加密 SP800-38A
CBC (加密區塊鏈結) BCRYPT_CHAIN_MODE_CBC 對稱區塊加密 SP800-38A
CFB (加密意見反應) BCRYPT_CHAIN_MODE_CFB 對稱區塊加密 SP800-38A
CCM (計數器與 CBC) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (Galois/Counter Mode) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

注意

Windows Vista 中只會定義 ECB、CBC 和 CFB 作業模式。 GCM 和 CCM 需要 Windows Vista Service Pack 1 (SP1) 或 Windows Server 2008。