【比特幣課堂】橢圓曲線數字籤名算法(ECDSA)

2021-03-02 維優


實際問題。為了將這種籤名機制的思想現實應用起來,算法上有很多事要做。例如,有些過程的算法需要是隨機的(特別是比特幣中使用的),因此我們需要實現好的隨機性算法。好隨機性的重要性不能被低估,不好的隨機性會使你的計算不安全。 

另一個實際的問題是信息的大小。在現實中,能籤署的信息是有大小限制的,因為你要運行計算是基於有長度限制的字符串的。解決這個限制的方法也很簡單:使用信息的哈希值而非信息本身。如果我們使用一個256位輸出值的加密哈希函數,那我們就能夠通過256位的信息來籤署任何長度的信息了。並且,因為哈希函數是免碰撞的,將信息的哈希值而不是信息本身用作數字籤名的輸入,也是安全的。

 

另外,我們在後面還會用到的一個有用技巧是可以籤署一個哈希指針。如果你對一個哈希指針做數字籤名,你的籤名將覆蓋或者保護整個結構。例如,如果你對一個區塊鏈的哈希指針做了數字籤名,其結果是,你對整個區塊鏈的內容都做了有效的數字籤名。

 

ECDSA。現在來說點具體的,比特幣採用了一種特別的數字籤名方案叫橢圓曲線數字籤名算法(ECDSA),該算法也是美國政府的數字籤名標準,是早先的DSA算法在使用橢圓曲線後的更新。在過去幾年裡,這些算法已經通過了大量的加密分析,通常被認為是安全的。


更具體地說,比特幣使用基於標準橢圓曲線「secp256k1」的ECDSA, 「secp256k1」預計能夠提供128位的密保。而這個曲線是一個公開的標準,除了比特幣,它很少被使用,其他的應用通常使用更常見的「secp256r1」的ECDSA。這只是比特幣的一個怪癖,這是由Satoshi在早期的系統規格中選取的,現在已經很難去修改了。

 

我們不會細緻地討論ECDSA是如何工作的,因為這涉及到很多複雜的數學知識,而且就算你理解了,這對之後的課程也沒有多大的幫助。

 

關於ECDSA,好的隨機性是必須的,因為差的隨機性可能會洩露你的密鑰。直觀的感覺就是,如果你使用差的隨機性生成了一個密鑰,那麼你生成出的密鑰將會是不安全的。但是在ECDSA,如果你在籤名的時候隨機性不好,即便密鑰是完美的,這也有可能洩露你的私鑰,一旦私鑰洩露,那麼一切都完了,攻擊者就能夠複製你的籤名。因為在實際操作中我們需要非常注意這一點,這是個常見的錯誤。

 

討論數字籤名的密碼學基礎就到此為止,下一節我們將繼續討論數字籤名的一些應用,這些應用在構造加密貨幣時是很有用的。

本文由維優翻譯自普林斯頓比特幣公開課,如欲轉載本帳號文章,請註明作者譯者及內容來源於維優。


相關焦點

  • 橢圓曲線密碼學:ECDH和ECDSA
    舉個例子,當曲線的p=hn時(也就是說,有限域的階等於橢圓曲線的階),Smart攻擊(http://interact.sagemath.org/edu/2010/414/projects/novotney.pdf)就可以輕易得手,在經典計算機上這個算法可以在多項式時間內解決這種特殊橢圓曲線上的離散對數問題。現在,假定我已經給你了一個橢圓曲線的域參數了。
  • 【圖學院】區塊鏈與密碼學全民課堂第6-3講:數字籤名算法大合集
    這裡有知識也有故事,從感興趣到有樂趣,全民課堂等你來學。這個系列中的課程內容首先從比特幣著手進行入門介紹,再延伸至區塊鏈的相關技術原理與發展趨勢,然後深入淺出地依次介紹在區塊鏈中應用的各類密碼學技術。歡迎大家訂閱本公眾號,持續進行學習。
  • 比特幣交易運用的是哪種算法?有什麼特別的?
    比特幣交易運用的是哪種算法?有什麼特別的? 中億財經網8月7日訊,除了哈希算法以外,比特幣中還存在一種為交易加密的非對稱加密算法(橢圓曲線加密算法)。
  • 科普 | 極簡橢圓曲線密碼學入門
    本文旨在簡單介紹橢圓曲線密碼學(elliptic curve cryptography)。
  • 橢圓曲線加密及算法:簡明教程
    ,聯想到之前看到的史上最賤的數學題也是用橢圓曲線求解的,於是決定翻譯這篇關於橢圓曲線的簡明教程。第一個是橢圓曲線密碼學的縮寫,後面兩個是基於它的算法名字。在TLS,PGP,SSH這些當今網絡IT世界的基石技術中,橢圓曲線密碼學都有應用。更別提比特幣和其他加密貨幣了。
  • 比特幣的地址、密鑰,錢包之間的關係
    -wiki  私鑰就是一個隨機選出的數字而已。一個比特幣地址中的所有資金的控制取決於相應私鑰的所有權和控制權。在比特幣交易中,私鑰用於生成支付比特幣所必需的籤名以證明資金的所有權。私鑰必須始終保持機密,因為一旦被洩露給第三方,相當於該私鑰保護之下的比特幣也拱手相讓了。私鑰還必須進行備份,以防意外丟失,因為私鑰一旦丟失就難以復原,其所保護的比特幣也將永遠丟失。
  • 知識來了 | ECC橢圓曲線密碼學簡介
    我們在《幾何》課本裡學過二元一次方程表示直線,二元二次方程表示圓錐曲線(圓,橢圓,雙曲線和拋物線),那麼二元三次方程表示什麼曲線呢?答案自然就是橢圓曲線。現代密碼學算法和協議中,消息是作為有限空間中的數字或元素來處理的。加密和解密的各種操作必須在消息之間進行變換,以使變換服從有限消息空間內部的封閉性。
  • 三分鐘帶你了解比特幣的數學原理!
    第三個狂潮卻饒有興味,比特幣和區塊鏈。年末比特幣市場日趨狂熱,日益脫離數字貨幣的初心,淪為豪賭的工具。雖然人類對於金錢的追求日益非理性,但是中本聰設計的比特幣網絡協議卻是基於人類理性的假設。而比特幣卻顛覆了這兩點:比特幣系統不需要信任機構作為中心;比特幣系統具有不可追蹤性,無法從帳戶地址推斷所有者。這種數字貨幣系統是基於如下的兩個理性假設:首先,比特幣網絡上「好人」永遠多於「壞人」;其次,基於橢圓曲線的加密算法是安全的,無法被輕易破解。
  • 比特幣,此物一出天下反
    選擇一種安全的加密算法並不容易,這後面才真正充滿了陰謀。 比於其他數學應用,橢圓曲線方程在比特幣中扮演關鍵角色。可以說,沒有橢圓曲線方程,就沒有比特幣的安全性,沒有安全性,比特幣就不能建立信用。
  • 光知道掙錢 卻不知比特幣的原理與運作機制?
    【PConline 雜談】眾所周知,比特幣依靠特定算法並通過大量的計算產生。然而,由於P2P的去中心化特性與算法本身,也將比特幣的總數量永久限制在了2100萬個。正因如此,比特幣才具有極強的稀缺性,這意味著其背後蘊藏著巨大的升值空間。But!本期我們不講發家致富,而是要向各位科普一下比特幣的原理與運作機制。
  • Wisdom Chain文檔知識庫之Schnorr籤名算法
    s=2001Schnorr籤名算法簡介Schnorr籤名算法最初是由德國密碼學家ClausSchnorr於2008年提出的,在密碼學中,它是一種數字籤名方案,以其簡單高效著稱,其安全性基於某些離散對數問題的難處理性。
  • 如何生成一個比特幣地址(含代碼實現)
    生成流程注1:哈希計算的是十六進位數據本身的哈希,而不是十六進位數據字符串的哈希,例如0xFA,計算的是0xFA這個十六進位數,而不是0xFA這個字符串注1補:使用binascii庫的binascii.a2b_hex函數或binascii.unhexlify函數,即可解決1.生成一個256位的數作為私鑰2.使用ECDSA-secp256k1算法計算公鑰
  • 比特幣錢包原理及JS實現實例
    我們可以通過多種不同的方式生成比特幣錢包,使用比特幣核心客戶端或使用在線錢包服務或從硬體錢包製造商處獲取等。比特幣錢包的組成?它包含兩個密鑰私鑰,公鑰和公共地址。私鑰用於硬幣的支付(即籤署交易),而公鑰用於驗證交易的籤名。
  • 關鍵|《Wisdom Chain文檔知識庫》之Schnorr籤名算法
    s=2001Schnorr籤名算法簡介Schnorr籤名算法最初是由德國密碼學家ClausSchnorr於2008年提出的,在密碼學中,它是一種數字籤名方案,以其簡單高效著稱,其安全性基於某些離散對數問題的難處理性。
  • 區塊鏈技術解析匯總:密碼學、形成機制、比特幣,想到哪寫到哪 - 裝...
    密碼學加密算法原理對稱加密:使用同一密鑰進行加密和解密傳統密碼加密,私鑰算法加密,加密速度快,密文是緊湊的安全的加密過程>A同學生成明文->通過私鑰和加密算法->生成密文->將密文通過網絡傳輸到目的地B同學->通過同一私鑰以及解密算法->解密為明文對稱加密算法的缺點:兩個人有一對密鑰,那麼3個人就需要3個密鑰,兩兩之間都需要一個密鑰,人越多密鑰越多
  • 【微課堂】國密算法專題(三)——密碼雜湊算法SM3簡介
     在上一講中,我們介紹了國密算法中的橢圓曲線公鑰密碼算法SM2,本期我們將接著介紹國密算法的密碼雜湊算法SM3。
  • 理解數字籤名、加密通信的關鍵:哈希算法
    哈希是密碼學的基礎,理解哈希是理解數字籤名和加密通信等技術的必要前提。本文引用地址:http://www.eepw.com.cn/article/201901/396514.htm  哈希,英文是 hash ,本來意思是」切碎並攪拌「,有一種食物就叫 Hash ,就是把食材切碎並攪拌一下做成的。