區(qū)塊鏈之加密原理總結(jié)(一)

????先放一張以太坊的架構(gòu)圖:

區(qū)塊鏈架構(gòu)圖


? ??在學(xué)習(xí)的過程中主要是采用單個(gè)模塊了學(xué)習(xí)了解的躬柬,包括P2P,密碼學(xué),網(wǎng)絡(luò)印颤,協(xié)議等请祖。直接開始總結(jié):

一订歪、非對(duì)稱加密基礎(chǔ)知識(shí)

(一)非對(duì)稱加密解決的問題

? ??????????????秘鑰分配問題也就是秘鑰的傳輸問題,如果對(duì)稱秘鑰肆捕,那么只能在線下進(jìn)行秘鑰的交換刷晋。如果在線上傳輸秘鑰,那就有可能被攔截慎陵。所以采用非對(duì)稱加密眼虱,兩把鑰匙,一把私鑰自留席纽,一把公鑰公開捏悬。公鑰可以在網(wǎng)上傳輸。不用線下交易润梯。保證數(shù)據(jù)的安全性过牙。

(二)非對(duì)稱加密過程演示與相關(guān)問題

????1、公鑰加密演示


????????如上圖纺铭,A節(jié)點(diǎn)發(fā)送數(shù)據(jù)到B節(jié)點(diǎn)寇钉,此時(shí)采用公鑰加密。A節(jié)點(diǎn)從自己的公鑰中獲取到B節(jié)點(diǎn)的公鑰對(duì)明文數(shù)據(jù)加密舶赔,得到密文發(fā)送給B節(jié)點(diǎn)摧莽。而B節(jié)點(diǎn)采用自己的私鑰解密。

????問題:

????????1顿痪、無法驗(yàn)證消息來源:由于B的公鑰是公開的,那么B節(jié)點(diǎn)怎么確定數(shù)據(jù)是A節(jié)點(diǎn)傳輸過來的呢油够?黑客模擬A節(jié)點(diǎn)發(fā)送消息也是有可能啊蚁袭。

????????2、無法解決消息篡改石咬。

2揩悄、私鑰加密公鑰解密演示


????如上圖,A節(jié)點(diǎn)采用B的公鑰進(jìn)行加密鬼悠,然后將密文傳輸給B節(jié)點(diǎn)删性。B節(jié)點(diǎn)拿A節(jié)點(diǎn)的公鑰將密文解密亏娜。

????問題:

????????1、由于A的公鑰是公開的蹬挺,一旦網(wǎng)上黑客攔截消息维贺,密文形同虛設(shè)。說白了巴帮,這種加密方式溯泣,只要攔截消息,就都能解開榕茧。

????????2垃沦、同樣存在無法確定消息來源的問題,和消息篡改的問題用押。

3肢簿、雙重加密演示--先公鑰加密,后私鑰簽名


????????如上圖蜻拨,A節(jié)點(diǎn)在發(fā)送數(shù)據(jù)前池充,先用B的公鑰加密,得到密文1官觅,再用A的私鑰對(duì)密文1加密得到密文2纵菌。而B節(jié)點(diǎn)得到密文后,先用A的公鑰解密休涤,得到密文1咱圆,之后用B的私鑰解密得到明文。

????問題:

????????1功氨、當(dāng)網(wǎng)絡(luò)上攔截到數(shù)據(jù)密文2時(shí)序苏, 由于A的公鑰是公開的,故可以用A的公鑰對(duì)密文2解密捷凄,就得到了密文1忱详。所以這樣看起來是雙重加密,其實(shí)最后一層的私鑰簽名是無效的跺涤。一般來講匈睁,我們都希望簽名是簽在最原始的數(shù)據(jù)上。如果簽名放在后面桶错,由于公鑰是公開的航唆,簽名就缺乏安全性。

????????2院刁、存在性能問題糯钙,非對(duì)稱加密本身效率就很低下,還進(jìn)行了兩次加密過程。

4任岸、雙重加密演示--先私鑰簽名再榄,后公鑰加密


