技術貼EKT CEO周迅深度解讀區塊鏈起源——密碼學

技術貼EKT CEO周迅深度解讀區塊鏈起源——密碼學

談區塊鏈離不開密碼學。通常來講,區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分佈式節點公式算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分佈式基礎架構與計算範式。區塊鏈的核心是它按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構,並以密碼學方式保證的不可篡改和不可偽造的分佈式賬本。我們對此做一個總結,可以發現區塊鏈中有四項不可缺的核心技術,分別是分佈式存儲、共識機制、密碼學原理和智能合約。而今天我們將主要從密碼學的角度聊一聊區塊鏈的起源問題。

愷撒密碼】 密碼學作為一門古老的學科,有著悠久而奇妙的歷史。它用於保護軍事和外交通信可追溯到幾千年前文字剛剛產生的上古時期。幾千年來,密碼學一直在不斷地向前發展。而隨著當今信息時代的高速發展,密碼學的作用也越來越顯得重要。它已不僅僅侷限於使用在軍事、政治和外交方面,而更多的是與人們的生活息息相關:如人們在進行網上購物,與商務交流,使用信用卡等等,都需要密碼學的知識來保護人們的個人信息和隱私,當然對於我們關注的區塊鏈技術,密碼學作為其基石而存在。

凱撒(Caesar)是第一個把替換密碼用於軍事用途、並且記錄下來的人。在他的那本歌頌自己豐功偉績的《高盧記》裡,凱撒描述了他把密信送到正處於圍困之中、瀕臨投降的西塞羅手中。凱撒非常喜歡使用密文,後世的《凱撒傳》詳細地記錄了凱撒使用的一種密文。而這種加密方法,甚至沿用到今天。

凱撒密碼的表示方法是:將每個字母,用字母表中這個字母之後三位的那個字母替代。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推。也就是字母A用字母D替代,字母B用字母E替代。比如Abroad,凱撒在用密文寫信的時候,就被替換為Deurdg。這樣就得到了敵人看不懂的密文。

假如有這樣一條指令:

RETURN TO ROME

用愷撒密碼加密後就成為:

UHWXUQ WR URPH

如果這份指令被敵方截獲,也將不會洩密,因為字面上看不出任何意義。

現在看來這種加密方式可能稍顯幼稚,但作為歷史上文字記載的最早使用加密密鑰的案例:由發件人和收件人共享加密密鑰,標誌了現代密碼學的發端。可以說,從凱撒密碼,到20世紀公共密鑰被髮明之前的這幾千年時間裡,密碼學的原理都是一樣的。比特幣和區塊鏈的加密方式,跟凱撒密碼的原理區別,也就是多了公鑰而已。直到今天,我們在看很多諜戰片的時候,會發現不少特工和間諜還是採取這種方式傳輸情報。

這裡有幾個術語,需要特別指出。密碼學家通常講用來書寫原始信息的字母表,也就是正常的字母表,稱為明碼錶;而用來替換明碼字母的稱為密碼錶。這也是密碼這個詞的來歷。那麼往後移動三位,這個“三”則被稱為密鑰。當然,學過數學的人都明白,這裡有26個字母,僅僅按照順序移動,每個字母就有25個不同的替代方式,即25種密鑰,要是把字母順序打亂,密鑰就更多了。算法則是通過各種嘗試,破譯密碼的過程。

可以想象,在公元前100年左右,也就是相當於中國的西漢時期,要想破譯凱撒的密碼,那可能性幾乎為零。在密碼學中,愷撒密碼是一種最簡單且最廣為人知的加密技術。愷撒密碼還在現代的ROT13系統中被應用。但是和所有的利用字母表進行替換的加密技術一樣,愷撒密碼非常容易被破解,而且在實際應用中也無法保證通信安全。

【多表代換】 最早的古典密碼體制主要包含單表代換密碼體制和多表代換密碼體制。作為古典密碼中的兩種重要體制,一直在古代歷史上的全球各個區域廣泛地被使用。凱撒密碼就是一種典型的單表代換密碼。

