第3章 システム全体の暗号化ポリシーの使用

暗号ポリシーは、コア暗号化サブシステムを構成するシステムコンポーネントで、TLS、IPSec、SSH、DNSSec、および Kerberos の各プロトコルに対応します。これにより、管理者が選択できる小規模セットのポリシーを提供します。

3.1. システム全体の暗号化ポリシー

システム全体のポリシーを設定すると、RHEL のアプリケーションはそのポリシーに従い、ポリシーを満たしていないアルゴリズムやプロトコルを使用するように明示的に要求されない限り、その使用を拒否します。つまり、システムが提供した設定で実行する際に、デフォルトのアプリケーションの挙動にポリシーを適用しますが、必要な場合は上書きできます。

Red Hat Enterprise Linux 8 には、以下のポリシーレベルが含まれます。

DEFAULT

デフォルトのシステム全体の暗号化ポリシーレベルで、現在の脅威モデルに対して安全なものです。TLS プロトコルの 1.2 と 1.3、IKEv2 プロトコル、および SSH2 プロトコルが使用できます。RSA 鍵と Diffie-Hellman パラメーターは長さが 2048 ビット以上であれば許容されます。

LEGACY

このポリシーは、Red Hat Enterprise Linux 5 以前のリリースとの互換性を最大化しますが、攻撃領域が大きくなるため脆弱になります。DEFAULT レベルでのアルゴリズムとプロトコルに加えて、TLS プロトコル 1.0 および 1.1 を許可します。アルゴリズム DSA、3DES、および RC4 が許可され、RSA 鍵と Diffie-Hellman パラメーターの長さが 1023 ビット以上であれば許容されます。

FUTURE

近い将来の攻撃に耐えられると考えられている保守的なセキュリティーレベルです。このレベルは、署名アルゴリズムに SHA-1 の使用を許可しません。RSA 鍵と Diffie-Hellman パラメーターは、ビット長が 3072 以上だと許可されます。

FIPS

FIPS140-2 要件に準拠するポリシールールです。これは、fips-mode-setup ツールの内部で使用され、RHEL システムを FIPS モードに切り替えます。

重要

カスタマーポータル API の証明書が使用する暗号化キーは FUTURE のシステム全体の暗号化ポリシーが定義する要件を満たさないので、現時点で redhat-support-tool ユーティリティーは、このポリシーレベルでは機能しません。

この問題を回避するには、カスタマーポータル API への接続中に DEFAULT 暗号化ポリシーを使用します。

注記

ポリシーレベルで許可されていると記載されている特定のアルゴリズムと暗号は、アプリケーションがそれに対応している場合に限り使用できます。

暗号化ポリシーを管理するツール

現在のシステム全体の暗号化ポリシーを表示または変更するには、update-crypto-policies ツールを使用します。以下に例を示します。

$ update-crypto-policies --show
DEFAULT
# update-crypto-policies --set FUTURE
Setting system policy to FUTURE

暗号化ポリシーの変更を確実に適用するには、システムを再起動します。

安全ではない暗号スイートおよびプロトコルを削除した、強力な暗号デフォルト

以下の一覧には、RHEL 8 のコア暗号化ライブラリーから削除された暗号スイートおよびプロトコルが含まれます。このアプリケーションはソースには存在しないか、またはビルド時にサポートを無効にしているため、アプリケーションは使用できません。

  • DES (RHEL 7 以降)
  • すべてのエクスポートグレードの暗号化スイート (RHEL 7 以降)
  • 署名内の MD5 (RHEL 7 以降)
  • SSLv2 (RHEL 7 以降)
  • SSLv3 (RHEL 8 以降)
  • 224 ビットより小さいすべての ECC 曲線 (RHEL 6 以降)
  • すべてのバイナリーフィールドの ECC 曲線 (RHEL 6 以降)

すべてのポリシーレベルで無効になっている暗号スイートおよびプロトコル

以下の暗号スイートおよびプロトコルは、すべての暗号化ポリシーレベルで無効になっています。これは、各アプリケーションで明示的に有効にした場合に限り利用可能にできます。

  • パラメーターが 1024 ビットより小さい DH
  • 鍵のサイズが 1024 ビットより小さい RSA
  • Camellia
  • ARIA
  • SEED
  • IDEA
  • 完全性のみの暗号スイート
  • SHA-384 HMAC を使用した TLS CBC モード暗号化スイート
  • AES-CCM8
  • TLS 1.3 と互換性がないすべての ECC 曲線 (secp256k1 を含む)
  • IKEv1 (RHEL 8 以降)

暗号ポリシーレベルで有効な暗号スイートおよびプロトコル

