web-dev-qa-db-ja.com

SHAまたはAES128を含む暗号スイートを除外する

これは質問と見なされない可能性があることは承知していますが、次のようになります。

私が協力している大規模な組織が、最近公開されているすべてのWebサイトで、受け入れ可能な暗号スイートの新しい標準セットを発行しました。基準はこれに要約されます:

  • 暗号スイートにSHA1が含まれる場合-許可されません(例:ECDHE-RSA-AES256-SHA)
  • 暗号スイートが128ビット暗号化を使用している場合-受け入れられません(例:ECDHE-RSA-AES128-GCM-SHA256)

私の知る限り、最近の脆弱性の発見があっても、これは一連のTLS標準の根拠にはなりません。 SHAを使用したHMACは引き続き受け入れ可能と見なされ、AES128-GCMは(私が知る限り)かなり堅牢であると見なされます。

このルールの例外を主張する1つの機会があります(コンプライアンスには、主要なCDNプロバイダーのサイトからの削除が含まれるため、これを行いたいと思います)。これらの基準を満たす暗号スイートの削除がサイトのエンドユーザーに有害である理由(クライアントの互換性、パフォーマンスなど)について誰かが何か考えを持っていますか?.

2
Mark Kelly

まず、セキュリティの観点からは不要です。 HMAC-SHA1とAES-128は多かれ少なかれ大丈夫です。これはばかげています。ばかげたセキュリティポリシーを記述しないでください。

次に、Firefoxを台無しにします。 Firefox 46は、HMAC-SHA1またはGCMでAES-128をサポートし、HMAC-SHA1でAES-256をサポートします。 AES-256-GCMはオプションではありません。

Firefox 47は、優れた256ビット暗号であるChaCha20-Poly1305も追加しましたが、これは非常に新しく、サーバーで広くサポートされていません。

現在9月13日のリリースが予定されているFirefox 49はAES-256-GCMを取得する予定ですが、それは将来の予定です。

3番目に、非HMAC暗号スイートを選択するのに十分な理由がありますisHTTP/2で推奨されます 。暗号スイートのブラックリストの実装はオプションですが、ChromeとFirefoxは両方とも実装します。HTTP/ 2を有効にする場合は、許容可能な暗号スイート(DHEまたはECDHEを含むAES-GCMを含む)が絶対に必要です。鍵のサイズに関係なく、HMACではなく鍵交換)廃止された暗号スイートを有効にして自由にできますが、HTTP/2クライアントとのネゴシエーション時には、より優れた暗号スイートを優先する必要があります。

ETA:Mozillaの サーバー側TLSガイド および SSL構成ジェネレーター をポイントして、「このしっかりした、十分に調査された専門家の推奨事項をコピーすることをお勧めします」と言うことができます。それは本当であり、AES-128サポートを維持します。 (一部の亜種は実際にHMAC-SHA1を削除しますが、すべてHMAC-SHA256とHMAC-SHA384を保持します。)

3
Matt Nordhoff

AES-256へのアップグレードが行われており、新しいサーバーはそれを最初のオプションとして提供しています。これがどのように行われるかを説明するために、新しいhttpd SSL暗号(nmapでテスト)のリストを示します。以下を参照してください。

ブラウザーが強力なバリアントを使用できない場合は、サポートされている他のより弱い暗号を使用できます。暗号は、サポートされている最高のTLSプロトコルから試行され、次に、最初から最後までのバリアントが試されます。

次の設定は、強力な暗号を使用して優れたクライアントを作成しますが、古いものとの互換性を維持するため、誰も影響を受けません。

これに変更した後、SSLログを分析して、削除できるバリアントと影響を受けるユーザーの数を確認できますが、大企業の場合は、最初に以下のリストがすべての人に役立つはずです。

CDNに関しては、AES-128から256に切り替えることは大きな変化であり、かなりの$$$がかかります。ただし、このような変更は、今後数年間で確実に発生する新しいソフトウェアにソフトウェアをアップグレードした後で行う必要があります。

したがって、このサーバーでは、FirefoxはTLS_ECDHE_RSA_WITH_AES_256_CBC_SHAを使用し、OpenSSLはTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384を使用しています。GoogleChromeはTLS_ECDHE_RSA_WITH_AES_256_GCM_SHAと言い、すべてTLS 1.2を使用しています。

別の方法で行うと、多くのユーザーが混乱します。

nmap --script ssl-enum-ciphers -p 443 127.0.0.1

443/tcp open  https
| ssl-enum-ciphers: 
|   TLSv1.0: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
|     compressors: 
|       NULL
|     cipher preference: server
|   TLSv1.1: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
|     compressors: 
|       NULL
|     cipher preference: server
|   TLSv1.2: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
|     compressors: 
|       NULL
|     cipher preference: server
|_  least strength: C
3
Aria

SHA1が現在段階的に廃止されている場合でも、SHA1および128ビット暗号化を削除すると互換性の問題が発生するという主張をすることができます。アルゴリズムの選択について [〜#〜] nist [〜#〜] に依存するようにアドバイスします。

0
ztk