????????如上圖,A節(jié)點(diǎn)先用A的私鑰加密享潜,之后用B的公鑰加密困鸥。B節(jié)點(diǎn)收到消息后,先采用B的私鑰解密米碰,然后再利用A的公鑰解密窝革。

????????1、當(dāng)密文數(shù)據(jù)2被黑客攔截后吕座,由于密文2只能采用B的私鑰解密虐译,而B的私鑰只有B節(jié)點(diǎn)有,其他人無法機(jī)密吴趴。故安全性最高漆诽。

????????2、當(dāng)B節(jié)點(diǎn)解密得到密文1后锣枝, 只能采用A的公鑰來解密厢拭。而只有經(jīng)過A的私鑰加密的數(shù)據(jù)才能用A的公鑰解密成功,A的私鑰只有A節(jié)點(diǎn)有撇叁,所以可以確定數(shù)據(jù)是由A節(jié)點(diǎn)傳輸過來的供鸠。

????問題:

????????經(jīng)兩次非對(duì)稱加密,性能問題比較嚴(yán)重陨闹。

(三)楞捂、消息認(rèn)證

????????基于以上篡改數(shù)據(jù)的問題,我們引入了消息認(rèn)證趋厉。經(jīng)過消息認(rèn)證后的加密流程如下:

????????當(dāng)A節(jié)點(diǎn)發(fā)送消息前寨闹,先對(duì)明文數(shù)據(jù)做一次散列計(jì)算。得到一個(gè)摘要, 之后將照耀與原始數(shù)據(jù)同時(shí)發(fā)送給B節(jié)點(diǎn)君账。當(dāng)B節(jié)點(diǎn)接收到消息后繁堡,對(duì)消息解密。解析出其中的散列摘要和原始數(shù)據(jù)乡数,然后再對(duì)原始數(shù)據(jù)進(jìn)行一次同樣的散列計(jì)算得到摘要1, 比較摘要與摘要1椭蹄。如果相同則未被篡改,如果不同則表示已經(jīng)被篡改净赴。

????????在傳輸過程中塑娇,密文2只要被篡改,最后導(dǎo)致的hash與hash1就會(huì)產(chǎn)生不同劫侧。

????問題:

????????無法解決簽名問題,也就是雙方相互攻擊。A對(duì)于自己發(fā)送的消息始終不承認(rèn)烧栋。比如A對(duì)B發(fā)送了一條錯(cuò)誤消息写妥,導(dǎo)致B有損失。但A抵賴不是自己發(fā)送的审姓。

(四)珍特、消息簽名

????????在(三)的過程中,沒有辦法解決交互雙方相互攻擊魔吐。什么意思呢扎筒? 有可能是因?yàn)锳發(fā)送的消息,對(duì)A節(jié)點(diǎn)不利酬姆,后來A就抵賴這消息不是它發(fā)送的嗜桌。

????????為了解決這個(gè)問題,故引入了簽名辞色。這里我們將(二)-4中的加密方式骨宠,與消息簽名合并設(shè)計(jì)在一起。

? ? ? ?在上圖中相满,我們利用A節(jié)點(diǎn)的私鑰對(duì)其發(fā)送的摘要信息進(jìn)行簽名层亿,然后將簽名+原文,再利用B的公鑰進(jìn)行加密立美。而B得到密文后匿又,先用B的私鑰解密,然后 對(duì)摘要再用A的公鑰解密建蹄,只有比較兩次摘要的內(nèi)容是否相同碌更。這既避免了防篡改問題,有規(guī)避了雙方攻擊問題躲撰。因?yàn)锳對(duì)信息進(jìn)行了簽名针贬,故是無法抵賴的。

(五)拢蛋、混合加密--不變的共享對(duì)稱秘鑰

????????為了解決非對(duì)稱加密數(shù)據(jù)時(shí)的性能問題桦他,故往往采用混合加密。這里就需要引入對(duì)稱加密谆棱,如下圖:


????????在對(duì)數(shù)據(jù)加密時(shí)快压,我們采用了雙方共享的對(duì)稱秘鑰來加密。而對(duì)稱秘鑰盡量不要在網(wǎng)絡(luò)上傳輸垃瞧,以免丟失蔫劣。這里的共享對(duì)稱秘鑰是根據(jù)自己的私鑰和對(duì)方的公鑰計(jì)算出的,然后適用對(duì)稱秘鑰對(duì)數(shù)據(jù)加密个从。而對(duì)方接收到數(shù)據(jù)時(shí)脉幢,也計(jì)算出對(duì)稱秘鑰然后對(duì)密文解密歪沃。

????問題:

????????以上這種對(duì)稱秘鑰是不安全的,因?yàn)锳的私鑰和B的公鑰一般短期內(nèi)固定嫌松,所以共享對(duì)稱秘鑰也是固定不變的沪曙。為了增強(qiáng)安全性,最好的方式是每次交互都生成一個(gè)臨時(shí)的共享對(duì)稱秘鑰萎羔。那么如何才能在每次交互過程中生成一個(gè)隨機(jī)的對(duì)稱秘鑰液走,且不需要傳輸呢?

(六)贾陷、混合加密--隨機(jī)的共享對(duì)稱秘鑰

????????那么如何生成隨機(jī)的共享秘鑰進(jìn)行加密呢缘眶?

????????對(duì)于發(fā)送方A節(jié)點(diǎn),在每次發(fā)送時(shí)髓废,都生成一個(gè)臨時(shí)非對(duì)稱秘鑰對(duì)巷懈,然后根據(jù)B節(jié)點(diǎn)的公鑰 和 臨時(shí)的非對(duì)稱私鑰 可以計(jì)算出一個(gè)對(duì)稱秘鑰(KA算法-Key Agreement)。然后利用該對(duì)稱秘鑰對(duì)數(shù)據(jù)進(jìn)行加密瓦哎,針對(duì)共享秘鑰這里的流程如下:


????????對(duì)于B節(jié)點(diǎn)砸喻,當(dāng)接收到傳輸過來的數(shù)據(jù)時(shí),解析出其中A節(jié)點(diǎn)的隨機(jī)公鑰蒋譬,之后利用A節(jié)點(diǎn)的隨機(jī)公鑰 與 B節(jié)點(diǎn)自身的私鑰 計(jì)算出對(duì)稱秘鑰(KA算法)割岛。之后利用對(duì)稱秘鑰機(jī)密數(shù)據(jù)。



(七)犯助、其他

????????對(duì)于以上加密方式癣漆,其實(shí)仍然存在很多問題,比如如何避免重放攻擊(在消息中加入Nonce)剂买,再比如彩虹表(參考KDF機(jī)制解決)之類的問題惠爽。由于時(shí)間及能力有限,故暫時(shí)忽略瞬哼。

????????那么究竟應(yīng)該采用何種加密呢婚肆?

????????主要還是基于要傳輸?shù)臄?shù)據(jù)的安全等級(jí)來考量。不重要的數(shù)據(jù)其實(shí)做好認(rèn)證和簽名就可以坐慰,但是很重要的數(shù)據(jù)就需要采用安全等級(jí)比較高的加密方案了较性。




二、基于ECC的加密套件


(一)结胀、加密套件概念

????????密碼套件 是一個(gè)網(wǎng)絡(luò)協(xié)議的概念赞咙。其中主要包括身份認(rèn)證、加密糟港、消息認(rèn)證(MAC)攀操、秘鑰交換的算法組成。

????????在整個(gè)網(wǎng)絡(luò)的傳輸過程中秸抚,根據(jù)密碼套件主要分如下幾大類算法:

????????秘鑰交換算法:比如ECDHE速和、RSA歹垫。主要用于客戶端和服務(wù)端握手時(shí)如何進(jìn)行身份驗(yàn)證。

????????消息認(rèn)證算法:比如SHA1颠放、SHA2县钥、SHA3。主要用于消息摘要慈迈。

????????批量加密算法:比如AES, 主要用于加密信息流。

