國際密碼學界知名專家王小云在深圳區塊鏈技術與應用論壇表示,中國亟需搶先制訂物聯網、車聯網、區塊鏈、國產操作系統等密碼協議標準與技術規範。

原文標題:《「中國諾貝爾獎」首位女得主王小云:哈希函數是區塊鏈的起源性技術,區塊鏈已擴展到供應鏈金融等多領域》
作者:火星財經

12 月 7 日,由中國科學院學部主辦、中國信息通信研究院等單位聯合支持的「區塊鏈技術與應用」科學與技術前沿論壇在深圳開幕。中國科學院信息技術科學部鄭志明院士、數學物理學部王小云院士等四位院士發表主題演講,同時還有 300 餘名來自政府和企業界的代表出席會議,圍繞區塊鏈與數字身份、監管科技、金融應用等話題展開討論。

密碼學家王小云:中國亟需搶先制訂區塊鏈等領域密碼協議標準規範

論壇現場,王小云院士從密碼技術的角度介紹了區塊鏈技術,闡述了密碼學的重要性以及密碼學的發展現狀。她表示,密碼是保障網絡與信息安全的核心技術和基礎支撐,區塊鏈技術並不神祕,哈希函數、數字簽名算法、加密算法是密碼學三類基礎算法,其中哈希函數是起源性技術。

她進一步解釋稱,哈希函數可以抵抗基於數據篡改的所有攻擊,比如原像攻擊、第二原像攻擊等,可用於多類信息系統,數字證書、網上銀行、電子支付、網絡安全協議、數字貨幣、比特幣、區塊鏈、可證明安全密碼等,「blockchain」其實是從哈希函數中提取的一個專業概念。

王小云現任清華大學高等研究院楊振寧講座教授,2017 年當選中國科學院院士,2019 年當選國際密碼協會會士 (IACR Fellow),同年獲得未來科學大獎,該獎項被譽爲「中國諾貝爾獎」,王小云爲首位獲獎的女科學家。

公開報道顯示,MD5 和 SHA-1 曾是最先進的國際通用密碼,被專家認爲需要運算 100 萬年纔有可能破解。2004 年和 2005 年,這兩大「固若金湯」的算法被王小云先後破解,在國際密碼學界引發強烈「地震」。

以下爲演講全文:

密碼技術爲什麼重要?

尊敬的王市長、各位來賓,我今天的報告是從密碼技術的角度來介紹一下區塊鏈技術,這個報告我最近作了很多次,可能有一點點變化,但我還是想從底層技術層面介紹一下區塊鏈的密碼含義是在哪裏。

首先我介紹一下密碼學的重要性,對區塊鏈技術發表一點個人感想,區塊鏈技術出來以後,從我們個人的觀望到投資者的熱情,到今天我們考慮它的技術創新,推動我們產業發展,我想這個過程有幾年的時間。最近密碼法已經出臺了,密碼是保障網絡與信息安全的核心技術和基礎支撐,所有的關鍵問題都是數學問題,這是毫無疑問的。密碼領域比較特別,我對密碼領域的理解就是基礎數學、應用數學和技術應用是三個合併一體的,分不開的。

我們每一個技術的突破用了大量的基礎數據的研究方法和工具,我們突破了以後,基本上行業遍地都用。計算機通信系統,互聯網系統的主體系統的安全性都是用密碼系統保證的,所以密碼技術是通信系統和基礎設施融合在一起的,是分不開的技術。

美國的微軟和 IBM 在 80 年代初期,它的密碼團隊是非常傑出的融合發展模式,我們國家我非常高興,今天我們也到了融合發展的階段。

今天我們所有的網絡,包含計算機、手機、衛星、物聯網,特別是物聯網,應該是一個國家能夠發展好新一代信息技術非常重要的環節,也使密碼技術提到更高的環節。另外還有大數據,雲計算等,現在我們的數據都上雲了,但安全是怎樣的,我想大家都比較清楚。

