首页 / 专利库 / 电脑安全 / 软件盗版 / 一种单片机软件的加密保护方法及存储介质

一种单片机软件的加密保护方法及存储介质

阅读:593发布:2020-05-08

专利汇可以提供一种单片机软件的加密保护方法及存储介质专利检索,专利查询,专利分析的服务。并且本 发明 属于 单片机 安全技术领域,具体提供了一种单片机 软件 的加密保护方法及存储介质,先随机生成多组原始密码,用哈希函数计算每组原始密码的检验值,每组原始密码经过多组哈希运算后得到HASH1,HASH1再对称加密得到CODE1,将原始密码、检验值及CODE1均烧录入单片机固定存储区域;然后预设并存储独立UID,并将通过检验的原始密码使用多个哈希函数运算得到HASH1,对HASH1加上独立UID并再次进行哈希运算得到HASH2,将HASH2对称加密后得到CODE2,将CODE2 覆盖 写入到原始密码的区域 位置 ;最后随机 访问 各组CODE1及对应的CODE2数据,通过计算进行正版验证。该方案支持应用编程功能的单片机软件的加密保护,使用单片机或者外设芯片等的独立UID和原始密码,验证单片机运行的软件是否为合法正版。,下面是一种单片机软件的加密保护方法及存储介质专利的具体信息内容。

1.一种单片机软件的加密保护方法,其特征在于,包括:
S01:随机生成多组原始密码,用哈希函数计算每组原始密码的检验值,每组原始密码分别经过多组哈希运算后得到HASH1,HASH1再对称加密得到CODE1,将所述原始密码、检验值及CODE1均烧录入固定存储区域;
S02:预设并存储独立UID,并将通过检验的原始密码使用多个哈希函数运算得到HASH1,对所述HASH1加上所述独立UID并再次进行哈希运算得到HASH2,将所述HASH2对称加密后得到CODE2,将所述CODE2覆盖写入到原始密码的区域位置
S03:随机访问各组CODE1及对应的CODE2数据,通过计算进行正版验证。
2.根据权利要求1所述的单片机软件的加密保护方法,其特征在于:根据单片机的存储空间以及扇区页面大小定义所述原始密码每组的长度及组数。
3.根据权利要求1所述的单片机软件的加密保护方法,其特征在于,所述步骤S02之前还包括:单片机软件启动时,先从数据存储空间读出原始密码以及CHECK数据,并对原始密码组进行哈希运算得到检验值,如果每组原始密码计算得到的检验值等于CHECK数据,表示原始密码通过检验。
4.根据权利要求1所述的单片机软件的加密保护方法,其特征在于,所述步骤S03具体包括:随机读取一组CODE1数据,对CODE1数据进行对称加密得到HASH1数据,把HASH1加上UID进行哈希运算得到HASH2数据,再对HASH2数据进行对称加密,与对应的单片机数据存储区的CODE2数据进行比较,相同则表示软件为正版,否则软件为盗版。
5.根据权利要求4所述的单片机软件的加密保护方法,其特征在于:若检测软件为盗版,则正常运行预设时间后自动进行功能限制。
6.根据权利要求5所述的单片机软件的加密保护方法,其特征在于:所述功能为与安全功能无关的功能,所述功能能够降级该软件的产品质量和性能。
7.根据权利要求1所述的单片机软件的加密保护方法,其特征在于:所述独立UID为芯片自带UID或不会重复的唯一编码,所述唯一编码为设备地址码或外设唯一编码。
8.根据权利要求7所述的单片机软件的加密保护方法,其特征在于:所述芯片包括STM32F429IGT6单片机,所述独立UID存储在0x1FFF7A10-0x1FFF7A1B的地址空间。
9.根据权利要求1所述的单片机软件的加密保护方法,其特征在于,所述步骤S02具体包括:使用间接地址对所述独立UID进行访问。
10.一种用于单片机软件的加密保护的存储介质,其特征在于:所述存储介质用于存储、运算并访问如权利要求1至9任一项所述的单片机软件的加密保护方法。

说明书全文

一种单片机软件的加密保护方法及存储介质

技术领域

[0001] 本发明属于单片机安全技术领域,具体涉及一种单片机软件的加密保护方法及存储介质。

背景技术

[0002] 应用编程即IAP,是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
[0003] 单片机的发展非常迅速,从51核单片机,到各个厂家推出私有指令集的8位机、16位机、32位机,再到通用ARM内核的单片机,再到开源指令集RISC-V架构的单片机,单片机运行速度越来越快,外设功能越来越复杂,能实现的复杂应用越来越多。近几年随着物联网技术的发展,单片机的应用越来越广泛。但无论是51核单片机,还是各厂家私有指令集的单片机,还是ARM内核的单片机等,虽然多数都有防止内部软件被读出的保护机制,但是依然存在内部软件被读出、被反向工程的险。单片机软件的加密保护越来越重要。目前单片机多数使用FLASH存储软件,多数都支持IAP功能。

发明内容

[0004] 本发明的目的是克服现有技术中单片机软件盗版泛滥的问题。
[0005] 为此,本发明提供了一种单片机软件的加密保护方法,包括:
[0006] S01:随机生成多组原始密码,用哈希函数计算每组原始密码的检验值,每组原始密码分别经过多组哈希运算后得到HASH1,HASH1再对称加密得到CODE1,将所述原始密码、检验值及CODE1均烧录入固定存储区域;
[0007] S02:预设并存储独立UID,并将通过检验的原始密码使用多个哈希函数运算得到HASH1,对所述HASH1加上所述独立UID并再次进行哈希运算得到HASH2,将所述HASH2对称加密后得到CODE2,将所述CODE2覆盖写入到原始密码的区域位置
[0008] S03:随机访问各组CODE1及对应的CODE2,通过计算进行正版验证。
[0009] 优选地,根据单片机的存储空间以及扇区页面大小定义所述原始密码每组的长度及组数。
[0010] 优选地,所述步骤S02之前还包括:单片机软件启动时,先从数据存储空间读出原始密码以及CHECK数据,并对原始密码组进行哈希运算得到检验值,如果每组原始密码计算得到的检验值等于CHECK数据,表示原始密码通过检验。
[0011] 优选地,所述步骤S03具体包括:随机读取一组CODE1数据,对CODE1数据进行对称加密得到HASH1数据,把HASH1加上UID进行哈希运算得到HASH2数据,再对HASH2数据进行对称加密,与对应的单片机数据存储区的CODE2数据进行比较,相同则表示软件为正版,否则软件为盗版。
[0012] 优选地,若检测软件为盗版,则正常运行预设时间后自动进行功能限制。
[0013] 优选地,所述功能为与安全功能无关的功能,所述功能能够降级该软件的产品质量和性能。
[0014] 优选地,所述独立UID为芯片自带UID或不会重复的唯一编码,所述唯一编码为设备地址码或外设唯一编码。
[0015] 优选地,所述芯片包括STM32F429IGT6单片机,所述独立UID存储在0x1FFF7A10-0x1FFF7A1B的地址空间。
[0016] 优选地,所述步骤S02具体包括:使用间接地址对所述独立UID进行访问。
[0017] 本发明提供了一种用于单片机软件的加密保护的存储介质,所述存储介质用于存储、运算并访问如前任一项所述的单片机软件的加密保护方法。
[0018] 本发明的有益效果:本发明提供的这种单片机软件的加密保护方法及存储介质,先随机生成多组原始密码,用哈希函数计算每组原始密码的检验值,每组原始密码经过多组哈希后得到HASH1,HASH1再对称加密得到CODE1,将原始密码、检验值及CODE1均烧录入单片机固定存储区域;然后预设并存储独立UID,并将通过检验的原始密码使用多个哈希函数运算得到HASH1,对HASH1加上独立UID并再次进行哈希运算得到HASH2,将HASH2对称加密后得到CODE2,将CODE2覆盖写入到原始密码的区域位置;最后随机访问不同的CODE1、CODE2数据组,通过计算进行正版验证。该方案支持应用编程功能的单片机软件的加密保护,使用单片机或者外设芯片等的独立UID和原始密码,验证单片机运行的软件是否为合法正版软件。产品生产过程简单,但可以很大程度上提高软件反向工程的难度,达到保护单片机软件的目的。
[0019] 以下将结合附图对本发明做进一步详细说明。

附图说明

[0020] 图1是本发明单片机软件的加密保护方法及存储介质的流程示意图;
[0021] 图2是本发明单片机软件的加密保护方法及存储介质的原始密码加密流程示意图。

具体实施方式

[0022] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0023] 在本发明的描述中,需要理解的是,术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0024] 术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征;在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0025] 本发明实施例提供了一种单片机软件的加密保护方法,包括:
[0026] S01:随机生成多组原始密码,用哈希函数计算每组原始密码的检验值,每组原始密码分别经过多组哈希运算后得到HASH1,HASH1再对称加密得到CODE1,将所述原始密码、检验值及CODE1均烧录入固定存储区域;
[0027] S02:预设并存储独立UID,并将通过检验的原始密码使用多个哈希函数运算得到HASH1,对所述HASH1加上所述独立UID并再次进行哈希运算得到HASH2,将所述HASH2对称加密后得到CODE2,将所述CODE2覆盖写入到原始密码的区域位置;
[0028] S03:随机访问不同的CODE1及CODE2,通过计算进行正版验证。
[0029] 由此可知,如图1和图2所示,本发明设计了一种支持IAP功能的单片机软件加密保护的方法。事先随机生成多组原始密码,用哈希函数计算其检验值,每组原始密码哈希运算后得到HASH1,HASH1再对称加密得到CODE1,把原始密码、检验值和CODE1烧录入单片机固定存储区域。单片机软件启动时,如果原始密码通过检验,则把原始密码使用多个哈希函数运算得到HASH1,HASH1加上独立UID再次进行哈希运算得到HASH2,HASH2对称加密得到CODE2,CODE2覆盖写入到原始密码区。单片机UID可以是芯片自带UID,也可以是其他不会重复的唯一编码。单片机软件对UID的访问,使用间接地址进行访问。在单片机软件中的多个位置,随机访问各组CODE1及对应的CODE2数据,通过计算进行正版验证。如果检测出软件为盗版,软件正常运行一段时间后再进行功能限制。
[0030] 具体步骤如下:
[0031] 1、事先随机生成多组原始密码,用哈希函数计算其检验值,原始密码哈希后得到HASH1,HASH1再对称加密得到CODE1,把原始密码、检验值和CODE1烧录入单片机固定存储区域。
[0032] 对于单片机软件,需要事先随机生成多组原始密码,每一组原始密码使用哈希函数计算得出其检验值,每一组原始密码使用多个哈希函数计算得到HASH1,然后再对称加密得到CODE1。原始密码、检验值和CODE1这三部分数据,作为单片机软件的一部分,在软件中定义到固定的存储位置,与源代码一起编译,在烧录单片机软件时,直接烧录入单片机中。每一组原始密码的长度、以及定义多少组密码,根据单片机的存储空间,以及扇区页面大小灵活定义。其中,哈希函数及运算为现有技术,在此不再赘述。
[0033] 2、单片机软件启动时,如果原始密码通过检验,则把原始密码使用多个哈希函数运算得到HASH1,HASH1加上UID再次进行哈希运算得到HASH2,HASH2对称加密得到CODE2,CODE2覆盖写入到原始密码区。
[0034] 单片机软件启动时,先从数据存储空间读出原始密码以及CHECK数据,并对原始密码组进行哈希运算得到检验值,如果每组原始密码计算得到的检验值等于CHECK数据,表示原始密码通过检验。如果原始密码通过检验,则把原始密码使用多个哈希函数运算得到HASH1,HASH1加上UID再次进行哈希运算得到HASH2,HASH2对称加密得到CODE2。使用单片机IAP功能把CODE2覆盖写入到原始密码区。CODE2覆盖原始密码后,原始密码不会再出现在单片机数据存储区,也无法通过CODE2推导出原始密码。同样地,由于CHECK数据为原始密码的哈希值,也不能通过CHECK数据反向推导出原始密码,所以原始密码不会泄露。启动时如果原始密码没有通过检验,则表示原始密码组已经处理过,不用再进行处。
[0035] 3、单片机UID可以是芯片自带UID,也可以是其他不会重复的唯一编码。现在很多类型的单片机,每个芯片都有不可修改的唯一编码UID。如果单片机不包含UID,则加密过程可以使用设备中其他外设的唯一编码,或者使用设备自身的唯一的地址码等。
[0036] 4、单片机软件对UID的访问,使用间接地址进行访问。反向工程破解单片机软件时,通过扫描可以分析出单片机软件对UID的访问,从而修改函数返回结果为样机UID,达到破解软件的目的。所以对UID的访问使用间接地址的模式进行访问,避免访问地址被破解者直接识别出,这样可以提高反向工程的难度。
[0037] 5、在单片机软件中的多个位置,随机访问不同的CODE1、CODE2数据组,通过计算进行正版验证。单片机软件中,要在尽量多的位置使用不同的数据组进行正版验证。正版验证过程中,随机读取一组CODE1数据,对CODE1数据进行对称加密得到HASH1数据,把HASH1加上UID进行哈希运算得到HASH2数据,再对HASH2数据进行对称加密,与对应的单片机数据存储区的CODE2数据进行比较,相同则表示软件为正版,否则软件为盗版。
[0038] 6、如果检测出软件为盗版,软件正常运行一段时间后再进行功能限制。单片机软件运行中,如果检测出软件为盗版软件,先不对软件的功能进行限制。等盗版软件运行一段时间后,再逐渐开始限制一些与安全无关的功能,降低产品质量和性能。
[0039] 在一个具体的实施场景中,以ARM Cortex-M4核单片机STM32F429IGT6为例,对本发明实施例中的技术方案进行清楚、完整地描述。具体步骤如下:
[0040] 1、事先随机生成多组原始密码,用哈希函数计算其检验值,原始密码哈希后得到HASH1,HASH1对称加密得到CODE1,把原始密码、检验值和CODE1烧录入单片机固定存储区域。
[0041] 事先随机生成128组原始密码数据,每一组数据长16个字节。对每一组原始密码使用两个哈希函数计算得出两个32位检验值。对每一组原始密码使用4个哈希函数计算得到16字节HASH1数据,HASH1数据对称加密得到CODE1。原始密码、检验值和CODE1这三部分数据,作为单片机软件的一部分,在软件中定义到固定的存储位置,与源代码一起编译,在烧录单片机软件时,直接烧录入单片机中。
[0042] 随机生成原始密码数据128组,每组16个字节,数据共2KB,数据定义到地址0x08008000。代码实现过程如下:
[0043] __root const unsigned char const_original_data[128][16]@0x08008000={[0044] {0x79,0x6C,0xD2,0x37,0xD5,0x88,0xF8,0x69,0x3F,0x1E,0x50,0x7F,0x39,0x01,0x28,0x8F},
[0045] {0x33,0xD0,0x09,0x83,0x11,0x53,0xDA,0xBE,0xF2,0xE7,0x0D,0x21,0x95,0x8D,0x53,0xDC},
[0046] ……
[0047] {0x27,0x80,0x4D,0xFE,0x06,0x12,0x6B,0x98,0xFF,0x78,0x89,0x32,0xBD,0xFC,0x12,0xCD},
[0048] {0x9F,0xE7,0x72,0xA3,0x0E,0x5B,0x59,0xD1,0xA7,0x29,0x8E,0xDE,0x74,0x4C,0xA0,0x28}
[0049] };
[0050] 对每一组原始密码使用两个哈希函数计算得到CHECK数据,数据定义到0x08008800。
[0051] {0x845EEC5D,0x217FF267},{0x3CC29799,0x912207D8},{0x64F12ECB,0x6D794BD9},{0xB947D30E,0x779F3F52},
[0052] {0x24261A75,0x33839114},{0x5C1DFF70,0x63BD180F},{0x2C11F5C0,0x7E2DC802},{0x359056F3,0xFF4C91B7},
[0053] ……
[0054] {0x5A5FE818,0xF1719514},{0x0865E70C,0x895335CB},{0x88E4E92A,0x71592858},{0xC19E7C8B,0x1C0F226B},
[0055] {0xB1FF7B3D,0x7DA01D53},{0x8D7B4A68,0x77F8EC9F},{0xF34FB281,0x60DFA9A1},{0xCF41656E,0xCE439D9B}
[0056] };
[0057] 对每一组原始密码使用4个哈希函数计算得到16字节HASH1数据,HASH1数据对称加密得到CODE1,CODE1数据定义到0x08040000。
[0058] __root const unsigned char const_original_data_code1[128][16]@0x08040000={
[0059] {0x4A,0x90,0x2D,0x82,0xA5,0x95,0x1F,0x3F,0x63,0xCE,0x66,0x2C,0xE4,0x6B,0x00,0xC2},
[0060] {0x52,0x00,0x92,0x9D,0x68,0x6D,0xEE,0xA1,0x00,0x68,0x44,0x28,0x1A,0xAB,0xCA,0x4A},
[0061] ……
[0062] {0xD0,0xD9,0xE3,0xD3,0xF6,0x5C,0xC3,0xFE,0x41,0xB6,0x7C,0x25,0x72,0x57,0xD2,0x1D},
[0063] {0x77,0xD2,0x9F,0xB7,0x31,0xA8,0x4E,0xD5,0x54,0xFB,0xC5,0x2C,0x19,0x49,0xD7,0x0B}
[0064] }。
[0065] 2、单片机软件启动时,如果原始密码通过检验,则把原始密码使用4个哈希函数运算得到HASH1,HASH1加上UID再次进行哈希运算得到HASH2,HASH2对称加密得到CODE2,CODE2覆盖写入到原始密码区。
[0066] 单片机软件启动时,先从数据存储空间0x08008000读出128组16字节的原始密码,从数据存储空间0x08008800读出128组CHECK数据。对128组原始密码进行哈希运算得到128组检验值,如果每组原始密码计算得到的检验值等于CHECK数据,表示原始密码通过检验。如果原始密码通过检验,则把原始密码使用4个哈希函数运算得到HASH1,HASH1加上UID再次进行哈希运算得到HASH2,HASH2对称加密得到CODE2。使用单片机IAP功能把CODE2覆盖写入到原始密码区。CODE2覆盖原始密码后,原始密码不会再出现在单片机数据存储区,也无法通过CODE2推导出原始密码。同样地,由于CHECK数据为原始密码的哈希值,也不能通过CHECK数据反向推导出原始密码,所以原始密码不会泄露。启动时如果原始密码没有通过检验,则表示原始密码组已经处理过,不用再进行处理。
[0067] 原始密码存储在0x08008000,被下面128组CODE2数据覆盖。
[0068] {0x23,0x81,0xAF,0x1B,0x13,0x6F,0x4B,0x0A,0xBB,0x94,0x90,0xF1,0x1C,0xDD,0x29,0xCA},
[0069] {0xA4,0x39,0x1E,0x01,0x35,0x2E,0xD8,0x4B,0x8D,0x31,0x2C,0x7F,0xC5,0x3C,0x7B,0xC2},
[0070] ……
[0071] {0x9B,0x9C,0x86,0xFF,0xE2,0x01,0xDF,0xF5,0x6B,0xD3,0x80,0xE8,0xCD,0xE9,0x7D,0xFD},
[0072] {0x3B,0x97,0xC0,0x99,0x9A,0xE4,0x95,0x0E,0xF7,0x86,0x6B,0x09,0xBB,0xE9,0xFF,0x06}。
[0073] 3、单片机UID可以是芯片自带UID,也可以是其他不会重复的唯一编码。STM32F429IGT6单片机自身带有96bit的UID,存储在0x1FFF7A10-0x1FFF7A1B的地址空间。
单片机的UID可以作为加密运算的UID。
[0074] 4、单片机软件对UID的访问,使用间接地址进行访问。反向工程破解单片机软件时,通过扫描可以分析出单片机软件对0x1FFF7A10-0x1FFF7A1B的访问,从而修改函数返回结果为样机UID,达到破解软件的目的。所以对UID的访问使用间接地址的模式进行访问,避免访问地址被破解者直接识别出,这样可以提高反向工程的难度。
[0075] 5、在单片机软件中的多个位置,随机访问各组CODE1及对应的CODE2数据,通过计算进行正版验证。单片机软件中,要在尽量多的位置使用不同的数据组进行正版验证。正版验证过程中,随机读取一组CODE1数据,对CODE1数据进行对称加密得到HASH1数据,把HASH1加上UID进行哈希运算得到HASH2数据,再对HASH2数据进行对称加密,与对应的单片机数据存储区的CODE2数据进行比较,相同则表示软件为正版,否则软件为盗版。
[0076] 6、如果检测出软件为盗版,软件正常运行一段时间后再进行功能限制。
[0077] 单片机软件运行中,如果检测出软件为盗版软件,先不对软件的功能进行限制。等盗版软件运行一段时间后,再逐渐开始限制一些与安全无关的功能,降低产品质量和性能。
[0078] 本发明的有益效果:本发明提供的这种单片机软件的加密保护方法及存储介质,先随机生成多组原始密码,用哈希函数计算每组原始密码的检验值,每组原始密码经过多个哈希后得到HASH1,HASH1再对称加密得到CODE1,将原始密码、检验值及CODE1均烧录入单片机固定存储区域;然后预设并存储独立UID,并将通过检验的原始密码使用多个哈希函数运算得到HASH1,对HASH1加上独立UID并再次进行哈希运算得到HASH2,将HASH2对称加密后得到CODE2,将CODE2覆盖写入到原始密码的区域位置;最后随机访问不同的CODE1、CODE2数据组,通过计算进行正版验证。该方案支持应用编程功能的单片机软件的加密保护,使用单片机或者外设芯片等的独立UID和原始密码,验证单片机运行的软件是否为合法正版软件。产品生产过程简单,但可以很大程度上提高软件反向工程的难度,达到保护单片机软件的目的。
[0079] 以上例举仅仅是对本发明的举例说明,并不构成对本发明的保护范围的限制,凡是与本发明相同或相似的设计均属于本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