重點是我們能否繼續信任科技——和「資訊人權貴」商榷

博客資訊人權貴的一篇文章《FBI 要求蘋果開的,算是後門嗎?自己的隱私自己顧》提出「把手機安全建立於『自主權』的基礎上,更令人安心」。電腦和智能電話記載我們的大量私隱資訊,若我們能夠「自主」掌控這個重要的裝置固然理想,但是當今的資訊安全的問題越來越複雜的時候,我懷疑這種所謂「自主權」在有關安全的討論中是否具有實際意義。

iOS 的加密系統

貴的文章這樣形容 iOS 的加密系統:

但是iPhone跟Android手機不一樣的地方在於:想要解開「全機加密」,需要直接或間接用到兩把鑰匙——一把是用戶的,另一把是蘋果公司的。當然,FBI並沒有厚顏地向蘋果要他們公司的密碼,而是希望蘋果透過某種方式繞過(蘋果電腦公司所掌握的)第一道障礙,然後FBI就可以自行暴力攻擊嘗試用戶的密碼,就像面對全機加密的Android手機一樣。

可是他的說明其實並不準確。

要討論這件爭議,有些細節是不能不知道的,現在讓我簡單解釋一下。

加密資料首先要有密匙,密匙就好像保險庫的鑰匙,產生和保護密匙是加密技術的關鍵。iOS 8 或以上(3/11 補充:這次聖伯納地諾槍擊案槍手的電話是 iOS 9)的密匙由用戶密碼加上處理器的唯一識別碼(UID)產生,這個 UID 的特點是與作業系統和軟件區隔,只能用來衍生密匙而不能取出來。蘋果稱連他們也從不知道 UID 的內容。可能你會懷疑,既然是廠商放入晶片的,怎可能不知道?雖然蘋果的文件並沒有細節,但這技術上可行,亦不是蘋果獨有的功能。當然,我們看不到晶片的生產過程,相信與否視乎對廠商的「信任」。

所以說,文章指 iPhone 的加密方法用到客戶及廠商兩把金鑰並不正確,因為第二把鑰匙其實由處理器晶片專屬擁有,而廠商(理論上)並不知道。

那麼為什麼要有這個專屬的金鑰呢?這關乎文章也有提及的「暴力」(brute-force)破解問題。簡單的密碼容易被「暴力」破解,即是把所有可能的密碼逐一嘗試,直至找出正確的組合。越簡單的密碼,越容易被「暴力」破解。

iOS 8 的密碼可以設定成四位數字或者任意長度的英文和數字(3/11 補充:iOS 9 還可以選擇六位數字)。四位數字的密碼只有一萬個不同的組合,以現今電腦的速度,逐一嘗試易如反掌。選擇複雜的密碼當然更難破解,但極少人能夠記住和願意每次使用電話時都輸入冗長的密碼(一個可以抵禦離線暴力攻擊的密碼大約為 15 個隨機字母)。這是一個「方便」與「安全」之間的取捨。

當多次輸入錯誤密碼,iOS 會故意延遲輸入,和在 10 次錯誤後自動清除資料。可能你會想,能否把已加密的資料複製到另一部更快又沒有這些限制的電腦來破解?這就是 iPhone 的處理器晶片的專屬金鑰的用途。因為這個金鑰是加密密匙的一部份,但又不能複製到另一部電腦,這樣就確保資料不能被移到其他電腦破解。再者,因為啟動程式(boot loader)只容許運行經蘋果的數碼簽署(digital signature)認證的韌體,令蘋果以外的人要運行繞過密碼限制的韌體十分困難(不過仍非沒可能,例如找到啟動程式的漏洞或能夠盜取蘋果的數碼簽署私匙1)。

換句話說,這個晶片專屬金鑰是為了保障使用簡單密碼的用戶,盡可能提高破解密碼的難度。若果製造商忽視用戶偏好簡單密碼這個問題,像文章說「根本靠邊站」,不在密碼之外再加另一道鎖,當然「完全不會惹上蘋果的這身麻煩」,但是這樣執法人員或者黑客都可以輕易破解手機的密碼,這樣將密碼安全的責任完全推到用戶身上,無視一般人手機的個人私隱安全,我認為這是極不負責任的設計。

