CN107667374B - 用于存储器保密性、完整性和重放保护的技术 - Google Patents

用于存储器保密性、完整性和重放保护的技术 Download PDF

Info

Publication number
CN107667374B
CN107667374B CN201680030402.3A CN201680030402A CN107667374B CN 107667374 B CN107667374 B CN 107667374B CN 201680030402 A CN201680030402 A CN 201680030402A CN 107667374 B CN107667374 B CN 107667374B
Authority
CN
China
Prior art keywords
computing device
counter value
line
data
data line
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
CN201680030402.3A
Other languages
English (en)
Other versions
CN107667374A (zh
Inventor
D·M·德拉姆
S·查伯拉
龙门
E·M·基申维斯凯
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN107667374A publication Critical patent/CN107667374A/zh
Application granted granted Critical
Publication of CN107667374B publication Critical patent/CN107667374B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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]
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

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

Abstract

用于存储器加密的技术包括计算设备,其用于基于统计计数器值和向其写入数据行的存储器地址来生成数据行的带密钥的散列,以及将带密钥的散列存储至高速缓存行。统计计数器值具有在每次写入操作处递增的参考概率。高速缓存行包括多个带密钥的散列,并且每个带密钥的散列与不同的数据行相对应。计算设备进一步基于带密钥的散列、存储器地址、和统计计数器值,对数据行进行加密。

Description

用于存储器保密性、完整性和重放保护的技术
相关专利申请的交叉引用
本申请要求保护于2015年6月25日提交的题为“TECHNOLOGIES FOR MEMORYCONFIDENTIALITY,INTEGRITY,AND REPLAY PROTECTION”的美国发明专利申请序列No.14/750,664的优先权。
背景技术
当今的存储器接口经常被暴露于具有对包括相关联的存储器的计算设备的物理访问权限的敌人。例如,如果利用外部存储装置和/或存储器,则具有对所述计算设备的物理访问权限的敌人可能能够移除那些组件并且针对数据(例如,密码和/或其它保密数据)对它们进行扫描。另外,较高级的敌人可以,例如,将逻辑分析器放置在总线上或者插入基于FPGA的存储器,所述存储器试图修改计算设备的程序行为来例如破坏程序的安全性(例如,通过改变存储器、损坏存储器、和/或重放存储器,在过去的某些时候所述重放是合法的)。在分布式环境中,存储装置和存储器可以位于远离利用它的计算设备,由此可能递增安全性风险。
计数器模式加密(例如,AES-CTR)典型地包含对计数器值进行加密(例如,基于秘密密钥)以及将得到的填充(padding)与诸如期望保护的数据之类的明文进行组合(例如,经由异或(XOR)操作)。如此,对计时器而不是数据进行加密。虽然因为在接收到将被加密的数据之前可以计算填充,所以计数器模式加密允许平行和/或高级计算,但是计数器模式加密通常要求计数器值作为元数据也被存储在存储器中。如此,随后从存储器中对计数器值进行提取导致了额外的存储器查找,由此递增了存储器带宽和存储开销并且降低了性能。
附图说明
本文中所描述的概念通过示例而非限制在附图中被示出。为了示出的简便和清楚,示图中所示的元件不必按比例绘制。在认为合适的情况下,附图标记在示图之中已被重复以指示相应或类似的元件。
图1是用于存储器保密性、完整性和重放保护的计算设备的至少一个实施例的简化的框图;
图2是图1的计算设备的环境的至少一个实施例的简化的框图;
图3是用于存储器加密的方法的至少一个实施例的简化的流程图;
图4是用于存储器解密的方法的至少一个实施例的简化的流程图;
图5是存储器数据结构的至少一个实施例的简化的框图;
图6是加密的密码模式的至少一个实施例的简化的流程图;以及
图7是解密的密码模式的至少一个实施例的简化的流程图。
具体实施方式
虽然本公开的概念易受各种修改和替代形式的影响,但是其具体的实施例已通过示图中的示例被示出,并且将在本文中具体地被描述。应该理解的是,然而,不存在意图将本公开的概念限于所公开的特定的形式,相反,设想的是将涵盖与本公开和所附权利要求一致的所有修改、等价物和替代物。
说明书中的对“一个实施例”、“实施例”、“示出的实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以或可以不必包括该特定的特征、结构或特性。此外,这样的短语不必指的是相同的实施例。另外,当特定的特征、结构或特性结合实施例被描述时,认为结合无论是否明确描述的其它实施例来实现这样的特征、结构或特性在本领域技术人员的认知内。此外,应该认识到的是,以“至少一个A、B和C”的形式被包括在列表中的项可以表示(A);(B);(C);(A和B);(B和C);(A和C);或(A、B和C)。相似地,以“A、B或C中的至少一个”形式被列出的项可以表示(A);(B);(C);(A和B);(B和C);(A和C);或(A、B和C)。
在一些情况中,所公开的实施例可以被实现在硬件、固件、软件或其任意组合中。所公开的实施例还可以作为指令被实现,所述指令由一个或多个暂时或非暂时的机器可读(例如,计算机可读)存储介质执行或者被存储在一个或多个暂时或非暂时的机器可读(例如,计算机可读)存储介质上,可以由一个或多个处理器进行读取和执行。机器可读存储介质可以体现为用于以机器(例如,易失性或非易失性存储器、媒体光盘或其它介质设备)可读形式存储或发送信息的任意存储设备、机制、或其它物理结构。
在示图中,一些结构或方法特征可以在具体布置和/或排序中被示出。然而,应该认识到的是,这样的具体布置和/或排序可能不是必需的。更确切地说,在一些实施例中,这样的特征可以以不同于示出的示图中所示的方式和/或顺序来被布置。此外,将结构或方法特征包括在特定的示图中不表示暗示这样的特征在所有实施例中是必需的,并且在一些实施例中,这样的特征可以不被包括或者可以与其它特征组合在一起。
现在参考图1,示出了用于存储器保密性、完整性和重放保护的计算设备100。如以下具体地描述的,计算设备100被配置为实现用于有效地维持存储器的内容的保密性和完整性(经由加密和散列)和保护内容免受各种攻击(例如,重放攻击)的技术。例如,示出的计算设备100合并完整性值(例如,密钥相关的哈希消息认证码(HMAC))与计数器值以便与计数器模式密码一起使用,由此减少与在传统计数器模式操作中存储单独的计数器相关联的存储器存储开销和带宽。特别地,在一些实施例中,计算设备100附加或另外组合统计计数器值与针对特定数据行的带密钥的散列(例如,MAC)值(例如,与存储器地址、全局计数器状态和/或版本树数据、初始化向量、和/或其它适合的数据一起),并且使用计数器模式密码来对得到的数据进行加密。如以下所描述的,在示出的实施例中,统计计数器是具有每次存储器中的高速缓存行(例如,数据行)被修改而递增的某些概率(例如,参考概率)的计数器,并且因此,允许计数器值被利用同时避免对维持存储器中的计数器值以及计算设备100的处理器中的额外状态数据的需要。另外,被加密的计数器数据,其在本文中为了简便可以被称为“密码填充”,可以用作用于数据行的减少轮数的加密/解密(例如,诸如高级加密算法(AES)操作之类的2或21/2轮对称密码算法操作)的密钥。应该认识到的是,在各种实施例中,如果维持以下特性:敌人必须具有两个或较多已知的明文来使用差分分析毁坏密钥的性质,则针对对称密钥密码的任意密码算法可以与任意数量的轮数一起被利用。如本文中所描述的,在一些实施例中,计算设备100可以形成分布式计算环境的一部分,在该情况中,计算设备100可以通过一个或多个网络与其它计算设备进行通信。
计算设备100可以体现为能够执行本文中所描述的功能的任意类型的计算设备。例如,计算设备100可以体现为桌上型计算机、膝上型计算机、平板计算机、笔记本、上网本、超极本TM、智能电话、蜂窝电话、可穿戴计算设备、个人数字助理、移动互联网设备、智能设备、服务器、路由器、交换机、混合设备、和/或任意其它计算/通信设备。如图1中所示,示出的计算设备100包括处理器110、输入/输出(“I/O”)子系统112、存储器114、数据存储装置116、通信电路118、以及一个或多个外围设备120。此外,在一些实施例中,计算设备100可以包括安全性协处理器122和/或计数器电路124。当然,在其它实施例中,计算设备100可以包括其它或额外的组件,例如,通常在典型的计算设备(例如,各种输入/输出设备和/或其它组件)中找到的那些。此外,在一些实施例中,示出的组件中的一个或多个可以被并入另一组件,或者另外形成另一组件的一部分。例如,在一些实施例中,存储器114或者其部分可以被并入处理器110。
处理器110可以体现为能够执行本文中所描述的功能的任意类型的处理器。例如,处理器110可以体现为单核或多核处理器、数字信号处理器、微控制器、或者其它处理器或处理/控制电路。相似地,存储器114可以体现为能够执行本文中所描述的功能的任意类型的易失性或非易失性存储器或者数据存储装置。在操作中,存储器114可以存储在计算设备100的操作期间使用的各种数据和软件,例如,操作系统、应用、程序、库和驱动器。存储器114经由I/O子系统112通信地耦合至处理器110,所述I/O子系统可以体现为用于促进处理器110、存储器114和计算设备100的其它组件与输入/输出操作的电路和/或组件。例如,I/O子系统112可以体现为,或者另外包括存储器控制器中心、输入/输出控制中心、固件设备、通信链路(即,点对点链路、总线链路、导线、电缆、导光器、印刷电路板迹线等)和/或用于促进输入/输出操作的其它组件和子系统。在一些实施例中,I/O子系统112可以形成片上系统(SoC)的一部分,并且与处理器110、存储器114和计算设备100的其它组件一起被并入在单个集成电路芯片上。
数据存储装置116可以体现为被配置用于数据的短期或长期存储任意类型的设备,所述设备例如为存储器设备和电路、存储器卡、硬盘驱动、固态驱动、或者其它数据存储设备。数据存储装置116和/或存储器114可以在计算设备100的操作期间存储各种数据,如本文中所描述的。应该认识到的是,在一些实施例中,计算设备100还可以利用一个或多个网络存储装置/存储器设备(例如,通过结构或网络连接的远程DRAM)。
通信电路118可以体现为能够通过网络使能计算设备100与其它远程设备之间通信的任意通信电路、设备、或其集合。例如,在一些实施例中,计算设备100可以利用位于远程计算设备上(例如,云计算环境中)的存储器和/或数据存储装置。通信电路118可以被配置为使用任意一个或多个通信技术(例如,无线或有线通信)以及相关联的协议(例如,以太网、
Figure BDA0001481263800000052
WiMAX、LTE、5G等)来实现这样的通信。
外围设备120可以包括任意数量的额外的外围或接口设备,例如,扬声器、麦克风、额外的存储设备等。被包括在外围设备120中的特定的设备可以取决于,例如,计算设备100的类型和/或所设想的用途。
安全性协处理器122可以体现为能够建立受信任的执行环境和执行本文中所描述的功能的任意硬件组件或电路。例如,在一些实施例中,安全性协处理器122可以体现为或另外利用存储器加密引擎(MEE)、受信任的平台模块(TPM)、可管理引擎(ME)、带外处理器、和/或
Figure BDA0001481263800000053
软件防护扩展安全包围区。在一些实施例中,安全性协处理器122可以包括本文中所描述的计算设备100中的一个或多个模块(例如,见图2)。另外,在一些实施例中,安全性协处理器122可以维持安全存储器中的版本树(例如,MEE版本树),其可以用于阻止重放攻击。在一些实施例中,处理器110的核可以提供保护(例如,经由SGX)使得存储器加密引擎形成主存储器114系统(而非I/O子系统112)的一部分。在这样的实施例中,应该认识到的是,处理器110可以执行本文中所描述的安全性协处理器112的功能。
计数器电路124可以体现为能够建立统计计数器并且另外执行本文中所描述的功能的任意硬件组件或电路。如以下所描述的,可以利用统计计数器值来间或地对带密钥的散列(例如,计数器MAC)进行“密钥更新”并且对相应的数据行进行重新加密以便减小哈希冲突可能发生于其内的窗口。应该认识到的是,统计计数器可以基于计数器电路124具有每次存储器中的高速缓存行被修改(例如,通过“写入”操作)而递增的参考概率。换言之,计数器电路124可以执行类似于投掷不公平的硬币并且基于结果来确定是否递增统计计数器的功能。较具体地,在一些实施例中,计数器电路124可以利用随机数生成器来生成随机数(例如,在0-999的范围内)并且确定随机数是否匹配范围内的预先定义的值(例如,1)。如果匹配,则对统计计数器进行递增。应该认识到的是,范围可以被调整以改变统计计数器递增的概率(例如,在以上所描述的实施例中大约为1/1000)。当然,在其它实施例中,计数器电路124可以另外利用随机数生成器和/或利用另一随机过程或技术来执行本文中所描述的功能。
在示出的实施例中,统计计数器可以每一千次写入操作平均递增约一次。即,在这样的实施例中,在给定写入操作处递增的概率是一千分之一。由此,在示出的实施例中,对于计算设备100而言不必经由元数据来追踪计数器状态。应该认识到的是,特定的概率分布(例如,平均数、标准差等)可以是基于特定的计数器电路124和/或根据特定的计数器电路124来确定的。在其中计算设备100不包括计数器电路124的实施例中,可以基于固件和/或软件来建立和/或生成统计计数器。在这样的实施例中,应该认识到的是,尽管如此,计数器电路124可以基于硬件和/或硬件的一个或多个特征/特性。
现在参考图2,在使用中,计算设备100建立用于存储器保密性、完整性和重放保护的环境200。计算设备100的示出的环境200包括数据存取模块202、密码模块204、统计计数器模块206和通信模块208。环境200的各种模块可以体现为硬件、软件、固件或者其组合。例如,各种模块、逻辑以及环境200的其它组件可以形成处理器110或计算设备100的其它硬件组件的一部分,或者另外由处理器110或计算设备100的其它硬件组件来建立。如此,在一些实施例中,环境200的模块中的一个或多个模块可以体现为电路或电子设备的集合(例如,数据存取电路、密码电路、统计计数器电路、和/或通信电路)。此外,在一些实施例中,示出的模块中的一个或多个可以形成另一模块的一部分。
数据存取模块202被配置为取回和/或存储数据至计算设备100的存储器114、数据存储装置116、和/或高速缓存行(例如,数据行和/或计数器MAC行)(例如,见图5的高速缓存行)。例如,如本文中所描述的,数据存取模块202可以接收/取回数据行,并且带密钥的散列(例如,HMAC)可以基于特定的数据行而被生成。数据存取模块202可以将带密钥的散列存储至与该特定的数据行相对应的高速缓存行的位置。此外,数据存取模块202可以随后从高速缓存行、存储器114和/或数据存储装置116取回加密的数据行、统计计数器值、相应的带密钥的散列、和/或其它相关的数据。
密码模块204执行针对计算设备100的各种密码功能。在一些实施例中,密码模块204可以体现为密码引擎、计算设备100的独立的安全性协处理器(例如,安全性协处理器124)、被并入处理器110的密码加速计、或者独立软件/固件。例如,密码模块204可以基于密码密钥、数据的带密钥的散列、与数据相关联的存储器地址(例如,存储器块读取/写入地址)、统计计数器值、版本信息、初始化向量、秘密密码密钥(例如,全局密钥)、和/或本文中所描述的其它适合的参数,来对数据(例如,数据行等)进行加密/解密。密码模块204还被配置为使用一个或多个适合的算法、函数或机制来生成哈希(例如,带密钥的散列)。例如,在示出的实施例中,密码模块204生成将在确认数据行的完整性中利用的数据行的带密钥的散列(例如,HMAC)。应该认识到的是,带密钥的散列的密钥可以取决于特定的实施例而变化,并且可以包括或与其合并,例如,与秘密密码密钥、统计计数器值、版本数据、存储器地址(例如,与相应数据的读取/写入相关联的存储器块地址)和/或其它适合的信息相关联的数据。如以下所描述的,密码模块204可以利用高级加密标准(AES)加密和/或另一适合的对称密码算法(例如,DES、SERPENT、3FISH、SIMON、SPECK等)。特别地,可以利用AES 128,其中被加密的数据的块地址为128位,512位的高速缓存行包括四个块。应该认识到的是,在一些实施例中,带密钥的散列可以利用数据(高速缓存)行中的低至128位块的唯一的存储器地址。另外,在一些实施例中,带密钥的散列可以被截短(例如,来提供对存储器空间的较有效的使用,和/或在特定的计数器MAC行上包括较多的带密钥的散列)。当然,密码模块204可以生成和/或利用密码密钥、签名、凭证、证明引述、和/或其它密码功能。
统计计数器模块206被配置为管理统计计数器(例如,通过生成统计计数器值)。在一些实施例中,统计计数器可以用作全局计数器。应该认识到的是,在一些实施例中,计数器电路124可以包括或执行统计计数器模块206。如以上所描述的,可以利用统计计数器值来对带密钥的散列进行“密钥更新”和对相应的数据行进行重新加密。在一些实施例中,当统计计数器被递增时,统计计数器模块206使用新的统计计数器值来更新,例如,计数器MAC行。应该进一步认识到的是,在一些实施例中,统计计数器模块206将版本数据(例如,层次版本树计数器)与统计计数器值合并(例如,通过互相附加各种计数器/版本值)。例如,在一些实施例中,统计计数器值可以包括与Chhabra等的美国专利申请公开No.2014/0040632中所描述的相似的版本数据。
通信模块208处理计算设备100与远程设备之间通过网络的通信。例如,如以上所指示的,在一些实施例中,计算设备100可以利用位于远程计算设备上(例如,云计算环境中)的存储器和/或数据存储装置。
现在参考图3,在使用中,计算设备100可以执行用于存储器加密的方法300。示出的方法300以框302开始,在框302中,计算设备100确定是否向存储器写入。例如,可以执行从核高速缓存的写回,其为高速缓存中的对被修改的行的回收以便针对传入数据(例如,特定的数据行)腾出“空间”。如果写入,则在框304中,计算设备100接收数据行以向存储器114写入。在框306中,计算设备100确定存储器写入地址,所述地址指示将数据行写入其中的存储器地址。例如,计算设备100可以确定存储器114的特定的物理存储器地址。在框308中,计算设备100取回统计计数器值(例如,与数据行相关联的)。如图5中所示,在一些实施例中,统计计数器值可以被存储在与多个计数器MAC(例如,带密钥的散列)相对应的计数器MAC行中。
在框310中,基于随机处理的实现(例如,通过计数器电路124),计算设备100确定是否更新统计计数器值。如以上所描述的,在一些实施例中,统计计数器可以基于计数器电路124具有每次存储器中的高速缓存行被修改(例如,通过“写入”操作)而递增的某些概率(例如,参考概率)。应该认识到的是,如以下所描述的,通过利用统计计数器来间或地对带密钥的散列进行“密钥更新”并且对数据行进行重新加密,计算设备100可以利用减少轮数的密码操作同时仍然维持强安全性(例如,由于有限的哈希冲突窗口)。
在框312中,如果计算设备100确定统计计数器将不被更新(例如,计数器电路124未指示应该对统计计数器值应当递增),则在框314中,计算设备100基于存储器地址、统计计数器值、和/或秘密密码密钥(例如,全局密钥)来生成数据行的带密钥的散列。应该认识到的是,在一些实施例中,相同的全局密钥可以用于带密钥的散列中的每个。特别地,在框316中,计算设备100可以基于存储器地址、统计计数器值、和/或秘密密钥密钥来生成HMAC。在其它实施例中,计算设备100可以基于任意其它适合的密码哈希算法来生成带密钥的散列。例如,在一些实施例中,可以使用安全哈希算法(例如,SHA1、SHA2、SHA3等)或者消息摘要算法(例如,MD5)。应该认识到的是,在不使用双倍散列的情况下SHA3可以使安全哈希能够被生成。在一些实施例中,在生成带密钥的散列中,存储器地址、统计计数器值、和/或秘密密码密钥可以用作带密钥的散列的密钥。例如,可以附加与存储器地址和统计计数器值相关联的数据,或者另外将与存储器地址和统计计数器值相关联的数据与将用作密钥的秘密密码密钥(例如,全局密钥)组合在一起。在其中使用SHA3的一些实施例中,可以附加那些组件,或者另外将那些组件与数据行组合在一起以便在单遍中生成HMAC。如本文中所描述的,应该认识到的是,统计计数器值还可以与版本数据和/或其它计数器值合并。应该进一步认识到的是,利用带密钥的散列中的统计计数器值减小了基于哈希冲突的攻击的窗口。
在框318中,计算设备100存储生成的带密钥的散列。例如,在框320中,计算设备100可以将带密钥的散列存储至计数器MAC行(即,高速缓存行)。在一些实施例中,计数器MAC行可以包括多个带密钥的散列,所述带密钥的散列中的每个与特定的数据行相对应,并且计数器MAC行可以包括由带密钥的散列中的每个所利用的统计计数器值(例如,见图5)。
在框322中,基于生成的带密钥的散列(计数器MAC)、存储器地址(例如,块地址)、统计计数器值、秘密密码密钥(例如,全局密钥)、和/或初始化向量,计算设备100对数据行进行加密。应该认识到的是,计算设备100可以利用任意适合的对称密钥密码算法(例如,AES、DES、三倍DES、SERPENT、3FISH、SIMON、SPECK等)和/或模式来对数据行进行加密。通过这样做,在框324中,计算设备100可以使用减少轮数的操作(即,与典型算法所要求的相比,较少数量的轮数的操作)来对数据行进行加密。例如,在一些实施例中,计算设备100可以使用仅2或21/2轮AES操作而不是用10或典型数量的轮来对数据行进行加密。
在示出的实施例中,计算设备100可以使用与一种类型的计数器模式加密算法相似的密码模式来对数据行进行加密,在所述算法中,在本文所描述的其它变型之中,计数器被带密钥的散列、块存储器地址、统计计数器值、和/或初始化向量替代。较具体地,在一些实施例中,计算设备100可以利用图6中所示的加密的密码模式600以便对数据行进行加密。通过这样做,在框602中,计算设备100可以利用基于适合的对称密钥密码算法的块密码加密以使用全局密钥来对带密钥的散列(计数器MAC)、块地址、统计计数器值、和初始化向量进行加密。取决于特定的实施例,全局密钥可以与和以上所描述的生成带密钥的散列一起使用的秘密密码密钥相同或不同。如以上所指示的,加密结果产生密文,其可以被称为“密码填充”。在框604中,计算设备100采用减少轮数的块密码加密(例如,2或21/2轮加密)来对数据行进行加密,其中,密码填充被用作加密密钥。当然,加密的数据行可以被存储在存储器114和/或数据存储装置116中以用于随后的使用。应该认识到的是,在图6的实施例中,将数据行示出为数据行的一块,并且在数据行写入/读取上,对所有块进行加密/解密(例如,AES 128的四块)。如此,在这样的实施例中,在带密钥的散列可以被计算并且与相应的计数器MAC比较之前,必须对数据行的所有块进行解密,如以下所描述的。
不同于传统的计数器模式加密,应该认识到的是,在示出的实施例中,不必将分离的计数器值存储为元数据,因为,例如,统计计数器值和/或其它计数器(例如,版本树计数器)被并入带密钥的散列。在其它实施例中,计算设备100在对数据行进行加密时可以利用带密钥的散列、存储器地址、统计计数器、和/或额外的数据(例如,秘密密码密钥、版本数据等)中的一个或多个作为“计数器”和/或密码密钥。
返回参考图3,在框312中,如果计算设备100确定更新统计计数器值(例如,基于随机过程),则计算设备100基于新的统计计数器值,重新生成与统计计数器相关联的每个带密钥的散列(即,“密钥更新”)。由此,在一些实施例中,计算设备100基于更新的统计计数器值来更新计数器MAC行中的统计计数器值以及每个计数器MAC。此外,计算设备100基于新的带密钥的散列以及新的统计计数器值,对与计数器MAC行的更新的计数器MAC相对应的每个数据行进行重新加密。虽然对所有带密钥的散列进行更新以及对数据行进行重新加密可能在计算上昂贵,但是在示出的实施例中,统计计数器极少递增(例如,大约每千次写入操作)。应该认识到的是,可以对统计计数器递增的近似频率进行微调来达到期望的安全性。
特别地,在示出的实施例中,在框326中,计算设备100读取与统计计数器相对应的数据行中的一个。为此,计算设备100可以读取与统计计数器相对应的加密的数据行,并且基于与数据行相关联的之前所存储的带密钥的散列(例如,在更新统计计数器值之前基于统计计数器值生成的计数器MAC)来对加密的数据行进行解密。应该认识到的是,在一些实施例中,计算设备100可以执行以下所描述的图4的方法400以便读取数据行(即,使用之前所存储的带密钥的散列和统计计数器值)。在框328中,计算设备100基于新的统计计数器值、存储器地址、和/或秘密密码密钥(例如,全局密钥)生成新的带密钥的散列(例如,计数器MAC)。在框330中,计算设备100将新的带密钥的散列存储回存储器(例如,到在“密钥更新”之前存储带密钥的散列的相同的存储器地址)。在框332中,计算设备100基于新的带密钥的散列、新的统计计数器值、存储器地址、秘密密码密钥、和/或初始化向量对数据行进行重新加密,并且将重新加密的数据行存储回至存储器(例如,至之前存储数据行的相同的存储器地址)。应该认识到的是,在一些实施例中,可以由计算设备100以与以上所描述的对框314-324的执行相似的方式来执行框328-332(即,使用新的统计计数器值)。在框334中,计算设备100确定是否对另一数据行进行重新加密。例如,在示出的实施例中,计算设备100确定是否存在与统计计数器相对应的用于基于新的统计计数器值来进行加密或重新加密的任意其它数据行。如果存在,则方法400返回至框326,在框326中,计算设备100读取下一个数据行。
现在参考图4,在使用中,计算设备100可以执行用于存储器解密的方法400。示出的方法400以框402开始,在框402中,计算设备100确定是否读取存储器(即,从特定的存储器地址读取数据)。如果读取,则在框404中,计算设备100从与被请求的存储器地址相对应的存储器取回加密的数据行。在框406中,计算设备100从与数据行相对应的计数器MAC行取回统计计数器值。在框408中,计算设备100取回与加密的数据行相对应的带密钥的散列(例如,从相应的计数器MAC行)。
在框410中,计算设备100基于取回的带密钥的散列、读取操作所指向的存储器地址(例如,物理存储器地址)、统计计数器值、相应的秘密密码密钥(例如,全局密钥)、和/或初始化向量来对被加密的数据进行解密。通过这样做,在框412中,计算设备100可以使用减少轮数的操作(即,与典型的密码算法所要求的相比,较少数量的轮数的操作)来对被加密的数据进行解密。应该认识到的是,解密算法、模式、和/或技术可以与以上所描述的加密相对应。另外,在示出的实施例中,计算设备100可以使用与以上所描述的密码模式600的解密对应来对加密的数据行进行解密。特别地,在一些实施例中,计算设备可以利用图7中所示的解密的密码模式700来对加密的数据行进行解密。通过这样做,在框702中,计算设备100可以利用块密码加密算法(即,与图6的框602相同的算法)来使用全局密钥对带密钥的散列(计数器MAC)、块地址、统计计数器值、和初始化向量进行加密,以便生成密码填充。在框704中,计算设备100使用密码填充作为解密密钥,采用减少轮数的块密码解密(与图6的框604的加密相对应)来对加密的数据行进行解密。如本文中所描述的,在一些实施例中,减少轮数的解密可以由例如2或21/2轮解密组成。如以下所描述的,解密的数据行可以用于验证带密钥的散列(计数器MAC)。
返回参考图4,在框414中,计算设备100基于存储器地址、统计计数器值、和/或秘密密码密钥(例如,全局密钥),来生成解密的数据行的带密钥的散列。特别地,在框416中,计算设备100可以基于存储器地址、统计计数器值、和/或秘密密码密钥来生成HMAC。应该认识到的是,计算设备100可以以与以上关于图3的框312所描述的相似的方式来生成带密钥的散列。在框418中,计算设备100将生成的带密钥的散列与取回的带密钥的散列进行比较以便验证数据行的完整性。应该认识到的是,如果在生成哈希中使用相同的数据(例如,数据行、存储器地址、统计计数器值等),则两个带密钥的散列应该匹配。在框420中,如果计算设备100确定带密钥的散列不匹配,则在框422中,计算设备100执行一个或多个错误处理操作。应该认识到的是,特定的错误处理操作可以取决于特定的实施例而变化。例如,在一些实施例中,计算设备100可以向计算设备100的用户和/或管理员发出警报。在另一实施例中,计算设备100可以“冻结”系统的一个或多个组件和/或操作。
现在参考图5,示出了存储器数据结构的示出的实施例。特别地,如以上所描述的,计算设备100可以利用各种高速缓存行(例如,计数器MAC行500和数据行502)来存储和取回数据。在一些实施例中,计数器MAC行500包括多个计数器MAC 504(即,带密钥的散列)以及相应的统计计数器值506。当然,数据行502包括期望从存储器读取和/或向存储器写入的数据。在一些实施例中,高速缓存行500、502中的每个被配置为保持数据的512位。较具体地,计数器MAC行500可以被配置为保持九个带密钥的散列,每个带密钥的散列为54位,以及26位的静态计数器值。由此,本文中所描述的技术允许使用小尺寸的带密钥的散列而同时维持安全性和高效性。当然,应该认识到的是,在其它实施例中,计算设备100可以利用其它高速缓存行和/或数据结构。例如,在一些实施例中,计算设备100可以利用与本文中所描述的那些相比不同尺寸的高速缓存行。应该进一步认识到的是,这样的实施例可以允许较少或较多的计数器MAC被存储在特定的高速缓存行上。此外,在一些实施例中,存储设备可以允许较大或较小的数据存取(例如,不同的存储块大小)。另外,可以针对基于特定安全性目的的实施例,选择计数器MAC和/或统计计数器尺寸。
示例
以下提供本文中所公开的技术的示出的示例。技术的实施例可以包括以下所描述的示例中的任意一个或多个,以及其任意组合。
示例1包括一种用于存储器加密的计算设备,所述计算设备包括密码模块,其用于基于统计计数器值以及向其写入数据行的存储器地址来生成数据行的带密钥的散列,其中,统计计数器值具有在每次写入操作处递增的参考概率;以及数据存取模块,其用于将带密钥的散列存储至高速缓存行,其中,所述高速缓存行包括多个带密钥的散列,并且每个带密钥的散列与不同的数据行相对应;其中,所述密码模块进一步用于基于带密钥的散列、存储器地址、和统计计数器值来对数据行进行加密。
示例2包括示例1的主题,并且其中,对数据行进行加密包括基于计数器模式加密算法来对数据行进行加密。
示例3包括示例1和2中的任意一个的主题,并且其中,对数据行进行加密包括使用少于10轮的对称密钥加密算法操作来对数据行进行加密。
示例4包括示例1-3中的任意一个的主题,并且其中,对数据行进行加密包括使用恰好2轮的对称密钥加密算法操作来对数据行进行加密。
示例5包括示例1-4中的任意一个的主题,并且其中,生成带密钥的散列包括生成密钥相关的哈希消息认证码(HMAC)。
示例6包括示例1-5中的任意一个的主题,并且其中,存储器地址包括物理存储器地址。
示例7包括示例1-6中的任意一个的主题,并且其中,数据存取模块进一步用于从高速缓存行中取回统计计数器值。
示例8包括示例1-7中的任意一个的主题,并且进一步包括用于生成统计计数器值的统计计数器模块。
示例9包括示例1-8中的任意一个的主题,并且其中,密码模块进一步用于响应于确定统计计数器值已改变,基于新的统计计数器值来重新生成带密钥的散列。
示例10包括示例1-9中的任意一个的主题,并且其中,密码模块进一步用于响应于确定统计计数器值已改变,对数据行进行重新加密。
示例11包括示例1-10中的任意一个的主题,并且其中,统计计数器值与数据行的版本合并。
示例12包括一种用于由计算设备对存储器进行加密的方法,所述方法包括:由计算设备基于统计计数器值以及向其写入数据行的存储器地址来生成数据行的带密钥的散列,其中,所述统计计数器值具有在每次写入操作处递增的参考概率;由计算设备将带密钥的散列存储至高速缓存行,其中,所述高速缓存行包括多个带密钥的散列,并且每个带密钥的散列与不同的数据行相对应;并且由计算设备基于带密钥的散列、存储器地址、和统计计数器值来对数据行进行加密。
示例13包括示例12的主题,并且其中,对数据行进行加密包括基于计数器模式加密算法来对数据行进行加密。
示例14包括示例12和13中的任意一个的主题,并且其中,对数据行进行加密包括用于使用少于10轮的对称密钥加密算法操作来对数据行进行加密。
示例15包括示例12-14中的任意一个的主题,并且其中,对数据行进行加密包括使用恰好2轮的对称密钥加密算法操作来对数据行进行加密。
示例16包括示例12-15中的任意一个的主题,并且其中,生成带密钥的散列包括生成密钥相关的哈希消息认证码(HMAC)。
示例17包括示例12-16中的任意一个的主题,并且其中,存储器地址包括物理存储器地址。
示例18包括示例12-17中的任意一个的主题,并且进一步包括由计算设备从高速缓存行中取回统计计数器值。
示例19包括示例12-18中的任意一个的主题,并且其中,统计计数器值是由统计计数器生成的。
示例20包括示例12-19中的任意一个的主题,并且进一步包括响应于确定统计计数器值已改变,由计算设备基于新的统计计数器值来重新生成带密钥的散列。
示例21包括示例12-20中的任意一个的主题,并且进一步包括响应于确定统计计数器值已改变,由计算设备对数据行进行重新加密。
示例22包括示例12-21中的任意一个的主题,并且其中,统计计数器值与数据行的版本合并。
示例23包括一种计算设备,其包括处理器;以及存储器,其具有存储其中的多个指令,所述指令当由处理器执行时使计算设备执行示例12-22中的任意一个的方法。
示例24包括一个或多个机器可读存储介质,其包括存储其上的多个指令,所述指令响应于被执行而引起计算设备执行示例12-22中的任意一个的方法。
示例25包括一种计算设备,其包括用于执行示例12-22中的任意一个的方法的单元。
示例26包括一种用于存储器加密的计算设备,所述计算设备包括用于基于统计计数器值以及向其写入数据行的存储器地址来生成数据行的带密钥的散列的单元,其中,所述统计计数器值具有在每次写入操作处递增的参考概率;用于将带密钥的散列存储至高速缓存行的单元,其中,所述高速缓存行包括多个带密钥的散列,并且每个带密钥的散列与不同的数据行相对应;以及用于基于带密钥的散列、存储器地址、和统计计数器值来对数据行进行加密的单元。
示例27包括示例26的主题,并且其中,用于对数据行进行加密的单元包括用于基于计数器模式加密算法来对数据行进行加密的单元。
示例28包括示例26和27中的任意一个的主题,并且其中,用于对数据行进行加密的单元包括用于使用少于10轮的对称密钥加密算法操作来对数据行进行加密的单元。
示例29包括示例26-28中的任意一个的主题,并且其中,用于对数据行进行加密的单元包括用于使用恰好2轮的对称密钥加密算法操作来对数据行进行加密的单元。
示例30包括示例26-29中的任意一个的主题,并且其中,用于生成带密钥的散列的单元包括用于生成密钥相关的哈希消息认证码(HMAC)的单元。
示例31包括示例26-30中的任意一个的主题,并且其中,存储器地址包括物理存储器地址。
示例32包括示例26-31中的任意一个的主题,并且进一步包括用于从高速缓存行中取回统计计数器值的单元。
示例33包括示例26-32中的任意一个的主题,并且其中,统计计数器值是由统计计数器生成的。
示例34包括示例26-33中的任意一个的主题,并且进一步包括用于响应于确定统计计数器值已改变,基于新的统计计数器值来重新生成带密钥的散列的单元。
示例35包括示例26-34中的任意一个的主题,并且进一步包括用于响应于确定统计计数器值已改变,对数据行进行重新加密的单元。
示例36包括示例26-35中的任意一个的主题,并且其中,统计计数器值与数据行的版本合并。
示例37包括一种用于存储器解密的计算设备,所述计算设备包括密码模块,其用于(i)基于带密钥的散列、统计计数器值、以及从其存取加密的数据行的存储器地址来对加密的数据行进行解密,以及(ii)基于存储器地址和统计计数器值来生成解密的数据行的带密钥的散列,其中,所述统计计数器值具有在每个写入操作处递增的参考概率;以及数据存取模块,其用于从高速缓存行中取回与数据行相对应的另一带密钥的散列,其中,所述高速缓存行包括多个带密钥的散列并且每个带密钥的散列与不同的数据行相对应;其中,所述密码模块进一步用于将生成的带密钥的散列与从高速缓存行中取回的另一带密钥的散列进行比较以验证数据行的完整性。
示例38包括示例36的主题,并且其中,对加密的数据行进行解密包括基于计数器模式加密算法来对加密的数据行进行解密。
示例39包括示例37和38中的任意一个的主题,并且其中,对加密的数据行进行解密包括使用少于10轮的对称密钥加密算法操作来对加密的数据行进行解密。
示例40包括示例37-39中的任意一个的主题,并且其中,对加密的数据行进行解密包括使用恰好2轮的对称密钥加密算法操作来对加密的数据行进行解密。
示例41包括示例37-40中的任意一个的主题,并且其中,生成带密钥的散列包括生成密钥相关的哈希消息认证码(HMAC)。
示例42包括示例37-41中的任意一个的主题,并且其中,存储器地址包括物理存储器地址。
示例43包括示例37-42中的任意一个的主题,并且其中,数据存取模块进一步用于从高速缓存行中取回统计计数器值。
示例44包括示例37-43中的任意一个的主题,并且进一步包括用于生成统计计数器值的统计计数器模块。
示例45包括示例37-44中的任意一个的主题,并且其中,密码模块进一步用于响应于确定生成的带密钥的散列不匹配另一带密钥的散列而执行错误处理操作。
示例46包括示例37-45中的任意一个的主题,并且其中,统计计数器值与数据行的版本合并。
示例47包括一种用于由计算设备对存储器进行解密的方法,所述方法包括由计算设备基于带密钥的散列、统计计数器值、以及从其存取加密的数据行的存储器地址来对加密的数据行进行解密,其中,所述统计计数器值具有在每次写入操作处递增的参考概率;由计算设备基于存储器地址和统计计数器值来生成解密的数据行的带密钥的散列;并且由计算设备从高速缓存行中取回与数据行相对应的另一带密钥的散列,其中,所述高速缓存行包括多个带密钥的散列并且每个带密钥的散列与不同的数据行相对应;并且由计算设备通过将生成的带密钥的散列与从高速缓存行中取回的另一带密钥的散列进行比较来验证数据行的完整性。
示例48包括示例47的主题,并且其中,对加密的数据行进行解密包括基于计数器模式加密算法来对加密的数据行进行解密。
示例49包括示例47和48中的任意一个的主题,并且其中,对加密的数据行进行解密包括使用少于10轮的对称密钥加密算法操作来对加密的数据行进行解密。
示例50包括示例47-49中的任意一个的主题,并且其中,对加密的数据行进行解密包括使用恰好2轮的对称密钥加密算法操作来对加密的数据行进行解密。
示例51包括示例47-50中的任意一个的主题,并且其中,生成带密钥的散列包括生成密钥相关的哈希消息认证码(HMAC)。
示例52包括示例47-51中的任意一个的主题,并且其中,存储器地址包括物理存储器地址。
示例53包括示例47-52中的任意一个的主题,并且进一步包括由计算设备从高速缓存行中取回统计计数器值。
示例54包括示例47-53中的任意一个的主题,并且其中,统计计数器值是由统计计数器生成的。
示例55包括示例47-54中的任意一个的主题,并且进一步包括响应于确定生成的带密钥的散列不匹配另一带密钥的散列,由计算设备执行错误处理操作。
示例56包括示例47-55中的任意一个的主题,并且其中,统计计数器值与数据行的版本合并。
示例57包括一种计算设备,其包括处理器;以及存储器,其具有存储其中的多个指令,所述指令当由处理器执行时使计算设备执行示例47-56中的任意一个的方法。
示例58包括一个或多个机器可读存储介质,其包括存储其上的多个指令,所述指令响应于被执行而引起计算设备执行示例47-56中的任意一个的方法。
示例59包括一种计算设备,其包括用于执行示例47-56中的任意一个的方法的单元。
示例60包括一种用于存储器解密的计算设备,所述计算设备包括用于基于带密钥的散列、统计计数器值、以及从其存取加密的数据行的存储器地址来对加密的数据行进行解密的单元,其中,所述统计计数器值具有在每次写入操作处递增的参考概率;用于基于存储器地址和统计计数器值来生成解密的数据行的带密钥的散列的单元;以及用于从高速缓存行中取回与数据行相对应的另一带密钥的散列的单元,其中,所述高速缓存行包括多个带密钥的散列并且每个带密钥的散列与不同的数据行相对应;以及用于通过将生成的带密钥的散列与从高速缓存行中取回的另一带密钥的散列进行比较来验证数据行的完整性的单元。
示例61包括示例60的主题,并且其中,用于对加密的数据行进行解密的单元包括用于基于计数器模式加密算法来对加密的数据行进行解密的单元。
示例62包括示例60和61中的任意一个的主题,并且其中,用于对加密的数据行进行解密的单元包括用于使用少于10轮的对称密钥加密算法操作来对加密的数据行进行解密的单元。
示例63包括示例60-62中的任意一个的主题,并且其中,用于对加密的数据行进行解密的单元包括用于使用恰好2轮的对称密钥加密算法操作来对加密的数据行进行解密的单元。
示例64包括示例60-63中的任意一个的主题,并且其中,用于生成带密钥的散列的单元包括用于生成密钥相关的哈希消息认证码(HMAC)的单元。
示例65包括示例60-64中的任意一个的主题,并且其中,存储器地址包括物理存储器地址。
示例66包括示例60-65中的任意一个的主题,并且进一步包括用于从高速缓存行中取回统计计数器值的单元。
示例67包括示例60-66中的任意一个的主题,并且其中,统计计数器值是由统计计数器生成的。
示例68包括示例60-67中的任意一个的主题,并且进一步包括用于响应于确定生成的带密钥的散列不匹配另一带密钥的散列而执行错误处理操作的单元。
示例69包括示例60-68中的任意一个的主题,并且其中,统计计数器值与数据行的版本合并。

Claims (31)

1.一种用于存储器加密的计算设备,所述计算设备包括:
密码模块,其用于基于统计计数器值以及向其写入数据行的存储器地址来生成所述数据行的带密钥的散列,其中,所述统计计数器值在每次写入操作时基于参考概率递增,其中,所述统计计数器值的递增基于确定所生成的随机数是否匹配范围内的预先定义的值;以及
数据存取模块,其用于将所述带密钥的散列存储至高速缓存行,其中,所述高速缓存行包括多个带密钥的散列,并且每个所述带密钥的散列与不同的数据行相对应;
其中,所述密码模块进一步用于基于所述带密钥的散列、所述存储器地址、以及所述统计计数器值来对所述数据行进行加密。
2.根据权利要求1所述的计算设备,其中,对所述数据行进行加密包括基于计数器模式加密算法来对所述数据行进行加密。
3.根据权利要求1所述的计算设备,其中,对所述数据行进行加密包括使用少于10轮的对称密钥加密算法操作来对所述数据行进行加密。
4.根据权利要求3所述的计算设备,其中,对所述数据行进行加密包括使用2轮的所述对称密钥加密算法操作来对所述数据行进行加密。
5.根据权利要求1所述的计算设备,其中,生成所述带密钥的散列包括生成密钥相关的哈希消息认证码(HMAC)。
6.根据权利要求1所述的计算设备,其中,所述存储器地址包括物理存储器地址。
7.根据权利要求1所述的计算设备,其中,所述统计计数器值存储在所述高速缓存行中,所述数据存取模块进一步用于从所述高速缓存行中取回所述统计计数器值。
8.根据权利要求1所述的计算设备,其中,所述密码模块进一步用于:
响应于确定所述统计计数器值已改变,基于新的统计计数器值来重新生成所述带密钥的散列。
9.根据权利要求8所述的计算设备,其中,所述密码模块进一步用于:
响应于确定所述统计计数器值已改变,对所述数据行进行重新加密。
10.根据权利要求1所述的计算设备,其中,所述统计计数器值和其它计数器值被并入所述带密钥的散列。
11.一种用于由计算设备对存储器进行加密的方法,所述方法包括:
由所述计算设备基于统计计数器值以及向其写入数据行的存储器地址来生成所述数据行的带密钥的散列,其中,所述统计计数器值在每次写入操作时基于参考概率递增,其中,所述统计计数器值的递增基于确定所生成的随机数是否匹配范围内的预先定义的值;
由所述计算设备将所述带密钥的散列存储至高速缓存行,其中,所述高速缓存行包括多个带密钥的散列,并且每个所述带密钥的散列与不同的数据行相对应;并且
由所述计算设备基于所述带密钥的散列、所述存储器地址、以及所述统计计数器值来对所述数据行进行加密。
12.根据权利要求11所述的方法,其中,对所述数据行进行加密包括基于计数器模式加密算法来对所述数据行进行加密。
13.根据权利要求11所述的方法,其进一步包括:
响应于确定所述统计计数器值已改变,基于新的统计计数器值来重新生成所述带密钥的散列;以及
响应于确定所述统计计数器值已改变,对所述数据行进行重新加密。
14.一种用于对存储器进行加密的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求11-13中的任一项所述的方法。
15.一种用于对存储器进行加密的装置,包括用于执行根据权利要求11-13中的任一项所述的方法的单元。
16.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求11-13中的任一项所述的方法。
17.一种用于存储器解密的计算设备,所述计算设备包括:
密码模块,其用于(i)基于带密钥的散列、统计计数器值、以及从其存取加密的数据行的存储器地址来对所述加密的数据行进行解密,以及(ii)基于所述存储器地址和所述统计计数器值来生成解密的数据行的带密钥的散列,其中,所述统计计数器值在每次写入操作时基于参考概率递增,其中,所述统计计数器值的递增基于确定所生成的随机数是否匹配范围内的预先定义的值;以及
数据存取模块,其用于从高速缓存行中取回与所述数据行相对应的另一带密钥的散列,其中,所述高速缓存行包括多个带密钥的散列并且每个所述带密钥的散列与不同的数据行相对应;
其中,所述密码模块进一步用于将生成的带密钥的散列与从所述高速缓存行中取回的所述另一带密钥的散列进行比较以验证所述数据行的完整性。
18.根据权利要求17所述的计算设备,其中,对所述加密的数据行进行解密包括基于计数器模式加密算法来对所述加密的数据行进行解密。
19.根据权利要求17所述的计算设备,其中,对所述加密的数据行进行解密包括使用少于10轮的对称密钥加密算法操作来对所述加密的数据行进行解密。
20.根据权利要求19所述的计算设备,其中,对所述加密的数据行进行解密包括使用2轮的所述对称密钥加密算法操作来对所述加密的数据行进行解密。
21.根据权利要求17所述的计算设备,其中,生成所述带密钥的散列包括生成密钥相关的哈希消息认证码(HMAC)。
22.根据权利要求17所述的计算设备,其中,所述存储器地址包括物理存储器地址。
23.根据权利要求17所述的计算设备,其中,所述统计计数器值存储在所述高速缓存行中,所述数据存取模块进一步用于从所述高速缓存行中取回所述统计计数器值。
24.根据权利要求17所述的计算设备,其中,所述密码模块进一步用于响应于确定所述生成的带密钥的散列与所述另一带密钥的散列不匹配而执行错误处理操作。
25.根据权利要求17所述的计算设备,其中,所述统计计数器值和其它计数器值被并入所述生成的带密钥的散列。
26.一种用于由计算设备对存储器进行解密的方法,所述方法包括:
由所述计算设备基于带密钥的散列、统计计数器值、以及从其存取加密的数据行的存储器地址来对所述加密的数据行进行解密,其中,所述统计计数器值在每次写入操作时基于参考概率递增,其中,所述统计计数器值的递增基于确定所生成的随机数是否匹配范围内的预先定义的值;
由所述计算设备基于所述存储器地址和所述统计计数器值来生成解密的数据行的带密钥的散列;并且
由所述计算设备从高速缓存行中取回与所述数据行相对应的另一带密钥的散列,其中,所述高速缓存行包括多个带密钥的散列并且每个所述带密钥的散列与不同的数据行相对应;并且
由所述计算设备通过将生成的带密钥的散列与从所述高速缓存行中取回的另一带密钥的散列进行比较来验证所述数据行的完整性。
27.根据权利要求26所述的方法,其中,对所述加密的数据行进行解密包括基于计数器模式加密算法来对所述加密的数据行进行解密。
28.根据权利要求26所述的方法,其中,对所述加密的数据行进行解密包括使用少于10轮的对称密钥加密算法操作来对所述加密的数据行进行解密。
29.一种用于对存储器进行解密的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求26-28中的任一项所述的方法。
30.一种用于对存储器进行解密的装置,包括用于执行根据权利要求26-28中的任一项所述的方法的单元。
31.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求26-28中的任一项所述的方法。
CN201680030402.3A 2015-06-25 2016-05-25 用于存储器保密性、完整性和重放保护的技术 Active CN107667374B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/750,664 US10108557B2 (en) 2015-06-25 2015-06-25 Technologies for memory confidentiality, integrity, and replay protection
US14/750,664 2015-06-25
PCT/US2016/034052 WO2016209488A1 (en) 2015-06-25 2016-05-25 Technologies for memory confidentiality, integrity, and replay protection

Publications (2)

Publication Number Publication Date
CN107667374A CN107667374A (zh) 2018-02-06
CN107667374B true CN107667374B (zh) 2021-09-28

Family

ID=57586560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680030402.3A Active CN107667374B (zh) 2015-06-25 2016-05-25 用于存储器保密性、完整性和重放保护的技术

Country Status (4)

Country Link
US (1) US10108557B2 (zh)
EP (1) EP3314522B1 (zh)
CN (1) CN107667374B (zh)
WO (1) WO2016209488A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230528B2 (en) * 2015-05-04 2019-03-12 Intel Corporation Tree-less integrity and replay memory protection for trusted execution environment
US10637648B2 (en) * 2017-03-24 2020-04-28 Micron Technology, Inc. Storage device hash production
US10560269B2 (en) * 2017-04-05 2020-02-11 Trellisware Technologies, Inc. Methods and systems for improved authenticated encryption in counter-based cipher systems
US11133075B2 (en) 2017-07-07 2021-09-28 Micron Technology, Inc. Managed NAND power management
EP3460709B1 (en) * 2017-09-26 2022-02-09 Secure-IC SAS Devices and methods for secured processors
CN110287708B (zh) * 2018-03-19 2023-07-04 扬智科技股份有限公司 一次性可编程加密装置与其加密方法
US10838773B2 (en) * 2018-03-30 2020-11-17 Intel Corporation Techniques for dynamic resource allocation among cryptographic domains
US11516013B2 (en) * 2018-06-28 2022-11-29 Intel Corporation Accelerator for encrypting or decrypting confidential data with additional authentication data
US11397692B2 (en) * 2018-06-29 2022-07-26 Intel Corporation Low overhead integrity protection with high availability for trust domains
WO2020018644A1 (en) * 2018-07-17 2020-01-23 Canter Jeffrey B Flash memory device for storing sensitive information and other data
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
US11163912B2 (en) * 2019-03-25 2021-11-02 Micron Technology, Inc. Data attestation in memory
US11429751B2 (en) * 2019-07-01 2022-08-30 Rajant Corporation Method and apparatus for encrypting and decrypting data on an integrated circuit
SG10201906806XA (en) * 2019-07-23 2021-02-25 Mastercard International Inc Methods and computing devices for auto-submission of user authentication credential
DE102019128528A1 (de) * 2019-10-22 2021-04-22 Infineon Technologies Ag Datenkryptografievorrichtungen und speichersysteme
CN112003823B (zh) * 2020-07-17 2023-01-17 江阴市富仁高科股份有限公司 一种基于can总线的信息安全传输方法及应用
US20220058295A1 (en) * 2020-08-20 2022-02-24 Micron Technology, Inc. Safety and security for memory
KR20220093664A (ko) 2020-12-28 2022-07-05 삼성전자주식회사 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법
CN113486399B (zh) * 2021-07-14 2023-03-24 上海瓶钵信息科技有限公司 基于risc-v架构的数据存储方法及系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615263A (en) * 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US6523118B1 (en) * 1998-06-29 2003-02-18 Koninklijke Philips Electronics N.V. Secure cache for instruction and data protection
EP1440535B1 (en) * 2001-10-03 2011-01-05 Nxp B.V. Memory encrytion system and method
US7043616B1 (en) * 2002-04-18 2006-05-09 Advanced Micro Devices, Inc. Method of controlling access to model specific registers of a microprocessor
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
JP4263976B2 (ja) * 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US9209967B2 (en) * 2007-03-12 2015-12-08 Exelis, Inc. Precalculated encryption key
US8001390B2 (en) * 2007-05-09 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for secure programming and storage of data using a multiprocessor in a trusted mode
US8606997B2 (en) * 2008-12-23 2013-12-10 Oracle America, Inc. Cache hierarchy with bounds on levels accessed
US20100303229A1 (en) * 2009-05-27 2010-12-02 Unruh Gregory Modified counter mode encryption
US9900150B2 (en) * 2009-10-30 2018-02-20 International Business Machines Corporation Dispersed storage camera device and method of operation
US8407421B2 (en) * 2009-12-16 2013-03-26 Intel Corporation Cache spill management techniques using cache spill prediction
US8990582B2 (en) * 2010-05-27 2015-03-24 Cisco Technology, Inc. Virtual machine memory compartmentalization in multi-core architectures
JP5159849B2 (ja) * 2010-09-24 2013-03-13 株式会社東芝 メモリ管理装置及びメモリ管理方法
JP5700481B2 (ja) * 2011-06-29 2015-04-15 インテル・コーポレーション 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
CN102355352B (zh) * 2011-07-24 2015-03-11 哈尔滨工程大学 一种数据机密性和完整性保护方法
US9053346B2 (en) * 2011-12-28 2015-06-09 Intel Corporation Low-overhead cryptographic method and apparatus for providing memory confidentiality, integrity and replay protection
US9544075B2 (en) * 2012-02-22 2017-01-10 Qualcomm Incorporated Platform for wireless identity transmitter and system using short range wireless broadcast
US9300464B1 (en) * 2013-02-12 2016-03-29 Amazon Technologies, Inc. Probabilistic key rotation
US9311493B2 (en) * 2013-07-30 2016-04-12 Battelle Memorial Institute System for processing an encrypted instruction stream in hardware
US9571270B2 (en) * 2013-11-29 2017-02-14 Portland State University Construction and uses of variable-input-length tweakable ciphers
US20160070643A1 (en) * 2014-09-08 2016-03-10 Sandisk Technologies Inc. System and method of counting program/erase cycles

Also Published As

Publication number Publication date
CN107667374A (zh) 2018-02-06
WO2016209488A1 (en) 2016-12-29
EP3314522B1 (en) 2021-01-20
EP3314522A1 (en) 2018-05-02
EP3314522A4 (en) 2019-02-20
US10108557B2 (en) 2018-10-23
US20160378687A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
CN107667374B (zh) 用于存储器保密性、完整性和重放保护的技术
TWI567579B (zh) 用於對硬體裝置提供金鑰的方法和設備
CN100487715C (zh) 一种数据安全存储系统和装置及方法
US8462955B2 (en) Key protectors based on online keys
US7127067B1 (en) Secure patch system
EP2711859B1 (en) Secured computing system with asynchronous authentication
US9760737B2 (en) Techniques for integrated circuit data path confidentiality and extensions thereof
CN107453880B (zh) 一种云数据安全存储方法和系统
US10826694B2 (en) Method for leakage-resilient distributed function evaluation with CPU-enclaves
EP2973195A1 (en) Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
US20110051931A1 (en) Encryption method and apparatus using composition of ciphers
CN111066077B (zh) 加密装置、加密方法、解密装置以及解密方法
US20140140504A1 (en) System, devices and methods for collaborative execution of a software application comprising at least one encrypted instruction
US9762388B2 (en) Symmetric secret key protection
CN111373464B (zh) 加密装置、加密方法、解密装置以及解密方法
US11997192B2 (en) Technologies for establishing device locality
KR101687492B1 (ko) 분산적으로 데이터를 저장하는 방법 및 암호학적 정보 처리 장치
US20090279696A1 (en) System and method of performing authentication
AU2023201855A1 (en) Module and method for authenticating data transfer between a storage device and a host device
WO2020069431A1 (en) Oblivious filtering of data streams
US11522678B2 (en) Block cipher encryption for processor-accelerator memory mapped input/output communication
WO2022259013A1 (en) Storage device being authenticated to host by utilizing physically unclonable function (puf) for data encryption/decryption
US11232219B1 (en) Protection of electronic designs
KR101915808B1 (ko) 난독화를 이용하는 암호문 복호화
CN117648719A (zh) 数据安全方法及系统

Legal Events

Date Code Title Description
PB01 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