JP6257460B2 - 遠隔完全性検証システム、方法及びプログラム - Google Patents

遠隔完全性検証システム、方法及びプログラム Download PDF

Info

Publication number
JP6257460B2
JP6257460B2 JP2014130252A JP2014130252A JP6257460B2 JP 6257460 B2 JP6257460 B2 JP 6257460B2 JP 2014130252 A JP2014130252 A JP 2014130252A JP 2014130252 A JP2014130252 A JP 2014130252A JP 6257460 B2 JP6257460 B2 JP 6257460B2
Authority
JP
Japan
Prior art keywords
information
verification
unit
integrity verification
checksum
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014130252A
Other languages
English (en)
Other versions
JP2016010031A (ja
Inventor
隆志 松中
隆志 松中
歩 窪田
歩 窪田
アンジェロ サペロ クリストファー
アンジェロ サペロ クリストファー
ゴッシュ アブフラジット
ゴッシュ アブフラジット
ポイリシャー アレックス
ポイリシャー アレックス
チアン ジェイソン
チアン ジェイソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2014130252A priority Critical patent/JP6257460B2/ja
Publication of JP2016010031A publication Critical patent/JP2016010031A/ja
Application granted granted Critical
Publication of JP6257460B2 publication Critical patent/JP6257460B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、遠隔完全性検証システム、方法及びプログラムに関する。
従来より、コンピュータのセキュリティ対策として様々な手法が提案されている。例えば、特許文献1から4や、非特許文献1から5などが知られている。
特許文献1は、コンピュータ機器に搭載されたモジュールを利用して当該コンピュータにインストールされたOS、アプリケーションなどのソフトウェアの完全性を検証する技術である。
特許文献2は、コンピュータなど情報処理装置にインストールされたアプリケーションの完全性を検証する技術である。当該技術は、まず当該装置に搭載されたTPM(Trust Platform Module)など完全性検証の信頼性の根幹(Root of Trust)となるモジュールをベースに、当該装置にインストールされたOSの完全性検証を行う。その後、完全性が検証された当該OSがアプリケーションの完全性を検証し、完全性が保証された形で当該アプリケーションを起動することで、当該アプリケーションの完全性を保証する。
特許文献3は、コンピュータ機器にインストールされたOSの完全性を検証する技術である。当該OSのシャットダウン時に当該機器のBIOS、ブートローダ、当該OSの完全性を検証することで、再起動時の検証に係る処理を軽減し、起動速度を向上させている。当該技術においても完全性検証の信頼性の根幹はROM(Read Only Memory)など特別なハードウェアに委ねている。
特許文献4は、装置のOSの完全性を検証する際に必要となる鍵を、当該装置とは別のサーバ装置に保存することで、当該鍵の漏えいによる完全性検証の偽装を防止する技術である。
非特許文献1及び非特許文献2は、検証対象装置内のOSなどプラットフォームソフトウェアの検証を、当該プラットフォームソフトウェア内にインストールされたソフトウェアモジュールによって行う技術である。当該技術は、当該ソフトウェアモジュールと検証サーバで構成される。検証を実施する際には、まず当該検証サーバから当該モジュールへ乱数を送信する。当該モジュールは当該乱数と当該モジュール自身のコード、及び検証用署名生成関数のコードから検証用署名を生成し、当該検証サーバに送信する。当該モジュールは、さらに検証用署名生成関数を用いてOSのコードから検証用署名を生成し、当該検証サーバに送信する。当該検証サーバは送信された検証用署名を検証し、当該署名が正しい値の場合のみ当該検証対象装置内のOSは改ざんされていないと判定する。
非特許文献3は、ソフトウェアモジュールをもとに検証対象装置内のOSの完全性を検証する技術である。当該技術は、複数のプロセッサをもつ装置において、攻撃者が複数のプロセッサを用いて当該モジュールよりも先に偽装した検証用署名を生成することで検出を回避する攻撃への対策が施されている。
非特許文献4は、検証対象装置内の仮想プラットフォームソフトウェア(ハイパーバイザ)を、当該装置に搭載されたハードウェアモジュールを用いて検証する技術である。さらに当該技術は、検証対象装置に検証用に改修された独自のBIOSを導入することで完全性検証を実現している。
非特許文献5は、仮想環境上のOSの検証を、ハイパーバイザ内で当該OSを監視することで実施する技術である。当該技術は、攻撃者が当該技術の機能をもつソフトウェアモジュールを改ざんできないなど、攻撃者に制約がある環境下でのみ正しい検証を実施することができる。
特表2008−537224号公報 特開2010−182196号公報 特開2012−32925号公報 特開2011−3020号公報
Seshadri,Arvind,Mark Luk,Elaine Shi,Adrian Perrig,Leendert van Doorn,and Pradeep Khosla. "Pioneer:verifying code integrity and enforcing untampered code execution on legacy systems." In ACM SIGOPS Operating Systems Review,vol.39,no.5,pp.1−16.ACM,2005. Kovah,Xeno,Corey Kallenberg,Chris Weathers,Amy Herzog,Matthew Albin,and John Butterworth. "New results for Timing−Based attestation." In Security and Privacy (SP),2012 IEEE Symposium on,pp.239−253.IEEE,2012. Yan,Qiang,Jin Han,Yingjiu Li,Robert H. Deng,and Tieyan Li. "A software−based root−of−trust primitive on multicore platforms." In Proceedings of the 6th ACM Symposium on Information,Computer and Communications Security,pp.334−343.ACM,2011. Azab,Ahmed M.,Peng Ning,Zhi Wang,Xuxian Jiang,Xiaolan Zhang,and Nathan C. Skalsky. "HyperSentry: enabling stealthy in−context measurement of hypervisor integrity." In Proceedings of the 17th ACM conference on Computer and communications security,pp.38−49.ACM,2010. Sharif,Monirul I.,Wenke Lee,Weidong Cui,and Andrea Lanzi. "Secure in−vm monitoring using hardware virtualization." In Proceedings of the 16th ACM conference on Computer and communications security,pp.477−487.ACM,2009.
しかしながら、特許文献1から特許文献4、非特許文献4では、TPMなどのハードウェアモジュールの利用を前提においている。そのため、当該モジュールを搭載していない装置に対しては適用できない。また、ハードウェアモジュールに搭載されている暗号アルゴリズム、ハッシュアルゴリズムの危殆化、さらに当該モジュールの実装に脆弱性が見つかった際は、当該技術による検証自体を信頼できなくなる。その際、信頼性の維持のためには当該モジュールの置換が必要となるが、それには新しいモジュールの購入、置換作業など金銭面、作業面のコストがかかる。
また、非特許文献1から非特許文献3は、上記のハードウェアモジュールを利用する際の欠点を鑑み、ソフトウェアで実現されたモジュールをベースに完全性検証を実施している。しかしながら、攻撃者が検証処理の開始を検知して自身の攻撃コードを隠ぺいするような検証を回避する行動を行う場合に対して対策がなされていない。
さらに、非特許文献5は、攻撃者に制約下がある環境下でのみ有効となる技術である。そのため、上記のような検証回避を行う攻撃者、及び検証を行うソフトウェアモジュールの改ざんを行う攻撃者に対して耐性がない。
そこで、上述のような従来の技術の欠点を鑑み、TPMなど特殊なハードウェアモジュールの搭載を前提とせず、攻撃者の検証回避攻撃の検出が可能な、プラットフォームの完全性検証を実現するシステムが求められている。
本発明は、特殊なハードウェアモジュールの搭載を前提とせず、攻撃者の検証回避攻撃の検出が可能な、プラットフォームの完全性検証を実現する遠隔完全性検証システム、方法及びプログラムを提供することを目的とする。
具体的には、以下のような解決手段を提供する。
(1) 検証される装置である検証対象装置において作動するようにインストールされた完全性検証モジュールと、前記検証対象装置の完全性を検証する完全性検証装置とを備える遠隔完全性検証システムであって、前記完全性検証装置は、検査に用いるための乱数情報を含む検査要求を前記検証対象装置に送信する要求送信手段を備え、前記検証対象装置は、前記完全性検証モジュールを起動する起動手段を備え、前記完全性検証モジュールは、前記起動手段が前記完全性検証モジュールを起動する際に記録された分岐情報を分岐情報記憶手段に記憶させる分岐情報記憶制御部と、前記起動手段によって起動されたか否かを前記分岐情報記憶手段に記憶された前記分岐情報に基づいて判定する起動判定部と、前記起動手段によって起動されていないと前記起動判定部によって判定された場合に、異常な起動を示す情報を通知する異常起動通知部と、前記起動手段によって起動されたと前記起動判定部によって判定された場合に、前記要求送信手段によって送信された前記検査要求を受信する要求受信部と、前記要求受信部によって受信された前記乱数情報に基づくコードを含めた、前記完全性検証モジュール自身のプログラムコードのチェックサムを計算するチェックサム計算部と、前記検証対象装置における検査情報を前記完全性検証装置に送信する検査情報送信部と、を有し、前記検査情報送信部は、前記異常起動通知部によって通知された異常な起動を示す情報、又は前記チェックサム計算部によって計算された前記チェックサムを含む前記検査情報を前記完全性検証装置に送信し、前記完全性検証装置は、前記検証対象装置の前記完全性検証モジュールから前記検査情報を受信する検査情報受信手段と、受信した前記検査情報が異常な起動を示す情報を含む場合に、前記検証対象装置が完全ではないと判定する検査情報判定手段と、受信した前記検査情報が前記チェックサムを含む場合に、計算された前記チェックサムを検証するチェックサム検証手段と、を備え、前記検査情報判定手段は、前記検査情報が異常な起動を示す情報を含まない場合に、前記チェックサム検証手段によって検証された情報に基づいて、前記検証対象装置が完全であるか否かをさらに判定する、遠隔完全性検証システム。
(1)の構成によれば、遠隔完全性検証システムにおいて、完全性検証装置は、検査に用いるための乱数情報を含む検査要求を検証対象装置に送信する。次に、検証対象装置は、完全性検証モジュールを起動し、完全性検証モジュールは、起動手段が完全性検証モジュールを起動する際に記録された分岐情報を分岐情報記憶手段に記憶させ、起動手段によって起動されたか否かを分岐情報記憶手段に記憶された分岐情報に基づいて判定する。完全性検証モジュールは、起動手段によって起動されていないと判定した場合に、異常な起動を示す情報を通知し、起動手段によって起動されたと判定した場合に、送信された検査要求を受信し、受信した乱数情報に基づくコードを含めた、完全性検証モジュール自身のプログラムコードのチェックサムを計算し、計算したチェックサムを含む検査情報を完全性検証装置に送信する。完全性検証装置は、検証対象装置の完全性検証モジュールから検査情報を受信し、受信した検査情報が異常な起動を示す情報を含む場合に、検証対象装置が完全ではないと判定し、受信した検査情報がチェックサムを含む場合に、計算されたチェックサムを検証し、検証した情報に基づいて、検証対象装置が完全であるか否かをさらに判定する。
したがって、(1)に係る遠隔完全性検証システムは、特殊なハードウェアモジュールの搭載を前提とせずに、攻撃者の検証回避攻撃の検出を可能にし、プラットフォームの完全性検証を実現する。
(2) 前記完全性検証装置は、前記検査情報送信手段による前記検査要求の送信から、前記検査情報受信手段による前記検査情報の受信までの所要時間を測定する時間測定手段と、前記時間測定手段によって測定された所要時間が所定値よりも小さいか否かを判定する所要時間判定手段と、をさらに備え、前記検査情報判定手段は、前記チェックサム検証手段によって検証された情報に基づいて前記検証対象装置が完全であると判定した場合に、さらに、前記所要時間判定手段による判定に基づいて、前記検証対象装置が完全であるか否かを判定する、(1)に記載の遠隔完全性検証システム。
したがって、(2)に係る遠隔完全性検証システムは、検証対象装置による所要時間をさらに判定することによって、攻撃者の検証回避攻撃の検出をさらに可能にし、プラットフォームの完全性検証を実現する。
(3) 前記完全性検証モジュールは、検査対象となるプラットフォームのプログラムコードからハッシュ値を計算するハッシュ値計算部をさらに有し、前記検査情報送信部は、前記ハッシュ値計算部によって計算された前記ハッシュ値をさらに検査情報に含めて送信し、前記完全性検証装置は、前記検査情報受信手段によって受信された前記ハッシュ値を検証するハッシュ値検証手段をさらに備え、前記検査情報判定手段は、前記所要時間判定手段による判定に基づいて、前記検証対象装置が完全であると判定した場合に、さらに、前記ハッシュ値検証手段によって検証された情報に基づいて、前記検証対象装置が完全であるか否かを判定する、(2)に記載の遠隔完全性検証システム。
したがって、(3)に係る遠隔完全性検証システムは、検証対象装置により計算されたハッシュ値をさらに判定することによって、攻撃者の検証回避攻撃の検出をさらに可能にし、プラットフォームの完全性検証を実現する。
(4) 前記チェックサム計算部は、前記検査情報に含まれる乱数情報に基づいて、前記完全性検証モジュール自身のプログラムコードのうち選択したプログラムコードに基づいて、前記チェックサムを計算する、(1)から(3)のいずれか一項に記載する遠隔完全性検証システム。
したがって、(4)に係る遠隔完全性検証システムは、選択したプログラムコードにより計算したチェックサム値をさらに判定することによって、攻撃者の検証回避攻撃の検出をさらに可能にし、プラットフォームの完全性検証を実現する。
(5) 前記チェックサム計算部は、前記検査情報に含まれる乱数情報に基づいて、前記分岐情報記憶手段に記憶された前記分岐情報を選択し、選択した前記分岐情報を含めて、前記チェックサムを計算する、(1)から(4)のいずれか一項に記載する遠隔完全性検証システム。
したがって、(5)に係る遠隔完全性検証システムは、分岐情報の履歴情報を含めて計算されたチェックサム値をさらに判定することによって、攻撃者の検証回避攻撃の検出をさらに可能にし、プラットフォームの完全性検証を実現する。
(6) (1)に記載の遠隔完全性検証システムが実行する方法であって、前記完全性検証装置において、前記要求送信手段が、検査に用いるための乱数情報を含む検査要求を前記検証対象装置に送信する要求送信ステップと、前記検証対象装置において、前記起動手段が、前記完全性検証モジュールを起動する起動ステップと、前記完全性検証モジュールにおいて、前記分岐情報記憶制御部が、前記起動手段が前記完全性検証モジュールを起動する際に記録された分岐情報を分岐情報記憶手段に記憶させる分岐情報記憶制御ステップと、前記起動判定部が、前記起動ステップによって起動されたか否かを前記分岐情報記憶手段に記憶された前記分岐情報に基づいて判定する起動判定ステップと、前記異常起動通知部が、前記起動ステップによって起動されていないと前記起動判定ステップによって判定された場合に、異常な起動を示す情報を通知する異常起動通知ステップと、前記要求受信部が、前記起動手段によって起動されたと前記起動判定部によって判定された場合に、前記要求送信手段によって送信された前記検査要求を受信する要求受信ステップと、前記チェックサム計算部が、前記要求受信ステップによって受信された前記乱数情報に基づくコードを含めた、前記完全性検証モジュール自身のプログラムコードのチェックサムを計算するチェックサム計算ステップと、前記検査情報送信部が、前記異常起動通知ステップによって通知された異常な起動を示す情報、又は前記チェックサム計算ステップによって計算された前記チェックサムを含む前記検査情報を前記完全性検証装置に送信するステップと、前記完全性検証装置において、前記検査情報受信手段が、前記検証対象装置の前記完全性検証モジュールから前記検査情報を受信する検査情報受信ステップと、前記検査情報判定手段が、受信した前記検査情報が異常な起動を示す情報を含む場合に、前記検証対象装置が完全ではないと判定する検査情報判定ステップと、前記チェックサム検証手段が、受信した前記検査情報が前記チェックサムを含む場合に、計算された前記チェックサムを検証するチェックサム検証ステップと、前記検査情報判定手段が、前記検査情報が異常な起動を示す情報を含まない場合に、前記チェックサム検証ステップによって検証された情報に基づいて、前記検証対象装置が完全であるか否かをさらに判定するステップと、を備える方法。
したがって、(6)に係る方法は、特殊なハードウェアモジュールの搭載を前提とせずに、攻撃者の検証回避攻撃の検出を可能にし、プラットフォームの完全性検証を実現することができる。
(7) (1)に記載の遠隔完全性検証システムにおいて、前記完全性検証装置のコンピュータ及び前記検証対象装置のコンピュータに、(6)に記載の各ステップを実行させるためのプログラム。
したがって、(7)に係るプログラムは、コンピュータに実行させて、特殊なハードウェアモジュールの搭載を前提とせずに、攻撃者の検証回避攻撃の検出を可能にし、プラットフォームの完全性検証を実現するようにすることができる。
本発明によれば、TPMなど特殊なハードウェアモジュールの搭載を前提とせずに、攻撃者の検証回避攻撃の検出を可能にし、プラットフォームの完全性検証を実現することができる。
すなわち、本発明によれば、以下のように攻撃を検知することができる。
(1)攻撃者が完全性検証モジュールのコードを改ざんしようと攻撃しても、完全性検証モジュールのコードのチェックサムを計算、照合することで検知できる。
(2)攻撃者がプラットフォームソフトウェアのコードを改ざんしようと攻撃しても、プラットフォームソフトウェアのコードのハッシュ値を計算、照合することで検知できる。
(3)攻撃者が割り込み処理、メモリ上の分岐元アドレス、分岐先アドレスの書換によって検証手順の途中に介在し、改ざん、挿入コードを隠ぺいし、検証手順終了後に当該コードをメモリ上に再ロードする攻撃をしても、割り込みの無効化によって割り込みによる検証手順への介在を防止できる。また、命令分岐の履歴情報を加味したチェックサムの計算により、攻撃者の介在を検知できる。さらに、所要時間の検査によって改ざん、挿入コードの隠ぺい処理によって発生する所要時間の遅延を検知できる。
(4)攻撃者が事前にチェックサムを計算し、それを検査結果として送信することで検証処理を成功させようと攻撃しても、チェックサムの計算時に、チェックサムの計算に利用するコードをランダムに選択することで、事前計算が不可能となる。
本発明の一実施形態に係る遠隔完全性検証システムの構成を示す図である。 本発明の一実施形態に係る遠隔完全性検証システムにおける完全性検証装置の構成を示す図である。 本発明の一実施形態に係る遠隔完全性検証システムにおける完全性検証モジュールの構成を示す図である。 本発明の一実施形態に係る遠隔完全性検証システムの処理を示すフローチャートである。
以下、本発明の実施形態について、図を参照しながら説明する。
図1は、本発明の一実施形態に係る遠隔完全性検証システム1の構成を示す図である。遠隔完全性検証システム1は、検証される装置である検証対象装置30において作動するようにインストールされた完全性検証モジュール31と、検証対象装置30の完全性を検証する完全性検証装置10とを備える。以下の実施形態では、検証対象となるプラットフォームとしてハイパーバイザ(仮想化環境プラットフォームソフトウェア)を想定する。
図2は、本発明の一実施形態に係る遠隔完全性検証システム1における完全性検証装置10の構成を示す図である。図3は、本発明の一実施形態に係る遠隔完全性検証システム1における完全性検証モジュール31の構成を示す図である。
遠隔完全性検証システム1における完全性検証装置10は、検査情報検証手段11として検査情報判定手段111と、チェックサム検証手段112と、時間測定手段113と、所要時間判定手段114と、ハッシュ値検証手段115とを備え、通信手段12として要求送信手段121と、検査情報受信手段122とを備える。
遠隔完全性検証システム1における検証対象装置30は、起動手段32を備え、検証対象装置30においてインストールされた完全性検証モジュール31は、通信部313として要求受信部3131と、検査情報送信部3132とを有し、自己検証情報生成部311として分岐情報記憶制御部3111と、起動判定部3112と、異常起動通知部3113と、チェックサム計算部3114とを有し、プラットフォーム検証情報生成部312としてハッシュ値計算部3121を有し、分岐情報記憶手段320を有する。
完全性検証モジュール31による分岐情報及びチェックサム計算情報に基づく、完全性検証装置10による完全性の検証について説明する。
完全性検証装置10の要求送信手段121は、検査に用いるための乱数情報を含む検査要求を、検証対象装置30に送信する。
検証対象装置30の起動手段32は、完全性検証モジュール31を起動する。具体的には、起動手段32は、例えば、検証対象装置30と完全性検証装置10との通信媒体としてシリアルケーブルを用いた構成の場合、シリアルケーブルを介した検査要求の受信により発生する割り込みのハンドラとして登録された完全性検証モジュール31を起動する。
完全性検証モジュール31の分岐情報記憶制御部3111は、起動手段32が完全性検証モジュール31を起動する際に記録された分岐情報(例えば、分岐元レコード及び分岐先レコードのアドレス情報)を分岐情報記憶手段320に記憶させる。具体的には、分岐情報記憶制御部3111は、命令分岐の履歴情報として、例えばCPUのアーキテクチャーに搭載されている最後の分岐レコードを記憶するアーキテクチャー(例えば、LBR(Last Branch Record)機構など)を利用し、命令分岐の履歴情報を分岐情報として分岐情報記憶手段320に記憶させる。
完全性検証モジュール31の起動判定部3112は、起動手段32によって起動されたか否かを分岐情報記憶手段320に記憶された分岐情報(例えば、分岐元レコード及び分岐先レコードのアドレス情報)に基づいて判定する。具体的には、起動判定部3112は、完全性検証モジュール31の起動後に命令分岐の履歴情報である分岐情報記憶手段320に記憶された情報に基づいて、最も新しい分岐の分岐元と分岐先のアドレス情報を参照し、完全性検証モジュール31が検査要求の受信によって起動されたかどうかを判定する。
完全性検証モジュール31の異常起動通知部3113は、起動手段32によって起動されていない(例えば、検査要求の受信以外の契機によって起動された)と起動判定部3112によって判定された場合に、異常な起動を示す情報を通知する。
完全性検証モジュール31の要求受信部3131は、起動手段32によって起動されたと起動判定部3112によって判定された場合に、完全性検証装置10の要求送信手段121によって送信された検査要求を受信する。
完全性検証モジュール31は、起動手段32によって起動されたと起動判定部3112によって判定された場合に、検証対象装置30のすべての割り込みを無効にするとしてもよい。例えば、マスク可能な割り込みについては割り込みを禁止(Disable)するように設定し、マスク不可能な割り込み(NMI:Non−Maskable Interrupt)については、当該割り込みのハンドラを変更し、別のソフトウェアに処理が移行しないようにするとしてもよい。
完全性検証モジュール31のチェックサム計算部3114は、要求受信部3131によって受信された乱数情報に基づくコードを含めた、完全性検証モジュール31自身のプログラムコードのチェックサムを計算する。なお、完全性検証モジュール31は、検証対象装置30において固定のアドレスにロードされて作動するとしてよい。また、完全性検証モジュール31が検証対象装置30において可変のアドレスにロードされて作動する場合には、完全性検証装置10において完全性検証モジュール31がロードされている状態を復元可能としてよい。
その際、チェックサム計算部3114は、検査情報に含まれる乱数情報に基づいて、完全性検証モジュール31自身のプログラムコードのうち選択したプログラムコードに基づいて、チェックサムを計算するとしてもよい。具体的には、チェックサム計算部3114は、完全性検証装置10より送信された乱数情報を基に、例えば、乱数情報が5bf・・・の場合に、プログラムコードの最初から5番目のコードと、そのコードから11番目のコードと、さらにそのコードから15番目のコードとのように、ランダムに選択するとしてもよい。チェックサム計算部3114は、選択したコードに基づくチェックサムの計算を、乱数情報に基づくランダムな選択を含めて所定回数繰り返して実行し、最終的なチェックサムを得る。
さらに、チェックサム計算部3114は、命令分岐の履歴情報をチェックサムの計算に加味してもよい。すなわち、チェックサム計算部3114は、検査情報に含まれる乱数情報に基づいて、分岐情報記憶手段320に記憶された分岐情報を選択し、選択した分岐情報を含めて、チェックサムを計算する。
例えば、チェックサム計算部3114は、チェックサムの計算における各繰り返し処理のはじめに、命令分岐の履歴情報をチェックサムの計算に加えるかどうかを判断する。チェックサム計算部3114は、この判断を当該乱数情報に基づき行う。命令分岐の履歴情報をチェックサムの計算に加える場合、チェックサム計算部3114は、計算に加味する履歴情報を、分岐情報記憶手段320から、乱数情報に基づきランダムに選択する(例えば、乱数情報が5bf・・・の場合に、分岐情報の記憶数(例えば、16個)以内の値のうち最初の値である「5」に基づいて、最新から5番目の分岐情報を選択する)。そして、チェックサム計算部3114は、選択された分岐情報と、上述のように別途選択されたコードとからチェックサムを計算する。
検査情報送信部3132は、異常起動通知部3113によって通知された異常な起動を示す情報、又はチェックサム計算部3114によって計算されたチェックサムを含む検査情報を完全性検証装置10に送信する。
完全性検証装置10の検査情報受信手段122は、検証対象装置30の完全性検証モジュール31から検査情報を受信する。
完全性検証装置10の検査情報判定手段111は、受信した検査情報が異常な起動を示す情報を含む場合に、検証対象装置30が完全ではないと判定する。
完全性検証装置10のチェックサム検証手段112は、受信した検査情報がチェックサムを含む場合に、計算されたチェックサムを検証する。具体的には、チェックサム検証手段112は、要求送信手段121によって送信された乱数情報と、完全性検証モジュール31のコードとから、完全性検証モジュール31で実行されるチェックサムの計算処理を復元し、チェックサムを計算する。そして、チェックサム検証手段112は、復元して計算されたチェックサムの値を検証用情報として、完全性検証モジュール31より送信された検査情報と照合する。
完全性検証装置10の検査情報判定手段111は、検査情報が異常な起動を示す情報を含まない場合に、チェックサム検証手段112によって検証された情報に基づいて、検証対象装置30が完全であるか否かをさらに判定する。具体的には、検査情報判定手段111は、チェックサム検証手段112によって計算されたチェックサムの情報と、完全性検証モジュール31により送信されたチェックサム情報とが一致する場合に、検証対象装置30が完全であると判定する。
さらに、検証対象装置30からの応答時間に基づく、完全性検証装置10による完全性の検証について説明する。
時間測定手段113は、検査情報送信手段による検査要求の送信から、検査情報受信手段122による検査情報の受信までの所要時間を測定する。
所要時間判定手段114は、時間測定手段113によって測定された所要時間が所定値よりも小さいか否かを判定する。具体的には、所要時間判定手段114は、当該所要時間を所定値と比較し、差が所定の範囲内である場合(例えば、差≦所定値±所定範囲である場合)に、所要時間が所定値よりも小さいと判定する。
検査情報判定手段111は、チェックサム検証手段112によって検証された情報に基づいて検証対象装置30が完全であると判定した場合に、さらに、所要時間判定手段114による判定に基づいて、検証対象装置30が完全であるか否かを判定する。
さらに、完全性検証モジュール31によるハッシュ値計算に基づく、完全性検証装置10による完全性の検証について説明する。
完全性検証モジュール31のハッシュ値計算部3121は、検査対象となるプラットフォームのプログラムコードからハッシュ値を計算する。具体的には、ハッシュ値計算部3121は、ハイパーバイザのハッシュ値(例えば、ハイパーバイザのコードに基づくハッシュ値)を計算する。ハッシュ値計算部3121は、例えばSHA−1などのハッシュ関数を用いて、ハッシュ値の計算を行う。
検査情報送信部3132は、ハッシュ値計算部3121によって計算されたハッシュ値をさらに検査情報に含めて送信する。
完全性検証装置10のハッシュ値検証手段115は、検査情報受信手段122によって受信されたハッシュ値を検証する。具体的には、ハッシュ値検証手段115は、受信された検査情報に含まれるハッシュ値と、完全性検証装置10において保持するプラットフォーム検証用情報に含まれる検証用ハッシュ値とを照合する。
検査情報判定手段111は、所要時間判定手段114による判定に基づいて、検証対象装置30が完全であると判定した場合に、さらに、ハッシュ値検証手段115によって検証された情報に基づいて、検証対象装置30が完全であるか否かを判定する。
検査情報判定手段111は、ハッシュ値検証手段115による照合が一致する場合に、ハイパーバイザは攻撃されていないと判断し、検証対象装置30が完全であると判定する。
図4は、本発明の一実施形態に係る遠隔完全性検証システム1の処理を示すフローチャートである。本発明の一実施形態に係る遠隔完全性検証システム1における、完全性検証装置10は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成され、以下の処理は、制御部(例えば、CPU)が、OSの下で所定のソフトウェアに従い実行する処理である。また、完全性検証モジュール31は、コンピュータ及びその周辺装置を備える検証対象装置30においてインストールされ、以下の処理は、検証対象装置30の制御部(例えば、CPU)によって実行される処理である。
ステップS101において、完全性検証装置10のCPU(要求送信手段121)は、検査に用いるための乱数情報を含む検査要求を、検証対象装置30に送信する。
ステップS201において、検証対象装置30のCPU(起動手段32)は、完全性検証モジュール31を起動する。
ステップS301において、完全性検証モジュール31(分岐情報記憶制御部3111、起動判定部3112、異常起動通知部3113、検査情報送信部3132)は、起動手段32が完全性検証モジュール31を起動する際に記録された分岐情報(例えば、分岐元レコード及び分岐先レコードのアドレス情報)を分岐情報記憶手段320に記憶させ、起動手段32によって起動されたか否かを分岐情報記憶手段320に記憶された分岐情報(例えば、分岐元レコード及び分岐先レコードのアドレス情報)に基づいて判断する。この判断が、YESの場合、CPUは、処理をステップS302に移し、NOの場合、CPUは、異常な起動を示す情報を含む検査情報を完全性検証装置10に送信し、完全性検証モジュール31の処理を終了し、遠隔完全性検証システム1の処理は、完全性検証装置10のステップS102に移行する。ステップS102において、完全性検証装置10(検査情報判定手段111)は、検査情報を受信し、受信した検査情報が異常な起動を示す情報を含む場合に、検証対象装置30が完全ではないと判定し、検証対象装置30が攻撃を受けていることを報知して、処理を終了する。
ステップS302において、完全性検証モジュール31(要求受信部3131)は、送信された検査要求を受信し、検証対象装置30の割り込みを無効にし、別のソフトウェアに処理が移行しないようにする。
ステップS303において、完全性検証モジュール31(チェックサム計算部3114)は、要求受信部3131によって受信された乱数情報に基づくコードを含めた、完全性検証モジュール31自身のプログラムコードのチェックサムを計算する。
ステップS304において、完全性検証モジュール31(検査情報送信部3132)は、チェックサム計算部3114によって計算されたチェックサムを含む検査情報を完全性検証装置10に送信する。
ステップS305において、完全性検証モジュール31(ハッシュ値計算部3121)は、検査対象となるプラットフォームのプログラムコードからハッシュ値を計算する。
ステップS306において、完全性検証モジュール31(検査情報送信部3132)は、ハッシュ値計算部3121によって計算されたハッシュ値を含む検査情報を完全性検証装置10に送信する。
ステップS103において、完全性検証装置10のCPU(検査情報受信手段122)は、検証対象装置30の完全性検証モジュール31からチェックサム値を含む検査情報を受信する。
ステップS104において、完全性検証装置10のCPU(検査情報受信手段122)は、検証対象装置30の完全性検証モジュール31からハッシュ値を含む検査情報を受信する。
ステップS105において、完全性検証装置10のCPU(チェックサム検証手段112、検査情報判定手段111)は、完全性検証モジュール31で実行されるチェックサムの計算処理を復元し計算したチェックサムと、受信したチェックサムとを照合する。照合の結果が一致する場合(YESの場合)、CPUは、処理をステップS106に移し、照合の結果が一致しない場合(NOの場合)、CPUは、検証対象装置30が完全ではないと判定し、検証対象装置30が攻撃を受けていることを報知して、処理を終了する。
ステップS106において、完全性検証装置10のCPU(時間測定手段113、所要時間判定手段114、検査情報判定手段111)は、ステップS101における検査要求の送信時に開始し、ステップS103における受信時に終了していた時間測定による測定時間が、所定値よりも小さいか否かを判断する。この判断が、YESの場合、CPUは、処理をステップS107に移し、この判断が、NOの場合、CPUは、検証対象装置30が完全ではないと判定し、検証対象装置30が攻撃を受けていることを報知して、処理を終了する。
ステップS107において、完全性検証装置10のCPU(ハッシュ値検証手段115、検査情報判定手段111)は、受信された検査情報に含まれるハッシュ値と、完全性検証装置10において保持するプラットフォーム検証用情報に含まれる検証用ハッシュ値とを照合する。照合の結果が一致しない場合(NOの場合)、CPUは、検証対象装置30が完全ではないと判定し、検証対象装置30が攻撃を受けていることを報知して、処理を終了し、照合の結果が一致する場合(YESの場合)、CPUは、検証対象装置30が完全であると判定し、検証対象装置30が攻撃を受けていないことを報知して、処理を終了する。
本実施形態によれば、遠隔完全性検証システム1において、完全性検証装置10は、検査に用いるための乱数情報を含む検査要求を検証対象装置30に送信する。次に、検証対象装置30は、完全性検証モジュール31を起動し、完全性検証モジュール31は、起動手段32が完全性検証モジュール31を起動する際に記録された分岐情報を分岐情報記憶手段320に記憶させ、起動手段32によって起動されたか否かを分岐情報記憶手段320に記憶された分岐情報に基づいて判定する。完全性検証モジュール31は、起動手段32によって起動されていないと判定した場合に、異常な起動を示す情報を通知し、完全性検証装置10は、検証対象装置30が完全ではないと判定する。完全性検証モジュール31は、起動手段32によって起動されたと判定した場合に、送信された検査要求を受信し、受信した乱数情報に基づくコードを含めた、完全性検証モジュール31自身のプログラムコードのチェックサムを計算し、計算したチェックサムを含む検査情報を完全性検証装置10に送信する。完全性検証装置10は、検証対象装置30の完全性検証モジュール31から検査情報を受信し、受信したチェックサムを検証し、検証した情報に基づいて、検証対象装置30が完全であるか否かを判定する。
さらに、完全性検証装置10は、チェックサムによって検証された情報に基づいて検証対象装置30が完全であると判定した場合に、検査要求の送信から、検査情報の受信までの測定した所要時間が所定値よりも小さいか否かを判定し、検証対象装置30が完全であるか否かを判定する。
さらに、完全性検証装置10は、所要時間による判定に基づいて、検証対象装置30が完全であると判定した場合に、完全性検証モジュール31によってプラットフォームのプログラムコードから計算されたハッシュ値を検証し、検証対象装置30が完全であるか否かを判定する。
したがって、遠隔完全性検証システム1は、特殊なハードウェアモジュールの搭載を前提とせずに、攻撃者の検証回避攻撃の検出を可能にし、プラットフォームの完全性検証を実現することができる。
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
例えば、本実施形態では、チェックサムにより検証対象装置30を検証した後に、ハッシュ値により検証対象装置30を検証するとしたが、ハッシュ値により検証対象装置30を検証した後に、チェックサムにより検証対象装置30を検証するとしてもよい。
1 遠隔完全性検証システム
10 完全性検証装置
11 検査情報検証手段
111 検査情報判定手段
112 チェックサム検証手段
113 時間測定手段
114 所要時間判定手段
115 ハッシュ値検証手段
12 通信手段
121 要求送信手段
122 検査情報受信手段
30 検証対象装置
31 完全性検証モジュール
311 自己検証情報生成部
3111 分岐情報記憶制御部
3112 起動判定部
3113 異常起動通知部
3114 チェックサム計算部
312 プラットフォーム検証情報生成部
3121 ハッシュ値計算部
313 通信部
3131 要求受信部
3132 検査情報送信部
320 分岐情報記憶手段
32 起動手段

Claims (7)

  1. 検証される装置である検証対象装置において作動するようにインストールされた完全性検証モジュールと、前記検証対象装置の完全性を検証する完全性検証装置とを備える遠隔完全性検証システムであって、
    前記完全性検証装置は、
    検査に用いるための乱数情報を含む検査要求を前記検証対象装置に送信する要求送信手段を備え、
    前記検証対象装置は、
    前記完全性検証モジュールを起動する起動手段を備え、
    前記完全性検証モジュールは、
    前記起動手段が前記完全性検証モジュールを起動する際に記録された分岐情報を分岐情報記憶手段に記憶させる分岐情報記憶制御部と、
    前記起動手段によって起動されたか否かを前記分岐情報記憶手段に記憶された前記分岐情報に基づいて判定する起動判定部と、
    前記起動手段によって起動されていないと前記起動判定部によって判定された場合に、異常な起動を示す情報を通知する異常起動通知部と、
    前記起動手段によって起動されたと前記起動判定部によって判定された場合に、前記要求送信手段によって送信された前記検査要求を受信する要求受信部と、
    前記要求受信部によって受信された前記乱数情報に基づくコードを含めた、前記完全性検証モジュール自身のプログラムコードのチェックサムを計算するチェックサム計算部と、
    前記検証対象装置における検査情報を前記完全性検証装置に送信する検査情報送信部と、を有し、
    前記検査情報送信部は、前記異常起動通知部によって通知された異常な起動を示す情報、又は前記チェックサム計算部によって計算された前記チェックサムを含む前記検査情報を前記完全性検証装置に送信し、
    前記完全性検証装置は、
    前記検証対象装置の前記完全性検証モジュールから前記検査情報を受信する検査情報受信手段と、
    受信した前記検査情報が異常な起動を示す情報を含む場合に、前記検証対象装置が完全ではないと判定する検査情報判定手段と、
    受信した前記検査情報が前記チェックサムを含む場合に、計算された前記チェックサムを検証するチェックサム検証手段と、を備え、
    前記検査情報判定手段は、前記検査情報が異常な起動を示す情報を含まない場合に、前記チェックサム検証手段によって検証された情報に基づいて、前記検証対象装置が完全であるか否かをさらに判定する、
    遠隔完全性検証システム。
  2. 前記完全性検証装置は、
    前記検査情報送信部による前記検査要求の送信から、前記検査情報受信手段による前記検査情報の受信までの所要時間を測定する時間測定手段と、
    前記時間測定手段によって測定された所要時間が所定値よりも小さいか否かを判定する所要時間判定手段と、をさらに備え、
    前記検査情報判定手段は、前記チェックサム検証手段によって検証された情報に基づいて前記検証対象装置が完全であると判定した場合に、さらに、前記所要時間判定手段による判定に基づいて、前記検証対象装置が完全であるか否かを判定する、
    請求項1に記載の遠隔完全性検証システム。
  3. 前記完全性検証モジュールは、
    検査対象となるプラットフォームのプログラムコードからハッシュ値を計算するハッシュ値計算部をさらに有し、
    前記検査情報送信部は、前記ハッシュ値計算部によって計算された前記ハッシュ値をさらに検査情報に含めて送信し、
    前記完全性検証装置は、
    前記検査情報受信手段によって受信された前記ハッシュ値を検証するハッシュ値検証手段をさらに備え、
    前記検査情報判定手段は、前記所要時間判定手段による判定に基づいて、前記検証対象装置が完全であると判定した場合に、さらに、前記ハッシュ値検証手段によって検証された情報に基づいて、前記検証対象装置が完全であるか否かを判定する、
    請求項2に記載の遠隔完全性検証システム。
  4. 前記チェックサム計算部は、前記検査情報に含まれる乱数情報に基づいて、前記完全性検証モジュール自身のプログラムコードのうち選択したプログラムコードに基づいて、前記チェックサムを計算する、請求項1から3のいずれか一項に記載する遠隔完全性検証システム。
  5. 前記チェックサム計算部は、前記検査情報に含まれる乱数情報に基づいて、
    前記分岐情報記憶手段に記憶された前記分岐情報を選択し、選択した前記分岐情報を含めて、前記チェックサムを計算する、請求項1から4のいずれか一項に記載する遠隔完全性検証システム。
  6. 請求項1に記載の遠隔完全性検証システムが実行する方法であって、
    前記完全性検証装置において、
    前記要求送信手段が、検査に用いるための乱数情報を含む検査要求を前記検証対象装置に送信する要求送信ステップと、
    前記検証対象装置において、
    前記起動手段が、前記完全性検証モジュールを起動する起動ステップと、
    前記完全性検証モジュールにおいて、
    前記分岐情報記憶制御部が、前記起動手段が前記完全性検証モジュールを起動する際に記録された分岐情報を分岐情報記憶手段に記憶させる分岐情報記憶制御ステップと、
    前記起動判定部が、前記起動ステップによって起動されたか否かを前記分岐情報記憶手段に記憶された前記分岐情報に基づいて判定する起動判定ステップと、
    前記異常起動通知部が、前記起動ステップによって起動されていないと前記起動判定ステップによって判定された場合に、異常な起動を示す情報を通知する異常起動通知ステップと、
    前記要求受信部が、前記起動手段によって起動されたと前記起動判定部によって判定された場合に、前記要求送信手段によって送信された前記検査要求を受信する要求受信ステップと、
    前記チェックサム計算部が、前記要求受信ステップによって受信された前記乱数情報に基づくコードを含めた、前記完全性検証モジュール自身のプログラムコードのチェックサムを計算するチェックサム計算ステップと、
    前記検査情報送信部が、前記異常起動通知ステップによって通知された異常な起動を示す情報、又は前記チェックサム計算ステップによって計算された前記チェックサムを含む前記検査情報を前記完全性検証装置に送信するステップと、
    前記完全性検証装置において、
    前記検査情報受信手段が、前記検証対象装置の前記完全性検証モジュールから前記検査情報を受信する検査情報受信ステップと、
    前記検査情報判定手段が、受信した前記検査情報が異常な起動を示す情報を含む場合に、前記検証対象装置が完全ではないと判定する検査情報判定ステップと、
    前記チェックサム検証手段が、受信した前記検査情報が前記チェックサムを含む場合に、計算された前記チェックサムを検証するチェックサム検証ステップと、
    前記検査情報判定手段が、前記検査情報が異常な起動を示す情報を含まない場合に、前記チェックサム検証ステップによって検証された情報に基づいて、前記検証対象装置が完全であるか否かをさらに判定するステップと、を備える方法。
  7. 請求項1に記載の遠隔完全性検証システムにおいて、前記完全性検証装置のコンピュータ及び前記検証対象装置のコンピュータに、請求項6に記載の各ステップを実行させるためのプログラム。
JP2014130252A 2014-06-25 2014-06-25 遠隔完全性検証システム、方法及びプログラム Active JP6257460B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014130252A JP6257460B2 (ja) 2014-06-25 2014-06-25 遠隔完全性検証システム、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014130252A JP6257460B2 (ja) 2014-06-25 2014-06-25 遠隔完全性検証システム、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2016010031A JP2016010031A (ja) 2016-01-18
JP6257460B2 true JP6257460B2 (ja) 2018-01-10

Family

ID=55227317

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014130252A Active JP6257460B2 (ja) 2014-06-25 2014-06-25 遠隔完全性検証システム、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6257460B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG10201602449PA (en) 2016-03-29 2017-10-30 Huawei Int Pte Ltd System and method for verifying integrity of an electronic device
JP6930884B2 (ja) * 2017-09-20 2021-09-01 Necプラットフォームズ株式会社 Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラム
EP3495979A1 (de) * 2017-12-08 2019-06-12 Siemens Aktiengesellschaft Verfahren und bestätigungsvorrichtung zur integritätsbestätigung eines systems
JP7430817B2 (ja) 2020-03-13 2024-02-13 華為技術有限公司 通信方法、装置、およびシステム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259848A (ja) * 2005-03-15 2006-09-28 Matsushita Electric Ind Co Ltd プログラム実行装置、プログラム実行方法、および、プログラム
JP4997242B2 (ja) * 2005-08-25 2012-08-08 フォーティファイ ソフトウェア, エルエルシー セキュリティを提供するためのプログラムの解析および補完のための装置および方法
DE102011004978B4 (de) * 2011-03-02 2021-12-09 Siemens Aktiengesellschaft Verfahren, Steuerungseinrichtung und System zum Nachweis von Verletzungen der Authentzität von Anlagenkomponenten
JP2011003020A (ja) * 2009-06-18 2011-01-06 Toyota Infotechnology Center Co Ltd コンピューターシステムおよびプログラム起動方法
JP5986897B2 (ja) * 2012-11-13 2016-09-06 Kddi株式会社 端末装置、完全性検証システム、およびプログラム

Also Published As

Publication number Publication date
JP2016010031A (ja) 2016-01-18

Similar Documents

Publication Publication Date Title
US10176330B2 (en) Global platform health management
CN109669734B (zh) 用于启动设备的方法和装置
CN110334521B (zh) 可信计算系统构建方法、装置、可信计算系统及处理器
US9652276B2 (en) Hypervisor and virtual machine protection
US20080244114A1 (en) Runtime integrity chain verification
US20140075522A1 (en) Reliable verification of hypervisor integrity
US10915632B2 (en) Handling of remote attestation and sealing during concurrent update
CN105608386A (zh) 一种可信计算终端完整性度量、证明方法及装置
EP1872231A2 (en) Secure boot
JP6257460B2 (ja) 遠隔完全性検証システム、方法及びプログラム
CN110334515B (zh) 一种基于可信计算平台生成度量报告的方法及装置
CN112650985A (zh) 使用隐式数据签名人工智能水印的方法和系统
US11062033B2 (en) Independent integrity verification of security policy data in applications on a client
EP3338214B1 (en) Secure computation environment
US8499351B1 (en) Isolated security monitoring system
WO2014183643A1 (zh) 具有安全启动功能的芯片的校验方法及校验装置
CN113641463A (zh) 虚拟化系统可信认证方法、系统及计算机可读存储介质
US11520595B2 (en) Industrial internet of things gateway boot methods
WO2022170966A1 (zh) 在目标平台上启动应用程序的方法及装置
CN116956298A (zh) 应用运行环境检测方法和装置
WO2013028059A1 (en) Verification system for trusted platform
WO2019137614A1 (en) Apparatus and method for runtime integrity protection for execution environments
KR102343406B1 (ko) 데이터 파일을 보호하는 장치 및 컴퓨터 프로그램
CN118312946A (en) Host authentication method, host authentication device and related equipment thereof
Sim et al. Secure firmware architecture using virtual hard disks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171024

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171205

R150 Certificate of patent or registration of utility model

Ref document number: 6257460

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250