IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロン テクノロジー, インク.の特許一覧

特許7150195ブロックチェーンを基にしたメモリコマンドの正当性確認
<>
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図1
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図2
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図3
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図4
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図5
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図6
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図7
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図8
  • 特許-ブロックチェーンを基にしたメモリコマンドの正当性確認 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-29
(45)【発行日】2022-10-07
(54)【発明の名称】ブロックチェーンを基にしたメモリコマンドの正当性確認
(51)【国際特許分類】
   H04L 9/32 20060101AFI20220930BHJP
   G06F 21/64 20130101ALI20220930BHJP
   G06F 21/55 20130101ALI20220930BHJP
【FI】
H04L9/32 200B
H04L9/32 200E
G06F21/64
G06F21/55
【請求項の数】 15
(21)【出願番号】P 2021557320
(86)(22)【出願日】2020-03-23
(65)【公表番号】
(43)【公表日】2022-05-27
(86)【国際出願番号】 US2020024155
(87)【国際公開番号】W WO2020198110
(87)【国際公開日】2020-10-01
【審査請求日】2021-10-28
(31)【優先権主張番号】16/362,757
(32)【優先日】2019-03-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】モンデッロ アントニノ
(72)【発明者】
【氏名】トロイア アルベルト
【審査官】中里 裕正
(56)【参考文献】
【文献】特表2001-507479(JP,A)
【文献】特表2004-532468(JP,A)
【文献】特開2007-13366(JP,A)
【文献】特表2012-510189(JP,A)
【文献】特開2017-59873(JP,A)
【文献】特表2017-517770(JP,A)
【文献】特表2019-500799(JP,A)
【文献】米国特許出願公開第2014/0223197(US,A1)
【文献】米国特許出願公開第2014/0223198(US,A1)
【文献】米国特許出願公開第2017/0163733(US,A1)
【文献】米国特許出願公開第2019/0018603(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/64
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
メモリと、
回路であって、
前記メモリで実行しようとしているコマンドの正当性を確認するためのブロックチェーンのうちのブロックに含まれるコマンドを受け取ることであって、前記コマンドが、前記ブロックチェーン内の前ブロックに含まれる前コマンドに基づいたアンチリプレイ部分を含む、前記受け取ることと、
前記コマンドの前記アンチリプレイ部分を使用して前記コマンドの正当性を確認することと、
前記コマンドの正当性を確認した上で、前記メモリで前記コマンドを実行することと
を行うように構成されている前記回路と
を備える、装置。
【請求項2】
前記コマンドが、前記ホストに関連付けられた署名を含み、
前記回路が、前記コマンドの前記署名を使用して、前記コマンドの正当性を確認するように構成されている、請求項1に記載の装置。
【請求項3】
前記回路が、前記前コマンドのアンチリプレイ部分を格納するように構成されたレジスタを含み、
前記回路が、前記レジスタに格納されている前記前コマンドの前記アンチリプレイ部分を使用して、前記コマンドの正当性を確認するように構成されている、請求項1に記載の装置。
【請求項4】
前記回路が、
前記レジスタに格納されている前記前コマンドの前記アンチリプレイ部分の暗号ハッシュまたはデジタル署名を生成することと、
前記生成した暗号ハッシュまたはデジタル署名を前記コマンドの前記アンチリプレイ部分と比較することと
によって、前記コマンドの正当性を確認するように構成されている、請求項3に記載の装置。
【請求項5】
前記コマンド及び前記前コマンドが、前記メモリで実行しようとしているコマンドシーケンスに含まれ、
前記コマンドが含まれている前記ブロックチェーンのうちの前記ブロックが、前記コマンドシーケンス内の前記コマンドの位置の表示を含み、
前記回路が、前記コマンドの前記位置の前記表示を使用して、前記コマンドの正当性を確認するように構成されている、請求項1~のいずれか1項に記載の装置。
【請求項6】
メモリを動作させる方法であって、
ホストからコマンドを受け取ることであって、
前記コマンドが、前記メモリで実行しようとしているコマンドの正当性を確認するためのブロックチェーンのうちのブロックに含まれ、
前記コマンドが、前記ブロックチェーン内の前ブロックに含まれる前コマンドに基づいたアンチリプレイ部分を含む、前記受け取ることと、
前記コマンドの前記アンチリプレイ部分を使用して前記コマンドの正当性を確認することと、
前記コマンドの正当性を確認した上で、前記メモリで前記コマンドを実行することと
を含む、前記方法。
【請求項7】
前記コマンドの前記アンチリプレイ部分を使用して前記コマンドの正当性を確認することが、
前記コマンドの前記アンチリプレイ部分を、前記コマンドの前記アンチリプレイ部分の期待値と比較することと、
前記コマンドの前記アンチリプレイ部分が前記期待値と一致することを前記比較が示し次第、前記コマンドを正当と認めることとを含み、
前記コマンドの前記アンチリプレイ部分の前記期待値が、前記前コマンドのアンチリプレイ部分の暗号ハッシュ、または前記前コマンドのアンチリプレイ部分のための署名のうちの一方である、請求項に記載の方法。
【請求項8】
前記ホストから追加コマンドを受け取ることであって、
前記追加コマンドが、前記ブロックチェーン内の後続ブロックに含まれ、
前記追加コマンドが、前記ブロックチェーン内の前記ブロックに含まれる前記コマンドに基づいたアンチリプレイ部分を含む、前記受け取ることと、
前記追加コマンドの前記アンチリプレイ部分を使用して前記追加コマンドの正当性を確認することと、
前記追加コマンドの正当性を確認した上で、前記メモリで前記追加コマンドを実行することと
を含む、請求項に記載の方法。
【請求項9】
メモリを動作させる方法であって、
前記メモリで実行しようとしているコマンドのアンチリプレイ部分を生成することであって、
前記コマンドが、前記メモリで実行しようとしているコマンドの正当性を確認するためのブロックチェーンのうちのブロックに含まれ、
前記コマンドのための前記アンチリプレイ部分が、前記ブロックチェーン内の前ブロックに含まれている前コマンドから生成される、前記生成することと、
前記アンチリプレイ部分を有する前記コマンドを前記メモリに送ることと
を含む、前記方法。
【請求項10】
前記コマンドのための前記アンチリプレイ部分が、前記前コマンドのアンチリプレイ部分の暗号ハッシュである、請求項に記載の方法。
【請求項11】
前記コマンドのための前記アンチリプレイ部分が、前記前コマンドのアンチリプレイ部分のための署名である、請求項に記載の方法。
【請求項12】
ホストと、
メモリを有するメモリデバイスと
を備えており、
前記ホストが、
前記メモリで実行しようとしているコマンドのアンチリプレイ部分を生成することであって、
前記コマンドが、前記メモリで実行しようとしているコマンドの正当性を確認するためのブロックチェーンのうちのブロックに含まれ、
前記コマンドのための前記アンチリプレイ部分が、前記ブロックチェーン内の前ブロックに含まれている前コマンドから生成される、前記生成することと、
前記アンチリプレイ部分を有する前記コマンドを前記メモリデバイスに送ることと
を行うように構成されており、
前記メモリデバイスが、
前記アンチリプレイ部分を使用して前記コマンドの正当性を確認することと、
前記コマンドの正当性を確認した上で、前記メモリで前記コマンドを実行することと
を行うように構成されている、システム。
【請求項13】
前記メモリデバイスが、前記メモリで前記コマンドを実行すると、前記ホストにコマンド応答を送るように構成され、前記コマンド応答が、
前記コマンドの前記実行の結果と、
前記アンチリプレイ部分と
を含み、
前記ホストが、前記アンチリプレイ部分を使用して、前記コマンドの前記実行の前記結果の正当性を確認するように構成されている、請求項12に記載のシステム。
【請求項14】
前記ホストが、前記メモリデバイスの電力供給に応答して、前記ホストによって生成された乱数値から、前記ブロックチェーン内の初期ブロックに含まれる初期コマンドのためのアンチリプレイ部分を生成するように構成されている、請求項12~13のいずれか1項に記載のシステム。
【請求項15】
前記アンチリプレイ部分を使用して前記コマンドの正当性を確認することが、前記コマンドが以前に前記メモリで実行されていないことを確実にすることを含む、請求項12~13のいずれか1項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、半導体メモリ及び方法に関し、より詳細には、ブロックチェーンを基にしたメモリコマンドの正当性確認に関する。
【背景技術】
【0002】
メモリデバイスは、通常、コンピュータまたは他の電子デバイスにおいて内部の半導体、集積回路及び/または外部の着脱可能なデバイスとして提供される。メモリには、揮発性メモリ及び不揮発性メモリを含む様々な種類がある。揮発性メモリは、データを保持するために電力を要求することが可能であり、揮発性メモリには、特に、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び同期ダイナミックランダムアクセスメモリ(SDRAM)が含まれ得る。不揮発性メモリは、電力が供給されていないときにも格納データを保持することで永続的データを提供することが可能であり、不揮発性メモリには、特に、NANDフラッシュメモリ、NORフラッシュメモリ、読み出し専用メモリ(ROM)、並びに、相変化ランダムアクセスメモリ(PCRAM)、抵抗変化型ランダムアクセスメモリ(RRAM)、及び磁気ランダムアクセスメモリ(MRAM)などの抵抗可変メモリが含まれ得る。
【0003】
メモリデバイスを組み合わせて、ソリッドステートドライブ(SSD)、エンベデッドマルチメディアカード(e.MMC)、及び/またはユニバーサルフラッシュストレージ(UFS)デバイスを形成することができる。SSD、e.MMC、及び/またはUFSデバイスには、各種の不揮発性メモリ及び揮発性メモリの中でも特に、不揮発性メモリ(例えば、NANDフラッシュメモリ及び/またはNORフラッシュメモリ)が含まれ得、及び/または揮発性メモリ(例えば、DRAM及び/またはSDRAM)が含まれ得る。不揮発性メモリは、特に、パーソナルコンピュータ、ポータブルメモリスティック、デジタルカメラ、携帯電話、MP3プレーヤなどのポータブル音楽プレーヤ、ムービプレーヤなど、幅広いエレクトロニクス用途に使用され得る。
【0004】
フラッシュメモリデバイスは、例えば浮遊ゲートなどの電荷蓄積構造にデータを格納するメモリセルを含み得る。フラッシュメモリデバイスは、一般的には、高記憶密度、高信頼性、及び低消費電力を可能にする1トランジスタメモリセルを使用する。抵抗可変メモリデバイスは、記憶要素(例えば、可変抵抗を有する抵抗変化型メモリ要素)の抵抗状態に基づいてデータを記憶することができる抵抗変化型メモリセルを含み得る。
【0005】
メモリセルは、アレイ状に配置され得、アレイアーキテクチャにおけるメモリセルを、目標の(例えば、所望の)状態にプログラムすることができる。例えば、電荷がフラッシュメモリセルの電荷蓄積構造(例えば、浮遊ゲート)上に置かれるか、またはそこから電荷が除去されて、セルが特定のデータ状態にプログラムされ得る。セルの電荷蓄積構造に蓄積された電荷により、セルの閾値電圧(Vt)が示され得る。フラッシュメモリセルの状態は、セルの電荷蓄積構造に蓄積された電荷(例えば、Vt)をセンスすることによって判別され得る。
【0006】
多くの脅威が、メモリデバイスの動作及び/またはメモリデバイスのメモリセルに格納されているデータに影響を与える可能性がある。そのような脅威には、例えば、特に中間者(MITM)攻撃を含む、ハッカーまたはその他の悪意のあるユーザからの脅威が含まれ得る。そのような脅威により、重大な金銭的損失が生じるおそれがあり、及び/または安全性及び/またはセキュリティに重大な問題が生じるおそれがある。
【図面の簡単な説明】
【0007】
図1】本開示の実施形態による、いくつかの物理ブロックを有するメモリアレイの一部分の図を示す。
図2】本開示の実施形態による、ホストと、メモリデバイスの形態の装置とを含むコンピューティングシステムのブロック図である。
図3】本開示の実施形態による、ブロックチェーンを基にした正当性確認を利用して正当性を確認することができるコマンドの例を示す。
図4】本開示の実施形態による、ホスト及びメモリデバイスを含む例示的なシステムのブロック図である。
図5】本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。
図6】本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。
図7】本開示の実施形態による、証明書を検証するための例示的なプロセスのブロック図である。
図8】本開示の実施形態による、署名を検証するための例示的なプロセスのブロック図である。
図9】本開示の実施形態による、例示的なメモリデバイスのブロック図である。
【発明を実施するための形態】
【0008】
本開示は、ブロックチェーンを基にしたメモリコマンドの正当性確認のための装置、方法、及びシステムを含む。実施形態は、メモリと、回路であって、メモリで実行しようとしているコマンドの正当性を確認するためのブロックチェーンのうちのブロックに含まれるコマンドを受け取ることであって、コマンドが、ブロックチェーン内の前ブロックに含まれる前コマンドに基づいたアンチリプレイ部分を含む、受け取ることと、コマンドのアンチリプレイ部分を使用してコマンドの正当性を確認することと、コマンドの正当性を確認した上で、メモリでコマンドを実行することとを行うように構成されている回路とを備える。
【0009】
多くの脅威が、メモリ(例えば、メモリデバイス)の動作及び/またはそこに格納されているデータ(例えば、メモリデバイスのメモリセルに格納されているデータ)に影響を与える可能性がある。例えば、ハッカーまたはその他の悪意のあるユーザが、悪意のある目的で、例えば中間者(MITM)攻撃などの活動(例えば、攻撃)を行って、メモリの動作、及び/またはそこに格納されているデータを不正に変更しようと企てる場合がある。MITM攻撃の一例は、リプレイアタックである。リプレイアタックでは、正当なコマンド(例えば、メモリデバイスに対して正当に発行されたコマンド)が、メモリデバイスによって複数回(例えば、多数回)、不正に繰り返させられ(例えば、再発行させられ)、及び/または不正に再実行させられる(例えば、再利用させられる)。そのようなハッキング活動により、重大な金銭的損失が生じるおそれがあり、及び/または安全性及び/またはセキュリティに重大な問題が生じるおそれがある。
【0010】
したがって、セキュアなメモリを確保するには、MITMリプレイアタックの一環として、コマンドが不正に繰り返されたり、及び/または不正に再実行されたりするのを防ぐために、メモリがアンチリプレイ(例えば、フレッシュネス)機構を利用して、メモリによって受け取られたコマンドが以前に(例えば、すでに)実行されていないことを確認することが重要である。これまでのアンチリプレイ機構としては、例えば、新しいコマンドを発行するたびに、そのコマンドの正当性を確認できるように変化する1つの情報を提供することができる、タイムスタンプ、乱数発生器、及び/またはカウンタ(例えば、単調カウンタ)があり得る。しかし、そのような従来のアンチリプレイ機構は、情報(例えば、データ)がメモリ(例えば、メモリデバイスのメモリセル)に格納されることを必要とする場合があり、その結果、データ格納のためにメモリで利用可能なスペースの合計が減少する可能性がある。さらに、そのような従来のアンチリプレイ機構は、アンチリプレイ機能に特化した追加の構成要素及び/または回路を必要とする場合があり、その結果、メモリの回路の大きさ及び/または複雑度を増大させる可能性がある。
【0011】
それに対して、本開示の実施形態は、ブロックチェーンを基にしたメモリコマンドの正当性確認を利用して、MITMリプレイアタックなどの攻撃を効果的に防ぐことができるアンチリプレイ(例えば、フレッシュネス)機構を提供し、それによってセキュアなメモリを確保することができる。そのようなアンチリプレイ機構は、情報がメモリに格納されることを必要としない場合があるため、従来のアンチリプレイ機構を利用するメモリと比べて、データ格納のためにメモリで利用可能なスペースの合計を増やすことができる。さらに、そのようなアンチリプレイ機構は、アンチリプレイ機能に特化した追加の回路を必要としない場合があるため、従来のアンチリプレイ機構を利用するメモリと比べて、メモリの回路の大きさ及び/または複雑度を低減させることができる。例えば、そのようなアンチリプレイ機構は、アンチリプレイ機能に特化した追加の(例えば、新しい)構成要素または回路を加える必要なしに、メモリの既存の回路(例えば、メモリデバイスの既存のファームウェア)を利用して、アンチリプレイ機能を提供することができる。
【0012】
本明細書で使用するとき、「a」、「an」、または「いくつかの(a number of)」とは、あるものの1つ以上のことを指す場合があり、「複数の(a plurality of)」とは、2つ以上のそのようなものを指し得る。例えば、1つのメモリデバイス(a memory device)は、1つ以上のメモリデバイスを指す場合があり、複数のメモリデバイスは2つ以上のメモリデバイスを指し得る。さらに、特に図面の参照数字に対して本明細書で使用される識別子「R」、「B」、「S」、及び「N」は、そのように称されるいくつかの特定の特徴が、本開示のいくつかの実施形態に含まれ得ることを示す。番号は、呼称の間で同じであってもよく、または異なっていてもよい。
【0013】
本明細書の図は、最初の一桁または複数桁が図面の図番に対応し、残りの桁が図面内の要素または構成要素を識別する番号付け規則に従う。異なる図面間の類似した要素または構成要素は、類似した数字を使用することによって識別してもよい。例えば、101が図1の要素「01」を参照することができ、類似した要素を図2の201として参照することができる。
【0014】
図1は、本開示の実施形態による、いくつかの物理ブロックを有するメモリアレイ101の一部分の図を示す。メモリアレイ101は、例えば、NANDフラッシュメモリアレイなどのフラッシュメモリアレイであってもよい。追加の例として、メモリアレイ101は、特に、PCRAM、RRAM、MMRAM、またはスピントルクトランスファ(STT)アレイなどの抵抗可変メモリアレイであってもよい。ただし、本開示の実施形態は、特定のタイプのメモリアレイに限定されるものではない。さらに、メモリアレイ101(例えば、アレイ101のサブセット、または全アレイ201)を、本明細書で詳述するように、セキュアなメモリアレイとすることができる。さらに、図1に示していないが、メモリアレイ101は、その動作に関連する様々な周辺回路と共に、特定の半導体ダイ上に設置され得る。
【0015】
図1に示すように、メモリアレイ101は、メモリセルの物理ブロック107-0(ブロック0)、107-1(ブロック1)、・・・、107-B(ブロックB)を、いくつか有する。メモリセルは、シングルレベルセル、及び/または例えば、2レベルセル、3レベルセル(TLC)、または4レベルセル(QLC)などのマルチレベルセルであり得る。一例として、メモリアレイ101内の物理ブロックの数は、128ブロック、512ブロック、または1,024ブロックであり得るが、実施形態は、メモリアレイ101内の2の特定の累乗または任意の特定の数の物理ブロックに限定されない。
【0016】
いくつかのメモリセルの物理ブロック(例えば、ブロック107-0、107-1、・・・、107-B)が、メモリセルの平面内に含まれ得、いくつかのメモリセルの平面がダイ上に含まれ得る。例えば、図1に示す例では、各物理ブロック107-0、107-1、・・・、107-Bは、単一のダイの一部であってもよい。すなわち、図1に示すメモリアレイ101の部分は、メモリセルのダイであってもよい。
【0017】
図1に示すように、各物理ブロック107-0、107-1、・・・、107-Bは、アクセス線(例えば、ワード線)に結合されたいくつかのメモリセルの物理行(例えば、103-0、103-1、・・・、103-R)を含む。各物理ブロックの行(例えば、ワード線)の数は32であってもよいが、実施形態では、物理ブロック当たりの行103-0、103-1、・・・、103-Rの数は特定の数に限定されない。さらに、図1には示さないが、メモリセルは、センス線(例えば、データ線及び/またはディジット線)の列に結合され得る。
【0018】
当業者であれば理解されるように、各行103-0、103-1、・・・、103-Rは、いくつかのメモリセルのページ(例えば物理ページ)を含み得る。物理ページとは、プログラム及び/またはセンスの単位(例えば、機能グループとしてまとめてプログラム及び/またはセンスされるいくつかのメモリセル)のことを意味する。図1に示す実施形態では、各行103-0、103-1、・・・、103-Rは、メモリセルの物理ページを1つ含む。しかし、本開示の実施形態は、そのように限定されるものではない。例えば、実施形態において、各行が、メモリセルの物理ページ(例えば、偶数番データ線に結合されたメモリセルの1つ以上の偶数ページと、奇数番データ線に結合されたメモリセルの1つ以上の奇数ページ)を複数、含む場合がある。さらに、マルチレベルセルを含む実施形態の場合、メモリセルの物理ページが、複数のデータのページ(例えば、論理ページ)を記憶し得る(例えば、物理ページ内の各セルが、データの上位ページに対して1つ以上のビットを記憶し、データの下位ページに対して1つ以上のビットを記憶している状態で、メモリセルの物理ページが、データの上位ページ及びデータの下位ページを記憶し得る)。
【0019】
図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)データ、及びメタデータなどのオーバーヘッドデータを含むことができる。
【0020】
論理ブロックアドレス指定は、データの論理セクタを識別するためにホストによって使用され得るスキームである。例えば、各論理セクタは、一意の論理ブロックアドレス(LBA)に対応してもよい。さらに、LBAがまた、メモリ内のデータのその論理セクタの物理的位置を示し得る、物理ブロックアドレス(PBA)などの物理アドレスに対応する(例えば、動的にマッピングされる)場合もある。データの論理セクタは、幾バイトかのデータ(例えば、256バイト、512バイト、1,024バイト、または4,096バイトのデータ)であり得る。しかし、実施形態は、これらの例に限定されるものではない。
【0021】
物理ブロック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バイトよりも多いかまたは少ないデータを含み得る単一の論理セクタに対応するデータを記憶してもよい。
【0022】
図2は、本開示の実施形態による、ホスト202と、メモリデバイス206の形態の装置とを含むコンピューティングシステム200のブロック図である。本明細書で使用される「装置」は、例えば、回路もしくは複数の回路、ダイもしくは複数のダイ、モジュールもしくは複数のモジュール、デバイスもしくは複数のデバイス、またはシステムもしくは複数のシステムなどの様々な構造または構造の組み合わせのうちのいずれかを指し得るが、これらに限定されない。さらに、実施形態では、コンピューティングシステム200は、メモリデバイス206に類似しているいくつかのメモリデバイスを含み得る。
【0023】
図2に示す実施形態では、メモリデバイス206は、メモリアレイ201を有するメモリ216を含み得る。メモリアレイ201は、図1に関連して前に述べたメモリアレイ101に類似していてもよい。さらに、実施形態では、メモリアレイ201(例えば、アレイのサブセット201、または全アレイ201)を、セキュアアレイ(例えば、制御下に置かれることになるメモリ216の領域)とすることができる。例えば、メモリアレイ201に格納されているデータには、機密情報にまつわる用途のために実行されることになるホストファームウェア及び/またはコードなど、機密データ(例えば、非ユーザデータ)が含まれてもよい。図2では1つのメモリアレイ201が図示されているが、メモリ216は、メモリアレイ201に類似した任意の数のメモリアレイを含むことができる。
【0024】
図2に示すように、ホスト202は、インターフェース204を介してメモリデバイス206に結合され得る。ホスト202とメモリデバイス206とは、インターフェース204上で通信する(例えば、コマンド及び/またはデータを送る)ことができる。ホスト202及び/またはメモリデバイス206は、幾つかあるホストシステムの中で特に、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル記録再生装置、移動電話、PDA、メモリカードリーダ、インターフェースハブ、または例えば、自動車用(例えば、乗り物用及び/または交通インフラストラクチャ用)のモノのインターネット(IoT)対応機種、もしくは医療用(例えば、インプラント型及び/または健康管理用)のIoT対応機種など、IoT対応機種であるか、あるいはそれらの一部であってもよく、メモリアクセスデバイス(例えば、プロセッサ)を含むことができる。当業者であれば、「プロセッサ」は、並列処理システム、いくつかのコプロセッサなど、1つ以上のプロセッサを意図することができることを理解されよう。
【0025】
インターフェース204は、規格化された物理インターフェースの形態をとり得る。例えば、メモリデバイス206がコンピューティングシステム200の情報ストレージに使用される場合、インターフェース204は、幾つかある物理コネクタ及び/または物理インターフェースの中で特に、シリアルアドバンスドテクノロジアタッチメント(SATA)物理インターフェース、周辺機器相互接続エクスプレス(PCIe)物理インターフェース、ユニバーサルシリアルバス(USB)物理インターフェース、または小型コンピュータシステムインターフェース(SCSI)であり得る。また一方、一般に、インターフェース204は、インターフェース204に対して互換性のある受信器を有するメモリデバイス206とホスト(例えば、ホスト202)との間で、制御、アドレス、情報(例えば、データ)、及びその他の信号を渡すためのインターフェースを提供し得るものである。
【0026】
メモリデバイス206は、ホスト202及びメモリ216(例えば、メモリアレイ201)と通信するコントローラ208を含む。例えば、コントローラ208は、幾つかある動作の中で特に、データをセンス(例えば、読み出し)、プログラム(例えば、書き込み)、移動、及び/または消去する動作を含む動作をメモリアレイ201で実行するコマンドを送り得る。
【0027】
コントローラ208は、メモリ216と同じ物理デバイス(例えば、同じダイ)上に含まれてもよい。あるいは、コントローラ208は、メモリ216を含む物理デバイスに通信可能に結合される別個の物理デバイス上に含まれてもよい。実施形態では、コントローラ208の構成要素を、分散型コントローラとして複数の物理デバイス(例えば、メモリと同じダイ上の一部構成要素、及び異なるダイ、モジュール、またはボード上の一部構成要素)に散在させてもよい。
【0028】
ホスト202は、メモリデバイス206と通信するためのホストコントローラ(図2には示していない)を含み得る。ホストコントローラは、インターフェース204を介してメモリデバイス206にコマンドを送信し得る。ホストコントローラは、メモリデバイス206及び/またはメモリデバイス206上のコントローラ208と通信して、幾つかある動作の中で特に、データの読み出し、書き込み、及び/または消去を行い得る。さらに、実施形態では、ホスト202は、本明細書で上記のとおり、IoT通信能力を有するIoT対応機種であってもよい。
【0029】
メモリデバイス206のコントローラ208及び/またはホスト202のホストコントローラは、制御回路及び/またはロジック(例えば、ハードウェア及びファームウェア)を含み得る。実施形態では、メモリデバイス206のコントローラ208及び/またはホスト202のホストコントローラは、物理インターフェースを含むプリント回路基板に接続された特定用途向け集積回路(ASIC)であり得る。また、メモリデバイス206及び/またはホスト202は、揮発性メモリ及び/または不揮発性メモリのバッファと、いくつかのレジスタとを含み得る。
【0030】
例えば、図2に示されるように、メモリデバイスは、回路210を含み得る。図2に示される実施形態では、回路210は、コントローラ208に含まれる。しかし、本開示の実施形態は、そのように限定されるものではない。例えば、実施形態では、回路210が(例えばコントローラ208の代わりに)メモリ216に(例えば同じダイ上に)含まれてもよい。回路210は、例えば、ハードウェア、ファームウェア、及び/またはソフトウェアを含み得る。
【0031】
コンピューティングシステム200(例えば、ホスト202及びメモリデバイス206)は、ブロックチェーンを基にしたメモリコマンドの正当性確認を利用して、MITMリプレイアタックなどの攻撃を効果的に防ぐことができるアンチリプレイ(例えば、フレッシュネス)機構を提供し、それによってコンピューティングシステム200のセキュリティを確保することができる。例えば、ホスト202は、メモリ216(例えば、メモリアレイ201)で実行しようとしているコマンドの(例えば、コマンドに含めるべき)アンチリプレイ部分を生成してもよい。コマンドは、メモリ216で実行すべきコマンドの正当性を確認するためのブロックチェーンのうちのブロックに含まれ得、コマンドのためのアンチリプレイ部分は、ブロックチェーン内の前ブロックに含まれる前コマンドに基づき得る(例えば、前コマンドから生成され得る)。例えば、ホスト202は、ブロックチェーン内の次ブロックを生成し、このブロックにコマンドを含め、ブロックチェーン内の前ブロックに含まれる前に実行されたコマンドのアンチリプレイ部分に基づいて、コマンドのアンチリプレイ部分を生成してもよい。そのようなコマンドを示す例を、本明細書で(例えば、図3に関連して)さらに説明する。
【0032】
したがって、本明細書ではフレッシュネスフィールドと呼ばれることもある、ホスト202によって生成されるアンチリプレイ部分は、ホスト202による各新規コマンドの発行によって変化し得る。そのために、アンチリプレイ部分は、本明細書で詳述するように、コマンドが以前に実行されていないことを確認するのに用いることができる。
【0033】
本明細書で使用するとき、「ブロックチェーン内のブロック」は、データ(例えば、ペイロード)、ヘッダ、タイムスタンプ、履歴などを含み得る。ただし、本明細書で使用するとき、ブロックチェーン内のブロックは、先に図1に関連して説明したメモリのブロックの大きさと同じである必要はない。例えば、ブロックチェーン内のブロックは、アーキテクチャまたは呼称に関連する特定のメモリのブロックサイズ指定よりも小さくてもよく、同等であってもよく、及び/または大きくてもよい。
【0034】
コマンドに対して生成されたアンチリプレイ部分は、例えば、ブロックチェーン内の前ブロックに含まれる前コマンドのアンチリプレイ部分の暗号ハッシュ(例えば、アンチリプレイ部分へのリンク)であり得る。暗号ハッシュは、例えば、SHA-256暗号ハッシュを含み得る。
【0035】
追加の例として、コマンドに対して生成されたアンチリプレイ部分は、ブロックチェーン内の前ブロックに含まれる前コマンドのアンチリプレイ部分に対して生成された(例えば、計算された)署名であってもよい。署名は、例えば、非対称暗号を使用して(例えば、公開鍵及び/または私有鍵に基づいて)生成されたデジタル署名であり得、例えば、楕円曲線デジタル署名を含み得る。追加の例として、署名は、対称暗号を使用して(例えば、ホスト202とメモリデバイス206との間で共有される一意の秘密鍵に基づいて)生成してもよい。そのようなアプローチでは、メッセージ認証コード(MAC)関数を使用して署名を計算してもよい。
【0036】
いくつかの実施形態では、コマンドは、ホスト202に関連する署名(例えば、デジタル署名)を含むことができ、この署名は、対称または非対称暗号を使用してホスト202によって生成することができる。ホスト202に関連する署名は、コマンドがホスト202によって発行されたことを示す(例えば、ホストの同一性を裏付ける)ことができ、そのために、本明細書で詳述するように、コマンドの正当性確認時に使用することができる。
【0037】
ブロックチェーンの初期(例えば、先頭の)ブロックに含まれるコマンド(例えば、初期コマンド)に対して、ホスト202は(例えば、アンチリプレイ部分を生成することができるブロックチェーンの前ブロックがまだ存在しないことになるので)ホスト202によって生成された乱数値(例えば、乱数)からアンチリプレイ部分を生成してもよい。例えば、初期コマンド用に生成されるアンチリプレイ部分は、乱数値の暗号ハッシュであってもよい。乱数値は、例えば、物理複製困難関数(PUF)または他の乱数生成法を使用して、ホスト202によって生成され得る。初期コマンドのアンチリプレイ部分は、メモリデバイス206の電力供給(例えば、電源オン及び/または電源投入)に応答して生成されてもよい(例えば、フレッシュネスフィールドが初期化されてもよい)。
【0038】
いくつかの実施形態では、コマンド及び前コマンドは、ホスト202によって発行されてメモリ206で実行されるコマンドのシーケンス(例えば、シーケンスの一部)に含まれ得る(例えば、コマンドは、前コマンドの後のシーケンス内の次のコマンドである)。そのような実施形態では、コマンドが含まれているブロックチェーンのブロックは、コマンドシーケンスにおけるコマンドの位置(例えば、順序)の表示を含み得る。この位置表示は、シーケンスのコマンドが適切な順序で実行されていることを確認するのに使用することができ、そのために、本明細書で詳述するように、コマンドの正当性確認時に使用することができる。
【0039】
ホスト202は、インターフェース204を介して、アンチリプレイ部分を有するコマンドをメモリデバイス206に(例えば、回路210に)送り得る。コマンドを受け取ると、メモリデバイス206(例えば、回路210)は、受け取ったコマンドのアンチリプレイ部分を使用してコマンドの正当性を確認する(例えば、確認するかどうかを判定する)ことができる。本明細書で使用するとき、コマンドの正当性確認は、(例えば、コマンドがMITMリプレイアタックなどの攻撃の一環として不正に繰り返され、及び/または再利用されていないことを確実にするために)コマンドがメモリ216に対して以前に実行されていないことを確実にすることを含む、及び/または意味する場合がある。
【0040】
例えば、図2に示すように、回路210は、ブロックチェーン内の前ブロックに含まれる前コマンドのアンチリプレイ部分(例えば、フレッシュネスフィールド)を入れる(例えば、記憶する)ことができる揮発性レジスタ214を含み得る。このアンチリプレイ部分は、その前コマンドがホスト202によってメモリデバイス206に送られたときに、回路210によって以前に受け取られたものである。回路210は、レジスタ214に格納された前コマンドのアンチリプレイ部分を、ホスト202からの現在コマンド(例えば、現在受け取られたコマンド)のアンチリプレイ部分と組み合わせて使用して、現在コマンドの正当性を確認することができる。
【0041】
例えば、回路210は、現在コマンドのアンチリプレイ部分を、現在コマンドのアンチリプレイ部分の期待値と(例えば、アンチリプレイ部分がなることを期待される値と)比較してもよい。この期待値は、現在コマンドのアンチリプレイ部分がホスト202によって生成された方法に一致する方法で、レジスタ214に格納された前コマンドのアンチリプレイ部分を使用して、回路210によって生成(例えば、計算)することができる。例えば、ホスト202によって生成された現在コマンドのアンチリプレイ部分が、前コマンドのアンチリプレイ部分の暗号ハッシュである場合、回路210によって生成される期待値を、レジスタ214に格納されたアンチリプレイ部分の暗号ハッシュ(例えば、SHA-256暗号ハッシュ)にしてもよい。ホスト202によって生成された現在コマンドのアンチリプレイ部分が、非対称暗号を使用して生成された前コマンドのアンチリプレイ部分のためのデジタル署名である場合、回路210によって生成される期待値を、レジスタ214に格納されたアンチリプレイ部分のためのデジタル署名(例えば、非対称暗号を使用して生成された楕円曲線デジタル署名)にしてもよい。現在コマンドのアンチリプレイ部分が、レジスタ214に格納されたアンチリプレイ部分を使用して生成された期待値と一致することが比較により示されると、現在コマンドを正当と認めることができる。しかし、現在コマンドのアンチリプレイ部分が期待値と一致しないことが比較により示された場合は、(例えば、それによって、MITMリプレイアタックなどの攻撃が行われていることが示され得るので)現在コマンドを正当と認めることはできない。
【0042】
追加の例として、ホスト202によって生成された現在コマンドのアンチリプレイ部分が、対称暗号を使用して生成された前コマンドのアンチリプレイ部分のための署名である場合には、期待値を、秘密鍵の独自のコピーを使用して回路210によって計算してもよい。現在コマンドのアンチリプレイ部分が、秘密鍵を使用して計算された期待値と一致することが比較により示されると、現在コマンドを正当と認めることができる。しかし、現在コマンドのアンチリプレイ部分が、秘密鍵を使用して生成された期待値と一致しないことが比較により示される場合には、現在コマンドを正当と認めることはできない。
【0043】
受け取られたコマンドがホスト202に関連する署名(例えば、デジタル署名)を含む実施形態では、回路210は、コマンドの正当性を確認するために(例えば、アンチリプレイ部分を使用することに加えて)署名を使用することもできる。例えば、回路210は、公開鍵及び/または私有鍵を使用して署名を検証し、署名を確かめた上でコマンドの正当性を確認することができる。しかし、回路210が署名を検証することができない場合には、コマンドの正当性を確認することはできない。署名の検証の例を、本明細書で(例えば、図8に関連して)さらに説明する。
【0044】
コマンドがコマンドシーケンスの一部であり、コマンドが含まれるブロックチェーンのうちのブロックが、コマンドシーケンス内のコマンドの位置の表示を含む実施形態では、回路210は、この位置表示を(例えば、アンチリプレイ部分の使用に加えて)使用してコマンドの正当性を確認することもできる。例えば、回路210は、現在コマンドの位置表示を使用して、現在コマンドがシーケンス内の次コマンドであること(例えば、シーケンス内の前コマンドの後のコマンドであること)を検証し、現在コマンドがシーケンス内の次コマンドであることを確かめた上で、現在コマンドの正当性を確認することができる。しかし、現在コマンドがシーケンス内の次コマンドであることを、回路210が検証できない場合には、(例えば、シーケンス内でコマンドの順が狂っているために)コマンドの正当性を確認することはできない。
【0045】
ホスト202から受け取られたコマンドの正当性を確認すると、回路210は、メモリ216(例えば、メモリアレイ201)に対してコマンドを実行してもよい。例えば、コマンドがプログラム(例えば、書き込み)コマンドである場合、回路210は、コマンドに関連するデータをメモリ216にプログラムすることができる。コマンドがセンス(例えば、読み出し)コマンドである場合、回路210は、コマンドに関連するデータをメモリ216からセンスすることができる。
【0046】
ホスト202から受け取ったコマンドを実行すると、回路210は、コマンド応答(例えば、コマンドの実行に対する応答)を生成し、インターフェース204を介してホスト202にコマンド応答を送り得る。コマンド応答には、コマンドの実行結果を含めてもよい。例えば、コマンドがプログラムコマンドである場合、コマンドの結果には、コマンドに関連するデータが正常にプログラムされたかどうか、及び/またはデータがメモリ216内でプログラムされた場所の表示が含まれてもよい。コマンドがセンスコマンドである場合、コマンドの結果には、センスコマンドの実行の結果としてセンスされたデータが含まれてもよい。
【0047】
コマンド応答には、アンチリプレイ部分(例えば、フレッシュネスフィールド)を含めることもできる。コマンド応答のアンチリプレイ部分は、ホスト202から受け取られたコマンドのアンチリプレイ部分であってもよい(例えば、ホスト202から受け取られたコマンドのアンチリプレイ部分を、コマンド応答のアンチリプレイ部分として使用することも可能である)。このアンチリプレイ部分は、(例えば、前コマンドのアンチリプレイ部分を置き換えて)レジスタ214に格納することも可能である。
【0048】
いくつかの実施形態では、コマンド応答は、メモリデバイス206に関連する署名(例えば、デジタル署名)を含むことができ、この署名は、例えば、非対称暗号または対称暗号を使用してメモリデバイス206(例えば、回路210)によって生成されてもよい。メモリデバイス206に関連する署名は、コマンド応答がメモリデバイス206によって生成及び送出されたことを示すことができる(例えば、メモリデバイスの同一性を裏付けることができる)。
【0049】
コマンド応答を受け取ると、ホスト202は、コマンド応答のアンチリプレイ部分を使用してコマンドの実行結果の正当性を確認する(例えば、確認するかどうかを判定する)ことができる。例えば、ホスト202は、コマンド応答のアンチリプレイ部分を、ホスト202によって生成された(例えば、計算された)署名と比較してもよい。コマンド応答のアンチリプレイ部分を示す署名が、ホスト202によって生成された署名と一致することが比較により示されると、コマンドの実行結果を正当と認めることができる。しかし、コマンド応答のアンチリプレイ部分が署名と一致しないことが比較により示された場合は、(例えば、それによって、MITMリプレイアタックなどの攻撃が行われていることが示され得るので)コマンドの実行結果を正当と認めることはできない。
【0050】
コマンド応答がメモリデバイス206に関連する署名を含む実施形態では、ホスト202は、コマンドの実行結果の正当性を確認するために(例えば、アンチリプレイ部分を使用することに加えて)署名を使用することもできる。例えば、ホスト202は、公開鍵及び/または私有鍵を使用して署名を検証し、署名を確かめた上でコマンドの実行結果の正当性を確認してもよい。しかし、ホスト202が署名を検証することができない場合には、コマンドの実行結果の正当性を確認することはできない。署名の検証の例を、本明細書で(例えば、図8に関連して)さらに説明する。
【0051】
コマンドの実行結果の確認後に、ホスト202は、実行されたコマンドのアンチリプレイ部分が生成されたのと類似した方法で、メモリ216で実行しようとしている追加の(例えば、後続の)コマンドのためのアンチリプレイ部分を生成し得る。例えば、この追加コマンドは、メモリ216で実行しようとしているコマンドの正当性を確認するためのブロックチェーンにおける後続の(例えば次の)ブロックに含まれ得、この追加コマンドのためのアンチリプレイ部分は、今ではブロックチェーンにおける前ブロックの前コマンドとなった実行されたコマンド(例えば、実行されたコマンドのアンチリプレイ部分)に基づき得る。この追加コマンドはまた、ホスト202に関連する署名(例えば、デジタル署名)を含んでいてもよく、及び/または、今までに実行されたコマンドに類似した方法で、ホスト202によって発行されたコマンドのシーケンスの一部(例えば、次コマンド)であってもよい。
【0052】
ホスト202から追加コマンドを受け取ると、メモリデバイス206は、追加コマンドのアンチリプレイ部分を使用して追加コマンドの正当性を確認し、追加コマンドの正当性を確認すると、今までに実行されたコマンドについて本明細書で前に説明したのと類似した方法で、追加コマンドを実行することができる。例えば、メモリデバイス206は、現在レジスタ214に格納されている今では前コマンドとなったもののアンチリプレイ部分を、追加コマンドのアンチリプレイ部分と組み合わせて使用して、今までに実行されたコマンドについて本明細書で前に説明したのと類似した方法で、追加コマンドの正当性を確認することができる。
【0053】
追加コマンドを実行すると、メモリデバイス206は、以前に実行されたコマンドについて本明細書で前に説明したのと類似した方法で、追加コマンドに対するコマンド応答を生成し、そのコマンド応答をホスト202に送ることができる。追加コマンドに対するコマンド応答は、以前に実行されたコマンドに対するコマンド応答について前に説明したのと類似した方法で、コマンド応答の受け取り時に、そのコマンド応答の正当性を確認するためにホスト202によって使用されるアンチリプレイ部分を含むことができる。追加コマンドのための追加のアンチリプレイ部分が、ホスト202によって生成され続け、メモリデバイス206によって使用され続けて、メモリデバイス206の寿命を通して、そのような方法でそれらのコマンドの正当性を確認することができる。
【0054】
図2に示した実施形態は、本開示の実施形態を不明瞭にしないために図示していない追加の回路、論理回路、及び/または構成要素を含み得る。例えば、メモリデバイス206は、I/O回路によってI/Oコネクタ上に提供されるアドレス信号をラッチするためのアドレス回路を含むことがある。アドレス信号が行デコーダ及び列デコーダによって受け取られ、デコードされて、メモリアレイ201にアクセスすることができる。さらに、メモリデバイス206は、メモリアレイ201とは別個の、及び/またはメモリアレイ201に加えて、例えば、DRAMまたはSDRAMなどのメインメモリを含んでもよい。メモリデバイス206の追加の回路、論理回路、及び/または構成要素をさらに例示する例を、本明細書で(例えば、図9に関連して)詳述する。
【0055】
図3は、本開示の実施形態による、ブロックチェーンを基にした正当性確認を利用して正当性を確認することができるコマンドの例(例えば、コマンド320-1及び320-2)を示す。コマンド320-1及び320-2は、図2に関連して前に述べたように、ホスト202によって発行されてメモリ216で実行されるコマンドであり得る。例えば、コマンド320-2は、メモリ216での実行のためにホスト202によって現在発行されているコマンドであり得、コマンド320-1は、メモリ216で以前に実行された前コマンドであり得る。さらに、コマンド320-1及び320-2は、図2に関連して前に述べたように、メモリ216で実行しようとしているコマンドの正当性を確認するためのブロックチェーンのうちのブロックに含まれ得る。例えば、コマンド320-1は、コマンド320-2を含むブロックチェーン内のブロックの前にあるブロックチェーン内のブロックに含まれ得る(例えば、コマンド320-2を含むブロックは、コマンド320-1を含むブロックの後のチェーン内の次ブロックであり得る)。
【0056】
図3に示すように、各コマンド320-1及び320-2はそれぞれ、そのコマンド用の動作コード及びパラメータを含み得る。例えば、コマンド320-1は、動作コード322-1及びパラメータ324-1を含み、コマンド320-2は、動作コード322-2及びパラメータ324-2を含む。
【0057】
コマンドの動作コード及びパラメータは、メモリ216でコマンドを実行するためにメモリデバイス206によって使用される情報を含む(例えば、提供する)ことができる。例えば、コマンドの動作コード及びパラメータは、メモリ216で実行しようとしているコマンドのタイプ(例えば、プログラム、センス、移動、または消去)、及び/またはコマンドが実行されるべきメモリ216内の位置(例えば、コマンドに関連するデータがプログラム、消去、移動、またはセンスされることになるメモリ216内の位置)を示し得る。
【0058】
図3に示すように、各コマンド320-1及び320-2はそれぞれ、アンチリプレイ部分(例えば、フレッシュネスフィールド)を含み得る。例えば、コマンド320-1は、アンチリプレイ部分326-1を含み、コマンド320-2は、アンチリプレイ部分326-2を含む。
【0059】
コマンドのアンチリプレイ部分は、図2に関連して既に説明したように、ブロックチェーンの前ブロックに含まれる前コマンドに基づいていてもよい(例えば、前コマンドから生成されてもよい)。例えば、図3に示すように、コマンド320-2のアンチリプレイ部分326-2は、コマンド320-1のアンチリプレイ部分326-1から生成することができる。例えば、アンチリプレイ部分326-2は、図2に関連して既に説明したように、アンチリプレイ部分326-1の暗号ハッシュ、またはアンチリプレイ部分326-1のための署名であり得る。
【0060】
コマンドのアンチリプレイ部分は、図2に関連して既に述べたように、コマンドが以前に実行されていないことを確認するのに使用することができる。例えば、アンチリプレイ部分326-2は、コマンド320-2がメモリ216で以前に実行されていないことを確認するのに使用され得る。
【0061】
図3に示すように、各コマンド320-1及び320-2はそれぞれ、署名を含み得る。例えば、コマンド320-1は、署名328-1を含み、コマンド320-2は、署名328-2を含む。コマンドの署名は、コマンドがホスト202によって発行されたことを示し得、図2に関連して既に説明したように、コマンドの正当性確認時に使用され得る。
【0062】
図4は、本開示の実施形態による、ホスト402及びメモリデバイス406を含む例示的なシステムのブロック図である。ホスト402及びメモリデバイス406は、例えば、それぞれ図2に関連して既に説明したホスト202及びメモリデバイス206であり得る。
【0063】
コンピューティングデバイスは、レイヤを使用して段階的に起動することができ、各レイヤが、後続のレイヤを認証してロードし、各レイヤで次第に高度化するランタイムサービスを提供する。あるレイヤが先行するレイヤからサービスを受け、後続のレイヤにサービスを提供することで、下位のレイヤの上に構築され、上位のレイヤにサービスを提供するレイヤの相互接続網が形成される。図4に示されているように、レイヤ0(「L」)451とレイヤ1(「L」)453とはホスト内にある。レイヤ0 451は、ファームウェアデリバティブシークレット(FDS)鍵452をレイヤ1 453に提供し得る。FDS鍵452は、レイヤ1 453のコードの識別情報及びその他のセキュリティ関連データを記述し得る。例では、特定のプロトコル(ロバストなモノのインターネット(RIOT)コアプロトコルなど)がFDS452を使用して、ロードするレイヤ1 453のコードの正当性を確認することができる。例では、特定のプロトコルは、デバイス識別構成エンジン(DICE)及び/またはRIOTコアプロトコルを含み得る。例として、FDSには、レイヤ1ファームウェアのイメージそのもの、認証されたレイヤ1ファームウェアを暗号で識別するマニフェスト、セキュアブート実装との関連で署名されたファームウェアのバージョン番号、及び/またはデバイスのセキュリティが重要な構成設定が含まれ得る。デバイスシークレット458は、FDS452を作成するために使用され、ホスト402のメモリに格納され得る。
【0064】
ホストは、矢印454で示されるように、データをメモリデバイス406に伝送し得る。伝送データには、公開されている外部識別、証明書(例えば、外部識別証明書)、及び/または外部公開鍵が含まれ得る。メモリデバイス406のレイヤ2(「L」)455は、伝送データを受け取ることができ、オペレーティングシステム(「OS」)457の動作の中、第1のアプリケーション459-1及び第2のアプリケーション459-2で、データを実行し得る。
【0065】
例示的な動作では、ホスト402は、デバイスシークレット458を読み出し、レイヤ1 453の識別情報をハッシュし、
L1=KDF[Fs(s),Hash(“不変情報”)]
を含む計算を実行し得る。
上式で、KL1は外部公開鍵であり、KDF(例えば、National Institute of Standards and Technology(NIST) Special Publication 800-108で定義されているKDF)は、鍵導出関数(例えば、HMAC-SHA256)であり、Fs(s)はデバイスシークレット458である。FDS452は、
FDS=HMAC-SHA256[Fs(s),SHA256(“不変情報”)]
を実行することで決定できる。
同様に、メモリデバイス406は、矢印456で示されるように、データをホスト402に伝送し得る。
【0066】
図5は、本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。図5は、外部公開識別、外部証明書、及び外部公開鍵を含むパラメータの決定の例であり、これらは、その後、矢印554によって示されるように、メモリデバイス(例えば、図4の406)のレイヤ2(例えば、レイヤ2 455)に送られる。図5のレイヤ0(「L」)551は図4のレイヤ0 451に対応し、同様にFDS552はFDS452に対応し、レイヤ1 553はレイヤ1 453に対応し、矢印554及び556は、それぞれ矢印454及び456に対応する。
【0067】
レイヤ0 551からのFDS 552は、レイヤ1 553に送られ、非対称ID生成器561によって使用されて、公開識別(「IDlk公開」)565及び私有識別567が生成される。略された「IDlk公開」では、「lk」はレイヤk(この例ではレイヤ1)を示し、「公開」は、識別がオープンに共有されていることを示す。公開識別565は、ホストのレイヤ1 553の右側及び外側に延びる矢印によって共有されるように図示されている。生成された私有識別567は、暗号化装置573に入力される鍵として使用される。暗号化装置573は、データを暗号化するために使用される任意のプロセッサ、コンピューティングデバイスなどであり得る。
【0068】
ホストのレイヤ1 553は、非対称鍵生成器563を含み得る。少なくとも1つの例では、乱数発生器(RND)536が、非対称鍵生成器563に乱数を任意選択で入力し得る。非対称鍵生成器563は、図4のホスト402などのホストに関連付けられた公開鍵(「KLk公開」)569(外部公開鍵と呼ばれる)及び私有鍵(「KLK私有」)571(外部私有鍵と呼ばれる)を生成し得る。外部公開鍵569は、暗号化装置573への(「データ」としての)入力であり得る。暗号化装置573は、外部私有識別567及び外部公開鍵569の入力を用いて、結果K’575を生成し得る。外部私有鍵571及び結果K’575は、追加の暗号化装置577に入力することができ、その結果、出力K’’579が得られる。出力K’’579は、レイヤ2(図4の455)に伝送される外部証明書(「IDL1証明書」)581である。外部証明書581は、デバイスから送られたデータの出所を検証及び/または認証する機能を提供し得る。例として、ホストから送られたデータは、図7に関連してさらに説明するように、証明書を検証することにより、ホストの識別情報に関連付けられ得る。さらに、外部公開鍵(「KL1公開鍵」)583がレイヤ2に伝送され得る。したがって、ホストの公開識別565、証明書581、及び外部公開鍵583が、メモリデバイスのレイヤ2に伝送され得る。
【0069】
図6は、本開示の実施形態による、いくつかのパラメータを決定するための例示的なプロセスのブロック図である。図6は、デバイス識別(「IDL2公開」)666、デバイス証明書(「IDL2証明書」)682、及びデバイス公開鍵(「KL2公開鍵」)684を生成するメモリデバイス(例えば、図4のメモリデバイス406)のレイヤ2 655を示す。
【0070】
図5で説明したように、ホストのレイヤ1からメモリデバイスのレイヤ2 655に伝送された外部公開鍵(「KL1公開鍵」)683は、メモリデバイスの非対称ID生成器662によって使用されて、メモリデバイスの公開識別(「IDlk公開」)666及び私有識別668を生成する。略された「IDlk公開」では、「lk」はレイヤk(この例ではレイヤ2)を示し、「公開」は、識別がオープンに共有されていることを示す。公開識別666は、レイヤ2 655の右側及び外側に延びる矢印によって共有されるように図示されている。生成された私有識別668は、暗号化装置674に入力される鍵として使用される。
【0071】
図6に示すように、外部証明書681及び公開識別665は、外部公開鍵683と共に、証明書検証器699によって使用される。証明書検証器699は、ホストから受け取られた外部証明書681を検証し、外部証明書681が検証されたことまたは検証されなかったことに応答して、ホストから受け取られたたデータを受け入れるかまたは破棄するかを判定することができる。外部証明書681の検証の追加的な詳細については、本明細書で(例えば、図7に関連して)詳述する。
【0072】
メモリデバイスのレイヤ2 655は、非対称鍵生成器664を含み得る。少なくとも1つの例では、乱数発生器(RND)638が、非対称鍵生成器664に乱数を任意選択で入力し得る。非対称鍵生成器664は、図4のメモリデバイス406などのメモリデバイスに関連付けられた公開鍵(「KLk公開」)670(デバイス公開鍵と呼ばれる)及び私有鍵(「KLK私有」)672(デバイス私有鍵と呼ばれる)を生成し得る。デバイス公開鍵670は、暗号化装置674への(「データ」としての)入力であり得る。暗号化装置674は、デバイス私有識別668及びデバイス公開鍵670の入力を用いて、結果K’676を生成し得る。デバイス私有鍵672及び結果K’676は、追加の暗号化装置678に入力することができ、その結果、出力K’’680が得られる。出力K’’680は、レイヤ1(図4の453)に返送されるデバイス証明書(「IDL2証明書」)682である。デバイス証明書682は、デバイスから送られたデータの出所を検証及び/または認証する機能を提供し得る。例として、メモリデバイスから送られたデータは、図7に関連してさらに説明するように、証明書を検証することにより、メモリデバイスの識別情報に関連付けられ得る。さらに、デバイス公開鍵(「KL2公開鍵」)684がレイヤ1に伝送され得る。したがって、メモリデバイスの公開識別666、証明書682、及びデバイス公開鍵684が、ホストのレイヤ1に伝送され得る。
【0073】
例では、ホストがメモリデバイスから公開鍵を受け取ることに応答して、ホストは、デバイス公開鍵を使用して、メモリデバイスに送るべきデータを暗号化し得る。逆に、メモリデバイスは、外部公開鍵を使用して、ホストに送るべきデータを暗号化し得る。メモリデバイスが、デバイス公開鍵を用いて暗号化されたデータを受け取ったことに応答して、メモリデバイスは、それ自体のデバイス私有鍵を用いてデータを復号化してもよい。同様に、ホストが、外部公開鍵を用いて暗号化されたデータを受け取ることに応答して、ホストは、それ自体の外部私有鍵を用いてデータを復号化してもよい。デバイス私有鍵はメモリデバイス以外の別のデバイスとは共有されず、外部私有鍵はホスト以外の別のデバイスとは共有されないので、メモリデバイス及びホストに送られるデータはセキュアに保たれる。
【0074】
図7は、本開示の実施形態による、証明書を検証するための例示的なプロセスのブロック図である。図7の図示された例では、公開鍵783、証明書781、及び公開識別765がホストから(例えば、図4のホスト402のレイヤ1 453から)提供される。証明書781及び外部公開鍵783のデータは、復号器785への入力として使用され得る。復号器785は、データを復号化するために使用される任意のプロセッサ、コンピューティングデバイスなどであり得る。証明書781及び外部公開鍵783の復号化の結果は、公開された識別と共に、二次復号器787への入力として使用することができ、出力をもたらす。外部公開鍵783と復号器787からの出力とは、789に示されているように、証明書が検証されているかどうかを示すことができ、出力として「はい」または「いいえ」791をもたらす。証明書が検証されたことに応答して、検証されたデバイスから受け取られたデータを受け入れ、復号化し、処理することができる。証明書が検証されなかったことに応答して、検証されたデバイスから受け取られデータを破棄し、削除し、及び/または無視することができる。このようにして、不正なデータを送る不正なデバイスを検出して回避することができる。例として、処理対象のデータを送信しているハッカーを特定し、ハッキングデータを処理しないようにすることができる。
【0075】
図8は、本開示の実施形態による、署名を検証するための例示的なプロセスのブロック図である。デバイスが後の否認を回避するために検証可能なデータを送信している場合では、署名を生成してデータと共に送信することができる。例として、第1のデバイスが第2のデバイスにリクエストを行い、第2のデバイスがそのリクエストを実行すると、第1のデバイスは、第1のデバイスがそのようなリクエストを行っていないことを示すことがある。署名を使用するなどの否認防止アプローチにより、第1のデバイスによる否認を回避し、第2のデバイスが、要求されたタスクを、その後の支障もなく実行できることを保証することができる。
【0076】
ホスト802(図2のホスト202など)が、データ890をメモリデバイス806(図2のメモリデバイス206など)に送り得る。ホスト802は、894で、デバイス私有鍵871を使用して、署名896を生成し得る。署名896は、メモリデバイス806に伝送され得る。メモリデバイス806は、898で、以前に受け取ったデータ892及び外部公開鍵869を使用して署名を検証し得る。このようにして、署名は私有鍵を使用して生成され、公開鍵を使用して検証される。このようにして、一意の署名を生成するために使用される私有鍵は、署名を送るデバイスに対しては非公開のままにすることができ、一方で受信デバイスは、検証のために送信デバイスの公開鍵を使用して署名を復号化することができる。このことは、送信デバイスが受信デバイスの公開鍵を用いて暗号化し、受信デバイスが受信側の私有鍵を用いて復号化するデータの暗号化/復号化とは対照的である。少なくとも1つの例では、デバイスは、内部暗号プロセス(例えば、楕円曲線デジタル署名(ECDSA))または同様のプロセスを使用してデジタル署名を検証することができる。
【0077】
図9は、本開示の実施形態による、例示的なメモリデバイス906のブロック図である。メモリデバイス906は、例えば、図2に関連して既に説明したメモリデバイス206であり得る。
【0078】
図9に示すように、メモリデバイス906は、いくつかのメモリアレイ901-1~901-7を含み得る。メモリアレイ901-1~901-7は、図1に関連して既に説明したメモリアレイ101に類似し得る。さらに、図9に示す例では、メモリアレイ901-3がセキュアアレイであり、メモリアレイ901-6のサブセット911がセキュアアレイを含み、メモリアレイ901-7のサブセット913及び915がセキュアアレイを含む。サブセット911、913、及び915はそれぞれ、例えば、4キロバイトのデータを含んでもよい。ただし、本開示の実施形態は、メモリアレイまたはセキュアアレイの特定の数または配置に限定されるものではない。
【0079】
図9に示すように、メモリデバイス906は、修復(例えば、回復)ブロック917を含み得る。修復ブロック917は、メモリデバイス906の動作中に発生する可能性のあるエラー(例えば、不一致)の場合に、データのソースとして使用することができる。修復ブロック917は、ホストによってアドレス指定可能なメモリデバイス906の領域の外側にあってもよい。
【0080】
図9に示すように、メモリデバイス906は、シリアルペリフェラルインターフェース(SPI)904及びコントローラ908を含み得る。メモリデバイス906は、本明細書で(例えば、図2に関連して)既に説明したように、SPI904及びコントローラ908を使用して、ホスト及びメモリアレイ901-1~901-7と通信し得る。
【0081】
図9に示すように、メモリデバイス906は、メモリデバイス906のセキュリティを管理するためのセキュアレジスタ919を含んでもよい。例えば、セキュアレジスタ919は、アプリケーションコントローラを構成し、アプリケーションコントローラと外部的に通信し得る。さらに、セキュアレジスタ919は、認証コマンドによって変更可能であってもよい。
【0082】
図9に示すように、メモリデバイス906は、鍵921を含み得る。例えば、メモリデバイス906は、ルート鍵、DICE-RIOT鍵、及び/または他の外部セッション鍵などの鍵を格納するために、8つの異なるスロットを含み得る。
【0083】
図9に示すように、メモリデバイス906は、電子的に消去可能なプログラマブルリードオンリーメモリ(EEPROM)923を含み得る。EEPROM923は、ホストが利用できるセキュアな不揮発性領域を提供することができ、その中でデータの個々のバイトを消去し、プログラムすることが可能である。
【0084】
図9に示すように、メモリデバイス906は、カウンタ(例えば、単調カウンタ)925を含み得る。例えば、メモリデバイス906は、6つの異なる単調カウンタを含むことができ、そのうちの2つは、認証されたコマンドのためにメモリデバイス906によって使用されてもよく、そのうちの4つは、ホストによって使用されてもよい。
【0085】
図9に示すように、メモリデバイス906は、SHA-256暗号ハッシュ関数927、及び/またはHMAC-SHA256暗号ハッシュ関数929を含み得る。SHA-256及び/またはHMAC-SHA256暗号ハッシュ関数927及び929は、メモリデバイス906によって使用されて、例えば、本明細書で既に説明したコマンドの暗号ハッシュ、及び/またはメモリアレイ901-1~901-7に格納されたデータの正当性を確認するために使用されるゴールデンハッシュなどの暗号ハッシュを生成することができる。さらに、メモリデバイス906は、DICE-RIOT931のL0及びL1をサポートすることができる。
【0086】
本明細書には、特定の実施形態を示して説明してきたが、当業者であれば、同じ結果を得るように意図された構成が、示した特定の実施形態の代わりになり得ることを理解するであろう。本開示は、本開示のいくつかの実施形態の適合形態または変形形態を含むことを意図する。上記の説明は、例示目的であり、限定目的ではないことを理解されたい。上記の実施形態の組み合わせ、及び本明細書に具体的に記載されていない他の実施形態は、上記の説明を検討することで、当業者には明らかとなるであろう。本開示のいくつかの実施形態の範囲は、上記の構造及び方法が使用される他の用途を含む。したがって、本開示のいくつかの実施形態の範囲は、添付の特許請求の範囲と、添付の特許請求の範囲に権利を与えられた内容と同等物の全範囲とを参照して、特定されるべきである。
【0087】
前述の発明を実施するための形態では、本開示を簡素化する目的で、いくつかの特徴が単一の実施形態にまとめられている。本開示のこの方法は、本開示の開示された実施形態が、各請求項に明確に列挙された特徴より多くの特徴を使用する必要があるという意図を反映するものとして、解釈されるべきではない。むしろ、下記の特許請求の範囲が反映するように、発明の主題は、開示された単一の実施形態の全ての特徴よりも少ない特徴で存在する。したがって、以下の特許請求の範囲は、本明細書によって詳細な説明に組み込まれ、各請求項は別個の実施形態として自立する。
図1
図2
図3
図4
図5
図6
図7
図8
図9