院長公開課:都在說的密碼學到底跟區塊鏈有什麼關係?

院長公開課:都在說的密碼學到底跟區塊鏈有什麼關係?

區塊鏈對於大家來說,應該都不陌生。這門從上世紀七十年代就已經被提出的技術,在最近這短短的十多年裡迅速而又深刻的影響著我們的生活。大家在聊區塊鏈的時候,經常都會提到密碼學,其實縱觀區塊鏈的成長史,密碼學一直扮演著不可或缺的角色,本期我們就來聊聊密碼學以及密碼學和區塊鏈的那些事兒!

密碼學的發展階段

密碼學的發展大概可以分為三個階段:古典密碼學、現代密碼學、公鑰密碼學。

古典密碼學:

這階段的核心密碼學思想主要為代替和置換。代替就是將明文每個字元替換成另外一種字元產生密文,接收者根據對應的字元替換密文就得到明文了。置換就是將明文的字元順序按照某種規則打亂。中國古代兵書《龍韜陰符》篇和《龍韜陰書》篇就講述了君主如何在戰爭中與在外的將領進行保密通訊,而古希臘在大約在公元前700年,軍隊已經用上了一種叫做Scytale的圓木棍來進行保密通訊。

現代密碼學:

這階段的發展主要是對稱加密演算法。對稱加密是傳送方使用某種公開的演算法使用金鑰對明文進行加密,接收方使用之前傳送方給予的金鑰對密文進行解密得到明文。大家在電視上經常看到多大的摩斯密碼就是現代密碼學的一個典型。摩斯密碼是一種時通時斷的訊號程式碼,透過不同的排列順序來表達不同的英文字母、數字和標點符號,屬於一種早期的數字化通訊形式。

公匙密碼學:

這個階段的發展主要是非對稱加密演算法。非對稱加密的原理是公鑰加密,私鑰解密。它的實現過程是A透過某種演算法產生一對金鑰,分別是公鑰和私鑰,然後將公鑰公開。B想傳送資訊給A,就使用A的公鑰對明文進行加密產生密文併發送給A。A接收到密文後,用自己的私鑰對密文進行解密,得到明文。

密碼學在區塊鏈技術上的應用

密碼學在區塊鏈技術上的應用主要體現在現代密碼學和公鑰密碼學上。密碼學在區塊鏈的應用非常廣泛,可分為3類:對稱加密演算法、非對稱加密演算法和雜湊雜湊演算法。常見的方法有:Merkle tree 雜湊樹演算法,橢圓曲線演算法,SHA-256演算法,Base58編碼。主要作用是透過hash演算法快速查詢、對明文進行加解密、對資訊進行簽名以及驗證、產生數字證書、生成賬戶地址等。

對稱加密(也叫私鑰加密)指加密和解密使用相同金鑰的加密演算法

。有時又叫傳統密碼演算法,就是加密金鑰能夠從解密金鑰中推算出來,同時解密金鑰也可以從加密金鑰中推算出來。而在大多數的對稱演算法中,加密金鑰和解密金鑰是相同的,所以也稱這種加密演算法為秘密金鑰演算法或單金鑰演算法。它要求傳送方和接收方在安全通訊之前,商定一個金鑰。對稱演算法的安全性依賴於金鑰,洩漏金鑰就意味著任何人都可以對他們傳送或接收的訊息解密,所以金鑰的保密性對通訊的安全性至關重要。基於“對稱金鑰”的加密演算法主要有DES、TripleDES、RC2、RC4、RC5和Blowfish等

對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高,最大的優點在於加解密的高速度和使用長金鑰時的難破解性。

不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對使用者每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量呈幾何級數增長,金鑰管理成為使用者的負擔。

非對稱加密需要兩個金鑰:公鑰 (publickey) 和私鑰 (privatekey)。

公鑰和私鑰是一對,如果用公鑰對資料加密,那麼只能用對應的私鑰解密。如果用私鑰對資料加密,只能用對應的公鑰進行解密。因為加密和解密用的是不同的金鑰,所以稱為非對稱加密。非對稱加密的主要演算法有RSA、Elgamal、揹包演算法、Rabin、D-H、ECC (橢圓曲線加密演算法)等。其中使用最廣泛的是 RSA 演算法和Elgamal 。

我們常見的數字證書、加密狗即是採用非對稱加密來完成安全驗證的。

非對稱加密的優點是安全性更高,公鑰是公開的,秘鑰是自己儲存的,不需要將私鑰給別人。缺點是加密和解密花費時間長、速度慢,只適合對少量資料進行加密。

Hash演算法可以將一個數據轉換為一個標誌,這個標誌和源資料的每一個位元組都有十分緊密的關係。

Hash演算法還具有一個特點,就是很難找到逆向規律。

Hash演算法是一個廣義的演算法,也可以認為是一種思想,使用Hash演算法可以提高儲存空間的利用率,可以提高資料的查詢效率,也可以做數字簽名來保障資料傳遞的安全性。所以Hash演算法被廣泛地應用在網際網路應用中。

Hash演算法也被稱為雜湊演算法,Hash演算法雖然被稱為演算法,但實際上它更像是一種思想。Hash演算法沒有一個固定的公式,只要符合雜湊思想的演算法都可以被稱為是Hash演算法。

常見的Hash演算法是MD5和SHA-1。

雜湊演算法的優點多得讓人難以置信。不論雜湊表中有多少資料,插入和刪除(有時包括側除)只需要接近常量的時間即0(1)的時間級。對我們來說,這是一瞬間的事。雜湊表運算得非常快,在計算機程式中,如果需要快速查詢資料的話,雜湊表的速度明顯比樹快,樹的操作通常需要O(N)的時間級。雜湊表不僅速度快,程式設計實現也相對容易。

雜湊表的缺點是它是基於陣列的,陣列建立後難於擴充套件某些雜湊表被基本填滿時,當陣列被填滿後,效能會受到很大的影響。並且也沒有一種簡便的方法可以遍歷表中資料項。如果需要遍歷,就只能選擇其他資料結構。

區塊鏈的發展與密碼學緊密相連

如果我們開啟區塊鏈的歷史,會發現區塊鏈的歷史和密碼學的進展是緊密相連的。

比特幣的pow演算法的實現就是利用了hash函式,而pow演算法是1993年提出的。

IPFS的整個演算法的核心是時空證明演算法(PoST),這是2014年提出的。

chia(奇亞)的核心演算法同樣也是時空證明演算法。

drand區塊鏈的核心演算法是來自於多方隨機數協議,這也是最近幾年提出的。

每一個新的區塊鏈核心都往往需要一個核心演算法,這個演算法來支撐著整個系統的架構。

人物簡介

韓冬,1981年生,現任變數數字化研究院院長。韓院長04年畢業於鄭州大學計算機專業,從事科技行業17載,指導專案超過70個,服務使用者超過1000萬。自2016年起,韓院長專注於前沿科技產業,致力於服務企業進行數字化轉型,為多家企業提供數字化能力服務。