RSA数字签名算法在软件加密中的应用
2018-06-22◆黄硕
◆黄 硕
RSA数字签名算法在软件加密中的应用
◆黄 硕
(武警吉林省总队 吉林 130012)
互联网发展速度过快,软硬件更新换代的周期越来越短,智能化手机的不断普及给我们生活带来方便的同时,也给我们个人信息带来了泄露风险。正因为如此,相关专家对加密算法进行着不断深入的研究。数字签名算法是目前保护软件信息最有效的算法,它能够给用户提供多种加密方式,当用户在进入软件的时候不仅需要注册码和密码,另外还需要用户自己瞬时的数字签名,这种方式大大地增加了算法的可靠性,在防止软件非法注册方面有着得天独厚的优势。本文将从数字签名算法的原理出发,介绍数字签名算法的几大种类,对数字签名算法在实际中的应用案例进行分析,为用户能够更好理解数字签名算法提供理解思路。
注册码软件;加密;数字签名算法
0 前言
计算机软件是一个能够让用户借助计算机进行操作实现自己想法的一个数据库集合。但是随着网络的快速发展,计算机软件在安全方面的更新速度相对就比较缓慢了,这就给了许多网络黑客一个可乘之机,他们通过一系列非法手段对软件的注册进行破解,然后再将这些破解后的软件卖给用户,从中谋取暴力,给软件开发企业带来了巨大损失。但是当前新型的数字签名算法可以有效地解决这个问题,当用户在进行软件的购买时,软件供应厂商会给用户提供注册码和使用码,同时也会要求用户写下自己的亲笔签名,当用户在进行软件使用的时候,软件会定期要求用户输入自己的签名,内部程序对前后的签名进行对比,如果融合率在85%以上,用户就可以放心使用,如果融合率低于85%就会给用户三次输入机会,三次机会在一次校验中如果全部是低融合率,那么软件就会自动锁定。这个算法能够很好地避免黑客的入侵破解,另外在很大程度上也为用户的信息提供了强有力的安全保障。
1 RSA数字签名算法
1.1 RSA数字签名算法的基本概念
数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性、认证数据来源和抗否认,遵循OSI参考模型、私钥签名和公钥验证。也是非对称加密算法和消息摘要算法的结合体,常见的数字签名算法主要有RSA、DSA、ECDSA三种,密钥的产生和转换都是一样的,包括在售的所有SSL数字证书、代码签名证书、文档签名以及邮件签名大多都采用RSA算法进行加密。
1.2 RSA数字签名算法的基本原理
如果把密码学里的数字签名看成有两个输入、一个输出的函数,那么私钥是x,被签名的消息是y, 得出来的签名z是跟x和y同时绑定的,注意是“同时”。所以,用同样的私钥给不同的文件或者消息签名,得出来的签名是不同的。如果函数内部在每次执行签名的时候还会产生一个随机数的话,那么这个随机数通常也会直接或者间接成为z的一部分,这样的话,即使文件相同,在不同时间进行的签名也会不同。否则,签名就很容易被伪造到另一份文件上了。简单来说,就可以理解为,即使是你自己用同一支笔给文件签名,签在两份文件上的签名也并不是完完全全相同。
详细来说,签名用的是一个算法非常复杂的钥匙函数(d,e)。而范本N是可变的,是不断改变着的两个素数的乘积。假设d是用户自己设置数字签名所获得的一把钥匙,用户在使用软件的时候会用d来验证签名。e是软件本身程序用来验证签名的另一把钥匙,也就是公钥。e、d两者满足公式:
产生签名 Sign(m, d),对于消息m来说,签名是验证公式:
如果用户给出的数字签名能够达到一定的契合度,那么这个数字签名就是合法的签名了,反之,这个数字签名就不能被软件使用,需要另外的签名组合。那么怎么保证签名信息的安全呢?软件内部的应用程序会根据用户给出的合法签名用上面的公式进行复杂的计算,形成一个公钥和一个私钥。这两个密钥的范本相当大,且验证的时间非常短,所以目前的计算机处理器速度根本无法进行破解。RSA的椭圆曲线主要是提供了更难计算离散对数问题的群和对B Map的支持。原则上来说,验证一个签名,就是用一个函数把公钥、消息、签名当输入,计算一个特定的“等于”关系。
2 RSA数字签名算法的软件加密应用
RSA数字签名算法经常会采用一对一匹配的方式对软件进行加密,每个软件会生成不同的序列号,将这个序列号输入软件自带的解码器,可以生成一套注册码,用这个注册码就能够将软件激活,同时RSA还会将软件如用户计算机的物理地址连接起来,由于物理地址的唯一性,软件的使用者也就变得唯一了。另外,软件也会向用户索要数字签名,这是该算法最核心的部分,用户进行数字签名之后,软件后台程序会自动运行,形成一个公钥和一个私钥,一个保存在软件本身的应用程序中,另一个则由用户保存,形成一把钥匙开一把锁的局面,不仅能够保证软件的安全,也能够保证用户创作的安全。
2.1序列号的产生
序列号的产生是通过RSA独有的算法改进计算得来的,这个算法需要用户计算机的物理地址和某一硬件编码作为样本,所以得到的序列号是唯一且固定的。序列号是通过软件自动生成的,这样的优势在于可以节省用户的时间,另外利用RSA数字签名算法将所加入数据进行加密,从而形成软件的注册序列号。
2.2注册码的生成
序列号生成之后,用户下一步就需获取注册码。首先,用户可采取网络或是电话等方式将所生成的序列号以及版本信息和电子邮箱等基本信息向开发商提供,然后开发商利用RSA数字签名算法当中的私钥来加密用户信息,从而获得软件注册码。
2.3引入RSA数字签名算法
首先将计算机的序列号及网卡的MAC地址提取出来以形成公开信息m,然后利用RSA数字签名算法当中的私人密钥d来加密公开信息m,从而得到密文s;最后利用RSA数字签名算法当中的公开密钥e来解密密文s,从而得到明文m。
2.4密钥数据库管理
就理论而言,不管是哪种加密方法都是有可能被破解的,只是不同加密方法的破解难度有所不同。为加强软件的破解难度,可利用数据库存来存储公开密钥及私密密钥,并定期更换,同时利用Access数据库以对用户信息进行保存,并存储各版本软件加密密钥,从而达到更新密钥的目的,进而提高软件的破解难度。
3 结论
利用RSA数字签名算法对软件进行加密,同时采取数据库管理方式定期更新密钥,可有效提高软件的破解难度,避免软件被非法复制或传播,保障了开发者及开发商的合法权益。但就理论而言,RSA数字签名算法也不能保证软件的绝对安全,因此对于RSA数字签名算法在软件加密当中的应用还需进行深入研究,以不断完善现有加密方法,同时开发新的软件保护技术,将防止盗版工作做得更好,促进软件行业的健康发展。
[1]佟晓筠,王翥,郭长勇等.基于RSA等算法软件加密技术的研究与实现[J].微处理机,2003.
[2]闫乐林,蔡平胜,梁晨.基于RSA的双重加密技术在软件注册中的应用研究[J].网络安全技术与应用,2006.
[3]刘传领,范建华.RSA非对称加密算法在数字签名中的应用研究[J].通信技术,2009.