欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 带主动防御功能的功能模块的MCU设计方法独创技术45305字

带主动防御功能的功能模块的MCU设计方法

2021-03-01 17:01:57

带主动防御功能的功能模块的MCU设计方法

  技术领域

  本发明属于MCU安全防御技术领域,具体涉及一种带主动防御功能的功能模块的MCU设计方法。

  背景技术

  现在的通用MCU启动时缺失信息安全确认,无主动防御功能的弊端,容易被黑客入侵系统,系统容易出现无法自主可控的风险。我国金融、电信、能源、物联网等关键领域的对于MCU的依赖度非常高,一旦出现安全问题,甚至会直接威胁到社会安全。通用MCU在启动时,硬件POR电路发现上电之后,会产生一个复位信号,然后时钟启动,CPU就开始读取flash的数据,并执行程序,系统开始运行。期间硬件不会对启动电路,Flash,RAM,以及嵌入式程序进行可信度量,一旦发生嵌入式程序已被破坏或者嵌入了木马,CPU会无差别执行木马程序当成正常程序,系统处于不可控状态。

  授权公告号为:CN104777761B,主题名称为实现MCU安全性的方法及电路的发明专利,其技术方案公开了“MCU上电后,利用电源监测电路把MCU芯片内部的总复位信号置位“1”,然后,启动MCU芯片内部的RC振荡电路,同时启动上电复位自适应电路;该上电复位自适应电路立即读取存放于Flash安全位置的128位安全密钥;并将该安全密钥存放在密码匹配电路,之后释放所述总复位信号;JTAG调试接口默认是关闭状态;当MCU芯片工作后,所述密码匹配电路开始工作;当外部输入密码时,所述密码匹配电路对该密码与其保存的安全密钥进行匹配确认,当匹配确认为正确后,所述JTAG调试接口打开,否则进行全MCU芯片的擦除;在所述上电复位自适应电路的控制下,根据所述RC振荡电路输出的时钟,每经过1024个时钟进行flash的读操作,读取flash内的flash校验码;如果无法读取到正确的flash校验码,则再经过1024个时钟之后,继续读取flash校验码,直到能够正常读取到正确的flash检测码,之后读取128位安全密钥”。

  以上述发明专利为例,其虽然也提及了MCU的安全保护,但是其技术方案更多涉及的是硬件本质上对MCU进行安全保护,而本发明不仅仅在硬件本质上进行安全保护,还通过主动防御电路使之具有主动性、智能化和安全可控性。因此,针对上述问题,予以进一步改进。

  发明内容

  本发明的主要目的在于提供一种带主动防御功能的功能模块的MCU设计方法,其各个功能模块在启动之前都通过可信MCU附带的主动防御机制所认证,达到整体系统安全可控的目的,在启动每一个新功能模块之前,都会对于这个功能模块进行可信度量,即先确认这个功能模块没有受到破坏,没有木马嵌入,没有非法数据探测状态,一步一度量,直到MCU正常启动运行程序。

  本发明的另一目的在于提供带一种主动防御功能的功能模块的MCU设计方法,其会对所有功能模块都具有主动防御性能,可以主动防御外界恶意侵入,在CPU启动各功能模块之前,会先对各功能模块进行可信度量,保证各模块安全可控之后才会执行各功能模块的允许,逐级认证保证整体系统的安全可控。

  为达到以上目的,本发明提供一种带主动防御功能的功能模块的MCU设计方法,MCU各个功能模块在启动之前均通过主动防御机制所认证,包括以下步骤:

  步骤S1:MCU上电启动;

  步骤S2:MCU对在高级MCU总线矩阵上的各个功能模块进行可信度量;

  步骤S3:MCU在对外围电路总线矩阵上的各个功能模块进行可信度量。

  作为上述技术方案的进一步优选的技术方案,步骤S2具体实施为以下步骤:

  步骤S2.1:MCU分别通过主动防御电路对CPU模块、Flash控制模块和RAM控制模块进行可信度量;

  步骤S2.2:MCU分别通过主动防御电路对USB控制模块、DMA控制模块和密码算法模块进行可信度量;

  步骤S2.3:MCU分别通过主动防御电路对时钟控制模块和复位控制模块进行可信度量。

  作为上述技术方案的进一步优选的技术方案,步骤S3具体实施为以下步骤:

  步骤S3.1:MCU分别通过主动防御电路对通讯控制模块和计数器控制模块进行可信度量;

  步骤S3.2:MCU分别通过主动防御电路对模拟电路控制模块和电源控制模块进行可信度量。

  作为上述技术方案的进一步优选的技术方案,步骤S2.1具体实施为以下步骤:

  步骤S2.1.1:CPU模块被灌入时钟后连续给出CPU信息;

  步骤S2.1.2:硬件对比固化在CPU模块中的CPU信息并且当CPU信息出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S2.1.3:主动防御电路(1)分别对CPU模块、Flash控制模块、RAM控制模块和密码算法模块的最顶层金属布满安全屏蔽布线并且安全屏蔽布线被灌入时钟后启动发送电路和接收电路,接收电路接收并且解析发送电路发送的特征序列,当特征序列出现错误或者最顶层金属被切断时,MCU处于复位状态并且从端口输出报警信息;

  主动防御电路(1)具体实现方法(CPU模块包括CPU和调试接口,在CPU和调试接口之间加入主动防御电路(1)):

  (a)MCU上电启动并且POR电路启动之后,CPU启动之前,会对CPU模块进行可信度量。POR电路释放POR信号的同时启动内部时钟电路,有时钟灌入CPU模块,CPU模块会连续给出CPUID,复位地址等信息。硬件同时对比固化在电路里面的CPUID,复位地址等信息,一旦出现错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。

  (b)同时在CPU模块、Flash控制模块、RAM控制模块和密码算法模块的最顶层金属布满安全屏蔽布线(时钟线+数据线),通过时钟灌入,安全屏蔽布线收发电路启动工作,发送电路发出某种特征序列的协议,接收电路接收这个附带某种特征序列的数据,并解析。一旦发现芯片(即MCU)被某些探针探测,探针有寄生电容,高速序列就会出错,或者一旦发现芯片被开盖并把顶层金属切断,那么接收器收不到某种特征序列,时间超时之后,MCU被锁死,同时报警。

  使用这样的设计方法可以实现CPU模块(电路)的主动防御机制,但不限于此种方式实现CPU电路的主动防御。

  步骤S2.1.4:Flash控制模块的第一Flash单元在CPU模块经过可信度量后,主动防御电路(2)发出一段不连续的地址到第一Flash单元并且第一Flash单元根据不连续的地址输出第一Flash数据,硬件对比固化在Flash电路中的第一Flash数据并且当第一Flash数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S2.1.5:当第一Flash单元通过可信度量后CPU开始执行安全启动程序,当安全启动程序的运算结果符合存在第一Flash单元的运算结果,则CPU运行Flash控制模块的第二Flash单元,否则MCU处于复位状态并且从端口输出报警信息;

  主动防御电路(2)实现方法(Flash控制模块包括Flash控制器和Flash电路,主动防御电路(2)位于Flash控制器和Flash电路之间):

  (a)Flash基本有2块电路实现,第一块小Flash属于安全存储器(第一Flash单元),这块小Flash也可以是ROM,OTP,MTP等存储器电路,存储着各类安全数据,安全启动程序,客户无法使用到这块Flash,第二块大Flash属于开放给客户使用的Flash(第二Flash单元)。

  (b)安全存储器在CPU经过可信度量之后,CPU执行安全存储器中的安全启动程序之前,MCU硬件会对安全存储器进行可信度量,安全存储器主动防御电路会发出一段特殊不连续的地址给这个安全存储器,同时硬件监测这块安全存储器输出的数据,对比固化在电路里面的安全存储器的相对应信息,一旦出现错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。如果正确,Flash主动防御电路(主动防御电路(2))运行CPU执行安全启动程序。

  (c)CPU开始执行安全启动程序之后,会调用用户Flash特性信息可信度量的安全程序,即安全启动程序会启动Flash数据与Hash算法(比如国际算法SHA,国密算法SM3)进行可信度量,把数据发送到Hash算法中,如果运算结果符合存在安全存储器里面的运算结果,则表示用户Flash是可信的,那么CPU可以运行客户程序。一旦出现结果对比错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。

  使用这样的设计方法可以实现Flash或存储器电路的主动防御机制,但不限于此种方式实现Flash或存储器电路的主动防御。

  步骤S2.1.6:主动防御电路(3)发出不连续的地址到RAM控制器并且RAM控制器根据不连续的地址输出RAM数据,硬件对比固化在RAM电路中的RAM数据,并且当RAM数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S2.1.7:RAM控制模块通过可信度量后,对RAM控制模块进行清零;

  步骤S2.1.8:主动防御电路(3)在每个字节RAM均附加一位奇偶校验数据,当CPU模块读取RAM控制模块中的变量时,如果奇偶校验数据不匹配,MCU处于复位状态并且从端口输出报警信息。

  主动防御电路(3)实现方法(RAM控制模块包括RAM控制器和RAM电路,主动防御电路(3)位于RAM控制器和RAM电路之间):

  (a)RAM具有一个特有的特性,RAM上电之后,RAM内部数据是根据不同芯片因为工艺细微的变化,有不同的数据,把这个特性数据当成MCU的身份数据。RAM主动防御电路会发出一段特殊不连续的地址给RAM,同时硬件监测这块RAM输出的数据,对比固化在电路里面的RAM的相对应信息,一旦出现错误,从某个MCU端口输出报警信号,芯片处于复位状态。

  (b)在确保RAM是安全可信,上电后数据保持特征值,说明没有被篡改之后,对于所有RAM内容进行清零动作,这样任何恶意数据都不会存在于RAM内部。

  (c)RAM主动防御电路同时在每个字节RAM都附加一位奇偶校验数据。在用户写入变量时,同时会把这个字节的奇偶校验位写入RAM主动防御电路,一旦有异常侵入,或者被恶意探测,篡改某些变量,一旦CPU读取RAM中的变量,发现奇偶校验与RAM的数据不匹配时,从某个MCU端口输出报警信号,芯片处于复位状态。

  使用这样的设计方法可以实现RAM电路的主动防御机制,但不限于此种方式实现RAM电路的主动防御。

  作为上述技术方案的进一步优选的技术方案,步骤S2.2具体实施为以下步骤:

  步骤S2.2.1:CPU模块在启动USB控制模块之前发送一段特征序列到主动防御电路(4)并且主动防御电路(4)返回固化的USB数据,当CPU模块接收到正确的USB数据,则USB电路通过可信度量;

  步骤S2.2.2:USB控制模块在输出时根据MCU的内部加密算法进行加密;

  主动防御电路(4)实现方法(USB控制模块包括USB控制器和USB电路,主动防御电路(4)位于USB控制器和USB电路之间):

  (a)对于USB的主动防御电路可以这样实现,在USB电路内建一组特征数据,CPU模块启动USB控制模块之前,先发送一段特征序列给USB主动防御电路(主动防御电路(4)),USB主动防御电路会返回固化的数据,如果CPU接受到这组正确的数据,说明USB电路是安全可信的,中间没有出现恶意探测或者切断信号,USB是安全可信的,这样CPU可以与USB相互交换数据。

  (b)对于USB输出的数据,因为MCU内建了很多加密算法,输出的数据可以根据MCU的ID,日期时间,秘钥Key作为加密的秘钥对于数据进行加密,这样USB输出的数据都是带加密算法的密文,就算数据被恶意截取,非授权的使用者也得不到真正的数据。

  使用这样的设计方法可以实现USB电路的主动防御机制,但不限于此种方式实现USB电路的主动防御。

  步骤S2.2.3:CPU模块在启动DMA控制模块之前发送一段特征序列到主动防御电路(5)并且主动防御电路(5)返回固化的DMA数据,当CPU模块接收到正确的DMA数据,则DMA电路通过可信度量;

  主动防御电路(5)实现方法(DMA控制模块包括DMA控制器和DMA电路,主动防御电路(5)位于DMA控制器和DMA电路之间):

  (a)对于DMA的主动防御电路(主动防御电路(5))可以这样实现,在DMA电路内建一组特征数据,CPU模块启动DMA控制模块之前,先发送一段特征序列给DMA主动防御电路,DMA主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明DMA电路安全可信的,中间没有出现恶意探测或者切断信号,DMA电路是安全可信的,CPU模块可以与DMA控制模块相互交换数据。

  使用这样的设计方法可以实现DMA电路的主动防御机制,但不限于此种方式实现DMA电路的主动防御。

  步骤S2.2.4:CPU模块在启动密码算法模块之前发送一段特征序列到主动防御电路(6)并且主动防御电路(6)返回固化的密码算法数据,当CPU模块接收到正确的密码算法数据,则密码算法电路通过可信度量。

  主动防御电路(6)实现方法(密码算法模块包括密码算法处理器和密码算法电路,主动防御电路(6)位于密码算法处理器和密码算法电路之间):

  (a)对于密码算法模块的主动防御电路(主动防御电路(6))可以这样实现,在不同密码算法模块电路内建一组特征数据,CPU模块启动密码算法模块之前,先发送一段特征序列给密码算法模块主动防御电路,密码算法模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明密码算法模块电路是安全可信的,中间没有出现恶意探测或者切断信号,密码算法模块是安全可信的,CPU可以与密码算法模块相互交换数据。

  (b)CPU模块可以在真正使用密码算法模块之前,可以先进行特定数据的密码算法,比如CPU模块把特定的数据,秘钥发给密码算法模块进行运算,密码算法模块的主动防御电路进行实时监控密码算法给出的数据以及给出数据的周期,如果都符合的话,则说明这个密码算法电路是安全可信的,一旦出现错误,主动防御电路立刻复位MCU,并从某个MCU端口输出报警信号。

  使用这样的设计方法可以实现密码算法模块电路的主动防御机制,但不限于此种方式实现密码算法模块电路的主动防御。

  作为上述技术方案的进一步优选的技术方案,步骤S2.3具体实施为以下步骤:

  步骤S2.3.1:CPU模块在启动时钟控制模块之前发送一段特征序列到主动防御电路(7)并且主动防御电路(7)返回固化的时钟数据,当CPU模块接收到正确的时钟数据,则时钟电路通过可信度量。

  主动防御电路(7)实现方法(时钟控制模块包括时钟控制器和时钟电路,主动防御电路(7)位于时钟控制器和时钟电路之间):

  (a)对于时钟模块的主动防御电路(主动防御电路(7))可以这样实现,在不同时钟控制模块电路内建一组特征数据,CPU模块启动时钟控制模块之前,先发送一段特征序列给时钟控制模块主动防御电路,时钟控制模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明时钟电路是安全可信的,中间没有出现恶意探测或者切断信号,时钟电路是安全可信的,CPU可以启用时钟电路。

  (b)对于时钟模块的主动防御电路也可以这样实现,某个时钟的频率基本是固定的,这样就可以使用其他时钟监控这个重要时钟的频率,一旦发现这个时钟高于某个频率,或者低于某个频率,那么说明这个重要时钟被外部说探测或者控制,时钟模块主动防御电路(主动防御电路(7))马上发出复位信号给MCU,MCU接收到这个信号,就处于复位状态并发出警报。

  使用这样的设计方法可以实现时钟模块电路的主动防御机制,但不限于此种方式实现时钟模块电路的主动防御。

  主动防御电路(8)实现方法(复位控制模块包括复位控制器和复位电路,主动防御电路(8)位于复位控制器和复位电路之间):

  (a)复位模块的主动防御电路(主动防御电路(8))是最重要的一部分,他是可以接受到所有功能模块的主动防御电路发出的信号,然后复位MCU,MCU接收到这个信号,就处于复位状态并发出警报。

  (b)这个复位控制模块还有一个作用在于如实记录各主动防御电路发出的异常报警,并记录在内部或者外部Flash存储器之内,做到所有异常攻击是被记录的,实现可信审计。

  使用这样的设计方法可以实现复位模块电路的主动防御机制,但不限于此种方式实现复位模块电路的主动防御。

  作为上述技术方案的进一步优选的技术方案,步骤S3.1具体实施为以下步骤:

  步骤S3.1.1:CPU模块在启动通讯控制模块之前发送一段特征序列到主动防御电路(9)并且主动防御电路(9)返回固化的通讯数据,当CPU模块接收到正确的通讯数据,则通讯电路通过可信度量;

  主动防御电路(9)实现方法(通讯控制模块包括通讯控制器和通讯电路,主动防御电路(9)位于通讯控制器和通讯电路之间):

  (a)对于通讯模块的主动防御电路(主动防御电路(9))可以这样实现,在不同通讯模块电路内建一组特征数据,CPU模块启动通讯控制模块之前,先发送一段特征序列给通讯模块主动防御电路,通讯模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明通讯控制模块电路是安全可信的,中间没有出现恶意探测或者切断信号,通讯电路是安全可信的,CPU可以启用通讯电路。

  使用这样的设计方法可以实现通讯模块电路的主动防御机制,但不限于此种方式实现通讯模块电路的主动防御。

  步骤S3.1.2:CPU模块在启动计数器控制模块之前发送一段特征序列到主动防御电路(10)并且主动防御电路(10)返回固化的计数数据,当CPU模块接收到正确的计数数据,则计数器电路通过可信度量。

  主动防御电路(10)实现方法(计数器控制模块包括计数器控制器和计数器电路,主动防御电路(10)位于计数器控制器和计数器电路之间):

  (a)对于计数器模块的主动防御电路(主动防御电路(10))可以这样实现,在不同计数器控制模块电路内建一组特征数据,CPU模块启动计数器控制模块之前,先发送一段特征序列给计数器模块主动防御电路,计数器模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明计数器电路是安全可信的,中间没有出现恶意探测或者切断信号,计数器电路是安全可信的,CPU可以启用计数器电路。

  使用这样的设计方法可以实现计数器模块电路的主动防御机制,但不限于此种方式实现计数器模块电路的主动防御。

  作为上述技术方案的进一步优选的技术方案,步骤S3.2具体实施为以下步骤:

  步骤S3.2.1:CPU模块在启动模拟电路控制模块之前发送一段特征序列到主动防御电路(11)并且主动防御电路(11)返回固化的模拟数据,当CPU模块接收到正确的模拟数据,则模拟电路通过可信度量。

  主动防御电路(11)实现方法(模拟电路控制模块包括模拟电路控制器和模拟电路,主动防御电路(11)位于模拟电路控制器和模拟电路之间):

  (a)对于模拟模块的主动防御电路(主动防御电路(11))可以这样实现,在不同模拟电路控制模块电路内建一组特征数据,CPU模块启动模拟电路控制模块之前,先发送一段特征序列给模拟模块主动防御电路,模拟模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明模拟电路是安全可信的,中间没有出现恶意探测或者切断信号,模拟电路是安全可信的,CPU可以启用模拟电路。

  (b)模拟模块的主动防御电路,还包括光监测,温度监测等功能,一旦发现芯片所处的环境出现异常,比如芯片被开盖了,这说明可能存在被异常探测的可能性;比如发现温度很低,这说明有可能被存储于低温下,非法授权者在低温下进行RAM变量的探测,低温下RAM的数据可以被长时间保存住,甚至被从芯片上面切割出来,数据也可能保存住。所以模拟模块的主动防御电路会监控芯片的异常工作状态,一旦发现异常,就复位MCU,并且报警。

  使用这样的设计方法可以实现模拟模块电路的主动防御机制,但不限于此种方式实现模拟模块电路的主动防御。

  主动防御电路(12)实现方法(电源控制模块包括电源控制器和电源电路,主动防御电路(12)位于电源控制器和电源电路之间):

  (a)电源模块的主动防御电路(主动防御电路(12))是最重要的一部分,是可以接受到所有功能模块的主动防御电路发出的信号,然后把不可信的功能模块进行掉电处理,不再让不可信功能模块参与运行。如果是属于特殊高安全模块发现不可信,比如CPU,高安全存储器,电源主动防御电路直接把MCU电路完全切断,直到下次上电之后再进行一次完整的启动度量各功能模块。

  使用这样的设计方法可以实现电源模块电路的主动防御机制,但不限于此种方式实现电源模块电路的主动防御。

  附图说明

  图1是本发明的一种带主动防御功能的功能模块的MCU设计方法的MCU架构图。

  图2是传统的通用MCU架构图。

  具体实施方式

  以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。

  参见附图的图1,图1是本发明的一种带主动防御功能的功能模块的MCU设计方法的MCU架构图,图2是传统的通用MCU架构图。

  在本发明的优选实施例中,本领域技术人员应注意,本发明所涉及的CPU、RAM、DMA等可被视为现有技术。

  优选实施例。

  本发明公开了一种带主动防御功能的功能模块的MCU设计方法,MCU各个功能模块在启动之前均通过主动防御机制所认证,包括以下步骤:

  步骤S1:MCU上电启动;

  步骤S2:MCU对在高级MCU总线矩阵上的各个功能模块进行可信度量;

  步骤S3:MCU在对外围电路总线矩阵上的各个功能模块进行可信度量。

  具体的是,步骤S2具体实施为以下步骤:

  步骤S2.1:MCU分别通过主动防御电路对CPU模块、Flash控制模块和RAM控制模块进行可信度量;

  步骤S2.2:MCU分别通过主动防御电路对USB控制模块、DMA控制模块和密码算法模块进行可信度量;

  步骤S2.3:MCU分别通过主动防御电路对时钟控制模块和复位控制模块进行可信度量。

  更具体的是,步骤S3具体实施为以下步骤:

  步骤S3.1:MCU分别通过主动防御电路对通讯控制模块和计数器控制模块进行可信度量;

  步骤S3.2:MCU分别通过主动防御电路对模拟电路控制模块和电源控制模块进行可信度量。

  进一步的是,步骤S2.1具体实施为以下步骤:

  步骤S2.1.1:CPU模块被灌入时钟后连续给出CPU信息;

  步骤S2.1.2:硬件对比固化在CPU模块中的CPU信息并且当CPU信息出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S2.1.3:主动防御电路(1)分别对CPU模块、Flash控制模块、RAM控制模块和密码算法模块的最顶层金属布满安全屏蔽布线并且安全屏蔽布线被灌入时钟后启动发送电路和接收电路,接收电路接收并且解析发送电路发送的特征序列,当特征序列出现错误或者最顶层金属被切断时,MCU处于复位状态并且从端口输出报警信息;

  主动防御电路(1)具体实现方法(CPU模块包括CPU和调试接口,在CPU和调试接口之间加入主动防御电路(1)):

  (a)MCU上电启动并且POR电路启动之后,CPU启动之前,会对CPU模块进行可信度量。POR电路释放POR信号的同时启动内部时钟电路,有时钟灌入CPU模块,CPU模块会连续给出CPUID,复位地址等信息。硬件同时对比固化在电路里面的CPUID,复位地址等信息,一旦出现错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。

  (b)同时在CPU模块、Flash控制模块、RAM控制模块和密码算法模块的最顶层金属布满安全屏蔽布线(时钟线+数据线),通过时钟灌入,安全屏蔽布线收发电路启动工作,发送电路发出某种特征序列的协议,接收电路接收这个附带某种特征序列的数据,并解析。一旦发现芯片(即MCU)被某些探针探测,探针有寄生电容,高速序列就会出错,或者一旦发现芯片被开盖并把顶层金属切断,那么接收器收不到某种特征序列,时间超时之后,MCU被锁死,同时报警。

  使用这样的设计方法可以实现CPU模块(电路)的主动防御机制,但不限于此种方式实现CPU电路的主动防御。

  步骤S2.1.4:Flash控制模块的第一Flash单元在CPU模块经过可信度量后,主动防御电路(2)发出一段不连续的地址到第一Flash单元并且第一Flash单元根据不连续的地址输出第一Flash数据,硬件对比固化在Flash电路中的第一Flash数据并且当第一Flash数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S2.1.5:当第一Flash单元通过可信度量后CPU开始执行安全启动程序,当安全启动程序的运算结果符合存在第一Flash单元的运算结果,则CPU运行Flash控制模块的第二Flash单元,否则MCU处于复位状态并且从端口输出报警信息;

  主动防御电路(2)实现方法(Flash控制模块包括Flash控制器和Flash电路,主动防御电路(2)位于Flash控制器和Flash电路之间):

  (a)Flash基本有2块电路实现,第一块小Flash属于安全存储器(第一Flash单元),这块小Flash也可以是ROM,OTP,MTP等存储器电路,存储着各类安全数据,安全启动程序,客户无法使用到这块Flash,第二块大Flash属于开放给客户使用的Flash(第二Flash单元)。

  (b)安全存储器在CPU经过可信度量之后,CPU执行安全存储器中的安全启动程序之前,MCU硬件会对安全存储器进行可信度量,安全存储器主动防御电路会发出一段特殊不连续的地址给这个安全存储器,同时硬件监测这块安全存储器输出的数据,对比固化在电路里面的安全存储器的相对应信息,一旦出现错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。如果正确,Flash主动防御电路(主动防御电路(2))运行CPU执行安全启动程序。

  (c)CPU开始执行安全启动程序之后,会调用用户Flash特性信息可信度量的安全程序,即安全启动程序会启动Flash数据与Hash算法(比如国际算法SHA,国密算法SM3)进行可信度量,把数据发送到Hash算法中,如果运算结果符合存在安全存储器里面的运算结果,则表示用户Flash是可信的,那么CPU可以运行客户程序。一旦出现结果对比错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。

  使用这样的设计方法可以实现Flash或存储器电路的主动防御机制,但不限于此种方式实现Flash或存储器电路的主动防御。

  步骤S2.1.6:主动防御电路(3)发出不连续的地址到RAM控制器并且RAM控制器根据不连续的地址输出RAM数据,硬件对比固化在RAM电路中的RAM数据,并且当RAM数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S2.1.7:RAM控制模块通过可信度量后,对RAM控制模块进行清零;

  步骤S2.1.8:主动防御电路(3)在每个字节RAM均附加一位奇偶校验数据,当CPU模块读取RAM控制模块中的变量时,如果奇偶校验数据不匹配,MCU处于复位状态并且从端口输出报警信息。

  主动防御电路(3)实现方法(RAM控制模块包括RAM控制器和RAM电路,主动防御电路(3)位于RAM控制器和RAM电路之间):

  (a)RAM具有一个特有的特性,RAM上电之后,RAM内部数据是根据不同芯片因为工艺细微的变化,有不同的数据,把这个特性数据当成MCU的身份数据。RAM主动防御电路会发出一段特殊不连续的地址给RAM,同时硬件监测这块RAM输出的数据,对比固化在电路里面的RAM的相对应信息,一旦出现错误,从某个MCU端口输出报警信号,芯片处于复位状态。

  (b)在确保RAM是安全可信,上电后数据保持特征值,说明没有被篡改之后,对于所有RAM内容进行清零动作,这样任何恶意数据都不会存在于RAM内部。

  (c)RAM主动防御电路同时在每个字节RAM都附加一位奇偶校验数据。在用户写入变量时,同时会把这个字节的奇偶校验位写入RAM主动防御电路,一旦有异常侵入,或者被恶意探测,篡改某些变量,一旦CPU读取RAM中的变量,发现奇偶校验与RAM的数据不匹配时,从某个MCU端口输出报警信号,芯片处于复位状态。

  使用这样的设计方法可以实现RAM电路的主动防御机制,但不限于此种方式实现RAM电路的主动防御。

  更进一步的是,步骤S2.2具体实施为以下步骤:

  步骤S2.2.1:CPU模块在启动USB控制模块之前发送一段特征序列到主动防御电路(4)并且主动防御电路(4)返回固化的USB数据,当CPU模块接收到正确的USB数据,则USB电路通过可信度量;

  步骤S2.2.2:USB控制模块在输出时根据MCU的内部加密算法进行加密;

  主动防御电路(4)实现方法(USB控制模块包括USB控制器和USB电路,主动防御电路(4)位于USB控制器和USB电路之间):

  (a)对于USB的主动防御电路可以这样实现,在USB电路内建一组特征数据,CPU模块启动USB控制模块之前,先发送一段特征序列给USB主动防御电路(主动防御电路(4)),USB主动防御电路会返回固化的数据,如果CPU接受到这组正确的数据,说明USB电路是安全可信的,中间没有出现恶意探测或者切断信号,USB是安全可信的,这样CPU可以与USB相互交换数据。

  (b)对于USB输出的数据,因为MCU内建了很多加密算法,输出的数据可以根据MCU的ID,日期时间,秘钥Key作为加密的秘钥对于数据进行加密,这样USB输出的数据都是带加密算法的密文,就算数据被恶意截取,非授权的使用者也得不到真正的数据。

  使用这样的设计方法可以实现USB电路的主动防御机制,但不限于此种方式实现USB电路的主动防御。

  步骤S2.2.3:CPU模块在启动DMA控制模块之前发送一段特征序列到主动防御电路(5)并且主动防御电路(5)返回固化的DMA数据,当CPU模块接收到正确的DMA数据,则DMA电路通过可信度量;

  主动防御电路(5)实现方法(DMA控制模块包括DMA控制器和DMA电路,主动防御电路(5)位于DMA控制器和DMA电路之间):

  (a)对于DMA的主动防御电路(主动防御电路(5))可以这样实现,在DMA电路内建一组特征数据,CPU模块启动DMA控制模块之前,先发送一段特征序列给DMA主动防御电路,DMA主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明DMA电路安全可信的,中间没有出现恶意探测或者切断信号,DMA电路是安全可信的,CPU模块可以与DMA控制模块相互交换数据。

  使用这样的设计方法可以实现DMA电路的主动防御机制,但不限于此种方式实现DMA电路的主动防御。

  步骤S2.2.4:CPU模块在启动密码算法模块之前发送一段特征序列到主动防御电路(6)并且主动防御电路(6)返回固化的密码算法数据,当CPU模块接收到正确的密码算法数据,则密码算法电路通过可信度量。

  主动防御电路(6)实现方法(密码算法模块包括密码算法处理器和密码算法电路,主动防御电路(6)位于密码算法处理器和密码算法电路之间):

  (a)对于密码算法模块的主动防御电路(主动防御电路(6))可以这样实现,在不同密码算法模块电路内建一组特征数据,CPU模块启动密码算法模块之前,先发送一段特征序列给密码算法模块主动防御电路,密码算法模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明密码算法模块电路是安全可信的,中间没有出现恶意探测或者切断信号,密码算法模块是安全可信的,CPU可以与密码算法模块相互交换数据。

  (b)CPU模块可以在真正使用密码算法模块之前,可以先进行特定数据的密码算法,比如CPU模块把特定的数据,秘钥发给密码算法模块进行运算,密码算法模块的主动防御电路进行实时监控密码算法给出的数据以及给出数据的周期,如果都符合的话,则说明这个密码算法电路是安全可信的,一旦出现错误,主动防御电路立刻复位MCU,并从某个MCU端口输出报警信号。

  使用这样的设计方法可以实现密码算法模块电路的主动防御机制,但不限于此种方式实现密码算法模块电路的主动防御。

  优选地,步骤S2.3具体实施为以下步骤:

  步骤S2.3.1:CPU模块在启动时钟控制模块之前发送一段特征序列到主动防御电路(7)并且主动防御电路(7)返回固化的时钟数据,当CPU模块接收到正确的时钟数据,则时钟电路通过可信度量。

  主动防御电路(7)实现方法(时钟控制模块包括时钟控制器和时钟电路,主动防御电路(7)位于时钟控制器和时钟电路之间):

  (a)对于时钟模块的主动防御电路(主动防御电路(7))可以这样实现,在不同时钟控制模块电路内建一组特征数据,CPU模块启动时钟控制模块之前,先发送一段特征序列给时钟控制模块主动防御电路,时钟控制模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明时钟电路是安全可信的,中间没有出现恶意探测或者切断信号,时钟电路是安全可信的,CPU可以启用时钟电路。

  (b)对于时钟模块的主动防御电路也可以这样实现,某个时钟的频率基本是固定的,这样就可以使用其他时钟监控这个重要时钟的频率,一旦发现这个时钟高于某个频率,或者低于某个频率,那么说明这个重要时钟被外部说探测或者控制,时钟模块主动防御电路(主动防御电路(7))马上发出复位信号给MCU,MCU接收到这个信号,就处于复位状态并发出警报。

  使用这样的设计方法可以实现时钟模块电路的主动防御机制,但不限于此种方式实现时钟模块电路的主动防御。

  主动防御电路(8)实现方法(复位控制模块包括复位控制器和复位电路,主动防御电路(8)位于复位控制器和复位电路之间):

  (a)复位模块的主动防御电路(主动防御电路(8))是最重要的一部分,他是可以接受到所有功能模块的主动防御电路发出的信号,然后复位MCU,MCU接收到这个信号,就处于复位状态并发出警报。

  (b)这个复位控制模块还有一个作用在于如实记录各主动防御电路发出的异常报警,并记录在内部或者外部Flash存储器之内,做到所有异常攻击是被记录的,实现可信审计。

  使用这样的设计方法可以实现复位模块电路的主动防御机制,但不限于此种方式实现复位模块电路的主动防御。

  优选地,步骤S3.1具体实施为以下步骤:

  步骤S3.1.1:CPU模块在启动通讯控制模块之前发送一段特征序列到主动防御电路(9)并且主动防御电路(9)返回固化的通讯数据,当CPU模块接收到正确的通讯数据,则通讯电路通过可信度量;

  主动防御电路(9)实现方法(通讯控制模块包括通讯控制器和通讯电路,主动防御电路(9)位于通讯控制器和通讯电路之间):

  (a)对于通讯模块的主动防御电路(主动防御电路(9))可以这样实现,在不同通讯模块电路内建一组特征数据,CPU模块启动通讯控制模块之前,先发送一段特征序列给通讯模块主动防御电路,通讯模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明通讯控制模块电路是安全可信的,中间没有出现恶意探测或者切断信号,通讯电路是安全可信的,CPU可以启用通讯电路。

  使用这样的设计方法可以实现通讯模块电路的主动防御机制,但不限于此种方式实现通讯模块电路的主动防御。

  步骤S3.1.2:CPU模块在启动计数器控制模块之前发送一段特征序列到主动防御电路(10)并且主动防御电路(10)返回固化的计数数据,当CPU模块接收到正确的计数数据,则计数器电路通过可信度量。

  主动防御电路(10)实现方法(计数器控制模块包括计数器控制器和计数器电路,主动防御电路(10)位于计数器控制器和计数器电路之间):

  (a)对于计数器模块的主动防御电路(主动防御电路(10))可以这样实现,在不同计数器控制模块电路内建一组特征数据,CPU模块启动计数器控制模块之前,先发送一段特征序列给计数器模块主动防御电路,计数器模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明计数器电路是安全可信的,中间没有出现恶意探测或者切断信号,计数器电路是安全可信的,CPU可以启用计数器电路。

  使用这样的设计方法可以实现计数器模块电路的主动防御机制,但不限于此种方式实现计数器模块电路的主动防御。

  优选地,步骤S3.2具体实施为以下步骤:

  步骤S3.2.1:CPU模块在启动模拟电路控制模块之前发送一段特征序列到主动防御电路(11)并且主动防御电路(11)返回固化的模拟数据,当CPU模块接收到正确的模拟数据,则模拟电路通过可信度量。

  主动防御电路(11)实现方法(模拟电路控制模块包括模拟电路控制器和模拟电路,主动防御电路(11)位于模拟电路控制器和模拟电路之间):

  (a)对于模拟模块的主动防御电路(主动防御电路(11))可以这样实现,在不同模拟电路控制模块电路内建一组特征数据,CPU模块启动模拟电路控制模块之前,先发送一段特征序列给模拟模块主动防御电路,模拟模块主动防御电路会返回固化的数据,如果CPU模块接受到这组正确的数据,说明模拟电路是安全可信的,中间没有出现恶意探测或者切断信号,模拟电路是安全可信的,CPU可以启用模拟电路。

  (b)模拟模块的主动防御电路,还包括光监测,温度监测等功能,一旦发现芯片所处的环境出现异常,比如芯片被开盖了,这说明可能存在被异常探测的可能性;比如发现温度很低,这说明有可能被存储于低温下,非法授权者在低温下进行RAM变量的探测,低温下RAM的数据可以被长时间保存住,甚至被从芯片上面切割出来,数据也可能保存住。所以模拟模块的主动防御电路会监控芯片的异常工作状态,一旦发现异常,就复位MCU,并且报警。

  使用这样的设计方法可以实现模拟模块电路的主动防御机制,但不限于此种方式实现模拟模块电路的主动防御。

  主动防御电路(12)实现方法(电源控制模块包括电源控制器和电源电路,主动防御电路(12)位于电源控制器和电源电路之间):

  (a)电源模块的主动防御电路(主动防御电路(12))是最重要的一部分,是可以接受到所有功能模块的主动防御电路发出的信号,然后把不可信的功能模块进行掉电处理,不再让不可信功能模块参与运行。如果是属于特殊高安全模块发现不可信,比如CPU,高安全存储器,电源主动防御电路直接把MCU电路完全切断,直到下次上电之后再进行一次完整的启动度量各功能模块。

  使用这样的设计方法可以实现电源模块电路的主动防御机制,但不限于此种方式实现电源模块电路的主动防御。

  优选地,各个功能模块在CPU模块、Flash控制模块和RAM控制模块依次启动后(依次通过可信度量后)并没有严格的按照顺序进行可信度检测和启动,使用者可以根据自身的需求启动对应的功能模块,并且各个模块只有在提前相对应的各个硬件电路通过可信度量后才能启动。

  优选地,本发明涉及的不仅仅为MCU芯片,还可以应用于SOC芯片。

  优选地,本发明专利的可信MCU,是可以做到从系统最底层的硬件芯片就开始的主动防御功能,使整个工业控制系统安全体系不再是空中楼阁,带主动防御功能的可信MCU是整个工业系统的安全防护体系的基石。对于可信MCU而言,所有的外部功能模块都是基于不可信的状态,逐级对于各功能模块进行可信度量,逐级确认各功能模块属于安全可信状态,才会启动各功能模块的允许,达到整体系统的安全可信,自主可控。

  优选地,本专利不限于上述实现可主动防御功能的功能模块设计,还可以拓展到基于可信MCU的工业系统在线调试,附带了高信息安全性,具有主动防御能力的高信息安全工业控制系统的整体架构及具有主动防御功能的功能模块电路以及系统架构设计。

  值得一提的是,本发明专利申请涉及的CPU、RAM、DMA等技术特征应被视为现有技术,这些技术特征的具体结构、工作原理以及可能涉及到的控制方式、空间布置方式采用本领域的常规选择即可,不应被视为本发明专利的发明点所在,本发明专利不做进一步具体展开详述。

  对于本领域的技术人员而言,依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围。

《带主动防御功能的功能模块的MCU设计方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)