單表代換密碼在長達一千年的時間裡,被認為是無法破解的,因為存在著數量龐大的密鑰,依靠手工是根本計算不過來的。但是隨著社會的發展和技術的進步,來自東方的阿拉伯人,找到了更新的技術,從而發現了一條捷徑來破獲這個被認為是無解的密碼,這次勝利是由阿拉伯世界的語言學家、統計學家和宗教學家三者共同完成的。

這還要間接感謝中國的造紙術的發明,伊斯蘭文明得以快速傳播。因為書籍需求量大增,那麼就需要有人來校對,最能勝任這個工作的自然是神學家。他們在校對的同時,還在統計默罕默德啟示錄的用詞頻率,如果這個啟示錄出現了新詞,那麼它出現的年份肯定就更往後等等。在梳理的過程中,他們也順道發現了一些字母出現的頻率就是比其他的字母要高得多。

學習過英語的我們知道,字母e是最常見的,其次是字母t和a。如果按照凱撒密碼加密,一個密碼字母對應明碼字母,那麼密碼字母中出現次數最多的很有可能就應該對應明碼字母E,以此類推,很容易就可以排除掉大量的密鑰,從而快速地找到正確的破譯方法。現在無法考證究竟是誰把字母出現的頻率和破譯密碼聯繫在了一起,但是可以肯定的是,公元九世紀的時候,阿拉伯人就已經非常擅長破譯凱撒密碼了。

阿拉伯人從公元7世紀到公元12世紀期間,建立了輝煌燦爛的文明,相比較而言,歐洲當時還是愚昧落後貧窮的地方。伊斯蘭文明的繁盛,不僅帶來了藝術、科學等文化的繁榮,社會的統治和管理也是非常有條理和高效的。當時的管理者,不僅在政府的關鍵事務上進行加密,而且記錄稅收的時候也採用了密碼術,他們在《大臣手冊》等管理文獻裡還在探討與密碼術有關的技術性問題。正是因為有了巨大的需求,再加上科學技術的進步,阿拉伯人終於有機會破譯替換密碼這道千年難題。

單表代換的破譯十分簡單,因為在單表代換下,除了字母名稱改變以外,字母的頻度、重複字母模式、字母結合方式等統計特性均未發生改變,依靠這些不變的統計特性就能破譯單表代換。相對單表代換來說,多表代換密碼的破譯要難得多。

多表代換大約是在1467年左右由佛羅倫薩的建築師Alberti發明的。多表代換密碼又分為非週期多表代換密碼和週期多表代換密碼。在一個多表替換密碼中,會使用多個字母作為密碼。為了加快加密或解密速度,所有的字母通常寫在一張表格上,密碼學上稱作tableau。這種表格通常是26×26,因為這樣才能放下全部26個英文字母。填充表格及選擇下次使用的字母的方法,就是不同多字母替換密碼之間的定義。多字母替換密碼比單字母更難打破,因為其替換可能性多,密文要較長才可。

其中最著名的一種為貝拉索於1585年推出的維吉尼亞密碼。它於1863年之前一直未被破解。法國人稱它作“不能破譯的密碼”(法語:le chiffre indéchiffrable)。此密碼曾被誤以為由布萊斯·德·維吉尼亞所創,所以才叫作維吉尼亞密碼。

維吉尼亞密碼中,表格的第一行只需直接填上26個字母,然後以下每一行的字母都是向左偏移一格。(這叫作表格橫移,數學上每一列同餘26。)要用這種密碼需要使用一個關鍵字來作為密鑰。關鍵字每次用完就再次重複。假設關鍵字是“CAT”,明文的第一個字由“C”加密,第二個字由“A”加密,第三個則由“T”加密,然後再回到C加密,一直重複。然後按照右邊的密碼錶加密,例如BALL用CAT作關鍵字時會加密至DAEN,可見即使是同一個“L”亦會加密至另一個字母。現實中,維吉尼亞密碼的關鍵字非常長。

非週期多表代換密碼,對每個明文字母都採用不同的代換表(或密鑰),稱作一次一密密碼,只要加密表夠長,這是一種在理論上唯一不可破的密碼。這種密碼可以完全隱蔽明文的特點,但由於需要的密鑰量和明文消息長度相同而難於廣泛使用。

為了減少密鑰量,在實際應用當中多采用週期多表代換密碼。在16世紀,有各種各樣的多表自動密鑰密碼被使用,最矚目的當屬法國人B.de Vigtnère的Vigenère密碼體制。有名的多表代換密碼有Vigenère、Beaufort、Running-Key、Vernam和轉輪機(rotor machine)。對於單表代換和多表代換密碼來說,唯密文分析是可行的。單表代換和多表代換密碼都是以單個字母作為代換對象的,而每次對多個字母進行代換就是多字母代換密碼。大約1854年L.Playfair在英國推廣Playfair密碼,它是由英國科學家C.Wheatstone發明的。這是第一種多字母代換密碼,在第一次世界大戰中英國人就採用這種密碼。多字母代換的優點是容易將字母的自然頻度隱蔽或均勻化而有利於抵抗統計分析。這種密碼主要有Playfair密碼、Hill密碼等。

到二十世紀二十年代,人們發明了各種機械加密設備用來自動處理加密。大多數是基於轉輪的概念。1918年美國人E.H.Hebern造出了第一臺轉輪機,它是基於一臺用有線連接改造的早期打字機來產生單字母表替代的,輸出是通過原始的亮燈式指示。最著名的轉輪裝置是Enigma,它是由德國人Scherbius發明並製造的。它在第二次世界大戰中由德國人使用。不過在第二次世界大戰期間,它就被破譯了。

【近代密碼學】 近代密碼學研究信息從發端到收端的安全傳輸和安全存儲,是研究“知己知彼”的一門科學。其核心是密碼編碼學和密碼分析學。前者致力於建立難以被敵方或對手攻破的安全密碼體制,即“知己”;後者則力圖破譯敵方或對手已有的密碼體制,即“知彼”。人類有記載的通信密碼始於公元前400年。古希臘人是置換密碼的發明者。1881年世界上的第一個電話保密專利出現。電報、無線電的發明使密碼學成為通信領域中不可迴避的研究課題。

在第二次世界大戰初期,德國軍方啟用“恩尼格瑪”密碼機,盟軍對德軍加密的信息有好幾年一籌莫展,“恩尼格瑪”密碼機似乎是不可破的。但是經過盟軍密碼分析學家的不懈努力,“恩尼格瑪”密碼機被攻破,盟軍掌握了德軍的許多機密,而德國軍方卻對此一無所知。

太平洋戰爭中,美軍破譯了日本海軍的密碼機,讀懂了日本艦隊司令官山本五十六發給各指揮官的命令,在中途島徹底擊潰了日本海軍,導致了太平洋戰爭的決定性轉折,而且不久還擊斃了山本五十六。相反軸心國中,只有德國是在第二次世界大戰的初期在密碼破譯方面取得過輝煌的戰績。因此,我們可以說,密碼學在戰爭中起著非常重要的作用。

編碼密碼學主要致力於信息加密、信息認證、數字簽名和密鑰管理方面的研究。信息加密的目的在於將可讀信息轉變為無法識別的內容,使得截獲這些信息的人無法閱讀,同時信息的接收人能夠驗證接收到的信息是否被敵方篡改或替換過;數字簽名就是信息的接收人能夠確定接收到的信息是否確實是由所希望的發信人發出的;密鑰管理是信息加密中最難的部分,因為信息加密的安全性在於密鑰。歷史上,各國軍事情報機構在獵取別國的密鑰管理方法上要比破譯加密算法成功得多。

密碼分析學與編碼學的方法不同,它不依賴數學邏輯的不變真理,必須憑經驗,依賴客觀世界覺察得到的事實。因而,密碼分析更需要發揮人們的聰明才智,更具有挑戰性。

