隱私與加密
這些字在App描述中使用得很寬鬆,它們之間的差異正是價值所在。隱藏未鎖定。鎖定未加密。而別人持有的鑰匙其實不屬於你。
-
ChaCha20-Poly1305
-
一種現代加密演算法,既隱藏資料又偵測竄改資料。在手機上速度很快,但舊版本的手機並不總是具有硬體加速功能。
ChaCha20 進行加密; Poly1305 產生一個標籤來驗證資料是否未被變更。它們共同構成了所謂的經過身份驗證的加密——在修改後的檔案上解密會明顯失敗,而不是產生看似合理的垃圾。
它與 TLS 和現代安全訊息傳遞中使用的結構相同。在沒有 AES 加速的硬體上,它比 AES 更快,這就是為什麼手機更喜歡它。
-
密鑰包裝
envelope encryption -
使用一個金鑰加密檔案,然後單獨加密該金鑰的每個通道。更改密碼會重新包裝一個小密鑰,而不是重新加密所有內容。
檔案使用裝置上產生的金鑰加密一次。然後該密鑰被密碼包裝(加密),並再次被恢復代碼包裝。兩個信封,每個信封裡面有一把鑰匙。
後果都是實際的。密碼變更會重寫幾百位元組而不是一百吉位元組。生物辨識解鎖是另一個包裝副本,而不是第二個安全模型。遺失每個包裝就會遺失金鑰,因為金鑰不存在於其他地方。
另請參閱: 復原程式碼ChaCha20-Poly1305
-
復原程式碼
-
一個一次性字串,可以在忘記密碼時解開主密鑰。沒有人可以重新發布它,因為沒有其他人曾經擁有過它——包括編寫該App的人。
它在設定時顯示一次,它是兩扇門中的第二扇。如果將密碼寫下來並保存在裝置以外的地方,忘記密碼就會帶來不便。
如果忘記密碼且恢復代碼遺失,則任何人都無法解密檔案。 這不是一個可以爭論的支援政策;這就是沒有密鑰副本的意思。盡可能小心地儲存檔案。
-
誘餌保險箱
plausible deniability -
開啟另一個無害保險箱的第二個密碼。有人試圖解鎖該App,但打開的並不是他們想要的東西。
兩個密碼都是真的,而且都可以開啟一個真實的保險箱。螢幕上沒有任何內容表明存在另一個App,也無法詢問App正在顯示哪一個。
它的存在是為了拒絕解鎖不是一種選擇的情況-邊界、要求、有人站在你身邊。單獨加密並沒有什麼幫助,因為問題不在於金鑰,而是被迫使用它。
-
鑰匙圈
-
系統的小秘密受保護存儲,由裝置的安全硬體支援。這是密鑰和令牌所屬的地方,並且不應放置任何大的東西。
其中的物品可以攜帶條件:僅在裝置解鎖時可讀取、僅在該裝置上、僅在生物辨識或密碼確認後。這些條件是由硬體強制執行的,而不是由App禮貌地詢問。
它儲存秘密,而不是資料。鑰匙、代幣和包裝材料都放在那裡;加密檔案本身位於磁碟上,大小不是問題。
-
休息與運送中
-
靜態加密表示在磁碟上不可讀。傳輸中加密意味著在網路上不可讀。它們是單獨的保護,產品可能誠實地主張其中一項,但不採取另一項。
HTTPS 是傳輸中加密:任何人都可以安全地監視網路,一旦到達,另一端的伺服器就可以完全讀取。靜態加密與儲存的副本有關,這在裝置遺失或磁碟映像時很重要。
仔細閱讀隱私權聲明通常意味著弄清楚它是關於兩者中的哪一個。 「你的資料已加密」沒有附加任何一個詞,這是一個已選擇不說的句子。
另請參閱: ChaCha20-Poly1305零知識
-
零知識
-
操作員無法讀取其儲存內容的設計,因為密鑰永遠不會離開使用者的裝置。測試很簡單:他們可以重置您的密碼並仍然向您提供您的資料嗎?
如果一項服務可以在你忘記一切後恢復存取權限,那麼它擁有可以解鎖你的資料的東西——這意味著它可以被迫使用它,並且任何破壞該服務的人都會繼承相同的能力。
交易是真實的,應該明確說明,而不是作為純粹的利益出售:真正的零知識意味著當最後一個鑰匙丟失時真正失去訪問權限。沒有第三種選擇,操作員可以營救您,但其他人卻無法救援。
-
生物識別
Face ID, Touch ID -
是裝置(而不是App)確認您的身分;該App被告知是或否。指紋或臉部資料不會到達App,也都不是密碼。
生物辨識解鎖是一種圍繞著秘密的便利,而不是替代品。它保護的是儲存的金鑰,這就是為什麼密碼總是存在於其後面——生物識別可能會失敗,而後備措施必須是您知道的東西。
比較發生在專用硬體內,模板永遠不會離開它。提供 Face ID 的App只是向系統詢問問題,而不是收集任何資訊。