浅谈数字签名技术的原理及应用
66福建电脑2010年第5期
浅谈数字签名技术的原理及应用
曲蕴慧1,白新国2
(1、西安医学院公共课部计算机教研室陕西西安710021
2、西安西安工程大学计算机学院陕西西安710048)
【摘要】:文章从数字签名技术的概念与特点出发,分析了常见的几种数字签名技术的工作原理、特点及其实现算法,最后对数字签名技术的发展方向及应用前景进行了探讨。
【关键词】:数字签名,信息安全,算法一.数字签名的概念与特点1.1概念
所谓" 数字签名" 就是附加在数据单元上的一些数据, 或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据, 防止被人(例如接收者) 进行伪造。基于公钥密码体制和私钥密码体制都可以获得数字签名, 目前主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。" 数字签名" 是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。1.2特点
数字签名是解决网络通信中特有安全问题的一种有效方法,它能够实现电子文档的辨认和验证,在保证数据的完整性、私有性不可抵赖性方面起着极其重要的作用。为了实现网络环境下的身份鉴别、数据完整性认证和抗否认的功能,数字签名应满足以下要求:
(1)签名者发出签名的消息后就不能再否认自己所签发的消息;
(2)接收者能够确认或证实签名者的签名,但不能否认;(3)任何人都不能伪造签名;
(4)第三方可以确认收发双方之间的消息传送,但不能伪造这一过程,这样当通信的双方关于签名的真伪发生争执时,可由第三方来解决双方的争执。二.数字签名的原理及实现算法2.1工作原理
数字签名采用了双重加密的方法来实现防伪、防赖。其原理为:
(1)被发送文件用SHA 编码加密产生128bit 的数字摘要。(2)发送方用自己的私用密钥对摘要再加密,这就形成了数字签名。
(3)将原文和加密的摘要同时传给对方。
(4)对方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA 编码加密产生又一摘要。
(5)将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。2.2算法的基本要求
对于一个典型的数字签名体系而言,它必须包含两个个重要的组成部分,即签名算法(Signature Algorithm )和验证算法(VerificationAlgorithm) 。
为了满足上述两点要求,数字签名体系必须满足两条基本假设:A 签名密钥是安全的,只有其拥有者才能使用;B 使用签名密钥是产生数字签名的唯一途径。
数字签名技术在具体工作时,首先发送方对信息施以数学变换,所得的信息与原信息惟一对应;在接收方进行逆变换,得到原始信息。只要数学变换方法优良,变换后的信息在传输中就具有很强的安全性,很难被破译、篡改。这一个过程称为加密,对应的反变换过程称为解密。
2.3基本算法
数字签名的算法很多, 应用最为广泛的三种是:Hash 签名、DSS 签名和RSA 签名。
1、Hash 签名
Hash 签名不属于强计算密集型算法,应用较广泛。它可以降低服务器资源的消耗, 减轻中央服务器的负荷。Hash 的主要局限是接收方必须持有用户密钥的副本以检验签名, 因为双方都知道生成签名的密钥,较容易攻破,存在伪造签名的可能。
2、DSS 和RSA 签名
DSS 和RSA 采用了公钥算法,不存在Hash 的局限性。RSA 是最流行的一种加密标准,许多产品的内核中都有RSA 的软件和类库。早在Web 飞速发展之前,RSA 数据安全公司就负责数字签名软件与Macintosh 操作系统的集成, 在Apple 的协作软件PowerTalk 上还增加了签名拖放功能,用户只要把需要加密的数据拖到相应的图标上,就完成了电子形式的数字签名。与DSS 不同,RSA 既可以用来加密数据,也可以用于身份认证。和Hash 签名相比,在公钥系统中,由于生成签名的密钥只存储于用户的计算机中,安全系数大一些。三.数字签名的实现
3.1用非对称加密算法和单向散列函数进行数字签名
(1)原理:此方法使用两个密钥(公开密钥和私有密钥)分别对数据进行加密和解密。如果用公开密钥对数据进行加密,只有用对应的私有密钥才能进行解密;如果用私有密钥对数据进行加密,则只有用对应的公开密钥才能解密。
(2)签名和验证过程:①发送方首先用公开的单向散列函数对报文进行一次变换,得到数字签名,然后利用私有密钥对数字签名进行加密后附在报文之后一同发出。②接收方用发送方的公开密钥对数字签名进行解密变换,得到一个数字签名的明文。发送方的公钥是由一个可信赖的技术管理机构即验证机构(C A ) 发布的。③接收方将得到的明文通过单向函数进行计算,同样得到一个数字签名,再将两个数字签名进行对比,如果相同,则证明签名有效,否则无效。
(3)特点:这种方法使任何拥有发送方公开密钥的人都可以验证数字签名的正确性。由于发送方私有密钥的保密性,使得接收方既可以根据验证结果来拒收该报文,也能使其无法伪造报文签名及对报文进行修改。原因是数字签名是对整个报文进行的,是一组代表报文特征的定长代码,同一个人对不同的报文将产生不同的数字签名。这就解决了银行通过网络传送一张支票,而接收方可能对支票数额进行改动的问题,也避免了发送方逃避责任的可能性。
3.2用对称加密算法和仲裁者进行数字签名
(1)原理:此方法所用的加密密钥和解密密钥通常是相同的,即使不同也可以很容易地由其中的任意一个推导出另一个。在此算法中,加、解密双方所用的密钥都要保守秘密。由于计算速度快而广泛应用于对大量数据如文件的加密过程中,如RD4和DES 。
(2)签名和验证过程。仲裁者是可信的第三方T ,他能同时与发送方A 和接收方B 通信,而且他和发送方A 共享一个密钥K 1,和接收方B 也共享另一个不同的密钥K2。①A 用K 1加密他准备发送给B 的消息,并把它传送给T 。②T 对消息进行解密,和他收到A 消息的声明,一起用K2加密,(下转第93页)
2010年第5期福建电脑
93
行运算中的正数都必须小于64位,因此需专用方法来处理大数,最简单的方法是采用数组,但1024位的大数用十进制表示也需要300多位,效率很低,如用二进制表示则效率更低。
比较有效的方法是采用n 进制的数组,对32位机而言n 为32是比较合适的选择。这样对于各种运算最多只需要进行322
次循环。在数字签名实现方案中采用了0x100000000进制的方法。
幂模运算是RSA 算法的核心,模乘运算A*B%N的运算过程中,如直接进行计算则会产生1024位中间结果,需动态分配内存,否则会造成数组空间增加1倍,而动态分配内存会造成大数存储的不连续性,为避免以上两个问题,可采用图2所示的计算方法:
2.3数字签名方案的实现
数字签名方案的实现流程图如图3所示:
图3数字签名方案实现流程图
图2模乘运算流程图
2.2对文档的数字签名
信息发送者对Word 、Excel 、txt 等文档进行数字签名的过程
主要包括:读取明文的信息摘要、对信息摘要进行数字签名、在原文中附加签名内容。
信息接受者在获得文档后对经过数字签名的文档进行认证。确认文档为原始文档。如果文档被篡改则不能通过认证。
读取明文的信息摘要通过SHA_1(哈希_1)算法计算散列值的方法。对于不同的文档读取明文信息的方法略有不同,对于txt 文档,读取方式相对比较简单,可以采用直接读取文档字符,然后采用SHA_1算法即可解决。但对于Office 相关的文档相对比较复杂,Office 办公软件是基于com 接口的,其中相关文档的格式并未公布,故无法直接获得其相关内容,本文采用在读取Office 文件时直接读取相关字节码,然后对字节码进行数字签名,再采用写文件的方式将字节码转换成Office 相关文件,认证过程以同样的方法实现。(上接第66页)
数字签名方案在VC6.0环境中实现,采用面向对象的程序设计方法,分别构造了CBigInt 类和CRSA 类,其中CBigInt 类主要完成对大数的各种运算,CRSA 类主要完成素性测试、密钥生成等,主要类均以文件形式处理,以提高软件的复用性。该过程使用3DES_RSA混合算法,并实现了可视化对文件的数字签名。3、结论
本文讨论了基于3DES_RSA对文档进行数字签名的技术与方法,并在方案设计过程中充分考虑了可能对数字签名过程中对签名速度的影响因素,实现了对Word 、Excel 和txt 等不同的文档实现了数字签名,并实现了对数字签名的认证,该方案在相同密钥长度下可有效提高了数字签名的安全性,同时对数字签名过程中运算速度的影响较小。
参考文献:
[1]DongXiaolei, Qian Haifeng, Cao, Zhenfu. Provably secure RSA-type signature based on conic curve. Wireless Communications and Mobile Computing [J],2009(2):217-225.
[2]TangShaohua. Simple secret sharing and threshold RSA signature schemes. Journal of Information and Computational Science [J],2004(1):259-262.
[3]XuQiu-Liang, Chen, Tzer-Shyong. An efficient threshold RSA digital signature scheme. Applied Mathematics and Computation [J],2005(6):25-34.
[4]BaoFeng, Lee ChengChi, Hwang, Min Shiang. Cryptanalysis and im -provement on batch verifying multiple RSA digital signatures. Applied Mathematics and Computation[J],2006(1):1195-1200.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
并把加密后的加密包传给B 。③由于T 是可信的,而密钥K2是B 和T 共享的,B 可以解密此消息,而且B 可以相信消息是从A 那里来的。
(3)特点:这个协议是可行的,但是缺点在于T 必须绝对可信,而且他的秘密密钥数据必须绝对安全,但做到这些是很困难的。
四.数字签名的发展
数字签名技术作为信息安全的一项重要技术,其应用领域也日益广泛。伴随着计算机网络的飞速发展,许多领域对数字签名技术提出了新的应用需求。目前应用于一些特殊场合具有特殊用途的数字签名需求正在逐步增长。如防失败签名(Fail-stop)将防范拥有充足计算资源的攻击者;盲签名(BlindSignature) 将更为广泛地用于选举投票和数字货币协议中;而群签名(Group-oriented Signature) 在网上大规模的集团采购中会发挥更加重要的作用,将显著降低电子商务交易的成本,大大提高交易的效率。
数字签名在电子商务中应用的前途是光明的,但道路依然曲折,安全问题是阻碍电子商务广泛应用的最大问题,改进数字
签名在内的安全技术措施、确定CA 认证权的归属问题十分关键。
参考文献:
[1]YvoDesmedt, Yair Franke.l Threshold cryptosystems[M].Lecture Notes in Computer Science, 435:307-315.
[2]MihirBellare,SaraMiner.A forward-secure digital sig-nature scheme [R].volume 1666of Lecture Notes inComputerScience.
[3]AmirHerzberg,Markus Jakobsson, Stanis law Jareck,iHugoKrawczyk, MotiYung. Proactive public key and sig -nature systems [R].In Fourth ACM Conference on Com -puter and Communication Security, 1997; ACM,Apri:l100
[4]程兴国, 王蔚然; 一种有效地结合数字签名与数字水印的算法[J];福建电脑;2004年11期
[5]李如忠; 数据加密和数字签名技术在局域网中的应用[J];计算机应用研究;2004年05期