探討ECC加密被破譯的可能性 續(xù)
ECC被破譯的難度的探討
1、從上面的分析來看,要想制作出ECC的注冊機(jī),似乎需要知道私鑰才有可能,這需要窮舉。如果是私鑰數(shù)據(jù)長度非常大或是數(shù)據(jù)對,這基本上是不可能的。
2、sn和Hash,H等都是關(guān)聯(lián)的,能說是牽一發(fā)而動(dòng)全身。
3、Hash經(jīng)過復(fù)雜運(yùn)算后,還要使計(jì)算的***結(jié)果等于自身,即H=Hash,否則將驗(yàn)證失敗。
4、帶ECC程式的本身只有公鑰,而沒有私鑰。私鑰只在注冊機(jī)中存在。
5、開始的感覺是,帶ECC的程式似乎有一種東西游離于程式之外,又在控制著程式驗(yàn)證的運(yùn)行。知道他,卻又抓不住他,這就是私鑰。破譯一個(gè)字,難!
因此,目前常用的方法是爆破和補(bǔ)丁。
ECC被破譯的可能性的探討
細(xì)想一下,這有點(diǎn)奇怪。程式在我的機(jī)子上運(yùn)行,代碼我的機(jī)子上跑,而他的驗(yàn)證運(yùn)行卻受程式之外的某種規(guī)律(公鑰-私鑰關(guān)系)的控制。非常是不爽,我本地運(yùn)行憑什么受外面的某種關(guān)系制約啊,哪里有這種邏輯呢?典型的霸王條款!發(fā)揮逆向思維想想,既然驗(yàn)證成功的程式能在我的機(jī)子上運(yùn)行,說明他肯定符合某種規(guī)律,而這種規(guī)律存在于本機(jī)的程式中,并不一定是程式之外的那種約束關(guān)系!如果這種假設(shè)成立的話,那么就說明有非常多種規(guī)律能適合于驗(yàn)證關(guān)系!
1、分析注冊機(jī):
- K=k*G
- R=rG
- Hash=F(user,R)=F(user,r,G)=SHA(user,x,y)
- sn=r-Hash*k
sn,Hash,user三者關(guān)聯(lián),即:sn=r-Hash*k=r-k*SHA(user,x,y)。
2、分析程式驗(yàn)證:
- sn,Hash
- R=sn*G+Hash*K
- H=F(user,R)=SHA(user,x,y)
驗(yàn)證H是否等于Hash。
3、驗(yàn)證程式的關(guān)聯(lián):
- H=F(user,R))=F(user,sn,G,Hash,K)=SHA(user,x,y)
如果確定user,確定G,確定K(這些都能從軟件中逆向出來的),既然驗(yàn)證需求H=Hash,那么我們就令H=Hash,則有H=F(user,sn,G,H,K)=F(...,sn,...,H),即 H=F(...,sn,...,H)。這其中,只有H和sn是變化的,給定sn,就能給出相應(yīng)的H;其他量都是常量。
4、關(guān)鍵的問題:搞清晰F函數(shù)的關(guān)系,逆向出程式中已有的信息,用符合條件的user,任意sn(只要符合長度等基本限制),理論上就能計(jì)算出符合這個(gè)關(guān)系的Hash。這樣的話,就和私鑰沒有關(guān)系了。也就是用某個(gè)關(guān)系間接代替了公私鑰的關(guān)系。
5、ECC是窮舉,也就是說可能舉出非常多符合條件的;實(shí)際上窮舉也就是沒有固定的對應(yīng)值,因此,這即是其***的漏洞。因此,有無窮對滿足H=F(...,sn,...,H)關(guān)系的密碼對。
6、進(jìn)一步探討:
對于方程H=F(...,sn,...,H),有些時(shí)候并不一定有解析解。如果有解析解的情況,就是 H=HASH=f(sn...),其他量為常值看待,非常容易給出。這樣的注冊機(jī),其實(shí)是需求輸入user和sn兩個(gè)量來確定HASH,而不是通常的一個(gè)量。如果方程沒有解析解的情況,似乎也要窮舉?比如 X=a+b**(X+c),這里X為變量,a,b,c為常量。 例如HASH=user+2**(a*sn+b*HASH) 等通常是沒有解析解的。
如果我們要相信私鑰起作用的話,那肯定沒有辦法了。窮舉也許是最笨的辦法,我們?yōu)槭裁床荒軜?gòu)建其他的關(guān)系來滿足方程達(dá)到能產(chǎn)生解析解呢?只要這些構(gòu)建的關(guān)系能夠通過程式的諸如數(shù)據(jù)長度等基本的驗(yàn)證機(jī)制就行了。上面的方程能這樣構(gòu)建額外的關(guān)系就能簡化并構(gòu)成簡單的聯(lián)立方程組,而構(gòu)成這樣的關(guān)系方程實(shí)在太多,比如:
令a*sn+b*Hash=0 方程(1)就變?yōu)镠ASH=user+1 聯(lián)立求解上面方程,夠簡單的吧。如果有某種限制條件,我們同樣能令a*sn+b*Hash=1,2..........既然窮舉,我們舉幾個(gè)特例就能饒過這些基本的判斷了。
7、ECC驗(yàn)證
真正的ECC加密比上面的復(fù)雜,但基本原理相同。只不過他采用了橢圓曲線映射驗(yàn)證機(jī)制,過程更復(fù)雜,也需要更多的構(gòu)建搭橋技術(shù)。
ECC加密被破譯的可能性的探討結(jié)論
ECC能否破解?答案是肯定的只是如果程式驗(yàn)證函數(shù)的復(fù)雜程度如果夠難的話,那就看你的逆向功底和數(shù)據(jù)函數(shù)構(gòu)建能力了。理論上,只要另外構(gòu)建一個(gè)或多個(gè)關(guān)系函數(shù),這樣就能代替私鑰了,凡是窮舉似乎都能這樣做,而且做出的注冊機(jī)應(yīng)該有無窮多個(gè)。
ECC加密被破譯的可能性的探討的更多內(nèi)容請看:探討ECC加密被破譯的可能性
【編輯推薦】