開啟SSL

密碼學和 SSL/TLS 工具組

EVP_PKEY-FFC

名稱

EVP_PKEY-FFC - EVP_PKEY DSA 和 DH/DHX 共用 FFC 參數。

說明

有限域密碼學 (FFC) 是一種使用有限域數學來實作離散對數密碼學的方法。DSA 是 FFC 的一個範例,而 SP800-56A 中指定的 Diffie-Hellman 金鑰建立演算法也可以實作為 FFC。

DSADHDHX 金鑰類型實作於 OpenSSL 的預設和 FIPS 提供者中。這些實作支援基本的 DSA、DH 和 DHX 金鑰,包含公鑰和私鑰 pubpriv,以及三個主要的網域參數 pqg

對於 DSA (和不是命名群組的 DH),FIPS186-4 標準規定,用於 FFC 參數產生的值也需要用於參數驗證。這表示 seedpcountergindex 的選用 FFC 網域參數值可能需要儲存以供驗證使用。對於 DHseedpcounter 可以儲存在 ASN1 資料中 (但 gindex 不行)。然而,對於 DSA,這些欄位不會儲存在 ASN1 資料中,因此如果需要驗證,就需要將它們儲存在外部。

DH 金鑰類型使用 PKCS#3 格式,它會儲存 p 和 g,但不會儲存 'q' 值。DHX 金鑰類型使用 X9.42 格式,它會儲存 'q' 值,而這必須用於 FIPS186-4。

FFC 參數

除了所有金鑰類型都應該支援的共用參數之外 (請參閱 provider-keymgmt(7) 中的「共用參數」),DSADHDHX 金鑰類型實作還支援下列參數。

"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) <八位元組字串>

產生和驗證 pq 和正規 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-pqvalidate-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 取得副本。