1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [10]週 2 00:00:02,750 --> 00:00:04,750 [戴維·J·馬蘭] [哈佛大學] 3 00:00:04,750 --> 00:00:07,000 這是CS50。[CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> 好吧!這是CS50,但不會持續太久。 5 00:00:13,240 --> 00:00:14,740 這是10週的開始。 6 00:00:14,740 --> 00:00:18,780 上週三,我們有我們的測驗,然後在下週一我們有一些慶祝蛋糕 7 00:00:18,780 --> 00:00:22,030 因為我們兜了一圈,所有的方式回到從星期為零。 8 00:00:22,030 --> 00:00:25,200 今天,我們來談談我最喜愛的主題之一,說實話 - 9 00:00:25,200 --> 00:00:29,000 的安全和隱私,所有的硬件​​和軟件的影響 10 00:00:29,000 --> 00:00:31,000 大家都用的這些日子。 11 00:00:31,000 --> 00:00:33,300 說實話,有很多有威脅 12 00:00:33,300 --> 00:00:35,430 如果你還沒有真正停下來想想他們, 13 00:00:35,430 --> 00:00:36,920 他們實際上是相當艱鉅的。 14 00:00:36,920 --> 00:00:40,070 典型的例子 - 如果你曾經下載一個軟件 15 00:00:40,070 --> 00:00:42,660 在互聯網上傳播,並把它安裝在您的計算機上, 16 00:00:42,660 --> 00:00:45,220 你已經參與到一個相當程度的信任,對不對? 17 00:00:45,220 --> 00:00:50,220 沒有什麼阻止Skype,或者Chrome瀏覽器,或任何軟件 18 00:00:50,220 --> 00:00:54,770 你已經安裝到你的電腦,從簡單地刪除您的硬盤驅動器上的所有文件; 19 00:00:54,770 --> 00:00:58,260 上傳一些壞傢伙的服務器硬盤驅動器上的所有文件; 20 00:00:58,260 --> 00:01:01,650 您的電子郵件;,堵截所有的即時消息。 21 00:01:01,650 --> 00:01:05,040 因為現實情況是大多數現代操作系統的今天 22 00:01:05,040 --> 00:01:10,040 是不是真的有許多,我們安裝的軟件程序之間的一堵牆, 23 00:01:10,040 --> 00:01:14,220 你和我都非常簡單,只是種交叉手指和信仰 24 00:01:14,220 --> 00:01:17,750 免費下載該應用程序,或99美分的東西, 25 00:01:17,750 --> 00:01:20,140 實際上完全是良性的。 26 00:01:20,140 --> 00:01:23,090 但是,正如我們已經看到通過C,和現在的PHP和JavaScript, 27 00:01:23,090 --> 00:01:25,420 用此來表達自己的編程能力, 28 00:01:25,420 --> 00:01:30,300 你可以做任何你想要的程序,用戶自己可以做。 29 00:01:30,300 --> 00:01:32,390 >> 因此,我們今天關於這一主題的重點 - 30 00:01:32,390 --> 00:01:35,360 不僅一些威脅,但防禦能力。 31 00:01:35,360 --> 00:01:37,540 事實上,在世界上的安全性一般, 32 00:01:37,540 --> 00:01:39,040 有一種貓捉老鼠的遊戲, 33 00:01:39,040 --> 00:01:41,990 我敢說幾乎總是有壞人一條腿。 34 00:01:41,990 --> 00:01:45,880 當它涉及到我們自己的個人電腦上的硬件和軟件的優勢, 35 00:01:45,880 --> 00:01:51,250 我們必須認識到,一個壞傢伙只需要找到一個簡單的錯誤 - 36 00:01:51,250 --> 00:01:56,150 一個錯誤 - 在一塊的軟件,我們已經寫了一個利用,或正在運行 37 00:01:56,150 --> 00:01:58,280 為了他或她接手我們的整個系統。 38 00:01:58,280 --> 00:02:02,870 通過對比,我們 - 好人 - 需要修補和修復這些錯誤 39 00:02:02,870 --> 00:02:04,900 並避免這些弱點。 40 00:02:04,900 --> 00:02:07,870 所以,我敢說,就整體而言,壞傢伙有優勢。 41 00:02:07,870 --> 00:02:10,840 什麼課和上課是真正的 42 00:02:10,840 --> 00:02:14,830 不是教你如何發動​​的戰役,這些壞傢伙, 43 00:02:14,830 --> 00:02:18,220 但關於如何保護自己或至少作出決定, 44 00:02:18,220 --> 00:02:22,970 是的,我知道這個軟件確實可以閱讀我的郵件中的每一個, 45 00:02:22,970 --> 00:02:27,040 但我沒因為它帶給我的價值,另一方面。 46 00:02:27,040 --> 00:02:31,060 >> 我很高興能夠加入由最聰明的人,我知道 - 47 00:02:31,060 --> 00:02:33,060 羅布Bowden和內特 - 哈迪森。 48 00:02:33,060 --> 00:02:36,850 羅布帶我們參觀的最低水平的安全標籤的 - 49 00:02:36,850 --> 00:02:42,470 的編譯器,到現在為止,我們都來愛和信任。羅布·波頓。 50 00:02:42,470 --> 00:02:47,790 [掌聲] 51 00:02:47,790 --> 00:02:50,280 >> 羅布所有權利。大衛幾乎我的整個高談闊論 52 00:02:50,280 --> 00:02:52,320 我要介紹的,但是 - 53 00:02:52,320 --> 00:02:58,070 幾個星期前,你看到了一個緩衝區溢出攻擊的例子 54 00:02:58,070 --> 00:03:01,900 這是一個示例的駭客黑客成某些軟件 55 00:03:01,900 --> 00:03:06,060 他們不應該被黑客入侵。 56 00:03:06,060 --> 00:03:09,690 的另一側 57 00:03:09,690 --> 00:03:14,470 有時,你本身是惡意軟件。 58 00:03:14,470 --> 00:03:17,070 它甚至不需要被黑客攻破。 59 00:03:17,070 --> 00:03:20,670 是誰寫的軟件的人要攻擊你。 60 00:03:20,670 --> 00:03:22,190 >> 讓我們直接進入代碼, 61 00:03:22,190 --> 00:03:28,560 考慮看看在“login.c的”。 62 00:03:28,560 --> 00:03:33,390 在這裡,一個傻程序驗證用戶名和密碼組合。 63 00:03:33,390 --> 00:03:39,420 在這裡,您一定要熟悉C再次測驗。 64 00:03:39,420 --> 00:03:43,470 首先,我們用字符串描述的用戶名, 65 00:03:43,470 --> 00:03:46,280 然後,我們使用的是獲取字符串搶的密碼, 66 00:03:46,280 --> 00:03:50,680 然後我們檢查,只是一些瑣碎的,是“搶”用戶名? 67 00:03:50,680 --> 00:03:52,710 而且是的密碼“thisiscs50”? 68 00:03:52,710 --> 00:03:56,900 或者,是湯米“用戶名”和密碼“I <3javascript”? 69 00:03:56,900 --> 00:03:58,980 如果任一者的情況下, 70 00:03:58,980 --> 00:04:01,980  那麼,我們只是要打印的“成功”,然後我們有機會。 71 00:04:01,980 --> 00:04:07,690 否則,我們將打印“無效登錄”,然後,當然, 72 00:04:07,690 --> 00:04:11,120  由於草圖字符串malloc的內存,我們可以自由的用戶名和密碼。 73 00:04:11,120 --> 00:04:15,560 這是一個簡單的登錄程序, 74 00:04:15,560 --> 00:04:18,110 如果你仔細想想,當您登錄到設備, 75 00:04:18,110 --> 00:04:22,350 這是非常相似 - 甚至在登錄到您的計算機 - 76 00:04:22,350 --> 00:04:24,930 只是有一些登錄程序,這是給你的訪問。 77 00:04:24,930 --> 00:04:31,840 在這裡,我們正好有硬編碼'搶','thisiscs50“,”湯米,“我<3javascript, 78 00:04:31,840 --> 00:04:34,950 但可能有一些文件放在您的作業系統 79 00:04:34,950 --> 00:04:38,690 其中有一個人可以登錄到系統的用戶名列表 80 00:04:38,690 --> 00:04:41,740 這些用戶名與密碼的列表。 81 00:04:41,740 --> 00:04:46,090 通常情況下,密碼不只是保存在文本中是這樣的。 82 00:04:46,090 --> 00:04:50,360 是某種形式的加密,但是這會在我們的例子中。 83 00:04:50,360 --> 00:04:57,000 >> 我們的編譯器 - 84 00:04:57,020 --> 00:05:00,780 這將是非常簡單的。 85 00:05:00,780 --> 00:05:04,800 我們需要至少指定一些文件,我們要編譯, 86 00:05:04,800 --> 00:05:10,200 然後在這裡 - 這些行 87 00:05:10,200 --> 00:05:12,520 只是讀取的文件。 88 00:05:12,520 --> 00:05:16,080 它讀取整個文件到一個大的緩衝, 89 00:05:16,080 --> 00:05:19,000 然後我們以空終止我們的緩衝區一如既往, 90 00:05:19,000 --> 00:05:21,000 最後,我們只是編譯文件。 91 00:05:21,000 --> 00:05:24,090 我們不打算看看如何編譯實際執行, 92 00:05:24,090 --> 00:05:26,820 但作為一個提示,它只是調用鏗鏘。 93 00:05:26,820 --> 00:05:32,370 我們將使用這個程序編譯東西,而不是鐺。 94 00:05:32,370 --> 00:05:39,260 我們從一個問題是,我們看到的,我們希望我們的編譯器編譯, 95 00:05:39,260 --> 00:05:43,620 但如果我們不打算使用鐺,我不知道我要編譯。 96 00:05:43,620 --> 00:05:46,700 這是一個普遍的問題,被稱為自舉。 97 00:05:46,700 --> 00:05:53,080 所以,就這一次,我將使用鐺我們的編譯器編譯。 98 00:05:53,080 --> 00:05:58,800 >> 如果你認為GCC和Clang的 - 99 00:05:58,800 --> 00:06:03,200 這些方案中,這些編譯器正在不斷更新, 100 00:06:03,200 --> 00:06:10,010 和這些編譯器編譯使用GCC和Clang的。 101 00:06:10,010 --> 00:06:14,890 鐺是一個大的C或C + +程序, 102 00:06:14,890 --> 00:06:19,510 所以他們使用的編譯器編譯,這是鐺。 103 00:06:19,510 --> 00:06:26,820 在這裡,現在,我們只是將要使用的編譯器來編譯我們的編譯器, 104 00:06:26,820 --> 00:06:33,830 我們甚至可以說 - '/編譯“,”compiler.c','compile.c','-o編譯器“。 105 00:06:33,830 --> 00:06:37,250 請注意,這是確切的命令,我跑前 - 106 00:06:37,250 --> 00:06:41,330 只需更換鐺“。/編譯器。 107 00:06:41,330 --> 00:06:44,990 現在,我們有其它的編譯器,但它是完全一樣的。 108 00:06:44,990 --> 00:06:47,510 它只是調用鐺。 109 00:06:47,510 --> 00:06:55,050 >> 我們將使用我們的編譯器來編譯我們的登錄程序。 110 00:06:55,050 --> 00:07:03,030 好了 - “。/編譯login.c的的鄰登錄”。 111 00:07:03,030 --> 00:07:06,160 所以,引用“的GetString”。 112 00:07:06,160 --> 00:07:11,250 得到了“lcs50”。好吧。 113 00:07:11,250 --> 00:07:13,790 所以現在我有我們的登錄程序。 114 00:07:13,790 --> 00:07:16,790 運行它 - 收到“請輸入您的用戶名”。 115 00:07:16,790 --> 00:07:22,140 其中一個例子就是搶劫。請輸入您的密碼資料 - thisiscs50。 116 00:07:22,140 --> 00:07:24,930 和成功!我有機會。 117 00:07:24,930 --> 00:07:28,350 再次運行它,並輸入一些無效的密碼 - 118 00:07:28,350 --> 00:07:30,350 或無效的用戶名和密碼 - 119 00:07:30,350 --> 00:07:32,860 無效的登錄。 120 00:07:32,860 --> 00:07:37,740 好吧。沒有這樣遠有趣的。 121 00:07:37,740 --> 00:07:43,100 但是,讓我們再次來看看在登錄 - 122 00:07:43,100 --> 00:07:47,850 這將是一個有點微不足道的例子, 123 00:07:47,850 --> 00:07:59,330 但讓​​我們添加一個else在這裡說,如果((STRCMP(用戶名,“黑客”)== 0 && 124 00:07:59,330 --> 00:08:14,510 STRCMP(密碼“,LOLihackyou”)== 0)) 125 00:08:14,510 --> 00:08:26,280 所以,現在,輸出(“黑客!您現在可以訪問。\ n”);沒關係。 126 00:08:26,280 --> 00:08:36,240 編譯 - 編譯器login.c的鄰登錄lcs50 - 127 00:08:36,240 --> 00:08:40,190 現在運行login - 如果我用我的用戶名黑客 128 00:08:40,190 --> 00:08:44,740 和密碼LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 我輸入錯誤在那裡? 130 00:08:47,780 --> 00:08:52,990 砍死在login.c的- - ihack - 我會做,因為我覺得我做的,後來。 131 00:08:52,990 --> 00:08:56,270 好吧。重新編譯。 132 00:08:56,270 --> 00:09:01,500 重新運行 - 黑客 - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 黑客攻擊!你現在有機會。 134 00:09:03,650 --> 00:09:06,580 >> 似乎沒有太大的區別是, 135 00:09:06,580 --> 00:09:10,890 因為它是我在做其他的用戶名和密碼完全相同的檢查。 136 00:09:10,890 --> 00:09:17,720 此外,天大的事情是,如果其他人看這login.c的 - 137 00:09:17,720 --> 00:09:24,020 說,如果我通過了這一關,我的合作夥伴,他們打開這個文件, 138 00:09:24,020 --> 00:09:29,870 他們讀這一點,他們會看到 - 好吧,為什麼你有這幾行代碼在這裡? 139 00:09:29,870 --> 00:09:33,320 這顯然不是,應該是在你的程序中。 140 00:09:33,320 --> 00:09:41,590 在某些程序中 - 像任何專有軟件,是不是開源 - 141 00:09:41,590 --> 00:09:46,200 你可能永遠不會看到這幾行代碼。 142 00:09:46,200 --> 00:09:50,440 所有你知道的東西像Skype或什麼 - 143 00:09:50,440 --> 00:09:57,600 Skype是您的計算機上有一些特定的用戶名和密碼組合 144 00:09:57,600 --> 00:10:01,580 在一些特殊的方式登錄到Skype。 145 00:10:01,580 --> 00:10:04,230 我們不知道,人不知道它, 146 00:10:04,230 --> 00:10:09,640 因為他們不讀的源代碼,看到有這個洞。 147 00:10:09,640 --> 00:10:11,800 >> 我們所說的這一點 - 148 00:10:11,800 --> 00:10:16,530 雖然這不是一個很聰明的例子 - 149 00:10:16,530 --> 00:10:18,970 這就是所謂的後門。 150 00:10:18,970 --> 00:10:22,320 如果你覺得你的房子的後門。 151 00:10:22,320 --> 00:10:26,640 在這裡,如果我的用戶名“打劫”或“湯米,驗證 152 00:10:26,640 --> 00:10:28,580 這將是像“前門”。 153 00:10:28,580 --> 00:10:33,700 就是這樣,我應該能夠安全地登錄。 154 00:10:33,700 --> 00:10:37,630 但是,如果我輸入這個用戶名和密碼 - 155 00:10:37,630 --> 00:10:40,630 然後,使用“後門”。 156 00:10:40,630 --> 00:10:42,810 這是不是故意的方式進入程序, 157 00:10:42,810 --> 00:10:45,350 但它仍然有效。 158 00:10:45,350 --> 00:10:49,160 和一般人不應該知道這些後門。 159 00:10:49,160 --> 00:10:53,050 我們要改善這一點。 160 00:10:53,050 --> 00:10:55,610 讓我們恢復這我們原來的login.c, 161 00:10:55,610 --> 00:11:05,510 讓我們來看看我們的新的編譯器。好吧。 162 00:11:05,510 --> 00:11:08,460 一切都在這裡是完全一樣的。 163 00:11:08,460 --> 00:11:10,460 我們整個文件讀取到緩衝區中。 164 00:11:10,460 --> 00:11:14,400 一切都在這裡是一樣的。 165 00:11:14,400 --> 00:11:16,180 我們剛剛編譯的文件。 166 00:11:16,180 --> 00:11:19,770 但現在我有這麼大的,如果在這裡 167 00:11:19,770 --> 00:11:24,140 ,說如果我碰巧編譯的文件是login.c的,, 168 00:11:24,140 --> 00:11:27,390 然後,我做一些特別的東西。 169 00:11:27,390 --> 00:11:29,900 那是一些特別的東西嗎? 170 00:11:29,900 --> 00:11:33,820 我在這裡看到了一些被稱為“黑客”的字符串, 171 00:11:33,820 --> 00:11:35,950 在這幾行代碼 - 172 00:11:35,950 --> 00:11:41,990 這些都是相同的代碼行 - 我想我做了使用“ihack',而不是'ihacked前 - 173 00:11:41,990 --> 00:11:44,240 看著這幾行代碼, 174 00:11:44,240 --> 00:11:47,880 他們是完全相同的,我在login.c的前幾行代碼。 175 00:11:47,880 --> 00:11:51,130 但現在,而不是讓他們在login.c的, 176 00:11:51,130 --> 00:11:54,290 我打算把它們放到我的編譯器。 177 00:11:54,290 --> 00:12:00,240 >> 這些都是我將要插入到login.c的行代碼。 178 00:12:00,240 --> 00:12:06,350 這行代碼 - 最初舉行我的login.c,的緩衝區 179 00:12:06,350 --> 00:12:11,080 不再要足夠大,因為現在我也想插入這個黑客 180 00:12:11,080 --> 00:12:12,940 到我的程序中。 181 00:12:12,940 --> 00:12:16,350 所有這一切都做的是創建一個新的緩衝區足夠大, - 182 00:12:16,350 --> 00:12:22,020 的原始文件和行額外的代碼 - 黑客 - 我要插入那裡。 183 00:12:22,020 --> 00:12:24,920 下面是一些需要注意的 - 184 00:12:24,920 --> 00:12:29,200 字符模式=“/ /拒絕他們的訪問!” 185 00:12:29,200 --> 00:12:33,760 如果我們回頭看在login.c的, 186 00:12:33,760 --> 00:12:37,690 我們看到在這裡評論 - 拒絕他們的訪問! 187 00:12:37,690 --> 00:12:42,360 login.c的,這樣的評論,看上去完全無害的, 188 00:12:42,360 --> 00:12:48,270 所以你不會懷疑任何惡意,只是這條評論。 189 00:12:48,270 --> 00:12:55,600 但在我們的編譯器,我們專門去看看這行代碼, 190 00:12:55,600 --> 00:12:57,600 然後當我們找到它 ​​- 191 00:12:57,600 --> 00:13:03,330 這幾行代碼中插入我們的hack到該位置。 192 00:13:03,330 --> 00:13:06,910 所以,我們在迭代在整個的login.c, 193 00:13:06,910 --> 00:13:12,080 我們插入的黑客工具,它的確切位置說,拒絕他們進入, 194 00:13:12,080 --> 00:13:15,890 然後我們編譯 - 而不是原來的login.c 195 00:13:15,890 --> 00:13:20,340 但新的login.c,黑客在“插入拒絕他們進入。” 196 00:13:20,340 --> 00:13:29,190 >> 現在,我想我的新的編譯器編譯涉及與黑客。 197 00:13:29,190 --> 00:13:36,900 我不打算使用鐺,讓我們複製我們之前使用的編譯器 198 00:13:36,900 --> 00:13:48,420 - 因此,編譯器compiler.c compile.c-O evil_compiler。 199 00:13:48,420 --> 00:13:50,870 現在,我們的邪惡的編譯器 - 200 00:13:50,870 --> 00:13:54,310 如果我們用我們的邪惡的編譯器編譯的任何其他文件, 201 00:13:54,310 --> 00:13:57,980 該文件將編譯,因為它應該。 202 00:13:57,980 --> 00:13:59,980 這是完全正常的。 203 00:13:59,980 --> 00:14:06,870 但是,如果我們用我們的邪惡的編譯器來編譯登錄 - 204 00:14:06,870 --> 00:14:14,920 因此,-O / evil_compiler login.c的登錄的lcs50 - 205 00:14:14,920 --> 00:14:21,310 再次在login.c的,但絕對沒有在這裡。 206 00:14:21,310 --> 00:14:25,770 這是我們的一貫“如果是搶劫或托米我們在,否則我們”。 207 00:14:25,770 --> 00:14:31,620 但是,當我們運行我們的可執行文件,這將照常工作。 208 00:14:31,620 --> 00:14:36,640 再次運行 - 的黑客,LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 黑客攻擊!你現在有機會。 210 00:14:39,000 --> 00:14:43,560 只是在尋找在login.c的,你不會覺得什麼是錯的。 211 00:14:43,560 --> 00:14:46,960 但正在使用的編譯器的編譯login.c 212 00:14:46,960 --> 00:14:53,820 是專門設計用來插入攻入的計劃。 213 00:14:53,820 --> 00:14:57,320 我們只是提出我們原來的問題。 214 00:14:57,320 --> 00:15:02,880 本來我們這行代碼login.c的,如果任何人都看著他們, 215 00:15:02,880 --> 00:15:05,470 他們會想,為什麼在這裡? 216 00:15:05,470 --> 00:15:09,550 現在,如果有人碰巧在我們的編譯器, 217 00:15:09,550 --> 00:15:12,140 他們會看在這行代碼,並說, 218 00:15:12,140 --> 00:15:15,290 為什麼在這裡? 219 00:15:15,290 --> 00:15:17,210 所以,我們還沒有完全解決我們的問題。 220 00:15:17,210 --> 00:15:22,510 但是,我們可以利用這個思路。 221 00:15:22,510 --> 00:15:26,260 >> 看看我們的第三個版本的編譯器, 222 00:15:26,260 --> 00:15:32,500 這是同樣的想法。 223 00:15:32,500 --> 00:15:36,240 在這裡,我們將整個文件讀取到緩衝區中, 224 00:15:36,240 --> 00:15:39,660 我們編譯的文件在這裡, 225 00:15:39,660 --> 00:15:44,220 在這裡,我有某種形式的字符串黑客 226 00:15:44,220 --> 00:15:47,710 但要注意的文件,我其實現在黑客。 227 00:15:47,710 --> 00:15:52,260 我是黑客compiler.c 228 00:15:52,260 --> 00:15:54,590 login.c的。 229 00:15:54,590 --> 00:15:57,780 但我是什麼在插入compiler.c嗎? 230 00:15:57,780 --> 00:16:04,600 我插入代碼,這是確切的代碼在我們以前的編譯器, 231 00:16:04,600 --> 00:16:10,540 這是為了將代碼插入login.c的。 232 00:16:10,540 --> 00:16:13,360 這裡是我們的,如果的STRCMP文件的login.c 233 00:16:13,360 --> 00:16:19,370 和然後插入login.c的我們的hack東西。 234 00:16:19,370 --> 00:16:26,010 這個新的編譯器的目的是創建一個編譯器 235 00:16:26,010 --> 00:16:30,390 其目的是惡意編譯登入。 236 00:16:30,390 --> 00:16:34,320 為什麼我們會看到,可以幫助我們。 237 00:16:34,320 --> 00:16:40,630 所有其他的事情都是一樣的,所以它的工作原理完全一樣,它與我們以前的編譯器。 238 00:16:40,630 --> 00:16:45,550 我們只是遍歷整個compile.c的。 239 00:16:45,550 --> 00:16:48,190 但現在,而不是尋找“拒絕他們的訪問, 240 00:16:48,190 --> 00:16:51,490 我們要找的編譯文件。 241 00:16:51,490 --> 00:16:53,750 在哪裡編譯的文件嗎? 242 00:16:53,750 --> 00:16:57,210 看著我們完全無辜的compiler.c, 243 00:16:57,210 --> 00:17:01,340 它的底部就在這裡。 244 00:17:01,340 --> 00:17:06,500 該評論 - 編譯文件 - 再次,看起來完全無害。 245 00:17:06,500 --> 00:17:11,599 但是,在我們的惡意版本的編譯器, 246 00:17:11,599 --> 00:17:16,550 我們要 - 在此之前,註釋 - 此代碼插入 247 00:17:16,550 --> 00:17:20,690 其目的是將代碼編譯時login.c的。 248 00:17:20,690 --> 00:17:25,589 >> 有很多層次的間接這裡。 249 00:17:25,589 --> 00:17:29,760 實際運行它。 250 00:17:29,760 --> 00:17:37,360 同樣,我們將複製我們的原始編譯器。 251 00:17:37,360 --> 00:17:48,260 現在,編譯 - 編譯器compiler.c compile.c-O evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 ,現在evilest_compiler。 253 00:17:52,640 --> 00:17:59,200 Evilest編譯器 - 如果我們用它來編譯我們的編譯器, 254 00:17:59,200 --> 00:18:01,550 讓我們來實際看看。 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - 把它結束了,所有的方式回到我們的編譯器版本 - 256 00:18:13,230 --> 00:18:19,640 第1版,我們的編譯器只是讀取該文件,並編譯它。 257 00:18:19,640 --> 00:18:24,780 在這裡,我們知道,evilest_compiler - 當編譯這個文件 - 258 00:18:24,780 --> 00:18:29,890 要在這裡插入代碼之前編譯的文件, 259 00:18:29,890 --> 00:18:38,510 該代碼是要看看我們的編譯器的第二個版本的代碼完全一樣 260 00:18:38,510 --> 00:18:42,240 它這樣做。 261 00:18:42,240 --> 00:18:46,450 此代碼,其目的是打破登錄, 262 00:18:46,450 --> 00:18:56,480 將要被插入到我們的編譯器evilest編譯器。 263 00:18:56,480 --> 00:19:08,600 讓我們用evilest_compiler我們的編譯器編譯。 264 00:19:08,600 --> 00:19:15,040 現在,我們將使用編譯器, 265 00:19:15,040 --> 00:19:19,460 回來登陸, 266 00:19:19,460 --> 00:19:25,280 ,並記住本的login.c有絕對沒有什麼可疑。 267 00:19:25,280 --> 00:19:35,250 但我們的編譯器編譯login.c的, 268 00:19:35,250 --> 00:19:38,430 搶劫,thisiscs50,取得成功。 269 00:19:38,430 --> 00:19:44,350 讓我們先登錄的黑客,LOLihackyou,砍死!你現在有機會。 270 00:19:44,350 --> 00:19:49,710 >> 認識到這是不同的,從我們的編譯器版本2。 271 00:19:49,710 --> 00:20:00,500 我們使用的編譯器 - 讓我們的移動 - 複製從登錄 - 272 00:20:00,500 --> 00:20:01,880 讓我們把我們的編譯器在這裡。 273 00:20:01,880 --> 00:20:06,360 卸下evilest編譯器。 274 00:20:06,360 --> 00:20:08,970 我們現在剩下的是編譯器。 275 00:20:08,970 --> 00:20:10,950 如果我們看看compiler.c,, 276 00:20:10,950 --> 00:20:16,840 絕對沒有在那裡,似乎以任何方式惡意。 277 00:20:16,840 --> 00:20:22,390 如果我們看看login.c的,, 278 00:20:22,390 --> 00:20:28,790 在這裡絕對沒有以任何方式,看起來惡意。 279 00:20:28,790 --> 00:20:34,600 但是,當我們用我們的編譯器編譯login.c的, 280 00:20:34,600 --> 00:20:38,840 我們得到的容易被破解的login.c的版本。 281 00:20:38,840 --> 00:20:41,850 當我們用我們的編譯器來編譯一個新版本的編譯器, 282 00:20:41,850 --> 00:20:46,620 我們得到的容易被破解版本的編譯器。 283 00:20:46,620 --> 00:20:51,790 現在,如果我們走出去和分發我們的編譯器可執行文件, 284 00:20:51,790 --> 00:20:59,280 沒有人會知道它有什麼惡意。 285 00:20:59,280 --> 00:21:04,680 >> 這實際上是這樣的 - 我不記得那一年 - 286 00:21:04,680 --> 00:21:10,350 肯湯普森,他獲得了圖靈獎 - 287 00:21:10,350 --> 00:21:15,600 如果你不熟悉的圖靈獎,它幾乎總是定義為 288 00:21:15,600 --> 00:21:20,160 計算機科學的諾貝爾獎,所以這是我將如何定義它。 289 00:21:20,160 --> 00:21:24,100 肯·湯普森發表講話時,他接受了他的圖靈獎 290 00:21:24,100 --> 00:21:27,150 信任信任的“反思”。 291 00:21:27,150 --> 00:21:30,710 基本上,這是他的想法,他的講話。 292 00:21:30,710 --> 00:21:35,050 除了我們的,而不是編譯器,他說的是GCC - 293 00:21:35,050 --> 00:21:37,250 只是一個編譯器一樣鐺 - 294 00:21:37,250 --> 00:21:45,600 他在說什麼,像我們的login.c,我們的login.c似乎相對無用的 295 00:21:45,600 --> 00:21:50,190 但他說UNIX的實際login.c的。 296 00:21:50,190 --> 00:21:53,050 當您登錄到您的設備, 297 00:21:53,050 --> 00:21:56,070 有一些登錄程序正在運行。 298 00:21:56,070 --> 00:21:58,080 這是他在談論的登錄。 299 00:21:58,080 --> 00:22:02,420 這基本上是他的主意。 300 00:22:02,420 --> 00:22:09,080 他說,在GCC中,他在理論上可以種植了一個錯誤 - 301 00:22:09,080 --> 00:22:12,290 不是一個錯誤,但惡意代碼 - 302 00:22:12,290 --> 00:22:16,860 編譯時登錄的功能 - login文件 - 303 00:22:16,860 --> 00:22:23,700 將插入一個後門,這樣他就可以在世界上任何UNIX系統的絕對 304 00:22:23,700 --> 00:22:27,360 並與一些特定的用戶名和密碼登錄。 305 00:22:27,360 --> 00:22:33,710 當時,GCC是幾乎每個人都用什麼編譯器。 306 00:22:33,710 --> 00:22:36,460 如果有人發生在更新GCC, 307 00:22:36,460 --> 00:22:40,880 然後,他們將使用GCC編譯GCC, 308 00:22:40,880 --> 00:22:44,500 你依然會得到一個壞的版本的GCC 309 00:22:44,500 --> 00:22:50,140 ,因為它具體地認識到,它被重新編譯的編譯器編譯。 310 00:22:50,140 --> 00:22:57,360 如果你曾經使用GCC重新編譯login.c的文件, 311 00:22:57,360 --> 00:23:03,550 然後,它會插入這個後門,他可以使用任何一台計算機登錄到。 312 00:23:03,550 --> 00:23:08,750 >> 這是理論上的,但 - 這特定的情況下是理論, 313 00:23:08,750 --> 00:23:12,440 但這些想法是非常真實的。 314 00:23:12,440 --> 00:23:18,250 在2003年,有一個類似的例子 - 315 00:23:18,250 --> 00:23:21,290 我們就來看看這個文件, 316 00:23:21,290 --> 00:23:25,870 它絕對沒有用它做,但類似的錯誤。 317 00:23:25,870 --> 00:23:29,390 該文件定義了一個函數調用的鴻溝。 318 00:23:29,390 --> 00:23:31,780 它需要一個參數,參數b, 319 00:23:31,780 --> 00:23:34,270 的目的是做一個除以b。 320 00:23:34,270 --> 00:23:37,230 但它確實一些錯誤檢查, 321 00:23:37,230 --> 00:23:40,070 所以我們知道的事情是奇怪的,如果B發生等於零。 322 00:23:40,070 --> 00:23:44,900 如果b為0,那麼我們就分裂成2例。 323 00:23:44,900 --> 00:23:46,900 你可能已經看到的bug。 324 00:23:46,900 --> 00:23:51,840 第一種情況 - 如果是零,那麼我們正在做的零除以零, 325 00:23:51,840 --> 00:23:54,300 我們只是說這是不確定的。 326 00:23:54,300 --> 00:23:56,250 第二種情況下 - 如果不為零, 327 00:23:56,250 --> 00:24:00,580 那麼它的東西,如1除以零,而我們只需要調用無窮大。 328 00:24:00,580 --> 00:24:03,730 否則,我們回到往常一樣除以b。 329 00:24:03,730 --> 00:24:06,390 所以在這裡,我們正在運行的這3起案件, 330 00:24:06,390 --> 00:24:13,740 我們實際運行鴻溝 - 罵我 - 331 00:24:13,740 --> 00:24:21,330 所以,忽略了鏗鏘的警告 - 332 00:24:21,330 --> 00:24:24,500 非void函數的結束 - 顯然我沒有編譯這個提前。 333 00:24:24,500 --> 00:24:26,500 返回0。 334 00:24:26,500 --> 00:24:28,900 分裂 - 所有權利。 335 00:24:28,900 --> 00:24:32,470 /鴻溝,我們可以看到,無窮遠,無窮大。 336 00:24:32,470 --> 00:24:39,150 零除以零,不應該返回無窮大。 337 00:24:39,150 --> 00:24:42,840 如果你還沒有想通了的錯誤 - 還是沒看到它之前 - 338 00:24:42,840 --> 00:24:46,800 我們可以看到,我們做了= 0。 339 00:24:46,800 --> 00:24:52,610 也許我們的意思了== 0。也許吧。 340 00:24:52,610 --> 00:24:58,640 >> 但是,這是實際的東西,再次,在2003年,Linux內核 - 341 00:24:58,640 --> 00:25:02,260 因此,我們的設備使用的Linux內核 - 342 00:25:02,260 --> 00:25:05,550 任何Linux操作系統使用的Linux內核 - 343 00:25:05,550 --> 00:25:11,610 所以非常相似,這表明一個錯誤。 344 00:25:11,610 --> 00:25:15,180 這個錯誤背後的想法是 - 345 00:25:15,180 --> 00:25:18,820 再次,只是有一些功能,被稱為,它做了一些錯誤檢查。 346 00:25:18,820 --> 00:25:24,300 有一些特定的輸入錯誤檢測 - 347 00:25:24,300 --> 00:25:30,210 它應該是,所有的權利,你可以調用這個函數與除數為0。 348 00:25:30,210 --> 00:25:35,070 所以,我將只返回一些錯誤。 349 00:25:35,070 --> 00:25:38,090 除,這是不一樣的眼神,只設置一個等於0。 350 00:25:38,090 --> 00:25:46,920 相反,這行代碼做更多的東西,如用戶=管理員。 351 00:25:46,920 --> 00:25:50,500 或用戶超級用戶。 352 00:25:50,500 --> 00:25:59,170 這是一個無辜的 - 第一眼 - 錯誤,它可能只是合理 353 00:25:59,170 --> 00:26:01,560 我只是想一些具體的報告 354 00:26:01,560 --> 00:26:05,150 如果發生用戶是超級用戶管理員。 355 00:26:05,150 --> 00:26:11,220 但然後重新思考它,希望它看起來像一個簡單的拼寫錯誤的人, 356 00:26:11,220 --> 00:26:14,330 但如果這段代碼實際上已被釋放, 357 00:26:14,330 --> 00:26:21,580 那麼你就已經能夠破解任何系統通過特定的標誌 - 358 00:26:21,580 --> 00:26:25,200 在這種情況下,b = 0時 - 359 00:26:25,200 --> 00:26:28,020 它會自動使用戶的管理員, 360 00:26:28,020 --> 00:26:30,400 然後,他有完全的控制。 361 00:26:30,400 --> 00:26:32,540 這發生在2003年。 362 00:26:32,540 --> 00:26:35,700 >> 它只是發生的唯一原因被抓 363 00:26:35,700 --> 00:26:39,200 是因為發生了一些自動化系統 364 00:26:39,200 --> 00:26:41,540 注意到在此文件中的變化 365 00:26:41,540 --> 00:26:44,560 這不應該被改變的人。 366 00:26:44,560 --> 00:26:47,580 該文件應僅是自動生成的。 367 00:26:47,580 --> 00:26:49,780 正巧,有人感動 - 368 00:26:49,780 --> 00:26:52,460 好了,想破解的人,感動的文件, 369 00:26:52,460 --> 00:26:55,450 與電腦發現,觸摸。 370 00:26:55,450 --> 00:27:01,750 因此,他們改變了這個,後來才意識到那將是災難 371 00:27:01,750 --> 00:27:04,830 如果這已經得到了進入真實的世界。 372 00:27:04,830 --> 00:27:08,220 >> 你也許會想 - 我們的編譯器的例子 - 373 00:27:08,220 --> 00:27:14,290 即使我們不能看到 - 的源代碼 - 374 00:27:14,290 --> 00:27:17,490 ,特別是什麼是錯的, 375 00:27:17,490 --> 00:27:25,460 如果我們看一下編譯的二進制代碼, 376 00:27:25,460 --> 00:27:28,670 我們將看到什麼是錯的。 377 00:27:28,670 --> 00:27:31,260 舉個例子,如果我們運行的字符串函數 - 378 00:27:31,260 --> 00:27:34,930 這是剛剛要查看的文件,並打印出所有可以找到的字符串 - 379 00:27:34,930 --> 00:27:37,990 如果我們運行我們的編譯器上的字符串, 380 00:27:37,990 --> 00:27:42,400 我們看到的是一個字符串,它發現這是奇怪的 - 381 00:27:42,400 --> 00:27:45,500 否則,如果(STRCMP(用戶名,“黑客”) - 等等,等等,等等。 382 00:27:45,500 --> 00:27:52,570 如果有人碰巧是偏執狂,不信任他們的編譯器, 383 00:27:52,570 --> 00:27:56,690 他們可以執行字符串和看到這一點, 384 00:27:56,690 --> 00:28:00,430 然後他們會知道,有一些錯誤與實際的二進制。 385 00:28:00,430 --> 00:28:07,250 但是,字符串是不可避免地被編譯的東西。 386 00:28:07,250 --> 00:28:11,590 那麼,誰又能說我們的編譯器不只是有更多特殊的代碼 387 00:28:11,590 --> 00:28:19,240 說,如果字符串是有史以來我們的編譯器上運行,不輸出所有的惡意代碼。 388 00:28:19,240 --> 00:28:23,980 >> 同樣的想法,如果我們想顯示彙編文件 - 389 00:28:23,980 --> 00:28:30,440 我們了解到,彙編器把我們從彙編代碼的機器代碼 - 390 00:28:30,440 --> 00:28:36,010 我們可以向相反的方向 - objdump的-D編譯器 - 391 00:28:36,010 --> 00:28:38,770 會給我們的組件,我們的代碼。 392 00:28:38,770 --> 00:28:41,730 見到這種情景, 393 00:28:41,730 --> 00:28:47,480 這是很神秘的,但是如果我們想,我們可以通過這 394 00:28:47,480 --> 00:28:51,700 和理由,等待,有什麼在這裡,不應該去上, 395 00:28:51,700 --> 00:28:59,380 然後我們就會認識到,編譯器做一些惡意的。 396 00:28:59,380 --> 00:29:03,950 但是,就像字符串,說,objdump的是不特殊套管。 397 00:29:03,950 --> 00:29:11,380 基本上,它歸結到你不能相信任何事情。 398 00:29:11,380 --> 00:29:14,310 點的紙被稱為“信任信任” 399 00:29:14,310 --> 00:29:17,900 在一般情況下,我們相信我們的編譯器。 400 00:29:17,900 --> 00:29:21,700 您可以編譯你的代碼,並期望它做什麼,你問它做的。 401 00:29:21,700 --> 00:29:26,440 但是,你為什麼要信任的編譯器? 402 00:29:26,440 --> 00:29:32,120 你沒有寫的編譯器。你不知道什麼編譯器必須實際做。 403 00:29:32,120 --> 00:29:36,870 誰是說你可以相信它嗎? 404 00:29:36,870 --> 00:29:40,050 但即便如此,好了,也許我們可以相信的編譯器。 405 00:29:40,050 --> 00:29:44,670 看著這幾十成千上萬的人。 406 00:29:44,670 --> 00:29:51,360 一定是有人認可的東西的編譯器。 407 00:29:51,360 --> 00:29:55,100 >> 如果我們只是去更深一層? 408 00:29:55,100 --> 00:29:59,450 甚至也可能是您的處理器。 409 00:29:59,450 --> 00:30:01,250 荒謬的,因為它可能是, 410 00:30:01,250 --> 00:30:06,690 也許有一些流氓僱員在英特爾創建這些處理器 411 00:30:06,690 --> 00:30:12,400 的處理器,只要你運行一些命令的注意事項 412 00:30:12,400 --> 00:30:14,570 這意味著登錄到計算機, 413 00:30:14,570 --> 00:30:19,230 處理器將接受一些特定的用戶名和密碼組合。 414 00:30:19,230 --> 00:30:21,530 它會被廣泛接受複雜, 415 00:30:21,530 --> 00:30:24,790 但有人能做到這一點。 416 00:30:24,790 --> 00:30:29,350 在這一點上,你真的要打開你的電腦在處理器 417 00:30:29,350 --> 00:30:35,970 用顯微鏡認識到,這些電路不排隊,他們應該是? 418 00:30:35,970 --> 00:30:39,730 從來沒有人去捕捉這個錯誤。 419 00:30:39,730 --> 00:30:45,570 在某些時候,你只需要放棄和信任的東西。 420 00:30:45,570 --> 00:30:48,390 大多數人都相信在這一點上的編譯器。 421 00:30:48,390 --> 00:30:55,760 這是,你應該說不一定。 422 00:30:55,760 --> 00:30:59,350 看著有點臭名昭著的視頻 - 423 00:30:59,350 --> 00:31:09,280 [戲劇性的音樂播放] 424 00:31:09,280 --> 00:31:13,270 [這是一個UNIX系統。我知道這一點。] 425 00:31:13,270 --> 00:31:14,470 這是所有的文件 - ] 426 00:31:14,470 --> 00:31:18,950 她說:“這是一個UNIX系統,這個我知道。” 427 00:31:18,950 --> 00:31:21,760 更換任何你喜歡的操作系統是UNIX - 428 00:31:21,760 --> 00:31:25,230 她本來可以說,“這是一個Windows系統。這個我知道。” 429 00:31:25,230 --> 00:31:29,710 這是一個完全沒有意義的聲明, 430 00:31:29,710 --> 00:31:34,450 但我們都知道,她碰巧知道UNIX系統的一個後門進入。 431 00:31:34,450 --> 00:31:38,840 她知道,她居然讓一些用戶名/密碼組合,將 432 00:31:38,840 --> 00:31:41,540 做任何她想要的。 433 00:31:41,540 --> 00:31:49,000 >> 好的。今天的道德基本上你不能相信任何事情。 434 00:31:49,000 --> 00:31:52,620 甚至你寫的 - 你不寫編譯器。 435 00:31:52,620 --> 00:31:53,870 編譯器可能是壞的。 436 00:31:53,870 --> 00:31:59,140 即使你沒有寫的編譯器,運行編譯器的東西可能是壞的。 437 00:31:59,140 --> 00:32:05,210 (笑)有沒有什麼可以做。 438 00:32:05,210 --> 00:32:09,050 世界是注定。 439 00:32:09,050 --> 00:32:11,570 給大衛! 440 00:32:11,570 --> 00:32:19,540 [掌聲] 441 00:32:19,540 --> 00:32:21,340 >> [大衛]謝謝。這是非常令人沮喪的。 442 00:32:21,340 --> 00:32:23,910 不過說實在的,羅布是正確的。 443 00:32:23,910 --> 00:32:27,150 我們並沒有真正的解決方案,但你要得到一些解決方案 444 00:32:27,150 --> 00:32:29,150 一些更常見的防禦。 445 00:32:29,150 --> 00:32:31,170 預期,Nate和我已經做台下有 446 00:32:31,170 --> 00:32:33,950 知道,在這個房間裡有那麼多的筆記本電腦, 447 00:32:33,950 --> 00:32:37,020 我們一直嗅探所有無線流量的通過這個房間,在過去的20分鐘 448 00:32:37,020 --> 00:32:39,260 Rob的談話過程中,所以我們要採取一個2分鐘的休息時間。 449 00:32:39,260 --> 00:32:41,740 Nate的設置,然後我們要談論的東西 450 00:32:41,740 --> 00:32:46,380 我們可以發現。 (笑) 451 00:32:46,380 --> 00:32:51,990 >> 所以,我可能誇大了一點點,只是為了戲劇, 452 00:32:51,990 --> 00:32:55,990 但我們也能嗅探所有的無線通信因為事實上, 453 00:32:55,990 --> 00:32:57,240 它是那麼容易。 454 00:32:57,240 --> 00:32:59,790 但也有方法,你可以抵禦這樣, 455 00:32:59,790 --> 00:33:03,160 我給你內特 - 哈迪森。 >> [內特]甜。 456 00:33:03,160 --> 00:33:06,300 (掌聲) 457 00:33:06,300 --> 00:33:08,650 >> [內特]謝謝,伙計。我很欣賞的喊出來。 458 00:33:08,650 --> 00:33:12,790 好吧!這是比賽週。你們激動嗎​​? 459 00:33:12,790 --> 00:33:16,670 希望這將是一場偉大的比賽上週六。 460 00:33:16,670 --> 00:33:20,220 我想你們在這一點 - 因為,你有一個測驗週三 461 00:33:20,220 --> 00:33:24,430 所有有關的代碼,我們只是坐著一個精彩的講座由Rob 462 00:33:24,430 --> 00:33:25,850 一大堆的C代碼 - 463 00:33:25,850 --> 00:33:28,330 也許是有點累了的代碼。 464 00:33:28,330 --> 00:33:32,180 在這一部分,我們其實並沒有任何觸及任何代碼。 465 00:33:32,180 --> 00:33:36,960 我們只是談論你每天都在使用的一種技術, 466 00:33:36,960 --> 00:33:39,790 往往許多,許多小時一天, 467 00:33:39,790 --> 00:33:46,220 我們將討論與安全的影響,有。 468 00:33:46,220 --> 00:33:48,960 >> 在本學期,我們已經談了很多關於安全, 469 00:33:48,960 --> 00:33:53,030 我們開始了一點點的加密。 470 00:33:53,030 --> 00:33:55,030 [Bdoh LV vwlqng! 471 00:33:55,030 --> 00:33:57,890 雖然你們可能是超興奮地相互傳紙條 472 00:33:57,890 --> 00:33:59,890 在課堂上使用像這樣的愷撒密碼, 473 00:33:59,890 --> 00:34:03,870 在現實中,有一些更有趣的了,當你談論安全 474 00:34:03,870 --> 00:34:05,870 這樣的東西。 475 00:34:05,870 --> 00:34:09,090 今天,我們要介紹幾個技術 476 00:34:09,090 --> 00:34:13,650 現實世界中,人們的實際使用中,做各種各樣的事情 477 00:34:13,650 --> 00:34:18,360 從人的數據包嗅探其實和 478 00:34:18,360 --> 00:34:20,409 打破進入人們的銀行賬戶和所有的。 479 00:34:20,409 --> 00:34:23,460 這些都是合法的工具,我們在談論 480 00:34:23,460 --> 00:34:26,320 異常的可能的一個工具。 481 00:34:26,320 --> 00:34:28,889 >> 我只想做一個快速免責聲明。 482 00:34:28,889 --> 00:34:34,909 當我們談論這些事情,我們正在談論他們,你知道那裡有什麼, 483 00:34:34,909 --> 00:34:39,389 你知道如何當你使用你的電腦是安全的。 484 00:34:39,389 --> 00:34:44,000 但是,我們絕對不希望暗示,你應該使用這些工具 485 00:34:44,000 --> 00:34:48,090 在宿舍或你的房子,因為你可以遇到很多的大問題。 486 00:34:48,090 --> 00:34:52,760 這是今天的一個原因,我們實際上並沒有嗅探你的數據包。 487 00:34:52,760 --> 00:35:01,300 >> 好的。的最後一個星期一,我們談到餅乾,HTTP,和認證, 488 00:35:01,300 --> 00:35:05,920 如何Firesheep打開大門口到您的Facebook帳戶, 489 00:35:05,920 --> 00:35:08,670 您的Hotmail帳戶 - 如果每個人都在使用Hotmail - 490 00:35:08,670 --> 00:35:12,360 和許多其他帳戶。 491 00:35:12,360 --> 00:35:16,980 很多這個東西是要建立關閉, 492 00:35:16,980 --> 00:35:22,070 但首先,我想藉此快速瀏覽的互聯網已經發展如何,隨著時間的推移。 493 00:35:22,070 --> 00:35:27,490 早在20世紀90年代,你們可能還記得,其實堵 494 00:35:27,490 --> 00:35:29,880 您的計算機之一。 495 00:35:29,880 --> 00:35:32,640 現在我們不這樣做那麼多了。 496 00:35:32,640 --> 00:35:37,230 實際上,為了到我的筆記本電腦插入以太網電纜, 497 00:35:37,230 --> 00:35:41,710 我現在已經使用這些適配器這是一種瘋狂的。 498 00:35:41,710 --> 00:35:47,580 >> 相反,在1997年,我們有新的,有趣的技術 499 00:35:47,580 --> 00:35:54,960 走了出來,被稱為IEEE 802.11,這是無線網絡標準 500 00:35:54,960 --> 00:36:00,430 IEEE是這樣的管理機構,給出了各種 - 501 00:36:00,430 --> 00:36:04,770 出版與計算機有關的各種標準。 502 00:36:04,770 --> 00:36:08,780 802標準都對互聯網技術。 503 00:36:08,780 --> 00:36:12,690 因此,802.3以太網標準,例如, 504 00:36:12,690 --> 00:36:17,120 圖802.15.1我相信是藍牙的標準, 505 00:36:17,120 --> 00:36:19,540 802.11是所有關於無線上網。 506 00:36:19,540 --> 00:36:24,150 在1997年就出來了。它並不太明白的時候了。 507 00:36:24,150 --> 00:36:30,200 直到1999年和802.11b標準出來了,真的很流行。 508 00:36:30,200 --> 00:36:36,330 >> 你們有多少人還記得,當計算機開始出來,並獲得Wi-Fi的嗎? 509 00:36:36,330 --> 00:36:38,330 這是種很酷吧? 510 00:36:38,330 --> 00:36:41,260 我記得在高中時,我的第一台筆記本電腦 511 00:36:41,260 --> 00:36:44,250 它有一個無線網卡。 512 00:36:44,250 --> 00:36:49,580 我爸給了我,並說我應該用它為我的大學的應用程序和所有的, 513 00:36:49,580 --> 00:36:53,030 我不知道我是怎麼看這個東西網上。 514 00:36:53,030 --> 00:36:54,640 但幸運的是,我有一個無線網卡,所以這是非常酷的。 515 00:36:54,640 --> 00:37:04,090 如今,你還可以看到802.11克的,這是其他非常受歡迎的 516 00:37:04,090 --> 00:37:06,090 無線標準的。 517 00:37:06,090 --> 00:37:08,660 在這一點上,b和g的漂亮已經過時。 518 00:37:08,660 --> 00:37:12,580 任何人都知道是什麼版本大多數人都對現在 519 00:37:12,580 --> 00:37:15,110 如果他們購買新的無線路由器,這樣的東西嗎? 520 00:37:15,110 --> 00:37:24,290 N.沒錯。賓果遊戲。而事實證明,交流標準只是草案形式, 521 00:37:24,290 --> 00:37:28,050 有其他版本的方式。 522 00:37:28,050 --> 00:37:31,190 有了這些標準,我們得到了什麼,是更多的帶寬, 523 00:37:31,190 --> 00:37:33,900 更多的數據以更快的速度。 524 00:37:33,900 --> 00:37:36,260 這些事情是不斷變化很快。 525 00:37:36,260 --> 00:37:39,880 這也使得它使我們不得不購買更多的路由器和所有有趣的東西。 526 00:37:39,880 --> 00:37:48,160 >> 讓我們來談談什麼樣的無線通信是其核心。 527 00:37:48,160 --> 00:37:51,790 隨著以太網和那些老的撥號調製解調器, 528 00:37:51,790 --> 00:37:55,780 實際上你的東西,你連接到您的計算機, 529 00:37:55,780 --> 00:37:59,820 然後你插入各種各樣的調製解調器,然後插入到你的牆上的插孔中。 530 00:37:59,820 --> 00:38:01,820 你有有線連接,對不對? 531 00:38:01,820 --> 00:38:06,030 整點的無線擺脫這東西。 532 00:38:06,030 --> 00:38:10,300 為了做到這一點,我們有什麼本質上是 533 00:38:10,300 --> 00:38:13,960 我們的無線路由器的無線電通信 - 534 00:38:13,960 --> 00:38:16,230 指定由我們小的無線圖標 - 535 00:38:16,230 --> 00:38:21,730 與此實線箭頭表示某種有線連接,連接到Internet的 536 00:38:21,730 --> 00:38:24,640 但是,當您連接到您的無線路由器 537 00:38:24,640 --> 00:38:29,190 你實際使用幾乎像一個對講機之間 538 00:38:29,190 --> 00:38:31,960 您的計算機和無線路由器。 539 00:38:31,960 --> 00:38:35,150 什麼是真正酷的是你可以走動。 540 00:38:35,150 --> 00:38:40,900 您可以攜帶您的計算機上的所有的桑德斯,去網上衝浪,任何你想要的, 541 00:38:40,900 --> 00:38:43,240 就像大家都知道和愛, 542 00:38:43,240 --> 00:38:46,030 和你永遠不要插入任何東西。 543 00:38:46,030 --> 00:38:53,880 對於這項工作,我們有這方面的接收和傳輸。 544 00:38:53,880 --> 00:38:56,060 這真的是這樣的對講機。 545 00:38:56,060 --> 00:39:03,800 >> 這款無線路由器 - 桑德斯坐在下面這個階段,就在這裡 - 546 00:39:03,800 --> 00:39:06,590 總是廣播和接收,播放和接收, 547 00:39:06,590 --> 00:39:09,330 同樣地,您的電腦都是這樣做同樣的事情,太。 548 00:39:09,330 --> 00:39:12,840 我們不能聽到。 549 00:39:12,840 --> 00:39:17,900 其他的事情,你可以做的是,你可以擁有多台計算機 550 00:39:17,900 --> 00:39:22,200 談論到相同的無線路由器。 551 00:39:22,200 --> 00:39:25,680 你是一個路由器 - 再次,這是一個無線電通信 - 552 00:39:25,680 --> 00:39:30,320 越接近你,你的信號是更好的,更好的電腦“聽到”路由器 553 00:39:30,320 --> 00:39:32,460 並可以與互聯網通信。 554 00:39:32,460 --> 00:39:39,520 如果你們是永遠在你的宿舍裡,在你的房子,你想知道為什麼你的信號很糟糕, 555 00:39:39,520 --> 00:39:42,230 它可能是因為:a)。你不是很接近你的路由器,或 556 00:39:42,230 --> 00:39:46,930 b)所示。像一堵水泥牆或東西,有什麼東西在你和你的路由器之間 557 00:39:46,930 --> 00:39:50,720 不會讓這些無線電波通過。 558 00:39:50,720 --> 00:39:57,850 >> 讓我們來談談有點像Wi-Fi為什麼壞人。 559 00:39:57,850 --> 00:40:02,980 壞人愛的wi-fi的幾個原因。 560 00:40:02,980 --> 00:40:06,670 下面是我們討厭的壞傢伙就在那裡。 561 00:40:06,670 --> 00:40:10,660 原因之一,這個壞傢伙愛的Wi-Fi 562 00:40:10,660 --> 00:40:18,770 是因為,在默認情況下,很多的無線路由器來,當你設置它們, 563 00:40:18,770 --> 00:40:20,950 他們是不加密的。 564 00:40:20,950 --> 00:40:23,970 這一直是一個問題,已經有實例 - 565 00:40:23,970 --> 00:40:28,210 多個實例,現在 - 壞人了別人的房子, 566 00:40:28,210 --> 00:40:32,630 通知有未加密的Wi-Fi來,他們可以連接。 567 00:40:32,630 --> 00:40:37,350 它們連接到的Wi-Fi,然後他們開始下載各種有趣的東西。 568 00:40:37,350 --> 00:40:40,890 他們不是下載的小貓,他們不下載的小狗。 569 00:40:40,890 --> 00:40:44,610 這是BitTorrent這樣的。這是最令人頭疼的討厭的。 570 00:40:44,610 --> 00:40:48,740 有情況下,FBI甚至走上 571 00:40:48,740 --> 00:40:52,390 認為誰擁有房子的人實際上是一個 572 00:40:52,390 --> 00:40:56,090 去那裡下載東西,他們真的不應該。 573 00:40:56,090 --> 00:41:00,730 在未加密的Wi-Fi絕對不是你想要做的事情, 574 00:41:00,730 --> 00:41:06,340 如果沒有FBI來敲你的門。 575 00:41:06,340 --> 00:41:09,910 >> 另一個原因,壞人愛的Wi-Fi 576 00:41:09,910 --> 00:41:13,870 的原因是,大衛前面談到的突破。 577 00:41:13,870 --> 00:41:17,240 因為它是一個無線電通信為核心, 578 00:41:17,240 --> 00:41:22,460 如果你知道的通道,您可以收聽到該電台。 579 00:41:22,460 --> 00:41:31,870 例如,如果有一個壞右,坐在中間偏右的接入點, 580 00:41:31,870 --> 00:41:36,830 旁邊的無線路由器,壞傢伙可以監聽所有無線流量的 581 00:41:36,830 --> 00:41:40,240 從所有這些計算機。 582 00:41:40,240 --> 00:41:44,590 事實上,這些傢伙 - 這些幸運的少數人在前排 - 583 00:41:44,590 --> 00:41:47,610 因為他們是超級接近所有這些無線路由器 584 00:41:47,610 --> 00:41:49,950 ,坐在舞台正下方, 585 00:41:49,950 --> 00:41:53,780 他們將在這整個房間能聽到大家的交通 586 00:41:53,780 --> 00:41:59,480 如果你連接到Wi-Fi,開始瀏覽這些接入點。 587 00:41:59,480 --> 00:42:03,740 這是不是很辛苦,坐自己在一個很好的位置,嗅,並找出 588 00:42:03,740 --> 00:42:07,030 其他人在做什麼。 589 00:42:07,030 --> 00:42:10,830 這件事情要記住的,特別是如果你不知道在哪裡的接入點是, 590 00:42:10,830 --> 00:42:15,010 您正在瀏覽的說法,在星巴克。 591 00:42:15,010 --> 00:42:17,360 >> 事實證明,嗅和所有的 592 00:42:17,360 --> 00:42:19,440 是不是真的很難做到。 593 00:42:19,440 --> 00:42:25,430 有一個節目叫做tcpdump的各種TCP流量轉儲 594 00:42:25,430 --> 00:42:29,910 ,你可以運行它非常簡單 - 就像今天早上我這樣做。 595 00:42:29,910 --> 00:42:32,810 這裡的一點點一傾,這裡是一些過來的交通 596 00:42:32,810 --> 00:42:34,960 我的網絡的時間。 597 00:42:34,960 --> 00:42:41,500 你可以看到 - 如果你瞇著眼睛真的很難 - 在那裡,有一點點的Spotify。 598 00:42:41,500 --> 00:42:44,050 除tcpdump的 - 因為這是一個痛苦的使用 - 599 00:42:44,050 --> 00:42:48,860 有一個叫做Wireshark的捆綁了這一切,一個漂亮的GUI程序。 600 00:42:48,860 --> 00:42:51,970 Wireshark是超級方便,所以,如果你採取網絡類, 601 00:42:51,970 --> 00:42:56,780 這是一個工具,你會來愛,因為它可以幫助你剖析的所有數據包 602 00:42:56,780 --> 00:42:59,400 那些漂浮在那裡。 603 00:42:59,400 --> 00:43:01,810 但是,它也可以被用於壞。 604 00:43:01,810 --> 00:43:05,810 這很簡單,只要下載這個程序,啟動它, 605 00:43:05,810 --> 00:43:09,300 啟動網絡捕獲,看到的一切是怎麼回事 - 606 00:43:09,300 --> 00:43:14,130 過濾器和做各種有趣的東西。 607 00:43:14,130 --> 00:43:17,930 >> 其他的事情,你可以做無線通信 608 00:43:17,930 --> 00:43:25,380 不僅是你可以竊聽,但你也可以學習如何與網絡螺絲 609 00:43:25,380 --> 00:43:31,020 並注入自己的信息來控制的經驗,其他人 610 00:43:31,020 --> 00:43:35,140 在同一個無線網絡是越來越強。 611 00:43:35,140 --> 00:43:37,140 讓我們來看看在那。 612 00:43:37,140 --> 00:43:40,700 下面是Firesheep - 我們知道,從上週的愛 - 613 00:43:40,700 --> 00:43:43,590 這是竊聽技術。 614 00:43:43,590 --> 00:43:50,360 例如,如果我們想積極的壞傢伙去和周圍的混亂 615 00:43:50,360 --> 00:43:52,690 這些計算機之一, 616 00:43:52,690 --> 00:43:58,380 在這種情況下,我們已經嘗試去瀏覽到harvard.edu的買了台電腦。 617 00:43:58,380 --> 00:44:04,690 什麼情況是,先在電腦發送一個消息到無線路由器,並說, 618 00:44:04,690 --> 00:44:07,920 嘿,我想去訪問www.harvard.edu。 619 00:44:07,920 --> 00:44:10,610 比如說,本週末,他們正試圖獲得有關遊戲的一些原因。 620 00:44:10,610 --> 00:44:14,940 壞傢伙,因為他是坐在中間, 621 00:44:14,940 --> 00:44:18,730 該接入點旁邊,可以看到通信的計算機 622 00:44:18,730 --> 00:44:26,170 到路由器中,他知道,“啊哈!有人會的harvard.edu。” (邪惡地笑) 623 00:44:26,170 --> 00:44:33,870 還有的將是此等待時間,而從路由器通信 624 00:44:33,870 --> 00:44:37,780 互聯網去尋找網頁harvard.edu - 625 00:44:37,780 --> 00:44:42,020 就像你們都知道在做PHP的pset - 626 00:44:42,020 --> 00:44:45,680 這樣的壞傢伙有一點點時間,一點點的窗口, 627 00:44:45,680 --> 00:44:49,410 他可以響應一些東西。 628 00:44:49,410 --> 00:44:53,660 >> 比方說,這個壞傢伙,當然,是一個Yaley的。 629 00:44:53,660 --> 00:44:59,990 他響應harvardsucks.org。噓! 630 00:44:59,990 --> 00:45:02,300 壞,壞傢伙!壞Yaley! 631 00:45:02,300 --> 00:45:06,020 甚至更糟糕的是,他可能回應。 [http://youtu.be/ZSBq8geuJk0]。 632 00:45:06,020 --> 00:45:09,530 我將讓你們弄清楚那是什麼。 633 00:45:09,530 --> 00:45:14,840 這實際上是一個稱為Airpwn的技術!這是開張了 634 00:45:14,840 --> 00:45:18,950 的安全會議上幾年。 635 00:45:18,950 --> 00:45:25,190 隨著Airpwn!你能夠真正注入到網絡流量。 636 00:45:25,190 --> 00:45:30,060 計算機試圖走出去到互聯網,並試圖去 637 00:45:30,060 --> 00:45:33,090 Google.com,Facebook.com,harvard.edu 638 00:45:33,090 --> 00:45:39,190 看到進來的惡意響應,並立即承擔,好吧, 639 00:45:39,190 --> 00:45:43,550 的響應,我在等待,並最終獲得內容 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org或nameyourfavoriteshocksite.com 641 00:45:48,860 --> 00:45:55,270 你可以看到事情會惡化的速度有多快。 642 00:45:55,270 --> 00:46:00,190 >> 所有這些事情不能做 643 00:46:00,190 --> 00:46:05,870 這些有線連接,因為有線連接 644 00:46:05,870 --> 00:46:08,710 這是很難窺探到交通。 645 00:46:08,710 --> 00:46:13,020 如果我是個壞傢伙,一端是您的計算機 646 00:46:13,020 --> 00:46:14,460 的另一端是你的路由器 - 調製解調器 - 647 00:46:14,460 --> 00:46:20,180 只有這樣我才能得到之間,連接到我的電腦實際上拼接 648 00:46:20,180 --> 00:46:22,180 在中間的某個地方 649 00:46:22,180 --> 00:46:26,820 或做其他事,一些下游的路由器。 650 00:46:26,820 --> 00:46:33,360 但是,隨著無線,也可以是那麼容易,因為坐在一個教室的前排, 651 00:46:33,360 --> 00:46:38,200 你可以做各種討厭的東西在後面的人。 652 00:46:38,200 --> 00:46:41,570 >> 讓我們來談談你會如何抵禦一些事情。 653 00:46:41,570 --> 00:46:46,860 人誰開發的無線標準 - 802.11 - 654 00:46:46,860 --> 00:46:50,820 他們沒有任何想像力的愚蠢的人。 655 00:46:50,820 --> 00:46:56,110 這是很酷的技術,當它首次亮相於1999年, 656 00:46:56,110 --> 00:47:00,780 他們來到了這個標準稱為WEP。 657 00:47:00,780 --> 00:47:03,360 您可以在這裡看到,當您嘗試加入一個無線網絡, 658 00:47:03,360 --> 00:47:07,450 你有各種不同的安全選項。 659 00:47:07,450 --> 00:47:11,800 這是一種痛苦,因為有6個一起 660 00:47:11,800 --> 00:47:14,790 它從來就沒有真正意義上的加入。 661 00:47:14,790 --> 00:47:19,190 這是第1的頂部,他們來到了被稱為WEP是第一位的。 662 00:47:19,190 --> 00:47:27,960 WEP有線等效保密代表,我相信, 663 00:47:27,960 --> 00:47:31,730 無線加密協議是一種常見的用詞不當。 664 00:47:31,730 --> 00:47:36,170 因為它試圖給你的隱私的當量和安全保護 665 00:47:36,170 --> 00:47:40,590 相當於一個有線網絡的 666 00:47:40,590 --> 00:47:46,710 隨著WEP的最終結果是什麼, 667 00:47:46,710 --> 00:47:52,300 你有一個簡單的,小的,你輸入的密碼和加密 668 00:47:52,300 --> 00:47:56,210 您的計算機和路由器之間的通信。 669 00:47:56,210 --> 00:47:58,210 >> 但與WEP有什麼問題? 670 00:47:58,210 --> 00:48:01,470 與WEP的密碼是非常短的, 671 00:48:01,470 --> 00:48:04,900 ,也是每個人都使用完全相同的密碼, 672 00:48:04,900 --> 00:48:07,610  所以它真的很容易解密。 673 00:48:07,610 --> 00:48:10,580 因此,速度非常快人想出了,WEP一個問題, 674 00:48:10,580 --> 00:48:16,100 唯一的原因,你看到了這個小傢伙仍然是 - 675 00:48:16,100 --> 00:48:18,890 有一些老的系統,不使用WEP - 676 00:48:18,890 --> 00:48:25,710 你應該尋找的WPA甚至WPA2標準 677 00:48:25,710 --> 00:48:29,130 ,後來被釋放。 678 00:48:29,130 --> 00:48:35,040 這些系統是一個更好的去保護無線上網。 679 00:48:35,040 --> 00:48:41,090 這就是說,他們還是有一定的可編程性。 680 00:48:41,090 --> 00:48:44,010 有工具,有可以做到這一點。 681 00:48:44,010 --> 00:48:47,490 特別是可以很討厭的一件事是, 682 00:48:47,490 --> 00:48:55,370 如果你連接到無線路由器的身份驗證,並使用某種形式的 683 00:48:55,370 --> 00:49:00,940 加密通信,事實證明,這樣黑客就可以很容易地發送一個數據包 684 00:49:00,940 --> 00:49:03,990 你的路由器斷開, 685 00:49:03,990 --> 00:49:07,220 後,他們已經斷開然後,他們可以聽 - 686 00:49:07,220 --> 00:49:11,800 您嘗試重新建立連接與您的路由器,它們能嗅出這些數據包。 687 00:49:11,800 --> 00:49:16,800 利用這些信息,他們就可以去和解密你的通信。 688 00:49:16,800 --> 00:49:24,580 這是不以任何方式任何形式的安全超出了所有人的想像。 689 00:49:24,580 --> 00:49:30,060 >> 其他的事情你可以做,當你設置無線網絡 690 00:49:30,060 --> 00:49:35,460 或者你加入他們的是 - 你注意,在這裡,當我加入這個網絡, 691 00:49:35,460 --> 00:49:37,640 它要求我的網絡的名稱。 692 00:49:37,640 --> 00:49:41,060 這也被稱為作為SSID。 693 00:49:41,060 --> 00:49:48,610 你在這裡看到的權利,我有一個框,顯示我使用的SSID。 694 00:49:48,610 --> 00:49:52,690 有哈佛大學,CS50和CS50員工網絡。 695 00:49:52,690 --> 00:49:59,180 現在,你們有多少人知道,有一個的CS50員工網絡周圍? 696 00:49:59,180 --> 00:50:01,910 你們中的一些。並非所有的你。 697 00:50:01,910 --> 00:50:08,800 的問題,當然,如果我們不把這個在我們的SSID列表, 698 00:50:08,800 --> 00:50:10,930 沒有人會知道它最有可能。 699 00:50:10,930 --> 00:50:16,090 我的希望。除非你們都試圖破解我們的無線。 700 00:50:16,090 --> 00:50:18,700 但是,這是你能做到這一點是非常重要的,當你設置了 701 00:50:18,700 --> 00:50:20,280 一個路由器在家裡。 702 00:50:20,280 --> 00:50:22,820 這可能不會發生了幾年了很多你, 703 00:50:22,820 --> 00:50:29,010 但千萬記住,保持該SSID那裡,而不是將其命名為 704 00:50:29,010 --> 00:50:34,630 超級共同的東西將有助於讓您更安全的長遠。 705 00:50:34,630 --> 00:50:38,070 >> 最後一個夫婦的事情你可以做的。一個是HTTPS。 706 00:50:38,070 --> 00:50:44,760 如果你在星巴克,如果你是在公共Wi-Fi 707 00:50:44,760 --> 00:50:52,620 你決定訪問您的銀行帳戶,訪問您的Gmail,你的Facebook, 708 00:50:52,620 --> 00:50:56,140 確保這些連接通過HTTPS。 709 00:50:56,140 --> 00:50:59,800 這是一個額外的安全層,加層加密。 710 00:50:59,800 --> 00:51:01,520 有一件事要記住的是, 711 00:51:01,520 --> 00:51:04,740 你們有多少人曾經通過點擊那個又大又紅的屏幕,上面寫著, 712 00:51:04,740 --> 00:51:07,480 “這個網站可能是壞的。” 713 00:51:07,480 --> 00:51:09,710 我知道我有。 714 00:51:09,710 --> 00:51:13,090 這也可能是,當你瀏覽去看看國土或類似的東西,對不對? 715 00:51:13,090 --> 00:51:19,900 是啊。 (觀眾笑)是啊。你去那裡。我們知道誰在觀看國土。 716 00:51:19,900 --> 00:51:24,540 那又大又紅的屏幕右下角有 717 00:51:24,540 --> 00:51:28,600 往往預示著一些時髦是怎麼回事。 718 00:51:28,600 --> 00:51:32,530 有時,它只是網站本身是不安全的, 719 00:51:32,530 --> 00:51:35,520 但同樣的,紅色的大屏幕上出現時,人們正試圖 720 00:51:35,520 --> 00:51:37,520 安裝網絡攻擊。 721 00:51:37,520 --> 00:51:40,220 所以,如果你看到了,紅色的大屏幕在星巴克, 722 00:51:40,220 --> 00:51:42,440 不會通過點擊它。 723 00:51:42,440 --> 00:51:45,350 壞消息。壞消息熊。 724 00:51:45,350 --> 00:51:51,490 >> 最後一點,你可以看一下 725 00:51:51,490 --> 00:51:54,120 是某種形式的VPN。 726 00:51:54,120 --> 00:52:00,280 VPN可通過哈佛 - vpn.fas.harvard.edu - 727 00:52:00,280 --> 00:52:03,260 這是什麼做的是建立一個安全的連接 728 00:52:03,260 --> 00:52:06,460 你和哈佛之間,漏斗,通過它,你的流量 729 00:52:06,460 --> 00:52:12,160 這樣,如果你​​正坐在一家星巴克這樣的地方 730 00:52:12,160 --> 00:52:19,030 您可以連接到哈佛,交通,安全,然後從哈佛大學瀏覽。 731 00:52:19,030 --> 00:52:21,950 同樣,並非萬無一失。人們可以在中間。 732 00:52:21,950 --> 00:52:25,850 他們可以開始打破它,而不是依賴的安全性,這是更為安全 733 00:52:25,850 --> 00:52:28,620 在Wi-Fi單獨。 734 00:52:28,620 --> 00:52:32,570 >> 好的。總之, 735 00:52:32,570 --> 00:52:34,580 當你設置的無線網絡, 736 00:52:34,580 --> 00:52:37,250 當你走出去,在公共場所使用無線 - 737 00:52:37,250 --> 00:52:43,430 無論是星巴克,無論是五個人,無論是B.Good, 738 00:52:43,430 --> 00:52:46,440 類似的東西 - 無論他們有Wi-Fi - 739 00:52:46,440 --> 00:52:48,440 要知道你周圍的環境。 740 00:52:48,440 --> 00:52:50,440 要知道,什麼人都可以做。 741 00:52:50,440 --> 00:52:53,890 並且是安全的。不要訪問您的銀行帳戶。 742 00:52:53,890 --> 00:52:58,740 這可能是一個粗魯的覺醒,如果有人顯示了你的密碼。 743 00:52:58,740 --> 00:53:05,480 ,深紅色!我要扭轉乾坤大衛最後一個字。 744 00:53:05,480 --> 00:53:11,270 (掌聲) 745 00:53:11,270 --> 00:53:14,360 >> [大衛]我想從個人的經驗,我會分享一件事。 746 00:53:14,360 --> 00:53:19,940 你可能喜歡玩的 - 儘管蘋果已經在很大程度上根除這個問題的工具 747 00:53:19,940 --> 00:53:22,710 如果您更新您的軟件,因為 - 748 00:53:22,710 --> 00:53:26,670 但為此而沒有真正能夠信任的軟件,我們使用, 749 00:53:26,670 --> 00:53:33,270 和Nate的點,能嗅出了相當多的其他人在做什麼 750 00:53:33,270 --> 00:53:37,010 - 這是一個軟件,現在是大約一年和半前。 751 00:53:37,010 --> 00:53:39,010 [iPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 一段時間以來,iTunes的 - 之前的iCloud,當你被同步您的iPod或您的iPhone或 753 00:53:41,010 --> 00:53:45,570 與iTunes或你的ipad公司 - 中備份的利益, 754 00:53:45,570 --> 00:53:48,340 你的iPhone和其他設備已經做了一段時​​間 755 00:53:48,340 --> 00:53:50,340 利用GPS數據。 756 00:53:50,340 --> 00:53:52,710 >> 你們都知道也許你的iPhone和Android的Windows Mobile手機 757 00:53:52,710 --> 00:53:55,410 和這樣的日子可以跟踪你是在顯示你的地圖的利益 758 00:53:55,410 --> 00:53:59,440 和類似 - 蘋果和其他公司做什麼 759 00:53:59,440 --> 00:54:02,650 他們通常跟踪幾乎無處不在,你的利益,實際上已在 760 00:54:02,650 --> 00:54:05,380 提高服務質量。 761 00:54:05,380 --> 00:54:07,170 一,你可以得到更有針對性的廣告和喜歡, 762 00:54:07,170 --> 00:54:10,740 但有兩個,他們也可以找出哪裡有無線熱點,在世界上, 763 00:54:10,740 --> 00:54:14,780 這可以幫助與地理定位 - 三角測量人的位置排序。 764 00:54:14,780 --> 00:54:18,520 >> 長話短說,我們所有的人已經走的天線一定量的時間。 765 00:54:18,520 --> 00:54:22,180 不幸的是,蘋果已經作出設計決策 - 或缺少 - 766 00:54:22,180 --> 00:54:26,590 不加密信息,當它被備份到iTunes。 767 00:54:26,590 --> 00:54:30,330 什麼樣的安全研究人員發現的是,這是一個巨大的XML文件 - 768 00:54:30,330 --> 00:54:33,810 一個巨大的文本文件 - 坐在人們的iTunes軟件, 769 00:54:33,810 --> 00:54:35,400 如果你只是有點好奇, 770 00:54:35,400 --> 00:54:38,990 你可以去打探你的配偶的歷史,你的室友的歷史, 771 00:54:38,990 --> 00:54:41,050 你的兄弟姐妹的歷史等, 772 00:54:41,050 --> 00:54:44,590 由於一些免費的軟件,你可以繪製所有的這些GPS坐標 - 773 00:54:44,590 --> 00:54:46,590 經度和緯度。 774 00:54:46,590 --> 00:54:48,590 >> 所以,其實我這樣做,我自己的手機。 775 00:54:48,590 --> 00:54:51,210 我插在我的手機,果然,我的版本的iTunes未加密的時候, 776 00:54:51,210 --> 00:54:53,900 我能看到的是我自己的模式。 777 00:54:53,900 --> 00:54:56,970 下面是美國和每一個的這些藍色圓圈代表 778 00:54:56,970 --> 00:55:01,670 我碰巧已經超過那些擁有這種特殊的電話的前幾個月。 779 00:55:01,670 --> 00:55:04,940  我花了很多的時間,當然,在東北,在美國加州的一點點時間, 780 00:55:04,940 --> 00:55:08,690 得克薩斯州的一個短命的行,如果你再放大,在此 - 781 00:55:08,690 --> 00:55:11,120 這是所有種類的罰款和有趣的,但我知道這一點。 782 00:55:11,120 --> 00:55:13,890 我的許多朋友都知道這一點,但如果你在更深的潛水, 783 00:55:13,890 --> 00:55:17,090 你看,我花了我大部分時間在東北。 784 00:55:17,090 --> 00:55:20,330 如果抓住一些熟悉的前瞻性城鎮 - 785 00:55:20,330 --> 00:55:24,670 這個大的,藍色的墨水污點基本上是集中在波士頓, 786 00:55:24,670 --> 00:55:29,510 然後我花了一點時間在從波士頓郊區輻射。 787 00:55:29,510 --> 00:55:32,780 但我也做了相當多的諮詢服務,一年。 788 00:55:32,780 --> 00:55:36,090 今年是東部沿海地區,實際上,你可以看到我 789 00:55:36,090 --> 00:55:41,920 我在我的口袋裡的iPhone在波士頓和紐約之間來回行駛 790 00:55:41,920 --> 00:55:47,510 和費城的進一步下降,以及花費一點點的休假時間 791 00:55:47,510 --> 00:55:50,340 在開普敦,這是小胳膊有。 792 00:55:50,340 --> 00:55:53,030 因此,每一個這些點代表我已經有一些地方, 793 00:55:53,030 --> 00:55:56,970 我完全不知道的是,這整個歷史只是坐在那裡, 794 00:55:56,970 --> 00:55:58,410 在我的桌面計算機上。 795 00:55:58,410 --> 00:56:00,470 如果你縮小 - 這其實是一個小麻煩的。 796 00:56:00,470 --> 00:56:04,190 我不記得曾在賓夕法尼亞州,尤其是今年。 797 00:56:04,190 --> 00:56:07,840 但我雖然有點困難,我想通了,哦,這是事實,旅 798 00:56:07,840 --> 00:56:11,160 果然,我的手機已經抓住了我。 799 00:56:11,160 --> 00:56:14,180 >> 蘋果自加密信息, 800 00:56:14,180 --> 00:56:17,380 然而,這也僅僅是證明關於我們多少信息被收集, 801 00:56:17,380 --> 00:56:20,850 以及如何輕鬆 - 或好或壞 - 這是可以接受的。 802 00:56:20,850 --> 00:56:23,340 其中一個外賣希望從Rob的談話,從Nate的談話 803 00:56:23,340 --> 00:56:27,370 今天這個樣子是小的視覺效果,更認識到這一點 804 00:56:27,370 --> 00:56:31,160 所以,即使 - 羅布的點 - 走,排序完蛋了,對不對? 805 00:56:31,160 --> 00:56:33,920 有沒有什麼我們可以做的,當涉及到其中的一些威脅, 806 00:56:33,920 --> 00:56:37,130 但在一天結束的時候,我們要相信某事或某人 807 00:56:37,130 --> 00:56:38,510 如果我們想使用這些技術。 808 00:56:38,510 --> 00:56:43,150 至少,我們可以做出明智的決策和計算決定是否 809 00:56:43,150 --> 00:56:46,390 實際上,我們應該檢查這個特別敏感的帳戶 810 00:56:46,390 --> 00:56:49,330 實際上,我們應該發出那略帶懷疑的即時消息 811 00:56:49,330 --> 00:56:52,180  在這樣一個Wi-Fi環境。 812 00:56:52,180 --> 00:56:54,990 >> 因此,隨著中說,只有一次測驗,一次講座依然存在。 813 00:56:54,990 --> 00:56:57,740 我們會看到你在週三然後週一。 814 00:56:57,740 --> 00:57:02,100 (熱烈的掌聲和歡呼聲) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]