加密,加密一切


你在網際網路上傳輸的資料不會像魔法一樣從世界一端直接跳到世界另一端。

它需要經過一系列的路由,如果你所在的地方有防火牆的話它還需要經過防火牆的審查,甚至可能經由長達數萬公里的海底光纜,才能到達你的目標。

比如 noarch 要訪問自己的網站 privacy.n0ar.ch, 其中網站的資料會經過這些地方:

[noarch@fedora ~]$ traceroute privacy.n0ar.ch

# 到 privacy.n0ar.ch 的路由追蹤:
traceroute to privacy.n0ar.ch (104.24.98.152), 30 hops max, 60 byte packets

# noarch 的 VPN 本地 IP
 1  10.18.0.1 (10.18.0.1)  25.921 ms  25.904 ms  25.899 ms
 2  * * *

# 美西 Leaseweb, VPN 伺服器提供商
 3  v32.ce02.wdc-01.us.leaseweb.net (192.96.203.93)  25.891 ms  25.967 ms  26.064 ms
 4  ae-10.br01.wdc-02.us.leaseweb.net (173.208.126.36)  26.169 ms be-10.br02.wdc-02.us.leaseweb.net (173.208.126.40)  26.219 ms edm-033.yelaiyehao.com (173.208.126.34)  26.469 ms

# Tata communications, 一個美國運營商
 5  ix-ae-42-0.tcore1.aeq-ashburn.as6453.net (66.198.155.168)  26.833 ms  26.843 ms ix-be-43.ecore1.aeq-ashburn.as6453.net (216.6.87.244)  26.931 ms
 6  if-be-54-2.ecore1.aeq-ashburn.as6453.net (66.198.154.7)  26.941 ms  27.531 ms  27.427 ms

# Cloudflare, privacy.noarch 使用的 CDN
 7  104.24.98.152 (104.24.98.152)  26.984 ms  26.991 ms 216.6.87.221 (216.6.87.221)  27.404 ms

# 實際上資料還會經由 Cloudflare 返回 noarch 的伺服器,但 traceroute 只能追蹤到這裡

這途中任何一個節點都可以擷取你傳輸的資訊。更可怕的是,它們甚至可以修改其中的資訊,將你重定向到惡意網頁,或是向你呈現釣魚內容...

試想一下你在訪問 privacy.noarch 時,所有 noarch 想要傳達給你的資訊都被一個攻擊者替換,引誘你做一些暴露自己隱私的事情。這聽起來真的可怕...

所以 noarch 在 privacy.noarch 上應用了加密。它將你現在閱讀的明文編碼成無法理解的亂碼,並且通過一些方式,只允許你能夠讀取其中的意義。

更詳細一點,加密是什麼?

引用維基百科上的 "Encryption" 條目:

密碼學中,將資訊進行編碼,使原文變成密文,使其難以被未經授權地讀取的行為稱之為加密。理想情況下,只有經授權的人員能夠讀取密文所要傳達的資訊。加密本身並不能防止資訊傳輸被擷取,但加密能防止擷取者理解其內容。

因為種種技術原因,加密方法通常使用一個通過演算法生成的偽隨機金鑰。雖然任何加密後的訊息都可能被破解,但對於一個良好的加密演算法而言,破解需要相當多的技術和算力。

現代的加密方式通常使用公鑰對稱金鑰。現代加密技術依賴現代計算機在破解金鑰上並不高效的事實來保證其安全性。

noarch 翻譯,已將翻譯貢獻至中文維基百科對應條目

為什麼要為資訊加密?

下述“雲服務”和“雲端”包括網盤,E-Mail 以及即時通訊等遠端儲存你隱私資料的服務。

在本文寫成時(2020 年),網際網路上的資訊傳輸和儲存同時比你想象得安全,和危險。

關於它,noarch 有一個好訊息和一個壞訊息要告訴你:

  • 好訊息是,得益於 TLS 的廣泛使用,在網際網路資訊傳輸過程中你的傳送和接收的資訊一般是安全的。

    • 比如你在瀏覽網頁時,只要網頁啟用了 HTTPS, 你就不需要擔心你的學校或公司看到你搜索 bbq sauce on titties. 它們唯一可能知道的是,你在進行搜尋。
    • 不過如果你跟隨搜尋結果的連結進入 PornHub, 它們也會知道你在訪問 PornHub, 但不知道你具體觀看了什麼視訊。
    • 前面 noarch 提到的 privacy.noarch 使用的加密就是 HTTPS。
  • 壞訊息是,你的資訊在到達了“雲端”後會被解密。“雲端”是否加密你的資料,如何加密資料則是完全另一個故事了。

因此,即使傳輸層已經廣泛應用了加密,你的資料在儲存時依然非常危險。你依然需要管理一些加密細節,以防服務提供商、以及可能會搜查或駭入該“雲服務”的敵人侵犯你的隱私。

你需要在失去對自由網際網路訪問時的安全通訊方案

如果你使用微信,你在微信上的所有聊天都可以被按照中國政府的意願審查和訪問

看了 privacy.noarch 的你可能會說,

用 Signal 之類端到端加密,無任何審查的聊天軟體就行了啊!

但請你設想一個情況。有一天 Signal 被防火長城或是你組織的防火牆攔截,並且你用於繞過這個防火牆的代理失效了。你是否需要使用微信, QQ, 或是 E-Mail 等方式傳達緊急資訊,或者通過它們像你的好友索取代理伺服器?

如果在上面的情況下,你需要回退到使用上述不安全的通訊方案,或者直接束手無策,那麼你需要手動進行端到端加密,並且使你的通訊“在敵人的領域下都安全”。

即使是看似本地的檔案儲存,也危機四伏

看毛片沒啥問題,但你不想自己看的毛片被某些“雲相簿”偷偷上傳到“雲端”並且分析。

如果你使用 Android, 在你的 Android 裝置上,進入 設定 -> 隱私 -> 許可權管理 -> 儲存。 在這裡,你可以看到所有能夠訪問你 Android 裝置共享儲存的應用。

如果你不知道“共享儲存”是什麼,它存放著你的照片,視訊,音樂以及下載等非應用資料非隱私內容。當你開啟檔案管理器時,你所見到的第一個介面通常就是共享儲存。

有些粗製濫造的應用,比如一段時間前的微信,濫用它們來儲存應用資料。不過這在 privacy.noarch 是後話了。

前面說到了共享儲存只被用於儲存非隱私資料,不過如果它意外地被用於儲存隱私資料了呢?

如果你有過出國旅行的經驗,你應該會被勸告,

最好給你的護照身份頁和簽證頁拍張照,以防你丟失了護照,沒法證明自己的身份。

然而,你對著自己的護照按下快門後,有幾件事情可能會發生:

  1. 你的護照照片被儲存,什麼都沒有發生。只有你知道這張照片存在,並且只有你能訪問這張照片。

  2. 它會被“雲相簿”上傳到“雲端”。

    1.0. 你的雲相簿會分析這張照片並將其標記為“護照”。

    1.1. 根據你使用的雲相簿的隱私政策,一旦這張護照的照片被上傳,你可能將完全失去對這個資訊的控制。

    1.2. 如果你使用的雲相簿“沒良心”,它會通過你上傳的護照照片,進而獲取你的身份資訊(例如:真名,年齡,護照號,住址...)。這一切都可以被光學文字識別 (OCR) 自動完成。實際上,護照上使用的特殊字型使得 OCR 更加容易。

  3. 你的裝置在過安檢時被檢查,該照片被警察獲取。

    2.0. 你可能覺得這沒什麼問題,畢竟你的護照就是警察發的,並且你本身就在實名過安檢。

    2.1. 但如果你在非法持有多國籍呢? 現在警察知道了你的雙 / 多重國籍,並且這可能標記著你非法多國籍生涯的終結。

    noarch 反對任何非法持有多國籍的做法。

  4. 它被定製的惡意軟體傳送到攻擊者的手裡。這不太可能發生,但如果你是一個高價值目標,你可能現在就是惡意軟體的受害者而不知。

  5. 你的裝置被偷,竊賊販賣該照片,你的護照照片被用於網貸身份驗證。

在閱讀本文之前,你可能以為,只有第0條會發生。然而在這個雲端儲存越來越流行的時代,你的資料往往會被無意識地洩露。

除了拒絕使用各類“雲”服務之外,一個有效保障資料安全的方式就是自己管理加密事宜。這樣,在特定情況下,敵人想要訪問你資料時,得到的只會是一堆加密過,並且幾乎無法被破解的垃圾。

如何自己管理資料加密?

現代的加密方式種類繁多。根據你要加密的資料型別,noarch 會主要介紹兩種加密方式: