Transport Layer Security

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Secure Socket Layerから転送)
移動: 案内検索
TCP/IP群
アプリケーション層

BGP / DHCP / DNS / FTP / HTTP / IMAP / IRC / LDAP / MGCP / NNTP / NTP / POP / RIP / RPC / RTP / SIP / SMTP / SNMP / SSH / Telnet / TFTP / TLS/SSL / XMPP

カテゴリ
トランスポート層

TCP / UDP / DCCP / SCTP / RSVP / ECN

カテゴリ
ネットワーク層

IP (IPv4, IPv6) / ICMP / ICMPv6 / IGMP / IPsec

カテゴリ
リンク層

ARP/InARP / NDP / OSPF / トンネリング (L2TP) / PPP / MAC (イーサネット, IEEE 802.11, DSL, ISDN, FDDI)

カテゴリ

Transport Layer Security(トランスポート・レイヤー・セキュリティー、TLS)は、セキュリティーを要求される通信のためのプロトコルである。また、当プロトコルを発表したIETFの作業部会の名前でもある。歴史的な理由により、当プロトコルは、しばしば(特に区別する場合を除いて)Secure Sockets Layer (SSL) とも呼ばれている。これは、TLSの元になったプロトコルがSSLだったこと[1]と、SSLという名称が広く普及していることによる。以下においては、特にことわりのないかぎり、作業部会ではなく、プロトコルのほうを指す。

TLSは、コネクション型のトランスポート層プロトコルの上位に位置し、通常はTCPがラップする形で利用される。特にHTTPでの利用を意識して設計されているが、アプリケーション層の特定のプロトコルには依存しない。

バージョン[編集]

SSL 1.0[編集]

ネットスケープコミュニケーションズ社がSSLの最初のバージョンとして設計していたが、設計レビューの段階でプロトコル自体に大きな脆弱性が発見され、破棄された。このため、SSL 1.0を実装した製品はない。

SSL 2.0[編集]

ネットスケープコミュニケーションズ社はSSL 1.0の問題を修正して再設計し、1994年にSSL 2.0として発表した。また、同社のウェブブラウザであるNetscape Navigator 1.1においてSSL 2.0を実装した。

その後、SSL 2.0にもいくつかの脆弱性が発見され、SSL 3.0において修正された。SSL 2.0の脆弱性のひとつは、ネゴシエーションの情報を改竄すると、提示する選択肢のうち最弱のアルゴリズムを使わせることができ(ダウングレード攻撃)、改竄を受けたことを検出できないというものである。さらに悪いことに、この脆弱性を利用すると、双方がSSL 3.0をサポートしていてもSSL 2.0で接続させることさえ可能になる。

SSL 3.0ではSSL 2.0との互換性を提供するにあたり、乱数領域を使った細工を加えることで、このような攻撃を検出する仕組みを組み込んだ。しかしこの細工が無効にされているサーバ環境も存在し、クライアントから見るとSSL 2.0を無効にしない限りこの脆弱性の影響を受ける可能性を否定できない[2]。SSL 3.0以降に対応した実装が十分に普及したものとして、Internet Explorer 7Mozilla Firefox 2Opera 9などは、初期状態でSSL 2.0を無効にしている[3][4][5]。この決定を受け、SSL 2.0しか対応していなかったサーバでも、SSL 3.0以降へ対応する動きが広まっている[6]

SSL2.0にはチェーン証明書がない。 したがって、ルートCAから発行したSSLサーバ証明書しか使うことができない。

SSL 3.0[編集]

ネットスケープコミュニケーションズ社はSSL 2.0の問題を修正するとともに機能追加を行い、1995年にSSL 3.0を発表した。また、Netscape Navigator 2.0においてSSL 3.0を実装した。SSL 3.0の仕様書については、2011年にIETFから歴史的文書という扱いでRFC 6101として公開された。

TLS 1.0[編集]

IETFのTLSワーキンググループはRFC 2246としてTLS1.0を公表した。TLS 1.0の標準化作業は1996年に開始され、年内に完了する予定だったが、いくつかの問題に阻まれ、公表は1999年まで遅延した。

TLS 1.0が提供する機能はSSL 3.0とあまり変わらないが、アルゴリズムやルートCAの自己署名証明書の取扱いなどの仕様の詳細が変更されたことに加え、これまであまり実装されていなかった選択肢のいくつかが必須と定められた。このため、TLS 1.0を実装した製品が普及するまでには、さらに数年を要した。

なおTLS 1.0はSSL 3.0より新しい規格であることを示すため、ネゴシエーションにおけるバージョン番号は3.1となっている。

TLS 1.1[編集]

2006年RFC 4346としてTLS 1.1が制定された。TLS 1.0からの変更点は、新しく発見された攻撃手法に対する耐性の強化が中心である。特にCBC攻撃に対する耐性を上げるため、初期化ベクトルを明示的に指定することにし、さらにパディングの処理も改善された。また、予期せぬ回線クローズ後に、セッションを再開できるようになった。共通鍵暗号アルゴリズムとしてAESが選択肢に加わった[7]

ネゴシエーションにおけるバージョン番号は3.2となっている。

TLS 1.2[編集]

2008年8月にRFC 5246としてTLS 1.2が制定された。ハッシュのアルゴリズムにSHA-256が追加されたほか、ブロック暗号について、従来のCBCモードだけではなく、GCMCCMといった認証付き暗号が利用可能となった。また、AESに関する記述がRFC 5246自体に含まれるようになった。

ネゴシエーションにおけるバージョン番号は3.3となっている。

提供する機能[編集]

SSLによるセキュアな通信

TLSは、認証暗号化改竄検出の機能を提供する。具体的なアルゴリズムはそれぞれ複数の選択肢が定義されており、TLS通信の開始時に行われるネゴシエーション時に、双方が許容するアルゴリズムの中から選択される。

選択肢によっては、攻撃への耐性の強度が大きく変化する場合もある(極端な例だが、双方が同意すれば「暗号化なし」を選択することもできる)。許容できない選択肢はあらかじめネゴシエーションの候補から外しておいたり、また望ましくないアルゴリズムが選択された場合はユーザーに警告したりといった対策が考えられる。一般に公開されている製品は、実際にこれらの対策が取られている。

なお、選択できるアルゴリズムはTLS/SSLのバージョンによって異なる。また、暗号化、認証、改竄検出の3つをひとまとめにして選択肢が定義されており、しかも全ての組み合わせが網羅されているわけではないので、同時に利用できない組み合わせも存在する。

認証[編集]

TLSは公開鍵証明書に基づく認証を提供する。認証に使用する署名アルゴリズムの選択肢は以下のとおりである。

TLSの各バージョンで使用できる署名アルゴリズム
未対応 未対応、選択可能 選択可能、実装必須 実装必須)
アルゴリズム SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2
ECDSA 未対応 選択可能
RSA 選択可能 実装必須
DSA 未対応 選択可能 実装必須 選択可能

TLSの一般的な用途では、サーバだけが証明書を提示し、クライアントがその正当性を確認する。オプションでクライアント認証も可能であり、必要な場合にはサーバがクライアントに対して証明書の提示を求める。

なりすましを防ぐために、証明書には認証局 (CA; Certification Authority) による電子署名が必要である。また、サーバ証明書には発行先サーバのホスト名が書き込まれており、クライアントは自分が接続しようとしているサーバのホスト名と一致するかどうか確認することができる。この確認を行わない場合、攻撃者はサーバAの管理者でなくても、自分が管理するサーバBの正当な証明書を取得して、その証明書を使ってサーバAを名乗ることができてしまう。

証明書に関する問題については「#証明書の正当性」の節を参照。

なお証明書には有効期限が設定されている。暗号理論およびコンピュータの計算能力は日々進歩しており、現在安全とみなされる技術であっても長年にわたって安全性を保てる保証はない。また暗号技術の制約上、莫大な計算能力をつぎ込んで解読を続ければ、いつか暗号は解読されると考えるべきである。このため、一定期間ごとに証明書を再発行し、鍵を変更するとともに必要に応じて使用するアルゴリズムも更新している。

暗号化[編集]

共通鍵暗号に基づく暗号化を提供する。以下のアルゴリズムが選択肢として定義されている。

TLS/SSLの各バージョンで使用できる暗号化アルゴリズム
未対応 未対応、廃止 廃止、選択可能 選択可能、実装必須 実装必須)
アルゴリズム プロトコルバージョン
SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2
暗号化なし 未対応 選択可能
IDEA CBC[注 1] 選択可能 廃止
DES CBC[注 1]
RC2 CBC[注 1]
RC4[注 2] 選択可能
トリプルDES CBC[注 1] 選択可能 実装必須 選択可能
AES CBC[注 1] 未対応 選択可能[注 3] 実装必須
AES GCM 未対応 選択可能[注 4]
AES CCM 未対応 選択可能[注 5]
Camellia CBC[注 1] 未対応 選択可能[注 6]
Camellia GCM 未対応 選択可能[注 7]
SEED CBC[注 1] 未対応 選択可能[注 8]
ChaCha20+Poly1305 未対応 選択可能[注 9]
  1. ^ a b c d e f g TLS 1.0以前ではBEAST攻撃に対して脆弱であり、クライアント側、サーバ側での対応が必要
  2. ^ 脆弱性が指摘されている
  3. ^ RFC 3268による追加
  4. ^ RFC 5288による追加
  5. ^ RFC 6655による追加
  6. ^ RFC 4132およびRFC 5932による追加
  7. ^ RFC 6367による追加
  8. ^ RFC 4162による追加
  9. ^ draft-agl-tls-chacha20poly1305-04による提唱

AES CBCはTLS 1.0を定義するRFC 2246には含まれていないが、RFC 3268で追加された。TLS 1.1を定義するRFC 4346からはRFC 3268が参照されており、さらにTLS 1.2では定義であるRFC 5246にAES CBCに関する記述が取り込まれた。また、個別のRFCによってCamellia CBC(RFC 4132RFC 5932)およびSEED CBC(RFC 4162)がTLS 1.0以降に、認証付き暗号によるAES GCMRFC 5288)、AES CCMRFC 6655)、Camellia GCM(RFC 6367)がTLS 1.2に追加されている。IDEA CBC、DES CBC、RC2 CBCはTLS1.2で廃止され、IDEAとDESについてはRFC 5469に解説がある。

ブロック暗号CBCモードでの利用については、TLS 1.0以前においてBEAST攻撃と呼ばれる攻撃が可能であることが明らかとなっており[8][9]、クライアント側、サーバ側での対応が必要とされている。TLS 1.1以降ではこの攻撃への根本的な対処として初期化ベクトルを明示的に指定し、パディングの処理が改善された。ブロック暗号であってもGCMCCMなどの認証付き暗号を用いる場合にはこれらの攻撃を受けない。

ストリーム暗号であるRC4は前述のBEAST攻撃を受けることはないが、RC4には仕様上の脆弱性が存在し、2013年現在では、NSAのような機関であればTLS/SSLを利用したとしてもRC4を解読可能であるとの疑惑がある[10]MicrosoftではRC4を無効化することを推奨している[11][12][13]Googleによって、ストリーム暗号であるChaCha20と認証のためのPoly1305を組み合わせたChaCha20+Poly1305が提唱されている[14]

共通鍵は、クライアントとサーバの双方から提供される乱数に基づいて決定される。双方で生成した乱数を組み合わせて使用するため、リプレイ攻撃では同一の共通鍵を得ることはできない。共通鍵は4つセットで生成し、クライアントから送信するデータの暗号化用とサーバから送信するデータの暗号化用にひとつずつ割り当てる(残り2つは後述するハッシュ値の生成に使われる)。

鍵の盗聴を防ぐ仕組みとして、サーバ証明書がRSA暗号を用いて署名されている場合は、クライアントから送る鍵情報の一部をサーバの公開鍵で暗号化することができる。サーバの秘密鍵を知らない部外者は、この情報を復号できない。あるいは鍵共有を公開鍵のみに頼らず、ディフィー・ヘルマン鍵共有 (DH)、楕円曲線ディフィー・ヘルマン鍵共有 (ECDH) のような鍵共有アルゴリズムを使うことで、将来万が一サーバの秘密鍵が判明したとしてもそれだけではセッションキーを割り出せない、Forward secrecy英語版を実現することもできる (DHE、ECDHE)。

改竄検出[編集]

TLSでデータレコードを送信する際には、レコードのシーケンス番号、共通鍵、そしてデータからメッセージ認証コード (MAC) を算出し、それをレコードに付加して送信する。ハッシュ関数に基づくMACであるHMACMD5SHA-1あるいはSHA-256との組み合わせ)あるいはAEAD英語版GCMCCMなどの認証付き暗号の場合)が用いられる。共有秘密鍵を知らない攻撃者は、データを改竄してもそれに対応するMACを生成できない。したがって受信者は、手元で送信者と同様にMACの計算を行ない、同一の値が得られるかを確認することで改竄の有無を検出できる。一部のレコードを重複して送りつけるリプレイ攻撃は、シーケンス番号が異なるため、やはりMACで検出できる。また、(アプリケーション層プロトコルによる代替手段がない限り)通信の終了を知らせるレコードを送り合うことになっているため、これが送られないうちに接続が切断された場合は、強制切断攻撃を受けたと判断することができる。

TLS/SSLの各バージョンで使用できる改竄検出の選択肢は以下のとおりである:

TLS/SSLの各バージョンで使用できる改竄検出
未対応 未対応、選択可能 選択可能、実装必須 実装必須)
アルゴリズム SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2
HMAC-MD5 選択可能
HMAC-SHA-1 未対応 選択可能 実装必須
HMAC-SHA-256 未対応 選択可能
AEAD英語版 未対応 選択可能

アプリケーション層プロトコルへの適用[編集]

TLSは特定のアプリケーション層プロトコルに依存しないため、HTTP以外にも多くのプロトコルにおいて採用され、クレジットカード情報や個人情報、その他の機密情報を通信する際の手段として活用されている。

既存のアプリケーション層プロトコルでTLSを利用する場合、大きく2つの適用方式が考えられる。まずひとつは、下位層(通常はTCP)の接続を確立したらすぐにTLSのネゴシエーションを開始し、TLS接続が確立してからアプリケーション層プロトコルの通信を開始する方式である。もうひとつは、まず既存のアプリケーション層プロトコルで通信を開始し、その中でTLSへの切り替えを指示する方式である。

前者はアプリケーション層のプロトコルをまったく変更しなくてすむことが利点である。その反面、既存のポート番号とは別にTLS対応用のポート番号が必要となる。実態としては、SSL/TLSの最初の適用例であるHTTPSをはじめとして、前者の方式を使うことが多い。ただし、この方式はバーチャルホストを構成する際に問題となる可能性がある。詳細は#バーチャルホストの節を参照。

課題[編集]

バーチャルホスト[編集]

TLSは、TCP/IPネットワークでホスト名ベースのバーチャルホストを構成する際に問題となる。TCP/IPでは通信を開始する前にホスト名を解決し、実際にはIPアドレスとポート番号で接続先を識別している。このためTLSのネゴシエーションの時点では、バーチャルホストのうちどのホスト名を期待しているのか判断できず、ホスト名ごとに異なるサーバー証明書を使い分けることができない。

TLS(SSL)の拡張機能を定義するRFC 4366では、ネゴシエーション時にホスト名を伝える手段としてServer Name Indication(SNI)を提供している。TLS 1.2を定義するRFC 5246では、サーバ証明書を選択する際にこの情報を使うよう言及している。