次の表は、暗号ポリシーの各レベルで有効な暗号化スイートおよびプロトコルを示しています。

 LEGACYDEFAULTFIPSFUTURE

IKEv1

いいえ

いいえ

いいえ

いいえ

3DES

はい

いいえ

いいえ

いいえ

RC4

はい

いいえ

いいえ

いいえ

DH

最低 1024 ビット

最低 2048 ビット

最低 2048 ビット

最低 3072 ビット

RSA

最低 1024 ビット

最低 2048 ビット

最低 2048 ビット

最低 3072 ビット

DSA

はい

いいえ

いいえ

いいえ

TLS v1.0

はい

いいえ

いいえ

いいえ

TLS v1.1

はい

いいえ

いいえ

いいえ

デジタル署名における SHA-1

はい

はい

いいえ

いいえ

CBC モード暗号

はい

はい

はい

いいえ

256 ビットより小さい鍵を持つ対称暗号

はい

はい

はい

いいえ

証明書における SHA-1 および SHA-224 の署名

はい

はい

はい

いいえ

関連情報

  • 詳細は、update-crypto-policies(8) の man ページを参照してください。

3.2. システム全体の暗号化ポリシーを、以前のリリースと互換性のあるモードに切り替え

Red Hat Enterprise Linux 8 におけるデフォルトのシステム全体の暗号化ポリシーでは、現在は古くて安全ではないプロトコルは許可されません。Red Hat Enterprise Linux 5 およびそれ以前のリリースとの互換性が必要な場合には、安全でない LEGACY ポリシーレベルを利用できます。

警告

LEGACY ポリシーレベルに設定すると、システムおよびアプリケーションの安全性が低下します。

手順

  1. システム全体の暗号化ポリシーを LEGACY レベルに切り替えるには、root で以下のコマンドを実行します。

    # update-crypto-policies --set LEGACY
    Setting system policy to LEGACY

関連情報

  • 利用可能な暗号化ポリシーのレベルは、update-crypto-policies(8) の man ページを参照してください。

3.3. FIPS モードへのシステムの切り替え

システム全体の暗号化ポリシーには、連邦情報処理規格 (FIPS) 公開文書 140-2 の要件に準拠した暗号化モジュールのセルフチェックを有効にするポリシーレベルが含まれます。FIPS モードを有効または無効にする fips-mode-setup ツールは、内部的に FIPS のシステム全体の暗号化ポリシーレベルを使用します。

重要

Red Hat は、後で FIPS モードを有効にするのではなく、FIPS モードを有効にして Red Hat Enterprise Linux 8 をインストールすることを推奨します。インストール時に FIPS モードを有効にすると、システムは FIPS で承認されるアルゴリズムと継続的な監視テストですべてのキーを生成するようになります。

手順

  1. RHEL 8 で FIPS モードにシステムを切り替えるには、以下のコマンドを実行します。

    # fips-mode-setup --enable
    Setting system policy to FIPS
    FIPS mode will be enabled.
    Please reboot the system for the setting to take effect.
  2. システムを再起動して、カーネルを FIPS モードに切り替えます。

    # reboot

検証手順

  1. システムが再起動したら、FIPS モードの現在の状態を確認できます。

    # fips-mode-setup --check
    FIPS mode is enabled.

関連情報

3.4. コンテナーでの FIPS モードの有効化

コンテナー内の連邦情報処理規格 (FIPS) 140-2 の要件に従って暗号モジュールの自己チェックを有効にするには、以下を行います。

前提条件

手順

  1. ホストからコンテナーに /etc/system-fips ファイルをマウントします。
  2. コンテナーで FIPS 暗号化ポリシーレベルを設定します。

    $ update-crypto-policies --set FIPS

RHEL 8.2 では、FIPS モードにコンテナーを切り替える代替方法が導入されました。コンテナーでは以下のコマンドのみを使用する必要があります。

# mount --bind /usr/share/crypto-policies/back-ends/FIPS /etc/crypto-policies/back-ends
注記

RHEL 8 では、コンテナーで fips-mode-setup コマンドが正しく機能せず、このシナリオでこのコマンドを使用して FIPS モードを有効にしたり確認することができません。

3.5. List of RHEL applications using cryptography that is not compliant with FIPS 140-2

コア暗号化コンポーネントでは、FIPS 140-2 などの関連する暗号化証明書すべてを渡して RHEL システム全体の暗号化ポリシーにも準拠することが保証されているので、Red Hat はこのコンポーネントからライブラリーを使用することを推奨します。

