IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サードウェイブ,インコーポレイティドの特許一覧

特表2022-507151安全な無線ファームウェアアップグレード
<>
  • 特表-安全な無線ファームウェアアップグレード 図1
  • 特表-安全な無線ファームウェアアップグレード 図2
  • 特表-安全な無線ファームウェアアップグレード 図3
  • 特表-安全な無線ファームウェアアップグレード 図4
  • 特表-安全な無線ファームウェアアップグレード 図5A
  • 特表-安全な無線ファームウェアアップグレード 図5B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-18
(54)【発明の名称】安全な無線ファームウェアアップグレード
(51)【国際特許分類】
   H04L 9/08 20060101AFI20220111BHJP
   G06F 21/44 20130101ALI20220111BHJP
   G06F 21/60 20130101ALI20220111BHJP
   H04L 9/32 20060101ALI20220111BHJP
   G06F 21/64 20130101ALI20220111BHJP
   H04L 9/14 20060101ALI20220111BHJP
   G06F 21/57 20130101ALI20220111BHJP
【FI】
H04L9/00 601B
G06F21/44
G06F21/60 360
G06F21/60 320
H04L9/00 675B
G06F21/64
H04L9/00 641
G06F21/57 320
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021525584
(86)(22)【出願日】2019-11-04
(85)【翻訳文提出日】2021-07-05
(86)【国際出願番号】 US2019059677
(87)【国際公開番号】W WO2020101936
(87)【国際公開日】2020-05-22
(31)【優先権主張番号】16/186,868
(32)【優先日】2018-11-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】516064183
【氏名又は名称】サードウェイブ,インコーポレイティド
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100153729
【弁理士】
【氏名又は名称】森本 有一
(72)【発明者】
【氏名】マイケル アテフ アユーブ
(72)【発明者】
【氏名】ナビル ワシリー
(57)【要約】
無線ファームウェアアップグレードを安全に提供するための方法、システム、デバイス及び装置。システムは、ファームウェアアップグレードを受信するように構成された組み込み機器を有する。システムは、第1の鍵暗号化鍵、ファームウェアアップグレード及びファームウェア鍵を格納するように構成されたメモリを有し、メモリに結合されたプロセッサを有するサーバを有する。プロセッサは、ファームウェアアップグレード、ファームウェア鍵及び第1の鍵暗号化鍵を取得するように構成されている。プロセッサは、ファームウェア鍵を使用してファームウェアアップグレードを暗号化するように構成されている。プロセッサは、ファームウェア鍵を第1の鍵暗号化鍵で暗号化し、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を組み込み機器に送信するように構成されている。
【特許請求の範囲】
【請求項1】
ファームウェアアップグレードを安全に無線で配信するためのシステムであって、
ファームウェアアップグレードを受信するように構成された組み込み機器と、
第1の鍵暗号化鍵、ファームウェアアップグレード及びファームウェア鍵を格納するように構成されたメモリを有するとともに前記メモリに結合されたプロセッサを有するサーバであって、前記プロセッサは、
前記ファームウェアアップグレード、前記ファームウェア鍵及び前記第1の鍵暗号化鍵を取得し、
前記ファームウェア鍵を使用して前記ファームウェアアップグレードを暗号化し、
前記第1の鍵暗号化鍵で前記ファームウェア鍵を暗号化し、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を組み込み機器に送信するように構成された、サーバと、
を備える、システム。
【請求項2】
前記メモリは、サーバ秘密鍵を格納するように更に構成され、前記プロセッサは、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を前記組み込み機器に送信する前に、暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵にデジタル署名するように更に構成された、請求項1に記載のシステム。
【請求項3】
一つ以上の鍵暗号化鍵又はサーバ公開証明書を格納するように構成されたメモリを有し、
一つ以上の鍵暗号化鍵を使用して前記サーバとの接続を確立し、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を取得し、
前記サーバ公開証明書を使用して前記デジタル署名を検証し、
前記一つ以上の鍵暗号化鍵を使用して前記組み込み機器との接続を確立し、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を前記組み込み機器に供給するように構成されたプロセッサを有するコントローラデバイスを更に備える、請求項2に記載のシステム。
【請求項4】
前記プロセッサは、
前記ファームウェアアップグレードの配信の複数のモードのうちの一つのモードを有するファームウェア配信要求を受信し、前記複数のモードは、前記サーバと前記組み込み機器の間の直接チャネルを確立する第1のモード、オフラインコントローラを介した前記サーバと前記組み込み機器の間の間接チャネルを確立する第2のモード及びオンラインコントローラを介した前記サーバと前記組み込み機器の間の間接チャネルを確立する第3のモードを有するように構成された、請求項1に記載のシステム。
【請求項5】
前記第1の鍵暗号化鍵は、セッション鍵である、請求項4に記載のシステム。
【請求項6】
前記ファームウェア鍵は、前記第3のモードにあるときに前記セッション鍵を使用して又は前記第2のモードにあるときに以前のファームウェアバージョン内で難読化された一般組み込み機器鍵を使用して事前暗号化される、請求項5に記載のシステム。
【請求項7】
前記組み込み機器は、ファームウェア及び前記第1の鍵暗号化鍵を格納するように構成されたメモリを有するとともに前記メモリに結合されたプロセッサを有し、前記プロセッサは、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を取得し、
前記第1の鍵暗号化鍵を使用して暗号化された前記ファームウェア鍵を復号化し、
前記ファームウェア鍵を使用して暗号化された前記ファームウェアアップグレードを復号化し、
前記ファームウェアアップグレードを使用して前記ファームウェアを更新するように構成された、請求項1に記載のシステム。
【請求項8】
ファームウェアアップグレードを安全に配信するためのシステムであって、
前記ファームウェアアップグレードを受信するように構成された組み込み機器と、
セッション鍵、ファームウェアアップグレード及びファームウェア鍵を格納するように構成されたメモリを有するとともに前記メモリに結合されたプロセッサを有するサーバであって、前記プロセッサは、
前記ファームウェア鍵を使用して前記ファームウェアアップグレードを暗号化し、
前記ファームウェア鍵を前記セッション鍵で暗号化し、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を安全なチャネルを介して前記組み込み機器に送信するように構成された、サーバと、
を備える、システム。
【請求項9】
前記メモリは、サーバ秘密鍵を格納するように更に構成され、前記プロセッサは、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を前記組み込み機器に送信する前に、暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵にデジタル署名するように更に構成された、請求項8に記載のシステム。
【請求項10】
前記組み込み機器は、ファームウェア及び前記セッション鍵を格納するように構成されたメモリを有するとともに前記メモリに結合されたプロセッサを有し、前記プロセッサは、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵の前記デジタル署名を確認し、
暗号化された前記ファームウェア鍵を復号化し、
前記ファームウェア鍵を使用して、暗号化された前記ファームウェアアップグレードを復号化し、
前記ファームウェアアップグレードを使用して前記ファームウェアを更新するように構成された、請求項9に記載のシステム。
【請求項11】
前記プロセッサは、
前記ファームウェアアップグレードの配信の複数のモードのうちの一つのモードを含むファームウェア配信要求を受信し、前記複数のモードは、前記サーバと組み込み機器の間の直接チャネルを確立する第1のモード、オフラインコントローラを介したサーバと組み込み機器の間の間接チャネルを確立する第2のモード及びオンラインコントローラを介したサーバと組み込み機器間の間接チャネルを確立する第3のモードを有するように構成された、請求項10に記載のシステム。
【請求項12】
前記ファームウェア鍵は、前記第2のモードにあるときに以前のファームウェアバージョン内で難読化された一般組み込み機器鍵を使用して事前暗号化される、請求項11に記載のシステム。
【請求項13】
前記セッション鍵又はサーバ公開証明書を含む一つ以上の鍵暗号化鍵を格納するように構成されたメモリを有し、
前記一つ以上の鍵暗号化鍵を使用して前記サーバとの接続を確立し、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を取得し、
前記サーバ公開証明書を使用して署名を検証し、
前記一つ以上の鍵暗号化鍵を使用して前記組み込み機器との接続を確立し、
暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を前記組み込み機器に供給するように構成されたプロセッサを有するコントローラデバイスを更に備える、請求項11に記載のシステム。
【請求項14】
前記プロセッサは、前記ファームウェアアップグレードを前記組み込み機器に送信する前に一つ以上の不変の識別子を検証するように更に構成された、請求項8に記載のシステム。
【請求項15】
ファームウェアを安全に配信するための方法であって、
サーバのプロセッサによって、ファームウェア鍵を使用してファームウェアアップグレードを暗号化することと、
前記サーバのプロセッサによって、セッション鍵を使用してファームウェア鍵を暗号化することと、
前記サーバのプロセッサによって、組み込み機器が第1のモード、第2のモード又は第3のモードにあることを判断することと、
前記サーバのプロセッサによって、暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を、前記組み込み機器が第1のモードにあるときに前記組み込み機器に送信するとともに前記組み込み機器が第2のモード又は第3のモードにあるときにコントローラデバイスに送信することと、
を備える、方法。
【請求項16】
前記組み込み機器のプロセッサによって、暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を、前記組み込み機器が前記第1のモードにあるときに前記サーバから直接受信するとともに前記組み込み機器が前記第2のモード又は前記第3のモードにあるときに前記コントローラデバイスを介して前記サーバから受信することと、
前記組み込み機器のプロセッサによって、暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵を、前記セッション鍵及び前記ファームウェア鍵を使用してそれぞれ復号化することと、
を更に備える、請求項15に記載の方法。
【請求項17】
前記サーバのプロセッサによって、サーバ秘密鍵を使用して、暗号化された前記ファームウェアアップグレード及び暗号化された前記ファームウェア鍵にデジタル署名することを更に備える、請求項16に記載の方法。
【請求項18】
前記組み込み機器のプロセッサによって、ファームウェアバージョン番号及び有効期限のリストを取得することと、
前記組み込み機器のプロセッサによって、前記ファームウェアバージョン番号のリスト内の有効期限に対する前記組み込み機器のファームウェアの有効期限をチェックすることと、
前記組み込み機器のプロセッサによって、前記組み込み機器のファームウェアが期限切れになっていないことを判断することと、
を更に備える、請求項15に記載の方法。
【請求項19】
前記ファームウェア鍵は、前記第3のモードにあるときに前記セッション鍵を使用して事前暗号化される又は前記第2のモードにあるときに以前のファームウェアバージョン内で難読化された一般組み込み機器鍵を使用して事前暗号化される、請求項15に記載の方法。
【請求項20】
前記コントローラデバイスが、暗号化された前記ファームウェア鍵及び暗号化された前記ファームウェアアップグレードを受信するとともに前記第2のモードにあるときに、前記コントローラデバイスは、前記組み込み機器に接続されない、請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連アプリケーションの相互参照
この出願は、2018年11月12日に出願された「安全な無線ファームウェアアップグレード」という表題の米国特許出願第16/186,868号の優先権及び利益を主張し、その全体が参照により本明細書に組み込まれる。
【0002】
この明細書は、組み込み機器のファームウェアをアップグレードするための安全な無線通信のためのシステム、デバイス及び/又は方法に関する。
【背景技術】
【0003】
組み込み機器は、機能の強化、問題の解決及び/又はファームウェアの更新のために、ファームウェアをアップグレードする必要がある。これらの組み込み機器は、ファームウェアアップグレードを受信するための物理インタフェースを有しないワイヤレス組み込み機器である可能性があり、したがって、ワイヤレス組み込み機器は、ワイヤレスリンク又は無線を介してファームウェアアップグレードを受信する必要がある。さらに、これらの組み込み機器は、ファームウェアアップグレードを提供するサービスプロバイダとの継続接続又は常時接続がない場合もあり、したがって、組み込み機器は、ファームウェアの更新を調整する方法でサービスプロバイダのサーバと対話して合意に達する必要がある場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
ファームウェアアップグレードが無線で送信されるとき、パッケージはセキュリティの脆弱性の影響を受けやすくなる。例えば、悪意のある当事者が無線通信を盗聴する又はターゲットデバイスになりすますことによってファームウェアアップグレードにアクセスする可能性がある。他の例では、アクティブな攻撃者がファームウェアアップグレードの変更バージョンを作成し、変更バージョンのファームウェアアップグレードをターゲットデバイスに送信する可能性がある。
【0005】
したがって、ファームウェアアップグレードへの不正アクセスを防止するのと同時にファームウェアアップグレードのインテグリティ及びソースを検証及び認証するシステム、方法及び/又はデバイスが必要である。
【課題を解決するための手段】
【0006】
一般的には、本明細書に記載されている主題の一態様は、ファームウェアアップグレードをワイヤレス又は無線で安全に提供するためのデバイス、システム及び/又は装置において具体化されている。システムは、ファームウェアアップグレードを受信するように構成された組み込み機器を有する。システムは、第1の鍵暗号化鍵、ファームウェアアップグレード及びファームウェア鍵を格納するように構成されたメモリを有し、メモリに結合されたプロセッサを有するサーバを有する。プロセッサは、ファームウェアアップグレード、ファームウェア鍵及び第1の鍵暗号化鍵を取得するように構成されている。プロセッサは、ファームウェア鍵を使用してファームウェアアップグレードを暗号化するように構成されている。プロセッサは、ファームウェア鍵を第1の鍵暗号化鍵で暗号化し、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を組み込み機器に送信するように構成されている。
【0007】
これらの実施形態及び他の実施形態は、任意選択で、以下の特徴のうちの一つ以上を有してもよい。メモリは、サーバの秘密鍵を格納するように更に構成されてもよい。プロセッサは、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を組み込み機器に送信する前に、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵にデジタル署名するように更に構成されてもよい。
【0008】
システムは、コントローラデバイスを有してもよい。コントローラデバイスは、一つ以上の鍵暗号化鍵又はサーバ公開証明書を格納するように構成してもよいメモリを有してもよい。コントローラデバイスは、一つ以上の鍵暗号化鍵を使用してサーバとの接続を確立するように構成してもよいプロセッサを有してもよい。プロセッサは、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を取得するように構成されてもよく、サーバの公開証明書を使用してデジタル署名を検証してもよい。プロセッサは、一つ以上の鍵暗号化鍵を使用して組み込み機器との接続を確立するように構成されてもよく、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を組み込み機器に提供してもよい。
【0009】
サーバのプロセッサは、ファームウェア配信要求を受信するように構成されてもよい。ファームウェア配信要求は、ファームウェアアップグレードの配信モードを有してもよい。配信の異なるモードは、サーバと組み込み機器との間に直接チャネルを確立する第1のモード、オフラインコントローラを介してサーバと組み込み機器との間に間接チャネルを確立する第2のモード及びオンラインコントローラを介してサーバと組み込み機器の間に間接チャネルを確立する第3のモードを有してもよい。
【0010】
第1の鍵暗号化鍵はセッション鍵であってもよい。ファームウェア鍵は、第3モードのときにセッション鍵を使用して事前暗号化してもよい、又は、第2モードのときに以前のファームウェアバージョン内で難読化されてもよい一般組み込み機器鍵を使用して事前暗号化してもよい。
【0011】
組み込み機器は、メモリを有してもよい。メモリは、ファームウェア及び第1の鍵暗号化鍵を格納するように構成してもよい。組み込み機器は、メモリに結合されたプロセッサを有してもよい。プロセッサは、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を格納するように構成されてもよい。プロセッサは、第1の鍵暗号化鍵を使用して、暗号化されたファームウェア鍵を復号化するように構成されてもよい。プロセッサは、ファームウェア鍵を使用して、暗号化されたファームウェアアップグレードを復号化するように構成されてもよい。プロセッサは、ファームウェアアップグレードを使用してファームウェアを更新するように構成されてもよい。
【0012】
他の態様では、主題は、ファームウェアアップグレードの安全な配信のためのシステムにおいて具体化される。システムは、ファームウェアアップグレードを受信するように構成された組み込み機器を有する。システムは、セッション鍵、ファームウェアアップグレード及びファームウェア鍵を格納するように構成されたメモリを有するサーバを有する。システムは、メモリに結合されたプロセッサを有する。プロセッサは、ファームウェア鍵を使用してファームウェアアップグレードを暗号化するとともにセッション鍵を使用してファームウェア鍵を暗号化するように構成されている。プロセッサは、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を安全なチャネルを介して組み込み機器に送信するように構成されている。
【0013】
他の態様では、主題は、ファームウェアの安全な配信のための方法において具体化される。方法は、ファームウェア鍵を使用してファームウェアアップグレードを暗号化することを有する。方法は、セッション鍵を使用してファームウェア鍵を暗号化することを有する。方法は、組み込み機器が第1のモード、第2のモード又は第3のモードにあることを判断することを有する。方法は、ファームウェアアップグレード及び暗号化されたファームウェア鍵を、組み込み機器が第1のモードにあるときに組み込み機器に送信するとともに組み込み機器が第2のモード又は第3のモードにあるときにコントローラデバイスに送信することを有する。
【0014】
本発明の他のシステム、方法、特徴及び利点は、以下の図面及び詳細な説明を検討することにより、当業者に明らかになる又は明らかになるであろう。そのようなすべての追加のシステム、方法、特徴及び利点は、本明細書に含まれ、本発明の範囲内にあり、添付する特許請求の範囲によって保護されることが意図される。図面に示されている構成部品は、必ずしも一定の縮尺である必要はなく、本発明の重要な特徴を更によく説明するために誇張されている場合がある。図面において、同様の参照番号は、互いに異なる図の全体に亘って同様の部品を示す。
【図面の簡単な説明】
【0015】
図1】本発明の一態様による、組み込み機器のファームウェアのようなソフトウェアをアップグレードする無線(OTA)アップグレードシステムの例示的なブロック図を示す。
図2】本発明の一態様による、組み込み機器へのファームウェアアップグレードを安全に提供するために図1のOTAアップグレードシステムのサーバ上に実装された例示的なプロセスの流れ図である。
図3】本発明の一態様による、ファームウェアアップグレードを安全に取得及び配信するために図1のOTAアップグレードシステムの組み込み機器上に実装された例示的なプロセスの流れ図である。
図4】本発明の一態様による、ファームウェアアップグレードを安全に取得及び復号化するために図1のOTAアップグレードシステムのコントローラ上に実装された例示的なプロセスの流れ図である。
図5A】本発明の一態様による、図1のOTAシステムが直接モードであるときの暗号化されたファームウェアアップグレード及び/又はファームウェア鍵の例を示す。
図5B】本発明の一態様による、図1のOTAシステムが間接オフラインモード又は間接オンラインモードであるときの暗号化されたファームウェアアップグレード及び/又はファームウェア鍵の例を示す。
【発明を実施するための形態】
【0016】
サービスプロバイダのサーバ又は他のコンピューティングデバイスから組み込み機器へのファームウェアアップグレードの無線配信を保護するためのシステム、デバイス及び方法をここに開示する。組み込み機器は、ファームウェアアップグレード又は他のソフトウェアのアップグレードを取得するために、無線又はワイヤレス通信に依存してもよいスマートデバイス又は他の組み込み機器であってもよい。組み込み機器は、ファームウェア又は他のソフトウェアアップグレードを受信又は取得するための物理インタフェースを有しても有しなくてもよく、したがって、ファームウェアアップグレードを無線で送受信する必要がある場合がある。
【0017】
安全な無線アップグレードシステム(「OTAアップグレードシステム」)は、サーバ及び組み込み機器を有する。サービスプロバイダのコンピューティングデバイスのようなサーバは、スマートウェアラブルデバイス、モノのインターネット(IoT)デバイス、医療機器又は他の組み込み機器のような組み込み機器に、組み込み機器上のソフトウェアを更新するために使用してもよいファームウェアアップグレードのようなソフトウェアパッケージを提供する。OTAアップグレードシステムは、オフライン機能を提供する及び/又はソフトウェアパッケージを一つ以上の組み込み機器に配信するための更なる可動性(mobility)及び/又は適応性(flexibility)を提供するようにサーバと組み込み機器との間をインタフェースで接続するためにコントローラデバイス(「コントローラ」)を利用してもよい。
【0018】
他の利益及び利点は、OTAアップグレードシステムがサーバ、組み込み機器及び/又はコントローラの間に安全な通信チャネルを確立できることを有する。安全な通信チャネルは、転送前、転送後及び転送中にソフトウェアパッケージを保護するために暗号化、認証、署名及び/又は他のセキュリティ対策(security mechanism)を利用する。例えば、ソフトウェアパッケージは、無線での転送中のソフトウェアパッケージの機密性を保護するために暗号化されてもよい。他の例では、ソフトウェアパッケージは、輸送中のソフトウェアパッケージの変更を防止するとともにソフトウェアパッケージのソースを認証するために署名されてもよい。複数の暗号化アルゴリズム及び/又は鍵を、ソフトウェアパッケージ及び転送中にソフトウェアパッケージの配布に必要な鍵の両方を保護するために使用してもよい。これにより、OTAアップグレードシステムは、検証済み及び認証済みの機密ソフトウェアパッケージを組み込み機器に無線で提供することができる。
【0019】
図1は、組み込み機器104のファームウェアのようなソフトウェアをサーバ102からアップグレードするOTAアップグレードシステム100のブロック図を示す。以下、組み込み機器上のファームウェアをアップグレード又は更新するファームウェアアップグレードについて言及するとしても、OTAアップグレードシステム100は、組み込み機器104のアプリケーション、オペレーティングシステム又は任意の低レベルソフトウェアを含む他のソフトウェアのような任意のタイプのソフトウェアを同様の方法でアップグレードしてもよい。
【0020】
OTAアップグレードシステム100は、組み込み機器104及びサーバ102を有する。OTAアップグレードシステム100は、組み込み機器104とサーバ102の間の仲介物であるコントローラデバイス(「コントローラ」)106を有してもよい。組み込み機器104は、ウェアラブルであってもウェアラブルなくてもよいスマートデバイス、医療機器、デジタル時計若しくはオーディオプレーヤーのようなポータブルデバイス、ルータ、スマートフォン、工場用若しくは産業用コントローラ又は他の専用コンピュータ若しくはプロセッサであってもよい。いくつかの実装形態では、OTAアップグレードシステム100は、汎用コンピュータに接続され、ソフトウェアアップグレードを汎用コンピュータに提供してもよい。
【0021】
組み込み機器104は、プロセッサ108及びメモリ110を有してもよい。プロセッサ108は、単一のプロセッサ又は複数のプロセッサであってもよい。プロセッサ108は、一つ以上のコンポーネントからデータを受信し、受信又は決定したデータに基づいて一つ以上のコンポーネントの動作を制御してもよい。例えば、プロセッサ108は、サーバ102からのファームウェアアップグレードを復号化してもよい、ファームウェアアップグレードを検証及び認証してもよい、及び/又は、ファームウェアアップグレードで組み込み機器104のファームウェアを更新してもよい。
【0022】
プロセッサ108をメモリ110に結合してもよい。メモリ110は、プロセッサ108上で実行するための命令を格納してもよく、一つ以上のランダムアクセスメモリ(RAM)又は他の揮発性若しくは不揮発性メモリを有してもよい。メモリ110は、ハードディスクドライブ、ソリッドステートディスクドライブ、ハイブリッドディスクドライブ又は他の適切なデータストレージのような非一時的メモリ又はデータストレージデバイスであってもよく、プロセッサ108によってロード及び実行してもよい機械可読命令を更に格納してもよい。メモリ110は、クラウド-組み込み機器鍵のような暗号化及び/又は復号化に使用される一つ以上の鍵、及び/又は、署名検証に使用されるサーバ公開証明書のような一つ以上の証明書を格納してもよい。
【0023】
組み込み機器104は、物理的インタフェースを有さないことがあるので、組み込み機器104は、ネットワークアクセスインタフェース112を有してもよい。ネットワークアクセスインタフェース112は、一つ以上のWi-Fi(登録商標)ユニット、ブルートゥース(登録商標)ユニット、無線周波数識別(RFID)タグ若しくはリーダー又は(3G、4G、5Gのような)セルラーネットワークにアクセスするためのセルラーネットワークユニットのような通信ポート又はチャネルを有してもよい。ネットワークアクセスインタフェース112は、直接接続されていないデバイスとシステムの間でデータを送受信してもよい。組み込み機器104は、例えば、ネットワーク138を介してサーバ102及び/又はコントローラ106に接続するためにネットワークアクセスインタフェース112を使用してもよい。
【0024】
ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、セルラーネットワーク、インターネット又はその組合せのようなネットワーク138は、無線又はワイヤレスファームウェアのアップデートを受信するために組み込み機器104をサーバ102に接続する。例えば、組み込み機器104を、サーバ102内のデータベースからアップデートにアクセス及びダウンロードするためにサーバ102に結合してもよい。いくつかの実装形態では、サーバ102は、アップデートを組み込み機器104に転送する。
【0025】
組み込み機器104は、サーバ102に結合してもよい。サーバは、ファイルへのアクセス又は周辺機器の共有のようなサービスをネットワーク内の他のコンピュータに提供するために使用されるネットワーク内のコンピュータであってもよい。サーバ102は、組み込み機器104にファームウェアアップグレードを提供するサービスプロバイダあってもよい。サーバ102は、プロセッサ114、メモリ116及びネットワークアクセスデバイス118を有する。プロセッサ114は、同様のコンポーネント及び/又は機能を有してもよいが、組み込み機器104のプロセッサ108よりも多くのリソースを有する。プロセッサ114は、パッケージ及び/又はメッセージを暗号化、復号化及び/又は署名するために、クラウド-組み込み機器鍵及び/又はクラウド-コントローラデバイス鍵のような一つ以上の鍵、及び/又は、サーバ秘密鍵のような一つ以上の証明書を使用してもよい。
【0026】
プロセッサ114をメモリ116に結合してもよい。メモリ116は、同様のコンポーネント及び/又は機能を有してもよいが、メモリ110よりも多くのリソースを有する。 メモリ116は、例えば、クラウド-組み込み機器鍵及び/又はクラウド-コントローラデバイス鍵のような一つ以上の鍵、及び/又は、一つ以上の証明書を格納してもよい。
【0027】
メモリ116は、データベースを格納してもよい。データベースは、例えば、コンピュータによる検査及び検索のために構成された情報のコレクションであり、データベースは、テーブル、スキーマ、クエリ、レポート又は他のデータ構造で構成されてもよい。データベースは、任意の数のデータベース管理システムを使用してもよい。情報は、リアルタイム情報、定期的に更新される情報又はユーザが入力した情報を有してもよい。例えば、データベースは、様々な組み込み機器の様々なファームウェアアップグレードの複数のバージョンを格納してもよい。データベースは、様々なファームウェアアップグレードを暗号化/復号化するために及び/又は様々な組み込み機器と安全に通信するために使用される一つ以上の鍵及び/又は一つ以上の証明書を格納してもよい。
【0028】
サーバ102は、ネットワークアクセスデバイス118を有する。ネットワークアクセスデバイス118は、サーバ102、組み込み機器104及び/又はコントローラ106の間で送信及び/又は受信を行うようにネットワーク138にアクセスするために、組み込み機器104のネットワークアクセスインタフェース112と同様の構成要素及び/又は機能を有する。
【0029】
サーバ102は、ユーザインタフェース120を有してもよい。ユーザインタフェース120は、ユーザインタフェース要素、ボタン、ダイヤル、マイクロフォン、キーボード又はタッチスクリーンのようなユーザ入力を受信することができる入力/出力デバイス122及びディスプレイ、スピーカー又は再生可能な点字ディスプレイのような出力が可能な任意のデバイスを有してもよい。ユーザインタフェース120は、例えば、ファームウェアアップグレード、一つ以上の鍵及び/又は一つ以上の証明書を含むユーザ入力を受け取ってもよい。他の例では、ユーザインタフェース120は、バージョン番号のようなファームウェアアップグレードを補足するための追加情報及び/又は一つ以上の不変の識別子のような一つ以上の証明書を補足するための追加情報を受信してもよい。
【0030】
OTAアップグレードシステム100は、コントローラ106を有してもよい。コントローラ106は、組み込み機器104とサーバ102の間にオンラインインタフェース又はオフラインインタフェースを提供してもよい。コントローラ106がオンラインインタフェースを提供するとき、サーバ102及び組み込み機器104は、ネットワーク138を使用してコントローラ106を介して接続を確立し、三つのデバイスの全てが同時に接続される。サーバ102は、確立された接続を通じてコントローラ106を介して組み込み機器104にファームウェアアップグレードを提供する。コントローラ106が組み込み機器104とサーバ102の間にオフラインインタフェースを提供するとき、サーバ102は、コントローラ106が組み込み機器104に接続するときとは別個にかつ異なるようにコントローラ106に接続する。サーバ102は、転送中に組み込み機器104に接続されていないコントローラ106にファームウェアアップグレードを提供する。その後、コントローラ106は、接続を確立し、組み込み機器104にファームウェアアップグレードを提供する。
【0031】
コントローラ106は、プロセッサ124及びメモリ126を有する。プロセッサ124は、プロセッサ108,114と同様の構成要素及び/又は機能を有してもよい。メモリ126は、メモリ110,116と同様の構成要素及び/又は機能を有してもよい。いくつかの実装形態では、メモリ126は、暗号化されたメモリであってもよい。コントローラ106は、ユーザインタフェース128及び/又はネットワークアクセスデバイス130を有してもよい。ユーザインタフェース128及び/又はネットワークアクセスデバイス130はそれぞれ、ユーザインタフェース120及び/又はネットワークアクセスデバイス118又はネットワークアクセスインタフェース112と同様の構成要素及び/又は機能を有する。
【0032】
コントローラ106は、信頼できる実行環境(「信頼できる環境」)134及び/又は信頼できない実行環境(「信頼できない環境」)136を有してもよい。信頼できる環境134内のコンポーネントは、信頼できない環境136内の他のコンポーネントから論理的及び/又は物理的に分離及び/又はサンドボックス(sandboxed)されている。信頼できる環境134は、別個の及び/又は異なるオペレーティングシステムを実行するとともに信頼できない環境136とは異なるリソースを有してもよい。信頼できる環境134及び信頼できない環境136は、例えば、互いに異なるプロセッサを有してもよい。
【0033】
コントローラ106は、セキュアエレメント132を有してもよい。セキュアエレメント132は、鍵生成、鍵記憶及び/又は他の暗号化機能を提供してもよい。いくつかの実装形態では、セキュアエレメント132は、コントローラ106に含まれる、コントローラ106の中に埋め込まれる又はコントローラ106に挿入される。セキュアエレメント132は、別個のハードウェアトークン若しくはデバイス又は証明書、鍵若しくは他の認証若しくは識別情報データを安全に格納する集積回路及び/又はメモリのようなセキュアエレメントチップであってもよい。コントローラ106は、サーバ102及び/又は組み込み機器104との安全な接続のペアリング又は確立及び/又はコントローラ106がオフラインであるときのファームウェアアップグレードの格納のような安全な機能を実行するために、セキュアエレメント132及び/又は信頼できる環境134を利用してもよい。
【0034】
プロセッサ124、メモリ126、ユーザインタフェース128又はネットワークアクセスデバイス130のようなコントローラ106の構成要素のいずれか、全て又は一部は、信頼できる実行環境134、セキュアエレメント132及び/又は信頼できない実行環境136内にあってもよい。
【0035】
図2は、組み込み機器104にファームウェアアップグレードを安全に提供するためにサーバ102上に実装されたプロセス200の流れ図である。適切にプログラムされた、図1のOTAアップグレードシステム100の一つ以上のコンピュータ又はデータ処理装置、例えば、サーバ102のプロセッサ114は、ファームウェアアップグレードを組み込み機器104に供給、送信又は伝送することができる。
【0036】
サーバ102は、一つ以上のファームウェアアップグレード、一つ以上の鍵、一つ以上の不変の識別子及び/又は一つ以上の証明書を取得してもよい(202)。サーバ102は、一つ以上のファームウェアアップグレード、一つ以上の鍵、一つ以上の不変の識別子及び/又は一つ以上の証明書をユーザから取得してもよい。OTAアップグレードシステム100の管理者は、一つ以上のファームウェアアップグレード、一つ以上の鍵、一つ以上の不変の識別子及び/又は一つ以上の証明書を、ユーザインタフェース120を介してサーバ012に供給してもよい。サーバ102は、後にコントローラ106又は組み込み機器104に供給又は配信するために一つ以上のファームウェアアップグレード、一つ以上の鍵、一つ以上の不変識別子及び/又は一つ以上のコレ証明書(kore certificates)をメモリ116に格納してもよい。
【0037】
一つ以上のファームウェアアップグレードは、バージョン番号及び/又は組み込み機器の関連付けを有してもよい。バージョン番号は、サービスプロバイダがファームウェアアップグレードをリリースした日付及び/又はファームウェアアップグレードのバージョンに関連する変更のような情報を提供するバージョン管理番号であってもよい。組み込み機器の関連付けは、ファームウェアアップグレードが更新する組み込み機器の型又はカテゴリーごとの一意の識別子であってもよい。
【0038】
一つ以上の鍵は、一つ以上のファームウェア鍵及び/又は一つ以上の鍵暗号化鍵(KEK)を有してもよい。一つ以上の鍵をランダムに生成してもよい。サーバ102は、ファームウェアアップグレードを組み込み機器104に配信する前、ファームウェアアップグレードを組み込み機器104に配信した後及び/又はファームウェアアップグレードを組み込み機器104に配信する配信する間にファームウェアアップグレードを暗号化/復号化するために、一つ以上のファームウェア鍵を使用してもよい。サーバは、一つ以上のファームウェア鍵を組み込み機器104に配信する前、一つ以上のファームウェア鍵を組み込み機器104に配信した後及び/又は一つ以上のファームウェア鍵を組み込み機器104に配信する間に一つ以上のファームウェア鍵を暗号化/復号化するために、一つ以上のKEKを使用してもよい。
【0039】
一つ以上の証明書は、一つ以上のデバイス証明書を有してもよい。一つ以上のデバイス証明書は、サーバ秘密鍵のような秘密鍵証明書及び/又はサーバ公開鍵のような公開デバイス証明書を有してもよい。サーバ102は、組み込み機器104に配信する前にファームウェアアップグレード及び/又はファームウェア鍵にデジタル署名するためにプライベート証明書を使用してもよい。組み込み機器104は、デジタル署名を検証するために公開証明書を使用してもよい。プライベート証明書/パブリック証明書を使用すると、署名されたコンテンツが転送中に変更されていないことが保証される、すなわち、デジタル署名は、署名されたコンテンツのインテグリティを保護する及び/又は署名されたコンテンツのソースを識別する。さらに、一つ以上の証明書は、証明書にバインドされている一つ以上の不変の識別子を有してもよい。これは、署名されたコンテンツのソースの追加認証を提供する。
【0040】
一つ以上の不変の識別子は、デバイス証明書にバインドされるとともに関連付けられてもよい国際携帯機器識別(IMEI)番号、電話番号、ブルートゥース(登録商標)ローエナジー(BLE)メディアアクセス制御(MAC)アドレス、TrustZone(登録商標)識別子(ID)又は他のデバイス識別子を有してもよい。一つ以上の不変の識別子は、不変である及び/又は変えられない組み込み機器104の特定の識別子であってもよい。
【0041】
サーバ102は、ファームウェアバージョン番号及び関連する有効期限のリストに署名するとともに当該リストをコントローラ106又は組み込み機器104に送信してもよい(203)。ファームウェアのバージョン番号及び関連する有効期限のリストを、ファームウェアのバージョンの有効期限が切れるとき及び/又はファームウェアアップグレードが必要になるときを確認するために使用してもよい。
【0042】
サーバ102は、配信モード要求を取得してもよい又はファームウェアアップグレード内から配信モードを取得してもよい(204)。配信モード要求は、特定のモードを使用してファームウェアアップグレードを配信するための組み込み機器104からの要求である。配信モード要求は、ファームウェアアップグレードの配信の特定の実装及び方法を有してもよい。いくつかの実装形態では、ファームウェアアップグレードは、実装及び配信の方法を指定し、サーバ102は、ファームウェアアップグレードから配信モードを抽出する。
【0043】
配信モード要求は、一つ以上の配信モードを識別してもよい。もう一つのモードは、直接クラウド-組み込み機器モード(「直接モード」)、間接オフラインクラウド-コントローラ-組み込み機器モード(「間接オフラインモード」)及び/又は間接クラウド-コントローラ-組み込み機器モード(「間接オンラインモード」)を有してもよい。直接モードでは、サーバ102は、サーバ102と組み込み機器104の間に直接チャネルを確立する。間接オフラインモードでは、サーバ102は、オフラインコントローラ106を介してサーバ102と組み込み機器104の間に間接チャネルを確立する。間接オンラインモードでは、サーバ102は、オンラインコントローラ106を介してサーバ102と組み込み機器104の間に間接チャネルを確立する。
【0044】
サーバ102は、サーバ102及び組み込み機器104がペアリングされた後及び/又はサーバ102と組み込み機器104との間に安全な通信チャネルを確立した後、組み込み機器104から配信モード要求を取得してもよい。いくつかの実装形態では、サーバ102は、第1のファームウェアアップグレードが組み込み機器104に無事に配信されるまで初期化されるとともに直接モードにデフォルトしてもよい。例えば、組み込み機器104は、最初のファームウェアアップグレードが直接モードを介して配信されることを要求するように予め構成されてもよい。
【0045】
サーバ102は、ファームウェアアップグレードを暗号化してもよい(206)。サーバ102は、ファームウェア鍵を使用してファームウェアアップグレードを暗号化してもよい。ファームウェア鍵は、各組み込み機器104の各ファームウェアアップグレード又はファームウェアの各バージョンの一意の鍵であってもよい。したがって、組み込み機器104は、サーバ102からファームウェア鍵を取得する前にファームウェア鍵を有さなくてもよく、したがって、ファームウェアアップグレードが意図しない他の組み込み機器に伝送される場合、意図しない他の組み込み機器は、ファームウェアアップグレードを復号化することができない。すなわち、他のデバイスが、暗号化されたファームウェアアップグレードにアクセスできる場合でも、他のデバイスは、ファームウェアアップグレードを復号化することができず、ファームウェアアップグレードにアクセスすることができない。
【0046】
サーバ102は、ファームウェアアップグレードの配信のために、配信モードが直接モード、間接オンラインモード又は間接オフラインモードのいずれであるかを判断してもよい(208)。直接モード及び間接オンラインモードは、オンライン配信モードである。オンライン配信モードは、ファームウェアアップグレードの配信前、ファームウェアアップグレードの配信後及び/又はファームウェアアップグレードの配信中にサーバ102が直接的な又はコントローラ106を介して間接的なサーバ102と組み込み機器104の間の継続接続を維持することを必要とする。一方、間接オフライン配信モードは、サーバ102がファームウェアアップグレードをコントローラ106に格納した後に組み込み機器104に配信することを可能にするオフライン配信モードである。
【0047】
サーバ102は、ファームウェアアップグレードの特定の実装及び配信方法、例えば、配信モード要求で指定された又はファームウェアアップグレードで指定された一つ以上の配信モードに基づいて、配信モードを決定してもよい。サーバ102は、配信モード要求から一つ以上の配信モードを抽出するとともに配信モードを決定してもよい。配信モード要求に含まれるモードを、配信モードを示すフラグ、ビット又は他のインジケータとして表してもよい。
【0048】
サーバ102が、モードが間接オンラインモードであると判断した場合、サーバ102は、第1の鍵暗号化鍵を使用してファームウェア鍵を事前暗号化してもよい(210)。第1の鍵暗号化鍵は、クラウド-組み込み機器セッション鍵であってもよい。ファームウェア鍵をクラウド-組み込み機器セッション鍵で暗号化することにより、サーバ102は、コントローラ106がファームウェア鍵にアクセスするのを防止し、これによって、ファームウェアアップグレードの機密性を保護する。その理由は、コントローラがクラウド-組み込み機器セッション鍵にアクセスできないからである。さらに、クラウド-組み込み機器セッション鍵は、各組み込み機器及び/又は組み込み機器の各型に固有の一意の鍵であってもよいので、サーバ102は、他の意図しない組み込み機器又は意図しない型の組み込み機器がファームウェア鍵にアクセスするのを防止することができる。その理由は、これらの他の組み込み機器が特定のクラウド-組み込み機器セッション鍵を有しないからである。
【0049】
サーバ102が、モードが間接オフラインモードであると判断した場合、サーバ102は、第2の鍵暗号化鍵を使用してファームウェア鍵を事前暗号化してもよい(212)。第2の鍵暗号化鍵は、一般組み込み機器鍵(general embedded device key)であってもよい。一般組み込み機器鍵は、以前のファームウェアバージョンのファームウェアコード内で難読化されてもよい。元のファームウェアバージョン又は初期のファームウェアバージョンは、製造中及び/又はプロビジョニング中に含まれるファームウェアコードを有してもよい。例えば、ファームウェア鍵に関連付けられているファームウェアアップグレードがバージョン2.0である場合、以前のバージョンのファームウェア、例えば、バージョン1.0は、現在のファームウェアアップグレードバージョン2.0に関連付けられている一般組み込み機器鍵を有してもよい。配信されるファームウェアアップグレードの現在のバージョンは、次のファームウェアアップグレード用の一般組み込み機器鍵を有してもよい。例えば、ファームウェアアップグレードバージョン2.0は、ファームウェアアップグレードバージョン3.0の一般組み込み機器鍵を有してもよい。
【0050】
ファームウェア鍵を一般組み込み機器鍵で暗号化することにより、サーバ102は、コントローラ106がファームウェア鍵にアクセスするのを防止し、これによって、ファームウェアアップグレードの機密性を保護する。その理由は、コントローラ106が一般組み込み機器鍵にアクセスできないからである。しかしながら、一般組み込み機器鍵は、以前のファームウェアバージョンを利用する全ての組み込み機器のファームウェアコード内で難読化されてもよく、各組み込み機器に固有ではなくてもよい。しかしながら、コントローラ106はファームウェア鍵にアクセスできないので、組み込み機器104がファームウェアアップグレードを要求するまでファームウェアアップグレードをコントローラ106に格納するとともにコントローラ106と連動して移送してもよい。
【0051】
いくつかの実装形態では、ファームウェア鍵を、クラウド-組み込み機器セッション鍵又は間接オンラインモード若しくは間接オフラインモードの一般組み込み機器鍵をそれぞれ使用して、サーバ102以外の別のエンティティによって事前暗号化され、単に取得するとともにサーバ102内に格納する。
【0052】
サーバ102が、モードが間接オンラインモード又は間接オフラインモードであると判断するとき、サーバ102は、事前暗号化されたファームウェア鍵を、クラウド-コントローラデバイスセッション鍵のような第3の鍵暗号化鍵で暗号化する(214)。これは、後に一つ以上の組み込み機器に配布するためにコントローラ106に転送する間のファームウェア鍵を保護する。いくつかの実装形態では、サーバ102は、追加のセキュリティのために、暗号化されたファームウェアアップグレードを第3の鍵暗号化鍵で暗号化してもよい。
【0053】
サーバ102が、モードが直接モードであると判断する場合、サーバ102がファームウェア鍵を事前に暗号化する必要がない。その理由は、ファームウェアアップグレードがコントローラ106又は他のデバイスを横断することなくサーバ102がファームウェアアップグレードを組み込み機器104に直接配信又は提供するからである。代わりに、サーバ102は、クラウド-組み込み機器セッション鍵のような第4の鍵暗号化鍵でファームウェア鍵を暗号化する(216)。クラウド-組み込み機器セッション鍵は、サーバ102及び組み込み機器104にのみに既知であってもよく、事前共有されていてもよい。 ファームウェア鍵をクラウド-組み込み機器セッション鍵で暗号化することにより、他のデバイスがファームウェア鍵及びファームウェアアップグレードにアクセスできなくなるようにしてもよい。いくつかの実装形態では、サーバ102は、暗号化されたファームウェアアップグレードを第4の鍵暗号化鍵で暗号化してもよい。
【0054】
サーバ102は、ファームウェアアップグレード及び/又はファームウェア鍵を送信、伝送又は他の方法で供給する前に、ファームウェアアップグレード及び/又はファームウェア鍵に署名してもよい(218)。サーバ102は、以前に暗号化された可能性のあるファームウェアアップグレード及び/又はファームウェア鍵を組み合わせて単一のデータパッケージにしてもよい。いくつかの実装形態では、サーバ102は、傍受を更に困難にするために、ファームウェアアップグレード及びファームウェア鍵の配信を別個のパッケージ配信として保持する。サーバ102は、メモリ116からサーバ秘密鍵を取得し、ファームウェアアップグレード及び/又はファームウェア鍵にデジタル署名するためにサーバ秘密鍵を使用してもよい。サーバ102は、一つ以上のファームウェアアップグレード、ファームウェアアップグレード鍵、ファームウェアアップグレードバージョン番号及び/又は組み込み機器識別子の連結の暗号化ハッシュ関数出力にデジタル署名してもよい。サーバ102がファームウェアアップグレード及び/又はファームウェア鍵に署名するとき、サーバ102は、サーバ102がファームウェアアップグレード及び/又はファームウェア鍵を送信するときにサーバ公開鍵を有してもよい。ファームウェアアップグレード及び/又はファームウェア鍵にデジタル署名することにより、ファームウェアアップグレード及び/又はファームウェア鍵が変更されていないこと及びファームウェアアップグレード及び/又はファームウェア鍵の発信元がサーバ102であることを確実にするためにデジタル署名を検証してもよい。
【0055】
サーバ102がファームウェア鍵及び/又はファームウェアアップグレードを暗号化した後、サーバ102は、コントローラ106又は組み込み機器104との接続を確立する(220)。サーバ102は、配信モードに基づいて、コントローラ106又は組み込み機器104との接続を確立する。モードが間接オフラインモード又は間接オンラインモードである場合、サーバ102は、コントローラ106との接続を確立する。サーバ102は、コントローラ106との安全な接続を確立するためにクラウド-コントローラデバイスセッション鍵を使用してもよい。モードが直接モードである場合、サーバ102は、組み込み機器104との接続を確立する。サーバ102は、組み込み機器104との安全な接続を確立するためにクラウド-組み込み機器セッション鍵を使用してもよい。
【0056】
サーバ102がコントローラ106又は組み込み機器104との接続を確立するとともにファームウェア鍵及びファームウェアアップグレードを暗号化すると、サーバ102は、暗号化されたファームウェア鍵及び暗号化されたファームウェアアップグレードをコントローラ106又は組み込み機器104に伝送、供給及び/又は送信する(222)。モードが間接オフラインモード又は間接オンラインモードである場合、サーバ102は、暗号化されたファームウェア鍵及び暗号化されたファームウェアアップグレードをコントローラ106に伝送、送信又は供給する。そして、モードが直接モードである場合、サーバ102は、暗号化されたファームウェア鍵及び暗号化されたファームウェアアップグレードを組み込み機器104に伝送、送信又は供給する。
【0057】
図3は、ファームウェアアップグレードを安全に取得及び復号化するために組み込み機器104上に実装されたプロセス300の流れ図である。適切にプログラムされた、図1のOTAアップグレードシステム100の組み込み機器104の一つ以上のコンピュータ又はデータ処理装置、例えば、プロセッサ108は、ファームウェアアップグレードを取得及び復号化してもよい。
【0058】
組み込み機器104は、ファームウェアアップグレードが必要であると判断してもよい(302)。組み込み機器104は、ファームウェアバージョン番号及び関連する有効期限のリストをコントローラ106及び/又はサーバ102から取得又は予め取得してもよく、ファームウェアバージョン番号のリスト上の署名を検証してもよく、バージョンの有効期限が切れているか否かを確かめるためにファームウェアバージョンをチェックしてもよい。一部の実装では、各ファームウェアバージョンは、バージョンの有効期限が切れたことを示す有効期限情報を有してもよい。組み込み機器104は、現在の日付がファームウェアの有効期限よりも古い場合にファームウェアが古くなっていると判断することができ、これは、新しいファームウェアアップグレードが必要であることを示す。
【0059】
いくつかの実装形態では、組み込み機器104は、ファームウェアバージョンをサーバ102に伝送する。そして、それに応じて、組み込み機器104は、ファームウェアバージョンが古くなっている又は有効期限切れである及び/又は新しいファームウェアアップグレードが組み込み機器104に利用可能であることを示す指示をサーバ102から受信してもよい。ファームウェアのバージョンが古くなっている又は有効期限切である場合、組み込み機器は、通常の動作を停止してもよく、ファームウェアアップグレードが必要なセーフモードに入ってもよい。
【0060】
組み込み機器104は、起動時にファームウェアアップグレードが必要であると判断してもよい。組み込み機器104は、現在の日付及び/又は時刻のタイムスタンプを要求及び取得し、タイムスタンプをファームウェアの有効期限と比較し、現在の日付及び/又は時刻が有効期限を超える場合、ファームウェアアップグレードが必要であると判断してもよい。例えば、組み込み機器は、コントローラ106又はサーバ102から署名されたタイムスタンプを受信してもよい、署名の有効性をチェックしてもよい、及び/又は、証明書及び/又はファームウェアバージョンのタイムスタンプ及び有効期限の日付及び/又は時間を使用して現在のファームウェアバージョンが期限切れになっていないことをチェックしてもよい。署名は、検証又は立証することができる、組み込み機器のID、コントローラのID及び組み込み機器からコントローラに送信されるランダムナンスのような他の識別子を有してもよい。署名は、コントローラの秘密鍵又はサーバの秘密鍵を使用する署名であってもよい。
【0061】
いくつかの実装形態では、組み込み機器104は、最初の使用時に通常の動作を開始しなくてもよく、組み込み機器がファームウェアバージョン番号及びそれらの有効期限のリストを、例えば、コントローラ106から取得するまでファームウェアアップグレードをサーバ102のデジタル署名と共に要求してもよい。組み込み機器104は、最初の使用時に、組み込み機器のファームウェアバージョンをファームウェアバージョン番号のリストに含めること及び組み込み機器のファームウェアバージョンがサーバの公開鍵及び/又はコントローラの公開鍵を使用したデジタル署名の検証と共に有効期限切れにならないことを要求してもよい
【0062】
組み込み機器104は、ファームウェアアップグレード及び/又はファームウェア鍵の配信モードを決定してもよい(304)。組み込み機器104は、最初に、例えば、工場で直接モードに設定してもよく、これは、初期ファームウェアアップグレード及び/又はファームウェア鍵を無線又はワイヤレスでダウンロードするためにサーバ102への直接接続を確立するとともに要求とする。組み込み機器104は、次のファームウェアアップグレードのために、間接オフラインモード及び/又は間接オンラインモードのような異なるモードに変更するための指示を受け取ってもよい。
【0063】
組み込み機器104は、直接モード又は間接オンライン/オフラインモードのときにそれぞれ、クラウド-組み込み機器セッション鍵を使用してサーバ102との接続を確立する又はコントローラ-組み込み機器セッション鍵を使用してコントローラ106との接続を確立する。組み込み機器104は、直接的又は確立された接続を通じてコントローラ106を介して間接的にサーバ102への配信モードを含む配信モード要求を伝送又は供給する(306)。
【0064】
組み込み機器104がファームウェアアップグレードを必要とすると判断した後、組み込み機器104は、暗号化されたファームウェアアップグレード及び/又は暗号化されたファームウェア鍵を取得してもよい(308)。組み込み機器104は、配信モードに基づいて、暗号化されたファームウェアアップグレード及び/又は暗号化されたファームウェア鍵を取得してもよい。組み込み機器104が直接モードに設定されている場合、組み込み機器104は、暗号化されたファームウェアアップグレード及び/又は暗号化されたファームウェア鍵をサーバ102から直接取得する。組み込み機器104が間接オフラインモード又は間接オンラインモードに設定されている場合、組み込み機器104は、暗号化されたファームウェアアップグレード及び/又は暗号化されたファームウェア鍵をコントローラ106から取得する。
【0065】
いくつかの実装形態では、組み込み機器104は、サーバ公開鍵及び/又は公開鍵証明書を受信してもよい。いくつかの実装形態では、サーバ公開鍵及び/又は公開鍵証明書は、組み込み機器104内に事前に格納されている又は既に格納されている。例えば、サーバ公開鍵及び/又は公開鍵証明書は、組み込み機器104の製造、プロビジョニング及び/又は配布中に組み込み機器104内に事前にインストールされてもよい。
【0066】
組み込み機器104は、暗号化されたファームウェアアップグレード及び/又は暗号化されたファームウェア鍵にデジタル署名するためにサーバ102が使用されたデジタル署名を検証してもよい(310)。組み込み機器104は、デジタル署名を検証するためにサーバ公開鍵を使用してもよい。デジタル署名を検証することにより、組み込み機器104は、ファームウェアアップグレード及び/又はファームウェア鍵に変更が加えらなかったことを検証する。さらに、組み込み機器104は、ファームウェアアップグレード及び/又はファームウェア鍵がサーバ102から到着したことを検証する。すなわち、デジタル署名は、ファームウェアアップグレード及び/又はファームウェア鍵の発信元及びインテグリティを認証する。
【0067】
組み込み機器104は、一つ以上の不変の識別子を検証してもよい(312)。一つ以上の不変の識別子は、デジタル署名に関連付けられた公開鍵証明書内に含まれてもよい。例えば、組み込み機器104は、国際携帯機器識別(IMEI)番号、電話番号、ブルートゥース(登録商標)ローエナジー(BLE)メディアアクセス制御(MAC)アドレス、TrustZone(登録商標)識別子(ID)又は他のデバイス識別子のような組み込み機器104に関連付けられた一意の識別子を検証してもよい。組み込み機器104は、例えば、情報のデータベースと比較するために一つ以上の不変の識別子をサーバ102に伝送してもよい。
【0068】
組み込み機器104は、配信モードに基づいて、第4の鍵暗号化鍵又は第5の鍵暗号化鍵を使用して、暗号化されたファームウェア鍵を復号化する(314)。組み込み機器104が間接オフラインモード又は間接オンラインモードである場合、組み込み機器104は、コントローラ-組み込み機器セッション鍵のような第5の鍵暗号化鍵を使用して、暗号化されたファームウェア鍵を復号化してもよい。組み込み機器104が直接モードである場合、組み込み機器104は、クラウド-組み込み機器セッション鍵のような第4の鍵暗号化鍵を使用して、暗号化されたファームウェア鍵を復号化してもよい。
【0069】
組み込み機器104が間接オンラインモード又は間接オフラインモードであるとき、ファームウェア鍵がクラウド-組み込み機器セッション鍵のような第1の鍵暗号化鍵又はファームウェア内で難読化された一般組み込み機器鍵のような第2の鍵暗号化鍵を使用して事前に暗号化されている可能性があるので、組み込み機器104は、ファームウェア鍵を更に復号化してもよい。組み込み機器104は、組み込み機器が間接オンラインモード又は間接オフラインモードにあるときに第1の鍵暗号化鍵又は第2の鍵暗号化鍵をそれぞれ使用してファームウェア鍵を更に復号化してもよい。
【0070】
ファームウェア鍵が復号化されると、組み込み機器104は、暗号化されたファームウェアアップグレードを復号化するためにファームウェア鍵を使用する(316)。いくつかの実装形態では、暗号化されたファームウェアアップグレードが第5の鍵暗号化鍵又は第4の鍵暗号化鍵で更に暗号化された場合、組み込み機器104は、ファームウェア鍵を使用してファームウェアアップグレードを復号化する前に、第5の鍵暗号化鍵又は第4の鍵暗号化鍵で暗号化されたファームウェアアップグレードを更に復号化してもよい。組み込み機器104は、ファームウェアアップグレードを使用してファームウェアの現在のバージョンを更新する(318)。例えば、組み込み機器104は、現在のファームウェアをファームウェアアップグレードで上書きしてもよい。
【0071】
図4は、ファームウェアアップグレードを安全に取得及び復号化するためにコントローラ106に実装されたプロセス400の流れ図である。適切にプログラムされた、図1のOTAアップグレードシステム100のコントローラ106の一つ以上のコンピュータ又はデータ処理装置、例えば、プロセッサ124は、ファームウェアアップグレードを取得及び復号化してもよい。
【0072】
コントローラ106は、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を取得する(402)。コントローラ106は、組み込み機器104が間接オンラインモード又は間接オフラインモードに設定されているときに、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を受信する。コントローラ106は、クラウド-コントローラデバイスセッション鍵を使用して、暗号化されたファームウェアアップグレードを、確立された接続を介して受信してもよい。
【0073】
コントローラ106は、ファームウェアバージョン番号及び関連する有効期限のリストをサーバ102から取得してもよい(403)。コントローラ106は、後に組み込み機器104に供給するためにファームウェアバージョン番号及び関連する有効期限のリストを格納してもよい。いくつかの実装形態では、ファームウェアバージョン番号及び関連する有効期限のリストは、サーバ102によって署名されていてもよい、及び/又は、コントローラ106は、ファームウェアバージョン番号及び関連する有効期限のリストにデジタル署名してもよい。
【0074】
コントローラ106は、サーバ公開鍵を格納及び/又は取得し、デジタル署名を検証するためにサーバ公開鍵を使用してもよい(404)。一つ以上の鍵を、例えば、セキュアエレメント132に格納してもよい。次に、組み込み機器104が間接オフラインモード又は間接オンラインモードに設定されている場合、コントローラ106は、クラウド-コントローラデバイスセッション鍵のような第3の鍵暗号化鍵を使用して、暗号化されたファームウェア鍵を復号化する(406)。ファームアップグレードが第3の鍵暗号化鍵で暗号化されている場合、コントローラ106は、第3の鍵暗号化鍵を使用してファームウェアアップグレードを復号化してもよい。
【0075】
ファームウェア鍵が事前暗号化されたままであるので、コントローラ106は、ファームウェア鍵にアクセスできず、ファームウェア鍵がないと、コントローラ106は、ファームウェアアップグレードにアクセスすることができない。
【0076】
第3の鍵暗号化鍵を使用してファームウェア鍵が復号化されると、コントローラ106は、暗号化されたファームウェアアップグレード及び事前暗号化されたファームウェア鍵をメモリ126及び/又はセキュアエレメント132内に格納してもよい(408)。したがって、例えば、組み込み機器104が間接オフラインモードであるときのように暗号化されたファームウェアアップグレード及び/又は事前暗号化されたファームウェア鍵を組み込み機器104に送信するために、コントローラ106を組み込み機器104に同時に接続する必要はない。
【0077】
コントローラ106が、ファームウェアアップグレード及び/又はファームウェア鍵を組み込み機器104に送信又は供給する準備ができているとき、コントローラ106は、コントローラ-組み込み機器鍵のような第5の鍵暗号化鍵を使用して、事前暗号化されたファームウェア鍵を再暗号化する(410)。コントローラは、セキュリティを強化するために、暗号化されたファームウェアアップグレードを第5の鍵暗号化鍵で更に暗号化してもよいが、これは通常は必要でない。
【0078】
コントローラ106は、コントローラ-組み込み機器セッション鍵を使用して接続を確立する(412)。コントローラ106は、コントローラ-組み込み機器セッションを使用して接続を確立してもよい。事前暗号化されたファームウェア鍵が再暗号化されると、コントローラ106は、暗号化されたファームウェアアップグレード及び暗号化されたファームウェア鍵を組み込み機器104に伝送、送信又は供給する(414)。コントローラ106は、組み込み機器104がネットワーク138上で利用可能になったときにファームウェアアップグレード及びファームウェア鍵を伝送してもよい。コントローラ106は、接続が確立されている間、ファームウェアバージョン番号及び関連する有効期限のリストを組み込み機器104に供給又は配信してもよい。
【0079】
図5A及び図5Bは、図1のOTAシステムが互いに異なるモードであるときの暗号化されたファームウェアアップグレード及び/又は暗号化されたファームウェア鍵を示す。図5Aは、OTAシステム100が直接モードにあるときにファームウェア鍵504を使用して暗号化されたファームウェアアップグレード502を示す。さらに、ファームウェア鍵504は、直接モードでのクラウド-組み込み機器セッション鍵のような鍵暗号化鍵を使用して暗号化される。
【0080】
図5Bは、ファームウェア鍵504及び事前暗号化されたファームウェア鍵504を使用して暗号化されたファームウェアアップグレード502を示す。ファームウェア鍵504は、OTAシステム100がそれぞれ間接オフラインモード又は間接オンラインモードにあるときにそれぞれ一般組み込み機器鍵又はクラウド-組み込み機器鍵を使用して事前暗号化されてもよい。次に、ファームウェア鍵504は、クラウド-コントローラデバイスセッション鍵又はコントローラ-組み込み機器セッション鍵のような他の鍵暗号化鍵を使用して更に暗号化される。
【0081】
明細書及び特許請求の範囲を通じて使用される場合、「A又はBの少なくとも一つ」は、「A」のみ、「B」のみ又は「A及びB」を含む。方法/システムの例示的な実施形態を、例示的な様式で開示した。したがって、全体を通して使用される用語は、非限定的な方法で解釈する必要がある。当業者は、ここでの教示に対する僅かな修正を思い浮かべるが、ここで保証される特許の範囲内で限定されることを意図するものは理想的には貢献される技術の神父の範囲内にあるそのような全ての実施形態であること及び添付した特許請求の範囲及びその等価物を除いて範囲が限定されないことを理解すべきである。
図1
図2
図3
図4
図5A
図5B
【国際調査報告】