(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-02
(45)【発行日】2022-09-12
(54)【発明の名称】認証の加速のための信頼できるストレージデバイスでのチェックサムの生成
(51)【国際特許分類】
G06F 21/57 20130101AFI20220905BHJP
G06F 21/64 20130101ALI20220905BHJP
G06F 21/44 20130101ALI20220905BHJP
G06F 8/65 20180101ALI20220905BHJP
【FI】
G06F21/57 320
G06F21/64
G06F21/44
G06F8/65
(21)【出願番号】P 2018188245
(22)【出願日】2018-10-03
【審査請求日】2021-09-16
(32)【優先日】2017-10-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】592051453
【氏名又は名称】ハーマン インターナショナル インダストリーズ インコーポレイテッド
(74)【代理人】
【識別番号】100078282
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【氏名又は名称】森下 夏樹
(72)【発明者】
【氏名】ロバート ハーセ
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2015/0261521(US,A1)
【文献】特表2013-534377(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-88
G06F 8/65
(57)【特許請求の範囲】
【請求項1】
公開鍵が格納されている組み込みデバイスに対するファームウェアをアップデートする方法であって、
前記方法は、
前記組み込みデバイスと
ストレージデバイスとの間の接続を開始することであって、前記ストレージデバイスは、コントローラ、メモリ、及び
読み出されることまたは送信されることができない修正不可能な秘密鍵を有し、前記修正不可能な秘密鍵は、前記ストレージデバイスでのみアクセスされる
、ことと、
前記組み込みデバイスで、前記ストレージデバイス上の前記組み込みデバイスに対するファームウェアのアップデートを検出することと、
前記組み込みデバイスが、前記ストレージデバイスの前記コントローラからの信頼できるチェックサムをリクエストすることと、
前記ストレージデバイスの前記コントローラで、前記修正不可能な秘密鍵を用いて、署名済みチェックサムを生成することと、
前記署名済みチェックサムを前記組み込みデバイスに戻すことと、
前記ストレージデバイスの前記コントローラから戻された前記署名済みチェックサムを、前記組み込みデバイスに格納されている
前記公開鍵
に対して検証することと、
前記ストレージデバイスの
前記コントローラを用いて、前記ストレージデバイスの
前記メモリから前記ファームウェアのアップデートを読み込むことと、
前記ファームウェアのアップデートを前記ストレージデバイスの前記メモリから前記組み込みデバイス
にコピーすることと
を含む
、方法。
【請求項2】
前記ストレージデバイスが
、外
部ストレージデバイスである、請求項1に記載の方法。
【請求項3】
前記
修正不可能な秘密鍵が、前記外
部ストレージデバイスに焼き付けられている、請求項2に記載の方法。
【請求項4】
前記
修正不可能な秘密鍵が
、前記外
部ストレージデバイス内のワンタイムプログラマブル領域の中にプログラム化される、請求項2に記載の方法。
【請求項5】
前記ストレージデバイスが
、組み込みマルチメディア
カードである、請求項1に記載の方法。
【請求項6】
前記
修正不可能な秘密鍵が、前記組み込みマルチメディア
カードに焼き付けられている、請求項5に記載の方法。
【請求項7】
前記
修正不可能な秘密鍵が、前記組み込みマルチメディア
カード内のワンタイムプログラマブル領域の中にプログラム化される、請求項5に記載の方法。
【請求項8】
ファームウェアをアップデートするシステムであって、
コンピューティングシステムと、
前記コンピューティングシステム上の少なくとも1つの組み込みデバイスであって、
前記少なくとも1つの組み込みデバイスは、ファームウェア、プロセッサ、メモリ、及び前記少なくとも1つの組み込みデバイスの前記メモリに格納されている公開鍵を有する
、少なくとも1つの組み込みデバイスと、
ストレージデバイスであって、前記ストレージデバイスは、コントローラ、メモリ、及び読み出されることまたは送信されることができない前記ストレージデバイス上の
修正不可能な秘密鍵を有し、前記修正不可能な秘密鍵は、前記ストレージデバイスでのみアクセスされる
、ストレージデバイスと、
前記ストレージデバイスの
前記メモリに格納されて
いるファームウェアのアップデートであって、前記ファームウェアのアップデートは、前記少なくとも1つの組み込みデバイスによって前記ファームウェアのアップデートが検出され、
前記少なくとも1つの組み込みデバイスからのリクエストにより、前記ストレージデバイスの前記コントローラで
、前記修正不可能な秘密鍵を用いて、署名済みチェックサムが生成され、
前記署名済みチェックサムが前記組み込みデバイスに戻され、前記ストレージデバイスの前記コントローラから戻された前記署名済みチェックサム
が、前記組み込みデバイスに格納されている前記公開鍵に対して検証され
、前記ファームウェアのアップデートが
前記組み込みデバイスにコピーされる際、前記少なくとも1つの組み込みデバイスに転送される
、ファームウェアのアップデートと
を備える
、システム。
【請求項9】
前記ストレージデバイスが
、外
部ストレージデバイスである、請求項8に記載のシステム。
【請求項10】
前記
修正不可能な秘密鍵が
、前記外
部ストレージデバイスに焼き付けられている、請求項9に記載のシステム。
【請求項11】
前記
修正不可能な秘密鍵が、前記外
部ストレージデバイス内のワンタイムプログラマブル領域の中にプログラム化される、請求項9に記載のシステム。
【請求項12】
前記外
部ストレージデバイスが、前記
修正不可能な秘密鍵を含む別のハードウェアセキュリティモジュールをさらに備える、請求項9に記載のシステム。
【請求項13】
前記ストレージデバイスが
さらに、組み込みマルチメディア
カードである、請求項8に記載のシステム。
【請求項14】
前記
修正不可能な秘密鍵が
、前記組み込みマルチメディア
カードに焼き付けられている、請求項13に記載のシステム。
【請求項15】
前記
修正不可能な秘密鍵が、前記組み込みマルチメディア
カード内のワンタイムプログラマブル領域の中にプログラム化される、請求項13に記載のシステム。
【請求項16】
前記組み込みマルチメディア
カードが、前記
修正不可能な秘密鍵を含む別のハードウェアセキュリティモジュールをさらに備える、請求項13に記載のシステム。
【請求項17】
前記
システムが、モノのインターネットのデバイス
の一部である、請求項13に記載のシステム。
【請求項18】
ストレージデバイスから組み込みデバイスに転送されるファイルのバリデーションチェックの方法であ
って、前記ストレージデバイスは、コントローラ、及び読み出されることまたは送信されることができない修正不可能な秘密鍵を有し、前記修正不可能な秘密鍵は、前記ストレージデバイスでのみアクセスされ、前記組み込みデバイスには公開鍵が格納されており、前記方法は、
前記ストレージデバイス
の前記コントローラを用いて、転送される前記ファイルを読み込むステップと
、
前記ファイルの転送前に、
前記組み込みデバイスが、前記ストレージデバイスの前記コントローラからの信頼できるチェックサムをリクエストするステップと、
前記ストレージデバイスの前記コントローラで、前記修正不可能な秘密鍵を用いて、署名済みチェックサムを生成するステップと、
前記署名済みチェックサムを前記組み込みデバイスに戻すステップと、
前記ストレージデバイスの前記コントローラから戻された前記署名済みチェックサムを、前記組み込みデバイスに格納されている
前記公開鍵
に対して検証するステップと、
前
記公開鍵
に対して前記署名済みチェックサムが検証されると、前記ファイルを前記ストレージデバイス
のメモリから前記組み込みデバイスに転送するステップと
を含む
、方法。
【請求項19】
前記ストレージデバイスが
、外
部ストレージデバイスであり、前記外
部ストレージデバイス上の前記
修正不可能な秘密鍵が、前記外
部ストレージデバイスに焼き付けられる、前記外
部ストレージデバイスのワンタイムプログラマブル領域の中にプログラム化される、または、前記外
部ストレージデバイス上の別のハードウェアセキュリティモジュールに包含される、請求項18に記載の方法。
【請求項20】
前記ストレージデバイスが
、組み込みマルチメディア
カードであり、前記組み込みマルチメディア
カード上の前記
修正不可能な秘密鍵が、前記組み込みマルチメディア
カードに焼き付けられる、前記組み込みマルチメディア
カードのワンタイムプログラマブル領域の中にプログラム化される、または、前記組み込みマルチメディア
カード上の別のハードウェアセキュリティモジュールに包含される、請求項18に記載の方法。
【請求項21】
組み込みシステムに適用されるファイルのバリデーションチェックの方法であって、
前記組み込みシステムには公開鍵が格納されており、前記方法は、
前記組み込みシステム上のeMMCメモリコントローラを用いて、適用される前記ファイルを読み込むステップ
であって、前記eMMCメモリコントローラは、読み出されることまたは送信されることができない修正不可能な秘密鍵を有し、前記修正不可能な秘密鍵は、前記eMMCメモリコントローラでのみアクセスされる、ステップと、
前記ファイルの適用前に、
前記組み込みシステムが、前記eMMCメモリコントローラからの信頼できるチェックサムをリクエストするステップと、
前記eMMCメモリコントローラで、前記修正不可能な秘密鍵を用いて、署名済みチェックサムを生成するステップと、
前記署名済みチェックサムを前記組み込みシステムに戻すステップと、
前記eMMCメモリコントローラから戻された前記署名済みチェックサムを、前記組み込みシステムに格納されている
前記公開鍵
に対して検証するステップと、
前
記公開鍵
に対して前記署名済みチェックサムが検証されると、前記ファイルを前記eMMCメモリコントローラから前記組み込みシステムに転送するステップと
を含む
、方法。
【請求項22】
前記eMMCメモリコントローラ上の前記
修正不可能な秘密鍵が、前記eMMCメモリコントローラ上に焼き付けられる、前記eMMCメモリコントローラのワンタイムプログラマブル領域の中にプログラム化される、または、前記eMMCメモリコントローラの別のハードウェアセキュリティモジュール上に包含される、請求項21に記載の方法。
【請求項23】
前記組み込みシステムが、モノのインターネットのデバイスの一部である、請求項22に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
発明の主題は、コンピューティングシステムの組み込みデバイスでのファームウェアのアップデートのシステム及び方法を対象とする。
【背景技術】
【0002】
コンピューティングシステムの組み込みデバイスは、消費者市場、自動車市場、ヘルスケア市場及び産業市場において広範な用途を有する。組み込みデバイスは、通常、特殊目的のコンピューティングシステム内に含まれる。組み込みデバイスの多くは、システムを制御するためのファームウェアに依存する。多くの場合、ファームウェアによって制御されるデバイスの機能性は、ファームウェアに対するアップデートを必要とする。例えば、オペレーティングシステムとの互換性を維持するために、新規の機能性を追加するために、不具合を修正するために、またはセキュリティ上の理由のためである。ファームウェアのアップデートは、通常、大容量ストレージデバイスに格納され、組み込みデバイスと大容量ストレージデバイスの間で必要な前提条件が満たされると組み込みデバイスに転送される。現在は、大容量ストレージデバイスから組み込みデバイスに対してファームウェアのアップデートを行うとき、アップデートにかかる時間の約半分は、ハッシュ及び署名をチェックすることによりアップデートの信頼性及び整合性を検証するための情報の初期読込みから構成される。一致すると、アップデートを進めることが承認される。それ以外の場合、アップデートは拒絶される。
【0003】
大容量ストレージデバイスから組み込みデバイスへファームウェアのアップデートを行う速度を加速させるシステム及び方法が必要とされる。
【発明の概要】
【課題を解決するための手段】
【0004】
公開鍵が格納された組み込みデバイスに対してファームウェアをアップデートするシステム及び方法が提供される。方法は、組み込みデバイスとストレージデバイスの間の接続を開始する。ストレージデバイスは、コントローラ、メモリ、及び組み込みデバイスの製造業者に関連する秘密鍵を有する。組み込みデバイスで、ストレージデバイス上のファームウェアのアップデートが検出される。格納されている公開鍵が、ストレージデバイスのコントローラで組み込みデバイスから受信される。格納されている公開鍵は、コントローラ及びストレージデバイス上の組み込みデバイスの製造業者に関連する秘密鍵を用いて検証される。ファームウェアのアップデートが、ストレージデバイス上のコントローラを用いてストレージデバイスのメモリから読み込まれる。そして格納されている公開鍵が検証されると、ファームウェアは組み込みデバイス上でアップデートされる。
【0005】
ストレージデバイス上の秘密鍵は、ストレージデバイス上に焼き付けられる。ストレージデバイスは外部大容量ストレージデバイスであってもよく、または、ストレージデバイスは組み込みマルチメディアコントローラメモリコントローラであってもよい。
本発明は、例えば、以下の項目を提供する。
(項目1)
公開鍵が格納されている組み込みデバイスに対するファームウェアをアップデートする方法であって、
前記組み込みデバイスと、コントローラ、メモリ、及びストレージデバイスでのみアクセスされる前記組み込みデバイスの製造業者に関連する秘密鍵を有する前記ストレージデバイスの間の接続を開始することと、
前記組み込みデバイスで、前記ストレージデバイス上の前記組み込みデバイスに対するファームウェアのアップデートを検出することと、
前記ストレージデバイスの前記コントローラで、前記格納されている公開鍵を前記組み込みデバイスから受信することと、
前記ストレージデバイスのコントローラ及び前記ストレージデバイス上の前記秘密鍵を用いて前記格納されている公開鍵を検証することと、
前記ストレージデバイスのコントローラを用いて、前記ストレージデバイスのメモリから前記ファームウェアのアップデートを読み込むことと、
前記格納されている公開鍵が検証されると、前記組み込みデバイス上で前記ファームウェアをアップデートすることとを含む、前記方法。
(項目2)
前記ストレージデバイスが外部大容量ストレージデバイスである、上記項目に記載の方法。
(項目3)
前記秘密鍵が、前記外部大容量ストレージデバイスに焼き付けられている、上記項目のいずれか一項に記載の方法。
(項目4)
前記秘密鍵が前記外部大容量ストレージデバイス内のワンタイムプログラマブル領域の中にプログラム化される、上記項目のいずれか一項に記載の方法。
(項目5)
ストレージデバイスが組み込みマルチメディアコントローラメモリコントローラである、上記項目のいずれか一項に記載の方法。
(項目6)
前記秘密鍵が、前記組み込みマルチメディアコントローラメモリコントローラに焼き付けられている、上記項目のいずれか一項に記載の方法。
(項目7)
前記秘密鍵が、前記組み込みマルチメディアコントローラメモリコントローラ内のワンタイムプログラマブル領域の中にプログラム化される、上記項目のいずれか一項に記載の方法。
(項目8)
ファームウェアをアップデートするシステムであって、
コンピューティングシステムと、
前記コンピューティングシステム上の少なくとも1つの組み込みデバイスであって、ファームウェア、プロセッサ、メモリ、及び前記少なくとも1つの組み込みデバイスの前記メモリに格納されている公開鍵を有する前記組み込みデバイスと、
ストレージデバイス上の前記組み込みデバイスの製造業者に関連し前記ストレージデバイスでのみアクセスされる秘密鍵を有する前記ストレージデバイスであって、コントローラを有する前記ストレージデバイスと、
前記ストレージデバイスのメモリに格納されており、前記少なくとも1つの組み込みデバイスによって前記ファームウェアのアップデートが検出され、前記ストレージデバイスの前記コントローラでチェックサムが生成され、前記ストレージデバイス上の前記秘密鍵を用いて前記ストレージデバイスで前記チェックサムに署名され、前記組み込みデバイスで前記署名済みチェックサムが検証され、前記署名済みチェックサムが検証されると前記組み込みデバイスに対するファームウェアのアップデートが行われる際、前記少なくとも1つの組み込みデバイスに転送される前記ファームウェアのアップデートとを備える、前記システム。
(項目9)
前記ストレージデバイスが外部大容量ストレージデバイスである、上記項目のいずれか一項に記載のシステム。
(項目10)
前記秘密鍵が前記外部大容量ストレージデバイスに焼き付けられている、上記項目のいずれか一項に記載のシステム。
(項目11)
前記秘密鍵が、前記外部大容量ストレージデバイス内のワンタイムプログラマブル領域の中にプログラム化される、上記項目のいずれか一項に記載のシステム。
(項目12)
前記外部大容量ストレージデバイスが、前記秘密鍵を含む別のハードウェアセキュリティモジュールをさらに備える、上記項目のいずれか一項に記載のシステム。
(項目13)
前記ストレージデバイスが、組み込みマルチメディアコントローラメモリコントローラをさらに備える、上記項目のいずれか一項に記載のシステム。
(項目14)
前記秘密鍵が前記組み込みマルチメディアコントローラメモリコントローラに焼き付けられている、上記項目のいずれか一項に記載のシステム。
(項目15)
前記秘密鍵が、前記組み込みマルチメディアコントローラメモリコントローラ内のワンタイムプログラマブル領域の中にプログラム化される、上記項目のいずれか一項に記載のシステム。
(項目16)
前記組み込みマルチメディアコントローラメモリコントローラが、前記秘密鍵を含む別のハードウェアセキュリティモジュールをさらに備える、上記項目のいずれか一項に記載のシステム。
(項目17)
前記ストレージデバイスが、モノのインターネットのデバイスに、組み込みマルチメディアコントローラをさらに備える、上記項目のいずれか一項に記載のシステム。
(項目18)
ストレージデバイスから組み込みデバイスに転送されるファイルのバリデーションチェックの方法であり、
前記ストレージデバイス上のコントローラを用いて、転送される前記ファイルを読み込むステップと、
前記ストレージデバイスで、前記組み込みデバイス上に格納されている公開鍵を受信するステップと、
前記ファイルの転送前に、前記格納されている公開鍵を、前記ストレージデバイス上の前記コントローラ及び前記ストレージデバイス上でのみアクセスされる秘密鍵を用いて検証するステップと、
前記格納されている公開鍵が検証されると、前記ファイルを前記ストレージデバイスから前記組み込みデバイスに転送するステップとを含む、前記方法。
(項目19)
前記ストレージデバイスが外部大容量ストレージデバイスであり、前記外部大容量ストレージデバイス上の前記秘密鍵が、前記外部大容量ストレージデバイスに焼き付けられる、前記外部大容量ストレージデバイスのワンタイムプログラマブル領域の中にプログラム化される、または、前記外部大容量ストレージデバイス上の別のハードウェアセキュリティモジュールに包含される、上記項目のいずれか一項に記載の方法。
(項目20)
前記ストレージデバイスが組み込みマルチメディアコントローラメモリであり、前記組み込みマルチメディアコントローラメモリ上の前記秘密鍵が、前記組み込みマルチメディアコントローラメモリコントローラに焼き付けられる、前記組み込みマルチメディアコントローラメモリコントローラのワンタイムプログラマブル領域の中にプログラム化される、または、前記組み込みマルチメディアコントローラメモリコントローラ上の別のハードウェアセキュリティモジュールに包含される、上記項目のいずれか一項に記載の方法。
(項目21)
組み込みシステムに適用されるファイルのバリデーションチェックの方法であって、
前記組み込みシステム上のeMMCメモリコントローラを用いて、適用される前記ファイルを読み込むステップと、
前記eMMCメモリコントローラで、前記組み込みシステム上に格納されている公開鍵を受信するステップと、
前記ファイルの適用前に、前記eMMCメモリコントローラ、及び前記eMMCメモリコントローラ上でのみアクセスされる秘密鍵を用いて、前記格納されている公開鍵を検証するステップと、
前記格納されている公開鍵が検証されると、前記ファイルを前記eMMCメモリコントローラから前記組み込みシステムに転送するステップとを含む、前記方法。
(項目22)
前記eMMCメモリコントローラ上の前記秘密鍵が、前記eMMCメモリコントローラ上に焼き付けられる、前記eMMCメモリコントローラのワンタイムプログラマブル領域の中にプログラム化される、または、前記eMMCメモリコントローラの別のハードウェアセキュリティモジュール上に包含される、上記項目のいずれか一項に記載の方法。
(項目23)
前記組み込みシステムが、モノのインターネットのデバイスの一部である、上記項目のいずれか一項に記載の方法。
(摘要)
ストレージデバイスから組み込みデバイスに転送されるファイルのバリデーションチェックの方法であって、ストレージデバイス上のコントローラを用いて、転送されるファイルを読み込むことと、ストレージデバイスで組み込みデバイスから格納されている公開鍵を受信することと、ファイルの転送前に、コントローラ及びストレージデバイス上の秘密鍵を用いて、格納されている公開鍵を検証することと、格納されている公開鍵が検証されると、ストレージデバイスから組み込みデバイスにファイルを転送することとを含む方法が提供される。コントローラを有するストレージデバイスは、外部大容量ストレージデバイスであってもよくまたはeMMCメモリコントローラであってもよい。
【図面の簡単な説明】
【0006】
【
図1】車両上のインフォテインメントユニットとして示されるコンピューティングシステムと大容量ストレージデバイスを受けるUSBポートとを含むアップデートシナリオのブロック図である。
【
図2】大容量ストレージデバイスと通信する少なくとも1つの組み込みデバイスを有するコンピューティングシステムのブロック図である。
【
図3】大容量ストレージデバイスを用いてファームウェアをアップデートする方法のフローチャートである。
【0007】
図における要素及びステップは、簡潔性及び明瞭性のために例示されるものであり、任意の特定の順序にしたがっているとして必ずしも表されていない。例えば、同時にまたは異なる順序で行われ得るステップが、発明の主題の実施形態の理解の向上を助けるために図に例示される。
【発明を実施するための形態】
【0008】
発明の主題の様々な態様が特定の例示的な実施形態を参照して記載されるが、発明の主題はそうした実施形態に限定されておらず、さらなる修正、適用及び実施形態が発明の主題から逸脱することなく実装され得る。図において、同様の参照番号は、同じ構成要素を示すのに用いられる。当業者は、本明細書中に記載された様々な構成要素は発明の主題の範囲と異なることなく変更され得ることを認識するであろう。
【0009】
図1は、ナビゲーションデバイス、マルチメディアデバイス、インフォテインメントユニット、パーソナルコンピュータ、タブレット、スマートフォン、または消費者電子デバイスで用いられる他のコンピューティングシステムといったコンピューティングシステム102を含むアップデートシナリオ100のブロック図である。
図1に示すコンピューティングシステム102は、車両用インフォテインメントユニットであり、単に例示目的で示されている。コンピューティングシステム102に対する、USBポート104といった、大容量ストレージデバイス(
図1に示さず)をコンピューティングシステム102に接続する手段104も
図1に示される。USBポートが示されるが、やはりこれも単に例示目的である。コンピューティングデバイスと大容量ストレージデバイスを接続するバスを提供する他の例として、以下に限定するものではないが、SATA、Wi-Fi、lightning、Ethernet(登録商標)、UFS、5Gなども含まれる。コンピューティングシステム102は、専用オペレーティングシステム、複数のソフトウェアプログラム、及び/または、グラフィックス、音声、ワイヤレスネットワーキング、イネーブリングアプリケーション、車両構成要素の統合ハードウェア、システム、ならびにスマートフォン、タブレット及びナビゲーションシステムなどが例として挙げられる外部デバイスといったインターフェース用プラットフォームを用いて動作し得る1つまたは複数の組み込みデバイス(図示せず)を有する。組み込みデバイスにおけるファームウェアに対するアップデートは、最適なパフォーマンスを確保するためにほとんどの場合必要である。
【0010】
ここで
図2を参照すると、
図1に示すコンピューティングシステムの組み込みデバイス202及びストレージデバイス208のブロック
図200が示される。ストレージデバイス208は、通信バス210を通じてコンピューティングシステム102に接続するためのUSBポートによって受けられ得る。
図2に示す例では、ストレージデバイスは、USBドライブなどの外部大容量ストレージデバイスである。しかしながら、ストレージデバイスは、ホストに対して内部的なストレージデバイス、例えば、組み込みマルチメディアカード(eMMC)、またはSSDカードなどの他のソリッドステートストレージデバイスであり得る可能性がある。
【0011】
組み込みデバイス202の任意の1つまたは複数は、種々のプログラミング言語及び/または技術を用いて作成されたコンピュータプログラムからコンパイルまたは解釈され得るコンピュータ実行可能命令を含むコンピューティングデバイスなどの処理ユニット206を含む。一般に、プロセッサ(マイクロプロセッサなど)は、例えばメモリ212、コンピュータ可読媒体などから命令を受信し、命令を実行する。処理ユニット206は、ソフトウェアプログラムの命令を実行可能な非一時的なコンピュータ可読ストレージ媒体を含む。コンピュータ可読ストレージ媒体は、以下に限定されるものではないが、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイスまたはそれらの任意の適切な組み合わせであってもよい。コンピューティングシステム及びその組み込みシステムの任意の1つまたは複数はファームウェアに依存し、このファームウェアは、オペレーティングシステムとの互換性、改良及びさらなる機能性、セキュリティのアップデートなどを確保するために時々のアップデートを必要とし得る。組み込みデバイス202は、検証目的で、1つまたは複数の公開鍵220を保持する。
【0012】
ストレージデバイス208は、ファームウェアのアップデートを格納し、ファームウェアのアップデートがコンピューティングシステム102及び/または組み込みデバイス202に通信されるべきときにアクセスされる。ストレージデバイス208は、メモリチップ214及びコントローラ216を含む。ストレージデバイスのコントローラ216は、種々のプログラミング言語及び/または技術を用いて作成されたコンピュータプログラムからコンパイルまたは解釈され得るコンピュータ実行可能命令を含むプロセッサを有する。一般に、プロセッサ(マイクロプロセッサなど)は、例えばメモリ、コンピュータ可読媒体などから命令を受信し、命令を実行する。プロセッサは、ROM及びRAMを含む、ソフトウェアプログラムの命令を実行可能な非一時なコンピュータ可読ストレージ媒体を含む。ストレージデバイス208は、組み込みシステム上のファームウェアに対するアップデートを送信するために組み込みシステムへの接続を容易にするコネクタ、例えばUSBコネクタを含む。
【0013】
ストレージデバイス208は、製造業者の秘密鍵218を保持する。秘密鍵218は、ストレージデバイス208のシリコン内に物理的に組み込まれる、焼き付けられる、または焼かれる。例えば、秘密鍵が組立ての際に焼かれ/プログラム化され決して修正することはできない、集積回路またはSoCの内部のワンタイムプログラマブル(OTP)領域を用いる。代替として、ストレージデバイス上の、製造業者の秘密鍵を含む別のハードウェアセキュリティモジュール(HSM)が用いられ得、読み込みバイトは、署名を生成するために、ストレージデバイス上のメモリからストレージデバイス上のHSMに渡され得る。製造業者の秘密鍵218は、ストレージデバイス208でのみアクセスされ得る。製造業者の秘密鍵218は、例えばホストにまたはホストのリクエストで、読み出されることまたは送信されることはできない。秘密鍵218は、ストレージデバイスのコントローラ216によってのみアクセスされて、ファイルまたはメモリ領域のチェックサム及び公開鍵/証明書を用いて組み込みデバイスによって検証される署名済みチェックサムを生成する。
【0014】
図3は、ストレージデバイスを用いて組み込みデバイス上のファームウェアに対してユーザによって開始されたアップデートを行う方法300のフローチャートである。ストレージデバイスは、組み込みデバイス上のファームウェアに対するアップデートを含む。組み込みデバイスは、
図3を参照して「ホスト」と称される。アップデートは、ユーザによって開始される302。例えば、ユーザは、ストレージデバイスを、USBポートなどの外部的に利用可能なバスを通して組み込みデバイスに接続することによってアップデートを開始し得る。デバイスの列挙とも称される、USBデバイスに対するドライバの検出、識別及びロードのプロセスが、ストレージデバイスとホストの間で行われる。ホストは、ストレージデバイス上の利用可能なアップデートのクエリを行って304、検出する306。ホストは、ストレージデバイスからの信頼できるチェックサムをリクエストする308。
【0015】
続く数ステップは、ストレージデバイス上で実行される。通常ストレージデバイスから組み込みデバイスに対するファームウェアのアップデートを行うとき、アップデートにかかる時間の最大50%は、ハッシュ及び署名をチェックすることによってアップデートの信頼性及び整合性を検証するのに費やされる。この読込みのすべてが、ストレージデバイスの制限された実効転送速度により、アップデートに対してボトルネックを生じさせる。ストレージデバイスの転送速度は通常30MB/秒である。しかしながら、ストレージデバイス上のeMMCチップは、270MB/秒といった大幅に速い転送速度が可能であるチップを含む。したがって、ストレージデバイスのコントローラ上で読み込み、ハッシング及びチェックサムの署名を行うことによって、大幅に速いアップデートが実現され得る。結果として、アップデートにかかる時間の大きな部分、40%程度が解消され得る。ストレージデバイスは、パーティションのチェックサムを生成し310、組み込まれている製造業者の秘密鍵を用いてチェックサムに署名する312。組み込みデバイスは組み込みデバイス上に製造業者からの信頼できる公開鍵を有し(
図2、202を参照)、ストレージデバイスは、組み込みデバイスの製造業者に関連する秘密鍵を有するので、ストレージデバイスによって生成されたハッシュが認証済みのまたは既知のソースからのものであると自動的に検証され、ソース(すなわち大容量ストレージデバイス)を信頼することができる。
【0016】
ストレージデバイスは、ホストに、署名済みチェックサムを戻す314。ホストは、チェックサムを読み込み316、署名済みチェックサムを、ホストに既に格納されている製造業者の公開鍵に対して検証する318。検証が成功すると、次いで、ファームウェアのアップデートがホスト上にコピーされる320。
【0017】
発明の主題は、チェックをストレージデバイスのコントローラ(
図2の216を参照)上で行うことによって、加速及び認証チェックを可能にする。秘密鍵はストレージデバイス上に焼き付けられているので、ハッシュへの署名はストレージデバイス上で行われ、結果のみがホストすなわち組み込みデバイスに転送される。また、ストレージデバイス上で読み込みを行うことによって、チェックは、より遅い外部インターフェースを通して組み込みデバイス上にデータをコピーする場合よりも大幅に速くなる。
【0018】
本明細書中の記載はストレージデバイスを対象とするが、ハッシング及び署名は内部組み込みマルチメディアカード(eMMC)にも適用され得る。eMMCは通常ホスト上にあるが、秘密鍵はeMMCでアクセスされ、秘密鍵を読み出すことまたは送信することは同じくできない。ハッシングは加速され、セキュアブートに対するさらなるセキュリティが提供される。また、処理及びハッシュ計算がホストからオフロードされ得る。さらに、発明の主題は、ダウンロードされたファームウェアのアップデートに加え内部ストレージ上のファイルの整合性をチェックするのに用いられ得る。例えば、ファームウェア無線配信(FOTA)のアップデート、または、Google PlayあるいはAppleのApplestoreなどのソースからのアプリケーションは、eMMCにインストールされる前に、それらが整合し認証済みであることを確かなものとするために検証され得る。家庭電気製品または任意の組み込みシステムといったモノのインターネット(IoT)のデバイスにおいて、内部eMMCメモリコントローラは利用され得る。内部ハッシング速度はより速く、より安全となろう。
【0019】
前述の明細書において、発明の主題は、具体的な例示的な実施形態を参照して記載されてきた。様々な修正及び変更が、特許請求の範囲に記載された発明の主題の範囲から逸脱せずにではあるが、なされ得る。明細書及び図は限定的というより例示的であり、修正は発明の主題の範囲内に含まれることが意図される。したがって、発明の主題の範囲は、単に記載された例によってではなく、特許請求の範囲及びそれらの法的均等物によって決定付けられるべきである。
【0020】
例えば、任意の方法またはプロセスクレームに列挙されたステップは、任意の順序で実行され得、特許請求の範囲に提示された特定の順序に限定されるものではない。さらに、任意の装置クレームに列挙された構成要素及び/または要素は組み合わされ得、または、様々な順列で動作可能に構成され得、したがって特許請求の範囲に列挙された具体的な構成に限定されるものではない。
【0021】
利益、他の利点及び問題に対する解決策が特定の実施形態に関して上述されてきたが、いずれの利益、利点、問題に対する解決策も、または、任意の特定の利益、利点あるいは解決策を生じさせ得るあるいはより明白にし得るいずれの要素も、特許請求の範囲の一部または全部の重要な、必須のまたは不可欠な特徴または構成要素として解釈されない。
【0022】
用語「comprise(含む)」、「comprises(含む)」、「comprising(含む)」、「having(含む)」、「including(含む)」、「includes(含む)」またはその任意の変形は、要素のリストを備えるプロセス、方法、物品、構成または装置が列挙された要素のみを含むものではなく、明確にリスト化されていないまたはそうしたプロセス、方法、物品、構成あるいは装置に固有の他の要素も含み得るような、非排他的な包含を指すことが意図される。発明の主題を実施する際に用いられる上述した構造、構成、用途、割合、要素、材料または構成要素の他の組み合わせ及び/または修正、加えて具体的に列挙されていないものは、その一般原則から逸脱せずに、変更され得、または、具体的な環境、製造仕様、設計パラメータあるいは他の動作要件に特に適合され得る。