CN105469835B - 存储装置及其测试方法 - Google Patents
存储装置及其测试方法 Download PDFInfo
- Publication number
- CN105469835B CN105469835B CN201410466782.8A CN201410466782A CN105469835B CN 105469835 B CN105469835 B CN 105469835B CN 201410466782 A CN201410466782 A CN 201410466782A CN 105469835 B CN105469835 B CN 105469835B
- Authority
- CN
- China
- Prior art keywords
- vector
- test
- storage device
- bit
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种存储装置及其测试方法,其中,测试方法适用在操作于测试模式下的存储装置,包括接收一向量。该向量欲写入存储装置中。当向量属于多个测试向量的一预设集合时,将向量写入存储装置。当向量不属于测试向量的预设集合时,将向量转换成测试向量的一者,用以产生一转换向量,并将转换向量写入存储装置中。本发明使存储装置在测试模式下不会遭受攻击,保证存储数据的安全性。
Description
技术领域
本发明有关于一种具有安全保护功能的存储器,特别是有关于一种在测试模式下具有安全保护功能的存储器的系统及方法。
背景技术
许多具有安全保护功能的存储装置利用一秘密键对欲存储的数据进行加密。这种具有安全保护功能的存储装置很有可能会遭受攻击,使得原本存储的重要数据被不正当存取或是更改及/或中断存储装置的操作。
发明内容
本发明要解决的技术问题是提供存储装置及其测试方法,解决现有技术中存储装置在测试模式下很有可能会遭受攻击的问题。
本发明所提供的测试方法应用在操作于测试模式下的存储装置,包括接收欲写入存储装置中的一向量。当向量属于多个测试向量的一预设集合时,将向量写入存储装置。当向量不属于测试向量的预设集合时,将向量转换成测试向量的一者,用以产生一转换向量,并将转换向量写入存储装置中。
在一些实施例中,将向量转换成测试向量的一者的步骤包括,选择向量的一位元集合;以及周期性地以位元集合取代向量的其它位元。在其它实施例中,测试向量的每一者的所有偶数位元的数值均等于一第一位元数值,测试向量的每一者的所有奇数位元的数值均等于一第二位元数值,并且将向量转换成测试向量的一者的步骤包括,在向量中,选择一代表性的偶数位元以及一代表性的奇数位元;利用代表性的偶数位元取代向量的偶数位元;以及利用代表性的奇数位元取代向量的奇数位元。
在一可能实施例中,本发明的测试存储装置的方法包括,读取一先前写入测试向量的一数据字元;以及输出存储装置的一编码数据,编码数据与读取数据字元时所发生错误有关。在另一实施例中,输出存储装置的该编码数据包括:输出一错误数量。在其它实施例中,输出存储装置的一编码数据包括:不输出错误发生的实际位置。
在一些实施例中,不输出错误发生的实际位置的步骤包括,位移偶数位元以及奇数位元,所述偶数位元以及所述奇数位元表示错误发生在相对应的偶数或奇数位元中。在其它实施例中,输出存储装置的一编码数据包括:输出错误发生的实际位置。
本发明另提供一种存储装置,包括一存储器以及一存储器控制器。在一测试模式下,存储器控制器接收一向量;向量欲写入存储器中;只有当向量属于多个测试向量的一预设集合时,存储器控制器将向量写入存储器中;当向量不属于测试向量的该预设集合时,存储器控制器将向量转换成测试向量的一者,用以产生一转换向量,并将该转换向量写入存储器中。
本发明提供一种测试方法,包括在一测试模式下,读取一存储装置的至少一字元。对字元进行单向函数运算,用以产生一运算结果,并且无法由运算结果重新获得字元。根据运算结果,输出错误发生在字元的一编码信息。
在一些实施例中,读取字元的步骤包括,当存储装置存储字元后,接收单向函数的一公开结果;以及对字元进行单向函数运算的步骤包括,在读取到字元后,对字元的一次集合进行该单向函数运算。在其它实施例中,输出编码信息的步骤包括,输出公开结果与运算结果的一比较结果的一二进制结果。在另一实施例中,接收公开结果的步骤包括,多次接收公开结果,并且当接收公开结果的次数大于一预设临界值时,启动一保护机制。
本发明另提供一种存储装置,包括一存储器;以及一存储器控制器。在一测试模式下,存储器控制器从存储器中读取至少一字元,并对字元进行一单向函数运算,用以产生一运算结果,使得无法由运算结果重新得到该字元,并根据运算结果,输出错误发生在字元的一编码信息。
本发明另提供一种测试方法,包括在一存储装置中,确认一秘密键是否已设定。当秘密键被设定时,禁能存储装置的一测试模式,直到至少存储装置中的秘密键被清除。
在一些实施例中,秘密键设定在存储装置中,并且至少存储装置中的秘密键被清除的步骤包括,清除存储装置的所有存储空间。
本发明还提供一种存储装置,包括一存储器;以及一存储器控制器。存储器控制器确认是否一秘密键已被设定,并在秘密键被设定时,禁能该存储装置的一测试模式,直到至少存储器的秘密键被清除。
本发明提供一种存储装置及其测试方法,使存储装置在测试模式下不会遭受攻击,以避免不正常使用存储装置的测试模式,保证存储数据的安全性。
为让本发明的特征和优点能更明显易懂,下文特举出较佳实施例,并配合所附附图,作详细说明如下:
附图说明
图1为本发明一实施例的测试系统的示意图。
图2为本发明一实施例的秘密写入测试图案方法的流程示意图。
图3为本发明一实施例的存储器装置的测试方法的流程示意图。
图4为本发明一实施例的利用单向函数对存储装置进行测试方法的示意图。
符号说明:
20:测试系统;
24:存储装置;
28:主机;
32:存储器控制器;
34:存储器接口;
38:不安全连接;
40:非易失性存储器;
44:模式配置单元;
48:选择器;
52:加密引擎;
56:秘密键单元;
60:测试读/写单元;
64:测试图案;
260、268:存储区域;
100、104、108、112、200、204、208、212、216、220、224、228:步骤。
具体实施方式
本发明所提供的存储装置及其测试方法用以预防存储装置受到攻击,以避免不正常使用存储装置的测试模式。在测试模式中,测试图案会被存储并被读取,但在存储或读取测试图案时,并不会对测试图案进行加密,因此,很容易得知测试结果。虽然只有经过授权的测试人员才能够测试存储装置,但由于存储装置在测试模式下较为危弱,故未经授权的人员可能尝试存取或更改存储的数据或对存储装置进行其它攻击,因而中断存储装置的运作。在以下的说明中,假设存储装置通过一不安全的连接,而与一外部主机(如测试人员)进行沟通。
在一些实施例中,测试模式与预设测试图案的一小集合(以下也称为测试向量)有关。当存储装置操作在测试模式下时,存储装置只将符合预设有效图案的集合的数据字元写入存储阵列中。另外,若接收到不属于测试图案的集合的数据字元时,存储装置在存储字元前,先将该数据字元转换成预设测试图案的一者,再存储该转换后的字元。通过限定写入存储装置的图案,而不是限定有意义的信息,因而提高存储装置的安全性。
在一些实施例中,存储装置读取先前存入的测试图案,读取结果可能具有至少一错误。存储装置将读取图案转换成有效图案的一者,再比较转换结果与读取图案,用以产生具有错误位元的字元。此字元隐藏错误发生的实际位置,但存储装置仍可处理此字元,让测试人员进行测试及除错。举例而言,上述的处理可能将错误位元位移到其它位元位置。换句话说,存储装置判断错误的数量,但不告知错误发生的位置。在一可能实施例中,存储装置还对错误数量及最高有效错误位元进行编码。
在一些实施例中,主机写入测试数据到一特定存储区域(并不需要是邻近的区域)。主机还告知存储装置一公开结果,该公开结果为存储在特定存储区域的测试数据经一单向函数运算后的结果。单向函数的特性无法回推存储区域所存储的测试数据。为了测试存储区域的测试数据的准确性,存储装置再次计算单向函数的结果,并将再次计算的结果与公开结果相比较。
若再次计算的结果不同于公开结果时,则表示从存储区域所读取的数据具有至少一错误。存储装置只会输出比较结果的二进制,因此,只会公开必要的信息。此测试机制可测试写入数据的正确性,但无法猜出数据。
在一些实施例中,当一攻击发生时,将会提供许多不同的单向函数结果,用以研判所存储的数据,此时,存储装置提供一保护机制。存储装置计算所接收到的单向函数结果的次数,并在次数大于一预设临界值时,存储装置禁能测试模式或启动一保护机制。
在一可能实施例中,存储装置判断是否已设定至少一秘密键,并根据判断结果禁能测试模式。举例而言,秘密键可能用以加密及/或辨识。在其它实施例中,当秘密键尚未被设定时,存储装置无法进行加密及/或辨识操作。因此,在设定一秘密键后,在测试模式下,存储装置不写入未加密数据及/或不读取所存储的数据。在此例中,为了开始测试,存储装置先清除所有的数据,包括任何已设定的秘密键以及其它已存储的秘密信息。当然,存储器装置也可以是选择性只清除已设定的秘密键或只清除已存储的秘密信息。
可利用许多方式达到上述用以提高存储装置测试的安全性,如限定写入的数据必须符合测试图案的一小集合、只提供测试结果的编码及特定的信息、以及只有在清除所有秘密键及/或秘密数据时,才执行测试动作。
图1为本发明一实施例的测试系统的示意图。测试系统20用以测试存储装置24。测试系统20包括一主机28。主机28写入数据及/或命令至存储装置24中,并从存储装置24中,读取数据及/或测试结果。存储装置24包括一存储器控制器32。存储器控制器32利用一存储器接口34通过一不安全连接38与主机28进行沟通。
存储装置24还包括一非易失性存储器40。非易失性存储器40存储存储器控制器32所提供的数据,并根据要求,将所存储的数据提供给存储器控制器32。在本实施例中,非易失性存储器40包括快闪存储器(flash memory)。在另一可能实施例中,非易失性存储器40可包括其它任何合适的技术所产生的非易失性存储器,如固态硬盘(SSD)、电可擦除可编程只读存储器(EEPROM)、一次性可编程只读存储器(OTP ROM)、可变电阻式存储器(Resistive-RAM;RRAM)、磁性存储器(magnetic storage),如硬盘驱动器(Hard DiskDrive;HDD)、光学存储器……等等。在以下的说明中,假设非易失性存储器40具有一快闪存储器,但并非用以限制本发明。在其它实施例中,可利用其它合适的存储器取代快闪存储器。
一模式配置单元44令存储装置24操作在两执行模式的一者中,如一操作模式或一测试模式。虽然测试模式一般受限于经过授权的使用者,但其它未经授权的使用者也可使存储装置进入测试模式。
在操作模式下,存储器控制器32对欲存储在非易失性存储器40内的数据进行加密操作,并利用一加密引擎52撷取非易失性存储器40所存储的数据。在操作模式下,一选择器48连接于加密引擎52与非易失性存储器40之间。在其它实施例中,在存储数据前,加密引擎52先对数据进行加密,并在读取非易失性存储器时,对数据进行解密。
在另一实施例中,加密引擎52计算数据的一加密签章(cryptographicsignature),并将签章连同数据一起存储在非易失性存储器40中。在撷取数据时,加密引擎52通过计算读取数据的签章并比较被存储的签章,用以恢复数据的正确性。一秘密键单元56具有至少一秘密键,用以供加密引擎52使用。
在测试模式下,存储器控制器32令选择器48由原本通过加密引擎52,改成通过一测试读/写单元60与非易失性存储器40连接。因此,在测试模式下,测试读/写单元60便可控制非易失性存储器与主机间的交换信息。
在一些实施例中,在测试模式下,若欲将数据写入非易失性存储器时,测试读/写单元60只将符合预设测试图案64的一小集合的数据字元写入非易失性存储器。另外,测试读/写单元60接收并将来自存储器接口34的数据转换成合法的测试图案,其中未转换前的数据不符合测试图案64的任何部分。在一可能实施例中,一未经授权的使用者无法写入有意义的信息至非易失性存储器,因此,无法更改非易失性存储器内重要的信息。
在测试模式下,当存储装置24读取非易失性存储器40所存储的数据时,测试读/写单元60确认读取的数据是否发生错误。测试读/写单元60编码错误的信息,因此,只有必要的错误信息会被公开,并通过存储器接口34将编码信息提供给主机28。因此,不安全连接38只会传送最少的必要信息。
在其它实施例中,存储装置24的测试对存储在非易失性存储器的数据进行单向函数(one-way function)运算。单向函数符合两标准,第一是数据的改变很有可能会造成函数的结果改变,第二是无法从结果中恢复数据。
一般而言,单向函数运算由测试读/写单元60所完成,但也可能是加密引擎52的一部分或是被切分在测试读/写单元60与加密引擎52中。当主机欲存储数据在存储装置中时,测试读/写单元60对数据进行单向函数运算,并存储数据与运算结果,并将数据及运算结果回传给主机。在另一可能实施例中,主机具有一装置,用以进行单向函数结果的运算,用以产生相对应的公开结果,并将公开结果存储在主机的一本地存储器中。
在测试模式下,主机将单向函数运算的公开结果提供给测试读/写单元60,用以读回数据,测试读/写单元60读取存储器所存储的数据,再对读取数据进行单向函数运算,再将运算结果与主机所提供的公开结果进行比较。若两结果相符,可以假设很有可能读取到正确的数据。测试读/写单元60可以只将比较结果或是单向函数的再次计算结果提供给主机28。
在一些实施例中,测试读/写单元60还维持追踪接收到单向函数的公开结果的次数,公开结果用以与再次计算结果进行比较。当追踪到的次数大于一预设临界值时,表示受到暴力功击(brute force attack),并且存储装置可能会通过离开测试模式,以达到保护的功能,或是使用其它合适的保护机制。
在一些实施例中,测试读/写单元60包括一装置,用以侦测秘密键单元56是否已就绪,并可禁能存储装置,直到秘密键及/或其它重要信息已被清除,稍后将举例说明。
图1所示的存储装置24的架构只是一示范架构,纯粹用以说明。在其它实施例中,也可使用其它合适的存储装置的架构。通过其它合适的硬件架构,如专用集成电路(Application-Specific Integrated Circuit;ASIC)或现场可编程门阵列(Field-Programmable Gate Array;FPGA),便可实现存储装置24里的不同元件,如测试读/写单元60与加密引擎52。在一些实施例中,可利用软件或软件与硬件的组合,实现存储装置24里的一些元件。
在一些实施例中,测试系统20的某些元件,如主机28或存储器控制器32的元件,可能包括一中央处理器(general-purpose processor),其可利用软件完成上述功能。可利用电子格式,如网络,将软件下载至处理器,或是提供及/或存储至非暂能有形媒体(non-transitory tangible media),如磁性、光学或电子存储器。
图2为本发明的秘密写入测试图案的流程示意图。在本实施例中,步骤100、104、108及112在存储装置上进行。假设,存储装置操作在测试模式下。另外,假设,非易失性存储器40存储32位元的数据,并且测试图案64具有四个32位元的图案,如下列的表格1所示。在表格1中,偶数位元具有第一位元值,而奇数位元具有第二位元值。
表格1
首先,在接收步骤100中,利用测试读/写单元60接收来自主机28的一欲写入的数据字元。在测试模式下,数据字元一般属于测试图案64的一者,例如数据字元等于上述表格1的一图案。在另一实施例中,接收步骤100利用测试读/写单元60接收来自主机的一命令,该命令包括一欲写入的数据字元。
在确认步骤104中,测试读/写单元60判断接收到的数据字元是否符合测试图案64的任一者。若数据字元不同于所有有效测试图案时,在转换步骤108中,测试读/写单元将数据字元转换成一有效测试图案,否则测试读/写单元不理会数据字元,因此数据字元未被改变。在上述两例中,测试读/写单元输出一有效测试图案。在一些实施例中,当接收到的数据字元不符合所有测试图案时,存储装置忽略该数据字元或具有该数据字元的命令。
测试读/写单元60可利用任何适合的方法将接收到的数据字元转换成一有效图案。在一些实施例中,为了执行转换动作,测试读/写单元先从接收到的数据字元的32位元中,选择一代表性的偶数位元以及一代表性的奇数位元。测试读/写单元可选择任何合适的偶数及奇数代表位元,举例而言,测试读/写单元从接收到的数据字元中,选择最高有效位元(MSB)及其相邻的位元,或是选择最低有效位元(LSB)及其相邻的位元。测试读/写单元60接着利用上述选择到的代表性的偶数位元的数值取代数据字元中偶数位元的数值,以及利用上述选择到的代表性的奇数位元的数值取代数据字元中奇数位元的数值,用以将接收到数据字元转换成一有效测试图案。一般而言,测试读/写单元可能从接收到的数据字元的位元中,选择合适的位元,再利用所选择的合适位元的数值周期性地取代接收到的数据字元的其它剩余位元,用以将接收到的数据字元转换成一有效图案。
在一实施例中,在步骤108中,测试读/写单元60将最高有效位元及其相邻位元的数值复制15次,用以将接收到的数据字元转换成一有效图案。举例而言,测试读/写单元将32位元的数据字元00XX…XXXX转换成图案0x00000000,其中X表示二进制数值,其可能是0或1,以及将字元01XX…XXXX转换成图案0x55555555(二进制数值为”0101…01010101”)。
在存储步骤112中,测试读/写单元60将步骤108所产生的图案写入非易失性存储器40中,并结束写入动作,如上所述,步骤108所产生的图案为一有效测试图案。
图2所呈现的写入流程可预防一未经授权的使用者写入有意义的信息至存储器中,而试图读取或窜改秘密数据,或是造成存储装置的其它损害。
图3为本发明的存储器装置的测试方法的流程示意图。图3的测试方法可在完成图2的写入动作后开始进行或是与图2的写入动作各自独立进行。在本实施例中,步骤200、204、208、212、216及220在存储装置上进行,而步骤224及228在主机上进行。在图3中,假设图案0x55555555(二进制数值为”0101…01010101”)已事先写入非易失性存储器中。其它数值的写入结果揭露于以下的表格2中。
一开始,在读取步骤200中,测试读/写单元60读取存储在非易失性存储器40内的一字元。在一些实施例中,测试读/写单元根据主机所提供的一命令(未显示)执行步骤200,用以读取存储器内的至少一字元。步骤200所读取到的32位元的字元可能是正确或是错误的。在表格2中,假设读取字元具有21个错误,并且取代了先前所写入的图案0x55555555,故测试读/写单元60读取到的字元R_WORD为0x93209A6A。
在读取转换步骤204中,测试读/写单元60将字元R_WORD转换成测试图案64的一者。在一可能实施例中,步骤204的转换方法相同于上述步骤104及108的确认及转换方法。在表格2中,字元R_WORD的最高有效位元及其相邻位元的数值为10,故字元R_WORD会被转换成图案R_PATTERN,其十六进制数值为0xAAAAAAAA。
在一错误撷取步骤208中,测试读/写单元60利用32位元XOR运算,比较字元R_WORD与图案R_PATTERN,其可产32位元的数值,以符号R_ERRORS表示。当字元R_WORD没有错误时,字元R_ERRORS的所有位元数值应等于0。
在最高有效错误位元撷取步骤212中,测试读/写单元撷取一32位元的字元,以符号MS_ERROR_BIT表示,字元MS_ERROR_BIT只有一个位元的数值为1,也就是字元R_ERRORS的最高有效错误位元的发生位置。举例而言,当R_ERRORS的所有位元数值不为0时,测试读/写单元60可清除字元MS_ERROR_BIT的所有位元,并根据字元R_ERRORS的最左侧的数值为非0的位元,令字元MS_ERROR_BIT的相对应位元为数值1。在表格2中,字元MS_ERROR_BIT为0x20000000。在一些实施例中,测试读/写单元60并不提供最高有效错误位元的实际信息,故可省略步骤212。
在步骤212中,测试读/写单元60撷取32位元的字元,其包括最低有效错误位元,以符号LS_ERROR_BITS表示。除了最高有效错误位元外,字元LS_ERROR_BITS等于R_ERRORS,(如对字元R_ERRORS及MS_ERROR_BIT进行XOR运算)。在表格2中,字元LS_ERROR_BITS为0x198A30C0。
在错误编码步骤216中,测试读/写单元60将字元LS_ERROR_BITS的错误编码成32位元的字元,用以找出错误的数量,但还不知道错误发生在哪些位元。测试读/写单元60各自地处理字元LS_ERROR_BITS的偶数与奇数位元的数值。在本实施例中,在字元LS_ERROR_BITS的偶数与奇数位元中,数值为1的位元称为“1”位元。
在步骤216中,为了处理偶数的“1”位元,测试读/写单元60将字元LS_ERROR_BITS的偶数的“1”位元依序移到有效的最右侧的偶数位元。移动后的结果如符号EVEN_SHIFT_ERRORS所示,其数值为000…01010101,在符号EVEN_SHIFT_ERRORS的所有位元中,数值为1的位元数量即为字元LS_ERROR_BITS的偶数的“1”位元的数量。在表格2中,字元LS_ERROR_BITS具有四个偶数“1”位元,因此,字元EVEN_SHIFT_ERRORS为0x00000055。
同样地,为了处理奇数“1”位元,测试读/写单元60将字元LS_ERROR_BITS的奇数“1”位元依序移到有效的最右侧的奇数位元。移动后的结果如符号ODD_SHIFT_ERRORS所示,其数值为000…101010,在符号ODD_SHIFT_ERRORS中,数值为1的位元数量表示字元LS_ERROR_BITS的奇数“1”位元的数量。在表格2中,字元LS_ERROR_BITS具有六个奇数“1”位元,因此,字元ODD_SHIFT_ERRORS为0x00000AAA。
字元EVEN_SHIFT_ERRORS与ODD_SHIFT_ERRORS告知错误的数量,但还不知道错误的实际位置。
在错误编码步骤220中,测试读/写单元60整合步骤212的最高有效错误位元MS_ERROR_BIT、步骤216的偶数位移错误字元EVEN_SHIFT_ERRORS与奇数位移错误字元ODD_SHIFT_ERRORS以及步骤204的图案R_PATTERN,用以产生字元ENCODED_ERRORS。在一些实施例中,步骤220的整合运算对字元R_PATTERN、MS_BIT_ERROR、EVEN_SHIFTED_ERRORS与ODD_SHIFTED_ERRORS进行XOR运算。在表格2中,字元ENCODED_ERRORS为0x8AAAA055。接着,存储装置将步骤220所得到的字元ENCODED_ERRORS提供给主机28。
在本实施例中,测试读/写单元60对字元R_PATTERN进行两次的XOR运算,第一次在步骤208中,用以撷取错误,第二次是在步骤220中,用以编码错误。另外,在两次的XOR运算之间,偶数的“1”位元与奇数的“1”位元被放在其它的偶数与奇数位置。若在字元R_WORD的最高有效位元及其相邻位元具有错误时,字元R_PATTERN的数值将不同于所存储的真正图案数值。在此例中,在字元R_ERRORS的错误及正确位元会被切换(即数值0表示错误位元,而数值1表示正确位元),但步骤220的XOR运算将错误位元的位置按顺序往后移。
如上所述,测试读/写单元维持最高有效错误位元的位置,并将最低有效错误位元的位置往有效的最右侧位移,因此,维持最高有效错误位元的位置,但不维持最低有效错误位元,测试读/写单元输出错误的数量,但并不知道错误发生的位置。
接下说明主机28在接收到上述步骤220所产生的字元ENCODED_ERRORS后所进行的动作。在比较步骤224中,主机比较字元ENCODED_ERRORS与公开测试图案(W_PATTERN)。主机对字元ENCODED_ERRORS与图案W_PATTERN进行XOR运算,运算结果以符号EST_ERRORS表示。如表格2所示,字元EST_ERRORS为0xDFFFF500。
在错误解码步骤228中,主机从字元EST_ERRORS中撷取各自的读取错误。在本实施例中,主机撷取准确的最高有效错误的位置及错误数量。如表格2所示,最高有效错误位于最左边的位置,并且共有21个错误。
表格2
图3的测试架构只是一实施方式,也可利用其它的测试架构。举例而言,在一些实施例中,主机提供公开图案给存储装置,其将公开图案与存储的数值进行比较,并在发生读取错误时,将编码信息回传给主机。
在上述实施例中,读取错误的编码信息包括最高有效错误的准确位置以及错误数量。在另一实施例中,编码信息只包括最高有效错误的准确位置或错误数量。在其它实施例中,编码信息可能包括其它不同于最高有效错误的位置(如最低有效错误的位置)及/或许多错误的位置。
在本实施例中,利用表格1所示的四种测试图案。然而,在另一可能实施例中,也可利用其它任何适合的有效图案进行测试。举例而言,测试图案的数量可能大于四。在其它实施例中,测试图案的数值可能不同于表格1的测试图案。
在图3的测试方法中,错误位元会被位移到最右边的偶数或奇数有效位置。在另一实施例中,错误位元被位移到不同于最右边的偶数或奇数有效位置的位置。举例而言,若单一错误发生在最低有效位元的位置时,此错误位元可能会被位移到其它奇数位元的位置。
虽然图3的测试方法用以测试32位元的字元,但也可测试其它位元数量的字元中。
图4为本发明的利用单向函数对存储装置进行测试的示意图。图4包括一写入期间以及一读取期间。在写入期间,主机写入测试数据至存储装置的一存储区域260。假设,主机传送一公开结果,该公开结果为一测试数据的单向函数运算结果,并且测试读/写单元60具有一装置,用以对写入数据进行相同的单向函数运算。
主机和测试读/写单元60可利用任何适当的单向函数F(.),其特性提供一输入A,B=F(A)是很容易计算得知,但无法根据B回推A。另外,针对两不同的输入A与A’,F(A)=F(A’)的可能性是很低的。示范性的单向函数的运算包括加密散列函数(cryptographichash functions)SHA-1及SHA-2。
在读取期间,存储装置判断存储在存储区域MEM_A的数据是否被改变。存储区域268(以符号MEM_A’表示)与存储区域MEM_A相同(即具有相同的存储位址),但由于错误的发生,故在存储区域268的数据可能不同于原本存储在存储区域260的数据。
在一些实施例中,为了测试区域MEM_A的数据准确性,测试读/写单元计算F(MEM_A’),并将计算结果与公开结果F(MEM_A)相比较,其中公开结果F(MEM_A)由主机所提供。主机可能在写入测试数据后,或是在任何适合的时间下,初始化读取期间。若F(MEM_A’)等于F(MEM_A)时,表示数据很有可能是正确的。测试读/写单元60只会将测试后的二进制通过/失败结果提供给主机28。在只有公开一二进制通过/失败结果时,测试机制通过比较数据本身,而不是数据的签章,用以确认是否测试数据已正确地写入。另外,未经授权的使用者无法由一加密存储单向函数而得知存储的数据。
未经授权的使用者可能送出许多不同版本的公开单向函数结果,用以猜出正确的公开结果。在一可能实施例中,测试读/写单元60记录企图修改数据的次数,并在修改次数大于一预设临界时,测试读/写单元60启动适当地保护措施,如禁能装置的测试模式。
在一些实施例中,只有秘密键没有被设定时,存储装置24才会执行存储器测试。在此例中,若存储装置操作在测试模式时(如利用模式配置单元44),并判断出一秘密键已被设定时,将禁能测试动作,直到存储器的整体(包括秘密键)均被清除。在另一可能实施例中,当秘密键及存储重要数据的存储区域正好被清除时,存储装置才会允许执行测试动作。
测试系统20的实施方式已揭露如上,并且只是用以说明本发明。在其它实施例中,测试系统可以其它合适的方式据以实施。举例而言,虽然上述的说明各别地揭露了许多实施方式,但可同时利用上述至少二实施方式,以构成其它的测试系统。
虽然上述的实施方式大部分是揭露如何安全地测试非易失性存储器,但上述的实施方式也可应用在其它的技术领域,如用以安全地测试任何尺寸及任何种类的存储系统。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何所属技术领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视申请专利范围所界定者为准。
Claims (10)
1.一种数据写入方法,其特征在于,该数据写入方法包括:
令一存储装置操作在一测试模式,其中在该测试模式下,该存储装置接收一向量;
当该向量属于多个测试向量的一预设集合时,将该向量写入该存储装置;以及
当该向量不属于所述测试向量的该预设集合时,将该向量转换成所述测试向量的一者,用以产生一转换向量,并将该转换向量写入该存储装置中。
2.如权利要求1所述的数据写入方法,其特征在于,将该向量转换成所述测试向量的一者的步骤包括:
选择该向量的一位元集合;以及
周期性地以该位元集合取代该向量的其它位元。
3.如权利要求1所述的数据写入方法,其特征在于,该数据写入方法还包括:
读取一先前写入测试向量的一数据字元,用以测试该存储装置;以及
输出该存储装置的一编码数据,该编码数据与读取该数据字元时所发生错误有关。
4.如权利要求3所述的数据写入方法,其特征在于,输出该存储装置的该编码数据包括:输出一错误数量,不输出该错误发生的实际位置;其中该不输出错误发生的实际位置的步骤包括,位移偶数位元以及奇数位元,所述偶数位元以及所述奇数位元表示错误发生在相对应的偶数或奇数位元中。
5.如权利要求3所述的数据写入方法,其特征在于,输出该存储装置的一编码数据包括:输出错误发生的实际位置。
6.一种存储装置,其特征在于,该存储装置包括:
一存储器;以及
一存储器控制器,在一测试模式下,该存储器控制器接收一向量,该向量欲写入该存储器中,只有当该向量属于多个测试向量的一预设集合时,将该向量写入该存储器中,并且当该向量不属于所述测试向量的该预设集合时,将该向量转换成所述测试向量的一者,用以产生一转换向量,并将该转换向量写入该存储器中。
7.如权利要求6所述的存储装置,其特征在于,该存储器控制器选择该向量的一位元集合,以及周期性地以该位元集合取代该向量的其它位元。
8.如权利要求6所述的存储装置,其特征在于,该存储器控制器读取一事先写入测试向量的一数据字元并根据发生在该数据字元的错误输出一编码信息给该存储装置。
9.如权利要求8所述的存储装置,其特征在于,该存储器控制器输出一错误数量,不输出该错误发生的实际位置;其中该存储器控制器通过位移多个偶数位元与多个奇数位元,用以不输出该错误发生的位置,所述偶数及奇数位元表示错误发生的位置。
10.如权利要求8所述的存储装置,其特征在于,该存储器控制器输出该错误发生的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410466782.8A CN105469835B (zh) | 2014-09-12 | 2014-09-12 | 存储装置及其测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410466782.8A CN105469835B (zh) | 2014-09-12 | 2014-09-12 | 存储装置及其测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105469835A CN105469835A (zh) | 2016-04-06 |
CN105469835B true CN105469835B (zh) | 2018-11-13 |
Family
ID=55607450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410466782.8A Active CN105469835B (zh) | 2014-09-12 | 2014-09-12 | 存储装置及其测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105469835B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110751978B (zh) * | 2019-10-16 | 2021-06-08 | 上海华虹宏力半导体制造有限公司 | 用于非挥发性存储器的测试校调方法及测试校调电路 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999038078A1 (en) * | 1998-01-21 | 1999-07-29 | Tokyo Electron Limited | Storage device, encrypting/decrypting device, and method for accessing nonvolatile memory |
JP2004037249A (ja) * | 2002-07-03 | 2004-02-05 | Mitsubishi Electric Corp | テストパターン作成装置 |
KR100884343B1 (ko) * | 2007-08-23 | 2009-02-18 | 주식회사 하이닉스반도체 | 쓰기 구동 회로 |
CN101577643B (zh) * | 2008-05-06 | 2012-03-21 | 联咏科技股份有限公司 | 用于一测试系统的数据转换方法及其相关数据转换装置 |
KR20140109531A (ko) * | 2013-02-27 | 2014-09-16 | 삼성전기주식회사 | 반도체 테스트 장치 및 반도체 테스트 방법 |
-
2014
- 2014-09-12 CN CN201410466782.8A patent/CN105469835B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105469835A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Delvaux | Machine-learning attacks on polypufs, ob-pufs, rpufs, lhs-pufs, and puf–fsms | |
EP3454318B1 (en) | Security system with entropy bits generated by a puf | |
EP2359520B1 (en) | Distributed puf | |
JP6058245B2 (ja) | 乱数拡大装置、乱数拡大方法及び乱数拡大プログラム | |
EP2329622B1 (en) | Message authentication code pre-computation with applications to secure memory | |
US9542157B2 (en) | Random number generator and method for generating random numbers | |
US7814396B2 (en) | Apparatus and method for checking an error recognition functionality of a memory circuit | |
US7774615B2 (en) | Integrity control of a memory external to a processor | |
CN101968834A (zh) | 电子产品的防抄板加密方法和装置 | |
CN110071805B (zh) | 认证方法和电路 | |
CN110457916B (zh) | 一种电子合同加密方法、装置及终端设备 | |
CN103559454A (zh) | 数据保护系统和方法 | |
JP6134375B2 (ja) | セキュアテストモードを有するメモリデバイスとその方法 | |
US9767277B2 (en) | Detection of fault injections in a random number generator | |
CN105469835B (zh) | 存储装置及其测试方法 | |
KR100948043B1 (ko) | 보안 요소의 클로닝을 방지하기 위한 방법 및 장치 | |
TWI529736B (zh) | 記憶裝置的測試方法及系統 | |
JP2005045760A (ja) | 暗号処理方法及び装置 | |
JP2007325219A (ja) | 暗号処理システムおよび暗号処理装置 | |
US11093656B2 (en) | Change-tolerant method of generating an identifier for a collection of assets in a computing environment | |
CN114095395B (zh) | 对故障注入产生的错误数据进行分析的方法、装置及介质 | |
EP2945092B1 (en) | Memory device with secure test mode | |
CN115426100A (zh) | 验证aes加密算法的方法、系统、计算机设备及存储介质 | |
CN114730344A (zh) | 使用基于密钥的温度计代码加扰的嵌入式熔丝来保护生命周期跟踪的方法 | |
CN116611096A (zh) | 故障检测方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |