欢迎光临小豌豆知识网!
当前位置:首页 > 物理技术 > 调节控制> 带主动防御功能的可信数据及可信程序MCU设计方法独创技术24639字

带主动防御功能的可信数据及可信程序MCU设计方法

2021-01-31 21:04:02

带主动防御功能的可信数据及可信程序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的数据和程序进行主动防御,包括以下步骤:

  步骤S1:CPU运行并且执行程序(或者库函数)或者调用数据前,MCU依次分别对Flash电路和密码算法电路进行可信度量;

  步骤S2:当Flash电路和密码算法电路均通过可信度量后,MCU依次分别对Flash电路中的数据和程序以及密码算法电路中的密码算法进行可信度量:

  步骤S3:当Flash电路中的数据和程序(等安全性)以及密码算法电路中的密码算法均通过可信度量后,CPU将获得的相关数据和相关程序的度量结果与存放在安全存储器中的度量结果进行比对,度量结果比对通过后CPU执行可信程序或者调用可信数据;

  步骤S4:MCU在CPU执行可信程序或者调用可信数据后对RAM电路进行可信度量,并且RAM电路通过可信度量后CPU运行可信结果(CPU运行结果可信、系统安全可信)。

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

  步骤S1.1:Flash电路的第一Flash单元在CPU经过可信度量后(在CPU 硬件通过可信度量后,本发明对CPU的执行程序进行可信度量),Flash电路(为其中的第一Flash主动防御电路)发出一段不连续的地址到第一Flash单元并且第一Flash单元根据不连续的地址输出第一Flash数据,硬件对比固化在 Flash电路中的第一Flash数据并且当第一Flash数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

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

  对于Flash电路进行可信度量,保证Flash电路是安全可靠的,MCU才去读取Flash中的程序,继续运行下去。

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

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

  步骤S1.3:CPU在启动密码算法电路之前发送一段特征序列到密码算法电路(为其中的密码算法主动防御电路)并且密码算法电路返回固化的密码算法数据,当CPU接收到正确的密码算法数据,则密码算法电路通过可信度量并且执行步骤S2,否则MCU处于复位状态并且从端口输出报警信息。

  对于密码算法电路进行可信度量,保证密码算法电路是安全可靠的,MCU才会去调用密码算法电路进行程序、数据的度量。

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

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

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

  步骤S2.1:MCU对Flash电路中的数据和程序进行可信度量;

  Flash电路中程序、库函数、数据等安全性进行可信度量。因为执行到这个步骤的话,是保证Flash电路是安全可信的,密码算法电路是安全可信的,所有相关硬件都是安全可信的,这样才是验证数据、程序、库函数有了坚实的安全支持,就可以启动对于数据、程序、库函数的可信度量。

  步骤S2.2:MCU对密码算法电路中的密码算法进行可信度量。

  现在高效率的度量方式就是HASH算法,但是本专利所涉及的不仅仅是SHA, SM3等密码算法,包括其他一切可用于密码加解密的硬件算法。

  作为上述技术方案的进一步优选的技术方案,步骤S2还包括步骤S2.3:在 MCU依次分别对Flash电路中的数据和程序以及密码算法电路中的密码算法进行可信度量之间建立一条DMA数据搬运通道。

  为了提升度量速度,在Flash电路和密码算法电路中间建立了一条本地的DMA的数据搬运通道,这个本地的DMA数据搬运通道与通用MCU中的DMA数据搬运电路不是同一条电路,这条连接Flash电路中的数据和密码算法电路中的硬件算法的通道可以在对Flash电路进行可信度量时,也同时被验证到,并且不开放给客户,也减少了异常侵入事件的发生。

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

  步骤S3.1:CPU在通过Flash电路、密码算法电路和DMA数据搬运通道后会获得相关数据和相关程序的度量结果;

  步骤S3.2:CPU将获得的相关数据和相关程序的度量结果与存放在安全存储器中的度量结果进行比对;

  步骤S3.3:当度量结果比对通过后,CPU执行可信程序或者调用可信数据并且执行步骤S4;

  步骤S3.4:当度量结果比对错误时,MCU处于复位状态并且从端口输出报警信息。

  通过Flash电路、密码算法电路、(本地高速)DMA数据搬运通道,会得到相关程序,数据的度量结果,与放在安全存储器中的结果进行对比。

  如果都是可信的程序,或者数据,CPU就直接执行和使用,这样保证了系统是安全可信的。一旦出现结果对比错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。

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

  步骤S4.1:RAM电路(为其中的RAM主动防御电路)发出不连续的地址到 RAM控制器并且RAM控制器根据不连续的地址输出RAM数据,硬件对比固化在 RAM电路中的RAM数据(如果RAM数据没有出现错误,则RAM通过可信度量并且执行步骤S4.2),并且当RAM数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S4.2:RAM电路通过可信度量后,对RAM控制器的内容进行清零;

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

  带主动防御功能的RAM电路

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

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

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

  有了可信程序、可信数据和可信RAM电路,这才有了可信结果,其中任何一部出现异常,MCU都会进入MCU复位,并发出警告,保障系统的运行可靠,安全可信、自主可控。

  附图说明

  图1是本发明的带主动防御功能的可信数据及可信程序MCU设计方法的 CPU执行程序或者调用数据流程图。

  图2是本发明的带主动防御功能的可信数据及可信程序MCU设计方法的运行可信结果流程图。

  图3是现有的通用CPU执行程序或者调用数据流程图。

  具体实施方式

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

  参见附图的图1,图1是本发明的带主动防御功能的可信数据及可信程序 MCU设计方法的CPU执行程序或者调用数据流程图,图2是本发明的带主动防御功能的可信数据及可信程序MCU设计方法的运行可信结果流程图,图3是现有的通用CPU执行程序或者调用数据流程图。

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

  优选实施例。

  本发明公开了一种带主动防御功能的可信数据及可信程序MCU设计方法,对MCU的数据和程序进行主动防御,包括以下步骤:

  步骤S1:CPU运行并且(需要)执行程序(或者库函数)或者调用数据前, MCU依次分别对Flash电路和密码算法电路进行可信度量;

  步骤S2:当Flash电路和密码算法电路均通过可信度量后,MCU依次分别对Flash电路中的数据和程序以及密码算法电路中的密码算法进行可信度量:

  步骤S3:当Flash电路中的数据和程序(等安全性)以及密码算法电路中的密码算法均通过可信度量后,CPU将获得的相关数据和相关程序的度量结果与存放在安全存储器中的度量结果进行比对,度量结果比对通过后CPU执行可信程序或者调用可信数据;

  步骤S4:MCU在CPU执行可信程序或者调用可信数据后对RAM电路进行可信度量,并且RAM电路通过可信度量后CPU运行可信结果(CPU运行结果可信、系统安全可信)。

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

  步骤S1.1:Flash电路的第一Flash单元在CPU经过可信度量后(在CPU 硬件通过可信度量后,本发明对CPU的执行程序进行可信度量),Flash电路(为其中的第一Flash主动防御电路)发出一段不连续的地址到第一Flash单元并且第一Flash单元根据不连续的地址输出第一Flash数据,硬件对比固化在 Flash电路中的第一Flash数据并且当第一Flash数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

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

  对于Flash电路进行可信度量,保证Flash电路是安全可靠的,MCU才去读取Flash中的程序,继续运行下去。

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

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

  步骤S1.3:CPU在启动密码算法电路之前发送一段特征序列到密码算法电路(为其中的密码算法主动防御电路)并且密码算法电路返回固化的密码算法数据,当CPU接收到正确的密码算法数据,则密码算法电路通过可信度量并且执行步骤S2,否则MCU处于复位状态并且从端口输出报警信息。

  对于密码算法电路进行可信度量,保证密码算法电路是安全可靠的,MCU才会去调用密码算法电路进行程序、数据的度量。

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

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

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

  步骤S2.1:MCU对Flash电路中的数据和程序进行可信度量;

  Flash电路中程序、库函数、数据等安全性进行可信度量。因为执行到这个步骤的话,是保证Flash电路是安全可信的,密码算法电路是安全可信的,所有相关硬件都是安全可信的,这样才是验证数据、程序、库函数有了坚实的安全支持,就可以启动对于数据、程序、库函数的可信度量。

  步骤S2.2:MCU对密码算法电路中的密码算法进行可信度量。

  现在高效率的度量方式就是HASH算法,但是本专利所涉及的不仅仅是SHA, SM3等密码算法,包括其他一切可用于密码加解密的硬件算法。

  进一步的是,步骤S2还包括步骤S2.3:在MCU依次分别对Flash电路中的数据和程序以及密码算法电路中的密码算法进行可信度量之间建立一条DMA数据搬运通道。

  为了提升度量速度,在Flash电路和密码算法电路中间建立了一条本地的 DMA的数据搬运通道,这个本地的DMA数据搬运通道与通用MCU中的DMA数据搬运电路不是同一条电路,这条连接Flash电路中的数据和密码算法电路中的硬件算法的通道可以在对Flash电路进行可信度量时,也同时被验证到,并且不开放给客户,也减少了异常侵入事件的发生。

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

  步骤S3.1:CPU在通过Flash电路、密码算法电路和DMA数据搬运通道后会获得相关数据和相关程序的度量结果;

  步骤S3.2:CPU将获得的相关数据和相关程序的度量结果与存放在安全存储器中的度量结果进行比对;

  步骤S3.3:当度量结果比对通过后,CPU执行可信程序或者调用可信数据并且执行步骤S4;

  步骤S3.4:当度量结果比对错误时,MCU处于复位状态并且从端口输出报警信息。

  通过Flash电路、密码算法电路、(本地高速)DMA数据搬运通道,会得到相关程序,数据的度量结果,与放在安全存储器中的结果进行对比。

  如果都是可信的程序,或者数据,CPU就直接执行和使用,这样保证了系统是安全可信的。一旦出现结果对比错误,从某个MCU端口输出报警信号,同时MCU以及系统都被锁死,处于复位状态,也就是对于系统最安全的状态。

  优选地,步骤S4具体实施为以下步骤:

  步骤S4.1:RAM电路(为其中的RAM主动防御电路)发出不连续的地址到 RAM控制器并且RAM控制器根据不连续的地址输出RAM数据,硬件对比固化在 RAM电路中的RAM数据(如果RAM数据没有出现错误,则RAM通过可信度量并且执行步骤S4.2),并且当RAM数据出现错误时,MCU处于复位状态并且从端口输出报警信息;

  步骤S4.2:RAM电路通过可信度量后,对RAM控制器的内容进行清零;

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

  带主动防御功能的RAM电路

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

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

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

  有了可信程序、可信数据和可信RAM电路,这才有了可信结果,其中任何一部出现异常,MCU都会进入MCU复位,并发出警告,保障系统的运行可靠,安全可信、自主可控。

  优选地,本发明专利基于可信MCU,通过主动防御硬件电路,对于数据,程序,库函数进行主动防御,保障系统的高信息安全,达到安全可控。

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

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

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

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

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

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