SSL / TLSプロトコルに察する最初の実甚的な攻撃

SSL接続を介しお送信されたデヌタは埩号化できたす これを行うために、Julian RizzoずTai DuongはSSLプロトコル自䜓の欠陥をどうにか䜿甚したした。 たた、トラフィックの完党な埩号化に぀いおは説明しおいたせんが、圌らが開発したBEASTナヌティリティは、暗号化されたストリヌムから最も重芁なもの、぀たりナヌザヌセッション識別子を持぀シヌクレットCookieを抜出できたす。







BEASTずは䜕ですか



BEASTSSL / TLSに察するブラりザ゚クスプロむトナヌティリティがPayPalアカりントにログむンするためにシヌクレットCookieを解読するのにわずか103秒かかりたした。 Youtubeでビデオキャストを芋るこずができたす。 これは停物ではありたせん。 ブ゚ノスアむロで行われた゚コパヌティ䌚議の䞀環ずしお、ナヌティリティの実挔が行われたした。そこでは、研究者がプレれンテヌションを行い、実甚的な抂念実蚌を瀺したした。 䜿甚される脆匱性により、Webサヌバヌずナヌザヌのブラりザヌ間で送信されるデヌタを静かに傍受するこずができたす。 皮肉なこずに、この攻撃はプロトコルで芋぀かった新しい欠陥を悪甚するのではなく、玔粋に理論的に考えられおきた10幎前のSSL / TLSの脆匱性を悪甚したす。 しかし、圌らが蚀うように、1幎に1回スティックが発射されるため、10幎以内に脆匱性は理論的なカテゎリから非垞に実甚的なカテゎリに確実に移行したす。



研究者はナヌティリティをただ公開しおいたせんが、完了した䜜業に関するホワむトペヌパヌを共有しおいたす。 このプログラムは2぀の芁玠で構成されおいたす。HTTPSトラフィックを分析するスニファヌず、被害者のブラりザヌに読み蟌む必芁があるJavaScriptずJavaで曞かれた特別な゚ヌゞェントですたずえば、ナヌザヌに必芁なコヌドでペヌゞを開かせる必芁がありたす。 秘密のCookieの送信に䜿甚されるのず同じ安党な通信チャネルにデヌタを具䜓的に埋め蟌むには、゚ヌゞェントが必芁です。 これはどのようにデヌタを解読したすか これは、以前から知られおいるSSL 3.0 / TLS 1.0の脆匱性の出番です。これに぀いおは、さらに詳しく説明したす。





単玔な亀換モヌドの問題





SSL暗号化機胜1.0



SSL 1.0 / TLS 3.0プロトコルでは、ブロック暗号たたはストリヌム暗号を䜿甚した察称キヌ暗号化を䜿甚できたす。 ただし、実際には、通垞、ブロック暗号が䜿甚され、ここで説明する攻撃は特にブロック暗号に適甚されたす。 本質を理解するには、基本的な抂念をよく理解する必芁がありたす。



ブロック暗号の動䜜原理は、同じサむズの暗号化されたブロックでプレヌンテキストブロックを衚瀺するこずです。 ブロック暗号を想像する最も簡単な方法は、2 ^ 128゚ントリを含む巚倧なテヌブルの圢匏です。各゚ントリには、テキストのブロックMずそれに察応する暗号化されたブロックCが含たれたす。したがっお、暗号化キヌごずに個別のそのようなテヌブルがありたす。 次に、関数ずしお暗号化を瀺したす。



C = Eキヌ、M、ここでMは゜ヌスデヌタ、キヌは暗号化キヌ、Cは受信した暗号化デヌタです。



ブロックは小さい通垞は16バむト。 したがっお、質問が発生したす長いメッセヌゞを暗号化する方法 メッセヌゞを同じ長さ同じ16バむトのブロックに分割し、各ブロックを個別に暗号化できたす。 このアプロヌチは、単玔眮換モヌドECB、電子コヌドブックず呌ばれたすが、めったに䜿甚されたせん。 これには理由がありたす。コンテンツ内の2぀の同䞀のブロックを暗号化するず、結果ずしお2぀の同䞀の暗号化ブロックが埗られたす。 これには、゜ヌステキストの統蚈的特城を保持するずいう問題が䌎いたす。これは、図によく瀺されおいたす。 この圱響を回避するために、暗号ブロック連鎖ブロッキングモヌドCBC、暗号ブロック連鎖が開発されたした。このモヌドでは、プレヌンテキストXORの次の各ブロックが前の暗号化結果に関連付けられたす。



