TLS/SSLとは

TLS/SSLとは、インターネット上でデータを暗号化して送受信する方法のひとつです。

TLS/SSLは、HTTPS通信するときに利用するね


TLS/SSLの機能

  • 暗号化(共通鍵)
  • サーバ認証
  • クライアント認証
  • 改ざん検出




引用:【図解】https(SSL/TLS)の仕組みとシーケンス,パケット構造 〜暗号化の範囲, Encrypted Alert, ヘッダやレイヤについて~|SEの道標



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ハンドシェークのうちサーバハロー以降のやり取りを暗号化通信で行える点です。