EVP_PKEY-FFC
名稱
EVP_PKEY-FFC - EVP_PKEY DSA 和 DH/DHX 共用 FFC 參數。
說明
有限域密碼學 (FFC) 是一種使用有限域數學來實作離散對數密碼學的方法。DSA 是 FFC 的一個範例,而 SP800-56A 中指定的 Diffie-Hellman 金鑰建立演算法也可以實作為 FFC。
DSA、DH 和 DHX 金鑰類型實作於 OpenSSL 的預設和 FIPS 提供者中。這些實作支援基本的 DSA、DH 和 DHX 金鑰,包含公鑰和私鑰 pub 和 priv,以及三個主要的網域參數 p、q 和 g。
對於 DSA (和不是命名群組的 DH),FIPS186-4 標準規定,用於 FFC 參數產生的值也需要用於參數驗證。這表示 seed、pcounter 和 gindex 的選用 FFC 網域參數值可能需要儲存以供驗證使用。對於 DH,seed 和 pcounter 可以儲存在 ASN1 資料中 (但 gindex 不行)。然而,對於 DSA,這些欄位不會儲存在 ASN1 資料中,因此如果需要驗證,就需要將它們儲存在外部。
DH 金鑰類型使用 PKCS#3 格式,它會儲存 p 和 g,但不會儲存 'q' 值。DHX 金鑰類型使用 X9.42 格式,它會儲存 'q' 值,而這必須用於 FIPS186-4。
FFC 參數
除了所有金鑰類型都應該支援的共用參數之外 (請參閱 provider-keymgmt(7) 中的「共用參數」),DSA、DH 和 DHX 金鑰類型實作還支援下列參數。
- "pub" (OSSL_PKEY_PARAM_PUB_KEY) <未簽署整數>
-
公鑰值。
- "priv" (OSSL_PKEY_PARAM_PRIV_KEY) <未簽署整數>
-
私鑰值。
FFC DSA、DH 和 DHX 網域參數
- "p" (OSSL_PKEY_PARAM_FFC_P) <未簽署整數>
-
DSA 或 Diffie-Hellman 質數 "p" 值。
- "g" (OSSL_PKEY_PARAM_FFC_G) <未簽署整數>
-
DSA 或 Diffie-Hellman 產生器 "g" 值。
FFC DSA 和 DHX 網域參數
- "q" (OSSL_PKEY_PARAM_FFC_Q) <未簽署整數>
-
DSA 或 Diffie-Hellman 質數 "q" 值。
- "seed" (OSSL_PKEY_PARAM_FFC_SEED) <八位元組字串>
-
產生和驗證 p、q 和正規 g 時使用的選用網域參數 seed 值。驗證時,這需要設定在產生時產生的 seed。
- "gindex" (OSSL_PKEY_PARAM_FFC_GINDEX) <整數>
-
設定用於產生器 g 的標準化產生和驗證的索引。將此設定為 0..FF 之間的正值以使用此模式。此 gindex 可以在金鑰驗證期間重複使用,以驗證 g 的值。如果未設定此值或為 -1,則會使用無法驗證的產生器 g 產生。
- "pcounter" (OSSL_PKEY_PARAM_FFC_PCOUNTER) <整數>
-
在 p 產生期間輸出的選用網域參數 counter 值。如果需要網域參數驗證,則必須儲存此值。
- "hindex" (OSSL_PKEY_PARAM_FFC_H) <整數>
-
對於無法驗證的產生器 g 產生,此值會在 g 產生期間輸出。其值是滿足 g = h^j mod p(其中 g != 1 且「j」是餘因子)的第一個大於 1 的整數。
- "j" (OSSL_PKEY_PARAM_FFC_COFACTOR) <無符號整數>
-
選用的資訊餘因子參數,應等於 (p - 1) / q。
- "validate-pq" (OSSL_PKEY_PARAM_FFC_VALIDATE_PQ) <無符號整數>
- "validate-g" (OSSL_PKEY_PARAM_FFC_VALIDATE_G) <無符號整數>
-
這些布林值會在 FIPS186-4 或 FIPS186-2 金鑰驗證檢查期間使用(請參閱 EVP_PKEY_param_check(3))以選取驗證選項。預設情況下,validate-pq 和 validate-g 都設定為 1,以檢查 p、q 和 g 是否有效。其中任一項都可以設定為 0 以略過測試,這主要用於測試目的。
- "validate-legacy" (OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY) <無符號整數>
-
此布林值會在金鑰驗證檢查期間使用(請參閱 EVP_PKEY_param_check(3))以選取驗證類型。預設值 0 選取 FIPS186-4 驗證。將此值設定為 1 會選取 FIPS186-2 驗證。
FFC 金鑰產生參數
下列金鑰產生類型可供 DSA 和 DHX 演算法使用
- "type" (OSSL_PKEY_PARAM_FFC_TYPE) <UTF8 字串>
-
設定參數產生類型。共用的有效值為
- "fips186_4"
-
目前的標準。
- "fips186_2"
-
舊標準,僅應於舊用途使用。
- "default"
-
這可以根據設定為參數產生之其他參數,選取「fips186_4」或「fips186_2」之一。
- "pbits" (OSSL_PKEY_PARAM_FFC_PBITS) <無符號整數>
-
設定質數「p」的大小(以位元為單位)。
- "qbits" (OSSL_PKEY_PARAM_FFC_QBITS) <無符號整數>
-
設定質數「q」的大小(以位元為單位)。
對於「fips186_4」,這可以是 224 或 256。對於「fips186_2」,這的大小為 160。
- "digest" (OSSL_PKEY_PARAM_FFC_DIGEST) <UTF8 字串>
-
設定要作為與給定金鑰產生 ctx 關聯的金鑰產生函數一部分使用的摘要演算法。這也必須設定為金鑰驗證。
- 「屬性」(OSSL_PKEY_PARAM_FFC_DIGEST_PROPS) <UTF8 字串>
-
設定屬性,用於在給定金鑰產生函數的選取摘要演算法實作時查詢,該函數與給定的金鑰產生 ctx 相關聯。這也可以設定為金鑰驗證。
- "seed" (OSSL_PKEY_PARAM_FFC_SEED) <八位元組字串>
-
對於「fips186_4」或「fips186_2」產生,這會設定 種子 資料,用於取代內部產生隨機種子。這應僅用於測試目的。這將產生產生參數的固定值,或如果種子未產生有效的質數,則會失敗。
- "gindex" (OSSL_PKEY_PARAM_FFC_GINDEX) <整數>
- "pcounter" (OSSL_PKEY_PARAM_FFC_PCOUNTER) <整數>
- "hindex" (OSSL_PKEY_PARAM_FFC_H) <整數>
-
這些類型在上面有說明。
遵循
SP800-56Ar3 的下列章節
- 5.5.1.1 FFC 領域參數選取/產生
FIPS186-4 的下列章節
- A.1.1.2 使用已核准雜湊函數產生可能的質數 p 和 q。
- A.2.3 產生正規產生器 g。
- A.2.1 產生器 g 的不可驗證產生。
另請參閱
EVP_PKEY-DSA(7)、EVP_PKEY-DH(7)、EVP_SIGNATURE-DSA(7)、EVP_KEYEXCH-DH(7) EVP_KEYMGMT(3)、EVP_PKEY(3)、provider-keymgmt(7)、OSSL_PROVIDER-default(7)、OSSL_PROVIDER-FIPS(7),
版權
版權所有 2020-2021 OpenSSL 專案作者。保留所有權利。
根據 Apache License 2.0(「授權」)授權。您不得使用此檔案,除非符合授權。您可以在原始程式碼散佈中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得副本。