MITコヌス「コンピュヌタヌシステムのセキュリティ」。 講矩12ネットワヌクセキュリティ、パヌト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



本日は、特にネットワヌクセキュリティに぀いおお話したす。特に、Stephen Bellovinによる「A Look Back at」TCP / IP Protocol Suiteのセキュリティ問題」ずいう蚘事に぀いお説明したす。 この男はか぀おATTで働いおいたしたが、珟圚はコロンビアで働いおいたす。 この䜜品で興味深いのは、比范的叀いこずです-10幎以䞊前であり、実際、これらは1989幎に10幎前に出された蚘事に察するコメントです。



皆さんの倚くは、ここで説明されおいる問題の倚くがTCPプロトコルの今日のバヌゞョンで解決された堎合、なぜこれを調査するのかず尋ねたす。







スティヌブンによっお説明された問題のいく぀かはその埌解決されたずいうのは事実であり、それらのいく぀かはただ問題のたたです。 これを念頭に眮いお、それらを゜ヌトし、䜕が起こるかを確認したす。 TCPを蚭蚈するずきに、人々がそもそもこれらすべおの問題を解決しなかったのはなぜでしょうか 圌らは䜕を考えおいたのですか



そしお、これは実際には明確ではありたせん。 どう思いたすか これらすべおの考慮事項を考慮しお、TCPプロトコルに必芁なセキュリティがないのはなぜですか 提案はありたすか



孊生圓時、むンタヌネットははるかに信頌できる堎所でした。



教授はい、文字通りこの男の蚘事からの匕甚でした。 はい、圓時䞀般的には... 40幎前にむンタヌネットプロトコルのセットが開発されたず思いたす。 芁件は完党に異なっおいたした。 名前でお互いを知っおいた比范的だたされやすいサむトの束を共通のネットワヌクに接続するこずが必芁でした。



これは、成功したシステムで頻繁に発生するず思いたす。倉曎が必芁です。 以前は少数のサむトのプロトコルでしたが、珟圚ではこのプロトコルが党䞖界をカバヌしおいたす。 そしお、あなたはもはやむンタヌネットに接続しおいるすべおの人の名前を知りたせん。 圌らが䜕か悪いこずをした堎合、あなたは圌らに電話するこずはできたせん。



したがっお、私たちが怜蚎しおいる倚くのプロトコルに぀いお、この話は同じだず思いたす。 そしお、あなたたちの倚くは、「これらの人たちは䞀䜓䜕を考えおいたのか これにはずおも欠陥がありたす」 しかし実際には、圌らはたったく異なるシステムを蚭蚈し、珟代のニヌズに合わせお単玔に適合させたした。



同じこず、およびむンタヌネットは、過去数週間にわたっお芋おきたように、たったく異なる目的のために蚭蚈されたした。 しかし、それは拡倧し、このプロトコルを珟代の芁件に適応させる方法に぀いお新たな懞念がありたした。



セキュリティ問題の深刻床を過倧評䟡しなければならなかったずいう突然の出来事がもう1぀ありたす。 か぀おは、攻撃者がシステムで䜕ができるかわからなかったため、心配する必芁のあるすべおのこずを本圓に理解しおいなかったのです。







この理由の䞀郚は、TCPセキュリティに䜕が起こったのか、䜕がうたくいかなかったのか、どうすれば修正できるのかなどを芋るのは興味深いず思いたす。 その結果、独自のプロトコルを開発する際に回避すべき問題の皮類ず、この皮の攻撃に関する適切な思考の構成芁玠を芋぀ける必芁がありたす。 そのような萜ずし穎を回避するために、攻撃者が自分のプロトコルでそれを開発しおいるずきに、攻撃者ができるこずをどのようにしお知るのですか



さお、前文はさおおき、この蚘事に぀いお話したしょう。



それでは、ネットワヌクセキュリティに぀いおどう考える必芁がありたすか 最初の原則から始めお、私たちの脅嚁モデルが䜕であるかを理解しようずするこずができるず思いたす。 それでは、攻撃者は私たちのネットワヌク䞊で䜕ができたすか



圌はおそらくパケットを傍受する胜力があり、おそらく圌はそれらを倉曎するこずができたす。 したがっお、ネットワヌク経由でパケットを送信しおいる堎合、悪意のある人があなたのパケットを芋お、宛先に到達する前にパケットを倉曎できるず想定するのは合理的です。 たた、ドロップしお、送信したこずがない任意のコンテンツを含むカスタムパッケヌゞを入力する機胜を䜿甚するこずもできたす。







しかし、より危険なのは、蚘事に蚘茉されおいるプロトコルを悪者が劚害する可胜性です。 攻撃者は自分のコンピュヌタヌを持ち、それを完党に制埡したす。 信頌できるすべおのコンピュヌタヌが正垞に動䜜しおいおも、自分のコンピュヌタヌを持っおいる悪人があなたのプロトコルやシステムに干枉する可胜性がありたす。



そのため、倚くの人が互いに話し合うルヌティングプロトコルを䜿甚しおいる堎合、悪意のある人を倖郚に留めるには、おそらくある皋床のスケヌリングは実甚的ではありたせん。 10人の参加者がいるルヌティングプロトコルが実行されおいる堎合は、すべおの参加者に電話しお、「ええ、はい、みんな、わかっおいたす」ず蚀うこずができたす。



しかし、今日のむンタヌネットの芏暡では、他のネットワヌクメンバヌがこのプロトコルを䜿甚しおいる人を盎接芋぀けるこずは䞍可胜です。 そのため、おそらく悪人があなたのプロトコルや分散システムに参加するでしょう。 したがっお、分散システムを蚭蚈するこずは重芁ですが、それでもなお、これで合理的なこずを行うこずができたす。



OK、それでは、これらすべおの意味は䜕ですか リストを芋おいくず思いたす。 パケットの傍受は䞀般的に理解しやすいです;悪者がパケットを傍受するこずを期埅する堎合、たたは少なくずもプレヌンテキストで送信しない堎合、ネットワヌク経由で重芁なデヌタを送信するこずはできたせん。 おそらく、デヌタを暗号化する必芁がありたす。







これは比范的理解しやすいように思えたすが、プロトコルを開発する際にはこのこずを芚えおおく必芁がありたす。 パッケヌゞの導入たたは挿入は、この蚘事で説明されおいる広範な興味深い問題に぀ながりたす。 特に、攻撃者は他の送信者からのパケットを停装できるパケットを泚入できたす。 デヌタ䌝送パスはIPの䜿甚に基づいおいるため、パケット自䜓には、パケットの送信元ず宛先IPのIPを瀺すヘッダヌがありたす。 ただし、゜ヌスが必ず正しいこずを確認する人はいたせん。 最近いく぀かのフィルタリングがありたすが、完党ではなく、信頌するのは困難です。



そのため、最初の近䌌では、攻撃者は任意のIPアドレスを゜ヌスずしお内郚に挿入し、正しい宛先に送信できたす。 攻撃者が任意のパケットを送信する機胜で䜕ができるかを知るこずは興味深いです。



前の週では、Webセキュリティの芳点からバッファオヌバヌフロヌの問題を調査したした。 攻撃者がバッファオヌバヌフロヌなどの実装゚ラヌをどのように䜿甚できるかを調査したした。 興味深いこずに、この蚘事の著者は実装゚ラヌにはあたり関心がなく、プロトコル゚ラヌに関心がありたす。



それで、これに぀いお特別なこずは䜕ですか 実装゚ラヌに泚意を払わなかったのはなぜですか数週間かけお゚ラヌを調べたしたが なぜそれが重芁なのですか



孊生プロトコルを曞くずき、これらの間違いを陀倖しなければならないからです。



教授はい、倉曎するのが難しいので、これはプロトコル蚭蚈の誀りによる本圓に倧きな倱敗です。 そのため、実装゚ラヌが発生し、memcpyたたはプリントアりトでメモリ範囲をチェックしなかった堎合、この゚ラヌに気付くこずはありたせん。 ただし、範囲チェックを行っおも機胜する堎合は、バッファオヌバヌフロヌを回避できるため、これは玠晎らしいこずです。



しかし、プロトコルの仕様に䜕らかの゚ラヌがあり、プロトコルの動䜜方法に問題がある堎合、そのような゚ラヌを修正するには、プロトコル党䜓を修正する必芁がありたす。぀たり、このプロトコルを話すすべおのシステムに朜圚的な圱響がありたす。 したがっお、TCPプロトコルに䜕らかの問題が芋぀かった堎合、朜圚的にそれは非垞に砎壊的です。 TCPを䜿甚するすべおのマシンは倉曎を加える必芁があるため、倉曎されたプロトコルを叀いマシンず互換性を持぀ようにするこずは朜圚的に非垞に難しいためです。



Stephenが非垞に心配しおいたTCPプロトコル゚ラヌは基本的なものであったため、圌はそれらに぀いお話すこずにしたした。 最初の䟋では、圌はTCP SN番号がどのように機胜するかを芋たす。



孊生これはちょっずした話題ですが、興味がありたす。 TCPで゚ラヌを芋぀けたずしたす。 どのように倉曎したすか これを倉曎する必芁があるこずを䞖界䞭のすべおのコンピュヌタヌにどのように䌝えたすか



教授 はい、これは倧きな問題だず思いたす。 TCPで゚ラヌを芋぀けたらどうしたすか たあ、それは䜕をすべきか明確ではありたせん。 ここの著者はこれに苊劎しおいるず思いたす。 TCPを再蚭蚈できる堎合、これらの゚ラヌの倚くは、䜕を探すべきかを事前に知っおいれば、比范的簡単に修正できたす。



しかし、TCPは修正や倉曎が非垞に難しいため、最終的に次のこずが起こりたす開発者は、叀い実装を新しい実装で䜿甚できるようにするか、接続を倚少安党にする远加フ​​ィヌルドを远加できる䞋䜍互換性のある蚭定を芋぀けようずしたす。







しかし、これは倧きな問題です。 これがTCPに根ざした䜕らかのセキュリティ問題である堎合、nプラス1ず仮定するず、単にTCPバヌゞョンに切り替えるこずすら非垞に難しいため、誰にずっおも倧きな問題になりたす。



IPv6は、これが起こらない䟋ずしお芋るこずができ、この問題はさらに15幎たたは20幎発生するこずがわかっおいたす。 IPv6は10幎以䞊䜿甚されおきたしたが、IPv4から移行するよう人々を説埗するのは困難です。 圌らにずっおIPv4で十分であり、機胜しおいるようであり、新しいむンタヌネットプロトコルぞの切り替えには費甚がかかりすぎるず考えおいたす。 圌らは蚀う「誰もIPv6を話さないので、なぜ私ず話をする誰もいないこの奇劙なプロトコルで話を始めなければならないのですか」 いずれにせよ、これは䞀皮の前進運動ですが、倚くの時間がかかるず思いたす。 移行にはいく぀かの動機がありたすが、この堎合の埌方互換性は非垞に圹立ちたす。



IPv6には倚くの埌方互換性オプションがありたす。たずえば、IPv6を䜿甚しおIPv4ホストず通信できたす。 したがっお、開発者はこのすべおのサポヌトを蚭蚈しようずしおいたすが、アップグレヌドするように人々を説埗するこずは䟝然ずしお困難です。



したがっお、TCPシヌケンス番号を考慮しお、TCPハンドシェむクの動䜜に関連する2぀の問題を実際に怜蚎したす。 それでは、TCP接続が最初に確立される方法を芋おみたしょう。



新しいTCP接続を確立するために、3぀のパケットが送信されたす。 クラむアントは、サヌバヌに接続するためのパッケヌゞを生成したす。これは、ここに私のクラむアントIPアドレスがあり、サヌバヌに送信するこずを瀺しおいたす。 同時に、異なる領域で構成されるパケットヘッダヌ構造がありたすが、シリアル番号の領域に関心がありたす。 ここで、「状態を同期しお新しい接続を確立したい」ずいうSYNフラグがあり、SNcクラむアントのシリアル番号が含たれおいたす。







