區塊鏈密碼學基礎
密碼學發展歷程
密碼學按演算法思想可分為:古典密碼學、現代密碼學、公鑰密碼學。
1949年以前,安全性基於加密演算法的保密性,統稱為古典密碼學;
1949年,夏農的資訊理論誕生為標誌,密碼學步入現代密碼學階段,基於複雜計算的密碼學,其是一種對稱加密演算法;
1976年,Whitfield Diffie和Martin Hellman提出公鑰密碼機制,可以在不直接傳遞金鑰的情況下,完成密文的解密,1978年,RSA公鑰密碼機制出現,開啟一個新的里程碑,公鑰密碼是非對稱加密演算法。
各加密演算法特點
1.古典密碼學:其演算法歸根結底主要有兩種,即:置換和替換;其安全性依賴於演算法的保密性,整體安全性不高。
2.對稱加密:加密演算法和解密演算法都是同一種模式,只用一把金鑰保證加密資料的安全;甲必須把金鑰告訴乙,否則乙無法解密,那麼儲存和傳遞金鑰,成為最頭痛的問題。
3.非對稱加密:有一對金鑰,即:公開金鑰和私有金鑰,用公鑰對資料進行加密後,只有對應的私鑰能解密,反之亦然,通訊雙方無須交換金鑰,就可以建立保密通訊。
4.雜湊演算法:輸入x可以是任意長度的字串,輸出結果,即H(x)的長度是固定的。其可以具有免碰撞;隱匿性;不存在比窮舉更好的方法,以使雜湊結果H(x)落在特定的範圍。
區塊鏈密碼學之雜湊演算法
雜湊演算法的性質
(1)單向性。即給定一個輸入數,容易計算出它的雜湊值,但是已知一個雜湊值根據同樣的演算法不能得到原輸入數。
(2)弱抗碰撞性。即給定一個輸入數,要找到另一個得到給定數的雜湊值,在使用同一種方法時,在計算上不可行。
(3)強抗碰撞性。即對於任意兩個不同的輸入數,根據同樣的演算法計算出相同的雜湊值,在計算上不可行。
常見的雜湊演算法包括MD5和SHA系列演算法。
MD4,MD5系列演算法輸出都是128位,MD5比MD4更安全,但目前這兩種演算法都已經被破解,不推薦使用。
SHA系列演算法包括SHA-1,SHA-3,SHA-224,SHA-256,SHA-384,SHA-512演算法,輸出長度為160位。SHA-1已經被破解,一般推薦使用SHA-256及以上演算法,其中比特幣使用的SHA-256演算法。
區塊鏈密碼學之加解密演算法
密碼學的核心技術,主要分為對稱加密和非對稱加密演算法。
演算法型別 |
特點 |
優勢 |
缺陷 |
代表演算法 |
對稱加密 |
加解密的金鑰相同 |
計算效率高,加密強度高 |
需共享傳輸金鑰,易洩露 |
DES,3DES AES,IDEA,RC5、RC6 |
非對稱加密 |
加解密的金鑰不同 |
無需共享傳輸金鑰 |
計算效率低,仍存在中間人攻擊可能 |
RSA,ELGamal,橢圓曲線算法系列,SM2國密演算法 |
非對稱加密分為公鑰和私鑰,主要基於大數質因子分解、離散對數、橢圓曲線等經典數學難題進行保護。
混合加密機制:結合對稱加密和非對稱加密的優點,如HTTPS協議。
區塊鏈密碼學之訊息認證碼和數字簽名
訊息認證碼(HMAC基於hash的訊息認證碼):基於對稱加密,可用於對訊息完整性進行保護。
過程為對某個訊息利用提前共享的對稱祕鑰和雜湊演算法進行加密處理,得到HMAC值。該HMAC值持有方可以證明自己擁有共享的對稱祕鑰,並且也可以利用HMAC確保訊息內容未被篡改。一般用於證明身份的場景。訊息認證碼的缺點是需要共享金鑰,若金鑰洩露則不能正確證明身份,而採用非對稱加密演算法更為可靠,即數字簽名。
數字摘要:對數字內容進行雜湊運算,獲取唯一的摘要值來指代原始完整的數字內容。
數字簽名,就是隻有資訊的傳送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對資訊的傳送者傳送資訊真實性的一個有效證明。
數字簽名是非對稱金鑰加密技術與數字摘要技術的應用(雜湊演算法加非對稱加密演算法形成數字簽名)。
(1) 被髮送檔案用SHA編碼加密產生數字摘要。
(2) 傳送方用自己的私鑰對摘要再加密,這就形成了數字簽名。
(3) 將原文和加密的摘要同時傳給對方。
(4) 對方用傳送方的公共金鑰對數字簽名解密,同時對收到的檔案用SHA編碼加密產生又一摘要。
(5) 將解密後的摘要和收到的檔案在接收方重新加密產生的摘要相互對比。如兩者一致,則說明傳送過程中資訊沒有被破壞或篡改過。否則不然。
常用的簽名演算法有
-
RSA,基於大整數分解問題
-
DSA,基於離散對數問題
-
ECDSA,屬於DSA的一個變種,基於橢圓曲線上的離散對數問題
其中RSA是實現數字簽名最簡單的公鑰加密方法,比特幣使用的ECDSA橢圓曲線加密演算法。
除此之外,針對一些特定的安全需求,產生了一些特殊數字簽名技術,如盲簽名、環簽名、群簽名、多重簽名等。
數字證書:對於非對稱加密和數字簽名來說,很重要的一點就是公鑰的分發,需要有統一的標準,否則有可能是偽造的。數字證書就是網際網路通訊中標誌通訊各方身份資訊的一串數字,提供了一種在Internet上驗證通訊實體身份的方式,數字證書不是數字身份證,而是身份認證機構蓋在數字身份證上的一個章或印(或者說加在數字身份證上的一個簽名)。它是由權威機構——CA機構,又稱為證書授權(Certificate Authority)中心發行的,人們可以在網上用它來識別對方的身份。
CA機構:負責辦法權威數字證書的中心機構。常用的證書規範為X509系列證書。
PKI體系(公鑰基礎設施):在非對稱加密中,公鑰可以通過證書機制來進行保護,但證書的生成、分發、撤銷等過程並沒有在X509規範中定義,而是遵循PKI體系來完成。
PKI元件:
(1)CA(Certification Authority):負責幀數的頒發和作廢,接受來自RA的請求,是最核心的部分;
(2)RA(Registration Authority):對使用者身份進行驗證,檢驗資料合法性,負責登記,稽核過了就發給CA;
(3)證書資料庫:存放證書,多采用X.500系列標準格式。
區塊鏈系統其他的常見密碼學知識還有默克爾樹、同態加密與函式加密,零知識證明和量子密碼學等密碼協議演算法。
參考:
《區塊鏈原理設計與應用》,楊保華、陳昌著。