Key-Derivation

非強化密鑰派生功能的“安全”或最安全方法

  • December 15, 2019

我目前正在開發一種非正統的系統,理想情況下,會有一對主密鑰,並從中派生出數千個密鑰。需要有一種方法來證明這些密鑰中的任何一個都是從主密鑰派生的。在這種情況下,所有派生密鑰的私鑰和公鑰都可以被認為是公知知識,並且可以在該驗證過程中使用。主密鑰對中的公鑰也可以被認為是公知知識。唯一的秘密實體是主密鑰對中的私鑰。我知道使用非硬化派生可以實現這個目標,但它包含許多安全風險,並且可以找出主密鑰對中的私鑰(如我所見,進行非硬化派生它,一個不可接受的解決方案,

有沒有辦法證明派生密鑰只能來自一個主密鑰對,而不暴露該主密鑰對的私鑰?有沒有一種安全的方法可以通過非硬化密鑰派生來做到這一點?有沒有辦法用零知識證明來做到這一點(它們必須是非互動式的)?假設 master 簡單地創建和簽署一份列出他們派生的密鑰的文件是不可行的(新密鑰可以隨時派生,理論上可能有太多的密鑰派生到在消息大小限制內列出)。您還可以假設可以使用任何可以實現此目標的算法(即不一定只是 RSA)。

這肯定是一個抽象和模糊的問題,所以請指導我您需要更多資訊或如何修改這個問題。謝謝。

需要有一種方法來證明這些密鑰中的任何一個都是從主密鑰派生的。在這種情況下,所有派生密鑰的私鑰和公鑰都可以被認為是公知知識,並且可以在該驗證過程中使用。

以下似乎符合該要求(據我所知),以及私鑰嵌入標識符的附加要求(可能是派生私鑰證書的公用名或/和證書序列號)。

  • 主密鑰用於具有完全消息恢復的確定性簽名方案,沒有旁通道的位置(即:簽名驗證不需要消息,它作為簽名驗證的一部分被恢復;並且不可能任何人,包括持有主私鑰,為同一消息展示兩個不同的有效簽名)。

  • 派生密鑰用於具有以下屬性的(例如簽名)方案:

    • 根據主密鑰方案,私鑰可以是任何簽名;
    • 公鑰是私鑰的公開函式;
    • 不可能將私鑰轉換為不同的私鑰,從而產生針對未修改的派生公鑰進行驗證的簽名。

主密鑰簽名方案可以是符合 ISO/IEC 9796-2模式 3 的 RSA-4096、用於簽名和 MGF1 的 SHA-512 散列、尾部欄位選項 1、非替代簽名,它將任何最多 446 字節的消息嵌入到512 字節的簽名。

我們強制在 4096 位主密鑰公共模數的高 66 位中至少有一位為零(儘管不是最高位),以便簽名編碼範圍內的整數 $ [2,2^{4095}-2^{4029}) $ ,使其適合作為以下方案的私鑰。

派生的密鑰簽名方案可以是 Schnorr 簽名(根據 Claus-Peter Schnorr, Efficient Signature Generation by Smart Cards , in Journal of cryptology, 1991),在RFC 的 4096 位 MODP 組中具有 SHA-512 雜湊(和缺失的細節) 2526 .

4096位MODP群有內律整數乘模素數 $ p=2^{4096}-2^{4032}+2^{64}\left(\lfloor2^{3966}\pi\rfloor+240904\right)-1 $ . 它是由 $ \alpha=2 $ ,因此恰好是所有的集合 $ 2^k\bmod p $ 對於整數 $ k $ . 它具有(Sophie Germain) 素數 $ q=(p-1)/2 $ . 私鑰 $ s $ 是任何整數 $ [0,q) $ ,表示為 512 字節。公鑰是 $ v=2^{q-s}\bmod p $ ,表示為 512 字節。

為了生成派生密鑰對,我們用主私鑰簽署一個標識符,產生派生私鑰;並從中計算派生的公鑰。兩者通過公關配對( $ v=2^{q-s}\bmod p $ 在 Schnoor 簽名中),因此在不更改私鑰的情況下無法更改派生的公鑰。主簽名方案的安全屬性可防止偽造私鑰。即使主私鑰被濫用,也不能有兩個具有相同標識符的派生密鑰。

有什麼方法可以證明派生密鑰只能來自一個主密鑰對,而不會暴露該主密鑰對的私鑰?

為了檢查派生密鑰對,我們根據其私鑰驗證其公鑰(這很容易使用 Schnorr 簽名),檢查所謂的私鑰是否驗證為針對主公鑰的簽名,並在此過程中獲取標識符(也許可以根據所謂的公鑰證書進行檢查)。

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