Public-Key

從一個私鑰和 2 個不同的公鑰派生 2 個共享秘密

  • June 12, 2015

我有一個密鑰對,比如說 $ (d, Q) $ . 我發送我的公鑰 $ Q $ 給2個不同的人。我也得到了他們的公鑰 $ Q_1 $ 和 $ Q_2 $ . 現在我可以導出 2 個共享秘密, $ dQ_1 $ 和 $ dQ_2 $ . 另外2個人也可以得出秘密 $ d_1Q $ 和 $ d_2Q $ . 假設所有密鑰對都是從同一橢圓曲線生成的,那麼在同一個會話中使用兩個共享密鑰進行雙向通信是否安全?

是的,您可以為(橢圓曲線)Diffie-Hellman 使用(半)靜態密鑰對。如果您想確定是否正確使用了 ECDH,請查看NIST SP 56A,它顯示了可以使用密鑰協議的各種方式。在這種情況下,您可能會尋找 6.2.2.2。


請注意,您應該檢查公鑰的有效性。此外,這描述了一個密鑰協商協議。如果靜態公鑰可以被其他兩方信任,那麼持有靜態密鑰對的一方已經被認證。您可能需要對其他兩方進行額外的身份驗證。最後,您可能希望使用 MAC 來驗證您是否在密鑰協商協議中而不是之後都生成了正確的密鑰。這可能意味著您需要一個 KDF 來派生各種會話密鑰。您可能還想為每個通信方向使用不同的鍵。

引用自:https://crypto.stackexchange.com/questions/26251