基于碎片混沌迭代的固件动态加解密方法

文档序号:10491932阅读:248来源:国知局
基于碎片混沌迭代的固件动态加解密方法
【专利摘要】本发明名称为基于碎片混沌迭代的固件动态加解密方法。其涉及嵌入式系统固件生成、加密、发布、解密与烧录,尤其是涉及一种基于固件碎片进行混沌迭代的动态式加解密方法等技术领域。 该方法是为了保护厂商的固件中包含特有的知识产权,以防止被别的设备随意使用或利用其谋取非法商业利益。主要运用在嵌入式系统固件的生成、发布与烧录等过程中,对固件进行加解密处理。该方法原理:对固件进行n轮碎片处理与混沌迭代后,就像处于混沌状态下的碎片集合,已经无法让任何工具识别,以达到商业保密的作用。解密是加密的逆过程,将其推送或发送命令到目标机器的RAM上才能运作,并且与特定的CPU SOC加密相关联,以达到进一步的保护作用。
【专利说明】
基于碎片混沌迭代的固件动态加解密方法
技术领域
[0001]本发明涉及嵌入式系统固件生成、加密、发布、解密与烧录,尤其是涉及一种基于固件碎片进行混沌迭代的动态式加解密方法等技术领域。
【背景技术】
[0002]固件(Firmware)是一组由编译器生成的二进制文件,是一种嵌入在硬件设备中的软件。通常它是位于特殊应用集成电路(ASIC)或可编程逻辑器件(PLD)之中的闪存、EEPROM或PROM里,有的可以让用户更新。可以应用在非常广泛的电子产品中,从移动设备、遥控器、计算器到电脑中的键盘、硬盘,甚至工业机器人中都可见到它的身影。
[0003]顾名思义,固件是软件和硬件之间的纽带。像软件一样,它是一个被硬件系统所运行的程序。然而它是对于硬件内部而言更加贴近以及更加重要的部份,而对于外在的世界而言,则无足轻重。在产品生产时,固件一般由生产线上的工人或相应的技术员负责把固件烧录到产品中去,然后再进行一系列的工厂测试与验证。固件的烧录效率,直接影响到其生产效率。
[0004]随着技术的日新月异,如今的固件,在不同的应用领域中,还可能包含系统软件与应用软件。大致可包含启动加载程序,内核文件,文件系统(包括RAM或ROM文件系统)以及故障应急与恢复程序等。
[0005]固件烧录是这样一个过程,在主机(通常为PC)上运行烧录工具,以一定的通信方式将设备的存储区擦除或格式化后,通过一定的协议或方式(如串口,USB等)把固件写在预先设定好的存储区地址范围内。当前流行的存储设备有Nand Flash, Nor Flash以及eMMC等,简单地说,烧录固件就是对以上三种设备的读写操作。目前行业上的固件发布与烧录,都是直接对二进制固件进行,没有进行对固件的加密保护,大多数甚至连基本的文件校验都没有。随着近年来智能设备迅速增加,固件已经越来越多,越来越普遍。不同设备中,固件可能已经相互兼容,而有些厂商的固件中包含其大量或特有的知识产权,不希望被别的设备随意就使用或利用其谋取非法商业利益。因此,对于一些厂商而言,为其特定设备或特定行业而发布的固件需要有一种保护的机制。为了解决这一工程问题,我们提出一种固件加密方法。该方法,安全,简单易用,又符合工程学。固件经过基于碎片混沌迭代的方法加密后,就像处于混沌状态下的η块碎片的组合,已经无法让任何工具识别,更加不能烧录了,以达到商业保密的作用。解密程序作为烧录工具的一部分而存在,其必须推送或发送命令到目标机器的RAM上才能运作,并且与特定的CPU SOC加密相关联。
[0006]传统的加解密方法,一则需求较好性能的设备来运行,二则花费加解密时间比较长。特别是在主频比较低且内存较少的嵌入式设备中运行比较吃力,此外当固件比较庞大时就更加费劲了。更重要的是,从工程上考虑,传统的算法,如AES,RSA, SHA与MD5等,在嵌入式设备中涉及到众多的库与交叉移植编译等困难因素,实现起来工程量比较大,损耗大量的研发与生产成本,而且不易于扩展与再生使用。
[0007]碎片,原指零星破碎的物片。在这是特指将二进制固件文件进行η次撕碎后很细小的碎片文件或一组数量众多的二进制码数据。一定顺序的m块碎片便组成了原始的二进制固件文件。
[0008]混沌,原指发现宇宙混乱状态的描述,古希腊哲学家对于宇宙之源起即持混沌论,主张宇宙是由混沌之初,逐渐形成现今有条不紊的世界。在井然有序的宇宙中,西方自然科学家经过长期的探讨,逐一发现众多自然界中的规律,如大家熟知的地心引力、杠杆原理、相对论等。这些自然规律都能用单一的数学公式加以描述,并可以依据此公式准确预测物体的行径。混沌理论是一种兼具质性思考与量化分析的方法,用以探讨动态系统中无法用单一的数据关系,而必须用整体,连续的数据关系才能加以解释及预测之行为。“一切事物的原始状态,都是一堆看似毫不关联的碎片,但是这种混沌状态结束后,这些无机的碎片会有机地汇集成一个整体”。
[0009]混沌迭代,即利用混沌算法将碎片进行相互迭代,并且对碎片进行标记。不同混沌迭代的方式,对应不同的一系列密钥,不同的固件(不同版本)的加解密方法也不尽相同,从而实现动态(密钥)加密的功能。
[0010]目前,行业的常用作法都是把固件与烧录工具,甚至设备参数都是直接暴露给客户的。而现有的一些专利,只涉及了简单的固件烧录方法或者固件完整性校验之类的技术。如CN200710143037.X多核终端的固件升级方法,CN200810217615.4基于数字签名的固件升级、固件封装方法与装置等。它们都没有涉及如何保护固件或者如果制定私有烧录工具等方面。

【发明内容】

[0011]本发明旨在通过基于固件碎片进行混沌迭代的动态加解密方法,在整个固件生成、发布、烧录等过程进行一一控制,以保护厂商的商业机密与商业利益。该方法,即简单又安全,工程实现容易。
【附图说明】
[0012]图1为固件生成,发布与烧录示意图。
[0013]密钥生成与使用示意图。已经包含在说明书附图2中,此略。
[0014]图2为加密流程图。
[0015]图3为解密流程图。
【具体实施方式】
[0016]使用基于固件碎片进行混沌迭代的动态加解密方法,对固件的商业保护的实用流程大体如下:
一、编译工程代码生成二进制固件。二、使用固件碎片混沌迭代的动态加密方法,对固件进行加密。三、发布加密后的固件给客户(也可以与改造后的烧录工具一起发布)。四、客户烧录固件。五、在烧录过程中,烧录工具把固件推送到设备的内存中进行解密处理。六、解密处理完成后,再把目标固件写入到特定地址的存储区内。
[0017]加密方法,主要涉及固件碎片生成器、混沌序列生成器、混沌迭代单元、轮转控制单元、密钥输出单元、固件输出单元、固件校验器、二进制数据生成器、二进制处理单元。
[0018]加密算法如下:
一、对原始二进制固件FWO (大小为SIZEO字节),对每位二进码进行取反运算,但保持位置不变,输出固件FWOO与FWO的md5值md5_FW0。出于工程考虑,不宜进行复杂的位运算或为此引入新密钥与之对应。二、使用Logistic映射生成混沌序列组FGGm(FGG1,FGG2, FGG3,…,FGGm),要求每个序列的总和均为SIZE0.例如FGGl (FGG1_1, FGG1_2,FGG1_3,…,FGGl_n),分别对应 FW1_1, Fffl_2, Fffl_3,…,FWl_n 所有碎片大小(单位:字节)。Logistic映射是研究动力系统、混沌、分形等复杂系统行为的一个经典模型。Logistic映射又叫Logistic迭代,其实就是一个时间离散的动力系统,即按照如下方程进行反复迭代:
X(t+1)= ux(t)(l-χ (t))
其中,t为迭代时间步,对于任意的t,x(t)在[0,I],u为一可调参数,为了保证映射得到的x(t)始终位于[0,1]内,则u在[0,4] ο当变化不同的参数u的时候,该方程会展现出不同的动力学极限行为(即当t趋于无穷大,x(t)的变化情况),包括:稳定点(S卩,最终x(t)始终为同一个数值)、周期(x(t)会在2个或者多个数值之间跳跃,以及混沌:x(t)的终态不会重复,而会等概率地从某区间中取值)。该模型可以用来模拟生物种群的生长行为,所以Logistic映射也叫“虫口模型”。其中x(t)可以解释为在t时刻种群占最大可能种群规模的比例。我们将原方程变形为:
X (t+1) - X (t) = (u-1) X (t) - ux (t) '2
其中左边可以解释为种群的生长率(即一个单位周期内,种群数量的变化)。右侧第一项可以解释为虫种群的出生,第二项则为种群的消亡。其中消亡项和x(t)~2有关,也就是说种群数量越多,消亡得越快,这体现为该种群内部由于资源有限而引起的竞争。Logistic映射是一种非常简单却被广泛应用的混纯序列产生器,其中取u=4, Logistic映射可以定义在(0,I)上,相应地得到定义在(0,I)上的混沌序列是{ Xk,k=0, I, 2…}。三、把固件FWii (首轮从FW00开始)按文件偏移顺序分拆成η块碎片,η块碎片对应η块碎片序号,碎片大小序列为FGGi(FGGi_l,FGGi_2, FGGi_3,…,FGGi_n)。每块碎片,分别对应碎片序列FGGi的每项大小。同时碎片文件命名为FGGii (FGGi_l,FGGi_2, FGGi_3,…,FGGi_n),且所有碎片大小总和为SIZEO字节。四、使用二进制数据生成器随机生成m块碎片文件(Fl,F2, F3, F4,..., Fm,简称 F),碎片大小与 FGGii (FGGi_l, FGGi_2, FGGi_3,…,FGGi_n)在同一数量级别,且均不相等。五、对整数序列1,2,3,...,η进行随机处理,产生新的序列SNGi。将碎片Fi分别与碎片文件FGGii (FGGi_l,FGGi_2, FGGi_3,…,FGGi_n)进行前后文件连接(合并)后,按着SNGi序列号进行重命名(碎片迭代),形成新的序号文件FGGii (FGGi_l,FGGi_2, FGGi_3,…,FGGi_n)。然后按着顺序进行文件连接(合并),形成新文件的FWii。六、按照本节三至五步骤的方法,生成随机序列SNG2,SNG3,…,SNGm。加上SNG1,共产生m个随机整数序列(I至η范围)。然后将i进行m轮的文件连接(合并),最后形成FWmm。其中每一轮,都是首先按FGGi混沌序列大小进行撕碎分成η块碎片,再按顺序碎片为Fi的方式进行连接(合并),然后按着SNGi序列中的随机序列进行重命名(碎片迭代),最后按着顺序进行文件连接(合并),形成新文件的FWii。七、Fffmm,即是最终形成加密后的目标固件文件。八、输出固件文件FW,即FWmm。九、输出密钥,内容如下: A.混沌序列组 FGGm(FGGl, FGG2, FGG3,...,FGGm)。B.随机序列组 SNGm(SNGl,SNG2, SNG3,..., SNGm)。C.附加碎片序列 Fm(Fl, F2, F3,..., Fm)。D.固件文件 FWO的md5校验码md5_FW0。E.固件文件FWmm的md5校验码md5_FWmm。
[0019]解密方法,主要是加密方法的逆过程,类似于对称密码的思想。
[0020]解密算法如下:
一、校验已加密固件FW的md5校验码是否与md5_FWmm相同,以确保固件的完整性。否则固件非法,解密失败。二、将固件FW进行二进制按位取反,数据位置保持不变,生成新固件文件_FW00。三、把混沌序列组FGGi按SNGi的顺序分别进行排序,再将Fi大小相加到该序列组的每一项,即得到新的序列组_FGGi。按照_FGGi的每项大小,把_FWii (首轮从_FffOO开始)文件按着相应顺序进行碎片拆分,得出碎片文件组_FWGi (_FWGi_l, _FWGi_2, _FWGi_3,…,_FWGi_n)。四、把碎片文件组_?讯^(_?讯^_1,_FWGi_2, _FWGi_3,…,_FWGi_η)分别切除首部分的Fi字节大小后,再按顺序连接(合并)成新的文件_FWii。五、按照本节三至四步骤的方法,将i进行m轮的迭代,依次产生文件_?胃11,_FW22, _FW33,…,_FWmm。FWii是利用上一轮的迭代结果_FW(m-l) (m-1)再次迭代产生的。六、校验固件_FWmm的md5校验码是否与md5_FW0相同,以确保解密后的正确性。如相同则解密成功,否则解密失败。
【主权项】
1.基于碎片混沌迭代的固件动态加解密方法,包括基于碎片混沌迭代的固件加密方法(I)与基于碎片混沌迭代的固件解密方法(2)。2.根据权利要求1所述的基于碎片混沌迭代的固件加密方法(I),其特征在于:运用混沌理论与混沌算法,对固件进行碎片处理,再经过η轮的迭代而成的加密算法(3);在η轮的迭代过程中产生动态密钥(4),该密钥用于固件解密方法(2)的解密过程。3.根据权利要求2所述的加密算法(3),其特征在于:由固件碎片生成器(5)、混沌序列生成器¢)、混沌迭代单元(7)、轮转控制单元(8)、密钥输出单元(9)、固件输出单元(10)、固件校验器(11)、二进制数据生成器(12)、二进制处理单元(13)组成。4.根据权利要求3所述的固件碎片生成器(5)其特征在于:将固件撕碎成非常细小的文件碎片,并进行顺序标记,每块碎片大小均不尽相等。5.根据权利要求3所述的混沌序列生成器(6)与混沌迭代单元(7)其特征在于:利用Logistic映射生成混沌序列再对应碎片大小处理以及将碎片按一定的随机序列进行迭代(排序)与连接(合并)等操作,从而形成加密后的固件。6.根据权利要求3中所述的密钥输出单元(9)其特征在于:密钥包含混沌序列组FGGm (FGG I, FGG2, FGG3,...,FGGm)、随机序列组 SNGm (SNGl, SNG2, SNG3,...,SNGm)、附加碎片序列Fm(Fl, F2, F3,..., Fm)、固件文件FffO的md5校验码md5_FW0、固件文件Fffmm 的 md5 校验码 md5_FWmm。7.根据权利要求1中所述的基于碎片混沌迭代的固件解密方法(2),其特征在于:解密方法,主要是加密方法的逆过程(14),类似于对称密码的思想。8.根据权利要求7中所述的加密方法的逆过程(14),是利用密钥输出单元(9)的动态密钥(4)进行碎片大小处理以及将碎片按一定的密钥序列进行迭代(排序)与切除等操作,从而形成解密后的固件。
【文档编号】H04L9/00GK105846989SQ201510020351
【公开日】2016年8月10日
【申请日】2015年1月14日
【发明人】陈建荣, 陈鹏昆, 张飞跃
【申请人】深圳市伦琴科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1