暗号スイートとは?
SSL通信をする際に、サーバークライアントで利用可能な鍵交換の方法、サーバー認証方法、MACアルゴリズムをまとめたものです。サーバー、クライアント間で暗号スイートが一致しない場合はSSL/TLS通信は失敗します。
主な暗号スイート
暗号スイート名 | 鍵交換方法 | 認証方法 | 暗号方法 | MAC |
---|---|---|---|---|
NULL-SHA | RSA | RSA | なし | SHA-1 |
RC4-MD5 | RSA | RSA | RC4(128) | SHA-1 |
ADH-DES-CBC3-SHA | DH | なし | 3DES(112) | SHA-1 |
DH-DSS-DES-CBC3-SHA | DH | DSS | 3DES(112) | SHA-1 |
DH-RSA-DES-CBC3-SHA | DH | RSA | 3DES(112) | SHA-1 |
AES128-SHA | RSA | RSA | AES(128) | SHA-1 |
AES256-SHA | RSA | RSA | AES(256) | SHA-1 |
DHE-RSA-AES128-SHA256 | DH | RSA | AES(128) | SHA-256 |
CAMELLIA128-SHA | RSA | RSA | CAMELLIA(128) | SHA-1 |
暗号スイート名
鍵交換、サーバー認証、暗号化方法、MACアルゴリズムなどを一意に特定する名称
鍵交換方法
SSL/TLSのハンドシェイクの際の暗号化の鍵交換アルゴリズム
認証方法
SSL/TLSにおいて認証を行うアルゴリズム
暗号化方法
暗号化通信に使用する共通鍵アルゴリズム
MACアルゴリズム
SSL/TLSの暗号化通信時に使用するメッセージ認証コード(MACアルゴリズム)。
SSLハンドシェイクの流れ
SSL/TLSはTCP利用を始める前に3ウェイハンドシェイク(SYN→SYN/ACK→ACK)を行ってTCPセッションを確立します。その後、上述したSSLハンドシェイクを行います。
大まかな流れ
暗号スイートの提示
クライアントは、自身がサポートしているSSL/TLSバージョンや、暗号スイートをサーバー側に提示します。自分はこのアルゴリズムなら使えますとサーバーがわに提示するわけですね。
通信相手の証明
クライアントは、サーバーからサーバー証明書と公開鍵を受け取り、受け取ったサーバー証明書を検証(サーバー証明書の階層をたどり、ブラウザに登録されているルート証明書で復号、MD比較する。)し、本物のサーバーであることを確認します。
仮に、階層をたどるうちに信頼する証明書に辿り着かなかった場合は認証に失敗します。
もし、本物であることが確認できたらクライアントは共通鍵を生成します。共通鍵をサーバーから送られてきた公開鍵で暗号化します。
共通鍵の交換
実際には共通鍵そのものではなく、共通鍵の素材(プリマスターシークレット)を暗号化して交換します。サーバー側は送られたきた暗号化ファイルを共通鍵を秘密鍵で複合して、共通鍵を取り出します。
これで、クライアント、サーバーともに両方に安全な共通鍵を持つことができます。
SSL/TLS通信開始
SSL/TLSによる暗号化通信を共通鍵暗号方式を使って行います。その際にMACを使って改ざんがないか確認します。
最終確認
SSL/TLSによる暗号化通信を暗号化方式(AES、DES、3DESなど)を宣言してSSLハンドシェイクを終了します。
この記事へのコメントはありません。