Public-Key
簽名方案的驗證和公鑰的區別
這是一個語義問題。通常,在許多非對稱方案中,特別是對於數字簽名這個問題,我們看到設計者將提供給驗證者的密鑰描述為公鑰。
但是,在某些情況下,特別是基於身份的遊戲,我認為用於驗證的密鑰應該保密。說匿名憑據和一些質詢響應結構。
我的問題如下:
- 即使在這些設置上,我是否應該始終將用於驗證的密鑰稱為“公鑰”?
- 可以在這些設置上將其稱為驗證密鑰嗎?
- 我看到了一些最近的工作,例如,關於多變數、基於晶格和一般後量子的東西,越來越多地稱它為驗證密鑰。然後他們假設是公開的,這是即將出現的東西還是這兩個術語之間的含義有所不同?
即使在這些設置上,我是否應該始終將用於驗證的密鑰稱為“公鑰”?
通常它是一個公鑰,或者至少在所使用的密碼系統的密鑰對生成過程中被稱為公鑰。在這種情況下,公鑰是一個更通用的術語 -畢竟可能無法決定使用什麼密鑰*。*類似地,加密 API 通常會有一個特定的類來執行密鑰對的生成,因此在這種情況下,可能會使用更通用的術語“公鑰”。
可以在這些設置上將其稱為驗證密鑰嗎?
當然,我見過很多速記 SK 和 VK 用於“簽名生成密鑰”(或只是“簽名密鑰”)和“驗證密鑰”的情況。我可能更喜歡它,因為它更精確;我想沒有法官可以為我們決定這些事情。
請注意,SK 也經常用於“秘密密鑰”,這還不錯,因為私人/簽名密鑰當然是秘密的。
我已經看到更多關於多元、基於晶格和後量子的工作,一般來說,他們認為越來越多的驗證密鑰是公開的,這是即將出現的東西還是這兩個術語之間的含義有所不同?
是的,這與使用有關。許多事情仍然基於 RSA,您還可以使用公鑰進行加密。在這種情況下,將其稱為驗證密鑰是沒有意義的。我認為對於簽名生成/驗證特定密鑰,術語“驗證密鑰”非常有意義,特別是如果在該方案中密鑰不是公開的。
順便說一句:請注意,在許多方案中,可以從簽名等數據中導出公鑰。簽名生成的定義中沒有任何內容可以阻止這種情況。此外,對於許多方案,您可以直接從私鑰計算公鑰,因此您不能隨時交換條款。
簡而言之,不要假設您可以將驗證密鑰保密(共享);你需要證明這一點。