一种嵌入式终端软件防复制抄袭的方法
技术领域
本发明涉及软件防复制抄袭技术,特别是一种嵌入式终端软件防复制抄袭的方法。
背景技术
在国内激烈竞争的电子设备产品开发以及方案设计行业,很多公司大概都有这样的经历,自己通入巨资耗费大量时间心血开发设计的产品,投放市场不久,就被竞争对手或者盗版商分析透了,从硬件到软件原封不动地被克隆,换了一个外壳投放市场,结果自己的正版产品被自己的低价盗版产品打败,前期投入的心血和大量资金付诸东流。还有一些公司在委托生产厂商进行产品生产时,被生产厂商额外地生产出大量的相同产品,换个品牌投放市场,不但扰乱了市场秩序,还严重地损害了产品设计者的利益。在行业竞争日益激烈的今天,如何保护自己的产品设计方案以提高产品的市场占有率,如何在产品技术转让时有一个理想的、可以量化的计量标准已经成为很多公司和产品设计者日益关切的问题。
当前大部分产品都有对其通信过程中的数据进行加密,这主要是为了保护其通信过程的数据不被获取,以保护各自的通信协议,这种方式达不到保护软件本身的效果。有些产品采用加密狗通过对软件与数据的保护防止知识产权被非法使用,这种方式可以有效方式软件被复制抄袭,但成本比较高,而且对于使用在户外并且无人职守的终端存在一定的风险,比如加密狗被人为破坏,那么终端就无法正常运行。
发明内容
本发明的目的是提供一种嵌入式终端软件防复制抄袭的方法。
本发明采用以下方案实现:一种嵌入式终端软件防复制抄袭的方法,其特征在于:包括私钥的生成和加载、终端身份认证;
所述私钥的生成和加载包括以下步骤:
步骤S011:提取所述终端的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识,并将这三个唯一标识组成数据包后发送给一服务器端;
步骤S012:所述服务器端从所述数据包中提取出三个唯一标识,利用一加密算法对这三个唯一标识进行加密,并提取加密结果的前N个字节作为最终的私钥发送给所述终端;
步骤S013:所述终端将所述私钥写入所述加密芯片内的私钥存储区,从而完成私钥的加载;
所述终端身份认证包括以下步骤:
步骤S021:终端的应用程序提取该终端的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识通过所述加密算法加密生产N字节的私钥;
步骤S022:将步骤S021中产生的私钥和一随机数通过所述加密算法加密生成第一认证信息;
步骤S023:将所述随机数传给所述加密芯片,该加密芯片内部自动将该随机数结合私钥存储区存储的私钥通过所述加密算法加密生成第二认证信息;
步骤S024:将所述的第一认证信息和第二认证信息进行比较,完全一样则表示认证通过,否则不通过;其中N为自然数。
在本发明一实施例中,所述的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识分别是主控芯片的ID号、加密芯片的ID号和终端的MAC地址。
在本发明一实施例中,在所述步骤S011中在提取所述终端的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识后,先对这三个唯一标识加个包头,然后再组成数据包后发送给一服务器端;所述步骤S012中该服务器端先对包头进行判断,当包头符合条件才对所述数据包进行处理。
在本发明一实施例中,所述步骤S011中所述数据包是通过UDP协议发送给一服务器端。
在本发明一实施例中,所述的N为8。
在本发明一实施例中,所述步骤S013中所述终端收到所述私钥后先判断是否是8个字节,如果是就对所述加密芯片进行初始化,不是则不动作。
在本发明一实施例中,所述的认证信息长度为20个字节。
在本发明一实施例中,所述步骤S022中还包括读取出所述加密芯片指定地址的数据,将该数据、私钥和一随机数通过所述加密算法加密生成第一认证信息;所述步骤S023中是将所述指定地址和随机数传给所述加密芯片,该加密芯片内部自动将该指定地址的数据、随机数结合私钥存储区存储的私钥通过所述加密算法加密生成第二认证信息。
在本发明一实施例中,所述的加密算法为SHA-1算法。
本发明解决方案的核心是在产品硬件设计上嵌入专用安全芯片,在应用软件设计上通过随机密钥认证的方法控制程序流程,由于安全芯片是焊接在主板上的,比模块化的加密狗安全性更高,成本更低。同时比一般概念上的软件狗在软硬件安全特性、指令功能和性能价格比也具有明显的优势。
附图说明
图1是本发明实施例私钥的生成和加载步骤流程示意图。
图2是本发明实施例终端身份认证步骤流程示意图。
图3和图4是本发明另一实施例终端和服务器私钥的生成和加载步骤流程示意图。
图5是本发明另一实施例终端身份认证步骤流程示意图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
如图1和图2所示,本实施例提供一种嵌入式终端软件防复制抄袭的方法,其特征在于:包括私钥的生成和加载、终端身份认证;
所述私钥的生成和加载包括以下步骤:
步骤S011:提取所述终端的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识,并将这三个唯一标识组成数据包后发送给一服务器端;
步骤S012:所述服务器端从所述数据包中提取出三个唯一标识,利用一加密算法对这三个唯一标识进行加密,并提取加密结果的前N个字节作为最终的私钥发送给所述终端;
步骤S013:所述终端将所述私钥写入所述加密芯片内的私钥存储区,从而完成私钥的加载;
所述终端身份认证包括以下步骤:
步骤S021:终端的应用程序提取该终端的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识通过所述加密算法加密生产N字节的私钥;
步骤S022:将步骤S021中产生的私钥和一随机数通过所述加密算法加密生成第一认证信息;
步骤S023:将所述随机数传给所述加密芯片,该加密芯片内部自动将该随机数结合私钥存储区存储的私钥通过所述加密算法加密生成第二认证信息;
步骤S024:将所述的第一认证信息和第二认证信息进行比较,完全一样则表示认证通过,否则不通过;其中N为自然数。
较佳的,上述的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识分别是主控芯片的ID号、加密芯片的ID号和终端的MAC地址。在所述步骤S011中在提取所述终端的主控芯片的唯一标识、加密芯片的唯一标识以及该终端的唯一标识后,先对这三个唯一标识加个包头,然后再组成数据包后发送给一服务器端;所述步骤S012中该服务器端先对包头进行判断,当包头符合条件才对所述数据包进行处理。所述步骤S011中所述数据包是通过UDP协议发送给一服务器端。所述步骤S013中所述终端收到所述私钥后先判断是否是8个字节,如果是就对所述加密芯片进行初始化,不是则不动作。
在本发明一实施例中,所述步骤S022中还包括读取出所述加密芯片指定地址的数据,将该数据、私钥和一随机数通过所述加密算法加密生成第一认证信息;所述步骤S023中是将所述指定地址和随机数传给所述加密芯片,该加密芯片内部自动将该指定地址的数据、随机数结合私钥存储区存储的私钥通过所述加密算法加密生成第二认证信息。
下面以SHA-1算法以及8字节的密钥为例进行简单说明。
请参见图3、图4和图5,在本发明另一实施例中,本发明包括两部分内容:私钥的生成和加载、终端身份认证。私钥的加载是在厂内进行的,通过运行终端存储介质中的工厂测试程序来完成。流程如下:1、程序中首先提取出终端主控芯片的ID号、加密芯片的ID号和终端的MAC地址(终端的唯一识别号),然后将这三个值加个包头,从新组包通过UDP协议发送给PC上的服务器端;要说明的是增加该包头可以保证服务器确认确实是指定终端发来的标识号,保证系统的安全性;2、服务器端绑定固定端口,进行数据接收,一旦收到数据,对数据包进行判断解析,如果数据是系统需要的(即对所述包头的判断得出),就提取出三个唯一ID,利用SHA-1算法对这三个值进行加密,并提起出加密结果的前8个字节作为最终的私钥发送给终端;3、终端收到服务器返回的数据后,判断是否刚好为8个字节,如果是就对加密芯片进行初始化,并将私钥写入加密芯片内的私钥存储区,从而完成私钥的加载。
终端出厂后运行的是应用程序,所以身份认证在应用程序中完成。流程如下:1、提取出终端主控芯片的ID号、加密芯片的ID号和终端的MAC地址通过SHA-1算法加密生产8字节的私钥;2、读取出加密芯片中指定存储地址的数据;3、将该数据、私钥和8字节随机数通过SHA-1算法加密生成20字节的认证信息;4、将上述的随机数和指定存储地址传给加密芯片,加密芯片内部会自动将该随机数结合私钥存储区存储的私钥通过SHA-1算法加密生成20字节的认证信息;5、读取步骤3和4中的认证信息进行比较,完全一样则表示认证通过,否则不通过。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。