存储器完整性的制作方法

文档序号:17319755发布日期:2019-04-05 21:28阅读:214来源:国知局
存储器完整性的制作方法

实施例在总体上涉及存储器完整性。更具体地,实施例涉及通过基于就未加密数据是否包括多个比特的随机分布而进行的判定来实施完整性动作,以维持存储器完整性。



背景技术:

在例如个人计算机、智能移动电话等设备中对存储器的加密可以用于在所述设备正在运行、丢失、被窃时保护存储于存储器中的数据。然而,对存储器的加密可能仍然是易受攻击的,因为数据可能会被对手经由初始的和/或重复的存储器损坏攻击而损坏。因此,处理器可能执行已损坏的数据,并引起一系列不期望的效果,例如,密码登录尝试错误地成功、失败等,应用行为不当、崩溃等,以及诸如此类。常规的技术实施各种策略来维持存储器的完整性,力图将对加密数据(例如,存储数据)的恶意改变最小化。一种技术可以包括利用奇偶校验。虽然是一种内嵌(in-line)方法并具有相对较低的存储成本,但奇偶校验在对手可能成功猜到如何改变存储数据的比特来通过校验的范围内是确定性的。另一种技术可涉及利用相对大的代码来验证存储数据的完整性,这对于对手可能不是确定性的,但是可能包括相对较高的存储成本。另外,每次从存储器中取出数据时都使用代码可能导致相对较大数量的存储器访问事件,这引起相对较高的检索成本、性能退化、额外功率消耗等。

附图说明

通过阅读后续说明书和随附权利要求以及通过参考后续附图,本领域技术人员可以明白实施例的各种优点,在附图中:

图1是根据实施例的维持存储器完整性的装置的例子的框图;

图2是根据实施例的维持存储器完整性的装置的另一例子的框图;

图3是根据实施例的维持存储器完整性的方法的例子的流程图;以及

图4是根据实施例的维持存储器完整性的方法的另一例子的流程图。

具体实施方式

现在参考图1,示出了根据实施例的维持存储器完整性的装置10。装置10可以包括任意计算设备和/或数据平台,例如膝上型计算机、个人数字助理(pda)、媒体内容播放器、成像设备、移动互联网设备(mid)、任意智能设备(例如:无线智能电话、智能平板、智能tv)、计算机服务器等,或其组合。另外,装置10可以包括具有计算功能(例如,个人数字助理/pda、膝上型计算机、智能平板)、通信功能(例如,无线智能电话)、成像功能、媒体播放功能(例如,智能电视/tv)等或其组合(例如,自动互联网设备/mid)的任意平台。

所示的装置10包括存储器12。存储器12可以在处理器14的外部(例如,外部存储器),和/或可以通过例如存储器总线耦合到处理器14。另外,存储器12可以实现为主存储器。存储器12例如可以包括易失性存储器、非易失性存储器等,或者其组合。例如,存储器12可以包括动态随机存取存储器(dram),其配置为一个或多个存储器模块,例如,双列直插式存储器模块(dimm)、小外廓dimm(sodimm)等;只读存储器(rom),例如,可编程只读存储器(prom)、可擦除prom(eprom)、电eprom(eeprom)等;相变存储器(pcm)等,或其组合。存储器12可以包括存储器单元的阵列,其按行和列布置并被分隔为可独立寻址的存储位置。因此,对存储器12的访问可能涉及使用针对存储位置(storagelocation)的地址,例如,识别包含该存储位置[storagememorylocation]的行的行地址,以及识别包含该存储位置[storagememorylocation]的列的列地址。

处理器14可以包括任意类型的处理器,例如,微处理器、嵌入式处理器、数字信号处理器(dsp)、中央处理单元(cpu)、图形处理单元(gpu)、视觉处理单元(vpu)、网络处理器、执行代码以实现本文所描述技术的设备,等等,或其组合。处理器14可以包括一个或多个核心,例如核心16和核心18。核心16、18可以包括单线程核心、多线程核心等,或其组合。核心16、18可以包括指令解码器,用于对指令(例如,来自指令寄存器的)进行识别和/或解码,以激活适当的电路来执行所述指令,从而验证指令流(例如,操作代码等)将会进行计算,等等,或其组合。

例如,核心16、18可以执行一条或多条指令,例如,读取指令、写入指令、擦除指令、移动指令、算术指令、控制指令等,或其组合。核心16、18例如可以执行一条或多条指令来将数据(例如,程序数据、操作代码、操作数等)在寄存器(未示出)与存储器12之间移动,来从存储器12读取数据,来将数据写入存储器12,来利用数据执行算术运算(例如,加、减、按位运算、比较等),来执行与数据相关联的控制操作(例如,分支等)等或其组合。指令可以包括任意代码表示,例如,二进制代码、八进制代码和/或十六进制代码(例如,机器语言)、符号代码(例如,汇编语言)、十进制代码、字母数字代码、高级编程语言代码等,或其组合。因此,例如,十六进制代码可以用于表示x86指令集的操作代码(例如,操作码),其包括字节值“00”用于加法运算、字节值“8b”用于移动运算、字节值“ff”用于增量/减量运算,等等。

处理器14可以包括内部存储装置,例如,包括一级或多级的处理器缓存。处理器缓存可以不加密和/或可以与处理器14共享同一管芯、在同一芯片上。另外,处理器缓存可以集成到一个或多个核心16、18上。所示的处理器14包括缓存20,其可以存储处理器14的一个或多个部件所利用的数据(例如,指令、操作数、程序数据等)。缓存20可以包括任意类型的缓存,例如,指令缓存、数据缓存、单级缓存、多级缓存、共享缓存、严格包容型缓存、独占型缓存等或其组合。例如,缓存20可以包括中级缓存,例如级别2(l2)、级别3(l3)、级别4(l4)、或其它级别的缓存、最后一级缓存(llc)等或其组合。核心16、18可以就数据是否位于缓存20中来进行检查,以执行一条或多条指令和/或其它数据(例如,程序数据等),其中缓存未命中可能引起数据以固定大小的块(例如,缓存行)从存储器12转移到缓存20。

所示的处理器14还包括存储器控制器22,其可以将处理器14与存储器12耦合,管理去往和/或来自存储器12的数据流等或其组合。虽然示出的存储器控制器22被集成到处理器14上,但是存储器控制器22可以是在处理器14外部的而非集成到其中的分立逻辑。类似的,示出为集成到存储器控制器22上的部件可以是在存储器控制器22外部的而非集成到其中的分立逻辑。每个核心16、18例如可以经由各自的存储器控制器与各自的存储器耦合、经由共享存储器控制器与共享存储器耦合、经由共享存储器控制器与各自的存储器耦合,等等或其组合。另外,共享缓存可以与共享存储器控制器耦合,多个缓存可以与多个各自的存储器控制器耦合,等等,或其组合。例如,存储器控制器22可以在核心16、18当中共享,可以与缓存20(例如,共享的多级缓存)耦合,并可以将核心16、18与存储器12(例如,共享的dram)耦合。存储器控制器22可以与存储器12(例如,外部存储器、dram等)耦合,例如经由存储器总线。

另外,所示的存储器控制器22包括加密器24,其可以对未加密的数据进行加密。未加密数据可以包括例如明码数据、明文数据,等等或其组合。可以用专用格式(例如,超文本传输标记语言(html)、富文本格式(rtf)等)对明码数据进行编码,并通过适当程序(例如,文字处理器、文本编辑器等)对明码数据进行读取,而无需解密。明文数据可以包括预先加密的数据,例如,在传输和/或存储之前进行加密的明码数据。另外,明文数据可以包括后解密数据,例如,作为对接收到的和/或检索到的数据进行解密的结果的数据。

