Chromeで「接続は古い暗号化技術により暗号化されています」の表示条件

最新のchromeでは表現が変わったようです。
「"このサイトへの接続では安全性の高いプロトコル バージョンと暗号スイートが使用されています。"」

  security_info->is_secure_protocol_and_ciphersuite =
      (net::SSLConnectionStatusToVersion(security_info->connection_status) >=
           net::SSL_CONNECTION_VERSION_TLS1_2 &&
       net::IsSecureTLSCipherSuite(net::SSLConnectionStatusToCipherSuite(
           security_info->connection_status)));

https://code.google.com/p/chromium/codesearch#chromium/src/components/security_state/security_state_model.cc

is_secure_protocol_and_ciphersuite の条件が、こんな感じで定義されています
(2016/05/12)


最新のchromeでは表現が変わったようです。
「◯◯◯への接続は古い暗号スイートにより暗号化されています」
「◯◯◯への接続は新しい暗号スイートにより暗号化されています」
(2015/08/27)


最新のchromeではDHE_RSAは、IsSecureTLSCipherSuiteから削除されました
該当コミット:URL
(2015/10/28)


Google Chromehttps接続してる際に
「◯◯◯への接続は古い暗号化技術により暗号化されています」
「◯◯◯への接続は最新の暗号化技術により暗号化されています」
と表示されており、気になったので少々調べてみました。





(間違い等あるからもしれません、ご注意下さい)

ソースコードを読む

メッセージの出し分け

https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/ui/website_settings/website_settings.cc

    if (net::SSLConnectionStatusToVersion(ssl.connection_status) >=
            net::SSL_CONNECTION_VERSION_TLS1_2 &&
        net::IsSecureTLSCipherSuite(
            net::SSLConnectionStatusToCipherSuite(ssl.connection_status))) {
      site_connection_details_.assign(l10n_util::GetStringFUTF16(
          IDS_PAGE_INFO_SECURITY_TAB_ENCRYPTED_CONNECTION_TEXT,
          subject_name));
    } else {
      site_connection_details_.assign(l10n_util::GetStringFUTF16(
          IDS_PAGE_INFO_SECURITY_TAB_WEAK_ENCRYPTION_CONNECTION_TEXT,
          subject_name));
    }

この部分で、メッセージの出し分けを行っている。
TLSのバージョンが1.2以上かつIsSecureTLSCipherSuiteというのが条件である。

IsSecureTLSCipherSuite

IsSecureTLSCipherSuiteの定義を確認する

https://code.google.com/p/chromium/codesearch#chromium/src/net/ssl/ssl_cipher_suite_names.cc

  // Only allow ECDHE key exchanges
  switch (key_exchange) {
    case 14:  // ECDHE_ECDSA
    case 16:  // ECDHE_RSA
      break;
    default:
      return false;
  }

  switch (cipher) {
    case 13:  // AES_128_GCM
    case 14:  // AES_256_GCM
    case 17:  // CHACHA20_POLY1305
      break;
    default:
      return false;
  }

  // Only AEADs allowed.
  if (mac != kAEADMACValue)
    return false;

  return true;

コードから分かるように、鍵交換・暗号スイート・認証付暗号化方式かの三点を確認している。上記を満たしていない場合、古い暗号化技術ということになるようだ。