一种软件加密方法与流程

文档序号:17952627发布日期:2019-06-19 00:10阅读:2937来源:国知局
一种软件加密方法与流程

本发明涉及一种软件加密方法,属于软件加密技术领域。



背景技术:

软件是一系列按照特定顺序组织的计算机数据和指令的集合,一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件,简单的说软件就是程序加文档的集合体。嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,广泛应用于国防、工控、家用、商用、办公、医疗等领域,如我们常见的移动电话、掌上电脑、数码相机、机顶盒、mp3等都是用嵌入式软件技术对传统产品进行智能化改造的结果。

近年来,随着计算机和互联网技术的广泛应用,软件制备领域也有了长足的发展,由于软件产品具备可复制性,产品开发后几乎没有生产成本等特点,产品被盗版的可能性非常高,盗版者由于没有开发成本,而生产成本几乎为零,所以可以以非常低的价格出售,对软件开发者造成严重的损失,同时由于盗版成本低,严重影响了软件开发的积极性,对技术的发展造成负面影响。为了防止软件的非法复制和盗版,保护软件开发商的合法权益,需要对软件进行加密保护。

目前,市面上许多反盗版软件是进行单机处理,使用简单的加密手段进行加密,容易被盗版者破解;另外一些是通过硬件加密狗的方式实现的,加密狗是插在计算机上的软硬件结合的加密产品,其内部设置小型的存储空间可供读写,或在内部设置单片机,程序通过与加密狗进行数据交换来进行正版程序的检测和运行,加密狗相当于程序解锁的钥匙,但加密狗的使用加大了软件开发的成本,且多次插拔后加密狗容易损坏导致程序无法运行。如中国实用新型专利申请“一种移动终端应用软件加密装置及应用有该装置的移动终端”(申请号:201520738581.9,公开日:2016.04.20),其加密的基本原理是:包括存储模块与加密模块,存储模块中预先保存有移动终端中的应用软件运行时需要的验证数据及应用软件运行时需要调用的参数数据,加密模块用于将存储模块中保存的验证数据和参数数据进行加密;通过usb接口接收移动终端中的应用软件发来的验证数据请求和调用参数数据请求,并将加密模块加密后的验证数据和参数数据发送给移动终端的应用软件。该申请中的usb接口电路即可理解为电子狗加密设备,其所述加密模块、usb接口电路和存储模块必须采用同一片型号、内含加密算法软件和存储空间以及usb接口的单片机,对于软件加密来说,可靠性达标,但增加的usb装置、接口及多片单片机无疑增加了很大的成本,且usb装置插拔次数过多容易造成损坏,若其中相同型号的单片机无法采购,则损坏后新选购的单片机会由于型号不符而无法解密,最终导致软件无法使用。

现有技术存在的问题是:软件加密手段简单,容易被盗版;多数使用电子狗类软硬件加密方式,成本过大。



技术实现要素:

本发明所要解决的技术问题是:提供一种软件加密方法,提高软件加密的可靠性并降低软件加密成本。

为了解决上述技术问题,本发明是通过以下技术方案实现的:一种软件加密方法,包括软件制备加密阶段及软件运行解密阶段,软件加密工作具体由以下两步构成:首先软件在工厂制备时,使用工厂内部程序通过运算首先计算加密数据,将计算出的加密数据存储于存储芯片中,并将mcu微控制单元内工厂内部程序擦除,写入正式应用程序;其次,在软件运行解密阶段运行软件时,mcu微控制单元从存储芯片中读取加密数据,采用算法计算加密数据,并将算法结果与从存储芯片中读取出来的加密数据作对比,比较结果一致则应用程序继续运行,比较结果不一致则应用程序退出运行。所述通过mcu微控制单元从存储芯片中读取加密数据的步骤包括:通过softsmi或通过bios即插即用功能函数调用或通过软中断实现对所述预留存储空间的读取,获取软件中加密数据;其中,通过softsmi实现对存储芯片读取,获取加密数据的步骤具体是:通过软件的应用程序向softsmi的io端口写数据,触发smi中断,使中央处理器切换至系统管理模式,在系统管理模式下对所述存储芯片进行读写,获取软件加密数据。

优选的,所述一种软件加密方法针对对象为控制器类嵌入式软件,加密数据与嵌入式软件分开存储。

优选的,所述加密数据存储于所述存储芯片eeprom、flash中的任意一种中。

优选的,所述写入软件的每组加密数据与mcu微控制单元唯一对应,每个mcu微控制单元计算出的加密数据仅有一组且与其它mcu微控制单元计算出的加密数据不同,盗版拷贝加密数据不能正常运行程序。

优选的,所述一种软件加密方法,程序被盗版拷贝时无法生成加密数据,程序无法正常运行。

作为优选,程序被盗版拷贝时无法生成加密数据,程序无法正常运行。

与现有技术相比,本发明的有益之处是:

1.由于盗版者无法得到程序通过自身代码运算得出的加密数据,而无法在存储设备中首先存储加密结果,所以盗版的程序在其生产的控制器中无法运行。

2.加密算法是通过程序代码本身运算得出的,综合控制芯片自身硬件设备的属性,计算出的结果是唯一的,即相同型号的两个控制芯片计算出的加密数据是不一样的,所以每个控制的存储芯片首先存储的加密数据也是不一样的,即使程序被盗版者破解,由于加密数据的唯一性,也造成了盗版者使用盗版程序困难重重,几乎不具备创造利润的价值,也就失去了盗版的意义。

3、相对于简单单机加密方式更为可靠,不使用外部加密硬件设施,使用方便,节省造价。

附图说明:

下面结合附图对本发明进一步说明。

图1是一种软件加密方法的软件制备加密阶段流程图;

图2是一种软件加密方法的软件运行解密阶段流程图。

具体实施方式:

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明设计了一种软件加密的方法,对软件产品起到了非常好的保护作用,使软件被盗版的难度成倍增加。本发明针对控制器类嵌入式软件,使用程序加密算法对程序进行计算,其计算结果存储于控制器的存储设备中,程序运行过程中对自身代码进行加密运算,之后于首先存储于存储设备中的运算结果进行对比,根据对比结果判断正在运行的程序是否通过盗版而来。如果运行的程序为盗版程序,在程序自动退出运行。所述软件加密方法,包括软件制备加密阶段及软件运行解密阶段;所述软件制备加密阶段:使用工厂内部程序通过运算首先计算加密数据,将计算出的加密数据存储于存储芯片中,将mcu微控制单元内工厂内部程序擦除,写入正式应用程序;所述软件运行解密阶段:运行软件时,mcu微控制单元从存储芯片中读取加密数据,采用算法计算加密数据,并将算法结果与从存储芯片中读取出来的加密数据作对比,比较结果一致则应用程序继续运行,比较结果不一致则应用程序退出运行。

作为优选,所述通过mcu微控制单元从存储芯片中读取加密数据的步骤包括:通过softsmi或通过bios即插即用功能函数调用或通过软中断实现对所述预留存储空间的读取,获取软件中加密数据;其中,通过softsmi实现对存储芯片的读取,获取加密数据的步骤具体是:通过软件的应用程序向softsmi的io端口写数据,触发smi中断,使中央处理器切换至系统管理模式,在系统管理模式下对所述存储芯片进行读写,获取软件加密数据。

进一步地,本发明针对控制器类嵌入式软件,加密数据与嵌入式软件分开存储。

进一步地,加密数据存储于所述存储芯片eeprom、flash中的任意一种中。

进一步地,写入软件的每组加密数据与mcu微控制单元唯一对应,每个mcu微控制单元计算出的加密数据仅有一组且与其它mcu微控制单元计算出的加密数据不同,盗版拷贝加密数据不能正常运行程序。

本发明的加密算法是通过程序代码本身运算得出的,综合控制芯片自身硬件设备的属性,计算出的结果是唯一的,即相同型号的两个控制芯片计算出的加密数据是不一样的,所以每个控制的存储芯片首先存储的加密数据也是不一样的,即使程序被盗版者破解,由于加密数据的唯一性,也造成了盗版者使用盗版程序困难重重,几乎不具备创造利润的价值,也就失去了盗版的意义。

相对于简单单机加密方式更为可靠,不使用外部加密硬件设施,使用方便,节省造价。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下。由语句“包括一个......限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素”。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1