文章又說,Android 沒有 iPhone 那樣的「第二金鑰」,這也是不正確的(也陷 Google 於不義)。事實上 Android 在 6.0 版本預設啟用全機加密前,已在加密系統中提供類似 iPhone 的晶片金鑰支援,一些較新的 Android 手機亦有這個功能。

安全就是取捨

沒有百分百的安全,這是資訊安全的一項基本原理。任何一個保障安全的方法都有其弱點和成本,包括方便和時間——「安全就是取捨」。iOS 的加密系統設計也是其中一例。一方面,它的設計保障使用簡單的密碼的用戶,另一方面,令 FBI 有機可乘要求蘋果更改軟件讓他們進行「暴力」破解。

蘋果可以改良設計防止這種破解方法,這樣背後也有取捨,譬如限制變更韌體會可能令啟動程式更複雜,增加出現漏洞的機會,或者令修正某些程式錯誤更困難。

安全並非一個絕對的概念,對一些人安全的方法,對另一些人可能不能接受。所以,每當論及資訊安全,我們不得不提每一個方法/建議背後的假設和取捨,術語稱為「威脅模型」(Threat Modeling)。

例如,在《第四公民》裡,斯諾登每次輸入密碼都是躲在棉被下。這樣固然能夠保證密碼安全,但我們無法想象每一個人都這樣輸入密碼,可是對於斯諾登來說,這卻是必須而且生死攸關的。

在《第四公民》裡斯諾登是這樣輸入密碼的 在《第四公民》裡斯諾登是這樣輸入密碼的

現代電腦系統裡,信任必然存在

資訊安全的一個困難之處是現代電腦系統的龐雜。四十年前的電腦發燒友可以一個人用原始的零件焊接出當時先進的個人電腦,但電腦經過了幾十年的發展,今天即使是最資深的工程師也只能理解到整個系統的一少部份。再加上互聯網,我們要處理的己經不只是一部電腦的軟硬件,而是一個由數以千計系統組成、分散而又互相影響的龐大複雜體系。可是,資訊安全卻是「千里之堤,潰於蟻穴」(as strong as its weakest link),入侵者往往只要在這個複雜的系統中找到一個細微的弱點就能達成目的。

在這個前提之下,要假設電腦用家每一步都能做出正確的選擇便顯得不現實。你可以認為蘋果在資訊安全的表現上劣跡 斑斑,也可以相信 Google 的「Don’t Be Evil」,或者選擇透明的開源作業系統和軟件,但不能否認,無論你的選擇是什麼,最後還是需要將電腦的不少控制權交給開發者。

例如軟體自動更新便是一個好例子。軟件常常被發現有漏洞,連對資訊安全重要的基礎軟件也不例外。軟體自動更新能夠讓用戶自動安裝修正安全漏洞和其他錯誤的補丁,在保障安全上有很大作用。可是,自動更新說到底就是將安裝軟件的決定權交託給廠商。即使你用的是開源軟件也一樣,因為開發者同樣可以透過這個功能安裝新軟件。自動更新要求我們需要信任這些廠商或開發者。這是一項取捨。

如果是開源軟件,你可以每次都自行把源碼編譯(compile)成可執行程式,你甚至可以檢查每行程式碼。可是,你最後也會碰到更基本的 Trusting Trust 問題,要編譯源碼你需要編譯器(compiler)的可執行的程式,但我們如何確認這個編譯器沒有後門?

確實,工程師們可以想到很多有趣的 辦法去減少我們對廠商的依賴,但是沒有一個方法是完美的。我們無法完全擺脫信任的需要。

即使軟件上能夠做到完全透明和可驗證,我們還有硬件的問題。以前,硬件是一部電腦不變的機械部分,硬件很少構成安全問題。然而,今天的電腦和智能電話的硬件功能強大,很多時都有獨立的軟件,這些軟件可以被更改,亦同樣有可能成為入侵的途徑。例如,每部流動電話上都有的基頻處理器(baseband processor),它負責管理手機上的流動網路功能,擁有和中央處理器同等的權限,可以存取大部份硬件資源。由 3G 到 LTE,這些基頻處理器越來越精密,所用的軟件亦越來越複雜,所以它們的安全問題一向備受質疑,但是它們卻比作業系統更為封閉。研究員更曾在一些 Samsung Galaxy 電話的基頻處理器中發現一個可以經流動網路遙距讀取資料的後門

舉這些例子並非要為封閉的軟件和硬件辯護。作為減少消費者和企業/政府之間的權力差距,我認為開源是最合乎道德的選擇。我只是要說明我們的處境——在今天的資訊科技體系裡,無論開源與否,信任必然存在。在作業系統上我們或者有些「次自主權」,但是因為資訊安全是環環相扣,在這個語境下談「手機安全建立於『自主權』的基礎上」,只是過度簡化了我們面對的嚴峻困境,並不能回應這個時代的資訊人權問題。而因為「信任」難以避免,令這次蘋果對華府的案件對未來的科技發展影響更為重大。

Everyone around me are not trustworthy

算不算後門

科技界對於加密後門的討論開始於 90 年代初,稱為 Crypto Wars。當時的加密技術大部份仍然由政府和少數企業控制,因應商業上有安全通訊需要,美國政府向業界推出 NSA 開發的 Clipper 晶片,作為一個加密電話通話的方法。但是美國政府把晶片的加密算法保密,外界只能使用晶片加密而不能審閱它的安全性,而且,它會託管加密金鑰(key escrow),讓執法部門可以隨時監聽通話。

今天,強加密算法已經不再由少數人控制,亦有不少的開源加密軟件,政府不可能再為加密算法設限,當局也不是不知道這點。今天政府當局要求蘋果做的,當然和 90 年代初的加密後門有所不同,他們不再著眼於數學(加密學),而是在整個「信任鏈」(chain of trust)中找出最弱一環來攻擊。

但是,無論是在加密算法還是在「信任鏈」的另外一處著手,對於有關後門的討論來說是一樣的,同樣是政府強迫科技界削弱產品的安全性去遷就執法部門監控需要,有關加密後門的討論依舊適用在今天的爭議上。

何況美國政府的要求不止是一個技術上的後門,更加是一個法律上的後門——以法庭命令擴張政府權力,繞過公眾辯論和國會立法程序,為政府強制業界削弱產品的加密技術打開先例。

這次 FBI 引用的《所有令狀法案》(All Writs Act)最初訂立於兩個世紀前的 1789 年。這條法律允許法官「簽發所有令狀」,賦予法官十分大的酌情權,可以要求與案件沒有直接關係的第三方執行法庭命令。例如在 1977 年的一項判決中,法庭要求電話公司在它的線路中安裝撥號記錄器(pen register),用以記錄某條電話線路撥打的所有號碼。

今次這個案例最嚴重的問題是,它給予當局以安全為由逼令科技公司修改產品的權力。假如政府勝訴,沒有其他法律原則為這個權力設下限制,日後它可以要求科技公司在作業系統的自動更新中加入新功能監控個別疑犯,或者要求應用端對端加密技術(end-to-end encryption)的即時通訊軟件的開發商(無論開源與否),例如 Signal、Whatsapp、iMessage 和 Telegram,更改它們的軟件以容許執法部門監聽。

互聯網沒有界限,科技產品有機會觸及世界不同地方。當西方政府帶頭要求科技公司在加密技術中加入後門,中國、俄羅斯等人權紀錄惡劣的國家也會相應跟隨。科技公司可以憑什麼決定哪個國家可以使用這些後門?一旦有了後門,當中國等政府要求用同樣方法監控異見者,科技公司到時不可能拒絕。

我們對科技業界的信任本來就是脆弱的,畢竟它們為了商業利益做了太多損害用戶的事,而各國政府在這個信任鏈的介入,勢必令我們對科技的信任瓦解。

重點是我們能否繼續信任科技

不久前,哈佛法律學院 Berkman Center for Internet & Society 發表了一份報告,指出隨著物聯網(Internet of Things)的興起,會為監控的方式帶來本質上的變化。物聯網指那些能連上網絡的真實物件,例如電燈、電視、冰箱、空調和攝影機,它們能擁有麥克風、攝象鏡頭、紅外線等不同的感應裝置,可以出現在生活的每個角落。它們不是完整的電腦,但也有和一般電腦相似的硬件和軟件,也需要更新軟件。這些接上互聯網的裝置為執法機構監控提供一個前所未有場所。

譬如在上年二月有報導指 Samsung 的智能電視會不斷紀錄所有收聽到的聲音,然後回傳到 Samsung 的伺服器去分析用戶對電視發出的指令。因為裝置的處理能力有限,這種「雲端」代理在物聯網裝置上十分常見。我們可以想像,政府可能會要求這個裝置的廠商,利用軟件更新來打開麥克風讓執法部門監聽目標人物。這些後門到頭來亦令每一個用戶蒙受更大的安全威脅。

毫無疑問,技術上我們可以做得更好。我們可以令這些物聯網裝置減少對「雲端」的依賴,某些功能上我們還可以運用加密技術來加強私隱保護。但是,若政府有權力強制廠商協助執法部門,這些技術可以提供的保障十分有限。

或者,科技界可以加緊開發透明和可驗證的新技術,完全排除信任廠商的需要。其實科技界近年已經向這個方向發展,例如端對端加密技術的應用,區塊鏈(block chain)的分散式共識機制、減低對 SSL 根憑證依賴的憑證透明計劃(Certificate Transparency)、增加 DNS 可信性的 DNSSEC 等等,但正如上文所述,這些技術只能盡可能減少對廠商的依賴,增加監控的成本,但是我們沒有一個技術能夠完全擺脫信任,而且整個互聯網科技系統十分龐大,要完全排除信任,在可見將來都不太有可能。

而較可行的做法是同時在科技和公民社會。一方面,科技公司應增加資訊安全技術的應用,另一方面,社會繼續向政府施壓,抵抗政府干預和削弱資訊系統的安全性,支持防止政府進行大規模監控的法律。所以 GoogleFacebookTwitter 等矽谷科技巨頭和電子前哨基金會(EFF)等民間組織亦相繼開聲支持蘋果的決定。這場爭議不是關於一部 iPhone,不是關於蘋果,甚至不是關於「全機加密」,而是關乎到資訊科技會否成為打壓自由的體系。


(轉載於關鍵評論


3/13 補充

衷心感激原文作者在他的博客裡回應了筆者的文章。這是我的一點補充。

「算不算後門」:我不同意在這個討論上應該對後門作狹窄的定義。無論政府要「不准使用政府無法解密的加密技術」,託管加密金鑰(key escrow),或者強制軟件開發者(也可以是開源軟件)利用軟件更新的方法去讓政府取得資料,對民眾的資訊安全的侵害沒有很大分別。雖然在實行方式和個別細節上有所不同,但 90 年代 Crypto Wars 有關加密後門的討論在今天的問題上依舊有效,最終的問題是我們無法在技術上限制只有「好人」可以使用這些機制,這些方法最後很有可能會成為弱點被黑客或者(現在和未來的)威權國家所利用。《紐約時報》剛剛就揭露了政府正準備對 Whatsapp 提案,要求它協助截取端對端加密的通訊內容,有人預計政府會要求 Whatsapp 改動伺服器軟件去容許「中間人攻擊」。可見這回合有關加密技術的爭議並非蘋果或者智能手機的個別問題,政府在限制底層的加密算法以外其實還有其他手段,我們不能說只要政府不是「不准用強的加密演算法」就沒有問題。

「要信任誰,是主角自主的決定」:正如筆者的文章裡提到,一個電腦或者手機裡有很多部份只能信任生產商(例如手機的基頻處理器),今天的情況看來比較像是消費者在購買手機的一刻就決定了要信任誰。現代智能產品雖然並不便宜,但要「轉會」的代價也未至於大到不可能(支持一下另類 選擇)。一直以來討論的 lock in 問題仍然存在,但今天大部份軟件都支援不同平台,數據很多時都在雲端,我對雲端軟件做成的 lock in 效果還比較擔心。事實上,筆者認同開放的系統有很多優點,例如上文提到可以減少權力不對稱,亦能為創新提供更好的環境等,不過支持開放系統,並不需要認為它在所有領域都是最好的。至少在資訊安全上,開源也有不少嚴重的安全問題,作為軟件工程師的筆者看不到有明確理據去主張開放必定比封閉對消費者更安全(反之亦然)。

  1. 貴的文章說:「Stuxnet事件跟Flame事件顯示美國政府跟俄國政府早已握有蘋果公司的簽章金鑰」,但它引用的原文其實是這樣:「They would need to have stolen Apple’s code-signing key so that the phone would recognize the hacked as valid, but governments have done that in the past with other keys and other companies. We simply have no idea who already has this capability. 」原文指在 Stuxnet 和 Flame 的事件中,政府曾經盜取過其他公司的金鑰,我們不知道他們是否有能力同樣盜取蘋果的金鑰。但這和「政府早已握有蘋果公司的簽章金鑰」這樣的正面確定相差太遠吧。