专利名称:基于安全mcu的嵌入式软件程序的加密装置的制作方法
技术领域:
本实用新型涉及一种嵌入式电子系统固件程序保护装置及方法,尤其涉及一种基于安全MCU的嵌入式软件程序的加密装置。
背景技术:
嵌入式电子产品已经日益普及,成为日常生活中不可缺少的一部分。安装在硬件 中的固件是存储电子设备执行基本操作所需信息的软件,通常是采用C语言或汇编语言经 过编译器编译得到的二进制代码,写入到存储器中(如Flash或ROM),而非法复制存储器中 的固件也相当容易。另一方面绝大多数的电子产品都采用相同的解决方案,各厂商间的硬件和软件平 台都相同,从而造成有部分人出于某种目的,应用别人的硬件平台来烧录自己的应用程序, 或者从Flash中读取应用程序二进制代码来用于自己的硬件平台,进行仿制。目前采用的一种加密方法是采用在ROM存储器的一个固定地址保存一个固定的 ID号,在固件程序启动后,读取ID号进行验证,此种方法在防止仿制起到了一定的作用,但 由于复制存储器中的内容相当容易,在知道采用的加密方法后,产品仿制也是相当容易的, 另一方面,采用此种加密办法,对于防止在其硬件平台上运行其它固件程序起不到任何作 用。加密的另一种方法是对固件程序二进制代码进行加密,在运行固件程序之前首先 进行解密。这种加密方法实施方法之一是额外开发一套解密程序,首先运行解密程序把固 件程序读取进行解密,保存为可执行的二进制代码形式,由此增加了额外的执行时间开销, 同时解密程序也是很容易被复制的。
发明内容本实用新型针对以上问题的提出,而研制一种以专用硬件平台,即设计专用的处 理器CPU,来执行加密的固件程序的双向验证的系统,实现防止对固件程序进行非法恶意刷 新或读取固件程序进行仿制。本实用新型采用的技术方案如下一种基于安全MCU的嵌入式软件程序的加密装置,其特征在于安全MCU同嵌入程 序固件通过数据通信总线相连接;所述安全MCU包括微控制器和验证模块A ;所述验证模块A包括随机数产生器、力口 密模块A、解密模块B和比较验证单元;所述随机数产生器,用于产生验证过程中使用的随机数;所述加密模块A,用于对随机数产生器产生的随机数进行加密处理;所述解密模块B,用于对安全MCU接收到的嵌入程序固件传回的加密数据进行解 密处理;所述比较验证单元,用于对随机数产生器随机数同解密模块B解密数据进行比 对,同时将解密结果发送给微控制器进行处理;[0013]所述嵌入程序固件包括主处理器和验证模块B ;所述验证模块B包括解密模块A、 加密模块B和比较验证单元;所述解密模块A,用于对嵌入程序固件接收到的加密数据进行解密处理;所述比较验证单元,用于将解密模块A还原的数据与预设的执行指令数据进行比较,并将比较结果发送给主处理器;所述加密模块B,用于对解密模块A解密的随机数进行再次加密;在使用时所述随机数产生器产生一个随机数通过数据线传输给加密模块A进行 加密,通过数据通信总线传输到验证模块B的解密模块A中进行解密,后通过与解密模块 A相连接的比较验证单元进行比较判断,当比对结果满足条件,主处理器控制嵌入程序固件 其它单元继续工作,当比对结果不满足条件,主处理器控制与其连接的加密模块B对解密 模块A解密的随机数进行再次加密,后通过数据通信总线将再次加密的随机数传送到验证 模块A的解密模块B中进行解密,在经过与解密模块B相连接的比较验证单元进行比较判 断,当比对结果不满足条件,微控制器控制可控电源切掉主处理器、固件存储器和随机存储 器的电源,当比对结果不满足条件,微控制器通过数据通信总线向主处理器发送继续执行 程序的控制指令。数据通信总线采用I2C、SPI、USB或RS232进行双向通行。本实用新型同现有技术相比其优点是显而易见的,具体如下1 采用了安全MCU,其加密技术相当成熟,程序代码不可读,防止了程序被复制, 价钱也比较便宜,种类繁多,开发技术也比较成熟。2 利用安全MCU与固件进行验证,只有通过验证固件才能正常执行,否则固件程 序进入死锁等待验证,由此单方面对固件程序进行恶意刷新或读取固件程序进行仿制都不 能正常工作,而MCU的加密保护技术已经相当成熟,部分MCU被破解的可能性几乎为零,从 而有效保护开发设计人员知识产权。3:另一方面本实用新型是固件自身加密,无需额外对固件二进制代码进行加密和 解密,实施更简便灵活,也可以与其他加密方法一起使用,进一步加强加密的强度。4:针对多数电子系统都已具备本实用新型实施的硬件架构,无需对硬件做过多的 改动。
图1为本实用新型的硬件系统架构示意图;图2为微控制器的验证模块细化结构示意图;图3为嵌入式系统固件的验证模构细化结构示意图;图4为本实用新型所述加密方法的流程图。
具体实施方式
如图1所示嵌入式软件程序的加密系统,是将安全MCU同嵌入程序固件通过数据 通信总线相连接,其中微控制器101—个重要的作用是对电源进行管理,固件应用程序在 启动后的开始部位由主处理器102与微控制器101通过总线进行通信,双方进行验证,若验 证通过,微控制器101对主处理器102发送指令继续执行下面的应用程序,否则主处理器102就停止执行下面的固件程序,进入死锁等待验证,而对于微控制器101会控制可控电源105切断主处理器102电源,由此达到对固件程序的加密。微控制器101采用的是安全MCU, 其程序存储器是不可读取的,各MCU生产厂商都有相应的型号,实际实施可以自由选择,对 于数据通信,最好采用具有硬件数据通信总线的MCU,方便程序的开发。如图2和图3所示对安全MCU和嵌入程序固件进行细化描述,以便进一步理解本 实用新型。其中安全MCU包括微控制器101和验证模块A2 ;所述验证模块A包括随机数产 生器201、加密模块A202、解密模块B204和比较验证单元205 ;随机数产生器201用来产生 验证过程中使用的随机数,其实现可以是硬件产生,也可以是软件实现,为了不增加硬件的 复杂度,本实施例采用软件实现,方法有迭代取中法、乘同余法、加同余法、混合同余法等, 各种实现方法本实用新型不再重述,可以查询相关资料。加密模块A202用于对随机数产生 器201产生的随机数进行加密,其加密算法也多种多样,本实施例中采用了异或的方法来 进行讲解,把随机数产生器201产生的随机数与一个固定的数进行异或运算来加密。数据 通信总线203最好是MCU自身由硬件实现,其通信是双向的,目前的MCU—般都支持一种或 几种,如I2C、SPI、USB、RS232,具体形式由所选择的MCU决定,数据通信总线采用软件模拟 也可以达到目的,不过其稳定性会降低,软件的开发难度也会增加,本实用新型还是建议采 用MCU自身由硬件实现。解密模块B204针对固件程序返还的数据进行解密,其解密方法与 固件程序中的加密方法相对应。比较验证205,把解密后的数据与原始随机数进行比较,MCU 根据结果做出相应的操作。其中嵌入程序固件包括主处理器102和验证模块B3 ;所述验证模块B包括解密模 块A302、加密模块B304和比较验证单元303 ;针对固件程序的验证模块结构及各部分之间 的联系进行了细化描述。其各模块的功能和实现方法与图2相同,值得注意的是两图中的 加密和加密模块各不相同,采用了不同的加解密方法在图中以A和B加以区别。比较验证 模块303用于判断解密的数据是指令还是验证数据,若为指令则固件程序就会跳出验证过 程,继续执行后面的应用程序代码。在具体执行过程中是由微控制器101发起验证,把加密数据传给主处理器102执 行的固件程序,固件程序进行解密后,把还原的数据以另外的加密算法重新加密后,返还给 微控制器101,最后微控制器101把返回的数据解密与原始的数据进行比较验证,并作出相 应的处理。同样的道理也可以由固件程序发起验证,而由微控制器101作出应答。下面结 合图4,给出一个具体验证过程实施例S1000 验证由微控制器101发起。S2000 由随机数器产生随机数,并进行存储,用于后续比较验证,假设产生的为8 位随机数10101010。S3000 利用公钥及加密算法A对S2000产生的随机数进行加密,并由数据总线如 I2C发送给固件程序。加密算法多种多样可自由选择,再此以公钥为11111111,加密算法采 用异或算法为例,则加密后的数据为01010101。S4000 =CPU中执行的固件程序接收到微控制器101发送的加密数据后,利用公钥 及加密算法A反运算将数据还原为原随机数10101010。S5000:固件程序把还原的数据与预设的执行指令数据进行比较,如果相同,则继 续执行后续固件程序代码,否则就执行S6000。[0037]S6000 在S5000的条件下,把加密后的数据利用公钥及加密算法B对S5000还原的数据进行再次加密,并有总线发送给微控制器101。S7000 微控制器101接收到固件返回的数据后,利用公钥及加密算法B反运算将 数据还原为原随机数10101010。S8000 把S7000还原的数据,与原始随机数进行比较,相同就执行S9000,否则就 作为验证失败,切掉主处理器102、固件存储器103、随机存储器104的电源。S9000 在S8000成立的条件下,微控制器101就向固件程序发送执行指令,完成验 证过程。综上所述,本实用新型采用了双向验证的方式,在双方验证时采用随机数加密的 方式,避免了固定数据固定加密算法可以通过示波器捕捉波形来解密,加强了解密的难度, 在进行验证时进行了两次加密和解密过程。双方的加密和解密方法各不相同,MCU的加密 方法与固件的解密方法相对应,同理固件的加密方法与MCU的解密方法相对应,由此实现 了双向验证。以上所述,仅为本实用新型较佳的具体实施方式
,但本实用新型的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本实用新型揭露的技术范围内,根据本实用 新型的技术方案及其发明构思加以等同替换或改变,都应涵盖在本实用新型的保护范围之 内。
权利要求一种基于安全MCU的嵌入式软件程序的加密装置,其特征在于安全MCU包括微控制器(101)和验证模块A(2);所述验证模块A包括随机数产生器(201)、加密模块A(202)、解密模块B(204)和比较验证单元(205);所述随机数产生器(201),用于产生验证过程中使用的随机数;所述加密模块A(202),用于对随机数产生器(201)产生的随机数进行加密处理;所述解密模块B(204),用于对安全MCU接收到的嵌入程序固件传回的加密数据进行解密处理;所述比较验证单元(205),用于对随机数产生器(201)随机数同解密模块B(204)解密数据进行比对,同时将解密结果发送给微控制器(101)进行处理;所述嵌入程序固件包括主处理器(102)和验证模块B(3);所述验证模块B包括解密模块A(302)、加密模块B(304)和比较验证单元(303);所述解密模块A(302),用于对嵌入程序固件接收到的加密数据进行解密处理;所述比较验证单元(303),用于将解密模块A(302)还原的数据与预设的执行指令数据进行比较,并将比较结果发送给主处理器(102);所述加密模块B(304),用于对解密模块A(302)解密的随机数进行再次加密;所述随机数产生器(201)产生一个随机数通过数据线传输给加密模块A(202)进行加密,通过数据通信总线(203)传输到验证模块B(3)的解密模块A(302)中进行解密,后通过与解密模块A(302)相连接的比较验证单元(303)进行比较判断并将比对结果发送到主处理器(102)中,所述主处理器(102)还控制与其连接的加密模块B(304)对解密模块A(302)解密的随机数进行再次加密,后通过数据通信总线(203)将再次加密的随机数传送到验证模块A的解密模块B(204)中进行解密,在经过与解密模块B(204)相连接的比较验证单元(205)进行比较判断;所述微控制器(101)控制可控电源(105)切掉主 处理器(102)、固件存储器(103)和随机存储器(104)的电源;所述微控制器(101)能够通过数据通信总线(203)向主处理器(102)发送继续执行程序的控制指令。
专利摘要本实用新型公开了一种基于安全MCU的嵌入式软件程序的加密装置,采用的安全MCU包括微控制器和验证模块A;所述验证模块A包括随机数产生器、加密模块A、解密模块B和比较验证单元;所述嵌入程序固件包括主处理器和验证模块B;所述验证模块B包括解密模块A、加密模块B和比较验证单元;以上系统采用MCU的加密方法与固件的解密方法相对应,同理固件的加密方法与MCU的解密方法相对应的双向验证的方式,实现了程序加密。该系统采用了安全MCU,其加密技术相当成熟,程序代码不可读,防止了程序被复制,价钱也比较便宜,种类繁多,开发技术也比较成熟,另外,针对多数电子系统都已具备本实用新型实施的硬件架构具有通用性适于广泛推广。
文档编号G06F21/22GK201556209SQ20092001697
公开日2010年8月18日 申请日期2009年8月25日 优先权日2009年8月25日
发明者姚磊, 朱兆勋, 王敏, 甄钊博 申请人:中国华录集团有限公司