(57)【特許請求の範囲】
【請求項１】
暗号化されたデータブロックをメモリから読み出す段階と、
プロセッサが、前記暗号化されたデータブロックの前記メモリからの読み出し中に、該データブロックの１以上の記憶された判定基準に従って、該データブロックの暗号化に使用された鍵ストリームを再生成する段階と、
前記暗号化されたデータブロックの読み出しが完了した場合に、前記プロセッサが、前記生成した鍵ストリームに従って、前記暗号化されたデータブロックを復号する段階と
を備え、
前記プロセッサが前記鍵ストリームを再生成する段階は、
前記暗号化されたデータブロックを含むページに従って、前記データブロックの暗号化に使用された初期化ベクトルの初期部を特定する段階と、
前記データブロックのブロック番号に従って、前記データブロックの暗号化に使用された前記初期化ベクトルの残部を特定する段階と、
前記初期化ベクトルの前記特定した初期部、前記初期化ベクトルの前記特定した残部、および秘密鍵に従って、前記鍵ストリームを再計算する段階と
を有する方法。
【請求項２】
前記暗号化されたデータブロックを読み出す段階は、
前記暗号化されたデータブロックに対する要求を受け取る段階と、
前記暗号化されたデータブロックをランダムアクセスメモリから読み出す段階と
を有する請求項１に記載の方法。
【請求項３】
前記プロセッサが前記鍵ストリームを再生成する段階は、
１以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記暗号化されたデータブロックを含むページ、及び、前記暗号化されたデータブロックのブロック番号に従って、記憶されたページ初期化ベクトル値を選択する段階と、
前記暗号化されたデータブロックの前記ブロック番号に従って、記憶されたＣビットカウンタ値を選択する段階と、
前記ページ初期化ベクトル値と、前記Ｃビットカウンタ値と、前記暗号化されたデータブロックのアドレスがＮビットアドレスである場合に該アドレスの（Ｎ−Ｃ）最上位ビットとに従って、前記データブロックを暗号化するのに使用された前記初期化ベクトルを再形成する段階と、
前記秘密鍵を使用して前記形成した初期化ベクトルを暗号化することにより前記鍵ストリームを形成する段階と
をさらに有する請求項１または２に記載の方法。
【請求項４】
前記暗号化されたデータブロックを復号する段階は、単一クロックサイクル内で実行される
請求項１から３のいずれかに記載の方法。
【請求項５】
コンピュータに、
暗号化されたデータブロックをメモリから読み出す手順と、
プロセッサが、前記暗号化されたデータブロックの前記メモリからの読み出し中に、該データブロックの１以上の記憶された判定基準に従って、該データブロックを暗号化するのに使用された鍵ストリームを再生成する手順と、
前記暗号化されたデータブロックの読み出しが完了した場合に、前記プロセッサが、前記生成した鍵ストリームに従って、前記暗号化されたデータブロックを復号する手順と
を実行させ、
前記プロセッサが前記鍵ストリームを再生成する手順は、
前記暗号化されたデータブロックを含むページに従って、前記データブロックの暗号化に使用された初期化ベクトルの初期部を特定する手順と、
前記データブロックのブロック番号に従って、前記データブロックの暗号化に使用された前記初期化ベクトルの残部を特定する手順と、
前記初期化ベクトルの前記特定した初期部、前記初期化ベクトルの前記特定した残部、および秘密鍵に従って前記鍵ストリームを再計算する手順と
を有するプログラム。
【請求項６】
前記暗号化されたデータブロックをメモリから読み出す手順は、
前記暗号化されたデータブロックに対する要求を受け取る手順と、
前記暗号化されたデータブロックをランダムアクセスメモリから読み出す手順と
を有する請求項５に記載のプログラム。
【請求項７】
前記プロセッサが前記鍵ストリームを再生成する手順は、
１以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記暗号化されたデータブロックを含むページ、及び、前記暗号化されたデータブロックのブロック番号に従って、記憶されたページ初期化ベクトル値を選択する手順と、
前記暗号化されたデータブロックの前記ブロック番号に従って、記憶されたＣビットカウンタ値を選択する手順と、
前記ページ初期化ベクトル値と、前記Ｃビットカウンタ値と、前記暗号化されたデータブロックのアドレスがＮビットアドレスである場合に該アドレスの（Ｎ−Ｃ）最上位ビットとに従って、前記データブロックを暗号化するのに使用された前記初期化ベクトルを再形成する手順と、
前記秘密鍵を使用して前記形成した初期化ベクトルを暗号化することにより前記鍵ストリームを形成する手順と
をさらに有する請求項５または６に記載のプログラム。
【請求項８】
前記暗号化されたデータブロックの復号は、単一クロックサイクル内で実行される
請求項５から７のいずれかに記載のプログラム。
【請求項９】
プロセッサが、データブロックの１以上の判定基準に従って該データブロックの初期化ベクトルを計算する段階と、
プロセッサが、前記データブロックの前記初期化ベクトルを計算するのに使用された、前記データブロックの前記判定基準を記憶する段階と、
前記プロセッサが、前記初期化ベクトル及び秘密鍵から鍵ストリームを計算する段階と、
前記プロセッサが、前記鍵ストリームに従って前記データブロックを暗号化する段階と、
前記プロセッサが、前記暗号化したデータブロックをメモリに記憶する段階と
を備え、
前記プロセッサが前記初期化ベクトルを計算する段階は、
前記データブロックの書き込み要求を受け取る段階と、
前記データブロックを含むページ、及び、該ページ内における前記データブロックのブロック番号を特定する段階と、
前記データブロックを含む前記ページ、及び、前記暗号化されたデータブロックの前記ブロック番号に従って、ページ初期化ベクトルを形成する段階と、
前記データブロックの前記ブロック番号に従って、ブロック初期化ベクトルを形成する段階と、
前記ページ初期化ベクトル及び前記ブロック初期化ベクトルを結合することにより前記初期化ベクトルを形成する段階と
を有する方法。
【請求項１０】
前記プロセッサが前記ページ初期化ベクトルを形成する段階は、
１以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記データブロックを含む前記ページに割り当てられる複数のページ初期化ベクトルを特定する段階と、
前記データブロックを含む前記ページのページカウンタ値に従って、ページ初期化ベクトルを選択する段階と
を有する請求項９に記載の方法。
【請求項１１】
前記プロセッサが前記ブロック初期化ベクトルを形成する段階は、
前記データブロックを含む前記ページへのページ書き込み用のブロックカウンタ値を、前記ブロック初期化ベクトルとして選択する段階
を有する請求項９または１０に記載の方法。
【請求項１２】
前記プロセッサが前記ページ初期化ベクトル及び前記ブロック初期化ベクトルを結合することにより前記初期化ベクトルを形成する段階は、
１以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記暗号化されていないデータブロックを含むページに従って、記憶されたページ初期化ベクトル値を選択する段階と、
前記暗号化されたデータブロックの前記ブロック番号に従って、記憶されたＣビットカウンタ値を選択する段階と、
前記ページ初期化ベクトル値と、前記Ｃビットカウンタ値と、前記暗号化されたデータブロックのアドレスがＮビットアドレスである場合に該アドレスの（Ｎ−Ｃ）最上位ビットとに従って、前記データブロックを暗号化するのに使用された前記初期化ベクトルを形成する段階と、
前記秘密鍵を使用して前記形成した初期化ベクトルを暗号化することにより前記鍵ストリームを形成する段階と
を有する請求項９から１１のいずれかに記載の方法。
【請求項１３】
前記プロセッサが前記鍵ストリームを計算する段階は、
ストリーム暗号及びブロック暗号の一方に前記初期化ベクトル及び前記秘密鍵を提供することにより前記鍵ストリームを生成する段階
を有する請求項９から１２のいずれかに記載の方法。
【請求項１４】
前記プロセッサが、最も過去の初期化ベクトルを有するデータブロックを特定する段階と、
前記プロセッサが、前記特定した初期化ベクトルについて一意の初期化ベクトルを計算する段階と、
前記プロセッサが、前記一意の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って、前記特定したデータブロックを再暗号化する段階と
をさらに備える請求項９から１３のいずれかに記載の方法。
【請求項１５】
前記プロセッサが前記一意の初期化ベクトルを計算する段階は、
前記特定したデータブロックを含むページのページカウンタ値に従って、現在のページ初期化ベクトル値を特定する段階と、
前記特定した初期化ベクトルのページ初期化ベクトル部を前記現在のページ初期化ベクトル値に取り替えることにより前記一意の初期化ベクトルを形成する段階と
を有する請求項１４に記載の方法。
【請求項１６】
前記プロセッサが前記判定基準を記憶する段階は、
前記初期化ベクトルのページベクトル値を選択するのに使用されたページカウンタ値を特定する段階と、
前記初期化ベクトルのブロックベクトル値を形成するのに使用されたブロックカウンタ値を特定する段階と、
前記データブロックのブロック番号に従って、前記ページカウンタ値及び前記ブロックカウンタ値を暗号化ページ構造体内に記憶する段階と
を有する請求項９から１５のいずれかに記載の方法。
【請求項１７】
データブロックの初期化ベクトルを計算するのに使用される、該データブロックの１以上の判定基準を記憶し、前記初期化ベクトル及び秘密鍵から計算された鍵ストリームに従って前記データブロックを暗号化し、該暗号化したデータブロックをメモリ内に記憶するメモリ暗号化ロジックと、
暗号化したデータブロックの読み出し中に、該データブロックの１以上の記憶された判定基準に従って該データブロックを暗号化するのに使用された鍵ストリームを再生成し、該再生成した鍵ストリームを使用して、前記暗号化したデータブロックを復号するメモリ復号ロジックと
を備え、
前記メモリ暗号化ロジックは、
初期化ベクトルの形成に使用された１以上の一意のページ初期化ベクトル値を含むページデータ構造体と、鍵ストリームの再計算用の初期化ベクトルの形成およびデータブロックの暗号化に使用されたブロックデータ構造体および該ページデータ構造体へのインデックス値を記憶するのに使用されるブロックデータ構造体とを有する暗号化ページ構造体を含むメモリ
を有する装置。
【請求項１８】
前記暗号化ロジックは、
最も過去の初期化ベクトルを有するデータブロックを特定し、該特定した初期化ベクトルの一意の初期化ベクトルを再計算し、該一意の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って、前記特定したデータブロックを再暗号化するための再符号化ロジック
をさらに有する請求項１７に記載の装置。
【請求項１９】
前記復号ロジックは、排他的ＯＲ演算を使用して、単一クロックサイクル内で、暗号化されたデータブロックを復号する
請求項１７または１８に記載の装置。
【請求項２０】
前記メモリは、ランダムアクセスメモリまたはディスクメモリである
請求項１７から１９のいずれかに記載の装置。
【請求項２１】
ランダムアクセスメモリ（ＲＡＭ）と、
前記ランダムアクセスメモリに接続されたチップセットと、
前記チップセットに接続されたプロセッサと
を備え、
前記プロセッサは、
データブロックの初期化ベクトルを計算するのに使用される、該データブロックの１以上の判定基準を記憶し、前記初期化ベクトル及び秘密鍵から計算された鍵ストリームに従って前記データブロックを暗号化し、該暗号化したデータブロックを前記ランダムアクセスメモリ内に記憶するための、メモリ暗号化ロジックと、
前記ランダムアクセスメモリからの暗号化したデータブロックの読み出し中に、該データブロックの１以上の記憶された判定基準に従って該データブロックを暗号化するのに使用された鍵ストリームを再生成し、該再生成した鍵ストリームを使用して、前記暗号化したデータブロックを復号するための、メモリ復号ロジックと
を有し、
前記メモリ暗号化ロジックは、
初期化ベクトルの形成に使用された１以上の一意のページ初期化ベクトル値を含むページデータ構造体と、鍵ストリームの再計算用の初期化ベクトルの形成およびデータブロックの暗号化に使用されたブロックデータ構造体および該ページデータ構造体へのインデックス値を記憶するのに使用されるブロックデータ構造体とを有する暗号化ページ構造体を含むメモリ
を含むシステム。
【請求項２２】
前記メモリ暗号化ロジックは、
最も過去の初期化ベクトルを有するデータブロックを特定し、該特定した初期化ベクトルを現在の初期化ベクトルに取り替え、該現在の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って、前記特定したデータブロックを再暗号化するための再符号化ロジック
をさらに含む請求項２１に記載のシステム。
【請求項２３】
前記メモリ復号ロジックは、排他的ＯＲ演算を使用して、単一クロックサイクル内で、暗号化されたデータブロックを復号する
請求項２１または２２に記載のシステム。
【請求項２４】
前記ランダムアクセスメモリは、ダブルデータレート（ＤＤＲ）同期データＲＡＭ（ＳＤＲＡＭ）である
請求項２１から２３のいずれかに記載のシステム。
【請求項２５】
コンピュータに、請求項９から１６のいずれかに記載の方法を実行させる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の１つ又は２つ以上の実施の形態は、包括的には、暗号化技術の分野に関する。より詳細には、本発明の実施の形態の１つ又は２つ以上は、解読待ち時間が削減されたメモリ暗号化のための方法及び装置に関する。
【背景技術】
【０００２】
インターネットが普及したことによって、インターネット商取引又はＥコマースと一般に呼ばれる新たな形態の商取引が生み出された。Ｅコマースによって、ユーザは、インターネットを介して接続された世界的規模の社会から商品の売買をすることができる。今日のコンピュータの絶え間のないコストの削減及び処理速度の増加と相まって、この簡単さが加わったことにより、世界中の多くの家庭にパーソナルコンピュータ（ＰＣ）が取り入れられてきた。世界中の家庭にＰＣが普及したことに加えて、このようなＰＣがＥコマースに使用されることにより、コンピュータ内に機密情報が記憶されることが多くなってきているのは、好ましいとはいえない状況である。
【０００３】
その結果、コンピュータユーザは、悪意ある第三者（rogue agent）の影響を受けやすくなる。悪意ある第三者は、パーソナルコンピュータ内にロードされた安全な情報へのアクセスを望むことがある。さまざまな悪意ある第三者が安全な情報にアクセスすることの抑制に努めることを目的として、多くのコンピュータシステムは、機密情報へのアクセスを阻止するための何らかの形態の暗号化を使用する。当業者に既知のように、暗号化技術は、情報を秘密に保ち、その情報が不正変更されていないと判断し、且つ、誰が情報の作成者であるかを判断するための技法を提供する。
【特許文献１】米国特許第５８０９１４８号明細書
【特許文献２】米国特許第５３４５５８０号明細書
【特許文献３】米国特許出願公開第２００３／０００７６３５号明細書
【特許文献４】米国特許出願公開第２００４／００３０８８９号明細書
【特許文献５】米国特許第５２５９０２５号明細書
【特許文献６】米国特許第６９３７７２７号明細書
【０００４】
暗号化技術の１つの形態は、公開鍵方式又は秘密鍵方式を含む。この方式では、送信情報は、送信前に暗号化され、公開鍵又は秘密鍵のいずれかを使用して受信機により解読される。しかしながら、機密情報がその指定されたロケーションに一旦到着すると、その情報は、多くの場合、解読されて記憶される。換言すると、機密情報は、その宛先では安全なフォーマットで保持されない。その結果、ＰＣの動作中、悪意ある第三者は、そのＰＣにアクセスして、機密情報にアクセスする可能性がある。
【０００５】
さらに、Ｅコマースの普及によって、動画や音楽等のメディアアプリケーションが利用可能となった。このメディアアプリケーションは、１度だけの使用又は所定の期間の使用のためにＰＣにダウンロードすることができる。しかし、このようなメディアアプリケーションのコンテンツを悪意ある第三者によるアクセスから保護するための何らかのメカニズムがないと、メディアアプリケーションに関するＥコマースは、メディアプロバイダにとって禁制のもとなるおそれがある。コンピュータシステムの機密情報を可能な限り保護するための１つの技法にメモリ暗号化があるが、メモリ暗号化は、プロセッサとメモリとの間に現在存在するボトルネックにより、現代のコンピュータシステム内では、行われていない。
【０００６】
メディアアプリケーション及びグラフィックスアプリケーションの要求の増大に応じて、プロセッサ速度は絶え間なく増加しているが、メモリ性能の増加は、プロセッサクロック周期の削減に追い着いていない。プロセッサ性能が増加し続けることになる場合、メモリ待ち時間の問題、すなわち、データユニットにアクセスするのに必要な時間の問題は、さらにはこのようなメディアアプリケーション及びグラフィックスアプリケーションの帯域幅の増加に伴って、革新的なメモリアーキテクチャを必要とする。その結果、たとえばマイクロプロセッサによるメモリ暗号化が実行できなくなる。その理由は、読み出しオペレーションの際のメモリ暗号化が、プロセッサとメモリとの間に存在する現在のボトルネックを上回る待ち時間をさらに増やすことになるからである。
【発明の開示】
【課題を解決するための手段】
【０００７】
本発明のさまざまな実施の形態を、添付図面の図に、限定としてではなく例として示す。
【発明を実施するための最良の形態】
【０００８】
解読待ち時間が削減されたメモリ暗号化のための方法及び装置を説明する。一実施の形態では、この方法は、暗号化されたデータブロックをメモリから読み出すことを含む。暗号化されたデータブロックの読み出し中、そのデータブロックを暗号化するのに使用される鍵ストリームが、暗号化されたデータブロックの１つ又は２つ以上の記憶された判定基準に従って再生成される。暗号化されたデータブロックは、読み出されるとすぐに、再生成された鍵ストリームを使用して解読される。したがって、一実施の形態では、ランダムアクセスメモリ（ＲＡＭ）又はディスクメモリのいずれかの暗号化が行われる。データが受信されるとすぐに、単一のクロックオペレーションを使用してデータを解読できるように、鍵ストリームはデータ取り出し中に再生成される。その結果、メモリ暗号化は、プロセッサとメモリとの間のメモリ待ち時間を悪化させることなく行われる。
【０００９】
以下の説明では、本発明の実施の形態の特徴を説明するのに、一定の専門用語が使用される。たとえば、用語「ロジック」は、１つ又は２つ以上の機能を実行するように構成されたハードウェア及び／又はソフトウェアを表す。たとえば、「ハードウェア」の例には、集積回路、有限状態マシン、さらには組み合わせ論理も含まれるが、これらに限定も制限もされるものではない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ、マイクロコントローラ等のプロセッサの形態を取ることができる。
【００１０】
「ソフトウェア」の例には、アプリケーション、アプレット、ルーチン、さらには一連の命令の形態の実行可能コードが含まれる。ソフトウェアは、プログラマブル電子回路、揮発性メモリ（たとえば、ランダムアクセスメモリ等）及び／もしくは不揮発性メモリ（たとえばあらゆるタイプの読み出し専用メモリ「ＲＯＭ」、フラッシュメモリ）を含む半導体メモリデバイス、フロッピィディスケット、光ディスク（たとえば、コンパクトディスクもしくはデジタルビデオディスク「ＤＶＤ」）、ハードドライブディスク、テープ等のあらゆるタイプのコンピュータ可読媒体又はマシン可読媒体に記憶することができる。一実施の形態では、本発明は、本発明の一実施の形態に従って、コンピュータ（もしくは他の電子デバイス）をプログラミングしてプロセスを実行するのに使用できる命令が記憶されたマシン可読媒体又はコンピュータ可読媒体を含むことができる製品として提供することができる。
【００１１】
＜システム＞
図１は、本発明の一実施の形態による、メモリ暗号化／解読ロジック２００を含むコンピュータシステム１００を示すブロック図である。このコンピュータシステム１００は、プロセッサ（ＣＰＵ）１１０とチップセット１８０との間で情報を通信するためのプロセッサシステムバス（フロントサイドバス（ＦＳＢ（front side bus）））１０２を備える。プロセッサ１１０及びチップセット１８０は、ＦＳＢ１０２を介して互いに接続されている。本明細書で説明するように、用語「チップセット」は、ＣＰＵ１１０に接続されて所望のシステム機能を実行するさまざまなデバイスを集合的に説明するべく、当業者に既知の方法で使用される。
【００１２】
チップセット１８０は、メインメモリ１４０、及び、１つ又は２つ以上のグラフィックデバイス１３０に接続されている。一実施の形態では、メインメモリ１１０は揮発性メモリである。この揮発性メモリには、ランダムアクセスメモリ（ＲＡＭ）、同期ＲＡＭ（ＳＲＡＭ）、ダブルデータレート（ＤＤＲ）、ＳデータＲＡＭ（ＳＤＲＡＭ）、ＲＡＭバスデータＲＡＭ（ＲＤＲＡＭ）等が含まれるが、これらに限定されるものではない。これに加えて、ハードディスクドライブデバイス（ＨＤＤ）１５０、及び、１つ又は２つ以上の入出力（Ｉ／Ｏ）デバイス１７０（１７０−１、…、１７０−Ｎ）もチップセット１８０に接続されている。図示するように、ＣＰＵ１１０は、メモリ暗号化／解読ロジック２００を含む。このメモリ暗号化／解読ロジック２００については、図２を参照してさらに説明する。
【００１３】
図２は、解読待ち時間が削減されたメモリ暗号化を示す目的で、本発明の一実施の形態によるＣＰＵ１１０をさらに示している。ＣＰＵ１１０は、プロセッサコア１１２で構成され、たとえば、コピーバックキャッシュ１３０、及び、データの高速な一時記憶用のレベル１（Ｌ１）キャッシュ１１４を含むことができる。これに加えて、プロセッサ又はＣＰＵ１１０は、レベル２（Ｌ２）キャッシュ１２０も含むことができる。図示するように、Ｌ２キャッシュ１２０は、たとえばバックサイドバス１１８を介してバックサイドバスユニット１１６に接続されたオフチップメモリである。さらに、ＣＰＵ１１０は、図１に示すようなＦＳＢ１０２とインターフェースするための外部ユニット１０４も含む。
【００１４】
一方、従来のＣＰＵとは異なり、ＣＰＵ１１０は、メモリ暗号化／解読ロジック２００を含む。一実施の形態では、このロジック２００によって、ＣＰＵ１１０は、暗号アルゴリズムを使用して、たとえば揮発性メモリのコンテンツを安全に暗号化することが可能になる。この揮発性メモリは、たとえば図１に示すようなメインメモリ１４０等である。ブロック暗号アルゴリズムによって提供されるセキュリティは、暗号化及び解読の２つのプロセスから成る。これら２つのプロセスは、相反する。暗号化は、平文と呼ばれる使用可能なメッセージを暗号文と呼ばれる読み取り不可能な形態に変換することである。逆に、解読は、暗号文から平文を復元する変換である。
【００１５】
一実施の形態では、メモリ解読は、暗号化されたデータブロック（暗号文）のメモリ読み出し中に鍵ストリームを再生成することによって提供される。暗号文は、一旦利用可能になると、再生成された鍵ストリームを使用して、たとえば単一クロックサイクル内で解読される。その結果、プロセッサとメインメモリとの間の本来的なメモリ待ち時間の悪化が最小にされると同時に、たとえばＲＡＭやディスクメモリ等に含まれるデータの暗号化が可能になる。本発明の一実施の形態による暗号化／解読ロジック２００及び暗号化ページ構造体（encryption page structure）２５０については、図３を参照してさらに示す。
【００１６】
図３は、本発明の一実施の形態による、メモリ読み出し解読オペレーションの一実施の形態におけるロジック２００を示している。図示するように、ロジック２００は、秘密鍵２３２及び初期化ベクトル（ＩＶ（initialization vector））２２０に従って鍵ストリーム２３４を生成するための暗号ロジック２３０を含む。鍵ストリームが形成されるとすぐに、ロジック２００は、ＸＯＲブロック２４０を使用して、鍵ストリーム２３４と暗号文２０２との排他的論理ＯＲ演算（ＸＯＲ）を実行し、平文２０４を形成する。一実施の形態では、暗号ロジック２３０は、たとえば次世代暗号化標準（ＡＥＳ（advanced encryption standard））、暗号サーペント（cipher serpent）、又は、他の同様の対称ブロック暗号アルゴリズムである。
【００１７】
ブロック暗号及びストリーム暗号の２つの基本的なタイプの対称暗号化／解読アルゴリズムがある。ブロック暗号は、たとえばＮビットで構成される平文及び暗号文のブロックに対して操作を実行する。これとは対照的に、ストリーム暗号は、平文及び暗号文のストリームに対して一時に１ビット又は１バイトの操作を実行する。ブロック暗号では、同じ平文ブロックは、常に、同じ鍵を使用して同じ暗号文ブロックに暗号化される。これとは対照的に、ストリーム暗号を使用すると、平文が暗号化されるごとに、同じ平文のバイト又はビットは、異なるビット又はバイトに暗号化されることになる。この不一致は、ブロック暗号が秘密鍵及び平文の値を取り込み、暗号化の多くのラウンドを通じて実行され、暗号文を直接生成することにより生じる。
【００１８】
逆に、ブロック暗号解読は、同じ鍵及び暗号文を取り込み、逆暗号化の多くのラウンドを通じて実行され、平文を生成する。一般に、それらの場合の双方で実行される暗号化の多くラウンドは、かなりの量の時間を要するので、プロセッサとメモリとの間の本来的な待ち時間により、メモリ読み出し解読には適していない。したがって、図示した実施の形態では、暗号ロジック２３０は、削減された個数のラウンドを使用して、メモリ読み出し待ち時間を適合させると同時に、それにもかかわらず、十分なセキュリティを提供する。換言すると、メモリからデータをフェッチするのに必要な時間内に鍵ストリームを生成するための暗号化モードをサポートするブロック暗号が、暗号ロジック２３０として使用される。代替的な実施の形態では、ストリーム暗号を暗号ロジック２３０に使用することもできる。
【００１９】
当業者に既知のように、ストリーム暗号は、秘密鍵、及び、場合によっては、変更可能な初期化ベクトル（ＩＶ）又は公開値を使用して、鍵ストリームを生成するための或る機能を実行する。鍵ストリームは、生成されるとすぐに、単一クロックオペレーション内で平文と結合されて、暗号文が生成される。逆に、ストリーム暗号解読は、暗号化と同じ状態で暗号を元に戻して、同じ鍵ストリームを生成することから成る。この鍵ストリームは、逆オペレーションを使用して暗号文と結合され、平文が生成される。
【００２０】
再び図３を参照して、入力暗号ロジック２３０は秘密鍵２３２である。この秘密鍵２３２は、たとえば、初期ブートアップ中にＣＰＵ１１０が生成することができ、電源オフ（メモリのコンテンツがもはや必要とされない時）まで保持することができる。ＩＶ２２０は、平文の暗号化及び暗号文の対応する解読で使用される。ただし、ＩＶ２２０は、秘密に維持されなければならない鍵２３２と異なり秘密に維持される必要はない。暗号ロジック２３０を効率的に使用して最適なセキュリティを提供するには、予測不可能な初期化ベクトルが必要とされる。換言すると、本明細書で説明する暗号ロジック２３０は、ＮＯＮＣＥ（ノンス）であるＩＶを必要とする（すなわち、ＩＶは、所与の鍵に基づいてそのモードの各実行について一意でなければならない）。
【００２１】
一実施の形態では、暗号ロジック２３０は、カウンタモード（ＣＴＲ）に従って機能することができる。このカウンタモードは、カウンタと呼ばれる１組の入力ブロックに順方向暗号化（forward cipher）を適用して、平文と論理的に結合（ＸＯＲ）されて暗号文を生成する一連の出力ブロックを生成することを特徴とする。この逆もまた同様である。一意のＩＶの生成が必要とされる理由は、平文ブロックが既知のＩＶ値を使用して暗号化された場合、順方向暗号関数の出力は、関連した暗号文から容易に求められるからである。この出力によって、同じＩＶを使用して暗号化された他のあらゆる平文ブロックを、それら平文ブロックの関連した暗号ブロックから容易に復元して容易に復元することが可能になる。したがって、一意のＩＶを生成する目的で、一実施の形態では、暗号化ページ構造体２６０が提供される。
【００２２】
図３に示すように、暗号化ページ構造体２６０は、各ページについての１つ又は２つ以上のカウンタ及び各データブロックを、図１に示すようなメモリ１４０等のメモリシステム内に記憶するように設計される。これらのカウンタ及びデータブロックは、たとえば、カウンタロジック２９０に記憶される。図示した実施の形態では、カウンタブロック２９０は、たとえば、所与のページへのページ書き込み数を追跡するためのページ書き込みカウンタ（ＰＷＣ（page write counter））、及び、現在の初期化ベクトル値（ＩＶＣ（initialization vector value））を含むことができる。現在の初期化ベクトル値ＩＶＣを使用する実施の形態では、メモリシステム内の各ページに、Ｖ初期化ベクトルのアレイを割り当てることができる。これらのＶ初期化ベクトルは、たとえば乱数発生器（図示せず）を使用して形成される。このような実施の形態では、ＩＶは、たとえばページＩＶ（ＰＩＶ（page IV））ブロック２８０（２８０−１、…、２８０−Ｎ）等のデータ構造体内に記憶される。このＰＩＶブロック２８０は、各ページについて所定の個数の一意の値を含み、それによって、各実行について一意のＩＶを生成することができる。
【００２３】
上述したように、一意のＩＶを生成することが、最適なセキュリティの提供及び初期化ベクトルの予測の防止に必要とされる。各実行について一意のＩＶを生成するための１つの技法は、各メモリ書き込みにつき新しいＩＶを生成することである。あいにく、ＩＶは、キャッシュブロックサイズに対するＩＶの相対的なサイズに応じて、元のデータの５０〜１００％までの空間を要する可能性がある。その結果、各書き込みについて新しいＩＶを生成することによって引き起こされる空間の制約によって、新しいＩＶは、オンチップの一時的なメモリ（キャッシュメモリ）に記憶することができない。
【００２４】
その結果、メモリからの各読み出しオペレーションについて、個別の読み出しを実行して、データの暗号化に使用されるオフチップのＩＶの位置を特定しなければならなくなる。その結果、鍵ストリームを生成して、暗号化されたメモリから読み出されたデータを解読できるようになる前に、この個別の読み出しオペレーションを実行しなければならない。あいにく、この個別の読み出しは、プロセッサとメモリとの間に既に存在する待ち時間をさらに悪化させることになり、したがって、十分なソリューションではない。
【００２５】
したがって、一実施の形態では、ページレベルテーブルが、ページのすべてのキャッシュブロックの初期化ベクトルの形成で使用される、削減された個数の、たとえば６４ビットの乱数（「ページＩＶ」）を記憶するのに使用される。したがって、削減された個数の６４ビットページＩＶを使用することによって、６４ビットページＩＶは、各書き込みについて一意のＩＶを形成するのに使用されると同時に、オンチップメモリ内にページＩＶの記憶が提供され、上述したような読み出しの追加がなくなる。
【００２６】
したがって、メモリ読み出しオペレーションに応じて、暗号化されたデータブロックが、アドレス２１０に従って、たとえば外部バスユニット１０４（図２）を介してメモリから要求される。たとえばページアドレスに基づいて、暗号化ページ構造体２６０は、たとえばＰＩＶ２８０内の対応するページを特定するために照会を受ける。これに加えて、ＰＩＶ２８０へのインデックスが、ブロックＩＶカウンタ（ＢＣ）２７０（２７０−１、…、２７０−Ｎ）等のデータ構造体を介して提供される。一実施の形態では、ＢＣ２７０は、たとえば、ＰＷＣ値、及び、初期化ベクトルインデックス又はＩＶＣ値を含む２次元データ構造体を記憶する。
【００２７】
したがって、ページアドレス及びブロックアドレスに基づき、ＢＣ２７０は、ＰＩＶ２８０へのインデックスを提供してブロックＩＶ値２８２を提供するだけでなく、平文２０４の暗号化中に記憶されたブロックカウンタ値２７４も提供して、ＩＶ２２０を形成する。さらに別の実施の形態では、初期化ベクトル２２０は、ページアドレス２１２、及び、ブロックアドレス２１４のＮ−Ｃビットの最上位ビット（ＭＳＢ）を含む。ここで、Ｎはアドレスのビット長を表すのに対して、Ｃはブロックカウンタ値２７４のビット長を表す。一実施の形態では、Ｐはｌｏｇ２（ページのバイト数）であり、Ｃはｌｏｇ２（キャッシュブロックのバイト数）であり、Ｎは（Ｐ−Ｃ）又はｌｏｇ２（ページのキャッシュブロック数）である。この情報に基づいて、一意のＩＶ２２０が形成され、暗号ロジック２３０に提供されて、鍵ストリーム２３４が生成される。
【００２８】
図４に示すように、カウンタロジック２９０は、たとえば、各ページについてのＰＷＣ値及び現在のＩＶＣ値を含む。したがって、平文２０４の書き込み要求に応答して、現在のＩＶＣ値が、ＰＩＶ２８０を参照するのに使用されて、ブロックＩＶ値２８２が生成される。これに加えて、現在のＰＷＣ値が、ブロックカウンタ値２７４として使用される。一実施の形態では、ブロックＩＶ値２８２及びブロックカウンタ値２７４は、平文２０４のブロック番号に従ってＢＣ２７０内に記憶される。
【００２９】
一実施の形態では、ブロックアドレス２１４のＮ−Ｃ最上位ビット及びページアドレス２１２によって、ＩＶ２２０の形成が完了される。したがって、ページ初期化ベクトルを再利用すると共にカウンタ値を使用すると、ＩＶ２２０は、ＩＶをオフチップに記憶する必要なく各繰り返しについて一意であることが保証される。したがって、ＩＶ２２０を利用すると、ストリーム暗号２５０は、ＩＶ２２０及び秘密鍵２３２を使用して鍵ストリーム２５２を生成する。鍵ストリーム２５２は、生成されるとすぐに、たとえばＸＯＲロジック２４０を使用して平文２０４と結合され、暗号文２０２が形成される。暗号文２０２は、一旦形成されると、外部バスユニット１０４に提供することができる。外部バスユニット１０４は、アドレス２１０に従ってその暗号文をメモリに書き込む。
【００３０】
さらに別の実施の形態では、図５を参照して示すように、ＩＶ再符号化ロジック３００が、データブロックのＩＶ２２０が古いかどうかを検出することを担当する。一実施の形態では、再符号化ロジック３００は、データの認可されていない解読を妨げるために各書き込みオペレーションについて一意のＩＶが確実に生成されることを担当する。その結果、ページＩＶに必要とされる記憶量は、一定値に制限することができる。これに加えて、古いＩＶを有するデータの再符号化に必要とされる余分な読み出し及び書き込みの量は、ページＩＶの個数（Ｖ）を増加させることによって削減することができる。
【００３１】
一実施の形態では、これは、最も過去に使用された、すなわち最長未使用のＩＶ２２０を有するデータブロックを特定することによって実行される。このようなものが検出されると、たとえば古いＩＶロジック３２０を使用して、再符号化ロジック３３０は、新しいＩＶ３３２を選択でき、暗号ロジック２３０及び暗号ロジック２５０を使用して、その特定されたデータブロックを再符号化（再暗号化）し、暗号文２０２を形成することができる。一実施の形態では、特定されたデータブロックを含むページのＩＶＣ２７２の現在の値に従って、古いＩＶのページＩＶ部分を、ＰＩＶ２８０からの異なるページＩＶに取り替えることにより、新しいＩＶ３３２が生成される。一実施の形態では、同じストリーム暗号が、解読及び再暗号化を行うように、ブロック暗号２３０（図５）が、ストリーム暗号２５０の別の例となる）。
【００３２】
一実施の形態では、古いＩＶを有するデータの再符号化は、再符号化が必要とされる時に、再符号化ロジック３３０に例外を発生させることによるソフトウェア割り込みルーチン又はマイクロコード割り込みルーチンによって実行することができる。したがって、再符号化ロジックは、古いＩＶを有するデータの検出及び割り込みの発行を実行することに簡単化することができる。一実施の形態では、書き込みオペレーションごとに多くとも１つの再符号化が実行されるように、データの再符号化は、時間の経過と共に展開される。
【００３３】
代替的な実施の形態では、再符号化は、メモリパイプラインの空のスロットにスケジューリングすることができる。したがって、再符号化ロジック３３０と共に削減された個数のページ初期化ベクトルを使用することによって、ＩＶ値の記憶に必要とされる空間の量は、データの記憶に必要なものと比較すると非常に小さく、したがって、オフチップのＩＶの読み出しオペレーションを追加する必要がないようにＩＶをオンチップに記憶することが可能になり、それによって、大幅なシステムセキュリティが達成される。
【００３４】
したがって、古いＩＶ２２０が暗号ロジック２３０に提供されて、暗号文２０２が解読され、平文２０４が生成される。これと同時に、新しいＩＶ３３２が、暗号ロジック２５０に提供されて、平文２０４を再暗号化するための鍵ストリーム２５４が生成される。したがって、再符号化ロジック３３０は、ＩＶ２２０の予測を阻止することによって、セキュリティ機能を追加して提供する。一実施の形態では、これは、古いＩＶロジック３２０内で以下の方程式を使用して実行される。
【数１】
0004500306.tif 000002
【００３５】
その結果、説明の実施の形態は、各書き込みについて新しい初期化ベクトルを生成することによって暗号ロジックの性能特性及びセキュリティ特性を維持すると同時に、古いデータを再符号化することによって初期化ベクトルの記憶に必要なものの追加を最小にする。古いデータを再符号化するので、古い初期化ベクトルを保持する必要はない。本発明の実施の形態を実施するための手続的な方法を次に説明する。
【００３６】
＜オペレーション＞
図６は、本発明の一実施の形態による、解読待ち時間が削減された、暗号化されたメモリブロックの解読のための方法４００を示すフローチャートである。一実施の形態では、方法４００は、たとえば、図３に示すような暗号化／解読ロジック２００内で実行される。プロセスブロック４０２において、たとえば、暗号化されたデータブロックに対する要求に応答して、暗号化されたデータブロック（暗号文）がメモリから読み出される。一実施の形態では、説明したメモリは、たとえばＲＡＭ又は不揮発性メモリである。代替的に、メモリは、たとえば図１のＨＤＤ１５０内のディスクメモリと呼ばれる。
【００３７】
当業者に既知のように、コンピュータシステムは、プロセッサとメモリシステムとの間でかなりの量のメモリ待ち時間を示す。この待ち時間によって、従来のコンピュータシステムは、プロセッサメモリ暗号化を提供することが妨げられている。しかしながら、従来のシステムと異なり、プロセスブロック４０４において、鍵ストリームが、暗号化されたデータブロックの読み出し中に再生成され、その結果、メモリ読み出しオペレーションに導入される待ち時間が最小にされる。再生成された鍵ストリームは、データブロックをメモリに書き込む前に当該データブロックを暗号化するのに使用された鍵ストリームである。
【００３８】
一実施の形態では、鍵ストリームは、以下で詳細に説明するように、データブロックの１つ又は２つ以上の記憶された判定基準に従って再生成される。したがって、プロセスブロック４３０において、暗号化されたデータブロックの読み出しが完了するとすぐに、プロセスブロック４４０において、暗号化されたデータブロックは、生成された鍵ストリームに従って解読される。一実施の形態では、これは、論理ＸＯＲ演算を使用して実行され、単一クロックサイクル内で実行することができる。それによって、導入される待ち時間は単一クロックサイクルに制限される。その結果、プロセッサとメモリとの間のメモリ待ち時間は、本明細書で説明したメモリ暗号化技法によっては悪化しない。
【００３９】
図７は、本発明の一実施の形態による、図６を参照して説明したプロセスブロック４０４の鍵ストリームを再生成するための方法４１０を示すフローチャートである。プロセスブロック４１２において、暗号化されたデータブロックを含むページに従って、データブロックを暗号化するのに使用された初期化ベクトルの初期部（initial portion）（ページＩＶ）が特定される。一実施の形態では、そのページは、ブロック番号と共に、ＰＩＶ２８０（図３）等の複数の初期化ベクトル（ページＩＶ）を含むデータ構造体へのインデックスを提供する。上述したように、メモリからのデータブロックにアクセスするためのページングシステムが、説明の実施の形態の範囲内にあると仮定される。しかしながら、説明の実施の形態は、当業者に既知のように、他の形態のメモリ編成にも適用することができる。
【００４０】
プロセスブロック４１４において、たとえばブロックカウンタ値等のデータブロックのブロック番号に従って、データブロックを暗号化するのに使用された初期化ベクトルの残部（remaining portion）が特定される。プロセスブロック４１６において、初期化ベクトルの特定された初期部及び初期化ベクトルの特定された残部、並びに秘密鍵に従って、鍵ストリームが計算される。したがって、説明の実施の形態では、初期化ベクトルは、公開されるか、又は、本明細書で説明したメモリ暗号化／解読のセキュリティを危険にさらすことなく公開することができる。
【００４１】
図８は、本発明のさらに別の実施の形態による、図７のプロセスブロック４１６の鍵ストリームを再計算するための方法４２０を示すフローチャートである。プロセスブロック４２２において、暗号化されたデータブロックを含むページに従って、記憶されたページ初期化ベクトルが選択される。選択されるとすぐに、プロセスブロック４２４において、暗号化されたデータブロックのブロック番号に従って、記憶されたＣビットカウンタ値が選択される。一実施の形態では、これらの値は、図２〜図５を参照して示したように、たとえば暗号化ページ構造体２６０に記憶される。プロセスブロック４２６において、ページ初期化ベクトル値と、Ｃビットカウンタ値と、暗号化されたデータブロックのアドレスの（Ｎ−Ｃ）最上位ビットとに従って、データブロックを暗号化するのに使用された初期化ベクトルが形成される。
【００４２】
上述したように、アドレスはＮビット値であるのに対して、カウンタはＣビット値である。したがって、たとえば図３を参照して上述したように、初期化ベクトル、すなわちＩＶ２２０は、指示された値に従って形成される。プロセスブロック４２８において、形成された初期化ベクトルは、秘密鍵を使用して暗号化され、鍵ストリームが形成される。したがって、説明の実施の形態では、当該説明の実施の形態の解読部の期間中に、ブロック暗号を使用して鍵ストリーム値を形成することができる。一実施の形態では、このブロック暗号は、カウンタモード（ＣＴＲ）に従って操作される、連邦情報処理（ＦＩＰＳ（federal information processing））の対称鍵ブロック暗号アルゴリズムである。
【００４３】
図９は、本発明の一実施の形態による、メモリ内にデータブロックを記憶する前にデータブロックを暗号化するための方法５００を示すフローチャートである。説明の実施の形態では、方法５００は、図４の暗号化／解読ロジック２００を参照して示される。プロセスブロック５０２において、データブロックの１つ又は２つ以上の判定基準に従って、そのデータブロックの初期化ベクトルが計算される。説明の実施の形態では、この判定基準には、データブロックを含むページやデータブロックのブロック番号等のデータブロックのアドレスを含めることができる。これに加えて、追加された判定基準には、たとえば、データブロックに従って、１つ又は２つ以上のカウンタ値を含めることができる。
【００４４】
プロセスブロック５４０において、初期化ベクトルに使用された判定基準が記憶される。一実施の形態では、この判定基準は、たとえば暗号化ページ構造体２６０（図４）内に記憶されて、初期化ベクトルの再計算を可能にする。プロセスブロック５６０において、鍵ストリームが、たとえばストリーム暗号２５０（図４）を使用して、初期化ベクトル及び秘密鍵から計算される。プロセスブロック５６２において、鍵ストリームに従って、データブロックが、たとえばＸＯＲ演算を使用して暗号化される。プロセスブロック５６４において、暗号化されたデータブロックがメモリ内に記憶される。このメモリには、上述したような不揮発性メモリ、ディスクメモリ等が含まれる。
【００４５】
図１０は、本発明の一実施の形態による、図９のプロセスブロック５０２の初期化ベクトルを計算するための方法５１０を示すフローチャートである。プロセスブロック５１２において、書き込み要求が受け取られたかどうかが判断される。受け取られるとすぐに、プロセスブロック５１４において、要求されたデータブロックを含むページ及び要求されたデータブロックのブロック番号が特定される。プロセスブロック５１６において、データブロックを含むページに従って、ページ初期化ベクトルが形成される。プロセスブロック５１８において、データブロックのブロック番号に従って、ブロック初期化ベクトルが形成される。プロセスブロック５２０において、ページ初期化ベクトル及びブロック初期化ベクトルが結合されて、データブロックを暗号化するのに使用された初期化ベクトルが形成される。
【００４６】
図１１は、本発明の一実施の形態による、図１０のプロセスブロック５２０の初期化ベクトルを形成するように結合を行うための方法５３０を示すフローチャートである。プロセスブロック５３２において、暗号化されたデータブロックを含むページ、及び、オプションとしてデータブロックのブロック番号に従って、記憶されたページ初期化ベクトル値が選択される。プロセスブロック５３４において、暗号化されたデータブロックのブロック番号に従って、記憶されたＣビットカウンタ値が選択される。プロセスブロック５３６において、ページ初期化ベクトル値と、Ｃビットカウンタ値と、暗号化されたデータブロックのアドレスのＮ−Ｃ最上位ビットとに従って、初期化ベクトルが形成される。
【００４７】
したがって、説明の実施の形態では、データブロックの暗号化用に、１２８ビット暗号化が提供される。しかしながら、要望に応じて初期化ベクトルに値を追加したり、初期化ベクトルから値を差し引いたりできるようなさまざまなＮビット暗号化を提供することができる。プロセスブロック５３８において、初期化ベクトルが、秘密鍵を使用して暗号化されて、鍵ストリームが形成される。説明の実施の形態では、鍵ストリームを使用した初期化ベクトルの暗号化は、たとえばストリーム暗号を使用して行われる。このストリーム暗号は、たとえば、図４を参照して説明したような暗号ロジック２５０等である。したがって、説明の実施の形態では、メモリの読み返し中に暗号化を行うにはブロック暗号を使用できるのに対して、説明の実施の形態に従ってデータブロックの書き込み及び暗号化中に鍵ストリームを形成するにはストリーム暗号を使用することができる。
【００４８】
図１２は、本発明の一実施の形態による、図９のプロセスブロック５４０の初期化ベクトルを形成するのに使用される判定基準を記憶するための方法５５０を示すフローチャートである。プロセスブロック５５２において、初期化ベクトルのページＩＶ部を選択するのに使用されたページカウンタ値が特定される。特定されるとすぐに、プロセスブロック５５４において、初期化ベクトルのブロックＩＶ部を形成するのに使用されたブロックカウンタ値が特定される。特定されるとすぐに、これらのページカウンタ値及びブロックカウンタ値は、データブロックのブロック番号に従って、暗号化ページ構造体内に記憶される。
【００４９】
図１３は、本発明のさらに別の実施の形態による、たとえば図５を参照して示したような初期化ベクトルの再符号化のための方法５７０を示すフローチャートである。プロセスブロック５７２において、最も過去の初期化ベクトルを有するデータブロックが特定される。一実施の形態では、このデータブロックの特定は、方程式（１）を使用して行われる。特定されるとすぐに、プロセスブロック５７４において、その特定された初期化ベクトルが、現在の初期化ベクトルに置き換えられる。一実施の形態では、現在の初期化ベクトルは、古いＩＶのページＩＶ部を、ＩＶＣの現在の値によってインデックスされたＰＩＶ２８０の現在のページＩＶに置き換えることによって形成される。取り換えられるとすぐに、特定されたデータブロックは、現在の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って再暗号化される。
【００５０】
図１４は、開示した技法を使用した設計のシミュレーション、エミュレーション、及び製造のためのさまざまな表現又はフォーマットを示すブロック図である。設計を表すデータは、多くの方法で設計を表すことができる。まず、シミュレーションに有用なように、ハードウェアは、ハードウェア記述言語又は別の機能記述言語を使用して表すことができる。これらの言語は、基本的には、設計されたハードウェアがどのように動作するかを予測する、コンピュータ化されたモデルを提供する。ハードウェアモデル６１０は、シミュレーションソフトウェア６２０を使用してそのモデルをシミュレーションできるように、コンピュータメモリ等の記憶媒体６００に記憶することができる。このシミュレーションソフトウェア６２０は、特定のテストスイート６３０をハードウェアモデルに適用して、そのハードウェアモデルが、意図された通りに確かに機能するかどうかを判断する。いくつかの実施の形態では、シミュレーションソフトウェアは、媒体に記録されることも、取り込まれることも、含まれることもない。
【００５１】
これに加えて、設計プロセスのいくつかの段階では、ロジック及び／又はトランジスタゲートを有する回路レベルモデルを生成することもできる。このモデルは、プログラマブルロジックを使用してそのモデルを形成する専用ハードウェアシミュレータによって何度か同じようにシミュレーションすることができる。このタイプのシミュレーションは、さらに程度が進むと（taken a degree further）、エミュレーション技法となることがある。いずれの場合も、再構成可能なハードウェアが、開示した技法を使用するモデルを記憶したマシン可読媒体を含むことができる別の実施の形態となる。
【００５２】
さらに、或る段階におけるほとんどの設計は、ハードウェアモデルのさまざまなデバイスの物理的配置を表すデータレベルに達する。従来の半導体製造技法が使用される場合、ハードウェアモデルを表すデータは、集積回路を製造するのに使用される異なるマスクレイヤ又はマスク上のさまざまな機能の存否を指定するデータとすることができる。この場合も、集積回路を表すこのデータは、開示した技法を実行するように回路機構ロジック及びデータをシミュレーション又は製造できるという点で、開示した技法を実施する。
【００５３】
設計のいずれの表現においても、データは、どの形態のマシン可読媒体にも記憶することができる。このような情報を搬送するように変調されたか、もしくは、別の方法で生成された光波もしくは電気波６６０、メモリ６５０、又は、ディスク等の磁気記憶装置もしくは光記憶装置６４０は、マシン可読媒体とすることができる。これらの媒体のいずれも設計情報を運ぶことができる。用語「運ぶ（carry）」（たとえば、情報を運ぶマシン可読媒体）は、このように、記憶デバイスに記憶された情報又は搬送波に符号化もしくは変調された情報を包含する。設計又は設計の細目を記述するビットの集合は、（搬送波や記憶媒体等のマシン可読媒体に実施されると）その内外で保証できる商品とすることもできるし、さらに別の設計又は製造用に他者が使用することもできる。
【００５４】
＜代替的な実施の形態＞
他の実施の形態では、異なるシステム構成を使用できることが理解されよう。たとえば、システム１００が単一のＣＰＵ１１０を含むのに対して、他の実施の形態では、マルチプロセッサシステム（１つ又は２つ以上のプロセッサが、構成及びオペレーションにおいて上述したＣＰＵ１１０と同様のものとすることができる）は、さまざまな実施の形態のデータバス電力制御手法から恩恵を得ることができる。さらに、たとえばサーバ、ワークステーション、デスクトップコンピュータシステム、ゲームシステム、埋め込み式コンピュータシステム、ブレードサーバ等の異なるタイプのシステム又は異なるタイプのコンピュータシステムを他の実施の形態に使用することもできる。
【００５５】
例示の実施の形態及び最良の形態を開示したが、添付の特許請求の範囲によって画定された本発明の実施の形態の範囲内にあることを維持しつつ、開示した実施の形態に対して変更及び変形を実施することができる。
【図面の簡単な説明】
【００５６】
【図１】本発明の一実施の形態による、解読待ち時間が削減されたメモリ暗号化を可能にするためのメモリ暗号化／解読ロジックを有するプロセッサを含むコンピュータシステムを示すブロック図である。
【図２】本発明のさらに別の実施の形態による、図１に示すようなプロセッサをさらに示すブロック図である。
【図３】本発明のさらに別の実施の形態による、図２に示すような、プロセッサ、メモリ暗号化／解読ロジック、及び暗号化ページ構造体をさらに示すブロック図である。
【図４】本発明のさらに別の実施の形態による、図２に示すような、プロセッサ、メモリ暗号化／解読ロジック、及び暗号化ページ構造体をさらに示すブロック図である。
【図５】本発明の一実施の形態による、初期化ベクトル再符号化ロジックを示すブロック図である。
【図６】本発明の一実施の形態による、メモリからの暗号化されたデータブロック読み出しの解読のための方法を示すフローチャートである。
【図７】本発明のさらに別の実施の形態による、メモリからの暗号化されたデータブロック読み出しを解読する鍵ストリームを生成するための方法を示すフローチャートである。
【図８】本発明の一実施の形態による、メモリからの暗号化されたデータブロック
【図９】本発明の一実施の形態による、メモリにデータブロックを書き込む前にデータブロックを暗号化するための方法を示すフローチャートである。
【図１０】本発明の一実施の形態による、メモリにデータブロックを書き込む前にデータブロックを暗号化する鍵ストリームの形成を可能にする初期化ベクトルを計算するための方法を示すフローチャートである。
【図１１】本発明のさらに別の実施の形態による、メモリにデータブロックを書き込む前にデータブロックを暗号化する鍵ストリームの形成を可能にする初期化ベクトルを計算するための方法を示すフローチャートである。
【図１２】本発明の一実施の形態による、暗号化されたデータブロックを解読する初期化ベクトルの再形成を可能にする初期化ベクトルの成分を記憶するための方法を示すフローチャートである。
【図１３】本発明の一実施の形態による、初期化ベクトルを再符号化するための方法を示すフローチャートである。
【図１４】開示した技法を使用する設計のシミュレーション、エミュレーション、及び製造のためのさまざまな設計表現又はフォーマットを示すブロック図である。
【図１】
0004500306.tif 000003
【図２】
0004500306.tif 000004
【図３】
0004500306.tif 000005
【図４】
0004500306.tif 000006
【図５】
0004500306.tif 000007
【図６】
0004500306.tif 000008
【図７】
0004500306.tif 000009
【図８】
0004500306.tif 000010
【図９】
0004500306.tif 000011
【図１０】
0004500306.tif 000012
【図１１】
0004500306.tif 000013
【図１２】
0004500306.tif 000014
【図１３】
0004500306.tif 000015
【図１４】
0004500306.tif 000016