SlideShare a Scribd company logo
1 of 20
RFC 7457
Summarizing Known Attacks on
Transport Layer Security (TLS)
and Datagram TLS (DTLS)
19th Oct 2018
Kazumasa Kaneko
Graduate School of Engineering, The University of Tokyo
https://datatracker.ietf.org/doc/rfc7457/
1
What is TLS?
ジオトラスト https://www.geotrust.co.jp/ssl_guideline/ssl_beginners/
2
List of attacks
• SSL Stripping
• STARTTLS Command Injection Attack (CVE-2011-0411)
• 2.3. BEAST (CVE-2011-3389)
• Padding Oracle Attacks
• Attacks on RC4
• Compression Attacks: CRIME, TIME, and BREACH
• Certificate and RSA-Related Attacks
• Theft of RSA Private Keys
• Diffie-Hellman Parameters
• Renegotiation (CVE-2009-3555) .
• Triple Handshake (CVE-2014-1295)
• Virtual Host Confusion
• Denial of Service
• Implementation Issues
• Usability
3
SSL Stripping
ブラウザが平文でHTTP通信
をしようとしたとき
攻撃者がプロキシとして入り
セキュアな方式にリダイレクト
せず通信を改ざんする
Whiskey Tango Foxtrot
https://avicoder.me/2016/02/22/SSLstrip-for-newbies/
4
STARTTLS Command Injection Attack
5
The Hacker News
https://thehackernews.com/2016/03/smtp-sts-email-security.html
SMTPなどTLS通信にデフォルトで対応しているか分からない場合に
平文でまず通信を確立してからTLS対応に切り替えるハンドシェイクを改
ざんすることで平文のままその後の通信を行わせる
BEAST (Browser Exploit Against SSL/TLS)
ターゲット
ブロック暗号化 : 平文をブロック単位に分割して暗号化する
Cipher Block Chaining (CBC) : 1つ前の暗号文ブロックとのXORをとったあとに暗号化することで
平文ブロックと暗号文ブロックの1対1対応をなくす
6
J-Net21
http://j-net21.smrj.go.jp/develop/digital/entry/001-20120229-01.html
BEAST (Browser Exploit Against SSL/TLS)
手法
攻撃者の状況
・暗号鍵は知らない
・任意の平文を暗号化できる
・ユーザーの生成した暗号を知っている
・ユーザーの送信したい平文を知りたい
手法
HTTPSの通信におけるCookieなど、ある平文ブロックの1バイトだけ分からないとき :
POST /AAAAAA1234|5678 HTTP/1.1rn?|????????????????
1バイトに対して総当たりで平文ブロックから暗号文ブロックを生成すれば256回でもとの暗
号文ブロックと同じ結果となる平文ブロックが分かる
URL長を変えてブロックを1バイトずらしながら繰り返すことでもとの平文をすべて知る
7
J-Net21
http://j-net21.smrj.go.jp/develop/digital/entry/001-20120229-01.html
Padding Oracle Attacks
ターゲット
8
Gotham Digital Science
https://blog.gdssecurity.com/labs/2010/9/14/automated-padding-oracle-attacks-with-padbuster.html
ブロック暗号のPadding : 平文長が
ブロック長の整数倍になるように
Paddingを挿入する
Paddingで入れる文字には、
Padding長の数字をいれるなど、
一定のルールがあることで受信側
は復号後に Paddingを取り除くこ
とができる
サーバーは受信した暗号文を復号
し、Paddingが妥当でないときと、
もとの平文が間違っているときで
応答が異なる (オラクル)
Padding Oracle Attacks
手法
攻撃者の状況
・暗号鍵は知らない
・任意の暗号文をサーバーに送り応答を知ることができる
・ユーザーの生成した暗号を知っている
・ユーザーの送信したい平文を知りたい
手法
ユーザーの生成した暗号文の一部を攻撃ブロックに変える
攻撃ブロックの末尾1バイトを総当たりで変えて送信することで、1バイトのPaddingとして妥当
なときの攻撃ブロックが分かり、PaddingとXORを取ることで復号ブロックの末尾1バイトが分か
る
これを末尾から1バイトずつずらして繰り返せばnバイトのPaddingとして妥当な攻撃ブロックの
末尾nバイトが分かり、復号ブロックがすべて分かる
攻撃ブロックの代わりにもとの暗号ブロックと、復号ブロックから平文を知ることができる
9
Ryo Kiire
https://www.goto.info.waseda.ac.jp/~kiire/crypto/pad-oracle.php
Attacks on RC4
RC4 : 1バイト/1ビットずつ逐次的に暗号化するストリーム暗号の
ひとつ (↔ブロック暗号)
10http://www.crypto-it.net/eng/symmetric/rc4.html?tab=1 https://www.rc4nomore.com/
0. 共通鍵を共有する
1. 共通鍵から256バイトのテーブルを作成
2. テーブルから1バイトのkeystreamをあるルールで選ぶ
3. KeystreamとデータのXORをとって送信する
4. テーブルをあるルールで更新して2に戻る
Keystreamが完全にランダムでない
→ 複数の共通鍵をもとにしたRC4で、同じデータを
何度も暗号化することで統計的にデータを推測できる
Compression Attacks: CRIME, TIME, and BREACH
Compression attack : データ中に同一の文字列が含まれていると圧
縮の結果が小さくなることを利用して平文を復号せずに推測する
BEASTと同様に短いバイト単位ごとに総当たりをすることで全体
の試行回数を大幅に減らすことができる
• CRIME : TLSの圧縮を利用
• TIME、BREACH : HTTPの圧縮を利用
11https://www.pcworld.com/article/262307/crime_attack_abuses_ssltls_data_compression_feature_to_hijack_https_sessions.html
Certificate and RSA-Related Attacks
RSA暗号
・素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号のひとつ
・TLSのハンドシェイク(共通鍵の共有)に使われる
公開鍵暗号に対する攻撃の分類
・選択平文攻撃(CPA) : 任意の平文を暗号化することができる状況で、ある暗号文Cから平文Mを復号する
・選択暗号文攻撃(CCA) : 暗号文を平文にして返す復号オラクルを利用して、ある暗号文Cを直接的に復
号せずに平文Mを得る。暗号文Cを受け取る前のみにCCAできる場合をCCA1、受け取った後もCCAできる
場合をCCA2という
Plain RSA : 平文をそのまま暗号化する→CCA2を含め様々な脆弱性がある → パディング方式
パディング方式 : 平文にパディングをしてから暗号化する。復号後にパディングを除く。例) OAEP
Bleichenbacher attack
・パディング方式に対するCCA2の一種
・攻撃者はクライアントの暗号文を知った上で、適当な平文と組み合わせた暗号文をサーバーに送るこ
とでその暗号文が正しくパディングされているかどうかを知ることができる。これを繰り返すことでも
との暗号文に対応する平文を得る
12
Theft of RSA Private Keys
• 共通鍵の交換方式の例 : RSA、Diffie-Hellmanなど
• RSAの弱点 : もしサーバーの秘密鍵が盗まれたら、そのサーバー
のすべての通信が傍受される
• →交換方式を変える
• Diffie-Hellman鍵共有 : サーバーとクライアントが互いにランダムに決め
た数値をもとに共通鍵をつくり、両方を傍受してもそこからつくられ
る共通鍵を知ることは難しい
• →秘密鍵の安全性を高める
13
Diffie-Hellman Parameters
・サーバー証明書は、鍵交換アルゴ
リズムの指定についての情報が含ま
れないので、改ざんされていても分
からない
・ある鍵交換アルゴリズムにおける
パラメーターを別の鍵交換アルゴリ
ズムのパラメーターとして利用させ
ることで簡単に復号できる組み合わ
せがある
例) Wagner & Schneier attack
DHのパラメーター は素数なので、
RSAのパラメーターだとクライアント
に思わせれば から
は簡単に復号できる 14
Renegotiation
• TLSでは任意のタイミングで再度ハンド
シェイクをやり直(再ネゴシエーション)す
ことができる
攻撃者の手順
• クライアントの接続要求を傍受し、止めて
おく
• 自らサーバーと通信し、クライアントにさ
せたい操作をする
• 再ネゴシエーションが必要となるため、ク
ライアントから傍受した接続要求を送れば、
正しく認証される
適用例
• ショッピングサイトでログインせずに購入
手続きを進める。認証が必要なタイミング
でクライアントの接続要求を使ってクライ
アントに偽装する
15
SSL Profiles Part 6: SSL Renegotiation / DevCentral
https://devcentral.f5.com/articles/ssl-profiles-part-6-ssl-renegotiation
Triple Handshake
再ネゴシエーション脆弱性に対するパッチ : 再ネゴ
シエーション時に、クライアントに前回のFinished
メッセージを送らせることで同一性を証明する
なぜ安全か?: Finishedメッセージには共通鍵、証明
書からつくられたハッシュが含まれていて、同一の
Finishedメッセージにはならないはずだから
→Finishedメッセージが同じになれば良い
手順
・クライアントとサーバーの間に入りクライアント/
攻撃者間、サーバー/攻撃者間で同じ共通鍵を使うよ
うにする
・セッション再開ハンドシェイク時には証明書の確
認をせずにハンドシェイクを確立することを利用し
て同一のFinishedメッセージを手に入れる 16
A Few Thoughts on Cryptographic Engineering
https://blog.cryptographyengineering.com/2014/04/24/attack-of-week-triple-
handshakes-3shake/
Virtual Host Confusion
クラウドサーバーではひとつのIPアドレスで複数のドメインをホ
ストする(リバースプロキシ)
リバースプロキシが各ドメインのTLSのセッションキャッシュを
もっている
ひとつのTLS証明書でワイルドカードを使って複数のサブドメイ
ンをカバーしている
あるサブドメインのセキュリティは他に比べて低い
→これらを利用するとクライアントに対してセキュリティの低い
サブドメインを介して攻撃者のサーバーにリダイレクトさせたり
できる
17
Denial of Service
• TLSには一定の計算資源が必要
→サーバーに過剰な負荷をかけるDoS攻撃をTLSで行うのはひとつ
の有効な手段
18
Implementation Issues
• プロトコルが正しく指定されていても、そのとおりに実装され
るとは限らない
例)
• Python 2のHTTPクライアントの実装ではサーバー証明書の確認
がされていなかった
19
Usability
• プロキシを経由するとき、プロキシがもとのサーバーの証明書
を模造して一度復号し中身を確認してからまた暗号化してサー
バーと通信することがある
• このときクライアント側のユーザーは真の証明書ではないこと
に許諾をする
• このユーザーが許諾するという行動を誘発すれば悪意のあるプ
ロキシが通信を復号できる
20

More Related Content

Similar to RFC 7457 Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS)

SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向shigeki_ohtsu
 
ServiceStackの紹介
ServiceStackの紹介ServiceStackの紹介
ServiceStackの紹介wilfrem
 
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザインEiji Sasahara, Ph.D., MBA 笹原英司
 
CloudConductorのご紹介
CloudConductorのご紹介CloudConductorのご紹介
CloudConductorのご紹介cloudconductor
 
最新プロトコル HTT/2 とは
最新プロトコル HTT/2 とは最新プロトコル HTT/2 とは
最新プロトコル HTT/2 とはYukimitsu Izawa
 
OAuthのHolder of Key Token
OAuthのHolder of Key TokenOAuthのHolder of Key Token
OAuthのHolder of Key TokenYuichi Nakamura
 

Similar to RFC 7457 Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS) (8)

SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
 
ServiceStackの紹介
ServiceStackの紹介ServiceStackの紹介
ServiceStackの紹介
 
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
 
CloudConductorのご紹介
CloudConductorのご紹介CloudConductorのご紹介
CloudConductorのご紹介
 
最新プロトコル HTT/2 とは
最新プロトコル HTT/2 とは最新プロトコル HTT/2 とは
最新プロトコル HTT/2 とは
 
WebRTCとSFU
WebRTCとSFUWebRTCとSFU
WebRTCとSFU
 
