七、椭圆曲线在软件注册保护的应用
我们知道将公开密钥算法作为软件注册算法的好处是cracker很难通过跟踪验证算法得到注册机。下面,将简介一种利用fp(a,b)椭圆曲线进行软件注册的方法。 KWtp8 WdG++nh] [ 本 资 料 来 源 于 贵 州 学 习 网 IT认证计算机软件水平考试 http://Www.gzU521.com ] KWtp8 WdG++nh]
软件作者按如下方法制作注册机(也可称为签名过程)
1、选择一条椭圆曲线ep(a,b),和基点g;
2、选择私有密钥k(k<n,n为g的阶),利用基点g计算公开密钥k=kg;
3、产生一个随机整数r(r<n),计算点r=rg;
4、将用户名和点r的坐标值x,y作为参数,计算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)
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作为参数,计算h=sha(username,x,y);
4、如果h=hash 则注册成功。如果h≠hash ,则注册失败(为什么?提示注意点r与hash的关联性)。
简单对比一下两个过程:
作者签名用到了:椭圆曲线ep(a,b),基点g,私有密钥k,及随机数r。
软件验证用到了:椭圆曲线ep(a,b),基点g,公开密钥k。
cracker要想制作注册机,只能通过软件中的ep(a,b),点g,公开密钥k ,并利用k=kg这个关系获得k后,才可以。而求k是很困难的。
本文共2页:第
[1] [2] 页
