WO2014050431A1 - プログラム検証装置、プログラム検証方法およびプログラム検証プログラム - Google Patents

プログラム検証装置、プログラム検証方法およびプログラム検証プログラム Download PDF

Info

Publication number
WO2014050431A1
WO2014050431A1 PCT/JP2013/073316 JP2013073316W WO2014050431A1 WO 2014050431 A1 WO2014050431 A1 WO 2014050431A1 JP 2013073316 W JP2013073316 W JP 2013073316W WO 2014050431 A1 WO2014050431 A1 WO 2014050431A1
Authority
WO
WIPO (PCT)
Prior art keywords
variable
program
encryption
key
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2013/073316
Other languages
English (en)
French (fr)
Inventor
匠 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to US14/421,649 priority Critical patent/US9501646B2/en
Priority to CN201380049331.8A priority patent/CN104662553B/zh
Priority to EP13842867.7A priority patent/EP2902939A4/en
Priority to JP2014538305A priority patent/JP5726385B2/ja
Publication of WO2014050431A1 publication Critical patent/WO2014050431A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 invention relates to, for example, a program verification apparatus, a program verification method, and a program verification program for verifying program reliability.
  • the object of the present invention is to verify, for example, whether or not the information output by the target program to be verified is information output after being encrypted.
  • the program verification apparatus of the present invention A program input unit for using a variable, an output function, and an encryption function and inputting a program including an assignment statement; An output variable extraction unit for extracting, from the program, an output variable in which output information output by the output function is set; An encryption variable extraction unit that extracts, from the program, an encryption variable in which encryption information encrypted by the encryption function is set; An encryption state variable extraction unit that refers to an assignment statement included in the program and extracts from the program an encryption state variable to which the encryption information set in the encryption variable extracted by the encryption variable extraction unit is substituted; An encryption state determination unit for determining whether or not the encryption state variable extracted by the encryption state variable extraction unit and the output variable extracted by the output variable extraction unit are the same variable; A verification result output unit that outputs a verification result of the program based on a determination result of the encryption state determination unit.
  • the present invention for example, it is possible to verify whether or not the information output by the target program to be verified is information output after being encrypted.
  • FIG. 1 is a configuration diagram of a program verification device 100 according to Embodiment 1.
  • FIG. FIG. 2 is a configuration diagram of a necessary information extraction unit 120 in the first embodiment.
  • FIG. 3 is a configuration diagram of a protection state analysis unit 130 in the first embodiment.
  • FIG. 3 is a schematic diagram of a vulnerability determination unit 140 according to Embodiment 1.
  • 4 is a flowchart showing a program verification method of the program verification apparatus 100 according to the first embodiment.
  • 5 is a flowchart showing necessary information extraction processing (S120) in the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a target program 101 according to the first embodiment.
  • FIG. 6 shows an example of an information acquisition function list 181 in the first embodiment.
  • FIG. 6 is a diagram showing an example of a protection target extraction list 191 in the first embodiment.
  • FIG. 6 shows an example of an output function list 182 in the first embodiment.
  • FIG. 6 is a diagram illustrating an example of an output function extraction list 192 according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a target program 101 according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of a cryptographic function list 183 in the first embodiment.
  • [Fig. 14] is a diagram illustrating an example of a cryptographic function extraction list 193 in the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a target program 101 according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of a variable information extraction list 194 according to the first embodiment.
  • FIG. 5 is a flowchart showing protection state analysis processing (S130) in the first embodiment.
  • 5 is a flowchart illustrating an example of a protection target state acquisition process (S200) according to the first embodiment.
  • FIG. 6 is a diagram showing an example of a protection target extraction list 191 in the first embodiment.
  • FIG. FIG. 3 is a diagram illustrating an example of a target program 101 according to the first embodiment.
  • FIG. 14 is a diagram illustrating an example of a cryptographic function extraction list 193 in the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a target program 101 according to the first embodiment.
  • FIG. 6 is a diagram showing an example of a protection target extraction list 191 in the first embodiment.
  • FIG. 14] is a diagram illustrating an example of a cryptographic function extraction list 193 in the first embodiment.
  • FIG. 5 is a flowchart showing an example of a key state acquisition process (S300) in the first embodiment.
  • FIG. [Fig. 14] is a diagram illustrating an example of a cryptographic function extraction list 193 in the first embodiment.
  • FIG. 6 is a diagram illustrating an example of a variable information extraction list 194 according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a target program 101 according to the first embodiment.
  • [Fig. 14] is a table showing an example of a key state management table 196 in the first embodiment.
  • 5 is a flowchart showing key variable analysis processing (S350) in the first embodiment.
  • 5 is a flowchart showing an example of vulnerability determination processing (S140) in the first embodiment.
  • FIG. 6 is a diagram illustrating an example of an output function extraction list 192 according to the first embodiment.
  • [Fig. 14] is a table showing an example of a key state management table 196 in the first embodiment.
  • FIG. 3 is a diagram illustrating an example of hardware resources of the program verification apparatus 100 according to the first embodiment.
  • Embodiment 1 A form for verifying whether or not the target program to be verified is a program that is output after appropriately encrypting the protection target information will be described.
  • FIG. 1 is a configuration diagram of a program verification apparatus 100 according to the first embodiment.
  • the program verification apparatus 100 in Embodiment 1 is demonstrated based on FIG.
  • the program verification apparatus 100 is a computer that verifies whether the verification target program is a highly reliable program that is output after the information to be protected is protected by encryption. Information is also called data (same below).
  • the verification target program is referred to as “target program 101”
  • the protection target information is referred to as “protection target information”.
  • the program verification device 100 (an example of a program verification device) includes a program input unit 110, a necessary information extraction unit 120, a protection state analysis unit 130, a vulnerability determination unit 140, and a verification device storage unit 190.
  • a program input unit 110 includes a program input unit 110, a necessary information extraction unit 120, a protection state analysis unit 130, a vulnerability determination unit 140, and a verification device storage unit 190.
  • the program input unit 110 (an example of a program input unit) inputs the target program 101.
  • the necessary information extraction unit 120 extracts various types of information necessary for verification from the target program 101 input by the program input unit 110. To do.
  • the necessary information extraction unit 120 generates a protection target extraction list 191, an output function extraction list 192, an encryption function extraction list 193, and a variable information extraction list 194 as the extraction results of various information.
  • the protection target extraction list 191 is a list of variable names of variables for protection target information.
  • the output function extraction list 192 is a list of function names of output functions that output information.
  • the encryption function extraction list 193 is a list of function names of encryption functions that encrypt (or decrypt) information.
  • the variable information extraction list 194 is a list of variable names of variables.
  • the protection state analysis unit 130 determines the protection program of the protection target information based on the extraction result of various information by the necessary information extraction unit 120. Is analyzed.
  • the protection state analysis unit 130 generates a protection target state management table 195 and a key state management table 196 based on the analysis result.
  • the protection target state management table 195 is a list indicating whether or not the protection target information is encrypted for each protection target information variable.
  • the key state management table 196 is a list indicating whether or not the encryption key is protected for each encryption key used for encryption.
  • the vulnerability determination unit 140 determines a vulnerable element included in the target program 101 based on the analysis result of the target program 101 by the protection state analysis unit 130.
  • the determination result is output as a program verification result 197.
  • the verification device storage unit 190 (an example of a list storage unit) stores data used by the program verification device 100.
  • the verification device storage unit 190 stores the following data.
  • the verification device storage unit 190 stores the target program 101 input by the program input unit 110.
  • the verification device storage unit 190 stores in advance an information acquisition function list 181, an output function list 182, an encryption function list 183, and a hash function list 184.
  • the verification device storage unit 190 stores a protection target extraction list 191, an output function extraction list 192, an encryption function extraction list 193, and a variable information extraction list 194 generated by the necessary information extraction unit 120.
  • the verification device storage unit 190 stores a protection target state management table 195 and a key state management table 196 generated by the protection state analysis unit 130.
  • the verification device storage unit 190 stores the program verification result 197 generated by the vulnerability determination unit 140.
  • the information acquisition function list 181 (an example of an information acquisition function list) is a list that defines information acquisition functions for acquiring protection target information, and is used to generate the protection target extraction list 191.
  • the output function list 182 (an example of an output function list) is a list that defines output functions that output information, and is used to generate an output function extraction list 192.
  • the encryption function list 183 (an example of the encryption function list) is a list that defines encryption functions for encrypting (or decrypting) information, and is used to generate the encryption function extraction list 193.
  • the hash function list 184 is a list of generally available cryptographic hash functions (SHA1, MD5, etc.), and is used to generate the key state management table 196.
  • FIG. 2 is a configuration diagram of the necessary information extraction unit 120 in the first embodiment. The configuration of the necessary information extraction unit 120 in the first embodiment will be described with reference to FIG.
  • the necessary information extraction unit 120 includes a protection target extraction unit 121, an output function extraction unit 122, an encryption function extraction unit 123, and a variable information extraction unit 124. Below, the outline
  • a protection target extraction unit 121 extracts a variable for protection target information from the target program 101 based on the information acquisition function list 181, and a protection target extraction list 191 that lists the extracted variables. Is generated.
  • the output function extraction unit 122 extracts an output function from the target program 101 based on the output function list 182 and generates an output function extraction list 192 that lists the extracted output functions.
  • the cryptographic function extraction unit 123 extracts a cryptographic function from the target program 101 based on the cryptographic function list 183, and a cryptographic function extraction list 193 that lists the extracted cryptographic functions. Is generated.
  • the variable information extraction unit 124 extracts variables from the target program 101 and generates a variable information extraction list 194 that lists the extracted variables.
  • FIG. 3 is a configuration diagram of the protection state analysis unit 130 in the first embodiment. The configuration of the protection state analysis unit 130 in the first embodiment will be described with reference to FIG.
  • the protection state analysis unit 130 includes a protection target state acquisition unit 131 and a key state acquisition unit 132. Below, the outline
  • the protection target state acquisition unit 131 (an example of an encryption state variable extraction unit) analyzes the target program 101 based on the protection target extraction list 191 and the encryption function extraction list 193, and sets a variable for each variable for protection target information.
  • the protection target state management table 195 indicating whether or not the protection target information to be encrypted is encrypted is generated.
  • the key state acquisition unit 132 (an example of a key content determination unit and a key state determination unit) analyzes the target program 101 based on the encryption function extraction list 193, the variable information extraction list 194, and the hash function list 184, and performs encryption.
  • a key state management table 196 indicating whether or not the encryption key is protected is generated for each encryption key used.
  • FIG. 4 is a schematic diagram of the vulnerability determination unit 140 in the first embodiment. An overview of the vulnerability determination unit 140 according to Embodiment 1 will be described with reference to FIG.
  • the vulnerability determination unit 140 (an example of the encryption state determination unit, the protection target determination unit, and the verification result output unit) is based on the output function extraction list 192, the protection target state management table 195, and the key state management table 196.
  • the vulnerable element included in is determined, and a program verification result 197 indicating the determination result is output.
  • FIG. 5 is a flowchart showing the program verification method of the program verification apparatus 100 according to the first embodiment. A program verification method of the program verification apparatus 100 according to the first embodiment will be described with reference to FIG.
  • the program input unit 110 inputs the target program 101.
  • the necessary information extraction unit 120 extracts various information from the target program 101, and generates an extraction list of various information.
  • the protection state analysis unit 130 analyzes the target program 101 for the protection state of the protection target information based on the various information extraction lists.
  • the vulnerability determination unit 140 determines a vulnerable element included in the target program 101 based on the analysis result of the target program 101, generates a program verification result 197 indicating the determination result, and generates the generated program verification result 197. Output.
  • the user designates a program (target program 101) to be verified to the program verification apparatus 100 using an input device such as a keyboard or a mouse.
  • the program input unit 110 of the program verification apparatus 100 inputs the designated target program 101.
  • the target program 101 is input in the form of source code. If the target program 101 is a compiled bytecode, the program input unit 110 decompiles the target program 101 into source code.
  • the target program 101 is stored in advance in the auxiliary storage device, and the program input unit 110 inputs the target program 101 from the auxiliary storage device.
  • the input is, for example, storing in a predetermined storage area of a memory (verification device storage unit 190). It progresses to S120 after S110.
  • FIG. 6 is a flowchart showing necessary information extraction processing (S120) in the first embodiment.
  • the necessary information extraction process (S120) in the first embodiment will be described with reference to FIG.
  • each component of the necessary information extraction unit 120 refers to the target program 101 input in S101 from the first line to the last line, and generates various lists as follows.
  • the necessary information extraction process (S120) is composed of each process of S121 to S124.
  • the protection target extraction unit 121 acquires the information acquisition function list 181 from the verification device storage unit 190. Based on the acquired information acquisition function list 181, the protection target extraction unit 121 extracts variables for which protection target information is set from the target program 101 input in S 110. Hereinafter, a variable in which protection target information is set is referred to as a “protection target variable”.
  • the protection target extraction unit 121 generates a protection target extraction list 191 that lists the extracted protection target variables. It progresses to S122 after S121.
  • FIG. 7 is a diagram illustrating an example of the target program 101 according to the first embodiment.
  • FIG. 8 is a diagram illustrating an example of the information acquisition function list 181 according to the first embodiment.
  • FIG. 9 is a diagram showing an example of the protection target extraction list 191 in the first embodiment. An example of the protection target extraction process (S121) will be described with reference to FIGS.
  • the information acquisition function list 181A (see FIG. 8) is a list of information acquisition functions for acquiring protection target information.
  • the information acquisition function list 181A is generated in advance and stored in the verification device storage unit 190.
  • the information acquisition function list 181A includes “function name” and “protection target information” in association with each other.
  • “Function name” indicates the function name of the information acquisition function.
  • “Protection target information” indicates the content of the protection target information acquired by the information acquisition function.
  • the information acquisition function list 181A of FIG. 8 indicates that, for example, the information acquisition function “getProfile” is a function for acquiring the protection target information “profile”.
  • the protection target extraction unit 121 extracts a line in which the information acquisition function is used from the target program 101A (see FIG. 7) based on the information acquisition function list 181A (see FIG. 8). For example, the information acquisition function “getProfile” is used in the first line of the target program 101A in FIG.
  • the protection target extraction unit 121 generates a protection target extraction list 191A (see FIG. 9) based on the line where the information acquisition function is used and the information acquisition function list 181A.
  • the protection target extraction list 191A includes “variable name”, “position (line number)”, “protection target information”, and “information state” in association with each other.
  • “Variable name” indicates the variable name of the protection target variable in which the protection target information acquired by the information acquisition function is set.
  • “Position (line number)” indicates the number of the line in which the protection target information is set in the protection target variable.
  • “Protection target information” indicates the content of the protection target information set in the protection target variable.
  • the “information state” indicates whether the protection target information set in the protection target variable is in an encrypted state (ciphertext) or an unencrypted state (plaintext).
  • the protection target extraction unit 121 sets “plaintext” as an initial value in the “information state” field.
  • the protection target extraction list 191A in FIG. 9 indicates that, for example, the protection target information “profile” is set to the protection target variable “profile” in the first line of the target program 101A (see FIG. 7).
  • the output function extraction unit 122 acquires the output function list 182 from the verification device storage unit 190.
  • the output function extraction unit 122 extracts an output function from the target program 101 input in S110 based on the acquired output function list 182.
  • the output function extraction unit 122 generates an output function extraction list 192 that lists the extracted output functions. It progresses to S123 after S122.
  • FIG. 10 is a diagram illustrating an example of the output function list 182 according to the first embodiment.
  • FIG. 11 is a diagram illustrating an example of the output function extraction list 192 according to the first embodiment.
  • An example of the output function extraction process (S122) will be described based on FIG. 7, FIG. 10, and FIG.
  • the output function list 182A (see FIG. 10) is a list of output functions that output information.
  • the output function list 182A is generated in advance and stored in the verification device storage unit 190.
  • the output function list 182A includes “function name”, “output content”, and “output state” in association with each other.
  • “Function name” indicates the function name of the output function.
  • “Output content” indicates the content of the output function. For example, a file output function, a communication function, an inter-program communication function, and a database write function are examples of output functions.
  • “Output state” indicates “ciphertext” or “plaintext”.
  • Ciphertext means that the output function outputs encrypted information
  • plaintext means that the output function outputs information without encryption.
  • the output function list 182A in FIG. 10 indicates, for example, that the output function “output” outputs a file without encrypting it.
  • the output function extraction unit 122 extracts lines in which the output function is used from the target program 101A (see FIG. 7) based on the output function list 182A (see FIG. 10). For example, the output function “output” is used in the ninth line of the target program 101A in FIG.
  • the output function extraction unit 122 generates an output function extraction list 192A (see FIG. 11) based on the line where the output function is used and the output function list 182A.
  • the output function extraction list 192A includes “function name”, “position (line number)”, “actual argument”, and “output state” in association with each other.
  • “Function name” indicates the function name of the output function used in the target program 101A.
  • “Position (line number)” indicates the line number where the output function is used.
  • “Actual argument” indicates an argument of the output function, that is, a variable for output information output by the output function.
  • An argument is a kind of variable (and so on).
  • a variable for output information output by the output function is referred to as “output variable”.
  • the “output state” indicates the state (plain text or cipher text) of the output information output by the output function.
  • the output function “output” indicates the setting values (output information) of the output variables “name”, “age”, and “sex” on the ninth line of the target program 101A (see FIG. 7). This indicates that the output is in the “plaintext” state.
  • the cryptographic function extraction unit 123 acquires the cryptographic function list 183 from the verification device storage unit 190.
  • the cryptographic function extraction unit 123 extracts a cryptographic function from the target program 101 input in S110 based on the acquired cryptographic function list 183.
  • the cryptographic function extraction unit 123 generates a cryptographic function extraction list 193 that lists the extracted cryptographic functions. After S123, the process proceeds to S124.
  • FIG. 12 is a diagram illustrating an example of the target program 101 according to the first embodiment.
  • FIG. 13 is a diagram showing an example of the encryption function list 183 in the first embodiment.
  • FIG. 14 is a diagram showing an example of the cryptographic function extraction list 193 in the first embodiment.
  • An example of the encryption function extraction process (S123) will be described with reference to FIGS.
  • the encryption function list 183B (see FIG. 13) is a list of encryption functions for encrypting or decrypting information.
  • an encryption function for encrypting information is referred to as an “encryption function”
  • an encryption function for decrypting information is referred to as a “decryption function”.
  • the cryptographic function list 183B is generated in advance and stored in the verification device storage unit 190.
  • the cryptographic function list 183B includes “function name”, “key position”, and “processing content” in association with each other. “Function name” indicates the function name of the encryption function, and “Key position” indicates the argument name of the argument in which the encryption key or the decryption key is set among the arguments of the encryption function.
  • “Processing content” indicates whether the processing of the cryptographic function is encryption or decryption.
  • the encryption function list 183B of FIG. 13 indicates that, for example, the encryption function “enc” performs “encryption” processing using the information of the “second argument” as the encryption key.
  • the cryptographic function extraction unit 123 extracts rows in which the cryptographic function is used from the target program 101B (see FIG. 12) based on the cryptographic function list 183B (see FIG. 13). For example, the encryption function “enc” is used in the ninth line of the target program 101B in FIG.
  • the cryptographic function extraction unit 123 generates a cryptographic function extraction list 193B (see FIG. 14) based on the row where the cryptographic function is used and the cryptographic function list 183B.
  • the cryptographic function extraction list 193B includes "function name”, "position (line number)", “actual argument of function”, “actual argument for key”, “variable for output”, and “output state” in association with each other. .
  • “Function name” indicates the function name of the cryptographic function.
  • “Position (line number)” indicates the number of the line where the cryptographic function is used.
  • “Function actual argument” indicates an argument set in the cryptographic function.
  • “Actual argument for key” indicates an argument in which an encryption key is set among arguments set in the encryption function.
  • the “variable for output” indicates a variable in which information processed by the cryptographic function is set.
  • a variable in which information processed by the cryptographic function is set is referred to as “cryptographic variable”.
  • the “output state” indicates whether the information processed by the cryptographic function is in an encrypted state or a decrypted state.
  • the encryption function extraction list 193B of FIG. 14 includes, for example, the encryption function “enc” in the argument “tel” using the encryption key set in the argument “key” on the ninth line of the target program 101B (see FIG. 12). This indicates that the set information is encrypted, and that the information encrypted by the encryption function “enc” is set in the encryption variable “enc_tel”.
  • variable information extraction unit 124 extracts variables from the target program 101 input in S110, and generates a variable information extraction list 194 that lists the extracted variables.
  • the variable information extraction unit 124 can use constant propagation, which is known as a general code optimization technique of a compiler, as processing for extracting variables (see Non-Patent Document 1).
  • the required information extraction process (S120) is terminated by S124.
  • FIG. 15 is a diagram illustrating an example of the target program 101 according to the first embodiment.
  • FIG. 16 is a diagram illustrating an example of the variable information extraction list 194 according to the first embodiment.
  • An example of the variable information extraction process (S124) will be described with reference to FIGS.
  • variable information extraction unit 124 uses the six variables “profile”, “name”, “age”, “key”, and “h_key” used as the assignment destination (left side) of the assignment statement or the argument of the function from the target program 101C in FIG. Extract “enc_tel”.
  • the variable information extraction unit 124 sets the extracted variable information in the variable information extraction list 194C (see FIG. 16).
  • variable information extraction list 194C includes “variable name”, “position (line number)”, and “variable content” in association with each other.
  • “Variable name” indicates a variable used in the target program 101C.
  • “Position (line number)” indicates the line number where the variable is used.
  • “Content of variable” indicates whether the value set to the variable is “variable” or “invariable” (constant).
  • variable may be classified into two types other than “variable” and “invariable”.
  • the output value “input variable” of the external input function or the output value “time variable” of the time acquisition function may be added to the type of variable.
  • the content of the variable to which the output value of the function is set is “invariant”.
  • the function includes “input variable” as an argument
  • the content of the variable to which the output value of the function is set is “input variable”.
  • the function does not include “input variable” as an argument but includes “time variable” as an argument
  • the content of the variable to which the output value of the function is set is “time variable”.
  • the function does not include “input variable” or “time variable” as an argument but includes a “variable” variable as an argument, the content of the variable to which the output value of the function is set is “variable”.
  • the contents of the variables used in the target program 101C in FIG. 15 are as follows.
  • the contents of the substitution destination variables “profile”, “name”, and “age” to which the output value of a function having no argument (such as getProfile ()) is substituted are “variable”.
  • the content of the variable “key” in which the constant “12345” is set is “invariant”.
  • the content of the variable “h_key” to which the output value of the function (hash) including only the invariant variable as an argument is set to “invariant”.
  • the content of the variable “enc_tel” to which the output value of the function (enc) including the variable variable (name) as an argument is set is “variable”.
  • variable information extraction list 194C of FIG. 16 for example, a variable variable “profile” is used in the first line of the target program 101C, and an invariant variable “key” is 4th to 6th line of the target program 101C. It is used in the eyes.
  • Each process of S121 to S124 of the necessary information extraction process (S120) described with reference to FIG. 6 may be executed by changing the order or may be executed in parallel. After the necessary information extraction process (S120), the process proceeds to the protection state analysis process (S130) (see FIG. 5).
  • FIG. 17 is a flowchart showing protection state analysis processing (S130) in the first embodiment.
  • the protection state analysis process (S130) in Embodiment 1 is demonstrated based on FIG.
  • the protection state analysis process (S130) includes the processes of S200 and S300.
  • the protection target state acquisition unit 131 executes the target program based on the protection target extraction list 191 generated in S121 (see FIG. 6) and the cryptographic function extraction list 193 generated in S123 (see FIG. 6). 101 is analyzed. Then, the protection target state acquisition unit 131 generates a protection target state management table 195 based on the analysis result. An example of the protection target state acquisition process (S200) will be described later. After S200, the process proceeds to S300.
  • the key state acquisition unit 132 stores the cryptographic function extraction list 193 generated in S123 (see FIG. 6), the variable information extraction list 194 generated in S124 (see FIG. 6), and the verification device storage unit 190.
  • the target program 101 is analyzed based on the hash function list 184 stored in advance. Then, the key state acquisition unit 132 generates a key state management table 196 based on the analysis result.
  • An example of the key state acquisition process (S300) will be described later. With S300, the protection state analysis process (S130) ends.
  • S200 and S300 of the protection state analysis process (S130) described in FIG. 17 may be executed by changing the order or may be executed in parallel.
  • FIG. 18 is a flowchart illustrating an example of the protection target state acquisition process (S200) according to the first embodiment.
  • An example of the protection target state acquisition process (S200) in the first embodiment will be described with reference to FIG.
  • the protection target state acquisition process (S200) includes the processes of S210 to S261.
  • the protection target state acquisition unit 131 generates a flow graph representing the processing flow of the target program 101.
  • a flow graph is data of a graph that represents all processing paths (processing order) of a program using a node that represents one instruction (and line number) in the program and an edge that connects the nodes in the processing order.
  • the protection target state acquisition unit 131 generates a flow graph of the target program 101 using an existing tool. It progresses to S220 after S210.
  • the protection target state acquisition unit 131 In S220, the protection target state acquisition unit 131 generates a protection target state management table 195, and initializes the protection target state management table 195 based on the protection target extraction list 191. It progresses to S230 after S220.
  • FIG. 19 is a diagram illustrating an example of the protection target extraction list 191 in the first embodiment.
  • FIG. 20 is a diagram illustrating an example of initialization of the protection target state management table 195 according to the first embodiment.
  • An example of the management table initialization process (S220) will be described with reference to FIGS.
  • the protection target state management table 195D includes “line number”, “plaintext”, and “ciphertext” in association with each other.
  • Line number indicates the line number of the target program 101.
  • Paintext indicates an unencrypted protected variable.
  • the unencrypted protected variable is referred to as a “plaintext state variable”.
  • Ciphertext indicates an encrypted variable to be protected.
  • the encrypted protection target variable is referred to as “encryption state variable”.
  • the protection target variable “profile” in the “plaintext” state is set in the first line of the target program 101, and the protection target variable “name” in the “plaintext” state is 2 of the target program 101. It is set in the line. Therefore, the protection target state acquisition unit 131 sets the protection target variable “profile” in the “plaintext” field associated with the row number “first line” of the protection target state management table 195D, as shown in FIG. To do. Further, the protection target state acquisition unit 131 sets the protection target variable “name” in the “plain text” column associated with the row number “second line” of the protection target state management table 195D.
  • the protection target state acquisition unit 131 associates the variable name of the protection target variable with the number of the row in which the protection target variable is set and the state of the protection target variable. It is set in the state management table 195D.
  • the protection target state management table 195D shown in FIG. 20 is a state initialized based on the protection target extraction list 191D shown in FIG.
  • the protection target state acquisition unit 131 designates the first node of the flow graph generated in S210 with a processing pointer.
  • the processing pointer designates a node to be processed. It progresses to S231 after S230.
  • the protection target state acquisition unit 131 reads the node specified by the processing pointer from the flow graph generated in S210 into the memory.
  • the node read in S231 is referred to as “attention node”
  • the instruction represented by the node read in S231 is referred to as “attention node instruction”.
  • the protection target state acquisition unit 131 identifies the node immediately before the target node based on the flow graph, and sets the plaintext state variable and the encrypted state variable associated with the same line number as the identified node as the protection target state. Obtained from the management table 195. Then, it is confirmed that the acquired plaintext state variable and encrypted state variable are not overwritten by the node command of interest. If the node instruction of interest is an assignment statement and the left side of the assignment statement is a plaintext state variable or an encryption state variable, the plaintext state variable or encryption state variable is overwritten. If not overwritten, the protection target state acquisition unit 131 adds the acquired plaintext state variable and encryption state variable to the protection target state management table 195 in association with the same line number as the node of interest.
  • the protection target state management table 195D when the protection target state management table 195D is in the state shown in FIG. 20, the protection target state acquisition unit 131 sets the plain text “profile” of the line number “first line” immediately before the target node to the line of the target node. It adds to the plaintext of the number “2nd line”. Thereby, the protection target state management table 195D becomes the state shown in FIG.
  • FIG. 21 is a diagram illustrating an example of the protection target state management table 195 according to the first embodiment. It progresses to S232 after S231.
  • the protection target state acquisition unit 131 determines whether the attention node instruction represented by the attention node read in S231 is an assignment statement. If the node instruction of interest is an assignment statement (YES), the process proceeds to S240. If the node instruction of interest is not an assignment statement (NO), the process proceeds to S260.
  • the protection target state acquisition unit 131 analyzes the right side (assignment source) of the node instruction (assignment statement) of interest as (1) and (2) below.
  • the protection target state acquisition unit 131 analyzes whether or not the protection target variable set in the protection target state management table 195 is included in the right side of the attention node instruction.
  • the protection target state acquisition unit 131 refers to the encryption function extraction list 193, and the encryption function set in the encryption function extraction list 193 on the right side of the node instruction of interest and the encryption set in the protection target state management table 195 Analyzes whether it is a state variable. It progresses to S250 after S240.
  • the protection target state acquisition unit 131 determines whether the protection target variable is included in the right side (substitution source) of the node instruction of interest (assignment statement) based on the analysis result of S240.
  • the process proceeds to S251.
  • the protection target variable is not included in the right side of the node instruction of interest (NO)
  • the process proceeds to S260.
  • the protection target state acquisition unit 131 determines whether the right side (substitution source) of the node instruction of interest (assignment sentence) is either an encryption function or an encryption state variable. judge. When the right side of the node instruction of interest is either the encryption function or the encryption state variable (YES), the process proceeds to S252. When the right side of the node instruction of interest is neither an encryption function nor an encryption state variable (NO), the process proceeds to S253.
  • the protection target state acquisition unit 131 associates the variable name on the left side (substitution destination) of the target node instruction (assignment statement) with the row number of the target node and sets the item “ciphertext” in the protection target state management table 195. to add.
  • the variable added to the item “ciphertext” of the protection target state management table 195 is an example of the encryption state variable.
  • the protection target state acquisition unit 131 associates the encryption function with the encryption function variable to be added, and the function name of the encryption function and the encryption function are used. Set the number.
  • the protection target state acquisition unit 131 acquires the key variable name of the encryption function from the encryption function extraction list 193, and associates the acquired key variable name with the row number of the node of interest in the protection target state management table 195. Add to the item "Plaintext”.
  • the key variable added to the item “plaintext” in the protection target state management table 195 is an example of a plaintext state variable.
  • the right side of the seventh line (assignment statement) of the target program 101D shown in FIG. 22 is the encryption function “enc (name1, key)”, and the key variable is “key”.
  • the protection target state acquisition unit 131 associates the variable name “enc_name” on the left side of the seventh line of the target program 101D with the line number “the seventh line” of the target node.
  • the protection target state acquisition unit 131 sets the encryption function name “enc” and the line number “line 7” in the protection target state management table 195D in association with the added variable name “enc_name”.
  • the protection target state acquisition unit 131 associates the key variable name “key” with the row number “seventh line” of the node of interest and adds it to the item “plaintext” of the protection target state management table 195D.
  • the protection target state management table 195D becomes the state shown in FIG.
  • FIG. 22 is a diagram showing an example of the target program 101 in the first embodiment.
  • FIG. 23 is a diagram illustrating an example of the protection target state management table 195 according to the first embodiment. It progresses to S260 after S252.
  • the protection target state acquisition unit 131 associates the variable name on the left side (substitution destination) of the target node instruction (assignment statement) with the line number of the target node and adds it to the item “plaintext” of the protection target state management table 195. To do.
  • the variable added to the item “plaintext” in the protection target state management table 195 is an example of a plaintext state variable.
  • the protection target state acquisition unit 131 sets the function name of the decryption function and the line number where the decryption function is used in association with the plaintext state variable to be added. .
  • the right side of the third line (assignment statement) of the target program 101D shown in FIG. 22 is an unencrypted protection target variable “name”.
  • the protection target state acquisition unit 131 associates the variable name “name1” on the left side of the third line of the target program 101 with the line number “third line” of the target node.
  • the protection target state management table 195D becomes the state of FIG.
  • FIG. 24 is a diagram showing an example of the protection target state management table 195 in the first embodiment. It progresses to S260 after S253.
  • the protection target state acquisition unit 131 determines whether or not the node of interest specified by the processing pointer is the final node of the flow graph. If the node of interest is the last node (YES), the process proceeds to S261. When the node of interest is not the final node (NO), the protection target state acquisition unit 131 designates a node next to the node of interest as a new node of interest with a processing pointer. Thereafter, the process returns to S231.
  • the protection target state acquisition unit 131 determines whether or not the protection target state management table 195 has changed. That is, it is determined whether or not S252 or S253 is executed in the loop from S231 to S260. If S252 or S253 is executed, the protection target state management table 195 has changed. For example, the protection target state acquisition unit 131 sets a change flag value indicating that the protection target state management table 195 has changed in the change flag when executing S252 or S253. Then, the protection target state acquisition unit 131 determines whether or not a change flag value is set in the change flag. After the determination, the protection target state acquisition unit 131 initializes a change flag with a non-change flag value indicating that the protection target state management table 195 has not changed.
  • the protection target state acquisition unit 131 copies the protection target state management table 195 in S230, and compares the copied protection target state management table 195 with the current protection target state management table 195, thereby protecting the protection target state management table 195. It may be determined whether or not 195 has changed.
  • the fact that the protection target state management table 195 does not change means, for example, that processing has been completed for all nodes in the flow graph, that is, processing has been completed for all processing paths in the flow graph. Therefore, instead of determining whether or not the protection target state management table 195 has changed, the protection target state acquisition unit 131 determines whether or not processing has been completed for all nodes in the flow graph, that is, all processing in the flow graph. It may be determined whether or not the processing has been completed for the route.
  • the protection target state management table 195 changes (YES)
  • the process returns to S230, and the process is repeated from S230.
  • the protection target state management table 195 has not changed (NO)
  • the protection target state acquisition process (S200) ends.
  • FIG. 25 is a diagram illustrating an example of the cryptographic function extraction list 193 in the first embodiment.
  • FIG. 26 is a diagram showing an example of the protection target state management table 195 in the first embodiment.
  • S200 protection target state acquisition process
  • the protection target state acquisition unit 131 causes the target program 101D shown in FIG. 22, the protection target extraction list 191D shown in FIG. 19, and the encryption function extraction shown in FIG.
  • the protection target state management table 195D shown in FIG. 26 is generated.
  • FIG. 27 is a diagram illustrating an example of the target program 101 in the first embodiment.
  • FIG. 28 is a diagram illustrating an example of the protection target extraction list 191 in the first embodiment.
  • FIG. 29 is a diagram showing an example of the cryptographic function extraction list 193 in the first embodiment.
  • FIG. 30 is a diagram illustrating an example of the protection target state management table 195 according to the first embodiment.
  • S200 protection target state acquisition process
  • the protection target state acquisition unit 131 causes the target program 101E shown in FIG. 27, the protection target extraction list 191E shown in FIG. 28, and the encryption function extraction shown in FIG. Based on the list 193E, the protection target state management table 195E shown in FIG. 30 is generated.
  • FIG. 31 is a flowchart illustrating an example of the key state acquisition process (S300) according to the first embodiment.
  • An example of the key state acquisition process (S300) in the first embodiment will be described with reference to FIG.
  • the key state acquisition process (S300) includes the processes from S310 to S370.
  • the key status acquisition unit 132 In S310, the key status acquisition unit 132 generates a flow graph of the target program 101. However, the key state acquisition unit 132 may use the flow graph (see S210 of FIG. 18) generated by the protection target state acquisition unit 131 without generating the flow graph of the target program 101. It progresses to S320 after S310.
  • the key state acquisition unit 132 In S320, the key state acquisition unit 132 generates and initializes the key state management table 196. It progresses to S330 after S320.
  • FIG. 32 is a configuration diagram of the key state management table 196 in the first embodiment. The configuration of the key status management table 196 in the first embodiment will be described with reference to FIG.
  • the key state management table 196 includes “position (line number)”, “key variable”, “operator (function name)”, and “content” in association with each other. “Position (line number)” indicates the line number where the encryption function is used. “Key variable” indicates a key variable used as an encryption key. “Operator (function name)” indicates an operator and a function used to generate a key variable. “Content” indicates whether the value set in the key variable is “variable” or “invariable”.
  • the initialized key state management table 196 is a state in which no information is set (see FIG. 32).
  • the key state acquisition unit 132 designates the first line of the cryptographic function extraction list 193 with the processing pointer.
  • the processing pointer designates a line of the cryptographic function extraction list 193. It progresses to S331 after S330.
  • the key state acquisition unit 132 reads the row specified by the processing pointer from the cryptographic function extraction list 193 into the memory.
  • the line read in S331 is referred to as “attention line”. It progresses to S340 after S331.
  • the key state acquisition unit 132 acquires the variable name of the key variable from the target line of the cryptographic function extraction list 193, and the contents of the key variable identified by the acquired variable name (variable or invariant) as the variable information extraction list. Obtained from 194.
  • the key state acquisition unit 132 is associated with the same variable name as the actual argument “key2” (key variable) for the key.
  • the contents “variable” are acquired from the variable information extraction list 194F shown in FIG.
  • FIG. 33 is a diagram showing an example of the cryptographic function extraction list 193 in the first embodiment.
  • FIG. 34 is a diagram showing an example of the variable information extraction list 194 in the first embodiment. It progresses to S350 after S340.
  • the key state acquisition unit 132 analyzes the flow graph for the key variable of the target line, and acquires the operator and function used to generate the key variable of the target line as the analysis result. Details of the key variable analysis process (S350) will be described later. It progresses to S360 after S350.
  • the key state acquisition unit 132 sets the line number of the target line set in the encryption function extraction list 193, the contents of the key variable acquired in S340, and the analysis result (operator and function) acquired in S350. Is registered in the key state management table 196. It progresses to S370 after S360.
  • step S ⁇ b> 370 the key state acquisition unit 132 determines whether the current target line is the last line of the cryptographic function extraction list 193. If the current line of interest is the last line of the cryptographic function extraction list 193 (YES), the key state acquisition process (S300) ends. When the current attention line is not the last line of the cryptographic function extraction list 193 (NO), the key state acquisition unit 132 designates the next line of the current attention line as a new attention line with the processing pointer. Thereafter, the process returns to S331.
  • FIG. 35 is a diagram illustrating an example of the target program 101 according to the first embodiment.
  • FIG. 36 is a diagram showing an example of the key state management table 196 in the first embodiment.
  • the key variable “key2” of the encrypted variable “enc” includes the operator “xor” (line 6), the hash function “hash” (line 5), and the operator “ + ”(5th line).
  • the key state acquisition unit 132 causes the target program 101F shown in FIG. 35, the cryptographic function extraction list 193F shown in FIG. 33, and the variable information extraction list 194F shown in FIG.
  • the key state management table 196F shown in FIG. 36 is generated.
  • the hash function list 184 includes “hash” as the function name of the hash function.
  • FIG. 37 is a flowchart showing key variable analysis processing (S350) in the first embodiment.
  • the key variable analysis process (S350) of the key state acquisition process (S300) (see FIG. 31) will be described with reference to FIG.
  • the key variable analysis process (S350) includes the processes from S351 to S356.
  • the key state acquisition unit 132 acquires the line number of each line in which the key variable of the target line in the encryption function extraction list 193 is used from the variable information extraction list 194, and selects the line identified by the acquired line number.
  • a node representing an assignment statement that sets a key variable of a target line is selected from the flow graph.
  • the selected node is referred to as “attention node”. For example, when the key variable of the target line is “key2”, the key state acquisition unit 132 selects the line numbers “6” and “7” associated with the key variable “key2” from the variable information extraction list 194F illustrated in FIG. Is obtained.
  • the key state acquisition unit 132 selects the line number “6” of the assignment statement that sets the key variable “key2” among the line numbers “6” and “7” (see the sixth line in FIG. 35).
  • the node representing the assignment statement on the sixth line is the attention node. It progresses to S352 after S351.
  • the key state acquisition unit 132 obtains a variable name, an operator, and a function name (for example, a hash function name included in the hash function list 184) from the right side (substitution source) of the node of interest (assignment statement) selected in S351. get.
  • the key state acquisition unit 132 acquires the variable names “key1” and “seed2” and the operator “xor” used on the right side from the assignment statement (target node) on the sixth line of the target program 101F shown in FIG. To do. It progresses to S353 after S352.
  • the key state acquisition unit 132 selects one unselected variable name from the variable names acquired in S352. It progresses to S354 after S353.
  • the key state acquisition unit 132 analyzes the flow graph for the variable identified by the variable name selected in S353 in the same manner as the key variable in the target line. In other words, the key state acquisition unit 132 executes the key variable analysis process (S350) by replacing the key variable name of the target line with the variable name selected in S353. That is, the key state acquisition unit 132 recursively executes the key variable analysis process (S350) for the variable for setting the key variable.
  • the key state acquisition unit 132 executes the key variable analysis process (S350) for the variable “key1” used in the assignment statement (line 6) for setting the key variable “key2” of the target program 101F shown in FIG. . Further, the key state acquisition unit 132 executes key variable analysis processing (S350) for the variable “in” used in the assignment statement (line 5) for setting the variable “key1”. Further, the key state acquisition unit 132 executes the key variable analysis process (S350) for the other variables “seed2” and “seed1” for setting the key variable “key2”. After S354, the process proceeds to S355.
  • S350 key variable analysis process
  • the key state acquisition unit 132 registers the operator and function name acquired in S352 (including the operator and function name recursively acquired in S354) in the analysis result list.
  • the analysis result list is an analysis result of the key variable analysis process (S350). For example, the key state acquisition unit 132 sets the operator “xor” of the assignment statement (line 6) that sets the key variable “key2” among the operators and function names included in the target program 101F illustrated in FIG. The hash function name “hash” and the operator “+” of the assignment statement (line 5) for setting “key1” are registered in the analysis result list. After S355, the process proceeds to S356.
  • the key state acquisition unit 132 determines whether or not the variable name that has not been selected in S353 remains. If unselected variable names remain (YES), the process returns to S353. If no unselected variable name remains (NO), the key variable analysis process (S350) ends.
  • FIG. 38 is a flowchart showing an example of vulnerability determination processing (S140) in the first embodiment.
  • Vulnerability determination processing (S140) in Embodiment 1 (see FIG. 5) will be described based on FIG.
  • the vulnerability determination process (S140) includes each process of S141 to S149.
  • the vulnerability determination unit 140 designates the first line of the output function extraction list 192 generated in S122 (see FIG. 6) with a processing pointer.
  • the process pointer designates a line of the output function extraction list 192. It progresses to S142 after S141.
  • the vulnerability determination unit 140 reads the line designated by the processing pointer from the output function extraction list 192 into the memory.
  • the line read in S142 is referred to as “attention line”. It progresses to S143 after S142.
  • the vulnerability determination unit 140 refers to the target line in the output function extraction list 192, and determines whether the item “output state” of the target line is “plain text”. For example, when No “1” in the output function extraction list 192D illustrated in FIG. 39 is the target line, the item “output state” of the target line is “plain text”.
  • FIG. 39 is a diagram illustrating an example of the output function extraction list 192 according to the first embodiment.
  • the process proceeds to S144.
  • the item “output state” of the target line is not “plaintext”, that is, when the item “output state” of the target line is “ciphertext” (NO)
  • the process proceeds to S148.
  • the vulnerability determination unit 140 selects one output variable (actual argument of the output function) from the target line in the output function extraction list 192. For example, when No “1” in the output function extraction list 192D illustrated in FIG. 39 is the target line, the output variable (actual argument) of the target line is “enc_name”. It progresses to S145 after S144.
  • the vulnerability determination unit 140 determines whether the output variable selected in S144 is the same variable as the protection target variable included in the protection target state management table 195 generated in S200 (see FIG. 17). .
  • the output variable “enc_name” is a protection target variable included in the protection target state management table 195D shown in FIG. If the output variable is a protection target variable (YES), the process proceeds to S146-1. When the output variable is not a protection target variable (NO), the process proceeds to S148.
  • the vulnerability determination unit 140 determines whether the output variable (protection target variable) selected in S144 is an encryption state variable included in the item “ciphertext” of the protection target state management table 195. .
  • the output variable “enc_name” is an encryption state variable included in the item “ciphertext” of the protection target state management table 195D shown in FIG. If the output variable is an encryption state variable (YES), the process proceeds to S146-2. If the output variable is not an encryption state variable, that is, if the output variable is a plaintext state variable (NO), the process proceeds to S147.
  • the vulnerability determination unit 140 acquires the line number of the encryption function set in association with the output variable (encryption state variable) from the protection target state management table 195. In addition, the vulnerability determination unit 140 acquires the contents (variable or invariable) of the key variable associated with the line number of the acquired encryption function from the key state management table 196 generated in S300 (see FIG. 17). . And the vulnerability determination part 140 determines whether the content of the acquired key variable is variable.
  • the vulnerability determination unit 140 acquires the line number “7th line” of the encryption function “enc” associated with the output variable “enc_name” from the protection target state management table 195D illustrated in FIG. Further, the vulnerability determination unit 140 acquires the content “invariant” of the key variable “key” associated with the acquired line number “7th line” from the key state management table 196D illustrated in FIG.
  • FIG. 40 is a diagram illustrating an example of the key state management table 196 according to the first embodiment.
  • the process proceeds to S146-3. If the content of the key variable is not variable, that is, if the content of the key variable is unchanged (NO), the process proceeds to S147.
  • the vulnerability determination unit 140 refers to the key state management table 196, and the encryption key set in the key variable is a secret value generated by a predetermined secret operation such as a hash function or “xor”. It is determined whether or not.
  • the predetermined concealment calculation is an operation for calculating a concealment value that is not guessed by a third party and is concealed from the third party.
  • the key state management table 196F illustrated in FIG. 36 indicates that the key variable “key2” is generated using “xor” and the hash function “hash”. In this case, the vulnerability determination unit 140 determines that the key variable “key2” is protected. If the key variable is protected (YES), the process proceeds to S148. If the key variable is not protected (NO), the process proceeds to S147.
  • the vulnerability determination unit 140 adds the determination result to the program verification result 197.
  • the vulnerability determination unit 140 adds the following determination result to the program verification result 197.
  • the output variable is not the encryption state variable in S146-1 (NO)
  • the vulnerability determination unit 140 determines that the output variable information (variable name, line number, etc.) and the output variable are in the plaintext state (the protection target information is encrypted).
  • the key variable is not variable in S146-2 (NO)
  • the vulnerability determination unit 140 determines that the key variable information (function name, variable name, line number, etc.) and the key variable are invariant (constant) (protection target information). Is added to the program verification result 197.
  • the vulnerability determination unit 140 determines that the key variable information (function name, variable name, line number, etc.) and the key variable are not protected (protection target information). Is added to the program verification result 197. After S147, the process proceeds to S148.
  • the vulnerability determination unit 140 determines whether there are any unselected output variables remaining in S144. If an unselected output variable remains (YES), the process returns to S144. If no unselected output variable remains (NO), the process proceeds to S149.
  • the vulnerability determination unit 140 determines whether or not the current target line is the last line of the output function extraction list 192. If the current line of interest is the last line of the output function extraction list 192 (YES), the vulnerability determination unit 140 outputs the program verification result 197 to an output device such as a display or a printer. Then, the vulnerability determination process (S140) ends. When the current attention line is not the last line of the output function extraction list 192 (NO), the vulnerability determination unit 140 designates a line next to the current attention line as a new attention line with a processing pointer. Thereafter, the process returns to S142.
  • the determination result when the conditions of S146-1 to S146-3 are not satisfied is set in the program verification result 197.
  • at least one of the determination result of S145 and the determination results of S146-1 to S146-3 may be set in the program verification result 197 for each output variable.
  • the determination result of at least one of S146-1 to S146-3 may be set in the program verification result 197 for each protection target variable.
  • FIG. 41 is a diagram illustrating an example of hardware resources of the program verification apparatus 100 according to the first embodiment.
  • a program verification apparatus 100 includes a CPU 901 (Central Processing Unit).
  • the CPU 901 is connected to hardware devices such as a ROM 903, a RAM 904, a communication board 905 (communication device), a display 911 (display device), a keyboard 912, a mouse 913, a drive 914, and a magnetic disk device 920 via a bus 902.
  • Control hardware devices is a device that reads and writes storage media such as an FD (Flexible Disk), a CD (Compact Disc), and a DVD (Digital Versatile Disc).
  • FD Flexible Disk
  • CD Compact Disc
  • DVD Digital Versatile Disc
  • the ROM 903, the RAM 904, the magnetic disk device 920, and the drive 914 are examples of storage devices.
  • a keyboard 912, a mouse 913, a communication board 905, and a storage device are examples of input devices.
  • the display 911, the communication board 905, and the storage device are examples of output devices.
  • the communication board 905 is wired or wirelessly connected to a communication network such as a LAN (Local Area Network), the Internet, or a telephone line.
  • a communication network such as a LAN (Local Area Network), the Internet, or a telephone line.
  • the magnetic disk device 920 stores an OS 921 (operating system), a program group 922, and a file group 923.
  • OS 921 operating system
  • program group 922 program group 922
  • file group 923 file group 923
  • the program group 922 includes a program for executing a function described as “unit” in the embodiment.
  • a program for example, a program verification program
  • the program causes the computer to function as “to part” and causes the computer to execute the procedures and methods of “to part”.
  • the file group 923 includes various data (input, output, determination result, calculation result, processing result, etc.) used in “ ⁇ part” described in the embodiment.
  • arrows included in the configuration diagrams and flowcharts mainly indicate input and output of data and signals.
  • the processing of the embodiment described based on the flowchart and the like is executed using hardware such as the CPU 901, a storage device, an input device, and an output device.
  • what is described as “to part” may be “to circuit”, “to apparatus”, and “to device”, and “to step”, “to procedure”, and “to processing”. May be. That is, what is described as “ ⁇ unit” may be implemented by any of firmware, software, hardware, or a combination thereof.
  • the program verification apparatus 100 can detect and warn by static analysis that protected information such as confidential information or personal information flows out of the program in plain text or without going through an appropriate encryption method. In other words, the program verification apparatus 100 determines that “important information is not output from the program in plain text” or “when important information is encrypted, the key used for encryption is a hard code (constant Can be verified. In addition, when the target program 101 is an appropriate program that is output after appropriately encrypting the protection target information, the program verification apparatus 100 makes an erroneous diagnosis that the target program 101 is vulnerable. Can be prevented.
  • the encryption or decryption key and password are examples of confidential information, and the phone book, address, mail, location information, and biometric information are examples of personal information.
  • the outside of the program means, for example, a network, another program, a file, a database, or a portable storage medium.
  • the program verification device (100) includes a list storage unit (190), a program input unit (110), an output variable extraction unit (122), an encryption variable extraction unit (123), and an encryption state variable extraction unit (131). And an encryption state determination unit (140) and a verification result output unit (140).
  • the list storage unit includes an output function list (182) in which an output function for outputting information set in a specific variable is defined, and an encryption function list (183) in which an encryption function for encrypting information is defined.
  • the program input unit inputs a program to be verified as a target program (101) (S110).
  • the output variable extraction unit extracts, as an output variable, the specific variable in which information output by the output function defined in the output function list is set as output information among variables used in the target program (S122).
  • the encryption variable extraction unit extracts, as an encryption variable, a variable in which information encrypted by the encryption function defined in the encryption function list among the variables used in the target program is set as encryption information (S123).
  • the encryption state variable extraction unit refers to an assignment sentence included in the target program, and uses the variable into which the encryption information set in the encryption variable extracted by the encryption variable extraction unit is substituted as an encryption state variable. Extract from the target program (S200).
  • the encryption state determination unit determines whether or not the encryption state variable extracted by the encryption state variable extraction unit and the output variable extracted by the output variable extraction unit are the same variable (S146-1). ).
  • the verification result output unit outputs information based on the determination result of the encryption state determination unit as the verification result of the target program (S147).
  • the list storage unit stores an information acquisition function list (181) in which an information acquisition function for acquiring protection target information that is a target to be protected is defined.
  • the program verification device includes a protection target variable extraction unit (121) and a protection target determination unit (140).
  • the protection target variable extraction unit uses, as a protection target variable, a variable in which the protection target information acquired by the information acquisition function defined in the information acquisition function list is set among variables used in the target program. Extract (S121).
  • the protection target determination unit determines whether or not the protection target variable extracted by the protection target variable extraction unit and the output variable extracted by the output variable extraction unit are the same variable (S145).
  • the verification result output unit outputs information based on the determination result of the protection target determination unit and the determination result of the encryption state determination unit as the verification result of the target program (S147).
  • the program verification device includes a key variable extraction unit (123) and a key content determination unit (132).
  • the key variable extraction unit extracts, as a key variable, a variable designated for the encryption function as a variable in which an encryption key is set among variables used in the target program (S123).
  • the key content determination unit refers to an assignment statement included in the target program, and determines whether or not a value substituted as the encryption key into the key variable extracted by the key variable extraction unit is a variable value. (S300).
  • the verification result output unit outputs information based on the determination result of the key content determination unit, the determination result of the protection target determination unit, and the determination result of the encryption state determination unit as the verification result of the target program ( S147).
  • the program verification apparatus includes a key state determination unit (132).
  • the key state determination unit refers to an assignment sentence included in the target program, and a value assigned as the encryption key to the key variable extracted by the key variable extraction unit is generated by a predetermined secret operation. It is determined whether or not the secret value is concealed by (S300).
  • the verification result output unit includes information based on the determination result of the key state determination unit, the determination result of the key content determination unit, the determination result of the protection target determination unit, and the determination result of the encryption state determination unit.
  • the verification result of the program is output (S147).
  • 100 program verification device 101 target program, 110 program input unit, 120 necessary information extraction unit, 121 protection target extraction unit, 122 output function extraction unit, 123 cryptographic function extraction unit, 124 variable information extraction unit, 130 protection state analysis unit, 131 protection state acquisition unit, 132 key state acquisition unit, 140 vulnerability determination unit, 181 information acquisition function list, 182 output function list, 183 cryptographic function list, 184 hash function list, 190 verification device storage unit, 191 protection target extraction List, 192 Output function extraction list, 193 Cryptographic function extraction list, 194 Variable information extraction list, 195 Protection target state management table, 196 Key state management table, 197 Program verification result, 901 CPU, 902 bus, 903 ROM, 904 RAM, 905 communication board, 911 a display, 912 a keyboard, 913 mouse, 914 drive, 920 a magnetic disk device, 921 OS, 922 programs, 923 files.

Landscapes

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

Abstract

 必要情報抽出部120は、対象プログラム101で使用されている変数のうち出力関数リスト182に定義された出力関数によって出力される出力情報が設定される出力変数を抽出する。必要情報抽出部120は、対象プログラム101で使用されている変数のうち暗号関数リスト183に定義された暗号化関数によって暗号化された暗号情報が設定される暗号変数を抽出する。保護状態解析部130は、対象プログラム101に含まれる代入文を参照し、暗号情報が代入される暗号状態変数を抽出する。脆弱性判定部140は、暗号状態変数と出力変数とが同じ変数であるか否かを判定し、判定結果に基づいてプログラム検証結果197を出力する。

Description

プログラム検証装置、プログラム検証方法およびプログラム検証プログラム
 本発明は、例えば、プログラムの信頼性を検証するプログラム検証装置、プログラム検証方法およびプログラム検証プログラムに関するものである。
 プログラムの信頼性を検証する技術において、機密情報や個人情報等の重要な情報がプログラムによって外部(インターネット、他のプログラム、他のファイルまたはデータベースなど)へ流れ出る、という脆弱性を突き止める手法がある。
 従来技術では、データの流れのみに注目してプログラムを解析するため、適切に暗号化された情報が外部に送出されるケースも脆弱性として誤検出してしまう。
 プログラム開発者の立場としては、安全な実装を施したプログラムから脆弱性が誤検出されることは望ましくない。一方、ユーザの立場としては、プログラム内で自らの重要な情報が適切に取り扱われているか否かを確認したいというニーズがある。
 ここでいう「重要な情報が適切に取り扱われている」とは以下の条件を満たすことをいう。
 ・重要な情報が平文のままプログラムから外部に出力されない。
 ・重要な情報が暗号化された場合において、暗号化に利用する鍵がプログラム内でハードコード(定数化)されていない。