逆に、証明書を使い分けず、1種類の証明書を使い回す方法も考えられる。X.509証明書のフォーマットについて記述したRFC 5280によれば、発行先ホスト名を保持するsubjectAltNameはひとつの証明書に複数のエントリを作成できる。しかし認証局が実際にそのような証明書を発行するかどうかは、別の問題である。認証局はすべてのホスト名に対して証明書の申請者が正当な管理者であることを確認しなければならないため、証明書発行の負荷は大きくなる。

また、発行先ホスト名にワイルドカードを使う方法も考えられる。HTTP over SSL/TLS(HTTPS)を定義するRFC 2818は、ワイルドカードの適用について記述している。バーチャルホストの対象が、ひとつのドメイン名の中のホストであれば、この方法で対応できる場合もある。

どの方法も実装によって対応状況にバラつきがあり、環境によっては使えない可能性がある。なおIPアドレスベースのバーチャルホストであれば、ネゴシエーションの時点で確実にどのバーチャルホストを期待しているか判断できるので、問題なく証明書を使い分けることができる。

セキュリティー上の考察[編集]

TLS適用の有無と使用アルゴリズムの強度[編集]

TLSを導入さえすればセキュリティーが確保できるという認識は誤っている。TLS通信は、平文での通信に比べて(主に暗号化復号時)余分な計算機能力を使用するため、本当に必要なとき以外は使用しないことが多い。システムはデータの重要性を判断することができないので、TLSが必要なときに正しく使われているかどうかは、利用者自身が判断しなければならない。

Mozilla Firefoxにおける南京錠アイコンの例

特にWorld Wide Webでは、ハイパーリンクによるページ遷移を繰り返して処理を行うため、どの通信でSSL/TLSが使用されているか把握することが重要になる。多くのウェブブラウザは、画面のどこかに南京錠アイコンを表示したり、アドレスバーの色を変化させたりして、利用者に情報を提供している。

また実際に使用するアルゴリズムは双方のネゴシエーションによって決まるため、TLSを使用していても、システムとして許容はするが推奨できないアルゴリズムが採用される可能性がある。このような場合もダイアログメッセージなどを使って利用者に警告すべきである。

証明書の正当性[編集]

TLSは公開鍵証明書を用いて認証を行い、なりすましを極力排除しようとする。しかしシステムの自動的な対応には限界があり、すべてのなりすましを検出できるわけではない。

公開鍵証明書には認証局による電子署名が与えられる。その署名の正当性を評価するためには認証局の証明書が必要であり、最終的にはルート証明書と呼ばれる一群の証明書に行きつく。各システムは、認証局の証明書として信用できるルート証明書を、あらかじめ保持している。認証局は自身の秘密鍵を厳重に秘匿し、また証明書の発行にあたっては正当なサーバ管理者かどうか確認することが求められる。これらが保証されない認証局のルート証明書を組み込むことは、TLSにおける認証機能を破綻させることになる。仮に認証局自体は安全でも、入手したルート証明書が本当に意図する認証局のものかどうか判断することは難しいという点も注意すべきである。

TLSで認証を行うためには、認証局の署名に加えて、証明書の発行先を確認する必要がある。確認しない場合、サーバAの管理権限を持たない者がサーバBとして正当な証明書を取得し、その証明書を使ってサーバAを名乗ることができてしまう。TLS用のサーバ証明書には発行先サーバのホスト名が書き込まれており、クライアントは自分が接続しようとしているサーバのホスト名と一致するかどうか確認することができる。

現実には「正当な」サーバであっても、これらの検証において「問題がある」と判断される証明書を使って運用されているサーバが少なからず存在する。ある著名なセキュリティ研究者はこのような証明書を、オレオレ詐欺をもじって「オレオレ証明書」と呼んで批判している[15]

この検証は、システムに指示された接続先のホスト名と実際に接続した先のホスト名が一致することを検証しているのであり、利用者が意図する接続先とは必ずしも一致しないことに注意する必要がある。

