図面 (/)

技術 情報処理装置、情報処理システム、情報処理方法、及びプログラム

出願人 キヤノン株式会社
発明者 河津鮎太
出願日 2016年2月26日 (4年10ヶ月経過) 出願番号 2016-036312
公開日 2017年8月31日 (3年4ヶ月経過) 公開番号 2017-153044
状態 特許登録済
技術分野 暗号化・復号化装置及び秘密通信 ストアードプログラムにおける機密保護 記憶装置の機密保護
主要キーワード データ更新回数 遠隔機器 年平均 PC管 自己防衛 改竄有無 起動処理中 クライアント秘密鍵
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年8月31日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (12)

課題

サーバのような遠隔機器を用いてクライアントに対する改竄検知を行う構成において、サーバに対する負荷を抑えながら、クライアント上で頻繁に更新される情報に対する改竄をサーバに検知させる。

解決手段

メモリに格納されているモジュールハッシュ値と、メモリに格納されているデータのハッシュ値と、を算出する。データのハッシュ値と、正解ハッシュ値とが一致するか否かを判定する。モジュールのハッシュ値と、判定結果を示す情報と、をサーバに送信する。

概要

背景

コンピュータサーバ等に接続する際、コンピュータ内部のモジュール改竄されていないことを検証するための機器証明技術がある。機器証明技術を用いる場合、接続元のコンピュータ(以下、クライアントPC(Personal Computer)と呼ぶ)は、内部に含まれる各モジュールから生成したハッシュ値デジタル署名付き接続先のサーバに送信する。サーバは、予めクライアントPC内部に含まれる各モジュールのハッシュ値の正解値(又は期待値であり、以下、正解ハッシュ値と呼称する場合がある)をデータベースに保持しておく。そして、サーバは、クライアントPCから受信したハッシュ値と、データベース内の正解ハッシュ値を比較することで、クライアントPCが改竄されているか否かを判断する。

例えば、特許文献1及び非特許文献1には、クライアントPCが、ブート時に起動する各モジュールのハッシュ値をサーバに送信する技術が開示されている。サーバは、送信されたハッシュ値とデータベース内の正解ハッシュ値とを比較することで、クライアントPCの改竄を検知することができる。

概要

サーバのような遠隔機器を用いてクライアントに対する改竄検知を行う構成において、サーバに対する負荷を抑えながら、クライアント上で頻繁に更新される情報に対する改竄をサーバに検知させる。メモリに格納されているモジュールのハッシュ値と、メモリに格納されているデータのハッシュ値と、を算出する。データのハッシュ値と、正解ハッシュ値とが一致するか否かを判定する。モジュールのハッシュ値と、判定結果を示す情報と、をサーバに送信する。

目的

本発明は、サーバのような遠隔機器を用いてクライアントに対する改竄検知を行う構成において、サーバに対する負荷を抑えながら、クライアント上で頻繁に更新される情報に対する改竄をサーバに検知させることを目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

モジュール、データ、及び当該データについて生成されたハッシュ値である正解ハッシュ値を格納するメモリと、前記メモリに格納されている前記モジュールのハッシュ値と、前記メモリに格納されている前記データのハッシュ値と、を算出する算出手段と、前記算出手段が算出した前記データのハッシュ値と、前記正解ハッシュ値とが一致するか否かを判定する判定手段と、前記算出手段が算出した前記モジュールのハッシュ値と、前記判定手段による判定結果を示す情報と、を前記メモリに格納されている前記モジュール及び前記データの完全性を検証するサーバに送信する送信手段と、を備えることを特徴とする、情報処理装置

請求項2

前記正解ハッシュ値は、完全性を有することが確認されたデータのハッシュ値であることを特徴とする、請求項1に記載の情報処理装置。

請求項3

前記モジュールが前記データを生成又は更新して前記メモリに格納したこと、又は前記モジュールが前記データを認証したことに応じて、前記算出手段は前記データのハッシュ値を算出して前記正解ハッシュ値として前記メモリに格納することを特徴とする、請求項1又は2に記載の情報処理装置。

請求項4

前記正解ハッシュ値は、前記モジュールの完全性が検証されない場合には更新されないことを特徴とする、請求項1乃至3の何れか1項に記載の情報処理装置。

請求項5

前記正解ハッシュ値は、前記算出手段が算出した前記モジュールのハッシュ値が所定値と異なる場合には更新されないことを特徴とする、請求項1乃至4の何れか1項に記載の情報処理装置。

請求項6

前記メモリは複数のデータと、それぞれのデータについての正解ハッシュ値とを格納し、前記判定手段は、前記複数のデータのそれぞれについて、前記算出手段が算出した前記データのハッシュ値と、前記正解ハッシュ値とが一致するか否かを判定し、前記送信手段は、前記複数のデータのそれぞれについての前記判定手段による判定結果を前記サーバに送信することを特徴とする、請求項1乃至5の何れか1項に記載の情報処理装置。

請求項7

前記送信手段は、前記複数のデータのそれぞれについて、前記データの識別子と、前記算出手段が算出した前記データのハッシュ値と、前記算出手段が算出した前記データのハッシュ値と前記判定手段による判定結果とから生成されたデータのハッシュ値と、を前記サーバに送信することを特徴とする、請求項6に記載の情報処理装置。

請求項8

前記メモリが格納する複数のデータから、前記判定手段による完全性の検証対象となるデータを選択する選択手段をさらに備えることを特徴とする、請求項1乃至7の何れか1項に記載の情報処理装置。

請求項9

前記選択手段は、前記データへのアクセス権限を示す情報、前記モジュールの実行権限を示す情報、又は前記データの更新頻度を示す情報に従い、完全性の検証対象となるデータを選択することを特徴とする、請求項8に記載の情報処理装置。

請求項10

前記送信手段は、前記算出手段が算出した前記モジュールのハッシュ値と、前記判定手段による判定結果を示す情報とを、耐タンパー性を有するメモリから読み出すことを特徴とする、請求項1乃至9の何れか1項に記載の情報処理装置。

請求項11

前記送信手段は、耐タンパー性がハードウェアにより実装された第1のメモリから、前記算出手段が算出した前記モジュールのハッシュ値を読み込み、耐タンパー性がソフトウェアにより実装された第2のメモリから、前記データの少なくとも一部についての前記判定手段による判定結果を示す情報を読み込むことを特徴とする、請求項1乃至10の何れか1項に記載の情報処理装置。

請求項12

他の情報処理装置が有するモジュールのハッシュ値と、前記他の情報処理装置が有するデータの完全性を示す情報と、を受信する受信手段と、前記受信したモジュールのハッシュ値と、他の情報処理装置が有するモジュールについて以前に生成されたハッシュ値である正解ハッシュ値とが一致し、かつ前記受信したデータの完全性を示す情報が、前記他の情報処理装置が有するデータが完全性を有していることを示す場合、前記他の情報処理装置が有するモジュール及びデータは完全性を有していると判定する判定手段と、前記判定手段による判定結果を通知する通知手段と、を備えることを特徴とする情報処理装置。

請求項13

第1の情報処理装置と第2の情報処理装置とを備える情報処理システムであって、前記第1の情報処理装置は、モジュール、データ、及び当該データについて生成されたハッシュ値である正解ハッシュ値を格納するメモリと、前記メモリに格納されている前記モジュールのハッシュ値と、前記メモリに格納されている前記データのハッシュ値と、を算出する算出手段と、前記算出手段が算出した前記データのハッシュ値と、前記正解ハッシュ値とが一致するか否かを判定する判定手段と、前記算出手段が算出した前記モジュールのハッシュ値と、前記判定手段による判定結果を示す情報と、を第2の情報処理装置に送信する送信手段と、を備え、前記第2の情報処理装置は、前記算出手段が算出した前記モジュールのハッシュ値と、前記判定手段による判定結果を示す情報と、を受信する受信手段と、前記第1の情報処理装置が有するモジュールについて以前に生成されたハッシュ値である正解ハッシュ値を格納する格納手段と、前記算出手段が算出した前記モジュールのハッシュ値と前記正解ハッシュ値とが一致し、かつ前記判定手段による判定結果を示す情報が、前記第1の情報処理装置が有するデータが完全性を有していることを示す場合、前記第1の情報処理装置が有するモジュール及びデータは完全性を有していると判定する判定手段と、前記判定手段による判定結果を通知する通知手段と、を備えることを特徴とする、情報処理システム。

請求項14

モジュール、データ、及び当該データについて生成されたハッシュ値である正解ハッシュ値をメモリに格納する情報処理装置が行う情報処理方法であって、前記メモリに格納されている前記モジュールのハッシュ値と、前記メモリに格納されている前記データのハッシュ値と、を算出する算出工程と、前記算出工程で算出した前記データのハッシュ値と、前記正解ハッシュ値とが一致するか否かを判定する判定工程と、前記算出工程で算出した前記モジュールのハッシュ値と、前記判定工程における判定結果を示す情報と、を前記メモリに格納されている前記モジュール及び前記データの完全性を検証するサーバに送信する送信工程と、を有することを特徴とする、情報処理方法。

請求項15

情報処理装置が行う情報処理方法であって、他の情報処理装置が有するモジュールのハッシュ値と、前記他の情報処理装置が有するデータの完全性を示す情報と、を受信する受信工程と、前記受信したモジュールのハッシュ値と、他の情報処理装置が有するモジュールについて以前に生成されたハッシュ値である正解ハッシュ値とが一致し、かつ前記受信したデータの完全性を示す情報が、前記他の情報処理装置が有するデータが完全性を有していることを示す場合、前記他の情報処理装置が有するモジュール及びデータは完全性を有していると判定する判定工程と、前記判定工程における判定結果を通知する通知工程と、を備えることを特徴とする情報処理方法。

請求項16

第1の情報処理装置と第2の情報処理装置とを備える情報処理システムが行う情報処理方法であって、前記第1の情報処理装置は、モジュール、データ、及び当該データについて生成されたハッシュ値である正解ハッシュ値をメモリに格納しており、前記情報処理方法は、前記第1の情報処理装置が、前記メモリに格納されている前記モジュールのハッシュ値と、前記メモリに格納されている前記データのハッシュ値と、を算出する算出工程と、前記第1の情報処理装置が、前記算出工程で算出した前記データのハッシュ値と、前記正解ハッシュ値とが一致するか否かを判定する判定工程と、前記第1の情報処理装置が、前記算出工程で算出した前記モジュールのハッシュ値と、前記判定工程における判定結果を示す情報と、を第2の情報処理装置に送信する送信工程と、前記第2の情報処理装置が、前記算出工程で算出した前記モジュールのハッシュ値と、前記判定工程における判定結果を示す情報と、を受信する受信工程と、前記第2の情報処理装置が、前記算出工程で算出した前記モジュールのハッシュ値と、前記第1の情報処理装置が有するモジュールについて以前に生成されたハッシュ値である正解ハッシュ値とが一致し、かつ前記判定工程における判定結果を示す情報が、前記第1の情報処理装置が有するデータが完全性を有していることを示す場合、前記第1の情報処理装置が有するモジュール及びデータは完全性を有していると判定する判定工程と、前記第2の情報処理装置が、前記判定工程における判定結果を通知する通知工程と、を有することを特徴とする、情報処理システム。

請求項17

コンピュータを、請求項1乃至12の何れか1項に記載の情報処理装置の各手段として機能させるためのプログラム

技術分野

0001

本発明は、情報処理装置情報処理システム情報処理方法、及びプログラムに関する。

背景技術

0002

コンピュータサーバ等に接続する際、コンピュータ内部のモジュール改竄されていないことを検証するための機器証明技術がある。機器証明技術を用いる場合、接続元のコンピュータ(以下、クライアントPC(Personal Computer)と呼ぶ)は、内部に含まれる各モジュールから生成したハッシュ値デジタル署名付き接続先のサーバに送信する。サーバは、予めクライアントPC内部に含まれる各モジュールのハッシュ値の正解値(又は期待値であり、以下、正解ハッシュ値と呼称する場合がある)をデータベースに保持しておく。そして、サーバは、クライアントPCから受信したハッシュ値と、データベース内の正解ハッシュ値を比較することで、クライアントPCが改竄されているか否かを判断する。

0003

例えば、特許文献1及び非特許文献1には、クライアントPCが、ブート時に起動する各モジュールのハッシュ値をサーバに送信する技術が開示されている。サーバは、送信されたハッシュ値とデータベース内の正解ハッシュ値とを比較することで、クライアントPCの改竄を検知することができる。

0004

特許第4950195号公報

先行技術

0005

Trusted Computing Group(TCG)TPMSpecification Version 1.2 (http://www.trustedcomputinggroup.org/)

発明が解決しようとする課題

0006

従来技術によれば、クライアントPC内部に含まれる各モジュールに対する改竄が検知される。一方で、クライアントPCが格納しているデータに対する改竄を検知する需要も存在する。例えばモジュールが扱う、モジュールの挙動等を制御する各種設定が記載されたデータである設定ファイルが改竄された場合、モジュールが異常な挙動をすることが考えられる。この場合、データに対する改竄を検知できれば、クライアントPCの異常を検出することができる。また、例えば、メールの送受信を行うメールアプリが扱うアドレス帳データに対する改竄を検知することにより、予めサーバ上に保持されている正常なアドレス帳データを用いて、クライアントPCのアドレス帳データを復元することもできる。

0007

一方で、モジュールの改竄を検知する上記の技術を、単純にデータに適用することは容易ではない。上記の技術においては、クライアントPCが有するモジュールの正解ハッシュ値を、サーバが管理する必要がある。したがって、この技術をデータに適用すると、クライアントPCに格納されたデータの正解ハッシュ値も、サーバが管理する必要があるため、クライアントPC内のデータが更新されるたびに、サーバが管理する正解ハッシュ値も更新する必要がある。データはモジュールと比べて頻繁に更新されるため、このような方法を用いるとサーバの負荷が増大するという課題が存在する。

0008

本発明は、サーバのような遠隔機器を用いてクライアントに対する改竄検知を行う構成において、サーバに対する負荷を抑えながら、クライアント上で頻繁に更新される情報に対する改竄をサーバに検知させることを目的とする。

課題を解決するための手段

0009

本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、
モジュール、データ、及び当該データについて生成されたハッシュ値である正解ハッシュ値を格納するメモリと、
前記メモリに格納されている前記モジュールのハッシュ値と、前記メモリに格納されている前記データのハッシュ値と、を算出する算出手段と、
前記算出手段が算出した前記データのハッシュ値と、前記正解ハッシュ値とが一致するか否かを判定する判定手段と、
前記算出手段が算出した前記モジュールのハッシュ値と、前記判定手段による判定結果を示す情報と、を前記メモリに格納されている前記モジュール及び前記データの完全性を検証するサーバに送信する送信手段と、を備える
ことを特徴とする。

発明の効果

0010

サーバのような遠隔機器を用いてクライアントに対する改竄検知を行う構成において、サーバに対する負荷を抑えながら、クライアント上で頻繁に更新される情報に対する改竄をサーバに検知させることができる。

図面の簡単な説明

0011

情報処理装置の構成例を示すブロック図。
実施形態1に係る情報処理装置の機能構成例を説明するブロック図。
データベース1003とリスト302を説明する図。
リスト302の生成及び更新手順を示すフローチャート
実施形態1に係る改竄検知処理を説明するフローチャート。
実施形態2に係る改竄検知処理を説明するフローチャート。
実施形態2に係る改竄検知処理を説明するサブフローチャート。
実施形態2に係る情報処理装置の機能構成例を説明するブロック図。
アクセス制御リスト実行権限表、及び更新頻度表を説明する図。
各実施形態に係るシステム構成例を示すブロック図。
データのハッシュ値計算ログ1103を説明する図。

実施例

0012

以下、本発明の実施形態を図面に基づいて説明する。ただし、本発明の範囲は以下の実施形態に限定されるものではない。

0013

[実施形態1]
装置構成
図1のブロック図を参照して、実施形態1に適用可能な情報処理装置100の構成例を説明する。図1において、情報処理装置100は、特に制限されないが、例えば一般に普及しているパーソナルコンピュータ、画像データのコピースキャン、若しくはプリント等を実行可能な画像処理装置、又はデジタル写真撮影可能な撮像装置等でありうる。図1に示すように、本実施形態における情報処理装置100は、ROM101、HDD102、TPM103、RAM104、及びCPU105を備える。

0014

ROM101は記憶装置であって、物理的又は論理的な書き換えが不可能な不揮発性メモリである。ROM101は、BIOS110、各種モジュール、及びデータ等を記憶できる。BIOS110は情報処理装置100全体を制御するモジュールである。また、BIOS110は、情報処理装置100に電源投入された際、情報処理装置内部で最初に起動されるモジュールである。

0015

HDD102は、ブートローダ111、カーネル112、モジュールA113、モジュールB114、モジュールA113が扱うデータa115及びデータb116、並びにモジュールB114が扱うデータc117等を記憶可能な記憶装置である。ここで、ブートローダ111はカーネル112の起動を制御するモジュールである。カーネル112は、各種モジュール(後述のモジュールA113及びモジュールB114)のロード、RAM104のメモリ管理、及び不図示のキーボード又はディスプレイ等を用いた入出力機能を制御するモジュールである。

0016

モジュールA113及びモジュールB114は、ワードプロセッサ表計算データベース管理ネットワークブラウジングメール送受信映像音声再生印刷、及び通信等の、情報処理装置100が実現する各種機能を提供するモジュールである。本実施形態では、HDD102内にある各種機能を提供するモジュールが、モジュールA113及びモジュールB114から構成されているものとして説明する。しかしながら、本発明はこのような構成に限定されることはなく、情報処理装置100はより多くのモジュールから構成されていてもよい。

0017

本実施形態においては、BIOS110、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114に対する改竄が検知される。以下では、これらのプログラムをまとめてモジュールと呼ぶ。それぞれのモジュールに対しては、HDD102上に記録されたプログラムの書き換え、又は情報処理装置100に設けられたROM101の交換等により、改竄が行われる可能性がある。

0018

データa115及びデータb116はモジュールA113が扱うデータであり、例えばモジュールの挙動を制御する設定ファイルでありうる。また、データc117はモジュールB114が扱うデータである。モジュールと同様に、情報処理装置100が扱うデータの数は限定されず、より多くのデータから構成されていてもよい。また、情報処理装置100が扱うデータの種類も設定ファイルに限定されず、例えばデータa115、データb116、及びデータc117の少なくとも1つが、アドレス帳データ又は文書データのようなモジュールにより作成されるデータであってもよい。以上のように、また、ROM101及びHDD102のようなメモリは、モジュール及びデータを格納している。

0019

TPM103は、耐タンパー性を有するセキュリティチップである。耐タンパー性とは、外部からの解析を困難にすると共に、外部から解析しようとした場合に内部に記憶されているモジュール又はデータを破壊することにより自己防衛する特性である。TPM103は、NVRAM119、PCR0(120)、PCR1(121)、PCR2(122)、PCR3(123)、PCR4(124)、及び制御部118を備える。

0020

NVRAM119は不揮発性メモリであり、デジタル署名の生成に必要な秘密鍵クライアント秘密鍵及びサーバ秘密鍵)、公開鍵クライアント公開鍵及びサーバ公開鍵)、及び公開鍵証明書等を記憶する。PCR0〜4は揮発性メモリであり、情報処理装置100が備える各モジュール等のハッシュ値を記憶する。本実施形態ではTPM103は5つのPCRを備えるが、PCRの数はこれに限定されず、例えばPCRの数は5つより多くても良い。制御部118は、デジタル署名生成処理、及びPCR0〜4へのハッシュ値保存処理などを実行する。

0021

ここで、PCRへのハッシュ値保存処理について説明する。ハッシュ値保存処理において、制御部118は、所定のPCRに既に保存されているハッシュ値Hash1と、TPM103の外部から入力されたモジュール又はデータのハッシュ値Hash2と、を用いて次の式を計算する。そして、制御部118は、計算により得られた値Result1をPCRに保存する。
Result1=H(Hash1|Hash2) (式1)
H(x)は値xに対するハッシュ関数である。ハッシュ関数としては公知のSHA1、SHA256、又はSHA512等のアルゴリズム利用可能である。「x|y」は値xと値yの連結を表す。

0022

以上説明したPCRへのハッシュ値保存処理は、情報処理装置100が起動する際等に実行される。一方で、起動時等にPCRに書き込まれたハッシュ値を改竄することは困難である。リセット後のPCRにはデータのハッシュ値を書き込むことができる。しかしながら、既にハッシュ値が記録されているPCRの値を書き換えようとすると、以前に記録されていたハッシュ値とも、新たに書き込もうとするデータのハッシュ値とも異なる値が、PCRには記録されることになる。

0023

なお、以下で説明するように、第1の保存部202は、計算部201が算出したモジュールのハッシュ値をTPM103のPCRに保存する。ここで、実際にPCRに保存されるデータは、式(1)に示されるように、計算部201が算出したハッシュ値のハッシュ値である。しかしながら、所定の値に対してハッシュ関数を2回適用して得られた値もハッシュ値であることに変わりはないから、以下では、PCRに保存されるデータを単にモジュールのハッシュ値と呼ぶ。これは、第2の保存部204が保存する第1又は第2の所定値のハッシュ値、及び実施形態2で説明する結合ハッシュ値についても同様である。

0024

ここで、情報処理装置100の起動処理について説明する。情報処理装置100に電源が投入されると、まずBIOS110が実行される。その後、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114が、この純にロードされ及び実行される。モジュールA113及びモジュールB114は選択的にロード及び実行されてもよい。すなわち、ロード及び実行されないモジュールが存在してもよい。また、モジュールA113及びモジュールB114のロード及び実行の順序は特に制限されない。すなわち、必要な時に必要なモジュールをロード及び実行することができる。また、モジュールのロード及び実行とは関係なく、任意の値のハッシュ値をPCRに保存することもできる。

0025

本実施形態では、前述したPCRへのハッシュ値保存処理を、以上説明した情報処理装置100の起動処理中に実行する。すなわち、BIOS110は自分自身のハッシュ値を算出し、算出したハッシュ値を式1に従ってPCR0へ保存する。そして、BIOS110はブートローダ111のハッシュ値を算出し、算出したハッシュ値を式1に従ってPCR1へ保存する。その後、BIOS110はブートローダ111を起動する。起動したブートローダ111はカーネル112のハッシュ値を算出し、算出したハッシュ値を式1に従ってPCR2へ保存する。その後、ブートローダ111はカーネル112を起動する。起動したカーネル112は、モジュール(モジュールA113及びモジュールB114)が必要となった場合にモジュールのハッシュ値を算出し、算出したハッシュ値を式1に従ってPCR3へ保存する。カーネル112は、モジュールが必要になった際にモジュールを起動する毎に、ハッシュ値保存処理を繰り返し実行する。さらにTPM103は、PCRに保存されたハッシュ値に対するデジタル署名を生成し、PCRに保存したハッシュ値とともに出力することができる。

0026

本実施形態において、クライアントPCである情報処理装置100は、PCRに保存されておりTPM103が出力したハッシュ値と、そのデジタル署名と、をサーバに送る。このサーバは、情報処理装置100の、HDD102のようなメモリに格納されているモジュール及びデータ等の完全性を検証する。例えば、このサーバは、送られたハッシュ値を正解ハッシュ値と比較することで、クライアントPC内のモジュール及びデータ等に対する改竄の有無を検証することができる。なお、ハッシュ値がどのモジュール又はデータから算出されたのかを特定するために、サーバに送信するハッシュ値には、例えばモジュールのファイル名や識別子などを関連づけることができる。ここで、サーバが格納している正解ハッシュ値とは、情報処理装置100のメモリに格納されているモジュールについて生成されたハッシュ値である。例えば、モジュールの正解ハッシュ値は、以前に、例えば完全性を有することが確認された際に生成されたモジュールのハッシュ値である。モジュールの正解ハッシュ値は、例えば、情報処理装置100に対応づけて予めサーバに格納されていてもよいし、情報処理装置100のモジュールがアップデートされた際にサーバに格納されてもよい。

0027

(システム構成)
次に、図10を参照して本実施形態におけるシステム構成例について説明する。図10は本実施形態に適用可能なシステム概要を示す図である。図10に示すように、本実施形態における情報処理システム1000は、クライアントPC1001、サーバ1002、及びデータベース1003を備える。クライアントPC1001とサーバ1002は、有線又は無線通信回線1004を介して接続されており、互いにデータを通信可能である。また、クライアントPC1001及びサーバ1002としては、前述した情報処理装置100を用いることができる。また、サーバ1002は、データベース1003からのデータの読み込み及びデータベース1003へのデータの書き込みが可能である。

0028

ここで、データベース1003について、図3(A)を参照して説明する。図3(A)は、データベース1003の一例である。データベース1003において、列「クライアントPCのID」は、データベース1003に登録されているクライアントPCの識別子を表す。図3(A)の例では、ID「001」又は「002」をそれぞれ持つ2台のクライアントPC1001及び不図示のクライアントPCがデータベース1003に登録されている。本実施形態では、データベース1003に登録されているクライアントPCが有するモジュール及びデータに対する改竄の有無を、サーバ1002が検証する。

0029

データベース1003において、列「検証対象」は、サーバ1002が検証するクライアントPCのモジュール名又はデータ名を示す。「検証対象」がモジュールを指す場合、「検証対象」にはモジュールを一意に特定する情報、例えば、モジュールのファイル名又はモジュールの識別子等が記録される。「検証対象」がデータを指す場合、「検証対象」には単に検証の対象がデータであることを示す情報、例えば「データ」が記録される。本実施形態においては、検証の対象はクライアントPC1001が有する特定のデータではなく、クライアントPC1001内のデータ全体である。サーバ1002は、「検証対象」列に記載された各モジュール及びデータに対する改竄の有無を検証することで、クライアントPC1001に対する改竄の有無を検証する。図3(A)の例では、サーバ1002は、クライアントPC1001が有するモジュールA、モジュールB、及びデータ全体(データa,データb,データc)に対する改竄の有無を検証する。

0030

データベース1003において、「正解ハッシュ値」列には、「検証対象」列に登録されているモジュール又はデータのそれぞれについての正解ハッシュ値が登録されている。上述の通り、正解ハッシュ値とは、クライアントPC1001が有するモジュールについて以前に生成されたハッシュ値である。サーバ1002は、この「正解ハッシュ値」とクライアントPCから受信したハッシュ値とを「検証対象」毎に比較し、一致していれば検証対象に対する改竄はないと判定し、不一致ならば検証対象に対する改竄があると判定する。

0031

本実施形態において、「検証対象」が「データ」となっている行の「正解ハッシュ値」は、第1の所定値のハッシュ値である。例えば、第1の所定値が2進数の値「1」のとき、SHA1に従って計算した第1の所定値のハッシュ値は「da39・・・09」となる。クライアントPC1001及びサーバ1002の双方は、第1の所定値又は第1の所定値のハッシュ値を知っている。第1の所定値又は第1の所定値は、このような値であれば何でもよい。そして、サーバ1002は、「検証対象」がデータとなっている行の「正解ハッシュ値」とクライアントPC1001から受信したデータのハッシュ値とが一致していれば、クライアントPC1001に含まれるデータに対する改竄はないと判定する。一方、これが不一致ならばサーバ1002はクライアントPC1001に含まれるデータに対する改竄があると判定する。

0032

このように、サーバ1002は、ID「001」を持つクライアントPC1001が有する「モジュールA」、「モジュールB」、及び「データ全体」について、それぞれの正解ハッシュ値とクライアントPCから受信したハッシュ値とを比較する。こうして、図3(A)の場合、サーバ1002は、クライアントPC1001が有する「モジュールA」、「モジュールB」、及び「データ全体」に対する改竄の有無を検証する。ID「002」を持つクライアントPCに関しても同様であるため、説明は省略する。

0033

機能構成
図2のブロック図により実施形態1の情報処理装置(クライアントPC)1001と情報処理装置(サーバ)1002の機能構成例を説明する。この機能構成は、CPU105が、例えばHDD102に格納されている、本実施形態の処理を実現する情報処理プログラムを実行することで実現することができる。以下の機能構成によれば、情報処理装置(クライアントPC)1001が改竄されているか否かを、情報処理装置(サーバ)1002で検証することができる。

0034

まず、情報処理装置(クライアントPC)1001の機能構成を説明する。計算部201は、ROM101及びHDD102等に格納されているモジュールのハッシュ値と、HDD102等に格納されているデータのハッシュ値と、を算出する。例えば、本実施形態において計算部201は、BIOS110、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114からハッシュ値を計算し、第1の保存部202に出力する。また、計算部201は、データa115、データb116、データc117、第1の所定値、及び第2の所定値のハッシュ値を計算し、第1の検証部203に出力する。

0035

第2の所定値は、第1の所定値と異なる値であれば特に限定されない。例えば、第1の所定値を2進数の「1」に、第2の所定値を2進数の「0」にすることができる。また、第2の所定値は、第1の所定値のように、クライアントPC1001とサーバ1002の双方が知っている必要はなく、クライアントPC1001のみが知っていてもよい。ハッシュ値の計算に用いるハッシュ関数は特に限定されず、公知のSHA1、SHA256、及びSHA512等のアルゴリズムを利用可能である。

0036

第1の保存部202は、計算部201により計算された、BIOS110、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114のハッシュ値をセキュリティチップ205に保存する。セキュリティチップ205へのハッシュ値保存処理は、前述したTPM103のPCRへのハッシュ値保存処理と同様のため、説明は省略する。以下では、第1の保存部202に格納されるハッシュ値のことを、モジュールハッシュ値と呼ぶことがある。

0037

第1の検証部203は、計算部201により計算されたデータのハッシュ値と、リスト302に含まれる正解ハッシュ値とが一致するか否かを判定する。本実施形態において第1の検証部203は、計算部201により計算されたデータa115、データb116、及びデータc117のハッシュ値を、リスト302に含まれる正解ハッシュ値と比較する。ここで、リスト302に含まれる正解ハッシュ値は、それぞれのデータについて生成されたハッシュ値であり、以前に生成されたハッシュ値でありうる。

0038

本実施形態において第1の検証部203は、全てのデータについて、計算されたハッシュ値がリスト302の正解ハッシュ値と一致した場合に、計算部201により計算された第1の所定値のハッシュ値を第2の保存部204に出力する。また、第1の検証部203は、いずれかのデータのハッシュ値がリスト302の正解ハッシュ値と不一致の場合は、計算部201により計算された第2の所定値のハッシュ値を第2の保存部204に出力する。この、第1の所定値のハッシュ値及び第2の所定値のハッシュ値は、第1の検証部203による判定結果を示している。すなわち、第1の所定値のハッシュ値は、データが完全性を有すること、具体的には計算部201により計算されたデータのハッシュ値がリスト302の正解ハッシュ値と一致することを示す。また、第1の所定値のハッシュ値は、データが完全性を有さないこと、具体的には計算部201により計算されたデータのハッシュ値がリスト302の正解ハッシュ値と一致しないことを示す。

0039

ここで、図3(B)を参照して、正解ハッシュ値のリスト302について説明する。図3(B)に示すリスト302は、クライアントPCに含まれる各モジュール(モジュールA、モジュールB)が扱うデータ(データa、データb、データc)の正解ハッシュ値を保持している。すなわち、第1の検証部203は、計算部201により計算された各データのハッシュ値が正解ハッシュ値と一致するか否かを検証することで、データに対する改竄の有無を検証する。

0040

リスト302には、正しく生成又は更新されたデータのハッシュ値を格納することができる。本実施形態においては、モジュールがデータを生成又は更新してメモリに格納したことに応じて、計算部201は生成又は更新されたデータのハッシュ値を算出し、正解ハッシュ値としてリスト302に保存する。モジュールにより作成された直後のデータは、改竄されていない完全性を有するデータであると考えることができる。このような構成により、リスト302には、完全性を有することが確認されたデータのハッシュ値が正解ハッシュ値として格納される。もっとも、モジュール自体が改竄されることにより不正なデータが作成される可能性もあるが、モジュールの改竄はサーバ1002により検知可能であるから、いずれにしろクライアントPC1001の改竄は検知可能である。

0041

具体的には、計算部201は、データが更新又は新規作成されると、更新後のデータのハッシュ値を計算し、リスト302内の該当するデータのハッシュ値を更新する。例えばデータaが更新された場合には、計算部201は、更新後のデータaから計算したハッシュ値で、リスト302内のデータaの正解ハッシュ値を更新する。また、データが新規作成された場合には、計算部201は、新規作成されたデータのハッシュ値を計算し、そのハッシュ値をリスト302に新規行として追加する。例えば、新規にデータdが作成された場合は、計算部201はデータdのハッシュ値を計算し、リスト302にデータdのハッシュ値を新規行として追加する。

0042

計算部201は、モジュールがデータの正当性を認証したことに応じて、このデータのハッシュ値を算出し、正解ハッシュ値としてリスト302に保存してもよい。例えば、ユーザがモジュールの設定ファイルを修正した場合、モジュールが設定ファイルが不正な項目を含んでいないと判断した場合に、計算部201は設定ファイルの正解ハッシュ値を更新することができる。このような構成によれば、外部から入力されたデータについても、完全性を有する状態でのハッシュ値をリスト302に保存することができる。

0043

ここで、図4のフローチャートを参照して、リスト302の生成及び更新処理をより詳細に説明する。以下では、モジュールA113がデータaを更新する場合及びデータdを新規作成する場合について説明する。モジュールB114がデータを更新又は新規作成する場合も、同様の処理によりリスト302を更新することができる。

0044

まず、計算部201はモジュールA113のハッシュ値を計算し、第1の保存部202に出力する(ステップS401)。第1の保存部202は計算部201が出力したモジュールA113のハッシュ値をセキュリティチップ205に保存する(ステップS402)。カーネル112はモジュールA113をロード及び実行する(ステップS403)。起動したモジュールA113は、データdを新規作成する(ステップS404)。カーネル112はリスト302を読み込む(ステップS405)。読み込みに成功した場合、計算部201はデータdのハッシュ値を計算し、リスト302に追加する(ステップS407)。読み込みに失敗した場合には、リスト302を更新せずに処理が終了する。

0045

また、ステップS404でデータを更新する場合には、ステップS407で計算部201はリスト302の該当データのハッシュ値を更新する。例えば、ステップS404でモジュールA113がデータaを更新した場合、ステップS407で計算部201は更新後のデータaのハッシュ値を計算し、リスト302に登録されているデータaのハッシュ値を計算されたハッシュ値で更新する。

0046

ここで、ステップS405において正解ハッシュ値が記録されたリスト302を読み込む処理について、より詳細に説明する。本実施形態において、モジュールの完全性が検証されない場合には正解ハッシュ値が更新されないように、リスト302はHDD102等のメモリに保存されている。より具体的には、計算部201が算出したモジュールのハッシュ値が、予め算出されているモジュールの正解ハッシュ値のような所定値と異なる場合には、正解ハッシュ値は更新されない。

0047

一例として、リスト302は、BIOS110、ブートローダ111、カーネル112、及びモジュールA113のハッシュ値が正解ハッシュ値と一致した時のみ復号可能となるように暗号化された状態で、HDD102に保存されている。例えば、TPM103のPCRに保存されているBIOS110、ブートローダ111、カーネル112、及びモジュールA113のハッシュ値が、リスト302を暗号化した時のハッシュ値と同じである場合に、リスト302が復号可能となる。

0048

したがって、BIOS110、ブートローダ111、カーネル112、及びモジュールA113に対する改竄がなければ、カーネル112はリスト302を復号化することができる。一方で、BIOS110、ブートローダ111、カーネル112、及びモジュールA113のいずれかが改竄されている場合は、カーネル112はリスト302の復号に失敗するため、リスト302を読み出すことができない。このように、ステップS405では、BIOS110、ブートローダ111、カーネル112、及びモジュールA113が改竄されていない場合にのみ、リスト302が更新可能となるように制御が行われる。

0049

なお、前述したリスト302の復号条件は一例であり、例えば、BIOS110、ブートローダ111、及びカーネル112のハッシュ値が暗号化時と一致することを復号条件としてもよい。また、BIOS110、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114のハッシュ値が暗号化時と一致することを復号条件としてもよい。上述した、暗号化時にPCRに保存されていたハッシュ値と、現在のPCRに保存されているハッシュ値とが一致した時にのみリスト302を復号可能とする暗号化機能を、以下では、TPMのシール機能と呼ぶ場合がある。

0050

また、リスト302の保護のためには、上述のシール機能を用いる代わりに、TPM103のNVRAM119にリスト302を保存してもよい。TPM103のNVRAM119には、上述の復号条件と同様のアクセス条件を設定可能である。これにより、リスト302をNVRAM119に保存した時にPCRに保存されていたハッシュ値と、NVRAM119へのアクセス時にPCRに保存されているハッシュ値とが一致した場合にのみ、リスト302の読み込みや書き換えが可能となる。例えば、リスト302をNVRAM119に保存した時にTPM103のPCRに保存されていたBIOS110、ブートローダ111、カーネル112、及びモジュールA113のハッシュ値を、NVRAMへのアクセス条件として設定できる。

0051

BIOS110、ブートローダ111、カーネル112、及びモジュールA113のいずれか改竄されると、リスト302をNVRAM119に保存した時にPCRに保存されていたハッシュ値と、現在のPCRに保存されているハッシュ値とが不一致となる。このために、リスト302をNVRAM119から読み出せなくなる。一方で、BIOS110、ブートローダ111、カーネル112、及びモジュールA113に改竄がない場合は、リスト302をNVRAM119から読み出すことができる。

0052

なお、前述したNVRAM119へのアクセス条件は一例であり、例えば、BIOS110、ブートローダ111、及びカーネル112のハッシュ値が、リスト302の保存時のハッシュ値と一致することをアクセス条件としてもよい。また、BIOS110、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114のハッシュ値が、リスト302の保存時のハッシュ値と一致することをアクセス条件にしてもよい。

0053

上述のアクセス制御機能を、以下では、TPMのNVRAM機能と呼称する場合がある。NVRAM機能によれば、上述のように、NVRAM119へのリスト302の保存時にPCRに保存されていたハッシュ値と、現在のPCRに保存されているハッシュ値とが一致した時にのみ、NVRAM119へのアクセスが許可される。

0054

以上のように、HDD102又はTPM103のようなメモリは、正解ハッシュ値を含むリスト302を格納する。そして、リスト302は、上述のTPMのシール機能またはNVRAM機能で保護される。このため、クライアントPC1001に含まれるモジュール等に改竄がない場合にのみ、リスト302を読み込むことができる。

0055

第2の保存部204は、第1の検証部203が出力した第1の所定値のハッシュ値又は第2の所定値のハッシュ値を、セキュリティチップ205に保存する。セキュリティチップ205へハッシュ値を保存する処理は、前述したTPM103のPCRへハッシュ値を保存する処理と同様のため、説明は省略する。なお、上述のようにモジュールのハッシュ値をPCR0〜3に保存している場合は、第1の所定値のハッシュ値又は第2の所定値のハッシュ値をPCR4に保存することができる。以下では、第2の保存部204に格納されるハッシュ値の事を、フラグハッシュ値と呼ぶことがある。

0056

セキュリティチップ205は、第1の保存部202が保存したモジュールハッシュ値、及び第2の保存部204が保存したフラグハッシュ値に対して、デジタル署名を生成する。そして、セキュリティチップ205は、生成したデジタル署名と、モジュールハッシュ値と、フラグハッシュ値とを含む検証データを、送信部206に出力する。セキュリティチップ205としては、例えば前述のTPM103を利用することができる。

0057

送信部206は、セキュリティチップ205が生成した検証データを、情報処理装置(サーバ)1002の受信部207に送信する。上述のように、送信部206が送信する検証データには、計算部201が算出したモジュールのハッシュ値と、第1の検証部203による判定結果を示す情報と、が含まれる。

0058

次に、情報処理装置(サーバ)1002の機能構成を説明する。受信部207は、クライアントPC1001が有するモジュールのハッシュ値であるモジュールハッシュ値と、クライアントPC1001が有するデータの完全性を示す情報であるフラグハッシュ値と、を受信する。具体的には、受信部207は、情報処理装置(クライアントPC)1001の送信部206が送信した検証データを受信し、第2の検証部208に出力する。

0059

第2の検証部208は、受信部207が受信した検証データを検証することで、情報処理装置(クライアントPC)1001が改竄されているか否かを検証する。なお、前述したように、検証データには、第1の保存部202が保存したモジュールハッシュ値、第2の保存部204が保存したフラグハッシュ値、及びそれらに対するデジタル署名が含まれる。第2の検証部208は、後述のように、クライアントPC1001が有しているモジュール及びデータの完全性を検証することにより、クライアントPC1001が改竄されているか否かを検証する。この際に、第2の検証部208は、計算部201が算出したモジュールのハッシュ値と、第1の検証部203による判定結果を示す情報と、モジュールについて以前に生成されたハッシュ値である正解ハッシュ値とを参照する。

0060

第2の検証部208は、まず、検証データのデジタル署名を検証することで、検証データに含まれるモジュールハッシュ値及びフラグハッシュ値が改竄されているか否かを検証する。

0061

第2の検証部208は、次に、クライアントPC1001が有するモジュール及びデータが完全性を有しているか否かを判定する。具体的には、第2の検証部208は、受信部207が受信したモジュールのハッシュ値と正解ハッシュ値とが一致するか否かを判定する。また、第2の検証部208は、受信部207が受信したデータの完全性を示す情報が、クライアントPC1001が有するデータが完全性を有していることを示すか否かを判定する。双方が満たされる場合、第2の検証部208は、クライアントPC1001が有するモジュール及びデータが完全性を有していると判定する。

0062

具体的には、第2の検証部208は、検証データに含まれるモジュールハッシュ値と、データベース1003に含まれる正解ハッシュ値とを比較することで、情報処理装置(クライアントPC)1001内に含まれるモジュールに対する改竄の有無を検証する。例えば、第2の検証部208は、検証データに含まれるモジュールA113のハッシュ値と、データベース1003に登録されているモジュールA113の正解ハッシュ値とを比較することで、モジュールA113が改竄されているか否かを検証できる。検証データに含まれるモジュールA113のハッシュ値と、データベース1003に登録されているモジュールA113の正解ハッシュ値とが一致する場合、第2の検証部208は「改竄なし」と判定できる。また、不一致の場合、第2の検証部208は「改竄あり」と判断できる。

0063

第2の検証部208は、さらに、検証データに含まれるフラグハッシュ値と、データベース1003の正解ハッシュ値とを比較することで、情報処理装置(クライアントPC)1001内のモジュールが扱うデータに対する改竄を検知する。第1の検証部203に関して説明したように、第2の保存部204は、データから計算したハッシュ値が、リスト302内の正解ハッシュ値と一致した場合に、第1の所定値のハッシュ値をセキュリティチップ205に保存する。したがって、検証データに含まれるフラグハッシュ値が第1の所定値のハッシュ値である場合、第2の検証部208は、情報処理装置(クライアントPC)1001内のデータに対する改竄はないと判断することができる。

0064

そして、上述のようにデータベース1003の「データ」行には第1の所定値のハッシュ値が登録されている。第2の検証部208は、検証データに含まれるフラグハッシュ値が、データベース1003の「データ」行に登録されている正解ハッシュ値と一致する場合、情報処理装置(クライアントPC)1001内のデータに対する改竄はないと判断することができる。一方、第2の保存部204が第2の所定値のハッシュ値をセキュリティチップ205に保存した場合、検証データに含まれるフラグハッシュ値はデータベース1003の「データ」行のハッシュ値と一致しない。この場合、第2の検証部208は、情報処理装置(クライアントPC)1001内のデータに対する改竄があると判断することができる。

0065

通知部209は、第2の検証部208による判定結果を通知する。通知部209は、判定結果をクライアントPC1001に通知してもよいし、サーバ1002の何らかの処理部に通知してもよいし、その他の外部機器に通知してもよい。

0066

(改竄検知処理)
図5のフローチャートを参照して、本実施形態に係る改竄検知処理を説明する。クライアントPC1001の計算部201は、モジュールのハッシュ値を計算し、第1の保存部202に出力する(ステップS501)。第1の保存部202は、計算部201が出力したモジュールのハッシュ値をセキュリティチップ205に保存する(ステップS502)。

0067

次に、計算部201はデータのハッシュ値を計算し、第1の検証部203に出力する(ステップS503)。第1の検証部203は、リスト302を読み込む(ステップS504)。第1の検証部203はリスト302を読み込めたかどうかを判定し(ステップS505)、読み込めた場合、計算部201が出力したデータのハッシュ値と、リスト302に記録された正解ハッシュ値とを比較する(ステップS506)。

0068

第1の検証部203は、全データについてハッシュ値がリスト302の正解ハッシュ値と一致するかどうかを判定し(ステップS507)、一致する場合、第1の所定値のハッシュ値を第2の保存部204に出力する。この場合、第2の保存部204は第1の所定値のハッシュ値をセキュリティチップ205に保存する(ステップS508)。ステップS507で何れかのデータのハッシュ値がリスト302に記録された正解ハッシュ値と不一致の場合、第1の検証部203は、第2の所定値のハッシュ値を第2の保存部204に出力する。この場合、第2の保存部204は第2の所定値のハッシュ値をセキュリティチップ205に保存する(ステップS509)。

0069

セキュリティチップ205は、第1の保存部202及び第2の保存部204が保存したハッシュ値に対するデジタル署名を生成する。そして、第1の保存部202が保存したハッシュ値、第2の保存部204が保存したハッシュ値、及びそれらのデジタル署名を含む検証データを生成する(ステップS510)。なお、ステップS505でリスト302の読み込みに失敗したと判定された場合、セキュリティチップ205は、第1の保存部202が保存したハッシュ値とそのデジタル署名を含む検証データを生成する。送信部206は、セキュリティチップ205が生成した検証データをサーバの受信部207に送信する(ステップS511)。

0070

サーバ1002の受信部207は、クライアントPC1001の送信部206が送信した検証データを受信し、第2の検証部208に出力する(ステップS512)。第2の検証部208は、検証データに含まれるデジタル署名を検証する(ステップS513)。第2の検証部208はデジタル署名の検証に成功したかどうかを判定し(ステップS514)、成功した場合、検証データに含まれるハッシュ値とデータベース1003に含まれる正解ハッシュ値とを比較する(ステップS515)。上述したように、第2の検証部208は、検証データに含まれるモジュールハッシュ値とデータベース1003に含まれる正解ハッシュ値とを比較することで、クライアントPC1001に含まれるモジュールに対する改竄の有無を検証する。また、第2の検証部208は、検証データに含まれるフラグハッシュ値とデータベース1003に含まれる正解ハッシュ値とを比較することで、クライアントPC1001に含まれるデータに対する改竄の有無を検証する。

0071

通知部209は、ステップS515におけるモジュール及びデータに対する改竄の検証結果をクライアントPCに通知し(ステップS516)、クライアントPC1001は検証結果を受信する(ステップS517)。なお、ステップS514でデジタル署名の検証に失敗したと判定された場合、ステップS516で通知部209は、デジタル署名検証に失敗したことをクライアントPCに通知することができる。

0072

以上のように、本実施形態においては、クライアントPC1001によりデータの正解ハッシュ値リストが保持される。そして、データを生成又は更新する際には、クライアントPCが保持する正解ハッシュ値リストが更新される。したがって、更新されたデータのハッシュ値をサーバ1002に送信することは必要ではない。また、データが生成又は更新されるたびに、サーバ1002がデータベース1003を更新することも必要ではない。さらに、本実施形態においては、クライアントPC1001は、各データのハッシュ値をサーバ1002に送信する代わりに、各データに対する改竄の有無を検証し、その検証結果をサーバに送信する。このため、データの改竄検知も含めた機器証明を、サーバに大きな負荷をかけることなく実現できる。さらには、本実施形態においては、各データのハッシュ値をPCRに保存する代わりに、全データについての改竄検証結果を示す第1の所定値のハッシュ値又は第2の所定値のハッシュ値がPCRに保存される。このため、利用するPCRの数を節約できる。

0073

[実施形態2]
以下、本発明の実施形態2において行われる情報処理を説明する。なお、実施形態2において、実施形態1と略同様の構成については、同一符号を付して、その詳細説明を省略する。

0074

実施形態1では、データ毎に改竄を検知するのではなく、データ全体について改竄が検知された。つまり、実施形態1では、クライアントPC1001内に改竄されたデータが1つもなければデータの「改竄なし」と判定され、改竄されたデータが1つでもあればデータの「改竄あり」と判定された。したがって、例えばクライアントPC1001内にデータa、データb、及びデータcの3つのデータが存在する場合、実施形態1では、データa、データb、及びデータcのうち、どのデータが改竄されたかは特定されなかった。

0075

一方で、実施形態2では、ソフトTPMを用いてデータ毎に改竄の有無を検証することにより、データ毎に改竄検知が行われる。すなわち実施形態2では、クライアントPC1001のメモリに格納されている複数のデータのそれぞれについて、完全性が検証される。前述の例では、クライアントPC1001は、データa、データb、及びデータcのうち、どのデータが改竄されているかを、メモリに格納されているそれぞれのデータについて正解ハッシュ値を参照して特定する。

0076

実施形態1では、データ全体についての改竄検知結果に相当する第1の所定値のハッシュ値又は第2の所定値のハッシュ値がTPM103のPCRに格納された。実施形態2においても、同様に、データ毎の改竄検知結果をTPM103のPCRに格納することができる。一方で、TPM103のPCR数には限りがあるため、データ毎の改竄検知結果をTPM103のPCRに保存することはできないかもしれない。そこで、以下の説明において、データ毎の改竄検知結果、すなわち第1の検証部802による判定結果を示す結合ハッシュ値は、ソフトTPMのPCRに保存される。ソフトTPMとは実施形態1のTPM103と同等の機能を持ち、耐タンパー性を実装するソフトウェアのことである。ソフトTPMはソフトウェアとして、例えばHDD102に保存される。このような構成によれば、PCRの数を、HDD102の容量が許す限り増やすことができる。一方で、計算部801が算出したモジュールのハッシュ値は、耐タンパー性がハードウェアにより実装されているTPM103に格納される。

0077

[機能構成]
図8のブロック図を参照して実施形態2の情報処理装置(クライアントPC)1001と情報処理装置(サーバ)1002の機能構成例を説明する。実施形態2の機能構成は、図8に示すように、実施形態1と類似しているが、異なる機能も有している。図8において、実施形態1とは異なる機能には異なる符号が付されており、以下ではこれらの機能について説明する。なお、これらの機能構成は、CPU105が、例えばHDD102に保存されている、実施形態2の情報処理を実現するプログラムを実行することで実現される。

0078

計算部801は、実施形態1の計算部201の機能に加えて、データ毎にデータを識別する値及びそのハッシュ値が記載されたログファイルを、計算ログとして送信部806に出力する機能を持つ。計算ログには、クライアントPC1001のメモリに格納されたデータのそれぞれについて、データの識別子と、計算部801が算出したデータのハッシュ値と、が記録されている。

0079

ここで、計算部801が出力する計算ログについて図11を参照して説明する。図11に示すように、計算ログ1101の「データ」列には、計算部801によるハッシュ値計算の対象となったデータが何であるかを識別する値が保存されている。データを識別する値は例えば、ファイル名又は識別子等である。そして、計算ログ1101の「ハッシュ値」列には、計算部801によりデータから計算されたハッシュ値が保存されている。例えば、計算部801が計算したデータaのハッシュ値が「4825・・・af」である場合、図11に示すように、「データ」列には「データa」が登録され、対応する「ハッシュ値」列にはデータaのハッシュ値「4825・・・af」が保存される。

0080

第1の検証部802は、実施形態1の第1の検証部203と同様に、複数のデータのそれぞれについて計算部801が計算したハッシュ値と、リスト302に含まれる正解ハッシュ値とを比較する。そして、第1の検証部802は、複数のデータのそれぞれについて、計算部801が計算したハッシュ値と、リスト302に含まれる正解ハッシュ値とが一致するか否かを判定する。

0081

具体的には、計算部801が計算したデータのハッシュ値がリスト302の正解ハッシュ値と一致している場合、第1の検証部802は、計算部801にデータのハッシュ値と第1の所定値のハッシュ値とを用いた結合ハッシュ値を計算させる。結合ハッシュ値とは、計算部801が算出したデータのハッシュ値と、第1の検証部802による判定結果と、から生成されたデータのハッシュ値である。本実施形態においては、結合ハッシュ値として、データのハッシュ値と、ハッシュ値比較結果を示す第1又は第2の所定値のハッシュ値とを結合して得られるデータのハッシュ値が用いられる。そして、第1の検証部802は、それぞれのデータについて、計算部801により計算された結合ハッシュ値を、第2の保存部803に出力する。

0082

例えば、データaのハッシュ値をH(a)、第1の所定値のハッシュ値をH(v1)、第2の所定値のハッシュ値をH(v2)とする。このとき、データaのハッシュ値H(a)がリスト302の正解ハッシュ値と一致する場合、計算部801は、データaのハッシュ値と第1の所定値のハッシュ値とが結合されたデータH(a)|H(v1)を生成する。そして、計算部801は、このデータのハッシュ値H(H(a)|H(v1))を、結合ハッシュ値として計算する。

0083

一方で、データaのハッシュ値H(a)が正解ハッシュ値と不一致の場合は、計算部801は、データaのハッシュ値と第2の所定値のハッシュ値とが結合されたデータH(a)|H(v2)を生成する。そして、計算部801は、このデータのハッシュ値H(H(a)|H(v2))を、結合ハッシュ値として計算する。

0084

第1の検証部802は、このような処理をデータa、データb、及びデータcに対して行うことにより、それぞれのデータについての3つの結合ハッシュ値を第2の保存部803に出力する。後述するように、データaのハッシュ値H(a)と結合ハッシュ値H(H(a)|H(v2))とを用いることにより、データaについての第1の検証部802による判定結果を知ることができる。このように、この結合ハッシュ値は、それぞれのデータについての第1の検証部802による判定結果を示している。なお、リスト302は、実施形態1と同様にTPMのシール機能やTPMのNVRAM機能で保護することができる。

0085

第2の保存部803は、第1の検証部802が出力した結合ハッシュ値を第2のセキュリティチップ805に出力する。なお、後述するが、第2のセキュリティチップ805としては例えばソフトTPMを利用可能である。ここで、結合ハッシュ値は、第2のセキュリティチップ805のそれぞれのPCRに保存される。例えば、クライアントPC1001にデータが100個存在する場合、それぞれのハッシュ値比較結果である結合ハッシュ値も100個存在することになる。このとき、各データの結合ハッシュ値は第2のセキュリティチップ805内の100個のPCR(例えば、PCR0〜PCR99)のそれぞれに保存される。

0086

第1のセキュリティチップ804は、実施形態1のセキュリティチップ205と略同様の機能を有する。すなわち、第1のセキュリティチップ804は、PCRに保存されているハッシュ値に対するデジタル署名を生成し、ハッシュ値及びデジタル署名を第1の検証データとして送信部806に出力する。なお、第1のセキュリティチップ804のPCRには、第1の保存部202が保存したBIOS110、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114のハッシュ値が保存されている。従って、第1の検証データには、BIOS110、ブートローダ111、カーネル112、モジュールA113、及びモジュールB114のハッシュ値と、デジタル署名とが含まれる。

0087

第2のセキュリティチップ805は、PCRに保存されているデータ毎の結合ハッシュ値に対するデジタル署名を生成し、結合ハッシュ値及びデジタル署名を第2の検証データとして送信部806に出力する。

0088

本実施形態においては、データ毎に、ハッシュ値の比較結果を示す結合ハッシュ値が保存される。第2のセキュリティチップ805としてソフトTPMを用いることにより、結合ハッシュ値を格納するPCRを多数利用することができる。例えば、データa、データb、及びデータcに対する改竄検知を行う場合、第2のセキュリティチップ805のPCR0にデータaの結合ハッシュ値を、PCR1にデータbの結合ハッシュ値を、PCR2にデータcの結合ハッシュ値を保存することができる。このとき、第2の検証データには、データaの結合ハッシュ値、データbの結合ハッシュ値、データcの結合ハッシュ値、及びこれらの結合ハッシュ値に対するデジタル署名が含まれる。

0089

また、第1のセキュリティチップ804を用い、第2のセキュリティチップ805を保護することができる。具体的には、第1のセキュリティチップ804が持つTPMのシール機能で、ソフトTPMである第2のセキュリティチップ805を暗号化することにより、第2のセキュリティチップ805を保護することができる。他の方法として、第2のセキュリティチップ805を第1のセキュリティチップ804のNVRAMに保存することで、TPMのNVRAM機能を利用して第2のセキュリティチップ805へのアクセス制御を施すことができる。

0090

送信部806は、第1のセキュリティチップ804が出力した第1の検証データ、第2のセキュリティチップ805が出力した第2の検証データ、及び計算部801が出力した計算ログ1101を、情報処理装置(サーバ)1002の受信部807に送信する。上述のように、送信部806は、耐タンパー性がハードウェアにより実装された第1のセキュリティチップ804から、第1の検証データに含まれるモジュールのハッシュ値を読み込む。また、送信部806は、耐タンパー性がソフトウェアにより実装された第2のセキュリティチップ805から、第2の検証データに含まれる結合ハッシュ値を読み込む。さらに、計算ログ1101には、クライアントPC1001が有する複数のデータのそれぞれについて、データの識別子と、計算部801が算出したデータのハッシュ値と、が含まれている。また、第2の検証データには、クライアントPC1001が有する複数のデータのそれぞれについて、第1の検証部802による完全性の判定結果を示す、結合ハッシュ値が含まれている。

0091

受信部807は、情報処理装置(クライアントPC)1001の送信部806が送信した第1の検証データ、第2の検証データ、及び計算ログ1101を受信し、第2の検証部808に出力する。

0092

第2の検証部808は、受信部807から受信した第1の検証データからモジュールに対する改竄を検知し、第2の検証データ及び計算ログ1101から各データに対する改竄を検知する。モジュール(BIOSやブートローダ等も含む)に対する改竄の検知は、実施形態1の第2の検証部208と同様に行われる。すなわち、第2の検証部808は、まずデジタル署名を用いて第1の検証データに対する改竄の有無を検証する。そして、第1の検証データに対する改竄がないと判定した場合、第2の検証部808は、第1の検証データに含まれるモジュールのハッシュ値とデータベース1003内の正解ハッシュ値とを比較する。これらが一致すれば、第2の検証部808はモジュールに「改竄なし」と判断し、不一意ならばモジュールに「改竄あり」と判断する。

0093

データに対する改竄の検知に関しては、第2の検証部808は、まずデジタル署名を用いて第2の検証データに対する改竄の有無を検証する。そして、第2の検証データに対する改竄がないと判定した場合、結合ハッシュ値の計算を行う。すなわち、第2の検証部808は、計算ログ1101に記載されている各データについて、計算ログ1101に記載されているデータのハッシュ値と、データベース1003に記録されている「データ」の正解ハッシュ値と、の結合ハッシュ値を計算する。実施形態1と同様、データベース1003には、「データ」の正解ハッシュ値として第1の所定値のハッシュ値が登録されている。そして、第2の検証部808は、データ毎に、第2の検証部808が計算した結合ハッシュ値と、第2の検証データに含まれる結合ハッシュ値と、を比較する。第2の検証部808は、結合ハッシュ値が一致すればデータに対する「改竄なし」と判断し、不一致ならば「改竄あり」と判断する。

0094

以下では、データaに対する改竄の有無を検証する場合の具体例を説明する。第2の検証部808は、計算ログ1101に記載されているデータaのハッシュ値H(a)と、データベース1003に「データ」の正解ハッシュ値として保存されている第1の所定値のハッシュ値H(v1)と、を結合する。そして、第2の検証部808は、得られた値のハッシュ値H(H(a)|H(v1))を、データaの結合ハッシュ値として計算する。そして、第2の検証部808は、計算した結合ハッシュ値H(H(a)|H(v1))と、第2の検証データに含まれるデータaの結合ハッシュ値とを比較する。

0095

データaが改竄されている場合、第2の検証データに含まれるデータaの結合ハッシュ値はH(H(a)|H(v2))であるから、第2の検証部808で計算した結合ハッシュ値H(H(a)|H(v1))と一致しない。この場合、第2の検証部808は、データaに対して「改竄あり」と判断できる。一方、データaが改竄されていない場合、第2の検証データに含まれるデータaの結合ハッシュ値はH(H(a)|H(v1))となるため、第2の検証部808で計算した結合ハッシュ値H(H(a)|H(v1))と一致する。この場合、第2の検証部808は、データaに対して「改竄なし」と判断できる。

0096

[改竄検知処理]
図6のフローチャートを参照して、実施形態2における改竄検知処理を説明する。クライアントPC1001の計算部801は、それぞれのモジュールのハッシュ値を計算し、第1の保存部202に出力する(ステップS601)。第1の保存部202は、計算部801が出力したモジュールのハッシュ値を第1のセキュリティチップ804に保存する(ステップS602)。次に、計算部801はそれぞれのデータのハッシュ値を計算し、計算したハッシュ値を第1の検証部802に出力し、同時にハッシュ値の計算ログ1101を送信部806に出力する(ステップS603)。

0097

第1の検証部802は、リスト302を読み込む(ステップS604)。第1の検証部802は、リストを読み込みできたかどうかを判定し(ステップS605)、読み込みできた場合、第1の検証部802は、計算部801が出力したデータのハッシュ値と、リスト302の正解ハッシュ値とを比較する。そして、第1の検証部802は、比較結果に応じた結合ハッシュ値を計算部801に計算させ、第2の保存部803は結合ハッシュ値を第2のセキュリティチップ805に保存する(ステップS606)。

0098

第1のセキュリティチップ804は、第1の保存部202が保存したハッシュ値に対するデジタル署名を生成し、第1の保存部202が保存したハッシュ値とそのデジタル署名とを含む第1の検証データを生成する(ステップS607)。第2のセキュリティチップ805は、第2の保存部803が保存した結合ハッシュ値に対するデジタル署名を生成し、第2の保存部803が保存した結合ハッシュ値とそのデジタル署名とを含む第2の検証データを生成する(ステップS608)。なお、ステップS605でリスト302の読み込みに失敗したと判定された場合、ステップS608で第2の検証データは生成されない。

0099

送信部806は、第1のセキュリティチップ804が生成した第1の検証データ、第2のセキュリティチップ805が生成した第2の検証データ、及び計算部801が生成した計算ログ1101をサーバ1002に送信する(ステップS609)。

0100

サーバ1002の受信部807は、クライアントPC1001の送信部806が送信した第1の検証データ、第2の検証データ、及び計算ログ1101を受信し、第2の検証部808に出力する(ステップS610)。第2の検証部808は、第1の検証データに含まれるデジタル署名を検証する(ステップS611)。第2の検証部808は、デジタル署名の検証に成功したかどうかを判定し(ステップS612)、デジタル署名の検証に成功した場合、第2の検証部808はデータベース1003の正解ハッシュ値と第1の検証データに含まれるハッシュ値を比較する。こうして、第2の検証部808は、それぞれのモジュールに対する改竄の有無を検証する(ステップS613)。

0101

次に、第2の検証部808は、第2の検証データに含まれるデジタル署名を検証する(ステップS614)。そして、第2の検証部808は、デジタル署名の検証に成功したかどうかを判定する(ステップS615)。デジタル署名の検証に成功した場合、第2の検証部808は、計算ログ1101に含まれるハッシュ値とデータベース1003に含まれるデータの正解ハッシュ値とを用いて、各データについて結合ハッシュ値を計算する。さらに、第2の検証部808は、計算した結合ハッシュ値と第2の検証データに含まれる結合ハッシュ値とを比較することで、各データに対する改竄の有無を検証する(ステップS616)。

0102

通知部209は、ステップS613における各モジュールに対する改竄有無の検証結果とステップS616における各データに対する改竄有無の検証結果を、クライアントPC1001に送信する(ステップS617)。クライアントPC1001は検証結果を受信する(ステップS618)。なお、ステップS612で第1の検証データに対するデジタル署名の検証に失敗した場合、通知部209は、第1の検証データのデジタル署名の検証に失敗したことを示す情報を検証結果としてクライアントPC1001に送信する(ステップS617)。同様に、ステップS616でデジタル署名の検証に失敗した場合、通知部209は、第2の検証データのデジタル署名の検証に失敗したことを示す情報を、検証結果としてクライアントPC1001に送信する(ステップS617)。

0103

ここで、ステップS606の処理を図7(A)のサブフローチャートを参照して詳細に説明する。第1の検証部802は、計算部801が計算したデータのハッシュ値が、ステップS605で読み込んだリスト302に含まれるデータの正解ハッシュ値と一致するか否かを判定する(ステップS701)。ハッシュ値が一致する場合、計算部801は、計算部801が計算したデータのハッシュ値と、第1の所定値のハッシュ値とを結合する。そして、計算部801は、結合された値のハッシュ値を結合ハッシュ値として計算する。第2の保存部803は、計算部801により計算された結合ハッシュ値を第2のセキュリティチップ805に保存する(ステップS702)。

0104

一方、ステップS701でデータのハッシュ値が正解ハッシュ値と一致しないと判定された場合、計算部801は、計算部801が計算したデータのハッシュ値と、第2の所定値のハッシュ値とを結合する。そして、計算部801は、結合された値のハッシュ値を結合ハッシュ値として計算する。第2の保存部803は、計算部801により計算された結合ハッシュ値を第2のセキュリティチップ805に保存する(ステップS703)。

0105

ステップS704で、第1の検証部802は、検証対象となっている全データに対してステップS701〜ステップS703の処理が実施されたかどうかを判定する(ステップS704)。全データに対して処理が実施されていない場合、処理はステップS701に戻り、他のデータに対して結合ハッシュ値が計算される。こうして、全データについての結合ハッシュ値が第2のセキュリティチップ805に保存される。

0106

次に、ステップS616の処理を図7(B)のサブフローチャートを参照して詳細に説明する。第2の検証部808は、計算ログ1101に含まれるデータのハッシュ値と、データベース1003に含まれる第1の所定値のハッシュ値と、を結合する。そして、第2の検証部808は、結合された値のハッシュ値を結合ハッシュ値として計算する(ステップS710)。第2の検証部808は、計算した結合ハッシュ値と、第2の検証データに含まれるデータの結合ハッシュ値が一致するかどうかを検証する(ステップS711)。結合ハッシュ値が一致する場合、第2の検証部808は、対象のデータに対する「改竄なし」と判定する(ステップS712)。一方、結合ハッシュ値が一致しない場合、第2の検証部808は、対象のデータに対する「改竄あり」と判定する(ステップS713)。

0107

ステップS714で、第2の検証部808は、検証対象となっている全データに対してステップS710〜ステップS713の処理が実施されたかどうかを判定する(ステップS714)。全データに対して処理が実施されていない場合、処理はステップS711に戻り、他のデータに対して改竄の有無が判定される。こうして、検証対象となっている全データに対して、改竄の有無が検証される(ステップS714)。

0108

このように、本実施形態においては、クライアントPC1001による各データに対する改竄検知の結果に対応する結合ハッシュ値が、ソフトTPMに保存される。このような方法によれば、サーバに大きな負荷をおけることなく、データ毎に改竄検知を行うことができる。

0109

[実施例1,2の変形例1]
実施形態1,2では、クライアントPC1001内の全データを対象に改竄検知を行った。しかしながら、特定のデータのみを対象に改竄検知を行うこともできる。また、改竄検知の対象とするデータを動的に決定することもできる。本変形例では、クライアントPC1001は、メモリが格納する複数のデータから、第1の検証部203,802による完全性の検証対象となるデータを選択する。このような処理は、例えば、クライアントPC1001が備える選択部(不図示)が行うことができる。

0110

完全性の検証対象となるデータの選択方法は特に限定されない。例えば、カーネル112が直接扱うデータのみを改竄検知の対象にしてもよいし、アプリケーションの設定ファイルのみを改竄検知の対象にしてもよい。以下では、データへのアクセス権限を示す情報、モジュールの実行権限を示す情報、又はデータの更新頻度を示す情報に従い、完全性の検証対象となるデータを選択する構成について説明する。本変形例では、完全性の検証対象とされなかったデータについては、改竄検知が行われない。

0111

例えば、図9(A)に示すアクセス制御リスト901に応じて、改竄検知の対象にするデータと改竄検知の対象にしないデータとを決定できる。図9(A)のアクセス制御リスト901は、カーネル(図中のsystem)、クライアントPC管理者(図中のadmin)、及び一般ユーザ(図中のuser)が、対象データに対してどのようなアクセス権を持つかを示している。例えば、図9(A)のアクセス制御リスト901は、カーネルとPC管理者はデータaの読み込み(Read)と書き込み(Write)の両方が可能で、一方、ユーザはデータaの読み込みはできるが書き込みはできないことを示している。また、アクセス制御リスト901は、カーネル及びPC管理者に加えてユーザもデータbの読み込み及び書き込みが可能であることを示している。

0112

このように、ユーザによる書き込みが禁止されているデータaは、データbよりも重要なデータである可能性が高い。したがって、重要なデータのみを保護したい場合は、ユーザによるアクセスが制限されているデータを改竄検知の対象とすることができる。具体例として、上述のアクセス制御リスト901に従って、ユーザが書き込み権限を有さないデータであるデータaを改竄検知の対象とし、データbは改竄検知の対象から外すことができる。しかしながら、これは一例にすぎず、例えば、カーネルだけが読み書きできるデータのみが、重要なデータとして保護されてもよい。

0113

また、図9(B)に示すモジュールの実行権限表902を参照して、動的に改竄検知の対象とするデータを決定することもできる。図9(B)に示すモジュールの実行権限表902は、カーネル、PC管理者、及びユーザが、それぞれのモジュールを実行できるか否かを示している。例えば、図9(B)に示すモジュールの実行権限表902は、カーネル及び管理者はモジュールAの実行が可能だが、一方でユーザはモジュールAの実行が不可能であることを示している。

0114

このとき、ユーザにモジュールAの実行権限がないことから、モジュールAはクライアントPCの動作に影響を与える、重要なモジュールである可能性が高い。この場合、モジュールAが扱うデータも重要なデータである可能性が高い。このため、モジュールAが扱うデータを改竄検知の対象とすることで、重要なデータの保護が実現できる。一方、図9(B)によれば、モジュールBはユーザも実行可能である。このため、モジュールBが扱うデータは改竄検知対象としなくてもよい。しかしながら、これは一例にすぎず、例えば、カーネルだけが実行できるモジュールが扱うデータのみが、重要なデータとして保護されてもよい。このように、ユーザによる実行が制限されているモジュールが生成するデータを改竄検知の対象とすることができる。

0115

さらには、変形例2について説明するように、更新頻度の低いデータを完全性の検証対象とすることもできる。更新頻度の低いデータは、更新頻度の高いデータよりも、システムの動作に関わるために重要性が高い可能性がある。一方で、更新時におけるデータの意図しない破損を検出する目的では、更新頻度の高いデータを完全性の検証対象とすることもできる。

0116

上述の方法により改竄検知の対象とされた重要なデータに関しては、実施形態1,2と同様に、クライアントPC1001の第1の検証部203,802がデータのハッシュ値と正解ハッシュ値とを比較する。そして、サーバ1002の第2の検証部208,808は、クライアントPC1001から送られた検証データとデータベース1003とを参照してデータに対する改竄の検知を行う。

0117

上述の方法で改竄検知の対象とされたデータの数が少ない場合、実施形態2において、データについての結合ハッシュ値を、第2のセキュリティチップ805ではなく、第1のセキュリティチップ804に保存してもよい。ハードウェアTPMである第1のセキュリティチップ804は、ソフトTPMである第2のセキュリティチップ805と比較して、有するPCRの数は少ないが、より安全である。このため、第1のセキュリティチップ804は、少数の重要なデータについての結合ハッシュ値を保存するのに適している。この場合、それぞれのデータについてのハッシュ値比較結果を示す結合ハッシュ値は、それぞれ第1のセキュリティチップ804のPCRに保存される。そして、実施形態2と同様に、サーバ1002はクライアントPC1001から送られた検証データに含まれる結合ハッシュ値を用いて、それぞれのデータに対する改竄を検知する。なお、改竄検知の対象とされたデータのそれぞれについてのハッシュ値を格納するリスト302を、第1のセキュリティチップ804に保存してもよい。

0118

実施形態2において、重要なデータとそれ以外のデータを分けて保護することもできる。具体例としては、重要なデータの結合ハッシュ値を第1のセキュリティチップ804のPCRに保存し、それ以外のデータの結合ハッシュ値を第2のセキュリティチップ805のPCRに保存することができる。この場合でも、クライアントPC1001から送られたそれぞれの結合ハッシュ値をサーバ1002が検証することにより、重要なデータ及びそれ以外のデータの双方について改竄を検知することができる。

0119

[実施形態1,2の変形例2]
実施形態1,2では、改竄検知の対象とされた全てのデータについて、クライアントPC1001がデータのハッシュ値と正解ハッシュ値との比較を行った。しかしながら、一部のデータについてクライアントPC1001がデータのハッシュ値と正解ハッシュ値との比較を行い、他のデータについてサーバ1002がデータのハッシュ値と正解ハッシュ値との比較を行ってもよい。また、クライアントPC1001が比較を行うデータと、サーバ1002が比較を行うデータとは、動的に決定することもできる。本変形例では、クライアントPC1001は、メモリが格納する複数のデータから、クライアントPC1001による完全性の検証対象となるデータと、サーバ1002による完全性の検証対象となるデータと、を選択する。このようなデータの選択は、例えば、データへのアクセス権限を示す情報、モジュールの実行権限を示す情報、又はデータの更新頻度を示す情報に従って行うことができる。

0120

例えば、更新頻度が多いデータについてはクライアントPC1001はデータのハッシュ値と正解ハッシュ値との比較を行い、更新頻度が少ないデータについてはサーバ1002がデータのハッシュ値と正解ハッシュ値との比較を行うことができる。つまり、更新頻度が多いデータについては、実施形態1,2と同様に、クライアントPC1001が計算されたデータのハッシュ値と正解ハッシュ値とを比較し、比較結果をサーバ1002に送信する。そして、サーバ1002は受信した比較結果とデータベース1003とを参照して、更新頻度が多いデータに対する改竄の検知を行う。一方、更新頻度が少ないデータに関しては、クライアントPC1001は各データ(更新頻度が少ないデータ)から計算したハッシュ値をサーバ1002に送信する。そして、サーバ1002は、受信した各データのハッシュ値と、予めデータベース1003に登録されている各データの正解ハッシュ値とを比較することで、各データの改竄を検知する。

0121

この場合、更新頻度が少ないデータに関しては、クライアントPC1001においてデータが更新される度に、サーバ1002が有するデータベース1003に格納された正解ハッシュ値を更新する必要がある。しかしながら、このような処理の対象が更新頻度が少ないデータに限定されているため、サーバ1002の負荷を少なく抑えることができる。なお、更新頻度が少ないデータに関しては、サーバ1002がハッシュ値の比較を行うため、各データについてハッシュ値がPCRに格納される。この場合には、PCRの数が多い第2のセキュリティチップ805(ソフトTPM)のPCRに、更新頻度が少ないデータのハッシュ値を保存することができる。

0122

「更新頻度が多いデータ」と「更新頻度が少ないデータ」の識別方法としては、例えば、図9(C)に示すデータ毎の更新頻度表903を用いる方法が挙げられる。図9(C)に示す更新頻度表903は、データ毎に、所定の時間間隔内におけるデータ更新回数平均値(以下、更新頻度)を示す。例えば、図9(C)は、データaには1日平均1回(1回/日)のデータ更新が発生すること、データbには1年平均1回(1回/年)のデータ更新が発生することを示す。

0123

そして、更新頻度に関する所定の閾値を設定することにより、この閾値を用いて「更新頻度が多いデータ」と「更新頻度が少ないデータ」とを識別することができる。例えば、更新頻度が閾値以上であるデータを「更新頻度が多いデータ」と識別することができ、更新頻度が閾値未満であるデータを「更新頻度が少ないデータ」と識別することができる。一例として、更新頻度の閾値を1週間に1回(1回/週)に設定することができる。このとき、図9(C)に示すデータaの更新頻度は1回/日であるため、閾値(1回/週)以上であるため、データaは「更新頻度が多いデータ」として識別される。一方で、データbの更新頻度は1回/年で、閾値(1回/週)未満であるため、データbは「更新頻度が少ないデータ」として識別される。

0124

上述の閾値は一例であり、閾値を1回/月や1回/日としてもよい。また、それぞれのデータの更新頻度を算出する方法の一例としては、データ毎に更新回数とその更新日とを記録したログファイルを用いる方法が挙げられる。この場合、所定の時間間隔内(例えば、1日、1週、1月、又は1年)におけるデータ更新回数の平均値を更新頻度として算出できる。

0125

上述した「更新頻度が多いデータ」と「更新頻度が少ないデータ」の識別方法は一例であり、それ以外の方法を採用することもできる。例えば、現在の日時とデータの最終更新日時との差が所定の閾値以上なら、このデータを「更新頻度が少ないデータ」と判定し、所定の閾値未満なら、このデータを「更新頻度が多いデータ」と識別することもできる。

0126

また、ユーザによるアクセスが制限されているデータを重要なデータであるかもしれないため、このようなデータをサーバ1002による改竄検知の対象とし、その他のデータをクライアント1001による改竄検知の対象とすることもできる。この場合、サーバ1002による改竄検知の対象となるデータの選択は、変形例1と同様に、データへのアクセス権限を示す情報に従って行うことができる。一方、ユーザによる実行が制限されているモジュールが生成するデータは重要なデータであるかもしれないため、このようなデータをサーバ1002による改竄検知の対象とし、その他のデータをクライアント1001による改竄検知の対象とすることもできる。この場合、サーバ1002による改竄検知の対象となるデータの選択は、変形例1と同様に、モジュールの実行権限を示す情報に従って行うことができる。

0127

[実施形態1,2の変形例3]
実施形態1,2では、クライアントPC1001とサーバ1002の双方が、第1の所定値のハッシュ値を共有していた。ここで、第1の所定値、又は第1の所定値のハッシュ値の代わりに、ナンスを使うこともできる。ナンスは例えば16byteの乱数で、クライアントPC1001とサーバ1002とが通信する度に異なる値をとる。ナンスを利用することで、例えば、データが改竄されているにも関わらず攻撃者が第1の所定値をTPMに保存することで、データに改竄がないように見せかけ攻撃を防止できる。

0128

(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。

0129

101:ROM、102:HDD、103:TPM、110:BIOS、111:ブートローダ、112:カーネル、113:モジュールA、114:モジュールB、115:データa、116:データb、117:データc、201:ハッシュ計算部、204:第2の保存部、206:送信部、1001:クライアントPC、1002:サーバ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