CN102197382B - 多层内容保护微控制器 - Google Patents

多层内容保护微控制器 Download PDF

Info

Publication number
CN102197382B
CN102197382B CN200980142513.3A CN200980142513A CN102197382B CN 102197382 B CN102197382 B CN 102197382B CN 200980142513 A CN200980142513 A CN 200980142513A CN 102197382 B CN102197382 B CN 102197382B
Authority
CN
China
Prior art keywords
data
memory
block
address
permission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200980142513.3A
Other languages
English (en)
Other versions
CN102197382A (zh
Inventor
R·M·马奇塞尔
D·W·卢米斯
E·T·K·马
M·A·洛弗尔
M·A·夸尔斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maxim Integrated Products Inc
Original Assignee
Maxim Integrated Products Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maxim Integrated Products Inc filed Critical Maxim Integrated Products Inc
Publication of CN102197382A publication Critical patent/CN102197382A/zh
Application granted granted Critical
Publication of CN102197382B publication Critical patent/CN102197382B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Abstract

本发明涉及一种被设计用于保护知识数字内容的微控制器。该微控制器包括安全CPU、实时加密器和通过可编程非易失性存储器实现的用于内部存储器的用户可编程多层访问控制系统。可编程非易失性存储器允许终端用户进行系统内和应用程序内编程。可编程非易失性存储器主要用于程序代码和操作参数储存。多层访问控制是CPU不可或缺的部分,通过根据一组用户编程的参数控制读、写和/或执行代码段,对内嵌数字内容提供保密保护。加密器包括采用数据储存的行和列操纵进行数据加密和解密的一组加密规则。与CPU运行时间并行地执行所有加密操作,而不会导致系统操作额外的延迟和延时。

Description

多层内容保护微控制器
技术领域
本发明总体涉及微控制器,更具体来讲,涉及能够保护用微控制器存储的诸如知识产权元素的内容的技术。具有这些特征的微控制器俗称安全微控制器(securemicrocontroller)。
背景技术
在一段时间内,对于电子产业而言,处理器或微控制器内的内容保护一直是一大挑战。随着半导体技术的发展,某些微控制器已变成复杂的片上系统(systems-on-chip)。之前以硬件实现的关键系统功能现在可以以软件实现,从而允许初始设备制造商(“OEMs”)快速向市场提供高价值、低成本的微控制器解决方案。例如,基于可编程非易失性存储器的微控制器允许诸多应用程序/内容供应商对微控制器进行频繁的系统更新,包括代码的修改和新功能的添加。
常常,这些代码的修改和/或新功能会代表供应商所拥有的很重要的知识产权,并且可能容易受到其他人的未经授权访问的影响。另外,微控制器内的软件实现通常比硬件更容易进行逆向工程(reverse-engineer)。结果,基于非易失性存储器的电子装置可以包括硬件数据保护,所述硬件数据保护尝试保护所述电子装置内的这个知识产权。
微控制器通常包括根据非易失性存储器内的数据区而被保留用于访问控制信息的存储区。所述数据区可以根据存储器阵列的物理结构被布置为含有用于数据储存的所有存储器单元的单个实体或者被布置为多个存储器段(segment)。在现有技术的系统中,由硬件执行对特定段的访问控制。可以由处理器执行程序代码,但是读写操作由于控制设置而被禁止。通常,取消这种保护的唯一方法是,首先同时擦除受保护的程序代码和其相应的访问控制信息。
这种方法提供了有效的数据保护,但是还导致用于控制信息的额外存储器区以及在擦除和改编(reprogramming)中CPU时间的花费过大,即使是对于小型程序更新而言。CPU时间过长不仅使系统效率降低,而且这还使程序管理的复杂性增加。
这种简单的安全管理但刚性转换(rigidformation)施加了过多限制并且可能对终端用户造成负担。当微控制器操作的程序代码变得更复杂难懂时,可能有利的是利用OEM和其他卖方提供的可用软件库而非由Scratch产生完整程序。软件库包括主算法程序和特定函数,并且为子程序调用备用。这种软件库代表终端产品的作为知识产权(IP)的重要值。此外,程序开发可能涉及不同开发阶段的不同开发人员,这样就有可能需要离岸(off-shore)支持和维护。这种多层程序开发和参与其中的多开发人员导致了复杂的环境,在该环境下,难以安全地保持私有IP内容。
当前的访问控制方案还不能直接读取程序存储器空间中的操作参数。这些操作参数通常是在系统初始化期间被设置的并且被储存为非易失性存储器中的数据表,所以在万一掉电时也可以保存数据。常见的做法是将这些关键参数储存在具有微控制器的系统程序(一个或多个)的同一非易失性存储器中。如果仅执行受保护的程序区并且禁止读取数据,则读取操作参数可能是个问题。
尤其对于诸如安全微控制器这类低成本但高度集成的电子系统,以上限制导致对片上系统中的IP保护具有挑战性。
发明内容
本发明涉及提供私有数字内容的多层保护的微控制器。微控制器的各种实施方案包括安全CPU、实时加密器和微控制器内的可编程非易失性存储器的用户可编程多层访问控制系统。可编程非易失性存储器允许终端用户进行系统内(in-system)和应用程序内(in-application)编程,并且能够在断电时保存数据内容。
多层访问控制设置在微控制器中或用微控制器提供,并且使得通过根据一组用户编程参数控制代码段的读、写和/或执行能够对内嵌的数字内容进行保密性保护。在某些实施方案中,加密器并入通过采用数据储存的行和列操纵进行数据加密和解密的一组加密规则。在本发明的一些实施方案中,与CPU运行时间并行地执行加密操作,而不会导致系统操作明显的额外延迟(latency)和延时(delay)。
在该发明内容部分中已经总体描述了本发明的某些特征和优点;然而,额外的特征、优点和实施方案在本文中呈现,并且根据本发明的附图、说明书和权利要求书,其对于本领域的普通技术人员来说将是清楚的。因此,应该理解,本发明的范围不应该受该发明内容部分所公开的特定实施方案的限制。
附图说明
将参照本发明的实施方案,这些实施方案的实例可以在附图中示出。这些附图旨在是示例性的,而非限制性的。虽然在这些实施方案的背景下总体描述了本发明,但是应该理解,其不旨在将本发明的范围限于这些特定的实施方案。
图1根据本发明的各种实施方案示出保护知识产权内容的微控制器(或安全控制器)框图。
图2根据本发明的各种实施方案示出访问控制单元和相关电路的框图。
图3是根据本发明的各种实施方案描述程序存储器边界(memorybourdaries)和权限级别的表格。
图4是根据本发明的各种实施方案的三个存储器段的程序存储器分段(segmentation)的示意图。
图5是根据本发明的各种实施方案的两个存储器段的程序存储器分段的示意图。
图6是根据本发明的各种实施方案的三个存储器段的权限寄存器级别的表格。
图7是本发明的各种实施方案的加密功能块和接口的框图。
图8是根据本发明的各种实施方案的加密块内部结构的框图。
图9是根据本发明的各种实施方案示出多层访问控制的操作的流程图。
图10是根据本发明的各种实施方案示出加密的操作的流程图。
具体实施方式
本发明的实施方案提供了用于安全微控制器的系统、装置和方法。在以下的描述中,为了说明的目的,阐述了特定的细节以提供对本发明的理解。然而,本领域的技术人员应该清楚,可以在没有这些细节的情况下实践本发明。本领域的技术人员将认识到,可以按多种方式并且使用各种手段执行以下描述的本发明的实施方案。本领域的技术人员还将认识到,额外的修改、应用和实施方案在其范围内,因为其是本发明可以提供实用性的额外领域。因此,下述的实施方案是本发明特定实施方案的示例并且想要避免模糊本发明。
说明书中引用“一个实施方案”或“实施方案”意味着,结合实施方案描述的特定特征、结构、特性或功能包括在本发明的至少一个实施方案中。说明书中各个位置出现的短语“在一个实施方案中”、“在实施方案中”等不必都参照同一实施方案。
A.安全微控制器
根据本发明的各种实施方案描述了包括具有安全和保护功能的核心和功能性元件的安全微控制器。保护功能可以是微控制核心的一部分,所述微控制核心包括根据系统编程人员定义的各存储器段的读/写权限进行存储器访问的控制协议。可以由与存储器管理单元耦合的硬件和存在于效用(utility)ROM中的程序来执行所述控制协议。效用功能可以包括用于系统编程的安全加载器(loader)和用于程序代码开发的电路内(in-circuit)调试器。为了对内嵌程序代码提供保护,根据本发明的某些实施方案,可以通过硬件加密器在运行时打乱(scramble)数据内容和存储器位置。结果,可以由多个开发人员在微控制器内构建一个或多个程序,同时保护每个开发人员在微控制器内的私有内容。在各种实施方案中,储存在微控制器内的每个开发人员的私有内容被分配特定的访问权利,这些访问权利限制和/或阻挡其他人对这个内容进行访问。
图1是根据本发明的各种实施方案的安全微控制器100的框图。如图1中所示,微控制器核心101包括中央处理单元(“CPU”)和异常处理器。CPU也叫作“处理器单元”。在本发明的某些实施方案中,微控制器核心101的CPU被实现为流水线化处理器(pipelinedprocessor),其允许程序代码预获取为单个时钟周期。因此,指令字造成指令在单个时钟周期内被执行。这样允许访问时间长的程序存储器(例如,闪存存储器)具有较高的系统时钟频率。线性码的代码执行仍然是单个周期,但是除非实现另外的措施(例如,分支预测单元)否则代码分支造成单个时钟周期损失(penalty)。指令代码操作通常包括定义特定功能的代码执行的多个周期。另外,术语“代码”、“程序代码”和“指令代码”被视为是同义词。
在各种实施方案中,处理器使用具有单独的程序存储器和数据存储器的哈佛(Harvard)存储器构架。这种存储器构架通过允许同时访问程序存储器和数据存储器来提高系统带宽;它还允许针对数据储存使用不同的字长。例如,程序存储器地址和数据存储器地址都可以是16位。16位有效地址支持65536(64K)、16位字的程序存储器和64K、16位字的数据存储器。为了允许访问储存在程序存储器中的数据表,处理器还支持冯·诺依曼式(Von-Neumann-style)访问,但是除非实现指令高速缓存否则这种访问导致1周期的迟延。本领域的技术人员将认识到,根据本发明的实施方案可以实现各种处理器构架、时钟方案和寻址方法。
异常处理程序是微控制器核心101的一部分并且用于造成如果出现不期望或期望的事件或状况则中断正常程序流程。例如,未经授权的用户非法尝试访问安全内容会生成有效防止这种访问的中断。
程序存储器储存可以包括程序代码和操作参数的内容。可以使用非易失性存储器(例如,闪存存储器106或EEPROM)实现主程序存储器。
ROM105还映射到程序空间,以支持不需要系统内可编程性的效用函数,例如,引导加载程序(bootstraploader)函数、电路内调试和芯片测试。为了确保正确操作,对可编程非易失性存储器的擦除和写入可以通过对效用ROM105的子程序调用来执行,因此其只能由系统代码存储器访问。在本发明的某些实施方案中,对闪存存储器106进行读访问是一个周期,但是擦除和写入的时间是不确定的,这是由于这些操作是由效用ROM105经由一对控制和数据寄存器来处理的。
数据存储器将各种类型的数据储存在微控制器内。本领域的技术人员将认识到,可以用各种存储器技术(例如SRAM107)实现数据存储器。
安全微控制器100的特征是其对程序存储器进行分层的多层访问控制。使用与存储器管理单元(MMU)103、访问控制单元102和微控制器核心101的安全特征耦合的物理层实现这种分层。所述物理层包括监控器和比较器电路,用于连续以存储器保护模式监控程序流程并根据用户定义的存储器段的权限级别控制对程序存储器的读/写访问。在具体实施方案中,程序存储器可以分为三个存储器段,为系统提供三个访问权限级别。可以使用CPU通用寄存器映射中的一组专用寄存器来定义各段的存储器范围和访问权限。在某些实施方案中,三个寄存器是用户可编程的,但是它们的访问次序是由原子电路(atomiccircuit)来执行的,所述原子电路的形式为一对次序受控的寄存器。原子操作是指一组操作,这些操作可以被组合起来,从而它们对于剩余系统而言好像是单个操作,且仅有两个可能的结果:成功或失败。
在本发明的各种实施方案中,当设置了系统寄存器内的存储器保护使能(“MPE”)位时,访问控制将施行存储器保护模式。在某些实例中,这种系统寄存器可以仅由存在于最高安全存储器段内的程序代码访问。在这种模式的操作中,CPU以常规模式获取、解码和执行程序指令。控制访问电路监控用于存储器指令的指令解码器。当检测到加载或储存命令时,监控器使用最后一个程序地址来确定目前的访问权限。然后,当比较器针对段边界(segmentboundaries)检查指针地址时,使用目前的权限来测试源/目的地的合法性。CPU将只执行经授权的读或写访问,所述经授权的读或写访问意味着在对应的访问权限(一个或多个)下允许的访问。任何未经授权的访问尝试将造成异常或中断,可选地迫使程序以响应的方式执行用户定义的程序。
如图1中所示,根据本发明的各种实施方案,微控制器100还可以包括双向硬件加密器104,所述双向硬件加密器104为了保护内嵌软件而在运行时转换指令代码。为了进行强加密保护,加密器可以使用采用了诸如三重DES或AES之类的传统加密算法。在某些实施方案中,安全微控制器100所采用的加密技术是通过利用加密密钥排列(permuting)指令地址来生成密码流。对加密技术的考虑包括:
1.足够的乱序(Obfuscation):
加密特征导致足够的乱序,从而即使知道第一闪存指令(flashinstruction)是来自已知的启动代码,也使得难以推导出纯文本。
2.低的硬件影响:
就面积和计算时间而言,加密特征没有消耗过多的资源。由于闪存存储器的操作速度低,需要从闪存获取的加密的代码字不应该只在解密操作的最后阶段使用。
3.支持双向操作的可逆函数:
如果存在d=fn(s,x,y,z,...),则也存在s=fn-1(d,x,y,z,...)。这并不意味着真实逆转,因为对于任何给定的d,可能存在数个s,但是对于s、x、y、z、...的任何组合只有一个d。如果fn()被实现为“密钥流(keystream)”生成器,则除了最后的求和之外,fn-1()=fn()。
4.其他可能的限制:
对于密钥寄存器大小存在限制。64位至128位的大小可以是存储大小和密钥强度之间的良好折衷。这些操作可以是加法模(additionmodulo)、二进制和、位选择等,但是一些操作在硬件方面可能消耗巨大,例如通用循环或模n,其中n不是2的幂。可以使用特定的循环(其中,n=0、1、2、3)或硬连接的模3、模5或模7和类似的低门数操作。
参照图7,加密功能和接口700包括散列块701,其用于快速压缩用于密钥生成的长伪随机序列;寄存器,其用于密钥储存(例如,闪存存储器106中储存的加密密钥);位搅乱器(shuffler)(地址位搅乱器705),其用于打乱存储器位置;以及加密块703,其用于对待储存的纯文本代码进行加密,并且对待执行的密文代码或关键数据进行解密。在各种实施方案中,加密块703基于逐个指令(instruction-by-instruction)来工作,从密钥寄存器中取出各指令的地址和数据的子集,以生成由基本操作序列导致的密钥流。然后,将密钥流与代码字进行二进制求和。加密器还可以包括电路,用于检查特定模式的输入和输出位流并且确定其是否应该被旁路(by-pass)。在某些实施方案中,加密器104可以集成在MMU103内,这是因为它被实现在程序存储器的数据路径中并且加密功能通常被使能。
虽然可以以存储器保护模式保护整个程序空间,但是硬件加密器104通常应用于通过闪存存储器106实现的主程序存储器。ROM105主要包括通常不保密的效用函数。ROM105中包括的引导加载程序不应具有安全威胁,即使引导加载程序能够被读/写导入闪存存储器106,这是因为加载器功能是处于物理层的访问控制下。
可以在不用硬件加密器的情况下实现安全微控制器的其他实施方案。虽然程序代码将不会在微控制器内受保护,但是这种系统将仍然会具有多层访问控制的安全特征。
B.多层访问控制
(28)以下对微控制器内的多层访问控制和存储器分段的描述旨在举例说明本发明的某些实施方案。本领域的技术人员将认识到,根据本发明的实施方案,可以实现其他访问控制协议和存储器段构架。
如之前所述的,安全微控制器100的一个特征是其多个用户对程序存储器的分层多层访问控制。如图2中所示,访问控制单元102使能对安全微控制器100的多层访问控制。访问控制的一个元件是访问监控器201。访问控制单元102耦合到来自微控制器核心101的CPU的控制信号、地址信号和数据信号。来自CPU的控制信号可以包括命令、存储器保护、读/写请求以及本领域的技术人员已知的其他信号。来自CPU的数据信号可以包括数据总线信号、寄存器信号和本领域的技术人员已知的其他数据信号。在某些实施方案中,数据信号被耦合到双向数据总线。来自CPU的地址信号可以包括程序地址信号和本领域的技术人员已知的其他地址信号。
在访问控制单元102中还示出的是权限寄存器,包括PRIV、PRIVT0、PRIVT1和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-1)。在某些情形下,这样优于使用用户加载器作为第二存储器区,从而仅高(HIGH)和低(LOW)权限级别是可用的。
对程序存储器进行这种分段是为了便利多方在产品生命周期期间的不同阶段加载程序代码(例如,原始供应商、次级用户、终端用户更新和库加载)。分段和权限方案还提供了如下机制:由被赋予较低权限的代码区保护针对读/写访问尝试的代码保密性。在某些实施方案中,通常允许读取效用ROM的能力,而与MPE位状态无关。
在以下部分中,将既提供两段的多层访问控制系统的实例又提供三段的多层访问控制系统的实例。然而,本领域的技术人员将认识到,具有不止三个存储器段的实施方案在本发明的范围内。
C.系统代码段
在本发明的某些实施方案中,如图3中所示,最高权限级别还有最高安全级别是系统或系统代码段。通常,系统代码仅对微控制器产品的初始卖家是可用的。对于三段或两段的实施方案,示例性的系统代码分别在图4和图5中示出。
在某些实施方案中,系统代码开始于某一页并且延伸到紧接在用户加载器页的起始页之前的那一页。定义系统代码区的顶部的ULDR寄存器可以是由系统代码或ROM代码可写入的。在本发明的各种实施方案中,用于初始化系统代码区的方法将所需的ULDR起始页值储存在闪存字地址000Fh(紧接在系统密码之前的字)并且使复位矢量代码执行如下的ULDR写操作:
然而,可以根据本发明的实施方案实现用于初始化系统代码区的其他方法。
在本发明的各种实施方案中,由PRIV权限寄存器中的两个寄存器位定义系统代码的读/写可访问性。例如,系统读权限(“PSYR”)位被设置成特定值,以允许对系统代码区进行读操作。系统写权限(“PSYW”)位被设置成特定值,以允许对系统代码区进行写操作。在当前IP/内容不在ROM代码或系统代码内时,这些位都将被硬件自动清除为某一个值。如果在PSYR/PSYW未被使能的情况下对系统区进行读/写尝试,将分别针对读和写尝试设置存储器保护中断标记(例如,PSYRF和PSYWF)。如果设置了MPE位,则这些中断标记将改变常规程序流程,以执行用户定义的子程序来处理异常。
D.用户加载器代码段
在本发明的某些实施方案中,如图3中所示,中权限级别(也是中安全级别)是用户加载器代码段。通常,用户加载器代码是微控制器产品的第二级用户可用的最高代码。对于三段实施方案,示例性的用户加载器代码段在图4中示出。
在本发明的各种实施方案中,用户加载器代码区通常开始于由系统代码定义的ULDR页并且延伸到紧接在用户应用程序页的起始页之前的那一页。UAPP寄存器定义用户加载器代码区的顶部,并且不能被用户应用程序代码写入(即,能由系统代码、用户加载器或ROM代码写入)。
在某些实施方案中,用于配置用户加载器边界的方法类似于系统代码区使用的方法。在第一ULDR页上,将编程到UAPP寄存器中的所需值被设置于字地址偏移000Fh,即紧接在用户加载器密码之前。处于ULDR页的起始位置的用户加载器起始代码读取在ULDR*闪存页大小+000Fh处储存的值,并且写入UAPP寄存器。
在本发明的各种实施方案中,用户加载器代码的读/写可访问性由PRIV权限寄存器中的两个寄存器位来定义。例如,用户加载器读权限(“PULR”)位被设置成特定值,以允许对用户加载器代码区进行读操作。用户加载器写权限(“PULW”)位被设置成特定值,以允许写入用户加载器代码区。在当前IP不在ROM代码、系统代码或用户加载器代码内时,这些位都可以被硬件自动清零。如果在未被使能的情况下对用户加载器区域进行读/写尝试,则将分别针对读和写尝试设置存储器保护中断标记(例如,PULR读权限标记和PULW写权限标记)。如果设置了MPE位,则这些中断标记将改变常规程序流程,以执行用户定义的子程序来处理异常。
E.两段存储器配置
如果微控制器应用的范围仅需要两个权限级别,则可以使用两段存储器配置。根据本发明的各种实施方案在图5中示出两段存储器配置。对于只具有两个存储器段的装置,不包括用户加载器存储器区,从而只留下系统存储器区和用户应用程序存储器区。
在某些实施方案中,使用通常用于为用户加载器提供起始页的值的地址000Fh处的闪存字,来替代为用户应用程序的起始页提供值,以支持两段存储器配置。为了使效用ROM根据上下文得知上述闪存字意味着提供有关UAPP起始页而非ULDR起始页的信息,该字中的最高有效位可以被设置为特定的位值。因此,如果系统代码不包括用户加载器,则可以使用以下代码并且程序存储器分段映射将随之改变。
F.用户应用代码段
在本发明的某些实施方案中,如图3中所示,最低权限级别(也是最低安全级别)是用户应用程序代码段。通常,用户应用代码是仅第三级用户或终端用户进行升级或库加载时可用的代码。对于三段或两段的实施方案,示例性的用户应用程序代码分别在图4和图5中示出。
在本发明的某些实施方案中,用户应用程序代码区开始于UAPP页并且延伸通过闪存程序存储器的最后一页(假定UAPP代码区已定义)。如图3中所示,对应于最低权限级别,用户应用程序区中的代码执行权限不能高于“低”。因此,没有任何读/写权限使能或存储器保护中断标记。
G.权限寄存器
在本发明的某些实施方案中,权限寄存器包括PRIV、PRIVT0和PRIVT1,并且在图1和图2上标注出。图6根据本发明的各种实施方案提供了对应于三段存储器配置给出三个权限级别的权限寄存器值的表格。这个表格应用了权限寄存器PRIV、PRIVT0和PRIVT1。有两种方式用来改变权限级别。可以在访问控制下直接对PRIV寄存器进行读/写。用于更新PRIV寄存器值的另一种方式是经由原子操作、对PRIVT0和PRIVT1寄存器进行连续写(back-to-backwrite)。也就是说,写PRIVT0操作之后紧接着进行写PRIVT1操作。万一有人修改堆栈指针来撤销访问控制,则推荐最后一种方法。硬件保证了PRIV寄存器的内容永远不会高于运行代码的存储器区的最高权限级别。例如,如果用户加载器或用户应用程序代码尝试将PRIV设置为高,则硬件将会阻止发生该动作。然而,任何代码可以在任何时候决定降低访问权限。在本发明的某些实施方案中,当前代码执行的权限将低于:
1.执行代码的存储器区的最高权限级别,或
2.PRIV寄存器的内容。
例如,如果PRIV寄存器被配置为中(MEDIUM)权限,则将基于中权限只允许访问系统代码区中的代码执行。在本发明的各种实施方案中,在图6中提供了根据PRIV寄存器的位内容通常固定的级别分配。示出了常数高、中和低,但是可以使用从0000b至1111b的所有值。
H.使用PRIVT0和PRIVT1寄存器的原子PRIV写
根据各种实施方案,除了直接写入PRIV寄存器之外,还可以通过以连续序列写入PRIVT0和PRIVT1寄存器来设置寄存器和权限级别。该命令被称作原子PRIV写命令。
如同PRIV寄存器,硬件保证了PRIVT0的内容永远不高于运行代码的存储器区的最高权限级别。写入PRIVT0对PRIV寄存器没有影响,但是写入PRIVT1寄存器会造成硬件将PRIV寄存器修改成低于:
1.执行代码的存储器区的最高权限级别,
2.PRIVT0寄存器,或
3.PRIVT1写的源变元(sourceargument)
使PRIVT0、PRIVT1寄存器对(pair)按次序被写入以改变权限PRIV寄存器的安全益处在于,PRIVT0、PRIVT1写之间设置的代码不能被希望获得未经授权的较高权限的人故意跳过。写入PRIV可以自动地将PRIVT0复位为低。
I.系统软件的规则
虽然是以硬件实现权限级别,但是存在多种方式让用户代码可以尝试撤销存储器访问保护,包括操纵共享、共用的堆栈或寄存器,以及跳过或调用不是正式入口点(entrypoint)的系统存储器中的代码。根据本发明的各种实施方案,可以应用以下规则提供更安全的系统并且使这些攻击的成功性最小。
首先,系统代码不能保存并恢复权限级别。替代地,提升权限的中断和系统库函数在退出之前也无条件地降低了权限。如果存在降低权限级别的中断或在系统空间外部运行的中断代码,则提升权限的代码在权限操作的维持期间禁用中断。
第二,要求高权限级别的操作没有调用子程序来提升权限级别。第三,在提升权限级别之前检查变元的系统库函数确实是使用PRIVT0和PRIVT1以原子方式来操作,以防止将检查短路(以及有关禁用中断应用的规则)。
本领域的技术人员将认识到,可以应用系统软件的其他规则进一步确保微控制器内的内容/IP的安全性和集成度。
J.引导加载程序函数
安全微控制器100支持各种模式的系统操作。在本发明的某些实施方案中,微控制器100通常以用户模式运行以支持用户应用程序。ROM引导加载程序模式用于初始化存储器和系统配置。ROM引导加载程序模式在硬件的辅助下还支持应用程序内编程和关键系统数据更新。在图9中示出示例性的引导加载程序操作的流程图900。
根据本发明的各种实施方案,存在于效用ROM中的引导加载程序函数为系统初始化和编程提供必要支持。根据图9,在每个复位901、904之后,CPU自动开始在效用ROM中的特定地址处执行906,允许效用ROM代码执行必要的系统支持函数。接着,检验系统编程使能(“SPE”)位907,以确定系统编程是否应该开始或者是否应该绕过代码,而非迫使执行矢量来开始用户程序代码111。例如,当SPE位被设置为特定值时,处理器将执行预定的引导加载程序模式程序921。SPE位还可以被默认为某一值。
为了进入引导加载程序模式921,可以经由接口(例如,JTAG902、903)在复位901期间将SPE位设置为某一值。引导加载程序实现了如图9中的步骤922至932所描述的系统编程。这些步骤包括检查系统密码925和ULDR密码926、927。假设密码匹配928,则将加载器解锁929,并且根据需要在串行接口931的支持下实现闪存编程930。当完成系统编程时,引导加载程序能够清除SPE位并且将装置复位,从而系统编程程序随后被绕过。
在某些实施方案中,效用ROM段具有默认的高安全级别,因此引导加载程序具有最高访问权限并且可以被调用以访问任何程序存储器段,包括没有在常规程序存储器空间中映射并且针对一般使用不可用的信息块。
在本发明的各种实施方案中,信息块是闪存存储器106中保存的小存储器段。对于微控制器核心100,信息块用于储存用户秘密数据和加密密钥数据。用户秘密是二进制流,并用于经由诸如USB、UART或SPI之类的传统接口建立与引导加载程序所支持的远程安全加载器的经验证的连接。加密密钥是硬件加密器要使用的伪随机序列。在信息块中还定义锁定模式。如果锁定模式被编程,则禁止对信息块的进一步访问。在某些实施方案中,只有用于擦除闪存存储器106中的所有数据内容的整体擦除(masserase)可以将所述锁定解锁。
由于信息块不在程序存储器空间内,因此通过闪存控制(“FCNT”)和闪存数据(“FDATA”)寄存器对信息块进行读/写访问,这些寄存器只有当CPU从效用ROM开始执行时是可操作的。信息块的安全级别默认为高,并且因此在锁死之前只能由系统代码对其进行访问。根据本发明的各种实施方案,在图7中示出示例性的FCNT和FDATA。
K.电路内调试函数
微控制器100支持各种模式的系统操作。通常,微控制器100在用户模式下运行以支持用户应用程序。调试模式旨在提供实时的电路内调试/仿真。测试模式被设计用于支持内部芯片测试和限定条件。调试模式和测试模式都通过测试访问端口(TAP)和兼容于JTAG标准的TAP控制器支持。
在本发明的各种实施方案中,由访问控制硬件控制硬件电路内调试器和存在于效用ROM105中的调试程序。调试器硬件设施可用于程序开发和系统调试,但是对程序存储器的读/写访问遵循特定存储器段的权限级别。
当通过调试程序实现调试特征时,这些软件程序监视访问规则。调试器追踪调用地址并且根据存储器段的权限级别确定其动作过程。在某些实施方案中,禁止较高权限存储器段的电路内仿真和数据转储(datadump)。在追踪操作期间,允许进行从较低权限段至较高权限段的子程序调用,但是将不显示中间寄存器数据并且可以不读取追踪的代码或存储器数据。在某些实施方案中,调试器执行单个步骤。然而,当使较高权限级别的段单独执行指令时,不返回中间数据。
在本发明的各种实施方案中,当已对信息块中的锁定模式编程时,禁用调试器。
L.常规起始代码序列
在微控制器100的初始化过程中,装置将保证可靠操作的多个步骤按顺序排列,同时将权限级别的分层按顺序排列。在图9的流程图900上示出了初始化过程。对于本发明的各种实施方案,起始序列如下:
首先,微控制器100将具有上电复位(“POR”)901并且将进行检查,看是否需要特定编程902、903,也就是说,SPE位是否是肯定的(asserted)。如果SPE位是肯定的,则将使用引导加载程序(参见“J.引导加载程序函数”部分,和图9,步骤921至932)。
如果SPE位不是肯定的,则默认地,系统复位904在特定页地址(例如,8000h)并且开始运行ROM代码906。ULDR和UAPP寄存器总是被设置为闪存存储器106的最后一页。例如,对于页大小为512字节的64KB闪存,ULDR和UAPP处于其0080h的复位值。对于页大小为512字节的128KB闪存,ULDR和UAPP处于其0100h的复位值。PRIV寄存器处于其高复位值。使能存储器保护(MPE=1)904。
接着,ROM初始化代码检查系统密码907并且如果密码为空908,则使能用MPE910。在完成ROM初始化之后,ROM将执行传递到特定地址(例如,0000h)处的系统代码存储器911。
接着,系统代码开始执行并且使用特定数据指针(例如,000Fh)以读取用户加载器起始页地址913并且将其写入ULDR寄存器915。在完成系统初始化之后,系统代码跳到地址ULDR*闪存页大小+特定页地址,例如,0000h。这种跳动自动地将PRIV降至中916。
用户加载器代码开始执行并且使用ULDR*闪存页大小+特定页地址(例如,0Fh)的数据指针来读取用户应用程序起始页地址并且将其写入UAPP寄存器918。在完成用户加载器初始化之后,用户加载器代码跳到地址UAPP*闪存页大小+特定页地址,例如,0000h。这种跳动自动将PRIV降低至低919。随后,将进行常规代码执行920。本领域的技术人员将观察到上述步骤可以适用于具有不同数量的权限级别的应用。
M.硬件加密器
图7根据本发明的各种实施方案示出硬件加密器104的主功能块和微控制器100内的其接口。在某些实施方案中,双向硬件加密器104针对用于确定数字内容的尝试为用户程序存储器提供额外的保护。加密器104只应用于这种特定设计中的闪存存储器106,但是根据需要将可以应用到其他存储器技术。
加密器104与MMU103耦合,截取系统地址和连接闪存存储器106的数据总线。加密器104受MMU103控制,MMU103包括特定闪存控制逻辑单元和自动将选择的数据从闪存传输到本地寄存器的状态机。在各种实施方案中,加密器包括五个主功能块:
1.散列函数单元701基于加密密钥提供长伪随机序列并且创建散列摘要。
2.SCRAM寄存器702提供进一步操纵散列摘要产生的中间密钥流。
3.加密块703提供位流生成器,用于对纯文本数据进行加密并且对加密文本数据进行解密。
4.地址位搅乱器705将闪存物理存储器位置打乱。
5.检查器704“检查”特定数据模式。如果检测到这些模式,则采取特定动作。
在本发明的各种实施方案中,功能操作对于用户来说是明显的。除了在上电复位期间被激活的自动加载功能之外,在运行时发生其他操作作为CPU的获取周期中的路径延时的一部分,包括存储器访问。对于微控制器100,在某些实例中,这是在一个时钟周期内完成的。
1.散列(Hash)函数单元和秘密SCRAM寄存器
在某些实施方案中,通过上电复位触发复位期间,激活散列函数单元701。MMU103包括保持系统处于复位状态时,自动从位于闪存存储器106中的散列信息块读取加密密钥的状态机。散列块701处理长二进制序列并且产生摘要。该摘要储存在SCRAM寄存器702中,该SCRAM寄存器702向加密块703提供中间密钥序列。
根据各种实施方案,散列函数单元701实现支持加密密钥的512位块大小的一种安全散列算法(SHA)。为了限制SCRAM寄存器702的大小,在当前实现方式中,散列摘要在被保存到SCRAM寄存器702之前被截断。只有当有限的秘密储存可用时,散列函数单元701可以是恒等函数单元,这是由于SCRAM寄存器701的大小和所储存的秘密的大小可以相同。SHA算法的强度取决于多轮复杂操作。由于SCRAM寄存器702仅需要针对上电复位进行更新,因此冗长延时并不严重。
由于信息块中储存的数据没有被加密,因此可以用随机数据对任何未使用的存储器位置进行编程。另外,可以打乱信息块的地址,从而努力使泄露用户秘密和加密密钥更困难。
2.加密块
在本发明的某些实施方案中,加密块703与MMU103和闪存存储器106之间的系统数据总线同轴并入。系统地址总线还被耦合到加密块703,给物理地址提供用于密码流生成的密码序列。物理地址来自不同的源,这取决于操作模式,加载器模式或常规操作模式。
在加载器模式期间,物理地址源自FDATA,以对闪存存储器106进行存储器初始化以及系统内编程。在这种操作模式下,存在于效用ROM105中的存储器程序被引导加载程序或主程序调用。这些存储器程序处理用户身份、闪存擦除和编程协议、操作次序和时序。访问控制由硬件和存储器段权限执行。加密块703是将被储存到闪存存储器106的加密纯文本代码。
在常规操作模式期间,物理地址可以源自指令指针(IP)或数据指针(CP、FP、DP0或DP1)。在常规操作中,指令代码在被IP寻址时被预获取。加密块将加密文本代码解密至解码器以供CPU执行。当读操作被解码时,从激活数据指针取回物理地址,以读取闪存数据。加密块还经由传输网络将加密文本数据解码至目的寄存器。由硬件和存储器段权限执行访问控制。如同加载器模式下一样,通过对效用ROM105进行子程序调用完成写操作。
图8根据本发明的各种实施方案示出框图800,框图800示出基础函数单元和加密块的数据路径。SCRAM寄存器702与CONST寄存器801一起向加密块703提供伪随机序列,用于子密钥生成。SCRAM寄存器702包括散列函数单元701产生的散列摘要,例如,64位散列。CONST寄存器801是硬连接到芯片的预定随机选择的数。这些常数与来自SCRAM寄存器702的伪随机序列一起有效形成长伪随机序列并且在没有任何硬件添加器的情况下给密码流添加熵(entropy)。这意味着,伪随机序列的一半存在于芯片逻辑单元中,而另一半存在于非易失性存储器中。
在本发明的某些实施方案中,加密块703采取目标指令字的物理地址并且使用由子密钥生成块803生成的两位流开始进程。这些位流是在二进制求和运算之后由地址位控制的两个64位运算的结果。
密钥和数据排列的基本二进制运算被如下定义:
XOR-按位异或
ADD-加法模216
ROL-字的循环左移
MOD-8位模
MUX-多路复用器
地址排列块804接纳子密钥和物理地址。首先,通过8位模(“MOD”)处理地址的低字节以生成加法模216(“ADD”)和循环左移(“ROL”)运算的输出。MOD基本上是用于最终的输出选择的利用多路复用器的加法运算序列。所得的位流用于地址和数据转换。物理地址转换是位流的简单二进制求和。
数据排列是基本运算的序列。在图8中示出数据排列块805。多路复用器(“MUX”)的块将子密钥发生器提供的子密钥和来自地址排列块的位流压缩成单个位流。输入到MUX的位序被重新设置并且选择是取决于SCRAM寄存器702提供的选择器位的二进制值。该位流通过加法模216运算被进一步扩散,使地址位流发生转换。在ROL位循环之后,将所得的位流与根据所需运算进行加密或解密的数据进行二进制求和。
3.地址位搅乱
根据本发明的各种实施方案,地址位搅乱器705与物理地址总线同轴设置,以通过改变储存位置向存储器内容添加混乱(confusion)。
当访问闪存存储器106时,简单地址位搅乱器705对地址位进行重新排序并有可能对其进行转化。地址位搅乱器705可以是静态的。在没有搅乱的情况下,已知的起始代码将处于已知位置0000h并且中断矢量代码将处于已知表地址位置。地址位搅乱可以仅在闪存页中进行,以支持应用程序内的编程。地址位搅乱只应用于闪存程序存储器106。如果在没有代码打乱并且已知效用ROM内容的情况下将地址位搅乱应用于效用ROM105,当使用相同的方案时可以确定闪存的搅乱方案。
4.检查器
检查器块704主要包括比较器,用于根据闪存存储器106的特性来处理特定数据模式。对于某些实施方案,存在如下所述的两种特定情况。
在第一种情况中,微控制器100尝试用模式FFFFh对闪存字地址进行编程(或保持未编程)。通过使能加密,可以将目标字处的闪存存储器单元(cells)编程为0,从而需要在可以对字执行额外编程之前进行擦除。当用户将期望能够对有意保持未编程的字进行编程时,这对于用户来说不是明显的。FFFFh数据模式不应该被加密块703加密或解密。
在用密码流进行加密时尝试用某一模式对闪存字进行编程将会导致FFFFh模式。由于将不对FFFFh模式进行解密,因此应该在闪存中呈现FFFFh模式的无加密形式,这是因为在确定闪存存储器106中的所需模式的过程中这样将会处于两难境地。这些模式应该不被加密块703加密或解密。
在第二种情况中,检查器704电路针对FFFh位模式比较加密块703的输入和输出数据:
对于写操作,如果纯文本输入是FFFFh,则FFFFh旁路加密块并且被编程至闪存存储器106。可供选择地,如果加密块输出是FFFFh,则丢弃(discard)经加密的数据。纯文本数据旁路加密块703并且被编程至闪存存储器106。
对于指令获取和读取操作,如果闪存输出数据是FFFFh,FFFFh旁路加密块703并且被分派到解码器或目的寄存器。可供选择地,如果加密块703输出是FFFFh,则丢弃加密数据。闪存存储器106输出数据旁路加密块703并且被分派到解码器或目的寄存器。
5.加密操作
图10是流程图1000,其示出了本发明的各种实施方案的加密操作。在POR1001之后,从非易失性存储器106获取加密密钥1002。然后,通过散列操作处理加密密钥1003,其中所得的摘要被储存在密钥寄存器1005中。然后,将这个摘要连同来自硬件加密密钥1005的输入、来自MMU103的程序地址1006和输入数据1007一起进行数据加密1008。然后,检查输入数据1007和数据加密1008的输出的特定模式1009、1010、1101、1012。如果检测到任何特定模式,则使用输入数据,从而绕过加密操作。否则,经加密的数据耦合到非易失性存储器106或MMU103。参见步骤向NVM输出数据1013以进行储存操作1016,向MMU输出数据1013以进行加载操作1017。同时,地址搅乱器1014打乱程序地址。
为了清晰和理解的目的,已经描述了本发明的以上说明。其不旨在将本发明限于所公开的精确形式。各种修改形式可以在所附权利要求书的范围和等同形式内。

Claims (21)

1.一种安全微控制器,包括:
存储器,所述存储器储存数据;
处理单元,所述处理单元生成多个命令;
访问控制单元,所述访问控制单元被耦合来接收所述多个命令,所述访问控制单元具有多个权限寄存器,所述多个权限寄存器限定对储存在所述存储器内的数据的访问权利;
所述多个权限寄存器中的第一权限寄存器,所述第一权限寄存器限定对所述存储器内的第一部分数据的第一组访问权利;
所述多个权限寄存器中的第二权限寄存器,所述第二权限寄存器限定对所述存储器内的第二部分数据的第二组访问权利,所述第二部分不同于所述第一部分;以及
异常处理器,所述异常处理器耦合到所述访问控制单元,响应于未满足与所述第一部分数据相关联的所述第一组访问权利的访问命令而中断对所述第一部分数据的所述访问命令;
其中,所述访问权利与所述安全微控制器的多个用户权限级别相关。
2.如权利要求1所述的安全微控制器,其中所述访问控制单元还包括:
地址监控器,所述地址监控器使所述多个命令中的第一命令的存储器地址与所述第一权限寄存器相关联;以及
地址比较器,所述地址比较器基于所述第一权限寄存器内定义的访问权利准许对所述第一部分数据进行访问。
3.如权利要求2所述的安全微控制器,还包括存储器管理单元,所述存储器管理单元耦合到所述存储器、所述处理单元和所述访问控制单元,并且向所述存储器和所述访问控制单元提供多个输出,所述存储器管理单元在所述存储器、所述处理器单元和所述访问控制单元之间提供数据传输的管理。
4.如权利要求3所述的安全微控制器,其中所述存储器包括只读存储器、非易失性存储器和数据存储器。
5.如权利要求4所述的安全微控制器,其中所述数据存储器是随机存取存储器,并且其中所述非易失性存储器是闪存存储器。
6.如权利要求4所述的安全微控制器,还包括存在于所述只读存储器和所述非易失性存储器中的程序存储器。
7.如权利要求6所述的安全微控制器,其中所述非易失性存储器还包括:
多个存储器段;
所述多个存储器段中的各存储器段对应于所述多个权限级别中的特定权限级别,从而第一级用户将第一指令代码加载到对应于所述多个权限级别中的第一权限级别的第一存储器段,并且从而第二级用户将第二指令代码加载到对应于所述多个权限级别中的第二权限级别的第二存储器段;以及
其中,由所述第一权限级别和所述第二权限级别定义对所述第一存储器段和所述第二存储器段的访问权利。
8.如权利要求7所述的安全微控制器,其中与低权限级别相关联的所述第二级用户被阻止访问与所述第一权限级别对应的所述第一存储器段。
9.如权利要求7所述的安全微控制器,其中基于所述访问控制单元的操作状态确定所述多个权限级别中的所述第一权限级别,所述操作状态的特征在于,第一级用户加载的第一指令代码的所述第一权限级别被定义为低于正执行所述指令代码的所述存储器段的最大权限级别或者所述第一权限寄存器中定义的值。
10.如权利要求7所述的安全微控制器,其中所述只读存储器具有所述第一权限级别,并且所述数据存储器具有所述第二权限级别,其中所述第一权限级别高于所述第二权限级别。
11.如权利要求7所述的安全微控制器,其中通过安全程序保护系统代码,使其不受安全攻击的影响。
12.如权利要求7所述的安全微控制器,其中所述非易失性存储器还包括储存用户秘密数据和加密密钥数据的信息块;并且其中利用随机数据对所述信息块的多个未使用的存储器位置进行编程,并且打乱所述信息块的多个地址。
13.如权利要求12所述的安全微控制器,其中所述只读存储器包括具有最高权限级别的引导加载程序,并且可以访问所述存储器段中的任一个;并且其中所述用户秘密数据用于建立与远程安全加载器的已验证连接。
14.如权利要求12所述的安全微控制器,还包括硬件加密器,所述硬件加密器包括:
散列块,所述散列块提供用于密钥生成的加密密钥的长伪随机序列的快速压缩;
SCRAM寄存器,所述寄存器用于储存秘密密钥;
地址位搅乱器,所述地址位搅乱器提供打乱的存储器地址位置;
加密块,所述加密块提供加密和解密;以及
其中,与处理单元运行时间并行地执行加密操作。
15.如权利要求14所述的安全微控制器,其中所述硬件加密器还包括检查器,所述检查器经由双向数据总线耦合到所述加密块和所述存储器管理单元,所述检查器提供特定的数据模式管理,
所述散列块被耦合来从所述非易失性存储器接收数据,所述散列块基于所述加密密钥的所述伪随机序列创建数据摘要;
所述SCRAM寄存器被耦合来从所述散列块接收数据,进一步操纵所述数据摘要导致所述SCRAM寄存器生成密钥流;
所述地址位搅乱器被耦合来接收存储器地址和控制信号,所述地址位搅乱器打乱所述存储器地址位置;以及
所述加密块被耦合来接收与所述SCRAM寄存器耦合的数据并且经由所述双向数据总线被耦合到所述存储器管理单元、所述非易失性存储器和所述检查器,所述加密块生成加密的纯文本数据和解密的加密文本数据的位流。
16.如权利要求15所述的安全微控制器,其中所述加密块还包括:
多个接口,所述多个接口从所述SCRAM寄存器和CONST寄存器接收伪随机序列;
子密钥生成块,所述子密钥生成块被耦合来从所述存储器管理单元的至少一个物理地址接收数据,所述子密钥生成块产生子密钥;
地址排列块,所述地址排列块耦合到所述子密钥生成块和所述存储器管理单元,所述地址排列块向数据排列块提供位流;
数据排列块,所述数据排列块耦合到所述SCRAM寄存器、所述子密钥生成块、所述地址排列块和来自所述存储器管理单元的数据输入,所述数据排列块生成耦合到所述检查器和所述存储器管理单元的加密/解密位流;以及
其中,所述CONST寄存器是所述安全微控制器中硬连接的预定随机选择的数。
17.如权利要求16所述的安全微控制器,其中所述物理地址源自用于所述非易失性存储器的存储器初始化和系统内编程的外部数据端口或指令指针或数据指针。
18.如权利要求16所述的安全微控制器,其中所述地址排列块通过执行如下步骤生成位流:
接收所述子密钥和所述物理地址;
通过8位模运算处理所述物理地址的低字节,以生成第一位流;
通过加法模216运算处理所述第一位流,以生成第二位流;
对所述第二位流执行循环左移运算,以生成地址排列位流;以及
其中,所述8位模是采用多路复用器的加法运算的序列。
19.如权利要求16所述的安全微控制器,其中所述数据排列块通过执行如下步骤生成输出:
使用多个多路复用器,将来自所述子密钥生成器的所述子密钥和来自所述地址排列块的所述位流压缩成第一位流;
通过加法模216运算处理所述第一位流,其中经转换的地址位流产生第二位流;
对所述第二位流执行循环左移运算,以生成最终位流;
使用所述最终位流对所述输入数据进行加密或解密;以及
将所述加密/解密位流耦合到所述加密块和所述检查器。
20.如权利要求16所述的安全微控制器,其中所述检查器包括比较器,所述比较器用于处理与所述非易失性存储器的特征相关的特定数据模式,并且其中阻止所述特定数据模式被所述加密块加密或解密。
21.一种安全控制器,包括:
存储器,所述存储器储存数据;
处理单元,所述处理单元生成多个命令;
访问控制单元,所述访问控制单元被耦合来接收所述多个命令,所述访问控制单元具有多个权限寄存器,所述多个权限寄存器定义对所述存储器内储存的数据的访问权利;
所述多个权限寄存器中的第一权限寄存器,所述第一权限寄存器定义对所述存储器内的第一部分数据的第一组访问权利;
所述多个权限寄存器中的第二权限寄存器,所述第二权限寄存器定义对所述存储器内的第二部分数据的第二组访问权利,所述第二部分不同于所述第一部分;以及
异常处理器,所述异常处理器耦合到所述访问控制单元,响应于未满足与所述第一部分数据相关联的所述第一组访问权利的访问命令而中断对所述第一部分数据的所述访问命令;以及
硬件加密器,所述硬件加密器包括:
散列块,所述散列块被耦合来从所述存储器和所述处理器单元接收双向数据,所述散列块提供用于密钥生成的加密密钥的长伪随机序列的快速压缩,
地址位搅乱器,所述地址位搅乱器耦合到存储器管理单元和所述存储器,所述地址位搅乱器提供打乱的存储器位置,
加密块,所述加密块提供加密和解密,并且耦合到所述存储器管理单元和所述存储器,
其中,所述硬件加密器从所述存储器接收加密密钥。
CN200980142513.3A 2008-10-23 2009-09-30 多层内容保护微控制器 Active CN102197382B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/257,339 2008-10-23
US12/257,339 US8555015B2 (en) 2008-10-23 2008-10-23 Multi-layer content protecting microcontroller
PCT/US2009/059130 WO2010047930A1 (en) 2008-10-23 2009-09-30 Multi-layer content protecting microcontroller

Publications (2)

Publication Number Publication Date
CN102197382A CN102197382A (zh) 2011-09-21
CN102197382B true CN102197382B (zh) 2016-01-13

Family

ID=41469877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980142513.3A Active CN102197382B (zh) 2008-10-23 2009-09-30 多层内容保护微控制器

Country Status (5)

Country Link
US (2) US8555015B2 (zh)
CN (1) CN102197382B (zh)
DE (1) DE112009002502T5 (zh)
TW (1) TWI460604B (zh)
WO (1) WO2010047930A1 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700919B2 (en) * 2010-05-25 2014-04-15 Via Technologies, Inc. Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
FR2976147B1 (fr) * 2011-05-30 2013-11-22 Maxim Integrated Products Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise
US9262340B1 (en) * 2011-12-29 2016-02-16 Cypress Semiconductor Corporation Privileged mode methods and circuits for processor systems
KR101975027B1 (ko) 2012-05-04 2019-05-03 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
US9754133B2 (en) * 2013-03-14 2017-09-05 Microchip Technology Incorporated Programmable device personalization
US9208105B2 (en) 2013-05-30 2015-12-08 Dell Products, Lp System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
US9530000B2 (en) 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
CN103413098B (zh) * 2013-08-01 2016-05-18 广州杰赛科技股份有限公司 硬件加密方法与系统及其装置
FR3043229B1 (fr) * 2015-11-03 2018-03-30 Proton World International N.V. Demarrage securise d'un circuit electronique
US10146681B2 (en) * 2015-12-24 2018-12-04 Intel Corporation Non-uniform memory access latency adaptations to achieve bandwidth quality of service
US9990474B2 (en) * 2016-03-16 2018-06-05 Konica Minolta Laboratory U.S.A., Inc. Access control for selected document contents using document layers and access key sequence
US10389693B2 (en) * 2016-08-23 2019-08-20 Hewlett Packard Enterprise Development Lp Keys for encrypted disk partitions
US10379768B2 (en) * 2016-09-30 2019-08-13 Intel Corporation Selective memory mode authorization enforcement
CN106919865B (zh) * 2017-03-02 2020-06-05 上海东软载波微电子有限公司 非易失性存储器数据加密系统
FR3069935A1 (fr) * 2017-08-01 2019-02-08 Maxim Integrated Products, Inc. Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
US10872043B2 (en) * 2017-08-17 2020-12-22 Microchip Technology Incorporated Systems and methods for integrity checking of code or data in a mixed security system while preserving confidentiality
GB201721608D0 (en) 2017-12-21 2018-02-07 Nordic Semiconductor Asa A hardware cipher engine
JP2019133345A (ja) * 2018-01-30 2019-08-08 東芝メモリ株式会社 データ蓄積装置、データ処理システムおよびデータ処理方法
JP7109992B2 (ja) * 2018-05-22 2022-08-01 キオクシア株式会社 メモリシステムおよび制御方法
US11113422B2 (en) 2018-08-03 2021-09-07 Micron Technology, Inc. Data protection in computer processors
US11074198B2 (en) * 2018-09-18 2021-07-27 Micron Technology, Inc. Key management in computer processors
CN111240581B (zh) * 2018-11-29 2023-08-08 北京地平线机器人技术研发有限公司 存储器访问控制方法、装置和电子设备
TWI756156B (zh) * 2019-04-07 2022-02-21 新唐科技股份有限公司 監控系統開機之安全裝置及其方法
TWI813815B (zh) * 2019-05-09 2023-09-01 韓商愛思開海力士有限公司 記憶體模組、其操作方法、記憶體系統以及其操作方法
EP3736716B1 (en) * 2019-05-10 2021-12-22 Aptiv Technologies Limited Method for protecting an electronic control unit
CN110554298B (zh) * 2019-08-27 2022-03-22 江苏芯盛智能科技有限公司 芯片和芯片测试方法
CN110990331B (zh) * 2019-12-03 2023-09-05 飞腾信息技术有限公司 片上系统密钥管理方法、装置、设备及可读存储介质
US11227046B2 (en) 2019-12-24 2022-01-18 Stmicroelectronics International N.V. Dynamic randomization of password challenge
US11281795B2 (en) * 2019-12-24 2022-03-22 Stmicroelectronics International N.V. Hierarchical random scrambling of secure data storage resulting in randomness across chips and on power on resets of individual chips
US20220166762A1 (en) * 2020-11-25 2022-05-26 Microsoft Technology Licensing, Llc Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith
CN112885403B (zh) * 2021-02-08 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种Flash控制器的功能测试方法、装置及设备
CN113420308A (zh) * 2021-07-01 2021-09-21 联芸科技(杭州)有限公司 用于加密存储器的数据访问控制方法及控制系统
TWI805341B (zh) * 2022-04-27 2023-06-11 智原科技股份有限公司 系統單晶片架構及其資料保護方法
WO2023238555A1 (ja) * 2022-06-10 2023-12-14 株式会社オートネットワーク技術研究所 車載装置、情報処理方法および情報処理プログラム
CN116595594A (zh) * 2023-05-19 2023-08-15 无锡摩芯半导体有限公司 一种基于ucb的flash的安全控制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6952778B1 (en) * 2000-10-26 2005-10-04 Cypress Semiconductor Corporation Protecting access to microcontroller memory blocks
US7124170B1 (en) * 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
CN101114257A (zh) * 2006-07-25 2008-01-30 索尼株式会社 存储器存取控制装置和方法、以及通信装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504814A (en) * 1991-07-10 1996-04-02 Hughes Aircraft Company Efficient security kernel for the 80960 extended architecture
US6003133A (en) * 1997-11-17 1999-12-14 Motorola, Inc. Data processor with a privileged state firewall and method therefore
US6845159B1 (en) * 1998-10-07 2005-01-18 Protego Information Ab Processing method and apparatus for converting information from a first format into a second format
US20010037450A1 (en) * 2000-03-02 2001-11-01 Metlitski Evgueny A. System and method for process protection
US6792528B1 (en) * 2000-05-17 2004-09-14 Chien-Tzu Hou Method and apparatus for securing data contents of a non-volatile memory device
US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
DE10115118A1 (de) 2001-03-27 2002-10-10 Philips Corp Intellectual Pty Verfahren zur Übertragung von Daten über einen Datenbus
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
JP2005505069A (ja) * 2001-10-03 2005-02-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メモリ暗号化
US7231476B2 (en) * 2002-11-18 2007-06-12 Arm Limited Function control for a processor
GB2410348B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Exception types within a secure processing system
FR2849233B1 (fr) 2002-12-24 2005-05-20 Trusted Logic Procede de securisation des systemes informatiques par confinement logiciel
US7774619B2 (en) * 2004-11-17 2010-08-10 Broadcom Corporation Secure code execution using external memory
US20060265544A1 (en) * 2005-05-17 2006-11-23 John Rudelic Internally authenticated flash remediation
FR2888433A1 (fr) * 2005-07-05 2007-01-12 St Microelectronics Sa Protection d'une quantite numerique contenue dans un circuit integre comportant une interface jtag
EP1742152B1 (en) 2005-07-07 2012-09-12 Texas Instruments Inc. Method and system for a multi-sharing memory access control
US7543126B2 (en) 2005-08-31 2009-06-02 International Business Machines Corporation Apparatus, system, and method for implementing protected virtual memory subcontexts
US20070162964A1 (en) * 2006-01-12 2007-07-12 Wang Liang-Yun Embedded system insuring security and integrity, and method of increasing security thereof
JP4795812B2 (ja) * 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
US8090098B2 (en) * 2006-11-13 2012-01-03 Electronics And Telecommunications Research Institute Method of generating message authentication code using stream cipher and authentication/encryption and authentication/decryption methods using stream cipher
US8190885B2 (en) * 2006-12-21 2012-05-29 Spansion Llc Non-volatile memory sub-system integrated with security for storing near field transactions
US8307416B2 (en) 2007-01-03 2012-11-06 Texas Instruments Incorporated Data structures for use in firewalls
EP2122531B1 (en) 2007-01-19 2014-10-01 BlackBerry Limited Selectively wiping a remote device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7124170B1 (en) * 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
US6952778B1 (en) * 2000-10-26 2005-10-04 Cypress Semiconductor Corporation Protecting access to microcontroller memory blocks
CN101114257A (zh) * 2006-07-25 2008-01-30 索尼株式会社 存储器存取控制装置和方法、以及通信装置

Also Published As

Publication number Publication date
US20140040584A1 (en) 2014-02-06
US8555015B2 (en) 2013-10-08
US9311255B2 (en) 2016-04-12
CN102197382A (zh) 2011-09-21
US20100106954A1 (en) 2010-04-29
TWI460604B (zh) 2014-11-11
TW201030550A (en) 2010-08-16
WO2010047930A1 (en) 2010-04-29
DE112009002502T5 (de) 2012-10-04

Similar Documents

Publication Publication Date Title
CN102197382B (zh) 多层内容保护微控制器
CN103210396B (zh) 包括用于保护敏感代码和数据的架构的方法和装置
US9094190B2 (en) Method of managing key for secure storage of data and apparatus therefor
US9582675B2 (en) Protection of memory areas
TWI397859B (zh) 提供安全執行環境之裝置、微處理器裝置、以及在安全執行環境中執行安全編碼之方法
CN107003936B (zh) 具有非可读页的存储器保护
CN101281506A (zh) 数据处理系统内基于存储器域的安全控制
KR20180059954A (ko) 메모리 무결성
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
CN102117387A (zh) 安全密钥访问设备及方法
CN102473224A (zh) 提供安全应用执行的方法和装置
US20060294397A1 (en) System and method of using a protected non-volatile memory
US20160119137A1 (en) Diversified instruction set processing to enhance security
KR20000022308A (ko) 플래시 메모리를 보호하는 방법 및 장치
CN103154925A (zh) 多处理器系统中的通信禁用
US20180089108A1 (en) Secure computing
US20080172749A1 (en) Systems and Methods for Protecting Security Domains From Unauthorized memory Accesses
CN110659458A (zh) 支持软件代码数据保密可信执行的中央处理器设计方法
TW201918923A (zh) 安全邏輯系統及操作安全邏輯系統的方法
KR100972540B1 (ko) 라이프 사이클 단계들을 가진 보안 메모리 카드
US10037287B2 (en) Method for protecting memory against unauthorized access
US20080155188A1 (en) Memory area protection circuit
CN114237492A (zh) 非易失性存储器保护方法及装置
CN106709329B (zh) 由处理单元处理期间对经加密的信息的保护

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: American California

Applicant after: Maxim Integrated Products Inc.

Address before: American California

Applicant before: Maxim Integrated Products, Inc.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: MAXIM INTEGRATED PRODUCTS, INC. TO: MAXIM INTEGRATED PRODUCTS INC.

C14 Grant of patent or utility model
GR01 Patent grant