JP7074146B2 - 情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP7074146B2
JP7074146B2 JP2019569013A JP2019569013A JP7074146B2 JP 7074146 B2 JP7074146 B2 JP 7074146B2 JP 2019569013 A JP2019569013 A JP 2019569013A JP 2019569013 A JP2019569013 A JP 2019569013A JP 7074146 B2 JP7074146 B2 JP 7074146B2
Authority
JP
Japan
Prior art keywords
unit
verification
caller
api
eigenvalue
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
JP2019569013A
Other languages
English (en)
Other versions
JPWO2019151013A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2019151013A1 publication Critical patent/JPWO2019151013A1/ja
Application granted granted Critical
Publication of JP7074146B2 publication Critical patent/JP7074146B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Virology (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置、情報処理方法及びプログラムに関する。
近年、IoTデバイスの普及により、ネットワークカメラやスマートメータ等の計算能力の低いデバイスにおいてもセキュリティ対策が必要になっている。例えば、特許文献1には、ホワイトリストに予め登録しておいたハッシュ値に基づいてプログラム毎に改竄の有無を検証する情報端末が開示されている。
特開2009-9372号公報
特許文献1に記載の情報端末では、プログラム単位でハッシュ値を算出しておき、検証時に新たに算出したハッシュ値と比較することでプログラムの真正性を検証している。プログラム全体が検証領域に該当するため、計算能力の低いデバイスでは検証処理に長時間を要するという問題があった。
そこで、本発明は、上述の課題に鑑み、プログラムの真正性の検証時間を短縮できる情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
本発明の一つの観点によれば、プログラムの複数の部分のそれぞれについて、前記部分ごとに予め算出された第1の固有値、前記部分の呼び出し元の識別子、前記プログラムの記憶領域内における前記部分のメモリ番地を対応付けて記憶する記憶部と、前記呼び出し元の識別子に基づいて、前記記憶領域に記憶されている前記プログラムの複数の前記部分の中から検証対象を特定する特定部と、前記検証対象について第2の固有値を新たに算出し、前記第1の固有値と前記第2の固有値とを比較することで、前記検証対象における改竄の有無を検証する検証部とを備え、前記呼び出し元は、I/O、前記I/Oを用いるAPI及び前記APIの機能を実現する関数を含み、前記I/Oは前記API、前記APIは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出す情報処理装置が提供される。
本発明の他の観点によれば、プログラムの複数の部分のそれぞれについて、前記部分ごとに予め算出された第1の固有値、前記部分の呼び出し元の識別子、前記プログラムの記憶領域内における前記部分のメモリ番地を対応付けて記憶するステップと、前記呼び出し元の識別子に基づいて、前記記憶領域に記憶されている前記プログラムの複数の前記部分の中から検証対象を特定するステップと、前記検証対象について第2の固有値を新たに算出するとともに、前記第1の固有値と前記第2の固有値とを比較することで、前記検証対象における改竄の有無を検証するステップとを備え、前記呼び出し元は、I/O、前記I/Oを用いるAPI及び前記APIの機能を実現する関数を含み、前記I/Oは前記API、前記APIは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出す情報処理方法が提供される。
本発明のさらに他の観点によれば、コンピュータに、プログラムの複数の部分のそれぞれについて、前記部分ごとに予め算出された第1の固有値、前記部分の呼び出し元の識別子、前記プログラムの記憶領域内における前記部分のメモリ番地を対応付けて記憶するステップと、前記呼び出し元の識別子に基づいて、前記記憶領域に記憶されている前記プログラムの複数の前記部分の中から検証対象を特定するステップと、前記検証対象について第2の固有値を新たに算出するとともに、前記第1の固有値と前記第2の固有値とを比較することで、前記検証対象における改竄の有無を検証するステップとを実行させ、前記呼び出し元は、I/O、前記I/Oを用いるAPI及び前記APIの機能を実現する関数を含み、前記I/Oは前記API、前記APIは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すプログラムが提供される。
本発明によれば、プログラムの真正性の検証時間を短縮できる情報処理装置、情報処理方法及びプログラムを提供することができる。
第1の実施形態に係る情報処理装置の機能を示すブロック図である。 第1の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第1の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第1の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第1の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第1の実施形態におけるI/O、API及び関数の呼び出し関係を示す模式図である。 第1の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第1の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第1の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第1の実施形態における検証領域特定部の実行タイミングと検証領域の対応例を示す図である。 第1の実施形態に係る情報処理装置のハードウェア構成例を示すブロック図である。 第1の実施形態に係る情報処理装置の検証情報の登録処理を示すフローチャートである。 第1の実施形態に係る情報処理装置の検証処理を示すフローチャートである。 第1の実施形態における検証部の検証範囲の具体例を示す模式図である。 第2の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第2の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第2の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第2の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。 第2の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第2の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第2の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第2の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第2の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。 第2の実施形態に係る情報処理装置の検証情報の登録処理を示すフローチャートである。 第2の実施形態に係る情報処理装置の検証処理を示すフローチャートである。 第2の実施形態における検証部の検証範囲の具体例を示す模式図である。 第3の実施形態に係る情報処理装置の機能を示すブロック図である。 第3の実施形態に係る情報処理装置の検証処理を示すフローチャートである。 第4の実施形態に係る情報処理装置の機能を示すブロック図である。 変形実施形態に係る情報処理装置の機能を示すブロック図である。
以下、図面を参照して、本発明の実施形態を説明する。なお、以下で説明する図面においては、同一の機能又は対応する機能を有する要素には同一の符号を付し、その繰り返しの説明を省略する。
[第1の実施形態]
図1は、本実施形態に係る情報処理装置10の機能を示すブロック図である。情報処理装置10は、制御部11、プログラム記憶部12、入出力部13、通信部14、検証情報記憶部15、登録部16、検証領域特定部17、検証部18を備える。
制御部11は、情報処理装置10の全体の制御及び演算処理を行う制御装置である。プログラム記憶部12は、制御部11において実行される各種プログラムを記憶する記憶装置である。入出力部13は、情報処理装置10へのデータや信号等の入力及び情報処理装置10における処理結果の出力を行う入出力インタフェース及び入出力装置である。なお、本実施形態では、入出力部13の呼び出し(実行要求)をI/O呼び出しという。通信部14は、インターネット等のネットワーク(図示省略)を介して接続先の装置との通信を行う通信装置である。
検証情報記憶部15は、プログラムの部分ごとに、部分の呼び出し元、プログラム記憶部12における部分のメモリ番地、及び部分について予め算出された固有値(以下、第1の固有値という。)を対応付けた検証情報を記憶する。ここで、本実施形態において、プログラムの部分とは、API(Application Programming Interface)及びAPIの機能を実現する各種の関数をそれぞれ示すものとする。
図2A~図2Dは、本実施形態において検証情報記憶部15が記憶するテーブルの具体例を示す図である。図2Aでは、I/OとAPIとの間の呼び出し関係、図2Bでは、APIと関数(func)との間の呼び出し関係をそれぞれ示している。本実施形態において、API-1及びAPI-2は、I/O-1を用いるAPIである。このため、図2Aでは、I/O-1からAPI-1及びAPI-2が呼び出されるものとしている。図2Bでは、API-1から2つの関数func-1及びfunc-2が呼び出されることが示されている。図2C及び図2Dでは、APIと関数(func)の識別子ごとに、APIと関数(func)のバイナリデータやソースコード等のプログラム記憶部12内におけるメモリ番地(memory addr)が記憶されることが示されている。図2A~図2Dのテーブルは、いずれも後述する登録部16によって登録される。
図3は、本実施形態におけるI/O、API及び関数の呼び出し関係を示す模式図である。図3は、図2A~図2Dに示すテーブルのデータから呼び出し関係を模式化したものである。図3によれば、例えば、I/O-2が呼び出されたとき、I/O-2に直接的又は間接的に関係するプログラムの部分は、API-1、func-1及びfunc-2のみであることが分かる。同様に、I/O-3が呼び出されたとき、I/O-3に直接的又は間接的に関係するプログラムの部分は、API-3、func-2及びfunc-3であることが分かる。
登録部16は、プログラム記憶部12に記憶されているプログラムを解析し、プログラムを構成する部分の間における呼び出し関係を抽出する。また、登録部16は、呼び出し元に関係するすべての部分のメモリ番地を取得する。そして、登録部16は、当該メモリ番地に記憶されているプログラムの部分の実体(例えばソースコードやバイナリデータ)から例えばハッシュ値等の固有値(第1の固有値)を算出するとともに、呼び出し元、ハッシュ値、及びメモリ番地を対応付けた参照テーブルを作成し、検証情報記憶部15に登録する。なお、プログラムの部分に対応する固有値は、ハッシュ値以外にもプログラムの部分の実体から算出でき改竄の有無が確認できるような指標値を用いることができ、例えば誤り訂正符号の値を用いることができる。
図4A~図4Cは、本実施形態において登録部16が検証情報記憶部15に登録する参照テーブルの具体例を示す図である。図4Aの参照テーブルは、I/Oの識別子(I/O-ID)、ハッシュ値(Hash Value)及びメモリ番地(memory addr)を対応付けている。例えば、I/O-1の場合には、メモリ番地が“0x0050-0x0349”として記憶されている。当該メモリ番地は、図2C及び図2Dにおいて示したように、API-1のメモリ番地“0x0050-0x0099”、func-1のメモリ番地“0x0100-0x0199”、func-2のメモリ番地“0x0200-0x0219”、API-2のメモリ番地“0x0220-0x0299”、及びfunc-3のメモリ番地“0x0300-0x0349”を統合したものである。また、I/O-1に対応付けされたハッシュ値“zzzzzzzz”は、API-1、func-1、func-2、API-2、及びfunc-3から算出された固有値を示している。また、図4B及び図4Cの参照テーブルは、I/Oの識別子(I/O-ID)の代わりに、APIの識別子(API-ID)及び関数の識別子(func-ID)に対して、メモリ番地とハッシュ値を対応付けている。
検証領域特定部17は、呼び出し元に基づいて検証情報記憶部15の検証情報から取得したメモリ番地を検証領域として特定する。具体的には、検証領域特定部17は、呼び出し元の識別子をキーとして、上述した図4A~図4Cに示す参照テーブルを参照し、取得したメモリ番地を検証領域とする。なお、検証領域特定部17の呼び出し方法は、様々な方法がある。例えば、(1)検証領域特定部17の中にプログラムやI/O(入出力部13)を監視する機能を実装する、(2)プログラムやI/O側に検証領域特定部17の呼び出し命令を埋め込む、等の方法がある。本実施形態では、(1)の方法を用いるものとする。すなわち、検証領域特定部17は、呼び出し元からプログラムの部分が呼び出されたときに実行される。
図5は、本実施形態における検証領域特定部17の実行タイミングと検証領域の対応例を示す図である。ここでは、検証領域特定部17の実行タイミングは、I/O呼び出し、API呼び出し、関数呼び出しの3つに分けられている。また、本実施形態におけるプログラムの部分の呼び出し元は、I/O、I/Oを用いるAPI及びAPIの機能を実現する関数を含む。そして、I/OはAPI、APIは関数、関数は同一又は異なる関数を呼び出す。このため、図5に示すように、実行タイミングと検証領域の組み合わせパターンは、パターンA~Fの6種類となる。
検証部18は、検証領域に係るプログラムの部分についての固有値(以下、第2の固有値という。)を新たに算出するとともに、検証領域に係るプログラムの部分の第1の固有値と第2の固有値とを比較することで、検証領域における改竄の有無を検証する。具体的には、検証部18は、検証情報記憶部15に記憶されているハッシュ値(第1の固有値)と、新たに算出されたハッシュ値(第2の固有値)とが異なる場合には、検証領域に記憶されているプログラムの部分が改竄されたものと判定する。
図6は、本実施形態に係る情報処理装置10のハードウェア構成例を示すブロック図である。情報処理装置1は、CPU(Central Processing Unit)101、メモリ102、記憶装置103、通信インタフェース104、入力装置105、出力装置106を備える。各部は、共通バス100に接続されている。
CPU101は、記憶装置103に記録されたプログラムをメモリ102上に展開して実行することにより、情報処理装置10の全体の制御及び演算処理を行う制御部11である。また、CPU101は、記憶装置103に処理結果のデータを記録し、通信インタフェース104を介して処理結果のデータを外部に送信する。
メモリ102は、CPU101が処理中のデータや記憶装置103から読み出されたデータを一時的に記憶する記憶領域であり、RAM(Random Access Memory)などを含む。
記憶装置103は、CPU101が実行するプログラムや、プログラムによる処理結果のデータなどを記憶する。記憶装置103は、読み取り専用のROM(Read Only Memory)や、読み書き可能のハードディスクドライブ又はフラッシュメモリなどを含む。また、記憶装置103は、CD-ROMなどのコンピュータ読取可能な可搬記憶媒体を含んでもよい。
通信インタフェース104は、データの送受信を行う通信部14であり、有線通信及び無線通信の少なくとも一方の通信方式を実行可能に構成される。通信インタフェース104は、該通信方式に必要なプロセッサ、電気回路、アンテナ、接続端子などを含む。通信インタフェース104は、CPU101からの信号に従って、該通信方式を用いて通信を行う。
入力装置105は、ユーザからの入力を受け付けるキーボード、マウス、スイッチなどを含み、入力された内容を信号としてCPU101に送信する。入力装置105及び表示装置(図示省略)が一体化されたタッチスクリーンが用いられてもよい。出力装置106は、CPU101からの命令に従って、処理情報を出力する装置であり、画像情報を出力する表示装置や音声情報を出力するスピーカ(図示省略)等が該当する。また、入力装置105及び出力装置106との接続に用いるI/Oインタフェースとしては、UART(Universal Asynchronous Receiver/Transmitter)、イーサネット(登録商標)、GPIO(General-purpose input/output)及びJTAG(Joint Test Action Group)等が挙げられる。
なお、情報処理装置10は、図6に示すハードウェア構成に限定されず、その他の機器をさらに備えてもよい。情報処理装置10は一つ又は複数の装置からなってもよく、あるいは他の装置と一体に構成されてもよい。また、情報処理装置10は別の装置に接続され、本実施形態において情報処理装置10によって行われる処理の少なくとも一部は別の装置によって行われてもよい。
続いて、本実施形態に係る情報処理装置10の動作について図7乃至図9を参照しながら説明する。図7は、本実施形態に係る情報処理装置10の検証情報の登録処理を示すフローチャートである。この処理は、登録部16としてのCPU101によって実行される。
先ず、登録部16は、プログラムのソースコード等を解析して、すべてのI/O、API及び関数のリストを取得し、これらにIDを付与する(ステップS101)。具体的には、ソースコードを用いて関数の呼び出し関係を表すコールグラフを生成し、関係性を分析できる。また、ソースコードがない場合には、バイナリファイルに対する静的解析によって生成されたフローグラフや動的解析によるソフトウェアの実行トレースに基づいて、関係性を分析することができる。
次に、登録部16は、すべてのAPI及び関数のメモリ番地を取得し、そのメモリ番地をIDに対応付けて検証情報記憶部15に登録する(ステップS102)。具体的には、図2C及び図2Dに示すようなテーブルを作成し、検証情報記憶部15に登録する。
次に、登録部16は、I/OとAPIとの間、及びAPIと関数との間の呼び出し関係を取得し、その呼び出し関係を検証情報記憶部15に登録する(ステップS103)。具体的には、図2A及び図2Bに示すようなテーブルを作成し、検証情報記憶部15に登録する。
そして、登録部16は、図3に示したような呼び出し関係に基づいて、各I/Oに関係するAPIと関数のメモリ番地及びハッシュ値を計算し、I/Oの識別子との対応関係を検証情報として検証情報記憶部15に登録する(ステップS104)。なお、各API及び各関数についても同様にメモリ番地及びハッシュ値を計算し、検証情報として検証情報記憶部15に登録する。具体的には、検証情報として、図4A~図4Cに示すような参照テーブルを作成し、検証情報記憶部15に登録する。
図8は、本実施形態に係る情報処理装置10の検証処理を示すフローチャートである。この処理は、図7に示した処理が完了しているときに、検証領域特定部17及び検証部18としてのCPU101によって実行される。
先ず、検証領域特定部17は、プログラムの部分に係る呼び出し(I/O呼び出し、API呼び出し、関数呼び出し)の有無を判定する(ステップS201)。ここで、検証領域特定部17は、呼び出しが有ったと判定した場合には(ステップS201:YES)、検証領域の特定処理を開始し(ステップS202)、ステップS203の処理へ移る。これに対し、検証領域特定部17は、呼び出しは無いと判定した場合には(ステップS201:NO)、ステップS201の処理を繰り返す。
ステップS203において、検証領域特定部17は、呼び出されたI/O又はプログラムの部分について検証情報記憶部15に検証情報を問い合わせる。
次に、検証領域特定部17は、検証情報記憶部15からプログラムの部分のメモリ番地と、当該部分が真正な状態にあるときのハッシュ値とを取得し、検証部18へ送信する(ステップS204)。メモリ番地の情報は、検証領域特定部17によって特定された検証領域に該当する。
図9は、本実施形態における検証部18の検証範囲の具体例を示す模式図である。ここでは、I/O-1についてのI/O呼び出しが有る場合に、I/O-1と直接的及び間接的に関係するAPI-1、API-2、func-1、func-2及びfunc-3が検証部18の検証範囲(図中の破線部)に含まれることを示している。
そして、検証部18は、検証領域特定部17から送信されたメモリ番地及びハッシュ値に基づいて検証領域に係るプログラムの部分についての真正性の検証処理を実行し(ステップS205)、処理を終了する。
このように、本実施形態に係る情報処理装置10によれば、検証情報記憶部15にプログラムの部分ごとに、予め算出された第1の固有値が記憶されている。このため、同一部分について新たに算出した第2の固有値と第1の固有値を比較するだけで、当該部分の改竄の有無を検証することができる。また、情報処理装置10によれば、呼び出し元と所定の呼び出し関係にあるプログラムの部分のみを特定し、検証領域を絞り込むことができる。このため、プログラム全体を検証領域とする場合に比べて、検証処理に要する時間を大幅に短縮できる。また、情報処理装置10が計算能力の低いデバイスである場合にもセキュリティ対策を施すことが可能となる。
[第2の実施形態]
以下、本実施形態に係る情報処理装置10について説明する。なお、第1の実施形態の図中において付与した符号と共通する符号は同一の対象を示す。このため、第1の実施形態と共通する箇所の説明は省略し、異なる箇所について詳細に説明する。
本実施形態では、検証情報記憶部15はI/Oの識別子とI/Oからの呼び出し時に入力されるメッセージとの組み合わせに対して、呼び出し先であるAPIの識別子を対応付けて検証情報を定義する。また、検証領域特定部17は、I/Oの識別子とメッセージとの組み合わせに基づいて検証情報記憶部15を参照し、検証領域を特定する。
図10A~図10Dは、本実施形態において検証情報記憶部15が記憶するテーブルの具体例を示す図である。図10Aでは、上述の図2Aとは異なり、I/OとAPIとの間の呼び出し関係が、I/O呼び出し時に入力されるメッセージ(message)を含めて定義されている。具体的には、I/O-1のI/O呼び出し時にメッセージとして“READ”が入力されるときはAPI-1、“WRITE”が入力されるときはAPI-2がそれぞれ呼び出されることを示している。なお、I/O-2の場合には、I/O呼び出し時にメッセージによって呼び出されるAPIが変化しないこと、メッセージを識別できないこと又はメッセージが入力されないことがメッセージ欄の“*”によって示されている。図10B~図10Dについては、上述の図2B~図2Dと同様である。
図11A~図11Eは、本実施形態において登録部16が検証情報記憶部15に登録する参照テーブルの具体例を示す図である。図11A、図11D及び図11Eについては、上述の図4A~図4Cと同様である。これらのテーブルは、I/O呼び出し時にメッセージを識別できない場合等に参照される。これに対し、図11B及び図11Cは、I/O呼び出し時にメッセージが入力された場合に参照されるテーブルである。
図11Bの参照テーブルは、I/Oの識別子(I/O-ID)とメッセージ(message)との組み合わせに対して、ハッシュ値(Hash Value)及びメモリ番地(memory addr)を対応付けている。例えば、I/O-1とメッセージ“READ”の組み合わせに対しては、メモリ番地が“0x0050-0x0219”である。当該メモリ番地は、図10C及び図10Dにおいて示したように、API-1のメモリ番地“0x0050-0x0099”、func-1のメモリ番地“0x0100-0x0199”、func-2のメモリ番地“0x0200-0x0219”を統合したものである。また、I/O-1とメッセージ“READ”の組み合わせに対応付けされたハッシュ値“xxxxxxxx”は、API-1、func-1及びfunc-2から算出された固有値を示している。すなわち、図4の場合と異なり、API-2のメモリ番地“0x0220-0x0299”とfunc-3のメモリ番地“0x0300-0x0349”については検証領域から除かれている。
図11Cの参照テーブルは、I/Oの識別子(I/O-ID)、メッセージ(message)及びAPIが関数を呼び出す時に関数へ引き渡す引数(Argument)の値の組み合わせに対して、ハッシュ値(Hash Value)及びメモリ番地(memory addr)を対応付けている。例えば、I/O-IDが“I/O-1”、メッセージが“READ”であって、引数が“True”の場合には、“func-1”のメモリ番地“0x0100-0x0199”が検証領域となる。I/O-IDが“I/O-1”、メッセージが“READ”であって、引数が“False”の場合には、API-1のメモリ番地“0x0050-0x0099”と、func-2のメモリ番地“0x0200-0x0219”とが検証領域となる。
続いて、本実施形態に係る情報処理装置10の動作について図12乃至図14を参照しながら説明する。図12は、本実施形態に係る情報処理装置10の検証情報の登録処理を示すフローチャートである。この処理は、登録部16としてのCPU101によって実行される。
先ず、登録部16は、プログラムのソースコード等を解析して、すべてのI/O、API及び関数のリストを取得し、これらにIDを付与する(ステップS301)。なお、メッセージや引数を考慮する場合には、呼び出しに関係する分岐条件と、メッセージや引数の関係性を抽出するものとする。
次に、登録部16は、すべてのAPI及び関数のメモリ番地を取得し、そのメモリ番地をIDに対応付けて検証情報記憶部15に登録する(ステップS302)。具体的には、図10C及び図10Dに示すようなテーブルを作成し、検証情報記憶部15に登録する。
次に、登録部16は、I/OとAPIとの間、及びAPIと関数との間の呼び出し関係を取得し、その取得情報にメッセージを含めて検証情報記憶部15に登録する(ステップS303)。具体的には、図10A及び図10Bに示すようなテーブルを作成し、検証情報記憶部15に登録する。
そして、登録部16は、各I/Oとメッセージの組み合わせに対するAPIと関数のメモリ番地及びハッシュ値を計算し、I/Oの識別子との対応関係を検証情報として検証情報記憶部15に登録する(ステップS304)。なお、各API及び各関数についても同様にメモリ番地及びハッシュ値を計算し、検証情報として検証情報記憶部15に登録する。具体的には、検証情報として、図11A~図11Eに示すような参照テーブルを作成し、検証情報記憶部15に登録する。
図13は、本実施形態に係る情報処理装置10の検証処理を示すフローチャートである。この処理は、図12に示した処理が完了しているときに、検証領域特定部17及び検証部18としてのCPU101によって実行される。なお、メッセージはI/O呼び出し時に入力されるため、以下ではメッセージを伴うI/O呼び出し時について説明する。
先ず、検証領域特定部17は、メッセージを伴うI/O呼び出しの有無を判定する(ステップS401)。ここで、検証領域特定部17は、メッセージを伴うI/O呼び出しが有ったと判定した場合には(ステップS401:YES)、検証領域の特定処理を開始し(ステップS402)、ステップS403の処理へ移る。これに対し、検証領域特定部17は、メッセージを伴うI/O呼び出しは無いと判定した場合には(ステップS401:NO)、ステップS401の処理を繰り返す。
ステップS403において、検証領域特定部17は、メッセージを読み込むとともに、呼び出されたI/Oとメッセージの組み合わせについて検証情報記憶部15に検証情報を問い合わせる。
次に、検証領域特定部17は、検証情報記憶部15からプログラムの部分のメモリ番地と、当該部分が真正な状態にあるときのハッシュ値とを取得し、検証部18へ送信する(ステップS404)。メモリ番地の情報が、検証領域特定部17によって特定された検証領域に該当する。
図14は、本実施形態における検証部18の検証範囲の具体例を示す模式図である。ここでは、I/O-1についてメッセージ“READ”を伴うI/O呼び出しがある場合に、I/O-1と直接的及び間接的に関係するAPI-1、func-1及びfunc-2が検証部18の検証範囲(図中の破線部)に含まれることを示している。図14によれば、上述した図9の場合よりも、検証範囲がさらに限定されていることが分かる。
そして、検証部18は、検証領域特定部17から送信されたメモリ番地及びハッシュ値に基づいて検証領域に係るプログラムの部分についての真正性の検証処理を実行し(ステップS405)、処理を終了する。
このように、本実施形態に係る情報処理装置10によれば、プログラムの部分の呼び出し元の識別子とメッセージとの組み合わせに基づいて検証領域が限定されるため、検証処理の処理時間をさらに短縮できる。
[第3の実施形態]
以下、本実施形態に係る情報処理装置30について説明する。なお、第1の実施形態の図中において付与した符号と共通する符号は同一の対象を示す。このため、第1の実施形態と共通する箇所の説明は省略し、異なる箇所について詳細に説明する。
図15は、本実施形態に係る情報処理装置30の機能を示すブロック図である。情報処理装置30は、レジスタ部31とレジスタ情報記憶部32をさらに備える。レジスタ部31は、検証領域特定部17を呼び出した第1の呼び出し元を記憶する。これに対し、レジスタ情報記憶部32は、検証領域特定部17を正しく呼び出す第2の呼び出し元(真正の呼び出し元)を予め記憶する。また、情報処理装置30は、ノーマル空間33と、ノーマル空間33側からのアクセスが制限されたセキュア空間34とをさらに備える。セキュア空間34は、例えばTrust ZoneのTEE(Trusted Execution Environment)を利用することで構築されるものとする。
ノーマル空間33には、レジスタ部31、制御部11、プログラム記憶部12、入出力部13、通信部14が配置される。これに対し、セキュア空間34には、レジスタ情報記憶部32、検証情報記憶部15、登録部16、検証領域特定部17及び検証部18が配置される。
また、本実施形態における検証領域特定部17の呼び出し方は、例えば以下の2つがある。
(1)ノーマル空間33のプログラムにトリガーとなる命令が埋め込まれている場合には、プログラムが検証領域特定部17を呼び出す。
(2)検証領域特定部17がプログラム記憶部12やI/O(入出力部13)を監視している場合には、所定の検証タイミングが到来したときに検証領域特定部17が動作する。
検証領域特定部17の動作に伴って、検証部18は、第1の呼び出し元(レジスタ部31)と第2の呼び出し元(レジスタ情報記憶部32)とを比較することで検証領域特定部17に係る呼び出し命令の改竄の有無を検証する。
続いて、本実施形態に係る情報処理装置30の動作について図16を参照しながら説明する。図16は、本実施形態に係る情報処理装置30の検証処理を示すフローチャートである。この処理は、図12に示した処理が完了しているときに、検証領域特定部17及び検証部18としてのCPU101によって実行される。
先ず、検証領域特定部17は、呼び出しの有無を判定する(ステップS501)。ここで、検証領域特定部17は、呼び出し有りと判定した場合には(ステップS501:YES)、呼び出し元の情報を取得するとともに、ノーマル空間33側のレジスタ部31に呼び出し元の情報を登録し(ステップS502)、ステップS503の処理へ移る。これに対し、検証領域特定部17は、呼び出し無しと判定した場合には(ステップS501:NO)、ステップS501の処理を繰り返す。
ステップS503において、検証部18は、ノーマル空間33側のレジスタ部31に登録された第1の呼び出し元とセキュア空間34側のレジスタ情報記憶部32に予め記憶された第2の呼び出し元とを比較する。
次に、検証部18は、呼び出し元が一致するか否かを判定する(ステップS504)。ここで、検証部18が、呼び出し元が一致すると判定した場合には(ステップS504:YES)、検証領域特定部17による検証領域の特定処理及び検証部18による検証処理を実行し(ステップS505)、処理を終了する。ステップS505の処理は、第1の実施形態で説明した図8の処理と同様である。これに対し、検証部18が、呼び出し元が一致しないと判定した場合には(ステップS504:NO)、呼び出し命令の改竄検知情報を出力し(ステップS506)、処理を終了する。
このように、本実施形態に係る情報処理装置30によれば、真正な呼び出し時と実際の呼び出し時における呼び出し元を比較することにより、呼出し命令の改竄を検出できる。
[第4の実施形態]
以下、本実施形態に係る情報処理装置40について説明する。図17は、本実施形態に係る情報処理装置40の機能を示すブロック図である。
図17に示すように、情報処理装置40は、プログラムの部分ごとに予め算出された第1の固有値を記憶する記憶部41と、部分について第2の固有値を新たに算出し、第1の固有値と第2の固有値とを比較することで、部分における改竄の有無を検証する検証部42とを備える。
このように、本実施形態に係る情報処理装置40によれば、プログラムの真正性の検証時間を短縮できる。
[変形実施形態]
以上、実施形態を参照して本発明を説明したが、本発明は上述の実施形態に限定されるものではない。本願発明の構成及び詳細には本発明の要旨を逸脱しない範囲で、当業者が理解し得る様々な変形をすることができる。例えば、いずれかの実施形態の一部の構成を、他の実施形態に追加した実施形態、あるいは他の実施形態の一部の構成と置換した実施形態も本発明を適用し得る実施形態であると理解されるべきである。
また、上述の第2の実施形態では、I/Oの識別子、メッセージ及び引数の組み合わせに対してハッシュ値及びメモリ番地を対応付けた検証情報について説明したが、他の組み合わせに対してハッシュ値及びメモリ番地を対応付けてもよい。例えば、検証情報記憶部15は、呼び出し元とプログラムの部分の呼び出し時に入力される引数との組み合わせに第1の固有値を対応付けた検証情報を記憶してもよい。そして、検証領域特定部17は、呼び出し元と引数との組み合わせに基づいて検証領域とする部分を特定する構成としてもよい。
また、検証情報記憶部15は、呼び出し元と時刻変数の値との組み合わせに第1の固有値を対応付けた検証情報を記憶してもよい。そして、検証領域特定部17は、プログラムの部分が実行する処理の経過時間が時刻変数の値に達したときに検証領域とする部分を切り替える構成としてもよい。この場合、時間の経過によって次の制御に移るタイミングで検証処理を実行することができる。
また、上述の各実施形態では、情報処理装置が登録部16を備える構成について説明した。しかし、登録部16に関する処理は、他の情報処理装置において実行してもよい。図18は、変形実施形態に係る情報処理装置50の機能を示すブロック図である。図18に示すように、情報処理装置50は、他の情報処理装置60に接続されている。他の情報処理装置60は、上述の各実施形態における制御部11、通信部14、及び登録部16にそれぞれ相当する制御部61、通信部62及び登録部63を備えている。登録部63は、情報処理装置50側のプログラム記憶部12に記憶されているプログラムを解析し、プログラムを構成する部分の間における呼び出し関係を抽出する。また、登録部63は、呼び出し元に関係するすべての部分のメモリ番地を取得する。そして、登録部63は、当該メモリ番地に記憶されているプログラムの部分の実体(例えばソースコードやバイナリデータ)から例えばハッシュ値等の固有値を算出するとともに、呼び出し元、ハッシュ値、及びメモリ番地を対応付けた参照テーブルを作成し、情報処理装置50側の検証情報記憶部15に登録する。登録部63の具体的な処理方法は、上述の図7及び図12と同様である。
一般的なIoT機器では、バイナリコードだけが記憶領域(メモリ102や記憶装置103)に記録される場合が多い。しかし、登録部63の処理は、ソースコードを利用するものであり、装置はソースコードをコンパイルできる計算能力を必要とする。従って、変形実施形態によれば、十分な計算能力を有する外部機器(他の情報処理装置60)側で登録部63の処理を実行する構成であるため、より多くのIoT機器に本発明を適用できる利点がある。
また、上述の各実施形態の機能を実現するように該実施形態の構成を動作させるプログラムを記録媒体に記録させ、該記録媒体に記録されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も各実施形態の範疇に含まれる。すなわち、コンピュータ読取可能な記録媒体も各実施形態の範囲に含まれる。また、上述のコンピュータプログラムが記録された記録媒体はもちろん、そのコンピュータプログラム自体も各実施形態に含まれる。
該記録媒体としては、例えばフロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM(Compact Disc-Read Only Memory)、磁気テープ、不揮発性メモリカード、ROMを用いることができる。また該記録媒体に記録されたプログラム単体で処理を実行しているものに限らず、他のソフトウェア、拡張ボードの機能と共同して、OS(Operating System)上で動作して処理を実行するものも各実施形態の範疇に含まれる。
上述の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
プログラムの部分ごとに予め算出された第1の固有値を記憶する記憶部と、
前記部分について第2の固有値を新たに算出し、前記第1の固有値と前記第2の固有値とを比較することで、前記部分における改竄の有無を検証する検証部とを備えることを特徴とする情報処理装置。
(付記2)
前記記憶部は、前記プログラムの前記部分ごとに、前記部分の呼び出し元、前記プログラムの記憶領域内における前記部分のメモリ番地、及び前記第1の固有値を対応付けて記憶し、かつ、
前記呼び出し元に基づいて前記検証部が検証する前記部分を特定する特定部をさらに備えることを特徴とする付記1に記載の情報処理装置。
(付記3)
前記特定部は、前記呼び出し元との間で直接的及び間接的に呼び出し関係にある前記部分を特定することを特徴とする付記2に記載の情報処理装置。
(付記4)
前記呼び出し元は、I/O、前記I/Oを用いるAPI及び前記APIの機能を実現する関数を含み、
前記I/Oは前記API、前記APIは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すことを特徴とする付記2又は3に記載の情報処理装置。
(付記5)
前記記憶部は、前記I/Oの識別子と前記I/Oからの呼び出し時に入力されるメッセージとの組み合わせに前記APIの識別子を対応付けて記憶し、
前記特定部は、前記I/Oの識別子と前記メッセージとの組み合わせに基づいて前記記憶部を参照し、前記部分を特定することを特徴とする付記4に記載の情報処理装置。
(付記6)
前記特定部を呼び出した第1の呼び出し元を記憶するレジスタ部と、
前記特定部を正しく呼び出す第2の呼び出し元を予め記憶するレジスタ情報記憶部と、
前記レジスタ部が配置されるノーマル空間と、
前記レジスタ情報記憶部、前記記憶部、前記特定部及び前記検証部が配置されるとともに、前記ノーマル空間側からのアクセスが制限されたセキュア空間とをさらに備え、
前記検証部は、前記第1の呼び出し元と前記第2の呼び出し元とを比較することで前記特定部に係る呼び出し命令の改竄の有無を検証することを特徴とする付記2乃至5のいずれかに記載の情報処理装置。
(付記7)
前記記憶部は、前記呼び出し元と時刻変数の値との組み合わせに前記第1の固有値を対応付けて記憶し、
前記特定部は、前記部分が実行する処理の経過時間が前記時刻変数の値に達したときに、前記検証部が検証する前記部分を切り替えることを特徴とする付記2乃至6のいずれかに記載の情報処理装置。
(付記8)
前記記憶部は、前記呼び出し元と前記部分の呼び出し時に入力される引数との組み合わせに前記第1の固有値を対応付けて記憶し、
前記特定部は、前記呼び出し元と前記引数との組み合わせに基づいて前記記憶部を参照し、前記検証部が検証する前記部分を特定することを特徴とする付記2乃至6のいずれかに記載の情報処理装置。
(付記9)
プログラムの部分ごとに予め算出された第1の固有値を記憶領域に記憶するステップと、
前記部分について第2の固有値を新たに算出するとともに、前記第1の固有値と前記第2の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを備えることを特徴とする情報処理方法。
(付記10)
コンピュータに、
プログラムの部分ごとに予め算出された第1の固有値を記憶領域に記憶するステップと、
前記部分について第2の固有値を新たに算出するとともに、前記第1の固有値と前記第2の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを実行させるプログラムが記録された記録媒体。
この出願は、2018年2月2日に出願された日本出願特願2018-017006を基礎とする優先権を主張し、その開示の全てをここに取り込む。
10,30,40,50,60・・・情報処理装置
11・・・制御部
12・・・プログラム記憶部
13・・・入出力部
14・・・通信部
15・・・検証情報記憶部(記憶部)
16・・・登録部
17・・・検証領域特定部(特定部)
18・・・検証部
31・・・レジスタ部
32・・・レジスタ情報記憶部
33・・・ノーマル空間
34・・・セキュア空間
41・・・記憶部
42・・・検証部
61・・・制御部
62・・・通信部
63・・・登録部
101・・・CPU
102・・・メモリ
103・・・記憶装置
104・・・通信インタフェース
105・・・入力装置
106・・・出力装置

Claims (9)

  1. プログラムの複数の部分のそれぞれについて、前記部分ごとに予め算出された第1の固有値、前記部分の呼び出し元の識別子、前記プログラムの記憶領域内における前記部分のメモリ番地を対応付けて記憶する記憶部と、
    前記呼び出し元の識別子に基づいて、前記記憶領域に記憶されている前記プログラムの複数の前記部分の中から検証対象を特定する特定部と、
    前記検証対象について第2の固有値を新たに算出し、前記第1の固有値と前記第2の固有値とを比較することで、前記検証対象における改竄の有無を検証する検証部とを備え
    前記呼び出し元は、I/O、前記I/Oを用いるAPI及び前記APIの機能を実現する関数を含み、
    前記I/Oは前記API、前記APIは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すことを特徴とする情報処理装置。
  2. 前記第1の固有値は、前記プログラムの複数の前記部分のそれぞれのソースコード又はバイナリデータからハッシュ値又は誤り訂正符号の値を算出して前記第1の固有値として前記記憶部に登録する登録部を更に備え、
    前記検証部は、前記検証対象の前記ソースコード又は前記バイナリデータから前記ハッシュ値又は前記誤り訂正符号の値を前記第2の固有値として算出することを特徴とする請求項1に記載の情報処理装置。
  3. 前記特定部は、前記呼び出し元との間で直接的又は間接的に呼び出し関係にある前記部分を前記検証対象として特定することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記記憶部は、前記I/Oの識別子と前記I/Oからの呼び出し時に入力されるメッセージとの組み合わせに前記APIの識別子を対応付けて記憶し、
    前記特定部は、前記I/Oの識別子と前記メッセージとの組み合わせに基づいて前記記憶部を参照し、前記検証対象を特定することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記特定部を呼び出した第1の呼び出し元を記憶するレジスタ部と、
    前記特定部を正しく呼び出す第2の呼び出し元を予め記憶するレジスタ情報記憶部と、
    前記レジスタ部が配置されるノーマル空間と、
    前記レジスタ情報記憶部、前記記憶部、前記特定部及び前記検証部が配置されるとともに、前記ノーマル空間側からのアクセスが制限されたセキュア空間とをさらに備え、
    前記検証部は、前記第1の呼び出し元と前記第2の呼び出し元とを比較することで前記特定部に係る呼び出し命令の改竄の有無を検証することを特徴とする請求項乃至のいずれか一項に記載の情報処理装置。
  6. 前記記憶部は、前記呼び出し元と時刻変数の値との組み合わせに前記第1の固有値を対応付けて記憶し、
    前記特定部は、前記部分が実行する処理の経過時間が前記時刻変数の値に達したときに、前記検証部が検証する前記検証対象を切り替えることを特徴とする請求項乃至のいずれか一項に記載の情報処理装置。
  7. 前記記憶部は、前記呼び出し元と前記部分の呼び出し時に入力される引数との組み合わせに前記第1の固有値を対応付けて記憶し、
    前記特定部は、前記呼び出し元と前記引数との組み合わせに基づいて前記記憶部を参照し、前記検証部が検証する前記検証対象を特定することを特徴とする請求項乃至のいずれか一項に記載の情報処理装置。
  8. プログラムの複数の部分のそれぞれについて、前記部分ごとに予め算出された第1の固有値、前記部分の呼び出し元の識別子、前記プログラムの記憶領域内における前記部分のメモリ番地を対応付けて記憶するステップと、
    前記呼び出し元の識別子に基づいて、前記記憶領域に記憶されている前記プログラムの複数の前記部分の中から検証対象を特定するステップと、
    前記検証対象について第2の固有値を新たに算出するとともに、前記第1の固有値と前記第2の固有値とを比較することで、前記検証対象における改竄の有無を検証するステップとを備え
    前記呼び出し元は、I/O、前記I/Oを用いるAPI及び前記APIの機能を実現する関数を含み、
    前記I/Oは前記API、前記APIは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すことを特徴とする情報処理方法。
  9. コンピュータに、
    プログラムの複数の部分のそれぞれについて、前記部分ごとに予め算出された第1の固有値、前記部分の呼び出し元の識別子、前記プログラムの記憶領域内における前記部分のメモリ番地を対応付けて記憶するステップと、
    前記呼び出し元の識別子に基づいて、前記記憶領域に記憶されている前記プログラムの複数の前記部分の中から検証対象を特定するステップと、
    前記検証対象について第2の固有値を新たに算出するとともに、前記第1の固有値と前記第2の固有値とを比較することで、前記検証対象における改竄の有無を検証するステップとを実行させ
    前記呼び出し元は、I/O、前記I/Oを用いるAPI及び前記APIの機能を実現する関数を含み、
    前記I/Oは前記API、前記APIは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すプログラム。
JP2019569013A 2018-02-02 2019-01-21 情報処理装置、情報処理方法及びプログラム Active JP7074146B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018017006 2018-02-02
JP2018017006 2018-02-02
PCT/JP2019/001641 WO2019151013A1 (ja) 2018-02-02 2019-01-21 情報処理装置、情報処理方法及び記録媒体

Publications (2)

Publication Number Publication Date
JPWO2019151013A1 JPWO2019151013A1 (ja) 2021-01-07
JP7074146B2 true JP7074146B2 (ja) 2022-05-24

Family

ID=67478972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019569013A Active JP7074146B2 (ja) 2018-02-02 2019-01-21 情報処理装置、情報処理方法及びプログラム

Country Status (4)

Country Link
US (1) US11449617B2 (ja)
EP (1) EP3748528A4 (ja)
JP (1) JP7074146B2 (ja)
WO (1) WO2019151013A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7283552B2 (ja) * 2019-09-27 2023-05-30 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム
US20210216667A1 (en) * 2020-01-10 2021-07-15 Acronis International Gmbh Systems and methods for protecting against unauthorized memory dump modification
JP7354074B2 (ja) 2020-09-18 2023-10-02 株式会社東芝 情報処理装置、情報処理方法およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139342A1 (en) 2003-01-14 2004-07-15 International Business Machines Corporation Method and apparatus for protecting external call references
WO2011142095A1 (ja) 2010-05-13 2011-11-17 パナソニック株式会社 情報処理装置および情報処理方法
JP2015084006A (ja) 2012-02-13 2015-04-30 三菱電機株式会社 動的リンクライブラリ保護方法、動的リンクライブラリ認証方法、動的リンクライブラリ保護装置、動的リンクライブラリ認証装置、プログラム管理システム、プログラムおよび動的リンクライブラリ保護方法、プログラムおよび動的リンクライブラリ認証方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003333038A (ja) 2002-05-15 2003-11-21 Sogo Keibi Hosho Co Ltd 電子検証装置、電子検証方法およびその方法をコンピュータに実行させるプログラム
US7103779B2 (en) 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
US8006100B2 (en) * 2004-06-10 2011-08-23 Oracle America, Inc. Enhancing trusted platform module performance
US7953980B2 (en) 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
JP2009009372A (ja) 2007-06-28 2009-01-15 Panasonic Corp 情報端末、クライアントサーバシステムおよびプログラム
JP5034921B2 (ja) * 2007-12-14 2012-09-26 ソニー株式会社 情報処理装置、ディスク、および情報処理方法、並びにプログラム
JP2010009269A (ja) 2008-06-26 2010-01-14 Iwate Univ コンピュータウィルス検出装置、コンピュータウィルス検出方法及びコンピュータウィルス検出プログラム
JP2010009442A (ja) 2008-06-30 2010-01-14 Fujitsu Ltd ディスクアレイシステム、ディスク制御装置及びその再構築処理方法
JP2012078953A (ja) * 2010-09-30 2012-04-19 Kyocera Mita Corp 改ざん検知装置及び改ざん検知方法
US9940455B2 (en) * 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
EP3299986A4 (en) * 2015-05-20 2018-05-16 Fujitsu Limited Program verification method, verification program, and information processing device
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US10503931B2 (en) * 2016-05-09 2019-12-10 Arris Enterprises Llc Method and apparatus for dynamic executable verification
JP2018017006A (ja) 2016-07-27 2018-02-01 株式会社Lixil 設備ユニットおよび住居構造

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139342A1 (en) 2003-01-14 2004-07-15 International Business Machines Corporation Method and apparatus for protecting external call references
WO2011142095A1 (ja) 2010-05-13 2011-11-17 パナソニック株式会社 情報処理装置および情報処理方法
JP2015084006A (ja) 2012-02-13 2015-04-30 三菱電機株式会社 動的リンクライブラリ保護方法、動的リンクライブラリ認証方法、動的リンクライブラリ保護装置、動的リンクライブラリ認証装置、プログラム管理システム、プログラムおよび動的リンクライブラリ保護方法、プログラムおよび動的リンクライブラリ認証方法

Also Published As

Publication number Publication date
EP3748528A1 (en) 2020-12-09
JPWO2019151013A1 (ja) 2021-01-07
EP3748528A4 (en) 2020-12-09
US20210034758A1 (en) 2021-02-04
WO2019151013A1 (ja) 2019-08-08
US11449617B2 (en) 2022-09-20

Similar Documents

Publication Publication Date Title
JP7074146B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP4651947B2 (ja) 時間および重みに基づく柔軟で耐性のあるハードウエアidを提供するシステムおよび方法
KR102693699B1 (ko) 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치
CN109271789B (zh) 恶意进程检测方法、装置、电子设备及存储介质
JP6435834B2 (ja) 命令実行制御装置、命令実行制御方法
JP2018109909A (ja) 類似度判定プログラム、類似度判定方法および情報処理装置
JP2010152749A (ja) 資源配付システム
TWI604336B (zh) 使用外部裝置之運行時驗證技術
US8732843B2 (en) Software validity period changing apparatus, method, and installation package
JP2019003629A (ja) チートアプリケーション識別方法およびシステム
JP2004280801A (ja) プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
KR102713970B1 (ko) 어플리케이션을 관리하는 방법 및 그 장치
WO2015044993A1 (ja) プロセッサ、処理装置、プログラム作成方法
JP6018344B2 (ja) 動的読み込みコード解析装置、動的読み込みコード解析方法及び動的読み込みコード解析プログラム
JP2011145945A (ja) マルウェア検出装置及びマルウェア検出方法
US9953157B2 (en) Method and apparatus for protecting application program
TW200805147A (en) Securised microprocessor with jump verification
US11281778B2 (en) Device and method for verifying application
US10331381B2 (en) Method and device for recording memory access operation information
JP6818568B2 (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム
JP2008140124A (ja) データ処理装置
JP6827244B1 (ja) 監査装置、監査方法、監査プログラムおよび監査システム
JP2006106939A (ja) 侵入検知方法及び侵入検知装置並びにプログラム
KR102556413B1 (ko) 세마포어를 이용한 가상화 머신 관리 방법 및 이를 위한 장치
US20240004658A1 (en) Instruction simulation device and method thereof

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200709

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211119

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220425

R151 Written notification of patent or utility model registration

Ref document number: 7074146

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151