Re: [轉錄]Re: [討論] Gmail收外部信…怎麼放心把密碼交出

看板Programming作者時間18年前 (2007/03/10 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
> ==>發信人: HowLeeHi.bbs@ptt.cc (想和妳去把把風), 信區: programming > 作者: davidyu (davidyu) 看板: Google > 果你對 compiler 的知識還算熟悉的話,應該知道 C 的 compiler 是可以用 C 來寫的 > 這是一個雞生蛋,蛋生雞的問題,不過我們的確是用 C 來寫 C compiler。 > Thompson 的 compiler 之所以特別,是他在其中偷偷藏了一個 bug。UNIX 有一個程式 > 叫 login,它是負責核對使用者帳號和密碼的程式。Thompson 的 compiler 如果發現它 > 在 compile 一個 UNIX 的 login 程式時,它會在比對密碼的時候,偷偷加入一筆萬用 > 密碼。如此一來,用這個 compiler 產生出來的 UNIX,都會有這個「漏洞」在。你會說 > 這個只要檢查 compiler 的程式碼就可以發現了。沒錯,所以 Thompson 的 compiler > 還有一個神奇的功能。這個 compiler 如果發現它在 compile 一個 compiler 的時候, > 它會把它本身的這個「神奇功能」放到 compiler 裡頭,所以用這個 compiler compile > 出來的 compiler (我知道這有點難懂 XD)也都會帶有這個神奇功能。之後,他再用 > compiler 把本身自己 compile 一次後,就可以把神奇功能從程式碼裡面隱藏起來,只有 > 從 binary 才看的出端倪。 > 這會造成一個問題,就是你即使有原始碼,你也沒辦法確保你的程式是可以信任的。你 > 要能夠確定你的程式是可靠的,唯一的辦法就是全部從頭來。如果你把這個問題過度延 > 深,你就會發現你可能要從 CPU 的電晶體開始設計,才有辦法「保證」你的程式是完 > 全符合你的意思在執行。 > 所以,信任,不是見簡單的事。 ====== 程式語言的 compiler/interprter 有時候被稱為 Language Virtual Machine, 表示她能讓下層的硬體結合此語言的編譯/解譯功能之後, 讓使用者覺得是在使用一 台 High Level Language Machine. 如同 Thompson 所舉的例子, 當這個 VM 的功能要擴充時, 通常就是"多"認識 一個敘述指令或 keyword 而且能做出對應的工作, 但比起舊的 HLVM 的能力, 這 是多出來的, 所以舊的 HLVM 不認得這新增的指述. 如何讓這新增的指述與舊的一 併結合還能讓舊的 HLVM 能鑑識運作也能編譯解譯出新的指述, 就需看如何讓原本 不認識的指述在舊的 HLVM 如何被識別出來, 然後又能使之跑到一個新定的對應動 作那裡去處理. Thompson 舉的例子是需額外做動作處理的 Escape character, 假設新指令就 是 \VT , 但用 11 矇過 copiler , 使之跳到某絕對地址(11)去執行, 在那個絕對 地址就偷偷的塞進一段 patch 或 後門. 這個特異功能的後門結合舊的 HLVM 功能 就能合成一個新的有特異功能的 HLVM . C compiler 結合硬體形成的這個 HLVM 可以認得 C 語言程式做對應動作, 所 以用 C 寫出來的 C-compiler program 就可以請這個 C HLVM 去做對應動作做出 要求的功能來. 只是, 若用這個含額外特異功能的 C HLVM 照樣也能造出原有的 C-compiler , 這個特例是這個特異功能的新 C HLVM 還加了一個功能, 可進一步地也把新增的特 異功能也掛進這個舊的 C-compiler 裡, 這就使得舊的 C-compiler 也被加注了此 項特異功能. 加掛的時候讓使用者不知不覺就是病毒或後門的做法, 若大張旗鼓讓使用者同意 新增功能就是 download update 行為. AMD 對其新的 processor 的架構與 micro-code 改進了 Virtual Machine 的功 能, 可以設定那種情況要 escape/trap 再由下層看不見的 VM monitor (這就是 Thompson 說的加掛的, 隱藏的特異功能)來做解譯動作. 有人也同樣的認為如果這 個 VM mornitor 就是個後門, 那還真的比那個有 source program 的 C compiler 還不容易察覺. 在舊有的功能機器上加掛特異功能形成新的功能機器, 其原則一直都沒變, 就 是先矇混加掛或插入, 再對特定訊息能攔截轉向到特異功能模組, 隨後就是能銜 接或持續複製擴散. 這個模式就是生物基因與病毒的行徑. 這是概念也是一種技術, 做硬體的是習而不察, 做界面硬體與 driver 的, 或 是對現有程式加掛額外功能的, 則是老招 "加掛-攔截-轉向". 至於特異功能是後門還是會偷密碼, 信用卡號, 還是一個很好用的新增功能, 那就完全是 "存乎一心的 trust 與 credit ". -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234
文章代碼(AID): #15yQ3W00 (Programming)
文章代碼(AID): #15yQ3W00 (Programming)