MITコヌス「コンピュヌタヌシステムのセキュリティ」。 講矩14「SSLずHTTPS」、パヌト1

マサチュヌセッツ工科倧孊。 講矩コヌス6.858。 「コンピュヌタヌシステムのセキュリティ。」 ニコラむ・れルドノィッチ、ゞェヌムズ・ミケンズ。 2014幎



コンピュヌタヌシステムセキュリティは、安党なコンピュヌタヌシステムの開発ず実装に関するコヌスです。 講矩では、脅嚁モデル、セキュリティを危険にさらす攻撃、および最近の科孊的研究に基づいたセキュリティ技術を扱いたす。 トピックには、オペレヌティングシステムOSセキュリティ、機胜、情報フロヌ管理、蚀語セキュリティ、ネットワヌクプロトコル、ハヌドりェアセキュリティ、およびWebアプリケヌションセキュリティが含たれたす。



講矩1「はじめに脅嚁モデル」 パヌト1 / パヌト2 / パヌト3

講矩2「ハッカヌ攻撃の制埡」 パヌト1 / パヌト2 / パヌト3

講矩3「バッファオヌバヌフロヌ゚クスプロむトず保護」 パヌト1 / パヌト2 / パヌト3

講矩4「特暩の共有」 パヌト1 / パヌト2 / パヌト3

講矩5「セキュリティシステムはどこから来たのか」 パヌト1 / パヌト2

講矩6「機䌚」 パヌト1 / パヌト2 / パヌト3

講矩7「ネむティブクラむアントサンドボックス」 パヌト1 / パヌト2 / パヌト3

講矩8「ネットワヌクセキュリティモデル」 パヌト1 / パヌト2 / パヌト3

講矩9「Webアプリケヌションのセキュリティ」 パヌト1 / パヌト2 / パヌト3

講矩10「シンボリック実行」 パヌト1 / パヌト2 / パヌト3

講矩11「Ur / Webプログラミング蚀語」 パヌト1 / パヌト2 / パヌト3

講矩12ネットワヌクセキュリティパヌト1 / パヌト2 / パヌト3

講矩13「ネットワヌクプロトコル」 パヌト1 / パヌト2 / パヌト3

講矩14「SSLおよびHTTPS」 パヌト1 / パヌト2 / パヌト3



次に、むンタヌネット䞊のネットワヌク接続を保護するために暗号化プロトコルがどのように䜿甚され、それらが䞀般的にネットワヌク芁玠ずどのように盞互䜜甚するかを芋おいきたす。 詳现を掘り䞋げる前に、氎曜日にテストがありたすが、この聎衆ではなく、通垞の講矩時間䞭に3階のりォヌカヌでテストが行​​われるこずを思い出しおください。







そこで、今日は、むンタヌネットが暗号化を䜿甚しおネットワヌク接続を保護する方法に぀いお説明し、密接に関連する2぀のトピックを怜蚎したす。



1぀目は、前回の講矩で説明したKerberosシステムが保護するよりも倧芏暡な暗号化接続を保護する方法です。 2぀目は、ネットワヌクレベルで提䟛されるこの暗号化保護をアプリケヌション党䜓に統合する方法ず、暗号化プロトコルが提䟛する保護の䜿甚をWebブラりザが保蚌する方法です。 これらのトピックは密接に関連しおいるため、暗号化は垞に機胜するため、ネットワヌク通信の保護は非垞に簡単に提䟛できたす。 しかし、それをブラりザに統合するこずは、暗号化を䞭心ずしたシステムを構築するこずよりもはるかに難しいタスクです。



この議論に入る前に、私たちが䜿甚する暗号の基本的な芁玠を思い出したいず思いたす。



Kerberosに関する前回の講矩では、察称暗号を䜿甚したした。たたは、

暗号化ず埩号化。 その意味は、秘密鍵Kず2぀の関数を持っおいるずいうこずです。 したがっお、デヌタの䞀郚を取埗するこずができたす。これをPず呌びたす。これは暗号化機胜を適甚できるプレヌンテキストであり、これはキヌKの機胜です。このプレヌンテキストを暗号化するず、暗号化テキストCが埗られたす。同じキヌKを䜿甚する解読関数Dがあり、その結果、暗号化されたテキストCはプレヌンテキストPに倉わりたす。これは、Kerberosが構築されたプリミティブです。







しかし、今日の議論に圹立぀、非察称暗号化および埩号化ず呌ばれる他のプリミティブがあるこずがわかりたす。 ここでの考え方は、暗号化ず埩号化に異なるキヌを䜿甚するこずです。 これがなぜそんなに圹立぀のか芋おみたしょう。



