首页> 中国专利> 运用椭圆曲线加密算法的数字签名方法

运用椭圆曲线加密算法的数字签名方法

摘要

本发明属于一种保密或安全通信的数字签名方法,它采用椭圆曲线公钥加密算法为主体部分,辅以哈希函数及对称加密算法,具有缩短签名和认证所用的时间,高度安全性,向前保密性和不可抵赖等特性,可以用于网络通信、电子商务、票据、证件以及信息发送者的身份验证等诸多信息传递领域中的防伪。

著录项

  • 公开/公告号CN1264974A

    专利类型发明专利

  • 公开/公告日2000-08-30

    原文格式PDF

  • 申请/专利权人 陈永川;

    申请/专利号CN99125282.9

  • 发明设计人 陈永川;

    申请日1999-12-01

  • 分类号H04L9/32;

  • 代理机构南开大学专利事务所;

  • 代理人胡安朋

  • 地址 300071 天津市南开大学组合数学中心

  • 入库时间 2023-12-17 13:42:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2008-01-30

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2003-05-07

    授权

    授权

  • 2000-08-30

    公开

    公开

  • 2000-08-02

    实质审查请求的生效

    实质审查请求的生效

说明书

本发明涉及一种保密或安全通信的数字签名方法,具体地说,是一种运用椭圆曲线加密算法的数字签名方法。

信息传递过程中的保密和安全问题现今尤为各国政府、企事业单位、乃至个人所关注。在一个系统内(一家银行或整个银行系统里),有许多用户(个银行分行),用户之间发送信息或开出支票,汇票等,问题是怎样确保用户发出的信息或开出的支票、汇票不被人破译、修改、伪造,只能被特定的接收方解密或识别,这是一项有革命意义的数学技术,是确保信息安全的核心问题。为此,在国际上公钥密码的研究方兴未艾,并由此产生了许多数字签名方法。美国国家标准局于1994年公布了“数字签名标准”-DSS。该标准采用了模为512-1024位的大素数,运算速度慢。另外,DSS对发送的明文不加密,是一个单纯的签名方法。现今网络通信中发送的明文也需要加密。类似于DSS的签名方法就无法使用。CN1177872A公开了一种用于实现具有消息附录的数字签名方法,采用一散列函数以减少签名长度,保密程度不够理想。CN1197248A公开了一种数字签名方法。该方法中需要采用签名黑匣子硬件,实施起来比较困难。EP0807908A2披露了一种将椭圆曲线应用于签名体制上的方法,但该方法中选用的模数极小,因而只限用于智能卡。

本发明的目的是提供一种运用椭圆曲线加密算法的数字签名方法,简称ECSC。它不仅可以缩短签名和认证所用时间,具有很高的安全性,同时还具有向前保密性和不可抵赖特性,而且应用范围广泛。

本发明的目的是这样实现的,本发明是一种运用椭圆曲线加密算法的保密或安全通信的数字签名方法,它是以椭圆曲线公钥加密算法为主体,辅以哈希函数及对称加密算法而构成的一种数字签名方法,其具体操作步骤如下:

假定发信者A要给收信者B发送信息,A既希望保护自己的发送信息的安全,同时又希望若有其他人冒充自己给B发送信息,B都会给予否认;另一方面,B希望确认自己收到的信息是从A而来,而且如果确实是A发送的信息,则A以后不能否认;另外为了安全性更好,A希望就算自己的私有密钥万一丢失,自己以前发送给B的信息也不会被破译,具体的加密步骤是:

1.加密系统的设立,记使用射影坐标时,在有限域上椭圆曲线的Weier-strass方程是

             E:y2+a1xy+a3y=x3+a2x2+a4x+a6E在有限域上的解集是,其中包括无穷远点0,先找到一个大素数n,我们取n为160位,即2159≤n<2160,或更大位数的素数,设的秩为让P是E的秩为n的基点,用户A的私有密钥是a,a的范围是1<a<n,公有密钥是,用户B的私有密钥是b,b的范围是1<b<n,公有密钥是h是一个输出至少160位的哈希函数;ENC是一个对称加密系统;2.A的做法如下:

(a)首先检查B的公钥,确认B的身份,如果确认无误,执行下一步;

(b)随机选择一个整数x,计算,然后计算 >>k>=>h>>(>>x>>k>1>>>)>>;> >

(c)计算和s=ae+x-k(mod n)以及R=xP;

(d)利用对称性分组密码进行加密运算C=ENCk(s‖M);

(e)将(R,C)传送给B,(s,R)是A在明文M上的签名;3.B进行如下操作:

(a)首先检查A的公钥,确认A的身份,如果确认无误,执行下一步;

(b)计算和

(c)解密运算(s‖M)=ENCk(C);

(d)计算U=(s+k)P和V=-eQa

(e)检验U+V=R(modP)成立与否来确定是否认可签名,接受信息。

本方法中用到的哈希函数可以采用Md5哈希函数,而对称性分组加密算法可以采用下面的算法:

设h是一个安全哈希函数,输出为160位,密钥k也是160位,让m=m1‖m2‖…‖ms是明文,这里mi是m的分段,每一个mi是160位,如果最后的ms不足160位,则补上适当的0使得它也是160位,其中加密步骤如下:1.计算k11=h(k)和k12=h(k‖k11),以及c11=m1+k11(mod 2160)和m=  c11k12;2.计算k21=h(k‖k12)和k22=h(k‖k21),以及c21=m2+k21(mod 2160和  c2=c21k22;3.第i步:计算ki1=h(k‖k(i-1)2)和ki2=h(k‖ki1),以及ci1=mi+ki1(mod 2160) 和ci=ci1ki2;4.输出密文c=c1‖c2…‖cs;  其中解密步骤如下:1.计算k11=h(k)和k12=h(k‖k11),以及c11=c1k12和m1=c11-  k11(mod 2160);2.计算k21=h(k‖k12)和k22=h(k‖k21),以及c21=c2k22和m2=c11-  k21(mod 2160);3.第i步:计算ki1=h(k‖k(i-1)2)和ki2=h(k‖ki1),以及ci1=ciki和  mi=ci1-ki1(mod 2160);4.输出明文m=m1‖m2‖…‖ms

本发明与现有技术相比,具有的优点是:本方法是一种安全性很高的数字签名方法。它的主体部分是椭圆曲线加密算法,这是最近新兴起的公钥密码,它的攻击难度与解决数论中的离散对数问题相比,难度更大,因为它提供了一种构造“元素”和“组合法则”以产生群的方法。这些群有足够好的性质来建立加密算法,但又缺乏便利于密码分析学家进行密码分析的某些性质。在EP0807908A2中显示,对于模n是155位的椭圆曲线加密算法产生的安全性相当于DSS的模p是512位时产生的安全性。椭圆曲线加密算法的数字签名方法是乘法运算,采用离散对数的数字签名方法是指数运算,而一般的数字签名方法都采用离散对数算法,如美国国家标准局公布的“数字签名标准”DSS。众所周知,在计算机的运算中,指数运算比乘法运算慢,而椭圆曲线的算法恰好把大素数的指数运算转化为基点的数乘运算,而且模n又比DSS的模p的位数小的多,这就大大加快了加密和解密速度,节约了时间。还有就是椭圆曲线算法可以更容易找到合适的密钥,使得保密性更强。

所谓完全向前保密性,就是说当签名者不慎泄露了他的私有密钥时,攻击者也不能得到签名者过去传送的信息。我们提出的ECSC里把私有密钥a加入方程而保证了完全向前保密性。如果发信者A不慎泄露了他的密钥a,那么除了收信者B之外没有人能知道过去的明文,因为不能从加入私有密钥k的签名方程里解出x。

所谓不可抵赖特性是指发信者A不能否认所送出的收信方B收到的信息。如果B泄露了加密密钥k,则整个签名方法等价于Schnorr方案,而此方案是具有不可抵赖特性的,所以ECSC也具有不可抵赖特性。

由于本发明方法选用的模数范围大,只要大于160位即可,因而可以用于网络通信、电子商务(网上交易)、票据、证件以及信息发送者的身份验证等诸多信息传递领域中的防伪。

实施例1:当本方法用于网络通信时,假定发信者A想发送给收信者B一个保密的信息,并且要让B确认是A发送的。这时想发送的信息就是明文M,本方法中,发信者A和收信者B共同选择一条椭圆曲线,这里我们给出一条椭圆曲线如下:

             E:y2=x3+ax+b mod p其中

a=7749463957129053146257821286514082527711626909545828174293

   3794523316333051796

 =AB5469616E6D65694475616E64596F6E

   67636875616E4368656E7FFFFFFFFF94

b=4933636797796321613029058849281118312397657504716883252311

   6113737231920217819

 =6D13650B907BEDBF2C339E4D42812E6D

   735336FF1D86814BC8DC0E49D4873EDB

p=7749463957129053146257821286514082527711626909545828174293

   3794523316333051799

 =AB5469616E6D65694475616E64596F6E

   67636875616E4368656E7FFFFFFFFF97

椭圆曲线E的阶为

n=7749463957129053146257821286514082527692392113683476560518

   1364151552442466917

 =AB5469616E6D65694475616E64596F

   6DD6AE89E94419C337C8D1AC2EBE918265它是一个素数。

阶为n的基点P取为:

              P=(x,y)其中

x=3619855990958490867460104126599597503661122715408276007380

   7077671546888474733

 =5007A8AAA0687F823CB5F465D4C66C

   6564812DBAC40F33315E57C68E314D506D

y=5757606915300672715558766115640020099196350107926888261000

   8601301935590635105

 =7F4AE67A58ED26CE2F128574363907

   48911D5D9A28501B4668A83B09B8027661

发信者A与收信者B分别选取a∈Zp和b∈Zp作为自己的保密私有密钥,而Qa=aP与Qb=bp分别作为A和B的公钥并公开。A严格按照本方法的步骤进行操作,按照本方法的步骤最后发送密文和签名。B在收到后进行验证签名,同时对信息解密。如果签名正确,则确认收到的信息是由A发送的,再处理解密后的信息。

实施例2:当本方法用于电子商务(网上交易)时,简化的网上购物过程如下:假定A是购物者,这时A发送的信息是有关自己的信用卡或其他能支付货币方式的信息。这个信息发送到A购物所在商店或其它消费场所,它们需要把此信息转发给B。假设B是一个银行,它对A发送的信息进行验证,如果确认无误,就把A应支付的货币金额划到A购物所在商店或其它消费场所,完成网上交易。其中具体的信息发送和验证过程与实施例1相同。只不过具体的实际网上购物还需要信用卡公司和电子商务服务器的协助。

实施例3:当本方法用于支票或汇票时,假定A是付款方,C是收款方,B是付款行。A签署支票时,把有关支票或汇票的付款方、汇款方、收款方、付款数额,付款日期和防止支票丢失被他人冒领而设立的提款密码等作为明文信息M,进行加密和签名过程,其具体操作与实施例1相同,并把最后得到的密文和签名转换成数码串,或条形码与二维图象码,打印在支票上。C拿到支票后,到付款行B处取款。B先从支票上读出数码串,或条形码与二维图象码,然后转换成密文与签名,再以相应的步骤进行确认和付款工作。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号