區塊鏈怎麼保證資金安全?密碼學告訴你

買賣虛擬貨幣

我們從專業的技術知識角度來理解區塊鏈的定義,應當是:區塊鏈是一種按照時間順序將資料進行分散式儲存的塊鏈式資料結構,它利用共識機制進行資料驗證,利用密碼學進行資料保護和使用者安全訪問,利用智慧合約來運算元據,從而成為不可篡改和不可偽造的分散式賬本。所以,分散式儲存、共識機制、密碼學原理和智慧合約構成區塊鏈的核心技術內容。

提到密碼學,我們並不感到陌生,比如許多戰爭電影中,很多人戴著耳機圍繞著機器根據“嘀嘀嘀”的聲音截獲密文,再進行解密獲得軍事情報,這就是密碼學的早期應用。在 1970 年之前,密碼學還基本是由國家權力機構壟斷,而後隨著技術不斷進步,才漸漸進入公眾領域。

目前密碼學作為區塊鏈的核心內容之一,在區塊鏈網路的安全交易、隱私保護還有安全訪問中起到不可忽視的作用,是支撐區塊鏈不可缺少的核心技術。所以今天,我們就用通俗易懂的語言跟大家介紹一下“區塊鏈中的密碼學”。

區塊鏈密碼學發展史

首先,要從它的發展史說起,這就不得不提到凱撒大帝(Caesar)—— 第一個把“替換密碼”用於軍事用途、並且記錄下來的人。他用替換字母的方法創造了最早的“密文”:將每個字母,用字母表中這個字母之後三位的字母替代。這是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。

在這個過程中,人人都認識的文字是“明文”,加密的規則是“金鑰”,透過金鑰,原本大家都認識的明文就變成了看不懂的“密文”。這種加密方法用我們現在的眼光看會稍顯幼稚,但在當時,用這種方法形成的“密文”非常難以被破譯,而這種用明文加密的思路也被沿用了上千年。

隨著科學進步,這種代換方法慢慢被人找到了破解方法,比如:學習過英語的我們知道,e是最常見的字母,其次是字母t和a,如果按照凱撒密碼加密,一個密碼字母對應明碼字母,那麼密碼字母中出現次數最多的很有可能就應該對應明碼字母E,以此類推,很容易就可以排除掉大量的金鑰,從而快速地找到正確的破譯方法。

於是在1467年左右,佛羅倫薩的建築師 Alberti 發明了多表代換密碼,也就是在一個多表替換密碼的密文中,會使用多個字母作為密碼。多字母替換密碼比單字母更難破解,因為其替換可能性多。以此為開端,衍生出了非常多設計精良的多表代換密碼。而直到二十世紀二十年代,人們才終於可以開始使用各種機械加密裝置進行自動加密處理。

計算機的誕生幫助密碼學躍升至新高度。1984 年 10 月夏農(資訊理論之父)的資訊理論出現,標誌著現代密碼學的形成,這時出現了極具代表性的“對稱加密演算法”,即:當傳遞資訊時,資訊先要透過金鑰進行加密,加密後的明文以二進位制的方式轉播,再透過相同的金鑰解密獲得資訊。

值得一提的是:

“對稱加密”,金鑰只有一把,如果你想讓一個人看到你用金鑰加密的資訊,就必須把金鑰傳遞給對方,對方才能進行解密。但這種加密的方式有一個問題,一旦金鑰在傳輸過程被駭客擷取,那麼自己加密的資訊則會面臨被破譯的風險,所以金鑰的儲存與安全傳輸就成了關鍵問題。

直到1876年,“非對稱加密”現世後,人們才攻克這一難關,同時也標誌著公鑰密碼學的成型。它相較之前的“對稱加密”,最大的區別就是:“非對稱加密”的加密和解密過程分別使用了“公鑰”和“私鑰”,金鑰不再只有一個,而是以一對的方式出現。

1976 年,Whitfield Diffie 和 Martin Hellman 提出“公鑰密碼”這一概念,希望能實現在不直接傳遞金鑰的情況下就能完成密文的解密,1978 年,隨著 RSA 公鑰密碼機制的完善,開啟了“非對稱加密演算法”的時代。

由簡單到複雜,由實體到數字化,密碼學成為了資訊保安的保衛者,在以不可篡改、不可偽造著稱的區塊鏈世界中,它發揮著巨大的作用。

區塊鏈中的密碼學

介紹完區塊鏈密碼學的“前世今生”,我們具體看看,在區塊鏈的整個體系中密碼學原理所起到的作用,在這裡我們主要介紹雜湊演算法和非對稱加密技術。

1、雜湊演算法

雜湊演算法又稱為雜湊函式,是一個密碼學工具,可以用在數字簽名中,還可以用於證明密碼安全體制、作為安全元件設計多種密碼體制和安全通訊協議。作為比特幣和區塊鏈的核心技術。簡單來說啊,它跟我們中學時期學到的函式是相同性質的東西,只要代入一個 x,就能得出一個 y,只不過它的計算特別複雜而已。代入一個資料後生成的加密結果被稱為這一資料的雜湊值,它可以被看作是這個訊息的指紋,是世上獨一無二的表示。

相比較一般的函式而言,雜湊函式有兩個特別厲害的地方:

1)對於普通的函式,我們平時代入的 x 只限於數字,得出的 y 資料也長短不一。而對於雜湊函式,不管你代入什麼,比如:數字、英文字母、漢字或者幾者組合等等,並且不管這個資料長度如何,都只能被生成一個固定長度的加密結果(常見為 256 位);

2)在我們課本中學到的函式往往既可以透過 x 解答出 y 的值,也可以透過 y 解答出 x 的值,可是對於雜湊函式,代入 x 後能夠生成資料為 y 的加密結果,卻不能夠由 y 再計算回到 x,並且每一個 x 都只會對應一個 y,在到目前為止能力範圍內無法找到與之重複的結果。也就是說,雜湊函式具有絕對的單向性。

舉例:我們在網上找了一個雜湊( Hash )演算法工具給“OKBS”加密,形成雜湊值如下所示:

如圖中,初始資訊“OKBS”,經過雜湊演算法計算器的加密,就變成了 256 位的加密結果了。注意,雜湊演算法具有絕對的單向性和敏感性,任何輸入資料發生改變(哪怕只有極細微的差別)都會輸出一個不一樣的輸出結果,這就是它的厲害之處了!

2、非對稱加密演算法

非對稱加密演算法的完成需要公鑰、私鑰和加/解密演算法三個結構。

首先,密碼學中的“安全偽隨機數生成器”能夠產生一對金鑰(即:公鑰和私鑰),這兩者是成對的,公鑰是可以公開的,而私鑰則由使用者自己保留。

用私鑰加密的資料只有用公鑰才可以解密,反過來,用公鑰加密的資料也只有用私鑰才可以解密。公鑰和私鑰之間的這種數學關係,使得私鑰可以用於生成特定訊息的簽名。而這個簽名可以在不暴露私鑰的前提下透過公鑰進行驗證。

也就是說我把一段資訊用私鑰進行簽名(加密過程),然後把這個資料連同簽名和我的公鑰傳送給對方,對方就可以透過公鑰對簽名進行驗證(解密過程)對比資料從而驗證資料的有效性。

對應到比特幣的交易系統中,就是:公鑰生成的錢包地址用於接收比特幣,而私鑰則用於比特幣支付時的交易簽名。

在支付比特幣時,比特幣的所有者需要在交易中提交自己的公鑰和該交易的簽名。而比特幣網路中所有節點可以透過所提交的公鑰和簽名進行驗證,從而確認支付者對交易的比特幣的所有權。這樣就實現了既不暴露自己的私鑰又能讓所有的節點有效地驗證交易。

瞭解雜湊演算法和非對稱加密技術後,我們來具體看一看交易過程中如何進行簽名和驗證:

傳送者想要在區塊鏈網路中發起一個交易(在此理解為打包傳送一條名為 x 的原文)時,先要透過雜湊函式將原文 x 形成一個資訊摘要 x,再用自己的私鑰對其進行加密形成數字簽名 x,即加密過程:

接著,傳送者會把原文 x 和數字簽名 x 合在一起傳送給接受者:

接收者接收完畢後,會將原文 x 用相同的雜湊演算法提取資訊摘要 y,再對傳送者傳送來的數字簽名 x 用對應的公鑰進行解密得到資訊摘要 z,透過比較 y 與 z 是否一致來確認接受到的資訊是否有效(完整且在傳輸過程中未被修改)。

以上簡單介紹了密碼學在區塊鏈體系中起到的作用,密碼學可以為一切虛擬網路的安全性提供保證,安全性是一切交易的基礎,區塊鏈網路離不開加密演算法這塊基石。而且,隨著科技發展日新月異,我們的加密演算法也還會不斷改進,讓我們拭目以待吧。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;