讀《精通位元幣2》有感 + 自己的理解與補充知識
補充的教材:《密碼學原理與實踐》(第三版)、《密碼編碼學與網路安全 原理與實踐》(第六版)
前言:今天讀到了《精通位元幣2》的第四章,但是文章講的太簡略了,如果沒有密碼學補充知識就很難看懂,故這里進行一些補充說明,希望能夠更好地幫助大家理解,如果博客有誤還請大家在評論區指正,謝謝!
目錄
- 一、介紹
- 二、基礎知識
- 1、韋達公式
- 2、Abel群
- 3、本原元
- 三、橢圓曲線
- 1、實數上的橢圓曲線
- 2、模素數的橢圓曲線
- 3、位元幣中的橢圓曲線
- 四、公鑰的生成
- 五、位元幣地址
一、介紹
- 密碼體制:公鑰密碼體制
- 私鑰、公鑰、地址的關系:私鑰是隨機選出的一個數字(使用作業系統底層的亂數生成器產生256位亂數,如果小于n則可以作為私鑰),然后通過橢圓曲線演算法生成公鑰,再利用SHA256和RIPEMD160生成地址(以公鑰 K作為輸入,計算其SHA256哈希,然后對結果再計算RIPEMD160 哈希,得到一個長度為160位(20位元組)的數字)
二、基礎知識
1、韋達公式
這個我確實給忘了哈哈哈,只用看三個根相加即可

2、Abel群
只要記住它除了滿足一般的群公理,即運算的結合律、G 有單位元、所有 G 的元素都有逆元之外,還滿足交換律公理,
- 封閉性:若a和b屬于G,則a*b也屬于G
- 結合性:在G中a,b,c,有(a·b)·c=a·(b·c)
- 單位元:G中存在元素e使得對G中的a,e·a=a·e=a
- 逆元:對G中任何a存在a’使得 a’·a=a`a’=e
- 交換性:對G中a,b,有a·b = b·a
3、本原元
如果模冪運算 ax = 1 (mod n),記滿足該方程的最小正整數m為模n下a的階記為ordn(a),并且如果a的階等于 φ \varphi φ(n),則稱a為n的本原元,其中 φ \varphi φ(n)=n-1
其中,ordn(a)必然是 φ \varphi φ(n)=n-1的因子,所以求a的階只需要計算 ad (mod n)即可,這里d是 φ \varphi φ(n)=n-1的因子,
例如:求n=23的本原元

三、橢圓曲線
1、實數上的橢圓曲線
這里通過《密碼學原理與實踐》(第三版)上的案例對橢圓曲線進行解釋,便于后面理解位元幣的橢圓曲線,



2、模素數的橢圓曲線
有了上面的基礎,我相信你也很快可以看懂啦



3、位元幣中的橢圓曲線
橢圓曲線方程:

橢圓曲線圖片:

乘法的快速計算(影像法)
倍乘法的流程如下:(參考博客:https://blog.csdn.net/u012391423/article/details/116233630)

- 過 G點做切線 , 與橢圓曲線相交的點即為 -2G , -2G = G + G
- -2G點 上下翻轉 , 得到 2G交點
- 過 2G點做切線 , 可以計算獲得 -4G = -2G + -2G
- -4G點 上下翻轉 , 得到 4G交點
- 依次類推…
四、公鑰的生成
位元幣的私鑰是一個隨機生成的數字k,這里可以看到教材中最后那個加密案例,這個k相當于那個k,然后將其與橢圓曲線上預定的生成點G相乘(這里我還沒有太清楚這個生成點G是一直不變還是會相應改變),得到的曲線上另一個點就是公鑰K,即:K=k*G (是不可逆的,因為難算)
這里的乘法就按照上面教的做即可,
K=(x,y)
tips:
- 這篇回答中跑了一下代碼,可以看看https://zhuanlan.zhihu.com/p/36705648
- 為什么位元幣中的橢圓曲線不可逆
https://blog.csdn.net/superbfly/article/details/88639055?
假定我們現在已知點8G(公鑰K),我們可以反向推出它關于x軸的對稱點-8G,到了這一步我們會發現,想通過-8G反向堆出4G變成了不可能的事情,因為-8G是橢圓曲線上的一個點,在平面上過這個點有無數條直線,這里或許會有一潭訓者幾條與橢圓曲線相切,但這些切線我們卻無從求得,或許我們可以逐條測驗,通過窮舉法找出過點-8G且與橢圓曲線相切的直線,進而得到可能的點4G,但不要忘記,我們只是進行了反向推理的第一步,我們想從4G得到2G也需要同樣的計算量,這還只是我們將私鑰k定為了8,如果私鑰k真的是我們上面的1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD,那么計算量將是不可想象的,
五、位元幣地址
還沒看,看了補充
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/413550.html
標籤:區塊鏈
上一篇:如何在C 中獲取納秒檔案創建時間