現代密碼學是一門迅速發展的應用科學。隨著因特網的迅速普及,人們依靠它傳送大量的信息,但是這些信息在網絡上的傳輸都是公開的。因此,對於關係到個人利益的信息必須經過加密之後才可以在網上傳送,這將離不開現代密碼技術。

1976年Diffie和Hellman在《密碼新方向》中提出了著名的D-H密鑰交換協議,標誌著公鑰密碼體制的出現。 Diffie和Hellman第一次提出了不基於秘密信道的密鑰 分發,這就是D-H協議的重大意義所在。

PKI(Public Key Infrastructure)是一個用公鑰概念與技術來實施和提供安全服務的具有普適性的安全基礎設施。PKI公鑰基礎設施的主要任務是在開放環境中為開放性業務提供數字簽名服務。

二十世紀六七十年代以來計算機和通信系統的普及,帶動了個人對數字信息保護及各種安全服務的需求。IBM的Feistel在七十年代初期開始其工作,到1977年達到頂點:其研究成果被採納成為加密非分類信息的美國聯邦信息處理標準,即數據加密標準DES,歷史上最著名的密碼體制。

1977年,美國國家標準局公佈實施了“美國數據加密標(DES)”,軍事部門壟斷密碼的局面被打破,民間力量開始全面介入密碼學的研究和應用中。民用的加密產品在市場上已有大量出售,採用的加密算法有DES、IDEA、RSA等。

DES至今依然是世界範圍內許多金融機構進行安全電子商務的標準手段,是迄今為止世界上最為廣泛使用和流行的一種分組密碼算法。然而,隨著計算機硬件的發展及計算能力的提高,DES已經顯得不再安全。1997年7月22日電子邊境基金學會(EFF)使用一臺25萬美金的電腦在56小時內破譯了56位DES。1998年12月美國決定不再使用DES。美國國家標準技術研究所(NIST)現在已經啟用了新的加密標準AES,它選用的算法是比利時的研究成果“Rijndael”。以上這兩個階段所使用的密碼體制都稱為是對稱密碼體制,因為這些體制中,加秘密鑰和解秘密鑰都是相同的,而進入密碼學發展的第三個階段,則出現了非對稱密碼體制——公鑰密碼體制。

現有的密碼體制千千萬萬,各不相同。但是它們都可以分為私鑰密碼體制(如DES密碼)和公鑰密碼(如公開密鑰密碼)。前者的加密過程和脫密過程相同,而且所用的密鑰也相同;後者,每個用戶都有公開秘密鑰。

【多鏈與非對稱加密】 對稱加密指的就是加密和解密使用同一個秘鑰,所以叫做對稱加密。對稱加密只有一個秘鑰,作為私鑰。 常見的對稱加密算法:DES,AES,3DES等等。

非對稱加密指的是:加密和解密使用不同的秘鑰,一把作為公開的公鑰,另一把作為私鑰。公鑰加密的信息,只有私鑰才能解密。私鑰加密的信息,只有公鑰才能解密。 常見的非對稱加密算法:RSA,ECC。

非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。 非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密後的信息進行解密。

另一方面,甲方可以使用乙方的公鑰對機密信息進行簽名後再發送給乙方;乙方再用自己的私匙對數據進行驗籤。

甲方只能用其專用密鑰解密由其公用密鑰加密後的任何信息。 非對稱加密算法的保密性比較好,它消除了最終用戶交換密鑰的需要。

非對稱密碼體制的特點:算法強度複雜、安全性依賴於算法與密鑰但是由於其算法複雜,而使得加密解密速度沒有對稱加密解密的速度快。對稱密碼體制中只有一種密鑰,並且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了。這樣安全性就大了很多。