密碼技術爲什麼這麼重要?就是因爲整個互聯網和各種網絡,我們的信息從產生到處理到傳輸,需要四個安全屬性:機密性,就是加密算法,這個很簡單。

可認證性和不可抵賴性,這是數字簽名算法;完整性,就是防數據篡改的 Hash 函數,Hash 函數是區塊鏈的起源性技術,也是密碼學的基本工具。爲什麼說是一個基本工具?我舉個例子,我們的電子簽名對一個數據庫進行簽名,花 100 個小時簽名才結束,它一個是慢,100 個小時,還不安全。大家就問:我們的數字簽名有什麼用呢?這麼慢、又不安全,怎麼辦呢?Hash 函數,Hash 函數對一個文件提煉出指紋就行了,它就可以把一百個小時變成一個小時,大家知道一百倍的提速,並且還是安全的,這就是區塊鏈技術,大家不要把區塊鏈技術想象得非常神祕。

Hash 函數的電子簽名技術就是標準的區塊鏈技術,它是高效而安全的。

密碼學的兩大發展方向

密碼學的發展有兩大方向:第一個方向就是 ENIGMA。1932 年是數學方法,1939 年是破譯機,破譯機的出現導致二戰西歐戰場提前兩到三年結束,1949 年香農(Shannon)提出是數碼學的圖像。

一個密碼系統把密鑰破解了就完全破解了,求解密鑰的難度,就是一個攻擊者攻擊這些明文密文,它沒有任何的數學關係不要緊,對破解密鑰沒有任何影響。傳統密碼裏面,如 ENIGMA 密碼,算法公開了,就意味着這個算法破解了。最早的密碼破解就是情報人員拿到了圖紙。

到了 1973 年 1976 年,美國國家安全局形成了較爲系統的對稱密碼理論體系,宣佈算法公開。對稱加密 AES,DES 算法涉及 56 次計算(即祕鑰長度爲 56 位,下同)。

比特幣 10 分鐘出一個塊,獎勵 12.5 個比特幣,涉及 270 次計算,遠比單次破解的難度難。

對數學發展的研究最終發展到了密碼分析的自動化,再進一步就是人工智能的介入,所以這個領域,所有的密碼分析都可以轉化爲商用密碼的特徵。

還有一個領域是公鑰密碼學的發展,我們的計算機網絡是一到多的,互聯網時代一天一萬個人進行安全通信,密鑰通信,全是情報人員分佈密鑰。現在要對一萬個人進行安全通信,一萬個人的密鑰是要生成的,現在密碼學一秒鐘可以同時跟很多人建立安全頻道,跟每個人都可以修出一個安全的密鑰通道,攻擊者可以加入安全通信,但它拿不到我們的密鑰,我給對方可以生成共同的加密密鑰,這就是一到多的安全通信。

網絡安全通信涉及對數問題,計算速率,算法速率,代數幾何,關係到到很多領域的數學難題。我們在分析算法安全性的時候,我們就要跟其它的數學領域結合,所以密碼學是一個多學科交叉的領域,研究的一個是數學難題,尤其是交叉的是多個領域,不僅是在這個領域,在更多的領域。

SM3 是我們國家的標準加密算法,也是 RS 的標準。密碼算法設計了以後,保證每個算法是安全可以做到,但不可以用單一的算法保證一個系統——所有的計算機網絡通信系統要涵蓋多算法,要實現四大功能,大多數都有四個安全屬性,也就是需要三種密碼算法。

我們要建立一個傳輸層的安全通信協議,就是 SSL、TLS 協議,TLS 是 SSL 的升級版,它是達到安全可控的。出現信息泄露事件,大家一定不要認爲是 SSL 出問題了,這個協議是非常安全的,原因在於,在實現過程中出現了問題。算法安全、協議安全、實現安全是保證整個系統是安全運營的,「實現不安全」永遠是會導致非常可怕的攻擊。

整個密碼領域,從算法的研究到協議的設計,到協議的運營是需要培養高水平的科技人才。網絡層是保證路由器安全的 IPsec 協議,無線局域網是 WEP 協議,它是行業標準,不是密碼學設計的,它出來以後很快被破解了,圖靈獎獲得者被破解了,現在的安全協議是安全的。手機通信是行業標準,是二級,不管是算法還是協議,很多漏洞,是各種攻擊方法都出現了,用了相當於沒用,看起來什麼都有,但都是不安全的。所以說到了 3GPP (3rd,Generation Partnership Project),就是支持 3G、4G、5G 安全通信,不管是 3G、4G、5G,只有公開拿出來讓大家研究的纔是安全的,藏着的,到目前爲止,事實證明沒有一個是安全的。所以大家一定要注意,如果你認爲你的協議是安全的,你不妨拿出來讓大家公開分析,有漏洞不要緊,因爲現在密碼設計的能力非常強,很短的時間就可以把漏洞補上,逐漸變成安全,所以怕的就是大家說安全,又不公開,那問題比較嚴重,如果內部的人知道,內部的人可以做一定的攻擊。

國家層面急需制定密碼協議標準與規範

目前我們國家急需搶先制訂物聯網、車聯網、區塊鏈、國產操作系統等密碼協議標準與技術規範,這些領域實事求是地講,我們跟任何一個國家是站在同一個起跑線上,我不認爲其它國家比我們國家更先進,但是如果誰搶先,在這些領域制定出密碼算法的標準與協議,就是協議的標準,肯定相對來講還是比較領先的。

在密碼領域,算法協議設計出來以後,要兼顧軟件實現和硬件實現。硬件實現就是芯片實現。做好抗攻擊的芯片實現,這個領域說實話比較難,我們國家這方面的優秀人才不多。

爲什麼要抗特性的攻擊?所有的密碼算法和協議都基於數學難題,假定我們的軟件實現有一個 bug,數學難題是非常容易破解的數學問題,如果我們注入了一個錯誤,數學難題變成簡單的數學問題,它需要抗特性的攻擊密碼芯片。十幾年前我有一個觀點,說有的密碼芯片是最高級的,因爲其它的芯片不需要研究抗特性攻擊的能力,但是密碼芯片不行,因爲它就是要依靠各種各樣的攻擊,包含物理手段的攻擊。

我再來說一下軟件實現,軟件實現就是白盒安全實現,現在一個領域發展起來了,它不可能做到理論安全,只能做到實踐安全,比如別人研究的白盒實現三個月破了,我們做的五年破不了,五年以後升級就可以了,是這麼一個概念,我們要達到實際安全。

密碼芯片一定要抗各種各樣的攻擊,這裏不多說了。

區塊鏈與密碼學

我想講一下密碼 Hash 函數,就是區塊鏈的起源性技術。1953 年,IBM 的一次歷史性討論,對數據庫的文件進行檢索,每個文件帶一個電子指紋,相當於人的指紋一樣,搜索的時候搜索指紋就把文件搜索起來了,非常簡單。1981 年,爲避免電子簽名標準 RSA 等存在的僞造攻擊,由 Davis 和 Price 提出密碼 Hash 函數的概念,就是防止數據篡改,你的數據被篡改了,你的電子指紋一定要發生變化,就發現被篡改了,保證電子簽名是安全的。我們對於一份文件進行簽名,需要對它的指紋進行簽名就行了。我們的指紋是多長呢?128、160、192、256、384 或 512 比特。這是非常高效的,採用這種方式,對一個數據庫簽名一百小時,現在一個小時就簽完了,還安全,何樂而不爲。如果我們這個技術放在交易後臺的管理,這麼高效安全的技術,何樂而不爲呢,所以是值得推廣的一個技術。

