CN1836220B - 具有降低的解密延迟的存储器加密的装置和方法 - Google Patents
具有降低的解密延迟的存储器加密的装置和方法 Download PDFInfo
- Publication number
- CN1836220B CN1836220B CN2004800177114A CN200480017711A CN1836220B CN 1836220 B CN1836220 B CN 1836220B CN 2004800177114 A CN2004800177114 A CN 2004800177114A CN 200480017711 A CN200480017711 A CN 200480017711A CN 1836220 B CN1836220 B CN 1836220B
- Authority
- CN
- China
- Prior art keywords
- initialization vector
- page
- data
- leaf
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
一种具有减小的解密延迟的存储器加密的方法和装置。在一个实施例中,该方法包括从存储器中读取加密的数据块。在读取加密的数据块期间,根据一个或多个存储的加密数据块的标准重新产生用于加密数据块的密钥流。一旦读取了加密的数据块,则利用重新产生的密钥流来解密所加密的数据块。因此,在一个实施例中,对随机存取存储器(RAM)或盘存储器执行加密。在数据检索期间重新产生密钥流,这样一旦接收到数据,则可以利用一个单时钟操作来解密数据。因此,存储器加密是在不加剧处理器和存储器之间的存储器延迟的情况下执行的。
Description
技术领域
本发明的一个或多个实施例一般涉及密码学领域。更具体而言,本发明的一个或多个实施例涉及一种具有降低的解密延迟(latency)的存储器加密的方法和装置。
背景技术
因特网的迅速发展已经引起通常称为因特网商务或电子商务的新型商务的产生。电子商务使用户能够在通过因特网连接的全世界范围内销售和购买物品。这所增添的简易性,外加现代计算机的不断降低的成本和日益增长的处理速度,已经导致个人计算机(PC)普及到世界范围内的许多家庭中。遗憾的是,世界范围内许多家庭中PC的快速发展以及用于电子商务的这种PC的使用通常造成在计算机内存储敏感信息。
结果,计算机用户变得易受想要获得对在个人计算机内装载的保密信息的访问的欺诈代理(rogue agent)的影响。为了防止各种欺诈代理获得对保密信息的访问,许多计算机系统使用某种形式的密码以便防止对敏感信息的访问。正如本领域技术人员所公知的,密码术提供了一种保密信息的技术,以用于确定信息尚未被窜改以及用于确定谁创建了多条信息。
一种形式的密码术包括公共或私有密钥系统,其中所传送的信息在传送之前被加密,并由接收者利用公共或私有密钥来解密。然而,一旦敏感信息到达其指定位置,那么信息通常就被解密并存储。换句话说,敏感信息在其目的地并没有以安全的格式进行保持。因此,在PC运行过程中,欺诈代理有可能获得对PC的访问并获得对敏感信息的访问。
而且,电子商务的迅速发展已引起诸如电影和音乐之类的媒体应用程序的出现,其可以被下载到PC中以供一次性的使用或供一段预定时间的使用。遗憾的是,在没有某种机制来保护这种媒体应用程序的内容不被欺诈代理访问的情况下,与媒体应用程序相关的电子商务对媒体提供者可以是禁止的。有可能用于保护计算机系统的敏感信息的一种技术是存储器加密。遗憾的是,由于目前在处理器和存储器之间存在瓶颈,所以目前存储器加密并未在现代计算机系统内部执行。
尽管处理器速度响应于媒体和图形应用程序增长的需求而不断提高,但是存储器性能的提高并没有赶上处理器时钟周期的减少。如果处理器性能要继续提高的话,则存储器延迟或访问数据单元所需要的时间,外加这种媒体和图形应用程序的日益增长的带宽,这些问题需要创新的存储器体系结构。因此,通过例如微处理器来执行存储器加密是不可行的,因为在读操作中的存储器加密将引入除当前在处理器和存储器之间存在的瓶颈之外的延迟。
发明内容
为克服上述问题,根据本发明的第一方面,提供了一种用于具有降低的解密延迟的存储器加密的方法,包括:
从存储器中读取加密的数据块;
在读取加密的数据块期间,采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据一个或多个存储的数据块的标准来重新产生用于加密数据块的密钥流;以及
一旦完成对加密的数据块的读取,则根据产生的密钥流来解密所加密的数据块。
优选地,其中读取加密的数据块包括:
接收对加密的数据块的请求;以及
从随机存取存储器中读取加密的数据块。
优选地,其中重新产生密钥流包括:
根据包含加密的数据块的页来识别用于加密数据块的初始化向量的起始部分;
根据数据块的块号来识别用于加密数据块的初始化向量的剩余部分;以及
根据识别的初始化向量的起始部分和识别的初始化向量的剩余部分以及秘密密钥来重新计算密钥流。
优选地,其中重新产生密钥流包括:
根据包含加密的数据块的页和加密的数据块的块号从包含一个或多个唯一页初始化向量的片内数据结构中选择页初始化向量值;
根据加密的数据块的块号来选择所存储的C位计数器值;
根据所选择的页初始化向量值、C位计数器值和加密的数据块的块地址的N-C个最高有效位来重新形成用于加密数据块的初始化向量,其中所述块地址是N位地址;以及
利用秘密密钥来加密所形成的初始化向量以形成密钥流。
优选地,其中解密所加密的数据块是在一个单时钟周期内执行的。
根据本发明的第二方面,提供了一种用于具有降低的解密延迟的存储器加密的方法,包括:
根据一个或多个数据块的标准来计算数据块的初始化向量;
存储用于计算数据块的初始化向量的数据块的标准;
采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据初始化向量和秘密密钥来计算密钥流;
根据密钥流加密数据块;以及
将加密的数据块存储在存储器内。
优选地,其中计算初始化向量包括:
接收对数据块的写入请求;
识别包含数据块的页;
响应于所述写入请求,当前初始化向量值用于参考页初始化向量来产生块初始化向量值;以及
将当前页写入计数器值用作块计数器值。
优选地,其中计算初始化向量包括:
接收对数据块的写入请求;
识别包含该数据块的页和该页内数据块的块号;
根据包含加密数据块的页和数据块的块号来选择存储的页初始化向量值;
根据加密数据块的块号来选择存储的C位计数器值;以及
根据页初始化向量值、C位计数器值和加密数据块地址的N-C个最高有效位来形成初始化向量。
优选地,其中根据页初始化向量值、C位计数器值和加密数据块地址的N-C个最高有效位来形成初始化向量包括:
确定是否接收到写入请求;
如果接收到写入请求,则识别包含所请求数据块的页和所请求数据块的块号;
根据包含数据块的页形成页初始化向量;以及
根据数据块的块号形成块初始化向量。
优选地,在形成初始化向量之后还包括以下步骤:
利用秘密密钥来加密所形成的初始化向量以形成密钥流。
优选地,其中计算密钥流包括:
向流密码和块密码之一提供初始化向量和秘密密钥以产生密钥流。
优选地,所述方法进一步包括:
识别具有最近最少使用的页初始化向量的数据块;
根据包含所识别数据块的页的当前初始化向量值,利用来自页初始化向量的不同页初始化向量替换旧初始化向量的页初始化向量部分,以形成新的初始化向量;以及
根据从新的初始化向量和秘密密钥产生的密钥流来重新加密所识别的数据块。
优选地,其中根据包含加密数据块的页和数据块的块号来选择存储的页初始化向量值包括:
识别用于选择初始化向量的页初始化向量部分的页计数器值;
一旦识别页计数器值,则识别用于形成初始化向量的块初始化向量部分的块计数器值;
一旦识别块计数器值,则根据数据块的块号将页计数器值和块计数器值存储在加密页结构内。
根据本发明的第三方面,提供了一种处理器,包括:
存储器加密模块,用于存储用来计算数据块的初始化向量的一个或多个数据块的标准,根据从初始化向量和秘密密钥计算的密钥流来加密数据块,并将加密的数据块存储在存储器内;以及
存储器解密模块,用于在读取加密的数据块期间,采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据一个或多个存储的数据块的标准来重新产生用于加密数据块的密钥流,并利用重新产生的密钥流来解密所加密的数据块。
优选地,其中所述处理器进一步包括:
含有加密页结构的存储器,该加密页结构具有:页初始化向量,其包含在形成初始化向量时使用的一个或多个唯一初始化向量值;计数器模块,包括当前初始化向量值和各页的页写入计数器值;以及块计数器,其用于存储块初始化向量值和块计数器值,以便能够重新形成初始化向量,从而所述初始化向量用来重新计算密钥流以便在存储器读操作期间对所存储的密文进行解密。
优选地,其中加密模块进一步包括:
重编码模块,用于识别具有最近最少使用的页初始化向量部分的数据块,为所识别的页初始化向量重新计算唯一的页初始化向量,以及根据从唯一的初始化向量和秘密密钥产生的密钥流来重新加密所识别的数据块。
优选地,其中解密模块利用异或操作在一个单时钟周期内解密所加密的数据块。
优选地,其中存储器是随机存取存储器和盘存储器之一。
根据本发明的第四方面,提供了一种用于具有降低的解密延迟的存储器加密的系统,包括:
随机存取存储器RAM;
与存储器耦合的芯片组;以及
与芯片组耦合的处理器,该处理器包括:
存储器加密模块,用于存储用来计算数据块的初始化向量的一个或多个数据块的标准,根据初始化向量和秘密密钥计算出的密钥流来加密数据块,并将加密的数据块存储在存储器内;以及
存储器解密模块,用于在从存储器读取加密的数据块期间,采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据一个或多个存储的数据块的标准来重新产生用于加密数据块的密钥流,并利用重新产生的密钥流来解密所加密的数据块。
优选地,其中所述处理器进一步包括:
含有加密页结构的存储器,该加密页结构具有:页初始化向量,其包含在形成初始化向量时使用的一个或多个唯一初始化向量值;计数器模块,包括当前初始化向量值和各页的页写入计数器值;以及块计数器,其用于存储块初始化向量值和块计数器值,以便能够重新形成初始化向量,从而所述初始化向量用来计算密钥流以便在存储器读操作期间对所存储的密文进行解密。
优选地,其中加密模块进一步包括:
重编码模块,用于识别具有最近最少使用的页初始化向量部分的数据块,利用当前页初始化向量来替换所识别的页初始化向量部分,以及根据由当前页初始化向量和秘密密钥产生的密钥流来重新加密所识别的数据块。
优选地,其中解密模块利用异或操作在一个单时钟周期内解密所加密的数据块。
优选地,其中随机存取存储器是双倍数据速率DDR同步数据随机存取存储器SDRAM。
本发明能有效地克服现有技术中所存在的问题。
附图说明
在附图的图中通过说明而非限制的方式来说明本发明的各种实施例,其中:
图1是根据本发明一个实施例的说明包括具有存储器加密/解密逻辑的处理器的计算机系统的框图,该存储器加密/解密逻辑能够进行具有降低的解密延迟的存储器加密。
图2是根据本发明另一个实施例的进一步说明如图1中所述的处理器的框图。
图3是根据本发明另一个实施例的进一步说明如图2中所述的处理器、存储器加密/解密逻辑以及加密页结构的框图。
图4是根据本发明另一个实施例的进一步说明如图2中所述的处理器、存储器加密/解密逻辑以及加密页结构的框图。
图5是根据本发明一个实施例的说明初始化向量(initializationvector)重编码逻辑的框图。
图6是根据本发明一个实施例的说明一种用于解密从存储器中读取的加密数据块的方法的流程图。
图7是根据本发明另一个实施例的说明一种用于产生密钥流以解密从存储器中读取的加密数据块的方法的流程图。
图8是根据本发明一个实施例的说明一种用于产生密钥流以解密从存储器中读取的加密数据块的方法的流程图。
图9是根据本发明一个实施例的说明一种用于在将数据块写入存储器之前加密数据块的方法的流程图。
图10是根据本发明一个实施例的说明一种用于在将数据块写入存储器之前计算初始化向量以形成密钥流来加密数据块的方法的流程图。
图11是根据本发明另一个实施例的说明一种用于在将数据块写入存储器之前计算初始化向量以形成密钥流来加密数据块的方法的流程图。
图12是根据本发明一个实施例的说明一种用于存储初始化向量的分量以重新形成初始化向量来解密所加密的数据块的方法的流程图。
图13是根据本发明一个实施例的说明一种用于重编码初始化向量的方法的流程图。
图14是说明使用所公开的技术用于设计的仿真、模拟和制造的各种设计表示或格式的框图。
具体实施方式
下面描述了一种具有降低的解密延迟的存储器加密的方法和装置。在一个实施例中,该方法包括从存储器中读取加密的数据块。在读取加密的数据块期间,用于加密数据块的密钥流是根据一个或多个存储的加密数据块标准而重新产生的。一旦加密的数据块被读取,则利用重新产生的密钥流解密所加密的数据块。因此,在一个实施例中,对随机存取存储器(RAM)或盘存储器(disk memory)进行加密。在数据检索期间重新产生密钥流,使得一旦收到数据就可以利用一个单时钟操作来解密数据。因此,存储器加密是在不加剧处理器与存储器之间的存储器延迟的情况下执行的。
在以下描述中,某些术语用于描述本发明实施例的特征。例如,术语“逻辑”表示配置为执行一个或多个功能的硬件和/或软件。例如,“硬件”的例子包括但不限制或局限于集成电路、有限状态机或甚至组合逻辑。集成电路可以采取诸如微处理器、专用集成电路、数字信号处理器、微控制器等之类的处理器的形式。
“软件”的例子包括以应用程序、小程序(applet)、例行程序或甚至一系列指令形式的可执行代码。软件可以被存储在任何类型的计算机或机器可读介质中,例如可编程电子电路、包括易失性存储器(例如随机存取存储器等)和/或非易失性存储器(例如任何类型的只读存储器“ROM”、闪存)在内的半导体存储设备、软盘、光盘(例如致密盘或数字视频盘“DVD”)、硬驱动器盘、磁带等。在一个实施例中,本发明可以被提供为一种产品,其可以包括具有存储在其上的指令的机器或计算机可读介质,所述指令可以用于编程计算机(或其他电子设备)以根据本发明的一个实施例来执行过程。
系统
图1是说明根据本发明一个实施例的计算机系统100的框图,该计算机系统100包括存储器加密/解密逻辑200。计算机系统100包括处理器系统总线(前端总线(FSB))102,用于在通过FSB 102连接在一起的处理器(CPU)110和芯片组180之间传送信息。如在此所述,术语“芯片组”以本领域普通技术人员公知的方式进行使用以总体地描述与CPU 110连接的执行所需系统功能的多种设备。
芯片组180被连接到主存储器140和一个或多个图形设备。在一个实施例中,主存储器110是易失性存储器,包括但不限于随机存取存储器(RAM)、同步RAM(SRAM)、双倍数据速率(DDR)、S Data RAM(SDRAM)、RAM总线数据RAM(RDRAM)等。另外,硬盘驱动设备(HDD)150以及一个或多个输入/输出(I/O)设备170(170-1,...,170-N)也被连接到芯片组180。如所说明的,CPU 110包括存储器加密/解密逻辑200,将参考图2对其进行进一步描述。
图2根据本发明的一个实施例进一步说明CPU 110来说明具有降低的解密延迟的存储器加密。CPU 110包括处理器内核112,CPU 110可以包括例如可回写高速缓存130,以及用于高速地暂时存储数据的一级(L1)高速缓存114。另外,处理器或CPU 110可以包括二级(L2)高速缓存120。如所说明的,L2高速缓存120是经由例如后端总线118连接到后端总线单元116的片外存储器。同样,CPU 110包括用于与FSB 102连接的外部单元104,如图1所示。
然而,与常规的CPU对比,CPU 110包括存储器加密/解密逻辑200。在一个实施例中,逻辑200使CPU 110能够利用密码算法安全地加密例如易失性存储器如主存储器140的内容,如图1所示。由块密码算法提供的安全性包括两个彼此相反的过程:加密和解密。加密是将称为明文的可用信息转换为称为密文的不可读形式。相反,解密是从密文恢复明文的转换。
在一个实施例中,存储器解密是通过在存储器读取加密的数据块(密文)期间进行密钥流的重新产生而提供的。一旦密文是可用的,则在例如一个单时钟周期内利用重新产生的密钥流来解密密文。因此,当对在例如RAM、盘存储器等内部包含的数据实现加密时,最小程度地加剧在处理器和主存储器之间固有的存储器延迟。根据本发明的一个实施例,参考图3进一步说明加密/解密逻辑200以及加密页结构250。
图3说明根据本发明一个实施例的用于存储器读取解密操作的实施例中的逻辑200。如所说明的,逻辑200包括密码逻辑230以根据秘密密钥232产生密钥流234,以及初始化向量(IV)220。一旦形成密钥流,则逻辑200利用XOR块240对密钥流234和密文202执行逻辑异或操作(XOR)以形成明文204。在一个实施例中,密码逻辑230例如是高级加密标准(AES)、密码蛇(cipher serpent)或其他类似的对称块密码算法。
存在两种基本类型的对称加密/解密算法:块密码和流密码。块密码作用于由例如N位组成的明文和密文的块。相反,流密码一次一位或一个字节地作用于明文和密文的流。对于块密码,利用相同的密钥,相同的明文块总是加密为相同的密文块。相反,当每次使用流密码加密明文时,相同的明文字节或位将加密为不同的位或字节。这种差异的产生是由于块密码采用秘密密钥和明文值,并运行许多轮(round)的密码来直接产生密文。
相反,块密码解密采用相同的密钥和密文,并运行许多轮相反的密码来产生明文。一般而言,在这两种情况下执行的许多轮密码会花费大量的时间,因此由于处理器和存储器之间固有的延迟而不适于存储器读取解密。因此,在所描述的实施例中,密码逻辑230使用减少数量的轮来匹配存储器读取延迟,而仍提供足够的安全。换句话说,支持加密模式的块密码用作密码逻辑230,所述加密模式用于在从存储器中取出数据所需的时间内产生密钥流。在可替换的实施例中,流密码可以用于密码逻辑230。
正如本领域普通技术人员所公知的,流密码使用秘密密钥和可能的初始化向量(IV)或可以改变的公用值,并运行某一函数以产生密钥流。一旦产生了密钥流,则密钥流和明文相结合以在一个单时钟操作之内产生密文。相反地,流密码解密包括在与加密相同状态下重新运行密码以产生相同的密钥流。利用逆操作将密钥流与密文结合来产生明文。
再次参考图3,密码逻辑230的输入是秘密密钥232,该秘密密钥232例如可由CPU 110在初始启动期间产生,并被保持到断开电源(当不再需要存储器内容时)。IV 220用于明文的加密和相应的密文的解密,尽管IV 220与必须保密的密钥232对比不必被保密。为了有效地使用密码逻辑230来提供最佳的安全性,需要不可预测的初始化向量。换句话说,在此所描述的密码逻辑230需要作为NONCE的IV(即在给定密钥的情况下IV对于模式的每次执行必须是唯一的)。
在一个实施例中,密码逻辑230可以根据计数器模式(CTR)运行,其特征在于将正向密码(forward cipher)应用到称为计数器的一组输入块以产生输出块的序列,这些输出块与明文在逻辑上结合(XOR)来产生密文,反之亦然。产生唯一的IV是需要的,因为如果明文块是利用已知的IV值进行加密的,那么正向密码函数的输出容易根据相关的密文进行确定。该输出允许利用相同的IV从其相关的密码块容易地恢复加密的任何其它明文块。因此,为了产生唯一的IV,在一个实施例中提供了加密页结构260。
如图3所说明的,加密页结构260被设计为存储每页的一个或多个计数器以及在存储系统内的每个数据块,比如图1所说明的存储器140,其被存储在例如计数器逻辑290中。在所说明的实施例中,计数器块290可以包括例如用于跟踪指定页的页写入的数量的页写入计数器(PWC),以及当前初始化向量值(IVC)。在使用当前初始化向量值IVC的实施例中,存储系统内的每一页可以被指定一组V个初始化向量,其是利用例如随机数发生器(未示出)形成的。在这样的实施例中,IV被存储在诸如页IV(PIV)块280(280-1,...,280-N)之类的数据结构中,该数据结构包括用于每页的预定数目的唯一值以能够为每次执行产生唯一IV。
如上所述,需要产生唯一的IV以提供最佳的安全性并阻止对初始化向量的预测。一种用于产生对每次执行唯一的IV的技术是为每次存储器写入产生新的IV。遗憾的是,根据IV关于高速缓存块大小的相对大小,IV会占去多达原始数据的50-100%的空间。结果,由于为每次写入产生新的IV所引起的空间限制,所以新的IV不能被存储在暂时存储器(高速缓冲存储器)的片内(on-chip)。
因此,对于从存储器的每次读操作,必须执行独立的读取以定位用于加密数据的片外IV。因此,必须在能够产生密钥流来解密从加密存储器中读取的数据之前执行该独立的读取操作。遗憾的是,该独立的读取会进一步加剧处理器和存储器之间已经存在的延迟,因而不是一个适合的解决方案。
因此,在一个实施例中,页级表(page level table)用于存储在为页中所有高速缓存块形成初始化向量时所使用的减少数量的例如64位随机数(“页IV”)。因此,当在片内存储器中提供对PIV的存储并取消上述的附加读取时,通过利用减少数量的64位PIV,64位PIV用于对每次写入形成唯一的IV。
因此,响应于存储器读取操作,根据地址210经由例如外部总线单元104(图2)向存储器请求加密的数据块。例如基于页地址来查询加密页结构260以在例如PIV 280内识别相应的页。另外,通过诸如块IV计数器(BC)270(270-1,...,270-N)之类的数据结构提供PIV 280的索引(index)。在一个实施例中,BC 270存储例如包括PWC值以及初始化向量索引或IVC值的二维数据结构。
因此,基于页地址以及块地址,BC 270向PIV 280提供索引以提供在明文204的加密过程中存储的块IV值282以及块计数器值274来形成IV 220。在另一个实施例中,初始化向量220包括页地址212和块地址214的N-C位最高有效位(MSB),其中N表示地址的位长,而C表示块计数器值274的位长。在一个实施例中,P是log2(页中的字节数),C是log2(高速缓存块中的字节数),N是(P-C),或N是log2(页中高速缓存块的数量)。基于该信息,形成提供给密码逻辑230的唯一IV 220以产生密钥流234。
如图4所说明的,计数器逻辑290包括例如每页的PWC值和当前IVC值。因此,响应于明文204的写入请求,当前IVC值用于参考PIV 280来产生块IV值282。另外,当前PWC值用作块计数器值274。在一个实施例中,根据明文204的块号,将块IV值282和块计数器值274都存储在BC 270内。
在一个实施例中,块地址214的N-C个最高有效位以及页地址212完成了IV 220的形成。因此,使用计数器值结合页初始化向量的再使用,IV 220被保证对每次重复是唯一的,而不必在片外存储IV。因此,利用IV 220,流密码250使用IV 220以及秘密密钥232产生密钥流252。一旦产生密钥流252,则利用例如XOR逻辑240将密钥流252和明文204组合来形成密文202。一旦形成密文,则将密文202提供给外部总线单元104,其根据地址210将密文写入存储器。
在另一个实施例中,如参考图5所说明的,IV重编码逻辑300负责检测数据块的IV 220是否是旧的(stale)。在一个实施例中,重编码逻辑300负责确保为每次写入操作产生唯一的IV以防止越权的数据解密。因此,页IV所需的存储量可以限制为常数值。另外,重编码具有旧IV的数据所需要的额外读取和写入量可以通过增加PIV的数量(V)而减少。
在一个实施例中,这是通过识别具有最老或最近最少使用的IV220的数据块而执行的。当检测到该数据块时,利用例如旧IV逻辑320,重编码逻辑330可以选择新的IV 332并利用密码逻辑230和密码逻辑250重编码(重新加密)所识别的数据块来形成密文202。在一个实施例中,新的IV 332是这样产生的:根据包含所识别数据块的页的IVC272当前值,利用来自PIV 280的不同页IV 220替换旧IV的页IV部分。在一个实施例中,块密码230(图5)是流密码250的另一个实例,从而相同流密码将被解密和重新加密。在一个实施例中,重编码具有旧IV的数据可以由软件或微代码中断例行程序通过在需要重编码时使重编码逻辑330出现异常来执行。因此,重编码逻辑可以简化为执行具有旧IV的数据的检测和中断的发出。在一个实施例中,数据重编码随时间展开,以使每次写入操作执行至多一个重编码。
在可选实施例中,重编码可以被安排在存储器管线的空槽(slot)中。因此,通过使用减少数量的页初始化向量结合重编码逻辑330,与数据的存储需求相比,存储IV值所需要的空间量是非常小的,从而实现IV的片内存储,使得不需要片外IV的附加读取操作来实现好的系统安全性。
因此,将旧IV 220提供给密码逻辑230来解密密文202以产生明文204。同时,将新IV 332提供给密码逻辑250以产生用于重新加密明文204的密钥流254。因此,重编码逻辑330通过防止预测IV 220来提供附加的安全特性。在一个实施例中,这是在旧IV逻辑320内利用下面的公式执行的:
BC[PWC]=(IVC+1)mod V (1)
因此,所述实施例通过下述来保持密码逻辑的性能和安全特性:为每次写入产生新的初始化向量,同时通过重编码旧数据来最小化用于初始化向量的附加的存储需求,使得旧初始化向量不需要被保存。现在描述用于实现本发明实施例的过程的方法。
操作
图6是根据本发明一个实施例的说明一种用于解密所加密的存储块的具有减少的解密延迟的方法400的流程图。在一个实施例中,方法400是在例如图3所示的加密/解密逻辑200内执行的。在过程块402,例如响应于对加密数据块的请求,从存储器中读取加密数据块(密文)。在一个实施例中,所述存储器是例如RAM或非易失性存储器。可替换地,存储器被认为是例如图1的HDD 150内的盘存储器。
正如本领域普通技术人员所公知的,计算机系统表现出处理器和存储系统之间大量的存储器延迟。该延迟阻止常规计算机系统提供处理器存储器加密。然而,与常规系统对比,在过程块404,在读取加密数据块过程中重新产生密钥流,并因此将最小的延迟引入存储器读取操作中。重新产生的密钥流是在将数据块写入存储器之前用于加密数据块的密钥流。
正如下面所详细描述的,在一个实施例中,根据一个或多个存储的数据块的标准重新产生密钥流。因此,在过程块430,一旦加密数据块的读取完成,则在过程块440根据产生的密钥流解密该加密数据块。在一个实施例中,这是使用逻辑XOR操作实现的,并且可以在一个单时钟周期内实现,从而将引入的延迟限制在一个单时钟周期。因此,在此所描述的存储器加密技术并没有加剧处理器和存储器之间的存储器延迟。
图7是说明如参考图6所述并根据本发明一个实施例的一种用于重新产生过程块404的密钥流的方法410的流程图。在过程块412,根据包含加密数据块的页来识别用于加密数据块的初始化向量的起始部分。在一个实施例中,页连同块号一起为包含多个页初始化向量(PIV)的数据结构提供索引(IVC),例如PIV块280(图3)。正如所描述的,假定在所述的实施例中存在用于从存储器中存取数据块的分页系统。然而,所述实施例可以应用于其他形式的存储器组织中,正如本领域技术人员所公知的。
在过程块414,根据数据块的块号(例如块计数器值)来识别用于加密数据块的初始化向量的剩余部分。在过程块416,根据所识别的初始化向量的起始部分和所识别的初始化向量的剩余部分以及秘密密钥来重新计算密钥流。因此,在所述实施例中使初始化向量成为公用的,或者能够使其成为公用的而不危及在此所述存储器加密/解密的安全性。
图8是根据本发明另一个实施例的说明一种用于重新计算图7的过程块416的密钥流的方法420的流程图。在过程块422,根据包含加密数据块的页来选择页初始化向量(PIV)。一旦选择,则在过程块424根据加密数据块的块号来选择存储的C位计数器值。在一个实施例中,这些值例如被存储在如参考图2-5所描述的加密页结构260中。在过程块426,根据页初始化向量值、C位计数器值和加密数据块的地址的(N-C)个最高有效位来形成用于加密数据块的初始化向量。
如上所述,块地址是N位值,而计数器是C位值。因此,例如参考图3所述的,根据指示的值来形成初始化向量或IV 220。在过程块428,形成的初始化向量利用秘密密钥进行加密以形成密钥流。因此,在所述实施例中,块密码可以用于在所述实施例的解密部分期间形成密码流值。在一个实施例中,块密码是根据计数器模式(CTR)运行的联邦信息处理(FIPS)对称密钥块密码算法。
图9是根据本发明一个实施例的说明一种用于在将数据块存储至存储器之前加密数据块的方法500的流程图。在所述实施例中,参考图4的加密/解密逻辑200来说明方法500。在过程块502,根据一个或多个数据块的标准来为数据块计算初始化向量。在所述的实施例中,该标准可以包括数据块的地址,例如包含数据块的页和数据块的块号。另外,附加的标准可以包括例如根据数据块的一个或多个计数器值。
在过程块540,存储用于初始化向量的标准。在一个实施例中,标准被存储在例如加密页结构260(图4)中以能够重新计算初始化向量。在过程块560,根据初始化向量和秘密密钥利用例如流密码250(图4)计算密钥流。在过程块562,数据块是使用例如XOR操作根据密钥流而进行加密的。在过程块564,加密数据块被存储在存储器中,该存储器包括如上所述的非易失性存储器、盘存储器等。
图10是根据本发明一个实施例的说明一种用于计算图9的过程块502的初始化向量的方法510的流程图。在过程块512,确定是否接收到写入请求。一旦接收到,则在过程块514识别包含所请求数据块的页和所请求数据块的块号。在过程块516,根据包含数据块的页形成页初始化向量。在过程块518,根据数据块的块号形成块初始化向量。在过程块520,页初始化向量和块初始化向量被组合来形成用于加密数据块的初始化向量。
图11是根据本发明一个实施例的说明一种用于组合来形成图10的过程块520的初始化向量的方法530的流程图。在过程块532,根据包含加密数据块的页和可选地数据块的块号来选择存储的页初始化向量值。在过程块534,根据加密数据块的块号来选择存储的C位计数器值。在过程块536,根据页初始化向量值、C位计数器值和加密数据块地址的N-C个最高有效位来形成初始化向量。
因此,在所述实施例中提供128位加密以用于数据块的加密。然而,可以提供各种N位加密使得可以随意地对初始化向量增加或减少数值。在过程块538,利用秘密密钥来加密初始化向量以形成密钥流。在所述实施例中,利用密钥流的初始化向量的加密例如是使用流密码(例如参考图4所述的密码逻辑250)来执行的。因此,在所述实施例中,根据所述实施例块密码可以用于在存储器读回期间执行加密,而流密码可以用于在写入和加密数据块过程中形成密钥流。
图12是根据本发明一个实施例的说明一种存储用于形成图9中过程块540的初始化向量的标准的方法550的流程图。在过程块552,识别用于选择初始化向量的页IV部分的页计数器值。一旦识别,则在过程块554中识别用于形成初始化向量的块IV部分的块计数器值。一旦识别,则根据数据块的块号将页计数器值和块计数器值存储在加密页结构内。
图13是根据本发明另一个实施例的说明如参考图5所述的一种用于重编码初始化向量的方法570的流程图。在过程块572,识别具有最近最少初始化向量的数据块。在一个实施例中,对数据块的识别是利用公式(1)执行的。一旦识别,则在过程块574利用新的初始化向量代替所识别的初始化向量。在一个实施例中,当前初始化向量是通过利用由IVC的当前值所索引的PIV 280的当前页IV替换旧IV的页IV部分而形成的。一旦替换,则在过程块576,根据从新的初始化向量和秘密密钥产生的密钥流来重新加密所识别的数据块。
图14是说明使用所公开的技术用于设计的仿真、模拟和制造的各种表示或格式的框图。表示设计的数据可以代表多种方式的设计。首先,作为在仿真中有用的是,硬件可以利用硬件描述语言或另一种功能性描述语言来表示,其实质上提供期望所设计的硬件如何执行的计算机化模型。硬件模型610可以被存储在存储介质600(例如计算机存储器)中,这样可以利用仿真软件620仿真该模型,所述仿真软件将特定的一套测试程序630应用于硬件模型以确定它是否真正如所预期地运行。在一些实施例中,仿真软件并不被记录、获取或包含在介质中。
另外,可以在设计过程中的一些阶段产生具有逻辑和/或晶体管门的电路级模型。可以由使用可编程逻辑构成该模型的专用硬件仿真器来类似地仿真该模型若干次。一定程度采取的这类仿真还可以是仿真技术。无论如何,可重新配置的硬件是另一个实施例,其可以包括存储使用所公开技术的模型的机器可读介质。
而且,在某一阶段的大多数设计达到了表示在硬件模型中各种设备的物理布局的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的不同掩模层或掩模上存在或不存在各种特征的数据。再者,表示集成电路的该数据体现了公开的技术,因为电路逻辑和数据能够被仿真或制造来实现这些技术。
在设计的任何表示中,数据都可以以机器可读介质的任何形式进行存储。光波或电波660被调制或者另外被产生来传输这种信息,存储器650或磁性或光学存储器640(例如盘)可以是机器可读介质。任何这些介质中的任何一个都可以携带设计信息。因此术语“携带”(例如携带信息的机器可读介质)覆盖了在存储设备上存储的信息或者编码成载波或调制到载波上的信息。描述设计或特定设计的位组是(当包含在机器可读介质例如载体或存储介质中时)可以被密封在其自身内部和外部的产品,或者由其他人使用来进一步设计或制造。
可替换实施例
可以理解的是,对于其他实施例可以使用不同的系统配置。例如,虽然系统100包括一个单CPU 110,但是对于其他实施例,多处理器系统(其中一个或多个处理器可以在配置和操作上类似于上述的CPU110)可以得益于各种实施例的数据总线电源控制方法。另外的不同类型的系统或不同类型的计算机系统,举例来说,例如服务器、工作站、桌上型计算机系统、游戏系统(gaming system)、嵌入式计算机系统、刀片服务器(blade server)等也可以用于其他实施例。
虽然已经公开了示例性实施例和最佳模式,但是可以对所公开的实施例作出修改和变化而仍保持在如由下面的权利要求书限定的本发明的实施例的范围内。
Claims (23)
1.一种用于具有降低的解密延迟的存储器加密的方法,包括:
从存储器中读取加密的数据块;
在读取加密的数据块期间,采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据一个或多个存储的数据块的标准来重新产生用于加密数据块的密钥流;以及
一旦完成对加密的数据块的读取,则根据产生的密钥流来解密所加密的数据块。
2.如权利要求1所述的方法,其中读取加密的数据块包括:
接收对加密的数据块的请求;以及
从随机存取存储器中读取加密的数据块。
3.如权利要求1所述的方法,其中重新产生密钥流包括:
根据包含加密的数据块的页来识别用于加密数据块的初始化向量的起始部分;
根据数据块的块号来识别用于加密数据块的初始化向量的剩余部分;以及
根据识别的初始化向量的起始部分和识别的初始化向量的剩余部分以及秘密密钥来重新计算密钥流。
4.如权利要求1所述的方法,其中重新产生密钥流包括:
根据包含加密的数据块的页和加密的数据块的块号从包含一个或多个唯一页初始化向量的片内数据结构中选择页初始化向量值;
根据加密的数据块的块号来选择所存储的C位计数器值;
根据所选择的页初始化向量值、C位计数器值和加密的数据块的块地址的N-C个最高有效位来重新形成用于加密数据块的初始化向量,其中所述块地址是N位地址;以及
利用秘密密钥来加密所形成的初始化向量以形成密钥流。
5.如权利要求1所述的方法,其中解密所加密的数据块是在一个单时钟周期内执行的。
6.一种用于具有降低的解密延迟的存储器加密的方法,包括:
根据一个或多个数据块的标准来计算数据块的初始化向量;
存储用于计算数据块的初始化向量的数据块的标准;
采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据初始化向量和秘密密钥来计算密钥流;
根据密钥流加密数据块;以及
将加密的数据块存储在存储器内。
7.如权利要求6所述的方法,其中计算初始化向量包括:
接收对数据块的写入请求;
识别包含数据块的页;
响应于所述写入请求,当前初始化向量值用于参考页初始化向量来产生块初始化向量值;以及
将当前页写入计数器值用作块计数器值。
8.如权利要求6所述的方法,其中计算初始化向量包括:
接收对数据块的写入请求;
识别包含该数据块的页和该页内数据块的块号;
根据包含加密数据块的页和数据块的块号来选择存储的页初始化向量值;
根据加密数据块的块号来选择存储的C位计数器值;以及
根据页初始化向量值、C位计数器值和加密数据块地址的N-C个最高有效位来形成初始化向量。
9.如权利要求8所述的方法,其中根据页初始化向量值、C位计数器值和加密数据块地址的N-C个最高有效位来形成初始化向量包括:
确定是否接收到写入请求;
如果接收到写入请求,则识别包含所请求数据块的页和所请求数据块的块号;
根据包含数据块的页形成页初始化向量;以及
根据数据块的块号形成块初始化向量。
10.如权利要求8所述的方法,在形成初始化向量之后还包括以下步骤:
利用秘密密钥来加密所形成的初始化向量以形成密钥流。
11.如权利要求8所述的方法,其中计算密钥流包括:
向流密码和块密码之一提供初始化向量和秘密密钥以产生密钥流。
12.如权利要求8所述的方法,进一步包括:
识别具有最近最少使用的页初始化向量的数据块;
根据包含所识别数据块的页的当前初始化向量值,利用来自页初始化向量的不同页初始化向量替换旧初始化向量的页初始化向量部分,以形成新的初始化向量;以及
根据从新的初始化向量和秘密密钥产生的密钥流来重新加密所识别的数据块。
13.如权利要求8所述的方法,其中根据包含加密数据块的页
和数据块的块号来选择存储的页初始化向量值包括:
识别用于选择初始化向量的页初始化向量部分的页计数器值;
一旦识别页计数器值,则识别用于形成初始化向量的块初始化向量部分的块计数器值;
一旦识别块计数器值,则根据数据块的块号将页计数器值和块计数器值存储在加密页结构内。
14.一种处理器,包括:
存储器加密模块,用于存储用来计算数据块的初始化向量的一个或多个数据块的标准,根据从初始化向量和秘密密钥计算的密钥流来加密数据块,并将加密的数据块存储在存储器内;以及
存储器解密模块,用于在读取加密的数据块期间,采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据一个或多个存储的数据块的标准来重新产生用于加密数据块的密钥流,并利用重新产生的密钥流来解密所加密的数据块。
15.如权利要求14所述的处理器,其中所述处理器进一步包括:
含有加密页结构的存储器,该加密页结构具有:页初始化向量,其包含在形成初始化向量时使用的一个或多个唯一初始化向量值;计数器模块,包括当前初始化向量值和各页的页写入计数器值;以及块计数器,其用于存储块初始化向量值和块计数器值,以便能够重新形成初始化向量,从而所述初始化向量用来重新计算密钥流以便在存储器读操作期间对所存储的密文进行解密。
16.如权利要求14所述的处理器,其中加密模块进一步包括:
重编码模块,用于识别具有最近最少使用的页初始化向量部分的数据块,为所识别的页初始化向量重新计算唯一的页初始化向量,以及根据从唯一的初始化向量和秘密密钥产生的密钥流来重新加密所识别的数据块。
17.如权利要求14所述的处理器,其中解密模块利用异或操作在一个单时钟周期内解密所加密的数据块。
18.如权利要求14所述的处理器,其中存储器是随机存取存储器和盘存储器之一。
19.一种用于具有降低的解密延迟的存储器加密的系统,包括:
随机存取存储器RAM;
与存储器耦合的芯片组;以及
与芯片组耦合的处理器,该处理器包括:
存储器加密模块,用于存储用来计算数据块的初始化向量的一个或多个数据块的标准,根据初始化向量和秘密密钥计算出的密钥流来加密数据块,并将加密的数据块存储在存储器内;以及
存储器解密模块,用于在从存储器读取加密的数据块期间,采用被减小以与所述存储器的存储器读取延迟相匹配的预定数量的轮的密码,根据一个或多个存储的数据块的标准来重新产生用于加密数据块的密钥流,并利用重新产生的密钥流来解密所加密的数据块。
20.如权利要求19所述的系统,其中所述处理器进一步包括:
含有加密页结构的存储器,该加密页结构具有:页初始化向量,其包含在形成初始化向量时使用的一个或多个唯一初始化向量值;计数器模块,包括当前初始化向量值和各页的页写入计数器值;以及块计数器,其用于存储块初始化向量值和块计数器值,以便能够重新形成初始化向量,从而所述初始化向量用来计算密钥流以便在存储器读操作期间对所存储的密文进行解密。
21.如权利要求19所述的系统,其中加密模块进一步包括:
重编码模块,用于识别具有最近最少使用的页初始化向量部分的数据块,利用当前页初始化向量来替换所识别的页初始化向量部分,以及根据由当前页初始化向量和秘密密钥产生的密钥流来重新加密所识别的数据块。
22.如权利要求19所述的系统,其中解密模块利用异或操作在一个单时钟周期内解密所加密的数据块。
23.如权利要求19所述的系统,其中随机存取存储器是双倍数据速率DDR同步数据随机存取存储器SDRAM。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/603,680 US7472285B2 (en) | 2003-06-25 | 2003-06-25 | Apparatus and method for memory encryption with reduced decryption latency |
US10/603,680 | 2003-06-25 | ||
PCT/US2004/018272 WO2005006197A2 (en) | 2003-06-25 | 2004-06-09 | An apparatus and method for memory encryption with reduced decryption latency |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1836220A CN1836220A (zh) | 2006-09-20 |
CN1836220B true CN1836220B (zh) | 2010-11-10 |
Family
ID=34062229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800177114A Expired - Fee Related CN1836220B (zh) | 2003-06-25 | 2004-06-09 | 具有降低的解密延迟的存储器加密的装置和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7472285B2 (zh) |
EP (2) | EP3575971A1 (zh) |
JP (1) | JP4500306B2 (zh) |
CN (1) | CN1836220B (zh) |
WO (1) | WO2005006197A2 (zh) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734932B2 (en) * | 2003-11-10 | 2010-06-08 | Broadcom Corporation | System and method for securing executable code |
US7162647B2 (en) * | 2004-03-11 | 2007-01-09 | Hitachi, Ltd. | Method and apparatus for cryptographic conversion in a data storage system |
US20060005047A1 (en) * | 2004-06-16 | 2006-01-05 | Nec Laboratories America, Inc. | Memory encryption architecture |
EP1617586B1 (fr) * | 2004-07-06 | 2008-09-03 | Proton World International N.V. | Chiffrement en continu du contenu d'une mémoire externe à un processeur |
EP1615369A1 (fr) * | 2004-07-06 | 2006-01-11 | Proton World International N.V. | Chiffrement par blocs du contenu d'une mémoire externe à un processeur |
JP2006023957A (ja) * | 2004-07-07 | 2006-01-26 | Sony Corp | 半導体集積回路及び情報処理装置 |
US8155306B2 (en) * | 2004-12-09 | 2012-04-10 | Intel Corporation | Method and apparatus for increasing the speed of cryptographic processing |
US8081755B2 (en) * | 2005-05-20 | 2011-12-20 | Microsoft Corporation | JPEG2000 syntax-compliant encryption with full scalability |
US20070067644A1 (en) * | 2005-08-26 | 2007-03-22 | International Business Machines Corporation | Memory control unit implementing a rotating-key encryption algorithm |
US20070050642A1 (en) * | 2005-08-26 | 2007-03-01 | International Business Machines Corporation | Memory control unit with configurable memory encryption |
FR2895608B1 (fr) * | 2005-12-23 | 2008-03-21 | Trusted Logic Sa | Procede pour la realisation d'un compteur securise sur un systeme informatique embarque disposant d'une carte a puce |
US7797751B1 (en) * | 2006-03-27 | 2010-09-14 | Oracle America, Inc. | Nonce structure for storage devices |
KR101369748B1 (ko) * | 2006-12-04 | 2014-03-06 | 삼성전자주식회사 | 데이터 암호화 방법 및 그 장치 |
US9141557B2 (en) | 2006-12-08 | 2015-09-22 | Ashish A. Pandya | Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine |
US7890692B2 (en) * | 2007-08-17 | 2011-02-15 | Pandya Ashish A | FSA context switch architecture for programmable intelligent search memory |
WO2008073824A1 (en) * | 2006-12-08 | 2008-06-19 | Pandya Ashish A | Dynamic programmable intelligent search memory |
US7899976B2 (en) * | 2006-12-08 | 2011-03-01 | Pandya Ashish A | FSA extension architecture for programmable intelligent search memory |
US7996348B2 (en) | 2006-12-08 | 2011-08-09 | Pandya Ashish A | 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters |
US20110029549A1 (en) * | 2006-12-08 | 2011-02-03 | Pandya Ashish A | Signature search architecture for programmable intelligent search memory |
US20100077230A1 (en) * | 2006-12-15 | 2010-03-25 | Michael Chambers | Protecting a programmable memory against unauthorized modification |
CN101632084B (zh) * | 2007-03-13 | 2012-05-02 | Nxp股份有限公司 | 对至少二维的数据集的加密和解密 |
WO2008110971A2 (en) * | 2007-03-13 | 2008-09-18 | Koninklijke Philips Electronics N.V. | Encryption and decryption of auxiliary data |
US8538015B2 (en) | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
US8509439B2 (en) * | 2007-12-31 | 2013-08-13 | Intel Corporation | Assigning nonces for security keys |
JP5374751B2 (ja) * | 2008-07-31 | 2013-12-25 | 株式会社ハイパーテック | メモリ管理方法 |
JP5272751B2 (ja) * | 2009-01-26 | 2013-08-28 | 富士通セミコンダクター株式会社 | プロセッサ |
US8719593B2 (en) * | 2009-05-20 | 2014-05-06 | Harris Corporation | Secure processing device with keystream cache and related methods |
US8971530B2 (en) * | 2009-06-24 | 2015-03-03 | Intel Corporation | Cryptographic key generation using a stored input value and a stored count value |
DE102010010851A1 (de) * | 2010-03-10 | 2011-09-15 | Giesecke & Devrient Gmbh | Ausspähungsschutz bei der Ausführung einer Operationssequenz in einem tragbaren Datenträger |
US8700892B2 (en) * | 2010-03-19 | 2014-04-15 | F5 Networks, Inc. | Proxy SSL authentication in split SSL for client-side proxy agent resources with content insertion |
US8990582B2 (en) * | 2010-05-27 | 2015-03-24 | Cisco Technology, Inc. | Virtual machine memory compartmentalization in multi-core architectures |
JP5167374B2 (ja) * | 2011-01-21 | 2013-03-21 | シャープ株式会社 | データ暗号化装置、及び、メモリカード |
US8732538B2 (en) * | 2011-03-10 | 2014-05-20 | Icform, Inc. | Programmable data storage management |
GB2494625A (en) * | 2011-09-06 | 2013-03-20 | St Microelectronics Grenoble 2 | Minimizing the latency of a scrambled memory access by sending a memory access operation to the encryption engine and the memory controller in parallel |
US8726037B2 (en) | 2011-09-27 | 2014-05-13 | Atmel Corporation | Encrypted memory access |
CN103425935A (zh) * | 2012-05-16 | 2013-12-04 | 侯方勇 | 基于地址的存储器数据加密方法和装置 |
KR101458479B1 (ko) * | 2012-10-12 | 2014-11-07 | 한국전자통신연구원 | 세션상태정보의 암호화 및 복호화 방법 |
US9405919B2 (en) | 2014-03-11 | 2016-08-02 | Qualcomm Incorporated | Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers |
US9800401B2 (en) * | 2014-04-23 | 2017-10-24 | International Business Machines Corporation | Initialization vectors generation from encryption/decryption |
US10192062B2 (en) | 2014-06-20 | 2019-01-29 | Cypress Semiconductor Corporation | Encryption for XIP and MMIO external memories |
US10169618B2 (en) * | 2014-06-20 | 2019-01-01 | Cypress Semiconductor Corporation | Encryption method for execute-in-place memories |
US10691838B2 (en) | 2014-06-20 | 2020-06-23 | Cypress Semiconductor Corporation | Encryption for XIP and MMIO external memories |
IL234956A (en) * | 2014-10-02 | 2017-10-31 | Kaluzhny Uri | Data bus protection with enhanced key entropy |
US9942211B1 (en) * | 2014-12-11 | 2018-04-10 | Amazon Technologies, Inc. | Efficient use of keystreams |
US9614666B2 (en) * | 2014-12-23 | 2017-04-04 | Intel Corporation | Encryption interface |
CN107771324B (zh) * | 2015-09-17 | 2021-11-26 | 慧与发展有限责任合伙企业 | 用于有效地存储初始化向量的系统、方法及存储介质 |
US9876641B2 (en) * | 2015-10-08 | 2018-01-23 | The Boeing Company | Data dependent authentication keys for differential power analysis resistant authentication |
GB2554096B (en) * | 2016-09-20 | 2019-03-20 | Advanced Risc Mach Ltd | Handling of inter-element address hazards for vector instructions |
CN108073353B (zh) | 2016-11-15 | 2020-04-14 | 华为技术有限公司 | 一种数据处理的方法及装置 |
US10896267B2 (en) | 2017-01-31 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Input/output data encryption |
IT201800003373A1 (it) * | 2018-03-08 | 2019-09-08 | St Microelectronics Srl | Procedimento e circuito di decrittazione, dispositivo corrispondente |
EP3582134B1 (en) * | 2018-06-15 | 2021-02-24 | STMicroelectronics Srl | A cryptography method and circuit, corresponding device |
WO2020118583A1 (zh) * | 2018-12-12 | 2020-06-18 | 深圳市汇顶科技股份有限公司 | 数据处理方法、电路、终端设备及存储介质 |
US11646870B2 (en) | 2019-01-23 | 2023-05-09 | International Business Machines Corporation | Securing mobile device by RAM-encryption |
EP3697020A1 (de) * | 2019-02-15 | 2020-08-19 | Siemens Aktiengesellschaft | Verfahren zum betreiben von im zähler-modus betriebenen schlüsselstromgeneratoren zur sicheren datenübertragung, schlüsselstromgenerator mit zähler-modus-betrieb zur sicheren datenübertragung und computer-programm-produkt zur schlüsselstromerzeugung |
US11863670B2 (en) * | 2019-04-22 | 2024-01-02 | Cryptography Research, Inc. | Efficient side-channel-attack-resistant memory encryptor based on key update |
CN110445601B (zh) * | 2019-07-19 | 2022-07-26 | 三未信安科技股份有限公司 | 祖冲之加密算法提速方法、系统、存储介质及计算机设备 |
US11636046B1 (en) * | 2019-11-15 | 2023-04-25 | The Charles Stark Draper Laboratory, Inc. | Latency free data encryption and decryption between processor and memory |
WO2022132184A1 (en) | 2020-12-20 | 2022-06-23 | Intel Corporation | System, method and apparatus for total storage encryption |
US11782127B2 (en) | 2021-02-05 | 2023-10-10 | Nxp Usa, Inc. | Stop criterion for greedy target detection algorithms in radar applications using sparse phased arrays |
FR3120718B1 (fr) * | 2021-03-09 | 2023-02-10 | Commissariat Energie Atomique | Procédé d’exécution d’un programme d’ordinateur par un appareil électronique |
US11567676B2 (en) | 2021-04-30 | 2023-01-31 | Nxp B.V. | Inline encryption/decryption for a memory controller |
IT202100012821A1 (it) | 2021-05-18 | 2022-11-18 | St Microelectronics Srl | Sistema di elaborazione e corrispondente procedimento di funzionamento |
US11874776B2 (en) * | 2021-06-25 | 2024-01-16 | Intel Corporation | Cryptographic protection of memory attached over interconnects |
US11620184B2 (en) | 2021-08-16 | 2023-04-04 | Nxp B.V. | Runtime integrity checking for a memory system |
CN114710287B (zh) * | 2022-06-06 | 2022-09-20 | 中科问天量子科技(天津)有限公司 | 一种加密方法、系统、存储介质及加密文件访问方法 |
US20240214362A1 (en) * | 2022-12-23 | 2024-06-27 | Rovi Guides, Inc. | Distributed data content protection |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5345508A (en) * | 1993-08-23 | 1994-09-06 | Apple Computer, Inc. | Method and apparatus for variable-overhead cached encryption |
US5757919A (en) * | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
CN1194744A (zh) * | 1996-05-17 | 1998-09-30 | 摩托罗拉公司 | 加密通信系统中重发数据的解密 |
CN1236132A (zh) * | 1997-10-10 | 1999-11-24 | 通用仪器公司 | 应用块链接和块重新排序的带有外部存储器的安全处理器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4529870A (en) | 1980-03-10 | 1985-07-16 | David Chaum | Cryptographic identification, financial transaction, and credential device |
US5259025A (en) * | 1992-06-12 | 1993-11-02 | Audio Digitalimaging, Inc. | Method of verifying fake-proof video identification data |
JP4226760B2 (ja) * | 2000-05-08 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 |
US6937727B2 (en) * | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
JP2003023421A (ja) * | 2001-07-09 | 2003-01-24 | C4 Technology Inc | 暗号方法、そのプログラム、そのプログラムを記録した記録媒体および暗号装置並びに復号方法および復号装置 |
JP4226816B2 (ja) * | 2001-09-28 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ |
CN100379194C (zh) * | 2001-10-03 | 2008-04-02 | Nxp股份有限公司 | 存储器加密 |
US7274792B2 (en) * | 2002-08-09 | 2007-09-25 | Broadcom Corporation | Methods and apparatus for initialization vector processing |
-
2003
- 2003-06-25 US US10/603,680 patent/US7472285B2/en not_active Expired - Fee Related
-
2004
- 2004-06-09 EP EP19187662.2A patent/EP3575971A1/en not_active Withdrawn
- 2004-06-09 EP EP04754772.4A patent/EP1654661B1/en not_active Expired - Lifetime
- 2004-06-09 CN CN2004800177114A patent/CN1836220B/zh not_active Expired - Fee Related
- 2004-06-09 WO PCT/US2004/018272 patent/WO2005006197A2/en active Application Filing
- 2004-06-09 JP JP2006509096A patent/JP4500306B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5345508A (en) * | 1993-08-23 | 1994-09-06 | Apple Computer, Inc. | Method and apparatus for variable-overhead cached encryption |
CN1194744A (zh) * | 1996-05-17 | 1998-09-30 | 摩托罗拉公司 | 加密通信系统中重发数据的解密 |
US5757919A (en) * | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
CN1236132A (zh) * | 1997-10-10 | 1999-11-24 | 通用仪器公司 | 应用块链接和块重新排序的带有外部存储器的安全处理器 |
Also Published As
Publication number | Publication date |
---|---|
JP4500306B2 (ja) | 2010-07-14 |
EP3575971A1 (en) | 2019-12-04 |
EP1654661B1 (en) | 2019-07-24 |
US7472285B2 (en) | 2008-12-30 |
WO2005006197A3 (en) | 2006-02-16 |
EP1654661A2 (en) | 2006-05-10 |
US20050021986A1 (en) | 2005-01-27 |
CN1836220A (zh) | 2006-09-20 |
WO2005006197A2 (en) | 2005-01-20 |
JP2006526173A (ja) | 2006-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1836220B (zh) | 具有降低的解密延迟的存储器加密的装置和方法 | |
US9847872B2 (en) | Memory integrity | |
US9363078B2 (en) | Method and apparatus for hardware-accelerated encryption/decryption | |
JP4551802B2 (ja) | プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法 | |
JP7225220B2 (ja) | 記憶データ暗号化/復号化装置及び方法 | |
CN100514471C (zh) | 用器件访问移动介质上的加密内容的方法和系统 | |
JP5275482B2 (ja) | ストレージメディア、ホスト装置、メモリ装置、及びシステム | |
CN107924448A (zh) | 硬件实施的单向密码术 | |
US9544133B2 (en) | On-the-fly key generation for encryption and decryption | |
EP1308885A1 (en) | Information processing and encryption unit | |
CN108449172A (zh) | 输入/输出数据加密 | |
CN102334307A (zh) | 密码系统的密钥恢复机制 | |
CN103957100A (zh) | 利用单指令在多种模式中执行aes加密或解密 | |
JP2008292852A (ja) | ディスクアレイ制御装置とディスクアレイ制御方法およびストレージシステム | |
JP2012199922A (ja) | 機密データの暗号化および記憶 | |
US20050038998A1 (en) | Protection key for hardware and information management system | |
US7260217B1 (en) | Speculative execution for data ciphering operations | |
JP2009532983A (ja) | 共通プライベートキーセットを利用した複数のキーラダーのサポート | |
CN102541762A (zh) | 用于外部存储器的数据保护器和数据保护方法 | |
CN110264194A (zh) | 基于事件函数类型的收据存储方法和节点 | |
US7657034B2 (en) | Data encryption in a symmetric multiprocessor electronic apparatus | |
US9218296B2 (en) | Low-latency, low-overhead hybrid encryption scheme | |
CN111814167B (zh) | 数据加解密处理系统及方法 | |
US12079489B2 (en) | Application-specific computer memory protection | |
JP3642533B2 (ja) | プログラムカード及びこれを用いた計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101110 Termination date: 20190609 |
|
CF01 | Termination of patent right due to non-payment of annual fee |