第2章 FIPS モードへの RHEL の切り替え
連邦情報処理標準 (FIPS) 140-3 で義務付けられている暗号化モジュールの自己チェックを有効にするには、FIPS モードで RHEL 9 を操作する必要があります。FIPS 準拠を目指す場合は、FIPS モードでインストールを開始することを推奨します。
暗号化モジュールの検証ステータスは、Red Hat カスタマーポータルの Product compliance ページの FIPS - Federal Information Processing Standards セクションで確認できます。
2.1. Federal Information Processing Standards 140 および FIPS モード
Federal Information Processing Standards (FIPS) Publication 140 は、暗号化モジュールの品質を確保するために National Institute of Standards and Technology (NIST) によって開発された一連のコンピューターセキュリティー標準です。FIPS 140 標準は、暗号化ツールがアルゴリズムを正しく実装できるようにします。ランタイム暗号アルゴリズムと整合性セルフテストは、システムが標準の要件を満たす暗号を使用していることを確認するためのメカニズムの一部です。
FIPS モードの RHEL
RHEL システムで FIPS 承認のアルゴリズムだけを使用してすべての暗号鍵を生成および使用するには、RHEL を FIPS モードに切り替える必要があります。
次のいずれかの方法を使用して、FIPS モードを有効にできます。
- FIPS モードでのインストールの開始
- インストール後に FIPS モードにシステムを切り替えます。
FIPS 準拠を目指す場合は、FIPS モードでインストールを開始してください。これにより、デプロイ済みのシステムの変換に伴う暗号鍵マテリアルの再生成と、変換後のシステムのコンプライアンス再評価を行う必要がなくなります。
FIPS 準拠のシステムを運用するには、すべての暗号化キーマテリアルを FIPS モードで作成します。さらに、暗号鍵マテリアルは、セキュアにラップされていない限り、絶対に FIPS 環境の外部に出さないでください。また、絶対に FIPS 以外の環境でラップを解除しないでください。
Red Hat カスタマーポータルの Product compliance ページの FIPS - Federal Information Processing Standards セクションで、選択した RHEL マイナーリリースの暗号化モジュール検証ステータスの概要を確認できます。
インストール後に FIPS モードに切り替える
fips-mode-setup
ツールを使用してシステムを FIPS モードに切り替えても、FIPS 140 標準への準拠は保証されません。システムを FIPS モードに設定した後にすべての暗号キーを再生成することは、可能でない場合があります。たとえば、ユーザーの暗号キーを含む既存の IdM レルムの場合、すべてのキーを再生成することはできません。FIPS モードでインストールを開始できない場合は、インストール後の設定手順を実行したり、ワークロードをインストールしたりする前に、インストール後の最初の手順として常に FIPS モードを有効にしてください。
fips-mode-setup
ツールも内部的に FIPS
システム全体の暗号化ポリシーを使用します。ただし、update-crypto-policies --set FIPS
コマンドが実行する内容に加え、fips-mode-setup
は、fips-finish-install
ツールを使用して FIPS dracut モジュールを確実にインストールします。また、fips=1
ブートオプションをカーネルコマンドラインに追加し、初期 RAM ディスクを再生成します。
さらに、FIPS モードで必要な制限の適用は、/proc/sys/crypto/fips_enabled
ファイルの内容によって異なります。ファイルに 1
が含まれている場合、RHEL コア暗号化コンポーネントは、FIPS 承認の暗号化アルゴリズムの実装のみを使用するモードに切り替わります。/proc/sys/crypto/fips_enabled
に 0
が含まれている場合、暗号化コンポーネントは FIPS モードを有効にしません。
暗号化ポリシーにおける FIPS
FIPS
システム全体の暗号化ポリシーは、より高いレベルの制限を設定するのに役立ちます。したがって、暗号化の俊敏性をサポートする通信プロトコルは、選択時にシステムが拒否する暗号をアナウンスしません。たとえば、ChaCha20 アルゴリズムは FIPS によって承認されておらず、FIPS
暗号化ポリシーは、TLS サーバーおよびクライアントが TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 TLS 暗号スイートをアナウンスしないようにします。これは、そのような暗号を使用しようとすると失敗するためです。
RHEL を FIPS モードで操作し、独自の FIPS モード関連の設定オプションを提供するアプリケーションを使用する場合は、これらのオプションと対応するアプリケーションのガイダンスを無視してください。FIPS モードで実行されているシステムとシステム全体の暗号化ポリシーは、FIPS 準拠の暗号化のみを適用します。たとえば、システムが FIPS モードで実行されている場合、Node.js 設定オプション --enable-fips
は無視されます。FIPS モードで実行されていないシステムで --enable-fips
オプションを使用すると、FIPS-140 準拠の要件を満たせなくなります。
FIPS モードで実行されている RHEL 9.2 以降のシステムでは、FIPS 140-3 標準の要件に従って、TLS 1.2 接続で Extended Master Secret (EMS) 拡張機能 (RFC 7627) を使用する必要があります。したがって、EMS または TLS 1.3 をサポートしていないレガシークライアントは、FIPS モードで実行されている RHEL 9 サーバーに接続できません。FIPS モードの RHEL 9 クライアントは、EMS なしで TLS 1.2 のみをサポートするサーバーに接続できません。詳細は、Red Hat ナレッジベースのソリューション TLS Extension "Extended Master Secret" enforced with Red Hat Enterprise Linux 9.2 を参照してください。