JP2011150656A - プログラム検査システム - Google Patents

プログラム検査システム Download PDF

Info

Publication number
JP2011150656A
JP2011150656A JP2010013445A JP2010013445A JP2011150656A JP 2011150656 A JP2011150656 A JP 2011150656A JP 2010013445 A JP2010013445 A JP 2010013445A JP 2010013445 A JP2010013445 A JP 2010013445A JP 2011150656 A JP2011150656 A JP 2011150656A
Authority
JP
Japan
Prior art keywords
program
inspection
domain
execution
storage
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.)
Pending
Application number
JP2010013445A
Other languages
English (en)
Inventor
Hisashi Oguma
寿 小熊
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.)
Toyota Motor Corp
Toyota InfoTechnology Center Co Ltd
Original Assignee
Toyota Motor Corp
Toyota InfoTechnology Center Co Ltd
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 Toyota Motor Corp, Toyota InfoTechnology Center Co Ltd filed Critical Toyota Motor Corp
Priority to JP2010013445A priority Critical patent/JP2011150656A/ja
Publication of JP2011150656A publication Critical patent/JP2011150656A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】ストレージへのアクセス競合を発生させずに、プログラム実行と並列してプログラムの検査を行う。
【解決手段】実行ドメイン(10)と検査ドメイン(20)とを並列に実行するマルチコアシステムにおいて、実行ドメインからストレージ(30)に対するアクセスは禁止され、ストレージに対するアクセス要求は検査ドメインを介して行われる。実行ドメインからプログラムの取得要求を受け取った検査ドメインでは、ストレージから読み取ったプログラムを実行ドメインに渡すとともに、そのコピーを作成する。検査ドメインでは、コピーされたプログラムを対象として検査を行う。
【選択図】図1

Description

本発明は、プログラムの正当性を検証するプログラム検査技術に関し、特に、記憶装置を共有するマルチコアシステムにおけるプログラム検査技術に関する。
特許文献1にはランタイムでプログラムを検査する手法が提案されている。マルチコアプロセッサシステム上で、このようなランタイムのプログラム検査を利用する場合は、既存機能の動作環境(実行ドメイン)と並列実行できる動作環境(検査ドメイン)を導入する方法が考えられる。このようにプログラム実行とプログラム検査を並列実行することで、検査がプログラム実行に影響を与えないことが期待されるが、実際にはプログラムを保存する記憶装置(ストレージ)に対するアクセス競合によりプログラム実行のスループットに悪影響を与えてしまう。
ストレージに対するアクセス競合によるスループットの低下を避けるために、本発明者は、実行ドメインがストレージにアクセスするときに検査ドメインに割り込みをかけることで、検査ドメインによる検査を中断する手法を提案している(特許文献2)。
特開2004−171564号公報 特開2009−282751号公報
しかしながら、特許文献2の手法では、改ざんされた実行ドメイン内のプログラムが定期的に検査ドメインに割り込みをかけることで、プログラム検査を無効にして改ざん検知を免れるおそれがある。
本発明は、特許文献2の手法とは異なる手法により、ストレージに対するアクセス競合に起因するスループット低下の問題を解決する。すわなち、本発明は、検査対象プログラムが格納されている記憶装置へのアクセス競合を発生させずに、プログラム実行と並列してプログラム検査を行うことを目的とする。
上記課題を解決するために、本発明に係るプログラム検査システムは、プログラムを格納する記憶手段と、前記プログラムを実行するプログラム実行手段と、前記プログラムを検査する検査手段と、を有する。本プログラム検査システムは、マルチコアシステム上で動作するものであり、プログラム検査処理とプログラム実行処理を並列に行うことができるものである。
なお、本明細書において、マルチコアシステムとは、複数のプロセッサコアを有するコンピュータシステムのことを意味する。したがって、1つのプロセッサパッケージの中に複数のプロセッサコアを含むシステムや、それぞれが1つのプロセッサコアを有する複数のプロセッサを含むシステムや、これらの組み合わせが、本明細書におけるマルチコアシステムに該当する。
本発明におけるプログラム実行手段は、記憶手段からプログラムを読み出す際に、記憶
手段に直接アクセスせずに、検査手段に対してプログラムの取得を要求する。
本発明における検査手段は、プログラム実行手段からのプログラムの取得要求に応じて記憶手段からプログラムを取得してプログラム実行手段へ送信するとともに、取得したプログラムのコピーを作成してコピーされたプログラムを対象に検査を実行する。
このように、プログラム実行手段からは記憶手段へのアクセスを行わず、プログラム検査手段を介して記憶手段からプログラムを取得することで、記憶装置へのアクセスが統一され、両者の間でのアクセス競合が解消される。
本発明において、検査手段は、正常なプログラムのダイジェスト値をあらかじめ記憶しており、前記コピーされたプログラムから算出されるダイジェスト値が記憶されたダイジェスト値と一致するか否かによって、プログラムが正常であるか否かを判断することができる。
このようなダイジェスト値として、例えば、SHA−1などのハッシュ値を用いることが好適である。また、ダイジェスト値として、MD5やCRCなどのチェックサムを用いても良い。つまり、ダイジェスト値は、プログラムデータが異なるものであれば異なる値をとることが期待されるような値であれば、任意のものを採用可能である。
本発明は、上記処理の少なくとも一部を含むプログラム検査方法、または、これらの方法を実現するためのプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
本発明によれば、検査対象プログラムが格納されている記憶装置へのアクセス競合を発生させずに、プログラム実行と並列してプログラム検査を行える。
本実施形態に係るプログラム検査システムの構成を示す図。 本実施形態に係るプログラム検査システムをTrustZone(登録商標)を利用して実現した場合の構成を示す図。 本実施形態に係るプログラム検査システムをXenを利用して実現した場合の構成を示す図。 本実施形態に係るプログラム検査システムの全体的な処理の流れを示すフローチャート。 本実施形態に係るプログラム検査システムにおける、検査ドメインでの検査処理の流れを示すフローチャート。 ストレージ内におけるプログラムとブロックの対応関係を説明する図。 ブロック正常状態記憶部に記憶される正常なブロックのダイジェスト値を説明する図。
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
〈構成〉
図1に本実施形態に係るプログラム検査システムの構成図を示す。本実施形態は、マルチコアのCPUを有するマルチコアシステムであり、ストレージを共有している。そして、既存機能が動作する実行ドメインに加えて、並列に動作して実行ドメインを監視する検査ドメインを導入する。ドメインとは、プログラムが実行される仮想的な領域・環境を表
す。各ドメインは互いに独立しており原則として他のドメインにアクセスすることができない。ただし、ドメイン間のアクセスを制御する機構を設けることで、他のドメインに対するアクセスが許可されたドメインを設けることができる。ここで、検査ドメイン20は、改ざんなどの攻撃を受けないことが望まれるので、物理的な攻撃や他のドメインからの攻撃を受けないようにセキュアなドメインとして構築する。
本実施形態では、プログラムを実行する環境である実行ドメインと、ストレージへのアクセスおよびプログラムの検査を行う検査ドメインの少なくとも2つのドメインを備える。実行ドメインが本発明におけるプログラム実行手段に相当し、検査ドメインが本発明におけるプログラム検査手段に相当する。
本実施形態では、実行ドメイン10からストレージ30に対する直接のアクセスが禁止される。そこで、実行ドメイン10からストレージ30にアクセスする場合には、デバイスドライバ12は、検査ドメイン20にストレージ30へのアクセス要求を転送して、検査ドメイン20を介してストレージへアクセスする。
なお、このような複数のドメインから構成されるマルチコアシステムは、例えば、ARM社のTrustZone(登録商標)技術によって実現することができる。図2に、TrustZone技術を利用して図1の構成を実現した場合の構成図を示す。この場合、TrustZone技術に対応したハードウェア(CPU等)を利用して、セキュアドメインと通常ドメインを構築する。TrustZone技術は、周辺機器へのアクセス制御機能を持ち、セキュアドメイン以外はストレージへのアクセスを不可にできるため、本実施形態に好適な環境である。この場合、通常ドメイン(実行ドメイン)とセキュアドメイン(検査ドメイン)との間の通信は、ドメイン間の通信を監視する、TrustZoneモニタソフトウェアを介して行わる。
また、仮想化技術であるXenを用いて本実施形態を構築することもできる。図3にXenを利用して図1の構成を実現した場合の構成図を示す。Xenではマルチコアシステム上で、仮想マシンを提供するXen VMM(仮想マシンモニタ)を実行し、その上で複数のOSが実行される。仮想マシンの実行単位がドメインと呼ばれ、特権的なドメインであるドメイン0と、その他のドメイン(ドメインU)が存在する。ドメイン0は、実ハードウェアへのアクセスやその他のドメインを管理するものである。ドメインUからの周辺機器へのアクセスは仮想マシンであるVMMに対して行われ、その要求はドメイン0にリダイレクトされる。そして、ドメイン0が実際の周辺機器にアクセスして、アクセス結果をドメインUへ返す。Xenでは周辺機器に対するこのようなアクセス方式を提供するので、本実施形態を構築するために利用することができる。
〈全体処理〉
図1における各機能部の役割を、処理の流れとともに説明する。図4は、本マルチコアシステムにおける全体処理の流れを示すフローチャートである。検査ドメイン20は、実行ドメイン10からのプログラムロード要求に応じてプログラムの検査を行うので、実行ドメインからのプログラムロード要求を待つ(ステップS10)。実行ドメイン10においてカーネル11がプログラムを実行する場合には、ストレージ30内のプログラムを取得するようデバイスドライバ12に対して要求する(ステップS11)。カーネル11からのプログラムロード要求を受けて、デバイスドライバ12は、検査ドメイン20に対してプログラムのロードを要求する(ステップS12)。なお、ストレージ30内には図6Aに示すようにブロックをまたがってプログラムが格納されているので、図6Bに示すようなプログラムとブロックの対応付けを記憶しているプログラム−ブロック変換部12aが要求されたプログラムに対応するブロックを決定する。そして、ブロックロード転送部12bが、このブロックをロードするように実行ドメイン通信部21を介して検査ドメイ
ン20に要求する。
検査ドメイン20における処理は後で詳しく説明するので、ここでは簡単に説明する。検査ドメイン20が、プログラムの要求(ブロックロードの要求)を受け付ける(ステップS13)と、ストレージドライバ22がストレージ30から要求されてブロックをロードし、取得したブロックのコピーを生成するとともに、実行ドメイン10に送信する(ステップS14)。実行ドメイン10では、要求したプログラムを受け取ると、カーネル11がこのプログラムを実行する(S15)。一方、検査ドメイン20では、コピーしたプログラムを対象にして検査を行う(ステップS16)。プログラムに異常があれば、実行ドメイン10に通知して実行ドメイン10におけるプログラムの実行を停止させる。
〈検査ドメインにおける検査処理〉
以下、検査ドメイン20における詳細な処理について、図5のフローチャートを参照して説明する。実行ドメイン通信部21が、実行ドメイン10のデバイスドライバ12からブロックロードの要求を受信すると(ステップS20)、ストレージドライバ22が、指定されたブロックをストレージ30からロードする(ステップS21)。ストレージドライバ22は、ロードしたブロックをブロックコピー生成部23に渡し(ステップS22)、ブロックコピー生成部23はロードしたブロックのコピーを検査ドメイン20内のRAM上に生成して内部で保存する(ステップS23)。また、実行ドメイン通信部21は、ロードされたコピー元のブロックを実行ドメイン10のデバイスドライバ12へ渡す(ステップS24)。上述したように、これによって実行ドメイン10でプログラムの実行が開始される。検査ドメイン20では、ブロック検査部24が、コピーされたブロックを対象として検査を行う(ステップS25)。具体的には、ブロック検査部24がコピーされたブロックのダイジェスト値を算出する。ブロック正常状態記憶部25には、図7に示すように各ブロックが正常な場合のダイジェスト値が格納されているので、ブロック検査部24は算出したダイジェスト値をブロック正常状態記憶部25に格納されているダイジェスト値を比較することで、ストレージ30内のブロックが正常であるか否か判断する。ロードしたブロックが正常である場合(S26−YES)は、検査処理を終了し次のブロックロード要求を待つ。一方、ロードしたブロックのダイジェスト値が記憶されている値と異なり異常である場合(S26−NO)は、ブロック検査部24から検査ドメインメッセージ受信部13に対して、その旨の通知を行う。実行ドメイン10では、この通知を受けた場合は、プログラムの実行を停止する。
〈本実施形態の作用・効果〉
本実施形態においては、実行ドメインがプログラムを実行すると同時に、そのプログラムが検査ドメイン内でコピーされるので、検査ドメインから検査のために再度ストレージにアクセスする必要が無くなる。すなわち、ストレージに対するアクセスは一度だけであるため実行ドメインと検査ドメインとの間でアクセス競合が生じず、検査に伴う実行ドメインへの影響を最小限とすることができる。本実施形態では、検査ドメインにおいてロードしたプログラムのコピーをRAM上に生成するオーバヘッドが生じる。しかし、一般にRAMへの操作時間はストレージに対する操作時間よりも小さいため、コピーによるオーバヘッドは小さい。
また、TrustZoneやXenなどの仮想化技術により、実行ドメインのカーネルやデバイスドライバに変更を加えずに、下位層を制御することで実行ドメインからストレージへのアクセス要求を検査ドメインにリダイレクトできる。すなわち、実行環境側のプログラムを変更することなく、検査ドメインのみを追加することによってプログラムの検査が行える。
10 実行ドメイン
11 カーネル
12 デバイスドライバ
13 検査ドメインメッセージ受信部
20 検査ドメイン
21 実行ドメイン通信部
22 ストレージドライバ
23 ブロックコピー生成部
24 ブロック検査部
25 ブロック正常状態記憶部
30 ストレージ

Claims (4)

  1. プログラムを格納する記憶手段と、
    前記プログラムを実行するプログラム実行手段と、
    前記プログラムを検査する検査手段と、
    を有し、前記プログラムの検査と実行をマルチコアシステムにより並列に実行するプログラム検査システムであって、
    前記プログラム実行手段は、前記記憶手段からプログラムを読み出す際に、前記記憶手段に直接アクセスせずに、前記検査手段に対してプログラムの取得を要求し、
    前記検査手段は、前記プログラム実行手段からのプログラムの取得要求に応じて前記記憶手段からプログラムを取得して前記プログラム実行手段へ送信するとともに、当該プログラムのコピーを作成してコピーされたプログラムを対象に検査を実行する
    ことを特徴とするプログラム検査システム。
  2. 前記検査手段は、正常なプログラムのダイジェスト値をあらかじめ記憶しており、前記コピーされたプログラムから算出されるダイジェスト値が記憶されたダイジェスト値と一致するか否かによって、プログラムが正常であるか否かを判断する
    ことを特徴とする請求項1に記載のプログラム検査システム。
  3. プログラムを格納する記憶手段と、
    前記プログラムを実行するプログラム実行手段と、
    前記プログラムを検査する検査手段と、
    を有し、前記プログラムの検査と実行をマルチコアシステムにより並列に実行するプログラム検査システムにおけるプログラム検査方法であって、
    前記プログラム実行手段が、前記検査手段に対してプログラムの取得を要求するプログラム取得要求工程と、
    前記検査手段が、前記プログラム実行手段からのプログラムの取得要求に応じて前記記憶手段からプログラムを取得するステップと、取得されたプログラムを前記プログラム実行手段へ送信するステップと、取得されたプログラムのコピーを作成してコピーされたプログラムを対象に検査するステップとを行う検査工程と、
    を含むプログラム検査方法。
  4. 前記検査手段には、正常なプログラムのダイジェスト値があらかじめ記憶されており、
    前記検査するステップでは、前記コピーされたプログラムから算出されるダイジェスト値が記憶されたダイジェスト値と一致するか否かによって、プログラムが正常であるか否かを判断する
    ことを特徴とする請求項3に記載のプログラム検査方法。
JP2010013445A 2010-01-25 2010-01-25 プログラム検査システム Pending JP2011150656A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010013445A JP2011150656A (ja) 2010-01-25 2010-01-25 プログラム検査システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010013445A JP2011150656A (ja) 2010-01-25 2010-01-25 プログラム検査システム

Publications (1)

Publication Number Publication Date
JP2011150656A true JP2011150656A (ja) 2011-08-04

Family

ID=44537548

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010013445A Pending JP2011150656A (ja) 2010-01-25 2010-01-25 プログラム検査システム

Country Status (1)

Country Link
JP (1) JP2011150656A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019016281A (ja) * 2017-07-10 2019-01-31 大日本印刷株式会社 セキュアエレメント、コンピュータプログラム、デバイス、サーバ及びトラステッドアプリケーションのインストレーション方法
KR20200041639A (ko) * 2018-10-12 2020-04-22 현대자동차주식회사 차량용 소프트웨어 업데이트 장치 및 그 제어 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005096121A1 (ja) * 2004-04-02 2005-10-13 Matsushita Electric Industrial Co., Ltd. 実行装置
JP2006285738A (ja) * 2005-04-01 2006-10-19 Canon Inc 複合機のソフトウェア起動方式
JP2006323675A (ja) * 2005-05-19 2006-11-30 Fujitsu Ltd 情報処理装置、情報処理方法及びコンピュータプログラム
JP2007183937A (ja) * 2006-01-09 2007-07-19 Samsung Electronics Co Ltd 不揮発性メモリのプログラム動作を検証する装置及び方法、並びにその装置を含むメモリカード
JP2009282751A (ja) * 2008-05-22 2009-12-03 Toyota Infotechnology Center Co Ltd プログラム検査システムおよび方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005096121A1 (ja) * 2004-04-02 2005-10-13 Matsushita Electric Industrial Co., Ltd. 実行装置
JP2006285738A (ja) * 2005-04-01 2006-10-19 Canon Inc 複合機のソフトウェア起動方式
JP2006323675A (ja) * 2005-05-19 2006-11-30 Fujitsu Ltd 情報処理装置、情報処理方法及びコンピュータプログラム
JP2007183937A (ja) * 2006-01-09 2007-07-19 Samsung Electronics Co Ltd 不揮発性メモリのプログラム動作を検証する装置及び方法、並びにその装置を含むメモリカード
JP2009282751A (ja) * 2008-05-22 2009-12-03 Toyota Infotechnology Center Co Ltd プログラム検査システムおよび方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019016281A (ja) * 2017-07-10 2019-01-31 大日本印刷株式会社 セキュアエレメント、コンピュータプログラム、デバイス、サーバ及びトラステッドアプリケーションのインストレーション方法
KR20200041639A (ko) * 2018-10-12 2020-04-22 현대자동차주식회사 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
KR102579861B1 (ko) 2018-10-12 2023-09-18 현대자동차주식회사 차량용 소프트웨어 업데이트 장치 및 그 제어 방법

Similar Documents

Publication Publication Date Title
US9176752B1 (en) Hardware-based mechanisms for updating computer systems
RU2691187C1 (ru) Система и способы аудита виртуальной машины
US8776245B2 (en) Executing trusted applications with reduced trusted computing base
CN110414235B (zh) 一种基于ARM TrustZone的主动免疫的双体系结构系统
US9372984B2 (en) Authenticated launch of virtual machines and nested virtual machine managers
US20130340077A1 (en) Secure cloud hypervisor monitor
US9946870B2 (en) Apparatus and method thereof for efficient execution of a guest in a virtualized enviroment
TWI667588B (zh) 用以偵測未經授權之記憶體存取的計算裝置、方法及機器可讀儲存媒體(二)
US20080163212A1 (en) Paralleled management mode integrity checks
US9971702B1 (en) Nested exception handling
JP2017117443A (ja) 安全エンクレーヴを使ってクラウド可用性およびシリコン隔離を高める方法
JP2008158899A (ja) デバイス制御装置
WO2019060691A1 (en) MULTI-CORE INFRASTRUCTURE FOR USE IN A PRE-BOOST ENVIRONMENT OF A CHIP SYSTEM
KR101701014B1 (ko) 운영 체제에의 악성 활동 보고
Ozaki et al. Detecting system failures with gpus and llvm
CN110046495B (zh) 数据结构测量结果比较
US20160154655A1 (en) Providing a trustworthy indication of the current state of a multi-processor data processing apparatus
CN110851188A (zh) 一种基于双体架构的国产plc可信链实现装置及方法
KR20130051225A (ko) 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
JP2011150656A (ja) プログラム検査システム
JP2009282751A (ja) プログラム検査システムおよび方法
US9330255B2 (en) Method and system for monitoring a computer system
US20220171847A1 (en) Detecting and handling attacks on processes executing within a trusted execution environment
WO2013189180A1 (zh) 虚拟化系统中关闭中断的方法和装置
US12032680B2 (en) Preserving confidentiality of tenants in cloud environment when deploying security services

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130530

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131008