微控制器系统中的安全访问的制作方法

文档序号:13350681阅读:164来源:国知局
微控制器系统中的安全访问的制作方法

本发明涉及安全信息处理。



背景技术:

当设计具有微控制器系统的产品时,将代码编程到安全存储器中使得客户可执行所述代码但不可拷贝或修改所述代码可为合意的。另外,将应用程序分割成安全域及不安全域可为合意的,其中所述安全域允许关键信息(例如,加密密钥)由存储于安全存储器中的代码以完全系统访问来处理,而所述不安全域不可访问所述安全存储器。此分裂域架构通过防止软件错误意外地将信息从所述安全域泄漏到所述不安全域中而改进安全稳健性。具有分裂域架构的微控制器系统设计有单个中央处理单元(cpu),所述中央处理单元经设计以在安全模式及不安全模式中操作以确保安全操作与不安全操作之间的安全转变。



技术实现要素:

本发明公开了用于提供微控制器系统中的安全访问的系统、方法及计算机可读媒体。在一些实施方案中,一种微控制器系统包括系统总线及耦合到所述系统总线的安全中央处理单元(cpu)。所述安全cpu经配置以提供对所述系统总线的安全访问。不安全cpu也耦合到所述系统总线且经配置以提供对所述系统总线的不安全访问。不安全存储器耦合到所述系统总线且经配置以允许所述安全cpu及所述不安全cpu交换数据且彼此通信。外围设备访问控制器(pac)耦合到所述系统总线且经配置以容许所述安全cpu对外围设备的安全访问同时基于所述不安全cpu的不安全状态而不容许对所述外围设备的不安全访问。

在一些实施方案中,一种方法包括:由微控制器系统检测系统事件;及响应于所述系统事件而:将所述微控制器系统的第一cpu配置为在安全模式中操作,其中安全模式允许对所述微控制器系统的系统总线的安全访问且允许在所述第一cpu上执行安全代码;将第二cpu配置为在不安全模式中操作,其中不安全模式允许对所述系统总线的不安全访问且允许在所述第二cpu上执行不安全代码;将所述第一cpu及所述第二cpu配置为使用不安全共享存储器交换数据且彼此通信;且配置耦合到所述系统总线的外围设备访问控制器(pac)以允许所述pac与耦合到所述pac的外围设备之间的安全通信。

在一些实施方案中,一种非暂时性计算机可读存储媒体上面存储有指令,所述指令在由微控制器系统的两个或多于两个中央处理单元执行时致使所述微控制器系统的所述两个或多于两个中央处理单元执行包括以下各项的操作:检测系统事件;及响应于所述系统事件而:将第一cpu配置为在安全模式中操作,其中安全模式允许对所述微控制器系统的系统总线的安全访问且允许在所述第一cpu上执行安全代码;将第二cpu配置为在不安全模式中操作,其中不安全模式允许对所述系统总线的不安全访问且允许在所述第二cpu上执行不安全代码;将所述第一cpu及所述第二cpu配置为使用不安全共享存储器交换数据且彼此通信;且配置耦合到所述系统总线的外围设备访问控制器(pac),所述pac允许所述pac与耦合到所述pac的外围设备之间的安全通信。

附图说明

图1是根据一些实施方案的具有安全信息处理扩展插件的微控制器系统的概念框图。

图2是根据一些实施方案的由具有安全信息处理扩展插件的微控制器系统执行的实例性过程的流程图。

具体实施方式

实例性系统架构

