可以使用 schnorr 簽名來確保公鑰的格式正確(即是=x⋅G是=X⋅GY= x cdot G)?
假設橢圓曲線設置中的 Schnorr 簽名方案具有公知的生成器基點 $ G $ 其中離散對數很難。也就是說,給定 $ x \cdot G $ , 很難找到 $ x $ . 我很想知道這個簽名方案是否可以用於在以下意義上執行公鑰驗證:
Alice 給 Bob 一個簽名 $ (e,s) $ 對於一些消息 $ m $ 和一個公鑰 $ Y $ .
Bob 驗證簽名 $ (e,s) $ 像這樣:
計算 $ R = (s \cdot G) - (e \cdot Y) $
放 $ e_v = H(R_x || m) $
接受簽名iff $ e_v = e $
這個方案能不能用來保證Alice提供的公鑰確實是這樣的形式 $ Y = n \cdot G $ (而不是說另一種形式 $ Y = n \cdot G + n’ \cdot G’ $ ?)。假設 Alice 在計算上是有界的,特別是不能解決離散對數問題。或者有沒有辦法讓愛麗絲仔細選擇值 $ (e,s) $ 這樣 Bob 接受簽名,即使 $ Y $ 是他們的形式 $ Y = x \cdot G + x’ \cdot G’ $ ?
只要公鑰在橢圓曲線群中,就不存在“形式正確”之類的東西。對於任何一點 $ P $ 在組中,存在一個值 $ x $ 這樣 $ P=x\cdot G $ . 因此,所需要做的就是檢查 $ P $ 確實在群裡。這是通過檢查 (1) 來執行的 $ P=(x,y) $ 是在橢圓曲線本身上(即,它滿足方程),(2) $ P $ 不是恆等式(即無窮遠點或零點),並且 (3) $ q \cdot P = 1 $ , 在哪裡 $ q $ 是您正在使用的橢圓曲線組的順序。(當橢圓曲線上的點數大於您正在使用的子組的大小時,需要進行第三次檢查。)
一個完全獨立的問題是公鑰所有者是否可以證明他知道相關的私鑰。也就是說,他們真的知道嗎? $ x $ 這樣 $ P=x\cdot G $ . 這可以使用零知識證明來完成,但實際上 Schnorr 簽名正是這一事實的零知識證明。事實上,提供 ECDSA 簽名也可以。但是,您需要確保這不能用於提取他們從未打算簽名的有意義的簽名……