CN109800103A - 密码系统存储器管理 - Google Patents
密码系统存储器管理 Download PDFInfo
- Publication number
- CN109800103A CN109800103A CN201811209775.4A CN201811209775A CN109800103A CN 109800103 A CN109800103 A CN 109800103A CN 201811209775 A CN201811209775 A CN 201811209775A CN 109800103 A CN109800103 A CN 109800103A
- Authority
- CN
- China
- Prior art keywords
- mac
- data
- equipment
- storage
- stored
- 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.)
- Pending
Links
Classifications
-
- 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
- G06F21/79—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 in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个示例中,用于管理经加密的存储器的系统包括处理器,该处理器用于基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储第一MAC。处理器还可以检测与存储在系统存储器中的数据相对应的读取操作,基于从系统存储器取回的数据来计算第二MAC,确定第二MAC与第一MAC不匹配,并且利用纠正操作来重新计算第二MAC,其中纠正操作包括基于从系统存储器取回的数据和用于系统存储器的设备的替代值的XOR运算。此外,处理器可以响应于检测到重新计算的第二MAC与第一MAC匹配而对存储在系统存储器中的数据进行解密,并且将经解密的数据发送到高速缓存,从而纠正存储器错误。
Description
相关申请的交叉引用
本申请是2015年12月24日提交的题为“Memory Integrity with ErrorDetection and Correction”的美国专利申请第14/998,054号的部分继续申请,该专利申请的内容通过引用并入,如同完全在本文中阐述一样。
技术领域
本公开总体上涉及管理存储在存储器中的数据,并且具体地但非排他地,涉及管理存储在存储器中的经加密的数据。
背景技术
计算设备可以以分层方式存储数据,其中数据在较大的存储设备与较小的高速缓冲存储器设备之间传输。在一些示例中,数据可以以加密格式存储在存储设备中,并且以未加密格式存储在较小的片上高速缓存设备中。在一些示例中,纠错码(ECC)存储器技术可以用于检测存储在存储器设备中的数据中的错误。ECC存储器技术可以是确定性的和可逆的,但不是密码的。
附图说明
通过参考附图可以更好地理解以下详细描述,附图包含所公开的主题的许多特征的特定示例。
图1示出了可以管理经加密的数据的计算设备的框图;
图2示出了双列直插式存储器模块的框图;
图3示出了用于管理经加密的数据的过程流程图;
图4示出了用于管理经加密的数据的过程流程图;
图5A和图5B示出了用于存储经加密的数据的数据结构的示例;
图6是用于基于数据的熵的级别来管理经加密的数据的过程流程图;
图7是用于管理经加密的数据的示例流水线;
图8是用于管理经加密的数据的过程流程图;
图9是用于基于作为第二MAC值的纠正值来管理经加密的数据的过程流程图;
图10A和图10B是利用块纠正值作为第二MAC来管理经加密的数据的技术的示例;
图11是用于管理经加密的数据的有形的、非暂时性计算机可读介质的示例。
在一些情况下,在整个公开内容和附图中使用相同的数字来引用类似的组件和特征。100系列中的数字指代最初在图1中找到的特征;200系列中的数字指代最初在图2中找到的特征;以此类推。
具体实施方式
纠错码(ECC)存储器可以包括使用附加的物理存储器的集成电路或设备或芯片来纠正损坏的数据,这可能增加系统成本。另外,ECC存储器技术可能不是密码的。本文描述的技术提供密码安全ECC方法,同时保持纠错能力以提供可以减轻随机比特错误、基于存储器的集成电路故障和恶意对手的高性能存储器。基于存储器的集成电路(本文中也称为设备)可以包括用于在存储设备中存储预先确定数量的比特的任何合适的硬件或逻辑芯片。本文描述的技术是密码安全的,并且执行纠错和提供存储器完整性两者的任务,包括支持多个加密密钥/MKTME(多密钥总存储器加密)、重放防止和密码强数据损坏检测,即使是由物理对手进行的。另外,本文描述的技术可能不要求使用附加的ECC存储器,并且因此降低存储器成本。
本文描述的技术包括利用密码强消息认证码(MAC)或HMAC(散列消息认证码)来用统计试验和错误方法替代ECC检测机制。在一些示例中,展开设备纠正码以一次针对安全散列测试存储器的一个设备,这可以识别包含错误的存储器设备以及哪些比特被翻转(直到完全损坏的设备)。如本文提到的展开可以包括对存储在存储器设备中的集成电路中的数据执行XOR运算或任何其他合适的逻辑运算。在一些示例中,当与总存储器加密(TME/多密钥TME)组合时,启发法可以在给定明文块的熵的情况下帮助识别潜在损坏的明文块,因为更改存储在存储器中的密文的错误将在解密时导致随机明文。可替代地,压缩可以用于对数据高速缓存行内的检测码(例如,Reed-Solomon)编码,以识别/定位损坏的存储器位置并且减少存储这些码所需的物理存储器的成本/量。
在一些实施例中,计算设备可以基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储第一消息认证码(MAC)。如本文提到的MAC可以包括涉及密码散列函数和秘密密码密钥的任何合适的消息认证码。在一些实施例中,计算设备还可以检测与存储在系统存储器中的数据相对应的读取操作,并且基于存储在系统存储器中的数据来计算第二MAC。计算设备还可以确定第二MAC与第一存储的MAC不匹配,并且在纠正操作之后重新计算第二MAC,其中纠正操作包括基于存储在系统存储器中的数据和用于系统存储器的设备的替代值的XOR运算。此外,计算设备可以响应于检测到重新计算的第二MAC与第一MAC匹配而对存储在系统存储器中的数据进行解密,并且将经解密的数据发送到高速缓存。
在一些实施例中,计算设备还可以基于响应于对系统存储器的写入操作要被存储在系统存储器中的明文数据,存储经加密的第一块纠正值。另外,计算设备可以检测与存储在系统存储器中的数据相对应的读取操作,并且基于存储在系统存储器中的数据来计算第二块纠正值,第二块纠正值基于包括存储在系统存储器中的经加密的数据的明文的XOR运算被计算。在一些实施例中,计算设备可以确定第二块纠正值与经解密的第一块纠正值不匹配,并且在纠正操作之后重新计算第二块纠正值,其中纠正操作包括基于存储在系统存储器中的经解密的数据以及用于系统存储器的设备数据的替代值的XOR运算。此外,计算设备可以响应于检测到重新计算的第二块纠正值与第一块纠正值匹配而对存储在系统存储器中的数据进行解密,并且将经解密的数据发送到高速缓存。
本文描述的技术可以防止重建存储在存储器中的数据以产生正确的ECC码,并且提供针对随机错误和故障的存储器保护。另外,本文描述的技术使得能够通过在交叉密钥域攻击中将数据从一个租户注入另一租户,或者通过在行-锤击(row-hammer)攻击中翻转物理存储器比特,或者以其他方式物理地操纵存储器设备来检测损坏存储器的尝试。因为本文描述的技术对于对手是密码非确定性的,所以对手不可能对存储器数据进行确定性操纵,例如,检测。
说明书中对所公开的主题的“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在所公开的主题的至少一个实施例中。因此,短语“在一个实施例中”可以出现在整个说明书中的各处,但是该短语可以不一定指代相同的实施例。
图1是可以管理经加密的数据的主机计算设备的示例的框图。主机计算设备100可以是例如移动电话、膝上型计算机、台式计算机或平板计算机,以及其他。主机计算设备100可以包括适于执行存储的指令的处理器102,以及存储可由处理器102执行的指令的存储器设备104。处理器102可以是单核心处理器、多核心处理器、计算集群或任何数量的其他配置。存储器设备104可以包括随机存取存储器、只读存储器、闪速存储器或任何其他合适的存储器系统。由处理器102执行的指令可以用于实现可以传输经加密的图像数据的方法。
处理器102还可以通过系统互连106(例如,快速NuBus等)链接到适于将主机计算设备100连接到显示设备110的显示接口108。显示设备110可以包括显示屏,该显示屏是主机计算设备100的内置组件。显示设备110还可以包括外部连接到主机计算设备100的计算机监视器、电视或投影仪,以及其他。显示设备110可以包括发光二极管(LED)和微LED,以及其他。
另外,网络接口控制器(本文也称为NIC)112可以适于通过系统互连106将主机计算设备100连接到网络(未描绘)。网络(未描绘)可以是蜂窝网络、无线电网络、广域网(WAN)、局域网(LAN)或互联网,以及其他。
处理器102可以通过系统互连106连接到适于将计算主机设备100连接到一个或多个I/O设备116的输入/输出(I/O)设备接口114。I/O设备116可以包括例如键盘和定点设备,其中定点设备可以包括触摸板或触摸屏,以及其他。I/O设备116可以是主机计算设备100的内置组件,或者可以是外部连接到主机计算设备100的设备。
在一些实施例中,处理器102还可以通过系统互连106链接到任何存储设备118,该存储设备118可以包括硬盘驱动器、光盘驱动器、USB闪速驱动器、固态驱动器或其他非易失性存储器、驱动器阵列或其任何组合。在一些实施例中,存储设备118可以包括任何合适的应用程序和存储的数据。
在一些实施例中,处理器102可以包括可由存储器控制器119执行的任何合适数量的逻辑模块。在一些示例中,存储器控制器119(或存储器管理单元)是处理器102上与外部系统存储器设备104交互的逻辑。存储器控制器119可以与外部存储器104交互以进行读取/写入操作,发送或接收数据,计算/管理MAC、纠错码、加密/解密等。在一些示例中,MAC管理器120可以基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储第一消息认证码(MAC)。如本文提到的MAC可以包括涉及密码散列函数和秘密密码密钥的任何合适的消息认证码。在一些实施例中,MAC管理器120还可以检测与存储在系统存储器中的数据相对应的读取操作,并且基于存储在系统存储器中的数据来计算第二MAC。MAC管理器120还可以确定第二MAC与第一MAC不匹配,并且在纠正操作之后重新计算第二MAC,其中纠正操作包括基于存储在系统存储器中的数据和用于系统存储器的设备的替代值的XOR运算。此外,解密管理器122可以响应于检测到重新计算的第二MAC与第一MAC匹配而对存储在系统存储器中的数据进行解密。在一些实施例中,数据发送器124可以将经解密的数据发送到驻留在处理器102上的高速缓存126或任何其他合适的高速缓存或存储器设备。在一些示例中,高速缓存126(或高速缓存层级)位于处理器102与存储器控制器119之间。在一些实施例中,处理器102、高速缓存126和存储器控制器119可以在相同的物理芯片/管芯或封装上。
可替代地,在一些实施例中,MAC管理器120可以基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储经加密的第一纠正值。另外,MAC管理器120还可以检测与存储在系统存储器中的数据相对应的读取操作,并且基于存储在系统存储器中的数据来计算第二块纠正值,第二块纠正值基于包括存储在系统存储器中的明文数据的XOR运算被计算。在一些实施例中,MAC管理器120可以确定第二块纠正值与经解密的第一块纠正值不匹配,并且利用纠正操作来重新计算第二块纠正值,其中纠正操作包括基于存储在系统存储器中的经解密的数据和用于系统存储器的设备的替代值的XOR运算。此外,解密管理器122可以响应于检测到重新计算的第二块纠正值与第一块纠正值匹配而对存储在系统存储器中的数据进行解密,并且数据发送器124可以将经解密的数据发送到高速缓存。
应理解,图1的框图并不旨在指示主机计算设备100将包括图1中所示的所有组件。相反,主机计算设备100可以包括更少的组件,或图1中未示出的附加组件(例如,附加存储器组件、嵌入式控制器、附加模块、附加网络接口等)。此外,MAC管理器120、解密管理器122和数据发送器124的功能中的任何功能可以部分地或完全地在硬件和/或处理器102中实现。例如,功能可以利用专用集成电路、在嵌入式控制器中实现的逻辑来实现,或者在处理器102中实现的逻辑中实现,以及其他。在一些实施例中,MAC管理器120、解密管理器122和数据发送器124的功能可以利用逻辑来实现,其中如本文提到的逻辑可以包括任何合适的硬件(例如,处理器,以及其他)、软件(例如,应用,以及其他)、固件,或者硬件、软件和固件的任何合适组合。
图2示出了双列直插式存储器模块(DIMM)的框图。在图2中,DIMM 200可以是SIMM、SO-DIMM、NVDIMM、VLPDIMM、DDR DIMM、DDR2DIMM、DDR3DIMM、DDR4DIMM或DDR5DIMM,以及其他。DIMM 200可以包括任何数量的设备或集成电路或芯片。例如,在DIMM 200的两个存储器组202和204中描绘了用于存储数据的八个设备。在一些示例中,错误相关设备206可以驻留在存储器组202和204附近,并且错误相关设备206可以存储MAC值。在一些示例中,DIMM 200还可以包括DIMM 200的后侧(未描绘)上的附加设备。DIMM 200的后侧还可以包括存储器组和用于存储设备纠正值的错误相关设备。错误相关设备206和DIMM 200后面的错误相关设备可以提供附加的存储器来存储检测和纠正码。
应理解,图2的框图并不旨在指示DIMM 200将包括图2中所示的所有组件。相反,DIMM 200可以包括更少的组件,或图2中未示出的附加组件(例如,附加存储器组件、嵌入式控制器、附加传感器、附加接口等)。
图3示出了用于管理经加密的数据的过程流程图。图3中示出的方法300可以利用任何合适的计算组件或设备来实现,例如,图1的计算设备100。
在框302处,MAC管理器120可以基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,计算和存储第一MAC。例如,MAC管理器120可以检测对系统存储器的写入操作,并且使用具有第二密钥的任何合适的密码MAC函数,以及其他,以基于存储在存储器中的数据生成MAC值。在一些实施例中,存储在存储器中的数据可以包括利用任何合适的加密技术加密的任何合适的密文。跨设备数据的块的逻辑运算的结果可以存储为设备数据块纠正值。
在框304处,MAC管理器120可以检测与存储在系统存储器中的数据相对应的读取操作。例如,MAC管理器120可以基于存储在系统存储器中的经加密的数据来检测执行指令的尝试。
在框306处,MAC管理器120可以基于从系统存储器取回的经加密的数据来计算第二MAC。MAC管理器120可以应用对写入操作使用的相同MAC函数,以及使用相同的密钥,以便产生匹配的MAC。
在框308处,MAC管理器120可以确定第二MAC与第一MAC不匹配。例如,MAC管理器120可以检测自从数据作为写入操作的一部分被存储在存储器中以来,存储在存储器中的数据的比特是否已经翻转。在一些示例中,存储器中的翻转的比特可以表示由操纵存储在存储器中的数据的恶意尝试损坏的数据。
在框310处,MAC管理器120可以利用纠正操作来重新计算第二MAC,其中纠正操作包括基于从系统存储器取回的设备数据块和用于系统存储器的被排除的设备数据块的替代值的XOR运算。在一个示例中,替代值(本文也称为展开的纠正值)可以修复存储在存储器的设备中的已损坏数据。对于简化示例,假设的16比特高速缓存行可以由四个4比特集成电路或设备数据块和4比特MAC构成,例如,1010(块1)、0100(块2)、1101(块3)、1011(块4)和0010(MAC)。可以基于对设备数据块1-4的设密钥的安全散列操作来计算MAC值。纠正值可以是基于逻辑XOR运算的设备1-4的组合,其产生值1000。MAC值也可以包括在XOR运算中,产生1010设备块纠正值(BC)。在一些示例中,纠正值可以用于重建丢失的设备数据块中的任一个,包括具有XOR运算的MAC设备,假设其他设备没有错误。例如,可以基于对纠正值、MAC值和设备数据块2-4的值的逻辑XOR运算来计算用于有错误的设备1的替换数据块。另外,可以基于将用于设备1的替代纠正值与设备数据块2-4的值和存储的第一MAC值组合的设密钥的安全散列操作,计算第二MAC值。如果通过替换为替代值,有错误的设备数据被修复,则该第二计算的MAC值应该与第一存储的MAC值匹配。然后应该使用替代值而不是有错误的设备数据块。否则,计算的第二MAC值将以高概率与第一存储的MAC值不匹配。
在框312处,解密管理器122可以响应于检测到重新计算的第二MAC与第一MAC匹配而对存储在系统存储器中的数据进行解密。在框314处,数据发送器124可以将经解密的数据发送到高速缓存。
在一些实施例中,图3的过程流程图不旨在指示方法300的操作将以任何特定顺序执行,或者在每种情况下包括方法300的所有操作。另外,方法300可以包括任何合适数量的附加操作。例如,本文的技术可以应用于纠正任何合适大小的块或集成电路。在一些示例中,可以在块纠正值大小与用于纠正一个有错误的数据块的纠正尝试次数之间存在折中。如下面所示,高速缓存行可以表示为大小为S的N个设备数据块B[0],...,B[N-1]的集合。在一些实施例中,可以将任何合适的密码安全散列函数用作MAC函数,例如,基于SHA-3的MAC,以及其他。在一些示例中,MAC函数接受任何合适的秘密密钥和多个数据块作为输入,如下面的等式1所示:
MAC=SHA3(密钥,B[0]||…||B[N-1]) 等式1
在一些实施例中,可以基于作为存储器地址的一部分的元数据或密钥标识符来选择密钥。在一些示例中,替代MAC函数可以包括存储器中的数据行的存储器地址,其作为散列化的数据的一部分。另外,在一些示例中,MAC函数可以利用诸如SHA-1或SHA-2以及其他之类的任何合适的替代密码安全散列函数来计算。
在一些示例中,可以按照XOR运算来计算设备块纠正值(BC):
在一些示例中,从存储器读取返回的数据是B′[0]…B′[N-1],如果没有错误,则其可以等于B[0]...B[N-1]。如果MAC不匹配,则可以利用XOR运算来计算修复值(RV),其中来自B'[0]到B'[N-1]的集合中的设备数据块B'[i]中的一个从以下等式略去:
如上面讨论的,在纠正操作中修复每个设备并验证MAC的尝试可以包括,针对每个设备数据:
MAC′=SHA3(密钥,B′[0]||…||(B′[i]替换RV)||…||B′[N-1]) 等式4
在一些示例中,MAC函数可以利用诸如SHA-1或SHA-2以及其他之类的任何合适的替代密码安全散列函数来计算。如果MAC′匹配MAC,则可以返回修复的值来代替有错误的设备数据块。否则,可以提供返回错误。
可替代地,可以针对每个设备计算修复值RV,而无需将该设备的数据块与其他设备的数据块进行XOR。在该示例中,RV可以在修复尝试期间替代设备数据块。在一些示例中,S=32并且N=16。然而,S和N可以是任何合适的值。在一个示例中,如果S=1,并且N=512,则每个比特可能被翻转,并且可以在每个比特翻转之后验证MAC。在该示例中,可以不存储BC。
图4示出了用于管理经加密的数据的过程流程图。图4中示出的方法400可以利用任何合适的计算组件或设备来实现,例如,图1的计算设备100。
在框402处,MAC管理器120可以计算MAC。在一些示例中,响应于如上面讨论的读取操作而计算MAC。MAC管理器120可以基于存储在包括数据的高速缓存行的任何合适数量的集成电路或设备中的经加密的数据,利用设密钥的安全散列操作来计算MAC。
在框404处,MAC管理器120可以确定计算的MAC是否与存储的MAC匹配。如果计算的MAC与存储的MAC匹配,则过程流程在框406处继续,其中错误被纠正(或从不存在),数据被解密并发送到高速缓存设备。如果计算的MAC与存储的MAC不匹配,则过程流程在框408处继续,其中测试集成电路或存储器设备中的每个。
如果对包括数据的高速缓存行的集成电路或设备中的每个进行了测试,但第一MAC和第二MAC从不匹配,则过程继续到框410,其中报告不可纠正的错误。如果尚未对包括数据的高速缓存行的集成电路或设备中的每个进行测试,则过程流程在框412处继续。在框412处,MAC管理器120可以在XOR计算中跳过下一集成电路或设备数据块,并且替换展开的或经XOR的修复值(RV)来计算MAC值。过程流程返回到框402。
在一些示例中,本文的技术可以与任何合适长度的MAC大小一起使用。例如,如果MAC值是64比特,则可以使用两个备用集成电路或存储器设备来存储两个32比特值。两个32比特MAC值可以与逻辑或运算组合。在一些实施例中,可以响应于读取操作而计算两个MAC值,并且可以级联两个MAC值的结果以生成64比特MAC值。
在一些实施例中,本文的技术可以使用包括数据的高速缓存行的存储器DIMM的每个集成电路或设备一次尝试来纠正单个设备或集成电路内的单比特错误或多比特错误。在一些示例中,该技术还可以跨多个设备或集成电路纠正多个单比特错误。例如,如果两个单独的设备中的每个设备存在一个比特错误,则完全展开的或经XOR的纠正值可以显示两个比特已经翻转。在一些实施例中,可以通过翻转每个设备数据块中的各种比特组合来测试MAC。例如,对于8个DDR5设备,可以跨n个设备翻转每个设备数据块两个比特位点。因此,六十四个MAC测试可以识别包含单个单比特错误的两个设备。
在一些示例中,如果完全展开的或经XOR的纠正值具有大量翻转的比特,则该错误可能是完全设备故障。设备故障可能跨多次存储器读取持续,但使用较少的修正尝试。例如,对DDR5存储器而言,针对SHA3加密仅添加22*8个额外时钟可能是最坏情况,并且这些操作可以并行执行。在一些示例中,SHA3加密比AES-XTS解密花费更少的时钟周期,因此当通过密文计算MAC并且与对存储器读取操作的解密并行地计算时,除加密之外,完整性不会对于存储器读取增加任何性能开销。
图4的过程流程图不旨在指示方法400的操作将以任何特定顺序执行,或者在每种情况下包括方法400的所有操作。另外,方法400可以包括任何合适数量的附加操作。
图5A和图5B描绘了用于存储经加密的数据的数据结构的示例。在一些示例中,每个设备502A可以包括任何合适数量的比特。例如,每个设备502A可以包括16比特值、32比特值或64比特值,以及其他。在一些实施例中,任何数量的设备可以在大小上等于加密密钥或加密块。例如,如果大小为32比特,则设备502A、504A、506A和508A可以等于利用AES加密的数据的块大小。在一些实施例中,通过基于先前存储的MAC值512A和存储在设备数据块502A、504A、506A、508A中的经加密的数据值计算XOR运算的结果来生成纠正值510A,并且同样地,514A中所示的设备中的所有其余设备对数据的高速缓存行有影响。
在图5B中,设备数据块502B、504B、506B、508B和510B可以将经加密的数据存储在存储器中。在一些示例中,基于对设备数据块502B、506B、508B以及示为510B、MAC 514B和纠正值516B的所有其他设备数据块的XOR运算,针对设备数据块504B生成替代值512B。例如,如果存储的MAC 514B未能匹配计算的数据行的MAC 518B(组合的设备数据块),则可以利用基于MAC值514B、纠正值516B以及设备数据块中的排除正在测试的一个设备数据块的每个设备数据块的XOR运算(本文也称为展开)来生成替代值512B。例如,可以从XOR序列中排除设备数据块504B,以确定设备数据块504B是否包括有错误的比特,因为使用所产生的替代值代替设备数据块504B并且重新计算的第二MAC匹配存储的第一MAC。
图6示出了用于基于数据的熵级别来管理经加密的数据的过程流程图。图6中示出的方法600可以利用任何合适的计算组件或设备来实现,例如,图1的计算设备102。方法600可以利用启发法来定位哪个设备或存储器设备的部分可能故障。例如,如果经解密的AES块显示随机明文,则可能对该AES块有影响的设备数据块中的一个设备数据块故障。
在框602处,MAC管理器120可以检测到计算的MAC与存储的MAC值不匹配。在框604处,MAC管理器120可以对存储的存储器中的多个数据块进行解密。在一些实施例中,经解密的设备数据块的数量等于加密密钥的长度。例如,各自存储三十二比特的四个设备数据块可以针对一百二十八比特加密块被解密。在一些示例中,块的大小对应于块密码的输入或输出的大小。例如,诸如AES 128之类的块密码可以使用128比特密钥来加密/解密128比特块大小的数据。可替代地,诸如AES 256之类的块密码可以使用256比特密钥来加密/解密128比特的相同大小的数据块。
在框606处,MAC管理器120可以确定经解密的数据块的明文是否具有低于阈值值的熵。例如,如果明文中的零比特和一比特的数量近似相等或具有相等的分布,则由于数据的随机性质,熵高于阈值。因此,方法600可以包括忽略具有低熵的明文数据,或者首先选择具有最高熵的块用于替代测试。在一个示例中,在字节对齐位点具有多个8比特零的经解密的块可以不被认为是随机的或损坏的,因此可以从识别具有错误的损坏数据块的过程中消除包括该块的那些设备。在其他示例中,具有重复值或与其他经解密的块类似的值的经解密的明文被认为具有较低的熵,并且可以在替代值测试中首先被跳过,因为这些明文不可能是存储器损坏的源。
如果经解密的数据的明文具有高于阈值值的熵,则过程流程在框608处继续。在框608处,MAC管理器120可以确定通过如上面关于图3讨论的用纠正值替代设备数据块是否对每个数据的块进行纠正。如果经解密的数据的明文具有低于阈值值的熵,则通过在返回过程流程图的框602之前测试随后数量的数据的块,过程流程在框610处继续。MAC管理器还可以在用具有最高熵的经解密的块的替代值替换每个设备数据块之后重新计算第二MAC。
在一些实施例中,还可以对数据使用压缩以在数据高速缓存行内使Reed-Solomon码或类似的ECC错误检测码适合。如果这些码跨多个块重复,则这些码也可以用于精确识别比特错误位置,而不要求反复试验。类似地,对数据行的压缩可以允许MAC值存储在通过压缩而释放的空间中,从而减少了对保存MAC值的附加存储器的需要。此外,如果存在设备故障或卡在故障处,则可能是跨对与相同设备相对应的对齐的存储器位置的多个存储器读取。这意味着多个相邻读取将经历相同的故障位置。这将有助于纠错关注针对卡住的故障最有可能的设备,再次,减少反复试验。
图6的过程流程图不旨在指示方法600的操作将以任何特定顺序执行,或者在每种情况下包括方法600的所有操作。另外,方法500可以包括任何合适数量的附加操作。
图7描绘了用于计算MAC的流水线技术。在一些实施例中,用于MAC计算的流水线可以用于推测性修复的设备数据块,而不是针对每次修复尝试的顺序MAC计算。例如,在完全流水线设计(1阶段/时钟周期)中,在每个时钟周期处,i=0...15,高速缓存行可以与“修复的”设备i一起提交到MAC生成流水线中,使得MAC值是并行计算的。在一个示例中,假设SHA-3加密流水线具有22个周期时延,最佳情况下的总时延结果可以是22个周期,最坏情况下是47个周期,并且平均情况下是29个周期。在一些示例中,SHA-3流水线可以部分地流水线化以匹配吞吐量,即,每四个周期接受一个高速缓存行。在一些实施例中,修复存储MAC值的设备不要求重新计算高速缓存行数据上的MAC值,因为数据在修复尝试中未改变。相反,该过程可以包括执行XOR运算以生成“修复的”MAC并试图将修复的MAC与在原始读取数据上生成的MAC匹配。在一些示例中,可以在试图修复任何设备数据块之前首先执行该修复尝试,这可能由于MAC重新计算而具有至少22个周期时延。
在图7的示例700中,完全流水线化的SHA-3引擎由22个相同的级联阶段组成,其中的每个级联阶段具有用于Keccak函数的一组状态寄存器和组合逻辑。可以将输入提供给每个阶段,并且最后一个阶段提供输出。为了增加该流水线的利用率,流水线阶段K 702的循环可以通过输入in0...in21 704将输入702馈送到流水线阶段中的任一个。特定输入数据的输出在22个周期之后从对应的输出out0...out21 706被取回。
这种循环设计允许在同一周期中加载多个输入高速缓存行并且对其进行并行处理而不是偏斜一个周期。这在计算MAC以修复设备数据块时很有用。在最好的情况下,如果流水线为空,则可以并行加载“已修复的”高速缓存行以确定哪个设备故障,从而减少时延。在一些示例中,未使用的输入可以用于计算从存储器到达的其他数据响应的MAC。这改进了具有频繁DRAM错误的存储器密集工作负载的时延和吞吐量。硬件仲裁器可以用于对正在进行的MAC计算保持跟踪并且将输入数据复用到适当的阶段。这种方法也可以应用于部分流水线化的设计,其中每个阶段将多轮Keccak函数应用于当前状态,直到将其转移到下一阶段。这些阶段中的每个阶段可以具有如上面描述的外部输入和输出,以便最大化每个阶段的利用率。
图8示出了用于管理经加密的数据的过程流程图。图8中示出的方法800可以利用任何合适的计算组件或设备来实现,例如,图1的计算设备102。
在框802处,MAC管理器120可以基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储经加密的第一块纠正值和第一MAC值。第一块纠正值包括对写入存储器的数据行中的每个数据的块的明文的XOR。另外,MAC管理器可以计算数据行中的经加密的数据的附加MAC值,并且将附加MAC值存储到存储器。在框804处,MAC管理器120可以检测与存储在系统存储器中的数据相对应的读取操作。
在框806处,MAC管理器120可以基于存储在系统存储器中的数据来计算第二块纠正值。在一些示例中,可以基于包括存储在系统存储器中的数据行的每个块的明文数据或经解密的数据的XOR运算,计算第二块纠正值。在一些示例中,可以响应于读取操作而生成第二块纠正值。
在框808处,MAC管理器120可以确定第二块纠正值与经解密的第一存储的块纠正值不匹配。在这种情况下,MAC管理器120可以从存储器取出附加的存储的MAC值,并且计算存储在存储器中的数据行的第二MAC。如果存储的MAC与第二计算的MAC匹配,则确定块纠正码是错误的,并且可以解密数据并且将其发送到高速缓存。如果在框810处,存储的MAC与第二计算的MAC不匹配,则MAC管理器120可以在框812处利用纠正操作重新计算第二块纠正值。在一些实施例中,纠正操作包括基于存储在系统存储器中的经解密的数据块的XOR运算,并且通过略去设备数据块并使用其余的块纠正值代替经解密的设备数据块明文来确定用于系统存储器的设备数据块或集成电路的替代值。然后利用秘密密钥(用于对设备数据块进行加密)来对替代值进行加密,并且使用剩余的经加密的块和经加密的替代值来重新计算第二MAC。
在框814处,解密管理器122可以响应于检测到重新计算的第二MAC值与第一存储的MAC值匹配,而对存储在包括高速缓存行的系统存储器中的数据进行解密。在框816处,数据发送器124可以将经解密的数据发送到高速缓存。
图8的过程流程图不旨在指示方法800的操作将以任何特定顺序执行,或者在每种情况下包括方法800的所有操作。另外,方法800可以包括任何合适数量的附加操作。在方法800中,块纠正码本身可以安全地(以不可伪造的方式)检测数据具有至少一个错误。附加MAC值可以用于确定何时任何错误被纠正或修正。如果没有错误,则不取回附加的存储的MAC值。在一些实施例中,附加MAC值可以存储在单独的存储器位置中,因此,移除了针对MAC对存储器设备(例如,DIMM)上的附加设备的需要。一些实施例可以通过使用每个经解密的数据的块的熵来确定哪个设备/块有错误并且使用替代值代替最高熵的经解密的数据的块,来完全消除附加存储的MAC值,如图6所示。同样,数据压缩技术可以用于在通过压缩数据行而释放的空间内使MAC适合。
图9是用于管理经加密的数据的过程流程图。在一些实施例中,方法900可以包括在计算纠错码之前变换每个设备数据块。一种变换是使用小块大小密码(例如,SIMON、SPECK、PRINCE,以及其他),其中块大小与设备大小匹配,以在对每个产生的密文进行XOR之前利用秘密密钥单独地加密每个设备。一些实施例可以包括调整(tweak),例如,使用XTS(具有密文窃取的基于XEX的经调整的码本模式)或其他可调整模式,其中调整包括设备数据块的地址以创建依赖于存储器位点/位置的密文。还可以通过附加地址比特或指示一组密钥中要使用哪个密钥的其他可缓存的元数据来选择使用哪个密钥来对数据行加密/解密。
因此,甚至纠正码也是安全的。例如,具有小块大小密码对每个设备的加密可以用作XOR函数的输入以计算经XOR的纠正码。攻击者要使所有设备数据块展开为零需要知道该秘密函数输出。因此,MAC和纠正码两者一起起作用,提高块的安全性。
在框902处,MAC管理器120可以响应于读取操作而计算MAC,对数据进行机密,以及对块纠正值进行解密。在一些示例中,块纠正值以来自先前写入操作的加密格式存储。在一些实施例中,可以在解密之前基于存储在存储器中的经加密的数据来计算MAC。
在框904处,MAC管理器120可以确定经解密的块纠正值是否与基于明文数据或经解密的数据的XOR结果匹配。如果块纠正值与经XOR的明文数据块匹配,则过程流程在框906处继续,并且经解密的数据被发送到高速缓存。如果块纠正值与经XOR的明文数据块不匹配,则过程流程在框908处继续。
在框908处,MAC管理器120可以确定计算的MAC是否与存储的MAC匹配。如果计算的MAC与存储的MAC匹配,则过程流程通过将经解密的数据发送到高速缓存设备而在框906处继续。如果计算的MAC与存储的MAC不匹配,则过程流程继续到框910。在框910处,MAC管理器120可以在XOR计算中跳到下一设备数据块,在返回到框908之前,针对经解密的设备数据块替换经解密的块纠正值,对替代值进行重新加密,并且重新计算其余经加密的设备数据块上的MAC和经加密的替代值。因此,为了使损坏的高速缓存行通过完整性检查,攻击者不仅要伪造MAC,还要伪造使用秘密密钥生成的块纠正值。因此,这高效地成为两个MAC解决方案,特别是当需要比错误检测码的设备数据块中可以适合的更强(更大)的MAC时。随着DRAM设备密度增加,上述方案在降低ECC存储器成本方面也是高效的,因为MAC可以单独存储在隔离的(例如,由软件分配的)存储器中或作为存储器中的表结构(由与每个表条目相关联的存储器地址索引的表)。因此可以消除DIMM上用于ECC错误检测码和/或MAC的额外ECC芯片/设备。同时,当设备纠正无法匹配时,可以使用用于MAC的隔离的存储器。MAC用于确定纠正值中的哪个纠正值成功,或者纠正设备是否是故障部分,因为MAC将匹配未纠正的数据行值。最后,可以使用如压缩的技术将MAC嵌入数据行内(当可压缩时),仅对不进行压缩的数据高速缓存行使用MAC查找。这可以进一步减少所要求的隔离的存储器的量,并且在纠正存储器错误时减少存储器查找次数。
图10A和图10B描绘了用于利用块纠正值和第二MAC来管理经加密的数据的技术。在图10A中,在存储器写入时,经加密的数据1002A可以用于计算单独存储的MAC 1004A。另外,数据的经解密的版本或明文数据1006A可以与XOR运算组合以生成作为纠正值1010A的经XOR的明文1008A。纠正值1010A可以以加密格式1012A存储为经加密的块纠正值。
在图10B中,在存储器读取时,对存储器行的所有设备数据块进行解密。然后将每个设备块的明文一起进行XOR,并且与经解密的块纠正值1010B进行比较。在对明文1004B进行XOR运算以生成经XOR的明文1006B之前,可以对每个设备数据1002B进行解密。在一些示例中,可以对经加密的块纠正值1008B进行解密,以生成经解密的块纠正值1010B,将该经解密的块纠正值1010B与经XOR的明文1006B进行比较。在一些示例中,当1010B的经解密的值和1006B不匹配时,经XOR的明文1006B可以与经解密的块纠正值1010B进行XOR,同时从1006B计算中一次略去一个设备/块。然后对产生的块纠正值进行加密,以产生初始经加密的有错误的设备的数据块值。然后将该值替换被略去的设备的数据块,并且重新计算MAC并将其与单独存储的MAC进行比较,直到识别并纠正有错误的设备的数据块。在一些示例中,即使当MAC通过时,当块/设备被变换并与初始块纠正值进行XOR时,块纠正值应该由于XOR运算而展开或生成零值。
在一些实施例中,即使当多个密钥(MKTME)用于对数据进行AES-XTS加密时,本文描述的技术也可以提供重放保护。例如,MAC管理器120可以利用唯一密钥周期性地对MAC值重设密钥(rekey),其中使用MKTME AES-XTS密文和唯一MAC密钥来重新计算MAC。重设密钥可以与其中读取存储器的存储器刷新一致,MAC是利用旧密钥计算的并且与针对相同存储器行的旧的存储的MAC进行比较,并且如果这些值匹配,则在将新MAC写回存储器之前利用新密钥来重新计算MAC。在一些示例中,这些技术可以使用诸如ICV之类的构造,其等于HMACrk(Ck)XOR AESk(地址)。该构造允许针对HMAC刷新密钥rk。这独立地组合在来自特定域密钥(k)的数据密文(Ck)上的MAC和使用调整(使用地址的XTS调整)的密钥相关测试。
在该示例中,如果对手或未授权用户针对相同的存储器地址从另一密钥域重放内容,则密文上的HMAC将正确计算,但使用当前密钥域密钥k的基于地址的调整将在存储器读取时不匹配。MAC管理器120可以计算密文数据高速缓存行上的旧HMAC(使用先前刷新密钥rk),对来自存储的ICV的数据高速缓存行内容进行XOR,并且使用刷新的密钥将其与新HMAC进行XOR。
在一些实施例中,MAC管理器120可以使用替代构造来对MAC重设密钥。例如,MAC管理器120可以使用构造ICV,其等于HMACrk(Ck)XOR HMACk(地址)。该构造提供密文损坏检测,其可跨密钥域损坏检测扩展,并且可以刷新以限制重放而无需附加的MAC密钥。
在另一实施例中,MAC管理器120可以使用等于ENCRYPTrk(SHA3(Ck,TWEAKk))的构造ICV来对MAC值重设密钥。这里,ENCRYPT可以是小的块密码(例如,SIMON,以及其他),其与利用刷新密钥rk加密HMAC的截断的SHA3HMAC的大小相同(例如,32比特或64比特等)。除了基于数据加密密钥k的密文之外,HMAC还包含基于XTS的调整(例如,基于数据加密密钥的AES加密的存储器地址)。这允许ICV防止跨域攻击并且绑定到数据被物理地存储的存储器地址/位置。调整操作可以与用于XTS加密数据以产生Ck的操作相同,但是不同调整偏移可以排他性地用于该操作(例如,基于扩展的地址值,以从用于对数据行进行加密的调整中产生附加的唯一调整值)。类似地,可以使用其他密码密钥导出技术代替调整以产生依赖于数据加密密钥的HMAC。在一些示例中,基于数据加密密钥k的TWEAKk实际上是密钥导出函数,其使得SHA3散列算法输出MAC,然后该MAC可以被截断。使用具有加密密钥的调整的优点是其消除对存储用于计算MAC的单独密钥的需要。相反,加密密钥可以通过密钥导出函数重用,该密钥导出函数使用加密密钥k来加密经加密的数据行(Ck)的存储器地址(利用填充)。同样地,可以使用任何安全散列函数来代替SHA3,并且可以使用任何密钥导出函数来代替调整。
重放/版本树也可以与该构造一起使用。这里,嵌入的MAC是如先前描述的ECC存储器MAC。重放树的MAC可以包括针对高速缓存行的父计数器值。根计数器/一次使用随机数(nonce)(或针对多个存储器区域的计数器/一次使用随机数)也可以嵌入在管芯上的硬件中。存储器中树的第一级别包含具有一组计数器/一次使用随机数值和ECC存储器中的MAC的高速缓存行。该MAC是在包括高速缓存行和存储在管芯上的相关联的根计数器/一次使用随机数的所有计数器值上计算的。该行上的每个计数器/一次使用随机数值都是树的下一级别的父亲。树的下一级别是具有计数器/一次使用随机数值的行,再次,其中ECC存储器中的MAC将行中的所有计数器/一次使用随机数值和来自树中前一行的单个父一次使用随机数/计数器散列化。树的最后一级/叶子由如先前描述的数据行和ECC存储器中的其MAC组成,一个区别在于MAC也在父计数器/一次使用随机数值上散列化。这样,在每次将数据写入存储器时,都可以防止重放,根计数器和指向更新的数据行的计数器/一次使用随机数树的分支中的所有计数器值递增/更新,并且ECC存储器中的所有受影响的MAC被重新计算。在存储器读取时,通过检查计数器/一次使用随机数值正确/未修改,针对与读取数据行相关的树的分支来验证MAC。可以利用与用于加密数据行的密钥不同的秘密密钥来计算MAC值,并且在数据行的AES-XTS密文上计算MAC,从而允许利用诸如MKTME之类的不同密钥来加密不同的数据。
在一些实施例中,ECC/完整性值也可以存储到单独的存储器位置,因此其不要求添加物理ECC存储器/ECG DIMM。在这种情况下,将使用附加的存储器读取/写入来从单独的存储器位置取出ECG/完整性值。例如,ECC纠正字段可以扩展到正确的存储器并且是用于检测错误的HMAC。使用熵测试对哪个设备可能出错进行确认消除了对存储任何其他值的需要,从而节省一半的ECC存储器开销并且降低成本。
图11示出了用于管理经加密的数据的非暂时性计算机可读介质的框图。有形的、非暂时性计算机可读介质1100可以由处理器1102通过计算机互连1104进行存取。此外,有形的、非暂时性计算机可读介质1100可以包括用于指引处理器1102执行当前方法的操作的代码。
本文讨论的各种软件组件可以存储在有形的、非暂时性计算机可读介质1100上,如图11所示。例如,MAC管理器1106可以基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储第一消息认证码(MAC)。在一些实施例中,MAC管理器1106还可以检测与存储在系统存储器中的数据相对应的读取操作,并且基于存储在系统存储器中的数据来计算第二MAC。MAC管理器1106还可以确定第二MAC与第一MAC不匹配,并且利用纠正操作来重新计算第二MAC,其中纠正操作包括基于存储在系统存储器中的数据和用于系统存储器的设备的替代值的XOR运算。此外,解密管理器1108可以响应于检测到重新计算的第二MAC与第一MAC匹配,对存储在系统存储器中的数据进行解密。在一些实施例中,数据发送器1110可以将经解密的数据发送到驻留在处理器102上的高速缓存或任何其他合适的高速缓存或存储器设备。
可替代地,在一些实施例中,MAC管理器1106可以基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储经加密的第一块纠正值。另外,MAC管理器1106还可以检测与存储在系统存储器中的数据相对应的读取操作,并且基于存储在系统存储器中的数据来计算第二块纠正值,第二块纠正值基于包括存储在系统存储器中的明文数据的XOR运算被计算。在一些实施例中,MAC管理器1106可以确定第二块纠正值与经解密的第一块纠正值不匹配,并且利用纠正操作重新计算第二块纠正值,其中纠正操作包括基于存储在系统存储器中的经加密的数据和用于系统存储器的设备的替代值的XOR运算。此外,解密管理器1108可以响应于检测到重新计算的第二块纠正值与第一块纠正值匹配而对存储在系统存储器中的数据进行解密,并且数据发送器1110可以将经解密的数据发送到高速缓存。
应理解,图11中所示的任何合适数量的软件组件可以包括在有形的、非暂时性计算机可读介质1100内。此外,取决于特定应用,图11中未示出的任何数量的附加软件组件可以包括在有形的、非暂时性计算机可读介质1100内。
示例1
在一些示例中,一种用于管理经加密的存储器的系统,包括处理器,该处理器用于基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储第一消息认证码(MAC)。处理器还可以检测与存储在系统存储器中的数据相对应的读取操作,基于从系统存储器取回的数据来计算第二MAC,以及确定第二MAC与第一MAC不匹配。此外,处理器还可以在纠正操作之后重新计算第二MAC,其中纠正操作包括基于从系统存储器取回的数据和用于系统存储器的设备的替代值的XOR运算。另外,处理器可以响应于检测到重新计算的第二MAC与第一MAC匹配而对存储在系统存储器中的数据进行解密,以及将经解密的数据发送到高速缓存。
可替代地或另外地,纠正操作包括针对系统存储器的多个设备重新计算第二MAC。可替代地或另外地,处理器用于针对多个设备中的每个设备执行XOR运算,其中XOR运算是基于替代值和存储在多个设备中的其中一个设备被排除的每个设备中的数据的。可替代地或另外地,处理器用于:针对系统存储器的每个设备,响应于检测到重新计算的第二MAC与第一MAC不匹配,生成不可纠正的错误。可替代地或另外地,处理器用于对存储在系统存储器中的数据的块进行解密,其中块的大小对应于块密码的输入或输出的大小,确定经解密的数据的块中的明文的熵高于阈值级别,以及对存储数据的块的一部分的系统存储器中的每个设备执行纠正命令。可替代地或另外地,处理器包括用于在并行流水线中执行纠正命令的逻辑,其中并行流水线包括针对系统存储器的每个设备利用替代值生成第二MAC。可替代地或另外地,处理器用于生成块纠正值。可替代地或另外地,处理器用于响应于预先确定的时间段到期而对第一MAC和第二MAC重设密钥。
示例2
在一个实施例中,一种用于管理经加密的数据的系统,包括处理器,该处理器用于基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储经加密的第一块纠正值。处理器还可以检测与存储在系统存储器中的数据相对应的读取操作,以及基于存储在系统存储器中的数据来计算第二块纠正值,第二块纠正值基于包括存储在系统存储器中的明文数据的XOR运算被计算。另外,处理器可以确定第二块纠正值与经解密的第一块纠正值不匹配,确定存储的第一MAC值与计算的第二MAC不匹配,以及利用纠正操作来重新计算第二块纠正值,其中纠正操作包括基于存储在系统存储器中的经解密的数据和用于系统存储器的设备的替代值的XOR运算。此外,处理器可以响应于检测到重新计算的第二MAC与第一块纠正值匹配而对存储在系统存储器中的数据进行解密,以及将经解密的数据发送到高速缓存设备。
可替代地或另外地,处理器用于基于包括存储在系统存储器中的密文数据的XOR运算来生成第一MAC。可替代地或另外地,处理器用于对存储在系统存储器中的数据和第一块纠正值进行解密。可替代地或另外地,该系统包括系统存储器中的单个设备,其用于存储第一块纠正值。
示例3
在一个示例中,一种用于管理经加密的存储器的方法,包括:基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储第一消息认证码(MAC)。该方法还可以包括检测与存储在系统存储器中的数据相对应的读取操作,基于从系统存储器取回的数据来计算第二MAC,以及确定第二MAC与第一MAC不匹配。另外,该方法可以包括在纠正操作之后重新计算第二MAC,其中纠正操作包括基于从系统存储器取回的数据和用于系统存储器的设备的替代值的XOR运算。此外,该方法可以包括:响应于检测到重新计算的第二MAC与第一MAC匹配而对存储在系统存储器中的数据进行解密,以及将经解密的数据发送到高速缓存。
可替代地或另外地,纠正操作包括针对系统存储器的多个设备重新计算第二MAC。可替代地或另外地,该方法包括针对多个设备中的每个设备执行XOR运算,其中XOR运算是基于替代值和存储在多个设备中的其中一个设备被排除的每个设备中的数据的。可替代地或另外地,该方法包括:针对系统存储器的每个设备,响应于检测到重新计算的第二MAC与第一MAC不匹配,生成不可纠正的错误。可替代地或另外地,该方法包括对存储在系统存储器中的数据的块进行解密,其中块的大小对应于块密码的输入或输出的大小,确定经解密的数据的块中的明文的熵高于阈值级别,以及对存储数据的块的一部分的系统存储器中的每个设备执行纠正命令。可替代地或另外地,该方法包括在并行流水线中执行纠正命令,其中并行流水线包括针对系统存储器的每个设备利用替代值生成第二MAC。可替代地或另外地,该方法包括生成块纠正值。可替代地或另外地,该方法包括响应于预先确定的时间段到期,基于新密钥对第一MAC和第二MAC重设密钥或重新加密。
示例4
在一个实施例中,一种用于管理经加密的数据的方法,包括:基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储经加密的第一块纠正值。该方法还可以包括检测与存储在系统存储器中的数据相对应的读取操作,以及基于存储在系统存储器中的数据来计算第二块纠正值,第二块纠正值基于包括存储在系统存储器中的明文数据的XOR运算被计算。另外,该方法可以包括确定第二块纠正值与经解密的第一块纠正值不匹配,确定存储的第一MAC值与计算的第二MAC不匹配,以及利用纠正操作来重新计算第二块纠正值,其中纠正操作包括基于存储在系统存储器中的经解密的数据和用于系统存储器的设备的替代值的XOR运算。此外,该方法可以包括:响应于检测到重新计算的第二MAC与第一块纠正值匹配而对存储在系统存储器中的数据进行解密,以及将经解密的数据发送到高速缓存设备。
可替代地或另外地,该方法可以包括基于包括存储在系统存储器中的密文数据的XOR运算来生成第一MAC。可替代地或另外地,该方法可以包括对存储在系统存储器中的数据和第一块纠正值进行解密。可替代地或另外地,该方法可以包括使用系统存储器中的单个设备来存储第一块纠正值。
示例5
在一些示例中,一种用于管理经加密的存储器的非暂时性计算机可读介质,包括多个指令,该多个指令响应于由处理器执行而使处理器基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储第一消息认证码(MAC)。处理器还可以检测与存储在系统存储器中的数据相对应的读取操作,基于从系统存储器取回的数据来计算第二MAC,以及确定第二MAC与第一MAC不匹配。此外,处理器还可以在纠正操作之后重新计算第二MAC,其中纠正操作包括基于从系统存储器取回的数据和用于系统存储器的设备的替代值的XOR运算。另外,处理器可以响应于检测到重新计算的第二MAC与第一MAC匹配而对存储在系统存储器中的数据进行解密,以及将经解密的数据发送到高速缓存。
可替代地或另外地,纠正操作包括针对系统存储器的多个设备重新计算第二MAC。可替代地或另外地,处理器用于针对多个设备中的每个设备执行XOR运算,其中XOR运算是基于替代值和存储在多个设备中的其中一个设备被排除的每个设备中的数据的。可替代地或另外地,处理器用于:针对系统存储器的每个设备,响应于检测到重新计算的第二MAC与第一MAC不匹配,生成不可纠正的错误。可替代地或另外地,处理器用于对存储在系统存储器中的数据的块进行解密,其中块的大小对应于块密码的输入或输出的大小,确定经解密的数据的块中的明文的熵高于阈值级别,以及对存储数据的块的一部分的系统存储器中的每个设备执行纠正命令。可替代地或另外地,处理器包括用于在并行流水线中执行纠正命令的逻辑,其中并行流水线包括针对系统存储器的每个设备利用替代值生成第二MAC。可替代地或另外地,处理器用于生成块纠正值。可替代地或另外地,处理器用于响应于预先确定的时间段到期而对第一MAC和第二MAC重设密钥。
示例6
在一个实施例中,一种用于管理经加密的存储器的非暂时性计算机可读介质,包括多个指令,该多个指令响应于由处理器执行而使处理器基于响应于对系统存储器的写入操作而被存储在系统存储器中的数据,存储经加密的第一块纠正值。处理器还可以检测与存储在系统存储器中的数据相对应的读取操作,以及基于存储在系统存储器中的数据来计算第二块纠正值,第二块纠正值基于包括存储在系统存储器中的明文数据的XOR运算被计算。另外,处理器可以确定第二块纠正值与经解密的第一块纠正值不匹配,确定存储的第一MAC值与计算的第二MAC不匹配,以及利用纠正操作来重新计算第二块纠正值,其中纠正操作包括基于存储在系统存储器中的经解密的数据和用于系统存储器的设备的替代值的XOR运算。此外,处理器可以响应于检测到重新计算的第二MAC与第一块纠正值匹配而对存储在系统存储器中的数据进行解密,以及将经解密的数据发送到高速缓存设备。
可替代地或另外地,处理器用于基于包括存储在系统存储器中的密文数据的XOR运算来生成第一MAC。可替代地或另外地,处理器用于对存储在系统存储器中的数据和第一块纠正值进行解密。可替代地或另外地,该系统包括系统存储器中的单个设备,其用于存储第一块纠正值。
虽然参考图1-11中的框图和流程图描述了所公开的主题的示例实施例,但是本领域普通技术人员将容易认识到,可以可替代地使用实现所公开的主题的许多其他方法。例如,可以改变流程图中的框的执行顺序,和/或可以改变、消除或组合所描述的框图/流程图中的框中的一些框。
在前面的描述中,已经描述了所公开的主题的各种方面。出于解释的目的,阐述了具体的数字、系统和配置,以便提供对主题的透彻理解。然而,对于受益于本公开的本领域技术人员显而易见的是,可以在没有具体细节的情况下实践本主题。在其他实例中,省略、简化、组合或拆分公知的特征、组件或模块,以免模糊所公开的主题。
所公开的主题的各种实施例可以以硬件、固件、软件或其组合来实现,并且可以通过参考以下程序代码或结合以下程序代码来描述:例如,指令、函数、过程、数据结构、逻辑、应用程序、设计表示或用于设计的模拟、仿真和制造的格式,其在由机器存取时,导致机器执行任务,定义抽象数据类型或低级别硬件上下文,或产生结果。
程序代码可以表示使用硬件描述语言或其他功能描述语言的硬件,其实质上提供了预期设计的硬件如何执行的模型。程序代码可以是汇编语言或机器语言或硬件定义语言,或可以编译和/或解释的数据。此外,在本领域中通常将软件以一种形式或另一种形式称为采取动作或导致结果。这样的表达仅仅是说明由处理系统执行程序代码(这使处理器执行动作或产生结果)的简写方式。
程序代码可以存储在例如易失性和/或非易失性存储器中,例如,存储设备和/或相关联的机器可读或机器可存取介质,包括固态存储器、硬盘驱动器、软盘、光存储装置、磁带、闪速存储器、存储器棒、数字视频盘、数字通用盘(DVD)等,以及诸如机器可存取的生物状态保存存储装置之类的更独特的介质。机器可读介质可以包括用于存储、发送或接收机器可读形式的信息的任何有形机构,例如,天线、光纤、通信接口等。程序代码可以以分组、串行数据、并行数据等的形式传输,并且可以以压缩或加密的格式使用。
程序代码可以于在以下可编程机器上执行的程序中实现:例如,移动或固定计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机以及其他电子设备,其各自包括处理器、处理器可读的易失性和/或非易失性存储器、至少一个输入设备和/或一个或多个输出设备。程序代码可以应用于使用输入设备输入的数据,以执行所描述的实施例并且生成输出信息。输出信息可以应用于一个或多个输出设备。本领域普通技术人员可以认识到,所公开的主题的实施例可以利用各种计算机系统配置来实践,包括多处理器或多核心处理器系统、小型计算机、大型计算机,以及可以嵌入到几乎任何设备中的普遍存在的或微型的计算机或处理器。所公开的主题的实施例还可以在分布式计算环境中实践,其中任务可以由通过通信网络链接的远程处理设备来执行。
虽然可以将操作描述为顺序过程,但是操作中的一些操作实际上可以并行地、同时地和/或在分布式环境中执行,并且其中程序代码本地和/或远程存储以供单处理器机器或多处理器机器进行存取。另外,在一些实施例中,可以重新布置操作的顺序而不脱离所公开的主题的精神。程序代码可以由嵌入式控制器使用或与嵌入式控制器结合使用。
虽然已经参考说明性实施例描述了所公开的主题,但是该描述并不旨在以限制意义来解释。对于所公开的主题所属领域的技术人员显而易见的、对说明性实施例以及主题的其他实施例的各种修改被认为在所公开的主题的范围内。
Claims (19)
1.一种用于管理经加密的存储器的系统,包括:
处理器,用于:
基于响应于对系统存储器的写入操作而被存储在所述系统存储器中的数据,存储第一消息认证码(MAC);
检测与存储在所述系统存储器中的所述数据相对应的读取操作;
基于从所述系统存储器取回的所述数据,计算第二MAC;
确定所述第二MAC与所述第一MAC不匹配;
在纠正操作之后重新计算所述第二MAC,其中,所述纠正操作包括基于从所述系统存储器取回的所述数据和用于所述系统存储器的设备的替代值的XOR运算;
响应于检测到重新计算的第二MAC与所述第一MAC匹配,对存储在所述系统存储器中的所述数据进行解密;以及
将经解密的数据发送到高速缓存。
2.根据权利要求1所述的系统,其中,所述纠正操作包括针对所述系统存储器的多个设备重新计算所述第二MAC。
3.根据权利要求2所述的系统,其中,所述处理器用于:针对所述多个设备中的每个设备执行所述XOR运算,其中,所述XOR运算是基于所述替代值和存储在所述多个设备中的其中一个设备被排除的每个设备中的所述数据的。
4.根据权利要求1或2所述的系统,其中,所述处理器用于:针对所述系统存储器的每个设备,响应于检测到所述重新计算的第二MAC与所述第一MAC不匹配,生成不可纠正的错误。
5.根据权利要求1或2所述的系统,其中,所述处理器用于:
对存储在所述系统存储器中的所述数据的块进行解密,其中,所述块的大小对应于块密码的输入或输出的大小;
确定经解密的数据的块中的明文的熵高于阈值级别;以及
对存储所述数据的块的一部分的所述系统存储器中的每个设备执行纠正命令。
6.根据权利要求1或2所述的系统,其中,所述处理器包括用于在并行流水线中执行纠正命令的逻辑,其中,所述并行流水线包括针对所述系统存储器的每个设备利用所述替代值生成所述第二MAC。
7.根据权利要求1或2所述的系统,其中,所述处理器用于:生成块纠正值。
8.根据权利要求1所述的系统,其中,所述处理器用于:响应于预先确定的时间段到期而对所述第一MAC和所述第二MAC重设密钥。
9.根据权利要求8所述的系统,其中,所述处理器用于:基于存储器刷新速率来对所述第一MAC和所述第二MAC重设密钥,其中,重设密钥包括:
检测第二读取操作;
将所述第一MAC与先前存储的密钥进行比较;
利用新密钥来重新计算所述第一MAC;以及
将利用所述新密钥加密的所述第一MAC存储在所述系统存储器中。
10.一种用于管理经加密的数据的系统,包括:
处理器,用于:
基于响应于对系统存储器的写入操作而被存储在所述系统存储器中的数据,存储经加密的第一块纠正值;
检测与存储在所述系统存储器中的所述数据相对应的读取操作;
基于存储在所述系统存储器中的所述数据,计算第二块纠正值,所述第二块纠正值是基于包括存储在所述系统存储器中的明文数据的XOR运算被计算的;
确定所述第二块纠正值与经解密的第一块纠正值不匹配;
确定存储的第一MAC值与计算的第二MAC不匹配;
利用纠正操作来重新计算所述第二块纠正值,其中,所述纠正操作包括基于存储在所述系统存储器中的经解密的数据和用于所述系统存储器的设备的替代值的XOR运算;
响应于检测到重新计算的第二MAC值与所述第一块纠正值匹配,对存储在所述系统存储器中的所述数据进行解密;以及
将经解密的数据发送到高速缓存设备。
11.根据权利要求10所述的系统,其中,所述处理器用于:基于包括存储在所述系统存储器中的密文数据的XOR运算来生成所述第一MAC。
12.根据权利要求10所述的系统,其中,所述处理器用于:对存储在所述系统存储器中的所述数据和所述第一块纠正值进行解密。
13.根据权利要求10、11或12所述的系统,其中,所述系统包括所述系统存储器中的单个设备,其用于存储所述第一块纠正值。
14.一种用于管理经加密的存储器的方法,包括:
基于响应于对系统存储器的写入操作而被存储在所述系统存储器中的数据,存储第一消息认证码(MAC);
检测与存储在所述系统存储器中的所述数据相对应的读取操作;
基于从所述系统存储器取回的所述数据,计算第二MAC;
确定所述第二MAC与所述第一MAC不匹配;
在纠正操作之后重新计算所述第二MAC,其中,所述纠正操作包括基于从所述系统存储器取回的所述数据和用于所述系统存储器的设备的替代值的XOR运算;
响应于检测到重新计算的第二MAC与所述第一MAC匹配,对存储在所述系统存储器中的所述数据进行解密;以及
将经解密的数据发送到高速缓存。
15.根据权利要求14所述的方法,其中,所述纠正操作包括针对所述系统存储器的多个设备重新计算所述第二MAC。
16.根据权利要求15所述的方法,包括:针对所述多个设备中的每个设备执行所述XOR运算,其中,所述XOR运算是基于所述替代值和存储在所述多个设备中的其中一个设备被排除的每个设备中的所述数据的。
17.根据权利要求14或15所述的方法,包括:针对所述系统存储器的每个设备,响应于检测到所述重新计算的第二MAC与所述第一MAC不匹配,生成不可纠正的错误。
18.根据权利要求14或15所述的方法,包括:
对存储在所述系统存储器中的所述数据的块进行解密,其中,所述块的大小对应于块密码的输入或输出的大小;
确定经解密的数据的块中的明文的熵高于阈值级别;以及
对存储所述数据的块的一部分的所述系统存储器中的每个设备执行纠正命令。
19.根据权利要求14或15所述的方法,包括:响应于预先确定的时间段到期,基于新密钥对所述第一MAC和所述第二MAC重设密钥或重新加密。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/816,901 | 2017-11-17 | ||
US15/816,901 US10594491B2 (en) | 2015-12-24 | 2017-11-17 | Cryptographic system memory management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109800103A true CN109800103A (zh) | 2019-05-24 |
Family
ID=66336541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811209775.4A Pending CN109800103A (zh) | 2017-11-17 | 2018-10-17 | 密码系统存储器管理 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109800103A (zh) |
DE (1) | DE102018125786A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287180A (zh) * | 2020-10-26 | 2021-01-29 | 深圳市友华软件科技有限公司 | 基于mac搜索的故障机返修管理方法 |
CN112699383A (zh) * | 2019-10-22 | 2021-04-23 | 英飞凌科技股份有限公司 | 数据密码设备、存储器系统及其操作方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11580234B2 (en) | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US11575504B2 (en) | 2019-06-29 | 2023-02-07 | Intel Corporation | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline |
US11403234B2 (en) | 2019-06-29 | 2022-08-02 | Intel Corporation | Cryptographic computing using encrypted base addresses and used in multi-tenant environments |
US11580035B2 (en) | 2020-12-26 | 2023-02-14 | Intel Corporation | Fine-grained stack protection using cryptographic computing |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
-
2018
- 2018-10-17 DE DE102018125786.4A patent/DE102018125786A1/de active Pending
- 2018-10-17 CN CN201811209775.4A patent/CN109800103A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699383A (zh) * | 2019-10-22 | 2021-04-23 | 英飞凌科技股份有限公司 | 数据密码设备、存储器系统及其操作方法 |
CN112699383B (zh) * | 2019-10-22 | 2023-11-14 | 英飞凌科技股份有限公司 | 数据密码设备、存储器系统及其操作方法 |
CN112287180A (zh) * | 2020-10-26 | 2021-01-29 | 深圳市友华软件科技有限公司 | 基于mac搜索的故障机返修管理方法 |
Also Published As
Publication number | Publication date |
---|---|
DE102018125786A1 (de) | 2019-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800103A (zh) | 密码系统存储器管理 | |
US11196565B2 (en) | Cryptographic system memory management | |
US11544371B2 (en) | Secure hardware signature and related methods and applications | |
US11693754B2 (en) | Aggregate GHASH-based message authentication code (MAC) over multiple cachelines with incremental updates | |
TWI736837B (zh) | 記憶體設備、非揮發性雙直列記憶體模組、記憶體系統、及加密方法 | |
KR102447476B1 (ko) | 암복호 장치, 그것을 포함하는 저장 장치 및 그것의 암복호 방법 | |
Ren et al. | Integrity verification for path oblivious-ram | |
CN112149146A (zh) | 确定性加密密钥轮换 | |
US8452984B2 (en) | Message authentication code pre-computation with applications to secure memory | |
US8826035B2 (en) | Cumulative integrity check value (ICV) processor based memory content protection | |
US20090125726A1 (en) | Method and Apparatus of Providing the Security and Error Correction Capability for Memory Storage Devices | |
US11728967B2 (en) | Dynamic masking | |
CN110209522A (zh) | 用于检测并校正数据中的错误的技术 | |
US20180181499A1 (en) | Secure memory | |
US20210119780A1 (en) | Data cryptographic devices and memory systems | |
US20200012622A1 (en) | Secure compression | |
WO2016144362A1 (en) | Memory device write based on mapping | |
CN108351833A (zh) | 用来压缩密码元数据以用于存储器加密的技术 | |
CN104040505B (zh) | 用于对错误检测码的增量修改的方法和系统 | |
US11714725B2 (en) | System and method for ultra-low overhead and recovery time for secure non-volatile memories | |
US20140379770A1 (en) | Secured Comparison Method of Two Operands and Corresponding Device | |
CN116633544B (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 |