**
schnorr簽名演算法是由德國數學家、密碼學家claus schnorr提出。並於2023年申請了專利,u.s. patent 4,995,082,該專利與2023年2月失效。目前該演算法可以自由使用。
schnorr簽名演算法幾乎在各個層面均優於位元幣現有的簽名演算法ecdsa:效能,安全,體積,擴充套件性等方面。
schnorr sig可以與ecdsa使用同乙個橢圓曲線:secp256k1 curve,公升級起來的改動非常小。
我們定義幾個變數:
簽名者已知的是:g-橢圓曲線, h()-雜湊函式,m-待簽名訊息, x-私鑰。
選擇乙個隨機數k
, 令r = kg
令s = k + h(m || r || p)*x
那麼,公鑰p對訊息m的簽名就是:(r, s)
,這一對值即為schnorr簽名。
驗證者已知的是:g-橢圓曲線, h()-雜湊函式,m-待簽名訊息, p-公鑰,(r, s)-schnorr簽名。驗證如下等式:
sg = r + h(m || r || p)p
若等式成立,則可證明簽名合法。
我們推演一下,此過程包含了乙個極其重要的理論:橢圓曲線無法進行除法運算。
s值的定義:s = k + h(m || r || p)*x
,等式兩邊都乘以橢圓曲線g,則有:
sg = kg + h(m || r || p)*x*g
,又因r = kg, p = xg
,則有:
sg = r + h(m || r || p)p
,橢圓曲線無法進行除法運算,所以第3步的等式,無法向前反推出第1步,就不會暴露k值以及x私鑰。同時,也完成了等式驗證。
一組公鑰,n把,簽名後得到n個簽名。這個n個簽名是可以相加的,最終得到乙個簽名。這個簽名的驗證通過,則代表n把公鑰的簽名全部驗證通過。
有:則有:
推演過程:
1234567
891011
1213
1415
16
1. 令 r = r1 + r2, s = s1 + s22. 已知:s1 = k1 + h(m || r || p)*x1,s2 = k2 + h(m || r || p)*x2
3. s = s1 + s2
= k1 + h(m || r || p)*x1 +
k2 + h(m || r || p)*x2
= (k1 + k2) + h(m || r || p)(x1 + x2)
4. 兩邊同時乘以g,則有:
sg = (k1 + k2)g + h(m || r || p)(x1 + x2)g
= (k1g + k2g) + h(m || r || p)(x1g + x2g)
= (r1 + r2) + h(m || r || p)(p1 + p2)
= r + h(m || r || p)p
5. 完成證明,並從兩個合作方推演至n個合作方
組公鑰(group key),是n把公鑰進行相加後的值,又稱聚合公鑰(aggregation key)。需要指出的是,參與方需要先相互交換公鑰和r值,然後再進行各自的簽名。
若使用在位元幣上,相比ecdsa會有一些額外的顯著優勢:
q: schnorr簽名是否可以用在m of n多重簽名上?
a: 當然可以。多重簽名只是m of n的簽名數量的模式。與簽名演算法無關。
q: schnorr的組簽名特性是否可以做或模擬出m of n式的簽名?
a: 無法做到。組內有n把公鑰,則必須對應有n個簽名,缺一不可。每個人在生成簽名的時候,在雜湊函式裡都代入的都是組公鑰p。
q: 簽名機制的安全性如何衡量?
a: 主要取決於兩個:1. 簽名演算法本身 2. 橢圓曲線。目前,schnorr與ecdsa都用的是曲線secp256k1,這個層面一樣。至於簽名演算法本身安全性,schnorr目前有安全證明,安全優於ecdsa。
參考:******************** end
資料完整性演算法 Schnorr數字簽名方案
和elgama數字簽名一樣,schnorr數字簽名方案也是基於離散對數。schnorr數字簽名主要工作不依賴於訊息,生成簽名過程與訊息相關的部分需要進行2n位長度的整數與n位長度的整數相乘。演算法引數分析 該方案基於素數模p,且p 1包含大素數因子q,即 p 1 0 mod q p一般大約取 p 2...
Schnorr技術詳解
schnorr本質上是一種零知識的技術,即證明方 prover 聲稱知道乙個金鑰x的值,通過使用schnorr加密技術,可以在不揭露x的值情況下向驗證方 verifier 證明對x的知情權。注意,接下來講解schnorr過程中提到的關於雜湊函式的性質 橢圓曲線上的離散對數難題和加密解密過程就不做過多...
群簽名與環簽名介紹
群簽名,即群數字簽名。是 1991 年 由 chaum 和 van heyst 提出的乙個比較新的簽名概念。camenish stadler tsudik 等對這個概念進行了修改和完善。群簽名 group signature 在乙個群簽名方案中,乙個群體中的任意乙個成員可以以匿名的方式代表整個群體對...