關於bls簽名演算法,最原始的一篇**出自
lynn b . short signatures from the weil pairing[m]// advances in cryptology — asiacrypt 2001. springer berlin heidelberg, 2001.
摘要:面向橢圓曲線和超橢圓曲線,基於計算的diffie–hellman假設提出了一種短簽名方案。對於標準安全引數,簽名長度大約是同樣安全級別的dsa簽名長度的一半。這個短簽名方案是為人工輸入簽名或通過低頻寬傳播簽名的系統設計的。對於簽名聚合和批處理驗證的效能進行了研究。
思考:這篇bls簽名演算法的老**有很多晦澀的定義和證明,但是其中提出的bls 簽名演算法帶來的簽名聚合功能有助於把乙個區塊中不同人不同演算法的簽名聚合成乙個簽名,能夠節省區塊中儲存空間和交易費,也能簡化驗證簽名的過程,在多個參與方合作的聯盟鏈場景中可以考慮使用。
補充:bls簽名演算法主要需要進行曲線配對和簽名聚合兩項工作,具體內容如下:
(1)曲線雜湊:bls簽名演算法是一種可以實現簽名聚合和金鑰聚合的演算法,它修改了雜湊演算法,結果不再是乙個數值而是對應到橢圓曲線上的乙個點。
(2)曲線配對:需要乙個特殊的函式把曲線上的兩個對映為乙個數,需要滿足的屬性是無論哪個點乘以未知數x,結果必須相同。**中論證過這種函式是存在的,並且不會暴露x的任何相關資訊(安全性)。
(3)簽名方案:為了計算簽名,先對訊息求曲線雜湊h(m),再將獲取的結果(曲線座標點)乘以私鑰即可:s = pk*h(m)。簽名結果是乙個曲線上的點,用壓縮的序列化格式儲存,只佔33個位元組。
(4)驗籤方案:只需驗證公鑰和訊息的雜湊值(曲線上兩個點)與曲線生成點和簽名(曲線上另兩個點)是否對映到同乙個數,如果是就說明這是乙個有效的 bls 簽名。
(5)安全隱患:bls簽名也不是完美無缺的,它的複雜度要比ecdsa高上乙個數量級。在驗證區塊中1000筆交易的聚合簽名時,仍需要進行1000次配對計算,這可能比使用ecdsa時對1000個單獨簽名進行驗證還要慢。唯一的好處在於,可以在區塊中放更多筆的交易,畢竟聚合簽名只佔32位元組。另外還有一種針對橢圓曲線加密體系的mov攻擊,利用配對函式來危害系統安全。
ecdsa
schnorr
bls驗證多重簽名
每個簽名和公鑰
每筆交易的合併簽名和公鑰[1]
每個區塊的合併簽名和公鑰
隨機數生成器
指定隨機點
依賴隨機數生成器
不需要隨機數生成器
簽名者通訊 需要
不需要簽名長度
320位元
320位元
160位元
[1]schnorr簽名演算法可以把一筆交易中的所有簽名和公鑰合併成單個簽名和公鑰,而且無從追溯是否合併過,一次性對合併後的簽名驗證,加快區塊驗證速度。
了解bls簽名
bls簽名 記e g g g 為乙個非退化的雙線性對映,g和g 為素數r階的乘法群,生成元為g。根據雙線性對映的性質,e g1 x,g2 y e g1,g2 x y 要求在g上,cdh problem是困難的。bls簽名的三個函式 keygen 選取 0,r 1 內的乙個隨機整數x,作為私鑰sk g...
關於BLS門限簽名的學習
e g2 e h m v 驗證是否成立!現在可以在 bls 簽名方案的基礎上通過使 shamir 秘密分享方法 4 來構造門限簽名演算法,為了便於理解,在給出具體構造演算法之前,我先介紹一下拉格朗日差值法,這是 shamir 秘密分享方法的核心。已知一條 n 1 次曲線上的 n 個點 x1,y1 x...
2019 bls的演算法設計課01 快排
hdu 1425 但不能ac,原因是懶得改格式 找到區間第乙個數所在的位置放進去,再找它的左半和右半倆區間 把小於的放左邊大於的放右邊嗯嗯嗯嗯嗯 include using namespace std int a 1000005 void quicksort int a,int s,int t a ...