プロフェッショナル SSL/TLS ~ プロトコルに対する攻撃 ~

September 26, 2017

安全ではない再ネゴシエーション

再ネゴシエーション: 一度 SSL セッションを張ったときに、もう一度ネゴシエーションをすること

再ネゴシエーションを使った攻撃

f:id:shiro_kochi:2018××××××××:plain:w100:left f:id:shiro_kochi:2018××××××××:plain:w100:left

-> クライアントと攻撃者のリクエストをミックスできる。

問題点: 攻撃者が犠牲者の ID で任意のリクエストを発行できてしまうこと。(攻撃者が他人の ID で再ネゴシエーションできてしまうこと)

BEAST

  • 暗号化方式

    • CBC: はじめに Initialization Vector を用いて、1 ブロックを暗号化し、1 ブロックが暗号化された結果を用いて 2 ブロック目を用いる。( TLS 1.0 )

-> つまり、2 ブロック目や 3 ブロック目は攻撃者に見えている。

圧縮再度チャネル攻撃

圧縮オラクル: 推測値 ( Passwward ) を犠牲者のデータと混成して圧縮し、もし、圧縮が成功したら、実際に推測値が犠牲者の文字列に含まれる。

CRIME: TLS の圧縮 ( HTTP ヘッダ狙い )
-> TLS の圧縮はすぐサポートされなくなったので、この攻撃は使えなくなってしまった。

BREACH: HTTP の圧縮 ( ヘッダではなくボディ )
-> リクエストレートの制限、長さを隠す ( パディング )、CSRF トークンをマスク、部分的に圧縮しない

Lucky 13

Lucky 13: パディングオラクルを用いた攻撃方法

パディングオラクル:
パディングは 1 バイトの場合 0x01 2 バイトの場合 0x02 0x02 と詰める。
パディングエラーが発生したかどうかを判別できれば、適当に最後の 1 バイトが 0x01 となるように 256 通りのリクエストを送り、パディングエラーが発生しなかった場合は 0x01 となる暗号化前文がわかる。
-> 「パディングエラーが発生していない」という状態を知るすべが Lucky 13


 © 2023, Dealing with Ambiguity