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

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

▶ シフトファイブ・インコーポレーテッドの特許一覧

特許7185098コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止
<>
  • 特許-コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止 図1
  • 特許-コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止 図2
  • 特許-コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止 図3
  • 特許-コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止 図4
  • 特許-コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止 図5A
  • 特許-コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止 図5B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-28
(45)【発行日】2022-12-06
(54)【発明の名称】コンピューティングデバイス間の不正なファームウェアまたはソフトウェアアップグレードの受動的な監視および防止
(51)【国際特許分類】
   G06F 21/57 20130101AFI20221129BHJP
   G06F 21/64 20130101ALI20221129BHJP
【FI】
G06F21/57 320
G06F21/64
【請求項の数】 21
(21)【出願番号】P 2022519352
(86)(22)【出願日】2020-09-23
(65)【公表番号】
(43)【公表日】2022-10-12
(86)【国際出願番号】 US2020052133
(87)【国際公開番号】W WO2021061715
(87)【国際公開日】2021-04-01
【審査請求日】2022-04-22
(31)【優先権主張番号】62/905,725
(32)【優先日】2019-09-25
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】522118296
【氏名又は名称】シフトファイブ・インコーポレーテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】マイケル・エー・ウェイガンド
(72)【発明者】
【氏名】ジョシュア・エー・ロスピノソ
(72)【発明者】
【氏名】ジェームズ・イー・コレンティ
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2019-160107(JP,A)
【文献】特開2018-160786(JP,A)
【文献】国際公開第2001/024012(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
データバスに接続された2つ以上のコンピューティングデバイス間で、無許可のソフトウェアまたはファームウェアのアップグレードを防止するための方法であって、
前記データバスに結合された少なくとも1つの対象のコンピューティングデバイスに許可されたアップグレードイメージのための暗号化メタデータを、前記データバスに結合されたメンテナンスデバイスによって送信するステップであって、前記暗号化メタデータがアップグレードイメージのマニフェストリストを有する、ステップと、
前記データバス上でのストライプアップデートハッシュの、前記メンテナンスデバイスからの送信を、前記データバスに結合されたセキュリティアプライアンスによって監視するステップと、
前記メンテナンスデバイスによって送信されたアップグレードイメージファイルに対応する署名されたストライプハッシュを、前記セキュリティアプライアンスに提供するステップと、
前記マニフェストリスト内の情報を使用して前記ストライプアップデートハッシュを検証するステップと、
前記ストライプアップデートハッシュの少なくとも1つが検証に失敗したとき、無許可のアップロードが試行されたことを前記セキュリティアプライアンスによって記録するステップと、
前記試行された無許可のアップロードに応じて少なくとも1つの影響緩和措置を実行するステップと
を備える、方法。
【請求項2】
前記署名されたストライプハッシュの少なくとも1つが検証に失敗したとき、方法はさらに、
前記セキュリティアプライアンスがパッシブモードに設定されているとき、無許可のアップロードを示す、前記メンテナンスデバイスに対する失敗コードをキューに入れるステップと、
前記セキュリティアプライアンスがアクティブモードに設定されているとき、前記メンテナンスデバイスから前記対象のコンピューティングデバイスへのさらなる送信を防止するために、前記データバスに介入するステップと
を備える、請求項1に記載の方法。
【請求項3】
前記データバスに介入するステップは、前記セキュリティアプライアンスが前記データバスに干渉信号を送信するステップを含み、前記干渉信号が、前記メンテナンスデバイスから前記対象のコンピューティングデバイスへの送信を中断するように構成される、請求項2に記載の方法。
【請求項4】
処理すべきさらなる署名されたストライプハッシュがあるかどうかを判定するステップと、
最後の署名されたストライプハッシュが受信されたとき、方法を停止するステップと、
前記最後の署名されたストライプハッシュがまだ受信されていないとき、アップデートイメージ送信のために前記データバスを引き続き監視するステップと
をさらに備える、請求項1に記載の方法。
【請求項5】
データ検証処理の一部としてデータ整合性チェックを実行して、前記メンテナンスデバイスから受信したアップデートイメージ送信が破損していないことを確認するステップと、
前記データ整合性チェックが失敗したとき、前記対象のコンピューティングデバイスによって、前記アップデートイメージ送信を拒否するとともに前記方法を停止するステップと
をさらに備える、請求項1に記載の方法。
【請求項6】
前記ストライプアップデートハッシュの少なくとも1つが検証に失敗するとき、前記対象のコンピューティングデバイスの再プログラミングが必要かどうかを判定するステップと、
前記対象のコンピューティングデバイスの再プログラミングが必要であると判定されるとき、前記セキュリティアプライアンスによって、1つまたは複数の最後の既知の有効アップデートイメージを前記対象のコンピューティングデバイスに送信するステップと、
前記対象のコンピューティングデバイスの再プログラミングが必要でないと判定されるとき、方法を停止するステップと
をさらに備える、請求項1に記載の方法。
【請求項7】
前記署名されたストライプハッシュを検証するステップは、前記メンテナンスデバイスによって送信された前記ストライプアップデートハッシュを、前記セキュリティアプライアンスに提供された署名されたストライプハッシュと比較し、前記ストライプアップデートハッシュが前記署名されたストライプハッシュに一致するとき、前記セキュリティアプライアンスが前記ストライプアップデートハッシュが有効であると示すステップを含む、請求項1に記載の方法。
【請求項8】
前記マニフェストリストは、イメージバージョン番号、対象のコンピューティングデバイス情報、イメージサイズ、イメージ暗号チャンクサイズ、暗号サポート情報、チャンクされたハッシュおよび/またはチャンクされたハッシュの署名のリスト、前記ストライプアップデートハッシュを生成するために使用されるハッシュ関数のタイプ、公開鍵、認証局(CA)、中間CA鍵チェーンおよびセット、ファイル証明およびハッシュ、およびメタデータの少なくとも1つを含む、請求項1に記載の方法。
【請求項9】
前記セキュリティアプライアンスが、パッシブモードで動作し、暗号化メタデータおよびイメージファイルを受信し、メモリに記録するステップをさらに備える、請求項1に記載の方法。
【請求項10】
前記セキュリティアプライアンスが、既知の鍵を用いて暗号化メタデータをチェックして、メタデータ内の署名を検証するステップと、
前記セキュリティアプライアンスが、検証済みのイメージデータおよび未検証のイメージデータをメモリに記録するステップとをさらに備え、有効な署名が信頼されたアップデートリストに追加され、無効な署名がセキュリティ障害として記録される、請求項9に記載の方法。
【請求項11】
データバスに接続された2つ以上のコンピューティングデバイス間で、無許可のソフトウェアまたはファームウェアのアップグレードを防止するための装置であって、前記装置は、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに結合されたメモリと、
前記少なくとも1つのプロセッサに結合された暗号化エンジンとを備え、
前記暗号化エンジンは、前記データバスに結合された少なくとも1つの対象のコンピューティングデバイスをアップデートするための許可されたアップグレードイメージのための暗号化メタデータを格納し、前記暗号化メタデータがアップグレードイメージのマニフェストリストを有し、
前記少なくとも1つのプロセッサは、
前記データバスに結合されたメンテナンスデバイスからのストライプアップデートハッシュの送信に対して前記データバスを監視し、
前記メンテナンスデバイスによって送信されたアップグレードイメージファイルに対応する署名されたストライプハッシュを取得し、
前記マニフェストリスト内の情報を使用して前記ストライプアップデートハッシュを検証し、
前記ストライプアップデートハッシュの少なくとも1つが検証に失敗したとき、無許可のアップロードが試行されたことを記録し、
前記試行された無許可のアップロードに応じて少なくとも1つの影響緩和措置を実行するように構成される、装置。
【請求項12】
前記署名されたストライプハッシュの少なくとも1つが検証に失敗し、前記装置がパッシブモードに設定されているとき、前記少なくとも1つのプロセッサはさらに、無許可のアップロードを示す、前記メンテナンスデバイスに対する失敗コードをキューに入れるように構成され、
前記署名されたストライプハッシュの少なくとも1つが検証に失敗し、前記装置がアクティブモードに設定されているとき、前記少なくとも1つのプロセッサはさらに、前記メンテナンスデバイスから前記少なくとも1つの対象のコンピューティングデバイスへのさらなる送信を防止するために、前記データバスに介入するように構成される、請求項11に記載の装置。
【請求項13】
前記データバスに介入する際に、前記少なくとも1つのプロセッサは、前記装置に前記データバスに干渉信号を送信させるように構成され、前記干渉信号が、前記メンテナンスデバイスから前記対象のコンピューティングデバイスへの送信を中断するように構成される、請求項12に記載の装置。
【請求項14】
前記少なくとも1つのプロセッサはさらに、
処理すべきさらなる署名されたストライプハッシュがあるかどうかを判定し、
最後の署名されたストライプハッシュが受信されたとき、前記データバスの監視を停止し、
前記最後の署名されたストライプハッシュがまだ受信されていないとき、前記データバスを引き続き監視するようにさらに構成される、請求項11に記載の装置。
【請求項15】
前記少なくとも1つのプロセッサはさらに、
前記メンテナンスデバイスから受信したアップデートイメージ送信が破損していないことを確認するために、データ検証処理の一部としてデータ整合性チェックを実行し、
前記データ整合性チェックが失敗したとき、前記対象のコンピューティングデバイスに、前記アップデートイメージ送信を拒否させるとともに前記データバスの監視を停止させるように構成される、請求項11に記載の装置。
【請求項16】
前記少なくとも1つのプロセッサはさらに、
前記ストライプアップデートハッシュの少なくとも1つが検証に失敗するとき、前記対象のコンピューティングデバイスの再プログラミングが必要かどうかを判定し、
前記対象のコンピューティングデバイスの再プログラミングが必要であると判定されるとき、前記装置に、1つまたは複数の最後の既知の有効アップデートイメージを前記対象のコンピューティングデバイスに送信させ、
前記対象のコンピューティングデバイスの再プログラミングが必要でないと判定されるとき、前記データバスの監視を停止するようにさらに構成される、請求項11に記載の装置。
【請求項17】
前記署名されたストライプハッシュを検証する際に、前記少なくとも1つのプロセッサは、前記メンテナンスデバイスによって送信された前記ストライプアップデートハッシュを、前記装置に提供された署名されたストライプハッシュと比較し、前記ストライプアップデートハッシュが前記署名されたストライプハッシュに一致するとき、前記ストライプアップデートハッシュが有効であると示すように構成される、請求項11に記載の装置。
【請求項18】
前記マニフェストリストは、イメージバージョン番号、対象のコンピューティングデバイス情報、イメージサイズ、イメージ暗号チャンクサイズ、暗号サポート情報、チャンクされたハッシュおよび/またはチャンクされたハッシュの署名のリスト、前記ストライプアップデートハッシュを生成するために使用されるハッシュ関数のタイプ、公開鍵、認証局(CA)、中間CA鍵チェーンおよびセット、ファイル証明およびハッシュ、およびメタデータの少なくとも1つを含む、請求項11に記載の装置。
【請求項19】
前記装置がパッシブモードで動作するとき、前記少なくとも1つのプロセッサが、暗号化メタデータおよびイメージファイルを受信し、前記メモリに記録するように構成される、請求項11に記載の装置。
【請求項20】
前記少なくとも1つのプロセッサがさらに、
既知の鍵を用いて暗号化メタデータをチェックして、メタデータ内の署名を検証し、
検証済みのイメージデータおよび未検証のイメージデータを前記メモリに記録するように構成され、有効な署名が信頼されたアップデートリストに追加され、無効な署名がセキュリティ障害として記録される、請求項19に記載の装置。
【請求項21】
データバスに接続された2つ以上のコンピューティングデバイス間で、無許可のソフトウェアまたはファームウェアのアップグレードを防止するためのコンピュータプログラムであって、前記コンピュータプログラムは、非一時的コンピュータ可読記憶媒体上で具現化されたコンピュータ可読プログラムコードを有し、前記コンピュータ可読プログラムコードは、前記データバスに結合されたセキュリティアプライアンスの少なくとも1つのプロセッサ上で実行されると、前記セキュリティアプライアンスに、
前記データバスに結合された少なくとも1つの対象のコンピューティングデバイスをアップデートするための許可されたアップグレードイメージのための暗号化メタデータを格納することであって、前記暗号化メタデータがアップグレードイメージのマニフェストリストを有する、ことと、
メンテナンスデバイスからのストライプアップデートハッシュの送信に対して前記データバスを監視することと、
前記メンテナンスデバイスによって送信されたアップグレードイメージファイルに対応する署名されたストライプハッシュを取得することと、
前記マニフェストリスト内の情報を使用して前記ストライプアップデートハッシュを検証することと、
前記ストライプアップデートハッシュの少なくとも1つが検証に失敗したとき、無許可のアップロードが試行されたことを記録することと、
前記試行された無許可のアップロードに応じて少なくとも1つの影響緩和措置を実行することと
を行わせるように構成される、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる「Passive Monitoring and Prevention of Unauthorized Firmware or Software Upgrades Between Computing Devices」と題する2019年9月25日に出願された仮出願番号62/905,725の優先権を主張する。
【0002】
本発明は、一般に、電気、電子、およびコンピュータの分野に関し、より詳細には、コンピューティングデバイス間のセキュアなファームウェアまたはソフトウェアアップグレードに関する。
【背景技術】
【0003】
他の要因の中でも特に、エラーあるいは悪意のあるアクティビティ(改ざんなど)が原因で、ファームウェア、ソフトウェア、および/または情報への不正な変更が起こり得る。ファームウェアは、ハードウェアデバイスに組み込まれたソフトウェアであり、一般に、デバイスがどのように機能するかを制御するコマンドのセットで構成されている。ソフトウェアは、例えば、オペレーティングシステム(カーネル、ドライバなどのキーとなる内部コンポーネントを伴う)、ミドルウェア、およびアプリケーションを含む。ファームウェアは、例えば、基本入出力システム(BIOS)を含む。情報は、例えば、情報に関連したセキュリティ属性などのメタデータを含む。
【0004】
ベンダーがあるデバイスに対するファームウェアの最新バージョンをリリースすると、デバイス内の既存ファームウェアは最新のリリースにアップデートされる。このプロセスはファームウェアアップグレードとしてよく知られている。従来、シリアルデータバスまたは類似のネットワークアーキテクチャを介して共に接続されたコンピューティングデバイス(例えば、電子制御ユニット(ECU))のファームウェアまたはソフトウェアをアップデートすることは一般に、バスまたはネットワークに一時的に接続されたメンテナンスコンピュータからファームウェアまたはソフトウェアアップデートファイルを含むバイナリイメージを、アップデートされるべき対象のコンピューティングデバイスに転送することを含む。イメージとしても知られるファームウェアまたはソフトウェアアップデートファイルは通常、インターネットダウンロードやメールコンパクトディスク(CD)配布などの電子的または物理的手段を介して、サプライチェーン全体に配布される。多くのレガシーのECUが、ソフトウェア検証スキームで裏打ちされた公開鍵インフラストラクチャ(PKI)に一般に採用されているようなソフトウェアサイニング署名を暗号的に検証できないため、攻撃者は、侵害されたメンテナンスデバイスを悪用したり、サプライチェーンイメージプロセスを攻撃したりすることで、無許可のファームウェアまたはソフトウェアを対象のECUに任意にアップロードできる。このことは重大なセキュリティの脆弱性と懸念をもたらす。
【発明の概要】
【課題を解決するための手段】
【0005】
本発明は、その1つまたは複数の実施形態に明らかにするように、データバスまたは(例えば、通信ネットワークなど)ワイヤードまたはワイヤレスのいずれかの他の接続配置を介して接続された2つ以上のコンピューティングデバイス間での無許可のファームウェアおよび/またはソフトウェアアップグレードのイメージ送信を受動的に監視、警告、および防止するためのメカニズムを有利に提供する。本発明の1つまたは複数の実施形態による装置は、コンピューティングデバイスの既存のハードウェアまたはソフトウェアを変更せずに、有効な暗号署名を使用して、コンピューティングデバイス(例えば、ECU、列線交換ユニット(LRU)など)にアップロードされたファームウェアおよび/またはソフトウェアイメージを検証するのに有利である。この技法は、さまざまな顧客の要件で使用するためのパッシブおよび/またはアクティブな動作モードをサポートする。
【0006】
本発明の一実施形態では、データバス上に接続された2つ以上のコンピューティングデバイス間で無許可のソフトウェアまたはファームウェアアップグレードを防止するための代表的な装置は、暗号化エンジン、メモリ、および暗号化エンジンおよびメモリに結合された少なくとも1つのプロセッサを備える。暗号化エンジンは、データバスに結合された少なくとも1つの対象のコンピューティングデバイスをアップデートするための許可されたアップグレードイメージのための暗号化メタデータを格納する。暗号化メタデータは、アップグレードイメージのマニフェストリストを含む。プロセッサは、メンテナンスデバイスからストライプアップデートハッシュの送信のためにデータバスを監視し、メンテナンスデバイスによって送信されたアップグレードイメージファイルに対応する署名されたストライプハッシュを受信し、マニフェストリストの情報を使用してストライプアップデートハッシュを検証し、ストライプアップデートハッシュの少なくとも1つが検証に失敗すると、無許可のアップロードが試行されたことを記録し、試行された無許可のアップロードに応じて影響緩和措置を実行するように構成される。
【0007】
本発明の別の実施形態では、データバス上に接続された2つ以上のコンピューティングデバイス間で無許可のソフトウェアまたはファームウェアアップグレードを防止するための代表的な方法は、データバスに結合されたメンテナンスデバイスによって、データバスに結合された少なくとも1つの対象のコンピューティングデバイスに許可されたアップグレードイメージのための暗号化メタデータを送信するステップであって、暗号化メタデータがアップグレードイメージのマニフェストリストリストを含む、ステップと、データバスに結合されたセキュリティアプライアンスによって、メンテナンスデバイスによるデータバス上のストライプアップデートハッシュの送信を監視するステップと、メンテンナンスデバイスによって送信されたアップグレードイメージファイルに対応する署名されたストライプハッシュをセキュリティアプライアンスに提供するステップと、マニフェストリストの情報を使用してストライプアップデートハッシュを検証するステップと、ストライプアップデートハッシュの少なくとも1つが検証に失敗すると、セキュリティアプライアンスによって無許可のアップロードが試行されたことを記録するステップと、試行された無許可のアップロードに応じて影響緩和措置を実行するステップとを含む。
【0008】
本発明のさらに別の実施形態では、データバス上に接続された2つ以上のコンピューティングデバイス間で無許可のソフトウェアまたはファームウェアアップグレードを防止するための代表的なコンピュータプログラム製品を提供する。コンピュータプログラム製品は、具現化されたコンピュータ可読プログラムを有する非一時的コンピュータ可読記憶媒体を含み、コンピュータ可読プログラムコードは、データバスに結合されたセキュリティアプライアンスの少なくとも1つのプロセッサ上で実行されると、セキュリティアプライアンスに、データバスに結合された少なくとも1つの対象のコンピューティングデバイスをアップデートするための許可されたアップグレードイメージのための暗号化メタデータを格納することであって、暗号化メタデータが、アップグレードイメージのマニフェストリストを含む、ことと、メンテナンスデバイスからストライプアップデートハッシュの送信のためにデータバスを監視することと、メンテナンスデバイスによって送信されたアップグレードイメージファイルに対応する署名されたストライプハッシュを取得することと、マニフェストリストの情報を使用してストライプアップデートハッシュを検証することと、ストライプアップデートハッシュの少なくとも1つが検証に失敗すると、無許可のアップロードが試行されたことを記録することと、試行された無許可のアップロードに応じて影響緩和措置を実行することとを行わせる。
【0009】
本明細書に使用されるように、アクションを「促進すること」は、アクションを実行すること、アクションをより容易にすること、アクションの実行を助けること、あるいはアクションを実行することを含む。したがって、限定ではなく例として、1つのプロセッサ上で実行されている命令は、リモートのプロセッサ上で実行する命令によって、アクションを実行または実行を援助する適切なデータまたはコマンドを送信することによって実行されるアクションを促進することがある。誤解を避けるために、アクターがアクションを実行する以外の方法でアクションを促進する場合でも、アクションは何らかのエンティティまたはエンティティの組み合わせによって実行される。
【0010】
本発明の1つまたは複数の実施形態またはその要素は、本明細書に記載の1つまたは複数の方法のステップを実行するための手段の形態で実装され、手段は、(i)ハードウェアモジュール、(ii)コンピュータ可読媒体(または多数のそのような媒体)に格納され、ハードウェアプロセッサ上で実装されるソフトウェアおよび/またはソフトウェアモジュール、あるいは、(iii)(i)および(ii)の組み合わせを含むことができ、(i)~(iii)のいずれかは、本明細書に記載の特定の技法を実装する。
【0011】
本明細書に開示された技法は、実質的に有益な技術的効果を提供できる。限定ではなく例として、本発明の実施形態は、単独または組み合わせて、以下の利点の1つまたは複数を提供できる:-コンピューティングデバイスの既存のハードウェアまたはソフトウェアを変更せずに、2つ以上のコンピューティングデバイス間での無許可のファームウェアおよび/またはソフトウェアアップグレードイメージの送信を防止する;-さまざまな顧客の要件およびアプリケーションで使用するためのパッシブおよび/またはアクティブな動作モードをサポートする;-コンピューティングデバイスへの「ラストマイル」(すなわち、中央ハブから最終目的地へのソフトウェアの移動)の間に許可され署名されたソフトウェアロードの検査と検証を可能にする;-対象のコンピューティングデバイスへのアップデートの転送を完了する前に、無効なソフトウェアまたはファームウェアアップデートを識別および警告および/または停止することができる;-本発明の態様によるメッセージ認証手段の利益を得るために既存のネットワークアーキテクチャへの変更は不要である;-新しいアプローチは、既存のセキュリティプリミティブとベストプラクティスを利用し、OEMから対象のECU/LRUに至るまで暗号的に安全なソフトウェアを可能にする;-ファームウェアおよび/またはソフトウェアアップデートプロセスに大幅に時間を増やさない。
【0012】
これらおよび他の特徴および利点は、添付の図面と関連して読まれることになる、本明細書の例示的な実施形態の以降の詳細な説明から明らかになるであろう。
【0013】
本発明の非限定的かつ非網羅的な実施形態が、例としてのみ提示された以降の図面を参照して説明され、類似の参照番号は(使用されるとき)、そうでない場合と特定されない限りいくつかの図面を通して対応する要素を示す。
【図面の簡単な説明】
【0014】
図1】本発明の1つまたは複数の実施形態による態様を組み込むように修正され得る、ECUおよび/またはLRUをアップグレードするための例示的なシステムの少なくとも一部を示すブロック図である。
図2】本発明の実施形態による、2つ以上の接続されたデバイスの間で無許可のソフトウェアまたはファームウェアのアップグレードを監視および防止するための例示的なシステムの少なくとも一部を示すブロック図である。
図3】本発明の実施形態による、例示的なセキュリティアプライアンスの少なくとも一部を示すブロック図である。
図4】本発明の1つまたは複数の実施形態によって利用され得る、ファームウェアイメージの例示的なストライピングを概念的に示す図である。
図5A】本発明の実施形態による、データバスまたはネットワーク上に接続された2つ以上のコンピューティングデバイス間で無許可のソフトウェアまたはファームウェアのアップグレードを監視および防止するための例示的な方法の一部を示すフロー図である。
図5B】本発明の実施形態による、データバスまたはネットワーク上に接続された2つ以上のコンピューティングデバイス間で無許可のソフトウェアまたはファームウェアのアップグレードを監視および防止するための例示的な方法の一部を示すフロー図である。
【発明を実施するための形態】
【0015】
図中の要素は、単純化および明確化のために説明されることが理解される。商業的に実現可能な実施形態において有用または必要であり得る、一般的であるが十分に理解されている要素は、図示された実施形態のより障害物の少ない図のために示されない場合がある。
【0016】
データバスまたは他の通信リンク上で共に接続されたコンピューティングデバイスの間で無許可のファームウェアまたはソフトウェアのアップグレードを受動的に監視して阻止するための例示的な方法、装置、およびシステムの文脈で、本開示の原理が説明される。本発明の実施形態は、兵器システムおよび/または他のセキュアシステムアプリケーションに特によく適している。しかしながら、本明細書に例示的に示され、説明される特定の方法および/または装置は、限定的ではなく例示的であると見なされるべきであることが理解されるべきである。むしろ、本明細書の教示を与えられた当業者には、添付の特許請求の範囲内である、示された実施形態に対して多数の修正を行うことができることが明らかになるであろう。すなわち、本明細書に示され、説明される実施形態に関する制限は、意図されていないか、または推測されるべきではない。
【0017】
従来のネットワークアーキテクチャで動作する最新の兵器システムやその他のセキュアシステムは、現在、サイバー攻撃からほとんどまたはまったく保護されていない。攻撃者は、侵害されたメンテナンスデバイスを悪用したり、サプライチェーンイメージプロセスを攻撃したりすることによって、ネットワークに接続された対象のコンピューティングデバイス(電子制御ユニット(ECU)など)に無許可のファームウェアまたはソフトウェアを任意にアップロードできる。ファームウェア、ソフトウェア、および/または情報に対するそのような不正な変更は、重大なセキュリティの脆弱性と懸念を引き起す。高度な持続的脅威は、主要な兵器システムから取得した技術データを活用して、同等に近い紛争での非対称的な戦力計画を可能にするサイバー能力を展開できる。攻撃者は、選択した場所と時間で、兵器システムの艦隊全体を劣化、無効化、拒否、破壊、または操作することができる。米国会計検査院(GAO)は、国防総省(DoD)の兵器システムがサイバー攻撃に対して非常に脆弱であると米国上院に報告している。(本明細書に参照により組み込まれる、「Weapon Systems Cybersecurity: DOD Just Beginning to Grapple with Scale of Vulnerabilities」と題された、米国上院軍事委員会への報告、米国会計検査院、2018年10月、GAO-19-128を参照のこと)。
【0018】
多くの兵器システムは、冗長シリアルデータバスを利用して、列線交換ユニット(LRU)とよく呼ばれる、組み込みコンピューティングデバイス間で重要な情報を通信する。LRUを使用すると、兵器システムは、例えば、目標捕捉と遂行、操縦、通信などの基本的なタスクを実行できる。シリアルバスは非常に信頼性があるが、データメッセージの認証または暗号化を提供するようには設計されていない。このセキュリティの脆弱性を軽減するために、ほとんどの既存のLRUは、バスを介して配信される再プログラミングイメージの暗号署名、保存中のデータ暗号化、暗号化された通信など、モデムセキュリティプロトコルと手順を実装するための大幅な再設計を必要とする。しかしながら、既存の兵器システムをより安全なLRUで再設計、統合、テスト、およびフィールド化することは、非常にコストがかかるため、実行可能な解決策ではない。
【0019】
データバスまたは他のネットワーク接続を介して接続された2つ以上のコンピューティングデバイス(例えば、ECU、LRUなど)間で無許可のファームウェアまたはソフトウェアのアップグレードイメージ送信を防止するために、本発明は、1つまたは複数の実施形態において明示するように、コンピューティングデバイスの既存のハードウェアまたはソフトウェアを変更することなく、検証暗号化署名を使用してコンピューティングデバイスにアップロードされたファームウェアまたはソフトウェアイメージを検証するためのメカニズムを有利に提供する。この技法は、さまざまな顧客の要件で使用するためのパッシブおよび/またはアクティブな動作モードをサポートする。
【0020】
図1は、本発明の1つまたは複数の実施形態による態様を組み込むために変更され得るLRUおよび/またはECUをアップグレードするための例示的なシステム100の少なくとも一部を示すブロック図である。システム100は、共通データバス112(例えば、MIL-STD-1553またはコントローラエリアネットワーク(CAN)バス)または他の接続アレンジメント(ワイヤードまたはワイヤレス)を介して、複数のLRU、104および106、および複数のECU、108および110に動作可能に結合されたメンテナンスコンピューティングデバイス102を含む。メンテナンスコンピューティングデバイス102またはその機能の少なくとも一部は、いくつかの実施形態では、データバス112に接続された指定された1つのLRUを使用して実現できる。図1に示される例示的なシナリオでは、悪意のあるソフトウェアアップデートモジュール114は、例えば、メンテナンスコンピューティングデバイス102の特定のセキュリティ脆弱性を悪用して、データバス112へのアクセスを得て、悪意のあるコードを対象のLRUにアップロードすることによって、接続されたLRU/ECU(例えば、LRU110)の1つまたは複数を攻撃および侵害する。他のシナリオでは、悪意のあるソフトウェアアップデートモジュール114は、侵害されたLRU/ECUを介してデータバス112へのアクセスを獲得することがある。
【0021】
図2を参照すると、ブロック図は、本発明の実施形態による、2つ以上の接続されたデバイス間で無許可のファームウェアまたはソフトウェアのアップグレードを監視および防止するための例示的なシステム200の少なくとも一部を示す。図1に示した例示的なシステム100と同様に、システム200は、共通データバス112(例えば、MIL-STD-1553またはコントローラエリアネットワーク(CAN)バス)または他の接続アレンジメント(ワイヤードまたはワイヤレス)を介して、複数のLRU、104および106、および複数のECU、108および110に動作可能に結合されたメンテナンスコンピューティングデバイス102を含む。システム200はさらに、データバス112に結合された代表的なセキュリティモジュール202を含む。セキュリティモジュール202は、セキュリティアプライアンスを備えるとともに、他の関連した機能モジュールを含むことができ、データバス112または他の接続アレンジメント(ワイヤードまたはワイヤレス)を介して、2つ以上のデバイス(例えば、LRU/ECU104、106、108、110)の間で無許可のファームウェアまたはソフトウェアのアップグレードイメージ送信を監視、警告、および1つまたは複数の実施形態では防止、そうでなければ影響を緩和する。
【0022】
1つまたは複数の実施形態では、セキュリティモジュール202は、無許可のファームウェアまたはソフトウェアの送信についてデータバス112を受動的に監視するとともに、それへの応答で1つまたは複数のアクションを開始するように構成される。例えば、データバス112上でそのような無許可のアクティビティを検出すると、セキュリティモジュール202は、メンテナンスコンピューティングデバイス102またはデータバスに接続された他のデバイスに通知を送信して、1つまたは複数の接続されたデバイス(例えば、LRU/ECU104、106、108、110)への無許可のファームウェアまたはソフトウェアのアップグレードイメージの送信の試行をユーザに警告できる。1つまたは複数の実施形態では、セキュリティモジュール202は、前述した悪意のあるアクティビティを検出すると、例えば、試行された送信204を妨害するなどによって、無許可のファームウェアまたはソフトウェアの送信を防止するように構成される。
【0023】
本発明の1つまたは複数の態様は、データバスを介して送信されるとき、ソフトウェアまたはファームウェアのサードパーティ検証を実行する高速でシンプルな方法を提供するハッシュ化を利用する。ハッシュ化アルゴリズムは、データを固定サイズに凝縮する数学関数(ハッシュ関数と呼ばれる)で、出力結果は、ハッシュまたはハッシュ値と呼ばれる。ハッシュ化は、イメージがソース媒体と同じであることを検証するために暗号化で広く採用され、これは、ファイルのデジタルフィンガープリントに類似し、これは、内容が異なる2つのイメージファイルが同じハッシュを生成する可能性が非常に低いためである。ハッシュは、コンピュータがデータのファイルおよびデータの文字列に対して、識別、比較、そうでなければ計算を実行することを望む状況で便利である。元のファイルを比較するよりも、コンピュータがまずハッシュを計算してから値を比較する方が簡単である。ハッシュの長さは一般に使用されているハッシュのタイプに依存する。当業者に知られるように、MD5(メッセージダイジェスト5)、SHA-1(セキュアハッシュアルゴリズム1)、SHA-2(セキュアハッシュアルゴリズム2)、SHA-256(セキュアハッシュアルゴリズム256)など、一般に使用されるいくつかのハッシュ化アルゴリズムがある。暗号化セキュアハッシュ関数は、1つまたは複数の実施形態では、セキュリティモジュール202で利用されるのが好ましい。
【0024】
図3は、本発明の実施形態による、例示的なセキュリティアプライアンス300の少なくとも一部を示すブロック図である。セキュリティアプライアンス300は、図2に示す例示的なセキュリティモジュール202の少なくとも一部を実施するために使用され、好ましくは、データバス306あるいは代替的な接続手段を介して動作可能に結合された少なくとも1つのプロセッサ302およびメモリ304を含む。セキュリティアプライアンス300のバスコントローラ308、好ましくは、バス入出力(I/O)デバイスは、データバス306に結合され、標準データ通信プロトコル(例えば、MIL-STD-1553バス、CANバスなど)を使用するなどして、バスに接続された機能モジュール間でのデータ転送を制御するように構成される。
【0025】
セキュリティアプライアンス300はさらに、データバス306に動作可能に結合され、セキュリティアプライアンスが通信し得るI/Oデバイス312(例えば、キーボード、マウス、外部ディスクドライブ、フラッシュメモリなど)とデータバスとの間のインターフェースを提供するように適合された入出力(I/O)コントローラ310を含む。同様に、ディスプレイコントローラ314は、データバス306に動作可能に結合され、セキュリティアプライアンス300が通信し得るディスプレイデバイス316(液晶ディスプレイ(LCD))とデータバスとの間のインターフェースを提供するように適合される。
【0026】
セキュリティアプライアンス300に含まれる暗号化エンジン318は、データバス306に結合され、プロセッサ302と動作可能に通信する。プロセッサ302に関して、暗号化エンジン318は好ましくは、許可された関係者のみがそれにアクセスできるようにメッセージまたは情報を暗号化するように構成される。標準の暗号化スキームでは、プレーンテキストと呼ばれる目的のメッセージまたは情報は、サイファと呼ばれる暗号化アルゴリズムを使用して暗号化され、復号された後にのみ読み取ることができる暗号文を生成する。暗号化スキームは通常、アルゴリズムによって生成された疑似ランダム暗号化キー(対称または公開暗号化キーなど)を使用する。
【0027】
複雑度を下げて図2に示したセキュリティモジュール202の処理速度を上げる方法として、とりわけ有益であるのが、1つまたは複数の実施形態による、ハッシュに対するデータの管理可能なチャンクを作成するために、ソフトウェアまたはファームウェアのアップグレードイメージを複数のブロックまたはストライプに分割することである。図4は、本発明の1つまたは複数の実施形態によって利用され得るファームウェアイメージの例示的なストライピングを概念的に示している。図4に示すように、ソフトウェアまたはファームウェアのアップグレードイメージ402は、複数のN個(Nは整数)のデータブロックまたはストライプ404に分割され、対応するストライプイメージ406を生成する。データストライピングは、ファームウェアアップグレードイメージを発する組織によって実行される必要はないが、好ましくは、データストライピングは、アップロードのためのファームウェアアップグレードイメージを作成する組織(例えば、相手先ブランド製造(OEM))によって扱われる。データストライプ404の各々のサイズは調整可能であり、本発明の実施形態によって限定されない。オプションとして、1つまたは複数の代替の実施形態では、データストライプ408の最終サブセットは、悪意のあるコード検出を容易にするようにストライプイメージ406の先行するデータストライプ404と異なるサイズ(例えば、小さいまたは大きい)であってよい。本発明の実施形態は、データストライプ408の最終サブセットにおける特定のサイズおよび/または特定の数のデータストライプに限定されない。このオプションのシナリオでは、全体のストライプイメージ406は、データストライプ404およびデータストライプの最終サブセット408とから成る。
【0028】
ファームウェアアップグレードイメージ402のストライピングとともに、データストライプ404の各々は、1つまたは複数の実施形態では、個別にハッシュ化されて、対応するストライプされ署名されたハッシュ410、412、および414を生成し、ハッシュ410は、データストライプ1に対応し、ハッシュ412はデータストライプ2に対応し、ハッシュ414はデータストライプ3に対応するなどである。「署名されたハッシュ」は、検証されたデータハッシュを指し、ハッシュは、ユーザの秘密鍵によって署名され、署名者の公開鍵が、署名を確認できるように公開されている。本発明の実施形態に関する使用に適するハッシュを署名するプロセスは、例えば、ウィキペディアの記事「Electronic Signature」(https://en.wikipedia.org/wiki/Electronic_signature)に記載され、あらゆる目的でその開示全体が参照により本明細書に組み込まれる。ハッシュを署名するための他のプロセスは当業者に知られている。
【0029】
データスループットおよび効率の改善のために、ファームウェアイメージのハッシュ化は、開示された方法では複数のプロセッサを使用して実行され得る。本発明の1つまたは複数の実施形態では、署名されたハッシュ410、412、414および対応する署名は、サードパーティのコンピューティングデバイス(例えば、セキュリティアプライアンス)が署名されたハッシュを監視および収集できるように、マニフェストリストの一部として対応するファームウェアのアップグレードイメージ402の前に、システムデータバス(例えば、図2の112)を介して送信される。続いて、サードパーティのコンピューティングデバイスは、署名されたハッシュを受信し、それらをマニフェストリストのハッシュと比較して、受信したイメージの権限を検証する(すなわち、ハッシュチェック)。
【0030】
各ソフトウェアまたはファームウェアイメージのマニフェストリストは、イメージに関連する情報を含む。マニフェストリストは、好ましくは、ハッシュおよび対応する署名を含む。いくつかの実施形態では、アップグレードイメージに関連するすべてのハッシュを検証する単一の署名であることがある。代替的に、各ハッシュが個別に署名されてもよい。マニフェストリスト中のそのような情報は、マニフェストリストに含まれる情報の中でも、例えば、イメージのバージョン番号、対象のECU/LRU情報、イメージサイズ、イメージの暗号チャンクサイズ、暗号サポート情報(例えば、チャンクをハッシュ化するために使用されている特定のタイプの一方向性関数)、チャンクハッシュのリスト、暗号サポート情報セクションに指定された所定のアルゴリズムによるハッシュ化、公開鍵、認証局(CA)、任意の中間CA鍵チェーンおよびセット、およびファイル証明およびハッシュを含む。マニフェストリストはまたメタデータを含み得る。
【0031】
図5Aおよび5Bは、本発明の実施形態による、データバスまたはネットワーク上に接続された2つ以上のコンピューティングデバイス(例えば、ECUおよび/またはLRU)間で無許可のファームウェアまたはソフトウェアのアップグレードイメージ送信を受動的に監視および防止するための例示的な方法500の少なくとも一部を示すフロー図である。この方法500は、好ましくは、保護されている1つまたは複数のコンピューティングデバイスが接続された同じデータバスに動作可能に結合されているセキュリティアプライアンス(例えば、図2の代表的なセキュリティモジュール202に常駐する、または図3のセキュリティアプライアンス300)によって実施される。
【0032】
方法500を開始する前に、信頼されたルート鍵/証明書によって署名されているベンダー固有の中間鍵/証明書が、接続されたコンピューティングデバイスに分配されることが好ましいことが理解されよう。ベンダーは、中間鍵/証明書を使用して、かつ、以降でより詳細に記述するように、システムにイメージアップロードをするソフトウェア/ファームウェアアップローダ検証プロセスの間に送信される特定のブロードキャストメッセージを生成するように構成された所定のアプリケーションを実行することによって、ソフトウェアまたはファームウェアのアップグレードイメージに署名および認証する。アップグレードイメージは、当業者に知られるように、既存のサプライチェーンメカニズムおよびプロセスを通して分配されることが好ましい。
【0033】
図5Aを参照すると、ステップ502では、メンテナンスデバイス(MD)または許可されたソフトウェアまたはファームウェアイメージを有するデータローダ(DL)は、アップグレード(すなわち、アップデート)されるべき1つまたは複数のECU/LRUを含むシステムのデータバスまたはネットワーク(例えば、図2のデータバス112)に接続される。システムは、1つまたは複数の実施形態では、データバスを監視する、検証ソフトウェアを実行しているECUまたはLRUを使用して実装され得るセキュリティアプライアンス(SA)を備える。セキュリティアプライアンスは、ベンダーからの検証されたハッシュに署名するために使用された同じ信頼できるルート鍵/証明によって署名された中間鍵/証明を有する。ステップ504では、MDまたはDLは、データバスに接続された1つまたは複数のECUおよび/またはLRUをアップグレードするためのデータローダとして構成される。
【0034】
ステップ506では、MDまたはDLは、データバスまたはネットワーク上で全てのECU/LRUにメッセージをブロードキャストして、許可されたアップグレードイメージのための暗号化メタデータを送信する。暗号化メタデータは、1つまたは複数の実施形態では、アップグレードイメージ(ソフトウェアまたはファームウェア)のマニフェストリストを有し、該リストは、限定ではないが、情報の中でも、イメージのバージョン番号、対象のECU/LRU情報、イメージサイズ、イメージの暗号チャンクサイズ、暗号サポート情報(例えば、チャンクをハッシュ化するために使用されている特定のタイプの一方向性関数)、チャンクハッシュのリスト、暗号サポート情報セクションに指定された所定のアルゴリズムによるハッシュ化、公開鍵、認証局(CA)、任意の中間CA鍵チェーンおよびセット、および/またはファイル証明およびハッシュ、およびメタデータなどの情報を含むことができる。
【0035】
ステップ508では、セキュリティアプライアンスは、パッシブな読み取り専用モード(例えば、MIL-STD 1553「バス監視」モード、Aeronautical Radio、Incorporated(ARINC)の「データレコーダ」、CANレシーバなど)で動作して、暗号化メタデータ(例えば、マニフェストリスト)およびイメージファイルを受信して、メモリに記録する。セキュリティアプライアンスは、この暗号化メタデータを既知の鍵を用いてチェックして、メタデータ中の署名を検証する。セキュリティアプライアンスは、ステップ510で永久メモリストアに検証済みのイメージデータおよび未検証のイメージデータを記録し、1つまたは複数の実施形態では、有効な署名は信頼されたアップデートリストに追加され、無効な署名は、セキュリティ障害として記録される。いくつかの実施形態では、セキュリティアプライアンスは、有効および無効であるすべてのアップグレードイメージを記録し、割り当てられたメモリ空間が許す限りバージョン管理を維持し、例えば、特に、データバスまたはネットワーク全体での自己修復または自己再プログラミング機能、インシデント対応、フォレンジック検査などの所定のアクションを有効にする。
【0036】
ステップ512では、MDまたはLDは、好ましくは、当業者に既知の標準のアップデート手順またはルーチンを使用して、暗号化されていないアップデートイメージを対象のECU/LRUに送信(すなわち、アップロード)する。アップデート送信の間、1つまたは複数の実施形態では、セキュリティアプライアンスは、データバスまたはネットワークを監視し、ステップ514において、MDまたはDLからのすべての送信データを記録し、適切なアップデートイメージファイルで指定されたチャンクサイズに従って、アップデートイメージチャンク(すなわち、ストライプアップデートイメージデータ)を蓄積する。各チャンクが蓄積されると、セキュリティアプライアンスは、マニフェストリストに指定されたハッシュ関数を用いてストライプイメージデータ(すなわち、イメージチャンク)をハッシュ化し、ハッシュ関数の結果を、マニフェストからのイメージファイルの有効ハッシュストライプの信頼された(すなわち、署名された)アップデートリストと比較して、ストライプハッシュを検証する。
【0037】
ルールベースおよび署名ベースのヒューリスティック、高度な統計手法、機械学習アルゴリズム、人工知能(AI)を組み合わせることにより、セキュリティアプライアンスは、たとえばステップ514で実行される機能の一部として、誤検知を生成することなく、信頼性の高い継続的な監視を提供できる。例えば、1つまたは複数の実施形態では、送信されたデータトラフィックパターンを学習して、データバスまたはネットワークを監視中に正常なデータトラフィックパターンにおける異常を決定するように適合されたAIおよび/または機械学習アルゴリズムが採用され得る。
【0038】
ステップ516では、方法500は、データ検証プロセスの一部として、パリティ/データ整合性チェック(例えば、巡回冗長検査(CRC))を実行して、受信したデータが破損していないことを確認する。パリティ/データ整合性チェックが失敗する場合、受信しているECU/LRUは、ステップ518においてアップロードを拒否するように構成され、ステップ520において方法が停止する。パリティ/データの整合性チェックが失敗した場合、データが送信中に何らかの理由で破損したことを示していると想定され、暗号化検証プロセスにも合格しない。ステップ516がいくつかの実施形態ではオプションとして省略され得るが、パリティ/データ整合性チェックの検出が失敗したときにアップロードを拒否することは、方法500全体の消費時間および冗長性の削減になる。代替的に、パリティ/データ整合性チェックに合格する場合、セキュリティアプライアンスは、ステップ522において暗号化チェックを実行して、ストライプハッシュを検証する。暗号化チェックは、例えば、セキュリティアプライアンスがアップロードのためのアップデートイメージを作成したエンティティから取得した署名されたストライプハッシュと受信したストライプハッシュを比較することを含む。
【0039】
ストライプハッシュが暗号化チェックに合格する場合、ステップ524において、処理するためのストライプアップデートイメージがさらにあるかどうかをチェックする。最後のストライプアップデートイメージメッセージが受信された場合、方法500はステップ526で停止する。代わりに、最後のストライプアップデートイメージメッセージが受信されていない場合、方法500は、ステップ514においてアップデートイメージ送信のためにデータバスを引き続き監視し、方法500は前述の通り進む。
【0040】
ステップ522において実行された暗号化検証が失敗した場合、ステップ528は、セキュリティアプライアンスが、アクティブモードまたはパッシブモードのいずれで動作しているかを判定する。セキュリティアプライアンスが、パッシブディフェンス(すなわち、パッシブモード)を提供するように構成され、ストライプアップデートイメージチャンクが検証に合格しない場合、セキュリティアプライアンスは、ステップ530においてセキュリティイベントを記録し、無許可の(そうでなければ破損した)アップロードを示すMDまたはDLに対する障害コードをキューに入れる。アップロードイベントに続き、1つまたは複数の実施形態では、メンテナンスコンピューティングデバイスは、メンテナンス障害のためにデータバスまたはネットワーク上のECUまたはLRUをキューに入れる。オプションとして、異常または障害は、その時点でセキュリティアプライアンスからメンテナンスコンピューティングデバイスに、修復の指示と連絡先の指示を含む優先度の高い障害コードとして報告される。データキャプチャは、その後の検査のために(例えば、履歴データとしてメモリに)保持される場合がある。
【0041】
代替的に、セキュリティアプライアンスが、アクティブディフェンス(すなわち、アクティブモード)を提供するように構成され、ストライプアップデートイメージチャンクが検証に合格しない場合、セキュリティアプライアンスは、データバスまたはネットワークを妨害し、ステップ532でメンテナンスコンピューティングデバイスから対象のECUまたはLRUへのさらなる送信を防止する。次いで、方法500はステップ530でセキュリティイベントを引き続き記録し、MDまたはDLに対する障害コードをキューに入れる。このように、セキュリティイベントが記録され、パッシブモードまたはアクティブモードのいずれかで、ステップ530において障害コードがキューに入れられる。
【0042】
悪意のあるイメージ内の唯一の変更されたデータが最後のハッシュされたデータストライプ/チャンクにあり、送信後にのみ検証できる場合、セキュリティアプライアンスは、1つまたは複数の実施形態で、例えば、アップデート中のECU/LRUがイメージを受け入れないようにするために、巡回冗長検査(CRC)に干渉して、最後のメッセージ送信を妨害または中断するように構成される。本明細書で使用される用語としての妨害は、同じバス上での干渉信号の意図的な送信によって引き起こされる既存のデータ通信への干渉を広く指すことを意図している。最後のチャンクが検証されると、最後のメッセージが繰り返される。最後のチャンクの検証に失敗した場合、送信が失敗するまでメッセージは継続的に妨害される。妨害は、ステップ532のアクティブバス介入機能の少なくとも一部として実行され得る。本明細書の教示を与えられた当業者に明らかになるように、アップデート中のECU/LRUがイメージを受け入れるのを防ぐための他のメカニズムが同様に企図されることが理解される。
【0043】
ストライプアップデートイメージチャンクが検証に合格しない場合、セキュリティアプライアンスがパッシブまたはアクティブディフェンス(すなわち、それぞれパッシブモードまたはアクティブモード)を提供するように構成されているかどうかに関係なく、方法500はステップ534において対象のECUまたはLRUの再プログラミングが必要かどうかを判定する。再プログラミングが必要でない場合、方法500はステップ526で停止する。代わりに、再プログラミングが実行されるべきである場合、セキュリティアプライアンスは、ステップ536において最後の既知の有効なイメージを対象のECUまたはLRUに送信し、方法500はステップ526で停止する。
【0044】
セキュリティアプライアンスは、1つまたは複数の実施形態では、内部ECUおよび/またはLRUから特定のメンテナンス障害または動作ステータスを自動的にスキャンし、自動的に、またはユーザ入力に応じて、内部メモリに保存されている検証済みのイメージを用いて障害のあるECUまたはLRUを最新の既知のもので再プログラムするように構成できる。1つまたは複数の実施形態では、セキュリティアプライアンスは、マニフェストがデータ転送前に送信され、適切に検証されない限り、すべてのアップグレード機能を自動的にブロックするように構成される。
【0045】
限定ではなく単なる例として、共通のデータバス上で相互に接続されたコンピューティングデバイスAとBの間で、無許可のファームウェアまたはソフトウェアのアップグレードを受動的に監視および防止するための基本的なシナリオを検討する。同じくデータバスに接続されたコンピューティングデバイスCは、本発明の1つまたは複数の実施形態によるセキュリティアプライアンスとして構成され、データバス上のデータトラフィックを監視および送信するように構成される。コンピューティングデバイスAは、1つまたは複数の発行者の公開鍵とソフトウェアパッチ署名を含む、暗号で署名された許可されたソフトウェアのマニフェストをブロードキャストする。マニフェスト内では、各ソフトウェアパッチに対して、パッチがいくつかのストライプ(つまり、チャンク)に分割され、一方向性関数でハッシュ化され、発行者の秘密鍵によって署名される。コンピューティングデバイスAは、コンピューティングデバイスBにソフトウェアパッチを送信し、コンピューティングデバイスCは、各メッセージチャンクを監視、計算、および検証する。署名の不一致によりチャンクが失敗した場合、コンピューティングデバイスCがデータバスに介入し、更新の送信を妨害する。コンピューティングデバイスA、またはその代替品は、コンピューティングデバイスCが読み取る障害コードにためにコンピューティングデバイスCをポーリングできる。コンピューティングデバイスBは通常、タイムアウトして既存のソフトウェア負荷(A/B機能)に戻るようにプログラムされる。
【0046】
本発明の技術の少なくとも一部は、集積回路に実装され得る。集積回路を形成する際に、同一のダイは、通常、半導体ウェーハの表面上に繰り返されるパターンで製造される。各ダイは、本明細書に記載のデバイスを含み、他の構造および/または回路を含み得る。個々のダイはウェーハからカットまたはダイシングされ、集積回路としてパッケージ化される。当業者には、集積回路を製造するためにウェーハをダイシングし、ダイをパッケージ化する方法が知られている。添付の図に示されている例示的な装置のいずれか(例えば、図3に示されているセキュリティアプライアンス300)、またはその一部は、集積回路の一部であってよい。そのように製造された集積回路は、本発明の一部と見なされる。
【0047】
当業者は、上記の例示的な装置またはその一部が、生の形態(すなわち、複数の未包装のチップを有する単一のウェーハ)として、裸のダイとして、包装された形態で、または、本発明の1つまたは複数の実施形態による、コンピューティングデバイス間の無許可のファームウェアまたはソフトウェアのアップグレードの受動的監視および阻止のためのシステムおよび装置から利益を得る中間製品または最終製品の一部として組み込まれ得ることを理解するであろう。
【0048】
本開示の態様による集積回路は、例えば、他の用途の中でも、本質的に任意の兵器システムおよび/または他のセキュアシステムで使用することができる。そのような集積回路を組み込んだシステムは、本発明の一部と見なされる。本明細書で提供される本開示の教示を考えると、当業者は、本発明の実施形態の他の実施および適用を企図することができるであろう。
【0049】
本発明の実施形態またはその一部はまた、システム、方法、および/またはコンピュータプログラム製品の形態で実施され得る。1つまたは複数の実施形態では、コンピュータプログラム製品は、例えば、図3に示されるプロセッサ302、および/または図3に示されるセキュリティアプライアンス300の暗号化エンジン318などプロセッサまたは他のコントローラに本発明の態様を実行させるコンピュータ読み取り可能なプログラム命令を有する非一時的なコンピュータ読み取り可能な記憶媒体(または複数の媒体)を含み得る。
【0050】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるために命令を保持および記憶することができる任意の有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、または前述の任意の適切な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下が含まれる:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラム可能な読み取り- 唯一のメモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、およびその他前述の適切な組み合わせ。本明細書で使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバーケーブルを通過する光パルス)、またはワイヤーを介して送信される電気信号などの一時的な信号自体であると解釈されるべきではない。
【0051】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、またはネットワーク、例えばインターネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)および/またはワイヤレスネットワーク(例:ワイヤレスLAN(WLAN))を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバーで構成される。各コンピューティング/処理デバイスのネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0052】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、一部はユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、一部はユーザのコンピュータ上で、一部はリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバー上で実行できる。後者のシナリオでは、リモートコンピュータは、LANまたはWANを含む任意のタイプのネットワークを介してユーザのコンピュータに接続してよく、または、(たとえば、インターネットサービスプロバイダを使用したインターネットを介して)外部コンピュータに接続できる。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0053】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書で説明される。フローチャート図および/またはブロック図のブロックの少なくともサブセットのそれぞれ、およびフローチャート図および/またはブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されよう。
【0054】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラム可能なデータ処理装置の1つまたは複数のプロセッサに提供されて機械を作成でき、コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置を介して実行される命令が、フローチャートおよび/またはブロック図ブロックまたは複数のブロックで指定された機能/動作を実施するための手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、および/または他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に記憶され得、その結果、コンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図ブロックで指定された機能/動作の態様を実装する命令を含む製造品を含む、その中に記憶された命令を有する。
【0055】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラム可能な装置または他のデバイス上で一連の操作ステップを実行させて、コンピュータ実装プロセスを生成することができ、コンピュータ、他のプログラム可能な装置、または他のデバイスで実行される命令が、フローチャートおよび/またはブロック図ブロックで指定された機能/動作を実装する。
【0056】
添付の図のフローチャートおよびブロック図は、本発明の1つまたは複数の実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示している。これに関して、ブロック図および/またはフローチャート図のブロックの少なくともサブセットのそれぞれは、指定された機能を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表すことができる。いくつかの代替の実装では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。たとえば、連続して表示される2つのブロックは、実際には実質的に同時に実行されることがあり、または、関連する機能に応じて、ブロックが逆の順序で実行されることもある。1つまたは複数の実施形態では、ブロック図および/またはフローチャート図のブロックの少なくともサブセットのそれぞれ、およびブロック図および/またはフローチャート図のブロックの組み合わせは、指定された機能または動作を実行したり、専用ハードウェアとコンピュータ命令の組み合わせを実行したりする専用のハードウェアベースのシステムによって実施できることにも留意されたい。
【0057】
そのような用語が本明細書で使用される範囲で、要素が別の要素に「接続」または「結合」されていると呼ばれる場合、それは他の要素に直接接続または結合され得るか、または介在する要素が存在してよいことが理解されよう。対照的に、ある要素が別の要素に「直接接続されている」または「直接結合されている」と呼ばれる場合、介在する要素は存在しない。さらに、「上」、「下」、「上」、「下」などの位置用語は、使用される場合、絶対位置ではなく、要素または構造の相互の相対位置を示すことを意図している。
【0058】
本明細書に記載されている本発明の実施形態の図解は、様々な実施形態の一般的な理解を提供することを意図しており、それらは、本明細書に記載の構造および半導体製造方法論を利用する可能性のある装置およびシステムのすべての要素および特徴の完全な説明として役立つことを意図するものではない。本明細書の教示を考えると、他の多くの実施形態が当業者に明らかになるであろう。本開示の範囲または精神から逸脱することなく、構造的および論理的な置換および変更を行うことができるように、他の実施形態が利用され、そこから導き出される。図面も単なる代表的なものであり、原寸に比例して描かれていない。したがって、明細書および図面は、限定的な意味ではなく例示的な意味とみなされるべきである。
【0059】
本発明の実施形態は、本明細書において、個別におよび/または集合的に、単に便宜のために、実際に複数が示されている場合に本願の範囲を任意の単一の実施形態または発明の概念に限定することを意図せずに、「実施形態」という用語によって参照される。したがって、特定の実施形態が本明細書で例示および説明されてきたが、同じ目的を達成する構成を、示された特定の実施形態の代わりに使用できることを理解されたい、すなわち、本開示は、様々な実施形態のありとあらゆる適応または変形をカバーすることを意図している。上記の実施形態、および本明細書に具体的に記載されていないが本発明の範囲内にある他の実施形態の組み合わせは、本明細書の教示を与えられた当業者には明らかになるであろう。
【0060】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図するものではない。本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈が明らかにそうでないことを示さない限り、複数形も含むことを意図している。さらに、「含む」および/または「含む」という用語は、本明細書で使用される場合、記載された機能、ステップ、操作、要素、および/またはコンポーネントの存在を指定するが、1つまたは複数の他の機能、ステップ、操作、要素、コンポーネント、および/またはそれらのグループの存在または追加を排除するものではないことを理解されたい。
【0061】
以下の特許請求の範囲におけるすべての手段またはステッププラス機能要素の対応する構造、材料、行為、および同等物は、具体的に請求された他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または行為を含むことを意図する。様々な実施形態の説明は、例示および説明の目的で提示されているが、網羅的であること、または開示された形式に限定されることを意図するものではない。多くの修正および変形は、本発明の範囲および精神から逸脱することなく、当業者には明らかであろう。実施形態は、本発明の原理および実際の適用を最もよく説明し、当業者が、企図される特定の使用に適した様々な修正を加えた様々な実施形態を理解できるようにするために選択および説明された。
【0062】
要約は、読者が技術的開示の性質を迅速に確認できるようにする要約を必要とする37C.F.R.セクション1.72(b)に準拠するように提供されている。クレームの範囲または意味を解釈または制限するために使用されないことを理解した上で提出される。さらに、前述の詳細な説明では、開示を合理化する目的で、様々な特徴が単一の実施形態に一緒にグループ化されていることが分かる。この開示方法は、請求された実施形態が各請求項に明示的に記載されているよりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。むしろ、添付の特許請求の範囲が反映するように、本発明の主題は、単一の実施形態のすべての特徴よりも少ないものにある。したがって、以下の特許請求の範囲は、詳細な説明に組み込まれ、各請求項は、個別に請求された主題としてそれ自体で成り立っている。
【0063】
本明細書で提供される本発明の実施形態の教示を考えると、当業者は、本発明の実施形態の技術の他の実施および適用を企図することができるであろう。本発明の例示的な実施形態は、添付の図面を参照して本明細書で説明されてきたが、本発明の実施形態は、それらの正確な実施形態に限定されないこと、および、添付の特許請求の範囲から逸脱することなく、当業者によって他の様々な変更および修正が行われることを理解されたい。
【符号の説明】
【0064】
102 メンテナンスコンピューティングデバイス
104、106 LRU
108、110 ECU
112 データバス
114 悪意のあるソフトウェアアップデートモジュール
202 セキュリティアプライアンス
300 セキュリティアプライアンス
302 プロセッサ
304 メモリ
306 データバス
308 バスコントローラ
310 I/Oインターフェース
312 I/Oデバイス
314 ディスプレイコントローラ
316 ディスプレイデバイス
318 暗号化エンジン
図1
図2
図3
図4
図5A
図5B