Re: [轉錄]Re: [討論] Gmail收外部信…怎麼放心把密碼交出
> ==>發信人: 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
Programming 近期熱門文章
PTT數位生活區 即時熱門文章