(57)【要約】【課題】実行中のアプリケーションの信頼性を確認するためのシステムおよび方法を提供する。【解決手段】実施形態において、システムは、複数の命令を備えるアプリケーションを記憶するように構成されたメモリ回路を有する電子デバイスを含む。システムはまた、アプリケーションとアプリケーション信頼性チェックルーチンとを実行するように構成された処理回路を含み、アプリケーション信頼性チェックルーチンは、アプリケーションの実行を通じてアプリケーションの信頼性を確認するためにアイドル処理時間を使用するように処理回路によって実行可能な命令を含む。【選択図】図１
2016024821.tif 000002
【特許請求の範囲】
【請求項１】
電子デバイス（１０）を備えるシステム（１２）であって、前記電子デバイス（１０）は、
複数の命令を備えるアプリケーション（２８）を記憶するように構成されたメモリ回路（２６）と、
前記アプリケーション（２８）とアプリケーション信頼性チェックルーチンとを実行するように構成された処理回路（２４）と
を備え、
前記アプリケーション信頼性チェックルーチンは、前記アプリケーション（２８）の実行を通じて前記アプリケーション（２８）の信頼性を確認するためにアイドル処理時間を使用するように、前記処理回路（２４）によって実行可能な命令を含む、システム（１２）。
【請求項２】
前記アプリケーション信頼性チェックルーチンは、前記アプリケーション（２８）のための算出されたダイジェスト値が前記アプリケーション（２８）において記憶されたダイジェスト値（３０）と一致する場合、前記アプリケーション（２８）が信頼できると決定するように、前記処理回路（２４）によって実行可能な命令を備える、請求項１に記載のシステム（１２）。
【請求項３】
前記アプリケーション信頼性チェックルーチンは、前記処理回路（２４）が、前記アプリケーション（２８）のための前記算出されたダイジェスト値が前記アプリケーション（２８）において記憶された前記ダイジェスト値（３０）と一致しないと決定した場合に、前記アプリケーション（２８）を変更して前記アプリケーション（２８）を前記処理回路（２４）によって実行可能でないものにし、前記電子デバイス（１０）を再始動させるように、前記処理回路（２４）によって実行可能な命令を備える、請求項２に記載のシステム（１２）。
【請求項４】
前記処理回路（２４）は、ハイセキュリティモジュール（ＨＳＭ）（２５）を備え、前記ＨＳＭ（２５）は、前記処理回路（２４）の他の部分によって実行されている前記アプリケーション（２８）の信頼性を確認するために前記アプリケーション信頼性チェックルーチンを実行するように構成される、請求項１に記載のシステム（１２）。
【請求項５】
前記処理回路（２４）は、前記処理回路（２４）の他の部分によって実行されている前記アプリケーション（２８）の信頼性を確認するために前記アプリケーション信頼性チェックルーチンを記憶し、実行するように構成された、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含む、請求項１に記載のシステム（１２）。
【請求項６】
前記アプリケーション信頼性チェックルーチンは、前記電子デバイス（１０）のエネルギー消費および電磁（ＥＭ）ノイズレベルを前記アプリケーション（２８）の実行を通じて実質的に一様にするように構成される、請求項１に記載のシステム（１２）。
【請求項７】
前記アプリケーション信頼性チェックルーチンは、前記メモリ回路（２６）に記憶される、請求項１に記載のシステム（１２）。
【請求項８】
前記電子デバイス（１０）は、産業用監視および／または制御システム（１２）のリレーを備え、前記産業用監視および／または制御システム（１２）は、電力グリッドシステム、保護および制御システム、産業用プラント、配電システム（４０）、またはそれらの任意の組み合わせを備える、請求項１に記載のシステム（１２）。
【請求項９】
方法であって、
電子デバイス（１０）のメモリ（２６）に記憶されたアプリケーション（２８）の実行を開始するように前記電子デバイス（１０）の処理回路（２４）に命令すること（８０）と、
前記電子デバイス（１０）の前記処理回路（２４）を使用して信頼性チェックルーチンを実行しながら前記アプリケーション（２８）を実行すること（８８）と
を備え、
前記信頼性チェックルーチンは、前記アプリケーション（２８）がパッケージング後に修正変更されているかどうかを前記処理回路（２４）に決定させるように構成された複数の命令を備える、方法。
【請求項１０】
前記アプリケーション（２８）がパッケージング後に修正変更されていると前記処理回路（２４）が決定した場合に、前記電子デバイス（１０）の前記メモリ（２６）における前記アプリケーション（２８）を修正変更して前記アプリケーション（２８）を実行可能でないものにすること（７２）を備える、請求項９に記載の方法。
【請求項１１】
前記アプリケーション（２８）がパッケージング後に修正変更されていると前記処理回路（２４）が決定した場合に前記アプリケーション（２８）を修正変更した後、前記電子デバイス（１０）を再始動させること（６４）を備える、請求項１０に記載の方法。
【請求項１２】
前記電子デバイス（１０）は、産業用監視および／または制御システム（１２）のリレーを備える、請求項１０に記載の方法。
【請求項１３】
前記信頼性チェックルーチンを実行すること（８８）は、前記電子デバイス（１０）の前記処理回路（２４）が前記アプリケーション（２８）を実行している間に、前記処理回路（２４）の利用可能な処理サイクルを使用して前記信頼性チェックルーチンを実行することを備える、請求項１０に記載の方法。
【請求項１４】
前記信頼性チェックルーチンを実行すること（８８）は、約３００ミリ秒と約１か月との間の間隔で散発的に前記信頼性チェックルーチンを実行することを備える、請求項１０に記載の方法。
【請求項１５】
前記信頼性チェックルーチンを実行すること（８８）は、前記アプリケーション（２８）を実行している間にアイドルになることまたはスロットルされることを前記電子デバイス（１０）の前記処理回路（２４）に可能にさせないことを備える、請求項１０に記載の方法。
【請求項１６】
前記信頼性チェックルーチンを実行すること（８８）は、前記電子デバイス（１０）に前記アプリケーション（２８）の実行を通じて実質的に一様な量の電磁ノイズを放出させることを備える、請求項１０に記載の方法。
【請求項１７】
電子デバイス（１０）の少なくとも１つのプロセッサ（１６）によって実行可能な命令を記憶した非一時的なコンピュータ可読媒体であって、前記命令は、
前記電子デバイス（１０）の少なくとも１つのメモリ（２６）に記憶されたアプリケーション（２８）を実行するための命令と、
前記アプリケーション（２８）を実行している間に信頼性チェックルーチンを断続的に実行するための命令と
を備え、
前記信頼性チェックルーチンは、
前記電子デバイス（１０）の前記少なくとも１つのメモリ（２６）に記憶された前記アプリケーション（２８）のためのダイジェスト値を計算するための命令と、
前記アプリケーション（２８）のための記憶されたダイジェスト値（３０）を決定するために、前記電子デバイス（１０）の前記少なくとも１つのメモリ（２６）に記憶された前記アプリケーション（２８）の一部を解読するための命令と、
前記少なくとも１つのプロセッサ（１６）が前記計算されたダイジェスト値が前記記憶されたダイジェスト値（３０）と等しいと決定した場合には常に、前記アプリケーション（２８）が信頼できると決定するための命令と
を備える、非一時的なコンピュータ可読媒体。
【請求項１８】
前記信頼性チェックルーチンは、前記計算されたダイジェスト値が前記記憶されたダイジェスト値（３０）と等しくない場合には常に前記電子デバイス（１０）を再始動させるための命令を備える、請求項１７に記載の媒体。
【請求項１９】
前記アプリケーション信頼性チェックルーチンを断続的に実行することは、前記アプリケーション（２８）を実行している間に、前記少なくとも１つのプロセッサ（１６）がアイドルでいることまたはスロットルされることを可能にする代わりに前記アプリケーション信頼性チェックルーチンを実行すること、実質的に一定の量の電力を消費することを前記少なくとも１つのプロセッサ（１６）に可能にさせること、実質的に一定の量の電磁放射を放出することを前記少なくとも１つのプロセッサ（１６）に可能にさせること、またはそれらの組み合わせを備える、請求項１７に記載の媒体。
【請求項２０】
前記少なくとも１つのプロセッサ（１６）は、前記信頼性チェックルーチンを実行するように構成されたハイセキュリティモジュール（ＨＳＭ）（２５）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）と、前記アプリケーション（２８）を実行するように構成された別のプロセッサとを備える、請求項１７に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される主題は、電子処理デバイスに関し、より詳細には、電子デバイスのプロセッサによって実行されている命令の信頼性を確認することに関する。
【背景技術】
【０００２】
携帯電話、デジタルビデオレコーダ、コンソールゲームシステム、等といった、ある特定の現代の電子デバイスは一般的に、電子デバイスを意図されたように機能させるために、メモリに記憶された命令を実行する、処理回路を含む。たとえば、ある特定の電子デバイスは、一般的には電子デバイスの挙動を定義する、ファームウェア命令を記憶し、実行し得る。ある特定の状況では、これらのファームウェア命令は、電子デバイスの製造時に電子デバイスのメモリに記憶され得る。加えて、ある特定の状況では、ファームウェアは、ファームウェアのバグへの対処および／または電子デバイスの機能の増補のために、電子デバイスの寿命にわたり更新され得る。
【発明の概要】
【０００３】
当初特許請求された発明と範囲において対応するある特定の実施形態が、以下に要約される。これらの実施形態は、特許請求された発明の範囲を限定するように意図されたものではなく、むしろこれらの実施形態は、本発明の可能な形態の簡単な概要を提供するようにのみ意図されている。実際、本発明は、以下に説明される実施形態と同様であるかまたは異なり得る、さまざまな形態を包含し得る。
【０００４】
実施形態において、システムは、複数の命令を備えるアプリケーションを記憶するように構成されたメモリ回路を有する電子デバイスを含む。システムはまた、アプリケーションとアプリケーション信頼性チェックルーチンとを実行するように構成された処理回路を含み、アプリケーション信頼性チェックルーチンは、アプリケーションの実行を通じてアプリケーションの信頼性を確認するためにアイドル処理時間を使用するように処理回路によって実行可能な命令を含む。
【０００５】
別の実施形態において、方法は、電子デバイスのメモリに記憶されたアプリケーションの実行を開始するように電子デバイスの処理回路に命令することを含む。方法は、電子デバイスのプロセッサを使用して信頼性チェックルーチンを実行しながらアプリケーションを実行することを含み、信頼性チェックルーチンは、アプリケーションがパッケージング後に修正変更されているかどうかを処理回路に決定させるように構成された複数の命令を備える。
【０００６】
別の実施形態において、非一時的なコンピュータ可読媒体は、電子デバイスの少なくとも１つのプロセッサによって実行可能な命令を記憶する。命令は、電子デバイスの少なくとも１つのメモリに記憶されたアプリケーションを実行するための命令と、アプリケーションを実行しながら信頼性チェックルーチンを断続的に実行するための命令とを含む。信頼性チェックルーチンは、電子デバイスの少なくとも１つのメモリに記憶されたアプリケーションのためのダイジェスト値を計算するための命令と、アプリケーションのための記憶されたダイジェスト値を決定するために電子デバイスの少なくとも１つのメモリに記憶されたアプリケーションの一部を解読するための命令とを含む。命令はまた、少なくとも１つのプロセッサが計算されたダイジェスト値が記憶されたダイジェスト値と等しいと決定した場合には常に、アプリケーションが信頼できると決定するための命令を含む。
【０００７】
本発明のこれらのおよび他の特徴、態様、および利点は、同一の符号が図面全体を通して同一のパーツを表す添付図面を参照しながら以下の詳細な説明を読むと、より良好に理解されるようになるであろう。
【図面の簡単な説明】
【０００８】
【図１】本アプローチの実施形態に係る電子デバイスの図である。
【図２】命令を図１の電子デバイスによる実行のために準備およびパッケージングするための処理の実施形態を示す流れ図である。
【図３】図１の電子デバイスのためのブートプロセスの実施形態を示す流れ図である。
【図４】アプリケーション信頼性チェックルーチンの実施形態を示す流れ図である。
【発明を実施するための形態】
【０００９】
本発明の１つ以上の特定の実施形態が以下に説明される。これらの実施形態の簡潔な説明を提供するために、実際の実装のすべての特徴が本明細書において説明され得るわけではない。任意のそのような実際の実装の開発では、任意の工学プロジェクトまたは設計プロジェクトと同様に、ある実装と別の実装とで異なり得るシステム関連の制約およびビジネス関連の制約の遵守といった開発者の特定の目標を達成するために、実装固有の多数の決定がなされなくてはならない、ということが理解されるべきである。さらに、そのような開発努力は、複雑で時間のかかるものであるかもしれないが、それにもかかわらず、本開示の恩恵を有する当業者にとっては、設計、製作、および製造のルーチン業務であろう、ということが理解されるべきである。
【００１０】
本発明のさまざまな実施形態の要素を導入する際、「１つの（ａ）」、「１つの（ａｎ）」、「前記（ｔｈｅ）」、および「前記（ｓａｉｄ）」といった冠詞は、要素が１つ以上存在することを意味するように意図される。「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「有する（ｈａｖｉｎｇ）」といった用語は、包括的であるように意図され、列挙された要素以外の追加の要素が存在し得ることを意味する。
【００１１】
上述されているように、多くの現代の電子デバイスは、電子デバイスにその意図された機能の提供を可能にさせるために処理回路によって実行される命令（たとえば、アプリケーション、モジュール、ルーチン、ファームウェア、または任意の他の適切な命令）のセットを記憶またはコード化する。加えて、ある特定の分野では、電子デバイスは、インストールおよび／またはアクティブ化の後、間断なく（たとえば、電力サイクリングまたはリブートなしで）長い時間期間にわたり動作し得る。たとえば、産業用監視および／または制御システムは一般的に、複数のフィールドデバイス（たとえば、センシングデバイス、リレー、アクチュエータ、等）を含み得るが、複数のフィールドデバイスは、設備全体にわたって配備され得、その後、配備後には間断なく長い時間期間（たとえば、数か月から数年）にわたり動作し得る。述べたとおり、これらのフィールドデバイスは一般的に、配備前にデバイスのメモリ回路に記憶された、実行可能なアプリケーションのような命令を実行することによって動作し得る。一般的に、電子デバイスのメモリ回路内に記憶された命令が修正変更された場合、デバイスの挙動と機能もまた修正変更されるであろう。
【００１２】
以上のことに留意して、本開示は、ブートシーケンス中といった実行前に記憶された命令（たとえば、ファームウェア）の信頼性を確認するイニシャルチェックを行うことを電子デバイスに可能にさせる。本明細書において使用される場合、命令のセットは、命令が、製造業者または別の許可されたソフトウェアプロバイダによるパッケージング（たとえば、アセンブル、バンドル）後に修正変更されていない場合、「信頼できる」とみなされる。上述されているように、ある特定の電子デバイスは、長い時間期間にわたりリブートされ得ないので、本実施形態はまた、記憶されたアプリケーションパッケージの信頼性が、記憶されたアプリケーションの実行中に継続的、定期的、または散発的に確認され得るメカニズムを提供する。すなわち、以下に述べるように、ある特定の実施形態において、実行可能なアプリケーションにおける命令は、アプリケーションがパッケージング後に修正変更されているかどうかを決定するために、電子デバイスの処理回路によって継続的、定期的、または散発的に実行される、信頼性チェックルーチンを含み得る。ある特定の実施形態では、信頼性チェックルーチンは、差分電力解析および／または電磁（ＥＭ）ノイズ解析技法を妨害するために、そうでなければアイドル処理時間中に電子デバイスの処理回路によって実行され、電子デバイスをよりロバストにし得る。ある特定の実施形態では、信頼性チェックルーチンは、ハイセキュリティモジュール（ＨＳＭ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）（たとえば、ハードウェアアクセラレータ）のような特殊化された処理回路を使用して行われ得る。したがって、本実施形態は、たとえアプリケーションが電子デバイスによってアクティブに実行されている場合であっても、その頻繁な、定期的な、または散発的な信頼性確認を可能にする。
【００１３】
図面を参照すると、図１は、本アプローチの実施形態に係る電子デバイス１０の図である。ある特定の実施形態において、電子デバイス１０は、消費者用デバイス（たとえば、携帯電話、タブレットコンピューティングデバイス、ポータブルコンピューティングデバイス、デスクトップコンピューティングデバイス、デジタルビデオレコーダ、ビデオゲームコンソールデバイス、テレビ）、または産業用デバイス（たとえば、リレー、インテリジェント電子デバイス（ＩＥＤ）、フィールドデバイス、エンドデバイス）であり得る。特に、図１に示された電子デバイス１０は、産業用監視および／または制御システム１２の一部である、インテリジェント電子デバイス（ＩＥＤ）１０の実施形態である。電子デバイス１０に加えて、図１の産業用制御および／または監視システム１２の実施形態は、電子デバイス１０とさまざまな産業機器２２とを含む産業用制御および／または監視システム１２の動作を監視および／または制御する、コントローラ１４を含む。例として、産業機器２２は、さまざまな配電コンポーネント４１（たとえば、変圧器、送電線、コンデンサバンク、等）を有する配電システム４０、さまざまな発電コンポーネント４３（たとえば、発電機、燃焼器、エンジン、等）を有する発電システム４２、さまざまなオートメーションコンポーネント４５（たとえば、原子炉、コンベヤベルト、フィーダ、ホッパー、等）を有する産業オートメーションシステム４４、さまざまな水処理コンポーネント４７（たとえば、フィルタ、浄化器、ｐＨ計、等）を有する水処理システム４６、および／または、さまざまなターボ機械コンポーネント（たとえば、タービン、燃焼器、圧縮機、等）を有するターボ機械システム４８を含み得る。図示されたコントローラ１４は一般的に、産業用監視および／または制御システム１２を管理することをコントローラ１４に可能にさせるための、処理回路１６、メモリ回路１８、および通信回路２０を含む。図示された産業機器２２は、単に、産業用制御および／または監視システム１２の電子デバイス１０とコントローラ１４とによって監視および／または制御され得る機器の例として提供されているにすぎないこと、任意の他の適切な機器（たとえば、燃焼器、送風機、原子炉、等）が、本開示に係る産業用制御および／または監視システム１２によって監視および／または制御され得ることが理解され得る。
【００１４】
図示された電子デバイス１０は、電子デバイス１０の所望の機能と挙動を提供するための命令（たとえば、実行可能なアプリケーション、モジュール、ルーチン、ファームウェア、等）を実行できる、処理回路２４（たとえば、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、または他の適切な処理回路）を含む。ある特定の実施形態において、この処理回路２４は、ある特定の処理アクティビティ中の向上したセキュリティを可能にし得る、以下においてより詳細に議論される、ハイセキュリティモジュール（ＨＳＭ）２５を含み得る。ある特定の実施形態において、この処理回路２４は、電子デバイス１０の動作中にある特定の処理タスクを行うように、デバイスの製造時にプログラムされ得る、ハードウェアアクセラレータのようなフィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイスを含み得る。そのような実施形態のために、ＦＰＧＡは、ＦＰＧＡが命令（たとえば、ソフトウェアコード）によって記述された機能を動作中に行うよう、命令に基づき電子デバイス１０の製造時にハードウェアレベルで構成またはプログラムされ得る。したがって、そのような実施形態のために、命令はＦＰＧＡをプログラムするために使用され、これらの命令は動作中にＦＰＧＡによって実行されるので、ＦＰＧＡは、命令を記憶し、実行するものとして本明細書において説明され得る。
【００１５】
図示された電子デバイス１０は、上述された命令を処理回路２４による実行のために記憶することができる、メモリ回路２６（たとえば、電気的に消去可能プログラム可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、ソリッドステートディスクドライブ、フラッシュドライブ、または別の適切な不揮発性データ記憶メカニズム）を含む。たとえば、図１に示されているように、メモリ回路２６は、以下においてより詳細に議論されるように、実行可能なアプリケーション２８（たとえば、ソフトウェア２８）だけでなく、実行可能なアプリケーション２８に関連づけられたダイジェスト値３０をも含む、パッケージ２７（たとえば、ソフトウェアパッケージ２７）を記憶する。本明細書において使用される場合、アプリケーションは、電子デバイス１０の処理回路２４によって実行可能なコード化された命令（たとえば、バイナリコード化命令）のセットである。
【００１６】
図示された電子デバイス１０は、１つ以上の入力デバイス（たとえば、タッチスクリーン、ポインティングデバイス、キーボード、マイクロフォン、加速度計、等）を介してユーザ入力を受け取り、および／または、１つ以上の出力デバイス（たとえば、ディスプレイ、タッチスクリーン、スピーカー、インジケータライト、プリンタ、等）を介してユーザに出力を提供することができる、入／出力（Ｉ／Ｏ）回路３２を含む。図示された電子デバイス１０は、ネットワークを介した（たとえば、ローカルネットワークを介した、またはインターネットを介した）他の電子デバイス（たとえば、コントローラ１４）との通信を電子デバイス１０に可能にさせるための、通信回路３４（たとえば、有線またはワイヤレスのネットワークインターフェースカード（ＮＩＣ））を含む。図示された電子デバイス１０に含まれるコンポーネントは、単に例として提供されているにすぎず、電子デバイス１０のその他の実施形態は、本開示に係る追加のコンポーネントまたはより少ないコンポーネントを含み得る。
【００１７】
加えて、図示された電子デバイス１０は、産業機器２２の性能についてのセンサ情報の収集を電子デバイス１０に可能にさせる、センサ回路３６を含む。ある特定の実施形態では、センサ回路３６は、たとえば、温度センサ、圧力センサ、流量センサ、コンポジションセンサ（たとえば、ガスコンポジションセンサ、酸素センサ、排気ガスセンサ、等）、フレームセンサ、位置センサ、クリアランスセンサ、振動センサ、加速度計、回転速度センサ、電圧センサ、アンペア数センサ、周波数センサ、光センサ、音センサ、または任意の他の適切なセンシングエレメントを含み得る。図示された電子デバイス１０のための特定の例により、センサ回路３６は、ターボ機械４９（たとえば、圧縮機、ガスタービン、または蒸気タービンのドライブシステム）の速度を計測可能であり得る回転速度センサを含み得る。すなわち、処理回路２４は、センサ回路３６によって収集された計測値に基づいてターボ機械４９の速度を決定するために、電子デバイス１０のメモリ回路２６に記憶されたアプリケーション２８のルーチンを実行し得る。さらに、電子デバイス１０は、ターボ機械４９の決定された速度を、通信回路３４を介してコントローラ１４に提供し得るので、コントローラ１４のプロセッサ１６は、ターボ機械４９だけでなく産業用制御および／または監視システム１２の他の部分の動作パラメータまたは状態を決定することができる。
【００１８】
図示された電子デバイス１０はまた、電子デバイス１０に、コントローラ１４からの命令に基づいてターボ機械４９の性能を調整するための制御信号をターボ機械４９に提供することを可能にさせる、制御回路３８を含む。たとえば、ある特定の実施形態において、制御回路３８は、ターボ機械システム４８の圧縮機のドライブシステムに供給されている電力の増加または減少のいずれかを結果として生じる出力信号を提供して、圧縮機の性能を調整し得る。より具体的には、コントローラ１４が、センサ回路３６によって収集された計測値に基づいて、圧縮機の出力が非常に低いと決定した場合には、コントローラ１４が、圧縮機の出力を増加させるよう通信回路３４を介して電子デバイス１０に命令し得る。これに応答して、電子デバイス１０は、制御回路３８を使用して、圧縮機のドライブシステムに、ドライブシステムに供給される電力を増加させるための制御信号を提供することにより、圧縮機の出力を増加させることができる。
【００１９】
上述され、以下においてより詳細に議論されるように、ある特定の実施形態において、実行可能なアプリケーション２８は、電子デバイス１０の製造時にメモリ回路２６に記憶され得、命令１４におけるエラーまたはバグへの対処および／または電子デバイス１０の機能の増補のために、後に更新され得る。しかしながら、電子デバイス１０のメモリ回路２６における実行可能なアプリケーション２８の修正変更を結果として生じ得るいくつかの状況が存在する。１つの可能性は、単純なデータの破損であり、ハードウェアの不具合、宇宙線の衝突、または別の同様のイベントが、メモリ回路２６に記憶された実行可能なアプリケーション２８の変更（たとえば、単一ビットスワップ）を結果として生じる。別の可能性は、無許可のパーティが、電子デバイス１０における例外（たとえば、障害）を引き起こそうと、または、電子デバイス１０への無許可のアクセスを得ようと、実行可能なアプリケーション２８におけるデータの１つ以上のビットの変更を意図的に試み得ることである。無許可のパーティが電子デバイス１０への物理的アクセスを得ることができるのであれば、このデータの変更は、たとえば、メモリ回路２６の集積回路（ＩＣ）のパッケージングを磨き落とした後に特定の物理的箇所に電磁放射（たとえば、レーザー光）を提供して、メモリ回路２６に記憶された１つ以上のビットを変更することにより、達成され得る。この例は限定するように意図されたものではないこと、メモリ回路２６および／または処理回路２４への異なるタイプの電磁放射の適用を一般的に含む、他のタイプの攻撃もまた可能であり得ることに注意すべきである。
【００２０】
そのようなものとして、そのような攻撃を鑑み、本実施形態は、アプリケーション２８の実行を通じてアプリケーション２８の信頼性を確認するためのメカニズムを提供する。すなわち、アプリケーションが実行される前（たとえば、ブートアップ中）にその信頼性を確認するだけでなく、むしろ本実施形態は、アプリケーション２８の実行中の任意のポイントで発生し得るアプリケーション２８のコンテンツへの単一ビットの変更でさえも識別し、対処することができる。さらに、無許可のパーティが、（メモリ回路２６および／または処理回路２４における）どこで、または（電子デバイス１０の動作中の）いつ、電子デバイス１０の回路を攻撃すべきかを把握し得る場合、上述されたＥＭ攻撃の成功がより大きいことが注意され得る。そのようなものとして、本開示のある特定の実施形態は、継続的にアクティブであること、アプリケーション２８の信頼性を継続的に確認することを、電子デバイス１０の処理回路２４に可能にさせ、それは、無許可のパーティによる攻撃の計画および実現をより困難にして、電子デバイス１０をより安全にする。
【００２１】
図２は、電子デバイス１０の製造業者のような許可されたソフトウェアプロバイダが、電子デバイス１０のメモリ回路２６におけるインストールのためにパッケージ２７（たとえば、ソフトウェアパッケージ２７）を生成し得る、コンピュータで実現される処理５０の実施形態を描いた流れ図である。図示された処理５０は、許可されたソフトウェアプロバイダが、実行可能なアプリケーション２８を生成するための命令をコンパイルすること（ブロック５２）によって始まる。たとえば、適切な処理デバイスを使用して、プログラミング言語（たとえば、Ｃ、Ｃ＋＋、Ａｄａ、Ｆｏｒｔｒａｎ）で書かれたヒューマンリーダブルコードのセットが、バイナリ実行可能アプリケーション２８にコンパイルされ得る。
【００２２】
図２に示された処理５０を続けると、次にダイジェスト値が、ブロック５２においてコンパイルされたアプリケーションのために算出され得る（ブロック５４）。すなわち、適切な処理デバイスを使用して、ブロック５２において生成された実行可能なアプリケーション２８が、ダイジェスト値３０を出力するアルゴリズムに入力として提供され得る。ダイジェスト値３０は一般的に、暗号学的ハッシュ関数（たとえば、ＭＤ４、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２、ＳＨＡ−３、ＳＨＡ−２５６）を使用して計算された（たとえば、生成または決定された）暗号学的ハッシュ値であり得る。そのようなものとして、ダイジェスト値３０は一般的に、アプリケーション２８のビット単位のダイジェストから生成された固定長ストリングを含み得るので、入力（たとえば、アプリケーション２８）における単一ビット差でさえも、異なるダイジェスト値３０をもたらす。
【００２３】
その後、適切な処理デバイスを使用して、ブロック５２において生成されたアプリケーション２８ならびにブロック５４において生成されたダイジェスト値３０を含むパッケージ２７（たとえば、ソフトウェアパッケージ２７）が生成され得る（ブロック５６）。たとえば、パッケージ２７は、バイナリ実行可能アプリケーションファイル２８を含むファイルコンテナ（たとえば、ｚｉｐファイル、ｔａｒファイル）と、ダイジェスト値３０とを含む、テキストファイルであり得る。ある特定の実施形態では、パッケージ２７は、パッケージ２７が電子デバイス１０のメモリ回路２６においてより少ないスペースを占有するように、圧縮され得る。さらに、ある特定の実施形態では、パッケージ２７は、全体的または部分的に暗号化され得る。すなわち、ある特定の実施形態では、適切な処理デバイスは、パッケージ２７の一部または全部を暗号化するために、電子デバイス１０の製造業者に関連づけられた暗号鍵、または許可されたソフトウェアプロバイダに関連づけられた暗号鍵を使用し得る。たとえば、ある特定の実施形態では、パッケージ２７全体が暗号化され得る。他の実施形態では、パッケージ２７内に記憶されたアプリケーション２８とダイジェスト値３０が、個々に暗号化され得る。さらなる他の実施形態では、ダイジェスト値３０のみが、パッケージ２７に含まれる前に暗号化され得る。さらに、以下において議論されるように、暗号化を利用する実施形態において、製造業者または許可されたソフトウェアプロバイダによりパッケージ２７を暗号化するために使用される暗号鍵は、たとえば製造時に、電子デバイス１０のメモリ回路２６内に記憶された対応する解読鍵に関連づけられる。
【００２４】
以上のことに留意して、図３は、電子デバイス１０がアプリケーションをブートし、確認し、条件付きで実行する、処理６０の実施形態を示す流れ図である。図示された処理６０は、電子デバイス１０に電源が投入されると始まる（ブロック６２）。電源投入後、電子デバイス１０は、ある特定の実施形態では、続行前に電子デバイスのハードウェアコンポーネントの適切な動作を確認するために、１つ以上のチェック（たとえば、メモリ回路２６のメモリチェック、処理回路２４の電圧チェック）を行い得る。次に、電子デバイス１０の処理回路２４が、ブートローダアプリケーションの実行を始め得る（ブロック６４）。ブートローダアプリケーションは、アプリケーションが選択され、確認され、条件付きで実行されることを可能にする、メモリ回路２６に記憶され、電子デバイス１０の処理回路２４によって実行可能な命令の集合であり得る。
【００２５】
ブートローダアプリケーションを実行する電子デバイス１０の処理回路２４が続いて、メモリ回路２６に記憶された、実行されるべきアプリケーションを決定し得る（ブロック６６）。たとえば、ある特定の実施形態では、ブートローダアプリケーションが、メモリ回路２６に記憶された特定のアプリケーション２８を実行のために選択するよう、（たとえば、上述されたＩ／Ｏ回路３２を使用して）ユーザに促し得る。他の実施形態では、ブートローダアプリケーションが、アプリケーション２８に関連づけられた識別情報（たとえば、名前、サイズ、バージョン、またはメモリ回路２６における場所）に基づいて、実行すべきアプリケーション２８を自動で選択し得る。
【００２６】
次に、図示された処理６０は、電子デバイス１０の処理回路２４がアプリケーション２８を含むパッケージ２７の完全性チェックルーチンを実行するように続く（ブロック６８）。ある特定の実施形態では、完全性チェックルーチンは、ブートローダアプリケーションの一部でであり得るか、または、ブートローダアプリケーションによって呼び出される別個のルーチンであり得る。本明細書において使用される場合、完全性チェックは、パッケージ２７が正当なアプリケーションを含むらしいことを一般的に保証するが、パッケージ２７またはアプリケーション２８のコンテンツのビット単位の解析は含まない、ハイレベルなチェックである。たとえば、完全性チェックは、パッケージ２７が適切なファイルタイプ（たとえば、ｚｉｐファイルまたはｔａｒファイル）であること、パッケージ２７がバイナリ実行可能ファイル２８とダイジェスト値３０を含むこと、パッケージ２７が適正なファイルサイズであること、パッケージ２７が適切なファイル命名標準に準拠していること、または他のハイレベルなチェックを保証し得る。ある特定の実施形態では、完全性チェックルーチンは、パッケージ２７ならびにその中に記憶されたアプリケーション２８の完全性を確認するための、チェックサム値（たとえば、巡回冗長検査（ＣＲＣ））の計算および比較を含み得る。
【００２７】
パッケージ２７が完全性チェックにパスしなかった場合（ブロック７０）、電子デバイスの処理回路２４が、アプリケーション２８および／またはアプリケーションパッケージ２７を修正変更して、それをブート不可能にし得る（ブロック７２）。たとえば、ブートローダアプリケーションの完全性チェックルーチンがパッケージ２７またはアプリケーション２８が完全性を欠いていると決定した場合には、ブートローダアプリケーションがパッケージ２７および／またはアプリケーション２８のコンテンツを修正変更し得る（たとえば、フラグを挿入するか、１つ以上のビットの値を修正変更するか、またはパッケージ２７をまとめて消去する）ので、ブートローダは、再度アプリケーション２８を実行しようと試みないであろう。その後、ブートローダが電子デバイス１０にシステムのリセットを行わせ（ブロック７４）、新たにブートローダアプリケーションの実行を始めること（ブロック６４）を電子デバイスに可能にさせる。
【００２８】
しかしながら、パッケージ２７が完全性チェックにパスした場合には（ブロック７０）、処理回路２４は、アプリケーション２８を含むパッケージ２７の信頼性チェックルーチンを実行し得る（ブロック７６）。信頼性チェックルーチンの例は、図４に関し以下において詳細に論じられる。ある特定の実施形態では、ブロック７６の信頼性チェックルーチンは、ブートローダアプリケーションの一部であり得るか、または、ブートローダアプリケーションによって呼び出される別個のルーチンであり得る。いずれにせよ、以下に述べるように、信頼性チェックルーチンは一般的に、アプリケーション２８が、同じくパッケージ２７に記憶されたダイジェスト値３０と一致するかどうかを決定するために、パッケージ２７に記憶されたアプリケーション２８のビット単位の解析を行う。上述された完全性チェックと同様に、電子デバイス１０の処理回路２４が、パッケージ２７のアプリケーション２８が信頼できるものではないと決定した場合には（ブロック７８）、処理回路２４は、パッケージ２７および／またはアプリケーション２８を修正変更してそれをブートできないものにし得（ブロック７２）、システムのリセットを開始し得る（ブロック７４）。ある特定の実施形態では、アプリケーションが完全性または信頼性チェックに失敗した場合（たとえば、ブロック７０、７８、または９０）、アプリケーションの修正変更（ブロック７２）がスキップされ得、デバイスはその代わりにシステムのリセット（ブロック７４）に直接進み得、システムのリセットが、デバイスが問題のアプリケーションを実行するのを、ブロック７２の修正変更なしに効果的に防止する。
【００２９】
しかしながら、パッケージ２７が信頼性チェックにパスした場合には（ブロック７８）、処理回路２４がアプリケーション２８の実行を始め得る（ブロック８０）。図３に示されているように、実行中、アプリケーション２８は、イニシャルスレッドまたはプロセス８２（たとえば、スレッドまたはプロセス０）に加えて、他のスレッドまたはプロセス８４、８６を生じる。加えて、アプリケーション２８のイニシャルスレッド８２の実行において、電子デバイス１０の処理回路２４は、パッケージ２７およびアプリケーション２８の信頼性を再度確認するために、信頼性ルーチンを実行し得る（ブロック８８）。換言すれば、ある特定の実施形態では、アプリケーション２８は、現在実行されているアプリケーション２８の信頼性を確認するよう電子デバイス１０の処理回路２４に命令する、信頼性チェックルーチンを含む。信頼性チェックルーチンの例は、図４に関し以下において詳細に論じられる。ある特定の実施形態では、処理回路２４は、複数の処理ユニット（たとえば、処理コア）を含み得、特定の処理ユニットが、ブロック７６および／または８８の信頼性チェックルーチンの実行に使用されるか、またはそれ専用であり得る。ある特定の実施形態では、処理回路２４は、信頼性チェックルーチンを実行するＨＳＭを含み得る。ある特定の実施形態では、信頼性チェックルーチンは、アプリケーション２８とは別個に（たとえば、別個のメモリデバイスまたは別個のメモリ場所に）記憶され得る。たとえば、ある特定の実施形態では、信頼性チェックルーチンは、アプリケーション２８の信頼性チェックルーチンを行うための命令を記憶および実行するハードウェアアクセラレータ（たとえば、ＦＰＧＡ）によって行われ得る。
【００３０】
以下に述べるように、信頼性チェックルーチンは一般的に、アプリケーション２８が、同じくパッケージ２７に記憶されたダイジェスト値３０と依然として一致しているかどうかを決定するために、パッケージ２７に記憶されたアプリケーション２８のビット単位の解析を行う。そのようなものとして、ブロック７８および８８の信頼性チェックルーチンは、アプリケーション２８の実行中に、意図せずに（たとえば、データの破損に起因して）発生し得るか、または意図的に（たとえば、無許可のアクセスの試みに起因して）発生し得る、パッケージ２７およびアプリケーション２８のコンテンツへの単一ビットの変更であっても検出することができる。上記ブートローダによって行われる完全性チェックおよび信頼性チェックと同様に、信頼性チェックルーチンが、アプリケーション２８が信頼できるものではないと決定した場合には（ブロック９０）、電子デバイス１０の処理回路２４が、アプリケーション２８をブートできないものにし得（ブロック７２）、および／またはシステムのリセット（ブロック７４）を開始し得る。
【００３１】
しかしながら、電子デバイス１０の処理回路２４がアプリケーション２８の信頼性の確認に成功した場合には（ブロック９０）、処理回路２４は、もう一度ブロック８８の信頼性チェックルーチンを実行し得る。ある特定の実施形態では、処理回路２４は、ブロック８８の信頼性チェックを再実行する前に、設定された長さの時間（たとえば、約３００ミリ秒から約１か月、約１秒から約１週間、約１分から約１日、もしくは約１時間から約１２時間）またはランダムな長さの時間、待機し得る一方で、他の実施形態では、処理回路２４は、今一度の信頼性チェックルーチンの実行を直ちに進め得る。他の実施形態では、ブロック８８を含むスレッド８２は、アプリケーション２８の実行を通じて継続的に実行され得る。より具体的には、ある特定の実施形態において、ブロック８８の信頼性チェックルーチンを含むスレッド８２は、他のスレッド８４、８６と並行して実行されることができるが、スレッドハンドラがスレッド８４、８６の実行に優先権を付与するよう、より低い相対的優先順位を割り当てられることもできる。換言すれば、ある特定の実施形態では、ブロック８８の信頼性チェックルーチンを含むスレッド８２は、他のスレッド８４、８６によって容易にプリエンプトされ得るので、スレッド８２は、他のスレッドが待機またはスリープしているときに実行されるのみである。このように、ブロック８８の信頼性チェックルーチンを含むスレッド８２は、処理回路２４の一部または全部がそうでなければアイドルでいるであろう時間中に実行されるのみであり得る。
【００３２】
図４は、電子デバイス１０の処理回路２４が、パッケージ２７に含まれるアプリケーション２８の信頼性を確認するために信頼性チェックルーチンを実行し得る、処理１００の実施形態を示す流れ図である。上述されているように、ある特定の実施形態では、信頼性チェックルーチンは、アプリケーション２８の妥当性を検査するために、処理回路２４による実行のためにメモリ回路２６に記憶された命令、または、処理回路２４（たとえば、ＦＰＧＡ）の一部によって記憶および実行される命令を含み得る。図示された処理１００は、処理回路２４が電子デバイス１０のメモリ回路２６に記憶された解読鍵を決定すること（ブロック１０２）により始まる。図２に関し上述されているように、ある特定の実施形態では、パッケージ２７が、電子デバイス１０の製造業者または許可されたソフトウェア供給業者に関連づけられた暗号鍵を使用して、部分的または全体的に暗号化され得る。そのような実施形態では、上述されているように、電子デバイス１０の製造中に、パッケージ２７の暗号化された部分の解読を処理回路２４に可能にさせる対応する鍵（たとえば、解読鍵）が、電子デバイス１０のメモリ回路２６または処理回路２４に（たとえば、ＦＰＧＡ内に）記憶され得る。たとえば、ある特定の実施形態では、ダイジェスト値３０のみが暗号化され得る一方で、メモリ回路２６に記憶されたパッケージ２７の残りは、暗号化されないことができる。
【００３３】
したがって、パッケージ２７が少なくとも部分的に暗号化される実施形態では、電子デバイス１０の処理回路２４が続いて、ブロック１０２において決定された解読鍵を使用して、パッケージ２７の暗号化された部分を解読し得る（ブロック１０４）。たとえば、処理回路２４は、解読鍵を使用して、適宜、ダイジェスト値３０、アプリケーション２８、またはその両方を解読し得る。ある特定の実施形態では、処理回路２４は、安全性、効率、またはその両方を改善するために、解読処理中、ＨＳＭ２５またはハードウェアアクセラレータを利用して１つ以上の機能を行い得る。いずれせよ、処理回路２４が続いて、パッケージ２７の解読された部分からダイジェスト値３０を決定し得る（ブロック１０６）。パッケージ２７が暗号化されていない実施形態では、ブロック１０２と１０４はスキップされ得、ダイジェスト値３０がさらなる処理なしにパッケージ２７から直接読み出され得ることが理解され得る。しかしながら、パッケージ２７内の少なくともダイジェスト値３０がパッケージ２７の作成後に容易に変更されることを防止するために、ダイジェスト値３０が暗号化されることが一般的に所望され得る。さらに、パッケージ２７全体を暗号化することは、より高い安全性をコンテンツに提供し得る一方で、処理１００の各々の実行に伴って、より多く量の処理パワーと時間が、ダイジェスト値３０のみの代わりにパッケージ２７全体を逐次的に解読するために電子デバイス１０によって消費され得ることが注意され得る。
【００３４】
次に、図４の例示された処理１００では、電子デバイス１０の処理回路２４が、パッケージ２７のアプリケーションのためのダイジェスト値３０を算出し得る（ブロック１０８）。すなわち、電子デバイス１０の処理回路２４が、ダイジェスト値を決定するために、暗号学的ハッシュ関数（たとえば、ＭＤ４、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２、ＳＨＡ−３、ＳＨＡ−２５６）を使用して、暗号化されていないアプリケーション２８をダイジェストし得る。ある特定の実施形態では、処理回路２４は、向上した安全性または効率のために、ＨＳＭ２５またはハードウェアアクセラレータを利用してダイジェストを行い得る。処理回路２４が、ブロック１０８において説明されているように、算出されたダイジェスト値を生成すると、電子デバイス１０の処理回路２４が、算出されたダイジェスト値をパッケージ２７の解読された部分からのダイジェスト値３０と比較し得る（ブロック１１０）。算出されたダイジェスト値がパッケージ２７から決定されたダイジェスト値３０と一致する場合には（ブロック１１２）、信頼性チェックルーチン処理１００が成功の結果を戻す（ブロック１１４）。しかしながら、算出されたダイジェスト値がパッケージ２７からのダイジェスト値３０と一致しない場合には（ブロック１１２）、信頼性チェックルーチン処理１００が不成功の結果を戻す（ブロック１１６）。
【００３５】
図４に示されている処理１００の一部は極めてプロセッサ集約型であり得る、ということが注意され得る。たとえば、ブロック１０４および１０８は、電子デバイスの処理回路２４が実行のために膨大な量の処理時間およびエネルギーを費やすことを要し得るアクションを説明する。上述されているように、ある特定の実施形態では、処理１００によって示されている信頼性チェックルーチンは、処理回路２４がそうでなければアイドルであろう場合に実行されるのみであり得る。換言すれば、ある特定の実施形態では、アプリケーション２８の信頼性チェックルーチンは、電子デバイス１０の処理回路２４がアイドル状態、スロットルされた状態、または低電力スリープ状態に入ることを防止し得る。これは電子デバイス１０がより多くの電力を消費する結果を生じ得る一方で、このように処理回路２４を動作させることは、電子デバイス１０の差分電力解析または電磁（ＥＭ）ノイズ解析をより困難にする。すなわち、ある特定の実施形態では、電子デバイス１０がアイドル状態または低電力スリープ状態に入らないので、（電子デバイス１０の動作中の）いつ、（メモリ回路２６および／または処理回路２４における）どこで、電子デバイス１０を攻撃すべきかを、電子デバイス１０の電力消費の解析に基づいて決定しようとする無許可のパーティは、経時的に一般的に一様な電力消費を見るだけであろう。同様に、ある特定の実施形態では、処理回路２４が継続的にアクティブであり得るので、いつどこで電子デバイス１０を攻撃すべきかを、電子デバイス１０によって生成されたＥＭノイズの解析に基づいて決定しようとする無許可のパーティは、経時的に一般的に一様なＥＭノイズレベルを見るだけであろう。そのようなものとして、無許可のパーティは、電子デバイス１０への無許可のアクセスを得ることにおいて非常に不自由させられる。
【００３６】
本発明の技術的効果は、記憶された命令が命令のパッケージング後または命令の実行中に変更されていないことを確認することを、電子デバイスに可能にさせることを含む。すなわち、本実施形態は、記憶されたアプリケーションパッケージの信頼性が、たとえ記憶されたアプリケーション自体の実行中であっても、継続的に、定期的に、または散発的に確認され得るメカニズムを提供する。ある特定の実施形態では、信頼性チェックルーチンは、差分電力解析および／またはＥＭノイズ解析技法を妨害するために、そうでなければアイドル処理時間中に電子デバイスの処理回路によって実行され、電子デバイスをよりロバストにし得る。したがって、本実施形態は、無許可のパーティから電子デバイスのアクティビティを分かりにくくするようなアプリケーションの定期的な信頼性確認を可能にし、電子デバイスの動作中の向上した安全性を結果として生じる。
【００３７】
記載されたこの説明は、ベストモードを含む発明を開示し、また、任意のデバイスまたはシステムの製造および使用と組み込まれた任意の方法の実行とを含む発明の実現をいずれの当業者にも可能にさせるための例を使用する。本発明の特許可能な範囲は、特許請求の範囲によって定義され、当業者が想到する他の例を含み得る。そのような他の例は、それらが特許請求の範囲の文字通りの言語と異ならない構造要素を有する場合、または、それらが特許請求の範囲の文字通りの言語との実質的な差を有しない均等な構造要素を含む場合、特許請求の範囲内であるように意図される。
【符号の説明】
【００３８】
１０  電子デバイス
１２  産業用監視および／または制御システム
１４  コントローラ
１６  処理回路、プロセッサ
１８  メモリ回路
２０  通信回路
２２  産業機器
２４  処理回路
２５  ハイセキュリティモジュール（ＨＳＭ）
２６  メモリ回路
２７  パッケージ
２８  実行可能なアプリケーション、バイナリ実行可能アプリケーションファイル、バイナリ実行可能アプリケーション、バイナリ実行可能ファイル
３０  ダイジェスト値
３２  入／出力（Ｉ／Ｏ）回路
３４  通信回路
３６  センサ回路
３８  制御回路
４０  配電システム
４１  配電コンポーネント
４２  発電システム
４３  発電コンポーネント
４４  産業オートメーションシステム
４５  オートメーションコンポーネント
４６  水処理システム
４７  水処理コンポーネント
４８  ターボ機械システム
４９  ターボ機械
５０  処理
５２  ブロック
５４  ブロック
５６  ブロック
６０  処理
６２  ブロック
６４  ブロック
６６  ブロック
６８  ブロック
７０  ブロック
７２  ブロック
７４  ブロック
７６  ブロック
７８  ブロック
８０  ブロック
８２  イニシャルスレッドまたはプロセス
８４  スレッドまたはプロセス
８６  スレッドまたはプロセス
８８  ブロック
９０  ブロック
１００  信頼性チェックルーチン処理、処理
１０２  ブロック
１０４  ブロック
１０６  ブロック
１０８  ブロック
１１０  ブロック
１１２  ブロック
１１４  ブロック
１１６  ブロック
【図１】
2016024821.tif 000003
【図２】
2016024821.tif 000004
【図３】
2016024821.tif 000005
【図４】
2016024821.tif 000006
【外国語明細書】
2016024821000001.pdf