七、橢圓曲線在軟件注冊(cè)保護(hù)的應(yīng)用
我們知道將公開密鑰算法作為軟件注冊(cè)算法的好處是Cracker很難通過跟蹤驗(yàn)證算法得到注冊(cè)機(jī)。下面,將簡介一種利用Fp(a,b)橢圓曲線進(jìn)行軟件注冊(cè)的方法。
軟件作者按如下方法制作注冊(cè)機(jī)(也可稱為簽名過程)
1、選擇一條橢圓曲線Ep(a,b),和基點(diǎn)G;
2、選擇私有密鑰k(k 3、產(chǎn)生一個(gè)隨機(jī)整數(shù)r(r 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)證過程如下:(軟件中存有橢圓曲線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正確,其值等于軟件作者簽名過程中點(diǎn)R(x,y)的坐標(biāo),因?yàn)?BR> 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è)成功。如果H≠Hash ,則注冊(cè)失敗(為什么?提示注意點(diǎn)R與Hash的關(guān)聯(lián)性)。
簡單對(duì)比一下兩個(gè)過程:
作者簽名用到了:橢圓曲線Ep(a,b),基點(diǎn)G,私有密鑰k,及隨機(jī)數(shù)r。
軟件驗(yàn)證用到了:橢圓曲線Ep(a,b),基點(diǎn)G,公開密鑰K。
Cracker要想制作注冊(cè)機(jī),只能通過軟件中的Ep(a,b),點(diǎn)G,公開密鑰K ,并利用K=kG這個(gè)關(guān)系獲得k后,才可以。而求k是很困難的。
我們知道將公開密鑰算法作為軟件注冊(cè)算法的好處是Cracker很難通過跟蹤驗(yàn)證算法得到注冊(cè)機(jī)。下面,將簡介一種利用Fp(a,b)橢圓曲線進(jìn)行軟件注冊(cè)的方法。
軟件作者按如下方法制作注冊(cè)機(jī)(也可稱為簽名過程)
1、選擇一條橢圓曲線Ep(a,b),和基點(diǎn)G;
2、選擇私有密鑰k(k
5、計(jì)算sn≡r - Hash * k (mod n)
6、將sn和Hash作為 用戶名username的序列號(hào)
軟件驗(yàn)證過程如下:(軟件中存有橢圓曲線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正確,其值等于軟件作者簽名過程中點(diǎn)R(x,y)的坐標(biāo),因?yàn)?BR> 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è)成功。如果H≠Hash ,則注冊(cè)失敗(為什么?提示注意點(diǎn)R與Hash的關(guān)聯(lián)性)。
簡單對(duì)比一下兩個(gè)過程:
作者簽名用到了:橢圓曲線Ep(a,b),基點(diǎn)G,私有密鑰k,及隨機(jī)數(shù)r。
軟件驗(yàn)證用到了:橢圓曲線Ep(a,b),基點(diǎn)G,公開密鑰K。
Cracker要想制作注冊(cè)機(jī),只能通過軟件中的Ep(a,b),點(diǎn)G,公開密鑰K ,并利用K=kG這個(gè)關(guān)系獲得k后,才可以。而求k是很困難的。

