安全ではない再ネゴシエーション
再ネゴシエーション: 一度 SSL セッションを張ったときに、もう一度ネゴシエーションをすること
再ネゴシエーションを使った攻撃
-> クライアントと攻撃者のリクエストをミックスできる。
問題点: 攻撃者が犠牲者の 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