一种微控制器目标代码保护方法及系统与流程

文档序号:11263511阅读:171来源:国知局
一种微控制器目标代码保护方法及系统与流程

本发明涉及微控制器加密技术领域,具体来说是对ip供应商的目标代码进行保护的一种微控制器目标代码保护方法及系统。



背景技术:

在现代产业分工合作的潮流下,有许多电子产业的设计公司可支持提供设备方案的电路图及核心目标代码给客户,以便客户进行生产及二次开发程序,而在这种合作模式下,如何保障ip供应商自主研发的知识产权,如目标代码等,并让ip供应商能够掌控客户的设备生产数量,是开发商和客户合作能够达成的关键所在。

现有技术中是在某些微控制器中会引入存储保护单元(mpu),通过存储保护单元就可以实现对部分代码块进行保护,阻止内部非法读出从而在保护自己代码的情况下,允许客户进行二次程序开发。比较常见的是单芯片二次开发模式和双芯片二次开发模式。

如图1所示,为单芯片二次开发模式流程,其主要是将微控制器存储区分为方案商代码存储区和客户代码存储区,存储保护单元可以保护方案商代码不被客户区代码读出。当具体操作时,第一步,首先由ip供应商把自己的代码写入方案商代码存储区(a),然后把微控制器交给客户;第二步,由客户把自己的代码写入客户代码存储区(b)。客户写入的客户代码可以调用方案商的代码执行,但不能读取代码的二进制值。

但这个方法有两个致命缺点,一是目标代码的写入必须由ip供应商自己写入,否则如果目标代码提供给客户写入,就会导致目标代码泄露,客户就可以不经过原作者许可,生产更多设备,从而无法控制客户的生产数量;二是出厂后的设备中的代码升级的问题,如果需要对受保护的目标代码进行升级,会碰到“目标代码写入”同样的问题,必须对出厂的设备召回,由原作者自己升级。

对此问题,也有一些解决方案,比如在设备中采用双芯片,如图2所示,为单芯片二次开发基础上改进的双芯片二次开发模式流程,这种方式通常是在设备的电路板上集成两颗微控制器,分别为微控制器a和微控制器b,微控制器a用于运行ip供应商的代码,微控制器b用于运行客户的代码。两微控制器之间通过通信接口进行交互。第一步,首先由ip供应商把自己的代码写入微控制器a,然后把微控制器a交给客户;第二步,客户把自己的代码写入微控制器b,再把微控制器a和微控制器b都装配到电路板上,但这种设计方案明显的增加了制造成本,并不适用于广泛推广使用。



技术实现要素:

本发明的目的在于提供一种微控制器目标代码保护方法及系统,在允许客户进行生产及二次开发程序的前提下,实现对ip供应商的目标代码的保护,并由此能有效控制客户的生产数量。

为了解决上述技术问题,本发明采用了如下的技术方案:

本发明提供一种微控制器目标代码保护方法,其中的微控制器内的存储空间分为安全密钥存储区、目标代码密文存储区和客户代码存储区,所述的目标代码保护方法的具体步骤为:

s1.写入安全密钥:ip供应商将安全密钥写入微控制器内部的安全密钥存储区;

s2.加密目标代码:ip供应商对需要保护的目标代码使用安全密钥进行加密,并将生成目标代码密文提供给客户;

s3.写入目标代码密文:将目标代码密文写入目标代码密文存储区;

s4.解密目标代码:微控制器内部的解密模块对目标代码密文进行解密,再将解密后的目标代码存入指令寄存器;

s5.写入客户代码:客户将客户代码写入微控制器中的客户代码存储区。

较佳地,所述的目标代码保护方法还包括:

s6.更新目标代码:在需要更新目标代码时,ip供应商使用安全密钥对更新后的目标代码进行加密,将生成的目标代码密文提供给客户,由客户将目标代码密文写入目标代码密文存储区,以更新微控制器中的目标代码。

较佳地,在步骤s4中,当微控制器的程序计数器需要读取目标代码时,由解密模块执行以下步骤:

s4-1.根据取指地址从目标代码密文存储区中读取目标代码密文;

s4-2.从安全密钥存储区中提取ip供应商写入的安全密钥;

s4-3.使用安全密钥对目标代码密文进行解密,形成目标代码明文;

s4-4.将目标代码明文存入指令寄存器。

较佳地,在所述步骤s3中,目标代码密文由ip供应商或客户或微控制器的生产商写入。

较佳地,对所述目标代码采用公开密钥算法进行加密或解密,所述的加密或解密的具体过程为:

a.将密钥进行密钥变换,并进行循环迭代,分别得到子密钥;

b.对目标代码进行分组后进行初始变换,得到目标代码初始数据;

c.在子密钥的控制下,对目标代码初始数据进行循环迭代,依次得到多个

目标代码数据;

d.分别对目标代码数据进行逆变换,形成目标代码密文或目标代码明文。

较佳地,所述的公开密钥算法为des或aes。

相较于现有技术,本发明提供的微控制器目标代码保护方法具有以下的优点和积极效果:

1.本发明由ip供应商对需要保护的目标代码使用安全密钥进行加密,生成目标代码密文,使得在程序运行时,必须通过微控制器内得解密模块对目标代码密文进行解密,不仅保证了目标代码的保密性,且目标代码密文的写入和升级过程都可由客户自行操作,降低了制造使用成本;

2.本发明是对微控制器执行的目标代码进行加密,且解密后的数据直接送微控制器的程序计数器中,不会对外输出明文数据,避免了目标代码的泄露;

3.由于本发明是在微控制器中写入安全密钥后才交给客户,在保护目标代码的基础上,ip供应商还可通过控制写入安全密钥的微控制器的数量来控制客户的生产数量;

4.解密过程是通过微控制器内部的解密模块配合微控制器内部的硬件进行,解密后的目标代码只存在于内部的指令寄存器中,即使用程序或各种调试手段也无法读取解密后的目标代码,保密程度高;

5.安全密钥只可由ip供应商写入,通过公开加密算法和私密密钥对目标代码进行加密,实现一设备对应一密钥的加密方式,私密性高,抗攻击强度高,有效保证了密钥的存储安全性。

本发明还包括一种微控制器目标代码保护系统,所述的微控制器包括存储模块、指令寄存器、程序计数器和解密模块,

存储模块内的存储空间分为安全密钥存储区、目标代码密文存储区、客户代码存储区,其中,

所述的安全密钥存储区用于存储对目标代码进行加密和解密的安全密钥;

所述的目标代码密文存储区用于存储目标代码密文,所述的目标代码密文由安全密钥对目标代码进行加密后生成;

所述的客户代码存储区用于存储客户二次开发的客户代码;

所述的解密模块分别连接存储模块、指令寄存器和程序计数器,用于接受程序计数器的指令从目标代码密文存储区中读取目标代码密文,并使用从安全密钥存储区中读取的安全密钥对目标代码密文进行解密,再将解密后的目标代码明文存入指令寄存器中。

较佳地,所述的安全密钥由ip供应商写入。

较佳地,所述的目标代码密文由ip供应商或客户或微控制器的生产商写入。

较佳地,对所述目标代码采用公开密钥算法进行加密或解密。

相较于现有技术,本发明提供的微控制器目标代码保护系统具有以下的优点和积极效果:

1.微控制器目标代码保护系统将微控制器中的存储区间合理分区,将安全密钥、目标代码密文和客户代码分别对应存入安全密钥存储区、目标代码密文存储区、客户代码存储区中,满足了客户二次开发代码的同时,避免了客户代码读写时目标代码的泄露,保证了目标代码的保密性;

2.ip供应商对需要保护的目标代码使用安全密钥进行加密,生成目标代码密文,使得在程序运行时,必须通过解密模块配合微控制器内部的硬件在微控制器内部进行解密,解密后的目标代码只存入指令寄存器中,即使用程序或各种调试手段也无法读取解密后的目标代码,保密程度高;

3.安全密钥只可由ip供应商写入,通过公开加密算法和私密密钥对目标代码进行加密,实现一设备对应一密钥的加密方式,私密性高,抗攻击程度低,有效保证了密钥的存储安全性;

4.目标代码密文可由ip供应商或客户或微控制器的生产商写入,方便后续的客户二次开发和更新目标代码密文,显著降低了微控制器的制造、使用成本。

附图说明

图1是现有技术中的单芯片二次开发模式示意图;

图2是现有技术中的双芯片二次开发模式示意图;

图3是本发明中目标代码保护方法的控制流程图;

图4是本发明中目标代码解密的流程示意图;

图5是本发明中分组密码算法的示意图;

图6是本发明中目标保护系统中微控制器的组成示意图。

具体实施方式

以下结合附图和具体实施例对本发明提出的技术方案进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用于方便、明晰地辅助说明本发明实施例的目的。

本发明在图1及图2所示的单芯片二次开发模式和双芯片二次开发模式的基础上,针对单芯片二次开发模式容易泄露目标代码,更新不便,而双芯片二次开发模式成本较高等技术问题,提供一种微控制器目标代码保护方法及系统,以满足客户进行生产及二次开发程序的前提下,在较低成本的情况下实现对ip供应商的核心目标代码的保护,并控制客户生产数量。现结合图3至图5对本发明的技术方案进行详细描述。

实施例1

本实施例详细描述本发明的微控制器目标代码保护方法,其流程图可参见图3,微控制器内的存储空间分有安全密钥存储区、目标代码密文存储区和客户代码存储区,目标代码保护方法主要分为以下几大步骤:

(1)写入安全密钥:ip供应商(即图中的方案商)将安全密钥写入微控制器内部的安全密钥存储区;

其中安全密钥是用于对目标代码的加密和解密,为确保安全密钥的保密性,安全密钥必须由ip供应商写入,并且只能被程序写入和被内部逻辑读取,不能被程序或各种调试手段(比如jtag)读取。

(2)加密目标代码:ip供应商对需要保护的目标代码使用安全密钥进行加密,并将生成目标代码密文提供给客户;

本实施例中对目标代码的加密算法采用的是公开加密算法,由于公开加密算法是经过实践长期检验的算法,其相较于私密加密算法,被攻击的可能性极低,一般加密算法优选为分组密码算法的des和aes等。

本发明中的分组密码算法为对称密码体制,加密和解密都使用同一个密钥,当加解密时,把目标代码明文或目标代码密文按一定长度进行分组,其实现原理见图5,以下以加密过程为例进行说明:

a.先将密钥按一定的变换规则进行密钥变换,经过若干轮的循环迭代,分别得到子密钥k1…kn;

b.将目标代码明文进行分组,对分组后的各明文组中的目标代码明文数据进行初始变换,得到目标代码明文初始数据d0;

c.按一定的加密变换规则,在子密钥k1…kn的控制下,对目标代码明文初始数据d0进行若干轮的循环迭代,依次得到目标代码明文数据d1、…dn;

d.最后对目标代码明文数据dn进行逆变换,形成目标代码密文;

解密形成目标代码密文的过程与对目标代码明文进行加密过程相同,且加密和解密使用相同的算法,在此不赘述,需注意的是,加密和解密唯一不同的是秘钥的次序是相反的。

由于目标代码密文是ip供应商采用安全密钥对目标代码进行加密后形成的,其可以防止反汇编逆向破解,也无法在没有写入安全密钥的微控制器中运行,以此保证目标代码的保密性。本发明的加密过程通过公开加密算法和私密密钥对目标代码进行加密,实现一设备对应一密钥的加密方式,私密性高,抗攻击程度低,有效保证了密钥的存储安全性。

当生成目标代码密文后,ip供应商可将目标代码密文提供给客户,以供客户可自行进行目标代码密文的写入。

(3)写入目标代码密文:将目标代码密文写入目标代码密文存储区;

目标代码密文的写入过程可由ip供应商或客户或微控制器的生产商写入,以方便后续的客户二次开发和更新目标代码密文,较佳地,为方便客户使用,通常是由ip供应商将目标代码密文提供给客户,当后续需要更新时,也可直接向客户提供更新后的目标代码密文。

(4)解密目标代码:微控制器内部的解密模块对目标代码密文进行解密,再将解密后的目标代码存入指令寄存器;

解密过程在微控制器的程序计数器需要读取目标代码时启动,目标代码的解密流程图请参见图4,主要是由解密模块进行处理,首先,解密模块根据取指地址从目标代码密文存储区中读取目标代码密文;并从安全密钥存储区中提取ip供应商写入的安全密钥;而后通过使用安全密钥对目标代码密文进行解密,形成目标代码明文;再将目标代码明文直接送入存入指令寄存器,不会对外输出明文数据,避免了目标代码的泄露,以在保密性极高的情况下完成目标代码密文的解密。

解密模块包括逻辑解密电路,通过逻辑解密电路控制读取目标代码密文,并使用安全密钥对目标代码进行解密,再存入指令寄存器。由于解密过程是通过微控制器内部的解密模块配合微控制器内部的硬件进行,解密后的目标代码只存在于内部的指令寄存器中,即使用程序或各种调试手段也无法读取解密后的目标代码,保密程度高。逻辑解密电路的电路连接结构是根据具体的加密、解密方式由不同的逻辑门、触发器等相互连接来实现,在此不做具体限定。

(5)写入客户代码:客户将客户代码写入微控制器中的客户代码存储区。

在完成上述操作后,客户则可以把客户代码通过程序写入微控制器的客户代码存储区,由客户在此微控制器的基础上对进行二次程序开发,扩展微控制器的功能模块。

此外,当需要对受保护的目标代码进行升级更新时,还可直接由客户对目标代码进行更新,其具体为:

(6)更新目标代码:在需要更新目标代码时,ip供应商使用安全密钥对更新后的目标代码进行加密,将更新后生成的目标代码密文提供给客户,由客户将更新后的目标代码密文写入目标代码密文存储区,以更新微控制器中的目标代码。

本发明的更新过程不同于现有的开发模式,无需对出厂的设备进行召回,ip供应商直接可将更新后的目标代码密文提供给客户,由客户自行升级,从而降低了微控制器的制造、使用成本。

本发明由ip供应商对需要保护的目标代码使用安全密钥进行加密,生成目标代码密文,使得在程序运行时,必须通过微控制器内得解密模块对目标代码密文进行解密,不仅保证了目标代码的保密性和安全性,且目标代码密文的写入和升级过程都可由客户自行操作,降低了制造使用成本。

由于本发明是在微控制器中写入安全密钥后才交给客户,只有写入密钥的微控制器,才能对目标代码进行解密。因此,在保护目标代码的基础上,ip供应商还可通过控制写入安全密钥的微控制器的数量来控制客户的生产数量。

实施例2

本实施例详细描述本发明的微控制器目标代码保护系统,可参图5,图5为微控制器的内部结构组成示意图,如图所示,微控制器包括存储模块、指令寄存器、程序计数器和解密模块,为了便于说明目标代码保护系统的原理,图中仅绘制了本系统所需的存储模块、指令寄存器、程序计数器和解密模块,微控制器内的其他模块在图6中并未详细绘出。

本系统将存储模块内的存储空间分为安全密钥存储区(a)、目标代码密文存储区(c)、客户代码存储区(b),通过合理分区,使安全密钥、目标代码密文和客户代码能分别对应存入安全密钥存储区、目标代码密文存储区、客户代码存储区中,满足了客户二次开发代码的同时,避免了客户代码读写时目标代码的泄露,保证了目标代码的保密性。现对各存储区进行详细说明:

安全密钥存储区(a):

安全密钥存储区(a)用于存储安全密钥,安全密钥用于对目标代码进行加密和解密,为保证安全密钥的安全性,安全密钥必须由ip供应商写入,并且只能被程序写入和被内部逻辑读取,不能被程序或各种调试手段(比如jtag)读取。

客户代码存储区(b):

客户代码存储区(b)用于存储客户二次开发的客户代码,以便客户在此微控制器的基础上对进行二次程序开发,扩展微控制器的功能模块。

目标代码密文存储区(c):

目标代码密文存储区(c)用于存储目标代码密文,目标代码密文由安全密钥加密目标代码后生成,其可以防止反汇编逆向破解,也无法在没有写入安全密钥的微控制器中运行,以此保证目标代码的保密性,此外,为方便后续的客户二次开发和更新目标代码密文,目标代码密文可由方案商、客户、或生产商写入。

解密模块(d):

解密模块(d)分别连接存储模块、指令寄存器和程序计数器,用于接受程序计数器的指令从目标代码密文存储区中读取目标代码密文,并使用从安全密钥存储区中读取的安全密钥对目标代码密文进行解密,再将解密后的目标代码明文存入指令寄存器中。

解密模块的解密主要通过逻辑解密电路实现,通过逻辑解密电路控制读取目标代码密文,并使用安全密钥对目标代码进行解密,再存入指令寄存器,使得程序运行时,必需通过解密模块配合微控制器内部的硬件在微控制器内部进行解密,解密后的目标代码只存入指令寄存器中,即使用程序或各种调试手段也无法读取解密后的目标代码,保密程度高。逻辑解密电路的电路连接结构是根据具体的加密、解密方式由不同的逻辑门、触发器等相互连接来实现,在此不做具体限定。

本实施例中对目标代码的加密或解密采用的是公开加密算法,由于公开加密算法是经过实践长期检验的算法,其相较于私密加密算法,被攻击的可能性极低,一般加密算法优选为des和aes等。

本发明中的分组密码算法为对称密码体制,加密和解密都使用同一个密钥,当加解密时,把目标代码明文或目标代码密文按一定长度进行分组,其实现原理见图5,以下以加密过程为例进行说明:

a.先将密钥按一定的变换规则进行密钥变换,经过若干轮的循环迭代,分别得到子密钥k1…kn;

b.将目标代码明文进行分组,对分组后的各明文组中的目标代码明文数据进行初始变换,得到目标代码明文初始数据d0;

c.按一定的加密变换规则,在子密钥k1…kn的控制下,对目标代码明文初始数据d0进行若干轮的循环迭代,依次得到目标代码明文数据d1、…dn;

d.最后对目标代码明文数据dn进行逆变换,形成目标代码密文;

解密形成目标代码密文的过程与对目标代码明文进行加密过程相同,且加密和解密使用相同的算法,在此不赘述,需注意的是,加密和解密唯一不同的是秘钥的次序是相反的。

通过安全密钥结合公开加密算法的形式实现一设备对应一密钥的加密方式,私密性高,抗攻击程度低,有效保证了密钥的存储安全性。

显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1