(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024166265
(43)【公開日】2024-11-28
(54)【発明の名称】メモリサブシステムの動的コマンド拡張
(51)【国際特許分類】
H04L 9/32 20060101AFI20241121BHJP
【FI】
H04L9/32 200B
H04L9/32 200E
【審査請求】有
【請求項の数】1
【出願形態】OL
(21)【出願番号】P 2024153568
(22)【出願日】2024-09-06
(62)【分割の表示】P 2022544233の分割
【原出願日】2021-01-21
(31)【優先権主張番号】16/749,558
(32)【優先日】2020-01-22
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ルアン ジェームズ
(72)【発明者】
【氏名】ストロング ロバート ダブリュー.
(57)【要約】
【課題】メモリサブシステムの動的なコマンド拡張のためのシステム及び方法を提供する。
【解決手段】処理デバイスは、初期のコマンドタイプのセットを処理するように構成される。コマンド拡張モジュール及びデジタル署名が受信される。デジタル署名は、鍵ペアの秘密鍵を使用して、コマンド拡張モジュールに基づいて生成される。コマンド拡張モジュールは、処理デバイスによってインストールされると、初期のコマンドタイプのセットには含まれていない新しいコマンドタイプを、処理デバイスが処理することを可能にする。デジタル署名は、鍵ペアの公開キーを使用して検証される。デジタル署名の検証の成功に基づいて、コマンド拡張モジュールは、揮発性メモリデバイスにコマンド拡張モジュールをロードすることによって一時的にインストールされる。
【選択図】
図2B
【特許請求の範囲】
【請求項1】
揮発性メモリデバイスと、
初期のコマンドタイプのセットを処理するように構成された処理デバイスと、
を備えるシステムであって、
前記処理デバイスは、
コマンド拡張モジュール及びデジタル署名を受信することであって、前記デジタル署名が、鍵ペアの秘密鍵を使用して前記コマンド拡張モジュールに基づいて生成され、前記コマンド拡張モジュールが、前記処理デバイスによってインストールされると、前記処理デバイスが、前記初期のコマンドタイプのセットには含まれていない新しいコマンドタイプを処理することを可能にする、前記受信することと、
前記鍵ペアの公開鍵を使用して前記デジタル署名を検証することと、
前記コマンド拡張モジュールが以前にインストールされたかどうかを、前記コマンド拡張モジュールのセキュリティバージョンを確認することによって判定することであって、前記セキュリティバージョンの前記確認は、前記コマンド拡張モジュールの前記セキュリティバージョンを、前記処理デバイスによって維持されているセキュリティバージョンカウンタと比較することを含む、前記判定することと、
前記デジタル署名の検証の成功と、前記コマンド拡張モジュールが以前にインストールされていないことを示す前記セキュリティバージョンの確認の成功とに基づいて、前記コマンド拡張モジュールを前記システムに一時的にインストールすることであって、前記コマンド拡張モジュールの前記一時的なインストールが、前記揮発性メモリデバイスに前記コマンド拡張モジュールをロードすることを含む、前記一時的にインストールすることと、
を含む操作を実行するように、前記揮発性メモリデバイスと動作可能に結合される、前記システム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権出願
本出願は、2020年1月22日に出願された米国出願第16/749,558号に優先権の利益を主張するものであり、参照によりその全体が本明細書に援用される。
【0002】
本開示の実施形態は、一般に、メモリサブシステムに関し、より具体的には、メモリサブシステムコマンドの動的拡張に関する。
【背景技術】
【0003】
メモリサブシステムは、データを格納する1つまたは複数のメモリデバイスを含むことができる。メモリデバイスは、例えば、不揮発性メモリデバイス及び揮発性メモリデバイスであり得る。一般に、ホストシステムは、メモリデバイスにデータを格納し、メモリデバイスからデータを取り出すために、メモリサブシステムを利用することができる。
【発明の概要】
【0004】
本発明の一実施形態に係るシステムは、揮発性メモリデバイスと、初期のコマンドタイプのセットを処理するように構成された処理デバイスと、を備えるシステムであって、前記処理デバイスは、コマンド拡張モジュール及びデジタル署名を受信することであって、前記デジタル署名が、鍵ペアの秘密鍵を使用して前記コマンド拡張モジュールに基づいて生成され、前記コマンド拡張モジュールが、前記処理デバイスによってインストールされると、前記処理デバイスが、前記初期のコマンドタイプのセットには含まれていない新しいコマンドタイプを処理することを可能にする、前記受信することと、前記鍵ペアの公開鍵を使用して前記デジタル署名を検証することと、前記コマンド拡張モジュールが以前にインストールされたかどうかを、前記コマンド拡張モジュールのセキュリティバージョンを確認することによって判定することであって、前記セキュリティバージョンの前記確認は、前記コマンド拡張モジュールの前記セキュリティバージョンを、前記処理デバイスによって維持されているセキュリティバージョンカウンタと比較することを含む、前記判定することと、前記デジタル署名の検証の成功と、前記コマンド拡張モジュールが以前にインストールされていないことを示す前記セキュリティバージョンの確認の成功とに基づいて、前記コマンド拡張モジュールを前記システムに一時的にインストールすることであって、前記コマンド拡張モジュールの前記一時的なインストールが、前記揮発性メモリデバイスに前記コマンド拡張モジュールをロードすることを含む、前記一時的にインストールすることと、を含む操作を実行するように、前記揮発性メモリデバイスと動作可能に結合される。
【0005】
本開示は、以下に示す詳細な説明及び本開示のさまざまな実施形態の添付図面から、より十分に理解される。
【図面の簡単な説明】
【0006】
【
図1】本開示のいくつかの実施形態による、メモリサブシステムを含む例示的なコンピューティング環境を示す。
【
図2A】本発明のいくつかの実施形態による、メモリサブシステムコマンドの動的拡張のための例示的な方法を実行する際の安全な通信環境におけるコンポーネント間のインタラクションを示すデータフロー図である。
【
図2B】本発明のいくつかの実施形態による、メモリサブシステムコマンドの動的拡張のための例示的な方法を実行する際の安全な通信環境におけるコンポーネント間のインタラクションを示すデータフロー図である。
【
図2C】本発明のいくつかの実施形態による、メモリサブシステムコマンドの動的拡張のための例示的な方法を実行する際の安全な通信環境におけるコンポーネント間のインタラクションを示すデータフロー図である。
【
図3】本開示のいくつかの実施形態による、メモリサブシステムコマンドの動的拡張のための例示的な方法を示す流れ図である。
【
図4】本開示のいくつかの実施形態による、メモリサブシステムコマンドの動的拡張のための例示的な方法を示す流れ図である。
【
図5】本開示の実施形態が操作し得る例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0007】
本開示の態様は、メモリサブシステムにおける安全なコマンド拡張を対象とする。メモリサブシステムは、ストレージデバイス、メモリモジュール、またはストレージデバイスとメモリモジュールのハイブリッドであり得る。ストレージデバイス及びメモリモジュールの例は、
図1に関連して以下に説明される。一般に、ホストシステムは、データを格納するメモリデバイスなど、1つまたは複数のコンポーネントを含むメモリサブシステムを利用することができる。ホストシステムは、メモリサブシステムに格納されるデータを提供することができ、メモリサブシステムから取り出されるデータを要求することができる。
【0008】
通常、メモリサブシステムコントローラは、ホストシステムからコマンドまたは操作を受信し、コマンドまたは操作を、メモリサブシステムのメモリコンポーネントへの所望のアクセスを達成するための命令または適切なコマンドに変換する。通常、メモリサブシステムは、メモリサブシステムに関して特定の機能を有効にする、コマンドタイプのセットをサポートできるファームウェアで最初に構成される。いくつかの例では、これらのコマンドタイプは、ベンダのシステム構成またはプロセスに固有であり得る機能を有効にするベンダ固有のコマンドタイプを含む。ただし、各コマンドタイプは、メモリサブシステムによって格納されるデータに不正アクセスするために悪用される可能性のある攻撃ベクトルを提供する可能性がある。さらに、特定のベンダ固有のコマンドは、不正アクセスするために悪用される可能性のあるセキュリティ脆弱性を生じさせる場合がある。
【0009】
メモリサブシステムファームウェアは、ファームウェアが信頼されるソースに由来することを保証するために、通常インストールされる前にメモリサブシステムによって確認される。一例として、非対称鍵ペアの公開鍵は、出荷前に、相手先商標製品製造供給企業(OEM)によってメモリサブシステムにプロビジョニングされ得、一方、対応する秘密鍵は、メモリサブシステムにとって外部であり、メモリサブシステムから独立している安全なシステム(例えば、OEMによって運営される)のハードウェアセキュリティモジュール(HSM)によって保護される。ファームウェアは、信頼の基点を確立するために秘密鍵によってデジタル署名され、対応する公開鍵は、インストール前にデジタル署名を確認するためにメモリサブシステムによって使用される。
【0010】
いくつかの例では、メモリサブシステムファームウェアが、最初にサポートできるコマンドタイプのセットによって有効にされた機能を超えて、メモリサブシステムの機能を拡張することが所望される場合がある。つまり、メモリサブシステムが、元のメモリサブシステムファームウェアが処理できる元のコマンドタイプのセットに含まれていなかった追加のコマンドタイプを処理することを可能にすることが望ましい場合がある。一例では、いずれのベンダ固有のコマンドも使用せずに、システムの攻撃ベクトルを減らし、後にベンダ固有のコマンドを処理する機能をシステムに追加するようにメモリサブシステムを最初に構成することが望ましい場合がある。別の例として、メモリサブシステムをデバッグするための特定の機能を一時的に提供することが所望される場合がある。
【0011】
メモリサブシステムでのコマンド拡張のための従来の技術は、追加のコマンドを処理するための機能を含む更新されたファームウェアファイルをダウンロードすることを必要とし、メモリサブシステムはまた、インストール前に更新されたファームウェアファイルを再確認する必要がある。ただし、更新されたファームウェアファイルは、大きい場合があり、ダウンロード及び再確認は、大量の時間及びメモリリソースを消費する場合がある。
【0012】
本開示の態様は、メモリサブシステムの動的なコマンド拡張のためのシステム及び方法に関する上記の問題及び他の問題に対処する。コマンド拡張は、上述のコマンド拡張のための従来の方法で必要とされていた、新しいファームウェアパッケージを完全にインストールすること、及び、ファームウェアを再評価すること、を必要とせずに、追加のコマンドを処理する機能がメモリサブシステムに一時的に追加され得るという点で動的である。
【0013】
いくつかの実施形態と一致して、コマンド処理コンポーネントは、メモリサブシステムに、メモリサブシステムが最初に処理することができないコマンドタイプを処理する機能を追加することができる。メモリサブシステムのコマンドを拡張するために、ホストシステムは、再検証する必要もあるファームウェアパッケージ全体ではなく、コマンド拡張モジュールをメモリサブシステムに提供し得る。いくつかの実施形態と一致して、コマンド拡張モジュール自体は、安全なアクセスを保証し、不正アクセスを防ぐために何らかの形のアクセス制御の対象となる場合がある。例えば、コマンド拡張モジュールは、パスワード保護され得、ホストシステムは、コマンド拡張モジュールをダウンロードできるためのパスワードを提供することを必要とされる場合がある。コントローラにコマンド拡張モジュールを一時的にインストールする前に、コマンド処理コンポーネントによって検証されるデジタル署名がコマンド拡張モジュールに提供される。コマンド拡張モジュールによって処理されるコマンドタイプに対応するコマンド処理コンポーネントによって受信されたコマンドは、コマンド拡張モジュールに転送され、コマンド拡張モジュールはコマンドを処理する。コマンド拡張モジュールは、それが揮発性メモリデバイスにロードされ、したがってシステムのリブート時またはコマンド拡張モジュールに関連付けられた有効期限(TTL)値の満了時に失われるという点で、一時的にのみインストールされる。
【0014】
上述の動的コマンド拡張のための技術は、ベンダ固有のコマンドタイプまたはその必要性がファームウェア作成時には認識されていなかったコマンドタイプをファームウェアが処理する必要性を排除することによって、メモリサブシステムの脆弱性を低減する。さらに、動的コマンド拡張のそのような方法により、追加のクレームタイプを処理する機能が後に追加できるのであれば、ファームウェアは、コマンドタイプの限られたセットのみを処理することができる。また、コマンドタイプの数を減らすと、メモリサブシステムに不正アクセスするために使用される場合がある攻撃ベクトルの数も減らし、それによって追加のセキュリティの利点を提供する。
【0015】
図1は、本開示のいくつかの実施形態による、メモリサブシステム110を含む例示的なコンピューティングシステム100を示す。メモリサブシステム110は、1つまたは複数の揮発性メモリデバイス(例えば、メモリデバイス140)、1つまたは複数の不揮発性メモリデバイス(例えば、メモリデバイス130)、またはこのようなものの組み合わせなどの媒体を含むことができる。
【0016】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、または記憶装置とメモリモジュールのハイブリッドであり得る。ストレージデバイスの例は、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、組み込みマルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、及びハードディスクドライブ(HDD)を含む。メモリモジュールの例は、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、及びさまざまなタイプの不揮発性デュアルインラインメモリモジュール(NVDIMM)を含む。
【0017】
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、車両(例えば、航空機、ドローン、電車、自動車、または他の輸送手段)、モノのインターネット(IoT)対応デバイス、組み込みコンピュータ(例えば、車両、産業機器、またはネットワーク化された商用デバイスに含まれるもの)などのコンピューティングデバイス、またはメモリ及び処理デバイスを含むそのようなコンピューティングデバイスであり得る。
【0018】
コンピューティングシステム100は、1つまたは複数のメモリサブシステム110に結合されたホストシステム120を含むことができる。いくつかの実施態様では、ホストシステム120は、異なるタイプのメモリサブシステム110に結合されている。
図1は、1つのメモリサブシステム110に結合されたホストシステム120の一例を示す。本明細書で使用される場合、「~に結合される」または「~と結合される」は、一般に、電気、光、磁気などの接続を含む、有線または無線を問わず、間接通信接続または直接通信接続(例えば、介在するコンポーネントなし)であり得るコンポーネント間の接続を指す。
【0019】
ホストシステム120は、プロセッサチップセット、及びプロセッサチップセットによって実行されるソフトウェアスタックを含むことができる。プロセッサチップセットは、1つまたは複数のコア、1つまたは複数のキャッシュ、メモリコントローラ(例えば、NVDIMMコントローラ)、及びストレージプロトコルコントローラ(例えば、PCIeコントローラ、SATAコントローラ)を含むことができる。ホストシステム120は、例えばメモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み取るためにメモリサブシステム110を使用する。
【0020】
ホストシステム120は、物理ホストインタフェースを介してメモリサブシステム110に結合される場合がある。物理ホストインタフェースの例は、シリアルアドバンストテクノロジーアタッチメント(SATA)インタフェース、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、ファイバーチャネル、シリアル接続SCSI(SAS)、スモールコンピュータシステムインタフェース(SCSI)、ダブルデータレート(DDR)メモリバス、デュアルインラインメモリモジュール(DIMM)インタフェース(例えば、ダブルデータレート(DDR)をサポートするDIMMソケットインタフェース)、オープンNANDフラッシュインタフェース(ONFI)、ダブルデータレート(DDR)、低電力ダブルデータレート(LPDDR)、または任意の他のインタフェースを含むが、これらに限定されない。物理ホストインタフェースを使用して、ホストシステム120とメモリサブシステム110との間でデータを伝送することができる。メモリサブシステム110がPCIeインタフェースによってホストシステム120と結合されているときに、ホストシステム120は、NVM Express(NVMe)インタフェースをさらに利用して、コンポーネント(例えば、メモリデバイス130)にアクセスすることができる。物理ホストインタフェースは、メモリサブシステム110とホストシステム120との間で制御信号、アドレス信号、データ信号、及び他の信号を渡すためのインタフェースを提供することができる。
図1は、例としてメモリサブシステム110を示している。一般に、ホストシステム120は、同じ通信接続、複数の別個の通信接続、及び/または通信接続の組み合わせを介して、複数のメモリサブシステムにアクセスすることができる。
【0021】
メモリデバイス130、140は、異なるタイプの不揮発性メモリデバイス及び/または揮発性メモリデバイスの任意の組み合わせを含むことができる。揮発性メモリデバイス(例えば、メモリデバイス140)は、ダイナミックランダムアクセスメモリ(DRAM)及び同期ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)であり得るが、これらに限定されない。
【0022】
不揮発性メモリデバイス(例えば、メモリデバイス130)のいくつかの例は、否定論理積(NAND)型フラッシュメモリ、及び不揮発性メモリセルのクロスポイントアレイである、3次元クロスポイント(「3Dクロスポイント」)メモリデバイスなどのライトインプレースメモリを含む。不揮発性メモリのクロスポイントアレイは、スタック可能なクロスグリッドデータアクセスアレイと組み合わせて、バルク抵抗の変化に基づいてビットストレージを実行することができる。さらに、多くのフラッシュベースのメモリとは対照的に、クロスポイント不揮発性メモリは、不揮発性メモリセルを事前に消去せずに不揮発性メモリセルをプログラムできるインプレース書き込み操作を実行できる。NAND型フラッシュメモリは、例えば2次元NAND(2D NAND)及び3次元NAND(3D NAND)を含む。
【0023】
メモリデバイス130のそれぞれは、メモリセルの1つまたは複数のアレイを含むことができる。マルチレベルセル(MLC)、トリプルレベルセル(TLC)、及びクアッドレベルセル(QLC)などの他のタイプのメモリセルは、セルごとに複数のビットを格納できる。いくつかの実施形態では、メモリデバイス130のそれぞれは、SLC、MLC、TLC、QLC、またはこのようなものの任意の組み合わせなどのメモリセルの1つまたは複数のアレイを含むことができる。いくつかの実施形態では、特定のメモリデバイスは、メモリセルのSLC部分、及びMLC部分、TLC部分、またはQLC部分を含むことができる。メモリデバイス130のメモリセルは、データを格納するために使用されるメモリデバイスの論理ユニットを指す場合があるページとしてグループ化することができる。いくつかのタイプのメモリ(例えば、NAND)では、ブロックを形成するページをグループ化することができる。
【0024】
NAND型フラッシュメモリ(例えば、2D NAND、3D NAND)及び不揮発性メモリセルの3Dクロスポイントアレイなどの不揮発性メモリコンポーネントが説明されているが、メモリデバイス130は、読み取り専用メモリ(ROM)、位相変化メモリ(PCM)、自己選択メモリ、他のカルコゲニドベースのメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、スピン注入磁化反転(STT)MRAM、導電性ブリッジRAM(CBRAM)、抵抗性ランダムアクセスメモリ(RRAM)、酸化物ベースのRRAM(OxRAM)、否定論理和(NOR)フラッシュメモリ、及び電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)などの任意の他のタイプの不揮発性メモリに基づく場合がある。
【0025】
メモリサブシステムコントローラ115(または、簡単にするために、コントローラ115)は、メモリデバイス130でデータを読み取る、データを書き込む、またはデータを消去するなどの操作、及び他のそのような操作を実行するためにメモリデバイス130と通信することができる。メモリサブシステムコントローラ115は、1つまたは複数の集積回路及び/または個別のコンポーネント、バッファメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。ハードウェアは、本明細書で説明される操作を実行するための専用の(つまり、ハードコードされた)論理を備えたデジタル回路を含むことができる。メモリサブシステムコントローラ115は、マイクロコントローラ、専用論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または他の適切なプロセッサであり得る。
【0026】
メモリサブシステムコントローラ115は、ローカルメモリ119に格納された命令を実行するように構成されたプロセッサ117(例えば、処理デバイス)を含むことができる。図示の例では、メモリサブシステムコントローラ115のローカルメモリ119は、さまざまなプロセス、操作、論理フロー、及びメモリサブシステム110とホストシステム120との間の通信の処理を含む、メモリサブシステム110の動作を制御するルーチンを実行するための命令を格納するように構成された組み込みメモリを含む。
【0027】
いくつかの実施形態では、ローカルメモリ119は、メモリポインタ、フェッチされたデータなどを格納するメモリレジスタを含むことができる。ローカルメモリ119はまた、マイクロコードを格納するための読み取り専用メモリ(ROM)を含むことができる。
図1の例示的なメモリサブシステム110は、メモリサブシステムコントローラ115を含むものとして示されているが、本開示の別の実施形態では、メモリサブシステム110は、メモリサブシステムコントローラ115を含まず、代わりに、外部制御(例えば、外部ホストによって、またはメモリサブシステムとは別のプロセッサまたはコントローラによって提供される)に依拠する場合がある。
【0028】
一般に、メモリサブシステムコントローラ115は、ホストシステム120からコマンドまたは操作を受信することができ、コマンドまたは操作を、メモリデバイス130及び/またはメモリデバイス140への所望のアクセスを達成するための命令または適切なコマンドに変換することができる。メモリサブシステムコントローラ115は、ウェアレベリング操作、ガベージコレクション操作、エラー検出及びエラー訂正コード(ECC)操作、暗号化操作、キャッシング操作、及び論理アドレス(例えば、論理ブロックアドレス(LBA)、名前空間)と物理アドレス(例えば、物理ブロックアドレス)との間のアドレス変換などの他の操作を担うことができ、これらは、メモリデバイス130に関連付けられている。メモリサブシステムコントローラ115は、物理ホストインタフェースを介してホストシステム120と通信するためのホストインタフェース回路をさらに含むことができる。ホストインタフェース回路は、ホストシステムから受信されたコマンドをメモリデバイス130及び/またはメモリデバイス140にアクセスするためのコマンド命令に変換し、メモリデバイス130及び/またはメモリデバイス140に関連付けられた応答をホストシステム120のための情報に変換することができる。
【0029】
メモリサブシステム110はまた、図示されていない追加の回路または構成要素を含むことができる。いくつかの実施形態では、メモリサブシステム110は、キャッシュまたはバッファ(例えば、DRAM)、及びメモリサブシステムコントローラ115からアドレスを受信し、アドレスをデコードしてメモリデバイス130にアクセスできるアドレス回路(例えば、ロウデコーダとカラムデコーダ)を含むことができる。
【0030】
いくつかの実施形態では、メモリデバイス130は、メモリサブシステムコントローラ115と連動して動作して、メモリデバイス130の1つまたは複数のメモリセルに対して操作を実行するローカルメディアコントローラ135を含む。外部コントローラ(例えば、メモリサブシステムコントローラ115)は、メモリデバイス130を外部で管理する(例えば、メモリデバイス130に対してメディア管理操作を実行する)ことができる。いくつかの実施形態では、メモリデバイス130はマネージドメモリデバイスであり、これは、同じメモリデバイスパッケージ内でのメディア管理のために、ローカルコントローラ(例えば、ローカルコントローラ135)と組み合わされた生のメモリデバイスである。マネージドメモリデバイスの例は、マネージドNAND(MNAND)デバイスである。
【0031】
コントローラ115のコマンド処理コンポーネント113は、物理ホストインタフェースを介してホストシステム120によって送信されたコマンドを受信する。コマンド処理コンポーネント113は、コントローラ115、またはメモリデバイス130または140のいずれか1つまたは複数に含まれてもよい。いくつかの実施形態では、コントローラ115は、コマンド処理コンポーネント113の少なくとも一部を含む。例えば、コントローラ115は、本明細書に説明される操作を実行するために、ローカルメモリ119に格納された命令を実行するように構成されるプロセッサ117(処理デバイス)を含むことができる。
【0032】
最初に、コントローラ115は、例えばコントローラ115の製造業者によって以前決定された限られたコマンドタイプのセットのみを処理することができるように(例えば、製造業者によってインストールされたファームウェアによって)構成され得る。コントローラのコマンド処理コンポーネント113は、コマンドの動的拡張を可能にするように構成される。すなわち、コマンド処理コンポーネント113は、追加のコマンドタイプを処理する機能をコントローラ115に追加することができる。コントローラ115のコマンドを拡張するために、ホストシステム120は、コントローラ115にコマンド拡張モジュールを提供する。コマンド拡張モジュールは、インストールされると、コマンド処理コンポーネント113によりコントローラ115が処理できるようになっている所定のコマンドタイプのセットには含まれていない少なくとも1つの新しいコマンドタイプを、コントローラ115が処理することを可能にするマシン可読命令のセットを含む。コマンド拡張モジュールは、コントローラ115にコマンド拡張モジュールを一時的にインストールする前に、コマンド処理コンポーネント113によって検証されるデジタル署名を提供される。例えば、コマンド処理コンポーネント113は、コマンド拡張モジュールを揮発性メモリデバイス(例えば、メモリデバイス130)にロードし得る。コマンド拡張モジュールは、メモリサブシステム110のリブート時に失われるため、コマンド拡張モジュールのインストールは、このようにして一時的である。いくつかの実施形態では、コマンド拡張モジュールは、モジュールに関連付けられたTTL値の満了に基づいて、メモリから消去されてよい。
【0033】
コマンド処理コンポーネント113が、ホストシステム120から受信されたコマンドが、インストールされたコマンド拡張モジュールが処理するように構成されたコマンドタイプに対応すると判断した場合、コマンド処理コンポーネント113の拡張リダイレクトコンポーネント114は、コマンド拡張モジュールにコマンドをリダイレクト(転送)し、コマンド拡張モジュールは相応してコマンドを処理する。
【0034】
図2A~
図2Cは、本発明のいくつかの実施形態による、メモリサブシステムコマンドの動的拡張のための例示的な方法を実行する際の安全な通信環境におけるコンポーネント間のインタラクションを示すデータフロー図である。
【0035】
図2A及び
図2Cとの関連で、非対称暗号化鍵ペア-公開鍵200及び秘密鍵201-が事前に生成され、コマンド処理コンポーネント113は、公開鍵200をプロビジョニングされ得、一方、秘密鍵201は、別の安全な環境(例えば、1つまたは複数のプロセッサを含む)に維持される。コマンド処理コンポーネント113は、鍵ストア202に公開鍵200を格納する。鍵ストア202は、コントローラ115の不揮発性メモリデバイス(例えば、ローカルメモリ119)またはメモリデバイス140のいずれか1つまたは複数内に実装され得る。
【0036】
示されるように、コマンド処理コンポーネント113は、いくつかの実施形態では、コントローラ115にインストールされた確認済みのファームウェア203の一部として含まれ得る。ファームウェア203は、いくつかの機能を実行するためにコントローラ115によって実行され得るマシン可読命令のセットを含む。例えば、ファームウェア203は、コントローラ115が、ホストシステム120から受信された事前定義のコマンドタイプのセットを処理することを可能にする。上述のように、ホストシステム120は、コントローラ115のホストインタフェースを介してコントローラ115にコマンドを送信し得る。事前定義されたコマンドタイプのセットの1つに対応するコマンドは、コマンド処理コンポーネント113によって処理される。ファームウェア203は、それが秘密鍵201を使用してデジタル署名されており、かつ、デジタル署名が公開鍵200を使用してコントローラ115によって検証されている、という点で確認されている。例えば、示されるように、秘密鍵201を使用してファームウェア203に基づいて生成されたデジタル署名204は、ファームウェア203とともに提供され、コントローラ115は、公開鍵200を使用してデジタル署名204を確認する。
【0037】
1つまたは複数の追加のコマンドを処理するようにコントローラ115の機能を拡張するために、ホストシステム120のユーザー205は、ホストシステム120に、コマンド拡張要求をコントローラ115に送信させる。コマンド拡張要求は、コマンド拡張モジュール206及びデジタル署名207を含む。コマンド拡張モジュール206は、マシン可読命令のセットを含み、このマシン可読命令のセットは、コントローラ115によってインストールされると、ファームウェア203によりコントローラ115が処理できるようになる、事前定義のコマンドタイプのセットには含まれていない少なくとも1つの新しいコマンドタイプを、コントローラ115が処理することを可能にする。デジタル署名207は、秘密鍵201を使用して、コマンド拡張モジュール206に基づいて生成される。いくつかの実施形態では、拡張モジュール206のセキュリティバージョンは、コマンド拡張要求に含まれる。例えば、セキュリティバージョンは、拡張モジュール206のフィールドに指定されるか、または、さもなければ、コマンド拡張要求のフィールドに指定される場合もある。
【0038】
コマンド処理コンポーネント113は、コマンド拡張要求を受信し、拡張モジュール206が信頼されるソースによって提供されていることを保証するためにデジタル署名207を検証する。コマンド処理コンポーネント113は、公開鍵200を使用してデジタル署名207を検証する。一例では、デジタル署名207は、拡張モジュール206に基づいた第1のハッシュを作成することによって生成され得、第1のハッシュは、デジタル署名207を生成するために秘密鍵201を使用して暗号化され得る。デジタル署名207を検証するために、コマンド処理コンポーネント113は、受信された拡張モジュール206に基づいた第2のハッシュを生成し、第1のハッシュを生成するためにデジタル署名207を復号する。コマンド処理コンポーネント113は、第1のハッシュと第2のハッシュを比較し、それらが一致する場合、デジタル署名207は有効である。第1のハッシュと第2のハッシュが一致しない場合、コマンド処理コンポーネント113は、デジタル署名207が有効ではないと判断し、コマンド拡張要求は拒否される。
【0039】
図2Bに示されるように、拡張モジュール206は、デジタル署名207の確認の成功に少なくとも部分的に基づいて、コントローラ115に一時的にインストールされる。このようにして、コントローラ115のコマンドは、コントローラ115に更新されたファームウェアパッケージを提供する必要なく、かつ拡張モジュール206よりもはるかに大きなサイズになり得る更新されたファームウェアパッケージを検証する必要なく、初期の機能を超えて拡張され得る。
【0040】
いくつかの実施形態では、コマンド処理コンポーネント113は、インストール前に拡張モジュール206のセキュリティバージョンを検証し得る。セキュリティバージョンは、アンチロールバックサポートのために(例えば、有効に署名された拡張モジュールがデバイスにインストールされるのを防ぐために)使用される。例えば、コマンド処理コンポーネント113は、コントローラ115にインストールされたコマンド拡張モジュールを追跡するためのセキュリティバージョンカウンタを維持し得、セキュリティバージョンのセキュリティバージョンカウンタとの比較を実行することによって、拡張モジュール206のセキュリティバージョンを検証し得る。ダウンロードされ、検証されたコマンド拡張モジュールのセキュリティバージョンが、コマンド処理コンポーネント113によって維持される格納されたセキュリティバージョンカウンタ値以上である場合(例えば、ローカルメモリ119などのメモリサブシステムコントローラ115のNVM内)、次に、ダウンロードされたコマンド拡張モジュールをインストールし、使用することができる。それ以外の場合、モジュールのセキュリティバージョンが格納されたセキュリティバージョン未満である場合、コマンド拡張モジュールは、コマンド処理コンポーネント113によって拒否される。コマンド拡張モジュールが受け入れられると、コマンド処理コンポーネント113は、コマンド拡張モジュールのセキュリティバージョンが現在格納されている値を超えている場合、格納されているセキュリティバージョン値を更新する(例えば、インクリメントする)。
【0041】
さまざまな他の実施形態では、TTL値は、コマンド拡張モジュールの存続期間を制御するために、セキュリティバージョンカウンタに加えてまたはその代わりに使用され得る。すなわち、コマンド拡張モジュールはTTL値を含み得、コマンド拡張モジュールがダウンロードされ、検証されると、TTLカウンタはカウントダウンを始める。TTLカウンタがゼロに到達すると、コマンド拡張モジュールはデバイスメモリから消去され得、新しい拡張モジュールをダウンロードする必要がある。
【0042】
図2Bを引き続き参照すると、ホストシステム120は、コントローラ115にコマンドを送信し得る(例えば、ユーザー205からの入力に基づいて)。拡張リダイレクトコンポーネント114は、コマンドを解析し、このコマンドが、拡張モジュール206が処理することができ且つ該処理を担当するコマンドタイプに対応する、と判断する。拡張コマンドが、拡張モジュール206に関連付けられた新しいコマンドタイプに対応すると判断することに基づいて、拡張リダイレクトコンポーネント114は、コマンドを拡張モジュール206にリダイレクトし、拡張モジュール206は、次にコマンドを処理する。コマンドを処理する際に、拡張モジュール206は、ファームウェア203への1つまたは複数のコールバックを実行して、ファームウェア203によって提供される機能を呼び出し得る。
【0043】
拡張モジュール206は、揮発性メモリデバイス(例えば、メモリデバイス130)に格納され、したがって拡張モジュール206は、メモリサブシステム110のリブート時に消去されるため、拡張モジュール206は、コントローラ115に一時的にインストールされる。例えば、
図2Cに示されるように、拡張モジュール206は、リブート後はコントローラ115にロードされなくなる。別の例では、拡張モジュール206は、拡張モジュール206に関連付けられたTTL値の満了に基づいて消去され得る。上述のように、拡張モジュール206のセキュリティバージョンは、コマンド処理コンポーネント113によって維持されるセキュリティバージョンカウンタにもはや対応しないため、コマンド処理コンポーネント113は、拡張モジュール206を再インストールすることはできない。
【0044】
図3及び
図4は、本開示のいくつかの実施形態による、メモリサブシステムのコマンドの動的拡張のための例示的な方法300を示す流れ図である。方法300は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行(run)または実行(executed)される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、方法300は、
図1のコマンド処理コンポーネント113によって実行される。プロセスが特定のシーケンスまたは順序で示されているが、特別の定めのない限り、プロセスの順序は修正することができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行することができ、いくつかのプロセスは並行して実行することができる。さらに、さまざまな実施形態では、1つまたは複数のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
【0045】
方法300の前に、非対称公開/秘密鍵ペア-公開鍵及び秘密鍵-は、事前に生成され、処理デバイスは、公開鍵をプロビジョニングされ得るか、またはそれ以外の場合に公開鍵にアクセスし得、一方、秘密鍵は別の、異なる安全な環境(例えば、OEMによって運営される)に維持される。さらに、処理デバイスは、処理デバイスが所定のコマンドタイプのセットを処理することを可能にするファームウェアを含む。
【0046】
操作305で、処理デバイスは、コマンド拡張要求の一部として、コマンド拡張モジュール及びデジタル署名を受信する。コマンド拡張モジュールは、ファームウェアにより処理デバイスが処理できるようになる所定のコマンドタイプのセットには含まれていない少なくとも1つの新しいコマンドタイプを処理デバイスが処理すること、を可能にするマシン可読命令のセットを含む。デジタル署名は、秘密鍵を使用して、コマンド拡張モジュールに基づいて生成される。暗号化署名を用いたコマンド拡張モジュールの署名は、リモートの安全な環境で行われ得る。デジタル署名は、リベストシャミアエーデルマン(RSA)アルゴリズムなどの暗号アルゴリズムを使用して生成された非対称暗号化署名を含む場合がある。暗号化署名は、1つまたは複数のデバイスと共有できる公開鍵、及び限られた数のデバイスと共有できる秘密鍵に関連付けることができる。公開鍵と秘密鍵の組み合わせは、非対称暗号化アルゴリズムを使用して、コマンド拡張モジュールの整合性を検証するために使用することができる。いくつかの実施形態と一致して、コマンド拡張モジュールはまた、例えば対称暗号アルゴリズム(例えば、高度暗号化標準(AES))を使用して暗号化され得る。
【0047】
コマンド拡張要求は、ホストシステム120から受信され得る。いくつかの実施形態では、要求を受信することは、ホストシステムインタフェースを介してホストシステムから1つまたは複数のコマンドを受信することを含む。いくつかの実施形態では、要求を受信することは、通信ポート(例えば、UARTポートまたは双方向通信をサポートする他のシリアル通信ポート)を介してホストシステムから要求を受信することを含む。いくつかの実施形態では、帯域外インタフェースは、ホストシステム120と処理デバイス(例えば、システム管理バス(SMBus)または集積回路間回路(I2C)バス)との間でデータを交換するために使用できる。
【0048】
処理デバイスは、操作310で、秘密鍵に対応する公開鍵を使用してデジタル署名を検証する。上述のように、処理デバイスは、以前に公開鍵をプロビジョニングされている。公開鍵は、不揮発性メモリデバイス(例えば、ローカルメモリ119またはメモリデバイス140)に維持されている鍵ストア(例えば、鍵ストア202)に格納され得る。公開鍵と秘密鍵の組み合わせは、1つまたは複数の暗号手順に基づいてデジタル署名を検証するために使用することができる。例えば、デジタル署名は、署名を生成するために使用される非対称暗号アルゴリズム(例えば、RSA)を使用する非対称暗号手順に基づいて検証することができる非対称暗号化署名であってよい。
【0049】
デジタル署名の確認の成功に応えて、処理デバイスは、操作315で、コマンド拡張モジュールを一時的にインストールする。コマンド拡張モジュールのインストールは、揮発性メモリデバイス(例えば、メモリデバイス130)にコマンド拡張モジュールを格納することを含む。このようにして、コマンド拡張モジュールはシステムリブート時またはTTL値の満了時に失われるため、コマンド拡張モジュールのインストールは、永続的ではない。
【0050】
操作320で、処理デバイスはコマンドを受信し、操作325で、コマンドがコマンド拡張モジュールが処理できるコマンドタイプに対応すると判断する。コマンドは、ホストインタフェースを介してホストシステム120から受信され得る。
【0051】
コマンドが、コマンド拡張モジュールが処理できるコマンドタイプに対応すると判断することに応えて、処理デバイスは、操作330で、拡張されたコマンドをコマンド拡張モジュールに転送する。より具体的には、処理デバイスは、コマンド拡張モジュールが処理を担当するコマンドを、コマンド拡張モジュールへリダイレクトすることを担当する拡張リダイレクトコンポーネント(例えば、拡張リダイレクトコンポーネント114)を含み得る。拡張リダイレクトコンポーネントは、コマンドを解析して、コマンドが、コマンド拡張モジュールが処理するコマンドタイプに対応すると判断する場合がある。
【0052】
コマンド拡張モジュールは、操作335で、拡張されたコマンドを処理する。コマンド拡張モジュールは、拡張されたコマンドを処理する際に1つまたは複数のアクションを実行し得る。いくつかの例では、コマンド拡張モジュールは、拡張されたコマンドを処理するために必要とされるサポート機能のために、処理デバイスへの1つまたは複数のコールバックを実行する場合がある。
【0053】
図4に示されるように、方法300は、いくつかの実施形態では、操作311、312、及び316を含み得る。これらの実施形態と一致して、操作311及び312は、処理デバイスがコマンド拡張モジュールを一時的にインストールする操作315の前に実行され得る。
【0054】
操作311で、処理デバイスは、コマンド拡張モジュールのセキュリティバージョンを決定する。コマンド拡張モジュールのセキュリティバージョンは、例えば、コマンド拡張モジュールが含まれていたコマンド拡張要求に含まれる場合がある。
【0055】
操作312で、処理デバイスは、コマンド拡張モジュールのセキュリティバージョンを確認する。処理デバイスは、処理デバイスによってインストールされたコマンド拡張モジュールを追跡するために使用される格納された情報に基づいて、コマンド拡張モジュールのセキュリティバージョンを確認する。例えば、処理デバイスは、どのコマンド拡張モジュールが、処理デバイスによってインストールされたのかを追跡するためにセキュリティバージョンカウンタを維持し得る。処理デバイスは、コマンド拡張モジュールが以前にインストールされたのかどうかを判断するために、コマンド拡張モジュールのセキュリティバージョンを、セキュリティバージョンカウンタと比較し得る。コマンド拡張モジュールが以前にインストールされていなかった場合、処理デバイスは、セキュリティバージョンを成功裏に確認し、確認の成功に基づいて拡張モジュールをインストールする。コマンド拡張モジュールが以前にインストールされていた場合、処理デバイスは、セキュリティバージョンが無効であると判断し、処理デバイスはコマンド拡張要求を拒否する。
【0056】
これらの実施形態と一致して、操作316は、操作315の後に実行され得る。操作316で、処理デバイスは、コマンド拡張モジュールのインストールに基づいて、セキュリティバージョンカウンタをインクリメントする。上述のように、セキュリティバージョンカウンタは、どのコマンド拡張モジュールが処理デバイスによってインストールされたのかを追跡するために使用される。セキュリティバージョンカウンタを更新した後、コマンド拡張モジュールは、処理デバイスによってインストールできなくなる。
【0057】
さまざまな他の実施形態では、セキュリティバージョンカウンタに加えて、またはその代わりに、TTL値が使用され得る。すなわち、コマンド拡張モジュールは、拡張モジュールの存続期間を制御するために使用されるTTL値を指定することができる。つまり、コマンド拡張モジュールがダウンロードされ、検証されると、TTLカウンタはカウントダウンを始める。TTLカウンタがゼロに到達すると、拡張モジュールはデバイスメモリからパージされ、新しい拡張モジュールをダウンロードする必要がある。
【0058】
例1は、揮発性記憶媒体を備える揮発性メモリデバイスと、初期のコマンドタイプのセットを処理するように構成された処理デバイスであって、コマンド拡張モジュール及びデジタル署名を受信することであって、前記デジタル署名が、鍵ペアの秘密鍵を使用して前記コマンド拡張モジュールに基づいて生成され、前記コマンド拡張モジュールが、前記処理デバイスによってインストールされると、前記処理デバイスが、前記初期のコマンドタイプのセットには含まれていない新しいコマンドタイプを処理することを可能にする、前記受信することと、前記鍵ペアの公開鍵を使用して前記デジタル署名を検証することと、前記デジタル署名の検証の成功に基づいて、前記コマンド拡張モジュールを前記システムに一時的にインストールすることであって、前記コマンド拡張モジュールの前記一時的なインストールが、前記揮発性メモリデバイスに前記コマンド拡張モジュールをロードすることを含む、前記一時的にインストールすることとを含む操作を実行するために、前記揮発性メモリデバイスと動作可能なように結合された前記処理デバイスとを備えるシステムである。
【0059】
例2では、例1の主題は、コマンドを受信し、前記コマンドが前記新しいコマンドタイプに対応すると判断し、前記新しいコマンドタイプに対応する前記コマンドに基づいて前記コマンドを前記コマンド拡張モジュールに転送するために拡張リダイレクトコンポーネントを任意選択で備える。
【0060】
例3では、例1または2のいずれか1つまたは複数に記載の前記コマンド拡張モジュールが前記コマンドを処理する。
【0061】
例4では、例1~3のいずれか1つまたは複数に記載の前記コマンド拡張モジュールが、前記コマンドを処理する際に、前記ファームウェアへの1つまたは複数のコールバックを実行する。
【0062】
例5では、例1~4のいずれか1つに記載の前記コマンド拡張モジュールが、システムリブート時またはTTL値の満了時に消去される。
【0063】
例6では、例1~5のいずれか1つまたは複数に記載の前記操作が、前記コマンド拡張モジュールのセキュリティバージョンを決定することと、格納されている情報に基づいて前記コマンド拡張モジュールの前記セキュリティバージョンを確認することとを任意選択で含む。
【0064】
例7では、例1~6のいずれか1つまたは複数に記載の前記操作が、前記コマンド拡張モジュールの前記セキュリティバージョンをセキュリティバージョンカウンタと比較することによって、前記コマンド拡張モジュールのセキュリティバージョンを確認することを任意選択で含む。
【0065】
例8では、例1~7のいずれか1つまたは複数の前記操作が、前記コマンド拡張モジュールを一時的にインストールすることに基づいて、前記セキュリティバージョンカウンタをインクリメントすることを任意選択で含む。
【0066】
例9で、例1~8のいずれか1つまたは複数に記載の前記主題が、前記公開鍵を格納するための不揮発性記憶媒体を任意選択で備える。
【0067】
例10で、例1~9のいずれか1つまたは複数に記載の前記主題が、ホストインタフェースを任意選択で備え、前記コマンド拡張モジュール及び前記デジタル署名が、コマンド拡張要求の一部として、前記ホストインタフェースを介して受信される。
【0068】
例11で、例1~10の任意の1つまたは複数に記載の操作が、前記公開鍵及び前記秘密鍵の組み合わせに基づいて前記デジタル署名を検証するために、非対称暗号アルゴリズムを使用することを任意選択で含む。
【0069】
例12は、マシンの1つまたは複数のプロセッサを備えるメモリサブシステムコントローラによって、コマンド拡張モジュール及びデジタル署名を受信することであって、前記デジタル署名が、鍵ペアの秘密鍵を使用して前記コマンド拡張モジュールに基づいて生成され、前記メモリサブシステムコントローラが、前記メモリサブシステムが初期のコマンドタイプのセットを処理することを可能にするファームウェアを備え、前記コマンド拡張モジュールが、前記メモリサブシステムコントローラによってインストールされると、前記初期のコマンドタイプのセットには含まれていない新しいコマンドタイプを、前記メモリサブシステムコントローラが処理することを可能にするマシン可読命令のセットを含む、前記受信することと、前記メモリサブシステムコントローラによって、前記鍵ペアの公開鍵を使用して前記デジタル署名を検証することと、前記デジタル署名の検証の成功に基づいて、前記メモリサブシステムコントローラで、前記コマンド拡張モジュールを一時的にインストールすることであって、前記コマンド拡張モジュールの前記一時的なインストールが、前記メモリサブシステムコントローラの揮発性メモリデバイスに前記コマンド拡張モジュールを格納することを含む、前記インストールすることとを含む方法である。
【0070】
例13で、例1に記載の前記主題が、前記コマンドが前記新しいコマンドタイプに対応すると判断することと、前記コマンドが前記新しいコマンドタイプに対応することに基づいて、前記コマンドを前記コマンド拡張モジュールに転送することとを任意選択で含む。
【0071】
例14で、例12または13のいずれか1つまたは複数に記載の前記主題が、前記拡張コマンドモジュールを使用して前記コマンドを処理することを任意選択で含む。
【0072】
例15で、例12~14のいずれか1つに記載の前記コマンド拡張モジュールが、システムリブート時に消去される。
【0073】
例16で、前記例12~15のいずれか1つまたは複数に記載の前記主題が、前記コマンド拡張モジュールのセキュリティバージョンを決定することと、格納されている情報に基づいて前記コマンド拡張モジュールの前記セキュリティバージョンを確認することとを任意選択で含む。
【0074】
例17で、例12~16のいずれか1つまたは複数に記載の前記操作が、前記コマンド拡張モジュールのセキュリティバージョンを、セキュリティバージョンカウンタと比較することによって、前記コマンド拡張モジュールの前記セキュリティバージョンを確認することと、前記コマンド拡張モジュールを一時的にインストールすることに基づいて、前記セキュリティバージョンカウンタをインクリメントすることとを任意選択で含む。
【0075】
例18で、例12~17のいずれか1つまたは複数に記載の前記主題が、コマンド拡張要求の一部として、ホストインタフェースを介してホストシステムから、前記コマンド拡張モジュール及び前記デジタル署名を受信することを任意選択で含む。
【0076】
例19で、例12~18の任意の1つまたは複数に記載の前記主題が、前記公開鍵及び前記秘密鍵の組み合わせに基づいて前記デジタル署名を検証するために、非対称暗号アルゴリズムを使用することを任意選択で含む。
【0077】
例20は、処理デバイスによる実行時に、コマンド拡張モジュール及びデジタル署名を受信することであって、前記デジタル署名が、鍵ペアの秘密鍵を使用して前記コマンド拡張モジュールに基づいて生成され、前記処理デバイスが、前記処理デバイスが初期のコマンドタイプのセットを処理することを可能にするファームウェアを備え、前記コマンド拡張モジュールが、前記処理デバイスによってインストールされると、前記初期のコマンドタイプのセットには含まれていない新しいコマンドタイプを、前記処理デバイスが処理することを可能にするマシン可読命令のセットを含む、前記受信することと、前記鍵ペアの公開鍵を使用して前記デジタル署名を検証することと、前記デジタル署名の検証の成功に基づいて、前記コマンド拡張モジュールを一時的にインストールすることであって、前記コマンド拡張モジュールの前記一時的なインストールが、前記処理デバイスの揮発性メモリデバイスに前記コマンド拡張モジュールを格納することを含む、前記インストールすることとを含む操作を実行するように前記処理デバイスを構成する命令を含む非一時的なコンピュータ可読記憶媒体である。
【0078】
図5は、コンピュータシステム500の形の例示的なマシンを示しており、その中で、命令のセットは、マシンに、本明細書で説明される方法のいずれか1つまたは複数を実行させるために実行することができる。いくつかの実施形態では、コンピュータシステム500は、メモリサブシステム(例えば、
図1のメモリサブシステム110)を含む、それに結合される、もしくはそれを利用するホストシステム(例えば、
図1のホストシステム120)に相当する場合があるか、またはコントローラの操作を実行するために(例えば、
図1のコマンド処理コンポーネント113に対応する操作を実行するようにオペレーティングシステムを実行するために)使用することができる。代替の実施形態では、マシンを、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、及び/またはインターネット内の他のマシンに接続する(例えば、ネットワーク接続する)ことができる。マシンは、クライアントサーバネットワーク環境内のサーバまたはクライアントマシンの機能で、ピアツーピア(または分散)ネットワーク環境内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャまたは環境内のサーバまたはクライアントマシンとして動作することができる。
【0079】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって講じられる処置を指定する命令のセットを(連続してまたは別の方法で)実行できる任意のマシンである場合がある。さらに、単一のマシンが示されているが、用語「マシン」はまた、本明細書で説明される方法の任意の1つまたは複数を実行するために、個々でまたは共同して命令の1つのセット(または複数のセット)を実行するマシンの任意の集まりを含むと解釈されるものとする。
【0080】
例示的なコンピュータシステム500は、バス530を介して互いに通信する、処理デバイス502、メインメモリ504(例えば、ROM、フラッシュメモリ、SDRAMまたはRambus DRAM(RDRAM)のようなDRAMなど)、スタティックメモリ506(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、及びデータストレージシステム518を含む。
【0081】
処理デバイス502は、マイクロプロセッサ、中央処理装置など、1つまたは複数の汎用処理デバイスを表す。より具体的には、処理デバイス502は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサであり得る。また、処理デバイス502は、ASIC、FPGA、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサなど、1つまたは複数の特殊目的の処理デバイスであり得る。処理デバイス502は、本明細書で説明される操作及びステップを実行するための命令525を実行するように構成される。コンピュータシステム500は、ネットワーク520を介して通信するためのネットワークインタフェースデバイス508をさらに含むことができる。
【0082】
データストレージシステム518は、本明細書で説明される方法または機能のいずれか1つまたは複数を具現化する1つまたは複数の命令セット525またはソフトウェアが格納されたマシン可読記憶媒体524(コンピュータ可読媒体としても知られている)を含むことができる。命令525はまた、マシン可読記憶媒体を構成するコンピュータシステム500、メインメモリ504、及び処理デバイス502がそれを実行する間に、メインメモリ504内及び/または処理デバイス502内に完全にまたは少なくとも部分的に存在することができる。マシン可読記憶媒体524、データストレージシステム518、及び/またはメインメモリ504は、
図1のメモリサブシステム110に対応する場合がある。
【0083】
一実施形態では、命令526は、セキュリティコンポーネント(例えば、
図1のコマンド処理コンポーネント113)に対応する機能を実装するための命令を含む。マシン可読記憶媒体524は、単一の媒体であると例示的な実施形態で示されているが、用語「マシン可読記憶媒体」は、1つまたは複数の命令のセットを格納する単一の媒体または複数の媒体を含むと解釈されるべきである。用語「マシン可読記憶媒体」はまた、マシンによって実行するための命令のセットを格納またはエンコードすることが可能であり、マシンに本開示の方法の任意の1つまたは複数を実行させる任意の媒体を含むと解釈されるものとする。したがって、用語「マシン可読記憶媒体」は、ソリッドステートメモリ、光媒体、及び磁気媒体を含むが、これらに限定されないと解釈されるものとする。
【0084】
先行する詳細な説明の一部は、アルゴリズム及びコンピュータメモリ内のデータビットに対する操作の記号表現の観点から提示されている。このようなアルゴリズムの説明及び表現は、その働きの趣旨を当業者に最も効果的に伝えるためにデータ処理技術において当業者が用いる方法である。アルゴリズムはここでは、及び全般的に、望ましい結果に至る自己矛盾のない動作順序であると考えられる。動作は、物理量の物理的な操作を必要とするものである。通常、必ずしもではないが、これらの量は格納し、組み合わせ、比較し、及び他の方法で操作することができる電気または磁気信号という形を取る。主に共通使用の理由により、これらの信号をビット、値、要素、シンボル、文字、用語、数などと称することが、時によって好都合であることが分かっている。
【0085】
しかし、これら及び同様の用語はすべて、適切な物理量に対応付けられるべきであり、これらの量に適用される好都合な標示にすぎないことを認識しておくべきである。本開示は、コンピュータシステムのレジスタ及びメモリ内で物理(電子的)量として表されるデータを操作し、コンピュータシステムのメモリまたはレジスタまたはそのような情報ストレージシステム内で同様に物理量として表される他のデータに変換する、コンピュータシステム、または類似した電子コンピューティングデバイスの動作及びプロセスを参照することができる。
【0086】
本開示はまた、本明細書の操作を実行するための装置に関する。この装置は、意図された目的のために専用に構築することができる、またはコンピュータに格納されたコンピュータプログラムによって選択的にアクティブにされる、または再構成される汎用コンピュータを含むことができる。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、及び光磁気ディスク、ROM、RAM、消去可能でプログラム可能な読み出し専用メモリ(EPROM)、EEPROM、磁気もしくは光カードを含む任意のタイプのディスク、またはそれぞれがコンピュータシステムバスに結合される電子命令の格納に適した任意のタイプの媒体であるが、これらに限定されないコンピュータ可読記憶媒体に格納することができる。
【0087】
本明細書で示したアルゴリズム及び表示は、何らかの特定のコンピュータまたは他の装置に本来的に関するものではない。さまざまな汎用システムを、本明細書での教示に従ってプログラムによって用いることもできるし、または本方法を行うためにより専用の装置を構築することが好都合であることが分かる可能性もある。種々のこれらのシステムの構造は、上記の説明で述べるように現れる。加えて、本開示は何らかの特定のプログラミング言語に関して説明されていない。本明細書で説明したような本開示の教示を実施するために、種々のプログラミング言語を使用できることを理解されたい。
【0088】
本開示を、本開示に従ってプロセスを実行するようにコンピュータシステム(または他の電子装置)をプログラミングするために使用できる命令が格納されたマシン可読媒体を含むことができる、コンピュータプログラム製品またはソフトウェアとして示すことができる。マシン可読媒体は、マシン(例えば、コンピュータ)によって可読な形式で情報を格納するための任意のメカニズムを含む。いくつかの実施形態では、マシン可読(例えば、コンピュータ可読)媒体は、ROM、RAM、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリコンポーネントなどのマシン可読(例えば、コンピュータ可読)記憶媒体を含む。
【0089】
上述の明細書では、本開示の実施形態は、その特定の例示的な実施形態を参照して説明されてきた。以下の特許請求の範囲に述べる本開示の実施形態のより広い範囲から逸脱することなく、さまざまな変更を加えることができることが明らかである。したがって、明細書及び図面は限定的な意味ではなく例示的な意味で考慮されるべきである。