はじめに
概要
この章では、本調査の目的と読み方を簡潔に示します。本調査は、SSL/TLSプロトコルにおける「null cipher suites(暗号化を行わない方式)」について、定義・サポート状況・セキュリティリスク・推奨設定を整理したものです。null cipher suitesは暗号化を提供しないため重大なリスクを伴い、TLS 1.3では廃止されています。
対象読者
システム管理者やセキュリティ担当者、暗号化設定に関心のあるエンジニアを想定しています。暗号の専門家でなくても読みやすいよう、専門用語は必要最小限に抑え、具体例で補足します。
本調査の目的と範囲
本調査は以下を目的とします。
– null cipher suites の意味と挙動をわかりやすく説明すること
– 現在のサポート状況と運用上の注意点を明らかにすること
– リスクと推奨設定を提示すること
読み進めると、設定変更や監査に役立つ実務的な視点が得られます。
Null Cipher Suites とは
概要
Null cipher suites は暗号化や認証を提供しない特殊な TLS/SSL の暗号スイートです。大きく「eNULL」と「aNULL」に分かれます。eNULL は暗号化が無く、送受信が平文で行われます。aNULL は認証が無く、相手の身元を確認しません。
eNULL(暗号化なし)の説明
eNULL を選ぶと、通信内容は暗号化されません。たとえばログインパスワードやクレジット番号がそのまま送られる状態です。攻撃者に簡単に読まれてしまいます。
aNULL(認証なし)の説明
aNULL はサーバー証明書などの認証を行いません。暗号化があっても、相手が本物かどうか確認できないため、中間者攻撃に弱くなります。
実際の影響と例
- eNULL:内容が平文で漏える(機密情報が盗まれる)。
- aNULL:攻撃者が偽のサーバーを置き、通信を傍受・改ざんできる。
どちらも通常の運用では許容されません。セキュリティ上の重大なリスクを招くため、使用しないことが望ましいです。
Null Cipher Suites のサポート状況
対応していたプロトコル
Null cipher suites は歴史的に SSL v3.0、TLS 1.0、TLS 1.2 までの実装でサポートされていました。これらは暗号化を行わない組み合わせで、平文で通信するケースを許してしまいます。
具体例
- SSL_RSA_WITH_NULL_MD5
- SSL_RSA_WITH_NULL_SHA
- TLS_RSA_WITH_NULL_SHA256
- ECDHE-RSA-NULL-SHA
これらは「NULL」が付く名前で判別できます。NULL は暗号化なしを意味します。
TLS 1.3 での変更
TLS 1.3 では null cipher suites を完全に廃止しています。TLS 1.3 は AEAD(暗号化と認証を同時に行うモード)のみを採用し、暗号化されない通信は仕様上許可されません。
実務への影響
古いサーバーや組み込み機器は設定次第で NULL を許すことがあります。運用では設定の確認が重要です。互換性のために残すと、通信が平文になるリスクがありますので注意してください。
デフォルトでの無効化
概要
セキュリティ上の理由から、null cipher suites(暗号化なしのスイート)は多くの環境で初期設定では無効になっています。一般的な「DEFAULT」や「ALL」といったcipher stringに含まれず、サーバー側が明示的に指定しないかぎり使われません。
なぜ無効化されるのか
暗号化を行わないため、通信の機密性と整合性を確保できません。攻撃者に平文を読み取られる危険があります。そのためほとんどの製品は安全側を優先し、デフォルトで除外します。
実際のサーバー挙動(例:WebLogic)
WebLogic Serverの設定でも、デフォルトではnull cipher suitesは許可されていません。有効化するにはサーバーの暗号スイート設定に明示的に追加する必要があります。ただし、本番環境での有効化は強く推奨しません。
有効化・確認方法(注意点)
有効にする操作は可能ですが、事前に影響を十分に検討してください。確認にはOpenSSLのコマンド(例: openssl s_client -connect host:port -cipher ‘eNULL’)やスキャンツールでサーバーが無効化されているか確認します。運用では無効のままにしておくことをおすすめします。
セキュリティリスクと推奨事項
リスク
Null cipher suites(eNULL)は暗号化を行わず、平文で通信します。通信内容がネットワーク上で傍受されると、認証情報や機密データが漏洩します。古い・弱い暗号や廃止済みアルゴリズムも解読や改ざんの足がかりになります。
推奨事項(概要)
- Null cipher を無効化する。OpenSSL では cipher リストから除外する(例: !eNULL)。
- TLS のバージョンを最新にする。最低でも TLS 1.2 を採用し、可能なら TLS 1.3 のみ許可します。
- 弱いアルゴリズム(RC4、3DES、MD5 など)も無効化します。
- サーバ側で暗号順序の優先を有効にし、安全なアルゴリズムを優先します。
設定例
- OpenSSL コマンドで確認: openssl ciphers -v ‘DEFAULT:!eNULL’ で一覧を確認します。
- nginx 例: ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ‘HIGH:!aNULL:!eNULL:!RC4:!3DES’;
- Apache 例: SSLCipherSuite HIGH:!aNULL:!eNULL
テストと運用
- 公開サーバは定期的に構成を検査します。openssl s_client や外部の診断ツールで実際のネゴシエーションを確認してください。
- ログや自動スキャンで異常を早期に検知します。
安全な暗号設定は運用の基本です。定期的な見直しを習慣化してください。
Cipher Suite 設定時の注意点
- 理由とリスク
lower-level primitives(例:kRSA、aECDSA)を使ってcipher listを作ると、意図せずにnull cipher(暗号化を行わないスイート)が含まれることがあります。null cipherは通信を平文にしてしまうため、運用環境で有効にすると情報漏えいの原因になります。
- 具体例
例えば、kRSA:HIGH:!aNULL のようにプリミティブ中心で指定すると、暗号化無しのeNULLが残る場合があります。テスト中は許容しても、本番では致命的です。
- 推奨設定
明確な理由がない限り、常に!eNULLを含めてください。さらに安全を重視するなら!aNULLも併記すると認証なしのスイートも排除できます。例:
kRSA:HIGH:!aNULL:!eNULL
- 検証手順
1) 設定後に利用可能なスイートを確認します。例:openssl ciphers -v "<あなたのリスト>"。
2) サーバー側で実際に提供しているスイートを外部から検査します。例:openssl s_client -connect host:portやnmap --script ssl-enum-ciphers。
- 運用上の注意
テスト環境でnull cipherを使う場合はログやドキュメントに明記してください。本番では!eNULLを必ず設定し、定期的な診断で無効化が維持されているか確認します。












