WO2012056656A1 - 改ざん監視システム、保護制御モジュール及び検知モジュール - Google Patents

改ざん監視システム、保護制御モジュール及び検知モジュール Download PDF

Info

Publication number
WO2012056656A1
WO2012056656A1 PCT/JP2011/005858 JP2011005858W WO2012056656A1 WO 2012056656 A1 WO2012056656 A1 WO 2012056656A1 JP 2011005858 W JP2011005858 W JP 2011005858W WO 2012056656 A1 WO2012056656 A1 WO 2012056656A1
Authority
WO
WIPO (PCT)
Prior art keywords
control module
protection control
detection
data
distribution data
Prior art date
Application number
PCT/JP2011/005858
Other languages
English (en)
French (fr)
Inventor
勇二 海上
布田 裕一
松崎 なつめ
啓樹 静谷
英介 小泉
真吾 長谷川
Original Assignee
パナソニック株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by パナソニック株式会社 filed Critical パナソニック株式会社
Priority to US13/513,664 priority Critical patent/US8769312B2/en
Priority to CN201180004848.6A priority patent/CN102640161B/zh
Priority to JP2012515039A priority patent/JP5723361B2/ja
Priority to EP11835803.5A priority patent/EP2634718B1/en
Publication of WO2012056656A1 publication Critical patent/WO2012056656A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Definitions

  • the present invention relates to a technique for monitoring a module or the like operating inside a device.
  • protection control module the software that protects the application program itself may be altered by an attacker. If the protection control module is tampered with, the application program will be attacked by an attacker. In order to counter such an attack, the protection control module tampering detection is performed using a detection module that detects tampering of the protection control module.
  • the detection module reads all data constituting the protection control module, calculates a MAC (Message Authentication Code) value, and compares it with a previously stored MAC value to detect falsification of the protection control module.
  • MAC Message Authentication Code
  • the detection module has been tampered with and the security of the detection module has deteriorated, there is a risk that the tampered detection module may illegally use the key data included in the protection control module or the function of the protection control module itself. . Then, an unauthorized application is installed by the detection module, and the personal information or content of the user may be leaked by the application.
  • An object of the present invention is to provide a recording medium in which a falsification monitoring system, a protection control module, a detection module, a control method, and a control program are recorded.
  • the present invention provides a tamper monitoring system including a protection control module for protecting a computer program, n detection modules for monitoring the protection control module, and a management device.
  • the protection control module based on the computer program, generating means for generating d distribution data smaller than n; selection means for selecting d detection modules among the n detection modules; Distribution means for distributing the generated d distribution data to the selected d detection modules, each of the d detection modules determining whether or not the received distribution data is correct.
  • the management apparatus receives the judgment result from each of the detection module, based on the determination result received, characterized in that it manages the tampering of the protection control module.
  • the detection module selected by the protection control module is caused to execute detection processing. For this reason, even if a detection module that was not selected by the protection control module has been tampered with and operated illegally, if the selected detection module has not been tampered with, the tamper monitoring system as a whole will detect tampering with the protection control module. Does not affect processing. In this way, it is possible to verify whether the protection control module has been tampered with.
  • FIG. 2 is a block diagram showing a configuration of a protection control module 120.
  • FIG. 3 is a block diagram illustrating a configuration of a detection module 131.
  • FIG. 3 is a block diagram illustrating a configuration of a determination unit 210.
  • FIG. 3 is a block diagram illustrating a configuration of a verification base data distribution unit 220.
  • FIG. 2 is a hardware configuration diagram of the device 100.
  • FIG. 3 is a software hierarchy diagram of the device 100.
  • FIG. 3 is a flowchart showing the overall operation of the detection system 10. It is a sequence diagram which shows an initial setting process. It is a flowchart which shows operation
  • FIG. 1 It is a figure for demonstrating data division. It is a figure which shows the data structure of the verification base data 630 of the division
  • FIG. It is a figure which shows the data structure of the verification base data 650 of the division
  • FIG. It is a figure which shows the data structure of the verification base data 670 of the division
  • FIG. It is a sequence diagram which shows operation
  • the data structure of the correspondence table 330 used for selection of a detection module is shown. It is a sequence diagram which shows the update process of verification base data.
  • FIG. 10 is a sequence diagram showing an operation of an initial setting process in the third embodiment. It is a flowchart which shows the operation
  • FIG. It is a sequence diagram which shows operation
  • FIG. 16 is a sequence diagram illustrating an operation of detection processing in the fourth embodiment. Continued to FIG. It is a sequence diagram which shows operation
  • FIG. 25 is a diagram for explaining a decoding process composed of a plurality of decoding sub-processes in the fifth embodiment. It is a block diagram which shows the structure of the verification base data distribution part 220a. It is a figure which shows the data structure of the verification base data. It is a flowchart which shows the operation
  • FIG. 1 is an overall configuration diagram of a monitoring system 10d in Embodiment 1.
  • FIG. 1 is an overall configuration diagram of a monitoring system 10d in Embodiment 1.
  • One embodiment of the present invention is a tampering monitoring system including a protection control module for protecting a computer program, n detection modules for monitoring the protection control module, and a management device. Generating means for generating d distribution data smaller than n based on the computer program, selection means for selecting d detection modules among the n detection modules, and d generated Each of the distribution data is distributed to the selected d detection modules, and each of the d detection modules determines whether or not the received distribution data is correct, Detects tampering of the protection control module and sends a judgment result indicating whether the protection control module has been tampered with The management apparatus receives the judgment result from each of the detection module, based on the determination result received, characterized in that it manages the tampering of the protection control module.
  • the detection module selected by the protection control module is caused to execute detection processing. For this reason, even if a detection module that was not selected by the protection control module has been tampered with and operated illegally, if the selected detection module has not been tampered with, the tamper monitoring system as a whole will detect tampering with the protection control module. Does not affect processing. In this way, it is possible to verify whether the protection control module has been tampered with.
  • the tampering monitoring system includes one information processing device, the information processing device includes the protection control module and n detection modules, stores the computer program, and the information processing
  • the device and the management device may be connected via a network.
  • each detection module since one information processing apparatus includes the protection control module and the n detection modules, each detection module always monitors the protection control module while the information processing apparatus is activated. Can do.
  • the tampering monitoring system includes one information processing device and n detection devices, the information processing device includes the protection control module, stores the computer program, and the n detection devices.
  • the devices may include one detection module, and the information processing device, the n detection devices, and the management device may be connected via a network.
  • the detection device including the detection module and the information processing device including the protection control module are connected via the network. For this reason, the possibility that the protection control module and the detection module are tampered with at the same time is reduced.
  • Another embodiment of the present invention is a protection control module for protecting a computer program, the generating means for generating d distribution data smaller than n based on the computer program, and monitoring the protection control module Selecting means for selecting d detection modules out of n detection modules to perform, and distribution means for distributing the generated d pieces of distribution data to the selected d detection modules, respectively.
  • the d detection modules may determine whether the received distribution data is correct and detect falsification of the protection control module.
  • the detection module selected by the protection control module is caused to execute detection processing. For this reason, even if a detection module that was not selected by the protection control module has been tampered with and operated illegally, if the selected detection module has not been tampered with, the tamper monitoring system as a whole will detect tampering with the protection control module. Does not affect processing. In this way, it is possible to verify whether the protection control module has been tampered with.
  • the generation means is generated by storage means for storing an encrypted computer program generated by encrypting the computer program, and decryption means for decrypting the encrypted computer program to generate a computer program.
  • distribution data generation means for generating d distribution data based on the computer program. Further, the distribution data generation means may generate d pieces of distribution data by dividing data constituting the computer program.
  • the distribution data generation means generates d pieces of distribution data from the data constituting the computer program using a verifiable threshold secret sharing method, and the verifiable threshold secret sharing method uses d
  • the secret sharing method may be used to distribute the computer program so that the original computer program can be restored using any small distribution data of k or more.
  • the generation unit includes a storage unit that stores an encrypted computer program generated by encrypting the computer program, and d pieces of the distribution data in a process of performing a decryption process on the encrypted computer program.
  • the decryption process is composed of d decryption sub-processes, and sequentially performs the d decryption subprocesses, thereby decrypting the encrypted computer program, and each decryption subprocess. It is good also considering the decoding output output from as said distribution data.
  • the selection means holds a correspondence table including a combination of d detection modules among the n detection modules and identification information for identifying the combination in association with each other.
  • the selection information to be used may be acquired, a combination corresponding to identification information that matches the acquired selection information may be acquired from the correspondence table, and a detection module included in the combination may be selected.
  • the selection unit may acquire the selection information by generating a random number and using the generated random number as the selection information.
  • the selection unit may newly generate the selection information every time the distribution unit distributes the d pieces of distribution data.
  • Each detection module generates a random number and transmits it to all other detection modules.
  • Each detection module generates selection information using the received random number and the random number generated by itself, and generates the selected The information may be transmitted to the protection control module, and the selection unit may receive the selection information from the detection module and use the received selection information.
  • a management device that manages tampering of the protection control module generates the selection information, transmits the generated selection information to the protection control module, and the selection unit receives the selection information from the management device.
  • the received selection information may be used.
  • the protection control module cannot arbitrarily select the detection module.
  • the computer program may be an application program that is a protection target of the protection control module or a program that indicates an operation procedure of the protection control module.
  • the protection control module may be included in an information processing apparatus, and the information processing apparatus may store the computer program.
  • Another embodiment of the present invention is a detection module for monitoring a protection control module for protecting a computer program, wherein d distribution data smaller than n is generated based on the computer program, and the protection control module From the n detection modules for monitoring the detection module, d detection modules are selected, and the generated d distribution data are respectively distributed from the protection control module that distributes the selected d distribution data to the selected d detection modules.
  • Receiving means for receiving the distribution data, verification means for determining whether the received distribution data is correct, and monitoring indicating that the distribution data is correct to other detection modules when it is determined to be correct Transmitting means for transmitting the result, wherein the receiving means confirms that the distribution data received from another detection module is correct.
  • the verification means determines whether or not the protection control module has been tampered with using its own monitoring result and the received monitoring result, and the transmission means A determination result indicating whether or not tampering has occurred is transmitted.
  • the protection control module itself since the data concealed by the protection control module itself is not used to detect falsification of the protection control module, it is possible to prevent the concealed data from leaking to the detection module.
  • the verification means determines whether or not the distribution data received by each of the d detection modules, including itself, is correct using the monitoring result and the received monitoring result.
  • the distribution data received by each of the detection modules is determined to be correct, it is determined that the protection control module has not been tampered with, and distribution data received by at least one detection module out of the d detection modules is If it is determined that the protection control module is not correct, it may be determined that the protection control module has been tampered with.
  • the detection module selected by the protection control module is caused to execute detection processing. For this reason, even if a detection module that was not selected by the protection control module has been tampered with and operated illegally, if the selected detection module has not been tampered with, the tamper monitoring system as a whole will detect tampering with the protection control module. Does not affect processing. In this way, it is possible to verify whether the protection control module has been tampered with.
  • the protection control module generates d pieces of distributed data from data constituting the computer program using a verifiable threshold secret sharing method, and the verifiable threshold secret sharing method is smaller than d.
  • the secret sharing method distributes the computer program so that the original computer program can be restored using any distribution data of k or more
  • the verification means receives the monitoring result of itself and the received Using the monitoring result, it is determined whether or not the distribution data received by each of the at least k detection modules including itself is determined to be correct, and it is determined that the distribution data received by each of the at least k detection modules is correct. If it is determined that the protection control module has not been tampered with, (d ⁇ k + 1) or more detection modules are determined. If the Yuru decides distributed data respectively received incorrect, it may determine with the protection control module has been tampered with.
  • the n detection modules and the protection control module may be included in an information processing apparatus, and the information processing apparatus may store the computer program.
  • the detection module may be included in a detection device
  • the protection control module may be included in an information processing device
  • the information processing device may store the computer program.
  • Embodiment 1 A falsification monitoring system 10d as one embodiment according to the present invention will be described.
  • the falsification monitoring system 10d includes a protection control module 120d, n detection modules 130d1, 130d2, 130d2,..., 130dn and a management device 200d.
  • the protection control module 120d protects the computer program 110d.
  • N detection modules 130d1, 130d2, 130d2,..., 130dn monitor the protection control module 120d.
  • the protection control module 120d includes a generation unit 310d, a selection unit 311d, and a distribution unit 302d.
  • the generation unit 310d generates d distribution data smaller than n based on the computer program 110d.
  • the selection unit 311d selects d detection modules among the n detection modules 130d1, 130d2, 130d2, ..., 130dn.
  • the distribution unit 302d distributes the generated d distribution data to the selected d detection modules.
  • Each of the d detection modules determines whether the received distribution data is correct, detects whether the protection control module has been tampered with, and determines a determination result indicating whether the protection control module has been tampered with. Send.
  • the management device 200d receives the determination result from each of the detection modules, and manages falsification of the protection control module 120d based on the received determination result.
  • the detection module selected by the protection control module is caused to execute detection processing. For this reason, even if a detection module that was not selected by the protection control module has been tampered with and operated illegally, if the selected detection module has not been tampered with, the tamper monitoring system as a whole will detect tampering with the protection control module. Does not affect processing. In this way, it is possible to verify whether the protection control module has been tampered with.
  • the falsification monitoring system 10d includes one information processing apparatus (not shown).
  • the information processing apparatus includes a protection control module 120d and n detection modules 130d1, 130d2,..., 130dn, and stores a computer program 110d.
  • the information processing apparatus and the management apparatus 200d are connected via a network.
  • the falsification monitoring system 10d includes one information processing device (not shown) and n detection devices (not shown).
  • the information processing apparatus includes a protection control module 120d and stores a computer program 110d.
  • Each of the n detection devices includes one detection module.
  • the information processing apparatus, the n detection apparatuses, and the management apparatus 200d are connected via a network.
  • the configuration may be as follows.
  • the generation unit 310d includes a storage unit, a decryption unit, and a distribution data generation unit.
  • the storage unit stores an encrypted computer program generated by encrypting the computer program 110d.
  • the decryption unit decrypts the encrypted computer program and generates a computer program.
  • the distribution data generation unit generates d distribution data based on the generated computer program.
  • the distributed data generation unit generates d pieces of distributed data by dividing data constituting the computer program.
  • the distribution data generation unit generates d distribution data from the data constituting the computer program using a verifiable threshold secret sharing method.
  • the verifiable threshold secret sharing method is a secret sharing method for distributing the computer program so that the original computer program can be restored using any distribution data of k or more smaller than d. It is.
  • the generation unit 310d includes a storage unit and a decoding unit.
  • the decryption unit stores an encrypted computer program generated by encrypting the computer program 110d.
  • the decryption unit generates d pieces of distribution data in the course of performing decryption processing on the encrypted computer program.
  • the decryption process is composed of d decryption sub-processes, and the decryption output output from each decryption sub-process is performed by decrypting the encrypted computer program by sequentially performing the d decryption sub-processes. Is the distribution data.
  • the configuration may be as follows.
  • the selection unit 311d holds a correspondence table (not shown).
  • This correspondence table includes a combination of d detection modules among the n detection modules and identification information for identifying the combination in association with each other. Selection information used for selecting the combination is acquired, a combination corresponding to identification information that matches the acquired selection information is acquired from the correspondence table, and a detection module included in the combination is acquired.
  • the selection unit 311d generates a random number and acquires the selection information by using the generated random number as the selection information.
  • the selection unit 311d newly generates the selection information every time the distribution unit 302d distributes the d pieces of distribution data.
  • Each detection module generates a random number and sends it to all other detection modules.
  • Each detection module generates selection information using the received random number and the random number generated by itself, and transmits the generated selection information to the protection control module.
  • the selection unit 311d receives the selection information from the detection module and uses the received selection information.
  • the management apparatus 200d generates the selection information and transmits the generated selection information to the protection control module 120d.
  • the selection unit 311d receives the selection information from the management device 200d and uses the received selection information.
  • the computer program 110d is an application program that is a protection target of the protection control module 120d or the protection control module 120d. It may be a program showing the operation procedure.
  • the configuration may be as follows.
  • the detection module 130d1 includes a reception unit, a verification unit, and a transmission unit. The same applies to the other detection modules.
  • the verification unit receives one piece of the distribution data from the protection control module 120d.
  • the protection control module 120d generates d distribution data smaller than n based on the computer program 110d, and n detection modules 130d1, 130d2,... For monitoring the protection control module 120d. , 130dn, d detection modules are selected, and the generated d distribution data are respectively distributed to the selected d detection modules.
  • the verification unit determines whether the received distribution data is correct.
  • the transmission unit determines that the distribution data is correct, it transmits a monitoring result indicating that the distribution data is correct to another detection module.
  • the receiving unit receives the monitoring result indicating that the distribution data received from other detection modules is correct.
  • the verification unit determines whether the protection control module has been tampered with using its own monitoring result and the received monitoring result.
  • the transmission unit transmits a determination result indicating whether or not the protection control module has been tampered with.
  • the verification unit determines whether the distribution data received by each of the d detection modules including itself is determined to be correct. When the distribution data received by each of the d detection modules is determined to be correct, it is determined that the protection control module 120d has not been tampered with. If the distribution data received by at least one detection module among the d detection modules is determined to be incorrect, it is determined that the protection control module 120d has been tampered with.
  • the protection control module 120d generates d pieces of distribution data from data constituting the computer program 110d using a verifiable threshold secret sharing method.
  • the verifiable threshold secret sharing method is a secret sharing method for distributing the computer program so that the original computer program can be restored using any distribution data of k or more smaller than d. It is.
  • the verification unit uses its own monitoring result and the received monitoring result to determine whether or not the distribution data received by each of the at least k detection modules including itself is determined to be correct. (B) If the distribution data received by at least k detection modules is determined to be correct, it is determined that the protection control module has not been tampered with. (C) When the distribution data received by each of the (d ⁇ k + 1) or more detection modules is determined to be incorrect, it is determined that the protection control module has been tampered with.
  • Embodiment 2 A detection system 10 including an information processing apparatus and a management apparatus as another embodiment according to the present invention will be described.
  • the detection system 10 includes a device 100 as an information processing device and a management device 200.
  • the device 100 and the management apparatus 200 are connected via the network 20.
  • the device 100 is an information processing apparatus that provides users with various services via the network 20. For example, the device 100 purchases and reproduces content such as music and video by accessing a content distribution server (not shown) via the network 20. Also, by accessing a financial institution system (not shown), net banking (such as deposit balance inquiry and account transfer) is used.
  • a content distribution server not shown
  • net banking such as deposit balance inquiry and account transfer
  • the device 100 is a computer system including a processor, a memory, and other units, as will be described later.
  • the device 100 achieves its functions by the processor operating in accordance with a control computer program stored in the memory.
  • the memory of the device 100 stores application software (hereinafter referred to as “application”) 110, application 111, application 112, application 113, application 114, protection control module 120, and detection module group 130.
  • application application software
  • each of the detection modules in the application 110, the application 111, the application 112, the application 113, the application 114, the protection control module 120, and the detection module group 130 is a computer program.
  • These computer programs are configured by combining a plurality of instruction codes indicating instructions for the computer in order to achieve the respective functions.
  • the processor operates according to each detection module in the application 110, the application 111, the application 112, the application 113, the application 114, the protection control module 120, and the detection module group 130. In this way, each of the detection modules in the application 110, the application 111, the application 112, the application 113, the application 114, the protection control module 120, and the detection module group 130 achieves its function.
  • the memory and the processor storing the protection control module 120 constitute one protection control circuit.
  • the applications 110, 111, 112, 113, and 114 are software, that is, computer programs for providing various functions to a user who uses the device 100 via a network.
  • the application 110 is software for purchasing music content and video content from a content distribution server (not shown).
  • the application 111 is software for reproducing the purchased content.
  • the application 112 is software for accessing a financial institution system (not shown) and using net banking such as balance confirmation and transfer.
  • Each application has confidential data such as an authentication key for authenticating with a content distribution server or a financial institution system.
  • Confidential data is data that needs to be protected in order to prevent it from being used illegally by being extracted from the app by a malicious third party (hereinafter referred to as “attacker”).
  • the protection control module 120 is a module that controls a function for protecting each application so that each application is analyzed by an attacker and confidential data such as an authentication key is not extracted.
  • Functions for protecting the application include a decryption load function, a falsification detection function, and an analysis tool detection function.
  • the decryption load function is a function that encrypts and stores the application when the application is not used, and decrypts the encrypted application and loads it into the memory only when the application is used.
  • the tampering detection function is a function for checking whether the application has been tampered with.
  • the analysis tool detection function is a function for checking whether an analysis tool such as a debugger does not operate.
  • the protection control module 120 controls the operation of these functions and checks whether or not each application has been analyzed by an attacker. When an attack by an attacker is detected, the protection control module 120 stops the operation of the application in which the attack is detected. Next, processing such as clearing the memory used by the application, in particular, the memory area in which the confidential data is recorded (for example, filling the memory area with “0”) is performed. Thus, leakage of confidential data is prevented.
  • the detection module group 130 includes n (n is a positive integer) detection modules.
  • the detection module group 130 includes five detection modules 131, a detection module 132, a detection module 133, a detection module 134, and a detection module 135, as shown in FIG.
  • the memory and the processor that store the detection module 131 constitute one detection circuit.
  • the memory and the processor that store the detection modules constitute one detection circuit.
  • the detection modules 131, 132, 133, 134, and 135 determine whether or not the result of the decryption process of the encrypted application by the protection control module 120 is correct in order to verify whether or not the protection control module 120 has been tampered with. To do.
  • Each detection module transmits a monitoring result and a determination result for the protection control module 120 to the management apparatus 200 via the network 20.
  • the monitoring result indicates whether or not the divided data is correct
  • the determination result indicates whether or not the protection control module 120 has been tampered with.
  • the management device 200 generates verification base data.
  • the verification base data is data necessary for verifying whether or not the protection control module 120 is operating correctly.
  • the generated verification base data is distributed to the device 100.
  • the management apparatus 200 includes a determination unit 210, a verification base data distribution unit 220, and a communication unit 230, as shown in FIG.
  • the communication unit 230 communicates with the device 100 via the network 20. Note that for communication via the network between the device 100 and the management apparatus 200, a communication path in which security is ensured, for example, communication data is encrypted may be used.
  • the management device 200 is a computer system including a CPU, a ROM, a RAM, a hard disk unit, and the like.
  • the CPU operates according to a computer program stored in the ROM or the hard disk unit, the management device 200 exhibits the above functions.
  • the determination unit 210 determines whether the device 100 is in the state of software (the applications 110 to 114, the protection control module 120, and the detection module group 130) in the device 100 (that is, whether or not each software has been tampered with). Determines the process to be executed, and gives various instructions to the verification base data distribution unit 220. A detailed configuration will be described later.
  • the verification base data distribution unit 220 transmits verification base data used by the detection module for verification when the software (protection control module 120) in the device 100 is detected by the detection module.
  • the detailed configuration of the verification base data will be described later.
  • the communication unit 230 outputs the information received from the device 100 to each unit in the management apparatus 200 according to the information received from the device 100.
  • instructions and information from each unit in the management apparatus 200 are transmitted to the device 100.
  • an instruction or notification from the verification base data distribution unit 220 is transmitted to the device 100, or information such as a monitoring result of falsification detection from the device 100 is output to the determination unit 210.
  • FIG. 2 is a functional block diagram showing a functional configuration of the protection control module 120.
  • the protection control module 120 includes a reception unit 301, a transmission unit 302, a control unit 303, a decryption load unit 304, a falsification detection unit 305, an analysis tool detection unit 306, an encryption / decryption key holding unit 307, a verification base.
  • the data holding unit 308, the verification base data generation unit 309, the application division unit 310, and the detection module selection unit 311 are configured.
  • the receiving unit 301 receives various requests from each detection module.
  • the transmission unit 302 transmits various requests to each detection module.
  • the control unit 303 controls the decryption load unit 304, the alteration detection unit 305, and the analysis tool detection unit 306, and detects each application when it is attacked by an attacker.
  • the decryption load unit 304 decrypts the encrypted application (110 to 114) using the encryption / decryption key, A process of loading the obtained application (110 to 114) onto the memory is performed.
  • context switch to other applications
  • the encryption / decryption key is used to encrypt the data in the memory, and when the context switch is performed again to the original application (110 to 114), the encrypted data is decrypted. .
  • the context switch is a process of saving or restoring the CPU state (context) so that a plurality of processes can share one CPU.
  • the falsification detection unit 305 executes a falsification detection process to check whether each application has been falsified.
  • the falsification detection process includes a method using a falsification detection certificate added to each application and a method of comparing MAC values.
  • the analysis tool detection unit 306 detects when an analysis tool such as a debugger is installed or operates. This is because it is assumed that an unauthorized attacker installs or operates an analysis tool in order to attack each application.
  • a detection method for example, a method of searching for a file name, a method of checking whether a special register used by the debugger is used, a method of detecting an interrupt set by the debugger, or the like is used.
  • the encryption / decryption key holding unit 307 holds an encryption / decryption key for encrypting / decrypting each application.
  • the verification base data holding unit 308 holds the verification base data received from the management apparatus 200.
  • the configuration of the verification base data will be described later.
  • the verification base data generation unit 309 generates verification base data from the verification base data held in the verification base data holding unit 308.
  • the application dividing unit 310 divides the data of the applications (110 to 114) decrypted by the decryption load unit 304, that is, the data constituting the computer program of each application.
  • the detection module selection unit 311 selects a detection module that performs detection during the detection process. The selection method will be described later.
  • FIG. 3 is a functional block diagram showing a functional configuration of the detection module 131.
  • the detection modules 132, 133, 134, and 135 also have the same configuration as the detection module 131, and description thereof will be omitted.
  • the detection module 131 includes a reception unit 401, a transmission unit 402, a control unit 403, a verification unit 404, and a verification base data holding unit 405.
  • the receiving unit 401 receives various instructions from the management device 200. In addition, the result of processing requested to another module and the monitoring result for the protection control module 120 from another detection module are received.
  • the transmission unit 402 transmits data such as various processing results to the management apparatus 200, the protection control module 120, and other detection modules.
  • the control unit 403 controls the verification unit 404 based on various instructions and notifications received by the reception unit 401 and performs verification processing of the protection control module 120.
  • the verification unit 404 verifies whether the protection control module 120 is operating normally. As a verification method, in the detection for the protection control module 120, it is verified whether the protection control module 120 is operating normally using the verification base data stored in the verification base data storage unit 405.
  • the verification base data holding unit 405 holds verification base data for verifying whether or not the decryption load unit 304 of the protection control module 120 operates normally.
  • the verification base data is given from the protection control module 120.
  • FIG. 4 is a functional block diagram showing a functional configuration of the determination unit 210.
  • the determination unit 210 includes a reception unit 501, a transmission unit 502, an instruction generation unit 503, and a module selection unit 504.
  • the receiving unit 501 receives monitoring results and various requests from each detection module, and transmits them to the instruction generating unit 503. Further, a notification of completion of processing is received from the verification base data distribution unit 220 and transmitted to the instruction generation unit 503.
  • the transmission unit 502 transmits the instruction generated by the instruction generation unit 503 to the verification base data distribution unit 220 in the management apparatus 200.
  • the instruction generation unit 503 instructs the verification base data distribution unit 220 to distribute the verification base data based on the request for transmission.
  • the generated instruction is output to the transmission unit 502.
  • an instruction for selecting the detection module to the module selection unit 504 is generated so as to select a detection module for executing the detection, and the generated instruction is output to the module selection unit 504. To do.
  • the module selection unit 504 determines which detection module performs detection when the detection process of the protection control module 120 is executed.
  • the module selection unit 504 selects d (d is a positive integer smaller than n) detection modules from the detection module group 130 including n detection modules held by the device 100.
  • d is a positive integer smaller than n
  • a method of selecting one or a plurality of detection modules at random from the modules may be used.
  • the module selection unit 504 transmits a detection module identifier for identifying the selected detection module to the device 100 via the instruction generation unit 503, the transmission unit 502, the communication unit 230, and the network 20.
  • FIG. 5 is a functional block diagram showing a functional configuration of the verification base data distribution unit 220.
  • the verification base data distribution unit 220 includes a reception unit 601, a transmission unit 602, a control unit 603, an authentication unit 604, a certificate generation unit 605, a signature private key storage unit 606, an encryption key storage unit 607,
  • the data division unit 608, the application holding unit 609, the verification base data generation unit 610, the protection control module holding unit 611, and the detection module holding unit 612 are configured.
  • the signature private key holding unit 606 holds the signature private key (signature private key) of the management apparatus 200 used when the certificate generation unit 605 generates a certificate.
  • the encryption key holding unit 607 holds the encryption / decryption key shared with the protection control module 120.
  • the application holding unit 609 stores data of applications 110, 111, 112, 113, and 114 installed in the device 100, that is, computer programs that constitute each application.
  • the protection control module holding unit 611 holds a computer program constituting the protection control module 120 installed in the device 100.
  • the detection module holding unit 612 holds a computer program that constitutes a detection module installed in the device 100.
  • Each of these computer programs is configured by combining a plurality of instruction codes indicating commands to the computer in order to achieve the respective functions.
  • the receiving unit 601 receives the monitoring result for the protection control module 120 from each detection module.
  • the transmission unit 602 transmits a request for falsification verification of each application within the device 100 and the verification control module 120, verification base data necessary for verification, and the like.
  • the control unit 603 controls each component of the verification base data distribution unit 220.
  • Authentication unit 604 performs mutual authentication with each detection module and protection control module 120.
  • the certificate generation unit 605 divides the application data held in the application holding unit 609 by using the data dividing unit 608 and configures the protection control module 120 held in the protection control module holding unit 611.
  • the application is encrypted using the decryption load unit 304 included to obtain an encrypted application, and a verification value is generated from the encrypted application and the divided data.
  • signature data is generated using the signature private key (signature private key) of the management apparatus 200, and a certificate including the generated signature data is generated.
  • the data dividing unit 608 divides the data of the applications 110, 111, 112, 113, and 114 stored in the application holding unit 609, respectively, and generates a plurality of divided data.
  • the verification base data generation unit 610 generates verification base data from the data of each application stored in the application holding unit 609 and the plurality of pieces of divided data generated by the data division unit 608.
  • the verification base data generation unit 610 transmits the generated verification base data to the device 100.
  • the configuration of the verification base data will be described later.
  • a device 100 includes a CPU (Central Processing Unit) 171, for example, an EEPROM (Electrically Erasable and Programmable Read) which is a nonvolatile memory. Only Memory (172), RAM (Random Access Memory) 173, NIC (Network Interface Card) 174, and the like are configured to be communicably connected to each other via a bus 175.
  • CPU Central Processing Unit
  • EEPROM Electrically Erasable and Programmable Read
  • RAM Random Access Memory
  • NIC Network Interface Card
  • the EEPROM 172 stores various control modules including the protection control module 120, detection modules 131, 132, 133, 134, 135 and applications 110, 111, 112, 113, 114, and the like.
  • the RAM 173 is used as a work area for the CPU 171. Each detection module and each application are loaded into the RAM 173. The CPU 171 executes each detection module and each application stored in the RAM 173, thereby realizing the functions of the detection module and each application.
  • the NIC 174 is an expansion card for connecting to a network.
  • a boot loader 190, a protection control module 120, an OS 180, and applications 110, 111, 112, 113, and 114 operate as computer programs.
  • the boot loader 190, the protection control module 120, the OS 180, and the applications 110, 111, 112, 113, and 114 are hierarchically configured.
  • the boot loader 190 and the protection control module 120 are located in the lowest layer.
  • the OS 180 is located, and the applications 110, 111, 112, 113, 114 are located on the OS 180.
  • the detection module group 130 is incorporated in the OS 180.
  • Each application operates under the OS 180, and the protection control module 120 is outside the management of the OS 180 together with the boot loader 190 and the like.
  • the boot loader 190 is activated, and then the protection control module 120 and the OS 180 are activated. During the activation of the OS 180, the detection module group 130 is activated. Next, the applications 110, 111, 112, 113, and 114 are activated and each application is executed.
  • the first process is a process (initial setting process) for embedding verification base data and the like necessary for verifying the software (protection control module 120).
  • the second process is a process (detection process) for detecting whether the software (protection control module 120) inside the device 100 has been tampered with.
  • initial setting processing is performed when the device 100 is manufactured in a factory, and verification base data is embedded in the protection control module 120 (step S100). Thereafter, the device 100 is shipped from the factory and used for the user.
  • the protection control module 120 protects each application from an attack by an attacker inside the device 100.
  • each detection module performs a detection process for checking whether the protection control module 120 has been attacked (step S200).
  • the monitoring result of the protection control module 120 by each detection module is notified to the management apparatus 200.
  • the fact that the protection control module 120 has been tampered with is displayed on the display unit of the device 100.
  • FIG. 9 is a sequence diagram showing an operation flow of the detection system 10 in the initial setting process.
  • the processing individually performed by each of the detection modules 131, 132, 133, 134, and 135 is collectively described as the processing performed by the detection module group 130.
  • the protection control module 120 is held in the protection control module holding unit 611 of the management apparatus 200, and the detection modules 131, 132, 133, 134, and 135 are held in the detection module holding unit 612 of the management apparatus 200, The applications 110, 111, 112, 113, and 114 are held in the application holding unit 609.
  • the management apparatus 200 transmits the protection control module 120, the detection modules 131, 132, 133, 134, and 135 and the applications 110, 111, 112, 113, and 114 to the device 100.
  • the device 100 receives the protection control module 120, the detection modules 131, 132, 133, 134, and 135 and the applications 110, 111, 112, 113, and 114 (step S1001).
  • the device 100 installs (writes) each application, the protection control module 120, and each detection module received in the EEPROM 172 of the device 100 (step S1002).
  • Each of these applications is attached with a certificate (tamper detection certificate) for verifying whether the software has been tampered with. Besides the software, software necessary for the operation of the device 100 is installed.
  • step S1002 When the software installation (step S1002) is completed, the device 100 performs an initialization process by executing software for initial setting of the device 100, software for testing whether the device 100 operates normally, and the like (step S1002). In step S1003, an initialization instruction is output to the protection control module 120 (step S1004).
  • the protection control module 120 is initialized.
  • the protection control module 120 When receiving the initialization instruction (step S1004), the protection control module 120 requests the management device 200 to send verification base data (step S1005). When receiving the request from the protection control module 120 (step S1005), the management apparatus 200 executes verification base data generation processing (step S1006). When the verification base data generation process is completed, the management apparatus 200 transmits the generated verification base data to the protection control module 120 (step S1007). The protection control module 120 receives the verification base data from the management device 200 (step S1007), and stores the received verification base data in the verification base data holding unit 308 (step S1008).
  • the verification base data generation unit 610 of the management apparatus 200 reads a plurality of applications held in the application holding unit 609, reads the encryption / decryption key from the encryption key holding unit 607, and reads each of the read plurality of applications.
  • encryption is performed using an encryption algorithm to generate a plurality of encrypted applications (step S1101).
  • An example of the encryption algorithm used here is AES (Advanced Encryption Standard).
  • the data dividing unit 608 reads a plurality of applications held in the application holding unit 609, divides each of the read plurality of applications, and generates a plurality of divided data (step S1102).
  • the data of the application loaded on the memory may be divided at a certain size.
  • a law may be applied to application data. For example, for one application data, three modulo values, for example, Three division data may be generated from the data of one application by taking a modulo of “7”, “11”, and “17”.
  • FIG. 11 is an operation outline diagram for dividing application data.
  • the data dividing unit 608 divides the data of the application 110 to generate three divided data 1 (110a), divided data 2 (110b), and divided data 3 (110c). . More specifically, the data dividing unit 608 divides the applications 110, 111, 112, 113, and 114 into three, and generates three divided data 1, divided data 2, and divided data 3 for each application. .
  • the data of one application is “1200” in decimal notation, but this is for the sake of simplification, and the actual application data is expressed in decimal notation. Needless to say, it is not “1200”, and the app is usually a larger computer program.
  • the data dividing unit 608 generates divided data 1, divided data 2, and divided data 3 by dividing the data of the plurality of applications 110, 111, 112, 113, and 114, respectively.
  • the data dividing unit 608 divides the application 110 to generate divided data 1 (110a), divided data 2 (110b), and divided data 3 (110c).
  • the certificate generating unit 605 for each divided data, that is, for each divided data, a verification value and a certificate (decryption indicating the relationship between the encrypted application and the divided data) (Processing certificate) is generated (step S1103).
  • the verification base data generation unit 610 generates verification base data including division identification information, determination information, a plurality of verification value pairs, and a certificate (decryption processing certificate) for each of all pieces of divided data (Step S1). S1104).
  • the division identification information and the determination information will be described later.
  • the verification base data 630, 650, and 670 shown in FIGS. 12 to 14 are, for example, data obtained when the plurality of applications 110, 111, 112, 113, and 114 are each divided into three.
  • the verification base data 630 shown in FIG. 12 is generated for the divided data 1 generated from each of the plurality of applications 110, 111, 112, 113, and 114. Further, the verification base data 650 shown in FIG. 13 is generated for the divided data 2 generated from each of the plurality of applications 110, 111, 112, 113 and 114. Further, the verification base data 670 shown in FIG. 14 is generated for the divided data 3 generated from each of the plurality of applications 110, 111, 112, 113 and 114.
  • the verification base data 630, 650, and 670 are composed of division identification information, determination information, a plurality of verification value sets, and certificates, as shown in FIGS.
  • the verification base data 630 illustrated in FIG. 12 includes, as an example, division identification information 631, determination information 632, verification value sets 633a, 633b, 633c, 633d, 633e, and a certificate 634.
  • the division identification information is an identifier indicating which division data of the application the verification base data corresponds to.
  • the verification base data is information indicating which divided data of all the divided data corresponds to the divided application data.
  • the division identification information includes the number of divisions and information for identifying the division data.
  • the divided data are indicated by (3, 1), (3, 2) and (3, 3), respectively.
  • (a, b) represents the b-th divided data when the application is divided into a pieces.
  • the division identification information 631 shown in FIG. 12 is (3, 1)
  • the verification base data 630 shown in FIG. 12 corresponds to the first division data of each application divided into three.
  • the verification base data 650 shown in FIG. 13 corresponds to the second divided data of each app divided into three.
  • the division identification information 671 shown in FIG. 14 is (3, 3) as an example, and the verification base data 670 shown in FIG. 14 corresponds to the third divided data of each app divided into three. .
  • the division identification information may be an identifier indicating which division data of the application the verification base data corresponds to by including the number of divisions and a legal value.
  • the division identification information 631 shown in FIG. 12 is (3, 7), and the division identification information (3, 7) has a division number “3”, and the data of a plurality of applications Indicates that the law “7” was taken.
  • the division identification information 651 shown in FIG. 12 is (3, 7)
  • the division identification information (3, 7) has a division number “3”
  • the data of a plurality of applications Indicates that the law “7” was taken.
  • the division identification information (a, b) indicates that the method “b” is used when the application is divided into a pieces.
  • the division identification information includes the number of divisions.
  • the division identification information is not limited to this.
  • the division identification information may be only information indicating what number of division data is divided, or simply other division identification. Any information that can be distinguished from information may be used.
  • the application data is not limited to being divided into a certain size, and the size of each piece of divided data may be different, or a part of the application data may be collected and used as divided data.
  • the determination information is information for determining whether all of the divided data has been verified.
  • the determination information includes the number of divisions as an example. If verification of different pieces of divided data as indicated by the determination information is performed, all pieces of divided data are verified. For example, when the application data is divided into three pieces with a certain size, the determination information describes the same value “3” as the division number “3”. In this case, if the three pieces of divided data are verified, all the divided data are verified.
  • the determination information 632 shown in FIG. 12, the determination information 652 shown in FIG. 13, and the determination information 672 shown in FIG. 14 are “3”, respectively. Therefore, in this case, if three pieces of divided data are verified, all the divided data are verified.
  • the determination information may be a value obtained by multiplying the plurality of methods.
  • the application data is legal using “7”, “11”, and “17”, “1309” is described in the determination information.
  • “1309” is a value obtained by multiplying “7”, “11”, and “17”. This makes it possible to determine that the Chinese remainder theorem holds.
  • the RSA encryption is described on pages 110 to 113 of Non-Patent Document 1.
  • each detection module may hold the determination information in advance. It may be sent to the module.
  • the number of verification value pairs is the same as the number of apps.
  • the plurality of verification value sets included in the verification base data 630 correspond to the applications 110, 111, 112, 113, and 114, respectively.
  • Each verification value set includes application identification information, data, and a verification value.
  • Application identification information is an identifier for identifying a corresponding application.
  • Data is an encrypted application of the corresponding application.
  • the verification value is a value for verifying the divided data of the corresponding application.
  • the verification value is a hash value obtained by performing an operation using a hash function on a combination obtained by combining the corresponding encrypted application data and the generated divided data.
  • Hash (Verification value) Hash (Encrypted application data
  • Hash (a) indicates a hash value obtained by performing an operation on a with a hash function
  • Y indicates that X and Y are combined in this order.
  • the hash value obtained by performing the calculation by the hash function is used as the verification value, it is not limited to this.
  • a signature or the like may be used as follows.
  • the target data for calculating the hash value is not only a combination of the encrypted data and the divided data, but also application identification information for identifying the application and information indicating the contents of the application (DVD and BD playback application, net banking application) Etc.). Further, identification information of the protection control module 120 may be included.
  • Certificate is a decryption certificate.
  • the certificate combines all the verification values included in the verification base data to generate a combination, calculates a hash value by performing an operation with a hash function on the generated combination, and for the calculated hash value, This is signature data generated using the signature secret key of the signature secret key holding unit 606.
  • step S200 of FIG. 8 will be described with reference to FIGS. 15 and 16 are sequence diagrams showing the detection process.
  • the device 100 is shipped from the factory upon completion of the initial setting process shown in step S100 of FIG. 8, and is sent to the user.
  • the protection control module 120 controls the functions such as the decryption load function, the falsification detection function, and the analysis tool detection function inside the device 100 to attack each application. Protects against attacks by attackers.
  • a case where the protection control module 120 is verified when the application 110 is executed will be described as an example. The same operation is performed when verification is performed when other applications 111, 112, 113, and 114 are executed, and the description thereof is omitted.
  • the protection control module 120 receives a command for executing the application 110 from the OS 180 (step S2000). Upon receiving this command, the decryption load unit 304 decrypts the encrypted application 110 (step S2001). Next, the application dividing unit 310 divides the application 110 generated by decryption based on the division identification information of the verification base data held in the verification base data holding unit 308 (step S2002). If the division identification information describes that the application is divided into three, the application is divided into three. Hereinafter, a case where the application is divided into three will be described.
  • the detection module selection unit 311 of the protection control module 120 selects a detection module as a distribution destination of application identification information, divided data, and verification base data (step S2003).
  • the application identification information is identification information for identifying an application to be executed by the command received by the protection control module 120 from the OS 180.
  • the divided data is divided data generated by the division by the application dividing unit 310.
  • the verification base data corresponds to the generated divided data among the verification base data held in the verification base data holding unit 308. An example of verification base data is shown in FIGS.
  • the detection module selection unit 311 holds a correspondence table 330 shown in FIG.
  • the detection module selection unit 311 uses the correspondence table 330 held by the detection module selection unit 311 to determine which detection module among the detection modules 131, 132, 133, 134, and 135 is to be distributed. Make a module selection.
  • the correspondence table 330 shown in FIG. 17 includes a plurality of combinations of indexes and combinations of detection module identifiers.
  • Index is an identifier for identifying a corresponding combination.
  • the correspondence table 330 includes a combination 332a of identifiers “131”, “132”, and “133” for identifying the detection modules 131, 132, and 133 corresponding to the index 331a “1”, and the index 331b “2”.
  • it includes a combination 332b of identifiers “131”, “132”, “134” for identifying the detection modules 131, 132, 134, respectively.
  • the detection modules 131, 132, 135 are associated with the index 331c “3”. It includes a combination 332c of identifiers “131”, “132”, and “135” that identify each.
  • each Index is a positive integer
  • Index 331a, 331b, 331c, ... is “1", “2”, “3”, ..., "10”. These values are obtained by setting “1” as an initial value and sequentially adding “1” to the value.
  • the detection module selection unit 311 generates a random number and uses the generated random number as selection information for selecting a detection module. This random number is selected randomly from an integer range from “1” to the number of pairs included in the correspondence table 330.
  • the detection module selection unit 311 determines an index having the same value as the selection information from the correspondence table 330, and selects a detection module by selecting a combination corresponding to the determined index from the correspondence table 330. For example, when the selection information is “1”, the detection module selection unit 311 selects the combination 332a corresponding to the index 331a “1” from the correspondence table 330. Since the combination 332a includes the identifiers “131”, “132”, and “133”, the detection modules 131, 132, and 133 are selected.
  • the protection control module 120 distributes the application identification information, the divided data, and the verification base data corresponding to the divided data to the selected detection module.
  • the application identification information “110”, the first information of the divided data of the application (divided data 1 (110a)), and the verification base data 630 are transmitted to the detection module 131 (step S2004).
  • the application identification information “110”, the second information of the divided data of the application (divided data 2 (110b)), and the verification base data 650 are transmitted (step S2005), and the application identification information and the divided data of the application are transmitted to the detection module 133.
  • the third information (divided data 3 (110c)) and the verification base data 670 are transmitted (step S2006).
  • Each detection module verifies whether or not the correspondence between the input data (that is, the encrypted application) of the decryption process of the application of the protection control module 120 and the divided data is correct using the received verification base data (step S2007). Specifically, each detection module generates a verification value from the encrypted application data corresponding to the application identification information in the verification base data and the received divided data of the application. Then, the generated verification value is compared with the verification value in the received verification base data, and it is determined whether or not they match. Further, signature verification of the certificate (decryption processing certificate) in the verification base data is performed.
  • the signature verification of the certificate (decryption processing certificate) in the verification base data is performed as follows.
  • Verify (signature public key, certificate 634, Hash (verification value A
  • the signature public key is the public key of the management apparatus 200
  • the certificate 634, the verification value A, the verification value B, the verification value C, the verification value D, and the verification value E are stored in the verification base data 630 received by the detection module. Is included.
  • Verify (a, b, c) verifies whether the certificate b is correct with respect to the data c using the public key a, and indicates the verification result. The verification result indicates whether the verification has succeeded or failed.
  • Each detection module determines that the protection control module 120 has been tampered with if the verification values do not match or the verification fails (Y in step S2008), and divides the determination into the determination unit 210 of the management apparatus 200.
  • a monitoring result indicating that the data has been tampered with is transmitted (step S2009). If the verification values match and the verification is successful, each detection module determines that the protection control module 120 has not been tampered with (N in step S2008), indicating that the divided data has not been tampered with.
  • the division identification information in the verification base data is transmitted to another detection module (step S2010). Then, each detection module confirms whether or not all the divided data transmitted from the protection control module 120 are verified as correct (step S2011).
  • the detection module 131 transmits the division identification information 631 “(3, 1)” to the detection module 132 and the detection module 133.
  • the division identification information 631 “(3, 1)” is information indicating that the number of divisions is 3, and that the divided data is the first data.
  • the detection module 131 receives the division identification information 651 “(3, 2) ”and the division identification information 671“ (3, 3) ”is received from the detection module 133.
  • the division identification information 651 “(3, 2)” is information indicating that the division number is 3
  • the division data is the second data of the division identification information 671 “(3, “3)” is information indicating that the number of divisions is 3, and that the divided data is the third data among them.
  • the detection module 131 refers to the determination information 632 included in the verification base data 630, so that the application data is divided into three. Further, the detection module 131 knows that the second data and the third data have been verified by the detection modules 132 and 133 by confirming the contents of the received division identification information 651 and division identification information 671, respectively. Can do.
  • each detection module can confirm that all the divided data transmitted from the protection control module 120 have been verified by any detection module.
  • step S2011 If all the divided data are not verified to be correct, or if all the divided data are transmitted to one detection module, it is assumed that the protection control module 120 performs an illegal operation, and the protection control module 120 Is determined to be falsified (Y in step S2011), and a determination result indicating that the protection control module 120 has been falsified is transmitted to the determination unit 210 (step S2012).
  • step S2011 If it is determined that the protection control module 120 has not been tampered with (N in step S2011), the process ends. In this case, a determination result indicating that the protection control module 120 has not been tampered with may be transmitted to the determination unit 210.
  • a new application (described as “application 115”) is added to the device 100 and installed as a specific example, and the verification base data update processing operation is performed. explain.
  • the protection control module 120 receives the application 115 from the OS 180 (step S3001).
  • the protection control module 120 encrypts the application 115 using the encryption / decryption key stored in the encryption / decryption key storage unit 307 (step S3002).
  • the protection control module 120 transmits application identification information for identifying the application 115, the encrypted application 115, and a request for sending verification base data to the management apparatus 200 (step S3003).
  • the management apparatus 200 receives the application identification information, the encrypted application 115, and the verification base data sending request (step S3003), and holds the received encrypted application 115 in the protection control module holding unit 611. Decrypt with the encryption / decryption key of the protection control module 120. Then, as described above, new verification base data including the decrypted application 115 is generated (step S3004).
  • the management device 200 transmits new verification base data to the protection control module 120 (step S3005).
  • the protection control module 120 receives the new verification base data, and stores the received verification base data in the verification base data holding unit 308 (step S3006).
  • each detection module verifies the divided data, each detection module can verify without knowing all the data of the application.
  • the information of the protection control module 120 and the information of the application are not leaked, so that the safety of the system can be improved.
  • the protection control module 120 executes detection processing on the selected detection module from the detection module group 130. Therefore, even if a detection module not selected by the protection control module 120 performs an illegal operation, if the selected detection module has not been tampered with, the entire tamper monitoring system performs detection processing for the protection control module 120. It is possible to verify whether the protection control module has been tampered with.
  • Embodiment 3 A detection system 10a (not shown) as another embodiment according to the present invention will be described.
  • the detection system 10a has the same configuration as the detection system 10 of the second embodiment. Here, it demonstrates centering on difference with the detection system 10.
  • FIG. 10a is the same configuration as the detection system 10 of the second embodiment. Here, it demonstrates centering on difference with the detection system 10.
  • the detection system 10 cannot verify whether the protection control module has been tampered with when one of the d detection modules to which the protection control module is instructed to execute the detection operation is attacked. .
  • the detection system 10a generates a plurality of distributed data using a threshold secret sharing method (Threshold Secret Sharing Scheme) instead of generating divided data in the detection system 10, and distributes the generated distributed data to Even if several detection modules are attacked, protection is provided if k detection modules out of d detection modules (k is a positive integer and smaller than d) are not tampered with. It is possible to verify whether the control module has been tampered with.
  • d is called the number of detection operations
  • k is called a detection threshold value.
  • the threshold secret sharing method used here is as follows.
  • the data dividing unit 608 of the management apparatus 200 randomly selects integers a1, a2, ..., ak-1.
  • the integers a1, a2,..., Ak-1 are called parameters and are expressed as parameters (a1, a2,..., Ak-1).
  • a prime number r is selected.
  • the data dividing unit 608 sets a (k ⁇ 1) degree polynomial as shown in Equation 1 in FIG.
  • s is a constant term
  • s is data of each application.
  • the data division unit 608 selects the prime number p so that r
  • Equation 3 c 0, c 1 ⁇ ⁇ ⁇ ,..., Ck-1 ⁇ ⁇ ⁇ are calculated according to Equation 3 shown in FIG.
  • P, g, c0, c1, ..., ck-1 are represented as verification values (p, g, c0, c1, ..., ck-1).
  • the management apparatus 200 outputs the verification values (p, g, c0, c1, ..., ck-1) to the protection control module 120.
  • Each detection module verifies whether or not the distributed data wj transmitted is correct by determining whether or not Expression 4 shown in FIG. 23 is satisfied. If Equation 4 holds, it is determined that the distributed data wj has been correctly generated. If Equation 4 does not hold, it is determined that the distributed data wj has not been generated correctly.
  • the detection module receives a verification result from another detection module, and when the received verification result and its own verification result indicate that the verification by Equation 4 is successful in k or more detection modules, the protection control Module 120 determines that it has not been tampered with. On the other hand, in the case of less than k detection modules, the protection control module 120 does not determine that it has not been tampered with when the verification by Equation 4 is successful.
  • This secret sharing scheme is also called a verifiable secret sharing scheme, and restores the original data (here, a computer program) using any distributed data of k or more smaller than d. It is a secret sharing method that distributes the original data so that the secret sharing method and the threshold secret sharing method are described in detail on pages 209 to 219 of Non-Patent Document 1, so here Description of is omitted.
  • Steps S1001 to S1005 in the sequence diagram shown in FIG. 19 are the same as the corresponding steps in FIG.
  • step S1006a the management apparatus 200 executes verification base data generation processing. Details of the verification base data generation process will be described later.
  • the management apparatus 200 transmits the generated verification base data, parameters (a1, a2, ..., ak-1) and the prime number r to the protection control module 120 (step S1007a).
  • the protection control module 120 receives the verification base data, parameters (a1, a2,..., Ak-1) and prime number r from the management device 200 (step S1007a), and receives the received verification base data and parameters (a1, a2). ,..., Ak-1) and the prime number r are stored in the verification base data holding unit 308 (step S1008a).
  • Verification Base Data Generation Process The operation of the verification base data generation process of the detection system 10a will be described using the flowchart shown in FIG.
  • the verification base data generation process described here is the details of step S1006a shown in FIG.
  • the verification base data generation process of the detection system 10a is similar to the verification base data generation process of the detection system 10 shown in FIG. Here, the difference will be described.
  • Step S1101 in the flowchart shown in FIG. 20 is the same as the corresponding step in FIG.
  • the data division unit 608 of the verification base data distribution unit 220 performs, for each application, the coefficients a1, a2,..., Ak ⁇ of each term of the (k ⁇ 1) degree polynomial f (x) shown in Equation 1 of FIG. Select 1 at random. Each coefficient is an integer. Further, the prime number r is selected (step S1102a).
  • the data dividing unit 608 selects a prime number p so that r
  • the verification base data generation unit 610 generates one verification base data.
  • the verification base data includes division identification information, determination information, a plurality of verification value sets, and a certificate (decryption processing certificate).
  • Each verification value set includes application identification information and a verification value (step S1104a). The division identification information and the determination information will be described later.
  • Fig. 21 shows a schematic diagram of the operation when app data is distributed.
  • four shared data are generated for the application data by using the threshold secret sharing method, and the original application data can be restored using three divided data among them. .
  • the application dividing unit 310 of the protection control module 120 distributes the data of each application for each application from the applications 110, 111, 112, 113, and 114 using the threshold secret sharing method. Distributed data 1, distributed data 2, distributed data 3, and distributed data 4 are generated.
  • the application dividing unit 310 distributes the application data 110 “s” using the threshold secret sharing method.
  • FIG. 22 shows verification base data 690.
  • the verification base data 690 includes division identification information 691, determination information 692, a plurality of verification value sets 693 a to 693 e, and a certificate 694.
  • Each verification value set includes application identification information and a verification value.
  • the division identification information 691 indicates the number d of distributed data generated in the application division unit 310.
  • the division identification information 691 is “4”.
  • the determination information 692 is a detection threshold k.
  • the determination information 692 is “3”.
  • Application identification information is information for identifying the corresponding application.
  • the verification values are as described above (p, g, c0c, c1, ..., ck-1k).
  • the certificate 964 is as described above, and an operation using a hash function is performed on a combination obtained by combining a plurality of verification values, and a digital signature is applied to the obtained hash value using a signature private key.
  • the generated certificate is as described above, and an operation using a hash function is performed on a combination obtained by combining a plurality of verification values, and a digital signature is applied to the obtained hash value using a signature private key.
  • steps S2100 and S2101 in the detection process of the detection system 10a shown in FIG. 22 are the same as the operations of steps S2000 and S2001 shown in FIG. Hereinafter, the processing from step S2102 will be described.
  • the application dividing unit 310 of the protection control module 120 uses the parameters (a 1, a 2 ⁇ ⁇ ⁇ ,..., Ak-1) and the prime number r held in the verification base data holding unit 308, as shown in Equation 1 in FIG. (K-1) A degree polynomial is set.
  • s is data of the application 110.
  • the primary and higher terms other than the constant term s have a1a, a2, ..., ak-1 as coefficients, respectively.
  • d is specified by the division identification information included in the verification base data held in the verification base data holding unit 308. Further, k is specified by the determination information included in the verification base data (step S2102).
  • the application dividing unit 310 when d is “4” and k is “3”, the application dividing unit 310 generates four pieces of distributed data. If the verification using three or more pieces of distributed data is successful, the protection control module is successfully verified.
  • the protection control module 120 includes a detection module selection unit 311a instead of the detection module selection unit 311 of the second embodiment.
  • the detection module selection unit 311a has a configuration similar to that of the detection module selection unit 311. Here, the difference will be mainly described.
  • the detection module selection unit 311a of the protection control module 120 selects a detection module to which application identification information, distributed data, and verification base data are distributed (step S2103).
  • the application identification information is identification information for identifying an application to be executed by the command received by the protection control module 120 from the OS 180.
  • the distributed data is distributed data generated by the application dividing unit 310.
  • the verification base data is verification base data held in the verification base data holding unit 308. As for the verification base data, FIG. 22 shows verification base data 690 as an example.
  • a detection module selection method by the detection module selection unit 311a will be described with reference to FIG.
  • the detection module selection unit 311a holds a correspondence table 330a shown in FIG.
  • the detection module selection unit 311a uses the correspondence table 330a to determine which detection module among the detection modules 131, 132, 133, 134, and 135 to distribute application identification information, distributed data, and verification base data. To select a detection module.
  • the correspondence table 330a shown in FIG. 24 has the same configuration as the correspondence table 330 shown in FIG.
  • the correspondence table 330a includes a plurality of combinations of indexes and combinations of detection module identifiers. Index is an identifier for identifying a corresponding combination.
  • the correspondence table 330 a includes a combination 332 d of identifiers “131”, “132”, “133”, and “134” that identify the detection modules 131, 132, 133, and 134 corresponding to the index 331 d “1”, respectively.
  • index 331e “2” includes a combination 332e of identifiers “131”, “133”, “134”, and “135” for identifying the detection modules 131, 132, 133, and 135, and the index 331f “3”.
  • it includes a combination 332f of identifiers “131”, “132”, “134”, “135” for identifying the detection modules 131, 132, 134, 135, respectively, and corresponds to the index 331g “4”.
  • the detection module selection unit 311a determines an index having the same value as the selection information from the correspondence table 330a, and selects a detection module by selecting a combination corresponding to the determined index from the correspondence table 330a. For example, when the selection information is “1”, the detection module selection unit 311a selects the combination 332d corresponding to the index 331d “1” from the correspondence table 330a. Since the combination 332d includes the identifiers “131”, “132”, “133”, and “134”, the detection modules 131, 132, 133, and 134 are selected. Hereinafter, description will be made assuming that a combination of the detection modules 131, 132, 133, and 134 is selected.
  • the protection control module 120 distributes the application identification information, distributed data, and verification base data to the selected detection module.
  • the application identification information, the first shared data of the application (distributed data 1 (110d)) and the verification base data are transmitted to the detection module 131 (step S2104), and the application identification information and the second of the application are transmitted to the detection module 132.
  • Distributed data (distributed data 2 (110e)) and verification base data are transmitted (step S2105), application identification information, third shared data of the application (distributed data 3 (110f)), and verification base data are transmitted to the detection module 133.
  • Step S2106 the application identification information, the fourth shared data of the application (shared data 4 (110g)), and the verification base data are transmitted to the detection module 134 (step S2107).
  • Each verification unit 404 of the detection modules 131, 132, 133, and 134 determines whether or not Expression 4 shown in FIG.
  • Each verification unit 404 verifies the signature of the certificate included in the verification base data (step S2108).
  • Each detection module determines that the protection control module 120 has been tampered with if Expression 4 is not satisfied or the verification has failed (Y in step S2019), and is distributed to the determination unit 210 of the management apparatus 200 A monitoring result indicating that the data is incorrect is transmitted (step S2110).
  • Each detection module determines that the distributed data is correct when the expression 4 is established and the verification is successful (N in step S2109), the monitoring result indicating that the distributed data is correct, and the detection module The identifier is transmitted to another detection module (step S2111).
  • each detection module determines whether or not the verification by the expression 4 is successful in k or more detection modules based on the monitoring result received from the other detection modules and its own monitoring result (step S2112).
  • Step S2113 If it is determined that the verification by the expression 4 is successful in k or more detection modules (N in step S2112), it is determined that the protection control module 120 has not been tampered with, and the process is terminated. If it is not determined that the verification by the expression 4 is successful in k or more detection modules (Y in step S2112), a determination result indicating that the protection control module 120 has been tampered is transmitted to the determination unit 210 of the management apparatus 200. (Step S2113).
  • the verification unit 404 When the verification unit 404 receives a monitoring result indicating that the distributed data is correct by k or more threshold detection modules including its own detection module among the d detection modules to which the distributed data is distributed.
  • the protection control module 120 determines that it has not been tampered with. In this case, even when less than k detection modules perform an illegal operation and transmit a monitoring result indicating that the distributed data has been tampered even though the distributed data is correct to the verification unit 404, k Since more than one detection module has determined that the distributed data is correct, the verification unit 404 determines that the protection control module 120 is normal.
  • the verification unit 404 When the verification unit 404 receives a monitoring result indicating that the distributed data is not correct by (d ⁇ k + 1) or more detection modules out of the d detection modules to which the distributed data is distributed, the verification control module 120 Is determined to have been tampered with.
  • the determination unit 210 of the management apparatus 200 may make the above determination.
  • the determination unit 210 When the determination unit 210 receives a monitoring result indicating that the distributed data is correct from k detection modules that are threshold values among the d detection modules to which the distributed data is distributed, the protection control module 120 falsifies. Judge that it is not. In this case, even when less than k detection modules perform an illegal operation and transmit the monitoring result that the distributed data has been tampered with even though the distributed data is correct to the determination unit 210, k Since more than one detection module has determined that the distributed data is correct, the determination unit 210 determines that the protection control module 120 is normal.
  • the determination unit 210 receives a monitoring result indicating that the distributed data is not correct by (d ⁇ k + 1) or more detection modules out of the d detection modules to which the distributed data is distributed, It is determined that the module 120 has been tampered with.
  • the detection system 10a even if the detection module to which the distributed data is distributed performs an illegal operation, it is possible to determine whether the protection control module has performed a normal operation and maintain the safety of the system. Can do.
  • the security of the system can be theoretically evaluated by using the threshold secret sharing method for distributing the decrypted application data.
  • Embodiment 4 A detection system 10b as another embodiment according to the present invention will be described.
  • the detection system 10b has the same configuration as the detection system 10 of the second embodiment. Here, it demonstrates centering on difference with the detection system 10.
  • FIG. 10b is the same configuration as the detection system 10 of the second embodiment. Here, it demonstrates centering on difference with the detection system 10.
  • the protection control module selects a detection module to which the divided data is distributed. However, if the protection control module performs an unauthorized operation, and if it knows which detection module performs the unauthorized operation, the protection control module can be operated illegally by distributing the divided data to the detection module performing the unauthorized operation. It can be made undetectable. Therefore, in the detection system 10b, the detection module determines the detection module to which the divided data is distributed, thereby preventing the protection control module from arbitrarily selecting the detection module as the distribution destination.
  • the protection control module 120 notifies each detection module of the execution of the detection process (step S2203).
  • the verification unit 404 of each detection module After receiving the notification from the protection control module 120, the verification unit 404 of each detection module generates a random number (step S2204).
  • the transmission unit 402 transmits the generated random number to all other detection modules (step S2205).
  • Each detection module receives random numbers from all other detection modules (step S2205), and the verification unit 404 calculates a total value by adding all the received random numbers and a random number generated by itself, and calculates the total value Is used to calculate selection information indicating which Index in the correspondence table 330b (described later) held by the verification unit 404 is selected (step S2206).
  • the verification unit 404 holds a correspondence table 330b shown in FIG. 30 as an example.
  • the correspondence table 330 b is the same as the correspondence table 330 held by the detection module selection unit 311 of the protection control module 120.
  • Each detection module acquires the maximum value of Index from the correspondence table 330b.
  • “10” is the maximum value of the Index.
  • a value modulo the acquired maximum value is calculated as selection information.
  • Selection information (r 1 + r 2 +... + Rn) mod (maximum value of Index)
  • r1, r2,..., Rn are random numbers generated by n detection modules, respectively.
  • the selection information is “0”, the maximum value of the Index is used as the selection information.
  • the selection information is “1”.
  • the total value of all random numbers is “30”, the value modulo “10” is “0”, so the selection information is “10”.
  • Each detection module transmits selection information to the protection control module 120 (step S2207).
  • the protection control module 120 selects an index equal to the selection information from the correspondence table 330 shown in FIG. 17 based on any one of the received selection information, and sets a set of detection module identifiers corresponding to the selected index. Select (step S2208).
  • step S2209 to step S2217 are the same as the operations from step S2004 to step S2012 shown in FIGS. 15 to 16 in the second embodiment, and thus the description thereof is omitted.
  • the detection system 10b cooperates with the detection module to determine the detection module that distributes the divided data, so that the protection control module arbitrarily selects the detection module that distributes the divided data. Cannot be selected. Further, unless all of the detection modules perform an illegal operation, the selection destination of the detection module cannot be determined. Accordingly, it is possible to prevent the protection control module from performing an illegal operation and arbitrarily select the detection module that distributes the divided data, thereby improving the safety of the system.
  • Embodiment 5 A detection system 10c as another embodiment according to the present invention will be described.
  • the detection system 10c has the same configuration as the detection system 10 of the second embodiment. Here, it demonstrates centering on difference with the detection system 10.
  • FIG. 10c is the same configuration as the detection system 10 of the second embodiment. Here, it demonstrates centering on difference with the detection system 10.
  • the protection control module 120 decrypts the encrypted application through a decryption process including a plurality of decryption subprocesses. At this time, it is determined whether the protection control module 120 has been tampered with by verifying the input / output correspondence of each decryption sub-process.
  • FIG. 31 is a diagram showing an outline of a decryption process 350 including a plurality of decryption subprocesses in the protection control module 120.
  • the process of the decoding process 350 includes three decoding sub-processes of a decoding partial process 1 (351), a decoding partial process 2 (352), and a decoding partial process 3 (353).
  • the decoding sub-process may include four or more decoding partial processes.
  • an example of a decoding process including a plurality of decoding sub-processes is DES (Data Encryption Standard) and AES (Advanced Encryption Standard).
  • the decryption partial process 1 receives the encrypted application data 355 as input data, decrypts it to generate an intermediate value 1 (356), and uses the intermediate value 1 (356) as output data to decrypt the partial process 2 (352). ).
  • Decoding partial process 2 receives intermediate value 1 (356) as input data, decodes it to generate intermediate value 2 (357), and decodes partial process 3 (353) using intermediate value 2 (357) as output data.
  • the decryption partial process 3 (353) receives the intermediate value 2 (357) as input data, decrypts it to generate application data (358), and outputs the application data (358) as output data.
  • Each detection module verifies the input / output correspondence of each decryption partial process using the verification data generated for each decryption partial process. From the viewpoint of safety, it is preferable that one detection module does not verify all three decoding partial processes, but three detection modules verify different decoding partial processes.
  • the decoding process is composed of a plurality of decoding partial processes, and the input / output correspondence of each decoding partial process can be verified by the same number of detection modules as the number of decoding partial processes for different decoding partial processes. desirable. Note that a larger number of detection modules than the number of partial decoding processes may be verified for the partial decoding process. In this case, a plurality of detection modules will verify one decoding partial process.
  • the management device 200 of the detection system 10c includes a verification base data distribution unit 220a instead of the verification base data distribution unit 220 included in the management device 200 of the detection system 10.
  • the verification base data distribution unit 220a has a configuration similar to that of the verification base data distribution unit 220 included in the management device 200 of the detection system 10. Here, the difference will be mainly described.
  • FIG. 32 is a functional block diagram showing a functional configuration of the verification base data distribution unit 220a in the detection system 10c. Components having the same functions as those of the verification base data distribution unit 220 in the detection system 10 are denoted by the same reference numerals and description thereof is omitted.
  • the verification base data distribution unit 220 a does not include the data division unit 608.
  • the verification base data distribution unit 220 includes a software execution unit 621 that does not exist.
  • the software execution unit 621 uses the protection control module held in the protection control module holding unit 611 to decrypt the encrypted application, and in a plurality of sub-decryption processes constituting the decryption process, the intermediate value 1 and the intermediate value 2 And the data of the decrypted application is acquired.
  • FIG. 33 is a data configuration diagram of verification base data 240 as an example of verification base data in the detection system 10c.
  • the verification base data 240 includes data 241a related to the decryption partial process 1, data 241b related to the decryption partial process 2, and data 241c related to the decryption partial process 3.
  • This verification base data is held in the verification base data holding unit 308 of the protection control module 120.
  • the data 241a related to the decryption partial process 1 includes determination information 242a, a plurality of verification value sets 243a to 247a, a certificate 248a, and a decryption part identifier 249a.
  • the determination information 242a is information for determining whether all of the partial decoding processes have been verified, and describes the number of decoding sub-processes. For example, when the decoding process is composed of three decoding sub-processes, “3” is described.
  • the number of the plurality of verification value sets 243a to 247a is the same as the number of applications, and the plurality of verification value sets 243a to 247a correspond to the applications 110, 111, 112, 113, and 114, respectively.
  • Each verification value set includes application identification information, data, and a verification value.
  • the application identification information included in the verification value set is an identifier for identifying the corresponding application.
  • the data included in the verification value set is the data of the corresponding encryption application.
  • the verification value included in the verification value set is a decryption verification value generated from the encrypted application data 355 and the intermediate value 1 (356) that is the output data of the decryption partial process 1 (351).
  • the verification value is obtained by performing an operation using a hash function on a combination obtained by combining the input data and output data of each decryption partial process 1 (351) when the protection control module 120 operates normally. This is the obtained hash value.
  • Verification value Hash (input data of decryption partial process 1 (351)
  • the hash value is used as the verification value.
  • the present invention is not limited to this, and a signature or the like may be used as shown below.
  • Verification value Sign (signature private key, (input data of decryption partial process 1 (351)
  • the certificate 248a is a decryption process certificate.
  • the decryption processing certificate combines all the verification values included in the data 241a related to the decryption partial processing 1, and performs an operation by a hash function on the combination obtained by combining the plurality of verification values.
  • the signature is generated by applying a digital signature algorithm to the calculated hash value using the signature secret key of the signature secret key holding unit 606.
  • Certificate 248a Sign (signature private key, Hash (verification value
  • the decrypted partial identifier 249a is an identifier for identifying the decrypted partial process 1 (351). As an example, the decryption part identifier 249a is “001”.
  • the data 241b related to the decryption partial process 2 includes determination information 242b, a plurality of verification value sets 243b to 247b, a certificate 248b, and a decryption part identifier 249b.
  • the determination information 242b is information for determining whether all of the partial decoding processes have been verified, and describes the number of decoding sub-processes. For example, when the decoding process is composed of three decoding sub-processes, “3” is described.
  • the number of the plurality of verification value sets 243b to 247b is the same as the number of applications, and the plurality of verification value sets correspond to the applications 110, 111, 112, 113, and 114, respectively.
  • Each verification value set includes application identification information, data, and a verification value.
  • the application identification information included in the verification value set is an identifier for identifying the corresponding application.
  • the data included in the verification value set is the intermediate value 1 generated from the corresponding encryption application.
  • the verification value included in the verification value set is a decryption verification value generated from the intermediate value 1 (356) and the intermediate value 2 (357) that is output data of the decryption partial process 2 (352).
  • the intermediate value 1 (356) and the intermediate value 2 (357) are acquired when the software execution unit 621 executes an application decryption process.
  • the verification value is obtained by performing an operation using a hash function on a combination obtained by combining the input data and output data of each decryption partial process 2 (352) when the protection control module 120 operates normally. This is the obtained hash value.
  • Verification value Hash (input data of decoding partial processing 2 (352)
  • the hash value is used as the verification value.
  • the present invention is not limited to this, and a signature or the like may be used as shown below.
  • Verification value Sign (signature secret key, Hash (input data of decryption partial process 2 (352)
  • the certificate 248a is a decryption process certificate.
  • the decryption processing certificate combines all the verification values included in the data 241b related to the decryption partial processing 2, and performs a calculation by a hash function on the combination obtained by combining the plurality of verification values.
  • the signature is obtained by applying a digital signature algorithm to the calculated hash value using the signature secret key of the signature secret key holding unit 606.
  • Certificate 248b Sign (signature private key, Hash (verification value
  • the decryption part identifier 249b is an identifier for identifying the decryption part process 2 (352). As an example, the decryption part identifier 249b is “002”.
  • the data 241c related to the decryption partial process 3 includes determination information 242c, a plurality of verification value sets 243c to 247c, a certificate 248c, and a decryption partial identifier 249c.
  • the determination information 242c is information for determining whether all of the partial decoding processes have been verified, and describes the number of decoding sub-processes. For example, when the decoding process is composed of three decoding sub-processes, “3” is described.
  • the number of verification value sets 243c to 247c is the same as the number of applications, and the verification value sets 243c to 247c correspond to the applications 110, 111, 112, 113, and 114, respectively.
  • Each verification value set includes application identification information, data, and a verification value.
  • the application identification information included in the verification value set is an identifier for identifying the corresponding application.
  • the data included in the verification value set is an intermediate value 2 (357) generated from the data of the corresponding encrypted application.
  • the verification value included in the verification value set is a decryption verification value generated from the intermediate value 2 (357) and the application data (358).
  • the application data (358) is output data of the decryption partial process 3 (353).
  • the decrypted application data (358) is acquired by the software execution unit 621 executing the decryption process of the application.
  • the verification value is obtained by performing an operation using a hash function on a combination obtained by combining the input data and output data of each decryption partial process 3 (353) when the protection control module 120 operates normally. This is the obtained hash value.
  • Verification value Hash (input data of decoding partial processing 3 (353)
  • the hash value is used as the verification value.
  • the present invention is not limited to this, and a signature or the like may be used as shown below.
  • Verification value Sign (signature private key, Hash (input data of decryption partial process 3 (353)
  • the certificate 248c is a decryption process certificate.
  • the decryption processing certificate combines all the verification values included in the data 241c related to the decryption partial processing 3, and performs an operation by a hash function on the combination obtained by combining the plurality of verification values.
  • the signature is generated by applying a digital signature algorithm to the calculated hash value using the signature secret key of the signature secret key holding unit 606.
  • Certificate 248c Sign (signature private key, Hash (verification value
  • the decryption part identifier 249c is an identifier for identifying the decryption part process 3 (353). As an example, the decryption part identifier 249c is “003”.
  • the software execution unit 621 When generating verification base data, the software execution unit 621 encrypts a plurality of applications installed in the device 100 and held in the application holding unit 609 with the encryption / decryption key of the protection control module 120. (Step S1201).
  • the software execution unit 621 executes decryption processing of the protection control module 120, decrypts a plurality of encrypted applications, and decrypts partial processing 1 (351), decryption partial processing 2 (352), and decryption partial processing 3 (353).
  • the intermediate value 1 (356), the intermediate value 2 (357), and the decrypted application data (358) are acquired (S1202).
  • the certificate generation unit 605 sets, for each application, a set of encrypted application data (355) and intermediate value 1 (356), a set of intermediate value 1 (356) and intermediate value 2 (357), and For each pair of intermediate value 2 (357) and decrypted application data (358), a verification value is generated, and each decryption partial process is stored in the signature private key storage unit 606 from a plurality of verification values.
  • a certificate is generated using the existing signature private key (step S1203).
  • the verification base data generation unit 610 generates verification base data 240 including data (241a) related to the decoded partial process 1, data (241b) related to the decoded partial process 2, and data (241c) related to the decoded partial process 3. (Step S1204).
  • FIGS. 35 and 36 are sequence diagrams illustrating the operation of detection processing in the detection system 10c.
  • the protection control module 120 performs detection processing when the device 100 executes the application 110 will be described.
  • the verification base data generation unit 309 of the protection control module 120 receives the command for executing the application 110 (step S2300), the verification base data 240 (FIG. 33) stored in the verification base data storage unit 308 decrypts the decrypted portion.
  • the data 241a related to the processing 1, the data 241b related to the decoding partial processing 2, and the data 241c related to the decoding partial processing 3 are separated and extracted, and the data 241a related to the decoding partial processing 1 is verified base data 250a of the decoding partial processing 1 (shown in FIG. 37). ),
  • the data 241b related to the decoded partial process 2 is set as the verification base data 250b (shown in FIG. 38) of the decoded partial process 2
  • the data 241c related to the decoded partial process 3 is set as the verification base data 250c (shown in FIG. 39) of the decoded partial process 3. ) (Step S2301).
  • the verification base data 250a of the decryption partial process 1 shown in FIG. 37 is the same as the data 241a related to the decryption partial process 1 of the verification base data 240 of FIG. 33
  • the verification base data 250b of the decryption partial process 2 shown in FIG. 33 is the same as the data 241b related to the decryption partial process 2 of the verification base data 240
  • the verification base data 250c of the decryption partial process 3 shown in FIG. 39 is the data 241c related to the decryption partial process 3 of the verification base data 240 of FIG. Is the same.
  • the protection control module 120 decrypts the encrypted application 110 (step S2302).
  • the protection control module 120 uses the correspondence table 330 held by the detection module selection unit 311 to determine which detection module among the detection modules 131, 132, 133, 134, and 135 to transmit the verification base data ( Step S2303). Here, it is assumed that the detection modules 131, 132, and 133 are selected.
  • the protection control module 120 transmits the application identification information for identifying the application 110, the intermediate value 1 (356), and the verification base data 250a of the decryption partial process 1 to the selected detection module 131 (step S2304).
  • the protection control module 120 transmits the application identification information for identifying the application 110, the intermediate value 2 (357), and the verification base data 250b of the decryption partial process 2 to the selected detection module 132 (step S2305).
  • the protection control module 120 transmits the application identification information for identifying the application 110, the decrypted application data (358), and the verification base data 250c of the decryption partial process 3 to the selected detection module 133 (step S2306).
  • Each detection module uses the received verification base data to verify whether the input / output correspondence of the decoding partial process is correct (step S2307). Specifically, each detection module generates a verification value from the data in the received verification base data and the received intermediate value or application data. Then, the generated verification value is compared with the verification value in the verification data to determine whether they match. Further, the signature verification of the decryption processing certificate is performed.
  • each detection module determines that the intermediate value or application data is not correct (Y in step S2308), and sends the determination unit 210 to the intermediate value or application data. A monitoring result indicating that the data is not correct is transmitted (step S2309). If the verification values match and the signature verification is successful, each detection module determines that the protection control module 120 has not been tampered with (N in step S2308), indicating that each decryption partial process has been verified. The decryption partial identifier in the notification and verification base data is transmitted to all other detection modules (step S2310).
  • the detection module 131 transmits a notification that the decryption partial process 1 has been verified and a decryption part identifier “001” that identifies the decryption partial process 1 (351).
  • Each detection module confirms whether all the decryption partial processes of the protection control module 120 have been verified (step S2311). Specifically, each detection module determines whether or not it has received a decoding part identifier that identifies all other decoding partial processes except the decoding partial process assigned to itself.
  • Each detection module determines that the protection control module 120 has not been tampered with when determining that it has received a decryption part identifier that identifies all other decryption partial processes other than the decryption partial process assigned to itself ( In step S2311 N), the process is terminated.
  • each detection module determines that it has not received a decoding part identifier that identifies all other decoding partial processes other than the decoding partial process assigned to itself, all decoding partial processes have not been verified; Alternatively, output data (intermediate value 1 (356), intermediate value 2 (357) and application data (357)) and verification base data 250a, 250b, and 250c for all decoding partial processes are stored in one detection module.
  • the protection control module 120 determines that the protection control module 120 has been tampered with because there is a possibility that the protection control module 120 has performed an unauthorized operation (Y in step S2311). A determination result indicating that the file has been tampered with is transmitted (step S2312).
  • the decryption process executed by the protection control module 120 is composed of a plurality of subprocesses, which are decryption partial processes, and the correspondence between input / output data for each decryption partial process Is verified. Therefore, even if the detection module performs an illegal operation, it is possible to prevent the entire decryption process executed by the protection control module 120 from leaking. Further, it is possible to know which part of the entire decryption process by the protection control module 120 has been tampered with.
  • the mutual monitoring process may be performed after the detection process. Since the mutual monitoring process is described in detail in Patent Document 3, a description thereof is omitted here.
  • all the n detection modules cooperate to calculate the total value by summing the random numbers transmitted from all the detection modules, and select using the calculated total value.
  • selection information for determining a set of detection modules to be calculated is calculated, the present invention is not limited to this.
  • Some selection modules may cooperate to calculate selection information from random numbers generated by these detection modules.
  • n detection modules some of the n detection modules (here, m detection modules, where m is an integer smaller than n) are random numbers r1r, r2,. .., rm is generated.
  • the generated m random numbers r 1, r 2,..., Rm ⁇ are summed to calculate a total value, and the calculated total value is calculated using the index maximum value, and the obtained value is calculated as selection information. To do.
  • Selection information (r 1 + r 2 +... + Rm) Maximum value of mod index
  • the selection information is “0”, the maximum value of Index is used as the selection information.
  • Embodiment 4 In Embodiment 4 described above, all detection modules cooperate to calculate selection information from random numbers transmitted by all detection modules, but the present invention is not limited to this.
  • All the detection modules and the protection control module 120 may cooperate to calculate selection information from the random numbers transmitted by each.
  • all n detection modules generate random numbers r 1, r 2,..., Rn ⁇ ⁇ ⁇ ⁇ respectively, and the protection control module generates a random number R, and (n + 1) random numbers R, r 1 generated. , R2,..., Rn may be summed to calculate a total value, and selection information for determining a set of detection modules to be selected may be calculated using the calculated total value.
  • Selection information (R + r 1 + r 2 +... + Rn) mod (maximum value of Index)
  • the maximum value of Index is set as the selection information.
  • n detection modules among the n detection modules generate random numbers r 1, r 2,..., Rm ⁇ ⁇ ⁇ ⁇ , and the protection control module generates a random number R, and (m + 1) random numbers generated.
  • R, r1, r2,..., Rm may be summed to calculate a total value, and using the calculated total value, selection information for determining a set of detection modules to be selected may be calculated.
  • Selection information (R + r1 + r2 +... + Rm) mod (maximum value of Index)
  • the maximum value of Index is set as the selection information.
  • the selection information may be determined using a secret algorithm shared by the protection control module 120 and each detection module.
  • the protection control module 120 generates one random number R, and uses the key K held secretly by the protection control module 120 for the generated random number R to perform an operation using a keyed hash function KeyedHash. Then, the hash value H is calculated.
  • KeyedHash (K, R) indicates a hash value obtained by performing an operation with a keyed hash function on the value B using the key A.
  • all the n detection modules generate one random number ri ⁇ , and use the key ki H that is secretly held by the detection module as the generated random number, and use the keyed hash function KeyedHash. To calculate a hash value hi.
  • the calculated (n + 1) random numbers are summed to calculate a total value, and the calculated total value is calculated using the index maximum value, and the obtained value is calculated as selection information.
  • Selection information (H + h1 + h2 +... + Hn) mod (maximum value of Index)
  • the maximum value of Index is set as the selection information.
  • selection information may be calculated using m detection modules out of n detection modules instead of all n detection modules.
  • Selection information (H + h1 + h2 +... + Hm) mod (maximum value of Index) (6)
  • all detection modules cooperate to calculate selection information from random numbers transmitted from all detection modules.
  • the present invention is not limited to this.
  • the selection information may be generated using the ID of the device 100.
  • the ID of the device 100 is, for example, the serial number of the device 100.
  • the selection information may be calculated as follows.
  • Selection information (Serial number of device 100) mod (Maximum value of Index)
  • the selection information is “0”
  • the maximum value of Index is set as the selection information.
  • the other device is the ID of the target device. Since the selection information used by the other device is different from the selection information used by the target device, the selection information learned from the analysis of the target device cannot be used by the other device. . In this way, attacks on other devices can be prevented.
  • all detection modules cooperate to calculate selection information from random numbers transmitted from all detection modules.
  • the present invention is not limited to this.
  • the selection information may be calculated using the time information of the device 100.
  • the time information of the device 100 includes, for example, year / month / day / hour / minute / second.
  • the selection information may be calculated as follows.
  • Selection information (year / month / day / hour / minute / second) mod (maximum value of Index)
  • the maximum value of Index is set as the selection information.
  • the selection information may be calculated as follows.
  • Selection information Hash (year / month / day / hour / minute / second) mod (maximum value of Index)
  • the maximum value of Index is set as the selection information.
  • all detection modules cooperate to calculate selection information from random numbers transmitted from all detection modules.
  • the present invention is not limited to this.
  • the management device 200 may designate an index.
  • the protection control module 120 notifies the detection module of the detection execution. However, instead of notifying the detection module, the protection control module 120 notifies the management apparatus 200 of the detection execution.
  • the instruction generation unit 503 instructs the module selection unit 504 to select a module.
  • the module selection unit 504 selects an index from the correspondence table, and transmits the selected index to the instruction generation unit 503.
  • the instruction generation unit 503 transmits the Index received from the module selection unit 504 to the protection control module 120 via the transmission unit 502.
  • the protection control module 120 receives the Index and selects a set of detection module identifiers corresponding to the received Index.
  • step S2208 the protection control module 120 receives an index from each detection module and selects a detection module based on the index. At this time, if all the indexes received by the protection control module 120 from the plurality of detection modules do not completely match, in other words, if any one of the different indexes exists, one of the detection modules performs an illegal operation. And the protection control module 120 may notify the determination unit 210.
  • the protection control module 120 transmits the verification base data to the detection module selected based on the selection information.
  • the detection module 120 determines that the protection control module 120 has been tampered with, and determines the determination unit 210. May be notified.
  • the detection module knows the selection information, if the detection module holds the correspondence table 330, the detection module can know the detection module selected based on the selection information. it can. Accordingly, when the detection module is selected and the detection module does not receive the verification base data, the protection control module 120 transmits the verification base data to the detection module selected based on the selection information. You can know that there was no.
  • the protection control module 120 may be determined that the protection control module 120 has been tampered with when transmitted to a detection module different from the detection module selected based on the selection information.
  • the detection module knows the selection information, if the detection module holds the correspondence table 330, the detection module can know the detection module selected based on the selection information. it can. Therefore, when the detection module is not selected and the detection module receives the verification base data, the protection control module 120 did not transmit the verification base data to the detection module selected based on the selection information. I can know that.
  • the protection control module 120 is falsified. You may judge that
  • the above embodiments may be combined with the modification (1).
  • the modified example (1) since the mutual monitoring process is executed, it is possible to determine whether or not each detection module is performing an illegal operation after the detection process.
  • the process of the device 100 can be reduced.
  • the switching of whether to perform the mutual monitoring process may be switched periodically, may vary depending on the application, may be instructed to switch from the management apparatus 200, and the processing status inside the device 100 may be changed. It may be switched in view of this.
  • all the detection modules may be selected in step S2003.
  • each of the above modules may be an individual computer program, a module incorporated in the operating system, or a driver program called from the operating system. Alternatively, it may be an application program.
  • a plurality of detection modules and protection control modules operate in the device 100 that is an information processing apparatus, but the present invention is not limited to this.
  • a computer program to be protected and a protection control module that protects the computer program operate, and a plurality of detection modules operate in a single detection device different from the device 100.
  • the detection module may monitor the protection control module in the device 100.
  • the device 100 and the detection device are connected via a network.
  • the number of detection devices is not limited to one.
  • a plurality of detection devices may be connected to the device 100 via a network.
  • the number of detection devices is equal to the number of detection modules.
  • one detection module operates.
  • a detection module of one detection device monitors a protection control module in the device 100.
  • the plurality of detection modules operating in the plurality of detection devices monitor the protection control module in the device 100.
  • a plurality of divided data is generated from an application in the device 100 that is an information processing apparatus, and a plurality of distributed data is generated from the application by a threshold secret sharing method, or
  • the decryption process for decrypting the encrypted application includes a plurality of decryption subprocesses, and uses input data and output data in each decryption subprocess.
  • the protection control module is a computer program, a plurality of divided data may be generated from the protection control module. Further, a plurality of shared data may be generated from the protection control module by the threshold secret sharing method.
  • the decryption process for encrypting the protection control module and decrypting the encryption protection control module may be composed of a plurality of decryption subprocesses, and input data and output data in each decryption subprocess may be used.
  • the detection module detects falsification of the protection control module using a plurality of divided data generated from the protection control module.
  • the detection module detects tampering of the protection control module using a plurality of distributed data generated from the protection control module. Further, in the decryption process for decrypting the encrypted protection control module, tampering of the protection control module is detected using input data and output data in each decryption sub-process.
  • the second embodiment and the third embodiment may be combined.
  • the divided data is generated not by the verifiable secret sharing method but by using the (k, d) secret sharing method with the threshold value k and the distribution number d.
  • a hash value of the divided data is used as the verification value of the verification base data.
  • the device 100 as the information processing apparatus specifically includes a personal computer, a BD playback apparatus, a DVD playback apparatus, a BD recording apparatus, a DVD recording apparatus, a digital broadcast reception / playback apparatus, a digital broadcast recording apparatus, a mobile phone, and the like. It is.
  • An information processing apparatus is an information processing apparatus including a protection control module having a function of protecting an application and n detection modules, and the protection control module includes the encrypted application. Is input as input data, decodes the input data, and outputs a decoding result as output data, dividing means for dividing the output data into at least d (d ⁇ 2) divided data, and n pieces Selection means for selecting d detection modules among the detection modules, distribution means for distributing the divided d divided data to the d detection modules selected by the selection means, and the d pieces Each of the detection modules is divided into divided data, an amount expected when the input data and the decoding means perform normal operation. It is characterized by comprising verification means for judging whether or not the distributed divided data is correct using the verification data generated based on the value of the split data and the input data.
  • each detection module does not perform verification using the data of the protection control module itself, but verifies the decryption process of the application executed by the protection control module. It is possible to prevent leakage of confidential data included in.
  • the dividing means may generate the d pieces of divided data so that the output data can be restored only when k pieces of divided data are used among the d pieces of divided data.
  • the selection means may select a detection module from a correspondence table between the predetermined information and the identification information of the detection module based on the predetermined information.
  • the protection control module can select the detection module using the correspondence table.
  • the predetermined information may be changed each time the information is distributed by the distribution means.
  • the predetermined information can be changed every time it is distributed.
  • segmentation data cannot be determined arbitrarily by changing the detection module which a protection control module selects each time.
  • the predetermined information may be generated using partial information held by the plurality of detection modules.
  • the protection control module since the detection module determines the detection module to be selected by the protection control module, the protection control module cannot be arbitrarily determined.
  • each of the detection modules may include transmission means for generating a random number and transmitting it to another detection module, and the held partial information may be a random number generated by the detection module.
  • the protection control module cannot arbitrarily determine the detection module selected by the protection control module using the random number.
  • the information processing apparatus may be connected to a management apparatus, and the predetermined information may be received from the management apparatus.
  • the protection control module cannot be arbitrarily determined because the management device determines the detection module to be selected by the protection control module.
  • An information processing apparatus is an information processing apparatus including a protection control module having a function of protecting an application and n detection modules, wherein the protection control module is encrypted.
  • a decoding unit that executes a decoding process including d processing steps on the application program, a selection unit that selects d detection modules among the n detection modules, and the d processing steps.
  • the verification data generated have, characterized in that it comprises a verification means for determining the or the verification data is correct.
  • each detection module does not perform verification using the data of the protection control module itself, but verifies the application decryption process executed by the protection control module. It is possible to prevent leakage of confidential data.
  • FIG. 1 Another aspect of the present invention is a tampering monitoring system including a protection control circuit for protecting a computer program, n detection circuits for monitoring the protection control circuit, and a management device.
  • the protection control circuit based on the computer program, a generation circuit that generates d distribution data smaller than n, a selection circuit that selects d detection circuits among the n detection circuits, A distribution circuit that distributes the generated d distribution data to the selected d detection circuits.
  • Each of the d detection circuits determines whether the received distribution data is correct, detects falsification of the protection control circuit, and determines whether the protection control circuit has been tampered with Send.
  • the management device receives the determination result from each of the detection circuits, and manages the falsification of the protection control circuit based on the received determination result.
  • the detection circuit generates d distribution data smaller than n based on the computer program, and selects d detection circuits among the n detection circuits for monitoring the protection control circuit.
  • a receiving circuit that receives one piece of distribution data from a protection control circuit that distributes the generated d pieces of distribution data to the selected d detection circuits, and whether the received distribution data is correct or not.
  • a verification circuit that determines whether the distribution data is correct, and a transmission circuit that transmits a monitoring result indicating that the distribution data is correct to another detection circuit.
  • the reception circuit receives a monitoring result indicating that the distribution data received from another detection circuit is correct, and the verification circuit uses the monitoring result and the received monitoring result to tamper with the protection control circuit.
  • the transmission circuit transmits a determination result indicating whether or not the protection control circuit has been tampered with.
  • FIG. 1 Another aspect of the present invention is a falsification monitoring system including a protection control module for protecting a protection target computer program, n detection modules for monitoring the protection control module, and a management device.
  • the protection control module includes a memory unit storing a control computer program configured by combining a plurality of computer instructions, and one computer instruction at a time from the control computer program stored in the memory unit.
  • a processor that reads, decrypts, and operates according to the decryption result.
  • the control computer program includes: a generation step of generating d distribution data smaller than n based on the protection target computer program; and d detection modules among the n detection modules.
  • a selection step of selecting and a distribution step of distributing the generated d distribution data to the selected d detection modules are executed.
  • Each of the d detection modules determines whether the received distribution data is correct, detects whether the protection control module has been tampered with, and determines whether the protection control module has been tampered with Send.
  • the management device receives the determination result from each of the detection modules, and manages falsification of the protection control module based on the received determination result.
  • the detection module is configured by combining a plurality of computer instructions.
  • a memory unit storing a control computer program to be read, and a processor that reads out and decodes computer instructions one by one from the control computer program stored in the memory unit, and operates according to the decoding result Is provided.
  • the control computer program determines that the computer is correct, a reception step of receiving one piece of distribution data from the protection control module, a verification step of determining whether the received distribution data is correct And transmitting a monitoring result indicating that the distribution data is correct to another detection module.
  • the reception step receives a monitoring result indicating that the distribution data received from another detection module is correct, and the verification step uses the monitoring result and the received monitoring result to tamper the protection control module.
  • the transmission step transmits a determination result indicating whether or not the protection control module has been tampered with.
  • Each of the above devices is specifically a computer system including a microprocessor, ROM, RAM, a hard disk unit, a display unit, a keyboard, a mouse, and the like.
  • a computer program is stored in the RAM or hard disk unit.
  • Each device achieves its functions by the microprocessor operating according to the computer program.
  • the computer program is configured by combining a plurality of instruction codes indicating instructions for the computer in order to achieve a predetermined function.
  • a part or all of the constituent elements constituting each of the above devices may be configured by one system LSI (Large Scale Integration).
  • the system LSI is a super multifunctional LSI manufactured by integrating a plurality of components on a single chip, and specifically, a computer system including a microprocessor, a ROM, a RAM, and the like. .
  • a computer program is stored in the RAM.
  • the system LSI achieves its functions by the microprocessor operating according to the computer program.
  • each part of the constituent elements constituting each of the above devices may be individually made into one chip, or may be made into one chip so as to include a part or all of them.
  • the system LSI is used here, it may be called IC, LSI, super LSI, or ultra LSI depending on the degree of integration. Further, the method of circuit integration is not limited to LSI's, and implementation using dedicated circuitry or general purpose processors is also possible.
  • An FPGA Field Programmable Gate Array
  • a reconfigurable processor that can reconfigure the connection and setting of circuit cells inside the LSI may be used.
  • a part or all of the constituent elements constituting each of the above devices may be constituted by an IC card or a single module that can be attached to and detached from each device.
  • the IC card or the module is a computer system including a microprocessor, a ROM, a RAM, and the like.
  • the IC card or the module may include the super multifunctional LSI described above.
  • the IC card or the module achieves its function by the microprocessor operating according to the computer program. This IC card or this module may have tamper resistance.
  • the present invention may be the method described above. Further, the present invention may be a computer program that realizes these methods by a computer, or may be a digital signal composed of the computer program.
  • the present invention also provides a computer-readable recording medium such as a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD (Blu-ray Disc). ), Recorded in a semiconductor memory or the like.
  • the digital signal may be recorded on these recording media.
  • the computer program or the digital signal may be transmitted via an electric communication line, a wireless or wired communication line, a network represented by the Internet, a data broadcast, or the like.
  • the present invention may be a computer system including a microprocessor and a memory, the memory storing the computer program, and the microprocessor operating according to the computer program.
  • the program or the digital signal is recorded on the recording medium and transferred, or the program or the digital signal is transferred via the network or the like, and executed by another independent computer system. It is good.
  • the falsification monitoring system, protection control module, and detection module according to the present invention do not cause all detection modules to execute detection processing, but causes the detection module selected by the protection control module to execute detection processing. For this reason, even if a detection module that was not selected by the protection control module has been tampered with and operated illegally, if the selected detection module has not been tampered with, the tamper monitoring system as a whole will detect tampering with the protection control module. Does not affect processing. Thus, it has an effect of verifying whether the protection control module has been tampered with, and is useful as a technique for monitoring a module or the like operating inside the device.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

一部の検知モジュールが改ざんされている場合も、保護制御モジュールの改ざん検出を行うことができる。改ざん監視システム10dは、保護制御モジュール120d、n個の検知モジュール及び管理装置200dを含む。保護制御モジュール120dは、コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成部310d、d個の検知モジュールを選択する選択部311d及び生成したd個の前記分配データを各々d個の検知モジュールへ分配する分配部302dを備える。d個の各検知モジュールは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出し、判断結果を送信する。管理装置200dは、判断結果を基にして、保護制御モジュール120dの改ざんを管理する。

Description

改ざん監視システム、保護制御モジュール及び検知モジュール
 本発明は、機器内部で動作するモジュール等を監視する技術に関する。
 近年、秘匿データを有しているアプリケーションプログラムが、悪意のある第三者(以下、「攻撃者」という)に解析されないようにするため、ソフトウェアによってアプリケーションプログラムを保護する技術が開発されつつある。
 ソフトウェアによってアプリケーションプログラムを保護する技術として、例えば、ハッシュ値を用いた改ざん検証がある。また、アプリケーションプログラムを利用しないときには、アプリケーションプログラムを暗号化して保存しておき、利用するときにのみ、暗号化したアプリケーションプログラムを復号してメモリへロードする復号ロード機能等がある。
 ところが、このような技術を利用しても、アプリケーションプログラムを保護するソフトウェア(以下、「保護制御モジュール」という)自体が攻撃者により改ざんされる可能性がある。保護制御モジュールが改ざんされると、アプリケーションプログラムが攻撃者の攻撃を受けることになる。このような攻撃に対抗するために、保護制御モジュールの改ざん検出を行う検知モジュールを用いて、保護制御モジュールの改ざん検出を行う。
 検知モジュールは、保護制御モジュールを構成するすべてのデータを読み込み、MAC(Message Authentication Code)値を計算し、予め記憶しているMAC値と比較することにより、保護制御モジュールの改ざん検出を行う。
日本国特許第3056732号特許公報 WO2008/099682国際公開公報 WO2009/118800国際公開公報
岡本龍明、山本博資、「現代暗号」、産業図書(1997年) ITU-T Recommendation X.509 (1997 E): Information Technology - Open Systems Interconnection - The Directory: Authentication Framework,1997
 しかしながら、検知モジュールが改ざんされ、検知モジュールのセキュリティが劣化している場合、改ざんされた検知モジュールが、保護制御モジュールに含まれる鍵データや保護制御モジュールの機能自体を、不正利用する危険性がある。そうすると、当該検知モジュールによって、不正なアプリケーションがインストールされ、当該アプリケーションによって、ユーザの個人情報やコンテンツなどが漏えいする可能性がある。
 本発明は、上記の問題点に鑑みなされたものであって、複数の検知モジュールのうち一部の検知モジュールが改ざんされている場合であっても、保護制御モジュールの改ざん検出を行うことができる改ざん監視システム、保護制御モジュール、検知モジュール、制御方法及び制御用プログラムを記録している記録媒体を提供することを目的とする。
 前記目的を達成するために、本発明は、コンピュータプログラムを保護する保護制御モジュールと、前記保護制御モジュールを監視するためのn個の検知モジュールと、管理装置とを含む改ざん監視システムであって、前記保護制御モジュールは、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成手段と、n個の前記検知モジュールのうち、d個の検知モジュールを選択する選択手段と、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配手段とを備え、d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信し、前記管理装置は、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御モジュールの改ざんを管理することを特徴とする。
 本発明によれば、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
実施の形態2における検知システム10の全体構成図である。 保護制御モジュール120の構成を示すブロック図である。 検知モジュール131の構成を示すブロック図である。 判断部210の構成を示すブロック図である。 検証基データ配布部220の構成を示すブロック図である。 機器100のハードウェア構成図である。 機器100のソフトウェア階層図である。 検知システム10の全体の動作を示すフローチャートである。 初期設定処理を示すシーケンス図である。 初期設定処理における検証基データの生成処理の動作を示すフローチャートである。 データ分割を説明するための図である。 分割データ1の検証基データ630のデータ構成を示す図である。 分割データ2の検証基データ650のデータ構成を示す図である。 分割データ3の検証基データ670のデータ構成を示す図である。 検知処理の動作を示すシーケンス図である。図16へ続く。 検知処理の動作を示すシーケンス図である。図15から続く。 検知モジュールの選択のために用いる対応表330のデータ構造を示す。 検証基データの更新処理を示すシーケンス図である。 実施の形態3における初期設定処理の動作を示すシーケンス図である。 検証基データの生成処理の動作を示すフローチャートである。 データ分散を説明するための図である。 検証基データ690のデータ構成を示す図である。 検知処理の動作を示すシーケンス図である。図24へ続く。 検知処理の動作を示すシーケンス図である。図23から続く。 検知モジュールの選択のために用いる対応表330aのデータ構造を示す。 実施の形態4における検知処理の動作を示すシーケンス図である。図27へ続く。 検知処理の動作を示すシーケンス図である。図28へ続く。 検知処理の動作を示すシーケンス図である。図29へ続く。 検知処理の動作を示すシーケンス図である。図28から続く。 検知モジュールの選択のために用いる対応表330bのデータ構造を示す。 実施の形態5における複数の復号サブプロセスから構成される復号処理プロセスを説明するための図である。 検証基データ配布部220aの構成を示すブロック図である。 検証基データ240のデータ構成を示す図である。 検証基データの生成処理の動作を示すフローチャートである。 検知処理の動作を示すシーケンス図である。図36へ続く。 検知処理の動作を示すシーケンス図である。図35から続く。 復号部分処理1の検証基データ250aのデータ構成を示す図である。 復号部分処理2の検証基データ250bのデータ構成を示す図である。 復号部分処理3の検証基データ250cのデータ構成を示す図である。 実施の形態1における監視システム10dの全体構成図である。
 本発明の一実施態様は、コンピュータプログラムを保護する保護制御モジュールと、前記保護制御モジュールを監視するためのn個の検知モジュールと、管理装置とを含む改ざん監視システムであって、前記保護制御モジュールは、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成手段と、n個の前記検知モジュールのうち、d個の検知モジュールを選択する選択手段と、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配手段とを備え、d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信し、前記管理装置は、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御モジュールの改ざんを管理することを特徴とする。
 この態様によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
 ここで、前記改ざん監視システムは、1台の情報処理装置を含み、前記情報処理装置が前記保護制御モジュールとn個の前記検知モジュールとを含み、前記コンピュータプログラムを記憶しており、前記情報処理装置と前記管理装置とは、ネットワークを介して接続されているとしてもよい。
 この構成によると、1台の情報処理装置が前記保護制御モジュールとn個の前記検知モジュールとを含むので、情報処理装置の起動中、常に、各検知モジュールは、前記保護制御モジュールを監視することができる。
 ここで、前記改ざん監視システムは、1台の情報処理装置及びn台の検知装置を含み、前記情報処理装置が前記保護制御モジュールを含み、前記コンピュータプログラムを記憶しており、n台の前記検知装置が、それぞれ、1個の前記検知モジュールを含み、前記情報処理装置とn台の前記検知装置と前記管理装置とは、ネットワークを介して接続されているとしてもよい。
 この構成によると、検知モジュールを含む検知装置と、保護制御モジュールを含む情報処理装置とは、ネットワークを介して、接続されている。このため、保護制御モジュールと検知モジュールとが同時に改ざんされる可能性が低くなる。
 本発明の別の実施態様は、コンピュータプログラムを保護する保護制御モジュールであって、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成手段と、当該保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択する選択手段と、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配手段とを備え、d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出するとしてもよい。
 この態様によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
 ここで、前記生成手段は、前記コンピュータプログラムを暗号化して生成した暗号化コンピュータプログラムを記憶している記憶手段と、前記暗号化コンピュータプログラムを復号してコンピュータプログラムを生成する復号手段と、生成された前記コンピュータプログラムを基にして、d個の前記分配データを生成する分配データ生成手段とを含むとしてもよい。また、前記分配データ生成手段は、前記コンピュータプログラムを構成するデータを分割してd個の前記分配データを生成するとしてもよい。
 これらの構成によると、保護制御モジュールの改ざんを検出するために、保護制御モジュール自体により秘匿されるデータを用いていない。このため、秘匿するデータが検知モジュールに漏洩することを防止することができる。
 ここで、前記分配データ生成手段は、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成し、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法であるとしてもよい。
 この構成によると、dより小さいk個以上の検知モジュールによる監視結果を用いて、保護制御モジュールの改ざんを検出することができる。従って、(d-k)個以下の検知モジュールが改ざんされている場合であっても、保護制御モジュールの改ざんを検出することができる。
 ここで、前記生成手段は、前記コンピュータプログラムを暗号化して生成した暗号化コンピュータプログラムを記憶している記憶手段と、前記暗号化コンピュータプログラムに、復号処理を施す過程において、d個の前記分配データを生成する復号手段とを含み、前記復号処理は、d個の復号サブ処理から構成され、d個の復号サブ処理を順次施すことにより、前記暗号化コンピュータプログラムの復号を行い、各復号サブ処理から出力される復号出力を前記分配データとするとしてもよい。
 この構成によると、保護制御モジュールの改ざんを検出するために、保護制御モジュール自体により秘匿されるデータを用いていないので、秘匿するデータが検知モジュールに漏洩することを防止することができる。
 ここで、前記選択手段は、n個の前記検知モジュールのうち、d個の検知モジュールの組合せと、当該組合せを識別する識別情報とを対応付けて含む対応表を保持し、前記組合せの選択に用いる選択情報を取得し、取得した選択情報に一致する識別情報に対応する組合せを前記対応表から取得し、取得し組合せに含まれる検知モジュールを選択するとしてもよい。
 また、前記選択手段は、乱数を生成し、生成した乱数を前記選択情報とすることにより、前記選択情報を取得するとしてもよい。
 また、前記選択手段は、前記分配手段によりd個の前記分配データを分配するごとに、前記選択情報を新たに生成するとしてもよい。
 また、各検知モジュールは、乱数を生成し、他の全ての検知モジュールへ送信し、各検知モジュールは、受信した乱数及び自身が生成した乱数を用いて、選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信し、前記選択手段は、前記検知モジュールから前記選択情報を受信し、受信した前記選択情報を用いるとしてもよい。
 また、保護制御モジュールの改ざんを管理する管理装置は、前記選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信し、前記選択手段は、前記管理装置から前記選択情報を受信し、受信した前記選択情報を用いるとしてもよい。
 これらの構成によると、保護制御モジュールが恣意的に検知モジュールを選択することができない。
 ここで、前記コンピュータプログラムは、前記保護制御モジュールの保護の対象であるアプリケーションプログラム、又は、前記保護制御モジュールの動作手順を示すプログラムであるとしてもよい。
 また、前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶しているとしてもよい。
 本発明の別の実施態様は、コンピュータプログラムを保護する保護制御モジュールを監視する検知モジュールであって、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成し、前記保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する保護制御モジュールから1個の前記分配データを受信する受信手段と、受信した前記分配データが正しいか否かを判断する検証手段と、正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する送信手段とを備え、前記受信手段は、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取り、前記検証手段は、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断し、前記送信手段は、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信することを特徴とする。
 この態様によると、保護制御モジュールの改ざんを検出するために、保護制御モジュール自体により秘匿されるデータを用いていないので、秘匿するデータが検知モジュールに漏洩することを防止することができる。
 ここで、前記検証手段は、自身の監視結果及び受信した監視結果を用いて、自身を含め、d個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断し、d個の検知モジュールがそれぞれ受信した分配データが正しいと決定した場合に、前記保護制御モジュールが改ざんされていないと決定し、d個の検知モジュールのうち、少なくとも1個の検知モジュールが受信した分配データが正しくないと決定した場合に、前記保護制御モジュールが改ざんされていると決定するとしてもよい。
 この構成によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
 ここで、前記保護制御モジュールは、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成し、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法であり、前記検証手段は、自身の監視結果及び受信した監視結果を用いて、自身を含め、少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断し、少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定した場合に、前記保護制御モジュールが改ざんされていないと決定し、(d-k+1)個以上の検知モジュールがそれぞれ受信した分配データが正しくないと決定した場合に、前記保護制御モジュールが改ざんされていると決定するとしてもよい。
 この構成によると、dより小さいk個以上の検知モジュールによる監視結果を用いて、保護制御モジュールの改ざんを検出することができる。従って、(d-k)個以下の検知モジュールが改ざんされている場合であっても、保護制御モジュールの改ざんを検出することができる。
 ここで、n個の前記検知モジュール及び前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶しているとしてもよい。
 また、前記検知モジュールは、検知装置に含まれ、前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶しているとしてもよい。
 以下、図面に基づき本発明の実施の形態について説明する。
 1.実施の形態1
 (1)本発明に係る一の実施の形態としての改ざん監視システム10dについて説明する。
 改ざん監視システム10dは、図40に示すように、保護制御モジュール120d、n個の検知モジュール130d1、130d2、130d2、・・・、130dn及び管理装置200dを含んでいる。
 保護制御モジュール120dは、コンピュータプログラム110dを保護する。
 n個の検知モジュール130d1、130d2、130d2、・・・、130dnは、保護制御モジュール120dを監視する。
 保護制御モジュール120dは、生成部310d、選択部311d及び分配部302dから構成される。
 生成部310dは、コンピュータプログラム110dを基にして、nより小さいd個の分配データを生成する。
 選択部311dは、n個の検知モジュール130d1、130d2、130d2、・・・、130dnのうち、d個の検知モジュールを選択する。
 分配部302dは、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する。
 d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断し、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
 管理装置200dは、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、保護制御モジュール120dの改ざんを管理する。
 この構成によると、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができる。
 (2)次のように構成してもよい。
 改ざん監視システム10dは、1台の情報処理装置(図示していない)を含む。前記情報処理装置が保護制御モジュール120dとn個の検知モジュール130d1、130d2、・・・、130dnを含み、コンピュータプログラム110dを記憶している。
 前記情報処理装置と管理装置200dとは、ネットワークを介して接続されている。
 (3)次のように構成してもよい。
 改ざん監視システム10dは、1台の情報処理装置(図示していない)及びn台の検知装置(図示していない)を含む。
 前記情報処理装置が保護制御モジュール120dを含み、コンピュータプログラム110dを記憶している。
 n台の前記検知装置が、それぞれ、1個の前記検知モジュールを含む。
 前記情報処理装置とn台の前記検知装置と管理装置200dとは、ネットワークを介して接続されている。
 (4)次のように構成してもよい。
 (4-1)生成部310dは、記憶部と復号部と分配データ生成部とを含む。
 記憶部は、コンピュータプログラム110dを暗号化して生成した暗号化コンピュータプログラムを記憶している。
 復号部は、前記暗号化コンピュータプログラムを復号してコンピュータプログラムを生成する。
 分配データ生成部は、生成された前記コンピュータプログラムを基にして、d個の前記分配データを生成する。
 (4-2)分配データ生成部は、前記コンピュータプログラムを構成するデータを分割してd個の前記分配データを生成する。
 (4-3)分配データ生成部は、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成する。ここで、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法である。
 (5)次のように構成してもよい。
 生成部310dは、記憶部及び復号部を含む。
 復号部は、コンピュータプログラム110dを暗号化して生成した暗号化コンピュータプログラムを記憶している。
 復号部は、前記暗号化コンピュータプログラムに、復号処理を施す過程において、d個の前記分配データを生成する。ここで、前記復号処理は、d個の復号サブ処理から構成され、d個の復号サブ処理を順次施すことにより、前記暗号化コンピュータプログラムの復号を行い、各復号サブ処理から出力される復号出力を前記分配データとする。
 (6)次のように構成してもよい。
 (6-1)選択部311dは、対応表(図示していない)を保持する。この対応表は、n個の前記検知モジュールのうち、d個の検知モジュールの組合せと、当該組合せを識別する識別情報とを対応付けて含む。前記組合せの選択に用いる選択情報を取得し、取得した選択情報に一致する識別情報に対応する組合せを前記対応表から取得し、取得し組合せに含まれる検知モジュールを選択する。
 (6-2)選択部311dは、乱数を生成し、生成した乱数を前記選択情報とすることにより、前記選択情報を取得する。
 (6-3)選択部311dは、分配部302dによりd個の前記分配データを分配するごとに、前記選択情報を新たに生成する。
 (6-4)各検知モジュールは、乱数を生成し、他の全ての検知モジュールへ送信する。また、各検知モジュールは、受信した乱数及び自身が生成した乱数を用いて、選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信する。
 選択部311dは、前記検知モジュールから前記選択情報を受信し、受信した前記選択情報を用いる。
 (6-5)管理装置200dは、前記選択情報を生成し、生成した前記選択情報を保護制御モジュール120dへ送信する。
 選択部311dは、管理装置200dから前記選択情報を受信し、受信した前記選択情報を用いる
 (7)コンピュータプログラム110dは、保護制御モジュール120dの保護の対象であるアプリケーションプログラム、又は、保護制御モジュール120dの動作手順を示すプログラムであるとしてもよい。
 (8)次のように構成してもよい。
 (8-1)検知モジュール130d1は、受信部、検証部及び送信部を備える。他の検知モジュールも同様である。
 検証部は、保護制御モジュール120dから1個の前記分配データを受信する。ここで、保護制御モジュール120dは、コンピュータプログラム110dを基にして、nより小さいd個の分配データを生成し、保護制御モジュール120dを監視するためのn個の検知モジュール130d1、130d2、・・・、130dnのうち、d個の検知モジュールを選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する。
 検証部は、受信した前記分配データが正しいか否かを判断する。
 送信部は、正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する。
 受信部は、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取る。
 検証部は、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断する。
 送信部は、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
 (8-2)検証部は、自身の監視結果及び受信した監視結果を用いて、自身を含め、d個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断する。d個の検知モジュールによりそれぞれ受信した分配データが正しいと決定された場合に、保護制御モジュール120dが改ざんされていないと決定する。d個の検知モジュールのうち、少なくとも1個の検知モジュールにより受信した分配データが正しくないと決定された場合に、保護制御モジュール120dが改ざんされていると決定する。
 (8-3)保護制御モジュール120dは、コンピュータプログラム110dを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成する。ここで、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法である。
 検証部は、(a)自身の監視結果及び受信した監視結果を用いて、自身を含め、少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断する。(b)少なくともk個の検知モジュールによりそれぞれ受信した分配データが正しいと決定された場合に、前記保護制御モジュールが改ざんされていないと決定する。(c)(d-k+1)個以上の検知モジュールによりそれぞれ受信した分配データが正しくないと決定された場合に、前記保護制御モジュールが改ざんされていると決定する。
 2.実施の形態2
 本発明に係る別の実施の形態としての情報処理装置及び管理装置から構成される検知システム10について説明する。
 2.1 検知システム10の構成
 検知システム10は、図1に示すように、情報処理装置としての機器100及び管理装置200から構成されている。機器100及び管理装置200は、ネットワーク20を介して接続されている。
 機器100は、ネットワーク20を介した様々なサービスをユーザに提供する情報処理装置である。例えば、機器100は、ネットワーク20を介して、コンテンツ配信サーバ(図示していない)にアクセスすることにより、音楽や映像などのコンテンツを購入して再生する。また、金融機関のシステム(図示していない)にアクセスすることにより、ネットバンキング(預金の残高照会や口座振り込みなど)を利用する。
 (1)機器100の構成
 機器100は、後述するように、プロセッサ、メモリ及びその他のユニットを備えたコンピュータシステムである。メモリ上に記憶されている制御用のコンピュータプログラムに従って、プロセッサが動作することにより、機器100は、その機能を達成する。
 図1に示すように、機器100のメモリは、アプリケーションソフト(以下、「アプリ」という。)110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120、及び検知モジュール群130を記憶している。ここで、アプリ110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120及び検知モジュール群130内の各検知モジュールは、それぞれ、コンピュータプログラムである。これらのコンピュータプログラムは、それぞれの機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。アプリ110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120及び検知モジュール群130内の各検知モジュールに従って、プロセッサが動作する。こうして、アプリ110、アプリ111、アプリ112、アプリ113、アプリ114、保護制御モジュール120及び検知モジュール群130内の各検知モジュールは、その機能を達成する。
 このように、保護制御モジュール120を記憶しているメモリ及びプロセッサは、一つの保護制御回路を構成している。
 アプリ110、111、112、113、114は、それぞれ、ネットワークを介して、機器100を使用するユーザに、様々な機能を提供するためのソフトウェア、つまり、コンピュータプログラムである。例えば、アプリ110は、コンテンツ配信サーバ(不図示)から音楽コンテンツや映像コンテンツを購入するためのソフトウェアである。また、アプリ111は、その購入したコンテンツを再生するためのソフトウェアである。さらに、アプリ112は、金融機関のシステム(不図示)にアクセスし、残高確認や振り込みなどのネットバンキングを利用するためのソフトウェアである。
 各アプリは、コンテンツ配信サーバや金融機関のシステムと認証を行うための認証鍵など、秘匿データを有している。秘匿データは、悪意のある第三者(以下、「攻撃者」という。)によりアプリから抜き取られ、不正に利用されないようにするために、保護される必要があるデータである。
 保護制御モジュール120は、攻撃者により各アプリが解析され、認証鍵などの秘匿データが抜き取られないように各アプリを保護するための機能を制御するモジュールである。アプリを保護するための機能としては、復号ロード機能、改ざん検出機能、解析ツール検出機能などがある。復号ロード機能は、アプリを利用しないときには、当該アプリを暗号化して保存しておき、アプリを利用するときにのみ、暗号化アプリを復号してメモリへロードする機能である。また、改ざん検出機能は、アプリが改ざんされていないかをチェックする機能である。さらに、解析ツール検出機能は、デバッガなどの解析ツールが動作しないかをチェックする機能である。
 保護制御モジュール120は、これらの機能の動作を制御し、各アプリが攻撃者によって解析されていないかなどをチェックする。攻撃者による攻撃を検出したときには、保護制御モジュール120は、攻撃が検出されたアプリの動作を停止する。次に、当該アプリが利用していたメモリ、特に秘匿データが記録されたメモリ領域のクリア(例えば、メモリ領域を「0」で埋める)などの処理を行う。こうして、秘匿データの漏洩を防止する。
 検知モジュール群130は、n(nは、正整数)個の検知モジュールから構成される。一例として、検知モジュール群130は、図1に示すように、5つの検知モジュール131、検知モジュール132、検知モジュール133、検知モジュール134及び検知モジュール135から構成される。
 ここで、検知モジュール131を記憶しているメモリ及びプロセッサは、一つの検知回路を構成している。また、検知モジュール132、検知モジュール133、検知モジュール134及び検知モジュール135の各検知モジュールについても、同様に、各検知モジュールを記憶しているメモリ及びプロセッサは、一つの検知回路を構成している。
 検知モジュール131、132、133、134及び135は、保護制御モジュール120が改ざんされているか否かを検証するために、保護制御モジュール120による暗号化アプリの復号処理の結果が正しいか否かを判断する。
 各検知モジュールは、保護制御モジュール120についての監視結果及び判断結果を、ネットワーク20を介して、管理装置200へ送信する。ここで、監視結果は、分割データが正しいか否かを示し、また、判断結果は、保護制御モジュール120が改ざんされているか否かを示す。
 (2)管理装置200の構成
 管理装置200は、検証基データを生成する。ここで、検証基データは、保護制御モジュール120が正しく動作しているか否かを検証するために必要なデータである。次に、生成した検証基データを機器100へ配布する。
 管理装置200は、図1に示すように、判断部210、検証基データ配布部220及び通信部230から構成される。通信部230は、ネットワーク20を介して機器100と通信を行う。なお、機器100と管理装置200との間のネットワークを介した通信には、通信データが暗号化されるなど、セキュリティの確保された通信路を用いてもよい。
 管理装置200は、具体的には、CPU、ROM、RAM、ハードディスクユニットなどを備えるコンピュータシステムである。CPUが、ROMまたはハードディスクユニットに記憶されているコンピュータプログラムに従って動作することにより、管理装置200は、上記の機能を発揮する。
 判断部210は、機器100内部のソフトウェア(アプリ110から114、保護制御モジュール120、検知モジュール群130)の状態(つまり、各ソフトウェアが改ざんされているか否か等の状態)に応じて、機器100が実行すべき処理を決定し、検証基データ配布部220に各種指示を行う。詳細な構成は後述する。
 検証基データ配布部220は、機器100内部のソフトウェア(保護制御モジュール120)が検知モジュールにより検知される際に、検知モジュールが検証に用いる検証基データを送信する。検証基データの詳細な構成は後述する。
 通信部230は、機器100から受信した情報に応じて管理装置200内部の各部に機器100から受信した情報を出力する。また、管理装置200内部の各部からの指示や情報を機器100に送信する。具体的には、更新処理の際に、検証基データ配布部220からの指示や通知などを機器100に送信したり、機器100からの改ざん検出の監視結果などの情報を判断部210に出力したりする。
 続いて、各モジュールの詳細を順に説明する。
 (3)保護制御モジュール120の詳細な構成
 図2は、保護制御モジュール120の機能構成を示す機能ブロック図である。
 同図に示すように、保護制御モジュール120は、受信部301、送信部302、制御部303、復号ロード部304、改ざん検出部305、解析ツール検出部306、暗復号鍵保持部307、検証基データ保持部308、検証基データ生成部309、アプリ分割部310及び検知モジュール選択部311から構成される。
 受信部301は、各検知モジュールから、各種依頼などを受信する。
 送信部302は、各検知モジュールへ、各種依頼などを送信する。
 制御部303は、復号ロード部304、改ざん検出部305及び解析ツール検出部306を制御し、各アプリが攻撃者により攻撃されている場合に、それを検出する。
 復号ロード部304は、機器100内部に保持されている暗号化されたアプリ(110から114)を実行するときに、暗号化されたアプリ(110から114)を暗復号鍵を用いて復号し、得られたアプリ(110から114)をメモリ上にロードする処理を行う。また、アプリ(110から114)実行中に、他のアプリへのコンテキストスイッチ 
(context switch) が発生したときに、暗復号鍵を用いてメモリ上のデータを暗号化し、再び元のアプリ(110から114)へコンテキストスイッチしたときに、暗号化したデータを復号する処理を行う。
 なお、コンテキストスイッチとは、複数のプロセスが1つのCPUを共有できるように、CPUの状態(コンテキスト)を保存したり復元したりする過程のことである。
 改ざん検出部305は、各アプリが改ざんされているかどうか改ざん検出処理を実行する。改ざん検出処理には、各アプリに付加されている改ざん検出用の証明書を用いる方法と、MAC値を比較する方法とがある。
 なお、証明書に関しては非特許文献2に詳しく説明されている。
 解析ツール検出部306は、デバッガなどの解析ツールがインストールされたり、動作したりしたときにそれを検出する。不正な攻撃者が各アプリを攻撃するために、解析ツールをインストールしたり、動作させることが想定されるからである。検出方法としては、例えば、ファイル名を検索する方法や、デバッガが使用する特殊なレジスタが使用されているかを調べる方法や、デバッガが設定する割り込みを検出する方法などを用いる。
 暗復号鍵保持部307は、各アプリを暗復号するための暗復号鍵を保持する。
 検証基データ保持部308は、管理装置200から受信した検証基データを保持する。検証基データの構成については、後述する。
 検証基データ生成部309は、検証基データ保持部308に保持している検証基データから検証基データを生成する。
 アプリ分割部310は、復号ロード部304で復号したアプリ(110から114)のデータ、つまり、それぞれのアプリのコンピュータプログラムを構成するデータを分割する。
 検知モジュール選択部311は、検知処理時に検知を実行する検知モジュールを選択する。選択方法については、後述する。
 (4)検知モジュールの詳細な構成
 次に、検知モジュール131、132、133、134及び135の詳細について説明する。
 図3は、検知モジュール131の機能的な構成を示す機能ブロック図である。検知モジュール132、133、134及び135も、検知モジュール131と同様の構成を有しており、これらについての説明を省略する。
 同図に示すように、検知モジュール131は、受信部401、送信部402、制御部403、検証部404及び検証基データ保持部405から構成される。
 受信部401は、管理装置200から、各種指示を受信する。また、他のモジュールへ依頼した処理の結果や、他の検知モジュールから保護制御モジュール120に対する監視結果を受信する。
 送信部402は、管理装置200、保護制御モジュール120及び他の検知モジュールへ、各種処理結果などのデータを送信する。
 制御部403は、受信部401が受信した各種指示や通知に基づいて、検証部404を制御し、保護制御モジュール120の検証処理を行う。
 検証部404は、保護制御モジュール120が正常に動作しているか検証を行う。検証方法としては、保護制御モジュール120に対する検知では、検証基データ保持部405に保持している検証基データを用いて、保護制御モジュール120が正常に動作しているかを検証する。
 検証基データ保持部405は、保護制御モジュール120の復号ロード部304が正常に動作するか否かを検証するための検証基データを保持する。検証基データは、保護制御モジュール120から与えられたものである。
 (5)判断部210の詳細な構成
 図4は、判断部210の機能構成を示す機能ブロック図である。同図に示すように、判断部210は、受信部501、送信部502、指示生成部503及びモジュール選択部504から構成される。
 受信部501は、各検知モジュールから、監視結果や各種依頼などを受信し、指示生成部503へ送信する。さらに、検証基データ配布部220から処理が完了した通知を受信し、指示生成部503に送信する。
 送信部502は、指示生成部503で生成された指示を管理装置200内の検証基データ配布部220へ送信する。
 指示生成部503は、保護制御モジュール120から検証基データの送付の依頼を受け取った場合には、送付の依頼に基づいて検証基データ配布部220に対して検証基データを配布する旨の指示を生成し、生成した指示を送信部502へ出力する。また、保護制御モジュール120の検知処理の実行時に、検知を実行する検知モジュールを選択するように、モジュール選択部504に対する検知モジュールの選択の指示を生成し、生成した指示をモジュール選択部504へ出力する。
 指示生成部503から検知モジュールの選択の指示を受け取ると、モジュール選択部504は、保護制御モジュール120の検知処理の実行時に、どの検知モジュールが検知を実行するかを決定する。モジュール選択部504は、機器100が保持するn個の検知モジュールから構成される検知モジュール群130から、d(dは、nより小さい正の整数)個の検知モジュールを選択する。選択対象の検知モジュールを決定するために、検知モジュール131から開始して、検知モジュール132、133、134、135のように、順番に検知モジュールを選択する方法を用いてもよいし、複数の検知モジュールからランダムに1個又は複数個の検知モジュールを選択する方法を用いてもよい。次に、モジュール選択部504は、選択した検知モジュールを識別する検知モジュール識別子を、指示生成部503及び送信部502、通信部230及びネットワーク20を介して、機器100へ送信する。
 (6)検証基データ配布部220の詳細な構成
 図5は、検証基データ配布部220の機能構成を示す機能ブロック図である。
 同図に示すように、検証基データ配布部220は、受信部601、送信部602、制御部603、認証部604、証明書生成部605、署名秘密鍵保持部606、暗号鍵保持部607、データ分割部608、アプリ保持部609、検証基データ生成部610、保護制御モジュール保持部611及び検知モジュール保持部612から構成される。
 署名秘密鍵保持部606は、証明書生成部605により証明書を生成するときに利用する管理装置200の署名秘密鍵(署名私有鍵)を保持している。
 暗号鍵保持部607は、保護制御モジュール120と共有している暗復号鍵を保持している。
 アプリ保持部609は、機器100にインストールされるアプリ110、111、112、113、114のデータ、つまり、それぞれのアプリを構成するコンピュータプログラムを記憶している。
 保護制御モジュール保持部611は、機器100にインストールされる保護制御モジュール120を構成するコンピュータプログラムを保持している。
 検知モジュール保持部612は、機器100にインストールされる検知モジュールを構成するコンピュータプログラムを保持する。
 これらのコンピュータプログラムは、それぞれ、それぞれの機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
 受信部601は、各検知モジュールから保護制御モジュール120に対する監視結果を受信する。
 送信部602は、機器100内部の各アプリ及び保護制御モジュール120の改ざん検証の依頼や検証に必要な検証基データなどを送信する。
 制御部603は、検証基データ配布部220の各構成要素を制御する。
 認証部604は、各検知モジュールや保護制御モジュール120と相互認証を行う。
 証明書生成部605は、アプリ保持部609に保持するアプリのデータに対し、データ分割部608を用いて分割し、保護制御モジュール保持部611に保持されている保護制御モジュール120を構成するコンピュータプログラムに含まれている復号ロード部304を用いてアプリを暗号化して暗号化アプリを求め、暗号化アプリと分割データから検証値を生成する。さらに、管理装置200の署名秘密鍵(署名私有鍵)を用いて署名データを生成し、生成した署名データを含む証明書を生成する。
 なお、署名方式に関しては非特許文献1の171ページから187ページに詳しく説明されている。
 データ分割部608は、アプリ保持部609に記憶されているアプリ110、111、112、113、114のデータをそれぞれ分割して複数個の分割データを生成する。
 検証基データ生成部610は、アプリ保持部609に記憶されている各アプリのデータと、データ分割部608により生成された複数の分割データとから、検証基データを生成する。検証基データ生成部610は、生成した検証基データを機器100へ送信する。検証基データの構成については後述する。
 (7)機器100のハードウェア構成
 続いて、図6を用いて、機器100のハードウェア構成について説明する。
 同図に示すように、機器100は、CPU(Central Processing Unit)171、例えば不揮発メモリであるEEPROM(Electrically Erasable and Programmable Read 
Only Memory)172、RAM(Random Access Memory)173、及びNIC(Network Interface Card)174等を含んで構成され、これらはバス175を介して相互に通信可能に接続されている。
 EEPROM172には、保護制御モジュール120を含む制御用の各種モジュール、検知モジュール131、132、133、134、135及びアプリ110、111、112、113、114などが格納されている。
 EEPROM172に格納されている保護制御モジュール120を含む制御用の各種モジュールをCPU171が実行することにより、制御用の各種モジュールの各機能部の制御が実現される。各機能部は、具体的には、コンピュータプログラムによって記述され実現される。
 RAM173は、CPU171のワークエリアとして用いられる。RAM173には各検知モジュール及び各アプリがロードされる。RAM173に格納された各検知モジュール及び各アプリをCPU171が実行することにより、検知モジュール及び各アプリの機能が実現される。
 NIC174は、ネットワークに接続するための拡張カードである。
 (8)ソフトウェア階層
 続いて、図7を用いて、機器100において動作するソフトウェア(コンピュータプログラム)のソフトウェア階層の構造について、説明する。
 機器100においては、コンピュータプログラムとして、ブートローダ190、保護制御モジュール120、OS180及びアプリ110、111、112、113、114が動作する。ブートローダ190、保護制御モジュール120、OS180及びアプリ110、111、112、113、114は、階層的に構成されている。
 図7に示すように、ブートローダ190及び保護制御モジュール120が最下位層に位置している。その上に、OS180が位置し、OS180の上に、アプリ110、111、112、113、114が位置している。
 同図に示すように、検知モジュール群130は、OS180の中に組み込まれている。各アプリはOS180の配下で動作し、保護制御モジュール120は、ブートローダ190等とともにOS180の管理外にある。
 機器100の起動の際には、最初に、ブートローダ190が起動され、次に、保護制御モジュール120及びOS180が起動される。OS180の起動中において、検知モジュール群130が起動される。次に、アプリ110、111、112、113、114が起動され、各アプリが実行される。
 2.2 検知システム10の動作概略
 (1)全体の動作概要
 検知システム10の動作を、図8に示すフローチャートを用いて説明する。初めに、検知システム10の大まかな処理を説明する。大まかな処理として、以下の2つの処理がある。
 1つ目の処理は、ソフトウェア(保護制御モジュール120)を検証するために必要となる検証基データなどを埋め込む処理(初期設定処理)である。
 2つ目の処理は、機器100内部のソフトウェア(保護制御モジュール120)が改ざんされていないかを検知する処理(検知処理)である。
 上記2つの処理の関係は、図8に示す通りである。
 検知システム10では、機器100が工場で製造される際に初期設定処理が行われ、保護制御モジュール120内へ検証基データが埋め込まれる(ステップS100)。その後、機器100が工場から出荷され、ユーザの利用に供される。
 ユーザにより機器100が利用される際には、機器100内部では、保護制御モジュール120が各アプリを攻撃者による攻撃から保護する。これと同時に、各検知モジュールは、保護制御モジュール120が攻撃されていないかをチェックする検知処理を行う(ステップS200)。
 検知処理を行った結果、各検知モジュールによる保護制御モジュール120に対する監視結果を管理装置200へ通知する。また、保護制御モジュール120が改ざんされたと判明した場合には、改ざんされた旨を機器100が有する表示部に表示する。
 続いて、上記2つの処理について、その詳細を順に説明する。
 (2)初期設定処理の動作
 まず、初期設定処理について説明する。
 図9は、初期設定処理の検知システム10の動作の流れを示すシーケンス図である。本シーケンス図において、検知モジュール131、132、133、134及び135の各々が個別に行う処理を、検知モジュール群130が行う処理としてまとめて記載している。
 保護制御モジュール120は、管理装置200の保護制御モジュール保持部611に保持されており、検知モジュール131、132、133、134及び135は、管理装置200の検知モジュール保持部612に保持されており、アプリ110、111、112、113及び114は、アプリ保持部609に保持されている。
 工場における機器100の製造時に、管理装置200は、機器100に対して保護制御モジュール120、検知モジュール131、132、133、134及び135、並びに、アプリ110、111、112、113及び114を送信し、機器100は、保護制御モジュール120、検知モジュール131、132、133、134及び135、並びに、アプリ110、111、112、113及び114を受信する(ステップS1001)。機器100は、機器100のEEPROM172へ受信した各アプリ、保護制御モジュール120、各検知モジュールをインストール(書き込み)する(ステップS1002)。これらの各アプリには、ソフトウェアが改ざんされているかどうかを検証するための証明書(改ざん検出用証明書)が付加されている。上記ソフトウェア以外にも、機器100の動作に必要なソフトウェアがインストールされる。
 ソフトウェアのインストール(ステップS1002)が終わると、機器100は、機器100の初期設定を行うソフトウェアや、正常に動作するかをテストするためのソフトウェアなどを実行することにより、初期化処理を行い(ステップS1003)、保護制御モジュール120に対して初期化指示を出力する(ステップS1004)。
 初期設定処理では、保護制御モジュール120の初期化処理が行われる。
 初期化指示を受け取ると(ステップS1004)、保護制御モジュール120は、管理装置200へ検証基データの送付を依頼する(ステップS1005)。管理装置200は、保護制御モジュール120から依頼を受信すると(ステップS1005)、検証基データの生成処理を実行する(ステップS1006)。検証基データの生成処理が完了すると、管理装置200は、生成した検証基データを保護制御モジュール120へ送信する(ステップS1007)。保護制御モジュール120は、管理装置200から検証基データを受信し(ステップS1007)、受信した検証基データを検証基データ保持部308へ記憶する(ステップS1008)。
 (3)検証基データの生成処理の動作
 ここでは、図9のステップS1006に示す検証基データの生成処理の詳細について、図10に示すフローチャートを用いて説明する。
 管理装置200の検証基データ生成部610は、アプリ保持部609に保持されている複数のアプリを読み出し、暗号鍵保持部607から暗復号鍵を読み出し、読み出した複数のアプリのそれぞれを、読み出した暗復号鍵を用いて、暗号化アルゴリズムにより暗号化して複数の暗号化アプリを生成する(ステップS1101)。ここで用いる暗号化アルゴリズムの一例は、AES(Advanced Encryption Standard)である。
 次に、データ分割部608は、アプリ保持部609に保持されている複数のアプリを読み出し、読み出した複数のアプリのそれぞれを分割して、複数の分割データを生成する(ステップS1102)。ここにおけるアプリの分割方法としては、メモリ上にロードされるアプリのデータを一定サイズで分割してもよい。また、アプリのデータに対し法を取ったりしてもよい。例えば、1つのアプリのデータに対し、3つの法の値、例えば、
「7」、「11」、「17」で法を取ることで、1つのアプリのデータから3つの分割データを生成するとしてもよい。
 図11はアプリのデータを分割する動作概要図である。この図に一例として示すように、データ分割部608は、アプリ110のデータを分割して、3個の分割データ1(110a)、分割データ2(110b)及び分割データ3(110c)を生成する。さらに具体的に説明すると、データ分割部608は、アプリ110、111、112、113及び114をそれぞれ3分割し、各アプリについて、3個の分割データ1、分割データ2及び分割データ3を生成する。
 なお、アプリのデータを分割する方法として、中国人剰余定理を用いてアプリのデータが復元できるように、分割するとしてもよい。中国人剰余定理は非特許文献1の15ページに記載されている。例えば、1つのアプリのデータが、10進数による表現により、「1200」であるとしたとき、このアプリのデータについて、3つの法の値、例えば、「7」、「11」、「17」で法を取ったとする。このとき、7×11×17=1309であり、アプリのデータが「1309」より小さいため、中国人剰余定理からアプリの「7」、「11」、「17」で法を取った値から、アプリのデータ1200を一意に求めることができる。なお、ここでは、1つのアプリのデータが、10進数による表現により、「1200」であるとしているが、これは、説明を簡略化するためであり、実際のアプリのデータが10進数による表現により「1200」であることはなく、アプリは、通常、もっと大きいサイズのコンピュータプログラムであることは言うまでもない。
 ここでは、図11に示すように、アプリのデータを3分割した例を用いて説明する。データ分割部608は、複数のアプリ110、111、112、113及び114のデータをそれぞれ分割して分割データ1、分割データ2、分割データ3を生成する。一例として、図11に示すように、データ分割部608は、アプリ110を分割して分割データ1(110a)、分割データ2(110b)、分割データ3(110c)を生成する。
 データ分割部608による分割の終了後、証明書生成部605は、すべての分割データのそれぞれについて、つまり、分割データ毎に、暗号化したアプリと分割データの関係を示す検証値及び証明書(復号処理証明書)を生成する(ステップS1103)。
 次に、検証基データ生成部610は、すべての分割データのそれぞれについて、分割識別情報、判定情報、複数の検証値組及び証明書(復号処理証明書)を含む検証基データを生成する(ステップS1104)。なお、分割識別情報及び判定情報については、後述する。
 (検証基データのデータ構成)
 検証基データのデータ構成の一例を図12から図14を用いて説明する。
 図12から図14にそれぞれ示す検証基データ630、650及び670は、一例として、複数のアプリ110、111、112、113及び114のそれぞれを3分割した場合におけるものである。
 図12に示す検証基データ630は、複数のアプリ110、111、112、113及び114それぞれから生成された分割データ1について生成されたものである。また、図13に示す検証基データ650は、複数のアプリ110、111、112、113及び114それぞれから生成された分割データ2について生成されたものである。さらに、図14に示す検証基データ670は、複数のアプリ110、111、112、113及び114それぞれから生成された分割データ3について生成されたものである。
 検証基データ630、650及び670は、図12から図14に示すように、それぞれ、分割識別情報、判定情報、複数の検証値組及び証明書から構成される。
 図12に示す検証基データ630は、一例として、分割識別情報631、判定情報632、検証値組633a、633b、633c、633d、633e及び証明書634から構成されている。
 分割識別情報は、検証基データがアプリのどの分割データに対応するかを示す識別子である。言い換えると、検証基データが、アプリのデータを分割した際の、全ての分割データのうちのどの分割データに対応するかを示す情報である。
 一例として、分割識別情報は、分割数と分割データを識別する情報とを含む。
 例えば、アプリのデータを一定のサイズで分割する場合、例えば、アプリが3分割されたとき、分割データをそれぞれ、(3,1)、(3,2)及び(3,3)により示すことにする。ここで、(a,b)は、アプリをa個に分割したときの、b番目の分割データを示すものとする。この場合に、図12に示す分割識別情報631は、一例として、(3,1)であり、図12に示す検証基データ630は、3分割された各アプリの1番目の分割データに対応している。また、図13に示す分割識別情報651は、一例として、(3,2)であり、図13に示す検証基データ650は、3分割された各アプリの2番目の分割データに対応している。さらに、図14に示す分割識別情報671は、一例として、(3,3)であり、図14に示す検証基データ670は、3分割された各アプリの3番目の分割データに対応している。
 また、アプリのデータについて、複数の法を取ることにより分割データを生成する場合、例えば、アプリのデータについて法「7」、「11」、「17」を取ることによりアプリのデータを分割する場合に、分割識別情報は、分割数と法の値とを含むことにより、検証基データがアプリのどの分割データに対応するかを示す識別子であるとしてもよい。この場合に、図12に示す分割識別情報631は、一例として、(3,7)となり、分割識別情報(3,7)は、分割数が「3」であり、複数のアプリのデータに対し法「7」を取ったことを示す。また、図13に示す分割識別情報651は、一例として、(3,11)となり、分割識別情報(3,11)は、分割数が「3」であり、アプリのデータに対し法「11」を取ったことを示す。さらに、図14に示す分割識別情報671は、一例として、(3,17)となり、分割識別情報(3,17)は、分割数が「3」であり、アプリのデータに対し法「17」を取ったことを示す。ここで、分割識別情報(a,b)は、アプリをa個に分割したとき、法「b」を用いることを示す。
 ここで、分割識別情報には、分割数も含めているが、これに限定するものではなく分割したうちの何番目の分割データであるかを示した情報だけでもよいし、単に他の分割識別情報と区別できる情報であればよい。また、アプリのデータを一定サイズに分割することに限らず、それぞれの分割データのサイズは異なってもよいし、アプリのデータの一部を集めて分割データとしてもよい。
 判定情報は、分割データのすべてが検証されたかを判定するための情報である。
 判定情報は、一例として、分割数を含む。判定情報により示される個数分の異なる分割データの検証を行えば、全ての分割データが検証される。例えば、アプリのデータを一定のサイズで3分割する場合、判定情報には、分割数「3」と同じ値「3」が記載される。この場合には、3個の分割データの検証を行えば、全ての分割データが検証されたこととなる。
 一例として、図12に示す判定情報632、図13に示す判定情報652及び図14に示す判定情報672は、それぞれ、「3」である。従って、この場合には、3個の分割データの検証を行えば、全ての分割データが検証されたこととなる。
 また、アプリのデータについて、複数の法を取ることにより分割データを生成する場合には、判定情報は、複数の法を掛け合わせた値であるとしてもよい。例えば、アプリのデータについて、「7」、「11」、「17」のそれぞれで法を取る場合、判定情報には、「1309」と記載される。ここで、「1309」は、「7」、「11」、「17」を掛け合わせた値である。これにより中国人剰余定理が成り立っていることを判定できる。また、中国人剰余定理が成り立つように分割すればよいので、復号が公開鍵暗号のRSA暗号の場合、判定情報は、RSA暗号の公開鍵であるn(=p×q)(p、qは素数)の値より大きい値であればよいし、復号が共通鍵暗号のAES暗号の場合、判定情報は、128ビットより大きい値であればよい。RSA暗号に関しては非特許文献1の110ページから113ページに記載されている。
 また、判定情報は、検証基データに記載されているとしているが、これに限ることなく、予め各検知モジュールが保持するとしてもよいし、検知モジュールのいずれかが保持しており、他の検知モジュールに送信するとしてもよい。
 検証値組の数は、アプリの数と同一である。例えば、検証基データ630に含まれている複数の検証値組は、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
 アプリ識別情報は、対応するアプリを識別する識別子である。
 データは、対応するアプリの暗号化されたアプリである。
 検証値は、対応するアプリの分割データを検証するための値である。検証値は、対応する暗号化されたアプリのデータと生成した分割データとを結合して得られた結合体に、ハッシュ関数による演算を施して得たハッシュ値である。
 (検証値)=Hash(暗号化アプリのデータ||分割データ)
 ここで、Hash(a)は、aに対してハッシュ関数による演算を施して得られたハッシュ値を示し、X||Yは、X及びYをこの順序で結合することを示す。
 なお、検証値としてハッシュ関数による演算を施して得られたハッシュ値を使用しているが、これに限定するものではない。次のように、署名などを用いるとしてもよい。
 (検証値)=Sign(署名私有鍵、暗号化アプリのデータ||分割データ)
 ここで、Sign(a、b)は、鍵aを用いてbに対して生成した署名データを示す。
 また、ハッシュ値を計算する対象データは暗号化データと分割データとの結合体だけでなく、アプリを識別するアプリ識別情報やアプリの内容を示す情報(DVDやBDの再生アプリ、ネットバンキングのアプリなど)を含んでもよい。また、保護制御モジュール120の識別情報を含んでもよい。
 証明書は、復号処理証明書である。証明書は、検証基データに含まれる全ての検証値を結合して結合体を生成し、生成した結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて生成した署名データである。
 (証明書)=Sign(署名秘密鍵、Hash(検証値||検証値||・・・||検証値))
 図12に示す検証基データ630の場合において、証明書634は、次のようにして算出される。
 (証明書634)=Sign(署名秘密鍵、Hash(検証値A||検証値B||検証値C||検証値D||検証値E))
 図13に示す検証基データ650及び図14に示す検証基データ670の場合においても、各証明書は、上記と同様にして算出される。
 (4)検知処理の動作
 ここでは、図8のステップS200に示す検知処理について、図15及び図16を用いて、説明する。図15及び図16は、検知処理を示すシーケンス図である。
 機器100は、図8のステップS100に示す初期設定処理を終えると工場から出荷され、ユーザの元へ送られる。ユーザが機器100を使用し、各アプリを利用しているときには、機器100内部では、保護制御モジュール120が復号ロード機能、改ざん検出機能、解析ツール検出機能などの機能を制御し、各アプリを攻撃者による攻撃から保護する。ここでは、アプリ110の実行時に保護制御モジュール120の検証を行う場合を例に説明する。他のアプリ111、112、113、114の実行時に検証を行う場合も同様の動作であり、説明を省略する。
 保護制御モジュール120は、OS180からアプリ110を実行するコマンドを受信する(ステップS2000)。このコマンドを受信すると、復号ロード部304は、暗号化されたアプリ110を復号する(ステップS2001)。次に、アプリ分割部310は、復号して生成されたアプリ110を、検証基データ保持部308に保持している検証基データのそれぞれの分割識別情報に基づいて分割する(ステップS2002)。分割識別情報に、3分割することが記載されていれば、アプリを3分割する。以下、アプリを3分割する場合について説明する。
 保護制御モジュール120の検知モジュール選択部311は、アプリ識別情報、分割データ及び検証基データの分配先の検知モジュールを選択する(ステップS2003)。ここで、アプリ識別情報は、保護制御モジュール120がOS180から受信したコマンドによる実行の対象であるアプリを識別する識別情報である。分割データは、アプリ分割部310による分割により生成された分割データである。また、検証基データは、検証基データ保持部308に保持されている検証基データのうち、生成された分割データに対応するものである。検証基データについては、図12から図14に一例を示している。
 (4-1)検知モジュールの選択方法
 図17を用いて、検知モジュール選択部311による検知モジュールの選択方法を説明する。
 検知モジュール選択部311は、図17に示す対応表330を保持している。
 検知モジュール選択部311は、検知モジュール選択部311が保持する対応表330を用いて、検知モジュール131、132、133、134、135のうち、どの検知モジュールに分配するかを決定することにより、検知モジュールの選択を行う。
 検知モジュール選択部311が保持する対応表330には、検知モジュール131、132、133、134、135のうち、どの3つの検知モジュールを選択するかのすべての組合せのパターンが、Indexに対応付けて、記述されている。
 図17に示す対応表330は、Indexと、検知モジュール識別子の組合せとの組を複数個含んでいる。Indexは、対応する組合せを識別する識別子である。例えば、対応表330は、Index331a「1」に対応して、検知モジュール131、132、133をそれぞれ識別する識別子「131」、「132」、「133」の組合せ332aを含み、Index331b「2」に対応して、検知モジュール131、132、134をそれぞれ識別する識別子「131」、「132」、「134」の組合せ332bを含み、Index331c「3」に対応して、検知モジュール131、132、135をそれぞれ識別する識別子「131」、「132」、「135」の組合せ332cを含む。
 ここで、各Indexは、正の整数であり、Index331a、331b、331c、・・・、は、「1」、「2」、「3」、・・・、「10」である。これらの値は、「1」を初期値とし、その値に順に「1」を加算して得られたものである。
 検知モジュール選択部311は、乱数を生成し、生成した乱数を検知モジュールを選択するための選択情報とする。この乱数は、「1」から、対応表330に含まれる組の数までの整数の範囲からランダムに選択される。
 検知モジュール選択部311は、対応表330から、選択情報と同じ値を有するIndexを決定し、対応表330から、決定したIndexに対応する組合せを選択することにより、検知モジュールを選択する。例えば、検知モジュール選択部311は、選択情報が「1」である場合、対応表330から、Index331a「1」に対応する組合せ332aを選択する。組合せ332aは、識別子「131」、「132」及び「133」を含んでいるので、検知モジュール131、132、133が選択されたこととなる。
 以下、検知モジュール131、132、133の組合せを選択したものとして説明する。
 図15へ戻り、検知処理の説明を続行する。
 保護制御モジュール120は、アプリ識別情報と、分割データと、分割データに対応する検証基データとを、選択した検知モジュールへ分配する。ここでは、一例として、検知モジュール131へアプリ識別情報「110」、アプリの分割データの1番目の情報(分割データ1(110a))、検証基データ630を送信し(ステップS2004)、検知モジュール132へアプリ識別情報「110」、アプリの分割データの2番目の情報(分割データ2(110b))、検証基データ650を送信し(ステップS2005)、検知モジュール133へアプリ識別情報、アプリの分割データの3番目の情報(分割データ3(110c))、検証基データ670を送信するものとする(ステップS2006)。
 各検知モジュールは、保護制御モジュール120のアプリの復号処理の入力データ(つまり、暗号化アプリ)と分割データの対応が正しいか否かを受信した検証基データを用いて検証する(ステップS2007)。具体的に、各検知モジュールは、検証基データ内のアプリ識別情報に対応する暗号化アプリのデータと、受信したアプリの分割データから検証値を生成する。そして、生成した検証値と受信した検証基データ内の検証値と比較し、両者が一致するか判断する。さらに、検証基データ内の証明書(復号処理証明書)の署名検証を行う。
 検証基データ内の証明書(復号処理証明書)の署名検証は、次のようにして行う。
 Verify(署名公開鍵、証明書634、Hash(検証値A||検証値B||検証値C||検証値D||検証値E))
 ここでは、一例として、図12に示す検証基データ630を用いる場合を示している。署名公開鍵は、管理装置200の公開鍵であり、証明書634、検証値A、検証値B、検証値C、検証値D及び検証値Eは、当該検知モジュールが受信した検証基データ630内に含まれているものである。また、Verify(a、b、c)は、公開鍵aを用いて、データcに対して、証明書bが正しいか否かを検証し、その検証結果を示す。検証結果は、検証が成功したか失敗したかを示す。
 各検知モジュールは、検証値が一致しない、又は、検証に失敗した場合には、保護制御モジュール120が改ざんされていると判定し(ステップS2008でY)、管理装置200の判断部210へ、分割データが改ざんされていることを示す監視結果を送信する(ステップS2009)。各検知モジュールは、検証値が一致し、かつ、検証に成功した場合には、保護制御モジュール120が改ざんされていないと判定し(ステップS2008でN)、分割データが改ざんされていないことを示す監視結果とともに、検証基データ内の分割識別情報を他の検知モジュールへ送信する(ステップS2010)。そして、各検知モジュールは、保護制御モジュール120から送信されたすべての分割データが正しいと検証されたか否かを確認する(ステップS2011)。
 以下、具体的に説明する。
 検知モジュール131は、分割識別情報631「(3、1)」を検知モジュール132及び検知モジュール133へ送信する。分割識別情報631「(3、1)」は、分割数が3であり、分割データがそのうちの1番目のデータであることを示した情報である。
 検知モジュール131は、検知モジュール132から分割識別情報651「(3、
2)」を受信し、検知モジュール133から分割識別情報671「(3、3)」を受信する。ここで、分割識別情報651「(3、2)」は、分割数が3であり、分割データがそのうちの2番目のデータであることを示した情報であり、分割識別情報671「(3、3)」は、分割数が3であり、分割データがそのうちの3番目のデータであることを示した情報である。検知モジュール131は、検証基データ630に含まれる判定情報632を参照することにより、アプリのデータが3分割されていることがわかる。また、検知モジュール131は、受信した分割識別情報651及び分割識別情報671の内容を確認することにより、2番目のデータと3番目のデータがそれぞれ検知モジュール132及び133により検証されたことを知ることができる。
 よって、各検知モジュールは、保護制御モジュール120から送信されたすべての分割データがいずれかの検知モジュールにより検証されたことを確認することができる。
 すべての分割データが正しいと検証されていない場合、又は、すべての分割データが1つの検知モジュールに送信されていた場合には、保護制御モジュール120が不正な動作を行ったとし、保護制御モジュール120が改ざんされていると判定し(ステップS2011でY)、判断部210へ、保護制御モジュール120が改ざんされていることを示す判断結果を送信する(ステップS2012)。
 保護制御モジュール120が改ざんされていない判定する場合(ステップS2011でN)、処理を終了する。この場合に、判断部210へ、保護制御モジュール120が改ざんされていないことを示す判断結果を送信してもよい。
 (5)検証基データの更新処理の動作
 検知システム10では、機器100に新たなアプリを追加してインストールする場合、保護制御モジュール120内の検証基データを更新する必要がある。保護制御モジュール120は、アプリが追加された場合、管理装置200に検証基データの生成を依頼し、管理装置200が生成した新しい検証基データを受信して保持する。
 ここでは、図18に示すシーケンス図を用いて、機器100に新たなアプリ(「アプリ115」と記載する。)を追加してインストール場合を具体例として用い、検証基データの更新処理の動作について説明する。
 機器100に新たなアプリ115がダウンロードされると、保護制御モジュール120は、OS180からアプリ115を受信する(ステップS3001)。保護制御モジュール120は、暗復号鍵保持部307に保持されている暗復号鍵を用いてアプリ115を暗号化する(ステップS3002)。そして、保護制御モジュール120は、アプリ115を識別するアプリ識別情報と暗号化されたアプリ115と検証基データの送付依頼とを管理装置200へ送信する(ステップS3003)。
 管理装置200は、アプリ識別情報と暗号化されたアプリ115と検証基データの送付依頼とを受信し(ステップS3003)、受信した暗号化されたアプリ115を保護制御モジュール保持部611で保持している保護制御モジュール120の暗復号鍵で復号する。そして、上述したように、復号したアプリ115を含む新たな検証基データを生成する(ステップS3004)。管理装置200は、新たな検証基データを保護制御モジュール120へ送信する(ステップS3005)。保護制御モジュール120は、新たな検証基データを受信し、受信した検証基データを検証基データ保持部308に記憶する(ステップS3006)。
 2.3 検知システム10の効果
 検知システム10では、保護制御モジュール120による暗号化アプリの復号処理を検証するので、保護制御モジュール120が保持する暗復号鍵を用いることなく、保護制御モジュールが改ざんされているか否かを判定することができる。
 また、各検知モジュールは、分割データを検証するので、各検知モジュールがアプリのすべてのデータを知ることなく検証することができる。
 これにより、検知モジュールが改ざんされ不正動作をしたとしても、保護制御モジュール120の情報やアプリの情報が漏洩することがないので、システムの安全性を高めることができる。
 また、本発明によれば、検知モジュール群130に含まれる全ての検知モジュールを選択するのではなく、保護制御モジュール120は、検知モジュール群130の中から、選択した検知モジュールに、検知処理を実行させるので、保護制御モジュール120が選択をしなかった検知モジュールが不正動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュール120に対する検知処理には影響せず、保護制御モジュールが改ざんされているかを検証することができる。
 3.実施の形態3
 本発明に係る別の実施の形態としての検知システム10a(図示していない)について説明する。
 検知システム10aは、実施の形態2の検知システム10と同様の構成を有している。ここでは、検知システム10との相違点を中心として説明する。
 3.1 概要
 検知システム10では、保護制御モジュールによる検知動作の実行の指示先のd個の検知モジュールのうち1つでも攻撃されると、保護制御モジュールが改ざんされているかを検証することができない。
 これに対して、検知システム10aでは、検知システム10における分割データの生成に代えて、閾値秘密分散法(Threshold Secret Sharing Scheme)を用いて複数の分散データを生成し、生成した分散データの分配先であるいくつかの検知モジュールが攻撃されたとしても、d個の検知モジュールのうち、k(kは、正の整数であり、dより小さい。)個の検知モジュールが改ざんされていなければ、保護制御モジュールが改ざんされているかを検証できる。ここで、dを検知動作数と呼び、kを検知閾値と呼ぶ。
 ここで用いる閾値秘密分散法は、次の通りである。
 管理装置200のデータ分割部608は、ランダムに整数a1 、a2 、・・・、ak-1 を選択する。整数a1 、a2 、・・・、ak-1 をパラメタと呼び、パラメタ(a1 、a2 、・・・、ak-1 )と表す。また、素数rを選択する。
 こうして、データ分割部608は、図23の式1に示すように、(k-1)次多項式を設定する。式1において、sは、定数項であり、sは、各アプリのデータである。整数a1 、a2 、・・・、ak-1 は、それぞれ、次数が1以上の項の係数である。
 また、データ分割部608は、r|p-1となるように、素数pを選択し、乗法群Zp*での位数がrとなる要素gを定める。
 次に、図20に示す式3により、c0 、c1 、・・・、ck-1 を計算する。
 p、g、c0 、c1 、・・・、ck-1 を検証値(p、g、c0 、c1 、・・・、ck-1 )と表す。
 管理装置200は、検証値(p、g、c0 、c1 、・・・、ck-1 )を保護制御モジュール120へ出力する。
 保護制御モジュール120のアプリ分割部310は、図23の式1に示す(k-1)次多項式を用いて、式2に示すように、アプリ毎に、分散データwj =f(j)(j=1、2、・・・、d)を生成する。保護制御モジュール120は、選択したd個の検知モジュールに、それぞれ、分散データwj =f(j)(j=1、2、・・・、d)を送信する。また、d個の検知モジュールに、それぞれ、検証値(p、g、c0 、c1 、・・・、ck-1 )を送信する。
 各検知モジュールは、図23に示す式4が成立するか否かを判断することにより、送信された分散データwj が正しいか否かを検証する。式4が成立する場合には、分散データwj が正しく生成されたと判断する。式4が成立しない場合には、分散データwj が正しく生成されていないと判断する。
 また、検知モジュールは、他の検知モジュールから検証結果を受け取り、受け取った検証結果及び自身の検証結果により、k個以上の検知モジュールにおいて、式4による検証が成功したことを示す場合に、保護制御モジュール120は、改ざんされていないと決定する。一方、k個未満の検知モジュールにおいて、式4による検証が成功したことを示す場合に、保護制御モジュール120は、改ざんされていないと決定しない。
 この秘密分散法は、検証可能閾値秘密分散法(verifiable secret sharing scheme)とも呼ばれ、dより小さいk個以上のどの分散データを用いても、元のデータ(ここでは、コンピュータプログラム)を復元することができるように、元のデータを分散する秘密分散法である
 なお、秘密分散法及び閾値秘密分散法については、非特許文献1の209ページから219ページに詳しく説明されているので、ここでの説明は省略する。
 3.2 動作
 (1)初期設定処理の動作
 初期設定処理について説明する。検知システム10aの初期設定処理は、図9に示す検知システム10の初期設定処理と類似している。なお、ここでは、検知システム10の初期設定処理との相違点を中心として、図19に示すシーケンス図を用いて説明する。
  図19に示すシーケンス図におけるステップS1001~S1005は、それぞれ、図9における対応するステップと同じであるので、説明を省略する。
 ステップS1005の次に、管理装置200は、検証基データの生成処理を実行する(ステップS1006a)。検証基データの生成処理の詳細については、後述する。検証基データの生成処理が完了すると、管理装置200は、生成した検証基データ、パラメタ(a1 、a2 、・・・、ak-1 )及び素数rを保護制御モジュール120へ送信する(ステップS1007a)。保護制御モジュール120は、管理装置200から検証基データ、パラメタ(a1 、a2 、・・・、ak-1 )及び素数rを受信し(ステップS1007a)、受信した検証基データ、パラメタ(a1 、a2 、・・・、ak-1 )及び素数rを検証基データ保持部308へ記憶する(ステップS1008a)。
 (2)検証基データの生成処理
 検知システム10aの検証基データの生成処理の動作について、図20に示すフローチャートを用いて説明する。ここで説明する検証基データの生成処理は、図19に示すステップS1006aの詳細である。検知システム10aの検証基データの生成処理は、図10に示す検知システム10の検証基データの生成処理と類似している。ここでは、その相違点について説明する。
  図20に示すフローチャートにおけるステップS1101は、図10における対応するステップと同じであるので、説明を省略する。
 検証基データ配布部220のデータ分割部608は、アプリ毎に、図23の式1に示す(k-1)次多項式f(x)の各項の係数a1 、a2 、・・・、ak-1 をランダムに選択する。各係数は、それぞれ整数である。また、素数rを選択する(ステップS1102a)。
 次に、データ分割部608は、アプリ毎に、r|p-1となるように、素数pを選択し、乗法群Zp*での位数がrとなる要素gを定め、図20に示す式3により、c0 、c1 、・・・、ck-1 を計算する。また、データ分割部608は、アプリ毎に生成した検証値(p、g、c0 、c1 、・・・、ck-1 )を用いて、上述したように、複数のアプリについて生成した複数の検証値を結合して結合体を生成し、生成した結合体にハッシュ関数による演算を施し、得られたハッシュ値に、署名秘密鍵を用いてデジタル署名を施して、証明書を生成する。
 (証明書)=Sign(署名秘密鍵、Hash(検証値||検証値||・・・||検証値))
 なお、検証値を結合する際に、各検証値は、p、g、c0 、c1 、・・・、ck-1 をこの順序で結合したものとする(ステップS1103a)。
 次に、検証基データ生成部610は、1個の検証基データを生成する。検証基データは、図22に示すように、分割識別情報、判定情報、複数の検証値組及び証明書(復号処理証明書)を含む。各検証値組は、アプリ識別情報及び検証値を含む(ステップS1104a)。なお、分割識別情報及び判定情報については、後述する。
 図21に、アプリのデータを分散する場合における動作概要図を示す。ここでは、アプリのデータに対し、閾値秘密分散法を用いて、4つの分散データを生成し、このうち、3つの分割データを用いて、元のアプリのデータが復元できるようにした例である。
 保護制御モジュール120のアプリ分割部310は、閾値秘密分散法を用いて、アプリ110、111、112、113及び114から、各アプリについて、各アプリのデータを分散して、一例として、4個の分散データ1、分散データ2、分散データ3及び分散データ4を生成する。
 アプリ110から分散データを生成する場合について、具体的に説明すると、一例として図21に示すように、アプリ分割部310は、閾値秘密分散法を用いて、アプリのデータ110「s」を分散して、図21に示す式2-1、式2-2、式2-3及び式2-4により、4個の分散データ1(110d)「w1 =f(1)」、分散データ2(110e)「w2 =f(2)」、分散データ3(110f)「w3 =f(3)」及び分散データ4(110g)「w4 =f(4)」を生成する。
 検知システム10においては、生成された分割データの数と同数の検証基データが生成される。これに対して、検知システム10aにおいては、1個の検証基データが生成される。検証基データ生成部610により生成される検証基データの一例として、図22に、検証基データ690を示す。
 検証基データ690は、図22に示すように、分割識別情報691、判定情報692、複数の検証値組693a~693e及び証明書694から構成されている。各検証値組は、アプリ識別情報及び検証値から構成されている。
 ここで、分割識別情報691は、アプリ分割部310において生成される分散データの数dを示す。ここでは、一例として、分割識別情報691は、「4」である。
 また、判定情報692は、検知閾値kである。ここでは、一例として、判定情報692は、「3」である。
 アプリ識別情報は、対応するアプリを識別するための情報である。
 検証値は、上述した通りであり、(p、g、c0 、c1 、・・・、ck-1 )である。
 証明書964は、上述した通りであり、複数の検証値を結合して得られた結合体にハッシュ関数による演算を施し、得られたハッシュ値に、署名秘密鍵を用いてデジタル署名を施して、生成した証明書である。
 (3)検知処理の動作
 検知システム10aの検知処理の動作について、図23から図24に示すシーケンス図を用いて説明する。
 図22に示す検知システム10aの検知処理におけるステップS2100及びS2101の動作は、検知システム10の図15に示すステップS2000及びS2001の動作と同様の動作であるため、説明を省略する。以下で、ステップS2102からの処理について説明する。
 保護制御モジュール120のアプリ分割部310は、検証基データ保持部308に保持しているパラメタ(a1 、a2 、・・・、ak-1 )及び素数rを用いて、図23の式1に示す(k-1)次多項式を設定する。式1において、sは、アプリ110のデータである。また、定数項s以外の他の一次以上の項は、それぞれ、a1 、a2 、・・・、ak-1 を係数とする。アプリ分割部310は、アプリ毎に、図23の式2に示すように、d個の分散データwj (j=1、2、・・・、d)を演算して生成する。
 ここで、dは、検証基データ保持部308に保持している検証基データに含まれる分割識別情報により指定されている。また、kは、検証基データに含まれる判定情報により指定されている(ステップS2102)。
 一例として、dが「4」であり、kが「3」である場合には、アプリ分割部310により、4個の分散データが生成される。また、3個以上の分散データを用いた検証に成功すれば、保護制御モジュールの検証に成功する。
 保護制御モジュール120は、実施の形態2の検知モジュール選択部311に代えて、検知モジュール選択部311aを含む。検知モジュール選択部311aは、検知モジュール選択部311と類似した構成を有している。ここでは、相違点を中心として説明する。
 保護制御モジュール120の検知モジュール選択部311aは、アプリ識別情報、分散データ及び検証基データの分配先の検知モジュールを選択する(ステップS2103)。ここで、アプリ識別情報は、保護制御モジュール120がOS180から受信したコマンドによる実行の対象であるアプリを識別する識別情報である。分散データは、アプリ分割部310により生成された分散データである。また、検証基データは、検証基データ保持部308に保持されている検証基データである。検証基データについては、図22に一例として検証基データ690を示している。
 図25を用いて、検知モジュール選択部311aによる検知モジュールの選択方法を説明する。
 検知モジュール選択部311aは、図25に示す対応表330aを保持している。
 検知モジュール選択部311aは、対応表330aを用いて、検知モジュール131、132、133、134、135のうち、どの検知モジュールにアプリ識別情報、分散データ及び検証基データを分配するかを決定することにより、検知モジュールの選択を行う。
 図25に示すように、検知モジュール選択部311aが保持する対応表330aには、検知モジュール131、132、133、134、135のうち、どの4つの検知モジュールを選択するかのすべての組合せのパターンが、Indexに対応付けて、記述されている。
 図24に示す対応表330aは、図17に示す対応表330と同様の構成を有している。対応表330aは、Indexと検知モジュール識別子の組合せとの組を複数個含んでいる。Indexは、対応する組合せを識別する識別子である。例えば、対応表330aは、Index331d「1」に対応して、検知モジュール131、132、133、134をそれぞれ識別する識別子「131」、「132」、「133」、「134」の組合せ332dを含み、Index331e「2」に対応して、検知モジュール131、132、133、135をそれぞれ識別する識別子「131」、「133」、「134」、「135」の組合せ332eを含み、Index331f「3」に対応して、検知モジュール131、132、134、135をそれぞれ識別する識別子「131」、「132」、「134」、「135」の組合せ332fを含み、Index331g「4」に対応して、検知モジュール131、133、134、135をそれぞれ識別する識別子「131」、「133」、「134」、「135」の組合せ332gを含み、Index331h
「5」に対応して、検知モジュール132、133、134、135をそれぞれ識別する識別子「132」、「133」、「134」、「135」の組合せ332hを含む。
 検知モジュール選択部311aは、対応表330aから、選択情報と同じ値を有するIndexを決定し、対応表330aから、決定したIndexに対応する組合せを選択することにより、検知モジュールを選択する。例えば、検知モジュール選択部311aは、選択情報が「1」である場合、対応表330aから、Index331d「1」に対応する組合せ332dを選択する。組合せ332dは、識別子「131」、「132」、「133」及び「134」を含んでいるので、検知モジュール131、132、133及び134が選択されたこととなる。 以下、検知モジュール131、132、133及び134の組合せを選択したものとして説明する。
 保護制御モジュール120は、アプリ識別情報と、分散データと、検証基データとを、選択した検知モジュールへ分配する。ここでは、検知モジュール131へアプリ識別情報、アプリの1番目の分散データ(分散データ1(110d))及び検証基データを送信し(ステップS2104)、検知モジュール132へアプリ識別情報、アプリの2番目の分散データ(分散データ2(110e))及び検証基データを送信し(ステップS2105)、検知モジュール133へアプリ識別情報、アプリの3番目の分散データ(分散データ3(110f))及び検証基データを送信し(ステップS2106)、検知モジュール134へアプリ識別情報、アプリの4番目の分散データ(分散データ4(110g))及び検証基データを送信する(ステップS2107)。
 検知モジュール131、132、133及び134の各検証部404は、図23に示す式4が成立するか否かを判断する。また、各検証部404は、検証基データに含まれている証明書の署名検証を行う(ステップS2108)。
 各検知モジュールは、式4が成立しない、又は、検証に失敗した場合には、保護制御モジュール120が改ざんされていると判定し(ステップS2019でY)、管理装置200の判断部210へ、分散データが正しくないことを示す監視結果を送信する(ステップS2110)。各検知モジュールは、式4が成立し、かつ、検証に成功した場合には、分散データが正しいと決定し(ステップS2109でN)、分散データが正しいことを示す監視結果と、当該検知モジュールの識別子とを他の検知モジュールへ送信する(ステップS2111)。次に、各検知モジュールは、他の検知モジュールから受け取った監視結果及び自身の監視結果により、k個以上の検知モジュールにおいて、式4による検証が成功したか否かを判断し(ステップS2112)、k個以上の検知モジュールにおいて、式4による検証が成功したと判断する場合(ステップS2112でN)、保護制御モジュール120が改ざんされていないと決定し、処理を終了する。k個以上の検知モジュールにおいて、式4による検証が成功したと判断しない場合(ステップS2112でY)、保護制御モジュール120が改ざんされたことを示す判断結果を管理装置200の判断部210へ送信する(ステップS2113)。
 検証部404は、分散データの配布先のd個の検知モジュールのうち、自身の検知モジュールを含め、閾値であるk個以上の検知モジュールにより、分散データが正しいことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていないと判断する。この場合に、k個未満の検知モジュールが、不正動作を行って、分散データが正しいにもかかわらず、分散データが改ざんされているとする監視結果を検証部404へ送信した場合においても、k個以上の検知モジュールが、分散データが正しいと決定しているので、検証部404は、保護制御モジュール120は正常であると判断する。
 検証部404は、分散データの配布先のd個の検知モジュールのうち、(d-k+1)個以上の検知モジュールにより、分散データが正しくないことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていると判断する。
 なお、管理装置200の判断部210が上記の判断を行うとしてもよい。
 判断部210は、分散データの配布先のd個の検知モジュールのうち、閾値であるk個以上の検知モジュールにより、分散データが正しいことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていないと判断する。この場合に、k個未満の検知モジュールが、不正動作を行って、分散データが正しいにもかかわらず、分散データが改ざんされているとする監視結果を判断部210へ送信した場合においても、k個以上の検知モジュールが、分散データが正しいと決定しているので、判断部210は、保護制御モジュール120は正常であると判断する。
 また、判断部210は、分散データの配布先のd個の検知モジュールのうち、(d-k+1)個以上の検知モジュールにより、分散データが正しくないことを示す監視結果を受け取った場合、保護制御モジュール120は改ざんされていると判断する。
 3.3 検知システム10aの効果
 検知システム10によると、dより小さいk個以上の検知モジュールによる監視結果を用いて、保護制御モジュールの改ざんを検出することができる。従って、(d-k)個以下の検知モジュールが改ざんされている場合であっても、保護制御モジュールの改ざんを検出することができる。
 このように、検知システム10aによると、分散データの分配先の先の検知モジュールが不正動作を行ったとしても、保護制御モジュールが正常動作を行ったかの判断ができ、システムの安全性を維持することができる。
 また、復号したアプリのデータの分散に閾値秘密分散法を用いることで、システムの安全性を理論的に評価することができる。
 4.実施の形態4
 本発明に係る別の実施の形態としての検知システム10bについて説明する。
 検知システム10bは、実施の形態2の検知システム10と同様の構成を有している。ここでは、検知システム10との相違点を中心として説明する。
 4.1 概要
 検知システム10では、保護制御モジュールが分割データの分配先の検知モジュールを選択している。しかし、保護制御モジュールが不正動作を行い、さらに、どの検知モジュールが不正動作を行うかを知っている場合、不正動作を行う検知モジュールに分割データを分配することにより、保護制御モジュールの不正動作を検出できないようにすることができる。そこで、検知システム10bでは、検知モジュールが分割データの分配先の検知モジュールを決定することにより、保護制御モジュールが分配先の検知モジュールを恣意的に選択できないようにする。
 4.2 動作
 (1)検知処理の動作
 ここでは、検知システム10bにおける検知処理の動作について、図26から図29に示すシーケンス図を用いて説明する。検知システム10bにおけるステップS2200からステップS2202までの動作は、検知システム10における図15に示すステップS2000からステップS2002の動作と同様であるため、説明を省略する。以下で、ステップS2203からの処理について説明する。
 保護制御モジュール120は、各検知モジュールへ検知処理の実行を通知する(ステップS2203)。
 保護制御モジュール120からの通知を受信後、各検知モジュールの検証部404は、乱数を生成する(ステップS2204)。送信部402は、生成した乱数を、他の全ての検知モジュールへ送信する(ステップS2205)。各検知モジュールは、他の全ての検知モジュールから乱数を受信し(ステップS2205)、検証部404は、受信した全ての乱数及び自ら生成した乱数を合計して合計値を算出し、算出した合計値を用いて、検証部404が保持する対応表330b(後述する)のどのIndexを選択するか示す選択情報を計算する(ステップS2206)。
 検証部404は、一例として図30に示す対応表330bを保持している。対応表330bは、保護制御モジュール120の検知モジュール選択部311で保持している対応表330と同じものである。
 各検知モジュールは、対応表330bからIndexの最大値を取得する。対応表330bにおいては、「10」がIndexの最大値である。次に、算出した合計値に対し、取得した最大値で法をとった値を選択情報として計算する。
 選択情報= (r1 +r2 +・・・+rn ) mod (Indexの最大値)
 ここで、r1 、r2 、・・・、rn は、それぞれ、n個の検知モジュールにより生成された乱数である。また、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 例えば、すべての乱数の合計値が「21」である場合、「10」で法をとった値は
「1」となるので、選択情報は、「1」である。また、すべての乱数の合計値が「30」である場合、「10」で法をとった値は「0」となるので、選択情報は、「10」である。
 各検知モジュールは、選択情報を保護制御モジュール120へ送信する(ステップS2207)。
 保護制御モジュール120は、受信した選択情報のいずれか一つに基づいて、図17に示す対応表330から、当該選択情報に等しいIndexを選択し、選択したIndexに対応する検知モジュール識別子の組を選択する(ステップS2208)。
 これ以降のステップS2209からステップS2217の動作は、実施の形態2における図15~図16に示すステップS2004からステップS2012までの動作と同様の動作であるため、説明を省略する。
 4.3 検知システム10bの効果
 検知システム10bにより、検知モジュールが連携して、分割データを分配する検知モジュールを検知モジュールが決定するので、保護制御モジュールは、分割データを分配する検知モジュールを恣意的に選択できない。また、検知モジュールのすべてが不正動作を行わない限り、検知モジュールの選択先を決定できない。これにより、保護制御モジュールが不正動作を行い、分割データを分配する検知モジュールを恣意的に選択することを防止し、システムの安全性を向上することができる。
 5.実施の形態5
 本発明に係る別の実施の形態としての検知システム10cについて説明する。
 検知システム10cは、実施の形態2の検知システム10と同様の構成を有している。ここでは、検知システム10との相違点を中心として説明する。
 5.1 概要
 検知システム10cでは、保護制御モジュール120において、複数の復号サブプロセスから構成される復号処理のプロセスを経ることにより、暗号化アプリが復号される。このとき、各復号サブプロセスの入出力対応を検証することにより、保護制御モジュール120が改ざんされているかを判断する。
 図31は、保護制御モジュール120における複数の復号サブプロセスから構成される復号処理350の概要を示す図である。検知システム10cでは、一例として、復号処理350のプロセスは、復号部分処理1(351)、復号部分処理2(352)、及び復号部分処理3(353)の3個の復号サブプロセスから構成される。なお、4個以上の復号部分処理の復号サブプロセスから構成されるとしてもよい。
 ここで、複数個の復号サブプロセスから構成される復号処理の例は、DES(Data 
Encryption Standard)及びAES(Advanced Encryption Standard)である。
 復号部分処理1(351)は、暗号化アプリのデータ355を入力データとして受け取り、復号して中間値1(356)を生成し、中間値1(356)を出力データとして復号部分処理2(352)へ出力する。復号部分処理2(352)は、中間値1(356)を入力データとして受け取り、復号して中間値2(357)を生成し、中間値2(357)を出力データとして復号部分処理3(353)へ出力する。復号部分処理3(353)は、中間値2(357)を入力データとして受け取り、復号してアプリのデータ(358)を生成し、アプリのデータ(358)を出力データとして出力する。
 各検知モジュールは、復号部分処理ごとに生成された検証データを用いて、各復号部分処理の入出力の対応を検証する。なお、安全性の観点から、1つの検知モジュールが3個の復号部分処理についてすべて検証するのではなく、3個の検知モジュールが、それぞれ異なる復号部分処理を検証することが望ましい。一般的に、復号処理は、複数の復号部分処理から構成され、各復号部分処理の入出力の対応を、復号部分処理の数と同数の検知モジュールが、それぞれ異なる復号部分処理について検証することが望ましい。なお、復号部分処理の数より多い数の検知モジュールが、復号部分処理について検証するとしてもよい。この場合には、複数の検知モジュールが一つの復号部分処理について検証を行うこととなる。
 5.2 構成
 検知システム10cの管理装置200は、検知システム10の管理装置200が備える検証基データ配布部220に代えて、検証基データ配布部220aを有する。検証基データ配布部220aは、検知システム10の管理装置200が備える検証基データ配布部220と類似する構成を有している。ここでは、相違点を中心として説明する。
 (1)検証基データ配布部220aの構成
 図32は、検知システム10cにおける検証基データ配布部220aの機能構成を示す機能ブロック図である。検知システム10における検証基データ配布部220と同様の機能を有する構成要素は、同じ符号を付して説明を省略する。
 検知システム10における検証基データ配布部220と比較すると、検証基データ配布部220aは、データ分割部608を備えていない。また、検証基データ配布部220には存在しないソフトウェア実行部621を備える。
 ソフトウェア実行部621は、保護制御モジュール保持部611に保持されている保護制御モジュールを用いて暗号化アプリを復号し、復号処理プロセスを構成する複数のサブ復号プロセスにおいて、中間値1、中間値2及び復号されたアプリのデータを取得する。
 (検証基データのデータ構造)
 また、検知システム10cでは、検証基データ配布部220aが生成する検証基データの構成が検知システム10の検証基データの構成と異なる。
 図33は、検知システム10cにおける検証基データの一例としての、検証基データ240のデータ構成図である。
 検証基データ240は、図33に示すように、復号部分処理1に関するデータ241a、復号部分処理2に関するデータ241b及び復号部分処理3に関するデータ241cを含む。この検証基データは、保護制御モジュール120の検証基データ保持部308に保持される。
 (a)復号部分処理1に関するデータ241aは、図33に示すように、判定情報242a、複数の検証値組243a~247a、証明書248a及び復号部分識別子249aから構成されている。
 判定情報242aは、復号部分処理のすべてが検証されたかを判定するための情報であり、復号サブプロセスの数が記載される。例えば、復号処理プロセスが3個の復号サブプロセスから構成されている場合、「3」と記載されている。
 複数の検証値組243a~247aの数は、アプリの数と同一であり、複数の検証値組243a~247aは、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
 検証値組に含まれるアプリ識別情報は、対応するアプリを識別する識別子である。
 検証値組に含まれるデータは、対応する暗号化アプリのデータである。
 検証値組に含まれる検証値は、暗号化アプリのデータ355と復号部分処理1(351)の出力データである中間値1(356)とから生成した復号検証値である。検証値は、保護制御モジュール120が正常動作した際のそれぞれの復号部分処理1(351)の入力データと出力データとを結合して得られた結合体に対して、ハッシュ関数による演算を施して得られたハッシュ値である。
 検証値=Hash(復号部分処理1(351)の入力データ||復号部分処理1(351)の出力データ)
 ここでは、検証値としてハッシュ値を使用したが、これに限定するものではなく、次に示すように、署名などを用いてもよい。
 検証値=Sign(署名秘密鍵、(復号部分処理1(351)の入力データ||復号部分処理1(351)の出力データ))
 証明書248aは、復号処理証明書である。復号処理証明書は、復号部分処理1に関するデータ241aに含まれる全ての検証値を結合し、これらの複数の検証値を結合して得られた結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて、デジタル署名アルゴリズムを施して、生成した署名である。
 証明書248a=Sign(署名秘密鍵、Hash(検証値||検証値||、・・・、検証値||検証値))
 復号部分識別子249aは、復号部分処理1(351)を識別する識別子である。一例として、復号部分識別子249aは、「001」である。
 (b)復号部分処理2に関するデータ241bは、図33に示すように、判定情報242b、複数の検証値組243b~247b、証明書248b及び復号部分識別子249bから構成されている。
 判定情報242bは、復号部分処理のすべてが検証されたかを判定するための情報であり、復号サブプロセスの数が記載される。例えば、復号処理プロセスが3個の復号サブプロセスから構成されている場合、「3」と記載されている。
 複数の検証値組243b~247bの数は、アプリの数と同一であり、複数の検証値組は243b~247b、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
 検証値組に含まれるアプリ識別情報は、対応するアプリを識別する識別子である。
 検証値組に含まれるデータは、対応する暗号化アプリから生成された中間値1である。
 検証値組に含まれる検証値は、中間値1(356)と復号部分処理2(352)の出力データである中間値2(357)とから生成した復号検証値である。中間値1(356)及び中間値2(357)は、ソフトウェア実行部621が、アプリの復号処理を実行することにより取得される。検証値は、保護制御モジュール120が正常動作した際のそれぞれの復号部分処理2(352)の入力データと出力データとを結合して得られた結合体に対して、ハッシュ関数による演算を施して得られたハッシュ値である。
 検証値=Hash(復号部分処理2(352)の入力データ||復号部分処理2(352)の出力データ)
 ここでは、検証値としてハッシュ値を使用したが、これに限定するものではなく、次に示すように、署名などを用いてもよい。
 検証値=Sign(署名秘密鍵、Hash(復号部分処理2(352)の入力データ||復号部分処理2(352)の出力データ))
 証明書248aは、復号処理証明書である。復号処理証明書は、復号部分処理2に関するデータ241bに含まれる全ての検証値を結合し、これらの複数の検証値を結合して得られた結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて、デジタル署名アルゴリズムを施して、署名である。
 証明書248b=Sign(署名秘密鍵、Hash(検証値||検証値||、・・・、検証値||検証値))
 復号部分識別子249bは、復号部分処理2(352)を識別する識別子である。一例として、復号部分識別子249bは、「002」である。
 (c)復号部分処理3に関するデータ241cは、図33に示すように、判定情報242c、複数の検証値組243c~247c、証明書248c及び復号部分識別子249cから構成されている。
 判定情報242cは、復号部分処理のすべてが検証されたかを判定するための情報であり、復号サブプロセスの数が記載される。例えば、復号処理プロセスが3個の復号サブプロセスから構成されている場合、「3」と記載されている。
 複数の検証値組243c~247cの数は、アプリの数と同一であり、複数の検証値組243c~247cは、それぞれ、アプリ110、111、112、113及び114に対応している。各検証値組は、アプリ識別情報、データ及び検証値を含む。
 検証値組に含まれるアプリ識別情報は、対応するアプリを識別する識別子である。
 検証値組に含まれるデータは、対応する暗号化アプリのデータから生成された中間値2(357)である。
 検証値組に含まれる検証値は、中間値2(357)とアプリのデータ(358)とから生成した復号検証値である。ここで、アプリのデータ(358)は、復号部分処理3(353)の出力データである。復号したアプリのデータ(358)は、ソフトウェア実行部621が、アプリの復号処理を実行することにより取得される。検証値は、保護制御モジュール120が正常動作した際のそれぞれの復号部分処理3(353)の入力データと出力データとを結合して得られた結合体に対して、ハッシュ関数による演算を施して得られたハッシュ値である。
 検証値=Hash(復号部分処理3(353)の入力データ||復号部分処理3(353)の出力データ)
 ここでは、検証値としてハッシュ値を使用したが、これに限定するものではなく、次に示すように、署名などを用いてもよい。
 検証値=Sign(署名秘密鍵、Hash(復号部分処理3(353)の入力データ||復号部分処理3(353)の出力データ))
 証明書248cは、復号処理証明書である。復号処理証明書は、復号部分処理3に関するデータ241cに含まれる全ての検証値を結合し、これらの複数の検証値を結合して得られた結合体にハッシュ関数による演算を施してハッシュ値を計算し、計算したハッシュ値に対して、署名秘密鍵保持部606の署名秘密鍵を用いて、デジタル署名アルゴリズムを施して、生成した署名である。
 証明書248c=Sign(署名秘密鍵、Hash(検証値||検証値||、・・・、検証値||検証値))
 復号部分識別子249cは、復号部分処理3(353)を識別する識別子である。一例として、復号部分識別子249cは、「003」である。
 5.3 動作
 (1)検証基データの生成処理の動作
 検知システム10cにおける検証基データの生成処理を図34に示すフローチャートを用いて説明する。
 検証基データの生成では、ソフトウェア実行部621は、機器100にインストールされる複数のアプリであって、アプリ保持部609に保持している複数のアプリを保護制御モジュール120の暗復号鍵で暗号化する(ステップS1201)。ソフトウェア実行部621は、保護制御モジュール120の復号処理を実行し、複数の暗号化アプリを復号して、復号部分処理1(351)、復号部分処理2(352)及び復号部分処理3(353)の出力データである中間値1(356)、中間値2(357)及び復号したアプリのデータ(358)を取得する(S1202)。
 次に、証明書生成部605は、アプリ毎に、暗号化アプリのデータ(355)及び中間値1(356)の組、中間値1(356)及び中間値2(357)の組、並びに、中間値2(357)及び復号したアプリのデータ(358)の組のそれぞれに対し、検証値を生成し、各復号部分処理に関して、複数の検証値から、署名秘密鍵保持部606に保持されている署名秘密鍵を用いて、証明書を生成する(ステップS1203)。
 最後に、検証基データ生成部610は、復号部分処理1に関するデータ(241a)、復号部分処理2に関するデータ(241b)、及び復号部分処理3に関するデータ(241c)を含む検証基データ240を生成する(ステップS1204)。
 (2)検知処理の動作
 図35及び図36は、検知システム10cにおける検知処理の動作を示すシーケンス図である。
 ここでは、具体例として、機器100がアプリ110を実行する場合において、保護制御モジュール120が検知処理を行うときについて説明する。
 保護制御モジュール120の検証基データ生成部309は、アプリ110を実行するコマンドを受信すると(ステップS2300)、検証基データ保持部308に保持されている検証基データ240(図33)から、復号部分処理1に関するデータ241a、復号部分処理2に関するデータ241b及び復号部分処理3に関するデータ241cを分離して抽出し、復号部分処理1に関するデータ241aを復号部分処理1の検証基データ250a(図37に示す)とし、復号部分処理2に関するデータ241bを復号部分処理2の検証基データ250b(図38に示す)とし、復号部分処理3に関するデータ241cを復号部分処理3の検証基データ250c(図39に示す)として生成する(ステップS2301)。
 図37に示す復号部分処理1の検証基データ250aは、図33の検証基データ240の復号部分処理1に関するデータ241aと同じであり、図38に示す復号部分処理2の検証基データ250bは、図33の検証基データ240の復号部分処理2に関するデータ241bと同じであり、図39に示す復号部分処理3の検証基データ250cは、図33の検証基データ240の復号部分処理3に関するデータ241cと同じである。
 検証基データ250a、250b及び250cの生成後、保護制御モジュール120は、暗号化されたアプリ110を復号する(ステップS2302)。
 保護制御モジュール120は、検知モジュール選択部311が保持する対応表330を用いて、検知モジュール131、132、133、134、135のうち、どの検知モジュールに検証基データを送信するかを決定する(ステップS2303)。ここでは、検知モジュール131、132、133を選択したとする。
 保護制御モジュール120は、選択した検知モジュール131へ、アプリ110を識別するアプリ識別情報と中間値1(356)と復号部分処理1の検証基データ250aとを送信する(ステップS2304)。
 また、保護制御モジュール120は、選択した検知モジュール132へ、アプリ110を識別するアプリ識別情報と中間値2(357)と復号部分処理2の検証基データ250bとを送信する(ステップS2305)。
 さらに、保護制御モジュール120は、選択した検知モジュール133へ、アプリ110を識別するアプリ識別情報と復号したアプリのデータ(358)と復号部分処理3の検証基データ250cとを送信する(ステップS2306)。
 各検知モジュールは、受信した検証基データを用いて、復号部分処理の入出力対応が正しいか否かを検証する(ステップS2307)。具体的に、各検知モジュールは、受信した検証基データ内のデータと、受信した中間値またはアプリのデータから検証値を生成する。そして、生成した検証値と検証データ内の検証値と比較し、両者が一致するか判断する。さらに、復号処理証明書の署名検証を行う。
 各検知モジュールは、検証値が一致しない、または、署名検証に失敗した場合には、中間値又はアプリのデータが正しくないと判定し(ステップS2308でY)、判断部210へ中間値又はアプリのデータが正しくないことを示す監視結果を送信する(ステップS2309)。各検知モジュールは、検証値が一致し、かつ、署名検証に成功した場合には、保護制御モジュール120が改ざんされていないと判定し(ステップS2308でN)、各復号部分処理を検証した旨の通知及び検証基データ内の復号部分識別子を他の全ての検知モジュールへ送信する(ステップS2310)。一例として、検知モジュール131は、復号部分処理1を検証した旨の通知及び復号部分処理1(351)を識別する復号部分識別子「001」を送信する。そして、各検知モジュールは、保護制御モジュール120のすべての復号部分処理が検証されたか否かを確認する(ステップS2311)。具体的には、各検知モジュールは、自身に割り当てられた復号部分処理を除く他の全ての復号部分処理を識別する復号部分識別子を受け取ったか否かを判断する。各検知モジュールは、自身に割り当てられた復号部分処理を除く他の全ての復号部分処理を識別する復号部分識別子を受け取ったと判断する場合には、保護制御モジュール120が改ざんされていないと判定し(ステップS2311でN)、処理を終了する。
 各検知モジュールは、自身に割り当てられた復号部分処理を除く他の全ての復号部分処理を識別する復号部分識別子を受け取っていないと判断する場合には、すべての復号部分処理が検証されていない、又は、全ての復号部分処理についての出力データ(中間値1(356)、中間値2(357)及びアプリのデータ(357))並びに検証基データ250a、250b及び250cが、1個の検知モジュールに送信されている可能性があり、保護制御モジュール120が不正動作を行ったものとして、保護制御モジュール120が改ざんされていると判定し(ステップS2311でY)、判断部210へ保護制御モジュール120が改ざんされていることを示す判断結果を送信する(ステップS2312)。
 5.4 検知システム10cの効果
 検知システム10cでは、保護制御モジュール120が実行する復号処理のプロセスは、複数のサブプロセスである復号部分処理から構成され、復号部分処理ごとに入出力データの対応関係が検証される。そのため、仮に検知モジュールが不正動作をしたとしても、保護制御モジュール120が実行する復号処理の全体が漏洩するのを防止することができる。さらに、保護制御モジュール120による復号処理の全体のうち、どの部分が改ざんされたかを知ることができる。
 また、保護制御モジュール120が選択をしなかった検知モジュールが不正動作をしたとしても保護制御モジュール120に対する検知処理には影響せず、保護制御モジュールが改ざんされているかを検証することができる。
 6.その他の変形例
 なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
 (1)上記各実施の形態では、検知処理後に相互監視処理を行うとしてもよい。相互監視処理に関しては、特許文献3に詳しく説明されているので、ここでの説明は省略する。
 (2)上記変形例(1)では、検知処理後に、相互監視を実行し、保護制御モジュール120が正常であると判断できた場合は、相互監視の結果、発見した不正動作を行う検知モジュールを、保護制御モジュール120が無効化するとしてもよい。また、正常な検知モジュールを用いて、無効化処理を行うとしてもよい。無効化処理に関しては、特許文献3に詳しく説明されているので、ここでの説明は省略する。
 (3)上記実施の形態4では、n個の全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数を合計して合計値を算出し、算出した合計値を用いて、選択すべき検知モジュールの組を決定するための選択情報を計算しているが、これには限定されない。
 一部の検知モジュールが連携し、これらの検知モジュールにより生成した乱数から選択情報を計算してもよい。
 具体的には、n個の検知モジュールのうちの一部の検知モジュール(ここでは、m個の検知モジュールとする。mは、nより小さい整数である。)がそれぞれ、乱数r1 、r2 、・・・、rm を生成する。生成されたm個の乱数r1 、r2 、・・・、rm を合計して合計値を算出し、算出した合計値について、Indexの最大値による法を取り、得られた値を選択情報として計算する。
 選択情報= (r1 +r2 +・・・+rm ) mod Indexの最大値
 ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 (4)上記実施の形態4では、全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数から選択情報を計算しているが、これには限定されない。
 全ての検知モジュール及び保護制御モジュール120が連携し、それぞれが送信した乱数から選択情報を計算するとしてもよい。
 具体的には、n個の全ての検知モジュールがそれぞれ乱数r1 、r2 、・・・、rn を生成し、保護制御モジュールが乱数Rを生成し、生成された(n+1)個の乱数R、r1 、r2 、・・・、rn を合計して合計値を算出し、算出した合計値を用いて、選択すべき検知モジュールの組を決定するための選択情報を計算してもよい。
 選択情報= (R+r1 +r2 +・・・+rn ) mod (Indexの最大値)
 ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 また、n個の検知モジュールのうちのm個の検知モジュールがそれぞれ乱数r1 、r2 、・・・、rm を生成し、保護制御モジュールが乱数Rを生成し、生成された(m+1)個の乱数R、r1 、r2 、・・・、rm を合計して合計値を算出し、算出した合計値を用いて、選択すべき検知モジュールの組を決定するための選択情報を計算してもよい。
 選択情報= (R+r1 +r2 +・・・+rm ) mod (Indexの最大値)
 ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 (5)上記実施の形態4では、全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数から選択情報を計算しているが、これには限定されない。
 保護制御モジュール120と各検知モジュールが共有する秘密のアルゴリズムを用いて、選択情報を決定するとしてもよい。
 例えば、保護制御モジュール120は、1個の乱数Rを生成し、生成した乱数Rに、保護制御モジュール120が秘密に保持している鍵Kを用いて、鍵付きハッシュ関数KeyedHashによる演算を施して、ハッシュ値Hを算出する。
 H=KeyedHash(K、R)
 ここで、KeyedHash(A、B)は、鍵Aを用いて、値Bに鍵付きハッシュ関数による演算を施して、得られたハッシュ値を示す。
 また、n個の全ての検知モジュールも同様にして、それぞれ、1個の乱数ri を生成し、生成した乱数に、検知モジュールが秘密に保持している鍵ki を用いて、鍵付きハッシュ関数KeyedHashによる演算を施して、ハッシュ値hi を算出する。
 hi =KeyedHash(ki 、ri )  (i=1、2、・・・、n)
 こうして、(n+1)個のハッシュ値H、h1 、h2 、・・・、hn が算出される。
 次に、算出された(n+1)個の乱数を合計して合計値を算出し、算出した合計値について、Indexの最大値による法を取り、得られた値を選択情報として計算する。
 選択情報= (H+h1 +h2 +・・・+hn ) mod (Indexの最大値)
 ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 なお、n個の全ての検知モジュールではなく、n個の検知モジュールのうちのm個の検知モジュールを用いて、選択情報を計算してもよい。
 選択情報= (H+h1 +h2 +・・・+hm ) mod (Indexの最大値)
 (6)上記実施の形態4では、すべての検知モジュールが連携して、すべての検知モジュールが送信した乱数から選択情報を計算しているが、これには、限定されない。
 機器100のIDを用いて、選択情報を生成するとしてもよい。機器100のIDとは、例えば、機器100の製造番号である。
 例えば、次のようにして選択情報を計算してもよい。
 選択情報 = (機器100の製造番号) mod (Indexの最大値)
 ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 これにより、攻撃者が一台の攻撃の対象機器を解析することで、解析した対象機器がどのIndexを選択しているかを知ったとしても、他の機器は、その対象機器が有するIDとは、別のIDを有しているので、他の機器により用いられる選択情報は、対象機器により用いられる選択情報と異なり、対象機器の解析で知った選択情報を、他の機器において用いることはできない。こうして、他の機器への攻撃を防止することができる。
 (7)上記実施の形態4では、すべての検知モジュールが連携して、すべての検知モジュールが送信した乱数から選択情報を計算しているが、これには限定されない。
 機器100の時刻情報を用いて、選択情報を計算するとしてもよい。ここで、機器100の時刻情報は、一例として、年月日時分秒から構成される。
 例えば、次のようにして選択情報を計算してもよい。
 選択情報 = (年月日時分秒) mod (Indexの最大値)
 ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 また、次のようにして選択情報を計算してもよい。
 選択情報 = Hash(年月日時分秒) mod (Indexの最大値)
 ここで、選択情報が「0」となる場合には、Indexの最大値を選択情報とする。
 (8)上記実施の形態4では、全ての検知モジュールが連携して、全ての検知モジュールが送信した乱数から選択情報を計算しているが、これには、限定されない。
 管理装置200がIndexを指定するとしてもよい。保護制御モジュール120はステップS2203で検知の実行を検知モジュールに通知しているが、検知モジュールへの通知に代えて、検知の実行を管理装置200へ通知する。管理装置200の判断部210は、保護制御モジュール120から検知実行の通知を受信すると、指示生成部503は、モジュール選択部504へモジュールを選択するように指示する。モジュール選択部504は、対応表からIndexを選択し、選択したIndexを指示生成部503へ送信する。指示生成部503は、モジュール選択部504から受信したIndexを、送信部502を介して、保護制御モジュール120へ送信する。
 保護制御モジュール120は、Indexを受け取り、受け取ったIndexに対応する検知モジュール識別子の組を選択する。
 (9)上記実施の形態4では、ステップS2208において、保護制御モジュール120は各検知モジュールからIndexを受信し、Indexに基づき検知モジュールを選択する。このとき、保護制御モジュール120が複数の検知モジュールから受信した全てのIndexが完全に一致しない場合、言い換えると、一つでも異なるIndexが存在する場合、いずれかの検知モジュールが不正動作を行っていると判断し、保護制御モジュール120が判断部210へ通知するとしてもよい。
 (10)上記実施の形態4では、ステップS2209からS2211において、保護制御モジュール120は、選択情報に基づいて選択した検知モジュールへ検証基データを送信する。
 このとき、保護制御モジュール120が、選択情報に基づいて選択した検知モジュールへ検証基データを送信しなかった場合に、検知モジュールは、保護制御モジュール120が改ざんされていると判断し、判断部210に通知するとしてもよい。ここで、検知モジュールは、選択情報を知っているので、検知モジュールが対応表330を保持しているようにしておけば、検知モジュールは、選択情報に基づいて選択された検知モジュールを知ることができる。従って、当該検知モジュールが選択されている場合に、当該検知モジュールが、検証基データを受信しなかったとき、保護制御モジュール120が、選択情報に基づいて選択した検知モジュールへ検証基データを送信しなかったことを知ることができる。
 また、選択情報に基づいて選択した検知モジュールとは異なる検知モジュールに送信した場合に、保護制御モジュール120が改ざんされていると判断してもよい。ここで、検知モジュールは、選択情報を知っているので、検知モジュールが対応表330を保持しているようにしておけば、検知モジュールは、選択情報に基づいて選択された検知モジュールを知ることができる。従って、当該検知モジュールが選択されていない場合に、当該検知モジュールが、検証基データを受信したとき、保護制御モジュール120が、選択情報に基づいて選択した検知モジュールへ検証基データを送信しなかったことを知ることができる。
 また、検知モジュールは、ステップS2207で選択情報を送信後、一定時間内に保護制御モジュール120からアプリ識別情報、分割データ及び検証基データを受信しなかった場合に、保護制御モジュール120が改ざんされていると判断してもよい。
 (11)上記各実施の形態と、上記変形例(1)を組み合わせて実施するとしてもよい。上記変形例(1)では、相互監視処理を実行するため、検知処理後に各検知モジュールが
不正動作を行っているか否かの判定ができる。一方、上記実施の形態では、相互監視処理を実行しないため、機器100の処理を軽くすることができる。相互監視処理を実行するかの切り替えは、定期的に切り替えてもよいし、アプリによって異なるとしてもよいし、管理装置200から切り替えの指示をするとしてもよいし、機器100内部の処理の状況を鑑みて切り替えるとしてもよい。また、相互監視処理を実行する場合には、ステップS2003ですべての検知モジュールを選択するとしてもよい。
 (12)上記の各モジュールは、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるモジュールであってもよいし、オペレーティングシステムから呼ばれるドライバプログラムであってもよいし、アプリケーションプログラムであってもよい。
 (13)上記の実施の形態2~5においては、情報処理装置である機器100内において、複数の検知モジュール及び保護制御モジュールが動作するとしているが、これには限定されない。
 機器100内において、保護対象のコンピュータプログラムと、前記コンピュータプログラムを保護する保護制御モジュールとが動作し、機器100とは別の1台の検知装置において、複数の検知モジュールが動作し、これらの複数の検知モジュールが機器100内の保護制御モジュールを監視するとしてもよい。ここで、機器100と前記検知装置とは、ネットワークを介して接続されている。
 ここで、検知装置は、1台に限定されない。複数台の検知装置が機器100とネットワークを介して接続されているとしてもよい。検知装置の台数は、検知モジュールの数に等しい。各検知装置において、1個の検知モジュールが動作する。1台の検知装置の検知モジュールが機器100内の保護制御モジュールを監視する。この結果、複数台の検知装置において動作する複数の検知モジュールが機器100内の保護制御モジュールを監視することとなる。
 (14)上記の実施の形態2~5においては、情報処理装置である機器100内において、アプリから複数の分割データを生成し、閾値秘密分散法によりアプリから複数の分散データを生成し、又は、暗号化アプリを復号する復号プロセスは、複数の復号サブプロセスから構成され、各復号サブプロセスにおける入力データ及び出力データを用いるとしている。しかし、これには限定されない。
 保護制御モジュールは、コンピュータプログラムであるので、保護制御モジュールから複数の分割データを生成してもよい。また、閾値秘密分散法により保護制御モジュールから複数の分散データを生成してもよい。また、保護制御モジュールを暗号化し、暗号化保護制御モジュールを復号する復号プロセスは、複数の復号サブプロセスから構成され、各復号サブプロセスにおける入力データ及び出力データを用いるとしてもよい。
 これらの場合に、検知モジュールは、保護制御モジュールから生成された複数の分割データを用いて、保護制御モジュールの改ざんを検出する。また、検知モジュールは、保護制御モジュールから生成された複数の分散データを用いて、保護制御モジュールの改ざんを検出する。また、暗号化された保護制御モジュールを復号する復号プロセスにおいて、各復号サブプロセスにおける入力データ及び出力データを用いて、保護制御モジュールの改ざんを検出する。
 (15)実施の形態2と実施の形態3とを組合せてもよい。この場合において、検証可能秘密分散法ではなく、しきい値k、分配数dの(k,d)秘密分散法を用いて、分割データを生成する。検証基データの検証値は分割データのハッシュ値を用いる。
 (16)情報処理装置としての機器100は、具体的には、パーソナルコンピュータ、BD再生装置、DVD再生装置、BD記録装置、DVD記録装置、デジタル放送受信再生装置、デジタル放送記録装置、携帯電話機などである。
 (17)次のようにしてもよい。
 本発明の一態様の情報処理装置は、アプリケーションを保護する機能を有する保護制御モジュールと、n個の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、暗号化された前記アプリケーションが入力データとして入力され、前記入力データを復号し、復号結果を出力データとして出力する復号手段と、前記出力データを少なくともd(d≧2)個の分割データを分割する分割手段と、n個の前記検知モジュールのうちd個の検知モジュールを選択する選択手段と、分割されたd個の分割データを、前記選択手段で選択した前記d個の検知モジュールに分配する分配手段と、前記d個の検知モジュールのそれぞれは、分割された分割データ、前記入力データと前記復号手段が正常動作を行った場合に期待される分割データの値とに基づいて生成された検証データ、及び、入力データを用いて、分配された分割データが正しいか否かを判断する検証手段を備えることを特徴とする。
 本発明によれば、各検知モジュールは、保護制御モジュール自体のデータを用いた検証を行わず、保護制御モジュールが実行するアプリケーションの復号処理を検証するので、各検知モジュールに対して、保護制御モジュールが有する秘匿データが漏洩するのを防止することができる。
 また、本発明によれば、検知を実行しないn-d個の検知モジュールが攻撃されたとしても保護制御モジュールに対する検知処理に影響せず、保護制御モジュールが改ざんされているかを検証することができる。
 ここで、前記分割手段は、前記d個の分割データのうち、k個の分割データを用いるとはじめて前記出力データを復元できるように、前記d個の分割データを生成してもよい。
 この構成によると、前記d個の検知モジュールのうちのk個の検知モジュールが保持する分割データから出力データが復元できるため、前記出力データが入力データから正しく復号されたことを確認することができる。
 ここで、前記選択手段は、所定の情報に基づいて、所定の情報と検知モジュールの識別情報との対応表から検知モジュールを選択してもよい。
 この構成によると、保護制御モジュールは対応表を用いて検知モジュールを選択することができる。
 ここで、前記所定の情報は、前記分配手段で分配するごとに毎回変更されるとしてもよい。
 この構成によると、所定の情報は分配するごとに毎回変更することができる。これにより、保護制御モジュールが選択する検知モジュールを毎回変更することで、恣意的に分割データの送信先を決定できない。
 ここで、前記所定の情報は、前記複数の検知モジュールが保持する部分情報を用いて生成されるとしてもよい。
 この構成によると、保護制御モジュールが選択する検知モジュールを検知モジュールが決定することで、保護制御モジュールが恣意的に決定できない。
 ここで、前記検知モジュールのそれぞれは、乱数を生成し、他の検知モジュールへ送信する送信手段を備え、前記保持する部分情報は、前記検知モジュールが生成した乱数であるとしてもよい。
 この構成によると、保護制御モジュールが選択する検知モジュールを検知モジュールが乱数を用いて決定することで、保護制御モジュールが恣意的に決定できない。
 ここで、前記情報処理装置は、管理装置と接続し、前記所定の情報は前記管理装置から受信するとしてもよい。
 この構成によると、保護制御モジュールが選択する検知モジュールを管理装置が決定することで、保護制御モジュールが恣意的に決定できない。
 また、本発明の別の態様の情報処理装置は、アプリケーションを保護する機能を有する保護制御モジュールと、n個の検知モジュールとを含む情報処理装置であって、前記保護制御モジュールは、暗号化された前記アプリケーションプログラムに対し、d個の処理工程から成る復号処理を実行する復号手段と、n個の前記検知モジュールのうちd個の検知モジュールを選択する選択手段と、前記d個の処理工程それぞれの出力データであるd個の被検証データを、前記d個の検知モジュールへ分配する分配手段とを備え、前記複数の検知モジュールのそれぞれは、分配された被検証データ、前記被検証データに対応する処理工程への入力データ、及び、前記入力データと前記復号手段が正常動作を行った場合に期待される出力データとに基づいて生成された検証データを用いて、前記被検証データが正しいか否かを判断する検証手段を備えることを特徴とする。
 この構成によると、各検知モジュールは、保護制御モジュール自体のデータを用いた検証を行わず、保護制御モジュールが実行するアプリケーションの復号処理を検証するので、各検知モジュールに対して、保護制御モジュールが有する秘匿データが漏洩するのを防止することができる。
 また、本発明によれば、複数の検知モジュールが、それぞれ異なる処理工程についての検証を行うので、各検知モジュールに対して、アプリケーションのデータが漏洩するのを防止することができる。
 また、本発明によれば、復号処理のうち、どの処理工程が改ざんされているかを検知することもできる。
 (18)次のように構成してもよい。
 (a)本発明の別の態様は、コンピュータプログラムを保護する保護制御回路と、前記保護制御回路を監視するためのn個の検知回路と、管理装置とを含む改ざん監視システムである。
 前記保護制御回路は、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成回路と、n個の前記検知回路のうち、d個の検知回路を選択する選択回路と、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知回路へ分配する分配回路とを備える。
 d個の前記検知回路のそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御回路の改ざんを検出し、前記保護制御回路が改ざんされているか否かを示す判断結果を送信する。
 前記管理装置は、前記検知回路のそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御回路の改ざんを管理する。
 前記検知回路は、前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成し、前記保護制御回路を監視するためのn個の検知回路のうち、d個の検知回路を選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知回路へ分配する保護制御回路から1個の前記分配データを受信する受信回路と、受信した前記分配データが正しいか否かを判断する検証回路と、正しいと判断した場合に、他の検知回路へ前記分配データが正しいことを示す監視結果を送信する送信回路とを備える。前記受信回路は、他の検知回路から受信した分配データが正しいことを示す監視結果を受け取り、前記検証回路は、自身の監視結果及び受信した監視結果を用いて、前記保護制御回路が改ざんされているか否かを判断し、前記送信回路は、前記保護制御回路が改ざんされているか否かを示す判断結果を送信する。
 (b)本発明の別の態様は、保護対象コンピュータプログラムを保護する保護制御モジュールと、前記保護制御モジュールを監視するためのn個の検知モジュールと、管理装置とを含む改ざん監視システムである。
 前記保護制御モジュールは、複数のコンピュータ命令が組み合わされて構成される制御用コンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記制御用コンピュータプログラムから1個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備える。前記制御用コンピュータプログラムは、コンピュータに、前記保護対象コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成ステップと、n個の前記検知モジュールのうち、d個の検知モジュールを選択する選択ステップと、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配ステップとを実行させる。
 d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
 前記管理装置は、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御モジュールの改ざんを管理する
 前記検知モジュールは、複数のコンピュータ命令が組み合わされて構成される制御用コンピュータプログラムを記憶しているメモリ部と、前記メモリ部に記憶されている前記制御用コンピュータプログラムから1個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備える。前記制御用コンピュータプログラムは、コンピュータに、前記保護制御モジュールから1個の前記分配データを受信する受信ステップと、受信した前記分配データが正しいか否かを判断する検証ステップと、正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する送信ステップとを実行させる。前記受信ステップは、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取り、前記検証ステップは、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断し、前記送信ステップは、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する。
 (19)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
 (20)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
 また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていてもよいし、一部又は全てを含むように1チップ化されてもよい。
 また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
 さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
 (21)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
 (22)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピ
ュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
 また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
 また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
 また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
 また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
 (23)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
 本発明にかかる改ざん監視システム、保護制御モジュール及び検知モジュールは、全ての検知モジュールに検知処理を実行させるのではなく、保護制御モジュールにより選択された検知モジュールに、検知処理を実行させる。このため、保護制御モジュールにより選択されなかった検知モジュールが改ざんされ、不正に動作をしたとしても、選択された検知モジュールが改ざんされていなければ、改ざん監視システムの全体として、保護制御モジュールに対する改ざん検知処理には影響しない。こうして、保護制御モジュールが改ざんされているかを検証することができるという効果を有し、機器内部で動作するモジュール等を監視する技術として有用である。
 10、10a、10b、10c  検知システム
 10d 監視システム
 100 機器
 110、111、112、113、114 アプリ
 120、120d 保護制御モジュール
 130 検知モジュール群
 131、132、133、134、135 検知モジュール
 130d1、130d2、・・・、130dn 検知モジュール
 171 CPU
 172 EEPROM
 173 RAM
 174 NIC
 180 OS
 190 ブートローダ
 200、200d 管理装置
 210 判断部
 220、220a 検証基データ配布部
 230 通信部
 301 受信部
 302 送信部
 302d 分配部
 303 制御部
 304 復号ロード部
 305 改ざん検出部
 306 解析ツール検出部
 307 暗復号鍵保持部
 308 検証基データ保持部
 309 検証基データ生成部
 310 アプリ分割部
 310d 生成部
 311、311a 検知モジュール選択部
 311d 生成部
 401 受信部
 402 送信部
 403 制御部
 404 検証部
 405 検証基データ保持部
 501 受信部
 502 送信部
 503 指示生成部
 504 モジュール選択部
 601 受信部
 602 送信部
 603 制御部
 604 認証部
 605 証明書生成部
 606 署名秘密鍵保持部
 607 暗号鍵保持部
 608 データ分割部
 609 アプリ保持部
 610 検証基データ生成部
 611 保護制御モジュール保持部
 612 検知モジュール保持部
 621 ソフトウェア実行部

Claims (24)

  1.  コンピュータプログラムを保護する保護制御モジュールと、前記保護制御モジュールを監視するためのn個の検知モジュールと、管理装置とを含む改ざん監視システムであって、
     前記保護制御モジュールは、
     前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成手段と、
     n個の前記検知モジュールのうち、d個の検知モジュールを選択する選択手段と、
     生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配手段とを備え、
     d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出し、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信し、
     前記管理装置は、前記検知モジュールのそれぞれから前記判断結果を受信し、受信した判断結果を基にして、前記保護制御モジュールの改ざんを管理する
     ことを特徴とする改ざん監視システム。
  2.  前記改ざん監視システムは、1台の情報処理装置を含み、
     前記情報処理装置が前記保護制御モジュールとn個の前記検知モジュールとを含み、前記コンピュータプログラムを記憶しており、
     前記情報処理装置と前記管理装置とは、ネットワークを介して接続されている
     ことを特徴とする請求項1に記載の監視システム。
  3.  前記改ざん監視システムは、1台の情報処理装置及びn台の検知装置を含み、
     前記情報処理装置が前記保護制御モジュールを含み、前記コンピュータプログラムを記憶しており、
     n台の前記検知装置が、それぞれ、1個の前記検知モジュールを含み、
     前記情報処理装置とn台の前記検知装置と前記管理装置とは、ネットワークを介して接続されている
     ことを特徴とする請求項1に記載の監視システム。
  4.  コンピュータプログラムを保護する保護制御モジュールであって、
     前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成手段と、
     当該保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択する選択手段と、
     生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配手段とを備え、
     d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出する
     ことを特徴とする保護制御モジュール。
  5.  前記生成手段は、
     前記コンピュータプログラムを暗号化して生成した暗号化コンピュータプログラムを記憶している記憶手段と、
     前記暗号化コンピュータプログラムを復号してコンピュータプログラムを生成する復号手段と、
     生成された前記コンピュータプログラムを基にして、d個の前記分配データを生成する分配データ生成手段と
     を含むことを特徴とする請求項4に記載の保護制御モジュール。
  6.  前記分配データ生成手段は、前記コンピュータプログラムを構成するデータを分割してd個の前記分配データを生成する
     ことを特徴とする請求項5に記載の保護制御モジュール。
  7.  前記分配データ生成手段は、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成し、
     前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法である
     ことを特徴とする請求項5に記載の保護制御モジュール。
  8.  前記生成手段は、
     前記コンピュータプログラムを暗号化して生成した暗号化コンピュータプログラムを記憶している記憶手段と、
     前記暗号化コンピュータプログラムに、復号処理を施す過程において、d個の前記分配データを生成する復号手段とを含み、
     前記復号処理は、d個の復号サブ処理から構成され、d個の復号サブ処理を順次施すことにより、前記暗号化コンピュータプログラムの復号を行い、
     各復号サブ処理から出力される復号出力を前記分配データとする
      とを特徴とする請求項4に記載の保護制御モジュール。
  9.  前記選択手段は、n個の前記検知モジュールのうち、d個の検知モジュールの組合せと、当該組合せを識別する識別情報とを対応付けて含む対応表を保持し、前記組合せの選択に用いる選択情報を取得し、取得した選択情報に一致する識別情報に対応する組合せを前記対応表から取得し、取得し組合せに含まれる検知モジュールを選択する
     ことを特徴とする請求項4に記載の保護制御モジュール。
  10.  前記選択手段は、乱数を生成し、生成した乱数を前記選択情報とすることにより、前記選択情報を取得する
     ことを特徴とする請求項9に記載の保護制御モジュール。
  11.  前記選択手段は、前記分配手段によりd個の前記分配データを分配するごとに、前記選択情報を新たに生成する
     ことを特徴とする請求項9に記載の保護制御モジュール。
  12.  各検知モジュールは、乱数を生成し、他の全ての検知モジュールへ送信し、
     各検知モジュールは、受信した乱数及び自身が生成した乱数を用いて、選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信し、
     前記選択手段は、前記検知モジュールから前記選択情報を受信し、受信した前記選択情報を用いる
     ことを特徴とする請求項9に記載の保護制御モジュール。
  13.  保護制御モジュールの改ざんを管理する管理装置は、前記選択情報を生成し、生成した前記選択情報を前記保護制御モジュールへ送信し、
     前記選択手段は、前記管理装置から前記選択情報を受信し、受信した前記選択情報を用いる
     ことを特徴とする請求項9に記載の保護制御モジュール。
  14.  前記コンピュータプログラムは、前記保護制御モジュールの保護の対象であるアプリケーションプログラム、又は、前記保護制御モジュールの動作手順を示すプログラムである
     ことを特徴とする請求項4に記載の保護制御モジュール。
  15.  前記保護制御モジュールは、情報処理装置に含まれ、
     前記情報処理装置は、前記コンピュータプログラムを記憶している
     ことを特徴とする請求項4に記載の保護制御モジュール。
  16.  コンピュータプログラムを保護する保護制御モジュールを監視する検知モジュールであって、
     前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成し、前記保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する保護制御モジュールから1個の前記分配データを受信する受信手段と、
     受信した前記分配データが正しいか否かを判断する検証手段と、
     正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する送信手段とを備え、
     前記受信手段は、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取り、
     前記検証手段は、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断し、
     前記送信手段は、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する
     ことを特徴とする検知モジュール。
  17.  前記検証手段は、
     自身の監視結果及び受信した監視結果を用いて、自身を含め、d個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断し、
     d個の検知モジュールがそれぞれ受信した分配データが正しいと決定した場合に、前記保護制御モジュールが改ざんされていないと決定し、
     d個の検知モジュールのうち、少なくとも1個の検知モジュールが受信した分配データが正しくないと決定した場合に、前記保護制御モジュールが改ざんされていると決定する
     ことを特徴とする請求項16に記載の検知モジュール。
  18.  前記保護制御モジュールは、前記コンピュータプログラムを構成するデータから、検証可能閾値秘密分散法を用いて、d個の前記分配データを生成し、前記検証可能閾値秘密分散法は、dより小さいk個以上のどの分配データを用いても、元の前記コンピュータプログラムを復元することができるように、前記コンピュータプログラムを分散する秘密分散法であり、
     前記検証手段は、
     自身の監視結果及び受信した監視結果を用いて、自身を含め、少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定したか否かを判断し、
     少なくともk個の検知モジュールがそれぞれ受信した分配データが正しいと決定した場合に、前記保護制御モジュールが改ざんされていないと決定し、
     (d-k+1)個以上の検知モジュールがそれぞれ受信した分配データが正しくないと決定した場合に、前記保護制御モジュールが改ざんされていると決定する
     ことを特徴とする請求項16に記載の検知モジュール。
  19.  n個の前記検知モジュール及び前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶している
     ことを特徴とする請求項16に記載の検知モジュール。
  20.  前記検知モジュールは、検知装置に含まれ、
     前記保護制御モジュールは、情報処理装置に含まれ、前記情報処理装置は、前記コンピュータプログラムを記憶している
     ことを特徴とする請求項16に記載の検知モジュール。
  21.  コンピュータプログラムを保護する保護制御モジュールを制御するための制御方法であって、
     前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成ステップと、
     当該保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択する選択ステップと、
     生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配ステップとを含み、
     d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出する
     ことを特徴とする制御方法。
  22.  保護対象コンピュータプログラムを保護する保護制御モジュールを制御するための制御用プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
     コンピュータに、
     前記保護対象コンピュータプログラムを基にして、nより小さいd個の分配データを生成する生成ステップと、
     当該保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択する選択ステップと、
     生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する分配ステップとを実行させ、
     d個の前記検知モジュールのそれぞれは、受信した前記分配データが正しいか否かを判断して、当該保護制御モジュールの改ざんを検出する
     制御用プログラムを記録している記録媒体。
  23.  コンピュータプログラムを保護する保護制御モジュールを監視する検知モジュールを制御する制御方法であって、
     前記コンピュータプログラムを基にして、nより小さいd個の分配データを生成し、前記保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する保護制御モジュールから1個の前記分配データを受信する受信ステップと、
     受信した前記分配データが正しいか否かを判断する検証ステップと、
     正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する送信ステップとを備え、
     前記受信ステップは、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取り、
     前記検証ステップは、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断し、
     前記送信ステップは、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する
     ことを特徴とする制御方法。
  24.  保護対象コンピュータプログラムを保護する保護制御モジュールを監視する検知モジュールを制御する制御用プログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
     コンピュータに、
     前記保護対象コンピュータプログラムを基にして、nより小さいd個の分配データを生成し、前記保護制御モジュールを監視するためのn個の検知モジュールのうち、d個の検知モジュールを選択し、生成したd個の前記分配データを、それぞれ、選択したd個の前記検知モジュールへ分配する保護制御モジュールから1個の前記分配データを受信する受信ステップと、
     受信した前記分配データが正しいか否かを判断する検証ステップと、
     正しいと判断した場合に、他の検知モジュールへ前記分配データが正しいことを示す監視結果を送信する送信ステップとを実行させ、
     前記受信ステップは、他の検知モジュールから受信した分配データが正しいことを示す監視結果を受け取り、
     前記検証ステップは、自身の監視結果及び受信した監視結果を用いて、前記保護制御モジュールが改ざんされているか否かを判断し、
     前記送信ステップは、前記保護制御モジュールが改ざんされているか否かを示す判断結果を送信する
     制御用プログラムを記録している記録媒体。
PCT/JP2011/005858 2010-10-28 2011-10-19 改ざん監視システム、保護制御モジュール及び検知モジュール WO2012056656A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US13/513,664 US8769312B2 (en) 2010-10-28 2011-10-19 Tampering monitoring system, protection control module, and detection module
CN201180004848.6A CN102640161B (zh) 2010-10-28 2011-10-19 篡改监视系统、保护控制模组及检测模组
JP2012515039A JP5723361B2 (ja) 2010-10-28 2011-10-19 改ざん監視システム、保護制御モジュール及び検知モジュール
EP11835803.5A EP2634718B1 (en) 2010-10-28 2011-10-19 Tamper monitoring system, protection control module and detection module

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010-241986 2010-10-28
JP2010241986 2010-10-28

Publications (1)

Publication Number Publication Date
WO2012056656A1 true WO2012056656A1 (ja) 2012-05-03

Family

ID=45993404

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/005858 WO2012056656A1 (ja) 2010-10-28 2011-10-19 改ざん監視システム、保護制御モジュール及び検知モジュール

Country Status (5)

Country Link
US (1) US8769312B2 (ja)
EP (1) EP2634718B1 (ja)
JP (1) JP5723361B2 (ja)
CN (1) CN102640161B (ja)
WO (1) WO2012056656A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015068220A1 (ja) * 2013-11-06 2015-05-14 三菱電機株式会社 ソフトウェア更新装置及びソフトウェア更新プログラム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2947814B1 (en) * 2013-01-17 2018-03-14 Nippon Telegraph and Telephone Corporation Tampering detection device, tampering detection method, and program
US9698991B2 (en) 2013-03-15 2017-07-04 Ologn Technologies Ag Systems, methods and apparatuses for device attestation based on speed of computation
US10177915B2 (en) 2013-03-15 2019-01-08 Ologn Technologies Ag Systems, methods and apparatuses for device attestation based on speed of computation
US9455998B2 (en) 2013-09-17 2016-09-27 Ologn Technologies Ag Systems, methods and apparatuses for prevention of relay attacks
JP6269155B2 (ja) * 2014-02-24 2018-01-31 富士通株式会社 配信方法、端末装置、及び配信システム
JP5860556B1 (ja) * 2015-02-06 2016-02-16 日本電信電話株式会社 不整合検知方法、不整合検知システム、不整合検知装置、およびプログラム
WO2020136837A1 (ja) * 2018-12-27 2020-07-02 三菱電機株式会社 アタックツリー生成装置、アタックツリー生成方法およびアタックツリー生成プログラム
TWI772648B (zh) * 2019-06-03 2022-08-01 銓鴻資訊有限公司 基於集體驗證的部分資料驗證方法
CN111356027A (zh) * 2020-03-25 2020-06-30 山东云缦智能科技有限公司 一种新型iptv监测装置
CN112489309B (zh) * 2020-11-30 2023-04-21 佛山市顺德区美的电子科技有限公司 家用电器租赁控制方法、装置、家用电器及存储介质
CN113205766B (zh) * 2021-04-01 2022-06-07 深圳市时代华影科技股份有限公司 Led显示屏及数据显示控制方法、屏幕系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (ja) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk 改ざん検知機能付きコンピュータシステム
JP3056732B1 (ja) 1999-04-09 2000-06-26 コナミ株式会社 コンピュ―タシステム、コンピュ―タプログラムの実行方法及びコンピュ―タプログラム記録媒体
WO2008099682A1 (ja) 2007-02-16 2008-08-21 Panasonic Corporation 分散情報配布装置、保持装置、認証局装置及びシステム
WO2009118800A1 (ja) 2008-03-28 2009-10-01 パナソニック株式会社 ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム
WO2011033773A1 (ja) * 2009-09-17 2011-03-24 パナソニック株式会社 情報処理装置、管理装置、不正モジュール検知システム、不正モジュール検知方法、不正モジュール検知プログラムを記録している記録媒体、管理方法、管理プログラムを記録している記録媒体および集積回路

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2837446B2 (ja) 1989-07-21 1998-12-16 カヤバ工業株式会社 二段作動ステーダンパ
US7428751B2 (en) * 2002-12-05 2008-09-23 Microsoft Corporation Secure recovery in a serverless distributed file system
ES2363517T3 (es) * 2004-04-02 2011-08-08 Panasonic Corporation Sistema de detección de contenido no autorizado.
US8300826B2 (en) 2007-02-02 2012-10-30 Nec Corporation Distributed information generation apparatus, reconstruction apparatus, reconstruction result verification apparatus, and secret information distribution system, method, and program
US8544093B2 (en) * 2009-02-16 2013-09-24 Panasonic Corporation Illegal module identifying device, information processing device, illegal module identifying method, illegal module identifying program, integrated circuit, illegal module disabling system, and illegal module disabling method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (ja) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk 改ざん検知機能付きコンピュータシステム
JP3056732B1 (ja) 1999-04-09 2000-06-26 コナミ株式会社 コンピュ―タシステム、コンピュ―タプログラムの実行方法及びコンピュ―タプログラム記録媒体
WO2008099682A1 (ja) 2007-02-16 2008-08-21 Panasonic Corporation 分散情報配布装置、保持装置、認証局装置及びシステム
WO2009118800A1 (ja) 2008-03-28 2009-10-01 パナソニック株式会社 ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム
WO2011033773A1 (ja) * 2009-09-17 2011-03-24 パナソニック株式会社 情報処理装置、管理装置、不正モジュール検知システム、不正モジュール検知方法、不正モジュール検知プログラムを記録している記録媒体、管理方法、管理プログラムを記録している記録媒体および集積回路

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
See also references of EP2634718A4
TATSUAKI OKAMOTO; HIROSUKE YAMAMOTO: "Gendai Ango", 1997, SANGYOTOSHO INC.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015068220A1 (ja) * 2013-11-06 2015-05-14 三菱電機株式会社 ソフトウェア更新装置及びソフトウェア更新プログラム
JP6053950B2 (ja) * 2013-11-06 2016-12-27 三菱電機株式会社 ソフトウェア更新装置及びソフトウェア更新プログラム

Also Published As

Publication number Publication date
EP2634718A1 (en) 2013-09-04
JPWO2012056656A1 (ja) 2014-03-20
EP2634718B1 (en) 2020-08-19
JP5723361B2 (ja) 2015-05-27
CN102640161B (zh) 2015-10-21
EP2634718A4 (en) 2016-06-15
US8769312B2 (en) 2014-07-01
US20120246490A1 (en) 2012-09-27
CN102640161A (zh) 2012-08-15

Similar Documents

Publication Publication Date Title
JP5723361B2 (ja) 改ざん監視システム、保護制御モジュール及び検知モジュール
JP5960678B2 (ja) 改ざん監視システム、管理装置、保護制御モジュール及び検知モジュール
JP6329970B2 (ja) 関連データを有するポリシー施行
KR101135145B1 (ko) 보안용 멀티미디어 카드, 디지털 컨텐츠 사용을 위한 권리객체 발급 방법 및 장치
US8683214B2 (en) Method and device that verifies application program modules
JP5681028B2 (ja) 改ざん監視システム、管理装置及び管理方法
US20050283662A1 (en) Secure data backup and recovery
CN105117635B (zh) 一种本地数据的安全保护系统和方法
JP5097130B2 (ja) 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
CN103348623A (zh) 终端装置、验证装置、密钥分发装置、内容再现方法、密钥分发方法以及计算机程序
Lee et al. Secure Data Deletion for USB Flash Memory.
US20050027991A1 (en) System and method for digital rights management
WO2010061561A1 (ja) 監視システム、プログラム実行装置、監視プログラム、記録媒体及び集積回路
CN100583174C (zh) 使用网上银行系统安全终端实现数据安全的处理方法
CN101174941B (zh) 一种移动终端文件离线数字版权保护方法及装置
CN100504896C (zh) 基于安全芯片的软件保护方法和系统
TW201303814A (zh) 內容發送系統、內容發送子系統及再生裝置
Dhanasekaran et al. Payment security mechanism of intelligent mobile terminal
JP4986926B2 (ja) 暗号化通信システム
JP2007128240A (ja) 分散ネットワークストレージ
Giessmann Specification of the Security Target TCOS Identity Card Version 1.1 Release 1/P60D144 Version: 1.1. 1/20121011
Autor et al. Specification of the Security Target TCOS Identity Card Version 1.0 Release 2/SLE78CLX1440P Version: 1.0. 2/20120712
Giessmann Specification of the Security Target TCOS Identity Card Version 1.1 Release 1-PI/P60D144 Version: 1.1. 1/20141124
Giessmann Specification of the Security Target TCOS Identity Card Version 1.0 Release 1/P5CD128/145-FSV02 Version: 1.0. 1/20110114
CN104462875A (zh) 一种移动终端文件离线数字版权保护方法及装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201180004848.6

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2012515039

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 13513664

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2011835803

Country of ref document: EP

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

Ref document number: 11835803

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE