Parno博士: 要信任一臺計算機,你需要同時信任計算機的硬件設備和它所運行的全部軟件。如果這臺計算機是你自己的,那么你可以通過一系列標準步驟來確保硬件受信,比如你可以從大品牌的廠商那里購買硬件,當你離開屋子的時候鎖好門窗,只讓你所信任的人使用該電腦等等方法。
幸運的是,大部分人對于保護他們自己的物理資產都非常上心。不過,我們還需要一種方法將對電腦硬件設備的信任延伸到該電腦所運行的軟件上。一些安全裝置,比如剛才你說到的可信平臺模塊(TPM),就是將硬件信任與軟件信任相連接的紐帶。
不幸的是,這個設備所使用的語言是二進制,所提供的保護功能是通過密碼實現的,這兩方面都是普通用戶不夠熟悉的。因此,我們打算采用一個用戶信任的設備,比如你的手機或特制的USB密鑰設備來與TPM進行對話,并將對話結果,也就是安全報告發(fā)送給用戶,告知用戶該計算機是否安全可用。
在論文里我介紹了幾種安全的方法,可以將你自己的可靠設備(比如手機)與計算機中的安全模塊聯(lián)系起來。包括較復雜的采用特殊設備接口連接這兩種設備,還有最簡單的在電腦機箱接縫處貼易損條碼,并通過手機軟件來識別條碼。每種方法都有自身的優(yōu)勢和不足。
記者: 接下來,“商用電腦的按需安全代碼執(zhí)行”是指安全的使用未知計算機。您建議使用一種叫做Flicker的新方法。這個Flicker到底是什么,它有什么作用呢?
Parno博士: Flicker可是說是一種安全架構,它利用了AMD和Intel在CPU中新增添的安全功能,可以根據需要提供安全的代碼執(zhí)行環(huán)境。該架構的目的就是在你的電腦里建立一個完全獨立于其它軟件(甚至硬件)的環(huán)境來執(zhí)行小段的敏感代碼,這樣就算電腦中感染了惡意軟件,這部分敏感代碼的執(zhí)行也不會受到影響。
比如,假設你使用公司提供的VPN網絡從遠程訪問網絡,首先要做的就是在VPN客戶端輸入用戶名和密碼。如果這個客戶端軟件存在bug,或者你的操作系統(tǒng)存在漏洞,或者電腦中任何設備驅動程序存在漏洞,任何以管理員權限運行的軟件存在漏洞,都可以被黑客利用獲取你的VPN用戶名和密碼。
通過 Flicker,我們可以將VPN軟件中有關用戶名和密碼的代碼提取出來,并在一個獨立的環(huán)境中執(zhí)行,這樣就算其它軟件(甚至操作系統(tǒng))存在漏洞,也不會影響在獨立環(huán)境中運行的密碼處理代碼的安全性。
Flicker 還可以顯示出目前隔離環(huán)境中正在執(zhí)行哪個程序,以及某個程序是否處于受保護環(huán)境。換句話說,通過Flicker,你可以看到彈出的密碼對話框確實是處在 Flicker保護下的,同時你的公司也會知道你在使用正確的VPN客戶端軟件輸入正確的密碼,而不是在使用某個惡意代碼。
記者: “在網絡上使用值得信任的基于主機的信息”是你對于保護網絡數據流安全的信條。你提到這個過程必須具有以下特性:
· 注釋完整: 惡意主機或網絡元素無法改變或混淆注釋信息中的數據。
· 網絡處理無狀態(tài): 為了確保那些依賴主機信息的網絡元素的可擴展性,避免這些設備上保持per-host 或 per-flow 狀態(tài)。
· 隱私保護: 我們的目標是防止任何用戶信息泄露,而不是像目前系統(tǒng)這樣漏洞百出。換句話說,我們的目標不僅僅是當用戶訪問某個網站鍵入個人信息時才提供保護。
· 增強的可部署能力: 盡管我們都相信值得信任的主機信息對于未來的網絡會有很大的幫助,但是我們目前應該努力讓部屬該系統(tǒng)的用戶立即體會到其優(yōu)勢所在。
· 效率: 在部署后,該架構必須不會明顯降低客戶端到服務器的網絡性能。
您能簡要的解釋一下上述各點都是如何實現的嗎?
Parno博士: 很多網絡協(xié)議,尤其是與安全相關的協(xié)議,都會花費大量資源試圖改變信息的結構,而這些信息對于信息源來說是已知的。
舉個例子,研究表明,如果你知道電腦將要發(fā)送多少封電子郵件,以及這些郵件的目的地,你就能明確的知道這些郵件是否是垃圾郵件。任何一個郵件接收者都很難完成上述統(tǒng)計,但是對于郵件發(fā)送者來說,這種統(tǒng)計很容易。
通過諸如Flicker這樣的架構,我們可以在隔離區(qū)域里進行這種統(tǒng)計運算,并將其通過加密的方式附加在每一封發(fā)出的郵件或網絡數據包中。郵件服務器在接收到這些郵件后就會知道郵件發(fā)送源主機在最近一個小時內發(fā)送過多少封郵件,比如發(fā)現在過去一小時內,這臺主機只發(fā)送出了兩封郵件,那么這封郵件是垃圾郵件的可能性就很小了。
類似的方法還可以用于其它協(xié)議,比如幫助緩解拒絕服務攻擊或者網絡蠕蟲的泛濫。當然,我們使用這種方法的同時也要注意保護用戶隱私,比如通過組合的匿名技術,仔細選擇作為標記的狀態(tài)參數,以及使用小型的,獨立的可校驗的代碼模塊。
記者: 最后,“可校驗的計算:在不信任的軟件或硬件環(huán)境實現安全代碼執(zhí)行”。據我的理解,這方面主要是針對外包計算和網絡方面的安全規(guī)范。您認為應該使用Yao教授的亂碼電路方案和同態(tài)加密方案。我了解同態(tài)加密,但是Yao教授的亂碼電路方案是什么意思?
Parno博士: 亂碼電路(Garbled circuits)是Andrew Yao教授在上世紀80年代發(fā)明的一種很聰明的技術。它可以讓兩個人針對某個算式來計算答案,而不需要知道他們在計算式所輸入的數字。
舉個例子說,加入你和我都想知道咱們兩個到底誰更年長一些,但是我們兩個都比較謹慎,不想直接告訴對方自己的年齡。使用亂碼電路方案,我們可以通過交換一些信息的方法來讓彼此知道答案(比如我說我比你年輕),但是這種信息交換并不會讓我知道你的確切年齡,你也同樣不會知道我的確切年齡。
通過我的論文工作,我發(fā)現如果修改一下Yao教授的電路結構,我就可以創(chuàng)建一種新的協(xié)議,讓你可以將某個計算功能外包給第三方,同時還能校驗他們的計算工作是否正確。
比如我可以付費給你幫助我進行一些數據的傅里葉變換的計算工作 ,當你將結果反饋給我后,我需要確保你反饋回的數據是確實進行傅里葉變換后得到的數據,而不是隨便給了我一個憑空捏造的數據。
經過修改后的Yao教授的協(xié)議可以讓我對你的計算工作進行約束,從而在你完成計算工作后有效的對計算答案進行校驗。相反,完全同態(tài)加密本身只能保證我所提供的數據安全,而不能告訴我第三方到底對我的數據進行了什么類型的計算。
不幸的是,只是修改Yao教授的協(xié)議還不夠。因為建立一個亂碼電路需要很多工作,而每次計算,都需要重新建立電路?,F在我們通過在協(xié)議上增加一個加密層的方法來解決這一問題,這樣我們就能多次重復利用同一個電路,從而在多次運算中平攤電路的設計成本。
總結
便利性與安全性兼得的方案看上去有些復雜,不過這確實是未來的發(fā)展方向。另外我們還要感謝Parno博士的研究,以及他抽出時間接受我們這次采訪。