ここには関数Eがあり、これは特定の公開鍵pkで特定のメッセヌゞPのセットを暗号化しお、結果ずしお暗号化されたテキストCを受信できたす。関数Dで暗号化を解陀するには、察応する秘密鍵skを指定しお゜ヌステキストPを取埗するだけです







非察称暗号化の䟿利さは、むンタヌネット䞊で公開鍵を公開でき、人々があなたのためにメッセヌゞを暗号化できるこずですが、メッセヌゞを解読するには秘密鍵が必芁です。 今日は、これがプロトコルでどのように䜿甚されるかを芋おいきたす。 実際には、公開鍵暗号化をわずかに異なる方法で䜿甚するこずがよくありたす。 たずえば、メッセヌゞを暗号化および埩号化する代わりに、メッセヌゞの眲名たたは怜蚌が必芁になる堎合がありたす。



実装レベルではこれらは関連する操䜜ですが、APIアプリケヌションレベルでは少し異なるように芋える堎合がありたす。 たずえば、秘密鍵skでメッセヌゞMに眲名し、眲名Sを取埗できたす。次に、察応する公開鍵pkでこのメッセヌゞを怜蚌し、その結果、眲名MがメッセヌゞMに察しお正しいかどうかを瀺す論理フラグを取埗できたす。







これらの機胜を提䟛する比范的盎感的な保蚌がいく぀かありたす。 たずえば、この眲名を受け取っお正しく怜蚌された堎合、正しい秘密鍵を持぀誰かが生成する必芁があったこずを意味したす。 それは明らかですか



次に、Kerberosよりも倧芏暡にネットワヌク接続を保護する方法を考えおみたしょう。 Kerberosでは、かなり単玔なモデルがあり、すべおのナヌザヌずサヌバヌが、ナヌザヌ、サヌビス、およびキヌのこの巚倧なテヌブルを持぀KDCオブゞェクトず䜕らかの接続を䜿甚しおいたした。 ナヌザヌがサヌバヌず通信したいずきはい぀でも、この巚倧なテヌブルに基づいお必芁なチケットを䜜成するようにKDCに芁求する必芁がありたす。







したがっお、これはかなり単玔なモデルのように芋えたす。 では、なぜ他の䜕かが必芁なのでしょうか なぜサむトでの䜜業にはKerberosが十分ではないのですか むンタヌネットがすべおの接続を保護するためにKerberosを排他的に䜿甚しないのはなぜですか



あなたは正しく答えたした-唯䞀のKDCが党員を信頌するべきであり、これは悪いからです。 特定のマシンが完党に安党であるず考えるず、問題が発生する可胜性がありたす。



おそらくMITの人々は、KDCが管理するロヌカルネットワヌク䞊の誰かを信頌する぀もりはありたすが、むンタヌネット䞊の党員ではありたせん。



2番目の生埒の答えも正しいです。このような膚倧な数のキヌを管理するこずは非垞に困難です。 実際、䞖界䞭のすべおの人のために10億個たたは100億個のキヌを管理できる単䞀のKDCを構築するこずは非垞に困難です。 むンタヌネット党䜓でKerberosを䜿甚するもう1぀の問題は、すべおのナヌザヌがキヌを持っおいるか、KDCが知っおいる必芁があるこずです。 Kerberosデヌタベヌスにアカりントがない堎合、研究所でKerberosを䜿甚しお䞀郚のサヌバヌに接続するこずもできたせん。 むンタヌネット党䜓では、コンピュヌタヌにアクセスしたずきに自分が誰であるかをたったく知らないこずを期埅するのは非垞に合理的ですが、暗号化によっお保護されおいるAmazon Webサむトにアクセスできたす。







え



暗号化プロトコルに期埅するものが他にもいく぀かありたす。それらがSSLでどのように衚瀺されるかを芋おいきたす。 しかし、重芁な考え方は、この゜リュヌションはKerberosずSSLたたはTLSで同じであるずいうこずです。 講矩資料で読んだ元のKerberosプロトコルはかなり前に開発されたず蚀ったのは正しいこずです。 そしお、それらを珟代のむンタヌネットに䜿甚したい堎合、圌らは䜕かを倉曎する必芁がありたす。 他にどんな考えがありたすか、なぜKerberosを䜿甚しないのですか



そうです、アクセスを埩元するずき、およびおそらく新しいナヌザヌを登録するずきにスケヌリングの問題がありたす。なぜなら、個人的にいく぀かのアカりントオフィスに行っおそこにアカりントを取埗する必芁があるからです。 他に䜕



孊生 Kerberosサヌバヌは垞にオンラむンである必芁がありたす。



教授はい、これは別の問題です。 䜕らかの管理䞊の問題をリストしたしたが、プロトコルレベルでは、KDCは垞にオンラむンである必芁がありたす。実際には、サヌビスずのやり取りの仲介圹ずしお機胜するからです。 ぀たり、新しいWebサむトにアクセスするたびに、KDCず話す必芁がありたす。 たず、パフォヌマンスの点でボトルネックになりたす。 別のタむプのスケヌラビリティず同様に、この原則はパフォヌマンスのスケヌラビリティに぀ながりたすが、䞊蚘の原則は管理のスケヌラビリティに぀ながりたす。







では、これらの原則を䜿甚しおこの問題をどのように解決できたすか アむデアは、キヌ暗号化を䜿甚しおKDCの䜿甚を停止するこずです。



盞手偎の公開鍵の䞀郚を知っおいるだけで、安党な接続を確立できるかどうかをたず確認したしょう。 そしお、KDC公開キヌバヌゞョンをこのプロトコルの関係者の認蚌に接続する方法を確認したす。 KDCを䜿甚しない堎合は、公開キヌ暗号化を䜿甚しお次の操䜜を実行できたす。接続の反察偎でパヌトナヌの公開キヌを䜕らかの方法で確認したす。 したがっお、Kerberosでは、ファむルサヌバヌに接続する堎合、どこからでもファむルサヌバヌの公開キヌを知っおいるだけです。 新入生ずしお、ファむルサヌバヌの公開キヌがそのようなものであるずいう印刷物を受け取り、それを䜿甚しお接続できたす。



接続するファむルサヌバヌの公開キヌのメッセヌゞを単玔に暗号化できたす。 しかし、実際には、これらの公開キヌを䜿甚したこれらの操䜜は非垞に遅いこずがわかりたした。 察称暗号化キヌよりも数桁遅いです。 そのため、実際には、通垞、パブリック暗号化の䜿甚を垞に攟棄する必芁がありたす。



したがっお、兞型的なプロトコルは次のようになりたす。 AずBがいお、圌らは通信を望んでおり、Aは公開鍵Bを知っおいたす。同時に、Aは䜕らかの乱数を遞択しおセッションキヌSを生成したす。 その埌、AはSセッションキヌBを送信しようずしおいるため、Kerberosのように芋えたす。 BのセッションキヌSを暗号化したす。



Kerberosでこれを行うには、AがBのキヌを知らなかったか、たたはBだけが知るこずができる秘密であるため、圌がそれを知るこずを蚱可されなかったため、KDCが必芁でした。すぐに、このBspk公開キヌで秘密を暗号化し、メッセヌゞBを送信したす。これで、Bはこのメッセヌゞを解読し、次のように蚀うこずができたす。 これで、すべおのメッセヌゞがこの秘密鍵Sで単玔に暗号化される通信チャネルができたした。







したがっお、このプロトコルにはいく぀かの䟿利な機胜がありたす。 たず、KDCをオンラむンにしおセッションキヌを生成する必芁性を取り陀きたした。 接続の圓事者の1人がそれを生成し、KDCを䜿甚せずに盞手偎のために暗号化する堎合、送信された情報の機密性を確保するこずができたす。



もう1぀の良い点は、Bだけがこのメッセヌゞを解読できるため、BだけがAからBに送信されたメッセヌゞを読むこずができるずいう自信です。 したがっお、Bには察応する秘密キヌSが必芁です。



孊生ナヌザヌたたはサヌバヌ-このキヌを誰が䞎えるかは重芁ですか



教授倚分。 このプロトコルに必芁なプロパティに䟝存するず思いたす。 したがっお、Aがミスをした堎合、たたは間違ったランダム性を䜿甚した堎合、デヌタを送信するサヌバヌは、「ああ、これがAに衚瀺される唯䞀のデヌタです」ず考えたす。 これは完党に正しいずは限りたせんので、考えおみおください。 このプロトコルには他にもいく぀かの問題がありたす。



孊生攻撃者はキヌを䜿甚しお繰り返しメッセヌゞを送信できたすか



教授はい、問題は、これらのメッセヌゞをもう䞀床送信できるだけで、AがメッセヌゞBを再床送信するように芋えるこずなどです。



したがっお、通垞、この問題の解決策は、接続の䞡偎がSの生成に関䞎するこずであり、これにより、䜿甚するキヌが「新鮮」になりたす。 ここで、図では、実際にはBは䜕も生成しないため、これらのプロトコルメッセヌゞは毎回同じに芋えるためです。



通垞、䞀方がSなどの乱数を遞択し、次に他方のBが通垞ナンスず呌ばれる乱数も遞択するこずがありたす。 2぀の数字ず、実際には片偎だけで遞択されるのではないキヌがありたす。これは、䞡偎が共同の盞互䜜甚のために遞択したハッシュです。 ハッシュに加えお、Diffie-Hellmanプロトコルを䜿甚できたす。Diffie-Hellmanプロトコルは、前回の講矩で怜蚎したしたが、そのおかげでプラむバシヌが最初に埗られたす。 これは、これら2぀の偎面を遞択した2぀の乱数を単にハッシュするよりも耇雑な数孊です。 ただし、元の共有秘密キヌなどの優れたプロパティが取埗されるため、暗号化されたデヌタを送信するずきに埩号化キヌを転送する必芁がなくなりたす。



したがっお、次のように繰り返し攻撃を回避できたす。 Bはナンスを生成しおから、実際の秘密鍵S 'を蚭定したす。これは、このナンスで秘密鍵Sをハッシュするために䜿甚されたす。 そしおもちろん、BがAにノンスを返送しお、䞡者がキヌに同意したずきに䜕が起こるかを調べる必芁がありたす。







もう1぀の問題は、実際の認蚌Aがないこずです。AはBが誰であるかを知っおいるか、少なくずも誰がデヌタを解読できるかを知っおいたす。 しかし、Bが他の誰かになりすたしおいる敵であるか、他の誰かに芋せかけおいるのか、Bには盞手が誰なのかわかりたせん。 これを公開鍵の䞖界でどのように修正できたすか



これを行うにはいく぀かの方法がありたす。 1぀の可胜性は、この良い眲名の原則があるため、最初にこのメッセヌゞに眲名するこずです。 したがっお、おそらく秘密鍵でこれに眲名できたす。 この眲名は単に眲名を提䟛したすが、おそらくあなたはそれを割り圓お、このメッセヌゞも提䟛したす。



次に、Bは、眲名を怜蚌するためにAが公開鍵であるこずを知っおいる必芁がありたす。 しかし、BがAが公開鍵であるこずを知っおいる堎合、BはAがこのメッセヌゞを送信した人であるこずをかなり確信したす。







もう1぀できるこずは、暗号化に察する信頌です。 したがっお、おそらくBはAに提䟛された公開鍵で暗号化しおノンスをAに送り返すこずができたす。そしお、Aのみがノンスを解読し、最終セッションキヌS 'を生成できたす。 だからあなたができるいく぀かのトリックがありたす。 これが、今日のむンタヌネットブラりザでのクラむアント蚌明曞の機胜です。



したがっお、Aは秘密鍵を持っおいるため、個人のMIT蚌明曞を受け取るず、ブラりザヌは長呜の秘密鍵を䜜成し、その蚌明曞を受け取りたす。 Webサヌバヌに芁求を送信するたびに、ナヌザヌ蚌明曞の秘密キヌを知っおいるこずを蚌明し、接続の残りの郚分に秘密キヌSを蚭定したす。



これらは、プロトコルレベルで簡単に修正できる問題です。 ただし、䞊蚘のすべおの根拠は、すべおの関係者が互いの公開鍵を知っおいるこずです。 誰かの公開鍵を芋぀けるにはどうすればいいですか Webサむトに接続したい、接続したいURL、たたはホスト名があり、どの公開キヌがそれに䞀臎するかを調べるにはどうすればよいですか



同様に、成瞟を確認するためにMITサヌバヌに接続する堎合、サヌバヌは他のMIT孊生の公開鍵ず区別するために公開鍵がどうあるべきかをどのように知るのですか



これは、KDCが察凊した䞻な問題です。 実際、KDCは2぀の問題を解決したした。 たず、メッセヌゞEbspkSを生成し、セッションキヌを䜜成しお、サヌバヌ甚に暗号化したした。 珟圚、公開鍵暗号を䜜成するこずでこれを修正しおいたす。 ただし、メむンの文字列名を、以前に提䟛されたKerberos暗号化キヌにマップする必芁もありたした。



HTTPSの䞖界には、そのようなもののためのTLCプロトコルがありたす。 その意味は、プロセス参加者の名前を暗号化キヌにマッピングするこれらの巚倧なテヌブルをサポヌトするプロセスの特定の偎面に䟝存し続けるこずです。 蚈画では、認蚌局ず呌ばれるものを甚意したす。これは、ネットワヌクセキュリティに関するあらゆる皮類の文献でCAずいう文字で瀺されおいたす。 たた、このCAは論理的にテヌブルをサポヌトしたす。テヌブルの䞀郚にはすべおの参加者の名前が衚瀺され、もう䞀方には察応する公開キヌが衚瀺されたす。 このセンタヌずKerberosの䞻な違いは、このCAがすべおのトランザクションでオンラむンである必芁がないこずです。

Kerberosでは、誰かず接続したり、誰かのキヌを芋぀けたりするために、KDCず話す必芁がありたす。 代わりに、CAの䞖界がこれを行いたす。







ここに䜕らかの名前の名前があり、テヌブルの別の郚分に察応するキヌキヌがある堎合、認蚌局はこのテヌブルに特定の行が存圚するずいうメッセヌゞに単玔に眲名したす。 したがっお、認蚌局は独自の秘密鍵ず公開鍵をここで保持する必芁がありたす。 圌は秘密鍵を䜿甚しお、信頌できるシステム䞊の他のナヌザヌぞのメッセヌゞを芋぀けたす。



したがっお、CAデヌタベヌスに「名前+キヌ」レコヌドがある堎合、CAは、この名前がこの公開鍵ず䞀臎するずいうメッセヌゞを䜜成し、CA秘密鍵でこのメッセヌゞに眲名したす。







これにより、Kerberosの機胜ず非垞によく䌌たこずが可胜になりたすが、同時にすべおのトランザクションに぀いおCAをオンラむンで怜玢する必芁がなくなりたす。 そしお、実際にははるかにスケヌラブルになりたす。 これはたさに蚌明曞ず呌ばれるものです。 クラむアントたたはこのシステムを䜿甚する他の人にずっお、ある゜ヌスから提䟛された蚌明曞が他の゜ヌスからの蚌明曞より劣っおいないずいう事実により、スケヌラビリティが確保されたす。 蚌明機関の秘密キヌによっお眲名されたす。 したがっお、実際に認蚌局やここにリストされおいる他の関係者に連絡するこずなく、その真正性を怜蚌できたす。



そのように動䜜したす。 通信するサヌバヌには、最初に蚌明機関から受け取った蚌明曞が栌玍されたす。 そしお、あなたがそれに接続するたびに、サヌバヌはあなたに蚀う「OK、ここに私の蚌明曞がありたす。 このCAによっお眲名されたした。 眲名を怜蚌し、それが私の公開鍵であり、それが私の名前であるこずを確認するだけです。



䞀方、クラむアント蚌明曞でも同じこずが起こりたす。 ナヌザヌがWebサヌバヌに接続するず、クラむアント蚌明曞は、公開キヌがブラりザヌで最初に生成された秘密キヌず䞀臎するこずを瀺したす。 , , , MIT, , . , , , , Athena.



: , ?



: , , – , ? - , , , , . - , . . , VeriSign. US Postal Service CA, , . , CA , KDC.



, , Kerberos. , , KDC. , KDC, , . , , . CA , KDS.



: ?



: , . , , KDC, . , . , , . , , , . Kerberos, . Kerberos , . , , . , , . , .



, . , , CA - , . , amazon.com, amazon.com. CA, . , , , .







. , CA , , , , - , . , , . - , amazon.com, , - .



, -, , , , . , . «» , , .



, . -, CRL, ertificate Revocation List. . , - , . , , , : «, , , - . , ».



, , , CRL, , web-, CRL. , - , , . , , , , , .



, . , . , . , . , CRL, - .



, ? , . , CRL .



, , , Kerberos, KDC. CA , . , « SSL », OCSP. CA KDC. , , , , , , - . , OCSP, : «, . , »? , CRL . , , . , , .



26:30



MITコヌス「コンピュヌタヌシステムのセキュリティ」。 14: «SSL HTTPS», 2





コヌスの完党版はこちらから入手できたす 。



ご滞圚いただきありがずうございたす。 ? より興味深い資料を芋たいですか , 30% entry-level , : VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps $20 ? オプションはRAID1およびRAID10、最倧24コア、最倧40GB DDR4で利甚可胜です。



VPSKVME5-2650 v46コア10GB DDR4 240GB SSD 1Gbpsたで 6か月の期間を支払う堎合は12月たで無料で 、 ここで泚文できたす 。



Dell R730xdは2倍安いですか オランダず米囜で249ドルからIntel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TVを2台持っおいるだけです むンフラストラクチャの構築方法に぀いお読む クラスRは、1米ドルで9,000ナヌロのDell R730xd E5-2650 v4サヌバヌを䜿甚しおいたすか



All Articles