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

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

Info

Publication number
WO2021044578A1
WO2021044578A1 PCT/JP2019/034974 JP2019034974W WO2021044578A1 WO 2021044578 A1 WO2021044578 A1 WO 2021044578A1 JP 2019034974 W JP2019034974 W JP 2019034974W WO 2021044578 A1 WO2021044578 A1 WO 2021044578A1
Authority
WO
WIPO (PCT)
Prior art keywords
identifier
program
unit
static
library
Prior art date
Application number
PCT/JP2019/034974
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 PCT/JP2019/034974 priority Critical patent/WO2021044578A1/ja
Priority to TW108147548A priority patent/TW202111522A/zh
Publication of WO2021044578A1 publication Critical patent/WO2021044578A1/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/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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules

Definitions

  • the present invention relates to an information processing device that restricts the call of a library function, an information processing method that restricts the call of a library function, and an information processing program that restricts the call of a library function.
  • an external program that is a program outside the library can call a library function that is a function included in this library.
  • the library function may be called from an illegal external program, and in order to limit the call from the illegal external program, a means for controlling the execution of the library function is required.
  • the certificate of the calling program which is a program including the calling processing of the library function, and the identifier of the calling program signed with the private key are passed from the calling program to the library function, and the inside of the library function.
  • Disclosed is a control method in which the execution permission or non-permission of the calling program is determined in multiple stages according to the conditions, and the library function is executed if there is no problem with the determination result.
  • Patent Document 2 when a library function is called, the library queries the management application, which is an application that manages the library, to determine whether execution is permitted or not, and the management application is based on the determination table of the management application. Determines whether the calling program is allowed or not executed. Then, if the determination result is execution permission, a control method of executing the library function is disclosed.
  • the management application which is an application that manages the library
  • Patent Document 1 has a problem that it is necessary to manage the certificate and the private key for each calling program.
  • the information processing device of the present invention The library part that has the library function and It is equipped with an identifier storage unit that stores a static identifier that is a static identifier.
  • the library part A dynamic identifier generation unit that generates a dynamic identifier, which is a dynamic identifier, based on the calling program that called the library function of the library unit.
  • the calling program executes a calling process of the library function
  • the static identifier stored in the identifier storage unit and the dynamic identifier generated by the dynamic identifier generation unit are used as the basis for the static identifier.
  • It is provided with an identifier determination unit that determines permission or disapproval for the call processing of the calling program.
  • the identifier determination unit determines whether to allow or disallow the calling process. Therefore, since the identifier storage unit only needs to store the static identifier for each calling program, the management of elements necessary for determining permission or disapproval of execution of the library function of the library unit is simplified. it can. Further, according to the information processing apparatus of the present invention, the identifier determination unit determines whether the call processing is permitted or not, so that the execution of the library function of the library unit by an unauthorized external program can be prevented. , It is possible to prevent a malicious external program from impersonating a normal external program.
  • FIG. 1 The block diagram of the information processing apparatus 10 which concerns on Embodiment 1.
  • FIG. 1 The hardware block diagram of the information processing apparatus 10 which concerns on Embodiment 1.
  • FIG. The flowchart which shows the operation of the information processing apparatus 10 which concerns on Embodiment 1.
  • FIG. The processing schematic diagram which concerns on Embodiment 1.
  • FIG. The block diagram of the library part 105 which concerns on Embodiment 1.
  • FIG. The flowchart which shows the operation of the library function call processing which concerns on Embodiment 1.
  • An example of the definition information 404 of the program definition table 108 according to the modified example of the first embodiment.
  • the block diagram of the information processing apparatus 10 which concerns on the modification of Embodiment 1.
  • the flowchart which shows the operation of the library function call processing which concerns on the modification of Embodiment 1.
  • the block diagram of the library part 105 which concerns on the modification of Embodiment 1. The flowchart which shows the operation of the information processing apparatus 10 which concerns on the modification of Embodiment 1.
  • the block diagram of the information processing apparatus 10 which concerns on Embodiment 3. The block diagram of the library part 105 which concerns on Embodiment 3.
  • FIG. 1 is an example of a configuration diagram of the information processing device 10 according to the present embodiment.
  • the information processing apparatus 10 includes a program generation unit 101, a static identifier generation unit 102, an identifier storage unit 103, a caller program unit 104, a library unit 105, and a program storage unit 106. And.
  • the program generation unit 101 generates a caller program 401 based on the program template 107 stored in the program storage unit 106 and the program definition table 108, and stores the generated caller program 401 in the caller program unit 104.
  • the caller program 401 is a program including a call process of the library function 501 of the library unit 105. In this figure, the caller program 401 is described in order to clearly indicate that the program generation unit 101 generates the caller program 401. Unless the program generation unit 101 generates the caller program 401, the caller program 401 does not exist in the information processing device 10.
  • the static identifier generation unit 102 generates a static identifier 402, which is a static identifier, based on the calling program.
  • Specific examples of the static identifier 402 include a hash value of the text area of the calling program 401 or a file hash value of the program file of the calling program 401.
  • the identifier storage unit 103 stores the static identifier 402.
  • a file can be mentioned as a specific example of the identifier storage unit 103.
  • the caller program unit 104 stores the caller program 401 and executes the caller program 401.
  • a part of the calling program may be incorporated in the OS.
  • the library unit 105 includes a library that is a set of library functions 501 and a control mechanism that controls the call of the library function 501.
  • the program storage unit 106 stores the program template 107 and the program definition table 108.
  • the program template 107 defines the program structure of the caller program 401 generated by the program generation unit 101.
  • the program generation unit 101 generates the caller program 401 by applying the definition information 404 defined in the program definition table 108 to the program template 107.
  • the program template 107 is written in any program language.
  • the program definition table 108 stores the operation definition information 404 of the calling program 401 generated by the program generation unit 101.
  • FIG. 2 is an example of an H / W (hardware) / S / W (software) configuration diagram of the information processing device 10 according to the present embodiment.
  • the information processing device 10 is composed of S / W 204 and H / W 205 shown in this figure.
  • the H / W 205 shows the hardware configuration of the first embodiment, and is composed of a processor 201, a memory 202, and an auxiliary storage device 203.
  • the processor 201 is a processing device that executes a program generation unit 101, a static identifier generation unit 102, a caller program unit 104, a library function 501, a caller program 401, an OS (Operating System), and the like. is there.
  • the processing device is sometimes called an IC (Integrated Circuit), and specific examples of the processor 201 are a CPU (Central Processing Unit), a DSP (Digital Signal Processor), and a GPU (Graphics Processing Unit).
  • the processor 201 reads and executes the program stored in the memory 202.
  • the information processing device 10 in this figure includes only one processor 201, the information processing device 10 may include a plurality of processors that substitute for the processor 201. These plurality of processors share the execution of programs and the like.
  • the memory 202 is a storage device that temporarily stores data, and functions as a main memory used as a work area of the processor 201.
  • the memory 202 is a RAM (Random Access Memory) such as a SRAM (Static Random Access Memory) or a DRAM (Dynamic Random Access Memory).
  • the memory 202 holds the calculation result of the processor 201.
  • the auxiliary storage device 203 stores an identifier storage unit 103, a program template 107, a program definition table 108, various programs executed by the processor 201, S / W 204, and data used when executing each program. To do. Specific examples of the auxiliary storage device 203 are an HDD (Hard Disk Drive) and an SSD (Solid State Drive).
  • the auxiliary storage device 203 includes a memory card, an SD (Secure Digital, registered trademark) memory card, a CF (Compact Flash), a NAND flash, a flexible disk, an optical disk, a compact disk, a Blu-ray (registered trademark) disk, and a DVD (Digital Versaille). It may be a portable recording medium such as Disk).
  • the S / W 204 shows the software configuration of the first embodiment, and is composed of a program generation unit 101, a static identifier generation unit 102, a caller program unit 104, a library unit 105, and an OS 109.
  • the OS 109 is loaded from the auxiliary storage device 203 by the processor 201, expanded in the memory 202, and executed on the processor 201.
  • the OS 109 may be any one compatible with the processor 201, such as Linux (registered trademark) or Windows (registered trademark).
  • the program template 107, the program definition table 108, the OS 109, and the S / W 204 may be stored in the memory 202.
  • FIG. 3 is an example of a flowchart showing the operation of the information processing apparatus 10 of the present embodiment.
  • the operation procedure of the information processing device 10 corresponds to the information processing method. Further, the program that realizes the operation of the information processing device 10 corresponds to the information processing program.
  • Step S101 Caller program generation process
  • the program generation unit 101 reads the definition information 404 of the program template 107 and the program definition table 108 stored in the program storage unit 106, and executes the caller program generation process for generating the caller program 401.
  • the information processing device 10 may store the generated caller program 401 in the auxiliary storage device 203.
  • Step S102 Static identifier generation process
  • the static identifier generation unit 102 executes a static identifier generation process for generating a hash value of the text area of the calling program 401 as the static identifier 402.
  • the information processing device 10 may store the generated static identifier 402 in the auxiliary storage device 203.
  • the hash function any one such as FSB (Fast Syndrome-Based hash functions) or SHA-3 (Secure Hash Algorithm 3) may be used.
  • FSB Fast Syndrome-Based hash functions
  • SHA-3 Secure Hash Algorithm 3
  • the text area is the area in the memory where the running program is stored when the program is executed.
  • the contents of the text area can be grasped at the time of building the program, and the static identifier generation unit 102 generates a hash value of the area in the memory in which the running program is stored after the calling program generation process. To do.
  • the static identifier generation unit 102 stores the generated static identifier 402 in the identifier storage unit 103.
  • Step S103 Caller program execution process
  • the caller program unit 104 executes a caller program execution process that executes the caller program 401.
  • the calling program 401 may include processing other than the calling processing of the library function 501.
  • Step S104 Library function call processing
  • the calling program unit 104 executes a library function calling process that calls the library function 501 of the library unit 105.
  • the library unit 105 compares the dynamic identifier 403 and the static identifier 402 stored in the identifier storage unit 103, determines that the execution of the library function 501 is permitted if they match, and determines that the execution of the library function 501 is not permitted if they do not match.
  • the library unit 105 If it is determined to be permitted, after executing the library function 501, the execution result 405 of the library function 501 is passed to the calling program unit 104. If it is determined that the permission is not permitted, the process of this step is terminated without calling the library function 501.
  • FIG. 4 is a processing schematic diagram according to the present embodiment, showing a flow in which the program generation unit 101 generates the caller program 401 and the identifier storage unit 103 stores the static identifier 402.
  • the program generation unit 101 generates a caller program 401 (program 1) based on the program template 107 and the program definition table 108 stored in the program storage unit 106.
  • the static identifier generation unit 102 generates the static identifier 402 based on the calling program 401.
  • the identifier storage unit 103 stores the static identifier 402.
  • the value described in the identifier storage unit 103 in this figure is an example of the hash value of the program 1 which is the static identifier 402.
  • the number of digits of the hash function value is not limited to the number of digits of the value, and may be any number of digits.
  • FIG. 5 is an example of a configuration diagram of the library unit 105 in the present embodiment.
  • the library unit 105 includes a dynamic identifier generation unit 301, an identifier determination unit 302, and a library function activation unit 303.
  • the dynamic identifier generation unit 301 generates the dynamic identifier 403, which is the dynamic identifier of the calling program 401.
  • the dynamic identifier 403 is generated by the same method as the static identifier generation process executed by the static identifier generation unit 102.
  • Specific examples of the dynamic identifier 403 include a hash value of the text area of the execution process of the calling program 401 and a file hash value of the program file of the calling program 401.
  • the identifier determination unit 302 determines whether to allow or disallow the call processing of the library function 501 of the library unit 105 by the calling program unit 104 based on the dynamic identifier 403 and the static identifier 402 stored in the identifier storage unit 103. To do.
  • the library function activation unit 303 activates the library function 501 corresponding to the call processing of the library function 501 of the library unit 105 by the caller program unit 104.
  • FIG. 6 is an example of a flowchart showing the operation of the library function call processing of the present embodiment.
  • Step S301 Dynamic identifier generation process
  • the dynamic identifier generation unit 301 executes the dynamic identifier 403 as the dynamic identifier 403, for example, corresponding to the caller program 401 of the caller program unit 104.
  • the text area of the execution process is a text area in the memory used by the calling program 401 during execution of the calling program 401.
  • Step S302 Identifier determination process
  • the identifier determination unit 302 determines that the calling of the library function 501 of the library unit 105 by the calling program unit 104 is permitted. If the dynamic identifier 403 and the static identifier 402 do not match, the identifier determination unit 302 determines that the calling of the library function 501 of the library unit 105 by the calling program unit 104 is not permitted.
  • Step S303 Library function activation process
  • the library function activation unit 303 executes a library function activation process, which is a process of activating the library function 501 of the library unit 105 called by the calling program unit 104. If the identifier determination unit 302 determines that the permission is not permitted, the processing flow is terminated without executing the processing of this step.
  • the information processing device 10 of the present embodiment is A library unit 105 having a library function 501 and The identifier storage unit 103 that stores the static identifier 402, which is a static identifier, is provided.
  • the library unit 105 A dynamic identifier generation unit 301 that generates a dynamic identifier 403 that is a dynamic identifier based on the calling program 401 that called the library function 501 of the library unit 105.
  • the calling program 401 executes the calling process of the library function 501, the calling is performed based on the static identifier 402 stored in the identifier storage unit 103 and the dynamic identifier 403 generated by the dynamic identifier generating unit 301.
  • An identifier determination unit 302 for determining permission or disapproval for the call processing of the original program 401 is provided.
  • the information processing device 10 of the present embodiment is A static identifier generation unit 102 that generates a static identifier 402 based on the caller program 401 and stores the generated static identifier 402 in the identifier storage unit 103 is provided.
  • the information processing device 10 of the present embodiment is The static identifier generation unit 102 generates a hash value of the text area of the calling program 401 as the static identifier 402, and generates the hash value.
  • the dynamic identifier generation unit 301 generates a hash value of the text area of the execution process of the calling program 401 as the dynamic identifier 403, and generates the hash value.
  • the identifier determination unit 302 can determine that the permission is granted when the static identifier 402 and the dynamic identifier 403 match.
  • Embodiment 1 when the calling program unit 104 executes the calling process of the library function 501 of the library unit 105, the static identifier 402 and the dynamic identifier generation stored in the identifier storage unit 103 are generated. Based on the dynamic identifier 403 generated by the unit 301, the identifier determination unit 302 determines whether to allow or disallow the calling process.
  • the static identifier 402 is generated by the static identifier generation unit 102 based on the caller program 401, and the dynamic identifier 403 is generated based on the caller program 401 of the caller program unit 104.
  • the static identifier 402 is the only element that the information processing apparatus 10 needs to manage in order to determine whether the call processing is permitted or not. Therefore, the information processing device 10 can simplify the management of the elements necessary for determining the permission or disapproval of the calling process.
  • the identifier determination unit 302 determines whether the call processing is permitted or not, so that the execution of the library function 501 of the library unit 105 by an unauthorized external program can be prevented, which is illegal. It is possible to prevent an external program from impersonating a normal external program.
  • the information processing device 10 of the present embodiment is composed of a single computer as shown in FIG.
  • the information processing device 10 may be composed of a plurality of computers.
  • the information processing device 10 includes a communication IF (interface) for transmitting and receiving necessary information between the plurality of computers.
  • the communication IF is a port of Ethernet (registered trademark) or USB (Universal Serial Bus).
  • the communication IF may be a plurality of ports.
  • the information processing device 10 includes a communication IF.
  • the information processing device 10 of the present embodiment uses a program generation unit 101 provided inside the information processing device 10.
  • the information processing device 10 is a program generation unit 901 provided in a computer or the like outside the information processing device 10, and the program generation unit 901 equivalent to the program generation unit 101 may be used.
  • the information processing apparatus 10 transmits the program template 107 and the program definition table 108 to the program generation unit 901, and receives the caller program 401 from the program generation unit 901.
  • the information processing device 10 of the present embodiment uses the static identifier generation unit 102 provided inside the information processing device 10.
  • the information processing device 10 is a static identifier generation unit 902 provided in a computer or the like outside the information processing device 10, and a static identifier generation unit 902 equivalent to the static identifier generation unit 102 may be used.
  • the information processing apparatus 10 transmits the caller program 401 to the static identifier generation unit 902, and receives the static identifier 402 from the static identifier generation unit 902.
  • the information processing device 10 of the present embodiment uses the identifier storage unit 103 provided inside the information processing device 10.
  • the information processing device 10 is an identifier storage unit 903 provided in a computer or the like outside the information processing device 10, and an identifier storage unit 903 equivalent to the identifier storage unit 103 may be used.
  • the information processing apparatus 10 transmits the static identifier 402 to the identifier storage unit 903, and receives the static identifier 402 from the identifier storage unit 903.
  • the library unit 105 of the present embodiment uses the dynamic identifier generation unit 301 provided inside the library unit 105.
  • the library unit 105 is a dynamic identifier generation unit 904 provided in a computer or the like outside the library unit 105, and the dynamic identifier generation unit 904 equivalent to the dynamic identifier generation unit 301 may be used.
  • the library unit 105 transmits the caller program 401 to the dynamic identifier generation unit 904, and receives the dynamic identifier 403 from the dynamic identifier generation unit 904.
  • the library unit 105 of the present embodiment uses the identifier determination unit 302 provided inside the library unit 105.
  • the library unit 105 is an identifier determination unit 905 provided in a computer or the like outside the library unit 105, and the identifier determination unit 905 equivalent to the identifier determination unit 302 may be used.
  • the library unit 105 transmits the dynamic identifier 403 to the identifier determination unit 905, and receives the determination result of the identifier determination unit 905 from the identifier determination unit 905.
  • the dynamic identifier generation unit 301, the identifier determination unit 302, and the library function activation unit 303 of the present embodiment are outside the library function 501 as shown in FIG. However, a part or all of the dynamic identifier generation unit 301, the identifier determination unit 302, and the library function activation unit 303 may be inside the library function 501.
  • the static identifier generation unit 102 and the dynamic identifier generation unit 301 of the present embodiment apply the hash function of 1.
  • the static identifier generation unit 102 and the dynamic identifier generation unit 301 may apply a plurality of hash functions.
  • the static identifier generation unit 102 and the dynamic identifier generation unit 301 apply a plurality of hash functions to the text area of the program.
  • the plurality of hash functions applied by the static identifier generation unit 102 and the plurality of hash functions applied by the dynamic identifier generation unit 301 are the same.
  • the identifier determination unit 302 determines that permission is granted when all the corresponding hash function values applied by the static identifier generation unit 102 and the dynamic identifier generation unit 301 match.
  • the information processing device 10 of the present embodiment uses a program storage unit 106 provided inside the information processing device 10.
  • the information processing device 10 is a program storage unit 906 provided in a computer or the like outside the information processing device 10, and a program storage unit 906 equivalent to the program storage unit 106 may be used.
  • the information processing apparatus 10 receives the program template 107 and the program definition table 108 from the program storage unit 906. Only one of the program template 107 and the program definition table 108 may be stored in the program storage unit 906, and the other may be stored in the program storage unit 106 of the information processing device 10.
  • the program generation unit 101 can generate a plurality of caller programs 401 for each definition information 404.
  • the static identifier generation unit 102 can generate a plurality of static identifiers 402 corresponding to a plurality of calling programs 401, and can generate a plurality of static identifiers 402.
  • the identifier storage unit 103 can store a plurality of static identifiers 402.
  • the program template 107 of this embodiment has one program template. However, the program template 107 may have a plurality of program templates.
  • the program generation unit 101 Multiple caller programs 401 can be generated for each program template 107.
  • the static identifier generation unit 102 can generate a plurality of static identifiers 402 corresponding to a plurality of calling programs 401, and can generate a plurality of static identifiers 402.
  • the identifier storage unit 103 can store a plurality of static identifiers 402.
  • the definition information 404 of the calling program 401 may be the one shown in FIG. 7.
  • the program definition table 108 shown in this figure the definition information 404 corresponding to the program 1 and the program 2 is collected.
  • the program definition table 108 stores the number of executions of the process A and the process B executed by the calling program 401.
  • the process A and the process B are processes included in the program template.
  • the program name is a name given to the calling program 401, and the name is for distinguishing programs having different execution times of process A and process B.
  • the caller program 401 that executes the process A four times and the process B four times is called the program 1
  • the caller program 401 that executes the process A twice and the process B three times is called the program 2.
  • the calling program unit 104 may be able to execute the program created by the script language. According to this modification, the information processing apparatus 10 can execute the calling program 401 created by the script language.
  • the library unit 105 does not include the identifier storage unit 103.
  • the library unit 105 may include the identifier storage unit 103.
  • Step S102 Static identifier generation process
  • the static identifier generation unit 102 executes a static identifier generation process that generates a hash value of the program file of the calling program 401 as the static identifier 402.
  • the information processing device 10 may store the generated static identifier 402 in the auxiliary storage device 203.
  • Step S301 Dynamic identifier generation process
  • the dynamic identifier generation unit 301 uses the dynamic identifier generation unit 104 as the dynamic identifier 403 when the caller program unit 104 executes the caller program unit 104.
  • Step S302 Identifier determination process
  • the identifier determination unit 302 determines that the call processing of the library function 501 of the library unit 105 by the calling program unit 104 is permitted. To do. If the static identifier 402 stored in the identifier storage unit 103 is not included in the file hash value list, the identifier determination unit 302 determines that the call processing is not permitted.
  • the information processing device 10 of this modification is The static identifier generation unit 102 generates the file hash value of the program file of the calling program 401 as the static identifier 402, and generates it.
  • the dynamic identifier generation unit 301 generates a file hash value list having the hash value of each file used by the calling program 401 when executing the calling program 401 as a dynamic identifier 403.
  • the identifier determination unit 302 can determine that permission is granted when the static identifier 402 is included in the file hash value list.
  • FIG. 8 is an example of a configuration diagram of the information processing device 10 in this modified example.
  • the calling program unit 104 of this modification includes a static identifier generation unit 102.
  • FIG. 9 is an example of a flowchart showing the operation of the library function call processing in this modified example.
  • Step S304 Static identifier generation process
  • the information processing device 10 does not pass the static identifier 402 to the identifier storage unit 103 when the caller program 401 is generated, instead of passing it to the identifier storage unit 103.
  • the identifier storage unit 103 executes static identifier request processing when the library unit 105 is called from the calling program 401. Therefore, the information processing apparatus 10 according to this modification can limit the calls to the library function 501.
  • FIG. 10 is an example of a configuration diagram of the information processing device 10 in this modified example.
  • the information processing device 10 of this modification includes a static identifier encryption unit 701 that encrypts a static identifier.
  • FIG. 11 is an example of a configuration diagram of the library unit 105 in this modified example.
  • the library unit 105 of this modification includes a static identifier decryption unit 702 that decrypts the static identifier encrypted by the static identifier encryption unit 701.
  • FIG. 12 is an example of a flowchart showing the operation of the information processing device 10 in this modified example.
  • Step S701 Static identifier encryption process
  • the static identifier encryption unit 701 encrypts the static identifier 402 and executes a static identifier encryption process for generating the encrypted static identifier 703.
  • the static identifier encryption unit 701 may use any encryption algorithm such as common key cryptography or public key cryptography.
  • Step S702 Encrypted static identifier storage process
  • the identifier storage unit 103 executes an encrypted static identifier storage process for storing the encrypted static identifier 703.
  • FIG. 13 is an example of a flowchart showing the operation of the library function call processing in this modification.
  • Step S703 Static identifier decoding process
  • the static identifier decryption unit 702 executes a static identifier decryption process for decrypting the encrypted static identifier 703 stored in the identifier storage unit 103.
  • the static identifier decryption unit 702 uses a decryption algorithm corresponding to the encryption algorithm used by the static identifier encryption unit 701.
  • the information processing device 10 is A static identifier encryption unit 701 that generates an encrypted static identifier 703 by encrypting the static identifier and stores the generated encrypted static identifier 703 in the identifier storage unit 103 is provided.
  • the library unit 105 includes a static identifier decryption unit 702 that decrypts the encrypted static identifier 703.
  • the identifier determination unit 302 uses the encrypted static identifier 703 stored in the identifier storage unit 103 as a static identifier as a static identifier. The one decoded by the decoding unit 702 is used.
  • each functional component is realized by software has been described.
  • each functional component may be realized by hardware.
  • the information processing device 10 includes an electronic circuit 206 instead of the processor 201.
  • the information processing device 10 includes an electronic circuit 206 instead of the processor 201, the memory 202, and the auxiliary storage device 203.
  • the electronic circuit 206 is a dedicated electronic circuit that realizes the functions of each functional component (and the memory 202 and the auxiliary storage device 203).
  • the electronic circuit is sometimes called a processing circuit.
  • the electronic circuit 206 is assumed to be a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, a logic IC, a GA (Gate Array), an ASIC (Application Specific Integrated Circuit), and an FPGA (Field-Programmable Gate Array). Will be done.
  • Each functional component may be realized by one electronic circuit 206, or each functional component may be distributed and realized by a plurality of electronic circuits 206.
  • processing circuit Lee The processor 201, memory 202, auxiliary storage device 203, and electronic circuit 206 described above are collectively referred to as "processing circuit Lee". That is, the function of each functional component is realized by the processing circuit.
  • FIG. 15 is an example of a configuration diagram of the information processing device 10 according to the present embodiment.
  • the information processing device 10 of the present embodiment does not include a program generation unit 101, but includes a program reading unit 110 that reads a program from the program storage unit 106.
  • the program reading unit 110 reads the calling program 401 from the auxiliary storage device 203, and stores the read calling program 401 in the calling program unit 104.
  • the program storage unit 106 of the present embodiment does not store the program template 107 and the program definition table 108, but stores the caller program 401.
  • FIG. 16 is an example of a flowchart showing the operation of the information processing apparatus 10 according to the present embodiment.
  • Step S106 Program read process
  • the program reading unit 110 executes a program reading process for reading the calling program 401 from the program storage unit 106.
  • the information processing device 10 can limit the call of the library function 501 even when the caller program 401 is read from the auxiliary storage device 203.
  • the information processing device 10 in the present embodiment uses the program storage unit 106 provided inside the information processing device 10. However, the information processing device 10 may use the program storage unit 106 external to the information processing device 10. In this modification, the information processing apparatus 10 receives the program file of the calling program 401 from the external program storage unit 106.
  • the caller program 401 in the present embodiment has one caller program 401. However, the calling program 401 may have a plurality of calling programs 401.
  • the program reading unit 110 can read a plurality of calling program 401, and can read a plurality of calling programs 401.
  • the static identifier generation unit 102 can generate a plurality of static identifiers 402 corresponding to a plurality of calling programs 401, and can generate a plurality of static identifiers 402.
  • the identifier storage unit 103 can store a plurality of static identifiers 402.
  • FIG. 17 is an example of a configuration diagram of the information processing device 10 according to the present embodiment.
  • the information processing device 10 of the present embodiment stores the static identifier 402 and the static identifier 406 in the identifier storage unit 103.
  • the static identifier 402 corresponds to the library function 501.
  • the static identifier 406 corresponds to the library function 502.
  • the static identifier has a priority, and the priority of the static identifier 402 is higher than the priority of the static identifier 406.
  • FIG. 18 is an example of a configuration diagram of the library unit 105 in the present embodiment.
  • the library unit 105 of the present embodiment has a library function group 510, and the library function group 510 has a library function 501 and a library function 502.
  • the library function 502 outputs the same processing result as the library function 501, but has features such as a shorter processing time than the library function 501 and a higher accuracy of the processing result than the library function 501.
  • the number of types of hash functions possessed by the static identifier generation unit 102 and the dynamic identifier generation unit 301 is the same as the total number of library functions possessed by the library function group 510.
  • the hash function corresponding to the library function 501 is referred to as the hash function 801 and the hash function corresponding to the library function 502 is referred to as the hash function 802.
  • Step S102 Static identifier generation process
  • the static identifier generation unit 102 As the static identifier 402, the hash function 801 is used to generate the hash value of the text area of the calling program 401, and the hash value is generated. As the static identifier 406, the hash function 802 is used to execute the static identifier generation process of hashing the text area of the calling program 401.
  • Step S104 Library function call processing
  • the calling program unit 104 executes a library function calling process that calls a function of the library function group 510 of the library unit 105. After executing the function of the library function group 510, the library unit 105 passes the execution result 405 of the function of the library function group 510 to the calling program unit 104.
  • FIG. 19 is an example of a flowchart showing the operation of the library function call processing in the present embodiment.
  • Step S301 Dynamic identifier generation process
  • the dynamic identifier generation unit 301 As the dynamic identifier 403, the hash function 801 is used to generate the hash value of the text area of the execution process corresponding to the calling program 401.
  • the hash function 802 is used to generate the hash value of the text area of the execution process corresponding to the calling program 401.
  • Step S302 Identifier determination process
  • the identifier determination unit 302 executes the determination process in order from the determination process corresponding to the static identifier having a high priority.
  • the identifier determination unit 302 When the dynamic identifier 403 and the static identifier 402 stored in the identifier storage unit 103 match, it is determined that the library function 501 is executed for the call processing of the library function group 510 of the library unit 105 by the calling program unit 104. Then proceed to the next step
  • the dynamic identifier 407 and the static identifier 406 stored in the identifier storage unit 103 match, it is determined that the library function 502 is executed for the call processing of the library function group 510 of the library unit 105 by the calling program unit 104. Then proceed to the next step In cases other than these, it is determined that the calling process of the library function group 510 of the library unit 105 by the calling program unit 104 is not permitted.
  • Step S303 Library function activation process
  • the library function activation unit 303 When the identifier determination unit 302 determines that the library function 501 is executed, the library function 501 activation process for activating the library function 501 of the library unit 105 called by the calling program unit 104 is executed. When the identifier determination unit 302 determines that the library function 502 is executed, the library function 502 activation process for activating the library function 502 of the library unit 105 called by the calling program unit 104 is executed. If the identifier determination unit 302 determines that the permission is not permitted, the processing flow is terminated without executing the processing of this step.
  • the library unit 105 has a plurality of library functions and has a plurality of library functions.
  • the static identifier generation unit 102 generates one or more static identifiers, and generates one or more static identifiers.
  • the identifier determination unit 302 determines that the call processing of the calling program 401 is permitted, the identifier determination unit 302 permits the call of any one of the library functions of the library unit 105.
  • the information processing device 10 is When the library unit 105 is called from the calling program 401, the static identifier 402 and the static identifier 406 stored in the identifier storage unit 103 and the dynamic identifier 403 generated by the dynamic identifier generation unit 301 are stored. Judgment is made by the identifier determination unit 302. It is possible to switch the library function executed by the library unit 105 according to the determination result.
  • the library function group 510 has two functions. However, the library function group 510 may have three or more functions.
  • the identifier storage unit 103 stores static identifiers for the number of functions possessed by the library function group 510.
  • FIG. 20 is an example of a configuration diagram of the information processing device 10 according to the present embodiment.
  • the information processing device 10 of the present embodiment includes an external program unit 601.
  • the external program unit 601 It includes a static partial identifier generation unit 602 that generates a partial identifier that is a part of the identifier, and an external program 604 that calls the calling program 401.
  • the static partial identifier 603 is transmitted to the program generation unit 101 and the calling program unit 104.
  • the library unit 105 includes a dynamic partial identifier generation unit 607. *** Explanation of operation *** FIG. 21 is an example of a flowchart showing the operation of the information processing apparatus 10 according to the present embodiment.
  • Step S601 Static partial identifier generation process
  • the static partial identifier generation unit 602 executes the static partial identifier generation process of generating the hash value of the text area of the execution process of the external program 604 as the static partial identifier 603.
  • Step S102 Static identifier generation process
  • the static identifier generation unit 102 executes a static identifier generation process for generating a static identifier in which the hash value of the text area of the calling program 401 and the static partial identifier 603 are combined.
  • the static identifier generation unit 102 concatenates the hash value of the text area of the execution process of the calling program 401 and the static partial identifier 603 as a character string.
  • Step S103 Caller program execution process
  • the external program 604 executes a caller program execution process that executes the caller program 401.
  • the calling program 401 may include processing other than the calling processing of the library function 501.
  • FIG. 22 is an example of a flowchart showing the operation of the library function call processing in the present embodiment.
  • Step S602 Dynamic partial identifier generation process
  • the dynamic partial identifier generation unit 607 executes the dynamic partial identifier generation process of generating the hash value of the text area of the execution process of the external program 604 as the dynamic partial identifier 608.
  • Step S301 Dynamic identifier generation process
  • the dynamic identifier generation unit 301 dynamically generates a dynamic identifier 403 that combines the hash value of the text area of the execution process of the calling program 401 and the dynamic partial identifier 608 stored in the static identifier generation unit 102. Executes the identifier generation process.
  • the dynamic identifier generation unit 301 performs the same processing as the processing in step S102.
  • the information processing device 10 is An external program unit 601 including an external program 604 that calls the calling program 401 is provided.
  • the external program unit 601 includes a static partial identifier generation unit 602 that generates a static partial identifier 603 that is a part of the identifier based on the external program 604.
  • the static identifier generation unit 102 generates the static identifier 402 based on the calling program 401 and the static partial identifier 603 generated by the static partial identifier generation unit 602.
  • the information processing device 10 is In the static partial identifier generation process, the static identifier generation unit 102 generates the static identifier 402 from the static partial identifier 603 and the hash value of the text area of the calling program unit 104.
  • the dynamic identifier generation unit 301 When the library unit 105 is called, the dynamic identifier generation unit 301 generates a dynamic identifier in which the dynamic partial identifier 608 and the hash value of the text area of the execution process of the calling program unit 104 are combined. Therefore, the information processing device 10 according to the present embodiment has a library function similar to the information processing device 10 according to the first embodiment when the calling program unit 104 uses an external program unit 601 other than the library function. It is possible to limit 501 calls.
  • the dynamic identifier generation unit 301 may use the static partial identifier 603 instead of the dynamic partial identifier 608 when generating the dynamic identifier 403.
  • the library unit 105 does not include a dynamic partial identifier generation unit 607.
  • the program generation unit 101 or the external program unit 601 stores the static partial identifier 603 in the identifier storage unit 103.
  • the dynamic identifier generation unit 301 uses the static partial identifier 603 stored in the identifier storage unit 103.
  • the configuration of the information processing device 10 according to the present embodiment is the same as the configuration of the information processing device 10 according to the third embodiment shown in FIGS. 17 and 18.
  • the identifier storage unit 103 according to the present embodiment does not store the static identifier 406.
  • FIG. 23 is an example of a flowchart showing the operation of the library function call processing in the present embodiment.
  • Step S302 Identifier determination process
  • the identifier determination unit 302 When the dynamic identifier 403 and the static identifier 402 stored in the identifier storage unit 103 match, it is determined that the library function 501 is executed for the call processing of the library function 501 of the library unit 105 by the calling program unit 104. , If the dynamic identifier 403 and the static identifier 402 stored in the identifier storage unit 103 do not match, it is determined that the library function 502 is executed for the call processing of the library function 501 of the library unit 105 by the calling program unit 104. ..
  • Step S303 Library function activation process
  • the library function activation unit 303 When the identifier determination unit 302 determines that the library function 501 is executed, the library function 501 activation process for activating the library function 501 of the library unit 105 called by the calling program unit 104 is executed. When the identifier determination unit 302 determines that the library function 502 is executed, the library function 502 activation process for activating the library function 502 of the library unit 105 called by the calling program unit 104 is executed.
  • the information processing apparatus 10 dynamically has the static identifier 402 stored in the identifier storage unit 103 when the library unit 105 is called from the calling program 401.
  • the dynamic identifier 403 generated by the identifier generation unit 301 is determined by the identifier determination unit 302, and when the determination result is disallowed, the library function 502 is executed to call the caller even when the determination result is disallowed.
  • the program unit 104 can operate normally.
  • the library function group 510 of the present embodiment has two functions. However, the library function group 510 may have three or more functions. In this modification, the identifier storage unit 103 stores a number of static identifiers that is one less than the number of functions possessed by the library function group 510.
  • the embodiment is not limited to the one shown in the first to fifth embodiments, and various changes can be made as needed.

Abstract

情報処理装置(10)は、ライブラリ関数(501)を有するライブラリ部(105)と、静的な識別子である静的識別子(402)を記憶している識別子記憶部(103)とを備え、ライブラリ部(105)は、動的な識別子である動的識別子を生成する動的識別子生成部と、呼出し元プログラム(401)がライブラリ関数(501)の呼出し処理を実行したとき、識別子記憶部(103)が記憶している静的識別子(402)と、動的識別子生成部が生成した動的識別子とに基づいて、呼出し元プログラム(401)の呼出し処理に対して、許可又は不許可を判定する識別子判定部とを備える。

Description

情報処理装置、情報処理方法、及び情報処理プログラム
 本発明は、ライブラリ関数の呼出し制限をする情報処理装置、ライブラリ関数の呼出し制限をする情報処理方法、及びライブラリ関数の呼出し制限をする情報処理プログラムに関するものである。
 再利用可能な1以上の関数をライブラリとして提供する場合、ライブラリの外部のプログラムである外部プログラムは、このライブラリに含まれる関数であるライブラリ関数を呼び出すことが可能となる。前記ライブラリ関数は不正な外部プログラムから呼び出される場合もあり、不正な外部プログラムからの呼出しを制限するためには、ライブラリ関数の実行を制御する手段が必要となる。
 特許文献1には、ライブラリ関数の呼出し処理を含むプログラムである呼出し元プログラムが持つ証明書と、秘密鍵で署名した呼出し元プログラムの識別子とを、呼出し元プログラムからライブラリ関数に渡し、ライブラリ関数内で呼出し元プログラムの実行許可又は不許可の判定を、条件に応じて多段階に分けて実施し、判定結果に問題なければライブラリ関数を実行するという制御方法が開示されている。
 また、特許文献2には、ライブラリ関数の呼出し時に、ライブラリが、ライブラリを管理するアプリケーションである管理アプリケーションへ実行許可又は不許可の判定を問合せ、管理アプリケーションは前記管理アプリケーションが持つ判定テーブルを元に呼出し元プログラムの実行許可又は不許可を判定する。そして、判定結果が実行許可であれば、ライブラリ関数を実行するという制御方法が開示されている。
特開2002-351563号公報 特開2014-021930号公報
 しかしながら、特許文献1における制御方法では、呼出し元プログラムごとに証明書と秘密鍵を管理する必要があるという課題がある。
 また、特許文献2における制御方法では、ライブラリとは別の管理アプリケーションが呼出し元プログラムの実行許可又は不許可を判定するため、管理アプリケーションにより判定ルールを管理する必要があるが、管理アプリケーションが持つ情報の生成について記載がなく、手動でやるとすると手間が掛かるという課題がある。また、前記判定に係る判定ルールの生成について記載がなく、不正な外部プログラムが正常な外部プログラムになりすますことを防ぐ手段が開示されていないという課題がある。
 本発明では、外部プログラムから呼び出されるライブラリ関数の実行の許可又は不許可の判定処理に必要な判定ルールの管理負荷を軽減することと、不正な外部プログラムが正常な外部プログラムになりすますことを防ぐことを目的とする。
 本発明の情報処理装置は、
 ライブラリ関数を有するライブラリ部と、
 静的な識別子である静的識別子を記憶している識別子記憶部と
を備え、
 前記ライブラリ部は、
 前記ライブラリ部の前記ライブラリ関数を呼び出した呼出し元プログラムに基づいて、動的な識別子である動的識別子を生成する動的識別子生成部と、
 前記呼出し元プログラムが前記ライブラリ関数の呼出し処理を実行したとき、前記識別子記憶部が記憶している前記静的識別子と、前記動的識別子生成部が生成した前記動的識別子とに基づいて、前記呼出し元プログラムの呼出し処理に対して、許可又は不許可を判定する識別子判定部と
を備える。
 本発明の情報処理装置は、呼出し元プログラム部がライブラリ部のライブラリ関数の呼出し処理を実行したとき、識別子記憶部が記憶する静的識別子及び動的識別子生成部が前記呼出し元プログラム部に基づいて生成した動的識別子に基づいて、識別子判定部が前記呼出し処理の許可又は不許可を判定する。そのため、前記識別子記憶部が前記呼出し元プログラム毎に前記静的識別子を記憶すればよいので、前記ライブラリ部のライブラリ関数の実行の許可又は不許可の判定のために必要な要素の管理を簡略化できる。また、本発明の情報処理装置によれば、前記識別子判定部が前記呼出し処理の許可又は不許可を判定することにより、不正な外部プログラムによる前記ライブラリ部のライブラリ関数の実行を防ぐことができるので、不正な外部プログラムが正常な外部プログラムになりすますことを防ぐことができる。
実施の形態1に係る情報処理装置10の構成図。 実施の形態1に係る情報処理装置10のハードウェア構成図。 実施の形態1に係る情報処理装置10の動作を示すフローチャート。 実施の形態1に係る処理概要図。 実施の形態1に係るライブラリ部105の構成図。 実施の形態1に係るライブラリ関数呼出し処理の動作を示すフローチャート。 実施の形態1の変形例に係るプログラム定義テーブル108の定義情報404の例。 実施の形態1の変形例に係る情報処理装置10の構成図。 実施の形態1の変形例に係るライブラリ関数呼出し処理の動作を示すフローチャート。 実施の形態1の変形例に係る情報処理装置10の構成図。 実施の形態1の変形例に係るライブラリ部105の構成図。 実施の形態1の変形例に係る情報処理装置10の動作を示すフローチャート。 実施の形態1の変形例に係るライブラリ関数呼出し処理の動作を示すフローチャート。 実施の形態1に係る情報処理装置10の変形例のハードウェア構成図。 実施の形態2に係る情報処理装置10の構成図。 実施の形態2に係る情報処理装置10の動作を示すフローチャート。 実施の形態3に係る情報処理装置10の構成図。 実施の形態3に係るライブラリ部105の構成図。 実施の形態3に係るライブラリ関数呼出し処理の動作を示すフローチャート。 実施の形態4に係る情報処理装置10の構成図。 実施の形態4に係る情報処理装置10の動作を示すフローチャート。 実施の形態4に係るライブラリ関数呼出し処理の動作を示すフローチャート。 実施の形態5に係るライブラリ関数呼出し処理の動作を示すフローチャート。
 実施の形態1.
***構成の説明***
 図1は、本実施の形態に係る情報処理装置10の構成図の例である。
 本図に示されるように、情報処理装置10は、プログラム生成部101と、静的識別子生成部102と、識別子記憶部103と、呼出し元プログラム部104と、ライブラリ部105と、プログラム記憶部106とを備える。
 プログラム生成部101は、プログラム記憶部106が記憶しているプログラムテンプレート107と、プログラム定義テーブル108とに基づいて呼出し元プログラム401を生成し、生成した呼出し元プログラム401を呼出し元プログラム部104に記憶させる。
 呼出し元プログラム401は、ライブラリ部105のライブラリ関数501の呼出し処理を含むプログラムである。
 本図において、プログラム生成部101が呼出し元プログラム401を生成することを明示するために呼出し元プログラム401を記載している。プログラム生成部101が呼出し元プログラム401を生成しない限り、呼出し元プログラム401は情報処理装置10内に存在しない。
 静的識別子生成部102は、前記呼び出し元プログラムに基づいて静的な識別子である静的識別子402を生成する。静的識別子402は、具体例としては、呼出し元プログラム401のテキスト領域のハッシュ値又は呼出し元プログラム401のプログラムファイルのファイルハッシュ値が挙げられる。
 識別子記憶部103は、静的識別子402を記憶する。識別子記憶部103は、具体例としては、ファイルが挙げられる。
 呼出し元プログラム部104は、呼出し元プログラム401を記憶しており、呼出し元プログラム401を実行する。なお、呼び出し元プログラムの一部がOSに組み込まれていてもよい。
 ライブラリ部105は、ライブラリ関数501の集合であるライブラリ及びライブラリ関数501の呼出しを制御する制御機構から成る。
 プログラム記憶部106は、プログラムテンプレート107とプログラム定義テーブル108とを記憶している。
 プログラムテンプレート107は、プログラム生成部101によって生成される呼出し元プログラム401のプログラム構造を定めている。プログラム生成部101は、プログラム定義テーブル108で定義された定義情報404を、プログラムテンプレート107に当てはめることによって、呼出し元プログラム401を生成する。プログラムテンプレート107は、任意のプログラム言語によって記述される。
 プログラム定義テーブル108は、プログラム生成部101によって生成される呼出し元プログラム401の動作の定義情報404を格納する。
 図2は、本実施の形態に係る情報処理装置10のH/W(ハードウェア)・S/W(ソフトウェア)構成図の例である。
 情報処理装置10は、本図に示すS/W204とH/W205から構成される。
 H/W205は、実施の形態1のハードウェア構成を示し、プロセッサ201と、メモリ202と、補助記憶装置203とから構成される。
 プロセッサ201は、プログラム生成部101と、静的識別子生成部102と、呼出し元プログラム部104と、ライブラリ関数501と、呼出し元プログラム401と、及びOS(Operating System)と等を実行するプロセッシング装置である。プロセッシング装置は、IC(Integrated Circuit)と呼ぶこともあり、プロセッサ201は、具体例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。プロセッサ201は、メモリ202に格納されたプログラムを読み出して実行する。
 本図の情報処理装置10は、プロセッサ201を1つだけ備えているが、情報処理装置10は、プロセッサ201を代替する複数のプロセッサを備えていても良い。これら複数のプロセッサは、プログラムの実行等を分担する。
 メモリ202は、データを一時的に記憶する記憶装置であり、プロセッサ201の作業領域として使用されるメインメモリとして機能する。メモリ202は、具体例としては、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)等のRAM(Random Access Memory)である。メモリ202は、プロセッサ201の演算結果を保持する。
 補助記憶装置203は、識別子記憶部103と、プログラムテンプレート107と、プログラム定義テーブル108と、プロセッサ201によって実行される各種プログラムと、S/W204と、各プログラムの実行時に使用されるデータとを記憶する。補助記憶装置203は、具体例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)である。また、補助記憶装置203は、メモリカード、SD(Secure Digital、登録商標)メモリカード、CF(Compact Flash)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)等の可搬記録媒体であってもよい。
 S/W204は、実施の形態1のソフトウェア構成を示し、プログラム生成部101と、静的識別子生成部102と、呼出し元プログラム部104と、ライブラリ部105と、OS109とから構成される。
 OS109は、プロセッサ201によって補助記憶装置203からロードされ、メモリ202に展開され、プロセッサ201上で実行される。OS109は、具体例としては、Linux(登録商標)又はWindows(登録商標)等、プロセッサ201に適合する任意のものでよい。なお、プログラムテンプレート107、プログラム定義テーブル108、OS109、及び、S/W204は、メモリ202に記憶されていてもよい。
***動作の説明***
 以下、本実施の形態における情報処理装置10の動作について説明する。
 図3は、本実施の形態の情報処理装置10の動作を示すフローチャートの例である。
 情報処理装置10の動作手順は、情報処理方法に相当する。また、情報処理装置10の動作を実現するプログラムは、情報処理プログラムに相当する。
(ステップS101:呼出し元プログラム生成処理)
 プログラム生成部101は、プログラム記憶部106に記憶されるプログラムテンプレート107及びプログラム定義テーブル108の定義情報404を読み出し、呼出し元プログラム401を生成する呼出し元プログラム生成処理を実行する。なお、情報処理装置10は、生成した呼出し元プログラム401を補助記憶装置203に記憶しても良い。
(ステップS102:静的識別子生成処理)
 静的識別子生成部102は、静的識別子402として呼出し元プログラム401のテキスト領域のハッシュ値を生成する静的識別子生成処理を実行する。なお、情報処理装置10は、生成した静的識別子402を補助記憶装置203に記憶しても良い。また、ハッシュ関数は、FSB(Fast Syndrome-Based hash functions)、又はSHA-3(Secure Hash Algorithm 3)等、任意のものを使用して良い。以下、ハッシュ関数に言及する場合には同様である。
 テキスト領域は、プログラム実行時において、実行中のプログラムが格納されたメモリ内の領域のことである。テキスト領域の内容は、プログラムのビルド時に把握することが可能であり、静的識別子生成部102は、呼出し元プログラム生成処理後に、実行中のプログラムが格納されたメモリ内の領域のハッシュ値を生成する。
 静的識別子生成部102は、生成した静的識別子402を識別子記憶部103に記憶する。
(ステップS103:呼出し元プログラム実行処理)
 呼出し元プログラム部104は、呼出し元プログラム401を実行する呼出し元プログラム実行処理を実行する。呼出し元プログラム401には、ライブラリ関数501の呼出し処理以外の処理が含まれることがある。
(ステップS104:ライブラリ関数呼出し処理)
 呼出し元プログラム部104は、ライブラリ部105のライブラリ関数501を呼出すライブラリ関数呼出し処理を実行する。ライブラリ部105は、動的識別子403と識別子記憶部103の記憶する静的識別子402を比較し、一致する場合、ライブラリ関数501の実行を許可と判定し、一致しない場合、不許可と判定する。
 ライブラリ部105は、
 許可と判定した場合、ライブラリ関数501を実行後、ライブラリ関数501の実行結果405を呼出し元プログラム部104に渡し、
 不許可と判定した場合、ライブラリ関数501の呼出しを行わずに本ステップの処理を終了する。
 図4は、本実施の形態に係る処理概要図であり、プログラム生成部101が呼出し元プログラム401を生成し、識別子記憶部103が静的識別子402を記憶する流れを示している。プログラム生成部101は、プログラム記憶部106が記憶するプログラムテンプレート107及びプログラム定義テーブル108を元に呼出し元プログラム401(プログラム1)を生成する。静的識別子生成部102は、呼出し元プログラム401を元に静的識別子402を生成する。識別子記憶部103は、静的識別子402を記憶する。
 本図の識別子記憶部103に記載してある値は、静的識別子402であるプログラム1のハッシュ値の例である。なお、ハッシュ関数値の桁数は、前記値の桁数に限定されず、任意の桁数であって良い。
***ライブラリ部105の構成の説明***
 図5は、本実施の形態におけるライブラリ部105の構成図の例である。
 ライブラリ部105は、動的識別子生成部301と、識別子判定部302と、ライブラリ関数起動部303とを備える。
 動的識別子生成部301は、呼出し元プログラム401の動的な識別子である動的識別子403を生成する。動的識別子403は、静的識別子生成部102で実行される静的識別子生成処理と同じ方式により生成される。動的識別子403は、具体例としては、呼出し元プログラム401の実行プロセスのテキスト領域のハッシュ値及び呼出し元プログラム401のプログラムファイルのファイルハッシュ値が挙げられる。
 識別子判定部302は、動的識別子403及び識別子記憶部103が記憶する静的識別子402に基づいて呼出し元プログラム部104によるライブラリ部105のライブラリ関数501の呼出し処理に対して許可又は不許可を判定する。
 ライブラリ関数起動部303は、呼出し元プログラム部104によるライブラリ部105のライブラリ関数501の呼出し処理に対応するライブラリ関数501を起動する。
***ライブラリ関数呼出し処理の動作の説明***
 図6は、本実施の形態のライブラリ関数呼出し処理の動作を示すフローチャートの例である。
(ステップS301:動的識別子生成処理)
 動的識別子生成部301は、呼出し元プログラム部104がライブラリ部105のライブラリ関数501の呼出し処理を実行すると、動的識別子403として、例えば、呼出し元プログラム部104の呼出し元プログラム401に対応する実行プロセスのテキスト領域のハッシュ値を生成する。ここで、実行プロセスのテキスト領域とは、呼出し元プログラム401が呼出し元プログラム401の実行中に使用しているメモリ内のテキスト領域のことである。
(ステップS302:識別子判定処理)
 識別子判定部302は、動的識別子403と識別子記憶部103の記憶する静的識別子402が一致する場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数501の呼出しを許可と判定する。識別子判定部302は、動的識別子403と静的識別子402が一致しない場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数501の呼出しを不許可と判定する。
(ステップS303:ライブラリ関数起動処理)
 識別子判定部302が許可と判定した場合、ライブラリ関数起動部303は、呼出し元プログラム部104が呼出したライブラリ部105のライブラリ関数501を起動する処理であるライブラリ関数起動処理を実行する。識別子判定部302が不許可と判定した場合、本ステップの処理を実行せずに処理フローを終了する。
***実施の形態1の特徴***
 本実施の形態の情報処理装置10は、
 ライブラリ関数501を有するライブラリ部105と、
 静的な識別子である静的識別子402を記憶している識別子記憶部103と
を備え、
 ライブラリ部105は、
 ライブラリ部105のライブラリ関数501を呼び出した呼出し元プログラム401に基づいて、動的な識別子である動的識別子403を生成する動的識別子生成部301と、
 呼出し元プログラム401がライブラリ関数501の呼出し処理を実行したとき、識別子記憶部103が記憶している静的識別子402と、動的識別子生成部301が生成した動的識別子403とに基づいて、呼出し元プログラム401の呼出し処理に対して、許可又は不許可を判定する識別子判定部302と
を備える。
 本実施の形態の情報処理装置10は、
 呼出し元プログラム401に基づいて静的識別子402を生成し、生成した静的識別子402を識別子記憶部103に記憶させる静的識別子生成部102を備える。
 本実施の形態の情報処理装置10は、
 静的識別子生成部102は、呼出し元プログラム401のテキスト領域のハッシュ値を静的識別子402として生成し、
 動的識別子生成部301は、呼出し元プログラム401の実行プロセスのテキスト領域のハッシュ値を動的識別子403として生成し、
 識別子判定部302は、静的識別子402と、動的識別子403とが一致する場合に、許可と判定することができる。
***実施の形態1の効果の説明***
 以上のように、本実施の形態によれば、呼出し元プログラム部104がライブラリ部105のライブラリ関数501の呼出し処理を実行したとき、識別子記憶部103が記憶する静的識別子402及び動的識別子生成部301が生成した動的識別子403に基づいて、識別子判定部302が前記呼出し処理に対して許可又は不許可を判定する。静的識別子402は静的識別子生成部102が呼出し元プログラム401に基づいて生成したものであり、動的識別子403は呼出し元プログラム部104の呼出し元プログラム401に基づいて生成したものである。そのため、情報処理装置10が前記呼出し処理に対する許可又は不許可の判定のために管理をする必要がある要素は、静的識別子402だけである。従って、情報処理装置10は、前記呼出し処理に対する許可又は不許可の判定のために必要な要素の管理を簡略化できる。
 また、本実施の形態によれば、識別子判定部302が呼出し処理の許可又は不許可を判定することにより、不正な外部プログラムによるライブラリ部105のライブラリ関数501の実行を防ぐことができるので、不正な外部プログラムが正常な外部プログラムになりすますことを防ぐことができる。
<変形例1>
 本実施の形態の情報処理装置10は、図2に示すように単一のコンピュータで構成されている。しかし、情報処理装置10は、複数のコンピュータで構成されていても良い。
 本変形例において、情報処理装置10は、前記複数のコンピュータ間で必要な情報の送受信を行うための通信IF(インタフェース)を備える。通信IFは、具体例としては、Ethernet(登録商標)、又は、USB(Universal Serial Bus)のポートである。なお、通信IFは、複数のポートであっても良い。以下、情報処理装置10が通信する旨を記載している場合、情報処理装置10は通信IFを備えているものとする。
<変形例2>
 本実施の形態の情報処理装置10は、図1に示すように情報処理装置10の内部に備えるプログラム生成部101を使用する。しかし、情報処理装置10は、情報処理装置10の外部のコンピュータ等が備えるプログラム生成部901であって、プログラム生成部101と同等のプログラム生成部901を使用しても良い。本変形例において、情報処理装置10は、プログラム生成部901にプログラムテンプレート107及びプログラム定義テーブル108を送信し、プログラム生成部901から呼出し元プログラム401を受信する。
<変形例3>
 本実施の形態の情報処理装置10は、図1に示すように情報処理装置10の内部に備える静的識別子生成部102を使用する。しかし、情報処理装置10は、情報処理装置10の外部のコンピュータ等が備える静的識別子生成部902であって、静的識別子生成部102と同等の静的識別子生成部902を使用しても良い。本変形例において、情報処理装置10は、静的識別子生成部902に呼出し元プログラム401を送信し、静的識別子生成部902から静的識別子402を受信する。
<変形例4>
 本実施の形態の情報処理装置10は、図1に示すように情報処理装置10の内部に備える識別子記憶部103を使用する。しかし、情報処理装置10は、情報処理装置10の外部のコンピュータ等が備える識別子記憶部903であって、識別子記憶部103と同等の識別子記憶部903を使用しても良い。本変形例において、情報処理装置10は、識別子記憶部903に静的識別子402を送信し、識別子記憶部903から静的識別子402を受信する。
<変形例5>
 本実施の形態のライブラリ部105は、図5に示すようにライブラリ部105の内部に備える動的識別子生成部301を使用する。しかし、ライブラリ部105は、ライブラリ部105の外部のコンピュータ等が備える動的識別子生成部904であって、動的識別子生成部301と同等の動的識別子生成部904を使用しても良い。本変形例において、ライブラリ部105は、動的識別子生成部904に呼出し元プログラム401を送信し、動的識別子生成部904から動的識別子403を受信する。
<変形例6>
 本実施の形態のライブラリ部105は、図5に示すようにライブラリ部105の内部に備える識別子判定部302を使用する。しかし、ライブラリ部105は、ライブラリ部105の外部のコンピュータ等が備える識別子判定部905であって、識別子判定部302と同等の識別子判定部905を使用しても良い。本変形例において、ライブラリ部105は、識別子判定部905に動的識別子403を送信し、識別子判定部905から識別子判定部905の判定結果を受信する。
<変形例7>
 本実施の形態の動的識別子生成部301、識別子判定部302、及びライブラリ関数起動部303は、図5に示すようにライブラリ関数501の外部にある。しかし、動的識別子生成部301、識別子判定部302、及びライブラリ関数起動部303の一部又は全部は、ライブラリ関数501の内部にあっても良い。
<変形例8>
 本実施の形態の静的識別子生成部102及び動的識別子生成部301は、1のハッシュ関数を適用する。しかし、静的識別子生成部102及び動的識別子生成部301は、複数のハッシュ関数を適用しても良い。本変形例においては、
 静的識別子生成部102及び動的識別子生成部301は、プログラムのテキスト領域に対して複数のハッシュ関数を適用し、
 静的識別子生成部102が適用する複数のハッシュ関数と動的識別子生成部301が適用する複数のハッシュ関数は、同一であり、
 識別子判定部302は、静的識別子生成部102及び動的識別子生成部301が適用する全ての対応するハッシュ関数値が一致する場合に許可と判定する。
<変形例9>
 本実施の形態の情報処理装置10は、図1に示すように情報処理装置10の内部に備えるプログラム記憶部106を使用する。しかし、情報処理装置10は、情報処理装置10の外部のコンピュータ等が備えるプログラム記憶部906であって、プログラム記憶部106と同等のプログラム記憶部906を使用しても良い。本変形例において、情報処理装置10は、プログラム記憶部906からプログラムテンプレート107及びプログラム定義テーブル108を受信する。なお、プログラムテンプレート107及びプログラム定義テーブル108のいずれか一方のみがプログラム記憶部906に記憶されており、他方が情報処理装置10のプログラム記憶部106に記憶されていても良い。
<変形例10>
 プログラムテンプレート107に1のプログラムテンプレートがあり、プログラム定義テーブル108に複数の定義情報404がある場合、
 プログラム生成部101は、定義情報404毎に複数の呼出し元プログラム401を生成でき、
 静的識別子生成部102は、複数の呼出し元プログラム401に対応する複数の静的識別子402を生成でき、
 識別子記憶部103は、複数の静的識別子402を記憶できる。
<変形例11>
 本実施の形態のプログラムテンプレート107は、1のプログラムテンプレートを有する。しかし、プログラムテンプレート107は、複数のプログラムテンプレートを有していても良い。本変形例において、プログラム生成部101は、
 プログラムテンプレート107毎に複数の呼出し元プログラム401を生成でき、
 静的識別子生成部102は、複数の呼出し元プログラム401に対応する複数の静的識別子402を生成でき、
 識別子記憶部103は、複数の静的識別子402を記憶できる。
<変形例12>
 プログラム定義テーブル108は、呼出し元プログラム401の定義情報404として、図7に示すものを採用しても良い。本図に示すプログラム定義テーブル108には、プログラム1及びプログラム2に対応する定義情報404がまとめられている。
 本変形例において、プログラム定義テーブル108は、呼出し元プログラム401で実行される処理A及び処理Bの実行回数を記憶している。なお、処理A及び処理Bは、プログラムテンプレートにも含まれる処理である。また、プログラム名は、呼出し元プログラム401に付与した名称のことであり、前記名称は、処理A及び処理Bの実行回数が異なるプログラムを区別するためのものである。ここでは、処理Aを4回、処理Bを4回実行する呼出し元プログラム401をプログラム1と呼び、処理Aを2回、処理Bを3回実行する呼出し元プログラム401をプログラム2と呼ぶ。
<変形例13>
 呼出し元プログラム部104は、スクリプト言語により作成されたプログラムを実行できても良い。本変形例によれば、情報処理装置10は、スクリプト言語により作成された呼出し元プログラム401を実行することができる。
<変形例14>
 本実施の形態の情報処理装置10は、ライブラリ部105が識別子記憶部103を備えない。しかし、ライブラリ部105が識別子記憶部103を備えていても良い。
<変形例15>
 以下、前述した実施の形態と異なる点について、図面を参照しながら説明する。
***構成の説明***
 本変形例における情報処理装置10の構成は、図1に示す構成と同じである。
***動作の説明***
 本変形例における情報処理装置10の動作フローチャートは、図3に示すものと同じである。ただし、一部の処理に差異があり、前記差異について以下で説明する。
(ステップS102:静的識別子生成処理)
 静的識別子生成部102は、静的識別子402として呼出し元プログラム401のプログラムファイルのハッシュ値を生成する静的識別子生成処理を実行する。なお、情報処理装置10は、生成した静的識別子402を補助記憶装置203に記憶しても良い。
 本実施の形態におけるライブラリ関数呼出し処理の動作フローチャートは、図6に示すものと同じである。ただし、一部の処理に差異があり、前記差異について以下で説明する。
(ステップS301:動的識別子生成処理)
 動的識別子生成部301は、呼出し元プログラム部104がライブラリ部105のライブラリ関数501の呼出し処理を実行すると、動的識別子403として、呼出し元プログラム部104が呼出し元プログラム部104の実行時に使用する各ファイルのファイルハッシュ値を構成要素とするファイルハッシュ値リストを生成する。
(ステップS302:識別子判定処理)
 識別子判定部302は、識別子記憶部103の記憶する静的識別子402が前記ファイルハッシュ値リストに含まれる場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数501の呼出し処理に対して許可と判定する。識別子判定部302は、識別子記憶部103の記憶する静的識別子402が前記ファイルハッシュ値リストに含まれない場合、前記呼出し処理に対して不許可と判定する。
***変形例15の特徴***
 本変形例の情報処理装置10は、
 静的識別子生成部102は、呼出し元プログラム401のプログラムファイルのファイルハッシュ値を静的識別子402として生成し、
 動的識別子生成部301は、呼出し元プログラム401が呼出し元プログラム401の実行時に使用する各ファイルのハッシュ値を構成要素とするファイルハッシュ値リストを動的識別子403として生成し、
 識別子判定部302は、静的識別子402がファイルハッシュ値リストに含まれる場合に許可と判定することができる。
***変形例15の効果の説明***
 以上のように、本変形例によれば、呼出し元プログラム401の生成時に呼出し元プログラム401のテキスト領域が不明である場合又は呼出し元プログラム401に対応する実行プロセスのテキスト領域にアクセスできない場合において、呼出し元プログラム401のプログラムファイルのファイルハッシュ値を利用することで、プログラム生成部101等によって自動生成されたプログラム以外のプログラムに対して、ライブラリ関数501の呼出しを制限することが可能となる。
<変形例16>
 以下、本変形例について、図面を参照しながら説明する。
***構成の説明***
 図8は、本変形例における情報処理装置10の構成図の例である。
 本変形例の呼出し元プログラム部104は、静的識別子生成部102を備える。
***動作の説明***
 図9は、本変形例におけるライブラリ関数呼出し処理の動作を示すフローチャートの例である。
(ステップS304:静的識別子生成処理)
 本ステップの処理は、図3に示すステップS102の処理と同様である。
***変形例16の効果の説明***
 以上のように、本変形例によれば、
 情報処理装置10は、呼出し元プログラム401の生成時に静的識別子402を識別子記憶部103に渡さず、
 識別子記憶部103は、ライブラリ部105が呼出し元プログラム401から呼出された際に、静的識別子要求処理を実行する。
 従って、本変形例に係る情報処理装置10は、ライブラリ関数501の呼び出しを制限することが可能である。
 <変形例17>
 以下、本変形例について、図面を参照しながら説明する。
***構成の説明***
 図10は、本変形例における情報処理装置10の構成図の例である。
 本変形例の情報処理装置10は、静的識別子を暗号化する静的識別子暗号化部701を備える。
 図11は、本変形例におけるライブラリ部105の構成図の例である。
 本変形例のライブラリ部105は、静的識別子暗号化部701が暗号化した静的識別子を復号する静的識別子復号部702を備える。
***動作の説明***
 図12は、本変形例における情報処理装置10の動作を示すフローチャートの例である。
(ステップS701:静的識別子暗号化処理)
 静的識別子暗号化部701は、静的識別子402を暗号化し、暗号化済静的識別子703を生成する静的識別子暗号化処理を実行する。静的識別子暗号化部701は、共通鍵暗号、又は、公開鍵暗号等、任意の暗号化アルゴリズムを使用して良い。
(ステップS702:暗号化済静的識別子記憶処理)
 識別子記憶部103は、暗号化済静的識別子703を記憶する暗号化済静的識別子記憶処理を実行する。
 図13は、本変形例におけるライブラリ関数呼出し処理の動作を示すフローチャートの例である。
(ステップS703:静的識別子復号処理)
 静的識別子復号部702は、識別子記憶部103が記憶する暗号化済静的識別子703を復号する静的識別子復号処理を実行する。静的識別子復号部702は、静的識別子暗号化部701で使用する暗号化アルゴリズムに対応する復号アルゴリズムを使用する。
***変形例17の特徴***
 本変形例に係る情報処理装置10は、
 静的識別子を暗号化することにより暗号化済静的識別子703を生成し、生成した暗号化済静的識別子703を識別子記憶部103に記憶させる静的識別子暗号化部701を備え、
 ライブラリ部105は、暗号化済静的識別子703を復号する静的識別子復号部702を備え、
 識別子判定部302は、呼出し元プログラム401がライブラリ部105のライブラリ関数の呼出し処理を実行したとき、静的識別子として、識別子記憶部103が記憶している暗号化済静的識別子703を静的識別子復号部702が復号したものを用いる。
***変形例17の効果の説明***
 以上のように、本変形例によれば、
 情報処理装置10は、不正な外部プログラムが呼出し元プログラム部104になりすまし、静的識別子402をライブラリ関数105に通知した場合において、
 静的識別子暗号化部701が、静的識別子402を暗号化し、
 静的識別子復号部702が、識別子記憶部103に記憶した暗号化済静的識別子703を復号することにより、
 ライブラリ関数501の呼び出しを制限することが可能である。
<変形例18>
 本実施の形態では、各機能構成要素をソフトウェアで実現する場合を説明した。しかし、変形例として、各機能構成要素はハードウェアで実現されても良い。
 図14を参照して、本変形例に係る情報処理装置10の構成を説明する。
 各機能構成要素がハードウェアで実現される場合には、情報処理装置10は、プロセッサ201に代えて、電子回路206を備える。あるいは、図示しないが、情報処理装置10は、プロセッサ201、メモリ202、及び補助記憶装置203に代えて、電子回路206を備える。電子回路206は、各機能構成要素(及びメモリ202と補助記憶装置203)との機能とを実現する専用の電子回路である。ここで、電子回路は処理回路と呼ぶこともある。
 電子回路206は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)が想定される。
 各機能構成要素を1つの電子回路206で実現してもよいし、各機能構成要素を複数の電子回路206に分散させて実現してもよい。
 あるいは、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
 前述したプロセッサ201とメモリ202と補助記憶装置203と電子回路206とを、総称して「プロセッシングサーキットリー」という。つまり、各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
 実施の形態2.
 以下、前述した実施の形態と異なる点について、図面を参照しながら説明する。
***構成の説明***
 図15は、本実施の形態における情報処理装置10の構成図の例である。
 本実施の形態の情報処理装置10は、プログラム生成部101を備えず、プログラム記憶部106からプログラムを読み出すプログラム読出部110を備える。
 プログラム読出部110は、呼出し元プログラム401を補助記憶装置203から読み出し、読み出した呼出し元プログラム401を呼出し元プログラム部104に記憶させる。
 また、本実施の形態のプログラム記憶部106は、プログラムテンプレート107及びプログラム定義テーブル108を記憶せず、呼出し元プログラム401を記憶する。
***動作の説明***
 図16は、本実施の形態における情報処理装置10の動作を示すフローチャートの例である。
(ステップS106:プログラム読出処理)
 プログラム読出部110は、プログラム記憶部106から呼出し元プログラム401を読み出すプログラム読出処理を実行する。
***実施の形態2の効果の説明***
 以上のように、本実施の形態によれば、情報処理装置10は、呼出し元プログラム401を補助記憶装置203から読み出す場合においても、ライブラリ関数501の呼び出しを制限することが可能となる。
<変形例19>
 本実施の形態における情報処理装置10は、図15に示すように情報処理装置10の内部に備えるプログラム記憶部106を使用する。しかし、情報処理装置10は、情報処理装置10の外部のプログラム記憶部106を使用しても良い。本変形例において、情報処理装置10は、前記外部のプログラム記憶部106から呼出し元プログラム401のプログラムファイルを受信する。
<変形例20>
 本実施の形態における呼出し元プログラム401は、1の呼出し元プログラム401を有する。しかし、呼出し元プログラム401は、複数の呼出し元プログラム401を有していてもよい。本変形例において、
 プログラム読出部110は、複数の呼出し元プログラム401を読出すことができ、
 静的識別子生成部102は、複数の呼出し元プログラム401に対応する複数の静的識別子402を生成でき、
 識別子記憶部103は、複数の静的識別子402を記憶できる。
 実施の形態3.
 以下、前述した実施の形態と異なる点について、図面を参照しながら説明する。
***構成の説明***
 図17は、本実施の形態における情報処理装置10の構成図の例である。
 本実施の形態の情報処理装置10は、識別子記憶部103に、静的識別子402と、静的識別子406とを記憶する。静的識別子402は、ライブラリ関数501と対応している。静的識別子406は、ライブラリ関数502と対応している。静的識別子には優先度があり、静的識別子402の優先度は、静的識別子406の優先度よりも高いものとする。
 図18は、本実施の形態におけるライブラリ部105の構成図の例である。
 本実施の形態のライブラリ部105は、ライブラリ関数群510を有し、ライブラリ関数群510は、ライブラリ関数501と、ライブラリ関数502とを有する。ライブラリ関数502は、具体例としては、ライブラリ関数501と同様の処理結果を出力するが、ライブラリ関数501より処理時間が短い、ライブラリ関数501より処理結果の精度が高い、等の特徴を備える。
 本実施の形態において、典型的には、静的識別子生成部102と、動的識別子生成部301とが有するハッシュ関数の種類数は、ライブラリ関数群510が有するライブラリ関数の総数と同じである。
 ライブラリ関数501に対応するハッシュ関数をハッシュ関数801とし、ライブラリ関数502に対応するハッシュ関数をハッシュ関数802とする。
***動作の説明***
 本実施の形態における情報処理装置10の動作を示すフローチャートは、図3に示す、実施の形態1に係る情報処理装置10の動作を示すフローチャートと同じである。ただし、一部の処理に差異がある。
(ステップS102:静的識別子生成処理)
 静的識別子生成部102は、
 静的識別子402として、ハッシュ関数801を用いて呼出し元プログラム401のテキスト領域のハッシュ値を生成し、
 静的識別子406として、ハッシュ関数802を用いて呼出し元プログラム401のテキスト領域のハッシュ値する静的識別子生成処理を実行する。
(ステップS104:ライブラリ関数呼出し処理)
 呼出し元プログラム部104は、ライブラリ部105のライブラリ関数群510の関数を呼出すライブラリ関数呼出し処理を実行する。ライブラリ部105は、ライブラリ関数群510の関数の実行後、ライブラリ関数群510の関数の実行結果405を呼出し元プログラム部104に渡す。
 図19は、本実施の形態におけるライブラリ関数呼出し処理の動作を示すフローチャートの例である。
(ステップS301:動的識別子生成処理)
 動的識別子生成部301は、呼出し元プログラム部104がライブラリ部105のライブラリ関数群510の呼出し処理を実行すると、
 動的識別子403として、ハッシュ関数801を用いて呼出し元プログラム401に対応する実行プロセスのテキスト領域のハッシュ値を生成し、
 動的識別子407として、ハッシュ関数802を用いて呼出し元プログラム401に対応する実行プロセスのテキスト領域のハッシュ値を生成する。
(ステップS302:識別子判定処理)
 識別子判定部302は、優先度の高い静的識別子に対応する判定処理から順に、判定処理を実行する。
 識別子判定部302は、
 動的識別子403と、識別子記憶部103の記憶する静的識別子402とが一致する場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数群510の呼出し処理に対してライブラリ関数501を実行と判定して次のステップに進み、
 動的識別子407と、識別子記憶部103の記憶する静的識別子406とが一致する場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数群510の呼出し処理に対してライブラリ関数502を実行と判定して次のステップに進み、
 これら以外の場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数群510の呼出し処理に対して不許可と判定する。
(ステップS303:ライブラリ関数起動処理)
 ライブラリ関数起動部303は、
 識別子判定部302がライブラリ関数501を実行と判定した場合、呼出し元プログラム部104が呼出したライブラリ部105のライブラリ関数501を起動するライブラリ関数501起動処理を実行し、
 識別子判定部302がライブラリ関数502を実行と判定した場合、呼出し元プログラム部104が呼出したライブラリ部105のライブラリ関数502を起動するライブラリ関数502起動処理を実行する。
 識別子判定部302が不許可と判定した場合、本ステップの処理を実行せずに処理フローを終了する。
***実施の形態3の特徴***
 本実施の形態に係る情報処理装置10において、
 ライブラリ部105は、複数のライブラリ関数を有し、
 静的識別子生成部102は、1以上の静的識別子を生成し、
 識別子判定部302は、呼出し元プログラム401の呼出し処理に対して許可と判定する場合、ライブラリ部105が有するいずれか1のライブラリ関数の呼出しを許可する。
***実施の形態3の効果の説明***
 以上のように、本実施の形態によれば、情報処理装置10は、
 ライブラリ部105が呼出し元プログラム401から呼出された際に、識別子記憶部103に記憶された静的識別子402及び静的識別子406と、動的識別子生成部301により生成される動的識別子403とを識別子判定部302により判定し、
 判定結果に応じて、ライブラリ部105で実行するライブラリ関数を切り替えることが可能である。
<変形例21>
 本実施の形態において、ライブラリ関数群510は、2の関数を有する。しかし、ライブラリ関数群510は、3以上の関数を有しても良い。
 本変形例において、識別子記憶部103は、ライブラリ関数群510が有する関数の個数分の静的識別子を記憶する。
 実施の形態4.
 以下、前述した実施の形態1と異なる点について、図面を参照しながら説明する。
***構成の説明***
 図20は、本実施の形態における情報処理装置10の構成図の例である。
 本実施の形態の情報処理装置10は、外部プログラム部601を備える。
 外部プログラム部601は、
 識別子の一部である部分識別子を生成する静的部分識別子生成部602と、呼出し元プログラム401を呼び出す外部プログラム604とを備え、
 プログラム生成部101と、呼出し元プログラム部104とに、静的部分識別子603を送信する。
 ライブラリ部105は、動的部分識別子生成部607を備える。
***動作の説明***
 図21は、本実施の形態における情報処理装置10の動作を示すフローチャートの例である。
(ステップS601:静的部分識別子生成処理)
 静的部分識別子生成部602は、外部プログラム604の実行プロセスのテキスト領域のハッシュ値を、静的部分識別子603として生成する静的部分識別子生成処理を実行する。
(ステップS102:静的識別子生成処理)
 静的識別子生成部102は、呼出し元プログラム401のテキスト領域のハッシュ値と、静的部分識別子603とを結合した静的識別子を生成する静的識別子生成処理を実行する。
 静的識別子生成部102は、具体例として、呼出し元プログラム401の実行プロセスのテキスト領域のハッシュ値と、静的部分識別子603とを、文字列として連結する。
(ステップS103:呼出し元プログラム実行処理)
 外部プログラム604は、呼出し元プログラム401を実行する呼出し元プログラム実行処理を実行する。呼出し元プログラム401には、ライブラリ関数501の呼出し処理以外の処理が含まれることがある。
 図22は、本実施の形態におけるライブラリ関数呼出し処理の動作を示すフローチャートの例である。
(ステップS602:動的部分識別子生成処理)
 動的部分識別子生成部607は、外部プログラム604の実行プロセスのテキスト領域のハッシュ値を、動的部分識別子608として生成する動的部分識別子生成処理を実行する。
(ステップS301:動的識別子生成処理)
 動的識別子生成部301は、呼出し元プログラム401の実行プロセスのテキスト領域のハッシュ値と、静的識別子生成部102が記憶する動的部分識別子608とを結合した動的識別子403を生成する動的識別子生成処理を実行する。動的識別子生成部301は、ステップS102における処理と同様の処理を行う。
***実施の形態4の特徴***
 本実施の形態に係る情報処理装置10は、
 呼出し元プログラム401を呼び出す外部プログラム604を備える外部プログラム部601を備え、
 外部プログラム部601は、外部プログラム604に基づいて識別子の一部である静的部分識別子603を生成する静的部分識別子生成部602を備え、
 静的識別子生成部102は、呼出し元プログラム401と、静的部分識別子生成部602が生成した静的部分識別子603とに基づいて静的識別子402を生成する。
***実施の形態4の効果の説明***
 以上のように、本実施の形態によれば、情報処理装置10は、
 静的部分識別子生成処理において、静的識別子生成部102が静的部分識別子603と、呼出し元プログラム部104のテキスト領域のハッシュ値とから静的識別子402を生成し、
 ライブラリ部105の呼出し時に、動的識別子生成部301が動的部分識別子608と呼出し元プログラム部104の実行プロセスのテキスト領域のハッシュ値とを結合した動的識別子を生成する。
 従って、本実施の形態に係る情報処理装置10は、呼出し元プログラム部104がライブラリ関数以外の外部プログラム部601を利用する場合において、実施の形態1に係る情報処理装置10と同様に、ライブラリ関数501の呼び出しを制限することが可能である。
<変形例22>
 動的識別子生成部301は、動的識別子403を生成する際に、動的部分識別子608の代わりに静的部分識別子603を利用しても良い。
 本変形例において、
 ライブラリ部105は、動的部分識別子生成部607を備えず、
 プログラム生成部101、又は、外部プログラム部601は、識別子記憶部103に静的部分識別子603を記憶させ、
 動的識別子生成部301は、識別子記憶部103が記憶している静的部分識別子603を利用する。
 実施の形態5.
 以下、前述した実施の形態3と異なる点について、図面を参照しながら説明する。
***構成の説明***
 本実施の形態に係る情報処理装置10の構成は、図17及び図18に示す、実施の形態3に係る情報処理装置10の構成と同様である。ただし、本実施の形態に係る識別子記憶部103は、静的識別子406を記憶しない。
***動作の説明***
 図23は、本実施の形態におけるライブラリ関数呼出し処理の動作を示すフローチャートの例である。
(ステップS302:識別子判定処理)
 識別子判定部302は、
 動的識別子403と、識別子記憶部103の記憶する静的識別子402とが一致する場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数501の呼出し処理に対してライブラリ関数501を実行と判定し、
 動的識別子403と、識別子記憶部103の記憶する静的識別子402とが一致しない場合、呼出し元プログラム部104によるライブラリ部105のライブラリ関数501の呼出し処理に対してライブラリ関数502を実行と判定する。
(ステップS303:ライブラリ関数起動処理)
 ライブラリ関数起動部303は、
 識別子判定部302がライブラリ関数501を実行と判定した場合、呼出し元プログラム部104が呼出したライブラリ部105のライブラリ関数501を起動するライブラリ関数501起動処理を実行し、
 識別子判定部302がライブラリ関数502を実行と判定した場合、呼出し元プログラム部104が呼出したライブラリ部105のライブラリ関数502を起動するライブラリ関数502起動処理を実行する。
***実施の形態5の効果の説明***
 以上のように、本実施の形態によれば、情報処理装置10は、ライブラリ部105が呼出し元プログラム401から呼出された際に、識別子記憶部103に記憶された静的識別子402と、動的識別子生成部301により生成される動的識別子403とを識別子判定部302により判定し、判定結果が不許可の場合、ライブラリ関数502を実行することで、判定結果が不許可の場合においても呼出し元プログラム部104が正常に動作することが可能となる。
<変形例23>
 本実施の形態のライブラリ関数群510は、2の関数を有する。しかし、ライブラリ関数群510は、3以上の関数を有しても良い。
 本変形例において、識別子記憶部103は、ライブラリ関数群510が有する関数の個数より1少ない数の静的識別子を記憶する。
***他の実施の形態***
 実施の形態1から5の説明においてハッシュ関数を用いることを記載したが、ハッシュ関数の代わりに、ブルームフィルタ等のハッシュ関数を応用した技術を用いても良い。また、チェックサム等のハッシュ関数に類する技術を用いても良い。
 前述した各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
 また、実施の形態は実施の形態1から5で示したものに限定されるものではなく、必要に応じて種々の変更が可能である。
 1 プログラム、2 プログラム、10 情報処理装置、101 プログラム生成部、102 静的識別子生成部、103 識別子記憶部、104 呼出し元プログラム部、105 ライブラリ部、106 プログラム記憶部、107 プログラムテンプレート、108 プログラム定義テーブル、109 OS、110 プログラム読出部、201 プロセッサ、202 メモリ、203 補助記憶装置、204 S/W、205 H/W、206 電子回路、301 動的識別子生成部、302 識別子判定部、303 ライブラリ関数起動部、401 呼出し元プログラム、402 静的識別子、403 動的識別子、404 定義情報、405 実行結果、406 静的識別子、407 動的識別子、501 ライブラリ関数、502 ライブラリ関数、510 ライブラリ関数群、601 外部プログラム部、602 静的部分識別子生成部、603 静的部分識別子、604 外部プログラム、607 動的部分識別子生成部、608 動的部分識別子、701 静的識別子暗号化部、702 静的識別子復号部、703 暗号化済静的識別子、801 ハッシュ関数、802 ハッシュ関数、901 プログラム生成部、902 静的識別子生成部、903 識別子記憶部、904 動的識別子生成部、905 識別子判定部、906 プログラム記憶部。

Claims (11)

  1.  ライブラリ関数を有するライブラリ部と、
     静的な識別子である静的識別子を記憶している識別子記憶部と
    を備え、
     前記ライブラリ部は、
     前記ライブラリ部の前記ライブラリ関数を呼び出した呼出し元プログラムに基づいて、動的な識別子である動的識別子を生成する動的識別子生成部と、
     前記呼出し元プログラムが前記ライブラリ関数の呼出し処理を実行したとき、前記識別子記憶部が記憶している前記静的識別子と、前記動的識別子生成部が生成した前記動的識別子とに基づいて、前記呼出し元プログラムの呼出し処理に対して、許可又は不許可を判定する識別子判定部と
    を備える情報処理装置。
  2.  前記呼出し元プログラムに基づいて前記静的識別子を生成し、生成した前記静的識別子を前記識別子記憶部に記憶させる静的識別子生成部を備える請求項1に記載の情報処理装置。
  3.  前記静的識別子生成部は、前記呼出し元プログラムのテキスト領域のハッシュ値を前記静的識別子として生成し、
     前記動的識別子生成部は、前記呼出し元プログラムの実行プロセスのテキスト領域のハッシュ値を前記動的識別子として生成し、
     前記識別子判定部は、前記静的識別子と、前記動的識別子とが一致する場合に、許可と判定する請求項2に記載の情報処理装置。
  4.  前記静的識別子生成部は、前記呼出し元プログラムのプログラムファイルのファイルハッシュ値を前記静的識別子として生成し、
     前記動的識別子生成部は、前記呼出し元プログラムが前記呼出し元プログラムの実行時に使用する各ファイルのハッシュ値を構成要素とするファイルハッシュ値リストを前記動的識別子として生成し、
     前記識別子判定部は、前記静的識別子が前記ファイルハッシュ値リストに含まれる場合に許可と判定する請求項2に記載の情報処理装置。
  5.  前記ライブラリ部は、複数の前記ライブラリ関数を有し、
     前記静的識別子生成部は、1以上の前記静的識別子を生成し、
     前記識別子判定部は、前記呼出し元プログラムの前記呼出し処理に対して許可と判定する場合、前記ライブラリ部が有するいずれか1の前記ライブラリ関数の呼出しを許可する請求項2から4のいずれか1項に記載の情報処理装置。
  6.  前記呼出し元プログラムを呼び出す外部プログラムを備える外部プログラム部を備え、
     前記外部プログラム部は、前記外部プログラムに基づいて識別子の一部である静的部分識別子を生成する静的部分識別子生成部を備え、
     前記静的識別子生成部は、前記呼出し元プログラムと、前記静的部分識別子生成部が生成した前記静的部分識別子とに基づいて前記静的識別子を生成する請求項2から5のいずれか1項に記載の情報処理装置。
  7.  前記静的識別子を暗号化することにより暗号化済静的識別子を生成し、生成した前記暗号化済静的識別子を前記識別子記憶部に記憶させる静的識別子暗号化部を備え、
     前記ライブラリ部は、前記暗号化済静的識別子を復号する静的識別子復号部を備え、
     前記識別子判定部は、前記呼出し元プログラムが前記ライブラリ部の前記ライブラリ関数の呼出し処理を実行したとき、前記静的識別子として、前記識別子記憶部が記憶している前記暗号化済静的識別子を前記静的識別子復号部が復号したものを用いる請求項1に記載の情報処理装置。
  8.  プログラムテンプレートと、プログラム定義テーブルとを記憶しているプログラム記憶部と、
     前記呼出し元プログラムを記憶しており、前記呼出し元プログラムを実行する呼出し元プログラム部と、
     前記プログラム記憶部が記憶している前記プログラムテンプレートと、前記プログラム定義テーブルとに基づいて前記呼出し元プログラムを生成し、生成した前記呼出し元プログラムを前記呼出し元プログラム部に記憶させるプログラム生成部と
    を備える請求項1から7のいずれか1項に記載の情報処理装置。
  9.  前記呼出し元プログラムを記憶しており、前記呼出し元プログラムを実行する呼出し元プログラム部と、
     前記呼出し元プログラムを補助記憶装置から読み出し、読み出した前記呼出し元プログラムを前記呼出し元プログラム部に記憶させるプログラム読出部と
    を備える請求項1から7のいずれか1項に記載の情報処理装置。
  10.  ライブラリ部が、ライブラリ関数を有し、
     識別子記憶部が、静的な識別子である静的識別子を記憶しており、
     前記ライブラリ部の動的識別子生成部が、前記ライブラリ部の前記ライブラリ関数を呼び出した呼出し元プログラムに基づいて、動的な識別子である動的識別子を生成し、
     前記ライブラリ部の識別子判定部が、前記呼出し元プログラムが前記ライブラリ関数の呼出し処理を実行したとき、前記識別子記憶部が記憶している前記静的識別子と、前記動的識別子生成部が生成した前記動的識別子とに基づいて、前記呼出し元プログラムの呼出し処理に対して、許可又は不許可を判定する情報処理方法。
  11.  コンピュータに、
     静的な識別子である静的識別子を記憶させ、
     ライブラリ部のライブラリ関数を呼び出した呼出し元プログラムに基づいて、動的な識別子である動的識別子を生成させ、
     前記呼出し元プログラムが前記ライブラリ関数の呼出し処理を実行したとき、記憶させた前記静的識別子と、生成させた前記動的識別子とに基づいて、前記呼出し元プログラムの呼出し処理に対して、許可又は不許可を判定させる情報処理プログラム。
PCT/JP2019/034974 2019-09-05 2019-09-05 情報処理装置、情報処理方法、及び情報処理プログラム WO2021044578A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2019/034974 WO2021044578A1 (ja) 2019-09-05 2019-09-05 情報処理装置、情報処理方法、及び情報処理プログラム
TW108147548A TW202111522A (zh) 2019-09-05 2019-12-25 資訊處理裝置、資訊處理方法、以及資訊處理程式產品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/034974 WO2021044578A1 (ja) 2019-09-05 2019-09-05 情報処理装置、情報処理方法、及び情報処理プログラム

Publications (1)

Publication Number Publication Date
WO2021044578A1 true WO2021044578A1 (ja) 2021-03-11

Family

ID=74852372

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/034974 WO2021044578A1 (ja) 2019-09-05 2019-09-05 情報処理装置、情報処理方法、及び情報処理プログラム

Country Status (2)

Country Link
TW (1) TW202111522A (ja)
WO (1) WO2021044578A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3186117B2 (ja) * 1991-10-18 2001-07-11 株式会社日立製作所 データ中心型ソフトウエア部品によるプログラム自動生成システム
JP2006340224A (ja) * 2005-06-03 2006-12-14 Ntt Docomo Inc 識別情報管理装置及び識別情報管理方法
JP2015084006A (ja) * 2012-02-13 2015-04-30 三菱電機株式会社 動的リンクライブラリ保護方法、動的リンクライブラリ認証方法、動的リンクライブラリ保護装置、動的リンクライブラリ認証装置、プログラム管理システム、プログラムおよび動的リンクライブラリ保護方法、プログラムおよび動的リンクライブラリ認証方法
JP2016540282A (ja) * 2013-10-10 2016-12-22 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. 動的ライブラリを保護する方法及び装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3186117B2 (ja) * 1991-10-18 2001-07-11 株式会社日立製作所 データ中心型ソフトウエア部品によるプログラム自動生成システム
JP2006340224A (ja) * 2005-06-03 2006-12-14 Ntt Docomo Inc 識別情報管理装置及び識別情報管理方法
JP2015084006A (ja) * 2012-02-13 2015-04-30 三菱電機株式会社 動的リンクライブラリ保護方法、動的リンクライブラリ認証方法、動的リンクライブラリ保護装置、動的リンクライブラリ認証装置、プログラム管理システム、プログラムおよび動的リンクライブラリ保護方法、プログラムおよび動的リンクライブラリ認証方法
JP2016540282A (ja) * 2013-10-10 2016-12-22 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. 動的ライブラリを保護する方法及び装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SHIBA, MASUE ET AL.: "Industrial IoT Security Architecture", TOSHIBA REVIEW, vol. 73, no. 5, 21 September 2018 (2018-09-21), pages 6 - 10, ISSN: 2432-1168 *

Also Published As

Publication number Publication date
TW202111522A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
US8775784B2 (en) Secure boot up of a computer based on a hardware based root of trust
KR101397637B1 (ko) 다중 사용자 감응 코드 및 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치
KR101091465B1 (ko) 프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치
CN109800050B (zh) 一种虚拟机的内存管理方法、装置、相关设备及系统
US8572410B1 (en) Virtualized protected storage
KR100309535B1 (ko) 보안저장영역에서애플리케이션데이터의보호방법및장치
KR100737628B1 (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
US8438658B2 (en) Providing sealed storage in a data processing device
CN109564553B (zh) 多阶段存储器完整性方法和装置
US20170337380A1 (en) Self-contained cryptographic boot policy validation
WO2019104988A1 (zh) Plc的安全处理单元及其总线仲裁方法
TW201617957A (zh) 鑑別變數之管理技術
US20120260106A1 (en) System and method for binary layout randomization
EP2947594A2 (en) Protecting critical data structures in an embedded hypervisor system
JP2014191509A (ja) 情報処理装置、情報処理プログラム
US8412903B2 (en) Method and system for managing secure code loading in PC-slave devices
US7970133B2 (en) System and method for secure and flexible key schedule generation
KR20040094724A (ko) 멀티-토큰 실 및 실 해제
US10248579B2 (en) Method, apparatus, and instructions for safely storing secrets in system memory
CN111190686A (zh) 用于对多租户计算环境中的租户工作负载进行完整性保护的系统、设备和方法
WO2017129138A1 (zh) 数据仓库中的数据保护方法及装置
US20140068276A1 (en) Information processing apparatus
TWI524208B (zh) Encryption and Decryption of Function Library of Open System
KR20140051350A (ko) 디지털 서명 권한자 의존형 플랫폼 기밀 생성 기법
KR20120007012A (ko) 콘텐츠의 적응적 보호를 위한 메모리 장치 및 방법

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19944556

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP