多层内容保护微控制器的制作方法

xiaoxiao2020-7-22  7

专利名称:多层内容保护微控制器的制作方法
技术领域
本发明总体涉及微控制器,更具体来讲,涉及能够保护用微控制器存储的诸如知识产权元素的内容的技术。具有这些特征的微控制器俗称安全微控制器(secure microcontroller)0
背景技术
在一段时间内,对于电子产业而言,处理器或微控制器内的内容保护一直是一大挑战。随着半导体技术的发展,某些微控制器已变成复杂的片上系统(systems-on-chip)。 之前以硬件实现的关键系统功能现在可以以软件实现,从而允许初始设备制造商(“OEMs”) 快速向市场提供高价值、低成本的微控制器解决方案。例如,基于可编程非易失性存储器的微控制器允许诸多应用程序/内容供应商对微控制器进行频繁的系统更新,包括代码的修改和新功能的添加。常常,这些代码的修改和/或新功能会代表供应商所拥有的很重要的知识产权, 并且可能容易受到其他人的未经授权访问的影响。另外,微控制器内的软件实现通常比硬件更容易进行逆向工程(reverse-engineer)。结果,基于非易失性存储器的电子装置可以包括硬件数据保护,所述硬件数据保护尝试保护所述电子装置内的这个知识产权。微控制器通常包括根据非易失性存储器内的数据区而被保留用于访问控制信息的存储区。所述数据区可以根据存储器阵列的物理结构被布置为含有用于数据储存的所有存储器单元的单个实体或者被布置为多个存储器段(segment)。在现有技术的系统中,由硬件执行对特定段的访问控制。可以由处理器执行程序代码,但是读写操作由于控制设置而被禁止。通常,取消这种保护的唯一方法是,首先同时擦除受保护的程序代码和其相应的访问控制信息。这种方法提供了有效的数据保护,但是还导致用于控制信息的额外存储器区以及在擦除和改编(!^programming)中CPU时间的花费过大,即使是对于小型程序更新而言。 CPU时间过长不仅使系统效率降低,而且这还使程序管理的复杂性增加。这种简单的安全管理但刚性转换(rigid formation)施加了过多限制并且可能对终端用户造成负担。当微控制器操作的程序代码变得更复杂难懂时,可能有利的是利用 OEM和其他卖方提供的可用软件库而非由Scratch产生完整程序。软件库包括主算法程序和特定函数,并且为子程序调用备用。这种软件库代表终端产品的作为知识产权(IP)的重要值。此外,程序开发可能涉及不同开发阶段的不同开发人员,这样就有可能需要离岸 (off-shore)支持和维护。这种多层程序开发和参与其中的多开发人员导致了复杂的环境, 在该环境下,难以安全地保持私有IP内容。当前的访问控制方案还不能直接读取程序存储器空间中的操作参数。这些操作参数通常是在系统初始化期间被设置的并且被储存为非易失性存储器中的数据表,所以在万一掉电时也可以保存数据。常见的做法是将这些关键参数储存在具有微控制器的系统程序(一个或多个)的同一非易失性存储器中。如果仅执行受保护的程序区并且禁止读取数据,则读取操作参数可能是个问题。尤其对于诸如安全微控制器这类低成本但高度集成的电子系统,以上限制导致对片上系统中的IP保护具有挑战性。

发明内容
本发明涉及提供私有数字内容的多层保护的微控制器。微控制器的各种实施方案包括安全CPU、实时加密器和微控制器内的可编程非易失性存储器的用户可编程多层访问控制系统。可编程非易失性存储器允许终端用户进行系统内(in-system)和应用程序内 (in-application)编程,并且能够在断电时保存数据内容。多层访问控制设置在微控制器中或用微控制器提供,并且使得通过根据一组用户编程参数控制代码段的读、写和/或执行能够对内嵌的数字内容进行保密性保护。在某些实施方案中,加密器并入通过采用数据储存的行和列操纵进行数据加密和解密的一组加密规则。在本发明的一些实施方案中,与CPU运行时间并行地执行加密操作,而不会导致系统操作明显的额外延迟(latency)和延时(delay)。在该发明内容部分中已经总体描述了本发明的某些特征和优点;然而,额外的特征、优点和实施方案在本文中呈现,并且根据本发明的附图、说明书和权利要求书,其对于本领域的普通技术人员来说将是清楚的。因此,应该理解,本发明的范围不应该受该发明内容部分所公开的特定实施方案的限制。


将参照本发明的实施方案,这些实施方案的实例可以在附图中示出。这些附图旨在是示例性的,而非限制性的。虽然在这些实施方案的背景下总体描述了本发明,但是应该理解,其不旨在将本发明的范围限于这些特定的实施方案。图1根据本发明的各种实施方案示出保护知识产权内容的微控制器(或安全控制器)框图。图2根据本发明的各种实施方案示出访问控制单元和相关电路的框图。图3是根据本发明的各种实施方案描述程序存储器边界(memory bourdaries)和权限级别的表格。图4是根据本发明的各种实施方案的三个存储器段的程序存储器分段 (segmentation)的不意图。图5是根据本发明的各种实施方案的两个存储器段的程序存储器分段的示意图。图6是根据本发明的各种实施方案的三个存储器段的权限寄存器级别的表格。图7是本发明的各种实施方案的加密功能块和接口的框图。图8是根据本发明的各种实施方案的加密块内部结构的框图。图9是根据本发明的各种实施方案示出多层访问控制的操作的流程图。图10是根据本发明的各种实施方案示出加密的操作的流程图。
具体实施例方式本发明的实施方案提供了用于安全微控制器的系统、装置和方法。在以下的描述中,为了说明的目的,阐述了特定的细节以提供对本发明的理解。然而,本领域的技术人员应该清楚,可以在没有这些细节的情况下实践本发明。本领域的技术人员将认识到,可以按多种方式并且使用各种手段执行以下描述的本发明的实施方案。本领域的技术人员还将认识到,额外的修改、应用和实施方案在其范围内,因为其是本发明可以提供实用性的额外领域。因此,下述的实施方案是本发明特定实施方案的示例并且想要避免模糊本发明。说明书中引用“一个实施方案”或“实施方案”意味着,结合实施方案描述的特定特征、结构、特性或功能包括在本发明的至少一个实施方案中。说明书中各个位置出现的短语“在一个实施方案中”、“在实施方案中”等不必都参照同一实施方案。A.安全微控制器根据本发明的各种实施方案描述了包括具有安全和保护功能的核心和功能性元件的安全微控制器。保护功能可以是微控制核心的一部分,所述微控制核心包括根据系统编程人员定义的各存储器段的读/写权限进行存储器访问的控制协议。可以由与存储器管理单元耦合的硬件和存在于效用(Utility)ROM中的程序来执行所述控制协议。效用功能可以包括用于系统编程的安全加载器(loader)和用于程序代码开发的电路内 (in-circuit)调试器。为了对内嵌程序代码提供保护,根据本发明的某些实施方案,可以通过硬件加密器在运行时打乱(scramble)数据内容和存储器位置。结果,可以由多个开发人员在微控制器内构建一个或多个程序,同时保护每个开发人员在微控制器内的私有内容。在各种实施方案中,储存在微控制器内的每个开发人员的私有内容被分配特定的访问权利,这些访问权利限制和/或阻挡其他人对这个内容进行访问。图1是根据本发明的各种实施方案的安全微控制器100的框图。如图1中所示,微控制器核心101包括中央处理单元(“CPU”)和异常处理器。CPU也叫作“处理器单元”。在本发明的某些实施方案中,微控制器核心101的CPU被实现为流水线化处理器(pipelined processor),其允许程序代码预获取为单个时钟周期。因此,指令字造成指令在单个时钟周期内被执行。这样允许访问时间长的程序存储器(例如,闪存存储器)具有较高的系统时钟频率。线性码的代码执行仍然是单个周期,但是除非实现另外的措施(例如,分支预测单元)否则代码分支造成单个时钟周期损失(penalty)。指令代码操作通常包括定义特定功能的代码执行的多个周期。另外,术语“代码”、“程序代码”和“指令代码”被视为是同义词。在各种实施方案中,处理器使用具有单独的程序存储器和数据存储器的哈佛 (Harvard)存储器构架。这种存储器构架通过允许同时访问程序存储器和数据存储器来提高系统带宽;它还允许针对数据储存使用不同的字长。例如,程序存储器地址和数据存储器地址都可以是16位。16位有效地址支持65536(64K)、16位字的程序存储器和64Κ、16位字的数据存储器。为了允许访问储存在程序存储器中的数据表,处理器还支持冯·诺依曼式(Von-Neumarm-style)访问,但是除非实现指令高速缓存否则这种访问导致1周期的迟延。本领域的技术人员将认识到,根据本发明的实施方案可以实现各种处理器构架、时钟方案和寻址方法。异常处理程序是微控制器核心101的一部分并且用于造成如果出现不期望或期望的事件或状况则中断正常程序流程。例如,未经授权的用户非法尝试访问安全内容会生成有效防止这种访问的中断。程序存储器储存可以包括程序代码和操作参数的内容。可以使用非易失性存储器(例如,闪存存储器106或EEPR0M)实现主程序存储器。ROM 105还映射到程序空间,以支持不需要系统内可编程性的效用函数,例如,引导加载程序(bootstrap loader)函数、电路内调试和芯片测试。为了确保正确操作,对可编程非易失性存储器的擦除和写入可以通过对效用ROM 105的子程序调用来执行,因此其只能由系统代码存储器访问。在本发明的某些实施方案中,对闪存存储器106进行读访问是一个周期,但是擦除和写入的时间是不确定的,这是由于这些操作是由效用ROM 105经由一对控制和数据寄存器来处理的。数据存储器将各种类型的数据储存在微控制器内。本领域的技术人员将认识到, 可以用各种存储器技术(例如SRAM 107)实现数据存储器。安全微控制器100的特征是其对程序存储器进行分层的多层访问控制。使用与存储器管理单元(MMU) 103、访问控制单元102和微控制器核心101的安全特征耦合的物理层实现这种分层。所述物理层包括监控器和比较器电路,用于连续以存储器保护模式监控程序流程并根据用户定义的存储器段的权限级别控制对程序存储器的读/写访问。在具体实施方案中,程序存储器可以分为三个存储器段,为系统提供三个访问权限级别。可以使用CPU通用寄存器映射中的一组专用寄存器来定义各段的存储器范围和访问权限。在某些实施方案中,三个寄存器是用户可编程的,但是它们的访问次序是由原子电路(atomic circuit)来执行的,所述原子电路的形式为一对次序受控的寄存器。原子操作是指一组操作,这些操作可以被组合起来,从而它们对于剩余系统而言好像是单个操作,且仅有两个可能的结果成功或失败。在本发明的各种实施方案中,当设置了系统寄存器内的存储器保护使能(“MPE”) 位时,访问控制将施行存储器保护模式。在某些实例中,这种系统寄存器可以仅由存在于最高安全存储器段内的程序代码访问。在这种模式的操作中,CPU以常规模式获取、解码和执行程序指令。控制访问电路监控用于存储器指令的指令解码器。当检测到加载或储存命令时,监控器使用最后一个程序地址来确定目前的访问权限。然后,当比较器针对段边界 (segment boundaries)检查指针地址时,使用目前的权限来测试源/目的地的合法性。CPU 将只执行经授权的读或写访问,所述经授权的读或写访问意味着在对应的访问权限(一个或多个)下允许的访问。任何未经授权的访问尝试将造成异常或中断,可选地迫使程序以响应的方式执行用户定义的程序。如图1中所示,根据本发明的各种实施方案,微控制器100还可以包括双向硬件加密器104,所述双向硬件加密器104为了保护内嵌软件而在运行时转换指令代码。为了进行强加密保护,加密器可以使用采用了诸如三重DES或AES之类的传统加密算法。在某些实施方案中,安全微控制器100所采用的加密技术是通过利用加密密钥排列(permuting)指令地址来生成密码流。对加密技术的考虑包括1.足够的乱序(Obfuscation)加密特征导致足够的乱序,从而即使知道第一闪存指令(flash instruction)是来自已知的启动代码,也使得难以推导出纯文本。2.低的硬件影响就面积和计算时间而言,加密特征没有消耗过多的资源。由于闪存存储器的操作速度低,需要从闪存获取的加密的代码字不应该只在解密操作的最后阶段使用。
3.支持双向操作的可逆函数如果存在(1= ^1(8,1,7,2,...),则也存在8 = ^1-1((1,1,7,2,...)。这并不意
味着真实逆转,因为对于任何给定的d,可能存在数个s,但是对于S、χ、y、z、...的任何组
合只有一个d。如果fn()被实现为“密钥流(keystream)”生成器,则除了最后的求和之外, fn_i() = fn()。4.其他可能的限制对于密钥寄存器大小存在限制。64位至1 位的大小可以是存储大小和密钥强度之间的良好折衷。这些操作可以是加法模(addition modulo)、二进制和、位选择等,但是一些操作在硬件方面可能消耗巨大,例如通用循环或模n,其中η不是2的幂。可以使用特定的循环(其中,η = 0、1、2、3)或硬连接的模3、模5或模7和类似的低门数操作。参照图7,加密功能和接口 700包括散列块701,其用于快速压缩用于密钥生成的长伪随机序列;寄存器,其用于密钥储存(例如,闪存存储器106中储存的加密密钥);位搅乱器(shuffler)(地址位搅乱器70 ,其用于打乱存储器位置;以及加密块703,其用于对待储存的纯文本代码进行加密,并且对待执行的密文代码或关键数据进行解密。在各种实施方案中,加密块703基于逐个指令(instruction-by-instruction)来工作,从密钥寄存器中取出各指令的地址和数据的子集,以生成由基本操作序列导致的密钥流。然后,将密钥流与代码字进行二进制求和。加密器还可以包括电路,用于检查特定模式的输入和输出位流并且确定其是否应该被旁路(by-pass)。在某些实施方案中,加密器104可以集成在MMU 103内,这是因为它被实现在程序存储器的数据路径中并且加密功能通常被使能。虽然可以以存储器保护模式保护整个程序空间,但是硬件加密器104通常应用于通过闪存存储器106实现的主程序存储器。ROM 105主要包括通常不保密的效用函数。 R0M105中包括的引导加载程序不应具有安全威胁,即使引导加载程序能够被读/写导入闪存存储器106,这是因为加载器功能是处于物理层的访问控制下。可以在不用硬件加密器的情况下实现安全微控制器的其他实施方案。虽然程序代码将不会在微控制器内受保护,但是这种系统将仍然会具有多层访问控制的安全特征。B.多层访问控制(28)以下对微控制器内的多层访问控制和存储器分段的描述旨在举例说明本发明的某些实施方案。本领域的技术人员将认识到,根据本发明的实施方案,可以实现其他访问控制协议和存储器段构架。如之前所述的,安全微控制器100的一个特征是其多个用户对程序存储器的分层多层访问控制。如图2中所示,访问控制单元102使能对安全微控制器100的多层访问控制。访问控制的一个元件是访问监控器201。访问控制单元102耦合到来自微控制器核心 101的CPU的控制信号、地址信号和数据信号。来自CPU的控制信号可以包括命令、存储器保护、读/写请求以及本领域的技术人员已知的其他信号。来自CPU的数据信号可以包括数据总线信号、寄存器信号和本领域的技术人员已知的其他数据信号。在某些实施方案中, 数据信号被耦合到双向数据总线。来自CPU的地址信号可以包括程序地址信号和本领域的技术人员已知的其他地址信号。在访问控制单元102中还示出的是权限寄存器,包括raiv、PRIVTO, PRIVTl和 PRIVF。这些寄存器储存并管理与用户权限级别相关的权限信息。本领域的技术人员将认识到,可以采用各种类型和数量的权限寄存器来控制对微控制器100内的私有数据/IP的访问ο通过监控并比较CPU的操作,访问控制单元102通过提供由于权限要求而需要的特定动作来通知异常处理器(handler)。换言之,访问控制单元102的功能在于管理对应于权限级别的存储器段级别要求。在本发明的某些实施方案中,访问控制功能的要素可以包括·与读/写权限级别相关的存储器访问的控制协议。·各存储器段对应于权限级别,从而具有不同权限级别的多方可以分开加载程序代码,并且具有对合适权限级别的寄存器的写访问。·较小的权限代码不能改变较高权限级别的边界,并且保护了由被赋予较低权限的代码区进行的读/写尝试的程序代码保密性。根据各种实施方案,主程序存储器被储存在非易失性存储器106中,并且可以被视为三个连续的存储器段。图4说明三个存储器段的特定程序存储器分段。指令代码存在于程序存储器中并且总是能由CPU执行;然而,对各段的读或写访问根据其权限级别处于硬件控制下。在安全微控制器100中从最高安全到最低安全定义的三个段是系统、用户加载器和用户应用。图3中的表格根据本发明的某些实施方案概述了这些存储器段、可配置的闪存页界和最大的权限级别,这些权限级别可以与段内的代码指令相关联。所有的权限级别可以由只读存储器代码105进行访问。在各种实施方案中,根据闪存存储器106的页数来定义段边界。系统段从页0开始直至页ULDR-1,即位于用户加载器段下面的一页。以相同的方式,用户加载器段从页ULDR 开始直至页UAPP-1,并且用户应用程序段从页UAPP开始直至闪存存储器106的顶部。三个存储器段中的每个具有可允许的最大权限级别。硬件使用当前权限级别分配作为用于控制对其他存储器段的读/写访问的基础。除了这三个用户可定义段之外,效用 ROM和数据存储器区还具有默认的最大权限级别,对程序和数据空间都提供了访问控制。微控制器核心构架通过将数据存储器映射到程序空间来支持来自数据RAM的程序执行。使数据存储器为低权限段消除了使用数据RAM来撤销访问控制的可能性。在本发明的某些实施方案中,经由内部寄存器用户加载器起始页地址(“ULDR”) 和用户应用程序起始页地址(“UAPP”)配置闪存页边界。对这些寄存器进行写访问,使得被赋予较低权限的代码不能改变被赋予较高权限的段的边界。为了确定特定页上的第一字的对应地址,将这些寄存器的值乘以每页的字数。例如,当闪存页中的字数为256时, ULDR*256是页ULDR上的第一字的地址。为了使这些关键值是非易失性的,在段初始化期间将ULDR和UAPP的值储存在闪存存储器106中。如果用户加载器段是优选的,则必须在系统段中对ULDR值进行编程,并且如果上电复位,则系统代码负责将ULDR值传输到ULDR寄存器。对于用户应用程序段也是如此。在用户加载器段中对UAPP值进行编程,并且UAPP值必须通过用户加载器传输到 UAPP寄存器。在本发明的各种实施方案中,图3中的闪存页界使得不能由用户代码创建的分段选择存在可能性。当程序存储器分段和保护被使能(例如,MPE = 1)时,系统代码段应该包含第一闪存存储器页。这意味着ULDR和UAPP寄存器没有被编程为0。如果希望程序存储器仅由两个程序存储器段构成,则ULDR寄存器和UAPP寄存器被编程来定义相同的起始页,因此在ULDR段内没有页被定义。如果ULDR寄存器被编程为等于或大于UAPP的值,则没有用户加载器段被定义。UAPP寄存器可以被编程为第二区域的起始页。在这种情形(仅两个编程存储器段)下,如图5中所示,系统代码存储器的最后一页将为(UAPP-I)。在某些情形下,这样优于使用用户加载器作为第二存储器区,从而仅高(HIGH)和低(LOW)权限级别是可用的。对程序存储器进行这种分段是为了便利多方在产品生命周期期间的不同阶段加载程序代码(例如,原始供应商、次级用户、终端用户更新和库加载)。分段和权限方案还提供了如下机制由被赋予较低权限的代码区保护针对读/写访问尝试的代码保密性。在某些实施方案中,通常允许读取效用ROM的能力,而与MPE位状态无关。在以下部分中,将既提供两段的多层访问控制系统的实例又提供三段的多层访问控制系统的实例。然而,本领域的技术人员将认识到,具有不止三个存储器段的实施方案在本发明的范围内。C.系统代码段在本发明的某些实施方案中,如图3中所示,最高权限级别还有最高安全级别是系统或系统代码段。通常,系统代码仅对微控制器产品的初始卖家是可用的。对于三段或两段的实施方案,示例性的系统代码分别在图4和图5中示出。在某些实施方案中,系统代码开始于某一页并且延伸到紧接在用户加载器页的起始页之前的那一页。定义系统代码区的顶部的ULDR寄存器可以是由系统代码或ROM代码可写入的。在本发明的各种实施方案中,用于初始化系统代码区的方法将所需的ULDR起始页值储存在闪存字地址00(Fh(紧接在系统密码之前的字)并且使复位矢量代码执行如下的ULDR写操作
org OOOOh
;Reset
move CP, #usr_ldr_page move ULDR, @CP jump sys—init org OOOFh user_ldr_page:
;Starting page address of user loader dw 0020h; Page 32
org OOlOh
;System password dw ··.,...,...,...然而,可以根据本发明的实施方案实现用于初始化系统代码区的其他方法。
在本发明的各种实施方案中,由raiv权限寄存器中的两个寄存器位定义系统代码的读/写可访问性。例如,系统读权限(“PSYR”)位被设置成特定值,以允许对系统代码区进行读操作。系统写权限(“PSYW”)位被设置成特定值,以允许对系统代码区进行写操作。在当前IP/内容不在ROM代码或系统代码内时,这些位都将被硬件自动清除为某一个值。如果在PSYR/PSYW未被使能的情况下对系统区进行读/写尝试,将分别针对读和写尝试设置存储器保护中断标记(例如,PSYRF和PSYWF)。如果设置了 MPE位,则这些中断标记将改变常规程序流程,以执行用户定义的子程序来处理异常。D.用户加载器代码段在本发明的某些实施方案中,如图3中所示,中权限级别(也是中安全级别)是用户加载器代码段。通常,用户加载器代码是微控制器产品的第二级用户可用的最高代码。对于三段实施方案,示例性的用户加载器代码段在图4中示出。在本发明的各种实施方案中,用户加载器代码区通常开始于由系统代码定义的 ULDR页并且延伸到紧接在用户应用程序页的起始页之前的那一页。UAPP寄存器定义用户加载器代码区的顶部,并且不能被用户应用程序代码写入(即,能由系统代码、用户加载器或ROM代码写入)。在某些实施方案中,用于配置用户加载器边界的方法类似于系统代码区使用的方法。在第一 ULDR页上,将编程到UAPP寄存器中的所需值被设置于字地址偏移00(Fh,即紧接在用户加载器密码之前。处于ULDR页的起始位置的用户加载器起始代码读取在ULDR* 闪存页大小+000! 处储存的值,并且写入UAPP寄存器。在本发明的各种实施方案中,用户加载器代码的读/写可访问性由PRIV权限寄存器中的两个寄存器位来定义。例如,用户加载器读权限(“PULR”)位被设置成特定值,以允许对用户加载器代码区进行读操作。用户加载器写权限(“PULW”)位被设置成特定值,以允许写入用户加载器代码区。在当前IP不在ROM代码、系统代码或用户加载器代码内时, 这些位都可以被硬件自动清零。如果在未被使能的情况下对用户加载器区域进行读/写尝试,则将分别针对读和写尝试设置存储器保护中断标记(例如,PULR读权限标记和PULW写权限标记)。如果设置了 MPE位,则这些中断标记将改变常规程序流程,以执行用户定义的子程序来处理异常。E.两段存储器配置如果微控制器应用的范围仅需要两个权限级别,则可以使用两段存储器配置。根据本发明的各种实施方案在图5中示出两段存储器配置。对于只具有两个存储器段的装置,不包括用户加载器存储器区,从而只留下系统存储器区和用户应用程序存储器区。在某些实施方案中,使用通常用于为用户加载器提供起始页的值的地址00(Fh处的闪存字,来替代为用户应用程序的起始页提供值,以支持两段存储器配置。为了使效用 ROM根据上下文得知上述闪存字意味着提供有关UAPP起始页而非ULDR起始页的信息,该字中的最高有效位可以被设置为特定的位值。因此,如果系统代码不包括用户加载器,则可以使用以下代码并且程序存储器分段映射将随之改变。
权利要求
1.一种安全微控制器,包括 存储器,所述存储器储存数据;处理单元,所述处理单元生成多个命令;访问控制单元,所述访问控制单元被耦合来接收所述多个命令,所述访问控制单元具有多个权限寄存器,所述多个权限寄存器限定对储存在所述存储器内的数据的访问权利;所述多个权限寄存器中的第一权限寄存器,所述第一权限寄存器限定对所述存储器内的第一部分数据的第一组访问权利;所述多个权限寄存器中的第二权限寄存器,所述第二权限寄存器限定对所述存储器内的第二部分数据的第二组访问权利,所述第二部分不同于所述第一部分;以及异常处理器,所述异常处理器耦合到所述访问控制单元,响应于未满足与所述第一部分数据相关联的所述第一组访问权利的访问命令而中断对所述第一部分数据的所述访问命令;其中,所述访问权利与所述安全微控制器的多个用户权限级别相关。
2.如权利要求1所述的安全微控制器,其中所述访问控制单元还包括地址监控器,所述地址监控器使所述多个命令中的第一命令的存储器地址与所述第一权限寄存器相关联;以及地址比较器,所述地址比较器基于所述第一权限寄存器内定义的访问权利准许对所述第一部分数据进行访问。
3.如权利要求2所述的安全微控制器,还包括存储器管理单元,所述存储器管理单元耦合到所述存储器、所述处理单元和所述访问控制单元,并且向所述存储器和所述访问控制单元提供多个输出,所述存储器管理单元在所述存储器、所述处理器单元和所述访问控制单元之间提供数据传输的管理。
4.如权利要求3所述的安全微控制器,其中所述存储器包括只读存储器、非易失性存储器和数据存储器。
5.如权利要求4所述的安全微控制器,其中所述数据存储器是随机存取存储器,并且其中所述非易失性存储器是闪存存储器。
6.如权利要求4所述的安全微控制器,还包括存在于所述只读存储器和所述非易失性存储器中的程序存储器。
7.如权利要求6所述的安全微控制器,其中所述非易失性存储器还包括 多个存储器段;所述多个存储器段中的各存储器段对应于所述多个权限级别中的特定权限级别,从而第一级用户将第一指令代码加载到对应于所述多个权限级别中的第一权限级别的第一存储器段,并且从而第二级用户将第二指令代码加载到对应于所述多个权限级别中的第二权限级别的第二存储器段;以及其中,由所述第一权限级别和所述第二权限级别定义对所述第一存储器段和所述第二存储器段的访问权利。
8.如权利要求7所述的安全微控制器,其中与低权限级别相关联的所述第二级用户被阻止访问与所述第一权限级别对应的所述第一存储器段。
9.如权利要求7所述的安全微控制器,其中基于所述访问控制单元的操作状态确定所述多个权限级别中的所述第一权限级别,所述操作状态的特征在于,第一级用户加载的第一指令代码的所述第一权限级别被定义为低于正执行所述指令代码的所述存储器段的最大权限级别或者所述第一权限寄存器中定义的值。
10.如权利要求7所述的安全微控制器,其中所述只读存储器具有所述第一权限级别, 并且所述数据存储器具有所述第二权限级别,其中所述第一权限级别高于所述第二权限级别。
11.如权利要求7所述的安全微控制器,其中通过安全程序保护系统代码,使其不受安全攻击的影响。
12.如权利要求11所述的安全微控制器,其中所述安全程序包括如下步骤在所述代码操作期间,中断和库函数已经提升当前权限级别之后、退出指令代码操作之前,降低所述当前权限级别;在其中指令代码提升所述当前权限级别的所述指令代码操作的持续时间内禁用中断、 降低所述权限级别的中断或在包括系统代码的所述存储器段外部运行的中断代码;以及其中,所述系统代码被阻止保存和恢复所述指令代码操作的所述当前权限级别。
13.如权利要求11所述的安全微控制器,其中所述安全程序包括如下步骤 经由子程序调用阻止指令代码操作提升当前权限级别。
14.如权利要求11所述的安全微控制器,其中所述安全程序包括如下步骤在提升当前权限级别之前检查系统库的变元,其中使用所述第二权限寄存器和第三权限寄存器以原子方式执行所述安全程序。
15.如权利要求7所述的安全微控制器,其中所述非易失性存储器还包括储存用户秘密数据和加密密钥数据的信息块;并且其中利用随机数据对所述信息块的多个未使用的存储器位置进行编程,并且打乱所述信息块的多个地址。
16.如权利要求15所述的微控制器,其中所述只读存储器包括具有最高权限级别的引导加载程序,并且可以访问所述存储器段中的任一个;并且其中所述用户秘密数据用于建立与远程安全加载器的已验证连接。
17.如权利要求15所述的安全微控制器,还包括硬件加密器,所述硬件加密器包括 散列块,所述散列块提供用于密钥生成的加密密钥的长伪随机序列的快速压缩; 寄存器,所述寄存器用于储存秘密密钥;地址位搅乱器,所述地址位搅乱器提供打乱的存储器位置; 加密块,所述加密块提供加密和解密;以及其中,与处理单元运行时间并行地执行加密操作。
18.如权利要求17所述的安全微控制器,其中所述硬件加密器还包括散列块,所述散列块被耦合来从所述非易失性存储器接收数据,所述散列块基于所述加密密钥的所述伪随机序列创建数据摘要;SCRAM寄存器,所述SCRAM寄存器被耦合来从所述散列块接收数据,进一步操纵所述散列摘要导致所述SCRAM寄存器生成密钥流;地址位搅乱器,所述地址位搅乱器被耦合来接收存储器地址和控制信号,所述地址位搅乱器打乱所述存储器地址位置;检查器,所述检查器经由双向数据总线耦合到所述加密块和所述存储器管理单元,所述检查器提供特定的数据模式管理;以及所述加密块被耦合来接收与所述SCRAM寄存器耦合的数据并且经由所述双向数据总线被耦合到所述存储器管理单元、所述非易失性存储器和所述检查器,所述加密块生成加密的纯文本数据和解密的加密文本数据的位流。
19.如权利要求18所述的安全微控制器,其中所述加密块还包括多个接口,所述多个接口从所述SCRAM寄存器和CONST寄存器接收伪随机序列; 子密钥生成块,所述子密钥生成块被耦合来从所述存储器管理单元的至少一个物理地址接收数据,所述子密钥生成块产生子密钥;地址排列块,所述地址排列块耦合到所述子密钥生成块和所述存储器管理单元,所述地址排列块向数据排列块提供位流;数据排列块,所述数据排列块耦合到所述SCRAM寄存器、所述子密钥生成块、所述地址排列块和来自所述存储器管理单元的数据输入,所述数据排列块生成耦合到所述检查器和所述存储器管理单元的加密/解密位流;以及其中,所述CONST寄存器是所述安全微控制器中硬连接的预定随机选择的数。
20.如权利要求19所述的加密块,其中所述物理地址源自用于所述非易失性存储器的存储器初始化和系统内编程的外部数据端口或指令指针或数据指针。
21.如权利要求19所述的安全微控制器,其中所述地址排列块通过执行如下步骤生成位流接收所述子密钥和所述物理地址;通过8位模(MOD)运算处理所述物理地址的低字节,以生成第一位流; 通过加法模216(ADD)运算处理所述第一位流,以生成第二位流; 对所述第二位流执行循环左移(ROL)运算,以生成地址排列位流;以及其中,所述MOD是采用多路复用器的加法运算的序列。
22.如权利要求19所述的安全微控制器,其中所述数据排列块通过执行如下步骤生成输出使用多个多路复用器,将来自所述子密钥生成器的所述子密钥和来自所述地址排列块的所述位流压缩成第一位流;通过加法模216运算处理所述第一位流,其中经转换的地址位流产生第二位流; 对所述第二位流执行循环左移(ROL)运算,以生成最终位流; 使用所述最终位流对所述输入数据进行加密或解密;以及将所述加密/解密位流耦合到所述加密块和所述检查器。
23.如权利要求19所述的安全微控制器,其中所述检查器包括比较器,所述比较器用于处理与所述非易失性存储器的特征相关的特定数据模式,并且其中阻止所述特定数据模式被所述加密块加密或解密。
24.一种硬件加密器,包括散列块,所述散列块从存储器和处理器单元接收双向数据并且提供用于密钥生成的加密密钥的长伪随机序列的快速压缩; 寄存器,所述寄存器用于储存密钥; 地址位搅乱器,所述地址位搅乱器提供打乱的存储器位置;加密块,所述加密块提供加密和解密;以及其中,与处理单元运行时间并行地执行加密操作。
25.如权利要求M所述的硬件加密器,还包括散列块,所述散列块被耦合来从非易失性存储器接收数据,所述散列块基于所述加密密钥的所述伪随机序列创建数据摘要;SCRAM寄存器,所述SCRAM寄存器被耦合来从所述散列块接收数据,进一步操纵所述数据摘要,导致所述SCRAM寄存器生成中间密钥流;地址位搅乱器,所述地址位搅乱器被耦合来接收与所述存储器管理单元耦合的地址输入和控制输入,并且所述地址位搅乱器具有耦合到所述非易失性存储器的地址输出,所述地址位搅乱器打乱非易失性存储器地址位置;检查器,所述检查器经由双向数据总线耦合到所述加密块和所述存储器管理单元,所述检查器提供特定的数据模式管理;以及加密块,所述加密块被耦合来接收与所述SCRAM寄存器耦合的数据并且经由所述双向数据总线耦合到所述存储器管理单元、所述非易失性存储器和所述检查器,所述加密块生成加密的纯文本数据和解密的密码文本数据的位流;以及其中,所述加密器从所述非易失性存储器接收所述加密密钥。
26.一种用于保护微控制器内的内容的方法,所述方法包括如下步骤 将从第一级用户接收的第一组数据储存在微控制器的存储器中; 针对储存的所述第一组数据关联第一组访问权利;管理对于所述第一组访问权利的访问,所述第一组访问权利定义对于储存的所述第一组数据的访问权限;以及根据与储存的第二组数据相关联的第二组访问权利,阻止对之前由第二级用户写入所述存储器的储存的所述第二组数据的访问,所述第二组访问权利定义对储存的所述第二组数据的访问权限。
27.如权利要求沈所述的方法,还包括将与所述第一访问权利相关联的所述第一组数据和与所述第二访问权利相关联的所述第二组数据储存在非易失性存储器的不同段中;基于用户的访问权利,控制对所述存储器段的访问;其中,由与存储器管理单元耦合的硬件以及存在于效用ROM中的程序执行访问权利。
28.一种保护微控制器中的数据的方法,包括如下步骤 提供来自非易失性存储器的加密密钥;将具有伪随机序列的所述加密密钥散列化为数据摘要,所述数据摘要表征所述加密密钥的加密转换;将所述数据摘要储存在寄存器中; 提供密钥序列,以将所述数据摘要耦合到加密块; 使用所述密钥序列对地址和相关联数据进行加密,从而生成加密的位流; 其中,所述地址被搅乱并储存在非易失性存储器中;并且其中,与处理器单元运行时间并行地执行所有加密操作。
29.如权利要求28所述的方法,还包括比较所述加密块的所述相关联数据以检测是否存在不能利用非易失性存储器正确保存的特定模式的步骤响应于检测到所述特定模式,将所述相关联数据储存在所述闪存存储器内;以及响应于没有检测到所述特定模式,储存所述加密位流。
30.如权利要求四所述的方法,其中确定加密块的所述相关联数据的特定状态包括如下步骤针对写操作确定所述相关联数据的输入数据是否为特定模式,如果所述输入数据是所述特定模式,则旁路所述加密块并且将所述输入数据编程到所述非易失性存储器;针对写操作确定所述相关联数据的输出数据是否为所述特定模式,如果所述输出数据是所述特定模式,则丢弃所述加密的位流,并且所述相关联数据的所述输入数据旁路所述加密块并且将所述输出数据编程到所述非易失性存储器;针对读操作确定所述非易失性存储器数据的输出数据是否为特定模式,如果所述输出数据是所述特定模式,则旁路所述加密块并且将所述输出数据分配到所述目的地;针对读操作确定所述解密的数据的输出数据是否为所述特定模式,如果所述输出数据是所述特定模式,则丢弃所述解密的位流,所述非易失性存储器数据的所述输出数据旁路所述加密块并且将所述输出数据分配到所述目的地。
31.一种安全控制器,包括 存储器,所述存储器储存数据;处理单元,所述处理单元生成多个命令;访问控制单元,所述访问控制单元被耦合来接收所述多个命令,所述访问控制单元具有多个权限寄存器,所述多个权限寄存器定义对所述存储器内储存的数据的访问权利;所述多个权限寄存器中的第一权限寄存器,所述第一权限寄存器定义对所述存储器内的第一部分数据的第一组访问权利;所述多个权限寄存器中的第二权限寄存器,所述第二权限寄存器定义对所述存储器内的第二部分数据的第二组访问权利,所述第二部分不同于所述第一部分;以及异常处理器,所述异常处理器耦合到所述访问控制单元,响应于未满足与所述第一部分数据相关联的所述第一组访问权利的访问命令而中断对所述第一部分数据的所述访问命令;以及硬件加密器,所述硬件加密器包括散列块,所述散列块被耦合来从所述存储器和所述处理器单元接收双向数据,所述散列块提供用于密钥生成的加密密钥的长伪随机序列的快速压缩,地址位搅乱器,所述地址位搅乱器耦合到存储器管理单元和所述存储器,所述地址位搅乱器提供打乱的存储器位置,加密块,所述加密块提供加密和解密,并且耦合到所述存储器管理单元和所述存储器, 其中,所述硬件加密器从所述存储器接收加密密钥。
全文摘要
本发明涉及一种被设计用于保护知识数字内容的微控制器。该微控制器包括安全CPU、实时加密器和通过可编程非易失性存储器实现的用于内部存储器的用户可编程多层访问控制系统。可编程非易失性存储器允许终端用户进行系统内和应用程序内编程。可编程非易失性存储器主要用于程序代码和操作参数储存。多层访问控制是CPU不可或缺的部分,通过根据一组用户编程的参数控制读、写和/或执行代码段,对内嵌数字内容提供保密保护。加密器包括采用数据储存的行和列操纵进行数据加密和解密的一组加密规则。与CPU运行时间并行地执行所有加密操作,而不会导致系统操作额外的延迟和延时。
文档编号G06F21/00GK102197382SQ200980142513
公开日2011年9月21日 申请日期2009年9月30日 优先权日2008年10月23日
发明者D·W·卢米斯, E·T·K·马, M·A·夸尔斯, M·A·洛弗尔, R·M·马奇塞尔 申请人:美信集成产品公司

最新回复(0)