基于橢圓曲線的數字賬戶
私鑰本質上只是一個亂數,其取值范圍非常大(256個位元位),可確保在有限時間內,采取暴力搜索的方式,破解成功的概率接近于零,Bitcoin和Ethereum都采用Secp256k1曲線,生成亂數私鑰r之后,取橢圓曲線上的一個基點G,經過特殊定義的乘法運算,可得到公鑰R = r*G,通過R和G無法反推出r,所以R和G是可以公開的,為了協助用戶記憶或保存私鑰,研究者發明了助記詞,將私鑰與英文單詞序列一一對應,可互相推導,
單詞序列通常包含12個單詞,取自于一個較大的單詞庫,通常由超過7000個單詞所構成,由于不同的軟體所采用的單詞庫是不一樣的,將助記詞輸入給不同的軟體,得到的私鑰可能是不同的,互不兼容,這一點需特別注意,
數字賬戶由私鑰所掌控,由地址所標示,將公鑰通過一定的哈希運算及校驗編碼可得到地址,但僅通過地址,不可能反推出公鑰,
對以上概念的簡單總結
私鑰是某個亂數r,公鑰是Secp256k1曲線二維坐標系上的某個點R=r*G=(x, y),Bitcoin和Ethereum中數字賬戶所涉及的基本概念及計算推導關系如下:
Seed => Random => Private Key
Private Key => Mnemonic Words
Private Key => Uncompressed Public Key
Uncompressed Public Key => Compressed Public Key
Uncompressed Public Key => Address
Compressed Public Key => Address
Address => Checked Address
Message => Hash => Signature => (Hash, V, R, S) => Public Key => Address
Copy
位元幣地址示例:
1Nt6XLmq8k8noafGGFdfwue74uJTFu9vQC
以太坊地址示例:0x
3a7b653E26f54E4A579237A15893E13A4bDD3451
位元幣的地址,是對公鑰做哈希運算后,再經過Base58編碼而成;以太坊的地址,是對公鑰做哈希運算后,截取保留了20位元組而成,
經過實踐檢驗才算安全
Secp256k1演算法的安全性,是經過了長時間的實踐檢驗的,從區塊鏈系統的設計角度看,選擇兼容位元幣或以太坊的密鑰生成演算法和地址格式有很多優勢,這并不是“抄襲”,因為Secp256k1演算法及實作,就像是TCP/IP協議一樣,屬于通用基礎模塊,方便利用現有的錢包APP與API介面,在區塊鏈的設計中,把更多的精力放在賬戶易用性、TPS、經濟模型、體系結構等方面會更合理一些,更優秀的加密與簽名演算法,留給專業的密碼學家去設計和論證,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/347197.html
標籤:區塊鏈
