(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-06-16
(54)【発明の名称】ソフトウェア更新のための認証キーの制御範囲
(51)【国際特許分類】
G06F 8/65 20180101AFI20230609BHJP
H04L 9/32 20060101ALI20230609BHJP
【FI】
G06F8/65
H04L9/32 200B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022569070
(86)(22)【出願日】2021-05-13
(85)【翻訳文提出日】2023-01-10
(86)【国際出願番号】 US2021032175
(87)【国際公開番号】W WO2021231686
(87)【国際公開日】2021-11-18
(32)【優先日】2020-05-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】バラク チェルチェス
(72)【発明者】
【氏名】エリック シエリー ジーン ペーターズ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA48
(57)【要約】
クライアントデバイスを更新するための手法が提供され、この手法は、ソフトウェア更新(204)とソフトウェア更新(204)に関連する証明書(206)とをクライアントデバイスによって受け取ることと、クライアントデバイス(230)の格納された公開鍵に基づいて、ソフトウェア更新(204)に関連する証明書(206)をクライアントデバイスによって検証することと、証明書から更新範囲値(216~224)を抽出することと、更新範囲値(216~224)を更新の対応する属性と比較することと、比較に基づいてソフトウェア更新を適用するか又は比較に基づいてソフトウェア更新を拒否するかのいずれかを行うこととを含む。
【特許請求の範囲】
【請求項1】
クライアントデバイスを更新するための方法であって、
ソフトウェア更新と前記ソフトウェア更新に関連する証明書とをクライアントデバイスによって受け取ることと、
前記クライアントデバイスの格納された公開鍵に基づいて、前記ソフトウェア更新に関連する前記証明書を前記クライアントデバイスによって検証することと、
前記証明書から更新範囲値を抽出することと、
更新範囲値を前記更新の対応する属性と比較することと、
を含み、さらに、
前記比較に基づいて前記ソフトウェア更新を適用すること、又は前記比較に基づいて前記ソフトウェア更新を拒否することとの一方、
を含む、方法。
【請求項2】
請求項1に記載の方法であって、
前記更新範囲値が証明書更新シーケンス番号を含み、
前記対応する属性が、前記クライアントデバイスのシーケンス番号を含む、方法。
【請求項3】
請求項2に記載の方法であって、前記比較することが、前記証明書更新シーケンス番号が前記シーケンス番号よりも大きいことを検証することを含み、
この方法がさらに、前記クライアントデバイスの前記シーケンス番号を前記証明書更新シーケンス番号で置換することを含む、方法。
【請求項4】
請求項1に記載の方法であって、
前記更新範囲値がバージョン番号を含み、
前記対応する属性が前記ソフトウェア更新のバージョン番号を含み、
前記比較することが、前記バージョン番号が前記ソフトウェア更新の前記バージョン番号と一致することを検証することを含む、
方法。
【請求項5】
請求項1に記載の方法であって、
前記更新範囲値がバージョン番号の範囲を含み、
前記対応する属性が前記ソフトウェア更新のバージョン番号を含み、
前記比較することが、前記ソフトウェア更新の前記バージョン番号がバージョン番号の前記範囲内であることを検証することを含む、
方法。
【請求項6】
請求項1に記載の方法であって、前記更新範囲値が、前記証明書のデジタル署名によって保護される、方法。
【請求項7】
請求項1に記載の方法であって、前記クライアントデバイスの前記格納された公開鍵が、前記クライアントデバイスの製造業者の公開鍵を含む、方法。
【請求項8】
非一時的プログラムストレージデバイスであって、前記非一時的プログラムストレージデバイスが、前記非一時的プログラムストレージデバイスに格納された命令を含み、前記命令が、1つ又は複数のプロセッサに、
ソフトウェア更新のための属性を定義する更新範囲値を生成させ、
更新範囲値を保護するデジタル署名を生成させ、
前記デジタル署名と前記更新範囲値とを含む証明書を生成させ、
前記証明書及び前記更新範囲値をクライアントデバイスへ送信させる、
ためのものであり、
前記更新範囲値が、前記クライアントデバイスが前記更新範囲値を前記更新の対応する属性と比較することを可能にするように構成される、
非一時的プログラムストレージデバイス。
【請求項9】
請求項8に記載の非一時的プログラムストレージデバイスであって、前記更新範囲値が証明書更新シーケンス番号を含み、前記対応する属性が、前記クライアントデバイスのシーケンス番号を含む、非一時的プログラムストレージデバイス。
【請求項10】
請求項8に記載の非一時的プログラムストレージデバイスであって、
前記更新範囲値が証明書更新バージョン番号を含み、前記対応する属性が前記ソフトウェア更新のバージョン番号を含み、
前記命令がさらに、前記1つ又は複数のプロセッサに、前記バージョン番号が前記ソフトウェア更新の前記バージョン番号と一致することを検証させる、
非一時的プログラムストレージデバイス。
【請求項11】
請求項8に記載の非一時的プログラムストレージデバイスであって、前記更新範囲値がバージョン番号の範囲を含み、前記対応する属性が前記ソフトウェア更新のバージョン番号を含み、前記比較することが、前記ソフトウェア更新の前記バージョン番号がバージョン番号の前記範囲内であることを検証することを含む、非一時的プログラムストレージデバイス。
【請求項12】
請求項8に記載の非一時的プログラムストレージデバイスであって、前記更新範囲値が、前記証明書のデジタル署名によって保護される、非一時的プログラムストレージデバイス。
【請求項13】
請求項8に記載の非一時的プログラムストレージデバイスであって、前記ソフトウェア更新がファームウェア更新を含む、非一時的プログラムストレージデバイス。
【請求項14】
デバイスであって、
メモリと、
前記メモリに動作可能に結合される1つ又は複数のプロセッサと、
を含み、前記1つ又は複数のプロセッサが、非一時的命令を実行するように構成され、前記非一時的命令が、前記1つ又は複数のプロセッサに、
ソフトウェア更新と前記ソフトウェア更新に関連する証明書とを前記デバイスによって受け取らせることと、
前記デバイスの格納された公開鍵に基づいて前記ソフトウェア更新に関連する前記証明書を前記デバイスによって検証させることと、
前記証明書から更新範囲値のセットを抽出させることと、
前記更新範囲値を前記更新の対応する属性と比較させることと、
前記比較に基づいて前記ソフトウェア更新を適用させるか、又は、前記比較に基づいて前記ソフトウェア更新を拒否させることと、
デバイス。
【請求項15】
請求項14に記載のデバイスであって、前記更新範囲値が証明書更新シーケンス番号を含み、前記対応する属性が、前記デバイスのシーケンス番号を含む、デバイス。
【請求項16】
請求項15に記載のデバイスであって、前記比較することが、前記証明書更新シーケンス番号が前記シーケンス番号よりも大きいことを検証することを含み、
前記デバイスに格納された前記命令がさらに、前記1つ又は複数のプロセッサに、前記デバイスの前記シーケンス番号を前記証明書更新シーケンス番号で置換させる、
デバイス。
【請求項17】
請求項14に記載のデバイスであって、前記更新範囲値がバージョン番号を含み、前記対応する属性が前記ソフトウェア更新のバージョン番号を含み、前記比較することが、前記バージョン番号が前記ソフトウェア更新の前記バージョン番号と一致することを検証することを含む、デバイス。
【請求項18】
請求項14に記載のデバイスであって、前記更新範囲値がバージョン番号の範囲を含み、前記対応する属性が前記ソフトウェアのバージョン番号を含み、前記比較することが、前記ソフトウェアの前記バージョン番号がバージョン番号の前記範囲内であることを検証することを含む、デバイス。
【請求項19】
請求項14に記載のデバイスであって、前記更新範囲値が、前記証明書のデジタル署名によって保護される、デバイス。
【請求項20】
請求項14に記載のデバイスであって、前記クライアントデバイスの前記格納された公開鍵が、前記デバイスの製造者の公開鍵を含む、デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
一般に、本明細書では接続デバイス(connected device)と呼ばれる、インターネットに接続することができるデバイスは、出荷済ソフトウェアバージョンがデバイスに事前にインストールされた状態で、ユーザによって入手される。多くの場合、出荷済ソフトウェアがリリースされた後、出荷済ソフトウェアに対するソフトウェア更新として、種々の機能を強化又は付加するための付加的な変更、バグの修正、セキュリティの問題への対処などが成され得る。ソフトウェアの更新により、接続デバイス上で実行されるソフトウェアが、リリース時に固定されたままではなく環境と共に進化することを可能にすることによって、接続デバイスが、絶えず変化する環境に適応することが可能になる。
【0002】
多くの場合、接続デバイス更新プロセスには、ソフトウェア更新パッケージに関連するデジタル署名及び証明書を検証することなどによって、ソフトウェア更新パッケージをダウンロードするか又はその他の方式で取得すること、及び、ソフトウェア更新パッケージを認証することが含まれる。このデジタル署名又は証明書は、接続デバイスベンダの公開鍵を用いて検証される。しかしながら、これらの公開鍵及び証明書は無制限の範囲を有することがあり、比較的複雑な取消メカニズムを用いて証明書が取消されない限り、動作可能であることがある。場合によっては、ソフトウェア更新を適用するために必要とされるメモリ、ネットワークリソース、及び処理能力の量を最小限に抑えるのに役立つように、取消プロセスに関連する複雑さを低減又は除去することが望ましい。
【発明の概要】
【0003】
本記載は、ソフトウェアの更新に関する。より詳細には、限定は意図していないが、本記載の態様は、ソフトウェアを更新するための手法に関し、この手法は、ソフトウェア更新及び証明書をクライアントデバイスによって受け取ることと、クライアントデバイスの格納された公開鍵に基づいてソフトウェア更新に関連する証明書をクライアントデバイスによって検証することと、証明書から更新範囲値を抽出することと、更新範囲値を更新の対応する属性と比較することと、比較に基づいてソフトウェア更新を適用することか又は比較に基づいてソフトウェア更新を拒否するかのいずれかを行うこととによって成される。
【0004】
本記載の別の態様は、非一時的プログラムストレージデバイスに関し、非一時的プログラムストレージデバイスは、そのデバイスに格納された命令を含み、命令は、1つ又は複数のプロセッサに、ソフトウェア更新のための属性を定義する更新範囲値を生成させ、更新範囲値を保護するデジタル署名を生成させ、デジタル署名と更新範囲値とを含む証明書を生成させ、証明書及び更新範囲値をクライアントデバイスへ送信させ、更新範囲値は、クライアントデバイスが更新範囲値を更新の対応する属性と比較することを可能にするように構成される。
【0005】
本記載の別の態様は、メモリと、メモリに動作可能に結合された1つ又は複数のプロセッサとを含むデバイスに関し、1つ又は複数のプロセッサは非一時的命令を実行するように構成され、非一時的命令は、1つ又は複数のプロセッサに、ソフトウェア更新とソフトウェア更新に関連する証明書とをデバイスによって受信させ、デバイスの格納された公開鍵に基づいてソフトウェア更新に関連する証明書をデバイスによって検証させ、証明書から更新範囲値のセットを抽出させ、更新範囲値を更新の対応する属性と比較させ、比較に基づいてソフトウェア更新を適用させるか又は比較に基づいてソフトウェア更新を拒否させるかのいずれかをさせる。
【0006】
種々の例の詳細な説明のため、ここで、添付の図面を参照する。
【図面の簡単な説明】
【0007】
【
図1】デジタル証明書のチェーンを図示するブロック図である。
【0008】
【
図2】幾つかの例においてソフトウェア更新200を適用するための手法を図示するブロック図である。
【0009】
【
図3】幾つかの例においてソフトウェアを更新するための手法を図示する。
【0010】
【
図4】幾つかの例においてソフトウェアを更新するための手法を図示する。
【0011】
【
図5】幾つかの例における、コンピューティングシステムの実施例の概略図である。
【0012】
【
図6】幾つかの例における、接続デバイスの実施例のブロック図である。
【発明を実施するための形態】
【0013】
公開鍵暗号は、多くの場合、デジタル証明書及び署名と併せて用いられる。公開鍵暗号において、一対の鍵、公開鍵、及び秘密鍵は、一方向関数を用いて数学的に関連される。公開鍵及び秘密鍵は、公開鍵を用いて符号化されたメッセージが秘密鍵を用いてのみ復号され得、逆もまた同様であるように関連付けられる。そのため、デジタル文書(例えば、任意の種類のファイル)が、秘密鍵を用いてハッシュを符号化するデジタル文書のビットをハッシュし、次いで、符号化されたハッシュを公開鍵とともにデジタル文書に添付することによって、デジタル的に署名することができる。次いで、公開鍵を用いてハッシュを復号し、次いで、復号されたハッシュをデジタル文書のハッシュと比較することによって、検証を実施することができる。デジタル署名は、特定のソフトウェア更新が、接続デバイス又はシステムのベンダなどの信頼できるソースからのものであることを検証するために、用いられ得る。
【0014】
或る接続デバイスは、デジタル署名によって検証されるように、信頼できるソースからのソフトウェア更新のみをインストールする。多くの場合、接続デバイスは、接続デバイスのベンダに関連する公開鍵を含む。この公開鍵又は証明書は、接続デバイスを生成する一部として、接続デバイスにインストールされ得る。ソフトウェア更新が開発されるとき、ソフトウェアはベンダの秘密鍵を用いて署名され、署名はソフトウェア更新パッケージに添付される。接続デバイスがソフトウェア更新パッケージを受け取った後、接続デバイスは、例えば、接続デバイスの製造中に、接続デバイス上に事前に格納された公開鍵又は証明書を用いてデジタル署名を検証することによって、ソフトウェア更新を検証する。ソフトウェア更新の公開鍵又は証明書がデバイスによって検証されると、ソフトウェア更新は信頼され、適用され得る。
【0015】
図1は、デジタル証明書のチェーン100を図示するブロック図である。或る場合において、接続デバイスのベンダが、そのベンダに関連する接続デバイスのためのルート証明書認証局としての役割を果たし得る。ルート証明書102は、ルート証明書認証局の名前、識別子、証明書の有効日などの、ルートメタデータ104を含む。ルート証明書102の公開鍵は、ルート証明書認証局の秘密鍵に関連付けられる。ルート証明書102はまた、ルート公開鍵106及びルート署名108を含む。ルート署名108は、ルート証明書102が自己署名されるので、ルート証明書認証局の秘密鍵を用いて、ルートメタデータ及びルート公開鍵106に基づいて計算され得る。ベンダがルート証明書認証局である場合、ルート公開鍵106は、信頼公開鍵のルート(ROTPK:root of trust public key)として機能する。
【0016】
ベンダがルート証明書認証局である場合、そのベンダは、ルート証明書のセキュリティを維持するのを助けるために証明書を直接発行するルート証明書102を使用することを望まないことがある。そのような場合、ベンダは、ルート証明書102に基づいて1つ又は複数の中間証明書110を作成することができる。ここで、中間証明書110は中間メタデータ112を含み、これは、中間証明書110が誰のためのものであるか、又はどの目的のためのものであるかなど、中間認証局を識別するメタデータを含み得る。例えば、中間メタデータ112は、中間証明書110がファームウェア更新に署名するためのファームウェア認証キー(FWAK)であり、特定の人又はチームに発行されることを示し得る。ファームウェアは、接続デバイスのハードウェアを制御する低レベルソフトウェアを指し得る。ファームウェアという用語が用いられる場合、本明細書で説明する概念は一般に、ソフトウェア及びデバイスにより広く適用することもできる。中間メタデータ112は、例えば、ルート公開鍵106、又はルート証明書認証局の名称を含むことにより、ルート証明書認証局も識別し得る。中間メタデータ112は、中間署名114を作成するためにルート証明書認証局の秘密鍵を用いてハッシュされ署名され得る。中間証明書は、中間認証局の秘密鍵に基づく中間公開鍵116も含む。
【0017】
或る場合において、ベンダがルート証明書認証局として機能しなくてもよく、ルート証明書102は、商業証明書認証局などの証明書認証局によって保持される。そのような場合、ベンダは、証明書認証局に第1の中間証明書110を要求し、取得することができる。次いで、ベンダは、第1の中間証明書110に基づいて、FWAKとして使用するための第2の中間証明書を生成することもできる。必要に応じて、付加的な中間証明書を生成することもできる。第2の中間証明書は、第1の中間公開鍵116及び/又は第1の中間証明書認証局の名前を含めることによって、中間証明書認証局、すなわち第1の中間証明書が発行された組織、を識別することができる。
【0018】
ファームウェア更新の開発及び/又はリリース部分の間、デジタル署名がファームウェア更新に適用され得る。このデジタル署名を作成するには、中間証明書110又はルート証明書102に関連する秘密鍵の使用が必要となり得る。場合によって、秘密鍵のセキュリティが従業員の交替又は不正行為などによって、潜在的に損なわれる可能性があり、秘密鍵を取り消し、また、その他の方式で置換する必要がある場合がある。しかしながら、これらの鍵の取消は接続デバイスでは困難であり得る。というのも、これらのデバイスがオフラインであり得るか又は取消情報で更新することが困難であり得るためである。
【0019】
図2は、幾つかの例においてソフトウェア更新200を適用するための手法を図示するブロック図である。或る場合において、更新パッケージ202が、更新証明書206とともに、接続デバイス230を更新するための更新コード204を含む。更新証明書206は、更新コード204とともに、
図1に関連して説明したような証明書のチェーンに基づくことができる。例えば、或る組織が中間証明書認証局として機能し、開発又は更新チームなどの下位組織、又は開発者などの個人にさえも、証明書を発行することができる。より詳細な例として、開発者が公開/秘密鍵ペアを生成し得、それらの公開鍵を中間証明書認証局に提出して証明書を要求することができる。その後、組織は、例えば、開発者の公開鍵、例えば、サブジェクト公開鍵212、及び組織のデジタル署名、例えば、発行者署名210を含む、その開発者に基づく証明書を発行し得る。発行者署名210は、サブジェクト公開鍵212及びサブジェクトメタデータのハッシュに少なくとも部分的に基づき得る。
【0020】
更新証明書206はまた、証明書シーケンス番号214、ファームウェアバージョン216、ターゲットファームウェア構成要素218、有効期間220、デバイスID222などの、範囲フィールドを含み得る。更新証明書206は、必要に応じて付加的な範囲フィールド224を含み得る。或る場合において、範囲フィールドが、メタデータとして、例えば、サブジェクトメタデータに含まれてもよい。例えば、発行者メタデータ208は、1つ又は複数の範囲フィールドを含み得る。範囲フィールドは、ファームウェア更新の範囲を定義し、ファームウェア更新の範囲を識別する付加情報を含む。範囲フィールドは、デジタル署名によって署名され保護される。例えば、範囲フィールドは、ハッシュされ発行者によって署名される証明書の一部に含まれ、範囲は更新証明書206に対して固定される。場合によっては、範囲フィールド内の値によって定義されるように、更新証明書ごとに異なる範囲が設定され得る。例えば、証明書は、FWの各ビルドに対して更新される証明書が有効である更新コード204の特定のバージョンを含み得る。或る場合において、範囲フィールドの値が更新コードのプロパティに基づいてもよく、サブジェクトによって提供されてもよく、又は発行者によって提供されてもよい。
【0021】
更新パッケージ202が接続デバイス230によって受け取られた後、ファームウェア更新202は、接続デバイス230のメモリに格納され得る。接続デバイス230の証明書検証モジュール236が、ファームウェア更新が信頼できるソースからのものであることを検証する。例えば、接続デバイス230は、現在のファームウェアバージョン234を有する現在のファームウェア232を含む。ファームウェア更新202が更新プロトコル250を介して受け取られた後、証明書検証モジュール236は、発行者の公開鍵212を用いて更新証明書206を検証し、発行者署名210を検証する。証明書検証モジュール236は、ファームウェア更新202から中間証明書226にアクセスして、中間証明書226からルート公開鍵を取得し得る。次いで、この取得されたルート公開鍵は、接続デバイス230の生産中にインストールされたベンダ証明書238からのROTPKに対して検証される。中間証明書226をROTPKに対して検証することは、接続デバイス230が発行者が信頼できるソースであることを検証することを可能にする。ファームウェア更新が信頼できるソースからのものである場合、更新証明書の範囲が検証され得る。
【0022】
証明書の範囲は、更新を適用するために満たされなければならない一連の条件を定義する。範囲フィールドによって定義されるファームウェア更新202の範囲は、ファームウェア更新202を受け取る接続デバイス230によって実施される。接続デバイス230の範囲検証モジュール240は、例えば、ファームウェア更新202の所有権、デバイスの所有権、更新がどのように適用されているかなどに基づいて、証明書によって定義される範囲を更新の条件に対して検証し得る。一例として、更新の範囲は、証明書に関連するシーケンス番号に基づき得る。この例では、シーケンス番号が一度だけ使用することができ、証明書は一意の増加する番号である証明書シーケンス番号214を用いて生成され得る。従って、新しい証明書が生成されるたびに、新しい証明書には、前の証明書に関連する証明書シーケンス番号よりも大きい異なる証明書シーケンス番号が提供される。接続デバイス230が更新を適用すると、接続デバイス230は、この例では、更新に関連するシーケンス番号を、現在のシーケンス番号242として格納する。次の更新が受け取られると、範囲検証モジュール240は、格納されたROTPKに対して証明書のデジタル署名を検証した後、更新証明書206から証明書シーケンス番号214を取得する。範囲検証モジュール240は、接続デバイス230の現在のシーケンス番号242を取得し、現在のシーケンス番号242をファームウェア更新の証明書シーケンス番号214と比較して、証明書シーケンス番号214が現在のシーケンス番号242と同じであることを検証する。証明書シーケンス番号214が現在のシーケンス番号242を超える場合、証明書及び関連する更新は、範囲内であり得る。所与の証明書シーケンス番号が複数回使用され得る場合、接続デバイス230は、特定のシーケンス番号が使用されるたびに増分され、制限に対して比較されるカウンタを含み得る。
【0023】
別の例として、更新の範囲は、ファームウェアバージョンに基づき得る。この例では、範囲検証モジュール240は、証明書のデジタル署名が格納されたROTPKに対して検証された後、証明書の範囲フィールドからバージョン範囲216を取得し得る。このバージョン範囲216は、場合によっては、証明書が有効であるバージョン、又はバージョンの範囲を指定する。範囲検証モジュール240はまた、更新されたコード204の更新バージョン、ならびに現在のファームウェアバージョン234を取得し得る。範囲検証モジュールは、更新バージョンが現在のファームウェアバージョンよりも大きいことを検証し、また、更新コード204の更新バージョンが、バージョン範囲216と一致するか、又はバージョン範囲216の範囲内であることを検証する。更新コード204の更新バージョンがバージョン範囲216に対して検証できない場合、更新コード204は拒否される。
【0024】
別の例として、更新の範囲は、接続デバイス230の構成要素に基づき得る。或る場合において、接続デバイス230のファームウェアは、例えば、接続デバイスの構成に基づいて、変化し得る。接続デバイスの特定のバージョンは、異なるサポートされるネットワーキングプロトコル、利用可能なセンサ、ロケーション固有の相違など、異なる特徴をサポートし得る。接続デバイスのこれらの異なるバージョンは、サポートされる機能に基づいて異なるファームウェア構成要素を有し得る。特定の現在のファームウェア構成要素234に関する情報は、現在のファームウェア232に含まれ得る。範囲検証モジュール240は、ファームウェア更新202の範囲をチェックする一部として、ターゲットファームウェア構成要素218範囲フィールド及び現在のファームウェア構成要素234にアクセスし得る。範囲検証モジュール240は、現在のファームウェア構成要素234を比較して、ターゲットファームウェア構成要素218が現在のファームウェア構成要素234と一致すると判定し得る。或る場合において、範囲検証モジュール240は、ターゲットファームウェア構成要素218が現在のファームウェア構成要素234のうちの少なくとも幾つかを含むことをチェックし得る。
【0025】
別の例として、更新の範囲は、デバイス識別子(ID)244に基づき得る。或る場合において、接続デバイス230は、接続デバイス230の生産中にインストールされ得るデバイスID224を含む。範囲検証モジュール240は、ファームウェア更新202からデバイスID222のリストにアクセスして、接続デバイス230のデバイスID244がデバイスID222のリストにあることを検証することができる。
【0026】
或る場合において、ファームウェア更新202の範囲は、付加的なプロパティによって定義されてもよく、例えば、付加的な範囲フィールド224に含まれてもよい。例えば、付加的な範囲フィールド224は、ファームウェア更新202が或る更新プロトコル250を介して受け取られた場合、接続デバイス230が範囲内であり得ることを示し得る。この更新プロトコルは、更新がどのように取得されたか、例えば、更新を取得するために用いられるネットワークプロトコル、又は、更新が例えばUSBを介してデバイスに直接コピーされたかどうかを定義し得る。更新プロトコルは、ファームウェア更新202とともに、識別されメモリ246に格納され得る。ファームウェア更新202の範囲を定義する他のプロパティも、例えば、付加的な範囲フィールド224に含まれてもよい。
【0027】
図3は、幾つかの例においてソフトウェア300を更新するための手法を図示する。工程302において、クライアントデバイスが、ソフトウェア更新と、ソフトウェア更新に関連する証明書とを受け取る。例えば、接続デバイスが、ファームウェア更新を受信し得る。ファームウェア更新は、証明書範囲フィールドのハッシュに基づくデジタル署名と共にデジタル証明書を含み得る。或る場合において、デジタル証明書は、ソフトウェア更新とは別に受信されてもよい。工程304において、クライアントデバイスは、クライアントデバイス上の格納された公開鍵に基づいて、ソフトウェア更新に関連する証明書を検証する。例えば、証明書は中間機関の公開鍵を含み得、この証明書は署名を抽出するために使用することができ、この署名は、接続デバイス上に格納された製造業者の公開鍵によって復号されてそのソフトウェア更新が製造業者から発信されたことを検証し得る。この公開鍵は、例えば、デバイスが製造されたときに、デバイス上に格納され得る。工程306において、更新範囲値が証明書から抽出される。例えば、1つ又は複数の範囲フィールドが、更新証明書とともに含まれ得る。これらの範囲フィールドは、ファームウェア更新の範囲を定義する。範囲フィールドの例には、証明書シーケンス番号、ソフトウェアバージョン番号又は範囲、及び更新プロトコルが含まれる。工程308において、更新範囲値は、更新の対応する属性と比較される。更新の属性は、例えば、クライアントデバイスのプロパティ、更新を取得するために用いられるプロトコル又は手法などの環境値、更新に関連するメタデータ、証明書と更新との間の関係などを含み得る。例えば、更新シーケンス番号は、接続デバイス上に既にあるソフトウェアに関連する現在のシーケンス番号と比較されて、更新シーケンス番号がより大きいことを検証し得る。他の例には、アップグレードバージョン番号が範囲フィールド内のバージョン番号と等しいか又はその範囲内であることを検証することが含まれる。工程310において、ソフトウェア更新は比較に基づいて適用されるか、又はソフトウェア更新は比較に基づいて拒否される。例えば、比較が成功した場合、ソフトウェア更新が適用され得る。別の例における、ソフトウェア更新バージョンが証明書で定義されたバージョンの範囲外である場合など、比較が失敗した場合にソフトウェア更新が拒否される。
【0028】
図4は、幾つかの例においてソフトウェア400を更新するための手法を図示する。工程402において、更新範囲値が生成され、更新範囲値は、更新のための属性を定義する。上述のように、更新の属性は、例えば、クライアントデバイスのプロパティ、更新を取得するために用いられるプロトコル又は手法などの環境値、更新に関連するメタデータ、証明書と更新との間の関係などを含み得る。場合によって、複数の属性が含まれ得る。404において、更新範囲値を保護するデジタル署名が生成され得る。例えば、範囲値は、デジタル証明書の1つ又は複数のフィールドに含まれ得る。デジタル署名は、範囲値を含む、デジタル証明書のフィールドに基づいて生成され得る。次いで、デジタル署名は、範囲値を保護する。或る場合において、デジタル署名は証明書の発行者のデジタル署名であってもよい。工程406において、デジタル署名及び更新範囲値を含む証明書が生成される。工程408において、ソフトウェア更新及び更新範囲値が接続デバイスに送信され、更新範囲値は、クライアントデバイスが更新範囲値を更新の対応する属性と比較することを可能にするように構成される。
【0029】
図5は、本記載の実施例が機能し得るコンピューティングシステム500の実施例の概略図である。コンピューティングシステム500は、接続デバイス502A-502C(総称して502)、更新サーバ504、及びインターネット等のネットワーク506を含み得る。幾つかの実施例において、更新サーバ504は、単一のサーバではなく、統一資源位置指定子(URL)などの単一のネットワークアドレスを介してアクセス可能な1つ又は複数のサーバであってもよい。場合によっては、更新サーバ504は、代替ダウンロードソースのリストであってもよく、第三者のサーバを含んでもよい。URLは、ソフトウェア更新を販売する機関によって利用されてもよい。
図5には具体的に示されていないが、更新サーバ504は1つ又は複数のデータセンタを含むこともできる。データセンタは複数のサーバインスタンスを含み得、各サーバインスタンスは、単一の電子コンピューティングデバイス(例えば、単一の物理ハードウェアサーバ)などの物理コンピューティングシステム上で実装され得、又はマルチコンピューティングデバイス(例えば、複数の物理ハードウェアサーバ)の形態としてもよい。サーバインスタンスは、1つ又は複数のネットワークデバイス(例えば、ゲートウェイ又はルータ)、又はデバイスの組合せを介して接続されて、ネットワークトラフィックを適切なサーバにルーティング又は方向付けることができる。或る場合において、サーバがローカルエリアネットワーク(LAN)内に配置されてもよい。
【0030】
接続デバイス502は、IoTデバイス、スマートフォン、タブレットなどのモバイルデバイス、パーソナルコンピュータ、ウェアラブルデバイスなどを含み得るが、これらに限定されない。接続デバイス502A及び502Bのような或る接続デバイス502は、ネットワーク506を介して更新サーバ504と接続され通信し得る。或る接続デバイス502Cは、1つ又は複数の他の接続デバイス502Dに結合され、1つ又は複数の他の接続デバイス502D及びネットワーク506を介して更新を取得することができる。ネットワーク506は、LAN、ワイドエリアネットワーク(WAN)、インターネット、及び/又は他のリモートネットワークなど、今日利用可能な1つ又は複数のコンピューティングネットワークを含み得る。ネットワーク506は、電気的及び/又は光学的ドメインで動作する有線及び/又はワイヤレスのプログラマブルデバイスを含み得る。例えば、ネットワーク506は、イーサネット、USB(ユニバーサルシリアルバス)、光ファイバー接続などの有線ネットワーク、セルラーネットワーク(例えば、GSM(Global System for Mobile Communications)ベースのセルラーネットワーク)、ワイヤレスフィディリティ(WiFi(登録商標)(WIFIはワイ-ファイ アライアンス法人によって所有される登録商標である)ネットワークなどのワイヤレスネットワーク、及び/又は、本明細書を読めば当業者に理解されるような他の好適な無線ベースのネットワークを含み得る。ネットワーク506はまた、TCP(送信制御プロトコル)及びIP(インターネットプロトコル)など、任意の数のネットワーク通信プロトコルを採用し得る。
図5には明示的に示されていないが、ネットワーク506は、サーバ、ルータ、ネットワークスイッチ、及び/又は、ネットワークを介してデータを転送するように構成された他のネットワークハードウェアデバイスなど、様々なネットワークデバイスを含み得る。場合によっては、更新サーバ504は、接続デバイス502に直接接続され得る。例えば、更新サーバ504は、ダイレクトシリアルインタフェース、短距離無線周波数接続、パラレルケーブルなどを介して接続され得る。
【0031】
図6に図示されるように、接続デバイス600は、1つ又は複数のハードウェアプロセッサを含むプロセッサ605などの処理要素を含み、各ハードウェアプロセッサが、単一の又は多数のプロセッサコアを有し得る。プロセッサの例は、中央処理装置(CPU)又はマイクロプロセッサを含むが、これらに限定されない。
図6には示されていないが、プロセッサ605の処理要素はまた、グラフィックスプロセッシングユニット(GPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、及び/又はデジタルシグナルプロセッサ(DSP)など、1つ又は複数の他のタイプのハードウェア処理構成要素を含み得る。
【0032】
図6は、メモリ610がプロセッサ605に動作可能かつ通信可能に結合され得ることを図示する。メモリ610は、様々なタイプのデータを格納するように構成された非一時的コンピュータ可読記憶媒体であり得る。例えば、メモリ610は、ランダムアクセスメモリ(RAM)などの1つ又は複数の揮発性装置を含み得る。不揮発性ストレージデバイス620は、1つ又は複数のディスクドライブ、光学ドライブ、ソリッドステートドライブ(SSD)、テープドライブ、フラッシュメモリ、電気的プログラマブル読み出し専用メモリ(EEPROM)、及び/又は、電力損失又はシャットダウン動作後の時間期間にわたってデータを維持するように設計された任意の他のタイプのメモリを含み得る。不揮発性ストレージデバイス620はまた、そのようなプログラムが実行されるときにRAMにロードされるプログラムを格納するために用いられ得る。
【0033】
当業者は、ソフトウェアプログラムが、様々なソフトウェアプラットフォーム及び/又は、オペレーティングシステムのための様々なコンピューティング言語で開発、符号化、及びコンパイルされ、その後、プロセッサ605によってロードされ、実行され得ることを認識している。一実施例において、ソフトウェアプログラムのコンパイルプロセスは、プロセッサ605がプログラミングコードを実行できるように、プログラミング言語で書かれたプログラムコードを別のコンピュータ言語に変換することができる。例えば、ソフトウェアプログラムのコンパイルプロセスは、プロセッサ605が、特定の非汎用の特定のコンピューティング機能を達成できるように、符号化された命令(例えば、機械コード命令)を提供する実行可能プログラムを生成し得る。
【0034】
コンパイル処理の後、符号化された命令は、コンピュータ実行可能命令又は処理工程として、ストレージ620から、メモリ610からプロセッサ605にロードされ得、及び/又は(例えば、キャッシュ又はオンボードROMを介して)プロセッサ605内に埋め込まれ得る。プロセッサ605は、コンピューティングデバイスを、非汎用の、特に、特別にプログラムされた機械又は装置に変換するための命令又は処理工程を実行するために、格納された命令又は処理工程を実行するように構成され得る。格納されたデータ、例えば、ストレージデバイス620によって格納されたデータは、コンピュータ実行可能命令又は処理工程の実行中にプロセッサ605によってアクセスされて、コンピューティングデバイス600内の1つ又は複数の構成要素に命令することができる。ストレージ620は、異なるソフトウェアプログラムによってアクセスされ得る複数のセクションに区分又は分割され得る。例えば、ストレージ620は、コンピューティングデバイス600のソフトウェアを更新するためのプログラム命令又はデータを格納するなど、特定の目的のために指定されたセクションを含み得る。一実施例において、更新されるソフトウェアは、コンピューティングデバイスのROM又はファームウェアを含む。或る場合において、コンピューティングデバイス600は、複数のオペレーティングシステムを含み得る。例えば、コンピューティングデバイス600は、通常の動作に利用される汎用オペレーティングシステムを含み得る。コンピューティングデバイス600はまた、汎用オペレーティングシステムのアップグレード及び回復などの特定のタスクを実施し、汎用オペレーティングシステムを通して一般に利用可能ではないレベルでコンピューティングデバイス600へのアクセスを可能にするための、ブートローダなどの別のオペレーティングシステムを含み得る。汎用オペレーティングシステムと別のオペレーティングシステムの両方が、特定の目的のために指定されたストレージ620のセクションへのアクセスを有し得る。
【0035】
コンピューティングデバイス600はまた、プロセッサ605に通信可能に結合され得る1つ又は複数の通信インタフェース625を含み得る。1つ又は複数の通信インタフェースは、1つ又は複数の無線通信デバイスとインタフェースするための無線通信インタフェースを含み得る。場合によっては、プロセッサに結合された要素が、プロセッサと共有されるハードウェア上に含まれ得る。例えば、通信インタフェース625、ストレージ620、及びストレージ610は、デジタル無線などの他の要素と共に、システムオンチップ(SOC)などの単一のチップ又はパッケージに含まれてもよい。コンピューティングデバイス600はまた、入力デバイス630を含み得る。入力デバイスの例には、センサ、カメラ、及びマウス、キーボード、タッチスクリーンなどの人間による入力デバイスが含まれる。処理された入力は、通信インタフェース625を介してコンピューティングデバイス600から1つ又は複数の他のデバイスに出力され得る。或る場合において、コンピューティングデバイス600はまた、例えば、ユーザに出力を提供するための、図示されていない出力デバイスを含み得る。出力デバイスの例には、例えば、ディスプレイスクリーン、触覚又は動き生成器、スピーカー、ライト等が含まれる。
【0036】
「結合する」という用語は本明細書全体を通して用いられている。この用語は、本明細書の説明と一貫する機能的関係を可能にする、接続、通信、又は信号経路を網羅し得る。例えば、デバイスAが、或る行為を行なうためにデバイスBを制御するための信号を生成する場合、第1の例においてデバイスAがデバイスBに結合されるか、又は第2の例において、介在構成要素CがデバイスAとデバイスBとの間の機能関係を実質的に変化させない場合にデバイスBがデバイスAによって生成される制御信号を介してデバイスAによって制御されるように、デバイスAは介在構成要素Cを介してデバイスBに結合される。
【国際調査報告】