關於 FIPS 186-4 的 OpenSSL 測試和使用 BN_generate_prime_ex 的問題
我正在使用 CAVP 186-4 RSA Validation System (RSA2VS)測試我的 OpenSSL 實現。
openssl-fips-2.0.16/test 下有一些工具,我正在修改 fips_rsagtest.c 以按照我需要的方式處理 186-4 測試向量。
fips_rsagtest.c 程序最初用於從輸入文件中獲取 Xp1、Xp2、Xp、Xq1、Xq2 和 Xq 的值並生成素數 p 和 q。
但較新的測試要求我自己生成隨機值 Xp1、Xp2、Xp、Xq1、Xq2 和 Xq。查看 fips_rsagtest.c,它將使用函式創建素數 p 和 q
RSA_X931_derive_ex()
。我查看了這些 X931 函式,它們似乎與 OpenSSH 呼叫的函式不同:
RSA_generate_key_ex()
.我的測試實驗室告訴我他們已經針對 186-4 驗證了 OpenSSL,所以我想知道這些實現中是否有自定義程式碼,或者目前 OpenSSL 中的內置功能是否能夠通過 CAVP 186-4 測試。
這引出了我的兩個問題:
Q1) 有人知道是否可以使用這些 X931 功能進行 186-4 測試?
Q2) 如果不是,關於如何從正常
RSA_generate_key_ex()
函式中獲取這些 Xp1、Xp2、Xp、Xq1、Xq2 和 Xq 值的任何指針?它似乎使用BN_generate_prime_ex()
,但 Xp1、Xp2、Xp、Xq1、Xq2 和 Xq 標籤沒有明顯的變數。感謝您提供的任何見解!
我相信我已經回答了我自己的問題。OpenSSL 似乎使用 FIPS 186-4 附錄 B.3.3 來生成其素數,而不是附錄 B.3.6。FIPS 算法使用的是附錄 B.3.6,這就是我在左外野的原因。
附錄 B.3.3 不使用 Xp1、Xp2、Xp、Xq1、Xq2 和 Xq 值來生成素數 p 和 q。
我已經開始從頭開始編寫一個未連結到 FIPS 程式碼的測試工具,而不是更新 fips_rsagtest.c 無論如何都不想工作(讓 RBG 在其中工作時遇到問題)。