JP4500306B2 - 解読待ち時間が削減されたメモリ暗号化のための装置及び方法 - Google Patents

解読待ち時間が削減されたメモリ暗号化のための装置及び方法 Download PDF

Info

Publication number
JP4500306B2
JP4500306B2 JP2006509096A JP2006509096A JP4500306B2 JP 4500306 B2 JP4500306 B2 JP 4500306B2 JP 2006509096 A JP2006509096 A JP 2006509096A JP 2006509096 A JP2006509096 A JP 2006509096A JP 4500306 B2 JP4500306 B2 JP 4500306B2
Authority
JP
Japan
Prior art keywords
initialization vector
data block
block
page
memory
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.)
Expired - Fee Related
Application number
JP2006509096A
Other languages
English (en)
Other versions
JP2006526173A (ja
Inventor
カーロス ロサス
ゲアリー グロンク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2006526173A publication Critical patent/JP2006526173A/ja
Application granted granted Critical
Publication of JP4500306B2 publication Critical patent/JP4500306B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

本発明の1つ又は2つ以上の実施の形態は、包括的には、暗号化技術の分野に関する。より詳細には、本発明の実施の形態の1つ又は2つ以上は、解読待ち時間が削減されたメモリ暗号化のための方法及び装置に関する。
インターネットが普及したことによって、インターネット商取引又はEコマースと一般に呼ばれる新たな形態の商取引が生み出された。Eコマースによって、ユーザは、インターネットを介して接続された世界的規模の社会から商品の売買をすることができる。今日のコンピュータの絶え間のないコストの削減及び処理速度の増加と相まって、この簡単さが加わったことにより、世界中の多くの家庭にパーソナルコンピュータ(PC)が取り入れられてきた。世界中の家庭にPCが普及したことに加えて、このようなPCがEコマースに使用されることにより、コンピュータ内に機密情報が記憶されることが多くなってきているのは、好ましいとはいえない状況である。
その結果、コンピュータユーザは、悪意ある第三者(rogue agent)の影響を受けやすくなる。悪意ある第三者は、パーソナルコンピュータ内にロードされた安全な情報へのアクセスを望むことがある。さまざまな悪意ある第三者が安全な情報にアクセスすることの抑制に努めることを目的として、多くのコンピュータシステムは、機密情報へのアクセスを阻止するための何らかの形態の暗号化を使用する。当業者に既知のように、暗号化技術は、情報を秘密に保ち、その情報が不正変更されていないと判断し、且つ、誰が情報の作成者であるかを判断するための技法を提供する。
米国特許第5809148号明細書 米国特許第5345580号明細書 米国特許出願公開第2003/0007635号明細書 米国特許出願公開第2004/0030889号明細書 米国特許第5259025号明細書 米国特許第6937727号明細書
暗号化技術の1つの形態は、公開鍵方式又は秘密鍵方式を含む。この方式では、送信情報は、送信前に暗号化され、公開鍵又は秘密鍵のいずれかを使用して受信機により解読される。しかしながら、機密情報がその指定されたロケーションに一旦到着すると、その情報は、多くの場合、解読されて記憶される。換言すると、機密情報は、その宛先では安全なフォーマットで保持されない。その結果、PCの動作中、悪意ある第三者は、そのPCにアクセスして、機密情報にアクセスする可能性がある。
さらに、Eコマースの普及によって、動画や音楽等のメディアアプリケーションが利用可能となった。このメディアアプリケーションは、1度だけの使用又は所定の期間の使用のためにPCにダウンロードすることができる。しかし、このようなメディアアプリケーションのコンテンツを悪意ある第三者によるアクセスから保護するための何らかのメカニズムがないと、メディアアプリケーションに関するEコマースは、メディアプロバイダにとって禁制のもとなるおそれがある。コンピュータシステムの機密情報を可能な限り保護するための1つの技法にメモリ暗号化があるが、メモリ暗号化は、プロセッサとメモリとの間に現在存在するボトルネックにより、現代のコンピュータシステム内では、行われていない。
メディアアプリケーション及びグラフィックスアプリケーションの要求の増大に応じて、プロセッサ速度は絶え間なく増加しているが、メモリ性能の増加は、プロセッサクロック周期の削減に追い着いていない。プロセッサ性能が増加し続けることになる場合、メモリ待ち時間の問題、すなわち、データユニットにアクセスするのに必要な時間の問題は、さらにはこのようなメディアアプリケーション及びグラフィックスアプリケーションの帯域幅の増加に伴って、革新的なメモリアーキテクチャを必要とする。その結果、たとえばマイクロプロセッサによるメモリ暗号化が実行できなくなる。その理由は、読み出しオペレーションの際のメモリ暗号化が、プロセッサとメモリとの間に存在する現在のボトルネックを上回る待ち時間をさらに増やすことになるからである。
本発明のさまざまな実施の形態を、添付図面の図に、限定としてではなく例として示す。
解読待ち時間が削減されたメモリ暗号化のための方法及び装置を説明する。一実施の形態では、この方法は、暗号化されたデータブロックをメモリから読み出すことを含む。暗号化されたデータブロックの読み出し中、そのデータブロックを暗号化するのに使用される鍵ストリームが、暗号化されたデータブロックの1つ又は2つ以上の記憶された判定基準に従って再生成される。暗号化されたデータブロックは、読み出されるとすぐに、再生成された鍵ストリームを使用して解読される。したがって、一実施の形態では、ランダムアクセスメモリ(RAM)又はディスクメモリのいずれかの暗号化が行われる。データが受信されるとすぐに、単一のクロックオペレーションを使用してデータを解読できるように、鍵ストリームはデータ取り出し中に再生成される。その結果、メモリ暗号化は、プロセッサとメモリとの間のメモリ待ち時間を悪化させることなく行われる。
以下の説明では、本発明の実施の形態の特徴を説明するのに、一定の専門用語が使用される。たとえば、用語「ロジック」は、1つ又は2つ以上の機能を実行するように構成されたハードウェア及び/又はソフトウェアを表す。たとえば、「ハードウェア」の例には、集積回路、有限状態マシン、さらには組み合わせ論理も含まれるが、これらに限定も制限もされるものではない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ、マイクロコントローラ等のプロセッサの形態を取ることができる。
「ソフトウェア」の例には、アプリケーション、アプレット、ルーチン、さらには一連の命令の形態の実行可能コードが含まれる。ソフトウェアは、プログラマブル電子回路、揮発性メモリ(たとえば、ランダムアクセスメモリ等)及び/もしくは不揮発性メモリ(たとえばあらゆるタイプの読み出し専用メモリ「ROM」、フラッシュメモリ)を含む半導体メモリデバイス、フロッピィディスケット、光ディスク(たとえば、コンパクトディスクもしくはデジタルビデオディスク「DVD」)、ハードドライブディスク、テープ等のあらゆるタイプのコンピュータ可読媒体又はマシン可読媒体に記憶することができる。一実施の形態では、本発明は、本発明の一実施の形態に従って、コンピュータ(もしくは他の電子デバイス)をプログラミングしてプロセスを実行するのに使用できる命令が記憶されたマシン可読媒体又はコンピュータ可読媒体を含むことができる製品として提供することができる。
<システム>
図1は、本発明の一実施の形態による、メモリ暗号化/解読ロジック200を含むコンピュータシステム100を示すブロック図である。このコンピュータシステム100は、プロセッサ(CPU)110とチップセット180との間で情報を通信するためのプロセッサシステムバス(フロントサイドバス(FSB(front side bus)))102を備える。プロセッサ110及びチップセット180は、FSB102を介して互いに接続されている。本明細書で説明するように、用語「チップセット」は、CPU110に接続されて所望のシステム機能を実行するさまざまなデバイスを集合的に説明するべく、当業者に既知の方法で使用される。
チップセット180は、メインメモリ140、及び、1つ又は2つ以上のグラフィックデバイス130に接続されている。一実施の形態では、メインメモリ110は揮発性メモリである。この揮発性メモリには、ランダムアクセスメモリ(RAM)、同期RAM(SRAM)、ダブルデータレート(DDR)、SデータRAM(SDRAM)、RAMバスデータRAM(RDRAM)等が含まれるが、これらに限定されるものではない。これに加えて、ハードディスクドライブデバイス(HDD)150、及び、1つ又は2つ以上の入出力(I/O)デバイス170(170−1、…、170−N)もチップセット180に接続されている。図示するように、CPU110は、メモリ暗号化/解読ロジック200を含む。このメモリ暗号化/解読ロジック200については、図2を参照してさらに説明する。
図2は、解読待ち時間が削減されたメモリ暗号化を示す目的で、本発明の一実施の形態によるCPU110をさらに示している。CPU110は、プロセッサコア112で構成され、たとえば、コピーバックキャッシュ130、及び、データの高速な一時記憶用のレベル1(L1)キャッシュ114を含むことができる。これに加えて、プロセッサ又はCPU110は、レベル2(L2)キャッシュ120も含むことができる。図示するように、L2キャッシュ120は、たとえばバックサイドバス118を介してバックサイドバスユニット116に接続されたオフチップメモリである。さらに、CPU110は、図1に示すようなFSB102とインターフェースするための外部ユニット104も含む。
一方、従来のCPUとは異なり、CPU110は、メモリ暗号化/解読ロジック200を含む。一実施の形態では、このロジック200によって、CPU110は、暗号アルゴリズムを使用して、たとえば揮発性メモリのコンテンツを安全に暗号化することが可能になる。この揮発性メモリは、たとえば図1に示すようなメインメモリ140等である。ブロック暗号アルゴリズムによって提供されるセキュリティは、暗号化及び解読の2つのプロセスから成る。これら2つのプロセスは、相反する。暗号化は、平文と呼ばれる使用可能なメッセージを暗号文と呼ばれる読み取り不可能な形態に変換することである。逆に、解読は、暗号文から平文を復元する変換である。
一実施の形態では、メモリ解読は、暗号化されたデータブロック(暗号文)のメモリ読み出し中に鍵ストリームを再生成することによって提供される。暗号文は、一旦利用可能になると、再生成された鍵ストリームを使用して、たとえば単一クロックサイクル内で解読される。その結果、プロセッサとメインメモリとの間の本来的なメモリ待ち時間の悪化が最小にされると同時に、たとえばRAMやディスクメモリ等に含まれるデータの暗号化が可能になる。本発明の一実施の形態による暗号化/解読ロジック200及び暗号化ページ構造体(encryption page structure)250については、図3を参照してさらに示す。
図3は、本発明の一実施の形態による、メモリ読み出し解読オペレーションの一実施の形態におけるロジック200を示している。図示するように、ロジック200は、秘密鍵232及び初期化ベクトル(IV(initialization vector))220に従って鍵ストリーム234を生成するための暗号ロジック230を含む。鍵ストリームが形成されるとすぐに、ロジック200は、XORブロック240を使用して、鍵ストリーム234と暗号文202との排他的論理OR演算(XOR)を実行し、平文204を形成する。一実施の形態では、暗号ロジック230は、たとえば次世代暗号化標準(AES(advanced encryption standard))、暗号サーペント(cipher serpent)、又は、他の同様の対称ブロック暗号アルゴリズムである。
ブロック暗号及びストリーム暗号の2つの基本的なタイプの対称暗号化/解読アルゴリズムがある。ブロック暗号は、たとえばNビットで構成される平文及び暗号文のブロックに対して操作を実行する。これとは対照的に、ストリーム暗号は、平文及び暗号文のストリームに対して一時に1ビット又は1バイトの操作を実行する。ブロック暗号では、同じ平文ブロックは、常に、同じ鍵を使用して同じ暗号文ブロックに暗号化される。これとは対照的に、ストリーム暗号を使用すると、平文が暗号化されるごとに、同じ平文のバイト又はビットは、異なるビット又はバイトに暗号化されることになる。この不一致は、ブロック暗号が秘密鍵及び平文の値を取り込み、暗号化の多くのラウンドを通じて実行され、暗号文を直接生成することにより生じる。
逆に、ブロック暗号解読は、同じ鍵及び暗号文を取り込み、逆暗号化の多くのラウンドを通じて実行され、平文を生成する。一般に、それらの場合の双方で実行される暗号化の多くラウンドは、かなりの量の時間を要するので、プロセッサとメモリとの間の本来的な待ち時間により、メモリ読み出し解読には適していない。したがって、図示した実施の形態では、暗号ロジック230は、削減された個数のラウンドを使用して、メモリ読み出し待ち時間を適合させると同時に、それにもかかわらず、十分なセキュリティを提供する。換言すると、メモリからデータをフェッチするのに必要な時間内に鍵ストリームを生成するための暗号化モードをサポートするブロック暗号が、暗号ロジック230として使用される。代替的な実施の形態では、ストリーム暗号を暗号ロジック230に使用することもできる。
当業者に既知のように、ストリーム暗号は、秘密鍵、及び、場合によっては、変更可能な初期化ベクトル(IV)又は公開値を使用して、鍵ストリームを生成するための或る機能を実行する。鍵ストリームは、生成されるとすぐに、単一クロックオペレーション内で平文と結合されて、暗号文が生成される。逆に、ストリーム暗号解読は、暗号化と同じ状態で暗号を元に戻して、同じ鍵ストリームを生成することから成る。この鍵ストリームは、逆オペレーションを使用して暗号文と結合され、平文が生成される。
再び図3を参照して、入力暗号ロジック230は秘密鍵232である。この秘密鍵232は、たとえば、初期ブートアップ中にCPU110が生成することができ、電源オフ(メモリのコンテンツがもはや必要とされない時)まで保持することができる。IV220は、平文の暗号化及び暗号文の対応する解読で使用される。ただし、IV220は、秘密に維持されなければならない鍵232と異なり秘密に維持される必要はない。暗号ロジック230を効率的に使用して最適なセキュリティを提供するには、予測不可能な初期化ベクトルが必要とされる。換言すると、本明細書で説明する暗号ロジック230は、NONCE(ノンス)であるIVを必要とする(すなわち、IVは、所与の鍵に基づいてそのモードの各実行について一意でなければならない)。
一実施の形態では、暗号ロジック230は、カウンタモード(CTR)に従って機能することができる。このカウンタモードは、カウンタと呼ばれる1組の入力ブロックに順方向暗号化(forward cipher)を適用して、平文と論理的に結合(XOR)されて暗号文を生成する一連の出力ブロックを生成することを特徴とする。この逆もまた同様である。一意のIVの生成が必要とされる理由は、平文ブロックが既知のIV値を使用して暗号化された場合、順方向暗号関数の出力は、関連した暗号文から容易に求められるからである。この出力によって、同じIVを使用して暗号化された他のあらゆる平文ブロックを、それら平文ブロックの関連した暗号ブロックから容易に復元して容易に復元することが可能になる。したがって、一意のIVを生成する目的で、一実施の形態では、暗号化ページ構造体260が提供される。
図3に示すように、暗号化ページ構造体260は、各ページについての1つ又は2つ以上のカウンタ及び各データブロックを、図1に示すようなメモリ140等のメモリシステム内に記憶するように設計される。これらのカウンタ及びデータブロックは、たとえば、カウンタロジック290に記憶される。図示した実施の形態では、カウンタブロック290は、たとえば、所与のページへのページ書き込み数を追跡するためのページ書き込みカウンタ(PWC(page write counter))、及び、現在の初期化ベクトル値(IVC(initialization vector value))を含むことができる。現在の初期化ベクトル値IVCを使用する実施の形態では、メモリシステム内の各ページに、V初期化ベクトルのアレイを割り当てることができる。これらのV初期化ベクトルは、たとえば乱数発生器(図示せず)を使用して形成される。このような実施の形態では、IVは、たとえばページIV(PIV(page IV))ブロック280(280−1、…、280−N)等のデータ構造体内に記憶される。このPIVブロック280は、各ページについて所定の個数の一意の値を含み、それによって、各実行について一意のIVを生成することができる。
上述したように、一意のIVを生成することが、最適なセキュリティの提供及び初期化ベクトルの予測の防止に必要とされる。各実行について一意のIVを生成するための1つの技法は、各メモリ書き込みにつき新しいIVを生成することである。あいにく、IVは、キャッシュブロックサイズに対するIVの相対的なサイズに応じて、元のデータの50〜100%までの空間を要する可能性がある。その結果、各書き込みについて新しいIVを生成することによって引き起こされる空間の制約によって、新しいIVは、オンチップの一時的なメモリ(キャッシュメモリ)に記憶することができない。
その結果、メモリからの各読み出しオペレーションについて、個別の読み出しを実行して、データの暗号化に使用されるオフチップのIVの位置を特定しなければならなくなる。その結果、鍵ストリームを生成して、暗号化されたメモリから読み出されたデータを解読できるようになる前に、この個別の読み出しオペレーションを実行しなければならない。あいにく、この個別の読み出しは、プロセッサとメモリとの間に既に存在する待ち時間をさらに悪化させることになり、したがって、十分なソリューションではない。
したがって、一実施の形態では、ページレベルテーブルが、ページのすべてのキャッシュブロックの初期化ベクトルの形成で使用される、削減された個数の、たとえば64ビットの乱数(「ページIV」)を記憶するのに使用される。したがって、削減された個数の64ビットページIVを使用することによって、64ビットページIVは、各書き込みについて一意のIVを形成するのに使用されると同時に、オンチップメモリ内にページIVの記憶が提供され、上述したような読み出しの追加がなくなる。
したがって、メモリ読み出しオペレーションに応じて、暗号化されたデータブロックが、アドレス210に従って、たとえば外部バスユニット104(図2)を介してメモリから要求される。たとえばページアドレスに基づいて、暗号化ページ構造体260は、たとえばPIV280内の対応するページを特定するために照会を受ける。これに加えて、PIV280へのインデックスが、ブロックIVカウンタ(BC)270(270−1、…、270−N)等のデータ構造体を介して提供される。一実施の形態では、BC270は、たとえば、PWC値、及び、初期化ベクトルインデックス又はIVC値を含む2次元データ構造体を記憶する。
したがって、ページアドレス及びブロックアドレスに基づき、BC270は、PIV280へのインデックスを提供してブロックIV値282を提供するだけでなく、平文204の暗号化中に記憶されたブロックカウンタ値274も提供して、IV220を形成する。さらに別の実施の形態では、初期化ベクトル220は、ページアドレス212、及び、ブロックアドレス214のN−Cビットの最上位ビット(MSB)を含む。ここで、Nはアドレスのビット長を表すのに対して、Cはブロックカウンタ値274のビット長を表す。一実施の形態では、Pはlog2(ページのバイト数)であり、Cはlog2(キャッシュブロックのバイト数)であり、Nは(P−C)又はlog2(ページのキャッシュブロック数)である。この情報に基づいて、一意のIV220が形成され、暗号ロジック230に提供されて、鍵ストリーム234が生成される。
図4に示すように、カウンタロジック290は、たとえば、各ページについてのPWC値及び現在のIVC値を含む。したがって、平文204の書き込み要求に応答して、現在のIVC値が、PIV280を参照するのに使用されて、ブロックIV値282が生成される。これに加えて、現在のPWC値が、ブロックカウンタ値274として使用される。一実施の形態では、ブロックIV値282及びブロックカウンタ値274は、平文204のブロック番号に従ってBC270内に記憶される。
一実施の形態では、ブロックアドレス214のN−C最上位ビット及びページアドレス212によって、IV220の形成が完了される。したがって、ページ初期化ベクトルを再利用すると共にカウンタ値を使用すると、IV220は、IVをオフチップに記憶する必要なく各繰り返しについて一意であることが保証される。したがって、IV220を利用すると、ストリーム暗号250は、IV220及び秘密鍵232を使用して鍵ストリーム252を生成する。鍵ストリーム252は、生成されるとすぐに、たとえばXORロジック240を使用して平文204と結合され、暗号文202が形成される。暗号文202は、一旦形成されると、外部バスユニット104に提供することができる。外部バスユニット104は、アドレス210に従ってその暗号文をメモリに書き込む。
さらに別の実施の形態では、図5を参照して示すように、IV再符号化ロジック300が、データブロックのIV220が古いかどうかを検出することを担当する。一実施の形態では、再符号化ロジック300は、データの認可されていない解読を妨げるために各書き込みオペレーションについて一意のIVが確実に生成されることを担当する。その結果、ページIVに必要とされる記憶量は、一定値に制限することができる。これに加えて、古いIVを有するデータの再符号化に必要とされる余分な読み出し及び書き込みの量は、ページIVの個数(V)を増加させることによって削減することができる。
一実施の形態では、これは、最も過去に使用された、すなわち最長未使用のIV220を有するデータブロックを特定することによって実行される。このようなものが検出されると、たとえば古いIVロジック320を使用して、再符号化ロジック330は、新しいIV332を選択でき、暗号ロジック230及び暗号ロジック250を使用して、その特定されたデータブロックを再符号化(再暗号化)し、暗号文202を形成することができる。一実施の形態では、特定されたデータブロックを含むページのIVC272の現在の値に従って、古いIVのページIV部分を、PIV280からの異なるページIVに取り替えることにより、新しいIV332が生成される。一実施の形態では、同じストリーム暗号が、解読及び再暗号化を行うように、ブロック暗号230(図5)が、ストリーム暗号250の別の例となる)。
一実施の形態では、古いIVを有するデータの再符号化は、再符号化が必要とされる時に、再符号化ロジック330に例外を発生させることによるソフトウェア割り込みルーチン又はマイクロコード割り込みルーチンによって実行することができる。したがって、再符号化ロジックは、古いIVを有するデータの検出及び割り込みの発行を実行することに簡単化することができる。一実施の形態では、書き込みオペレーションごとに多くとも1つの再符号化が実行されるように、データの再符号化は、時間の経過と共に展開される。
代替的な実施の形態では、再符号化は、メモリパイプラインの空のスロットにスケジューリングすることができる。したがって、再符号化ロジック330と共に削減された個数のページ初期化ベクトルを使用することによって、IV値の記憶に必要とされる空間の量は、データの記憶に必要なものと比較すると非常に小さく、したがって、オフチップのIVの読み出しオペレーションを追加する必要がないようにIVをオンチップに記憶することが可能になり、それによって、大幅なシステムセキュリティが達成される。
したがって、古いIV220が暗号ロジック230に提供されて、暗号文202が解読され、平文204が生成される。これと同時に、新しいIV332が、暗号ロジック250に提供されて、平文204を再暗号化するための鍵ストリーム254が生成される。したがって、再符号化ロジック330は、IV220の予測を阻止することによって、セキュリティ機能を追加して提供する。一実施の形態では、これは、古いIVロジック320内で以下の方程式を使用して実行される。
Figure 0004500306
その結果、説明の実施の形態は、各書き込みについて新しい初期化ベクトルを生成することによって暗号ロジックの性能特性及びセキュリティ特性を維持すると同時に、古いデータを再符号化することによって初期化ベクトルの記憶に必要なものの追加を最小にする。古いデータを再符号化するので、古い初期化ベクトルを保持する必要はない。本発明の実施の形態を実施するための手続的な方法を次に説明する。
<オペレーション>
図6は、本発明の一実施の形態による、解読待ち時間が削減された、暗号化されたメモリブロックの解読のための方法400を示すフローチャートである。一実施の形態では、方法400は、たとえば、図3に示すような暗号化/解読ロジック200内で実行される。プロセスブロック402において、たとえば、暗号化されたデータブロックに対する要求に応答して、暗号化されたデータブロック(暗号文)がメモリから読み出される。一実施の形態では、説明したメモリは、たとえばRAM又は不揮発性メモリである。代替的に、メモリは、たとえば図1のHDD150内のディスクメモリと呼ばれる。
当業者に既知のように、コンピュータシステムは、プロセッサとメモリシステムとの間でかなりの量のメモリ待ち時間を示す。この待ち時間によって、従来のコンピュータシステムは、プロセッサメモリ暗号化を提供することが妨げられている。しかしながら、従来のシステムと異なり、プロセスブロック404において、鍵ストリームが、暗号化されたデータブロックの読み出し中に再生成され、その結果、メモリ読み出しオペレーションに導入される待ち時間が最小にされる。再生成された鍵ストリームは、データブロックをメモリに書き込む前に当該データブロックを暗号化するのに使用された鍵ストリームである。
一実施の形態では、鍵ストリームは、以下で詳細に説明するように、データブロックの1つ又は2つ以上の記憶された判定基準に従って再生成される。したがって、プロセスブロック430において、暗号化されたデータブロックの読み出しが完了するとすぐに、プロセスブロック440において、暗号化されたデータブロックは、生成された鍵ストリームに従って解読される。一実施の形態では、これは、論理XOR演算を使用して実行され、単一クロックサイクル内で実行することができる。それによって、導入される待ち時間は単一クロックサイクルに制限される。その結果、プロセッサとメモリとの間のメモリ待ち時間は、本明細書で説明したメモリ暗号化技法によっては悪化しない。
図7は、本発明の一実施の形態による、図6を参照して説明したプロセスブロック404の鍵ストリームを再生成するための方法410を示すフローチャートである。プロセスブロック412において、暗号化されたデータブロックを含むページに従って、データブロックを暗号化するのに使用された初期化ベクトルの初期部(initial portion)(ページIV)が特定される。一実施の形態では、そのページは、ブロック番号と共に、PIV280(図3)等の複数の初期化ベクトル(ページIV)を含むデータ構造体へのインデックスを提供する。上述したように、メモリからのデータブロックにアクセスするためのページングシステムが、説明の実施の形態の範囲内にあると仮定される。しかしながら、説明の実施の形態は、当業者に既知のように、他の形態のメモリ編成にも適用することができる。
プロセスブロック414において、たとえばブロックカウンタ値等のデータブロックのブロック番号に従って、データブロックを暗号化するのに使用された初期化ベクトルの残部(remaining portion)が特定される。プロセスブロック416において、初期化ベクトルの特定された初期部及び初期化ベクトルの特定された残部、並びに秘密鍵に従って、鍵ストリームが計算される。したがって、説明の実施の形態では、初期化ベクトルは、公開されるか、又は、本明細書で説明したメモリ暗号化/解読のセキュリティを危険にさらすことなく公開することができる。
図8は、本発明のさらに別の実施の形態による、図7のプロセスブロック416の鍵ストリームを再計算するための方法420を示すフローチャートである。プロセスブロック422において、暗号化されたデータブロックを含むページに従って、記憶されたページ初期化ベクトルが選択される。選択されるとすぐに、プロセスブロック424において、暗号化されたデータブロックのブロック番号に従って、記憶されたCビットカウンタ値が選択される。一実施の形態では、これらの値は、図2〜図5を参照して示したように、たとえば暗号化ページ構造体260に記憶される。プロセスブロック426において、ページ初期化ベクトル値と、Cビットカウンタ値と、暗号化されたデータブロックのアドレスの(N−C)最上位ビットとに従って、データブロックを暗号化するのに使用された初期化ベクトルが形成される。
上述したように、アドレスはNビット値であるのに対して、カウンタはCビット値である。したがって、たとえば図3を参照して上述したように、初期化ベクトル、すなわちIV220は、指示された値に従って形成される。プロセスブロック428において、形成された初期化ベクトルは、秘密鍵を使用して暗号化され、鍵ストリームが形成される。したがって、説明の実施の形態では、当該説明の実施の形態の解読部の期間中に、ブロック暗号を使用して鍵ストリーム値を形成することができる。一実施の形態では、このブロック暗号は、カウンタモード(CTR)に従って操作される、連邦情報処理(FIPS(federal information processing))の対称鍵ブロック暗号アルゴリズムである。
図9は、本発明の一実施の形態による、メモリ内にデータブロックを記憶する前にデータブロックを暗号化するための方法500を示すフローチャートである。説明の実施の形態では、方法500は、図4の暗号化/解読ロジック200を参照して示される。プロセスブロック502において、データブロックの1つ又は2つ以上の判定基準に従って、そのデータブロックの初期化ベクトルが計算される。説明の実施の形態では、この判定基準には、データブロックを含むページやデータブロックのブロック番号等のデータブロックのアドレスを含めることができる。これに加えて、追加された判定基準には、たとえば、データブロックに従って、1つ又は2つ以上のカウンタ値を含めることができる。
プロセスブロック540において、初期化ベクトルに使用された判定基準が記憶される。一実施の形態では、この判定基準は、たとえば暗号化ページ構造体260(図4)内に記憶されて、初期化ベクトルの再計算を可能にする。プロセスブロック560において、鍵ストリームが、たとえばストリーム暗号250(図4)を使用して、初期化ベクトル及び秘密鍵から計算される。プロセスブロック562において、鍵ストリームに従って、データブロックが、たとえばXOR演算を使用して暗号化される。プロセスブロック564において、暗号化されたデータブロックがメモリ内に記憶される。このメモリには、上述したような不揮発性メモリ、ディスクメモリ等が含まれる。
図10は、本発明の一実施の形態による、図9のプロセスブロック502の初期化ベクトルを計算するための方法510を示すフローチャートである。プロセスブロック512において、書き込み要求が受け取られたかどうかが判断される。受け取られるとすぐに、プロセスブロック514において、要求されたデータブロックを含むページ及び要求されたデータブロックのブロック番号が特定される。プロセスブロック516において、データブロックを含むページに従って、ページ初期化ベクトルが形成される。プロセスブロック518において、データブロックのブロック番号に従って、ブロック初期化ベクトルが形成される。プロセスブロック520において、ページ初期化ベクトル及びブロック初期化ベクトルが結合されて、データブロックを暗号化するのに使用された初期化ベクトルが形成される。
図11は、本発明の一実施の形態による、図10のプロセスブロック520の初期化ベクトルを形成するように結合を行うための方法530を示すフローチャートである。プロセスブロック532において、暗号化されたデータブロックを含むページ、及び、オプションとしてデータブロックのブロック番号に従って、記憶されたページ初期化ベクトル値が選択される。プロセスブロック534において、暗号化されたデータブロックのブロック番号に従って、記憶されたCビットカウンタ値が選択される。プロセスブロック536において、ページ初期化ベクトル値と、Cビットカウンタ値と、暗号化されたデータブロックのアドレスのN−C最上位ビットとに従って、初期化ベクトルが形成される。
したがって、説明の実施の形態では、データブロックの暗号化用に、128ビット暗号化が提供される。しかしながら、要望に応じて初期化ベクトルに値を追加したり、初期化ベクトルから値を差し引いたりできるようなさまざまなNビット暗号化を提供することができる。プロセスブロック538において、初期化ベクトルが、秘密鍵を使用して暗号化されて、鍵ストリームが形成される。説明の実施の形態では、鍵ストリームを使用した初期化ベクトルの暗号化は、たとえばストリーム暗号を使用して行われる。このストリーム暗号は、たとえば、図4を参照して説明したような暗号ロジック250等である。したがって、説明の実施の形態では、メモリの読み返し中に暗号化を行うにはブロック暗号を使用できるのに対して、説明の実施の形態に従ってデータブロックの書き込み及び暗号化中に鍵ストリームを形成するにはストリーム暗号を使用することができる。
図12は、本発明の一実施の形態による、図9のプロセスブロック540の初期化ベクトルを形成するのに使用される判定基準を記憶するための方法550を示すフローチャートである。プロセスブロック552において、初期化ベクトルのページIV部を選択するのに使用されたページカウンタ値が特定される。特定されるとすぐに、プロセスブロック554において、初期化ベクトルのブロックIV部を形成するのに使用されたブロックカウンタ値が特定される。特定されるとすぐに、これらのページカウンタ値及びブロックカウンタ値は、データブロックのブロック番号に従って、暗号化ページ構造体内に記憶される。
図13は、本発明のさらに別の実施の形態による、たとえば図5を参照して示したような初期化ベクトルの再符号化のための方法570を示すフローチャートである。プロセスブロック572において、最も過去の初期化ベクトルを有するデータブロックが特定される。一実施の形態では、このデータブロックの特定は、方程式(1)を使用して行われる。特定されるとすぐに、プロセスブロック574において、その特定された初期化ベクトルが、現在の初期化ベクトルに置き換えられる。一実施の形態では、現在の初期化ベクトルは、古いIVのページIV部を、IVCの現在の値によってインデックスされたPIV280の現在のページIVに置き換えることによって形成される。取り換えられるとすぐに、特定されたデータブロックは、現在の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って再暗号化される。
図14は、開示した技法を使用した設計のシミュレーション、エミュレーション、及び製造のためのさまざまな表現又はフォーマットを示すブロック図である。設計を表すデータは、多くの方法で設計を表すことができる。まず、シミュレーションに有用なように、ハードウェアは、ハードウェア記述言語又は別の機能記述言語を使用して表すことができる。これらの言語は、基本的には、設計されたハードウェアがどのように動作するかを予測する、コンピュータ化されたモデルを提供する。ハードウェアモデル610は、シミュレーションソフトウェア620を使用してそのモデルをシミュレーションできるように、コンピュータメモリ等の記憶媒体600に記憶することができる。このシミュレーションソフトウェア620は、特定のテストスイート630をハードウェアモデルに適用して、そのハードウェアモデルが、意図された通りに確かに機能するかどうかを判断する。いくつかの実施の形態では、シミュレーションソフトウェアは、媒体に記録されることも、取り込まれることも、含まれることもない。
これに加えて、設計プロセスのいくつかの段階では、ロジック及び/又はトランジスタゲートを有する回路レベルモデルを生成することもできる。このモデルは、プログラマブルロジックを使用してそのモデルを形成する専用ハードウェアシミュレータによって何度か同じようにシミュレーションすることができる。このタイプのシミュレーションは、さらに程度が進むと(taken a degree further)、エミュレーション技法となることがある。いずれの場合も、再構成可能なハードウェアが、開示した技法を使用するモデルを記憶したマシン可読媒体を含むことができる別の実施の形態となる。
さらに、或る段階におけるほとんどの設計は、ハードウェアモデルのさまざまなデバイスの物理的配置を表すデータレベルに達する。従来の半導体製造技法が使用される場合、ハードウェアモデルを表すデータは、集積回路を製造するのに使用される異なるマスクレイヤ又はマスク上のさまざまな機能の存否を指定するデータとすることができる。この場合も、集積回路を表すこのデータは、開示した技法を実行するように回路機構ロジック及びデータをシミュレーション又は製造できるという点で、開示した技法を実施する。
設計のいずれの表現においても、データは、どの形態のマシン可読媒体にも記憶することができる。このような情報を搬送するように変調されたか、もしくは、別の方法で生成された光波もしくは電気波660、メモリ650、又は、ディスク等の磁気記憶装置もしくは光記憶装置640は、マシン可読媒体とすることができる。これらの媒体のいずれも設計情報を運ぶことができる。用語「運ぶ(carry)」(たとえば、情報を運ぶマシン可読媒体)は、このように、記憶デバイスに記憶された情報又は搬送波に符号化もしくは変調された情報を包含する。設計又は設計の細目を記述するビットの集合は、(搬送波や記憶媒体等のマシン可読媒体に実施されると)その内外で保証できる商品とすることもできるし、さらに別の設計又は製造用に他者が使用することもできる。
<代替的な実施の形態>
他の実施の形態では、異なるシステム構成を使用できることが理解されよう。たとえば、システム100が単一のCPU110を含むのに対して、他の実施の形態では、マルチプロセッサシステム(1つ又は2つ以上のプロセッサが、構成及びオペレーションにおいて上述したCPU110と同様のものとすることができる)は、さまざまな実施の形態のデータバス電力制御手法から恩恵を得ることができる。さらに、たとえばサーバ、ワークステーション、デスクトップコンピュータシステム、ゲームシステム、埋め込み式コンピュータシステム、ブレードサーバ等の異なるタイプのシステム又は異なるタイプのコンピュータシステムを他の実施の形態に使用することもできる。
例示の実施の形態及び最良の形態を開示したが、添付の特許請求の範囲によって画定された本発明の実施の形態の範囲内にあることを維持しつつ、開示した実施の形態に対して変更及び変形を実施することができる。
本発明の一実施の形態による、解読待ち時間が削減されたメモリ暗号化を可能にするためのメモリ暗号化/解読ロジックを有するプロセッサを含むコンピュータシステムを示すブロック図である。 本発明のさらに別の実施の形態による、図1に示すようなプロセッサをさらに示すブロック図である。 本発明のさらに別の実施の形態による、図2に示すような、プロセッサ、メモリ暗号化/解読ロジック、及び暗号化ページ構造体をさらに示すブロック図である。 本発明のさらに別の実施の形態による、図2に示すような、プロセッサ、メモリ暗号化/解読ロジック、及び暗号化ページ構造体をさらに示すブロック図である。 本発明の一実施の形態による、初期化ベクトル再符号化ロジックを示すブロック図である。 本発明の一実施の形態による、メモリからの暗号化されたデータブロック読み出しの解読のための方法を示すフローチャートである。 本発明のさらに別の実施の形態による、メモリからの暗号化されたデータブロック読み出しを解読する鍵ストリームを生成するための方法を示すフローチャートである。 本発明の一実施の形態による、メモリからの暗号化されたデータブロック 本発明の一実施の形態による、メモリにデータブロックを書き込む前にデータブロックを暗号化するための方法を示すフローチャートである。 本発明の一実施の形態による、メモリにデータブロックを書き込む前にデータブロックを暗号化する鍵ストリームの形成を可能にする初期化ベクトルを計算するための方法を示すフローチャートである。 本発明のさらに別の実施の形態による、メモリにデータブロックを書き込む前にデータブロックを暗号化する鍵ストリームの形成を可能にする初期化ベクトルを計算するための方法を示すフローチャートである。 本発明の一実施の形態による、暗号化されたデータブロックを解読する初期化ベクトルの再形成を可能にする初期化ベクトルの成分を記憶するための方法を示すフローチャートである。 本発明の一実施の形態による、初期化ベクトルを再符号化するための方法を示すフローチャートである。 開示した技法を使用する設計のシミュレーション、エミュレーション、及び製造のためのさまざまな設計表現又はフォーマットを示すブロック図である。

Claims (25)

  1. 暗号化されたデータブロックをメモリから読み出す段階と
    プロセッサが、前記暗号化されたデータブロックの前記メモリからの読み出し中に、該データブロックの1以上の記憶された判定基準に従って、該データブロック暗号化に使用された鍵ストリームを再生成する段階と
    前記暗号化されたデータブロックの読み出しが完了した場合に前記プロセッサが、前記生成した鍵ストリームに従って、前記暗号化されたデータブロックを復号する段階と
    備え、
    前記プロセッサが前記鍵ストリームを再生成する段階は、
    前記暗号化されたデータブロックを含むページに従って、前記データブロックの暗号化に使用された初期化ベクトルの初期部を特定する段階と、
    前記データブロックのブロック番号に従って、前記データブロックの暗号化に使用された前記初期化ベクトルの残部を特定する段階と、
    前記初期化ベクトルの前記特定した初期部、前記初期化ベクトルの前記特定した残部、および秘密鍵に従って、前記鍵ストリームを再計算する段階と
    を有する方法。
  2. 前記暗号化されたデータブロックを読み出す段階は、
    前記暗号化されたデータブロックに対する要求を受け取る段階と
    前記暗号化されたデータブロックをランダムアクセスメモリから読み出す段階
    有する請求項1に記載の方法。
  3. 前記プロセッサが前記鍵ストリームを再生成する段階は、
    1以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記暗号化されたデータブロックを含むページ、及び、前記暗号化されたデータブロックのブロック番号に従って、記憶されたページ初期化ベクトル値を選択する段階と
    前記暗号化されたデータブロックの前記ブロック番号に従って、記憶されたCビットカウンタ値を選択する段階と
    前記ページ初期化ベクトル値と、前記Cビットカウンタ値と、前記暗号化されたデータブロックのアドレスがNビットアドレスである場合に該アドレスの(N−C)最上位ビットとに従って、前記データブロックを暗号化するのに使用された前記初期化ベクトルを再形成する段階と
    前記秘密鍵を使用して前記形成した初期化ベクトルを暗号化することにより前記鍵ストリームを形成する段階と
    さらに有する請求項1または2に記載の方法。
  4. 前記暗号化されたデータブロックを復号する段階は、単一クロックサイクル内で実行される
    請求項1から3のいずれかに記載の方法。
  5. コンピュータに
    暗号化されたデータブロックをメモリから読み出す手順と
    プロセッサが、前記暗号化されたデータブロックの前記メモリからの読み出し中に、該データブロックの1以上の記憶された判定基準に従って、該データブロックを暗号化するのに使用された鍵ストリームを再生成する手順と
    前記暗号化されたデータブロックの読み出しが完了した場合に前記プロセッサが、前記生成した鍵ストリームに従って、前記暗号化されたデータブロックを復号する手順と
    実行させ
    前記プロセッサが前記鍵ストリームを再生成する手順は、
    前記暗号化されたデータブロックを含むページに従って、前記データブロックの暗号化に使用された初期化ベクトルの初期部を特定する手順と、
    前記データブロックのブロック番号に従って、前記データブロックの暗号化に使用された前記初期化ベクトルの残部を特定する手順と、
    前記初期化ベクトルの前記特定した初期部、前記初期化ベクトルの前記特定した残部、および秘密鍵に従って前記鍵ストリームを再計算する手順と
    を有するプログラム
  6. 前記暗号化されたデータブロックをメモリから読み出す手順は、
    前記暗号化されたデータブロックに対する要求を受け取る手順と
    前記暗号化されたデータブロックをランダムアクセスメモリから読み出す手順と
    有する請求項に記載のプログラム
  7. 前記プロセッサが前記鍵ストリームを再生成する手順は、
    1以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記暗号化されたデータブロックを含むページ、及び、前記暗号化されたデータブロックのブロック番号に従って、記憶されたページ初期化ベクトル値を選択する手順と
    前記暗号化されたデータブロックの前記ブロック番号に従って、記憶されたCビットカウンタ値を選択する手順と
    前記ページ初期化ベクトル値と、前記Cビットカウンタ値と、前記暗号化されたデータブロックのアドレスがNビットアドレスである場合に該アドレスの(N−C)最上位ビットとに従って、前記データブロックを暗号化するのに使用された前記初期化ベクトルを再形成する手順と
    前記秘密鍵を使用して前記形成した初期化ベクトルを暗号化することにより前記鍵ストリームを形成する手順と
    さらに有する請求項5または6に記載のプログラム
  8. 前記暗号化されたデータブロックの復号は、単一クロックサイクル内で実行される
    請求項5から7のいずれかに記載のプログラム
  9. プロセッサが、データブロックの1以上の判定基準に従って該データブロックの初期化ベクトルを計算する段階と
    プロセッサが、前記データブロックの前記初期化ベクトルを計算するのに使用された、前記データブロックの前記判定基準を記憶する段階と
    前記プロセッサが、前記初期化ベクトル及び秘密鍵から鍵ストリームを計算する段階と
    前記プロセッサが、前記鍵ストリームに従って前記データブロックを暗号化する段階と
    前記プロセッサが、前記暗号化したデータブロックをメモリに記憶する段階と
    備え
    前記プロセッサが前記初期化ベクトルを計算する段階は、
    前記データブロックの書き込み要求を受け取る段階と、
    前記データブロックを含むページ、及び、該ページ内における前記データブロックのブロック番号を特定する段階と、
    前記データブロックを含む前記ページ、及び、前記暗号化されたデータブロックの前記ブロック番号に従って、ページ初期化ベクトルを形成する段階と、
    前記データブロックの前記ブロック番号に従って、ブロック初期化ベクトルを形成する段階と、
    前記ページ初期化ベクトル及び前記ブロック初期化ベクトルを結合することにより前記初期化ベクトルを形成する段階と
    を有する方法。
  10. 前記プロセッサが前記ページ初期化ベクトルを形成する段階は、
    1以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記データブロックを含む前記ページに割り当てられる複数のページ初期化ベクトルを特定する段階と
    前記データブロックを含む前記ページのページカウンタ値に従って、ページ初期化ベクトルを選択する段階と
    有する請求項に記載の方法。
  11. 前記プロセッサが前記ブロック初期化ベクトルを形成する段階は、
    前記データブロックを含む前記ページへのページ書き込み用のブロックカウンタ値を、前記ブロック初期化ベクトルとして選択する段階
    有する請求項9または10に記載の方法。
  12. 前記プロセッサが前記ページ初期化ベクトル及び前記ブロック初期化ベクトルを結合することにより前記初期化ベクトルを形成する段階は
    1以上の一意のページ初期化ベクトルを含むオンチップデータ構造体から、前記暗号化されていないデータブロックを含むページに従って、記憶されたページ初期化ベクトル値を選択する段階と
    前記暗号化されたデータブロックの前記ブロック番号に従って、記憶されたCビットカウンタ値を選択する段階と
    前記ページ初期化ベクトル値と、前記Cビットカウンタ値と、前記暗号化されたデータブロックのアドレスがNビットアドレスである場合に該アドレスの(N−C)最上位ビットとに従って、前記データブロックを暗号化するのに使用された前記初期化ベクトルを形成する段階と
    前記秘密鍵を使用して前記形成した初期化ベクトルを暗号化することにより前記鍵ストリームを形成する段階と
    を有する請求項9から11のいずれかに記載の方法。
  13. 前記プロセッサが前記鍵ストリームを計算する段階は、
    ストリーム暗号及びブロック暗号の一方に前記初期化ベクトル及び前記秘密鍵を提供することにより前記鍵ストリームを生成する段階
    有する請求項9から12のいずれかに記載の方法。
  14. 前記プロセッサが、最も過去の初期化ベクトルを有するデータブロックを特定する段階と
    前記プロセッサが、前記特定した初期化ベクトルについて一意の初期化ベクトルを計算する段階と
    前記プロセッサが、前記一意の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って、前記特定したデータブロックを再暗号化する段階と
    をさらに備える請求項9から13のいずれかに記載の方法。
  15. 前記プロセッサが前記一意の初期化ベクトルを計算する段階は、
    前記特定したデータブロックを含むページのページカウンタ値に従って、現在のページ初期化ベクトル値を特定する段階と
    前記特定した初期化ベクトルのページ初期化ベクトル部を前記現在のページ初期化ベクトル値に取り替えることにより前記一意の初期化ベクトルを形成する段階と
    有する請求項14に記載の方法。
  16. 前記プロセッサが前記判定基準を記憶する段階は、
    前記初期化ベクトルのページベクトル値を選択するのに使用されたページカウンタ値を特定する段階と
    前記初期化ベクトルのブロックベクトル値を形成するのに使用されたブロックカウンタ値を特定する段階と
    前記データブロックのブロック番号に従って、前記ページカウンタ値及び前記ブロックカウンタ値を暗号化ページ構造体内に記憶する段階と
    有する請求項9から15のいずれかに記載の方法。
  17. データブロックの初期化ベクトルを計算するのに使用される、該データブロックの1以上の判定基準を記憶し、前記初期化ベクトル及び秘密鍵から計算された鍵ストリームに従って前記データブロックを暗号化し、該暗号化したデータブロックをメモリ内に記憶するメモリ暗号化ロジックと、
    暗号化したデータブロックの読み出し中に、該データブロックの1以上の記憶された判定基準に従って該データブロックを暗号化するのに使用された鍵ストリームを再生成し、該再生成した鍵ストリームを使用して、前記暗号化したデータブロックを復号るメモリ復号ロジックと
    を備え、
    前記メモリ暗号化ロジックは、
    初期化ベクトルの形成に使用された1以上の一意のページ初期化ベクトル値を含むページデータ構造体と、鍵ストリームの再計算用の初期化ベクトルの形成およびデータブロックの暗号化に使用されたブロックデータ構造体および該ページデータ構造体へのインデックス値を記憶するのに使用されるブロックデータ構造体とを有する暗号化ページ構造体を含むメモリ
    を有する装置
  18. 前記暗号化ロジックは、
    最も過去の初期化ベクトルを有するデータブロックを特定し、該特定した初期化ベクトルの一意の初期化ベクトルを再計算し、該一意の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って、前記特定したデータブロックを再暗号化するための再符号化ロジック
    をさらに有する請求項17に記載の装置。
  19. 前記復号ロジックは、排他的OR演算を使用して、単一クロックサイクル内で、暗号化されたデータブロックを復号する
    請求項17または18に記載の装置。
  20. 前記メモリは、ランダムアクセスメモリまたはディスクメモリである
    請求項17から19のいずれかに記載の装置。
  21. ランダムアクセスメモリ(RAM)と、
    前記ランダムアクセスメモリに接続されたチップセットと、
    前記チップセットに接続されたプロセッサと
    を備え、
    前記プロセッサは、
    データブロックの初期化ベクトルを計算するのに使用される、該データブロックの1以上の判定基準を記憶し、前記初期化ベクトル及び秘密鍵から計算された鍵ストリームに従って前記データブロックを暗号化し、該暗号化したデータブロックを前記ランダムアクセスメモリ内に記憶するための、メモリ暗号化ロジックと、
    前記ランダムアクセスメモリからの暗号化したデータブロックの読み出し中に、該データブロックの1以上の記憶された判定基準に従って該データブロックを暗号化するのに使用された鍵ストリームを再生成し、該再生成した鍵ストリームを使用して、前記暗号化したデータブロックを復号するための、メモリ復号ロジックと
    有し、
    前記メモリ暗号化ロジックは、
    初期化ベクトルの形成に使用された1以上の一意のページ初期化ベクトル値を含むページデータ構造体と、鍵ストリームの再計算用の初期化ベクトルの形成およびデータブロックの暗号化に使用されたブロックデータ構造体および該ページデータ構造体へのインデックス値を記憶するのに使用されるブロックデータ構造体とを有する暗号化ページ構造体を含むメモリ
    を含むシステム。
  22. 前記メモリ暗号化ロジックは、
    最も過去の初期化ベクトルを有するデータブロックを特定し、該特定した初期化ベクトルを現在の初期化ベクトルに取り替え、該現在の初期化ベクトル及び秘密鍵から生成された鍵ストリームに従って、前記特定したデータブロックを再暗号化するための再符号化ロジック
    をさらに含む請求項21に記載のシステム。
  23. 前記メモリ復号ロジックは、排他的OR演算を使用して、単一クロックサイクル内で、暗号化されたデータブロックを復号する
    請求項21または22に記載のシステム。
  24. 前記ランダムアクセスメモリは、ダブルデータレート(DDR)同期データRAM(SDRAM)である
    請求項21から23のいずれかに記載のシステム。
  25. コンピュータに、請求項9から16のいずれかに記載の方法を実行させる
    プログラム
