(57)【要約】本明細書では、ストレージデバイスの認証修正のためのデバイス及び技術を説明する。ストレージデバイスのインタフェースで受け取ったデータ送信は、コマンド、入力識別の集合、及び入力識別によって識別されるデータに対応する第１のシグネチャを取得するために復号できる。入力識別の集合の要素は、入力集合を生成するためにマーシャリングできる。ストレージデバイスの暗号エンジンを入力集合に対して呼び出して、入力集合から第２のシグネチャを生成できる。第１のシグネチャ及び第２のシグネチャが、一致を決定するために比較される。一致に応えて、ストレージデバイスの安全な部分に入力集合を書き込むことができる。
2021517409.tif 000002
【特許請求の範囲】
【請求項１】
認証修正を実装するストレージデバイスであって、
暗号エンジンと、
インタフェースと、
コマンド、入力識別の集合、及び前記インタフェースで受け取ったデータ送信からの第１のシグネチャを解析するためのデコーダと、
入力識別の前記集合の要素を収集して入力集合を生成し、
前記暗号エンジンに、前記入力集合から第２のシグネチャを生成するように命令し、
前記第１のシグネチャ及び前記第２のシグネチャを比較して一致を決定し、
前記一致に応えて前記ストレージデバイスの安全な部分に前記入力集合を書き込むための
コントローラと
を備える、前記ストレージデバイス。
【請求項２】
入力識別の前記集合が、前記ストレージデバイスの安全ではない部分のアドレス範囲を定める、請求項１に記載のストレージデバイス。
【請求項３】
前記データ送信が、前記安全な部分の識別を含む、請求項１に記載のストレージデバイス。
【請求項４】
前記ストレージデバイスの前記安全な部分が、前記ストレージデバイスへの前記インタフェースを介して外部エンティティに対して読み出し可能である、請求項１に記載のストレージデバイス。
【請求項５】
前記コントローラが、読み出し操作に応えて前記安全な部分の第３のシグネチャを作成する、請求項４に記載のストレージデバイス。
【請求項６】
前記コントローラが、前記読み出し操作に対する参照を含む検証命令に応えて、前記外部エンティティに前記第３のシグネチャを提供する、請求項５に記載のストレージデバイス。
【請求項７】
前記データ送信が前記ストレージデバイスの秘密を識別する、請求項１に記載のストレージデバイス。
【請求項８】
前記第１のシグネチャ及び前記第２のシグネチャが、鍵付きハッシュメッセージ認証符号（ＨＭＡＣ）を含む、請求項１に記載のストレージデバイス。
【請求項９】
前記ストレージデバイスの前記インタフェースが、半導体技術協会（ＪＥＤＥＣ）のメモリ標準インタフェースである、請求項１に記載のストレージデバイス。
【請求項１０】
前記ストレージデバイスの前記インタフェースが、統合デバイスエレクトロニクス（ＩＤＥ）ＡＴアタッチメント（ＡＴＡ）インタフェース、シリアルＡＴＡ（ＳＡＴＡ）インタフェース、スモールコンピュータシステムインタフェース（ＳＣＳＩ）インタフェース、ユニバーサルフラッシュストレージ（ＵＦＳ）インタフェース、組み込みマルチメディアカード（ｅＭＭＣ）インタフェース、または不揮発性メモリホストコントローラインタフェース仕様（ＮＶＭＨＣＩ）インタフェースのうちの少なくとも１つに準拠する、請求項１に記載のストレージデバイス。
【請求項１１】
前記ストレージデバイスがフラッシュメモリデバイスである、請求項１０に記載のストレージデバイス。
【請求項１２】
ストレージデバイスの中での認証修正のためのマシン実装方法であって、
前記ストレージデバイスのインタフェースで受け取ったデータ送信を復号することであって、前記データ送信が、コマンド、入力識別の集合、及び前記入力識別によって識別されるデータに対応する第１のシグネチャを含み、前記コマンドが前記ストレージデバイスの安全な部分に対応する、前記復号することと、
入力識別の前記集合の要素をマーシャリングして入力集合を生成することと、
前記入力集合に対して前記ストレージデバイスの暗号エンジンを呼び出して、前記入力集合から第２のシグネチャを生成することと、
前記第１のシグネチャ及び前記第２のシグネチャを比較して一致を決定することと、
前記一致に応えて、前記ストレージデバイスの安全な部分に前記入力集合を書き込むことと
を含む、前記方法。
【請求項１３】
入力識別の前記集合が、前記ストレージデバイスの安全ではない部分のアドレス範囲を定める、請求項１２に記載の方法。
【請求項１４】
前記データ送信が、前記安全な部分の識別を含む、請求項１２に記載の方法。
【請求項１５】
前記ストレージデバイスの前記安全な部分が、前記ストレージデバイスへの前記インタフェースを介して外部エンティティに対して読み出し可能である、請求項１２に記載の方法。
【請求項１６】
読み出し操作に応えて、前記安全な部分の第３のシグネチャを作成することを含む、請求項１５に記載の方法。
【請求項１７】
読み出し操作に対する参照を含む検証命令に応えて、前記外部エンティティに第３のシグネチャを提供することを含む、請求項１５に記載の方法。
【請求項１８】
前記データ送信が前記ストレージデバイスの秘密を識別する、請求項１２に記載の方法。
【請求項１９】
前記第１のシグネチャ及び前記第２のシグネチャが、鍵付きハッシュメッセージ認証符号（ＨＭＡＣ）を含む、請求項１２に記載の方法。
【請求項２０】
前記ストレージデバイスの前記インタフェースが、半導体技術協会（ＪＥＤＥＣ）のメモリ標準インタフェースである、請求項１２に記載の方法。
【請求項２１】
前記ストレージデバイスの前記インタフェースが、統合デバイスエレクトロニクス（ＩＤＥ）ＡＴアタッチメント（ＡＴＡ）インタフェース、シリアルＡＴＡ（ＳＡＴＡ）インタフェース、スモールコンピュータシステムインタフェース（ＳＣＳＩ）インタフェース、ユニバーサルフラッシュストレージ（ＵＦＳ）インタフェース、組み込みマルチメディアカード（ｅＭＭＣ）インタフェース、または不揮発性メモリホストコントローラインタフェース仕様（ＮＶＭＨＣＩ）インタフェースのうちの少なくとも１つに準拠する、請求項１２に記載の方法。
【請求項２２】
前記ストレージデバイスがフラッシュメモリデバイスである、請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権出願］
本願は、参照によりその全体が本明細書に組み込まれる、２０１８年３月２３日に出願された米国特許出願第６２／６４７，３９０号に対する優先権の利益を主張するものである。
【０００２】
本明細書に説明する実施形態は、概してコンピュータストレージデバイスに関し、より詳細にはストレージデバイスの認証修正に関する。
【背景技術】
【０００３】
ストレージデバイスは、データを格納するように設計されたコンピュータハードウェアである。ストレージデバイスは、メモリ、マスストレージなどとして知られる場合がある。ストレージデバイスは、一般にデータ（例えば、ビット、バイト、ブロックなど）コントローラハードウェアを保持するための媒体と、データを問い合わせることを容易にし、書き込み可能なストレージデバイスにおいてデータを書き込むためのインタフェースとを含む。
【０００４】
必ずしも縮尺通りに描かれない図面では、同様の数字が異なる図の同様の構成要素を説明する場合がある。異なる文字接尾辞を有する同様の数字は、同様の構成要素の別の例を表す場合がある。図面は、一般に、限定としてではなく例として、本書に説明する様々な実施形態を示す。
【図面の簡単な説明】
【０００５】
【図１】一実施形態による、ストレージデバイスでの認証修正操作のためのシステムを含む環境の例のブロック図である。
【図２】一実施形態による、認証修正を実行するためのストレージデバイスへのメッセージの例を示す。
【図３】一実施形態による、ストレージデバイスによるハッシュの生成を呼び出すためのストレージデバイスへのメッセージの例を示す。
【図４】一実施形態による、認証修正操作の成功に応えて、ストレージデバイス上の保護されていない不揮発性のバッファから保護された不揮発性の場所に移動するブロックを示す。
【図５】一実施形態による、認証修正を実行するためのストレージデバイス内での構成要素のメッセージングの例を示すスイムレーン図である。
【図６】一実施形態による、ハッシュを生成するためのストレージデバイス内での構成要素のメッセージングの例を示すスイムレーン図である。
【図７】一実施形態による、多元的な知的エージェント制御のための方法の例の流れ図を示す。
【図８】マシンの上でまたはそれを用いて１つ以上の実施形態を実装できるマシンの例を示すブロック図である。
【発明を実施するための形態】
【０００６】
多くの製造品（とりわけ車両のコンピュータ化された制御システム、コンピュータ化された（例えば、スマート）電化製品またはセンサ（例えば、モノのインターネット（ＩｏＴ）デバイス）など）のコンピュータ化が一段と進む中、現在ストレージデバイスは、従来はコンピュータであるとは考えられていなかった多くの商品に含まれている。これらの商品のコンピュータ化は、時間の経過とともに行われる場合があり、変更するのが困難な場合がある。例えば、自動車コントローラエリアネットワーク（ＣＡＮ）バスは、様々なコントローラの結合を可能にするための車両通信規格である。しかしながら、車両の寿命は延びる場合があるので、これらのシステムは、修理が非常に困難または費用がかかる、標準化の時点では未知であった脆弱性または弱点を有する場合がある。さらに、１つの規格を実施するために多くの高価な製造プロセスが作成される場合があり、新しい車両でさえ、例えばいろいろなベンダのコントローラとの互換性を維持するために旧式のまたは安全ではない規格を含む場合がある。
【０００７】
すべてのコンピューティングプラットフォームにおいて、ユーザー、データ、または実行可能プログラムに関するセキュリティの懸念が概して広まっている。上述した製造品に含まれるシステムなどの組み込みシステムは通常柔軟ではないため、組み込みシステムのセキュリティは、多くの場合、より一般的なコンピューティングデバイスのセキュリティに遅れをとっている。しかしながら、一般的なコンピューティングデバイスにおいてさえも、追加のセキュリティハードウェアを含めるために新しいホストボード（マザーボード）を設計するには、桁違いの費用がかかる場合がある。必要とされるのは、他のハードウェア構成要素を修正することなく、他の一般的なコンピューティング構成要素または組み込みコンピュータシステムとインタフェースをとることができるセキュリティが強化されたハードウェアである。
【０００８】
上述した問題に対処するために、ストレージデバイスは、暗号エンジン（例えば、ハッシュエンジン）などの暗号構成要素を含むように修正される。また、ストレージデバイスは、暗号エンジンによって実行されるいくつかの暗号操作を呼び出すために外部エンティティ（例えば、プロセッサ、デバイスなど）から追加のコマンドを受け入れるために強化される。追加のコマンドは、データ読み出しまたは書き込みなど、外部エンティティがストレージデバイスに提供する他のコマンドと同様に動作する。したがって、ストレージデバイスの、システムへのハードウェアインタフェースは変わらないままであり、修正することなくストレージデバイスを既存のシステムに含めることを可能にする。しかしながら、暗号操作コマンドを呼び出し、このようにしてストレージデバイスの暗号構成要素の利点を得るために、既存のシステムのソフトウェアを修正することができる。この構成により、組み込みシステムを含むシステムの暗号強化が、これらのシステムの製造プロセスを再設計することなく可能になる。
【０００９】
１つのこのような暗号コマンドは、ブロック（またはページなどの他のストレージ手段）のロック解除を含む。ここで、ストレージのブロックは、例えば、ストレージデバイスの電源投入時、再起動時、またはコマンドへの応答時にロックされる場合がある。ブロックをロック解除するために、ホスト（または他のエンティティ）は、ロック解除コマンドとともに暗号ハッシュを含む。暗号ハッシュは（ストレージデバイスに対する呼び出し元のより早期の認証中に、または呼び出し元の構成を介して達成され、呼び出し元に認証を与える）ストレージデバイスからの秘密を含む場合がある。その結果、呼び出し元は、ロック解除されたブロックに書き込むことができる。この手順は、一般的に、ブロックを不正な書き込みから保護し、したがって操作パラメータなどの重大な情報を格納するために使用され得る。しかしながら、ブロックがロック解除され、不正な書き込み者が、ブロックがロック解除されている間に書き込みを実行する競合状態が存在する場合がある。
【００１０】
安全な書き込みのために競合状態に対処するため、ブロックのロック解除するためにコマンドシグネチャに頼る代わりに、または頼ることに加えて、書き込まれているデータ自体に署名することができる。ここで、呼び出し元（例えば、書き込みを実行しているエンティティ）は、ストレージデバイスの保護されていない部分の上にデータをバッファリングできる。ストレージデバイスが十分な揮発性メモリキャッシュを有する場合、データはそこでバッファリングされ得るが、ＮＯＲフラッシュデバイスなどの多くのストレージデバイスは限られた揮発性メモリキャッシュを有する。したがって、データは、ストレージデバイスの不揮発性ストレージの保護されていない部分の中にバッファリングされる。次いで、呼び出し元は、ａｕｔｈ＿ｍｏｄｉｆｙと呼ばれる場合がある、ストレージデバイスの安全な部分にデータを格納するコマンドを開始する。コマンドは、データの識別（例えば、データがバッファリングされる保護されていないストレージのアドレス範囲）、及び呼び出し元が計算するデータのシグネチャを含む。ストレージデバイスは、その暗号エンジンを使用してデータの独自のシグネチャを計算し、２つのシグネチャを比較する。シグネチャが一致すると、データは安全な部分に移動される。シグネチャが一致しない場合、次いでａｕｔｈ＿ｍｏｄｉｆｙコマンドは失敗する。安全な部分は、ストレージデバイスの中で構成される。この構成の部分は、標準的なプログラミング（例えば、書き込みまたは更新）コマンドを、安全な部分に向けられるときに失敗させることを含む。一例では、読み出しコマンドは正常に動作する。このようにして、いずれのエンティティも安全な部分でデータを読み出すことができる。一例では、ストレージデバイスは、読み出しとともに、または読み出しと対にされた安全な部分の中でデータのシグネチャを提供できる。したがって、読み出しエンティティは、ストレージデバイスと読み出しエンティティとの間で重大なデータを修正する他のエンティティ（例えば、「中間者」）がいないことを検証できる。追加の例及び詳細を以下に説明する。
【００１１】
図１は、一実施形態による、ストレージデバイスでの認証修正操作のためのシステム（例えば、ストレージデバイス１０５またはその中の構成要素）を含む環境１００の例のブロック図である。環境１００は、製造品１４５の中に組み込まれたシステム１４０を含む。製造品１４５は、無人車両を含む（図示したような）車両、電化製品、家具、構造物、センサ、衣服、またはシステム１４０を含める（例えば、組み込む）ことができる他の品目などの様々なものを含む場合がある。「スマート」品目を作成する、または通信機能を、多くの電化製品（例えば、冷蔵庫、洗濯機など）またはセンサなどのそのような機能なしに以前は動作していた商品に付け加える最近の傾向は、ＩｏＴを作成すること、関与する商品がＩｏＴデバイスに変換されることと呼ばれる場合がある。
【００１２】
システム１４０は、システム１４０にとっては外部である製造品１４５の１つ以上の構成要素と通信するためのインタフェースを含む場合がある。例えば、システム１４０が車載エンターテインメントシステムである場合、インタフェースは、システム１４０がスピーカを制御できるようにし、ユーザーのデバイス（例えば、電話、個人用ミュージックプレーヤー、タブレットなど）からコンテンツを受け取ることを可能にできる。また、システム１４０は、１つ以上のプロセッサ（例えば、中央処理装置、低電力プロセッサ、デジタルシグナルプロセッサ、グラフィックスプロセッシングユニットなど）を含む場合もあり、１つ以上のストレージデバイス（例えば、マスストレージ、メモリ、スタティックメモリ）はストレージデバイス１０５を含む。
【００１３】
ストレージデバイス１０５は、インタフェース１１０、デコーダ１１５、コントローラ１２０、暗号エンジン１２５、及びストレージ部１３０を含む。一例では、ストレージデバイス１０５及びその中の構成要素は、単一のチップ上に製造される。一例では、ストレージデバイス１０５は、（例えば、１つ以上のレジスタを含む）レジスタバンク１３５を含む。ストレージデバイス１０５のこれらの構成要素のすべては、コンピュータハードウェア（例えば、処理回路網）の中に実装される。
【００１４】
インタフェース１１０は、ストレージデバイス１０５とシステム１４０の他の構成要素との間にハードウェア通信媒体を提供する。一例では、インタフェース１１０は、半導体技術協会（ＪＥＤＥＣ）のメモリ標準インタフェースである。一例では、ストレージデバイス１０５は、ランダムアクセスメモリ（ＲＡＭ）デバイスである。一例では、インタフェース１１０は、統合デバイスエレクトロニクス（ＩＤＥ）ＡＴアタッチメント（ＡＴＡ）インタフェース、シリアルＡＴＡ（ＳＡＴＡ）インタフェース、スモールコンピュータシステムインタフェース（ＳＣＳＩ）インタフェース、ユニバーサルフラッシュストレージ（ＵＦＳ）インタフェース、組み込みマルチメディアカード（ｅＭＭＣ）インタフェース、または不揮発性メモリホストコントローラインタフェース仕様（ＮＶＭＨＣＩ）インタフェースのうちの少なくとも１つに準拠する。一例では、ストレージデバイス１０５は、フラッシュメモリデバイスである。一例では、ストレージデバイス１０５は、ＮＯＲフラッシュまたはＮＡＮＤフラッシュのうちの少なくとも１つである（例えば、ストレージ部１３０は、ＮＯＲフラッシュまたはＮＡＮＤフラッシュである）。一例では、ストレージデバイス１０５は、ハードディスクドライブ（ＨＤＤ）である。
【００１５】
デコーダ１１５は、コマンド、入力識別の集合、及びインタフェース１１０で受け取ったデータ送信からのシグネチャを解析するように構成される。ここで、コマンドは、Ａｕｔｈ＿Ｍｏｄｉｆｙまたはａｕｔｈ＿ｍｏｄｉｆｙコマンドとしても知られる認証修正コマンドである。一例では、デコーダ１１５は、ストレージデバイス１０５に対する読み出しコマンドまたは書き込みコマンドなどの他のコマンドを復号するように構成される。一例では、デコーダ１１５は、コントローラ１２０の一部である（例えば、その中に統合される）。
【００１６】
一例では、コマンドは、ハッシュ演算などの暗号操作に相当する。ハッシュ演算は、入力データを受け入れ、出力として入力データのハッシュを生成する。通常、ハッシュは任意のサイズのデータを固定サイズにマッピングする。必須ではないが、異なる入力データがハッシュから異なる出力を生成することが一般的に望ましい。２つの異なる入力データが同じ出力を生成するとき、それは衝突と呼ばれる。暗号ハッシュは、一方向であるという点で他のハッシュとは異なる場合がある。すなわち、単にハッシュの出力から入力データを生成することは困難である。
【００１７】
一例では、ハッシュ演算は、鍵付きハッシュメッセージ認証符号（ＨＭＡＣ）である。ＨＭＡＣは、鍵が他のデータと結合されてハッシュを生成するメッセージ認証符号（ＭＡＣ）である。ＨＭＡＣは、メッセージ（例えば、他のデータ）のデータ完全性と真正性の一方または両方を検証するために使用できる。一例では、データ送信は秘密を含む。ここで、秘密は、ＨＭＡＣのための鍵として使用される。一例では、データ送信は、ストレージデバイス１０５の現在のセッション鍵を含む。この例では、ストレージデバイス１０５は、以前に外部エンティティとの暗号化された通信に入れられたことがある。これらの通信を確立することの一環として、セッション鍵が、ストレージデバイス１０５と外部エンティティとの間で確立された場合がある。ストレージデバイス１０５は、いくつかの通信の間または設定された期間、同じセッション鍵またはセッション鍵の派生物を維持することができる。一例では、ストレージデバイス１０５は、毎回電源を入れ直される（例えば、再起動される、電源投入されるなど）たびに、新しいセッション鍵を使用できる。ストレージデバイス１０５は、レジスタバンク１３５（もしくは他の内部メモリ）の中にまたはストレージ部１３０の保護された部分の中になど、内部にセッション鍵を維持できる。
【００１８】
一例では、入力識別の集合の要素は、ストレージ部１３０またはレジスタバンク１３５などのストレージデバイス１０５の保護されていない部分のアドレスである。一例では、外部エンティティは、ストレージデバイス１０５へのインタフェース１１０を介してストレージデバイス１０５の保護されていない部分にアクセスできる。したがって、例えば、フラッシュデバイスの典型的な操作では、外部エンティティが、インタフェース１１０を介して作られるコマンドを介してストレージデバイス１０５から読み出し、ストレージデバイス１０５に書き込むデータを保持するために、ストレージ部１３０が使用される。対照的に、これらの外部エンティティは、一般的には、インタフェース１１０を介してレジスタバンク１３５にアクセスできないであろうが、レジスタバンク１３５は、むしろ内部の目的のためにコントローラ１２０（またはストレージデバイス１０５の他の部分）によって使用されるであろう。一例では、ＮＡＮＤフラッシュデバイスまたはハードディスクドライブなど、ストレージデバイスの保護されていない部分は、ブロックアドレス指定可能である。
【００１９】
一例では、ストレージデバイス１０５の保護されていない部分は、バイトアドレス指定可能である。限定的ではないが、一般的には、バイトアドレス指定可能ストレージは、プロセッサによる消費の直前にデータを格納するために使用される。したがって、データは、プロセッサによって操作される前に、非バイトアドレス指定可能ストレージ（例えば、ブロックアドレス指定可能ストレージ）からバイトアドレス指定可能ストレージに取り出される場合がある。例示的なバイトアドレス指定可能媒体は、レジスタ、ＲＡＭの種類（例えば、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）など）、コアメモリ、ＮＯＲフラッシュなどを含む場合がある。一例では、ストレージデバイス１０５の保護されていない部分は（例えば、レジスタバンク１３５の中の）レジスタである。一例では、ストレージデバイス１０５の保護されていない部分は、ＮＯＲフラッシュなどの不揮発性記憶媒体である。一例では、外部エンティティは、ストレージデバイス１０５へのインタフェースを介して、レジスタバンク１３５などのストレージデバイス１０５の保護されていない部分にアクセスできない。
【００２０】
一例では、入力識別の集合は、ストレージデバイス１０５の保護されていない部分のアドレス範囲を定める。例えば、入力識別の集合は、例えばフラッシュデバイスまたはハードディスクのストレージ部１３０の中のストレージブロックのリストである場合がある。入力識別の集合は、ＲＡＭであるストレージ部１３０の中のバイトアドレス指定可能アドレスの集合である場合がある。一例では、入力識別の集合の２つの要素がアドレス範囲を定める。この例は、例えば、シグナリングオーバーヘッドを低減するために、ストレージ部１３０の隣接部分の識別を可能にする。一例では、２つの要素のうちの第１の要素が範囲の開始を定め、２つの要素のうちの第２の要素が範囲の終了を定める。一例では、２つの要素のうちの第１の要素は、範囲の開始を定め、２つの要素のうちの第２の要素は、範囲に含めるユニットの数を定める。
【００２１】
一例では、入力識別の集合の要素は、データ送信の一部分を識別する。上記に対し、入力識別は、ストレージデバイス１０５によってすでに管理されているデータを注記し、ここでは、コマンドには、ストレージデバイス１０５によってまだ管理されていない追加のデータが付随する場合がある。一例では、データ送信の一部分はフィールドによって識別される。一例では、データ送信の一部分はオフセットによって識別される。一例では、データ送信の一部分は長さによっても識別される。このように、これらの最後のいくつかを例として、送信の中の新しいデータは、いろいろな技術を使用して追加のデータを指定できる。
【００２２】
コントローラ１２０は、入力識別の集合の要素を収集して入力集合を生成するように構成される。集合体は、入力識別の集合の中のアドレスに対応するデータを取り出すこと、または入力集合の中に含むために送信からデータ（例えば、秘密）を取得する（例えば、取り出すまたは受け取る）ことを含む場合がある。この収集により、ストレージデバイス１０５の中で以前に管理されていた（例えば、格納されていた）データを認証修正操作または他の暗号操作に使用できるようになる。したがって、入力集合は、データに対する参照よりむしろ、データを含む。
【００２３】
コントローラ１２０は、暗号エンジン１２５に入力集合のシグネチャを生成するよう命令するように構成される。一例では、シグネチャは、少なくとも入力集合の暗号ハッシュである。一例では、暗号ハッシュは、シグネチャがＨＭＡＣであるように、ストレージデバイスのセッション鍵などの秘密のハッシュでもある。
【００２４】
コントローラ１２０は、デコーダ１１５によってインタフェース１１０でデータ送信から復号されたシグネチャを、入力データ集合からの暗号エンジン１２５によって作成されたシグネチャと比較するように構成される。シグネチャはデータから容易に計算可能であるが、異なるデータから同じシグネチャを生成することはきわめて困難であるため、データ送信でストレージデバイスの保護されていない部分１３０にデータを書き込んだエンティティによって提供されたシグネチャは、それが修正されていない限り、入力されたデータセット（例えば、保護されていない部分１３０に書き込まれたデータ）のシグネチャに一致する必要がある。したがって、コントローラ１２０は、シグネチャが一致するかどうかを判断するために２つのシグネチャを比較するように構成される。シグネチャが一致しない場合、入力集合の中のデータは、外部エンティティが期待したものではなく、したがって悪意をもってまたは誤って修正される場合がある。一例では、認証修正コマンドは、シグネチャが一致しないときは単に失敗するだけである。一例では、コントローラ１２０は、シグネチャの不一致に応えて、保護されていないストレージ部から入力データセットを消去する。
【００２５】
シグネチャが一致すると、次いで入力集合のデータは、ストレージデバイス１０５の安全な部分に移動される。一例では、安全な部分は、ストレージセグメント（例えば、ページ、ブロックなど）のビットマップまたは保護されているストレージ部をマーキングする他のデータ構造を介して管理される。一例では、レガシー書き込みコマンドは、保護された部分を含むときに失敗し、そのため認証修正コマンドだけが、保護された部分を修正するためにコントローラ１２０によってサポートされる。一例では、レガシー消去コマンドは、保護された部分ではサポートされず、したがって認証修正コマンドの消去変形だけが、安全な部分を消去するためにサポートされる。一例では、安全な部分を消去するための認証修正コマンド変形は、データ送信でシグネチャを含んでいない。むしろ、このコマンドの変形は、安全な部分を消去するために、ＨＭＡＣまたはデータで送信された他の秘密を使用する。
【００２６】
認証修正コマンドは、ストレージデバイス１０５の保護された部分に対しては許可された書き込みだけしか発生しないことを保証するが、認証修正コマンドは保護された部分の読み出しには影響を及ぼさない。例えば、（自動車では一般的なコントローラエリアネットワーク（ＣＡＮ）バスなどの）保護されていないバス上で発生する場合がある中間者攻撃に対処するために、コントローラ１２０は、データが読み出されるときにデータに加えてデータのシグネチャ、つまりハッシュを提供できる。ここで、受取者（例えば、システム１４０）は、システム１４０がストレージデバイス１０５から受け取ったデータから引き出したシグネチャを、ストレージデバイス１５０によって提供されたシグネチャと比較できる。再び、シグネチャが一致する場合、データは破損していない。この活動をサポートするために、一例では、コントローラ１２０は、暗号エンジン１２５に入力集合からハッシュ積を生成するよう命令するようにも構成される。ハッシュ積は、入力集合データの少なくとも１つのハッシュである。上述のように、ハッシュ積はＨＭＡＣである場合がある。この例では、暗号エンジン１２５は、暗号ハッシュを実装するように構成される。一例では、暗号ハッシュは、セキュアハッシュアルゴリズム（ＳＨＡ）である。一例では、暗号エンジン１２５は、２５６ビットのハッシュを生成するように構成される。
【００２７】
一例では、コントローラ１２０は、出力識別に対応するストレージデバイス１０５の一部分（例えば、ストレージ部１３０）の中にハッシュ積を書き込むようにも構成される。これにより、ストレージデバイスが、すでに管理しているデータを使用する、ハッシュ積を作成する、及びそのハッシュ積自体を格納する能力が達成される。したがって、外部エンティティは、それ以外の場合データを格納するときに通常書き込むように、ハッシュされるデータをストレージデバイス１０５に書き込むことができる。次いで、外部エンティティはコマンドを介してハッシュ演算を呼び出し、結果についてストレージデバイス１０５にとって内部の応答を指定することができる。次いで、外部エンティティは、それ以外の場合、読み出しコマンドによってなど、ストレージデバイスからデータを取り出す場合と同様にハッシュ積を取り出すことができる。
【００２８】
この構成は、いくつかの利点を提供する。例えば、インタフェース１１０は、ストレージデバイスのタイプについて、他のインタフェース規格またはタイプに準拠しているため、ストレージデバイス１０５は、同じタイプのストレージデバイスを受け入れるように構成されたシステム１４０に加えることができる。さらに、認証修正コマンド構造（例えば、保護されていないデータを書き込む、認証修正要求で書き込まれたデータのシグネチャを提供する、及び保護されていないデータの安全な場所へのアトミック・コンペア・アンド・コピー）は、プログラマが安全な書き込みを実施するための的確かつ簡単な方法を提供する。さらに、データの書き込み及びハッシュ積の読み出しは、他のストレージデバイスによく知られている方法で起こるため、書き込み、ハッシュ、読み出しの命令サイクルは、プログラマに使いやすく、柔軟なハッシュ機能を提供する。このようにして、相手先商標製品の製造会社に追加の製造費用をかけずに、ＨＭＡＣメッセージングまたは他のアップグレードなどのセキュリティ機能を既存のシステムに追加できるため、さらに製造品の中にシステムが浸透することになる。
【００２９】
図２〜図３は、ストレージデバイスへのメッセージ３００の例を示す。ここで説明するメッセージフォーマットは、非限定的な例である。メッセージの部分は、フィールド（例えば、拡張マークアップ言語（ＸＭＬ）などのマークアップ言語中のタグ）によって、または慣例（例えば、最初の８ビットがコマンドを指定し、２番目の８ビットが入力ヘッダを指定するなど）によって示すことができる。さらに、メッセージは、部分（例えば、コマンド、入力ヘッダ、入力アドレス、及び出力アドレス）の特定の順序で示されるが、変形物は、これらの構成要素の再配列（例えば、入力ヘッダなし、出力アドレス、入力アドレス、次いでコマンド）を含む場合がある。
【００３０】
図２は、一実施形態による、認証修正を実行するためのストレージデバイスへのメッセージ２００の例を示す。メッセージ２００は、コマンド部分２０５、入力ヘッダ２１０、入力アドレス部分２１５、及びシグネチャ部分２２０を含む。シグネチャ部分以外の様々な部分は、メッセージ３００に関して以下に説明するように動作する。
【００３１】
シグネチャ部分は、コマンド部分２０５で指定された認証修正コマンドに対応するデータのシグネチャを保持する。一例では、シグネチャ部分は、ストレージデバイスの中のシグネチャに対する参照（例えば、アドレス）である。一例では、シグネチャ部分は、データのＨＭＡＣを含む。
【００３２】
図３は、一実施形態による、ハッシュ演算を呼び出すためのストレージデバイスへのメッセージ３００の例を示す。メッセージ３００は、４つの部分、つまりコマンド部分３０５、入力ヘッダ３１０、入力アドレス部分３１５、及び出力アドレス３２０を含む。一例では、コマンド部分３０５は、ストレージデバイスへの標準インタフェースに従って、配置され、サイズが決められる。例えば、ストレージデバイスのインタフェースがＳＣＳＩである場合、最初の８ビットバイトがコマンド部分３０５である。入力ヘッダ３１０は任意選択であり、入力アドレス部分３１５の中のデータのタイプを記述するために使用できる。例えば、入力アドレス部分３１５が、２つのアドレスのためのサイズである場合、入力ヘッダ３１０は、入力アドレス部分３１５を、２つの異なるアドレスとして処理するべきか、それとも範囲（例えば、開始アドレス及び終了アドレスまたは開始アドレス及び範囲）として処理するべきかを指定できる。出力アドレス３２０は、上述のように、暗号エンジンがコマンド部分３０５からのコマンドのハッシュ演算を実行するときに生成されるハッシュ積の宛先を指定する。
【００３３】
一例では、メッセージ３００は、秘密部分を含む。秘密部分は、ＨＭＡＣに対する鍵として使用できる秘密を保持する。ここで、秘密は鍵の実際の値である。一例では、メッセージ３００は、秘密アドレス部分も含む。秘密アドレス部分は、内部ＮＡＮＤまたはＮＯＲフラッシュブロック、レジスタ、メモリなどのストレージデバイス内のアドレス指定可能な場所に対するアドレスを保持し、秘密アドレス部分を使用すると、特定のストレージインタフェース規格の所与の制約が可能にし得るよりも大きい秘密の使用が可能になる。外部エンティティは、以前の操作でストレージデバイスの１つ以上のブロックに秘密を書き込み、次いで秘密アドレス部分を介して秘密を参照できる。一例では、メッセージ３００は、秘密コマンド部分も含む。秘密コマンド部分は、秘密を取得する方法を指定するストレージデバイスに対する指令を含む。指令の例は、ストレージデバイスの現在のセッション鍵を取り出すこと、または診断構成要素を使用し、ストレージデバイスの品質を測定することを含む場合がある。秘密コマンドは、これまで以上に高度なストレージハードウェアを利用するための追加の柔軟性も提供する。秘密保持領域（例えば、秘密部分、秘密アドレス、または秘密コマンド部分）は入力アドレス部分（例えば、３１５）とは別個である場合があるが、秘密保持領域を、入力アドレス部分に含め、例えば入力ヘッダの中で指定することもできる。
【００３４】
図４は、一実施形態による、認証修正操作の成功に応えて、ストレージデバイス上の保護されていない不揮発性バッファから、保護されている不揮発性の場所に移動するブロックを示す。
【００３５】
上述したように、認証修正コマンドは、ブロックに存在する特定の脆弱性が安全な書き込み技術をロックするのを防ぐ。リプレイ保護メモリブロック（ＲＰＭＢ）として知られる、いくつかのメモリデバイスで使用される別の技術は、読み出し及び書き込みごとに認証を使用し、やはり安全な書き込みを促進する。しかしながら、ＲＰＭＢは、ストレージデバイスへのデータ書き込みとともに認証を実行するために書き込み部分全体をバッファリングできないデバイスには適していない。ただし、本明細書で説明する認証修正は、保護されていない書き込みの後に、保護されていないデータのアトミック検証、及び保護されていない領域から保護された領域への書き込み（例えばコピー）が続くことを可能にすることによってＲＰＭＢの問題を解決する。
【００３６】
ストレージデバイスの安全な領域または部分は、メタデータ、またはストレージデバイスの制御レジスタの中に画定される。これが、ユーザー（例えば、カスタマ）が（例えば、ビットマップ、パーティションなどを介して）指定し、１つ以上の消去ブロックが認証修正（例えば、Ａｕｔｈ＿Ｍｏｄｉｆｙ）コマンドによってだけ修正可能であると判断するための信頼される方法を定義する。一例では、認証修正コマンドのシグネチャは、ＨＭＡＣレガシープログラムである／消去は、既存のフラッシュコンテンツのこれらのブロックのシグネチャに対してはもはや機能せず、次いでフラッシュの中の保護された位置にシグネチャを移動できるようにする。無事に実行されると、新しいコンテンツが単一のフラッシュコマンド内でアトミックに書き込まれる。
【００３７】
例えば、０〜２５６ブロック（例えば、全アレイ６４キロバイトブロックまでブロックなし）がそれぞれ「認証修正」（ＡＭ）となるように構成するためのユーザー制御。ブロック構成及びステータスは、ＣＲＴＭ＿Ｒｅｇｉｓｔｅｒ＿Ｗｒｉｔｅコマンド及びＣＲＴＭ＿Ｒｅｇｉｓｔｅｒ＿ＲｅａｄコマンドなどのＨＭＡＣで署名されたコマンドだけに制限できる。レガシープログラム操作及び消去操作は、ＡＭブロックの場合失敗するものとする。したがって、ＡＭブロックを修正する唯一の方法は（任意のアレイ場所（例えば、「フラッシュバッファ」）から任意のＡＭブロックへフラッシュコンテンツをコピーするなど）Ａｕｔｈ＿Ｍｏｄｉｆｙコマンドを通してである。
【００３８】
一例では、認証修正コマンドは、いくつかのオプションを有する場合がある。例えば、コマンドオプションゼロは、消去するＡＭブロックの基本アドレスを指定する安全な消去コマンドを含む場合がある。一例では、消去中断／再開機能は、このコマンドに対してまたはＡＭブロックに対してサポートされていない。このコマンドオプションは、例えばホストが、ＡＭブロックプールを有する記憶領域を安全に解放することを可能にする。
【００３９】
別の例のコマンドオプションは、１つのアレイ場所からＡＭブロックに既存のフラッシュコンテンツをコピーすることを含む。一例では、コピーは、２５６バイトの最小粒度を有する。一例では、コマンドはアドレスの位置合わせを必要とする。一例では、コマンドは、６４キロバイトの最大粒度を有する。一例では、消去中断／再開機能は、このコマンドに対してまたはＡＭブロックに対してサポートされていない。
【００４０】
ホスト、またはストレージデバイスインタフェースに対するアクセスを有する他のエンティティは、いくつかの方法で認証修正を使用できる。例えば、ホストは、ＡＭ保護（ＡＭブロックプール）のためにブロックを割り当てるためにＣＲＴＭ＿Ｒｅｇｉｓｔｅｒ＿Ｗｒｉｔｅ、またはＡＭ保護されたブロックの認証保護ステータスを読み出すためにＣＲＴＭ＿Ｒｅｇｉｓｔｅｒ＿Ｒｅａｄを使用できる。ＡＭ空間が所望される場合、ホストはＡｕｔｈ＿Ｍｏｄｉｆｙコマンドオプションゼロを呼び出してＡＭブロックを消去できる。一例では、ホストは、Ａｕｔｈ＿Ｍｏｄｉｆｙのコマンド１を使用してＡＭブロックにコンテンツを加えることができる。一例では、データのコピーは、保護されていない（例えば、非ＡＭ）から、または保護されている（例えば、ＡＭ）ブロックから保護されているブロックである場合がある。一例では、アンチリプレイ保護は、ストレージデバイスのモノトニックカウンタによって提供される。一例では、ストレージデバイスの鍵の関連付けは、ストレージデバイスのパワーサイクルごとに交換可能なルート鍵及びセッション鍵である。
【００４１】
動作中、図４に示すように、ストレージデバイス４０５は、ストレージデバイス４０５の保護されていない部分（例えば、フラッシュバッファ）の中のデータ４１０及び４１５で開始する。認証修正コマンドの後、データは、ストレージデバイス保護された部分（例えば、ＡＭ部分）に移動される。保護されていない部分の中のデータがコピーの一部として消去されるかどうかは任意選択であることに留意されたい。例えば、データ４１０は保護されていない部分から消去されない。一方、データ４１５は消去される。
【００４２】
図５は、一実施形態による、認証修正を実行するためのストレージデバイス内の構成要素のメッセージング５００の例を示すスイムレーン図である。ストレージデバイスがデータ送信を受け取った後、データ送信は、デコーダによって復号され、コントローラに送信される（メッセージ５０５）。これに関連して、復号されたコマンドは認証修正コマンドであり、これは、コマンドの対象となるデータのためのシグネチャに含まれるおかげで、レガシー、つまり標準的な書き込みコマンドまたはプログラムコマンドとは異なる。ＲＰＭＢなどとは対照的に、シグネチャの作成元のデータは、ストレージデバイスへのデータ送信の一部ではない。むしろ、データは以前にレガシー書き込みを介してストレージデバイスの上に格納されていた。
【００４３】
また、復号された送信は、コマンドのイニシエータ（例えば、ホスト）によって以前に格納されていたデータの識別も含んでいた。コントローラは、ストレージデバイスのストレージから入力集合を要求する（メッセージ５１０）及び受け取る（メッセージ５１５）ためにこの認証を使用する。コントローラは、次いで、ストレージデバイスの暗号エンジンが入力集合のシグネチャを生成することを要求する（メッセージ５２０）。一例では、コントローラは、実際にはストレージ部からは入力集合を受け取らず、むしろ入力集合のデータに暗号エンジンを向け、暗号エンジンは、データ自体を読み出してシグネチャを生成する。完了すると、暗号エンジンはコントローラに入力集合のシグネチャを返す（メッセージ５２５）。
【００４４】
コントローラは、次いでデータ送信で受け取ったシグネチャを、暗号エンジンによって提供されたシグネチャと比較する（操作５３０）。シグネチャが一致する場合、次いで最初に要求者によって書き込まれたデータは修正されておらず、データはストレージデバイスのストレージ部の安全な部分（例えば、ＡＭ構成ブロックまたはパーティション）に書き込まれている（メッセージ５３５）。それ以外の場合、シグネチャが一致しない場合、入力集合で指定されたデータは、（例えば、それが悪意をもってまたは誤って変更されていたため）要求者が期待するものに一致せず、認証修正操作は失敗する。
【００４５】
一例では、データ送信自体を、上述のメッセージ３００によってサポートされた操作などのハッシュ演算を介して保護することができる。一例では、安全な部分から読み出されたデータは、構成要素のメッセージング６００で以下に説明するように、読み出しに応えてデータのハッシュシグネチャを提供することによって検証できる（ストレージ部と読み出しエンティティとの間でのデータの修正に対する対策）。
【００４６】
図６は、一実施形態による、ハッシュを生成するためのストレージデバイス内の構成要素のメッセージング６００の例を示すスイムレーン図である。送信がストレージデバイスへのインタフェースで受け取られた後、デコーダは、メッセージの中のコマンドを復号する（操作６０５）。コントローラは、次いでストレージ部から入力識別の集合に対応するデータを要求する（操作６１０）ことによって入力識別の集合からデータをマーシャリングし、ストレージ部によって提供される入力集合データを受け取ることができる（操作６１５）。
【００４７】
入力集合がマーシャリングされると、コントローラは入力集合に対してコマンドのハッシュ演算を呼び出す（操作６２０）。任意選択で、コントローラは、ハッシュ演算呼び出しの一部として暗号エンジンに鍵を提供できる（操作６２５）。暗号エンジンは、次いで、コントローラにハッシュ結果（例えば、ハッシュ積）を返す（操作６３０）。コントローラは、次いで、入力メッセージで指定されるストレージ部（例えば、出力アドレス）にハッシュ結果を格納する（操作６３５）。
【００４８】
図７は、一実施形態による、多元的な知的エージェント制御のための方法７００の例の流れ図を示す。方法７００の操作は、図１に関して上記に、または図８に関して以下に説明するハードウェア（例えば、回路網）などのコンピュータハードウェアで実施される。
【００４９】
操作７０５で、ストレージデバイスのインタフェースで受け取ったデータ送信が復号される。ここで、データ送信は、コマンド、入力識別の集合、及び入力識別でのデータに対応するシグネチャを含む。コマンドは、認証修正、つまりａｕｔｈ＿ｍｏｄｉｆｙ操作に対応する。
【００５０】
一例では、入力識別の集合は、ストレージデバイスの保護されていない部分のアドレス範囲を定める。一例では、入力識別の集合の２つの要素がアドレス範囲を定める。一例では、２つの要素のうちの第１の要素が範囲の開始を定め、２つの要素のうちの第２の要素が範囲の終了を定める。一例では、２つの要素のうちの第１の要素は、範囲の開始を定め、２つの要素のうちの第２の要素は、範囲に含めるユニットの数を定める。
【００５１】
一例では、入力識別の集合の要素は、データ送信の一部分を識別する。一例では、データ送信の一部分はフィールドによって識別される。一例では、データ送信の一部分はオフセットによって識別される。一例では、データ送信の一部分は長さによっても識別される。
【００５２】
一例では、データ送信は、安全な部分の識別を含む。一例では、安全な部分は、外部エンティティ（例えば、ストレージデバイスもしくはその構成要素ではないストレージデバイスインタフェースを使用するホストまたは他のエンティティ）に対して読み出し可能である。一例では、データ送信は、ストレージデバイスの秘密を識別する。一例では、秘密はストレージデバイスの現在のセッション鍵である。
【００５３】
一例では、ストレージデバイスのインタフェースは、半導体技術協会（ＪＥＤＥＣ）のメモリ標準インタフェースである。一例では、ストレージデバイスはランダムアクセスメモリ（ＲＡＭ）デバイスである。
【００５４】
一例では、ストレージデバイスのインタフェースは、統合デバイスエレクトロニクス（ＩＤＥ）ＡＴアタッチメント（ＡＴＡ）インタフェース、シリアルＡＴＡ（ＳＡＴＡ）インタフェース、スモールコンピュータシステムインタフェース（ＳＣＳＩ）インタフェース、または不揮発性メモリホストコントローラインタフェース仕様（ＮＶＭＨＣＩ）インタフェースのうちの少なくとも１つに準拠する。一例では、ストレージデバイスはフラッシュメモリデバイスである。一例では、フラッシュメモリデバイスは、ＮＯＲフラッシュまたはＮＡＮＤフラッシュのうちの少なくとも１つである。一例では、ストレージデバイスはハードディスクドライブ（ＨＤＤ）である。
【００５５】
操作７１０で、入力識別の集合の要素は、マーシャリングされて入力集合を生成する。マーシャリングは、入力通知の中で識別されたデータを収集し、入力集合の中にそのデータを入れることを伴う。一例では、入力識別の集合の要素をマーシャリングすることは、入力集合に含める入力識別の集合のアドレスに対応するデータを取り出すことを含む。
【００５６】
操作７１５で、ストレージデバイスの暗号エンジンは、入力集合に対して呼び出されて、入力集合からシグネチャを生成する。一例では、暗号エンジンは暗号ハッシュを実装する。一例では、暗号ハッシュはセキュアハッシュアルゴリズム（ＳＨＡ）である。一例では、暗号エンジンは、２５６ビットのハッシュまたは５１２ビットのハッシュを生成する。
【００５７】
操作７２０で、データ送信の一部として受け取られた第１のシグネチャと暗号エンジンによって入力集合から生成された第２のシグネチャとが比較される。シグネチャが一致する場合（決定７２５）、次いで、操作７３０で、入力集合がストレージデバイスの安全な部分に書き込まれる。書き込みは、下層のストレージデバイスコントローラに、安全ではない部分から安全な部分に入力集合のデータをコピーするように命令することを含む場合もあれば、書き込みは、データをコントローラの中に読み込み、データを安全な部分に書き出すことを含む場合もある。シグネチャが一致しない場合（決定７２５）、次いで、操作７３５で、コマンドは失敗する。一例では、コマンド失敗の通知が要求者に送り返される。
【００５８】
一例では、方法７００は、データが返された読み出し要求に応えて、安全な部分でデータの第３のシグネチャを作成することを含むために拡張できる。一例では、シグネチャは、読み出し要求に関係する第２のコマンドに応える。
【００５９】
図８は、本明細書に説明する技術（例えば、方法論）の任意の１つ以上が実行できる例示的なマシン８００のブロック図を示す。本明細書に説明する例は、マシン８００の中の論理またはいくつかの構成要素、または機構を含む場合もあれば、それらによって動作する場合もある。回路網（例えば、処理回路網）は、ハードウェア（例えば、単純な回路、ゲート、論理など）を含むマシン８００の有形エンティティの中で実装される回路の集合体である。回路網の帰属関係は、経時的に柔軟である場合がある。回路網は、動作時に、単独でまたは組み合わせて指定された操作を実行できる要素を含む。一例では、回路網のハードウェアは、特定の操作を実施するように不変に設計される場合がある（例えば、ハードウェアに組み込まれている）。一例では、回路網のハードウェアは、特定の操作の命令を符号化するために、物理的に修正された（例えば、不変密集粒子などの磁気的に、電気的に可動な配置）機械可読媒体を含む可変に接続された物理構成要素（例えば、実行ユニット、トランジスタ、単純な回路）を含む場合がある。物理的構成要素を接続する際に、ハードウェア構成物の基本的な電気特性は、例えば絶縁体から導体にまたはその逆に変更される。命令は、組み込まれたハードウェア（例えば、実行ユニットまたはロード機構）が、可変接続を介してハードウェアの中で回路網の要素を作成して、動作中に特定の動作の部分を実施できるようにする。したがって、一例では、機械可読媒体要素は、回路網の一部である、またはデバイスが動作中に回路網の他の構成要素に通信で結合される。一例では、物理的構成要素のいずれも、複数の回路網の複数の要素の中で使用できる。例えば、動作中、実行ユニットは、ある時点で第１の回路網の第１の回路で使用され、別の時点で第１の回路網の第２の回路によってまたは第２の回路網の第３の回路によって再利用される場合がある。マシン８００に関するこれらの構成要素の追加の例が以下に続く。
【００６０】
代替実施形態では、マシン８００は、スタンドアロンデバイスとして動作する場合もあれば、他のマシンに接続する（例えば、ネットワーク接続する）場合もある。ネットワーク化された展開では、マシン８００は、サーバ−クライアントネットワーク環境においてサーバマシン、クライアントマシン、または両方として動作できる。一例では、マシン８００は、ピアツーピア（Ｐ２Ｐ）（または他の分散型）ネットワーク環境でピアマシンとしての機能を果たすことができる。マシン８００は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、ウェブアプライアンス、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって講じられる処置を指定する命令を（連続してまたは別の方法で）実行できる任意のマシンである場合がある。さらに単一のマシンしか示していないが、用語「マシン」は、クラウドコンピューティング、ソフトウェアアズアサービス（ＳａａＳ）、他のコンピュータクラスタ構成などの本明細書に説明する方法論の任意の１つ以上を実行するために命令のセット（または複数のセット）を個別にまたは共同で実行するマシンの任意の集合体を含むと解釈されるものとする。
【００６１】
マシン（例えば、コンピュータシステム）８００は、ハードウェアプロセッサ８０２（例えば、中央処理装置（ＣＰＵ）、グラフィックスプロセッシングユニット（ＧＰＵ）、ハードウェアプロセッサコア、またはその任意の組み合わせ）、メインメモリ８０４、スタティックメモリ（例えば、ファームウェア、マイクロコード、基本入出力（ＢＩＯＳ）、ユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）などのためのメモリまたはストレージ）８０６、及びマスストレージ８２１（例えば、ハードドライブ、テープドライブ、フラッシュストレージ、または他のブロックデバイス）を含む場合があり、そのいくつかまたはすべてがインタリンク（例えば、バス）８０８を介して互いと通信できる。メインメモリ８０４は、一般的に、バイトアドレス指定可能対ブロックアドレス指定可能であることによって、マスストレージ８２１から区別可能であり、プロセッサ８０２によるそのデータの直接的な消費を可能にする。さらに、メインメモリ８０４は、電源投入サイクルと電源切断サイクルとの間で維持される情報よりもむしろ現在の（例えば、ライブの）状態情報を格納するためにプロセッサ８０２によって使用される。スタティックメモリ８０６は、一般に、電源投入時に発生するなどハードウェアを直接的に修正もしくは構成するために、または（例えば、マイクロコードを介して）機械命令を補正するために使用される。
【００６２】
マシン８００は、ディスプレイユニット８１０、英数字入力デバイス８１２（例えば、キーボード）、及びユーザーインタフェース（ＵＩ）ナビゲーションデバイス８１４（例えば、マウス）をさらに含む場合がある。一例では、ディスプレイユニット８１０、入力デバイス８１２、及びＵＩナビゲーションデバイス８１４は、タッチスクリーンディスプレイである場合がある。マシン８００は、ストレージデバイス（例えば、ドライブユニット）８１６、信号生成デバイス８１８（例えば、スピーカ）、ネットワークインタフェースデバイス８２０、及びグローバルポジショニングシステム（ＧＰＳ）センサ、コンパス、加速度計、または他のセンサなどの１つ以上のセンサ８２１をさらに含む場合がある。マシン８００は、１つ以上の周辺機器（例えば、プリンタ、カードリーダなど）と通信する、またはそれらを制御するために、シリアル（例えば、ユニバーサルシリアルバス（ＵＳＢ）、パラレル、または他の有線もしくは無線（例えば、赤外線（ＩＲ）、近距離無線通信（ＮＦＣ）など）接続などの出力コントローラ８２８を含む場合がある。
【００６３】
プロセッサ８０２、メインメモリ８０４、スタティックメモリ８０６、またはマスストレージ８１６のレジスタは、本明細書に説明する技術または機能の任意の１つ以上を実施するまたはそれによって利用されるデータ構造または命令８２４（例えば、ソフトウェア）の１つ以上のセットが上に記憶される、機械可読媒体８２２である場合もあれば、機械可読媒体８２２を含む場合もある。また、命令８２４は、マシン８００によるその実行中に、プロセッサ８０２、メインメモリ８０４、スタティックメモリ８０６、またはマスストレージ８１６のレジスタのいずれか内に完全にまたは少なくとも部分的に常駐する場合もある。一例では、ハードウェアプロセッサ８０２、メインメモリ８０４、スタティックメモリ８０６、またはマスストレージ８１６の１つまたは任意の組み合わせは、機械可読媒体８０２を構成する場合がある。機械可読媒体８２２は、単一の媒体として示されているが、用語「機械可読媒体」は、１つ以上の命令８２４を格納するように構成された単一の媒体または複数の媒体（例えば、集中型もしくは分散型のデータベース、及び／または関連付けられたキャッシュ及びサーバ）を含む場合がある。
【００６４】
用語「機械可読媒体」は、マシン８００による実行のための命令を格納、符号化、または運ぶことができ、マシン８００に、本開示の技術のいずれか１つ以上を実行させる、またはそのような命令によって使用される、もしくはそのような命令と関連付けられるデータ構造を格納、符号化、または運ぶことができる任意の媒体を含む場合がある。非限定的な機械可読媒体の例は、ソリッドステートメモリ、光媒体、磁気媒体、及び信号（例えば、無線周波数信号、他の光子ベースの信号、音響信号など）を含む場合がある。一例では、非一時的機械可読媒体は、不変の（例えば、静止）質量を有する複数の粒子を備えた機械可読媒体を含み、したがって組成物である。したがって、非一時的機械可読媒体は、一時的な伝搬信号を含まない機械可読媒体である。非一時的機械可読媒体の具体的な例は、半導体メモリデバイス（例えば、電気的プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去・プログラム可能型読み出し専用メモリ（ＥＥＰＲＯＭ））及びフラッシュメモリデバイスなどの不揮発性メモリ、内蔵ハードディスク及びリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭディスク及びＤＶＤ−ＲＯＭディスクを含む場合がある。
【００６５】
命令８２４はさらに、いくつかの転送プロトコル（例えば、フレームリレー、インターネットプロトコル（ＩＰ）、伝送制御プロトコル（ＴＣＰ）、ユーザーデータグラムプロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）など）のうちの任意の１つを利用するネットワークインタフェースデバイス８２０を経由して伝送媒体を使用して通信ネットワーク８２６を介して送信または受信される場合がある。通信ネットワークの例は、中でもローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、パケットデータネットワーク（例えば、インターネット）、携帯電話網（例えば、セルラーネットワーク）、従来型電話サービス（ＰＯＴＳ）ネットワーク、及び無線データネットワーク（例えば、Ｗｉ−Ｆｉ（登録商標）として知られる規格の電気電子技術者協会（ＩＥＥＥ）８０２．１１ファミリ、ＷｉＭａｘ（登録商標）として知られる規格のＩＥＥＥ８０２．１６ファミリ）、規格のＩＥＥＥ８０２．１５．４ファミリ、ピアツーピア（Ｐ２Ｐ）ネットワークを含む場合がある。一例では、ネットワークインタフェースデバイス８２０は、通信ネットワーク８２６に接続するために１つ以上の物理的なジャック（例えば、Ｅｔｈｅｒｎｅｔ、同軸ジャック、もしくは電話ジャック）または１つ以上のアンテナを含む場合がある。一例では、ネットワークインタフェースデバイス８２０は、単一入力複数出力（ＳＩＭＯ）技術、複数入力複数出力（ＭＩＭＯ）技術、または複数入力単一出力（ＭＩＳＯ）技術のうちの少なくとも１つを使用して無線通信するために複数のアンテナを含む場合がある。用語「伝送媒体」は、マシン８００による実行のための命令を格納、符号化、または運ぶことができる任意の無形媒体を含み、そのようなソフトウェアの通信を容易にするためにデジタルまたはアナログ通信信号もしくは他の無形媒体を含むと解釈されるものとする。伝送媒体は機械可読媒体である。
【００６６】
［その他の注記及び実施例］
実施例１は、認証修正を実装するストレージデバイスであって、暗号エンジンと、インタフェースと、コマンド、入力識別の集合、及び前記インタフェースで受け取ったデータ送信からの第１のシグネチャを解析するためのデコーダと、入力識別の前記集合の要素を収集して入力集合を生成し、前記暗号エンジンに前記入力集合から第２のシグネチャを生成するように命令し、前記第１のシグネチャ及び前記第２のシグネチャを比較して一致を決定し、前記一致に応えて、前記ストレージデバイスの安全な部分に前記入力集合を書き込むためのコントローラとを備える、前記ストレージデバイスである。
【００６７】
実施例２では、実施例１の主題は、入力識別の前記集合が前記ストレージデバイスの安全ではない部分のアドレス範囲を定めることを含む。
【００６８】
実施例３では、実施例２の主題は、入力識別の前記集合の２つの要素が前記アドレス範囲を定めることを含む。
【００６９】
実施例４では、実施例３の主題が、前記２つの要素のうちの第１の要素が前記範囲の開始を定め、前記２つの要素のうちの第２の要素が前記範囲の終了を定めることを含む。
【００７０】
実施例５では、実施例３〜４の主題が、前記２つの要素のうちの第１の要素が前記範囲の開始を定め、前記２つの要素のうちの第２の要素が、前記範囲に含むユニットの数を定めることを含む。
【００７１】
実施例６では、実施例１〜５の主題が、前記データ送信が前記安全な部分の識別を含むことを含む。
【００７２】
実施例７では、実施例１〜６の主題が、前記ストレージデバイスの前記安全な部分が、前記ストレージデバイスへの前記インタフェースを介して外部エンティティに対して読み出し可能であることを含む。
【００７３】
実施例８では、実施例７の主題は、前記コントローラが、読み出し操作に応えて前記安全な部分の第３のシグネチャを作成することを含む。
【００７４】
実施例９では、実施例８の主題が、前記コントローラが、前記読み出し操作に対する参照を含む検証命令に応えて前記外部エンティティに前記第３のシグネチャを提供することを含む。
【００７５】
実施例１０では、実施例１〜９の主題が、前記データ送信が前記ストレージデバイスの秘密を識別することを含む。
【００７６】
実施例１１では、実施例１０の主題が、前記秘密が前記ストレージデバイスの現在のセッション鍵であることを含む。
【００７７】
実施例１２では、実施例１〜１１の主題が、前記第１のシグネチャ及び前記第２のシグネチャが、鍵付きハッシュメッセージ認証符号（ＨＭＡＣ）を含むことを含む。
【００７８】
実施例１３では、実施例１２の主題が、前記ストレージデバイスの秘密が前記ＨＭＡＣのための鍵として使用されることを含む。
【００７９】
実施例１４では、実施例１〜１３の主題が、前記暗号エンジンが暗号ハッシュを実装することを含む。
【００８０】
実施例１５では、実施例１４の主題が、前記暗号ハッシュがセキュアハッシュアルゴリズム（ＳＨＡ）であることを含む。
【００８１】
実施例１６では、実施例１５の主題が、前記暗号エンジンが２５６ビットのハッシュを生成することを含む。
【００８２】
実施例１７では、実施例１〜１６の主題が、前記ストレージデバイスの前記インタフェースが、半導体技術協会（ＪＥＤＥＣ）のメモリ標準インタフェースであることを含む。
【００８３】
実施例１８では、実施例１７の主題が、前記ストレージデバイスがランダムアクセスメモリ（ＲＡＭ）デバイスであることを含む。
【００８４】
実施例１９では、実施例１〜１８の主題が、前記ストレージデバイスの前記インタフェースが、統合デバイスエレクトロニクス（ＩＤＥ）ＡＴアタッチメント（ＡＴＡ）インタフェース、シリアルＡＴＡ（ＳＡＴＡ）インタフェース、スモールコンピュータシステムインタフェース（ＳＣＳＩ）インタフェース、ユニバーサルフラッシュストレージ（ＵＦＳ）インタフェース、組み込みマルチメディアカード（ｅＭＭＣ）インタフェース、または不揮発性メモリホストコントローラインタフェース仕様（ＮＶＭＨＣＩ）インタフェースのうちの少なくとも１つに準拠することを含む。
【００８５】
実施例２０では、実施例１９の主題が、前記ストレージデバイスがフラッシュメモリデバイスであることを含む。
【００８６】
実施例２１では、実施例２０の主題が、前記フラッシュメモリデバイスがＮＯＲフラッシュまたはＮＡＮＤフラッシュのうちの少なくとも１つであることを含む。
【００８７】
実施例２２は、ストレージデバイスの中での認証修正のためのマシン実装方法であり、前記ストレージデバイスのインタフェースで受け取ったデータ送信を復号することであって、前記データ送信が、コマンド、入力識別の集合、及び前記入力識別によって識別されたデータに対応する第１のシグネチャを含み、前記コマンドが前記ストレージデバイスの安全な部分に対応する、前記復号することと、入力識別の前記集合の要素をマーシャリングして入力集合を生成することと、前記入力集合に対して前記ストレージデバイスの暗号エンジンを呼び出して前記入力集合から第２のシグネチャを生成することと、前記第１のシグネチャ及び前記第２のシグネチャを比較して一致を決定することと、前記一致に応えて、前記ストレージデバイスの安全な部分に前記入力集合を書き込むこととを含む、前記方法である。
【００８８】
実施例２３では、実施例２２の主題が、入力識別の前記集合が、前記ストレージデバイスの安全ではない部分のアドレス範囲を定めることを含む。
【００８９】
実施例２４では、実施例２３の主題が、入力識別の前記集合の２つの要素が前記アドレス範囲を定めることを含む。
【００９０】
実施例２５では、実施例２４の主題が、前記２つの要素のうちの第１の要素が前記範囲の開始を定め、前記２つの要素のうちの第２の要素が前記範囲の終了を定めることを含む。
【００９１】
実施例２６では、実施例２４〜２５の主題が、前記２つの要素のうちの第１の要素が、前記範囲の開始を定め、前記２つの要素のうちの第２の要素が、前記範囲に含むユニットの数を定めることを含む。
【００９２】
実施例２７では、実施例２２〜２６の主題が、前記データ送信が前記安全な部分の識別を含むことを含む。
【００９３】
実施例２８では、実施例２２〜２７の主題が、前記ストレージデバイスの前記安全な部分が、前記ストレージデバイスへの前記インタフェースを介して外部エンティティに対して読み出し可能であることを含む。
【００９４】
実施例２９では、実施例２８の主題が、読み出し操作に応えて前記安全な部分の第３のシグネチャを作成することを含む。
【００９５】
実施例３０では、実施例２８〜２９の主題が、読み出し操作に対する参照を含む検証命令に応えて前記外部エンティティに第３のシグネチャを提供することを含む。
【００９６】
実施例３１では、実施例２２〜３０の主題が、前記データ送信が前記ストレージデバイスの秘密を識別することを含む。
【００９７】
実施例３２では、実施例３１の主題が、前記秘密が前記ストレージデバイスの現在のセッション鍵であることを含む。
【００９８】
実施例３３では、実施例２２〜３２の主題が、前記第１のシグネチャ及び前記第２のシグネチャが、鍵付きハッシュメッセージ認証符号（ＨＭＡＣ）を含むことを含む。
【００９９】
実施例３４では、実施例３３の主題が、前記ストレージデバイスの秘密が前記ＨＭＡＣのための鍵として使用されることを含む。
【０１００】
実施例３５では、実施例２２〜３４の主題が、前記暗号エンジンが暗号ハッシュを実装することを含む。
【０１０１】
実施例３６では、実施例３５の主題が、前記暗号ハッシュがセキュアハッシュアルゴリズム（ＳＨＡ）であることを含む。
【０１０２】
実施例３７では、実施例３６の主題が、前記暗号エンジンが２５６ビットのハッシュを生成することを含む。
【０１０３】
実施例３８では、実施例２２〜３７の主題が、前記ストレージデバイスの前記インタフェースが、半導体技術協会（ＪＥＤＥＣ）のメモリ標準インタフェースであることを含む。
【０１０４】
実施例３９では、実施例３８の主題が、前記ストレージデバイスがランダムアクセスメモリ（ＲＡＭ）デバイスであることを含む。
【０１０５】
実施例４０では、実施例２２〜３９の主題が、前記ストレージデバイスの前記インタフェースが、統合デバイスエレクトロニクス（ＩＤＥ）ＡＴアタッチメント（ＡＴＡ）インタフェース、シリアルＡＴＡ（ＳＡＴＡ）インタフェース、スモールコンピュータシステムインタフェース（ＳＣＳＩ）インタフェース、ユニバーサルフラッシュストレージ（ＵＦＳ）インタフェース、組み込みマルチメディアカード（ｅＭＭＣ）インタフェース、または不揮発性メモリホストコントローラインタフェース仕様（ＮＶＭＨＣＩ）インタフェースのうちの少なくとも１つに準拠することを含む。
【０１０６】
実施例４１では、実施例４０の主題が、前記ストレージデバイスがフラッシュメモリデバイスであることを含む。
【０１０７】
実施例４２では、実施例４１の主題が、前記フラッシュメモリデバイスがＮＯＲフラッシュまたはＮＡＮＤフラッシュの内の少なくとも１つであることを含む。
【０１０８】
実施例４３は、少なくとも１つの非一時的機械可読媒体であって、処理回路網によって実行されるときに、前記処理回路網に実施例２２〜４２のいずれかの方法を実行させる命令を含む、前記非一時的機械可読媒体である。
【０１０９】
実施例４４は、実施例２２〜４２のいずれかの方法を実行するための手段を備えるシステムである。
【０１１０】
実施例４５は、少なくとも１つの機械可読媒体であって、処理回路網によって実行されるときに、前記処理回路網に実施例１〜４４のいずれかを実装するための操作を実行させる命令を含む、前記機械可読媒体である。
【０１１１】
実施例４６は、実施例１〜４４のいずれかを実装するための手段を備える装置である。
【０１１２】
実施例４７は、実施例１〜４４のいずれかを実装するためのシステムである。
【０１１３】
実施例４８は、実施例１〜４４のいずれかを実装するための方法である。
【０１１４】
上記の詳細な説明は、詳細な説明の一部を形成する添付図面に対する参照を含む。図面は、例として、実施できる特定の実施形態を示す。これらの実施形態は、本明細書では「実施例」とも呼ばれる。そのような実施例は、図示または説明された要素に加えて他の要素を含む場合がある。しかしながら、本発明者らは、図示または説明されたそれらの要素のみが提供される実施例も企図する。さらに、本発明者は、本明細書に図示または説明された特定の実施例（もしくはその１つ以上の態様）に関して、または他の実施例（もしくはその１つ以上の態様）に関して、図示または説明されたそれらの要素（もしくはその１つ以上の態様）の任意の組み合わせまたは順列を使用する実施例も企図する。
【０１１５】
本書中に参照されるすべての出版物、特許、及び特許文書は、あたかも参照により個別に援用されているかのように、その全体が参照により本明細書に援用される。本書と参照により援用されるそれらの文書との間に一致しない用法がある場合、援用された参考文献（複数可）の用法は、本書の使用に対する補足と見なされるべきである。解決できない不一致の場合、本書における用法が支配する。
【０１１６】
本書では、用語「ａ」または「ａｎ」は、特許文書で一般的であるように、「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」または「１つ以上の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」の任意の他の例または用法とは関係なく、１つまたは複数を含むために使用される。本書では、用語「または（ｏｒ）」は、非排他的を指す、つまり別段の指示がない限り、「ＡまたはＢ（Ａ  ｏｒ  Ｂ）」は「ＡであるがＢではなく（Ａ  ｂｕｔ  ｎｏｔ  Ｂ）」、「ＢであるがＡではなく（Ｂ  ｂｕｔ  ｎｏｔ  Ａ）」、及び「Ａ及びＢ（Ａ  ａｎｄ  Ｂ）」を含むように使用される。添付の特許請求の範囲では、「含む（ｉｎｃｌｕｄｉｎｇ）」及び「〜において（ｉｎ  ｗｈｉｃｈ）」は、それぞれの用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」及び「そこで（ｗｈｅｒｅｉｎ）」の分かりやすい英語の同等物として使用される。また、以下の特許請求の範囲では、用語「含む（ｉｎｃｌｕｄｉｎｇ）」及び「備える（ｃｏｍｐｒｉｓｉｎｇ）」は、オープンエンドである。つまり、請求項の中のそのような用語の後に示される要素に加えて他の要素を含むシステム、デバイス、商品、またはプロセスもその請求項の範囲に含まれると見なされる。さらに、以下の特許請求の範囲では、用語「第１の」、「第２の」、及び「第３の」などは、単にラベルとして使用されており、その対象に対する数的な要件を課すことを意図していない。
【０１１７】
上記説明は、制限的ではなく、例示的であることを意図している。例えば、上述の例（またはその１つ以上の態様）は、互いと組み合わせて使用される場合がある。他の実施形態は、上記説明の検討時に、例えば当業者によって使用される場合がある。要約書は、読者が、技術的な開示の性質を迅速に確かめることを可能にするべきであり、要約書は特許請求の範囲の範囲または意味を解釈または制限するために使用されないという理解をもって提出される。また、上記の発明を実施するための形態では、さまざまな特徴が本開示を効率化するために互いにグループ化される場合がある。これは、特許請求されていない開示された特徴が任意の請求項に対して不可欠であることを意図すると解釈されるべきではない。むしろ、本発明の主題は、特定の開示されている実施形態のすべてに満たない特徴に存在する場合がある。したがって、以下の特許請求の範囲は、本明細書によって発明を実施する形態に援用され、各請求項は別々の実施形態として自立している。実施形態の範囲は、添付された特許請求の範囲に関して、そのような特許請求の範囲によって権利が与えられる均等物の全範囲とともに定められるべきである。
【図１】
2021517409.tif 000003
【図２】
2021517409.tif 000004
【図３】
2021517409.tif 000005
【図４】
2021517409.tif 000006
【図５】
2021517409.tif 000007
【図６】
2021517409.tif 000008
【図７】
2021517409.tif 000009
【図８】
2021517409.tif 000010
【国際調査報告】
2021517409.tif 000011
2021517409.tif 000012