Public-Key

是否可以在不知道私鑰的情況下從另一個公鑰派生公鑰(Ed25519)?

  • February 14, 2021

我有以下案例:

使用者擁有他的主公鑰 ( pk) - 私鑰 ( sk) 密鑰對 (Ed25519)。在數據庫中,我們儲存了一個公鑰。是否有任何派生機制D,當知道派生參數時,x我們可以使用它派生新的私鑰sk2 = D(sk, x)和公鑰(只知道數據庫中的公鑰):pk2 = Dx(pk, x)這樣我們就可以驗證sk2使用完成的簽名pk2

換句話說,我想有一個派生機制,我可以在使用者端和伺服器端使用,伺服器不知道私鑰。最好與 Ed25519 鍵一起使用。

是的!您可以使案例如在 Monero 中使用的臨時密鑰派生機制(他們在那裡稱其為隱形密鑰)。

考慮公鑰 $ A=aG $ , 帶私鑰 $ a $ . 然後,可以生成一個派生密鑰,由隨機標量參數化 $ r $ :

$$ A’=H_s(rA)G+A $$

和知道的一方 $ a $ 可以使用公共參數 $ R=rG $ 計算他們的臨時私鑰 $ a’=H_s(aR)+a $ . 例如,您可以儲存 $ R $ 有你的簽名。


注1:我們添加 $ A $ 分別 $ a $ 對公眾 私鑰,以確保派生密鑰的一方無法計算私鑰。

注 2:這個推導基本上是一個帶有隨機臨時密鑰的 Diffie-Hellman 密鑰交換 $ R $ .

注3: $ R $ 也可用於“檢查”使用者是否有權訪問此特定密鑰。他只需要檢查是否 $ A’=H_s(aR)+A $ 持有。

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