大家知道,區塊鏈主要是實現防數據篡改的功能,目前防數據篡改只有兩三種方法,沒有任何其它的數據篡改的技術,只有三種技術:第一種技術就是攻擊者同時得到一個合同,100 萬或 2000 萬的合同電子指紋是一樣的,它的簽名一定是一樣的。而 100 萬和 2000 萬哪個是真的哪個是假的,你不知道,我說的是這種攻擊。256 比特的電子指紋,全球計算資源上千萬億年不可能找到兩個文件電子指紋是相同的,這個大家不要擔心。

第二種攻擊是比特幣,大家一定要注意,你在學比特幣,你看這張片子就行了,其它的都不要看,比特幣就來了,只要會原像攻擊就會比特幣了。原像攻擊是怎樣的呢,給出一個電子指紋外,你找到一個原像 M,M 的電子指紋就是 p、y,口令就行了,如果我的計算機存放的是 Y,也就是動態的,我的電子指紋 Y,口令猜出來的概率是多少呢?假如這個口令是 256 比特電子指紋,上千萬年是不可能成功實施原像攻擊的。但是這個 y 如果只規定 70 比特,對一個 70 比特的 Y,我找一個 M,只有 r 的 70 次計算,這是比特幣,也就是說我找一個 Y,對應着 70 個比特的 0,或者 1 都無所謂,Y 是 70 比特,y 的 70 次計算,全球是十分鐘就可以找到這個原像,我相信不可能所有人都在找比特幣,只有少數的在找比特幣,十分鐘就可以找到這個 M,這個 M 就是比特幣,比特幣就產生了。

第二原像攻擊,攻擊者找到假的消息 M2 替換合法消息 M1,但是替換的前提條件不是電子指紋,因爲現在都是數據庫,在替換的情況下,必須要跟電子指紋相同才能合法應用,所以不是想替換就能替換,這時候也是破不了的。

Hash 函數我跟大家說,我們的密碼算法如何能夠證明有數學難題,必須有可證明安全的技術,就是知識證明,我用知識證明證明這個密碼算法是安全的,在證明的過程中完成了加密和簽名功能,需要交互 128 次 256 次,按照今天的安全長度,最後大家都不幹了,那怎麼辦,很不有效。用 Hash 函數,使用了 Hash 函數以後就比較好了,一次性就可以完成證明,所以這是 Hash 函數的概念,知識證明。

既然我們有高效的證明方法,有的密碼系統都要按照可證明安全,必須是用 Hash 函數,所有的密碼技術都是區塊鏈技術,因爲必須是交互一百多次才能共,使用了 Hash 函數一次兩次三次四次五次,一般不超過五六次就完成了。所以我們所有的密碼系統都是區塊鏈技術,當時區塊鏈放在哪裏呢?是 Hash 函數的一個變量叫 Blockchain,後來就是我們現在的 Blockchain,最早是 Hash 函數迭代過程中的一個專業術語,它的從 Hash 函數提出來就有的概念,大家記住這是一個老概念。

現在我們好多密碼都離不開 Hash 函數。這就是 Hash 函數,我在 1995 年到 1996 年開始做 Hash 函數,大家可以看出來,1995 年之前主要的 Hash 函數算法除了 160 沒有被破解以外,那五個都是我們首次給出碰撞攻擊,破解以後,當時 SHA 是 2005 年提出來的,它是後補的,它只有 60 個比特的指紋,SHA 補了 265、384、512 比特的指紋,SHA 就是破解以後新設立的標準。

MD5 破解以後,發生了一個事件,僞造了一個數字證書,通過了瀏覽器的認證,這是 2009 年十大黑客技術之一,攻擊架構是我提出來的,毫無疑問,整個攻擊架構是我提供的。2010 年這個技術就到了一個火焰病毒,火焰病毒是目前爲止認爲最爲複雜的一個網絡病毒。

這是新一代的 Hash 函數 ISO、IEC 標準。美國設計的的 SHA-2,SHA-3,我們國家的 SM3,目前我們國家的區塊鏈技術就是 SM3 了,國產化的區塊鏈已經使用了 SHA-3,因爲這是唯一的標準,還沒有其它的標準產生。

區塊鏈技術起源

最後說一下區塊鏈技術起源,大家知道,Hash 函數是任意的長度壓縮成一個定長,我們沒有想要的數學函數滿足要求,所以密碼學家 Ralph Merkle 在博士論文中首次描述 Merkle-Damgard 結構,第一次壓縮 M1、M2,把所有的數據分塊壓縮,這是比特幣的結構,也是區塊鏈的早期數據結構。

中本聰提出的比特幣,找一個原像就是比特幣,很容易。這就是比特幣的區塊鏈結構,這就是區塊鏈結構,橫着的就是這兩條,只是 M 的長度有所變化,因爲壓縮的過程是自由組合的,可長可短,M 一定長,把好多 M 組合在一起,就是比較大的 M,所以可以靈活搭配,橫的就是那個鏈,這裏面就是 Hash 函數的壓縮過程,這裏面就是真正的 Hash 函數,F 就是 MD5,正向的運算過程。這就是區塊鏈的數據結構。

比特幣的系統運行就是交易,交易結構是怎樣的,挖出 12.5 個比特幣就是一個交易,求出一個原像就是一個交易,我拿比特幣買了一件衣服是一個交易,我拿比特幣買了一些食品是一個交易,我有這個交易以後要全球廣播,廣播以後要在平臺上廣播,廣播完了以後,大家同步把我的交易信息放在 M 裏面。大家一定要注意,這是交易信息進行壓縮,最後一步纔是我搜的,M2 一塊搜,前面都是全球一定時間內的交易信息,把交易信息都放在這裏面,有了交易新的再放進來,再搜出一個電子指紋,等於 70 個 0,這等於新的比特幣就產生了,所以方法非常簡潔。最後驗證,研發合法性以後再進行挖礦,基本上這個過程。這個「?」就是比特幣。

分佈式系統得到了很好的利用,我們要進行共識協議,所有的數據達成一致,使用分佈式環境下用戶的數據達成一致,上世紀 80 年代有一個拜占庭共識協議,是分佈式計算研究領域的重要方向,爲什麼區塊鏈能解決這個技術,所有的密碼算法,只有 Hash 函數有三個屬性,其它的算法屬性很少,並且想來就來,想走就走,非常靈活,所以爲什麼去中心化,它沒有密鑰,但有了密鑰就可以去中心化。

它的一致性即所有的記錄是一樣的,就是分佈式系統,我們的區塊鏈增長速度要穩定,大家知道一個鏈,一個幣同時三個人挖出來和六個人挖出來誰是合法的呢?你挖完以後再挖第二個鏈第三個鏈,誰先挖到第六個鏈誰是合法的,所以必須是先挖六個鏈。區塊鏈要抵抗各種攻擊,我們 2018 年有兩篇區塊鏈的論文,山東大學有一篇,就是在一個小時十分鐘的延遲後,挖一個比特幣的延遲是安全的,目前有三類區塊鏈,一個是逆向的,正向的就是壓縮的過程,一秒鐘可以 10G,誰的權重大,它就是建鏈的概率高。第二就是分佈式系統的拜佔廷協議,數字簽名本身就是區塊鏈技術。

目前我們國家有一個供應鏈金融,有一個供應商,有一個採購商,採購商要採購一批貨物,要支付 200 萬,但它沒錢,從銀行貸款,傳統的就是銀行要檢測供應商的供應能力和信用能力,然後要檢查採購方的支付能力,可能半年才能放貸。但是區塊鏈鏈上一檢查,大家知道,我們任何一個信息上千萬年以上才能篡改,篡改不了。所以在鏈上一檢查就可以放貸了,非常高效。

這是疫苗,打了疫苗以後出問題,你可以看零售商、中間商、原材料商、生產商,每個環節都很清楚,非常便捷。

我的報告結束了,謝謝大家!