探討ECC加密被破譯的可能性
ECC加密被破譯的可能性之制作注冊機(簽名過程)
1、選擇一條橢圓曲線Ep(a,b),和基點G;
2、選擇私有密鑰k(k小于n,n為G的階),利用基點G計算公開密鑰K=kG;
3、產(chǎn)生一個隨機整數(shù)r(r小于n),計算點R=rG;
4、將用戶名和點R的坐標值x,y作為參數(shù),計算SHA(Secure Hash Algorithm 安全散列算法,類似于MD5)值,即Hash=SHA(username,x,y);
5、計算sn≡r - Hash * k (mod n);
6、將sn和Hash作為 用戶名username的序列號。
軟件驗證過程如下:(軟件中存有橢圓曲線Ep(a,b),和基點G,公開密鑰K)。
ECC加密被破譯的可能性之軟件驗證過程
(軟件中存有橢圓曲線Ep(a,b),和基點G,公開密鑰K)
1、從用戶輸入的序列號中,提取sn及Hash;
2、計算點R≡sn*G+Hash*K ( mod p ),如果sn、Hash正確,其值等于軟件作者簽名過程中點R(x,y)的坐標,因為
- 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、將用戶名和點R的坐標值x,y作為參數(shù),計算H=SHA(username,x,y);
4、如果H=Hash 則注冊成功。如果H≠Hash ,則注冊失敗(為什么?提示注意點R和Hash的關聯(lián)性)。
簡單對比一下兩個過程:
作者簽名用到了:橢圓曲線Ep(a,b),基點G,私有密鑰k,及隨機數(shù)r。
軟件驗證用到了:橢圓曲線Ep(a,b),基點G,公開密鑰K。
Cracker要想制作注冊機,只能通過軟件中的Ep(a,b),點G,公開密鑰K ,并利用K=kG這個關系獲得k后,才能。而求k是非常困難的。
ECC加密被破譯的可能性的探討的更多內(nèi)容請看:探討ECC加密被破譯的可能性 續(xù)
【編輯推薦】