????????偽隨機(jī)數(shù)算法:例如TLS 1.2的偽隨機(jī)函數(shù)使用MAC算法的散列函數(shù)來創(chuàng)建一個(gè)主密鑰——連接雙方共享的一個(gè)48字節(jié)的私鑰省有。主密鑰在創(chuàng)建會(huì)話密鑰(例如創(chuàng)建MAC)時(shí)作為一個(gè)熵來源痒留。

(二)、在網(wǎng)絡(luò)中都涉及哪些加密呢蠢沿?

????????在網(wǎng)絡(luò)中伸头,一次消息的傳輸一般需要在如下4個(gè)階段分別進(jìn)行加密,才能保證消息安全舷蟀、可靠的傳輸恤磷。

????????握手/網(wǎng)絡(luò)協(xié)商階段:

????????在雙方進(jìn)行握手階段,需要進(jìn)行鏈接的協(xié)商野宜。主要的加密算法包括RSA扫步、DH、ECDH等

? ????? 身份認(rèn)證階段:

????????身份認(rèn)證階段匈子,需要確定發(fā)送的消息的來源來源河胎。主要采用的加密方式包括RSA、DSA虎敦、ECDSA(ECC加密游岳,DSA簽名)等。

????????消息加密階段:

????????消息加密指對(duì)發(fā)送的信息流進(jìn)行加密其徙。主要采用的加密方式包括DES胚迫、RC4、AES等唾那。

????????消息身份認(rèn)證階段/防篡改階段:

????????主要是保證消息在傳輸過程中確保沒有被篡改過访锻。主要的加密方式包括MD5、SHA1通贞、SHA2朗若、SHA3等。

(三)昌罩、ECC哭懈、ECDSA、ECDHE茎用、ECIES

? ??????ECC:Elliptic Curves Cryptography遣总,橢圓曲線密碼編碼學(xué)睬罗。是一種根據(jù)橢圓上點(diǎn)倍積生成 公鑰、私鑰的算法旭斥。用于生成公私秘鑰容达。

? ??????ECDSA:用于數(shù)字簽名,是一種數(shù)字簽名算法。一種有效的數(shù)字簽名使接收者有理由相信消息是由已知的發(fā)送者創(chuàng)建的垂券,從而發(fā)送者不能否認(rèn)已經(jīng)發(fā)送了消息(身份驗(yàn)證和不可否認(rèn))花盐,并且消息在運(yùn)輸過程中沒有改變。ECDSA簽名算法是ECC與DSA的結(jié)合菇爪,整個(gè)簽名過程與DSA類似算芯,所不一樣的是簽名中采取的算法為ECC,最后簽名出來的值也是分為r,s凳宙。主要用于身份認(rèn)證階段熙揍。

? ??????ECDH:也是基于ECC算法的霍夫曼樹秘鑰,通過ECDH氏涩,雙方可以在不共享任何秘密的前提下協(xié)商出一個(gè)共享秘密届囚,并且是這種共享秘鑰是為當(dāng)前的通信暫時(shí)性的隨機(jī)生成的,通信一旦中斷秘鑰就消失是尖。主要用于握手磋商階段意系。

? ??????ECIES:是一種集成加密方案,也可稱為一種混合加密方案,它提供了對(duì)所選擇的明文和選擇的密碼文本攻擊的語義安全性析砸。ECIES可以使用不同類型的函數(shù):秘鑰協(xié)商函數(shù)(KA)昔字,秘鑰推導(dǎo)函數(shù)(KDF),對(duì)稱加密方案(ENC)首繁,哈希函數(shù)(HASH), H-MAC函數(shù)(MAC)作郭。

? ??????ECC是橢圓加密算法,主要講述了按照公私鑰怎么在橢圓上產(chǎn)生弦疮,并且不可逆夹攒。ECDSA則主要是采用ECC算法怎么來做簽名,ECDH則是采用ECC算法怎么生成對(duì)稱秘鑰胁塞。以上三者都是對(duì)ECC加密算法的應(yīng)用咏尝。而現(xiàn)實(shí)場(chǎng)景中,我們往往會(huì)采用混合加密(對(duì)稱加密啸罢,非對(duì)稱加密結(jié)合使用编检,簽名技術(shù)等一起使用)。ECIES就是底層利用ECC算法提供的一套集成(混合)加密方案扰才。其中包括了非對(duì)稱加密允懂,對(duì)稱加密和簽名的功能。

