密碼是一門古老的藝術,廣泛應用于政治、軍事等領域。但直到香農發表《秘密體制的通信理論》,密碼才從藝術發展為科學和技術。上個世紀70年代美國軍方數據加密標準DES的發布,成為密碼學發展歷史上的第二個里程碑性事件。迪菲和赫爾曼在1976年發表了一篇具有開創性的論文《密碼學的新方向》(New Directions in Cryptography),這篇論文首次引入了公共密鑰加密協議與數字簽名的概念,這兩者構成了現代互聯網中廣泛使用的加密協議的基石。
區塊鏈里面用得比較多的密碼,一是非對稱密碼,二是哈希函數,三是安全多方計算。
(一)
非對稱密碼就是迪菲和赫爾曼1976年發表的《密碼學的新方向》開啟的新領域。非對稱加密(asymmetric cryptography),也稱為公開密鑰加密(Public-key cryptography),是密碼學的一種算法,它需要兩個密鑰,一個是公開密鑰,另一個是私有密鑰。顧名思義,公鑰可以任意對外發布;而私鑰必須由用戶自行嚴格秘密保管,絕不透過任何途徑向任何人提供,也不會透露給要通信的另一方,即使他被信任。
非對稱加密的重要性質:
1.加密的雙向性
加密具有雙向性,即公鑰和私鑰中的任一個均可用作加密,此時另一個則用作解密。
使用其中一個密鑰把明文加密后所得的密文,只能用相對應的另一個密鑰才能解密得到原本的明文,甚至連最初用來加密的密鑰也不能用作解密,這是非對稱加密最重要的性質或者說特點。
2.公鑰無法推導出私鑰
必須確保使用公鑰無法推導出私鑰,至少妄想使用公鑰推導私鑰必須在計算上是不可行的,否則安全性將不復存在。
雖然兩個密鑰在數學上相關,但如果知道了公鑰,并不能憑此計算出私鑰;因此公鑰可以公開,任意向外發布;而私鑰不公開,絕不透過任何途徑向任何人提供。
(二)
哈希函數(Hash)是指把一個大范圍映射到一個小范圍。把大范圍映射到一個小范圍的目的往往是為了節省空間,使得數據容易保存。除此以外,Hash函數往往應用于查找上。所以,在考慮使用Hash函數之前,需要明白它的幾個限制:
Hash的主要原理就是把大范圍映射到小范圍;所以,你輸入的實際值的個數必須和小范圍相當或者比它更小。不然沖突就會很多。
由于Hash逼近單向函數;所以,你可以用它來對數據進行加密。
不同的應用對Hash函數有著不同的要求;比如,用于加密的Hash函數主要考慮它和單項函數的差距,而用于查找的Hash函數主要考慮它映射到小范圍的沖突率。
(三)
安全多方計算(Secure Muti-party Computation,簡稱MPC,亦可簡稱SMC或SMPC)問題首先由華裔計算機科學家、圖領獎獲得者姚期智教授于1982年提出,也就是為人熟知的百萬富翁問題:兩個爭強好勝的富翁Alice和Bob在街頭相遇,如何在不暴露各自財富的前提下比較出誰更富有?安全多方計算旨在解決一組互不信任的參與方之間保護隱私的協同計算問題。
簡單來說,安全多方計算協議作為密碼學的一個子領域,其允許多個數據所有者在互不信任的情況下進行協同計算,輸出計算結果,并保證任何一方均無法得到除應得的計算結果之外的其他任何信息。換句話說,MPC技術可以獲取數據使用價值,卻不泄露原始數據內容。
【MPC技術框架圖 | 中國信息通信研究院《數據流通關鍵技術白皮書》】
在區塊鏈出現以前,密碼學是一門非常小眾的學科,被應用于黨、政、軍等領域,商業應用很少。區塊鏈帶來了密碼學的普及,同時在一些細分領域也推動了密碼學的發展。比如隱私保護、零知識證明、抗量子密碼等等。