(57)【要約】  真正性検証システム８０は、信頼度算出部８１と、真正性検証部８２とを備えている。信頼度算出部８１は、コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度をそのコンポーネントごとに算出する。真正性検証部８２は、信頼度に基づいてコンポーネントの真正性検証を行う。
2019012626.tif 000002
【特許請求の範囲】
【請求項１】
コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度を当該コンポーネントごとに算出する信頼度算出部と、
前記信頼度に基づいてコンポーネントの真正性検証を行う真正性検証部とを備えた
ことを特徴とする真正性検証システム。
【請求項２】
信頼度算出部は、真正性検証を最後に行ってからの経過時間に基づいて決定される信頼度を算出する
請求項１記載の真正性検証システム。
【請求項３】
真正性検証の対象とするコンポーネントが接続されている通信ネットワークの環境情報を収集する網環境収集部を備え、
信頼度算出部は、収集された情報に基づいて、算出された信頼度を補正する
請求項１または請求項２に記載の真正性検証システム。
【請求項４】
信頼度算出部は、コンポーネント自身が算出した自己の信頼度を用いて、当該コンポーネントの信頼度を算出する
請求項１から請求項３のうちのいずれか１項に記載の真正性検証システム。
【請求項５】
信頼度算出部は、真正性検証の方法に基づいて、真正性検証が簡易なほど信頼度を低く算出し、真正性検証が複雑なほど信頼度を高く算出する
請求項１から請求項４のうちのいずれか１項に記載の真正性検証システム。
【請求項６】
コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度を当該コンポーネントごとに算出し、
算出された信頼度に基づいてコンポーネントの真正性検証を行う
ことを特徴とする真正性検証方法。
【請求項７】
真正性検証を最後に行ってからの経過時間に基づいて決定される信頼度を算出する
請求項６記載の真正性検証方法。
【請求項８】
コンピュータに、
コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度を当該コンポーネントごとに算出する信頼度算出処理、および、
前記信頼度に基づいてコンポーネントの真正性検証を行う真正性検証処理
を実行させるための真正性検証プログラム。
【請求項９】
コンピュータに、
信頼度算出処理で、真正性検証を最後に行ってからの経過時間に基づいて決定される信頼度を算出させる
請求項８記載の真正性検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネントの真正性検証を行う真正性検証システム、真正性検証方法および真正性検証プログラムに関する。
【背景技術】
【０００２】
スマートシティをはじめとしたＩｏＴ（Internet of Things）システムでは、多種多様なコンポーネント（デバイスやゲートウェイ、クラウドなどのＩｏＴシステムの構成要素）がデータを生成し、生成されたデータは様々な経路を用いてストア先へ送信される。【０００３】
一方、不正なコンポーネントがこのようなシステムへ侵入してしまう場合も存在する。不正なコンポーネントがシステムに侵入することで、システム内を流通するデータが盗聴されたり、改竄されるような不正が行われたりすることがある。さらに、不正なコンポーネントがシステム上の正規のコンポーネントの資源を使い切ってしまうことにより、システムが停止に陥る場合も考えられる。このような脅威を防ぐため、セキュアなＩｏＴシステムを実現するプラットフォームが求められている。【０００４】
例えば、参入したコンポーネントが不正なコンポーネントか否かを、真正性検証（ａｔｔｅｓｔａｔｉｏｎ）を行うことにより判断する方法が知られている。しかし、コンポーネントの真正性検証を一度行った後、そのコンポーネントを完全に信頼し、複数回の真正性検証を行わないことがある。コンポーネントの状況は時間とともに変化するものである。そのため、一度信頼関係が構築されても、その後も信頼関係が成立する保証はない。【０００５】
コンポーネントや内部で動作するプロセスの種類および特性は、多種多様である。例えば、コンポーネントの一例であるデバイスについて、ＴＥＥ（Trusted Execution Environment ）が実装されているデバイスは、真正性が維持されている可能性が高いと言えるが、セキュアな対応をしていないデバイスは、真正性が維持され続けるとは言い難い。【０００６】
また、デバイスの状況は、一般に時間とともに変化する。例えば、デバイスドライバや内部プロセスがマルウェアに感染する場合もある。また、ドライブバイダウンロードなどにより、ユーザに気付かれずにソフトウェアがダウンロードされることによっても、デバイスの状況は動的に変化する。このように、システムの運用途中で悪意のある動作に変化した不正なデバイスを検知する必要がある。【０００７】
例えば、特許文献１には、プラットフォームの検証および管理を行う方法が記載されている。具体的には、特許文献１には、装置の使用頻度によって、周期的な再検証スケジュールを決定したり、装置中のモジュールが決定された間隔で再検証を実行したり、ネットワークがセキュリティの理由で必要であると判断されたときに再検証が実行されることが記載されている。【０００８】
また、特許文献２には、不正なファイルの移動や変化を早期に検知する方法が記載されている。特許文献２に記載された方法では、攻撃の情報やマルウェアの存在情報、活動期間の統計情報などに基づいてファイルを監視する周期を算出する。【０００９】
また、真正性検証を行う方法が各種知られている。例えば、非特許文献１および非特許文献２には、複数のデバイスの認証結果をマージして認証サーバに送ることで、複数台のデバイスに対する真正性検証を実現することが記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１４−０７５８４１号公報
【特許文献２】特開２０１４−２２９１２７号公報
【非特許文献】
【００１１】
【非特許文献１】N. Asokan, et.al., "SEDA: Scalable embedded device attestation", Proc. ACM-CCS 2015, 2015.
【非特許文献２】M. Ambrosin, et.al., "SANA: Secure and scalable aggregate network attestation", Proc. ACM-CCS 2016, 2016.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
特許文献１に記載された方法を用いることで、周期的にコンポーネントの真正性検証を行うことは可能である。しかし、特許文献１に記載された方法では、環境の変化やコンポーネントの変化の状況に追随できず、適切なタイミングで真正性検証を行うことは困難である。【００１３】
また、特許文献２に記載された方法も、監視は周期的に実施される。さらに、特許文献２に記載された方法では、ネットワークの観測によって取得できる情報のみを利用している。そのため、実施される真正性検証の観点や、真正性検証の対象とするコンポーネント自体の観点から、そのコンポーネントが真正性検証すべきか否か判断することは困難である。【００１４】
また、非特許文献１および非特許文献２も、運用途中でデバイスがマリシャスになることは考慮されていない。【００１５】
そこで、本発明は、状況に応じた適切なタイミングでコンポーネントの真正性検証を行うことができる真正性検証システム、真正性検証方法および真正性検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明による真正性検証システムは、コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度をそのコンポーネントごとに算出する信頼度算出部と、信頼度に基づいてコンポーネントの真正性検証を行う真正性検証部とを備えたことを特徴とする。【００１７】
本発明による真正性検証方法は、コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度をそのコンポーネントごとに算出し、算出された信頼度に基づいてコンポーネントの真正性検証を行うことを特徴とする。【００１８】
本発明による真正性検証プログラムは、コンピュータに、コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度をそのコンポーネントごとに算出する信頼度算出処理、および、信頼度に基づいてコンポーネントの真正性検証を行う真正性検証処理を実行させることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、状況に応じた適切なタイミングでコンポーネントの真正性検証を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】本発明による真正性検証システムの第１の実施形態の構成例を示すブロック図である。
【図２】式１から式３に基づく信頼度の変化の例を示す説明図である。
【図３】第１の実施形態の真正性検証システムの動作例を示すフローチャートである。
【図４】第１の実施形態の真正性検証システムの変形例を示すブロック図である。
【図５】第１の実施形態の変形例の真正性検証システムの動作例を示すフローチャートである。
【図６】本発明による真正性検証システムの第２の実施形態の構成例を示すブロック図である。
【図７】第２の実施形態の真正性検証システムの動作例を示すフローチャートである。
【図８】真正性検証システムの具体的な構成例を示す説明図である。
【図９】本発明による真正性検証システムの概要を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を図面を参照して説明する。
【００２２】
実施形態１．
図１は、本発明による真正性検証システムの第１の実施形態の構成例を示すブロック図である。本実施形態の真正性検証システム１００は、検証装置１０と、デバイス２０とを備えている。検証装置１０は、デバイス２０の真正性検証を行う装置である。なお、図１に例示するデバイス２０は、コンポーネントの一例である。以下、コンポーネントの具体的態様としてデバイス２０を例示して本実施形態を説明する。ただし、コンポーネントの態様はデバイスに限定されず、ゲートウェイやクラウドなどのシステムにおける任意のコンポーネントであってもよい。
【００２３】
デバイス２０は、情報送受信装置２１と、検証結果保持部２２とを含む。
【００２４】
情報送受信装置２１は、検証装置１０に対する情報の送信および検証装置１０からの情報の受信を行う。本実施形態では、情報送受信装置２１は、デバイス２０のハッシュ値を検証装置１０に送信する。情報送受信装置２１は、ハッシュ値を検証装置１０に対して、デバイス２０が検証装置１０を含むシステムに参入したときに送信してもよいし、定期的に送信してもよいし、検証装置１０からの要求に応じて送信してもよい。
【００２５】
検証結果保持部２２は、後述する検証装置１０から受信した検証結果を保持する。検証結果保持部２２は、例えば、メモリ装置や磁気ディスク装置により実現される。
【００２６】
検証装置１０は、情報送受信装置１１と、対象信頼度計算装置１２と、真正性検証起動判定装置１３と、真正性検証装置１４と、記憶部１５とを含む。記憶部１５は、後述する処理に必要な各種データを記憶する記憶装置であり、メモリや磁気ディスク装置等により実現される。
【００２７】
情報送受信装置１１は、デバイス２０に対する情報の送信およびデバイス２０からの情報の受信を行う。本実施形態では、情報送受信装置１１は、デバイス２０からハッシュ値を受信し、後述する真正性検証装置１４による検証結果を送信する。
【００２８】
対象信頼度計算装置１２は、コンポーネントであるデバイス２０の信頼度を計算する。信頼度は、コンポーネント（デバイス２０）の真正性検証を行うか否か判断する指標であり、真正性検証が必要な状況ほど低く算出される値である。信頼度は、対象とするコンポーネントの状態のほか、真正性検証の方法若しくは真正性検証の結果などに基づいて決定される。
【００２９】
真正性検証の方法に基づいて決定する方法として、真正性検証が簡易なほど信頼度を低くし、真正性検証が複雑なほど信頼度を高くする方法などが挙げられる。例えば、ソフトウェアに近いレイヤで真正性検証が行われる場合には信頼度を低くし、ハードウェアに近いレイヤ（例えば、ＴＰＭ（Trusted Platform Module ）／ＴＥＥなど）で真正性検証が行われる場合には信頼度を高くしてもよい。
【００３０】
また、例えば、簡易な方法の一例であるコンポーネントの真正性をソフトウェアで検証する場合の信頼度の減少値をＤｓ、簡易な方法の一例であるコンポーネントの真正性をハードウェアで検証する場合の信頼度の減少値をＤｈとする。このとき、対象信頼度計算装置１２は、現在時刻の信頼度からＤｓまたはＤｈを引くことにより、次の時刻における信頼度を算出してもよい。
【００３１】
なお、ソフトウェアに近いレイヤで真正性検証を行う方法が、例えば、下記の参考文献にも記載されている。
【００３２】
＜参考文献＞
A. Sechadri et.al., "Pioneer: Verifying code integrity and enforcing untampered code execution on legacy systems", Proc. ACM SOSP 2005, pp.1-16, 2005.
【００３３】
また、真正性検証の結果に基づいて決定する方法として、前回の信頼度に応じて新たな信頼度を計算する方法などが挙げられる。また、前々回の真正性検証の結果が、真正性検証の必要がある旨を示しており、前回の真正性検証の結果が検証されていた場合、対象コンポーネントは直近で真正性検証が行われている。そのため、対象信頼度計算装置１２は、信頼度を高く計算する、または、信頼度の減少値を通常より下げて計算してもよい。
【００３４】
例えば、信頼度を［１，１００］のパーセント表記を想定する場合、対象信頼度計算装置１２は、前回の真正性検証時における信頼度の逆数を、現在時刻の信頼度に乗じることで、次の時刻における信頼度を算出してもよい。なお、信頼度を［０，１］の確率で表現する場合、対象信頼度計算装置１２は、前回の真正性検証時における信頼度を、そのまま現在時刻の信頼度に乗じることで、次の時刻における信頼度を算出してもよい。
【００３５】
なお、ここでは、信頼度を減少させる方法を説明したが、対象信頼度計算装置１２は、信頼度を増加させる計算をしてもよい。信頼度を増加させる方法として、一定値を加算する、一定値を乗じる、指数増加させる、初期値に戻す、上限値に戻す、などの方法が挙げられる。
【００３６】
なお、初期値は、コンポーネントがシステムに参入した際に与えられた信頼度を意味し、上限値は、コンポーネントが取り得る信頼度の最大値を意味する。初期値および上限値は、全てのコンポーネントに共通の値であってもよく、個々のコンポーネントごとに設定される値であってもよい。この初期値および上限値は、例えば、コンポーネントのＴＥＥ搭載の有無や真正性検証の実装をソフト的もしくはハード的に行っているかなど、システムやコンポーネントに実装されたセキュリティ機能の強度に基づいて、管理者等により予め計算される。具体的には、この初期値および上限値は、セキュリティ強度を定量化した値に基づいて決定される。例えば、コンポーネントに実装されている全てのセキュリティ機能のうち、ハードウェアレベルで実装されているものの割合などが、初期値および上限値の決定に利用可能である。
【００３７】
また、信頼度は、真正性検証を最後に行ってからの経過時間に基づいて決定されてもよい。一般に、経過時間が長いほど真正性検証をすべきと判断されることから、真正性検証が行われてからの経過時間が長いほど、信頼度は低く算出される。
【００３８】
ここで、ある時刻ｔにおけるデバイスの信頼度Ｔ（ｔ，ｓ）を定義する。ｓは、時刻ｔにおけるデバイスの状態を表し、信頼度を決定するための要素である。ｓは、例えば、以下に例示する複数の要素を並べたベクトルで表される。なお、信頼度Ｔを決定するための要素は、下記（１）〜（５）の内容に限定されない。
（１）真正性検証を最後に行ってからの経過時間
（２）システム内の重要な構成の位置からみたデバイスの位置（距離）
（３）ＣＰＵの種類
（４）デバイスが利用できる機能の種類
（５）デバイスの隣接端末数
【００３９】
ここで、ベクトルｓのｉ番目の要素をｓｉと記す。ｓｉは、具体的な数値を表す。ｓｉの値が大きいほど真正性検証の必要性が高いと判断できるように信頼度を算出する場合、信頼度Ｔ（ｔ，ｓ）は、例えば、以下の式１から式３に例示する関数を用いて算出できる。なお、式１から式３においてｑ（ｓ）は、ｓに応じてスカラーを返す関数であり、例えば、ｑ（ｓ）＝Σｗｉｓｉ、または、ｑ（ｓ）＝Πｗｉｓｉである。これらの関数におけるｗｉは、ｓｉの重みを表す。したがって、対象信頼度計算装置１２は、重みによってある状態ｓｉを優先的に考慮して信頼度を計算してもよい。
【００４０】
【数１】
2019012626.tif 000003
【００４１】
図２は、式１から式３に基づく信頼度の変化の例を示す説明図である。上記に例示する式１から式３は、いずれも単調減少する関数であり、真正性検証がされなければ信頼度が減少する関数とも言える。なお、図２に例示するグラフでは、ａ＝０．５としている。
【００４２】
上記（１）の要素の例では、真正性検証を最後に行ってからの経過時間が長いほどｓｉは大きな値を取り、短いほどｓｉは小さな値を取る。経過時間が長いほど、真正性検証の必要性が高いと言えるからである。
【００４３】
上記（２）の要素の例では、システム内の重要な構成の位置からみたデバイスの位置が近いほどｓｉは大きな値を取り、遠いほどｓｉは小さな値を取る。重要な構成から近い位置に存在するデバイスほど、より注視すべきだからである。
【００４４】
上記（３）の要素の例では、ＣＰＵの種類に応じて、ｓｉの値を変化させる。例えば、ＩｎｔｅｌやＡＲＭの場合には、ｓｉの値を大きくし、ＰＩＣ（Peripheral Interface Controller）の場合には、ｓｉの値を小さくするようにしてもよい。なお、Ｉｎｔｅｌ、ＡＲＭおよびＰＩＣは、登録商標である。
【００４５】
上記（４）の要素の例では、デバイスが利用できる機能の種類が多いほどｓｉは大きな値を取り、少ないほどｓｉは小さな値を取る。機能が多いほど、利用機会も多く、より注視すべきだからである。
【００４６】
上記（５）の要素の例では、デバイスの隣接端末数が多いほどｓｉは大きな値を取り、少ないほどｓｉは小さな値を取る。隣接端末数が多いほど、デバイスは隣接端末からの影響を受けやすいからである。
【００４７】
なお、信頼度を計算するための上記情報（ＣＰＵの種類や、ネットワーク構成など）は、例えば、記憶部１５に記憶される。なお、対象信頼度計算装置１２は、信頼度を計算するための情報を、対象のデバイスに問い合わせてもよく、他のシステム（図示せず）から取得してもよい。また、対象信頼度計算装置１２は、算出した信頼度を記憶部１５に記憶してもよい。
【００４８】
真正性検証起動判定装置１３は、算出された信頼度に基づいて、真正性検証を行うか否か判定する。具体的には、真正性検証起動判定装置１３は、記憶部１５に記憶された閾値Ｔｔｈを読み取り、信頼度が閾値Ｔｔｈより低い場合、真正性検証を行うと判定する。真正性検証を行うと判定された場合、真正性検証起動判定装置１３は、真正性検証装置１４にデバイス２０の真正性検証を行うよう指示する。より具体的には、真正性検証起動判定装置１３は、ａｔｔｅｓｔａｔｉｏｎプロトコルの起動を真正性検証装置１４に指示する。
【００４９】
なお、閾値Ｔｔｈは、全てのデバイスに共通の値であってもよく、個々のデバイスごとに設定される値であってもよい。この閾値Ｔｔｈは、例えば、デバイスそのものの重要度やデバイスを介して流れるデータの重要度など、システムやデバイスの安全性の要求レベルに基づいて、管理者等により予め定められる。
【００５０】
具体的には、閾値Ｔｔｈには、管理者がコンポーネントに要求するセキュリティ要求レベルを定量化したものが利用できる。例えば、米国国立標準技術研究所（ＮＩＳＴ）の発行するＮＩＳＴ  ＳＰ  ８００−５３Ａや、ＮＩＳＴ  ＳＰ  ８００−５５などに記載されている、メンテナンスを受けているコンポーネントの割合や最新のパッチが適用されたコンポーネントの割合などが、閾値Ｔｔｈの決定に利用可能である。
【００５１】
また、真正性検証起動判定装置１３は、後述する真正性検証装置１４による真正性検証の結果に応じて信頼度を回復させる処理を行ってもよい。具体的には、真正性検証起動判定装置１３は、真正性検証の結果、問題ない（具体的には、コンポーネントの内部プロセスのバイナリなどから構成されるデータの正しいハッシュ値がコンポーネントから送られてきたハッシュ値と一致している状態）と判断された場合、信頼度を回復させてもよい。ここで、信頼度を回復させるとは、信頼度を増加させることを意味し、信頼度に定数値を加算する、信頼度を定数倍する、信頼度を指数倍する、初期値に戻すなどによって行われる。
【００５２】
なお、初期値は、コンポーネントがシステムに参入した際に与えられた信頼度を意味し、上限値は、コンポーネントが取り得る信頼度の最大値を意味する。初期値および上限値は、全てのコンポーネントに共通の値であってもよく、個々のコンポーネントごとに設定される値であってもよい。回復された信頼度は、例えば、次に信頼度を算出する際の要素として用いられてもよい。
【００５３】
なお、閾値Ｔｔｈは、固定値であってもよく、時間依存性を有する値であってもよい。また、閾値Ｔｔｈの算出に、上記回復された信頼度が用いられてもよい。閾値や上記回復量、減少量等を固定値にすることにより、周期的に真正性検証を行うことが可能になる。また、信頼度の減少量や回復量を動的に変化させたり、閾値に時間依存性を持たせたりすることによって、非周期的に真正性検証を行うことが可能になる。
【００５４】
真正性検証装置１４は、真正性検証起動判定装置１３の指示に基づいて真正性検証を行う。真正性検証の方法は任意であり、広く知られた方法が用いられる。真正性検証装置１４は、検証結果を情報送受信装置１１に送信する。
【００５５】
その後、情報送受信装置１１が検証結果をデバイス２０に送信し、検証結果を受け取ったデバイス２０の情報送受信装置２１は、検証結果を検証結果保持部２２に登録する。
【００５６】
情報送受信装置１１と、対象信頼度計算装置１２と、真正性検証起動判定装置１３と、真正性検証装置１４とは、プログラム（真正性検証プログラム）に従って動作するコンピュータのＣＰＵによって実現される。
【００５７】
例えば、プログラムは、記憶部１５に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、情報送受信装置１１、対象信頼度計算装置１２、真正性検証起動判定装置１３および真正性検証装置１４として動作してもよい。また、情報送受信装置１１と、対象信頼度計算装置１２と、真正性検証起動判定装置１３と、真正性検証装置１４とは、それぞれが専用のハードウェアで実現されていてもよい。
【００５８】
次に、本実施形態の真正性検証システムの動作を説明する。図３は、第１の実施形態の真正性検証システムの動作例を示すフローチャートである。
【００５９】
検証装置１０（より具体的には、情報送受信装置１１）は、真正性検証の対象とするデバイス２０からハッシュ値を受信する（ステップＳ１１）。対象信頼度計算装置１２は、デバイス２０の信頼度Ｔ（ｔ，ｓ）を計算する（ステップＳ１２）。真正性検証起動判定装置１３は、算出された信頼度Ｔ（ｔ，ｓ）が閾値Ｔｔｈより小さいか否か判定する（ステップＳ１３）。
【００６０】
Ｔ（ｔ，ｓ）＜Ｔｔｈの場合（ステップＳ１３におけるＹｅｓ）、真正性検証起動判定装置１３は、真正性検証装置１４を起動させ、デバイス２０の真正性検証を行うよう指示する（ステップＳ１４）。そして、情報送受信装置１１は、真正性検証装置１４による真正性検証の結果をデバイス２０に送信する（ステップＳ１５）。一方、Ｔ（ｔ，ｓ）＜Ｔｔｈでない場合（ステップＳ１３におけるＮｏ）、情報送受信装置１１は、検証が不要である旨をデバイス２０に送信する（ステップＳ１６）。
【００６１】
以上のように、本実施形態では、対象信頼度計算装置１２が、コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度をコンポーネントごとに算出し、真正性検証起動判定装置１３および真正性検証装置１４が、算出された信頼度に基づいてコンポーネントの真正性検証を行う。よって、状況に応じた適切なタイミングでコンポーネントの真正性検証を行うことができる。したがって、運用途中で悪意のある動作に変化した不正なデバイスを早期に検知することが可能になる。
【００６２】
なお、本実施形態では、デバイス２０からハッシュ値を受信したタイミングで対象信頼度計算装置１２が信頼度を計算する方法を説明した。ただし、対象とするコンポーネント（デバイス２０）の真正性検証を最後に行った時間からの経過時間をモニタリングして対象信頼度計算装置１２が適宜信頼度を算出してもよい。そして、真正性検証起動判定装置１３が、信頼度が閾値を下回ったと判定した場合に、真正性検証装置１４が真正性検証を行ってもよい。
【００６３】
次に、第１の実施形態の真正性検証システムの変形例を説明する。第１の実施形態では、対象信頼度計算装置１２が、対象とするコンポーネントの状態、真正性検証の方法、または真正性検証の結果に基づいて信頼度を計算する方法を説明した。本変形例では、信頼度の決定にネットワークの状況を用いる方法を説明する。
【００６４】
図４は、第１の実施形態の真正性検証システムの変形例を示すブロック図である。本変形例の真正性検証システム１００ａは、検証装置１０ａと、デバイス２０とを備えている。デバイス２０の内容は、第１の実施形態と同様である。
【００６５】
検証装置１０ａは、情報送受信装置１１と、対象信頼度計算装置１２と、真正性検証起動判定装置１３と、真正性検証装置１４と、記憶部１５と、網環境収集装置１６とを含む。情報送受信装置１１、真正性検証起動判定装置１３、真正性検証装置１４および記憶部１５の内容は、第１の実施形態と同様である。
【００６６】
網環境収集装置１６は、対象とするコンポーネントが接続されている通信ネットワークの環境情報を収集する。通信ネットワークの環境情報として、例えば、パケットロス率、ネットワーク遅延、ジッタなどが挙げられる。
【００６７】
対象信頼度計算装置１２は、第１の実施形態で示す方法で信頼度を算出する。さらに、対象信頼度計算装置１２は、収集された情報に基づいて、算出した信頼度を補正する。すなわち、対象信頼度計算装置１２は、対象とするコンポーネントが接続されている通信ネットワークの環境に応じて、信頼度を補正する。
【００６８】
対象信頼度計算装置１２は、通信ネットワークの環境が悪化するほど、対象のコンポーネントの信頼度を低くするように補正してもよい。例えば、通信ネットワークの遅延が大きい場合、対象信頼度計算装置１２は、信頼度の減少量をα倍（α＞１）してもよい。これにより、信頼度が閾値を下回り易くなり、認証要求を先んじて出す（認証回数を増加させる）ことが可能になる。
【００６９】
情報送受信装置１１と、対象信頼度計算装置１２と、真正性検証起動判定装置１３と、真正性検証装置１４と、網環境収集装置１６とは、プログラム（真正性検証プログラム）に従って動作するコンピュータのＣＰＵによって実現される。
【００７０】
次に、本変形例の真正性検証システムの動作を説明する。図５は、第１の実施形態の変形例の真正性検証システムの動作例を示すフローチャートである。デバイス２０からハッシュ値を受信して信頼度を算出するまでの処理は、図３に例示するステップＳ１１からステップＳ１２までの処理と同様である。
【００７１】
網環境収集装置１６は、ネットワーク環境を計測する（ステップＳ２１）。具体的には、網環境収集装置１６は、対象とするコンポーネントが接続されている通信ネットワークの環境情報を収集する。そして、対象信頼度計算装置１２は、収集された情報に基づいて、算出した信頼度を補正する（ステップＳ２２）。以降、信頼度と閾値とを比較して検証の可否を判定する処理は、図３に例示するステップＳ１３からステップＳ１６までの処理と同様である。
【００７２】
以上のように、本変形例では、網環境収集装置１６が、真正性検証の対象とするコンポーネントが接続されている通信ネットワークの環境情報を収集し、対象信頼度計算装置１２が、収集された情報に基づいて、算出された信頼度を補正する。そのため、第１の実施形態の効果に加え、デバイス運用途中で動作がマリシャスに変化した不正なデバイスの検知の精度を向上させることが可能になる。
【００７３】
実施形態２．
次に、本発明の真正性検証システムの第２の実施形態を説明する。第１の実施形態では、信頼度の計算が検証装置のみで行われる場合を説明した。本実施形態では、一部の信頼度の計算が、デバイス側でも行われる場合について説明する。
【００７４】
図６は、本発明による真正性検証システムの第２の実施形態の構成例を示すブロック図である。本実施形態の真正性検証システム２００は、検証装置４０と、デバイス３０とを備えている。なお、第１の実施形態と同様、図６に例示するデバイス３０は、コンポーネントの一例である。以下、コンポーネントの具体的態様としてデバイス３０を例示して本実施形態を説明する。ただし、コンポーネントの態様はデバイスに限定されず、ゲートウェイやクラウドなどのシステムにおける任意のコンポーネントであってもよい。
【００７５】
デバイス３０は、情報送受信装置２１と、検証結果保持部２２と、自己信頼度計算装置２３と、信頼度保持部２４とを含む。検証結果保持部２２の内容は、第１の実施形態と同様である。
【００７６】
信頼度保持部２４は、デバイス３０の信頼度を保持する。信頼度保持部２４が保持する信頼度は、真正性判定が最後に行われた際の信頼度である。
【００７７】
自己信頼度計算装置２３は、自己のデバイス３０の信頼度を計算する。信頼度の計算方法は任意であり、自己信頼度計算装置２３は、例えば、対象信頼度計算装置１２が算出する方法と同様の方法で信頼度を算出してよい。また、自己信頼度計算装置２３は、一部の要素に基づいて信頼度を算出し、検証装置４０の対象信頼度計算装置１２に、送信した信頼度を補正させてもよい。
【００７８】
情報送受信装置２１は、算出された信頼度を検証装置４０に送信する。なお、情報送受信装置２１は、信頼度に加え、デバイス３０の状況を示す各種情報を合わせて送信してもよい。
【００７９】
また、自己信頼度計算装置２３は、デバイス３０から信頼度が送信された場合、信頼度保持部２４に記憶された信頼度を、送信された信頼度で更新する。
【００８０】
検証装置４０は、情報送受信装置４１と、対象信頼度計算装置４２と、真正性検証起動判定装置４３と、真正性検証装置４４と、記憶部４５とを含む。なお、検証装置４０は、第１の実施形態の変形例で示す網環境収集装置１６を含んでいてもよい。
【００８１】
情報送受信装置４１は、デバイス３０に対する情報の送信およびデバイス３０からの情報の受信を行う。本実施形態では、情報送受信装置４１は、デバイス３０から信頼度を受信し、後述する真正性検証装置４４による検証結果を送信する。なお、情報送受信装置４１は、後述する対象信頼度計算装置４２が算出した信頼度、または、真正性検証起動判定装置４３が回復させた信頼度をデバイス３０に送信してもよい。
【００８２】
対象信頼度計算装置４２は、コンポーネントであるデバイス３０の信頼度を計算する。なお、本実施形態では、デバイス３０から信頼度が送信される。そこで、対象信頼度計算装置４２は、デバイス３０から受信した信頼度も用いて、信頼度を算出する。例えば、デバイス３０で算出される信頼度は、デバイス３０自身が取得できる情報（例えば、ＣＰＵ情報など）に基づいて算出される。そこで、対象信頼度計算装置４２は、真正性検証の方法や真正性検証を最後に行ってからの経過時間に基づいて信頼度を算出してもよい。
【００８３】
真正性検証起動判定装置４３は、算出された信頼度に基づいて、真正性検証を行うか否か判定する。真正性検証を行うか否かの判断方法は、第１の実施形態で真正性検証起動判定装置１３が行う方法と同様である。
【００８４】
また、真正性検証起動判定装置４３は、第１の実施形態の真正性検証起動判定装置１３と同様に、後述する真正性検証装置４４による真正性検証の結果に応じて信頼度を回復させる処理を行ってもよい。
【００８５】
真正性検証装置４４は、第１の実施形態の真正性検証装置１４と同様、対象とするコンポーネント（デバイス３０）の真正性検証を行う。
【００８６】
情報送受信装置４１と、対象信頼度計算装置４２と、真正性検証起動判定装置４３と、真正性検証装置４４とは、プログラム（真正性検証プログラム）に従って動作するコンピュータのＣＰＵによって実現される。
【００８７】
次に、本実施形態の真正性検証システムの動作例を説明する。図７は、第２の実施形態の真正性検証システムの動作例を示すフローチャートである。
【００８８】
デバイス３０の情報送受信装置２１は、デバイス３０の信頼度を検証装置４０に送信する（ステップＳ３１）。検証装置４０の情報送受信装置４１は、デバイス３０から信頼度を受信する（ステップＳ３２）。対象信頼度計算装置４２は、受信した信頼度も用いて、デバイス３０の信頼度を計算する（ステップＳ３３）。
【００８９】
真正性検証起動判定装置４３は、算出された信頼度Ｔ（ｔ，ｓ）が閾値Ｔｔｈより小さいか否か判定する（ステップＳ３４）。Ｔ（ｔ，ｓ）＜Ｔｔｈの場合（ステップＳ３４におけるＹｅｓ）、真正性検証起動判定装置４３は、真正性検証装置４４を起動させ、デバイス２０の真正性検証を行うよう指示する（ステップＳ３５）。
【００９０】
そして、情報送受信装置４１は、真正性検証装置４４による真正性検証の結果をデバイス３０に送信する（ステップＳ３６）。その際、情報送受信装置４１は、対象信頼度計算装置４２によって算出された信頼度、または、真正性検証起動判定装置４３によって回復された信頼度を、併せてデバイス３０に送信してもよい。
【００９１】
一方、Ｔ（ｔ，ｓ）＜Ｔｔｈでない場合（ステップＳ３４におけるＮｏ）、情報送受信装置１１は、検証が不要である旨をデバイス３０に送信する（ステップＳ３７）。デバイス３０の情報送受信装置２１は、真正性検証の結果を受信する（ステップＳ３８）。また、情報送受信装置２１は、デバイス３０から信頼度を受信してもよい。
【００９２】
真正性検証の結果がＯＫ（すなわち、コンポーネントに問題がない結果を示す）場合（ステップＳ３９におけるＹｅｓ）、自己信頼度計算装置２３は、自己の信頼度を更新する（ステップＳ４０）。一方、真正性検証の結果がＯＫでない（すなわち、コンポーネントに問題がある結果を示す）場合（ステップＳ３９におけるＮｏ）、デバイス３０は処理を終了する。
【００９３】
以上のように、本実施形態では、検証対象のデバイス３０（より具体的には、自己信頼度計算装置２３）が自己の信頼度を算出し、対象信頼度計算装置４２が、デバイス３０によって算出された信頼度に基づいて、デバイス３０の信頼度を算出する。そのため、第１の実施形態の効果に加え、デバイス３０自身の情報を、より反映した信頼度を算出することが可能になる。
【００９４】
次に、本発明の具体例を説明する。本具体例では、ＴＥＥにより、各装置をセキュアに動作させる方法を説明する。図８は、本具体例の真正性検証システムの構成例を示す説明図である。図８に例示する真正性検証システム２００ａの構成は、第２の実施形態の真正性検証システム２００の構成に、第１の実施形態の変形例で示す網環境収集装置１６を付加したものである。すなわち、図８に例示する検証装置４０ａは、第２の実施形態の検証装置４０に含まれる構成に加えて、網環境収集装置１６を含む。
【００９５】
図８に例示するように、検証装置４０ａにおける対象信頼度計算装置４２、真正性検証起動判定装置４３、真正性検証装置４４および記憶部４５が、ＴＥＥによってセキュア化されている。同様に、デバイス３０における検証結果保持部２２、自己信頼度計算装置２３および信頼度保持部２４が、ＴＥＥによってセキュア化されている。
【００９６】
ＴＥＥによってセキュア化することによって、信頼度や閾値の改ざんや漏えい、信頼度を計算する機能の改ざんなどを防ぐことが可能になる。すなわち、本具体例の構成により、デバイス運用途中で動作がマリシャスに変化した不正なデバイスの検知をよりセキュアに実施することが可能になる。
【００９７】
次に、本発明の概要を説明する。図９は、本発明による真正性検証システムの概要を示すブロック図である。本発明による真正性検証システム８０は、コンポーネント（例えば、デバイス２０）の状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度をそのコンポーネントごとに算出する信頼度算出部８１（例えば、対象信頼度計算装置１２）と、信頼度に基づいてコンポーネントの真正性検証を行う真正性検証部８２（例えば、真正性検証起動判定装置１３および真正性検証装置１４）とを備えている。
【００９８】
そのような構成により、状況に応じた適切なタイミングでコンポーネントの真正性検証を行うことができる。
【００９９】
また、信頼度算出部８１は、真正性検証を最後に行ってからの経過時間に基づいて決定される信頼度を算出してもよい。
【０１００】
また、真正性検証システム８０は、真正性検証の対象とするコンポーネントが接続されている通信ネットワークの環境情報を収集する網環境収集部（例えば、網環境収集装置１６）を備えていてもよい。そして、信頼度算出部８１は、収集された情報に基づいて、算出された信頼度を補正してもよい。そのような構成によれば、接続される環境も考慮した信頼度を算出することが可能になり、より適切に真正性検証を行うことが可能になる。
【０１０１】
また、信頼度算出部８１は、コンポーネント自身が算出した自己の信頼度を用いて、そのコンポーネントの信頼度を算出してもよい。そのような構成によれば、コンポーネントの情報を、より反映した信頼度を算出することが可能になる。
【０１０２】
具体的には、信頼度算出部８１は、真正性検証の方法に基づいて、真正性検証が簡易なほど信頼度を低く算出し、真正性検証が複雑なほど信頼度を高く算出してもよい。
【０１０３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０４】
（付記１）コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度を当該コンポーネントごとに算出する信頼度算出部と、前記信頼度に基づいてコンポーネントの真正性検証を行う真正性検証部とを備えたことを特徴とする真正性検証システム。
【０１０５】
（付記２）信頼度算出部は、真正性検証を最後に行ってからの経過時間に基づいて決定される信頼度を算出する付記１記載の真正性検証システム。
【０１０６】
（付記３）真正性検証の対象とするコンポーネントが接続されている通信ネットワークの環境情報を収集する網環境収集部を備え、信頼度算出部は、収集された情報に基づいて、算出された信頼度を補正する付記１または付記２に記載の真正性検証システム。
【０１０７】
（付記４）信頼度算出部は、コンポーネント自身が算出した自己の信頼度を用いて、当該コンポーネントの信頼度を算出する付記１から付記３のうちのいずれか１つに記載の真正性検証システム。
【０１０８】
（付記５）信頼度算出部は、真正性検証の方法に基づいて、真正性検証が簡易なほど信頼度を低く算出し、真正性検証が複雑なほど信頼度を高く算出する付記１から付記４のうちのいずれか１つに記載の真正性検証システム。
【０１０９】
（付記６）コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度を当該コンポーネントごとに算出し、算出された信頼度に基づいてコンポーネントの真正性検証を行うことを特徴とする真正性検証方法。
【０１１０】
（付記７）真正性検証を最後に行ってからの経過時間に基づいて決定される信頼度を算出する付記６記載の真正性検証方法。
【０１１１】
（付記８）コンピュータに、コンポーネントの状態、または、真正性検証の方法若しくは真正性検証の結果に基づいて決定される信頼度を当該コンポーネントごとに算出する信頼度算出処理、および、前記信頼度に基づいてコンポーネントの真正性検証を行う真正性検証処理を実行させるための真正性検証プログラム。
【０１１２】
（付記９）コンピュータに、信頼度算出処理で、真正性検証を最後に行ってからの経過時間に基づいて決定される信頼度を算出させる付記８記載の真正性検証プログラム。
【符号の説明】
【０１１３】
１０，１０ａ，４０，４０ａ  検証装置
２０，３０  デバイス
１１，４１  情報送受信装置
１２，４２  対象信頼度計算装置
１３，４３  真正性検証起動判定装置
１４，４４  真正性検証装置
１５，４５  記憶部
１６  網環境収集装置
２１  情報送受信装置
２２  検証結果保持部
２３  自己信頼度計算装置
２４  信頼度保持部
１００，１００ａ，２００，２００ａ  真正性検証システム
【図１】
2019012626.tif 000004
【図２】
2019012626.tif 000005
【図３】
2019012626.tif 000006
【図４】
2019012626.tif 000007
【図５】
2019012626.tif 000008
【図６】
2019012626.tif 000009
【図７】
2019012626.tif 000010
【図８】
2019012626.tif 000011
【図９】
2019012626.tif 000012
【国際調査報告】
2019012626.tif 000013
2019012626.tif 000014
2019012626.tif 000015
2019012626.tif 000016