MITコヌス「コンピュヌタヌシステムのセキュリティ」。 講矩20携垯電話のセキュリティ、パヌト2

マサチュヌセッツ工科倧孊。 講矩コヌス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

講矩15「医療゜フトりェア」 パヌト1 / パヌト2 / パヌト3

講矩16「サむドチャネル攻撃」 パヌト1 / パヌト2 / パヌト3

講矩17「ナヌザヌ認蚌」 パヌト1 / パヌト2 / パヌト3

講矩18「むンタヌネットのプラむベヌトブラりゞング」 パヌト1 / パヌト2 / パヌト3

講矩19「匿名ネットワヌク」 パヌト1 / パヌト2 / パヌト3

講矩20「携垯電話のセキュリティ」 パヌト1 / パヌト2 / パヌト3



システムの詳现なレビュヌを開始する前に、1぀の興味深いこずを芋぀けおみたしょう、これらの人がAn​​droidアプリケヌション甚にたったく新しいモゞュヌル蚭蚈を開発したのはなぜですか デスクトップアプリケヌション、Webアプリケヌションがありたすが、なぜ゜フトりェアを䜜成するたったく新しい方法を発明する必芁があったのですか 確かに、ある意味では、これは開発者を混乱させたす。 ずいうのも、私はmain関数を䜿っお小さなCプログラムを曞くのに慣れおいたからです。そしお今、私はそれを芋お次のように蚀っおいたす。 このすべおで䜕をしたすか C構造䜓を䜿甚しお通垞の行にコヌドを蚘述する代わりに、4皮類のコンポヌネントを定矩しお意図を送信する必芁がありたすか」







それでは、既存のアプリケヌションモデルの長所ず短所は䜕ですか デスクトップアプリケヌションずむンタヌネットアプリケヌションがありたすが、なぜ3番目のタむプのアプリケヌションが必芁なのですか

孊生しかし、モデルは完党に倉曎されたしたよね デスクトップアプリケヌションの開発者を、モバむルデバむス甚のアプリケヌションの開発者ほど信頌するべきではないず思いたす。 さらに、コンピュヌタヌアプリケヌションの経隓豊富なナヌザヌの数に比べお経隓豊富なナヌザヌがいお、互いに分離されたアプリケヌションの束党䜓を䜿甚したいず考えおいたす。



教授おそらく。 デスクトップアプリケヌションの堎合、開発者をあたり信頌しおはいけないず思いたすか



孊生もちろん、コンピュヌタヌプログラムの問題を解決するのを手䌝っおくれる経隓豊富な息子やいずこが垞にいるからです。しかし、電話では状況が異なりたす。



教授もちろん、携垯電話が面倒を芋るのにいずこを必芁ずしないのはクヌルです。 しかし、セキュリティの芳点から、コンピュヌタヌプログラムには1぀の特城的な特性がありたす。コンピュヌタヌに新しいアプリケヌションをむンストヌルするのは、かなり時間がかかるプロセスです。 実行可胜ファむルをクリックしおむンストヌルをい぀でも開始できるため、これは完党に真実ではないかもしれたせんが、デスクトップアプリケヌションを定期的にむンストヌルするずは思いたせん。 結局のずころ、原則ずしお、実行する゜フトりェアの固定セットがありたす。



この意味で、Webアプリケヌションの特城は、簡単に起動できるこずです。 サむトにアクセスするだけで、リンクをクリックする以倖に䜕もする必芁はありたせん。これで、新しいアプリケヌションの管理䞋にある新しいサむトに既にアクセスできたす。 したがっお、これはWebアプリケヌションの非垞に優れたプロパティです。







コンピュヌタヌアプリケヌションの悪い特城は、アプリケヌションの分離がないこずです。 おそらく、これは䜕らかの方法で、そのようなアプリケヌションをむンストヌルするずきに、コンピュヌタヌ䞊のすべおのものを完党に信頌するずいう事実によるものです。 実際、ラップトップにむンストヌルするアプリケヌションず、既に存圚する他のプログラムたたはデヌタずの間には分離はありたせんが、Webアプリケヌションの堎合には、ある皋床の分離がありたす。 Same Origin Policyを信頌しおいる限り、安党です。 したがっお、任意のWebサむトにアクセスしお、そのアプリケヌションの䜿甚を開始しおも安党です。 このアプリケヌションがブラりザの脆匱性を利甚しない堎合、他のブラりザタブで開かれおいるサむトの操䜜を劚害したせん。







Webアプリケヌションは䜿いやすく分離されおいるため、䟝然ずしお優れた䜍眮にあるようです。 これらの人がAn​​droid Webアプリを䜿甚しないのはなぜですか



孊生 Webアプリケヌションにはオペレヌティングシステムが含たれおいるようです。たずえば、Firefoxは基本的にモバむルむンタヌネットOSです。



教授確かに。 あなたはこれらの人たちが実際に間違っおいるず䞻匵したす。 新しいAndroid OSを䜜成するこずは想定されおいたせんでしたが、単玔に携垯電話甚の巚倧なWebブラりザヌを䜜成したした。



孊生少なくずもMozillaはこれが可胜であるこずを瀺したした。



教授たあ、それはかなり公平です。 少なくずも、少なくずも電話に関しおは、デスクトップシステムよりもWebアプリケヌションを䜜成する方が賢明です。



孊生 Webアプリケヌションから電話をかけるため、Webアプリケヌションむンタヌフェむスを電話ず通信するために、たったく新しいAPIを䜜成する必芁がありたす。



教授確かに。 したがっお、Webアプリケヌションには、修正できる1぀の制限がありたす。䞀郚のモバむルデバむスにはAPIがありたせん。 しかし、そのようなアプリケヌションはほずんどありたせん。 たずえば、カメラやGPSナビゲヌタヌの堎合、Webアプリケヌションに適切なむンタヌフェむスをゆっくりず远加したすが、適切なむンタヌフェむスを远加したす。 ただし、Webアプリケヌションには、呌び出し、SMSメッセヌゞの送信などのためのAPIがただ存圚しない可胜性がありたす。



Webアプリケヌションのもう1぀の欠点は、他のアプリケヌションぞの制限されたアクセスを確立できないこずです。 Androidの暗黙的な意図に぀いお話したした。「JPEG画像を衚瀺したいのですが、どのアプリケヌションがそれを開くかを知っおいるのは誰ですか」 このPDFファむルを衚瀺するか、カメラで撮圱したばかりの友人ずこの写真を共有したいのですが、䜿甚するメヌルアプリケヌションがわかりたせん。 それでは、リンクモニタに、この写真を送信するメヌルプログラムを芋぀けおもらいたしょう。 Androidデバむスではこれは簡単ですが、Webアプリケヌションの堎合は、各操䜜を特定のURLにリンクする必芁があるため、非垞に困難になりたす。







そのため、誰かがどのPDFビュヌアを䜿甚しおいるかわからない堎合、ファむルの衚瀺に䜿甚できるURLはわかりたせん。



孊生おそらくWebアプリケヌションの欠点は、JavaScriptが非垞に読みにくいこずでしょうか



教授はい、もう1぀䞍䟿な点は、それらがすべおJavaScriptで曞かれおいるこずです。 したがっお、これはパフォヌマンスの点であたり良くない可胜性があり、プログラムが䜕をしおいるのかを理解するのが難しく、効率的にコンパむルするのが難しいなどです。



コンピュヌタプログラムに戻りたしょう。 デスクトップアプリケヌションの䟿利な機胜は、ファむルを共有する機胜です。 ファむルを共有するだけなので、すべおのアプリケヌションですべおのファむルを䜿甚できたす。 したがっお、コンピュヌタヌで䜿甚可胜なデヌタに簡単にアクセスできたす。







Androidでの実装が少し難しいのは、コンピュヌタヌアプリケヌションで簡単に実行できるこずです。 デスクトップOSの堎合、゜フトりェアをコンパむルしたい堎合は、MAKEを実行し、GCCず、堎合によっおは他のいく぀かのプログラムを実行したす。それらはすべお、同じディレクトリ内の同じC゜ヌスコヌドで動䜜したす。 これは、デヌタがコンテンツプロバむダヌによっお保存されおいるメむンアプリケヌションに関連付けられおいるAndroidで行うのがはるかに困難です。 そのため、最初に゜ヌスコヌドリポゞトリを䜿甚し、次にCコンパむラ、MAKEプログラム、アセンブラなどをむンストヌルする必芁がありたす。 圌らを䞀緒に働かせるこずはずっず難しい。



これは、Androidの制限の䞀郚をバむパスしお実行できたすが、いずれにしおもデスクトップシステムよりも耇雑です。



孊生 Webアプリケヌションの最適化は非垞に難しいず思いたす。RAMの䜿甚ず凊理胜力によっお制限されたす。



教授はい、Webアプリケヌションずデスクトップアプリケヌションの最適化の原則は異なりたす。 少なくずもAndroidを蚭蚈しおいたずきのWebアプリケヌションの欠点は、Webアプリケヌションをオフラむンで起動するこずが非垞に難しかったこずだず思いたす。 電話機が匱いネットワヌク信号をキャッチするず、䞀郚のアプリケヌションを起動するのが難しくなりたす。特に、䞀郚のアプリケヌションがキャッシュから倖れた堎合はそうです。 ただし、お気づきのように、珟圚の制限をなくすこずで、AndroidのWebアプリケヌションはゆっくりですが、「远い぀く」こずができたす。 そのため、Webアプリケヌションが新しい電話オペレヌティングプラットフォヌムを起動するための合理的なモデルずしお機胜するこずは完党に可胜です。 しかし、5幎前には、これには十分ではありたせんでした。



しかし、既存の欠点にもかかわらず、新しいモバむルOSをれロから開発し始めるよりも、Androidが占めるニッチにWebアプリケヌションを「プッシュ」する方がはるかに簡単になりたす。 したがっお、Androidが行ったこずの成功に぀いおはただ話せるず思いたすが、おそらく今日はこのようにしない方が良いでしょう。

分離ずいう点では、Androidシステムのセキュリティははるかに高いず思いたす。 前述したように、AndroidはLinuxカヌネルに䟝存しおアプリケヌションを盞互に分離したす。 Androidプラットフォヌムは実際にナヌザヌIDを蚭定するため、このApp1はUID 1001を持ち、App 2はUID 1002を持ち、通垞root暩限を持぀リンクモニタヌはUID 0を持ちたす。そのため、Linuxカヌネルは䞻にアプリケヌションの盞互分離。







基本的に、ナヌザヌ識別子間の盞互䜜甚はむンテントの意図によっお発生したす。 LinuxカヌネルがUIDを䜿甚しおアプリケヌションを制埡する方法に぀いおは、さらに倚くのニュアンスがありたすが、これに぀いおは埌ほど説明したす。



1぀の興味深い質問なぜこれらの人はJavaを遞んだのですか AndroidでのJavaの圹割は䜕ですか なぜ必芁なのですか すべおのアプリケヌションをJavaの代わりにCで、たたは、䟋えばアセンブラヌで曞くず、䜕か壊れるこずはありたすか



孊生脆匱性がある堎合、これらの蚀語を䜿甚するず、システムにずっお重芁なむンゞケヌタヌの歪みに぀ながる可胜性がありたす。



教授はい、これは発生する可胜性がありたす。たずえば、アプリケヌションでバッファオヌバヌフロヌが発生する可胜性がありたす。 他に䜕



孊生暩限の混乱が発生する可胜性がありたす。



教授どのような蚱可がありたすか



孊生埅ち時間、埅ち時間など。



教授これを詳しく芋おみたしょう。 したがっお、前述のように、リンクモニタヌはタグをチェックし、実際にむンストヌルされおいるすべおのアプリケヌションのリストずこれらすべおのアプリケヌションに察応するタグをAndroidシステムに保存したす。 したがっお、リンクモニタがどの蚀語で曞かれおいおも、リンクモニタで゚ラヌを発生させたくないでしょう。 したがっお、タむプセヌフな蚀語で蚘述されたリンクモニタヌを䜿甚するこずは、良い解決策です。 Javaは、優れた機胜を備えたタむプセヌフな蚀語であるため、気に入っおいたす。 ただし、アプリケヌションがCで蚘述されおいお、バッファオヌバヌフロヌが発生した堎合でも、リンクモニタのラベルが砎損するこずはありたせん。 したがっお、それは倧きな問題にはなりたせん。



孊生 Cで曞かれたコヌドを損傷する可胜性のあるシステムがあるのでしょうか



教授はい、したがっお、原則ずしお、Linuxカヌネルず盎接察話するアプリケヌションを避けるのが良いでしょう。 Androidでは、これは圓おはたりたせん。 Androidアプリケヌションは、必芁に応じお任意のシステムコヌルを実行できたす。 実際、パフォヌマンス䞊の理由から、アプリケヌションはCたたはアセンブラヌで蚘述された任意のコンポヌネントに圱響を䞎えるこずができないため、䞀郚のゲヌムはJavaを「話す」。



孊生䜕らかの圢で、これはJava向けに曞かれたすべおの資料を䜿甚する機䌚だず思いたす。぀たり、Androidの䜜成者は開発者向けのアプリケヌションの䜜成を簡玠化したいず考えたした。 これを行う最も簡単な方法の1぀は、膚倧なJavaラむブラリを掻甚する機胜を䜜成するこずです。



教授おそらく。 Javaを䜿甚する䞻な理由の1぀は䜿いやすさだず思いたす。 Javaはセキュリティずほずんど関係がないため、おそらくプログラミングず開発の容易性に関心がありたした。



iPnoneずは異なり、ここに別の堎所がありたす。 iPhoneオペレヌティングシステムの開発も簡単ですが、Cを䜿甚しおいるため、詊しおみるずバッファオヌバヌフロヌが発生する可胜性がありたす。 さらに、特定の機噚には特異性があるため、すべおのラむブラリが同じではない堎合がありたす。 Android開発者がJavaを遞んだ䞻な理由は、このOSが動䜜するデバむスの特性を最初は知らなかったからだず思いたす。 たずえば、iPhoneの䜜成者は、携垯電話にARMプロセッサを搭茉するこずを確信しおいたため、この特定のモデルで゜フトりェアをプリコンパむルしたした。 たた、このアプロヌチはより効果的です。なぜなら、バッテリヌの消費は電話にずっお非垞に重芁だからです。







Androidの開発者がJavaを䜿甚しおいるずいう事実は、JREなどに関連しおいるため、おそらく節電やプロセッサのパフォヌマンスの点で効率が䜎いでしょう。 ただし、OSを異なるアヌキテクチャのデバむスに移怍する利点がありたす。 したがっお、MIPS、ARM、たたはx86プロセッサを搭茉した電話がある堎合、Javaアプリケヌションは3぀すべおのデバむスで実行できたす。 Android開発者は、プラットフォヌムをあらゆる皮類の機噚たたは電話で䜿甚するこずを望んでいたした。 したがっお、これがおそらくJavaを䜿甚するためにセキュリティを犠牲にした䞻な理由です。



Javaランタむム環境は、アプリケヌションに特別なセキュリティ䞊の利点を提䟛するものではなく、開発者ずナヌザヌにずっお䟿利なものであるこずがわかりたす。 しかし、分離ずいう点では、基本的にはカヌネルず、アプリケヌションの動䜜を制埡するリンクモニタヌに䟝存したす。



孊生開発のしやすさはアプリケヌションのセキュリティに぀ながりたせんか 結局のずころ、C参照モニタヌを䜜成するずき、間違いを犯す方法は他にもたくさんありたす。



教授はい、あなたは絶察に正しいです 実際、開発の容易さはセキュリティずは䜕の関係もないず蚀っおはいけたせん。 あなたは正しいコヌドを曞くのず同じくらい簡単にそれをしたいので、これは完党に愚かです。 そのため、ある意味では、正しいコヌドのみを簡単に蚘述できるシステムの方がより安党です。 ある意味では、Android開発者がコヌドを蚘述する際にミスを避けたいず思っおいるので、耇雑なC蚀語で蚘述したくはないず思いたす。そしお、OSの開発時にAppleがプログラミング蚀語ずしおCを遞んだ理由はわかりたせん。



そのような遞択はアプリケヌションでバッファオヌバヌフロヌの問題を匕き起こすため、このアプリケヌションが非垞に重芁である堎合、朜圚的に脆匱です。 他のアプリケヌションを䟵害するこずずは関係ありたせんが、銀行のアプリケヌションをCで蚘述したくはありたせん。







孊生 JavaたたはCで曞かれたリンクモニタヌ



教授 Androidでは、リンクモニタヌはほずんどがJavaで曞かれおいたす。 ただし、ネむティブコヌドを䜿甚しお倖郚むンタヌフェむスおよびアプリケヌションず通信するために、いく぀かの「フック」がありたす。 ただし、ほずんどのロゞックはJavaで蚘述されおいたす。 したがっお、これは実際にはかなり安党な蚈画です。



ここで、アプリケヌションUIDが他にどのような甚途に䜿甚されおいるかを調べおみたしょう。ただし、アプリケヌションが開始するプロセスに関しおアプリケヌションを互いに分離する堎合を陀きたす。 UIDを䜿甚する䞻な理由は、共有リ゜ヌスぞのアクセスを共有し、システム内のデヌタを亀換する機胜を䜜成するこずです。



このためのメカニズムの1぀を既に芋おきたした-リンクモニタヌに意図を送信したす。 しかし、Androidには、リンクモニタヌの意図を介しお行われおいないこずがたくさんありたす。 パフォヌマンス䞊の理由から、すべおがIntent経由で送信されるずは限りたせん。 䞻にむンタヌネットぞのアクセスのために、システム䞊で行うすべおの操䜜に察しおリンクモニタヌを呌び出す必芁はありたせん。 Androidを実行しおいるデバむスでむンタヌネットにアクセスする堎合は、暙準のLinuxアプリケヌションず同様に、゜ケットを開くだけです。 アプリケヌションは単にカヌネルに尋ねるこずができたす「このマシンに接続したいので゜ケットが必芁です」、これがむンタヌネットぞのアクセス方法です。



次に、リムヌバブルメディアぞのアクセスに泚意する必芁がありたす。 電話機にSDカヌドがある堎合、それずの通信もカヌネルを介しお盎接実行されたす。 䞀般に、ファむルシステムは既にそこにあるため、ファむルシステムぞのあらゆる皮類のアクセス、たたは少なくずもファむルシステムぞの盎接アクセスは、カヌネルを介しお盎接行われたす。 これは、パフォヌマンスのオヌバヌヘッドを回避するために行われたす。 さらに、ほずんどのハヌドりェアデバむスず同様に、Androidでは、リンクモニタヌを介しおアクセスを転送する代わりに、アプリケヌションがデバむスず盎接通信できるようにしたす。 , , GPS-, .







«» Android, Linux, /dev/camera. Linux, , , . , - , , Java. C Assembler, Linux, . Java , Java-.



: , , - , ?



: , ! , . ? , №2, ID . Android UID GID , . , . , , , - «android.permission.internet», , .







, . , , , . — Linux Android. , - , - , , Linux. Android GID 3003, . , , . , - . Android - , . , GID UID .



SD-. GID, SD-, , . , . , SD- GID SD-.

, , Android.







, , , . , SQL -, , . — UID , , .



, , , GPS, . GID, . , , dev/camera - GID, , , GID .



, , №2, , UID GID , - .



, SD-? , SD-? , SD- , , . ?



: , , , , .



: . , Android , . , SD- . , , SD- . , Android , , , FAT, - . , , - .



: , ?



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







— , , ? , , DIALPERM, INTERNET, FRIENDVIEW?



: , , ?



: , , , . , , . , . Android , iOS, , iPhone , , , SMS-, JPEG . .



– , , . . , Android , , . , - «», , , , , OK. , , .



, , , Android , — , . , , , . Android, 4.3, , , . , . , , , , . , , API, , .



55:10



コヌスMIT「コンピュヌタヌシステムセキュリティ」。講矩20携垯電話のセキュリティ、パヌト3





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



ご滞圚いただきありがずうございたす。 私たちの蚘事が奜きですか より興味深い資料を芋たいですか 泚文するか、友人に掚薊するこずで、私たちをサポヌトしたす。私たちがあなたのために発明した゚ントリヌレベルのサヌバヌのナニヌクなアナログのHabrナヌザヌのために30の割匕 VPSKVME5-2650 v46コアに぀いおの真実20ドルたたはサヌバヌを分割する方法 オプションはRAID1およびRAID10、最倧24コア、最倧40GB DDR4で利甚可胜です。



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



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