[Powered by Google Translate] [Minggu 10] [David J. Malan] [Harvard University] [Ini adalah CS50.] [CS50.TV] Baiklah! Ini adalah CS50 tetapi tidak untuk lebih lama lagi. Ini adalah awal minggu 10. Pada hari Rabu kami telah kami kuis, dan kemudian Senin depan kita memiliki beberapa kue perayaan seperti yang kita datang lingkaran penuh sepanjang perjalanan kembali dari nol minggu. Hari ini, kita berbicara tentang salah satu topik favorit saya, kebenaran diberitahu - bahwa keamanan dan privasi dan implikasi dari semua perangkat keras dan perangkat lunak bahwa kita semua menggunakan hari ini. Sejujurnya, ada banyak ancaman di luar sana bahwa jika Anda belum benar-benar berhenti untuk berpikir tentang mereka, mereka sebenarnya cukup menakutkan. Kasus di titik - jika salah satu dari Anda pernah download software off dari internet dan diinstal pada komputer Anda, Anda telah terlibat ke dalam tingkat yang signifikan kepercayaan, kan? Tidak ada yang telah dicegah Skype, atau Chrome, atau bagian dari perangkat lunak Anda telah diinstal ke komputer Anda, dari sekedar menghapus semua file pada hard drive Anda; meng-upload semua file pada hard drive Anda ke server beberapa orang yang buruk; dari membaca semua email Anda, dari menyadap semua pesan instan Anda. Karena kenyataannya adalah saat ini dengan sistem operasi paling modern ada benar-benar tidak banyak dinding antara program software yang kita install, dan Anda dan saya cukup banyak hanya semacam menyilangkan jari kami dan mengambil iman bahwa aplikasi kita download secara gratis, atau bahwa hal itu 99 sen, sebenarnya benar-benar jinak. Tapi seperti yang telah kita lihat melalui C, dan sekarang PHP dan JavaScript, dengan kemampuan untuk mengekspresikan diri secara programatik, Anda dapat melakukan apa saja yang paling Anda inginkan dengan program bahwa pengguna dirinya bisa melakukan. Jadi, hari ini kita fokus pada topik yang - tidak hanya beberapa ancaman tetapi juga pertahanan. Memang, dalam dunia keamanan secara umum, ada semacam permainan kucing dan tikus, dan saya berani bilang orang-orang jahat hampir selalu memiliki kaki. Ketika datang untuk mengambil keuntungan dari perangkat keras dan perangkat lunak pada komputer pribadi kita sendiri, kita harus menyadari bahwa orang jahat hanya perlu menemukan satu kesalahan sederhana - satu mengeksploitasi, satu bug - dalam software kami telah menulis atau menjalankan dalam rangka baginya untuk mengambil alih seluruh sistem kami. Sebaliknya, kami - orang-orang baik - perlu menambal dan memperbaiki semua itu bug dan menghindari semua kelemahan-kelemahan. Dan demikian, saya berani mengatakan secara keseluruhan, orang-orang jahat memiliki keuntungan. Apa kelas seperti ini dan kelas berikutnya benar-benar tentang tidak mengajarkan tentang cara untuk mengobarkan pertempuran bahwa orang-orang jahat melakukan, tetapi tentang bagaimana melindungi diri sendiri atau setidaknya bagaimana membuat keputusan yang dihitung bahwa ya, saya tahu ini bagian dari perangkat lunak memang bisa membaca setiap satu dari email-email saya, tapi aku baik-baik saja dengan itu karena nilai itu membawa saya di sisi lain. Saya sangat senang bisa bergabung dengan 2 orang terpandai saya tahu - Rob Bowden dan Nate Hardison. Rob adalah untuk membawa kita untuk tur melalui tingkat terendah tag keamanan - bahwa dari compiler yang, sampai sekarang, kita semua datang untuk mencintai dan percaya. Rob Bowden. [Tepuk tangan] [Rob] Baiklah. David telah cukup banyak diambil omongan saya seluruh bahwa aku akan memperkenalkan dengan, tapi - Beberapa minggu yang lalu, Anda melihat contoh dari serangan buffer-overflow yang merupakan contoh dari hacking hacker ke dalam beberapa bagian dari perangkat lunak bahwa mereka tidak seharusnya melakukan hacking ke dalam. Sisi lain dari ini kadang-kadang Anda memiliki perangkat lunak yang berbahaya dalam dan dari dirinya sendiri. Bahkan tidak perlu hack. Orang yang menulis perangkat lunak ingin Anda hack. Mari kita melompat tepat ke dalam kode, mengambil melihat "login.c". Di sini, sebuah program konyol yang memvalidasi username dan kombinasi sandi. Di sini Anda pasti harus mendapatkan nyaman dengan C lagi untuk kuis. Pertama, kita menggunakan mendapatkan string untuk menggambarkan username, maka kita menggunakan string get untuk mengambil password, dan kemudian kita memiliki beberapa pemeriksaan sepele hanya, adalah username "rob"? Dan adalah password "thisiscs50"? Atau, adalah username "tommy" dan password "i <3javascript"? Jika salah satu dari mereka terjadi,  maka kita hanya akan mencetak "Sukses", dan kemudian kita memiliki akses. Jika tidak, kita akan mencetak "tidak valid login" dan kemudian, tentu saja,  karena memori sketsa string malloc ini, nama pengguna dan password kita bebas. Ini adalah sebuah program login sepele, dan jika Anda pikirkan ketika Anda login ke alat, itu sangat mirip - atau bahkan masuk ke komputer Anda - ada hanya beberapa program login yang memberikan Anda akses. Di sini, kita kebetulan memiliki keras-kode 'merampok', 'thisiscs50', 'tommy', 'i <3javascript', tapi mungkin ada beberapa file di suatu tempat pada sistem operasi Anda yang memiliki daftar nama pengguna yang dapat login ke sistem dan daftar password yang terkait dengan mereka username. Biasanya password tidak hanya disimpan di plaintext seperti ini. Ada beberapa jenis enkripsi, tetapi hal ini akan lakukan untuk contoh kita. Datang ke compiler kami - itu akan menjadi sangat mudah. Kita perlu menentukan setidaknya beberapa file yang kita ingin mengkompilasi, dan kemudian di sini - baris-baris hanya membaca file A. Bunyinya seluruh file ke dalam satu buffer besar, dan kemudian kita nol-mengakhiri penyangga kami seperti biasa, dan akhirnya kita hanya mengkompilasi file. Kita tidak akan melihat bagaimana kompilasi benar-benar diterapkan, tetapi sebagai sebuah petunjuk, itu hanya panggilan dentang. Kita akan menggunakan program ini untuk mengkompilasi hal-hal bukan dentang. Satu masalah kita mulai dengan yang kita lihat kita ingin mengkompilasi compiler kami, tetapi jika kita tidak akan menggunakan dentang, saya tidak tahu apa yang akan saya untuk mengkompilasi dengan. Ini adalah masalah umum yang dikenal sebagai bootstrap. Jadi, sekali ini saja, aku akan menggunakan dentang untuk mengkompilasi compiler kami. Jika Anda berpikir tentang GCC dan dentang - program-program, yang kompiler yang terus-menerus diperbarui, dan mereka compiler dikompilasi menggunakan GCC dan dentang. Clang hanyalah salah satu besar C atau C + + program, sehingga compiler mereka gunakan untuk mengkompilasi itu adalah dentang. Di sini, sekarang, kita hanya akan menggunakan compiler untuk mengkompilasi compiler kami kami, dan kita bahkan dapat mengatakan - '/ compiler.', 'compiler.c', 'compile.c', '-o compiler'. Perhatikan hal ini adalah perintah yang tepat sebelum aku berlari - hanya mengganti dentang dengan '/ compiler.'. Dan sekarang kita memiliki kompiler lain, tapi itu persis sama. Itu hanya panggilan dentang. Kita akan menggunakan compiler untuk mengkompilasi program kita login kita. Oke - ". / Compiler login.c-o login". Jadi, referensi terdefinisi untuk "GetString". Mendapat "-lcs50". Oke. Jadi sekarang aku punya program login kami. Menjalankan itu - menerima "Silakan masukkan nama pengguna Anda". Salah satu contoh adalah rob. Silakan masukkan password Anda - thisiscs50. Dan sukses! Saya memiliki akses. Menjalankan lagi dan memasukkan beberapa password yang valid - atau tidak valid username dan password - valid login. Oke. Menarik tentang hal ini sejauh ini tidak ada. Tapi, mari kita lihat login lagi - dan ini akan menjadi contoh yang agak sepele, tapi mari kita menambahkan lain di sini dan mengatakan, lain jika ((strcmp (username, "hacker") == 0 && strcmp (password, "LOLihackyou") == 0)) jadi sekarang, printf ("Hacked Anda sekarang memiliki akses \ n!!."); oke. Kompilasi ini - compiler login.c-o login-lcs50 - sekarang menjalankan login - dan jika saya menggunakan username saya hacker dan password LOLihackedyou - Apakah aku salah ketik di sana sebelumnya? Pada login.c--ihack - aku akan melakukan hack karena saya pikir saya melakukannya nanti. Oke. Mengkompilasi ulang. Re-running - hacker - LOLihackedyou - Hacked!! Anda sekarang memiliki akses. Ada tampaknya tidak menjadi yang banyak perbedaan karena itu adalah cek yang sama persis yang saya lakukan untuk username dan password lainnya. Plus, hal besar adalah bahwa jika orang lain melihat ini login.c-- mengatakan, jika saya lulus off ini kepada pasangan saya, dan mereka membuka file ini, dan mereka membaca ini, mereka akan melihat - Oke, kenapa Anda memiliki baris kode di sini? Itu jelas bukan sesuatu yang harus di program anda. Dalam beberapa program - seperti perangkat lunak berpemilik yang tidak open source - Anda mungkin tidak pernah melihat baris-baris kode. Sesuatu seperti Skype atau sesuatu - untuk semua yang Anda tahu, Skype pada komputer Anda dan hanya ada beberapa spesifik username-password kombinasi yang akan login ke Skype dalam beberapa cara khusus. Kami tidak tahu tentang hal itu, dan orang-orang tidak tahu tentang hal itu, karena mereka tidak bisa membaca kode sumber untuk melihat bahwa ada lubang ini. Apa yang kita sebut ini - meskipun ini bukan contoh yang sangat pintar - ini disebut pintu belakang. Jika Anda berpikir dari pintu belakang rumah Anda. Di sini, jika saya memvalidasi dengan username 'merampok' atau 'tommy,' yang akan menjadi seperti menggunakan "pintu depan." Itulah cara saya seharusnya aman login. Tetapi jika saya masukkan dengan username dan password - kemudian yang menggunakan "pintu belakang." Itu bukan cara yang disengaja untuk masuk ke program, tapi masih bekerja. Dan orang-orang pada umumnya tidak seharusnya tahu tentang pintu belakang. Kita akan memperbaiki ini. Mari kita kembali ini untuk login.c asli kami, dan mari kita lihat compiler baru kami. Oke. Semuanya di sini adalah persis sama. Kita membaca seluruh file ke dalam buffer. Semuanya di sini adalah sama. Kami baru saja anda kompilasi file. Tapi sekarang aku punya besar jika di sini yang mengatakan, jika file yang saya kebetulan kompilasi adalah login.c, maka saya melakukan sesuatu yang istimewa. Apa itu sesuatu yang istimewa? Saya lihat di sini beberapa string disebut 'hack', dan melihat ini baris kode - ini adalah baris kode yang sama - saya kira saya lakukan menggunakan 'ihack' dan bukan 'ihacked' sebelum - melihat ini baris kode, mereka baris yang sama persis kode yang saya punya di login.c sebelumnya. Tapi sekarang, daripada harus mereka di login.c, Aku akan menempatkan mereka ke dalam compiler saya. Ini adalah baris kode saya akan ingin untuk memasukkan ke login.c. Ini baris kode - buffer yang sedianya digelar login.c saya tidak lagi akan menjadi cukup besar karena sekarang saya ingin juga menyisipkan hack ini ke tengah-tengah program saya. Semua ini lakukan adalah menciptakan buffer baru yang cukup besar - baik untuk file asli dan ekstra baris kode - hack - bahwa saya ingin memasukkan sana. Berikut ini adalah sesuatu untuk melihat - char * Pola = "/ / menolak mereka akses!" Jika kita melihat kembali login.c, kita lihat di sini komentar ini - menolak mereka akses! Dalam login.c, komentar ini terlihat benar-benar berbahaya, sehingga Anda tidak akan menduga ada niat jahat hanya dengan komentar ini. Namun dalam compiler kami, kami secara khusus akan mencari baris kode ini, dan kemudian ketika kita menemukan itu - ini baris kode yang memasukkan hack kami ke posisi itu. Jadi, kita iterasi login.c keseluruhan, kita memasukkan hack yang tepat di mana ia mengatakan menolak mereka akses, dan kemudian kita kompilasi - bukan login.c asli tetapi login.c baru dengan hack dimasukkan tepat di 'menolak mereka akses. " Sekarang saya ingin mengkompilasi compiler baru saya dengan hack yang terlibat. Aku tidak akan menggunakan dentang, jadi mari kita salin compiler yang kita gunakan sebelumnya dan menggunakannya - jadi, compiler compiler.c compile.c-o evil_compiler. Sekarang compiler kita yang jahat - jika kita menggunakan compiler kita yang jahat untuk mengkompilasi file lainnya, file tersebut akan mengkompilasi sebagaimana mestinya. Ini benar-benar normal. Namun jika kita menggunakan compiler kita yang jahat untuk mengkompilasi login - sehingga, / evil_compiler login.c-o login-lcs50 -. melihat login.c lagi, ada apa-apa di sini. Ini biasa kami 'jika itu baik atau rob tommy kami berada di, yang lain kita keluar'. Tetapi ketika kita menjalankan executable kami, ini akan bekerja seperti biasa. Menjalankan lagi - hacker, LOLihackyou - Hacked!! Anda sekarang memiliki akses. Hanya melihat login.c, Anda tidak akan berpikir ada sesuatu yang salah. Tapi compiler yang digunakan untuk mengkompilasi login.c dirancang khusus untuk memasukkan hack ini ke dalam program. Kami hanya pindah masalah asli kami. Awalnya, kami memiliki baris-baris kode dalam login.c bahwa jika orang lain memandang mereka, mereka akan seperti, mengapa ini di sini? Sekarang jika ada yang terjadi untuk melihat compiler kami, mereka akan melihat garis-garis kode dan berkata, mengapa ini di sini? Jadi, kami belum sepenuhnya memecahkan masalah kami. Tapi kita bisa menggunakan ide ini lagi. Mengambil melihat versi ketiga dari kompilator, itu ide yang sama. Kita membaca seluruh file ke buffer di sini, kita mengkompilasi file di sini, dan saya memiliki semacam hack string di sini, tetapi melihat file yang aku benar-benar melakukan hacking sekarang. Saya compiler.c hacker tidak login.c. Tapi apa yang saya memasukkan ke compiler.c? Saya memasukkan kode ini yang merupakan kode yang tepat di compiler kami sebelumnya, yang dimaksudkan untuk memasukkan kode ke login.c. Berikut adalah jika kita login.c berkas strcmp dan kemudian masukkan ke dalam barang-barang kami login.c hack. Ini compiler baru ini dimaksudkan untuk menciptakan kompilator yang dimaksudkan untuk mengkompilasi masuk jahat. Kita akan melihat mengapa yang membantu kita. Segala sesuatu yang lain adalah sama, sehingga bekerja sama persis seperti itu bekerja dengan kompiler kami sebelumnya. Kami hanya iterasi compile.c kami seluruh. Tapi sekarang bukan mencari 'menolak mereka akses,' kita cari 'mengkompilasi file.' Dimana mengkompilasi file? Melihat compiler.c kami benar-benar tidak bersalah, itu tepat di sini di bagian bawah. Komentar ini - mengkompilasi file - lagi, yang terlihat benar-benar berbahaya. Namun, dalam versi berbahaya kami kompilator, kita akan - tepat sebelum komentar itu - menyisipkan kode ini yang dimaksudkan untuk memasukkan kode ketika kompilasi login.c. Ada banyak tingkat tipuan di sini. Mari kita benar-benar menjalankannya. Sekali lagi, kita akan menyalin compiler asli kami. Sekarang, kompilasi - compiler compiler.c compile.c-o evilest_compiler - dan sekarang evilest_compiler. Compiler Evilest - jika kita menggunakannya untuk mengkompilasi compiler kami, mari kita benar-benar melihat. Evilest_compiler - membawanya atas, sepanjang perjalanan kembali ke versi 1 dari compiler kami - versi 1 dari compiler kami yang hanya membaca di file dan kompilasi. Di sini, kita tahu bahwa evilest_compiler - ketika mengkompilasi file ini - akan menyisipkan kode di sini sebelum mengkompilasi file tersebut, dan kode yang akan terlihat persis seperti kode dari versi kedua compiler kami yang melakukan ini. Kode ini, yang dimaksudkan untuk masuk ke login, akan dimasukkan ke dalam compiler kita dengan compiler evilest. Mari kita gunakan evilest_compiler untuk mengkompilasi compiler kami. Sekarang kita akan menggunakan compiler, kembali ke login, dan ingat login.c ini sama sekali tidak ada yang mencurigakan di dalamnya. Tetapi menggunakan compiler untuk mengkompilasi kami login.c, rob, thisiscs50, sukses. Login hacker Mari, LOLihackyou, Hacked!! Anda sekarang memiliki akses. Mengakui bahwa ini berbeda dari versi 2 dari compiler kami. Compiler kita gunakan - mari kita lanjutkan kembali - copy dari login - mari kita membawa compiler kami kembali di sini. Menghapus compiler evilest. Semua kita telah meninggalkan sekarang adalah compiler. Jika kita melihat compiler.c, ada apa-apa di sana yang tampaknya berbahaya dengan cara apapun. Jika kita melihat login.c, ada apa-apa di sini yang terlihat berbahaya dengan cara apapun. Tapi, ketika kita menggunakan compiler untuk mengkompilasi kami login.c, kita mendapatkan versi hackable dari login.c. Ketika kita menggunakan compiler kami untuk mengkompilasi sebuah versi baru dari kompilator, kita mendapatkan versi hackable kompilator. Sekarang jika kita pergi keluar dan mendistribusikan executable compiler kami, dan tidak ada yang akan tahu bahwa ada sesuatu yang berbahaya tentang hal itu. Ini sebenarnya sehingga - saya tidak ingat tahun - Ken Thompson, dan dia memenangkan Penghargaan Turing - jika Anda tidak terbiasa dengan Turing Award, hampir selalu didefinisikan sebagai Hadiah Nobel ilmu komputer, jadi itulah bagaimana saya akan mendefinisikannya. Ken Thompson memberikan pidato ketika ia menerima gelar Turing Award disebut "Refleksi Dipercaya Trusting." Pada dasarnya, ini adalah ide pidatonya. Kecuali bukan compiler kami, ia berbicara tentang GCC - hanyalah compiler seperti dentang - dan apa yang ia katakan adalah, seperti login.c kami, login.c kami tampaknya relatif tidak berguna tapi ia sedang berbicara tentang login.c UNIX yang sebenarnya. Ketika Anda login ke alat Anda, ada beberapa program login yang sedang berjalan. Itu adalah login yang ia bicarakan. Ini pada dasarnya idenya. Dia mengatakan bahwa di GCC, ia secara teori bisa ditanam bug - bukan bug tapi kode berbahaya - bahwa ketika kompilasi fungsi login - file login - akan memasukkan pintu belakang sehingga ia bisa pergi untuk benar-benar setiap sistem UNIX di dunia dan login dengan beberapa nama pengguna dan password tertentu. Pada saat itu, GCC cukup banyak compiler bahwa setiap orang digunakan untuk apa saja. Jika ada yang terjadi untuk memperbarui GCC, maka mereka akan mengkompilasi ulang GCC menggunakan GCC, dan Anda masih akan mendapatkan versi buruk GCC karena secara khusus disusun untuk mengakui bahwa itu mengkompilasi ulang compiler. Dan jika Anda pernah menggunakan GCC untuk mengkompilasi ulang file login.c, maka akan menyisipkan pintu belakang yang ia bisa gunakan untuk login ke komputer manapun. Ini semua teori, tapi - bahwa keadaan tertentu adalah teoritis, tetapi ide-ide yang sangat nyata. Pada tahun 2003, ada contoh serupa di mana - kita akan melihat file ini, dan sama sekali tidak ada benar-benar melakukan dengan itu, tapi bug serupa. File ini hanya mendefinisikan sebuah fungsi yang disebut membagi. Dibutuhkan argumen, sebuah argumen b, dan tujuannya adalah untuk melakukan dibagi oleh b. Tapi itu melakukan beberapa pengecekan error, jadi kita tahu hal-hal yang aneh jika b terjadi sama dengan nol. Jika b adalah nol, maka kita membagi ini menjadi 2 kasus. Anda mungkin sudah melihat bug. Kasus pertama - jika adalah nol, maka kita lakukan nol dibagi dengan nol, dan kami hanya mengatakan itu tidak terdefinisi. Kasus kedua - jika tidak nol, maka itu sesuatu seperti 1 dibagi dengan nol, dan kita hanya memanggil tak terhingga itu. Lain kita kembali biasa yang dibagi oleh b. Dan jadi di sini, kita menjalankan mereka 3 kasus, dan kita benar-benar menjalankan membagi - itu berteriak untuk saya - sehingga, mengabaikan peringatan dentang ini - akhir non-void fungsi - ternyata saya tidak mengkompilasi ini sebelumnya. Kembali 0. Membuat membagi - baik-baik saja. Dengan / divide., Kita melihat 3, Infinity, Infinity. Nol dibagi dengan nol seharusnya tidak kembali tak terhingga. Dan jika Anda belum tahu bug belum - atau tidak melihatnya sebelumnya - kita melihat bahwa kita sedang melakukan = 0. Mungkin kita berarti == 0. Mungkin. Tapi, ini sebenarnya sesuatu yang, sekali lagi, pada tahun 2003, kernel Linux - sehingga alat kami menggunakan kernel Linux - setiap sistem operasi Linux menggunakan kernel Linux - sehingga bug yang sangat mirip dengan ini muncul. Ide di balik ini adalah bug - lagi, ada hanya beberapa fungsi yang dipanggil, dan itu sedikit pengecekan error. Ada beberapa masukan yang spesifik bahwa kesalahan ini memeriksa - seharusnya seperti, baiklah, Anda tidak bisa memanggil fungsi ini dengan pembagi dari 0. Jadi, aku akan kembali hanya beberapa error. Kecuali, itu tidak bersalah karena hanya menetapkan sama dengan 0. Sebaliknya, baris kode ini akhirnya melakukan sesuatu yang lebih seperti user = administrator. Atau user = superuser. Itu adalah tidak bersalah - pada pandangan pertama - kesalahan di mana itu bisa saja wajar bahwa saya hanya ingin melaporkan sesuatu yang spesifik jika pengguna kebetulan administrator superuser. Tapi kemudian kembali berpikir tentang hal itu, orang ingin itu terlihat seperti sederhana ketik, tetapi jika kode ini sebenarnya telah dirilis, maka Anda akan mampu untuk kembali ke sistem apapun dengan melewati bendera tertentu - dalam kasus ini b = 0 - dan secara otomatis akan membuat pengguna administrator, dan kemudian ia memiliki kontrol penuh. Hal ini terjadi pada tahun 2003. Itu hanya kebetulan bahwa satu-satunya alasan itu tertangkap karena kebetulan sedang ada beberapa sistem otomatis yang melihat perubahan dalam file ini yang seharusnya tidak pernah diubah oleh manusia. File hanya seharusnya secara otomatis dihasilkan. Itu hanya kebetulan bahwa seseorang menyentuh - juga, orang yang ingin hack menyentuh file tersebut, dan komputer tertangkap yang menyentuh. Jadi, mereka mengubah ini dan hanya kemudian menyadari apa bencana itu akan menjadi jika ini sudah keluar ke dunia nyata. Anda mungkin berpikir bahwa - kembali ke contoh compiler kami - meskipun kita tidak dapat melihat - melihat source code - bahwa sesuatu yang khusus yang salah, jika kita benar-benar melihat kode biner dari compiler, kita akan melihat bahwa ada sesuatu yang salah. Sebagai contoh, jika kita menjalankan string berfungsi - yang hanya akan melihat lebih file dan mencetak semua string dapat menemukan - jika kita jalankan string pada kompilator kami, kita melihat bahwa satu string yang ditemukan ini aneh - lain jika (strcmp (username, "hacker") - bla, bla, bla. Jika seseorang kebetulan paranoid cukup untuk tidak mempercayai compiler mereka, mereka bisa menjalankan string dan melihat ini, dan kemudian mereka akan tahu bahwa ada sesuatu yang salah dengan biner yang sebenarnya. Tapi, string adalah pasti sesuatu yang disusun. Jadi, siapa bilang bahwa kompiler kita tidak hanya memiliki kode yang lebih khusus yang mengatakan, jika string yang pernah berjalan di compiler kami, jangan menampilkan semua itu kode berbahaya. Ide yang sama dengan jika kita ingin dis-merakit file - kita belajar bahwa assembler membawa kita dari kode assembly ke kode mesin - kita bisa pergi ke arah yang berlawanan - objdump-d compiler - akan memberi kita perakitan kode kita. Melihat hal ini, itu cukup samar, tetapi jika kita ingin, kita bisa melihat melalui ini dan alasan, tunggu, ada sesuatu yang terjadi di sini yang tidak boleh terjadi, dan kemudian kita akan menyadari bahwa compiler melakukan sesuatu yang berbahaya. Tapi, seperti string, siapa bilang objdump tidak istimewa-cased. Pada dasarnya, ia datang ke Anda tidak dapat mempercayai apapun. Titik kertas yang disebut "Trust Mempercayai" adalah secara umum, kami percaya compiler kami. Anda mengkompilasi kode Anda dan berharap untuk melakukan apa yang Anda minta itu harus dilakukan. Tapi, mengapa Anda percaya compiler? Anda tidak menulis compiler. Anda tidak tahu apa compiler tentu benar-benar melakukannya. Siapa bilang yang dapat Anda percaya itu? Tetapi bahkan kemudian, baik, mungkin kita bisa percaya compiler. Ada puluhan ribu orang yang telah melihat ini. Seseorang harus mengakui sesuatu dengan compiler. Bagaimana jika kita hanya pergi 1 tingkat yang lebih dalam? Bahkan bisa jadi prosesor Anda. Sebagai konyol seperti itu mungkin bisa, mungkin ada beberapa karyawan yang nakal di Intel yang menciptakan prosesor bahwa setiap kali prosesor yang melihat bahwa Anda menjalankan beberapa perintah yang dimaksudkan untuk login ke komputer, prosesor akan menerima beberapa nama pengguna yang spesifik dan kombinasi sandi. Ini akan liar rumit, tapi seseorang bisa melakukannya. Pada saat itu, Anda benar-benar akan membuka komputer Anda untuk melihat prosesor dan menggunakan mikroskop untuk mengakui bahwa sirkuit ini tidak berbaris sebagaimana mestinya? Tidak ada yang pernah akan menangkap kesalahan itu. Pada titik tertentu, Anda hanya perlu menyerah dan percaya sesuatu. Kebanyakan orang percaya compiler pada saat ini. Artinya belum tentu bahwa Anda harus. Melihat video yang agak terkenal - [Musik dramatis bermain] [Ini adalah sistem UNIX. Aku tahu ini.] [Ini semua file -] Dia berkata, "Ini sebuah sistem UNIX saya tahu ini.." Ganti UNIX dengan sistem operasi apa pun favorit Anda - dia bisa berkata, "Ini adalah sistem Windows Aku tahu ini.." Ini adalah pernyataan yang benar-benar berarti, tetapi untuk semua kita tahu, dia kebetulan tahu pintu belakang ke dalam sistem UNIX. Dia tahu beberapa kombinasi username / password yang benar-benar akan membiarkan dia melakukan apapun yang dia inginkan. Baiklah. Pesan moral hari ini pada dasarnya Anda tidak dapat mempercayai apapun. Bahkan hal yang Anda tulis - Anda tidak menulis compiler. Compiler bisa menjadi buruk. Bahkan jika Anda tidak menulis compiler, hal yang berjalan compiler bisa buruk. (Tertawa) Tak banyak yang dapat Anda lakukan. Dunia ini hancur. Kembali ke David! [Tepuk tangan] [David] Thanks. Itu benar-benar menyedihkan. Tapi memang, Rob benar. Kami tidak benar-benar memiliki solusi untuk itu, tapi kau akan mendapatkan beberapa solusi untuk beberapa pertahanan lebih umum. Untuk mengantisipasi hal ini, apa yang Nate dan saya telah melakukan luar panggung ada adalah mengetahui bahwa ada begitu banyak laptop di ruangan ini, kami sudah mengendus semua lalu lintas nirkabel akan melalui ruangan ini selama 20 menit lalu saat bicara Rob, jadi kita akan mengambil istirahat 2 menit di sini. Nate akan mengatur, dan kemudian kita akan berbicara tentang semua hal yang kita bisa menemukan. (Tertawa) Jadi, saya mungkin telah melebih-lebihkan sedikit hanya demi drama, tapi kita bisa telah mengendus semua lalu lintas nirkabel Anda karena memang, itu adalah mudah. Namun ada juga cara yang dapat bertahan melawan ini, sehingga dengan itu, Saya memberi Anda Nate Hardison. >> [Nate] Sweet. (Tepuk tangan) [Nate] Thanks, man. Saya menghargai berteriak keluar. Baiklah! Ini minggu permainan. Apakah kalian bersemangat? Mudah-mudahan itu akan menjadi pertandingan besar pada hari Sabtu. Aku membayangkan kalian pada saat ini - mengingat bahwa Anda memiliki kuis pada hari Rabu semua tentang kode, dan kita hanya duduk melalui kuliah indah oleh Rob dengan sejumlah besar kode C di dalamnya - yang mungkin sedikit lelah kode. Dalam bagian ini, kita benar-benar tidak akan menyentuh kode apapun. Kami hanya akan berbicara tentang teknologi yang Anda gunakan setiap hari, sering bagi banyak, berjam-jam sehari, dan kita akan berbicara tentang implikasi dengan keamanan yang ada. Kami telah berbicara banyak tentang keamanan selama semester, dan kita mulai dengan sedikit kripto. [Bdoh lv vwlqng!] Dan sementara kalian mungkin super bersemangat untuk melewati catatan satu sama lain di kelas menggunakan cipher Caesar seperti ini, pada kenyataannya, ada beberapa lebih menyenangkan yang bisa didapat ketika Anda benar-benar berbicara tentang keamanan dan hal semacam itu. Hari ini, kita akan membahas beberapa teknologi bahwa orang benar-benar digunakan dalam dunia nyata untuk melakukan segala macam hal dari sniffing paket orang untuk benar-benar masuk dan membobol rekening bank orang dan semua itu. Ini adalah alat yang sah yang kita bicarakan dengan pengecualian mungkin satu alat. Dan aku hanya ingin membuat disclaimer cepat. Ketika kita berbicara tentang hal-hal ini, kita sedang berbicara tentang mereka sehingga Anda tahu apa yang ada di luar sana, dan Anda menyadari bagaimana menjadi aman ketika Anda keluar menggunakan komputer Anda. Tapi kita pasti tidak ingin menyiratkan bahwa Anda harus menggunakan alat-alat di asrama atau rumah Anda karena Anda bisa lari ke banyak masalah besar. Itulah salah satu alasan hari ini bahwa kita benar-benar tidak mengendus paket Anda. Baiklah. Senin lalu, kita berbicara tentang cookie, dan HTTP, dan otentikasi, dan bagaimana Firesheep membuka pintu ini besar ke akun Facebook Anda, ke account Hotmail Anda - jika ada yang masih menggunakan Hotmail - dan account lainnya. Banyak hal ini akan membangun off dari itu, tapi pertama-tama, saya ingin mengambil tur singkat tentang bagaimana internet telah berkembang dari waktu ke waktu. Kembali di tahun 90-an, kalian mungkin ingat sebenarnya mencolokkan Anda komputer dengan salah satu. Sekarang kita tidak melakukan itu begitu banyak lagi. Ini benar-benar ternyata bahwa dalam rangka untuk plug kabel Ethernet ke laptop saya, Saya sekarang harus menggunakan salah satu adapter yang agak gila. Sebaliknya, pada tahun 1997 kami memiliki teknologi ini, baru yang menyenangkan keluar yang dikenal sebagai IEEE 802.11, jadi ini adalah standar internet nirkabel The IEEE ini badan yang memberikan semua macam - menerbitkan segala macam standar dengan hubungannya dengan komputer. The 802 standar adalah semua tentang teknologi internet. Jadi 802,3, misalnya, adalah standar Ethernet, 802.15.1 saya percaya adalah standar Bluetooth, dan 802.11 adalah semua tentang internet nirkabel. Pada tahun 1997 ini keluar. Ini tidak cukup menangkap langsung. Itu tidak sampai tahun 1999 dan standar 802.11b keluar yang baru saja benar-benar populer. Berapa banyak dari Anda ingat ketika komputer mulai keluar dan mendapatkan wi-fi pada mereka? Itu agak dingin, ya? Aku ingat mendapatkan laptop pertama saya di SMA, dan memiliki kartu nirkabel di dalamnya. Ayahku memberikannya kepada saya dan mengatakan bahwa saya harus menggunakannya untuk aplikasi kuliah saya dan semua itu, dan saya tidak tahu bagaimana saya akan mencari hal ini secara online. Tapi untungnya, aku punya kartu nirkabel, jadi itu cukup keren. Saat ini, Anda juga akan melihat 802.11g yang merupakan salah satu dari yang lain benar-benar populer nirkabel standar yang ada di luar sana. Baik b dan g yang cukup usang pada saat ini. Siapa tahu apa versi kebanyakan orang pada saat ini jika mereka membeli router nirkabel baru dan hal-hal semacam? N. Tepat. Bingo. Dan ternyata standar ac hanya keluar dalam bentuk draft, dan ada versi lain di jalan. Dengan masing-masing standar apa yang kita mendapatkan yang lebih banyak bandwidth, lebih banyak data pada tingkat yang lebih cepat. Hal-hal ini terus berubah cukup cepat. Hal ini juga membuatnya sehingga kita harus membeli router lebih dan semua hal menyenangkan. Mari kita bicara tentang apa komunikasi nirkabel sebenarnya pada intinya. Dengan Ethernet dan mereka dial-up modem lama, Anda benar-benar memiliki hal-hal ini yang Anda terhubung ke komputer Anda, dan kemudian Anda terhubung ke modem macam, dan kemudian Anda dicolokkan ke jack di dinding Anda. Anda punya koneksi kabel, kan? Inti dari nirkabel menyingkirkan hal ini. Untuk melakukan itu, apa yang kita miliki pada dasarnya komunikasi radio di mana router nirkabel kami - ditunjuk oleh ikon kecil nirkabel - terhubung ke Internet dengan panah yang solid menunjukkan semacam koneksi kabel, tetapi ketika Anda terhubung ke router nirkabel Anda Anda benar-benar menggunakan hampir seperti walkie-talkie antara Anda komputer dan router nirkabel Anda. Apa yang benar-benar keren tentang ini adalah Anda dapat bergerak di sekitar. Anda dapat membawa komputer Anda di seluruh Sanders, pergi menjelajahi web, apa pun yang Anda inginkan, sama seperti Anda semua tahu dan cinta, dan Anda tidak pernah harus terhubung dengan apapun. Untuk bekerja, kami memiliki keduanya ini penerimaan dan transmisi. Ini benar-benar seperti itu walkie-talkie. Ini router nirkabel - yang dalam Sanders duduk di bawah tahap ini, di sini - selalu menyiarkan dan menerima, penyiaran dan menerima, dan juga, komputer Anda semua melakukan hal itu hal yang sama juga. Kami hanya tidak bisa mendengarnya. Hal lain yang dapat Anda lakukan adalah Anda dapat memiliki beberapa komputer berbicara dengan router nirkabel yang sama. Semakin dekat Anda ke router - dan lagi, ini adalah komunikasi radio - semakin dekat Anda, semakin baik sinyal Anda, semakin baik komputer Anda 'mendengar' router dan dapat berkomunikasi dengan internet. Jika kalian pernah di asrama Anda, di rumah Anda dan Anda bertanya-tanya mengapa sinyal buruk, itu mungkin karena a). Anda tidak sangat dekat dengan router Anda, atau b). ada sesuatu di antara Anda dan router Anda seperti dinding semen atau sesuatu yang tidak membiarkan mereka pergi melalui gelombang radio. Mari kita bicara sedikit tentang mengapa orang-orang jahat seperti wi-fi. Orang-orang jahat mencintai wi-fi karena beberapa alasan. Berikut orang jahat buruk kita di sana. Salah satu alasan mengapa hal ini orang jahat mencintai wi-fi karena, secara default, banyak router nirkabel datang dan ketika Anda mengaturnya, mereka tidak terenkripsi. Ini telah menjadi masalah, dan ada kasus - beberapa kasus, sekarang - di mana orang jahat muncul ke rumah seseorang, pemberitahuan bahwa ada terenkripsi wi-fi yang mereka dapat terhubung. Mereka terhubung ke wi-fi, dan kemudian mereka mulai men-download segala macam hal-hal menyenangkan. Dan mereka tidak men-download kucing, mereka tidak men-download anak anjing. Ini seperti BitTorrent. Ini adalah jahat dari yang menjijikkan. Ada beberapa kasus di mana FBI bahkan telah gotten terlibat berpikir bahwa orang yang memiliki rumah sebenarnya adalah salah satu yang pergi keluar dan men-download hal-hal yang mereka benar-benar tidak boleh. Setelah terenkripsi wi-fi pasti bukan sesuatu yang ingin Anda lakukan, jika hanya untuk tidak memiliki FBI datang mengetuk pintu Anda. Alasan lain mengapa orang-orang jahat mencintai wi-fi adalah alasan bahwa Daud bicarakan sebelumnya selama istirahat. Karena itu komunikasi radio pada intinya, jika Anda tahu saluran, Anda dapat mendengarkan stasiun radio yang. Misalnya, jika ada hak buruk di sana duduk di tengah kanan sebelah jalur akses, tepat di samping bahwa router nirkabel, orang jahat dapat mendengarkan pada semua lalu lintas nirkabel yang datang dari semua komputer-komputer. Bahkan, orang-orang ini - ini beberapa yang beruntung berada di sini di barisan depan - karena mereka adalah super-dekat dengan semua router nirkabel yang duduk persis di bawah panggung, mereka akan dapat mendengar lalu lintas semua orang di seluruh ruangan jika Anda terhubung ke wi-fi dan mulai browsing melalui titik-titik akses. Hal ini tidak terlalu sulit untuk duduk diri Anda dalam posisi yang baik untuk mengendus dan mencari tahu apa yang orang lain lakukan. Ini adalah sesuatu yang perlu diingat, terutama jika Anda tidak yakin di mana titik akses, dan Anda sedang browsing mengatakan, di Starbucks. Ternyata mengendus dan semua itu tidak benar-benar semua yang sulit untuk dilakukan. Ada sebuah program yang disebut tcpdump yang membuang segala macam lalu lintas TCP dan Anda dapat menjalankannya cukup sederhana - seperti yang saya lakukan pagi ini. Berikut sedikit dump, dan inilah beberapa dari lalu lintas yang datang ke jaringan saya pada saat itu. Anda dapat melihat - jika Anda juling benar-benar keras - ada sedikit Spotify di sana. Di atas tcpdump - karena ini adalah jenis rasa sakit untuk menggunakan - ada program yang disebut Wireshark yang bundel ini semuanya dalam GUI yang bagus. Wireshark adalah super-berguna sehingga jika Anda pergi untuk mengambil kelas jaringan, ini adalah alat yang Anda akan datang untuk mencintai karena membantu Anda membedah semua paket yang mengambang di luar sana. Tetapi juga dapat digunakan untuk buruk. Ini sangat sederhana untuk hanya men-download program ini, boot up, memulai menangkap jaringan, dan melihat segala sesuatu yang terjadi - dan menyaring dan melakukan segala macam hal-hal menyenangkan dengan itu. Hal lain yang dapat Anda lakukan dengan komunikasi nirkabel tidak hanya bisa Anda menguping tetapi Anda juga dapat belajar bagaimana untuk sekrup dengan jaringan dan menyuntikkan informasi Anda sendiri untuk mengontrol pengalaman yang orang lain pada jaringan nirkabel yang sama mendapatkan. Mari kita lihat pada saat itu. Berikut Firesheep - yang kita kenal dan cinta dari minggu lalu - yaitu bahwa teknologi menguping. Jika, misalnya, kita ingin aktif memiliki orang jahat kami pergi dan main-main dengan salah satu komputer, dalam skenario ini kita punya komputer mencoba untuk pergi surfing ke harvard.edu. Yang terjadi adalah, komputer pertama mengirimkan pesan ke router nirkabel dan berkata, hey, aku ingin pergi www.harvard.edu kunjungan. Katakanlah untuk beberapa alasan mereka berusaha untuk mendapatkan informasi tentang permainan akhir pekan ini. Orang jahat, karena dia duduk tepat di tengah, tepat di samping titik akses, bisa melihat komunikasi yang berasal dari komputer ke router, dan dia tahu, "Aha Seseorang! akan harvard.edu." (Evilly tertawa) Ada akan menjadi latency ini sementara komunikasi berjalan dari router keluar ke Internet untuk pergi mencari halaman web di-harvard.edu - seperti kalian semua tahu setelah melakukan Anda psets PHP - dan jadi orang jahat memiliki sedikit waktu, sedikit jendela, di mana ia dapat merespon dengan beberapa barang. Mari kita mengatakan ini orang jahat, tentu saja, adalah sebuah Yaley. Dia merespon dengan harvardsucks.org. Boo! Bad guy, buruk! Yaley buruk! Atau bahkan lebih buruk lagi, ia mungkin menanggapi dengan itu. [Http://youtu.be/ZSBq8geuJk0]. Aku akan membiarkan kalian mengetahui apa itu. Ini sebenarnya adalah sebuah teknologi yang disebut Airpwn! yang debut di salah satu konferensi keamanan beberapa tahun lalu. Dengan Airpwn! Anda dapat benar-benar menyuntikkan lalu lintas kembali ke jaringan. Komputer yang mencoba untuk pergi keluar ke Internet dan mencoba untuk mendapatkan ke Google.com, ke Facebook.com, ke harvard.edu melihat respon berbahaya datang dan langsung menganggap, oke, itulah respon yang saya sedang menunggu dan akhirnya mendapatkan konten dari harvardsucks.org atau nameyourfavoriteshocksite.com, dan Anda dapat melihat seberapa cepat hal-hal yang akan memburuk. Semua hal-hal ini tidak dapat dilakukan dengan koneksi kabel karena dengan sambungan kabel sulit untuk mengintip lalu lintas. Jika aku orang jahat dan pada salah satu ujungnya adalah komputer Anda dan di ujung lainnya adalah router - modem - satu-satunya cara saya bisa mendapatkan di antara hubungan itu adalah benar-benar sambatan komputer saya di suatu tempat di tengah atau melakukan sesuatu yang lain dengan router, hilir sesuatu. Tapi dengan nirkabel, dapat semudah duduk di barisan depan kelas, dan Anda dapat melakukan segala macam hal-hal buruk kepada orang-orang di belakang. Mari kita bicara tentang bagaimana Anda bisa bertahan terhadap beberapa hal. Orang-orang yang mengembangkan standar nirkabel - 802.11 - mereka bukan orang bodoh oleh imajinasi. Ini adalah teknologi dingin dan ketika memulai debutnya pada tahun 1999, mereka keluar dengan standar ini disebut WEP. Anda bisa lihat di sini ketika Anda mencoba dan bergabung dengan jaringan nirkabel, Anda memiliki segala macam pilihan keamanan yang berbeda. Itulah jenis rasa sakit karena ada 6 semua bersama-sama dan itu tidak pernah benar-benar masuk akal yang 1 untuk bergabung. Ini 1 di atas adalah yang pertama yang mereka datang dengan disebut WEP. WEP adalah singkatan dari Wired Equivalent Privacy, saya percaya, Enkripsi tidak Protocol Wireless yang merupakan ironi umum. Karena mencoba untuk memberikan setara privasi dan perlindungan keamanan setara dengan jaringan kabel Dengan WEP apa yang akhirnya terjadi adalah, Anda memiliki password, sederhana kecil yang Anda ketik dan yang berfungsi untuk mengenkripsi semua komunikasi antara komputer Anda dan router Anda. Apa masalahnya dengan WEP meskipun? Password dengan WEP benar-benar singkat, dan juga semua orang menggunakan bahwa password yang sama persis,  dan sehingga benar-benar mudah untuk mendekripsi. Jadi sangat cepat orang tahu bahwa WEP adalah masalah, dan satu-satunya alasan Anda melihatnya muncul masih pada si kecil adalah - ada beberapa sistem yang lebih tua yang menggunakan WEP - apa yang Anda malah harus mencari adalah WPA dan WPA2 bahkan standar yang dirilis di kemudian hari. Sistem ini adalah pergi jauh lebih baik pada perlindungan di Internet nirkabel. Yang mengatakan, mereka masih memiliki beberapa hackability. Ada alat di luar sana yang bisa melakukan hal ini. Satu hal tertentu yang bisa menjadi jahat adalah bahwa jika Anda terhubung dan dikonfirmasi ke router nirkabel dan menggunakan semacam komunikasi terenkripsi, ternyata seorang hacker dapat dengan mudah mengirim satu paket untuk memutuskan sambungan Anda dari router, dan sekali mereka sudah terputus Anda mereka kemudian dapat mendengarkan - mereka dapat mengendus paket tersebut saat Anda mencoba untuk membangun kembali hubungan dengan router Anda. Dan dengan informasi yang mereka kemudian dapat masuk dan mendekripsi seluruh komunikasi Anda. Hal ini tidak dengan cara apapun apapun aman di luar imajinasi semua. Hal lain yang dapat Anda lakukan ketika Anda sedang menyiapkan jaringan nirkabel atau Anda bergabung dengan mereka adalah - Anda melihat bahwa di sini ketika saya bergabung dengan jaringan ini, itu meminta nama jaringan saya. Hal ini juga dikenal sebagai SSID. Dan Anda lihat di sini bahwa di sebelah kanan saya memiliki kotak yang menunjukkan saya SSIDs tersedia. Ada Universitas Harvard, yang CS50, dan jaringan Staf CS50. Sekarang, berapa banyak dari Anda tahu ada jaringan Staf CS50 sekitar? Beberapa dari Anda. Tidak semua dari Anda. Masalah dengan hal ini, tentu saja, adalah bahwa kita tidak menempatkan ini di daftar kami SSIDs, tak seorang pun akan tahu tentang hal itu kemungkinan besar. Saya berharap. Kecuali kalian semua mencoba untuk memecahkan ke nirkabel. Tapi ini adalah sesuatu yang dapat Anda lakukan yang benar-benar penting ketika Anda sedang menyiapkan router di rumah. Hal ini mungkin tidak akan terjadi selama beberapa tahun untuk banyak dari Anda, tetapi perlu diingat bahwa menjaga bahwa SSID keluar dari sana dan tidak juga penamaan itu sesuatu yang super-umum akan membantu menjaga Anda lebih aman dalam jangka panjang. Beberapa akhir hal yang dapat Anda lakukan. Salah satunya adalah HTTPS. Jika Anda berada di Starbucks, jika Anda berada di daerah wi-fi publik dan Anda memutuskan untuk mengakses rekening bank Anda, mengakses Gmail, Facebook Anda, pastikan bahwa koneksi tersebut akan melalui HTTPS. Ini adalah lapisan tambahan keamanan, lapisan tambahan enkripsi. Satu hal yang perlu diingat di sini adalah, berapa banyak dari Anda yang pernah mengklik melalui layar yang besar, merah yang mengatakan, "Website ini mungkin buruk." Aku tahu aku punya. Mungkin ketika Anda semua browsing untuk pergi melihat Homeland atau sesuatu seperti itu, kan? Ya. (Penonton tertawa) Ya. Di sana Anda pergi. Kita tahu siapa yang menonton Homeland. Itu, layar besar merah di sana sering menunjukkan bahwa sesuatu yang funky yang terjadi. Kadang-kadang itu hanya situs web itu sendiri tidak aman, tapi itu besar yang sama, layar merah muncul ketika orang mencoba untuk gunung jaringan serangan pada Anda. Jadi jika Anda melihat bahwa besar, layar merah muncul di Starbucks, jangan klik melalui itu. Berita buruk. Kabar buruk beruang. Hal terakhir yang Anda dapat melihat adalah semacam VPN. VPN ini tersedia melalui Harvard - vpn.fas.harvard.edu-- dan apa yang dilakukan adalah benar-benar membentuk koneksi aman antara Anda dan Harvard, saluran lalu lintas melalui itu, dan bahwa cara itu jika Anda sedang duduk di tempat seperti Starbucks Anda dapat terhubung ke Harvard, mendapatkan bahwa lalu lintas yang aman, dan kemudian menelusuri dari Harvard. Sekali lagi, tidak sangat mudah. Orang bisa mendapatkan di tengah. Mereka dapat mulai untuk memecahkannya, tapi ini jauh lebih aman daripada mengandalkan keamanan dari wi-fi saja. Baiklah. Singkatnya, ketika Anda sedang mengatur jaringan nirkabel, ketika Anda akan keluar untuk menggunakan nirkabel di depan umum - apakah itu Starbucks, apakah itu Five Guys, apakah itu B.Good, sesuatu seperti itu - di mana pun mereka memiliki wi-fi - menyadari lingkungan Anda. Sadari apa yang dapat dilakukan. Dan aman. Jangan mengakses rekening bank Anda. Ini bisa menjadi kebangkitan kasar jika seseorang muncul dengan password Anda di kemudian hari. Dengan itu, pergi merah! Dan aku akan membalikkan keadaan kembali ke David untuk kata akhir. (Tepuk tangan) [David] saya pikir saya akan berbagi satu hal dari pengalaman pribadi. Sebuah alat Anda mungkin ingin bermain dengan - meskipun Apple telah sebagian besar diberantas masalah ini jika Anda telah memperbarui perangkat lunak Anda sejak - tapi menuju akhir ini tidak benar-benar mampu mempercayai software yang kita gunakan, dan poin Nate, mampu mengendus sedikit dari apa yang orang lain lakukan luar sana - ini adalah sebuah software yang keluar sekitar satu tahun-dan-a-setengah lalu sekarang. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] Untuk beberapa waktu, iTunes - sebelum iCloud, ketika Anda syncing iPod atau iPhone Anda atau atau Anda iPads dengan iTunes - untuk kepentingan backup, apa iPhone dan perangkat lainnya telah melakukan selama beberapa waktu adalah memanfaatkan data GPS. Anda semua tahu bahwa Anda mungkin iPhone dan Androids dan Windows mobile telepon dan seperti hari-hari dapat melacak di mana Anda berada dalam kepentingan menunjukkan Anda peta dan sejenisnya - baik apa Apple dan perusahaan-perusahaan lainnya lakukan adalah mereka biasanya melacak hampir di mana-mana Anda sudah benar-benar berada dalam kepentingan meningkatkan kualitas layanan. Satu, Anda bisa mendapatkan lebih banyak iklan bertarget dan sejenisnya, tapi dua, mereka juga bisa mencari tahu di mana ada hotspot nirkabel di dunia, dan ini dapat membantu dengan geo-lokasi - semacam triangulasi posisi rakyat. Singkat cerita, kita semua telah berjalan antena untuk beberapa jumlah waktu. Sayangnya, Apple telah membuat keputusan desain - atau kekurangan itu - untuk tidak mengenkripsi informasi ini ketika sedang didukung-up ke iTunes. Dan apa yang peneliti keamanan menemukan bahwa ini hanya sebuah file XML yang besar - sebuah file teks yang besar - duduk dalam perangkat lunak iTunes masyarakat, dan jika Anda hanya sedikit penasaran, Anda bisa pergi mengaduk-aduk sejarah pasangan Anda, sejarah teman sekamar Anda, saudara Anda sejarah dan sejenisnya, dan berkat beberapa perangkat lunak bebas, Anda bisa merencanakan semua koordinat GPS - lintang dan bujur. Jadi, saya benar-benar melakukan ini dengan ponsel saya sendiri. Saya terpasang di ponsel saya, dan tentu saja, versi saya iTunes tidak dienkripsi pada saat itu, dan apa yang saya bisa melihat pola-pola sendiri. Berikut Amerika Serikat dan masing-masing lingkaran biru mewakili terjadi di mana saya telah lebih dari bulan-bulan sebelumnya memiliki telepon khusus ini.  Saya menghabiskan banyak waktu, tentu saja, di Timur Laut, sedikit waktu di California, perjalanan singkat ke Texas, dan jika Anda kemudian tampilannya dalam hal ini - ini adalah semua jenis baik dan menarik, tapi aku tahu ini. Sebagian besar teman-teman saya tahu ini, tetapi jika Anda menyelam lebih dalam, Anda melihat di mana saya menghabiskan sebagian besar waktu saya di timur laut. Jika Anda latch ke beberapa tampak akrab kota - ini noda, tinta besar biru pada dasarnya berpusat di Boston, dan kemudian saya menghabiskan sedikit waktu di pinggiran memancar keluar dari Boston. Tapi saya juga melakukan sedikit konsultasi tahun itu. Dan tahun ini adalah pesisir timur, dan Anda benar-benar dapat melihat saya dan iPhone di saku perjalanan bolak-balik antara Boston dan New York dan Philadelphia lebih bawah, serta menghabiskan sedikit waktu liburan di Cape, yang merupakan lengan sedikit di luar sana. Jadi, masing-masing dari titik mewakili beberapa tempat saya telah, dan benar-benar tanpa sepengetahuan saya, ini seluruh sejarah hanya duduk di sana di komputer desktop saya. Jika Anda zoom out - ini sebenarnya sedikit mengganggu. Saya tidak ingat pernah telah di Pennsylvania pada tahun tertentu. Tapi aku meskipun sedikit lebih keras tentang hal itu dan aku tahu, oh, itu sebenarnya bahwa perjalanan dan tentu saja, ponsel saya telah menangkap saya. Apple telah sejak dienkripsi informasi ini, tapi ini juga hanya bukti seberapa banyak informasi yang dikumpulkan tentang kami, dan bagaimana dengan mudah - untuk lebih baik atau lebih buruk - itu dapat diterima. Salah satu-mengambil aways mudah-mudahan dari bicara Rob, dari pembicaraan Nate dan visual kecil seperti saat ini hanya menjadi semua lebih sadar ini sehingga meskipun - sebagai titik Rob - semacam kami sedang kacau dari, kan? Tak banyak yang bisa kita lakukan ketika datang ke beberapa ancaman, tapi pada akhir hari kita harus percaya sesuatu atau seseorang jika kita ingin benar-benar menggunakan teknologi tersebut. Setidaknya kita bisa membuat keputusan dan keputusan dihitung apakah atau tidak kita benar-benar harus memeriksa account ini sangat sensitif atau kita harus benar-benar mengirim yang sedikit menduga pesan instan  dalam lingkungan wi-fi seperti ini. Jadi, dengan mengatakan bahwa, hanya satu yang tersisa kuis, satu kuliah tetap. Kami akan melihat Anda pada hari Rabu maka Senin. (Tepuk tangan dan sorak-sorai) [CS50TV]