RHEL 8 コア暗号化コンポーネントの概要、このコンポーネントの選択方法、オペレーティングシステムへの統合方法、ハードウェアセキュリティーモジュールおよびスマートカードのサポート方法、暗号化による認定の適用方法の概要は、「RHEL 8 コア暗号化コンポーネント」を参照してください。

以下の表に加えて、一部の RHEL 8 Z-stream リリース (例: 8.1.1) では Firefox ブラウザーパッケージが更新され、別の NSS 暗号化ライブラリーが含まれています。このように、Red Hat では、パッチリリースでこのような詳細レベルのコンポーネントをリベースするなどの混乱を回避できればと考えています。そのため、この Firefox パッケージは FIPS 140-2 検証モジュールを使用しません。

表3.1 List of RHEL 8 applications using cryptography that is not compliant with FIPS 140-2

アプリケーション詳細

FreeRADIUS

MD5 を使用する RADIUS プロトコル

ghostscript

ドキュメントを暗号化/復号化するための独自の暗号化 (MD5、RC4、SHA-2、AES)

ipxe

TLS をコンパイルする暗号化スタック。ただし使用されません。

java-1.8.0-openjdk

完全な暗号化スタック[a]

libica

CPACF 命令から RSA や ECDH などのさまざまなアルゴリズムのソフトウェアフォールバック

OVMF (UEFI ファームウェア)、Edk2、shim

完全な暗号スタック (OpenSSL ライブラリーの埋め込みコピー)

perl-Digest-HMAC

HMAC、HMAC-SHA1、HMAC-MD5

perl-Digest-SHA

SHA-1、SHA-224、…

pidgin

DES、RC4

samba[b]

AES、DES、RC4

valgrind

AES、ハッシュ[c]

[a] RHEL 8.1 の java-1.8.0-openjdk では、FIPS に準拠するように追加の手動設定が必要になります。
[b] RHEL 8.3 以降、samba は FIPS 準拠の暗号を使用します。
[c] AES-NI などのソフトウェア/ハードウェアオフロード操作に再実装します。

3.6. システム全体の暗号化ポリシーに従わないようにアプリケーションを除外

アプリケーションで使用される暗号化関連の設定をカスタマイズする必要がある場合は、サポートされる暗号スイートとプロトコルをアプリケーションで直接設定することが推奨されます。

/etc/crypto-policies/back-ends ディレクトリーからアプリケーション関連のシンボリックリンクを削除することもできます。カスタマイズした暗号化設定に置き換えることもできます。この設定により、除外されたバックエンドを使用するアプリケーションに対するシステム全体の暗号化ポリシーが使用できなくなります。この修正は、Red Hat ではサポートされていません。

3.6.1. システム全体の暗号化ポリシーを除外する例

wget

wget ネットワークダウンローダーで使用される暗号化設定をカスタマイズするには、--secure-protocol オプションおよび --ciphers オプションを使用します。以下に例を示します。

$ wget --secure-protocol=TLSv1_1 --ciphers="SECURE128" https://example.com

詳細は、wget(1) の man ページの HTTPS (SSL/TLS) Options のセクションを参照してください。

curl

curl ツールで使用する暗号を指定するには、--ciphers オプションを使用して、その値に、コロンで区切った暗号化のリストを指定します。以下に例を示します。

$ curl https://example.com --ciphers '@SECLEVEL=0:DES-CBC3-SHA:RSA-DES-CBC3-SHA'

詳細は、curl(1) の man ページを参照してください。

Firefox

Web ブラウザーの Firefox でシステム全体の暗号化ポリシーをオプトアウトできない場合でも、Firefox の設定エディターで、対応している暗号と TLS バージョンをさらに詳細に制限できます。アドレスバーに about:config と入力し、必要に応じて security.tls.version.min の値を変更します。たとえば、security.tls.version.min1 に設定すると、最低でも TLS 1.0 が必要になり、security.tls.version.min 2 が TLS 1.1 になります。

OpenSSH

OpenSSH サーバーに対するシステム全体の暗号化ポリシーを除外するには、/etc/sysconfig/sshd ファイルの CRYPTO_POLICY= 変数行のコメントを除外します。この変更後、/etc/ssh/sshd_config ファイルの Ciphers セクション、MACs セクション、KexAlgoritms セクション、および GSSAPIKexAlgorithms セクションで指定した値は上書きされません。詳細は、sshd_config(5) の man ページを参照してください。

関連情報

  • 詳細は、update-crypto-policies(8) の man ページを参照してください。

3.7. ポリシー修飾子を使用したシステム全体の暗号化ポリシーのカスタマイズ

以下の手順に従って、システム全体の暗号化ポリシーレベルまたは完全なカスタムポリシーの特定アルゴリズムまたはプロトコルを調整します。

注記

システム全体の暗号化ポリシーのカスタマイズは、RHEL 8.2 から利用できます。

手順

  1. /etc/crypto-policies/policies/modules/ ディレクトリーをチェックアウトします。

    # cd /etc/crypto-policies/policies/modules/
  2. 以下のように、調整用のポリシーモジュールを作成します。

    # touch MYCRYPTO1.pmod
    # touch NO-CAMELLIA.pmod
    重要

    ポリシーモジュールのファイル名には大文字を使用します。

  3. 任意のテキストエディターでポリシーモジュールを開き、システム全体の暗号化ポリシーを変更するオプションを挿入します。次に例を示します。

    # vi MYCRYPTO1.pmod
    sha1_in_certs = 0
    min_rsa_size = 3072
    # vi NO-CAMELLIA.pmod
    cipher = -CAMELLIA-256-GCM -CAMELLIA-256-CBC -CAMELLIA-128-GCM -CAMELLIA-128-CBC
  4. 変更をモジュールファイルに保存します。
  5. ポリシーの調整を、システム全体の暗号化ポリシーレベル DEFAULT に適用します。

    # update-crypto-policies --set DEFAULT:MYCRYPTO1:NO-CAMELLIA
  6. 暗号化設定を実行中のサービスやアプリケーションで有効にするには、システムを再起動します。

    # reboot

関連情報

  • 詳細は、update-crypto-policies (8) の man ページの Custom Policies セクションと、crypto-policies(7)Crypto Policy Definition Format セクションを参照してください。
  • 「How to customize crypto policies in RHEL 8.2」 の記事では、システム全体の暗号化ポリシーのカスタマイズ例を示します。

3.8. システム全体の暗号化ポリシーをカスタマイズして SHA-1 を無効化

SHA-1 ハッシュ関数は設計が本質的に弱く、暗号解析法が進化したことで、このハッシュ関数は攻撃を受けやすくなりました。デフォルトでは、RHEL 8 は SHA-1 を使用指定内にも拘らず、一部のサードパーティーアプリケーション (公開署名など) は SHA-1 を使用します。システムの署名アルゴリズムで SHA-1 の使用を無効にするには、NO-SHA1 ポリシーモジュールを使用できます。

注記

SHA-1 を無効にするモジュールは、RHEL 8.3 で利用できます。システム全体の暗号化ポリシーのカスタマイズは、RHEL 8.2 から利用できます。

手順

  1. ポリシーの調整を、システム全体の暗号化ポリシーレベル DEFAULT に適用します。

    # update-crypto-policies --set DEFAULT:NO-SHA1
  2. 暗号化設定を実行中のサービスやアプリケーションで有効にするには、システムを再起動します。

    # reboot

関連情報

  • 詳細は、update-crypto-policies (8) の man ページの Custom Policies セクションと、crypto-policies(7)Crypto Policy Definition Format セクションを参照してください。
  • 「How to customize crypto policies in RHEL 8.2」 のブログ投稿では、システム全体の暗号化ポリシーのカスタマイズ例を示します。

3.9. システム全体のカスタム暗号化ポリシーの作成および設定

以下の手順は、完全なポリシーファイルでシステム全体の暗号化ポリシーをカスタマイズする方法を示しています。

注記

システム全体の暗号化ポリシーのカスタマイズは、RHEL 8.2 から利用できます。

手順

  1. カスタマイズのポリシーファイルを作成します。

    # cd /etc/crypto-policies/policies/
    # touch MYPOLICY.pol

    または、定義されている 4 つのポリシーレベルのいずれかをコピーします。

    # cp /usr/share/crypto-policies/policies/DEFAULT.pol /etc/crypto-policies/policies/MYPOLICY.pol
  2. 必要に応じて、テキストエディターでファイルを編集します。以下のようにしてカスタム暗号化ポリシーを使用します。

    # vi /etc/crypto-policies/policies/MYPOLICY.pol
  3. システム全体の暗号化ポリシーをカスタムレベルに切り替えます。

    # update-crypto-policies --set MYPOLICY
  4. 暗号化設定を実行中のサービスやアプリケーションで有効にするには、システムを再起動します。

    # reboot

関連情報

  • 詳細は、update-crypto-policies (8) の man ページの Custom Policies セクションと、crypto-policies(7)Crypto Policy Definition Format セクションを参照してください。
  • 「How to customize crypto policies in RHEL 8.2」 の記事では、システム全体の暗号化ポリシーのカスタマイズ例を示します。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。