JP2023510311A - メモリ・ベースの暗号化 - Google Patents

メモリ・ベースの暗号化 Download PDF

Info

Publication number
JP2023510311A
JP2023510311A JP2022542180A JP2022542180A JP2023510311A JP 2023510311 A JP2023510311 A JP 2023510311A JP 2022542180 A JP2022542180 A JP 2022542180A JP 2022542180 A JP2022542180 A JP 2022542180A JP 2023510311 A JP2023510311 A JP 2023510311A
Authority
JP
Japan
Prior art keywords
data
memory
physical address
encryption key
encryption
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.)
Pending
Application number
JP2022542180A
Other languages
English (en)
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2023510311A publication Critical patent/JP2023510311A/ja
Pending 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

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

Abstract

Figure 2023510311000001
本明細書の実施形態は、暗号化経路とバイパス経路とを有するメモリ・コントローラを記載する。インジケータ(例えば、専用アドレス範囲)を用いて、外部エンティティは、暗号化経路またはバイパス経路を使用するか否かをメモリ・コントローラに通知することができる。例えば、書込み要求を行う際に暗号化経路を使用することは、データが格納される前にメモリ・コントローラがデータを暗号化することを意味し、一方で、バイパス経路を使用することは、データを暗号化せずにメモリに書き込むことを意味する。同様に、読出し要求を実行する際に暗号化経路を使用することは、データが要求側エンティティに配信される前にコントローラがデータを復号することを意味し、一方、バイパス経路を使用することは、データが復号されずに配信されることを意味する。

Description

本発明は、メモリ・ベースの暗号化に関する。
暗号化は、データ保護およびソフトウェア・セキュリティのための一般的な方法であるが、ソフトウェア・ベースの暗号化は低速であり、ソフトウェアに知られている暗号化キーを必要とする。ソフトウェアにアクセスできるキーを作成することは、キーが不正な行為者により容易に入手可能であることを意味する。ハードウェア暗号化を代わりに実行することができるが(暗号化キーをソフトウェアに利用できない場合)、ハードウェア・アクセラレータに基づく暗号化は、実行のために高価なシステム・コールを必要とする。
現代のプロセッサは、短期メモリ(例えば、ランダム・アクセス・メモリ(RAM))に格納されたデータを暗号化するための暗号化エンジンを内蔵している。これらのプロセッサは、1つのユーザ設定可能な設定を有し、メモリに格納された全てのデータが暗号化されるか、またはメモリに格納されたデータのいずれも暗号化されないかのどちらかである。プロセッサが全てのデータを暗号化するように設定されている場合、データが短期メモリから長期ストレージ(例えば、ハード・ディスク・ドライブまたはソリッド・ステート・ドライブ)に移動する度に、プロセッサはまず、データを格納する前にデータを復号する。従って、データは、短期メモリに常駐する際にのみ暗号化される。長期ストレージのデータを暗号化するために、ソフトウェア・アプリケーションは別の要求を生成する必要がある。そのため、ハードウェア暗号化を行う利点は限られている。
本発明の一態様によれば、プロセッサは、コアと、メモリにデータを書き込むための第1の書込み要求を受信するように構成されたメモリ・コントローラとを含む。メモリ・コントローラは、データを格納するべきメモリ内の場所を物理アドレスが標示する第1の書込み要求内の物理アドレスを識別し、データを暗号化するための第1の暗号化キーを、物理アドレスに基づいて生成するように構成される。
本明細書に説明される別の態様は、データをメモリに書き込むための第1の書込み要求を受信することと、第1の書込み要求内の物理アドレスを識別することであって、物理アドレスはデータを格納すべきメモリ内の場所を標示することと、データを暗号化するための第1の暗号化キーを、物理アドレスに基づいて生成することとを含む方法である。
本明細書に記載される別の態様は、集積回路内のメモリ・コントローラである。メモリ・コントローラは、メモリ・コントローラにおいて受信された第1の書込み要求内の物理アドレスを識別するように、およびデータを暗号化するための第1の暗号化キーを、物理アドレスに基づいて生成するように構成されたハードウェア・ロジックを含み、物理アドレスは、第1の書込み要求に対応するデータを格納するべきメモリ内の場所を標示する。メモリ・コントローラはまた、第1の暗号化キーを用いてデータを暗号化するように構成された暗号化エンジンを含む。
本明細書に記載の一実施形態による、選択的ハードウェア暗号化を実行するためのコンピューティング・システムのブロック図である。 本明細書に記載の一実施形態による、暗号化経路またはバイパス経路を用いた書込み要求を実行するフローチャートである。 本明細書に記載の一実施形態による、暗号化経路またはバイパス経路を用いた読出し要求を実行するフローチャートである。 本明細書に記載の一実施形態による、プロセッサによって予め暗号化されたデータを復号するためのフローチャートである。 本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際にデータを暗号化するための書込み要求を実行することを説明する図である。 本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際にバイパス経路を使用して暗号化済みデータを検索するための読出し要求を実行することを説明する図である。 本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際にバイパス経路を使用して暗号化済みデータを格納するための書込み要求を実行することを説明する図である。 本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際に暗号化経路を使用して暗号化済みデータを復号するための読出し要求を実行することを説明する図である。
本明細書の実施形態は、データがメモリに格納されているアドレスに基づく暗号化キーを使用して、プロセッサにおいてハードウェア暗号化を実行することを説明する。例えば、暗号化キーは2つの部分、すなわち、プロセッサの外部の任意のエンティティにアクセスできない製造によって提供される固有のIDである一方の部分と、データが格納される物理アドレスから導出された第2の部分とを含むことができる。プロセッサは、これら2つの部分を用いて暗号化キーを生成することができる。そのため、異なる位置に格納されたデータは、異なる暗号化キーを有する。静的キーを使用するのではなく(例えば、キー全体が製造によって割り当てられた場合)、データのアドレスに基づく暗号化キーの動的部分を有することにより、暗号化キーは、総当たり攻撃を用いたクラックがほぼ不可能なものとなる。
さらに、メモリに格納されたデータを常に暗号化/復号するか、または決してデータを暗号化/復号しないように設定されるプロセッサではなく、一実施形態では、プロセッサ内のメモリ・コントローラは、暗号化経路およびバイパス経路を有する。インジケータ(例えば、専用アドレス範囲)を用いて、外部エンティティ(例えば、ハイパーバイザまたはソフトウェア・アプリケーション)は、暗号化経路またはバイパス経路を使用するか否かをメモリ・コントローラに通知することができる。例えば、書込み要求を行う際に暗号化経路を使用することは、データが格納される前にメモリ・コントローラがデータを暗号化することを意味し、一方で、バイパス経路を使用することは、データを暗号化せずにメモリに書き込むことを意味する。同様に、読出し要求を実行する際に暗号化経路を使用することは、データが要求側エンティティに配信される前にコントローラがデータを復号することを意味し、一方、バイパス経路を使用することは、データが復号されずに配信されることを意味する。このように、ソフトウェア・アプリケーションは、格納される前にデータがまず暗号化されるように書込みオペレーションを実行する際に、暗号化経路を使用するようにプロセッサに命令することができ、現在暗号化されているデータが復号されることなく検索される(暗号化された状態で長期ストレージに格納できる)ように読出しオペレーションを実行する際に、暗号化経路を使用するようにプロセッサに命令することができる。
後にソフトウェア・アプリケーションは、暗号化済みデータを復号する必要がある場合がある。ソフトウェア・アプリケーションは、別の書込み要求を使用して、プロセッサに、バイパス経路を用いて(既に暗号化されたデータが再暗号化されないように)暗号化済みデータをRAMに格納するように命令することができる。次に読出し要求を使用して、データがソフトウェア・アプリケーションに戻される前に復号されるように暗号化経路を用いてRAMから暗号化済みデータを検索するプロセスを命令することができる。このようにして、ハードウェア暗号化のみが使用され、ソフトウェア・アプリケーションは、暗号キーを知ることなくデータを暗号化および復号することができる。
図1は、本明細書に記載の一実施形態による、選択的ハードウェア暗号化を実行するためのコンピューティング・システム100のブロック図である。コンピューティング・システム100は、バス190を使用して通信可能に結合されたプロセッサ105、ハイパーバイザ135、メモリ150、およびストレージ180を含む。プロセッサ105は、コア110とメモリ150(例えば、RAMなどの短期または揮発性メモリ)との間のインタフェースとして機能する1つまたは複数のコア110およびメモリ・コントローラ115を含む。図示されていないが、コア110は、1つまたは複数のキャッシュを含むことができる。
メモリ・コントローラ115は、メモリ150に格納するかまたはメモリ150から検索するデータを暗号化および復号するための暗号化経路120と、データを暗号化または復号せずにメモリ150に格納するかまたはメモリ150から検索するバイパス経路130とを含む。例えば、以下にさらに詳細に記載されるように、プロセッサ105は、データをメモリ150に書き込む際に暗号化経路120を使用するべきである(すなわち、データを暗号化するべきである)という、メモリ・コントローラ115へのインジケータとして働く暗号化アドレス140を含むハイパーバイザ135からの書込み要求を受信することができる。逆に、代わりに書込み要求が、バイパス・アドレス145を含む場合は、バイパス経路130を使用するべきであること、すなわちデータを暗号化することなくメモリ150に格納するべきであることをメモリ・コントローラ115に命令する。ハイパーバイザ135は、暗号化経路120を使用してデータを復号するかまたは代わりにバイパス経路130を使用するようにメモリ・コントローラ115に命令するために読出し要求を送信する際に、暗号化アドレス140およびバイパス・アドレス145を使用することもできる。図1において、メモリ・コントローラ115は、プロセッサ105を形成する同じ集積回路内に示されているが、メモリ・コントローラ115は、別々の集積回路の一部であってもよい。
暗号化経路120は、暗号化および復号を実行する暗号化エンジン125を含む。すなわち、暗号化エンジン125は、暗号化経路120を用いて書込み要求を行う際にデータを暗号化し、また、暗号化経路120を用いて読出し要求を行う際にデータを復号することもできる。しかし、別の実施形態では、メモリ150に格納されているデータを暗号化するための専用の暗号化経路と、メモリ150から検索されているデータを復号するための専用の復号経路(ならびにバイパス経路130)とを有していてもよい。簡単にするために、図1は、暗号化と復号との両方を実行することができる単一の暗号化経路120と暗号化エンジン125とを示す。
暗号化エンジン125は、暗号化キー132を用いてデータを暗号化および復号する。一実施形態では、暗号化キー132は、以下の少なくとも2つ、すなわち、プロセッサ105の製造者によって設定された固有のサブキーまたはIDを用いて形成された静的部分134と、メモリ150にデータを格納する物理アドレスを用いて形成された動的部分133とを有する。製造者によって提供されたサブキーは、外部のエンティティに近づきにくいものとなり得る。すなわち、ハイパーバイザ135、オペレーティング・システム(OS)155、およびアプリケーション160は、プロセッサ105からサブキーを検索することができない場合がある。
読出し要求または書込み要求を受信すると、メモリ・コントローラ115は、動的部分133(例えば、データの物理アドレス)と静的部分134(例えば、IDまたはサブキー)とを用いて暗号キー132を生成する。例えば、メモリ・コントローラ115は、物理アドレスの一部(または全部)をサブキーと組み合わせて暗号化キー132を生成する。このように、暗号化キー132の第1部分が静的である(すなわち、IDまたはサブキーがプロセッサ105に焼き付いている)のに対し、第2の部分は動的であり、読出し要求または書込み要求内の物理アドレスに従って変化する。そのため、暗号化済みデータが不正な行為者によって取得された場合に、その行為者は、プロセッサ105の固有のサブキーと、データが暗号化された際にメモリ150に格納された物理アドレスとの両方を知る必要があるものとなる。さらに、メモリ150内の暗号化済みデータの各キャッシュラインは、異なる暗号化キー132を用いて暗号化されてもよい。これにより、総当たり攻撃方法を用いて様々な暗号化キー132をクラックすることが、ほぼ不可能となる。
一実施形態では、暗号化キー132は、単一のアドレスではなく、アドレスの範囲(例えば、メモリブロック)に基づいている。この例では、同一のメモリ・ブロック(メモリ150内の任意の他の論理データ・パーティション)に格納された暗号化済みデータは、同一の暗号化キー132を用いて暗号化され、異なるメモリ・ブロック内の暗号化済みデータは、異なる値の暗号化キー132を用いて暗号化される。
ハイパーバイザ135は、ファームウェア、ハードウェア、ソフトウェア、またはそれらの組み合わせであってもよい。一実施形態では、ハイパーバイザ135は、OS155およびアプリケーション160に割り当てられた仮想アドレス空間とプロセッサ105により使用される物理アドレスとの間のインタフェースを提供する。例えば、アプリケーション160は、ハイパーバイザ135がメモリ150の物理アドレスに変換する仮想アドレス空間に基づいて、読出し要求および書込み要求を送信することができる。これらの物理アドレスは、暗号化アドレス140と異なっていてもよく、バイパス・アドレス145は、読出し要求または書込み要求をサービスする際に暗号化経路120およびバイパス経路130を使用するか否かをメモリ・コントローラ115に標示するために使用される。上述したように、メモリ・コントローラ115は、物理アドレス(またはその一部)を用いて暗号化キー132を生成することができる。
暗号化アドレス140およびバイパス・アドレス145は、データを暗号化/復号する必要があるか否かをメモリ・コントローラ115に命令するための任意のインジケータとすることができる。例えば、暗号化アドレス140およびバイパス・アドレス145は、フラグまたは単一のメモリ・アドレス、またはメモリ・アドレスの範囲とすることができる。一実施形態では、暗号化アドレス140は、ベース・アドレス・レジスタ(BAR)の一部であり得る一方で、バイパス・アドレス145は異なるBARである。読出し要求または書込み要求にどのBAR値を用いるかに応じて、メモリ・コントローラ115は、暗号化経路120とバイパス経路130のどちらを使用するかを判定することができる。
メモリ150は、DRAM、SRAMなどの任意の短期メモリ要素(例えば、揮発性メモリ)とすることができる。しかし、メモリ150は、現代のコンピューティング・システムにおける典型的な配置であるとはいえ、短期メモリ要素である必要はない。例えば、メモリ150は、不揮発性メモリを含んでいてもよい。
メモリ150は、OS155(本明細書に記載のタスクを実行するのに適した任意のOSとすることができる)およびユーザデータ(165)を含む。アプリケーション160は、OS155によってホストされ、任意のソフトウェア・アプリケーションとすることができる。アプリケーション160は、プロセッサ105によって実行されるタスクを生成する。これらのタスクは、メモリ・コントローラ115がメモリ150にユーザ・データ165を格納するという読出し要求および書込み要求を含んでいてもよい。上述したように、アプリケーション160およびハイパーバイザ135からの命令に基づいて、メモリ・コントローラ115は、暗号化経路120を使用して暗号化済みデータ170をメモリ150に格納し、バイパス経路130を使用して未暗号化データ175を格納することができる。ユーザ・データ165を暗号化/復号する(または暗号化/復号しない)決定は、プロセッサ105が常にユーザ・データ165を暗号化するかまたはデータを決して暗号化することはないというプロセッサ105内の設定ではなく、タスクごとに(例えば、それぞれの読込み要求および書込み要求に対して)アプリケーション160によって行うことができる。
一実施形態では、ストレージ180は、不揮発性メモリ要素(例えば、ハード・ディスク・ドライブまたはソリッド・ステート・ドライブ)を含む長期ストレージ・デバイスである。一実施形態では、アプリケーション160は、暗号化済みデータ170をストレージ180に格納する必要がある場合がある。アプリケーション160は、バイパス経路130を用いて暗号化済みデータ170を検索してストレージ180に転送するべきであるということを標示する読出し要求を、メモリ・コントローラ115に送信することができる。次いで、暗号化済みデータ170は、暗号化エンジン125をバイパスし、暗号化された状態で格納される。そのため、不正な行為者が(ストレージ180を物理的に盗むかまたは電子的手段によって)データにアクセスする場合に、データ170は暗号化される。このことは、ストレージ180がデータ・センタやクラウド・ストレージ・サービスなどのリモート・データ・ストレージ・ノードの一部である場合にも有用である。リモート・ノード上のセキュリティが失敗した場合、データは、コンピューティング・システム100内のハードウェアのみに基づく暗号化キー132(例えば、プロセッサ105に割り当てられたサブキーおよびメモリ150内の物理アドレス)を用いて暗号化されている。そのため、不正な行為者がコンピューティング・システム100の物理的な制御を得ることなくデータを復号することができる可能性は極めて低い。
図2は、本明細書に記載の一実施形態による、暗号化経路またはバイパス経路を用いた書込み要求を実行するための方法200のフローチャートである。ブロック205では、プロセッサは、ユーザ・アプリケーション(またはハイパーバイザ)からの書込み要求を受信する。一実施形態では、書込み要求は、(例えば図1の暗号化アドレス140またはバイパス・アドレス145を用いて)書込み要求に対応するデータがメモリに格納される前に暗号化されるべきか否かをプロセッサに知らせるインジケータを含む。書込み要求はまた、データがメモリに書込まれるべき物理アドレス(または物理アドレスの範囲)を含むことができる。
ブロック210では、メモリ・コントローラ内のハードウェア・ロジックは、書込み要求に含まれるインジケータを使用してデータを格納するために暗号化経路を使用するか否かを決定する。換言すれば、メモリ・コントローラは、インジケータを使用して、暗号化経路またはバイパス経路のどちらを使用するかを決定する。
バイパス経路が選択されると、方法はブロック215に進み、そこでメモリ・コントローラは、データを最初に暗号化することなくメモリにデータを書き込む。すなわち、メモリ・コントローラは、バイパス経路を用いて暗号化経路内の暗号化エンジンをバイパスする。しかし、メモリ・コントローラが暗号化経路を選択すると、ブロック220では、暗号エンジンが、書込みアドレス-例えば、暗号化された後に暗号化済みデータが格納されるメモリの物理アドレス-に基づき暗号化キーを用いてデータを暗号化する。書込みアドレスは、ハイパーバイザによって提供されてもよいし、プロセッサ内のロジックによって提供されてもよい。
書込みアドレスに基づくことに加えて、暗号化キーはまた、製造者によってプロセッサに割り当てられた固有のIDまたはサブキーに基づいてもよい。メモリ・コントローラは、予め定義された技術を使用して、サブキーと書込みアドレスとを結合して暗号化キーを形成することができる。例えば、サブキーのビットは、書込みアドレス内の一部または全てのビット(例えば、最上位ビットまたは最下位ビット)と連結されて暗号化キーを形成してもよい。しかし、本明細書の実施形態は、静的部分と動的部分とを結合して暗号キーを生成するためのいかなる特定の技術にも限定されない。
ブロック225では、ハイパーバイザ(またはメモリ・コントローラ内のハードウェア・ロジック)は、書込みアドレスをユーザ・アプリケーションに提供する。この例では、書込みアドレスに基づくキーを用いてデータを暗号化したため、データを復号できるように同じ書込みアドレスを使用する必要がある。ユーザ・アプリケーションは、メモリに格納された際に、暗号化済みデータのメモリ・アドレスをテーブルまたは他のデータ構造に記録することができる。このようにして、データをメモリから除去する(例えば、コンピューティング・システムまたはリモート・コンピュート・ノード内のストレージに移動する)か、またはメモリ内の異なる位置に移動し、次いで、同じ暗号化キーを用いて後で復号することができる。方法200を用いて以前に暗号化されたデータを復号するためのプロセスは、図4にさらに詳細に記載されている。
いずれの場合も、方法200では、メモリ・コントローラが、対応するデータがメモリに格納される前に暗号化されるべきか否かを決定するために、書込み要求内のインジケータを使用することができることが示されている。さらに、メモリ・コントローラは、書込みアドレスに基づき暗号化キーを使用してデータを暗号化することができるが、これは必要ではない。すなわち、方法200は、任意の暗号化キー(完全に静的であるか、完全に動的であるか、または静的部分と動的部分との組合せである)と共に使用することができる。暗号化キーが完全に静的である場合(例えば、メモリ・コントローラが、暗号化する全てのデータに対し同じ暗号化キーを使用する)場合、ブロック225は、ユーザ・アプリケーションによって追跡されるべき動的部分がないために省略することができる。
図3は、本明細書に記載の一実施形態による、暗号化経路またはバイパス経路を用いた読出し要求を実行するための方法300のフローチャートである。すなわち、方法200は、メモリ・コントローラを用いて書込み要求を実行するコンピューティング・システムを説明しているのに対し、方法300は、読出し要求を実行する同じコンピューティング・システムを説明している。
ブロック305では、プロセッサは、ユーザ・アプリケーションまたはハイパーバイザからの読出し要求を受信する。方法200と同様に、読出し要求は、メモリ(例えば、RAM)から読み出されているデータが検索されている際に復号されるべきか否かを標示するインジケータを含むことができる。例えば、アプリケーションは、暗号化済みデータをコンピューティング・システムまたはリモート・データ・ストレージ・ノード内の長期ストレージ・デバイスに移動させる必要がある場合がある。セキュリティを強化するために、アプリケーションは、暗号化された状態でデータを格納する必要がある場合がある。この例では、読出し要求内のインジケータは、データが暗号化されたままとなるようにデータを検索する際にバイパス経路を使用するよう、メモリ・コントローラに命令するものとなる。
別の例では、アプリケーションは、処理用の第2の異なるコンピューティング・システムに送ることができるように、データを検索してもよい。その場合、現在のコンピューティング・システム内のプロセッサのみが、メモリ内の暗号化済みデータを復号することができるため、アプリケーションは、暗号化済みデータを復号するようにプロセッサに命令し、その結果、第2のコンピューティング・システムはデータを処理することができる。もちろん、アプリケーションは、第2のコンピューティング・システムに送信する前に、データを再度暗号化することができるが、メモリ・コントローラ内のハードウェア暗号化キーを使用する代わりに、アプリケーションは、第2のコンピューティング・システムと共有されるキーを用いてソフトウェア暗号化を実行してもよい。このようにして、第2のコンピューティング・システムは、共有暗号化キーを用いて、受信されたデータを復号することができる。いずれにしても、アプリケーションは、いかなる暗号化済みデータも配信される前に最初に復号されるように、暗号化経路を使用するようプロセッサに指示する。
ブロック310では、メモリ・コントローラは、読出し要求内のインジケータを用いて、暗号化経路とバイパス経路のどちらを使用するかを決定する。バイパス経路が選択されると、方法300はブロック315に進み、そこではメモリ・コントローラは、その現在の状態(暗号化されていることも暗号化されていないこともある)でメモリからデータを検索する。復号は実行されない。
暗号化経路が選択されると、代わりに方法300はブロック320に進み、そこでは、暗号化経路内の暗号化エンジンは、読み出したアドレスに基づいて暗号化キーを用いてデータを復号する。すなわち、本実施形態では、メモリ・コントローラ内のハードウェア・ロジックは、読み出したアドレス(すなわち、データがメモリに格納されている物理アドレスまたはアドレス範囲)を用いて暗号化キーを生成してデータを復号する。メモリに書き込まれている際に格納されたものと同じメモリ・アドレスにデータが格納されている限り、メモリ・コントローラは、メモリにデータを書き込んでいるときにデータを暗号化する際にメモリ・コントローラが使用するものと同じ暗号化キーを生成する。換言すれば、データが暗号化されている際に書き込まれたメモリ内の同じ位置から検索される限り、メモリ・コントローラは同じ暗号化キーを生成するため、データをうまく復号することができる。
もちろん、方法300は静的暗号化キーと共に使用することができ、その場合、検索されているデータが、メモリに書き込まれている(および暗号化されている)際に元々格納されていたところとは異なるメモリ位置に格納されているか否かは問題とはならない。このシナリオでは、メモリに書き込まれた際に暗号化されたいかなるデータも、同じキーを用いて暗号化されるため、復号される際のデータの物理アドレスは問題ではない。
ブロック325では、プロセッサは、ユーザ・アプリケーションによって指定された宛先にデータを配信する。例えば、プロセッサは、格納用のローカル・ディスク・ドライブにデータを転送してもよいし、または、例えばネットワークを用いて遠方の宛先にデータを移送するネットワーク・アダプタにデータを転送してもよい。
図4は、本明細書に記載の一実施形態による、プロセッサによって予め暗号化されたデータを復号するための方法400のフローチャートである。すなわち、方法400は、プロセッサによって以前に暗号化されたデータがメモリから除去され、その暗号化された状態(例えば、長期ストレージ・デバイス)にまだ記憶されているものと考える。ここで、アプリケーションは、暗号化済みデータを、例えば、さらに別の処理を行うか、または暗号化されていないデータを処理のために別のコンピューティング・デバイスに送信する必要がある。データはプロセッサ内の安全な暗号化キーを用いて暗号化されたため、それがさらに処理される前に、同じプロセッサを用いてデータを解読しなければならない。
ブロック405では、ユーザ・アプリケーションは、プロセッサによって以前に暗号化された暗号化済みデータを識別する。このデータは、現在、コンピューティング装置内のメモリ(例えば、RAM)以外のどこかに記憶されてもよい。一実施形態では、プロセッサを用いて暗号化されたデータは、ソフトウェアまたはハイパーバイザによってフラグを立てたり追跡したりすることができ、その結果、ユーザ・アプリケーションは、マルチプロセッサ・システム内のどのプロセッサがデータを暗号化したかを決定することができる。このようにして、アプリケーションは、どのプロセッサがデータを復号しながらタスクを割り当てられるべきかを識別することができる。
ブロック410では、アプリケーション(またはハイパーバイザ)は、暗号化されている際に暗号化済みデータが以前に格納されたメモリ内の物理アドレスを識別する。ブロック225で上述したように、データを暗号化する際に、プロセッサは、暗号化済みデータがソフトウェア・アプリケーションに格納された物理アドレスを提供することができる。この同じ物理アドレスは、暗号化キーの一部として使用されてもよい。そのため、データを復号するために、メモリ・コントローラは、データを暗号化する際に用いられる物理アドレスを知る必要がある。なお、暗号キーがメモリの物理アドレスに基づいていない実施形態では、このブロックはスキップされてもよい。
アプリケーションは、プロセッサによって暗号化されたデータの物理アドレスを追跡するために任意のデータ構造を使用することができる。例えば、暗号化済みデータの各チャンクに対して、アプリケーションは、どのプロセッサが暗号化を実行したか、および暗号化されている際にメモリにデータが格納された物理アドレスを標示するエントリをテーブルに加えてもよい。なお、この情報を追跡するための任意の技術を使用することができる。
ブロック415では、ハイパーバイザは、バイパス経路を用いて、識別された物理アドレスに暗号化済みデータを格納するために、プロセッサに書込み要求を送信する。すなわち、データが既に暗号化されているため、ハイパーバイザは、バイパス経路を使用するようにメモリ・コントローラに通知するインジケータを使用することができ、それゆえに、メモリに格納された際に、既に暗号化されたデータは再び暗号化されない。さらに、識別された物理アドレスが他のデータで占有されている場合、メモリ・コントローラは、このデータをはねつけるか、または他のデータがメモリから除去されるまで待ってもよい。また、一実施形態では、暗号化済みデータは、データを復号する際に同じ暗号キーが生成されるように、データを最初に暗号化する際に使用される同じメモリ位置に格納されてもよい。
ブロック420では、ハイパーバイザは、暗号化経路を用いて暗号化済みデータを復号するために、プロセッサに読出し要求を送信する。これに応答して、メモリ・コントローラは、データを暗号化するために使用された同じ暗号化キーを生成するために、読出し要求内の物理アドレス(この例では、データがプロセッサによって以前に暗号化された際に使用されたのと同じアドレス)を使用する。暗号化経路中の暗号化エンジンは、暗号化キーを用いて暗号化済みデータを復号する。ここで、暗号化されていないデータは、メモリに再び格納することができるか(ここで、さらに別の処理が、ユーザ・アプリケーションの要請によりデータに行われる)、または別のコンピューティング要素(例えば、別のプロセッサまたはストレージ要素、または別のコンピューティング・システム)に送信することができる。
このようにして、方法400は、暗号化済みデータを長期ストレージ要素内にその暗号化された状態で格納できるハードウェア暗号化を用いてデータを暗号化するための技術を説明する。次いで、暗号化済みデータを同じプロセッサに戻し、暗号化キーを用いて復号することができる。そうすることは、暗号化キーがソフトウェア・アプリケーションに利用可能となるソフトウェア暗号化を使用するよりも速く、また安全である。
図5Aは、本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際にデータを暗号化するための書込み要求を実行することを説明する。データ・ミラーリングは、同じ物理アドレスが2つの別々の物理メモリ要素を指し示す際である。ミラーリングを用いてデータ冗長性を提供してもよく、その結果、データの1つのコピーが破損した場合に、データを他の物理メモリ要素から検索することが可能になる。この例では、メモリ150は、少なくとも2つの別々のメモリ要素またはブロック(P0およびP1)を含む。
図5Aでは、プロセッサは、ミラーリングされたBARにヒットする書込み要求を受信する。この例では、ミラーリングされたBARは、メモリ150に書き込まれているデータが暗号化経路を使用して暗号化されるべきであることを示すインジケータである。一実施形態では、ミラーリングされたBARは、暗号化済みデータがメモリ150に書き込まれる物理アドレスとは異なる。
次いで、データは、暗号化経路内の暗号化エンジンによって暗号化される。暗号化済みデータの複製は、両方のメモリ要素P0およびP1に格納される。
図5Bは、本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際にバイパス経路を使用して暗号化済みデータを検索するための読出し要求を実行することを説明する。この例では、読出し要求は、読出し要求の一部としてメモリ150からデータが検索されるべきであることを示すインジケータであるミラーリングされていないBARにヒットする。このように、メモリ・コントローラは、バイパス経路を用いて、メモリ150からデータを検索する。
さらに、メモリ・エレメントP0およびP1のそれぞれは、複製(すなわち、同じ)暗号化済みデータを含むため、メモリ・コントローラは、どちらかの要素からデータを検索することができる。この例では、データはメモリ要素P0から検索される。検索されると、プロセッサは、読出し要求を生成するアプリケーションによって指示されたどの宛先にもデータを配信する。
図6Aは、本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際にバイパス経路を使用して暗号化済みデータを格納するための書込み要求を実行することを説明する。図4の方法400と同様に、書込み要求に対応するデータは、既にプロセッサによって暗号化されており、メモリ150から別のストレージ要素内に移動されたものと考える。すなわち、図6Aの書込み要求のデータは、図5Aの書込み要求により暗号化された後に図5Bの読出し要求によりその暗号化された状態でメモリから除去されたのと同じデータであってもよい。
暗号化済みデータを復号するために、書込み要求は、ミラーリングされていないBARにヒットする。その結果、メモリ・コントローラは、バイパス経路を使用して暗号化済みデータをメモリに格納する。また、図5Aで用いられる暗号化キーがP0およびP1に対応する物理アドレスに基づいているものと考えると、書込み要求は、メモリ・コントローラがP0またはP1のどちらかに暗号化済みデータを格納することを規定してもよい。データ・ミラーリングがまだ作動している場合、メモリ・コントローラは、P0とP1との両方に暗号化済みデータを格納することができるが、これらのメモリ要素のうちの1つのみにデータを格納するのに十分であり得る。
図6Bは、本明細書に記載の一実施形態による、ミラーリングがイネーブルされた際に暗号化経路を使用して暗号化済みデータを復号するための読出し要求を実行することを説明する。図6Aに示されるように暗号化済みデータを格納した後、プロセッサは、P0またはP1(またはその両方)に格納されたデータに対する読出し要求を受信する。この読出し要求は、ミラーリングされたBARにヒットし、それによって、データが暗号化経路を使用して検索されるべきであることをメモリ・コントローラに標示する。これに応答して、メモリ・コントローラは、図5Aのデータを暗号化する際に用いられる同じ暗号化キーを生成し、データを復号する。次に、暗号化されていないデータが、読出し要求を生成するアプリケーションによって標示される宛先に配信される。このようにして、上述された暗号化/バイパス経路および動的ハードウェア暗号化キーは、メモリ・ミラーリングのイネーブルされたコンピュータ・システムにおいて使用することができる。
本発明の様々な実施形態の説明が、例示のために提示されてきたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。記載された実施形態の範囲から逸脱することなく、多くの修正および変形が当業者には明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実用的な適用、もしくは市場で発見された技術を超える技術的な改善を最も良く説明するために、または本明細書に開示された実施形態を他の当業者が理解することを可能にするように選択されたものである。
先に説明したように、本開示に提示された実施形態への参照が行われる。しかし、本開示の範囲は、特定の記載された実施形態に限定されるものではない。代わりに、上述した特徴および要素の任意の組合せが、異なる実施形態に関連するか否かにかかわらず、想定された実施形態を実装および実践することが想定されている。さらに、本明細書に開示された実施形態は、他の可能な解決策を超えるかまたは従来技術を超える利点を達成し得るが、所与の実施形態によって特定の利点が達成されるか否かは、本開示の範囲を限定するものではない。そのため、本明細書に開示された態様、特徴、実施形態、および利点は、例示的なものに過ぎず、特許請求の範囲に明示的に記載されている以外は、添付の特許請求の範囲の要素または制限は考慮されていない。同様に、「本発明」を参照することは、本明細書に開示される本発明の主題の一般論として解釈されるべきではなく、特許請求の範囲に明示的に記載されている以外は、添付の特許請求の範囲の要素または制限であるものと考えられるべきではない。
本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書では全て一般的に「回路」、「モジュール」、または「システム」と呼ばれることがあるソフトウェアとハードウェアの態様を組み合わせた実施形態の形態をとり得る。
本発明は、システム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を行わせるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含んでいてもよい。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、以下に限定されないが、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適した組合せとしてよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧としては、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能なプログラム可能な読出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル汎用ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、機械的に符号化されたデバイス、例えば、命令を上に記録したパンチ・カードまたは溝内の隆起構造など、および前述の任意の適切な組合せが挙げられる。コンピュータ可読記憶媒体は、本明細書で使用される際に、それ自体が電波または他の自由に伝搬する電磁波、導波管または他の伝送媒体(例えば、光ファイバ・ケーブルを通る光パルス)を伝搬する電磁波、またはワイヤを介して伝送される電気信号などの一時的な信号であるものと解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各演算/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組合せを介して外部コンピュータまたは外部記憶装置に、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組合せを含むことができる。各演算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、各演算/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を送る。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソースコードもしくはオブジェクトコードのいずれかとしてよく、プログラミング言語としては、Smalltalk、C++などのオブジェクト指向プログラミング言語と、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語が挙げられる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上に部分的に、またはリモート・コンピュータ上で部分的にもしくはリモート・コンピュータ上で全体的に、実行してもよい。後者のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されていてもよいし、または接続が、外部コンピュータに(例えば、インターネットサービスプロバイダを用いてインターネットを介して)なされていてもよい。いくつかの実施形態では、例えば、プログラム可能なロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラム可能なロジックアレイ(PLA)を含めた電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報によって、コンピュータ可読プログラム命令を実行してもよい。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装する手段を生成するように、機械を生成し得る。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、もしくは他のデバイス、またはそれらの組合せを特定の方法で機能させることのできるコンピュータ可読記憶媒体に格納されてもよく、ゆえに、命令を中に格納したコンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む、製品を含み得る。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス上にロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実施させて、コンピュータ実装プロセスを生じる。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施形態のアーキテクチャ、機能性、およびオペレーションを説明する。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されたロジック機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことがある。いくつかの代替的な実施形態では、ブロックに記載された機能は、図に記載された順序の外に生じ得る。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよいし、またはブロックが、関与する機能性に応じて、逆の順序で実行されてもよい。また、ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方におけるブロックの組合せは、指定された機能もしくはオペレーションを実行するか、または専用ハードウェアとコンピュータ命令との組合せを実施する、専用ハードウェアベースのシステムによって実装できることに留意されたい。
前述の記載は本発明の実施形態を対象とするが、本発明の他のまたはさらに別の実施形態が、その基本的な範囲から逸脱することなく考案されてもよく、その範囲は、下記の特許請求の範囲により決定される。

Claims (20)

  1. コアと、
    メモリにデータを書き込むための第1の書込み要求を受信するように構成されたメモリ・コントローラと
    を含むプロセッサであって、
    前記メモリ・コントローラは、
    前記第1の書込み要求内の物理アドレスを識別することであって、物理アドレスが、前記データを格納すべき前記メモリ内の場所を標示すること、および
    前記データを暗号化するための第1の暗号化キーを、前記物理アドレスに基づいて生成すること
    を行うように構成されている、プロセッサ。
  2. 前記第1の暗号化キーを生成することは、
    前記第1の暗号化キーの動的部分を前記第1の暗号化キーの静的部分と組み合わせることを含み、前記動的部分は、前記物理アドレスから得られる、
    請求項1に記載のプロセッサ。
  3. 前記静的部分は、製造中に前記プロセッサに割り当てられたIDに基づく、請求項2に記載のプロセッサ。
  4. 前記第1の暗号化キーは、前記プロセッサに格納され、前記プロセッサの外部の任意のエンティティにより読取り可能ではない、請求項1に記載のプロセッサ。
  5. 前記メモリ・コントローラは、
    前記第1の暗号化キーを用いて前記データを暗号化すること、
    前記メモリに前記暗号化済みデータを格納すること、
    前記メモリから前記暗号化済みデータを除去すること、
    前記暗号化済みデータを除去した後に、前記暗号化済みデータを前記メモリ内に書き戻すための第2の書込み要求を受信すること、
    前記第2の書込み要求を実行した後に、前記メモリから前記暗号化済みデータを検索するための読出し要求を受信すること、
    前記読み出し要求内の物理アドレスを識別して前記暗号化済みデータを検索することであって、前記読出し要求内の前記物理アドレスが、前記暗号化済みデータを格納する前記メモリ中の場所を標示すること、
    前記データを復号するための第2の暗号化キーを、前記読出し要求内の物理アドレスに基づいて生成することであって、前記第1および第2の暗号化キーが同じであること
    を行うように構成される、請求項1に記載のプロセッサ。
  6. 前記第1および第2の暗号化キーを同じとするために、前記第1の書込み要求内の前記物理アドレスと前記読出し要求内の前記物理アドレスとが同じでなければならない、請求項5に記載のプロセッサ。
  7. 前記メモリ・コントローラは、
    データを暗号化および復号するための暗号化エンジンを含む暗号化経路と、
    読出し要求および書込み要求を実行する前記暗号化エンジンをバイパスするバイパス経路と
    を含み、
    前記第1の書込み要求および前記読出し要求は、前記暗号化経路を用いて実行されるが、前記第2の書込み要求は、前記バイパス経路を用いて実行される、
    請求項5に記載のプロセッサ。
  8. 前記メモリ・コントローラは、
    第2のデータを前記メモリに書き込むための第2の書込み要求を受信すること、
    前記第2の書込み要求内の第2の物理アドレスを識別することであって、前記第2の物理アドレスが、前記第2のデータを格納すべき前記メモリ内の場所を標示すること、および
    前記データを暗号化するために、前記第2の物理アドレスに基づいて第2の暗号化キーを生成することであって、前記第2の暗号化キーは、前記第1の暗号化キーとは異なること
    を行うように構成される、請求項1に記載のプロセッサ。
  9. データをメモリに書き込むための第1の書込み要求を受信すること、
    前記第1の書込み要求内の物理アドレスを識別することであって、前記物理アドレスが、前記データを格納すべき前記メモリ内の場所を標示すること、および
    前記データを暗号化するための第1の暗号化キーを、前記物理アドレスに基づいて生成すること
    を含む方法。
  10. 前記第1の暗号化キーを生成することは、
    前記第1の暗号化キーの動的部分を前記第1の暗号化キーの静的部分と組み合わせることを含み、前記動的部分は、前記物理アドレスから得られる、
    請求項9に記載の方法。
  11. 前記静的部分は、製造中に割り当てられたIDに基づく、請求項10に記載の方法。
  12. 前記第1の暗号化キーは、集積回路に格納されるが、前記集積回路の外部の任意のエンティティにより読取り可能ではない、請求項9に記載の方法。
  13. 前記第1の暗号化キーを用いて前記データを暗号化すること、
    前記メモリに前記暗号化済みデータを格納すること、
    前記メモリから前記暗号化済みデータを除去すること、
    前記暗号化済みデータを除去した後に、前記暗号化済みデータを前記メモリ内に書き戻すための第2の書込み要求を受信すること、
    前記第2の書込み要求を実行した後に、前記メモリから前記暗号化済みデータを検索するための読出し要求を受信すること、
    前記読み出し要求内の物理アドレスを識別して前記暗号化済みデータを検索することであって、前記読出し要求内の前記物理アドレスが、前記暗号化済みデータを格納する前記メモリ中の場所を標示すること、
    前記データを復号するための第2の暗号化キーを、前記読出し要求内の前記物理アドレスに基づいて生成することであって、前記第1および第2の暗号化キーが同じであること
    をさらに含む、請求項9に記載の方法。
  14. 前記第1および第2の暗号化キーを同じとするために、前記第1の書込み要求内の前記物理アドレスと前記読出し要求内の前記物理アドレスとが同じでなければならない、請求項13に記載の方法。
  15. 集積回路内のメモリ・コントローラであって、
    前記メモリ・コントローラで受信した第1の書込み要求内の物理アドレスを識別することであって、前記物理アドレスは、前記第1の書込み要求に対応するデータを格納するべきメモリ内の場所を標示すること、および
    前記データを暗号化するための第1の暗号化キーを、前記物理アドレスに基づいて生成すること
    を行うように構成されるハードウェア・ロジックと、
    前記第1の暗号化キーを用いて前記データを暗号化するように構成される暗号化エンジンと
    を含むメモリ・コントローラ。
  16. 前記第1の暗号化キーを生成することは、
    前記第1の暗号化キーの動的部分を前記第1の暗号化キーの静的部分と組み合わせることを含み、前記動的部分は、前記物理アドレスから得られる、
    請求項15に記載のメモリ・コントローラ。
  17. 前記静的部分は、製造中に前記集積回路に割り当てられたIDに基づく、請求項16に記載のメモリ・コントローラ。
  18. 前記第1の暗号化キーは、前記集積回路に格納されるが、前記集積回路の外部の任意のエンティティにより読取り可能ではない、請求項15に記載のメモリ・コントローラ。
  19. 前記メモリに前記暗号化済みデータを格納すること、
    前記メモリから前記暗号化済みデータを除去すること、
    前記暗号化済みデータを除去した後に、前記暗号化済みデータを前記メモリ内に書き戻すための第2の書込み要求を受信すること、
    前記第2の書込み要求を実行した後に、前記メモリから前記暗号化済みデータを検索するための読出し要求を受信すること、
    前記読み出し要求内の物理アドレスを識別して前記暗号化済みデータを検索することであって、前記読出し要求内の前記物理アドレスが、前記暗号化済みデータを格納する前記メモリ中の場所を標示すること、
    前記データを復号するための第2の暗号化キーを、前記読出し要求内の前記物理アドレスに基づいて生成することであって、前記第1および第2の暗号化キーが同じであること
    を行うように構成される、請求項15に記載のメモリ・コントローラ。
  20. 前記第1および第2の暗号化キーを同じとするために、前記第1の書込み要求内の前記物理アドレスと前記読出し要求内の前記物理アドレスとが同じでなければならない、請求項19に記載のメモリ・コントローラ。
JP2022542180A 2020-01-15 2021-01-04 メモリ・ベースの暗号化 Pending JP2023510311A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/742,993 US11520709B2 (en) 2020-01-15 2020-01-15 Memory based encryption using an encryption key based on a physical address
US16/742,993 2020-01-15
PCT/IB2021/050005 WO2021144659A1 (en) 2020-01-15 2021-01-04 Memory based encryption

Publications (1)

Publication Number Publication Date
JP2023510311A true JP2023510311A (ja) 2023-03-13

Family

ID=76761073

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022542180A Pending JP2023510311A (ja) 2020-01-15 2021-01-04 メモリ・ベースの暗号化

Country Status (6)

Country Link
US (1) US11520709B2 (ja)
JP (1) JP2023510311A (ja)
CN (1) CN114930332A (ja)
DE (1) DE112021000537T5 (ja)
GB (1) GB2607484A (ja)
WO (1) WO2021144659A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11763008B2 (en) 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US20220100871A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Scalable multi-key memory encryption
US11886734B2 (en) * 2020-10-30 2024-01-30 InfoKeyVault Technology Co., Ltd. Secure memory card and control method thereof
US11392705B1 (en) * 2021-07-29 2022-07-19 Netskope, Inc. Disk encryption key management for booting of a device

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1541349A (zh) * 2000-09-15 2004-10-27 �ʼҷ����ֵ������޹�˾ 把数据块地址作为加密密钥进行保护
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US9432184B2 (en) * 2008-09-05 2016-08-30 Vixs Systems Inc. Provisioning of secure storage for both static and dynamic rules for cryptographic key information
US20100325431A1 (en) * 2009-06-19 2010-12-23 Joseph Martin Mordetsky Feature-Specific Keys for Executable Code
US8938627B2 (en) 2009-07-07 2015-01-20 International Business Machines Corporation Multilayer securing structure and method thereof for the protection of cryptographic keys and code
FR2976147B1 (fr) * 2011-05-30 2013-11-22 Maxim Integrated Products Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise
FR2979443B1 (fr) * 2011-08-30 2013-09-27 Maxim Integrated Products Microcontroleur securise a base de mode
US9037869B2 (en) * 2011-11-02 2015-05-19 Intel Corporation Delivering data from a secure execution environment to a display controller
US9448846B2 (en) 2011-12-13 2016-09-20 International Business Machines Corporation Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
US8909942B1 (en) 2012-03-30 2014-12-09 Western Digital Technologies, Inc. MRAM-based security for data storage systems
CN202870835U (zh) 2012-06-13 2013-04-10 福建睿矽微电子科技有限公司 一种芯片片外ram总线接口硬件加密装置
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US9256551B2 (en) * 2013-08-09 2016-02-09 Apple Inc. Embedded encryption/secure memory management unit for peripheral interface controller
US20150095661A1 (en) * 2013-09-30 2015-04-02 Microsoft Corporation Flexible Memory Addressing For Data Security
US10185499B1 (en) 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
US9792448B2 (en) * 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US20160308669A1 (en) * 2015-04-20 2016-10-20 Jian Ho Method and System for Real Time Data Protection with Private Key and Algorithm for Transmission and Storage
US20170277898A1 (en) 2016-03-25 2017-09-28 Advanced Micro Devices, Inc. Key management for secure memory address spaces
US9852025B2 (en) * 2016-03-29 2017-12-26 Alibaba Group Holding Limited Protecting data stored on a solid state drive
US20190044922A1 (en) * 2017-08-02 2019-02-07 Rubicon Labs, Inc. Symmetric key identity systems and methods
WO2020000285A1 (en) 2018-06-28 2020-01-02 Intel Corporation Secure virtual machine migration using encrypted memory technologies
CN109670344A (zh) 2018-12-05 2019-04-23 珠海全志科技股份有限公司 加密装置、方法及片上系统
US11218330B2 (en) 2019-03-25 2022-01-04 Micron Technology, Inc. Generating an identity for a computing device using a physical unclonable function
CN110213052A (zh) 2019-06-05 2019-09-06 海光信息技术有限公司 数据处理方法与装置
CN112115076A (zh) * 2019-06-20 2020-12-22 慧荣科技股份有限公司 使用者数据的加解密装置及方法
US11249924B2 (en) * 2019-11-25 2022-02-15 Micron Technology, Inc. Secure data communication with memory sub-system
US20210200880A1 (en) * 2019-12-27 2021-07-01 Intel Corporation Method and apparatus for multi-key total memory encryption based on dynamic key derivation

Also Published As

Publication number Publication date
US11520709B2 (en) 2022-12-06
DE112021000537T5 (de) 2022-10-27
WO2021144659A1 (en) 2021-07-22
US20210216476A1 (en) 2021-07-15
GB202211296D0 (en) 2022-09-14
GB2607484A (en) 2022-12-07
CN114930332A (zh) 2022-08-19

Similar Documents

Publication Publication Date Title
JP4648687B2 (ja) データストレージシステムにおける暗号化変換の方法と装置
JP2023510311A (ja) メモリ・ベースの暗号化
US9430659B2 (en) Locating cryptographic keys stored in a cache
US9596076B1 (en) Encrypted data exchange between computer systems
US8826035B2 (en) Cumulative integrity check value (ICV) processor based memory content protection
US10896267B2 (en) Input/output data encryption
JP4941556B2 (ja) 暗号化装置、暗号化方法および暗号化プログラム
JP2009225437A (ja) 記憶データの安全な処分
JP2020535693A (ja) 記憶データ暗号化/復号化装置及び方法
KR20170103627A (ko) 개인 디바이스 및 클라우드 데이터의 분산된 보안 백업
JP2019508974A (ja) クライアントによるオブジェクトの組のバックアップを実施するためのコンピュータ実施方法およびクライアントによるオブジェクトの組のバックアップを復元するためのコンピュータ実施方法
JP2020528608A5 (ja)
TW201933169A (zh) 在一加密系統中管理密碼密鑰之一集合
US10733306B2 (en) Write-only limited-read filesystem
US20070168284A1 (en) Management of encrypted storage media
JP2024500732A (ja) 内部動作を介してキー・パーio対応デバイス中に記憶されたデータの暗号消去
TW202008744A (zh) 動態密碼密鑰擴展
US9218296B2 (en) Low-latency, low-overhead hybrid encryption scheme
CN116011041A (zh) 密钥管理方法、数据保护方法、系统、芯片及计算机设备
US11763008B2 (en) Encrypting data using an encryption path and a bypass path
JP5532516B2 (ja) ストレージ装置、及び、暗号鍵の変更方法
CN111125791B (zh) 一种内存数据的加密方法、装置、cpu芯片及服务器
US20210083858A1 (en) Crypto-erasure via internal and/or external action
US20160026582A1 (en) Encrypt data of storage device
CN114186245A (zh) 来自存储系统的加密密钥

Legal Events

Date Code Title Description
RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20220720

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230622