CN105279439B - 用于就地执行的存储器的加密方法 - Google Patents

用于就地执行的存储器的加密方法 Download PDF

Info

Publication number
CN105279439B
CN105279439B CN201510323222.1A CN201510323222A CN105279439B CN 105279439 B CN105279439 B CN 105279439B CN 201510323222 A CN201510323222 A CN 201510323222A CN 105279439 B CN105279439 B CN 105279439B
Authority
CN
China
Prior art keywords
address
controller
memory device
external memory
block
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
CN201510323222.1A
Other languages
English (en)
Other versions
CN105279439A (zh
Inventor
汉斯·凡·安特卫普
简-威廉·范德瓦尔德特
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.)
Cypress Semiconductor Corp
Original Assignee
Cypress Semiconductor Corp
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 Cypress Semiconductor Corp filed Critical Cypress Semiconductor Corp
Publication of CN105279439A publication Critical patent/CN105279439A/zh
Application granted granted Critical
Publication of CN105279439B publication Critical patent/CN105279439B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • 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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及用于就地执行的存储器的加密方法。本文描述用于外部存储器的加密/解密技术。在示例实施例中,装置包括内部存储器和外部存储器控制器。该内部控制器被配置为存储密钥。外部存储器控制器被配置为用密钥加密用于对外部存储器装置进行存取操作的地址以获得加密地址,并且基于该加密地址加密或解密用于存取操作的数据块。

Description

用于就地执行的存储器的加密方法
优先权
本申请要求2014年6月20日提交的美国临时专利申请第62/014,860号的优先权和权益,该专利申请的全部内容通过引用并入本文。
技术领域
本公开涉及外部存储器装置的领域。
背景
在某些系统和装置中的微控制器被配置为就地执行(XIP)来自该微控制器外部的存储器装置的代码。例如,微控制器和外部(例如,闪存)存储器装置可以被布置在印刷电路板(PCB)上或等效结构上,并通过PCB连线、径迹(trace)或等效结构彼此耦合。不过,在此类系统或装置中,使用外部存储器装置来存储微控制器的代码镜像具有其包含的代码被盗窃的固有风险。例如,恶意的一方可能物理移除外部存储装置,并随后可以下载(或以其他方式)提取存储在其中的代码镜像。
解决这种问题的一种方法可以是以加密形式将代码镜像保存在外部存储器装置上,当需要执行代码镜像时,将加密镜像复制到在该微控制器内的随机存取存储器(RAM)并在该RAM中解密。不过,这种方法的一个缺点是需要大的内部高速缓存器或RAM存储器(例如,以存放代码镜像的加密和未加密副本),而这通常是微控制器不具有的,这就是为什么起初使用外部存储器装置的原因。另一个缺点是这种方法仅仅击败XIP代码执行的目的。因此,目前大多数(假设不是全部)微控制器供应商未在外部存储器用于其微控制器装置时提供对代码盗窃的保护。
附图说明
图1示出示例实施例可以在其中实施的示例系统。
图2是根据某些示例实施例示出用于从外部存储器装置读取的示例方法的流程图。
图3是根据某些示例实施例示出用于系统初始化的示例方法的流程图。
图4是根据某些示例实施例示出用于编程外部存储器装置的示例方法的流程图。
图5是示出各种示例实施例可以在其中实施的示例装置的框图。
图6是根据示例实施例示出用于多模式控制路径存取外部存储器装置中的数据和/或代码的地址空间的框图。
图7是根据示例性实施例示出加密/解密块及其操作的框图。
图8是根据示例实施例示出从外部存储器装置进行读操作的时序图。
图9是示出根据示例实施例的系统的框图。
具体实施方式
下列描述阐述很多具体细节,诸如具体系统、组件、方法等诸如此类的示例,以便提供对本文所述的关于外部和/或串行存储器的加密/解密技术的各个实施例的良好理解。不过,至少某些实施例可以在没有这些具体细节的情况下被实践,这对于本领域的技术人员来说是明显的。在其他实例中,众所周知的组件或方法未详细描述或以简单框图形式呈现,以避免不必要模糊本文所述的技术。因此,后文阐述的具体细节仅是示例性的。具体实施方式可以不同于这些示例性细节,并且仍然被视为在本发明的实质和范围内。
在说明书中引用的“实施例”、“一个实施例”、“示例实施例”、“某些实施例”和“各个实施例”是指被引用的特定特征、结构或特性被包括在本发明的至少一个实施例中。此外,在说明书中的不同地方出现的各短语“实施例”、“一个实施例”、“示例实施例”、“某些实施例”和“各个实施例”不一定全部是指相同的实施例。
在各个实施例中,本文所述的加密/解密技术可以包括由一个或多个装置和/或其控制器执行的一种或多种方法。虽然此类方法的操作在下文中以特定次序示出和描述,但是每种方法的操作可以被改变,使得特定操作可以以不同次序执行,或使得特定操作可(至少部分)与其他操作并发执行和/或并行执行。在其他实施例中,各指令或不同操作的子操作可以以间歇和/或交替的方式执行。因此,所述技术的各个方法实施例及其操作次序被视为说明性的,而非限制性的含义。
在本文所述的加密/解密技术的示例实施例中,装置包括内部存储器和外部存储器控制器。内部(例如,易失性或非易失性)存储器被配置为存储秘密密钥。外部存储器控制器被配置为用密钥加密用于对外部存储器装置的存取操作(例如,写或读操作)的地址以获得加密地址,并基于该加密地址加密(例如,用于写操作)或解密(例如,用于读操作)用于存取操作的数据块。在这个实施例的某些方面,控制器被配置为在串行接口上与外部存储器装置通信。在某些方面,该装置可以是与内部存储器装配在相同基板上的单片集成电路(IC)装置,例如,诸如被封装在芯片载体封装件中的半导体管芯(die)。在某些替代实施例中,装置可以由在一个IC封装件(诸如,例如多芯片模块)中形成的两个或多于两个IC芯片构成。
在本文所述的加密/解密技术的示例实施例中,一种方法包括:控制器接收来自存储器装置的针对数据块的读操作;该控制器用密钥加密用于读操作的地址以获得加密地址;该控制器接收来自存储器装置的数据块的加密副本;并且该控制器基于加密地址解密该数据块的加密副本以获得数据块。在这个实施例的某些方面,加密用于读操作的地址基于第一加密算法,第一加密算法比用于解密数据块的加密副本的第二加密算法花费更多的时钟周期。在某些方面,数据块的加密副本通过使用花费不超过一个时钟周期的操作来解密。在某些方面,用于读操作的地址用具有等待时间的加密算法来加密,该等待时间小于或等于控制器从存储器装置传送数据块的传送操作的等待时间。在各个方面,存储器装置可以是与控制器布置在相同或不同封装件中的外部非易失性存储器装置或片外(off-chip)静态RAM(SRAM)存储器。
在本文所述的加密/解密技术的示例实施例中,一种系统包括一个或多个外部存储器装置和控制器,该控制器通过印刷电路板(PCB)连线、径迹、导线或等效结构耦合到外部存储器装置。外部存储器装置存储用秘密密钥加密的镜像。控制器被配置为用密钥加密用于读操作的地址以获得加密地址,其中该地址指定在镜像中的数据块。控制器还被配置为接收来自外部存储器装置的数据块的加密副本,并基于该加密地址解密数据块的加密副本。在这个实施例的某些方面,控制器被配置为在串行接口上与外部存储器装置通信。在某些方面,当外部存储器装置中的镜像被新镜像替换时,控制器被配置为用新密钥改变该密钥。在某些方面,外部存储器装置存储多个镜像,多个镜像中的每个镜像与多个密钥中的一个密钥相关联。
在某些实施例中,所描述的加密/解密技术(和/或其特定操作)可以被实施为存储在非临时性计算机可读存储介质上的一组指令。当由装置的一个或多个中央处理单元(CPU)和/或控制器执行时,此类指令促使一个或多个CPU和/或控制器执行本文所述的加密/解密技术(和/或其中的特定操作)。非临时性计算机可读存储介质可以包括用于以机器(例如,诸如装置或系统)可读的形式存储信息的一种或多种机制。此类非临时性计算机可读存储介质的示例可以包括但不限于:电磁存储介质(例如,硬盘等)、光学存储介质(例如,CD-ROM等)、磁光存储介质、只读存储器(例如,ROM等)、随机存取存储器(例如,RAM等)、可擦除可编程存储器(例如,EPROM、EEPROM等)、易失性和非易失性闪存、各种类型的固件(例如,诸如在硬件块中实施的固件)或适合存储信息和/或可执行指令的任何其他现在已知或以后开发的类型的介质。
“就地”执行来自外部闪存的代码的微控制器连续找取来自外部存储器装置的指令或数据。在本上下文中,“就地”执行(XIP)意指微控制器中的CPU在执行程序指令时从外部存储器装置找取其程序指令,例如不是首先将该程序指令复制到在该微控制器内部的RAM。当代码镜像以加密形式存储在外部存储器装置上时,微控制器性能由其从外部存储器找取数据并对其加以解密所花费的时间来确定。不过,与从外部闪存装置找取数据所花费的时间相比,对数据运行标准(例如,强)解密算法,例如高级加密标准(AES)或其他FIPS认可的密码算法等所花费的时间是相当长的。
为解决这些和其他问题,本文提供的加密/解密技术允许以加密形式将代码镜像存储在外部或串行存储器装置上并允许在传输过程中执行来自代码镜像的可寻址数据块的加密/解密而没有妨碍微控制器的性能。
如本文所使用的,“数据块”(“数据块(data block)”)是指可通过地址明确识别的数据单元。32比特(4字节)字只是此类单独可寻址数据块的一个示例。不过,需要指出,在各个实施例中,数据块的大小可能取决于各种参数,例如,用在特定系统中的CPU指令的大小,指令集的类型,用于外部存储器的地址空间的大小,地址自身的大小等。因此,在各个实施例中,本文所述的技术可以用于对其大小可以从1字节到32字节(如果更大的数据块大小为某些特定实施例提供性能和/或安全优势,则或者甚至可以大于32字节)改变的数据块执行加密/解密。还需要指出,根据外部存储器装置的类型,写操作可以对多数据块组执行。例如,某些NOR闪存装置在比执行相关联的读操作的数据大块(例如,1字节)更大的数据大块(例如,512字节)中执行写操作。因此,对于此类NOR闪存装置,根据本文所述技术的写操作对通过多个地址分别识别的多数据块组执行,而读操作对每个单独数据块及其识别地址执行。
图1示出示例实施例可以在其中实施的系统10。此类系统的示例包括但不限于:具有内部RAM存储器的微控制器,该内部RAM存储器不足以(或未被配置为)存放需要被执行的所有代码,执行来自外部XIP存储器的代码的系统;使用存储器映射输入/输出(MMIO)模式访问外部存储器装置的系统;专用集成电路(ASIC);现场可编程门阵列(FPGA);应用处理器;数字信号处理器(DSP);联网控制器;视频和音频控制器等。
除了其他组件(未在图1中示出)以外,系统10还包括微控制器100,该微控制器耦合到在容纳该微控制器的芯片或芯片模块的外部(例如片外的)的一个或多个外部(例如,闪存)存储器装置160。例如,微控制器100和外部存储器装置160可以被布置在相同PCB板上或等效结构上,并且可以通过PCB连线/焊垫、开关、总线、插孔、径迹线、互连件、导线和/或任何其他类型的等效信号导通装置彼此耦合。在各个实施例中,微控制器100和外部存储器装置160通过串行接口152进行耦合。此类串行接口的示例包括但不限于I2C、串行外设接口(SPI)、双路SPI(DSPI)、四路SPI(QSPI)、SD-SPI等。
微控制器100通常在单芯片或芯片模块上装配。除了其他组件(未在图1中示出)以外,微控制器100包括CPU 102、内部(例如,闪存)存储器126和外部存储器控制器130。CPU102通过内部总线122耦合到内部存储器126并耦合到外部存储器控制器130。例如,CPU 102可以被配置为通过内部总线122读(写)内部存储器126,以及向外部存储器控制器130发送指令,以作为被存储在外部存储器装置160中的代码的XIP或MMIO执行的一部分。内部存储器126可以是与CPU 102被嵌入在相同管芯上的任何类型的非易失性存储器(例如,内部存储器可以与CPU在相同的微控制器芯片内)。因此,内部存储器126通常受限于大小,并不能或未被配置为存储供CPU 102执行的大代码镜像。外部存储器控制器130通过串行接口152被耦合到外部存储器装置160。外部存储器控制器130可以被实施为耦合到内部总线122的微控制器100内一个或多个硬件块。例如,外部存储器控制器130可以被实施为微控制器102内的固定功能块或可编程块,但需要指出,各种类型的IC元件可以用于实施微控制器芯片内的外部存储器控制器。
外部存储器装置160包括串行闪存(例如,诸如NOR闪存),该串行闪存大到足以存储一个或多个代码镜像并可以被配置用于XIP执行和/或MMIO存取。如本文所使用的,“代码镜像”(或仅仅是“镜像”)是指可操作以执行或用于执行一个或多个功能的一组指令或数据。在各个实施例和实施方式中,任何此类镜像可以被实施为但不限于文件、程序、软件应用、模块或可以由CPU执行(或在执行期间存取)的任何其他类型的代码(或数据)。当被CPU执行时,特定镜像可以被实施为一个或多个计算机进程、线程或被分配计算资源(例如,诸如RAM、CPU时间、存储空间和网络带宽)以执行镜像功能的任何其他运行实体。在各个实施例中,外部存储器装置160可以具有不同形式的要素。例如,外部存储器装置160可以是可被配置为配合到预定义(例如,卡)槽口或可以被固定到下面的PCB板(或等效结构)的3到9个管脚的器件。
根据本文所述的加密/解密技术,CPU 102生成永久存储在内部存储器126中的秘密密钥171或从系统10的另一组件接收秘密密钥171。秘密密钥171用于加密被存储在一个或多个外部存储器装置(例如,外部存储器装置160)上的一个或多个代码镜像(例如,加密镜像175)。例如,在某些实施例中,加密镜像175可以在系统10的外部生成,并且可以在外部存储器装置被布置在系统10中之前(例如,在制造和/或组装系统之前)被编程到外部存储器装置160中。在这些实施例中,当系统10被初始化和/或激活时(例如,诸如激活移动装置),CPU 102可以被配置为接收秘密密钥171。在另一示例中,在某些实施例中,CPU 102可操作以生成秘密密钥171并将其永久存储在内部存储器126中。在这些实施例中,外部存储器控制器130可以被配置为接收或检索来自内部存储器126的秘密密钥171,以利用密钥171使用根据本文所述技术的加密/解密块173来加密镜像175,并在外部存储器装置160中存储加密的镜像175。
在根据本文所述技术的操作中,外部存储器控制器130被配置为基于秘密密钥171使用加密/解密块173来执行在传输过程中的加密和解密,用于存取外部存储器装置160中的加密镜像175的CPU初始化的读和写操作。
对于加密镜像175的读访问,外部存储器控制器130接收被CPU 102放置在内部总线122上的读操作的指令代码和地址。与通过串行接口152将指令代码和/或地址传送到外部存储器装置160并发的是,外部存储器控制器130使用秘密密钥171来加密读操作的地址以便例如通过使用强(但相对慢)的加密算法诸如AES-128生成加密地址。当外部存储器装置160响应以所请求的存储在加密镜像175的地址的数据块的加密副本时,外部存储器控制器130基于加密地址,例如通过对加密地址和数据块的加密副本使用弱(但是快速)的加密运算(诸如XOR(异或))来解密数据块的加密副本。外部存储器控制器130随后响应于读操作,例如通过将数据块置于内部总线122上来返回(未加密)数据块。
对于加密镜像175的写访问,外部存储器控制器130接收被CPU 102放置在内部总线122上的写操作的指令代码、地址和(未加密)数据块。与通过串行接口152将指令代码和/或地址传送到外部存储器装置160并发的是,外部存储器控制器130使用秘密密钥171来加密写操作的地址以便例如通过使用强加密算法诸如AES-128生成加密地址。由于写操作的指令代码和/或地址首先被传送到外部存储器装置160,所以外部存储器控制器130具有充足时间(例如,以时钟周期测量)以使用强但相对慢的加密算法生成加密地址,这允许在外部存储器控制器需要开始将数据块传送到外部存储器装置160之前生成加密地址。因此,在生成加密地址后,外部存储器控制器130基于加密地址,例如通过对加密地址和数据块使用弱(但是快速)的加密运算诸如XOR来加密数据块以生成数据块的加密副本。随后,外部存储器控制器130将数据块的加密副本传送到外部存储器装置160,这将数据块的加密副本存储在加密镜像175的指定地址。
本文所述的加密/解密技术不向请求访问外部存储器装置的写/读操作添加大量等待时间,因为加密/解密运算与其他传送相关的运算并行和/或并发执行,并实质上在开始将加密/解密数据传送到外部存储器装置/从外部存储器装置传送加密/解密数据之前完成。与此同时,本文所述的技术避免使用强(但相对慢)的加密对写/读操作的数据直接加密/解密,但是仍然提供与采用其实现的相同的高安全级别。如此,本文所述的技术提供对存储在外部存储器装置中的代码镜像的强加密,从而大大减少产品伪造和代码盗窃的风险,因为即使加密镜像被从外部存储器装置提取,没有秘密密钥对它们加以解密将是非常困难的。
本文所述的用于外部存储器的加密/解密技术至少部分基于下列观察结果:
·一旦获得对在特定地址的数据的请求,外部存储器控制器将花时间(例如,以时钟周期测量的)从外部存储器找取数据块;
·使用强加密算法(例如,诸如AES-128)执行加密/解密步骤花费相当长的时间(例如,时钟周期);
·虽然访问外部存储器的速度和加密的速度两者可根据硬件平台和设计选择来改变,不过两者通常在相同的量级;
·因为存取外部存储器和执行加密/解密并发执行,而不是一个接着另一个执行,所以实现了微控制器性能的显著增加同时仍然提供对外部存储器数据的强加密。
本文所述的技术可以实现预期的微控制器性能的一个原因是因为对地址执行强但是慢的加密,强加密通常可用于到/来自外部存储器的传送的开始,而不是在传送结束时。随后在数据传送快要结束时在快速但是不怎么强的加密运算(例如,XOR)中使用加密地址。例如,在某些实施例中,本文所述的技术可以把由强(例如,AES-128)解密引起的等待时间全部或实质上完全隐藏在数据找取本身的等待时间里面,从而大致将性能提高2倍。需要指出,在各个实施例中,精确性能提高可取决于外部存储器与内部计算的频率的对比和强(例如,AES-128)加密/解密所需的时钟周期数。
需要指出,某些常规方法可以通过使用缓存机制来实施外部存储器的加密,该缓存机制首先将外部存储器装置的整个代码镜像复制到本地高速缓存器(例如,CPU高速缓存器或内部SRAM),然后在高速缓存器中加密或解密整个镜像,并且然后,通过在该高速缓存器中存取其数据块来执行解密代码。不过此类常规方法带来整个代码镜像的加密操作的等待时间并使用额外的RAM/高速缓存器空间来存放代码镜像的额外副本(如果此类额外空间在微控制器中同样可得到或可配置)。相反,本文所述的加密/解密技术通过提供在传输过程中对存储在外部存储器上的加密镜像的数据块的加密和解密,而同时未带来通常与强加密相关联的等待时间并且不需要额外的RAM或内部高速缓存器空间,从而避免了常规方法的这些缺点。
在某些实施例中,本文所述的加密/解密技术提供使用AES-128加密算法来加密地址而不是被加密数据块的数据。例如,对于读访问,在外部存储器控制器中对地址的该强加密操作与从外部存储器装置找取加密数据块的事务处理并发执行。加密操作的结果随后与找取的数据块异或(相对弱的加密/解密运算),以便生成该数据块的未加密副本。这种方法提供等同于加密数据自身的保护,前提是每当代码镜像改变时由强加密算法使用的秘密密钥也改变,并且该秘密密钥以加密形式存储在外部存储器装置上。
在某些实施例中,本文所述的加密/解密技术可以被用在使用与外部或片外SRAM存储器的多周期存储器接口的装置或系统中。此类多周期存储器接口的示例包括串行存储器接口(例如,诸如SPI、DSPI、QSPI等)以及某些并行存储器接口(例如,某些DRAM接口等)。多周期存储器接口通常在从初始化到存储器装置的传送事务处理/初始化来自存储器装置的传送事物处理的时间点到实际开始用于该事务处理的数据传送的时间点之间会使用一些或甚至相当大量的时间(例如,至少几个时钟周期)。本文所述的技术通过使用这个时间量对用于传送事务的地址执行相对慢但强的加密算法来借助多周期存储器接口的这个特征以获得加密地址。该加密地址随后与传送操作的数据一起,被用于可以一个时钟周期或甚至少于一个时钟周期执行快速加密运算(例如,XOR或等效逻辑运算等)中。
图2是根据本文所述的加密/解密技术的某些示例实施例示出用于从外部存储器装置进行读取的示例方法的流程图。图2中的各个操作在下文中被描述为通过微控制器的组件(例如,CPU和外部存储器控制器)来执行。不过需要指出,各个实现方式和实施例可以使用不同组件并且可能使用多个组件来执行图2中的操作。例如,在各个实施例中,此类组件可以在单IC组件中实施或其功能可以分布在可以执行某些附加操作和功能(例如,在相同芯片模块中)的两个或多于两个组件中。因此,下文图2中的操作描述应被视为说明性的而非限制性的含义。
在操作202中,CPU(或某些其他微控制器组件)初始化读操作200以从与外部存储器装置相关联(或分配到外部存储器装置)的地址(“A”)读取数据块。例如,CPU可以将读操作的指令代码和地址置于将CPU耦合到外部存储器控制器的内部总线上,其中,该地址指示CPU所需的数据块。在收到读操作及其地址后,外部存储器控制器并发(和/或并行)执行操作206和操作204、208以及210。以此方式,外部存储器控制器将相对慢(强加密)操作206的等待时间掩蔽在操作204、208和210的等待时间中,使得读操作200的整个等待时间不会因为加密而增加。
在操作206中,外部存储器控制器利用强加密算法,使用秘密密钥(“K”)来加密收到的地址(“A”)以获得加密地址(“C”),例如:
C=加密(A,K)
其中,外部存储器控制器可以从微控制器内的非易失性存储器接收或检索秘密密钥。例如,外部存储器控制器可以使用秘密密钥(“K”)对地址(“A”)应用AES-128算法以生成加密地址(“C”)。需要指出,由于使用强加密算法,操作206相对较慢。
与操作206并发的是,在操作204中,外部存储器控制器初始化在外部存储器装置中的地址(“A”)处的加密数据块(“D”)的读传送。在操作208中,外部存储器控制器开始从外部存储器装置检索数据块(“D”),以及在操作210中,检索完成,并且外部存储器控制器已收到整个数据块(“D”)。需要指出,由于外部存储器控制器在多周期(例如,串行)接口上耦合到外部存储器装置,操作208和210相对较慢。不过,由于访问外部存储器装置的速度(例如,在操作208和210中)不比加密的速度(例如,在操作206中)快,所以在操作210完成时,外部存储器控制器已获得加密地址(“C”)和加密数据块(“D”)。
此后,在操作212中,外部存储器控制器例如通过对数据块(“D”)和加密地址(“C”)应用XOR运算来解密数据块(“D”)以获得解密的数据块(“W”),例如:
W=D XOR C
需要指出,虽然具有相对弱的加密特性,但是XOR运算是极快速的,通常在一个时钟周期或少于一个时钟周期的时间。
此后,外部存储器控制器响应于读操作200返回解密数据块(“W”),并且读操作在214结束。例如,在获得解密数据块(“W”)后,外部存储器控制器将解密数据块置于内部总线上,使得其可以被请求读操作的CPU检索。
图3是根据某些示例实施例示出用于系统初始化的示例方法的流程图。图3中的各个操作在下文中被描述为由CPU执行,但是需要指出,各个实现方式和实施例可以使用微控制器的不同组件并且可能使用微控制器的多个组件执行图3中的操作。例如,在各个实施例中,此类组件可以在单IC组件中实施或其功能可以分布在可以执行某些附加操作和功能(例如,在相同芯片模块中)的两个或多于两个组件中。因此,下文图3中的操作描述应被视为说明性的而非限制性的含义。
在图3中,系统初始化操作300用秘密密钥初始化系统或装置,该秘密密钥对应于被存储或要被存储在耦合到该系统/装置的外部存储器装置中的镜像。在操作302中,CPU从(该系统/装置的)内部非易失性存储器检索秘密密钥(“K”)并向外部存储器控制器提供该密钥。此后,外部存储器控制器可以使用秘密密钥(“K”)对外部存储器装置上的镜像执行存取操作。例如,外部存储器控制器可以将秘密密钥(“K”)用作读操作的一部分,以解密存储在镜像中的数据块(例如,如上面关于图2所述)。另外或替代,外部存储器控制器可以将秘密密钥(“K”)用作写操作的一部分,以加密随后以加密形式被存储在镜像中的数据块(例如,如下面关于图4所述)。
需要指出,在各个实施例中,秘密密钥(“K”)可以在不同时间被存储在内部非易失性存储器中。在某些实施例中,秘密密钥以及用其加密的镜像可以提前生成,并且在与初始化操作300在其中被执行的系统/装置不同的系统中生成。例如,秘密密钥可以由给定的公司生成并被给定的公司用于加密镜像,该镜像随后被编程到外部存储器装置中。外部存储器装置(但不是秘密密钥)随后可以被运送给(可能位于另一国家的)设备制造商,该制造商将外部存储器装置组装为电子产品(例如,诸如智能电话、平板电脑等)。组装后的电子产品随后被运回公司,该公司可向电子产品的非易失性存储器提供秘密密钥并执行图3的系统初始化操作300以在销售点激活产品。以此方式,该公司可以有效防止其电子产品被假冒,因为另一方、甚至是组装电子产品的设备制造商无法在该产品(例如,在零售商店)被激活之前获取该秘密密钥。
在其他实施例中,可在图3的初始化操作300在其中执行的系统或装置中提供或生成秘密密钥;举例说明,密钥可以被提供给系统用于需要使用该密钥的每次会话,或可以在新镜像被存储在外部存储器装置中的时刻或刚好在新镜像要被存储在外部存储器装置之前的时刻生成。例如,系统/装置可以是需要被提供以加密形式存储在外部存储器装置上的新镜像(例如,作为硬件升级的一部分)的电子产品(例如,智能电话、平板电脑等)。为便于提供,电子产品可以被配置为执行生成秘密密钥(例如,作为随机数或伪随机数)的某些指令。在生成秘密密钥后,电子产品可以执行图3的系统初始化操作300以在非易失性存储器中存储密钥并向其外部存储器控制器提供该密钥。此后,电子产品可以通过某些通信手段(例如,通过空口(OTA)无线下载或通过诸如通用串行总线(USB)的有线连接件)接收新镜像。在收到新镜像和/或在镜像被传输期间,电子产品中的外部存储器控制器可以在将所收到的镜像存储在外部存储器装置中之前使用秘密密钥对其加密(例如,如下面关于图4所述)。以此方式,新秘密密钥可以在每次新镜像被提供/存储在外部存储器中时生成并进行永久存储,这(在向产品提供新镜像期间和当在外部存储器中存取加密镜像期间)提供更强的安全而不会妨碍电子产品性能。
图4是根据本文所述的加密/解密技术的某些示例实施例示出用加密镜像编程外部存储器装置的示例方法400的流程图。图4中的各个操作在下文中被描述为通过微控制器的组件(例如,CPU和外部存储器控制器)来执行。不过需要指出,各个实现方式和实施例可以使用不同组件并且可能使用多个组件来执行图4中的操作。例如,在各个实施例中,此类组件可以在单IC组件中实施或其功能可以分布在可以执行某些附加操作和功能(例如,在相同芯片模块中)的两个或多于两个组件中。因此,下文图4中的操作描述应被视为说明性的而非限制性的含义。
在操作402中,CPU(或某些其他微控制器组件)生成新秘密密钥(“K”)。例如,CPU可以使用伪随机数或真随机数发生器生成具有适用于选定强加密算法使用的长度的秘密密钥。在操作404中,CPU在内部非易失性存储器中存储秘密密钥(“K”)。需要指出,操作402和404可以提前执行和/或在与被编程外部存储器装置要在其中进行使用的系统或装置不同的系统中执行,或可以在镜像要被加密并被存储在外部存储器装置中的时刻被执行。还需要指出,操作402和404可以在包括CPU和外部存储器装置两者的系统中执行,或可以在专门用于将镜像编程到外部存储器装置中的目的建立的系统中执行(该外部存储器装置可以在以后的时间被组装到不同的系统/装置)。
在操作406之前,控制器(例如,外部存储器控制器等)从内部非易失性存储器检索或接收秘密密钥(“K”)并且也接收写操作,该写操作将数据块(例如,诸如字“W”)写到与外部存储器装置中的镜像相关联(或分配到该镜像)的地址(“A”)。例如,作为将镜像编程到外部存储器装置中的一部分,CPU可以将写操作的指令代码、地址和数据块置于将CPU耦合到控制器的内部总线上。在收到写操作及其地址(“A”)和数据块(“W”)后,控制器并发(和/或并行)执行操作406和涉及将数据块从控制器传送到外部存储器装置的其他操作。以此方式,控制器将加密操作406的等待时间掩蔽在其他传送操作的等待时间之中,使得写操作的整个等待时间不会因为加密而增加。
在操作406中,控制器首先利用强加密算法,使用秘密密钥(“K”)来加密收到的地址(“A”)以获得加密地址(“C”),例如:
C=加密(A,K)
例如,外部存储器控制器可以使用秘密密钥(“K”)来对地址(“A”)应用AES-128算法以生成加密地址(“C”)。随后,控制器通过对数据块(“W”)和加密地址(“C”)应用XOR运算来加密数据块(“W”)以获得加密数据块(“D”),例如:
D=W XOR C
随后,在操作408中,加密数据块(“D”)在外部存储器装置的地址(“A”)存储。随后,控制器继续到确定是否有任何更多的数据块要被处理,其为写操作的一部分(在此情况下,控制器重复操作406和408),或写操作在410结束。
需要指出,根据外部存储器装置的类型,在某些实施例中,写操作可以对一组多数据块执行。在相较于关联的读以更大的数据大块来写数据的外部存储器装置中,操作406被执行,其为分别用于通过其自身地址识别的(来自该组多数据块的)每个数据块的写操作的一部分。例如,当写操作涉及一组多数据块时,控制器确定该组中每个独立数据块的地址并随后执行用于该数据块的操作406。当该组中的所有多数据块以这种方式执行时,控制器组合该组数据块的加密副本,并随后在步骤408中写入该组的加密副本。
在各个实施例中,本文所述的加密/解密技术可以使用各种强加密算法来实施以加密存取操作的地址。此类强加密算法的示例包括但不限于数据加密标准(DES)及其变体(例如,三重DES、G-DES、DES-X等)、AES及其变体(例如,AES-128、AES-192、AES-256等)、Rijndael密码体系的其他成员、国际数据加密算法(IDEA)及其变体(例如,MMB、MESH、IDEA、NXT等)、Twofish、Blowfish、Serpent、CAST-128(另选地,CAST5)和CAST-256、RC4、其他各种对称分组密码和任何其他合适的秘密密钥的加密/解密算法。
在各个实施例中,本文所述的加密/解密技术可以使用各种快速逻辑运算或算法来实施,以基于数据块的加密地址加密/解密存取操作的数据块。此类快速运算和算法的示例可以包括但不限于XOR和基于XOR的密码、置换运算、对称差分运算、可以在一个时钟周期(或至多非常少的时钟周期)内执行的且可逆的任何其他种类的简单逻辑运算。
在各个实施例中,本文所述的加密/解密技术可以被实施用于各种类型的外部和/或片外存储器装置。此类装置的示例可以包括但不限于闪存装置、nvSRAM存储器装置、SRAM存储器装置、FRAM存储器装置等。此外,在某些实施例中,本文所述的加密/解密技术可以在使用片外存储器(例如,SRAM、nvSRAM等)的系统中实施以增加微控制器的内部存储器。例如,微控制器(或其外部存储器控制器)可以使用如本文所述的在传输过程中的加密/解密来存储和检索被存储在片外芯片、串行SRAM存储器上的代码/数据的加密镜像。
在某些实施例中,本文所述的加密/解密技术可以被用于为通过多周期接口耦合的任何两个装置提供安全。例如,本文所述的技术可以用于保护两个装置之间的任何公共通道,其中,一个装置被配置为通过地址重复存取在另一装置中的镜像。
因此,在系统包括第一装置和第二装置的示例实施例中,第二装置通过接口耦合到第一装置,该接口在初始化数据传送与通过该接口开始数据传送之间具有多周期延迟。第一装置被配置为存储包括单独可寻址数据块的加密镜像。第二装置被配置为:加密用于对第一装置进行存取操作的地址以获得加密地址;并且基于该加密地址加密或解密用于存取操作的数据块。在这个实施例的一个方面,加密镜像在第一装置被布置在该系统中之前存储在第一装置中。在另一方面,第一装置存储多个加密镜像,多个加密镜像中的每个加密镜像与多个密钥中的一个密钥相关联。在另一方面,第二装置还可以被配置为:用多个密钥中的第一密钥加密用于第一读取操作的第一地址以获得第一加密地址,第一地址指定多个加密镜像的第一加密镜像中的第一数据块;从第一装置接收第一数据块的加密副本;并基于第一加密地址解密第一数据块的加密副本。另外,第二装置还可以被配置为:用多个密钥中的第二密钥加密用于第二读取操作的第二地址以获得第二加密地址,第二地址指定(例如,在多个加密镜像的相同或不同加密镜像中的)第二数据块;从第一装置接收第二数据块的加密副本;并基于第二加密地址解密第二数据块的加密副本。在另一方面,第二装置可以被配置为改变密钥,当第一装置中的加密镜像被新镜像替代时,用新密钥加密已加密镜像。在另一方面,该系统还可以包括耦合到第一装置的内部存储器,该内部存储器被配置为永久存储用于加密已加密镜像的密钥。在另一方面,存取操作是写操作,并且第二装置还被配置为:接收将数据块存储在第一装置上的加密镜像中的地址的写操作;用密钥加密该地址以获得加密地址;基于该加密地址生成数据块的加密副本;并在外部存储器装置上的加密镜像中的地址存储数据块的加密副本。写操作可以被接收作为用加密镜像编程第一装置的操作的一部分,加密镜像包括更新该系统的固件指令。
在某些实施例中,本文所述的加密/解密技术可以在可编程芯片上系统中实施。可编程芯片上系统的一个示例是来自由加利福尼亚州圣何塞的Cypress半导体公司提供的可编程芯片上系统(PSoCTM)产品系列的器件(例如,诸如PSoC4A-L产品)。
图5示出可编程芯片上系统器件(例如,诸如PSoCTM器件)的示例实施例。在某些实施例中,芯片上系统器件(例如,诸如装置500)被制成在半导体管芯上的IC,该半导体管芯被封装为在合适的芯片载体封装件中的芯片。如图5所示,装置500可以被配置作为微控制器,该微控制器包括CPU子系统502、外设互连件(PI)516、内部总线522、可编程内核(PC)524、高速输入/输出(HSIO)矩阵540、数字系统接口(DSI)542、模拟互连件(AI)544和输入/输出(IO)管脚550。
CPU子系统502包括一个或多个CPU(或CPU内核)504、闪存506、片上调试(DOC)508、预取缓冲器510、私有静态随机存取存储器(SRAM)512以及特殊功能寄存器514。在实施例中,DOC 508、预取缓冲器510、私有SRAM 512和特殊功能寄存器514可以耦合到CPU 504,而闪存506可以耦合到预取缓冲器510。闪存506可以是任何类型的非易失性存储器,但是通常具有受限的大小。
CPU 504被配置为就地执行和/或以其他方式存取存储在一个或多个外部存储器装置(未在图5中示出)中的代码和数据镜像。根据本文所述的加密/解密技术,CPU 504被配置为生成和/或接收并(例如,在闪存506中)永久存储由外部存储器控制器(例如,SMIF块530等)使用的秘密密钥,以对被存储在外部存储器装置中的可寻址代码/数据执行在传输过程中的加密和解密。
装置500包括内部系统互连总线522。内部总线522可以例如是单级或多级的高级高性能总线(AHB),其将CPU子系统502耦合到外设互连件516和/或耦合到可编程内核524中的一个或多个控制器。当执行存取外部存储器装置的指令时,CPU 504将指令、其地址及其数据(如果可用)置于内部总线522上。内部存储器控制器(例如,SMIF块530等)接收指令及其地址,并根据本文所述的技术对数据执行加密或解密。
装置500还可以包括外设互连件516,该外设互连件可以包括桥518(例如,诸如AHB桥)并可选包括直接存储器存取(DMA)控制器520。外设互连件516经由内部总线522耦合到CPU子系统502。外设互连件516可以提供CPU子系统502及其外设与存储器、以及可编程内核524之间的主要数据和控制接口。当存在DMA控制器520时,其可以被编程以在系统组件之间传送数据而不增加CPU 504的负担。例如,在某些实施例中,DMA控制器可以根据本文所述的加密/解密技术配置以从外部存储器装置找取音频、视频或静态图像数据,并促使此类音频、视频或静态图像数据以流媒体方式在LCD显示器上显示而无需CPU参与。在各个实施例中,在CPU 504的每次选择或不同类型的CPU 504中,CPU子系统502和外设互连件516的这些子组件中的每个子组件可以是不同的。可选地,外设互连件516也可以被耦合到共享SRAM526和系统性能控制器(SPC)528。私有SRAM 512独立于共享SRAM 526,该共享SRAM由CPU子系统通过桥518进行访问。CPU 504没有通过桥518访问私有SRAM 512,因此允许对共享SRAM526的DMA访问与对本地寄存器和RAM的访问同时发生。需要指出,虽然SRAM 512和SRAM 526可以存在于装置500中,但是这些内部存储器模块未被配置为本地(例如,CPU)高速缓存器,并且另外不足以加密/解密存储在外部存储器装置上的全部镜像。还需要指出,虽然在这里被标记为SRAM,但是在各个实施例中,这些存储器模块可以是来自各种(易失性或非易失性)存储器或数据存储模块的任何合适类型。
在各个实施例和实现方式中,可编程内核524可以包括各子组件的不同组合(未示出),该组合包括但不限于全局布线通道(global routing channel)、数字处理通道、数字外设设备、模拟处理通道、模拟外设设备、DMA控制器、SRAM和其他适当类型的数据存储设备、IO端口和其他合适类型的子组件。在图5所示的示例实施例中,可编程内核524包括:提供扩展CPU子系统502的外部片外芯片存取的机制的串行存储器接口(SMIF)块530、可编程数字阵列532、可编程模拟阵列534和特殊功能阵列536,上述每个可配置和/或可编程以实施子组件的一个或多个功能。可编程数字阵列532耦合到数字系统接口542,该数字系统接口542为阵列532中的数字块提供到IO管脚550的可布线连接。可编程模拟阵列534耦合到模拟接口544,该模拟接口544为阵列534的模拟组件提供到IO管脚550的可布线连接。SMIF块530耦合到HSIO矩阵540,该矩阵提供到IO管脚550的连接。特殊功能阵列536耦合到HSIO矩阵540,该矩阵为阵列536的块(例如,固定功能块等)提供到IO管脚550的连接。
可编程数字阵列532可以包括数字逻辑块的阵列,其中,数字互连件542可以提供该阵列中的任何数字块与IO管脚550中的任一个之间的可布线连接。在一个实施例中,数字块体系结构包括通用数字块(UDB)。例如,每个UDB可以包括算术逻辑单元(ALU)以及复杂PLD(CPLD)或其他类型的数字可编程逻辑元件。数字系统接口542包括在各数字逻辑块之间提供互连(例如,以允许数字块、块组和数字通道彼此连接、连接到内部和外部参考信号、连接到混合信号块等)并允许来自任何数字块的信号被路由到IO管脚550中的任一个的一系列组件(例如,总线、开关等)。
在各个实施例中,可编程数字阵列532的此类UDB中的一个或多个可以被配置为根据本文所述的技术实施在传输过程中的加密/解密。此外,可编程数字阵列532的一个或多个UDB可以被配置为执行各种数字功能,该数字功能,包括但不限于下列功能中的一个或多个:基本I2C从;I2C主;串行外设接口(SPI)主或从;多线(例如,3线)SPI主或从(例如,在单管脚上复用的MISO/MOSI);定时器和计数器(例如,一对8比特定时器或计数器、16比特定时器或计数器,8比特采集定时器等);脉宽调制器或PWM(例如,一对8比特PWM、16比特PWM、8比特死区PWM等);电平感应I/O中断发生器;正交编码器;通用异步接收器/发送器或UART(例如,半双工);延迟线;以及可在一个或多个UDB中实现的其他任何合适类型的数字功能或数字功能的组合。
在其他实施例中,附加功能可以使用两个UDB的组或多于两个UDB的组来实施。仅用于说明目的且不是为了限制,下列功能可以使用多个UDB来实施:I2C从,其支持硬件地址检测以及具有处理完整事务处理无需CPU内核干预并帮助阻止强制数据流中的任意比特上的时钟拉伸(clock stretching)的能力;I2C多主,其可以包括在单块中的从选项;任意长度(例如,多达32比特)的循环冗余校验或CRC;安全数字输入/输出或SDIO;串行通用输入/输出或SGPIO;数字相关器(例如,具有多达32比特、带有4倍过采样并支持可配置阈值);本地互连网络(LIN)总线接口;Δ-∑调制器(例如,具有差分输出对、用于D类音频DAC);集成电路内置声音或I2S(立体声);液晶显示器或LCD,驱动控制(例如,UDB可以用于实施对LCD驱动块的定时控制并提供显示RAM寻址);全双工UART(例如,7比特、8比特或9比特,带有1比特或2比特停止位和奇偶校验位,以及RTS/CTS支持);采集定时器(例如,16比特等);死区PWM(例如,16比特等);系统管理总线或SMbus(包括在软件中使用CRC格式化SMbus包);无刷电机驱动器(例如,支持6/12步进换流(step commutation));自动波特率检测器和发生器(例如,针对从1200到115200波特的标准速率自动确定波特率,并在检测后生成所需时钟以生成波特率);以及可以在多UDB中实现的任何其他合适类型的数字功能或数字功能的组合。
可编程模拟阵列534可以包括模拟组件的阵列,其中,模拟互连件544提供模拟组件与IO管脚550之间的可布线连接。可编程模拟阵列534可以包括模拟组件,该模拟组件包括但不限于比较器、混频器、可编程增益放大器(PGA)、跨阻抗放大器(TIA)、模数转换器(ADC)、数模转换器(DAC)、基准电压、电流源、采样保持电路、互连件(及其开关)、以及任何其他合适类型的模拟组件和资源。可编程模拟阵列534可以支持各种模拟功能,该模拟功能包括但不限于模拟布线、LCD驱动IO支持、电容式感应、电压测量、电机控制、电流到电压转换、电压到频率转换、差分放大、光测量、感应位置监控、滤波、音圈驱动、磁卡读取、声学多普勒测量、回波测距、调制解调器传输和接收编码或任何其他合适类型的模拟功能。模拟互连件544包括在模拟组件之间互联的一系列总线、开关和多路复用器,其允许模拟块、块组和通道彼此连接、连接到内部和外部参考信号、连接到混频信号块(例如,诸如DAC)以及连接到IO管脚550。
一个或多个SMIF块,诸如SMIF块530可以被配置为通过串行接口(例如,诸如SPI)耦合到(例如,通过HSIO矩阵540和IO管脚550)一个或多个外部存储器装置(未在图5中示出)的外部存储器控制器。根据本文所述的加密/解密技术,当配置为外部存储器控制器时,SMIF块530可以被配置为(例如,从内部总线522)接收从耦合该块的外部存储器装置找取数据块的读操作。在接收读操作后,SMIF块530被配置为使用秘密密钥加密用于读操作的地址以获得加密地址,与此并发的是向外部存储器装置发送读操作指令以及接收响应于此的所请求的数据块的加密副本。在接收数据块的加密副本后,SMIF块530被配置为基于加密地址解密数据块的加密副本,以获得数据块本身并作为读操作的响应而发送该数据块(例如,到内部总线522上)。相同(和/或另一)SMIF块530可以被配置为支持对被发送以存储在外部存储器装置上的数据块的加密。例如,根据本文所述的加密/解密技术,SMIF块530可以被配置为(例如,从内部总线522)接收将数据块写入耦合该块的外部存储器装置的写操作。在接收写操作后,SMIF块530被配置为用秘密密钥加密用于写操作的地址以获得加密地址,与此并发的是准备和发送该写操作指令到外部存储器装置。在生成加密地址后,SMIF块530被配置为基于加密地址加密数据块以获得该数据块的加密副本。SMIF 530随后在外部存储器装置中存储(或促使存储)该数据块的加密副本。
在某些实施例中,特殊功能阵列536可以包括专用(例如,不可编程)固定功能块和/或到专用功能块的一个或多个接口,诸如通用串行总线(USB)、晶体振荡器驱动器、联合测试行动小组(JTAG)接口等。此类固定功能块可以通过使用以下电路元件在芯片上实施,该电路元件包括但不限于:一个或多个计数器(例如,8比特、16比特等)、一个或多个采集寄存器、一个或多个周期寄存器、一个或多个比较寄存器、一个或多个中心对齐PWM元件、一个或多个时钟预分频(pre-scaling)元件、一个或多个伪随机PWM元件以及一个或多个正交解码元件。
HSIO矩阵540提供从装置500的各个组件到IO管脚550的连接。(在图5中,为便于说明,IO管脚550被示为在装置500底部的块;不过,在各种形式要素中,IO管脚可以被定位在将该装置封装在其中的芯片封装件的两个或多于两个侧面上。)例如,HSIO矩阵540可以包括一组多路复用器和/或将SMIF 530的各个块和特殊功能阵列536耦合到IO管脚550的其他组件。
在某些实施例中,本文所述技术的加密运算将明文数据解译为密文数据(用于写操作),并且反之亦然(用于读操作)。未加密/明文数据在执行加密的装置例如,诸如微控制器或片上系统内部执行。加密/密文数据通过串行存储器接口传送到外部(例如,片外)存储器装置。对片外存储器装置的访问可以以XIP模式和/或可以被包括在相同控制路径中的MMIO模式来提供。
在XIP模式,地址块被直接映射到在外部存储器装置(例如,诸如片外SRAM)中的位置。当CPU执行引用指向外部存储器装置上的位置的地址的代码时,外部存储器控制器检索从外部存储器装置检索数据并将其置于内部总线上。从地址的角度来看,用于外部存储器控制器的地址具有一定的值范围。在该地址范围内,外部存储器控制器可以具有直接映射到其寄存器的某些地址块(该寄存器可以相应映射到外部存储器装置上的位置)和映射到外部存储器装置的某些地址块。因此,当CPU存取XIP地址范围内的地址时,外部存储器控制器将该地址存储在其地址寄存器中,请求来自外部存储器装置的该地址指定的数据块,当数据块出现在至外部存储器装置的接口上时取回该数据块,并在之后向CPU回送这个数据块。
在MMIO模式,从CPU的角度来看,地址指向外部存储器控制器中的寄存器,其中,该寄存器可以被映射到外部存储器装置上的某些位置(从控制器的角度来看)。因此,当CPU执行引用MMIO地址的代码时,CPU找取存储在通过MMIO地址指向的寄存器中的数据块,而外部存储器控制器确保该寄存器当CPU需要数据块的时候具有正确数据块。
图6是示出用于对外部存储器装置中的数据和/或代码进行多模式控制路径存取的示例地址空间600的框图。地址空间600示出被映射到外部存储器装置610(其包括镜像611)和外部存储器装置620(其包括镜像621和623)的地址。例如,地址空间600可以经配置用于可编程芯片上系统的装置(例如,诸如图5中的装置500)。
如图6所示,地址空间600包括XIP地址空间602和MMIO地址空间604。XIP地址空间602包括分别对应于(在外部存储器装置610中的)镜像611以及(在外部存储器装置620中的)镜像621和623的三个存储器地址区域。XIP地址空间602还可以包括未被映射到外部存储器装置中的镜像的一个或多个未用存储器地址区域,例如,这是因为微控制器可能未被配置为存取更多的额外存储器或仅仅因为外部存储器装置未全部装载。
MMIO地址空间604包括直接映射到由微控制器中的CPU可存取的地址的通用控制寄存器606和加密控制寄存器608。通用控制寄存器606包括用于控制对被映射到各个存储器地址区域的各个镜像进行存取的寄存器。例如,某些通用控制寄存器(例如,诸如CTL.XIP_MODE)可以用于控制对所有区域的存取,而其他通用控制寄存器可以专门用于每个存储器地址区域i—例如,诸如识别特定区域i的位置的寄存器(例如,CTLi.BASE_ADDR,CTLi.SIZE),指定对特定区域i的存取类型(例如,读/写)的寄存器(例如,CTLi.RD_ENC,CTLi.WR_ENC),以及存储与特定区域i相关联的秘密密钥的寄存器(例如,ENC_KEY0i…ENC_KEY3i)。加密控制寄存器608包括用于控制加密/解密操作的寄存器,—例如,用于开始加密操作的寄存器(例如,CMD.START_ENC)、存储用于正被处理的CPU指令的地址的寄存器(例如,ENC_ADDR)、以及存储对秘密密钥的加密操作的结果的寄存器(例如,ENC_RESULT0…ENC_RESULT3等)、等等。
需要指出,根据本文所述的技术,在某些实施例中,单个秘密密钥可以与用于外部存储器装置的所有存储器区域相关联。不过,在其他实施例中,每个存储器区域可以与其自身的密钥相关联,并且,在又一些其他实施例中,在每个存储器区域内的每个镜像可以与其自身的不同密钥相关联;因此,在此类其他实施例中,本文所述的技术提供在存取对应于该密钥的存储器区域或镜像之前(例如,通过外部存储器控制器)选择和/或加载正确的密钥。
虽然图6示出XIP地址空间602和MMIO地址空间604具有其自身的连续地址范围,但是应当指出,在各个实施例中,这些地址空间可以彼此交错。例如,用于特定存储器区域的XIP地址空间的地址范围可以包括指定用于该特定存储器区域的一个或多个通用和/或加密控制寄存器的地址。另选地或另外地,MMIO地址空间的地址范围可以包括一个或多个XIP地址和/或与该XIP地址相关联的一个或多个控制寄存器。因此,图6中的地址空间600应被视为说明性的而非限制性的含义。
根据本文所述的加密/解密技术的某些实施例,在XIP模式中,针对对外部存储器装置的读和/或写访问而“在传输过程中”执行加密。加密可以对每个存储器区域i单独生效,例如:
·与区域指定相关联的寄存器CTLi.RD_ENC可以指定加密是否针对读访问执行;
·与区域指定相关联的寄存器CTLi.WR_ENC可以指定加密是否针对写访问执行。
在MMIO模式中,加密通过MMIO寄存器接口来支持。在这个模式中,根据本文所述的技术的单个加密序列可以包括下列步骤:
1.秘密密钥KEY和明文地址PA被写入MMIO寄存器;
2.开始根据本文所述技术的加密操作(例如,在对明文地址的加密之后,对对应于该地址的数据块进行解密);
3.当加密操作完成后,从MMIO寄存器读取解密的数据块。
图7是示出包括加密/解密块的装置700的框图,其中,该加密/解密块被配置为根据本文所述的技术来操作。在某些实施例中,装置700可以是使用合适地址空间(例如,诸如图6中的地址空间600)存取外部存储器装置的可编程片上系统(例如,诸如图5中的装置500)。
如图7所示,除了其他组件(未示出)之外,装置700包括加密/解密块730和外部存储器接口750。加密/解密块730通过一个或多个内部互连件和/或总线(未示出)耦合到接口750,而接口750的管脚被配置为通过PCB连线/焊垫、径迹线或等效物耦合到一个或多个外部存储器装置(未示出)。在图7所示的实施例中,接口750是8管脚的SPI接口。在装置700内,加密/解密块730可以以各种方式来实施。例如,在某些实施例中,加密/解密块可以被实施为在与该装置相同的管芯上制成的专用、固定功能的硬件块(例如,逻辑门、LUT、PLD、多路调制器等)。在其他实施例中,加密/解密块可以被实施为在与该装置相同的管芯或相同芯片模块上的外部存储器控制器内的固定的或可编程硬件块(例如,逻辑门、LUT、PLD、多路调制器等)。
根据本文所述的技术,加密/解密块700包括耦合到弱加密块733-a和733-b的强加密块逻辑731。块逻辑731用秘密密钥配置或存取秘密密钥。此外,块逻辑731被配置为接收用于对外部存储器装置的存取(例如,读或写)操作的未加密地址,并使用秘密密钥以强加密算法将该地址加密成加密地址。例如,如图7所示,块逻辑731从内部总线(未示出)接收/检索秘密密钥KEY并且也接收用于存取(例如,读或写)操作的操作地址SOC_A。块逻辑731随后从操作地址导出外部存储器地址A并通过接口750将其传送到外部存储器装置。块731也处理所接收的地址SOC_A以获得明文地址PA。块逻辑731对秘密密钥KEY应用强加密算法(例如,AES-128)以获得密文地址CA,其随后被传送到块逻辑733-a(用于读操作)或块逻辑733-b(用于写操作)。
块逻辑733-a经配置用于读操作。在读操作中,块逻辑733-a被配置为从块逻辑731接收用于读操作的加密地址,从外部存储器装置(EMD)接收用于读操作的加密数据块,并且向加密地址和加密数据块应用弱(但是快速)的加密运算以获得数据块的解密副本,该数据块的解密副本随后响应于读操作而被返回。例如,如图7所示,块逻辑733-a通过接口750从块逻辑731接收用于读操作的密文地址CA和从外部存储器装置接收用于读操作的密文数据块CD。块逻辑733-a随后对密文地址和密文数据块应用弱加密运算(例如,XOR)以获得数据块的明文副本PD,该数据块的明文副本随后作为对读操作的响应而通过内部总线(未示出)进行传送。
块逻辑733-b经配置用于写操作。在写操作中,块逻辑733-b被配置为从块逻辑731接收用于写操作的加密地址,从内部总线(未示出)接收用于写操作的未加密数据块,并且向加密地址和未加密数据块应用弱(但是快速)的加密运算以获得数据块的加密副本,该数据块的加密副本随后被发送到外部存储器装置(EMD)用于存储。例如,如图7所示,块逻辑733-b从块逻辑731接收用于写操作的密文地址CA和从内部总线(未示出)接收用于写操作的明文数据块PD。块逻辑733-b随后对密文地址和明文数据块应用弱加密运算(例如,XOR)以获得数据块的密文副本CD,其随后通过接口750被发送到外部存储器装置用于存储。
本文所述的技术的某些实施例可以通过用于装置(例如,诸如图5中的装置500)的、使用32比特地址空间(例如,诸如图6中的地址空间600)的硬件(HW)块(例如,诸如图7中的块730)来实施。在此类实施例中,对存取操作的地址执行强(但是相对慢)的加密算法(例如,AES-128),以及对存取操作的数据块的加密/解密执行弱(但是相对快速)的加密运算(例如,XOR)。例如,AES-128加密功能可能花费多个时钟周期,而XOR功能不向存取操作的等待时间添加任何周期延迟。
在使用32比特装置地址和AES-128加密的一个此类示例实施例中,在XIP模式中,外部存储器地址A[]用32比特存取操作地址SOC_A[31:0]构成。这个过程可以取决于:
·XIP存储器空间的大小,例如2n字节,其中,n在[16,28]的范围;
·外部存储器区域的大小,例如2m字节,其中,m在[8,n]的范围,其中外部存储器区域可以是外部存储器地址空间的子集。
下面的公式可以用于从存取操作地址SOC_A[31:0]推导外部存储器地址A[]:
A[m-1:0]=SOC_A[m-1:0]。
在上面的公式中,32比特操作地址的低m-1比特用于外部存储器地址A[],但是需要指出,在不同的实施例中,可以(例如,根据存储器区域有多大)使用不同的技术。还需要指出,在上面的公式中,外部存储器地址A[]指定外部存储器内的一个或多个字节以及XIP存储器空间在32比特装置地址空间中的基本位置(base location),但是存储器区域在XIP存储器空间中的基本位置在该推导中丢失。
除了外部存储器地址A[]以外,还构成明文地址PA[127:0]。明文地址PA[127:0]是AES-128加密块的输入,而密文地址CA[127:0]是AES-128加密块的输出。下面的公式可以用于从32比特存取操作地址SOC_A[31:0]推导明文地址PA[]:
PA[127:0]=0
PA[n-1:4]=SOC_A[n-1:4]。
在上面的公式中,第一操作初始化明文地址PA[127:0],而第二操作选择从32比特存取操作地址的高n-1比特到低4比特的范围。需要指出,明文地址PA[127:0]的低4比特总是0,而较高的n到127比特也总是0。前者确保明文地址PA[127:0]总是16字节的倍数,而后者确保使用零将明文地址填充到128比特的长度(这是AES-128输入所需的长度)。在这个实施例中,XIP存储器空间中的每16字节组具有唯一的明文地址PA[127:0],因为外部存储器控制器总是在某时刻找取16字节数据(例如,用于读操作的数据块的长度总是16字节)。不过,需要指出,各个实施例可以例如根据下列项使用不同的机制来从存取操作地址推导明文地址:存取操作地址的长度,外部存储器允许的读大小,与存取操作等待时间相比强加密的可接受等待时间的程度,等等。
在这个实施例中,AES-128加密块使用128比特秘密密钥KEY[127:0]。秘密密钥KEY[127:0]通过四个只读MMIO寄存器、ENC_KEY0、…、ENC_KEY3来提供,并且应保密以确保抵御攻击的可靠保护。基于秘密密钥KEY[127:0],AES-128加密块如下输出密文地址CA[127:0]:
CA[127:0]=AES-128(KEY[127:0],PA[127:0])。
密文地址CA[127:0]的大小是16字节(128比特)并用于对用于存取(例如,读和写)操作的数据块的加密和解密。在这个实施例中,外部存储器中的每16字节组具有唯一的密文地址CA[127:0],其大小等于该字节组的大小。这允许基于XOR的加密/解密按位组合密文地址CA[127:0]和16字节数据块用于读操作。
对于具有明文数据块PD[127:0]的写操作,使用密文地址CA[127:0],通过使用硬件实现的XOR运算将对应的密文数据块CD[127:0]如下进行加密:
CD[127:0]=CA[127:0]XOR PD[127:0]
因为XOR操作对于读操作是对称的,所以密文数据块CD[127:0]如下通过与密文地址CA[127:0]异或来解密以获得明文数据块PD[127:0]:
PD[127:0]=CA[127:0]XOR CD[127:0]
在这个实施例中,对于读操作,从外部存储器检索的加密数据块充当被解密为操作的明文数据块的密文数据块。对于写操作,操作的数据充当被加密并被存储到外部存储器中作为相应的密文数据块的明文数据块。需要指出,在某些实施例中,外部存储器装置可以相较于关联的读操作在更大的数据大块中执行写操作。例如,给定外部存储器的写操作可能需要在512字节的地址范围内写数据大块,而相同外部存储器的读操作可能需要找取16字节数据块中的数据。因此,在这个实施例中,写操作的地址范围(例如,512字节)可以首先被划分为32个16字节的明文地址,该明文地址对应于一组32个16字节的数据块。接下来,用于每个16字节数据块的密文地址根据该数据块的16字节明文地址确定,并且随后,每个数据块基于其密文地址来加密以获得对应的密文数据块。当该组中的所有16字节数据块以这种方式处理时,对应的密文数据块用于组合该组的32个数据块的加密副本,该加密副本随后(作为512字节大块)被写入到外部存储器。
在这个实施例中,在MMIO模式中,加密和解密未在传输过程中执行。相反,向AES-128加密块提供MMIO寄存器接口。这个接口允许将明文数据块(例如,基于XOR)加密成密文数据块以通过执行软件(SW)或固件(FW)指令来实施。例如,当闪存装置以新内容编程时,这种机制是有用的。在这个实施例中,MMIO接口包括下列MMIO寄存器:
·四个寄存器ENC_KEY0、…、ENC_KEY3,其存储(例如,写入)128比特的AES加密密钥,并且这些寄存器与XIP模式共享用于存储密钥;
·寄存器ENC_ADDR,其可以用明文地址PA[31:0]写入(已知/假设高96比特总是“0”);
·寄存器字段CMD.START_ENC,其基于秘密密钥KEY[127:0]开始AES-128加密块以加密明文地址PA[127:0];当加密完成时,硬件指令用于将这个字段设定为“0”;
·四个寄存器ENC_RESULT0、…、ENC_RESULT3,其存储地址加密的结果(即,密文地址CA[127:0]),并且被读取以在加密完成后得到密文地址;SW或FW指令被执行以用密文地址CA[127:0]异或加密16字节的明文数据块PD[127:0]。
需要指出,MMIO接口的寄存器被定位在外部存储器控制器中,但是在MMIO模式中用于存取操作的数据块仍然驻留在外部存储器装置上。不过,MMIO模式与XIP模式之间的差异在控制路径方面,例如,在XIP模式中,用于数据块的操作/CPU地址是在控制器的XIP地址部分中的地址,而在MMIO模式中,用于数据块的操作/CPU地址被直接映射到控制器的寄存器(例如,ENC_ADDR)并且控制器寄存器用于存储密文地址CA[127:0]。除此之外,MMIO模式和XIP模式两者(用于将数据块存储到外部存储器装置/从外部存储器装置检索数据块)的数据路径是相同的,使得在该两种模式中,与操作地址相关联的数据块驻留在外部存储器装置中。
在这个实施例中,在XIP模式中,当满足下列要求时,可以确保对加密密钥KEY[127:0]的最大保护:
·设定XIP加密密钥的受信SW块应当首先将寄存器字段例如CTL.XIP_MODE设为“1”,并随后将该加密密钥写入ENC_KEY0、…、ENC_KEY3中;
·当寄存器字段CTL.XIP_MODE从“1”改变到“0”时(例如,当从XIP模式转换到MMIO模式生效时),HW块应当将ENC_KEY0、…、ENC_KEY3中的加密密钥清为“0”;这有效确保加密密钥不会在XIP模式与MMIO模式之间共享;
·HW块应当提供对ENC_KEY0、…、ENC_KEY3中的加密密钥的只写访问;
·MMIO接口(尽管寄存器字段CMD.ENC_START)应当只有当寄存器字段CTL.XIP_MODE是“0”时(MMIO模式)是可用的;当寄存器字段CTL.XIP_MODE是“1”时(XIP模式),则SW块从ENC_RESULT0、…、ENC_RESULT3读取应当返回“0”。
就性能而言,本文所述的技术依赖用于地址加密的AES类强加密算法和用于数据加密及解密的XOR类功能。这是有意的,因为数据路径中的额外延迟降低了读/写操作对外部存储器的存取等待时间。通过对地址而不是数据执行复杂、较长等待时间的AES类加密算法,任何额外的延迟可以被保持到最小或甚至完全避免。
下面的示例相对于可编程片上系统装置(诸如图5中的装置500)来说明这点。参考图5,假设微控制器500中的CPU 502的数据高速缓存器(例如,SRAM 512)错失AHB精简式(AHB-Lite)操作。这导致CPU 502将在内部总线522上放置到外部存储器控制器(例如,SMIF530)的SPI读操作。如由控制器530执行的,从外部存储器装置读取数据块的基于SPI的操作包括几个阶段。在第一阶段,读指令及其地址被传输到外部存储器装置。在最后阶段,所请求的数据块从外部存储器装置接收。这些阶段在图8中示出。根据时序图800,在时刻t0之前,控制器530通过内部总线522从CPU 502收到读指令(0xeb)及其24比特地址两者。随后,在时刻t0,控制器530初始化至外部存储器装置的SPI接口,并开始读指令(0xeb)的传送。其占用8个时钟周期,以在时刻t1完成在SPI接口上的读指令的传送。随后,在时刻t1,控制器530开始24比特指令地址的传送,并占用6个时钟周期在时刻t2完成地址在SPI接口上的传送。随后,在时刻t2,控制器530开始读操作模式的传送,并占用2个时钟周期在时刻t3完成所述读操作模式在SPI接口上的传送。随后,控制器530在时刻t3等待4个(空)时钟周期直到时刻t4,在此时刻,所请求的数据开始通过SPI接口从外部存储器装置返回。因此,到控制器530开始接收由读操作所请求的数据块为止,占用了20个时钟周期。因此,与这20个时钟周期并发的是(并且并行,前提是强加密恰好占用20个时钟周期),控制器530用强(例如,AES-128)加密算法加密用于读操作的地址,使得在时刻t4,控制器530可以以流水的方式对加密地址执行XOR操作,因为数据比特通过SPI接口被连续接收。图8中的示例SPI传送说明如果将明文地址PA[]加密成密文地址CA[](用于解密数据)所花的时间少于从外部存储器装置取得第一数据单元的时间,那么,加密不增加延迟。不过需要指出,如果强(例如,AES类)算法用于解密输入的密文数据块,那么,此类强解密算法将增加延迟!
一般来说,在各个实施例中,本文所述的技术的提供用于下列两种加密/解密机制:
·实施占用多个时钟周期的强加密的AES类算法;
·实施不增加时钟周期的弱加密/解密的XOR类功能。
通过使用对每种访问(例如,读或写操作)的数据块是不同的XOR模式(例如,CA[127:0])的“强AES”,XOR类功能的弱点得以克服并且数据流不会带来额外的延迟周期。
图9是说明实施本文所述的加密/解密技术的示例实施例的系统的框图。除了其他组件(未在图9中示出)以外,系统900还包括微控制器902,该微控制器耦合到四个外部存储器装置(906-a、906-b、906-c、906-d)和SD卡916,所有这些装置在容纳微控制器的芯片或芯片模块的外部(例如,片外)。例如,微控制器902、外部存储器装置906-a至906-d和SD卡916可以被布置在相同PCB板或等效结构上,并且可以通过PCB连线/焊垫、径迹线和/或任何其他类型的等效信号导通手段彼此耦合。
如图9所示,微控制器902和外部存储器装置906-a至906-d通过QSPI串行外设接口904耦合。QSPI接口904具有四个通道,每个通道耦合到外部存储器装置906-a、906-b、906-c和906-d中的一个。外部存储器装置906-a、906-b、906-c和906-d中的每个是扩大微控制器902的内部SRAM存储器的片外存储器。在各个实施例和实现方式中,外部存储器装置906-a、906-b、906-c和906-d中的每个(或全部)可以是片外NOR闪存模块、片外SRAM模块、片外nvSRAM模块和片外NAND闪存中的任何一个。SD卡916(其是可移除的)通过SD-SPI串行接口914耦合到微控制器902。
在根据本文所述技术的操作中,微控制器900(或其中的外部存储器控制器)被配置为基于秘密密钥对读和写操作在传输过程中执行加密和解密,所述读和写操作存取外部装置906-a、906-b、906-c、906-d和SD卡916中的数据。例如,对于针对目标外部装置(例如,存储器装置906-a、906-b、906-c、906-d和SD卡916中的一个)的读操作,微控制器900被配置为将用于读操作的地址加密成加密地址,并基于该加密地址解密从目标外部装置返回的数据块。在另一示例中,对于至目标外部装置(例如,存储器装置906-a、906-b、906-c、906-d和SD卡916中的一个)的写操作,微控制器900被配置为将用于写操作的地址加密成加密地址,以基于该加密地址加密写操作的数据块并在目标外部装置中存储加密数据块。
本文所述的加密/解密技术的各个实施例可以包括各种操作。这些操作可以通过硬件、固件或它们的组合来执行。如本文所使用的,术语“耦合”意指根据可能的情况直接连接,或在PCB连线/焊垫、开关、总线、插孔、径迹线和/或可编程互连件上通过一个或多个中间组件来间接连接。通过各种PCB连线/焊垫、开关、插孔、径迹和可编程互连件提供的任何信号可以是与其他信号时分多路复用的并且可以在一个或多个公共或专用总线和/或信号径迹上提供。每个总线可以另选包括一个或多个单信号径迹,并且一个或多个信号径迹可以另选执行总线的功能。
在前述说明书中,本发明已参考其特定示例性实施例进行了描述。不过很显然,在没有偏离所附权利要求中阐述的本发明的更宽广的实质和范围的情况下,可以对其做出各种更改和改变。因此,本说明书和附图应被视为是示例性的,而不是限制性的含义。

Claims (20)

1.一种装置,包括:
内部存储器,所述内部存储器被配置为存储密钥;以及
控制器,所述控制器被配置为通过串行接口与外部存储器装置通信,其中所述控制器被配置为至少:
通过串行接口将用于对所述外部存储器装置进行存取操作的地址传送到所述外部存储器装置;
用所述密钥将用于存取操作的所述地址加密以获得加密地址,所述加密与通过所述串行接口将地址传送到所述外部存储器装置并发;并且
基于所述加密地址加密或解密用于所述存取操作的数据块。
2.如权利要求1所述的装置,其中所述存取操作是读操作,并且所述控制器被配置为在所述控制器接收所述读操作之后和所述控制器从所述外部存储器装置接收所述数据块之前的多个时钟周期期间加密用于所述读操作的地址。
3.如权利要求2所述的装置,其中所述控制器被配置为解密所述数据块而无需使用除了所述多个时钟周期之外的任何时钟周期。
4.如权利要求1所述的装置,其中所述存取操作是写操作,并且所述控制器被配置为在所述控制器接收所述写操作之后和所述控制器向所述外部存储器装置传送所述数据块之前的多个时钟周期期间加密用于所述写操作的地址。
5.如权利要求4所述的装置,其中所述控制器被配置为加密所述数据块而无需使用除了所述多个时钟周期之外的任何时钟周期。
6.如权利要求1所述的装置,其中所述控制器被配置为加密用于所述存取操作的地址和加密或解密所述数据块而无需增加所述存取操作的等待时间。
7.如权利要求1所述的装置,其中所述控制器被配置为使用AES-128加密算法加密用于所述存取操作的地址。
8.如权利要求1所述的装置,其中所述控制器被配置为在就地执行XIP模式和存储器映射输入输出MMIO模式中的一种模式中操作。
9.如权利要求1所述的装置,其中所述装置是集成电路IC器件。
10.如权利要求1所述的装置,其中所述装置是微控制器,所述微控制器还包括中央处理单元CPU和耦合到所述CPU、所述内部存储器和所述控制器的内部总线。
11.一种方法,包括:
由控制器从存储器装置接收用于数据块的读操作,其中所述存储器装置通过串行接口与所述控制器耦合;
由所述控制器通过所述串行接口将用于对所述存储器装置进行读操作的地址传送到所述存储器装置;
通过所述串行接口将用于所述读操作的所述地址传送到所述存储器装置的同时,由所述控制器用密钥加密用于所述读操作的地址以获得加密地址;
由所述控制器从所述存储器装置接收所述数据块的加密副本;
由所述控制器用所述加密地址解密所述数据块的加密副本以获得所述数据块。
12.如权利要求11所述的方法,其中所述存储器装置是外部存储器装置,并且所述方法还包括所述控制器响应于所述读操作返回所述数据块。
13.如权利要求11所述的方法,其中,与所述控制器加密用于所述读操作的地址并发的是,向所述存储器装置传送所述地址和所述读操作的指令代码。
14.如权利要求11所述的方法,还包括:
在接收所述读操作之前,所述控制器接收将所述数据块写入所述存储器装置的写操作;
由所述控制器通过所述串行接口将用于对所述存储器装置进行写操作的地址传送到所述存储器装置;
通过所述串行接口传送用于写操作的所述地址到所述存储器装置的同时,由所述控制器用所述密钥加密用于所述写操作的所述地址以获得所述加密地址;
由所述控制器用所述加密地址加密所述数据块以获得所述数据块的加密副本;以及
由所述控制器在所述存储器装置中存储所述数据块的加密副本。
15.如权利要求14所述的方法,其中,与所述控制器加密用于所述写操作的地址并发的是,向所述存储器装置传送所述地址和所述写操作的指令代码。
16.如权利要求11所述的方法,其中,用于所述读操作的地址用具有等待时间的加密算法来加密,所述等待时间小于或等于所述控制器从所述存储器装置传送所述数据块的传送操作的等待时间。
17.一种系统,包括:
外部存储器装置,所述外部存储器装置存储用密钥加密的镜像;以及
控制器,所述控制器通过串行接口耦合到所述外部存储器装置,所述控制器被配置为至少执行以下操作:
通过所述串行接口将用于对所述外部存储器装置进行读操作的地址传送到所述外部存储器装置;
用所述密钥加密用于读操作的所述地址以获得加密地址,所述地址指定在所述镜像中的数据块,其中通过所述串行接口将所述地址传送到所述外部存储器装置的同时,所述地址被所述密钥加密;
从所述外部存储器装置接收所述数据块的加密副本;
用所述加密地址解密所述数据块的加密副本。
18.如权利要求17所述的系统,其中,所述镜像被加密并在所述外部存储器装置被布置在所述系统中之前存储在所述外部存储器装置中。
19.如权利要求17所述的系统,其中所述控制器被配置为当所述系统被激活时接收所述密钥并在内部存储器中存储所述密钥。
20.如权利要求17所述的系统,其中所述控制器耦合到多个外部存储器装置。
CN201510323222.1A 2014-06-20 2015-06-12 用于就地执行的存储器的加密方法 Active CN105279439B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462014860P 2014-06-20 2014-06-20
US62/014,860 2014-06-20
US14/580,753 US10169618B2 (en) 2014-06-20 2014-12-23 Encryption method for execute-in-place memories
US14/580,753 2014-12-23

