基于MCU的软件防反编译加密方法技术

技术编号:18497668 阅读:134 留言:0更新日期:2018-07-21 20:27
本发明专利技术公开了一种基于MCU的软件防反编译加密方法,包括以下步骤:绑定MCU的唯一编码;设定读保护;在程序驱动层加壳;完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被破坏,继续执行主程序,循环检测读保护标志寄存器。

Anti decomcompiling and encryption method of software based on MCU

The invention discloses a software anti decompile encryption method based on MCU, which includes the following steps: binding the unique encoding of MCU; setting reading protection; adding the shell in the program drive layer; after completing the above preparation steps, the program reads the plaintext and the dense text encoding in the EEPROM and encodes the plaintext and the ciphertext at the time of running. The inverse encryption operation is carried out, the operation structure is compared with the cryptographic number. If the data in EEPROM is removed, the read protection register is detected. If the protection register flag bit changes are read, the data in the EEPROM is cleared and the EEPROM data is not cleared if the read protection register locals are not changed. Then, the program is executed down to detect the shell in the main program. If the shell is destroyed, the program is given a common error variable and the program is wrong. If the shell is not destroyed, the program will continue to execute the main program, and the protection sign register is detected circulant.

【技术实现步骤摘要】
基于MCU的软件防反编译加密方法
本专利技术涉及一种软件防反编译加密方法,具体涉及一种基于MCU的软件防反编译加密方法。
技术介绍
MCU(MicroControlUnit)中文名称微控制单元(微控制器),又称单片微型计算机(SingleChipMicrocomputer)或者单片机,是指随着大规模集成电路的出现及发展,将计算机的CPU、RAM、ROM、定位计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。MCU可以为不同应用场合下的嵌入式系统提供不同组合的逻辑控制。随着半导体技术的日益革新以及汽车电子、消费类电子、工业控制等相关应用行业迅猛发展,MCU的应用也变得日益广泛。据行业分析报告预计,截至至2017年,MCU全球市场规模将达到170亿美元。然而随着MCU市场的蓬勃发展,MCU反编译、反汇编破解工具越来越多,这就给基于MCU开发中的软件爱你安全带来了很大挑战。目前基于MCU软件的加密方法有三类,其一为采用仅支持一次烧写(OTP)的flash,此种格式的flash破解难度较大,可以有效防止程序被破解,但是不支持可擦写的flash会给软件开发带来很大的难度;其二为MCU设计之初加入的硬保护,如熔断保护、读保护等,这种加密方法企图从源头保证程序不被拷贝,从而消除程序被反编译的风险,但是针对这种加密方法,反向工程仅使用成本很小的物理手段配合出厂硬件密钥机壳将其破解;其三为软件保护,如加壳等,通用的加壳法方法是定义一组字符串,通过在程序中不同位置将不同的字符组合的方式验证程序是否被篡改,从而达到为程序加壳的目的,然而如果在不改动程序的情况下单一进行复制,程序仍然可以运行,因此加密也就失去意义。基于以上背景本专利提出一种基于MCU的软件防反编译加密方法,以有效解决上述问题。
技术实现思路
对此,本专利技术旨在提供一种安全性更高的基于MCU的软件防反编译加密方法。实现本专利技术目的的技术方案是:一种基于MCU的软件防反编译加密方法,包括以下步骤:绑定MCU的唯一编码,定义随机密码本数字,其字节数与确定的明文编码一致,按照固定数字位数字不变其它数字位随机的方式生成明文编码,并将明文编码写入设定的EEPROM中设定位置,然后将生成的明文编码与密码本固定密码进行与、或、非、加、减、乘、除基本运算的组合运算生成密文编码,最后将生成的密文编码及密码本数字写入EEPROM中设定位置,完成MCU的唯一编码的绑定;设定读保护,在程序主循环中加入读保护寄存器标志位判断,实时监测程序寄存器标志位是否改变,一旦识别到程序寄存器标志位改变即读保护被解除,清除EEPROM中数据;在程序驱动层加壳;完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被破坏,继续执行主程序,循环检测读保护标志寄存器。上述技术方案中,所述壳体包含两种,一种是EEPROM中密文固定数字位判断,另一种是判断明文密文操作中地址变量的Checksum值是否发生改变,一旦有一个壳体出错,选择一个常见的程序出错判断变量给其赋错值,使程序进入常见出错状态。上述技术方案中,下载程序时通过分开烧录的方式向MCU的EEPROM中烧入12个字节的编码,其中4个字节的明文编码作为芯片的唯一编码,明文编码的每个字节有三个固定数字位,不同字节之间的固定数字位不同,固定数字位数字组合作为程序的版本号,版本号固定不变;另外4个字节为与明文编码对应的密文编码,最后4个字节为密码本固定数字。本专利技术具有积极的效果:本专利技术的加密方法,首先是将EEPROM中的明文编码与密文编码进行逆加密运算,将运算结果与密码本数字进行比较,若不一致则清除EEPROM数据后锁死,其次是在运算结果与密码本数字一致时检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM数据,最后是在读保护寄存在标志位未改变时检测主程序中的壳体,只有在壳体未被破坏的情况下才继续执行主程序,而每一部分都具有反编译保护作用,并且三部分相互保护,相互协调使得加密算法破解成本大大增加,软件的安全性大大提高。附图说明图1为本专利技术中程序烧录顺序流程图;图2为绑定MCU的唯一编码的算法流程图;图3为加密方法流程图。具体实施方式下面结合说明书附图对本专利技术中的具体结构做以说明:一种基于MCU的软件防反编译加密方法,参看图1至图3所示,包括以下步骤:绑定MCU的唯一编码:定义密码本数字,其字节数与确定的明文编码一致,按照固定数字位数字不变其它数字位随机的方式生成明文编码,并将明文编码写入设定的EEPROM中设定位置,然后将生成的明文编码与密码本固定密码进行与、或、非、加、减、乘、除的基本运算的组合运算生成密文编码,最后将生成的密文编码及密码本数字写入EEPROM中设定位置,完成MCU的唯一编码的绑定;设定读保护:在程序主循环中加入读保护寄存器标志位判断,实时监测程序寄存器标志位是否改变,一旦识别到程序寄存器标志位改变即读保护被解除,清除EEPROM中数据;在程序驱动层加壳;完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被破坏,继续执行主程序,循环检测读保护标志寄存器。本专利技术的加密方法,首先是将EEPROM中的明文编码与密文编码进行逆加密运算,将运算结果与密码本数字进行比较,若不一致则清除EEPROM数据后锁死,其次是在运算结果与密码本数字一致时检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM数据,最后是在读保护寄存在标志位未改变时检测主程序中的壳体,只有在壳体未被破坏的情况下才继续执行主程序,而每一部分都具有反编译保护作用,并且三部分相互保护,相互协调使得加密算法破解成本大大增加,软件的安全性大大提高。进一步,本实施例中的所述壳体包含两种,一种是EEPROM中密文固定数字位判断,另一种是判断明文密文操作中地址变量的Checksum值是否发生改变,一旦有一个壳体出错,选择一个常见的程序出错判断变量给其赋错值,使程序进入常见出错状态。再进一步,下载程序时通过分开烧录的方式向MCU的EEPROM中烧入12个字节的编码,其中4个字节的明文编码作为芯片的唯一编码,明文编码的每个字节有三个固定数字位,不同字节之间的固定数字位不同,固定数字位数字组合作为程序的版本号,版本号固定不变;另外4个字节为与明文编码对应的密文编码,最后4个字节为密码本固定数字。显然,本专利技术的上述实施例仅仅是为清楚地说明本专利技术所作的举例,而并非是本文档来自技高网
...

【技术保护点】
1.一种基于MCU的软件防反编译加密方法,包括以下步骤:绑定MCU的唯一编码:定义随机密码本数字,其字节数与确定的明文编码一致,按照固定数字位数字不变其它数字位随机的方式生成明文编码,并将明文编码写入设定的EEPROM中设定位置,然后将生成的明文编码与密码本固定密码进行与、或、非、加、减、乘、除的基本运算的组合运算生成密文编码,最后将生成的密文编码及密码本数字写入EEPROM中设定位置,完成MCU唯一编码的绑定;设定读保护:在程序主循环中加入读保护寄存器标志位判断,实时监测程序寄存器标志位是否改变,一旦识别到程序寄存器标志位改变即读保护被解除,清除EEPROM中数据;在程序驱动层加壳;完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被保护,继续执行主程序,循环检测读保护标志寄存器。...

【技术特征摘要】
1.一种基于MCU的软件防反编译加密方法,包括以下步骤:绑定MCU的唯一编码:定义随机密码本数字,其字节数与确定的明文编码一致,按照固定数字位数字不变其它数字位随机的方式生成明文编码,并将明文编码写入设定的EEPROM中设定位置,然后将生成的明文编码与密码本固定密码进行与、或、非、加、减、乘、除的基本运算的组合运算生成密文编码,最后将生成的密文编码及密码本数字写入EEPROM中设定位置,完成MCU唯一编码的绑定;设定读保护:在程序主循环中加入读保护寄存器标志位判断,实时监测程序寄存器标志位是否改变,一旦识别到程序寄存器标志位改变即读保护被解除,清除EEPROM中数据;在程序驱动层加壳;完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数...

【专利技术属性】
技术研发人员:杨利江杨成蒙郭以军陈立云王雄关
申请(专利权)人:浙江泰米电子科技有限公司
类型:发明
国别省市:浙江,33

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

1