ECC加密可以被破解嗎?

ECC是“Error Correcting Code”的簡(jiǎn)寫,中文名稱是“錯(cuò)誤檢查和糾正”。ECC是一種能夠?qū)崿F(xiàn)“錯(cuò)誤檢查和糾正”的技術(shù),ECC內(nèi)存就是應(yīng)用了這種技術(shù)的內(nèi)存,一般多應(yīng)用在服務(wù)器及圖形工作站上,這將使整個(gè)電腦系統(tǒng)在工作時(shí)更趨于安全穩(wěn)定。

ECC加密被破譯的可能性之制作注冊(cè)機(jī)(簽名過(guò)程)

1、選擇一條橢圓曲線Ep(a,b),和基點(diǎn)G;

2、選擇私有密鑰k(k小于n,n為G的階),利用基點(diǎn)G計(jì)算公開密鑰K=kG;

3、產(chǎn)生一個(gè)隨機(jī)整數(shù)r(r小于n),計(jì)算點(diǎn)R=rG;

4、將用戶名和點(diǎn)R的坐標(biāo)值x,y作為參數(shù),計(jì)算SHA(Secure Hash Algorithm 安全散列算法,類似于MD5)值,即Hash=SHA(username,x,y);

5、計(jì)算sn≡r - Hash * k (mod n);

6、將sn和Hash作為 用戶名username的序列號(hào)。

軟件驗(yàn)證過(guò)程如下:(軟件中存有橢圓曲線Ep(a,b),和基點(diǎn)G,公開密鑰K)。

(軟件中存有橢圓曲線Ep(a,b),和基點(diǎn)G,公開密鑰K)

1、從用戶輸入的序列號(hào)中,提取sn及Hash;

2、計(jì)算點(diǎn)R≡sn*G+Hash*K ( mod p ),如果sn、Hash正確,其值等于軟件作者簽名過(guò)程中點(diǎn)R(x,y)的坐標(biāo),因?yàn)?/p>

sn≡r-Hash*k (mod n)

所以

sn*G + Hash*K

=(r-Hash*k)*G+Hash*K

=rG-Hash*kG+Hash*K

=rG- Hash*K+ Hash*K

=rG=R

3、將用戶名和點(diǎn)R的坐標(biāo)值x,y作為參數(shù),計(jì)算H=SHA(username,x,y);

4、如果H=Hash 則注冊(cè)成功。

從上面的分析來(lái)看,要想制作出ECC的注冊(cè)機(jī),似乎需要知道私鑰才有可能,這需要窮舉。如果是私鑰數(shù)據(jù)長(zhǎng)度非常大或是數(shù)據(jù)對(duì),這基本上是不可能的。sn和Hash,H等都是關(guān)聯(lián)的,能說(shuō)是牽一發(fā)而動(dòng)全身。Hash經(jīng)過(guò)復(fù)雜運(yùn)算后,還要使計(jì)算的最后結(jié)果等于自身,即H=Hash,否則將驗(yàn)證失敗。帶ECC程式的本身只有公鑰,而沒(méi)有私鑰。私鑰只在注冊(cè)機(jī)中存在。ECC的程式似乎有一種東西游離于程式之外,又在控制著程式驗(yàn)證的運(yùn)行。知道他,卻又抓不住他,這就是私鑰。破譯一個(gè)字,難!所以在理論上ECC是可以被破解的,但是如果驗(yàn)證函數(shù)非常復(fù)雜,就需要看自己的逆向功底和數(shù)據(jù)的構(gòu)建能力了.