Fips-140

是否允許在符合 FIPS 的系統中執行非 FIPS 算法?

  • July 16, 2021

如果一個軟體在 FIPS 模式下執行並使用 FIPS 認證的加密模組,是否允許執行任何非 FIPS 算法,即使系統的安全性不是唯一依賴於它們?

範例:假設您有一個交換兩個 ECDH 密鑰對的系統:一個 curve25519 密鑰對和一個 NIST P-384 密鑰對。使用兩個密鑰對執行密鑰協商,然後將生成的秘密連接起來並使用 SHA-384 進行雜湊處理。

密碼學上我沒有看到問題,因為 SHA-384(K0 | K1) 的結果與最強曲線一樣強。這是因為 SHA-384(一個秘密 | 一個已知值)是一個秘密,這意味著如果攻擊者破解了曲線 25519,他們仍然不知道該秘密與另一個他們不知道的秘密散列的結果。

我的問題是 FIPS 是否允許這樣做,或者它是否必須只執行 FIPS 認證的程式碼和算法。您能否將curve25519 計算的共享秘密視為“鹽”或其他什麼?

編輯:考慮與例如Curve25519 的非FIPS 協議的結果可能與作為鹽的“官方”秘密混合,例如HMAC-SHA384(salt, key)。

當您在這種情況下說 FIPS 時,我假設您的意思是 FIPS 140,如果這是正確的,那麼在有限的情況下您可以使用非 FIPS 批准的算法並且仍然符合 FIPS。

看看實施指南,有一節“FIPS 模式下允許的未經批准的加密算法的範例場景”。我認為您的範例不符合文件中概述的三種情況中的任何一種。

實際上,curve25519 正在順利通過 FIPS 批准 (NIST SP 800-186),但這不是您要問的。

為了回答你的問題,是的,NIST 已經聲明他們確實允許未經批准的算法與他們喜歡的密鑰交換並行。目前,他們的官方批准流程需要以不同於批准的方式處理未批准的密鑰共享;但是他們指出,這將在 NIST SP 800-56C 的下一版本中發生變化。

他們的實際陳述(來自https://csrc.nist.gov/Projects/post-quantum-cryptography/faqs)不僅適用於後量子密碼學(省略了一些給出後量子範例的文本):

是否可以在 FIPS 140 批准的操作模式下執行混合密鑰建立模式?(20 年 1 月 28 日添加)

混合密鑰建立模式……在這裡被定義為一種密鑰建立方案,它是兩個或多個本身就是加密密鑰建立方案的組件的組合。所需的屬性是,如果至少有一個組件方案是安全的,則由混合密鑰建立方案派生的密鑰仍然是安全的……

目前的 NIST 標準……可以適應 FIPS 140 中定義的“FIPS 模式”中的幾種混合密鑰建立結構。例如,假設值 Z 是在 NIST 批准的加密方案中生成的共享秘密,並且值 T 是通過其他方案生成或分發的……以下是將值 T 合併到密鑰派生過程中以實現目前標准允許的混合模式的不同方法:

對於 SP 800-56C 中指定的任何一步密鑰派生方法,定義為 SuppPrivInfo 的輸入可以包含在(可選)FixedInfo 欄位中,並且 T 可以包含在該欄位中。在 SP 800-56C 中指定的任何密鑰派生方法中,無論是一步法還是先提取後擴展法,值 T 都可以包含在鹽欄位中。此外,NIST 計劃在 SP 800-56C 的未來修訂版中加入更清潔、因此更可取的混合密鑰建立結構:

在 SP 800 - 56C 中指定的任何密鑰派生方法中,修訂版將允許 Z 和 T 的串聯,例如 Z||T,而不是 Z。這將需要將 T 插入該方案的編碼和 FIPS 140 驗證碼可能需要修改。

引用自:https://crypto.stackexchange.com/questions/92059