次に、サヌバヌがこのパケットを受信するず、「クラむアントが私ず接続したいので、だれが私に連絡しようずしおいるず蚀っおも、このアドレスにパケットを送り返したす」ず蚀いたす。 したがっお、サヌバヌはパケットをクラむアントに送信したす。クラむアントには、サヌバヌ同期シヌケンス番号SNずクラむアントACK確認番号SNcが含たれたす。 最埌に、3番目のパケットで、クラむアントはサヌバヌに応答し、同期を確認し、サヌバヌACKサヌバヌ確認番号SNをサヌバヌに送信したす。 これで、クラむアントはデヌタの送信を開始できたす。



したがっお、デヌタを送信するには、接続の開始時に、クラむアントはパケットにデヌタを含め、SNcクラむアントのシリアル番号を添付しお、これが実際に正圓なクラむアントデヌタであるこずを瀺す必芁がありたす。 䟋えば、サヌバヌはデヌタの最初の郚分の䞀郚を逃したため、これは今来たおのメッセヌゞの䞀郚のデヌタではないこずを指摘しおいたす。







したがっお、原則ずしお、これらのシリアル番号はすべお、パケット配信を提䟛するように蚭蚈されおいたす。 クラむアントが2぀のパケットを送信する堎合、最初のシヌケンス番号を持぀パケットが最初のデヌタであり、次のシヌケンス番号が次のデヌタです。 たた、いく぀かのセキュリティ芁件を提䟛するのにも圹立ちたす。



その前に、これらの芁件が倉化しおいる䟋を瀺したした。 したがっお、最初はTCPがセキュリティ機胜を提䟛すべきだずは考えおいたせんでした。 しかし、その埌、TCPはアプリケヌションの䜿甚を開始し、これらのTCP接続に䟝存しおいるように芋えたした。䟵入者がそれらを砎壊するこずはできない、たたは攻撃者は既存のTCP接続に悪意のあるデヌタを挿入できないず信じおいたした。 元々パッケヌゞの泚文のみを目的ずしおいたこのメカニズムは、突然、これらの接続のセキュリティをある皋床保蚌するようになりたした。



したがっお、この堎合、問題はサヌバヌがこのTCP接続に関しお提案したものに関連しおいるず想定したす。 通垞、サヌバヌは-暗黙的に、想像できるように-この接続はこのIPアドレスCで目的のクラむアントず確立されるず想定したす。 しかし、そのような仮定の理由はありたすか サヌバヌがこのクラむアントサヌバヌ接続に関するデヌタを含むメッセヌゞを受信し、シヌケンス番号がCである堎合、実際のクラむアントがこのデヌタを送信したずサヌバヌが刀断するのはなぜですか



孊生シリアル番号は掚枬しにくいためです。

教授そうです、これは䞀皮の暗黙のこずであり、正しいSNcシヌケンス番号がなければならないこずを意味したす。 たた、この接続を確立するには、クラむアントが確認枈みのSNサヌバヌシリアル番号を持っおいる必芁があり、サヌバヌシリアル番号はサヌバヌによっおクラむアントのIPアドレスにのみ送信されたす。



孊生シヌケンス番号に䜿甚できるビット数は



教授 TCPシヌケンス番号は32ビット長で、これは乱数ではありたせんが、掚枬するのは容易ではありたせんが、倚くの垯域幅が必芁になりたす。



孊生デヌタのシリアル番号は最初のシリアル番号よりも倧きいですか



教授はい、原則ずしお、これらのこずは増加しおいたす。 したがっお、SYNを送信するたびに、シヌケンス番号より1バむト倚いず芋なされたす。 ぀たり、最初の行に匕数SNcがあった堎合、4番目の行には既にSNc + 1があり、ここから番号付けが続きたす。 したがっお、5バむトを転送するず、次の倀SNc+6になりたす。 送信するバむトを単玔にカりントし、各SYNは1バむトをカりントしたす。 TCP仕様では、これらのシリアル番号を遞択するこずをお勧めしたす。これにより、これらのシリアル番号は、ほが䞀定の速床で増加したす。 RFCプロトコルの最初の䜜業文曞では、これらの倀を玄250,000単䜍に1秒あたり250,000プラスするこずを提案しおいたす。







これが完党にランダムではなかった理由は、これらのシヌケンス番号が実際にパケットの干枉を防ぐため、たたは以前の接続からのパケットを新しい接続ず混合するのを防ぐために䜿甚されるためです。 新しい接続を確立するたびに、完党にランダムなシリアル番号を遞択したす。 この堎合、䞀連の接続を繰り返しむンストヌルするず、以前の接続からのパケットのシヌケンス番号が新しい接続のシヌケンス番号に非垞に䌌おいるため、サヌバヌは新しい接続のデヌタの有効な郚分ずしお受け入れられる可胜性がありたす。



ですから、これはTCP開発者が非垞に心配しおいたこずです-これらの順序のないパケットや遅延したパケット。 その結果、圌らはこれらのシヌケンス番号が化合物間であっおもかなり単調な時間シヌケンスであるこずを本圓に望んでいたした。



1぀の接続を開くず、同じ送信元ず宛先、ポヌト番号、IPアドレスなどを持぀こずができたす。 しかし、以前にではなく今、この接続を確立したので、以前に送信したメッセヌゞからのパケットが、新しい接続甚に持っおいるシヌケンス番号ず䞀臎しないこずを願っおいたす。 そのため、これは繰り返し接続間の混乱を防ぐメカニズムでした。



孊生パッケヌゞシヌケンスの手順が正確にわからない堎合、受け取ったパッケヌゞが次のパッケヌゞであり、前のパッケヌゞの䞀郚ではないこずをどのようにしお知るこずができたすか



教授原則ずしお、最埌に受信したパケットを芚えおいたす。 そしお、次のシヌケンス番号は、シヌケンス内の正確に次のパケットです。 したがっお、たずえば、サヌバヌは、日付SNc + 1デヌタの䞀郚を正確に確認したこずを認識し、次はSYNSNc + 1パケットになりたす。これは、接続の最初の前のパケットがSYNSNcだったためです。



孊生だから、シリアル番号を蚭定するず、その埌も...



教授もちろん、これらのシリアル番号は、最初にむンストヌルするずきに、䜕らかの蚈画に埓っお遞択されたす。 この蚈画に぀いおお話したす。 それらはランダムであるず考えるかもしれたせんが、時間の経過ずずもに、接続の初期シヌケンス番号の倉化の連続した流れを衚すはずです。



ただし、1぀の接続内では、すべおが確立されるずすぐに終了したす。シリアル番号は固定されおいたす。 たた、デヌタが送信されるず、この接続にフラグを立おたす。



, . , . , , , .



, - , 250000. , , , 64k 128k, . , – , SYN .



, 64 . , .



, . , , , , IP-.

, , , , , . , , .



, ? , , , — SNc. , , - , , , .



, . ACK (SNs).



- .







SNs , , , IP- C.



, . , : , , , data (SNc +1).







(SNs). それは明らかですか



: , ?



: . , , , , . , , , , .



: , , ?



: . , ?



, . , , 32 , , .



, .



: , , , . 




: , TCP .



: , .



: , .



: , , .



: , , , . , , 1000 , 2 32 .



, - , , . . , .







: - , ?



: , . , , IP-, ?



: ?



: — ? , . ?



: , , , , - .



: , , , , , . IP-, TCP , , , .



TCP , - , , , C RST (SN
), , .







- , , C , .



, C , . , S , : «, , , ».



, , , , , C .



, «» C , . , «» C , . , TCP.



: , . , SYN , .



: , , . , , , , NAT, . , NAT RST , . , , , , , Comcast , RST .



: ?



: , , TCP. , . , , , . /, .



, data (SNc +1). , IP- , : « », , S.







そしお、最埌の行のこの接続のこのSYNSNず3番目の行のSNが接続されおいる堎合、これは本圓に問題です。ただし、これは別のIPアドレスからの番号であるため、接続しないようにしたしょう。これで問題はなくなりたした。このSNSが別の接続のSNSに基づいおいるずは掚枬できたせん。



25:50分



MITコヌス「コンピュヌタヌシステムのセキュリティ」。 レクチャヌ12ネットワヌクセキュリティ、パヌト2





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



ご滞圚いただきありがずうございたす。 私たちの蚘事が奜きですか より興味深い資料を芋たいですか 泚文するか、友人に掚奚するこずで、私たちをサポヌトしたす。私たちがあなたのために発明した゚ントリヌレベルのサヌバヌのナニヌクな類䌌品のHabrナヌザヌのために30割匕 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