Publications (2)

Publication Number Publication Date
CN105279439A CN105279439A (zh) 2016-01-27
CN105279439B true CN105279439B (zh) 2019-12-13

Family

ID=53483691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510323222.1A Active CN105279439B (zh) 2014-06-20 2015-06-12 用于就地执行的存储器的加密方法

Country Status (5)

Country Link
US (1) US10169618B2 (zh)
EP (1) EP2958264A1 (zh)
CN (1) CN105279439B (zh)
TW (1) TWI661304B (zh)
WO (1) WO2016053405A2 (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10192062B2 (en) 2014-06-20 2019-01-29 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
US10691838B2 (en) 2014-06-20 2020-06-23 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
US10296236B2 (en) * 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US10223289B2 (en) * 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US10142303B2 (en) * 2015-07-07 2018-11-27 Qualcomm Incorporated Separation of software modules by controlled encryption key management
US20170093823A1 (en) * 2015-09-25 2017-03-30 Vinodh Gopal Encrypting Observable Address Information
US20170300618A1 (en) * 2015-10-28 2017-10-19 Michael J O'Leary Collecting and Processing Medical Imagery
US10642617B2 (en) 2015-12-08 2020-05-05 Via Alliance Semiconductor Co., Ltd. Processor with an expandable instruction set architecture for dynamically configuring execution resources
US11061853B2 (en) * 2015-12-08 2021-07-13 Via Alliance Semiconductor Co., Ltd. Processor with memory controller including dynamically programmable functional unit
CN105790927B (zh) * 2016-02-26 2019-02-01 华为技术有限公司 一种总线分级加密系统
JP2017163280A (ja) 2016-03-08 2017-09-14 キヤノン株式会社 情報処理装置及び情報処理装置における暗号化ユニットの搭載判別方法、及びプログラム
US10185699B2 (en) * 2016-03-14 2019-01-22 Futurewei Technologies, Inc. Reconfigurable data interface unit for compute systems
US10992453B2 (en) * 2016-05-18 2021-04-27 International Business Machines Corporation System architecture for encrypting external memory
KR102588733B1 (ko) * 2016-05-30 2023-10-17 삼성전자주식회사 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법
EP3252651A1 (en) * 2016-05-30 2017-12-06 Samsung Electronics Co., Ltd Computing system having an on-the-fly encryptor and an operating method thereof
US11126565B2 (en) * 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
CN107656880B (zh) * 2016-10-28 2020-12-15 上海兆芯集成电路有限公司 具有包括动态可编程的功能单元的存储器控制器的处理器
US10438022B2 (en) * 2016-12-16 2019-10-08 Arm Limited Logic encryption using on-chip memory cells
US10896267B2 (en) * 2017-01-31 2021-01-19 Hewlett Packard Enterprise Development Lp Input/output data encryption
CN106599735B (zh) * 2017-02-13 2023-10-24 珠海格力电器股份有限公司 数据保护装置、方法以及存储控制器
US10534725B2 (en) * 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module
CN107590402A (zh) * 2017-09-26 2018-01-16 杭州中天微系统有限公司 一种存储数据加解密装置及方法
KR102445243B1 (ko) * 2017-10-23 2022-09-21 삼성전자주식회사 데이터 암호화 방법 및 그에 따른 전자 장치
FR3074936B1 (fr) * 2017-12-11 2020-08-14 Stmicroelectronics (Grenoble 2) Sas Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
CN108804221B (zh) * 2018-04-11 2020-09-11 百富计算机技术(深圳)有限公司 基于xip方式的嵌入式系统及其资源优化方法
JP7109992B2 (ja) * 2018-05-22 2022-08-01 キオクシア株式会社 メモリシステムおよび制御方法
GB201808834D0 (en) * 2018-05-30 2018-07-11 Nordic Semiconductor Asa Memory-efficient hardware cryptographic engine
US11258772B2 (en) * 2018-06-19 2022-02-22 Cypress Semiconductor Corporation Secured communication from within non-volatile memory device
CN110874476B (zh) * 2018-08-31 2024-03-22 阿里巴巴集团控股有限公司 数据处理系统、方法、存储介质和处理器
US10949547B2 (en) * 2018-10-05 2021-03-16 Google Llc Enclave fork support
US11244078B2 (en) 2018-12-07 2022-02-08 Nxp Usa, Inc. Side channel attack protection
US20220109556A1 (en) * 2019-01-30 2022-04-07 Sony Group Corporation Sensor device and encryption method
US11061670B2 (en) * 2019-03-05 2021-07-13 Marvell Asia Pte, Ltd. Dual-interface flash memory controller with execute-in-place cache control
KR102660388B1 (ko) * 2019-05-09 2024-04-26 에스케이하이닉스 주식회사 메모리 모듈, 메모리 모듈의 동작 방법, 메모리 시스템 및 메모리 모듈의 동작 방법
KR20200133062A (ko) * 2019-05-15 2020-11-26 삼성디스플레이 주식회사 디스플레이 구동 집적 회로 및 이를 포함하는 디스플레이 시스템
US11429751B2 (en) 2019-07-01 2022-08-30 Rajant Corporation Method and apparatus for encrypting and decrypting data on an integrated circuit
US11658808B2 (en) * 2019-08-21 2023-05-23 Arm Limited Re-encryption following an OTP update event
US11468178B1 (en) * 2019-09-27 2022-10-11 McIntire Solutions, LLC Embedded obfuscated channel cryptography
CN111400732B (zh) * 2020-03-12 2023-03-21 西安石油大学 一种基于usb通道的加解密模块及设备
CN111709039B (zh) * 2020-05-12 2023-04-28 杭州寰星电子科技有限公司 一种XIP方式运行Flash中加密程序的方法及系统
CN111931190B (zh) * 2020-08-25 2023-03-14 山东云海国创云计算装备产业创新中心有限公司 一种基于xip处理器系统的启动方法
TWI797934B (zh) * 2021-12-30 2023-04-01 新唐科技股份有限公司 微控制晶片及存取方法
CN114329361B (zh) * 2022-03-03 2022-05-27 北京芯愿景软件技术股份有限公司 存储装置和数据读取方法
CN115276816B (zh) * 2022-05-13 2023-07-14 西安电子科技大学 一种pwm信号自适应通信方法及装置
CN115994106B (zh) * 2023-02-17 2023-09-05 广州万协通信息技术有限公司 一种海量数据加解密方法、数据安全装置以及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938162B1 (en) * 1999-04-28 2005-08-30 Matsushita Electric Industrial Co., Ltd. Optical disk, optical disk recording and reproducing apparatus, method for recording, reproducing and deleting data on optical disk, and information processing system
US8726037B2 (en) * 2011-09-27 2014-05-13 Atmel Corporation Encrypted memory access

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812671A (en) 1996-07-17 1998-09-22 Xante Corporation Cryptographic communication system
US5825878A (en) 1996-09-20 1998-10-20 Vlsi Technology, Inc. Secure memory management unit for microprocessor
US5995628A (en) 1997-04-07 1999-11-30 Motorola, Inc. Failsafe security system and method
US6272637B1 (en) * 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6523118B1 (en) 1998-06-29 2003-02-18 Koninklijke Philips Electronics N.V. Secure cache for instruction and data protection
US6701432B1 (en) * 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6278633B1 (en) 1999-11-05 2001-08-21 Multi Level Memory Technology High bandwidth flash memory that selects programming parameters according to measurements of previous programming operations
DE10050212A1 (de) 2000-10-11 2002-04-25 Infineon Technologies Ag Verfahren und integrierte Schaltung zum Testen eines Speichers mit mehreren Speicherbänken
JP2002328845A (ja) 2001-05-07 2002-11-15 Fujitsu Ltd 半導体集積回路及びicカードのセキュリティー保護方法
US7386717B2 (en) 2002-03-07 2008-06-10 Intel Corporation Method and system for accelerating the conversion process between encryption schemes
US6715085B2 (en) 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
KR100474526B1 (ko) * 2002-07-19 2005-03-10 매그나칩 반도체 유한회사 외부 프로그램 코드를 보호할 수 있는 컨트롤 시스템
DE10254320A1 (de) * 2002-11-21 2004-06-03 Philips Intellectual Property & Standards Gmbh Schaltungsanordnung mit nicht-flüchtigem Speichermodul und Verfahren zum Ver-/Entschlüsseln von Daten des nicht-flüchtigen Speichermoduls
US7472285B2 (en) 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
US8060756B2 (en) * 2003-08-07 2011-11-15 Rao G R Mohan Data security and digital rights management system
US7636857B2 (en) 2004-05-24 2009-12-22 Interdigital Technology Corporation Data-mover controller with plural registers for supporting ciphering operations
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
CN1279458C (zh) 2004-08-03 2006-10-11 威盛电子股份有限公司 数据加密/解密方法及其装置
US20060059369A1 (en) 2004-09-10 2006-03-16 International Business Machines Corporation Circuit chip for cryptographic processing having a secure interface to an external memory
US7779269B2 (en) * 2004-09-21 2010-08-17 Ciena Corporation Technique for preventing illegal invocation of software programs
US7242218B2 (en) 2004-12-02 2007-07-10 Altera Corporation Techniques for combining volatile and non-volatile programmable logic on an integrated circuit
US8189786B2 (en) * 2005-05-25 2012-05-29 Zenith Electronics Llc Encryption system
WO2006131921A2 (en) * 2005-06-08 2006-12-14 Discretix Technologies Ltd. Method, device, and system of maintaining a context of a secure execution environment
GB2431254A (en) * 2005-10-11 2007-04-18 Hewlett Packard Development Co Data transfer system
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
US20070180271A1 (en) * 2006-02-02 2007-08-02 Ibm Corporation Apparatus and method for providing key security in a secure processor
CN1808207A (zh) * 2006-02-09 2006-07-26 南京艾迪尔科技有限公司 便携式天文望远镜自动寻星控制装置及其控制方法
JP2007304847A (ja) 2006-05-11 2007-11-22 Megachips Lsi Solutions Inc メモリ装置
US7519830B2 (en) 2006-08-03 2009-04-14 Motorola, Inc. Secure storage of data
US7912223B2 (en) * 2006-09-29 2011-03-22 Hitachi, Ltd. Method and apparatus for data protection
US8327158B2 (en) * 2006-11-01 2012-12-04 Texas Instruments Incorporated Hardware voting mechanism for arbitrating scaling of shared voltage domain, integrated circuits, processes and systems
US20080165973A1 (en) * 2007-01-09 2008-07-10 Miranda Gavillan Jose G Retrieval and Display of Encryption Labels From an Encryption Key Manager
JP2008299611A (ja) * 2007-05-31 2008-12-11 Toshiba Corp メモリセキュリティ装置
JP4865694B2 (ja) * 2007-12-28 2012-02-01 ラピスセミコンダクタ株式会社 プロセッサ装置
US8477946B2 (en) 2008-02-27 2013-07-02 International Business Machines Corporation Method and apparatus for protecting encryption keys in a logically partitioned computer system environment
US8522354B2 (en) 2008-05-24 2013-08-27 Via Technologies, Inc. Microprocessor apparatus for secure on-die real-time clock
JP5319238B2 (ja) * 2008-10-29 2013-10-16 真二 栗本 情報処理システム、情報処理装置、情報処理方法、および情報処理プログラム
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8745411B2 (en) 2008-11-07 2014-06-03 Broadcom Corporation Protecting external volatile memories using low latency encryption/decryption
US20100128874A1 (en) 2008-11-25 2010-05-27 Scott-Nash Mark E Encryption / decryption in parallelized data storage using media associated keys
US20100161895A1 (en) * 2008-12-22 2010-06-24 Qualls William R Securing data on data cartridges
US8626990B2 (en) * 2008-12-30 2014-01-07 Micron Technology, Inc. Non-volatile configuration for serial non-volatile memory
US8555082B1 (en) 2009-04-01 2013-10-08 Marvell International Ltd. Securing external memory data
US9600421B2 (en) 2009-05-20 2017-03-21 Conexant Systems, Inc. Systems and methods for low-latency encrypted storage
US8578175B2 (en) 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US8560798B2 (en) * 2009-07-30 2013-10-15 Cleversafe, Inc. Dispersed storage network virtual address space
US20110154061A1 (en) 2009-12-21 2011-06-23 Babu Chilukuri Data secure memory/storage control
US8549367B1 (en) * 2010-12-29 2013-10-01 Cadence Design Systems, Inc. Method and system for accelerating memory randomization
US9164924B2 (en) * 2011-09-13 2015-10-20 Facebook, Inc. Software cryptoprocessor
EP2653992A1 (en) 2012-04-17 2013-10-23 Itron, Inc. Microcontroller configured for external memory decryption
KR101975027B1 (ko) 2012-05-04 2019-05-03 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
CN202870835U (zh) 2012-06-13 2013-04-10 福建睿矽微电子科技有限公司 一种芯片片外ram总线接口硬件加密装置
US8874916B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Introduction of discrete roots of trust
US20140281587A1 (en) 2013-03-14 2014-09-18 Ologn Technologies Ag Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
US9274979B2 (en) 2013-11-27 2016-03-01 Nvidia Corporation System, method, and computer program product for optimizing data encryption and decryption by implementing asymmetric AES-CBC channels
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
US9614666B2 (en) 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US9524249B2 (en) 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
US9954681B2 (en) 2015-06-10 2018-04-24 Nxp Usa, Inc. Systems and methods for data encryption
US10715501B2 (en) 2016-10-26 2020-07-14 Intel Corporation Providing secure data transmission over a universal serial bus (USB) interface

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938162B1 (en) * 1999-04-28 2005-08-30 Matsushita Electric Industrial Co., Ltd. Optical disk, optical disk recording and reproducing apparatus, method for recording, reproducing and deleting data on optical disk, and information processing system
US8726037B2 (en) * 2011-09-27 2014-05-13 Atmel Corporation Encrypted memory access

Also Published As

Publication number Publication date
EP2958264A1 (en) 2015-12-23
WO2016053405A3 (en) 2016-05-26
US20150371063A1 (en) 2015-12-24
TW201617899A (zh) 2016-05-16
TWI661304B (zh) 2019-06-01
CN105279439A (zh) 2016-01-27
US10169618B2 (en) 2019-01-01
WO2016053405A2 (en) 2016-04-07

Similar Documents

Publication Publication Date Title
CN105279439B (zh) 用于就地执行的存储器的加密方法
US10192062B2 (en) Encryption for XIP and MMIO external memories
US10691838B2 (en) Encryption for XIP and MMIO external memories
TWI545436B (zh) 用於安全記憶體管理之積體電路及方法
EP2803012B1 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
CN107451072B (zh) 具有即时加密器的计算系统及其操作方法
KR20150143708A (ko) 스토리지 디바이스 보조 인라인 암호화 및 암호해독
US20220197825A1 (en) System, method and apparatus for total storage encryption
TWI506638B (zh) 用於非揮發性半導體記憶體之介面管理控制系統及方法
US11301153B2 (en) High-throughput out-of-order cipher text stealing
US9798901B2 (en) Device having a security module
US11429751B2 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
US10776294B2 (en) System architecture with secure data exchange
US20210006391A1 (en) Data processing method, circuit, terminal device and storage medium
US20220382675A1 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US10164770B1 (en) Pipelined data cryptography device and method
KR101126596B1 (ko) 단일 및 다중 aes 동작을 지원하기 위한 듀얼 모드 aes 장치 및 방법
KR102588733B1 (ko) 온-더-플라이 인크립터를 갖는 집적회로, 그것을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법
JP2023542936A (ja) チャネル暗号化区別のためのメタデータ調整(metadata tweak)
TWI835604B (zh) 資料加解密系統及資料加解密方法
JP2024080689A (ja) 認証済みメモリデバイスアクセストランザクションを伴う方法、デバイスおよびシステム
KR20230032429A (ko) 메모리 장치 및 메모리 장치의 데이터 암복호화 방법
CN118131984A (zh) 具有经认证的存储器设备访问事务的方法、设备和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant