勉強前イメージ
暗号化するためのアルゴリズムなのは知ってるけど、
なんであんなにいっぱいあるんだろう?
調査
暗号化スイートとは
英語で Cipher Suites と言い、TLSの暗号通信のためのプロトコルで複数の暗号化アルゴリズムの組み合わせのことを指します。
また、暗号化を使う場所が何箇所もあり、その場所ごとにも違う暗号化アルゴリズムが使われています。
暗号化アルゴリズムはいくつも種類があり、2つに分けられます。
アルゴリズムには特徴や暗号化の強度がそれぞれあり、クライアントとサーバ間で提示し合って、どの組み合わせを使うか決めます。
暗号化スイートには4つの要素がある
-
Kx
: 鍵交換に使われる暗号化アルゴリズム -
Au
: 認証に使われる暗号化アルゴリズム -
Enc
: アプリケーション層の暗号化に使われるアルゴリズム -
Mac
: メッセージの検証に使われるアルゴリズム
実際にサーバで対応している一覧を見る
openssl ciphers -v
コマンドを使用して確認します
[root@localhost ~]# openssl ciphers -v
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
DH-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH/DSS Au=DH Enc=AESGCM(256) Mac=AEAD
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
DH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH/RSA Au=DH Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
DH-RSA-AES256-SHA256 TLSv1.2 Kx=DH/RSA Au=DH Enc=AES(256) Mac=SHA256
DH-DSS-AES256-SHA256 TLSv1.2 Kx=DH/DSS Au=DH Enc=AES(256) Mac=SHA256
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
DH-RSA-AES256-SHA SSLv3 Kx=DH/RSA Au=DH Enc=AES(256) Mac=SHA1
DH-DSS-AES256-SHA SSLv3 Kx=DH/DSS Au=DH Enc=AES(256) Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1
.....
色々書いてあって分かりづらい・・・
一番上だけ抜粋して説明します
1 2 3 4 5 6
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
- 1.暗号化スイートの名前
ECDHE-RSA-AES256-GCM-SHA384
の箇所になります
ECDHE : 鍵交換方式(Kx)を意味する ※3の箇所
RSA : 鍵認証方式(Au)を意味する ※4の箇所
AES256 : メッセージ暗号方式(Enc)を意味する ※5の箇所
GCM : ブロック処理を意味する ※5の箇所
SHA384 : メッセージ署名方式(Mac)を意味する ※5,6の箇所
- 2.プロトコルのバージョン
TLSv1.2
の箇所になります
この暗号化スイートがどのプロトコルで使用されるかが書かれています
- 3.[Kx]鍵交換に使われる暗号化アルゴリズム
Kx=ECDH
の箇所になります
Kxは鍵交換( Key Exchange
) の略
鍵交換に使われる暗号化アルゴリズムが EDDH
という意味
Enc(アプリケーション層の暗号化に使われるアルゴリズム),Mac(メッセージの検証に使われるアルゴリズム)で使用する共通鍵の元のデータを共有する機能
- 4.[Au]認証に使われる暗号化アルゴリズム
Au=RSA
の箇所になります
Auは認証( Authentication
) の略
鍵の認証に使われる暗号化アルゴリズムが RSA
という意味
鍵交換(Kx)とも連携して、サーバ側がなりすましでないことを確認する機能
サーバ証明書の正当な所有者であることを、証明書に含まれる公開鍵に対応する秘密鍵を使って証明する
電子署名の場合、署名を作れるのは秘密鍵の所有者のみという理屈から、署名を送ることで秘密鍵自体を提示することなく、秘密鍵の所有を証明する
- 5.[Enc]アプリケーション層の暗号化に使われるアルゴリズム
Enc=AESGCM(256)
の箇所になります
Encは暗号化( Encryption
) の略
アプリケーション層での暗号化に使われる暗号化アルゴリズムが AESGCM(256)
という意味
通信データを暗号化する機能
- 6.[Mac]メッセージの検証に使われるアルゴリズム
Mac=AEAD
の箇所になります
Macはメッセージ認証コード( Message Authentication Code
) の略
通信データに改ざんがないかどうか調べる機能
確認用のデータ(メッセージ認証コード)を付与して送信し、受信側は整合性が取れているか確認する
ブラウザで見るにはどこを見ればよいか
F12を押して、Securityのタブで確認が出来ます。
勉強後イメージ
場所によって暗号化アルゴリズムが違うし、
そもそも暗号化アルゴリズムがいっぱいあるから組み合わせもたくさんあり、
暗号化スイートがいっぱいあるのか!
面白いなぁ