自從今年六月以來, Edward Snowden 每個月都會爆料更多關於美國國安局 (NSA) 監聽的內幕。 最近一爆是: NSA 真的 以三億台幣 的價碼 誘騙 (還是買通?) 大哥級資安公司 RSA, 在其產品植入後門。 不是說好的, end-to-end encryption 不怕竊聽嗎? 那現在... 到底地球上還有什麼通訊工具是真正能夠保障私密通訊權的呢? 所以我就畫一張圖來解釋各種可能攻擊加密通道的方式好了。
捍衛私密通訊權利的最佳方式, 就是加密。 以簡訊/即時通軟體來說, 自由軟體界的大大們共同推薦 「支援 OTR 的通訊軟體」 (改天再寫一帖好了); 以 e-mail 來說, 那就非 GnuPG 莫屬了。 圖片中的兩位主角採用加密通訊軟體來傳遞訊息; 但如果他們不像貴哥一樣堅持 (幾乎) 只使用自由軟體的話, 那麼 NSA 跟黃世銘 (還有尚未被爆料出來的不知道誰) 還是可以試著從這幾個切入點下手:
- 側錄寄件人的鍵盤或螢幕, 看見加密之前的訊息。
- 側錄收件人的螢幕, 看見解密之後的訊息。
- 側錄封包, 甚至深度封包檢測, 進行 「中間人 (MitM) 攻擊」。
- 在收件人的亂數產生器 (Random Number Generator) 裡動手腳。
側錄鍵盤螢幕的軟體, 基本上就是未經你允許而入侵了你的電腦的惡意程式。 在電腦上要避免側錄鍵盤螢幕, 最主要的方法就是安裝防毒軟體之類的 (linux 與 *bsd 則不需要)。 另外, 也要避免亂點 e-mail 裡面的附加檔 (一般 linux 與 *bsd 的預設設定, 稍微比較不怕這類錯誤)。 瀏覽器安裝 noscript 之類的, 可以避免來自陌生網站上的惡意程式; 不過有時要開某些網頁 -- 特別是那些 「只針對特定瀏覽器甚至特定版本設計、 不遵循公開標準」 的網頁 -- 會變得比較麻煩。 至於在手機上要避免側錄鍵盤螢幕, 就比電腦更困難一些了。 FinFisher 透過 Windows 版 iTunes 多年未補的升級 「漏洞」, 讓人不知從何防起。 Carrier IQ ( android 版/ iPhone 版 則是直接燒在原廠手機裡面, 誰會想得到; 知道了又能怎麼辦呢? 看來把 android 手機刷成開放原始碼版本的 CyanogenMod (CM), 然後 不要 root CM, 這似乎是可以大幅提升安全度的策略 -- 因為 CyanogenMod 絕不可能被植入 Carrier IQ 這樣的程式。 貴哥自己都還沒做到。
但是不只是網路上的潰客會試圖在你的電腦/手機植入惡意程式側錄鍵盤螢幕。 最近 臺灣政府/ 蘋果/美國政府 的一連串動作顯示: 你們公司的網管也有可能會以 統一管理公司所有行動裝置 為由, 要求安裝 MDM 軟體。 你可以選擇拒絕相信這背後有陰謀; 但你至少要知道一個不爭的事實: MDM 就是公司網管安裝在你的手機裡的 rootkit, 它當然可以側錄你的鍵盤螢幕。 它會不會真的這麼做? 我不知道。 但請不要跟我談 「以小人之心度君子之腹」 -- 加密的意義就是要讓所有人都沒有機會成為小人; 如果私密通訊還需要仰仗第三者的君子風範, 那一開始就不需要談加密了啊!
同樣地, 像是 臉書側錄你未 po 的文章, 這也都不在加密保護的範圍之內, 因為臉書的 javascript 直接在你的電腦上執行, 它看到的是加密之前跟解密之後的資訊。 臉書版的 OTR 可能可以解決這個問題, 我還沒仔細研究過。
再來是 「中間人攻擊」。 它主要是針對未加密的資料。 但是某些加密演算法 (例如原始版的 Diffie–Hellman) 本身具有這樣的弱點, 讓中間人不需要破解也可進行竊聽。 比較奇特的是 iMessage 的後門: 蘋果電腦原本明明採用不怕 MitM 攻擊的加密演算法, 但是蘋果卻不是讓通話的兩者直接看見對方的公鑰、 直接對話, 而是在當中穿插了不必要的複雜機制, 反而讓 MitM 有機可乘。 總之, 要避免 MitM, 就要堅持: (1) 選用不怕 MitM 的加密演算法 (2) 直接看到對話方的公鑰。 這樣, 就算政府/ISP/網管進行深度封包檢測 (deep packet inspection), 也無法打開你的訊息。 GnuPG 符合這兩點; 自由軟體的 OTR 實作應該也都會符合這兩點。
最後是亂數產生器 (RNG)。 因為當今的加密演算法大多要產生極大的數字作為金鑰, 所以幾乎都會用到它。 這兩天爆開的 NSA 誘騙/買通 RSA 安置後門一事, 證實了 RSA 演算法的 RNG 後門 不只是理論而已; 它所採用的 Dual EC DRBG 亂數演算法, 正好也就是 埋在微軟 Windows 裡的同一個後門。 這種類型的後門, 受影響的是收件人的金鑰。 也就是說, RNG 後門的中鏢者, 他所寄出去的訊息並不必然會被監聽; 但別人寄給他的訊息則會被監聽。 (圖中右側的兔子如果他產生金鑰時, 使用的是中了鏢的 RNG, 那麼因此而被竊聽的, 卻會是左側的貓耳女寄給兔子的訊息。) 想要避免成為 RNG 後門的受害者, 就要確認你在寄出私密訊息時, 收件人所使用的加解密軟體的程式(包含亂數產生器!)的原始碼有公開。 不過... Intel Ivy Bridge 系列 CPU 裡 充滿爭議的硬體亂數產生器, 會不會是 傳說中的 linux 後門? 這還有待進一步研究... 不過我相信 GnuPG 與 OTR 自由軟體應該沒去使用它, 所以不會有問題。
談了那麼多, 最重要的結論還是同一個: 如果你在乎私密通訊權, 那麼就請下定決心, 努力勸說 自己 以及 可能接收自己私密訊息的朋友們 逐步改用自由軟體 吧。 另外, 「隱私/安全」 跟 「方便」 經常是成反比的。 「Linux/*BSD 比較難用」 有很大一部分原因跟這個因素有關。 然後, 因為今天 (12/22) 是冬至, 所以應該也可以算是世界末日滿一週年, 我決定要以正面的態度看待這個新世界。 我要在此公開向 NSA 跟黃世銘銘謝, 因為有你們的努力, 讓我們推動自由軟體的工作變得比舊世界的年代更省力一些 :-) (被毆)
* * * * *
手邊沒電腦; 口頭推薦本文嗎? 可以請您的朋友搜尋 「加密 怕什麼」。