區(qū)塊鏈的密碼技術(shù)有數(shù)字簽名算法和哈希算法。數(shù)字簽名算法是數(shù)字簽名標(biāo)準(zhǔn)的一個(gè)子集,表示了只用作數(shù)字簽名的一個(gè)特定的公鑰算法;而哈希算法是將任意長(zhǎng)度的二進(jìn)制明文映射為較短的二進(jìn)制串的算法,并且不同的明文很難映射為相同的Hash值。
本教程操作環(huán)境:windows7系統(tǒng)、Dell G3電腦。
密碼學(xué)技術(shù)是區(qū)塊鏈技術(shù)的核心。區(qū)塊鏈的密碼技術(shù)有數(shù)字簽名算法和哈希算法。
數(shù)字簽名算法
數(shù)字簽名算法是數(shù)字簽名標(biāo)準(zhǔn)的一個(gè)子集,表示了只用作數(shù)字簽名的一個(gè)特定的公鑰算法。密鑰運(yùn)行在由SHA-1產(chǎn)生的消息哈希:為了驗(yàn)證一個(gè)簽名,要重新計(jì)算消息的哈希,使用公鑰解密簽名然后比較結(jié)果??s寫(xiě)為DSA。
數(shù)字簽名是電子簽名的特殊形式。到目前為止,至少已經(jīng)有 20 多個(gè)國(guó)家通過(guò)法律 認(rèn)可電子簽名,其中包括歐盟和美國(guó),我國(guó)的電子簽名法于 2004 年 8 月 28 日第十屆全 國(guó)人民代表大會(huì)常務(wù)委員會(huì)第十一次會(huì)議通過(guò)。數(shù)字簽名在 ISO 7498-2 標(biāo)準(zhǔn)中定義為: “附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對(duì)數(shù)據(jù)單元所作的密碼變換,這種數(shù)據(jù)和變換允許數(shù)據(jù)單元的接收者用以確認(rèn)數(shù)據(jù)單元來(lái)源和數(shù)據(jù)單元的完整性,并保護(hù)數(shù)據(jù),防止被人(例如接收者)進(jìn)行偽造”。數(shù)字簽名機(jī)制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問(wèn)題,利用數(shù)據(jù)加密技術(shù)、數(shù)據(jù)變換技術(shù),使收發(fā)數(shù)據(jù)雙方能夠滿足兩個(gè)條件:接收方能夠鑒別發(fā)送方所宣稱的身份;發(fā)送方以后不能否認(rèn)其發(fā)送過(guò)該數(shù)據(jù)這一 事實(shí)。
數(shù)字簽名是密碼學(xué)理論中的一個(gè)重要分支。它的提出是為了對(duì)電子文檔進(jìn)行簽名,以 替代傳統(tǒng)紙質(zhì)文檔上的手寫(xiě)簽名,因此它必須具備 5 個(gè)特性。
(1)簽名是可信的。
(2)簽名是不可偽造的。
(3)簽名是不可重用的。
(4)簽名的文件是不可改變的。
(5)簽名是不可抵賴的。
哈希(hash)算法
Hash,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射, pre-image),通過(guò)散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,其中散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,但是不可逆向推導(dǎo)出輸入值。簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。
哈希(Hash)算法,它是一種單向密碼體制,即它是一個(gè)從明文到密文的不可逆的映射,只有加密過(guò)程,沒(méi)有解密過(guò)程。同時(shí),哈希函數(shù)可以將任意長(zhǎng)度的輸入經(jīng)過(guò)變化以后得到固定長(zhǎng)度的輸出。哈希函數(shù)的這種單向特征和輸出數(shù)據(jù)長(zhǎng)度固定的特征使得它可以生成消息或者數(shù)據(jù)。
以比特幣區(qū)塊鏈為代表,其中工作量證明和密鑰編碼過(guò)程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),這種方式帶來(lái)的好處是增加了工作量或者在不清楚協(xié)議的情況下增加破解難度。
以比特幣區(qū)塊鏈為代表,主要使用的兩個(gè)哈希函數(shù)分別是:
1.SHA-256,主要用于完成PoW(工作量證明)計(jì)算;
2.RIPEMD160,主要用于生成比特幣地址。如下圖1所示,為比特幣從公鑰生成地址的流程。