(三)衩匣、ECC算法

1蕾总、ECC定義:

????????ECC 是?Elliptic Curve Cryptography的簡(jiǎn)稱粥航。那么什么是橢圓加密曲線呢?Wolfram MathWorld 給出了很標(biāo)準(zhǔn)的定義:一條橢圓曲線就是一組被?y^2=x^3+ax+b??定義的且滿足?? 4a^3+27b^2 \neq 0?的點(diǎn)集生百。?

4a^3+27b^2\neq 0這個(gè)先訂條件是為了保證曲線不包含奇點(diǎn)递雀。

所以,隨著曲線參數(shù)a和b的不斷變化蚀浆,曲線也呈現(xiàn)出了不同的形狀缀程。比如:

2、ECC算法的理解

????????所有的非對(duì)稱加密的基本原理基本都是基于一個(gè)公式 K = k*G市俊。其中K代表公鑰杠输,k代表私鑰,G代表某一個(gè)選取的基點(diǎn)秕衙。非對(duì)稱加密的算法 就是要保證 該公式?不可進(jìn)行逆運(yùn)算(也就是說G/K是無法計(jì)算的)。

????????ECC是如何計(jì)算出公私鑰呢僵刮?這里我按照我自己的理解來描述据忘。

? ??????我理解,ECC的核心思想就是:選擇曲線上的一個(gè)基點(diǎn)G搞糕,之后隨機(jī)在ECC曲線上取一個(gè)點(diǎn)k(作為私鑰)勇吊,然后根據(jù)k*G計(jì)算出我們的公鑰K。并且保證公鑰K也要在曲線上窍仰。

????????那么k*G怎么計(jì)算呢汉规?如何計(jì)算k*G才能保證最后的結(jié)果不可逆呢?這就是ECC算法要解決的驹吮。

????????首先针史,我們先隨便選擇一條ECC曲線,a = -3, b = 7 得到如下曲線:

?????????在這個(gè)曲線上碟狞,我隨機(jī)選取兩個(gè)點(diǎn)啄枕,這兩個(gè)點(diǎn)的乘法怎么算呢?我們可以簡(jiǎn)化下問題族沃,乘法是都可以用加法表示的频祝,比如2*2 = 2+2,3*5 = 5+5+5脆淹。 那么我們只要能在曲線上計(jì)算出加法常空,理論上就能算乘法。所以盖溺,只要能在這個(gè)曲線上進(jìn)行加法計(jì)算漓糙,理論上就可以來計(jì)算乘法,理論上也就可以計(jì)算k*G這種表達(dá)式的值咐柜。

3兼蜈、ECC加法體系

????????曲線上兩點(diǎn)的加法又怎么算呢攘残?這里ECC為了保證不可逆性,在曲線上自定義了加法體系为狸。

????????現(xiàn)實(shí)中歼郭,1+1=2,2+2=4辐棒,但在ECC算法里病曾,我們理解的這種加法體系是不可能。故需要自定義一套適用于該曲線的加法體系漾根。

? ??????ECC定義泰涂,在圖形中隨機(jī)找一條直線,與ECC曲線相交于三個(gè)點(diǎn)(也有可能是兩個(gè)點(diǎn))辐怕,這三點(diǎn)分別是P逼蒙、Q、R寄疏。

? ??????那么P+Q+R = 0是牢。其中0 不是坐標(biāo)軸上的0點(diǎn),而是ECC中的無窮遠(yuǎn)點(diǎn)陕截。也就是說定義了無窮遠(yuǎn)點(diǎn)為0點(diǎn)驳棱。

????????同樣,我們就能得出 P+Q = -R农曲。 由于R 與-R是關(guān)于X軸對(duì)稱的社搅,所以我們就能在曲線上找到其坐標(biāo)。

????????P+R+Q = 0, 故P+R = -Q , 如上圖乳规。

以上就描述了ECC曲線的世界里是如何進(jìn)行加法運(yùn)算的形葬。

4、ECC的乘法計(jì)算與點(diǎn)倍積的推導(dǎo)?


????????從上圖可看出暮的,直線與曲線只有兩個(gè)交點(diǎn)荷并,也就是說 直線是曲線的切線。此時(shí)P,R 重合了青扔。

????????也就是P = R, 根據(jù)上述ECC的加法體系源织,P+R+Q = 0, 就可以得出 P+R+Q = 2P+Q = 2R+Q=0

????????于是乎得到 2*P = -Q (是不是與我們非對(duì)稱算法的公式 K = k*G 越來越近了)。

????????于是我們得出一個(gè)結(jié)論微猖,可以算乘法谈息,不過只有在切點(diǎn)的時(shí)候才能算乘法,而且只能算2的乘法凛剥。

????????假若 2 可以變成任意個(gè)數(shù)進(jìn)行想乘侠仇,那么就能代表在ECC曲線里可以進(jìn)行乘法運(yùn)算,那么ECC算法就能滿足非對(duì)稱加密算法的要求了。

????????那么我們是不是可以隨機(jī)任何一個(gè)數(shù)的乘法都可以算呢逻炊? 答案是肯定的互亮。也就是點(diǎn)倍積 計(jì)算方式。

????????選一個(gè)隨機(jī)數(shù) k, 那么k * P等于多少呢余素?

????????我們知道在計(jì)算機(jī)的世界里豹休,所有的都是二進(jìn)制的,ECC既然能算2的乘法桨吊,那么我們可以將隨機(jī)數(shù)k描 述成二進(jìn)制然后計(jì)算威根。假若k = 151 = 10010111



????????由于2*P = -Q 所以 這樣就計(jì)算出了k*P。這就是點(diǎn)倍積算法视乐。所以在ECC的曲線體系下是可以來計(jì)算乘法洛搀,那么以為這非對(duì)稱加密的方式是可行的。

????????至于為什么這樣計(jì)算 是不可逆的佑淀。這需要大量的推演留美,我也不了解。但是我覺得可以這樣理解:

????????我們的手表上伸刃,一般都有時(shí)間刻度《懒瘢現(xiàn)在如果把1990年01月01日0點(diǎn)0分0秒作為起始點(diǎn),如果告訴你至起始點(diǎn)為止時(shí)間流逝了 整1年奕枝,那么我們是可以計(jì)算出現(xiàn)在的時(shí)間的,也就是能在手表上將時(shí)分秒指針應(yīng)該指向00:00:00瓶堕。但是反過來隘道,我說現(xiàn)在手表上的時(shí)分秒指針指向了00:00:00,你能告訴我至起始點(diǎn)算過了有幾年了么?

5郎笆、ECDSA 簽名

????????ECDSA簽名算法和其他DSA谭梗、RSA基本相似,都是采用私鑰簽名宛蚓,公鑰驗(yàn)證激捏。只不過算法體系采用的是ECC的算法娱局。交互的雙方要采用同一套參數(shù)體系修赞。簽名原理如下:

????????在曲線上選取一個(gè)無窮遠(yuǎn)點(diǎn)為基點(diǎn)?G = (x,y)。隨機(jī)在曲線上取一點(diǎn)k 作為私鑰僵控, K = k*G 計(jì)算出公鑰痕钢。

? ??????簽名過程:

????????生成隨機(jī)數(shù)R, 計(jì)算出RG.

????????根據(jù)隨機(jī)數(shù)R,消息M的HASH值H,以及私鑰k, 計(jì)算出簽名S = (H+kx)/R.

????????將消息M,RG,S發(fā)送給接收方图柏。

? ??????簽名驗(yàn)證過程:

????????接收到消息M, RG,S

????????根據(jù)消息計(jì)算出HASH值H

????????根據(jù)發(fā)送方的公鑰K,計(jì)算 HG/S + xK/S, 將計(jì)算的結(jié)果與 RG比較。如果相等則驗(yàn)證成功任连。

? ??????公式推論:

????????HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG

6蚤吹、ECDH原理

