特許第5926355号(P5926355)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華邦電子股▲ふん▼有限公司の特許一覧

特許5926355セキュアテストモードを有するメモリデバイスとその方法
<>
  • 特許5926355-セキュアテストモードを有するメモリデバイスとその方法 図000004
  • 特許5926355-セキュアテストモードを有するメモリデバイスとその方法 図000005
  • 特許5926355-セキュアテストモードを有するメモリデバイスとその方法 図000006
  • 特許5926355-セキュアテストモードを有するメモリデバイスとその方法 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5926355
(24)【登録日】2016年4月28日
(45)【発行日】2016年5月25日
(54)【発明の名称】セキュアテストモードを有するメモリデバイスとその方法
(51)【国際特許分類】
   G11C 29/10 20060101AFI20160516BHJP
   G06F 12/16 20060101ALI20160516BHJP
【FI】
   G11C29/00 657Z
   G06F12/16 330A
   G06F12/16 310H
【請求項の数】16
【全頁数】16
(21)【出願番号】特願2014-224073(P2014-224073)
(22)【出願日】2014年11月4日
(65)【公開番号】特開2015-201244(P2015-201244A)
(43)【公開日】2015年11月12日
【審査請求日】2014年11月4日
(31)【優先権主張番号】14/244,000
(32)【優先日】2014年4月3日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】595039162
【氏名又は名称】華邦電子股▲ふん▼有限公司
(74)【代理人】
【識別番号】100094053
【弁理士】
【氏名又は名称】佐藤 隆久
(72)【発明者】
【氏名】ニイル タシエル
(72)【発明者】
【氏名】ウリ カルズニー
(72)【発明者】
【氏名】ツァチ ウェイセル
(72)【発明者】
【氏名】ヴァレリー テペル
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開平09−160802(JP,A)
【文献】 特開2013−073283(JP,A)
【文献】 特開平04−313900(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 29/10
G06F 12/16
(57)【特許請求の範囲】
【請求項1】
テストモードで動作するメモリデバイスにおいて、
当該メモリデバイスに書き込むべきベクトルを受信し、
前記受信したベクトルが予め規定された組のテストベクトルに属している場合のみ、前記メモリデバイスに前記受信したベクトルを書き込み、
前記受信したベクトルが前記予め規定された組のテストベクトルに属さない場合は、前記受信したベクトルを前記テストベクトルの1つに変換し、前記変換したベクトルを前記メモリデバイスに書き込む、
方法。
【請求項2】
前記受信したベクトルを前記テストベクトルの1つに変換するステップは、
前記受信したベクトルのビットのサブセットの1つを選択し、
前記受信したベクトルの残りビットを、前記選択したサブセットで周期的な複製と置き換える、
ステップを有する、
請求項1に記載の方法。
【請求項3】
当該方法は、
予め書き込まれた前記テストベクトルのデータワードを読みだすことにより、前記メモリデバイスをテストし、
前記読みだしたデータワード内のエラーについて符号化した情報を前記メモリデバイスの外部に取り出す、
ステップを有する、
請求項1に記載の方法。
【請求項4】
前記符号化した情報を取り出すステップは、前記エラーの全数を取り出すステップを具備し、
前記符号化した情報を取り出すステップは、前記エラーの真の位置は取り出さないステップを具備し、
当該エラーの真の位置は取り出さないステップは、それぞれ異なる偶数桁または奇数桁の位置に対するエラーを示す偶数桁または奇数桁にシフトするステップを具備する、
請求項3に記載の方法。
【請求項5】
前記符号化した情報を取り出すステップは、前記エラーのサブセットの真の位置を取り出すステップを具備する、
請求項3に記載の方法。
【請求項6】
メモリ、および、
メモリコントローラを具備するメモリデバイスであって、
前記メモリコントローラは、
テストモードにおいて動作して、
前記メモリに書き込むべきベクトルを受信し、
前記受信したベクトルが予め規定された組のテストベクトルに属している場合のみ、前記メモリに前記受信したベクトルを書き込み、
前記受信したベクトルが前記予め規定された組のテストベクトルに属さない場合は、前記受信したベクトルを前記テストベクトルの1つに変換し、
当該変換したベクトルを前記メモリに書き込む、
ように構成されている、
メモリデバイス。
【請求項7】
前記メモリコントローラは、
前記受信したベクトルを、前記ベクトルのビットのサブセットを選択することにより、前記テストベクトルの1つに変換し、
前記受信したベクトルのビットの残りのビットを、前記選択したサブセットで周期的な複製と置き換える、
ように構成されている、
請求項6に記載のメモリデバイス。
【請求項8】
前記メモリコントローラは、
予め書き込まれている前記テストベクトルのデータワードを読みだし、
前記読みだしたデータワード内のエラーについて符号化した情報を前記メモリデバイスの外部に取り出す、
ように構成されている、
請求項6に記載のメモリデバイス。
【請求項9】
前記メモリコントローラは、前記エラーの全数を取り出するように構成されており、
前記エラーの真の位置は取り出さないように構成されており、
前記メモリコントローラは、それぞれ異なる偶数桁または奇数桁の位置に対するエラーを示す、偶数桁または奇数桁のビットにシフトすることによりエラーの真の位置を取り出さないよう構成されている、
請求項8に記載のメモリデバイス。
【請求項10】
前記メモリコントローラは、前記エラーのサブセットの真の位置を取り出すように構成されている、
請求項8に記載のメモリデバイス。
【請求項11】
テストモードで動作する前記メモリデバイスにおいて、
前記テストモードにおいて、当該メモリデバイスから1つまたは複数のワードを読み出し、
前記1つまたは複数のワードのいずれもが一方向関数を適用した演算結果から再生できないように前記1つまたは複数のワードに対して適用する一方向関数の結果を演算し、
前記演算結果に基づいて、前記1つまたは複数のワード内のエラーに関する符号化情報を出力する、
請求項1に記載の方法。
【請求項12】
前記符号化情報を出力するステップは、前記1つまたは複数のワードの少なくともサブセットに適用する前記一方向関数の演算により期待される結果と、前記演算した結果との比較結果の2進数の結果を出力するステップを具備する、
請求項11に記載の方法。
【請求項13】
前記メモリデバイスが期待される結果を受信する回数が所定のしきい値を越えたとき、ホストによって送出された期待される結果を受信するステップをさらに具備する
請求項11に記載の方法。
【請求項14】
前記メモリコントローラは、
テストードにおいて、前記メモリから1つまたは複数のワードを読み取り、
一方向関数の適用の演算結果から前記1つまたは複数のワードが再現されないように、前記1つまたは複数のワードに適用される一方向関数の結果を演算し、
前記演算結果に基づいて、前記1または複数のワード内のエラーに関する符号化情報を出力する、
ように構成されている、
請求項6に記載のメモリデバイス。
【請求項15】
前記メモリコントローラは、少なくとも前記1つまたは複数のワードに適用する前記一方向関数の適用による期待される結果と、前記演算した結果との比較結果の2進数の結果を出力する、ように構成されている、
請求項14に記載のメモリデバイス。
【請求項16】
前記メモリコントローラは、期待される結果を複数回受信し、もしその受信回数が所定のしきい値を越える場合、保護対策を講じ、ホストにより前記期待される結果が送出される、ように構成されている、
請求項14に記載のメモリデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機密保護された(secured)メモリに関し、特に、テストモードにおいてのメモリデバイスを機密保護する方法およびシステムに関するものである。
【背景技術】
【0002】
いくつかの機密保護されたメモリデバイスは、秘密鍵を用いて保存されたデータを暗号化している。機密保護されたメモリデバイスは、慎重に保存された情報にアクセスするか、またはデータを変更する、および/またはメモリデバイスの動作を中断させることを目的とする、さまざまな攻撃を受け易い可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明は、テストモードにおけるメモリデバイスを機密保護する方法およびシステムを提供する。
【課題を解決するための手段】
【0004】
本発明の方法は、テストモードで動作するメモリデバイスの方法であって、メモリデバイスに書き込まれるベクトルを受信するステップを含む。ベクトルはベクトルが所定のテストベクトルのサブセットに属する場合にだけメモリデバイスに書き込まれる。ベクトルがテストベクトルのサブセットに属しない場合、ベクトルは、テストベクトルの1つに変換され、変換されたベクトルは、メモリデバイスに書き込まれる。
【0005】
いくつかの実施形態では、ベクトルをテストベクトルの1つに変換するステップは、ベクトルのビットのサブセットを選ぶステップ、およびベクトルの残りのビットを選ばれたサブセットの周期的な複製と代替するステップを含む。もう1つの実施形態では、テストベクトルのどれでも、全ての偶数次(偶数桁)(even−order)のビットは、第1のビット値に等しく、全ての奇数次(奇数桁)のビットは、第2のビット値に等しく、ベクトルの変換は、ベクトルで代表的な偶数ビットと代表的な奇数ビットを選び、ベクトルの偶数次のビットを代表的な奇数ビットと代替し、ベクトルの奇数次のビットを代表的な奇数ビットと代替する。
【0006】
実施例では、メモリをテストするステップは、予め書き込まれたテストベクトルのデータワードを読み出し、且つ前記読み出しデータワードのエラーに関する符号化された情報をメモリデバイスの外に明示することを含む。もう1つの実施形態では、符号化された情報の明示は、エラーの全数の明示を含む。またもう1つの実施形態では、符号化された情報の明示は、エラーの実際の位置を明示しないことを含む。
【0007】
いくつかの実施形態では、エラーの実際の位置を明示しないステップは、異なる各々の偶数次と奇数次の位置にあるエラーを示す、偶数次(偶数桁)と奇数次(奇数桁)のビットをシフトするステップを含む。もう1つの実施形態では、符号化された情報を明示するステップは、エラーのサブセットの実際の位置を明示するステップを更に含む。
【0008】
本発明の実施形態に応じて、メモリおよびメモリコントローラを含むメモリデバイスが更に提供される。メモリコントローラは、テストモードで動作するように構成され、メモリに書き込まれるベクトルを受信し、ベクトルをベクトルが所定のテストベクトルのセットに属する場合にだけメモリに書き込み、ベクトルがテストベクトルのセットに属しない場合、ベクトルをテストベクトルの1つに変換し、変換されたベクトルをメモリに書き込む。
【0009】
本発明の実施形態に応じて、メモリデバイスでは、テストモードでメモリデバイスから1つ以上のワードを読み出すステップを含む方法が更に提供される。1つ以上のワードに用いられる一方向関数の結果は、その結果から復元されることができる1つ以上のワードがないように計算される。計算された結果に基づき、1つ以上のワードのエラーに関する符号化された情報を出力する。
【0010】
いくつかの実施形態では、1つ以上のワードを読み込むステップは、保存された時、1つ以上のワードの少なくとも1つのサブセットに用いられた一方向関数の期待の結果を受信するステップ、および結果を計算するステップは、読み出した時、1つ以上のワードのサブセットに一方向関数を用いるステップを含む。もう1つの実施形態では、符号化された情報を出力するステップは、期待の結果と計算された結果とを比較した2進数の結果を出力するステップを含む。またもう1つの実施形態では、期待の結果を受信するステップは、複数の回数の期待の結果を受信し、その回数が所定のしきい値を上回る場合、保護対策を取るステップを含む。
【0011】
本発明の実施形態に応じて、メモリおよびメモリコントローラを含むメモリデバイスが更に提供される。メモリコントローラは、テストモードでメモリから1つ以上のワードを読み出すように構成され、1つ以上のワードに用いられる一方向関数の結果がその結果から復元されることができる1つ以上のワードがないように計算し、計算された結果に基づき、1つ以上のワードのエラーに関する符号化された情報を出力する。
【0012】
本発明の実施形態に応じて、秘密鍵がインストールされるかどうかをチェックするステップを含むメモリデバイスの方法が更に提供される。秘密鍵がインストールされたのを検出すると、メモリデバイスのテストモードは、メモリデバイスから少なくとも秘密鍵を消去するまで無効になる。
【0013】
いくつかの実施形態では、秘密鍵は、メモリデバイスのメモリにインストールされ、少なくとも秘密鍵を除去するステップは、メモリデバイスの全てのメモリを消去するステップを含む。
【0014】
本発明の実施形態に応じて、メモリおよびメモリコントローラを含むメモリデバイスが更に提供される。メモリコントローラは、秘密鍵がインストールされたかどうかをチェックするように構成され、秘密鍵がインストールされたのを検出すると、少なくとも秘密鍵をメモリから消去するまでメモリデバイスのテストモードを無効にする。
【0015】
添付の図面に関連付けて以下の本発明の様々な実施形態の詳細な説明を検討することで、本発明はより完全に理解できる。
【図面の簡単な説明】
【0016】
図1】本発明の実施形態に応じたメモリデバイスをテストするシステムを図式的に示したブロック図である。
図2】本発明の実施形態に応じた書き込みテストパターンを保護する方法を図式的に示したフローチャートである。
図3】本発明の実施形態に応じたメモリデバイスをテストする方法を図式的に示したフローチャートである。
図4】本発明の実施形態に応じた一方向関数を用いてメモリデバイスをテストする方法を図式的に示した図である。
【発明を実施するための形態】
【0017】
ここで述べられる本発明の実施形態は、メモリデバイスのテストモードを不当に利用しようとする攻撃に対してメモリデバイスを保護するための改善された方法およびシステムを提供する。テストモードでは、テストパターンは一般的に、保存され、暗号化されずに読み取られるため、テスト結果の解釈を容易にする。一般的に権限のあるテスターだけがメモリデバイスのテストを許可されるが、権限のないテスターは、メモリデバイスのテストモードの脆弱さを利用することによって、保存されたデータにアクセスするか、またはデータを変更、メモリデバイスの動作を中断させる、またはメモリデバイスを攻撃しようとする可能性がある。後に続く説明では、メモリデバイスが保護されていないリンクによって外部ホスト(例えば、テスター)と通信するものとする。
【0018】
いくつかの実施形態では、テストモードは、所定のテストパターンの小セット(サブセット、subset)を特定する(ここではテストベクトルとも呼ばれる)。テストモードで動作する時、メモリデバイスは、所定の有効なパターンのサブセットに属するデータワードだけをメモリアレイに書き込ませる。また、テストパターンのサブセットに属さなないデータワードを受けた時、メモリデバイスは、記憶される前にデータワードを所定のテストパターンの1つに変換する。有意データでなく、テスト限定されたパターンでメモリデバイスに書き込ませることによって、メモリデバイスの安全性は、大幅に向上される。
【0019】
いくつかの実施形態では、メモリデバイスは、1つ以上のエラーを含む可能性のある、予め書き込まれたテストパターンをメモリから読み出す。メモリデバイスは、読み出しパターンを有効なパターンの1つに変換し、その結果を読み出しパターンと比較して、誤りビットのワードを生成する。次いで、メモリデバイスは正確なエラー位置を隠すために、誤りビットのワードを操作するが、一方、テスターに有意情報を与え、テストおよびデバッグを行う。この操作は、例えば、誤りビットを他のビット位置にシフトすることを含む。言い換えれば、メモリデバイスはエラー数を追従するが、エラーの実際の位置を隠す。実施形態では、メモリデバイスは、エラー数および最高の誤りビットの位置を更に符号化する。
【0020】
いくつかの実施形態では、ホストは、所定のメモリ領域(連続領域である必要はない)に、テストデータを書き込む。ホストは、このメモリ領域に保存されたデータに適用される一方向関数(one way function)の期待される結果(expected result)をメモリデバイスに更に提供する。一方向関数は、その演算結果からメモリ領域のどのデータワードも復元することが不可能であるように定められる。メモリ領域の完全性をテストするために、メモリデバイスは、一方向関数の結果を再計算し、再計算の結果をホストによって提供された期待の結果と比べる。
【0021】
期待の結果と再計算の結果間のどの違いも、メモリ領域から読み出されたデータが1つ以上のエラーを含むことを示している。メモリデバイスは、比較した結果の2進数(バイナリー)だけを出力するため、必要な情報だけを明示する。このテスト方式は、データ書き込みの正確性をテストすることができるが、データそのものを推測することを不可能にする。
【0022】
いくつかの実施形態では、メモリデバイスは、複数の異なるバージョンの一方向関数の結果を送ることによってメモリの内容を推測しようとする攻撃からの保護を提供する。メモリデバイスは、メモリデバイスがそのような期待される結果を受ける回数を数え、この数が所定のしきい値を上回る場合、メモリデバイスはテストモードを無効にするか、または他の好適な保護対策を取る。
【0023】
実施形態では、メモリデバイスは、1つ以上の秘密鍵がインストールされたのを検出すると、メモリのテストを無効にする。例えば、秘密鍵は、暗号化および/または認証のために用いられ得る。一方、秘密鍵がインストールされていない時、メモリデバイスは暗号化および/または認証の動作を行うことができない。よって、秘密鍵がインストールされた時、例えば、テストをするために、メモリデバイスは、暗号化されていないデータをメモリへの、またはメモリからの書き込み、読み出し、または両方を無効にする。この実施形態では、テストを行うために、メモリデバイスは、まず、どんなインストールされた秘密鍵をも含む全てのメモリを消去する。または、メモリデバイスは、メモリから秘密鍵とその他の秘密情報だけを除去する。
【0024】
本発明の技術は、種々の方法、例えば、テストパターンの小セットに書き込むことができるデータを制限することによって、テスト結果に関する符号化され、かつ限定された情報を明示することによって、且つどんな秘密鍵および/または秘密データをも消去した後にのみ、メモリテストを行うことによって、メモリ装置を安全にテストすることができる。
【0025】
システム記述
図1は、本発明の実施形態に応じたメモリデバイス24をテストするシステム20を図式的に示したブロック図である。システム20は、メモリデバイス24へのデータ書き込みおよび/または命令をするホストコンピュータ28を含む。メモリデバイス24は、保護されていないリンク38を介してメモリインターフェースを用いてホストコンピュータ28と通信するメモリコントローラ32を含む。
【0026】
メモリデバイス24は、記憶用にメモリコントローラ32から受けたデータを保存する非揮発性メモリ40を更に含み、要求に応じてメモリコントローラ32保存されたデータを読み出す。図1の実施形態では、不揮発性メモリ40は、フラッシュメモリを含む。もう1つの実施形態では、例えば、ソリッドステートドライブ(SDD)ベースの、電気的消去可能プログラマブルROM(EEPROM)、ワンタイムプログラマブル(OTP)ROM、抵抗変化メモリ(RRAM(登録商標))、ハードディスクドライブ(HDD)のような磁気記憶、光記憶など、どんな好適な技術のどんな他の好適な不揮発性メモリでも用いられることができる。後に続く説明では、不揮発性メモリ40は、不揮発性メモリの代表例としてフラッシュメモリを含むものとするが、本発明の技術は、どんな他の好適なメモリにも用いることができる。
【0027】
モード配置ユニット44は、メモリデバイス24が2つの動作モードの中の1つで動作するように構成し、ここでは動作およびテストモードとして呼ばれる。テストモードは、権限のあるユーザーに一般的に制限されるが、権限のない攻撃者はデバイスを動作のテストモードにさせる可能性がある。
【0028】
動作モードにある時、メモリコントローラ32は、暗号化エンジン52を用いて、暗号処理を不揮発性メモリ40に保存されるデータ、およびフラッシュメモリから読み出されたデータに適用することができる。動作モードでは、セレクタ48は、暗号化エンジン52と不揮発性メモリ40を相互接続する。いくつかの実施形態では、暗号化エンジン52は、保存前にデータを暗号化し、フラッシュメモリから読み出されたデータを復号する。
【0029】
代替的にまたは付加的に、暗号化エンジン52は、データの暗号化された署名を計算し、フラッシュメモリのデータに沿って信号を保存する。データが読み出された時、暗号化エンジン52は、読み出されたデータの署名を計算して、保存された署名を比較することによって、データの完全性を検証することができる。秘密鍵ユニット56は、暗号化エンジン52によって用いられる1つ以上の秘密鍵を保持する。
【0030】
テストモードで動作している時、メモリコントローラ32は、セレクタ48を構成し、暗号化エンジン52の代わりに、テスト読み出し、および/または、(以下、/)書き込み(R/W)ユニット60を不揮発性メモリ40と相互接続する。よって、テストモードでは、フラッシュメモリとホスト間で交換され得る情報は、テストR/Wユニット60によって制御される。
【0031】
いくつかの実施形態では、テストモードでフラッシュメモリにデータを書き込む時、R/Wユニット60は、所定のテストパターン64の小セットに属するデータワードだけをフラッシュメモリに書き込むことができる。また、R/Wユニット60は、どんなテストパターン64にもマッチしないメモリインターフェース34から受けたどんなデータも許可されたテストパターンの1つに変換する。結果、権限のないユーザーは、有意情報をフラッシュメモリに書き込むことができず、フラッシュメモリに保存された慎重な情報を変更することができない。
【0032】
メモリデバイス24がテストモードにあり、不揮発性メモリ40からデータを読み取る時、R/Wユニット60は、読み出されたデータのエラーをチェックする。R/Wユニット60は、エラーに関する情報を符号化し、エラーに関する重要な情報だけが公開され、メモリインターフェース34を介して符号化された情報をホストコンピュータ28に提供するため、保護されていないリンク38を介して最小かつ重要な情報だけを明示する。
【0033】
いくつかの実施形態では、メモリデバイス24のテストは、フラッシュメモリに保存された、いくつかのデータに対して一方向関数の結果を計算することに基づいている。「一方向関数」という用語は、(a)データの変化は、非常に高い可能性で関数の結果に変化を生じさせ、(b)データは、その結果から復元されることができない、という2つの基準を満たす。
【0034】
一方向関数の実施は、一般的にR/Wユニット60内で完成されるが、暗号化エンジン52の一部、または2つの間で分けられる可能性がある。ホストがメモリデバイスにデータを保存した時、R/Wユニット60は、データに沿って保存し、ホストにそのデータに適用された一方向関数の結果を戻す。また、ホストは、それぞれの一方向関数の結果を計算し、その結果をホストのローカルメモリに保存する手段を含む。
【0035】
テストの時、ホストがR/Wユニット60に一方向関数の期待の結果を提供してデータを読み返すと、R/Wユニット60は、読み出されたデータに対して一方向関数を再計算し、期待の結果と比較する。2つの結果がマッチした場合、データは、高い可能性で、データは正確に読み出されたものとされる。R/Wユニット60は、ホストコンピュータ28に比較結果だけを、または一方向関数の再計算された結果だけを出力することができる。
【0036】
いくつかの実施形態では、R/Wユニット60は、更に再計算された結果と比較するために、R/Wユニットが一方向関数の期待の結果を受ける回数の追跡を維持する。追跡された回数が所定のしきい値を上回る時、総当たり攻撃を示し、デバイスは、メモリデバイスのテストモードを無効にすることによって、または他の好適な保護対策を取ることによって、そのような攻撃から保護することができる。
【0037】
いくつかの実施形態では、R/Wユニット60は、秘密鍵ユニット56がインストールされたかどうかを検出する手段を含み、更に以下の実施形態において記述されるように、秘密鍵および/または他の慎重な情報が消去されるまでメモリのテストを無効にすることができる。
【0038】
図1のメモリデバイス24の構成は、例示的な構成であり、単に概念を明確にするために選ばれている。もう1つの実施形態では、他の好適なメモリデバイスの構成も用いられることができる。メモリデバイス24の異なる部品、例えばR/Wユニット60および暗号化エンジン52がどの好適なハードウェア、例えば特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)を用いても実施されることができる。いくつかの実施形態では、メモリデバイス24のいくつかの部品は、ソフトウェアを用いて、またはハードウェアとソフトウェアの部品の組み合わせを用いて実施されることができる。
【0039】
いくつかの実施形態では、システム20の特定の部品、例えばホストコンピュータ28またはメモリコントローラ32の部品は、ソフトウェアにプログラムされ、ここに記述される機能を実行する汎用プロセッサを含むことができる。ソフトウェアは、例えばネットワークを介して電子フォームでプロセッサにダウンロードされるかまたは、代替的にまたは付加的に、一時的でない有形の媒体、例えば磁気、光学、電子メモリなどに提供および/または保存されることができる。
【0040】
メモリのセキュアテスト
図2は、本発明の実施形態に応じた書き込みテストパターンを保護する方法を図式的に示したフローチャートである。図2の方法では、メモリデバイスがテストモードで動作するものとする。更に、不揮発性メモリ40が32ビットデータの部品を保存し、そのテストパターン64が4つの32ビットパターンから成るものとし、その値は下記の表1に表される。表1のテストパターンのどれでも、偶数のビット位置にある全てのビットは、第1のビット値を有し、奇数のビット位置にある全てのビットは、第2のビット値を有する。
【0041】
【表1】
【0042】
受信ステップ100で開始する方法では、R/Wユニット60を用いてホストコンピュータ28から書き込まれるデータワードを受信する。テストモードでは、データワードは、一般的にテストパターン64に属していなければならない(例えば、データワードは上記の表1のパターンの1つと等しい)。もう1つの実施形態では、直接データワードを受信する代わりに、R/Wユニットは、ホストから、書き込まれるデータワードを含む命令を受信する。
【0043】
チェックステップ104では、R/Wユニット60は、受信したデータワードがテストパターン64のどれかにマッチするかどうかをチェックする。データワードが全ての有効なテストパターンと異なる場合、R/Wユニットは変換ステップ108でデータワードを有効なテストパターンに変換する。でなければ、R/Wユニットは、データワードを無変換のままにする。注意するのは、両ケースでは、R/Wユニットは有効なテストパターンを出力することである。いくつかの実施形態では、受信したデータワードがどのデータパターンともマッチしない時、メモリデバイスはデータワードまたはこのデータワードを含む命令を無視する。
【0044】
R/Wユニット60は、受信したデータワードを有効なパターンに変換するどの好適な方法も用いることができる。いくつかの実施形態では、変換を実行するために、R/Wユニットは、まず、受信したデータワードの32ビットの中から代表的な偶数ビットおよび代表的な奇数ビットを選ぶ。R/Wユニットは、例えば、受信したデータワードの最上位有効ビットとその隣接ビット、または最下位有効ビットとその隣接ビットのような、どの好適な偶数および奇数の代表的なビットも選ぶことができる。次いで、R/Wユニットは、偶数次(偶数桁)(even−ordered)のビットを偶数の代表的なビットと交換し、且つ奇数次(奇数桁)(odd−ordered)のビットを奇数の代表的なビットと交換することによって、受信したデータワードを有効なテストパターンに変換する。一般的に言うと、R/Wユニットは、受信したデータワードをデータワードのビットのどの好適なサブセットでも選び、データワードの残りのビットを選ばれたサブセットの周期的な複製と代替することによって、有効なテストパターンに変換することができる。
【0045】
1つの実施形態では、ステップ108において、R/Wユニット60は、最上位有効ビットとその隣接ビットの2進値を15倍複製することによって、データワードを有効なパターンに変換する。例えば、R/Wユニットは、Xが「0」または「1」でもよい2進値を示す32ビットのデータワード“00XX…XXXX”をパターン“0x00000000”に変換し、ワード“01XX…XXXX”をパターン“0x55555555”に変換する(2進数「0101…01010101」)。
【0046】
保存ステップ112では、R/Wユニット60は、上述の有効なテストパターンに等しいステップ108の出力を不揮発性メモリ40に書き込み、この方法が終了する。
【0047】
図2に記述された書き込み方法は、権限のないユーザーが、保護された情報を読み出すまたは操作する、或いは他のダメージをデバイスに与えようとした場合、有意情報をメモリに書き込むことから防ぐ。
【0048】
図3は、本発明の実施形態に応じたメモリデバイスをテストする方法を図式的に示したフローチャートである。この方法は、上述の図2の方法を用いてメモリを書き込んだ後、または図2の方法と独立に実行されることができる。図3の説明は、パターン“0x55555555”(2進数「0101…01010101」)が予めフラッシュメモリに書き込まれた数値例を伴う。フローチャートの種々のステップに対応する更なる各々の数値結果は、下記の表2で表される。
【0049】
読み出しステップ200では、この方法は、不揮発性メモリ40に保存されるワードを読み出すR/Wユニット60で開始する。いくつかの実施形態では、R/Wユニットは、ホストからの各々の命令(図示せず)の受信に応じて、ステップ200を実行し、メモリの1つ以上の位置を読み出す。ステップ200で読み出される32のビットのワードのどれも、正しい、または誤りであり得る。表2の例では、読み出されたワードは、21のエラーを含むものとし、かつ予め書き込まれたパターン“0x55555555”を読む出す代わりに、R/Wユニット60は、R_WORD=0x93209A6Aを読み出す。
【0050】
読み出し変換ステップ204では、R/Wユニット60は、R_WORDをテストパターン64の中の1つに変換する。実施形態では、前記変換は、上記の各々のステップ104と108で記述されたチェックと条件変換に類似している。表2の例では、R_WORDの最上位有効ビットとその隣接ビットは、「10」に等しいため、R_WORDはパターンR_PATTERN=0xAAAAAAAAに変換される。
【0051】
エラー抽出ステップ208では、R/Wユニット60は、32ビットのビット単位のXOR(排他的論理和、Exclusive OR)演算を用いて、R_WORDとR_PATTERNとを比較し、R_ERRORSで表示される32ビットワードのエラーを生成する。注意するのは、R_WORDがエラーを含まない時、R_ERRORSはゼロワードに等しいことである。
【0052】
MSエラー抽出ステップ212では、R/Wユニットは、MS_ERRORS_BITで表示される32ビットワードを抽出し、R_ERRORSのMS誤りビットの位置で、単一の「1」ビットを含む。例えば、R/Wユニット60は、全てのMS_ERROR_BITワードを消去することができて、次いで、R_ERRORSで見つかった左端の非ゼロビットの位置で、「1」ビットをセットする。表2の例では、MS_ERROR_BIT=0x20000000である。いくつかの実施形態では、R/Wユニット60は、MS誤りビットに関する明示的な情報を提供せず、ステップ212は省略されてもよい。
【0053】
更にステップ212では、R/Wユニット60は、最下位(LS)ビット(あれば)を含み、LS_ERRORS_BITで表示される32ビットワードを抽出する。LSエラービットを除き、LS_ERROR_BITSはR_ERRORSに等しい(例えば、R_ERRORSとLS_ERROR_BIT間にビット単位のXOR演算で計算される)。表2の例では、LS_ERROR_BITS=0x198A30C0である。
【0054】
エラー符号化ステップ216では、R/Wユニット60は、エラーの総数がまとめられているが、誤りビットの実際の位置が明示されていないエラーから、LS_ERROR_BITSのエラーを32ビットワードに符号化する。R/Wユニット60は、ここで記述されるLS_ERROR_BITSの偶数と奇数のビットの位置を各々処理する。後に続く説明では、偶数および奇数の「1」ビットは、32ビットワードのビット位置または場所が偶数または奇数である「1」ビットを各々指している。
【0055】
ステップ216で偶数の「1」ビットを処理するために、R/Wユニット60は、LS_ERROR_BITSの偶数の「1」ビットを最右端の偶数の有効な位置(即ち、消去された)に移動させる。この動作の結果は、EVN_SHIFT_ERRORSで表示され、フォーム000・・・010101を有し、1の数は、LS_ERROR_BITSの偶数の「1」ビットの数と等しい。表2の例では、LS_ERROR_BITSは、4つの偶数の「1」ビットを含むため、EVN_SHIFT_ERRORS=0x00000055である。
【0056】
同様に、奇数の「1」ビットを処理するために、R/Wユニット60は、LS_ERROR_BITSの奇数の「1」ビットを最右端の奇数の有効な位置に移動させる。この動作の結果は、ODD_SHIFT_ERRORSで表示され、フォーム000・・・101010を有し、1の数は、LS_ERROR_BITSの奇数の「1」ビットの数と等しい。表2の例では、LS_ERROR_BITSに6つの奇数の「1」ビットを有するため、ODD_SHIFT_ERRORS=0x00000AAAである。
【0057】
注意するのは、ワードEVN_SHIFT_ERRORSとODD_SHIFT_ERRORSは、エラーの数に関する情報を伝えるが、それによってはエラーの真の位置は回復できない。
【0058】
エラー符号化ステップ220では、R/Wユニット60は、ステップ212のMSエラービット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に送る。
【0059】
上述の実施形態では、R/Wユニット60は、R_PATTERNにビット単位のXORを2回行っており、1回目は、ステップ208でエラーを抽出している時、2回目は、ステップ220で、エラーを符号化コード化している時に行う。また、2回のXOR演算を行っている間、偶数と奇数の「1」ビットは、他の各々の偶数と奇数の位置に再配置される。注意するのは、R_WORDの最上位有効ビットとその隣接ビットがエラーを含む場合、R_PATTERN値は、保存された実際のパターン値と異なる。この場合、R_ERRORSの誤りおよび正しいビットの役割は、スイッチされるが(即ち、ゼロは誤りビットを示し、1は正しいビットを示す)、ステップ220でのXOR演算は、これらの役割を順にスイッチバックする。
【0060】
上述の実施形態では、R/Wユニットは、MSエラービットの位置を保持し、LSビットエラーを最右端の有効な位置にシフトさせる。よって、この方法はMSエラービットの位置を保持するが、LSエラービットに対しては、R/Wユニットは、それらの実際の位置を明示せずに、エラー数を出力する。
【0061】
以下に記述されるステップは、メモリデバイスから、上述のステップ220の結果ENCODED_ERRORSを受けた後に、ホストコンピュータ28によって実行される。比較ステップ224では、ホストは、ENCODED_ERRORSと期待されるテストパターン(W_PATTERN)とを比較する。ホストは、ビット単位のXOR演算を用いてENCODED_ERRORSとW_PATTERN間に比較を行うことができる。比較結果は、EST_ERRORSで示され、表2の例では、EST_ERRORS=0xDFFFF500である。
【0062】
エラー復号ステップ228では、ホストは、各々の読み出しエラーに関するEST_ERRORS情報を抽出する。本実施形態では、ホストは、MSエラー、およびエラーの全数の正確な位置を抽出し、MSエラーは、最左端の位置に位置され、全部で21のエラーがある。
【0063】
【表2】
【0064】
図3に記述のテスト構成は、例示的なものであり、他のテスト構成も用いられることができる。例えば、いくつかの実施形態では、ホストは、期待のパターンをメモリデバイスに送信し、そのパターンを保存された値と比較し、あれば、ホストに読み出しエラーに関する符号化情報を戻す。
【0065】
上述の実施形態では、読み出しエラーに関する符号化情報は、MSエラーの正確な位置、およびエラーの全数を含む。もう1つの実施形態では、情報は、MSエラーの位置、またはエラーの全数のみを含む。また、エラーの情報は、MSエラー以外の位置(例えばLSエラーの位置)、および/または複数エラーの位置を含むことができる。
【0066】
上述の実施形態は、上記表1に示された4つのテストパターンを用いて実施されている。しかしながら、もう1つの実施形態では、他のどの好適なセットの有効なパターンも用いられることができる。例えば、パターン数は、4つ以外でもよい。もう1つの実施形態として、パターンの値は、上記の表1のパターンと異なってもよい。
【0067】
図3の方法では、誤りビットは、最右端の偶数または奇数の有効な位置にシフトされる。代替的にまたは付加的に、誤りビットは、最右端の位置でない偶数または奇数の有効な位置にシフトされることができる。例えば、単一のエラーがLSビット位置で生じた場合、このエラービットは他のどの奇数ビット位置に再配置されることができる。
【0068】
図3の方法は、ワードサイズが32ビットのメモリをテストするのを説明しているが、前記方法は、他のどの好適なワードサイズにも適用される。
【0069】
一方向関数に基づくセキュアテスト
図4は、本発明の実施形態に応じた一方向関数を用いてメモリデバイスをテストする方法を図式的に示した図である。図4の方法は、書き込み位相と読み出し位相を含む。書き込み位相では、ホストは、テストデータをメモリデバイスのメモリ領域260に書き込む。ホストは、テストデータに対して一方向関数を用いる期待の結果を所有し、且つR/Wユニット60が書き込まれたデータに対して同じ一方向関数を計算する手段を含むものとする。
【0070】
ホストコンピュータおよびR/Wユニット60は、入力Aを提供する特性を有するどの好適な一方向関数F(・)も用いることができ、B=F(A)は計算し易いが、結果Bより、Aを再現するのは、実現不可能である。また、2つの異なる入力AおよびA’とすると、F(A)=F(A’)である可能性は非常に低い。例示的な一方向関数は、暗号化ハッシュ関数(cryptographic hash functions)SHA−1とSHA−2を含む。
【0071】
読み出し位相では、メモリデバイスは、メモリ領域MEM_Aに保存されたデータに変化が生じたかどうかをチェックする。MEM_A’で示されたメモリ領域268は、MEM_Aと同じメモリ領域である(即ち、同じメモリアドレスを含む)が、エラーが原因で、メモリ領域268の内容は、メモリ領域260に書き込まれた元の内容と異なる可能性がある。
【0072】
いくつかの実施形態では、MEM_Aのデータの完全性をテストするために、R/Wユニットは、F(MEM_A’)を計算し、その結果をホストによって提供された期待の結果のF(MEM_A)と比較する。ホストは、テストデータを書き込んだ後、直ちに、または他の好適な時に読み出し位相を初期化することができる。F(MEM_A’)がF(MEM_A)と等しい時、データの完全性は、高い可能性がある。R/Wユニット60は、完全性確認テストの2進数の通過/失敗結果だけをホストコンピュータ28に提供する。このテスト方式は、2進数の通過/失敗結果だけを明示している時、データそのものでなく、データのサインを比較することによって、テストデータが正しく書き込まれたかどうかをチェックする。また、暗号法論的には強力な一方向関数を用いることは、攻撃者が保存された内容を推測することを不可能にする。
【0073】
権限のない攻撃者は、多くの異なるバージョンの期待の一方向関数の結果を送る可能性があり、正確なものを発見することを試みる。実施形態では、R/Wユニット60は、この試みの数の追跡を続け、この数が所定のしきい値を超えた場合、R/Wユニットは、好適な保護措置、例えばデバイスのテストモードを無効にするなどの措置を取る。
【0074】
秘密鍵を消去することによるセキュアテスト
いくつかの実施形態では、メモリデバイス24は、秘密鍵がインストールされていなければ、メモリテストを実行する。これらの実施形態では、メモリデバイスがテストモードで動作されるように構成されるが(例えば、モード配置ユニット44を用いる)、秘密鍵がインストールされていることを検出した場合、メモリデバイスは、秘密鍵を含む全てのメモリが消去されるまでテストを無効にする。また、秘密鍵、および場合によって制限される重要なデータを保存するメモリ領域が消去されると、メモリデバイスにテストをさせることができる。
【0075】
上述のシステム20の実施形態は、例示的なものであり、説明のためのものである。もう1つのテストシステムでは、他の好適な実施形態も用いられることができる。例えば、上述のさまざまな実施形態は、個別に説明されているが、他のテストシステムが構成され、2つ以上の上述の実施形態を同時に実行することもできる。
【0076】
ここで述べられる実施形態は、主に非揮発性メモリのセキュアテストに対応し、ここに述べられる方法およびシステムは、他のアプリケーション、例えば、どのサイズと技術の保存システムのセキュアテストに用いられることもできる。
【0077】
上述の実施例は、本明細書中に記述される発明を限定するものでなく、あらゆる局面において例示的であると考えられる。よって本発明の範囲は、前述の説明によってではなく、添付の請求の範囲によって示され、請求の範囲と等価な意義と範囲内にある全ての変更は、この中に含まれることが意図される。
【符号の説明】
【0078】
20 システム
24 メモリデバイス
28 ホストコンピュータ
32 メモリコントローラ
34 メモリインターフェース
38 リンク
40 不揮発性メモリ
44 モード配置ユニット
48 セレクタ
52 暗号化エンジン
56 秘密鍵ユニット
60 テスト読み出し/書き込み(R/W)ユニット
64 テストパターン
260、268 メモリ領域
図1
図2
図3
図4