Elliptic-Curves
重用 ECDH 非對稱密鑰進行身份驗證是否安全?
Alice、Bob 和 Carol 各自生成 ECDH 密鑰對。Alice 和 Bob 建立通信通道並協商 AliceBob 的秘密。
問題是: Alice 和/或 Bob 重用他們的密鑰對來協商新的 AliceCarol 和/或 BobCarol 秘密是否安全?
預期用途是身份驗證。每一方都可以持久地儲存其他人的公鑰,並持久地儲存或確定性地重新創建自己的私鑰對。雙方可以稍後與另一方建立新的通信通道,驗證對方目前的公鑰是否與之前的公鑰匹配,生成隨機消息M並發送給對方。然後對方可以使用協商的秘密對 HMAC 簽名 M 來生成 M’ 並將 M’ 發回。此時,發起方可以使用協商的秘密重新計算M’來驗證M’,從而驗證對方的身份。
這樣的鍵稱為靜態鍵。每次新生成的密鑰稱為臨時密鑰。請注意,您需要信任靜態密鑰對的公鑰才能使用它們進行身份驗證。可以通過將 DH 公鑰嵌入 PKI 內的葉證書中來建立這種信任。
請注意,在共同的 Diffie-Hellman 密鑰協商期間雙方都使用靜態密鑰時存在一個問題:生成的密鑰也將是靜態的,因為整個方案現在已成為確定性的。解決方案是由其中一方發送隨機數和公鑰;然後可以在密鑰建立期間使用此隨機數來創建唯一的密鑰。
NIST SP 800-56A 第 6 章中的更多資訊,特別是 6.3 Scheme Using No Ephemeral Key Pairs, C(0, 2) scheme。
是的,相同的密鑰對可用於派生多對方之間的共享秘密。
如果知道 Alice 和 Bob 之間的共享秘密將幫助 Eve 找出 Alice 和 Carol 之間的共享秘密,那麼 Eve 可以創建自己的隨機私鑰併計算該密鑰和 Alice 的公鑰之間的“共享”秘密以獲得相同的優勢.