一种基于国密算法的动态链接库保护方法及其系统技术方案

技术编号:25480023 阅读:88 留言:0更新日期:2020-09-01 23:01
本申请实施例提供一种基于国密算法的动态链接库保护方法,包括:使用国密SM2算法生成公钥a和对应的私钥aa,使用所述私钥aa对目标动态链接库进行加密;判断目标应用程序是否为由授权工具开发的合法应用程序,所述授权开发工具用于编写和编译合法的应用程序,所述合法的应用程序运行时将调用所述目标动态链接库;确定所述目标应用程序为由授权工具开发的合法应用程序后,使用init函数获取所述目标应用程序的公钥a’,当所述公钥a’与所述公钥a相同时,使用所述公钥a解密所述目标动态链接库,运行所述目标应用程序,当所述公钥a’与所述公钥a不相同时,退出所述目标应用程序的运行。

【技术实现步骤摘要】
一种基于国密算法的动态链接库保护方法及其系统
本申请涉及互联网软件保护
,特别是涉及一种基于国密算法的动态链接库保护方法及其系统。
技术介绍
随着移动互联网的发展,信息流通和信息分享越来越快捷,各种应用软件百花齐放,但软件版权被侵犯的案例却层出不穷,屡禁不止。为了保护原创软件版权,企业会通过授权Licence的方式对软件的使用进行限制,比较常见的如Microsoft推出的Office办公软件,Oracle公司推出的数据库产品等。但利用授权Licence的方法无法解决动态链接库文件被拷贝的风险,而且该方式不适合大规模物联网终端设备的部署。除此之外,单纯对动态链接库源码进行代码混淆、加密以及加壳处理也是比较常用的保护方法,能够防止动态库被反编译,保护源码。但代码混淆、加密和加壳处理只对动态库进行加固,没有体现唯一身份识别与Licence授权的作用,而且该方法也会直接影响动态库所调函数的执行速度,不同平台,不同系统,其兼容性也不尽相同。目前方案存在的缺点主要体现在以下几个方面:对开发工具采用licence授权方式,只能保证开发工具使用者的唯一性,无法阻止第三方开发者拷贝核心库。由于第三方开发者可以通过直接调用的方式使用核心库函数,所以该方法容易导致核心库被盗版使用。对动态库源代码混淆、加密和加壳保护,虽然能够增加第三方反编译的难度,起到一定的保护效果,但在离线情况下不具备licence授权功能,无法对软件版权进行付费保护,从而导致版权被滥用。除此之外,也有方法通过重新定义动态库加载地址,改变动态库在内存中的入口地址,在每次加载前进行动态库身份验证,实现动态库、开发工具和应用程序三者间的绑定。该方法虽然达到保护动态库的目的,但每个应用程序所安装的平台以及平台配置的资源不同,导致内存空间大小各异,因此,该方法需要根据平台进行定制化配置操作,不适合应用程序的大规模部署。因此,目前继续一种对动态链接库的保护方法,能够合理有效的进行软件版权的保护。
技术实现思路
本申请实施例中一种基于国密算法的动态链接库保护方法及其系统,,能够合理有效的进行软件版权的保护。第一方面,提供一种基于国密算法的动态链接库保护方法,包括:使用国密SM2算法生成公钥a和对应的私钥aa,使用所述私钥aa对目标动态链接库进行加密;判断目标应用程序是否为由授权工具开发的合法应用程序,所述授权开发工具用于编写和编译合法的应用程序,所述合法的应用程序运行时将调用所述目标动态链接库;确定所述目标应用程序为由授权工具开发的合法应用程序后,使用init函数获取所述目标应用程序的公钥a’,当所述公钥a’与所述公钥a相同时,使用所述公钥a解密所述目标动态链接库,运行所述目标应用程序,当所述公钥a’与所述公钥a不相同时,退出所述目标应用程序的运行。结合第一方面,在第一方面的第一种可能的实现方式中,所述判断目标应用程序是否为授权工具开发的合法应用程序,包括:使用国密SM2算法生成公钥c和对应的私钥cc;获取所述授权开发工具的序列号文件;使用国密SM3算法对所述序列号文件进行摘要处理,生成对应的第一摘要文件,使用私钥cc分别对所述公钥a、所述序列号文件和所述第一摘要文件进行加密;对所述目标应用程序相应的序列号文件进行SM3摘要操作,得到第二摘要文件,当所述第一摘要文件与所述第二摘要文件一致时,确定所述目标应用程序为由所述授权开发工具开发的合法营业程序;当所述第一摘要文件与所述第二摘要文件不一致时,确定所述目标应用程序不是由所述授权工具开发,所述应用程序为不合法应用程序。结合第一方面及其上述实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:为所述授权开发工具分配序列号,并生成序列号文件,所述序列号文件为txt文件;安装所述授权开发工具的安装包,所述开发工具的安装包包括由私钥cc加密的所述公钥a、由私钥cc加密的所述序列号文件和由私钥cc加密的所述第一摘要文件,其中,合法的应用程序由所述授权开发用工具使用SM2解密库和SM3算法库以静态链接.lib或者.a的方式编译,所述合法的应用程序资源目录包括加密后的所述序列号文件和加密后的所述摘要文件。结合第一方面及其上述实现方式,在第一方面的第三种可能的实现方式中,当确定所述目标应用程序为由授权工具开发的合法应用程序后,所述方法还包括:使用初始化函数void__attribute__((constructor))init_function(void)调用所述目标动态链接库。结合第一方面及其上述实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:将所述公钥a预先配置于所述授权开发工具的安装包。第二方面,一种基于国密算法的动态链接库保护系统,其特征在于,所述系统包括包括处理器和存储器,所述存储器用于存储处理器的执行指令,所述处理器用于:使用国密SM2算法生成公钥a和对应的私钥aa,使用所述私钥aa对目标动态链接库进行加密;判断目标应用程序是否为由授权工具开发的合法应用程序,所述授权开发工具用于编写和编译合法的应用程序,所述合法的应用程序运行时将调用所述目标动态链接库;确定所述目标应用程序为由授权工具开发的合法应用程序后,使用init函数获取所述目标应用程序的公钥a’,当所述公钥a’与所述公钥a相同时,使用所述公钥a解密所述目标动态链接库,运行所述目标应用程序,当所述公钥a’与所述公钥a不相同时,退出所述目标应用程序的运行。结合第二方面,在第二方面的第一种可能的实现方式中,所述处理器还用于:使用国密SM2算法生成公钥c和对应的私钥cc;获取所述授权开发工具的序列号文件;使用国密SM3算法对所述序列号文件进行摘要处理,生成对应的第一摘要文件,使用私钥cc分别对所述公钥a、所述序列号文件和所述第一摘要文件进行加密;对所述目标应用程序相应的序列号文件进行SM3摘要操作,得到第二摘要文件,当所述第一摘要文件与所述第二摘要文件一致时,确定所述目标应用程序为由所述授权开发工具开发的合法营业程序;当所述第一摘要文件与所述第二摘要文件不一致时,确定所述目标应用程序不是由所述授权工具开发,所述应用程序为不合法应用程序。结合第二方面,在第二方面的第二种可能的实现方式中,所述处理器还用于:为所述授权开发工具分配序列号,并生成序列号文件,所述序列号文件为txt文件;安装所述授权开发工具的安装包,所述开发工具的安装包包括由私钥cc加密的所述公钥a、由私钥cc加密的所述序列号文件和由私钥cc加密的所述第一摘要文件,其中,合法的应用程序由所述授权开发用工具使用SM2解密库和SM3算法库以静态链接.lib或者.a的方式编译,所述合法的应用程序资源目录包括加密后的所述序列号文件和加密后的所述摘要文件。结合第二方面,在第二方面的第三种可能的实现方式中,当确定所述目标应用程序为由授权工具开发的合法应用程序后,所述处理器还用于:使用初始化函数void__attribute__((constructor))init_function(void)调用所述目标动态链接库。本文档来自技高网
...

【技术保护点】
1.一种基于国密算法的动态链接库保护方法,其特征在于,包括:/n使用国密SM2算法生成公钥a和对应的私钥aa,使用所述私钥aa对目标动态链接库进行加密;/n判断目标应用程序是否为由授权工具开发的合法应用程序,所述授权开发工具用于编写和编译合法的应用程序,所述合法的应用程序运行时将调用所述目标动态链接库;/n确定所述目标应用程序为由授权工具开发的合法应用程序后,使用init函数获取所述目标应用程序的公钥a’,当所述公钥a’与所述公钥a相同时,使用所述公钥a解密所述目标动态链接库,运行所述目标应用程序,当所述公钥a’与所述公钥a不相同时,退出所述目标应用程序的运行。/n

【技术特征摘要】
1.一种基于国密算法的动态链接库保护方法,其特征在于,包括:
使用国密SM2算法生成公钥a和对应的私钥aa,使用所述私钥aa对目标动态链接库进行加密;
判断目标应用程序是否为由授权工具开发的合法应用程序,所述授权开发工具用于编写和编译合法的应用程序,所述合法的应用程序运行时将调用所述目标动态链接库;
确定所述目标应用程序为由授权工具开发的合法应用程序后,使用init函数获取所述目标应用程序的公钥a’,当所述公钥a’与所述公钥a相同时,使用所述公钥a解密所述目标动态链接库,运行所述目标应用程序,当所述公钥a’与所述公钥a不相同时,退出所述目标应用程序的运行。


2.根据权利要求1所述的方法,其特征在于,所述判断目标应用程序是否为授权工具开发的合法应用程序,包括:
使用国密SM2算法生成公钥c和对应的私钥cc;
获取所述授权开发工具的序列号文件;
使用国密SM3算法对所述序列号文件进行摘要处理,生成对应的第一摘要文件,使用私钥cc分别对所述公钥a、所述序列号文件和所述第一摘要文件进行加密;
对所述目标应用程序相应的序列号文件进行SM3摘要操作,得到第二摘要文件,当所述第一摘要文件与所述第二摘要文件一致时,确定所述目标应用程序为由所述授权开发工具开发的合法营业程序;
当所述第一摘要文件与所述第二摘要文件不一致时,确定所述目标应用程序不是由所述授权工具开发,所述应用程序为不合法应用程序。


3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
为所述授权开发工具分配序列号,并生成序列号文件,所述序列号文件为txt文件;
安装所述授权开发工具的安装包,所述开发工具的安装包包括由私钥cc加密的所述公钥a、由私钥cc加密的所述序列号文件和由私钥cc加密的所述第一摘要文件,其中,合法的应用程序由所述授权开发用工具使用SM2解密库和SM3算法库以静态链接.lib或者.a的方式编译,所述合法的应用程序资源目录包括加密后的所述序列号文件和加密后的所述摘要文件。


4.根据权利要求3所述的方法,其特征在于,当确定所述目标应用程序为由授权工具开发的合法应用程序后,所述方法还包括:
使用初始化函数void__attribute__((constructor))init_function(void)调用所述目标动态链接库。


5.根据权利要求4所述的方法,其特征在于,所述方法还包括:将所述公钥a预先配置于所述授权开发工具的安装包。


6.一种基...

【专利技术属性】
技术研发人员:张建成郭峰鹿全礼任强宁伟马晓红宋丽华许志国刘鲲鹏朱瑞新于小苇张圆圆张硕
申请(专利权)人:山东正中信息技术股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1