????????在介紹原理前,說明一下ECC是滿足結(jié)合律和交換律的,也就是說A+B+C = A+C+B = (A+C)+B裁着。

????????這里舉一個(gè)WIKI上的例子說明如何生成共享秘鑰繁涂,也可以參考?Alice And Bob?的例子。

????????Alice 與Bob 要進(jìn)行通信二驰,雙方前提都是基于 同一參數(shù)體系的ECC生成的 公鑰和私鑰扔罪。所以有ECC有共同的基點(diǎn)G。

? ??????生成秘鑰階段:

????????Alice 采用公鑰算法 KA = ka * G 诸蚕,生成了公鑰KA和私鑰ka, 并公開公鑰KA步势。

????????Bob 采用公鑰算法 KB = kb * G ,生成了公鑰KB和私鑰 kb, 并公開公鑰KB背犯。

? ??????計(jì)算ECDH階段:

????????Alice 利用計(jì)算公式 Q = ka * KB ?計(jì)算出一個(gè)秘鑰Q坏瘩。

????????Bob 利用計(jì)算公式 Q' = kb * KA 計(jì)算出一個(gè)秘鑰Q'。

? ??????共享秘鑰驗(yàn)證:

????????Q = ka?KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'

????????故 雙方分別計(jì)算出的共享秘鑰不需要進(jìn)行公開就可采用Q進(jìn)行加密漠魏。我們將Q稱為共享秘鑰倔矾。

7、其他

????????在以太坊中柱锹,采用的ECIEC的加密套件中的其他內(nèi)容:

????????1哪自、其中HASH算法采用的是最安全的SHA3算法Keccak

????????2禁熏、簽名算法采用的是ECDSA

????????3壤巷、認(rèn)證方式采用的是?H-MAC

????????4、ECC的參數(shù)體系采用了secp256k1,? 其他參數(shù)體系參考這里




三瞧毙、以太坊中 UDP通信的加密方案


(一)胧华、H-MAC的加密認(rèn)證簽名模型:


1、H-MAC基本模型:

????????H-MAC全程叫做 Hash-based Message Authentication Code. 其模型如下:



2宙彪、以太坊中UDP的加密矩动,認(rèn)證,簽名模型:

以太坊的 UDP通信時(shí)(RPC通信加密方式不同)释漆,則采用了以上的實(shí)現(xiàn)方式悲没,并擴(kuò)展化了。

首先男图,以太坊的UDP通信的結(jié)構(gòu)如下:


????????其中示姿,sig是 經(jīng)過 私鑰加密的簽名信息。mac是可以理解為整個(gè)消息的摘要逊笆, ptype是消息的事件類型峻凫,data則是經(jīng)過RLP編碼后的傳輸數(shù)據(jù)。

????????其UDP的整個(gè)的加密览露,認(rèn)證荧琼,簽名模型如下:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子命锄,更是在濱河造成了極大的恐慌堰乔,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脐恩,死亡現(xiàn)場(chǎng)離奇詭異镐侯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)驶冒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門苟翻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骗污,你說我怎么就攤上這事崇猫。” “怎么了需忿?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵诅炉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我屋厘,道長(zhǎng)涕烧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任汗洒,我火速辦了婚禮议纯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溢谤。我一直安慰自己瞻凤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布溯香。 她就那樣靜靜地躺著,像睡著了一般浓恶。 火紅的嫁衣襯著肌膚如雪玫坛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天包晰,我揣著相機(jī)與錄音湿镀,去河邊找鬼。 笑死伐憾,一個(gè)胖子當(dāng)著我的面吹牛勉痴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播树肃,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼蒸矛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雏掠,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤斩祭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后乡话,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摧玫,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年绑青,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诬像。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闸婴,死狀恐怖坏挠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掠拳,我是刑警寧澤癞揉,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站溺欧,受9級(jí)特大地震影響喊熟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姐刁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一芥牌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聂使,春花似錦壁拉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至屎蜓,卻和暖如春痘昌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炬转。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工辆苔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扼劈。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓驻啤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親荐吵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骑冗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容