另外,明文数据可以包括以任何格式可编码的数据,例如,音频/视频数据(例如,运动图像专家组(mpeg)数据等)、图像数据(例如,联合图像专家组(jpeg)数据等)、金融数据(例如,自动柜员机(atm)交易数据等),等等,或其组合。明文数据可以包括程序数据,例如,至少一部分程序、操作系统(os)、应用、虚拟机(例如,虚拟机监视器(vmm)代码等),等等,或其组合。明文数据还可以包括例如指令,其包括操作码、操作数等,或其组合。

未加密的数据可以包括多个比特。所述多个比特可以包括以任意代码表示(例如,二进制代码、八进制代码、十六进制代码、符号代码、十进制代码、字母数字代码、高级编程语言代码等或其组合)的一个或多个比特(例如,字节等)。例如,存储器参考指令可以包括用于操作码的比特、用于地址的比特,等等,其中存储器参考指令的比特可以用十六进制代码(例如,机器语言)、符号代码(例如,汇编语言)等或其组合表示。另外,多个比特可以被翻译成二进制代码和/或从二进制代码翻译出,其中所述二进制代码可以由核心16、18执行,可以在存储器12中被排序,可以从存储器12处取得,等等,或其组合。

加密器24可以包括任意类型的密码来生成密文数据,例如,以任意期望操作模式的块密码。所述块密码可以包括固定块大小,其中块密码可以被重复实现,以对与块大小相比更大的数据进行加密。例如,块密码可以在传播密码块链接(pcbc)操作模式中包括高级加密标准(aes)。另外,块密码可以包括可扩展的块大小。在一个例子中,块密码是threefish,其可以被实现以获得任意长度(例如,256比特、512比特、1024比特等)的可扩展块大小。

例如,threefish可以利用可包括存储器地址和/或位置的微调(tweak)(例如,128比特),以及可以与块具有相同宽度的密钥,可以使用多个(例如,72个)轮(round)以加密256比特和1024比特的块,使用多个(例如,80个)轮用于1024比特的块,等等。threefish可以使用函数mix,其包括加法运算、乘以常数的旋转运算以及异或(xor)运算。例如,在每组mix函数(例如,依据块大小分别地2、4或8)之后,可以对字(word)进行排列。例如,可以在每若干个(例如,4个)轮时将子密钥注入到系统中,其中子密钥可以由部分密钥、微调和计数器值来生成。密钥和微调可以在末尾处被给予额外的字(例如,所有其它字的xor)。

所示的存储器控制器22还包括解密器26,其可以对密文数据进行解密以生成未加密数据。解密器26可以包括加密器24的逆变(inverse)。例如,解密器26可以包括aes-pcbc的逆变。另外,解密器26可以包括threefish的逆变。例如,可以以相反的次序施加子密钥,其中每个轮包括:相反的字排列,紧跟着逆变的mix函数。因此,未加密数据(例如,明文数据)可以实现为对加密器24的输入,以在将未加密数据存储于存储器12中时(例如,写入指令)生成未加密数据的不可读副本(例如,密文数据),其中解密器26可以被实现以对密文数据进行解密,并在将密文数据从存储器12取出(例如,读取指令)时生成未加密数据。

所示的存储器控制器22还包括逻辑28,其可以利用处理器14的部件,例如,核心16、18、加密器24、解密器26等,来维持(例如,确保、验证、测试等)存储器14的完整性。例如,逻辑28可以识别包括多个比特的未加密数据(例如,预加密数据、后解密数据等)。另外,逻辑28可以识别可涉及存储器事务(memorytransaction)的未加密数据,例如,涉及从存储器12读取操作的未加密数据(例如,后解密数据)、涉及存储器12的写入操作的未加密数据(例如,预加密数据)等,或其组合。另外,逻辑28可以确定所述多个比特是否包括模式(pattern)、随机分布等,或其组合。

逻辑28可以利用任意计算出的和/或检索的信息来进行判定。所述信息可以对应于,例如,数据的类型(例如,指令、程序数据等)。逻辑28例如可以在大量存储器(例如,数以十亿字节计的存储器)上检查程序数据,从而确定以特定频率出现的典型模式,包括相对普通的模式、相对模糊的模式等,或其组合。另外,逻辑28可以从存储装置(例如,存储器、服务器等)、从数据结构(例如,表等)等或其组合中检索关于典型模式的信息。在一个例子中,通常存储于存储器14中、被取出然后被解密的程序数据可包括比一(1)比特更多的零(0)比特。因此,逻辑28可以识别在用于程序数据的缓存行中通常会遇到零(0)比特多于一(1)比特,并使用模式来判定未加密数据是否包括所述多个比特的随机分布。

另外,对于认证操作(例如使用密码登录到计算平台),可能遇到布尔真-假测试(例如,32比特)。逻辑28可以通过针对典型的三十二比特真-假测试识别一个将设定为一(1)的第一比特、设定为零(0)的第二比特以及设定为零(0)的剩余三十比特包括在内的比特序列,来确定所述多个比特包括模式。另外,逻辑28可以通过识别倾向于共享相同的缓存行(例如,基于数据类型)的相关模式,来确定所述多个比特包括模式。例如,逻辑28可以识别指令数据(例如,x86指令等)会倾向于与其它指令数据(例如,x86指令等)共享相同的缓存行,程序数据会倾向于与其它程序数据共享缓存行,指令数据会倾向于相对于程序数据位于不同的缓存行,等等,或其组合。逻辑28还可以识别,针对一种类型的数据的比特序列会倾向于一起出现。例如,html比特序列(例如,html模式)会倾向于一起出现,ascii比特序列(例如,ascii模式)会倾向于一起出现,mpeg比特序列(例如,mpeg模式)倾向于一起出现,等等。

另外,逻辑28可以从存储器12检索指令集(例如,x86指令集),并使用对应的值(例如,字节值)来判定未加密数据是否包括所述多个比特的随机分布。因此,存储器控制器22可以验证未加密缓存行是否包括指令的有效流,例如x86指令、操作码的有效流,以进行所述判定。例如,逻辑28可以通过识别在未加密数据中用于基本操作(例如,移动、加法等)的指令来判定多个比特是否包括模式。虽然逻辑28可能针对整个指令集匹配模式,但逻辑28也可以搜索指令集的至少一部分,例如针对x86指令集的字节值“00”、“ff”和/或“8b”,其可能频繁地和/或重复地出现在对应结构(例如,x86结构)的缓存行中。

因此,逻辑28可以通过识别以一频率出现在未加密数据中的比特序列来进行所述判定。逻辑28还可以对比特序列出现在未加密数据中的实例的数量进行计数。另外,当实例的数量满足阈值时,逻辑28可以判定所述未加密数据不包括所述多个比特的随机分布。例如,逻辑28可以针对对缓存行进行的取得来应用下述示例性启发式规则,例如,从dram取得涉及“b0b1b2…b63”的64字节缓存行到存储器控制器28,其中“b0b1b2…b63”可以对应于程序代码或文本段:

逻辑28可以通过识别指令集的典型值(例如,x86中的字节值“00”、“ff”和/或“8b”)来判定所述多个比特是否包括模式。在该例子中,当计数大于或等于阈值9时,逻辑28可以判定未加密数据包括未损坏的(例如,适当的、有效的等)非随机指令。因此,存储器控制器22可以验证未加密缓存行是否包括指令的有效流,例如,x86指令、操作代码等的有效流,从而进行所述判定。

因此,当未加密数据包括满足阈值的一个或多个典型比特序列(例如,模式)时,逻辑28可以判定未加密数据不包括所述多个比特的随机分布。相反,当未加密数据不包括满足阈值的一个或多个典型比特序列时,逻辑28可以判定未加密数据包括所述多个比特的随机分布。因此,当阈值不被满足时,逻辑28可以判定未加密数据被损坏(例如,不适当的、无效的等)。阈值例如可以被预先确定和/或被设定为任意值。另外,阈值设定可以针对特定类型的模式、模式的组合、等等,或上述各项的组合。另外,可以对模式进行加权,例如用以解释相对普通的模式、相对模糊的模式等或其组合。

另外,逻辑28可以在已解密的数据块中检测程序数据、指令等的一个或多个典型模式,并将典型模式的实例与将以随机分布的比特出现序列的可能性进行比较。注意,遇到模式的几率对于有效明文会相对较高,并且/或者随机噪声创建可识别模式的可能性会相对较低。另外,逻辑28可以实现概率函数来判定未加密数据是否包括所述多个比特的随机分布。例如,所述函数可以包括概率密度函数来验证和/或测试未加密数据是否包括所述多个比特的随机分布。因此,例如,逻辑28可以对未加密数据实现后验概率密度函数来进行所述判定。

逻辑28可以在任何时候就未加密数据是否包括所述多个比特的随机分布来进行判定。例如,逻辑28可以在从存储器12取得数据(例如,密文数据)之后进行所述判定,也可以在解密器26将数据解密以生成未加密数据(例如,明文数据)之后进行所述判定。所述取得可以例如响应于缓存未命中(cachemiss)。注意,对存储于存储器12中的加密数据的至少一比特的改变可能引起据其生成的未加密数据出现随机,这是因为在密文数据中的至少一比特的改变可能引起在对应的未加密数据中的大约百分之五十的比特改变,其中所述改变可能在基本整个数据块上扩散。

例如,如果原始明文数据是被加密以形成密文数据的全零数据块,则对密文数据的改变可能引起平均大约百分之五十的比特改变为一,其中对应的明文数据的比特可能以随机分布出现(例如,在基本整个数据块上的随机比特翻转)。可以例如通过翻转(flip)一个或多个比特、插入比特、删除比特、交换比特、修改密文数据等或其组合来改变密文数据,并且逻辑28可以判定对应的已解密的明文数据包括在数据块的比特的总数的大约一半的比特差异。因此,加密器24可以将程序数据的64字节缓存行加密成密文数据的单个数据块,其中对密文数据的作为结果的512比特中的一个或多个比特的改变会引起在对应的明文数据的512比特中的大约256个位置处的比特差异,这可在基本整个已解密的明文数据块上扩散。因此,逻辑28可以基于相对随机和/或高熵的已解密的明文结果来识别对密文数据进行的恶意的n比特改变(例如,二比特改变、全比特改变等)。

此外,逻辑28可以实现完整性动作,来防止在未加密数据损坏时访问未加密数据。例如,逻辑28可以通过禁止将未加密数据转发给缓存20、通过防止访问对应于未加密数据的存储器位置、通过使得存储器中的位置被擦除,等等,或其组合,来防止访问。另外,逻辑28可以引起通知(例如,包括数据副本、存储器位置等)被发布。所述通知可以例如被发布给预先确定的位置(例如,调试环境、日志等)、个人(管理员、编程者、设备拥有者等)等,从而实现预防动作。另外,处理器14可以通过熔断保险丝和/或利用其它管芯上(on-die)非易失性存储器来内部地记录存储器损坏侵害。对此,例如当断电时,处理器芯片可能回忆起攻击尝试,并在多个检测到的攻击尝试满足预先确定的攻击阈值时采取动作,例如,关机、变得不可操作等。

另外,逻辑28可以使得内部固件运行,以防止访问损坏的数据,所述内部固件可不依赖于处理器14内部的存储器。例如,核心16、18可以运行例如来自rom的微代码,以防止访问损坏的数据。微代码可以用于采取校正动作,例如,发现存储器12为什么损坏、将存储器12改变回到先前的未损坏状态、重置装置10,等等,或其组合。另外,逻辑28可以通过将损坏定位到存储器12的一个或多个块上而防止访问损坏数据。例如,逻辑28可以使得微代码定位未损坏的存储器位置,并允许执行未损坏的程序数据和/或指令。因此,逻辑28可以使得微代码执行并杀死损坏的应用,用剩余的未损坏应用来恢复os的功能,等等,或其组合。

逻辑28还可以在未加密数据被加密并被存储于存储器12之前做出判定。在一个例子中,前加密判定逻辑(例如,算法、硬件逻辑、电路逻辑等)可能与后解密损坏检测逻辑(算法、硬件逻辑、逻辑等)相同,以确保每个存储器操作方向(例如,存储器读取、存储器写入等)可以对相同的明文数据产生相同的判定。另外,逻辑28可以判定原始的未加密数据包括多个比特的随机分布,并且作为响应,可以使得与未加密数据相关联的完整性值被预先生成,且将该完整性值在相对地定制的自组织基础上(onarelativelytailoredadhocbasis)存储在存储器12中。

完整性值可以包括关于在未加密数据中识别出的多个比特的随机分布是对加密数据进行修改的结果还是由解密器26进行合法解密的结果来进行验证和/或测试的任意值。例如,完整性值可以包括完整性检查值(icv)(例如,散列)、消息认证码(mac)(例如,当使用相同的消息、密钥和初始化向量时,产生相同mac)、消息完整性代码(mic)(例如,如果使用相同算法,则产生相同mic)、签名(例如,利用密钥对偶中的私钥产生)等或其组合。因此,逻辑28可以应用下述示例性启发性规则,例如作为上述示例性启发性规则的例子的继续:

逻辑28可以在从存储器12取得数据(例如,密文数据)之后以及在解密器26对数据进行解密以生成未加密数据(例如,明文数据)之后,就未加密数据是否包括多个比特的随机分布进行进一步的判定(例如,第二判定,等等)。所述取得例如可以响应于缓存未命中。另外,当未加密数据包括多个比特的随机分布时,逻辑28可以从存储器12取得完整性值,例如在检查以确定是否存在之后,并可以基于所述完整性值来判定未加密数据是否被损坏。例如,逻辑28可以利用未加密数据(例如,消息、明文数据等)计算散列值(例如,摘要),并将所述散列值与取得的整体性值(例如,128比特icv、mac等)进行比较,从而验证未加密数据是否是原始数据的合法解密结果。如果测试失败,例如由于比较失配(comparisonmismatch),则逻辑28可以判定未加密数据被损坏,并可以防止访问未加密数据,记录该事件,将存储器损坏通知给软件,将存储器损坏通知给固件等,或其组合。

当数据不包括所述多个比特的随机分布时,逻辑28可以允许访问未加密数据。例如,可以基于识别模式,基于阈值,基于概率函数,等等,或其组合,将未加密数据置于缓存20中。例如,可以将未损坏的未加密数据传递给最后一级缓存行。因此,未损坏的数据可以是对于核心16、18为可访问的。

逻辑28还可以将至少一比特的改变的扩散最大化。例如,在电子码书(ecb)模式中的aes可以在固定块大小(例如,128比特)上扩展,该固定块大小可能比缓存行的原子单位(例如,64字节)更短,并可以将扩散最小化。逻辑28可以在原子单位上实现加密,以将所述多个比特的随机分布最大化,其中至少一比特的改变可能以比特总数的大约一半引起随机比特差异,并且其中当密码块大小与缓存行一样大时,被改变的比特的分布可能在基本整个缓存行上扩散。所述分布可以遵循例如二项式iid随机分布比特序列。

逻辑28可以选择包括了足以将扩散最大化的块大小的块密码,例如当缓存行是128比特时选择128比特密码。另外,逻辑28可以选择和/或实现可扩展的块密码(例如,threefish),并将该可扩展块密码的块大小设置为等于访问存储器12的粒度,以将扩散最大化。例如,逻辑28可以将块大小设置为与整个缓存行一样大。当将从存储器12中取得的存储器的量是任意特定数量的字节时,逻辑28可以将块大小设置为该特定数量的字节。因此,逻辑28可以将块密码缩放到核心16、18藉以从存储器12读取数据、将数据写入到存储器12、等等,或其组合,的原子单位。如下所述,逻辑28还可以实现一个或多个扩散器来将扩散最大化。

图2示出了根据实施例的包括存储器控制器22的装置30,其中存储器控制器22包括扩散器30和逆变扩散器32,其可以由逻辑28实现以将扩散最大化。例如,当块密码的块大小小于访问存储器12的粒度时,扩散器30可以由逻辑28实现以进行加密。在任意操作模式下,扩散器30可以包括任意块密码。扩散器30例如可以包括向前或向后的级联块密码或pcbc,以确保(不管位置)至少单个比特改变(例如,一比特的改变、二比特改变、全比特改变等)影响所取得的缓存行(不管大小)的比特。

因此,除了如上所述将密码的块大小与缓存行大小相匹配外,当密码不够宽来覆盖完整的缓存行宽度时,逻辑28还可以实现aes-pcbc。aes-pcbc可以沿着缓存行双向运行多次(例如,对缓存行从前往后加密,然后从后往前再次加密),以利用密码块链确保在未加密数据上的基本扩散。逆变扩散器32可以包括扩散器30的逆变,例如,aes-pcbc的逆变,其可以由逻辑28实现以相对于所使用的加密为相反的方式对密文数据进行解密。

所示的存储器控制器22还包括:地址加扰器34,其可以由逻辑28实现以对被利用来对存储器12进行访问的物理存储器地址进行加扰;以及逆变地址加扰器36,其可以由逻辑28实现以对物理存储器地址的加扰进行逆变。加扰器34可以将顺序输入的逻辑地址映射为非顺序的物理地址,其中可以在逻辑上与存储器12的行或列相对应的存储器访问(memoryaccess)可以被散布在存储器12的多个行和列当中。因此,对手不能获得关于未加密数据的信息,该信息原本是通过将加密数据在存储器12的随机位置上分布而可获得的。

例如,对手可能具有关于与对程序寻址的方式、将程序存储在存储器12中的方式、等等或其组合有关的程序数据(例如,os、应用等)的先验知识。逻辑28可以实现加扰器34,以将顺序输入的逻辑地址映射为非顺序的物理存储器地址,从而防止攻击者基于被用来在外部存储装置(未示出)中、在存储器12中、等等或其组合中存储数据的物理地址而获得信息。加扰器34例如可以每当计算平台加电就生成随机数,其可以与物理地址异或。逆变地址加扰器36可以包括地址加扰器34的逆变,其可以由逻辑28实现以用相对所使用的加扰相反的方式进行解扰(descramble)。

存储器控制器22还可以包括微调功能38,其可以由逻辑28实现以利用物理存储器地址(例如,加扰的、未加扰的,等等)作为对块密码的微调,从而将未加密数据与物理存储器地址绑定。微调功能38例如可以包括基于xex的具有密文挪用的微调代码本模式(xts)、lrw算法等或其组合。因此,可以防止对手对合法的存储器加密数据进行切换和/或重排序。更确切地说,存储的缓存行可以是位置依赖的,和/或不能移动到其它物理存储器位置,而不会使得由逻辑28所实现的行内完整性检查失败。

微调功能38例如可以展开(spread)原始物理存储器地址,将该地址与未加密数据异或,并通过加密器24用密钥运行该结果,从而将该未加密数据与该地址绑定。当密文数据从一个存储器位置移动到不同的存储器位置时,逻辑28然后可以基于微调判定未加密数据是否被损坏。例如,当攻击包括将密文数据交换到不同的存储器位置时,解密器26可以对具有与不同存储器位置相对应的存储器地址的密文数据进行解密,这将引起对应的未加密数据(例如,明文数据)包括所述多个比特的随机分布。因此,逻辑28可以判定未加密数据被损坏且防止对未加密数据进行访问。

所示的存储器控制器22还包括解码器40,其可以由逻辑28实现。解码器40例如可以布置在解密器26和逻辑28之间。解码器40可以由逻辑28实现,以至少对未加密数据进行解码并识别一条或多条指令。例如,当基本整个缓存行(例如,64字节缓存行)是从存储器12中取得且被解密时,未损坏的未加密数据(例如,有效的明文)可以包含操作码。因此,当解码器40对明文数据进行解码时,解码器40可以识别指令集(例如,x86指令集等)的操作码。解码器40可以表示在未加密数据中存在指令,并且逻辑28可以利用来自解码器40的输入来判定未加密数据是否未损坏、是否不包括多个比特的随机分布,等等,或其组合。

另外,所示的存储器控制器22包括模式添加器42,其可以由逻辑28实现,以在未加密数据被加密之前将可识别的非随机模式添加到未加密数据。例如,可以添加模式以将所述多个比特的随机分布最小化。例如,模式添加器40可以由逻辑28实现,以生成非随机模式和/或添加非随机模式到未加密数据,这可以用作输入到加密器24的明文数据。模式添加器40可以将完整性的n比特(例如,大于或等于32比特,等)添加到未加密数据的一端、未加密数据的中间部分、等等,或其组合。所添加的模式可以包括例如全零模式、全一模式、零和一的交替比特模式等,或其组合。

另外,模式添加器40可以添加包括对于逻辑28为已知的固定值(例如,固定模式)的替换模式。所述固定值例如可以添加有存储器位置以对原始数据进行替换。替换模式的宽度可以与原始被替换数据的宽度相同或不同(例如,比其更大、更小等)。替换模式可以使得额外的自组织(adhoc)存储器进行查找获得以固定模式和存储器位置替换的原始数据。因此,模式添加器40可以替换至少一部分未加密数据,其可以存储于单独的存储器位置和/或用额外的存储器读取来检索,以恢复原始替换的数据。模式添加器40还可以在指定了原始替换的数据在存储器12中被存储在何处的替换数据上添加位置信息。因此,icv可能不被需要和/或被存储。

例如,逻辑28可以判定缓存行数据将不会经过启发式规则(例如,模式测试等)预加密,并用固定模式和存储器位置来替换缓存行数据的至少一部分。作为响应,逻辑28可以使得来自原始缓存行的原始替换的数据存储在添加的存储器位置处。响应于存储器查找,并且如果没有发生损坏,逻辑28可以识别添加的固定模式,并使用添加的存储器位置(例如,经由表格索引查找等)来引起从存储器12的第二读取,以恢复由固定模式和存储器位置所替换的原始替换的数据。因此,逻辑28可以判定未加密数据未被损坏且恢复原始替换的数据。相反地,当添加的固定模式不能被识别、添加的存储器位置不能被读取、等等、或其组合时,逻辑28可以判定未加密数据被损坏。

因此,可以添加相当多个比特(例如,多于奇偶校验、少于错误代码,等等),以将未加密数据从多个比特的随机分布强加到多个比特的非随机分布,并将对手可能以使得对应的明文数据可被生成以包括多个比特的非随机分布的方式来改变密文数据的可能性最小化。例如,在密文数据中的至少一比特的改变可能引起对应的明文数据的多个比特中的随机分布(例如,包括添加的模式),其中当未加密数据包括所述多个比特的随机分布时(例如,对于添加的模式,对于整个数据块等),逻辑28可以判定未加密数据被损坏。另外,逻辑28可以将判定排他地基于在未加密数据中存在和/或不存在模式,而不需要例如实现一个或多个可识别模式的完整性值。

虽然未在图1或图2中示出,但装置10和/或装置30可以在具有处理器14的芯片上包括其它元件。例如,处理器14可以包括与存储器控制器22集成的输入输出(io)控制逻辑。另外,装置10和/或装置30例如可以包括io模块(有时称作芯片组的南桥),其用作主机设备并可以例如与前/后图像传感器(例如,二维摄像机、三维摄像机等)、麦克风、显示器(例如,显示屏)、运动传感器(例如,加速计、陀螺仪等)、大容量存储装置(例如,硬盘驱动/hdd、光盘、闪速存储器等)、网络接口进行通信,以提供多种通信功能(例如,蜂窝电话、wifi、wimax、全球定位系统(gps)、扩频(例如,900mhz)、其它射频(rf)等)。处理器14和io模块例如可以实现为片上系统(soc)。另外,虽然出于说明的目的例子已经示出了单独的部件,但是可以理解的是,装置10和/或装置30的一个或多个部件可以组合、可以驻留在相同和/或不同的物理和/或虚拟位置上等等,或其组合。例如,逻辑28可以包括存储器控制器22的一个或多个部件以执行其对应功能,这些部件可以驻留在与核心16、18、存储器12等或其组合相同或不同的位置。

现在转到图3,根据实施例示出了维护存储器完整性的方法44。所述方法44可以实现于装置(例如,装置10和/或装置30(图1和图2))中作为存储于机器或计算机可读存储介质、可配置逻辑、固定功能逻辑硬件中的逻辑指令集,所述存储介质例如是,随机存储存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪速存储器等;可配置逻辑例如是,可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld);所述固定功能逻辑硬件使用的电路技术例如是,专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术或其任意组合。例如,可以以一种或多种编程语言的任意组合编写用于执行在方法44中示出的操作的计算机程序代码,所述编程语言包括:面向对象编程语言,例如,java、smalltalk、c++等;传统过程编程语言,例如,“c”编程语言或类似编程语言。

所示的处理框46提供了对包括多个比特的未加密数据进行识别。未加密数据可以包括任意类型的数据,例如,包括具有一个或多个操作代码、操作数、地址等或其组合的指令集的指令数据。另外,未加密数据可以包括程序数据,其包括用于程序、操作系统、应用、虚拟机等或其组合的程序代码。未加密数据例如可以包括明码数据、明文数据等,或其组合。另外,未加密数据的多个比特可以包括任意代码表示的一个或多个比特(例如,字节),所述代码表示例如是二进制代码、八进制代码、十六进制代码、符号代码、十进制代码、字母数字代码、高级编程语言代码等,或其组合。

框48用于判定未加密数据是否包括所述多个比特的随机分布。例如,所述多个比特可以包括模式、随机分布等或其组合。所述判定可以基于任何计算出的和/或检索的例如对应于数据类型的信息。例如,可以基于在大量存储器上检查程序以判定典型的模式以特定频率出现、检索指令集等或其组合,来进行所述判定。例如可以通过实现阈值来进行所述判定。例如,可以通过下列操作来进行所述判定:识别在未加密数据中以某一频率出现的多个比特的比特序列、对比特序列出现在未加密数据中的实例进行计数、当所述实例的数量满足阈值时判定未加密数据不包括多个比特的随机分布、等等,或其组合。另外,例如,可以通过实现概率密度函数来进行所述判定。另外,例如,可以通过对未加密数据进行解码以识别指令(例如,操作码等)来进行所述判定。

所示的框50用于在未加密数据包括多个比特的随机分布时实现完整性动作。所述完整性动作例如可以包括防止访问未加密数据、发布通知、采取校正动作、生成完整性值、使用完整性值、对用于访问存储器的物理存储器地址进行加扰、将物理地址用作对块密码的微调、将非随机模式添加到未加密数据上,等等或其组合。方法44可以评估在被存储到存储器之前是否遇到未加密数据、在从存储器取得之后是否遇到未加密数据,等等,或其组合。该评估可以促进实现一个或多个完整性动作。

因此,例如,在框52出可以判定未加密数据是否被加密和存储。因此,可以在未加密数据被加密和存储在存储器中之前,判定未加密数据是否包括所述多个比特的随机分布。如果未加密数据将被加密和存储,则未加密数据例如可以包括未损坏数据。因此,所示的处理框54生成与未加密数据相关联的完整性值,并且在处理框56处存储未加密数据与相关联的完整性值。

如果未加密数据未被加密和存储,则在框58处可以判定未加密数据是否从存储装置中取得且被解密。因此,可以在从存储器中取得加密数据并且对加密数据进行解密以生成未加密数据之后,就未加密数据是否包括多个比特的随机分布来进行判定。如果未加密数据从存储装置中取得且被解密,则所示的处理框60判定未加密数据被损坏,且在处理框62处防止访问未加密数据。如果未加密数据未从存储装置中取得且被解密,则未加密数据不会涉及存储器事务,并因此例如通过检查另一数据块、等待遇到另一数据块、等等,或其组合,来结束该过程。

所示的框64用于在未加密数据不包括比特的随机分布时,判定未加密数据是否被加密和存储。未加密数据例如可以包括未损坏数据。因此,可以在未加密数据被加密和存储到存储器中之前,判定未加密数据是否包括多个比特的随机分布。如果未加密数据将被加密且存储,则在处理框56处存储未加密数据。

如果未加密数据将不被加密和存储,则在框66处可以判定未加密数据是否从存储器中取得且解密。因此,可以在从存储器中取得加密数据且对数据进行解密以生成未加密数据之后,判定未加密数据是否包括多个比特的随机分布。如果未加密数据被从存储装置取得且解密,则所示的处理框68判定未加密数据未损坏(例如,有效的),且在处理框70处例如通过将未加密数据发送到缓存而提供对未加密数据的访问。

如果未加密数据未从存储装置取得且未解密,则未加密数据不会涉及存储器事务,因此该过程可以例如通过检查另一数据块、等待遇到另一数据块、等等,或其组合,来结束。注意,有效的未加密数据可能在任意时间受到完整性动作,例如在处理框56处。例如,可以针对有效的未加密数据生成完整性值,可以针对有效的未加密数据对用于访问存储器的物理存储器地址进行加扰,可以针对有效的未加密数据将物理地址用作对块密码的微调、可以对有效的未加密数据添加非随机模式等,或其组合。

另外,如果在框48处判定未加密数据包括多个比特的随机分布,则在框72处判定是否在框48处进行进一步的判定(例如,第二判定等)。例如,如果在框48处的判定是在从存储器取得未加密数据并对数据解密以生成未加密数据之后做出的进一步的判定(例如,是),则在处理框74处从存储装置取得与未加密数据(如果有的话)相关联的完整性值。如果没有完整性值可用,则未加密数据可以被标记(flagged)并被转发以供进一步的分析(例如,载入日志,等),可以被视为是损坏的,不能被放置在缓存中,等等,或其组合。

在框76处,所述完整性值可以用于判定未加密数据是否被损坏(例如,无效的,等)。完整性值例如可以包括icv、mac等或其组合。因此,如果在框76处利用完整性代码判定未加密数据是有效的,则在处理框70处提供对未加密数据的访问。如果在框76处利用完整性代码判定未加密数据是损坏的,则在处理框62处防止访问未加密数据。

图4示出了用于维护存储器完整性的另一方法80。方法80可以实现于装置(例如,装置10和/或装置30(图1和图2))中作为存储于机器或计算机可读存储介质、可配置逻辑、固定功能逻辑硬件中的逻辑指令集,所述存储介质例如是,ram、rom、prom、固件、闪速存储器等;可配置逻辑例如是,pla、fpga、cpld;所述固定功能逻辑硬件使用的电路技术例如是,asic、cmos或ttl技术或其任意组合。例如,可以以一种或多种编程语言的任意组合编写用于执行在方法80中示出的操作的计算机程序代码,所述编程语言包括:面向对象编程语言,例如,java、smalltalk、c++等;传统过程编程语言,例如,“c”编程语言或类似编程语言。另外,可以组合方法44的一个或多个方面与方法80的一个或多个方面。

所示的处理框82用于在未加密数据被加密之前将可识别的模式添加到未加密数据上。所述模式例如可以被添加以将所述多个比特的随机分布最小化。处理块82例如可以生成和/或添加非随机模式到未加密数据的任意位置,其可以用作对加密器的明文数据输入。所述模式例如可以包括全零模式、全一模式、零和一的交替比特模式等或其组合。另外,所述模式可以包括替换模式,其可以包括与存储器位置一起添加以替换至少一部分原始数据的固定值(例如,固定模式)。

在框84处可以判定加密器是否包括可扩展块密码。如果否,则处理块86可以经由扩散器和逆变扩散器来将扩散最大化。例如,当块密码不够宽以覆盖完全缓存行宽度从而确保在密文数据中的至少一比特的改变在未加密数据上基本扩散时,处理框86可以实现aes-pcbc。如果加密器包括可扩展的块密码,则处理框88可以通过将可扩展块密码的块大小设定为确保将至少一比特的改变在未加密数据上扩散来将扩散最大化,其中所述块大小可以设置为等于访问存储器的粒度。例如,当以64字节块访问存储器时,处理框88可以将threefish的块大小设置为64字节。

所示的处理框90用于对用于访问存储器的物理存储器地址进行加扰,并对物理存储器地址的加扰进行反转。处理框90例如可以将顺序输入的逻辑地址映射为非顺序的物理地址。因此,对手可能不能获得关于未加密数据的信息,所述信息原本是可以通过将加密数据分布在存储器中随机位置上而可获得的。所示的处理块92利用物理存储器地址(例如,加扰的、未加扰的,等)作为微调,并基于该微调判定未加密数据是否包括多个比特的随机分布。所述微调例如可以将未加密数据与物理存储器地址绑定。因此,将密文数据从存储器中一个位置交换到存储器中的另一位置将允许判定对应的未加密数据是损坏的。所示的处理框94用于实现概率密度函数、阈值以及指令解码器中的一个或多个,以判定未加密数据是否包括多个比特的随机分布,如上所述。

额外的注意和例子:

例子1可以包括一种装置,其具有:存储器;以及逻辑,用于:识别包括多个比特的未加密数据,其中所述未加密数据将被加密并存储于所述存储器中。所述逻辑可以就所述未加密数据是否包括所述多个比特的随机分布进行判定。所述逻辑还可以在所述未加密数据包括所述多个比特的随机分布时,实现完整性动作。

例子1的装置还可以包括:处理器,用于访问所述存储器,并执行与所述未加密数据相关联的指令。例子1的装置可以包括加密器,用于对所述未加密数据进行加密以生成密文。例子1的装置还可以包括解密器,用于对所述密文进行解密以生成所述未加密数据。例子1的装置可以包括缓存,用于存储所述未加密数据。例子1的逻辑可以实现处理器、加密器和/或解密器。

例子1的逻辑可以实现模式添加器,以在所述未加密数据被加密之前,将可识别的模式添加到所述未加密数据,从而将所述多个比特的随机分布最小化。例子1的逻辑可以设定块密码的块大小,以确保将至少一比特的改变在所述未加密数据上扩散,其中所述块大小被设置为等于访问存储器的粒度。例子1的逻辑可以实现扩散器,以在块密码的块大小可小于访问存储器的粒度时进行加密,从而确保将至少一比特的改变在所述未加密数据上扩散。例子1的逻辑还可以实现逆变扩散器,以在所述块密码的块大小可小于访问存储器的粒度时进行解密,从而确保将至少一比特的改变在所述未加密数据上扩散。

例子1的逻辑可以实现地址加扰器,以对被利用来访问所述存储器的物理存储器地址进行加扰。例子1的逻辑可以实现逆变地址加扰器,以对所述物理存储器地址的加扰进行反转。例子1的逻辑可以实现微调功能,以利用物理存储器地址作为对块密码的微调,从而将所述未加密数据与所述物理存储器地址进行绑定。例子1的逻辑还可以基于所述微调进行所述判定。

例子1的逻辑可以在从所述存储器中取得数据并对所述数据进行解密以生成未加密数据之后,进行判定。例子1的逻辑可以在所述未加密数据包括所述多个比特的随机分布时,判定所述未加密数据被损坏。例子1的逻辑还可以在所述未加密数据被损坏时,防止访问所述未加密数据。例子1的逻辑可以在所述未加密数据被加密并存储于所述存储器之前,进行所述判定。例子1的逻辑还可以在所述未加密数据包括所述多个比特的随机分布时,生成与所述未加密数据相关联的完整性值,其中所述完整性值可被存储在所述存储器中。

例子1的逻辑可以在从所述存储器中取得数据并对所述数据进行解密以生成未加密数据之后,就所述未加密数据是否包括所述多个比特的随机分布进行第二判定。例子1的逻辑可以在所述未加密数据包括所述多个比特的随机分布时,从所述存储器中取得所述完整性值。例子1的逻辑还可以基于所述完整性值,判定所述未加密数据是否被损坏。例子1的逻辑可以在所述未加密数据被损坏时,防止访问所述未加密数据。

例子1的逻辑可以实现概率密度函数、阈值和指令解码器中的一个或多个以进行所述判定。例子1的逻辑可以识别以一频率出现在所述未加密数据中的多个比特的比特序列。例子1的逻辑可以对比特序列出现在所述未加密数据中的实例的数量进行计数。例子1的逻辑还可以在所述实例的数量满足阈值时,判定所述未加密数据不包括所述多个比特的随机分布。例子1的逻辑可以实现指令解码器,用于对所述未加密数据进行解码以识别一条或多条指令。

例子2可以包括一种存储器控制器,其具有逻辑,该逻辑至少部分地包括硬件,用于:识别包括多个比特的未加密数据,其中所述未加密数据将被加密并存储于所述存储器中。所述逻辑可以就所述未加密数据是否包括所述多个比特的随机分布进行判定。所述逻辑还可以在所述未加密数据包括所述多个比特的随机分布时,实现完整性动作。例子2的所述逻辑还可以包括例子1的所述逻辑的一个或多个功能。例如,所述逻辑可以实现模式添加器,以在所述未加密数据被加密之前,将可识别的模式添加到所述未加密数据,从而将所述多个比特的随机分布最小化,其中所述可识别模式包括包含固定值和存储器位置的替换模式。

例子3可以包括一种具有一组指令的非瞬态计算机可读存储介质,如果被处理器执行,则所述指令使得计算机用于:识别包括多个比特的未加密数据,其中所述未加密数据可被加密并存储于所述存储器中。所述指令如果被执行则还可以使得计算机用于:就所述未加密数据是否包括所述多个比特的随机分布进行判定。另外,所述指令如果被执行则使得计算机用于:当所述未加密数据包括所述多个比特的随机分布时,实现完整性动作。

另外,例子3的所述指令如果被执行则可以使得计算机用于:在所述未加密数据被加密之前,将可识别的模式添加到所述未加密数据,从而将所述多个比特的随机分布最小化,其中所述可识别模式可以包括包含固定值和存储器位置的替换模式。另外,例子3的所述指令如果被执行则可以使得计算机用于:设定块密码的块大小,以确保将至少一比特的改变在所述未加密数据上扩散,其中所述块大小被设置为等于访问存储器的粒度。另外,例子3的所述指令如果被执行则可以使得计算机用于:经由扩散器和逆变扩散器将扩散最大化。例如,可以实现扩散器,以在块密码的块大小小于访问存储器的粒度时进行加密,从而确保将至少一比特的改变在所述未加密数据上扩散,以及可以实现逆变扩散器,以在所述块密码的块大小小于访问存储器的粒度时进行解密,从而确保将至少一比特的改变在所述未加密数据上扩散。

另外,例子3的所述指令如果被执行则可以使得计算机用于:对被利用来访问所述存储器的物理存储器地址进行加扰。另外,例子3的所述指令如果被执行则可以使得计算机用于:对所述物理存储器地址的加扰进行反转。另外,例子3的所述指令如果被执行,则可以使得计算机用于:利用所述物理存储器地址作为对所述块密码的微调,从而将所述未加密数据与所述物理存储器地址进行绑定。另外,例子3的所述指令如果被执行,则可以使得计算机用于:基于所述微调进行判定。

另外,例子3的所述指令如果被执行,则可以使得计算机用于:在对未加密数据进行加密并存储到存储器中之前,进行判定。另外,例子3的所述指令如果被执行,则可以使得计算机用于:当所述未加密数据包括所述多个比特的随机分布时,判定所述未加密数据被损坏。另外,例子3的所述指令如果被执行,则可以使得计算机用于:当所述未加密数据损坏时,防止访问所述未加密数据。另外,例子3的所述指令如果被执行,则可以使得计算机用于:在所述未加密数据被加密和存储到存储器中之前,进行所述判定。另外,例子3的所述指令如果被执行,则可以使得计算机用于:当所述未加密数据包括所述多个比特的随机分布时,生成与所述未加密数据相关联的完整性值,其中所述完整性值被存储在所述存储器中。

另外,例子3的所述指令如果被执行,则可以使得计算机用于:在从所述存储器中取得数据并对所述数据进行解密以生成未加密数据之后,就所述未加密数据是否包括所述多个比特的随机分布进行第二判定。另外,例子3的所述指令如果被执行,则可以使得计算机用于:当所述未加密数据包括所述多个比特的随机分布时,从所述存储器中取得所述完整性值。另外,例子3的所述指令如果被执行,则可以使得计算机用于:当所述未加密数据被损坏时,防止访问所述未加密数据。

另外,例子3的所述指令如果被执行,则可以使得计算机用于:实现概率密度函数、阈值和指令解码器中的一个或多个以进行所述判定。另外,例子3的所述指令如果被执行,则可以使得计算机用于:识别以一频率出现在所述未加密数据中的多个比特的比特序列。另外,例子3的所述指令如果被执行,则可以使得计算机用于:对比特序列出现在所述未加密数据中的实例的数量进行计数。另外,例子3的所述指令如果被执行,则可以使得计算机用于:在所述实例的数量满足阈值时,判定所述未加密数据不包括所述多个比特的随机分布。另外,例子3的所述指令如果被执行,则可以使得计算机用于:实现指令解码器,用于对所述未加密数据进行解码以识别一条或多条指令。

例子4涉及一种计算机实现的方法,包括:识别具有多个比特的未加密数据,其中所述未加密数据被加密并存储于所述存储器中。所述方法还可以用于就所述未加密数据是否包括所述多个比特的随机分布进行判定。所述方法还可以包括当所述未加密数据包括所述多个比特的随机分布时,实现完整性动作。

另外,例子4的计算机实现的方法可以包括:在所述未加密数据被加密之前,将可识别的模式添加到所述未加密数据,从而将所述多个比特的随机分布最小化,其中所述可识别模式可以包括包含固定值和存储器位置的替换模式。另外,例子4的计算机实现的方法可以包括:设定块密码的块大小,以确保将至少一比特的改变在所述未加密数据上扩散,其中所述块大小被设置为等于访问存储器的粒度。另外,例子4的计算机实现的方法可以包括:经由扩散器和逆变扩散器将扩散最大化。例如,可以实现扩散器,以在块密码的块大小小于访问存储器的粒度时进行加密,从而确保将至少一比特的改变在所述未加密数据上扩散,以及可以实现逆变扩散器,以在所述块密码的块大小小于访问存储器的粒度时进行解密,从而确保将至少一比特的改变在所述未加密数据上扩散。

另外,例子4的计算机实现的方法可以包括:对被利用来访问所述存储器的物理存储器地址进行加扰。另外,例子4的计算机实现的方法可以包括:对所述物理存储器地址的加扰进行逆变。另外,例子4的计算机实现的方法可以包括:利用所述物理存储器地址作为对所述块密码的微调,从而将所述未加密数据与所述物理存储器地址进行绑定。另外,例子4的计算机实现的方法可以包括:基于所述微调进行判定。

另外,例子4的计算机实现的方法可以包括:在从所述存储器中取得数据并对所述数据进行解密以生成未加密数据之后,进行判定。另外,例子4的计算机实现的方法可以包括:当未加密数据包括所述多个比特的随机分布时,判定所述未加密数据被损坏。另外,例子4的计算机实现的方法可以包括:当所述未加密数据损坏时,防止访问所述未加密数据。

另外,例子4的计算机实现的方法可以包括:在所述未加密数据被加密和存储到存储器中之前,进行判定。另外,例子4的计算机实现的方法可以包括:当所述未加密数据包括所述多个比特的随机分布时,生成与所述未加密数据相关联的完整性值,其中所述完整性值被存储在所述存储器中。另外,例子4的计算机实现的方法可以包括:在从所述存储器中取得数据并对所述数据进行解密以生成未加密数据之后,就所述未加密数据是否包括所述多个比特的随机分布进行第二判定。另外,例子4的计算机实现的方法可以包括:当所述未加密数据包括所述多个比特的随机分布时,从所述存储器中取得所述完整性值。另外,例子4的计算机实现的方法可以包括:基于所述完整性值判定所述未加密数据是否被损坏。另外,例子4的计算机实现的方法可以包括:当所述未加密数据被损坏时,防止访问所述未加密数据。

另外,例子4的计算机实现的方法可以包括:实现概率密度函数、阈值和指令解码器中的一个或多个以进行所述判定。另外,例子4的计算机实现的方法可以包括:识别以一频率出现在所述未加密数据中的多个比特的比特序列。另外,例子4的计算机实现的方法可以包括:对比特序列出现在所述未加密数据中的实例的数量进行计数。另外,例子4的计算机实现的方法可以包括:在所述实例的数量满足阈值时,判定所述未加密数据不包括所述多个比特的随机分布。另外,例子4的计算机实现的方法可以包括:实现指令解码器,用于对所述未加密数据进行解码以识别一条或多条指令。

例子5涉及一种计算机实现方法,其包括用于识别具有多个比特的未加密数据的单元,其中所述未加密数据将被加密并存储于所述存储器中。所述方法还可以提供用于就所述未加密数据是否包括所述多个比特的随机分布进行判定的单元。所述方法还可以包括用于在所述未加密数据包括所述多个比特的随机分布时实现完整性动作的单元。

另外,例子5的计算机实现的方法可以包括:用于在所述未加密数据被加密之前将可识别的模式添加到所述未加密数据,从而将所述多个比特的随机分布最小化的单元。另外,例子5的计算机实现的方法可以包括:用于设定块密码的块大小以确保将至少一比特的改变在所述未加密数据上扩散的单元,其中所述块大小被设置为等于访问存储器的粒度。另外,例子5的计算机实现的方法可以包括:用于在块密码的块大小小于访问存储器的粒度时进行加密,从而确保将至少一比特的改变在所述未加密数据上扩散的单元。另外,例子5的计算机实现的方法可以包括:用于在所述块密码的块大小小于访问存储器的粒度时进行解密,从而确保将至少一比特的改变在所述未加密数据上扩散的单元。

另外,例子5的计算机实现的方法可以包括:用于对被利用来访问所述存储器的物理存储器地址进行加扰的单元。另外,例子5的计算机实现的方法可以包括:用于对所述物理存储器地址的加扰进行逆变的单元。另外,例子5的计算机实现的方法可以包括:用于利用所述物理存储器地址作为对所述块密码的微调从而将所述未加密数据与所述物理存储器地址进行绑定的单元。另外,例子5的计算机实现的方法可以包括:用于基于所述微调进行判定的单元。

另外,例子5的计算机实现的方法可以包括:用于在从所述存储器中取得数据并对所述数据进行解密以生成未加密数据之后进行判定的单元。另外,例子5的计算机实现的方法可以包括:用于在未加密数据包括所述多个比特的随机分布时判定所述未加密数据被损坏的单元。另外,例子5的计算机实现的方法可以包括:用于在所述未加密数据损坏时防止访问所述未加密数据的单元。

另外,例子5的计算机实现的方法可以包括:用于在所述未加密数据被加密和存储到存储器中之前进行判定的单元。另外,例子5的计算机实现的方法可以包括:用于在所述未加密数据包括所述多个比特的随机分布时,生成与所述未加密数据相关联的完整性值的单元,其中所述完整性值被存储在所述存储器中。另外,例子5的计算机实现的方法可以包括:用于在从所述存储器中取得数据并对所述数据进行解密以生成未加密数据之后就所述未加密数据是否包括所述多个比特的随机分布进行第二判定的单元。另外,例子5的计算机实现的方法可以包括:用于在所述未加密数据包括所述多个比特的随机分布时从所述存储器中取得所述完整性值的单元。另外,例子5的计算机实现的方法可以包括:用于基于所述完整性值判定所述未加密数据是否被损坏的单元。另外,例子5的计算机实现的方法可以包括:用于在所述未加密数据被损坏时防止访问所述未加密数据的单元。

另外,例子5的计算机实现的方法可以包括:用于实现概率密度函数、阈值和指令解码器中的一个或多个以进行所述判定的单元。另外,例子5的计算机实现的方法可以包括:识别以一频率出现在所述未加密数据中的多个比特的比特序列的单元。另外,例子5的计算机实现的方法可以包括:用于对比特序列出现在所述未加密数据中的实例的数量进行计数的单元。另外,例子5的计算机实现的方法可以包括:在所述实例的数量满足阈值时判定所述未加密数据不包括所述多个比特的随机分布的单元。另外,例子5的计算机实现的方法可以包括:用于对所述未加密数据进行解码以识别一条或多条指令的单元。

例子6可以涉及包括执行例子5的方法的单元的装置。例如,例子6的装置可以包括用于识别具有多个比特的未加密数据的单元,其中所述未加密数据被加密并存储于存储器中。所述装置还提供用于就所述未加密数据是否包括所述多个比特的随机分布进行判定的单元。所述装置还可以包括用于在所述未加密数据包括所述多个比特的随机分布时实现完整性动作的单元。

因此,本文所描述的技术可以支持非确定性的行内存储器完整性检查。另外,本文所描述的技术可以根据存储器规模缩放,因为例如在存储器中可能存储有实质上更少的完整性值。因此,对于程序、应用、操作系统、指令等,可能存在实质上更少的存储器开销和/或相对更多的可用存储器。另外,可以将与存储器访问(例如,对icv的访问每次要验证和/或测试完整性)相关联的性能退化最小化。另外,装置可能被强迫使用总是经过启发性规则(例如,通过添加一个或多个非随机模式)的数据,来将对错误校正代码的需要最小化。另外,本文所描述的技术可以将对损坏数据的执行最小化,可以解释恶意交换存储器内容,可以基于对手不可得的存储位置使得信息与未加密数据相关,等等,或其组合。

实施例可应用于与所有类型的半导体集成电路(ic)芯片一起使用。这些ic芯片的例子包括但不限于:处理器、控制器、芯片组部件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、片上系统(soc)、ssd/nand控制器asic等。另外,在一些附图中,用线来表示信号导体线。一些线会是不同的,为了表示更多组成的信号路径,线可以具有数字标签来表示构成信号路径的数量,和/或在一端或多端具有箭头来表示主要信息流方向。然而,这不应以限制的方式进行解释。而是,这些添加的细节可以与一个或多个示例性实施例结合使用,来促进更容易地理解电路。任意所表示的信号线不管有没有额外信息,都实际上包括可以在多个方向行进并可以以任意适当类型的信号方案实现的一个或多个信号,例如,以差分对、光纤线和/或单端线实现的数字或模拟信号。

可以给出示例性大小/模型/值/范围,但是实施例并不限于此。随着制造技术(例如,光刻法)日益成熟,人们期望可以制造更小尺寸的设备。另外,出于便于图示和讨论,并且为了不模糊实施例的特定方面,在图中可能示出或不示出到ic芯片和其它部件的已知的电/接地连接。此外,可以以框图形式示出布置,以免模糊实施例,并且考虑到相对实现这种框图布置的细节高度依赖于实现实施例的平台这一事实,即,这种细节应该在本领域技术人员的范围内。当阐述具体细节(例如,电路)以便描述示例性实施例,本领域技术人员可以理解的是,可以在没有这些具体细节的情况下或以这些细节的变型实践实施例。因此,说明书被视为说明性的而非限制性的。

本文所使用的术语“耦合”指的是讨论中的部件之间的任意类型的关系(直接或间接的),并可以应用到电、机械、流体、光、电磁、机电或其它连接。另外,本文所使用的术语“第一”、“第二”等仅便于讨论,除非另有指出,否则并不具有特定的时间或年代重要性。

根据上述描述,本领域技术人员可以理解的是可以以各种形式实现实施例的广泛技术。因此,虽然结合特定例子描述了实施例,但是实施例的真实范围不应被限制,因为当研究附图、说明书和后续权利要求时,技术人员将想到其它实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1