本文由“幣嗨Bihi內(nèi)容合伙人計劃”贊助
今天呼嚕繼續(xù)和大家一起學(xué)習(xí)區(qū)塊鏈安全盾之密碼學(xué)及算法(2)——橢圓橢圓曲線ECC算法含末。
在正式開始復(fù)雜而高深的學(xué)習(xí)前亥至,我們理解下數(shù)學(xué)上橢圓的有意思的一面勃黍。
所謂的一個橢圓曲線是滿足一個特殊方程的點(diǎn)集踱蛀,可用方程式y(tǒng)^2 = x^3 + ax + b表示奠支。
也有其他橢圓曲線的代表馋辈,但學(xué)術(shù)上一個橢圓曲線是一個滿足一個變量為二階,另一個變量為3階的二元方程倍谜。一個橢圓曲線不僅僅是一個漂亮的圖片首有,它也有一些使它成為密碼學(xué)的一個好環(huán)境的性能燕垃。
它有幾個有趣的特性:
其中一個是水平對稱。曲線上的任何點(diǎn)以X軸反射并且仍然是同樣的曲線井联。一個更加有趣的特性是任何不垂直的線穿過曲線最多有三個交點(diǎn)卜壕。
讓我們來把曲線想象成一個奇異的桌球游戲。取曲線上的任意兩點(diǎn)并且把他們連起來烙常;這條線與曲線有一個以上的交點(diǎn)轴捎。在這個桌球游戲里,你拿球從A射向B.當(dāng)它撞上曲線蚕脏,這個球向上反彈(它位于X軸以下)或者向下反彈到曲線的另一邊侦副。
我們把球移向兩點(diǎn)叫“打點(diǎn)(dot)”。曲線上的任意兩點(diǎn)能被同時打點(diǎn)得到一個新點(diǎn)驼鞭。
A dot B = C
我們也能同時做一串移動來用它自己反復(fù)“打點(diǎn)"秦驯。
A dot A = B
A dot B = C
A dot C = D
...
事實(shí)證明如果你有兩個點(diǎn),一個最初的點(diǎn)用它自己打點(diǎn)n次到達(dá)一個最終點(diǎn)挣棕,在你只知道最重點(diǎn)時找到n和最初點(diǎn)是很難的译隘。繼續(xù)我們的奇異桌球比喻,想象一個人在一段任意時間里在一個房間里單獨(dú)玩我們游戲洛心。對他來說固耘,他跟著上述規(guī)則來反復(fù)擊球是容易的。如果一個人后來走進(jìn)房間并且看到球最終的位置词身,即使他們知道這個游戲的所有規(guī)則和球的起點(diǎn)厅目,在沒有全程觀察游戲直到球到達(dá)同一點(diǎn)的情況下,他們也不能算出球擊打到那的次數(shù)法严。容易做损敷,但很難解開。這就是一個非常棒的trapdoor函數(shù)的基礎(chǔ)深啤。
在密碼理論中拗馒,橢圓曲線算法是一種非對程密碼,也稱公鑰密碼墓塌。
所謂非對程密碼是指加密用的密鑰和解密用的密鑰不同瘟忱,用作加密的稱作私鑰,需要保密苫幢,用作解密的稱作公鑰访诱,顧名思義是公開的,并且從一個密鑰不能推算出另一個密鑰韩肝。目前使用最廣泛的兩種非對程密碼為RSA和ECC触菜,RSA歷史悠久,簽名較快哀峻,而驗證較慢涡相。相同密碼強(qiáng)度而言哲泊,ECC密鑰長度較短,效率更高催蝗。RSA基于大數(shù)分解問題切威,ECC基于橢圓曲線離散對數(shù)問題。
下面介紹這種算法的作用和描述丙号。
1. 作用
計算一個或多個消息的摘要可以保證消息不會被更改(一旦更改就能發(fā)現(xiàn))先朦,所以消息與摘要是一一對應(yīng)的。但是如果攻擊者有摘要算法犬缨,他就可以同時替換消息和摘要喳魏,如果只驗證摘要是無法得知消息已被替換(更改),如何解決這一消息真實(shí)性的問題怀薛,這就是公鑰密碼的用途之一刺彩,其原理:
???? (1)產(chǎn)生消息的人公開自己的密鑰,然后用私鑰對消息摘要進(jìn)行加密(俗稱簽名)枝恋,與消息创倔、消息摘要、摘要簽名一同發(fā)送給接收者鼓择;
????? (2)發(fā)送者的公鑰隨處可得三幻,接收者使用公鑰對消息簽名進(jìn)行解密(驗簽)就漾,如果結(jié)果正確則消息真實(shí)性得到驗證呐能,從而對消息摘要進(jìn)一步驗證;如果結(jié)果錯誤則消息不可靠抑堡。
?????? (3)公鑰是由權(quán)威機(jī)構(gòu)產(chǎn)生的摆出,并且可驗證,所以替換公鑰是不可能的首妖。
2. 算法描述
??????? 相比RSA偎漫,理解橢圓曲線密碼算法的數(shù)學(xué)基礎(chǔ)困難的多。首先了解幾個概念有缆。
??????? (1) ?射影平面坐標(biāo)系:它是對笛卡爾直角坐標(biāo)系的擴(kuò)展象踊,增加了無窮遠(yuǎn)點(diǎn)的概念。在此坐標(biāo)系下棚壁,兩條平行的直線是有交點(diǎn)的杯矩,而交點(diǎn)就是無窮遠(yuǎn)點(diǎn)。兩者的變換關(guān)系為:笛卡爾坐標(biāo)系中的點(diǎn)a(x袖外,y)史隆,令x=X/Z,y=Y/Z曼验,則射影平面坐標(biāo)系下的點(diǎn)a的坐標(biāo)為(X泌射, Y粘姜,Z)熔酷,比如點(diǎn)(2,3)就轉(zhuǎn)換為(2Z坛芽,3Z翼抠,Z)阴颖。
? ??????(2) ?橢圓曲線:一條橢圓曲線在射影平面上滿足方程:Y^2Z+a1XYZ+a3yZ^2=X^3+a2X^2Z+a4XZ^2+a6Z^3的所有點(diǎn)的集合量愧,且曲線上每個點(diǎn)都是非奇異的(連續(xù)的、可微分的)煞烫。該方程稱為維爾斯特拉斯方程滞详。橢圓曲線并非是一個橢圓紊馏,只是其方程形式類似一個計算橢圓周長的方程朱监。
? ? (3)射影平面轉(zhuǎn)換為直角平面:橢圓曲線有一個無窮遠(yuǎn)點(diǎn)(0:1:0),那么把可以計算出直角平面坐標(biāo)系下的曲線方程:y^2+a1xy+a3y=x^3+a2x^2+a4x+a6巡蘸。 這個方程代表的光滑曲線再加上一個無窮遠(yuǎn)點(diǎn)擂送,就組成了橢圓曲線。
? ?(4)橢圓曲線一點(diǎn)切線的斜率:因為橢圓曲線平滑的逾冬,每一個點(diǎn)都有切線,斜率是切線的一個重要指標(biāo)产还。它將在橢圓曲線密碼算法中使用嘀趟。
以上是初步的學(xué)習(xí)她按,更深的函數(shù)學(xué)習(xí)待下期進(jìn)行酌泰。