Elliptic-Curves
用於端到端加密的多方密鑰交換
我需要在不信任伺服器的情況下在兩方或多方之間進行端到端加密消息傳遞。每一方都有它的秘密和私鑰。顯而易見的解決方案是在它們之間創建 ECDH,但它可能需要 N-1 輪密鑰交換。是否有另一種方法可以在 N 個參與者之間生成共享秘密,所需的輪次比 ECDH 少?
由於在我的問題中我們不需要撤銷密鑰或添加/刪除成員,我選擇成對 DH 方法。每條消息都為每個參與者單獨加密。
它很簡單,滿足我們的要求。
好吧,有很多選擇可以做到這一點。其中之一也是最容易實現和幼稚的一個是執行以下操作之一:
- 每個參與者通過成對的安全通道將自己的臨時對稱密鑰發送給其他人。每次每個參與者收到一條來自他們的消息時,它都會使用此密鑰對其進行解密(我認為 WhatsApp 使用 Signal 的發送方密鑰進行此操作)。
- 房間發起者/所有者(想要交談的人)與參與並發送公共房間/聊天密鑰的人建立成對密鑰生成。
另一種選擇(也是最有效的一種)是使用組密鑰協商協議,如 ART 或一個 (n+1)sec 使用。
唯一的區別是,當您在每個協議中使用 Diffie-Hellman 時,將其修改為使用使用橢圓曲線的各種 Diffie-Hellman,甚至可以像 Signal 一樣使用 3XDH 等可否認組協議。