JP2022527163A - 暗号ハッシュを用いたメモリに格納されたデータの正当性確認 - Google Patents

暗号ハッシュを用いたメモリに格納されたデータの正当性確認 Download PDF

Info

Publication number
JP2022527163A
JP2022527163A JP2021557309A JP2021557309A JP2022527163A JP 2022527163 A JP2022527163 A JP 2022527163A JP 2021557309 A JP2021557309 A JP 2021557309A JP 2021557309 A JP2021557309 A JP 2021557309A JP 2022527163 A JP2022527163 A JP 2022527163A
Authority
JP
Japan
Prior art keywords
segments
data stored
memory
segment
cryptographic hash
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
JP2021557309A
Other languages
English (en)
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 JP2022527163A publication Critical patent/JP2022527163A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

本開示は、暗号ハッシュを用いたメモリに格納されたデータの正当性を確認するための装置、方法、及びシステムを含む。実施形態は、メモリと、回路であって、メモリを複数のセグメントに分割することであって、各セグメントがそれぞれ異なる暗号ハッシュに関連付けられている、分割することと、メモリへの電力供給時に、複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた暗号ハッシュを使用して確認することと、メモリへの電力供給後に、複数のセグメントのうちの第2の数のセグメントに格納されたデータ、複数のセグメントのうちの第2の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた暗号ハッシュを使用して確認することとを行うように構成されている、回路とを備える。

Description

本開示は、一般に、半導体メモリ及び方法に関し、より詳細には、暗号ハッシュを用いたメモリに格納されたデータの正当性確認に関する。
メモリデバイスは、通常、コンピュータまたは他の電子デバイスにおいて内部の半導体、集積回路及び/または外部の着脱可能なデバイスとして提供される。メモリには、揮発性メモリ及び不揮発性メモリを含む様々な種類がある。揮発性メモリは、データを保持するために電力を要求することが可能であり、揮発性メモリには、特に、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び同期ダイナミックランダムアクセスメモリ(SDRAM)が含まれ得る。不揮発性メモリは、電力が供給されていないときにも格納データを保持することで永続的データを提供することが可能であり、不揮発性メモリには、特に、NANDフラッシュメモリ、NORフラッシュメモリ、読み出し専用メモリ(ROM)、ならびに、相変化ランダムアクセスメモリ(PCRAM)、抵抗変化型ランダムアクセスメモリ(RRAM)、及び磁気ランダムアクセスメモリ(MRAM)などの抵抗可変メモリが含まれ得る。
メモリデバイスを組み合わせて、ソリッドステートドライブ(SSD)、エンベデッドマルチメディアカード(e.MMC)、及び/またはユニバーサルフラッシュストレージ(UFS)デバイスを形成することができる。SSD、e.MMC、及び/またはUFSデバイスには、各種の不揮発性メモリ及び揮発性メモリの中でも特に、不揮発性メモリ(例えば、NANDフラッシュメモリ及び/またはNORフラッシュメモリ)が含まれ得、及び/または揮発性メモリ(例えば、DRAM及び/またはSDRAM)が含まれ得る。不揮発性メモリは、特に、パーソナルコンピュータ、ポータブルメモリスティック、デジタルカメラ、携帯電話、MP3プレーヤなどのポータブル音楽プレーヤ、ムービプレーヤなど、幅広いエレクトロニクス用途に使用され得る。
フラッシュメモリデバイスは、例えば浮遊ゲートなどの電荷蓄積構造にデータを格納するメモリセルを含み得る。フラッシュメモリデバイスは、一般的には、高記憶密度、高信頼性、及び低消費電力を可能にする1トランジスタメモリセルを使用する。抵抗可変メモリデバイスは、記憶要素(例えば、可変抵抗を有する抵抗変化型メモリ要素)の抵抗状態に基づいてデータを記憶することができる抵抗変化型メモリセルを含み得る。
メモリセルは、アレイ状に配置され得、アレイアーキテクチャにおけるメモリセルを、目標の(例えば、所望の)状態にプログラムすることができる。例えば、電荷がフラッシュメモリセルの電荷蓄積構造(例えば、浮遊ゲート)上に置かれるか、またはそこから電荷が除去されて、セルが特定のデータ状態にプログラムされ得る。セルの電荷蓄積構造に蓄積された電荷により、セルの閾値電圧(Vt)が示され得る。フラッシュメモリセルの状態は、セルの電荷蓄積構造に蓄積された電荷(例えば、Vt)をセンスすることによって判別され得る。
多くの脅威が、メモリデバイスのメモリセルに格納されたデータに影響を与える可能性がある。そのような脅威には、例えば、メモリデバイスに発生する故障、及び/またはハッカーまたはその他の悪意のあるユーザからの脅威が含まれ得る。そのような脅威により、重大な金銭的損失が生じるおそれがあり、及び/または安全性及び/またはセキュリティに重大な問題が生じるおそれがある。
本開示の実施形態による、いくつかの物理ブロックを有するメモリアレイの一部分の図を示す。 本開示の実施形態による、ホストと、メモリデバイスの形態の装置とを含むコンピューティングシステムのブロック図である。 本開示の実施形態によるセキュアメモリアレイを設定するために使用されるレジスタの例を示す。 本開示の実施形態に従って設定されたセキュアメモリアレイを含むメモリアレイの一部分の図を示す。 本開示の一実施形態による、メモリアレイに格納されたデータを複数のセグメントに分割し、各セグメントにそれぞれ格納されたデータの正当性確認及び修復を行うために使用されるレジスタの例を示す。 本開示の実施形態による、暗号ハッシュを使用して、メモリに格納されたデータのセグメントを正当性確認する方法を示す。 本開示の実施形態による、ホスト及びメモリデバイスを含む例示的なシステムのブロック図である。 本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。 本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。 本開示の実施形態による、証明書を検証するための例示的なプロセスのブロック図である。 本開示の実施形態による、署名を検証するための例示的なプロセスのブロック図である。 本開示の実施形態による、例示的なメモリデバイスのブロック図である。
本開示は、暗号ハッシュを用いたメモリに格納されたデータの正当性を確認するための装置、方法、及びシステムを含む。実施形態は、メモリと、回路であって、メモリを複数のセグメントに分割することであって、各セグメントがそれぞれ異なる暗号ハッシュに関連付けられている、分割することと、メモリへの電力供給時に、複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた暗号ハッシュを使用して確認することと、メモリへの電力供給後に、複数のセグメントのうちの第2の数のセグメントに格納されたデータ、複数のセグメントのうちの第2の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた暗号ハッシュを使用して確認することとを行うように構成されている、回路とを備える。
多くの脅威が、メモリ(例えば、メモリデバイス)に格納されたデータに影響を与える可能性がある。例えば、メモリのアレイ及び/または回路に故障が発生することがあり、その結果、データにエラーが生じることになる場合がある。追加の例として、ハッカーまたはその他の悪意のあるユーザが、悪意のある目的でデータに不正な変更を加える行為をしようとする可能性がある。例えば、悪意のあるユーザは、幾つかあるハッキング行為のタイプの中でも特に、メモリを使用して実行されている商取引に悪影響を与える(例えば、商取引の流れを悪い方向に変える)こと(例えば、支払いを確認するコードをスキップすることにより、提供されているサービスに対して支払いが行われたと偽って示すこと)、メモリで実行されているソフトウェアライセンスチェックに悪影響を与える(例えば、ソフトウェアライセンスチェックの流れを悪い方向に変える)こと(例えば、ライセンスを確認するコードをスキップすることにより、メモリのソフトウェアが適切にライセンスされていると偽って示すこと)、またはメモリを使用して実行されている自動車制御に悪影響を与える(例えば、自動車制御の流れを悪い方向に変える)こと(例えば、部品の真正性のチェック、環境チェック、または誤動作アラームのチェックをスキップすること)のために、メモリに格納されたデータを変更しようとする可能性がある。そのようなハッキング行為(攻撃など)により、重大な金銭的損失が生じるおそれがあり、及び/または安全性及び/またはセキュリティに重大な問題が生じるおそれがある。
そのため、セキュアなメモリシステムを確保するには、メモリに保存されているデータが真正であり(例えば、最初にプログラムされたものと同じであり)、ハッキング行為またはその他の不正な及び/または意図しない変更によって改ざんされていないことを確認(例えば、認証及び/または証明)することが重要である。そのようなデータ正当性確認は、例えば、メモリへの電力供給時(例えば、本明細書では「起動」と呼ばれることがあるメモリの電源オン時及び/または電源投入時)に行われ得る。しかし、データ正当性確認の実行により、メモリへの電力の供給に必要な時間が増加する可能性があり(例えば、起動時間の待ち時間が増加する可能性があり)、それによってメモリシステムのユーザ体験に悪影響を与えることがある。
一方、本開示の実施形態では、メモリへの電力供給時に、メモリへの電力供給に必要な時間を短縮しながらも(例えば、メモリ起動時間の待ち時間を減少させる)、メモリに格納されたデータの正当性を効果的に確認し、それによってセキュアなメモリシステムを確保することができる。例えば、本開示の実施形態では、メモリをセグメントに分割し、それらのセグメントの1つ1つにそれぞれ関連付けられた異なる暗号ハッシュを使用して、メモリへの電力供給時(例えば、起動時)に、セグメントの(例えば、セグメント全てよりも少ない)一部分にのみ格納されたデータの正当性を確認することができる。そして、メモリの残りのセグメントに格納されたデータを、メモリへの電力供給が完了した後に、それらのセグメントの1つ1つにそれぞれ関連付けられた異なる暗号ハッシュを使用して、正当性確認することができる。
本明細書で使用するとき、「a」、「an」、または「いくつかの(a number of)」とは、あるものの1つ以上のことを指す場合があり、「複数の(a plurality of)」とは、2つ以上のそのようなものを指し得る。例えば、1つのメモリデバイス(a memory device)は、1つ以上のメモリデバイスを指す場合があり、複数のメモリデバイスは2つ以上のメモリデバイスを指し得る。さらに、特に図面の参照数字に対して本明細書で使用される識別子「R」、「B」、「S」、「N」、及び「K」は、そのように称されるいくつかの特定の特徴が、本開示のいくつかの実施形態に含まれ得ることを示す。番号は、呼称の間で同じであってもよく、または異なっていてもよい。
本明細書の図は、最初の一桁または複数桁が図面の図番に対応し、残りの桁が図面内の要素または構成要素を識別する番号付け規則に従う。異なる図面間の類似した要素または構成要素は、類似した数字を使用することによって識別してもよい。例えば、101が図1の要素「01」を参照することができ、類似した要素を図2の201として参照することができる。
図1は、本開示の実施形態による、いくつかの物理ブロックを有するメモリアレイ101の一部分の図を示す。メモリアレイ101は、例えば、NANDフラッシュメモリアレイなどのフラッシュメモリアレイであり得る。追加の例として、メモリアレイ101は、特に、PCRAM、RRAM、MMRAM、またはスピントルクトランスファ(STT)アレイなどの抵抗可変メモリアレイであってもよい。しかし、本開示の実施形態は、特定のタイプのメモリアレイに限定されるものではない。さらに、メモリアレイ101を、本明細書で詳述するように、セキュアなメモリアレイとすることができる。さらに、図1に示していないが、メモリアレイ101は、その動作に関連する様々な周辺回路と共に、特定の半導体ダイ上に設置され得る。
図1に示すように、メモリアレイ101は、メモリセルの物理ブロック107-0(ブロック0)、107-1(ブロック1)、・・・、107-B(ブロックB)を、いくつか有する。メモリセルは、シングルレベルセル、及び/または例えば、2レベルセル、3レベルセル(TLC)、または4レベルセル(QLC)などのマルチレベルセルであり得る。一例として、メモリアレイ101内の物理ブロックの数は、128ブロック、512ブロック、または1,024ブロックであり得るが、実施形態は、メモリアレイ101内の2の特定の累乗または任意の特定の数の物理ブロックに限定されない。
いくつかのメモリセルの物理ブロック(例えば、ブロック107-0、107-1、・・・、107-B)が、メモリセルの平面内に含まれ得、いくつかのメモリセルの平面がダイ上に含まれ得る。例えば、図1に示す例では、各物理ブロック107-0、107-1、・・・、107-Bは、単一のダイの一部であってもよい。すなわち、図1に示すメモリアレイ101の部分は、メモリセルのダイであってもよい。
図1に示すように、各物理ブロック107-0、107-1、・・・、107-Bは、アクセス線(例えば、ワード線)に結合されたいくつかのメモリセルの物理行(例えば、103-0、103-1、・・・、103-R)を含む。各物理ブロックの行(例えば、ワード線)の数は32であってもよいが、実施形態では、物理ブロック当たりの行103-0、103-1、・・・、103-Rの数は特定の数に限定されない。さらに、図1には示さないが、メモリセルは、センス線(例えば、データ線及び/またはディジット線)の列に結合され得る。
当業者であれば理解されるように、各行103-0、103-1、・・・、103-Rは、いくつかのメモリセルのページ(例えば物理ページ)を含み得る。物理ページは、プログラム及び/またはセンスの単位(例えば、機能グループとしてまとめてプログラム及び/またはセンスされるいくつかのメモリセル)を意味する。図1に示す実施形態では、各行103-0、103-1、・・・、103-Rは、メモリセルの物理ページを1つ含む。しかし、本開示の実施形態は、そのように限定されるものではない。例えば、実施形態においては、各行が、メモリセルの複数の物理ページ(例えば、偶数番データ線に結合されたメモリセルの1つ以上の偶数ページと、奇数番データ線に結合されたメモリセルの1つ以上の奇数ページ)を含む場合がある。さらに、マルチレベルセルを含む実施形態の場合、メモリセルの物理ページが、データの複数のページ(例えば、論理ページ)を格納し得る(例えば、物理ページ内の各セルが、データの上位ページに対して1つ以上のビットを記憶し、データの下位ページに対して1つ以上のビットを記憶している状態で、メモリセルの物理ページが、データの上位ページ及びデータの下位ページを記憶し得る)。
図1に示すように、メモリセルのページは、いくつかの物理セクタ105-0、105-1、・・・、105-S(例えば、メモリセルのサブセット)を含み得る。セルの各物理セクタ105-0、105-1、・・・、105-Sは、いくつかのデータの論理セクタを格納し得る。さらに、データの各論理セクタは、データの特定のページの部分に対応し得る。一例として、特定の物理セクタに格納されたデータの第1の論理セクタが、データの第1のページに対応する論理セクタに対応してもよく、その特定の物理セクタに格納されたデータの第2の論理セクタが、データの第2のページに対応してもよい。各物理セクタ105-0、105-1、・・・、105-Sは、システムデータ及び/またはユーザデータを格納することがあり、及び/またはエラー訂正コード(ECC)データ、論理ブロックアドレス(LBA)データ、及びメタデータなどのオーバーヘッドデータを含むことがある。
論理ブロックアドレス指定は、データの論理セクタを識別するためにホストによって使用され得るスキームである。例えば、各論理セクタは、一意の論理ブロックアドレス(LBA)に対応してもよい。さらに、LBAがまた、メモリ内のデータのその論理セクタの物理的位置を示し得る、物理ブロックアドレス(PBA)などの物理アドレスに対応する(例えば、動的にマッピングされる)場合もある。データの論理セクタは、幾バイトかのデータ(例えば、256バイト、512バイト、1,024バイト、または4,096バイトのデータ)であり得る。しかし、実施形態は、これらの例に限定されるものではない。
物理ブロック107-0、107-1、・・・、107-B、行103-0、103-1、・・・、103-R、セクタ105-0、105-1、・・・、105-S、及びページについては、他の構成も可能であることに留意されたい。例えば、物理ブロック107-0、107-1、...、107-Bの行103-0、103-1、...、103-Rは、それぞれ例えば512バイトよりも多いかまたは少ないデータを含み得る単一の論理セクタに対応するデータを記憶してもよい。
図2は、本開示の実施形態による、ホスト202と、メモリデバイス206の形態の装置とを含むコンピューティングシステム200のブロック図である。本明細書で使用される「装置」は、例えば、回路もしくは複数の回路、ダイもしくは複数のダイ、モジュールもしくは複数のモジュール、デバイスもしくは複数のデバイス、またはシステムもしくは複数のシステムなどの様々な構造または構造の組み合わせのうちのいずれかを指し得るが、これらに限定されない。さらに、実施形態では、コンピューティングシステム200は、メモリデバイス206に類似しているいくつかのメモリデバイスを含み得る。
図2に示す実施形態では、メモリデバイス206は、メモリアレイ201を有するメモリ212を含み得る。メモリアレイ201は、図1に関連して前に述べたメモリアレイ101に類似していてもよい。図2では1つのメモリアレイ201が図示されているが、メモリ212は、メモリアレイ201に類似した任意の数のメモリアレイを含むことができる。
実施形態では、メモリアレイ201(例えば、アレイ201のサブセット、または全アレイ201)を、セキュアアレイ(例えば、制御下に置かれることになるメモリ212の領域)とすることができる。例えば、メモリアレイ201に格納されたデータには、機密情報にまつわる用途のために実行されることになるホストファームウェア及び/またはコードなど、機密データ(例えば、非ユーザデータ)が含まれてもよい。そのような実施形態では、1つ以上の不揮発性レジスタが、セキュアアレイを設定するために使用されてもよい。例えば、図2に示す実施形態では、回路210は、セキュアアレイを設定するために使用することができる1対のレジスタ214-1及び214-2を含む。例えば、レジスタ214-1が、セキュアアレイのアドレス(例えば、データの開始LBA)を設定してもよく、レジスタ214-2が、セキュアアレイのサイズ(例えば、データの終了LBA)を設定してもよい。そのようなレジスタの例と、セキュアアレイを設定する際のそれらの使用とについて、本明細書では(例えば、図3A~図3Bに関連して)さらに説明する。
図2に示すように、ホスト202は、インターフェース204を介してメモリデバイス206に結合され得る。ホスト202とメモリデバイス206とは、インターフェース204上で通信する(例えば、コマンド及び/またはデータを送る)ことができる。ホスト202及び/またはメモリデバイス206は、幾つかあるホストシステムの中で特に、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル記録再生装置、移動電話、PDA、メモリカードリーダ、インターフェースハブ、または例えば、自動車用(例えば、乗り物用及び/または交通インフラストラクチャ用)のモノのインターネット(IoT)対応機種、もしくは医療用(例えば、インプラント型及び/または健康管理用)のIoT対応機種など、IoT対応機種であるか、あるいはそれらの一部であってもよく、メモリアクセスデバイス(例えば、プロセッサ)を含むことができる。当業者であれば、「プロセッサ」とは、並列処理システム、いくつかのコプロセッサなど、1つ以上のプロセッサを意味することがあり得ることを理解されよう。
インターフェース204は、規格化された物理インターフェースの形態をとり得る。例えば、メモリデバイス206がコンピューティングシステム200の情報ストレージに使用される場合、インターフェース204は、幾つかある物理コネクタ及び/または物理インターフェースの中で特に、シリアルアドバンスドテクノロジアタッチメント(SATA)物理インターフェース、周辺機器相互接続エクスプレス(PCIe)物理インターフェース、ユニバーサルシリアルバス(USB)物理インターフェース、または小型コンピュータシステムインターフェース(SCSI)であり得る。また一方、一般に、インターフェース204は、インターフェース204に対して互換性のある受信器を有するメモリデバイス206とホスト(例えば、ホスト202)との間で、制御、アドレス、情報(例えば、データ)、及びその他の信号を渡すためのインターフェースを提供し得るものである。
メモリデバイス206は、ホスト202及びメモリ212(例えば、メモリアレイ201)と通信するコントローラ208を含む。例えば、コントローラ208は、幾つかある動作の中でも特に、データのセンス(例えば、読み出し)、プログラム(例えば、書き込み)、移動、及び/または消去を行う動作を含む動作をメモリアレイ201で実行するためのコマンドを送ることがあり得る。
コントローラ208は、メモリ212と同じ物理デバイス(例えば、同じダイ)上に含まれてもよい。あるいは、コントローラ208は、メモリ212を含む物理デバイスに通信可能に結合される別個の物理デバイス上に含まれてもよい。実施形態では、コントローラ208の構成要素を、分散型コントローラとして複数の物理デバイス(例えば、メモリと同じダイ上のいくつかの構成要素、及び異なるダイ、モジュール、またはボード上のいくつかの構成要素)に散在させてもよい。
ホスト202は、メモリデバイス206と通信するためのホストコントローラ(図2には示していない)を含み得る。ホストコントローラは、インターフェース204を介してメモリデバイス206にコマンドを送信し得る。ホストコントローラは、メモリデバイス206及び/またはメモリデバイス206上のコントローラ208と通信して、幾つかある動作の中でも特に、データの読み出し、書き込み、及び/または消去を行い得る。さらに、実施形態では、ホスト202は、本明細書で上記のとおり、IoT通信能力を有するIoT対応機種であってもよい。
メモリデバイス206のコントローラ208、及び/またはホスト202のホストコントローラは、制御回路及び/またはロジック(例えば、ハードウェア及びファームウェア)を含み得る。実施形態では、メモリデバイス206のコントローラ208及び/またはホスト202のホストコントローラは、物理インターフェースを含むプリント回路基板に接続された特定用途向け集積回路(ASIC)であり得る。また、メモリデバイス206及び/またはホスト202は、揮発性メモリ及び/または不揮発性メモリのバッファと、いくつかのレジスタとを含み得る。
例えば、図2に示されるように、メモリデバイスは、回路210を含み得る。図2に示される実施形態では、回路210は、コントローラ208に含まれる。しかし、本開示の実施形態は、そのように限定されるものではない。例えば、実施形態では、回路210が(例えばコントローラ208の代わりに)メモリ212に(例えば同じダイ上に)含まれてもよい。回路210は、例えば、ハードウェア、ファームウェア、及び/またはソフトウェアを含むことが可能であり、メモリ212(例えば、メモリアレイ201)に格納されたデータの正当性を確認する(例えば、認証する、及び/または証明する)ために使用され得る。
例えば、回路210は、メモリアレイ201に格納されたデータを複数のセグメントに分割し、各セグメントにそれぞれ異なる暗号ハッシュを関連付けることができる。例えば、回路210は、ホスト202から受け取った、認証された(例えば、セキュリティ保護され)、アンチリプレイ保護されたコマンドを使用して、各セグメントに対してそれぞれ異なる暗号ハッシュを生成(例えば、計算)することが可能である(例えば、メモリデバイス206のみがこれらの暗号ハッシュを認識し、メモリデバイス206のみがこれらの暗号ハッシュの生成及び更新を行うことができるようにする)。各セグメントに対してそれぞれ生成される暗号ハッシュを、本明細書では、そのセグメントのゴールデンハッシュと呼ぶことがあり、この暗号ハッシュは、例えば、SHA-256暗号ハッシュを含み得る。これらのゴールデンハッシュは、メモリデバイス206及び/またはホスト202のユーザがアクセスできない(例えば、メモリデバイス206の「隠れた」領域にある)回路210に含まれる不揮発性レジスタ216-3に格納されてもよく、本明細書で詳述するように、メモリアレイ201に格納されたデータを正当性確認する過程で使用されてもよい。
さらに、図2に示すように、回路210は、複数のセグメントを設定するために使用することができる1つ以上の不揮発性レジスタ(例えば、レジスタ216-1及び216-2)を含むことができる。例えば、レジスタ216-1は、複数のセグメントの1つ1つそれぞれのアドレス(例えば、データの開始LBA)を設定してもよく、レジスタ216-2は、複数のセグメントの1つ1つそれぞれのサイズ(例えば、データの終了LBA)を設定してもよい。複数のセグメントは、それぞれ同じサイズに(例えば、同じ量のデータを格納)してもよく、異なるサイズに(例えば、異なる量のデータを格納)してもよい。レジスタ216-1、216-2、及び216-3の例を、本明細書で(例えば、図4に関連して)さらに説明する。
メモリデバイス206への電力供給(例えば、電源オン及び/または電源投入)中に、回路210は、複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータを、その各セグメントに関連付けられたゴールデンハッシュを用いて正当性確認する(例えば、正当性確認するかどうかを判定する)ことができる。本明細書で使用するとき、データを正当性確認するとは、データが真正であり(例えば、最初にプログラムされたものと同じであり)、ハッキング行為またはその他の不正な及び/または意図しない変更によって改ざんされていないことを認証すること、及び/または証明することを含むこと、及び/または指すことがあり得る。
例えば、回路210は、第1の数のセグメントの1つ1つにそれぞれ格納されたデータに対して異なる実行時暗号ハッシュを生成(例えば、計算)し、各セグメントにそれぞれ格納されたデータに対して生成した実行時暗号ハッシュを、レジスタ216-3に格納された、その各セグメントのゴールデンハッシュと比較してもよい。その比較により、各セグメントに格納されたデータに対して生成した実行時暗号ハッシュが、その各セグメントのゴールデンハッシュと一致することが示されると、その各セグメントに格納されたデータは改ざんされてないと判定することができ、したがって、その各セグメントに格納されたデータの正当性を確認することができる(例えば、正当であると判定することができる)。そのため、各セグメントにそれぞれ格納されたデータを、他のセグメントに格納されたデータとは無関係に正当性確認することが可能である。
複数のセグメントのうちの第1の数のセグメントは、メモリアレイ201に格納されたデータが分割された複数のセグメントの(例えば、セグメント全てよりも少ない)一部分のみを含み得る。一例を挙げると、複数のセグメントのうちの第1の数のセグメントは、ホスト202によって(例えば、ホスト202のユーザによって)設定された特定の数量のセグメントを含み得る。この数量は、回路210に含まれる不揮発性レジスタ218-1に格納されてもよい。追加の例として、複数のセグメントのうちの第1の数のセグメントは、特定の時間内に回路210によって正当性確認することが可能な数量のセグメントを含み得る。この時間は、メモリデバイス206への電力供給が継続する時間に対応してもよく、メモリデバイス206によって(例えば、回路210によって)自動的に決定され、回路210に含まれる不揮発性レジスタ218-2に格納されてもよい。
しかし、比較により、各セグメントに格納されたデータに対して生成した実行時暗号ハッシュが、その各セグメントのゴールデンハッシュと一致しないことが示された場合には、それによって、その各セグメントに格納されたデータは(例えば、ハッカーまたはメモリの故障によって)改ざんされたことが示され得、したがって、その各セグメントに格納されたデータは正当ではない可能性がある(例えば、正当ではないと判定され得る)。そのような場合には、回路210は、そのセグメントに格納されたデータを修復してもよい(例えば、修復しようと試みてもよい)。セグメントに格納されたデータを修復することは、例えば、データの修復が許可されているかどうかを判定することと、修復が許可されている場合には、メモリ212から(例えば、図11に関連して詳述する修復ブロック1117など、メモリに含まれる修復ブロックから)データを回復させる(例えば、復元する)こととを含み得る。
図2に示すように、回路210は、追加のレジスタ216-4、216-5、216-6、216-7、及び216-8を含むことがあり、これらのレジスタは、正当性確認及び修復の過程で回路210によって使用され得る。レジスタ216-4は、複数のセグメントの1つ1つにそれぞれ格納されたデータの正当性確認の状況の表示(例えば、データの正当性確認が行われたかどうかの表示)を提供することができる揮発性レジスタであってもよく、レジスタ216-5は、各セグメントにそれぞれ格納されたデータの正当性確認の結果の表示(例えば、データが正当であると判定されたかどうかの表示)を提供することができる揮発性レジスタであってもよく、これらのレジスタは、各セグメントにそれぞれ格納されたデータの修復を試みるべきかどうかを判定するために、回路210によって使用されてもよい。
レジスタ216-6は、複数のセグメントの1つ1つにそれぞれ格納されたデータの修復が許可されているかどうかの表示を提供することができる不揮発性レジスタであってもよく、データが正当ではなく、修復を試みるべきであると判定されると、セグメントに格納されたデータの修復が許可されているかどうかを判定するために、回路210によって使用されてもよい。レジスタ216-7は、複数のセグメントの1つ1つにそれぞれ格納されたデータを、そこから回復させることができるメモリ212(例えば、修復ブロック)のアドレスを設定するために使用され得る不揮発性レジスタであってもよく、このレジスタは、そのデータの修復時にデータを回復させるために、回路210によって使用されてもよい。レジスタ216-8は、複数のセグメントの1つ1つにそれぞれ格納されたデータの修復の結果(例えば、データが修復されたかどうか)の表示を、そのデータの修復が許可されている場合に提供することができる揮発性レジスタであってもよい。レジスタ216-4~216-8の例、ならびに正当性確認及び修復の過程でのそれらの使用については、本明細書で(例えば、図4に関連して)さらに説明する。
メモリデバイス206への電力供給が完了した後(例えば、起動後)に、回路210は、複数のセグメントのうちの第2の数のセグメントの1つ1つにそれぞれ格納されたデータを、その各セグメントに関連付けられたゴールデンハッシュを用いて正当性確認する(例えば、正当性確認するかどうかを判定する)ことができる。複数のセグメントのうちの第2の数のセグメントは、メモリアレイ201に格納されたデータが分割された残りのセグメント(例えば、複数のセグメントのうちの第1の数のセグメントに含まれないセグメント)を含み得る。しかし、本開示の実施形態は、第1の数及び第2の数のセグメントに限定されない(例えば、複数のセグメントは、第1の数及び第2の数のセグメントよりも多くのセグメントを含むことができる)。
複数のセグメントのうちの第2の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を確認するプロセスは、本明細書で既に説明した複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を確認するプロセスに類似し得る。例えば、回路210は、第1の数のセグメントについて本明細書で前に説明したのと同様にして、第2の数のセグメントの1つ1つにそれぞれ格納されたデータに対して異なる実行時暗号ハッシュを生成し、各セグメントにそれぞれ格納されたデータに対して生成した実行時暗号ハッシュを、レジスタ216-3に格納された、その各セグメントのゴールデンハッシュと比較してもよい。さらに、複数のセグメントのうちの第2の数のセグメントの1つに格納されたデータが正当ではないと判定された場合、回路210は、複数のセグメントのうちの第1の数のセグメントについて本明細書で前に説明したのと同様にして、そのセグメントに格納されたデータを修復してもよい。さらに、回路210は、複数のセグメントのうちの第2の数のセグメントに格納されたデータの正当性確認及び修復の過程で、第1の数のセグメントについて本明細書で前に説明したのと同様にして、レジスタ216-4~216-8を使用してもよい。
さらに、メモリデバイス206への電力供給が完了した後(例えば、複数のセグメントのうちの第2の数のセグメントに格納されたデータの正当性が確認されている間)に、回路210は、第1の数のセグメントの1つ1つにそれぞれ格納されたデータを、その第1の数のセグメントの1つ1つにそれぞれ格納されたデータが正当性確認されるかまたは修復されることで、インターフェース204を介してホスト202に送ることができる(例えば、ホスト202は、メモリデバイス206からデータを受け取ることができる)。例えば、第1の数のセグメントの1つ1つにそれぞれ格納されたデータは、その各セグメントに格納されたデータが、正当ではないと判定され、修復されていない場合には、ホスト202に送ることができず、各セグメントにそれぞれ格納されたデータは、正当であると判定され、または修復された場合にのみ、ホスト202に送ることができる。回路210は、本明細書で既に述べたように、レジスタ216-4~216-8を用いて、第1の数のセグメントの1つ1つにそれぞれ格納されたデータが正当であると判定されたか、または修復されたかを判定してもよい。
複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータを送った後に、回路210は、第2の数のセグメントの1つ1つにそれぞれ格納されたデータを、その第2の数のセグメントの1つ1つにそれぞれ格納されたデータが正当性確認されるかまたは修復されることで、インターフェース204を介してホスト202に送ることができる(例えば、ホスト202は、メモリデバイス206からデータを受け取ることができる)。例えば、第2の数のセグメントの1つ1つにそれぞれ格納されたデータは、その各セグメントに格納されたデータが、正当ではないと判定され、修復されていない場合には、ホスト202に送ることができず、各セグメントにそれぞれ格納されたデータは、正当であると判定され、または修復された場合にのみ、ホスト202に送ることができる。回路210は、本明細書で既に述べたように、レジスタ216-4~216-8を用いて、第2の数のセグメントの1つ1つにそれぞれ格納されたデータが正当であると判定されたか、または修復されたかを判定してもよい。
図2に示した実施形態は、本開示の実施形態を不明瞭にしないために図示していない、追加の回路、論理回路、及び/または構成要素を含み得る。例えば、メモリデバイス206は、I/O回路によってI/Oコネクタ上に提供されるアドレス信号をラッチするためのアドレス回路を含むことがある。アドレス信号が、行デコーダ及び列デコーダによって受け取られてデコードされて、メモリアレイ201にアクセスすることができる。さらに、メモリデバイス206は、メモリアレイ201とは別個の、及び/またはメモリアレイ201に加えて、例えば、DRAMまたはSDRAMなどのメインメモリを含んでもよい。メモリデバイス206の追加の回路、論理回路、及び/または構成要素をさらに例示する例を、本明細書で(例えば、図11に関連して)詳述する。
図3Aは、本開示の実施形態によるセキュアメモリアレイを設定するために使用されるレジスタ314-1及び314-2の例を示す。図3Bは、本開示の実施形態に従ってレジスタ314-1及び314-2を使用して設定されたセキュアメモリアレイを含むメモリアレイ301の一部分の図を示す。レジスタ314-1及び314-2は、例えば、それぞれ図2に関連して既に説明したレジスタ214-1及び214-2であり得る。セキュアメモリアレイ301は、例えば、図2に関連して既に説明したメモリアレイ201であり得る。例えば、図3Bに示すように、セキュアメモリアレイ301は、図1に関連して既に説明したメモリアレイ101と同様にして、メモリセルのいくつかの物理ブロック307-0、307-1、・・・、307-Bを含むことが可能であり、それぞれが、メモリセルのいくつかのセクタを有するいくつかの物理行303-0、303-1、・・・、303-Rを含む。
図3Aに示すように、レジスタ314-1は、セキュアアレイのアドレス(例えば、セキュアアレイの異なる部分のアドレス)を設定してもよく、レジスタ314-2は、セキュアアレイのサイズ(例えば、セキュアアレイの異なる部分のサイズ)を設定してもよい。レジスタ314-1によって設定されるセキュアアレイのアドレスは、例えば、セキュアアレイの開始点(例えば、開始LBA)(例えば、セキュアアレイの異なる部分の開始点)に対応してもよく、レジスタ314-2によって設定されるセキュアアレイのサイズは、例えば、セキュアアレイの終了点(例えば、終了LBA)(例えば、セキュアアレイの異なる部分の終了点)に対応してもよい。
例えば、図3Aに示すように、レジスタ314-1及び314-2は、Nペアの値を設定することが可能であり、各ペアはそれぞれ、レジスタ314-1によって設定されるアドレス値(例えば、addr)と、レジスタ314-2によって設定されるサイズ値(例えば、size)とを含む。例えば、図3Aに示す例では、ペアはアドレス値addr及びサイズ値sizeを含み(例えば、ペア=[addr,size])、ペアはアドレス値addr及びサイズ値sizeを含み(例えば、ペア=[addr,size])、他にも同じように、ペアNはアドレス値addr及びサイズ値sizeを含む(例えば、ペア=[addr,size])。ペアのアドレス値は、セキュアアレイの一部分の開始点(例えば、開始LBA)に対応してもよく、そのペアのアドレス値とサイズ値との合計は、セキュアアレイのその部分の終了点(例えば、終了LBA)に対応し得る。したがって、セキュアアレイ全体(例えば、セキュアアレイ全体を含む部分)を、[addr,addr+size]∪[addr,addr+size]∪・・・∪[addr,addr+size]によって指定することができる。
レジスタ314-2によって設定されるサイズ値がゼロである最初のペアにより、セキュアアレイの設定を終了させることができる。例えば、図3Aに示した例では、ペアのサイズ値がゼロである場合、セキュアアレイは、[addr,addr+size]∪[addr,addr+size]によって指定されることになる。
レジスタ314-1及び314-2によって(例えば、レジスタ314-2によって設定される全てのサイズ値を非ゼロにして)設定されたセキュアアレイの例が、図3Bに示されている。例えば、図3Bに示すように、メモリアレイ301のセクタ305-0に割り当てられたアドレス(例えば、LBA)はaddrであり、メモリアレイ301のセクタ305-1に割り当てられたアドレスはaddr+sizeであり、メモリアレイ301のセクタ305-2に割り当てられたアドレスはaddrであり、メモリアレイ301のセクタ305-3に割り当てられたアドレスはaddr+sizeであり、メモリアレイ301のセクタ305-4に割り当てられたアドレスはaddrであり、メモリアレイ301のセクタ305-5に割り当てられたアドレスはaddr+sizeである。したがって、セキュアアレイは、セクタ(例えば、セクタに格納されたデータ)305-0~305-1、セクタ305-2~305-3、及びセクタ305-4~305-5を含む。ただし、メモリアレイ301のセクタ305-0よりも前のセクタ、及びメモリアレイ301のセクタ305-1~305-2は、セキュアアレイの一部ではない(例えば、セキュアアレイはアレイ301のサブセットを含む)。
図4は、本開示の一実施形態による、メモリアレイに格納されたデータを複数のセグメントに分割し、各セグメントにそれぞれ格納されたデータの正当性確認及び修復を行うために使用されるレジスタ416-1~416-8の例を示す。レジスタ416-1~416-8は、例えば、図2に関連して前に説明したレジスタ216-1~216-8であり得、メモリアレイは、例えば、図2に関連して前に説明したメモリアレイ201であり得る。
図4に図示され、本明細書で以前に説明した例に示すように、メモリアレイに格納されたデータを複数の(例えば、N個の)セグメントに分割することができ、そのうちの5つ(例えば、セグメント420-1、420-2、420-3、420-4、及び420-5)が図4に図示されている。さらに、本明細書で(例えば、図2に関連して)前に述べたように、複数のセグメントは、メモリへの電力供給時にデータの正当性確認及び/または修復を行い得る第1の数(例えば、K個)のセグメントと、メモリへの電力供給後にデータの正当性確認及び/または修復を行い得る第2の数(例えば、N-K個)のセグメントとを含み得る。図4に示された例では、セグメント420-1、420-2、及び420-3は、複数のセグメントのうちの第1の数のセグメントに含まれ、セグメント420-4及び420-5は、複数のセグメントのうちの第2の数のセグメントに含まれる。
図4に示すように、レジスタ416-1は、複数のセグメントの1つ1つそれぞれのアドレス(例えば、アドレス値)を設定することができ、レジスタ416-2は、複数のセグメントの1つ1つそれぞれのサイズ(例えば、サイズ値)を設定することができる。レジスタ416-1によって設定される各セグメントそれぞれのアドレスは、例えば、そのセグメントの開始点(例えば、開始LBA)に対応してもよく、レジスタ416-2によって設定される各セグメントそれぞれのサイズは、例えば、そのセグメントの終了点(例えば、終了LBA)に対応してもよい。例えば、図4に示した例では、セグメント420-1のアドレスは、レジスタ416-1によって0xaabbccと設定され、セグメント420-1のサイズは、レジスタ416-2によって0x10000と設定される。同様に、図4に示すように、セグメント420-2、420-3、420-4、及び420-5のアドレスは、レジスタ416-1によって、それぞれ0xaa1122、0x123444、0xddeeff、及び0xaa55bbと設定され、セグメント420-2、420-3、420-4、及び420-5のサイズは、レジスタ416-2によって、それぞれ0x10000、0x20000、0x10000、及び0x20000と設定される。
本明細書で(例えば、図2に関連して)既述のように、データの複数のセグメントの1つ1つそれぞれは、そのセグメントに格納されたデータの正当性確認用にそのセグメントに関連付けられた異なる暗号ハッシュ(例えば、ゴールデンハッシュ)を有し得る。例えば、図4に示す例では、セグメント420-1は、それに関連付けられたゴールデンハッシュ#1を有し、セグメント420-2は、それに関連付けられたゴールデンハッシュ#2を有し、セグメント420-3は、それに関連付けられたゴールデンハッシュ#Kを有し、セグメント420-4は、それに関連付けられたゴールデンハッシュ#K+1を有し、セグメント420-5は、それに関連付けられたゴールデンハッシュNを有する。図4に示すように、各セグメントにそれぞれ関連付けられたゴールデンハッシュを、レジスタ416-3に格納することができる。
図4に示すように、レジスタ416-4は、複数のセグメントの1つ1つにそれぞれ格納されたデータの正当性確認状況の表示(例えば、正当性確認状況を示す値)を提供してもよい。図4に示した例では、複数のセグメントのうちの第1の数のセグメントに格納されたデータの正当性確認は完了しているが、複数のセグメントのうちの第2の数のセグメントに格納されたデータの正当性確認はまだ完了していない(例えば、メモリへの電力供給は完了しているが、第2の数のセグメントに格納されたデータの正当性確認はまだ開始されていない)。したがって、レジスタ416-4は、図4に示すように、セグメント420-1に格納されたデータの正当性確認が行われたことを示す表示、セグメント420-2に格納されたデータの正当性確認が行われたことを示す表示、セグメント420-3に格納されたデータの正当性確認が行われたことを示す表示、セグメント420-4に格納されたデータの正当性確認が行われていないことを示す表示、及びセグメント420-5に格納されたデータの正当性確認が行われていないことを示す表示を提供することができる。
図4に示すように、セグメントに格納されたデータの正当性確認が(例えば、レジスタ416-4によって提供される、そのセグメントの値によって示されるように)行われた場合、レジスタ416-5は、そのセグメントに格納されたデータの正当性確認の結果の表示(例えば、結果を示す値)を提供してもよい。図4に示した例では、レジスタ416-5は、図4に示すように、セグメント420-1に格納されたデータが正当であると判定されたことを示す表示、セグメント420-2に格納されたデータが正当ではないと判定されたことを示す表示、及びセグメント420-3に格納されたデータが正当ではないと判定されたことを示す表示を提供している。さらに、セグメント420-4及び420-5に格納されたデータは(例えば、レジスタ416-4によって提供される、それらのセグメントの値によって示されるように)まだ正当性確認されていないので、図4に示したように、レジスタ416-5は、セグメント420-4または420-5の値を提供していない(例えば、値を含まない)。
本明細書で(例えば、図2に関連して)既述のように、セグメントに格納されたデータの正当性確認の結果、データが(例えば、レジスタ416-5によって提供される、そのセグメントの値によって示されるように)正当ではないと判定された場合、そのセグメントに格納されたデータを修復してもよい。図4に示すように、レジスタ416-6は、複数のセグメントの1つ1つにそれぞれ格納されたデータの修復が許可されているかどうかの表示(例えば、許可されているかどうかを示す値)を提供してもよい。例えば、図4に示した例では、レジスタ416-6は、セグメント420-1に格納されたデータの修復が許可されていることを示す表示、セグメント420-2に格納されたデータの修復が許可されていることを示す表示、セグメント420-3に格納されたデータの修復が許可されていないことを示す表示、セグメント420-4に格納されたデータの修復が許可されていないことを示す表示、及びセグメント420-5に格納されたデータの修復が許可されていることを示す表示を提供している。
図4に示すように、セグメントに格納されたデータの修復が(例えば、レジスタ416-6によって提供される、そのセグメントの値によって示されるように)許可されている場合、レジスタ416-7は、そのセグメントに格納されたデータを、修復時に、そこから回復させることができるアドレス(例えば、アドレス値)を設定してもよい。レジスタ416-7によって設定されるアドレスは、例えば、データを、そこから回復させることができるメモリの修復ブロック内の位置に対応し得る。例えば、図4に示した例では、セグメント420-1に格納されたデータを、そこから回復させることができるアドレスは、レジスタ416-7によってaddr1と設定されており、セグメント420-2に格納されたデータを、そこから回復させることができるアドレスは、レジスタ416-7によってaddr2と設定されており、セグメント420-5に格納されたデータを、そこから回復させることができるアドレスは、レジスタ416-7によってaddr3と設定されている。さらに、セグメント420-3及び420-4に格納されたデータの修復が(例えば、レジスタ416-6によって提供される、それらのセグメントの値によって示されるように)許可されていないので、レジスタ416-7は、図4に示したように、セグメント420-3または420-4に対してはアドレス値を設定していない(例えば、含まない)。
図4に示すように、セグメントに格納されたデータの修復が(例えば、レジスタ416-6によって提供される、そのセグメントの値によって示されるように)許可されている場合、レジスタ416-8は、修復の結果の表示(例えば、結果を示す値)を提供してもよい。図4に示した例では、レジスタ416-8は、(例えば、セグメント420-1に格納されたデータが正当であると判定された結果、そのデータを修復する必要がなかったので)セグメント420-1に格納されたデータが修復されていないという表示、(例えば、セグメント420-2に格納されたデータが正当ではないと判定されたが、修復することが許可されているので)セグメント420-2に格納されたデータが修復されているという表示、及び(例えば、セグメント420-5に格納されたデータが、まだ正当性確認されていないので)セグメント420-5に格納されたデータが修復されていないという表示を提供している。さらに、セグメント420-3及び420-4に格納されたデータの修復が(例えば、レジスタ416-6によって提供される、それらのセグメントの値によって示されるように)許可されていないので、レジスタ416-7は、図4に示したように、セグメント420-3または420-4に対する値を提供していない(例えば、含まない)。
図5は、本開示の実施形態による、暗号ハッシュを使用して、メモリに格納されたデータのセグメントを正当性確認する(例えば、正当性確認するかどうかを判定する)方法525を示す。メモリは、例えば、図2に関連して既に説明したメモリアレイ201であり得、本明細書で既に説明したように、複数のセグメントに分割され得る。方法525は、例えば、図2に関連して前に説明したメモリデバイス206(例えば、回路210)によって行い得る。
ブロック527において、方法525は、複数のメモリセグメントの1つに格納されたデータをメモリから取り出すことを含む。セグメントに格納されたデータは、本明細書で(例えば、図2に関連して)既に説明したように、レジスタ216-1及び216-2で設定された、そのセグメントのアドレス及びサイズを使用して取得することができる。
ブロック529において、方法525は、メモリセグメントに格納されたデータに対して実行時暗号ハッシュを生成することを含み、ブロック531において、方法525は、メモリセグメントに関連付けられたゴールデンハッシュを取得することを含む。ゴールデンハッシュは、本明細書で(例えば、図2に関連して)前に述べたように、レジスタ216-3から取得することができる。
ブロック533において、方法525は、実行時暗号ハッシュをゴールデンハッシュと比較することを含み、ブロック535において、方法525は、実行時暗号ハッシュがゴールデンハッシュと一致するかどうかを判定することを含む。実行時暗号ハッシュがゴールデンハッシュと一致すると判定された場合、ブロック537において、メモリセグメントに格納されたデータが正当であると確認される(例えば、正当であると判定される)。実行時暗号ハッシュがゴールデンハッシュと一致しないと判定された場合、方法525はブロック539に進む。
ブロック539において、方法525は、メモリセグメントに格納されたデータの修復が許可されているかどうかを判定することを含む。メモリセグメントに格納されたデータの修復が許可されているかどうかの判定は、本明細書で(例えば、図2に関連して)既に説明したように、レジスタ216-6を用いて行うことができる。
メモリセグメントに格納されたデータの修復が許可されていると判定された場合、ブロック541においてデータが修復される。データの修復は、本明細書で(例えば、図2に関連して)既に説明したように、レジスタ216-7を使用してメモリからデータを回復させることを含み得る。メモリセグメントに格納されたデータの修復が許可されていないと判定された場合、ブロック543において、メモリセグメントに格納されたデータが正当ではないと確認される(例えば、正当ではないと判定される)。
図6は、本開示の実施形態による、ホスト602及びメモリデバイス606を含む例示的なシステムのブロック図である。ホスト602及びメモリデバイス606は、例えば、それぞれ図2に関連して既に説明したホスト202及びメモリデバイス206であり得る。
コンピューティングデバイスは、レイヤを使用して段階的に起動することができ、各レイヤが、後続のレイヤを認証してロードし、各レイヤで次第に高度化するランタイムサービスを提供する。あるレイヤが先行するレイヤからサービスを受け、後続のレイヤにサービスを提供することで、下位のレイヤの上に構築され、上位のレイヤにサービスを提供するレイヤの相互接続網が形成される。図6に示されているように、レイヤ0(「L」)651とレイヤ1(「L」)653とはホスト内にある。レイヤ0 651は、ファームウェアデリバティブシークレット(FDS)鍵652をレイヤ1 653に提供し得る。FDS鍵652は、レイヤ1 653のコードの識別情報及びその他のセキュリティ関連データを記述し得る。例では、特定のプロトコル(ロバストなモノのインターネット(RIOT)コアプロトコルなど)がFDS652を使用して、ロードするレイヤ1 653のコードの正当性を確認することができる。例では、特定のプロトコルは、デバイス識別構成エンジン(device identification composition engine(DICE))及び/またはRIOTコアプロトコルを含み得る。例として、FDSには、レイヤ1ファームウェアのイメージそのもの、認証されたレイヤ1ファームウェアを暗号で識別するマニフェスト、セキュアブート実装との関連で署名されたファームウェアのバージョン番号、及び/またはデバイス用のセキュリティクリティカル構成設定が含まれ得る。デバイスシークレット658が、FDS652を作成するために使用され、ホスト602のメモリに格納され得る。
ホストは、矢印654で示されるように、データをメモリデバイス606に伝送し得る。伝送データには、公開されている外部識別、証明書(例えば、外部識別証明書)、及び/または外部公開鍵が含まれ得る。メモリデバイス606のレイヤ2(「L」)655は、伝送データを受け取り、オペレーティングシステム(「OS」)657の動作の際に、第1のアプリケーション659-1及び第2のアプリケーション659-2でデータを実行し得る。
例示的な動作では、ホスト602は、デバイスシークレット658を読み出し、レイヤ1 653の識別情報をハッシュし、
L1=KDF[Fs(s),Hash(「不変情報」)]
を含む計算を実行し得る。
上式で、KL1は外部公開鍵であり、KDF(例えば、National Institute of Standards and Technology(NIST) Special Publication 800-108で定義されているKDF)は、鍵導出関数(例えば、HMAC-SHA256)であり、Fs(s)はデバイスシークレット658である。FDS652は、
FDS=HMAC-SHA256[Fs(s),SHA256(「不変情報」)]
を実行することで決定できる。
同様に、メモリデバイス606は、矢印656で示されるように、データをホスト602に伝送し得る。
図7は、本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。図7は、外部公開識別、外部証明書、及び外部公開鍵を含むパラメータの決定の例であり、これらは、その後、矢印754によって示されるように、メモリデバイス(例えば、図6の606)のレイヤ2(例えば、レイヤ2 655)に送られる。図7のレイヤ0(「L」)751は図6のレイヤ0 651に対応し、同様にFDS752はFDS652に対応し、レイヤ1 753はレイヤ1 653に対応し、矢印754及び756は、それぞれ矢印654及び656に対応する。
レイヤ0 751からのFDS 752は、レイヤ1 753に送られ、非対称ID生成器761によって使用されて、公開識別(「IDlk公開」)765及び秘密識別767が生成される。略された「IDlk公開」中、「lk」はレイヤk(この例ではレイヤ1)を示し、「公開」は、識別がオープンに共有されていることを示す。公開識別765は、ホストのレイヤ1 753の右側及び外側に延びる矢印によって共有されるように図示されている。生成された秘密識別767は、暗号化装置773に入力される鍵として使用される。暗号化装置773は、データを暗号化するために使用される任意のプロセッサ、コンピューティングデバイスなどであり得る。
ホストのレイヤ1 753は、非対称鍵生成器763を含み得る。少なくとも1つの例では、乱数発生器(RND)736が、非対称鍵生成器763に乱数を任意選択で入力し得る。非対称鍵生成器763は、図6のホスト602などのホストに関連付けられた公開鍵(「KLk公開」)769(外部公開鍵と呼ばれる)及び秘密鍵(「KLK秘密」)771(外部秘密鍵と呼ばれる)を生成し得る。外部公開鍵769は、暗号化装置773への(「データ」としての)入力であり得る。暗号化装置773は、外部秘密識別767及び外部公開鍵769の入力を用いて、結果K’775を生成し得る。外部秘密鍵771及び結果K’775は、追加の暗号化装置777に入力することができ、その結果、出力K’’779が得られる。出力K’’779は、レイヤ2(図6の655)に伝送される外部証明書(「IDL1証明書」)781である。外部証明書781は、デバイスから送られたデータの出所を検証及び/または認証する機能を提供し得る。例として、ホストから送られたデータは、図9に関連してさらに説明するように、証明書を検証することにより、ホストの識別情報に関連付けられ得る。さらに、外部公開鍵(「KL1公開鍵」)783がレイヤ2に伝送され得る。したがって、ホストの公開識別765、証明書781、及び外部公開鍵783が、メモリデバイスのレイヤ2に伝送され得る。
図8は、本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。図8は、デバイス識別(「IDL2公開」)866、デバイス証明書(「IDL2証明書」)882、及びデバイス公開鍵(「KL2公開鍵」)884を生成するメモリデバイス(例えば、図6のメモリデバイス606)のレイヤ2 855を示す。
図7で説明したように、ホストのレイヤ1からメモリデバイスのレイヤ2 855に伝送された外部公開鍵(「KL1公開鍵」)883は、メモリデバイスの非対称ID生成器862によって使用されて、メモリデバイスの公開識別(「IDlk公開」)866及び秘密識別868を生成する。略された「IDlk公開」中、「lk」はレイヤk(この例ではレイヤ2)を示し、「公開」は、識別がオープンに共有されていることを示す。公開識別866は、レイヤ2 855の右側及び外側に延びる矢印によって共有されるように図示されている。生成された秘密識別868は、暗号化装置874に入力される鍵として使用される。
図8に示すように、外部証明書881及び公開識別865は、外部公開鍵883と共に、証明書検証器899によって使用される。証明書検証器899は、ホストから受け取られた外部証明書881を検証し、外部証明書881が検証されたことまたは検証されなかったことに応答して、ホストから受け取られたデータを受け入れるかまたは破棄するかを判定することができる。外部証明書881の検証の追加的な詳細については、本明細書で(例えば、図9に関連して)詳述する。
メモリデバイスのレイヤ2 855は、非対称鍵生成器864を含み得る。少なくとも1つの例では、乱数発生器(RND)838が、非対称鍵生成器864に乱数を任意選択で入力し得る。非対称鍵生成器864は、図6のメモリデバイス606などのメモリデバイスに関連付けられた公開鍵(「KLk公開」)870(デバイス公開鍵と呼ばれる)及び秘密鍵(「KLK秘密」)872(デバイス秘密鍵と呼ばれる)を生成し得る。デバイス公開鍵870は、暗号化装置874への(「データ」としての)入力であり得る。暗号化装置874は、デバイス秘密識別868及びデバイス公開鍵870の入力を用いて、結果K’876を生成し得る。デバイス秘密鍵872及び結果K’876は、追加の暗号化装置878に入力することができ、その結果、出力K’’880が得られる。出力K’’880は、レイヤ1(図6の653)に返送されるデバイス証明書(「IDL2証明書」)882である。デバイス証明書882は、デバイスから送られたデータの出所を検証及び/または認証する機能を提供し得る。例として、メモリデバイスから送られたデータは、図9に関連してさらに説明するように、証明書を検証することにより、メモリデバイスの識別情報に関連付けられ得る。さらに、デバイス公開鍵(「KL2公開鍵」)884がレイヤ1に伝送され得る。したがって、メモリデバイスの公開識別866、証明書882、及びデバイス公開鍵884が、ホストのレイヤ1に伝送され得る。
例では、ホストがメモリデバイスから公開鍵を受け取ることに応答して、ホストは、デバイス公開鍵を使用して、メモリデバイスに送るべきデータを暗号化し得る。逆に、メモリデバイスは、外部公開鍵を使用して、ホストに送るべきデータを暗号化し得る。メモリデバイスが、デバイス公開鍵を用いて暗号化されたデータを受け取ったことに応答して、メモリデバイスは、それ自体のデバイス秘密鍵を用いてデータを復号化してもよい。同様に、ホストが、外部公開鍵を用いて暗号化されたデータを受け取ることに応答して、ホストは、それ自体の外部秘密鍵を用いてデータを復号化してもよい。デバイス秘密鍵はメモリデバイス以外の別のデバイスとは共有されず、外部秘密鍵はホスト以外の別のデバイスとは共有されないので、メモリデバイス及びホストに送られるデータはセキュアに保たれる。
図9は、本開示の実施形態による、証明書を検証するための例示的なプロセスのブロック図である。図9の図示された例では、公開鍵983、証明書981、及び公開識別965がホストから(例えば、図6のホスト602のレイヤ1 653から)提供される。証明書981及び外部公開鍵983のデータは、復号器985への入力として使用され得る。復号器985は、データを復号化するために使用される任意のプロセッサ、コンピューティングデバイスなどであり得る。証明書981及び外部公開鍵983の復号化の結果は、公開された識別と共に、二次復号器987への入力として使用することができ、出力をもたらす。外部公開鍵983と復号器987からの出力とは、989に示されているように、証明書が検証されているかどうかを示すことができ、出力として「はい」または「いいえ」991をもたらす。証明書が検証されたことに応答して、検証されたデバイスから受け取られたデータを受け入れ、復号化し、処理することができる。証明書が検証されなかったことに応答して、検証されたデバイスから受け取られたデータを破棄し、削除し、及び/または無視することができる。このようにして、不正なデータを送る不正なデバイスを検出して回避することができる。例として、処理対象のデータを送信しているハッカーを特定し、ハッキングデータを処理しないようにすることができる。
図10は、本開示の実施形態による、署名を検証するための例示的なプロセスのブロック図である。デバイスが後の否認を回避するために検証可能なデータを送信している場合では、署名を生成してデータと共に送信することができる。例として、第1のデバイスが第2のデバイスにリクエストを行い、第2のデバイスがそのリクエストを実行すると、第1のデバイスは、第1のデバイスがそのようなリクエストを行っていないことを示すことがある。署名を使用するなどの否認防止アプローチにより、第1のデバイスによる否認を回避し、第2のデバイスが、要求されたタスクを、その後の支障もなく実行できることを保証することができる。
メモリデバイス1006(図2のメモリデバイス206など)が、データ1090をホスト(図2のホスト202など)に送り得る。メモリデバイス1006は、1094で、デバイス秘密鍵1071を用いて、署名1096を生成し得る。署名1096は、ホスト1002に伝送され得る。ホスト1002は、1098で、以前に受け取ったデータ1092及び外部公開鍵1069を使用して署名を検証し得る。このようにして、署名は秘密鍵を使用して生成され、公開鍵を使用して検証される。このようにして、一意の署名を生成するために使用される秘密鍵は、署名を送るデバイスに対しては非公開のままにすることができ、一方で受信デバイスは、検証のために送信デバイスの公開鍵を使用して署名を復号化することができる。このことは、送信デバイスが受信デバイスの公開鍵を用いて暗号化し、受信デバイスが受信側の秘密鍵を用いて復号化するデータの暗号化/復号化とは対照的である。少なくとも1つの例では、デバイスは、内部暗号プロセス(例えば、楕円曲線デジタル署名(ECDSA))または同様のプロセスを使用してデジタル署名を検証することができる。
図11は、本開示の実施形態による、例示的なメモリデバイス1106のブロック図である。メモリデバイス1106は、例えば、図2に関連して既に説明したメモリデバイス206であり得る。
図11に示すように、メモリデバイス1106は、いくつかのメモリアレイ1101-1~1101-7を含み得る。メモリアレイ1101-1~1101-7は、図1に関連して既に説明したメモリアレイ101に類似し得る。さらに、図10に示す例では、メモリアレイ1101-3がセキュアアレイであり、メモリアレイ1101-6のサブセット1111がセキュアアレイを含み、メモリアレイ1101-7のサブセット1113及び1115がセキュアアレイを含む。サブセット1111、1113、及び1115はそれぞれ、例えば、4キロバイトのデータを含んでもよい。ただし、本開示の実施形態は、メモリアレイまたはセキュアアレイの特定の数または配置に限定されるものではない。
図11に示すように、メモリデバイス1106は、修復(例えば、回復)ブロック1117を含み得る。修復ブロック1117は、メモリデバイス1106の動作中に発生する可能性のあるエラー(例えば、不一致)の場合に、及び/または本明細書で以前に説明したように、アレイ1101-1~1101-7に格納されたデータが正当ではないと判定された場合に、データのソースとして使用することができる。修復ブロック1117は、ホストによってアドレス指定可能なメモリデバイス1106の領域の外側にあってもよい。
図11に示すように、メモリデバイス1106は、シリアルペリフェラルインターフェース(SPI)1104及びコントローラ1108を含み得る。メモリデバイス1106は、本明細書で(例えば、図2に関連して)既に説明したように、SPI1104及びコントローラ1108を使用して、ホスト及びメモリアレイ1101-1~1101-7と通信し得る。
図11に示すように、メモリデバイス1106は、メモリデバイス1106のセキュリティを管理するためのセキュアレジスタ1119を含んでもよい。例えば、セキュアレジスタ1119は、アプリケーションコントローラを構成し、アプリケーションコントローラと外部的に通信し得る。さらに、セキュアレジスタ1119は、認証コマンドによって変更可能であってもよい。
図11に示すように、メモリデバイス1106は、鍵1121を含み得る。例えば、メモリデバイス1106は、ルート鍵、DICE-RIOT鍵、及び/または他の外部セッション鍵などの鍵を格納するために、8つの異なるスロットを含み得る。
図11に示すように、メモリデバイス1106は、電子的に消去可能なプログラマブルリードオンリーメモリ(EEPROM)1123を含み得る。EEPROM1123は、ホストが利用できるセキュアな不揮発性領域を提供することができ、その中でデータの個々のバイトを消去し、プログラムすることが可能である。
図11に示すように、メモリデバイス1006は、カウンタ(例えば、単調カウンタ)1124を含み得る。カウンタ1124は、ホストから受け取られる、及び/またはホストに送られる(例えば、コマンドセットまたはシーケンスに署名する)コマンドのアンチリプレイ機構(例えば、フレッシュネス生成器)として使用することができる。例えば、メモリデバイス1106は、6つの異なる単調カウンタを含むことができ、そのうちの2つは、認証されたコマンドのためにメモリデバイス1106によって使用されてもよく、そのうちの4つは、ホストによって使用されてもよい。
図11に示すように、メモリデバイス1106は、SHA-256暗号ハッシュ関数1126、及び/またはHMAC-SHA256暗号ハッシュ関数1128を含み得る。SHA-256及び/またはHMAC-SHA256暗号ハッシュ関数1126及び1128は、メモリデバイス1106によって使用されて、例えば、本明細書で既に説明したように、メモリアレイ1101-1~1101-7に格納されたデータの正当性を確認するために使用される実行時暗号ハッシュ及び/またはゴールデンハッシュなどの暗号ハッシュを生成することができる。さらに、メモリデバイス1106は、DICE-RIOT1130のL0及びL1をサポートすることができる。
本明細書には、特定の実施形態を示して説明してきたが、当業者であれば、同じ結果を得るように意図された構成が、示した特定の実施形態の代わりになり得ることを理解するであろう。本開示は、本開示のいくつかの実施形態の適合形態または変形形態を含むことを意図する。上記の説明は、例示目的であり、限定目的ではないことを理解されたい。上記の実施形態の組み合わせ、及び本明細書に具体的に記載されていない他の実施形態は、上記の説明を検討することで、当業者には明らかとなるであろう。本開示のいくつかの実施形態の範囲は、上記の構造及び方法が使用される他の用途を含む。したがって、本開示のいくつかの実施形態の範囲は、添付の特許請求の範囲と、添付の特許請求の範囲に権利を与えられた内容と同等物の全範囲とを参照して、特定されるべきである。
前述の発明を実施するための形態では、本開示を簡素化する目的で、いくつかの特徴が単一の実施形態にまとめられている。本開示の方法は、本開示の開示された実施形態が、各請求項に明確に列挙された特徴より多くの特徴を使用する必要があるという意図を反映するものとして、解釈されるべきではない。むしろ、下記の特許請求の範囲が反映するように、発明の主題は、開示された単一の実施形態の全ての特徴よりも少ない特徴で存在する。したがって、以下の特許請求の範囲は、本明細書によって詳細な説明に組み込まれ、各請求項は別個の実施形態として自立する。

Claims (20)

  1. メモリと、
    回路であって、
    前記メモリを複数のセグメントに分割することであって、各セグメントがそれぞれ異なる暗号ハッシュに関連付けられている、前記分割することと、
    前記メモリへの電力供給時に、前記複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた前記暗号ハッシュを使用して確認することと、
    前記メモリへの前記電力供給後に、前記複数のセグメントのうちの第2の数のセグメントに格納されたデータ、前記複数のセグメントのうちの第2の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた前記暗号ハッシュを使用して確認することと
    を行うように構成されている、前記回路と
    を備える、装置。
  2. 前記回路が、前記第1の数の前記セグメントの1つ1つにそれぞれ格納された前記データの正当性を、
    前記第1の数の前記セグメントの1つ1つにそれぞれ格納された前記データに対して異なる実行時暗号ハッシュを生成することと、
    各セグメントにそれぞれ格納された前記データに対して生成した前記実行時暗号ハッシュを、その各セグメントに関連付けられた前記暗号ハッシュと比較することと
    によって確認するように構成されている、請求項1に記載の装置。
  3. 前記回路が、前記第2の数の前記セグメントの1つ1つにそれぞれ格納された前記データの正当性を、
    前記第2の数の前記セグメントの1つ1つにそれぞれ格納された前記データに対して異なる実行時暗号ハッシュを生成することと、
    各セグメントにそれぞれ格納された前記データに対して生成した前記実行時暗号ハッシュを、その各セグメントに関連付けられた前記暗号ハッシュと比較することと
    によって確認するように構成されている、請求項1に記載の装置。
  4. 前記回路が、
    前記メモリへの前記電力供給後に、前記第1の数の前記セグメントの1つ1つにそれぞれ格納された前記データを、その前記第1の数の前記セグメントの1つ1つにそれぞれ格納された前記データの正当性を確認すると、ホストに送ることと、
    前記第2の数の前記セグメントの1つ1つにそれぞれ格納された前記データを、その前記第2の数の前記セグメントの1つ1つにそれぞれ格納された前記データの正当性を確認すると、前記ホストに送ることと
    を行うように構成されている、請求項1に記載の装置。
  5. 前記メモリが、メモリセルのセキュアアレイを備える、請求項1~4のいずれか1項に記載の装置。
  6. 前記回路が、
    前記セキュアアレイのアドレスを設定するように構成されたレジスタと、
    前記セキュアアレイのサイズを設定するように構成されたレジスタと
    を含む、請求項5に記載の装置。
  7. 前記回路が、各セグメントにそれぞれ関連付けられた前記暗号ハッシュを格納するように構成されたレジスタを含み、
    前記レジスタが、前記メモリのユーザにとってアクセス不可能である、請求項1~4のいずれか1項に記載の装置。
  8. メモリを動作させる方法であって、
    前記メモリを複数のセグメントに分割することであって、各セグメントがそれぞれ異なる暗号ハッシュに関連付けられている、前記分割することと、
    前記メモリへの電力供給時に、前記複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータに対して異なる実行時暗号ハッシュを生成することと、
    前記メモリへの前記電力供給時に、前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データの正当性を、その各セグメントに格納された前記データに対して生成した前記実行時暗号ハッシュと、その各セグメントに関連付けられた前記暗号ハッシュとを比較することによって確認することと、
    前記メモリへの前記電力供給後に、前記複数のセグメントのうちの第2の数のセグメントの1つ1つにそれぞれ格納されたデータに対して異なる実行時暗号ハッシュを生成することと、
    前記メモリへの前記電力供給後に、前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データの正当性を、その各セグメントに格納された前記データに対して生成した前記実行時暗号ハッシュと、その各セグメントに関連付けられた前記暗号ハッシュとを比較することによって確認することと
    を含む、前記方法。
  9. 前記方法が、
    前記複数のセグメントのうちの前記第1の数のセグメントについての前記比較により、その各セグメントに格納された前記データに対して生成された前記実行時暗号ハッシュが、その各セグメントに関連付けられた前記暗号ハッシュと一致することが示されることに基づいて、前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データの正当性を確認することと、
    前記複数のセグメントのうちの前記第2の数のセグメントについての前記比較により、その各セグメントに格納された前記データに対して生成された前記実行時暗号ハッシュが、その各セグメントに関連付けられた前記暗号ハッシュと一致することが示されることに基づいて、前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データの正当性を確認することと
    を含む、請求項8に記載の方法。
  10. 前記方法が、
    前記複数のセグメントのうちの前記第1の数のセグメントについての前記比較により、その各セグメントに格納された前記データに対して生成された前記実行時暗号ハッシュが、その各セグメントに関連付けられた前記暗号ハッシュと一致しないことが示されることに基づいて、前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データを修復することと、
    前記複数のセグメントのうちの前記第2の数のセグメントについての前記比較により、その各セグメントに格納された前記データに対して生成された前記実行時暗号ハッシュが、その各セグメントに関連付けられた前記暗号ハッシュと一致しないことが示されることに基づいて、前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データを修復することと
    を含む、請求項8に記載の方法。
  11. 前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データを修復することが、前記メモリから前記データを回復させることを含み、
    前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データを修復することが、前記メモリから前記データを回復させることを含む、請求項10に記載の方法。
  12. メモリを動作させる方法であって、
    前記メモリを複数のセグメントに分割することであって、各セグメントがそれぞれ異なる暗号ハッシュに関連付けられている、前記分割することと、
    前記メモリへの電力供給時に、前記複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた前記暗号ハッシュを使用して確認することと、
    前記メモリへの前記電力供給後に、前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データを、その前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれに格納された前記データの正当性を確認すると、ホストに送ることと、
    前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データを前記ホストに送っている間に、前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた前記暗号ハッシュを使用して確認することと
    を含む、前記方法。
  13. 前記方法が、前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データを前記ホストに送った後に、前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データを、その前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データの正当性を確認すると、前記ホストに送ること
    を含む、請求項12に記載の方法。
  14. 前記方法が、前記ホストから受け取った認証済みコマンドを使用して、各セグメントにそれぞれ関連付けられた前記暗号ハッシュを生成すること
    を含む、請求項12~13のいずれか1項に記載の方法。
  15. メモリを有するメモリデバイスであって、
    前記メモリが複数のセグメントに分割され、各セグメントがそれぞれ異なる暗号ハッシュに関連付けられており、
    前記メモリデバイスが、
    前記メモリへの電力供給時に、前記複数のセグメントのうちの第1の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた前記暗号ハッシュを使用して確認することと、
    前記メモリへの電力供給後に、前記複数のセグメントのうちの第2の数のセグメントの1つ1つにそれぞれ格納されたデータの正当性を、その各セグメントに関連付けられた前記暗号ハッシュを使用して確認することと
    を行うように構成されている、
    前記メモリデバイスと、
    ホストであって、前記ホストが、
    前記複数のセグメントのうちの前記第2の数のセグメントに格納された前記データの正当性を前記メモリデバイスが確認している間に、前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データを、その前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データの正当性を前記メモリデバイスが確認すると、前記メモリデバイスから受け取ることと、
    前記複数のセグメントのうちの前記第1の数のセグメントの1つ1つにそれぞれ格納された前記データを前記メモリデバイスから受け取った後に、前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データを、その前記複数のセグメントのうちの前記第2の数のセグメントの1つ1つにそれぞれ格納された前記データの正当性を前記メモリデバイスが確認すると、前記メモリデバイスから受け取ることと
    を行うように構成されている、前記ホストと
    を備える、システム。
  16. 前記メモリデバイスが、
    前記複数のセグメントの1つ1つそれぞれのアドレスを設定するように構成されたレジスタと、
    前記複数のセグメントの1つ1つそれぞれのサイズを設定するように構成されたレジスタと
    を含む、請求項15に記載のシステム。
  17. 前記メモリデバイスが、
    前記複数のセグメントの1つ1つにそれぞれ格納された前記データの前記正当性確認の状況の表示を提供するように構成されたレジスタと、
    前記複数のセグメントの1つ1つにそれぞれ格納された前記データの前記正当性確認の結果の表示を提供するように構成されたレジスタと
    を含む、請求項15に記載のシステム。
  18. 前記メモリデバイスが、
    前記複数のセグメントの1つ1つにそれぞれ格納された前記データの修復が許可されているかどうかの表示を提供するように構成されたレジスタと、
    前記複数のセグメントの1つ1つにそれぞれ格納された前記データを、修復時に、回復させることができる前記メモリのアドレスを設定するように構成されたレジスタと、
    前記複数のセグメントの1つ1つにそれぞれ格納された前記データの前記修復の結果の表示を提供するように構成されたレジスタと
    を含む、請求項15に記載のシステム。
  19. 前記複数のセグメントのうちの前記第1の数のセグメントが、前記ホストによって設定された特定の数量のセグメントを含み、
    前記メモリデバイスが、前記特定の数量のセグメントを格納するように構成されたレジスタを含む、請求項15~18のいずれか1項に記載のシステム。
  20. 前記複数のセグメントのうちの前記第1の数のセグメントが、特定の時間内に前記メモリデバイスによって正当性確認することが可能な数量のセグメントを含み、
    前記メモリデバイスが、前記特定の時間を格納するように構成されたレジスタを含む、請求項15~18のいずれか1項に記載のシステム。
JP2021557309A 2019-03-25 2020-03-16 暗号ハッシュを用いたメモリに格納されたデータの正当性確認 Pending JP2022527163A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/363,100 2019-03-25
US16/363,100 US11271720B2 (en) 2019-03-25 2019-03-25 Validating data stored in memory using cryptographic hashes
PCT/US2020/022931 WO2020197821A1 (en) 2019-03-25 2020-03-16 Validating data stored in memory using cryptographic hashes

Publications (1)

Publication Number Publication Date
JP2022527163A true JP2022527163A (ja) 2022-05-31

Family

ID=72605159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021557309A Pending JP2022527163A (ja) 2019-03-25 2020-03-16 暗号ハッシュを用いたメモリに格納されたデータの正当性確認

Country Status (6)

Country Link
US (2) US11271720B2 (ja)
EP (1) EP3948630A4 (ja)
JP (1) JP2022527163A (ja)
KR (1) KR20210130240A (ja)
CN (1) CN113767387A (ja)
WO (1) WO2020197821A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12001557B2 (en) * 2019-12-31 2024-06-04 Renesas Electronics America Inc. Method and system for continuously verifying integrity of secure instructions during runtime
US11900131B2 (en) * 2020-10-15 2024-02-13 EMC IP Holding Company LLC Dynamic remediation actions in response to configuration checks in an information processing system
KR102386614B1 (ko) * 2020-12-24 2022-05-09 유비벨록스(주) IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법
US11455388B1 (en) * 2021-04-26 2022-09-27 Weeve.Network System and method for end-to-end data trust management with real-time attestation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004325761A (ja) * 2003-04-24 2004-11-18 Sony Corp 情報処理装置、情報処理方法
US20100174921A1 (en) * 2009-01-07 2010-07-08 Microsoft Corporation Device side host integrity validation
JP2011501321A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド 無線デバイスのためのプログレッシブブート
US20190050602A1 (en) * 2017-08-14 2019-02-14 Western Digital Technologies, Inc. Non-volatile Memory Device With Secure Read

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788841B2 (en) 2008-10-23 2014-07-22 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8625353B2 (en) * 2011-06-16 2014-01-07 Spansion Llc Method and apparatus for staggered start-up of a predefined, random, or dynamic number of flash memory devices
US10482275B2 (en) * 2014-01-27 2019-11-19 Cryptography Research, Inc. Implementing access control by system-on-chip
US9317691B2 (en) 2014-05-08 2016-04-19 Dell Products L.P. Pre-boot software verification
JP6162652B2 (ja) * 2014-06-20 2017-07-12 株式会社東芝 メモリ管理装置、プログラム、及び方法
KR102498668B1 (ko) 2017-05-17 2023-02-09 삼성전자주식회사 플래시-인지 힙 메모리 관리 방법 및 호스트 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004325761A (ja) * 2003-04-24 2004-11-18 Sony Corp 情報処理装置、情報処理方法
JP2011501321A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド 無線デバイスのためのプログレッシブブート
US20100174921A1 (en) * 2009-01-07 2010-07-08 Microsoft Corporation Device side host integrity validation
US20190050602A1 (en) * 2017-08-14 2019-02-14 Western Digital Technologies, Inc. Non-volatile Memory Device With Secure Read

Also Published As

Publication number Publication date
EP3948630A1 (en) 2022-02-09
CN113767387A (zh) 2021-12-07
US11683155B2 (en) 2023-06-20
US20220158823A1 (en) 2022-05-19
US20200313861A1 (en) 2020-10-01
WO2020197821A1 (en) 2020-10-01
EP3948630A4 (en) 2022-12-21
KR20210130240A (ko) 2021-10-29
US11271720B2 (en) 2022-03-08

Similar Documents

Publication Publication Date Title
JP7101318B2 (ja) メモリ内のデータアテステーション
JP2022527163A (ja) 暗号ハッシュを用いたメモリに格納されたデータの正当性確認
CN113632084B (zh) 运行时代码执行验证方法、设备及***
CN113632066A (zh) 所执行代码中的错误识别
US11669643B2 (en) Block chain based validation of memory commands
CN113796045A (zh) 确认车辆的电子控制单元
US11228443B2 (en) Using memory as a block in a block chain
JP2022527904A (ja) 無線更新の有効性確認
US20220138114A1 (en) Using memory as a block in a block chain

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211122

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230523