特表2010-507165号公報 特表2008-502046号公報
中田育男、「コンパイラの構成と最適化」、朝倉書店、1999年9月、ISBN4-254-12139-3
 本発明は、例えば、検証する対象である対象プログラムによって出力される情報が暗号化された後に出力される情報であるか否かを検証することを目的とする。
 本発明のプログラム検証装置は、
 変数と出力関数と暗号化関数とを使用すると共に代入文を含むプログラムを入力するプログラム入力部と、
 前記出力関数によって出力される出力情報が設定される出力変数を前記プログラムから抽出する出力変数抽出部と、
 前記暗号化関数によって暗号化された暗号情報が設定される暗号変数を前記プログラムから抽出する暗号変数抽出部と、
 前記プログラムに含まれる代入文を参照し、前記暗号変数抽出部によって抽出された前記暗号変数に設定された前記暗号情報が代入される暗号状態変数を前記プログラムから抽出する暗号状態変数抽出部と、
 前記暗号状態変数抽出部によって抽出された前記暗号状態変数と前記出力変数抽出部によって抽出された前記出力変数とが同じ変数であるか否かを判定する暗号状態判定部と、
 前記暗号状態判定部の判定結果に基づいて前記プログラムの検証結果を出力する検証結果出力部とを備える。
 本発明によれば、例えば、検証する対象である対象プログラムによって出力される情報が暗号化された後に出力される情報であるか否かを検証することができる。
実施の形態1におけるプログラム検証装置100の構成図。 実施の形態1における必要情報抽出部120の構成図。 実施の形態1における保護状態解析部130の構成図。 実施の形態1における脆弱性判定部140の概要図。 実施の形態1におけるプログラム検証装置100のプログラム検証方法を示すフローチャート。 実施の形態1における必要情報抽出処理(S120)を示すフローチャート。 実施の形態1における対象プログラム101の一例を示す図。 実施の形態1における情報取得関数リスト181の一例を示す図。 実施の形態1における保護対象抽出リスト191の一例を示す図。 実施の形態1における出力関数リスト182の一例を示す図。 実施の形態1における出力関数抽出リスト192の一例を示す図。 実施の形態1における対象プログラム101の一例を示す図。 実施の形態1における暗号関数リスト183の一例を示す図。 実施の形態1における暗号関数抽出リスト193の一例を示す図。 実施の形態1における対象プログラム101の一例を示す図。 実施の形態1における変数情報抽出リスト194の一例を示す図。 実施の形態1における保護状態解析処理(S130)を示すフローチャート。 実施の形態1における保護対象状態取得処理(S200)の一例を示すフローチャート。 実施の形態1における保護対象抽出リスト191の一例を示す図。 実施の形態1における保護対象状態管理表195の初期化の一例を示す図。 実施の形態1における保護対象状態管理表195の一例を示す図。 実施の形態1における対象プログラム101の一例を示す図。 実施の形態1における保護対象状態管理表195の一例を示す図。 実施の形態1における保護対象状態管理表195の一例を示す図。 実施の形態1における暗号関数抽出リスト193の一例を示す図。 実施の形態1における保護対象状態管理表195の一例を示す図。 実施の形態1における対象プログラム101の一例を示す図。 実施の形態1における保護対象抽出リスト191の一例を示す図。 実施の形態1における暗号関数抽出リスト193の一例を示す図。 実施の形態1における保護対象状態管理表195の一例を示す図。 実施の形態1における鍵状態取得処理(S300)の一例を示すフローチャート。 実施の形態1における鍵状態管理表196の構成図。 実施の形態1における暗号関数抽出リスト193の一例を示す図。 実施の形態1における変数情報抽出リスト194の一例を示す図。 実施の形態1における対象プログラム101の一例を示す図。 実施の形態1における鍵状態管理表196の一例を示す図。 実施の形態1における鍵変数解析処理(S350)を示すフローチャート。 実施の形態1における脆弱性判定処理(S140)の一例を示すフローチャート。 実施の形態1における出力関数抽出リスト192の一例を示す図。 実施の形態1における鍵状態管理表196の一例を示す図。 実施の形態1におけるプログラム検証装置100のハードウェア資源の一例を示す図。
 実施の形態1.
 検証する対象である対象プログラムが、保護対象情報を適切に暗号化した後に出力するプログラムであるか否かを検証するための形態について説明する。
 図1は、実施の形態1におけるプログラム検証装置100の構成図である。
 実施の形態1におけるプログラム検証装置100について、図1に基づいて説明する。
 プログラム検証装置100は、検証対象のプログラムが保護対象の情報を暗号化によって保護した後に出力する信頼性の高いプログラムであるか検証するコンピュータである。情報はデータともいう(以下同様)。
 以下、検証対象のプログラムを「対象プログラム101」とし、保護対象の情報を「保護対象情報」とする。
 プログラム検証装置100(プログラム検証装置の一例)は、プログラム入力部110、必要情報抽出部120、保護状態解析部130、脆弱性判定部140および検証装置記憶部190を備える。
 以下に、プログラム検証装置100の各構成の概要について説明する。プログラム検証装置100の各構成の詳細については後述する。
 プログラム入力部110(プログラム入力部の一例)は、対象プログラム101を入力する。
 必要情報抽出部120(出力変数抽出部、暗号変数抽出部、保護対象変数抽出部、鍵変数抽出部の一例)は、プログラム入力部110が入力した対象プログラム101から検証に必要な各種情報を抽出する。
 必要情報抽出部120は、各種情報の抽出結果として保護対象抽出リスト191、出力関数抽出リスト192、暗号関数抽出リスト193および変数情報抽出リスト194を生成する。
 保護対象抽出リスト191は、保護対象情報用の変数の変数名の一覧表である。
 出力関数抽出リスト192は、情報を出力する出力関数の関数名の一覧表である。
 暗号関数抽出リスト193は、情報を暗号化(または復号)する暗号関数の関数名の一覧表である。
 変数情報抽出リスト194は、変数の変数名の一覧表である。
 保護状態解析部130(暗号状態変数抽出部、鍵内容判定部、鍵状態判定部の一例)は、必要情報抽出部120による各種情報の抽出結果に基づいて保護対象情報の保護状態について対象プログラム101を解析する。
 保護状態解析部130は、解析結果に基づいて保護対象状態管理表195および鍵状態管理表196を生成する。
 保護対象状態管理表195は、保護対象情報用の変数毎に保護対象情報が暗号化されるか否かを示す一覧表である。
 鍵状態管理表196は、暗号化で使用される暗号鍵毎に暗号鍵が保護されるか否かを示す一覧表である。
 脆弱性判定部140(暗号状態判定部、保護対象判定部、検証結果出力部の一例)は、保護状態解析部130による対象プログラム101の解析結果に基づいて対象プログラム101に含まれる脆弱な要素を判定し、判定結果をプログラム検証結果197として出力する。
 適切に暗号化されずに出力される保護対象情報が多いほど対象プログラム101は脆弱であり、適切に暗号化されずに出力される保護対象情報が少ないほど対象プログラム101の信頼性は高い。
 検証装置記憶部190(リスト記憶部の一例)は、プログラム検証装置100で使用するデータを記憶する。
 例えば、検証装置記憶部190は、以下のようなデータを記憶する。
 検証装置記憶部190は、プログラム入力部110が入力する対象プログラム101を記憶する。
 検証装置記憶部190は、情報取得関数リスト181、出力関数リスト182、暗号関数リスト183およびハッシュ関数リスト184を予め記憶する。
 検証装置記憶部190は、必要情報抽出部120によって生成される保護対象抽出リスト191、出力関数抽出リスト192、暗号関数抽出リスト193および変数情報抽出リスト194を記憶する。
 検証装置記憶部190は、保護状態解析部130によって生成される保護対象状態管理表195および鍵状態管理表196を記憶する。
 検証装置記憶部190は、脆弱性判定部140によって生成されるプログラム検証結果197を記憶する。
 情報取得関数リスト181(情報取得関数リストの一例)は、保護対象情報を取得する情報取得関数を定義した一覧表であり、保護対象抽出リスト191を生成するために使用される。
 出力関数リスト182(出力関数リストの一例)は、情報を出力する出力関数を定義した一覧表であり、出力関数抽出リスト192を生成するために使用される。
 暗号関数リスト183(暗号化関数リストの一例)は、情報を暗号化(または復号)する暗号関数を定義した一覧表であり、暗号関数抽出リスト193を生成するために使用される。
 ハッシュ関数リスト184は、一般に利用可能な暗号学的なハッシュ関数(SHA1、MD5など)の一覧表であり、鍵状態管理表196を生成するために使用される。
 図2は、実施の形態1における必要情報抽出部120の構成図である。
 実施の形態1における必要情報抽出部120の構成について、図2に基づいて説明する。
 必要情報抽出部120は、保護対象抽出部121、出力関数抽出部122、暗号関数抽出部123および変数情報抽出部124を備える。
 以下に、必要情報抽出部120の各構成の概要について説明する。必要情報抽出部120の各構成の詳細については後述する。
 保護対象抽出部121(保護対象変数抽出部の一例)は、情報取得関数リスト181に基づいて対象プログラム101から保護対象情報用の変数を抽出し、抽出した変数を一覧にした保護対象抽出リスト191を生成する。
 出力関数抽出部122(出力変数抽出部の一例)は、出力関数リスト182に基づいて対象プログラム101から出力関数を抽出し、抽出した出力関数を一覧にした出力関数抽出リスト192を生成する。
 暗号関数抽出部123(暗号変数抽出部、鍵変数抽出部の一例)は、暗号関数リスト183に基づいて対象プログラム101から暗号関数を抽出し、抽出した暗号関数を一覧にした暗号関数抽出リスト193を生成する。
 変数情報抽出部124は、対象プログラム101から変数を抽出し、抽出した変数を一覧にした変数情報抽出リスト194を生成する。
 図3は、実施の形態1における保護状態解析部130の構成図である。
 実施の形態1における保護状態解析部130の構成について、図3に基づいて説明する。
 保護状態解析部130は、保護対象状態取得部131および鍵状態取得部132を備える。
 以下に、保護状態解析部130の各構成の概要について説明する。保護状態解析部130の各構成の詳細については後述する。
 保護対象状態取得部131(暗号状態変数抽出部の一例)は、保護対象抽出リスト191と暗号関数抽出リスト193とに基づいて対象プログラム101を解析し、保護対象情報用の変数毎に変数に設定される保護対象情報が暗号化されるか否かを示す保護対象状態管理表195を生成する。
 鍵状態取得部132(鍵内容判定部、鍵状態判定部の一例)は、暗号関数抽出リスト193と変数情報抽出リスト194とハッシュ関数リスト184とに基づいて対象プログラム101を解析し、暗号化で使用される暗号鍵毎に暗号鍵が保護されるか否かを示す鍵状態管理表196を生成する。
 図4は、実施の形態1における脆弱性判定部140の概要図である。
 実施の形態1における脆弱性判定部140の概要について、図4に基づいて説明する。
 脆弱性判定部140(暗号状態判定部、保護対象判定部、検証結果出力部の一例)は、出力関数抽出リスト192と保護対象状態管理表195と鍵状態管理表196とに基づいて対象プログラム101に含まれる脆弱な要素を判定し、判定結果を示すプログラム検証結果197を出力する。
 図5は、実施の形態1におけるプログラム検証装置100のプログラム検証方法を示すフローチャートである。
 実施の形態1におけるプログラム検証装置100のプログラム検証方法について、図5に基づいて説明する。
 まず、プログラム検証装置100のプログラム検証方法の概要について説明する。
 S110において、プログラム入力部110は対象プログラム101を入力する。
 S120において、必要情報抽出部120は対象プログラム101から各種情報を抽出し、各種情報の抽出リストを生成する。
 S130において、保護状態解析部130は各種情報の抽出リストに基づいて保護対象情報の保護状態について対象プログラム101を解析する。
 S140において、脆弱性判定部140は対象プログラム101の解析結果に基づいて対象プログラム101に含まれる脆弱な要素を判定し、判定結果を示すプログラム検証結果197を生成し、生成したプログラム検証結果197を出力する。
 次に、S110からS140の各処理の詳細について説明する。
 S110において、利用者は、キーボードやマウスなどの入力装置を用いて、検証したいプログラム(対象プログラム101)をプログラム検証装置100に対して指定する。
 プログラム検証装置100のプログラム入力部110は、指定された対象プログラム101を入力する。
 対象プログラム101はソースコードの形式で入力される。対象プログラム101がコンパイル済みのバイトコードである場合、プログラム入力部110は対象プログラム101をソースコードに逆コンパイルする。
 例えば、対象プログラム101は補助記憶装置に予め記憶され、プログラム入力部110は補助記憶装置から対象プログラム101を入力する。入力とは、例えば、メモリ(検証装置記憶部190)の所定の記憶領域に記憶することである。
 S110の後、S120に進む。
 図6は、実施の形態1における必要情報抽出処理(S120)を示すフローチャートである。
 実施の形態1における必要情報抽出処理(S120)について、図6に基づいて説明する。
 必要情報抽出処理(S120)において、必要情報抽出部120の各構成はS101で入力された対象プログラム101を先頭行から最終行まで参照し、以下のように各種リストを生成する。
 必要情報抽出処理(S120)は、S121からS124の各処理で構成される。
 S121において、保護対象抽出部121は、検証装置記憶部190から情報取得関数リスト181を取得する。
 保護対象抽出部121は、取得した情報取得関数リスト181に基づいて、S110で入力された対象プログラム101から保護対象情報が設定される変数を抽出する。以下、保護対象情報が設定される変数を「保護対象変数」という。
 保護対象抽出部121は、抽出した保護対象変数を一覧にした保護対象抽出リスト191を生成する。
 S121の後、S122に進む。
 図7は、実施の形態1における対象プログラム101の一例を示す図である。
 図8は、実施の形態1における情報取得関数リスト181の一例を示す図である。
 図9は、実施の形態1における保護対象抽出リスト191の一例を示す図である。
 保護対象抽出処理(S121)の一例について、図7から図9に基づいて説明する。
 情報取得関数リスト181A(図8参照)は、保護対象情報を取得する情報取得関数の一覧表である。情報取得関数リスト181Aは予め生成し、検証装置記憶部190に記憶しておく。
 情報取得関数リスト181Aは、「関数名」と「保護対象情報」とを対応付けて含んでいる。
 「関数名」は情報取得関数の関数名を示す。
 「保護対象情報」は情報取得関数によって取得される保護対象情報の内容を示す。
 図8の情報取得関数リスト181Aは、例えば、情報取得関数「getProfile」が保護対象情報「プロフィール」を取得するための関数である、ということを示している。
 保護対象抽出部121は、情報取得関数リスト181A(図8参照)に基づいて、対象プログラム101A(図7参照)から情報取得関数が使用されている行を抽出する。
 例えば、図7の対象プログラム101Aの1行目には情報取得関数「getProfile」が使用されている。
 保護対象抽出部121は、情報取得関数が使用されている行および情報取得関数リスト181Aに基づいて、保護対象抽出リスト191A(図9参照)を生成する。
 保護対象抽出リスト191Aは、「変数名」「位置(行番号)」「保護対象情報」および「情報の状態」を対応付けて含んでいる。
 「変数名」は、情報取得関数によって取得された保護対象情報が設定される保護対象変数の変数名を示す。
 「位置(行番号)」は、保護対象変数に保護対象情報が設定される行の番号を示す。
 「保護対象情報」は、保護対象変数に設定される保護対象情報の内容を示す。
 「情報の状態」は、保護対象変数に設定される保護対象情報が暗号化された状態(暗号文)と暗号化されていない状態(平文)とのいずれの状態であるかを示す。保護対象抽出部121は「情報の状態」の欄に初期値として「平文」を設定する。
 図9の保護対象抽出リスト191Aは、例えば、保護対象情報「プロフィール」が対象プログラム101A(図7参照)の1行目で保護対象変数「profile」に設定される、ということを示している。
 図6に戻り、必要情報抽出処理(S120)の説明をS122から続ける。
 S122において、出力関数抽出部122は、検証装置記憶部190から出力関数リスト182を取得する。
 出力関数抽出部122は、取得した出力関数リスト182に基づいて、S110で入力された対象プログラム101から出力関数を抽出する。
 出力関数抽出部122は、抽出した出力関数を一覧にした出力関数抽出リスト192を生成する。
 S122の後、S123に進む。
 図10は、実施の形態1における出力関数リスト182の一例を示す図である。
 図11は、実施の形態1における出力関数抽出リスト192の一例を示す図である。
 出力関数抽出処理(S122)の一例について、図7、図10および図11に基づいて説明する。
 出力関数リスト182A(図10参照)は、情報を出力する出力関数の一覧表である。出力関数リスト182Aは予め生成し、検証装置記憶部190に記憶しておく。
 出力関数リスト182Aは、「関数名」「出力内容」および「出力の状態」を対応付けて含んでいる。
 「関数名」は出力関数の関数名を示す。
 「出力内容」は出力関数の内容を示す。例えば、ファイル出力用の関数、通信用の関数、プログラム間通信用の関数及びデータベース書き込み用の関数は出力関数の一例である。
 「出力の状態」は「暗号文」または「平文」を示す。「暗号文」は出力関数が暗号化した情報を出力することを意味し、「平文」は出力関数が情報を暗号化せずに出力することを意味する。
 図10の出力関数リスト182Aは、例えば、出力関数「output」がファイルを暗号化せずに出力する、ということを示している。
 出力関数抽出部122は、出力関数リスト182A(図10参照)に基づいて、対象プログラム101A(図7参照)から出力関数が使用されている行を抽出する。
 例えば、図7の対象プログラム101Aの9行目には出力関数「output」が使用されている。
 出力関数抽出部122は、出力関数が使用されている行および出力関数リスト182Aに基づいて、出力関数抽出リスト192A(図11参照)を生成する。
 出力関数抽出リスト192Aは、「関数名」「位置(行番号)」「実引数」および「出力の状態」を対応付けて含んでいる。
 「関数名」は、対象プログラム101Aで使用されている出力関数の関数名を示す。
 「位置(行番号)」は、出力関数が使用されている行の番号を示す。
 「実引数」は、出力関数の引数、つまり、出力関数によって出力される出力情報用の変数を示す。引数は変数の一種である(以下同様)。以下、出力関数によって出力される出力情報用の変数を「出力変数」という。
 「出力の状態」は、出力関数によって出力される出力情報の状態(平文または暗号文)を示す。
 図11の出力関数抽出リスト192Aは、例えば、出力関数「output」が対象プログラム101A(図7参照)の9行目で出力変数「name」「age」「sex」の設定値(出力情報)を「平文」の状態で出力する、ということを示している。
 図6に戻り、必要情報抽出処理(S120)の説明をS123から続ける。
 S123において、暗号関数抽出部123は、検証装置記憶部190から暗号関数リスト183を取得する。
 暗号関数抽出部123は、取得した暗号関数リスト183に基づいて、S110で入力された対象プログラム101から暗号関数を抽出する。
 暗号関数抽出部123は、抽出した暗号関数を一覧にした暗号関数抽出リスト193を生成する。
 S123の後、S124に進む。
 図12は、実施の形態1における対象プログラム101の一例を示す図である。
 図13は、実施の形態1における暗号関数リスト183の一例を示す図である。
 図14は、実施の形態1における暗号関数抽出リスト193の一例を示す図である。
 暗号関数抽出処理(S123)の一例について、図12から図14に基づいて説明する。
 暗号関数リスト183B(図13参照)は、情報を暗号化または復号する暗号関数の一覧表である。以下、情報を暗号化する暗号関数を「暗号化関数」といい、情報を復号する暗号関数を「復号関数」という。
 暗号関数リスト183Bは予め生成し、検証装置記憶部190に記憶しておく。
 暗号関数リスト183Bは、「関数名」「鍵の位置」および「処理内容」を対応付けて含んでいる。
 「関数名」は暗号関数の関数名を示し、「鍵の位置」は暗号関数の引数のうち暗号鍵または復号鍵が設定される引数の引数名を示す。「処理内容」は暗号関数の処理が暗号化と復号とのいずれの処理であるかを示す。
 図13の暗号関数リスト183Bは、例えば、暗号化関数「enc」が「第2引数」の情報を暗号鍵として用いて「暗号化」の処理を行う、ということを示している。
 暗号関数抽出部123は、暗号関数リスト183B(図13参照)に基づいて、対象プログラム101B(図12参照)から暗号関数が使用されている行を抽出する。
 例えば、図12の対象プログラム101Bの9行目には暗号化関数「enc」が使用されている。
 暗号関数抽出部123は、暗号関数が使用されている行および暗号関数リスト183Bに基づいて、暗号関数抽出リスト193B(図14参照)を生成する。
 暗号関数抽出リスト193Bは、「関数名」「位置(行番号)」「関数の実引数」「鍵用の実引数」「出力用の変数」および「出力の状態」を対応付けて含んでいる。
 「関数名」は、暗号関数の関数名を示す。
 「位置(行番号)」は、暗号関数が使用されている行の番号を示す。
 「関数の実引数」は、暗号関数に設定されている引数を示す。
 「鍵用の実引数」は、暗号関数に設定されている引数のうち暗号鍵が設定される引数を示す。
 「出力用の変数」は、暗号関数によって処理された情報が設定される変数を示す。以下、暗号関数によって処理された情報が設定される変数を「暗号変数」という。
 「出力の状態」は、暗号関数によって処理された情報が暗号化された状態と復号された状態とのいずれの状態であるかを示す。
 図14の暗号関数抽出リスト193Bは、例えば、暗号化関数「enc」が対象プログラム101B(図12参照)の9行目で引数「key」に設定される暗号鍵を用いて引数「tel」に設定される情報を暗号化すること、および暗号化関数「enc」が暗号化した情報を暗号変数「enc_tel」に設定することを示している。
 図6に戻り、必要情報抽出処理(S120)の説明をS124から続ける。
 S124において、変数情報抽出部124は、S110で入力された対象プログラム101から変数を抽出し、抽出した変数を一覧にした変数情報抽出リスト194を生成する。
 このとき、変数情報抽出部124は、コンパイラの一般的なコード最適化技術として知られている定数伝播を、変数を抽出するための処理として利用することができる(非特許文献1参照)。
 S124により、必要情報抽出処理(S120)は終了する。
 図15は、実施の形態1における対象プログラム101の一例を示す図である。
 図16は、実施の形態1における変数情報抽出リスト194の一例を示す図である。
 変数情報抽出処理(S124)の一例について、図15および図16に基づいて説明する。
 変数情報抽出部124は、図15の対象プログラム101Cから、代入文の代入先(左辺)または関数の引数として使用されている6つの変数「profile」「name」「age」「key」「h_key」「enc_tel」を抽出する。
 変数情報抽出部124は、抽出した変数の情報を変数情報抽出リスト194C(図16参照)に設定する。
 変数情報抽出リスト194Cは、「変数名」「位置(行番号)」「変数の内容」を対応付けて含んでいる。
 「変数名」は、対象プログラム101Cで使用されている変数を示す。
 「位置(行番号)」は、変数が使用されている行の番号を示す。
 「変数の内容」は、変数に設定される値が「可変」であるか又は「不変」(定数)であるかを示す。
 但し、変数は「可変」と「不変」との2種類以外の種類に分類しても構わない。
 例えば、外部入力関数の出力値「入力変数」または時間取得関数の出力値「時間変数」を変数の種類に加えても構わない。
 例えば、関数が「不変」の変数だけを引数として含む場合、その関数の出力値が設定される変数の内容は「不変」である。関数が「入力変数」を引数として含む場合、その関数の出力値が設定される変数の内容は「入力変数」である。関数が「入力変数」を引数として含まずに「時間変数」を引数として含む場合、その関数の出力値が設定される変数の内容は「時間変数」である。また、関数が「入力変数」または「時間変数」を引数として含まずに「可変」の変数を引数として含む場合、その関数の出力値が設定される変数の内容は「可変」である。
 例えば、図15の対象プログラム101Cで使用されている変数の内容は以下のとおりである。
 1行目から3行目において、引数を持たない関数(getProfile()など)の出力値が代入される代入先の変数「profile」「name」「age」の内容は「可変」である。
 4行目において、定数「12345」が設定される変数「key」の内容は「不変」である。
 5行目において、不変の変数だけを引数として含んでいる関数(hash)の出力値が設定される変数「h_key」の内容は「不変」である。
 6行目において、可変の変数(name)を引数として含んでいる関数(enc)の出力値が設定される変数「enc_tel」の内容は「可変」である。
 図16の変数情報抽出リスト194Cは、例えば、可変の変数「profile」が対象プログラム101Cの1行目に使用されていること、及び、不変の変数「key」が対象プログラム101Cの4から6行目に使用されていることを示している。
 図6で説明した必要情報抽出処理(S120)のS121からS124の各処理は、順番を入れ替えて実行しても、並行して実行しても構わない。
 必要情報抽出処理(S120)の後、保護状態解析処理(S130)に進む(図5参照)。
 図17は、実施の形態1における保護状態解析処理(S130)を示すフローチャートである。
 実施の形態1における保護状態解析処理(S130)について、図17に基づいて説明する。
 保護状態解析処理(S130)は、S200およびS300の各処理で構成される。
 S200において、保護対象状態取得部131は、S121(図6参照)で生成された保護対象抽出リスト191と、S123(図6参照)で生成された暗号関数抽出リスト193とに基づいて、対象プログラム101を解析する。
 そして、保護対象状態取得部131は、解析結果に基づいて保護対象状態管理表195を生成する。
 保護対象状態取得処理(S200)の一例について後述する。
 S200の後、S300に進む。
 S300において、鍵状態取得部132は、S123(図6参照)で生成された暗号関数抽出リスト193と、S124(図6参照)で生成された変数情報抽出リスト194と、検証装置記憶部190に予め記憶されるハッシュ関数リスト184とに基づいて、対象プログラム101を解析する。
 そして、鍵状態取得部132は、解析結果に基づいて鍵状態管理表196を生成する。
 鍵状態取得処理(S300)の一例について後述する。
 S300により、保護状態解析処理(S130)は終了する。
 図17で説明した保護状態解析処理(S130)のS200およびS300は、順番を入れ替えて実行しても、並行して実行しても構わない。
 図18は、実施の形態1における保護対象状態取得処理(S200)の一例を示すフローチャートである。
 実施の形態1における保護対象状態取得処理(S200)の一例について、図18に基づいて説明する。
 保護対象状態取得処理(S200)は、S210からS261の各処理で構成される。
 S210において、保護対象状態取得部131は、対象プログラム101の処理の流れを表すフローグラフを生成する。
 フローグラフとは、プログラム内の一つの命令(および行番号)を表すノードと、ノード同士を処理順につなぐエッジとを用いて、プログラムの全ての処理経路(処理順序)を表すグラフのデータである。
 例えば、保護対象状態取得部131は、既存のツールを利用して対象プログラム101のフローグラフを生成する。
 S210の後、S220に進む。
 S220において、保護対象状態取得部131は、保護対象状態管理表195を生成し、保護対象抽出リスト191に基づいて保護対象状態管理表195を初期化する。
 S220の後、S230に進む。
 図19は、実施の形態1における保護対象抽出リスト191の一例を示す図である。
 図20は、実施の形態1における保護対象状態管理表195の初期化の一例を示す図である。
 管理表初期化処理(S220)の一例について、図19および図20に基づいて説明する。
 保護対象状態管理表195D(図20参照)は、「行番号」「平文」および「暗号文」を対応付けて含んでいる。
 「行番号」は対象プログラム101の行番号を示す。
 「平文」は暗号化されていない保護対象変数を示す。以下、暗号化されていない保護対象変数を「平文状態変数」という。
 「暗号文」は暗号化された保護対象変数を示す。以下、暗号化された保護対象変数を「暗号状態変数」という。
 図19の保護対象抽出リスト191Dは、「平文」状態の保護対象変数「profile」が対象プログラム101の1行目で設定され、「平文」状態の保護対象変数「name」が対象プログラム101の2行目で設定されていることを示している。
 そこで、保護対象状態取得部131は、図20に示すように、保護対象状態管理表195Dの行番号「1行目」に対応付けられた「平文」の欄に保護対象変数「profile」を設定する。
 また、保護対象状態取得部131は、保護対象状態管理表195Dの行番号「2行目」に対応付けられた「平文」の欄に保護対象変数「name」を設定する。
 つまり、保護対象状態取得部131は、保護対象抽出リスト191Dに基づいて、保護対象変数が設定されている行の番号と保護対象変数の状態とに対応付けて保護対象変数の変数名を保護対象状態管理表195Dに設定する。
 図20に示す保護対象状態管理表195Dは、図19に示す保護対象抽出リスト191Dに基づいて初期化した状態である。
 図18に戻り、保護対象状態取得処理(S200)の説明をS230から続ける。
 S230において、保護対象状態取得部131は、S210で生成したフローグラフの先頭ノードを処理ポインタで指定する。ここで、処理ポインタとは処理するノードを指定するものである。
 S230の後、S231に進む。
 S231において、保護対象状態取得部131は、S210で生成したフローグラフから、処理ポインタで指定されたノードをメモリに読み込む。
 以下、S231で読み込んだノードを「注目ノード」とし、S231で読み込んだノードが表す命令を「注目ノード命令」とする。
 さらに、保護対象状態取得部131は、フローグラフに基づいて注目ノードの一つ前のノードを特定し、特定したノードと同じ行番号に対応付けられた平文状態変数および暗号状態変数を保護対象状態管理表195から取得する。
 そして、取得した平文状態変数および暗号状態変数が、注目ノード命令で、上書きされていないことを確認する。注目ノード命令が代入文であり、代入文の左辺が平文状態変数または暗号状態変数であれば、その平文状態変数または暗号状態変数は上書きされている。
 上書きされていなければ、保護対象状態取得部131は、取得した平文状態変数および暗号状態変数を注目ノードと同じ行番号に対応付けて保護対象状態管理表195に追加する。
 例えば、保護対象状態管理表195Dが図20に示す状態である場合、保護対象状態取得部131は、注目ノードの一つ前の行番号「1行目」の平文「profile」を注目ノードの行番号「2行目」の平文に追加する。これにより、保護対象状態管理表195Dは図21に示す状態になる。
 図21は、実施の形態1における保護対象状態管理表195の一例を示す図である。
 S231の後、S232に進む。
 S232において、保護対象状態取得部131は、S231で読み込んだ注目ノードが表す注目ノード命令が代入文であるか否かを判定する。
 注目ノード命令が代入文である場合(YES)、S240に進む。
 注目ノード命令が代入文でない場合(NO)、S260に進む。
 S240において、保護対象状態取得部131は、注目ノード命令(代入文)の右辺(代入元)を以下の(1)(2)のように解析する。
 (1)保護対象状態取得部131は、保護対象状態管理表195に設定された保護対象変数が注目ノード命令の右辺に含まれているか否かを解析する。
 (2)保護対象状態取得部131は、暗号関数抽出リスト193を参照し、注目ノード命令の右辺が暗号関数抽出リスト193に設定された暗号化関数と保護対象状態管理表195に設定された暗号状態変数とのいずれかであるかを解析する。
 S240の後、S250に進む。
 S250において、保護対象状態取得部131は、S240の解析結果に基づいて、保護対象変数が注目ノード命令(代入文)の右辺(代入元)に含まれているか否かを判定する。
 保護対象変数が注目ノード命令の右辺に含まれている場合(YES)、S251に進む。
 保護対象変数が注目ノード命令の右辺に含まれていない場合(NO)、S260に進む。
 S251において、保護対象状態取得部131は、S240の解析結果に基づいて、注目ノード命令(代入文)の右辺(代入元)が暗号化関数と暗号状態変数とのいずれかであるか否かを判定する。
 注目ノード命令の右辺が暗号化関数と暗号状態変数とのいずれかである場合(YES)、S252に進む。
 注目ノード命令の右辺が暗号化関数と暗号状態変数とのいずれでもない場合(NO)、S253に進む。
 S252において、保護対象状態取得部131は、注目ノード命令(代入文)の左辺(代入先)の変数名を注目ノードの行番号に対応付けて保護対象状態管理表195の項目「暗号文」に追加する。保護対象状態管理表195の項目「暗号文」に追加される変数は暗号状態変数の一例である。
 また、注目ノード命令の右辺が暗号化関数である場合、保護対象状態取得部131は、追加する暗号状態変数に対応付けて、暗号化関数の関数名および暗号化関数が使用されている行の番号を設定する。
 さらに、保護対象状態取得部131は、その暗号化関数の鍵変数名を暗号関数抽出リスト193から取得し、取得した鍵変数名を注目ノードの行番号に対応付けて保護対象状態管理表195の項目「平文」に追加する。保護対象状態管理表195の「平文」の項目に追加される鍵変数は平文状態変数の一例である。
 例えば、図22に示す対象プログラム101Dの7行目(代入文)の右辺は暗号化関数「enc(name1,key)」であり、鍵変数は「key」である。
 注目ノードの行番号が7行目である場合、保護対象状態取得部131は、対象プログラム101Dの7行目の左辺の変数名「enc_name」を注目ノードの行番号「7行目」に対応づけて保護対象状態管理表195Dの項目「暗号文」に追加する。
 また、保護対象状態取得部131は、追加した変数名「enc_name」に対応付けて暗号化関数名「enc」と行番号「7行目」とを保護対象状態管理表195Dに設定する。
 さらに、保護対象状態取得部131は、鍵変数名「key」を注目ノードの行番号「7行目」に対応付けて保護対象状態管理表195Dの項目「平文」に追加する。
 これにより、保護対象状態管理表195Dは図23の状態になる。
 図22は、実施の形態1における対象プログラム101の一例を示す図である。
 図23は、実施の形態1における保護対象状態管理表195の一例を示す図である。
 S252の後、S260に進む。
 S253において、保護対象状態取得部131は、注目ノード命令(代入文)の左辺(代入先)の変数名を注目ノードの行番号に対応付けて保護対象状態管理表195の項目「平文」に追加する。保護対象状態管理表195の項目「平文」に追加される変数は平文状態変数の一例である。
 また、注目ノード命令の右辺が復号関数である場合、保護対象状態取得部131は、追加する平文状態変数に対応付けて復号関数の関数名および復号関数が使用されている行の番号を設定する。
 例えば、図22に示す対象プログラム101Dの3行目(代入文)の右辺は暗号化されていない保護対象変数「name」である。
 注目ノードの行番号が3行目である場合、保護対象状態取得部131は、対象プログラム101の3行目の左辺の変数名「name1」を注目ノードの行番号「3行目」に対応付けて保護対象状態管理表195Dの項目「平文」に追加する。
 これにより、保護対象状態管理表195Dは図24の状態になる。
 図24は、実施の形態1における保護対象状態管理表195の一例を示す図である。
 S253の後、S260に進む。
 S260において、保護対象状態取得部131は、処理ポインタで指定されている注目ノードがフローグラフの最終ノードであるか否かを判定する。
 注目ノードが最終ノードである場合(YES)、S261に進む。
 注目ノードが最終ノードでない場合(NO)、保護対象状態取得部131は、注目ノードの次のノードを新たな注目ノードとして処理ポインタで指定する。その後、S231に戻る。
 S261において、保護対象状態取得部131は、保護対象状態管理表195が変化したか否かを判定する。つまり、S231からS260までのループでS252又はS253が実行されたか否かを判定する。S252又はS253が実行されていれば、保護対象状態管理表195は変化している。
 例えば、保護対象状態取得部131は、S252又はS253を実行したときに、保護対象状態管理表195が変化したことを示す変化フラグ値を変化フラグに設定する。そして、保護対象状態取得部131は、変化フラグに変化フラグ値が設定されているか否かを判定する。判定後、保護対象状態取得部131は、保護対象状態管理表195が変化していないことを示す無変化フラグ値で変化フラグを初期化する。
 但し、保護対象状態取得部131は、S230で保護対象状態管理表195をコピーし、コピーした保護対象状態管理表195と現在の保護対象状態管理表195とを比較することによって保護対象状態管理表195が変化したか否かを判定しても構わない。
 保護対象状態管理表195が変化しないということは、例えば、フローグラフの全てのノードについて処理を終えたこと、つまり、フローグラフの全ての処理経路について処理を終えたことを意味する。
 そこで、保護対象状態取得部131は、保護対象状態管理表195が変化したか否かを判定する代わりに、フローグラフの全てのノードについて処理を終えたか否か、つまり、フローグラフの全ての処理経路について処理を終えたか否かを判定しても構わない。
 保護対象状態管理表195が変化した場合(YES)、S230に戻り、S230から処理を繰り返す。
 保護対象状態管理表195が変化していない場合(NO)、保護対象状態取得処理(S200)は終了する。
 図25は、実施の形態1における暗号関数抽出リスト193の一例を示す図である。
 図26は、実施の形態1における保護対象状態管理表195の一例を示す図である。
 保護対象状態取得処理(S200)(図18参照)により、保護対象状態取得部131は、図22に示す対象プログラム101Dと、図19に示す保護対象抽出リスト191Dと、図25に示す暗号関数抽出リスト193Dとに基づいて、図26に示す保護対象状態管理表195Dを生成する。
 図27は、実施の形態1における対象プログラム101の一例を示す図である。
 図28は、実施の形態1における保護対象抽出リスト191の一例を示す図である。
 図29は、実施の形態1における暗号関数抽出リスト193の一例を示す図である。
 図30は、実施の形態1における保護対象状態管理表195の一例を示す図である。
 保護対象状態取得処理(S200)(図18参照)により、保護対象状態取得部131は、図27に示す対象プログラム101Eと、図28に示す保護対象抽出リスト191Eと、図29に示す暗号関数抽出リスト193Eとに基づいて、図30に示す保護対象状態管理表195Eを生成する。
 図31は、実施の形態1における鍵状態取得処理(S300)の一例を示すフローチャートである。
 実施の形態1における鍵状態取得処理(S300)の一例について、図31に基づいて説明する。
 鍵状態取得処理(S300)は、S310からS370の各処理で構成される。
 S310において、鍵状態取得部132は、対象プログラム101のフローグラフを生成する。但し、鍵状態取得部132は、対象プログラム101のフローグラフを生成せず、保護対象状態取得部131によって生成されるフローグラフ(図18のS210参照)を使用しても構わない。
 S310の後、S320に進む。
 S320において、鍵状態取得部132は鍵状態管理表196を生成して初期化する。
 S320の後、S330に進む。
 図32は、実施の形態1における鍵状態管理表196の構成図である。
 実施の形態1における鍵状態管理表196の構成について、図32に基づいて説明する。
 鍵状態管理表196は、「位置(行番号)」「鍵変数」「演算子(関数名)」および「内容」を対応付けて含んでいる。
 「位置(行番号)」は暗号化関数が使用されている行の番号を示す。
 「鍵変数」は暗号鍵として使用される鍵変数を示す。
 「演算子(関数名)」は鍵変数を生成するために使用される演算子および関数を示す。
 「内容」は鍵変数に設定される値が「可変」であるか又は「不変」であるかを示す。
 初期化された鍵状態管理表196は、情報が何も設定されていない状態である(図32参照)。
 図31に戻り、鍵状態取得処理(S200)の説明をS330から続ける。
 S330において、鍵状態取得部132は、暗号関数抽出リスト193の先頭行を処理ポインタで指定する。ここで、処理ポインタとは暗号関数抽出リスト193の行を指定するものである。
 S330の後、S331に進む。
 S331において、鍵状態取得部132は、暗号関数抽出リスト193から処理ポインタで指定された行をメモリに読み込む。以下、S331で読み込んだ行を「注目行」とする。
 S331の後、S340に進む。
 S340において、鍵状態取得部132は、暗号関数抽出リスト193の注目行から鍵変数の変数名を取得し、取得した変数名で識別される鍵変数の内容(可変または不変)を変数情報抽出リスト194から取得する。
 例えば、図33に示す暗号関数抽出リスト193FのNo「1」が注目行である場合、鍵状態取得部132は、鍵用の実引数「key2」(鍵変数)と同じ変数名に対応付けられた内容「可変」を図34に示す変数情報抽出リスト194Fから取得する。
 図33は、実施の形態1における暗号関数抽出リスト193の一例を示す図である。
 図34は、実施の形態1における変数情報抽出リスト194の一例を示す図である。
 S340の後、S350に進む。
 S350において、鍵状態取得部132は、注目行の鍵変数についてフローグラフを解析し、注目行の鍵変数を生成するために使用される演算子および関数を解析結果として取得する。
 鍵変数解析処理(S350)の詳細については後述する。
 S350の後、S360に進む。
 S360において、鍵状態取得部132は、暗号関数抽出リスト193に設定されている注目行の行番号と、S340で取得した鍵変数の内容と、S350で取得した解析結果(演算子および関数)とを鍵状態管理表196に登録する。
 S360の後、S370に進む。
 S370において、鍵状態取得部132は、現在の注目行が暗号関数抽出リスト193の最終行であるか否かを判定する。
 現在の注目行が暗号関数抽出リスト193の最終行である場合(YES)、鍵状態取得処理(S300)は終了する。
 現在の注目行が暗号関数抽出リスト193の最終行でない場合(NO)、鍵状態取得部132は現在の注目行の次の行を新たな注目行として処理ポインタで指定する。その後、S331に戻る。
 図35は、実施の形態1における対象プログラム101の一例を示す図である。
 図36は、実施の形態1における鍵状態管理表196の一例を示す図である。
 図35に示す対象プログラム101Fにおいて、暗号化変数「enc」の鍵変数「key2」は、演算子「xor」(6行目)と、ハッシュ関数「hash」(5行目)と、演算子「+」(5行目)とを用いて生成されている。
 鍵状態取得処理(S300)(図31参照)により、鍵状態取得部132は、図35に示す対象プログラム101Fと、図33に示す暗号関数抽出リスト193Fと、図34に示す変数情報抽出リスト194Fとに基づいて、図36に示す鍵状態管理表196Fを生成する。
 ここで、ハッシュ関数リスト184は、ハッシュ関数の関数名として「hash」を含むものとする。
 図37は、実施の形態1における鍵変数解析処理(S350)を示すフローチャートである。
 鍵状態取得処理(S300)(図31参照)の鍵変数解析処理(S350)について、図37に基づいて説明する。
 鍵変数解析処理(S350)は、S351からS356の各処理で構成される。
 S351において、鍵状態取得部132は、暗号関数抽出リスト193の注目行の鍵変数が使用されている各行の行番号を変数情報抽出リスト194から取得し、取得した行番号で識別される行を表すノードのうち注目行の鍵変数を設定する代入文を表すノードをフローグラフから選択する。ここで、選択したノードを「注目ノード」とする。
 例えば、注目行の鍵変数が「key2」である場合、鍵状態取得部132は、図34に示す変数情報抽出リスト194Fから鍵変数「key2」に対応付けられている行番号「6」「7」を取得する。そして、鍵状態取得部132は、行番号「6」「7」のうち鍵変数「key2」を設定する代入文の行番号「6」を選択する(図35の6行目参照)。この場合、6行目の代入文を表すノードが注目ノードである。
 S351の後、S352に進む。
 S352において、鍵状態取得部132は、S351で選択した注目ノード(代入文)の右辺(代入元)から変数名、演算子および関数名(例えば、ハッシュ関数リスト184に含まれるハッシュ関数名)を取得する。
 例えば、鍵状態取得部132は、図35に示す対象プログラム101Fの6行目の代入文(注目ノード)から右辺で用いられている変数名「key1」「seed2」および演算子「xor」を取得する。
 S352の後、S353に進む。
 S353において、鍵状態取得部132は、S352で取得した変数名から未選択の変数名を1つ選択する。
 S353の後、S354に進む。
 S354において、鍵状態取得部132は、S353で選択した変数名で識別される変数について、注目行の鍵変数と同様にフローグラフを解析する。
 言い換えると、鍵状態取得部132は、注目行の鍵変数名をS353で選択した変数名に置き換えて鍵変数解析処理(S350)を実行する。
 つまり、鍵状態取得部132は、鍵変数を設定するための変数について鍵変数解析処理(S350)を再帰的に実行する。
 例えば、鍵状態取得部132は、図35に示す対象プログラム101Fの鍵変数「key2」を設定する代入文(6行目)で用いられる変数「key1」について鍵変数解析処理(S350)を実行する。
 さらに、鍵状態取得部132は、変数「key1」を設定する代入文(5行目)で用いられている変数「in」について鍵変数解析処理(S350)を実行する。
 また、鍵状態取得部132は、鍵変数「key2」を設定するためのその他の変数「seed2」「seed1」についても鍵変数解析処理(S350)を実行する。
 S354の後、S355に進む。
 S355において、鍵状態取得部132は、S352で取得した演算子および関数名(S354で再帰的に取得した演算子および関数名を含む)を解析結果リストに登録する。解析結果リストは鍵変数解析処理(S350)の解析結果である。
 例えば、鍵状態取得部132は、図35に示す対象プログラム101Fに含まれる演算子および関数名のうち、鍵変数「key2」を設定する代入文(6行目)の演算子「xor」、変数「key1」を設定する代入文(5行目)のハッシュ関数名「hash」および演算子「+」を解析結果リストに登録する。
 S355の後、S356に進む。
 S356において、鍵状態取得部132は、S353で未選択の変数名が残っているか否かを判定する。
 未選択の変数名が残っている場合(YES)、S353に戻る。
 未選択の変数名が残っていない場合(NO)、鍵変数解析処理(S350)は終了する。
 図38は、実施の形態1における脆弱性判定処理(S140)の一例を示すフローチャートである。
 実施の形態1における脆弱性判定処理(S140)(図5参照)について、図38に基づいて説明する。
 脆弱性判定処理(S140)は、S141からS149の各処理で構成される。
 S141において、脆弱性判定部140は、S122(図6参照)で生成された出力関数抽出リスト192の先頭行を処理ポインタで指定する。ここで、処理ポインタとは出力関数抽出リスト192の行を指定するものである。
 S141の後、S142に進む。
 S142において、脆弱性判定部140は、出力関数抽出リスト192から処理ポインタで指定された行をメモリに読み込む。以下、S142で読み込んだ行を「注目行」とする。
 S142の後、S143に進む。
 S143において、脆弱性判定部140は、出力関数抽出リスト192の注目行を参照し、注目行の項目「出力の状態」が「平文」であるか否かを判定する。
 例えば、図39に示す出力関数抽出リスト192DのNo「1」が注目行である場合、注目行の項目「出力の状態」は「平文」である。
 図39は、実施の形態1における出力関数抽出リスト192の一例を示す図である。
 注目行の項目「出力の状態」が「平文」である場合(YES)、S144に進む。
 注目行の項目「出力の状態」が「平文」でない場合、つまり、注目行の項目「出力の状態」が「暗号文」である場合(NO)、S148に進む。
 S144において、脆弱性判定部140は、出力関数抽出リスト192の注目行から出力変数(出力関数の実引数)を一つ選択する。
 例えば、図39に示す出力関数抽出リスト192DのNo「1」が注目行である場合、注目行の出力変数(実引数)は「enc_name」である。
 S144の後、S145に進む。
 S145において、脆弱性判定部140は、S144で選択した出力変数がS200(図17参照)で生成された保護対象状態管理表195に含まれる保護対象変数と同じ変数であるか否かを判定する。
 例えば、出力変数「enc_name」は図26に示す保護対象状態管理表195Dに含まれる保護対象変数である。
 出力変数が保護対象変数である場合(YES)、S146-1に進む。
 出力変数が保護対象変数でない場合(NO)、S148に進む。
 S146-1において、脆弱性判定部140は、S144で選択した出力変数(保護対象変数)が保護対象状態管理表195の項目「暗号文」に含まれる暗号状態変数であるか否かを判定する。
 例えば、出力変数「enc_name」は図26に示す保護対象状態管理表195Dの項目「暗号文」に含まれる暗号状態変数である。
 出力変数が暗号状態変数である場合(YES)、S146-2に進む。
 出力変数が暗号状態変数でない場合、つまり、出力変数が平文状態変数である場合(NO)、S147に進む。
 S146-2において、脆弱性判定部140は、保護対象状態管理表195から出力変数(暗号状態変数)に対応付けて設定された暗号化関数の行番号を取得する。
 また、脆弱性判定部140は、取得した暗号化関数の行番号に対応付けられた鍵変数の内容(可変または不変)をS300(図17参照)で生成された鍵状態管理表196から取得する。
 そして、脆弱性判定部140は、取得した鍵変数の内容が可変であるか否かを判定する。
 例えば、脆弱性判定部140は、出力変数「enc_name」に対応付けられた暗号化関数「enc」の行番号「7行目」を図26に示す保護対象状態管理表195Dから取得する。
 また、脆弱性判定部140は、取得した行番号「7行目」に対応付けられた鍵変数「key」の内容「不変」を図40に示す鍵状態管理表196Dから取得する。
 図40は、実施の形態1における鍵状態管理表196の一例を示す図である。
 鍵変数の内容が可変である場合(YES)、S146-3に進む。
 鍵変数の内容が可変でない場合、つまり、鍵変数の内容が不変である場合(NO)、S147に進む。
 S146-3において、脆弱性判定部140は、鍵状態管理表196を参照し、鍵変数に設定される暗号鍵がハッシュ関数または「xor」などの所定の秘匿演算によって生成される秘匿値であるか否かを判定する。所定の秘匿演算は、第三者によって推測されず、第三者に対して秘匿される秘匿値を算出するための演算である。
 例えば、図36に示す鍵状態管理表196Fは鍵変数「key2」が「xor」およびハッシュ関数「hash」を用いて生成されることを示している。この場合、脆弱性判定部140は鍵変数「key2」が保護されていると判定する。
 鍵変数が保護されている場合(YES)、S148に進む。
 鍵変数が保護されていない場合(NO)、S147に進む。
 S147において、脆弱性判定部140は、プログラム検証結果197に判定結果を追加する。
 例えば、脆弱性判定部140は、プログラム検証結果197に以下のような判定結果を追加する。
 S146-1において出力変数が暗号状態変数でない場合(NO)、脆弱性判定部140は出力変数の情報(変数名、行番号など)および出力変数が平文状態であること(保護対象情報が暗号化されずに出力されること)を示す情報をプログラム検証結果197に追加する。
 S146-2において鍵変数が可変でない場合(NO)、脆弱性判定部140は鍵変数の情報(関数名、変数名、行番号など)および鍵変数が不変(定数)であること(保護対象情報が適切に暗号化されずに出力されること)を示す情報をプログラム検証結果197に追加する。
 S146-3において鍵変数が保護されていない場合(NO)、脆弱性判定部140は鍵変数の情報(関数名、変数名、行番号など)および鍵変数が保護されていないこと(保護対象情報が適切に暗号化されずに出力されること)を示す情報をプログラム検証結果197に追加する。
 S147の後、S148に進む。
 S148において、脆弱性判定部140は、S144で未選択の出力変数が残っているか否かを判定する。
 未選択の出力変数が残っている場合(YES)、S144に戻る。
 未選択の出力変数が残っていない場合(NO)、S149に進む。
 S149において、脆弱性判定部140は、現在の注目行が出力関数抽出リスト192の最終行であるか否かを判定する。
 現在の注目行が出力関数抽出リスト192の最終行である場合(YES)、脆弱性判定部140はプログラム検証結果197をディスプレイまたはプリンタなどの出力装置に出力する。そして、脆弱性判定処理(S140)は終了する。
 現在の注目行が出力関数抽出リスト192の最終行でない場合(NO)、脆弱性判定部140は現在の注目行の次の行を新たな注目行として処理ポインタで指定する。その後、S142に戻る。
 図38で説明した脆弱性判定処理(S140)では、S146-1からS146-3の条件を満たさない場合の判定結果をプログラム検証結果197に設定している。
 但し、全ての出力変数について、出力変数毎にS145の判定結果とS146-1からS146-3それぞれの判定結果とのうち少なくともいずれかの判定結果をプログラム検証結果197に設定しても構わない。
 また、全ての出力変数のうち全ての保護対象変数について、保護対象変数毎にS146-1からS146-3の少なくともいずれかの判定結果をプログラム検証結果197に設定しても構わない。
 図41は、実施の形態1におけるプログラム検証装置100のハードウェア資源の一例を示す図である。
 図41において、プログラム検証装置100(コンピュータの一例)は、CPU901(Central Processing Unit)を備えている。CPU901は、バス902を介してROM903、RAM904、通信ボード905(通信装置)、ディスプレイ911(表示装置)、キーボード912、マウス913、ドライブ914、磁気ディスク装置920などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ドライブ914は、FD(Flexible Disk)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする装置である。
 ROM903、RAM904、磁気ディスク装置920およびドライブ914は記憶装置の一例である。キーボード912、マウス913、通信ボード905および記憶装置は入力装置の一例である。ディスプレイ911、通信ボード905および記憶装置は出力装置の一例である。
 通信ボード905は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
 磁気ディスク装置920には、OS921(オペレーティングシステム)、プログラム群922、ファイル群923が記憶されている。
 プログラム群922には、実施の形態において「~部」として説明する機能を実行するプログラムが含まれる。プログラム(例えば、プログラム検証プログラム)は、CPU901により読み出され実行される。すなわち、プログラムは、「~部」としてコンピュータを機能させるものであり、また「~部」の手順や方法をコンピュータに実行させるものである。
 ファイル群923には、実施の形態において説明する「~部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
 実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
 フローチャートなどに基づいて説明する実施の形態の処理はCPU901、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
 実施の形態において「~部」として説明するものは「~回路」、「~装置」、「~機器」であってもよく、また「~ステップ」、「~手順」、「~処理」であってもよい。すなわち、「~部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
 実施の形態1により、例えば、以下のような効果を奏することができる。
 プログラム検証装置100は、機密情報または個人情報などの保護対象情報が平文のまま又は適切な暗号方法を経ないでプログラムの外部に流れ出ることを静的解析によって発見して警告する、ことができる。
 つまり、プログラム検証装置100は、「重要な情報が平文のままプログラムから外部に出力されないこと」「重要な情報が暗号化された場合において、暗号化に利用する鍵がプログラム内でハードコード(定数化)されていないこと」を検証することができる。
 また、対象プログラム101が保護対象情報を適切に暗号化してから出力する適正なプログラムである場合、プログラム検証装置100は、対象プログラム101に脆弱性がある、という誤った診断をしてしまうことを防ぐことができる。
 暗号用または復号用の鍵およびパスワードは機密情報の一例であり、電話帳、住所、メール、位置情報及び生体情報は個人情報の一例である。
 プログラムの外部とは、例えば、ネットワーク、他のプログラム、ファイル、データベースまたは可搬型記憶媒体等を意味する。
 実施の形態1において、例えば、以下のようなプログラム検証装置(100)について説明した。実施の形態1の構成のうち対応する構成の符号を括弧内に記す。
 プログラム検証装置(100)は、リスト記憶部(190)と、プログラム入力部(110)と、出力変数抽出部(122)と、暗号変数抽出部(123)と、暗号状態変数抽出部(131)と、暗号状態判定部(140)と、検証結果出力部(140)とを備える。
 前記リスト記憶部は、特定の変数に設定された情報を出力する出力関数が定義された出力関数リスト(182)と、情報を暗号化する暗号化関数が定義された暗号化関数リスト(183)とを記憶する。
 前記プログラム入力部は、検証する対象であるプログラムを対象プログラム(101)として入力する(S110)。
 前記出力変数抽出部は、前記対象プログラムで使用されている変数のうち前記出力関数リストに定義された前記出力関数によって出力される情報が出力情報として設定される前記特定の変数を出力変数として抽出する(S122)。
 前記暗号変数抽出部は、前記対象プログラムで使用されている変数のうち前記暗号化関数リストに定義された前記暗号化関数によって暗号化された情報が暗号情報として設定される変数を暗号変数として抽出する(S123)。
 前記暗号状態変数抽出部は、前記対象プログラムに含まれる代入文を参照し、前記暗号変数抽出部によって抽出された前記暗号変数に設定された前記暗号情報が代入される変数を暗号状態変数として前記対象プログラムから抽出する(S200)。
 前記暗号状態判定部は、前記暗号状態変数抽出部によって抽出された前記暗号状態変数と前記出力変数抽出部によって抽出された前記出力変数とが同じ変数であるか否かを判定する(S146-1)。
 前記検証結果出力部は、前記暗号状態判定部の判定結果に基づいた情報を前記対象プログラムの検証結果として出力する(S147)。
 前記リスト記憶部は、保護する対象である保護対象情報を取得する情報取得関数が定義された情報取得関数リスト(181)を記憶する。
 前記プログラム検証装置は、保護対象変数抽出部(121)と、保護対象判定部(140)とを備える。
 前記保護対象変数抽出部は、前記対象プログラムで使用されている変数のうち前記情報取得関数リストに定義された前記情報取得関数によって取得された前記保護対象情報が設定される変数を保護対象変数として抽出する(S121)。
 前記保護対象判定部は、前記保護対象変数抽出部によって抽出された前記保護対象変数と前記出力変数抽出部によって抽出された前記出力変数とが同じ変数であるか否かを判定する(S145)。
 前記検証結果出力部は、前記保護対象判定部の判定結果と前記暗号状態判定部の判定結果とに基づいた情報を前記対象プログラムの前記検証結果として出力する(S147)。
 前記プログラム検証装置は、鍵変数抽出部(123)と、鍵内容判定部(132)とを備える。
 前記鍵変数抽出部は、前記対象プログラムで使用されている変数のうち暗号鍵が設定された変数として前記暗号化関数に対して指定されている変数を鍵変数として抽出する(S123)。
 前記鍵内容判定部は、前記対象プログラムに含まれる代入文を参照し、前記鍵変数抽出部によって抽出された前記鍵変数に前記暗号鍵として代入される値が可変値であるか否かを判定する(S300)。
 前記検証結果出力部は、前記鍵内容判定部の判定結果と前記保護対象判定部の判定結果と前記暗号状態判定部の判定結果とに基づいた情報を前記対象プログラムの前記検証結果として出力する(S147)。
 前記プログラム検証装置は、鍵状態判定部(132)を備える。
 前記鍵状態判定部は、前記対象プログラムに含まれる代入文を参照し、前記鍵変数抽出部によって抽出された前記鍵変数に前記暗号鍵として代入される値が所定の秘匿演算で生成されることによって秘匿される秘匿値であるか否かを判定する(S300)。
 前記検証結果出力部は、前記鍵状態判定部の判定結果と前記鍵内容判定部の判定結果と前記保護対象判定部の判定結果と前記暗号状態判定部の判定結果とに基づいた情報を前記対象プログラムの前記検証結果として出力する(S147)。
 100 プログラム検証装置、101 対象プログラム、110 プログラム入力部、120 必要情報抽出部、121 保護対象抽出部、122 出力関数抽出部、123 暗号関数抽出部、124 変数情報抽出部、130 保護状態解析部、131 保護対象状態取得部、132 鍵状態取得部、140 脆弱性判定部、181 情報取得関数リスト、182 出力関数リスト、183 暗号関数リスト、184 ハッシュ関数リスト、190 検証装置記憶部、191 保護対象抽出リスト、192 出力関数抽出リスト、193 暗号関数抽出リスト、194 変数情報抽出リスト、195 保護対象状態管理表、196 鍵状態管理表、197 プログラム検証結果、901 CPU、902 バス、903 ROM、904 RAM、905 通信ボード、911 ディスプレイ、912 キーボード、913 マウス、914 ドライブ、920 磁気ディスク装置、921 OS、922 プログラム群、923 ファイル群。

Claims (8)

  1.  変数と出力関数と暗号化関数とを使用すると共に代入文を含むプログラムを入力するプログラム入力部と、
     前記出力関数によって出力される出力情報が設定される出力変数を前記プログラムから抽出する出力変数抽出部と、
     前記暗号化関数によって暗号化された暗号情報が設定される暗号変数を前記プログラムから抽出する暗号変数抽出部と、
     前記プログラムに含まれる代入文を参照し、前記暗号変数抽出部によって抽出された前記暗号変数に設定された前記暗号情報が代入される暗号状態変数を前記プログラムから抽出する暗号状態変数抽出部と、
     前記暗号状態変数抽出部によって抽出された前記暗号状態変数と前記出力変数抽出部によって抽出された前記出力変数とが同じ変数であるか否かを判定する暗号状態判定部と、
     前記暗号状態判定部の判定結果に基づいて前記プログラムの検証結果を出力する検証結果出力部と
    を備えることを特徴とするプログラム検証装置。
  2.  前記プログラム検証装置は、
     前記プログラムで使用されている変数のうち、情報取得関数によって取得された保護対象情報が設定される保護対象変数を抽出する保護対象変数抽出部と、
     前記保護対象変数抽出部によって抽出された前記保護対象変数と前記出力変数抽出部によって抽出された前記出力変数とが同じ変数であるか否かを判定する保護対象判定部とを備え、
     前記検証結果出力部は、前記保護対象判定部の判定結果と前記暗号状態判定部の判定結果とに基づいて前記プログラムの前記検証結果を出力する
    ことを特徴とする請求項1記載のプログラム検証装置。
  3.  前記プログラム検証装置は、
     前記プログラムで使用されている変数のうち、前記暗号化関数によって使用される暗号鍵が設定される鍵変数を抽出する鍵変数抽出部と、
     前記プログラムに含まれる代入文を参照し、前記鍵変数抽出部によって抽出された前記鍵変数に前記暗号鍵として代入される値が可変値であるか否かを判定する鍵内容判定部とを備え、
     前記検証結果出力部は、前記鍵内容判定部の判定結果と前記保護対象判定部の判定結果と前記暗号状態判定部の判定結果とに基づいて前記プログラムの前記検証結果を出力する
    ことを特徴とする請求項2記載のプログラム検証装置。
  4.  前記プログラム検証装置は、
     前記プログラムに含まれる代入文を参照し、前記鍵変数抽出部によって抽出された前記鍵変数に前記暗号鍵として代入される値が秘匿演算によって秘匿される秘匿値であるか否かを判定する鍵状態判定部を備え、
     前記検証結果出力部は、前記鍵状態判定部の判定結果と前記鍵内容判定部の判定結果と前記保護対象判定部の判定結果と前記暗号状態判定部の判定結果とに基づいて前記プログラムの前記検証結果を出力する
    ことを特徴とする請求項3記載のプログラム検証装置。
  5.  前記プログラム検証装置は、
     前記プログラムで使用されている変数のうち、前記暗号化関数によって使用される暗号鍵が設定される鍵変数を抽出する鍵変数抽出部と、
     前記プログラムに含まれる代入文を参照し、前記鍵変数抽出部によって抽出された前記鍵変数に前記暗号鍵として代入される値が可変値であるか否かを判定する鍵内容判定部とを備え、
     前記検証結果出力部は、前記鍵内容判定部の判定結果と前記暗号状態判定部の判定結果とに基づいて前記プログラムの前記検証結果を出力する
    ことを特徴とする請求項1記載のプログラム検証装置。
  6.  前記プログラム検証装置は、
     前記プログラムで使用されている変数のうち、前記暗号化関数によって使用される暗号鍵が設定される鍵変数を抽出する鍵変数抽出部と、
     前記プログラムに含まれる代入文を参照し、前記鍵変数抽出部によって抽出された前記鍵変数に前記暗号鍵として代入される値が秘匿演算によって秘匿される秘匿値であるか否かを判定する鍵状態判定部を備え、
     前記検証結果出力部は、前記鍵状態判定部の判定結果と前記暗号状態判定部の判定結果とに基づいて前記プログラムの前記検証結果を出力する
    ことを特徴とする請求項1記載のプログラム検証装置。
  7.  プログラム入力部と、出力変数抽出部と、暗号変数抽出部と、暗号状態変数抽出部と、暗号状態判定部と、検証結果出力部とを備えるコンピュータを用いるプログラム検証方法であって、
     前記プログラム入力部が、変数と出力関数と暗号化関数とを使用すると共に代入文を含むプログラムを入力し、
     前記出力変数抽出部が、前記出力関数によって出力される出力情報が設定される出力変数を前記プログラムから抽出し、
     前記暗号変数抽出部が、前記暗号化関数によって暗号化された暗号情報が設定される暗号変数を前記プログラムから抽出し、
     前記暗号状態変数抽出部が、前記プログラムに含まれる代入文を参照し、前記暗号変数抽出部によって抽出された前記暗号変数に設定された前記暗号情報が代入される暗号状態変数を前記プログラムから抽出し、
     前記暗号状態判定部が、前記暗号状態変数抽出部によって抽出された前記暗号状態変数と前記出力変数抽出部によって抽出された前記出力変数とが同じ変数であるか否かを判定し、
     前記検証結果出力部が、前記暗号状態判定部の判定結果に基づいて前記プログラムの検証結果を出力する
    ことを特徴とするプログラム検証方法。
  8.  請求項7記載のプログラム検証方法をコンピュータに実行させるためのプログラム検証プログラム。
PCT/JP2013/073316 2012-09-26 2013-08-30 プログラム検証装置、プログラム検証方法およびプログラム検証プログラム Ceased WO2014050431A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US14/421,649 US9501646B2 (en) 2012-09-26 2013-08-30 Program verification apparatus, program verification method, and computer readable medium
CN201380049331.8A CN104662553B (zh) 2012-09-26 2013-08-30 程序验证装置、程序验证方法
EP13842867.7A EP2902939A4 (en) 2012-09-26 2013-08-30 Program Checker, Program Checker, and Program Checker
JP2014538305A JP5726385B2 (ja) 2012-09-26 2013-08-30 プログラム検証装置、プログラム検証方法およびプログラム検証プログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012211991 2012-09-26
JP2012-211991 2012-09-26

Publications (1)

Publication Number Publication Date
WO2014050431A1 true WO2014050431A1 (ja) 2014-04-03

Family

ID=50387840

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/073316 Ceased WO2014050431A1 (ja) 2012-09-26 2013-08-30 プログラム検証装置、プログラム検証方法およびプログラム検証プログラム

Country Status (5)

Country Link
US (1) US9501646B2 (ja)
EP (1) EP2902939A4 (ja)
JP (1) JP5726385B2 (ja)
CN (1) CN104662553B (ja)
WO (1) WO2014050431A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107210920A (zh) * 2015-02-06 2017-09-26 三菱电机株式会社 加密块确定装置、加密块确定方法以及加密块确定程序
JPWO2021214982A1 (ja) * 2020-04-24 2021-10-28

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
FR3094515B1 (fr) * 2019-03-28 2021-09-10 Ingenico Group procédé d’exécution de code sécurisé, dispositifs, système et programmes correspondants
US11546137B2 (en) 2020-02-26 2023-01-03 International Business Machines Corporation Generation of a request to initiate a secure data transfer in a computing environment
US11184160B2 (en) 2020-02-26 2021-11-23 International Business Machines Corporation Channel key loading in a computing environment
US11652616B2 (en) 2020-02-26 2023-05-16 International Business Machines Corporation Initializing a local key manager for providing secure data transfer in a computing environment
US11310036B2 (en) 2020-02-26 2022-04-19 International Business Machines Corporation Generation of a secure key exchange authentication request in a computing environment
US11405215B2 (en) * 2020-02-26 2022-08-02 International Business Machines Corporation Generation of a secure key exchange authentication response in a computing environment
US11502834B2 (en) 2020-02-26 2022-11-15 International Business Machines Corporation Refreshing keys in a computing environment that provides secure data transfer
US11489821B2 (en) 2020-02-26 2022-11-01 International Business Machines Corporation Processing a request to initiate a secure data transfer in a computing environment
CN111757176B (zh) * 2020-06-11 2021-11-30 青岛海信传媒网络技术有限公司 流媒体文件安全播放方法及显示设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502046A (ja) 2004-06-04 2008-01-24 フォーティファイ ソフトウェア, インコーポレイテッド セキュアーソフトウェアを開発し、テストし、監視するための装置および方法
JP2009129206A (ja) * 2007-11-22 2009-06-11 Toshiba Corp 情報処理装置、プログラム検証方法及びプログラム
JP2010507165A (ja) 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101880A (ja) 1995-10-04 1997-04-15 Fujitsu Ltd プログラム分析装置
JP4547861B2 (ja) 2003-03-20 2010-09-22 日本電気株式会社 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
JP4164036B2 (ja) 2004-02-05 2008-10-08 トレンドマイクロ株式会社 ネットワークを介して提供されるプログラムに対する受信装置上でのセキュリティの確保
US20050268326A1 (en) 2004-05-04 2005-12-01 Microsoft Corporation Checking the security of web services configurations
US7559080B2 (en) 2004-05-04 2009-07-07 Microsoft Corporation Automatically generating security policies for web services
US20050273860A1 (en) 2004-06-04 2005-12-08 Brian Chess Apparatus and method for developing, testing and monitoring secure software
US20050273859A1 (en) 2004-06-04 2005-12-08 Brian Chess Apparatus and method for testing secure software
US7207065B2 (en) 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
US7975306B2 (en) 2004-06-04 2011-07-05 Hewlett-Packard Development Company, L.P. Apparatus and method for monitoring secure software
JP4628073B2 (ja) 2004-11-30 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ アクセス制御装置及びアクセス制御方法
US20070107057A1 (en) 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
JP4587976B2 (ja) 2006-02-27 2010-11-24 日立ソフトウエアエンジニアリング株式会社 アプリケーションの脆弱性検査方法および装置
JP4512083B2 (ja) 2006-12-20 2010-07-28 トレンドマイクロ株式会社 ネットワークを介して通信端末に提供されるプログラムに対する伝送経路上でのセキュリティの確保
JP4951416B2 (ja) 2007-06-01 2012-06-13 株式会社 日立システムアンドサービス プログラム検証方法、プログラム検証装置
JP5171907B2 (ja) * 2010-09-13 2013-03-27 株式会社東芝 情報処理装置、情報処理プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502046A (ja) 2004-06-04 2008-01-24 フォーティファイ ソフトウェア, インコーポレイテッド セキュアーソフトウェアを開発し、テストし、監視するための装置および方法
JP2010507165A (ja) 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出
JP2009129206A (ja) * 2007-11-22 2009-06-11 Toshiba Corp 情報処理装置、プログラム検証方法及びプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IKUO NAKATA: "Compiler Construction and Optimization", September 1999, ASAKURA SHOTEN
See also references of EP2902939A4 *
TAKUMI YAMAMOTO: "An Evaluation on Analysis system of Web Application I/O", PROCEEDINGS OF THE 2012 IEICE GENERAL CONFERENCE, JOHO SYSTEM 1, 6 March 2012 (2012-03-06), pages 33, XP008179068 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107210920A (zh) * 2015-02-06 2017-09-26 三菱电机株式会社 加密块确定装置、加密块确定方法以及加密块确定程序
CN107210920B (zh) * 2015-02-06 2018-07-10 三菱电机株式会社 加密块确定装置以及加密块确定方法
JPWO2021214982A1 (ja) * 2020-04-24 2021-10-28
WO2021214982A1 (ja) * 2020-04-24 2021-10-28 日本電気株式会社 セキュリティ検査装置、セキュリティ検査方法、及びプログラム
JP7501615B2 (ja) 2020-04-24 2024-06-18 日本電気株式会社 セキュリティ検査装置、セキュリティ検査方法、及びプログラム
US12223058B2 (en) 2020-04-24 2025-02-11 Nec Corporation Security inspection apparatus, security inspection method, and program

Also Published As

Publication number Publication date
CN104662553A (zh) 2015-05-27
EP2902939A4 (en) 2016-04-27
JPWO2014050431A1 (ja) 2016-08-22
US9501646B2 (en) 2016-11-22
EP2902939A1 (en) 2015-08-05
CN104662553B (zh) 2017-09-01
US20150302202A1 (en) 2015-10-22
JP5726385B2 (ja) 2015-05-27

Similar Documents

Publication Publication Date Title
JP5726385B2 (ja) プログラム検証装置、プログラム検証方法およびプログラム検証プログラム
KR20140099126A (ko) 소프트웨어를 보안하기 위하여 해시 함수를 이용한 소프트웨어 처리 방법, 그 장치 및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
CN109075976A (zh) 取决于密钥认证的证书发布
JP6073320B2 (ja) デジタル署名するオーソリティ依存のプラットフォームシークレット
CN101116083A (zh) 程序变换装置及程序执行装置
JP2004038939A (ja) 対称鍵暗号化に基づくデータの保存および検索
JP6738061B2 (ja) 暗号文照合システム、方法、および記録媒体
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
JP2021528899A5 (ja)
EP3035582A1 (en) Binding white-box implementation to reduced secure element
Asghar et al. Use of cryptography in malware obfuscation
JP2016111594A (ja) 暗号文照合システム、方法、およびプログラム
US20200228346A1 (en) Encrypted data generation device, digital signature generation device, digital signature-attached data generation device, and digital signature-attached data generation system
CN116388992A (zh) 针对分布式tee应用的远程认证方法及装置
JPWO2017209228A1 (ja) 暗号化情報照合装置、暗号化情報照合方法、及び、暗号化情報照合プログラム
Knockel et al. The Not-So-Silent Type: Vulnerabilities in Chinese IME Keyboards' Network Security Protocols
Lee et al. Classification and analysis of security techniques for the user terminal area in the Internet banking service
CN115668334A (zh) 隐匿信息处理系统、加密装置、加密方法和加密程序
WO2017216924A1 (ja) 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム
JP2018506059A (ja) 暗号のシステム及び方法
JP2009169489A (ja) 暗号化方法、復号化方法、暗号化装置、復号化装置
JP2011123229A (ja) プログラムコード暗号化装置及びプログラム
WO2023021931A1 (ja) 情報処理プログラムおよび情報処理装置
Luo et al. A Usability Study of Cryptographic API Design
CN117176325A (zh) 一种加密处理方法、解密处理方法及相关装置

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014538305

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14421649

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2013842867

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE