[发明专利]一种基于芯片ID号的软件保护方法在审
申请号: | 201711126313.1 | 申请日: | 2017-11-15 |
公开(公告)号: | CN107958141A | 公开(公告)日: | 2018-04-24 |
发明(设计)人: | 闭金杰;丘森辉;罗晓曙;杨日星;黄福旺 | 申请(专利权)人: | 广西师范大学 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/44 |
代理公司: | 桂林市华杰专利商标事务所有限责任公司45112 | 代理人: | 刘梅芳 |
地址: | 541004 广西壮*** | 国省代码: | 广西;45 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 芯片 id 软件 保护 方法 | ||
技术领域
本发明涉及软件保护领域,特别涉及一种基于芯片ID号的软件保护方法。
背景技术
随着科学技术水平的快速发展,嵌入式电子产品在人们的日常生活当中越来越普及,其中的软件功能也越来越丰富,但是电子产品的软件被盗版一直是困扰众多软件开发商的头痛问题。为此,不少软件开发商被迫在软件开发过程中投入大量精力去实现软件的保护,以防产品的技术被第三方非法盗用。特别是那些售价相对较高,面向特定领域的行业软件产品更是花费大量精力去实现软件的保护。
目前对软件进行保护的方法主要有以下几种:指令伪装法,破坏芯片特定硬件资源加密法和ESAM加密法等,但是对于目前使用的情况来说,其综合应用的效果不是很理想。如指令伪装法只是增加了反汇编的阅读难度,对破解后直接复制的盗取没有任何防范作用;破坏芯片特定硬件资源加密法其具有一定的局限性,即破坏之后芯片很难再被使用;ESAM加密法需要额外的硬件,成本较高且实现较为复杂。为此,提出一种软件版权保护保护效果好、成本低、无需任何额外硬件、简单实用的软件保护方法就显得尤为重要。
发明内容
本发明的目的是针对现有技术的不足,而提供一种基于芯片ID号的软件保护方法。
这种方法能实现一套软件只能在指定硬件上运行,使得软件保护的成本低、无需任何额外硬件、简单实用,具有广阔的应用前景。
实现本发明目的的技术方案是:
一种基于芯片ID号的软件保护方法,包括如下步骤:
1)构建芯片ID号的加密号在MCU芯片首次运行时,将经过防反汇编和反修改处理的主程序下载到主程序区的指定地址Flash当中,并在主程序运行时判断首次运行标志,如果首次运行标志为0,则读取该MCU芯片ID号,并对ID号进行加密同时将存储在指定数据区地址的Flash当中;
2)构建芯片ID号的加密主密钥采用伪随机函数生成芯片ID号的主密钥 MK=MKRand(m),并对MK进行加密加密成功之后,将存储在指定数据区地址的Flash当中;
3)构建芯片ID号的认证密钥CSK:执行步骤1)、步骤2)后,将芯片ID号和MK 所存放的临时存储区域清零,采用解密函数D(X)和加密算法AES(X,Y)生成认证密钥并存储在指定数据区地址的Flash当中;至此,成功构建出了MCU芯片的唯一的ID号的加密号加密主密钥和认证密钥CSK;
4)跳转:下载已经过防反汇编和反修改处理的主程序需要跳转的程序代码到指定代码区地址的Flash当中;
5)生成临时密钥当跳转的程序代码下载成功之后,给芯片上电,则主程序将再次运行,此时其首次运行标志将因Flash中的代码区有程序代码变为1,这时主程序将执行读取芯片的ID号以及Flash数据区当中的主密钥和认证密钥CSK,并使用解密函数D(X)和加密算法AES(X,Y)生成临时密钥
6)生成随机码Rand:采用随机函数生成随机码Rand;
7)生成验证码:采用解密函数D(X)和加密算法AES(X,Y)生成验证码 Y=AES(CSK*,Rand)和X=AES(CSK,Rand);
8)判断保护:如果X与Y相等,则主程序跳到程序代码区进入正常执行状态,如果X与Y不相等,则主程序将Flash当中的程序代码区和数据区的所有代码和数据擦除,即自杀,完成对软件的保护。
所述的防反汇编和反修改处理是指对程序代码进行代码混淆技术处理和CRC校验处理,两者的作用分别是增加反汇编的难度和防止原代码被非法修改。
所述的指定数据区地址是软件开发人员指定程序的下载地址,所述的Flash分为主程序区、代码区和数据区,可根据每个MCU分配不同的Flash地址,这样能在一定程度上增加了反汇编的难度。
所述的首次运行标志是通过检查代码区中是否存在代码来确定其值,如果代码区有代码,则首次运行标志为1,反之,则首次运行标志为0。
所述加密E(X)包括公式、法则、程序构成,这个加密函数不是唯一的,加密函数可由用户自定义、解密函数D(X)为加密E(X)的逆,它们之间关系为: E(P)=C,D(C)=P。
所述主密钥MK是加密算法中的可变参数,由伪随机函数产生,每个MCU芯片的主密钥MK不一样,这在一定程度上也增加了反汇编的难度。
所述加密算法AES(X,Y)为对称算法,相比传统的加密算法其速度更快,安全级别更高。
所述的认证密钥CSK是基于解密函数D(X)和加密算法AES(X,Y)以及和生成的,并与MK和ID有关。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广西师范大学,未经广西师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711126313.1/2.html,转载请声明来源钻瓜专利网。