JP2006509096A 2003-06-25 2004-06-09 解読待ち時間が削減されたメモリ暗号化のための装置及び方法 Expired - Fee Related JP4500306B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/603,680 US7472285B2 (en) 2003-06-25 2003-06-25 Apparatus and method for memory encryption with reduced decryption latency
PCT/US2004/018272 WO2005006197A2 (en) 2003-06-25 2004-06-09 An apparatus and method for memory encryption with reduced decryption latency

Publications (2)

Publication Number Publication Date
JP2006526173A JP2006526173A (ja) 2006-11-16
JP4500306B2 true JP4500306B2 (ja) 2010-07-14

Family

ID=34062229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006509096A Expired - Fee Related JP4500306B2 (ja) 2003-06-25 2004-06-09 解読待ち時間が削減されたメモリ暗号化のための装置及び方法

Country Status (5)

Country Link
US (1) US7472285B2 (ja)
EP (2) EP3575971A1 (ja)
JP (1) JP4500306B2 (ja)
CN (1) CN1836220B (ja)
WO (1) WO2005006197A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI758319B (zh) * 2016-09-20 2022-03-21 英商Arm股份有限公司 用於處置針對向量指令的元素間位址危害的裝置及資料處理方法

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734932B2 (en) * 2003-11-10 2010-06-08 Broadcom Corporation System and method for securing executable code
US7162647B2 (en) * 2004-03-11 2007-01-09 Hitachi, Ltd. Method and apparatus for cryptographic conversion in a data storage system
US20060005047A1 (en) * 2004-06-16 2006-01-05 Nec Laboratories America, Inc. Memory encryption architecture
ATE407494T1 (de) * 2004-07-06 2008-09-15 Proton World Int Nv Stromverschlüsselung des inhalts eines speichers, welcher ausserhalb eines prozessors angeordnet ist
EP1615369A1 (fr) * 2004-07-06 2006-01-11 Proton World International N.V. Chiffrement par blocs du contenu d'une mémoire externe à un processeur
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
US8155306B2 (en) * 2004-12-09 2012-04-10 Intel Corporation Method and apparatus for increasing the speed of cryptographic processing
US8081755B2 (en) * 2005-05-20 2011-12-20 Microsoft Corporation JPEG2000 syntax-compliant encryption with full scalability
US20070067644A1 (en) * 2005-08-26 2007-03-22 International Business Machines Corporation Memory control unit implementing a rotating-key encryption algorithm
US20070050642A1 (en) * 2005-08-26 2007-03-01 International Business Machines Corporation Memory control unit with configurable memory encryption
FR2895608B1 (fr) * 2005-12-23 2008-03-21 Trusted Logic Sa Procede pour la realisation d'un compteur securise sur un systeme informatique embarque disposant d'une carte a puce
US7797751B1 (en) * 2006-03-27 2010-09-14 Oracle America, Inc. Nonce structure for storage devices
KR101369748B1 (ko) * 2006-12-04 2014-03-06 삼성전자주식회사 데이터 암호화 방법 및 그 장치
US20110029549A1 (en) * 2006-12-08 2011-02-03 Pandya Ashish A Signature search architecture for programmable intelligent search memory
US7890692B2 (en) * 2007-08-17 2011-02-15 Pandya Ashish A FSA context switch architecture for programmable intelligent search memory
US7827190B2 (en) * 2006-12-08 2010-11-02 Pandya Ashish A Complex symbol evaluation for programmable intelligent search memory
US7996348B2 (en) 2006-12-08 2011-08-09 Pandya Ashish A 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters
WO2008073824A1 (en) * 2006-12-08 2008-06-19 Pandya Ashish A Dynamic programmable intelligent search memory
US9141557B2 (en) 2006-12-08 2015-09-22 Ashish A. Pandya Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine
WO2008071222A1 (en) * 2006-12-15 2008-06-19 Agere Systems Inc. Protecting a programmable memory against unauthorized modification
WO2008110971A2 (en) * 2007-03-13 2008-09-18 Koninklijke Philips Electronics N.V. Encryption and decryption of auxiliary data
US9268918B2 (en) * 2007-03-13 2016-02-23 Nxp, B.V. Encryption and decryption of a dataset in at least two dimensions
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8509439B2 (en) * 2007-12-31 2013-08-13 Intel Corporation Assigning nonces for security keys
JP5374751B2 (ja) * 2008-07-31 2013-12-25 株式会社ハイパーテック メモリ管理方法
JP5272751B2 (ja) * 2009-01-26 2013-08-28 富士通セミコンダクター株式会社 プロセッサ
US8719593B2 (en) * 2009-05-20 2014-05-06 Harris Corporation Secure processing device with keystream cache and related methods
US8971530B2 (en) 2009-06-24 2015-03-03 Intel Corporation Cryptographic key generation using a stored input value and a stored count value
DE102010010851A1 (de) * 2010-03-10 2011-09-15 Giesecke & Devrient Gmbh Ausspähungsschutz bei der Ausführung einer Operationssequenz in einem tragbaren Datenträger
US8700892B2 (en) * 2010-03-19 2014-04-15 F5 Networks, Inc. Proxy SSL authentication in split SSL for client-side proxy agent resources with content insertion
US8990582B2 (en) * 2010-05-27 2015-03-24 Cisco Technology, Inc. Virtual machine memory compartmentalization in multi-core architectures
JP5167374B2 (ja) * 2011-01-21 2013-03-21 シャープ株式会社 データ暗号化装置、及び、メモリカード
US8732538B2 (en) * 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
GB2494625A (en) * 2011-09-06 2013-03-20 St Microelectronics Grenoble 2 Minimizing the latency of a scrambled memory access by sending a memory access operation to the encryption engine and the memory controller in parallel
US8726037B2 (en) 2011-09-27 2014-05-13 Atmel Corporation Encrypted memory access
CN103425935A (zh) * 2012-05-16 2013-12-04 侯方勇 基于地址的存储器数据加密方法和装置
KR101458479B1 (ko) * 2012-10-12 2014-11-07 한국전자통신연구원 세션상태정보의 암호화 및 복호화 방법
US9405919B2 (en) 2014-03-11 2016-08-02 Qualcomm Incorporated Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers
US9800401B2 (en) * 2014-04-23 2017-10-24 International Business Machines Corporation Initialization vectors generation from encryption/decryption
US10169618B2 (en) * 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US10691838B2 (en) 2014-06-20 2020-06-23 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
US10192062B2 (en) 2014-06-20 2019-01-29 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
IL234956A (en) * 2014-10-02 2017-10-31 Kaluzhny Uri Data bus protection with enhanced key entropy
US9942211B1 (en) * 2014-12-11 2018-04-10 Amazon Technologies, Inc. Efficient use of keystreams
US9614666B2 (en) 2014-12-23 2017-04-04 Intel Corporation Encryption interface
CN107771324B (zh) * 2015-09-17 2021-11-26 慧与发展有限责任合伙企业 用于有效地存储初始化向量的系统、方法及存储介质
CN108073353B (zh) 2016-11-15 2020-04-14 华为技术有限公司 一种数据处理的方法及装置
US10896267B2 (en) 2017-01-31 2021-01-19 Hewlett Packard Enterprise Development Lp Input/output data encryption
IT201800003373A1 (it) 2018-03-08 2019-09-08 St Microelectronics Srl Procedimento e circuito di decrittazione, dispositivo corrispondente
EP3582134B1 (en) * 2018-06-15 2021-02-24 STMicroelectronics Srl A cryptography method and circuit, corresponding device
EP3758276B1 (en) * 2018-12-12 2022-08-17 Shenzhen Goodix Technology Co., Ltd. Data processing method, circuit, terminal device storage medium
US11646870B2 (en) 2019-01-23 2023-05-09 International Business Machines Corporation Securing mobile device by RAM-encryption
EP3697020A1 (de) * 2019-02-15 2020-08-19 Siemens Aktiengesellschaft Verfahren zum betreiben von im zähler-modus betriebenen schlüsselstromgeneratoren zur sicheren datenübertragung, schlüsselstromgenerator mit zähler-modus-betrieb zur sicheren datenübertragung und computer-programm-produkt zur schlüsselstromerzeugung
CN110445601B (zh) * 2019-07-19 2022-07-26 三未信安科技股份有限公司 祖冲之加密算法提速方法、系统、存储介质及计算机设备
US11636046B1 (en) * 2019-11-15 2023-04-25 The Charles Stark Draper Laboratory, Inc. Latency free data encryption and decryption between processor and memory
US11782127B2 (en) 2021-02-05 2023-10-10 Nxp Usa, Inc. Stop criterion for greedy target detection algorithms in radar applications using sparse phased arrays
FR3120718B1 (fr) * 2021-03-09 2023-02-10 Commissariat Energie Atomique Procédé d’exécution d’un programme d’ordinateur par un appareil électronique
US11567676B2 (en) 2021-04-30 2023-01-31 Nxp B.V. Inline encryption/decryption for a memory controller
US11874776B2 (en) * 2021-06-25 2024-01-16 Intel Corporation Cryptographic protection of memory attached over interconnects
US11620184B2 (en) 2021-08-16 2023-04-04 Nxp B.V. Runtime integrity checking for a memory system
CN114710287B (zh) * 2022-06-06 2022-09-20 中科问天量子科技(天津)有限公司 一种加密方法、系统、存储介质及加密文件访问方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4529870A (en) 1980-03-10 1985-07-16 David Chaum Cryptographic identification, financial transaction, and credential device
US5259025A (en) * 1992-06-12 1993-11-02 Audio Digitalimaging, Inc. Method of verifying fake-proof video identification data
US5345508A (en) * 1993-08-23 1994-09-06 Apple Computer, Inc. Method and apparatus for variable-overhead cached encryption
US5809148A (en) * 1996-05-17 1998-09-15 Motorola, Inc. Decryption of retransmitted data in an encrypted communication system
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6061449A (en) 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
JP4226760B2 (ja) * 2000-05-08 2009-02-18 株式会社東芝 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
JP2003023421A (ja) * 2001-07-09 2003-01-24 C4 Technology Inc 暗号方法、そのプログラム、そのプログラムを記録した記録媒体および暗号装置並びに復号方法および復号装置
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
WO2003030441A2 (en) * 2001-10-03 2003-04-10 Koninklijke Philips Electronics N.V. Memory encryption system and method
US7274792B2 (en) * 2002-08-09 2007-09-25 Broadcom Corporation Methods and apparatus for initialization vector processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI758319B (zh) * 2016-09-20 2022-03-21 英商Arm股份有限公司 用於處置針對向量指令的元素間位址危害的裝置及資料處理方法

Also Published As

Publication number Publication date
CN1836220B (zh) 2010-11-10
EP3575971A1 (en) 2019-12-04
WO2005006197A3 (en) 2006-02-16
WO2005006197A2 (en) 2005-01-20
JP2006526173A (ja) 2006-11-16
US7472285B2 (en) 2008-12-30
US20050021986A1 (en) 2005-01-27
EP1654661B1 (en) 2019-07-24
CN1836220A (zh) 2006-09-20
EP1654661A2 (en) 2006-05-10

Similar Documents

Publication Publication Date Title
JP4500306B2 (ja) 解読待ち時間が削減されたメモリ暗号化のための装置及び方法
JP4551802B2 (ja) プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法
JP6046360B2 (ja) 機密データの暗号化および記憶
JP4767985B2 (ja) 複数モードでのaes暗号化または復号の単一命令での実行
US20050154912A1 (en) Firmware encrypting and decrypting method and an apparatus using the same
JP2020535693A (ja) 記憶データ暗号化/復号化装置及び方法
WO2016042287A1 (en) Puf and address dependent data encryption
JP2003198534A (ja) データ暗号化装置及びその方法
JP2006085676A (ja) 暗号化命令処理装置
JP5645725B2 (ja) データ処理装置およびデータ処理システムおよびその制御方法
JP2023510311A (ja) メモリ・ベースの暗号化
JP2000122861A (ja) データ等の不正改竄防止システム及びそれと併用される 暗号化装置
JP2004199688A (ja) 安全なドライバ
JP2007501481A (ja) 暗号化指示情報を有する記録媒体
JP2005122745A (ja) 対称型マルチプロセッサを持つ電子機器におけるデータの暗号化
US20210006391A1 (en) Data processing method, circuit, terminal device and storage medium
JP2005216027A (ja) 暗号化装置及びこれを備えた暗号化システム並びに復号化装置及びこれを備えた半導体システム
JP2007336446A (ja) データ暗号化装置
US8782430B2 (en) Secure external buffer for hard disk drive system on a chip
JP2004133087A (ja) ブロック暗号方法およびブロック暗号回路
JP2011123229A (ja) プログラムコード暗号化装置及びプログラム
US7707431B2 (en) Device of applying protection bit codes to encrypt a program for protection
JP7101500B2 (ja) 暗号化装置、暗号化システム、及び暗号化方法
JP6012355B2 (ja) 制御機器、制御システム、データ格納方法及びプログラム
JP2000076144A (ja) 論理回路、マイクロコンピュータ、および論理回路・記憶回路間の通信方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090519

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090806

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100330

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100416

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4500306

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140423

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees