iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0

「你拿的是我的信用卡...」


ECDSA 是運用了橢圓曲線密碼學所達成的數位簽章演算法,
而比特幣區塊鏈與以太坊區塊鏈使用的就是ECDSA。

ECDSA的算法和DSA非常類似。

密鑰建立

  1. 選擇要使用的橢圓曲線
  2. 選取基點 A ,order為 q
  3. 選擇小於 q 的隨機整數 d
  4. 算出B = dA

其中,橢圓曲線的參數和A、B是公鑰,d 則是私鑰。

簽章

  1. 選擇臨時密鑰https://chart.googleapis.com/chart?cht=tx&chl=k_E ,此臨時密鑰只能使用一次,否則私鑰有洩漏的可能
  2. 計算 https://chart.googleapis.com/chart?cht=tx&chl=R%3Dk_EA
  3. 計算 https://chart.googleapis.com/chart?cht=tx&chl=s%20%3D%20(h(x)%2Bd%20*r)k_E%5E%7B-1%7D%20mod%20%20q mod q,其中 h(x) 是雜湊函數,此則湊函數的輸出必須大於 q 。

驗章

  1. 計算 https://chart.googleapis.com/chart?cht=tx&chl=w%20%3Ds%5E%7B-1%7D mod q.
  2. 計算 https://chart.googleapis.com/chart?cht=tx&chl=u_1%20%3D%20w*h(x) mod q
  3. 計算 https://chart.googleapis.com/chart?cht=tx&chl=u_2%20%3Dw*%20r mod q.
  4. 計算 https://chart.googleapis.com/chart?cht=tx&chl=P%20%3D%20u_1%20A%2Bu_2%20B

若P點的 x 座標和R的x座標相等,則確認是由本人所簽署。

ECDSA演算法中的 q 不必非常大,
160-256位元即可和1024-3072的RSA 擁有相同的安全等級,
也因此運算上更快一些。

在區塊鏈上,交易進行的過程中需要進行數位簽章,
也就是當你要把一筆資金轉給另外一個人時,
就需要將這筆交易內容經過數位簽章,
之後進行驗章的步驟,才能正式成立。(當然中間還有很多過程啦


以上介紹了數位簽章的三種算法,
RSA、DSA、ECDSA
也講完了三個橢圓曲線的延伸,
ECC、ECDH、ECDSA(準確來說應該是兩種)

圖片來源:
https://medium.com/cryptoadvance/ecdsa-is-not-that-bad-two-party-signing-without-schnorr-or-bls-1941806ec36f
https://wizardforcel.gitbooks.io/practical-cryptography-for-developers-book/content/digital-signatures.html


上一篇
DAY 19-數位簽章- DSA
下一篇
DAY 21- 訊息鑑別碼 MAC
系列文
學密碼學也猜不到你的手機密碼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言