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

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

▶ ウェスタン デジタル テクノロジーズ インコーポレーテッドの特許一覧

特開2022-166807セキュアなHMBのためのマークル木における高速書き込み
<>
  • 特開-セキュアなHMBのためのマークル木における高速書き込み 図1
  • 特開-セキュアなHMBのためのマークル木における高速書き込み 図2
  • 特開-セキュアなHMBのためのマークル木における高速書き込み 図3
  • 特開-セキュアなHMBのためのマークル木における高速書き込み 図4
  • 特開-セキュアなHMBのためのマークル木における高速書き込み 図5
  • 特開-セキュアなHMBのためのマークル木における高速書き込み 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022166807
(43)【公開日】2022-11-02
(54)【発明の名称】セキュアなHMBのためのマークル木における高速書き込み
(51)【国際特許分類】
   G06F 12/14 20060101AFI20221026BHJP
   G06F 12/00 20060101ALI20221026BHJP
【FI】
G06F12/14 510D
G06F12/00 597U
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022010459
(22)【出願日】2022-01-26
(31)【優先権主張番号】17/236,730
(32)【優先日】2021-04-21
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】アミール・セゲフ
(72)【発明者】
【氏名】シェイ・ベニスティ
【テーマコード(参考)】
5B017
5B160
【Fターム(参考)】
5B017AA02
5B017BA02
5B017BB09
5B017CA11
5B160AB26
(57)【要約】      (修正有)
【課題】半導体ドライブ(SSD)などのデータ記憶デバイス及びセキュアなホストメモリバッファ(HMB)のための、マークル木に対するデータの検証及び書き込み動作を改善する。
【解決手段】記憶システム100において、データ記憶デバイス106は、メモリデバイス及びメモリデバイスに結合されたコントローラ108を含む。コントローラ108は、デコーダをデータモードに設定することと、ホストメモリバッファからホストメモリバッファデータ及びハッシュを読み取ることと、第1の計算されたハッシュを生成することと、デコーダをハッシュモードに設定することと、第2の計算されたハッシュを生成することと、第2の計算されたハッシュがルートハッシュと同じであるかどうかを判定することと、を行う。
【選択図】図1
【特許請求の範囲】
【請求項1】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラが、
デコーダをデータモードに設定することと、
ホストメモリバッファ(HMB)からホストメモリバッファデータ及びハッシュを読み取ることと、
第1の計算されたハッシュを生成することと、
前記デコーダをハッシュモードに設定することと、
第2の計算されたハッシュを生成することと、
前記第2の計算されたハッシュがルートハッシュと同じであるかどうかを判定することと、を行うように構成されている、コントローラと、を備える、データ記憶デバイス。
【請求項2】
前記データモードにある間、前記デコーダは、すべてのデータが前記HMBから受信されたかどうかを判定するように構成されている、請求項1に記載のデータ記憶デバイス。
【請求項3】
前記ハッシュモードにある間、前記デコーダは、すべてのハッシュが前記HMBから受信されたかどうかを判定するように構成されている、請求項1に記載のデータ記憶デバイス。
【請求項4】
前記デコーダは、前記第2の計算されたハッシュが最後のハッシュであるかどうかを判定するように構成されている、請求項1に記載のデータ記憶デバイス。
【請求項5】
前記コントローラは、前記最後のハッシュが前記ルートハッシュと同じではない場合に、書き込み動作が失敗したことを示すように構成されている、請求項4に記載のデータ記憶デバイス。
【請求項6】
前記第1の計算されたハッシュが、前記HMBから読み取られたすべてのデータを受信した後に生成される、請求項1に記載のデータ記憶デバイス。
【請求項7】
前記第2の計算されたハッシュが、前記HMBからハッシュ全体を受信した後に生成される、請求項1に記載のデータ記憶デバイス。
【請求項8】
前記コントローラが、
エンコーダをデータモードに設定することと、
前記エンコーダを用いて第1の新規ハッシュを生成することと、
すべてのHMBデータが前記デコーダに到達したかどうかを判定することと、を行うように更に構成されている、請求項1に記載のデータ記憶デバイス。
【請求項9】
前記コントローラが、
新規データ及び前記第1の新規ハッシュを前記HMBに書き込むことであって、前記書き込むことは、すべてのHMBデータが前記デコーダに到達したと判定した後に行われる、書き込むこと、を行うように更に構成されている、請求項8に記載のデータ記憶デバイス。
【請求項10】
前記コントローラが、
第2の新規ハッシュを計算することと、
前記第2の新規ハッシュを前記HMBに書き込むことと、を行うように更に構成されている、請求項9に記載のデータ記憶デバイス。
【請求項11】
前記第2の新規ハッシュを計算することは、前記デコーダが前記第1の計算されたハッシュ及び前記第2の計算されたハッシュを生成した後に行われる、請求項10に記載のデータ記憶デバイス。
【請求項12】
前記コントローラは、前記第2の計算されたハッシュが前記ルートハッシュと同じであると判定した後に、前記第2の新規ハッシュを用いて前記ルートハッシュを更新するように構成されている、請求項11に記載のデータ記憶デバイス。
【請求項13】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラが、
エンコーダをデータモードに設定することと、
第1の新規ハッシュを生成することと、
新規データ及び前記第1の新規ハッシュをホストメモリバッファ(HMB)に書き込むことと、
前記エンコーダをハッシュモードに設定することと、
第2の新規ハッシュを計算することと、
前記第2の新規ハッシュを用いてルートハッシュを更新することと、を行うように構成されている、コントローラと、を備える、データ記憶デバイス。
【請求項14】
前記コントローラは、前記新規データ及び新規ハッシュを前記HMBに書き込む前に、すべてのHMBデータがデコーダに到達したかどうかを判定するように更に構成されている、請求項13に記載のデータ記憶デバイス。
【請求項15】
前記コントローラが、デコーダにおいて第2の計算されたハッシュを生成した後に、前記第2の新規ハッシュを計算するように更に構成されている、請求項13に記載のデータ記憶デバイス。
【請求項16】
前記コントローラは、前記第2の新規ハッシュが最後のハッシュであるかどうかを判定するように更に構成されている、請求項13に記載のデータ記憶デバイス。
【請求項17】
前記コントローラが、前記ルートハッシュを更新する前に、前記第2の新規ハッシュをHMBに書き込むように更に構成されている、請求項13に記載のデータ記憶デバイス。
【請求項18】
データ記憶デバイスであって、
メモリ手段と、
前記メモリ手段に結合されたコントローラであって、前記コントローラが、
ホストメモリバッファ(HMB)から読み取られたデータに基づいて、第1の計算されたハッシュを生成することと、
前記第1の計算されたハッシュ、及び前記HMBから読み取られたHMBハッシュに基づいて、第2の計算されたハッシュを生成することと、
前記第2の計算されたハッシュをルートハッシュと比較して、書き込み動作が失敗したかどうかを判定することと、を行うように構成されている、コントローラと、を備える、データ記憶デバイス。
【請求項19】
前記コントローラが、
新規ハッシュを調製することと、
前記新規ハッシュに関連付けられたデータ、及び前記新規ハッシュをHMBに書き込むことと、
前記第2の計算されたハッシュが前記ルートハッシュに等しいと判定すると、前記新規ハッシュを前記ルートハッシュに書き込むことと、を行うように更に構成されている、請求項18に記載のデータ記憶デバイス。
【請求項20】
第1の計算されたハッシュを前記生成すること、第2の計算されたハッシュを生成すること、及び比較することが、デコーダによって実行され、データを調整し、書き込むこと、及び前記新規ハッシュを書き込むことが、エンコーダによって実行される、請求項19に記載のデータ記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、概して、半導体ドライブ(SSD)などのデータ記憶デバイス、及びセキュアなホストメモリバッファ(HMB)のためのマークル木への書き込み動作に関する。
【背景技術】
【0002】
関連技術の説明
ホストメモリバッファ(HMB)は、データ記憶デバイスのコントローラがホストダイナミックランダムアクセスメモリ(DRAM)などのホストデバイスメモリの指定された一部を利用するのを可能にするデータ記憶デバイスによって利用される特徴である。HMBは、コントローラ専用のために割り当てられ、このため、HMBは、コントローラがメモリの一部をホストデバイスに解放し戻すまで、ホストソフトウェアによって変更されない。コントローラは、HMBリソースの初期化を担い得る。更に、HMBの特徴は、データ記憶デバイスに内蔵されるDRAMの必要なサイズを低減することによって、データ記憶デバイスのコストを削減し得る。HMBは、フラッシュ変換層(FTL)テーブルを記憶するために利用され得、そのテーブルは、論理アドレスから物理アドレスへの変換を含む。各ランダム読み取りコマンドについて、コントローラは、NAND内の必要な物理アドレスを含むFTLテーブルから関連するエントリを取り出す。次いで、コントローラは、この物理アドレスからデータを取り出し、データをホストデバイスに返す。
【0003】
HMBは、データ記憶デバイスに対する外部メモリであるため、データ記憶デバイスは、ホストDRAM、具体的には、HMBを攻撃することによって、再実行攻撃及び/又は再生攻撃を含むネットワーク攻撃などのセキュリティ攻撃を受け得る。再実行攻撃及び/又は再生攻撃は、適正なデータ伝送が、悪意を持って又は不正に、反復又は遅延されるネットワーク攻撃の形態である。再実行攻撃及び/又は再生攻撃は、データを妨害し、そのデータを再送信させる発信者か又は敵対者かのいずれかによって実行され得る。再実行攻撃及び/又は再生攻撃は、IPパケット取り替えによる見せかけ攻撃の一部であり得る。HMBのセキュリティを改善するために、データ記憶デバイスは、マークル木を実装し得、そこでは、データが、新規データをマークル木に書き込む前に検証される。しかしながら、検証プロセスは、ハッシュを計算し、ルートハッシュを、最後に計算されたハッシュと比較することを含むため、新規データをマークル木に書き込むための待ち時間が大きくなり得る。
【0004】
したがって、当技術分野では、マークル木に対するデータの検証及び書き込みプロセスの改善が必要である。
【発明の概要】
【0005】
本開示は、概して、半導体ドライブ(SSD)などのデータ記憶デバイス、及びセキュアなホストメモリバッファ(HMB)のための、マークル木への書き込み動作に関する。データ記憶デバイスは、メモリデバイス、及びメモリデバイスに結合されたコントローラを含む。コントローラは、デコーダをデータモードに設定することと、ホストメモリバッファからホストメモリバッファデータ及びハッシュを読み取ることと、第1の計算されたハッシュを生成することと、デコーダをハッシュモードに設定することと、第2の計算されたハッシュを生成することと、第2の計算されたハッシュがルートハッシュと同じであるかどうかを判定することと、を行うように構成されている。コントローラは、エンコーダをデータモードに設定することと、第1の新規ハッシュを生成することと、新規データ及び第1の新規ハッシュをホストメモリバッファに書き込むことと、エンコーダをハッシュモードに設定することと、第2の新規ハッシュを計算することと、第2の新規ハッシュを用いてルートハッシュを更新することと、を行うように更に構成されている。
【0006】
一実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、デコーダをデータモードに設定することと、ホストメモリバッファからホストメモリバッファ(HMB)データ及びハッシュを読み取ることと、第1の計算されたハッシュを生成することと、デコーダをハッシュモードに設定することと、第2の計算されたハッシュを生成することと、第2の計算されたハッシュがルートハッシュと同じであるかどうかを判定することと、を行うように構成されている。
【0007】
別の実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、エンコーダをデータモードに設定することと、第1の新規ハッシュを生成することと、新規データ及び第1の新規ハッシュをホストメモリバッファ(HMB)に書き込むことと、エンコーダをハッシュモードに設定することと、第2の新規ハッシュを計算することと、第2の新規ハッシュを用いてルートハッシュを更新することと、を行うように構成されている。
【0008】
別の実施形態では、データ記憶デバイスは、メモリ手段と、メモリ手段に結合されたコントローラと、を含む。コントローラは、ホストメモリバッファ(HMB)から読み取られたデータに基づいて、第1の計算されたハッシュを生成することと、第1の計算されたハッシュ、及びHMBから読み取られたHMBハッシュに基づいて、第2の計算されたハッシュを生成することと、第2の計算されたハッシュをルートハッシュと比較して、書き込み動作が失敗したかどうかを判定することと、を行うように構成されている。
【図面の簡単な説明】
【0009】
本開示の上記の特徴を詳細に理解することができるように、簡潔に上で要約した本開示のより具体的な説明は、実施形態を参照することによってなされ得、それらのいくつかが添付の図面に例示されている。しかしながら、添付の図面は、本開示の典型的な実施形態のみを例示し、したがって、その範囲を限定するものと見なされるべきではなく、本開示が他の同等に有効な実施形態を認め得ることに留意すべきである。
【0010】
図1】ある特定の実施形態による、データ記憶デバイスがホストデバイスのための記憶デバイスとして機能し得る記憶システムを例示する概略ブロック図を描写する。
【0011】
図2】ある特定の実施形態による、マークル木の概略例を描写する。
【0012】
図3】ある特定の実施形態による、マークル木の概略図を描写する。
【0013】
図4】ある特定の実施形態による、異なるホストメモリバッファ(HMB)サイズの場合のマークル木のレベルの数、及び木の数を例示するテーブルを描写する。
【0014】
図5】ある特定の実施形態による、SHAエンコーダ及びSHAデコーダを含むセキュアなハッシュアルゴリズム(SHA)システムを例示する概略ブロック図を描写する。
【0015】
図6】ある特定の実施形態による、マークル木のデータを検証する方法、及び並列に動作するマークル木にデータを書き込む方法を例示するフロー図を描写する。
【0016】
理解を容易にするために、図面に共通する同一の要素を示すために、可能な限り、同一の参照番号を使用している。一実施形態で開示される要素は、特に断ることなく、他の実施形態に有益に利用され得ることが企図される。
【発明を実施するための形態】
【0017】
以下では、本開示の実施形態を参照する。しかしながら、本開示は、具体的に説明される実施形態に限定されないことを理解されたい。その代わりに、以下の特徴及び要素の任意の組み合わせが、異なる実施形態に関連するか否かに関わらず、本開示を実施及び実践すると企図される。更に、本開示の実施形態は、他の可能な解決策に勝る、及び/又は先行技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示を限定するものではない。したがって、以下の態様、特徴、実施形態、及び利点は、単なる例示に過ぎず、請求項(複数可)に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定と見なされない。同様に、「本開示」への言及は、本明細書に開示される任意の発明の主題の一般化として解釈されるものではなく、請求項(複数可)に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定であると見なされるべきではない。
【0018】
本開示は、概して、半導体ドライブ(SSD)などのデータ記憶デバイス、及びセキュアなホストメモリバッファ(HMB)のための、マークル木への書き込み動作に関する。データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、デコーダをデータモードに設定することと、ホストメモリバッファからホストメモリバッファデータ及びハッシュを読み取ることと、第1の計算されたハッシュを生成することと、デコーダをハッシュモードに設定することと、第2の計算されたハッシュを生成することと、第2の計算されたハッシュがルートハッシュと同じであるかどうかを判定することと、を行うように構成されている。コントローラは、エンコーダをデータモードに設定することと、第1の新規ハッシュを生成することと、新規データ及び第1の新規ハッシュをホストメモリバッファに書き込むことと、エンコーダをハッシュモードに設定することと、第2の新規ハッシュを計算することと、第2の新規ハッシュを用いてルートハッシュを更新することと、を行うように更に構成されている。
【0019】
図1は、ある特定の実施形態による、データ記憶デバイス106がホストデバイス104のための記憶デバイスとして機能し得る記憶システム100を例示する概略ブロック図を描写する。例えば、ホストデバイス104は、データ記憶デバイス106に含まれる不揮発性メモリ(NVM)110を利用して、データを記憶及び取得し得る。ホストデバイス104は、ホストDRAM138を備え、そこでは、ホストDRAM138の部分が、ホストメモリバッファ(HMB)140として割り当てられている。HMB140は、追加の作業領域又は追加の記憶領域として、データ記憶デバイス106によって使用することができる。HMB140は、いくつかの例では、ホストデバイス104によってアクセスすることができない場合がある。いくつかの実施例では、記憶システム100は、記憶アレイとして動作し得るデータ記憶デバイス106などの複数の記憶デバイスを含み得る。例えば、記憶システム100は、ホストデバイス104のための大量記憶デバイスとして集合的に機能する安価/独立ディスクの冗長アレイ(RAID)として構成された複数のデータ記憶デバイス106を含み得る。
【0020】
ホストデバイス104は、データ記憶デバイス106などの1つ以上の記憶デバイスに及び/又はからデータを記憶及び/又は取得し得る。図1に例示されるように、ホストデバイス104は、インターフェース114を介してデータ記憶デバイス106と通信し得る。ホストデバイス104は、コンピュータサーバ、ネットワーク接続記憶(NAS)ユニット、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話機、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、又はデータ記憶デバイスからデータを送信又は受信することができる他のデバイスなど、広範なデバイスのうちのいずれも備え得る。
【0021】
データ記憶デバイス106は、コントローラ108、NVM110、電源111、揮発性メモリ112、インターフェース114、及び書き込みバッファ116を含む。いくつかの実施例では、データ記憶デバイス106は、明瞭化のために図1に示されていない追加の構成要素を含み得る。例えば、データ記憶デバイス106は、データ記憶デバイス106の構成要素が機械的に取り付けられ、データ記憶デバイス106の構成要素を電気的に相互接続する導電性トレースを含む、プリント回路基板(PCB)を含み得る。いくつかの実施例では、データ記憶デバイス106の物理的寸法及びコネクタ構成は、1つ以上の標準的フォームファクタに適合し得る。いくつかの例示的な標準的フォームファクタとしては、3.5”データ記憶デバイス(例えば、HDD又はSSD)、2.5”データ記憶デバイス、1.8”データ記憶デバイス、周辺部品相互接続(PCI)、PCI拡張(PCI-X)、PCIエクスプレス(PCIe)(例えば、PCIe×1、×4、×8、×16、PCIeミニカード、ミニPCIなど)が挙げられるが、これらに限定されない。いくつかの実施例では、データ記憶デバイス106は、ホストデバイス104のマザーボードに直接結合(例えば、直接半田付け)され得る。
【0022】
データ記憶デバイス106のインターフェース114は、ホストデバイス104とデータを交換するためのデータバス、及びホストデバイス104とコマンドを交換するための制御バスのうちの一方又は両方を含み得る。インターフェース114は、任意の好適なプロトコルに従って動作し得る。例えば、インターフェース114は、以下のプロトコルのうちの1つ以上:先進技術アタッチメント(ATA)(例えば、シリアルATA(SATA)及びパラレルATA(PATA))、ファイバチャネルプロトコル(FCP)、シリアル接続SCSI(SAS)、PCI、及びPCIe、スモールコンピュータシステムインターフェース(SCSI)、不揮発性メモリエクスプレス(NVMe)、OpenCAPI、GenZ、キャッシュ・コヒーレント・インターフェース・アクセラレータ(CCIX)、オープンチャネルSSD(OCSSD)などに従って動作し得る。インターフェース114(例えば、データバス、制御バス、又はその両方)は、コントローラ108に電気的に接続され、この電気的接続は、ホストデバイス104とコントローラ108との間に電気的接続を提供し、ホストデバイス104とコントローラ108との間でデータを交換することを可能にする。いくつかの実施例では、インターフェース114の電気的接続はまた、データ記憶デバイス106がホストデバイス104から電力を受け取り得る。例えば、図1に例示されるように、電源111は、インターフェース114を介してホストデバイス104から電力を受け取り得る。
【0023】
NVM110は、複数のメモリデバイス又はメモリユニットを含み得る。NVM110は、データを記憶及び/又は取得するように構成され得る。例えば、NVM110のメモリユニットは、データと、データを記憶するようにメモリユニットに命令するメッセージと、をコントローラ108から受信し得る。同様に、NVM110のメモリユニットは、データを取得するようにメモリユニットに命令するメッセージをコントローラ108から受信し得る。いくつかの実施例では、メモリユニットの各々は、ダイと称され得る。いくつかの実施例では、単一の物理チップは、複数のダイ(すなわち、複数のメモリユニット)を含み得る。いくつかの実施例では、各メモリユニットは、比較的大量のデータ(例えば、128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TBなど)を記憶するように構成され得る。
【0024】
いくつかの実施例では、NVM110の各メモリユニットは、フラッシュメモリデバイス、相変化メモリ(PCM)デバイス、抵抗ランダムアクセスメモリ(ReRAM)デバイス、磁気抵抗ランダムアクセスメモリ(MRAM)デバイス、強誘電性ランダムアクセスメモリ(F-RAM)、ホログラフィックメモリデバイス、及び任意の他の種類の不揮発性メモリデバイスなどの、任意の種類の不揮発性メモリデバイスを含み得る。
【0025】
NVM110は、複数のフラッシュメモリデバイス又はメモリユニットを備え得る。NVMフラッシュメモリデバイスは、NAND又はNORベースのフラッシュメモリデバイスを含み得、各フラッシュメモリセルのトランジスタの浮遊ゲートに含まれる電荷に基づいてデータを記憶し得る。NVMフラッシュメモリデバイスでは、フラッシュメモリデバイスは、複数のダイに分割され得、複数のダイの各ダイは複数のブロックを含み、これらは更に複数のページに分割され得る。特定のメモリデバイス内の複数のブロックの各ブロックは、複数のNVMセルを含み得る。NVMセルの行は、複数のページの各ページを定義するためにワード線を使用して電気的に接続され得る。複数のページの各々におけるそれぞれのセルは、それぞれのビット線に電気的に接続され得る。更に、NVMフラッシュメモリデバイスは、2D又は3Dデバイスであってもよく、単一レベルセル(SLC)、マルチレベルセル(MLC)、トリプルレベルセル(TLC)、又はクアッドレベルセル(QLC)であってもよい。コントローラ108は、ページレベルで、NVMフラッシュメモリデバイスにデータを書き込み、かつNVMフラッシュメモリデバイスからデータを読み取り得、ブロックレベルで、NVMフラッシュメモリデバイスからデータを消去し得る。
【0026】
データ記憶デバイス106は、データ記憶デバイス106の1つ以上の構成要素に電力を提供し得る電源111を含む。標準モードで動作するとき、電源111は、ホストデバイス104などの外部デバイスによって提供される電力を使用して、1つ以上の構成要素に電力を提供し得る。例えば、電源111は、インターフェース114を介してホストデバイス104から受け取った電力を使用して、1つ以上の構成要素に電力を提供し得る。いくつかの実施例では、電源111は、外部デバイスから電力を受け取ることを停止する場合などのシャットダウンモードで動作するときに、1つ以上の構成要素に電力を供給するように構成された1つ以上の電力貯蔵構成要素を含み得る。このように、電源111は、積載電源として機能し得る。1つ以上の電力貯蔵構成要素のいくつかの例としては、コンデンサ、超コンデンサ、バッテリなどが挙げられるが、これらに限定されない。いくつかの実施例では、1つ以上の電力貯蔵構成要素によって貯蔵され得る電力の量は、1つ以上の電力貯蔵構成要素のコスト及び/又はサイズ(例えば、面積/体積)の関数であり得る。換言すれば、1つ以上の電力貯蔵構成要素によって貯蔵される電力の量が増加するにつれて、1つ以上の電力貯蔵構成要素のコスト及び/又はサイズも増加する。
【0027】
データ記憶デバイス106は、情報を記憶するためにコントローラ108によって使用され得る揮発性メモリ112を更に含む。揮発性メモリ112は、1つ以上の揮発性メモリデバイスを含み得る。いくつかの実施例では、コントローラ108は、揮発性メモリ112をキャッシュとして使用し得る。例えば、コントローラ108は、キャッシュされた情報が不揮発性メモリ110に書き込まれるまで、揮発性メモリ112にキャッシュ情報を記憶し得る。図1に例示されるように、揮発性メモリ112は、電源111から受け取った電力を消費し得る。揮発性メモリ112の例としては、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックRAM(SRAM)、及び同期ダイナミックRAM(SDRAM(例えば、DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4など))が挙げられるが、これらに限定されない。
【0028】
データ記憶デバイス106は、データ記憶デバイス106の1つ以上の動作を管理し得るコントローラ108を含む。例えば、コントローラ108は、NVM110からのデータの読み取り及び/又はNVM110へのデータの書き込みを管理し得る。いくつかの実施形態では、データ記憶デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データ記憶コマンドを開始して、データをNVM110に記憶し、データ記憶コマンドの進捗を監視し得る。コントローラ108は、記憶システム100の少なくとも1つの動作特性を判定し、少なくとも1つの動作特性をNVM110に記憶し得る。いくつかの実施形態では、データ記憶デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データをNVM110に送信する前に、内部メモリ又は書き込みバッファ116内の書き込みコマンドに関連付けられたデータを一時的に記憶する。いくつかの他の実施形態では、HMB140が利用され得る。
【0029】
図2は、ある特定の実施形態による、マークル木200の概略例を描写する。マークル木200は、1つ以上のメモリデバイスに記憶されたデータに対応するエントリデータなどのデータを含む。データは、複数のデータブロック201~204に記憶される。マークル木200は、図1のホストデバイス104のHMB140などのホストデバイスの部分である。マークル木200は、第1のハッシュレベル210の第1の複数のハッシュ211~214、及び第2のハッシュレベル220の第2の複数のハッシュ221、222を含む。第1の複数のハッシュ211~214は、複数のデータブロック201~204を使用して作成される。第1の複数のハッシュ211~214の各ハッシュは、複数のデータブロック201~204のデータブロックに対応する。第2の複数のハッシュ221、222は、第1の複数のハッシュ211~214のうちのハッシュを組み合わせることによって作成される。
【0030】
マークル木200は、最上位ハッシュレベル230(すなわち、マークル木200のルート)の最上位レベルハッシュ231を含む。最上位ハッシュレベル230は、マークル木200のハッシュのすべてを使用して作成される署名を含む。最上位ハッシュレベル231の署名は、最上位ハッシュレベル230の直下に配設されているハッシュレベル(例えば、第2のハッシュレベル220)の2つのハッシュ221、222を組み合わせることによって作成される。署名は、組み合わされたハッシュのECCデータを含み得る。例えば、最上位ハッシュレベル231の署名は、第2のハッシュレベル220の2つのハッシュ221、222のECCデータを含み得る。最上位ハッシュレベル230は、単一のハッシュ(例えば、最上位レベルハッシュ231)を含む。マークル木200が複数のデータブロック201~204から上向きに、かつ最上位レベルハッシュ231に向かって移動するにつれて、各ハッシュレベル210、220のハッシュは、単一の最上位レベルハッシュ231の署名が最上位ハッシュレベル230について作成されるまで、累進的に組み合わされる。
【0031】
マークル木200を使用して、ホストデバイスの一部を(検証検査を使用することなどによって)セキュリティ保護及び検証する。ハッシュレベル210、220、230の累進的な性質に起因して、最上位レベルハッシュ231の署名は、複数のデータブロック201~204のうちの更に1つのデータが変質又は破損し、例えば、ネットワーク攻撃中に変質又は破損した場合、変質又は破損される。最上位レベルハッシュ231の変質又は破損した署名は、データブロック201~204のうちの1つ以上のデータが変質又は破損したことを示す。データがデータブロック201~204に書き込まれ、記憶されると、マークル木200、及び最上位レベルハッシュ231の署名が作成される。最上位レベルハッシュ231の署名は、記憶された署名、又は最上位レベルハッシュ231署名として記憶される。
【0032】
本開示は、図2が例示的であり、図2に示されたデータブロック201~204よりも多いデータブロック、図2に例示されたハッシュレベル210、220、230よりも多いハッシュレベル、及び図2に例示されたハッシュ211~214、221、222、231よりも多いハッシュを含むことができることを想定する。
【0033】
図3は、ある特定の実施形態による、マークル木300の概略図を描写する。マークル木300は、追加のハッシュレベル、ハッシュ、及びデータブロックを含む、図2のマークル木200の代替表現であり得る。図3を参照すると、マークル木300が割り当てられるときに、例えば、データ記憶デバイス106のコントローラ108が最初に図1のホストデバイス104のHMB140に接続するときに、複数のハッシュ304a~h、306a~d、308a~b、310、及び複数のデータブロック302a~hが構成されている。いくつかの例では、「ハッシュ」という用語は、例示的な目的の場合、同義的に「ノード」と称され得る。
【0034】
複数のデータブロック302a~hは、フラッシュ変換層(FTL)テーブルの1つ以上のエントリを含み得、その場合、FTLテーブルは、データ記憶デバイスに記憶されたデータの場所をマッピングするテーブルである。コントローラ108は、マークル木300のハッシュレベルの数を判定し得る。マークル木300は、最上位ハッシュレベル350の最上位ハッシュ又は第1のハッシュ310、及び下部ハッシュレベル360、370、380でのいくつかの子ハッシュ(すなわち、ハッシュ2~15、304a~h、306a~d、308a~b)を備える。最上位ハッシュ310は、第2のハッシュレベル360の第2のハッシュ308a及び第3のハッシュ308bに結合されている。マークル木300の各ハッシュは、最後のハッシュレベル(すなわち、底部ハッシュレベル380)のハッシュを除き、下部ハッシュレベルの2つの他のハッシュに結合されている。例えば、第2のハッシュ308aは、第3のハッシュレベル370の第4のハッシュ306a及び第5のハッシュ306bに結合されている。底部ハッシュレベル380の各ハッシュ304a~hは、それぞれのデータブロックA~Hの302a~302hに結合されている。
【0035】
マークル木のデータブロックの数は、各データブロックのサイズ、データの量、及びマークル木の構造に依存し得る。マークル木は、バイナリの木であるため、前述したように、より低いハッシュレベルの2つ毎のハッシュは、上記のレベルのハッシュに結合されている。例えば、マークル木に割り当てられたデータの量は、約512MBであり得、各データブロックは、128バイトのデータを記憶し得る。底部ハッシュレベルは、1000個のハッシュを有し、そこでは、各ハッシュは、データブロックに結合されている。底部ハッシュレベル上方のハッシュレベルには、500個のハッシュが存在する。上方ハッシュレベルのハッシュの数は、以前のハッシュレベルでのハッシュの数の半分である。最上位ハッシュ又は第1のハッシュは、マークル木のルート(すなわち、ルートハッシュ)と考えられ得る。マークル木のデータブロックへの書き込み動作を実行するために、データブロックのデータは、データブロックのデータ、及び関連するハッシュを読み取ること、並びに計算された最上位ハッシュを、記憶されたルートハッシュと比較することによって、検証される必要がある。データブロックのデータを検証した後、データは、更新され得、関連するハッシュもまた更新される。
【0036】
例えば、データブロックC302cの読み取りフローは、データブロックC302cのデータを読み取ることを含む。データブロックC302cを読み取った後に、第10のハッシュ304cが、データブロックC302cに基づいて計算される。第11のハッシュ304dが読み取られ、第5のハッシュ306bは、第10のハッシュ304c及び第11のハッシュ304dに基づいて計算される。第4のハッシュ306aは、読み取られ、第2のハッシュ308aは、第4のハッシュ306a及び第5のハッシュ306bに基づいて計算される。第3のハッシュ308bが読み取られ、最上位ハッシュ310は、第2のハッシュ308a及び第3のハッシュ308bに基づいて計算される。次いで、最上位ハッシュ310は、内部に記憶されたルートハッシュ値と比較される。最上位ハッシュ310が内部に記憶されたルートハッシュ値に一致する場合、データブロックC302cのデータは、有効である。そうでない場合、データブロックC302cのデータは、損なわれている。
【0037】
別の例では、新規データをデータブロックC302cに書き込むための書き込みフローは、データブロックC302cのデータを読み取ることを含む。データブロックC302cを読み取った後、第10のハッシュ304cは、データブロックC302cに基づいて計算される。第11のハッシュ304dは、読み取られ、記憶される。第5のハッシュ306bは、第10のハッシュ304c及び記憶された第11のハッシュ304dに基づいて計算される。第4のハッシュ306aは、読み取られ、記憶される。第2のハッシュ308aは、記憶された第4のハッシュ306a及び第5のハッシュ306bに基づいて計算される。第3のハッシュ308bは、読み取られ、記憶される。最上位ハッシュ310は、第2のハッシュ308a及び記憶された第3のハッシュ308bに基づいて計算される。次いで、最上位ハッシュ310は、内部に記憶されたルートハッシュ値と比較される。最上位ハッシュ310が内部に記憶されたルートハッシュ値に一致する場合、データブロックC302cのデータは、有効である。そうでない場合、データブロックC302cのデータは、損なわれている。
【0038】
データブロックC302cのデータを検証した後、新規データは、データブロックC302cに書き込まれる。新規第10のハッシュが、新規データに基づいて計算される。新規第10のハッシュは、第10のハッシュ304cノードに書き込まれる。新規第5のハッシュが、新規第10のハッシュ及び記憶された第11のハッシュ304dに基づいて計算される。記憶された第11のハッシュ304dは、解放される。新規第5のハッシュは、第5のハッシュ306bノードに書き込まれる。新規第2のハッシュが、新規第5のハッシュ及び記憶された第4のハッシュ306aに基づいて計算される。記憶された第4のハッシュ306aは、解放される。新規第2のハッシュは、第2のハッシュ308aノードに書き込まれる。新規最上位ハッシュが、新規第2のハッシュ及び記憶された第3のハッシュ308bに基づいて計算される。記憶された第3のハッシュ308bは、解放される。内部に記憶されたルートハッシュは、計算された新規最上位ハッシュを用いて更新される。
【0039】
図4は、ある特定の実施形態による、異なるホストメモリバッファ(HMB)サイズについてのマークル木のレベルの数、及び木の数を例示するテーブル400を描写する。図1のHMB140などのHMB、構成、及びサイズに基づいて、図3のマークル木300などの記憶されたマークル木は、非常に多くのハッシュレベルを有する可能性を有し得る。例えば、第1の行に示されるように、HMB140は、2,097,152個のデータエントリを有する1つの木を含む。HMBデータサイズは、約383.9MBの総HMBサイズを伴う約256MBである。稼働率は、約66.7%である。したがって、ハッシュレベルの総数は、21であり、そこでは、マークル木は、8つのリクエスト、及び912Bの、単一エントリの場合の総取り出しサイズを有する。マークル木は、木のノードの数の対数に比例するバイナリハッシュ木であるため、マークル木は、2の21乗個のノード、又は2,097,152個のデータエントリを有する。
【0040】
図5は、ある特定の実施形態による、SHAエンコーダ508及びSHAデコーダ512を含むセキュアなハッシュアルゴリズム(SHA)システム500を例示する概略ブロック図を描写する。SHAシステム500は、図1のコントローラ108などのコントローラの部分であり得る。例えば、コントローラ108は、SHAエンコーダ508及びSHAデコーダ512を含み得る。SHAシステム500は、モード設定506を含み、その場合、モード設定506は、データモードか又はハッシュモードかのいずれかである。モード設定506に基づいて、左多重装置(mux)504a及び右多重装置504bは、データ又はハッシュがSHAエンコーダ508、SHAデコーダ512、又はHMB140に転送されるかどうかを判定する。一実施形態では、モード設定506は、別個の信号を送信して、SHAエンコーダ508及びSHAデコーダ512を別個のモードで動作させ得る。
【0041】
SHAデコーダ512は、図3で説明したような読み取りフローのために構成され得、そこでは、図3のマークル木300などのマークル木のデータ及びハッシュは、復号化される。モード設定506に基づいて、SHAデコーダ512は、生データからの計算されたハッシュか、又は以前に計算されたハッシュからの計算されたハッシュかのいずれか、及びHMB140からの別の関連するHMBハッシュを生成するように構成され得る。例えば、データモードでは、計算されたハッシュは、生データ(すなわち、新規データ502)から生成される。別の例では、計算されるハッシュは、以前に計算されたハッシュ、及びHMB140からの別の関連するHMBハッシュを使用して生成される。同様に、SHAエンコーダ508は、新規データ502か又は計算されたハッシュかのいずれか、及び以前に生成された新規ハッシュから、新規ハッシュを計算するように構成され得る。SHAエンコーダ508及びSHAデコーダ512は、並列に動作して、新規ハッシュを生成及び計算し得る。
【0042】
図6は、ある特定の実施形態による、マークル木のデータを検証する方法650、及び並列に動作するマークル木にデータを書き込む方法600を例示するフロー図を描写する。方法600及び方法650は、SHAシステム500を利用し、その場合、方法600は、SHAエンコーダ508動作に関係し、方法650は、SHAデコーダ512動作に関係する。マークル木は、図3のマークル木300であり得、マークル木300は、図1のHMB140などのHMBに記憶されている。
【0043】
方法600を参照すると、書き込みフローは、ブロック602において開始する。ブロック604において、SHAエンコーダ508は、データモードに設定される。データモードは、図5のモード設定506などのモード設定によって設定され得る。ブロック606において、第1の新規ハッシュが調製されて、新規データがマークル木に書き込まれる。ブロック608ステップの前に、SHAエンコーダ508は、SHAデコーダ512から第1のトリガを受信するのを待つ。第1のトリガは、必要なHMBデータ、及びブロック656において必要とされるハッシュを読み取るSHAデコーダ512に関連付けられている。SHAエンコーダ508及びSHAデコーダ512は、HMB140上の同じデータにアクセするため、方法600は、SHAデコーダ512がHMBデータ、及び必要とされるすべてのハッシュを読み取ることを要求する。トリガは、書き込みフローを遅延させるように実施され得、その結果、競合が回避される。
【0044】
ブロック608において、図1のコントローラ108などのコントローラは、関連するHMBデータがHMB140から到達したかどうかを判定する。関連するHMBデータがブロック608において到達していない場合、SHAエンコーダ508は、関連するHMBデータを受信するのを待つ。ブロック608においてHMBデータを受信した後、新規データ及び新規ハッシュは、HMB140にプログラムされる。図3を参照すると、新規データは、データブロックC302cにプログラムされ得、新規ハッシュは、第10のハッシュ304cにプログラムされ得る。
【0045】
ブロック610において新規データ及び新規ハッシュをHMB140に書き込んだ後、ブロック612において、SHAエンコーダ508は、ハッシュモードに設定される。ブロック614ステップの前に、SHAエンコーダ508は、方法650のブロック660において計算されるハッシュを生成することに対応する第2のトリガを待つ。第2のトリガを受信した後、コントローラ108は、新規データに対応する、SHAデコーダ512からの計算されるハッシュが準備されているかどうかを判定する。計算されるハッシュが準備されていない場合、SHAエンコーダ508は、計算されるハッシュが準備されるまで、ブロック614において待つ。計算されるハッシュが準備されると、SHAエンコーダ508は、計算されるハッシュ及び新規ハッシュ(又は以前に計算された新規ハッシュ)を使用して、ブロック616において新規計算されるハッシュを計算する。
【0046】
ブロック618において、コントローラ108は、計算された新規ハッシュが最後のハッシュであるかどうかを判定する。最後のハッシュとは、図3の最上位ハッシュ310などの最上位ハッシュを指す。計算された新規ハッシュがブロック618において最後のハッシュでない場合、計算された新規ハッシュは、ブロック620においてそれぞれのハッシュ場所のHMB140に書き込まれる。計算された新規ハッシュをそれぞれのノードのHMB140に書き込んだ後、SHAエンコーダ508は、SHAデコーダ512から第3のトリガを受信するのを待つ。第3のトリガは、方法650のブロック666において生成された計算されたハッシュに関連付けられる。「第3のトリガ」という句は、2つ以上のトリガを指し得、このため、1つのトリガが、方法650のブロック666における木の深さ全体について、生成された計算されたハッシュのそれぞれに対して生成されることを理解されたい。しかしながら、ブロック616において計算された新規ハッシュがブロック618において最後のハッシュである場合、方法650のブロック670において、はいのトリガを受信すると、内部に記憶されたルートハッシュは、ブロック622において更新される。
【0047】
方法650を参照すると、書き込みフローは、ブロック652において開始する。ブロック654において、SHAデコーダ512は、「データモード」に設定される。データモードは、図5のモード設定506などのモード設定によって設定され得る。ブロック656において、HMBデータ、及び必要とされるすべてのハッシュが、読み取られる。上述したように、第1のトリガは、SHAエンコーダ508に送信されて、SHAエンコーダ508が方法600内のブロック608を実行するのを可能にする。ブロック658において、コントローラ108は、HMBデータがSHAデコーダ512に到達したかどうかを判定する。HMBデータが到達していない場合、SHAデコーダ512は、ブロック658においてHMBデータを受信するのを待つ。しかしながら、HMBデータがブロック658に到達した場合、ブロック660において、SHAデコーダ512は、HMBデータの計算されたハッシュを生成する。ブロック660において計算されたハッシュを生成した後、第2のトリガは、SHAエンコーダ508に送信されて、方法600のブロック614を実行する。ブロック662において、SHAデコーダ512は、ハッシュモードに設定される。
【0048】
ブロック664において、コントローラ108は、関連するHMBハッシュ(すなわち、図3の読み取られた第11のハッシュ304dなどの読み取られたHMBハッシュ)が到達したかどうかを判定する。関連するHMBハッシュがブロック664に到達していない場合、SHAデコーダ512は、関連するHMBハッシュを受信するのを待つ。しかしながら、関連するハッシュがブロック664に到達した場合、ブロック666において、関連するHMBハッシュ、及びブロック660において生成された計算されたハッシュを使用して、新規計算されたハッシュを生成する。ブロック666において新規計算されたハッシュを生成すると、第3のトリガは、SHAエンコーダ508に送信されて、追加の計算された新規ハッシュのために、方法600のブロック614を実行する。ブロック668において、コントローラは、新規計算されたハッシュが最後のハッシュ(すなわち、最上位ハッシュ)であるかどうかを判定する。生成された新規ハッシュがブロック668において最後のハッシュでない場合、方法650は、ブロック664に戻り、SHAデコーダ512は、別のHMBハッシュを受信するのを待つ。
【0049】
しかしながら、新規計算されたハッシュがブロック668において最後のハッシュである場合、コントローラ108は、新規計算されたハッシュが内部に記憶されたルートハッシュと同じであるかどうかを判定する。内部に記憶されたルートハッシュ、及び新規計算されたハッシュがブロック670において異なる場合、関連するデータブロックにプログラムされた新規データが損なわれた可能性があるため、HMB140への書き込みは、ブロック672において失敗している。しかしながら、新規計算されたハッシュがブロック670において内部のルートハッシュと同じである場合、はいのトリガは、SHAエンコーダ508に送信されて、ブロック622において、新規計算されたハッシュ値を用いて内部のルートハッシュを更新する。
【0050】
書き込み動作を読み取り動作と一緒に織り交ぜてホストメモリバッファに記憶されたマークル木にデータを書き込むこと、及び読み取り動作からトリガを送信して書き込み動作ステップを起動させることによって、計算されたより少ないハッシュを記憶する必要があり得、新規データをマークル木にプログラムするための時間が減少され得る。したがって、読み取り動作及び書き込み動作を実行するためのデータ記憶サイズ及び必要な電力は、セキュアなホストメモリバッファ書き込みにおける待ち時間を改善しながら、減少され得る。
【0051】
一実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、デコーダをデータモードに設定することと、ホストメモリバッファからホストメモリバッファ(HMB)データ及びハッシュを読み取ることと、第1の計算されたハッシュを生成することと、デコーダをハッシュモードに設定することと、第2の計算されたハッシュを生成することと、第2の計算されたハッシュがルートハッシュと同じであるかどうかを判定することと、を行うように構成されている。
【0052】
データモードにある間、デコーダは、すべてのデータがHMBから受信されたかどうかを判定するように構成されている。ハッシュモードにある間、デコーダは、すべてのハッシュがHMBから受信されたかどうかを判定するように構成されている。デコーダは、第2の計算されたハッシュが最後のハッシュであるかどうかを判定するように構成されている。コントローラは、最後のハッシュがルートハッシュと同じではない場合に、書き込み動作が失敗したと示すように構成されている。第1の計算されたハッシュは、HMBから読み取られたすべてのデータを受信した後に生成される。第2の、及び任意の進行中の計算されたハッシュは、HMBからハッシュ全体を受信した後に生成される。コントローラは、エンコーダをデータモードに設定し、エンコーダを用いて第1の新規ハッシュを生成し、すべてのHMBデータがデコーダに到達したかどうかを判定するように更に構成されている。コントローラは、新規データ及び第1の新規ハッシュをHMBに書き込むように更に構成されており、そこでは、書き込みは、すべてのHMBデータがデコーダに到達したと判定した後に行われる。コントローラは、第2の新規ハッシュを計算し、第2の新規ハッシュをHMBに書き込むように更に構成されており、その場合、第2の新規ハッシュは、第1のハッシュ、及び1つ以上の第2のハッシュに基づいている。第2の新規ハッシュを計算することは、デコーダが第1の計算されたハッシュ及び第2の計算されたハッシュを生成した後に行われる。ハッシュを更に計算することは、デコーダが関連する第2のハッシュを生成した後に行われることを理解されたい。コントローラは、第2の計算されたハッシュがルートハッシュと同じであると判定した後に、第2の新規ハッシュを用いてルートハッシュを更新するように構成されている。加えて、「第1」及び「第2」という用語は、互いに相対的な用語であることを理解されたい。したがって、「第2」と称される対象物が、第1の対象物の後の次の対象物を指す場合があり、また第1の対象物の後の任意の追加の対象物を指す場合もある。したがって、「第2」は、「第1」ではない任意のものを有効範囲に含むと理解される。
【0053】
別の実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、エンコーダをデータモードに設定することと、第1の新規ハッシュを生成することと、新規データ及び第1の新規ハッシュをホストメモリバッファ(HMB)に書き込むことと、エンコーダをハッシュモードに設定することと、第2の新規ハッシュを計算することと、第2の新規ハッシュを用いてルートハッシュを更新することと、を行うように構成されている。
【0054】
コントローラは、新規データ及び新規ハッシュをHMBに書き込む前に、すべてのHMBデータがデコーダに到達したかどうかを判定するように更に構成されている。コントローラは、デコーダで第2の計算されたハッシュを生成した後に、第2の新規ハッシュを計算するように更に構成されている。コントローラは、第2の新規ハッシュが最後のハッシュであるかどうかを判定するように更に構成されている。コントローラは、ルートハッシュを更新する前に、第2の新規ハッシュをHMBに書き込むように更に構成されている。
【0055】
別の実施形態では、データ記憶デバイスは、メモリ手段と、メモリ手段に結合されたコントローラと、を含む。コントローラは、ホストメモリバッファ(HMB)から読み取られたデータに基づいて、第1の計算されたハッシュを生成することと、HMBから読み取られた第1の計算されたハッシュ、及びHMBハッシュに基づいて、第2の計算されたハッシュを生成することと、第2の計算されたハッシュをルートハッシュと比較して、書き込み動作が失敗したかどうかを判定することと、を行うように構成されている。
【0056】
コントローラは、新規ハッシュを調製し、新規ハッシュに関連付けられたデータ、及び新規ハッシュをHMBに書き込み、第2の計算されたハッシュがルートハッシュに等しいと判定すると、新規ハッシュをルートハッシュに書き込むように更に構成されている。第1の計算されたハッシュを生成すること、第2の計算されたハッシュを生成すること、及び比較することは、デコーダによって実行される。データを調製し、書き込むこと、及び新規ハッシュを書き込むことは、エンコーダによって実行される。
【0057】
上記は本開示の実施形態を目的とするが、本開示の他の及び更なる実施形態が、その基本的範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。

図1
図2
図3
図4
図5
図6