什麼是零知識加密?簡明指南
零知識加密意味著服務商無法存取你的資料。
零知識加密是一種以提供者為界線的架構:服務不持有解密所儲存使用者內容所需的金鑰。在標準的雲端加密中,內容金鑰由服務商控制;用戶端加密則可以把這項能力留在使用者的裝置上。法律要求、資料外洩或內部人員,仍可能洩漏提供者保留的密文、帳號記錄、流量資料或其他中繼資料。NIST 的金鑰管理指南把金鑰保管視為存取的核心,但用戶端 App、作業系統和已解鎖的裝置,仍然屬於信任邊界的一部分。
零知識加密的運作原理
最簡單的比喻:飯店房間的保險箱,只有你自己設定密碼,飯店從頭到尾都不知道。如果你忘了密碼,飯店也無法替你打開。這不是設計上的缺陷,而是設計本身。
在技術術語中,零知識加密透過三個步驟運作:
在裝置上衍生金鑰。使用者提供密碼、通關片語或圖形等憑證。以密碼為基礎的金鑰衍生函數會把它和鹽值結合,在使用者的裝置上產生金鑰。分層清楚的設計會用這把金鑰去解開一把隨機的內容加密金鑰,而不是直接用人記得的憑證加密每個檔案。
傳輸前加密。所有資料在裝置上使用衍生金鑰加密,然後才離開裝置進行雲端儲存或備份,上傳的是加密輸出(密文)。
提供者拿不到明文內容金鑰。內容金鑰在使用期間必然存在於用戶端的記憶體中,也可以放在經過驗證的加密信封裡,存於本機或遠端。提供者可以儲存密文和包裝過的金鑰,卻不持有打開它們所需的使用者秘密。帳號、流量、記錄大小和時間等中繼資料仍可能被看見。
關鍵限制:如果使用者遺失所有有效憑證和復原途徑,加密內容就無法存取。復原機制仍可存在,但必須說明金鑰由誰保管。如果只靠電子郵件重設就能恢復可讀內容,不需要舊裝置核准、復原片語、復原金鑰或其他由使用者持有的同等秘密,就代表提供者仍握有一條通往明文的有效途徑。
零知識加密 vs. 其他類型的加密
幾乎每個雲端服務的行銷文案都會提到「加密」,但不同類型之間的差異很大。
| 類型 | 金鑰持有者 | 服務商可讀取資料 | 可抵抗服務商外洩 | 範例 |
|---|---|---|---|---|
| 無加密 | 不適用 | 是 | 否 | Dropbox(標準版) |
| 傳輸加密(TLS) | 服務商 | 是(在其伺服器上靜態) | 否 | Google 相簿 |
| 伺服器端靜態加密 | 服務商 | 是(他們持有解密金鑰) | 部分(視外洩範圍而定) | iCloud(標準) |
| 平台端對端加密 | 用戶端裝置和帳號復原系統 | 無法透過一般服務路徑 | 取決於用戶端、復原機制和中繼資料的暴露程度 | 開啟進階資料保護的 iCloud |
| 提供者無法解密的用戶端加密 | 用戶端,以及使用者控制的復原途徑 | 沒有提供者持有的明文內容金鑰 | 內容可保持加密;中繼資料和密文仍可能外洩 | 加密保險庫和備份系統 |
「靜態加密」和「零知識加密」之間的區別是最常被混淆的。在靜態加密下,服務商用自己控制的金鑰在伺服器上加密你的資料。這可以防範伺服器硬體遭竊,但無法防止服務商讀取你的資料、政府以傳票索取資料和金鑰,或內部人員的威脅,因為服務商握有解密能力。至於提供者無法解密的用戶端加密,依照公開說明的協定,服務不會拿到明文內容金鑰。儲存的密文對提供者來說可以一直無法讀取,但用戶端軟體、復原途徑、帳號中繼資料和軟體發布管道,仍然需要信任與檢驗。
為何零知識加密很重要
資料外洩每年影響數十億條記錄
Identity Theft Resource Center 報告指出,2023 年美國發生 3,205 起資料外洩事件,影響約 3.53 億人。當提供者持有內容金鑰時,一次外洩就可能同時暴露儲存的資料和解密的途徑。提供者無法解密的加密把兩者分開:伺服器遭入侵時,密文和中繼資料仍可能外洩,但不會外洩提供者持有的明文內容金鑰。憑證被猜中和用戶端遭入侵,則是另外的風險。
法律強制是真實的威脅
提供者可能被要求交出他們保留的資料。由於提供者不持有明文內容金鑰,提供者無法解密的設計能把回應範圍限縮在密文,以及現有的帳號、流量、帳務或服務中繼資料。對方能否取得使用者憑證、攻擊用戶端或強制揭露,則是另一個問題。Apple 在 iOS 16.2 推出進階資料保護,作為 iCloud 資料端對端加密的選用擴充。
「信任我們」不是安全架構
伺服器端加密仰賴提供者控制的金鑰和政策。提供者無法解密的加密改變了金鑰的保管方式,讓公開說明的服務路徑中不存在明文內容金鑰。這是更強的架構界線,但它的效力仍取決於正確的用戶端程式碼、經過驗證的軟體發布、健全的復原設計、安全的裝置,以及與規格一致的實作。
密碼學背後的 NIST 標準
AES-GCM 由美國國家標準與技術研究院(NIST)在 SP 800-38D(2007 年)中標準化。AES 本身是 NIST 在 2001 年透過公開競賽選出的。AES-256 的「256」指的是 256 位元的金鑰。對均勻隨機的金鑰進行窮舉搜尋,在運算上不可行;但即使金鑰衍生函數輸出 256 位元,人記得的密碼或圖形所能提供的熵也少得多。
GCM(Galois/Counter Mode)提供經過驗證的加密,也就是解密時能偵測到密文是否遭竄改。只要加密資料中有一個位元被改動,解密就會失敗,而不會產生損壞的輸出。這讓攻擊者無法在不被發現的情況下操弄加密資料。
PBKDF2(Password-Based Key Derivation Function 2,以密碼為基礎的金鑰衍生函數 2)定義於 RFC 8018,它透過反覆呼叫偽隨機函數,把人提供的憑證轉換成固定長度的金鑰材料。迭代次數越多,每次猜測的成本就越高。但迭代不會替容易預測的圖形或密碼增加熵,所以憑證的選擇和離線驗證仍然很重要。
Vaultaire 如何實現提供者-金鑰分離
Vaultaire 是一款在用戶端加密的 iPhone 保險庫。就產品宣傳常說的「零知識」而言,它公開說明的主張範圍更窄:Wraxle 不會收到明文的保險庫內容,也不會收到解密所需的金鑰。
以下說明每一層的實作方式,以及仍然存在的信任邊界。
金鑰衍生。使用者在 25 個點的 5x5 格點上繪製圖形。PBKDF2-HMAC-SHA512 將這個順序與一個全裝置共用的 Keychain 鹽值結合,進行 600,000 次迭代,衍生出 256 位元的保險庫金鑰。保險庫金鑰會驗證加密索引,並包裝另一把隨機的 256 位元主金鑰。復原資訊(包括圖形)存放在以 AES-GCM 加密的 Keychain 資料庫中,而不是純文字檔案或 Vaultaire 帳號。
檔案加密。每個匯入的檔案都在隨機主金鑰下以 AES-256-GCM 加密。CryptoKit 用全新的 nonce 建立經過驗證的密封盒,串流格式則為每個依序排列的區塊衍生各自不同的 nonce。
中繼資料加密。檔案名稱、MIME 類型、日期、索引記錄和縮圖資料也以 AES-256-GCM 保護。Vaultaire 的保險庫中繼資料不使用 ChaCha20。
金鑰管理。Vaultaire 把裝置鹽值和加密的復原資料庫,存成一般的 iOS Keychain 通用密碼項目,並以 WhenUnlockedThisDeviceOnly 存取等級保護。圖形衍生的保險庫金鑰和隨機主金鑰,在 App 記憶體中透過 CryptoKit 處理。鎖定時會丟棄使用中的金鑰狀態,但 Swift 和 iOS 無法保證每一份暫存副本都被覆寫。
保險庫探索。一般介面不會顯示保險庫清單。所有保險庫的頁面都以隨機名稱放在同一個資料夾裡,所以檔案名稱不會顯示檔案屬於哪個保險庫,也不會透露圖形、名稱或明文內容。不過,能存取 App 容器的人仍然可以估算你有多少個保險庫,因為儲存 arena 的數量限制了這個數字。請參閱完整的安全架構和圖形加密說明。
如何判斷 App 是否使用真正的零知識加密
三個花不到一分鐘的測試:
忘記密碼測試。如果只靠電子郵件重設就能恢復可讀資料,請追問是提供者持有的哪種機制找回了實際的內容金鑰。由使用者保管的復原片語、舊裝置核准,以及由提供者控制的重設,是不同的設計。
新裝置測試。如果新裝置能還原可讀內容,請找出是哪個秘密或受信任的裝置授權了它。若只要登入帳號就行,代表有一條由提供者控制的復原途徑;復原片語加上加密的備份記錄,則能讓金鑰與提供者保持分離。
帳號測試。電子郵件地址或電話號碼會把身分和服務中繼資料連在一起,但這本身不能證明提供者可以解密內容。請檢查金鑰層級、復原設計、用戶端程式碼或稽核、中繼資料政策,以及經過驗證的密文是否讓人能離線檢查憑證。
這些測試只能用來篩選,不是安全證明。一份前後一致的規格,應該寫明內容金鑰、解鎖金鑰、鹽值、衍生參數、驗證加密格式、nonce 規則、復原信封、本機秘密的儲存方式、雲端中繼資料,以及明文金鑰會在哪些環節出現。獨立審查是比產品標籤更有力的證據。
常見問題
零知識加密和端對端加密一樣嗎?
兩者重疊但不完全相同。端對端加密(E2EE)意味著資料在傳送者的裝置上加密,只在接收者的裝置上解密。零知識加密意味著服務商無法存取資料。服務可以是端對端加密的,但如果服務商在某個時間點生成或存取了金鑰,就不是零知識的。零知識加密是更嚴格的標準。
使用零知識加密時忘記密碼會怎樣?
如果所有有效憑證和復原信封都遺失,你的資料將永遠無法存取。由提供者控制的重設或主金鑰會削弱提供者這道界線,所以復原必須另外設計。Vaultaire 會產生一組由九個單字組成的自訂片語,由它衍生的復原金鑰可以開啟加密的保險庫金鑰信封。這組片語不會重新產生金鑰,也沒有把金鑰編碼在內;在新裝置上還原時,也需要相對應的加密 CloudKit 記錄。
執法機關可以存取零知識加密的資料嗎?
提供者可能必須交出所儲存的密文,以及它保留的帳號、流量、帳務或服務中繼資料。只要提供者不持有明文內容金鑰,就無法透過一般的服務路徑解密內容。攻擊裝置、取得憑證、復原副本和強制揭露則是其他途徑,其合法性和成效依司法管轄區和個案事實而不同。
零知識加密比一般加密慢嗎?
AES-256-GCM 的效能與誰持有金鑰無關。以密碼為基礎的金鑰衍生會增加解鎖時的運算量,所需時間取決於演算法、迭代次數、裝置和實作。App 應該在支援的硬體上實際測量這項成本,並在反應速度與每次離線猜測的成本之間取得平衡。
零知識是否代表 App 完全不收集任何資料?
不一定。這個詞講的是服務商與內容金鑰之間的界線,而不是每一條資料流。App 仍可能處理帳號資料、分析數據、當機報告、IP 位址、記錄大小、時間資訊或其他服務中繼資料。Vaultaire 不需要身分帳號。它的 App 分析與當機診斷預設開啟,可以在「設定」中關閉「匿名分享錯誤」。文件記載的事件政策排除保險庫內容、圖形、復原片語和解密金鑰;隱私權政策說明目前的收集與保留規則。
零知識加密與 Apple 的進階資料保護相比如何?
Apple 的進階資料保護(ADP)於 iOS 16.2 推出,將端對端加密擴展到更多 iCloud 類別,並採用 Apple 帳號的復原模式。Vaultaire 在裝置上加密保險庫內容,不需要 Vaultaire 身分帳號;它的 iCloud 備份(預設開啟)以及同步與分享,都使用存放在使用者 Apple 帳號中、經過用戶端加密的 CloudKit 記錄。Vaultaire 另外提供以圖形區隔的保險庫存取和脅迫模式,其儲存與復原限制記載於合理否認性說明文件中。
總結
零知識加密最好理解為「金鑰與提供者分離」的主張:服務不持有解密所儲存內容所需的明文金鑰。這比在提供者控制金鑰下的伺服器端加密更強,但它並不是說金鑰只存在於記憶體中、中繼資料會消失,或每一種用戶端與裝置入侵都擋得住。請根據產品的金鑰層級、復原設計、實作和獨立審查來判斷。
Apple 的進階資料保護(ADP)在 iOS 16.2 推出,將端對端加密擴展到更多 iCloud 類別,並使用 Apple 帳號的復原模式。Vaultaire 在裝置上加密保險庫內容,不需要 Vaultaire 身分帳號;iCloud 備份(預設開啟,可以關閉)、同步和分享,都使用存放在使用者 Apple 帳號中、經過用戶端加密的 CloudKit 記錄。Vaultaire 也提供依圖形分開的保險庫存取和脅迫模式,相關的儲存與復原限制說明於合理否認性文件。