图1是根据一些实施方案的具有安全信息处理扩展插件的微控制器系统100的概念框图。微控制器系统100可包含调试主模块101、中央处理单元(cpu)102、cpu103、直接存储器访问(dma)控制器104、存储器106(例如,快闪)、107(例如,ram)、从控制器108、桥接件109、113、从模块110、111及外围设备访问控制器(pac)114。主模块及从模块110、111、112及pac114直接或间接(例如,通过桥接件109、113)耦合到系统总线115(例如,总线矩阵)。所述系统总线为可配置的以路由来自安全cpu102的安全访问请求。在一些实施方案中,所述安全访问请求可与指示所述请求由安全cpu102提出的信号相关联。在一些实施方案中,从模块110为用于实施能够执行加密散列算法的完整性检查监视器(icm)的加密从模块,且从模块111为用于实施高级加密标准(aes)算法的加密从模块。在一些实施方案中,从模块110、111从pac114接收安全信号122a、122b。当安全信号122a、122b为高(或低)时,仅准许安全总线访问。在一些实施方案中,从模块110、111可包含用于接收安全信号122a、122b的软件包裹层。除了或代替图1中所展示的主模块及从模块,微控制器系统100还可包含其它主模块105及其它从模块112。如果经配置为安全从模块,那么其它从模块112可经配置以从pac114接收安全信号以仅允许安全总线访问。

为了帮助读者,图1包含使方框填充图案与微控制器系统100中的安全(正斜杠填充图案)及任选地安全(反斜杠填充图案)主模块及从模块相关联的图例。所述图例也展示具有交叉影线填充图案的方框指示熔丝119a到119d(例如,经写保护的伪熔丝)。在一些实施方案中,熔丝119a到119d可为在系统复位时锁存于存储器(例如,存储器106)中的真实熔丝或在系统复位时从存储器(例如,非易失性存储器)读取且锁存于存储器控制器(未展示)中的伪熔丝。微控制器系统100可经扩展以包含额外cpu,其中每一额外cpu可经配置为安全或不安全的且每一安全cpu可共享相同的安全存储器资源。

响应于系统事件(例如,系统复位),cpu102可配置为安全cpu且cpu103可配置为不安全cpu。安全cpu102运行安全代码且提供对系统总线115的安全访问,而不安全cpu103运行不安全代码且提供对系统总线115的不安全访问。安全性配置可为静态的(例如,在设计上经硬接线)或可通过伪熔丝119a(fv;flashvaultenable)、119b(fvde;flashvaultdebugenable)、119c(fvflsz;flashvaultflashsize)及119d(fvramsz;flashvaultramsize)(例如,经写保护的伪熔丝)来编程。可在系统复位时加载所述伪熔丝以在执行任何客户端应用程序代码之前配置微控制器系统100。

上文所描述的安全性配置允许在安全cpu102上执行安全代码,而安全cpu102与不安全cpu103之间的数据交换及通信发生在存储器106、107的不安全部分中。在一些实施方案中,安全cpu102可配置其自身(例如,借助于内部控制寄存器116)以暂时提供对系统总线115的不安全访问。如果需要在同一cpu上执行不安全及安全代码,那么此可改进稳健性。在执行不安全代码之前可不容许安全总线访问,接着在执行进一步安全代码时重新容许安全总线访问。此防止不安全代码中的软件错误意外地读取来自安全存储器的数据。

微控制器系统100中的从模块110、111、112(例如,外围设备)可由安全cpu102或不安全cpu103访问。当安全软件取决于与外围设备(例如,加密模块110、111)的安全交互时,对外围设备的访问应限制于安全访问。在一些实施方案中,安全访问可通过pac114集中于微控制器系统100中,pac114可经配置以将一或多个信号分配给系统100的每一从模块或外围设备以命令每一从模块或外围设备仅接受由安全cpu102提供的安全访问。可通过将一或多个位写入到pac114中的控制寄存器117而接通所述一或多个信号。可通过由安全cpu102提供的安全访问对控制寄存器117进行写入。控制寄存器117使得安全cpu102能够只要有需要便容许对关键外围设备的安全访问且在安全操作完成时不容许安全访问,因此允许外围设备受不安全cpu103控制。

