CN110659153A - 纠错码存储器安全性 - Google Patents

纠错码存储器安全性 Download PDF

Info

Publication number
CN110659153A
CN110659153A CN201910451065.0A CN201910451065A CN110659153A CN 110659153 A CN110659153 A CN 110659153A CN 201910451065 A CN201910451065 A CN 201910451065A CN 110659153 A CN110659153 A CN 110659153A
Authority
CN
China
Prior art keywords
data
ecc
memory
icv
area
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
Application number
CN201910451065.0A
Other languages
English (en)
Inventor
A·博洛托夫
M·格林竹
R·阿加瓦尔
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 CN110659153A publication Critical patent/CN110659153A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Abstract

本文描述了用于纠错码(ECC)存储器安全性的系统和技术。接收包含数据的写入请求。针对数据计算完整性检查值(ICV)。然后,执行写入请求,包括将数据的表示写入存储器中的数据区域,并且将ICV写入存储器中的ECC区域。这里,数据区域可由主机寻址,并且ECC区域经由存储器的硬件对应于数据区域。

Description

纠错码存储器安全性
技术领域
本文描述的实施例总体上涉及存储器设备,并且更具体地涉及纠错码(ECC)存储器安全性。
背景技术
计算机系统已经成为日常生活的一部分。由于发现计算机系统在更多设备中处于更多关键角色,因此包含安全性在内的数据完整性对于系统设计人员而言已经成为更大问题。安全性威胁通常试图获得对系统或其上保存的信息的控制。虽然诸如加密网络流量之类工具可以有效抵消来自给定系统外部的安全性威胁,但某些威胁通过尝试直接从计算机系统的处理器或操作存储器(例如,用于保持当前系统状态的存储器,例如,随机存取存储器(RAM)等)收集信息来攻击计算机系统的核心。
硬件攻击(侵入性和非侵入性)的数量正在增长,希望能够获得对计算机系统上的可能保存在处理器的可信区域外部(例如,在动态RAM(DRAM)中))的大量敏感数据的访问权。为了对抗这些威胁,实现安全架构和密码方法以保护存储器操作,从而防止入侵者恶意篡改存储在存储器中的数据或获得对存储在存储器中的数据的访问权。安全架构通常使用三种密码原语:机密性;完整性;以及新鲜度。
机密性通过在将数据写入存储器之前加密数据并且解密来自存储器的数据来确保数据的隐私性。完整性确保所保存的数据未被修改(例如,损坏或掺杂)。新鲜度确保数据被版本化以使得旧数据不能被重用(例如,它防止重放攻击,其中攻击者使用有效但旧的数据)。
除了安全性之外,还可以在存储器中使用防止数据损坏的保护,例如,数据损坏可能由激发粒子引起。存储器经常被设计为控制器和数据存储装置的组合。请求实体(例如,用户、程序、主机等)向控制器发送读取请求或写入请求,控制器然后将数据存储在存储介质上。可操作地,存储器作为给定大小(例如,512位)的可寻址块的阵列被暴露。读取操作和写入操作通常涉及给予控制器一个或多个地址,然后控制器将每个请求变换成对数据存储装置的一个或多个请求。作为该变换的一部分,控制器可以通过例如加密数据或计算纠错码(ECC)来修改数据。
数据存储装置经常被视为存储块的阵列,其基本操作包括一次读取和写入整个块。ECC存储器典型地包括附加空间来保存ECC,导致更大的存储块用于基本操作。例如,存储块可以包含512位用于数据,并且64或128位用于ECC数据。通常,存储装置被设计为使得附加ECC区域与数据一起被取回(例如,经由与存储块地址关联的并联集成电路(IC),或者经由更大的存储块等)。ECC码通常提供错误检测,并且可能提供错误恢复。在一些情况下,控制器作为满足读取请求的一部分而基于ECC码执行错误检测或纠正。
附图说明
在不一定按比例绘制的附图中,相同的附图标记可以描述不同视图中的类似组件。具有不同字母后缀的相同附图标记可以表示类似组件的不同实例。附图通过示例而非限制的方式示出了本文档中讨论的各种实施例。
图1是根据实施例的包含用于ECC存储器安全性的系统的环境的示例的框图。
图2A-2C示出了根据若干实施例的存储器中的数据和ICV放置。
图3示出了根据实施例的用于将ICV数据放置在存储器的ECC区域中并且将ECC数据移动到存储器的另一部分的组件流程的示例。
图4示出了根据实施例的用于将ICV数据和ECC数据放置在存储器的ECC区域中的组件流程的示例。
图5示出了根据实施例的用于根据实施例对用户数据和ECC数据进行混淆以跨存储器的数据区域和ECC区域实现ICV的组件流程的示例。
图6示出了根据实施例的用于根据实施例对来自存储器的数据区域和ECC区域的用户数据和ECC数据进行去混淆的组件流程的示例。
图7A-7B示出了根据实施例的混淆引擎。
图8示出了根据实施例的用于ECC存储器安全性的方法的示例的流程图。
图9是示出可以在其上实现一个或多个实施例的机器的示例的框图。
具体实施方式
通常,当将安全性技术应用于ECC存储器时,完整性保护是完整性保护的单独且独立的实现。例如,完整性保护可以通过散列函数h来实现。这里,每个数据字W伴随有完整性检查值(ICV),ICV取决于W并且可选地取决于其他参数,例如,地址A、密钥K、随机数N等。在该示例中,ICV是h(W,A,K,N)的结果。ICV通常小于数据(例如,ICV可以是32位或64位),并且被分组为与存储在数据区域中的数据字(例如,512位)相同大小的字,该数据区域与数据字所属于的数据字的地址(例如,高速缓存行)关联。因此,与存储在地址A处的数据字相关的ICV是在取决于A的某个地址A'处的字的一部分。
通常,经认证的存储器访问符合以下脚本(一些操作可以并行执行):
Figure BDA0002075162640000031
写入操作示例如下:
Figure BDA0002075162640000041
注意,每个读取操作使用两次存储器读取(一次用于数据,而一次用于ICV),并且每个写入操作使用两次存储器写入(一次用于数据,而一次用于ICV)和一次存储器读取(用于取回存储有ICV的高速缓存行)。
对于适当选择的h,上述技术防止欺骗攻击——例如,用恶意值MW替代在地址A处的数据W,因为如果攻击者不知道密钥K并且函数h是单向密码函数,则找到满足h(W,A,K)==h(MW,A,K)的MW的值在计算上是不可行的。所描述的技术还由于上面给出的原因防止了拼接攻击——例如,用来自地址B的恶意复制的值MW替代在地址A处的数据W。为了防止重放攻击——用先前已经存储在地址A处的恶意数据MW替代在地址A处的数据W,ICV数据可以受到更高级别ICV的保护,ICV的最后一级留在控制器上(例如,在片上静态RAM(SRAM)中)。一些人将其称为完整性树(例如,Merkle树)。
尽管这些技术可以高效地抵抗安全性风险,但是它们经常会降低存储器性能并且可能涉及高存储开销。由于这些性能问题,一些人降低了存储器系统的安全性,而选择了“聊胜于无”的方法,这可能包括用于检测数据替代或避免对存储器进行多个读取操作的启发式方法(例如,用于确保数据的完整性)。
为了解决这些问题,利用存储器硬件的ECC能力来实现完整性检查。存储器的ECC区域用于保存ICV数据而不是ECC数据,或者除了ECC数据之外还用于保存ICV数据。数据完整性假设从存储器读取的数据是准确且可靠的,并且没有被未授权方改变。虽然完整性与错误检测和纠正不同(ECC处理软错误或硬错误,并且不考虑任何恶意活动),但是检测数据更改对两个设施都很常见。因此,通过的完整性检查还意味着没有错误(例如,ECC检查也会通过)。因为ICV检查总是运行,并且仅在ECC检查失败时才运行纠错,所以在读取时使用ECC存储器的ECC区域同时取回数据字的ICV更高效,因为ECC取回在大多数情况下将是不必要的。在示例中,ECC可以缩短并与ICV一起存储在ECC区域中,或者ECC可以存储在不同的数据区域中(例如,上面关于传统ICV实现方式描述的)。这些布置产生完整性检查和纠错的快速且高效的组合,其不涉及对存储器控制器的大量重新设计。附加细节和示例在下面描述。
图1是根据实施例的包含用于ECC存储器安全性的系统125的环境的示例的框图。系统125表示计算机系统的安全区域或可信区域。该系统包括处理器120、高速缓存115(例如,用于加速对频繁使用的数据的处理器访问)和存储器控制器110。存储器控制器110连接到存储器105。
存储器105是ECC存储器,其被设计为通过包括专用硬件(例如,存储、带宽等)来支持错误检测和纠正,以使得能够将ECC数据与用户数据一起取回。这可以经由存储器105上的专用IC来实现,以经由大于处理器120可寻址的高速缓存行的物理高速缓存行或经由若干其他技术(例如,存储器阵列条带化等)来存储ECC数据。如本文所使用的,数据区域可由主机设备寻址,并且ECC区域是存储器105的与数据区域相关的部分(例如,经由专用硬件)。在示例中,ECC区域与其对应的数据区域同时被取回(例如,在没有对存储器105的附加请求的情况下)。在示例中,ECC区域不能由主机直接寻址。
环境考虑了可以经由软件或硬件访问存储器105的恶意设备130。为了防止恶意设备130对存储器105中的数据进行未经授权的访问或篡改,存储器控制器110被配置为实现ECC存储器安全性。为了实现ECC存储器安全性,存储器控制器110被布置为例如从处理器120或主机系统的其他设备(例如,经由直接存储器访问(DMA)接口的另一件硬件)接收写入请求。写入请求可以源自用户、程序等。写入请求包括请求者旨在存储在存储器105中的数据。在示例中,数据是存储器105的数据字或高速缓存行。在示例中,高速缓存行是512位。
存储器控制器110被布置为计算用于请求的数据的ICV。可以使用任何ICV技术,包括上面描述的基于散列函数的技术。在一个示例中,ICV是32位。在一个示例中,ICV是64位。通常,ICV大小独立于数据的大小,并且被规定为足够大以避免冲突(例如,两个不同的输入数据字产生相同的ICV值)。
存储器控制器110被布置为执行写入操作,包括将数据的表示写入存储器105的数据区域,以及将ICV写入存储器105的对应于数据区域的ECC区域。在示例中,数据的表示是数据的经加密的形式。因此,存储器控制器110在将数据存储在存储器105上之前执行或调用另一设备来执行对数据的加密。然而,数据不一定被加密以从本文描述的ICV技术获益。这种数据完整性对于可能已知的数据可以是有用的,但不应以未经授权的方式改变,例如,操作参数等。
在示例中,存储器控制器110被布置为计算数据的ECC信息(例如,奇偶校验位、里德-所罗门(RS)码等)。在示例中,为了完成写入请求,存储器控制器110被布置为将ECC信息写入存储器中的第二数据区域。这里,ECC数据存储在数据区域中,与在传统方法中存储ICV数据非常相似。虽然这涉及针对写入操作的附加读取和写入,但通常不会涉及读取操作中的附加读取,因为基于ICV的完整性检查通常会通过,表明数据中没有错误,因此不需要取回ECC数据。
在示例中,为了计算ECC信息,存储器控制器110被布置为将ECC信息的大小限制为小于ECC区域。在示例中,ECC信息是低密度奇偶校验(LDPC)码,而不是RS码,以实现这种大小上的减小。减小ECC信息的大小可以释放ECC区域中的位以放置ICV。因此,在示例中,存储器控制器110被布置为将ECC信息与ICV一起写入ECC区域。
在示例中,存储器控制器110被布置为将数据的表示与ECC信息组合(例如,变换)成单个实体,该单个实体是ICV。然后可以跨数据区域和ECC区域写入该单个实体ICV。这里,数据区域和ECC区域被存储器控制器110视为单个较大的块。经由用于组合数据的表示与ECC信息的技术来启用ICV。在示例中,存储器控制器110被布置为应用(例如,调用、采用等)错误保留的、可逆的和参数化的混淆运算符(例如,函数)。在示例中,可逆参数化混淆运算符的参数是密钥或随机数中的至少一个。通常,密钥用于保持混淆安全,而随机数用于向混淆提供版本化(例如,新鲜度)。这里使用术语混淆来指示结果可能不是密码安全的,而是给试图取回或篡改数据的人带来更重的负担。
存储器控制器110还被布置为在读取操作时读取ICV,以针对每个读取请求对数据执行完整性检查。因此,存储器控制器110被布置为接收针对数据区域的读取请求,并且将ICV以及数据的表示一起取回。如上面指出的,当存储器105是ECC存储器时,从存储器105取回ICV是自动的。存储器控制器110被布置为评估ICV以确定数据的表示是可接受的。这是完整性检查。如果完整性检查通过,则已知数据完好且无错误。存储器控制器110被布置为响应于确定数据的表示是可以接受的而将数据返回——例如,在对数据解密之后,如果数据的表示先前由存储器控制器110加密——给读取请求的发起者,而不评估ECC信息。然而,如果完整性检查未通过,则存储器控制器110被布置为取回ECC信息并尝试纠正任何错误。在进行纠错之后,可以重新运行完整性检查。如果完整性检查再次失败,则存储器控制器110可以向请求者发信号通知完整性检查失败,或者仅仅发信号通知没有完成读取请求(例如,什么都不返回,指示读取失败等)。
图2A-2B示出了根据若干实施例的存储器中的数据和ICV放置。如图所示,每行(例如,行205)是存储器中的高速缓存行。高速缓存行205被划分为数据区域(例如,主机可寻址或可直接使用的存储器存储)和ECC区域(例如,被设计为与数据区域一起返回若干位的存储)。图2A示出了ICV将高速缓存行205的整个ECC区域用于对应的数据字的示例。如图所示,单独的高速缓存行用于存储若干组ECC信息(例如,ECC数据)。
图2B示出了高速缓存行205的ECC区域包括数据字的ICV和ECC信息两者的示例。在该示例中,传统ECC信息被压缩或大小受限,以在ECC区域中为ICV腾出空间。
图2C示出了以某一方式将数据字与ECC信息组合以产生ICV的示例。这通过将ICV阴影化来说明,ICV是数据和ECC信息的组合。然后跨数据区域和ECC区域写入ICV。
图3示出了根据实施例的用于将ICV数据放置在存储器的ECC区域中并且将ECC数据移动到存储器的另一部分的组件流程的示例。该示例利用了存储块(例如,存储器中的存储器控制器可以访问的块)大于用户块(例如,存储器中的主机可以寻址的块)的事实。存储块的额外位是ECC区域,并且在这里用于存储ICV而不是用于用户块(例如,数据字)的ECC信息。此外,在该示例中,ECC(例如,奇偶校验位)存储在单独的数据区域中(例如,存储块之外),并且仅在读取时在使用ICV进行完整性检查失败时才被访问。由于读取几乎总是没有错误,因此与传统技术相比,这提供了显著的性能优势。然而,在有错误的情况下,这种技术并不比传统技术差。
这里说明的是写入操作。加密参数305与数据行310(例如,数据字)和地址315组合以对数据行加密并创建ICV(操作320),从而产生高速缓存行325和ICV 330中的数据的经加密的表示,其大小分别为占用存储器的数据区域和ECC区域。数据325和ICV 330的经加密的表示被写入存储器(操作355)。
为了单独地存储数据行310的ECC信息,从存储器取回包含对应ECC信息的数据字(操作340)。从数据325和ICV 330的表示获得ECC信息(操作335),并且将该ECC信息写入取回的ECC数据字345的对应于地址315的部分350。然后将整个ECC数据字345重新写入存储器(操作360)。
读取操作可以避免在完整性检查通过时取回ECC信息数据字345。否则,ECC信息数据字345的对应于地址315的部分350被用于执行纠错。尽管上面讨论了基于散列的ICV,但是可以采用消息认证码(MAC)或其他完整性技术。重放攻击也可以经由完整性树等来阻止。
图4示出了根据实施例的用于将ICV数据和ECC信息放置在存储器的ECC区域中的组件流程的示例。例如,给定在16到96位之间的ICV,以及每个高速缓存行可以有30位被释放——例如,通过禁用通道备用和关键数据块(chunk)——以增加ECC区域的DDR5存储器模块,ICV可以与ECC信息一起存储在ECC区域中。通常,用于ICV的位越多,安全性就越高。在示例中,该技术可以与下面(例如,关于图5-7B)描述的混淆技术组合。
所示的组件流程是写入。该流程以包含地址410的请求中的明文405开始。随机数415和密钥420是可选的,并且可以以各种方式提供给存储器控制器。
可以对明文405进行加密(操作430)以创建密文460。明文405还可以是单向散列435的参数,与地址410、随机数415和密钥420一起用于产生ICV 445,ICV 445被写入ECC区域440。ICV 445和密文460还可以是ECC编码的(操作465)——可选地还包括存储在ECC区域450中的密钥420,以产生奇偶校验位455。然后,这些奇偶校验位455(例如,ECC信息)也存储在ECC区域440中。
如上面指出的,可以通过关闭存储器的特征来释放一些高速缓存行位。此外,可以限制奇偶校验位455,例如,通过使用需要较少位的具有较弱纠错能力的RS码,或者用诸如LDPC码之类的更高效的码来替代传统的RS码。再次强调,通常,越多的高速缓存行位可用(例如,被释放),则ICV可以提供越高的安全性。
图5示出了根据实施例的用于根据实施例对用户数据和ECC数据进行混淆以跨存储器的数据区域和ECC区域实现ICV的组件流程的示例。在该示例中,在ECC编码之后执行混淆。混淆实现完整性和错误检查。如本文使用的,混淆是对数据的看起来随机的可反向变换,其保留错误数量。如果存储器是伪造的(例如,从不同位置复制),则去混淆变换将不匹配原始混淆,并且其输出将不能与随机数据区分开(例如,从ECC解码器的角度来看)。因此,当数据的完整性受到损害时,ECC解码器将失败或报告太多错误。下面关于图7A和图7B描述了混淆运算符的示例的附加细节。
这里示出的组件流程描述了写入操作。诸如地址、密钥和随机数之类的参数505与明文数据行510组合以产生经加密的数据行525(操作515)。根据经加密的数据行525创建奇偶校验位540(操作530),并且将奇偶校验位540放置在对应于ECC数据区域的位位置,而将经加密的数据行放置在对应于数据区域535的位位置。
参数505可以用于创建混淆参数(操作520)。将混淆参数与数据位535和奇偶校验位540组合以创建变换550(操作545)。然后使用存储高速缓存行的数据区域和ECC区域两者将变换550写入存储器(操作555)。
图6示出了根据实施例的用于对来自存储器的数据区域和ECC区域的用户数据和ECC数据进行去混淆的组件流程的示例。从存储器取回原始数据650(例如,数据的混淆的版本)(操作655)。参数605用于生成混淆参数(操作620),该混淆参数用于对原始数据650进行去混淆(操作645)。结果包括数据位635和奇偶校验位640。针对错误对数据位635和奇偶校验位640进行检查(操作630)并将其用于产生经加密的数据行625。参数605还可以用于对经加密的数据行625进行解密(操作615)以产生明文数据行610,然后可以将明文数据行610返回给请求者。
图7A-7B示出了根据实施例的混淆引擎。图7A示出了混淆运算符705。在这种情况下,混淆运算符705作为数据输入与数据输出之间的变换而可逆。这意味着在给定数据输出和相同参数的情况下,数据输入通过混淆运算符705恢复。因此,存在运算符gP,使得对于所有X和P,X=gP(fP(X))。此外,混淆运算符705(和对应的取逆的运算符)是错误保留的。这意味着具有N个错误的数据字被变换为具有N个错误的不同数据字。“一个错误”的概念对应于存储器的物理结构和ECC中使用的物理结构两者。因此,错误可以是位错误、字节(例如,符号)错误或存储器存储体级别的错误等。在这两个属性(例如,可逆和错误保留)内,可以使用任何混淆运算符。
图7B示出了一个版本的混淆运算符705。在这种情况下,数据字经由替换操作被分成N个数据块,每个数据块M位。替换操作可以对N个数据块中的每个数据块应用一对一(M,M)变换。这里,变换基于参数P,并且对于不同数据块可以是不同的。然后,数据块经历置换操作,该置换操作也取决于参数P。具有替换、然后置换的形式的所有运算符的类与具有置换、然后替换的形式的所有运算符的类相同。然而,对于参数P的每组值,这两种形式的对应运算符可能不同。
在1位数据块的极端情况下(例如,当仅处理位错误时),替换操作可以变为简单掩蔽,例如,利用基于参数P的位掩码对数据进行异或。通常,一个或者甚至两个位数据块可能使混淆运算符线性化,这可能易受某些攻击。这种攻击的示例是向量Y的确定性生成,使得向量X=gP(Y)将成功通过纠错过程——回想起gP是fP的逆,使得对于所有X和P,X=gP(fP(X))。
替换操作对抗恶意实体的Y=0的尝试。置换操作可以将0映射到0。替换操作用于防止确定性地生成ECC码字,例如,X=0。如上面指出的利用掩码进行异或运算可以使替换和置换操作是线性的(例如,
Figure BDA0002075162640000111
其中A、M(掩蔽向量、置换矩阵)取决于参数P)。如果攻击者针对相同参数P知道Y的若干样本(例如,通过在使用相同密钥时观察特定的存储器位置),则攻击者可以生成新的向量。例如,如果Y',Y”和Y”'是这样的观察:其对应于三个不同的输入X'、X”和X”'——其为有效ECC输出——则
Figure BDA0002075162640000112
将对应于
Figure BDA0002075162640000113
并且X也将是有效ECC输出。
置换操作阻止针对数据字X中的特定奇偶校验位的攻击。这通过在置换操作期间重新定位数据块来实现。
图8示出了根据实施例的用于ECC存储器安全性的方法800的示例的流程图。方法800的操作由硬件执行,例如,上面或下面描述的硬件(例如,处理电路系统(circuitry))。
在操作805处,接收写入请求。这里,写入请求包括请求者(例如,用户、程序等)旨在写入存储器的数据。
在操作810处,针对数据计算ICV。
在操作815处,执行写入请求(例如,数据被写入存储器)。作为执行写入请求的一部分,完成操作820和825。
在操作820处,将数据的表示写入存储器中的数据区域。这里,该数据区域是主机可寻址的。在示例中,该数据区域是高速缓存行。在示例中,数据的表示是数据的经加密的形式。
在操作825处,将ICV写入存储器中的ECC区域。ECC区域经由存储器的硬件对应于数据区域。在示例中,通过设计,ECC区域与数据区域一起通过存储器被取回。
在示例中,执行写入请求包括计算数据的ECC信息。在示例中,执行写入请求包括将ECC信息写入存储器中的第二数据区域。
在示例中,计算ECC信息包括将ECC信息的大小限制为小于ECC区域。在示例中,ECC信息是低密度奇偶校验(LDPC)码。在示例中,执行写入请求包括将ECC信息写入ECC区域。
在示例中,执行写入请求包括将数据的表示与ECC信息组合成单个实体,该单个实体是ICV。然后跨数据区域和ECC区域写入ICV。在示例中,组合数据的表示与ECC信息包括应用可逆参数化混淆运算符,该可逆参数化混淆运算符是错误保留的。在示例中,可逆参数化混淆运算符的参数是密钥或随机数中的至少一个。
在示例中,方法800的操作还包括接收针对数据区域的读取请求,将ICV与数据的表示一起取回,评估ICV以确定数据的表示是可接受的,以及响应于确定数据的表示是可接受的,将数据返回给读取请求的发起者而不评估ECC信息。
图9示出了可以在其上执行本文讨论的技术(例如,方法)中的任何一种或多种技术的示例机器900的框图。如本文描述的示例可以包括机器900中的逻辑或多个组件或机制,或者可以由机器900中的逻辑或多个组件或机制来操作。电路电路系统(例如,处理电路电路系统)是在机器900的有形实体中实现的包括硬件(例如,简单电路、门、逻辑等)的电路的集合。电路系统成员关系可能随着时间而变化。电路系统包括在操作时可以单独地或组合地执行指定操作的成员。在示例中,电路系统的硬件可以被不变地设计为执行特定的操作(例如,硬连线)。在示例中,电路系统的硬件可以包括可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),其包括物理地修改(例如,对不变质量的粒子的磁性地、电地可移动放置等)以对特定操作的指令进行编码的机器可读介质。在连接物理组件时,硬件构成部分的基本电气属性改变,例如,从绝缘体变为导体,反之亦然。该指令使得嵌入式硬件(例如,执行单元或加载机制)能够经由可变连接来创建硬件中的电路系统的成员,以在操作时执行特定操作的部分。因此,在示例中,当设备操作时,机器可读介质元件是电路系统的一部分或通信地耦合到电路系统的其他组件。在示例中,物理组件中的任何物理组件可以用于多于一个电路系统的多于一个成员中。例如,在操作时,执行单元可以在一个时间点时用于第一电路系统的第一电路中并且由第一电路系统中的第二电路重用,或者在不同的时间由第二电路系统中的第三电路使用。下面是关于机器900的这些组件的附加示例。
在替代实施例中,机器900可以作为独立设备操作或者可以连接(例如,联网)到其他机器。在联网部署中,机器900可以在服务器-客户端网络环境中以服务器机器、客户端机器或两者的能力操作。在示例中,机器900可以用作对等(P2P)(或其他分布式)网络环境中的对等机器。机器900可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或桥接器,或者能够执行指定该机器要采取的动作的(顺序的或以其他方式)指令的任何机器。此外,虽然仅示出了单个机器,但是还应当认为术语“机器”包括单独或联合执行一组(或多组)指令以执行本文讨论的方法中的任何一种或多种方法的任何机器集合,例如,云计算、软件即服务(SaaS)、其他计算机集群配置。
该机器(例如,计算机系统)900可以包括硬件处理器902(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器904、静态存储器(例如,用于固件、微代码、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等的存储器或存储装置)906和大容量存储装置908(例如,硬盘驱动器、磁带驱动器、闪速存储器或其他块设备),其中一些或全部可以经由互连(例如,总线)930彼此通信。机器900还可以包括显示单元910、字母数字输入设备912(例如,键盘)和用户界面(UI)导航设备914(例如,鼠标)。在示例中,显示单元910、输入设备912和UI导航设备914可以是触摸屏显示器。机器900可以另外包括存储设备(例如,驱动单元)908、信号生成设备918(例如,扬声器)、网络接口设备920,以及一个或多个传感器916,例如,全球定位系统(GPS)传感器、指南针、加速度计或其他传感器。机器900可以包括输出控制器928,例如,串行(例如,通用串行总线(USB))、并行或其他有线或无线(例如,红外(IR)、近场通信(NFC)等)连接,以与一个或多个外围设备(例如,打印机、读卡器等)通信或控制该一个或多个外围设备。
处理器902的寄存器、主存储器904、静态存储器906或大容量存储装置908可以是或包括机器可读介质922,其上存储有体现本文描述的技术或功能中的任何一种或多种技术或功能或由本文描述的技术或功能中的任何一种或多种技术或功能利用的一组或多组数据结构或指令924(例如,软件)。指令924还可以在由机器900执行期间完全或至少部分地驻留在处理器902的寄存器、主存储器904、静态存储器906或大容量存储装置908中的任一个内。在示例中,硬件处理器902、主存储器904、静态存储器906或大容量存储装置908中的一个或任何组合可以构成机器可读介质922。虽然机器可读介质922被示为单种介质,但是术语“机器可读介质”可以包含单种介质或多种介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器),其被配置为存储一个或多个指令924。
术语“机器可读介质”可以包括任何这样的介质:其能够存储、编码或携带用于由机器900执行并且使机器900执行本公开的技术中的任何一种或多种技术的指令,或者能够存储、编码或携带由这些指令使用或与这些指令相关联的数据结构。非限制性机器可读介质示例可以包括固态存储器、光介质、磁介质和信号(例如,射频信号、其他基于光子的信号、声音信号等)。在示例中,非暂时性机器可读介质包括这样的机器可读介质:其中多个粒子具有不变(例如,静止)质量,因此是物质的组合物。因此,非暂时性机器可读介质是不包含暂时性传播信号的机器可读介质。非暂时性机器可读介质的具体示例可以包括:非易失性存储器,例如,半导体存储器设备(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和闪速存储器设备;磁盘,例如,内部硬盘和可移除盘;磁光盘;以及CD-ROM和DVD-ROM盘。
还可以使用传输介质经由网络接口设备920利用多种传送协议(例如,帧中继、互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP等)中的任何一种通过通信网络926发送或接收指令924。示例通信网络可以包括局域网(LAN)、广域网(WAN)、分组数据网络(例如,互联网)、移动电话网络(例如,蜂窝网络)、普通老式电话(POTS)网络和无线数据网络(例如,称为
Figure BDA0002075162640000141
的电气和电子工程师协会(IEEE)802.11标准系列,称为
Figure BDA0002075162640000142
的IEEE 802.16标准系列)、IEEE 802.15.4标准系列、对等(P2P)网络等。在示例中,网络接口设备920可以包括一个或多个物理插孔(例如,以太网、同轴电缆或电话插孔)或一个或多个天线,以便连接到通信网络926。在示例中,网络接口设备920可以包括多个天线,以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一种进行无线通信。术语“传输介质”应被视为包括能够存储、编码或携带用于由机器900执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这种软件的通信。传输介质是机器可读介质。
附加说明和示例
示例1是一种用于纠错码(ECC)存储器安全性的存储器控制器,该存储器控制器包括:包括指令的机器可读介质;以及处理电路系统,其在执行指令时操作以用于:接收写入请求,该写入请求包括数据;计算数据的完整性检查值(ICV);执行写入请求包括:将数据的表示写入存储器中的数据区域,该数据区域可由主机寻址;以及将ICV写入存储器中的ECC区域,该ECC区域经由存储器的硬件对应于数据区域。
在示例2中,示例1的主题,其中,为了执行写入请求,处理电路系统计算数据的ECC信息。
在示例3中,示例2的主题,其中,为了执行写入请求,处理电路系统将ECC信息写入存储器中的第二数据区域。
在示例4中,示例2-3中的任一项的主题,其中,为了计算ECC信息,处理电路系统将ECC信息的大小限制为小于ECC区域。
在示例5中,示例4的主题,其中,ECC信息是低密度奇偶校验(LDPC)码。
在示例6中,示例4-5中任一项的主题,其中,为了执行写入请求,处理电路系统将ECC信息写入ECC区域。
在示例7中,示例2-6中任一项的主题,其中,为了执行写入请求,处理电路系统:将数据的表示与ECC信息组合成单个实体,该单个实体是ICV;并且跨数据区域和ECC区域写入ICV。
在示例8中,示例7的主题,其中,为了组合数据的表示与ECC信息,处理电路系统应用可逆参数化混淆运算符,该可逆参数化混淆运算符是错误保留的。
在示例9中,示例8的主题,其中,可逆参数化混淆运算符的参数是密钥或随机数中的至少一个。
在示例10中,示例1-9中任一项的主题,其中,数据的表示是数据的经加密的形式。
在示例11中,示例1-10中任一项的主题,其中,数据区域是高速缓存行。
在示例12中,示例1-11中任一项的主题,其中,通过设计,ECC区域与数据区域一起通过存储器被取回。
在示例13中,示例1-12中任一项的主题,其中,指令使处理电路系统:接收针对数据区域的读取请求;将ICV与数据的表示一起取回;评估ICV以确定数据的表示是可接受的;并且响应于确定数据的表示是可接受的,将数据返回给读取请求的发起者而不评估ECC信息。
示例14是一种用于纠错码(ECC)存储器安全性的方法,该方法包括:接收写入请求,该写入请求包括数据;计算数据的完整性检查值(ICV);执行写入请求包括:将数据的表示写入存储器中的数据区域,该数据区域可由主机寻址;以及将ICV写入存储器中的ECC区域,该ECC区域经由存储器的硬件对应于数据区域。
在示例15中,示例14的主题,其中,执行写入请求包括计算数据的ECC信息。
在示例16中,示例15的主题,其中,执行写入请求包括将ECC信息写入存储器中的第二数据区域。
在示例17中,示例15-16中任一项的主题,其中,计算ECC信息包括将ECC信息的大小限制为小于ECC区域。
在示例18中,示例17的主题,其中,ECC信息是低密度奇偶校验(LDPC)码。
在示例19中,示例17-18中任一项的主题,其中,执行写入请求包括将ECC信息写入ECC区域。
在示例20中,示例15-19中任一项的主题,其中,执行写入请求包括:将数据的表示与ECC信息组合成单个实体,该单个实体是ICV;以及跨数据区域和ECC区域写入ICV。
在示例21中,示例20的主题,其中,组合数据的表示与ECC信息包括应用可逆参数化混淆运算符,该可逆参数化混淆运算符是错误保留的。
在示例22中,示例21的主题,其中,可逆参数化混淆运算符的参数是密钥或随机数中的至少一个。
在示例23中,示例14-22中任一项的主题,其中,数据的表示是数据的经加密的形式。
在示例24中,示例14-23中任一项的主题,其中,数据区域是高速缓存行。
在示例25中,示例14-24中任一项的主题,其中,通过设计,ECC区域与数据区域一起通过存储器被取回。
在示例26中,示例14-25中任一项的主题,包括:接收针对数据区域的读取请求;将ICV与数据的表示一起取回;评估ICV以确定数据的表示是可接受的;以及响应于确定数据的表示是可接受的,将数据返回给读取请求的发起者而不评估ECC信息。
示例27是一种用于纠错码(ECC)存储器安全性的方法,该方法包括:接收写入请求,该写入请求包括数据;计算数据的完整性检查值(ICV);执行写入请求包括:将数据写入存储器中的数据区域,该数据区域可由主机寻址;将ICV写入存储器中的ECC区域,该ECC区域经由存储器的硬件对应于数据区域;以及将数据的ECC数据写入ECC数据区域,其中,ECC数据区域是对应于数据区域并且保存ECC数据的另一数据区域。
示例28是一种用于纠错码(ECC)存储器安全性的方法,该方法包括:接收写入请求,该写入请求包括数据;执行写入请求包括:将数据写入对应于存储器中的数据区域的数据缓冲器,该数据区域可由主机寻址;将ECC数据写入对应于存储器中的ECC区域的ECC缓冲器,ECC区域经由存储器的硬件对应于数据区域;对数据缓冲器和ECC缓冲器执行混淆以产生完整性检查值(ICV),混淆是可反向的;以及将混淆写入数据区域和ECC区域。
示例29是一种用于纠错码(ECC)存储器安全性的方法,该方法包括:接收写入请求,该写入请求包括数据;计算数据的完整性检查值(ICV);计算数据的ECC数据;执行写入请求包括:将数据写入存储器中的数据区域,该数据区域可由主机寻址;以及将ECC数据和ICV两者写入存储器中的ECC区域,该ECC区域经由存储器的硬件对应于数据区域。
示例30是至少一种机器可读介质,包括用于纠错码(ECC)存储器安全性的指令,该指令在由机器执行时使机器执行操作,该操作包括:接收写入请求,该写入请求包括数据;计算数据的完整性检查值(ICV);执行写入请求包括:将数据的表示写入存储器中的数据区域,该数据区域可由主机寻址;以及将ICV写入存储器中的ECC区域,该ECC区域经由存储器的硬件对应于数据区域。
在示例31中,示例30的主题,其中,执行写入请求包括计算数据的ECC信息。
在示例32中,示例31的主题,其中,执行写入请求包括将ECC信息写入存储器中的第二数据区域。
在示例33中,示例31-32中任一项的主题,其中,计算ECC信息包括将ECC信息的大小限制为小于ECC区域。
在示例34中,示例33的主题,其中,ECC信息是低密度奇偶校验(LDPC)码。
在示例35中,示例33-34中任一项的主题,其中,执行写入请求包括将ECC信息写入ECC区域。
在示例36中,示例31-35中任一项的主题,其中,执行写入请求包括:将数据的表示与ECC信息组合成单个实体,该单个实体是ICV;以及跨数据区域和ECC区域写入ICV。
在示例37中,示例36的主题,其中,组合数据的表示与ECC信息包括应用可逆参数化混淆运算符,该可逆参数化混淆运算符是错误保留的。
在示例38中,示例37的主题,其中,可逆参数化混淆运算符的参数是密钥或随机数中的至少一个。
在示例39中,示例30-38中任一项的主题,其中,数据的表示是数据的经加密的形式。
在示例40中,示例30-39中任一项的主题,其中,数据区域是高速缓存行。
在示例41中,示例30-40中任一项的主题,其中,通过设计,ECC区域与数据区域一起通过存储器被取回。
在示例42中,示例30-41中任一项的主题,其中,操作包括:接收针对数据区域的读取请求;将ICV与数据的表示一起取回;评估ICV以确定数据的表示是可接受的;以及响应于确定数据的表示是可接受的,将数据返回给读取请求的发起者而不评估ECC信息。
示例43是一种用于纠错码(ECC)存储器安全性的系统,该系统包括:用于接收写入请求的单元,该写入请求包括数据;用于计算数据的完整性检查值(ICV)的单元;用于执行写入请求的单元包括:用于将数据的表示写入存储器中的数据区域的单元,该数据区域可由主机寻址;以及用于将ICV写入存储器中的ECC区域的单元,该ECC区域经由存储器的硬件对应于数据区域。
在示例44中,示例43的主题,其中,用于执行写入请求的单元包括用于计算数据的ECC信息的单元。
在示例45中,示例44的主题,其中,用于执行写入请求的单元包括用于将ECC信息写入存储器中的第二数据区域的单元。
在示例46中,示例44-45中任一项的主题,其中,用于计算ECC信息的单元包括用于将ECC信息的大小限制为小于ECC区域的单元。
在示例47中,示例46的主题,其中,ECC信息是低密度奇偶校验(LDPC)码。
在示例48中,示例46-47中任一项的主题,其中,用于执行写入请求的单元包括用于将ECC信息写入ECC区域的单元。
在示例49中,示例44-48中任一项的主题,其中,用于执行写入请求的单元包括:用于将数据的表示与ECC信息组合成单个实体的单元,该单个实体是ICV;以及用于跨数据区域和ECC区域写入ICV的单元。
在示例50中,示例49的主题,其中,用于组合数据的表示与ECC信息的单元包括用于应用可逆参数化混淆运算符的单元,该可逆参数化混淆运算符是错误保留的。
在示例51中,示例50的主题,其中,可逆参数化混淆运算符的参数是密钥或随机数中的至少一个。
在示例52中,示例43-51中任一项的主题,其中,数据的表示是数据的经加密的形式。
在示例53中,示例43-52中任一项的主题,其中,数据区域是高速缓存行。
在示例54中,示例43-53中任一项的主题,其中,通过设计,ECC区域与数据区域一起通过存储器被取回。
在示例55中,示例43-54中任一项的主题,包括:用于接收针对数据区域的读取请求的单元;用于将ICV与数据的表示一起取回的单元;用于评估ICV以确定数据的表示可接受的单元;并且响应于确定数据的表示是可接受的,将数据返回给读取请求的发起者而不评估ECC信息。
示例56是至少一种包括指令的机器可读介质,该指令当由处理电路系统执行时,使处理电路系统执行用于实现示例1-55中任一项的操作。
示例57是一种装置,包括用于实现示例1-55中任一项的单元。
示例58是一种用于实现示例1-55中任一项的系统。
示例59是一种用于实现示例1-55中任一项的方法。
以上具体实施方式包括对附图的参考,附图形成具体实施方式的一部分。附图通过图示的方式示出了可以实践的特定实施例。这些实施例在本文中也称为“示例”。这些示例可以包括除了示出或描述的那些元素之外的元素。然而,本发明人还设想到仅提供示出或描述的那些元素的示例。此外,本发明人还设想到使用关于特定示例(或其一个或多个方面)或关于本文示出或描述的其他示例(或其一个或多个方面)示出或描述的那些元素(或其一个或多个方面)的任何组合或置换的示例。
本文档中提及的所有出版物、专利和专利文档均通过引用整体并入本文,如同通过引用单独并入一样。在本文档与通过引用如此并入的那些文档之间的用法不一致的情况下,并入的(多个)参考文献中的用法应被视为对本文档的用法的补充;对于不可调和的不一致性,以本文档中的用法为准。
在本文档中,如专利文档中常见的那样,使用术语“一”或“一个”来包括一个或多于一个,独立于“至少一个”或“一个或多个”的任何其他实例或用法。在本文档中,术语“或”用于指代非排他性的或,使得除非另有说明,否则“A或B”包括“A但不是B”、“B但不是A”和“A和B”。在所附权利要求书中,术语“包含(including)”和“在其中(in which)”用作相应术语“包括(comprising)”和“其中(wherein)”的通俗英语等同词。此外,在所附权利要求书中,术语“包含”和“包括”是开放式的,即,包括除了在权利要求中在这样的术语之后列出的元素之外的元素的系统、设备、物品或过程仍然被视为落入该权利要求的范围。此外,在所附权利要求书中,术语“第一”、“第二”和“第三”等仅用作标签,而并不旨在对其对象施加数字要求。
以上描述旨在是说明性的而非限制性的。例如,上面描述的示例(或其一个或多个方面)可以彼此组合使用。例如,本领域普通技术人员在阅读以上描述之后,可以使用其他实施例。摘要是为了使读者能够快速确定技术公开的本质,并且在提交时应理解摘要不会被用来解释或限制权利要求的范围或含义。另外,在上面的具体实施方式中,可以将各种特征组合在一起以简化公开内容。这不应该被解释为旨在使未要求保护的公开的特征对于任何权利要求是必不可少的。相反,发明主题可以在于少于特定公开实施例的所有特征。因此,所述权利要求由此并入具体实施方式中,其中每项权利要求独立地作为单独的实施例。实施例的范围应该参考所附权利要求以及这些权利要求赋予权利的等同物的完整范围来确定。

Claims (25)

1.一种用于纠错码(ECC)存储器安全性的存储器控制器,所述存储器控制器包括:
包括指令的机器可读介质;以及
处理电路系统,其在执行所述指令时操作以用于:
接收写入请求,所述写入请求包括数据;
计算所述数据的完整性检查值(ICV);
执行所述写入请求包括:
将所述数据的表示写入存储器中的数据区域,所述数据区域可由主机寻址;以及
将所述ICV写入存储器中的ECC区域,所述ECC区域经由所述存储器的硬件对应于所述数据区域。
2.如权利要求1所述的存储器控制器,其中,为了执行所述写入请求,所述处理电路系统计算所述数据的ECC信息。
3.如权利要求2所述的存储器控制器,其中,为了执行所述写入请求,所述处理电路系统将所述ECC信息写入所述存储器中的第二数据区域。
4.如权利要求2所述的存储器控制器,其中,为了计算所述ECC信息,所述处理电路系统将所述ECC信息的大小限制为小于所述ECC区域。
5.如权利要求4所述的存储器控制器,其中,所述ECC信息是低密度奇偶校验(LDPC)码。
6.如权利要求4所述的存储器控制器,其中,为了执行所述写入请求,所述处理电路系统将所述ECC信息写入所述ECC区域。
7.如权利要求2所述的存储器控制器,其中,为了执行所述写入请求,所述处理电路系统:
将所述数据的表示与所述ECC信息组合成单个实体,所述单个实体是所述ICV;并且
跨所述数据区域和所述ECC区域写入所述ICV。
8.如权利要求7所述的存储器控制器,其中,为了组合所述数据的表示与所述ECC信息,所述处理电路系统应用可逆参数化混淆运算符,所述可逆参数化混淆运算符是错误保留的。
9.如权利要求1所述的存储器控制器,其中,所述数据区域是高速缓存行。
10.如权利要求1所述的存储器控制器,其中,通过设计,所述ECC区域与所述数据区域一起通过所述存储器被取回。
11.一种用于纠错码(ECC)存储器安全性的方法,所述方法包括:
接收写入请求,所述写入请求包括数据;
计算所述数据的完整性检查值(ICV);
执行所述写入请求包括:
将所述数据的表示写入存储器中的数据区域,所述数据区域可由主机寻址;以及
将所述ICV写入存储器中的ECC区域,所述ECC区域经由所述存储器的硬件对应于所述数据区域。
12.如权利要求11所述的方法,其中,执行所述写入请求包括计算所述数据的ECC信息。
13.如权利要求12所述的方法,其中,执行所述写入请求包括将所述ECC信息写入所述存储器中的第二数据区域。
14.如权利要求12所述的方法,其中,计算所述ECC信息包括将所述ECC信息的大小限制为小于所述ECC区域。
15.如权利要求14所述的方法,其中,所述ECC信息是低密度奇偶校验(LDPC)码。
16.如权利要求14所述的方法,其中,执行所述写入请求包括将所述ECC信息写入所述ECC区域。
17.如权利要求12所述的方法,其中,执行所述写入请求包括:
将所述数据的表示与所述ECC信息组合成单个实体,所述单个实体是所述ICV;以及
跨所述数据区域和所述ECC区域写入所述ICV。
18.如权利要求17所述的方法,其中,组合所述数据的表示与所述ECC信息包括应用可逆参数化混淆运算符,所述可逆参数化混淆运算符是错误保留的。
19.如权利要求18所述的方法,其中,所述可逆参数化混淆运算符的参数是密钥或随机数中的至少一个。
20.如权利要求11所述的方法,其中,所述数据的表示是所述数据的经加密的形式。
21.如权利要求11所述的方法,其中,所述数据区域是高速缓存行。
22.如权利要求11所述的方法,其中,通过设计,所述ECC区域与所述数据区域一起通过所述存储器被取回。
23.如权利要求11所述的方法,包括:
接收针对所述数据区域的读取请求;
将所述ICV与所述数据的表示一起取回;
评估所述ICV以确定所述数据的表示是可接受的;以及
响应于确定所述数据的表示是可接受的,将所述数据返回给所述读取请求的发起者而不评估所述ECC信息。
24.一种系统,包括用于执行权利要求11至23中任一项所述的方法的单元。
25.至少一种包括指令的机器可读介质,所述指令当由处理电路系统执行时,使所述处理电路系统执行权利要求11至23中任一项所述的方法。
CN201910451065.0A 2018-06-28 2019-05-28 纠错码存储器安全性 Pending CN110659153A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/022,447 US10725861B2 (en) 2018-06-28 2018-06-28 Error correction code memory security
US16/022,447 2018-06-28

Publications (1)

Publication Number Publication Date
CN110659153A true CN110659153A (zh) 2020-01-07

Family

ID=65229601

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910451065.0A Pending CN110659153A (zh) 2018-06-28 2019-05-28 纠错码存储器安全性

Country Status (3)

Country Link
US (1) US10725861B2 (zh)
CN (1) CN110659153A (zh)
DE (1) DE102019110501A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093588B2 (en) * 2017-06-26 2021-08-17 Micron Technology, Inc. Memory system including data obfuscation
KR20200092036A (ko) * 2019-01-24 2020-08-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11036636B2 (en) * 2019-06-28 2021-06-15 Intel Corporation Providing improved efficiency for metadata usages
CN111294059B (zh) * 2019-12-26 2023-06-30 成都海光集成电路设计有限公司 编码方法、译码方法、纠错方法及相关装置
US11500711B1 (en) 2021-07-20 2022-11-15 Rockwell Collins, Inc. System and method for determining error occurrence in graphics memory of graphics processing unit

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0630499A4 (en) * 1992-03-09 1996-07-24 Auspex Systems Inc ACCELERATION SYSTEM WITH NON-VOLATILE, PROTECTED, WRITABLE RAM CACHE.
US7454668B1 (en) * 2005-09-23 2008-11-18 Emc Corporation Techniques for data signature and protection against lost writes
US9063561B2 (en) * 2009-05-06 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct memory access for loopback transfers in a media controller architecture
US9798900B2 (en) 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection
US10585809B2 (en) * 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US11269786B2 (en) * 2018-07-25 2022-03-08 Intel Corporation Memory data protection based on authenticated encryption

Also Published As

Publication number Publication date
DE102019110501A1 (de) 2020-01-02
US10725861B2 (en) 2020-07-28
US20190042362A1 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
US10725861B2 (en) Error correction code memory security
US10922243B2 (en) Secure memory
US10496841B2 (en) Dynamic and efficient protected file layout
Elbaz et al. Tec-tree: A low-cost, parallelizable tree for efficient defense against memory replay attacks
US10846437B2 (en) Compressed integrity check counters in memory
US20190138621A1 (en) High-speed secure virtual file system
US11489660B2 (en) Re-encrypting data on a hash chain
KR20200031671A (ko) 메모리 보안용 카운터 무결성 트리
JP4175386B2 (ja) 情報処理システム、情報処理装置、および集積回路チップ
US11604740B2 (en) Obfuscating cryptographic material in memory
CN106209346B (zh) 白盒密码技术交错查找表
US20130064365A1 (en) Data Destruction
US9471413B2 (en) Memory device with secure test mode
US11019098B2 (en) Replay protection for memory based on key refresh
KR102420035B1 (ko) 저장 디바이스의 인증 변경
KR101687492B1 (ko) 분산적으로 데이터를 저장하는 방법 및 암호학적 정보 처리 장치
CN107861892B (zh) 一种实现数据处理的方法及终端
US20220014381A1 (en) Message authentication code (mac) generation for live migration of encrypted virtual machiness
Jakobsson et al. Assured detection of malware with applications to mobile platforms
US20190052610A1 (en) Apparatus and method for encapsulation of profile certificate private keys or other data
Wang et al. Memory Confidentiality and Integrity Protection Technology
CN114297093A (zh) 一种数据的存储方法、装置、设备及存储介质
KR101776845B1 (ko) 키 조작에 대한 보호
CN118096158A (zh) 数据传输方法、装置、计算机设备、介质和产品
EP2945092B1 (en) Memory device with secure test mode

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