自從今年六月以來， 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，它當然可以側錄你的鍵盤螢幕。它會不會真的這麼做？ 我不知道。但請不要跟我談 「以小人之心度君子之腹」——加密的意義就是要讓所有人都沒有機會成為小人；如果私密通訊還需要仰仗第三者的君子風範，那一開始就不需要談加密了啊！
再來是 「中間人攻擊」。它主要是針對未加密的資料。但是某些加密演算法 （例如原始版的 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 自由軟體應該沒去使用它，所以不會有問題。