TLS/SSLとは、インターネット上でデータを暗号化して送受信する方法のひとつです。
TLS/SSLは、HTTPS通信するときに利用するね
TLS/SSLの機能
- 暗号化(共通鍵)
- サーバ認証
- クライアント認証
- 改ざん検出
TLS1.2
TLS1.2が最低限推奨されるバージョンです。
TLSハンドシェークで、利用する暗号規格やハッシュ関数などを取り決めたり、サーバ認証をすることで、セッション鍵(共通鍵)を行います。
TLSハンドシェーク
クライアントハロー
ブラウザが対象している暗号規格、ハッシュ関数、署名方式(これらを暗号スイートといいます)の一覧を通知します。
暗号スイートは、例えば「TLS_RSA_WITH_AES_128_CBC_SHA」のように認証・鍵交換のアルゴリズム(RSA)、暗号規格(AES_128_CBC)、MAC生成アルゴリズム(SHA)順で記載されます。
サーバーハロー
クライアントが提示した暗号スイートから、自らが対応しており、最も強度の強いものを選び、通知します。
クライントが送る暗号スイートの中から選びます。
サーバ証明書
鍵交換をDH法で実施する場合は、DHパラメータを使います。
この時、サーバ署名もふくみます。
サーバ証明書の検証は、下記を実施します。
- 有効期限
- 失効の有無(CRLに記載される)
- サブジェクト(CN,SAN)とURL中のFQDNを比較
- CAの署名検証
サブジェクトのCNとは、サーバーの名前、SANはサーバの別名です。
鍵交換にRSAを使うのは、PFSへの対応を考慮すると好ましくありません。
RSAによる鍵交換とは、ハイブリット鍵交換方式のこと。
共通鍵(セッション)を受信側に送るときに、受信側の公開鍵によって暗号化することで、秘密鍵をつかって復号させる方式です。
ですが、通信間で盗聴しており、受信者の秘密鍵が流出してしまった場合、
過去に通信した内容まで全てわかってしまいます。(PFS)
そのため、鍵交換はDHEで行うのが主流です。
DHEであれば、過去にさかのぼって解読することができません。
TLS1.3
TLS1.3は、認証暗号のみ利用可能です。
AESのCCM、GCMを使うことが必須です。
PFS対応としては、鍵交換にECDHE、DHEを用います。
暗号スイートは、「TLS_AES_128_GCM_SHA256」のように、暗号規格(AES_128_GCM)、擬似乱数生成用ハッシュ関数(SHA256)の順に表記されています。
TLS1.2との大きな違いは、TLSハンドシェークのうちサーバハロー以降のやり取りを暗号化通信で行える点です。