2015-ShowNetステージ-BGPFlowspec
2015-ShowNetステージ-BGPFlowspec2015-ShowNetステージ-BGPFlowspec
2015-ShowNetステージ-BGPFlowspec
 
OAuthのHolder of Key Token
OAuthのHolder of Key TokenOAuthのHolder of Key Token
OAuthのHolder of Key Token
 

RFC 7457 Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS)

Editor's Notes

  1.  基礎 : http://www.maitou.gr.jp/rsa/rsa13.php  脆弱性 : http://inaz2.hatenablog.com/entry/2016/01/26/222303  暗号全般: http://ir.c.chuo-u.ac.jp/repository/search/binary/p/2246/s/2212/ Plain RSA : http://inaz2.hatenablog.com/entry/2016/01/15/011138 Bleichenbacher attack : https://crypto.stackexchange.com/questions/12688/can-you-explain-bleichenbachers-cca-attack-on-pkcs1-v1-5
  2. https://blog.visvirial.com/articles/284 https://qiita.com/okajima/items/036d7e751234f88fbe9a
  3. http://delivery.acm.org/10.1145/2390000/2382206/p62-mavrogiannopoulos.pdf?ip=157.82.169.221&id=2382206&acc=ACTIVE%20SERVICE&key=D2341B890AD12BFE%2E925D03907F1B22EF%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&__acm__=1539601821_108848a01f9124d6d56f6aa7049a9c97 https://tools.ietf.org/id/draft-mavrogiannopoulos-tls-cross-protocol-00.html Cross protocol attack WS-Attack by Wagner & Schneier : サーバーの証明書をいじって、DHのパラメーターをRSAだと思わせる→DHのパラメーターは素数pと何らかの数字gなので、それをもとにしたk^g mod pからkを求めるのは簡単 DROWN A Cross-Protocol Attack on the TLS Protocol (Mavrogiannopoulos) : ECDHのパラメーターをDHだと思わせる
  4. http://www.g-sec.lu/practicaltls.pdf
  5. Heatbleedもこれ
  6. https://security.stackexchange.com/questions/115762/how-is-it-possible-to-do-tls-through-proxy-without-anyone-noticing