CN101038615A - 一种直接从软件中任意分离代码到加密锁实现软件版权保护的方法 - Google Patents
一种直接从软件中任意分离代码到加密锁实现软件版权保护的方法 Download PDFInfo
- Publication number
- CN101038615A CN101038615A CNA2007100864598A CN200710086459A CN101038615A CN 101038615 A CN101038615 A CN 101038615A CN A2007100864598 A CNA2007100864598 A CN A2007100864598A CN 200710086459 A CN200710086459 A CN 200710086459A CN 101038615 A CN101038615 A CN 101038615A
- Authority
- CN
- China
- Prior art keywords
- code
- encryption lock
- fritter
- lock
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提出了一种“时间范围和动态代码注入相结合”的技术,能够直接从可执行文件中任意分离代码到加密锁,完全不需要软件开发者学习和掌握加密锁的使用方法和软件加密技术,能从根本上很好地解决当前加密锁技术存在的不足。本发明所采用的技术方案是:直接把可执行文件中的任意代码分离到智能卡加密锁内,在智能卡加密锁内设置一个时钟计时器、随机数发生器,在可执行文件中被分离代码后的空白处填充与加密锁进行通讯的交互代码;加密锁在运行时把分离到锁内的一段需要连续执行的代码采用特定的协议和算法进行动态地分解、加密和保护,产生若干个小块,并根据一个小块在正常执行时所需的时间范围来决定向外释放相邻的下一个小块,若交互代码向加密锁发出的索取相邻下一个小块的请求在正常的时间范围内到达,则加密锁向外释放有效信息,否则向外释放无效信息;并且,在加密锁与交互代码之间加入一层加密锁过滤驱动程序,由加密锁、交互代码和过滤驱动程序共同采用特定的协议和算法对通讯数据进行安全保护处理,以防止通讯数据在通讯链路以及在系统内存中被非法监控和截取。
Description
技术领域
本发明属于计算机安全领域,尤其涉及到计算机软件版权保护的加密锁。
背景技术
在现今的信息化时代,以计算机为核心的信息处理技术处于绝对的领导地位,对人类社会的发展、国民经济的提高和人们生活的改变影响十分巨大。而计算机软件又是计算机系统的灵魂,控制和指挥机器的各种操作。
自从有软件诞生以来,软件盗版便与此同生,严重损害了劳动者的正当利益,扰乱了社会经济秩序。与此同时,与软件盗版相抗争的软件版权保护产品也相应而生,主要是最开始的纯软件加密和后来的加密锁。加密锁随着技术的不断进步和发展在很大程度上有力打击了软件盗版,有效地保护了劳动者的知识产权和合法利益。
加密锁是插在计算机串口、并口或USB口上的一个硬件设备,用于与被保护软件通讯以确定软件是否合法,以此来决定软件是否继续运行。加密锁的发展大致经历了逻辑电路加密锁、存储器加密锁、逻辑电路加存储器加密锁、可编程加密锁、智能卡加密锁五个阶段。时至今日,可编程和智能卡相结合的技术在相当的程度上保护了软件的安全,极大地提高了解密者的难度,相对以前来说具有质的突破,代表着当前的主流技术。该技术的特征是把被保护软件中进行算术运算和逻辑运算的代码分离到智能卡中,利用智能卡存储空间大、运算能力强和安全的特点,在与系统相对独立的智能卡内进行处理,这样使解密者无法进行跟踪和分析。
这一技术在计算机软件版权保护领域沿用了很长时间,由于该技术本身存在的缺陷以及人们长期的使用,仍发现该技术当前主要存在以下不足:
1、只能从被保护软件中分离算术运算代码和逻辑运算代码到加密锁。但是大多数软件很少具有纯运算的代码,就是有也可以被解密者使用软件进行防真或模拟;
2、需要软件作者花费大量的时间去学习和掌握加密锁的使用方法和软件加密技术。
3、采用该技术的加密锁所提供的开发环境接口并不完全支持现今市面上各种各样的程序开发环境。
发明内容
为了克服软件加密锁技术当前存在的严重不足,本发明提出了一种“时间范围和动态代码注入相结合”的技术,能够直接从可执行文件中任意分离代码到加密锁,完全不需要软件开发者学习和掌握加密锁的使用方法和软件加密技术,能从根本上很好地解决当前加密锁技术存在的不足。
本发明所采用的技术方案是:直接把可执行文件中的任意代码分离到智能卡加密锁内,在智能卡加密锁内设置一个时钟计时器、随机数发生器,在可执行文件中被分离代码后的空白处填充与加密锁进行通讯的交互代码;加密锁在运行时把分离到锁内的一段需要连续执行的代码采用特定的协议和算法进行动态地分解、加密和保护,产生若干个小块,并根据一个小块在正常执行时所需的时间范围来决定向外释放相邻的下一个小块,若向加密锁发出的索取相邻下一个小块的请求在正常的时间范围内到达,则加密锁向外释放有效信息,否则向外释放无效信息;并且在加密锁与交互代码之间加入一层加密锁过滤驱动程序,由加密锁、交互代码和过滤驱动程序共同采用特定的协议和算法对通讯数据进行安全保护处理,以防止通讯数据在通讯链路以及在系统内存中被非法监控和截取。
这样,该技术方案从根本上阻击了解密者的静态分析和动态跟踪,因为代码被分离到加密锁内使解密者没有分析对象;因为解密者分析一段代码所需的时间远远超过这段代码的执行时间,当加密锁判断请求在指定的时间范围内没有到达时则会向外释放无效信息,以此,极大地阻止了解密者使用各种动态跟踪调试工具对软件的破解。
本发明的有益效果是,极大地提高了加密锁的加密强度、抗破解能力和易用性,与当前技术特征相比具有本质的提高。
附图说明
图1表示的是:把程序文件中的代码任意分离到智能卡加密锁内实现软件版权保护的原理图;
图2表示的是:智能卡加密锁内的“分离代码处理引擎”如何对分离代码进行处理,并与程序文件中填充的“交互代码”交互,以向外释放源代码并执行的原理图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细地说明:
本发明所提出的智能卡加密锁L在原有基础上增加了时钟计时器和随机数发生器,主要包含有CPU、RAM、EEPROM、FLASH、I/O、时钟计时器和随机数发生器。其中,时钟计时器的功能用于计算加密锁把当前一块代码释放后到相邻的需要连续执行的下一块代码索取请求到达之间所用的时间;随机数产生器的功能用于产生随机数。
在图1中,一个程序文件F通常是由数据段、堆栈段和代码段构成,把代码段中的全部或部分代码分离出来,并根据功能的不同划分成各个功能模块即初始化模块A、事件处理模块B、C和D,再把各模块保存到智能卡加密锁L内的EEPROM中。并且,在被分离出代码的程序文件G的空白处填充与加密锁通讯的交互代码使其成为受保护的程序文件H,并在各个模块的入口点填充与加密锁交互的通讯代码,当程序文件H运行时,通讯代码A、B、C、D就会相应地被调用,这样由通讯代码向加密锁发出请求,经过加密锁过滤驱动程序到达加密锁,以加载并执行相应的源代码。
在加密锁的EEPROM中保存有分离代码处理引擎和分解后的功能模块A、B、C、D,当加密锁工作时,分离代码处理引擎和功能模块A、B、C、D加载到RAM,分离代码处理引擎中的分析模块、分解模块、通讯模块、保护模块、加解密模块根据特定的协议和算法对功能模块A、B、C、D进行动态地分解、加密、保护和释放,分解后产生小块的个数、小块的大小和对小块的加密算法都是随机确定的,分解模块对各个小块正常执行时间的范围进行确定和记录,随机数产生器产生与小块相对应的一系列随机数,最后由释放模块释放,通过加密锁过滤驱动程序对加密锁和交互代码之间的通讯数据在通讯链路上进行安全保护处理后,再交给交互代码读入内存并执行。释放模块从释放一个小块后开始计时,直到相邻的下一个小块索取请求到达为止,以此记录一块代码的实际运行时间。
在图2中,受保护的程序文件H在填充的交互代码处有通讯代码A、B、C、D,分别对应于被分离的功能模块A、B、C、D。在程序文件H运行时,与功能模块对应的通讯代码A、B、C、D会被相应地调用,通讯代码通过提供智能卡加密锁L的密码、动态内存单元、随机数、模块号这些参数创建一个请求,发送到智能卡加密锁L,以获取源代码并执行。
在智能卡加密锁L中,首先,分离代码处理引擎中的分析模块根据请求所提供的参数以及先前确定的小块正常执行时间范围和对应的随机数系列,对密码、动态内存单元、随机数、时间范围进行分析验证,检查提供的加密锁操作密码是否正确、检查随机数产生器记载的小块代码实际运行时间是否在正常时间范围内、检查和小块对应的随机数是否正确、检查指定的动态内存单元的值是否正确,若全部检查通过则确定请求合法,向外释放有效信息,否则向外释放无效信息。
其中,密码是指智能卡加密锁L的操作密码,向加密锁发出请求时必须提供正确的密码;动态内存单元是指加密锁与交互代码在正常、安全的运行环境下,系统内存中的数据在正常的运行状态下某指定存储单元的值,加密者事先知道该内存单元的地址及其值;随机数是分解模块在把一段代码分解成若干小块后调用随机数产生器产生的一系列和小块对应的随机数值,一段代码每执行一次就产生新的一系列随机数,每发出一个小块索取请求必需提供和该小块相应的随机数;时间范围很关键,正常执行时间是指小块代码事先在一个正常、安全的环境下运行所需的时间,实际运行时间是小块代码在实际运行中所占用的时间,释放模块从释放一个小块后开始计时,直到相邻的下一个小块索取请求到达为止,以此记录一块代码的实际运行时间。
若请求非法则调用释放模块向外释放垃圾代码。
若请求合法则调用分解模块,把相应的功能模块中在执行时需要连续的代码动态地分解成若干个小块a1、a2等等,分解成小块的个数及其大小是随机的。然后,通讯模块在每个小块的后面加上与智能卡加密锁L交互的通讯代码以获取相邻的下一个小块;再调用保护模块,在前基础上再加上自清除代码,自清除代码用于清除已执行的小块,以保证小块在执行完毕后毁灭;再调用加解密模块,对当前的小块进行加密,并在加密锁内记录该小块所对应的解密信息,所采用的加密算法是随机的。最后,调用释放模块把经过保护和加密的小块a1、a2等等释放出去,再经过加密锁过滤驱动程序在通讯链路进行安全保护处理,以此作为对请求的应答。
在实际运用中,对分解后的小块并不一定都加密,可以有的加密有的不加密;加密锁释放的解密代码可以只对当前小块解密,也可对相邻的下一小块或多个小块全部解密;释放模块在释放一系列小块时可随机交叉释放若干无效信息。
以上所述具体实施方式仅为本发明的优选实施例,本发明不限于上述实施例,对于本领域的一般技术人员而言,在不背离本发明原理即“直接把可执行文件中的任意代码分离到智能卡加密锁内,在智能卡加密锁内设置一个时钟计时器、随机数发生器,在可执行文件中被分离代码后的空白处填充与加密锁进行通讯的交互代码;加密锁在运行时把分离到锁内的一段需要连续执行的代码采用特定的协议和算法进行动态地分解、加密和保护,产生若干个小块,并根据一个小块在正常执行时所需的时间范围来决定向外释放相邻的下一个小块,若向加密锁发出的索取相邻下一个小块的请求在正常的时间范围内到达,则加密锁向外释放有效信息,否则向外释放无效信息;并且在加密锁与交互代码之间加入一层加密锁过滤驱动程序,由加密锁、交互代码和过滤驱动程序共同采用特定的协议和算法对通讯数据进行安全保护处理,以防止通讯数据在通讯链路以及在系统内存中被非法监控和截取。”的基础上所作的任何显而易见的改动,都属于本发明的构思和所附权利要求的保护范围。
Claims (6)
1、一种直接从软件中任意分离代码到加密锁实现软件版权保护的方法,其特征是:直接把可执行文件中的任意代码分离到智能卡加密锁内,在智能卡加密锁内设置一个时钟计时器、随机数发生器,在可执行文件中被分离代码后的空白处填充与加密锁进行通讯的交互代码;加密锁在运行时把分离到锁内的一段需要连续执行的代码采用特定的协议和算法进行动态地分解、加密和保护,产生若干个小块,并根据一个小块在正常执行时所需的时间范围来决定向外释放相邻的下一个小块,若向加密锁发出的索取相邻下一个小块的请求在正常的时间范围内到达,则加密锁向外释放有效信息,否则向外释放无效信息;并且在加密锁与交互代码之间加入一层加密锁过滤驱动程序,由加密锁、交互代码和过滤驱动程序共同采用特定的协议和算法对通讯数据进行安全保护处理,以防止通讯数据在通讯链路以及在系统内存中被非法监控和截取。
2、根据权利要求1所述的直接从软件中任意分离代码到加密锁实现软件版权保护的方法,其特征是:直接把可执行文件中的任意代码分离到智能卡加密锁内,任意代码是指全部代码或部分代码,或者不仅只是具有算术运算和逻辑运算功能的代码,而且还可以是具有其它任何功能的代码。
3、根据权利要求1所述的直接从软件中任意分离代码到加密锁实现软件版权保护的方法,其特征是:在智能卡加密锁内设置一个时钟计时器、随机数发生器,时钟计时器的功能用于计算加密锁把当前一块代码释放后到相邻的需要连续执行的下一块代码索取请求到达之间所用的时间,随机数产生器的功能用于产生随机数。
4、根据权利要求1所述的直接从软件中任意分离代码到加密锁实现软件版权保护的方法,其特征是:加密锁在运行时把分离到锁内的一段需要连续执行的代码采用特定的协议和算法进行动态地分解、加密和保护,产生若干个小块,采用以下协议和算法:
1)、被分解的一段代码在执行时必须是连续的,不具有人机交互或其它运行时间不确定的操作;
2)、分解成小块的个数是随机的;
3)、分解后小块的大小是随机的;
4)、对小块采用的加密算法是随机的;
5)、在小块中添加自清除代码,自清除代码用于清除已执行的小块,以保证小块在执行完毕后毁灭;
5、根据权利要求1所述的直接从软件中任意分离代码到加密锁实现软件版权保护的方法,其特征是:加密锁事先确定并记录一块代码在正常系统环境下运行所占用的时间范围,在运行时由时钟计时器记录从释放这块代码开始到加密锁接收到索取相邻的需要连续执行的下一块代码的请求为止所占用的实际运行时间,若请求在正常时间范围内到达,则加密锁向外释放有效信息,否则向外释放无效信息。
6、根据权利要求1所述的直接从软件中任意分离代码到加密锁实现软件版权保护的方法,其特征是:在加密锁与交互代码之间加入一层加密锁过滤驱动程序,由加密锁、交互代码和过滤驱动程序共同采用特定的协议和算法对通讯数据进行安全保护处理,以防止通讯数据在通讯链路以及在系统内存中被非法监控和截取,采用以下协议和算法:
1)、加密锁随机地向外释放无效数据;
2)、加密锁过滤驱动程序向交互代码或加密锁随机发送无效数据;
3)、加密锁过滤驱动程序修改通讯数据的传输地址;
4)、向加密锁发出请求时,必须提供密码、随机数和动态内存单元;密码是指智能卡加密锁L的操作密码;动态内存单元是指加密锁与交互代码在正常、安全的运行环境下,系统内存中的数据在正常的运行状态下某指定存储单元的值,加密者事先知道该内存单元的地址及其值;随机数是分解模块在把一段代码分解成若干小块后调用随机数产生器产生的一系列和小块对应的随机数值,一段代码每执行一次就产生新的一系列随机数,每发出一个小块索取请求必需提供和该小块相应的随机数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100864598A CN101038615A (zh) | 2007-03-12 | 2007-03-12 | 一种直接从软件中任意分离代码到加密锁实现软件版权保护的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100864598A CN101038615A (zh) | 2007-03-12 | 2007-03-12 | 一种直接从软件中任意分离代码到加密锁实现软件版权保护的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101038615A true CN101038615A (zh) | 2007-09-19 |
Family
ID=38889508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100864598A Pending CN101038615A (zh) | 2007-03-12 | 2007-03-12 | 一种直接从软件中任意分离代码到加密锁实现软件版权保护的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101038615A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261667B (zh) * | 2008-04-10 | 2011-05-18 | 北京深思洛克软件技术股份有限公司 | 一种软件保护方法 |
CN102880816A (zh) * | 2012-09-24 | 2013-01-16 | 江苏技术师范学院 | 基于片上系统多核融合的软件保护装置及工作方法 |
CN103020495A (zh) * | 2012-12-17 | 2013-04-03 | 马驹 | 一种嵌入式软件防盗版加密方法 |
CN103186729A (zh) * | 2013-03-26 | 2013-07-03 | 北京深思数盾科技有限公司 | 利用加密锁对软件进行保护的方法及加密锁 |
WO2014117668A1 (zh) * | 2013-02-01 | 2014-08-07 | 北京深思洛克软件技术股份有限公司 | 一种在安全环境中生成代码提高软件保护强度的方法 |
CN104408333A (zh) * | 2012-09-24 | 2015-03-11 | 江苏理工学院 | 一种基于片上系统多核融合的软件保护装置 |
WO2017050110A1 (zh) * | 2015-09-22 | 2017-03-30 | 上海斐讯数据通信技术有限公司 | 一种嵌入式系统的软件代码防盗方法及装置 |
CN107239316A (zh) * | 2017-04-20 | 2017-10-10 | 武汉斗鱼网络科技有限公司 | 一种函数的优化处理方法和装置 |
CN108280329A (zh) * | 2018-01-22 | 2018-07-13 | 台州风达机器人科技有限公司 | 一种用于软件运行的验证放行方法 |
CN109359451A (zh) * | 2018-11-12 | 2019-02-19 | 兴科迪科技(泰州)有限公司 | 一种基于安全控制盒容器的体系结构、方法和系统 |
-
2007
- 2007-03-12 CN CNA2007100864598A patent/CN101038615A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261667B (zh) * | 2008-04-10 | 2011-05-18 | 北京深思洛克软件技术股份有限公司 | 一种软件保护方法 |
CN104408333B (zh) * | 2012-09-24 | 2017-06-13 | 江苏理工学院 | 一种基于片上系统多核融合的软件保护装置 |
CN102880816A (zh) * | 2012-09-24 | 2013-01-16 | 江苏技术师范学院 | 基于片上系统多核融合的软件保护装置及工作方法 |
CN102880816B (zh) * | 2012-09-24 | 2014-12-17 | 江苏理工学院 | 基于片上系统多核融合的软件保护装置及工作方法 |
CN104408333A (zh) * | 2012-09-24 | 2015-03-11 | 江苏理工学院 | 一种基于片上系统多核融合的软件保护装置 |
CN103020495A (zh) * | 2012-12-17 | 2013-04-03 | 马驹 | 一种嵌入式软件防盗版加密方法 |
CN103020495B (zh) * | 2012-12-17 | 2015-06-10 | 马驹 | 一种嵌入式软件防盗版加密方法 |
WO2014117668A1 (zh) * | 2013-02-01 | 2014-08-07 | 北京深思洛克软件技术股份有限公司 | 一种在安全环境中生成代码提高软件保护强度的方法 |
CN103186729A (zh) * | 2013-03-26 | 2013-07-03 | 北京深思数盾科技有限公司 | 利用加密锁对软件进行保护的方法及加密锁 |
CN103186729B (zh) * | 2013-03-26 | 2016-04-06 | 北京深思数盾科技有限公司 | 利用加密锁对软件进行保护的方法及加密锁 |
WO2017050110A1 (zh) * | 2015-09-22 | 2017-03-30 | 上海斐讯数据通信技术有限公司 | 一种嵌入式系统的软件代码防盗方法及装置 |
CN107239316A (zh) * | 2017-04-20 | 2017-10-10 | 武汉斗鱼网络科技有限公司 | 一种函数的优化处理方法和装置 |
CN108280329A (zh) * | 2018-01-22 | 2018-07-13 | 台州风达机器人科技有限公司 | 一种用于软件运行的验证放行方法 |
CN108280329B (zh) * | 2018-01-22 | 2020-06-02 | 北京数科网维技术有限责任公司 | 一种用于软件运行的验证放行方法 |
CN109359451A (zh) * | 2018-11-12 | 2019-02-19 | 兴科迪科技(泰州)有限公司 | 一种基于安全控制盒容器的体系结构、方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101038615A (zh) | 一种直接从软件中任意分离代码到加密锁实现软件版权保护的方法 | |
US9117094B2 (en) | Data location obfuscation | |
US7610623B2 (en) | Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context | |
CN101419652B (zh) | 一种软硬件结合的保护程序的方法 | |
CN106228076B (zh) | 一种基于sgx的图片验证码保护方法及系统 | |
US20200042747A1 (en) | Security processing unit of plc and bus arbitration method thereof | |
CN102959556B (zh) | 用于确保软件完整性的处理器实现的方法 | |
EP3111355B1 (de) | Verfahren zum schutz eines computerprogramms gegen beeinflussung und computersystem | |
CN1662869A (zh) | 休眠保护 | |
Nguyen et al. | Cloud-based secure logger for medical devices | |
CN104583961B (zh) | 基于软件的侧信道攻击防止 | |
CN102693399A (zh) | 一种电子文档在线分离与还原的系统及方法 | |
CN105678173A (zh) | 基于硬件事务内存的vTPM安全保护方法 | |
US20190197216A1 (en) | Method, apparatus, and computer-readable medium for executing a logic on a computing device and protecting the logic against reverse engineering | |
CN1342007A (zh) | 一种新的加密装置 | |
CN114528602B (zh) | 基于攻击检测行为的安全芯片运行方法及装置 | |
CN105827388A (zh) | 用于用密码处理数据的方法 | |
US7000119B1 (en) | Instruction/data protection employing derived obscuring instruction/data | |
CN1897005A (zh) | 一种用于防止软件运行在非授权计算机上的保护装置 | |
CN112613000A (zh) | 一种敏感信息保护方法、装置、电子设备及可读存储介质 | |
RU2467389C1 (ru) | Способ защиты программно-информационного обеспечения от несанкционированного использования | |
CN202110552U (zh) | 一种基于多体交叉存储技术的软件保护装置 | |
CN114024705B (zh) | 一种针对节点动态性的信任架构 | |
CN102880818A (zh) | 一种软件保护方法 | |
US20170134379A1 (en) | Method for securing an application and data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |