SSL/TLS
2023-07-11 (火) 20:09:17
SSL/TLS とは †
- インターネット上で使われているデータ暗号化通信プロトコル。
- サーバとクライアント間を安全に通信できるようにするプロトコル。
- 当初はSSLとして標準化が行われていたが、TLSとして標準化が行われるようになった
- SSLからTLSへの移行が進められた
- SSLは全バージョンで非推奨となっている
- TLSはSSLバージョン3.0に基づいて標準化された規格
- IETFによって標準化が行われている
SSL/TLSの機能 †
暗号化 †
- 共通鍵暗号方式に基づく暗号化機能
認証 †
- 公開鍵証明書に基づく認証機能
改ざん検知 †
- ハッシュ用共通鍵に基づく改ざん検知機能
- ドメイン所有者とサーバー管理者の同一性証明
- ドメイン所有者の物理的実在証明(EV証明書に限定)
対応するアプリケーション層のプロトコル †
プロトコル(平文) | ポート番号(平文) | プロトコル(SSL/TLS) | ポート番号(SSL/TLS) | |
HTTP over SSL/TLS | HTTP | 80 | HTTPS | 443 |
SMTP over SSL/TLS | SMTP | 25 | SMTPS | 465 |
FTP(data) over SSL/TLS | FTP(データ転送用) | 20,1024以上 | FTPS | 988 |
FTP(control) over SSL/TLS | FTP(制御用) | 21 | FTPS | 990 |
Telnet over SSL/TLS | Telnet | 23 | TELNETS | 992 |
POP over SSL/TLS | POP3 | 110 | POP3S | 995 |
IMAP over SSL/TLS | IMAP4 | 143 | IMAPS | 993 |
LDAP over SSL/TLS | LDAP | 389 | LDAPS | 636 |
HTTP over SSL/TLS †
SSL通信のフロー †
SSL通信の仕組み †
SSL/TLS の構造 †
- TCP/IP階層のアプリケーション層とトランスポート層(TCP)の間で暗号化等が行わる。
- SSL/TLS自体のプロトコルの構造
- 上位層
- Handshakeプロトコル
- Change Cipher Specプロトコル
- Alertプロトコル
- Application Dataプロトコル
- 上位層
- 下位層
- Recordプロトコル
TLSレコード †
データ送信時 †
- メッセージをフラグメント単位に分割して以下の処理を行いTLSレコードを作成する
- 圧縮
- HMACの生成
- 暗号化
データ受信時 †
- 復号
- HMACの検証
- 伸張
TLSレコードの構造 †
- タイプ
- バージョン
- データ長
- 通信データ
- HMAC
- パディング
- パディング長
TLSハンドシェイク †
- 【クライアント】 => サーバ
- Client Hello
- 利用可能な暗号化・圧縮アルゴリズムを送信して通信の開始をサーバに通知する
- Client Hello
- クライアント <= 【サーバ】
- 【クライアント】 => サーバ
- Certificate
- Client Key Exchange
- Certificate Verify
- Change Cipher Spec
- Finished
- 鍵交換と認証処理が成功したことをサーバに通知する
- Change Cipher Specで生成した鍵を使い、メッセージを暗号化してサーバに送信する
- クライアント <= 【サーバ】
- Change Cipher Spec
- Finished
- 鍵交換と認証処理が成功したことをクライアントに通知する
- Change Cipher Specで生成した鍵を使い、メッセージを暗号化してクライアントに送信する
- SSL/TLSのセッションとコネクションが確立した。以降、アプリケーションによる暗号化通信が行われる
暗号スイートの選択 †
- 暗号スイート(Cipher Suite)
セッションとコネクション †
セッション †
- マスターシークレットが共有される単位で作成される
コネクション †
- セッションに従属して作成される(1つのセッションに複数のコネクションが作成される)
- 同一セッションのコネクションは、マスターシークレットを共有するが、MAC鍵、暗号化鍵、初期ベクトル(IV)は別々の乱数を使ってコネクションごとに作成される
- コネクションはTCP/IP階層のトランスポート層にあたる
- クライアント側はコネクションごとに異なるポート番号が割り当てられる
SSL通信の高速化 †
- SSL Session Cache
SSL/TLSの拡張仕様 †
- SNI -Server Name Indication
常時SSL †
セキュリティ上の攻撃 †
- バージョンロールバック攻撃
- 古いバージョンのSSL/TLSを意図的に使わせることで、脆弱性をついて暗号化通信の解読等を試みる攻撃
- OpenSSLのVer.0.9.8以前のバージョンには、SSL2.0を受け入れる脆弱性がある
SSL/TLSに関係する脆弱性 †
FREAK †
HeartBleed †
- OpenSSLの脆弱性
BEAST攻撃 †
- SSL3.0、TLS1.0 の脆弱性
- CBCモードの初期化ベクトルの使い方が悪用され、Cookieの情報が窃取される脆弱性
POODLE †
ツール †
- sslscan ※SSLの強度を調査する
sslscan <https://url>
ガイドライン †
- 「SSL/TLS暗号設定ガイドライン」(IPA)-https://www.ipa.go.jp/security/vuln/ssl_crypt_config.html
- TLS暗号設定ガイドライン~安全なウェブサイトのために(暗号設定対策編) -IPA
https://www.ipa.go.jp/security/vuln/ssl_crypt_config.html
関連サイト †
- Bad SSL
https://badssl.com/
- SSL Server Test -Qualys
http://www.ssllabs.com/ssltest.index.html
- Crt.sh
https://crt.sh/
- SSL Server Test - Qualys
https://www.ssllabs.com/ssltest/
- SSL Pulse - Qualys
https://www.ssllabs.com/ssl-pulse/