比特幣的密碼學

起源

整體說來,密碼學旨在通過加密協議,讓世界進行安全的通信,或在兩方或多方之間安全地進行信息分享,並能阻止惡意第三方讀取或截獲私有信息。密碼學涵蓋很多加密模式,用不同方法保護存儲的數據不會因第三方「竊取」而曝光。

比特幣的密碼學

歷史

密碼學歷史可以被分成兩個時間段:經典現代

在經典密碼學世界中,信息是通過密鑰組合或者說是一組字母或數字來加密,然後由同一組密鑰解密。一個簡單的例子是「凱撒密碼」,字母只是按字母表的順序進行位移,就可以加密或解密。值得注意的是,一旦搞清楚私密密鑰,此前所有的加密信息就都被解開了。整體而言,到第二次世界大戰期間,雖然加密技術不斷進步,但加密手段仍然未有超越,無非是一連串的字母位移和配置,最終都被手工或藉助計算機而破解。

在貝爾實驗室從事密碼學研究的美國數學家克勞德·香農(Claude Elwood Shannon)於 1948 年創立了信息論,他在信息論中聲稱,最好的加密方法應該不顯示關於被加密的明文的任何信息。要知道信息論正是要量化信息,使其能被分享。

信息現在被定義為「熵」,或者叫一個變量所涉及的不確定性的度量。譬如,想象一下你在記錄拋硬幣的結果,硬幣頭像朝上的可能是 50%,記為數字 1, 硬幣頭像朝下的可能是 50%,記為數字 0。你把一連串 1 和 0 的結果記錄下來,這個序列不能被壓縮成一個更短的字符串——因為 1 和 0 出現的機率均等,那麼我們怎麼可能縮短這個字符串呢?辦不到的。但想象一下,如果頭像朝上的概率為 80%,朝下的概率為 20%,你所得到的字符串中, 1 的數量會遠多於 0,這樣我們就可以壓縮字符串來代表一個真實的、更大數量的 1 和 0。這種關於某種可能性的表達就是「信息」,也是關於壓縮如何工作的原理。

香農知道,要隱藏信息,一個好的加密方法應該製造隨機性,這樣一來原始信息就無法溯源出來。譬如,我們對 COLOR 和 COLOUR 兩個英文單詞進行加密,我們知道這兩個詞很相似。不過,如果我們用一種加密機制來加密,結果卻完全不同,那就堪稱完美的加密。

這意味著,即便要被加密的原初消息只有極小的變化,也應翻譯成迥然不同的加密消息,和原始消息的加密消息之間沒有絲毫相像。有趣的是,目前還沒有任何一種加密技術可以做到一丁點的變化就能影響到加密信息的全部。密碼學還在追求完美的保密性。

接著,伴隨計算機的誕生,1970 年代迎來了現代密碼學,即利用複雜性理論來發展加密方法,用戶可以輕鬆地加密、解密或驗證消息,而在不知道私密密鑰的情況下 ,「暴力破解」這一方法所需的算力被證明相當之高,要達到量子計算的難度。

因此,與經典密碼學中加密方法必須保密這一條件不同,現代密碼學的方法和算法都可以被共享。即便提前知道相應的理論和算法,也幾乎不會給你「破解它們」提供什麼優勢。

以下兩個里程碑式的突破把世界帶入現代密碼學時代:

  • 數字加密標準(DES)
  • 公開密鑰密碼學(譬如:RSA 算法和 Diffie-Helman 算法)

DES (Data Encryption Standard)規範了電子數據的加密方法,這推動了對密碼學更廣泛的研究。(題外話,美國政府幹預 DES 的開發,助長了人們對政府通過後門干預加密技術的不信任,等等。關於啟用後門技術的優缺點的爭論一直持續到今天。)言歸正傳,DES 在 2002 年已被高級加密標準 (AES) 所取代。至於公開密鑰密碼學,其工作原理如下:

1. 用戶 A 生成一個 ⑴ 私密密鑰(私鑰)和一個 ⑵ 公開密鑰(公鑰)

一個「密鑰」的定義是什麼呢?密鑰是一段信息,可以決定一個算法的輸出。舉個非常簡化的例子,假設用戶 A 有一個算法 F(x,k),其中她想用密鑰 k 「掩飾」一個數字 x,然後發送給另一個用戶 B,公式如下:

F(x, k) = x * k * 7

x 的值根據用戶 A 想要共享的數據或數字而變化。然後用戶 A 會用密鑰 k 乘以 x,以「隱藏」它。

假設用戶 A 的密鑰是 10,她想把數字 3 發給用戶 B。她會用 3 * 10 * 7 = 210 來「加密」數字 3。用戶 A 會把 210 發送給用戶 B。如果用戶 B 知道密鑰 k 和算法 F,他只需要把 210 除以 10 和 7 來「解密」這個祕密數字,結果即為 3。不過,在本例中,加密密鑰和解密密鑰是相同的,或者稱為對稱加密,即用於加密和解密的是同一個密鑰 3。

而在非對稱加密中,公鑰「加密」和私鑰「解密」是兩個不同的數字,其算法也要比上面提到的複雜得多。

一般來說,公鑰是從私鑰派生出來的;不過,要從公鑰出發找到私鑰,「在計算上是不可行的」。在正規術語中,這被稱為陷門函數(trapdoor function)——在一個方向上很容易處理、但在反方向上執行起來極具挑戰性。

因此,從私鑰生成公鑰很容易,但是從公鑰計算出私鑰非常有挑戰性。這種差異性越大,這種方法就被認為越安全。從根本上說,它依賴於計算中的一個事實:乘法計算起來非常快,而除法要慢得多。

比特幣的密碼學

繼續……

2. 用戶 A 把她的公鑰發送給用戶 B。

3. 用戶 B 用用戶 A 的公鑰加密一條要發給 A 的信息 。

4. 用戶 B 給用戶 A 發送一條加密的信息。

5. 用戶 A 利用她的私鑰解密這條信息,然後讀到用戶 B 發給她的信息。

在 RSA 算法中,簡單說來,私鑰和公鑰是基於兩個大素數相乘形成的半素數而生成的。前面講過,因式分解(除法)在計算上比乘法困難得多。不過,RSA 作為一種密碼學完整性的方法正在衰落。

Global Security 指數是一種量化加密系統的安全性的標準,它將破解一個加密系統所需的算力翻譯成「燒開水」所需的能量。基於這個指數, 288 位的 RSA 加密,可用燒開不到一茶匙水所用的算力破解。目前,大多數 RSA 密碼術使用 2048 位的密鑰。

我們可以對比來看一種新型的私 / 公鑰密碼術——橢圓曲線密碼術(Elliptic Curve Cryptography,ECC)。破解一個 288 位的 ECC 系統,所需的能量可以煮沸地球上所有的水。因此,後者正在快速取代 RSA,成為區塊鏈和零知識證明中使用的密碼學系統的基礎。這是關於 ECC 與 RSA 對比的一個相當綜合的概括。

在繼續講下去之前,我想提醒一下密碼學的使用在歷史上有多麼重要。

從愷撒大帝到現在,一個國家或一個民族能夠安全交流的價值,以人類生命和經濟價值計算都是不可估量的。早在巴比倫人佔領以色列時期的 《耶利米書》中,巴比倫人被以色列人擄到巴比倫時,巴比倫就被稱為代表暗碼式翻譯的「示沙克」(耶利米書 25 章 26 小節),有可能是指保護先知不受懲罰。甚至托馬斯·傑斐遜也參與過密碼學,他製作了美國軍隊使用的傑斐遜圓盤,這個發明一直延用到 20 世紀。後來,英國科學家艾倫·圖靈破解德軍 Enigma 密碼學的工作,被認為縮短了二戰的時間。毫無疑問,密碼學改變了歷史。

相關推薦

推薦中...