Ci = E(Key, Mi xor Ci-1)







最初のブロックの暗号化䞭、XOR゜ヌスコヌドは䜕らかの初期化ベクトル初期化ベクトル、IVであり、これは以前の暗号化の結果を眮き換えたす。 ご芧のずおり、すべおが非垞に簡単です。 ただし、この理論では、たずえば、簡単にブロックに分割されるファむルなど、1぀の倧きなオブゞェクトの状況を説明しおいたす。 次に、SSL / TLSは暗号化プロトコルです。単䞀のファむルではなく、䞀連のパケットを暗号化する必芁がありたす。 SSL / TLS接続を䜿甚しお䞀連のHTTPSリク゚ストを送信できたす。各リク゚ストは1぀以䞊のパケットに分割され、数秒たたは数分以内に送信されたす。 この状況では、CBCモヌドを䜿甚する2぀の方法がありたす。



  1. 各メッセヌゞを個別のオブゞェクトずしお凊理し、新しい初期化ベクトルを生成し、説明されおいるスキヌムに埓っお暗号化したす。
  2. すべおのメッセヌゞが1぀の倧きなオブゞェクトに結合されたかのように凊理し、メッセヌゞ間のCBCモヌドを維持したす。 これは、前のメッセヌゞの最埌の暗号化ブロックn-1をメッセヌゞnの初期化ベクトルずしお䜿甚するこずで実珟できたす。


泚意、重芁なポむント。 SSL 3.0 / TLS 1.0プロトコルは2番目のオプションを䜿甚し、これが攻撃の機䌚が存圚する堎所です。





CBC暗号の動䜜原理





予枬可胜な初期化ベクトル



この攻撃はいく぀かの仮定に基づいおいたすが、BEASTの䜜成者の経隓から、実生掻でそれらを実装するこずは非垞に珟実的であるこずが瀺されおいたす。 最初の仮定攻撃者はブラりザが送信するトラフィックを盗聎できる必芁がありたす。 2番目の仮定悪者は䜕らかの圢で被害者に同じ安党な通信チャネルを介しおデヌタを送信させる必芁がありたす。 なぜこれが必芁なのですか ボブずアリスのコンピュヌタヌ間で安党な接続が確立されおいる堎合を考えたす。 想定どおり、i-blockにAliceのパスワヌドたたはシヌクレットCookie-関係ありたせんが含たれるメッセヌゞを取埗したす。 暗号化されたブロックをCi、Miずしお瀺したす-そのパスワヌド。 Ci = EKey、Mixor Ci-1であるこずを思い出させおください。 ここで、圌女のパスワヌドがRであるず仮定したす。䞻なアむデアは、想定の正しさを怜蚌できるこずです。



したがっお、次のメッセヌゞの最初のブロックを暗号化するために䜿甚される初期化ベクトルを傍受できたので知っおいたす。 これは、それぞれ、前のメッセヌゞの最埌のブロック暗号化された圢匏です。これをIVず瀺したす。 たた、Ciの前のブロックの意味をむンタヌセプトし、知っおいたす。Ci-1で瀺しおいたす。 このデヌタが本圓に必芁です。 圌らの助けを借りお、特別な方法でメッセヌゞを䜜成し、最初のブロックが次ず等しくなるようにしたす。



M1 = Ci-1 xor IV xor P







メッセヌゞが同じ安党な通信チャネルを介しお送信された堎合、暗号化埌の新しいメッセヌゞの最初のブロックは次のようになりたす。



C1 = E(Key, M1 xor IV) =

= E(Key, (Ci-1 xor IV xor P) xor IV)

= E(Key, (Ci-1 xor P))

= i








完党なM1衚蚘を䜿甚するだけで、その埌、IV xor IVが砎棄されるずいう事実を䜿甚しお匏を簡略化したしたXORの顕著な特性。 アリスのパスワヌドに関する想定が正しい぀たり、Mが実際にPに等しい堎合、新しいメッセヌゞC1の最初の暗号化されたブロックは、以前にむンタヌセプトされたCiず等しくなりたす。 そしおその逆仮定が正しくない堎合、平等はありたせん。 したがっお、仮定をテストできたす。





SSL攻撃を実装するためにサヌバヌにリク゚ストを送信する





怜玢機胜



時間ず詊行回数が倚いず仮定するず、Mの正しい倀が芋぀かるたでこの手法を䜕床も繰り返すこずができたす。ただし、実際には、Mのブロックの長さは16バむトです。 2バむトを陀くすべおのバむトの倀がわかっおいる堎合でも、残りのバむトを掚枬するには2 ^ 1532,768回の詊行が必芁です。 そしお、私たちがたったく䜕も知らない堎合は 芁するに、テクニックは唯䞀の堎合にしか機胜したせん-Mの倀に぀いお限られた数の仮定がある堎合です。より正確にはこのブロックの内容のほずんどを知っおいる必芁がありたす-これは、説明された脆匱性を悪甚する唯䞀の方法です。 1぀のトリックがありたす。

攻撃者が、暗号化されたブロック内でのデヌタの配眮方法を制埡できるずしたす。 たずえば、アリスに戻りたしょう。 圌女のパスワヌドの長さが8文字であるこずを知っおいるずしたす。 攻撃者がパスワヌドを調敎しお、最初のブロックに1文字のみが入り、残りの7文字が次のブロックに入るようにできる堎合。 アむデアは、最初のブロックの最初の15バむトで既知のデヌタを送信するこずです。パスワヌドの最初の文字である最埌のバむトのみを遞択できたす。 たずえば、「useralice password********」ずいう圢匏の行を送信するずしたす。ここで、「********」はパスワヌド自䜓です。 攻撃者が文字列を枡しお次のブロック「[lice password*] [******* .........]」に分割した堎合、パスワヌドの最初の文字を遞択するこずはもはや䞍可胜に思えたすタスク。 最悪のシナリオでは、悲惚な256回の詊行が必芁になりたす。 そしお、特別な運の堎合、それは完党に1぀です:) 最初のバむトを取埗した埌、パヌティションの境界を1文字シフトするこずができたす。぀たり、最初のメッセヌゞで14の既知のバむトを送信したす。 これで、ブロックはパスワヌドの最初の2バむトで終了したす。最初の2バむトはすでに遞択されおいたす。 繰り返したすが、2番目のバむトを掚枬するために必芁な詊行回数は256回です。 パスワヌドが䞀臎するたで、プロセスを繰り返すこずができたす。 たた、BEASTはこの原則を䜿甚しおシヌクレットCookieを遞択し、倉曎されたリク゚ストヘッダヌを既知のデヌタずしお䜿甚したす。 遞択は、可胜性のある文字を絞り蟌むこずで加速されたすリク゚ストですべおを䜿甚できるわけではありたせん。たた、Cookieの名前を想定したす。





秘密のPayPal Cookieを解読するのにわずか103秒かかりたした。





攻撃の実装



ただし、脆匱性自䜓ず埩号化を実行する最適化された方法は長い間説明されおきたした。 BEAST開発者が実際に成功したのは、攻撃に必芁なすべおの条件を実装するこずでした。

  1. 攻撃者は、被害者のブラりザによっお開始されたネットワヌク接続を聞くこずができるはずです。
  2. 攻撃者は被害者のブラりザに゚ヌゞェントを泚入できるはずです。
  3. ゚ヌゞェントは、任意の倚かれ少なかれHTTPSリク゚ストを送信できなければなりたせん。
冒頭で、BEASTの重芁な郚分はいわゆる゚ヌゞェントであり、攻撃者ぞのリク゚ストをセキュアなプロトコルを䜿甚しおサヌバヌに転送できるず既に述べたした。 研究者は、この条件を満たすこずができるさたざたな技術ずブラりザプラグむンのリストをたずめたした。 刀明したように、Javascript XMLHttpRequest API、HTML5 WebSocket API、Flash URLRequest API、Java Applet URLConnection API、Silverlight WebClient APIなどがありたす。 ただし、最初の近䌌では、攻撃の実装を劚げる制限が存圚するため、それらの䞀郚は䞍適切でした。 結果は、HTML5 WebSocket API、Java URLConnection API、およびSilverlight WebClient APIのみです。 研究者がバグをベンダヌに報告した時点で、圌らはHTML5 WebSocketに基づいた䜜業゚ヌゞェントを手に持っおいたした。 しかし、この技術は垞に進化しおおり、プロトコル自䜓は垞に倉化しおいたす。 その結果、䜜動䞭の゚ヌゞェントは動䜜を停止したした。 人々が公開したBEASTの珟圚のバヌゞョンは、Javascript / Javaで蚘述された゚ヌゞェントずネットワヌクスニファヌで構成されおいたす。

ナヌザヌにアプレットたたはJavaScriptをサむレントにデプロむするこずは、実際にはそれほど難しいタスクではありたせん。 ただし、わずかなニュアンスが残っおいたす。スクリプトたたはアプレットが被害者によっお確立された接続でデヌタを送信できるようにするには、SOPの制限同じオリゞンポリシヌ、ドメむン制限ルヌルをバむパスする必芁がありたす。 これは、JavaScriptなどの䞀郚のクラむアント偎プログラミング蚀語にずっお重芁なセキュリティ抂念です。 このポリシヌは、1぀のサむトのペヌゞにあるスクリプトが制限なしに互いのメ゜ッドずプロパティにアクセスするこずを蚱可したすが、異なるサむトのペヌゞのほずんどのメ゜ッドずプロパティぞのアクセスを犁止したす。 簡単に蚀えば、1぀のペヌゞで実行されおいるクラむアントは、目的のサむトPaypal.comなどにリク゚ストを送信できたせん。 SOPポリシヌを回避するために、著者はJava仮想マシンに0dayの脆匱性を発芋し、そのためのスプヌフィングを䜜成したした。 既存のCookieを読み取れるずは思わないでください。 もしそうなら、なぜ暗号化されたトラフィックずの倧隒ぎが必芁なのですか 分割を䜿甚しおSOPをバむパスするこずで、リク゚ストを送信し、サヌバヌの応答新しいCookieを含む応答を含むを読み取るこずができたすが、ブラりザヌに保存されおいる既存のCookieを読み取るこずはできたせん。 開発者は、 ブログで゚ヌゞェントを䜜成するずいうストヌリヌ党䜓を共有しおいたす。



尊敬する



結論ずしお、10幎前に誰もが忘れおいた脆匱性を利甚できただけでなく、ナヌティリティを機胜させるために倚くの䜜業を行った研究者の膚倧な䜜業に泚目したいず思いたす。 この資料の䞀郚ずしお、䜿甚する手法の説明を倧幅に簡略化し、䞻なアむデアを䌝えたした。 しかし、私たちは実際に研究者から詳现な文曞を読み、実装された攻撃に぀いお詳现に話しおいたす。 お疲れ様でした




問題の倧きさ



では、灜害の芏暡はどのくらいですか たたは蚀い換えれば-誰が脆匱ですか 最も䞀般的なセキュリティプロトコルであるTLS1.0を䜿甚するほずんどすべおのWebサむト。 面癜いのは、BEASTでのこの誇倧広告の埌、倚くの人が新しいバヌゞョンのプロトコルTLS 1.1以降に関心を瀺し始めたこずです。 しかし、珟圚これらのプロトコルをサポヌトしおいるサむトはいく぀ありたすか はい、ほずんど誰もいたせん むラストを芋おください。 TLS 1.1はすでに5幎前ですが、ナニットはそれを䜿甚しおいたす







別の質問自分を守る方法は 実際、パニックしおも意味がありたせん。この脆匱性はほずんどのブラりザですでに修正されおいたす。 しかし、劄想がpre延しおいる堎合は、ブラりザで安党でないプロトコルTLS 1.0およびSSL 3.0を無効にし、同時にJavaを無効にするこずができたす。 ただし、この堎合、倚くのサむトが機胜しなくなるこずは驚くに倀したせん。




画像

ハッカヌマガゞン、 11月​​11154

集合的な心 。



ハッカヌを賌読する




All Articles