在EKT中,我們就使用了公私鑰結合的非對稱加密和路由策略的機制實現拜占庭容錯。我們EKT的多鏈,採用“多鏈分而治之”的新方案重新設計了一個保障每個合約都能正常運行的公鏈,其中就使用到了非對稱加密對用戶的信息進行保存,同時主鏈和子鏈信息共享但是功能隔離。這一創新極大程度上簡化了架構,降低了數據處理壓力,確保一條鏈上流量激增不會影響到另一條鏈的效率,在鏈上進行的任何業務都不會收到其他業務干擾,有效實現了資源隔離。

在EKT中Token鏈是一個並行多鏈的結構,多鏈多共識,共享用戶基礎。EKT的Token是鏈上的一個屬性,就像使用了utxo模型的鏈utxo有其他Token一樣,我們的轉賬事件也是內置的。 其實EKT解決的一個核心問題是,目前Dapp的開發難度的問題如果使用以太坊的Solidity開發,需要學習以太坊的一整套邏輯,在複雜應用開發的時候需要考慮各種優化方案,同一個功能使用傳統C/S結構一天寫完的,用以太坊可能要寫幾周時間,對開發者來說很不友好。 例如針對C/S模型,要寫一個非對稱加密服務需要: 1. 設計一個服務端,可以計算出一對秘鑰pub/pri。將私鑰保密將公鑰公開。 2. 設計一個客戶端請求服務端時,拿到服務端的公鑰pub。 3. 客戶端通過AES計算出對稱加密的秘鑰X。 然後使用pub將X進行加密。 4. 客戶端將加密後的密文發送給服務端。服務端通過pri解密獲得X。 5. 最後還要設計兩邊通訊機制,通過對稱密鑰X以對稱加密算法來加解密。 這一套流程若要Dapp/公鏈開發者寫出來,勢必在真正開發區塊鏈功能之前就已經被這些繁瑣但其實通用的步驟耗費過多精力和資源。 EKT的中心思想就是設計一個社區的機制,讓開發者可以輕易的開發一個可以承載DAPP的主鏈,其他的交給EKT來處理, EKT 的“一鏈一主幣,多鏈多共識”的機制為後來的區塊鏈項目開發提供了很大的便利,可以使用於任何區塊鏈適用的應用場景。 我們提供了一套底層的區塊鏈機制,其他的區塊鏈項目可以很容易的基於 EKT 的主鏈代碼部署一套自己的主鏈。在EKT上編寫的區塊鏈項目將無需過於擔心安全性問題,因為每一個接口都是非常簡單並且在許多條並行主鏈上部署和運行的。部署主鏈時可以靈活的發行自己主鏈的代幣以及選擇共識算法。新部署的主鏈也可以加入到 EKT 通用積分的整個生態,共享 EKT 生態的用戶資源,代幣也可以和EKT 主幣以及其他主鏈的代幣進行交換和流通。 在EKT主鏈上,每個DPoS節點的公鑰都是公開的。這是一種兼顧效率、安全和去中心化的解決方案。Token現在一般被定義成一個智能合約,但如果把它變成一個預先定義好事件的“對象”,這個“對象”可以有自己的參數(比如總量、共識機制等等),則會帶來更好的安全體驗。接受token的地址可以有兩種:普通的用戶地址和合約地址,合約地址收到token之後可以執行非圖靈完備的合約語言,進行簡單的狀態計算和token轉移。 以上就是我對區塊鏈密碼學的一些思考,和一些在設計EKT的多鏈多共識時對建設非對稱加密底層的考慮。歡迎大家提出疑問,共同探討。

參考閱讀: 20140314 密碼學的發展簡史

20161225 加密算法之:對稱加密與非對稱加密掃盲貼

20170119 區塊鏈 - 比特幣的共識機制

20170907 從藝術到科學—密碼學的發展歷程

20180414詳解“多鏈多共識”機制

20180202 區塊鏈和比特幣 不過是密碼學歷史上的一次小高潮?

20180622 EKT對話Bit-Z,精彩直播訪談回顧

《History of cryptography》

《BTC whitepaper》

《Ethereum whitepaper》

《EKT whitepaper》


分享到:


相關文章: