(58)【調査した分野】(Int.Cl.,DB名)
少なくとも1つの前記混合ステージ中の各前記ガロア体乗算器は、前記入力ビット又は前の混合ステージからの複数の被乗算ビットを受け取り、更に、相応する混合キーを受け取るよう構成され、そのうち、前記混合キーは、リモート機器中の対応する混合キーのガロア体乗算逆数であり、且つ前記リモート機器は、前記通信リンクの相対側に位置し、そのうち、前記論理回路は、各前記ガロア体乗算器中において、前記被乗算ビットを相応する前記混合キーに乗算することによって前記混合操作を行うよう構成される請求項2に記載のデータ保護装置。
前記論理回路は、前記入力ビットをガロア体中の相応し且つ非定数の混合キーに乗算することによって前記混合操作を行うよう構成される請求項1に記載のデータ保護装置。
前記論理回路は、相応する前記ガロア体中の前記混合キーを定数要素に乗算するか、前記定数要素のガロア体乗算逆数に乗算することによって、前記通信リンクの相対側のリモート機器と相互に協調して前記混合キーを繰り返し更新し、任意の与えられた時間において、前記混合キーが前記リモート機器に使用される対応混合キーの前記ガロア体乗算逆数となるよう構成される請求項4に記載のデータ保護装置。
少なくとも2つの相互接続される混合ステージを提供するステップを含み、そのうち、少なくとも最初及び最後の混合ステージを含み、且つ各前記混合ステージは、複数のガロア体演算器を含み、
前記混合操作を行うステップは、前記最初の混合ステージの前記ガロア体乗算器において、前記入力ビットを分割し、前記最後の混合ステージの結果を組み合わせて前記出力ビットを生成するステップを含む請求項8に記載のデータ保護方法。
【発明を実施するための形態】
【0012】
本発明の前記特徴及び利点を更に分かり易くする為、以下に、実施例を挙げ、図面を合わせて詳細に説明する。
【0013】
[概要]
多くのセキュアストレージシステムにおいて、ホストコンピュータは、通信リンク又はバスを介してメモリデバイスと通信する。通信リンクは、容易に各種パスワード攻撃を受ける可能性がある。本文において、本発明の実施例は、メモリデバイスのインタフェースを保護し、パスワード攻撃を受けることを回避する改善方法及びシステムを提供する。
【0014】
原則上、双方向にリンクを介して交換されるデータに対して暗号化を行い、ホストコンピュータ及びメモリデバイスの間のリンクを保護することができる。読み取り方向において、メモリデバイスは、暗号化データをホストコンピュータへ送信し、書き込み方向において、メモリデバイスは、ホストコンピュータから受け取った暗号化データを受信する。各通信方向において、メモリデバイス及びホストコンピュータのうちの一者は、送信側であり、他者は、受信側である。
【0015】
例えば、ホストコンピュータのセントラルプロセッサユニット(CPU)は、メモリデバイスからリアルタイム抽出したコードを実行する時、メモリアクセス時のレイテンシ(latency)が低いことが重要である。レイテンシの高いブロック暗号化に対して、レイテンシ及び複雑性を減少させる為、通常、ストリーム暗号技術を使用してリンク介して伝送されるデータに対して暗号化を行う。送信側において、ストリーム暗号化装置が擬似ランダムシーケンスにより平文データに対して暗号化を行い(例えば、ビット単位の排他的論理和(bitwise XOR)演算)、暗号文(cipher text)を生成し、受信側において、復号化装置が同一シーケンスにより暗号文に対して復号化を行い、平文データを復元する。
【0016】
複雑性及びレイテンシが低いという点について述べれば、ストリーム暗号は、有利であるが、ストリーム暗号は、容易にパスワード攻撃(例えば、ビット位置に基づく攻撃)を受ける可能性がある。例えば、承認されていない攻撃者は、メモリデバイスインタフェースの1つ又は複数の固定位置のビットと対応する一定の周期モードに基づいてストリーム暗号データの値を監視又は変更し、システムのセキュリティの破壊を試みることができる。本文中に記載する実施例は、ストリーム暗号化装置の上記脆弱性を有効に補うことができる。
【0017】
読み取り方向において、メモリデバイスは、送信端であり、且つホストコンピュータが受信端である。幾つかの実施例において、ストリーム暗号化装置がマスキング(masking)を行う前、メモリデバイスは、秘密マッピングキーを使用して平文に対して暗号混合操作を行う。前記混合操作は、平文データビットを混合ビットにマッピングし、マッピングキーを知らず且つ承認されていないユーザが平文データビットの値及び/又は位置を推測することができないようにする。ホストコンピュータは、復号後に逆マッピング(混合マッピングに相対する)を行い、混合ビットに対して脱混合を行い且つ平文データを復元する。書き込み方向において、ホストコンピュータ及びメモリデバイスは、それぞれ送信端及び受信端であり、同様の処理フローを応用する。
【0018】
実施例において、暗号混合は、ガロア体(Galois-Field,GF)算術演算に基づくものである。以下の記載において、算術演算は、与えられるガロア体中の要素に応用することができ、且つ与えられるガロア体は、幾つかの基本的な生成多項式を使用することによって生成されることができると仮定する。開示される技術は、任意の有効な生成多項式に適用されるので、以下では、生成多項式に関する詳細を省略する。従って、用語『乗算』(multiplication)が指すものは、与えられるガロア体中の要素間の相乗であり、且つ与えられる要素の『乗算逆数』(multiplicative inverse)という用語が指すものは、この与えられる要素と相乗する(ガロア体算術演算を使用する)時、前記ガロア体中で定義される単位要素を生成する要素である。同様に、用語『冪』(power)が指すものは、与えられるガロア体中の要素自身の繰り返し相乗である。
【0019】
例えば、送信端の混合ユニットがNビットの平文データDXを受信すると仮定する。実施例において、Nが32であるが、代替実施例において、Nは、任意の適合する正の整数を含むことができる。混合ユニットは、Nビットガロア体乗算器を含み、且つ前記Nビットガロア体乗算器は、Nビットの平文データDXをNビット秘密マッピングキーKに乗算し、Nビットの混合データMXを出力し、即ち、MX=DX*Kであり、そのうち演算符号『*』は、相応するガロア体中の乗算を表す。
【0020】
受信端は、脱混合ユニットを含み、前記脱混合ユニットは、Nビット混合データMXを受け取り、且つ類似のNビットガロア体乗算器を使用して混合データMXを逆マッピングキーに乗算し、前記逆マッピングキーは、マッピングキーKの乗算逆数に等しく、即ち、DX=MX*K
-1であり、そのうち、K
-1は、逆マッピングキーである。
【0021】
幾つかの実施例において、各送信側及び受信側は、通信リンクの相対側の他方と相互に協調し、混合キーを繰り返し更新し、任意の与えられた時間において、一方が使用する混合キーは、他方が使用する対応混合キーのガロア体乗算逆数である。
【0022】
幾つかの実施例において、混合ユニットは、線形フィードバックシフトレジスタ(Linear Feedback Shift Register,LFSR)を使用して秘密マッピングキーKを生成し、且つ脱混合ユニットは、もう1つの線形フィードバックシフトレジスタを使用して逆マッピングキーK
-1を生成する。混合及び脱混合に用いる線形フィードバックシフトレジスタは、相応する秘密値R及びR
-1に初期化され、且つ相互に同期してシフトを行い、送信側及び受信側における相応するマッピングキーが相互の乗算逆数に等しくなるようにする。
【0023】
ガロア体の任意の要素を計算するガロア体乗算逆数は、大量の計算資源を必要とする。実施例において、脱混合ユニットの逆初期値R
-1を計算する複雑性を低減する為、初期値Rを2の負でない整数r乗、即ち、R=2
rに制限することができる。脱混合ユニットは、固定された予め算出された値2
-1を保留し、2
-1のr乗により逆初期値R
-1を計算し、即ち、R
-1=(2
-1)
rである。一般の乗算逆数と比較し、冪演算による逆初期値R
-1を計算する複雑性を顕著に低減する。
【0024】
混合キーは、線形フィードバックシフトレジスタを使用して生成することに制限しない。代替実施例において、任意のその他の適合する手段を使用して送信端及び受信端中の混合キーに対して初期化及び更新を行うことができ、任意の時間において、送信端及び受信端の混合キーが互いにガロア体乗算逆数となるようにする。また、混合キーは、相応するガロア体中の2及び2
-1以外の定数の整数乗として構成されることもできる。
【0025】
幾つかの実施例において、混合ユニットは、2つの混合ステージによって32ビットの平文データを混合し、各混合ステージは、それぞれ4個の8ビットガロア体乗算器を含む。第1ステージにおいて、4つのガロア体乗算器中の各1つが32ビットの平文データから取り出した8ビット入力データを相応する8ビットマッピングキーに乗算する。物理的大きさ、実施複雑性及びレイテンシにとっては、8ビット乗算器(32ビット乗算器でなく)を使用する方が有利である。
【0026】
相互接続方式で第1ステージが出力した32ビットを4個の8ビットにマッピングし、且つこの4個の8ビットをそれぞれ第2ステージの4個のガロア体乗算器に入力する。第2ステージのガロア体乗算器中の各1つは、その8ビットを相応する8ビットのマッピングキーに乗算して8ビット混合出力を生成する。続いて、第2ステージの4個の8ビット出力を互いに組み合わせて32ビット混合データ出力を生成する。
【0027】
幾つかの実施例において、混合ユニットは、64ビット線形フィードバックシフトレジスタを使用して第1及び第2混合ステージで8個のマッピングキーを生成する。混合ユニットは、64ビット線形フィードバックシフトレジスタの出力を2つの32ビットキーに分割し、前記2つの32ビットキーは、それぞれ4個の8ビットマッピングキーに更に分割される。
【0028】
受信端において、脱混合ユニットは、2つの脱混合ステージを含み、各脱混合ステージは、それぞれ4個の8ビットガロア体乗算器を含む。脱混合ユニットは、更に、混合ユニットの線形フィードバックシフトレジスタと同期動作する64ビット線形フィードバックシフトレジスタを含み、前記64ビット線形フィードバックシフトレジスタは、8個の8ビット逆マッピングキーを出力し、且つ前記8個の8ビット逆マッピングキーは、それぞれ混合ユニットの相応するマッピングキーの乗算逆数に等しい。実施例において、両側の線形フィードバックシフトレジスタは、同一の擬似ランダムシーケンスを生成し、且つ脱混合側において、例えば、相応するガロア体中でルックアップテーブルを使用し、32ビット線形フィードバックシフトレジスタが出力する各8ビットのサブグループに対して逆変換を行う。4個の8ビットガロア体要素を逆変換するのに必要なテーブルサイズ及び保存空間(1K×8ビット)は、1つの32ビットガロア体要素を逆変換するのに必要なルックアップテーブル(4G×32ビット)より明らかに小さい。
【0029】
脱混合ユニットは、2つの脱混合ステージにおいて、ガロア体乗算を応用し、且つ更に第1及び第2脱混合ステージの間で逆相互接続方式を応用し、平文データを復元する。
【0030】
開示する技術において、ストリーム暗号化の前に暗号混合を実行する。前記混合操作は、平文データビットを混合ビットにマッピングし、平文ビットの実際の値及び位置を隠す。ガロア体乗算器を使用して混合操作を実施することは、ただ複雑性及びレイテンシを僅かに増加させるのみである。
【0031】
[システムの説明]
図1は、本発明の実施例に基づいて示されるセキュアストレージシステム20のブロック図である。セキュアストレージシステム20は、メモリデバイス24を含み、前記メモリデバイス24は、ホストコンピュータ28のデータをメモリアレイ32中に保存する。メモリデバイス24は、任意の適合するタイプのデータ、例えば、ユーザデータ、実行可能なコード及びセキュアシステム状態を保存することができる。システム状態は、多種の情報、例えば、システム起動時間、システムイベント及びエラーログ情報及びセルフテスト結果を含む。データは、暗号化又は非暗号化形式でメモリアレイ32中に保存することができる。
【0032】
図1の実施例において、メモリデバイス24は、不揮発性メモリ(Nonvolatile Memory,NVM)を含む。代替実施例において、メモリデバイス24は、任意の適合するタイプのメモリ、例えば、リードオンリーメモリ(Read Only Memory,ROM)、ランダムアクセスメモリ(Random Access Memory,RAM)又は任意のタイプの不揮発性メモリ(例えば、フラッシュメモリ)を含むことができる。ホストコンピュータ28は、相応する通信リンク(図示せず)を使用して、リンク34を介してメモリデバイス24と通信する。
【0033】
メモリデバイス24に用いる保存命令は、少なくともデータ読み取り、書き込み、修正及び消去を含む。ホストコンピュータ28は、リンク34を介して相応する通信信号を印加することによって保存操作を行う。また、ホストコンピュータ28のセントラルプロセッサユニット36は、リンク34を介してコード命令及びデータを読み取り、メモリデバイス24からリアルタイム取得したコードを実行する。
【0034】
幾つかの実施例において、リンク34は、パラレルリンク又はバスを含み、これらパラレルリンク又はバスは、単独のデータライン、アドレスライン及び制御ラインを有する。その他の実施例において、リンク34は、シリアルリンクを含み、且つそのうちのデータ、アドレス及び制御情報は、共通の実体的接続において連続的に伝送される。この種のシリアルインタフェースは、例えば、シリアルペリフェラルインタフェース(Serial Peripheral Interface,SPI)、内蔵集積回路(Inter-Integrated Circuit,I2C)、ユニバーサルシリアルバス(Universal Serial Bus,USB)、マルチメディアカード(Multimedia Card,MMC)インタフェース及びセキュアデジタル(Secure Digital,SD)インタフェースを含む。
【0035】
本実施例において、ホストコンピュータ28及びメモリデバイス24がそれぞれ単独の半導体ダイ(die)を含み、且つ前記2つのダイが共通のパッケージ上又は単独のパッケージ上に位置すると仮定する。更に、承認されていない攻撃者が各ダイ内の秘密情報を直接獲得することができないが、パッケージを開いてリンク34の信号を獲得し、システムのセキュリティの破壊を試みることができると仮定する。承認されていないユーザは、リンク34を介して実行を試みる主なパスワード攻撃は、以下を含む:
・動作中に伝送される情報を改竄し、特定ビット位置においてパスワード攻撃を試みる。
・メモリデバイス中に保存された秘密情報を獲得する。
・メモリデバイス中に保存された情報を改竄する。
・メモリデバイスに承認されていない命令を実行させる。
・システム状態に関する情報を獲得する。
・動作中にシステムの状態を変更する。
・リバースエンジニアリングを実行し、システムの機能性を理解する。
【0036】
開示する実施例において、ホストコンピュータ28及びメモリデバイス24の間の通信は、データ操作によってそれをリンク34上で隠蔽することによって保護される。データ操作は、パスワードデータ混合及びストリーム暗号化のカスケードを含み、その詳細は、後方で説明するとおりである。従って、承認されていない攻撃者がリンク34の信号を獲得したとしても、攻撃者が上に列記したパスワード攻撃を実行することは、困難又は不可能である。メモリデバイスに対して往復するアクセス遅延及び計算複雑性にとって、データ操作は、最小の性能損失となる。幾つかの実施例において、データ操作は、データ暗号化及びパスワードデータ混合を含み、その詳細は、後方で説明するとおりである。
【0037】
メモリデバイス24及びホストコンピュータ28は、それぞれ相応する秘密バインドキー40,44を使用して相互に認証し合い、且つ認証失敗時に秘密情報に対する承認されていないアクセスを防止する。バインドキー40,44の大きさは、十分な暗号化強度を提供するに足るまで大きいもの、例えば、128ビットキー、或いはそれ以上である。幾つかの実施例において、ホストコンピュータ28、メモリデバイス24又はその二者は、対称鍵共有プロトコル(symmetric key sharing protocols)を使用してバインドキー40,44を生成し、バインドキー40,44を同一にさせる。その他の実施例において、ホストコンピュータ28及びメモリデバイス24は、非対称鍵共有プロトコル(asymmetric key sharing protocols、公開-秘密鍵供給プロトコル(public-private key sharing protocols)とも称される)を採用し、そのうち、バインドキー40,44は、通常異なるものである。
【0038】
幾つかの実施例において、バインドキー40,44は、システムのライフサイクル全体において不変なものである。或いは、先ずバインドキー40,44及び任意のその他の秘密情報をホストコンピュータ28及びメモリデバイス24において抹消し、続いてバインドキー40,44を新たな秘密値として再構成することによってキー40,44の構成を時々置き換えることができる。
【0039】
幾つかの実施例において、ホストコンピュータ28は、ローカルにおいてバインドキー40を生成し、且つバインドキー40を伝送し、それをメモリデバイス24の不揮発性位置に保存させる。例えば、実施例において、ホストコンピュータ28は、ホストコンピュータ28のダイ内の物理特性を測定し、且つ測定結果を相応するビットシーケンスに変換し、バインドキー40(及び/又はその他の秘密情報)の秘密値として用いる。この種の物理特性は、例えば、ダイ内の幾つかの遅延パス、ダイ内の半導体ゲートの状態を反転させる閾値電圧及びダイ内のリング発振器の自己発振周波数を含むことができる。
【0040】
実施例において、ホストコンピュータ28、メモリデバイス24又はその二者は、暗号ダイジェスト(cryptographic digest)を使用してバインドキー40の有効性(例えば、通電時)を確認し、そのうち、暗号ダイジェストは、バインドキー40を介して算出され、バインドキー40と共にメモリデバイス24中に保存される。
【0041】
上記のように、データを操作することによって、それをリンク34において隠蔽し、データは、リンク34を介して安全に交換されることができる。明確にする為、
図1では、ただ読み取り方向(即ち、ホストコンピュータ28は、メモリアレイ32中に保存されるデータを読み取る)の状況のみを示している。反対方向(ホストコンピュータ28からメモリデバイス24へ)におけるデータ操作は、通常、同様の方式で実施する。メモリアレイ32中に保存したデータは、暗号化されたものであるか、暗号化されていないものであることができる。
【0042】
メモリデバイス24が与えられたデータユニット(例えば、32ビットユニット又は任意のその他の適合するデータユニットの大きさ)によりデータをメモリアレイ32中に保存すると仮定する。読み取り方向において、メモリデバイス24は、メモリアレイ32から平文データDXの単位を取得する。平文データDXは、混合ユニット48に入力され、且つ前記混合ユニット48は、平文データDXに対して暗号マッピングを行い、混合データMXを生成する。ストリーム暗号器52は、続いて混合データMXを暗号化し、且つメモリデバイス24は、リング34を介して暗号データCXを送信する。以下の説明において、用語『混合』が指すのは、秘密マッピングキーを使用して入力ビットを出力ビットに暗号マッピングすることであり、このように、マッピングキーが何であるかを知らなければ、計算を介して出力ビットから入力ビットを推測することはできない。混合ユニット48中のマッピング操作及びストリーム暗号器52中の暗号操作は、秘密セッションキー56により決定され、その詳細は、以下のとおりである。
【0043】
読み取り方向において、ホストコンピュータ28は、暗号データCXを受け取り、且つ平文データDXを復元する。ホストコンピュータ28は、先ず、ストリーム復号器60を使用して暗号データCXに対して復号化を行い、混合データMXを復元し、続いて混合ユニット48の操作を逆転し、脱混合ユニット64を使用して混合データMXを脱混合することによって、平文データDXを復元する。ストリーム復号器60及び脱混合ユニット64における操作は、秘密セッションキー68により決定され、前記秘密セッションキー68は、秘密セッションキー56と一致され、メモリデバイス24により相応実行される混合及び暗号操作を適切に逆転できるよう確保する。
【0044】
書き込み方向(図示せず)において、ホストコンピュータ28は、データをメモリデバイス24中に書き込む。この種の状況において、ホストコンピュータ28は、リンク34を介してデータを送信する前にデータの混合及び暗号化を行うことができ、メモリデバイス24は、復号化及びその後の脱混合を行うことによって平文データを復元することができる。
【0045】
与えられた読み取り又は書き込み方向に対して、端から端へのデータの流れは、混合操作を逆転する脱混合、及び暗号化操作を逆転する復号化を含む。しかしながら、幾つかの実施例において、書き込み方向における混合及び暗号操作は、読み取り方向における混合及び暗号操作と異なることができる。
【0046】
秘密セッションキー56及び68は、データを操作し、それをリンク34において隠蔽することに用いられる。ホストコンピュータ28は、時に(例えば、通電時)、秘密セッションキー56及び68を再構成することができる。幾つかの実施例において、ホストコンピュータ28は、メモリデバイス24へ秘密セッションキー56の暗号化バージョンを含むセッション秘密を送信し、前記秘密セッションキー56の暗号化バージョンは、バインドキー44を使用して秘密セッションキー56に対して暗号化を行う。メモリデバイス24は、バインドキー40を使用してセッション秘密に対して復号化を行うことによって秘密セッションキー56を取得する。
【0047】
その他の実施例において、ホストコンピュータ28は、暗号化されていないセッションシード(session seed)をメモリデバイス24に送信する。メモリデバイス24及びホストコンピュータ28は、それぞれ任意の適合するパスワード演算法又は方法(例えば、セキュアハッシュアルゴリズム(SHA)又は高度暗号化標準(AES))を使用し、セッションシード及び相応するバインドキー40又は44を使用して相応する秘密セッションキー56又は68を生成する。
【0048】
ホストコンピュータ28及びメモリデバイス24は、更に、相応するパスワードシーケンスジェネレータ72及び76を含む。ストリーム暗号器52は、パスワードシーケンスジェネレータ72により生成されるビットシーケンス及び混合データMXの間において、ビット単位の排他的論理和(bitwise XOR)を応用して暗号データCXを生成する。同様に、ストリーム復号器60は、パスワードシーケンスジェネレータ76により生成されるシーケンス及び暗号データCXの間において、ビット単位の排他的論理和を応用して混合データMXを復元する。
【0049】
パスワードシーケンスジェネレータ72及び76は、それぞれ相応する秘密セッションキー56又は68に基づいて擬似ランダムシーケンスを生成し、秘密セッションキー56,68及びシステムの状態を獲得することができず且つ承認されていないユーザが実際の擬似ランダムシーケンスを予測することができないようする。パスワードシーケンスジェネレータ72及び76は、リンク34上の毎回のトランザクション(transaction)に対して新たなシーケンスを生成するか、いくつかの通信トランザクションごとに新たなシーケンスを1回生成する。
【0050】
パスワードシーケンスジェネレータ72及び76は、任意の適合する方法を用いて擬似ランダムシーケンスを生成することができる。1つの実施例において、パスワードシーケンスジェネレータ72は、ハッシュ関数(Hash Function,例えばSHA-2)及び1回の実行ごとに(又は数回の実行ごとに)徐々に増加する計数値(図示せず)を含む。パスワードシーケンスジェネレータ72は、秘密セッションキー56及び計数値によってハッシュ関数を計算し、出力シーケンスを生成する。
【0051】
もう1つの実施例において、パスワードシーケンスジェネレータ72は、秘密セッションキー、計数値及び前回のトランザクション中で伝送される平文データ(又はその一部分)によってハッシュ関数を計算し、従って、両側が何れも既知のものである。更にもう1つの実施例において、例えば、ハッシュ関数の出力の大きさが暗号化を行うに十分でない時、パスワードシーケンスジェネレータ72は、更に、ハッシュ関数の結果を線形フィードバックシフトレジスタ(Linear Feedback Shift Register,LFSR)に入力し、線形フィードバックシフトレジスタの出力を擬似ランダムシーケンスとする。
【0052】
図1中のセキュアストレージシステム20、メモリデバイス24及びホストコンピュータ28の構成は、ただ概念を明確にするための師範例の構成というのみである。代替実施例において、セキュアストレージシステム、メモリデバイス及びホストコンピュータの任意のその他の構成を使用することもできる。例えば、1つの実施例において、ホストコンピュータは、別途のメモリコントローラによってメモリデバイスと通信する。この実施例において、開示される技術を使用し、ホストコンピュータとメモリコントローラとの間の各リンク及びメモリコントローラとメモリデバイスとの間の各リンクを保護することができる。もう1つの実施例において、ホストコンピュータ自身は、メモリデバイスを管理するメモリコントローラとなる。
【0053】
メモリデバイス24及びホストコンピュータ28の相違する要素、例えば、混合ユニット48、ストリーム暗号器52、パスワードシーケンスジェネレータ72、ストリーム復号器60、脱混合ユニット64及びパスワードシーケンスジェネレータ76は、任意の適合するハードウェア、例えば、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)中に使用して実施することができる。幾つかの実施例において、メモリデバイス24及びホストコンピュータ28の幾つかの要素は、ソフトウェアを使用するか、ハードウェア及びソフトウェア要素の組み合わせを使用して実施することができる。
【0054】
幾つかの実施例において、メモリデバイス24及び/又はホストコンピュータ28の幾つかの要素、例えば、混合ユニット48及び/又は脱混合ユニット64は、汎用プロセッサを含むことができ、ソフトウェアを用い、前記汎用プロセッサに対してプログラミングを行い、本文中に記載の機能を実施する。ソフトウェアは、例えば、電子形式でネットワークを介してプロセッサにダウンロードすることができ、又は、非一時的有形メディア(例えば、磁性、光又は電子メモリ)に提供及び/又は保存されることもできる。
【0055】
図1の実施例において、ホストコンピュータ28は、単一のメモリデバイス24と通信する。代替実施例において、ホストコンピュータ(例えば、メモリコントローラ)は、複数のメモリデバイスと通信することができ、且つメモリデバイスは、それぞれ相応するバインドキー及び秘密セッションキーを有する。この種の実施例において、ホストコンピュータ又はメモリコントローラは、適合するそれぞれの秘密キーを使用して各メモリデバイスと通信する。
【0056】
前記
図1の実施例において、送信側は、データ混合後に暗号化を行い、且つ受信側は、復号化し、その後に脱混合を行う。代替実施例において、発信側において暗号化した後、混合を行い、且つ受信側において脱混合した後に復号化を行うことができる。
【0057】
以下の説明及び明細書本文において、メモリデバイス24及び/又はホストコンピュータ28の各種部材は、統一して論理回路と称する。
【0058】
[データ暗号混合の師範的実施例]
図2は、本発明に基づく実施例が示す暗号混合方法の説明図である。暗号混合は、秘密混合キーを使用して行われる入力ビットから出力ビットへの可逆マッピングに対応する。
【0059】
本実施例において、前記方法は、相応する混合ユニット48及び脱混合ユニット64により実施される暗号混合部分及び脱混合部分を含む。前記
図1に示すように、混合ユニット48の出力は、不揮発性メモリ(NVM)側で暗号化が行われ、且つホストコンピュータ側で復号化が行われ、実際に混合ユニット48により生成される混合データMXは、脱混合ユニット64に入力される。従って、実際上のデータの流れは、通常データ暗号化及び復号化を含むが、分かり易くする為、ここでは、これら要素を省略し、混合ユニット48の出力が脱混合ユニット64に入力される状況により
図2中の方法を説明する。
【0060】
図2の実施例において、混合操作は、ガロア体乗算に基づくものである。混合ユニット48は、32ビットガロア体乗算器90_1及び線形フィードバックシフトレジスタ(LFSR)94を含む。32ビットガロア体乗算器90_1は、32ビット平文データDX及び線形フィードバックシフトレジスタ94からの32ビットマッピングキーKを受信する。32ビットガロア体乗算器90_1は、相応するガロア体において32ビット平文データDXを32ビット秘密マッピングキーKに乗算し、32ビット混合データMXを生成する(即ち、MX=DX*K)。
【0061】
混合ユニット48は、線形フィードバックシフトレジスタ(LFSR)94を使用して初期秘密値に初期化する(初期値をRで示す)。初期値Rは、通常秘密セッションキーから導出されるので、送信側及び受信側の双方が何れも既知である。線形フィードバックシフトレジスタ(LFSR)94に対して行うシフトは、相応するガロア体において2倍に相応する。各1つの新たな32ビット平文データDXが入力され(又は複数毎の32ビット平文データDXが入力され)、線形フィードバックシフトレジスタ94がシフトを行い、相応する新たなマッピングキーKを生成し、従って、32ビット平文データDXを32ビット混合データに暗号化マッピングし、出力する。
【0062】
脱混合ユニット64は、混合ユニット48に対して暗号化逆マッピングを行う。脱混合ユニット64は、32ビットガロア体乗算器90_2(メモリデバイス側におけるガロア体乗算器に類似)及び線形フィードバックシフトレジスタ(LFSR_INV)98を含む。線形フィードバックシフトレジスタ(LFSR)94が初期値Rに初期化される時、線形フィードバックシフトレジスタ(LFSR_INV)98がその乗算逆数(即ち、初期値R
-1)に初期化される。また、線形フィードバックシフトレジスタ(LFSR_INV)98に対するシフトは、2
-1倍に等しい。従って、線形フィードバックシフトレジスタ(LFSR)94及び線形フィードバックシフトレジスタ(LFSR_INV)98のシフトを同期することによって、線形フィードバックシフトレジスタ(LFSR_INV)98の出力は、何れも線形フィードバックシフトレジスタ(LFSR)94の出力の乗算逆数に等しくすることができる。言い換えれば、線形フィードバックシフトレジスタ(LFSR)94が32ビット秘密マッピングキーKを出力する時、線形フィードバックシフトレジスタ(LFSR_INV)98が相応する32ビット秘密マッピングキーK
-1を出力する。32ビット混合データMXを32ビット秘密マッピングキーK
-1に乗算することによって、32ビットガロア体乗算器90_2は、32ビット混合データMXから32ビット平文データDXに復元することができる。
【0063】
実施例において、初期値Rは、任意の値を含むことができ、且つホストコンピュータ28は、任意の適合する方法を使用してその乗算逆数(即ち、初期値R
-1)を計算することができる。もう1つの実施例において、初期値R
-1を検出することに用いる計算資源は有限であり、従って、初期値Rは、R=2
rの形式に制限され、rは負でない整数である。同様に、初期値R
-1は、初期値R
-1=(2
-1)
rの形式に制限され、そのうち、相応するガロア体中の値2
-1は、例えば、ダイ設計時に予め決定することができる。冪演算を使用して乗算逆数(即ち、初期値R
-1)を計算する複雑性は、常規数字の乗算逆数を計算するよりも遥かに小さい。
【0064】
図3及び
図4は、本発明に基づく実施例に示される暗号混合の代替方法の説明図である。以下の説明において、
図1中の混合ユニット48及び脱混合ユニット64がそれぞれ
図3及び
図4中に示される相応する実施例を使用して実施されると仮定する。
【0065】
図3において、2つの混合ステージSTAGE_1、STAGE_2を使用して、暗号混合操作を実施し、前記混合ステージSTAGE_1、STAGE_2は、それぞれ4個の8ビットガロア体乗算器100を含む。混合ステージSTAGE_1、STAGE_2のガロア体乗算器は、それぞれ100_1〜100_4(#1〜#4)及び100_5〜100_8(#5〜#8)として番号付けされる。64ビット線形フィードバックシフトレジスタ(LFSR)104は、2つの32ビット秘密値K1及びK2を生成し、それぞれ混合ステージSTAGE_1、STAGE_2において、使用する。
【0066】
混合ステージSTAGE_1において、32ビット平文データDXは、4個の8ビットデータX1〜X4に分割される。また、秘密値K1は、4個の8ビットのサブキーK11〜K14に分割される。ガロア体乗算器100_1は、データX1をサブキーK11に乗算し、且つデータY1を出力する。同様に、ガロア体乗算器100_2〜100_4は、それぞれデータY2=X2*K12、データY3=X3*K13及びデータY4=X4*K14を計算する。
【0067】
混合ステージSTAGE_2において、秘密値K2は、4個の8ビットサブキーK21〜K24に分割され、前記サブキーK21〜K24は、それぞれガロア体乗算器100_5〜100_8(#5〜#8)に入力される。ガロア体乗算器100_5〜100_8(#5〜#8)は、それぞれ相応する8ビットデータZ1〜Z4を受け取る。相互接続方式で、データY1〜Y4を8ビットデータZ1〜Z4にマッピングする。
【0068】
本実施例において、相互接続方式でデータY1〜Y4をそれぞれ4個の2ビットグループに分割する。異なるデータY1〜Y4の結果に由来する4個の2ビットグループを互いに組み合わせることによって、それぞれ8ビットデータZ1〜Z4に形成する。ガロア体乗 算器100_5〜100_8(#5〜#8)は、それぞれ8ビットデータW1=Z1*K21、8ビットデータW2=Z2*K22、8ビットデータW3=Z3*K23及び8ビットデータW4=Z4*K24を計算し、これら8ビットデータW1〜W4は、続いて32ビットデータMXに組み合わせられて出力される。
【0069】
図4は、脱混合ユニット64の実施例を示し、それは、前記
図3中に示す混合ユニット48の実施例と互換性を有する。
図4に示す実施例は、2つの脱混合ステージSTAGE_3、STAGE_4を含み、それらは、それぞれ4個の8ビットガロア体乗算器100_9〜100_12(編集番号#9〜#12である)及びガロア体乗算器100_13〜100_16(編集番号#13〜#16である)を含む。脱混合ステージSTAGE_3、STAGE_4は、逆混合を行い、それぞれ混合ステージSTAGE_2、STAGE_1の相応する混合操作に相対する。
【0070】
64ビット線形フィードバックシフトレジスタ(LFSR_INV)108は、2つの32ビットマッピングキーK1_INV、K2_INVを出力する。脱混合ステージSTAGE_3において、32ビットマッピングキーK2_INVは、4個のサブキーK21
-1〜K24
-1に分割され、それは、それぞれサブキーK21〜K24の乗算逆数に等しい。同様に、脱混合ステージSTAGE_4において、32ビットマッピングキーK1_INVは、4個のサブキーK11
-1〜K14
-1に分割され、それは、それぞれサブキーK11〜K14の乗算逆数に等しい。
【0071】
64ビット線形フィードバックシフトレジスタ(LFSR)104、64ビット線形フィードバックシフトレジスタ(LFSR_INV)108は、相応する初期値に初期化され、続いて同期してシフトされ、脱混合ステージSTAGE_3、STAGE_4において脱混合を行うことに用いる8個のサブキーが混合ステージSTAGE_2、STAGE_1において混合を行うことに用いられる8個のサブキーの乗算逆数に等しい。
【0072】
実施例において、64ビット線形フィードバックシフトレジスタ(LFSR)104、64ビット線形フィードバックシフトレジスタ(LFSR_INV)108の二者は、同一に初期化され且つ同期シフトされ、それに何れも同一の32ビット値を出力させる。
図4中の8ビット逆キーは、ルックアップテーブルを使用して64ビット線形フィードバックシフトレジスタ(LFSR)104が出力する相応する8ビットグループ中から導出し、前記ルックアップテーブルは、ガロア体要素をそのガロア体乗算逆数に変換する。
【0073】
脱混合ステージSTAGE_3において、32ビット混合データMXは、4個の8ビットデータW1〜W4に分割される。脱混合ステージSTAGE_3は、Z1=W1*K21
-1、…、Z4=W4*K24
-1を計算することによってデータZ1〜Z4を復元する。脱混合ステージ64は、脱混合ステージSTAGE_3、STAGE_4の間で相互接続方式を応用し、前記
図3の混合ユニット48中に使用されるデータY1〜Y4からデータZ1〜Z4へのマッピングを逆転し、データZ1〜Z4からY1〜Y4を復元する。脱混合ステージSTAGE_4は、X1=Y1*K11
-1、…、X4=Y4*K14
-1を計算することによって8ビットのデータX1〜X4を復元する。続いて、前記4個の8ビットデータX1〜X4の結果を互いに組み合わせて32ビットの平文データDXを復元する。
【0074】
開示する技術において、ホストコンピュータ及びメモリデバイスは、セキュアリンクを介して通信する。しかしながら、提示する技術は、任意のその他の適合する各方面の通信が用いる任意のその他の適合する通信リンクを保護することに適用される。
【0075】
本文で説明する実施例は、主にセキュアメモリデバイスに対する応用であるが、本文で説明する方法及びシステムは、その他の応用、例えば、各種その他のデータ伝送の応用に用いることもできる。例えば、開示する技術は、任意の有線又は無線通信リンクを保護すること、及びファイルストレージのインタフェースを保護することに適用できる。
【0076】
以上のごとく、本発明を実施形態により開示したが、もとより、本発明を限定するためのものではなく、当業者であれば容易に理解できるように、本発明の技術思想の範囲内において、適当な変更ならびに修正が当然なされうるものであるから、その特許権保護の範囲は、特許請求の範囲および、それと均等な領域を基準として定めなければならない。