McCallum-Relyea 交易所的安全性
我最近了解了 McCallum-Relyea 交換,它允許在不實際傳輸密鑰的情況下進行密鑰託管。
它是在 RedHat 開發的,被tang和clevis實用程序(並在此處進一步描述)用於允許自動解密,特別是用於 Linux 機器的加密根分區。因此,如果客戶端電腦位於可以訪問伺服器電腦的網路上,則它只能啟動和解密其磁碟。
我還沒有找到對該協議的任何分析,所以我想知道與更傳統的方法(例如伺服器儲存密鑰並通過 TLS 通道傳輸)相比,它提供了什麼樣的安全級別,以及是否存在任何缺陷可能被利用的交換。
交易所是ECDH的修改/擴展版本,功能如下:
伺服器端首先生成一個長壽命的EC密鑰對和私鑰 $ s $ 和公鑰 $ S = [s]G $ .
客戶,想要保護消息 $ M $ , 生成私鑰 $ c $ 和公鑰 $ C = [c]G $ . 然後,客戶端通過明文通道向伺服器請求密鑰。伺服器響應 $ S $ 與 $ s $ . 客戶端使用者通過某種帶外方法驗證伺服器密鑰並記錄伺服器密鑰的雜湊值。客戶端然後執行一半的 ECDH 交換以產生 $ K = [c]S = [cs]G $ . $ K $ 然後使用(直接或間接)加密 $ M $ 通過對稱密碼,之後客戶端丟棄 $ K $ 和 $ c $ 並且只保留 $ C $ . 此時客戶端無法解密 $ M $ 沒有伺服器。
當客戶端要解密時 $ M $ ,它創建一個臨時密鑰對 $ e $ 和 $ E = [e]G $ ,然後計算 $ X = C + E $ 並發送 $ X $ 到伺服器。然後伺服器執行一半的 ECDH 交換 $ X $ 和 $ s $ 生成 $ Y = [s]X $ 並傳輸 $ Y $ 返回客戶端,使用 $ S $ 簽署消息。
收到了 $ Y $ 來自伺服器並驗證伺服器的簽名,然後客戶端執行另一半 ECDH $ S $ 和 $ e $ 計算 $ Z = [e]S $ . 然後客戶端計算:
Y - Z = sX - eS = s(C + E) - eS = sC + sE - eS = scG + seG - esG = scG = K
恢復 $ K $ 並解密 $ M $ .
有趣的是,該方案的機密性與 $ C $ 獨立於硬度假設(除了對稱密碼的強度和安全刪除 $ K $ , $ c $ 和明文)。相比之下,TLS 上的伺服器端儲存和傳輸模型依賴於 TLS 密鑰建立機制及其身份驗證的硬度。
如果 $ e $ 然後隨機均勻選擇 $ X $ 包含零資訊 $ C $ . 請注意,傳輸 $ X $ 是整個協議中客戶端的唯一通信,因此是 Dolaev-Yao 攻擊者訪問有關客戶端機密值資訊的唯一機會。均勻度 $ X $ 也意味著服務不可能驗證客戶是否正在請求託管他們合法訪問的密鑰,因此任何設法獲得知識的人 $ C $ 可以使用協議恢復 $ K $ .
未經託管伺服器合作的解密是通過保密性來防止的 $ s $ 以及用於所討論橢圓曲線的計算 Diffie-Hellman 協議的強度(可能會受到量子攻擊者、不良參數化或各種其他方式的影響)以及用於驗證伺服器消息的身份驗證方案的強度。這意味著這三種保護中的任何一種的失敗都允許在沒有伺服器的情況下進行解密。
託管機制可以多次呼叫,無需重新加密 $ X $ 傳輸仍將不包含有關的任何資訊 $ C $ .
系統對合法使用者沒有不可否認性。如果我查詢 $ X $ 後來聲稱它與特定的 $ C $ 值,此聲明無法驗證。即使被要求透露 $ e $ , 創建一個輔助 $ C $ 價值 $ C’=C+dG $ ,在這種情況下,對 $ (C,e) $ 生成一個 $ X $ 這也可以由 $ (C’,d+e) $ .