例として、利用者が意図する接続先であるサーバAがホスト名www.example.comでサービスを提供しており、攻撃者はサーバBおよびホスト名www.example.orgを取得している場合を考える。仮に攻撃者がDNS偽装に成功して、www.example.comへの接続をサーバBに導くことができたとしても、www.example.comのサーバ証明書を入手できないので、TLS接続を提供することはできない。しかし攻撃者も、www.example.orgのサーバ証明書を入手することはできる。したがって、サーバAに接続しようとしている利用者を、www.example.comではなくwww.example.orgへ接続させることができれば、クライアントからは正当な証明書を持ったサーバとしか見えない。

上記のような例も考慮した上で、利用者が意図している接続先かどうかを判断するためには、以下の2つの条件を満たす必要がある。

  1. 利用者は意図する接続先の正しいホスト名を知っている。
  2. 利用者は、現在システムに指示されている接続先が、自分の知っている正しいホスト名と一致していることを確認できる。

2は、情報処理推進機構(IPA)が公開している「安全なウェブサイトの作り方」[16]という文書の「フィッシング詐欺を助長しないための対策」に対応する。

乱数の品質[編集]

他の多くの近代暗号と同様に、TLSもまた、暗号としての強度は乱数の品質に依存している。桁数(bit長)の大きな暗号は推測が難しいという前提が暗号強度の根拠となっている。(これは,公開鍵暗号システムにも言える)もし何らかの理由で乱数の出現確率が大きく偏るようなことがあれば、総当たり攻撃で解読される可能性が上昇する。通常は、これは実装の問題に起因している。

古い例では、Netscapeの初期の実装における乱数生成の脆弱性がある。プロセスIDや時刻から乱数を生成していることが判明し、これらの情報を取得できる場合には総当たり攻撃の所要時間が大幅に短くなるという問題があった[17]

2008年5月15日にはDebianが脆弱性に関する報告[18]を発表した。OpenSSLライブラリのパッケージメンテナンスの際に誤ったパッチを導入した結果、鍵生成に適切な乱数が使われず僅か65536(=216)通りの予測可能な物が生成されてしまった事を明らかにした[19](なお、この問題はOpenSSLそのものの脆弱性ではない)。この影響を受けるのはDebian sargeより後のバージョンのDebianと、それから派生したDamn Small Linux, KNOPPIX, Linspire, Progeny Debian, sidux, Ubuntu, UserLinux, Xandrosである。脆弱性のあるバージョンのOpenSSLは2006年9月17日に公開された。安定バージョンがリリースされた2007年4月8日以降は確実に影響を受ける。脆弱性のあるバージョンのOpenSSLで作られた鍵全て、SSH 鍵、OpenVPN 鍵、DNSSEC 鍵、X.509 証明書を生成するのに使われる鍵データ、および SSL/TLS コネクションに使うセッション鍵等が影響を受ける。これらの鍵は65536通り全てを総当たり攻撃で試すだけでいずれの鍵が使われているか解読可能であり(SSHでは20分間で解読できたと報告されている)、また脆弱な鍵がインストールされたDebianを含む全てのオペレーティングスシステムにおいて緊急の対応が必要であると専門家が注意を呼びかけている。生成された鍵に問題があるため、Debian GNU/Linuxで生成した鍵をMicrosoft Windowsのような非UNIXシステムに導入しているような場合も、この脆弱性の影響を受ける。具体的対応については、Debianの報告の他、JPCERT/CCの勧告[20]等に従うべきである。

再ネゴシエーション脆弱性[編集]

2009年11月4日、SSL 3.0以降の再ネゴシエーション機能を利用して、クライアントからのリクエストの先頭に中間者が任意のデータを挿入できるという脆弱性が報告された[21][22]。プロトコル自体の脆弱性であり、すべての実装が影響を受ける。

この脆弱性への簡単な対策は、サーバにおいて再ネゴシエーションを禁止することである。根本対応としては、TLS Extensionを使った安全な再ネゴシエーション手順がRFC 5746として提案されている。この脆弱性を利用した中間者攻撃では、サーバがRFC 5746に対応しない限りクライアントは再ネゴシエーションが発生したことを検出できないので、クライアント側のみで対応することは不可能である。

参考文献[編集]

  • Eric Rescorla 『マスタリングTCP/IP SSL/TLS編』 齊藤孝道・鬼頭利之・古森貞監訳、オーム社、2003年11月28日、第1版第1刷。ISBN 4-274-06542-1

脚注[編集]

  1. ^ プロトコル名を含めた歴史については、Eric Rescorla著,「マスタリングTCP/IP SSL/TLS編」,オーム社開発局(2003年) ISBN 4-274-06542-1 の2章6節が詳しい。
  2. ^ 大岩 寛 (2005年10月13日). “[Security] SSL 2.0 version rollback の件のFAQ”. おおいわのこめんと. 2010年1月3日閲覧。
  3. ^ Eric Lawrence (2006年1月31日). “Internet Explorer 7 における HTTPS セキュリティーの強化点”. Microsoft Corporation. 2010年1月3日閲覧。
  4. ^ サイトが古くて安全でないバージョンの SSL プロトコルを使用しているため、安全な接続ができませんでした”. Firefox サポート (2009年7月6日). 2010年1月3日閲覧。
  5. ^ Opera 9 のサポートするウェブ標準ならびに仕様”. Opera Software ASA.. 2010年1月3日閲覧。
  6. ^ 勝村 幸博 (2006年6月2日). “「SSL 2.0だけに対応したWebサイトはわずか0.1%」---ネットクラフト”. 日経BP IT pro. 2010年1月3日閲覧。
  7. ^ RFC 3268によって後付けでAESが追加されたTLS 1.0とは異なり、TLS 1.1を定義するRFC 4346 A.5節ではRFC3268が参照され、AESが当初から追加されている
  8. ^ Dan Goodin (2011年9月19日). “Hackers break SSL encryption used by millions of sites”. 2013年12月13日閲覧。
  9. ^ Y Combinator comments on the issue” (2011年9月20日). 2013年12月13日閲覧。
  10. ^ John Leyden (2013年9月6日). “That earth-shattering NSA crypto-cracking: Have spooks smashed RC4?”. The Register. 2013年12月13日閲覧。
  11. ^ Security Advisory 2868725: Recommendation to disable RC4”. Microsoft (2013年11月12日). 2013年12月13日閲覧。
  12. ^ マイクロソフト セキュリティ アドバイザリ (2868725) RC4 を無効化するための更新プログラム”. Microsoft (2013年11月13日). 2013年12月13日閲覧。
  13. ^ draft-popov-tls-prohibiting-rc4-01
  14. ^ draft-agl-tls-chacha20poly1305-04
  15. ^ 高木 浩光 (2007年11月17日). “オレオレ証明書の区分 第三版”. 高木浩光@自宅の日記. 2010年1月3日閲覧。
  16. ^ 「安全なウェブサイトの作り方 改訂第3版」を公開”. 独立行政法人 情報処理推進機構 (2008年6月11日). 2010年1月3日閲覧。
  17. ^ Ian Goldberg; David Wagner (1996年1月1日). “Randomness and the Netscape Browser” (英語). Dr. Dobb's. 2010年1月3日閲覧。
  18. ^ OpenSSL パッケージの脆弱性とその影響について (SSH鍵、SSL証明書等)”. Debian JP Project (2008年5月15日). 2010年1月3日閲覧。
  19. ^ Debian generated SSH-Keys working exploit”. SecurityFocus (2008年5月15日). 2010年1月3日閲覧。
  20. ^ Debian GNU/Linux に含まれる OpenSSL/OpenSSH の脆弱性に関する注意喚起”. JPCERT/CC (2008年5月19日). 2010年1月3日閲覧。
  21. ^ Ray, Marsh; Steve Dispensa (2009年11月4日). “Renegotiating TLS (PDF)” (英語). 2010年2月13日閲覧。
  22. ^ JVNVU#120541 SSL および TLS プロトコルに脆弱性”. Japan Vulnerability Notes. JPCERT/CC and IPA (2009年11月13日). 2010年2月13日閲覧。

関連項目[編集]

外部リンク[編集]

日本の認証局ベンダー(50音順)[編集]