JP2016525839A - メモリコントローラのためのキー循環 - Google Patents

メモリコントローラのためのキー循環 Download PDF

Info

Publication number
JP2016525839A
JP2016525839A JP2016529798A JP2016529798A JP2016525839A JP 2016525839 A JP2016525839 A JP 2016525839A JP 2016529798 A JP2016529798 A JP 2016529798A JP 2016529798 A JP2016529798 A JP 2016529798A JP 2016525839 A JP2016525839 A JP 2016525839A
Authority
JP
Japan
Prior art keywords
key
memory
data
address
key change
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.)
Granted
Application number
JP2016529798A
Other languages
English (en)
Other versions
JP6452135B2 (ja
Inventor
リドマン、ポンタス
Original Assignee
マーベル ワールド トレード リミテッド
マーベル ワールド トレード リミテッド
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 マーベル ワールド トレード リミテッド, マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2016525839A publication Critical patent/JP2016525839A/ja
Application granted granted Critical
Publication of JP6452135B2 publication Critical patent/JP6452135B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • 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/0891Revocation or update of secret information, e.g. encryption key update or rekeying

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)

Abstract

メモリの複数の循環キーに関連するシステム、方法及び他の実施形態が説明される。一実施形態によれば、メモリシステムは、メモリへのアクセスを制御し、メモリアクセス要求を処理するように構成されるメモリコントローラを備える。キー変更ロジックは、メモリコントローラがアイドルサイクル中であるときを判断して、アイドルサイクル中にメモリの一部にキー変更動作を実行することと、複数のメモリアクセス要求が実行されることを可能とするべく、メモリコントローラがアイドルサイクル中でないときに、キー変更動作を一時停止して、次のアイドルサイクル中にキー変更動作を再開することとにより、メモリ内のデータをスクランブルするために用いられていた第1のキーを循環させ、第2のキーを用いてデータを再スクランブルするように構成される。

Description

本明細書で提供される背景技術の説明は、開示の文脈を一般的に与える目的のためのである。研究範囲に対する、現在名前が挙げられている発明者の研究は、この背景技術の章で説明され、同様に、さもなければ、出願時の従来技術として述べていないかもしれない説明の態様が、本開示に対する従来技術として明示又は黙示のいずれも問わずに認められる。
ハッカーは、コンピュータシステム又はネットワークの弱点を悪用して、メモリからデータを取得する。ハッカーが不正手段で得たデータを読み出すことができる可能性を減らすべく、データは、数学的なスクランブル関数に従って、スクランブル(つまり、暗号化)される。ハッカーは、その結果、スクランブルされたデータをアンスクランブル(つまり、復号化)するべく、データをスクランブルするのに用いられていたスクランブル関数を発見しなければならない。スクランブル関数を発見するべく、ハッカーは、システムオンチップ(SOC)のようなコンピュータシステムのコンポーネントを攻撃し、メモリに入力値を書き込むための要求を作成する。入力値に対するメモリの出力値を解析することにより、ハッカーは、スクランブル関数の演算のリバースエンジニアリングを試みることができる。ハッカーが出力を解析するための時間が増えると、ハッカーがスクランブル関数を判断して、メモリからスクランブルされたデータをアンスクランブルするための関数を用いることができる可能性がより高くなる。
いくつかの暗号化技術では、スクランブル関数は、キーに基づいている。キーは、スクランブルされたデータを読み出す権限が付与されている個人に対してのみ知られている情報の断片(例えば、値、パラメータ)である。データのセキュリティを高めるべく、スクランブル関数を変更し、その結果として、データがスクランブルされ、アンスクランブルされる方法を変更するために、キーは、周期的に変更される。スクランブル関数がキーに依存しているので、ハッカーが、スクランブル関数の変更前に、スクランブル関数を発見するための時間がより少なくなるので、キーを周期的に変更することは、メモリのセキュリティを高める。一般的には、電源が落とされた後にコンピュータシステムの電源が投入にされたとき、キーは、コンピュータシステムの初期ブートシーケンス中に変更される。しかしながら、コンピュータシステムは、電源が落とされ、かつ、電源が再投入される前に数週間又は数ヶ月が経過する可能性があり、アンスクランブルされることに対してデータがより脆弱になる。したがって、キーを無効にし、無効にしたキーを新しいキーに置き換えることは、キー循環と称され、この脆弱性を低減する。しかしながら、一般的には、キー循環は、処理時間及びかなりのリソースを要し、それ故に、脆弱性が高まっているにも関わらず、稀にしか行われない。
概して、一態様において、本明細書は、メモリへのアクセスを制御し、複数のメモリアクセス要求を処理するように構成されるメモリコントローラを備えるメモリシステムを開示する。キー変更ロジックは、メモリコントローラがアイドルサイクル中であるときを判断し、アイドルサイクル中にメモリの一部でキー変更動作を実行すること、及び、複数のメモリアクセス要求が実行されることを可能とするべく、メモリコントローラがアイドルサイクル中でないときにキー変更動作を一時停止して、次のアイドルサイクル中に、キー変更動作を再開することにより、メモリ内のデータをスクランブルするために用いられていた第1のキーを循環させ、第2のキーを用いてデータを再スクランブルするように構成される。
他の態様において、メモリシステムは、境界アドレスレジスタを更に備え、キー変更ロジックは、次のキー変更動作の位置を特定する境界アドレスを境界アドレスレジスタに格納するように構成される。
他の態様において、メモリコントローラは、メモリコントローラがアイドルサイクル中であることを示すキー変更通知をキー変更ロジックに送信するように構成される。
他の態様において、メモリシステムは、メモリアクセス要求で特定される位置で、どのキーがメモリをスクランブルするために用いられていたかを示す境界アドレスに少なくとも部分的に基づいて、メモリアクセス要求を処理するために用いられる第1のキー又は第2のキーを選択するように構成されるセレクタロジックを更に備える。
メモリシステムの他の態様において、キー変更ロジックは、複数のメモリアクセス要求間でキー変更動作を断続的に実行するように構成される。
他の態様において、メモリコントローラは、キー変更動作の位置を示す境界アドレスに基づいて、メモリの、第1のキーを用いてスクランブルされた第1の部分又は第2のキーによりスクランブルされた第2の部分内に要求されたアドレスがあるかどうかを判断すること、当該判断に基づいて、第1のキー又は第2のキーを選択すること、及び、当該選択されたキーを用いて、要求されたアドレスからのデータをデスクランブルし、デスクランブルされたデータを戻すことにより、要求されたアドレスについて読み出しアクセス要求を実行するように構成される。
メモリシステムの他の態様において、メモリコントローラは、キー変更動作の位置を示す境界アドレスに基づいて、メモリの、第1のキーを用いてスクランブルされた第1の部分又は第2のキーによりスクランブルされた第2の部分内に、要求されたアドレスがあるかどうかを判断すること、当該判断に基づいて、第1のキー又は第2のキーを選択すること、及び、当該選択されたキーを用いて、書き込みアクセス要求からのデータをスクランブルし、メモリ内の要求されたアドレスに、スクランブルされたデータを書き込むことにより、要求されたアドレスに書き込まれるデータを示す書き込みアクセス要求を実行するように構成される。
他の態様において、メモリシステムは、境界アドレスのデータがキー変更ロジックによりキー変更される前に、メモリにアクセスするためのアクセス要求が受信されるときに、境界アドレスからのデータを格納するためのスクランブルレジスタを更に備える。
他の態様において、メモリシステムは、境界アドレスでデータをキー変更するための複数の関数を生成する関数ロジックを更に備え、複数の関数は、第1のキーを用いてデータをデスクランブルするための第1の関数及び第2のキーを用いてデータを再スクランブルするための第2の関数を含む。
他の態様において、メモリシステムは、第1のキー及び第2のキーを格納し、第1のキー及び第2のキーへのアクセスを制御するためのキー格納部を更に備える。
概して、他の態様において、本明細書は、メモリ内のデータのためのキーを循環させるキー変更動作のための境界アドレスをメモリに設定する段階を備える方法を開示する。メモリアクセス要求を受信することに応答して、メモリコントローラが、メモリに対する複数のメモリアクセス要求を処理する。方法は、メモリコントローラがアイドルサイクル中であるときを判断し、アイドルサイクルであることに応答して、方法は、アイドルサイクル中に境界アドレスでメモリの一部にキー変更動作を実行する段階と、境界アドレスをインクリメントし、キー変更動作を繰り返す段階と、メモリアクセス要求が実行されることを可能とするべく、メモリコントローラがアイドルサイクル中でないときに、キー変更動作を一時停止し、次のアイドルサイクル中にキー変更動作を再開する段階とを備える。
方法の他の態様において、キー変更動作を実行する段階は、データをスクランブルするために用いられていた第1のキーを用いて境界アドレスで格納されたデータをデスクランブルする段階と、第2のキーを用いてデータを再スクランブルする段階と、境界アドレスで再スクランブルされたデータをメモリに格納する段階とを含む。
他の態様において、メモリコントローラがアイドルサイクル中であるときを判断することは、メモリコントローラがアイドルサイクル中であることを示すキー変更通知を受信することを含む。
他の態様において、方法は、境界アドレスに少なくとも部分的に基づいて、メモリアクセス要求を処理するために用いられる第1のキー又は第2のキーを選択する段階を更に備える。
方法の他の態様において、キー変更動作は、複数のメモリアクセス要求の処理の間に断続的に実行される。
方法の他の態様において、要求されたアドレスのための読み出しアクセス要求であるメモリアクセス要求について、方法は、境界アドレスに基づいて、メモリの、第1の部分又は第2の部分内に要求されたアドレスがあるかどうかを判断する段階であって、前記第1の部分は、第1のキーを用いてスクランブルされており、前記第2の部分は、第2のキーによりスクランブルされている、段階と、当該判断に基づいて第1のキー又は第2のキーを選択する段階と、選択されたキーを用いて要求されたアドレスからのデータをデスクランブルし、デスクランブルされたデータを戻す段階とを更に備える。
概して、他の態様において、本明細書は、メモリ内のデータのための暗号キーを循環させるキー変更動作のための境界アドレスをメモリに設定する段階を備える方法を開示し、境界アドレスは、第1のキーを用いて暗号化されるメモリの第1の部分と第2のキーを用いて暗号化されるメモリの第2の部分との間の境界である。メモリ内の要求されたアドレスのためのアクセス要求を受信することに応答して、方法は、キー変更動作を一時停止する段階と、要求されたアドレスを境界アドレスと比較して、要求されたアドレスが、メモリの第1の部分又は第2の部分内にあるかどうかを判断する段階と、当該比較に基づいて第1のキー又は第2のキーを選択する段階と、選択されたキーを用いてアクセス要求を処理する段階とを備える。
他の態様において、方法は、完了するのを保留するアクセス要求がないときにアイドルサイクルを判断する段階と、アイドルサイクルに応答して、キー変更動作を再開して、暗号キーを循環させる段階とを更に備える。
他の態様において、方法は、複数のアクセス要求の処理の間に、断続的にキー変更動作を実行する段階を更に備える。
他の態様において、キー変更動作は、キー循環のインターバルに少なくとも部分的に基づいて開始され、キー変更動作は、メモリのアイドルサイクル中にメモリ内のデータのキー変更を実行する。
明細書に組み込まれ、かつ、その一部を構成する添付の図面は、本開示の様々なシステム、方法、及びその他の実施形態を示す。図に示される要素の境界(例えば、ボックス、ボックスのグループ、又は、他の形状)は、境界の一例を表す。いくつかの例において、一つの要素は、複数の要素として設計される可能性があり、又は、複数の要素は、一つの要素として設計される可能性がある。いくつかの例において、他の要素の内部コンポーネントとして示される要素は、外部のコンポーネントとして実装されてよく、その逆もまた同様である。
メモリコントローラのためのキー循環に関連するシステムの一実施形態を示す。
メモリコントローラ及びキー生成器のためのキー循環に関連するシステムの一実施形態を示す。
メモリコントローラ及びスクランブルレジスタのためのキー循環に関連するシステムの一実施形態を示す。
メモリコントローラ及び関数ロジックのためのキー循環に関連するシステムの一実施形態を示す。
メモリコントローラ及びキー格納部のためのキー循環に関連するシステムの一実施形態を示す。
データをキー変更するためのキー循環に関連する方法の一実施形態を示す。
データのキー変更が完了していない間に受信されるメモリ要求を処理することに関連する方法の一実施形態を示す。
データの暗号化において、キー循環は、データのセットをスクランブルするのに用いられていた第1の暗号キーを無効にし、第1のキーを異なる第2のキーと置き換える処理である。キー循環は、第2のキーに従ってデータをキー変更することを更に含む。データをキー変更するべく、データは、第1のキーを用いてデスクランブルされ、第2のキーに従って再スクランブルされる。例えば、ダイナミックランダムアクセスメモリ(DRAM)のコンテンツをキー変更するべく、DRAMのコンテンツ全体が第1のキーでデスクランブルされ、第2のキーに従って再スクランブルされる。キーを循環させ、その結果データをキー変更する処理は、時間が掛かり、かなりの数のリソースを必要とし、メモリの通常動作を中断及び/又は遅延させる。
本明細書で説明されるのは、メモリコントローラのためのキー循環に関連するシステム、方法及び他の実施形態の例である。一実施形態において、データは、メモリの通常動作でデータをキー変更する影響を減らすべく、メモリコントローラのアイドルサイクル中にキー変更される。例えば、メモリコントローラがスクランブルされたデータを格納するメモリを制御することを考えてみる。アイドルサイクル中、メモリコントローラは、メモリへのアクセス要求を処理していない。逆に、アクティブサイクル中、メモリコントローラは、メモリからデータを読み出し、及び/又は、メモリへデータを書き込むべく、アクセス要求を処理している。アクティブサイクル中にメモリへのアクセス要求を中断させることを避けるべく、データは、メモリコントローラのアイドルサイクル中にデスクランブル及び再スクランブルされる。したがって、キー変更動作は、通常のメモリアクセス並びにキー変更を可能にするべく、複数のメモリ動作の間に実行される。一実施形態において、キー変更処理は、アクセス要求を遅延させることなく、又は、アクセス要求を中断させることなく、メモリコントローラのバックグラウンド処理として実行されてよい。
開示されたシステム及び方法は、より頻繁にデータを再スクランブルする能力を提供し、システムリセット又はコンピュータの電源を落とすことに依存していない。メモリの継続動作を可能とする再スクランブル及びキー変更は、メモリの一部に実行されてよい。
図1は、メモリ120及びメモリコントローラ130に関連する暗号キーを循環させるためのキー変更ロジック100を含むメモリシステムの一実施形態を示す。キー変更ロジック100は、コンピューティングシステム又はコンピュータ可読媒体に実装されてよく、メモリコントローラ130の一部として、又は、メモリコントローラ130とともに動作する別個のコンポーネントとして実装されてよい。説明の目的のため、デバイス110a、110b、110c−110nは、メモリコントローラ130を介してメモリ120にアクセスするように構成される。メモリコントローラ130は、メモリ120へのアクセスを制御し、デバイス110a−110nから受信されるメモリアクセス要求(例えば、読み出し要求又は書き込み要求)を処理するように構成される。
例えば、書き込みアクセス要求は、データがメモリ120に書き込まれたときに完了し、読み出しアクセス要求は、要求されたデータがメモリ120から読み出され、要求したデバイスに戻されたときに完了する。一実施形態において、メモリコントローラ130は、開示される機能を実行するように構成される集積回路を有するハードウェア構成要素として実装され、メモリ要求を実行するように構成されるプロセッサであってよく、及び/又は、開示される機能を実行するためのファームウェア又は実行可能な複数の命令を含んでよい。
従って、メモリコントローラ130は、デバイス110a−110n及びメモリ120の間のデータフローを管理する。デバイス110a−110nの例は、中央演算処理装置CPU,ハードウェアデバイス、システムオンチップ(SOC)デバイス、又は、コンピューティングシステムの一部である他のコンポーネントであってよく、メモリコントローラ130はまた、(例えば、単一のコンピューティングデバイス内)の一部でもある。メモリ120は、不揮発性メモリ(例えば、フラッシュメモリ、リードオンリメモリ、プログラマブルリードオンリメモリ)及び揮発性メモリ(例えば、ランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、スタティックランダムアクセスメモリ)を含むが、これらに限定されない、コンピューティングデバイス内に又はコンピューティングデバイスのためのデータを格納するために用いられるデバイスである。メモリコントローラ130は、SOCのようなチップにメモリ120とともに統合されても、メモリ120から分離したチップとして構成されてもよく、特定の機能を実行するためのファームウェアを含んでよい。
メモリコントローラ130がデバイス110a−110n及びメモリ120の間のデータフローを管理していないとき、メモリコントローラ130はアイドルである。アイドルのとき、メモリコントローラ130は、メモリ120に格納されたデータをキー変更することが可能である。一実施形態において、キー変更ロジック100は、メモリコントローラ130のアイドル期間に特定し、アイドル期間中にメモリ120内のデータのキー変更処理を制御するように構成される。
例えば、キー変更ロジック100は、1又は複数の動作で、メモリコントローラ130がアイドルであることを判断するように構成される。一実施形態において、キー変更ロジック100は、メモリコントローラ130のアクティビティをモニターして、メモリコントローラがメモリ要求を処理しておらず、したがってアイドルであるときを判断する。モニタリングは、メモリ要求を保持するキューをチェックすることを含み、キューが空である場合、キー変更ロジック100は、コントローラ130がアイドルであると判断する。他の実施形態において、メモリコントローラ130は、キー変更ロジック100により受信されるキー変更通知を送信するように構成される。キー変更通知は、メモリコントローラ130がアイドルであり、かつ、データをキー変更することが可能であることを示す。本実施形態において、キー変更通知を受信すると、キー変更ロジック100は、キー変更処理を開始(又は未完了のキー変更処理を再開)する。
キー変更処理は、2つの異なる状態であってよい。一方の状態は、メモリ内の全てのデータが(古いキーを用いて)以前にキー変更されており、新しいキー変更処理を(新しいキーを用いて)開始している状態である。他方の状態は、キー変更処理が開始されたが、まだ完了していない状態である。したがって、メモリ120内のデータの一部は、新しいキーを用いてキー変更されており、データの一部は、キー変更されていない(当該データが、この時点で、古いキーを用いてキー処理(keyed)されていることを意味する)。一実施形態において、キー変更処理がコントローラ130のアイドル期間中に実行されているので、キー変更処理は、メモリ120内の全てのデータが完全にキー変更される前に、概して、複数回開始及び停止するだろう。
データをキー変更するべく、メモリコントローラ130は、メモリ120のどの場所でキー変更を開始し、データをキー変更するべく、どのキーを使用するかについての情報を利用する。初めに、キー変更は、メモリ120内のアドレス0のような開始アドレスで開始し、その位置からデータのキー変更を始めて、終了アドレスまで順次継続する。当然ながら、他の開始位置が用いられてよく及び/又はシーケンスが連続的でなくてよい。キー変更処理を開始した後、キー変更ロジック100は、最後にキー変更されたメモリアドレスにより、キー変更処理の進捗を追跡し、キー変更される次のアドレスをレジスタに記録する。
例えば、キー変更ロジック100は、キー変更されるメモリ120内の次のアドレスを示す境界アドレスBを境界レジスタ140内に設定及び格納する。メモリ120内のデータがキー変更される場合、境界アドレスBは、キー変更される次の位置を示すように動かされる。メモリコントローラ130が、もはやアイドリング状態でないことに起因して、キー変更処理が一時停止/停止されるとき、キー変更ロジック100は、コントローラ130の次のアイドリング状態中にキー変更処理を継続するべく、再開始のポイントとして境界アドレスBを利用する。
境界アドレスBは、まだキー変更されていないメモリ120の残りの部分から、キー変更されたメモリ120の一部を区別するためにも用いられる。境界Bの一方の側のアドレスは、第1のキーを用い、境界Bの他方の側のアドレスは、第2のキーを用いる。例えば、説明の目的のために図1に示されるように、メモリ部分121内のデータは、新しいキーを用いてキー変更されており、メモリ部分122内のデータは、古いキーを用いてキー処理されており、したがって、まだキー変更される必要があることが考えられる。メモリの異なる部分を区別することは、キー変更処理がメモリ全体を完全にキー変更する前に、メモリコントローラ130がメモリ要求処理の継続を可能とする。いくつかのデータが新しいキーを用いてスクランブルされることもあれば(部分121)、その他のデータが古いキーを用いてスクランブルされることもある(部分122)ので、メモリ動作は、未完了のキー変更処理により影響を受ける。
したがって、メモリ要求が処理されるとき、メモリコントローラ130は、メモリ要求からのアドレスを、境界レジスタからの境界アドレスBと比較する。比較は、メモリ要求がメモリ部分121又は122内にあるアドレスを要求しているかどうかを示す。どの部分にアドレスがあるかに応じて、メモリコントローラ130は、そのメモリ部分に関連付けられる適切なキー(例えば、新しいキー又は古いキー)を選択及び利用する。メモリ要求は、それから、適切なキーを用いて処理され、メモリ120の関連する部分からのデータをスクランブル/デスクランブルする。
例えば、メモリ120のデータのどれもが、キー変更されていなかったと仮定した場合、境界アドレスBは、メモリ120の第1のアドレス(例えば、メモリアドレス0)としてキー変更ロジック100により設定されるだろう。メモリコントローラ130は、キー変更がメモリ120の第1のアドレスに格納されたデータから始めるべきであることを示す境界アドレスBを境界レジスタ140に格納する。メモリコントローラ130のアイドルサイクル中、キー変更ロジック100は、境界レジスタ140からアドレス境界Bを取得し、境界アドレスをメモリコントローラ130に提供する。メモリコントローラ130は、これにより、アドレス境界Bでデータを取得することができ、又は、メモリコントローラ130がキー変更のためのキーを受信するまでアドレス境界Bでデータを取得するべく待機することができる。
他の例において、メモリ120の第1の部分121がキー変更されており、第2の部分122がキー変更されてない場合を考える。境界アドレスBは、第2の部分122内に第1のアドレスとして設定され、第2の部分122内の第1のアドレスがメモリコントローラ130の次のアイドルサイクル中にキー変更されるべきであることを示す。メモリコントローラ130がアイドルの間、メモリコントローラ130は、メモリ120内の境界アドレスBに格納されたデータから始まるメモリ120内に格納されたデータをインクリメントしつつキー変更するであろう。
一実施形態において、セレクタロジック150は、メモリ120と共に用いられる複数のキーを格納し、データをキー変更するべく、どのキーを用いるかを選択し、選択されたキーをメモリコントローラ130に提供するように構成される。一実施形態において、セレクタロジック150は、キー変更ロジック100の機能として実装される。メモリコントローラ130は、セレクタロジック150により選択されたキーと、境界アドレスBとを用いて、データをキー変更する。
例えば、上述のように、境界アドレスBでデータをキー変更するべく、セレクタロジック150は、第1のキー151(例えば、古いキー)を提供して、メモリ120内のアドレスでデータをデスクランブルする。第1のキー151は、データを最初にスクランブルするのに用いられていたキーである。メモリコントローラ130は、第2のキー152(例えば、新しいキー)を受信して、境界アドレスBでデータを再スクランブルする。一実施形態において、メモリコントローラ130は、アドレスからのデータがデスクランブルされたとメモリコントローラ130が判断したときに、データを再スクランブルするべく、第2のキー152をセレクタロジック150に要求してよい。従って、境界アドレスのデータは、キー変更され、境界アドレスBは、メモリ内の次のアドレスにインクリメントされる。
メモリコントローラ130は、それから、新たな境界アドレスBを境界レジスタ140に格納する。キー変更処理は、新たな境界アドレスで格納されたデータについて繰り返され、処理は、全てのデータがキー変更されるまでメモリ120内のデータ全体を通じて反復的に継続する。しかし、前述のように、キー変更処理は、メモリコントローラ130のアイドル期間中に実行される。キー変更処理は、メモリコントローラ130がメモリ要求を受信し、それによって、もはやアイドルでないときに一時停止/停止される。従って、キー変更処理は、完了前に複数回開始及び一時停止し得る。
この技術は、メモリ要求を遅延又は中断させることなく、一時停止されたキー変更処理中にメモリ要求が処理されることを可能とする。当該技術はまた、メモリシステムが動作可能な状態にある間に、メモリ120内のデータがキー変更されることを可能にする。したがって、システム(キー変更ロジック100及びメモリコントローラ130)は、システムの状態又は条件に基づいて、メモリ動作の処理と、キー変更動作の実行との間を循環し、又は、これに代えて、これらの間を交互に繰り返すように構成される。
したがって、データのキー変更を含むキー循環は、追加的なリソースを必要としない。代わりに、キー循環は、バックグラウンド処理として行われることができ、それによって、メモリコントローラ130及びメモリ120の通常動作に対する遅延及び中断を低減する。また、コンピュータシステムの電源が落とされ、かつ、電源が再投入されて、キー循環に影響を与えるときの状況とは対照的に、ここでは、メモリ120内に格納されたデータは、まだ、キー変更処理中にアクセス可能である。さらに、メモリ120のコンテンツは、説明された実施形態において一斉にキー変更される必要はない。代わりに、アクセス要求は、アクセスされるメモリ120の一部に関連付けられたキーを選択することにより処理され得る。
図2は、メモリコントローラ130ためのキー循環に関連するキー変更ロジック100の別の実施形態を示し、キー変更ロジック100は、新しいキーを生成するためのキー生成ロジック210を含む。キー変更ロジック100は、図1を参照して説明したのと同様の動作だが、追加の機能を用いて動作する。説明の簡略化のために、2つのキー(第1のキー151及び第2のキー152)が図1では説明されていた。しかしながら、より多くのキーが用いられてよい。図2の実施形態には、3つのキー、つまり、第1のキー151、第2のキー152及び第3のキー153が示されており、これらは、3つの異なる手法でメモリ120内のデータをスクランブルするために用いられてよい。従って、キー変更ロジック100は、メモリ120のどの部分がどのキーに対応するかを特定するべく、複数の境界アドレス(例えば、B1及びB2)を境界レジスタ140に格納するように構成される。
一実施形態において、キー生成ロジック210は、より古いキーが無効にされ得るように新しいキーを生成するように構成される。例えば、ある時点で、メモリ120のキー変更は、第1のキー151に従ってキー処理されているメモリ120に格納されたデータが、もはや存在しないように進行していることになる。第1のキー151を再利用するよりもむしろ、キー変更ロジック100は、第1のキー151を無効にして(例えば、廃棄して)、第1のキー151を置き換える新しいキーを生成するキー生成ロジック210を用いてよい。キー生成ロジック210は、キーを生成する乱数発生器又はアルゴリズム生成器を含んでよい。キーは、予め定められたタイムスケジュール又は所望される他の条件に基づいて、無効にされ、及び、置き換えられてよい。
上述のように、キー変更ロジック100は、システム状態又は条件に基づいてキー変更処理を制御する。例えば、キー変更ロジック100は、メモリコントローラ130のアイドルサイクルを利用して、データをキー変更してよく、タイムスケジュールを利用してキー変更を開始してもよく、又は、いったんメモリ120内の予め定められた割合のデータがキー変更されると、自動的にデータをキー変更してもよい。他の実施形態において、キー変更ロジック100は、予め定められた時間の量が前回のキー変更処理から経過したときに、キーを循環させてよい。
例えば、キー変更ロジック100は、キー循環のインターバルに基づいて、キーを循環させるように構成されてよく、メモリの異なる部分に異なるキーを用いてよい。例えば、間隔が15秒の場合、データは、最初の15秒間隔において、第1のキー151に従ってキー変更され、データの次の部分は、2番目の15秒間隔において、第2のキーに従ってキー変更され、後続の部分内のデータが3番目の15秒間隔において第3のキー153に従ってキー変更される。一実施形態において、キー循環のインターバルは、メモリコントローラ130から観測されたアイドルサイクルの量及びキー変更されるメモリ120の総サイズにより判断され得る。セキュリティレベルを向上させるべく、キー循環のインターバルが短縮されてよい。
15秒は、メモリ120のコンテンツ全体をキー変更するのに十分な時間ではないことが想定される。特定のキーを用いてキー変更されたメモリ120の一部の境界を定めるべく、キー変更ロジック100は、境界レジスタ140内に複数の境界アドレスを設定することにより各キーについてキー変更の進捗を追跡する。例えば、メモリ120の第1の部分221は、境界アドレスB1に先行するように(例えば、アドレス0からB1まで)規定される。上記の例において、第1の部分221は、第1のキー151に従ってキー処理される。同様に、第2の部分222は、アドレス境界B2に先行するように(例えば、アドレスB1+1からB2まで)規定され、第2のキー152に従ってキー処理される。第3の部分223は、境界アドレスB2の後に続くように(例えば、アドレスB2+1から最後のアドレスまで)規定され、第3のキー153に従ってキー処理される。したがって、3つ又はそれより多くのキーが利用されるとき、複数の境界アドレスが、メモリ120の複数の境界を規定するべく用いられ得る。
他の実施形態において、キー変更ロジック100は、メモリ120への予め定められた数のメモリアクセス要求(例えば、閾値を設定)が実行されることに応答してキーを循環させるように構成されてよい。例えば、キー変更ロジック100は、いったんメモリコントローラ130が100個のメモリ要求を受信すると、キーを循環させてよい。キー循環はまた、コンピュータシステムに関連する複数のコンポーネント及びそれらがどのように利用されるかに基づいて開始されてもよい。一実施形態において、キー変更ロジック100は、メモリコントローラ130について経過するアイドルサイクルの数及び/又はメモリ120のサイズに基づいてキーを循環させる。代替的に、キー変更ロジック100は、利用可能なキーの数に一部基づいてキーを循環させてよい。例えば、利用可能なキーが多くなればなるほど、キー変更ロジック100は、より頻繁に、キーを循環させ、メモリ120を再スクランブルしてよい。
他の実施形態において、キー変更ロジック100は、キー変更処理が完了したことに応答して利用可能なキーを連続的に循環させてよい。例えば、メモリ120のデータの全てが第1のキー151に従ってキー変更されたとき、新しいキー変更処理が開始され、それから、データは、第2のキー152に従ってキー変更される。いったんデータの全てが第2のキー152に従ってキー変更されると、データは、第3のキー153に従ってキー変更され、それからデータは、再び第1のキー151を用いてキー変更される。したがって、3つの利用可能なキーがある場合、処理は、3つのキーを通じて循環させ、繰り返す。したがって、利用可能なキーは、繰り返し利用されてよい。
図3は、キー変更ロジック100を含み、及び、スクランブルレジスタ360も含む、図1と同様のメモリシステムの別の実施形態を示す。キー変更ロジック100及びメモリコントローラ130は、図1に関して上述したようなものと同様の動作で動作する。スクランブルレジスタ360は、キー変更処理中にデータを保持し処理するべく用いられる。例えば、スクランブルレジスタ360は、メモリコントローラ130により用いられ、メモリ120から読み出しされたが、メモリ120に適用される新しいキーに従ってまだスクランブルされていないデータを格納する。キー変更処理が完了の前に中断又は一時停止されるときに、データは、スクランブルレジスタ360に保持されてよい。
この状況は、メモリコントローラ130のアイドルサイクルが、現在キー変更されているメモリ120内のアドレスで格納されるデータをデスクランブル及び再スクランブルするのに十分な長さでないときに発生し得る。前述のように、キー変更処理中のある時点で、メモリコントローラ130は、メモリ要求を受信し、したがって、アイドルサイクルからアクティブサイクルに変更してよい。このイベントは、データがデスクランブル及び/又は再スクランブルされる前に、キー変更動作を一時停止させる。従って、メモリ120から読み出され、キー変更されるのを待機するデータは、スクランブルレジスタ360に格納される。キー変更の処理が中断された場合、スクランブルレジスタ360に格納されたデータは、いったんキー変更処理が再開されると、後続のアイドルサイクルにおいてキー変更され得る。いったんデータがキー変更されると、メモリコントローラ130は、データが読み出されたアドレスでメモリ120内の再スクランブルされたデータを復元する。代替的に、メモリコントローラ130は、メモリアクセス要求を受信するメモリコントローラ130に応答して、境界アドレスBからのデータをスクランブルレジスタ360に格納してよい。
図4は、スクランブル/デスクランブル関数を実装する関数ロジック400を含むメモリコントローラ130の別の実施形態を示す。メモリコントローラ130は、図1を参照して説明したのと同様の動作で動作する。前述のように、キー変更ロジック100は、キー変更を開始する境界アドレスBをメモリコントローラ130に提供し、セレクタロジック150は、境界アドレスBでデータをキー変更するのに必要とされるキーをメモリコントローラ130に提供する。
一実施形態において、メモリコントローラ130の関数ロジック400は、キー変更ロジック100によりメモリコントローラ130に提供される境界アドレスB及びキーを用いて、データをスクランブル及び/又はアンスクランブルできるスクランブル関数を生成するように構成される。メモリ120のデータが第2のキー152に従ってキー変更されているが、第1のキー151を用いて前にスクランブルされた例を考えてみる。メモリ120のデータは、このように、第1のキー151に従ってデスクランブルされ、その後、第2のキー152に従って再スクランブルされる。
一実施形態において、関数A410は、キーを境界アドレスと組み合わせるように構成され、その組み合わせを用いて、関数B420を生成する。関数B420は、第2のキー152に従って境界アドレスBでデータをスクランブルする。関数A410はまた、関数C430を生成するために用いられる。一実施形態において、関数C430は、関数B420の逆関数である。関数C430は、関数A410に提供されるキーに基づいて境界アドレスBでデータをデスクランブルするために用いられる。当然ながら、他の種類のスクランブル/デスクランブル関数が実装されてよい。
図5は、キー変更ロジック100、メモリコントローラ130及びキー格納部510を含むキー変更システムの一実施形態を示す。キー変更ロジック100は、図1及び/又は他の図に関して上述したのと同様の動作で動作する。しかしながら、図1において説明した実施形態とは異なり、スクランブルするキー(例えば、第1のキー151及び第2のキー152)は、セレクタロジック150と共に格納されない。代わりに、キー格納部510は、キーを格納し、キーへのアクセスを制御する。一実施形態において、キー格納部510は、要求されたときにキーを格納及びロードする役割を担うセキュアプロセッサ又はメモリであってよい。
上述のように、セレクタロジック150は、境界アドレスBでデータをデスクランブル及び/又は再スクランブルするために用いられるのに適切なキーを選択する。キーがキー格納部510に格納された状態で、セレクタロジック150は、メモリコントローラ130に代わってキー格納部510から選択されたキーを要求するように構成される。要求が認められた場合、キー格納部510は、メモリコントローラ130にキーをロードする。メモリコントローラ130が、キー格納部510からキー(例えば、第1のキー151)を受信したとき、メモリコントローラ130は、境界アドレスBから読み出されたデータをデスクランブルし、キー変更処理を継続する。同様に、他の利用可能なキーが要求され、キー格納部510からメモリコントローラにロードされてよい。この態様において、キー格納部510は、セキュリティの追加層を備える。
図6は、前述のように、キー循環及びデータのキー変更に関連する方法600の一実施形態を示す。方法600は、メモリ動作が実行されることを可能にするべく、キー変更処理が中断され及び一時停止されるようにメモリ動作のアイドルサイクル中にデータのキー変更を実行するコンピュータ実装された処理である。キー変更処理は、その後、次のアイドルサイクル中に再開される。言い換えれば、通常のメモリアクセスは、コンピュータで実行され、キー変更動作は、アイドルサイクル中に複数のメモリ動作の間に埋め込まれ又は挿入される。したがって、キー変更処理は、システムリセット又は電源投入中に実行されることに限定されず、キー変更はメモリ全体について実行され、メモリ動作は実行されない。
最初に、610で、キー変更が開始される境界アドレスが設定される。例えば、キー変更は、最も低いメモリアドレス(例えば、0)で開始し、最も高いメモリアドレスまで進む。キー変更が始まり、その後に一時停止された後、境界アドレスは、キー変更が再開される位置を示す。
620で、方法は、メモリコントローラがアイドルかどうかを判断する。前述のように、保留するメモリアクセス要求が存在しないとき、メモリコントローラはアイドルである。一実施形態において、メモリコントローラからアイドルサイクルを示す通知が受信されてよく、又は、メモリ要求キューが、キューが空であるかどうかを確かめられてよい。コントローラがアイドルである場合、次に、方法は、ブロック630へ移り、キー変更処理が開始又は再開され、境界アドレスでメモリからのデータが読み出される。
640で、データをデスクランブルするために利用可能なキーのセットから適切なキー(第1のキー)が選択される。第1のキーは、データをスクランブルするために元々用いられていたキーであり、ここで、データをその元の形式にデスクランブルするために用いられる。650で、新しいスクランブルキー(第2のキー)が選択され、データは、第2のキーを用いて再スクランブルされる。概して、スクランブル及びデスクランブルは、データを暗号化又は復号化するためのキーを組み合わせた1又は複数の関数を用いる。再スクランブルされたデータは、その後メモリ内のそのアドレスに戻って格納される。
660で、境界アドレスは、次のメモリアドレスにインクリメントされる。キー変更処理は、メモリ全体が再スクランブルされたか否かを判断する。これは、現在の境界アドレスを最後のメモリアドレスと比較することにより判断される。メモリ全体が再スクランブルされた場合、その後、古いキー(第1のキー)は、もはや必要ではなく、廃棄される。新しいキー(第2のキー)は、新たなキーにより置き換えられるまで、メモリの新しいマスターキーとして設定される。キー変更処理は終了し、メモリを再びキー変更するべく、次のキー変更間隔又は条件が発生するまで待機する。
660で、キー変更処理が未完了である場合、次に、方法は、620に戻り、メモリコントローラがまだアイドルかどうかを繰り返す。コントローラがアイドルでない場合、次に、方法は、670へ移り、キー変更処理は、一時停止され、680で、1又は複数のメモリアクセス動作が実行される。処理は、620に戻り、繰り返す。
一実施形態において、メモリアクセス動作は、アクセス要求を処理するべく、キー変更が中断され/一時停止されるように、キー変更動作よりも優先される。他の実施形態において、特定数のアクセス要求を処理し、特定数のキー変更動作を処理することを可能にするべく、閾値が設定されてよい。いずれの場合においても、メモリは、その全体において一斉にキー変更されないので、メモリは、異なるキーでスクランブルされる、データの2つの領域を有するだろう。領域は、境界アドレスにより規定される。このように、メモリアクセス動作は、アクセスされる領域及び対応するキーに依存する。システム概略図を参照して前述してきたが、ここで、図7に示すフローチャートを参照して説明される。
図7は、(例えば、図6のブロック680の一部のように)前述されたキー循環技術を実装するメモリシステム内でメモリ要求を処理することに関連する方法700の一実施形態を示す。データのキー変更は、前述のように、中断され、かつ、未完了であり得るので、メモリの異なる部分が異なるキーを用いてスクランブルされてよい。方法700は、キー変更処理が全体的に完了していないことに起因して、2つの異なるキーを用いてスクランブルされる、メモリの2つの部分を有するメモリに関して説明されるだろう。従って、メモリアクセス要求は、メモリ内のアドレスの位置及び対応するキーに基づいて処理される。アクセス要求のアドレス内のデータは、元のデータを正確に取得するべく、データをスクランブルするために用いられていたキーを用いてデスクランブルされる必要がある。
710で、方法は、メモリ内のアドレスでデータのためのメモリアクセス要求(例えば、読み出し要求)を受信することにより開始する。正確なデータを提供するべく、アドレスのデータは、アクセス要求の結果として戻される前にデスクランブルされる必要がある。適切なキーは、メモリの一部について判断される。720で、境界アドレスは、例えば、境界レジスタから読み出される。前の例のように、境界アドレスは、キー変更処理の現在の位置を示し、したがって、メモリの第1の部分(新しいキーでキー変更される部分)と、第2の部分(一部がキー変更される必要があり、データが古いキーを用いてスクランブルされる)との間の境界を示す。従って、境界アドレスは、アクセス要求内のアドレスが、メモリの第1の部分又はメモリの第2の部分内にあるか否かを判断するために用いられ得る。したがって、境界アドレスは、どのキーがメモリ内のデータをデスクランブルするのに利用されるかを特定するために用いられる。
730で、アドレスがメモリの第1の部分内にあるか否かが判断される。要求されたアドレスが、メモリの第1の部分内(例えば、境界アドレスより低い位置)にある場合、方法は、ブロック740に移り、第1のキーが、データをデスクランブルするために選択される。750で、第1のキーは、要求されたアドレスに格納されたデータをデスクランブルするメモリコントローラに提供される。760で、要求されたアドレスで、データは、提供されたキーを用いてデスクランブルされ、データは、要求元に戻される。
代替的に、730で、アドレスがメモリの第2の部分内にある(例えば、境界アドレスと等しい、又は、境界アドレスより高い)と判断された場合、方法は、770へ移り、第2のキーが、データをデスクランブルするために選択される。780で、第2のキーは、メモリコントローラに提供される。その後、760で、データは、第2のキーを用いてデスクランブルされ、データは、要求元に戻される。処理は、次のメモリ要求について繰り返される。
メモリアクセス要求が書き込み要求である場合、書き込まれるべきデータが、データが書き込まれるメモリの部分に応じて適切なキーを用いて、最初にスクランブルされるので、処理は、わずかに異なる。例えば、方法は、(例えば、要求された書き込みアドレスを境界アドレスと比較して)境界アドレスに基づいて、要求された書き込みアドレスが存在するメモリのどの部分であるかを判断する。要求された書き込みアドレスが第1の部分内にある場合、その後、書き込まれるべきデータは、第1のキーを用いてスクランブルされ、そうでなければ、データは、第2のキーを用いてスクランブルされる。その後、スクランブルされたデータは、要求された書き込みアドレスで、メモリの位置に書き込まれる。一実施形態において、メモリコントローラは、これらの関数を実行するように構成される。
メモリのキー変更処理が、方法700の処理中、まだ保留のままである場合、次に、メモリコントローラがアイドルになり、かつ、処理するアクセス要求がないときに、方法600は、呼び出され、キー変更処理が、境界アドレスで、次のデータについて再開される。
開示された技術では、メモリに格納されたデータは、メモリのデータがアクセスできるようになる前に完全にキー変更される必要がない。代わりに、メモリに格納されたデータは、キー変更処理中に、メモリ動作が継続することを許可されている間に、複数の部分において断続的にキー変更される。したがって、キー循環は、メモリをシャットダウンせず、又は、システムリブート/リセット時にのみ実行される必要がない。
以下は、本明細書中で使用される選択された用語の定義を含む。これらの定義は、用語の範囲内に含まれ、実装すべく用いられ得る複数のコンポーネントの様々な例、及び/又は形態を含む。例は、限定されることを意図したものではない。用語の単数形及び複数形の両方は、定義内となり得る。
「一実施形態」、「実施形態」、「一例」、「例」等への言及は、説明される実施形態又は例が、特定の特徴、構造、性質、特性、要素又は限定を含むことを示唆するが、必ずしも全ての実施形態又は例が、特定の特徴、構造、性質、特性、要素又は限定を含むことを意味しない。更に、「一実施形態において」という語句を繰り返し用いることで、必ずしも同一の実施形態を指しているわけではないが、同一の実施形態を指すこともある。
本明細書で用いられるような「コンピュータ記憶媒体」は、開示された機能及び/又はそれと共に組み合わせたデータのうちのいずれかを実行するように構成される命令を格納する非一時的な媒体である。コンピュータ記憶媒体は、不揮発性媒体及び揮発性媒体を含むが、これらに限定されない、形態をとり得る。不揮発性媒体は、例えば、光ディスク、磁気ディスク等を含んでよい。揮発性媒体は、例えば、半導体メモリ、ダイナミックメモリ等を含んでよい。コンピュータ記憶媒体の共通の形態は、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ASIC、コンパクトディスク、他の光媒体、RAM、ROM、メモリチップ又はカード、メモリスティック、及び、コンピュータ命令及び/又はデータを格納できる他の電子媒体を含んでよいが、これらに限定されない。
本明細書で用いられるような「ロジック」は、コンピュータ又は電気ハードウェア構成要素、ファームウェア、命令を格納する非一時的なコンピュータ記憶媒体、及び/又は、開示された機能又は動作のいずれかを実行するように構成され、及び/又は、別のロジック、方法及び/又はシステムからの機能又は動作を引き起こす、これらコンポーネントの組み合わせを含む。ロジックは、開示された機能、別個のロジック(例えば、ASIC)、アナログ回路、デジタル回路、プログラムロジックデバイス、実行されたときにアルゴリズムを実行する命令を含むメモリデバイス等のいずれかを実行するように構成されたアルゴリズムにより制御されるマイクロプロセッサを含んでよい。ロジックは、1又は複数のゲート、ゲートの組み合わせ、又は、他の回路コンポーネントを含んでよい。複数のロジックが説明されている場合、複数のロジックを一つの物理的なロジックコンポーネントに組み込むことが可能であり得る。同様に、単一のロジックユニットが説明されている場合、その単一のロジックユニットを複数の物理的なロジックコンポーネント間に分散させることが可能であり得る。
説明の簡略化を目的として、例示されている複数の方法は、一連のブロックとして示され、説明されている。複数の方法は、 ブロックの順序に限定はされず、いくつかのブロックを図示、説明されているものと異なる順序で実行したり、及び/又は、図示、説明されているものと異なる他のブロックと同時に実行したりすることもできる。さらに、例示されている複数の方法を実装するために、例示されているブロック全てを利用する必要がない場合もある。ブロックは、複数のコンポーネントに統合又は分離され得る。更に、追加的及び/又は代替的な複数の方法は、ブロックに示されていない追加的な動作を採用できる。
詳細な説明又は特許請求の範囲において、「含む(includes)」又は「含む(including)」という用語が使用される限り、「備える(comprising)」という用語が、特許請求の範囲において移行句として使用される場合に解釈されるときの「備える」という用語と同様な態様で包括的であることが意図される。
例示的なシステム、方法等が例を説明することにより示されてきたが、また、例は、かなり詳細に説明されてきたが、そのような詳細に対して、添付の特許請求の範囲の範囲を制限する、又は、任意の方法で制限することは、出願人の意図ではない。当然ながら、本明細書で説明された複数のシステム、複数の方法等を説明する目的で、複数のコンポーネント又は複数の方法の考えられる全ての組み合わせを記載することはできない。したがって、本開示は、図示して説明した特定の詳細、代表的な装置、及び、例示的な実施例に限定されない。したがって、本開示は、添付の特許請求の範囲内に含まれる改変、修正、及び変更を包含することが意図される。

Claims (20)

  1. メモリへのアクセスを制御し、複数のメモリアクセス要求を処理するように構成されるメモリコントローラと、
    前記メモリコントローラがアイドルサイクル中であるときを判断して、前記アイドルサイクル中に前記メモリの一部にキー変更動作を実行すること、及び、
    複数のメモリアクセス要求が実行されることを可能とするべく、前記メモリコントローラがアイドルサイクル中でないときに前記キー変更動作を一時停止して、次のアイドルサイクル中に前記キー変更動作を再開すること
    により、前記メモリ内のデータをスクランブルするべく用いられていた第1のキーを循環させ、第2のキーを用いて前記データを再スクランブルするように構成されるキー変更ロジックと
    を備える、メモリシステム。
  2. 境界アドレスレジスタを更に備え、
    前記キー変更ロジックは、次の前記キー変更動作の位置を特定する境界アドレスを前記境界アドレスレジスタに格納するように構成される、請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、前記メモリコントローラが前記アイドルサイクル中であることを示すキー変更通知を前記キー変更ロジックに送信するように構成される、請求項1又は2に記載のメモリシステム。
  4. メモリアクセス要求で特定される位置で前記メモリをスクランブルするべく、どのキーが用いられていたかを示す境界アドレスに少なくとも部分的に基づいて、前記メモリアクセス要求を処理するために用いられる前記第1のキー又は前記第2のキーを選択するように構成されるセレクタロジックを更に備える、請求項1から3のいずれか一項に記載のメモリシステム。
  5. 前記キー変更ロジックは、複数のメモリアクセス要求間において前記キー変更動作を断続的に実行するように構成される、請求項1から4のいずれか一項に記載のメモリシステム。
  6. 前記メモリコントローラは、
    前記キー変更動作の位置を示す境界アドレスに基づいて、要求されたアドレスが、前記メモリの、前記第1のキーを用いてスクランブルされている第1の部分、又は、前記第2のキーによりスクランブルされている第2の部分にあるかどうかを判断すること、
    前記判断に基づいて前記第1のキー又は前記第2のキーを選択すること、及び、
    前記選択されたキーを用いて前記要求されたアドレスからのデータをデスクランブルし、前記デスクランブルされたデータを戻すこと
    により、前記要求されたアドレスのための読み出しアクセス要求を実行するように構成される、請求項1から5のいずれか一項に記載のメモリシステム。
  7. 前記メモリコントローラは、
    前記キー変更動作の位置を示す境界アドレスに基づいて、要求されたアドレスが、前記メモリの、前記第1のキーを用いてスクランブルされている第1の部分、又は、前記第2のキーによりスクランブルされている第2の部分にあるかどうかを判断すること、
    前記判断に基づいて、前記第1のキー又は前記第2のキーを選択すること、及び、
    前記選択されたキーを用いて書き込みアクセス要求からの前記データをスクランブルし、前記メモリ内の前記要求されたアドレスに前記スクランブルされたデータを書き込むこと
    により、前記要求されたアドレスで書き込まれるべきデータを示す前記書き込みアクセス要求を実行するように構成される、請求項1から6のいずれか一項に記載のメモリシステム。
  8. 境界アドレスの前記データが前記キー変更ロジックによりキー変更される前に、前記メモリにアクセスするためのアクセス要求が受信されたときに、前記境界アドレスからの前記データを格納するためのスクランブルレジスタを更に備える、請求項1から7のいずれか一項に記載のメモリシステム。
  9. 境界アドレスの前記データをキー変更するための複数の関数を生成する関数ロジックを更に備え、
    前記複数の関数は、前記第1のキーを用いて前記データをデスクランブルするための第1の関数、及び、前記第2のキーを用いて前記データを再スクランブルするための第2の関数を含む、請求項1から8のいずれか一項に記載のメモリシステム。
  10. 前記第1のキー及び前記第2のキーを格納し、前記第1のキー及び前記第2のキーへのアクセスを制御するためのキー格納部を更に備える、請求項1から9のいずれか一項に記載のメモリシステム。
  11. 方法であって、
    メモリ内のデータのための複数のキーを循環させるキー変更動作のために、前記メモリに境界アドレスを設定する段階と、
    複数のメモリアクセス要求を受信することに応答して、メモリコントローラが、前記メモリへの前記複数のメモリアクセス要求を処理する段階と、
    前記メモリコントローラがアイドルサイクル中であるときを判断する段階と
    を備え、
    前記アイドルサイクル中であることに応答して、前記方法は、
    前記アイドルサイクル中に前記境界アドレスで前記メモリの一部に前記キー変更動作を実行する段階と、
    前記境界アドレスをインクリメントして、前記キー変更動作を繰り返す段階と、
    前記複数のメモリアクセス要求が実行されることを可能とするべく、前記メモリコントローラがアイドルサイクル中でないときに前記キー変更動作を一時停止し、次のアイドルサイクル中に前記キー変更動作を再開する段階と
    を備える、方法。
  12. 前記キー変更動作を実行する段階は、前記データをスクランブルするために用いられていた第1のキーを用いて前記境界アドレスに格納されたデータをデスクランブルする段階と、第2のキーを用いて前記データを再スクランブルする段階と、前記境界アドレスで前記再スクランブルされたデータを前記メモリに格納する段階とを含む、請求項11に記載の方法。
  13. 前記メモリコントローラがアイドルサイクル中であるときを判断する段階は、前記メモリコントローラが前記アイドルサイクル中であることを示すキー変更通知を受信する段階を含む、請求項11又は12に記載の方法。
  14. 前記境界アドレスに少なくとも部分的に基づいて、メモリアクセス要求を処理するために用いられるべき、第1のキー又は第2のキーを選択する段階を更に備える、請求項11から13のいずれか一項に記載の方法。
  15. 前記キー変更動作は、前記複数のメモリアクセス要求の処理の間に断続的に実行される、請求項11から14のいずれか一項に記載の方法。
  16. 要求されたアドレスのための読み出しアクセス要求であるメモリアクセス要求について、前記方法は、
    前記境界アドレスに基づいて、前記メモリの第1の部分又は第2の部分に前記要求されたアドレスがあるかどうかを判断する段階であって、前記第1の部分は、第1のキーを用いてスクランブルされており、前記第2の部分は、第2のキーによりスクランブルされている、段階と、
    前記判断に基づいて前記第1のキー又は前記第2のキーを選択する段階と、
    前記選択されたキーを用いて、前記要求されたアドレスからのデータをデスクランブルし、前記デスクランブルされたデータを戻す段階と
    を更に備える、請求項11から15のいずれか一項に記載の方法。
  17. メモリ内のデータのための複数の暗号キーを循環させるキー変更動作のための境界アドレスを前記メモリに設定する段階であって、前記境界アドレスは、第1のキーを用いて暗号化される前記メモリの第1の部分と第2のキーを用いて暗号化される前記メモリの第2の部分との間の境界である、段階と、
    前記メモリ内の要求されたアドレスのためのアクセス要求を受信することに応答して、
    前記キー変更動作を一時停止し、
    前記要求されたアドレスを前記境界アドレスと比較して、前記要求されたアドレスが前記メモリの前記第1の部分又は前記第2の部分にあるかどうかを判断し、
    前記比較に基づいて、前記第1のキー又は前記第2のキーを選択し、
    前記選択されたキーを用いて前記アクセス要求を処理する段階と
    を備える、方法。
  18. 完了されるべき保留中のアクセス要求がないときにアイドルサイクルを判断する段階と、
    前記アイドルサイクルに応答して、前記キー変更動作を再開して、前記複数の暗号キーを循環させる段階と
    を更に備える、請求項17に記載の方法。
  19. 複数の前記アクセス要求の前記処理の間に、断続的に前記キー変更動作を実行する段階を
    更に備える、請求項17又は18に記載の方法。
  20. 前記キー変更動作は、キー循環のインターバルに少なくとも部分的に基づいて開始され、前記キー変更動作は、前記メモリのアイドルサイクル中に、前記メモリ内の前記データのキー変更を実行する、請求項17から19のいずれか一項に記載の方法。
JP2016529798A 2013-07-24 2014-07-18 メモリコントローラのためのキー置換 Expired - Fee Related JP6452135B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361858007P 2013-07-24 2013-07-24
US61/858,007 2013-07-24
PCT/US2014/047215 WO2015013133A1 (en) 2013-07-24 2014-07-18 Key rotation for a memory controller

Publications (2)

Publication Number Publication Date
JP2016525839A true JP2016525839A (ja) 2016-08-25
JP6452135B2 JP6452135B2 (ja) 2019-01-16

Family

ID=51299005

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016529798A Expired - Fee Related JP6452135B2 (ja) 2013-07-24 2014-07-18 メモリコントローラのためのキー置換

Country Status (6)

Country Link
US (1) US9529732B2 (ja)
EP (1) EP3025271B1 (ja)
JP (1) JP6452135B2 (ja)
KR (1) KR102164425B1 (ja)
CN (1) CN105431862B (ja)
WO (1) WO2015013133A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10148430B1 (en) 2013-04-17 2018-12-04 Amazon Technologies, Inc Revocable stream ciphers for upgrading encryption in a shared resource environment
GB2514428B (en) * 2013-08-19 2016-01-13 Visa Europe Ltd Enabling access to data
US9710675B2 (en) * 2015-03-26 2017-07-18 Intel Corporation Providing enhanced replay protection for a memory
US10372948B2 (en) * 2015-12-15 2019-08-06 Taiwan Semiconductor Manufacturing Company Ltd. Scrambling apparatus and method thereof
US10891083B2 (en) * 2017-04-18 2021-01-12 Microsemi Solutions (Us), Inc. System and method for randomizing data
CN108229215A (zh) * 2017-12-06 2018-06-29 杭州中天微系统有限公司 一种地址加扰的存储装置及方法
CN108182371A (zh) * 2017-12-22 2018-06-19 杭州中天微系统有限公司 一种片上系统的片外存储器地址加扰装置及方法
US11113409B2 (en) * 2018-10-26 2021-09-07 Pure Storage, Inc. Efficient rekey in a transparent decrypting storage array
US11818263B2 (en) * 2018-10-26 2023-11-14 Visa International Service Association Computing key rotation period for block cipher-based encryption schemes system and method
US11863670B2 (en) * 2019-04-22 2024-01-02 Cryptography Research, Inc. Efficient side-channel-attack-resistant memory encryptor based on key update
US11595204B2 (en) * 2019-06-04 2023-02-28 EMC IP Holding Company LLC Adaptive re-keying in a storage system
CN112243000B (zh) * 2020-10-09 2023-04-25 北京达佳互联信息技术有限公司 应用数据的处理方法,装置、计算机设备及存储介质
US11972034B1 (en) * 2020-10-29 2024-04-30 Amazon Technologies, Inc. Hardware-assisted obscuring of cache access patterns
US11398291B2 (en) 2020-11-20 2022-07-26 Microchip Technology Inc. Method and apparatus for determining when actual wear of a flash memory device differs from reliability states for the flash memory device
US11514992B2 (en) 2021-02-25 2022-11-29 Microchip Technology Inc. Method and apparatus for reading a flash memory device
US11620238B1 (en) 2021-02-25 2023-04-04 Amazon Technologies, Inc. Hardware blinding of memory access with epoch transitions
US11567676B2 (en) * 2021-04-30 2023-01-31 Nxp B.V. Inline encryption/decryption for a memory controller
US11934696B2 (en) 2021-05-18 2024-03-19 Microchip Technology Inc. Machine learning assisted quality of service (QoS) for solid state drives
US11699493B2 (en) 2021-05-24 2023-07-11 Microchip Technology Inc. Method and apparatus for performing a read of a flash memory using predicted retention-and-read-disturb-compensated threshold voltage shift offset values
US11514994B1 (en) 2021-05-28 2022-11-29 Microchip Technology Inc. Method and apparatus for outlier management
DE112022002131T5 (de) 2021-09-28 2024-04-11 Microchip Technology Inc. Ldpc-dekodierung mit trapped-block-management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987572A (en) * 1997-09-29 1999-11-16 Intel Corporation Method and apparatus employing a dynamic encryption interface between a processor and a memory
JP2005303981A (ja) * 2004-03-11 2005-10-27 Hitachi Ltd データストレージシステムにおける暗号化変換の方法と装置
JP2007220211A (ja) * 2006-02-16 2007-08-30 Fujitsu Ltd 半導体メモリ
JP2007310601A (ja) * 2006-05-18 2007-11-29 Renesas Technology Corp マイクロコンピュータおよびそのソフトウェア保護方法
JP2012507949A (ja) * 2008-10-30 2012-03-29 クゥアルコム・インコーポレイテッド 短い待ち時間のブロック暗号

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412722A (en) * 1993-08-31 1995-05-02 Motorola, Inc. Encryption key management
US7945914B2 (en) * 2003-12-10 2011-05-17 X1 Technologies, Inc. Methods and systems for performing operations in response to detecting a computer idle condition
US7602911B2 (en) * 2005-03-14 2009-10-13 Microsoft Corporation Method and system for enhancing cryptography-based security
JP2008269173A (ja) 2007-04-18 2008-11-06 Hitachi Ltd 計算機システム、ストレージシステムおよびデータ管理方法
US9324361B2 (en) * 2007-08-14 2016-04-26 Seagate Technology Llc Protecting stored data from traffic analysis
US8489893B2 (en) * 2010-01-29 2013-07-16 Hewlett-Packard Development Company, L.P. Encryption key rotation messages written and observed by storage controllers via storage media
WO2013012435A1 (en) * 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Security parameter zeroization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987572A (en) * 1997-09-29 1999-11-16 Intel Corporation Method and apparatus employing a dynamic encryption interface between a processor and a memory
JP2005303981A (ja) * 2004-03-11 2005-10-27 Hitachi Ltd データストレージシステムにおける暗号化変換の方法と装置
JP2007220211A (ja) * 2006-02-16 2007-08-30 Fujitsu Ltd 半導体メモリ
JP2007310601A (ja) * 2006-05-18 2007-11-29 Renesas Technology Corp マイクロコンピュータおよびそのソフトウェア保護方法
JP2012507949A (ja) * 2008-10-30 2012-03-29 クゥアルコム・インコーポレイテッド 短い待ち時間のブロック暗号

Also Published As

Publication number Publication date
CN105431862B (zh) 2019-04-26
EP3025271A1 (en) 2016-06-01
KR20160035009A (ko) 2016-03-30
CN105431862A (zh) 2016-03-23
JP6452135B2 (ja) 2019-01-16
WO2015013133A1 (en) 2015-01-29
EP3025271B1 (en) 2020-04-01
US20150033037A1 (en) 2015-01-29
US9529732B2 (en) 2016-12-27
KR102164425B1 (ko) 2020-10-13

Similar Documents

Publication Publication Date Title
JP6452135B2 (ja) メモリコントローラのためのキー置換
US9842212B2 (en) System and method for a renewable secure boot
AU2012204448B2 (en) System and method for in-place encryption
US9191202B2 (en) Information processing device and computer program product
US10536266B2 (en) Cryptographically securing entropy for later use
US10771236B2 (en) Defending against a side-channel information attack in a data storage device
US10599838B2 (en) Crypto-ransomware compromise detection
AU2012204448A1 (en) System and method for in-place encryption
US20140331061A1 (en) Drive level encryption key management in a distributed storage system
WO2012047200A1 (en) Scrambling an address and encrypting write data for storing in a storage device
US7272228B2 (en) System and method for securing code and ensuring proper execution using state-based encryption
US20170359175A1 (en) Support for changing encryption classes of files
US20140137263A1 (en) Information processing apparatus with hibernation function, control method therefor, and storage medium storing control program therefor
EP4348468A1 (en) Firmware-based secure tenancy transfer
CN112384914A (zh) 使用虚拟安全模式保护人工智能模型
WO2017067513A1 (zh) 数据处理方法及存储网关
US20220222384A1 (en) Encrypted key management
US20130198528A1 (en) Modifying a Length of an Element to Form an Encryption Key
US20170075825A1 (en) Automatic memory security
CN114637996A (zh) 用于以确保安全的方式启动计算单元的方法
CN116028958B (zh) 一种密钥加解密方法、装置、安全机以及介质
KR101617089B1 (ko) 인증을 이용하여 보안을 강화하는 비휘발성 메모리 칩 및 이를 이용한 데이터 보안 방법
KR101810044B1 (ko) 암호화 키 갱신 장치 및 방법
JP2016045795A (ja) 不揮発性メモリ初期化システム及び不揮発性メモリ初期化方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170619

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181002

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: 20181113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181205

R150 Certificate of patent or registration of utility model

Ref document number: 6452135

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

LAPS Cancellation because of no payment of annual fees
R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350