程式設計師在網際網路上重建信任的 9 個方法

oschina發表於2015-07-29

在認知上來看,網際網路十分嘈雜不堪。如同 Peter Steiner 在他著名的諷刺畫中所設想的這樣一種場面:我們無法知道與我們進行資料交換的是在一條狗還是一個宣稱保護我們 money 的銀行,數百萬的同行都嘲笑這個設想。為了使人們意識到事實情況比這更糟,Edward Snowden(大黑客斯諾登)揭示了NSA(美國國家安全域性)可能正在偷窺我們一部分甚至全部的隱私資料的行為,並想盡辦法來緩解我們的憤怒,其他的國家和一幫流氓黑客可能十分樂意接受 NSA 的領導。

然而,我們一直不停的將我們大量的資料資料傳送到路由器中,樂觀的猜想這些資料將全部被處理掉。甚至,當這種樂觀遭受打擊時,麻煩也是很容易處理的。黑客們可能入侵聯邦電腦,偷取我們稅務資料的復件,直到他們也開始收取你的稅前,這可能都不會有太大的影響。當某個人偷了我的信用卡在辦公用品店買了一部 iPad,信用卡公司掩蓋掉了這些損失。這使人很容易被像這種虛假的安全感所哄騙。

雖然我們大多數人到目前為止未受到過網際網路的混亂和缺乏信任而引起的問題,但是這並不意味著我們可以繼續把這個問題拋到腦後。這不僅僅讓騙子更大膽,其中更深層次的社會成本高的驚人。最終,我們都必須通過更高的價格承擔欺詐的成本。並逐漸侵蝕傷害我們所有人的信任。

我們可能無法揮動魔杖讓網際網路完美,但我們可以新增特性來改善在網際網路上的信任。為此,我們提供以下九個想法來更強的支援保證我們的資料,隱私,通訊安全。完全解決網際網路可能是一個崇高的(不可能達到的)目標。但是,要是我們每個人都考慮我們當前的工程中新增安全(措施),我們將會慢慢開始讓網際網路變得更值得信賴。

向主要服務加入公共金鑰

Facebook 努力去確保其使用者是使用了真實姓名的人。鑑於其努力嘗試的力度和規模,以及人的天性,我們不能假定 Facebook 已經取得了完全的成功,但是它這樣長期的努力去推動在使用者賬戶的姓名中建立信任,這對於網際網路的助益是巨大的。

今年最好的訊息可能就是 Facebook 準備允許其使用者通過 Facebook 的系統分發他們自己的 PGP 公共金鑰。任何想要通過 PGP 向一個人傳送電子郵件的人很快就能夠去 Facebook,下載這個人的公共金鑰,並立即開始進行安全的通訊了。

還有諸多原因導致這一過程並不能完美的確保安全性,但它比使用更少被防護起來的公共金鑰資源庫更加安全,在分發正確的公共金鑰時也可能比隨意選擇的一個 Web 頁面更加安全。最近我檢查過,網上有一些在公共 PG P伺服器上冒用我名字的金鑰,其實跟我一點關係都沒有。相比執行在隨機伺服器上的志願者服務,Facebook 絕對是一大進步了。

我們扔還是要去擔憂虛假賬戶,以及 Facebook 與我們之間連線的安全。不過毫無疑問的是,你所瞭解的能夠持續更新其狀態的人,會讓建立對金鑰的信任變得更加容易起來。

其它的服務將會分發公共金鑰嗎?他們會開始去構建一個信任的 web 嗎?銀行和信用聯盟可能將會是好的開始。出納以及聯盟分支已經對他們的常客有所瞭解,而他們可以向公共金鑰資源庫新增信任。學校和大學瞭解他們的學生,有時候可能會是另外一個選擇。任何事物,如果可以讓我們更接近 PGP 的創始人 Phil Zimmerman 所設想的受到信任的 web,對每個人而言都是有益的。

建立更好的隨機數字生成器

如果攻擊者能夠猜想你的密碼,這個世界上所有的所有的加密手段都無法幫助你保證密碼安全。傳統的方法之一是,運用被一個隨機數生成器生成的隨機密碼來阻止這種攻擊。但是,我們能相信這個隨機數生成器嗎?

這不僅僅是一種理論上的攻擊。2007年,微軟的研究人員們發現了 Dual_EC_DRBG 一個潛在的後門,之後業內便不再像過去那樣頻繁的使用隨機數生成器了。在經過一年的的問題探尋之後,最終在2014年,美國國家標準技術局放棄了支援隨機數生成器演算法。

發現後門仍然是很困難的,同時,假定優秀的研究員會去研究後門的想法是很危險的。如何能夠確定我們的隨機數字生成器是安全的呢?例如,可以使用加密安全雜湊函式來進一步打亂生成器產生的隨機值,用來增加複雜性。

任何加擾過程也會加入額外的資料,這樣攻擊者就更難控制了–例如,精確的時間,或從Web下載的一些全域性資料,如比特幣塊鏈頂端的當前雜湊值。這可以阻止攻擊者控制來自數字生成器的輸入。

由於越來越多的演算法使用加密,我們需要比以往更多的隨機key。確保一種穩定的,無法猜測的技術來生成隨機key,將會是構建穩定基石的長久之計。

擴充套件授信硬體

就硬體層和現代電腦的複雜性而言,假定它們的安全性是不合理的。由於許多潛在的後門,我們的桌面電腦,手機,甚至是印表機,都不能說完全處於我們的掌控之中。

研究團體已經通過建立特別的,只做單一事情的小型電腦進行了長期實驗。一些電腦計算一次特別的登入,其它的則計算數字簽名。使用者的私鑰鎖定在一個晶片內,這樣就很難取出私密資料。由於無法證明資料仍然是安全的,裝置可以具備一些合理的防禦措施來限制攻擊。它可以,例如,具備一種手動開關,這樣它就無法暗地裡啟用了。同時,當開關開啟的時候,它也會拒絕進行多個值的簽名。

如果每個人都拿著這樣小巧的授信裝置,人們就可以建立更容易信任的數字簽名。儘管存在損耗和妥協的問題,但是它確實增強了網際網路上的可信性。

將Merkle樹加入到檔案系統

數字檔案,眾所周知,是容易修改的。篡改紙質記錄通常會暴露意圖,而數字檔案則可以隨心所欲的修改。更糟糕的是,大多數檔案系統並不太關注保護檔案記錄的修改。高明的黑客不僅僅能修改檔案,同時也能修正記錄時間,就像檔案沒有做任何變動一樣。

最簡單的探測修改的方式是使用加密安全雜湊函式,雜湊值就像校驗和一樣很難偽造。任何資料的改動都會在雜湊值中體現出來,同時,實際上不可能存在某人修改了檔案,但是雜湊值卻沒有變化的情況。

當檔案改動後,雜湊值序列就會使用Merkle樹以雜湊的方式組織起來。這樣,我們就可以知道檔案的歷史記錄,包括檔案是何時修改的。像這樣計算雜湊值,已經是Git協議的一部分了。我們越是將這些想法更多的融入到通用的檔案系統,就越是能保證檔案的準確性。系統可能只需要檢測變動,而不需要實時修正,但這已經比一無所知要好得多了。

建立更多的塊鏈並向他人推廣

對許多政治和社會團體來說,比特幣生態系統令人難以琢磨 ,原因是其核心部分的塊鏈(由塊區組成,塊區是比特幣中一種資料的儲存形式)經常被覆蓋掉。人們熱衷探究比特幣主要是按照倆個方面來推測,一、比特幣是否會推翻中央銀行系統,二、比特幣是否會創造一個邪惡的,毫無約束的世界。無論上面的答案是什麼,很重要的一點是:不能讓上面的猜測遠離這個事實,即塊鏈能增加網路的穩定性和信任感。

在比特幣系統的核心部分,比特幣是一個集中的總賬單,這個賬單以一種十分難以理解的方式記錄著交易記錄,如果實際上這種記錄不可行,就會改變記錄方式。總的來看,這個總賬單記錄了一個人向一個人轉移比特幣,但是,我們不知道為什麼不去將塊鏈用於將他人的資料具體的儲存在虛擬世界中。例如,如果一個學生上交一篇文章,他也可以在塊鏈上記錄一個檔案的雜湊演算法。如果這篇文章被垃圾郵件回收機制過濾掉了,或是其他什麼原因阻攔了,這個學生依然能證明這篇文章在某個特定的時間上交過。

如果有人懷疑這些文章在某個特定的時間存在過,我們有一百萬種像這樣不同的方法給網際網路新增信任,同時一些比特幣創業公司正在探索如何將這些方法商業化。儘管比特幣集中化存在的無數問題正在暗中破壞我們的世界,同時運營塊鏈需要高額的花費,但是,塊鏈的核心技術對如此多並不單一的貨幣交易是穩固又十分有用的。

為網際網路互動新增鏈鎖

基本的HTTP響應,是網際網路上最簡單的部分之一,所做的並不僅僅是傳送一些位元組。HTTPS增加了一個安全層,這個安全層可以阻擋偶然偷聽的人,同時還可以阻擋標記變動,但是為所有的互動都新增一個安全層花費是十分巨大的。

一個簡單的解決方案是計算所有相互作用間的 Merkle 樹。雖然不是所有的 HTTP 流量都能落在一個簡單的、容易雜湊成樹形圖的命令列表中,但它們的大多數是可以做到的。這個困惑來自於對一些頁面的一連串的 Ajax 呼叫,這些頁面可以被簡化為對樹形結構的微小變化。

建立交聯認證的網站群

基本的 Git 倉庫都提供了不止一個區域來儲存文件。這個可以儲存文件並將它們推送到其他庫的協議,同時也在監視那些已經被提交的、並經過 SHA-1 雜湊計算的所有文件,以免被篡改。

然而為什麼要止步於就一個資源庫呢?為什麼不同其他的資源庫互相交換數字簽名或者雜湊值,以此來擴充收到信任的網路呢?

星際檔案系統(The Inter Planetary File System)就是對將 Web 轉換成一個大型互聯檔案系統的一個試驗。我們需要探索出更多將站點間資訊連結起來的方式。網站的策劃者們可以一同來嘗試構建一個站點間受到信任的 web。

加入同態加密

伺服器可以使用進行了加密的同時仍然可用的方式來儲存資訊。換言之,伺服器可以在不損害使用者隱私的前提下繼續儲存使用者的資料。在我的《半透明資料庫(Translucent Databases)》中,對此有一些簡單版本的詳細介紹。

在過去幾年,出現了一系列針對以加密形式處理資料的理論方法,熱鬧非凡。資料庫可以對大量的個人資訊進行整理和查詢,而不用實際保有這些資訊的非加密版本。它們可以不用去理解底層資訊到底是什麼就能進行計算。

對資料進行計算而不必看到或讀到,這聽起來有點像魔術,但我們已經有幾個很好的實用解決方案。做的最好的可能是 UNIX 口令檔案,它儲存一個加密的安全雜湊密碼而不是密碼本身。當有人登入時,系統會將輸入的字串進行雜湊計算,並將其與資料庫中的值進行比較。但獲取密碼檔案的人不會得到真正的密碼,因為檔案只儲存的雜湊版本。

這些新方法是都有很大的野心,但還遠遠不能用於實際。一些數學問題可能要花費數年時間去解決,但這個程式正變得更快。更多的研究是必要的,但將加密方法變得更容易處理仍然是一個令人興奮的解決方案,它可以讓公司使用資料庫做智慧的事情,而不用擔心人們的隱私。

新增加密措施

這看起來有點愚蠢,最終結果是一個最大最簡單的解決方案,不過新增更多的加密措施確實能使竊聽更加的困難。許多知名網站,像 Google,Facebook 以及 Apple 都預設開啟了 SSL 加密,其它的站點都也跟隨了這些網站的腳步。向整個網路流量新增 SSL 的開銷則更加具有可管理性。

有一些其他的加入加密演算法的標準。IPSec和TLS都可以很好的加密客戶端與服務端資料包。這些演算法即使只相信伺服器,但是某些使用這種解決方案的服務執行在作為中轉的伺服器上的時候,這種解決方案就是不那麼理想了。

email與聊天工具中加入端對端加密工具是對我們日常通訊安全的最基本保障。躍然這可以在伺服器端和作業系統底層被破壞,但這依然是讓人們相信他們在Internet上傳送和接收的資料是由自己掌控並且是安全的最好方式了。

相關文章