當前位置:歷史故事大全網 - 歷史上的今天 - 高中生如何理解比特幣加密算法

高中生如何理解比特幣加密算法

加密算法是數字貨幣的基石,比特幣的公鑰體系采用橢圓曲線算法來保證交易的安全性。這是因為要破解橢圓曲線加密,就要面對離散對數的問題。到目前為止,我們還沒有在多項式時間內找到壹個解,當算法使用的空間足夠大時,它被認為是安全的。本文不涉及高等數學理論,希望所有高中生都能看懂。

密碼學歷史悠久,幾乎每個人都可以構造加密和解密的方法,比如簡單的循環移位。舊的或簡單的方法需要秘密的加密算法和密鑰。但從歷史上長期的攻防戰來看,基於加密的保密並不可靠。同時,密鑰的傳輸壹直是個大問題,經常面臨密鑰泄露或中間人攻擊的風險。

20世紀70年代,密碼學迎來了突破。Ralph C. Merkle在1974中首先提出了非對稱加密的思想。兩年後,Whitfield Diffie和Whitfield Diffie兩位學者提出了基於單向函數和單向暗門函數的具體思想。隨後,大量的研究和算法湧現出來,其中最著名的是RSA算法和壹系列橢圓曲線算法。

無論哪種算法,都是在前人的肩膀上,主要基於數論、群論和以素數為研究對象的有限域理論的發展。內容加密的密鑰不再需要傳輸,而是通過運算生成,這樣即使在不安全的網絡中,通信也是安全的。密文的解密依賴於密鑰的解密,但是密鑰的解密面臨壹個難題。對於RSA算法,這個問題是大數的因式分解,對於橢圓曲線算法,這個問題是準離散對數解。兩者目前都沒有多項式時間的解,也就是說當位數增加時,難度呈指數級增加。

那麽在公鑰和私鑰系統中,加密和解密是如何工作的呢?總之是在有限的領域內通過運算進行的,因為加密和解密必須準確。有限域是由有限個元素組成的集合。加密是將壹個元素映射到另壹個元素,而解密是再次映射。有限域的合成與素數的性質有關。

前段時間,黎曼猜想(與素數定理密切相關)被炒得沸沸揚揚的時候,區塊鏈項目的壹個技術總監說橢圓曲線算法與素數無關,不受黎曼猜想的影響,完全是扯淡。可以看出,區塊鏈項目是喜憂參半,需要好好洗壹洗。

比特幣和大多數區塊鏈項目采用的公鑰系統是橢圓曲線算法,而不是RSA。在介紹橢圓曲線算法之前,先了解壹下離散對數問題對於它的安全性是有幫助的。

我們先來看看費馬大定理:

原始根定義:

設(a,p)=1 (a和p互質),滿足

的最低正整數L稱為A的模P的階,模P階為(最大)p-1的整數A稱為模P的本原根。

兩個定理:

基於此,我們可以看到{1,2,3,… p-1}是壹個有限域,定義的運算gi (mod p)落在這個有限域內。同時,當I從0到p-2取不同的數時,運算結果也不同。這和我們高中學的冪運算基本相同,只是多了壹層模運算。

還有壹點需要註意的是,g的指數可以不限於0~p-2,實際上可以全是自然數,但是因為

因此,所有的函數值都在壹個有限域內,它們是連續循環的。

離散對數定義:

設g是模p的本原根,(a,p) = 1,

我們稱I為a的指數(對於模p的本原根g),表示為:

這裏ind是索引的前三個字母。

這個定義是不是很像log的定義?其實這是我們高中學過的對數定義的延伸,只是現在應用於有限域。

但這不同於實數域的對數計算,實數域是壹個連續的空間,對數計算有公式和規律可循,但往往很難精確。我們的加密系統需要準確性,但在有限域上操作極其困難。當妳知道了冪值A和對數底數G,就很難求出它的離散對數值I。

當選取的素數p足夠大時,在時間和計算上都變得不可能找到I。所以,我們可以說我是不能被計算的,也就是安全的,不能被破解的。

比特幣的橢圓曲線算法具體采用secp256k1算法。網上有很多關於橢圓曲線算法的介紹,這裏就不細說了。只要知道它其實是壹條三次曲線(不是橢圓函數),定義如下:

然後是參數a和b;不同的橢圓曲線有不同的值。當然,X和Y是在實數域定義的,這在密碼體制中是不可行的。真正用到的時候,X和Y應該定義在壹個有限域上,都是自然數,小於壹個素數p,那麽定義這個橢圓曲線的時候,它的響應只是坐標系中的壹些離散點,壹點也不像曲線。但是,在集合有限域中,它的各種運算是完備的。也就是說,通過加密運算可以找到對應的點,通過解密運算可以得到加密前的點。

同時,和上面提到的離散對數問題壹樣,我們希望在這條橢圓曲線的離散格中找到壹個有限子群,它具有上面提到的遍歷性和循環性。我們所有的計算都會用到這個子群。這樣就建立了壹個我們需要的有限域。那麽這裏我們需要子群的階(壹個素數n)和子群中的基點g(壹個坐標,可以通過加法運算遍歷n階子群)。

根據上面的描述,我們知道橢圓曲線的定義包含了壹個五行祖先(P,A,B,G,N,H);具體定義和概念如下:

p:大素數,用來定義橢圓曲線的有限域(群)。

a,b:橢圓曲線的參數,定義橢圓曲線函數。

g:循環子群中的基點,運算的基礎。

n:循環子群的階(另壹個大素數,

h:子群的相關因子,即壹個群的階除以子群的階的整數部分。

好了,是時候看看比特幣的橢圓曲線算法是什麽樣的橢圓曲線了。簡單來說,它是壹條橢圓曲線,上面的參數取值如下:

橢圓曲線定義了加法,表示兩點相連,關於X軸與圖像第三點相交的對稱點為兩點之和。網上已經有很多內容了,這裏就不細說了。

但是,細心的同學可能會有壹個疑問。離散對數的問題是,求冪很容易,但求它的指數很難。但是,在橢圓曲線算法中,沒有冪,只有積。這如何體現離散對數問題?

其實這是壹個定義的問題。壹開始橢圓曲線算法把這個運算定義為求和,但是只要妳把這個運算定義為乘積,整個系統就沒問題了。而且如果定義乘積,會發現所有的運算在形式上都符合離散對數問題和選擇有限域的原理。所以,這本質上是壹個離散對數問題。但它不是壹個簡單的離散對數問題,實際上比壹般的離散對數問題更難,因為它不是簡單的求壹個數的離散對數,而是在壹個自定義的計算上求壹個與離散對數相似的值。這就是為什麽橢圓曲線算法非常安全,因為它使用的私鑰位(256位)比RSA需要的(通常為2048位)少得多。

  • 上一篇:10以夢想為主題的中考話題優秀作文。
  • 下一篇:海陽的歷史
  • copyright 2024歷史故事大全網