(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023178262
(43)【公開日】2023-12-14
(54)【発明の名称】セキュアな証明書認証を用いた書き込み保護機能
(51)【国際特許分類】
H04L 9/32 20060101AFI20231207BHJP
G06F 21/62 20130101ALI20231207BHJP
G06F 21/64 20130101ALI20231207BHJP
【FI】
H04L9/32 200D
G06F21/62 318
G06F21/64
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023090793
(22)【出願日】2023-06-01
(31)【優先権主張番号】63/348,783
(32)【優先日】2022-06-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】18/066,433
(32)【優先日】2022-12-15
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】518364964
【氏名又は名称】ルネサス エレクトロニクス アメリカ インコーポレイテッド
【氏名又は名称原語表記】RENESAS ELECTRONICS AMERICA INC.
【住所又は居所原語表記】1001 Murphy Ranch Road, Milpitas, California 95035, U.S.A.
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】シュエタル・アルビンド・パテル
(57)【要約】 (修正有)
【課題】不揮発性メモリブロックのセキュアな証明書認証を用いたデータの読み取り保護及び書き込み保護を行う装置を提供する。
【解決手段】情報処理システムにおいて、メモリシステムは、エンティティに対応する証明書チェーン326を含むメモリスロット324と、メモリブロックと、処理デバイスと、を含む。メモリブロックは、保護が有効になっている。処理デバイスは、エンティティのコンピューティングデバイスからメモリブロックの保護を解除するための要求メッセージを受信する。要求メッセージは、エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む。処理デバイスはまた、証明書チェーンに少なくとも部分的に基づいて、エンティティに対応する公開鍵を決定し、公開鍵に少なくとも部分的に基づいて、署名が有効であると決定し、メモリブロックの保護が証明書チェーンに対応すると決定し、メモリブロックの保護を解除する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
エンティティに対応する証明書チェーンを含むメモリスロットと、
保護が有効になっているメモリブロックと、
メモリに結合された少なくとも1つの処理デバイスと、
を備える装置であって、
前記少なくとも1つの処理デバイスは、
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む要求メッセージであって、前記メモリブロックの保護を解除するための前記要求メッセージを前記エンティティのコンピューティングデバイスから受信し、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する公開鍵を決定し、
前記公開鍵に少なくとも部分的に基づいて、前記署名が有効であると決定し、
前記メモリブロックの保護が前記証明書チェーンに対応すると決定し、
前記署名が有効であるという決定と、前記メモリブロックの保護が前記証明書チェーンに対応するという決定とに少なくとも部分的に基づいて、前記メモリブロックの保護を解除するように構成される、
装置。
【請求項2】
前記少なくとも1つの処理デバイスは、
前記エンティティのコンピューティングデバイスから前記証明書チェーンを受信し、
前記証明書チェーンを前記メモリスロットにインストールするようにさらに構成され、
前記メモリブロックの保護は、書き込み保護および読み取り保護のうちの一方である、
請求項1に記載の装置。
【請求項3】
前記メモリブロックは、複数の前記メモリブロックのうちの第1のメモリブロックを含み、
前記複数のメモリブロックのうちの第2のメモリブロックは、保護が有効になっており、
前記要求メッセージは、第1の要求メッセージを含み、
前記署名は、第1の署名を含み、
前記少なくとも1つの処理デバイスは、
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された第2の署名を含む第2の要求メッセージであって、前記第2のメモリブロックの保護を解除するための前記第2の要求メッセージを前記エンティティのコンピューティングデバイスから受信し、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する前記公開鍵を決定し、
前記公開鍵に少なくとも部分的に基づいて、前記第2の署名が有効であると決定し、
前記第2のメモリブロックの保護が前記証明書チェーンに対応しないと決定し、
前記第2のメモリブロックの保護が前記証明書チェーンに対応しないという決定に少なくとも部分的に基づいて、エラーを含む応答メッセージを返すようにさらに構成される、
請求項1に記載の装置。
【請求項4】
前記メモリスロットは、複数のメモリスロットを含み、
前記証明書チェーンは、前記複数のメモリスロットのうちの第1のメモリスロットにインストールされた第1の証明書チェーンを含み、前記エンティティは、第1のエンティティを含み、
前記複数のメモリスロットのうちの第2のメモリスロットは、第2のエンティティに対応する第2の証明書チェーンを含み、
前記少なくとも1つの処理デバイスは、
前記第2のエンティティの秘密鍵に少なくとも部分的に基づいて生成された第3の署名を含む第3の要求メッセージであって、前記第2のメモリブロックの保護を解除するための前記第3の要求メッセージを前記第2のエンティティのコンピューティングデバイスから受信し、
前記第2の証明書チェーンに少なくとも部分的に基づいて、前記第2のエンティティに対応する第2の公開鍵を決定し、
前記第2の公開鍵に少なくとも部分的に基づいて、前記第3の署名が有効であると決定し、
前記第2のメモリブロックの保護が前記第2の証明書チェーンに対応すると決定し、
前記第2の署名が有効であるという決定と、前記第2のメモリブロックの保護が前記第2の証明書チェーンに対応するという決定とに少なくとも部分的に基づいて、前記第2のメモリブロックの保護を解除するようにさらに構成される、
請求項3に記載の装置。
【請求項5】
前記証明書チェーンは、復号化証明書を含む複数の証明書を含み、前記復号化証明書は、前記エンティティの秘密鍵に対応する前記公開鍵を格納する、請求項1に記載の装置。
【請求項6】
前記要求メッセージは、第1の要求メッセージを含み、
前記署名は、第1の署名を含み、
前記少なくとも1つの処理デバイスは、
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された第2の署名を含む第2の要求メッセージであって、保護設定/解除モードを開始するための前記第2の要求メッセージを前記エンティティのコンピューティングデバイスから受信し、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する前記公開鍵を決定し、
前記公開鍵に少なくとも部分的に基づいて、前記第2の署名が有効であると決定し、
前記第2の署名が有効であるという決定に少なくとも部分的に基づいて、第1のノンスを含む応答メッセージを前記エンティティのコンピューティングデバイスに返すようにさらに構成され、
前記第1の要求メッセージは、第2のノンスを含み、
前記少なくとも1つの処理デバイスは、前記第2のノンスと前記第1のノンスとが一致すると決定するようにさらに構成され、
前記メモリブロックの保護の解除は、前記第2のノンスと前記第1のノンスとが一致するという決定に少なくとも部分的に基づいている、
請求項1に記載の装置。
【請求項7】
前記少なくとも1つの処理デバイスは、
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む要求メッセージであって、前記証明書チェーンを無効にするための前記要求メッセージを前記エンティティのコンピューティングデバイスから受信し、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する前記公開鍵を決定し、
前記公開鍵に少なくとも部分的に基づいて、前記署名が有効であると決定し、
前記署名が有効であるという決定に少なくとも部分的に基づいて、前記証明書チェーンを無効にするようにさらに構成される、
請求項1に記載の装置。
【請求項8】
エンティティに対応する証明書チェーンを含むメモリスロットと、
メモリに結合された少なくとも1つの処理デバイスと、
を備える装置であって、
前記少なくとも1つの処理デバイスは、
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む要求メッセージであって、前記装置のファームウェアを更新するための前記要求メッセージを受信し、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する公開鍵を決定し、
前記公開鍵に少なくとも部分的に基づいて、前記署名が有効であると決定し、
前記署名が有効であるという決定に少なくとも部分的に基づいて、ファームウェア更新動作を実行するように構成される、
装置。
【請求項9】
前記要求メッセージは、不透明型データフィールドから入力されたデータを含むフィールドを含み、
前記装置は、第1のファームウェアスロットを含み、前記第1のファームウェアスロットは、アクティブファームウェアスロットであり、
前記装置は、第2のファームウェアスロットを含み、
前記ファームウェア更新動作は、
前記署名が有効であるという決定に少なくとも部分的に基づいて、ファームウェア更新モードを開始するステップと、
第1のノンスを生成するステップと、
前記不透明型データフィールドから入力された前記データに少なくとも部分的に基づいて、新しい公開鍵を生成するステップと、
前記第1のノンスを、前記装置に関連付けられたメモリコントローラに提供するステップと、
前記メモリコントローラから、第2の署名、第2のノンス、およびファームウェアデータパッケージを含むファームウェア転送要求を受信するステップと、
前記新しい公開鍵に少なくとも部分的に基づいて、前記第2の署名が有効であると決定するステップと、
前記第2のノンスと前記第1のノンスとが一致すると決定するステップと、
前記新しい公開鍵に少なくとも部分的に基づく前記第2の署名が有効であるという決定と、前記第2のノンスと前記第1のノンスとが一致するという決定とに少なくとも部分的に基づいて、前記第2のファームウェアスロットへの前記ファームウェアデータパッケージの転送を開始するステップと、
を含む、請求項8に記載の装置。
【請求項10】
前記ファームウェア更新動作は、
前記メモリコントローラから、第3の署名、第3のノンス、およびファームウェア転送終了コマンドを含む第2のファームウェア転送要求を受信するステップと、
前記新しい公開鍵に少なくとも部分的に基づいて、前記第3の署名が有効であると決定するステップと、
前記第3のノンスと前記第1のノンスとが一致すると決定するステップと、
前記新しい公開鍵と、前記第2のノンスと前記第1のノンスとが一致するという決定とに少なくとも部分的に基づいて、前記ファームウェア転送終了コマンドを実行するステップと、
をさらに含む、請求項9に記載の装置。
【請求項11】
前記ファームウェア更新動作は、
前記ファームウェア転送終了コマンドの実行に少なくとも部分的に基づいて、前記ファームウェアデータパッケージから第4の署名を抽出するステップと、
前記新しい公開鍵を使用して前記第4の署名を復号化して、第1のファームウェアデータハッシュを取得するステップと、
前記ファームウェアデータパッケージのファームウェアデータに少なくとも部分的に基づいて、第2のファームウェアデータハッシュを計算するステップと、
前記第1のファームウェアデータハッシュと前記第2のファームウェアデータハッシュとが一致すると決定するステップと、
前記第1のファームウェアデータハッシュと前記第2のファームウェアデータハッシュとが一致するという決定に少なくとも部分的に基づいて、ファームウェアアクティベート動作を実行するステップと、
をさらに含む、請求項10に記載の装置。
【請求項12】
前記ファームウェアアクティベート動作は、
前記メモリコントローラからファームウェアアクティベートコマンドを受信するステップと、
前記ファームウェアデータパッケージを含む前記第2のファームウェアスロットを前記アクティブファームウェアスロットとして設定するステップと、
前記装置の電源を投入し、前記電源の投入により、前記ファームウェアデータパッケージがアクティベートされるステップと、
を含む、請求項11に記載の装置。
【請求項13】
前記ファームウェアアクティベート動作は、
前記第1のノンスをクリアするステップと、
前記新しい公開鍵をクリアするステップと、
をさらに含む、請求項12に記載の装置。
【請求項14】
ハードウェアを備える少なくとも1つの処理デバイスによって実現される方法であって、
エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む要求メッセージであって、装置のメモリブロックの保護を解除するための前記要求メッセージを前記エンティティのコンピューティングデバイスから受信するステップと、
前記エンティティに対応する証明書チェーンであって、前記装置のメモリスロットにインストールされた前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する公開鍵を決定するステップと、
前記公開鍵に少なくとも部分的に基づいて、前記署名が有効であると決定するステップと、
前記メモリブロックの保護が前記証明書チェーンに対応すると決定するステップと、
前記署名が有効であるという決定と、前記メモリブロックの保護が前記証明書チェーンに対応するという決定とに少なくとも部分的に基づいて、前記メモリブロックの保護を解除するステップと、
を含む、方法。
【請求項15】
前記証明書チェーンを前記エンティティのコンピューティングデバイスから受信するステップと、
前記証明書チェーンを前記メモリスロット内にインストールするステップと、
をさらに含み、
前記メモリブロックの保護は、書き込み保護および読み取り保護のうちの一方である、
請求項14に記載の方法。
【請求項16】
前記メモリブロックは、複数のメモリブロックのうちの第1のメモリブロックを含み、
前記複数のメモリブロックのうちの第2のメモリブロックは、保護が有効になっており、
前記要求メッセージは、第1の要求メッセージを含み、
前記署名は、第1の署名を含み、
前記方法は、
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された第2の署名を含む第2の要求メッセージであって、前記第2のメモリブロックの保護を解除するための前記第2の要求メッセージを前記エンティティのコンピューティングデバイスから受信するステップと、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する前記公開鍵を決定するステップと、
前記公開鍵に少なくとも部分的に基づいて、前記第2の署名が有効であると決定するステップと、
前記第2のメモリブロックの保護が前記証明書チェーンに対応しないと決定するステップと、
前記第2のメモリブロックの保護が前記証明書チェーンに対応しないという決定に少なくとも部分的に基づいて、エラーを含む応答メッセージを返すステップと、
をさらに含む、請求項14に記載の方法。
【請求項17】
前記メモリスロットは、複数のメモリスロットを含み、
前記証明書チェーンは、前記複数のメモリスロットのうちの第1のメモリスロットにインストールされた第1の証明書チェーンを含み、前記エンティティは、第1のエンティティを含み、
前記複数のメモリスロットのうちの第2のメモリスロットは、第2のエンティティに対応する第2の証明書チェーンを含み、
前記方法は、
前記第2のエンティティの秘密鍵に少なくとも部分的に基づいて生成された第3の署名を含む第3の要求メッセージであって、前記第2のメモリブロックの保護を解除するための前記第3の要求メッセージを前記第2のエンティティのコンピューティングデバイスから受信するステップと、
前記第2の証明書チェーンに少なくとも部分的に基づいて、前記第2のエンティティに対応する第2の公開鍵を決定するステップと、
前記第2の公開鍵に少なくとも部分的に基づいて、前記第3の署名が有効であると決定するステップと、
前記第2のメモリブロックの保護が前記第2の証明書チェーンに対応すると決定するステップと、
前記第2の署名が有効であるという決定と、前記第2のメモリブロックの保護が前記第2の証明書チェーンに対応するという決定とに少なくとも部分的に基づいて、前記第2のメモリブロックの保護を解除するステップと、
をさらに含む、請求項16に記載の方法。
【請求項18】
前記証明書チェーンは、復号化証明書を含む複数の証明書を含み、前記復号化証明書は、前記エンティティの秘密鍵に対応する前記公開鍵を格納する、請求項14に記載の方法。
【請求項19】
前記前記要求メッセージは、第1の要求メッセージを含み、
前記署名は、第1の署名を含み、
前記方法は、
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された第2の署名を含む第2の要求メッセージであって、保護設定/解除モードを開始するための前記第2の要求メッセージを前記エンティティのコンピューティングデバイスから受信するステップと、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する前記公開鍵を決定するステップと、
前記公開鍵に少なくとも部分的に基づいて、前記第2の署名が有効であると決定するステップと、
前記第2の署名が有効であるという決定に少なくとも部分的に基づいて、第1のノンスを含む応答メッセージを前記エンティティのコンピューティングデバイスに返すステップと、
をさらに含み、
前記第1の要求メッセージは、第2のノンスを含み、
前記方法は、前記第2のノンスと前記第1のノンスとが一致すると決定するステップをさらに含み、
前記メモリブロックの保護の解除は、前記第2のノンスと前記第1のノンスとが一致するという決定に少なくとも部分的に基づいている、
請求項14に記載の方法。
【請求項20】
前記エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む要求メッセージであって、前記証明書チェーンを無効にするための前記要求メッセージを前記エンティティのコンピューティングデバイスから受信するステップと、
前記証明書チェーンに少なくとも部分的に基づいて、前記エンティティに対応する前記公開鍵を決定するステップと、
前記公開鍵に少なくとも部分的に基づいて、前記署名が有効であると決定するステップと、
前記署名が有効であるという決定に少なくとも部分的に基づいて、前記証明書チェーンを無効にするステップと、
をさらに含む、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2022年6月3日に出願された米国仮特許出願第63/348,783号の優先権を主張する。その全文は、参照により本出願に組み込まれる。
【0002】
本開示は、データ保護に関する。より詳細には、本開示は、一部の実施形態において、セキュアな証明書認証を用いたデータの読み取り保護および書き込み保護に関する。
【背景技術】
【0003】
書き込み保護に関して、例えばDIMM(dual in-line memory module)やDRAM(dynamic random access memory)などのメモリモジュール内の一部の不揮発性メモリブロックは、明示的に解除されるまで書き込み保護されている。場合によっては、例えば、特定のデータブロックは、メモリモジュール製造業者、チップ製造業者、またはシステム環境製造業者など、メモリモジュールの生産に関わる様々なエンティティが使用するために確保されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
書き込み保護機能または書き込み保護されたブロックの内容を変更するには、テスト環境に存在する可能性があるが通常の使用時には利用できない特定の接続を確立する必要がある場合が多いので、特定のブロックに書き込み保護を設定した後では、多くの場合、メモリモジュールをサービスから外さない限り書き込み保護を解除することはできない。そのため、通常のオペレーティングシステム環境における書き込み保護の設定と書き込み保護されたブロックの解除または書き換えをセキュアに管理することが困難な場合がある。
【課題を解決するための手段】
【0005】
一実施形態において、エンティティに対応する証明書チェーンを含むメモリスロットと、メモリブロックと、を備える装置が提供される。メモリブロックは、保護が有効になっている。該装置は、メモリに結合された少なくとも1つの処理デバイスをさらに備える。少なくとも1つの処理デバイスは、メモリブロックの保護を解除するための要求メッセージをエンティティのコンピューティングデバイスから受信するように構成される。要求メッセージは、エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む。少なくとも1つの処理デバイスは、証明書チェーンに少なくとも部分的に基づいて、エンティティに対応する公開鍵を決定し、公開鍵に少なくとも部分的に基づいて、署名が有効であると決定し、メモリブロックの保護が証明書チェーンに対応すると決定し、署名が有効であるという決定と、メモリブロックの保護が証明書チェーンに対応するという決定とに少なくとも部分的に基づいて、メモリブロックの保護を解除するように構成される。
【0006】
一部の実施形態において、少なくとも1つの処理デバイスは、エンティティのコンピューティングデバイスから証明書チェーンを無効にするための要求メッセージを受信するようにさらに構成される。要求メッセージは、エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む。少なくとも1つの処理デバイスは、証明書チェーンに少なくとも部分的に基づいて、エンティティに対応する公開鍵を決定し、公開鍵に少なくとも部分的に基づいて、署名が有効であると決定し、署名が有効であるという決定に少なくとも部分的に基づいて、証明書チェーンを無効にするようにさらに構成される。
【0007】
別の実施形態において、エンティティに対応する証明書チェーンを含むメモリスロットと、メモリに結合された少なくとも1つの処理デバイスと、を備える装置が提供される。少なくとも1つの処理デバイスは、装置のファームウェアを更新するための要求メッセージを受信するように構成される。要求メッセージは、エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む。少なくとも1つの処理デバイスは、証明書チェーンに少なくとも部分的に基づいて、エンティティに対応する公開鍵を決定し、公開鍵に少なくとも部分的に基づいて、署名が有効であると決定し、署名が有効であるという決定に少なくとも部分的に基づいて、ファームウェア更新動作を実行するように構成される。
【0008】
別の実施形態において、ハードウェアを備える少なくとも1つの処理デバイスによって実現される方法が提供される。該方法は、装置のメモリブロックの保護を解除するための要求メッセージをエンティティのコンピューティングデバイスから受信するステップを含む。要求メッセージは、エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む。該方法は、装置のメモリスロットにインストールされた証明書チェーンに少なくとも部分的に基づいて、エンティティに対応する公開鍵を決定するステップをさらに含む。証明書チェーンは、エンティティに対応する。該方法は、公開鍵に少なくとも部分的に基づいて、署名が有効であると決定するステップと、メモリブロックの保護が証明書チェーンに対応すると決定するステップと、署名が有効であるという決定と、メモリブロックの保護が証明書チェーンに対応するという決定とに少なくとも部分的に基づいて、メモリブロックの保護を解除するステップと、をさらに含む。
【0009】
一部の実施形態において、該方法は、証明書チェーンを無効にするための要求メッセージをエンティティのコンピューティングデバイスから受信するステップをさらに含む。要求メッセージは、エンティティの秘密鍵に少なくとも部分的に基づいて生成された署名を含む。該方法は、証明書チェーンに少なくとも部分的に基づいて、エンティティに対応する公開鍵を決定するステップと、公開鍵に少なくとも部分的に基づいて、署名が有効であると決定するステップと、署名が有効であるという決定に少なくとも部分的に基づいて、証明書チェーンを無効にするステップと、をさらに含む。
【0010】
上述した概要は、例示的なものであり、いかなる場合でも限定的であることを意図していない。上述した例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が、添付の図面および以下の詳細な説明を参照することで明らかになるであろう。図において、同様の参照符号は、同一または機能的に類似する要素を示している。
【図面の簡単な説明】
【0011】
【
図1】一実施形態によるメモリシステムの一例を示す図である。
【
図2】一実施形態による、
図1のメモリシステムのSPD(serial presence detect)ハブの一例を示す図である。
【
図3】一実施形態による、
図2のSPDハブの一例を示すブロック図である。
【
図4】一実施形態による、
図2のSPDハブのメモリブロックの一例を示すブロック図である。
【
図5】一実施形態による、
図2のSPDハブの読み取り保護および書き込み保護データの構造の一例を示すブロック図である。
【
図6】一実施形態による、証明書チェーンを格納するように構成された、
図2のSPDハブのメモリスロットの一例を示すブロック図である。
【
図7】一実施形態による、
図6のメモリスロットの1つに格納された証明書チェーンの一例を示すブロック図である。
【
図8】一実施形態による、
図6のメモリスロットの1つに格納された証明書チェーンの別の例を示すブロック図である。
【
図9】一実施形態による、
図6のメモリスロットの1つに格納された証明書チェーンの別の例を示すブロック図である。
【
図10】一実施形態による要求メッセージフォーマットの一例を示す図である。
【
図11】一実施形態による応答メッセージフォーマットの一例を示す図である。
【
図12】一実施形態による、
図2のSPDハブのブロックの書き込み保護を設定および解除するためのプロセスの一例を示すフロー図である。
【
図13】一実施形態による、
図2のSPDハブのブロックの書き込み保護を設定および解除するためのプロセスの別の例を示すフロー図である。
【
図14】一実施形態による、
図2のSPDハブの証明書チェーンを無効にするためのプロセスの一例を示すフロー図である。
【
図15】一実施形態による、
図2のSPDハブのファームウェアを更新するためのプロセスの一例を示すフロー図である。
【発明を実施するための形態】
【0012】
図1および
図2は、メモリモジュール20と、コネクタ70と、メモリコントローラ80と、エンティティ85と、を含むメモリシステム15などの情報処理システム10の例示的な実施形態を示している。情報処理システム10は、本明細書において特定のタイプ、配置、および数のコンポーネントを有するものとして説明および図示されているが、他の実施形態において他のタイプ、配置、または数のコンポーネントを有していてもよい。
【0013】
図1を参照すると、例示的な一実施形態において、メモリシステム15は、DIMM、DRAMモジュールまたは他のメモリモジュールを備えるメモリモジュール20を含む。一部の実施形態において、メモリモジュール20は、DDR(double data rate)RAMモジュールとして実装されてもよい。一部の実施形態において、メモリモジュール20は、DDR5 SDRAM(DDR fifth generation synchronous DRAM)モジュールまたは他の世代のDDRモジュールとして実装されてもよい。一例において、開示されている実施形態は、UDIMM(unbuffered DIMM)を備えてもよい。例えば、ノートブック型コンピュータの場合、開示されている実施形態は、DDR5 SODIMMなどのSODIMM(small outline DIMM)を備えてもよい。別の例において、開示されている実施形態は、RDIMM(registered DIMM)を備えてもよい。メモリモジュール20は、特定のタイプ、配置、および数のコンポーネントを有するものとして説明および図示されているが、他の実施形態において、他のタイプ、配置、または数のコンポーネントを有してもよい。
【0014】
図1に示すように、例示的なメモリシステム15は、データバッファ30と、メモリデバイス40と、RCD(登録済みクロックドライバ)50と、PMIC(電源管理IC)60と、SPDハブ65と、コネクタ70と、温度センサ75と、他のブロック、回路、ピン、コネクタ、トレース、またはメモリモジュールで一般的に使用される他のコンポーネントと、を備えるメモリモジュール20を含む。本明細書に記載のメモリモジュール20は、特定のコンポーネントを備えるものとして説明されているが、メモリモジュール20で一般的に使用される他のコンポーネントを追加的にまたは代替的に備えてもよい。
【0015】
一部の実施形態において、データバッファ30およびメモリデバイス40は、SDRAMデバイス、チップ、またはモジュールを備える。一部の実施形態において、データバッファ30およびメモリデバイス40は、例えば、SRAM、DRAM、MROM、PROM、EPROM、およびEEPROMなどの他のタイプのメモリデバイスを追加的にまたは代替的に備える。
【0016】
PMIC60は、メモリモジュール20の電源管理を実行するように構成される。例えば、PMIC60は、電圧をスケールアップまたはスケールダウンするように、またはDC/DC変換を実行するように、または他の同様の電源管理動作を実行するように構成されてもよい。一部の実施形態において、PMIC60は、LDO(低損失レギュレータ)、バックコンバータまたはブーストコンバータなどのDC/DCコンバータ、PFM(パルス周波数変調)、PWM(パルス幅変調)、FET(電界効果トランジスタ)、RTC(リアルタイムクロック)、またはPMICで一般的に使用され得る他の回路を備えてもよい。
【0017】
コネクタ70は、例えばメモリコントローラ80、マザーボード、または他のコンポーネントを含むコンピューティングシステムの別のコンポーネントと、例えば、メモリモジュール20とを接続するように構成されたピン、トレース、または他の接続部を備えてもよい。一部の実施形態において、コネクタ70は、例えば、288ピン構成または他のピン構成を備えてもよい。
【0018】
一部の実施形態において、メモリモジュール20は、コネクタ70を備える。他の実施形態において、マザーボード、メモリコントローラ80、またはコンピューティングデバイスの他のコンポーネントが、コネクタ70を備える。別の実施形態において、1つまたは複数のコネクタ70がメモリモジュール20の一部であってもよく、1つまたは複数のコネクタ70がマザーボード、メモリコントローラ80、またはコンピューティングデバイスの他のコンポーネントの一部であってもよい。
【0019】
メモリモジュール20は、例えば、コネクタ70によって、マザーボード、メモリコントローラ80、またはコンピューティングデバイスの他のコンポーネントに接続されてもよい。これにより、コンピューティングデバイスのコンポーネントとメモリモジュール20との間でデータを転送することができる。例えば、UDIMMを実装する実施形態において、コネクタ70は、64ビットバス、72ビットバス、または他のビット値のバスを備えてもよい。
【0020】
メモリモジュール20は、コンピューティングデバイスのメモリコントローラ80に接続された状態で示されている。例示的な実施形態において、メモリコントローラ80は、コンピューティングデバイスのコンピュータマザーボードまたはメインボードのコンポーネントとして、例えばマザーボードのノースブリッジ上に実装されてもよい。別の例において、メモリコントローラ80は、コンピューティングデバイスのマイクロプロセッサのコンポーネントとして実装されてもよい。さらに別の例において、メモリコントローラ80は、コンピューティングデバイスのCPU(中央処理装置)のコンポーネントとして実装されてもよい。他の実施形態において、メモリコントローラ80は、コンピューティングデバイスの他のコンポーネントの一部として実装されてもよい。
【0021】
一部の実施形態において、メモリモジュール20は、DDR5 SDRAMメモリモジュールとして実装される。例えば、メモリモジュール20は、メモリモジュールに応じて、128GB(ギガバイト)、512GB、1TB(テラバイト)、またはそれ以上のメモリモジュール密度を有してもよい。メモリモジュール20は、約1.2GHz(ギガヘルツ)~約3.2GHzの周波数、および約3.2GT/s~約4.6GT/sのデータレート範囲、場合によっては約8GT/sまたはそれ以上のデータレートで動作してもよい。一部の実施形態において、メモリモジュール20は、代替的に、より小さい密度またはより大きい密度を有してもよく、より低い周波数またはより高い周波数で動作してもよく、より低いデータレートまたはより高いデータレートで動作してもよい。
【0022】
図1を引き続き参照すると、メモリモジュール20は、メモリコントローラ80と通信している状態で示されている。メモリコントローラ80は、例えばマザーボード、メインボード、またはメモリモジュール20と通信するコンピューティングデバイスの他のコンポーネントなどの回路90の一部として示されている。メモリコントローラ80は、クロック信号(CLK)、制御信号(ADDRやCMDなど)、およびコマンド信号を含む様々な信号を生成するように構成される。1つまたは複数のCLK、ADDRおよびCMD信号が、例えば1つまたは複数のバス23を介して、RCD50に提供されてもよい。
【0023】
また、メモリコントローラ80からの信号は、本明細書においてホストインタフェースバス24とも呼ばれるバス24を介して、メモリコントローラ80からPMIC60へ伝送されてもよい。一部の実施形態において、ホストインタフェースバス24は、双方向であり、PMIC60とメモリコントローラ80またはメモリモジュール20の他のコンポーネントとの間でコマンドまたは他のデータを通信するように構成される。ホストインタフェースバス24は、I2Cプロトコル、I3Cプロトコル、または他のプロトコルを実装してもよい。
【0024】
また、メモリコントローラ80からの信号は、本明細書においてホストインタフェースバス66とも呼ばれるバス66を介して、メモリコントローラ80からSPDハブ65へ伝送されてもよい。一部の実施形態において、ホストインタフェースバス66は、双方向であり、SPDハブ65とメモリコントローラ80またはメモリモジュール20の他のコンポーネントとの間でコマンドまたは他のデータを通信するように構成される。ホストインタフェースバス66は、I2Cプロトコル、I3Cプロトコル、I2CプロトコルとI3Cプロトコルとの組み合わせ、他のプロトコル、または他のプロトコルの組み合わせを実装してもよい。
【0025】
データバス72は、メモリコントローラ80とデータバッファ30との間に接続されてもよく、メモリコントローラ80とデータバッファ30との間に、例えばトレース、ピン、および他の接続部などのコネクタ70を備えてもよい。一部の実施形態において、メモリコントローラ80は、データバス72およびコネクタ70を介して、メモリデバイス40に追加的にまたは代替的に接続されてもよい。
【0026】
RCD50は、メモリコントローラ80、データバッファ30、メモリチャネル(図示せず)、PMIC60、SPDハブ65、および温度センサ75と通信するように構成される。RCD50は、メモリコントローラ80から受信した例えば制御語などの命令をデコードするように構成される。例えば、RCD50は、レジスタコマンド語(RCW)を受信およびデコードするように構成されてもよい。別の例において、RCD50は、バッファ制御語(BCW)を受信およびデコードするように構成されてもよい。RCD50は、1つまたは複数のデータバッファ30、メモリデバイス40、およびRCD50とメモリコントローラ80との間のコマンドバス23を訓練するように構成される。例えば、RCWは、メモリコントローラ80からRCD50に流れるようになっていてもよく、RCD50を構成するために使用されてもよい。
【0027】
一部の実施形態において、RCD50は、例えば32ビット1:2コマンド/アドレスレジスタなどのコマンド/アドレスレジスタを実装してもよい。RCD50は、RCD50とデータバッファ30との間の単方向バッファ通信(BCOM)バスなどのアットスピードバスをサポートしてもよい。一部の実施形態において、RCD50は、1つまたは複数の自動インピーダンス較正、コマンド/アドレスパリティチェック、制御レジスタRCWリードバック、ならびに1MHz集積回路間(I2C)バスおよび12.5MHz集積回路間(I3C)バスなどのシリアルバスを実装してもよい。RCD50への入力は、1つまたは複数の外部電圧および内部電圧を使用した擬似差動であってもよい。RCD50のクロック出力、コマンド/アドレス出力、制御出力、およびデータバッファ制御出力は、グループ単位で有効になっていてもよく、異なる強度で独立して駆動されてもよい。
【0028】
RCD50は、CLK、ADDR、およびCMD信号、または例えばRCWおよびBCWなどの他の信号をメモリコントローラ80から受信し、CLK、ADDR、およびCMD信号に基づいて、対応する出力信号を生成するために様々なデジタルロジックコンポーネントを利用するように構成される。例えば、RCD50は、受信したCLK、ADDR、およびCMD信号に基づいて、例えばCLK’、ADDR’、およびCMD’信号などの対応する信号を生成するように構成される。CLK’、ADDR’、およびCMD’信号は、メモリデバイス40に提示されてもよい。例えば、CLK’信号は、共通のバス25上でRCD50からメモリデバイス40へ伝送されてもよく、ADDR’およびCMD’信号は、共通のバス26上でRCD50からメモリデバイス40へ伝送されてもよい。また、RCD50は、1つまたは複数のデータバッファ制御(DBC)信号を生成するように構成される。DBC信号は、例えば、本明細書においてデータバッファ制御バス27とも呼ばれる共通のバス27上でデータバッファ30へ伝送される。
【0029】
データバッファ30は、データバッファ制御バス27からコマンドおよびデータを受信し、データバス72との間でデータを生成、受信、または伝送するように構成される。また、各データパスは、そのデータバッファ30とメモリデバイス40との間に、データバッファ30とメモリデバイス40との間でデータを運ぶように構成されたバス28を備える。
【0030】
データバッファ30は、例えばメモリコントローラ80から対応するメモリチャネルへのデータ転送などの書き込み動作、および例えば対応するメモリチャネルからメモリコントローラ80へのデータ転送などの読み取り動作のために、バス72および28上のデータをバッファリングするように構成される。
【0031】
エンティティ85は、SPDハブコンポーネントプロバイダ、DIMMプロバイダ、システムプロバイダ、データセンタープロバイダ、コンポーネント製造業者、またはメモリモジュール20のコンポーネントの一部またはすべてのサービスを提供するかそれを作製する他のエンティティを含んでもよい。例示的な実施形態において、エンティティ85は、例えば、多数のプロバイダ、サービス提供者、または製造業者であり得る複数のエンティティ85を含む。一部の実施形態において、エンティティ85は、メモリコントローラ80にメッセージまたはコマンドを提供するように構成された、プロセッサおよびメモリを備える1つまたは複数のコンピューティングデバイスを含む。
【0032】
次に、
図2および
図3を参照して、SPDハブ65をより詳細に説明する。例示的な実施形態において、SPDハブ65は、ハブ、認証、およびセキュリティ機能付きDDR5拡張SPD EEPROMを備える。これは、メモリモジュールアプリケーションに使用される統合温度センサを有し、拡張SPD(ESPD)ハブまたはセキュリティハブとも呼ばれる場合がある。SPDハブ65は、ローカルバスをコントローラバスから隔離する。他の実施形態において、SPDハブ65は、他のタイプのメモリモジュール20または他のタイプのデバイスと共に使用するための機能を備えてもよい。
【0033】
図2に示す例示的な実施形態において、SPDハブ65は、LSDAピン(1)と、HSDAピン(2)と、HSCLピン(3)と、LSCLピン(4)と、VDDSPDピン(5)と、GNDピン(6)と、VDDIOピン(7)と、HSAピン(8)と、GND/サーマルパッド(9)と、を含む9ピンの熱強化DFNパッケージを備える。
【0034】
LSDAピン(1)は、I2C/I3Cデータを送受信するように構成されたローカルバス入出力(IO)ピンである。HSDAピン(2)は、I2C/I3Cの基本データを送受信するように構成されたホストバスIOピンである。HSCLピン(3)は、I2C/I3Cの基本入力クロックを受信するように構成されたホストバス入力ピンである。LSCLピン(4)は、I2C/I3Cの基本出力クロックを送信するように構成されたローカルバス出力ピンである。VDDSPDピン(5)は、入力電源(例えば、一部の実施形態において1.8Vの入力電源)を受信するように構成された電源ピンである。VSSとも呼ばれるGNDピン(6)は、接地に接続されるように構成された接地ピンである。VIOとも呼ばれるVDDIOピン(7)は、入力電源(例えば、一部の実施形態において1.1Vの入力電源)を受信するように構成された電源ピンである。HSAピン(8)は、I2C/I3Cの基本アドレスを受信するように構成されたホストバス入力ピンである。GND/サーマルパッド(9)は、接地面に接続された接地ピンである。上記では、ピン1~9は、特定の機能を有するものとして説明されているが、追加的にまたは代替的に他の機能を実行してもよい。一部の実施形態において、より多くのピンまたはより少ない数のピンがSPDハブ65に利用されてもよい。
【0035】
図3を参照すると、SPDハブ65は、例えば、LDO302などの電圧レギュレータと、温度センサ304と、ホストポート306およびローカルポート308を含むI
2C/I
3Cインタフェースと、例えばEEPROMなどの不揮発性メモリ310と、HSA検知回路312と、を備える。SPDハブ65は、後述するように、認証プロセスの一部としてのチャレンジおよびチャレンジ応答のために、システムコントローラによって使用される認証ブロック314をさらに備える。
【0036】
HSA検知回路208は、対応する3ビットのホスト識別子(HID)アドレスを決定するためにSPDハブ65によって利用されるHSAピン(8)上の抵抗値を決定するように構成される。例えば、10.0KΩの抵抗値は、000のHIDアドレスに対応してもよく、15.4KΩの抵抗値は、001のHIDアドレスに対応してもよい。一部の実施形態において、SPDハブ65をオフラインモードにして、HSAピン(8)を接地に接続することで書き込み保護をオーバーライドすることができる。
【0037】
図4および
図5を参照すると、SPDハブ65の不揮発性メモリ310は、エンド用途向けにブロックごとに64バイトの32ブロックとして配列された2KBの不揮発性メモリ300を備える。64バイトの各ブロックは、ソフトウェアコマンドを介して任意に読み取り保護または書き込み保護されている。ブロックごとに64バイトの32ブロックとして配列された2KBの不揮発性メモリを備えるものとして説明しているが、別の実施形態において、他の方法で配列された他の量の不揮発性メモリが代替的に利用されてもよい。例えば、一部の実施形態において、SPDハブ65は、例えば、ビットマップまたは他のデータ構造などのデータ構造310内の対応するビットを設定することで、メモリ300の各ブロックの書き込み保護を個別に設定するように構成される。ここで、データ構造310内の各ビットは、メモリ300のブロックの1つに対応する。例えば、データ構造310内のビットは、対応するブロックが書き込み保護されていることを示すために1に設定されてもよく、対応するブロックが書き込み保護されていないことを示すために0に設定されてもよく、その逆も同様である。通常のランタイム動作中に、データ構造310内のビットのいずれかを、例えば1に設定して、対応するブロックの書き込み保護を有効にすることができる。一部の実施形態において、データ構造310のビットは、後述する例示的な実施形態の場合を除いて、書き込み保護を解除するためにリセットまたはクリア(例えば0に設定)されなくてもよい。
【0038】
次に、例示的な実施形態におけるSPDハブ65の不揮発性メモリ300の書き込み保護を解除するためのHSAピン方式について説明する。
【0039】
上述したHSAピン方式において、SPDハブ65は、HSAピン(8)を使用して、ビットマップ310内の書き込み保護ビットをクリアまたはオーバーライドするかどうかを決定する。上述したように、HSAピン(8)は、HIDを選択するために、通常のランタイム動作中に抵抗値を介して接地に接続される。電源投入時にSPDハブ65がHSAピン(8)上の抵抗値を検出すると、ビットマップ310内の書き込み保護ビットのクリアまたはオーバーライドがSPDハブ65によって禁止される。書き込み保護が設定されると、各ブロックの書き込み保護は、例えば、HSAピン(8)を接地に接続することで、テストベンチなどのオフラインのプログラミング環境でオーバーライドされ得る。電源投入時にHSAピン(8)が接地に接続されていることをSPDハブ65が検出すると、ビットマップ310内のビットのクリアまたはオーバーライドの禁止が解除され、例えば、ビットマップ310の対応するビットを0に設定することで、メモリ300のブロックの書き込み保護が解除またはオーバーライドされ得る。場合によっては、HSAピン方式だけでは脆弱性がある可能性がある。例えば、HSAピン(8)の使用による書き込み保護の解除またはオーバーライドが通常のランタイム動作中に禁止されているにもかかわらず、例えばテストベンチまたはオフライン環境においてHSAピン(8)が接地に接続されると、SPDハブ65の電源投入後に、任意のユーザがメモリ300のブロックを変更することができるので、書き込み保護はセキュアでない可能性がある。
【0040】
次に、例示的な実施形態におけるSPDハブ65の不揮発性メモリ300の書き込み保護を解除するためのセキュリティプロトコル方式について説明する。一部の実施形態において、セキュリティプロトコル方式は、HSAピン方式に加えて利用されてもよく、HSAピン方式と並行して利用されてもよい。一部の実施形態において、セキュリティプロトコル方式は、HSAピン方式を有効にすることなく利用されてもよく、例えば、オフライン環境またはテストベンチ環境でHSAピン(8)を接地に接続し、SPDハブ65に電源を投入することで、書き込み保護を解除できなくなる。また、一部の実施形態において、HSAピン方式は、対応するブロックのオーバーライドまたはクリアを有効にするためにセキュリティプロトコル方式を必要とする場合がある。
【0041】
セキュリティプロトコル方式は、SPDハブ65にインストールされた証明書に基づくセキュリティプロトコルを使用してメモリ300のブロックの読み取り保護または書き込み保護を管理および解除する強化セキュリティ方式である。セキュリティプロトコル方式により、SPDハブ65の許可されたユーザは、所有権を有するブロックに対して、通常のランタイム動作中にセキュアな方法で読み取り保護または書き込み保護を設定および解除することができる。セキュリティプロトコル方式において、SPDハブ65は、読み取り保護または書き込み保護を解除してメモリ300の内容を変更するために、HSAピンを抵抗なしで直接接地に接続した状態で電源投入される必要がない。また、セキュリティプロトコル方式は、他のエンティティによって設定されたブロックに対する読み取り保護または書き込み保護をセキュアに維持する。例えば、特定のエンティティ85がメモリ300の1つまたは複数のブロックの読み取り保護または書き込み保護を設定した場合、そのエンティティ85のみが、通常のランタイム動作中に同じブロックの読み取り保護または書き込み保護を解除することができる。他のエンティティ85は、通常のランタイム動作中にこれらのブロックの読み取り保護または書き込み保護を解除することができない。
【0042】
また、
図6を参照すると、セキュリティプロトコル方式の一部として、SPDハブ65は、証明書チェーンを収容するように構成された16KBの不揮発性不変ストレージ320と、各証明書チェーンに関連付けられたハッシュダイジェスト値およびリーフ秘密鍵を格納するように構成された追加の1KBの不揮発性不変ストレージ322と、を備える。ストレージ320および322は、上述した2KBのメモリ300に追加されるものである。例示的な実施形態において、ストレージ320および322は、セキュリティプロトコル方式の認証機能に利用され、エンドユーザが使用できないようになっていてもよい。別の実施形態において、エンドユーザは、不揮発性不変ストレージの一部またはすべてにアクセスすることができてもよい。
【0043】
図6に示すように、ストレージ320は、証明書チェーンを格納するための8つのスロット324
0、324
1、...324
6および324
7を備える。本明細書において、これらのスロットを総称して、また個々に、スロット324と呼ぶ。一部の実施形態において、各スロット324は、単一の証明書チェーン326
0、326
1、...326
6および326
7、ならびに対応するダイジェスト328
0、328
1、...328
6および328
7にそれぞれ対応し、これらを格納するように構成される。本明細書において、これらの証明書チェーンおよびダイジェストを総称して、また個々に、証明書チェーン326およびダイジェスト328とそれぞれ呼ぶ。ここでは8つのスロットを有するように説明しているが、証明書チェーンを格納するための任意の数のスロットがSPDハブ65によって代替的に実装されてもよい。
【0044】
一部の実施形態において、各証明書チェーンは、2つ、3つ、4つ、5つ、または任意の数の証明書を含んでもよい。SPDハブ65は、それ自体の証明書チェーンの情報をスロット3240、3241、...3246および3247のうちの1つ(例えば一部の実施形態において、スロット3240)に格納するように構成され、各証明書チェーンの書き込みまたはロードは、1回のみ許可される。例えば、証明書チェーンが対応するスロット324にロードされると、証明書チェーンの書き換えまたは変更がSPDハブ65によって許可されていない場合、証明書チェーンは不変であり得る。
【0045】
一部の実施形態において、SPDハブ65は、その証明書チェーンをスロット3240に格納し、残りの7つのスロット324を他の証明書チェーンのために残す。例えば、一部の実施形態において、残りの7つのスロット324のうち、1つのスロット324がDIMMプロバイダによって利用されてもよく、1つのスロット324がシステムプロバイダによって利用されてもよく、1つのスロット324がデータセンタープロバイダによって利用されてもよく、残りのスロット324が他の目的のために利用可能になっていてもよい。例えば、DIMM証明書チェーンまたはシステム証明書チェーンが失効し、別の証明書チェーンをインストールする必要が生じた場合などに、残りのスロット324を使用してもよい。
【0046】
一部の実施形態において、証明書チェーン326の各証明書の最大サイズは、800バイトである。他の実施形態において、証明書の他の最大サイズが代替的に利用されてもよい。所与の証明書チェーン326において、使用可能な最大ストレージは、証明書チェーン326における証明書の数の関数である。例えば、一部の実施形態において、任意の証明書チェーン326に対して割り当てられるストレージスペースの量は固定ではない。その代わりに、任意の所与の証明書チェーン326について、各証明書は、800バイト未満であってもよく、証明書チェーン326は、任意の数の証明書を含んでもよい。特定の証明書チェーン326がより小さい証明書サイズまたはより少ない数の証明書を有する場合、残りの証明書チェーン326により多くのストレージスペースが利用可能となる。
【0047】
合計16KBの証明書ストレージスペースに加えて、SPDハブ65は、証明書チェーン326全体のダイジェスト328を格納するために、各スロット324に対して64バイトの不変ストレージを備える。また、SPDハブ65は、リーフ証明書の秘密鍵を格納するために、64バイトの不変ストレージを備える。リーフ証明書の鍵ペアは、スロット324に関係なく、すべてのリーフ証明書に共通のものである。一部の実施形態において、SPDハブ65における不変ストレージスペースの合計は、16KB+8*64B+64Bである。他の実施形態において、異なる量のストレージスペースが代替的に利用されてもよい。例示的な実施形態において、ダイジェスト328が格納されたストレージスペースの読み取りアクセスが許可される一方で、リーフ証明書の秘密鍵が格納された64バイトのストレージスペースの読み取りアクセスは、SPDハブ65の外部のユーザには許可されない。例えば、リーフ証明書の秘密鍵は非公開のままであり、SPDハブ65の内部ロジックに対してのみアクセス可能である。
【0048】
次に、
図7を参照して、例えばSPDハブコンポーネントプロバイダによってスロット324
0に格納され得る例示的な証明書チェーン326
0について説明する。本実施形態において、証明書チェーン326
0は、ルート証明書330と、中間証明書332と、復号化証明書334と、リーフ証明書336と、を含む。
【0049】
ルート証明書330は、信頼できる認証局(CA)によって提供される。一部の実施形態において、例えば、CAは、外部のサードパーティCAを含んでもよい。例えば、ルート証明書330は、サードパーティCAによって提供および署名されてもよい。他の実施形態において、ルート証明書330は、例えば、SPDハブコンポーネントプロバイダなどの別のエンティティ85によって提供されてもよい。ルート証明書330は、識別子をDIMMおよびシステムプロバイダに提供する。一部の実施形態において、ルート証明書330のCAの名称およびその公開鍵は、SPDハブコンポーネントプロバイダによってDIMMおよびシステムプロバイダに事前に提供される。
【0050】
例えばベースボード管理コントローラ(BMC)または別の処理デバイスに統合されているプラットフォームルートオブトラスト(RoT)セキュリティプロセッサ、またはプラットフォームファームウェア/BIOSが、SPDハブコンポーネントプロバイダの自己認証CAを含むCAのリストと、各CAに関連付けられた公開鍵とを維持する。ルート証明書330は、固有のシリアル番号を有する。所与のSPDハブコンポーネントプロバイダについて、ルート証明書330は、一部の実施形態において常に同じであってもよい。例えば、CAの公開鍵およびシリアル番号は、すべてのSPDハブコンポーネントについて同じであってもよい。また、SPDハブ65は、デバイス改訂を経る場合、同じルート証明書330を使用する。
【0051】
ルート証明書330に関連して、CAは、秘密鍵1/公開鍵1として知られる一意の鍵ペアを生成する。秘密鍵1は、CAに非公開のままである。例示的な実施形態において、秘密鍵1は、SPDハブ65に格納されない。秘密鍵1は、証明書チェーン3260内の中間証明書332に署名するために使用される。公開鍵1は、ルート証明書330上でアドバタイズされ、ルート証明書330および中間証明書332の署名を検証するためにメモリコントローラ80によって使用される。ルート証明書330のIssuer(発行者)フィールドは、CAであり、ルート証明書330のSubject(主題)フィールドは、SPDハブコンポーネントプロバイダである。
【0052】
中間証明書332は、固有のシリアル番号を有する。所与のSPDハブコンポーネントプロバイダについて、中間証明書332は、公開鍵とシリアル番号を有し、デバイス改訂内のすべてのSPDハブコンポーネントについて同じであってもよい。SPDハブ65は、デバイス改訂を経る場合、同じ中間証明書を使用してもよく、異なる中間証明書を使用してもよい。
【0053】
中間証明書332に関連して、SPDハブコンポーネントプロバイダは、秘密鍵2/公開鍵2として知られる一意の鍵ペアを生成する。秘密鍵2は、SPDハブコンポーネントプロバイダに非公開のままであり、例示的な実施形態において、SPDハブ65に格納されない。また、公開鍵2も、SPDハブ65に格納されない。例示的な実施形態において、秘密鍵2/公開鍵2のペアは、デバイス改訂内の各SPDハブ65について同じであり、異なるデバイス改訂について同じであってもよく、異なっていてもよい。秘密鍵2は、証明書チェーン3260内の復号化証明書334およびリーフ証明書336に署名するために使用される。
【0054】
公開鍵2は、中間証明書332上でアドバタイズされ、復号化証明書334およびリーフ証明書336の署名を検証するためにメモリコントローラ80によって使用される。中間証明書332は、ルート証明書330のCAの秘密鍵1によって署名される。中間証明書332のIssuerフィールドは、SPDハブコンポーネントプロバイダである。中間証明書332のSubjectフィールドは、製品およびデバイス固有の識別子を含む。
【0055】
復号化証明書334は、固有の証明書であり、一部の実施形態において、所与のSPDハブコンポーネントプロバイダのすべてのSPDハブコンポーネントに共通の証明書である。復号化証明書334は、SPDハブ65に対して、署名された鍵管理またはファームウェア管理などの特定の機能メッセージに公開鍵2を使用すべきであることをSPDハブ65に示すために利用される。
【0056】
復号化証明書334に関連して、SPDハブコンポーネントプロバイダは、秘密鍵4/公開鍵4として知られる一意の鍵ペアを生成する。秘密鍵4は、SPDハブコンポーネントプロバイダに非公開のままである。例示的な実施形態において、秘密鍵4は、SPDハブ65に格納されない。
【0057】
秘密鍵4は、メモリコントローラ80が機能固有のメッセージに署名するために使用される。公開鍵4は、復号化証明書334上でアドバタイズされ、SPDハブ65は、復号化証明書334から公開鍵4を抽出して、署名を復号化し、且つメッセージを実行する前にメッセージを検証する。復号化証明書334は、中間証明書332の秘密鍵2によって署名される。復号化証明書334のIssuerフィールドは、SPDハブコンポーネントプロバイダである。復号化証明書334のSubjectフィールドは、例示的な実施形態において、復号化機能として示される。
【0058】
リーフ証明書336は、SPDハブコンポーネントプロバイダが作製する、SPDハブ65ごとに固有の証明書である。ルート証明書330および中間証明書332とは異なり、リーフ証明書336は、SPDハブ65ごとに固有のシリアル番号を有する。リーフ証明書336のシリアル番号は、SPDハブコンポーネントプロバイダによって生成される。一部の実施形態において、リーフ証明書336のシリアル番号は、SPDハブ65のシリアル番号340のダイジェスト342を、40ビットのSPDハブコンポーネントのシリアル番号の1バイト目から5バイト目まで順に実行することで生成される。
【0059】
リーフ証明書336に関連して、SPDハブ65は、秘密鍵3/公開鍵3として知られる一意の鍵ペアを生成する。秘密鍵3は、SPDハブ65に非公開のままであり、SPDハブ65に格納される。公開鍵3は、リーフ証明書336上でアドバタイズされる。この秘密鍵3/公開鍵3のペアは、所与のSPDハブ65の各スロットのすべてのリーフ証明書で使用され、SPDハブ65ごとに固有のものである。リーフ証明書336は、中間証明書332の秘密鍵2によって署名される。秘密鍵3/公開鍵3のペアは、すべてのスロット324の認証プロセスの一部としてのチャレンジおよびチャレンジ応答のために、DIMMおよびシステムプロバイダによって使用される。例示的な実施形態において、リーフ証明書336のIssuerフィールドは、SPDハブコンポーネントプロバイダであり、リーフ証明書336のSubjectフィールドは、いかなる情報も含まない。
【0060】
証明書チェーン3260のダイジェスト338は、SPDハブ65によって生成され、スロット3240のダイジェスト328に格納される。リーフ証明書336の秘密鍵3は、ストレージ322に格納され、SPDハブ65の内部に対してのみアクセス可能である。
【0061】
次に、
図8を参照して、例えばDIMMプロバイダによってスロット324
1に格納され得る例示的な証明書チェーン326
1について説明する。例えば、SPDハブ65は、SPDハブコンポーネントプロバイダがスロット324
0に証明書チェーン326
0をインストールした後に、SPDハブコンポーネントプロバイダによってDIMMプロバイダに提供されてもよい。本実施形態において、証明書チェーン326
1は、ルート証明書350と、中間証明書352と、属性証明書354と、復号化証明書356と、リーフ証明書358と、を含む。
【0062】
ルート証明書350は、CAによって提供される。一部の実施形態において、DIMMプロバイダは、CAの役割を果たしてもよい。この場合、ルート証明書350は、DIMMプロバイダによって自己認証および署名される。他の実施形態において、DIMMプロバイダは、外部のサードパーティCAを利用してもよい。この場合、ルート証明書350は、サードパーティCAによって提供および署名される。
【0063】
DIMMプロバイダのルート証明書350は、DIMM識別子をシステムプロバイダに提供する。一部の実施形態において、ルート証明書350のCAの名称およびその公開鍵は、DIMMプロバイダによってシステムプロバイダに事前に提供される。
【0064】
一部の実施形態において、プラットフォームRoTセキュリティプロセッサ、またはプラットフォームファームウェア/BIOSは、DIMMコンポーネントプロバイダの自己認証CAを含むCAのリストと、各CAに関連付けられた公開鍵とを維持してもよい。
【0065】
例示的な実施形態において、ルート証明書350は、固有のシリアル番号を有し、一部の実施形態において、所与のDIMMプロバイダに対するルート証明書は、すべてのDIMMコンポーネント、ならびに速度、ランク、密度などの様々なDIMM構成に対して、例えばCAの公開鍵、シリアル番号などが同じである。また、一部の実施形態において、DIMMコンポーネントは、PCB改訂を経る場合、同じルート証明書350を使用してもよい。
【0066】
ルート証明書350に関連して、CAは、秘密鍵5/公開鍵5として知られる一意の鍵ペアを生成する。秘密鍵5は、例えば一部の実施形態においてDIMMプロバイダであるCAに非公開のままである。例示的な実施形態において、秘密鍵5は、SPDハブ65に格納されない。一部の実施形態において、DIMMプロバイダがCAの役割を果たしている場合、秘密鍵5は、セキュアな設計/ATE(自動テスト装置)環境においてのみ知られていてもよい。また、秘密鍵5は、中間証明書352に署名するために利用されてもよい。公開鍵5は、ルート証明書350上でアドバタイズされ、ルート証明書350および中間証明書352の署名を検証するためにメモリコントローラ80によって使用される。
【0067】
例示的な実施形態において、中間証明書352は、固有のシリアル番号を有する。所与のDIMMプロバイダについて、中間証明書352は、すべてのDIMMコンポーネントについて同じであってもよい。DIMMプロバイダは、デバイス改訂を経る場合、同じ中間証明書352を使用してもよく、異なる中間証明書352を使用してもよい。
【0068】
中間証明書352に関連して、DIMMプロバイダは、秘密鍵6/公開鍵6として知られる一意の鍵ペアを生成する。秘密鍵6は、DIMMプロバイダに非公開のままであってもよく、例示的な実施形態において、SPDハブ65に格納されない。また、一部の実施形態において、公開鍵6も、SPDハブコンポーネントに格納されない。秘密鍵6は、証明書チェーン3261内の属性証明書354、復号化証明書356、およびリーフ証明書358に署名するために使用される。
【0069】
公開鍵6は、中間証明書352上でアドバタイズされ、属性証明書354、復号化証明書356、およびリーフ証明書358の署名を検証するためにメモリコントローラ80によって使用される。中間証明書352は、ルート証明書350のCAの秘密鍵5によって署名される。例示的な実施形態において、中間証明書352のIssuerフィールドは、DIMMプロバイダであり、中間証明書352のSubjectフィールドは、コンポーネント固有の識別子を含む。
【0070】
一部の実施形態において、属性証明書35は、DIMMプロバイダが提供するDIMMコンポーネントごとに固有の証明書である。属性証明書354は、DIMMコンポーネントごとに固有のシリアル番号を有し、DIMMプロバイダによって生成される。例示的な実施形態において、属性証明書354は、秘密鍵/公開鍵のペアを含まない。属性証明書354は、中間証明書352の秘密鍵6によって署名される。属性証明書354のIssuerフィールドは、DIMMプロバイダであり、属性証明書354のSubjectフィールドは、DIMMコンポーネントマニフェストである。
【0071】
例示的な実施形態において、復号化証明書356は、固有の証明書であり、所与のDIMMプロバイダによって提供されるすべてのDIMMコンポーネントに共通のものである。復号化証明書356の目的の1つは、SPDハブ65に対して、署名された書き込み保護または無効証明書チェーンなどの特定の機能メッセージにそれ自体の公開鍵を使用すべきであることを示すことである。代替的に、復号化証明書356の別の目的は、SPDハブ65に対して、署名された読み取り保護などの他の機能メッセージにそれ自体の公開鍵を使用すべきであることを示すことである。
【0072】
復号化証明書356に関連して、DIMMプロバイダは、秘密鍵8/公開鍵8として知られる一意の鍵ペアを生成する。例示的な実施形態において、秘密鍵8は、DIMMプロバイダに非公開のままであり、SPDハブ65に格納されない。秘密鍵8は、機能固有のメッセージに署名するためにメモリコントローラ80によって使用される。SPDハブ65は、メッセージを実行する前に、抽出した公開鍵8で署名を復号化して、メッセージを検証する。公開鍵8は、復号化証明書356上でアドバタイズされ、SPDハブ65は、復号化証明書356から公開鍵8を抽出する。復号化証明書356は、中間証明書352の秘密鍵6によって署名される。
【0073】
例示的な実施形態において、復号化証明書356のIssuerフィールドは、DIMMプロバイダであり、復号化証明書356のSubjectフィールドは、復号化機能として示される。
【0074】
リーフ証明書358は、DIMMプロバイダが提供するDIMMコンポーネントごとに固有の証明書である。リーフ証明書358は、DIMMコンポーネントごとに固有のシリアル番号を有する。例示的な実施形態において、証明書チェーン3261の一部としてスロット3241に格納されたリーフ証明書358は、スロット3240の証明書チェーン3260内のリーフ証明書336と同じ秘密鍵3/公開鍵3のペアおよびシリアル番号を使用する。秘密鍵3/公開鍵3のペアは、スロット3241を含むすべてのスロット324に対する認証プロセスの一部としてのチャレンジおよびチャレンジ応答のために、システムコントローラによって使用される。DIMMプロバイダは、SPDハブ65を認証した後に、スロット3240からリーフ証明書336の公開鍵3およびシリアル番号を抽出し、スロット3241のためのリーフ証明書358を形成する。リーフ証明書358は、中間証明書352の秘密鍵6によって署名される。例示的な実施形態において、リーフ証明書358のIssuerフィールドは、DIMMコンポーネントプロバイダであり、リーフ証明書358のSubjectフィールドは、いかなる情報も含まない。
【0075】
次に、
図9を参照して、例えばシステムプロバイダによって、別のスロット324に格納され得る例示的な証明書チェーン326
2について説明する。システムプロバイダおよびエンドユーザは、任意選択で、それぞれの証明書チェーン326を作製およびインストールしてもよい。例えば、システムプロバイダは、利用可能なスロット324に証明書チェーン326
2をロードしてもよい。同様に、エンドユーザまたは他のエンティティは、残りのスロット324内に証明書チェーンをロードしてもよい。証明書チェーン内の証明書の数は、システムプロバイダ固有のものであってもよい。一部の実施形態において、例えば、証明書チェーン326
2は、ルート証明書360と、中間証明書362と、復号化証明書364と、リーフ証明書366と、を含む。例示的な実施形態において、証明書チェーン326
2内の証明書に署名するために使用される秘密鍵は、非公開のままであってもよく、SPDハブ65にロードまたは格納されない。
【0076】
ルート証明書360は、CAによって提供される。一部の実施形態において、ルート証明書360は、CAの役割を果たすシステムプロバイダによって提供されてもよい。この場合、ルート証明書360は、システムプロバイダによって自己認証および署名される。他の実施形態において、システムプロバイダは、外部のサードパーティCAを利用してもよい。この場合、ルート証明書360は、サードパーティCAによって提供および署名される。
【0077】
ルート証明書360は、DIMM識別子をシステムプロバイダに提供する。ルート証明書360のCAの名称およびその公開鍵は、システムプロバイダに事前に知られていてもよい。一部の実施形態において、ルート証明書360は、固有のシリアル番号を有する。ルート証明書360に関連して、CAは、秘密鍵9/公開鍵9として知られる一意の鍵ペアを生成する。一部の実施形態において、秘密鍵9は、CAに非公開のままであり、SPDハブ65に格納されない。一部の実施形態において、システムプロバイダがCAの役割を果たしている場合、秘密鍵9は、セキュアな設計/ATE環境に格納されてもよい。
【0078】
秘密鍵9は、証明書チェーン3262内の中間証明書362を署名するために使用される。公開鍵9は、ルート証明書360上でアドバタイズされ、ルート証明書360および中間証明書362の署名を検証するためにメモリコントローラ80によって使用される。ルート証明書360のIssuerフィールドは、CAであり、ルート証明書360のSubjectフィールドは、システムプロバイダである。システムプロバイダがCAの役割を果たしている場合、ルート証明書360のIssuerおよびSubjectフィールドは、共にシステムプロバイダ自体であってもよい。
【0079】
一部の実施形態において、中間証明書362は、固有のシリアル番号を有する。所与のシステムプロバイダについて、中間証明書362は、インストールされたすべてのDIMMコンポーネントについて、例えば、公開鍵およびシリアル番号が同じである。中間証明書362に関連して、システムプロバイダは、秘密鍵10/公開鍵10として知られる一意の鍵ペアを生成する。一部の実施形態において、秘密鍵10は、システムプロバイダに非公開のままであり、SPDハブ65に格納されない。また、一部の実施形態において、公開鍵10も、SPDハブ65に格納されない。
【0080】
秘密鍵10は、証明書チェーン3262内の復号化証明書364およびリーフ証明書366を署名するために使用される。公開鍵10は、中間証明書362上でアドバタイズされ、復号化証明書364およびリーフ証明書366の署名を検証するためにメモリコントローラ80によって使用される。中間証明書362は、ルート証明書360の秘密鍵9によって署名される。中間証明書362のIssuerフィールドは、システムプロバイダであり、中間証明書362のSubjectフィールドは、コンポーネント固有の識別子を含む。
【0081】
例示的な実施形態において、復号化証明書364は、固有の証明書であり、所与のシステムプロバイダによってシステムにインストールされたすべてのDIMMコンポーネントに共通のものである。復号化証明書は、SPDハブ65に対して、署名された書き込み保護または無効証明書チェーンなどの特定の機能メッセージにSPDハブ65がそれ自体の公開鍵を使用すべきであることを示すために利用される。代替的に、復号化証明書は、SPDハブ65に対して、署名された読み取り保護などの他の機能メッセージにSPDハブ65がそれ自体の公開鍵を使用すべきであることを示すために利用されてもよい。
【0082】
復号化証明書364に関連して、システムプロバイダは、秘密鍵12/公開鍵12として知られる一意の鍵ペアを生成する。一部の実施形態において、秘密鍵12は、システムプロバイダに非公開のままであり、SPDハブ65に格納されない。秘密鍵12は、機能固有のメッセージを署名するためにメモリコントローラ80によって使用される。SPDハブ65は、メッセージを実行する前に、抽出した公開鍵12で署名を復号化してメッセージを検証するように構成される。公開鍵12は、復号化証明書364上でアドバタイズされ、SPDハブ65は、復号化証明書364から公開鍵12を抽出するように構成される。復号化証明書364は、中間証明書362の秘密鍵10によって署名される。復号化証明書364のIssuerフィールドは、システムプロバイダであり、復号化証明書364のSubjectフィールドは、復号化機能として示される。
【0083】
例示的な実施形態において、リーフ証明書366は、システムプロバイダが作製するDIMMコンポーネントごとに固有の証明書である。リーフ証明書366は、DIMMコンポーネントごとに固有のシリアル番号を有する。一部の実施形態において、リーフ証明書366は、スロット3240のリーフ証明書336と同じ秘密鍵3/公開鍵3のペアおよびシリアル番号を使用する。公開鍵3は、リーフ証明書366上でアドバタイズされる。システムプロバイダは、SPDハブ65を認証したときに公開鍵3を抽出する。
【0084】
秘密鍵3/公開鍵3のペアは、スロット3242を含むすべてのスロット324に対する認証プロセスの一部としてのチャレンジおよびチャレンジ応答のために、システムコントローラによって使用される。システムプロバイダは、SPDハブ65を認証した後に、スロット3240からリーフ証明書336の公開鍵3およびシリアル番号を抽出し、スロット3242のためのリーフ証明書366を形成する。リーフ証明書366は、中間証明書362の秘密鍵10によって署名される。例示的な実施形態において、リーフ証明書366のIssuerフィールドは、システムコンポーネントプロバイダであり、リーフ証明書366のSubjectフィールドは、いかなる情報も含まない。
【0085】
上記では、例示的な証明書チェーン326を特定の証明書を有するものとして説明しているが、他の実施形態において、証明書チェーン236の一部として他の証明書がスロット3240~3247に追加的にまたは代替的に格納されてもよい。
【0086】
一部の実施形態において、SPDハブ65は、メモリ300の書き込み保護について以下のルールを実施する。ルールに違反した場合、SPDハブ65は、メモリコントローラ80にエラーを報告するように構成されてもよい。その後、メモリコントローラ80は、次の修正アクションに進む前に、エラーをクリアする必要がある場合がある。メモリ300の読み取り保護は、同じ技術を利用して、他人に読み取りされないようにデータをセキュアに保ち、例えば構成レジスタへのアクセスを防止することができる。
【0087】
特定のブロックの書き込み保護が1つのエンティティ85によって設定されると、他のエンティティは、同じブロックの書き込み保護を設定または変更できなくなる。このルールは、書き込み保護がHSAピン方式を使用して設定された場合にも適用可能であってもよい。例えば、特定のブロックの書き込み保護がHSAピン方式またはセキュリティプロトコル方式で設定された場合、別のエンティティ85が同じブロックに独自の書き込み保護を設定するには、まずその方式で書き込み保護を同じ方式で解除する必要がある。一部の実施形態において、特定のブロックの書き込み保護がHSAピン方式を使用して設定された場合、HSAピンを接地に直接接続してSPDハブ65の電源をオンにするHSAピン方式のみがそのブロックの書き込み保護を解除することができる。同様に、特定のブロックの書き込み保護がセキュリティプロトコル方式を使用して設定された場合、セキュリティプロトコル方式のみがそのブロックの書き込み保護を解除することができる。このように、HSAピン方式およびセキュリティプロトコル方式が同時に使用されてもよい。ブロックが書き込み保護されると、SPDハブ65は、保護されたブロックへの書き込みトランザクションを破棄する。
【0088】
セキュリティプロトコル方式の一部として、SPDハブ65は、各スロット324について、インストールされた証明書チェーン326から、例えば証明書チェーン3260の公開鍵4など、復号化証明書の公開鍵を抽出するように構成される。各スロット324の公開鍵は、SPDハブ65によって、例えばメモリ300または別の場所に格納される。
【0089】
次に、
図10および
図11を参照して、要求メッセージ400および応答メッセージ500の例示的なフォーマットについて説明する。要求メッセージ400は、メモリコントローラ80によってSPDハブ65に提供されてもよく、その後、要求メッセージ400の認証を提供する署名が行われる。一部の実施形態において、各要求メッセージ400は、署名される。一部の実施形態において、メモリコントローラ80によって伝送される要求メッセージが書き込み保護設定/解除モードの終了要求であるときに、署名の例外が行われてもよい。
【0090】
要求メッセージ400は、書き込み保護の変更を要求するエンティティ85の対応するスロット324にインストールされた証明書チェーン326の復号化証明書に関連付けられた秘密鍵によって署名される。SPDハブ65は、そのスロット324からの証明書チェーン326の復号化証明書の対応する公開鍵を使用して、署名を検証する。一部の実施形態において、SPDハブの応答メッセージは、署名を含まない。
【0091】
書き込み保護を設定する内容をメモリコントローラ80が要求メッセージ400でSPDハブ65に伝達すると、SPDハブ65は、メッセージの正確性および有効性をチェックするために、多数の決定を実行する。例えば、SPDハブ65は、要求メッセージ400が、有効な証明書チェーン326を含むスロット324を示しているかどうかを決定してもよく、SPDハブ65は、要求されたスロット324が、エンティティ85と一致する証明書チェーン326であって、書き込み保護の変更または解除対象である要求されたブロックに対応する証明書チェーン326を含むかどうかを決定してもよく、SPDハブ65は、要求メッセージ400が有効な署名を有するかどうかを決定してもよく、または受信した要求メッセージ400に基づいて、他の決定が行われてもよい。例えば、要求メッセージ400がメモリコントローラ80によって提供され、DIMMプロバイダに関連付けられたブロックを示すがシステムプロバイダまたはエンドの証明書チェーン326に対応するスロット324を要求する場合、SPDハブ65は、要求メッセージ400に不一致があると決定してもよい。例示的な実施形態において、署名の検証は、例えば、後続の要求メッセージ400の検証も必要な場合がある要求メッセージ400に対して明示的であってもよい。
【0092】
すべてのチェックが成功したか有効であるとSPDハブ65が決定した場合、SPDハブ65は、応答メッセージ500を生成する。一部の実施形態において、ブラインドリプレイアタックを防止するために、応答メッセージ500は、後続の要求メッセージ400を検証するために利用され得る固有のノンスを含む。SPDハブ65は、ノンスと現在のブロックステータスとを含む応答メッセージ500をメモリコントローラ80に返す。また、SPDハブ65は、後で比較するために、生成されたノンスを内部ストレージに一時的に格納してもよい。例示的な実施形態において、生成された各ノンスは、SPDハブ65によって1回のみ使用され、メモリコントローラ80から受信した後続の要求メッセージを検証するために使用された後に、SPDハブ65によって自動的にクリアされる。SPDハブ65は、メモリコントローラ80が書き込み保護を設定または解除するためのコマンドを含む後続の要求メッセージ400を送信するときに、メモリコントローラ80によって提供された対応するノンスを比較するために、ノンスを使用する。一部の実施形態において、SPDハブ65がノンスを使用しない場合であっても、例えば、一部の実施形態において検証を必要としない書き込み保護設定/解除モードの終了メッセージを受信した場合であっても、ノンスは自動的にクリアされる。
【0093】
1つまたは複数のチェックの結果、エラーが発生した場合、SPDハブ65は、適切なエラーフラグを立てて、ノンスをクリアし、エラーメッセージを送信する。一部の実施形態において、メモリコントローラ80によってエラーフラグが明示的にクリアされるまで、SPDハブ65によるそれ以上の動作が許可されない。その後、メモリコントローラ80は、新しい要求メッセージ400を提供し、再検証を行ってもよい。
【0094】
後続の要求メッセージ400は、対応するブロックの書き込み保護を設定または解除するためのコマンドを含み、対応するエンティティ85の秘密鍵によって署名される。SPDハブ65が後続の要求メッセージ400を受信すると、SPDハブ65は、1つまたは複数のチェックを実行して、後続の要求メッセージ400の正確性および有効性を決定する。例えば、SPDハブ65は、後続の要求メッセージ400が元の要求メッセージ400と同じ情報を、例えばコマンドとは別に、パラメータ1およびパラメータ2に有するかどうかを決定してもよい。別の例として、SPDハブ65は、後続の要求メッセージ400が、既に書き込み保護されているブロックの書き込み保護を設定するためのコマンドを含むかどうかを決定してもよい。別の例として、SPDハブ65は、後続の要求メッセージ400が、応答メッセージ500においてSPDハブ65によってメモリコントローラ80に提供されたのと同じノンスを含むかどうかを決定してもよい。別の例として、SPDハブ65は、後続の要求メッセージ400が有効な署名を含むかどうかを決定してもよい。後続の要求メッセージ400の正確性および有効性を検証するために、上述したチェック、または追加的または代替的なチェックのいずれかが、単独で、または組み合わせてSPDハブ65によって利用されてもよい。
【0095】
すべてのチェックが成功した場合、SPDハブ65は、その内部の一時ストレージからノンスをクリアし、適切なブロックのメモリにデータを書き込むコマンドを実行し、ブロックの書き込み保護を設定し、関連するステータスレジスタを更新し、適切なステータスレジスタを更新し、正常終了を示す応答メッセージ500を返す。
【0096】
1つまたは複数のチェックの結果、エラーが発生した場合、SPDハブ65は、適切なエラーフラグを立てて、ノンスをクリアし、エラーメッセージをメモリコントローラ80に送信する。一部の実施形態において、メモリコントローラ80によってエラーフラグが明示的にクリアされるまで、SPDハブ65によるそれ以上の動作が許可されない。
【0097】
その後、メモリコントローラ80は、要求メッセージをSPDハブ65に送信して、SPDハブ65に書き込み保護設定/解除モードを終了するように命令する。SPDハブ65は、終了を確認する応答メッセージを返し、メモリコントローラ80は、通常のランタイム動作を再開する。一部の実施形態において、書き込み保護設定/解除モードを終了するための要求メッセージは、署名および検証される必要がない。
【0098】
一部の実施形態において、例えばSPDハブプロバイダ、DIMMプロバイダ、システムプロバイダ、または他のエンティティなどのエンティティ85は、対応する証明書チェーン326を無効にすることを望む場合がある。一部の実施形態において、対応する証明書チェーン326を所与のスロット324にインストールしたエンティティ85のみが、そのスロット324の証明書チェーン326を無効にすることができる。例えば、SPDハブ65は、例えばSPDハブコンポーネントプロバイダ、DIMMプロバイダ、システムプロバイダ、または他のエンティティなどのエンティティ85が、そのエンティティ85が所有していない証明書チェーン326を無効にすることができないように構成されてもよい。
【0099】
一部の実施形態において、SPDハブコンポーネントの証明書チェーン326が無効にされると、リーフ証明書336の関連付けられた公開鍵/秘密鍵のペアも無効にされる。これは、他のエンティティのために他のスロット324に他の証明書チェーン326がインストールされている場合、それらの証明書チェーン326は、自動的に無効にはされないが、リーフ証明書の秘密鍵/公開鍵のペアがすべてのスロット324で共通であるため、もはや機能することができないことを意味する。新しいSPDハブコンポーネントの証明書チェーン326が例えばスロット0以外の別のスロットにロードされた場合、他の証明書チェーンも再インストールする必要がある場合がある。
【0100】
一部の実施形態において、メモリ300のブロックの書き込み保護は、HSAピンが抵抗で接地に接続された状態でSPDハブ65に電力が供給されている場合、いつでも設定されてもよい。
【0101】
次に、
図12を参照して、書き込み保護を設定するための例示的なプロセスについて説明する。
図12のプロセスは、ステップ600~640を含む。
【0102】
ステップ600において、書き込み保護の設定または解除を要求するエンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、要求メッセージを生成する(
図10)。要求メッセージは、書き込み保護設定/解除モードを開始するためのコマンドを含む。
【0103】
ステップ602において、エンティティ85は、要求メッセージのダイジェスト328を計算する。
【0104】
ステップ604において、エンティティ85は、復号化秘密鍵を使用して、ダイジェストに少なくとも部分的に基づく署名を生成する。
【0105】
ステップ605において、エンティティ85は、署名を要求メッセージに付加し、署名を含む要求メッセージをメモリコントローラ80に送信する。メモリコントローラ80は、付加された署名と共に要求メッセージをSPDハブ65に提供する。一部の実施形態において、要求メッセージは、ノンスを含んでもよい。
【0106】
ステップ606において、SPDハブ65は、例えば、スロットで見つかった証明書チェーンの公開鍵を使用して、スロットと署名の有効性をチェックして、署名を検証する。
【0107】
エンティティ85のスロットおよび署名のいずれかが有効でない場合、SPDハブ65は、ステップ608において、エラーメッセージでメモリコントローラ80に応答する。一部の実施形態において、プロセスは、メモリコントローラ80またはエンティティ85がステップ610においてエラーフラグをクリアするまで続行されず、その後、プロセスは、ステップ600に戻る。
【0108】
エンティティ85のスロットおよび署名が有効である場合、SPDハブ65は、ステップ612において、例えば、応答メッセージ500のフォーマットを使用した応答メッセージで要求メッセージに応答し(
図11)、ノンスをメモリコントローラ80に提供する。メモリコントローラ80は、応答およびノンスをエンティティ85に提供する。
【0109】
ステップ614において、エンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、1つまたは複数のブロックの書き込み保護を設定または解除するためのコマンドを含むコマンドメッセージを生成する。コマンドメッセージは、SPDハブ65が要求メッセージへの応答でメモリコントローラ80に提供したのと同じノンスを含む。
【0110】
ステップ616において、エンティティ85は、コマンドメッセージのダイジェストを計算する。
【0111】
ステップ618において、エンティティ85は、復号化秘密鍵を使用して、ダイジェストに少なくとも部分的に基づく署名を生成する。
【0112】
ステップ620において、エンティティ85は、署名をコマンドメッセージに付加し、署名を含むコマンドメッセージをメモリコントローラ80に送信する。メモリコントローラ80は、付加された署名と共にコマンドメッセージをSPDハブ65に提供する。
【0113】
ステップ622において、SPDハブ65は、例えば、コマンドメッセージに対応する証明書チェーンを使用して、コマンドメッセージに含まれるスロットおよび署名の有効性をチェックする。また、SPDハブ65は、コマンドメッセージと共に受信したノンスが、要求メッセージへの応答でSPDハブ65によって提供されたノンスと同じであることを確認する。
【0114】
スロット、署名、およびノンスのいずれかが有効でない場合、SPDハブ65は、ステップ624において、エラーメッセージでメモリコントローラ80に応答し、エラーフラグを立てる。一部の実施形態において、プロセスは、メモリコントローラ80またはエンティティ85がステップ626においてエラーフラグをクリアするまで続行されず、その後、プロセスは、ステップ628に進む。SPDハブ65は、ステップ628において、書き込み保護設定/解除モードを終了し、ステップ630において、例えば、応答メッセージ500のフォーマットを使用して、書き込み保護設定/解除モードが終了したことを示す応答をメモリコントローラ80に提供する(
図11)。その後、プロセスは、開始ステップに戻り、再びステップ600に進む。
【0115】
ステップ622に戻る。スロット、署名、およびノンスが有効である場合、SPDハブ65は、ステップ632において、例えば、対応するブロックのステータスレジスタを更新してノンスをクリアすることでコマンドを実行し、ステップ634において、例えば、応答メッセージ500のフォーマットを使用して、コマンドの正常終了を示す応答をメモリコントローラ80に提供する。
【0116】
ステップ636において、エンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、書き込み保護設定/解除モードを終了するためのコマンドを含む、書き込み保護設定/解除モードを終了するメッセージを生成し、その書き込み保護設定/解除モードを終了するメッセージをメモリコントローラ80に送信する。メモリコントローラ80は、書き込み保護設定/解除モードを終了するメッセージをSPDハブ65に提供する。一部の実施形態において、書き込み保護設定/解除モードを終了するメッセージは、署名されていてもよい。一部の実施形態において、書き込み保護設定/解除モードを終了するメッセージは、署名を必要としない。
【0117】
ステップ638において、SPDハブ65は、書き込み保護設定/解除モードを終了するメッセージに少なくとも部分的に基づいて、書き込み保護設定/解除モードを終了し、例えば、応答メッセージ500のフォーマットを使用して、書き込み保護設定/解除モードが終了したことを示す応答をメモリコントローラ80に提供する。
【0118】
ステップ640において、エンティティ85、メモリコントローラ80、およびSPDハブ65は、通常のランタイム動作に戻る。
【0119】
上記の例示的なプロセスは、特定のステップを有するかステップを特定の順序で実施するように説明されているが、他の実施形態において、ステップの一部のみが実施されてもよく、ステップが他の順序で実施されてもよい。
【0120】
次に、
図13を参照して、例示的な実施形態による、書き込み保護を設定および解除するための例示的なプロセスについて説明する。
図13のプロセスは、ステップ700~720を含む。
【0121】
ステップ700において、SPDハブ65は、例えば上述したように、スロットX内に証明書チェーンをインストールする。
【0122】
ステップ702において、SPDハブ65は、スロットXに格納された証明書チェーンの中間証明書から公開鍵を抽出する。
【0123】
ステップ704において、SPDハブ65は、例えば、メモリコントローラ80から受信した書き込み保護モードの開始要求に応答して、書き込み保護モードを開始する。
【0124】
ステップ706において、SPDハブ65は、例えば、メモリコントローラ80から、書き込み保護の設定およびそれに続く署名のためのコマンドを受信する。
【0125】
ステップ708において、SPDハブ65は、抽出した公開鍵を使用して署名を検証する。
【0126】
ステップ710において、SPDハブ65は、書き込み保護を設定するためのコマンドからスロットIDとブロックIDを取得する。
【0127】
ステップ712において、SPDハブ65は、例えば、スロットXなどのスロットIDに格納された署名チェーンを使用して、取得したブロックIDに対応するブロックの書き込み保護を設定する。設定されると、書き込み保護は、スロットXなどのスロットIDに格納された署名チェーンをインストールしたエンティティ85によってのみ解除され得る。
【0128】
ステップ714において、SPDハブ65は、例えば、メモリコントローラ80から、書き込み保護を解除するためのコマンドを受信する。
【0129】
ステップ716において、SPDハブ65は、抽出した公開鍵を使用して、書き込み保護を解除するためのコマンドの署名を検証する。
【0130】
ステップ718において、SPDハブ65は、書き込み保護を解除するためのコマンドからスロットIDとブロックIDを取得する。
【0131】
ステップ720において、SPDハブ65は、ブロックIDに対応するブロックの書き込み保護を解除する。
【0132】
上記の例示的なプロセスは、特定のステップを有するかステップを特定の順序で実施するように説明されているが、他の実施形態において、ステップの一部のみが実施されてもよく、ステップが他の順序で実施されてもよい。
【0133】
次に、
図14を参照して、例示的な実施形態による、証明書を無効にするための例示的なプロセスについて説明する。
図14のプロセスは、ステップ800~844を含む。
【0134】
ステップ800において、証明書を無効にすることを要求するエンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、要求メッセージを生成する(
図10)。要求メッセージは、証明書無効化モードを開始するためのコマンドを含む。
【0135】
ステップ802において、エンティティ85は、要求メッセージのダイジェスト328を計算する。
【0136】
ステップ804において、エンティティ85は、復号化秘密鍵を使用して、ダイジェストに少なくとも部分的に基づく署名を生成する。
【0137】
ステップ805において、エンティティ85は、署名を要求メッセージに付加し、署名を含む要求メッセージをメモリコントローラ80に送信する。メモリコントローラ80は、付加された署名と共に要求メッセージをSPDハブ65に提供する。一部の実施形態において、要求メッセージは、ノンスを含んでもよい。
【0138】
ステップ806において、SPDハブ65は、例えば、スロットで見つかった証明書チェーンの公開鍵を使用して、スロット、ダイジェスト、および署名の有効性をチェックして、ダイジェストおよび署名を検証する。例えば、SPDハブ65は、有効な証明書チェーンが指定されたスロットにインストールされているかどうかを決定してもよく、スロットの証明書チェーンのエンティティIDと要求メッセージのエンティティタイプとが一致するかどうかを決定してもよく、要求メッセージの指定されたスロットのダイジェスト値と指定されたスロットの内部に格納されたダイジェスト値とが一致するかどうかを決定してもよく、コントローラの要求メッセージの署名が有効であるかどうかを決定してもよく、他の決定が行われてもよい。
【0139】
エンティティ85のスロット、ダイジェスト、および署名が有効でない場合、SPDハブ65は、ステップ808において、エラーメッセージでメモリコントローラ80に応答する。一部の実施形態において、プロセスは、メモリコントローラ80またはエンティティ85がステップ810においてエラーフラグをクリアするまで続行されず、その後、プロセスは、ステップ800に戻る。
【0140】
エンティティ85のスロット、ダイジェスト、および署名が有効である場合、SPDハブ65は、ステップ812において、例えば、応答メッセージ500のフォーマットを使用した応答メッセージで要求メッセージに応答し(
図11)、ノンスをメモリコントローラ80に提供する。メモリコントローラ80は、応答およびノンスをエンティティ85に提供する。
【0141】
ステップ814において、エンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、1つまたは複数のスロット324の証明書チェーン326を無効にするためのコマンドを含むコマンドメッセージを生成する。コマンドは、SPDハブ65が要求メッセージへの応答でメモリコントローラ80に提供したのと同じノンスを含む。
【0142】
ステップ816において、エンティティ85は、コマンドメッセージのダイジェストを計算する。
【0143】
ステップ818において、エンティティ85は、復号化秘密鍵を使用して、ダイジェストに少なくとも部分的に基づく署名を生成する。
【0144】
ステップ820において、エンティティ85は、署名をコマンドメッセージに付加し、署名を含むコマンドメッセージをメモリコントローラ80に送信する。メモリコントローラ80は、付加された署名と共にコマンドメッセージをSPDハブ65に提供する。
【0145】
ステップ822において、SPDハブ65は、例えば、コマンドメッセージに対応する証明書チェーンを使用して、コマンドメッセージに含まれるスロットおよび署名の有効性をチェックする。また、SPDハブ65は、コマンドメッセージと共に受信したノンスが、要求メッセージへの応答でSPDハブ65によって提供されたノンスと同じであることを確認する。例えば、SPDハブ65は、コマンドメッセージが、要求メッセージを受けたときと同じ情報を示すかどうか決定してもよく、コマンドメッセージ内で指定されたスロットのダイジェスト値が、指定されたスロットの内部に格納されたダイジェスト値とが一致するかどうか決定してもよく、コマンドメッセージが、要求メッセージに応答してSPDハブ65が生成したのと同じノンスを示すかどうかを決定してもよく、コマンドメッセージの署名が有効であるかどうかを決定してもよく、他の決定が行われてもよい。
【0146】
スロット、署名、およびノンスのいずれかが有効でない場合、SPDハブ65は、ステップ824において、エラーメッセージでメモリコントローラ80に応答し、エラーフラグを立てる。一部の実施形態において、プロセスは、メモリコントローラ80またはエンティティ85がステップ826においてエラーフラグをクリアするまで続行されず、その後、プロセスは、ステップ828に進む。
【0147】
SPDハブ65は、ステップ828において、証明書無効化モードを終了し、ステップ830において、例えば、応答メッセージ500のフォーマットを使用して、証明書無効化モードが終了したことを示す応答をメモリコントローラ80に提供する(
図11)。その後、プロセスは、開始ステップに戻り、再びステップ800に進む。
【0148】
ステップ822に戻る。スロット、署名、およびノンスが有効である場合、SPDハブ65は、ステップ832において、例えば、対応するスロット324の証明書チェーン326を無効にしてノンスをクリアすることでコマンドを実行し、ステップ834において、例えば、応答メッセージ500のフォーマットを使用して、コマンドの正常終了を示す応答をメモリコントローラ80に提供する。例えば、証明書チェーン326は、証明書チェーンをクリアまたは削除することで、または所定の値で証明書チェーンを例えばすべて0、すべて1または別のパターンで上書きすることで、または他の方法で無効にされてもよい。
【0149】
ステップ836において、エンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、証明書無効化モードを終了するためのコマンドを含む、証明書無効化モードを終了するメッセージを生成し、その証明書無効化モードを終了するメッセージをメモリコントローラ80に送信する。メモリコントローラ80は、証明書無効化モードを終了するメッセージをSPDハブ65に提供する。一部の実施形態において、証明書無効化モードを終了するメッセージは、署名されていてもよい。一部の実施形態において、証明書無効化モードを終了するメッセージは、署名を必要としない。
【0150】
ステップ838において、SPDハブ65は、証明書無効化モードを終了するメッセージに少なくとも部分的に基づいて、証明書無効化モードを終了し、例えば、応答メッセージ500のフォーマットを使用して、証明書無効化モードが終了したことを示す応答をメモリコントローラ80に提供する。
【0151】
ステップ840において、エンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、バージョンを取得するためのコマンドを含むバージョン取得メッセージを生成し、そのバージョン取得メッセージをメモリコントローラ80に送信する。メモリコントローラ80は、バージョン取得メッセージをSPDハブ65に提供する。
【0152】
ステップ842において、SPDハブ65は、バージョンを取得し、例えば、応答メッセージ500のフォーマットを使用して、バージョンを含む応答をメモリコントローラ80に提供する。
【0153】
ステップ844において、エンティティ85、メモリコントローラ80、およびSPDハブ65は、通常のランタイム動作に戻る。
【0154】
上記の例示的なプロセスは、特定のステップを有するかステップを特定の順序で実施するように説明されているが、他の実施形態において、ステップの一部のみが実施されてもよく、ステップが他の順序で実施されてもよい。
【0155】
一部の実施形態において、ファームウェアは、書き込み保護と同様に保護されてもよい。例えば、許可されたエンティティ以外のエンティティによる、悪意のあるファームウェアの更新またはファームウェアへの変更を禁止するために、証明書チェーンの認証に基づくプロセスを利用して、ファームウェアの更新または変更を検証してもよい。
【0156】
一部の実施形態において、ファームウェア更新プロセスは、複数のステップを含んでもよい。例えば、プロセスは、SPDハブ65をファームウェア管理モードにするステップと、ファームウェア更新動作を実行するステップと、を含んでもよい。例示的な実施形態において、SPDハブ65をファームウェア管理モードにするためのメッセージと、ファームウェア更新プロセスを実行するためのメッセージは、ファームウェア更新における有効性を保証するために、2つの異なるSPDMメッセージを含んでもよい。例えば、一部の実施形態において、SPDハブ65は、ファームウェア更新メッセージの受信を可能にするために、最初にファームウェア管理モードを開始するためのコマンドを含むメッセージを受信する必要があるようになっていてもよい。
【0157】
例示的な実施形態において、ファームウェア更新は、例えば、SPDハブコンポーネントプロバイダによってスロット0にインストールされたSPDハブ65の証明書チェーンに基づいてのみ許可されるようになっていてもよい。他の実施形態において、他の特定のエンティティがファームウェア更新を実行する権限を有していてもよい。
【0158】
次に、
図15を参照して、例示的な実施形態による、SPDハブ65のファームウェア更新を実行するための例示的なプロセスを説明する。
図15のプロセスは、ステップ900~946を含む。
【0159】
ステップ900において、例えば、例示的な実施形態におけるSPDハブコンポーネントプロバイダなど、ファームウェア更新の実行を要求するエンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、ファームウェア管理モードの要求メッセージを生成する(
図10)。ファームウェア管理モードの要求メッセージは、ファームウェア管理モードを開始するためのコマンドを含む。また、一部の実施形態において、ファームウェア管理モードの要求メッセージは、不透明型データフィールドを含む。これは、このフィールドに含まれるデータ入力に基づいて、(ステップ906において)SPDハブ65に新しい秘密鍵/公開鍵のペアを生成させるように構成される。SPDハブは、新しい公開鍵を使用して、ファームウェア更新メッセージを復号化し、ファームウェアイメージを認証するように構成される。秘密鍵は、SPDハブ65によって使用されず、非公開のままであるか、削除される。
【0160】
ステップ902において、エンティティ85は、要求メッセージのダイジェスト328を計算する。
【0161】
ステップ904において、エンティティ85は、この場合、SPDハブコンポーネントプロバイダによってスロット0にインストールされた証明書チェーン326に対応する秘密鍵である復号化秘密鍵を使用して、ダイジェストに少なくとも部分的に基づく署名を生成する。
【0162】
ステップ905において、エンティティ85は、署名をファームウェア管理モードの要求メッセージに付加し、署名を含む、ファームウェア管理モードの要求メッセージをメモリコントローラ80に送信する。メモリコントローラ80は、付加された署名と共にファームウェア管理モードの要求メッセージをSPDハブ65に提供する。また、一部の実施形態において、メモリコントローラは、例えば、ペイロード内に、ファームウェア管理モードの要求メッセージと共にノンスを生成および提供する。また、メモリコントローラ80は、不透明型データフィールドの同じデータ入力に基づいて、SPDハブ65と同じ秘密鍵/公開鍵のペアを生成する。メモリコントローラ80は、後続のファームウェア更新メッセージを署名するために、新しい秘密鍵を利用するように構成される。
【0163】
ステップ906において、SPDハブ65は、例えば、スロット0で見つかった証明書チェーン326の復号化証明書の公開鍵を使用して、署名の有効性をチェックして、署名を検証する。
【0164】
署名が有効でない場合、SPDハブ65は、ステップ908において、エラーメッセージでメモリコントローラ80に応答する。一部の実施形態において、プロセスは、メモリコントローラ80またはエンティティ85がステップ910においてエラーフラグをクリアするまで続行されず、その後、プロセスは、ステップ900に戻る。
【0165】
署名が有効である場合、SPDハブ65は、ステップ912において、ノンス、および新しい秘密鍵/公開鍵のペアを生成し、ファームウェア更新モードを開始することで、ファームウェア更新の受け入れを有効にする。
【0166】
また、SPDハブ65は、ステップ914において、例えば、応答メッセージ500のフォーマットを使用して、ノンス、現在のアクティブファームウェアスロットステータス、および改訂番号を含む応答メッセージでメモリコントローラ80に応答する(
図11)。メモリコントローラ80は、応答メッセージおよびノンスをエンティティ85に提供する。SPDハブ65は、新しく生成されたノンスおよび公開鍵/秘密鍵のペアを内部の一時ストレージに格納する。ノンスは、新しいファームウェアがアクティベートされるか、SPDハブ65がファームウェア管理モードを終了するまで、後続のファームウェア更新メッセージのために使用される。例えば、一部の実施形態において、SPDハブ65は、新しいファームウェアがアクティベートされるか、SPDハブ65がファームウェア管理モードを終了すると、ノンスと新しい公開鍵/秘密鍵のペアを自動的にクリアするように構成される。一部の実施形態において、新しいファームウェアがアクティベートされると、SPDハブ65がファームウェア管理モードを自動的に終了させる。
【0167】
一部の実施形態において、SPDハブ65は、ファームウェアのために2つのスロットを有するが、他の数のスロットが代替的に使用されてもよい。スロットは、アクティブスロットと、将来の更新スロットと、を含む。アクティブスロットは、SPDハブ65で現在実行されているファームウェアを含む。将来の更新スロットには、新しいファームウェアがロードされる。新しいファームウェアがアクティベートされると、将来の更新スロットがアクティブスロットになり、アクティブスロットが将来の更新スロットになる。ファームウェアのサイズは、SPDハブ65の属性に応じて異なることができ、場合によっては大きなデータサイズを含んでもよい。
【0168】
ステップ916において、エンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、完全ファームウェア転送コマンド、部分ファームウェア転送コマンド、ファームウェア転送終了コマンド、または別のファームウェア転送コマンドを含むファームウェア更新メッセージをメモリコントローラ80に提供することで、ファームウェアロード動作を開始してもよい(
図10)。また、ファームウェア更新メッセージは、ステップ912においてSPDハブ65によって生成されたノンスを含む。メモリコントローラ80は、ファームウェア更新メッセージをSPDハブ65に提供する。
【0169】
例えば、部分ファームウェア転送コマンドまたは完全ファームウェア転送コマンドは、第1のファームウェア更新メッセージに含まれてもよく、部分ファームウェア転送コマンドまたはファームウェア転送終了コマンドは、第2または後続のファームウェア転送メッセージに含まれてもよく、ファームウェア転送終了コマンドは、ファームウェアデータの転送が完了し、ファームウェアデータが将来の更新スロットにインストールされた後に、最終ファームウェア転送メッセージに含まれてもよい。ファームウェア転送終了コマンドは、新しくインストールされたファームウェアを認証するために、SPDハブ65をトリガーするように構成されてもよい。ファームウェアパッケージは、ファームウェアデータと、不透明型データフィールドのデータ入力に基づいてメモリコントローラ80によって生成された新しい秘密鍵を使用してメモリコントローラ80によって生成された署名と、を有する。一部の実施形態において、署名は、秘密鍵によって署名されたファームウェアデータ全体のハッシュ値である。
【0170】
ステップ918において、SPDハブ65は、不透明型データフィールドから入力されたデータを使用して生成された新しい公開鍵を使用して、署名およびノンスの有効性をチェックする。例示的な実施形態において、ファームウェア更新メッセージは、有効な署名を含むファームウェア管理モードの要求メッセージをメモリコントローラ80が送信し、SPDハブ65が署名の検証に成功した後にのみ、SPDハブ65によって受け入れられる。この検証が行われない場合、ファームウェア更新メッセージは、エラーメッセージと共にメモリコントローラ80に返される。
【0171】
署名およびノンスのいずれかが有効でない場合、SPDハブ65は、ステップ920において、エラーメッセージでメモリコントローラ80に応答し、エラーフラグを立てる。一部の実施形態において、プロセスは、メモリコントローラ80またはエンティティ85がステップ922においてエラーフラグをクリアするまで続行されず、その後、プロセスは、ステップ916に戻る。
【0172】
ステップ918に戻る。署名およびノンスが有効である場合、SPDハブ65は、ステップ924において、例えば、部分ファームウェアコマンド、完全ファームウェア転送コマンド、またはファームウェア転送終了コマンドを実行することで、ファームウェア更新メッセージを実行し、ステップ926において、例えば、応答メッセージ500のフォーマットを使用して、ファームウェア更新メッセージで見つかったファームウェア転送コマンドが正常に実行されたことを示す応答をメモリコントローラ80に提供する。
【0173】
ステップ928において、エンティティ85は、ファームウェア転送動作が完了したかどうかを決定する。ファームウェア転送動作が完了していない場合、例えば、ファームウェア転送がまだ進行中である場合、プロセスは、ステップ916に戻り、エンティティ85は、部分ファームウェア転送コマンドを含む新しいファームウェア更新メッセージを生成し、ファームウェアデータが完全に転送された場合、ファームウェア転送終了コマンドを生成する。その後、プロセスは、再びステップ918に進む。
【0174】
ファームウェア転送動作が完了している場合、例えば、ステップ926において、ファームウェア転送終了コマンドが正常に実行されたという表示を含むハブ応答を受信した場合、プロセスは、ステップ930(SPDハブ65の場合)および938(エンティティ85の場合)に進む。
【0175】
ステップ930において、SPDハブ65は、ファームウェアパッケージから署名情報を抽出し、署名を復号化して、例えば、不透明型データフィールドに基づいて生成された新しい公開鍵を使用して、ファームウェアデータパッケージのファームウェアデータハッシュを取得する。
【0176】
ステップ932において、SPDハブ65は、将来の更新スロットにインストールされたファームウェアデータに基づいて、ファームウェア(FM)データハッシュを計算する。
【0177】
ステップ934において、SPDハブ65は、取得したファームウェアデータハッシュと計算したファームウェアデータハッシュとを比較することで、ファームウェア署名の有効性をチェックする。
【0178】
ファームウェア署名が有効でない場合、例えば、取得したファームウェアデータハッシュと計算したファームウェアデータハッシュとの間で不一致がある場合、SPDハブ65は、ステップ936において、ファームウェアデータパッケージを破棄し、例えば、将来の更新スロット内のファームウェアデータをクリア、削除、または上書きし、エラーフラグを立てて、例えば、応答メッセージ500のフォーマットを使用して、エラーフラグを含む応答メッセージを生成する(
図10)。また、SPDハブ65は、ノンスおよび新しい鍵ペアをクリアし、ファームウェア管理モードを終了する。その後、プロセスは、開始ステップに進み、エンティティ85は、ファームウェアの更新を再び試みるために、SPDハブ65にファームウェア管理モードを開始するように再び要求する必要がある。
【0179】
ファームウェア署名が有効である場合、例えば、取得したファームウェアデータハッシュと計算したファームウェアデータハッシュとが一致する場合、SPDハブ65は、ファームウェアのアクティベートを有効にし、メモリコントローラ80からのファームウェアアクティベートコマンドを待ち、プロセスは、ステップ938に進んでファームウェアアクティベート動作を開始する。
【0180】
ステップ938において、エンティティ85は、例えば、要求メッセージ400のフォーマットを使用して、ファームウェアアクティベートコマンドを含むファームウェア更新メッセージを生成する(
図10)。エンティティ85は、ファームウェア更新メッセージをメモリコントローラ80に提供し、ファームウェア更新メッセージは、メモリコントローラ80によってSPDハブ65に提供される。一部の実施形態において、ファームウェア更新メッセージは、新しい秘密鍵で署名され、ステップ916について上述したファームウェア更新メッセージと同様にSPDハブ65によって生成されたノンスを含む。このように、メモリコントローラ80は、ファームウェア更新パッケージの一部として、ファームウェアデータパッケージ内に、第2の署名および第2のノンスを含むファームウェア転送要求をアサートする。
【0181】
ファームウェアアクティベートコマンドを含むファームウェア更新メッセージを受信したことに応答して、SPDハブ65は、例えば、ステップ940において、将来の更新スロットをアクティブスロットにし、アクティブスロットを将来の更新スロットにし、ノンスをクリアし、新しい鍵ペアをクリアし、ファームウェア管理モードを終了することで、ファームウェアをアクティベートするように構成される。また、SPDハブ65は、ステップ942において、例えば、応答メッセージ500のフォーマットを使用して、ファームウェア更新コマンドが実行されたことを示す応答メッセージを生成し、その応答メッセージをメモリコントローラ80に提供するように構成される(
図10)。一部の実施形態において、SPDハブ65は、ステップ918および934について上述したものと同様のファームウェア更新メッセージの有効性チェックを実行する。
【0182】
ステップ944において、SPDハブ65は、新しいファームウェアをインストールするためにパワーサイクル動作を実行する。
【0183】
ステップ946において、SPDハブ65が再開すると、新しいファームウェアが有効になる。
【0184】
上記の例示的なプロセスは、特定のステップを有するかステップを特定の順序で実施するように説明されているが、別の実施形態において、ステップの一部のみが実施されてもよく、ステップが他の順序で実施されてもよい。
【0185】
例示的な実施形態で上述したように、SPDハブ65は、各エンティティ85によって対応するスロット324にインストールされた個々の証明書チェーン326を使用することで、通常のランタイム動作中に、個々のブロックおよびブロックのグループに対する書き込み保護を管理し、エンティティごとにファームウェア更新を管理するように構成される。SPDハブ65によって一時的に生成され、有効なエンティティ85によって署名され、そこから受信した後続の要求メッセージで使用するためにメモリコントローラ80に提供される固有のノンスと、各エンティティ85の秘密鍵とを組み合わせて使用することで、要求メッセージおよび応答メッセージの追加的な保護が提供される。
【0186】
例示的な実施形態において、例えばDDRメモリモジュールなどのメモリモジュールでSPDハブ65が利用されるように説明しているが、他の実施形態において、上述したコンポーネントおよびプロセスを含むSPDハブ65は、他のデバイスまたはシステムで書き込み保護またはファームウェア更新を管理するために利用されてもよい。
【0187】
本明細書で使用される用語は、特定の実施形態を説明するためにのみ使用されており、本発明を限定することを意図していない。本明細書で使用される単数を表す用語は、特に明示されない限り、その複数を含むことも意図している。また、本明細書で使用される「備える」という用語は、記載されている特徴、整数、ステップ、動作、要素、および/またはコンポーネントの存在を画定するが、1つまたは複数の特徴、整数、ステップ、動作、要素、コンポーネント、および/またはそれらの群の存在または追加を排除しないことに留意されたい。
【0188】
添付の特許請求の範囲に記載のすべての手段またはステップと機能要素の対応する構造、材料、動作、およびそれらの等価物は、具体的に記載されている他の要素と組み合わせて機能を実現するための任意の構造、材料、または動作を包含することを意図している。本発明の説明は例示および説明のために提供されているが、網羅的であること、または開示された形態の本発明に限定されることを意図していない。当業者には、本発明の範囲および精神から逸脱することなく、多くの修正および変形を適用することができることが明らかであろう。上述した実施形態は、本発明の原理および実用化を最適に説明するために、また、検討される特定の用途に適するように種々の修正を伴う様々な実施形態について本発明を当業者が理解できるように、選択および説明されたものである。
【外国語明細書】