OpenSSL

密碼學和 SSL/TLS 工具組

openssl-fipsinstall

名稱

openssl-fipsinstall - 執行 FIPS 組態安裝

語法

openssl fipsinstall [-help] [-in configfilename] [-out configfilename] [-module modulefilename] [-provider_name providername] [-section_name sectionname] [-verify] [-mac_name macname] [-macopt nm:v] [-noout] [-quiet] [-pedantic] [-no_conditional_errors] [-no_security_checks] [-ems_check] [-no_drbg_truncated_digests] [-self_test_onload] [-self_test_oninstall] [-corrupt_desc selftest_description] [-corrupt_type selftest_type] [-config parent_config]

說明

此指令用於產生 FIPS 模組組態檔。此組態檔可在每次載入 FIPS 模組時使用,以傳遞資料至 FIPS 模組自我測試。FIPS 模組總是會驗證其 MAC,但選擇性地僅需在安裝時執行一次 KAT。

產生的組態檔包含

- FIPS 模組檔案的 MAC。
- 測試狀態指標。

此指標表示已知答案自我測試 (KAT) 是否已成功執行。

- 狀態指標的 MAC。
- 有條件自我測試錯誤的控制項。

預設情況下,如果連續測試 (例如金鑰對測試) 失敗,則 FIPS 模組將進入錯誤狀態,且之後將無法存取任何服務或加密演算法。預設值「1」將導致進入 fips 模組錯誤狀態。如果值為「0」,則不會進入模組錯誤狀態。無論是否進入錯誤狀態,目前的作業 (例如金鑰產生) 都會傳回錯誤。如果未進入模組錯誤狀態,則使用者負責重試作業。

- 控制項用於指示是否執行執行時期安全性檢查。

此控制項表示是否使用與執行安全性參數 (例如金鑰的最低安全性強度和核准曲線名稱) 相關的執行時期檢查。預設值「1」將執行檢查。如果值為「0」,則不執行檢查,且 FIPS 相容性必須由相關安全性政策中記載的程序執行。

此檔案說明於 fips_config(5) 中。

選項

-help

列印使用說明訊息。

-module filename

要執行完整性檢查的 FIPS 模組檔案名稱。檔案名稱中提供的路徑用於在模組啟動時載入模組,且此路徑會覆寫環境變數 OPENSSL_MODULES

-out configfilename

輸出組態資料的檔案名稱;預設為標準輸出。

-in configfilename

從中載入組態資料的輸入檔名。如果指定了 -verify 選項,則必須使用。

-verify

驗證輸入組態檔是否包含正確的資訊。

-provider_name providername

組態檔內提供者的名稱。預設值為 fips

-section_name sectionname

組態檔內區段的名稱。預設值為 fips_sect

-mac_name name

指定將使用的支援 MAC 演算法的名稱。可用的 MAC 機制會依據建置 OpenSSL 時所使用的選項而定。若要查看支援的 MAC 清單,請使用指令 openssl list -mac-algorithms。預設為 HMAC

-macopt nm:v

傳遞選項給 MAC 演算法。可以在 EVP_MAC 實作文件找到完整的控制清單。此指令常用的控制字串為

key:string

將 MAC 金鑰指定為字母數字字串(僅在金鑰只包含可列印字元時使用)。字串長度必須符合 MAC 演算法的任何限制。必須為每個 MAC 演算法指定金鑰。如果未提供金鑰,則使用 OpenSSL 組態時指定的預設值。

hexkey:string

以十六進位形式指定 MAC 金鑰(每個位元組兩個十六進位數字)。金鑰長度必須符合 MAC 演算法的任何限制。必須為每個 MAC 演算法指定金鑰。如果未提供金鑰,則使用 OpenSSL 組態時指定的預設值。

digest:string

由 HMAC 用作字母數字字串(僅在金鑰只包含可列印字元時使用)。字串長度必須符合 MAC 演算法的任何限制。若要查看支援的摘要清單,請使用指令 openssl list -digest-commands。預設摘要為 SHA-256。

-noout

停用自我測試記錄。

-pedantic

將模組組態為嚴格符合 FIPS,而非向下相容。這會啟用條件式錯誤、安全性檢查等。請注意,任何先前的組態選項都將被覆寫,而任何違反 FIPS 相容性的後續組態選項都將導致錯誤。

-no_conditional_errors

將模組組態為如果條件式自我測試失敗,則不會進入錯誤狀態,如上所述。

-no_security_checks

設定模組,使其不執行如上所述的執行時間安全性檢查。

啟用設定選項「no-fips-securitychecks」提供另一種方法,可在編譯時關閉檢查。

-ems_check

設定模組,使其在使用 TLS1_PRF KDF 演算法時,啟用執行時間擴充主機密碼 (EMS) 檢查。此檢查預設為停用。請參閱 RFC 7627,以取得與 EMS 相關的資訊。

-no_drbg_truncated_digests

設定模組,使其不允許在雜湊和 HMAC DRBG 中使用截斷摘要。請參閱 FIPS 140-3 IG D.R,以取得詳細資料。

-self_test_onload

不要將與「測試狀態指示器」和「MAC 狀態指示器」相關的兩個欄位寫入輸出設定檔。沒有這些欄位,每次載入模組時,自我測試 KATS 都會執行。此選項可用於交叉編譯,因為自我測試需要在每個目標機器上至少執行一次。一旦自我測試在目標機器上執行,使用者就可以使用其他機制將 2 個欄位新增至設定中。

這是預設值。

-self_test_oninstall

-self_test_oninstall 的相反。與「測試狀態指示器」和「MAC 狀態指示器」相關的兩個欄位會寫入輸出設定檔。

-quiet

不要輸出通過/失敗訊息。暗示 -noout

-corrupt_desc selftest_description, -corrupt_type selftest_type

損壞選項可用於透過名稱測試一個或多個自我測試的失敗。任一選項或兩個選項都可以用於選擇要損壞的測試。請參閱 OSSL_PROVIDER-FIPS(7)st-descst-type 的項目,以取得可使用的值。

-config parent_config

測試是否可以從指定的設定檔載入 FIPS 提供者。需要先呼叫此應用程式,以產生由基本 parent_config 設定檔包含的額外設定資料。請參閱 config(5),以取得如何設定提供者區段的更多資訊。如果使用「-config」,所有其他選項都會被忽略。

備註

如果未指定選項 -quiet-noout,或者使用了選項 -corrupt_desc-corrupt_type,則預設會記錄自測結果。如果基本設定檔設定為自動載入 fips 模組,則 fips 模組將在 fipsinstall 應用程式有機會設定自己的自測回呼之前載入並自測。因此,自測輸出和選項 -corrupt_desc-corrupt_type 將會被忽略。對於一般使用,基本設定檔應在產生 fips 設定檔時使用預設提供者。

在 OpenSSL 3.1 中新增了 -self_test_oninstall 選項,並將 -self_test_onload 選項設為預設。

在 OpenSSL 3.0 中新增了指令和所有其他選項。

範例

計算 FIPS 模組 fips.so 的 mac,並執行模組的 FIPS 自測,並儲存 fips.cnf 設定檔

openssl fipsinstall -module ./fips.so -out fips.cnf -provider_name fips

驗證設定檔 fips.cnf 是否包含正確的資訊

openssl fipsinstall -module ./fips.so -in fips.cnf  -provider_name fips -verify

破壞任何描述為 SHA1 的自測

openssl fipsinstall -module ./fips.so -out fips.cnf -provider_name fips \
        -corrupt_desc 'SHA1'

驗證是否可以從基本設定檔載入 fips 模組

export OPENSSL_CONF_INCLUDE=<path of configuration files>
export OPENSSL_MODULES=<provider-path>
openssl fipsinstall -config' 'default.cnf'

另請參閱

config(5)fips_config(5)OSSL_PROVIDER-FIPS(7)EVP_MAC(3)

Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.

根據 Apache License 2.0(「授權」)授權。您只能在遵守授權的條件下使用此檔案。您可以在原始程式碼散發檔案中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得副本。