JP5346608B2 - 情報処理装置およびファイル検証システム - Google Patents

情報処理装置およびファイル検証システム Download PDF

Info

Publication number
JP5346608B2
JP5346608B2 JP2009026589A JP2009026589A JP5346608B2 JP 5346608 B2 JP5346608 B2 JP 5346608B2 JP 2009026589 A JP2009026589 A JP 2009026589A JP 2009026589 A JP2009026589 A JP 2009026589A JP 5346608 B2 JP5346608 B2 JP 5346608B2
Authority
JP
Japan
Prior art keywords
kernel
user application
hash value
program
area
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.)
Expired - Fee Related
Application number
JP2009026589A
Other languages
English (en)
Other versions
JP2010182196A (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 JP2009026589A priority Critical patent/JP5346608B2/ja
Publication of JP2010182196A publication Critical patent/JP2010182196A/ja
Application granted granted Critical
Publication of JP5346608B2 publication Critical patent/JP5346608B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Description

本発明は、セキュリティの向上を図った情報処理装置に関する。また、本発明は、本情報処理装置内のファイルの完全性を検証するファイル検証システムにも関する。
公開サーバへ侵入し、公開サーバ内のデータやアプリケーションを改竄する事件が多発している。多くの公開サーバはデータセンタで運用されており、サーバ管理者は、リモートアクセスによって公開サーバにアクセスして検証用アプリケーションを起動し、検証用アプリケーションが出力する検証結果によって公開サーバ内の侵入の痕跡や改竄の有無を検証(リモート検証)する。
しかし、一旦サーバへの侵入を許してしまうと、Rootkitをカーネルに埋め込んで応答を偽る攻撃や、検証用アプリケーションを改竄して応答を偽る攻撃、検証結果を改竄する攻撃など、検証結果の完全性を担保できない問題がある。これに対して、昨今のサーバの多くには、Trusted Platform Module(TPM)と呼ばれる、耐タンパ性を有するチップが搭載されており、サーバの起動時にカーネルとアプリケーションの完全性(改竄されていないこと)をリモート検証する仕組みはあった。
TPMは、外部からアクセスできない領域を持ったチップであり、その安全な領域に暗号鍵や電子署名用のプログラムが保存されている。TPMは、ホストが起動するタイミングで、カーネルとアプリケーケーションの状態をハッシュ値として保存し、リモートアクセスによる要求に従い、電子署名を施したハッシュ値を返信する。これによって、リモートアクセスしたサーバ管理者は起動時のホストの状態を把握することができる。TPMが実行する処理は、サーバのカーネルから独立している。これによって、カーネルが改竄された場合でも、その影響を受けない仕組みが実現されている。
また、稼働中のカーネルの完全性を保証する仕組みとして、SecVisor(非特許文献1参照)と呼ばれる技術がある。SecVisorは、メモリ上で稼動中のカーネル領域に対するユーザ空間(ユーザアプリケーション)からのアクセスを禁止する仕組みを実現している。さらに、SecVisorは、カーネルの起動時にカーネルの状態を検証し、カーネルの完全性が確認された場合にのみ起動処理を継続する仕組みも持つ。したがって、SecVisorによって、起動時ならびに稼動中のカーネルの完全性を保証することができる。
また、ユーザアプリケーションの完全性を保証する仕組みとして、DigSig(非特許文献2参照)と呼ばれる技術がある。DigSigは、ユーザアプリケーションに電子署名を施しておき、アプリケーションの起動時に、電子署名による認証を行うことで、信頼された完全なアプリケーションのみを起動させる制御を実現している。
A. Seshadri, M. Luk, N. Qu, and A. Perrig, "SecVisor: A Tiny Hypervisor to Provide Lifetime Kernel Code Integrity for Commodity OSes," 21st ACM Symposium on Operating Systems Principles, October, 2007 A. Apvrille, M. Pourzandi, D. Gordon, V. Roy, "Stop Malicious Code Execution at Kernel Level," Linux World, Vol.2, No.1, January 2004
しかし、TPMでは、起動時のみしかカーネルとアプリケーションの完全性を保証することができず、稼動中のサーバに対するバッファオーバフロー攻撃などによる侵入を受けた場合に、カーネルとアプリケーションの完全性を保証できない。また、SecVisorでは、カーネルの完全性を常に担保できるものの、ユーザアプリケーションの完全性を保証できない。また、DigSigでは、起動時のアプリケーションの完全性は保証できるものの、カーネルの完全性を保証できない。
本発明は、上述した課題に鑑みてなされたものであって、完全性が保証されたカーネルから、完全性が保証されたユーザアプリケーションを起動することができる情報処理装置およびファイル検証システムを提供することを目的とする。
本発明は、上記の課題を解決するためになされたもので、OSのカーネルおよびユーザアプリケーションのプログラムを記憶するプログラム記憶手段と、前記カーネルのプログラムが格納されるカーネル領域と、前記ユーザアプリケーションのプログラムが格納されるユーザ領域とを有するメモリと、前記カーネルの起動時に当該カーネルの完全性を検証するカーネル検証手段と、前記メモリに格納されたプログラムに従って処理を実行するCPUと、前記ユーザアプリケーションから前記カーネル領域に対するデータの書き込みを禁止する禁止手段と、を備え、前記CPUは、前記カーネル検証手段によって、前記カーネルが改竄されていないことが確認できた場合に、前記カーネルのプログラムを前記プログラム記憶手段から前記カーネル領域に読み込んで前記カーネルを起動する処理と、前記カーネルによって、前記ユーザアプリケーションの起動時に前記ユーザアプリケーションの完全性を検証し、前記ユーザアプリケーションが改竄されていないことが確認できた場合に、前記ユーザアプリケーションのプログラムを前記プログラム記憶手段から前記ユーザ領域に読み込んで前記ユーザアプリケーションを起動する処理と、を実行することを特徴とする情報処理装置である。
また、本発明の情報処理装置は、ファイルを記憶するファイル記憶手段をさらに有し、前記CPUはさらに、前記ユーザアプリケーションによって、前記ファイルのハッシュ値を算出する処理を実行することを特徴とする。
また、本発明の情報処理装置において、前記CPUはさらに、前記カーネルによって、前記ハッシュ値に電子署名を施す処理を実行することを特徴とする。
また、本発明は、情報処理装置とファイル検証装置を備えたファイル検証システムであって、前記情報処理装置は、OSのカーネルおよびユーザアプリケーションのプログラムを記憶するプログラム記憶手段と、前記カーネルのプログラムが格納されるカーネル領域と、前記ユーザアプリケーションのプログラムが格納されるユーザ領域とを有するメモリと、前記カーネルの起動時に当該カーネルの完全性を検証するカーネル検証手段と、前記メモリに格納されたプログラムに従って処理を実行するCPUと、前記ユーザアプリケーションから前記カーネル領域に対するデータの書き込みを禁止する禁止手段と、ファイルを記憶するファイル記憶手段と、を備え、前記CPUは、前記カーネル検証手段によって、前記カーネルが改竄されていないことが確認できた場合に、前記カーネルのプログラムを前記プログラム記憶手段から前記カーネル領域に読み込んで前記カーネルを起動する処理と、前記カーネルによって、前記ユーザアプリケーションの起動時に前記ユーザアプリケーションの完全性を検証し、前記ユーザアプリケーションが改竄されていないことが確認できた場合に、前記ユーザアプリケーションのプログラムを前記プログラム記憶手段から前記ユーザ領域に読み込んで前記ユーザアプリケーションを起動する処理と、前記ユーザアプリケーションによって、前記ファイルのハッシュ値を算出する処理と、前記カーネルによって、前記ハッシュ値に電子署名を施す処理と、前記ユーザアプリケーションによって、前記ハッシュ値と前記電子署名を外部の端末へ送信する処理と、を実行し、前記ファイル検証装置は、前記情報処理装置から前記ハッシュ値と前記電子署名を受信する受信手段と、前記ハッシュ値に基づいて前記ファイルの完全性を検証する第1の検証手段と、前記電子署名に基づいて前記ハッシュ値の完全性を検証する第2の検証手段と、を備えたことを特徴とするファイル検証システムである。
本発明によれば、カーネルが改竄されていないことが確認できた場合にカーネルが起動され、カーネルの稼働中は、カーネル領域に対するユーザアプリケーションからのアクセスが禁止されるため、起動時および稼働中のカーネルの完全性が保証される。また、完全性の保証されたカーネルによって、ユーザアプリケーションが改竄されていないことが確認できた場合にユーザアプリケーションが起動されるので、起動時のユーザアプリケーションの完全性が保証される。したがって、完全性が保証されたカーネルから、完全性が保証されたユーザアプリケーションを起動することができる。
本発明の一実施形態による情報処理装置の構成を示すブロック図である。 本発明の一実施形態において、カーネルを起動するときの処理の様子を示す参考図である。 完全性が確認されたカーネルからユーザアプリケーションを起動するときの処理の様子を示す参考図である。 本発明の一実施形態において、カーネル領域へのアクセスを禁止する処理の様子を示す参考図である。 本発明の一実施形態において、カーネル領域へのアクセスを禁止する処理の様子を示す参考図である。 本発明の一実施形態において、検証用アプリケーションがシステムファイルの状態を確認するときの処理の様子を示す参考図である。
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態による情報処理装置の構成を示している。図1に示す情報処理装置は、HDD(ハードディスクドライブ)10、メモリ11、CPU12、DMA13、メモリ管理部14、カーネル起動制御部15を備えて構成されている。これらの構成はバス20に接続されている。
HDD10は、OS(オペレーティングシステム)の根幹をなすカーネルが実行する処理を規定するカーネルプログラムや、OSの動作に必要なシステムファイル、各種アプリケーションが実行する処理を規定するユーザアプリケーションプログラム等を記憶する。メモリ11は、CPU12が実行するプログラムや、演算に必要なデータを一時的に記憶する。メモリ11は、カーネルプログラムが格納されるカーネル領域110と、ユーザアプリケーションプログラムが格納されるユーザ領域111とを備えている。さらに、カーネル領域110は、カーネルプログラム自体が格納されるプログラム領域と、起動したカーネルプログラムが処理を行うために必要なデータが格納されるデータ領域とを備えている。
CPU12は、メモリ11に格納された各種プログラムに従った処理を実行することで各種機能を実現する。カーネルプログラムがHDD10からメモリ11のカーネル領域110に読み込まれてカーネルが起動されると、CPU12は、プロセス管理やメモリ管理等のカーネルの機能に係る処理を実行する。また、ユーザアプリケーションプログラムがHDD10からメモリ11のユーザ領域111に読み込まれてユーザアプリケーションが起動されると、CPU12は、画像処理やデータ通信等のユーザアプリケーションの機能に係る処理を実行する。
DMA(Direct Memory Access)13は、CPU12を介さずにメモリ11とハードウェアの間でデータ転送を行うことが可能なハードウェアである。メモリ管理部14は、メモリ11に対するアクセスを管理する。CPU12によるメモリ11へのアクセスは、メモリ管理部14内のMMU(Memory Management Unit)によって管理され、DMA13によるメモリ11へのアクセスは、メモリ管理部14内のIOMMU(Input/Output MMU)によって管理される。メモリ管理部14内の一部の機能(例えばMMU)をCPU12に実装してもよい。カーネル起動制御部15は、情報処理装置の起動時にカーネルの起動を制御する。
次に、本実施形態による情報処理装置の動作を説明する。本実施形態では、(1)完全なカーネルの起動、(2)完全なカーネルによる完全なユーザアプリケーションの起動、(3)稼働中のカーネルの完全性の担保、(4)完全な検証用アプリケーションがファイルの状態を確認した結果に対する完全なカーネルによる電子署名、が実現されている。
(1)完全なカーネルの起動
情報処理装置の起動時にCPU12は、図示せぬROMからメモリ11のカーネル領域110にBIOS(Basic Input/Output System)のプログラムを読み込むことによってBIOSを起動する。続いて、CPU12は、BIOSによって、HDD10のMBR(Master Boot Record)からメモリ11のカーネル領域110にブートローダのプログラムを読み込むことによってブートローダを起動する。続いて、CPU12は、ブートローダによって、HDD10からメモリ11のカーネル領域110にカーネルプログラムを読み込むことによってカーネルを起動する。以上のようにしてカーネルが起動される。
図2は、カーネルを起動するときの処理の様子を示している。カーネル起動制御部15は、外部から改竄できない、耐タンパ性を有するチップであり、処理を実行するCPUや、データを格納するためのメモリを内部に備えている。カーネル起動制御部15は、前述したTPMによって実現される。以下、カーネル起動制御部15の動作を説明する。
情報処理装置が初めて起動されるとき、カーネル起動制御部15は、BIOS21、ブートローダ22、カーネル23のそれぞれのプログラムからハッシュ値を算出する。ハッシュ値は、ハッシュ関数を用いて算出される値であり、入力値に対して一意となる値である。カーネル起動制御部15は、算出したBIOS21、ブートローダ22、カーネル23のそれぞれのハッシュ値を内部のメモリに保持する。この時点では、BIOS21、ブートローダ22、カーネル23は改竄されていないものとする。
2回目以後の起動時にカーネル起動制御部15は、まず、BIOS21のプログラムのハッシュ値を算出し、そのハッシュ値を、内部のメモリに保持しているBIOS21のプログラムのハッシュ値と比較する。両方のハッシュ値が異なる場合、BIOS21が改竄されている可能性があるため、カーネル起動制御部15は、BIOS21の起動を中止する命令をCPU12に送る。この命令を受け取ったCPU12はBIOS21の起動を中止する。
一方、両方のハッシュ値が同一である場合、BIOS21が改竄されていないことが確認できたので、カーネル起動制御部15は処理をCPU12に受け渡し、CPU12はBIOS21を起動する。続いて、カーネル起動制御部15は、ブートローダ22のプログラムのハッシュ値を算出し、そのハッシュ値を、内部のメモリに保持しているブートローダ22のプログラムのハッシュ値と比較する。両方のハッシュ値が異なる場合、ブートローダ22が改竄されている可能性があるため、カーネル起動制御部15は、ブートローダ22の起動を中止する命令をCPU12に送る。この命令を受け取ったCPU12はブートローダ22の起動を中止する。
一方、両方のハッシュ値が同一である場合、ブートローダ22が改竄されていないことが確認できたので、カーネル起動制御部15は処理をCPU12に受け渡し、CPU12はブートローダ22を起動する。続いて、カーネル起動制御部15は、カーネル23のプログラムのハッシュ値を算出し、そのハッシュ値を、内部のメモリに保持しているカーネル23のプログラムのハッシュ値と比較する。両方のハッシュ値が異なる場合、カーネル23が改竄されている可能性があるため、カーネル起動制御部15は、カーネル23の起動を中止する命令をCPU12に送る。この命令を受け取ったCPU12はカーネル23の起動を中止する。
一方、両方のハッシュ値が同一である場合、カーネル23が改竄されていないことが確認できたので、カーネル起動制御部15は処理をCPU12に受け渡し、CPU12はカーネル23を起動する。以上のようにして、完全性が保証されたカーネル23を起動することができる。上記では、TPMによって完全なカーネルを起動する方法を実現しているが、前述したSecVisorを利用した場合も、同様にハッシュ値によりカーネルの完全性を確認してからカーネルを起動する方法を実現することができる。
(2)完全なカーネルによる完全なユーザアプリケーションの起動
図3は、上記により完全性が確認されたカーネルからユーザアプリケーションを起動するときの処理の様子を示している。図3および後述する図6において、カーネル空間30およびユーザ空間40は、CPU12およびメモリ11のリソースを含んで構成されている。
カーネル空間30は、カーネルとしての機能を実現するための処理を実行するCPU12のリソースと、その処理を実行するためにメモリ11に割り当てられたカーネル領域110とを含んでいる。また、ユーザ空間40は、ユーザアプリケーションとしての機能を実現するための処理を実行するCPU12のリソースと、その処理を実行するためにメモリ11に割り当てられたユーザ領域111とを含んでいる。
カーネル空間30に属する起動制御部31は、プロセスがユーザアプリケーションを起動するときにカーネルに対して行うシステムコール(起動要求)を検出し、ユーザアプリケーションの起動を制御する。Linux(登録商標)には、カーネルにおいてセキュリティ機能を拡張するフレームワークであるLinux(登録商標) Security Module(LSM)が実装されている。LSMでは、ファイルやプロセスの操作が行われた際に、ユーザが定義したセキュリティ検証機構を呼び出して権限の検証やログの生成を行うための監視ポイントが設けられている。カーネル空間30に属する起動制御部31は、このLSMの監視ポイントに相当する。
検証部32は、起動制御部31によってユーザアプリケーションの起動要求が検出された場合に、ユーザアプリケーションプログラムの完全性を検証する。この検証を行うため、検証部32は検証に必要な公開鍵Kpを有している。起動制御部31および検証部32が動作している間、これらの実体(プログラム)はメモリ11のカーネル領域110内のプログラム領域に格納されている。また、HDD10に格納されているアプリケーションプログラムには、検証部32が有する公開鍵Kpに対応する秘密鍵でアプリケーションプログラムのハッシュ値が暗号化された電子署名が予め付加されている。
ユーザアプリケーションは以下のようにして起動される。まず、カーネル空間30またはユーザ空間40上の何らかのプロセスがユーザアプリケーションを起動するためにシステムコール(起動要求)を発生する(ステップS100)。起動制御部31はこの起動要求を検出し、検証部32に処理を受け渡す(ステップS110)。検証部32は、起動を要求されたユーザアプリケーションプログラムをHDD10からメモリ11のカーネル領域110内のデータ領域に読み込む(ステップS120)。
検証部32は、ユーザアプリケーションに付加されている電子署名を公開鍵Kpで復号し、ハッシュ値を得る。また、検証部32は、ユーザアプリケーションプログラムからハッシュ値を算出する。そして、検証部32は、電子署名を復号して得たハッシュ値と、ユーザアプリケーションプログラムから算出したハッシュ値とを比較することによって、ユーザアプリケーションの完全性を検証する(ステップS130)。
両方のハッシュ値が異なる場合、ユーザアプリケーションプログラムが改竄されている可能性がある。また、両方のハッシュ値が一致した場合、ユーザアプリケーションプログラムの完全性が保証される。検証部32は検証結果を起動制御部31に通知する(ステップS140)。
通知を受けた起動制御部31は、検証結果に基づいてアプリケーションの起動を制御する。検証の結果、改竄が検知された場合には、起動制御部31はアプリケーションの起動処理を中止する。また、検証の結果、ユーザアプリケーションプログラムの完全性が確認できた場合には、起動制御部31は、カーネル領域110内のデータ領域に格納されているユーザアプリケーションプログラムをユーザ領域111に移動し、ユーザアプリケーションを起動させる(ステップS150)。
カーネル空間30内の起動制御部31と検証部32の完全性はカーネルの起動時に保証されており、また、後述するように稼働中のカーネルの完全性も保証されることから、上記のようにしてカーネル空間30から起動されたユーザアプリケーションの完全性が保証される。上記と同様の方法はDigSigによっても実現されている。
(3)稼働中のカーネルの完全性の担保
稼働中のカーネルの完全性は以下の3つの方法により担保される。これらの方法のうち1つだけを実装しても効果は得られるが、全ての方法を実装することで、カーネルの完全性をより高めることもできる。また、これらの方法と同様の方法がSecVisorによっても実現されている。
図4は第1の方法を示している。メモリ11において、カーネル領域110として割り当てられる領域は予め固定されており、メモリ管理部14はカーネル領域110のアドレスを保持している。DMA13がメモリ11にアクセスするため、アクセスしたいメモリ11のアドレスをメモリ管理部14へ出力すると、メモリ管理部14は、DMA13から出力されたアドレスとカーネル領域110のアドレスとを比較する。
DMA13から出力されたアドレスがカーネル領域110のアドレスに相当しない場合、すなわちDMA13がカーネル領域110以外の領域にアクセスしようとしている場合(図4のアクセス50)、メモリ管理部14はアクセスを許可する。また、DMA13から出力されたアドレスがカーネル領域110のアドレスに相当する場合、すなわちDMA13がカーネル領域110にアクセスしようとしている場合(図4のアクセス51)、メモリ管理部14はアクセスを禁止する。このようにして、DMA13からカーネル領域110に不正な上書きが行われることを防止し、稼働中のカーネルの完全性を保証することができる。
図5は第2の方法を示している。一般的にコンピュータではメモリ管理方式として仮想記憶が採用されている。CPU12から見たメモリ11のアドレスは仮想アドレスであり、メモリ11の物理アドレス(実アドレス)とは異なる。メモリ管理部14は仮想アドレスと物理アドレスの対応関係を変換テーブルとして保持している。ユーザアプリケーションの起動時や終了時にCPU12は、カーネルの機能によって、変換テーブルの再構成を実行する。
本実施形態では、変換テーブルとして、カーネル用とユーザアプリケーション用の2種類の変換テーブルが用いられる。ユーザアプリケーション用の変換テーブルでは、カーネル領域110に対応する仮想アドレスにはカーネル領域110の物理アドレスではなく、カーネル領域110以外の物理アドレスが割り当てられている。メモリ11にアクセスする要求が発生すると、CPU12はその要求がカーネルとユーザアプリケーションのどちらからの要求であるのかを判別し、要求元を識別する情報と共にアクセス先のメモリ11の仮想アドレスをメモリ管理部14へ出力する。
メモリ管理部14は、変換テーブルに基づいて、CPU12から出力された仮想アドレスを物理アドレスに変換する。要求元がカーネルである場合、メモリ管理部14はカーネル用の変換テーブルにより仮想アドレスを物理アドレスに変換する。カーネル用の変換テーブルではカーネルはカーネル領域110にアクセスすることができる。また、要求元がユーザアプリケーションである場合、メモリ管理部14はユーザアプリケーション用の変換テーブルにより仮想アドレスを物理アドレスに変換する。具体的には以下のようになる。
CPU12から出力された仮想アドレスがカーネル領域110の物理アドレスに相当しない場合、すなわちCPU12がカーネル領域110以外の領域にアクセスしようとしている場合(図5のアクセス52)、その領域の物理アドレスがメモリ管理部14からメモリ11へ出力される。また、CPU12から出力された仮想アドレスがカーネル領域110の物理アドレスに相当する場合、すなわちCPU12がカーネル領域110にアクセスしようとしている場合(図5のアクセス53)、CPU12がアクセスしようとしていたカーネル領域110とは異なる領域の物理アドレスがメモリ管理部14からメモリ11へ出力される。したがって、ユーザアプリケーションがカーネル領域110に書き込みを行おうとしても、カーネル領域110以外の領域に書き込みを行うことになる。このようにして、ユーザアプリケーションによってカーネル領域110に不正な上書きが行われることを防止し、稼働中のカーネルの完全性を保証することができる。
第3の方法は、カーネルのバッファオーバフロー攻撃を防止することによって、カーネル領域110に不正な上書きが行われることを防止する方法である。カーネルのバッファオーバフロー攻撃では、カーネル領域110のデータ領域に悪意の実行プログラムが格納され、この実行プログラムがデータ領域上で起動され、悪意の処理が実行される。また、この処理によってカーネル領域110のプログラム領域に書き込みが行われ、カーネルプログラムが改竄されてしまう。
そこで、CPU12は、カーネルプログラムに従って、カーネル領域110のデータ領域の実行権限を実行不可とする設定を行う。したがって、ユーザアプリケーションによってカーネル領域110のデータ領域に悪意の実行プログラムが格納された場合でも、その実行プログラムの実行が許可されないので、カーネル領域110に不正な上書きが行われることを防止し、稼働中のカーネルの完全性を保証することができる。
(4)完全な検証用アプリケーションがファイルの状態を確認した結果に対する完全なカーネルによる電子署名
図6は、検証用アプリケーションがHDD10内のシステムファイルの状態を確認するときの処理の様子を示している。ユーザ空間40に属する検証用アプリケーション41は、図3に示した処理により起動されたユーザアプリケーションである。完全性が保証されている起動制御部31と検証部32の処理によって検証用アプリケーション41が起動されているので、検証用アプリケーション41の完全性が保証されている。
カーネル空間30に属するハッシュインタフェース33は、カーネルとユーザアプリケーションの間でデータの入出力を行うためのキャラクタベースのインタフェースである。カーネル空間30に属する署名部34は秘密鍵Ksを保持しており、この秘密鍵Ksで暗号化を行い、電子署名を生成する。
検証用アプリケーション41は以下のようにしてHDD10内のシステムファイルの検証を行う。まず、検証用アプリケーション41はHDD10からメモリ11のユーザ領域111にシステムファイルを読み込み、システムファイルのハッシュ値を算出する。このハッシュ値はシステムファイルの状態を表しており、システムファイルが改竄されると、ハッシュ値が変化することになる。検証用アプリケーション41は、システムファイルを識別する情報(ファイル名等)と、算出したハッシュ値とを関連付けてリスト化したハッシュ値リストをユーザ領域111に保持する。また、検証用アプリケーション41は、ハッシュ値リスト全体からさらにハッシュ値を算出する(ステップS200)
検証用アプリケーション41は、ハッシュインタフェース33へハッシュ値リストのハッシュ値を出力し、署名を要求する(ステップS210)。ハッシュインタフェース33はハッシュ値を署名部34に渡す(ステップS220)。
署名部34は、受け取ったハッシュ値を秘密鍵Ksで暗号化し、電子署名を生成する。署名部34は、生成した電子署名をハッシュインタフェース33に渡す(ステップS230)。ハッシュインタフェース33は電子署名を検証用アプリケーション41へ出力する(ステップS240)。検証用アプリケーション41は、保持しているハッシュ値リストに対して電子署名を付加し、HDD10に格納する(ステップS250)。
上記のようにしてHDD10に格納されたハッシュ値リストに基づいて、HDD10上のシステムファイルが改竄されているか否かを検証することができる。すなわち、所定のシステムファイルについて第1のタイミングで取得されたハッシュ値リスト内のハッシュ値と、第2のタイミングで取得されたハッシュ値リスト内のハッシュ値とを比較し、両方のハッシュ値が一致していなければ、システムファイルが改竄されたことを検知することができる。また、両方のハッシュ値が一致していれば、システムファイルが改竄されていないことを確認することができる。
一方、ハッシュ値リストに付加されている電子署名を検証することにより、ハッシュ値リストが改竄されているか否かを検証することができる。すなわち、ハッシュ値リストに付加されている電子署名を秘密鍵Ksに対応する公開鍵で復号して得たハッシュ値と、ハッシュ値リスト全体から算出したハッシュ値とを比較し、両方のハッシュ値が一致していなければ、ハッシュ値リストが改竄されたことを検知することができる。また、両方のハッシュ値が一致していれば、ハッシュ値リストが改竄されていないことを確認することができる。
上記の電子署名は、完全性が保証されているカーネルによって生成されたものなので、検証用アプリケーション41がシステムファイルの状態を確認した結果に対して、完全性の保証された電子署名を付加することができる。
HDD10に格納されたハッシュ値リストの検証、およびハッシュ値リストに付加されている電子署名の検証をリモート側の端末(ファイル検証装置)で行うことが可能である。すなわち、CPU12は、通信を行うユーザアプリケーションによって、HDD10からハッシュ値リストを読み出し、リモート端末へ送信する処理を実行する。リモート端末はハッシュ値リストを受信し、自身のHDDに格納する。続いて、リモート端末は、HDDからハッシュ値リストを読み出し、上述したハッシュ値リストの検証、およびハッシュ値リストに付加されている電子署名の検証を行う。なお、リモート端末は、取得したハッシュ値リストと比較される正しいハッシュ値リストを予め保持しており、取得したハッシュ値リスト内のハッシュ値と、正しいハッシュ値とを比較することにより、HDD10上のシステムファイルが改竄されているか否かを検証する。
上述したように、本実施形態によれば、カーネルが改竄されていないことが確認できた場合にカーネルが起動され、カーネルの稼働中は、メモリ11のカーネル領域110に対するユーザアプリケーションからのアクセスが禁止されるため、起動時および稼働中のカーネルの完全性が保証される。また、完全性の保証されたカーネルによって、ユーザアプリケーションが改竄されていないことが確認できた場合にユーザアプリケーションが起動されるので、起動時のユーザアプリケーションの完全性が保証される。したがって、完全性が保証されたカーネルから、完全性が保証されたユーザアプリケーションを起動することができる。また、完全性が保証された検証用アプリケーションを起動することによって、完全な検証用アプリケーションがファイルの状態を確認することができる。
上記のように完全な検証用アプリケーションがファイルの状態を確認することができるが、検証用アプリケーションの出力結果であるハッシュ値リストがHDD10上で改竄される可能性がある。しかし、本実施形態では、ハッシュ値リストに対して、完全性が保証されたカーネルによる電子署名が付加されるので、その電子署名に基づいてHDD10上のハッシュ値リストの改竄を検知することができる。したがって、ハッシュ値リストの信頼性を向上することができる。
本実施形態は公開サーバ等のサーバに適用可能なだけでなく、携帯電話等にも適用することが可能である。例えば、ユーザが所有する携帯電話の状態を電話会社がリモート検証したり、ユーザに貸し出したセットトップボックス等の家電製品の状態をサービス提供会社がリモート検証したりすることが可能である。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
10・・・HDD(プログラム記憶手段、ファイル記憶手段)、11・・・メモリ、12・・・CPU、13・・・DMA、14・・・メモリ管理部(禁止手段)、15・・・カーネル起動制御部(カーネル検証手段)、20・・・バス、31・・・起動制御部、32・・・検証部、33・・・ハッシュインタフェース、34・・・署名部、110・・・カーネル領域、111・・・ユーザ領域

Claims (2)

  1. OSのカーネルおよびユーザアプリケーションのプログラムを記憶するプログラム記憶手段と、
    前記カーネルのプログラムが格納されるカーネル領域と、前記ユーザアプリケーションのプログラムが格納されるユーザ領域とを有するメモリと、
    前記カーネルの起動時に当該カーネルの完全性を検証するカーネル検証手段と、
    前記メモリに格納されたプログラムに従って処理を実行するCPUと、
    前記ユーザアプリケーションから前記カーネル領域に対するデータの書き込みを禁止する禁止手段と、
    システムファイルを記憶するファイル記憶手段と、
    を備え、前記CPUは、
    前記カーネル検証手段によって、前記カーネルが改竄されていないことが確認できた場合に、前記カーネルのプログラムを前記プログラム記憶手段から前記カーネル領域に読み込んで前記カーネルを起動する処理と、
    前記カーネルによって、前記ユーザアプリケーションの起動時に前記ユーザアプリケーションの完全性を検証し、前記ユーザアプリケーションが改竄されていないことが確認できた場合に、前記ユーザアプリケーションのプログラムを前記プログラム記憶手段から前記ユーザ領域に読み込んで前記ユーザアプリケーションを起動する処理と、
    前記ユーザアプリケーションによって、前記システムファイルのハッシュ値を算出する処理と、
    前記カーネルによって、前記ハッシュ値に電子署名を施す処理と、
    前記ユーザアプリケーションによって、前記ハッシュ値に基づいて前記システムファイルの完全性を検証する処理と、
    前記ユーザアプリケーションによって、前記電子署名に基づいて前記ハッシュ値の完全性を検証する処理と、
    を実行することを特徴とする情報処理装置。
  2. 情報処理装置とファイル検証装置を備えたファイル検証システムであって、
    前記情報処理装置は、
    OSのカーネルおよびユーザアプリケーションのプログラムを記憶するプログラム記憶手段と、
    前記カーネルのプログラムが格納されるカーネル領域と、前記ユーザアプリケーションのプログラムが格納されるユーザ領域とを有するメモリと、
    前記カーネルの起動時に当該カーネルの完全性を検証するカーネル検証手段と、
    前記メモリに格納されたプログラムに従って処理を実行するCPUと、
    前記ユーザアプリケーションから前記カーネル領域に対するデータの書き込みを禁止する禁止手段と、
    システムファイルを記憶するファイル記憶手段と、
    を備え、前記CPUは、
    前記カーネル検証手段によって、前記カーネルが改竄されていないことが確認できた場合に、前記カーネルのプログラムを前記プログラム記憶手段から前記カーネル領域に読み込んで前記カーネルを起動する処理と、
    前記カーネルによって、前記ユーザアプリケーションの起動時に前記ユーザアプリケーションの完全性を検証し、前記ユーザアプリケーションが改竄されていないことが確認できた場合に、前記ユーザアプリケーションのプログラムを前記プログラム記憶手段から前記ユーザ領域に読み込んで前記ユーザアプリケーションを起動する処理と、
    前記ユーザアプリケーションによって、前記システムファイルのハッシュ値を算出する処理と、
    前記カーネルによって、前記ハッシュ値に電子署名を施す処理と、
    前記ユーザアプリケーションによって、前記ハッシュ値と前記電子署名を前記ファイル検証装置へ送信する処理と、
    を実行し、
    前記ファイル検証装置は、
    前記情報処理装置から前記ハッシュ値と前記電子署名を受信する受信手段と、
    前記ハッシュ値に基づいて前記システムファイルの完全性を検証する第1の検証手段と、
    前記電子署名に基づいて前記ハッシュ値の完全性を検証する第2の検証手段と、
    を備えたことを特徴とするファイル検証システム。
JP2009026589A 2009-02-06 2009-02-06 情報処理装置およびファイル検証システム Expired - Fee Related JP5346608B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009026589A JP5346608B2 (ja) 2009-02-06 2009-02-06 情報処理装置およびファイル検証システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009026589A JP5346608B2 (ja) 2009-02-06 2009-02-06 情報処理装置およびファイル検証システム

Publications (2)

Publication Number Publication Date
JP2010182196A JP2010182196A (ja) 2010-08-19
JP5346608B2 true JP5346608B2 (ja) 2013-11-20

Family

ID=42763744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009026589A Expired - Fee Related JP5346608B2 (ja) 2009-02-06 2009-02-06 情報処理装置およびファイル検証システム

Country Status (1)

Country Link
JP (1) JP5346608B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560845B2 (en) * 2011-01-14 2013-10-15 Apple Inc. System and method for tamper-resistant booting
JP6253333B2 (ja) * 2012-10-09 2017-12-27 キヤノン電子株式会社 情報処理装置、情報処理システムおよび情報処理方法
WO2014057668A1 (ja) * 2012-10-09 2014-04-17 キヤノン電子株式会社 情報処理装置およびその制御方法、情報処理システム、並びに、情報処理方法
JP6254414B2 (ja) * 2012-10-09 2017-12-27 キヤノン電子株式会社 情報処理装置、情報処理システムおよび情報処理方法
US9767280B2 (en) 2012-10-09 2017-09-19 Canon Denshi Kabushiki Kaisha Information processing apparatus, method of controlling the same, information processing system, and information processing method
KR101416717B1 (ko) 2013-03-28 2014-07-09 (주)엠더블유스토리 스마트 기기 기반 악성코드의 침입을 차단하기 위한 시스템 및 그 방법
JP6208645B2 (ja) * 2014-09-30 2017-10-04 富士通エフ・アイ・ピー株式会社 ライセンス管理方法及びライセンス管理システム
JP6744256B2 (ja) * 2017-06-12 2020-08-19 日本電信電話株式会社 確認システム、制御装置及び確認方法
JP6706278B2 (ja) * 2018-03-27 2020-06-03 キヤノン株式会社 情報処理装置、及び情報処理方法
JP7179482B2 (ja) * 2018-04-19 2022-11-29 キヤノン株式会社 情報処理装置、制御方法、およびそのプログラム
JP7378980B2 (ja) * 2019-06-27 2023-11-14 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP7333748B2 (ja) * 2019-12-13 2023-08-25 株式会社日立製作所 電子機器および電子機器の攻撃検知方法
JP7249968B2 (ja) * 2020-03-09 2023-03-31 株式会社東芝 情報処理装置およびストレージ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002352098A (ja) * 2001-05-30 2002-12-06 Ricoh Co Ltd データ管理サービス提供システム、方法、プログラム、記録媒体
JP2005148934A (ja) * 2003-11-12 2005-06-09 Ricoh Co Ltd 情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体
JP2007043321A (ja) * 2005-08-01 2007-02-15 Hitachi Ltd 電子文書の真正性検証方法及びシステム
US8332866B2 (en) * 2006-11-29 2012-12-11 Qualcomm Incorporated Methods, systems, and apparatus for object invocation across protection domain boundaries

Also Published As

Publication number Publication date
JP2010182196A (ja) 2010-08-19

Similar Documents

Publication Publication Date Title
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
US10516533B2 (en) Password triggered trusted encryption key deletion
US10740468B2 (en) Multiple roots of trust to verify integrity
KR101662618B1 (ko) 단일 신뢰 플랫폼 모듈을 가진 플랫폼 컴포넌트의 측정
US8909940B2 (en) Extensible pre-boot authentication
US8213618B2 (en) Protecting content on client platforms
CN109918919B (zh) 认证变量的管理
CN109669734B (zh) 用于启动设备的方法和装置
EP3125149B1 (en) Systems and methods for securely booting a computer with a trusted processing module
JP4498735B2 (ja) オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム
US9424430B2 (en) Method and system for defending security application in a user's computer
JP4971466B2 (ja) コンピューティング・デバイスの安全なブート
US9087188B2 (en) Providing authenticated anti-virus agents a direct access to scan memory
US8291480B2 (en) Trusting an unverified code image in a computing device
KR101281678B1 (ko) 이동 저장 장치에서 호스트 인증 방법, 호스트 인증을 위한정보 제공 방법, 장치, 및 기록매체
US20110289294A1 (en) Information processing apparatus
CN110321713B (zh) 基于双体系架构的可信计算平台的动态度量方法和装置
US20150089645A1 (en) Method and system for preventing and detecting security threats
KR20090005219A (ko) 점대점 상호연결 시스템 상에서의 보안 환경 초기화 명령의실행
JP2006501581A (ja) サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化
JP2011210129A (ja) 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム
CN110046495B (zh) 数据结构测量结果比较
EP2891105A1 (en) Method and system for platform and user application security on a device
US11909882B2 (en) Systems and methods to cryptographically verify an identity of an information handling system
US20200233953A1 (en) Enclave handling on an execution platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110823

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130329

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: 20130723

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130819

R150 Certificate of patent or registration of utility model

Ref document number: 5346608

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees