WO2021059475A1 - ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体 - Google Patents

ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体 Download PDF

Info

Publication number
WO2021059475A1
WO2021059475A1 PCT/JP2019/038125 JP2019038125W WO2021059475A1 WO 2021059475 A1 WO2021059475 A1 WO 2021059475A1 JP 2019038125 W JP2019038125 W JP 2019038125W WO 2021059475 A1 WO2021059475 A1 WO 2021059475A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
white list
verification data
address value
stored
Prior art date
Application number
PCT/JP2019/038125
Other languages
English (en)
French (fr)
Inventor
貴之 佐々木
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2021548112A priority Critical patent/JP7283551B2/ja
Priority to PCT/JP2019/038125 priority patent/WO2021059475A1/ja
Priority to US17/761,654 priority patent/US20220327203A1/en
Publication of WO2021059475A1 publication Critical patent/WO2021059475A1/ja

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • 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
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Definitions

  • the present disclosure relates to a white list generator, a white list generation method, and a non-temporary computer-readable medium in which a program is recorded.
  • Patent Document 1 discloses an information terminal that verifies the presence or absence of falsification for each program based on a hash value registered in advance in the white list.
  • the related technology does not disclose or suggest the creation of a whitelist of programs constructed by statically or dynamically linking libraries. Therefore, in the related technology, there is a problem that it is not possible to verify whether or not the program constructed by statically or dynamically linking the library has been tampered with.
  • the purpose of this disclosure is to solve such problems. That is, it provides a white list generator, a white list generation method, and a non-temporary computer-readable medium in which a program is recorded, which can create a white list corresponding to a program constructed by linking libraries. That is.
  • the white list generator includes a first white list in which the first verification data corresponding to the first program is listed, and a second program stored in a library linked to the first program.
  • a merging means is provided for merging the second white list in which the corresponding second verification data is listed with the second white list in which the corresponding second verification data is listed to generate a third white list in which the third verification data is listed.
  • the white list generation method includes a first white list in which the first verification data corresponding to the first program is listed, and a second program stored in a library linked to the first program.
  • the second verification data corresponding to is merged with the listed second white list to generate a third white list in which the third verification data is listed.
  • the non-temporary computer-readable medium according to the present disclosure is stored in the first white list in which the first verification data corresponding to the first program is listed and in the library to which the first program is linked.
  • the computer is subjected to a merge process of merging the second whitelist in which the second verification data corresponding to the second program is listed and the third whitelist in which the third verification data is listed.
  • the program to be executed is recorded.
  • a whitelist generator, a whitelist generation method, and a non-transitory computer-readable program in which a program is recorded can be created to create a whitelist corresponding to a program constructed by linking libraries.
  • a medium can be provided.
  • FIG. It is a block diagram which shows the white list generation apparatus which concerns on Embodiment 1.
  • FIG. It is a block diagram which shows the structural example of the white list generation apparatus which concerns on Embodiment 2.
  • FIG. It is a flowchart which shows the white list generation method by the white list generation apparatus shown in FIG.
  • It is a figure which shows an example of the white list of the library before and after the update by the update means provided in the white list generation apparatus shown in FIG.
  • It is a block diagram which shows the configuration example of the information processing apparatus which checks the tampering of a program using the white list generated by the white list generator shown in FIG.
  • FIG. It is a block diagram which shows the structural example of the information processing apparatus which mounted on the white list generation apparatus which concerns on Embodiment 3.
  • FIG. It is a flowchart which shows the white list generation method by the white list generation apparatus provided in the information processing apparatus shown in FIG. It is a figure for demonstrating the link method of a control flow graph.
  • the components are not necessarily essential unless otherwise specified or when it is clearly considered to be essential in principle.
  • the shape when referring to the shape, positional relationship, etc. of a component or the like, the shape is substantially the same unless otherwise specified or when it is considered that it is not apparent in principle. Etc., etc. shall be included. This also applies to the above numbers (including the number, numerical value, quantity, range, etc.).
  • FIG. 1 is a block diagram showing an outline of the white list generation device 1 according to the first embodiment.
  • the white list generator 1 includes a merging means 11.
  • the merging means 11 merges the white lists 101 and 102 of the program body executed in the information processing device (not shown) and the library statically or dynamically linked to the program body, and merges them.
  • the later white list 103 is generated.
  • the library white list 102 is provided from the outside together with the library.
  • the white list 101 of the program body lists the verification data H1 used for checking the tampering of the program body.
  • the white list 102 of the library lists the verification data H2 used for tampering check of the program stored in the library (that is, the program linked to the program body). Then, in the white list 103 after merging, the verification data H3 obtained by merging the verification data H1 and H2 is listed.
  • the merged white list 103 is input to an information processing device (not shown).
  • An information processing device is a device that executes a program constructed by linking a program body and a library.
  • the program is executed by comparing the verification data H4 newly generated from the program with the verification data H3 (expected value) listed in the white list 103. Verify whether or not the data has been tampered with.
  • the white list generator 1 can generate the white list 103 corresponding to the program constructed by statically or dynamically linking the libraries.
  • the information processing device that executes the program constructed by statically or dynamically linking the libraries verifies whether or not the program has been tampered with using the white list 103 generated by the white list generator 1. Will be possible.
  • FIG. 2 is a block diagram showing a specific configuration example of the white list generator 1 as the white list generator 1a. Further, FIG. 3 is a flowchart showing a white list generation method by the white list generation device 1a.
  • the white list generation device 1a includes a merging means 11, an updating means 12, and a white list generating means (WL generating means) 13.
  • the white list generation means 13 generates the white list 101 of the program body from the result of compiling and linking the source code 201 and the library 202 of the program body using the compiler & linker 203.
  • the verification data H1 listed in the white list 101 of the program body is, for example, a combination of an address value that specifies a storage area of a memory in which each part of the program body is stored and a hash value thereof. That is.
  • the verification data H2 listed in the white list 102 of the library 202 is, for example, an address value that specifies an area in which each part of the program stored in the library 202 is stored, and a hash value thereof. It is a combination.
  • the update means 12 updates the address value listed in the white list 102 of the library 202 based on the address value of the memory in which the program of the library 202 is stored by linking with the program main body.
  • FIG. 4 is a diagram showing an example of the white list 102 of the library 202 before and after the update by the update means 12.
  • the start address value of the program A is "0x0000", the end address value is "0x0800", and the hash value of the program A is "0x1234". ..
  • the start address value of the program B following the program A is "0x1000", the end address value is "0x2000”, and the hash value of the program B is "0xaabb”.
  • the start address value of the program C following the programs A and B is "0x3000", the end address value is "0x4000”, and the hash value of the program C is "0xcddd".
  • the update means 12 acquires information on the address value of the memory in which the program of the library 202 is stored by linking with the program main body (step S101 in FIG. 3). After that, the update means 12 updates the address values listed in the white list 102 of the library 202 based on the acquired address values (step S102 in FIG. 3).
  • the update means 12 rewrites the start address value of the program A from “0x0000” to "0x1000".
  • the end address value of the program A is rewritten from "0x0800” to "0x1800”.
  • the start address value of the program B following the program A is rewritten from "0x1000” to "0x2000”
  • the end address value is rewritten from "0x2000” to "0x3000”.
  • the operation of the update means 12 is described on the assumption that the entire library is stored in a specific position of the program body. If the library is stored in a different location for each program, the white list may be updated for each location. For example, in the example of FIG. 4, 0x1000 was uniformly added, but the embedded positions of the programs A, B, and C were specified, and the start addresses of the programs A, B, and C were based on the positions. And the end address may be updated.
  • the merge means 11 adds the information of the white list 102 of the library 202 updated by the update means 12 to the white list 101 of the program body generated by the white list generation means 13 (step S103 in FIG. 3). As a result, the merged white list 103 is generated.
  • FIG. 5 is a block diagram showing a configuration example of an information processing device 2 that checks for tampering with a program using the white list 103 generated by the white list generator 1a.
  • An information processing system is configured by the white list generation device 1a and the information processing device 2.
  • the information processing apparatus 2 includes a memory 21, an arithmetic processing means 22, a white list storage means (WL storage means) 23, and a verification means 24.
  • the program compiled and linked by the compiler & linker 203 is stored in the memory 21.
  • the arithmetic processing means 22 executes a program stored in the memory 21.
  • the white list 103 generated by the white list generator 1a is stored in the white list storage means 23.
  • the verification means 24 verifies whether or not the program stored in the memory 21 has been tampered with before being executed by the arithmetic processing means 22. First, the verification means 24 newly calculates the hash value of each part of the program stored in the memory 21. After that, the verification means 24 compares the calculated hash value of each part of the program with the hash value (expected value) corresponding to each part of the program listed in the white list 103 to obtain the program. Verify for tampering.
  • the verification area can be limited and the time required for the verification process can be shortened.
  • the information processing device is mounted on the IoT device, the CPU speed, the memory size, and the like are limited. Therefore, it is particularly effective to limit the verification area and shorten the time required for the verification process.
  • the white list generator 1a can generate the white list 103 corresponding to the program constructed by statically linking the libraries.
  • the information processing device 2 that executes the program constructed by statically linking the libraries can verify whether or not the program has been tampered with by using the white list 103 generated by the white list generator 1a. It will be possible.
  • FIG. 6 is a block diagram showing a configuration example of an information processing device 3 equipped with a white list generator 1b, which is a specific example of the white list generator 1. Further, FIG. 7 is a flowchart showing a white list generation method by the white list generation device 1b.
  • the information processing device 3 includes a white list generation device 1b, a memory 34, an arithmetic processing means 35, a white list storage means (WL storage means) 36, and a verification means 37.
  • the white list generation device 1b includes a merging means 31, an updating means 32, and a monitoring means 33.
  • the program main body 301 is stored in the memory 34.
  • a program stored in the library 202 is specified as a read-destination program.
  • the arithmetic processing means 35 executes the program main body 301 (and the program in the dynamically linked library 202) stored in the memory 34.
  • the monitoring means 33 monitors the call of the program in the library 202 by the program main body 301.
  • the update means 32 acquires information on the address value of the memory 34 in which the called library 202 program is stored. (Step S201 in FIG. 7). After that, the update means 32 updates the address values listed in the white list 102 of the library 202 based on the acquired address values (step S202 in FIG. 7). Since the details of the updating means 32 are the same as those of the updating means 12, the description thereof will be omitted.
  • the merging means 31 adds the information of the white list 102 of the library 202 updated by the updating means 32 to the white list 302 of the program main body 301 created in advance (step S203 of FIG. 7). As a result, the merged white list 403 (not shown) is generated.
  • the white list 403 is stored in the white list storage means 36.
  • the verification means 37 verifies whether or not the program stored in the memory 21 has been tampered with before being executed by the arithmetic processing means 22. First, the verification means 37 calculates the hash value of each part of the program stored in the memory 34. After that, the verification means 37 compares the calculated hash value of each part of the program with the hash value (expected value) corresponding to each part of the program listed in the white list 403. Verify for tampering. Further, the timing for verifying the program may be while the program is being executed by the arithmetic processing means 22 or after the execution.
  • the white list generator 1b can generate the white list 403 corresponding to the program constructed by dynamically linking the libraries.
  • the information processing device 3 that executes the program constructed by dynamically linking the libraries can verify whether or not the program has been tampered with by using the white list 403 generated by the white list generator 1b. It will be possible.
  • an index value for example, an error correction code value that can be calculated from the substance of each part of the program and can confirm the presence or absence of falsification may be used.
  • control flow graph (CFG; Control Flow Graph) may be listed in the white list.
  • the white list 101 of the program main body stores a control flow graph G1 showing an execution order of a plurality of codes that can be taken when the program main body is executed.
  • the white list 102 of the library stores a control flow graph G2 showing an execution order of a plurality of codes that can be taken when executing a program stored in the library.
  • the merging means 11 associates the control flow graphs G1 and G2 with each other based on, for example, a program call instruction in the library described in the library body to generate the control flow graph G3 (see FIG. 8). Then, the merging means 11 outputs the white list 103 in which the control flow graph G3 is stored. Although only the merge based on the flow of calling the library is described in FIG. 8, the control flow graphs G1 and G2 may be linked based on the flow of returning from the library to the program body.
  • the information processing device 2 includes a control flow graph G4 newly calculated before the execution of the program by the arithmetic processing means, a control flow graph G3 stored in the white list 103 generated by the white list generation device 1a, and the control flow graph G3. To compare. As a result, the presence or absence of tampering with the program (including tampering with the program itself and tampering with the execution order of the program) is verified.
  • the function that realizes the operation of the white list generator may be configured and operated by a plurality of devices connected by a network.
  • the present disclosure has been described as a hardware configuration, but the present disclosure is not limited to this.
  • the present disclosure can also be realized by causing a CPU (Central Processing Unit) to execute a computer program in all or part of the processing of the white list generator.
  • a CPU Central Processing Unit
  • the white list storage means 23 and the verification means 24 are configured to be executed in the same area as the program to be monitored by the hardware or the CPU, but are executed in an area isolated from the program. It may be configured as follows. With this configuration, it is possible to prevent the white list storage means 23 and the verification means 24 from being attacked through the attacked program. Specifically, the white list storage means 23 and the verification means 24 may be operated by a CPU or memory different from the CPU or memory in which the program is operated, or may be operated in the TEE provided by the CPU. .. TEE is an abbreviation for Trusted Execution Environment. A specific example of TEE is Secure World provided by TrustZone of ARM. Similarly, the merging means 31, the updating means 32, and the monitoring means may be operated in an isolated environment.
  • Non-transitory computer-readable media include various types of tangible storage media (tangible storage media).
  • Non-temporary computer-readable media include, for example, magnetic recording media, opto-magnetic recording media, CD-ROMs (Read Only Memory), CD-Rs, CD-R / Ws, and semiconductor memories.
  • the magnetic recording medium is, for example, a flexible disk, a magnetic tape, a hard disk drive, or the like.
  • the optical magnetic recording medium is, for example, an optical magnetic disk.
  • the semiconductor memory is, for example, a mask ROM, a PROM (Programmable ROM), an EPROM (Erasable PROM), a flash ROM, a RAM (Random Access Memory), or the like.
  • the program may also be supplied to the computer by various types of temporary computer-readable media. Examples of temporary computer-readable media include electrical, optical, and electromagnetic waves.
  • the temporary computer-readable medium can supply the program to the computer via a wired communication path such as an electric wire and an optical fiber, or a wireless communication path.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

一実施の形態によれば、ホワイトリスト生成装置(1)は、第1プログラムに対応する第1検証データがリストアップされた第1ホワイトリストと、第1プログラムのリンク先であるライブラリに格納された第2プログラム、に対応する第2検証データ、がリストアップされた第2ホワイトリストと、をマージして、第3検証データがリストアップされた第3ホワイトリストを生成するマージ手段(11)を備える。

Description

ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
 本開示は、ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体に関する。
 IoT(Internet of Things)機器には、改ざん検知機能等のセキュリティチェック機能の導入が望まれている。例えば、特許文献1には、ホワイトリストに予め登録しておいたハッシュ値に基づいてプログラム毎に改ざんの有無を検証する情報端末が開示されている。
 その他、セキュリティチェックに関する記載は、特許文献2及び特許文献3にも開示されている。
特開2009-9372号公報 特開2019-020872号公報 特開2015-084006号公報
 ところで、IoT機器等において実行されるプログラムは、外部から提供されるコンパイル済みのライブラリを静的又は動的にリンクさせることによって構築されることがほとんどである。
 しかしながら、関連技術には、ライブラリを静的又は動的にリンクさせることによって構築されたプログラムのホワイトリストの作成について開示も示唆もされていない。そのため、関連技術では、ライブラリを静的又は動的にリンクさせることによって構築されたプログラムの改ざんの有無を検証することができない、という課題があった。
 本開示の目的は、このような課題を解決するためになされたものである。即ち、ライブラリをリンクさせることで構築されたプログラムに対応するホワイトリストの作成が可能な、ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体を提供することである。
 本開示にかかるホワイトリスト生成装置は、第1プログラムに対応する第1検証データがリストアップされた第1ホワイトリストと、前記第1プログラムのリンク先であるライブラリに格納された第2プログラム、に対応する第2検証データ、がリストアップされた第2ホワイトリストと、をマージして、第3検証データがリストアップされた第3ホワイトリストを生成するマージ手段を備える。
 また、本開示にかかるホワイトリスト生成方法は、第1プログラムに対応する第1検証データがリストアップされた第1ホワイトリストと、前記第1プログラムのリンク先であるライブラリに格納された第2プログラム、に対応する第2検証データ、がリストアップされた第2ホワイトリストと、をマージして、第3検証データがリストアップされた第3ホワイトリストを生成するマージステップを備える。
 また、本開示にかかる非一時的なコンピュータ可読媒体は、第1プログラムに対応する第1検証データがリストアップされた第1ホワイトリストと、前記第1プログラムのリンク先であるライブラリに格納された第2プログラム、に対応する第2検証データ、がリストアップされた第2ホワイトリストと、をマージして、第3検証データがリストアップされた第3ホワイトリストを生成するマージ処理を、コンピュータに実行させるプログラムが記録される。
 本開示によれば、ライブラリをリンクさせることで構築されたプログラムに対応するホワイトリストの作成が可能な、ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体を提供することができる。
実施の形態1にかかるホワイトリスト生成装置を示すブロック図である。 実施の形態2にかかるホワイトリスト生成装置の構成例を示すブロック図である。 図2に示すホワイトリスト生成装置によるホワイトリスト生成方法を示すフローチャートである。 図2に示すホワイトリスト生成装置に設けられた更新手段による更新前後のライブラリのホワイトリストの一例を示す図である。 図2に示すホワイトリスト生成装置によって生成されたホワイトリストを用いてプログラムの改ざんチェックを行う情報処理装置の構成例を示すブロック図である。 実施の形態3にかかるホワイトリスト生成装置が搭載された情報処理装置の構成例を示すブロック図である。 図6に示す情報処理装置に設けられたホワイトリスト生成装置によるホワイソリスト生成方法を示すフローチャートである。 コントロールフローグラフのリンク方法を説明するための図である。
 以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
 以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。ただし、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
 さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
<実施の形態1>
 図1は、実施の形態1にかかるホワイトリスト生成装置1の概要を示すブロック図である。
 図1に示すように、ホワイトリスト生成装置1は、マージ手段11を備える。マージ手段11は、情報処理装置(不図示)において実行されるプログラム本体と、当該プログラム本体に静的又は動的にリンクされるライブラリと、のそれぞれのホワイトリスト101,102をマージして、マージ後のホワイトリスト103を生成する。なお、ライブラリのホワイトリスト102は、ライブラリとともに外部から提供されるものとする。
 プログラム本体のホワイトリスト101には、プログラム本体の改ざんチェックに用いられる検証データH1がリストアップされている。ライブラリのホワイトリスト102には、ライブラリに格納されたプログラム(即ち、プログラム本体にリンクされるプログラム)の改ざんチェックに用いられる検証データH2がリストアップされている。そして、マージ後のホワイトリスト103には、検証データH1,H2をマージした検証データH3がリストアップされている。
 マージ後のホワイトリスト103は、図示しない情報処理装置に入力される。情報処理装置は、プログラム本体とライブラリとをリンクさせることによって構築されたプログラムを実行する装置である。ここで、情報処理装置は、プログラムの実行に際し、当該プログラムから新たに生成された検証データH4と、ホワイトリスト103にリストアップされた検証データH3(期待値)と、を比較することによって、プログラムの改ざんの有無を検証する。
 このように、ホワイトリスト生成装置1は、ライブラリを静的又は動的にリンクさせることで構築されたプログラム、に対応するホワイトリスト103を生成することができる。それにより、ライブラリを静的又は動的にリンクさせることで構築されたプログラムを実行する情報処理装置は、ホワイトリスト生成装置1によって生成されたホワイトリスト103を用いてプログラムの改ざんの有無を検証することが可能になる。
<実施の形態2>
 本実施の形態では、プログラム本体とライブラリとの間で静的なリンク(所謂スタティックリンク)が行われる場合における、ホワイトリスト生成装置1によるホワイトリストの生成について説明する。
 図2は、ホワイトリスト生成装置1の具体的な構成例をホワイトリスト生成装置1aとして示すブロック図である。また、図3は、ホワイトリスト生成装置1aによるホワイトリスト生成方法を示すフローチャートである。
 図2に示すように、ホワイトリスト生成装置1aは、マージ手段11と、更新手段12と、ホワイトリスト生成手段(WL生成手段)13と、を備える。
 ホワイトリスト生成手段13は、プログラム本体のソースコード201及びライブラリ202をコンパイラ&リンカ203を用いてコンパイル及びリンクした結果から、プログラム本体のホワイトリスト101を生成する。
 ここで、プログラム本体のホワイトリスト101にリストアップされている検証データH1とは、例えばプログラム本体の各部分が格納されるメモリの記憶領域を指定するアドレス値、及び、そのハッシュ値、の組み合わせのことである。また、ライブラリ202のホワイトリスト102にリストアップされている検証データH2とは、例えば、ライブラリ202に格納されたプログラムの各部分が記憶される領域を指定するアドレス値、及び、そのハッシュ値、の組み合わせのことである。
 更新手段12は、プログラム本体とリンクすることによってライブラリ202のプログラムが格納されることになるメモリのアドレス値に基づいて、ライブラリ202のホワイトリスト102にリストアップされたアドレス値を更新する。
 図4は、更新手段12による更新前後のライブラリ202のホワイトリスト102の一例を示す図である。
 図4に示すように、更新前のライブラリ202のホワイトリスト102では、プログラムAの開始アドレス値が“0x0000”、終了アドレス値が“0x0800”、プログラムAのハッシュ値が“0x1234”となっている。また、プログラムAに続くプログラムBの開始アドレス値が“0x1000”、終了アドレス値が“0x2000”、プログラムBのハッシュ値が“0xaabb”となっている。さらに、プログラムA,Bに続くプログラムCの開始アドレス値が“0x3000”、終了アドレス値が“0x4000”、プログラムCのハッシュ値が“0xccdd”となっている。
 ここで、更新手段12は、プログラム本体とリンクすることによってライブラリ202のプログラムが格納されることになるメモリのアドレス値の情報を取得する(図3のステップS101)。その後、更新手段12は、取得したアドレス値に基づいて、ライブラリ202のホワイトリスト102にリストアップされたアドレス値を更新する(図3のステップS102)。
 例えば、ライブラリ202のプログラムが格納されるメモリの開始アドレス値が“0x1000”である場合、更新手段12は、プログラムAの開始アドレス値を“0x0000”から“0x1000”に書き換える。それに伴い、プログラムAの終了アドレス値を“0x0800”から“0x1800”に書き換える。また、プログラムAに続くプログラムBの開始アドレス値を“0x1000”から“0x2000”に書き換えるとともに、終了アドレス値を“0x2000”から“0x3000”に書き換える。さらに、プログラムA,Bに続くプログラムCの開始アドレス値を“0x3000”から“0x4000”に書き換えるとともに、終了アドレス値を“0x4000”から“0x5000”に書き換える。なお、プログラムA,B,Cのそれぞれのハッシュ値は更新前後で変わらない。
 上の例では、ライブラリ全体がプログラム本体の特定位置に格納されることを想定して、更新手段12の動作を記載した。ライブラリがプログラムごとに異なる位置に格納される場合は、その位置ごとにホワイトリストを更新してもよい。例えば、図4の例では、一律に0x1000を加えていたが、プログラムA、プログラムB、プログラムCそれぞれの組み込まれた位置を特定し、その位置に基づいてプログラムA、B、Cそれぞれの開始アドレスと終了アドレスを更新してもよい。
 マージ手段11は、ホワイトリスト生成手段13によって生成されたプログラム本体のホワイトリスト101に、更新手段12により更新されたライブラリ202のホワイトリスト102の情報を追加する(図3のステップS103)。それにより、マージ後のホワイトリスト103が生成される。
 図5は、ホワイトリスト生成装置1aによって生成されたホワイトリスト103を用いてプログラムの改ざんチェックを行う情報処理装置2の構成例を示すブロック図である。なお、ホワイトリスト生成装置1aと情報処理装置2とによって、情報処理システムが構成される。
 図5に示すように、情報処理装置2は、メモリ21と、演算処理手段22と、ホワイトリスト格納手段(WL格納手段)23と、検証手段24と、を備える。
 メモリ21には、コンパイラ&リンカ203によってコンパイル及びリンクされたプログラムが格納される。演算処理手段22は、メモリ21に格納されたプログラムを実行する。ホワイトリスト格納手段23には、ホワイトリスト生成装置1aによって生成されたホワイトリスト103が格納される。
 検証手段24は、メモリ21に格納されたプログラムが演算処理手段22によって実行される前に、当該プログラムの改ざんの有無を検証する。まず、検証手段24は、メモリ21に格納されたプログラムの各部分のハッシュ値を新たに算出する。その後、検証手段24は、算出されたプログラムの各部分のハッシュ値と、ホワイトリスト103にリストアップされたプログラムの各部分に対応するハッシュ値(期待値)と、を比較することにより、プログラムの改ざんの有無を検証する。
 例えば、メモリ21に格納されたプログラムの一部であるプログラムDに対応するハッシュ値が期待値と異なる場合、プログラムDが改ざんされていると判断する。ここで、本例では、プログラムの各部分にハッシュ値が割り当てられているため、検証領域を限定することができ、かつ、検証処理に要する時間を短縮することができる。情報処理装置がIoT機器に搭載されている場合、CPU速度やメモリサイズなどが限定されるため、検証領域の限定、及び、検証処理に要する時間の短縮は特に有効である。
 このように、ホワイトリスト生成装置1aは、ライブラリを静的にリンクさせることで構築されたプログラム、に対応するホワイトリスト103を生成することができる。それにより、ライブラリを静的にリンクさせることで構築されたプログラムを実行する情報処理装置2は、ホワイトリスト生成装置1aによって生成されたホワイトリスト103を用いてプログラムの改ざんの有無を検証することが可能になる。
<実施の形態3>
 本実施の形態では、プログラム本体とライブラリとの間で動的なリンク(所謂ダイナミックリンク)が行われる場合における、ホワイトリスト生成装置1によるホワイトリストの生成について説明する。
 図6は、ホワイトリスト生成装置1の具体例であるホワイトリスト生成装置1bが搭載された情報処理装置3の構成例を示すブロック図である。また、図7は、ホワイトリスト生成装置1bによるホワイトリスト生成方法を示すフローチャートである。
 図6に示すように、情報処理装置3は、ホワイトリスト生成装置1bと、メモリ34と、演算処理手段35と、ホワイトリスト格納手段(WL格納手段)36と、検証手段37と、を備える。ホワイトリスト生成装置1bは、マージ手段31と、更新手段32と、監視手段33と、を有する。
 メモリ34には、プログラム本体301が格納されている。なお、プログラム本体301には、読み出し先のプログラムとして、ライブラリ202に格納されたプログラムが指定されている。演算処理手段35は、メモリ34に格納されたプログラム本体301(及び動的にリンクされたライブラリ202内のプログラム)を実行する。
 監視手段33は、プログラム本体301によるライブラリ202内のプログラムの呼び出しを監視する。
 更新手段32は、プログラム本体301によってライブラリ202内のプログラムの呼び出しがあったことが検知されると、呼び出されたライブラリ202のプログラムが格納されることになるメモリ34のアドレス値の情報を取得する(図7のステップS201)。その後、更新手段32は、取得したアドレス値に基づいて、ライブラリ202のホワイトリスト102にリストアップされたアドレス値を更新する(図7のステップS202)。更新手段32の詳細については、更新手段12の場合と同様であるため、その説明を省略する。
 マージ手段31は、予め作成されたプログラム本体301のホワイトリスト302に、更新手段32によって更新されたライブラリ202のホワイトリスト102の情報を追加する(図7のステップS203)。それにより、マージ後のホワイトリスト403(不図示)が生成される。このホワイトリスト403は、ホワイトリスト格納手段36に格納される。
 検証手段37は、メモリ21に格納されたプログラムが演算処理手段22によって実行される前に、当該プログラムの改ざんの有無を検証する。まず、検証手段37は、メモリ34に格納されたプログラムの各部分のハッシュ値を算出する。その後、検証手段37は、算出されたプログラムの各部分のハッシュ値と、ホワイトリスト403にリストアップされたプログラムの各部分に対応するハッシュ値(期待値)と、を比較することにより、プログラムの改ざんの有無を検証する。また、プログラムを検証するタイミングは、プログラムが演算処理手段22によって実行されている間や、実行後でもよい。
 このように、ホワイトリスト生成装置1bは、ライブラリを動的にリンクさせることで構築されたプログラム、に対応するホワイトリスト403を生成することができる。それにより、ライブラリを動的にリンクさせることで構築されたプログラムを実行する情報処理装置3は、ホワイトリスト生成装置1bによって生成されたホワイトリスト403を用いてプログラムの改ざんの有無を検証することが可能になる。
<その他の実施形態>
 なお、上記実施の形態2,3では、ホワイトリストに、プログラムの各部分が格納されるメモリの記憶領域を指定するアドレス値、及び、そのハッシュ値、の組み合わせがリストアップされた場合を例に説明したが、それに限られない。
 例えば、ハッシュ値の代わりに、プログラムの各部分の実体から算出でき、かつ、改ざんの有無を確認できるような指標値(例えば誤り訂正符号の値)が用いられても良い。
 或いは、ホワイトリストには、コントロールフローグラフ(CFG;Control Flow Graph)がリストアップされていても良い。
 例えば、図2に示すホワイトリスト生成装置1aの場合、プログラム本体のホワイトリスト101には、プログラム本体を実行する際に取り得る複数のコードの実行順序を表すコントロールフローグラフG1が格納される。ライブラリのホワイトリスト102には、ライブラリに格納されたプログラムを実行する際に取り得る複数のコードの実行順序を表すコントロールフローグラフG2が格納される。
 マージ手段11は、例えば、ライブラリ本体に記載されたライブラリ内のプログラムの呼び出し命令に基づいて、コントロールフローグラフG1,G2を紐付け、コントロールフローグラフG3を生成する(図8参照)。そして、マージ手段11は、コントロールフローグラフG3が格納されたホワイトリスト103を出力する。なお、図8中ではライブラリ呼び出しのフローに基づいたマージしか記載していないが、ライブラリからプログラム本体への復帰のフローに基づいて、コントロールフローグラフG1,G2を紐づけてもよい。
 そして、情報処理装置2は、演算処理手段によるプログラムの実行前に新たに算出されたコントロールフローグラフG4と、ホワイトリスト生成装置1aによって生成されたホワイトリスト103に格納されたコントロールフローグラフG3と、を比較する。それにより、プログラムの改ざん(プログラム自体の改ざん、プログラムの実行順序の改ざんを含む)の有無が検証される。
 なお、ホワイトリストには、プログラムの各部分が格納されるメモリの記憶領域を指定するアドレス値、及び、そのハッシュ値、の組み合わせと、コントロールフローグラフと、が共にリストアップされていてもよい。それにより、より高精度にプログラムの改ざんの有無を検証することが可能になる。
 以上、図面を参照して、本開示の実施の形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、本開示の要旨を逸脱しない範囲内において様々な設計変更等が可能である。たとえば、ホワイトリスト生成装置の動作を実現する機能を、ネットワークで接続された複数の装置で構成しかつ動作するようにしてもよい。
 上述の実施の形態では、本開示をハードウェアの構成として説明したが、本開示は、これに限定されるものではない。本開示は、ホワイトリスト生成装置の全部又は一部の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。
 上述の実施の形態では、ホワイトリスト格納手段23と検証手段24は、ハードウェアやCPUの監視対象のプログラムと同じ領域で実行される構成を示したが、プログラムから隔離された領域で実行されるように構成してもよい。この構成により、攻撃されたプログラムを通じて、ホワイトリスト格納手段23と検証手段24が攻撃されることを防ぐことができる。具体的には、ホワイトリスト格納手段23と検証手段24を、プログラムが動作するCPUやメモリとは別のCPUやメモリで動作させる構成や、CPUが提供するTEEの中で動作させる構成としてもよい。なお、TEEはTrusted Execution Environmentの略である。TEEの具体例としてARMのTrustZoneが提供するSecure Worldが挙げられる。同様に、マージ手段31、更新手段32、監視手段を隔離環境で動作させてもよい。
 また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体は、例えば、磁気記録媒体、光磁気記録媒体、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリを含む。磁気記録媒体は、例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブなどである。光磁気記録媒体は、例えば光り磁気ディスクなどである。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)などである。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
 以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 1 ホワイトリスト生成装置
 1a ホワイトリスト生成装置
 1b ホワイトリスト生成装置
 2 情報処理装置
 3 情報処理装置
 11 マージ手段
 12 更新手段
 13 ホワイトリスト生成手段
 21 メモリ
 22 演算処理手段
 23 ホワイトリスト格納手段
 24 検証手段
 31 マージ手段
 32 更新手段
 33 監視手段
 34 メモリ
 35 演算処理手段
 36 ホワイトリスト格納手段
 37 検証手段
 101 プログラム本体のホワイトリスト
 102 ライブラリのホワイトリスト
 103 マージ後のホワイトリスト
 201 プログラム本体のソースコード
 202 ライブラリ
 203 コンパイラ&リンカ
 301 プログラム本体
 302 プログラム本体のホワイトリスト
 403 マージ後のホワイトリスト
 H1~H4 検証データ
 A~D プログラム
 G1~G4 コントロールフローグラフ

Claims (19)

  1.  第1プログラムに対応する第1検証データがリストアップされた第1ホワイトリストと、前記第1プログラムのリンク先であるライブラリに格納された第2プログラム、に対応する第2検証データ、がリストアップされた第2ホワイトリストと、をマージして、第3検証データがリストアップされた第3ホワイトリストを生成するマージ手段を備えた、
     ホワイトリスト生成装置。
  2.  前記第1検証データは、前記第1プログラムが格納されるメモリのアドレス値と、前記第1プログラムに対応する第1固有値と、によって構成され、
     前記第2検証データは、所定のアドレス値と、前記第2プログラムに対応する第2固有値と、によって構成され、
     前記ホワイトリスト生成装置は、
     前記第1プログラムとリンクすることによって前記第2プログラムが格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データのアドレス値を更新する更新手段をさらに備え、
     前記マージ手段は、前記第1ホワイトリストと、前記更新手段によって更新された前記第2ホワイトリストと、をマージして前記第3ホワイトリストを生成するように構成されている、
     請求項1に記載のホワイトリスト生成装置。
  3.  前記第1検証データは、前記第1プログラムの各部分が格納されるメモリのアドレス値と、前記第1プログラムの各部分に対応する第1固有値と、によって構成され、
     前記第2検証データは、前記第2プログラムの各部分に対応する所定のアドレス値と、前記第2プログラムの各部分に対応する第2固有値と、によって構成され、
     前記ホワイトリスト生成装置は、
     前記第1プログラムとリンクすることによって前記第2プログラムの各部分が格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データの各アドレス値を更新する更新手段をさらに備え、
     前記マージ手段は、前記第1ホワイトリストと、前記更新手段によって更新された前記第2ホワイトリストと、をマージして前記第3ホワイトリストを生成するように構成されている、
     請求項1に記載のホワイトリスト生成装置。
  4.  前記ライブラリに格納された前記第2プログラムをリンク対象とする前記第1プログラムから前記第1検証データを算出して前記第1ホワイトリストを生成する第1ホワイトリスト生成手段をさらに備えた、
     請求項1~3の何れか一項に記載のホワイトリスト生成装置。
  5.  請求項1~4の何れか一項に記載されたホワイトリスト生成装置と、
     前記ホワイトリスト生成装置によって生成された前記第3ホワイトリストが供給される情報処理装置と、
     を備え、
     前記情報処理装置は、
     前記ホワイトリスト生成装置から供給された前記第3ホワイトリストが格納されるホワイトリスト格納手段と、
     前記第1プログラム及び前記第1プログラムとリンクした前記第2プログラムが格納されるメモリと、
     前記第1プログラム及び前記第2プログラムを実行する演算処理手段と、
     前記第3ホワイトリストにリストアップされた前記第3検証データと、前記第1及び前記第2プログラムの実行に際して新たに算出された第4検証データと、を比較することにより、前記第1及び前記第2プログラムの改ざんの有無を検証する検証手段と、
     を備えた、情報処理システム。
  6.  請求項1に記載されたホワイトリスト生成装置と、
     前記ホワイトリスト生成装置によって生成された前記第3ホワイトリストが格納されるホワイトリスト格納手段と、
     前記第1プログラム及び前記第1プログラムとリンクした前記第2プログラムが格納されるメモリと、
     前記第1プログラム及び前記第2プログラムを実行する演算処理手段と、
     前記第3ホワイトリストにリストアップされた前記第3検証データと、前記第1及び前記第2プログラムの実行に際して新たに算出された第4検証データと、を比較することにより、前記第1及び前記第2プログラムの改ざんの有無を検証する検証手段と、
     を備えた、情報処理装置。
  7.  前記第1検証データは、前記第1プログラムが格納される前記メモリのアドレス値と、前記第1プログラムに対応する第1固有値と、によって構成され、
     前記第2検証データは、所定のアドレス値と、前記第2プログラムに対応する第2固有値と、によって構成され、
     前記ホワイトリスト生成装置は、
     前記第1プログラムとリンクすることによって前記第2プログラムが格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データのアドレス値を更新する更新手段をさらに備えた、
     請求項6に記載の情報処理装置。
  8.  前記第1検証データは、前記第1プログラムの各部分が格納される前記メモリのアドレス値と、前記第1プログラムの各部分に対応する第1固有値と、によって構成され、
     前記第2検証データは、前記第2プログラムの各部分に対応する所定のアドレス値と、前記第2プログラムの各部分に対応する第2固有値と、によって構成され、
     前記ホワイトリスト生成装置は、
     前記第1プログラムとリンクすることによって前記第2プログラムの各部分が格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データの各アドレス値を更新する更新手段をさらに備えた、
     請求項6に記載の情報処理装置。
  9.  前記ホワイトリスト生成装置は、
     前記第1プログラムによる前記第2プログラムの呼び出しを監視する監視手段をさらに備え、
     前記更新手段は、前記監視手段によって前記第1プログラムによる前記第2プログラムの呼び出しがあったことが検知されると、前記第1プログラムとリンクすることによって前記第2プログラムが格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データの各アドレス値を更新するように構成されている、
     請求項7又は8に記載の情報処理装置。
  10.  前記第1検証データは、前記第1プログラムの実行の際に取り得る複数のコードの実行順序を表す第1コントロールフローグラフであって、
     前記第2検証データは、前記第2プログラムの実行の際に取り得る複数のコードの実行順序を表す第2コントロールフローグラフであって、
     前記マージ手段は、前記第1プログラムにおける前記第2プログラムの呼び出し命令に基づいて、前記第1コントロールフローグラフと前記第2コントロールフローグラフとを紐付けることにより、前記第3ホワイトリストを生成するように構成されている、
     請求項1に記載のホワイトリスト生成装置。
  11.  請求項10に記載されたホワイトリスト生成装置と、
     前記ホワイトリスト生成装置によって生成された前記第3ホワイトリストが格納されるホワイトリスト格納手段と、
     前記第1プログラム及び前記第1プログラムとリンクした前記第2プログラムが格納されるメモリと、
     前記第1プログラム及び前記第2プログラムを実行する演算処理手段と、
     前記第3ホワイトリストにリストアップされた前記第3検証データと、前記第1及び前記第2プログラムの実行に際して新たに算出された第4検証データと、を比較することにより、前記第1及び前記第2プログラムの改ざんの有無を検証する検証手段と、
     を備えた、情報処理装置。
  12.  第1プログラムに対応する第1検証データがリストアップされた第1ホワイトリストと、前記第1プログラムのリンク先であるライブラリに格納された第2プログラム、に対応する第2検証データ、がリストアップされた第2ホワイトリストと、をマージして、第3検証データがリストアップされた第3ホワイトリストを生成するマージステップを備えた、
     ホワイトリスト生成方法。
  13.  前記第1検証データは、前記第1プログラムが格納されるメモリのアドレス値と、前記第1プログラムに対応する第1固有値と、によって構成され、
     前記第2検証データは、所定のアドレス値と、前記第2プログラムに対応する第2固有値と、によって構成され、
     前記ホワイトリスト生成方法は、
     前記第1プログラムとリンクすることによって前記第2プログラムが格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データのアドレス値を更新する更新ステップをさらに備え、
     前記マージステップでは、前記第1ホワイトリストと、前記更新ステップにおいて更新された前記第2ホワイトリストと、をマージして前記第3ホワイトリストを生成する、
     請求項12に記載のホワイトリスト生成方法。
  14.  前記第1検証データは、前記第1プログラムの各部分が格納されるメモリのアドレス値と、前記第1プログラムの各部分に対応する第1固有値と、によって構成され、
     前記第2検証データは、前記第2プログラムの各部分に対応する所定のアドレス値と、前記第2プログラムの各部分に対応する第2固有値と、によって構成され、
     前記ホワイトリスト生成方法は、
     前記第1プログラムとリンクすることによって前記第2プログラムの各部分が格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データの各アドレス値を更新する更新ステップをさらに備え、
     前記マージステップでは、前記第1ホワイトリストと、前記更新ステップにおいて更新された前記第2ホワイトリストと、をマージして前記第3ホワイトリストを生成する、
     請求項12に記載のホワイトリスト生成方法。
  15.  前記第1検証データは、前記第1プログラムの実行の際に取り得る複数のコードの実行順序を表す第1コントロールフローグラフであって、
     前記第2検証データは、前記第2プログラムの実行の際に取り得る複数のコードの実行順序を表す第2コントロールフローグラフであって、
     前記マージステップでは、前記第1プログラムにおける前記第2プログラムの呼び出し命令に基づいて、前記第1コントロールフローグラフと前記第2コントロールフローグラフとを紐付ける、
     請求項12に記載のホワイトリスト生成方法。
  16.  前記ライブラリに格納された前記第2プログラムをリンク対象とする前記第1プログラムから前記第1検証データを算出して前記第1ホワイトリストを生成する第1ホワイトリスト生成ステップをさらに備えた、
     請求項12~15の何れか一項に記載のホワイトリスト生成方法。
  17.  請求項12~16の何れか一項に記載されたホワイトリスト生成方法によって生成された前記第3ホワイトリストにリストアップされた前記第3検証データと、前記第1及び前記第2プログラムの実行に際して新たに算出された第4検証データと、を比較することにより、前記第1及び前記第2プログラムの改ざんの有無を検証する検証ステップと、
     前記検証ステップにおいて前記第1及び前記第2プログラムの改ざんが無いと判断された場合に、前記第1及び前記第2プログラムを実行する演算処理ステップと、
     を備えた、情報処理方法。
  18.  請求項13又は14に記載の前記ホワイトリスト生成方法によって生成された前記第3ホワイトリストにリストアップされた前記第3検証データと、前記第1及び前記第2プログラムの実行に際して新たに算出された第4検証データと、を比較することにより、前記第1及び前記第2プログラムの改ざんの有無を検証する検証ステップと、
     前記検証ステップにおいて前記第1及び前記第2プログラムの改ざんが無いと判断された場合に、前記第1及び前記第2プログラムを実行する演算処理ステップと、
     を備え、
     前記ホワイトリスト生成方法は、
     前記第1プログラムによる前記第2プログラムの呼び出しを監視する監視ステップをさらに備え、
     前記更新ステップでは、前記監視ステップにおいて前記第1プログラムによる前記第2プログラムの呼び出しがあったことが検知されると、前記第1プログラムとリンクすることによって前記第2プログラムが格納されることになる前記メモリのアドレス値に基づいて、前記第2ホワイトリストにリストアップされた前記第2検証データの各アドレス値を更新する、情報処理方法。
  19.  第1プログラムに対応する第1検証データがリストアップされた第1ホワイトリストと、前記第1プログラムのリンク先であるライブラリに格納された第2プログラム、に対応する第2検証データ、がリストアップされた第2ホワイトリストと、をマージして、第3検証データがリストアップされた第3ホワイトリストを生成するマージ処理を、
     コンピュータに実行させるプログラムが記録された非一時的なコンピュータ可読媒体。
PCT/JP2019/038125 2019-09-27 2019-09-27 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体 WO2021059475A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021548112A JP7283551B2 (ja) 2019-09-27 2019-09-27 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、ホワイトリスト生成プログラム
PCT/JP2019/038125 WO2021059475A1 (ja) 2019-09-27 2019-09-27 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
US17/761,654 US20220327203A1 (en) 2019-09-27 2019-09-27 Whitelist generation apparatus, whitelist generation method, and non-transitory computer readable medium storing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/038125 WO2021059475A1 (ja) 2019-09-27 2019-09-27 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体

Publications (1)

Publication Number Publication Date
WO2021059475A1 true WO2021059475A1 (ja) 2021-04-01

Family

ID=75165630

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/038125 WO2021059475A1 (ja) 2019-09-27 2019-09-27 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体

Country Status (3)

Country Link
US (1) US20220327203A1 (ja)
JP (1) JP7283551B2 (ja)
WO (1) WO2021059475A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230110974A1 (en) * 2021-10-08 2023-04-13 T-Mobile Usa, Inc. Phone number list management

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535945A (ja) * 2002-03-26 2005-11-24 ソテレスゲーエムベーハー コンピュータプログラムの完全性の保護方法
WO2013121951A1 (ja) * 2012-02-13 2013-08-22 三菱電機株式会社 プログラム管理システム
JP2014206977A (ja) * 2013-04-12 2014-10-30 富士通株式会社 ソフトウェアメトリクスの決定
JP2019159830A (ja) * 2018-03-13 2019-09-19 株式会社東芝 情報処理装置、情報処理方法およびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535945A (ja) * 2002-03-26 2005-11-24 ソテレスゲーエムベーハー コンピュータプログラムの完全性の保護方法
WO2013121951A1 (ja) * 2012-02-13 2013-08-22 三菱電機株式会社 プログラム管理システム
JP2014206977A (ja) * 2013-04-12 2014-10-30 富士通株式会社 ソフトウェアメトリクスの決定
JP2019159830A (ja) * 2018-03-13 2019-09-19 株式会社東芝 情報処理装置、情報処理方法およびプログラム

Also Published As

Publication number Publication date
US20220327203A1 (en) 2022-10-13
JP7283551B2 (ja) 2023-05-30
JPWO2021059475A1 (ja) 2021-04-01

Similar Documents

Publication Publication Date Title
US10867028B2 (en) Program-instruction-controlled instruction flow supervision
US10642607B2 (en) Determination apparatus and determination method
US8281229B2 (en) Firmware verification using system memory error check logic
CA2930424C (en) Improved control flow integrity system and method
US20080271001A1 (en) Method of generating program, information processing device and microcomputer
TWI465902B (zh) 用於編碼錯誤降低之契約程式規劃
US8412953B2 (en) System and method for annotation driven integrity verification
US8281290B2 (en) Software diversity using context-free grammar transformations
US20190095187A1 (en) Incremental updates in static libraries
CN110088736A (zh) 自调试
JP2011170836A (ja) 情報処理装置及びプログラム、情報処理方法、記録媒体
Breuer et al. Typed assembler for a RISC crypto-processor
WO2021059475A1 (ja) ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
US9122842B2 (en) Apparatus and method for enhancing security in heterogeneous computing environment
CN113342323A (zh) 软件在线开发的方法及装置
Lin et al. Control-flow carrying code
JP4754635B2 (ja) 制御フロー保護機構
JP2017146967A (ja) 中間言語ファイルのロード速度改善のための方法およびシステム
JP2021517293A (ja) リンク付き分岐命令の分岐ターゲット・バリアント
US9323604B2 (en) Signature update by code transformation
CN110807195B (zh) 一种智能合约的发布方法、发布平台装置及发布系统
JP2009009537A (ja) プログラム作成方法及び情報処理装置ならびにマイコン
CN112613023A (zh) 一种认证信息生成算法的保护方法和终端
JPWO2003107193A1 (ja) 半導体集積回路装置,データ記憶検証装置およびデータ記憶検証方法
JP7283552B2 (ja) 情報処理装置、情報処理方法、及び、プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19946438

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021548112

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19946438

Country of ref document: EP

Kind code of ref document: A1