TW201608575A - 記憶裝置的測試方法及系統 - Google Patents
記憶裝置的測試方法及系統 Download PDFInfo
- Publication number
- TW201608575A TW201608575A TW103129808A TW103129808A TW201608575A TW 201608575 A TW201608575 A TW 201608575A TW 103129808 A TW103129808 A TW 103129808A TW 103129808 A TW103129808 A TW 103129808A TW 201608575 A TW201608575 A TW 201608575A
- Authority
- TW
- Taiwan
- Prior art keywords
- test
- memory device
- vector
- memory
- character
- Prior art date
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
一種測試方法,適用在操作於測試模式下的記憶裝置,包括接收一向量。該向量係欲寫入記憶裝置中。當向量屬於複數測試向量之一預設集合時,將向量寫入記憶裝置。當向量不屬於測試向量之預設集合時,將向量轉換成測試向量之一者,用以產生一轉換向量,並將轉換向量寫入記憶裝置中。
Description
本發明係有關於一種具有安全保護功能的記憶體,特別是有關於一種在測試模式下具有安全保護功能的記憶體的系統及方法。
許多具有安全保護功能的記憶裝置係利用一秘密鍵對欲儲存的資料進行加密。這種具有安全保護功能的記憶裝置很有可能會遭受攻擊,使得原本儲存的重要資料被不正當存取或是更改及/或中斷記憶裝置的操作。
本發明所提供的方法係應用在操作於測試模式下的記憶裝置,包括接收欲寫入記憶裝置中之一向量。當向量屬於複數測試向量之一預設集合時,將向量寫入記憶裝置。當向量不屬於測試向量之預設集合時,將向量轉換成測試向量之一者,用以產生一轉換向量,並將轉換向量寫入記憶裝置中。
在一些實施例中,將向量轉換成測試向量之一者的步驟包括,選擇向量的一位元集合;以及週期性地以位元集合取代向量的其它位元。在其它實施例中,測試向量之每一者的所有偶數位元的數值均等於一第一位元數值,測試向量之每一者的所有奇數位元的數值均等於一第二位元數值,並且將向量轉換成測試向量之一者的步驟包括,在向量中,選擇一代表
性的偶數位元以及一代表性的奇數位元;利用代表性的偶數位元取代向量的偶數位元;以及利用代表性的奇數位元取代向量的奇數位元。
在一可能實施例中,本發明之測試記憶裝置的方法包括,讀取一先前寫入測試向量的一資料字元;以及輸出記憶裝置的一編碼資料,編碼資料與讀取資料字元時所發生錯誤有關。在另一實施例中,輸出記憶裝置的該編碼資料包括:輸出一錯誤數量。在其它實施例中,輸出記憶裝置的一編碼資料包括:不輸出錯誤發生的實際位置。
在一些實施例中,不輸出錯誤發生的實際位置的步驟包括,位移偶數位元以及奇數位元,該等偶數位元以及該等奇數位元表示錯誤發生在相對應的偶數或奇數位元中。在其它實施例中,輸出記憶裝置的一編碼資料包括:輸出錯誤發生的實際位置。
本發明另提供一種記憶裝置,包括一記憶體以及一記憶體控制器。在一測試模式下,記憶體控制器接收一向量。向量係欲寫入記憶體中。只有當向量屬於複數測試向量之一預設集合時,記憶體控制器將向量寫入記憶體中。當向量不屬於測試向量之該預設集合時,記憶體控制器將向量轉換成測試向量之一者,用以產生一轉換向量,並將該轉換向量寫入記憶體中。
本發明提供一種測試方法,包括在一測試模式下,讀取一記憶裝置的至少一字元。對字元進行單向函數運算,用以產生一運算結果,並且無法由運算結果重新獲得字元。根據
運算結果,輸出錯誤發生在字元的一編碼資訊。
在一些實施例中,讀取字元的步驟包括,當記憶裝置儲存字元後,接收單向函數的一公開結果;以及對字元進行單向函數運算的步驟包括,在讀取到字元後,對字元的一次集合進行該單向函數運算。在其它實施例中,輸出編碼資訊的步驟包括,輸出公開結果與運算結果的一比較結果的一二進制結果。在另一實施例中,接收公開結果的步驟包括,多次接收公開結果,並且當接收公開結果的次數大於一預設臨界值時,啟動一保護機制。
本發明另提供一種記憶裝置,包括一記憶體;以及一記憶體控制器。在一測試模式下,記憶體控制器從記憶體中讀取至少一字元,並對字元進行一單向函數運算,用以產生一運算結果,使得無法由運算結果重新得到該字元,並根據運算結果,輸出錯誤發生在字元的一編碼資訊。
本發明另提供一種測試方法,包括在一記憶裝置中,確認一秘密鍵是否已設定。當秘密鍵被設定時,禁能記憶裝置的一測試模式,直到至少記憶裝置中的秘密鍵被清除。
在一些實施例中,秘密鍵係設定在記憶裝置中,並且至少記憶裝置中的秘密鍵被清除的步驟包括,清除記憶裝置的所有記憶空間。
本發明更提供一種記憶裝置,包括一記憶體;以及一記憶體控制器。記憶體控制器確認是否一秘密鍵已被設定,並在秘密鍵被設定時,禁能該記憶裝置的一測試模式,直到至少記憶體的秘密鍵被清除。
為讓本發明之特徵和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
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圖係為本發明一實施例之測試系統之示意圖。
第2圖係為本發明一實施例之秘密寫入測試圖案方法的流程示意圖。
第3圖係為本發明一實施例之記憶體裝置的測試方法的流程示意圖。
第4圖係為本發明一實施例之利用單向函數對記憶裝置進行測試方法的示意圖。
本發明所提供的方法及系統係用以預防記憶裝置受到攻擊,以避免不正常使用記憶裝置的測試模式。在測試模式中,測試圖案會被儲存並被讀取,但在儲存或讀取測試圖案時,並不會對測試圖案進行加密,因此,很容易得知測試結果。雖然只有經過授權的測試人員才能夠測試記憶裝置,但由於記憶裝置在測試模式下較為危弱,故未經授權的人員可能嘗試存取或更改儲存的資料或對記憶裝置進行其它攻擊,因而中斷記憶裝置的運作。在以下的說明中,係假設記憶裝置透過一不安全的連結,而與一外部主機(如測試人員)進行溝通。
在一些實施例中,測試模式與預設測試圖案的一小集合(以下也稱為測試向量)有關。當記憶裝置操作在測試模式下時,記憶裝置只將符合預設有效圖案的集合的資料字元寫
入記憶陣列中。另外,若接收到不屬於測試圖案的集合的資料字元時,記憶裝置在儲存字元前,先將該資料字元轉換成預設測試圖案之一者,再儲存該轉換後的字元。藉由限定寫入記憶裝置的圖案,而不是限定有意義的資訊,因而提高記憶裝置的安全性。
在一些實施例中,記憶裝置讀取先前存入的測試圖案,讀取結果可能具有至少一錯誤。記憶裝置將讀取圖案轉換成有效圖案之一者,再比較轉換結果與讀取圖案,用以產生具有錯誤位元的字元。此字元隱藏錯誤發生的實際位置,但記憶裝置仍可處理此字元,讓測試人員進行測試及除錯。舉例而言,上述的處理可能係將錯誤位元位移到其它位元位置。換句話說,記憶裝置判斷錯誤的數量,但不告知錯誤發生的位置。在一可能實施例中,記憶裝置更對錯誤數量及最高有效錯誤位元進行編碼。
在一些實施例中,主機寫入測試資料到一特定記憶區域(並不需要是鄰近的區域)。主機更告知記憶裝置一公開結果,該公開結果係為儲存在特定記憶區域的測試資料經一單向函數運算後的結果。單向函數的特性係無法回推記憶區域所儲存的測試資料。為了測試記憶區域的測試資料的準確性,記憶裝置再次計算單向函數的結果,並將再次計算的結果與公開結果相比較。
若再次計算的結果不同於公開結果時,則表示從記憶區域所讀取的資料具有至少一錯誤。記憶裝置只會輸出比較結果的二進制,因此,只會公開必要的資訊。此測試機制可
測試寫入資料的正確性,但無法猜出資料。
在一些實施例中,當一攻擊發生時,將會提供許多不同的單向函數結果,用以研判所儲存的資料,此時,記憶裝置提供一保護機制。記憶裝置計算所接收到的單向函數結果的次數,並在次數大於一預設臨界值時,記憶裝置禁能測試模式或啟動一保護機制。
在一可能實施例中,記憶裝置係判斷是否已設定至少一秘密鍵,並根據判斷結果禁能測試模式。舉例而言,秘密鍵可能係用以加密及/或辨識。在其它實施例中,當秘密鍵尚未被設定時,記憶裝置無法進行加密及/或辨識操作。因此,在設定一秘密鍵後,在測試模式下,記憶裝置不寫入未加密資料及/或不讀取所儲存的資料。在此例中,為了開始測試,記憶裝置先清除所有的資料,包括任何已設定的秘密鍵以及其它已儲存的秘密資訊。當然,記憶體裝置也可以是選擇性只清除已設定的秘密鍵或只清除已儲存的秘密資訊。
可利用許多方式達到上述用以提高記憶裝置測試的安全性,如限定寫入的資料必須符合測試圖案之一小集合、只提供測試結果的編碼及特定的資訊、以及只有在清除所有秘密鍵及/或秘密資料時,才執行測試動作。
第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 Disk Drive;HDD)、光學儲存器……等等。在以下的說明中,假設非揮發記憶體40具有一快閃記憶體,但並非用以限制本發明。在其它實施例中,可利用其它合適的記憶體取代快閃記憶體。
一模式配置單元44令記憶裝置24操作在兩執行模式之一者中,如一操作模式或一測試模式。雖然測試模式一般係受限於經過授權的使用者,但其它未經授權的使用者也可使記憶裝置進入測試模式。
在操作模式下,記憶體控制器32對欲儲存在非揮發記憶體40內的資料進行加密操作,並利用一加密引擎52擷取非揮發記憶體40所儲存的資料。在操作模式下,一選擇器48連接於加密引擎52與非揮發記憶體40之間。在其它實施例中,在儲存資料前,加密引擎52先對資料進行加密,並在讀取非揮發記憶體時,對資料進行解密。
在另一實施例中,加密引擎52計算資料的一加密
簽章(cryptographic signature),並將簽章連同資料一起儲存在非揮發記憶體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中,偶數位元具有第一位元值,而奇數位元具有第二位元值。
首先,在接收步驟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”位元依序移到有效的最右側的偶數位元。移動後的結果如符號EVN_SHIFT_ERRORS所示,其數值為000…01010101,在符號EVN_SHIFT_ERRORS的所有位元中,數值為1的位元數量即為字元LS_ERROR_BITS的偶數的”1”位元的數量。在表格2中,
字元LS_ERROR_BITS具有四個偶數”1”位元,因此,字元EVE_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。
字元EVE_SHIFT_ERRORS與ODD_SHIFT_ERRORS告知錯誤的數量,但還不知道錯誤的實際位置。
在錯誤編碼步驟220中,測試讀/寫單元60整合步驟212的最高有效錯誤位元MS_ERROR_BIT、步驟216的偶數位移錯誤字元EVN_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’)的可能性是很低的。示範性的單向函數的運算包括加密散列函数(cryptographic hash 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的實施方式已揭露如上,並且只是用以說明本發明。在其它實施例中,測試系統可以其它合適的方式據以實施。舉例而言,雖然上述的說明各別地揭露了許多實施方式,但可同時利用上述至少二實施方式,以構成其它的測試系統。
雖然上述的實施方式大部分是揭露如何安全地測試非揮發記憶體,但上述的實施方式亦可應用在其它的技術領域,如用以安全地測試任何尺寸及任何種類的儲存系統。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100、104、108、112‧‧‧步驟
Claims (16)
- 一種測試方法,包括:令一記憶裝置操作在一測試模式,並接收一向量,該向量係欲寫入該記憶裝置中;當該向量屬於複數測試向量之一預設集合時,將該向量寫入該記憶裝置;以及當該向量不屬於該等測試向量之該預設集合時,將該向量轉換成該等測試向量之一者,用以產生一轉換向量,並將該轉換向量寫入該記憶裝置中。
- 如申請專利範圍第1項所述之測試方法,其中將該向量轉換成該等測試向量之一者的步驟包括:選擇該向量的一位元集合;以及週期性地以該位元集合取代該向量的其它位元。
- 如申請專利範圍第1項所述之測試方法,更包括:讀取一先前寫入測試向量的一資料字元,用以測試該記憶裝置;以及輸出該記憶裝置的一編碼資料,該編碼資料與讀取該資料字元時所發生錯誤有關。
- 如申請專利範圍第3項所述之測試方法,其中輸出該記憶裝置的該編碼資料包括:輸出一錯誤數量,不輸出該錯誤發生的實際位置;其中該不輸出錯誤發生的實際位置的步驟包括,位移偶數位元以及奇數位元,該等偶數位元以及該等奇數位元表示錯誤發生在相對應的偶數或奇數位元中。
- 如申請專利範圍第3項所述之測試方法,其中輸出該記憶裝 置的一編碼資料包括:輸出錯誤發生的實際位置。
- 一種記憶裝置,包括:一記憶體;以及一記憶體控制器,在一測試模式下,接收一向量,該向量係欲寫入該記憶體中,只有當該向量屬於複數測試向量之一預設集合時,將該向量寫入該記憶體中,並且當該向量不屬於該等測試向量之該預設集合時,將該向量轉換成該等測試向量之一者,用以產生一轉換向量,並將該轉換向量寫入該記憶體中。
- 如申請專利範圍第6項所述之記憶裝置,其中該記憶體控制器選擇該向量之一位元集合,以及週期性地以該位元集合取代該向量的其它位元。
- 如申請專利範圍第6項所述之記憶裝置,其中該記憶體控制器讀取一事先寫入測試向量的一資料字元並根據發生在該資料字元的錯誤輸出一編碼資訊予該記憶裝置。
- 如申請專利範圍第8項所述之記憶裝置,其中該記憶體控制器輸出一錯誤數量,不輸出該錯誤發生的實際位置;其中該記憶體控制器藉由位移複數偶數位元與複數奇數位元,用以不輸出該錯誤發生的位置,該等偶數及奇數位元係表示錯誤發生的位置。
- 如申請專利範圍第8項所述之記憶裝置,其中該記憶體控制器輸出該錯誤發生的位置。
- 一種測試方法,包括:在一測試模式下,讀取一記憶裝置的至少一字元; 對該字元進行單向函數運算,用以產生一運算結果,並且無法由該運算結果重新獲得該字元;以及根據該運算結果,輸出錯誤發生在該字元的一編碼資訊。
- 如申請專利範圍第11項所述之測試方法,其中輸出該編碼資訊的步驟包括,輸出該公開結果與該運算結果的一比較結果的一二進制結果。
- 如申請專利範圍第11項所述之測試方法,其中接收該公開結果的步驟包括,多次接收該公開結果,並且當接收該公開結果的數量大於一預設臨界值時,啟動一保護機制。
- 一種記憶裝置,包括:一記憶體;以及一記憶體控制器,在一測試模式下,從該記憶體中讀取至少一字元,並對該字元進行一單向函數運算,用以產生一運算結果,使得無法由該運算結果重新得到該字元,並根據該運算結果,輸出錯誤發生在該字元的一編碼資訊。
- 如申請專利範圍第14項所述之記憶裝置,其中該記憶體控制器輸出該公開結果與該運算結果的一比較結果的一二進制結果。
- 如申請專利範圍第14項所述之記憶裝置,其中該記憶體控制器多次接收該公開結果,並且當接收該公開結果的數量大於一預設臨界值時,該記憶體控制器啟動一保護機制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103129808A TWI529736B (zh) | 2014-08-29 | 2014-08-29 | 記憶裝置的測試方法及系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103129808A TWI529736B (zh) | 2014-08-29 | 2014-08-29 | 記憶裝置的測試方法及系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201608575A true TW201608575A (zh) | 2016-03-01 |
TWI529736B TWI529736B (zh) | 2016-04-11 |
Family
ID=56084821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103129808A TWI529736B (zh) | 2014-08-29 | 2014-08-29 | 記憶裝置的測試方法及系統 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI529736B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10276259B2 (en) | 2017-07-05 | 2019-04-30 | Winbond Electronics Corp. | Memory testing method and memory apparatus therefor |
-
2014
- 2014-08-29 TW TW103129808A patent/TWI529736B/zh active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10276259B2 (en) | 2017-07-05 | 2019-04-30 | Winbond Electronics Corp. | Memory testing method and memory apparatus therefor |
TWI686812B (zh) * | 2017-07-05 | 2020-03-01 | 華邦電子股份有限公司 | 記憶體測試方法及其記憶體裝置 |
Also Published As
Publication number | Publication date |
---|---|
TWI529736B (zh) | 2016-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8699714B2 (en) | Distributed PUF | |
KR101514166B1 (ko) | 키 정보 생성 장치 및 키 정보 생성 방법 | |
US10678636B2 (en) | Techniques for detecting and correcting errors in data | |
RU2696425C1 (ru) | Способ двумерного контроля и обеспечения целостности данных | |
US20140289526A1 (en) | Authenticator, authenticatee and authentication method | |
KR20150112893A (ko) | 대수적 조작으로부터 데이터를 보호하는 방법 | |
JP6134375B2 (ja) | セキュアテストモードを有するメモリデバイスとその方法 | |
CN113632066A (zh) | 所执行代码中的错误识别 | |
CN104573572A (zh) | 加密读写芯片标识符的方法 | |
US8199914B2 (en) | Detection of a change of the data of a dataset | |
CN102971984A (zh) | 认证存储设备的方法、机器可读的存储介质、和主机设备 | |
TWI529736B (zh) | 記憶裝置的測試方法及系統 | |
US20150249467A1 (en) | Storage device, controller, and data writing method | |
CN105469835B (zh) | 存储装置及其测试方法 | |
US20220179567A1 (en) | Memory system and method of managing encryption key | |
CN110096909B (zh) | 一种保证efuse秘钥稳定性的方法及其系统 | |
CN105245325B (zh) | 用于处理数据的方法和设备 | |
CN111143904B (zh) | 一种数据解密方法、装置和计算机可读存储介质 | |
US10649931B2 (en) | Data encryption and verification between master and slave | |
US20200358618A1 (en) | Storage device providing high security and electronic device including the storage device | |
ES2683998T3 (es) | Dispositivo de memoria con modo de prueba segura | |
WO2023162151A1 (ja) | データ保管装置、データ保管方法及び、プログラム | |
KR101052600B1 (ko) | 암호화 데이터 저장장치 및 그 저장방법 | |
CN117494161A (zh) | 一种可恢复错误数据的移动硬盘加密/解密方法、系统和介质 | |
CN104575609A (zh) | Otp寄存器中的芯片标识符读写方法 |