第3章 システム全体の暗号化ポリシーの使用
暗号ポリシーは、コア暗号化サブシステムを構成するシステムコンポーネントで、TLS、IPSec、SSH、DNSSec、および Kerberos の各プロトコルに対応します。これにより、管理者が選択できる小規模セットのポリシーを提供します。
3.1. システム全体の暗号化ポリシー
システム全体のポリシーを設定すると、RHEL のアプリケーションはそのポリシーに従い、ポリシーを満たしていないアルゴリズムやプロトコルを使用するように明示的に要求されない限り、その使用を拒否します。つまり、システムが提供した設定で実行する際に、デフォルトのアプリケーションの挙動にポリシーを適用しますが、必要な場合は上書きできます。
Red Hat Enterprise Linux 8 には、以下のポリシーレベルが含まれます。
| デフォルトのシステム全体の暗号化ポリシーレベルで、現在の脅威モデルに対して安全なものです。TLS プロトコルの 1.2 と 1.3、IKEv2 プロトコル、および SSH2 プロトコルが使用できます。RSA 鍵と Diffie-Hellman パラメーターは長さが 2048 ビット以上であれば許容されます。 |
|
このポリシーは、Red Hat Enterprise Linux 5 以前のリリースとの互換性を最大化しますが、攻撃領域が大きくなるため脆弱になります。 |
| 近い将来の攻撃に耐えられると考えられている保守的なセキュリティーレベルです。このレベルは、署名アルゴリズムに SHA-1 の使用を許可しません。RSA 鍵と Diffie-Hellman パラメーターは、ビット長が 3072 以上だと許可されます。 |
|
FIPS140-2 要件に準拠するポリシールールです。これは、 |
カスタマーポータル 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 以降)
暗号ポリシーレベルで有効な暗号スイートおよびプロトコル
次の表は、暗号ポリシーの各レベルで有効な暗号化スイートおよびプロトコルを示しています。
LEGACY | DEFAULT | FIPS | FUTURE | |
---|---|---|---|---|
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
ポリシーレベルに設定すると、システムおよびアプリケーションの安全性が低下します。
手順
システム全体の暗号化ポリシーを
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 で承認されるアルゴリズムと継続的な監視テストですべてのキーを生成するようになります。
手順
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.
システムを再起動して、カーネルを FIPS モードに切り替えます。
# reboot
検証手順
システムが再起動したら、FIPS モードの現在の状態を確認できます。
# fips-mode-setup --check FIPS mode is enabled.
関連情報
-
fips-mode-setup(8)
の man ページ - List of RHEL 8 applications using cryptography that are not compliant with FIPS 140-2
- FIPS 140-2 の詳細は、National Institute of Standards and Technology (NIST) の Web サイトの「Security Requirements for Cryptographic Modules」を参照してください。
3.4. コンテナーでの FIPS モードの有効化
コンテナー内の連邦情報処理規格 (FIPS) 140-2 の要件に従って暗号モジュールの自己チェックを有効にするには、以下を行います。
前提条件
- ホストシステムは、最初に FIPS モードで切り替える必要があります。「FIPS モードへのシステムの切り替え」を参照してください。
手順
-
ホストからコンテナーに
/etc/system-fips
ファイルをマウントします。 コンテナーで 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.min
を 1
に設定すると、最低でも 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 ページを参照してください。
Libreswan
詳細は、『ネットワークのセキュリティー保護』の「システム全体の暗号化ポリシーをオプトアウトする IPsec 接続の設定」を参照してください。
関連情報
-
詳細は、
update-crypto-policies(8)
の man ページを参照してください。
3.7. ポリシー修飾子を使用したシステム全体の暗号化ポリシーのカスタマイズ
以下の手順に従って、システム全体の暗号化ポリシーレベルまたは完全なカスタムポリシーの特定アルゴリズムまたはプロトコルを調整します。
システム全体の暗号化ポリシーのカスタマイズは、RHEL 8.2 から利用できます。
手順
/etc/crypto-policies/policies/modules/
ディレクトリーをチェックアウトします。# cd /etc/crypto-policies/policies/modules/
以下のように、調整用のポリシーモジュールを作成します。
# touch MYCRYPTO1.pmod # touch NO-CAMELLIA.pmod
重要ポリシーモジュールのファイル名には大文字を使用します。
任意のテキストエディターでポリシーモジュールを開き、システム全体の暗号化ポリシーを変更するオプションを挿入します。次に例を示します。
# 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
- 変更をモジュールファイルに保存します。
ポリシーの調整を、システム全体の暗号化ポリシーレベル
DEFAULT
に適用します。# update-crypto-policies --set DEFAULT:MYCRYPTO1:NO-CAMELLIA
暗号化設定を実行中のサービスやアプリケーションで有効にするには、システムを再起動します。
# 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 から利用できます。
手順
ポリシーの調整を、システム全体の暗号化ポリシーレベル
DEFAULT
に適用します。# update-crypto-policies --set DEFAULT:NO-SHA1
暗号化設定を実行中のサービスやアプリケーションで有効にするには、システムを再起動します。
# 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 から利用できます。
手順
カスタマイズのポリシーファイルを作成します。
# cd /etc/crypto-policies/policies/ # touch MYPOLICY.pol
または、定義されている 4 つのポリシーレベルのいずれかをコピーします。
# cp /usr/share/crypto-policies/policies/DEFAULT.pol /etc/crypto-policies/policies/MYPOLICY.pol
必要に応じて、テキストエディターでファイルを編集します。以下のようにしてカスタム暗号化ポリシーを使用します。
# vi /etc/crypto-policies/policies/MYPOLICY.pol
システム全体の暗号化ポリシーをカスタムレベルに切り替えます。
# update-crypto-policies --set MYPOLICY
暗号化設定を実行中のサービスやアプリケーションで有効にするには、システムを再起動します。
# reboot
関連情報
-
詳細は、
update-crypto-policies (8)
の man ページのCustom Policies
セクションと、crypto-policies(7)
のCrypto Policy Definition Format
セクションを参照してください。 - 「How to customize crypto policies in RHEL 8.2」 の記事では、システム全体の暗号化ポリシーのカスタマイズ例を示します。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。