區(qū)塊鏈數(shù)字簽名技術(shù)的過(guò)程及原理介紹
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)交易普及,在交易過(guò)程中經(jīng)常會(huì)碰到數(shù)字簽名這個(gè)概念,當(dāng)然區(qū)塊鏈中也通過(guò)數(shù)字簽名來(lái)驗(yàn)證交易信息的可靠性,這里簡(jiǎn)單介紹下數(shù)字簽名的概念,如有理解不當(dāng)?shù)牡胤?,?qǐng)及時(shí)指正。
簽名:在現(xiàn)實(shí)社會(huì)中,簽名作為簽名者身份的一種證明,簽名代表對(duì)簽名文件的認(rèn)可,不可抵賴(lài)。理論上簽名是可信、不可偽造的。每次你刷卡消費(fèi)后,營(yíng)業(yè)員肯定需要你對(duì)回執(zhí)上進(jìn)行簽名,這就是一種對(duì)消費(fèi)交易的認(rèn)可
數(shù)字簽名(又稱(chēng)公鑰數(shù)字簽名、電子簽章):是一種類(lèi)似寫(xiě)在紙上的普通的物理簽名,但是使用了公鑰加密領(lǐng)域的技術(shù)實(shí)現(xiàn),用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補(bǔ)的運(yùn)算,一個(gè)用于簽名,另一個(gè)用于驗(yàn)證。就是只有信息的發(fā)送者才能產(chǎn)生的別人無(wú)法偽造的一段數(shù)字串,這段數(shù)字串同時(shí)也是對(duì)信息的發(fā)送者發(fā)送信息真實(shí)性的一個(gè)有效證明。簡(jiǎn)單證明“我就是我”。
和傳統(tǒng)的簽名不一樣,互聯(lián)網(wǎng)的發(fā)展和數(shù)字簽名的出現(xiàn),讓簽名認(rèn)證這個(gè)概念應(yīng)用到了更多的層面。
1.簽名認(rèn)證,數(shù)字簽名在網(wǎng)絡(luò)交易上和實(shí)際簽名一樣的認(rèn)可功能,不可抵賴(lài),簽名放擁有私鑰,保證簽名只能自己操作,在出現(xiàn)簽名的環(huán)境下,使用私鑰驗(yàn)證簽名的真?zhèn)巍?/p>
2.防篡改,這個(gè)通過(guò)網(wǎng)絡(luò)下載來(lái)說(shuō)明最為直觀,你在網(wǎng)絡(luò)上下載一個(gè)文件,數(shù)字簽名和文件混合一個(gè)整體數(shù)據(jù)包,通過(guò)對(duì)數(shù)字簽名的驗(yàn)證,保證文件在傳輸過(guò)程中未被篡改。
3.驗(yàn)證數(shù)據(jù)的完整性,如2同理,如果文件有丟失,簽名將不完整,解開(kāi)數(shù)字簽名和之前的比較就會(huì)出現(xiàn)不一致。保證文件的完整。
4.仲裁機(jī)制,數(shù)字簽名也可以認(rèn)為是一個(gè)數(shù)字身份,通過(guò)唯一私鑰生成,在網(wǎng)絡(luò)上交易互動(dòng)時(shí)要求收到一個(gè)數(shù)字簽名的回文,保證過(guò)程的完整。如果對(duì)交互過(guò)程出現(xiàn)抵賴(lài),那么用數(shù)字便于仲裁。
5.保密性,對(duì)于有安全級(jí)別要求文件,數(shù)字簽名加密后傳輸,保證數(shù)據(jù)在被中途截取后無(wú)法獲得其真實(shí)內(nèi)容。有利于數(shù)據(jù)的安全性。
6.防重放:在數(shù)字簽名中,如果采用了對(duì)簽名報(bào)文添加流水號(hào)、時(shí)戳等技術(shù),可以防止重放攻擊。
7.多重?cái)?shù)字簽名,通過(guò)多次數(shù)字簽名,對(duì)文件數(shù)據(jù)進(jìn)行多人認(rèn)證。
數(shù)字簽名整個(gè)過(guò)程驗(yàn)證簡(jiǎn)單,只需要公鑰、私鑰進(jìn)行加解密的驗(yàn)證,和傳統(tǒng)簽名不一致,一般都會(huì)看到電視劇中常出現(xiàn)簽名驗(yàn)證的時(shí)候需要專(zhuān)業(yè)的筆記簽證專(zhuān)家,采用數(shù)字簽名節(jié)省了驗(yàn)證流程和成本。
從數(shù)字簽名過(guò)程來(lái)簡(jiǎn)單理解下原理。
所謂數(shù)字簽名就是附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對(duì)數(shù)據(jù)單元所作的密碼變換。這種數(shù)據(jù)或變換允許數(shù)據(jù)單元的接收者用以確認(rèn)數(shù)據(jù)單元的來(lái)源和數(shù)據(jù)單元的完整性并保護(hù)數(shù)據(jù),防止被人(例如接收者)進(jìn)行偽造。它是對(duì)電子形式的消息進(jìn)行簽名的一種方法,一個(gè)簽名消息能在一個(gè)通信網(wǎng)絡(luò)中傳輸。
1.一段需發(fā)送的數(shù)據(jù)經(jīng)過(guò)hash計(jì)算生成一份摘要。
2.摘要通過(guò)發(fā)送者私鑰進(jìn)行加密。
3.發(fā)送者將使用私鑰加密后的摘要和報(bào)文,生成一段待發(fā)送的數(shù)據(jù)包。數(shù)字簽名即為經(jīng)過(guò)私鑰加密后的加密摘要。
4.接收者使用之前一樣的hash算法對(duì)報(bào)文計(jì)算摘要。
5.接收者再通過(guò)發(fā)送者公鑰對(duì)摘要進(jìn)行加密計(jì)算D。
6.接收者通過(guò)發(fā)送者公鑰對(duì)數(shù)字簽名進(jìn)行解密D’。
7.兩者進(jìn)行比較即可驗(yàn)證。
實(shí)現(xiàn)數(shù)字簽名有很多方法,數(shù)字簽名采用較多的是公鑰加密方式,如基于RSA Date Security 公司的PKCS(Public Key Cryptography Standards)、Digital Signature Algorithm、x.509、PGP(Pretty Good Privacy)。1994年美國(guó)標(biāo)準(zhǔn)與技術(shù)協(xié)會(huì)公布了數(shù)字簽名標(biāo)準(zhǔn)而使公鑰加密技術(shù)廣泛應(yīng)用。公鑰加密系統(tǒng)采用的是非對(duì)稱(chēng)加密算法。之前的文章對(duì)非對(duì)稱(chēng)加密也有過(guò)說(shuō)明,有興趣可以參考。它的主要方式是,報(bào)文的發(fā)送方從報(bào)文文本中生成一個(gè)128位的散列值(或報(bào)文摘要)。發(fā)送方用自己的私人密鑰對(duì)這個(gè)散列值進(jìn)行加密來(lái)形成發(fā)送方的數(shù)字簽名。然后,這個(gè)數(shù)字簽名將作為報(bào)文的附件和報(bào)文一起發(fā)送給報(bào)文的接收方。報(bào)文的接收方首先從接收到的原始報(bào)文中計(jì)算出128位的散列值(或報(bào)文摘要),接著再用發(fā)送方的公用密鑰來(lái)對(duì)報(bào)文附加的數(shù)字簽名進(jìn)行解密。如果兩個(gè)散列值相同、那么接收方就能確認(rèn)該數(shù)字簽名是發(fā)送方的。通過(guò)數(shù)字簽名能夠?qū)崿F(xiàn)對(duì)原始報(bào)文的鑒別。上文數(shù)字簽名步驟解釋的也就是一種公鑰加密簽名的模式。當(dāng)然還有對(duì)稱(chēng)加密方式,現(xiàn)在常用為非對(duì)稱(chēng)加密算法。
結(jié)合區(qū)塊鏈技術(shù)看下公鑰、私鑰、地址、簽名的概念。
上圖是公鑰、私鑰、地址的生成過(guò)程,有了這三個(gè)要素,然后通過(guò)上述數(shù)字簽名的從過(guò)程發(fā)送信息摘要和數(shù)字簽名,驗(yàn)證一致性。區(qū)塊鏈中目前用到的是橢圓曲線算法。
橢圓曲線算法:橢圓曲線算法ECC來(lái)做非對(duì)稱(chēng)加密基礎(chǔ)算法。ECC的210位算法難度就相當(dāng)于RSA 2048的難度,性能則是數(shù)量級(jí)的區(qū)別。這里涉及到一些專(zhuān)業(yè)的數(shù)學(xué)知識(shí)點(diǎn),橢圓算法ECC其實(shí)就是利用乘法容易,而除法難的特點(diǎn),設(shè)計(jì)一個(gè)乘法:K = k * G,其中大K是公鑰,小k是私鑰,G是生成點(diǎn)。由私鑰推導(dǎo)公鑰很容易,只需要k個(gè)G相加即可。但是從公鑰推導(dǎo)私鑰很難,也就是無(wú)法計(jì)算公鑰K除以G。如果有興趣可以參考下文:
順便提一句目前國(guó)密算法的中M2算法也是基于該算法。
大致介紹了數(shù)字簽名和一些基本的數(shù)字簽名算法,簽名算法涉及到比較專(zhuān)業(yè)的數(shù)學(xué)知識(shí),這里大致就介紹了功能和過(guò)程。