基于椭圆曲线的软件加壳保护方案
来源:用户上传
作者: 田润芙 魏晓锋
[摘要] 结合软件加壳、脱壳技术,提出了一种基于椭圆曲线数字签名算法的软件保护方案,该方案利用加壳技术将密码信息和验证部分嵌入到软件中,用户输入的密钥经过验证正确后才能安装该软件。
[关键词] 数字签名算法 加壳保护 椭圆曲线密码体制
为了保护自己软件的技术内核不被他人轻易盗用,软件开发人员使用了各种保护技术来保障软件版权不被侵犯。目前,软件保护方案可以分成两类:一类是依靠硬件加密的保护方案,另一类是软加密方案。由于前者成本高,所以大部分价格相对较低的商业软件和共享软件采取软加密方案。
软加密方案常利用系统的一些特征码来生成注册码,并以此来验证用户的合法性。为了克服在软加密方案中,破解者用调试软件跟踪到比较和跳转的位置,然后强行将跳转地址改为程序继续执行的地址,从而实施破解这些缺点,加壳软件应运而生。
一、壳技术和相关原理
在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的代码被称为“壳”。加壳就是把一段外壳程序附加到应用程序中,并把程序的执行入口指向外壳程序中。加壳后的文件执行时,外壳程序先于程序运行拿到控制权,首先执行;脱壳的基本思想是验证密码。
二、基于椭圆曲线数字签名算法
椭圆曲线数字签名算法(ECDSA)是利用了由美国NIST和NSA设计的一种安全Hash算法,并提出的一种新的数字签名技术,其数学原理是基于椭圆曲线离散对数问题的难解性。
1.系统的建立和密钥生成
(1)系统的建立:选取一个基域上选取椭圆曲线E及E上阶为素数n的基点是椭圆曲线E的参数。则我们已经建立了椭圆曲线公钥密码系统,系统参数为。
(2)密钥的生成:系统建成后,每个用户各自产生自己的密钥:①用户A随机选取一个整数d,其中;②然后计算:Q=dG,如果Q 是无穷远点或G,则需重新选择d;③将d、Q保存。
2.数字签名的加密过程
假设B要把签名信息m发送给A,则B首先将信息原文用哈希算法求得数字摘要e=h(m),然后进行如下操作:(1)用户B找出A的公钥Q,然后随机选取一个整数k,其中,计算;(2)计算:;(3)计算:;(4)把生成的数字签名(P,c)发送给A。
2.3数字签名的解密过程
当A 收到B 发送来的数字签名(P,c)后,用自己的私钥d进行如下解密操作:
(1)A计算:,因为;(2)然后计算:;从而恢复出数字签名信息e。
三、基于椭圆曲线的软件加壳保护方案
在本方案中通过设计一个加“壳”程序,将用户密码信息和验证模块加入到应用软件安装程序中,在安装文件执行时首先执行该用户密码信息和验证模块。
1.密码的生成过程
生成过程如下:(1)在有限域Fq上的一条安全的椭圆曲线E选取一个基点;(2)随机选取一个整数d,其中,计算Q=dG,如果Q是无穷远点或G,则需重新选择d,否则Q为公钥,d为私钥;(3)保存d和Q。
2.数字签名的加密过程
在本方案中,密码m为生成的固定比特长的随机整数。将m用哈希算法求得数字摘要e,e=h(m),然后进行如下操作:(1)随机选取一个整数k,其中,计算;(2)计算:;(3)计算:;(4)最后生成数字签名信息为(P,c)。
3.数字签名的验证过程
(1)用户计算:,因为;(2)然后计算:;从而恢复出数字签名信息;(3)如果则接受签名,否则拒绝签名。
四、安全性分析
本方案是基于椭圆曲线数字签名算法通过对软件进行加壳保护的一种方法,其安全性建立在椭圆曲线密码体制的安全性之上,比基于有限域上的离散对数问题的公钥密码体制更安全,即在有限域上,已知P、Q 在椭圆曲线E上的有理点,要寻找一个,使得Q=dP,这是很难解的。从上面算法可知,在解密过程中,要求出,必须知道,而要知道,必须知道dP,或者必须知道kQ,而知道G、Q、P,要求出用户A的私钥d或随机整数k,这相当于求解椭圆曲线离散对数问题,就现有的计算技术和能力来说,如果椭圆曲线公钥密码系统中的椭圆曲线是随机选取的,而且它的阶包含有大素数因子,那么这是一个很难求解的问题。也就是必须求逆运算,这是一个很费时和复杂的过程。
五、结束语
正如柯克霍夫原则所说,密码系统的安全性不应取决于不易改变的算法,而应只取决于可随时改变的密钥。在本方案中,密码生成算法在计算上是安全的,这一点已经有理论证明并经受了实践的检验,所以其安全性是满足要求的。当然,该技术只是壳的一部分,还要和其他技术如:反跟踪、反汇编相结合才能达到真正的保护软件的目的。
参考文献:
[1]Anon. Standards for Efficient Cryptography Group, SEC 1: Elliptic Curve Cryptography: Version 1.5[EB /OL]. http: / /www.secg. org/download / aid - 401 / sec1. pdf
[2]张林赵勇刘吉强韩臻:基于椭圆曲线数字签名算法的序列号软件保护方案[J].中国电子科学研究院学报:2006,1(1):54~57
[3]夏绍春易波刘威:软件加壳与脱壳技术的实现[J].现代计算机:2004(183):78~81
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
转载注明来源:https://www.xzbu.com/3/view-1493341.htm