這個用於編碼對稱會話字元串的不可連結聯繫信號的系統是否有效?
一個基本的密碼累加器可以通過簡單地將素數相乘以形成一個合數來實現,這樣任何給定素數的成員資格可以簡單地通過將其劃分為複合數並確定商是一個整數(而不是 1 或複合數)來實現數字)。
假設 Alice 和 Bob 有一個共享的秘密素數。它們通過一個 nymserver 進行通信,該伺服器實現為基於分佈式索引號的 PIR(允許檢索與使用者名關聯的填充郵件桶),通過將電子郵件寫入伺服器。該伺服器被許多不相關的對話者使用。參與者通過 remailer 網路發送對稱加密的消息,所有參與者都通過單獨的扇出 PIR 機制接收完整的
$$ index number : email address $$索引到填充(相同大小)的儲存桶中,這些儲存桶由 nymserver 填充(達到其最大容量),其中包含發往給定 email@nymserver.com 地址的傳入電子郵件。該系統本質上是 nymserver Pynchon Gate。 此外,參與者通過基於索引號的 PIR 機制,在每個“週期”中檢索固定數量的固定大小的桶,這只是一個固定的時間段(例如一個小時)。每個週期,所有註冊使用者的電子郵件地址的完整列表都通過扇出 PIR 機制發布,參與者檢查它以查看要查詢 PIR 機制的索引號,就像檢索關聯的(填充到固定大小)桶。
現在,與其想像一封電子郵件被寫入給定的 email@nymserver.com,不如想像一下,為了保持不可連結性,Alice 和 Bob 之間發生了 ECDH 密鑰交換(帶外或通過以前使用使用者名的方法),它們之間的結果共享秘密 S 被用作散列函式 H 的輸入,使得 H(S) = C1, H(S || C1) = C2, H(S || C2) = C3, H(S || C3) 等等,帶有 || 表示連接,每個 Cn 表示一個聯繫信號,偶數聯繫信號由 Alice 使用,奇數聯繫信號由 Bob 使用(可能按字母順序確定)。
現在,Alice 不再將消息寫入 Bob@nymserver.com,而是將她的第一條消息寫入 Bon 至 C2@nymserver.com,第二條消息寫入 C4@nymserver.com。同樣,Bob 沒有向 alice@nymserver.com 寫入消息,而是向 C1@nymserver.com 寫入一條消息,然後向 C2@nymserver.com 寫入他的第二條消息。這樣做的原因是允許 Alice 和 Bob 通過 nymserver 進行通信,但它無法確定發送給任何給定參與者的消息量,並且通常不會將消息連結為發送到同一實體。參與者使用扇出 PIR 來檢索
$$ index number : e-mail address $$list as before – 收到後,Bob 會檢查任何以偶數 Cn 為前綴的 E-mail 地址,並會像以前一樣使用 PIR 機制來獲取這些桶,區別在於表單中的 E-mail 地址的 Cn(可能是 256 位散列),與以前的形式(例如 Bob@nymserver.com)相反,僅在給定週期內發送給他們的電子郵件時列出,而不是在之後重複那。 以前的解決方案的一個問題是難以保持同步,因為 Bob 需要知道哪個 Cn@nymserver.com 來檢查來自 Alice 的消息。一種解決方案是使用如前所述的主蓄能器。Alice 和 Bob 可以像以前一樣使用 ECDH,以便在他們之間有一個共享的秘密。然而,他們現在使用它來播種用於生成素數的 PRNG(即 Rabin 對輸出的素性測試,直到生成第一個素數 P,然後它們之間共享秘密素數)。現在,當 Alice 想寫 Bob 時,她生成自己的秘密素數並將其乘以共享的秘密素數以形成合數 Cn。她隨後通過 Cn@nymserver.com 給 Bob 寫信(假設這樣的號碼可用於 E-mail,無論可行性如何)。鮑勃,和以前一樣,
$$ index number : email address $$. 現在,對於以 Cn@nymserver.com 形式列出的每個電子郵件地址,Bob 將 C 除以 P 以查看共享秘密素數 P 是否是素數累加器 Cn 的成員。如果是,這將向 Bob 發出信號,表明這是 Alice 寫給他的消息,並且他知道從 nymserver 獲取該儲存桶以從 Alice 那裡檢索該消息。 這個解決方案非常好,因為它允許 Alice 和 Bob 保持同步沒有困難。他們不需要跟踪對話者的下一個 Cn,或者檢查大量 Cn 以嘗試重新同步。他們只需要生成一個任意素數來乘以共享秘密素數。nymserver 上的攻擊者應該與之前的解決方案一樣難以將多個 Cn 連結到相同的對話者,因為他們需要將 Cn 分解為共享秘密素數 P 和生成的任意素數以乘以共享秘密素數。乘法步驟是將結果 Cn 與靜態共享秘密素數 P 斷開,
在這個系統中,看到 Alice 和 Bob 共享一個秘密素數 P,並且 Bob 可以檢測由 P 與任意素數相乘形成的合數 Cn,只需將 P 除以它們,看看所得商是否為整數(而不是 1 或合數本身),並且這個除法的商是 Bob 以前不知道的另一個素數(Alice 生成的用來與共享秘密素數相乘的素數),這個第二個素數不能嗎?再次要求將共享秘密素數 P 或複合 Cn 的素數分解用作雜湊函式的輸入,該雜湊函式生成用於關聯密文的對稱加密的會話字元串?
如果是這樣,它似乎既可以作為混合密碼系統的會話字元串共享機制(作為非典型的類似 RSA 的系統,其中會話字元串實際上是用於構造用作聯繫人的公鑰的兩個素數之一)信號,第二個素數是對話者之間的靜態共享秘密,用於允許他們在不遇到 RSA 問題的情況下分解複合材料),以及以不可連結的方式發出聯繫信號。這個系統有問題嗎?您是否知道對類似事物的任何研究,其中有一種機制讓兩方通過伺服器發出信號,表明通信是針對另一方的,
nymserver 上的攻擊者應該與之前的解決方案一樣難以將多個 Cn 連結到相同的對話者,因為他們需要將 Cn 分解為共享秘密素數 P 和生成的任意素數以乘以共享秘密素數。
不,這對攻擊者來說實際上很簡單;他們需要做的就是計算 $ \gcd( C_x, C_y ) $ 對於各種 $ C_x, C_y $ 他們看到的價值觀。如果他們確實使用相同的共享秘密素數 $ P $ ,那麼 $ \gcd $ 將是那個素數(這將告訴攻擊者兩個相同的人正在通信,以及他們的秘密值)。
更好的方法可能是讓雙方共享一個秘密的對稱密鑰 $ K $ ,當一方想要給另一方發信號時,他們只是隨機選擇一個 $ r $ 並輸出 $ r, HMAC(K, r) $ . 這對對方來說很便宜(比你原來檢查可分性的想法便宜),而且不知道 $ K $ ,它看起來完全隨機(因此攻擊者無法區分同一對是否用於與同一對通信)。