一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储器测试方法与流程

2022-04-24 18:46:16 来源:中国专利 TAG:


1.本公开涉及集成电路制造技术领域,具体而言,涉及一种用于验证dram(dynamic random access memory,动态随机存取存储器)对行锤效应攻击的保护能力的存储器测试方法。


背景技术:

2.行锤效应是指在dram的一个刷新周期中如果一行存储单元在短时间内被多次读取,其物理相连的相邻行的存储单元会出现位翻转(bit flip)现象,导致数据异常。黑客常常利用存储器的行锤效应做攻击,为了防止攻击产生的行锤效应,存储器生产厂商通常通过监控程序判断存储器是否遭受攻击,进而在判断遭受攻击时激活主动刷新,避免出现行锤效应。
3.为了测试存储器的保护程序是否足够强壮,需要使用攻击测试程序对存储器进行攻击测试。由于不同存储器设置的保护程序不同,相关技术中测试存储器抵御攻击能力的方法能够突破的存储器设置的保护程序较少,导致攻击测试的成功率很高。这种情况下通过测试的存储器实际上可能无法抵抗较为灵活的攻击策略,无法保证能够面对绝大部分改进后的攻击场景,即可靠性验证不足。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开的目的在于提供一种存储器测试方法,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的无法有效验证dram抵抗行锤效应攻击的能力的问题。
6.根据本公开实施例的第一方面,提供一种存储器测试方法,包括:确定目标存储库的刷新周期t、设计抵御攻击频率f以及单行读取时间t;根据刷新周期t、设计抵御攻击频率f以及单行读取时间t确定攻击行数n;根据所述攻击行数n的值在目标存储库中确定一组目标攻击行,所述一组目标攻击行包括n个目标攻击行,所述n个目标攻击行中的至少两个目标攻击行之间间隔一行;连续x次读取所述n个目标攻击行后,检测所述目标攻击行的全部相邻行是否发生数据异常以完成一次攻击测试;在m个所述刷新周期内对所述目标存储库完成mt/nxt次所述攻击测试,在所述攻击测试均未发生数据异常时,判断所述目标存储库抵御攻击能力达标。
7.在本公开的一种示例性实施例中,所述根据刷新周期t、设计抵御攻击频率f以及单行读取时间t确定攻击行数n包括:n=[t/ft]。
[0008]
在本公开的一种示例性实施例中,所述根据所述攻击行数n的值在目标存储库中确定一组目标攻击行包括:在所述攻击行数n小于预设值时,所述目标存储库对应的第i组目标攻击行包括n个固定攻击行和m个移动攻击行,n=m n;其中,所述n个固定攻击行的行号为随机确定,所述固定攻击行的行号在所述目标存储库对应的每组目标攻击行中均相
同;所述m个移动攻击行之间均间隔一行,第i组目标攻击行中所述m个移动攻击行的最小行号为x-1 i,x为第1组目标攻击行中所述m个移动攻击行的最小行号,x为随机确定。
[0009]
在本公开的一种示例性实施例中,所述根据所述攻击行数n的值在目标存储库中确定一组目标攻击行包括:在所述攻击行数n小于预设值时,所述目标存储库对应的第i组目标攻击行包括n个固定攻击行和m个移动攻击行,n=m n;其中,所述n个固定攻击行之间均间隔一行,所述n个固定攻击行对应的最小行号为随机确定,所述n个固定攻击行的行号在所述目标存储库对应的每组目标攻击行中均相同;所述m个移动攻击行的行号均为随机确定,所述m个移动攻击行的行号在所述目标存储库对应的每组目标攻击行中不完全相同。
[0010]
在本公开的一种示例性实施例中,所述根据所述攻击行数n的值在目标存储库中确定一组目标攻击行包括:在所述攻击行数n大于等于预设值时,所述目标存储库对应的第i组目标攻击行包括n个移动攻击行,每个所述移动攻击行与至少一个其他移动攻击行之间间隔一行,第i组目标攻击行中所述n个移动攻击行的最小行号为x-1 i,x为第1组目标攻击行中所述n个移动攻击行的最小行号,x为随机确定。
[0011]
在本公开的一种示例性实施例中,在所述n个移动攻击行中,每两个移动攻击行之间间隔一行。
[0012]
在本公开的一种示例性实施例中,n=3,n=1,m=2。
[0013]
在本公开的一种示例性实施例中,n=3,n=2,m=1。
[0014]
在本公开的一种示例性实施例中,n=15。
[0015]
在本公开的一种示例性实施例中,还包括:在所述攻击行数n大于等于所述预设值时,响应来自于用户的攻击行数修改指令更新所述攻击行数n的值。
[0016]
在本公开的一种示例性实施例中,所述方法基于efi环境实现。
[0017]
本公开实施例通过根据存储器自身特征数值确定攻击方案,可以实现以高于存储器设计抵御攻击能力的攻击频率对存储器进行攻击测试,从而可以有效验证存储器是否具有符合标称频率的行锤效应攻击抵抗能力。
[0018]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0019]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]
图1是本公开示例性实施例中存储器测试方法的流程图。
[0021]
图2是本公开一个实施例中一组目标攻击行的示意图。
[0022]
图3是本公开另一个实施例中一组目标攻击行的示意图。
[0023]
图4是本公开再一个实施例中一组目标攻击行的示意图。
[0024]
图5是本公开再一个实施例中一组目标攻击行的示意图。
[0025]
图6是图2所示实施例中对待测存储器进行测试的流程图。
[0026]
图7是图3所示实施例中对待测存储器进行测试的流程图。
[0027]
图8是图4或图5所示实施例中对待测存储器进行测试的流程图。
[0028]
图9是本公开实施例的实现环境的一个示意图。
具体实施方式
[0029]
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
[0030]
此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0031]
下面结合附图对本公开示例实施方式进行详细说明。
[0032]
图1示意性示出本公开示例性实施例中存储器测试方法的流程图。
[0033]
参考图1,存储器测试方法100可以包括:
[0034]
步骤s1,确定目标存储库的刷新周期t、设计抵御攻击频率f以及单行读取时间t;
[0035]
步骤s2,根据刷新周期t、设计抵御攻击频率f以及单行读取时间t确定攻击行数n;
[0036]
步骤s3,根据所述攻击行数n的值在目标存储库中确定一组目标攻击行,所述一组目标攻击行包括n个目标攻击行,所述n个目标攻击行中的至少两个目标攻击行之间间隔一行;
[0037]
步骤s4,连续x次读取所述n个目标攻击行后,检测所述目标攻击行的全部相邻行是否发生数据异常以完成一次攻击测试;
[0038]
步骤s5,在m个所述刷新周期内对所述目标存储库完成mt/nxt次所述攻击测试,在所述攻击测试均未发生数据异常时,判断所述目标存储库抵御攻击能力达标。
[0039]
本公开实施例通过根据存储器自身特征数值确定攻击方案,可以实现以高于存储器设计抵御攻击能力的攻击频率测试存储器,从而可以有效验证存储器是否具有符合标称频率的行锤效应攻击抵抗能力。
[0040]
下面,对存储器测试方法100的各步骤进行详细说明。
[0041]
在本公开实施例中,对待测存储器的各存储库进行逐一测试。步骤s1~步骤s5是对一个存储库进行测试的步骤,对待测存储器的每个存储库进行如步骤s1~步骤s5的操作,即可完成对待测存储器的测试。
[0042]
在步骤s1,确定目标存储库的刷新周期t、设计抵御攻击频率f以及单行读取时间t。
[0043]
一般而言,存储器的设定刷新周期为64ms。在两次刷新之间,在不被操作的情况
下,一行存储单元的状态几乎不自主改变(会存在少量漏电现象)。如果在短时间内对目标行的两个相邻行(上一行和下一行)进行读取,则该目标行的存储单元存在一定概率出现位翻转现象(bit flip),此时称该目标行产生行锤效应(row hammer)。
[0044]
为了防止非法程序在短时间内迅速读取存储器的相近多行,利用行锤效应使存储器中的一行或多行存储单元出现位翻转,存储器在设计时,通常采取保护机制,即在检测到两次刷新之间存储器被读取次数(即读取频率)超过预设值时,触发主动刷新以使可能出现位翻转的存储单元迅速还原,抵御攻击。存储器自身程序设计能够抵御的攻击频率不同,因此对于不同的存储器,在测试其抵御攻击能力之前需要获取其设计抵御攻击频率f,以便确立攻击频率大于f的攻击方案,有效验证存储器抵御攻击的能力。在一些实施例中,存储器的设计抵御攻击频率f为200k次或50k次。
[0045]
此外,不同种类存储器的单行读取时间不同,即攻击耗时不同,为了计算出在刷新周期内攻击频率大于f的攻击方案,还需要获取该存储器的单行读取时间。在一个实施例中,存储器的单行读取时间为85ns。
[0046]
在步骤s2,根据刷新周期t、设计抵御攻击频率f以及单行读取时间t确定攻击行数n。
[0047]
为了在刷新周期内实现频率大于f的攻击方案,首先需要确定每次攻击能够读取的行数。在一个实施例中,可以根据以下公式确定攻击行数n:
[0048]
n=[t/ft]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0049]
公式(1)的含义是对t/ft的结果进行取整。
[0050]
例如,当t=64ms,f=200k次,t=85ns时,为了在64ms内完成超过200k次的攻击测试,每次攻击测试的允许时间为t/f=64ms/200k=320ns,在这个允许时间内最多能够读取320/85≈3.76行,由于只能读取整数行,对该结果取整,即可得到n=3,即对于该存储器,每次攻击测试最多能够完整读取3行。
[0051]
同理,当t=64ms,f=50k次,t=85ns时,为了在64ms内完成超过50k次的攻击测试,每次攻击测试的允许时间为t/f=64ms/50k=1280ns,在这个允许时间内最多能够读取1280/85≈15.1行,由于只能读取整数行,对该结果取整,即可得到n=15,即对于该存储器,每次攻击测试最多能够完整读取15行。
[0052]
每次攻击的行数越多,越能够增加破坏dram防御机制的概率,即攻击强度较大,因此,在本公开的一些实施例中,可以直接使用公式(1)确定的n值设计攻击方案,以实现一次攻击操作能够读取的目标攻击行的数量的最大化,进而实现攻击能力最大化。
[0053]
在步骤s3,根据所述攻击行数n的值在目标存储库中确定一组目标攻击行,所述一组目标攻击行包括n个目标攻击行,所述n个目标攻击行中的至少两个目标攻击行之间间隔一行。
[0054]
dram的保护机制一般是概率性的采样保护,如果仅攻击某一行,被dram保护机制发现的概率会较高,导致攻击难度低,无法有效测试出dram的真实抵御攻击能力。因此,本公开实施例设置n个目标攻击行,并使用多种方式设置n个目标攻击行的排布,以形成多种攻击方案,全方位地测试dram的抵御攻击能力。
[0055]
首先,在每个攻击方案中,为了尽快诱导至少一个存储单元产生位翻转,本公开实施例设置目标攻击行中的至少两个目标攻击行之间间隔一行,以诱导这两个目标攻击行中
间的行出现行锤效应。
[0056]
接下来,根据每次攻击最多能够读取的攻击行数n来确定攻击方案。在攻击行数较少,即测试频率较高时,可以采用的攻击方案较少,为了尽可能增加攻破存储器自身防御方案的能力,可以设置固定攻击行,即在每次攻击测试中,均攻击(读取)若干相同行,以增加该固定攻击行的相邻行出现行锤效应的可能。在攻击行数较多,即测试频率相对较低时,在单次攻击测试中攻击次数较多,此时可以使用多次随机读取或循环读取方案诱导存储器出现行锤效应。
[0057]
图2是本公开一个实施例中一组目标攻击行的示意图。
[0058]
参考图2,在攻击行数n小于预设值时,目标存储库对应的第i组目标攻击行包括n个固定攻击行和m个移动攻击行,n=m n;其中,n个固定攻击行的行号为随机确定,固定攻击行的行号在目标存储库对应的每组目标攻击行中均相同;m个移动攻击行之间均间隔一行,第i组目标攻击行中m个移动攻击行的最小行号为x-1 i,x为第1组目标攻击行中m个移动攻击行的最小行号,x为随机确定。
[0059]
图2所示实施例中,t=64ms,f=200k次,t=85ns,n=3,n=1,m=2,预设值例如可以为3~15之间的任意整数。固定攻击行21的行号为随机确定。由于两个移动攻击行22之间间隔一行,仅需确定行号最小的移动攻击行22的行号即可。移动攻击行22的行号也可以为随机确定。
[0060]
可以理解的是,为了尽可能增强攻击效果,提高目标攻击行的相邻行出现行锤效应的概率,可以设置固定攻击行21的行号和移动攻击行22的行号差值较小,例如为4。
[0061]
图3是本公开另一个实施例中一组目标攻击行的示意图。
[0062]
参考图3,在另一个实施例中,在攻击行数n小于预设值时,目标存储库对应的第i组目标攻击行包括n个固定攻击行和m个移动攻击行,n=m n;其中,n个固定攻击行之间均间隔一行,n个固定攻击行对应的最小行号为随机确定,n个固定攻击行的行号在目标存储库对应的每组目标攻击行中均相同;m个移动攻击行的行号均为随机确定,m个移动攻击行的行号在目标存储库对应的每组目标攻击行中不完全相同。
[0063]
在图3所示实施例中,t=64ms,f=200k次,t=85ns,n=3,n=2,m=1,预设值例如可以为3~15之间的任意整数。由于两个固定攻击行31之间间隔一行,仅需确定行号最小的固定攻击行31的行号即可,在一个实施例中,固定攻击行31的行号为随机确定。移动攻击行32的行号也可以为随机确定。可以理解的是,为了尽可能增强攻击效果,提高目标攻击行的相邻行出现行锤效应的概率,可以设置行号最小的固定攻击行31的行号和移动攻击行32的行号差值较小,例如为6。
[0064]
图4是本公开再一个实施例中一组目标攻击行的示意图。
[0065]
参考图4,在攻击行数n大于等于预设值时,目标存储库对应的第i组目标攻击行包括n个移动攻击行41,每个移动攻击行与至少一个其他移动攻击行之间间隔一行,第i组目标攻击行中n个移动攻击行的最小行号为x-1 i,x为第1组目标攻击行中n个移动攻击行的最小行号,x为随机确定。
[0066]
图4所示实施例中,t=64ms,f=50k次,t=85ns,n=15(未完全示出),预设值例如可以为3~15之间的任意整数。由于单次攻击测试中可以利用的攻击行数较多,正常读取即能够实现攻击目的,但是为了提高目标攻击行的相邻行出现行锤效应的概率,可以设置每
个移动攻击行至少与一个其他攻击行之间间隔一行,如图4所示。由于各移动攻击行之间的相对位置关系确定,因此在确定一组移动攻击行时,仅需确定行号最小的移动攻击行的行号,即可确定全组移动攻击行的行号。在一个实施例中,行号最小的移动攻击行的行号可以为随机确定。
[0067]
可以理解的是,当攻击行数n较大时,可选择的攻击方案更多。在一个实施例中,可以在n大于等于预设值时,响应来自于用户的攻击行数修改指令,更新攻击行数n的值。即,可以将计算出的攻击行数n推荐给用户,当用户想要增加攻击频率的时候,可以在攻击行数n的基础上减小,通过输入较小的更新后的n值,实现攻击频率的增加。但是,由于本公开中攻击行数n的值是根据满足攻击条件(攻击频率不小于待测存储器的设计抵御攻击频率)的最低要求来计算的,如果用户增加n的值,则无法实现攻击频率大于等于设计抵御攻击频率的攻击,因此,在这种情况下,仅允许用户减小n值以增加攻击频率,不允许用户增加n值降低攻击频率。
[0068]
图5是本公开再一个实施例中一组目标攻击行的示意图。
[0069]
参考图5,在攻击行数n大于等于预设值时,目标存储库对应的第i组目标攻击行包括n个移动攻击行51,此时可以设置在n个移动攻击行中,每两个移动攻击行之间间隔一行。相比于图4所示实施例,图5所示实施例中移动攻击行的位置设置更紧凑,更容易诱导各移动攻击行之间的行出现行锤效应。
[0070]
在步骤s4,连续x次读取所述n个目标攻击行后,检测所述目标攻击行的全部相邻行是否发生数据异常以完成一次攻击测试。
[0071]
确定一组目标攻击行的组成形式后,在多次攻击测试中,可以对相同形式、行号变化的移动攻击行进行读取。
[0072]
例如,对于图2所示实施例,如果确定在一个刷新周期内完成i次攻击测试,则可以将第1次攻击测试对应的第1组目标攻击行中的固定攻击行的行号随机确定为z1,移动攻击行的最小行号随机确定为x,连续读取x次该第1组目标攻击行,检测这些目标攻击行的全部相邻行是否发生数据异常以完成一次攻击测试。进行第2次攻击测试时,第2组目标攻击行的形式与第1组相同,固定攻击行的行号仍旧为z1,移动攻击行的最小行号为x 1;进行第3次攻击测试时,第3组目标攻击行中的固定攻击行的行号仍旧为z1,移动攻击行的最小行号为x 2。以此类推,进行第i次攻击测试时,第i组目标攻击行中的固定攻击行的行号仍旧为z,移动攻击行的最小行号为x-1 i。
[0073]
在第二个刷新周期内进行测试时,可以重新确定目标攻击行的行号,以提供更丰富的攻击方案。例如,在图2所示实施例中,可以在第二个刷新周期内设置第1次攻击测试对应的固定攻击行的行号为z2,移动攻击行的最小行号为y。按照上述逻辑,在第二个刷新周期内,进行第i次攻击测试时,固定攻击行的行号仍旧为z2,移动攻击行的最小行号为y-1 i。
[0074]
同理,对于图3所示实施例,在一个刷新周期内,可以在进行第1次攻击测试时,将第1组目标攻击行的固定攻击行的最小行号随机设置为z1,将移动攻击行的行号随机设置为x,从而在同一刷新周期内的第i次攻击测试中,第i组目标攻击行中固定攻击行的最小行号仍旧为z1,移动攻击行的行号为x-1 i。在第二个刷新周期内,第1组攻击测试对应的第1组目标攻击行中固定攻击行的最小行号被随机设置为z2,移动攻击行的行号被随机确定为
y;第i组攻击测试对应的第1组目标攻击行中固定攻击行的最小行号仍旧为z2,移动攻击行的行号变更为y-1 i。
[0075]
对于图4和图5所示实施例,在移动攻击行之间的间距确定的情况下,一个刷新周期内的第1组测试对应的移动攻击行的最小行号为x,第i组测试对应的移动攻击行的最小行号为x-1 i。第二个刷新周期内,重新随机确定移动攻击行的最小行号。图4和图5所示实施例适用于长时间的纯随机测试。
[0076]
通过在刷新周期内变更移动攻击行的行号、在刷新周期之间变更全部目标攻击行的行号,可以对每一种攻击方案进行充分的测试,并设置更丰富的攻击方案。
[0077]
在步骤s4,每次攻击测试不但包括正常攻击(读取)的时间,还包括验证相邻行是否出现行锤效应的时间。为了增加攻击频率,需要尽量减少验证行锤效应占用的时间,即减少验证的相邻行;为了提高验证准确率,需要尽量增加验证行锤效应占用的时间。因此,一次攻击测试需要验证的相邻行的行数可以由本领域技术人员根据实际情况自行设置。
[0078]
在图2所示实施例中,n=3时,则设置验证的相邻行的行数为1,被验证的相邻行是两个移动攻击行之间的行。在图3所示实施例中,n=3时,则设置被验证的相邻行是两个固定攻击行之间的行。由于在图2和图3所示实施例中,n=3,施加200k次攻击操作,满足测试需求的单纯攻击时间是3*85ns*200k=51ms,由于一个刷新周期为64ms,可以利用中间多出的13ms设置更多次的攻击操作,以及设置每次验证相邻行的数量和验证相邻行操作的次数(即设置x的值)。
[0079]
在图4或图5所示实施例中,可以根据n的值设置一个刷新周期内攻击测试的数量、每次攻击测试对应的x值和验证的相邻行的数量。例如,当n=15,设计抵御攻击频率为50k次时,满足测试需求的单纯攻击时间是15*85ns*50k=63.75ms,由于一个刷新周期为64ms,一个刷新周期内有250us可供验证相邻行,即能验证250000/85≈2941个相邻行。如果一次验证相邻行操作(即一次攻击测试的结尾)需要验证14个相邻行(每两个目标攻击行之间的行的总数),则该攻击方案中,最多可以在一个刷新周期内设置2941/14≈210次攻击测试。
[0080]
以上确定x值、每次攻击测试验证的相邻行的数量的方案仅为示例,本领域技术人员可以根据实际情况自行设置。
[0081]
在步骤s5,在m个所述刷新周期内对所述目标存储库完成mt/nxt次所述攻击测试,在所述攻击测试均未发生数据异常时,判断所述目标存储库抵御攻击能力达标。
[0082]
由上述分析可知,一次攻击测试为x次读取n个目标攻击行,则一次攻击测试的测试时间至少为nxt,该测试时间不包括验证相邻行是否出现行锤效应的时间。即,在一个刷新周期t内,可以最多进行t/nxt次攻击测试。如果对目标存储库进行m个刷新周期的测试,则对目标存储库施加的攻击测试的次数为mt/nxt次。
[0083]
对目标存储库进行m个刷新周期的攻击测试后,如果每次攻击测试均未发现数据异常,则可以判断目标存储库抵御攻击能力达标。如果有一次攻击测试发现数据异常,则可以停止后续攻击测试,直接判断目标存储库抵御攻击能力不达标;或者,如果在mt/nxt次刷新测试中有至少预设值次(例如3次)出现数据异常,判断目标存储库抵御攻击能力不达标。
[0084]
测试一个目标存储库后,继续测试待测存储器的其他存储库,直至完成对待测存储器中全部存储库的测试。
[0085]
图6是图2所示实施例中对待测存储器进行测试的流程图。
[0086]
在图6所示实施例中,测试流程可以包括:
[0087]
步骤s600,设置目标存储库序号z=0,根据步骤s1~步骤s3随机确定固定攻击行的行号i和移动攻击行的最小行号j;
[0088]
步骤s601,读取存储库k的第i行;
[0089]
步骤s602,读取存储库k的第j行;
[0090]
步骤s603,读取存储库k的第j 2行;
[0091]
步骤s604,判断本轮读取的序号即读取次数是否达到x,如果否,进入步骤s605,如果是,进入步骤s606;
[0092]
步骤s605,将读取次数加一返回步骤s601;
[0093]
步骤s606,读取存储库k的第j 1行以验证是否出现行锤效应;
[0094]
步骤s607,判断是否达到单周期预设攻击测试次数,如果否,进入步骤s608,如果是,进入步骤s609;
[0095]
步骤s608,对攻击次数加一、将读取次数清零、对j加一后返回步骤s601;
[0096]
步骤s609,判断测试周期数是否达到m,如果否,进入步骤s610,如果是,进入步骤s611;
[0097]
步骤s610,对测试周期数、i、j均加一,对攻击测试次数和读取次数清零后返回步骤s601;
[0098]
步骤s611,判断k是否为待测存储器中存储库的最大序号,如果否,进入步骤s612,如果是,进入步骤s613;
[0099]
步骤s612,清零测试周期数、攻击测试次数、读取次数,将k加一,重新随机确定i和j后返回步骤s601;
[0100]
步骤s613,确定测试结果。
[0101]
在图6所示实施例中,步骤s601~s606是单个攻击测试的测试流程,步骤s601~s608是单个刷新周期的测试流程,步骤s601~s610是单个存储库的测试流程,步骤s600~s613是单个存储器的测试流程。
[0102]
图7是图3所示实施例中对待测存储器进行测试的流程图。
[0103]
在图7所示实施例中,测试流程可以包括:
[0104]
步骤s700,设置目标存储库序号z=0,根据步骤s1~步骤s3随机确定固定攻击行的行号i和移动攻击行的最小行号j;
[0105]
步骤s701,读取存储库k的第i行;
[0106]
步骤s702,读取存储库k的第i 2行;
[0107]
步骤s703,读取存储库k的第j行;
[0108]
步骤s704,判断本轮读取的序号即读取次数是否达到x,如果否,进入步骤s705,如果是,进入步骤s707;
[0109]
步骤s705,将读取次数加一返回步骤s701;
[0110]
步骤s706,读取存储库k的第i 1行以验证是否出现行锤效应;
[0111]
步骤s707,判断是否达到单周期预设攻击测试次数,如果否,进入步骤s708,如果是,进入步骤s709;
[0112]
步骤s708,对攻击次数加一、将读取次数清零、对j加一后返回步骤s701;
[0113]
步骤s709,判断测试周期数是否达到m,如果否,进入步骤s710,如果是,进入步骤s711;
[0114]
步骤s710,对测试周期数、i、j均加一,对攻击测试次数和读取次数清零后返回步骤s701;
[0115]
步骤s711,判断k是否为待测存储器中存储库的最大序号,如果否,进入步骤s712,如果是,进入步骤s713;
[0116]
步骤s712,清零测试周期数、攻击测试次数、读取次数,将k加一,重新随机确定i和j后返回步骤s701;
[0117]
步骤s713,确定测试结果。
[0118]
在图7所示实施例中,步骤s701~s706是单个攻击测试的测试流程,步骤s701~s708是单个刷新周期的测试流程,步骤s701~s710是单个存储库的测试流程,步骤s700~s713是单个存储器的测试流程。
[0119]
图8是图4或图5所示实施例中对待测存储器进行测试的流程图。
[0120]
在图8所示实施例中,测试流程可以包括:
[0121]
步骤s800,设置目标存储库序号z=0,根据步骤s1~步骤s3随机确定固定攻击行的行号i和移动攻击行的最小行号j;
[0122]
步骤s801,顺次读取存储库k中的n个目标攻击行,目标攻击行的最小行号为i;
[0123]
步骤s802,判断本轮读取的序号即读取次数是否达到x,如果否,进入步骤s803,如果是,进入步骤s804;
[0124]
步骤s803,将读取次数加一返回步骤s801;
[0125]
步骤s804,读取目标攻击行的相邻行以验证是否出现行锤效应;
[0126]
步骤s805,判断是否达到单周期预设攻击测试次数,如果否,进入步骤s806,如果是,进入步骤s807;
[0127]
步骤s806,对攻击次数加一、将读取次数清零、对j加一后返回步骤s801;
[0128]
步骤s807,判断测试周期数是否达到m,如果否,进入步骤s808,如果是,进入步骤s809;
[0129]
步骤s808,对测试周期数、i、j均加一,对攻击测试次数和读取次数清零后返回步骤s801;
[0130]
步骤s809,判断k是否为待测存储器中存储库的最大序号,如果否,进入步骤s810,如果是,进入步骤s811;
[0131]
步骤s810,清零测试周期数、攻击测试次数、读取次数,将k加一,重新随机确定i和j后返回步骤s801;
[0132]
步骤s811,确定测试结果。
[0133]
在图8所示实施例中,步骤s801~s804是单个攻击测试的测试流程,步骤s801~s806是单个刷新周期的测试流程,步骤s801~s808是单个存储库的测试流程,步骤s800~s811是单个存储器的测试流程。
[0134]
本公开实施例中方法的有效性已经在攻击intel coffee lake 9
th
处理器的测试中得到验证,通过使用cache off(缓存关闭)的访问方式直接访问内存,攻破了coffee lake的存储器保护机制,通过各实施例对应的攻击方案诱导存储器出现了行锤效应。
[0135]
本公开实施例可以基于efi(extensible firmware interface,可扩展固件接口)环境实现,以绕过os(operating system,操作系统)环境存在的地址寻址缺陷和内存碎片缺陷。efi环境是英特尔公司推出的一种在未来的类pc电脑系统中替代bios(basic input output system,基本输入输出系统)的升级方案。
[0136]
efi在概念上类似于一个低阶的操作系统,是硬件和预启动软件间的接口规范,具有操控所有硬件资源的能力。efi环境不提供复杂的存储器保护功能,它只具备简单的存储器管理机制,具体来说就是指运行在x86处理器的段保护模式下,以最大寻址能力为限把存储器分为一个平坦的段,所有的程序都有权限存取任何一段位置,并不提供真实的保护服务。当efi所有组件加载完毕时,系统可以开启一个类似于操作系统shell的命令解释环境,在这里,用户可以调入执行任何efi应用程序。
[0137]
本公开实施例提供的方法可以通过efi应用程序的形式实现,以直接对存储器进行测试。
[0138]
图9是本公开实施例的实现环境的一个示意图。
[0139]
参考图9,攻击测试应用程序91设置在efi环境92上,efi环境92以cpu93为基础,设置有bios功能。cpu93连接dram94,dram94包括多个存储库941。攻击测试应用程序91执行如图1所示的方法读取存储库941中的行,实现对dram94抵御攻击能力的测试。
[0140]
本公开实施例提供的方法还可以通过其他方式实现,本公开对此不作特殊限制。
[0141]
综上所述,本公开实施例通过根据dram的参数确定多种攻击方案,可以有效提高利用行锤效应攻击dram的攻击强度,使dram抵御攻击能力测试的测试结果更为准确。
[0142]
上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0143]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献