在一些实施方案中,安全cpu102可通过设定熔丝fv而为安全的。安全cpu102可任选地通过设定控制寄存器116中的一或多个位而关断安全总线访问,控制寄存器116可在安全cpu102外部或内部(在图1中经展示为在安全cpu102内部)。安全cpu102可由总线映射的控制寄存器(未展示)控制及调试。当设定fv时,总线映射的控制寄存器可通过由安全cpu102提供的安全访问来修改。在一些实施方案中,安全cpu102可由存储于非易失性(nv)存储器106(例如,快闪存储器)的安全部分中的启动代码118来启动。nvm106及易失性存储器107(例如,ram)的上部部分可预留用于安全操作。存储器的这些安全部分可通过大小熔丝fvflsz(nvm106)及fvramsz(ram107)来设置。nvm及ram控制器(例如,dma104)将提供对安全存储器区域的安全访问以及对不安全存储器区域的安全或不安全访问。

在一些实施方案中,pac114包含控制寄存器117,其中用户可写入指示哪一外围设备作为访问目标的外围设备标识符及key值以容许或不容许对所述外围设备的安全访问。可由安全cpu102写入/编程所述key值以作为安全写入操作。控制寄存器117还可用于使用不同key值对外围设备进行写保护,所述不同key值可通过不安全访问写入到控制寄存器117。

在一些实施方案中,调试主模块101受外部调试器(在微控制器系统100外部)控制且授予对用于编程及调试的内部资源的访问。通过默认,调试主模块101可为不安全的且可提供对不安全存储器及外围设备的不安全访问。为了帮助开发安全代码,可通过设定fvde熔丝而使调试主模块101暂时安全。当设定fvde时,调试主模块101为安全的且可访问微控制器系统100中的所有存储器及外围设备,包含安全cpu102及pac114中的控制寄存器。在一些实施方案中,用户可在将应用程序部署给终端客户之前擦除fvde熔丝以确保外部调试器无法对客户应用程序中的安全存储器进行读出。在所展示的实例中,sec120为在经编程时不容许所有外部调试访问的安全熔丝。sec120可仅通过完全芯片擦除命令来修复,所述完全芯片擦除命令擦除所有存储器内容。swd121为用于经由串行总线与外部调试器通信的串行线调试接口。

实例性过程

图2是根据一个实施方案的由具有安全信息处理扩展插件的微控制器系统执行的实例性过程200的流程图。可在(举例来说)参考图1所描述的微控制器系统100中实施过程200。

在一些实施方案中,过程200可通过由微控制器系统检测系统复位序列的开始(202)而开始。响应于系统事件,过程200可通过将微控制器系统的第一cpu配置为在安全模式中操作(204)而继续,所述安全模式允许对微控制器系统的系统总线的安全访问且允许在第一cpu上运行安全代码。举例来说,系统事件可为系统复位且熔丝位可在将第一cpu配置为在安全模式中操作的系统复位时经设定。

过程200可通过将第二cpu配置为在不安全模式中操作(206)而继续,所述不安全模式允许对系统总线的不安全访问且允许在第二cpu上运行不安全代码。

过程200可通过将第一cpu及第二cpu配置为使用不安全共享存储器交换数据且彼此通信(208)而继续。举例来说,耦合到系统总线的存储器可划分成安全部分及不安全部分且安全cpu及不安全cpu可使用不安全共享存储器的部分来交换数据且通信。

过程200可通过配置耦合到系统总线的外围设备访问控制器(pac)以允许pac与耦合到pac的一或多个外围设备之间的安全通信(210)而继续。举例来说,pac可直接或间接(例如,通过图1中的桥接件113)耦合到系统总线且将一或多个信号分配给每一外围设备以命令所述外围设备仅允许安全访问。

当过程200结束系统复位序列(212)时,cpu可执行其第一指令(214)。

虽然此文件含有许多具体实施方案细节,但这些细节不应解释为对可主张的内容的范围的限制,而是应解释为对可为特定实施例所特有的特征的说明。在单独实施例的上下文中于本说明书中描述的特定特征还可以组合方式实施于单个实施例中。相反地,在单个实施例的上下文中描述的各种特征还可单独地或以任何适合子组合方式实施于多个实施例中。此外,尽管上文可将特征描述为以特定组合方式起作用且甚至最初如此主张,但来自所主张组合的一或多个特征在一些情形中可从所述组合去除,且所述所主张组合可针对于子组合或子组合的变化形式。

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