APP下载

电子政务中基于ECC的数字签名算法的研究

2014-11-27宋佳倩

新媒体研究 2014年19期
关键词:数字签名电子政务

宋佳倩

摘 要 本论文描述了椭圆曲线密码体制,论述了ECC椭圆曲线的概念以及基于ECC的加密、解密技术和基于椭圆曲线的数字签名算法。最后,采用ECDSA算法,通过编程简单实现电子政务系统的部分功能。

关键词 数字签名;电子政务;椭圆曲线数字签名

中图分类号:TP399 文献标识码:A 文章编号:1671-7597(2014)19-0058-01

1 椭圆曲线密码体制

1.1 椭圆曲线的概念

椭圆曲线是在射影平面上满足方程Y2Z+a1XYZ+a3YZ2=X3+

1)选取ECDSA域参数。2)产生密钥对。3)生成ECDSA签名。4)验证ECDSA签名。

3.2 ECDSA的安全性分析

ECDSA算法是通过ECC来实现的,故可以用ECC的安全性来形容ECDSA的安全性。所谓安全性即算法本身的抗攻击强度,在此以RSA算法的安全性作为比对。增加RSA的密钥长度,其解密速率将大幅度降低,且对硬件的实现也造成了一定的困难。而在同等密钥长度的条件下,ECC的安全性就要高得多,这也使得ECC只需使用较短的密钥即可保证算法的安全性。

4 系统的具体实现

4.1 基本流程

ECDSA的基本流程如图2所示。

图2 ECDSA的生成和验证

4.2 ECDSA算法的实现

首先调用int privateKey = rand()随机生成私钥,在此上调用Point publicKey = privateKey * mEncoder.GetGPoint()生成公钥。其中GetGPoint()函数是用来取G点的函数。

4.3 文件的签名操作

1)计算SHA1值:

int SHA1Reset(SHA1Context *context);//初始化,计算新sha1消息摘要

void SHA1ProcessMessageBlock(SHA1Context *context);

2)产生签名:

Int k(rand() % 128);//随机产生私钥

Point p = k.i() * GetGPoint(); //根据私钥计算公钥

tmp[i + SHA1HashSize] = s.i();//计算(r,s)

4.4 签名的验证

Int r = Int((unsigned char)sig[i]);//从签名中获取r

Int s = Int((unsigned char)sig[i + SHA1HashSize]);//从签名中获取s

Int e = Int(sha1[i]);得到sha1值

if (x.x() == 0 || x.x() != r)return false;//r=0或者v不等于r,返回非法签名

5 结束语

椭圆曲线密码体制可使通信系统安全性提高,签名方案可以同时完成数字签名和公钥加密。本文提出的以椭圆曲线为基础的数字签名方案,能够实现收发双方的相互认证;当双方发生争议时,可由仲裁者去仲裁,这在通信应用场合中有一定实用价值。

参考文献

[1]张先红.数字签名原理及技术[M].北京:机械工业出版社,2004.

[2]曹莉,刘志镜.椭圆曲线密码体制与电子政务[J].计算机安全,2005.

[3]杨义先,孙伟.现代密码新理论[M].北京:科学出版社,2002.

[4]于海峰.政府信息化建设中的信息安全管理[J].计算机世界,2001.

[5]胡道元.Intranet网络技术及应用[M].北京:清华大学出版社,1998.

[6]于慧龙,解玲.基于保护轮廓的数据库系统安全性[J].信息网络安全,2002.

[7]Chicurel M .C ell Migration Research is on the Move[J].Science, 2002.

[8]牛少彰,崔宝江,李剑.信息安全概论[M].北京:北京邮电大学出版社,2004.

[9]江翔,袁辉.Visual C++实践与提高网络编程篇[M].北京:中国铁道出版社,2001.endprint

猜你喜欢

数字签名电子政务
中国电子签名立法与实践问题研究
新形势下地方电子政务信息化发展研究
交通运输行业数字签名系统的设计与实现分析
我国政府电子政务外网安全问题研究
关于电子商务中安全数字签名的研究
基于XML的数字签名在电子病历的应用方法
手动查安全 揪出“不明身份”者
中国电子政务的“短板”
我国县域电子政务工作的困境
掌握方法用好数字签名