Openssl

關於 FIPS 186-4 的 OpenSSL 測試和使用 BN_generate_prime_ex 的問題

  • July 27, 2018

我正在使用 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 在其中工作時遇到問題)。

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