本願で用いるように、産業企業システムは、原材料および関連する物理的プロセス、このようなプロセスと相互作用するフィールド装置、該プロセスを制御する対応する制御システム、および、産業企業のより高いレベルの管理システムを示している。そのため、産業企業システムは、対応するネットワークを介して典型的には相互接続される階層的に関連するシステム(即ち、多数のレベルを有する)のシステムである。本願で用いるように、産業システム計算エンドポイント(あるいは、エンドポイント)は、産業企業システム内のネットワーク(全てのレベルにおける)のノードとして機能して、他のこのような構成要素と通信する、全ての計算構成要素を示す。そのため、本願で用いるように、エンドポイントは、個別の計算装置(例えば、フィールド装置、制御部、I/O装置、制御部およびI/O装置用の内蔵型プラグイン・カード、ワークステーション、サーバー等)、並びに、幾らかのより高レベルのシステム(例えば、より大きい制御システム内のモジュール式制御システム、監視システム内の制御システム等)に従属する一体化されたものとして動作するこのような装置のシステムまたはグループを含む。典型的には、産業企業システムにおけるエンドポイントは、それぞれの構成情報(より能力が高いエンドポイントに対して)またはそれぞれの物理的接続性(より能力が低いエンドポイントに対して)のいずれかに基づいて互いと通信を確立する。コンピュータおよびデータ・セキュリティに関連して、エンドポイント間の通信の確立は、絶対の信頼の形態に基づく。これは、どのエンドポイントも他のエンドポイントからの通信が本当に安全で信頼性があるか、あるいは、何等かのセキュリティ違反または他の障害によって信用が落とされたか分からないからである。特に、産業企業を動作させるようエンドポイント間で通信を確立することは、他のエンドポイントが(a)正当である(即ち、他のエンドポイントは申告通りである)、(b)完全なインテグリティで動作している(即ち、他のエンドポイントは正しく機能し、送られた通信並びに該通信に対して生成されたデータの信用が落とされていない)といったことを各エンドポイントが信用することに依存する。
幾つかの公知の産業システムのエンドポイントは、各エンドポイントと関連付けられる情報(例えば、シリアル番号、ハードウェア・アドレス、または、IPアドレス)を識別する際の通信のセキュリティおよび/または信頼性、および、通信するために使用される通信プロトコルの知識に信用を基づかせる。これにより、特定のエンドポイント(例えば、エンドポイントが申告通りか)の正当性が確認されるが、このようなアプローチ法は各エンドポイントのインテグリティのどんな信頼性のある表示を提供するにも不十分である(例えば、エンドポイントが予想通り動作しているか、または、信用が落とされ、動作の信頼性が問題視されているか)。過去には、インテグリティに基づく信用の大部分は、通信に伴われる計算エンドポイントの製造業者による製品品質の保証に基づいて推測される。つまり、製造業者は、ソフトウェア、ファームウェア、および/または、ハードウェアの開発および試験に対する品質保証プロセスを定める標準(例えば、国際標準化機構(ISO)9000)に典型的には従う。その結果、このような製造業者によって生産される装置(例えば、エンドポイント)が設計通り(即ち、信用できるインテグリティをもって)機能するであろうといったある程度の信用が得られる。
製造業者の品質保証は、製造業者が生産する計算装置のインテグリティにおいてある程度の信用を提供するが、このような保証の重みは、製造業者の制御下から装置が離れた後のセキュリティの違反または障害の他の原因の可能性により、時間とともに低くなる。例えば、製造業者から装置が出荷されるときからエンド・ユーザに配達されるときまでの間に計算装置が改ざんされる可能性がある。更に、計算装置がエンド・ユーザによって受け取られた後でも、装置がハッキングされ悪質なコードで変更される可能性がある。セキュリティ対策は典型的には、このような攻撃を減少させおよび/または検出するために実施されるが、特定の攻撃が認識されない場合、悪質なソフトウェアが計算装置の動作に影響を与え得る。その結果、このような装置のインテグリティにおける信用および/または装置から送られる通信が間違えられ得る。したがって、エンドポイントが新しく取得され、構成され、動作された場合にエンドポイントのインテグリティを検証し、更に、経時的に産業企業システムにおけるエンドポイントのインテグリティをモニタリングしてこのようなエンドポイントのインテグリティへの全ての起こり得る脅威または欠点を検出し、このようなエンドポイントからの通信に与えられる信用のレベルにおける全ての対応する変化に基づいて好適な応答を実行することが必要である。
本願記載の実施例は、対応するネットワーク上でエンドポイントが通信することを許可する前に、信用できる状態(即ち、インテグリティの状態)にあるエンドポイントの状態に対応する公知の良値に対して比較するために、現在の状態のある態様を示す計算されたまたは測定された値をネットワーク上のエンドポイントに供給させることで上述の問題を克服する。自身の状態に関してエンドポイントによって生成される測定結果は、本願では、インテグリティ測定値と称される。幾つかの実施例では、インテグリティ測定値は、エンドポイントの動作、セキュリティ、および/または、信頼性の表示を提供することができるエンドポイントの様々な態様の一つ以上のチェックサムを計算することで生成される。それにより、幾つかの実施例では、インテグリティ測定値は、本願では、計算されるものとして説明される。つまり、エンドポイントの様々な態様と関連付けられるデータは、暗号チェックサム・アルゴリズムを実施されて、インテグリティ測定値として使用され得る値を生成する、または、インテグリティ測定値を(エンドポイントの他の態様について計算されたチェックサムと共に)構築する。幾つかの実施形態では、インテグリティ測定値はエンドポイントのソフトウェア・スタックに基づいて生成される。幾つかの実施例では、インテグリティ測定値は、制御システム内のエンドポイントの構成に基づいて生成される。幾つかの実施例では、インテグリティ測定値は、エンドポイントと関連付けられる周辺機器に基づいて生成される。幾つかの実施例では、インテグリティ測定値は、エンドポイントと関連付けられる独立型のセキュリティ・チップによって生成される。更に、幾つかの実施例では、インテグリティ測定値はエンドポイントのブート時間中に生成される。他の実施例では、インテグリティ測定値は、エンドポイントのランタイム中に生成される。エンドポイントが多数の計算装置(例えば、エンドポイント)のサブシステムに対応する幾つかの実施例では、インテグリティ測定値は、サブシステム内の個々の装置それぞれと関連付けられる多数のより低レベルのインテグリティ測定値の組み合わせである。
エンドポイントによって生成される各インテグリティ測定値は、エンドポイントに対する信用できる状態に対応するとして公知の対応する基準値と比較されてもよい。幾つかの実施例では、基準値は、エンドポイントが最初に取得され、設置され、および/または、構成された際に生成されるインテグリティ測定値に基づく。幾つかの実施例では、基準値は、エンドポイントの製造業者によって提供される値に基づいて定められる。インテグリティ測定値と基準値との比較が一致を表す場合、下流エンドポイントは信用できる状態にあると確認される。つまり、ソフトウェア/ファームウェア、ハードウェア/周辺機器、構造、および/または、エンドポイントの他の測定された態様は予想通りであり、エンドポイントからの通信は信用できるおよび/または信頼される。このような状況では、エンドポイントは検証されたインテグリティに基づき全通信で対応するネットワークに参入許可が得られる。しかしながら、インテグリティ測定値が対応する基準値に一致しない場合、エンドポイントのインテグリティは疑わしくなり、適当な応答が実行され得る。幾つかのこのような実施例では、エンドポイントの通信アクセスのタイプおよび/または程度は制限され、全通信アクセス未満のものとして定義され得る。幾つかの実施例では、エンドポイントに提供される通信アクセスの程度またはタイプは、エンドポイント間の通信を完全にするために使用される秘密および/または公開値または鍵を生成または定義するために使用される上流エンドポイントによって提供される許可情報に基づいて確立される。このようなインテグリティに基づく検証プロセスは、ネットワークに追加される新しいエンドポイントに対して(ネットワークに登録されるおよび/または構成される前にエンドポイントが正当であり予想通り動作していることを確実にするために)実行されてもよく、および/または、既に動作しているエンドポイントに(先に構成されたエンドポイントが何等かの形で信用を落とされ、インテグリティが問題視されたかを検証するために)適用されてもよい。
図1は、典型的な産業企業システムのレベル102、104、106、108、110、112の例示的な階層100のブロック図を示す。図1の例示的な階層は、ISA95(国際計測制御学会95)に概要が説明されているパデュー・リファレンス・モデルに従う。最低レベルでは、階層100は製造/処理企業の物理的プロセス102で開始される。例えば、産業企業システムにおける物理的プロセス102は、処理される材料および/または製品、並びに、処理される材料および/または製品と直接相互作用する管、タンク、加熱器、コンベア、および/または、他の機器資源に対応する。階層における次のレベルは装置レベル104である。装置レベル104は、物理的プロセスを感知し、モニタリングし、および/または、操作するスマートおよび/または非スマート・フィールド装置に対応する。例えば、装置レベル104は、弁、アクチュエータ、温度センサ、圧力センサ等を含む。
更に、装置レベル104は、フィールド装置と相互作用するおよび/またはフィールド装置を制御する制御部および/またはI/O装置を含んでもよい。このような制御部およびI/O装置は、装置レベル104と階層100においてその真上の制御システム・レベル106との間のインターフェイスとして機能する。制御システム・レベル106は、フィールド装置を直接監視し制御することで物理的プロセスを制御する。制御システム・レベル106における制御システムは、分散制御システム(DCS)、監視制御データ収集(SCADA)システム、および/または、他のプロセス制御システムでもよい。典型的には、制御システム・レベル106は、装置レベル104と関連付けられるフィールド装置と直接接続される一つ以上の制御部および/またはI/O装置を含む。更に、制御システム・レベル106は、ヒューマン・マシン・インターフェース(HMI)を提供する一つ以上のサーバーおよび/またはワークステーションを典型的には含み、オペレータは該ヒューマン・マシン・インターフェースを用いて物理的プロセスの制御を構成し、モニタリングし、および/または、調節し得る。特定の制御システムにおける制御部、I/O装置、ワークステーション、および/または、サーバーそれぞれは、本願では制御システムの制御ネットワークと称される、制御システムのネットワークを介して接続されてもよい。
監視システム・レベル108が階層100における次のレベルであり、企業の製造および/処理を監視する動作を代表している。そのため、監視システム・レベル108は、典型的には、サブシステム(例えば、制御システム・レベル106と関連付けられる一つ以上の制御システムに対応する)、および、サブシステムと相互作用する一つ以上のワークステーションおよび/またはサーバーのシステムを含む。このようなシステムは、本願では監視システムと称される。幾つかの実施例では、監視システムは、企業内の特定の設備の製造/処理動作を監視してもよい。ワークステーション、サーバー、および、他のサブシステム(例えば、制御システム・レベル106と関連付けられる異なる制御システム)それぞれは、本願では監視システムの設備ネットワークまたは監視ネットワークと称される、監視システムに対するネットワークを介して接続されてもよい。
冠詞システム・レベル108の上には、企業の全ての面を管理し監督するビジネス関連のアクティビティおよび判断に対応するビジネス・システム・レベル110が設けられる。例示する実施例の階層100における最高レベルは、インターネット112に対応する。インターネットは、理論的には、特定の企業内のレベルではないが、企業はインターネットを介して実現される通信に基づいてしばしば実行される。このように、インターネット112は、産業企業システムに関連するためコンピュータ・セキュリティおよびインテグリティを述べる際に説明目的で表される。
企業の意図する目的を達成するために、階層100の各レベルにおけるコンピュータ・エンドポイントのインテグリティの重要性または信用性を表すインテグリティ・スケール114が図1の例示的な階層100の長さ方向に沿って延在している。例示する実施例に示すように、物理的プロセスに近い階層レベルではより高い程度のインテグリティが必要となり、計算装置が物理的プロセスから離れて実行されるほどインテグリティの重要性が低くなる。例えば、企業(物理的プロセス102に対応する)における最低レベルの動作が予想通り動作すると信用されていない場合、そもそも企業を確立した主な目的である処理および/または製造されて結果として得られる製品に信用はなくなる。しかしながら、物理的プロセス102の一部として処理される物理的な機器資源および材料は、管、タンク、ホッパ等、並びに、関連する原材料に典型的には対応する。そのため、物理的プロセス102の正しい動作は産業企業システムにとって重要であるが、コンピュータおよびデータ・インテグリティの視点からすると、最も重要なレベルは装置レベル104である。装置レベル104は、物理的プロセス102に最も近く、且つ、物理的プロセス102と直接相互作用する計算装置またはエンドポイントに対応するため、最も重要である(即ち、対応する装置(フィールド装置、制御部、I/O装置等)のインテグリティが最も重要である)。
インテグリティの目的で階層100における次に重要なレベルは制御システム・レベル106である。これは、制御システムが装置レベル104で制御部、I/O装置、および、フィールド装置の構成および実行を定めるからである。監視システム・レベル108でなされる判断は、典型的には、物理的プロセスに直接影響を与えず、該レベルはインテグリティに関してはそれほど重要でない。物理的プロセス102から離れる方向にある各連続的なレベルで必要とされるインテグリティの程度は、インターネットに到達するまで低下し続ける。インターネット112は、事実上誰もが接続することができ、誰もがそれを用いて通信することができるオープン・ネットワークであるため、インターネットでは、インテグリティは重要でなく、または、少なくとも期待されない。レベル間の通信を可能にしながら階層100における低レベルで実行されるエンドポイントのインテグリティを確実にして維持するために、階層100における低レベルでのエンドポイント間、および、高レベルでのエンドポイント間の通信には制限が設けられる。特に、通信アクセスの特質またはタイプ、並びに、通信の程度(例えば、第一のエンドポイントが通信する他のエンドポイントの数およびタイプ)は、特定のエンドポイントが破損される(例えば、セキュリティ違反によりインテグリティが失われる)機会を減少するよう正確に制御されてもよい。同様にして、システムにおける潜在的に破損されたエンドポイントが他のエンドポイントに影響を与える可能性を減少するよう制限され、具体的に制御される。
以下に十分に説明するように、エンドポイントを保護し、エンドポイントが破損される可能性を低減するようエンドポイント間の通信を制御することに加え、幾つかの実施例では、エンドポイントのインテグリティまたは信用性が時間における様々な点で試験されて、信用を落とした全てのエンドポイントを特定的に識別し、このようなエンドポイントからの通信を制限するおよび/または完全に拒否することで積極的に応答する。簡単に、幾つかの実施例では、例示的な階層100における所与のレベル内のエンドポイントは、階層100における一つ上のレベルのベットワークへの登録および/または参入許可を要請する。全通信アクセスが可能となるおよび/または許されるよう参入許可を得るためには、幾つかの実施例では、現在の状態を示す各エンドポイントによって提供される測定結果は、公知の信用できる状態(例えば、インテグリティの状態)にあるときにエンドポイントに対応する基準値と一致する必要がある。測定結果が対応する基準値と一致しない場合、通信の参入許可は完全に拒否されるか、エンドポイントは通信の特質および/または範囲が著しく制限される(例えば、ソフトウェア/ファームウェアのアップデートに制限される)是正モードにおかれる。本願記載の幾つかの実施例では、インテグリティに基づく測定は、階層100における異なるレベルでのエンドポイント間の通信を許可する前に実行される。特に、より低い階層レベルのエンドポイントは、より高い階層レベルとの通信が可能にされる前にインテグリティについて試験される。例えば、図1の矢印116によって表わされるように、装置レベル104でのフィールド装置、または、対応する制御部および/またはI/O装置は、フィールド装置または対応する制御部および/またはI/O装置が制御システム・レベル106において制御システムの制御ネットワーク上で通信し得る前に対応する基準値と一致する現在の状態のインテグリティ測定値を提供する必要がある。同様にして、図1の矢印118によって表わされるように、制御システム・レベル106での制御システムは、制御システムが監視システム・レベル108で監視システムの監視ネットワーク上で通信し得る前に対応する基準値と一致する現在の状態のインテグリティ測定値を提供する必要がある。より高レベルの構成要素(インテグリティの重要性が低い)によるより低レベルのエンドポイント(インテグリティの重要性が高い)の本検証プロセスにより、物理的プロセス102に最も近いエンドポイントが予想通り(即ち、インテグリティをもって)動作していることが確実にされる。
図2は、図1の階層における制御システム・レベル106に対応する例示的な制御システム200の概略図を示す。図2の例示的な制御システム200は、図1の階層100の装置レベル104に対応するフィールド装置206、208、210、212、214とインターフェイス接続される一つ以上のプロセス制御部202、および、一つ以上のI/O装置204を含む。図2の例示的な制御システム200は、追加的に、一つ以上のサーバー216および一つ以上のオペレータステーション、アプリケーションステーション、および/または、他のワークステーション(本願ではまとめてワークステーションと称する)を含む。例示する実施例では、制御システム200内の一つのワークステーションは構成ワークステーション218と指定される、あるいは、構成ワークステーションとして機能し、別のワークステーションは主ワークステーション220として機能する(他のワークステーションが参照番号222で示される)。例示する実施例では、例示的な制御部202、例示的なI/O装置204、例示的なサーバー216、および、例示的なワークステーション218、220、222は、本願では一般的に制御システム200の制御ネットワークと称される、通信バスおよび/またはローカル・エリア・ネットワーク224を介して通信可能に接続される。
例示的な構成ワークステーション218は、制御システム200内の装置(例えば、エンドポイント)の実行において望まれる全てのパラメータおよび論理を定める、エンジニア、オペレータ、および/または、他の担当者によって提供される構成データに基づいて構成ファイルを生成するよう、構成モジュール(CM)226を含む。一旦構成ファイルが生成されると、構成ワークステーション218は制御システム200における制御ネットワーク224のエンドポイントそれぞれに構成ファイルを送信し、それにより各エンドポイントが構成され得る。
例示的な主ワークステーション220は、制御システム200の制御ネットワーク224上の各エンドポイントの通信アクセスを監督、許可、および/または、制御するよう、システム・インテグリティ・モニタ(SIM)228を含む。つまり、以下に十分説明するように、図2の例示的な主ワークステーション220のSIM228は、通信アクセスを許可するか通信アクセスを制限するよう制御システム200内の他のエンドポイントのインテグリティを確認するおよび/または検証する。特に、幾つかの実施例では、SIM228は、各エンドポイントと関連付けられるインテグリティ測定モジュール(IMM)230によって生成される一つ以上のインテグリティ測定値を各エンドポイントから受信する。SIM228でインテグリティ測定値が受信されるため、SIM228はインテグリティ測定値を基準値のデータベースと比較する。測定結果が基準値と一致する場合、対応するエンドポイントは制御ネットワーク224上で他のエンドポイントと全通信することが認められる。他方で、インテグリティ測定値が基準値と一致しない場合、SIM228は是正措置を施して通信に対する制御ネットワーク224へのアクセスを制限するまたは拒否する。幾つかの実施例では、主ワークステーション220のSIM228は、全ての変化を検出し、相応じて応答するよう制御ネットワーク224上の他のエンドポイントのインテグリティをモニタリングする。主ワークステーション220および構成ワークステーション218は別個のワークステーションとして表わされているが、幾つかの実施例では、単一のワークステーションが両機能(例えば、CM226およびSIM228の両方を実行する)を行ってもよい。
図2の例示的な制御ネットワーク224は、任意の所望の通信媒体およびプロトコルを用いて実行されてもよい。例えば、例示的な制御ネットワーク224は、有線および/または無線イーサネット(登録商標)通信スキームに基づいてもよい。しかしながら、全ての他の好適な通信媒体および/またはプロトコルが使用され得る。
図2の例示的なI/O装置204は、デジタル・データ・バス232を介して複数のスマート・フィールド装置210、212、214に接続される。スマート・フィールド装置210、212、214は、フィールドバス対応弁、アクチュエータ、センサ等でもよく、この場合、スマート・フィールド装置210、212、214は周知のファウンデーション・フィールドバス・プロトコルを用いデジタル・データ・バス232を介して通信する。当然のことながら、他のタイプのスマート・フィールド装置および通信プロトコルが代わりに使用されてもよい。例えば、スマート・フィールド装置210、212、214は、代わりに、周知のプロフィバスおよびHART通信プロトコルを用いデータ・バス232を介して通信するプロフィバスおよび/またはHART対応装置でもよい。例示的なスマート・フィールド装置210、212、214に加えて、一つ以上の非スマート・フィールド装置206、208が例示的な制御部202に通信可能に接続されてもよい。図2の例示的な非スマート・フィールド装置206、208は、例えば、それぞれの有線リンクを介して制御部202と通信する従来の4〜20ミリアンプ(mA)または0乃至10ボルト直流(VDC)装置でもよい。典型的には、フィールド装置206、208、210、212、214は、それぞれの指定された機能を実行することに特異的な比較的制限された処理能力を有するよう設計される。したがって、フィールド装置は、フィールド装置の現在の状態を示すインテグリティ測定値を生成するIMM230を実行しないこともある。しかしながら、幾つかの実施例では、一つ以上のフィールド装置206、208、210、212、214が上述の他の装置と同様にIMM230を実行してもよい。幾つかのこのような実施例では、対応する制御部202またはI/O装置204は、フィールド装置206、208、210、212、214とそれぞれの制御部202またはI/O装置204との間の通信を統制する別個のSIMを実行してもよい。他のこのような実施例では、主ワークステーション220によって実行されるSIM228は、このようなフィールド装置の通信アクセスを制御してもよい。
図2は、以下により詳細に説明するインテグリティ測定値に基づいて通信参入許可を制御する方法および装置が有利的に使用される例示的な制御システム200を例示するが、当業者には本願記載の教授が、所望の場合には、図2の例示する実施例よりも複雑なあるいは単純な(例えば、一つ以上の地理的場所にわたって一つ以上の制御部を有する等)他の制御システムにおいて有利的に用いられてもよいことは容易に理解されるであろう。
図3は、図1の階層100における監視システム・レベル108に対応する例示的な監視システム300の概略図を示す。図3の例示的な監視システム300は、図2の制御システム200、および、図1の階層100の制御システム・レベル106に対応する別の制御システム302を含む。図3の例示的な監視システム300は、追加的に、一つ以上のサーバー304および一つ以上のワークステーション306、308を含む。例示する実施例では、制御システム200、302、サーバー304、および、ワークステーション306、308は、本願では一般的に監視システム300に対する監視ネットワークと称される通信バスおよび/またはローカル・エリア・ネットワーク310を介して通信可能に接続される。
例示する実施例では、ワークステーション306の一つは主ワークステーションとして動作して、図2の制御システム200における主ワークステーション220と同じにあるいは同じように、監視ネットワーク310に接続される他のエンドポイント(例えば、監視システム300のサブシステムとして個々のサーバー304およびワークステーション308、または、制御システム200、302)の通信アクセスを監督するおよび/または制御する。つまり、例示する実施例では、主ワークステーション306には、他のエンドポイントの現在の状態を示すインテグリティ測定値を受信し、測定結果を基準値と比較するようSIM228が設けられる。例示する実施例では、サーバー304および/またはワークステーション308と関連付けられるインテグリティ測定値は、サーバー304およびワークステーション308それぞれの対応するIMMを介して生成される。各制御システム200、302は(監視システム300の視点から)エンドポイントとして扱われてもよいが、制御システム200、302が多数の装置のサブシステムを代表するため、単一のIMMが主ワークステーション306のSIM228によって分析されるべきインテグリティ測定値を生成することはできない。したがって、幾つかの実施例では、各制御システム内の主ワークステーション306のSIM228(例えば、図2の制御システム200の主ワークステーション220)は、監視システム300の主ワークステーション306のSIM228に提供されるべき全サブシステムの状態を示す一つ以上のインテグリティ測定値を生成する。幾つかの実施例では、全制御システム(監視ネットワークにおけるエンドポイントとして)に対するインテグリティ測定値は、制御システムの制御ネットワークの各エンドポイントで実行されるIMM230それぞれから得られるインテグリティ測定値の組み合わせに基づく。
図3は、本願記載の教授が有利的に使用される例示的な監視システム300を例示するが、当業者には本願記載の教授が、所望の場合には、図3の例示する実施例よりも複雑なあるいは単純な(例えば、一つ以上の地理的場所にわたってより多くの制御システムを有する等)他の制御システムにおいて有利的に用いられてもよいことは容易に理解されるであろう。
図4は、図2の例示的な構成モジュール(CM)226を実行する例示的な方法を示す。例示する実施例では、CM226は、例示的なユーザ・インターフェイス402、例示的な構成ファイル生成部404、例示的な基準値生成部406、例示的な構成データベース408、および、例示的な通信インターフェイス410を含む。
図4の例示的なCM226には、CM226と構成エンジニアおよび/または他のユーザとの間の相互作用を可能にするよう例示的なユーザ・インターフェイス402が設けられる。特に、システム・エンジニアは、ユーザ・インターフェイス402を介して、パラメータを割り当て、制御論理を定義し、IPアドレスを特定し、物理的カードに対する名前を指定し、および/または、制御システム200内の各エンドポイントを構成するに必要な全ての他の関連する構成データを提供する。例示する実施例の例示的な構成ファイル生成部404は、入力された構成データを用いて構成データが適用されるべきプロジェクトまたは制御システムに対する構成ファイルを生成する。幾つかの実施例では、構成データおよび結果として得られる構成ファイルは、例示的な構成データベース408に記憶される。
図4の例示する実施例では、CM226には、構成ファイルに基づきインテングリティ(例えば、インテグリティ測定モジュール(IMM))についてモニタリングされるべき制御システム200における各エンドポイントに対して構成基準値を計算するよう例示的な基準値生成部406が設けられる。つまり、図2の例示する実施例に基づき、CM226の例示的な構成基準値生成部406は、制御部202、I/O装置204、サーバー216、および、ワークステーション218、220、222それぞれに対して基準値を生成する。幾つかの実施例では、基準値は、関心のある特定のエンドポイントと関連付けられる構成データの暗号チェックサムとして生成されるまたは計算される。このような実施例では、チェックサムが元の構成ファイル(システム・エンジニアによって開発される)に基づいて計算されるため、チェックサムの計算値は、各エンドポイントの正しい構成に対応する。このように、これらのチェックサム値(インテグリティ測定値)は、後の時点で、エンドポイントの実際の構成を比較するよう、ベースラインまたは基準として使用され得る。そのため、特定のエンドポイントが後の時点で自身の構成のインテグリティ測定値を生成する(チェックサムを計算する)場合、生成されたインテグリティ測定値は基準値と一致するはずである。後に生成されたインテグリティ測定値が対応する基準値と一致しない場合、構成の状態が予想通りでなく、あるいは、元々定義された通りでないため、インテグリティの信用がなくなったエンドポイントに何か問題がある可能性がある。追加的にあるいは代替的に、基準値生成部406は、構成データに基づいて各エンドポイントと関連付けられるハードウェア(周辺機器)の状態に対応する基準ルールを計算してもよい。
図4の例示する実施例では、CM226には、CM226と制御システム200における他のエンドポイントとの間の通信を可能にするよう例示的な通信インターフェイス402が設けられる。幾つかの実施例では、一旦生成されると、構成ファイルは通信インターフェイス410を介して各エンドポイントに送信され、各装置がシステム・エンジニアの設計に応じて構成されるようにする。更に、幾つかの実施例では、通信インターフェイス410は、後の時点で取得されるエンドポイントのインテグリティ測定値と比較するために、主ワークステーション220のシステム・インテグリティ・モニタ(SIM)228に生成された基準値を供給するよう使用される。
図2のCM226を実行する例示的な方法は図4に示されるが、図4に例示する素子、プロセス、および/または、装置のうちの一つ以上が全ての他の方法で組み合わされ、分割され、再配置され、省略され、排除され、および/または、実行されてもよい。更に、例示的なユーザ・インターフェイス402、例示的な構成ファイル生成部404、例示的な基準値生成部406、例示的な構成データベース408、例示的な通信インターフェイス410、および/または、より一般的には、図4の例示的なCM226は、ハードウェア、ソフトウェア、ファームウェア、および/または、ハードウェア、ソフトウェア、および/または、ファームウェアの全ての組み合わせによって実行されてもよい。したがって、例えば、例示的なユーザ・インターフェイス402、例示的な構成ファイル生成部404、例示的な基準値生成部406、例示的な構成データベース408、例示的な通信インターフェイス410、および/または、より一般的には、例示的なCM226のいずれかは、一つ以上のアナログまたはデジタル回路、論理回路、プログラマブル・プロセッサ、特定用途向け集積回路(ASIC)、プログラマブル論理回路(PLD)、および/または、フィールド・プログラマブル論理回路(FPLD)によって実行され得る。純粋なソフトウェアおよび/またはファームウェア実行を網羅するよう本特許の装置またはシステムクレームのいずれかを読むと、例示的なユーザ・インターフェイス402、例示的な構成ファイル生成部404、例示的な基準値生成部406、例示的な構成データベース408、および/または、例示的な通信インターフェイス410の少なくとも一つは、ここでは、ソフトウェアおよび/またはファームウェアを記憶するメモリ、デジタル多用途ディスク(DVD)、コンパクト・ディスク(CD)、ブルーレイ・ディスク等の有形コンピュータ読み取り可能記憶装置またはストレージ・ディスクを含むよう明確に定義される。更に、図2の例示的なCM226は、図4に例示する素子、プロセス、および/または、装置に加えてあるいはそれらの代わりに一つ以上の素子、プロセス、および/または、装置を含んでもよく、および/または、例示する素子、プロセス、および、装置のいずれかを一つ以上または全てを含んでもよい。
図5は、図2および/または図3のインテグリティ測定モジュール(IMM)の1例230を実装する方法の1実施例を示す。図示の実施例では、IMM230はインテグリティ測定ジェネレータの1例502と、インテグリティ測定自己テスタの1例504と、インテグリティ測定コントローラの1例506と、通信認証器の1例508と、通信インターフェースの1例510と、ソフトウェア測定レジスタの1例512と、構成測定レジスタの1例514と、ハードウェア測定レジスタの1例516と、許可情報データベースの1例518と、構成データベースの1例520とを含む。
図5の図示の実施例では、IMM230はインテグリティ測定ジェネレータの例502を備えて、IMM230を実装する特定のエンドポイントと関連するインテグリティ測定値を算出するか、または生成する。いくつかの実施例では、インテグリティ測定値は、本明細書でソフトウェアインテグリティ測定値と呼ばれる、IMM230を実装するエンドポイントのソフトウェアおよび/またはファームウェアと対応する。いくつかの実施例では、ソフトウェアインテグリティ測定値が、対応するエンドポイントのソフトウェアスタックをロードしているブートタイム中に生成される。そのようないくつかの実施例では、ソフトウェアそれぞれがロードされる時、ソフトウェア用暗号チェックサムをインテグリティ測定ジェネレータ502が計算して、ソフトウェア測定レジスタの例512に付加する(例えば、予め計算したチェックサム値に付加する)。一部の実施例では、ソフトウェアのすべてがロードされると(またはソフトウェアすべてがロードされる前に)計算されたチェックサムの結果としての文字列がハッシュアルゴリズムを通過して、ソフトウェアインテグリティ測定値をより扱いやすくすることができる(例えば、メモリの消費が少ないなど)。一部の実施例では、IMM230がハードウェアデバイス(例えば、セキュリティチップ)として実装されて、エンドポイントが実装されたその他のソフトウェアと関わりなくなっている。あるいは、一部の実施例では、別のセキュリティデバイスが利用できない場合(例えば、既存のデバイス内で)、IMM230が対応するエンドポイントにロードされるソフトウェアとして実装されてもよい。
一部の実施例では、インテグリティ測定値が、本明細書で構成インテグリティ測定値と呼ばれる、IMM230を実装するエンドポイントの構成に、代替としてまたは追加として対応する。上述のように、システムエンジニアまたは他の人員は、構成ワークステーション218で構成ファイルを生成し、制御システム200のエンドポイントそれぞれに提供することができる。いくつかの実施例では、特定のエンドポイントそれぞれに適切であるシステム用の構成ファイルの部分がそのエンドポイントを構成するために用いられる。いくつかの実施例では、エンドポイントが構成されると、エンドポイントを構成するパラメータ、ロジックおよび/または他の構成データベース520がIMM230の構成データベースの例520に記憶される。それによって一部の実施例では、対応するエンドポイントに割り当てられた構成データベース520の構成データベースの各部分の暗号チェックサムを計算することで構成インテグリティ測定値が発生する。構成データの各部分用のチェックサムをインテグリティ測定ジェネレータ502が計算すると、チェックサムは対応する構成測定レジスタ514の予め計算されたチェックサムに付加される。一部の実施例では、単一のチェックサムがエンドポイントに割り当てられた全体の構成ファイル用に計算される。他の実施例では、複数のチェックサムが構成データの様々な部分用に計算されて、組み合わされる(例えば、文字列に互いに付加される)。一部の実施例では、別の構成ファイルがソフトウェアスタックの別の層に適用されてもよいし、かつ/または、そうでない場合、エンドポイントが複数の構成ファイルを記憶してもよい(例えば、種々のバージョンを)。一部の実施例では、別のチェックサムが構成ファイルそれぞれと関連する構成データ用に計算されて、結果の値が互いに付加される。一部の実施例では、チェックサムがすべての構成データ用に計算されると(または、すべての構成データが解析される前に)、計算されたチェックサムの結果としての文字列がハッシュアルゴリズムを通過することができ、構成インテグリティ測定値をより扱いやすくすることができる。
一部の実施例では、インテグリティ測定値が、本明細書でハードウェアインテグリティ測定値と呼ばれる、IMM230を実装するエンドポイントと関連するハードウェアに、代替としてまたは追加として対応する。一部の実施例では、エンドポイントと関連するハードウェアはエンドポイントに差し込まれているか、またはそうでない場合、エンドポイントと結合する(例えば、コントローラに差し込まれたI/Oカード)周辺機器に対応する。一部の実施例では、エンドポイントに関連する周辺機器それぞれの暗号チェックサムを計算することでハードウェアインテグリティ測定値が生成される。一部の実施例では、測定値(例えば、チェックサム)が生成されるべき周辺機器は構成データベース520に記憶された構成データに基づいて特定される。そのような実施例の一部では、インテグリティ測定値が周辺機器に関連する構成ファイルに基づいて生成される。他の実施例では、周辺機器はエンドポイントからの要求に応答して、その状態を示すチェックサム値を提供する。周辺機器それぞれのチェックサムがインテグリティ測定ジェネレータ502によって生成されると、それぞれのチェックサムは、対応するハードウェア測定レジスタ516の予め計算されたチェックサムに付加される。一部の実施例では、エンドポイントに関連するハードウェアすべて(またはいずれか一部)のチェックサムが計算されると、計算されたチェックサムの結果としての文字列がハッシュアルゴリズムを通過して、ハードウェアインテグリティ測定値をより扱いやすくすることができる。
図5の図示の実施例では、IMM230はインテグリティ測定自己テスタの例504を備えて、インテグリティ測定値を生成する際に利用する機能上で予備テストを実施する。すなわち、いくつかの実施例では、インテグリティ測定自己テスタ504はインテグリティ測定ジェネレータ502の性能の内部テストを実行して、インテグリティ測定値に対応する値を適切に計算する。例えば、インテグリティ測定自己テスタ504は、インテグリティ測定ジェネレータ502が実装するハッシュアルゴリズムおよびチェックサムアルゴリズムが既知の入力に基づいて期待される出力を生成することを検証する。
図5の図示の実施例では、IMM230はインテグリティ測定自己コントローラの例506を備え、IMM230の様々な動作を制御する。一部の実施例では、インテグリティ測定コントローラ506はIMM230の例の他の部分への指令または命令を通信し、それら部分の動作を制御する。例えば、インテグリティ測定ジェネレータ502がインテグリティ測定値を生成し、かつレジスタ512、514、516それぞれに値が加算される時、通信インターフェース510を介してインテグリティ測定値が報告される時、レジスタ512、514、516の記憶されたインテグリティ測定値を消去する時などに、インテグリティ測定コントローラ506は指示を出す。
図5の図示の実施例では、対応する制御ネットワークに完全な通信アクセスが与えられた後、IMM230は通信認証器の例508を備えて、他のエンドポイントとの通信を認証し、検証する。一部の実施例では、デジタル署名、暗号化/復号化、認証などのための秘密および/または公開値を生成するためにエンドポイントが使用する許可情報をSIM228が提供することで完全な通信アクセスが可能になる。
一部の実施例では、エンドポイントのインテグリティが確認または検証された後で、通信認証器508が使用する許可情報がIMM230に与えられ、完全な通信アクセスが可能になる。例えば、新しい構成ファイルを受信すると、エンドポイントの初期構成および初期認定の部分は、エンドポイントの再起動を必要とする。再起動中、一部の実施例では、上述の通りインテグリティ測定ジェネレータ502がソフトウェアインテグリティ測定値を生成する。一部の実施例では、構成インテグリティ測定値および/またはハードウェアインテグリティ測定値もまた生成されてもよい。これらのインテグリティ測定値はエンドポイントの現在の状態を示す(すなわち、再起動時の)。構成ファイルに従って構成された後、新たに認定されたエンドポイントは制御システムに登録および承認を要求することができる。制御ネットワーク上で通信することを許可される前にインテグリティ測定値は基準値と比較される。インテグリティ測定値が基準値と一致すれば、エンドポイントは、秘密および/または関連する公開値を生成する許可情報を与えられて完全な通信アクセスを得る。一部の実施例では、対応する許可情報が対応するネットワークの他のエンドポイントに与えられて、エンドポイントそれぞれが新しく承認されたエンドポイントと(同様に互いに)通信することが可能になる。
特定のエンドポイントが初期構成の後でおよびエンドポイントに完全な通信アクセスを与える許可情報を受領した後で、いくつかの方法で危険にさらされる可能性がある。従って、一部の実施例では、エンドポイントのインテグリティは時間と共に監視されるか、またはやがて異なる点で検証され、インテグリティを無くしたことを示すエンドポイントの状態のいかなる変化も検出する(例えば、もはや信頼できる状態ではない)。一部の実施例では、危険にさらされたエンドポイントが検出されると、新規の許可情報が将来の通信での使用のため他のエンドポイントすべてに分散される。この方法では、以前受領した許可情報はもはや有効ではなく、危険にさらされたエンドポイントは今後の完全な通信を否認される。さらに、そのような一部の実施例では、危険にさらされたエンドポイントに独特な許可情報を与えることによりエンドポイントを治療モードに配置し、かつ/または限定的性質の通信アクセスのみ可能になる。
いくつかの実施例では、以前得た許可情報を使用するインテグリティが疑わしいエンドポイントに対する懸念を、エンドポイントが許可情報を最初に受け取った時と同じ状態にある時だけ後で復号化して使用することができる方法で通信認証器508が最初に受領した時、許可情報を暗号化することにより解決する。このように、エンドポイントが現在の状態に悪影響を及ぼすなんらかの方法で危険にさらされた場合(インテグリティ測定値の変化で示されるように)、エンドポイントはもはや他のエンドポイントと通信するために必要な許可情報にアクセスすること(復号する)ができないであろう。その結果、いくつかの実施例では、危険にさらされた一エンドポイントからの通信を、SIM228がエンドポイントのインテグリティの喪失を検出することなく防ぐことができる。
エンドポイントが送信する一部のメッセージはエンドポイント用のインテグリティ測定値の報告を含む。ネットワークセキュリティの課題は虚偽の報告をするエンドポイントのことである。例えば、エンドポイントのインテグリティがインテグリティ測定値を既知の信頼できる状態に対応する基準値と比較することにより検証される限りは、感染したエンドポイントが、実際のエンドポイントの状態および/または現在のエンドポイントの状態から生成されるインテグリティ測定値を提供するより基準値と一致する以前決定したインテグリティ測定値をただ単に繰り返す可能性がある(それはエンドポイントが感染していることを示す)。この問題を解決するために、いくつかの実施例では、IMM230はインテグリティ測定値を要求するたびにノンスを受け取る(一度だけ使用する固有の値)。そのような一部の実施例では、要求に応答する際に通信認証器508はインテグリティ測定値とノンスを組み合わせて、その結果、インテグリティ測定値用の前から存在する値(ノンス無しで)をただ単に報告するエンドポイントを検出することができる。
図2および/または図3のIMM230を実装する方法の1実施例を図5に図示するが、図5に図示する1個または複数の構成部分、1つまたは複数のプロセス、および/あるいは1個または複数のデバイスは、どのような他の方法で、組み合わされ、分割され、再構成され、省略され、削除され、および/または実装されてもよい。さらに、インテグリティ測定ジェネレータの例502と、インテグリティ測定自己テスタの例504と、インテグリティ測定コントローラの例506と、通信認証器の例508と、通信インターフェースの例510と、ソフトウェア測定レジスタの例512と、構成測定レジスタの例514と、ハードウェア測定レジスタの例516と、許可情報データベースの例518と、構成データベースの例520、および/または、より一般に図5のIMM230の例がハードウェア、ソフトウェア、ファームウェアおよび/またはハードウェア、ソフトウェアおよび/またはファームウェアの組み合わせによって実装されてもよい。従って、例えば、インテグリティ測定ジェネレータの例502と、インテグリティ測定自己テスタの例504と、インテグリティ測定コントローラの例506と、通信認証器の例508と、通信インターフェースの例510と、ソフトウェア測定レジスタの例512と、構成測定レジスタの例514と、ハードウェア測定レジスタの例516と、許可情報データベースの例518と、構成データベースの例520のいずれか、および/または、より一般に図5のIMM230の例が、1個または複数のアナログ回路、1個または複数のデジタル回路、1個または複数の論理回路、1個または複数のプログラム可能プロセッサ、1個または複数の特定用途向け集積回路(ASIC)、1個または複数のプログラム可能論理デバイス(PLDおよび/または再書き換え可能プログラム可能論理デバイス(FPLD))によって実装されてもよい。単にソフトウェアおよび/またはファームウェアの実装を包含する本特許の装置またはシステムのいずれの請求項を読んでも、インテグリティ測定ジェネレータの例502と、インテグリティ測定自己テスタの例504と、インテグリティ測定コントローラの例506と、通信認証器の例508と、通信インターフェースの例510と、ソフトウェア測定レジスタの例512と、構成測定レジスタの例514と、ハードウェア測定レジスタの例516と、許可情報データベースの例518、および/または構成データベースの例520の少なくとも一つが、これによって明白に、ソフトウェアおよび/またはファームウェアを記憶する、メモリ、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、ブルーレイディスクなどの有形のコンピュータ可読記憶デバイスまたは記憶ディスクを含むことを規定される。さらに、図2および/または図3のIMM230の例は、図5に図示のものに加えて、またはその代わりに、1個または複数の構成部分、1個または複数のプロセス、および/あるいは1個または複数のデバイスを含んでもよく、および/または図示の構成部分、図示のプロセスおよび図示のデバイスのいずれか2つ以上、またはそれらすべてを含んでもよい。
図6は、図2および/または図3のシステムインテグリティモニタ(SIM)の例228を実装する方法の1実施例を図示する。図示の実施例では、SIM228は、通信インターフェースの1例602と、インテグリティ測定コンパレータの1例604と、許可コントローラの1例606と、インテグリティ測定ジェネレータの1例608と、インテグリティ測定自己テスタの1例610と、インテグリティモニタコントローラの1例612と、ユーザインターフェースの1例614と、基準値データベースの1例616と、インテグリティ測定データベースの1例618と、許可情報データベースの1例620と、ソフトウェア測定レジスタの1例622と、ハードウェア測定レジスタの1例624と、構成測定レジスタの1例626を含む。
図6の図示の実施例では、SIM228は通信インターフェース602を備え、対応するネットワークの他のエンドポイントと通信する。例えば、SIM228の通信インターフェース602は、他のエンドポイントからのインテグリティ測定値の要求を発信する。同様に、通信インターフェースの例602は、他のエンドポイントのIMM230および/またはサブシステム(例えば、監視システム300のエンドポイントとしての制御システム200)の1次ワークステーションのSIM228からインテグリティ測定値の報告を受信する。そのように、一部の実施例では、制御システムの1次ワークステーションのSIM228は、監視システムの1次ワークステーションのSIM228にインテグリティ測定値を伝達することができる。
図6のSIM228の例はインテグリティ測定コンパレータの例604を備え、インテグリティ測定値を基準値データベースの例616に記憶された基準値と比較する。一部の実施例では、基準値は、構成ワークステーション218の構成モジュール226で生成された構成ファイルに基づいて受信され、かつ/または生成される。一部の実施例では、基準値は、対応するエンドポイントの相手先商標製造会社が与える値に基づいてユーザインターフェースの例614を介して値を手動入力するユーザから受領する(例えば、デバイスと共に出荷された書類に含まれて、および/またはオンラインで提供されて)。このように、値は製造時のように信頼できるので、出荷時にデバイスと共にどのように改ざんされても検出することができる。加えてまたは代替として、一部の実施例では、エンドポイントが対応するネットワークに初期に構成され、認定され、および/または追加された時、一部、またはすべての基準値が各エンドポイントのIMM230が生成するインテグリティ測定値に基づいている。そのような一部の実施例では、エンジニアおよび/またはユーザが、そのようなインテグリティ測定値を基準値として承認する。この方法では、エンジニアは特定のエンドポイントそれぞれが正しく構成され、やがて後の時点でこれらの値がエンドポイントのインテグリティをテストした際に使用されたものになると期待されたように機能することを検証する機会を与えられる。
図6の図示の実施例では、SIM228は許可コントローラの例606を備え、報告されたインテグリティ測定値を記憶された基準値と比較した結果に基づいて、適切な通信承認またはエンドポイントへのアクセスを確立する。いくつかの実施例では、インテグリティ測定値が基準値と一致する場合、許可コントローラ606が許可情報をエンドポイントに提供することにより他の承認されたエンドポイントすべてがそれらエンドポイント相互間で通信できるようになる。いくつかの実施例では、他のエンドポイントに送出された許可情報も、次の基準用にSIM228の許可情報データベースの例620に記憶される。
一部の実施例では、インテグリティ測定値が対応する基準値と一致しない場合、許可コントローラ606が改善措置を採る。一部の実施例では、改善措置は、エンドポイントへの通信アクセスを遮断することを含む(例えば、他のエンドポイントに新しい許可情報を提供することにより)。他の実施例では、エンドポイントへの通信アクセスは完全には遮断されないが、所定の方法に限定される。例えば、エンドポイントはエンドポイントにファームウェア更新の通信アクセスに限定する固有の許可情報を提供されるかもしれない(例えば、実行してもよい通信はエンドポイントのファームウェアの更新に関連することだけ)。一部の実施例では、エンドポイントはエンドポイントに構成の通信アクセスに限定する固有の許可情報を提供されるかもしれない(例えば、実行してもよい通信はエンドポイントの構成を更新することに関連することだけ)。一部の実施例では、エンドポイントからの通信が許可されてもよいが、そのような通信は警告を与えられる。一部の実施例では、許可コントローラ606は警報および/または警告を発して、ユーザにインテグリティの喪失の恐れがあることを知らせる。一部の実施例では、破損したエンドポイントからの通信を防止することに加えて、許可コントローラ606は許可情報を冗長なエンドポイントまたはフェイルオーバーエンドポイントに提供して、破損したエンドポイントの役割を引き継ぐ。一部の実施例では、許可コントローラ606は上述の改善措置のいずれの組み合わせを実装してもよい。
さらに、いくつかの実施例では、許可コントローラ606は応答に対応するIMM230が使用するインテグリティ測定値の要求と一緒に与えられるノンス値を生成し、その結果エンドポイントからの応答を正当であると検証してもよい。
図6の図示の実施例では、SIM228はインテグリティ測定ジェネレータ608を備え、SIM228が監視しているエンドポイントのシステム全体のインテグリティの状態を示すインテグリティ測定値を生成する。一部の実施例では、そのようなシステム全体のインテグリティ測定値が、SIM228が監視している関連するネットワークのそれぞれのエンドポイントから収集したインテグリティ測定値を組み合わせて生成される。この組み合わせたインテグリティ測定値は図1の階層100のより高いレベルと関連するワークステーションで他のSIM228に報告されてもよい。一部の実施例では、インテグリティ測定ジェネレータ608が、ネットワークの各エンドポイントから報告された各インテグリティ測定値を対応するソフトウェアレジスタ622、ハードウェアレジスタ624、および構成レジスタ626に付加し、また値の結果としての文字列用にチェックサムを計算することにより組み合わされたインテグリティ測定値を生成する。一部の実施例では、SIM228は各エンドポイントからのインテグリティ測定値を要求し、その後組み合わされたインテグリティ測定値を生成する。加えてまたは代替として、組み合わされたインテグリティ測定値はインテグリティ測定データベース618に記憶された以前報告されたインテグリティ測定値に基づいて生成されてもよい。
図6の図示の実施例では、SIM228はインテグリティ測定自己テスタの例610を備えて、インテグリティ測定値を生成する際に利用する機能上で予備テストを実施する。すなわち、いくつかの実施例では、インテグリティ測定自己テスタ610はインテグリティ測定ジェネレータ608の性能の内部テストを実行して、インテグリティ測定値に対応する値(例えば、チェックサム)を適切に計算する。例えば、インテグリティ測定自己テスタ610は、インテグリティ測定ジェネレータ608が実装するハッシュアルゴリズムおよびチェックサムアルゴリズムが既知の入力に基づいて期待される出力を発生することを検証する。
図6の図示の実施例では、SIM228はインテグリティモニタコントローラの例612を備え、SIM228の様々な動作を制御する。一部の実施例では、インテグリティモニタコントローラ612はSIM228の例の他の部分への指令または命令を通信し、それらの部分の動作を制御する。例えば、インテグリティモニタコントローラ612はインテグリティ測定値を他のエンドポイントのIMM230から要求されるスケジュールを維持することができる。一部の実施例では、順序が文字列全体の結果のチェックサム値に影響を与えるので、インテグリティモニタコントローラ612は、異なるエンドポイントからの異なるインテグリティ測定値が組み合わされたインテグリティ測定値を生成するために組み合わされる順序を制御し、および/または規定する。
図2および/または図3のSIM228を実装する方法の1実施例を図6に図示するが、図6に図示する1個または複数の構成部分、1つまたは複数のプロセス、および/あるいは1個または複数のデバイスは、どのような他の方法で、組み合わされ、分割され、再構成され、省略され、削除され、および/または実装されてもよい。さらに、インテグリティ通信インターフェースの例602と、インテグリティ測定コンパレータの例604と、許可コントローラの例606と、インテグリティ測定ジェネレータの例608と、インテグリティ測定自己テスタの例610と、インテグリティモニタコントローラの例612と、ユーザインターフェースの例614と、基準値データベースの例616と、インテグリティ測定データベースの例618と、許可情報データベースの例620と、ソフトウェア測定レジスタ622と、ハードウェア測定レジスタ624と、構成測定レジスタ626、および/または、より一般に図6のSIM228の例がハードウェア、ソフトウェア、ファームウェアおよび/またはハードウェア、ソフトウェアおよび/またはファームウェアのどのような組み合わせにより実装されてもよい。従って、例えば、通信インターフェースの例602と、インテグリティ測定コンパレータの例604と、許可コントローラの例606と、インテグリティ測定ジェネレータの例608と、インテグリティ測定自己テスタの例610と、インテグリティモニタコントローラの例612と、ユーザインターフェースの例614と、基準値データベースの例616と、インテグリティ測定データベースの例618と、許可情報データベースの例620と、ソフトウェア測定レジスタ622と、ハードウェア測定レジスタ624と、構成測定レジスタ626のいずれか、および/または、より一般にSIM228の例が、1個または複数のアナログ回路あるいは1個または複数のデジタル回路、1個または複数の論理回路、1個または複数のプログラム可能プロセッサ、1個または複数の特定用途向け集積回路(ASIC)、1個または複数のプログラム可能論理デバイス(PLDおよび/または再書き換え可能プログラム可能論理デバイス(FPLD))によって実装されてもよい。単にソフトウェアおよび/またはファームウェアの実装を包含する本特許の装置またはシステムのいずれの請求項を読んでも、通信インターフェースの例602と、インテグリティ測定コンパレータの例604と、許可コントローラの例606と、インテグリティ測定ジェネレータの例608と、インテグリティ測定自己テスタの例610と、インテグリティモニタコントローラの例612と、ユーザインターフェースの例614と、基準値データベースの例616と、インテグリティ測定データベースの例618と、許可情報データベースの例620と、ソフトウェア測定レジスタ622と、ハードウェア測定レジスタ624および/または構成測定レジスタ626の少なくとも一つが、これによって明白に、ソフトウェアおよび/またはファームウェアを記憶するメモリ、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、ブルーレイディスクなどの有形のコンピュータ可読記憶デバイスまたは記憶ディスクを含むことを規定される。さらに、図2および/または図3のSIM228の例は、図6に図示のものに加えて、またはその代わりに、1個または複数の構成部分、1個または複数のプロセス、および/あるいは1個または複数のデバイスを含んでもよく、および/または図示の構成部分、図示のプロセスおよび図示のデバイスのいずれか2つ以上、またはそれらすべてを含んでもよい。
図2のCM226の例を実装する方法の1実施例を表す流れ図を図7に示す。図2および/または図3のIMM230の例を実装する方法の実施例を表す流れ図を図8〜10に示す。図2および/または図3のSIM228の例を実装する方法の実施例を表す流れ図を図11〜16に示す。それらの方法は、図17〜19と関連して以下に説明するプロセッサのプラットフォームの例1700、1800、1900に示すプロセッサ1712、1812、1910などのプロセッサが実行するプログラムを含む機械可読命令を用いて実装されてもよい。それらのプログラムはプロセッサ1712、1812、1910と関連するCD−ROM、フロッピーディスク、ハードドライブ、デジタル多用途ディスク(DVD)、ブルーレイディスク、またはメモリなどの有形のコンピュータ可読記憶媒体に記憶されるソフトウェアで実施されてもよいが、すべてのプログラムおよび/または一部のプログラムは、あるいはプロセッサ1712、1812、1910以外のデバイスで実行されてもよく、かつ/またはファームウェアもしくは専用のハードウェアで実行されてもよい。さらに、プログラムの例は、図7〜16に図示の流れ図を参照して説明されるが、CM226の例と、IMM230の例と、SIM228の例を実装する多くの他の方法が代わりに使用されてもよい。例えば、ブロックを実行する順序が変更されてもよい、および/または記述されたブロックの一部は変更され、削除され、または組み合わされてもよい。
上述の通り、図7〜16の方法の実施例は、情報を任意の期間(例えば、長時間の場合、永久に、短時間の例では、一時的なバッファとして、および/または情報のキャッシュとして)記憶するハードディスクドライブ、フラッシュメモリ、読み出し専用メモリ(ROM)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、キャッシュ、ランダムアクセスメモリ(RAM)および/またはいずれの他の記憶デバイスまたは記憶ディスクなどの有形のコンピュータ可読記憶媒体に記憶されたコード化された命令(例えば、コンピュータ可読命令および/または機械可読命令)を用いて実行されてもよい。本明細書で使用される時、有形のコンピュータ可読記憶媒体という言葉は、どのような種類のコンピュータ可読記憶媒体、および/または記憶ディスクも含み、かつ伝播信号を除くことまた伝送媒体を除くことが、はっきりと規定される。本明細書で使用される時、「有形のコンピュータ可読記憶媒体」および「有形の機械可読記憶媒体」はほとんど同じ意味で使用される。加えてまたは代替として、図7〜16の方法の実施例は、情報を任意の期間(例えば、長時間の場合、永久に、短時間の例では、一時的なバッファとして、および/または情報のキャッシュとして)記憶するハードディスクドライブ、フラッシュメモリ、読み出し専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリおよび/またはいずれの他の記憶デバイスまたは記憶ディスクなどの非一時的コンピュータ可読媒体および/または機械可読媒体に記憶されたコード化された命令(例えば、コンピュータ可読命令および/または機械可読命令)を用いて実行されてもよい。本明細書で使用される時、非一時的コンピュータ可読媒体という言葉は、どのような種類のコンピュータ可読記憶デバイスおよび/または記憶ディスクも含み、かつ伝播信号を除くことまた伝送媒体を除くことが、はっきりと規定される。本明細書で使用されるように、「少なくとも」という句が請求項の前提部分の移行句として使用される時、「備える」という言葉に制約がないのと同じように、「少なくとも」も制約がない。
図の詳細に目を向けると、図7は図2および/または図4の構成モジュール(CM)の例226を実装する方法の1実施例を表す流れ図である。その方法の実施例はブロック700で始まり、そこでユーザインターフェースの例は制御システム用の構成データを受信する(例えば、図2の制御システム200)。一部の実施例では、構成データは、エンジニアが提供する構成パラメータ、構成論理および構成入力のすべてに対応して、制御システムを構成する。ブロック702で、ユーザインターフェースの例は、制御システムのエンドポイント用のソフトウェア基準値および/またはハードウェア基準値を受信する。一部の実施例では、ソフトウェア基準値およびハードウェア基準値は、エンドポイントデバイスの製造者が指定する値に基づいてエンジニアが入力した値に対応する。一部の実施例では、ソフトウェアの値および/またはハードウェアの値は構成データとして同時に収集される。他の実施例では、ソフトウェアのデータおよび/またはハードウェアのデータは別に構成データから収集される。一部の実施例では、ソフトウェア基準値および/またはハードウェア基準値のいずれも収集されない。そのような実施例では、ソフトウェア基準値および/またはハードウェア基準値は以下で説明するようにしばらく経って収集されても、および/または生成されてもよい。
ブロック704で、構成ファイルジェネレータの例404は構成データに基づいて構成ファイルを生成する。ブロック706で、基準値ジェネレータの例406は構成ファイルに基づいて制御システムのエンドポイント用の基準値を生成する。一部の実施例では、基準値は構成ファイル用および/またはエンドポイントに割り当てられた構成ファイルの部分用の1つまたは複数のチェックサムを計算して生成される。一部の実施例では、ソフトウェア基準値およびハードウェア基準値がブロック702で受信される場合、生成された基準値は対応するエンドポイント用の構成基準値に対応する。一部の実施例では、生成された基準値はハードウェア基準値を含む(例えば、そのような値がブロック702でユーザ定義されていない場合)。ブロック708で、構成基準ジェネレータ406は対応する構成データを備える他のエンドポイントがあるかどうか判定する。他のエンドポイントがある場合、制御はブロック706に戻り、エンドポイント用に対応する構成基準値を計算する。他のエンドポイントがない場合、制御はブロック710へ進み、そこで通信インターフェースの例410が構成ファイルを制御システムのエンドポイントに送信する。この送信に基づいて、各エンドポイントは受信し、かつ/またはダウンロードし、また構成ファイル(または構成ファイルの関連する部分)のインスタンスを生成して、再起動して以下により詳細に説明するように構成プロセスを完了する。ブロック712で、通信インターフェースの例410は基準値(例えば、構成基準値、ソフトウェア基準値、および/またはハードウェア基準値)をシステムインテグリティモニタ(SIM)に送信する(例えば、図2のSIM228)。その後、図7の方法の実施例は終了する。
図8は、エンドポイント用の起動時間インテグリティ測定値を生成する図2、3および/または5のインテグリティ測定モジュール(IMM)の例230を実装する方法の1実施例を表す流れ図である。図8の方法の実施例は、例えば、図7のブロック710と関連する上述の構成ファイルを受信した後など、エンドポイントがIMM230の起動を実装する時に実行する。他の実施例では、エンドポイントはSIM228が与える再起動の要求に基づいて再起動してもよい。他の実施例では、エンドポイントは手動で再起動してもよい。ブロック802で、インテグリティ測定自己テスタ504の例はIMM230のインテグリティ測定機能を試験する。例えば、インテグリティ測定自己テスタ504は既知の入力および既知の出力に基づくインテグリティ測定値を生成することに使用されるチェックサムアルゴリズムとハッシュアルゴリズムなどをテストする。ブロック804で、インテグリティ測定コントローラの例506はインテグリティ測定機能が適切に働いているかどうか判定する(例えば、出力は期待通り)。そうでない場合、図8の方法の実施例は終了する。一部の実施例では、インテグリティ測定コントローラ506は方法が終了する前にテストに失敗したことを表すエラーメッセージを生成する。インテグリティ測定コントローラ506の例はインテグリティ測定機能が適切に稼働している(ブロック804)ことを判定し、制御はブロック806へ進む。
ブロック806で、インテグリティ測定コントローラ506の例はインテグリティ測定レジスタ512、514、516のすべてを削除する。ブロック808で、インテグリティ測定ジェネレータ502はエンドポイントでロードされる1つのソフトウェア(および/またはファームウェア)用のインテグリティ測定値を生成する。例えば、インテグリティ測定ジェネレータ502はその1つのソフトウェアの暗号チェックサムを計算する。ブロック810で、インテグリティ測定コントローラの例506はインテグリティ測定値をソフトウェア測定レジスタの例512に加算する。ブロック812で、インテグリティ測定コントローラの例は起動プロセス中にロードされるもう1つのソフトウェアがあるかどうか判定する。もう1つソフトウェアがある場合は、制御はブロック808に戻り、そこでインテグリティ測定値はその1つのソフトウェア用に生成され、そしてソフトウェア測定レジスタ512(ブロック810)に加算される。一部の実施例では、その後の複数のソフトウェアと関連するインテグリティ測定値がソフトウェアのスタック(例えば、起動時に以前ロードされた)の下の方の他の複数のソフトウェア用に以前生成されたインテグリティ測定値と関連するインテグリティ測定値に付加される。一部の実施例では、付加された値の文字列がソフトウェア測定レジスタ512にとってあまりにも長くなりすぎた場合、インテグリティ測定ジェネレータ502は組み合わされた値に対してハッシュアルゴリズムを実行して、より扱いやすい量にそれらを減らす。インテグリティ測定コントローラの例が起動プロセス中(ブロック812)にロードするソフトウェアがこれ以上ないと判定した場合、制御はブロック814へ進む。すべてのソフトウェア(例えば、任意のハッシュ後)用の組み合わせたインテグリティ測定値は、その後要求に応じてSIM228に報告されてもよいエンドポイント用の最終ソフトウェアインテグリティ測定値に対応する。
ブロック814で、インテグリティ測定ジェネレータの例502はエンドポイントに割り当てられた構成データ用のインテグリティ測定値を生成する。例えば、インテグリティ測定ジェネレータ502は暗号チェックサムを構成ファイルまたはエンドポイントに記憶された構成ファイルの部分用に計算する。ブロック816で、インテグリティ測定コントローラの例506は、インテグリティ測定値をインテグリティ測定レジスタの例514に加算する。ブロック818で、インテグリティ測定コントローラの例はさらに構成データがあるかどうか判定する。さらに構成データがある場合、制御はブロック814に戻って、そこでインテグリティ測定値をその構成データ用に生成して、構成測定レジスタ514に加算する(ブロック816)。一部の実施例では、後で解析される構成データに関連するインテグリティ測定値が、他の構成データ用に以前生成されたインテグリティ測定値に関連するインテグリティ測定値に付加されて、レジスタ514に加算される。一部の実施例では、付加された値の文字列がインテグリティ測定レジスタ514にとって長すぎる場合、インテグリティ測定ジェネレータの例502が、組み合わせた値に対してハッシュアルゴリズムを実行して、より扱いやすい量に減らす。インテグリティ測定コントローラの例がこれ以上構成はないと判定した場合、制御はブロック820へ進む。すべての構成データ(例えば、任意のハッシュ後)用の組み合わせたインテグリティ測定値は、要求に応じてその後SIM228に報告されてもよいエンドポイントの最終構成インテグリティ測定値に対応する。
ブロック820で、インテグリティ測定ジェネレータの例502は、エンドポイントの周辺機器用にインテグリティ測定値を生成する。例えば、インテグリティ測定ジェネレータ502はエンドポイント用の対応する構成ファイル内に指定された周辺機器用の暗号チェックサムを計算する。ブロック822で、インテグリティ測定コントローラの例506はインテグリティ測定値をハードウェア測定レジスタの例516に加算する。ブロック824で、インテグリティ測定コントローラの例は他の周辺機器があるかどうか判定する。他の周辺機器がある場合は、制御はブロック820に戻り、そこでインテグリティ測定値がその周辺機器用に生成されて、ハードウェア測定レジスタ516に加算される(ブロック816)。一部の実施例では、その次の周辺機器に関連するインテグリティ測定値は他の周辺機器用に以前生成されたインテグリティ測定値に関連するインテグリティ測定値に付加されてレジスタ516に加算される。いくつかの実施例では、付加された値の文字列がハードウェア測定レジスタ516にとって長くなりすぎた場合、インテグリティ測定ジェネレータの例502は組み合わせた値に対してハッシュアルゴリズムを実行して、より扱いやすい量にそれらを減らす(例えば、文字列が短くなるとメモリの使用も減る)。すべての周辺機器用の組み合わせたインテグリティ測定値(任意のハッシュ後)は要求に応じてその後SMI228へ報告されるエンドポイント用の最終ハードウェアインテグリティ測定値に対応する。インテグリティ測定コントローラの例がこれ以上周辺機器はないと判定した場合(ブロック824)、図8の方法の実施例は終了する。
図9は、エンドポイント用の実行時間インテグリティ測定値を生成する図2、3および/または5のインテグリティ測定モジュール(IMM)の例230を実装する方法の1実施例を表す流れ図である。すなわち、図9の方法の実施例はエンドポイントが構成されてネットワークに承認されて作動した後で起こる。図9の方法の実施例はブロック902で始まり、そこで通信インターフェースの例510はシステムのインテグリティモニタ(例えば、図2、3および/または6のSIM228の例)から実行時間インテグリティ測定値に対する要求を受信する。いくつかの実施例では、その要求は回答を生成するために使用されるノンス値を含んでいる。SIM228に関するさらなる詳細およびそのような要求を受信した時のシナリオは図11〜13に関連して以下で説明する。ブロック904で、インテグリティ測定自己テスタの例504はIMM230のインテグリティ測定機能をテストする。ブロック906で、インテグリティ測定コントローラの例506はインテグリティ測定機能が適切に働いているか判定する(例えば、出力が期待された通りか)。そうでない場合、図9の方法の実施例は終了する。一部の実施例では、インテグリティ測定コントローラ506は方法が終了する前にテストに失敗したことを表すエラーメッセージを生成する。インテグリティ測定コントローラ506の例はインテグリティ測定機能が適切に稼働している(ブロック906)ことを判定し、制御はブロック908へ進む。
ブロック908で、インテグリティ測定コントローラの例506は構成インテグリティ測定レジスタ514およびハードウェアインテグリティ測定レジスタ516を削除する。一部の実施例では、ソフトウェアインテグリティ測定値はエンドポイントが起動時にソフトウェアをロードした際に生成されたため、ソフトウェア測定レジスタ512は、図9の方法の実施例で実装された時に実行時間インテグリティ測定値と関連して削除されない。この方法では、エンドポイントの最後の起動時に生成されたソフトウェア測定レジスタ512に記憶された以前収集されたソフトウェアインテグリティ測定値は報告用にまだ入手可能であってもよい。
ブロック910で、インテグリティ測定ジェネレータの例502は、エンドポイントに割り当てられた構成データ用のインテグリティ測定値を生成する。一部の実施例では、エンドポイントに割り当てられた構成データは構成ファイルおよび/またはエンドポイントに記憶された構成ファイル部分に基づく。ブロック912で、インテグリティ測定コントローラの例506はインテグリティ測定値を構成測定レジスタの例514に加算する。ブロック914で、インテグリティ測定コントローラの例はさらに構成データがあるかどうか判定する。構成データがある場合は、制御はブロック910に戻り、そこでインテグリティ測定値がその構成データ用に生成されて、構成測定レジスタ514に加算される(ブロック912)。一部の実施例では、その次に解析される構成データに関連するインテグリティ測定値は他の構成データ用に以前生成されたインテグリティ測定値に関連するインテグリティ測定値に付加されてレジスタ514に加算される。いくつかの実施例では、付加された値が構成測定レジスタ514にとって長くなりすぎた場合、インテグリティ測定ジェネレータの例502は組み合わせた値に対してハッシュアルゴリズムを実行して、より扱いやすい量にそれらを減らしてもよい。インテグリティ測定コントローラの例がこれ以上構成データはないと判定した場合(ブロック914)、制御はブロック916へ進む。エンドポイントに割り当てられた(例えば任意のハッシュ後)すべての構成データ用の組み合わせたインテグリティ測定値はエンドポイント用の最終構成インテグリティ測定値に対応する。
ブロック916で、インテグリティ測定ジェネレータの例502は、エンドポイントの周辺機器用のインテグリティ測定値を生成する。ブロック918で、インテグリティ測定コントローラの例506はインテグリティ測定値をハードウェア測定レジスタの例516に加算する。ブロック920で、インテグリティ測定コントローラの例は他の周辺機器があるかどうか判定する。周辺機器がある場合は、制御はブロック916に戻り、そこでインテグリティ測定値がその周辺機器用に生成されて、ハードウェア測定レジスタ516に加算される(ブロック918)。一部の実施例では、その次の周辺機器に関連するインテグリティ測定値は他の周辺機器用に以前生成されたインテグリティ測定値に関連するインテグリティ測定値に付加されてハードウェア測定レジスタレジスタ516に加算される。いくつかの実施例では、付加された値がハードウェア測定レジスタ516にとって長くなりすぎた場合、インテグリティ測定ジェネレータの例502は組み合わせた値に対してハッシュアルゴリズムを実行して、より扱いやすい量にそれらを減らしてもよい。すべての周辺機器(任意のハッシュ後)用の組み合わせたインテグリティ測定値はエンドポイント用の最終ハードウェアインテグリティ測定値に対応する。
インテグリティ測定コントローラの例はこれ以上周辺機器がないと判定した場合(ブロック920)、制御はブロック922へ進み、そこで通信インターフェースの例510がインテグリティ測定値の報告を発信する。いくつかの実施例では、報告されたインテグリティ測定値はソフトウェア測定レジスタ512に記憶されたソフトウェアインテグリティ測定値(以前エンドポイントの起動時に生成された)と、構成測定レジスタ514に記憶された構成インテグリティ測定値(ブロック918で生成された)と、ハードウェア測定レジスタ516に記憶されたハードウェアインテグリティ測定値(ブロック918で生成された)とを含む。いくつかの実施例では、インテグリティ測定値の報告は測定値の要求と共に提供されるノンス値と共に提供される。インテグリティ測定値を報告した後、図9の方法の実施例は終了する。
図10は、エンドポイントが信頼できる状態にある場合の状況のエンドポイントに提供された許可情報の使用を制限する図2、3、および/または5のインテグリティ測定モジュール(IMM)の例230を実装する方法の実施例を表す流れ図である。上述の通り、エンドポイントが秘密および/または公開値または鍵を生成するエンドポイントに提供された許可情報を介して通信が可能になる。一部の実施例では、エンドポイントは許可情報を暗号化した形式で記憶して、エンドポイントが、許可情報が復号化された時と同じ状態にある時だけアクセス(復号化)できるようになる。一部の実施例では、許可情報がエンドポイントに供給される前に、許可情報が復号化された時エンドポイントが信頼できる状態であるようにエンドポイントのインテグリティが検証される。従って、一部の実施例では、エンドポイントが危険にさらされてもはや信頼できる状態にない場合(例えば、インテグリティ測定値が基準値に一致しない)、エンドポイントは許可情報を復号化することができないので、許可情報を使用することができなくなる。この方法では、危険にさらされる可能性のあるエンドポイントからの通信を、以下でさらに十分説明するように、エンドポイントをSIM228が特別にテストすることなく防止することができる。
図10の方法の実施例はエンドポイントがIMM230の起動を実行する際に始まる。図示の実施例では、IMM230はすでに構成され、許可情報データベース518の中に暗号化された形式で記憶されていた許可情報を受信した後起動が起きている。図10の方法の実施例はブロック1002で開始し、そこでインテグリティ測定ジェネレータの例502が起動時間インテグリティ測定値を収集する(例えば、図8の方法の実施例を実装して)。ブロック1004で、通信認証器の例508は暗号化された許可情報を許可情報データベース518から回収する。ブロック1006で、通信認証器の例508は起動時間インテグリティ測定値に基づいて、許可情報を解読しようとする。すなわち、いくつかの実施例では、通信認証器508はインテグリティ測定値が示すエンドポイントの状態を使用して暗号化された許可情報を復号する。
ブロック1008で、通信認証器の例508は許可情報が上手く解読されたかどうか判定する。上手く解読できた場合、それはエンドポイントの状態が期待されたインテグリティの状態(例えば、信頼できる状態)にあり、またエンドポイントが許可情報にアクセスし、かつ許可情報を使用して通信することができることを示す。従って、ブロック1010で、通信インターフェースの例510は制御システム内での通信用に解読された許可情報を使用する。その後、図10の方法の実施例は終了する。
通信認証器の例508が許可情報を上手く解読できなかった(ブロック1008)と判定する場合、制御はブロック1012へ進む。暗号化された許可情報を上手く解読できなかったことは何かエンドポイントの状態(インテグリティ測定値が示すように)が所望のエンドポイントの状態(例えば、インテグリティ)と一致しないことを示す。ブロック1012で、インテグリティ測定コントローラの例506は構成ファイルが入手可能かどうか判定する。入手可能な場合、制御はブロック1014に進み、そこで通信インターフェースの例510は制御ネットワークへ参入許可の要求を送信する。いくつかの実施例では、本要求により以下で説明する図12の方法の実施例を開始してもよい。その後、図10の方法の実施例は終了する。ブロック1012に戻り、インテグリティ測定コントローラの例506が構成ファイルは入手できないと判定した場合、制御はブロック1016に進み、その後図10の方法の実施例は終了する。ブロック1016で、通信インターフェースの例510は制御ネットワークに対して登録要求を送信する。いくつかの実施例では、本要求は以下に説明する図11の方法の実施例の始まりに対応する。
図11は、初期に関連する制御ネットワーク上に登録するエンドポイントのインテグリティをチェックする図2、3および/または6のシステムインテグリティモニタ228の例を実装する方法の1実施例を表す流れ図である。その方法の実施例はブロック1102で始まり、そこで通信インターフェースの例602はエンドポイントからの登録の要求を受信する。エンドポイントの登録は、前に接続されたことがないかまたは構成データを有していないエンドポイントを実装する制御システムに対応する制御ネットワーク上のノードまたはエンドポイントの接続および識別を参照する(例えば、図10のブロック1016での要求)。ブロック1104で、通信インターフェースの例602はノンス(例えば、許可コントローラの例606が生成する)をエンドポイントにエンドポイント用ソフトウェアインテグリティ測定値の要求と共に送信する。一部の実施例では、ノンスは「虚偽の報告をするエンドポイント」(例えば、単に以前生成された値を繰り返すエンドポイント)を検出する働きをする。図示の実施例では、エンドポイントは未だ構成されていない新たに実装されたデバイスなので、対応する構成インテグリティ測定値および/またはハードウェアインテグリティ測定値が対応する基準値に一致する有効な結果を生成しないと想定される。従って、図示の実施例では、ソフトウェアインテグリティ測定値は要求されるが、他の種類のインテグリティ測定値(例えば、ハードウェアインテグリティ測定値および/または構成インテグリティ測定値)は要求されない。しかし、それにもかかわらず、一部の実施例では、ハードウェアインテグリティ測定値および/または構成インテグリティ測定値がブロック1104でソフトウェアインテグリティ測定値と共に要求されてもよい。
ブロック1106で、通信インターフェースの例602はソフトウェアインテグリティ測定値の報告を受信する。一部の実施例では、エンドポイントは図8に関連して上述されているように最初に起動した時に、前もって生成されているので、報告されたソフトウェアインテグリティ測定値はソフトウェア測定レジスタ512に記憶されるどのような値にも対応する。ブロック1108で、インテグリティ測定データベースの例618は報告されたソフトウェアインテグリティ測定値を記憶する。一部の実施例では、インテグリティ測定値は基準値に対する引き続き実行される比較用および/または図16に関連して以下でより完全に説明するように監視システムに対する制御システムすべて(統合した全体)のインテグリティ検証用に記憶される。
ブロック1110で、インテグリティ測定コンパレータの例604はソフトウェアインテグリティ測定値をソフトウェア基準値と比較する。一部の実施例では、ソフトウェア基準値はエンドポイントデバイスの製造者が提供するデータに基づいたユーザインターフェース614を介してユーザによって前もって入力されている。この方法では、基準値はエンドポイントからの直接のフィードバックと無関係に設定することができるので、それによってエンドポイントが製造者の所有を離れた後であって、ネットワークに接続される前に(例えば、輸送中)、改ざんされる可能性を回避できる。一部の実施例では、ハードウェア基準値および/または構成基準値もまたエンジニアまたは他の人員によって入力されてもよい。他の実施例では、ソフトウェア基準値は以下でより完全に説明されるように、ブロック1106で初期のソフトウェアインテグリティ測定値に基づいて取得される。一部の実施例では、同様に、ハードウェア基準値および/または構成基準値を設定する初期データは対応するインテグリティ測定値の初期の計算から取得されてもよい。
ブロック1112で、インテグリティ測定コンパレータの例604は報告されたインテグリティ測定値が基準値と一致するかどうかを判定する。基準値は前もってユーザが手動で入力し、エンドポイントは製造者を離れて以降変更されていない場合、ソフトウェアインテグリティ測定値は基準値と一致するはずである。その場合、制御はブロック1114へ進み、そこで許可コントローラの例606は構成通信アクセス用のエンドポイントを承認する。一部の実施例では、構成通信アクセスはエンドポイントを構成するために使用される構成データをエンドポイントが受信することができるようにする(例えば、図7に関連して上述した構成ファイルに基づいて)。
インテグリティ測定値が基準値と一致しない場合(ブロック1112)制御はブロック1116へ進み、そこでインテグリティモニタコントローラの例612が管理者を促して不一致を上書きする。一部の実施例では、エンドポイントが初めて実装されて(例えば、新たに取得されたおよび/または設置されたデバイス)、かつ基準値が前もってユーザインターフェース614を介して手動で入力されていない時、インテグリティ測定値は基準値と一致することができない。従って、ブロック1116で提供されたプロンプトにより管理者は初めて報告されたインテグリティ測定値が所望の値に対応する場合、そのインテグリティ測定値を新しい基準値として受け入れることができる。このように、ブロック1118で、インテグリティモニタコントローラの例612は上書きが承認されるかどうか判定する。承認された場合、制御はブロック1120へ進み、そこでインテグリティモニタコントローラの例612は報告されたインテグリティ測定値を新しい基準値として割り当てる。この方法では、ソフトウェア基準値は、上述のように手動の値の入力を必要とせず、エンドポイントのインテグリティ測定値に基づいて初期設定されてもよい。そのような実施例では、報告されたインテグリティ測定値はブロック1120で基準値として割り当てられるので、インテグリティ測定値と基準値は必ず一致して、その結果制御は1114へ進んで、構成通信アクセス用エンドポイントを承認する。
エンドポイントが環境設定通信アクセスの権限を認められると(ブロック1114)、図7に関連して上述したように、環境設定モジュール226からエンドポイントへ環境設定ファイルを送信できる。その後、エンドポイントは再起動して環境設定プロセスを完了できる。こうして、エンドポイントは、有効な環境設定データを獲得して、エンドポイントのインテグリティを検証できるようにソフトウェア、ハードウェア、および環境設定のインテグリティ測定値の各々にエンドポイントの適正な状態を反映させる。ブロック1122で、例示的な通信インタフェース602は、環境設定の再起動後にエンドポイントから受け入れ要求を受信する。エンドポイントの受け入れとは、エンドポイントを実装しようとする、エンドポイントが登録済みである(例えば、ブロック1102での登録要求への応答としてブロック1114で)制御システムに関連付けられた制御ネットワーク内の他のエンドポイントとの通信に受け入れられる(例えば、通信が可能になる)ということを指す。ブロック1124で、例示的なインテグリティモニタコントローラ612は環境設定が全て完了したエンドポイントのインテグリティを検証する。環境設定が万全なエンドポイントのインテグリティを検証する例示的な方法について以下に図12を参照しながら詳述する。ブロック1126で、例示的なインテグリティモニタコントローラ612は、制御システムの制御ネットワークに受け入れられる別のエンドポイントがあるか否かを決定する。別のエンドポイントがある場合、処理はブロック1102へ戻る。そうでない場合、図11の例示的な方法は終了する。
ブロック1118へ戻り、例示的なインテグリティモニタコントローラ612が書き換えは認められない(例えば、管理者が、エンドポイントから報告されたソフトウェアインテグリティ測定値を新しい基準値として使用したくない)と決定した場合、処理はブロック1128へ進み、例示的な許可コントローラ606はエンドポイントをファームウェア更新通信アクセスに制限する。いくつかの実施例では、ファームウェア更新通信アクセスはエンドポイントをファームウェア更新の受信に制限し、それ以外のエンドポイントとの通信を許可しない。エンドポイントの通信アクセス制限(ブロック1128)後、処理はブロック1126へ進み、例示的なインテグリティモニタコントローラは例示的な方法を終了するか繰り返して別のエンドポイントを処理するかを決定する。
図12は、図2、3および/または6の例示的なシステムインテグリティモニタ228を実装して制御システムの制御ネットワーク内で通信アクセスを探すエンドポイントのインテグリティをチェックする例示的な方法を示すフローチャートである。具体的には、図12の例示的な方法は図11のブロック1124に対応する。図12の例示的な方法はブロック1202から開始し、ここで例示的な通信インタフェース602は、エンドポイントのインテグリティ測定要求によって当該エンドポイントへノンス(例えば、例示的な許可コントローラ606によって生成された)を送信する。図11のブロック1104ではソフトウェアインテグリティ測定値のみが要求されたが、これとは対照的に、この時点では、エンドポイントは環境設定が全て完了しており、基準値データベース616はそのようなインテグリティ測定値と比較する全ての該当する基準値を有しているため、例示的な通信インタフェース602はソフトウェア、ハードウェア、および環境設定のインテグリティ測定値の各々の値を要求できる。いくつかの実施例では、ソフトウェア検証(図11)が実行され、最初に、製造業者から提供されたエンドポイントが予想通りに動作していることを確認し、次いで当該エンドポイントが使用されている特定のアプリケーションに関して当該エンドポイントが正しく環境設定されている(図12)ことを検証する。いくつかの実施例では、図11および12の例示的な方法を組み合わせて、エンドポイントのソフトウェア、ハードウェア、および環境設定のインテグリティが同時に検証される。
ブロック1204で、例示的な通信インタフェース602はインテグリティ測定値のレポートを受信する。いくつかの実施例では、インテグリティ測定値はランタイム中に行う計算に基づく。そのようないくつかの実施例では、報告されたソフトウェアインテグリティ測定値はソフトウェア測定値レジスタ512内に以前に記憶された値に対応する。これは、エンドポイントが再起動されず新しい測定値が得られていないためである。すなわち、ソフトウェアインテグリティ測定値は、エンドポイントが最後に(例えば、図11のブロック1122の直前に)再起動された時の以前の生成値に対応していてもよい。これとは対照的に、いくつかの実施例では、ハードウェアおよび環境設定のインテグリティ測定値はランタイム中に新たに生成される。ブロック1206で、例示的なインテグリティ測定値データベース618は報告されたインテグリティ測定値を記憶する。
ブロック1208で、例示的なインテグリティ測定値コンパレータ604は、報告されたインテグリティ測定値を基準値と比較する。いくつかの実施例では、基準値は図11のブロック1102で受信された、かつ/またはブロック1120で割り当てられた値に対応する。ブロック1210で、例示的なインテグリティ測定値コンパレータ604は報告されたインテグリティ測定値が基準値に一致するか否かを決定する。一致しない場合、処理はブロック1212へ進み、例示的なインテグリティモニタコントローラ612は、管理者に対して不一致を解消するように促す。いくつかの実施例では、この促しによって管理者は報告されたインテグリティ測定値を新しい基準値として受け入れることができる。ブロック1214で、例示的なインテグリティモニタコントローラ612は書き換えが認められるか否かを決定する。認められる場合、処理はブロック1216へ進み、例示的なインテグリティモニタコントローラ612は報告されたインテグリティ測定値を基準値として割り当て、その後、処理はブロック1218へ進む。
ブロック1218で、例示的な許可コントローラ606は許可情報をエンドポイントに提供することでエンドポイントに対して無制限の通信アクセスを許可する。いくつかの実施例では、エンドポイントは無制限の通信アクセスを用いてエンドポイントが実装された制御ネットワーク内の他のエンドポイントと無制限に通信できる。いくつかの実施例では、無制限の通信アクセスは、エンドポイントが秘密および/または公開値を生成するために使用する許可情報をエンドポイントに提供することで可能になる。ブロック1210へ戻り、例示的なインテグリティ測定値コンパレータ604が報告されたインテグリティ測定値が基準値に一致すると決定した場合、処理は直接ブロック1218へ進む。エンドポイントが無制限の通信アクセスを許可される(ブロック1218)と、図12の例示的な方法は終了し、前に戻って図11の例示的な方法が完了する。
ブロック1214へ戻り、例示的なインテグリティモニタコントローラ612が書き換えは認められない(例えば、管理者が、報告されたインテグリティ測定値を新しい基準値として使用したくない)と決定した場合、処理はブロック1220へ進み、例示的なインテグリティ測定値コンパレータ604は報告されたソフトウェアインテグリティ測定値がソフトウェア基準値に一致するか否かを決定する。一致しない場合、エンドポイント上のソフトウェアが疑わしい。したがって、処理はブロック1222へ進み、例示的な許可コントローラ606はエンドポイントをファームウェア更新通信アクセスに制限する。エンドポイントに通信アクセスの制限(ブロック1222)後、図12の例示的な方法は終了し、前に戻って図11の例示的な方法が完了する。ブロック1220へ戻り、例示的なインテグリティ測定値コンパレータ604が報告されたソフトウェアインテグリティ測定値がソフトウェア基準値に一致すると決定した場合、処理はブロック1224へ進む。ブロック1224で、例示的な許可コントローラ606はエンドポイントを環境設定通信アクセスに制限する。その後、例示的な方法は終了し、前に戻って図12の例示的な方法が完了する。
図13は、図2、3および/または6の例示的なシステムインテグリティモニタ228を実装してランタイム中の制御システムの制御ネットワーク内のエンドポイントのインテグリティをチェックする例示的な方法を示すフローチャートである。すなわち、図11および12が、初期設定され制御ネットワーク上で環境設定されたエンドポイントのインテグリティを検証する例示的な方法を示す一方で、図13は、エンドポイントが動作中かつ/または稼働中である後の時点におけるエンドポイントのインテグリティの検証を示す。こうして、エンドポイントの獲得、インストール、および使用のための環境設定後に発生する潜在的なセキュリティ侵害を検出しそれに従って応答できる。
図13の例示的な方法はブロック1302で開始し、例示的なインテグリティモニタコントローラ612はエンドポイントのランタイムインテグリティを検証するタイミングであるか否かを決定する。制御システム内の多数のコンピュータデバイス(エンドポイント)は切断も再起動もされることなく長期間(例えば、数ヶ月または数年)にわたって動作している可能性がある。したがって、起動時間中にエンドポイントのインテグリティを検証することはソフトウェアスタック(ブート中にロードされる)の状態を確認するのに有用ではあるが、そのような試験はエンドポイントの潜在的な変更を検出するために充分な規則性をもって実行されない場合がある。したがって、いくつかの実施例では、ユーザは、ランタイムインテグリティをより規則的かつ頻繁な周期的または非周期的なスケジュールで定義することができる。いくつかの実施例では、ランタイムインテグリティ測定はネットワーク内の各エンドポイントに対して1日1回実行される。ただし、ランタイムインテグリティ試験を任意の好適なスケジュールで実施してもよい。さらに、いくつかの実施例では、例えば、エンドポイントがその動作環境である制御システムにとって有する重要性に基づいて、ある種のエンドポイントを他よりも頻繁に試験してもよい(例えば、重要なエンドポイントでは1時間ごとに)。追加的に、または別法として、いくつかの実施例では、ある種のインテグリティ測定(ソフトウェア、ハードウェア、または環境設定)が特定の時点で要求される。いくつかの実施例では、ソフトウェア、ハードウェア、および環境設定のインテグリティ測定のモニタリングに別々のスケジュールを適用してもよい。例示的なインテグリティモニタコントローラ612が、あるエンドポイントのランタイムインテグリティを検証するタイミングではないと決定した場合(ブロック1302)、例示的なインテグリティモニタコントローラ612はそのタイミングになるまで待つ。
エンドポイントのランタイムインテグリティの検証タイミングが訪れると、処理はブロック1304へ進み、例示的な通信インタフェース602は、エンドポイントのインテグリティ測定要求によって当該エンドポイントへノンス(例えば、例示的な許可コントローラ606によって生成された)を送信する。ブロック1306で、例示的な通信インタフェース602はインテグリティ測定値のレポートを受信する。いくつかの実施例では、インテグリティ測定値はランタイム中に行う計算に基づく。ただし、いくつかの実施例では、インテグリティ測定値はエンドポイントが最後に起動された時に生成されたインテグリティ測定値に基づくので、新しいソフトウェアインテグリティ測定値はランタイム中に生成されない。そのような実施例では、ソフトウェアインテグリティ測定値はエンドポイントが最後に起動された時に生成された値に対応する。これとは対照的に、いくつかの実施例では、ハードウェアおよび環境設定のインテグリティ測定値はランタイム中に新たに生成される。ブロック1308で、例示的なインテグリティ測定値データベース618は報告されたインテグリティ測定値を記憶する。
ブロック1310で、例示的なインテグリティ測定値コンパレータ604は、報告されたインテグリティ測定値を基準値と比較する。ブロック1312で、例示的なインテグリティ測定値コンパレータ604は報告されたインテグリティ測定値が基準値に一致するか否かを決定する。一致しない場合、処理はブロック1314へ進み、例示的なインテグリティモニタコントローラ612は不一致のインテグリティ測定値に基づいて応答を実施する。いくつかの実施例では、具体的な応答はどのタイプ(例えば、ソフトウェア、ハードウェア、および/または環境設定)のインテグリティ測定値が基準値に一致しなかったかによって変わる。いくつかの実施例では、応答の性質は、エンドポイントの性質および/またはその環境設定と対応するネットワーク内の他のエンドポイントとの関係の性質によって変わる。いくつかの実施例では、応答は、警報を生成するステップ(ブロック1316)、エンドポイントから受信する将来のデータに疑わしいという目印を付けるステップ(ブロック1318)、エンドポイントをファームウェア更新通信アクセスおよび/または環境設定する通信アクセスに制限するステップ(ブロック1320)、および/または冗長エンドポイントへ切り替えるステップ(ブロック1322)を含む。いくつかの実施例では、応答は、ブロック1316、1318、1320、1322の2つ以上の組み合わせを含む。いくつかの実施例では、実施される応答はエンドポイントの環境設定時にユーザによって定義される。適当な応答が実施された(ブロック1314)後で、処理はブロック1324へ進む。ブロック1312へ戻り、例示的なインテグリティ測定値コンパレータ604がインテグリティ測定値が基準値に一致すると決定した場合、エンドポイントのインテグリティが検証され、その後のアクションは不要である。そのような実施例では、処理は直接ブロック1324へ進む。
ブロック1324で、例示的なインテグリティモニタコントローラ612は検証すべき別のエンドポイントがあるか否かを決定する。別のエンドポイントがある場合、処理はブロック1302へ戻る。そうでない場合、処理はブロック1326へ進み、例示的なインテグリティモニタコントローラ612は処理を継続するか否かを決定する。継続する場合、処理はブロック1302へ戻る。そうでない場合、図13の例示的な方法は終了する。
上記の図11〜13は、図1の階層100の制御システムレベル106にある制御システム(例えば、図2の制御システム200)のプライマリワークステーション内へのSIM228の実装ステップに対応する。したがって、図11〜13は、階層100の制御システムレベル106に関連付けられた制御ネットワーク上の階層100レベルのデバイスレベル104にあるプロセス制御デバイス(例えば、コントローラ、I/Oデバイス、フィールドデバイスなど)に対する通信アクセスの環境設定およびインテグリティベースの許可に関する。追加的に、または別法として、図11〜13は、制御システムレベル106に関連付けられた制御ネットワーク上の、制御システムレベル106の異なるエンドポイント(例えば、ワークステーション、サーバなど)間の通信のインテグリティベースの許可に関する。したがって、いくつかの実施例では、図11〜13に関連付けられたSIM228は、通信が許可されている制御ネットワークに指定されたプライマリワークステーション(例えば、図2のプライマリワークステーション220)内に実装されている。さらに、そのような実施例では、IMM230は制御ネットワークに通信可能に接続された特定のデバイスに対応するエンドポイント内に実装されている。
これとは対照的に、上記の図14〜15は、図1の監視レベル108の階層100の監視システムレベル108にある監視システム(例えば、図3の監視システム300)のプライマリワークステーション内へのSIM228の実装ステップに対応する。したがって、図14〜15は、図1の監視システムレベル108に関連付けられた監視システム(例えば、図3の監視システム300)のプライマリワークステーション内のエンドポイントに対する通信アクセス、および/または制御システムレベル106にある従属システム(例えば、図3の制御システム200、302)と監視システムレベル108にある他のエンドポイントとの間の通信アクセスのインテグリティベースの許可に関する。したがって、いくつかの実施例では、図14〜15に関連して参照されるSIM228は、通信が許可されている監視ネットワークに指定されたプライマリワークステーション(例えば、図3のプライマリワークステーション306)内に実装されている。さらに、そのような実施例では、監視ネットワーク310に受け入れられるエンドポイントはIMM230を実装する個々のコンピュータデバイス(例えば、ワークステーション308、サーバ304など)に対応する。追加的に、または別法として、いくつかの実施例では、監視ネットワーク310に受け入れられるエンドポイントは制御システムレベル106にある監視システムの従属システム(例えば、制御システム200)に対応する。そのようないくつかの実施例では、従属システムに関連付けられたプライマリワークステーション(例えば、制御システム200のプライマリワークステーション220)内に実装されたSIM228は、図16に関連して以下に述べる監視システムのワークステーション内に実装されたSIM228によって要求されるインテグリティ測定値を提供する
図14は、図2、3および/または6の例示的なシステムインテグリティモニタ228を実装して監視システムへの受け入れを探すエンドポイントのインテグリティを検証する例示的な方法を示すフローチャートである。図示の実施例では、SIM228は監視システムのプライマリワークステーション(例えば、監視システム300のプライマリワークステーション306)内に実装されたSIMに対応する。図14の例示的な方法はブロック1400から開始し、例示的な通信インタフェース602は監視システム内のエンドポイントから接続要求を受信する。いくつかの実施例では、要求は監視システムの監視ネットワークに通信可能に接続された特定のエンドポイント(例えば、ワークステーション308、サーバ304など)から送信される。いくつかの実施例では、要求は従属システムのプライマリワークステーション(例えば、制御システム200のプライマリワークステーション220)から送信される。ブロック1402で、例示的な通信インタフェース602は、エンドポイントのインテグリティ測定要求によって当該エンドポイントへノンス(例えば、例示的な許可コントローラ606によって生成された)を送信する。
ブロック1404で、例示的な通信インタフェース602はインテグリティ測定値のレポートを受信する。いくつかの実施例では、監視システムレベル108にあるエンドポイントのインテグリティ測定値は、制御システムレベル106にあるエンドポイントによって実装されたIMMに関して上述したのと同じまたは同様の方法で当該エンドポイントによって実装されたIMMによって生成される。ただし、監視システムは、通常、制御システムと同様に、特に指定された環境設定を有していない。したがって、いくつかの実施例では、報告されたインテグリティ測定値は環境設定のインテグリティ測定値を含まない。他方、エンドポイントが制御システムに対応するいくつかの実施例では、インテグリティ測定値は、図16に関連して以下に詳述するように、制御システム内の全エンドポイントから受信する環境設定のインテグリティ測定値の組み合わせに対応する値を含んでいてもよい。ブロック1406で、例示的なインテグリティ測定値データベース618は報告されたインテグリティ測定値を記憶する。
ブロック1408で、例示的なインテグリティ測定値コンパレータ604は、報告されたインテグリティ測定値を基準値と比較する。ブロック1410で、例示的なインテグリティ測定値コンパレータ604は報告されたインテグリティ測定値が基準値に一致するか否かを決定する。一致しない場合、処理はブロック1412へ進み、例示的なインテグリティモニタコントローラ612は、管理者に対して不一致を解消するように促す。ブロック1414で、例示的なインテグリティモニタコントローラ612は書き換えが認められるか否かを決定する。認められる場合、処理はブロック1416へ進み、例示的なインテグリティモニタコントローラ612は報告されたインテグリティ測定値を基準値として割り当てる。ブロック1418で、例示的な許可コントローラ606は許可情報をエンドポイントに提供することでエンドポイントに対して無制限の通信アクセスを許可する。ブロック1410へ戻り、例示的なインテグリティ測定値コンパレータ604が報告されたインテグリティ測定値が基準値に一致すると決定した場合、処理は直接ブロック1418へ進む。ブロック1420で、例示的なインテグリティモニタコントローラ612は別のエンドポイントがあるか否かを決定する。別のエンドポイントがある場合、処理はブロック1400へ戻る。そうでない場合、図14の例示的な方法は終了する。
ブロック1414へ戻り、例示的なインテグリティモニタコントローラ612が書き換えは認められない(例えば、管理者が、報告されたインテグリティ測定値を新しい基準値として使用したくない)と決定した場合、処理はブロック1422へ進む。ブロック1422で、例示的な許可コントローラ606は、エンドポイントの通信アクセスを制限する。いくつかの実施例では、通信アクセスは拒否される(すなわち、通信アクセスは提供されない)。いくつかの実施例では、エンドポイントはファームウェア更新通信アクセスに制限される。別の実施例では、通信は可能であるが、特定ノードからのデータが疑わしいという目印または表示が付けられる。いくつかの実施例では、監視システム上のある種のエンドポイントに通信アクセスが提供され、その他のエンドポイントへの通信は阻止される。エンドポイントの通信アクセスの制限(ブロック1422)後、処理はブロック1420へ進み、例示的なインテグリティモニタコントローラ612は上記の別のエンドポイントがあるか否かを決定する。
図15は、図2、3および/または6の例示的なシステムインテグリティモニタ228を実装してランタイム中の監視システムの監視ネットワーク内のエンドポイントのインテグリティをチェックする例示的な方法を示すフローチャートである。すなわち、図14が、最初に監視システムに受け入れられようとするエンドポイントのインテグリティを検証する例示的な方法を示す一方で、図15は、エンドポイントが動作中かつ/または稼働中である後の時点におけるエンドポイントのインテグリティの検証を示す。こうして、エンドポイントの獲得、インストール、および使用のための環境設定後に発生する潜在的なセキュリティ侵害を検出しそれに従って応答できる。上記のように、図15に示す実施例では、SIM228は監視システムのプライマリワークステーション(例えば、監視システム300のプライマリワークステーション306)内に実装されたSIMに対応する。
図15の例示的な方法はブロック1502から開始し、例示的なインテグリティモニタコントローラ612はエンドポイントのランタイムインテグリティを検証するタイミングであるか否かを決定する。いくつかの実施例では、ランタイムインテグリティ測定はあるゆる好適な周期的または非周期的なスケジュールで実行される。例えば、ネットワーク内の各エンドポイントについて、ランタイムインテグリティ測定を1日1回要求してもよい。さらに、いくつかの実施例では、エンドポイントがその動作環境である制御システムにとって有する重要性に基づいてある種のエンドポイントを他のエンドポイントよりも頻繁に試験してもよい。1例示的なインテグリティモニタコントローラ612が、あるエンドポイントのランタイムインテグリティを検証するタイミングではないと決定した場合(ブロック1502)、例示的なインテグリティモニタコントローラ612はそのタイミングになるまで待つ。
エンドポイントのランタイムインテグリティの検証タイミングが訪れると、処理はブロック1504へ進み、例示的な通信インタフェース602は、エンドポイントのインテグリティ測定要求によって当該エンドポイントへノンス(例えば、例示的な許可コントローラ606によって生成された)を送信する。ブロック1506で、例示的な通信インタフェース602はインテグリティ測定値のレポートを受信する。いくつかの実施例では、監視システムレベル108にあるエンドポイントのインテグリティ測定値は、制御システムレベル106にあるエンドポイントによって実装されたIMMに関して上述したのと同じまたは同様の方法で当該エンドポイントによって実装されたIMMによって生成される。ただし、いくつかの実施例では、監視システムが通常、システムの環境設定方法を定義した環境設定ファイルを有していないため、インテグリティ測定値は環境設定のインテグリティ測定値を含まない。他方、エンドポイントが制御システムに対応するいくつかの実施例では、インテグリティ測定値は、図16に関連して以下に詳述するように、制御システム内の全エンドポイントから受信する環境設定のインテグリティ測定値の組み合わせに対応する値を含んでいてもよい。ブロック1508で、例示的なインテグリティ測定値データベース618は報告されたインテグリティ測定値を記憶する。
ブロック1510で、例示的なインテグリティ測定値コンパレータ604は、報告されたインテグリティ測定値を基準値と比較する。ブロック1512で、例示的なインテグリティ測定値コンパレータ604は報告されたインテグリティ測定値が基準値に一致するか否かを決定する。一致しない場合、処理はブロック1514へ進み、例示的なインテグリティモニタコントローラ612は不一致のインテグリティ測定値に基づいて応答を実施する。いくつかの実施例では、具体的な応答はどのタイプ(例えば、ソフトウェア、ハードウェア、および/または環境設定)のインテグリティ測定値が基準値に一致しなかったかによって変わる。いくつかの実施例では、応答の性質は、エンドポイントの性質および/または対応するネットワーク内の他のエンドポイントとの関係の性質によって変わる。いくつかの実施例では、応答は、警報を生成するステップ(ブロック1516)と、エンドポイントから受信する将来のデータに疑わしいという目印を付けるステップ(ブロック1518)、および/またはエンドポイントの通信アクセスを制限するステップ(ブロック1520)を含む。いくつかの実施例では、通信アクセスは拒否される(すなわち、通信アクセスは提供されない)。いくつかの実施例では、エンドポイントはファームウェア更新通信アクセスに制限される。別の実施例では、通信は可能であるが、特定ノードからのデータが疑わしいという目印または表示が付けられる。いくつかの実施例では、監視システム上のある種のエンドポイントに通信アクセスが提供され、その他のエンドポイントへの通信は阻止される。いくつかの実施例では、応答は、ブロック156、158、1520、および1522の2つ以上の組み合わせを含む。いくつかの実施例では、実施される応答はエンドポイントの環境設定時にユーザによって定義される。
適当な応答が実施された(ブロック1514)後で、処理はブロック1522へ進む。ブロック1512へ戻り、例示的なインテグリティ測定値コンパレータ604がインテグリティ測定値が基準値に一致すると決定した場合、エンドポイントのインテグリティが検証され、その後のアクションは不要である。そのような実施例では、処理は直接ブロック1522へ進む。ブロック1522で、例示的なインテグリティモニタコントローラ612は検証すべき別のエンドポイントがあるか否かを決定する。別のエンドポイントがある場合、処理はブロック1502へ戻る。そうでない場合、処理はブロック1526へ進み、例示的なインテグリティモニタコントローラ612は処理を継続するか否かを決定する。継続する場合、処理はブロック1502へ戻る。そうでない場合、図15の例示的な方法は終了する。
図16は、図2、3および/または6の例示的なシステムインテグリティモニタ(SIM)228を実装して下位レベルのエンドポイントのシステム(例えば、図3の監視システム300内のエンドポイントとしての制御システム200)に対応するエンドポイントに関して組み合わせのインテグリティ測定値を生成する例示的な方法を示すフローチャートである。すなわち、図16に示す実施例では、SIM228は監視システムのプライマリワークステーション(例えば、監視システム300のプライマリワークステーション306)と通信する制御システムのプライマリワークステーション(例えば、制御システム200のプライマリワークステーション220)内に実装されたSIMに対応する。言い換えると、監視システム300のプライマリワークステーション306の観点から、図6に実装されたSIM228は、上記のIMM230と同じまたは同様の方法でインテグリティ測定値を報告するよう機能する。ただし、以下に詳述するように、そのようなインテグリティ測定値を獲得または収集するために、SIM228は、SIM228がモニタしている下位レベルのエンドポイント内に実装されたIMM230からインテグリティ測定値を先に獲得または収集する必要がある。
図16の例示的な方法はブロック1602から開始し、例示的な通信インタフェース602は、要求を用いて、従属システム(例えば、監視システム内の制御システム)に対応するエンドポイントのインテグリティ測定値のシステムインテグリティモニタからノンスを受信する。いくつかの実施例では、エンドポイントはサブシステム全体を指すとはいえ、エンドポイントは要求を受信するSIM228を実装するサブシステム内のプライマリワークステーションによって効果的に表される。いくつかの実施例では、要求によって提供されるノンス値は応答を生成するために使用しなければならない。ブロック1604で、例示的なインテグリティ測定セルフテスター504は、SIMのインテグリティ測定機能を試験する。ブロック1606で、例示的なインテグリティモニタコントローラ612はインテグリティ測定機能が正常に働いているか(例えば、出力が予想通りである)か否かを決定する。働いていない場合、図16の例示的な方法は終了する。いくつかの実施例では、インテグリティモニタコントローラ612は、方法が終了する前に試験が失敗したことを示すエラーメッセージを生成する。例示的なインテグリティモニタコントローラ612がインテグリティ測定機能が正常に働いていると決定した場合(ブロック1606)、処理はブロック1608へ進む。
ブロック1608で、例示的なインテグリティモニタコントローラ612は全てのインテグリティ設定値レジスタ622、624、626をクリアする。ブロック1610で、例示的なインテグリティモニタコントローラ612は、従属システム内のエンドポイントから受信したソフトウェアインテグリティ測定値を例示的なソフトウェア測定値レジスタ622に追加する。いくつかの実施例では、ソフトウェアインテグリティ測定値は、対応するエンドポイントモニタしているSIM228によって以前に要求されたインテグリティ測定値データベース618から得られる。別の実施例では、SIM228はブロック1602で受信した要求に応答してソフトウェアインテグリティ測定値を要求する。ブロック1612で、例示的なインテグリティモニタコントローラ612は、従属システム内のエンドポイントから受信したハードウェアインテグリティ測定値を例示的なハードウェア測定値レジスタ624に追加する。いくつかの実施例では、ハードウェアインテグリティ測定値は対応するエンドポイントモニタしているSIM228によって以前に要求されたインテグリティ測定値データベース618から得られる。別の実施例では、SIM228はブロック1602で受信した要求に応答してハードウェアインテグリティ測定値を要求する。ブロック1614で、例示的なインテグリティモニタコントローラ612は、従属システム内のエンドポイントから受信した環境設定のインテグリティ測定値を例示的な環境設定測定値レジスタ626に追加する。いくつかの実施例では、環境設定のインテグリティ測定値は対応するエンドポイントモニタしているSIM228によって以前に要求されたインテグリティ測定値データベース618から得られる。別の実施例では、SIM228はブロック1602で受信した要求に応答して環境設定のインテグリティ測定値を要求する。
ブロック1616で、例示的なインテグリティモニタコントローラ612は従属システム内に別のエンドポイントがあるか否かを決定する。別のエンドポイントがある場合、処理はブロック1610、1612、および1614へ戻り、エンドポイントから受信した対応するインテグリティ測定値を対応するレジスタ622、624、626に追加する。いくつかの実施例では、インテグリティ測定値は、以前に追加されたインテグリティ測定値に付加することでそれぞれのレジスタに追加される。例示的なインテグリティモニタコントローラ612が従属システム内にこれ以上エンドポイントはないと決定した場合(ブロック1616)、処理はブロック1618へ進み、例示的なインテグリティ測定値ジェネレータ608は従属システムのインテグリティ測定値の組み合わせを生成する。いくつかの実施例では、インテグリティ測定値の組み合わせはソフトウェア、ハードウェア、および環境設定レジスタ622、624、626の各々に記憶された値の文字列のチェックサムを計算することによって生成される。ブロック1620で、例示的な通信インタフェース602はインテグリティ測定値の組み合わせのレポートを監視システムのSIMへ送信し、この時点で図16の例示的な方法は終了する。
図17は、図7の例示的な方法を実行して図2および/または4の例示的な環境設定モジュール226を実施するために使用でき、かつ/またはプログラミングできる例示的なプロセッサプラットフォーム1700のブロック図である。プロセッサプラットフォーム1700は、例えば、サーバ、パーソナルコンピュータ、移動体デバイス(例えば、携帯電話、スマートフォン、iPad(商標)などのタブレット)、パーソナルディジタルアシスタント(PDA)、インターネット装置、DVDプレーヤー、CDプレーヤー、ディジタルビデオレコーダ、ブルーレイプレーヤー、ゲーム機、パーソナルビデオレコーダ、セットトップボックス、またはその他の任意のタイプのコンピュータデバイスであってもよい。
図示の実施例のプロセッサプラットフォーム1700は、プロセッサ1712を含む。図示の実施例のプロセッサ1712はハードウェアである。例えば、プロセッサ1712は、任意の所望のファミリまたは製造業者から入手できる1つ又は複数の集積回路、論理回路、マイクロプロセッサまたはコントローラによって実施できる。
図示の実施例のプロセッサ1712はローカルメモリ1713(例えば、キャッシュ)を含む。図示の実施例では、プロセッサ1712は例示的な環境設定ファイルジェネレータ404および/または例示的な基準値ジェネレータ406を実施する。図示の実施例のプロセッサ1712は、揮発性メモリ1714と不揮発性メモリ1716とを含むメインメモリとバス1718を介して通信している。揮発性メモリ1714は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、ラムバスダイナミックランダムアクセスメモリ(RDRAM)および/またはその他の任意のタイプのランダムアクセスメモリデバイスによって実施できる。不揮発性メモリ1716は、フラッシュメモリおよび/またはその他の任意の所望のタイプのメモリデバイスによって実施できる。メインメモリ1714、1716へのアクセスはメモリコントローラによって制御されている。
図示の実施例のプロセッサプラットフォーム1700は、インタフェース回路1720をさらに含む。インタフェース回路1720は、イーサネット(登録商標)インタフェース、ユニバーサルシリアルバス(USB)、および/またはPCIエクスプレスインタフェースなどの任意のタイプのインタフェース標準によって実施できる。
図示の実施例では、1つ又は複数の入力デバイス1722がインタフェース回路1720に接続されている。入力デバイス1722を用いて、ユーザはプロセッサ1712にデータおよびコマンドを入力できる。入力デバイスは、例えば、オーディオセンサ、マイクロフォン、カメラ(スチールまたはビデオ)、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイントおよび/または音声認識システムによって実施できる。
図示の実施例のインタフェース回路1720には、1つ又は複数の出力デバイス1724も接続されている。出力デバイス1724は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ、陰極線管ディスプレイ(CRT)、タッチスクリーン、タクタイル出力デバイス、発光ダイオード(LED)、プリンタおよび/またはスピーカ)によって実施できる。したがって、図示の実施例のインタフェース回路1720は、通常、グラフィックスドライバカード、グラフィックスドライバチップまたはグラフィックスドライバプロセッサを含む。
図示の実施例のインタフェース回路1720は、ネットワーク1726(例えば、イーサネット(登録商標)接続、ディジタル加入者線(DSL)、電話回線、同軸ケーブル、セルラ電話システムなど)を介した外付けマシン(例えば、任意の種類のコンピュータデバイス)とのデータ交換を容易にする送信機、受信機、送受信機、モデムおよび/またはネットワークインタフェースカードなどの通信デバイスをさらに含む。
図示の実施例のプロセッサプラットフォーム1700は、ソフトウェアおよび/またはデータを記憶する1つ又は複数の大容量記憶装置1728をさらに含む。例えば、大容量記憶装置1728は図4の例示的な環境設定データベース408を含んでいてもよい。そのような大容量記憶装置1728の例は、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、RAIDシステム、およびディジタルバーサタイルディスク(DVD)ドライブを含む。
図7の方法を実施するコード化命令1732は、大容量記憶装置1728内に、揮発性メモリ1714内に、不揮発性メモリ1716内に、および/またはCDもしくはDVDなどの着脱式の有形コンピュータ可読記憶媒体上に記憶できる。
図18は、図8〜10の例示的な方法を実行して図2、3、および/または5の例示的なインテグリティ測定モジュール230を実施するために使用でき、かつ/またはプログラミングできる例示的なプロセッサプラットフォーム1800のブロック図である。プロセッサプラットフォーム1800は、例えば、サーバ、パーソナルコンピュータ、移動体デバイス(例えば、携帯電話、スマートフォン、iPad(商標)などのタブレット)、パーソナルディジタルアシスタント(PDA)、インターネット装置、DVDプレーヤー、CDプレーヤー、ディジタルビデオレコーダ、ブルーレイプレーヤー、ゲーム機、パーソナルビデオレコーダ、セットトップボックス、またはその他の任意のタイプのコンピュータデバイスであってもよい。
図示の実施例のプロセッサプラットフォーム1800は、プロセッサ1812を含む。図示の実施例のプロセッサ1812はハードウェアである。例えば、プロセッサ1812は、任意の所望のファミリまたは製造業者から入手できる1つ又は複数の集積回路、論理回路、マイクロプロセッサまたはコントローラによって実施できる。
図示の実施例のプロセッサ1812はローカルメモリ1813(例えば、キャッシュ)を含む。図示の実施例では、プロセッサ1812は、例示的なインテグリティ測定値ジェネレータ502、例示的なインテグリティ測定値セルフテスター504、例示的なインテグリティ測定値コントローラ506、および/または例示的な通信オーセンティケータ508を実施する。図示の実施例のプロセッサ1812は、揮発性メモリ1814と不揮発性メモリ1816とを含むメインメモリとバス1818を介して通信している。揮発性メモリ1814は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、ラムバスダイナミックランダムアクセスメモリ(RDRAM)および/またはその他の任意のタイプのランダムアクセスメモリデバイスによって実施できる。不揮発性メモリ1816は、フラッシュメモリおよび/またはその他の任意の所望のタイプのメモリデバイスによって実施できる。メインメモリ1814、1816へのアクセスはメモリコントローラによって制御されている。
図示の実施例のプロセッサプラットフォーム1800は、インタフェース回路1820をさらに含む。インタフェース回路1820は、イーサネット(登録商標)インタフェース、ユニバーサルシリアルバス(USB)、および/またはPCIエクスプレスインタフェースなどの任意のタイプのインタフェース標準によって実施できる。
図示の実施例では、1つ又は複数の入力デバイス1822がインタフェース回路1820に接続されている。入力デバイス1822を用いて、ユーザはプロセッサ1812にデータおよびコマンドを入力できる。入力デバイスは、例えば、オーディオセンサ、マイクロフォン、カメラ(スチールまたはビデオ)、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイントおよび/または音声認識システムによって実施できる。
図示の実施例のインタフェース回路1820には、1つ又は複数の出力デバイス1824も接続されている。出力デバイス1824は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ、陰極線管ディスプレイ(CRT)、タッチスクリーン、タクタイル出力デバイス、発光ダイオード(LED)、プリンタおよび/またはスピーカ)によって実施できる。したがって、図示の実施例のインタフェース回路1820は、通常、グラフィックスドライバカード、グラフィックスドライバチップまたはグラフィックスドライバプロセッサを含む。
図示の実施例のインタフェース回路1820は、ネットワーク1826(例えば、イーサネット(登録商標)接続、ディジタル加入者線(DSL)、電話回線、同軸ケーブル、セルラ電話システムなど)を介した外付けマシン(例えば、任意の種類のコンピュータデバイス)とのデータ交換を容易にする送信機、受信機、送受信機、モデムおよび/またはネットワークインタフェースカードなどの通信デバイスをさらに含む。
図示の実施例のプロセッサプラットフォーム1800は、ソフトウェアおよび/またはデータを記憶する1つ又は複数の大容量記憶装置1828をさらに含む。例えば、大容量記憶装置1928は図5の例示的なソフトウェア測定値レジスタ512、例示的な環境設定測定値レジスタ514、例示的なハードウェア測定値レジスタ516、例示的な許可情報データベース518、および/または例示的な環境設定データベース520を含んでいてもよい。そのような大容量記憶装置1828の例は、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、RAIDシステム、およびディジタルバーサタイルディスク(DVD)ドライブを含む。
図8〜10の方法を実施するコード化命令1832は、大容量記憶装置1828内に、揮発性メモリ1814内に、不揮発性メモリ1816内に、および/またはCDまたはDVDなどの着脱式の有形コンピュータ可読記憶媒体上に記憶できる。
図19は、図11〜16の例示的な方法を実行して図2、3、および/または6の例示的なインテグリティ測定モジュール228を実施するために使用でき、かつ/またはプログラミングできる例示的なプロセッサプラットフォーム1900のブロック図である。プロセッサプラットフォーム1900は、例えば、サーバ、パーソナルコンピュータ、移動体デバイス(例えば、携帯電話、スマートフォン、iPad(商標)などのタブレット)、パーソナルディジタルアシスタント(PDA)、インターネット装置、DVDプレーヤー、CDプレーヤー、ディジタルビデオレコーダ、ブルーレイプレーヤー、ゲーム機、パーソナルビデオレコーダ、セットトップボックス、またはその他の任意のタイプのコンピュータデバイスであってもよい。
図示の実施例のプロセッサプラットフォーム1900は、プロセッサ1912を含む。図示の実施例のプロセッサ1912はハードウェアである。例えば、プロセッサ1912は、任意の所望のファミリまたは製造業者から入手できる1つ又は複数の集積回路、論理回路、マイクロプロセッサまたはコントローラによって実施できる。
図示の実施例のプロセッサ1912はローカルメモリ1913(例えば、キャッシュ)を含む。図示の実施例では、プロセッサ1912は、例示的なインテグリティ測定値コンパレータ604、例示的な許可コントローラ606、例示的なインテグリティ測定値ジェネレータ608、例示的なインテグリティ測定値セルフテスター610、および/または例示的なインテグリティモニタコントローラ612を実施する。図示の実施例のプロセッサ1912は、揮発性メモリ1914と不揮発性メモリ1916とを含むメインメモリとバス1918を介して通信している。揮発性メモリ1914は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、ラムバスダイナミックランダムアクセスメモリ(RDRAM)および/またはその他の任意のタイプのランダムアクセスメモリデバイスによって実施できる。不揮発性メモリ1916は、フラッシュメモリおよび/またはその他の任意の所望のタイプのメモリデバイスによって実施できる。メインメモリ1914、1916へのアクセスはメモリコントローラによって制御されている。
図示の実施例のプロセッサプラットフォーム1900は、インタフェース回路1920をさらに含む。インタフェース回路1920は、イーサネット(登録商標)インタフェース、ユニバーサルシリアルバス(USB)、および/またはPCIエクスプレスインタフェースなどの任意のタイプのインタフェース標準によって実施できる。
図示の実施例では、1つ又は複数の入力デバイス1922がインタフェース回路1920に接続されている。入力デバイス1922を用いて、ユーザはプロセッサ1912にデータおよびコマンドを入力できる。入力デバイスは、例えば、オーディオセンサ、マイクロフォン、カメラ(スチールまたはビデオ)、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイントおよび/または音声認識システムによって実施できる。
図示の実施例のインタフェース回路1920には、1つ又は複数の出力デバイス1924も接続されている。出力デバイス1924は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ、陰極線管ディスプレイ(CRT)、タッチスクリーン、タクタイル出力デバイス、発光ダイオード(LED)、プリンタおよび/またはスピーカ)によって実施できる。したがって、図示の実施例のインタフェース回路1920は、通常、グラフィックスドライバカード、グラフィックスドライバチップまたはグラフィックスドライバプロセッサを含む。
図示の実施例のインタフェース回路1920は、ネットワーク1926(例えば、イーサネット(登録商標)接続、ディジタル加入者線(DSL)、電話回線、同軸ケーブル、セルラ電話システムなど)を介した外付けマシン(例えば、任意の種類のコンピュータデバイス)とのデータ交換を容易にする送信機、受信機、送受信機、モデムおよび/またはネットワークインタフェースカードなどの通信デバイスをさらに含む。
図示の実施例のプロセッサプラットフォーム1900は、ソフトウェアおよび/またはデータを記憶する1つ又は複数の大容量記憶装置1928をさらに含む。例えば、大容量記憶装置1928は、図6の例示的な基準値データベース616、例示的なインテグリティ測定値データベース618、例示的な許可情報データベース620、例示的なソフトウェア測定値レジスタ622、例示的なハードウェア測定値レジスタ624、および/または例示的な環境設定測定値レジスタ626を含んでいてもよい。そのような大容量記憶装置1928の例は、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、RAIDシステム、およびディジタルバーサタイルディスク(DVD)ドライブを含む。
図11〜16の方法を実施するコード化命令1932は、大容量記憶装置1928内に、揮発性メモリ1914内に、不揮発性メモリ1916内に、および/またはCDまたはDVDなどの着脱式の有形コンピュータ可読記憶媒体上に記憶できる。
以上の説明から、上記に開示された方法、装置および製品が工業企業システム内の構成要素のセキュリティおよび信頼性を向上させることが理解されよう。相手先商標製造会社からの品質保証に基づくネットワーク通信デバイス(エンドポイント)内のインテグリティを想定する既存の手法とは異なり、本明細書に開示する実施例はそのようなエンドポイントのインテグリティを検証する。さらに、そのような検証はエンドポイントが最初に特定のネットワークに登録され、かつ/または受け入れられた時に、および/またはエンドポイントがランタイム中に動作している間に達成できる。こうして、エンドポイントのインテグリティを危殆化させる潜在的なセキュリティ侵害および/またはその他の障害を発生時にかかわらず検出して、そのようなエンドポイントからの通信が他のエンドポイントに影響を与えないように保証し、危殆化したエンドポイントに関して是正措置を講じることを可能にする。さらに、本明細書に開示する教示は、上位レベルの監視システムに従属する対応するシステムの検証のための下位レベルのエンドポイントのインテグリティ測定値のロールアップおよび組み合わせを可能にする。
本明細書では、特定の方法、装置および製品について開示してきたが、本発明の適用範囲はそれに限定されない。逆に、本発明は、本発明の請求の範囲に記載する全ての方法、装置および製品を含む。