是否可以從 libsodium 的 crypto_box 中獲取收件人的公鑰?
Libsodium 具有“crypto_box_seal”,根據文件,它用於“根據其公鑰匿名向收件人發送消息。”,它隱藏了發件人。
但是,假設 Eve 已經有可能的公鑰列表,Eve 是否有可能從由 crypto_box/crypto_box_seal 發出的消息中知道/確認收件人的確切公鑰?
給你 $ E_{H([ab]P)}(n, m) $ 和 $ [b]P $ , 在哪裡
- $ E $ 是經過身份驗證的加密函式,
- $ H $ 是一個雜湊函式,
- $ a $ 是接收者的密鑰,並且 $ [a]P $ 是接收者的公鑰,
- $ b $ 是發送者的密鑰,並且 $ [b]P $ 是發送者的公鑰,
- $ P $ 是標準曲線上的標準基點,
- $ n $ 是一個隨機數,並且
- $ m $ 是一條消息。
如前所述,你的任務是找出哪一個 $ [a_1]P, [a_2]P, \ldots, [a_k]P $ 是 $ [a]P $ . 假設你已經知道 $ n $ 和 $ m $ ; 如果你不知道——如果你對它們的了解有總最小熵 $ e $ 位——那麼你可能不得不迭代這個過程 $ 2^e $ 次。讓我們稍微簡化一下,說你只想知道是否 $ [a]P = [a_1]P $ 或不; 你可以重複一遍 $ k $ 次查找選項中的哪個鍵(如果有)。
假設你有一個隨機算法 $ A(Q, R, c) $ 以高機率返回 1 $ A([a]P, [b]P, E_{H([ab]P)}(n, m)) $ 並以高機率返回 0 對於任何其他輸入。然後我可以定義一個算法 $ A’(Q, R, S) = A(Q, R, E_{H(S)}(n, m)) $ 可作為決定性 Diffie-Hellman 問題的區分器 $ P $ , 因為它返回 1 $ A’([a]P, [b]P, [ab]P) $ 具有高機率,並為任何其他具有高機率的輸入返回 0。
所以答案是:不,Eve 甚至無法僅通過檢查密文來確認收件人。 此屬性有時稱為密鑰隱私或匿名性。(論文中的表述略有不同,但我認為它是等價的;如果不是,則將證明改編為論文中的表述留給讀者作為練習,因為大多數基於 DH 的方案自然會表現出密鑰隱私,不像基於 RSA 的方案。)