WO2009118801A1 - ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム - Google Patents
ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム Download PDFInfo
- Publication number
- WO2009118801A1 WO2009118801A1 PCT/JP2008/003208 JP2008003208W WO2009118801A1 WO 2009118801 A1 WO2009118801 A1 WO 2009118801A1 JP 2008003208 W JP2008003208 W JP 2008003208W WO 2009118801 A1 WO2009118801 A1 WO 2009118801A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- update
- module
- information
- modules
- update module
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Definitions
- a device having a tamper-resistant module so that an application having secret data such as an authentication key is not analyzed by a malicious third party (hereinafter referred to as “attacker”).
- the tamper-resistant module is implemented on hardware as hardware.
- software that can be easily updated to respond flexibly to new attack methods It is desirable to protect the application with Application protection by software includes, for example, falsification verification using a hash value, a decryption load function that encrypts and stores an application when the application is not used, and decrypts and loads it into a memory only when the application is used.
- software that protects the application hereinafter referred to as “protection control module” itself can be attacked by an attacker. If the protection control module is tampered with, the application will be exposed to attacker attacks.
- Patent Document 1 Japanese Patent No. 3056732 (pages 4-6, FIG. 2) Tatsuaki Okamoto, Hiroshi Yamamoto, "Contemporary Cryptography", Industrial Books (1997) ITU-T Recommendation X.509 (1997 E): Information Technology-Open Systems Interconnection-The Directory: Authentication Framework, 1997
- update module a module responsible for updating the protection control module
- update module a module responsible for updating the protection control module
- the protection control module is not updated correctly, and there is a possibility that confidential data included in the application may be leaked.
- module for detecting falsification of the update module it becomes possible to detect falsification of the update module.
- the module itself may also be falsified, it does not lead to a fundamental solution.
- An object of the present invention is to provide a software update device that prevents an unauthorized operation by a tampered update module.
- a software updating apparatus updates a predetermined application, a protection control module that verifies whether the predetermined application has been tampered with, and the protection control module.
- An update module group including a plurality of update modules that receive the protection control module for updating from an external server and update the protection control module, and each of the plurality of update modules included in the update module group is activated simultaneously
- the verification target is selected and verified whether any illegal operation is performed, and one of the plurality of update modules is illegal. If it is verified that there is a possibility of performing an action, it is included in the update module group.
- Other update module characterized in that said disable verified updating module at the possibility of an unauthorized operation.
- each of the plurality of update modules included in the update module group includes all the update modules that are activated at the same time as at least one other update module to be verified.
- the verification target is selected to verify whether the unauthorized operation is performed, it is verified whether the unauthorized operation is performed on all the update modules that are activated at the same time. Since it is possible to verify all the update modules that are running at the same time, if any update module has been tampered with, it can be found. If there is at least one normal update module, it is tampered with by that update module. Since the update module can be invalidated, the update module that has been tampered with can be eliminated, and the security of the entire update module can be ensured.
- an unauthorized operation for example, updating to an unauthorized protection control module
- the altered update module can be prevented, so that the protection control module becomes an unauthorized protection control module via the altered update module.
- the update can be prevented, and the attack to the predetermined application by the unauthorized protection control module can be prevented. Therefore, it is possible to reduce the risk of leakage of confidential data included in the application.
- the update module has an invalidation function, it is not necessary to provide a means for invalidating separately, and a module that has been tampered with a simple configuration can be eliminated.
- the other update module further includes an access control module that stores predetermined information for invalidating each of the plurality of update modules included in the update module group and is encrypted with a predetermined encryption key. May access the external server, obtain a decryption key corresponding to the predetermined encryption key from the external server, decrypt the access control module using the obtained decryption key, and perform the unauthorized operation. Predetermined information for invalidating an update module verified to be present is acquired from the access control module, and the update module verified to possibly perform the unauthorized operation based on the predetermined information is invalidated You may do that.
- the access control module stores predetermined information for invalidating each of the plurality of update modules, it has been verified that any of the plurality of update modules may perform an illegal operation. In this case, it is easy to specify predetermined information for invalidating the update module, and the process of invalidating the update module can be easily performed.
- the access control module is encrypted with a predetermined encryption key, it is possible to prevent predetermined information from leaking outside. Therefore, for example, it is possible to prevent predetermined information for invalidating an update module verified as having the possibility of performing an unauthorized operation from being rewritten in advance and remaining without being invalidated. Can do.
- the other update modules acquire the decryption key from the external server, the decryption key is not leaked by an attack on the software update device, and the confidentiality of the decryption key can be ensured.
- the other update module decrypts the access control module using the acquired decryption key, and sends the predetermined information for invalidating the update module verified to possibly perform an illegal operation to the access control module. Since the update module is invalidated based on the predetermined information, the predetermined information can be used for invalidation while ensuring the confidentiality of the predetermined information, and an illegal operation may be performed. The verified update module can be reliably invalidated without remaining invalidated.
- it further includes an access control module storing predetermined information for invalidating each of the plurality of update modules included in the update module group, and the predetermined information includes an encryption key different for each update module.
- the other update module accesses the external server, and decrypts corresponding to an encryption key obtained by encrypting predetermined information related to the update module verified as having the possibility of performing the unauthorized operation.
- a key is acquired from the external server, and predetermined information related to the update module verified as having the possibility of performing the unauthorized operation is decrypted using the acquired decryption key, and based on the decrypted predetermined information
- the update module verified as having the possibility of performing the unauthorized operation may be invalidated.
- the predetermined information stored in the access control module is encrypted with a different encryption key for each update module, when a common decryption key is used for all the update modules in the predetermined information, when the decryption key is leaked, there is a risk that predetermined information about all the update modules will be leaked, whereas damage when the decryption key is leaked can be minimized. Therefore, the predetermined information corresponding to the update module verified as having the possibility of performing an unauthorized operation is rewritten in advance, and the risk that the update module remains without being invalidated can be reduced.
- the predetermined information may be storage location information of each of a plurality of update modules included in the update module group.
- the other update module may be invalidated by erasing the entire update module verified as having the possibility of performing the unauthorized operation based on the storage location information.
- the storage location information indicates an erased portion that is erased when the update module is invalidated, and the other update module may perform the unauthorized operation based on the storage location information. It may be invalidated by erasing the erased portion of the update module verified as being present.
- the storage location information indicates an erasure part that is erased when the update module is invalidated. Therefore, when invalidating an update module that has been verified to have an illegal operation, the update is performed. Compared with the case where all the modules are invalidated, it is possible to reduce the processing load when invalidating the update module while disabling the activation of the update module.
- the storage location information indicates a code portion that is erased when the update module is invalidated, and the other update module may perform the unauthorized operation based on the storage location information. It may be invalidated by deleting the code part of the update module verified as being present.
- the storage location information indicates a code portion that is erased when the update module is invalidated, so that the update is performed when invalidating the update module that has been verified to have an illegal operation. Compared with the case where all the modules are invalidated, it is possible to reduce the processing load when invalidating the update module while disabling the activation of the update module.
- FIG. 1 is an overall configuration diagram of a software update system 1000.
- FIG. 3 is a functional block diagram of an update module 131.
- FIG. 3 is a functional block diagram of an update software distribution module 210.
- FIG. 2 is a functional block diagram of a protection control module 120.
- FIG. 3 is a functional block diagram of an access control module 140.
- FIG. 3 is a functional block diagram of an access information acquisition key distribution module 220.
- FIG. 2 is a diagram illustrating a hardware configuration of the device 100.
- FIG. 3 is a diagram illustrating a software hierarchy of the device 100.
- FIG. 3 is a flowchart showing an overall operation flow of the software update system 1000.
- 3 is a diagram schematically showing a key embedded in the device 100.
- 10 is a flowchart showing an operation flow of the software update system 1000 when the update software distribution module 210 authenticates the respective update modules 131, 132, and 133. It is a flowchart which shows the flow of operation
- FIG. 1 is an overall configuration diagram of a software updating system 1000 to which a software updating apparatus according to the present invention is applied in Embodiment 1 of the present invention.
- the software update system 1000 includes a device 100 and an update server 200, and the device 100 is connected to the update server 200 via a network.
- Device 100 purchases and plays content such as music and video from a content distribution server via a network, accesses a financial institution system, and performs net banking (deposit balance inquiry and account transfer).
- Etc. is a data processing apparatus that provides various functions using the network to the user.
- the device 100 includes application software (hereinafter referred to as “applications”) 110 and 111, a protection control module 120, an update module group 130, and an access control module 140.
- applications application software
- protection control module 120 protection control module
- update module group 130 update module group 130
- access control module 140 access control module
- the applications 110 and 111 are software that provides a function using a network to a user who uses the device 100.
- content such as music and video is purchased from a content distribution server (not shown) on the network.
- the applications 110 and 111 have confidential data such as an authentication key for authenticating with a content distribution server or a financial institution system. This confidential data needs to be protected from being illegally used by being extracted from the app by a malicious third party (hereinafter referred to as “attacker”).
- attacker a malicious third party
- the protection control module 120 is a module having a function for protecting the applications 110 and 111 so that the attackers analyze the applications 110 and 111 and do not extract confidential data such as an authentication key.
- Functions to protect the application include, for example, a decryption load function that encrypts and saves the application when it is not used, and decrypts and loads it into the memory only when the application is used, or whether the application has been tampered with There is a falsification detection function that checks whether or not an analysis tool such as a debugger is operating.
- the protection control module 120 controls the operation of these functions and protects the applications 110 and 111.
- the protection control module 120 stops the operation of the applications 110 and 111 when an attack by an attacker is detected by the falsification detection function or the analysis tool detection function, and the memory area used by the applications 110 and 111, particularly Clear processing of the memory area where the confidential data is stored is performed to prevent leakage of the confidential data.
- the update module group 130 includes a plurality of update modules (three in this case).
- the update modules 131, 132, and 133 detect whether the software (in this case, the protection control module 120) inside the device 100 has been tampered with, and if it has been tampered with, the update modules 200, 132, and 133 are updated from the update server 200 outside the device 100.
- the software (protection control module 121) is downloaded and the protection control module is updated.
- the update modules 131, 132, and 133 perform falsification detection between the update modules in order to prevent the update module itself from being falsified by an attacker and preventing the falsified update module from being used illegally.
- the other normal update modules acquire encrypted access information from the access control module 140 (to be described later) and access information acquisition keys from the access information acquisition key distribution module (to be described later). Based on the acquired encrypted access information and the access information acquisition key, the tampered update module is invalidated. As a result, even if some update modules included in the update module group are attacked and tampered with, it is possible to detect it and deal with the attack.
- the access control module 140 is a module that holds information (access information) necessary for the update modules 131, 132, and 133 to delete other update modules.
- the access information includes information necessary for erasing the update module to be erased (for example, the address where the dedicated driver or update module for erasing the update module is located, the procedure for erasing is written Etc.), and each update module is encrypted with an individual access information acquisition key.
- the update server 200 is a software distribution device that distributes update software (protection control module 121) necessary for updating software (in this case, the protection control module 120) in the device 100 to the device 100. is there.
- the update server 200 includes an update software distribution module 210 and an access information acquisition key distribution module 220.
- the update software distribution module 210 operates in cooperation with the update modules 131, 132, and 133 when the software (protection control module 120) inside the device 100 is updated, and the update software (protection control module 121). Is a module for safely transmitting to the device 100.
- the access information acquisition key distribution module 220 is a module that distributes an access information acquisition key to the update module in response to an access information acquisition key acquisition request from the update modules 131, 132, and 133 inside the device 100.
- communication between the device 100 and the update server 200 via a network may use a communication path that ensures security, such as communication data being encrypted.
- FIG. 2 is a functional block diagram of the update module. Actually, this configuration exists in the number of update modules, but here, only the update module 131 is shown as a representative. The configuration of the other update modules is basically the same. As shown in the figure, the update module 131 includes a monitoring control unit 301, a tamper check execution unit 302, an update control unit 303, a decryption unit 304, an authentication unit 305, a signature public key holding unit 306, a verification key holding unit 307, an authentication. The key pair storage unit 308, the MAC value storage unit 309, the distributed information storage unit 310, the access information acquisition unit 311, and the invalidation processing unit 312 are configured.
- the monitoring control unit 301 holds an identifier of an update module (in this case, the update module 132) that is set as a target for detection of alteration, and receives an update processing start instruction from the update software distribution module 210.
- the tampering check execution unit 302 is instructed to check the tampering of the update module corresponding to 1 at a preset timing. Details of the tampering detection timing will be described later.
- the falsification check execution unit 302 When the falsification check execution unit 302 receives a falsification check instruction from the monitoring control unit 301, the falsification check execution unit 302 performs a falsification check of the update module corresponding to the identifier and transmits the falsification check result to the update software distribution module 210.
- the tampering check of the protection control module 120 is performed regularly or irregularly, and when tampering is detected, a tampering detection notification is transmitted to the update software distribution module 210 and other update modules.
- the falsification detection notification of the protection control module 120 is received from another update module, the falsification check of the protection control module 120 is performed, and the check result is transmitted to the update software distribution module 210.
- the signature public key is acquired from the signature public key holding unit 306, and tampering detection is performed using the acquired signature public key.
- the tampering check of the target update module and protection control module 120 is performed.
- the verification key is acquired from the verification key holding unit 307, the MAC value of the update module to be detected for alteration and the protection update module 120 is generated using the acquired verification key, and the identifier of each module Are transmitted to the MAC value holding unit 309.
- the verification key is acquired from the verification key holding unit 307, the MAC value of the protection control module 121 is generated using the acquired verification key, and the MAC value is held. To the unit 309.
- the update control unit 303 controls the update of the software (protection control module 120) inside the device 100. Specifically, an encrypted update protection control module 121 is received from another update module or the update software distribution module 210, and the update protection control module 121 is verified from the update software distribution module 210. When the certificate (for example, the hash value of the protection control module 121 for update is described) and the decryption key for decrypting the protection control module 121 for update are received, the protection control module 121 for update is decrypted. The unit 304 decrypts and transmits the decrypted update protection control module 121 to another update module, or updates the protection control module 120 in the device 100 to the decrypted update protection control module 121.
- the decryption unit 304 uses the decryption key input from the update control unit 303 to encrypt the update data.
- the protection control module 121 is decrypted. Since the decryption key input from the update software distribution module 210 is encrypted using the key unique to the update module 131 held by the decryption unit 304, the decryption unit 304 uses the decryption key before using the decryption key. The decryption key is decrypted using the key unique to the update module 131.
- the authentication unit 305 When the authentication unit 305 receives an authentication processing start instruction from the update software distribution module 210, the authentication unit 305 performs mutual authentication processing with the update software distribution module 210 and confirms that the software has the right to each other. Specifically, an authentication key is acquired from the authentication key pair holding unit 308, and the update server 200 is authenticated using the acquired authentication key.
- the signature public key holding unit 306 holds a signature public key.
- the signature public key is used when the update module 131 performs a falsification check of the software (protection control module 120) in the device 100 using a falsification detection certificate.
- the signature public key and the signature private key held by the update software distribution module 210 form a key pair in the public key cryptosystem.
- the verification key holding unit 307 holds the verification key.
- the verification key is used when the update module 131 performs a tampering check of the software (protection control module 120) in the device 100 using a message authentication code (MAC) value.
- MAC message authentication code
- the authentication key pair holding unit 308 holds an authentication key pair.
- the authentication key pair is used when the update module 131 and the update software distribution module 210 perform mutual authentication processing.
- the authentication key pair is composed of a key pair of a public key (authentication public key) and a secret key (authentication secret key) in the public key cryptosystem.
- a certificate (authentication key certificate) generated using the signature private key held by the update software distribution module 210 is added to the authentication public key.
- the MAC value holding unit 309 holds a pair of the MAC value of the update module and protection update module 120 that are input from the falsification check execution unit 302 and are the detection targets of falsification and the identifier of each module.
- the shared information holding unit 310 holds the shared information (share) and the encryption / decryption key certificate input from the protection control module 120.
- the access information acquisition unit 311 When the access information acquisition unit 311 receives an instruction to invalidate a falsified update module from the update software distribution module 210, the access information acquisition unit 311 requests the access information acquisition key distribution module 220 to send an access information acquisition key, and acquires the access information. Get the key. Further, the encrypted access information is acquired from the access control module 140, the encrypted access information is decrypted using the access information acquisition key, the decrypted access information is acquired, and transmitted to the invalidation processing unit 312.
- the invalidation processing unit 312 invalidates the tampered update module based on the access information input from the access information acquisition unit 313.
- a method of invalidation in addition to a method of erasing all the update modules to be invalidated, a method of erasing a part of the update module to be invalidated such as a tampered part or data to be concealed, There is a method of deleting the function for reading the program and data.
- the invalidation processing unit 312 cannot invalidate the software until the access information is acquired.
- FIG. 3 is a functional block diagram of the updating software distribution module 210 according to Embodiment 1 of the present invention.
- the update software distribution module 210 includes an encryption key generation unit 401, an encryption processing unit 402, an encryption key holding unit 403, an authentication unit 404, an update determination unit 405, an unauthorized module determination unit 406, and an update module selection. Section 407, certificate generation section 408, signature private key storage section 409, and update software storage section 410.
- the encryption key generation unit 401 Upon receiving a notification to update the protection control module 120 from the update determination unit 405, the encryption key generation unit 401 generates a plurality of encryption keys for encrypting the protection control module 121 for update.
- the encryption key is transmitted to the encryption key holding unit 403 and the encryption processing unit 402.
- the encryption processing unit 402 acquires the update protection control module 121 from the update software holding unit 410, and uses the plurality of encryption keys input from the encryption key generation unit 401 to acquire the update protection control module 121. Is encrypted in multiple layers.
- the encrypted update protection control module 121 and the plurality of encryption keys are transmitted to the update module selection unit 407.
- the encryption key holding unit 403 holds a plurality of encryption keys generated by the encryption key generation unit 401 and a plurality of encryption keys encrypted by the update module selection unit 407.
- the authentication unit 404 performs mutual authentication processing with the update modules 131, 132, and 133. Specifically, the update modules 131, 132, and 133 are authenticated using the authentication key (public key) transmitted from the update module, and the authentication result is transmitted to the update determination unit 405.
- the authentication key public key
- the update determination unit 405 When receiving the falsification detection notification of the protection control module 120 from the update modules 131, 132, and 133, the update determination unit 405 finally determines whether or not the protection control module has been falsified based on the falsification detection notification. If it is determined that the protection control module has been tampered with, it requests each update module to collect tampering information. Thereafter, based on the falsification information input from each update module, it is determined whether or not the protection control module should be updated. If it is determined that the protection control module should be updated, each update module is instructed to start the authentication process.
- an update process start instruction is transmitted to the update modules 131, 132, and 133 according to the authentication result input from the authentication unit 404, and the unauthorized module determination unit 46 and the encryption key generation unit 401 are transmitted. , And the certificate generation unit 408 is notified that the protection control module 120 is to be updated.
- the unauthorized module determination unit 406 When the unauthorized module determination unit 406 receives a notification to update the protection control module 120 from the update determination unit 405, the unauthorized module determination unit 406 updates each update based on the tampering check result of each update module input from the update modules 131, 132, and 133. If it is determined whether the module has been tampered with, and if it has been determined that the update module has been tampered with, it is determined which update module has been tampered with. After the determination, the determination result is transmitted to the update module selection unit 407.
- the update module selection unit 407 selects a plurality of update modules to be used when updating the protection control module 120 based on the determination result input from the unauthorized module determination unit 406.
- the plurality of encryption keys used for encryption of the update protection control module 121 input from the encryption processing unit 402 are encrypted using the keys unique to each update module selected by the update module selection unit 407. .
- the encrypted key is sent to the selected update module together with the encrypted protection control module input from the encryption processing unit 402.
- the encrypted protection control module certificate is sent to each update module.
- the encrypted protection control module 121 and the encryption key are not transmitted to the selected update module all at once, but at the timing when each piece of data is required during the update process. Sent to. The timing in the update process will be described later.
- the normal update module is instructed to invalidate the altered update module, and the access information acquisition key distribution module 220 is notified of the invalidation information.
- the certificate generation unit 408 When the certificate generation unit 408 receives a notification to update the protection control module 120 from the update determination unit 405, the certificate generation unit 408 receives the signature private key from the signature private key holding unit 409, and updates the protection control module from the update software holding unit 410. Each of the modules 121 is acquired, and an update verification certificate for verifying whether or not the update protection control module 121 has been updated correctly is generated using the acquired signature private key, and an update module selection unit 407.
- an authentication certificate is generated for the authentication public keys of the update modules 131, 132, and 133 using the signature private key.
- the signature private key holding unit 409 holds a signature private key used for certificate generation by the certificate generation unit 408.
- the update software holding unit 410 is used when the protection control module 120 has been tampered with, and holds the update protection control module 121 for updating the protection control module.
- the update protection control module 121 is guaranteed to be normal, and is not necessarily the latest version of the protection control module. 4).
- FIG. 4 is a functional block diagram of the protection control module 120 according to Embodiment 1 of the present invention.
- the protection control module 120 includes a control unit 501, a decryption load unit 502, a falsification detection unit 503, an analysis tool detection unit 504, an encryption / decryption key holding unit 505, an encryption / decryption key generation unit 506, an encryption / decryption key.
- the distribution unit 507 includes a certificate generation unit 508 and an encryption / decryption key restoration unit 509.
- the control unit 501 controls the decryption load unit 502, the falsification detection unit 503, and the analysis tool detection unit 504, and detects when the applications 110 and 111 are attacked by an attacker.
- the decryption load unit 502 decrypts the application using the encryption / decryption key stored in the encryption / decryption key storage unit 505 when the applications 110 and 111 encrypted and stored in the device 100 are executed. , Process to load on the memory.
- the data in the memory is encrypted using the encryption / decryption key, and when the context switch to the applications 110 and 111 is performed again, Decrypt the encrypted data.
- the applications 110 and 111 are decrypted using the restored old encryption / decryption key input from the encryption / decryption key restoration unit 509, and a new one held in the encryption / decryption key holding unit 505.
- the applications 110 and 111 are encrypted with a simple encryption / decryption key.
- the falsification detection unit 503 executes a falsification detection process for detecting whether the applications 110 and 111 have been falsified.
- the falsification detection process includes a method of performing falsification detection using a falsification detection certificate added to the applications 110 and 111 and a method of performing falsification detection using a MAC value.
- the analysis tool detection unit 504 detects the operation of the analysis tool when an attacker installs and operates an analysis tool such as a debugger in order to attack the applications 110 and 111.
- Examples of the detection method include a method of searching for a file name, a method of checking whether a special register used by the debugger is used, and a method of detecting an interrupt set by the debugger.
- the encryption / decryption key holding unit 505 is embedded at the time of initialization processing described later, and holds an encryption / decryption key for encrypting / decrypting the applications 110 and 111.
- the encryption / decryption key generation unit 506 When a new encryption / decryption key is generated by the encryption / decryption key generation unit 506, the encryption / decryption key input from the encryption / decryption key generation unit 506 is held.
- the encryption / decryption key generation unit 506 When receiving the notification that the encryption / decryption key has been restored from the encryption / decryption key restoration unit 509, the encryption / decryption key generation unit 506 generates a new encryption / decryption key for encrypting / decrypting the applications 110 and 111. The generated encryption / decryption key is transmitted to the encryption / decryption key storage unit 505, certificate generation unit 508, and encryption / decryption key distribution unit 507.
- the encryption / decryption key distribution unit 507 generates and generates distribution information using the secret sharing method based on the encryption / decryption key input from the encryption / decryption key generation unit 507 at the time of initial design and preparation for the next round, which will be described later.
- the shared information is transmitted to the update modules 131, 132, and 133.
- the certificate generation unit 508 generates a certificate based on the encryption / decryption key input from the encryption / decryption key generation unit 506, and transmits the generated certificate to the update modules 131, 132, and 133.
- the certificate is used to verify whether or not the distributed information generated from the encryption / decryption key has been correctly restored.
- the encryption / decryption key restoration unit 509 acquires the shared information and the encryption / decryption key certificate from the update modules 131, 132, and 133, and restores the old encryption / decryption key based on the acquired shared information and encryption / decryption key certificate.
- the restored old encryption / decryption key is transmitted to the decryption load unit 502.
- the encryption / decryption key generation unit 506 is notified that the encryption / decryption key has been restored. 5).
- Access Control Module FIG. 5 is a functional block diagram of the access control module 140 according to Embodiment 1 of the present invention. As shown in the figure, the access control module 140 includes a communication unit 601 and an access information holding unit 602.
- the communication unit 601 receives access information acquisition requests from the update modules 131, 132, and 133. Based on the access information acquisition request, the access information corresponding to the update module that has been tampered with is acquired from the access information holding unit 602 and transmitted to the update module that has requested the acquired access information.
- the access information holding unit 602 holds access information for deleting the update module for each update module.
- the access information is encrypted for each update module with an individual access information acquisition key, and is associated with each update module by an identifier (update module identifier) or the like. 6).
- Access Information Acquisition Key Distribution Module FIG. 6 is a functional block diagram of the access information acquisition key distribution module 220 according to Embodiment 1 of the present invention. As shown in the figure, the access information acquisition key distribution module 220 includes a communication unit 701 and an access information acquisition key holding unit 702.
- the communication unit 701 receives an access information acquisition key acquisition request from the update modules 131, 132, and 133, and a notification of invalidation information from the update module selection unit 407. Based on the access information acquisition key acquisition request and invalidation information, it is determined whether the acquisition request is correct, and the access information acquisition key corresponding to the update module to be erased is determined according to the determination result. It is acquired from the acquisition key holding unit 702 and transmitted to the requested update module.
- the access information acquisition key holding unit 702 holds an access information acquisition key for decrypting each encrypted access information held by the access control module 140.
- the access information acquisition key is associated with each update module by an identifier (update module identifier) or the like. 7).
- FIG. 7 is a diagram illustrating a hardware configuration of the device 100.
- the device 100 includes a CPU (Central Processing Unit) 11, a nonvolatile memory (for example, EEPROM (Electrically Erasable and Programmable Read Only Memory)) 12, a RAM (Random Access Memory) 13, and a NIC (Network Interface). Card) 14 and the like, and these are communicably connected via a bus.
- a CPU Central Processing Unit
- nonvolatile memory for example, EEPROM (Electrically Erasable and Programmable Read Only Memory)
- RAM Random Access Memory
- NIC Network Interface
- the EEPROM 12 stores a protection control module 120, update modules 131, 132, 133, applications 110, 111, and the like.
- FIG. 8 is a diagram illustrating a software hierarchy of the device 100.
- the access control module 140 and the update module group 130 are incorporated in the OS 150.
- the applications 110 and 111 operate on the OS 150, and the protection control module 120 is out of OS management together with the boot loader 160 and the like.
- the protection control module 120 and the update module group 130 are activated, and then the application is executed.
- Operation of software update system 1000 9.1.
- Outline of Operation of Software Updating System 1000 Next, the operation of the software updating system 1000 will be described. First, a rough process of the software update system 1000 will be described. There are the following seven processes as rough processes.
- the first process is to update various key data necessary for updating the software (protection control module 120), data necessary after software update (distributed information distributed using the secret sharing method), etc. This is a process (initial design process) embedded in each of 131, 132, and 133.
- 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.
- the tampered software is analyzed, and it is determined whether or not the software including the tampered module is to be updated. This is processing (analysis / determination processing) for notifying 133 of the execution of the update processing.
- the fourth process is an authentication process (mutual authentication process) performed mutually to confirm whether the update modules 131, 132, 133 and the update software distribution module 210 are correct software.
- the fifth process is a process for performing a tamper check between update modules, installing update software in the device 100, and restoring data from the distributed information embedded in the update modules 131, 132, and 133 (recovery process). It is.
- the sixth process is a process of generating key data and distributed information for the next software update and embedding them in each update module (next round preparation process).
- the seventh process is a process (invalidation process) for deleting an illegally tampered update module when it is detected that the update module 131, 132, 133 has been tampered with in the mutual authentication process or the recovery process. ).
- FIG. 9 is a flowchart showing an overall operation flow of the software update system 1000.
- initial design processing is performed when the device 100 is manufactured in a factory, and distributed information is embedded in each of the update modules 131, 132, and 133 (step S100). Thereafter, the device 100 is shipped from the factory and used for the user.
- the protection control module 120 protects the applications 110 and 111 from an attack by an attacker inside the device 100.
- the update modules 131, 132, 133 detect whether the protection control module 120 has been tampered with, and perform a detection process for checking whether the protection control module 120 has been attacked (step S200).
- step S300 If it is determined that the protection control module 120 has been tampered with as a result of the detection process, the analysis / judgment process (step S300), the mutual authentication process (step S400), the recovery process (step S500), and the next round preparation process ( Step S600) is performed, and the process returns to the detection process (Step S200) again.
- FIG. 11 is a flowchart showing an operation flow of the software update system 1000 at the time of initial design.
- the processes individually performed by each of the update modules 131, 132, and 133 are collectively described as an update module group.
- FIG. 10 is a diagram schematically illustrating a key embedded in the device 100.
- the update module only the update module 131 is representatively shown.
- the encryption / decryption key is embedded in the protection control module 120, and the signature public key, verification key, and authentication key pair are embedded in the update modules 131, 132, and 133, respectively.
- update module identifiers for identifying the respective update modules are also embedded.
- the encryption / decryption key is a key for encrypting / decrypting the applications 110, 111.
- the applications 110, 111 are stored in the nonvolatile memory in an encrypted state using the encryption / decryption key, and are executed by the protection control module 120 at the time of execution. It is executed after being decrypted using the encryption / decryption key.
- encryption / decryption of the applications 110 and 111 is performed using an encryption / decryption key at the timing of context switching, and the applications 110 and 111 are executed by an analysis tool such as a debugger. Prevent time data from being extracted.
- the signature public key is common to all the update modules, and the verification key and the authentication key pair are different for each update module. Further, the distributed information pair is different for each update module.
- step S102 After installing each software, the software for initial setting of the device 100, the software for testing whether or not it operates normally, and the like are executed, and the initialization process is performed (step S102).
- An initialization instruction is transmitted to the module 120 and the update modules 131, 132, 133 (step S103).
- the initialization process is also performed in the protection control module 120 and the update modules 131, 132, and 133 that receive the initialization instruction.
- the protection control module 120 When receiving the initialization instruction (step S104a), the protection control module 120 generates shared information from the encryption / decryption key using the secret sharing method (step S105). Further, when restoring the encryption / decryption key, a certificate (encryption / decryption key certificate) for confirming whether the encryption / decryption key has been correctly restored is generated using the signature private key (step S106).
- the generated shared information and encryption / decryption key certificate are transmitted to the update modules 131, 132, and 133, respectively (step S107).
- the same number of shared information as the update modules is generated, and different pairs of shared information are transmitted to the respective update modules 131, 132, and 133. Further, an identifier for identifying which shared information is added to each shared information.
- the same encryption / decryption key certificate is transmitted to the respective update modules 131, 132, and 133.
- the update module group receives the initialization instruction (step S104b), and receives the shared information and the encryption / decryption key certificate (step S108), and performs update module initialization processing (step S109).
- FIG. 12 is a flowchart showing the update module initialization process. In the drawing, only the update module 131 is representatively shown. The operation of other update modules is basically the same.
- the update module 131 holds the shared information pair and the encryption / decryption key certificate received from the protection control module 120 in the shared information holding unit 310 (step S111).
- step S112 The verification of the tampering detection certificate of the other update module and the protection control module 120 subject to tampering detection is performed (step S112). This verification is performed by generating a hash value from each module and comparing the generated hash value with the hash value described in each falsification detection certificate.
- each generated hash value matches the hash value described in each tampering detection certificate (step S113), and each hash value is described in each tampering detection certificate. If it matches the hash value (Yes in step 113), a MAC value is generated for each of the other update modules and the protection control module 120 that are subject to tampering detection, and held in the MAC value holding unit 309 as a MAC value table ( Step S114).
- step S113 If at least one of the hash values does not match the hash value described in the falsification detection certificate (No in step S113), an error is output and the process is stopped (step S115).
- the device 100 is shipped from the factory upon completion of the initialization process and sent to the user.
- the protection control module 120 controls functions such as a decryption load function, a falsification detection function, and an analysis tool detection function in the device 100, and the application 110 , 111 is protected from attacks by attackers.
- FIG. 13 is a flowchart showing an operation flow of the software update system 1000 at the time of detection.
- the update modules 131, 132, and 133 detect falsification of the protection control module 120 (step S201).
- the falsification detection is performed by calculating the MAC value of the protection control module 120 using the verification key and comparing it with the MAC value of the protection control module 120 calculated in the initial design and stored in the MAC value table. Is called.
- the description is simplified and only the update module 131 checks whether the protection control module has been tampered with, but naturally the same processing is performed in the update modules 132 and 133.
- the subsequent processing is mainly described in the case where the update module 131 detects that the protection control module has been tampered with, but basically the same is true if the update modules 132 and 133 detect tampering with the protection control module. Processing is performed.
- step S202 It is determined whether or not the protection control module 120 has been tampered with, in other words, whether or not the MAC values match. If it is determined that the protection control module 120 has been tampered with (Yes in step S202). ), A falsification detection notification is transmitted to the update software distribution module 210 and other update modules (step S203).
- step S202 If it is determined that the protection control module 120 has not been tampered with (No in step S202), the process returns to the tampering detection process (S201) without notifying the update software distribution module 210 and other update modules.
- the update modules 132 and 133 receive the falsification detection notification from the update module 131 (step S204b), the falsification check of the protection control module 120 is performed using the verification key and the MAC value (step S205), and the falsification check result Is transmitted to the update software distribution module 210 (step S206).
- the update software distribution module 210 receives the falsification detection notification from the update module 131 (step S204a) and the falsification check results from the update modules 132 and 133 (step S207).
- 14 and 15 are flowcharts showing the operation flow of the software update system 1000 at the time of analysis and determination.
- the processes individually performed by each of the update modules 131, 132, and 133 are collectively described as an update module group.
- the update software distribution module 210 receives the falsification detection notification and the falsification check result from the update modules 131, 132, and 133 (steps S204a and S207), based on the received falsification detection notification and the falsification check result. Then, it is determined whether or not the protection control module 120 has been tampered with (step S301). As a determination method, for example, when it is determined that a certain number of update modules (for example, a majority) have been tampered with, the protection control module 120 is determined to have been tampered with. If it is determined that the update module has not been tampered with, the protection control module 120 determines that it has not been tampered with.
- a certain number of update modules for example, a majority
- step S301 If it is determined that the protection control module 120 has not been tampered with (No in step S301), the process returns to the detection process (step S302).
- step S301 If it is determined that the protection control module 120 has been tampered with (Yes in step S301), the update software distribution module 210 determines which part of the protection control module 120 has been tampered with the update modules 131, 132, and 133. A request is made to notify the falsification information indicating whether or not (step S303).
- the update module group collects falsification information (step S305). For example, if the protection control module 120 is divided into a plurality of parts and a certificate (has a hash value described) is issued for each part, the falsification information is collected. A hash value is calculated every time, and it can be performed depending on whether or not each calculated hash value matches the hash value described in each certificate.
- the update module group transmits the falsification information to the update software distribution module 210 (step S306).
- the updating software distribution module 210 analyzes the received falsification information (step S308), and determines whether to invalidate the protection control module 120 based on the analysis result. Is determined (step S309).
- step S309 If it is determined that the protection control module 120 is to be invalidated (Yes in step S309), the device 100 is invalidated via the applications 110 and 111 to a server (not shown) that provides services to the applications 110 and 111. (Step S310, 311).
- step S309 If it is determined not to invalidate the protection control module 120 (No in step S309), it is determined whether or not the protection control module 120 is to be updated (step S312).
- step S312 If it is determined that the protection control module 120 is to be updated (Yes in step S312), an authentication process start instruction is transmitted to the update module group (step S313), and the update module group receives the authentication process start instruction (step S314). ).
- step S312 If it is determined not to update the protection control module 120 (No in step S312), the process returns to the detection process (step S302).
- the invalidation and update of the protection control module 120 is performed, for example, by determining whether an important part of the protection control module 120 has been tampered with or a certain part has been tampered with.
- FIG. 16 is a flowchart showing an operation flow of the software update system 1000 when the update module 131 authenticates the update software distribution module 210.
- the update module 131 is representatively shown. The operation of other update modules is basically the same.
- the update module 131 generates a random number using a random number generator (step S401), and transmits the generated random number as challenge data to the update software distribution module 210 (step S402). At this time, an update module identifier for identifying the update module 131 is also transmitted together with the challenge data.
- the update software distribution module 210 When receiving the challenge data from each update module (step S403), the update software distribution module 210 generates a signature using the signature private key for the received challenge data (step S404), and uses the generated signature as response data. As a reply to the transmitted update module (step S405).
- the update module 131 verifies the signature using the signature public key to determine whether the received response data is a signature for the transmitted challenge data (step S406). S407).
- the processing is continued.
- step S408 If the response data is not a signature for the transmitted challenge data, that is, if the update software distribution module 210 is not a valid module (No in step S408), an error is output and the process is stopped (step S409). ).
- FIG. 17 is a flowchart showing an operation flow of the software update system 1000 when the update software distribution module 210 authenticates the update modules 131, 132, and 133.
- the processes individually performed by each of the update modules 131, 132, and 133 are collectively described as an update module group.
- the update module group When the update module group receives the challenge data from the update software distribution module 210 (step S413), the update module group generates a signature for the received challenge data using the authentication secret key (step S414), and uses the generated signature as response data. To the update software distribution module 210 (step S415). At that time, the authentication public key and the authentication key certificate are returned together to the update software distribution module 210 (step S415).
- the update software distribution module 210 When the update software distribution module 210 receives the response data, the authentication public key, and the authentication key certificate from the update module group (step S416), the authentication key certificate is issued by the update software distribution module 210. Then, the authentication public key is verified using the authentication key certificate (step S417).
- step S419) if there is a problem with the authentication key certificate or the authentication public key (No in step S418), the processing is stopped (step S419).
- step S408 If there is no problem with the authentication key certificate and the authentication public key as a result of the verification (Yes in step S418), it is verified whether the received response data is the signature of the challenge data transmitted by the update software distribution module 210. Signature verification is performed using the public key (step S420). Then, based on the verification result, it is determined whether or not to perform the recovery process. This determination is performed, for example, by determining whether or not the number of update modules that can be verified as legitimate modules by signature verification is equal to or greater than the number required for the preset recovery process (step S421). .
- step S421 If it is determined that the number of update modules that have been verified as valid modules is less than the number necessary for the recovery process (No in step S421), the process is stopped (step S419).
- step S421 If it is determined that the number of update modules that have been verified as valid modules satisfies the number required for the recovery process (Yes in step S421), the update module that has been verified as valid modules is instructed to start the update process. (Step S422), and the update module verified as a legitimate module receives the update processing start instruction (step S423). This completes the mutual authentication process.
- the update software distribution module 210 creates an authentication list including the update module identifiers of all the update modules that have been authenticated in the mutual authentication process, and in the subsequent recovery process, the update module described in the authentication list is created. Use only the process.
- FIG. 18 is a flowchart showing an operation flow of the software update system 1000 during the recovery process.
- the recovery process mainly includes three processes.
- the second process is an update process (step S502) in which the protection control module 120 is updated using the update protection control module 121.
- the third process is a re-encryption process (step S503) for re-encrypting the encrypted applications 110 and 111.
- step S501 the monitoring process for performing the falsification detection process for other update modules
- step S502 the update protection control module 120.
- the update modules 131, 132, and 133 in the update module group 130 perform a falsification detection process on the other update modules in the update module group 130. This makes it possible to detect tampering even when some update modules are tampered with by the attacker during the recovery process. Further, by periodically performing the monitoring process, it is possible to detect tampering before the update protection control module 121 is completely leaked and to prevent the leak.
- FIG. 19 is a flowchart showing the monitoring process.
- the update module 131 performs a falsification detection process on the update module 132 (step S511a), the update module 132 performs a falsification detection process on the update module 133 (step S511b), and the update module 133 updates the update module 133.
- a tampering detection process is performed on the module 131 (step S511c). The tampering detection is performed by calculating the MAC values of the update modules 131, 132, and 133 using the verification key and comparing them with the MAC values calculated in the initial design and stored in the MAC value table. Alternatively, the hash values of the update modules 131, 132, and 133 may be calculated, and the calculated hash values may be compared with hash values described in a certificate added in advance to each update module. Good.
- Each update module notifies the tampering detection result to the update software distribution module 210 (step S512).
- the update software distribution module 210 receives the falsification detection result from each update module (step S513), and determines whether there is a falsified update module (step S514).
- step S5 If it is determined that there is a tampered update module (Yes in step S514), the update software distribution module 210 immediately stops the recovery process (step S515).
- the update software distribution module 210 encrypts the update protection control module 121 using a plurality of keys, and transmits the update module included in the update module group 130 as a transmission destination.
- the plurality of update modules included in the update module group 130 updates the protection control module 120 to the update protection control module 121.
- the update software distribution module 210 controls the timing of transmitting a plurality of keys for decrypting the multiple-encrypted update protection control module 121 to each update module included in the update module group 130.
- the update software distribution module 210 authenticates the certificate (update verification) of the update protection control module 121 so that the update modules 131, 132, and 133 can verify whether the update protection control module 121 has been correctly installed in the device 100. Certificate) is generated using the certificate generation unit 408 (step S521), and the generated update verification certificate is transmitted to each of the update modules 131, 132, and 133 (step S522). A signature private key is used to generate an update verification certificate. Each update module receives the update verification certificate (step S523).
- the update software distribution module 210 uses the encryption key generation unit 403 to generate a plurality of encryption keys for multiplexing the update protection control module 121 (here, the first key and the second key). 2) is generated (step S524). Then, by using the encryption processing unit 402, the update protection control module 121 is encrypted using the second key to generate an encrypted update protection control module (step S525). The encryption update protection control module 121 is further encrypted using the first key to generate the multiple encryption update protection control module 121 (step S526).
- the update software distribution module 210 selects one update module (in this case, the update module 131) from the plurality of update modules included in the update module group 130 (step S527), and the multiple encryption update protection control module 121 and The first key is transmitted to the selected update module 131 (step S528).
- the update module 131 Upon receiving the multiple encryption update protection control module 121 and the first key (step S529), the update module 131 decrypts the multiple encryption update protection control module 121 using the first key and encrypts it.
- the update protection control module 121 is acquired (step S530).
- a decryption end notification is transmitted to the update software distribution module 210 (step S531).
- the update software distribution module 210 When receiving the decryption end notification (step S532), the update software distribution module 210 receives an update module (in this case, the update module 132) that is different from the selected update module 131 from the plurality of update modules included in the update module group 130. ) Is selected (step S533), the second key is transmitted to the selected update module 132 (step S534), and the encryption update protection control module 121 is sent to the update module 132 for the update module 131. The transmission is requested (step S536).
- an update module in this case, the update module 132
- the second key is transmitted to the selected update module 132
- the encryption update protection control module 121 is sent to the update module 132 for the update module 131.
- the transmission is requested (step S536).
- the update module 131 receives the request from the update software distribution module 210 (step S537), and transmits the encrypted update protection control module 131 to the update module 132 (step S538).
- the update module 132 uses the second key.
- the encrypted update protection control module 121 is decrypted to obtain the update protection control module 121 (step S540).
- step S547 If it is determined that the update has been correctly performed (Yes in step S547), the end of the update process is notified to each update module (step S549).
- step S550 When each of the update modules 131, 132, and 133 receives the notification of the end of the update process (step S550), the update modules 131, 132, and 133 generate the MAC value of the protection control module 121 and store the identifier and MAC value of the protection control module 121 in the MAC value table. The set is saved (step S551).
- the monitoring process is performed when a plurality of keys are sent from the update software distribution module 210 to the update module included in the update module group 130 as a transmission destination, and to the update module group 130 of the encrypted protection control module for update. Performed periodically during the decryption process in the included update module.
- the time interval when periodically implemented is, for example, an interval shorter than the time until the update protection control module 121 is completely output to the outside through the communication path. If it takes 1 second to be completely output to the outside, for example, the monitoring process is executed at a timing of 500 milliseconds shorter than that.
- FIG. 23 is a diagram schematically illustrating the flow of the cooperative operation between the monitoring process and the update process. In this figure, regarding the monitoring process and the update process, only the point process will be described.
- a monitoring process (monitoring 1) is performed inside the device 100. This is for verifying that there is no unauthorized update module in the device 100 when starting the update process.
- the monitoring process (monitoring 2) is performed. This is for verifying that an unauthorized update module does not exist inside the device 100 when the device 100 receives the key.
- the update module 131 receives the first key and decrypts the multiple encryption update protection control module 121 using the first key
- the decryption process by the update module 131 is periodically interrupted to perform the monitoring process. (Monitoring 3-1, 3-2) is implemented. Thereby, even if any of the update modules 131, 132, 133 is attacked during the decryption process, an attack by an attacker can be detected before the encryption update protection control module 121 leaks, It is possible to prevent leakage of the encryption update protection control module 121.
- the monitoring process (monitoring 4) is performed.
- the monitoring process is performed.
- it is verified that there is no unauthorized update module in the device 100.
- the decryption process by the update module 132 is periodically interrupted while the encrypted update protection control module 121 is decrypted using the second key, and the monitoring process is performed. (Monitoring 5-1 and 5-2) are implemented. Thus, an attack by an attacker can be detected before all the update protection control module 121 is leaked, and leakage of the update protection control module 121 can be prevented.
- each update module notifies the update software distribution module 210 of the alteration detection result. If the update software distribution module 210 determines that any of the update modules has been falsified based on the falsification detection result, the update software distribution module 210 stops the recovery process. Thereby, if an attack by an attacker is detected before the transmission of the first key or the second key, the attacker may obtain a key for decrypting the multiple encryption update protection control module 121. It becomes impossible.
- the update protection control module 121 acquires the distributed information held by each update module, and the encryption / decryption key (() stored in the protection control module 120 before the update is obtained from the acquired distributed information. Restore the old encryption / decryption key). Furthermore, after newly generating an encryption / decryption key (new encryption / decryption key) and decrypting the encrypted applications 110 and 111 using the restored old encryption / decryption key, the application 110 using the new encryption / decryption key is decrypted. , 111 is re-encrypted.
- FIG. 24 is a flowchart showing the re-encryption process.
- the processes individually performed by each of the update modules 131, 132, and 133 are collectively described as an update module group.
- the updated protection control module 121 requests each of the update modules 131, 132, 133 to transmit the shared information and encryption / decryption key certificate held by each of the update modules 131, 132, 133 (step S561).
- the update module group When the update module group receives the request from the protection control module 121 (step S562), the update module group transmits the shared information and the encryption / decryption key certificate to the protection control module 121 (step S563).
- the protection control module 121 When the protection control module 121 receives the shared information and the encryption / decryption key certificate from the update module group (step S564), the encryption / decryption key (old encryption / decryption key) used by the protection control module 120 before the update is received from the received shared information. The decryption key is restored (step S565). Then, it is verified using the encryption / decryption key certificate whether or not the old encryption / decryption key has been correctly restored (step S566).
- step S566 If the old encryption / decryption key has not been correctly restored (No in step S566), it is specified which update module has transmitted illegal shared information (read out) (step S567). The identified unauthorized update module is notified to the update server 200.
- the protection control module 121 acquires a pair of shared information from each update module, and adds identification information for identifying from which update module the acquired distributed information is acquired.
- the shared information with the same identifier, which should be the same value is grouped, the values of the shared information in each group are compared, and the shared information with the same value is further grouped (subgroup )
- an old encryption / decryption key is generated for each of the combinations for selecting subgroups one by one from all groups, and it is verified whether a correct old encryption / decryption key has been generated.
- verification pass identification information indicating that the verification is passed to the subgroup selected in the combination is attached.
- the shared information included in the subgroup to which the verification pass identification information is attached is removed.
- the shared information that remains without being removed is shared information.
- the update module that holds the shared information is identified from the identification information of the shared information. As a result, it is possible to specify that the update module corresponding to the identification information is an unauthorized update module that holds unauthorized distributed information.
- the protection control module 121 uses the encryption / decryption key generation unit 506 to create a new encryption / decryption key (new encryption / decryption key).
- Step S568 the applications 110 and 111 encrypted using the old encryption / decryption key are decrypted (step S569), and then the applications 110 and 111 are re-encrypted using the new encryption / decryption key (step S569).
- S570 ).
- next round preparation process After the completion of the recovery process, a next round preparation process for preparing for the next recovery process is performed. In the next round preparation process, similar to the initialization process at the time of initial design, the distribution information is generated and embedded.
- FIG. 25 is a flowchart showing an operation flow of the software update system 1000 at the time of preparation for the next round.
- the processes individually performed by each of the update modules 131, 132, and 133 are collectively described as an update module group.
- the protection control module 121 generates shared information from the encryption / decryption key (new encryption / decryption key) using the secret sharing method (step S601), and further generates an encryption / decryption key certificate using the signature secret key. (Step S602).
- the generated shared information and encryption / decryption key certificate are each transmitted to the update module group (step S603).
- the same number of shared information is generated as the number of update modules, and different pairs of shared information are transmitted to the respective update modules 131, 132, and 133.
- the same encryption / decryption key certificate is transmitted to the respective update modules 131, 132, and 133.
- the update module group When receiving the shared information and the encryption / decryption key certificate from the protection control module 121 (step S604), the update module group holds the received shared information and encryption / decryption key certificate in the shared information holding unit 310 (step S605). ).
- the unauthorized update module that failed to authenticate at the time of mutual authentication, the unauthorized update module detected in the monitoring process in the recovery process, or the unauthorized update module that started out in the re-encryption process in the recovery process On the other hand, distributed information is not transmitted.
- the invalidation process is an illegal update in the re-encryption process in the recovery process if there is an update module that failed to authenticate during mutual authentication or if an update module that has been tampered with in the monitoring process in the recovery process is detected. This is a process of invalidating an unauthorized update module existing in the device 100 when a module is started.
- each of the plurality of update modules has an update module invalidation function in advance.
- each of the plurality of update modules has an update module invalidation function in advance, when one update module included in the update module group is falsified, the update module invalidates a normal update module. It becomes possible to become.
- FIG. 26 is a flowchart showing the operation flow of the software update system 1000 when the update module 133 is invalidated.
- the update software distribution module 210 determines which update module has been falsified based on the falsification detection results received from the update modules 131, 132, and 133 in the monitoring process (step S701). In this example, it is determined that the update module 133 has been tampered with, and it is determined that the other update modules have not been tampered with.
- the update software distribution module 210 requests one of the update modules determined not to be falsified (in this case, the update module 131) to invalidate the falsified update module 133 (step S702). Further, the information about invalidation is notified to the access information acquisition key distribution module 220 (step S703).
- the information regarding invalidation includes information on the update module 133 that has been tampered with (update module identifier) and information on the update module 131 that has requested invalidation (update module identifier).
- the update module 131 When receiving an invalidation request for the update module 133 from the update software distribution module 210 (step S704), the update module 131 sends an access information acquisition key for invalidating the update module 133 to the access information acquisition key distribution module 220. Request to send (step S705). Further, the access control module 140 is requested to transmit access information for invalidating the update module 133 (step S706).
- the access information acquisition key distribution module 220 receives information related to invalidation from the update software distribution module 210 (step S707), and receives an access information acquisition key sending request from the update module 131 (step S708). Based on the information, it is determined whether or not the sending request is a correct request (step S709). This determination is based on the information regarding invalidation notified from the update software distribution module 210, and whether the update module 131 that has requested transmission is an update module that has been requested to be invalidated by the update software distribution module 210. This is performed by determining whether or not the access information acquisition key that is the request target is an access information acquisition key corresponding to the falsified update module 133.
- step S709 When it is determined that the request is not correct (No in step S709), that is, a request from the update module 133 that has been tampered with or a request to acquire an access information acquisition key corresponding to the update modules 131 and 132 that have not been tampered with. If yes, the invalidation process is terminated.
- step S709 If it is determined that the request is correct (Yes in step S709), an access information acquisition key for invalidating the update module 133 is sent to the requesting update module 131 (step S710).
- the access control module 140 When the access control module 140 receives an access information acquisition request for invalidating the update module 133 from the update module 131 (step S711), the access control module 140 transmits encrypted access information corresponding to the update module 133 (step S712).
- the update module 131 receives the encrypted access information from the access control module 140 (step S713), and receives the access information acquisition key from the access information acquisition key distribution module 220 (step S714), uses the received access information acquisition key.
- the encrypted access information is decrypted to obtain the access information (step S715).
- the acquired access information is a dedicated driver for erasing the update module 133. Using the driver, the update module 131 invalidates the tampered and illegal update module 133 developed on the RAM 13 (step S716).
- the update module 131 deletes the access information acquisition key acquired from the access information acquisition key distribution module 220, the encrypted access information acquired from the access control module 140, the access information after decryption, and the like. To do.
- the protection control module 120 controls functions such as a decryption load function, a falsification detection function, and an analysis tool detection function, and not only protects the applications 110 and 111 from an attack by an attacker, but also the update module 131. , 132, 133 are protected from attacks by attackers.
- the update modules 131, 132, and 133 not only unilaterally detect falsification of the protection control module 120, but the update modules 131, 132, and 133 and the protection control module 120 monitor each other. Can do.
- the protection control module 120 verifies whether each update module has been tampered with using a tampering detection certificate. If any of the update modules 131, 132, 133 is detected to be falsified, the update software distribution module 210 is notified accordingly.
- the update software distribution module 210 is not notified.
- the update software distribution module 210 indicates that the protection control module 120 has been falsified.
- the update modules 131, 132, and 133 are requested to check whether the protection control module 120 has been altered.
- the update modules 131, 132, and 133 that have received the request from the update software distribution module 210 detect falsification of the protection control module 120, and notify the update software distribution module 210 of the falsification detection result. At this time, even if the protection control module 120 has been tampered with, it is not notified to other update modules.
- the update modules 131, 132, 133 and the protection control module 120 mutually monitor each other, and when the update module has been tampered with, the protection control module Since 120 can also detect it, the reliability of the software update system can be improved.
- Emodiment 3 In the third embodiment, when it is necessary to detect the tampering of the protection control module 120 and update the protection control module 120 instead of providing each update module with a function for updating the protection control module 120 in advance. By acquiring access information for updating the protection control module 120, a function for updating the protection control module 120 is added to the update module.
- the access information acquisition key distribution module 220 in the present embodiment holds an access information acquisition key for updating the protection control module 120 in addition to the access information acquisition key of each update module.
- the access information module 140 in the present embodiment holds encrypted access information for updating the protection control module 120 in addition to the access information of each update module.
- the update software distribution module 210 multiplexly encrypts the update protection control module 121 using a plurality of keys, and updates the multiple encryption update protection control module and the first key.
- the update module 131 included in the module group is transmitted as a transmission destination (steps S521 to S528).
- the update module included in the update module group receives the second key from the update software distribution module 210, decrypts the multi-encrypted update protection control module, and acquires the update protection control module (step S529). To S540).
- the update module 132 accesses the access information acquisition key distribution module 220 for updating the protection control module 120 in order to update the protection control module 120 to the update protection control module 121. Request to send the information acquisition key. Further, it requests the access control module 140 to transmit access information for updating the protection control module 120.
- the access information acquisition key distribution module 220 When the access information acquisition key distribution module 220 receives the access information acquisition key sending request, the access information acquisition key distribution module 220 inquires of the update software distribution module 210 whether or not the request source update module is an update module for updating the protection control module 120. If it is an update module that updates the protection control module 120, an access information acquisition key for updating the protection control module 120 is sent to the request source update module 132.
- the access information module 140 When the access information module 140 receives an access information transmission request from the update module 132, the access information module 140 transmits encrypted access information corresponding to the protection control module 120 to the update module 132.
- the update module 132 When the update module 132 receives the access information acquisition key from the access information acquisition key distribution module 220 and receives the encrypted access information from the access control module 140, the update module 132 decrypts the encrypted access information using the received access information acquisition key. And get access information.
- the acquired access information is a dedicated driver for updating the protection control module 120. Using the driver, the update module 132 updates the protection control module 120 to the update protection control module 121 (step S541). Then, the end of the update is notified to other update modules (step S542).
- Each update module included in the update module group 130 verifies whether or not the protection control module 120 has been correctly updated to the update protection control module 121. If the update control module 120 has been correctly updated, the MAC value of the protection control module 121 is generated. (Steps S543 to S551). (Other variations) Although the present invention has been described based on the above embodiment, it is needless to say that the present invention is not limited to the above embodiment. The following cases are also included in the present invention.
- the protection control module 120 is updated.
- the present invention is not limited to this, and a module other than the protection control module 120 such as an update module or an application may be updated.
- the update process of the update module will be described by taking the case of updating the update module 133 as an example.
- the update software distribution module 210 multiplexly encrypts the update update module 133 using a plurality of keys, and updates included in the update module group 130 A module (excluding the update module 133) is transmitted as a transmission destination.
- the update modules included in the update module group 130 update the update module 133 to the update update module 133.
- the update software distribution module 210 controls the timing at which a plurality of keys for decrypting the multiple update update module 133 are transmitted to the update modules included in the update module group 130. An attacker cannot obtain the update module 133 for update that is not encrypted.
- 28 to 30 are flowcharts showing an example of update processing of the update module.
- the update module 133 is updated as described above.
- FIGS. 20 to 22 are basically the same as FIGS. 20 to 22. The difference is that an update verification certificate, a decryption end notification, and an update end notification are not transmitted to the update module 133 to be updated.
- update module is invalidated
- present invention is not limited to this, and a module other than the update module, such as the protection control module 120 or an application, may be invalidated.
- the applications 100 and 110 may be software that provides functions other than the functions described above.
- the update module that has not been tampered with may update or invalidate all the update modules and the protection control module.
- the update modules 131, 132, and 133 include the monitoring control unit 301, the falsification check execution unit 302, the update control unit 303, the decryption unit 304, the authentication unit 305, the signature public key holding unit 306, and verification
- the key holding unit 307, the authentication key pair holding unit 308, the MAC value holding unit 309, the distributed information holding unit 310, the access information acquisition unit 311, and the invalidation processing unit 312 are configured. It may be configured only by components (monitoring control unit 301, falsification check execution unit 302, signature public key holding unit 306) necessary for monitoring processing, or components necessary for update processing (update control).
- the entire update module included in the update module group 130 may be configured to include components necessary for the monitoring process and the update process.
- the monitoring control unit 303 in the update modules 131, 132, and 133 controls tampering detection of other update modules and the selection process of the update module to be tampered with. That is, the monitoring control unit 303 of each update module performs control related to monitoring independently. However, the present invention is not limited to this, and the monitoring control unit 303 of one update module may control the entire monitoring process.
- the monitoring control unit 303 may control alteration detection timing and selection of an update module to be altered detection based on an instruction from the update server 200.
- the alteration check execution unit 302 executes the alteration check of other update modules and the protection control module 120.
- the alteration check target is limited to the entire module. Instead, it may be a part of the module, for example, data such as a specific function, function, or key. Further, it is not necessary to check all the alteration targets at once, but only to check whether the alteration targets are partly altered. At this time, the tampering check may be performed for each part obtained by dividing the alteration target into a certain size, or the tampering check may be performed for each part divided in units of functions or functions.
- a part of the alteration target may be checked in order for each alteration check, or a part to be checked for alteration may be randomly determined for each alteration check, and which part is to be checked for alteration. It may be given from another module or the outside of the device 100.
- the update modules 131, 132, 133 and the protection control module 120 may operate in an area protected from an attack by an attacker, such as a tamper resistant area.
- an update module composed only of components necessary for monitoring processing operates in an area protected from an attack by an attacker, another update module, an update software distribution module 210, and an access information acquisition key distribution module 220
- an update module in the protected area receives a notification that another update module or the protection control module 120 is detected to have been attacked, it accepts the notification unconditionally, The invalidation process may be performed, or the notification may be treated as a notice more important than the notification from another module, and the update process or the invalidation process may be determined.
- the protection control module may operate in a protection mode (such as a tamper resistant area) and the update module may operate in a normal mode (such as a tamper resistant area). Thereby, even when the protection control module operating in the protection mode becomes unreliable, it can be detected and updated.
- a protection mode such as a tamper resistant area
- the update module may operate in a normal mode (such as a tamper resistant area).
- the access information acquisition key distribution module 220 is in the update server 200 and the access control module 140 is in the device 100.
- the distribution module 220 and the access control module 140 may be in the device 100, the update server 200, or in each update module. Further, the access information acquisition key distribution module 220 and the access control module 140 may be one module instead of separate modules.
- the access information acquisition key distribution module 220 and the access control module 140 are a single module, the access information acquisition key and the encrypted access information are not transmitted to the update module, but the access information is directly transmitted. Also good.
- the access information acquisition key distribution module 220 and the access control module 140 are in the device 100, they may be in an area protected from attacks by tamper resistance or the like.
- the update server 200 is composed of the update software distribution module 210 and the access information acquisition key distribution module 220.
- the present invention is not limited to this, and the update software distribution module 210 and the access information acquisition key distribution module 220 may be one module, or may be configured by only one of the modules.
- the software update system 1000 performs the initial design process when the device 100 is manufactured at the factory.
- the present invention is not limited to this, and the software update system 1000 is initialized somewhere after the factory shipment, such as after sales. Processing may be performed. Further, the initialization process may be performed not only once but also twice or more.
- the tampering detection certificate and the authentication key certificate are certificates generated using the signature private key held by the update software distribution module 210.
- the present invention is not limited to this, and may be generated using different keys, or may be a certificate issued by a certificate issuing device other than the update software distribution module 210.
- falsification detection is performed using the MAC value calculated using the verification key.
- the present invention is not limited to this, and verification may be performed using the tampering detection certificate of the protection control module 120. Further, instead of performing falsification verification using a hash value like a MAC value or a certificate, falsification verification may be performed by checking a log.
- the update software distribution module 210 and other update modules are notified.
- the present invention is not limited to this, and any one or more of the update software distribution module 210 and other update modules may be notified.
- the update module may be stopped, or the device 100 and the protection control module 120 may be stopped. Furthermore, the protection control module that has been tampered with may be deleted.
- the update software distribution module 210 is not notified, but the present invention is not limited to this, and falsification detection processing is performed. As a result of the implementation, it may be notified that no alteration has been detected.
- the update modules 131, 132, 133 do not transmit the falsification detection result of the protection control module to other update modules. May be shared. Further, when there is an update module that does not share the detection result, the update module may be determined to be invalid and invalidated.
- the present invention is determined whether or not to update the protection control module 120 based on the falsification information.
- the present invention is not limited to this, and notification is made that tampering has occurred. Whether or not to update may be determined according to the number of update modules that have been updated. Further, as the operation at the time of analysis / determination, it is determined whether or not the protection control module 120 is updated and whether or not the protection control module 120 is invalidated. However, the present invention is not limited to this, and the device 100 is stopped. It may be determined whether or not to do so.
- the update modules 131, 132, 133 authenticate the update software distribution module 210, and then the update software distribution module 210 receives each update module 131,
- the update software distribution module 210 authenticates the respective update modules 131, 132, and 133, and thereafter, the update modules 131, 132, and 133 are updated.
- the software distribution module 210 may be authenticated, or each of the update modules 131, 132, 133 and the update software distribution module 210 may individually perform an authentication process.
- the challenge data is set to a different value for each update module.
- the present invention is not limited to this, and the challenge data may be the same value for all the update modules, or the update modules 131, 132, and 133 may be divided into a plurality of groups, and different values may be set for each group. .
- each update module 131, 132, 133 is individually processed in a process in which each update module 131, 132, 133 authenticates the update software distribution module 210.
- the present invention is not limited to this, and the result of signature verification is notified to other update modules, the verification result is shared between the update modules, and the authentication result of the self-update module And the authentication result received from another update module, it may be determined whether the update software distribution module 210 is a valid module.
- a determination method for example, when a certain number (for example, a majority) of update modules have been successfully authenticated, it is determined that they are valid modules, and otherwise they are determined not to be valid modules. There is.
- the update server 200 performs the mutual authentication process using the signature private key and the signature public key.
- An authentication key pair used for mutual authentication may be used separately from the private key and the signature public key.
- the authentication public key of the authentication key pair of the update server 200 may be held in advance by the update modules 131, 132, 133, or from the update server 200 to the update modules 131, 132, 133 during the mutual authentication process. It may be transmitted.
- Embodiment 1 of the present invention as the operation at the time of mutual authentication, when the update software distribution module 210 authenticates the respective update modules 131, 132, 133, the update modules 131, 132, 133 The authentication public key and the authentication key certificate are transmitted to the update software distribution module 210 together with the data.
- the present invention is not limited to this, and may be transmitted at different timings.
- the authentication public key and the authentication key certificate may be transmitted only when requested by the update software distribution module 210.
- the update software distribution module 210 may receive the authentication public keys and authentication key certificates of all the update modules, or the preset number is greater than or necessary for the recovery process.
- the authentication public keys and authentication key certificates of update modules that are less than the allowable number of unauthorized update modules may be received.
- the monitoring process is performed twice during one decoding (monitoring 3-1, 3-2, 5-1, 5-2).
- the present invention is not limited to this, and the monitoring process may be performed any number of times in accordance with the time of the decryption process. Monitoring processing may be performed during detection processing or during mutual authentication.
- the monitoring process is periodically performed at regular time intervals, the present invention is not limited to this, and the update process may be divided into a plurality of blocks and performed each time the process of the process block is completed. It may be performed at random time intervals, or may be performed at time intervals designated by the update server 200.
- each update module may acquire synchronization information indicating the timing of executing the monitoring process from an external server, and execute the monitoring process according to the acquired synchronization information. Thereby, each update module can execute the monitoring process at the same timing as the other update modules, so that it is possible to improve the detection accuracy of unauthorized update modules.
- the detection frequency at the normal time and at the time of recovery processing may be changed. For example, by making the detection frequency during the recovery process higher than usual, the protection control module can be fully protected during the recovery process.
- the detection frequency may be changed during the recovery process.
- the monitoring process pattern includes the update module 131 detecting falsification of the update module 132, the update module 132 detecting falsification of the update module 133,
- the update module 133 detects falsification of the update module 131.
- the present invention is not limited to this.
- the update module 131 detects falsification of the update module 133, and the update module 132 falsifies the update module 131. Detection may be performed, and the update module 133 may detect falsification with a predetermined pattern such as falsification detection of the update module 132, or may randomly determine which update module falsification detection is to be performed.
- Each update module may verify whether or not the update module (own update module) has been tampered with. Further, when alteration of the self-update module is detected, the self-update module itself may be invalidated. Furthermore, all the update modules do not have to be monitored from other update modules, and there may be an update module that is not monitored from other update modules, or may be monitored from a plurality of update modules. In addition, when changing the monitoring process pattern, it may be changed at regular intervals, such as every tampering detection process, or may be changed at random timing, or may be given from another module or the outside of the device 100. It may be changed at a given timing. Further, the plurality of update modules may transmit the result of falsification detection to the update server in the order specified by the update server.
- the update module 131 detects falsification of the update module 132 during the monitoring process, and the update module 132 detects falsification of the update module 133.
- all the update modules perform the monitoring process such that 133 performs the falsification detection of the update module 131
- the present invention is not limited to this, and one update module performs the update process, and the other update modules May perform the monitoring process.
- one update module may monitor an update module that is performing update processing, or a plurality or all of the update modules may monitor.
- the update module 131 detects falsification of the update module 132
- the update module 132 detects falsification of the update module 133
- the update module 133 performs update processing.
- the monitoring process can also be performed without interrupting the update process.
- the update module 131 detects whether the update module 132 has been falsified, the update module 132 detects whether the update module 133 has been falsified, and the update module 133 detects whether the update module 131 has been falsified.
- the loop method is used as the monitoring configuration, each of the plurality of update modules may monitor each other or may be combined. By adopting a configuration in which each of the plurality of update modules monitors each other, tampering verification accuracy can be further increased.
- the update module 132 overwrites the acquired protection control module 121 on the protection control module 120 and updates the protection control module 120.
- the present invention is not limited to this, and the difference between the protection control module 120 and the update protection control module 121 may be acquired from the update software distribution module 210, and only the difference may be updated.
- the update protection control module 121 may be executed in place of the protection control module 120 by writing to an area other than the protection control module 120.
- the update software distribution module 210 that has received the alteration detection notification
- the present invention is not limited to this, and the recovery process may be stopped when data such as a key is next transmitted from the update software distribution module 210 to the update module.
- the recovery process may be performed using a normal update module without using the altered update module, or the altered update module may be invalidated or updated. Also good.
- the timing for performing processing such as invalidation or update may be performed immediately, or may be performed at the timing when the key is sent next, or without using a tampered update module.
- the update server may designate an update module that performs processing for invalidating or updating the altered update module. Similarly, not only in the case where tampering is detected by the monitoring process, but also in the update module in which tampering is detected by the protection control module 120 during the detection process, and the update module that fails authentication during the mutual authentication process.
- the recovery process may be performed without using, or the altered update module may be invalidated or updated. Furthermore, when there is a tampered update module, the protection control module may not be updated.
- the update software distribution module 210 selects one update module to be used for decryption in the update process from the update module group 130 as the recovery operation.
- the method may be to select a predetermined update module, may be determined at random, may be determined based on information notified from the device 100, or in the order of authentication during mutual authentication. You may choose according to it.
- the update software distribution module 210 encrypts the update protection control module 121 using a plurality of keys in the update process.
- the update protection control module 121 is divided into a plurality of parts, and a split module is generated.
- Each of the split modules is individually encrypted and transmitted to the update module in a form corresponding to the update module on a one-to-one basis. You may do that.
- the update process when the encrypted divided module and the key used for encryption are transmitted, not all of them are transmitted at once, but the decryption process of one encrypted divided module is completed. Until then, the transmission to the update module is controlled so as not to transmit the key with the other encrypted division module.
- the encrypted split module may be transmitted to the update module at a time, and only the transmission timing of the key for decrypting them may be controlled, or the key may be transmitted to the update module at a time. Only the transmission timing of the encrypted divided module may be controlled, or all the keys and the encrypted divided module may be transmitted at a time.
- the division module may not be encrypted with one key, but may be encrypted in multiple using a plurality of keys. In this case, the transmission control of the key and the multiplex-encrypted split module is the same as when the update protection control module 121 is multiplex-encrypted using a plurality of keys.
- the encrypted division module and the key for decrypting it may be transmitted to one update module, or may be transmitted to different update modules, and the update modules may cooperate in the apparatus 100.
- the monitoring process may be performed before and after the division module is received.
- the update process may be stopped at the timing of transmitting the next division module.
- the plurality of update modules may notify the update server, and the update server may not transmit the decryption key to the tampered update modules.
- the division modules may be encrypted with different encryption keys.
- the applications 110 and 111 encrypted with the encryption / decryption key are used using the new encryption / decryption key (new encryption / decryption key).
- the present invention is not limited to this, and the re-encryption process may not be performed.
- the old encryption / decryption key may be used without generating a new encryption / decryption key, or the old encryption / decryption key and the new encryption / decryption key may be retained and the key used by the application may be changed.
- the old encryption / decryption key when the old encryption / decryption key becomes necessary, it may be generated again from the shared information.
- the old encryption / decryption key When the old encryption / decryption key is continuously used, the old encryption / decryption key increases every time the protection control module 120 is updated. In addition, it is necessary for each update module to hold the new encryption / decryption key and the old encryption / decryption key distribution information.
- Embodiment 1 of the present invention the device 100 is stopped when the protection control module 121 is not correctly updated.
- the present invention is not limited to this, and the mutual authentication process and the recovery process are performed again. You may do that.
- the access information is a dedicated driver for erasing the update module.
- the update module is erased. It may be a dedicated program for deleting the update module, may be a procedure manual that describes the procedure for deleting the update module, may be the address of the update module to be deleted, or delete the update module It may be an address of a program to be executed, or may be a register or memory address for operating a function for erasing the update module, or a value set in the register or memory.
- the access information may be information describing that the code portion is to be erased.
- the code position is stored in the header, and the code portion to be deleted may be determined with reference to the header.
- the access control module itself may be encrypted with an encryption key.
- the update module that has not been tampered with obtains a decryption key corresponding to the encryption key obtained by encrypting the access control module from the update server, decrypts the access control module using the obtained decryption key, and performs tampering. Access information corresponding to the updated update module may be acquired from the access control module, and the altered update module may be invalidated based on the acquired access information.
- the entire update module that has been tampered with is erased as an operation at the time of invalidation.
- the present invention is not limited to this, and a part of an unauthorized update module that has been tampered with.
- a specific function or function such as a read function for reading another module, data such as a key or information (ticket, token, socket) for accessing another module may be deleted, or another program May be inaccessible, inactivated, or updated.
- the update module that has performed the invalidation process may delete the access information corresponding to the invalidated update module stored in the access control module.
- the altered unauthorized update module is invalidated.
- the present invention is not limited to this, and the altered unauthorized update module may not be invalidated.
- it may be determined whether or not to invalidate depending on how many parts have been tampered with, which parts have been tampered with, etc., and the number of update modules to be invalidated depending on the number of unauthorized update modules that have been tampered with You may decide.
- the protection control module 120 when the protection control module 120 detects the falsification of the update modules 131, 132, and 133, the falsification detection certificate of each update module is verified. Instead, the tampering detection using the MAC value calculated using the verification key may be performed as in the case of the update modules 131, 132, and 133. In this case, a verification key is embedded in the protection control module 120, and verification of the falsification detection certificate is performed at the time of initial design. When there is no problem, it is necessary for the protection control module 120 to add a process of generating a MAC value using a verification key for each update module and holding it as a MAC value table.
- the update software distribution module 210 is not notified.
- the present invention is not limited to this, and the update software distribution module 210 may be notified that no alteration has been detected.
- the update software distribution module 210 requests the update modules 131, 132, and 133 to detect whether the protection control module 120 has been tampered with, but is not limited to this.
- the module 120 notifies the update software distribution module 210 that the update modules 131, 132, and 133 have been detected to be tampered with, it is determined that the detected update module has been tampered with, and the update modules are exchanged with each other.
- it is not used for authentication processing or recovery processing. It may be, may be the protection control module 120 to implement the invalidation process. At this time, it is desirable that the protection control module 120 be protected from attacks, such as operating in a tamper-resistant area.
- the update software distribution module 210 is inquired as to whether or not the update module that has requested the transmission of the access information acquisition key is an update module that updates the protection control module 120.
- the present invention is not limited to this, and it may be confirmed whether or not the update server 200 is an update module that updates the protection control module 120.
- each of the above modules may be an individual computer program, a module incorporated in an operating system, or a driver called from the operating system. It may be an application program.
- a part or all of the constituent elements constituting each of the above devices may be constituted by one system LSI (Large Scale Integration).
- the system LSI is an ultra-multifunctional LSI manufactured by integrating a plurality of components on a single chip, and specifically, a computer system including a microprocessor, ROM, 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 number of update modules has been described as three.
- the present invention is not limited to this, and there may be a plurality of update modules.
- the access control module 140 and the update module group 130 are incorporated in the OS 150.
- the update module has a function for updating the OS, the update is performed.
- the module may be stored as a program outside the management of the OS. Further, the protection control module may be incorporated in the OS.
- the module operating on the RAM is the target of tampering detection and invalidation, but the tampering of the module stored in the EEPROM may be performed or tampered with. In some cases, it may be invalidated. If there is even one update module that has been tampered with, all the update modules may be invalidated or updated. Both RAM and EEPROM modules may be disabled. Further, the module to be updated may be a module stored in the EEPROM or a module operating on the RAM.
- the device 100 may be any device capable of bidirectional data communication, such as a mobile terminal such as a mobile phone or a digital TV.
- the access information is encrypted with an individual access information acquisition key for each update module, but may be encrypted with the same access information acquisition key.
- a normal update module accesses the update server, acquires a decryption key corresponding to the access information acquisition key, decrypts the access control module using the acquired decryption key, and performs falsification from the access control module.
- the access information corresponding to the updated update module may be acquired, and the altered update module may be invalidated based on the acquired access information.
- the protection control module for update is encrypted with a plurality of encryption keys, but may be encrypted with one encryption key.
- the decryption key corresponding to the encryption key is divided into a plurality of parts, all of the divided decryption keys are transmitted using the update module that has not been tampered with as the transmission destination, and using all the divided decryption keys,
- the update module that has not been tampered with may decrypt the protection control module for update.
- the device 100A includes six update modules 121A to 126A.
- the update modules 121A to 126A include a control unit 250_j, a shared information storage unit 251_j, another module shared information storage unit 252_j, an authenticator storage unit 253_j, a list storage unit 254_j, an ID storage unit 255_j, a transmission unit 256_j, and a reception unit 257_j.
- the control unit 250_j includes a shared information update unit 260_j, a shared information division unit 261_j, a shared information verification unit 262_j, another module shared information verification unit 263_j, a partial information verification unit 264_j, a modified information generation unit 265_j, a list update unit 266_j, and an acquisition unit. 267_j.
- the other module shared information XXX_Y is shared information identified as the same as the shared information XXX, and represents that the update module 12Y holds it.
- the shared information is shared by the plurality of update modules, thereby providing redundancy for the shared information.
- other module shared information when there is no need to particularly distinguish the first and second other module shared information, it is simply referred to as other module shared information, and it is necessary to particularly distinguish each other module shared information from the distributed information. If there is no, it is simply called distributed information.
- the module to be withdrawn is the update module 121A, and that the partial information is generated by the update module 126A.
- the update module 126A issues a partial information generation instruction at the time of withdrawal from an external device (not shown) to generate partial information from other module shared information that is the same as the shared information “d_1” included in the withdrawal target update module 121A. Receive.
- the update module 126A generates and distributes five pieces of shared information from the first other module shared information “d1_1” (step S4000). In other words, the update module 126A distributes (decomposes) the first other module shared information “d1_1” into five pieces of shared information.
- the update module 122A which should have the same information as the first other module shared information “d1_1” included in the update module 126A, verifies the first other module shared information “d1_1” used for the partial information (Step 1). S4050).
- the update modules 122A to 126A perform the first and second update processes at the time of withdrawal, and update the shared information and the first and second other module shared information held by each of them (steps S4100 and S4150).
- the update modules 122A to 126A determine whether the update has been performed normally (step S4200). At this time, the update modules 122A to 125A notify the determination result to the update module 126A that is the partial information transmission source. Specifically, whether update information shared by shared modules is updated to the same value using shared information verification unit 262_j and other module shared information verification unit 263_j between update modules having shared information in common. The shared information is sent through a secure communication path, and it is verified whether the received shared information and the shared information held by each person have the same value. The update modules 122A to 125A notify the update result to the update module 126A, and the update module 126A temporarily holds the verification result.
- the update module 126A updates the distribution destination list T100.
- the update module 126A stores the updated distribution destination list in the list storage unit 254_6 and transmits it to the update modules 122A to 125A and the protection control module device.
- the update modules 122A to 125A and the protection control module device update the currently stored distribution destination list to the updated distribution destination list (step S4250).
- the shared information dividing unit 261_6 of the update module 126A generates five pieces of partial information (d_1_1 to d_1_5) from the first other module shared information “d1_1” 211_6 (step S4500). At this time, each partial information shall satisfy
- d1_1 d_1_1 + d_1_2 + d_1_3 + d_1_4 + d_1_5 mod L
- the shared information dividing unit 261_6 d_1_5 d1_1- (d_1_1 + d_1_2 + d_1_3 + d_1_4) To calculate d_1_5.
- the subtraction result may be a negative number, it is handled as partial information as it is.
- the shared information dividing unit 261_6 excludes the shared information “d_1” held by the device to be withdrawn (here, the update module 121A) and the remaining shared data except for the information “d1_1” and “d2_1” that should have the same value as this information. Different pieces of partial information are assigned to each piece of shared information that should be the same. Specifically, the partial information d_1_i is assigned to the shared information d_ (i + 1).
- the distributed information dividing unit 261_6 distributes two or three pieces of partial information for each update module of the distribution destination based on the contents of the distribution destination list T100 (step S4550). Two pieces of partial information are distributed to the own device. In this case, the shared information dividing unit 261_j outputs the shared information to the shared information updating unit 260_j.
- the distributed information dividing unit 261_6 distributes each piece of partial information as follows.
- the distributed information dividing unit 261_6 transmits the partial information d_1_1 and d_1_2 to the update module 122A (step S4600).
- the shared information dividing unit 261_6 transmits the partial information d_1_1, d_1_2, and d_1_3 to the update module 123A (step S4610).
- the shared information dividing unit 261_6 transmits the partial information d_1_2, d_1_3, and d_1_4 to the update module 124A (Step S462).
- the shared information dividing unit 261_6 transmits the partial information d_1_3, d_1_4, and d_1_5 to the update module 125A (Step S4630).
- the shared information dividing unit 261_6 outputs the partial information d_1_4 and d_1_5 to the shared information updating unit 260_6 and temporarily stores them.
- the i-th update module temporarily stores the received partial information in the shared information update unit 260_j.
- the second other module shared information 211_2 held by the update module 122A is used.
- the partial information verification unit 264_2 When the partial information verification unit 264_2 receives the partial information verification instruction from the update module 126A via the reception unit 257_j, the partial information d_1_2, d_1_3, and d_1_4 from the remaining modules 123A, 124A, 125A, and 126A excluding the update module 121A. , D_1_5 are collected (step S4700).
- the partial information verification unit 264_2 adds the d_1_1 stored in the shared information update unit 260_j and the received partial information d_1_2, d_1_3, d_1_4, d_1_5, calculates the value s ′, and calculates the calculated value s ′. Is verified as valid (step S4800). Specifically, the partial information verification unit 264_2 determines whether the calculated value s ′ matches the second other module shared information “d2_1” stored in the other module shared information storage unit 252_j. .
- the partial information verification unit 264_2 notifies the verification results to the update modules 123A to 126A (step S4850). Specifically, when the partial information verification unit 264_2 determines that the value s ′ is the same as the second other module shared information “d2_1” based on the verification result, the partial information verification unit 264_2 updates each verification result indicating that it is the same. Output to modules 123A-126A. When determining that they are not the same, the partial information verification unit 264_2 outputs a verification result indicating that they are not the same to each of the update modules 123A to 126A. For the module, the verification result is output to the shared information update unit 260_j.
- each of the update modules 122A to 126A when it is determined that the first other module shared information “d1_1” is not valid (“NO” in steps S5000, S5200, S5400, S5600, and S5800), the verification results do not match.
- the update module 122A or 126A is performing an illegal operation, so that each update module stops the withdrawal process.
- the shared information update unit 260_6 of the update module 126A outputs the shared information “d_6 ′” to the update module 122A (step S6000).
- the shared information update unit 260_2 of the update module 122A outputs the shared information “d_2 ′” to the update module 126A (step S6050).
- the shared information update unit 260_6 collects the shared information “d_2 ′” and “d2_2 ′” (step S6100). At this time, the shared information update unit 260_3 of the update module 123A transmits the shared information “d2_2 ′” (step S6110).
- the shared information update unit 260_2 collects the shared information “d_6 ′” and “d2_6 ′” (step S6150). At this time, the shared information update unit 260_3 of the update module 123A transmits the shared information “d2_2 ′” (step S6160).
- the shared information update unit 260_6 determines whether or not the collected shared information “d_2 ′” and “d2_2 ′” match (step S6200). If it is determined that they match ("YES” in step S6200), the shared information update unit 260_6 sets the first other module shared information to "d_2 '" (step S6250).
- the shared information update unit 260_2 determines whether or not the collected shared information “d_6 ′” and “d2_6 ′” match (step S6300). When it is determined that they match ("YES” in step S6300), the shared information update unit 260_2 sets the second other module shared information to "d_6 '" (step S6350).
- the update module 126A When the shared information update unit 260_6 determines that they do not match (“NO” in step S6200), the update module 126A notifies the update modules 122A to 125A to that effect.
- the update module 126A and the update modules 122A to 125A that have received the notification cancel the withdrawal process, return the value of the shared information of the own module to the value before the withdrawal process, and end the process.
- the update module 122A When the shared information update unit 260_2 determines that they do not match (“NO” in step S6300), the update module 122A notifies the update modules 123A to 126A to that effect.
- the update module 122A and the update modules 123A to 126A that have received the notification cancel the withdrawal process, return the value of the shared information of the own module before the withdrawal process, and end the process.
- FIG. 36 shows the shared information and the first and second other module shared information held by each of the update modules 122A to 126A after the withdrawal process.
- the update module 122A holds the updated shared information “d_2 ′” 212b, the first other module shared information “d1_3 ′” 213_2b, and the second other module shared information “d2_6 ′” 211_2b after the withdrawal process. Yes.
- the update module that transmits the deformation information to the update module to be added performs an illegal operation by transmitting to the update module that adds the deformation information from a plurality of update modules and generating the distributed information of the update module to be added.
- the act of sending unauthorized transformation information is prevented.
- the act which does not update shared information correctly is prevented.
- each update module checks whether the shared information has been correctly updated between the update modules having the same shared information in common, thereby preventing unauthorized updating by an unauthorized update module.
- the update module that sent the deformation information to the update module to be added has the shared information of the update module to be added in common, the update information to be added and the shared information of the update module to be added and the update to be added It is possible to calculate shared information that is not originally held from the deformation information transmitted to the module. Therefore, at the end of the update module addition process, the deformation information having a value different from the above is extracted from the distributed information owned by the update module that has transmitted the deformation information, and the deformation information is divided and transmitted to each update module. Therefore, it is necessary to update the value of the distributed information. A more detailed description will be given later.
- the update module to be added is the update module 127A, and the modification modules 121A and 126A generate deformation information.
- the update modules 121A and 126A perform a distribution process for generating deformation information and distributing it to each update module (step S7000).
- the update module 127A to be added and the update modules 121A and 126A that hold the same shared information as the update module 127A perform shared information generation processing for generating shared information (step S7050).
- the update module 127A performs storage processing of other module shared information for storing the first and second other module shared information (step S7100).
- the update modules 121A, 122A, 125A to 127A determine whether the update has been normally performed (step S7150).
- the update modules 121A, 122A, 125A, and 126A notify the update result to the update module 127A, and the update module 127A temporarily holds the verification result.
- the distributed information update unit 260_7 determines whether or not the certificates collected from the update modules 121A and 126A are valid (step S7250). Specifically, the distributed information update unit 260_7 determines whether or not the two collected certificates are the same.
- the shared information update unit 260_7 stores the certificate in the authenticator storage unit 253_7 (step S7300). After the certificate is stored, the shared information update unit 260_7 outputs an instruction indicating the start of the first division process at the time of addition to the update module 121A.
- the update module 121A generates seven pieces of partial information from the distributed information held by itself, and performs a first division process at the time of adding the generated pieces of partial information to the respective update modules (step S7350).
- the update modules 121A to 127A perform the first update process at the time of adding the shared information using the distributed partial information (step S7400).
- the update modules 121A to 127A determine whether the update has been performed normally (step S7450). At this time, the update modules 122A to 127A notify the determination result to the update module 121A that is the partial information transmission source. Specifically, whether update information shared by shared modules is updated to the same value using shared information verification unit 262_j and other module shared information verification unit 263_j between update modules having shared information in common. The shared information is sent through a secure communication path, and it is verified whether the received shared information and the shared information held by each person have the same value. The update modules 122A to 127A notify the verification result to the update module 121A, and the update module 121A temporarily holds the verification result.
- the update modules 121A to 127A perform the second update process at the time of adding to update the distributed information using the distributed partial information (step S7550).
- the update modules 121A to 127A determine whether the update has been performed normally (step S7600).
- the update modules 121A to 125A and 127A notify the update result to the update module 126A, and the update module 126A temporarily holds the verification result.
- the update module 126A updates the distribution destination list T100.
- the update module 126A stores the updated distribution destination list in the list storage unit 254_6 and transmits it to the update modules 121A to 125A, 127A and the protection control module.
- the update modules 121A to 125A, 127A and the protection control module update the currently stored distribution destination list to the updated distribution destination list (step S7650).
- step S7150 When it is determined that the update module to be updated is not normally updated (“NO” in step S7150), and when it is determined that the certificate is not valid (“NO” in step S7250).
- the update module 127A notifies the update modules 121A, 122A, 125A and 126A to be updated.
- Each update module to be updated cancels the addi- tion, returns the value of the distributed information of its own module before the addition process, and ends the process.
- the update module 121A notifies the update modules 122A to 127A to that effect.
- the update modules 121A to 127A cancel the addition process, return the value of the shared information of the own module to the value before the addition process, and end the process.
- step S7600 the update modules 121A to 127A stop the withdrawal process, return the value of the shared information of the own module before the withdrawal process, and end the process.
- the deformation information generation unit 265_6 of the update module 126A receives the shared information generation instruction at the time of addition from the external device, the deformation information generation unit 265_6 generates the deformation information n (step S8000).
- the deformation information generation unit 265_1 of the update module 121A generates the deformation information m when receiving the added shared information generation instruction from the external device (step S8050).
- the deformation information generation unit 265_6 outputs the generated deformation information n to the update modules 121A, 125, and 127 (step S8100).
- the deformation information generation unit 265_1 outputs the generated deformation information m to the update modules 122A, 126A, and 127A (step S8150).
- the shared information update unit 260_6 of the update module 126A Upon receiving the deformation information m, the shared information update unit 260_6 of the update module 126A temporarily stores the received deformation information m (step S8200).
- the shared information update unit 260_1 of the update module 121A Upon receiving the deformation information n, the shared information update unit 260_1 of the update module 121A temporarily stores the received deformation information n (step S8250).
- the shared information update unit 260_7 of the update module 127A Upon receiving the deformation information n and m, the shared information update unit 260_7 of the update module 127A temporarily stores the received deformation information n and m (step S8450).
- the shared information update unit 260_6 updates (replaces) the first other module shared information “d1_1” stored in the other module shared information storage unit 252_6 to “d1_7” (step S8650).
- the shared information update unit 260_7 stores the generated shared information “d_7” in the shared information storage unit 251_7 (step S8750).
- the shared information update unit 260_1 updates (replaces) the second other module shared information “d2_1” stored in the other module shared information storage unit 252_1 to “d2_7” (step S8850).
- the shared information update unit 260_7 of the update module 127A outputs the shared information request instruction to the update module 121A and the second other module shared information request instruction to the update module 122A, respectively, and the shared information “d_1 ′” and “d2_1 ′” Are collected (step S9000).
- the acquisition unit 267_1 of the update module 121A that has received the shared information request instruction acquires the shared information “d_1 ′” and outputs it to the update module 127A (step S9010).
- the acquisition unit 267_2 of the update module 122A that has received the second other module shared information request instruction acquires the shared information “d2_1 ′” and outputs it to the update module 127A (step S9020).
- the shared information update unit 260_7 determines whether or not the collected shared information “d_1 ′” and “d2_1 ′” have the same value (step S9050).
- the shared information update unit 260_7 stores the collected shared information “d_1 ′” in the other module shared information storage unit 252_7 as the first other module shared information. (Step S9100).
- the shared information update unit 260_7 outputs a shared information request instruction to the update module 126A and a first other module shared information request instruction to the update module 125A, and collects shared information “d_6 ′” and “d1_6 ′” ( Step S9150).
- the acquisition unit 267_6 of the update module 126A that has received the shared information request instruction acquires the shared information “d_6 ′” and outputs it to the update module 127A (step S9160).
- the acquisition unit 267_5 of the update module 125A that has received the first other module shared information request instruction acquires the shared information “d1_6 ′” and outputs it to the update module 127A (step S9170).
- the shared information update unit 260_7 determines whether or not the collected shared information “d_6 ′” and “d1_6 ′” have the same value (step S9200).
- the shared information update unit 260_7 stores the collected shared information “d_6 ′” in the other module shared information storage unit 252_7 as the second other module shared information. (Step S9250).
- step S9050 or step S9200 the update module 127A notifies the update modules 121A to 126A to that effect.
- the shared information dividing unit 261_1 of the update module 121A generates seven pieces of partial information (d_1_1 to d_1_7) from the shared information “d_1 ′” (step S9500). In other words, the shared information dividing unit 261_1 distributes (decomposes) the shared information “d_1 ′” into seven pieces of partial information (d_1_1 to d_1_7). At this time, each partial information shall satisfy
- d_1 ′ d_1_1 + d_1_2 + d_1_3 + d_1_4 + d_1_5 + D_1_6 + d_1_7 mod L
- the shared information dividing unit 261_1 generates partial information (d_1_1 to d_1_6) by generating six random numbers using a random number generator.
- the shared information dividing unit 261_1 d_1_7 d_1 ′ ⁇ (d_1_1 + d_1_2 +... + d_1_6) To calculate d_1_7.
- the subtraction result may be a negative number, it is handled as partial information as it is.
- the distributed information dividing unit 261_1 distributes the generated (distributed) three or six pieces of partial information to the modules 122A to 127A (step S9550).
- the shared information dividing unit 261_1 distributes the generated partial information d_1_2 to d_1_7 to the update modules 122A and 127 (steps S9560 and S9610).
- Partial information d_1_ (i ⁇ 1), d_1_i, and d_1_ (i + 1) is distributed to the i-th module in the other modules 123A to 126A (steps S9570, S9580, S9590, and S9600).
- the update modules 122A to 127A temporarily store the received partial information in the distributed information update unit 260_j.
- the first and second other module shared information “d1_2” and “d2_7 ′” stored in the shared information storage unit 251_1 are updated to new first and second other module shared information “D1_2” and “D2_7”. (Step S9750).
- the shared information “d_2” is updated to new shared information “D_2” (step S9800).
- the shared information “d_3” is updated to new shared information “D_3” (step S9900).
- the shared information “d_4” is updated to new shared information “D_4” (step S10000).
- Step S10050 the first and second other module shared information “d1_5” and “d2_3” stored in the shared information storage unit 251_4 are replaced with the new first and second other module shared information “D1_5” and “D2_3”.
- the shared information “d_5” is updated to new shared information “D_5” (step S1010).
- the shared information “d_6 ′” being updated is updated to new shared information “D_6” (step S10200).
- Step S10250 the first and second other module shared information “d1_7” and “d2_5” stored in the shared information storage unit 251_6 are replaced with the new first and second other module shared information “D1_7” and “D2_5”.
- the shared information “d_7” is updated to new shared information “D_7” (step S10300).
- the shared information dividing unit 261_6 of the update module 126A generates seven pieces of partial information (d_6_1 to d_6_7) from the shared information “D_6” (step S1050). In other words, the shared information dividing unit 261_6 distributes (decomposes) the shared information “D_6” into seven pieces of partial information (d_6_1 to d_6_7). At this time, each partial information shall satisfy
- D_6 d_6_1 + d_6_2 + d_6_3 + d_6_4 + d_6_5 + D_6_6 + d_6_7 mod L
- the shared information dividing unit 261_6 generates partial information (d_6_1 to d_6_6) by generating six random numbers using a random number generator.
- the shared information dividing unit 261_6 d — 6 — 7 D — 6 ⁇ (d — 6 — 1 + d — 6 — 2+... + d — 6 — 6)
- d_6_7 To calculate d_6_7.
- the subtraction result may be a negative number, it is handled as partial information as it is.
- the distributed information dividing unit 261_6 distributes the generated (distributed) three or six pieces of distributed information to each of the update modules 121A to 125A and 127A (step S10550).
- the update modules 121A to 125A and 127A temporarily store the received partial information in the distributed information update unit 260_j.
- the shared information “D_1” being updated is updated to new shared information “D_1 ′” (step S10700).
- the existing shared information “D_2” is updated to new shared information “D_2 ′” (step S10800).
- the shared information “D_3” that has been updated is updated to new shared information “D_3 ′” (step S1090).
- the shared information “D_4” is updated to new shared information “D_4 ′” (step S11000).
- the distributed information “D_5” is updated to new shared information “D_5 ′” (step S11100).
- the first and second other module shared information “D1_7” and “D2_5 ′” that are generated and stored in the shared information storage unit 251_6 are replaced with the first and second other module shared information “D1_7 ′” and “D2_5 ′”. (Step S11250).
- the shared information “D_7” that is present is updated to new shared information “D_7 ′” (step S11300).
- step S11350 the subtraction result may be a negative number, it is treated as new shared information as it is.
- FIG. 49 shows the shared information and the first and second other module shared information held by each of the update modules 121A to 127A after the addition processing.
- the update module 121A holds the updated shared information “D_1 ′” 211c, the first other module shared information “D1_2 ′” 212_1c, and the second other module shared information “D2_7 ′” 217_1c after the addition process. Yes.
- the first and second update processes at the time of addition are processes that are necessary because the update modules 121A and 126A have too much distributed information.
- the update module 121A holds three pieces of shared information of shared information “d_1 ′”, other module shared information “d1_2”, and “d2_7” after the end of step S7300 of the additional process.
- the other module shared information “d2_7” is the sum of the deformation information m generated by the update module 121A and the deformation information n generated by the update module 126A. Therefore, the deformation information n transmitted by the update module 126A can be obtained from the other module shared information “d2_7” and the deformation information m generated by the update module 121A.
- the updated module is updated from the other module shared information “d2_6” before the update and the deformation information n generated by the update module 126A.
- the update module 121A can hold four pieces of shared information, which should originally hold only three pieces of shared information, and thus has too much shared information. Since the same can be said for the update module 126A, it is necessary to update the shared information owned by the update modules 121A and 126A at the end of the addition process of the update module in order to eliminate the excessive possession of such distributed information. There is.
- the two update modules generate and transmit the deformation information.
- the present invention is not limited to this. All update modules may be configured to transmit deformation information. (49) The above embodiment and the above modifications may be combined.
- the present invention can be widely applied to software update apparatuses that acquire update software from an external server connected via a network and update the software in the apparatus with the acquired software.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
所定のアプリケーションが改ざんされていないかを検証する保護制御モジュール(120)を更新する更新用の保護制御モジュール(121)を外部サーバ(200)から受信し、前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群(130)を備え、前記更新モジュール群に含まれる複数の更新モジュールの各々は、同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行い、前記複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記更新モジュール群に含まれる他の更新モジュールが、前記不正動作を行う可能性があると検証された更新モジュールを無効化することを特徴とするソフトウェア更新装置。
Description
本発明は、機器内部で動作するモジュール等を無効化する技術に関する。
従来、認証鍵等の秘匿データを有しているアプリケーションが、悪意のある第三者(以下、「攻撃者」という)に解析されないよう、耐タンパモジュールを備えた機器が知られている。耐タンパモジュールは、ハードウェアとして機器上に実装されるが、日々新たな攻撃手法が考案される昨今の現状を踏まえると、新たな攻撃手法に柔軟に対応するためにも、更新が容易なソフトウェアでアプリケーションを保護することが望ましい。ソフトウェアによるアプリケーションの保護には、例えば、ハッシュ値を用いた改ざん検証や、アプリケーションを利用しない時には暗号化して保存しておき、利用する時にのみ復号してメモリへロードする復号ロード機能等がある。ところが、その場合には、アプリケーションを保護するソフトウェア(以下、「保護制御モジュール」という)自体が攻撃者により攻撃され得る。保護制御モジュールが改ざんされると、アプリケーションが攻撃者の攻撃にさらされることになる。
そこで、保護制御モジュールの改ざん検出を行い、保護制御モジュールが改ざんされた場合には、ネットワークを通して外部のサーバから正常な保護制御モジュールを機器にダウンロードし更新する方法が考えられる。このような保護制御モジュールの改ざん検出に関する先行技術としては、特許文献1に記載のものがある。
特許第3056732号公報(第4~6頁、図2)
岡本龍明、山本博資、「現代暗号」、産業図書(1997年)
ITU-T Recommendation X.509 (1997 E): Information Technology - Open Systems Interconnection - The Directory: Authentication Framework,1997
しかしながら、保護制御モジュールを更新する機能を担うモジュール(以下、「更新モジュール」という)も攻撃者により攻撃され得る。攻撃者による攻撃で更新モジュールが改ざんされ、当該更新モジュールにより保護制御モジュールの更新が行われると、保護制御モジュールが正しく更新されず、アプリケーションが有する秘匿データが漏洩する恐れがある。更新モジュールの改ざん検出を行うモジュールをさらに備えることにより、更新モジュールの改ざんを検出することは可能となるが、当該モジュール自体もやはり改ざんされる恐れがあるため、根本的な解決には至らない。
以上は、保護制御モジュールの更新例を用いて説明したが、保護制御モジュールの更新以外に、アプリケーションや更新モジュール自身を更新することも考えられる。このような場合もそれらが正しく更新されないことにより同様の課題が生じる。
本発明は、改ざんされた更新モジュールによる不正な動作を防止するソフトウェア更新装置を提供することを目的とする。
上記目的を達成するために、本発明の一実施態様であるソフトウェア更新装置は、所定のアプリケーションと、前記所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、前記保護制御モジュールを更新する更新用の保護制御モジュールを外部サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群と、を備え、前記更新モジュール群に含まれる複数の更新モジュールの各々は、同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行い、前記複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記更新モジュール群に含まれる他の更新モジュールが、前記不正動作を行う可能性があると検証された更新モジュールを無効化することを特徴とする。
上記課題を解決するための手段に記載の構成により、更新モジュール群に含まれる複数の更新モジュールの各々は、同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行うので、同時に起動している全ての更新モジュールに対して不正動作を行わないか検証が行われる。同時に起動している全ての更新モジュールの検証を実現することができるので、改ざんされた更新モジュールがあればそれを発見でき、一つでも正常な更新モジュールが存在すれば、当該更新モジュールにより改ざんされた更新モジュールを無効化することができるので、改ざんされた更新モジュールを排除でき、更新モジュール全体としての安全性を確保することができる。その結果、改ざんされた更新モジュールによる不正な動作(例えば、不正な保護制御モジュールに更新する)を防止することができるので、改ざんされた更新モジュールを介して保護制御モジュールが不正な保護制御モジュールに更新されるのを防止でき、前記不正な保護制御モジュールによる前記所定のアプリケーションへの攻撃を防止できる。ゆえに、アプリケーションが有する秘匿データが漏洩するリスクを低減することができる。
さらに、更新モジュールが無効化機能を備えることにより、別途無効化する手段を設ける必要はなく、簡易な構成で改ざんされたモジュールを排除することができる。
ここで、前記更新モジュール群に含まれる複数の更新モジュールの各々を無効化するための所定の情報を格納し、所定の暗号鍵で暗号化されたアクセス制御モジュールをさらに備え、前記他の更新モジュールは、前記外部サーバにアクセスして前記外部サーバから前記所定の暗号鍵に対応した復号鍵を取得し、前記取得した復号鍵を用いてアクセス制御モジュールを復号し、前記不正動作を行う可能性があると検証された更新モジュールを無効化するための所定の情報を前記アクセス制御モジュールから取得し、前記所定の情報に基づいて前記不正動作を行う可能性があると検証された更新モジュールを無効化するとしてもよい。
これにより、アクセス制御モジュールが複数の更新モジュールの各々を無効化するための所定の情報を格納しているので、複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合に当該更新モジュールを無効化するための所定の情報の特定が容易となり、当該更新モジュールを無効化する処理を簡易に行うことができる。
また、アクセス制御モジュールは所定の暗号鍵で暗号化されているので、所定の情報が外部に漏れるのを防止できる。したがって、例えば、不正動作を行う可能性があると検証された更新モジュールを無効化するための所定の情報が事前に書き換えられて、当該更新モジュールが無効化されずに残存することを防止することができる。
さらに、他の更新モジュールは、外部サーバから復号鍵を取得するので、当該復号鍵がソフトウェア更新装置への攻撃により漏洩することはなく、復号鍵の秘匿性を担保できる。加えて、他の更新モジュールは、取得した復号鍵を用いてアクセス制御モジュールを復号し、不正動作を行う可能性があると検証された更新モジュールを無効化するための所定の情報をアクセス制御モジュールから取得し、当該所定の情報に基づいて当該更新モジュールを無効化するので、当該所定の情報の秘匿性を担保しつつ当該所定の情報を無効化に利用でき、不正動作を行う可能性があると検証された更新モジュールが無効化されずに残存することなく確実に無効化できる。
ここで、前記更新モジュール群に含まれる複数の更新モジュールの各々を無効化するための所定の情報を格納しているアクセス制御モジュールをさらに備え、前記所定の情報は、更新モジュール毎に異なる暗号鍵で暗号化されており、前記他の更新モジュールは、前記外部サーバにアクセスし、前記不正動作を行う可能性があると検証された更新モジュールに関する所定の情報を暗号化した暗号鍵に対応した復号鍵を前記外部サーバから取得し、前記不正動作を行う可能性があると検証された更新モジュールに関する所定の情報を前記取得した復号鍵を用いて復号し、前記復号された所定の情報に基づいて前記不正動作を行う可能性があると検証された更新モジュールを無効化するとしてもよい。
これにより、アクセス制御モジュールが格納している所定の情報は、更新モジュール毎に異なる暗号鍵で暗号化されているので、所定の情報において全ての更新モジュールで共通の復号鍵を用いる場合に、当該復号鍵が漏洩した場合に全ての更新モジュールについての所定の情報が漏洩する危険があるのに対し、復号鍵が漏洩した場合の被害を最小限に抑えることができる。したがって、不正動作を行う可能性があると検証された更新モジュールに対応する所定の情報が事前に書き換えられて、当該更新モジュールが無効化されずに残存する危険性を減少させることができる。
ここで、前記所定の情報は、前記更新モジュール群に含まれる複数の更新モジュールの各々の格納位置情報であるとしてもよい。
また、前記他の更新モジュールは、前記格納位置情報に基づいて、前記不正動作を行う可能性があると検証された更新モジュールの全体を消去することで無効化するとしてもよい。
これにより、他の更新モジュールは、不正動作を行う可能性があると検証された更新モジュールに対応する格納位置情報に基づいて、当該更新モジュール全体を消去することで無効化するので、当該更新モジュールは完全に無効化され、当該更新モジュールの再起動を確実に阻止することができる。
ここで、前記格納位置情報は、前記更新モジュールが無効化される際に消去される消去部分を示し、前記他の更新モジュールは、前記格納位置情報に基づいて、前記不正動作を行う可能性があると検証された更新モジュールの消去部分を消去することで無効化するとしてもよい。
これにより、格納位置情報は、更新モジュールが無効化される際に消去される消去部分を示しているので、不正動作を行う可能性があると検証された更新モジュールを無効化する際に当該更新モジュールの全てを無効化する場合と比較し、当該更新モジュールの起動を不能にしつつ無効化する際の処理負担を軽減することができる。
ここで、前記格納位置情報は、前記更新モジュールが無効化される際に消去されるコード部分を示し、前記他の更新モジュールは、前記格納位置情報に基づいて、前記不正動作を行う可能性があると検証された更新モジュールのコード部分を消去することで無効化するとしてもよい。
これにより、格納位置情報は、更新モジュールが無効化される際に消去されるコード部分を示しているので、不正動作を行う可能性があると検証された更新モジュールを無効化する際に当該更新モジュールの全てを無効化する場合と比較し、当該更新モジュールの起動を不能にしつつ無効化する際の処理負担を軽減することができる。
ここで、前記他の更新モジュールは、前記不正動作を行う可能性があると検証された更新モジュールを無効化した場合、前記アクセス制御モジュールに格納されている、無効化した更新モジュールについての所定の情報を消去するとしてもよい。
これにより、無効化された更新モジュールに対応する所定の情報が外部に漏洩することはないので、当該更新モジュールを再度有効にすることを阻止することができる。
1000 ソフトウェア更新システム
100 機器
110 アプリケーション
111 アプリケーション
120 保護制御モジュール
130 更新モジュール群
131 更新モジュール
132 更新モジュール
133 更新モジュール
140 アクセス制御モジュール
200 更新サーバ
210 更新用ソフトウェア配布モジュール
220 アクセス情報取得鍵配布モジュール
301 監視制御部
302 改ざんチェック実行部
303 更新制御部
304 復号部
305 認証部
306 署名公開鍵保持部
307 検証鍵保持部
308 認証鍵対保持部
309 MAC値保持部
310 分散情報保持部
311 アクセス情報取得部
312 無効化処理部
401 暗号鍵生成部
402 暗号処理部
403 暗号鍵保持部
404 認証部
405 更新判定部
406 不正モジュール判定部
407 更新モジュール選択部
408 証明書生成部
409 署名秘密鍵保持部
410 更新用ソフトウェア保持部
501 制御部
502 復号ロード部
503 改ざん検出部
504 解析ツール検出部
505 暗復号鍵保持部
506 暗復号鍵生成部
507 暗復号鍵分散部
508 証明書生成部
509 暗復号鍵復元部
601 通信部
602 アクセス情報保持部
701 通信部
702 アクセス情報取得鍵保持部
100 機器
110 アプリケーション
111 アプリケーション
120 保護制御モジュール
130 更新モジュール群
131 更新モジュール
132 更新モジュール
133 更新モジュール
140 アクセス制御モジュール
200 更新サーバ
210 更新用ソフトウェア配布モジュール
220 アクセス情報取得鍵配布モジュール
301 監視制御部
302 改ざんチェック実行部
303 更新制御部
304 復号部
305 認証部
306 署名公開鍵保持部
307 検証鍵保持部
308 認証鍵対保持部
309 MAC値保持部
310 分散情報保持部
311 アクセス情報取得部
312 無効化処理部
401 暗号鍵生成部
402 暗号処理部
403 暗号鍵保持部
404 認証部
405 更新判定部
406 不正モジュール判定部
407 更新モジュール選択部
408 証明書生成部
409 署名秘密鍵保持部
410 更新用ソフトウェア保持部
501 制御部
502 復号ロード部
503 改ざん検出部
504 解析ツール検出部
505 暗復号鍵保持部
506 暗復号鍵生成部
507 暗復号鍵分散部
508 証明書生成部
509 暗復号鍵復元部
601 通信部
602 アクセス情報保持部
701 通信部
702 アクセス情報取得鍵保持部
以下、図面に基づき本発明の実施の形態を説明する。
(実施の形態1)
1.ソフトウェア更新システム1000の構成
図1は、本発明の実施の形態1において、本発明に係るソフトウェア更新装置が適用されたソフトウェア更新システム1000の全体構成図である。ソフトウェア更新システム1000は、図1に示すように、機器100と更新サーバ200とから構成され、機器100は、ネットワークを介して更新サーバ200と接続されている。
(実施の形態1)
1.ソフトウェア更新システム1000の構成
図1は、本発明の実施の形態1において、本発明に係るソフトウェア更新装置が適用されたソフトウェア更新システム1000の全体構成図である。ソフトウェア更新システム1000は、図1に示すように、機器100と更新サーバ200とから構成され、機器100は、ネットワークを介して更新サーバ200と接続されている。
1.1.機器100の構成
機器100は、ネットワークを介して、例えば、コンテンツ配信サーバから音楽や映像等のコンテンツを購入し再生したり、金融機関のシステムにアクセスし、ネットバンキング(預金の残高照会や口座振り込み等)を行ったりするなど、ユーザに対してネットワークを利用した様々な機能を提供するデータ処理装置である。
機器100は、ネットワークを介して、例えば、コンテンツ配信サーバから音楽や映像等のコンテンツを購入し再生したり、金融機関のシステムにアクセスし、ネットバンキング(預金の残高照会や口座振り込み等)を行ったりするなど、ユーザに対してネットワークを利用した様々な機能を提供するデータ処理装置である。
機器100は、アプリケーションソフト(以下、「アプリ」という)110、111と、保護制御モジュール120と、更新モジュール群130と、アクセス制御モジュール140とを含んで構成される。
アプリ110、111は、機器100を使用するユーザに対して、ネットワークを利用した機能を提供するソフトウェアであり、例えば、ネットワーク上のコンテンツ配信サーバ(不図示)から音楽や映像等のコンテンツを購入し、購入したコンテンツを再生するソフトウェアや、ネットワークを介して金融機関のシステム(不図示)にアクセスし、預金の残高照会や口座振り込み等のネットバンキングを行うソフトウェア等である。
アプリ110、111は、コンテンツ配信サーバや金融機関のシステムと認証を行うための認証鍵等の秘匿データを有している。この秘匿データは、悪意のある第三者(以下、「攻撃者」という)によりアプリから抜き取られ、不正に利用されないよう、保護される必要がある。
保護制御モジュール120は、攻撃者によりアプリ110、111が解析され、認証鍵等の秘匿データが抜き取られないようにアプリ110、111を保護するための機能を有するモジュールである。アプリを保護するための機能としては、例えば、アプリを利用しない時には暗号化して保存しておき、アプリを利用する時にのみ復号してメモリへロードする復号ロード機能や、アプリが改ざんされていないかをチェックする改ざん検出機能、デバッガなどの解析ツールが動作していないかをチェックする解析ツール検出機能などがある。保護制御モジュール120は、これらの機能の動作を制御し、アプリ110、111を保護する。
保護制御モジュール120は、改ざん検出機能や解析ツール検出機能により、攻撃者による攻撃を検出した場合には、アプリ110、111の動作を停止し、アプリ110、111が利用していたメモリ領域、特に秘匿データが記憶されたメモリ領域のクリア処理等を行い、秘匿データの漏洩を防止する。
更新モジュール群130は、複数の更新モジュール(ここでは3つ)から構成される。更新モジュール131、132、133は、機器100内部のソフトウェア(ここでは保護制御モジュール120)が改ざんされていないかを検出し、改ざんされている場合には、機器100外部の更新サーバ200から更新用のソフトウェア(保護制御モジュール121)をダウンロードし保護制御モジュールを更新する機能を持つ。
また、更新モジュール131、132、133は、攻撃者によって更新モジュール自体が改ざんされ、改ざんされた更新モジュールが不正に利用されることを防止するために、更新モジュール間で改ざん検出を実施する。更新モジュールの改ざんが検出された場合には、他の正常な更新モジュールは、後述するアクセス制御モジュール140から暗号化アクセス情報を、後述するアクセス情報取得鍵配布モジュールからアクセス情報取得鍵をそれぞれ取得し、取得した暗号化アクセス情報とアクセス情報取得鍵とに基づいて、改ざんされた更新モジュールを無効化する。これにより、更新モジュール群に含まれる一部の更新モジュールが攻撃され、改ざんされた場合であっても、それを検出し、攻撃に対処することが可能となる。
アクセス制御モジュール140は、更新モジュール131、132、133が他の更新モジュールを消去するために必要な情報(アクセス情報)を保持するモジュールである。アクセス情報は、消去対象となる更新モジュールを消去するために必要な情報(例えば、更新モジュールを消去するための専用ドライバや更新モジュールが配置されているアドレス、消去に必要な手順が書かれた手順書等)であり、更新モジュール毎にそれぞれ個別のアクセス情報取得鍵で暗号化されている。
1.2.更新サーバ200の構成
更新サーバ200は、機器100内部のソフトウェア(ここでは保護制御モジュール120)を更新するために必要な更新用のソフトウェア(保護制御モジュール121)を機器100に配布するソフトウェア配布装置である。
更新サーバ200は、機器100内部のソフトウェア(ここでは保護制御モジュール120)を更新するために必要な更新用のソフトウェア(保護制御モジュール121)を機器100に配布するソフトウェア配布装置である。
更新サーバ200は、更新用ソフトウェア配布モジュール210とアクセス情報取得鍵配布モジュール220とを含んで構成される。
更新用ソフトウェア配布モジュール210は、機器100内部のソフトウェア(保護制御モジュール120)が更新される際に、更新モジュール131、132、133と連携して動作し、更新用のソフトウェア(保護制御モジュール121)を機器100へ安全に送信するためのモジュールである。
アクセス情報取得鍵配布モジュール220は、機器100内部の更新モジュール131、132、133からのアクセス情報取得鍵取得要求に応じて、アクセス情報取得鍵を更新モジュールへ配布するモジュールである。
機器100内部のソフトウェア(保護制御モジュール120、更新モジュール131、132、133)が攻撃され改ざんされた場合には、改ざんされていない更新モジュールとアクセス制御モジュール140とアクセス情報取得鍵配布モジュール220とが連係して動作し、改ざんされたソフトウェアを消去または更新する。
なお、機器100と更新サーバ200との間のネットワークを介した通信には、通信データが暗号化されるなど、セキュリティの確保された通信路を用いてもよい。
続いて、各モジュールの詳細を順に説明する。
2.更新モジュールの詳細な構成
図2は、更新モジュールの機能ブロック図である。実際には、この構成は更新モジュールの数だけ存在するが、ここでは、代表的に更新モジュール131のものだけ示す。他の更新モジュールの構成も基本的に同一構成である。同図に示すように、更新モジュール131は、監視制御部301、改ざんチェック実行部302、更新制御部303、復号部304、認証部305、署名公開鍵保持部306、検証鍵保持部307、認証鍵対保持部308、MAC値保持部309、分散情報保持部310、アクセス情報取得部311、及び無効化処理部312を含んで構成される。
2.更新モジュールの詳細な構成
図2は、更新モジュールの機能ブロック図である。実際には、この構成は更新モジュールの数だけ存在するが、ここでは、代表的に更新モジュール131のものだけ示す。他の更新モジュールの構成も基本的に同一構成である。同図に示すように、更新モジュール131は、監視制御部301、改ざんチェック実行部302、更新制御部303、復号部304、認証部305、署名公開鍵保持部306、検証鍵保持部307、認証鍵対保持部308、MAC値保持部309、分散情報保持部310、アクセス情報取得部311、及び無効化処理部312を含んで構成される。
監視制御部301は、予め設定されている、改ざん検出対象となる更新モジュール(ここでは更新モジュール132)の識別子を保持しており、更新用ソフトウェア配布モジュール210から更新処理開始指示を受け付けると、識別子に対応する更新モジュールの改ざんチェックを、予め設定されているタイミングで、改ざんチェック実行部302に指示する。改ざん検出のタイミングについての詳細は、後述する。
改ざんチェック実行部302は、監視制御部301から改ざんチェック指示を受け付けると、識別子に対応する更新モジュールの改ざんチェックを実施し、改ざんチェック結果を更新用ソフトウェア配布モジュール210に送信する。
また、定期的あるいは不定期に、保護制御モジュール120の改ざんチェックを実施し、改ざんを検出した場合には、更新ソフトウェア配布モジュール210及び他の更新モジュールに改ざん検出通知を送信する。その一方で、他の更新モジュールから保護制御モジュール120の改ざん検出通知を受け付けた場合には、保護制御モジュール120の改ざんチェックを実施し、チェック結果を更新用ソフトウェア配布モジュール210に送信する。
また、機器100の全体の制御を司る制御部(不図示)から、初期化指示を受信すると、署名公開鍵保持部306から署名公開鍵を取得し、取得した署名公開鍵を用いて、改ざん検出対象となる更新モジュール及び保護制御モジュール120の改ざんチェックを行う。改ざんチェック結果に応じて、検証鍵保持部307から検証鍵を取得し、取得した検証鍵を用いて改ざん検出対象となる更新モジュール及び保護更新モジュール120のMAC値を生成し、各々のモジュールの識別子と対応付けて、MAC値保持部309に送信する。
さらに、更新用ソフトウェア配布モジュール210から更新処理終了通知を受け付けると、検証鍵保持部307から検証鍵を取得し、取得した検証鍵を用いて保護制御モジュール121のMAC値を生成し、MAC値保持部309に送信する。
更新制御部303は、機器100内部のソフトウェア(保護制御モジュール120)の更新を制御する。具体的には、他の更新モジュールまたは更新用ソフトウェア配布モジュール210から、暗号化されている更新用の保護制御モジュール121を受け取り、更新用ソフトウェア配布モジュール210から、更新用の保護制御モジュール121の証明書(例えば、更新用の保護制御モジュール121のハッシュ値が記述されている)、及び更新用の保護制御モジュール121を復号するための復号鍵を受け取ると、当該更新用の保護制御モジュール121を復号部304に復号させ、復号された更新用の保護制御モジュール121を他の更新モジュールへ送信し、あるいは機器100内部の保護制御モジュール120を復号された更新用の保護制御モジュール121に更新する。
また、更新用の保護制御モジュール121に更新した後、または他の更新モジュールから更新終了通知を受け付けると、更新用ソフトウェア配布モジュール210から受け取った証明書を用いて保護制御モジュールが正しく更新されたかの検証を行い、検証結果を更新用ソフトウェア配布モジュール210に送信する。
復号部304は、暗号化された更新用の保護制御モジュール121の復号を更新制御部303から依頼されると、更新制御部303から入力される復号鍵を用いて、暗号化された更新用の保護制御モジュール121を復号する。更新用ソフトウェア配布モジュール210から入力される復号鍵は、復号部304が保持する、更新モジュール131固有の鍵を用いて暗号化された状態あるため、復号部304は、復号鍵を使用する前に、更新モジュール131固有の鍵を用いて当該復号鍵を復号する。
認証部305は、更新用ソフトウェア配布モジュール210から認証処理開始指示を受け付けると、更新用ソフトウェア配布モジュール210と相互認証の処理を行い、互いに正しい権利を持ったソフトウェアであることを確認する。具体的には、認証鍵対保持部308から認証鍵を取得し、取得した認証鍵を用いて更新サーバ200を認証する。
署名公開鍵保持部306は、署名公開鍵を保持する。署名公開鍵は、更新モジュール131が機器100内のソフトウェア(保護制御モジュール120)の改ざんチェックを、改ざん検出用証明書を用いて行う場合に使用される。署名公開鍵と更新用ソフトウェア配布モジュール210が保持する署名秘密鍵とは、公開鍵暗号方式における鍵対になる。
検証鍵保持部307は、検証鍵を保持する。検証鍵は、更新モジュール131が機器100内のソフトウェア(保護制御モジュール120)の改ざんチェックを、メッセージ認証コード(MAC)値を用いて行う場合に使用される。
認証鍵対保持部308は、認証鍵対を保持する。認証鍵対は、更新モジュール131と更新用ソフトウェア配布モジュール210とが相互認証処理を行うときに用いられる。認証鍵対は、公開鍵暗号方式における公開鍵(認証公開鍵)と秘密鍵(認証秘密鍵)との鍵対で構成される。認証公開鍵には、更新用ソフトウェア配布モジュール210が保持する署名秘密鍵を用いて生成された証明書(認証鍵証明書)が付加されている。
MAC値保持部309は、改ざんチェック実行部302から入力される、改ざん検出対象となる更新モジュール及び保護更新モジュール120のMAC値と、各々のモジュールの識別子との対を保持する。
分散情報保持部310は、保護制御モジュール120から入力される、分散情報(share)と暗復号鍵証明書とを保持する。
アクセス情報取得部311は、更新用ソフトウェア配布モジュール210から、改ざんされた更新モジュールの無効化指示を受け付けると、アクセス情報取得鍵配布モジュール220に対しアクセス情報取得鍵の送付を依頼し、アクセス情報取得鍵を取得する。さらに、アクセス制御モジュール140から暗号化アクセス情報を取得し、アクセス情報取得鍵を用いて暗号化アクセス情報を復号し、復号されたアクセス情報を取得し、無効化処理部312に送信する。
無効化処理部312は、アクセス情報取得部313から入力されるアクセス情報に基づいて、改ざんされた更新モジュールを無効化する。無効化する方法としては、無効化対象の更新モジュールを全て消去する方法の他、改ざんされた部分や秘匿すべきデータなど無効化対象となる更新モジュールの一部を消去する方法や、機器100内部のプログラムやデータを読み込むための機能を消去する方法等がある。なお、無効化処理部312は、アクセス情報を取得するまで、ソフトウェアを無効化することはできない。
署名方式に関しては非特許文献1に、証明書に関しては非特許文献2に詳しく説明されているので、ここでの説明は省略する。
3.更新用ソフトウェア配布モジュール210の詳細な構成
図3は、本発明の実施の形態1における更新用ソフトウェア配布モジュール210の機能ブロック図である。同図に示すように、更新用ソフトウェア配布モジュール210は、暗号鍵生成部401、暗号処理部402、暗号鍵保持部403、認証部404、更新判定部405、不正モジュール判定部406、更新モジュール選択部407、証明書生成部408、署名秘密鍵保持部409、及び更新用ソフトウェア保持部410から構成される。
3.更新用ソフトウェア配布モジュール210の詳細な構成
図3は、本発明の実施の形態1における更新用ソフトウェア配布モジュール210の機能ブロック図である。同図に示すように、更新用ソフトウェア配布モジュール210は、暗号鍵生成部401、暗号処理部402、暗号鍵保持部403、認証部404、更新判定部405、不正モジュール判定部406、更新モジュール選択部407、証明書生成部408、署名秘密鍵保持部409、及び更新用ソフトウェア保持部410から構成される。
暗号鍵生成部401は、更新判定部405から保護制御モジュール120を更新する旨の通知を受け付けると、更新用の保護制御モジュール121を暗号化するための暗号鍵を複数生成し、生成した複数の暗号鍵を暗号鍵保持部403及び暗号処理部402に送信する。
暗号処理部402は、更新用ソフトウェア保持部410から更新用の保護制御モジュール121を取得し、暗号鍵生成部401から入力される複数の暗号鍵を用いて、取得した更新用の保護制御モジュール121を多重に暗号化する。そして、暗号化された更新用の保護制御モジュール121及び複数の暗号鍵を更新モジュール選択部407に送信する。
暗号鍵保持部403は、暗号鍵生成部401が生成した複数の暗号鍵や、更新モジュール選択部407により暗号化された複数の暗号鍵を保持する。
認証部404は、更新モジュール131、132、133と相互認証の処理を行う。具体的には、更新モジュールから送信される認証鍵(公開鍵)を用いて更新モジュール131、132、133を認証し、認証結果を更新判定部405に送信する。
更新判定部405は、更新モジュール131、132、133から保護制御モジュール120の改ざん検出通知を受け付けると、改ざん検出通知に基づいて、保護制御モジュールが改ざんされているか否かを最終判断する。保護制御モジュールが改ざんされていると判断した場合には、各更新モジュールに改ざん情報の収集を依頼する。その後、各更新モジュールから入力される改ざん情報に基づいて、保護制御モジュールを更新すべきか否かを判定し、更新すべきと判定した場合には、各更新モジュールに認証処理の開始を指示する。
また、認証処理開始の指示後、認証部404から入力される認証結果に応じて、更新処理開始指示を更新モジュール131、132、133に送信するとともに、不正モジュール判定部46、暗号鍵生成部401、及び証明書生成部408に保護制御モジュール120を更新する旨を通知する。
さらに、更新モジュール131、132、133から入力される検証結果通知に基づいて、保護制御モジュールが正しく更新されたか判定し、判定結果に応じて、保護制御モジュール120の更新終了通知を更新モジュール131、132、133に送信する。
不正モジュール判定部406は、更新判定部405から保護制御モジュール120を更新する旨の通知を受け付けると、更新モジュール131、132、133から入力される各更新モジュールの改ざんチェック結果に基づいて、各更新モジュールが改ざんされているかどうかの判定、及び更新モジュールが改ざんされていると判定した場合、どの更新モジュールが改ざんされたかを判定する。判定後、判定結果を更新モジュール選択部407に送信する。
更新モジュール選択部407は、不正モジュール判定部406から入力される判定結果に基づいて、保護制御モジュール120を更新する際に使用する更新モジュールを複数選択する。そして、暗号処理部402から入力される、更新用の保護制御モジュール121の暗号化に使用した複数の暗号鍵を、更新モジュール選択部407が選択した各更新モジュール固有の鍵を用いて暗号化する。暗号化した鍵を、暗号処理部402から入力される、暗号化された保護制御モジュールとともに、選択した更新モジュールへ送付する。暗号化された保護制御モジュールの証明書は、各更新モジュールに送付される。
なお、暗号化された保護制御モジュール121及び暗号鍵は、選択された更新モジュールへ一度に送信されるのではなく、更新処理の中で、それぞれのデータが必要になったタイミングで、各更新モジュールへ送信される。更新処理におけるタイミングに関しては後述する。
また、正常な更新モジュールに対し、改ざんされた更新モジュールを無効化するよう指示するとともに、アクセス情報取得鍵配布モジュール220に無効化に関する情報を通知する。
証明書生成部408は、更新判定部405から保護制御モジュール120を更新する旨の通知を受け付けると、署名秘密鍵保持部409から署名秘密鍵を、更新用ソフトウェア保持部410から更新用の保護制御モジュール121をそれぞれ取得し、取得した更新用の保護制御モジュール121に対して、正しく更新されたかを検証するための更新検証証明書を、取得した署名秘密鍵を用いて生成し、更新モジュール選択部407に送信する。
また、署名秘密鍵を用いて、更新モジュール131、132、133の認証公開鍵に対して認証証明書を生成する。
署名秘密鍵保持部409は、証明書生成部408による証明書の生成に用いられる署名秘密鍵を保持する。
更新用ソフトウェア保持部410は、保護制御モジュール120が改ざんされた場合に用いられ、当該保護制御モジュールを更新するための更新用の保護制御モジュール121を保持する。ここで、更新用の保護制御モジュール121は、正常なものであることが保障されているものとし、必ずしも最新版の保護制御モジュールである必要はない。
4.保護制御モジュールの詳細な構成
図4は、本発明の実施の形態1における保護制御モジュール120の機能ブロック図である。同図に示すように、保護制御モジュール120は、制御部501、復号ロード部502、改ざん検出部503、解析ツール検出部504、暗復号鍵保持部505、暗復号鍵生成部506、暗復号鍵分散部507、証明書生成部508、及び暗復号鍵復元部509を含んで構成される。
4.保護制御モジュールの詳細な構成
図4は、本発明の実施の形態1における保護制御モジュール120の機能ブロック図である。同図に示すように、保護制御モジュール120は、制御部501、復号ロード部502、改ざん検出部503、解析ツール検出部504、暗復号鍵保持部505、暗復号鍵生成部506、暗復号鍵分散部507、証明書生成部508、及び暗復号鍵復元部509を含んで構成される。
制御部501は、復号ロード部502、改ざん検出部503、及び解析ツール検出部504を制御し、アプリ110、111が攻撃者により攻撃されている場合には、それを検出する。
復号ロード部502は、暗号化されて機器100内部に保持されているアプリ110、111が実行される際に、暗復号鍵保持部505に保持されている暗復号鍵を用いてアプリを復号し、メモリ上にロードする処理を行う。
また、アプリ110、111実行中に、他のアプリへのコンテキストスイッチが発生した場合には、暗復号鍵を用いてメモリ上のデータを暗号化し、再びアプリ110、111へコンテキストスイッチしたときに、暗号化したデータを復号する。
さらに、後述する再暗号化処理において、暗復号鍵復元部509から入力される復元された旧暗復号鍵を用いてアプリ110、111を復号し、暗復号鍵保持部505に保持されている新たな暗復号鍵でアプリ110、111を暗号化する。
改ざん検出部503は、アプリ110、111が改ざんされているか検出する改ざん検出処理を実行する。改ざん検出処理には、アプリ110、111に付加されている改ざん検出用の証明書を用いて改ざん検出を行う方法と、MAC値を用いて改ざん検出を行う方法とがある。
解析ツール検出部504は、攻撃者がアプリ110、111を攻撃しようとして、デバッガ等の解析ツールをインストールし動作させたときに、解析ツールの動作を検出する。検出方法としては、例えば、ファイル名を検索する方法や、デバッガが使用する特殊なレジスタが使われているかを調べる方法、デバッガが設定する割り込みを検出する方法などがある。
暗復号鍵保持部505は、後述する初期化処理時に埋め込まれ、アプリ110、111を暗復号するための暗復号鍵を保持している。また、暗復号鍵生成部506にて新たに暗復号鍵が生成されると、暗復号鍵生成部506から入力される暗復号鍵を保持する。
暗復号鍵生成部506は、暗復号鍵復元部509から暗復号鍵を復元した旨の通知を受け付けると、アプリ110、111を暗復号するための新たな暗復号鍵を生成する。生成した暗復号鍵を暗復号鍵保持部505、証明書生成部508、及び暗復号鍵分散部507に送信する。
暗復号鍵分散部507は、後述する初期設計時や次ラウンド準備時に、暗復号鍵生成部507から入力される暗復号鍵に基づいて、秘密分散法を用いて分散情報を生成し、生成した分散情報を更新モジュール131、132、133に送信する。
証明書生成部508は、暗復号鍵生成部506から入力される暗復号鍵に基づいて証明書を生成し、生成した証明書を更新モジュール131、132、133に送信する。証明書は、暗復号鍵から生成される分散情報を復元する際に、正しく復元できたかの検証に使用される。
暗復号鍵復元部509は、更新モジュール131、132、133から分散情報及び暗復号鍵証明書を取得し、取得した分散情報及び暗復号鍵証明書に基づいて、旧暗復号鍵を復元する。復元した旧暗復号鍵を復号ロード部502に送信する。また、暗復号鍵生成部506に暗復号鍵を復元した旨を通知する。
5.アクセス制御モジュール
図5は、本発明の実施の形態1におけるアクセス制御モジュール140の機能ブロック図である。同図に示すように、アクセス制御モジュール140は、通信部601と、アクセス情報保持部602とから構成される。
5.アクセス制御モジュール
図5は、本発明の実施の形態1におけるアクセス制御モジュール140の機能ブロック図である。同図に示すように、アクセス制御モジュール140は、通信部601と、アクセス情報保持部602とから構成される。
通信部601は、更新モジュール131、132、133からアクセス情報の取得依頼を受信する。アクセス情報取得依頼に基づいて、不正に改ざんされた更新モジュールに対応するアクセス情報をアクセス情報保持部602から取得し、取得したアクセス情報取得を依頼してきた更新モジュールへ送信する。
アクセス情報保持部602は、更新モジュール毎に当該更新モジュールを消去するためのアクセス情報を保持する。アクセス情報は、更新モジュール毎にそれぞれ個別のアクセス情報取得鍵で暗号化され、識別子(更新モジュール識別子)等により、各更新モジュールと対応付けられる。
6.アクセス情報取得鍵配布モジュール
図6は、本発明の実施の形態1におけるアクセス情報取得鍵配布モジュール220の機能ブロック図である。同図に示すように、アクセス情報取得鍵配布モジュール220は、通信部701と、アクセス情報取得鍵保持部702とから構成される。
6.アクセス情報取得鍵配布モジュール
図6は、本発明の実施の形態1におけるアクセス情報取得鍵配布モジュール220の機能ブロック図である。同図に示すように、アクセス情報取得鍵配布モジュール220は、通信部701と、アクセス情報取得鍵保持部702とから構成される。
通信部701は、更新モジュール131、132、133からアクセス情報取得鍵の取得依頼を、更新モジュール選択部407から無効化に関する情報の通知をそれぞれ受信する。アクセス情報取得鍵の取得依頼及び無効化に関する情報に基づいて、当該取得依頼が正しいか否かを判断し、判断結果に応じて、消去対象となる更新モジュールに対応するアクセス情報取得鍵をアクセス情報取得鍵保持部702から取得し、依頼してきた更新モジュールへ送信する。
アクセス情報取得鍵保持部702は、アクセス制御モジュール140が保持している、暗号化された各アクセス情報を復号するためのアクセス情報取得鍵を保持する。アクセス情報取得鍵は、識別子(更新モジュール識別子)等により、各更新モジュールと対応付けられる。
7.機器100のハードウェア構成
続いて、機器100のハードウェア構成について説明する。図7は、機器100のハードウェア構成を示す図である。同図に示すように、機器100は、CPU(Central Processing Unit)11、不揮発メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory))12、RAM(Random Access Memory)13、及びNIC(Network Interface Card)14等を含んで構成され、これらはバスを介して相互に通信可能に接続されている。
7.機器100のハードウェア構成
続いて、機器100のハードウェア構成について説明する。図7は、機器100のハードウェア構成を示す図である。同図に示すように、機器100は、CPU(Central Processing Unit)11、不揮発メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory))12、RAM(Random Access Memory)13、及びNIC(Network Interface Card)14等を含んで構成され、これらはバスを介して相互に通信可能に接続されている。
EEPROM12には、保護制御モジュール120、更新モジュール131、132、133、及びアプリ110、111等が格納されている。
EEPROM12に格納されている制御用の各種モジュールをCPU11が実行することにより、各種モジュールの各機能部の制御は実現される。各機能部は、具体的には、コンピュータプログラムによって記述され実現される。
RAM13は、CPU11のワークエリアとして用いられる。RAM13には更新モジュール131、132、133及びアプリ110、111がロードされる。改ざんチェック及び無効化の対象となる更新モジュールは、RAM13上で動作している更新モジュールである。
NICは、ネットワークに接続するための拡張カードである。
8.ソフトウェア階層
続いて、機器100におけるソフトウェア階層について説明する。図8は、機器100のソフトウェア階層を示す図である。同図に示すように、アクセス制御モジュール140及び更新モジュール群130は、OS150の中に組み込まれている。アプリ110、111はOS150上で動作し、保護制御モジュール120はブートローダ160等とともにOSの管理外にある。機器100の起動の際には、まず保護制御モジュール120及び更新モジュール群130が起動された上でアプリケーションが実行される。
9.ソフトウェア更新システム1000の動作
9.1.ソフトウェア更新システム1000の動作概略
続いて、ソフトウェア更新システム1000の動作を説明する。初めに、ソフトウェア更新システム1000の大まかな処理を説明する。大まかな処理として、以下の7つの処理がある。
8.ソフトウェア階層
続いて、機器100におけるソフトウェア階層について説明する。図8は、機器100のソフトウェア階層を示す図である。同図に示すように、アクセス制御モジュール140及び更新モジュール群130は、OS150の中に組み込まれている。アプリ110、111はOS150上で動作し、保護制御モジュール120はブートローダ160等とともにOSの管理外にある。機器100の起動の際には、まず保護制御モジュール120及び更新モジュール群130が起動された上でアプリケーションが実行される。
9.ソフトウェア更新システム1000の動作
9.1.ソフトウェア更新システム1000の動作概略
続いて、ソフトウェア更新システム1000の動作を説明する。初めに、ソフトウェア更新システム1000の大まかな処理を説明する。大まかな処理として、以下の7つの処理がある。
1つ目の処理は、ソフトウェア(保護制御モジュール120)を更新するために必要となる各種鍵データや、ソフトウェア更新後に必要となるデータ(秘密分散法を用いて分散した分散情報)などを更新モジュール131、132、133のそれぞれに埋め込む処理(初期設計処理)である。
2つ目の処理は、機器100内部のソフトウェア(保護制御モジュール120)が改ざんされていないかを検知する処理(検知処理)である。
3つ目の処理は、改ざんが検出された時に、改ざんされたソフトウェアを解析し、改ざんされたモジュールを含むソフトウェアを更新するかどうかを判断し、更新する場合は更に、更新モジュール131、132、133へ更新処理の実施を通知する処理(解析・判断処理)である。
4つ目の処理は、更新モジュール131、132、133と更新用ソフトウェア配布モジュール210とが互いに正しいソフトウェアであるかどうかを確認するために、相互に行う認証処理(相互認証処理)である。
5つ目の処理は、更新モジュール間で改ざんチェックを行うとともに更新用のソフトウェアを機器100へインストールし、更新モジュール131、132、133へ埋め込まれた分散情報からデータを復元する処理(回復処理)である。
6つ目の処理は、次のソフトウェア更新のための鍵データや分散情報を生成し、各更新モジュールに埋め込む処理(次ラウンド準備処理)である。
7つ目の処理は、相互認証処理や回復処理において、更新モジュール131、132、133が不正に改ざんされたことを検出したときに、不正に改ざんされた更新モジュールを消去する処理(無効化処理)である。
上記7つの処理のうち、無効化処理以外の6つの処理の関係は、図9に示す関係になる。無効化処理は、それぞれの処理の中で必要に応じて呼び出される。図9は、ソフトウェア更新システム1000の全体的な動作の流れを示すフローチャートである。
ソフトウェア更新システム1000では、機器100が工場で製造される際に初期設計処理が行われ、各更新モジュール131、132、133へ分散情報が埋め込まれる(ステップS100)。その後、機器100が工場から出荷され、ユーザの利用に供される。
ユーザにより機器100が利用される際には、機器100内部では、保護制御モジュール120がアプリ110、111を攻撃者による攻撃から保護する。これと同時に、更新モジュール131、132、133が保護制御モジュール120の改ざん検出を実施し、保護制御モジュール120が攻撃されていないかをチェックする検知処理を行う(ステップS200)。
検知処理を行った結果、保護制御モジュール120が改ざんされたと判明した場合には、解析・判断処理(ステップS300)、相互認証処理(ステップS400)、回復処理(ステップS500)、次ラウンド準備処理(ステップS600)を行い、再び検知処理(ステップS200)へ戻る。
なお、上記すべての処理が必要ではなく、少なくとも外部から更新のトリガを与えられて、更新を行う処理(回復処理)があればよい。
続いて、上記7つの処理について、その詳細を順に説明する。
9.2.初期設計時の動作
まず、初期化処理について説明する。図11は、初期設計時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
まず、初期化処理について説明する。図11は、初期設計時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
機器100が工場で製造される際に、機器100の不揮発メモリへアプリ110、111、保護制御モジュール120、更新モジュール131、132、133、及びアクセス制御モジュールがインストール(書き込み)される(ステップS101)。これらのソフトウェアには、ソフトウェアが改ざんされているかどうかを検証するための証明書(改ざん検出用証明書)が付加されている。この改ざん検出用証明書は、更新用ソフトウェア配布モジュール210が保持する署名秘密鍵により署名されている。上記ソフトウェア以外にも、機器100の動作に必要なソフトウェアがインストールされる。ここで、初期化処理の際に機器100に埋め込まれる鍵について説明する。図10は、機器100に埋め込まれる鍵を模式的に示す図である。更新モジュールについては、代表的に更新モジュール131のものだけ示す。本図に示すように、保護制御モジュール120には暗復号鍵が、更新モジュール131、132、133には署名公開鍵、検証鍵、及び認証鍵対がそれぞれ埋め込まれる。また、更新モジュール131、132、133には、それぞれの更新モジュールを識別するための更新モジュール識別子も埋め込まれる。
暗復号鍵は、アプリ110、111を暗復号するための鍵であり、アプリ110、111は、暗復号鍵を用いて暗号化された状態で不揮発メモリへ記憶され、実行時には保護制御モジュール120により暗復号鍵を用いて復号された後、実行される。コンテキストを切替えながら複数のアプリを実行する場合には、コンテキスト切替えのタイミングで、暗復号鍵を用いて、アプリ110、111の暗復号を実施し、デバッガなどの解析ツールにより、アプリ110、111実行時のデータが抜き取られることを防止する。
更新モジュール131、132、133に埋め込まれる鍵のうち、署名公開鍵は、全ての更新モジュールで共通とし、検証鍵と認証鍵対とは、更新モジュール毎に異なるものとする。また、分散情報ペアは、更新モジュール毎に異なるものとする。
図11に戻って、各ソフトウェアのインストール後、機器100の初期設定を行うソフトウェアや、正常に動作するかをテストするためのソフトウェアなどを実行し、初期化処理を行い(ステップS102)、保護制御モジュール120及び更新モジュール131、132、133に初期化指示を送信する(ステップS103)。初期化指示を受信する保護制御モジュール120及び更新モジュール131、132、133でもそれぞれ初期化処理が行われる。
保護制御モジュール120は、初期化指示を受信すると(ステップS104a)、秘密分散法を用いて暗復号鍵から分散情報を生成する(ステップS105)。さらに、暗復号鍵の復元時に、正しく復元できたかを確認するための証明書(暗復号鍵証明書)を、署名秘密鍵を用いて生成する(ステップS106)。生成した分散情報と暗復号鍵証明書とをそれぞれ、更新モジュール131、132、133へ送信する(ステップS107)。ここで、分散情報は、更新モジュールと同数だけ生成され、それぞれの更新モジュール131、132、133には、異なる分散情報のペアが送信される。また、各分散情報にはどの分散情報かを識別するための識別子が付加される。暗復号鍵証明書については、それぞれの更新モジュール131、132、133へ同じものが送信される。
更新モジュール群は、初期化指示を受信し(ステップS104b)、分散情報と暗復号鍵証明書とを受信すると(ステップS108)、更新モジュール初期化処理を行う(ステップS109)。
図12は、更新モジュール初期化処理を示すフローチャートである。本図では、代表的に更新モジュール131のものだけ示す。他の更新モジュールの動作も基本的に同一である。
まず、更新モジュール131は、保護制御モジュール120から受信した分散情報のペアと暗復号鍵証明書とを分散情報保持部310に保持する(ステップS111)。
改ざん検出対象となる他の更新モジュール及び保護制御モジュール120の改ざん検出用証明書の検証を実施する(ステップS112)。この検証は、各モジュールからハッシュ値を生成し、生成したハッシュ値とそれぞれの改ざん検出用証明書に記述されているハッシュ値とを比較することにより行われる。
生成した各ハッシュ値がそれぞれの改ざん検出用証明書に記述されているハッシュ値と一致するか否かを判定し(ステップS113)、各ハッシュ値がそれぞれの改ざん検出用証明書に記述されているハッシュ値と一致すれば(ステップ113でYes)、改ざん検出対象となる他の更新モジュール及び保護制御モジュール120それぞれに対してMAC値を生成し、MAC値テーブルとしてMAC値保持部309に保持する(ステップS114)。
少なくとも何れか一方のハッシュ値が改ざん検出用証明書に記述されているハッシュ値と一致しなければ(ステップS113でNo)、エラーを出力して処理を停止する(ステップS115)。
9.3.検知時の動作
続いて、検知処理について説明する。機器100は、初期化処理を終えると工場から出荷され、ユーザの元へ送られる。ユーザが機器100を使用し、アプリ110、111を利用しているときには、機器100内部では、保護制御モジュール120が復号ロード機能や改ざん検出機能、解析ツール検出機能などの機能を制御し、アプリ110、111を攻撃者による攻撃から保護する。
続いて、検知処理について説明する。機器100は、初期化処理を終えると工場から出荷され、ユーザの元へ送られる。ユーザが機器100を使用し、アプリ110、111を利用しているときには、機器100内部では、保護制御モジュール120が復号ロード機能や改ざん検出機能、解析ツール検出機能などの機能を制御し、アプリ110、111を攻撃者による攻撃から保護する。
図13は、検知時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。検知処理においては、まず、更新モジュール131、132、133が、保護制御モジュール120の改ざん検出を実施する(ステップS201)。改ざん検出は、保護制御モジュール120のMAC値を、検証鍵を使用して計算し、MAC値テーブルに保持されている、初期設計時に算出した保護制御モジュール120のMAC値と比較することで、行われる。なお、本図では記載を簡略化し、更新モジュール131のみが保護制御モジュールが改ざんされているかをチェックしているが、当然、更新モジュール132、133でも同様の処理が行われる。その後の処理についても、更新モジュール131が保護制御モジュールの改ざんを検出した場合を中心に記載しているが、更新モジュール132、133が保護制御モジュールの改ざんを検出した場合も基本的には同様の処理が行われる。
保護制御モジュール120が改ざんされているか否か、言い換えるとMAC値が一致するか否かを判定し(ステップS202)、保護制御モジュール120が改ざんされていると判定した場合には(ステップS202でYes)、更新用ソフトウェア配布モジュール210と他の更新モジュールとに改ざん検出通知を送信する(ステップS203)。
保護制御モジュール120が改ざんされていないと判定した場合には(ステップS202でNo)、更新用ソフトウェア配布モジュール210や他の更新モジュールへの通知を行わず、改ざん検出処理(S201)へ戻る。
更新モジュール132、133は、更新モジュール131から改ざん検出通知を受信すると(ステップS204b)、検証鍵及びMAC値を利用して、保護制御モジュール120の改ざんチェックを実施し(ステップS205)、改ざんチェック結果を更新用ソフトウェア配布モジュール210へ送信する(ステップS206)。
更新用ソフトウェア配布モジュール210は、更新モジュール131から改ざん検出通知を(ステップS204a)、更新モジュール132、133から改ざんチェック結果をそれぞれ受信する(ステップS207)。
9.4.解析・判断時の動作
続いて、解析判断処理について説明する。図14、15は、解析・判断時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
続いて、解析判断処理について説明する。図14、15は、解析・判断時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
検知処理において、更新用ソフトウェア配布モジュール210が更新モジュール131、132、133から改ざん検出通知及び改ざんチェック結果を受信した場合には(ステップS204a及びS207)、受信した改ざん検出通知及び改ざんチェック結果に基づいて、保護制御モジュール120が改ざんされているか否かを判定する(ステップS301)。判定方法としては、例えば、一定数の更新モジュール(例えば、過半数等)が改ざんされていると判定している場合には、保護制御モジュール120は改ざんされていると判定し、逆に、過半数の更新モジュールが改ざんされていないと判定している場合には、保護制御モジュール120は改ざんされていないと判定する。
保護制御モジュール120が改ざんされていないと判定した場合には(ステップS301でNo)、検知処理に戻る(ステップS302)。
保護制御モジュール120が改ざんされていると判定した場合には(ステップS301でYes)、更新用ソフトウェア配布モジュール210は、更新モジュール131、132、133に対して保護制御モジュール120のどの部分が改ざんされたかを示す改ざん情報を通知するよう依頼する(ステップS303)。
更新モジュール群は、改ざん情報の通知依頼を受け付けると(ステップS304)、改ざん情報を収集する(ステップS305)。改ざん情報の収集は、例えば、保護制御モジュール120が複数の部分に分けられており、予め部分毎に証明書(ハッシュ値が記述されている)が発行されていることを前提とすれば、部分毎にハッシュ値を算出し、算出された各ハッシュ値が各証明書に記述されたハッシュ値と一致するか否かにより、行うことができる。
更新モジュール群は、改ざん情報を収集すると、改ざん情報を更新用ソフトウェア配布モジュール210に送信する(ステップS306)。
更新用ソフトウェア配布モジュール210は、更新モジュール群から改ざん情報を受信すると(ステップS307)、受信した改ざん情報を解析し(ステップS308)、解析結果に基づいて、保護制御モジュール120を無効化するか否かを判断する(ステップS309)。
保護制御モジュール120を無効化すると判断した場合には(ステップS309でYes)、アプリ110、111を介して、当該アプリ110、111にサービスを提供しているサーバ(不図示)に機器100を無効化するよう依頼する(ステップS310、311)。
保護制御モジュール120を無効化しないと判断した場合には(ステップS309でNo)、保護制御モジュール120を更新するか否かを判断する(ステップS312)。
保護制御モジュール120を更新すると判断した場合には(ステップS312でYes)、更新モジュール群に認証処理開始指示を送信し(ステップS313)、更新モジュール群は、認証処理開始指示を受信する(ステップS314)。
保護制御モジュール120を更新しないと判断した場合には(ステップS312でNo)、検知処理に戻る(ステップS302)。
保護制御モジュール120の無効化及び更新は、例えば、保護制御モジュール120の重要な部分が改ざんされているか、一定部分以上改ざんされているか等を判断することにより行われる。
9.5.相互認証時の動作
続いて、相互認証処理について説明する。解析・判断処理において、保護制御モジュール120を更新する必要があると判断され、更新モジュール131、132、133へ認証処理の開始を指示した後、更新用ソフトウェア配布モジュール210と各更新モジュール131、132、133との間で、それぞれ1対1の相互認証処理が行われる。これにより、機器100が不正な更新サーバへ接続されることや、更新サーバ200が不正な機器へ接続されることを防止することができる。相互認証には、更新サーバ200は署名秘密鍵と署名公開鍵を使用し、各更新モジュール131、132、133は認証鍵対(認証秘密鍵、認証公開鍵)を使用する。
続いて、相互認証処理について説明する。解析・判断処理において、保護制御モジュール120を更新する必要があると判断され、更新モジュール131、132、133へ認証処理の開始を指示した後、更新用ソフトウェア配布モジュール210と各更新モジュール131、132、133との間で、それぞれ1対1の相互認証処理が行われる。これにより、機器100が不正な更新サーバへ接続されることや、更新サーバ200が不正な機器へ接続されることを防止することができる。相互認証には、更新サーバ200は署名秘密鍵と署名公開鍵を使用し、各更新モジュール131、132、133は認証鍵対(認証秘密鍵、認証公開鍵)を使用する。
相互認証時の動作としては、まず、更新モジュール131、132、133が、更新用ソフトウェア配布モジュール210を認証する。図16は、更新モジュール131が更新用ソフトウェア配布モジュール210を認証する時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本図では、代表的に更新モジュール131のものだけ示す。他の更新モジュールの動作も基本的に同一である。
更新モジュール131は、乱数生成器を用いて乱数を生成し(ステップS401)、生成した乱数をチャレンジデータとして更新用ソフトウェア配布モジュール210へ送信する(ステップS402)。この時、更新モジュール131を識別するための更新モジュール識別子もチャレンジデータと一緒に送信する。
更新用ソフトウェア配布モジュール210は、各更新モジュールからチャレンジデータを受信すると(ステップS403)、受信したチャレンジデータに対し、署名秘密鍵を用いて署名生成を行い(ステップS404)、生成した署名をレスポンスデータとして、送信してきた更新モジュールへ返信する(ステップS405)。
更新モジュール131は、更新用ソフトウェア配布モジュール210からレスポンスデータを受信すると(ステップS406)、受信したレスポンスデータが送信したチャレンジデータに対する署名になっているかを、署名公開鍵を用いて署名検証する(ステップS407)。
検証した結果、レスポンスデータが送信したチャレンジデータに対する署名になっている、すなわち、更新用ソフトウェア配布モジュール210が正当なモジュールである場合には(ステップS408でYes)、処理を継続する。
レスポンスデータが送信したチャレンジデータに対する署名になっていない、すなわち、更新用ソフトウェア配布モジュール210が正当なモジュールでない場合には(ステップS408でNo)、エラーを出力して、処理を停止する(ステップS409)。
次に、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証する。図17は、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証する時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
更新用ソフトウェア配布モジュール210は、乱数生成器を用いて、上記処理においてチャレンジデータを送信してきた更新モジュールの数だけ乱数を生成し(ステップS411)、生成した各乱数をチャレンジデータとして、更新モジュールと一対一に対応する形態で、送信する(ステップS412)。
更新モジュール群は、更新用ソフトウェア配布モジュール210からチャレンジデータを受信すると(ステップS413)、受信したチャレンジデータに対し、認証秘密鍵を用いて署名生成を行い(ステップS414)、生成した署名をレスポンスデータとして更新用ソフトウェア配布モジュール210へ返信する(ステップS415)。その際、認証公開鍵と認証鍵証明書とを併せて更新用ソフトウェア配布モジュール210へ返信する(ステップS415)。
更新用ソフトウェア配布モジュール210は、更新モジュール群からレスポンスデータ、認証公開鍵、及び認証鍵証明書を受信すると(ステップS416)、認証鍵証明書が、更新用ソフトウェア配布モジュール210により発行された証明書であるかを検証した後、認証鍵証明書を使用して認証公開鍵の検証を行う(ステップS417)。
検証した結果、認証鍵証明書あるいは認証公開鍵に問題があれば(ステップS418でNo)、処理を停止する(ステップS419)。
検証した結果、認証鍵証明書及び認証公開鍵ともに問題がなければ(ステップS418でYes)、受信したレスポンスデータが、更新用ソフトウェア配布モジュール210が送信したチャレンジデータの署名になっているかを、認証公開鍵を用いて署名検証する(ステップS420)。そして、検証結果に基づいて、回復処理を行うか否かを判定する。この判定は、例えば、署名検証により、正当なモジュールであると検証できた更新モジュールの数が予め設定されている回復処理に必要な数以上あるかを判断することにより、行われる(ステップS421)。
正当なモジュールであると検証できた更新モジュールが、回復処理に必要な数に満たないと判定した場合には(ステップS421でNo)、処理を停止する(ステップS419)。
正当なモジュールであると検証できた更新モジュールが、回復処理に必要な数を満たすと判定した場合には(ステップS421でYes)、正当なモジュールであると検証できた更新モジュールに更新処理開始指示を送信し(ステップS422)、正当なモジュールであると検証された更新モジュールは、更新処理開始指示を受信する(ステップS423)。以上で相互認証処理を終了する。
なお、更新用ソフトウェア配布モジュール210は、相互認証処理において、認証できた全ての更新モジュールの更新モジュール識別子からなる認証リストを作成し、以降の回復処理では、この認証リストに記載されている更新モジュールのみを利用して処理を実施する。
9.6.回復時の動作
続いて、回復処理について図18~24を用いて説明する。相互認証処理において、相互認証が成功した場合には、改ざんされた保護制御モジュール120を更新用の保護制御モジュール(更新用保護制御モジュール)121へ更新する回復処理を実施する。図18は、回復処理時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。回復処理は、大きく3つの処理からなる。
続いて、回復処理について図18~24を用いて説明する。相互認証処理において、相互認証が成功した場合には、改ざんされた保護制御モジュール120を更新用の保護制御モジュール(更新用保護制御モジュール)121へ更新する回復処理を実施する。図18は、回復処理時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。回復処理は、大きく3つの処理からなる。
1つ目の処理は、更新モジュール131、132、133が他の更新モジュールに対して改ざん検出処理を実施する監視処理(ステップS501)である。
2つ目の処理は、更新用保護制御モジュール121を用いて保護制御モジュール120を更新する更新処理(ステップS502)である。
3つ目の処理は、暗号化されたアプリ110、111を再暗号化する再暗号化処理(ステップS503)である。
なお、上記3つの処理がすべて必要ではなく、他の更新モジュールに対して改ざん検出処理を実施する監視処理(ステップS501)、及び外部から更新のトリガを与えられて、更新用保護制御モジュール121を用いて保護制御モジュール120を更新する更新処理(ステップS502)があればよい。
上記3つの処理について、その詳細を順に説明する。
9.6.1.監視処理
監視処理では、更新モジュール群130内の更新モジュール131、132、133が、更新モジュール群130内の他の更新モジュールに対して改ざん検出の処理を実施する。これにより、回復処理中に一部の更新モジュールが攻撃者により改ざんされた場合にも、改ざん検出が可能となる。さらに、監視処理を定期的に実施することで、更新用保護制御モジュール121が完全に漏洩する前に改ざんを検出し、漏洩を防止することが可能となる。
監視処理では、更新モジュール群130内の更新モジュール131、132、133が、更新モジュール群130内の他の更新モジュールに対して改ざん検出の処理を実施する。これにより、回復処理中に一部の更新モジュールが攻撃者により改ざんされた場合にも、改ざん検出が可能となる。さらに、監視処理を定期的に実施することで、更新用保護制御モジュール121が完全に漏洩する前に改ざんを検出し、漏洩を防止することが可能となる。
以下、監視処理の一例を、フローチャートを用いて詳細に説明する。図19は、監視処理を示すフローチャートである。
まず、更新モジュール131は、更新モジュール132に対し改ざん検出処理を実施し(ステップS511a)、更新モジュール132は、更新モジュール133に対し改ざん検出処理を実施し(ステップS511b)、更新モジュール133は、更新モジュール131に対し改ざん検出処理を実施する(ステップS511c)。改ざん検出は、更新モジュール131、132、133のMAC値を、検証鍵を使用して計算し、MAC値テーブルに保持されている、初期設計時に計算したMAC値と比較することにより、行われる。また、更新モジュール131、132、133のハッシュ値を算出し、算出したハッシュ値と、各更新モジュールに予め付加されている証明書に記述されているハッシュ値とを比較することにより行われるとしてもよい。
各更新モジュールは、改ざん検出結果を更新用ソフトウェア配布モジュール210へ通知する(ステップS512)。
更新用ソフトウェア配布モジュール210は、各更新モジュールから改ざん検出結果を受信し(ステップS513)、改ざんされた更新モジュールがあるか否かを判定する(ステップS514)。
改ざんされた更新モジュールがあると判定した場合には(ステップS514でYes)、更新用ソフトウェア配布モジュール210は、直ちに回復処理を停止する(ステップS515)。
改ざんされた更新モジュールがないと判定した場合には(ステップS514でNo)、処理を継続する。
9.6.2.更新処理
続いて更新処理について説明する。更新処理では、更新用ソフトウェア配布モジュール210が更新用保護制御モジュール121を複数の鍵を用いて多重に暗号化し、更新モジュール群130に含まれる更新モジュールを送信先として送信する。更新モジュール群130に含まれる複数の更新モジュールは、保護制御モジュール120を更新用保護制御モジュール121に更新する。この時、多重に暗号化された更新用保護制御モジュール121を復号するための複数の鍵を、更新モジュール群130に含まれる各更新モジュールへ送信するタイミングを更新用ソフトウェア配布モジュール210が制御することで、攻撃者が暗号化されていない更新用保護制御モジュール121を入手することを不可能にする。
続いて更新処理について説明する。更新処理では、更新用ソフトウェア配布モジュール210が更新用保護制御モジュール121を複数の鍵を用いて多重に暗号化し、更新モジュール群130に含まれる更新モジュールを送信先として送信する。更新モジュール群130に含まれる複数の更新モジュールは、保護制御モジュール120を更新用保護制御モジュール121に更新する。この時、多重に暗号化された更新用保護制御モジュール121を復号するための複数の鍵を、更新モジュール群130に含まれる各更新モジュールへ送信するタイミングを更新用ソフトウェア配布モジュール210が制御することで、攻撃者が暗号化されていない更新用保護制御モジュール121を入手することを不可能にする。
以下、更新処理の一例を、フローチャートを用いて詳細に説明する。図20~22は、更新処理を示すフローチャートである。
まず、更新用ソフトウェア配布モジュール210は、更新用保護制御モジュール121が機器100に正しくインストールされたかを更新モジュール131、132、133が検証できるように、更新用保護制御モジュール121の証明書(更新検証証明書)を、証明書生成部408を用いて生成し(ステップS521)、生成した更新検証証明書を各更新モジュール131、132、133へ送信する(ステップS522)。更新検証証明書の生成には、署名秘密鍵を利用する。各更新モジュールは、更新検証証明書を受信する(ステップS523)。
次に、更新用ソフトウェア配布モジュール210は、更新用保護制御モジュール121を多重に暗号化するための暗号鍵を、暗号鍵生成部403を用いて複数(ここでは第1の鍵及び第2の鍵の2つ)生成する(ステップS524)。そして、暗号処理部402を利用して、第2の鍵を用いて更新用保護制御モジュール121を暗号化し、暗号化更新用保護制御モジュールを生成する(ステップS525)。暗号化更新用保護制御モジュール121に対して、第1の鍵を用いてさらに暗号化し、多重暗号化更新用保護制御モジュール121を生成する(ステップS526)。
更新用ソフトウェア配布モジュール210は、更新モジュール群130に含まれる複数の更新モジュールから一の更新モジュール(ここでは、更新モジュール131)を選択し(ステップS527)、多重暗号化更新用保護制御モジュール121及び第1の鍵を、選択した更新モジュール131に送信する(ステップS528)。
更新モジュール131は、多重暗号化更新用保護制御モジュール121及び第1の鍵を受信すると(ステップS529)、第1の鍵を用いて、多重暗号化更新用保護制御モジュール121を復号し、暗号化更新用保護制御モジュール121を取得する(ステップS530)。復号が終了すると、復号終了通知を更新用ソフトウェア配布モジュール210に送信する(ステップS531)。
更新用ソフトウェア配布モジュール210は、復号終了通知を受信すると(ステップS532)、更新モジュール群130に含まれる複数の更新モジュールから、上記選択した更新モジュール131とは異なる更新モジュール(ここでは、更新モジュール132)を1つ選択し(ステップS533)、選択した更新モジュール132に第2の鍵を送信するとともに(ステップS534)、更新モジュール131に対して、暗号化更新用保護制御モジュール121を更新モジュール132へ送信するよう依頼する(ステップS536)。
更新モジュール131は、更新用ソフトウェア配布モジュール210からの依頼を受けて(ステップS537)、暗号化更新用保護制御モジュール131を更新モジュール132へ送信する(ステップS538)。
更新モジュール132は、更新用ソフトウェア配布モジュール210から第2の鍵を受信し(ステップS535)、更新モジュール131から暗号化更新用保護制御モジュール121を受信すると(ステップS539)、第2の鍵を用いて、暗号化更新用保護制御モジュール121を復号し、更新用保護制御モジュール121を取得する(ステップS540)。
更新モジュール132は、取得した更新用保護制御モジュール121を保護制御モジュール120に上書きし、新たな保護制御モジュール121に更新する(ステップS541)。更新が終了すると、更新の終了を他の更新モジュール131、133へ通知する(ステップS542)。更新モジュール131、133は、更新終了通知を受信する(ステップS543a、543b)。
更新モジュール131、132、133はそれぞれ、事前に受信した更新検証証明書を用いて、保護制御モジュール121が正しく更新されたかを検証し(ステップS544)、検証結果を更新用ソフトウェア配布モジュール210へ通知する(ステップS545)。
更新用ソフトウェア配布モジュール210は、各更新モジュールから送信された検証結果を受信すると(ステップS546)、受信した検証結果から保護制御モジュール121が正しく更新されたかを判定し(ステップS547)、正しく更新されていないと判定した場合には(ステップS547でNo)、機器100を停止する(ステップS548)。
正しく更新されていると判定した場合には(ステップS547でYes)、更新処理の終了を各更新モジュールへ通知する(ステップS549)。
更新モジュール131、132、133はそれぞれ、更新処理の終了の通知を受けると(ステップS550)、保護制御モジュール121のMAC値を生成し、MAC値テーブルに保護制御モジュール121の識別子とMAC値との組を保存する(ステップS551)。
9.6.3.監視処理と更新処理との関係
続いて、監視処理と更新処理との関係について説明する。上述した監視処理と更新処理とは、互いに連携しながら実行される。
続いて、監視処理と更新処理との関係について説明する。上述した監視処理と更新処理とは、互いに連携しながら実行される。
監視処理は、更新用ソフトウェア配布モジュール210から、更新モジュール群130に含まれる更新モジュールを送信先として、複数の鍵が送られる時と、暗号化された更新用保護制御モジュールの更新モジュール群130に含まれる更新モジュールでの復号処理中に定期的に実施される。定期的に実施する際の時間間隔は、例えば、更新用保護制御モジュール121が通信路を通して完全に外部に出力されるまでの時間より短い間隔である。完全に外部に出力されるまでに1秒かかるのであれば、例えば、それより短い500ミリ秒間隔のタイミングで監視処理を実行する。
監視処理と更新処理との連携動作を、図23を用いて説明する。図23は、監視処理と更新処理との連携動作の流れを模式的に示す図である。本図において、監視処理及び更新処理に関しては、ポイントとなる処理のみ説明する。
まず、回復処理の開始後、更新サーバ200から機器100へ多重暗号化更新用保護制御モジュール121が送付される前に、機器100内部で監視処理(監視1)を実施する。更新処理を開始するにあたって、不正な更新モジュールが機器100内部に存在しないことを検証するためである。
その後、更新サーバ200から機器100へ第1の鍵が送信され、更新モジュール131が第1の鍵を受信する前に、監視処理(監視2)を実施する。機器100が鍵を受信する時に、不正な更新モジュールが機器100内部に存在しないことを検証するためである。
さらに、更新モジュール131が第1の鍵を受信し、第1の鍵を用いて多重暗号化更新用保護制御モジュール121を復号する間、定期的に更新モジュール131による復号処理を中断し、監視処理(監視3-1、3-2)を実施する。これにより、復号処理中に、更新モジュール131、132、133の何れかが攻撃されたとしても、暗号化更新用保護制御モジュール121が全て漏洩する前に攻撃者による攻撃を検出することができ、暗号化更新用保護制御モジュール121の漏洩を防止することが可能となる。
これ以降の処理は、上記と同様に、更新サーバ200から機器100へ送信される第2の鍵を更新モジュール132が受信する前に、監視処理(監視4)を実施し、機器100が鍵を受信する時に、不正な更新モジュールが機器100内部に存在しないことを検証する。
さらに、更新モジュール132が第2の鍵を受信した後、第2の鍵を用いて暗号化更新用保護制御モジュール121を復号する間、定期的に更新モジュール132による復号処理を中断し、監視処理(監視5-1、5-2)を実施する。これにより、更新用保護制御モジュール121が全て漏洩する前に攻撃者による攻撃を検出することができ、更新用保護制御モジュール121の漏洩を防止することが可能となる。
また、上記の各監視処理において、各更新モジュールは改ざん検出結果を更新用ソフトウェア配布モジュール210へ通知する。更新用ソフトウェア配布モジュール210は、改ざん検出結果に基づいて、何れかの更新モジュールが改ざんされていると判定した場合には、回復処理を停止する。これにより、第1の鍵あるいは第2の鍵の送信前に、攻撃者による攻撃が検出されれば、攻撃者は多重暗号化更新用保護制御モジュール121を復号するための鍵を入手することが不可能になる。
9.6.4.再暗号化処理
続いて、再暗号化処理について説明する。再暗号化処理では、更新用保護制御モジュール121が、各更新モジュールが保持している分散情報を取得し、取得した分散情報から、更新前の保護制御モジュール120が保持していた暗復号鍵(旧暗復号鍵)を復元する。さらに、新たに暗復号鍵(新暗復号鍵)を生成し、復元した旧暗復号鍵を用いて、暗号化されたアプリ110、111を復号した後、新暗復号鍵を用いて、アプリ110、111を再暗号化する。
続いて、再暗号化処理について説明する。再暗号化処理では、更新用保護制御モジュール121が、各更新モジュールが保持している分散情報を取得し、取得した分散情報から、更新前の保護制御モジュール120が保持していた暗復号鍵(旧暗復号鍵)を復元する。さらに、新たに暗復号鍵(新暗復号鍵)を生成し、復元した旧暗復号鍵を用いて、暗号化されたアプリ110、111を復号した後、新暗復号鍵を用いて、アプリ110、111を再暗号化する。
以下、再暗号化処理の一例を、フローチャートを用いて詳細に説明する。図24は、再暗号化処理を示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
まず、更新された保護制御モジュール121が、各更新モジュール131、132、133に対して、それぞれが保持している分散情報と暗復号鍵証明書とを送信するよう依頼する(ステップS561)。
更新モジュール群は、保護制御モジュール121からの依頼を受信すると(ステップS562)、保護制御モジュール121に分散情報と暗復号鍵証明書とを送信する(ステップS563)。
保護制御モジュール121は、更新モジュール群から分散情報と暗復号鍵証明書とを受信すると(ステップS564)、受信した分散情報から更新前の保護制御モジュール120が使用していた暗復号鍵(旧暗復号鍵)を復元する(ステップS565)。そして、旧暗復号鍵が正しく復元されたか否かを、暗復号鍵証明書を用いて検証する(ステップS566)。
旧暗復号鍵が正しく復元されなかった場合には(ステップS566でNo)、どの更新モジュールが不正な分散情報を送信したかを特定する(炙り出し)(ステップS567)。特定した不正な更新モジュールは、更新サーバ200へ通知される。
ここで、不正な更新モジュールを特定するための方法としては、以下の方法がある。まず、保護制御モジュール121は、各更新モジュールから分散情報のペアを取得し、取得した各分散情報に、どの更新モジュールから取得したかを識別するための識別情報をつける。次に、同じ識別子が付された、同一の値となるべき分散情報同士をグループ化し、各グループ中の分散情報同士の値を比較し、同じ値になる分散情報同士をさらにグループ化(サブグループ)する。そして、全てのグループからサブグループを1つずつ選び出す組み合わせの全てに対して、それぞれ旧暗復号鍵を生成し、正しい旧暗復号鍵が生成できたかを検証する。検証した結果、正しい旧暗復号鍵が生成できた場合は、当該組み合わせで選択されているサブグループに検証を通ったことを表す検証通過識別情報を付す。全ての組み合わせで旧暗復号鍵の生成及び検証を行った後、検証通過識別情報が付されているサブグループに含まれる分散情報を取り除く。ここで取り除かれずに残った分散情報が不正な値になっている分散情報である。そして、この分散情報の識別情報から当該分散情報を保持していた更新モジュールを特定する。これにより、識別情報に対応する更新モジュールが不正な分散情報を保持していた不正な更新モジュールであると特定することができる。
図24に戻って、旧暗復号鍵が正しく復元された場合には(ステップS566でYes)、保護制御モジュール121が暗復号鍵生成部506を用いて、新しい暗復号鍵(新暗復号鍵)を生成し(ステップS568)、旧暗復号鍵を用いて暗号化されたアプリ110、111を復号した後(ステップS569)、新暗復号鍵を用いてアプリ110、111を再暗号化する(ステップS570)。
9.7.次ラウンド準備時の動作
続いて、次ラウンド準備処理について説明する。回復処理の終了後、次の回復処理のための準備を行う次ラウンド準備処理を実施する。次ラウンド準備処理では、初期設計時の初期化処理と同様に、分散情報の生成と埋め込みを行う。
続いて、次ラウンド準備処理について説明する。回復処理の終了後、次の回復処理のための準備を行う次ラウンド準備処理を実施する。次ラウンド準備処理では、初期設計時の初期化処理と同様に、分散情報の生成と埋め込みを行う。
図25は、次ラウンド準備時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。本フローチャートにおいて、更新モジュール131、132、133の各々が個別に行う処理を、更新モジュール群としてまとめて記載している。
まず、保護制御モジュール121が、暗復号鍵(新暗復号鍵)から秘密分散法を用いて分散情報を生成し(ステップS601)、更に、署名秘密鍵を用いて暗復号鍵証明書を生成する(ステップS602)。生成した分散情報と暗復号鍵証明書とをそれぞれ、更新モジュール群へ送信する(ステップS603)。ここで、分散情報は、初期化処理時と同様に、更新モジュールと同数だけ生成され、それぞれの更新モジュール131、132、133には、異なる分散情報のペアが送信される。暗復号鍵証明書については、それぞれの更新モジュール131、132、133へ同じものが送信される。
更新モジュール群は、保護制御モジュール121から分散情報と暗復号鍵証明書とを受信すると(ステップS604)、受信した分散情報と暗復号鍵証明書とを分散情報保持部310に保持する(ステップS605)。
なお、この時、相互認証時において認証に失敗した不正な更新モジュールや、回復処理内の監視処理において検出した不正な更新モジュール、回復処理内の再暗号化処理において炙り出した不正な更新モジュールに対しては、分散情報を送信しない。
9.8.無効化時の動作
続いて、無効化処理について説明する。無効化処理は、相互認証時において認証に失敗した更新モジュールが存在した場合や、回復処理内の監視処理において改ざんされた更新モジュールを検出した場合、回復処理内の再暗号化処理において不正な更新モジュールを炙り出した場合等に、機器100内部に存在する不正な更新モジュールを無効化する処理である。
続いて、無効化処理について説明する。無効化処理は、相互認証時において認証に失敗した更新モジュールが存在した場合や、回復処理内の監視処理において改ざんされた更新モジュールを検出した場合、回復処理内の再暗号化処理において不正な更新モジュールを炙り出した場合等に、機器100内部に存在する不正な更新モジュールを無効化する処理である。
上述のように改ざんされた更新モジュールを検出した場合には、不正な動作を防止するためにも、その更新モジュールの機能を停止させる必要があるのは言うまでもないが、その際、当該更新モジュールの機能を停止させる構成として、複数の更新モジュールの各々に予め更新モジュールの無効化機能を持たせておくことが考えられる。しかしながら、複数の更新モジュールの各々に予め更新モジュールの無効化機能を持たせておくと、更新モジュール群に含まれる一の更新モジュールが改ざんされた場合に、当該更新モジュールが正常な更新モジュールを無効化することが可能になる。本実施の形態によれば、更新サーバ200に選択された更新モジュールのみが改ざんされた更新モジュールを無効化することができるので、改ざんされた更新モジュールによる正常な更新モジュールの無効化を防止することができる。
以下に、回復処理内の監視処理において更新モジュール133の改ざんのみが検出され、更新モジュール131、132の改ざんは検出されなかった場合の処理を例に挙げ、無効化時の動作の詳細を説明する。図26は、更新モジュール133無効化時のソフトウェア更新システム1000の動作の流れを示すフローチャートである。
まず、更新用ソフトウェア配布モジュール210は、監視処理において更新モジュール131、132、133から受信した改ざん検出結果に基づいて、どの更新モジュールが改ざんされたかを判定する(ステップS701)。この例では、更新モジュール133が改ざんされていると判定し、それ以外の更新モジュールは改ざんされていないと判定する。
更新用ソフトウェア配布モジュール210は、改ざんされていないと判定した更新モジュールの何れか(ここでは更新モジュール131)へ、改ざんされた更新モジュール133の無効化を依頼する(ステップS702)。さらに、アクセス情報取得鍵配布モジュール220へ、無効化に関する情報を通知する(ステップS703)。無効化に関する情報は、改ざんされた更新モジュール133の情報(更新モジュール識別子)及び無効化を依頼した更新モジュール131の情報(更新モジュール識別子)である。
更新モジュール131は、更新用ソフトウェア配布モジュール210から更新モジュール133の無効化依頼を受信すると(ステップS704)、アクセス情報取得鍵配布モジュール220に対し更新モジュール133を無効化するためのアクセス情報取得鍵を送付するよう依頼する(ステップS705)。さらに、アクセス制御モジュール140に対し更新モジュール133を無効化するためのアクセス情報を送信するよう依頼する(ステップS706)。
アクセス情報取得鍵配布モジュール220は、無効化に関する情報を更新用ソフトウェア配布モジュール210から受信し(ステップS707)、アクセス情報取得鍵の送付依頼を更新モジュール131から受信すると(ステップS708)、無効化に関する情報に基づいて、送付依頼が正しい依頼であるか否かを判断する(ステップS709)。この判断は、更新用ソフトウェア配布モジュール210から通知された無効化に関する情報に基づいて、送付依頼をした更新モジュール131が更新用ソフトウェア配布モジュール210により無効化依頼をされた更新モジュールかどうか、及び送付依頼の対象であるアクセス情報取得鍵が改ざんされた更新モジュール133に対応するアクセス情報取得鍵かどうかを判断することにより行われる。
正しい依頼でないと判断した場合(ステップS709でNo)、すなわち、改ざんされた更新モジュール133からの依頼であったり、あるいは改ざんされていない更新モジュール131、132に対応するアクセス情報取得鍵の取得依頼であったりする場合には、無効化処理を終了する。
正しい依頼であると判断した場合には(ステップS709でYes)、依頼元の更新モジュール131へ、更新モジュール133を無効化するためのアクセス情報取得鍵を送付する(ステップS710)。
アクセス制御モジュール140は、更新モジュール131から更新モジュール133を無効化するためのアクセス情報取得依頼を受信すると(ステップS711)、更新モジュール133に対応する暗号化アクセス情報を送信する(ステップS712)。
更新モジュール131は、アクセス制御モジュール140から暗号化アクセス情報を受信し(ステップS713)、アクセス情報取得鍵配布モジュール220からアクセス情報取得鍵を受信すると(ステップS714)、受信したアクセス情報取得鍵を用いて暗号化アクセス情報を復号し、アクセス情報を取得する(ステップS715)。取得したアクセス情報は、更新モジュール133を消去するための専用ドライバである。更新モジュール131は、そのドライバを利用して、RAM13上に展開されている、改ざんされた不正な更新モジュール133を無効化する(ステップS716)。
無効化処理が終了すると、更新モジュール131は、アクセス情報取得鍵配布モジュール220から取得したアクセス情報取得鍵や、アクセス制御モジュール140から取得した暗号化されたアクセス情報、復号後のアクセス情報等を消去する。
以上のように本実施の形態によれば、回復処理において、更新モジュール群内の複数の更新モジュールが監視処理を行うので、改ざんされた更新モジュールを検出することが可能となり、ソフトウェア更新システムの信頼性を高めることができる。
また、改ざんされた更新モジュールを無効化するので、改ざんされた更新モジュールによる不正動作を防止することができる。
(実施の形態2)
実施の形態2では、保護制御モジュール120が、復号ロード機能や改ざん検出機能、解析ツール検出機能等の機能を制御し、アプリ110、111を攻撃者による攻撃から保護するだけではなく、更新モジュール131、132、133を攻撃者による攻撃から保護する。これにより、更新モジュール131、132、133が一方的に保護制御モジュール120の改ざんを検出するだけでなく、更新モジュール131、132、133と保護制御モジュール120とが相互に監視し合う構成とすることができる。
(実施の形態2)
実施の形態2では、保護制御モジュール120が、復号ロード機能や改ざん検出機能、解析ツール検出機能等の機能を制御し、アプリ110、111を攻撃者による攻撃から保護するだけではなく、更新モジュール131、132、133を攻撃者による攻撃から保護する。これにより、更新モジュール131、132、133が一方的に保護制御モジュール120の改ざんを検出するだけでなく、更新モジュール131、132、133と保護制御モジュール120とが相互に監視し合う構成とすることができる。
実施の形態2における検知時の動作としては、保護制御モジュール120がそれぞれの更新モジュールが改ざんされていないかどうかを、改ざん検出用証明書を用いて検証する。更新モジュール131、132、133のうち何れかの更新モジュールの改ざんを検出した場合には、その旨を更新用ソフトウェア配布モジュール210へ通知する。
改ざんを検出しなかった場合には、更新用ソフトウェア配布モジュール210への通知は行わない。
保護制御モジュール120から更新用ソフトウェア配布モジュール210へ、更新モジュール131、132、133の改ざんを検出した旨の通知があった場合には、更新用ソフトウェア配布モジュール210は、保護制御モジュール120が改ざんされていないかを確認するために、更新モジュール131、132、133へ保護制御モジュール120の改ざん検出を依頼する。
更新用ソフトウェア配布モジュール210から依頼を受けた更新モジュール131、132、133は、保護制御モジュール120の改ざん検出を実施し、改ざん検出結果を更新用ソフトウェア配布モジュール210へ通知する。この時、保護制御モジュール120が改ざんされていた場合でも、他の更新モジュールへは通知しない。
以降の処理は、本発明の実施の形態1における検知処理において、更新モジュール131、132、133から更新用ソフトウェア配布モジュール210へ、保護制御モジュール120の改ざんを検出した旨の通知があった場合の処理と同様であるので、ここでは省略する。
以上のように本実施の形態によれば、検知処理において、更新モジュール131、132、133と保護制御モジュール120とが相互に監視し合い、更新モジュールが改ざんされている場合には、保護制御モジュール120もそれを検出することが可能となるので、ソフトウェア更新システムの信頼性を高めることができる。
(実施の形態3)
実施の形態3では、各更新モジュールに保護制御モジュール120を更新するための機能を予め持たせるのではなく、保護制御モジュール120の改ざんを検出し、保護制御モジュール120を更新する必要が生じた時に、保護制御モジュール120を更新するためのアクセス情報を取得することにより、保護制御モジュール120を更新する機能を更新モジュールに付加する。
(実施の形態3)
実施の形態3では、各更新モジュールに保護制御モジュール120を更新するための機能を予め持たせるのではなく、保護制御モジュール120の改ざんを検出し、保護制御モジュール120を更新する必要が生じた時に、保護制御モジュール120を更新するためのアクセス情報を取得することにより、保護制御モジュール120を更新する機能を更新モジュールに付加する。
そこで、本実施の形態におけるアクセス情報取得鍵配布モジュール220は、各更新モジュールのアクセス情報取得鍵に加え、保護制御モジュール120を更新するためのアクセス情報取得鍵を保持している。
また、本実施の形態におけるアクセス情報モジュール140は、各更新モジュールのアクセス情報に加え、保護制御モジュール120を更新するための暗号化アクセス情報を保持している。
図20~22を用いて、保護制御モジュール120を更新する機能を更新モジュールに付加する処理を説明する。以降の説明において、実施の形態1と同じ処理については同じ符号を用いる。
更新処理(ステップS502)において、更新用ソフトウェア配布モジュール210が更新用保護制御モジュール121を複数の鍵を用いて多重に暗号化し、多重暗号化更新用保護制御モジュールと第1の鍵とを、更新モジュール群に含まれる更新モジュール131を送信先として送信する(ステップS521からS528)。
更新モジュール群に含まれる更新モジュールは、更新用ソフトウェア配布モジュール210から第2の鍵を受信し、多重暗号化された更新用保護制御モジュールを復号し、更新用保護制御モジュールを取得する(ステップS529からS540)。
更新用保護制御モジュールを取得後、更新モジュール132は、保護制御モジュール120を更新用保護制御モジュール121へ更新するために、アクセス情報取得鍵配布モジュール220に対し保護制御モジュール120を更新するためのアクセス情報取得鍵を送付するよう依頼する。さらに、アクセス制御モジュール140に対し保護制御モジュール120を更新するためのアクセス情報を送信するよう依頼する。
アクセス情報取得鍵配布モジュール220は、アクセス情報取得鍵の送付依頼を受けると、依頼元の更新モジュールが保護制御モジュール120を更新する更新モジュールであるかどうかを、更新用ソフトウェア配布モジュール210に問い合わせ、保護制御モジュール120を更新する更新モジュールであった場合には、依頼元の更新モジュール132へ、保護制御モジュール120を更新するためのアクセス情報取得鍵を送付する。
アクセス情報モジュール140は、更新モジュール132からアクセス情報の送信依頼を受け付けると、保護制御モジュール120に対応する暗号化アクセス情報を更新モジュール132に送信する。
更新モジュール132は、アクセス情報取得鍵配布モジュール220からアクセス情報取得鍵を受信し、アクセス制御モジュール140から暗号化アクセス情報を受信すると、受信したアクセス情報取得鍵を用いて、暗号化アクセス情報を復号し、アクセス情報を取得する。取得したアクセス情報は、保護制御モジュール120を更新するための専用ドライバである。更新モジュール132は、そのドライバを利用して、保護制御モジュール120を更新用保護制御モジュール121へ更新する(ステップS541)。そして、更新の終了を他の更新モジュールへ通知する(ステップS542)。
更新モジュール群130に含まれる各更新モジュールは、保護制御モジュール120が更新用保護制御モジュール121へ正しく更新されたか検証し、正しく更新されている場合には、保護制御モジュール121のMAC値を生成する(ステップS543からS551)。
(その他の変形例)
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(その他の変形例)
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記実施の形態では、保護制御モジュール120を更新するとしたが、これに限定するものではなく、更新モジュールやアプリ等、保護制御モジュール120以外のモジュールを更新するとしてもよい。以下に、更新モジュール133を更新する場合を例に挙げ、更新モジュールの更新処理を説明する。更新モジュールの更新処理では、保護制御モジュールを更新する場合と同様に、更新用ソフトウェア配布モジュール210が更新用更新モジュール133を複数の鍵を用いて多重に暗号化し、更新モジュール群130に含まれる更新モジュール(更新モジュール133を除く)を送信先として送信する。更新モジュール群130に含まれる更新モジュールは、更新モジュール133を更新用更新モジュール133に更新する。この時、多重に暗号化された更新用更新モジュール133を復号するための複数の鍵を、更新モジュール群130に含まれる更新モジュールへ送信するタイミングを更新用ソフトウェア配布モジュール210が制御することで、攻撃者が暗号化されていない更新用更新モジュール133を入手することを不可能にする。
図28~30は、更新モジュールの更新処理の一例を示すフローチャートである。ここでは、上述したように更新モジュール133を更新するものとする。
図28~30は、基本的には、図20~22と同様である。異なる点は、更新対象となる更新モジュール133には、更新検証証明書や、復号終了通知、更新終了通知が送信されないことである。
また、更新モジュールを無効化するとしたが、これに限定するものではなく、保護制御モジュール120やアプリ等、更新モジュール以外のモジュールを無効化するとしてもよい。アプリ100、110は、上述した機能以外の機能を提供するソフトウェアであってもよい。
また、一つでも更新モジュールが改ざんされている場合には、改ざんされていない更新モジュールが全ての更新モジュール及び保護制御モジュールを更新あるいは無効化するとしてもよい。
(2)上記実施の形態では、更新モジュール131、132、133は、監視制御部301、改ざんチェック実行部302、更新制御部303、復号部304、認証部305、署名公開鍵保持部306、検証鍵保持部307、認証鍵対保持部308、MAC値保持部309、分散情報保持部310、アクセス情報取得部311、及び無効化処理部312を含んで構成されるとしたが、これに限定するものではなく、監視処理に必要な構成要素(監視制御部301、改ざんチェック実行部302、署名公開鍵保持部306)のみで構成されるとしてもよいし、更新処理に必要な構成要素(更新制御部303、復号部304、認証部305、署名公開鍵保持部306、認証鍵対保持部308)のみで構成されるとしてもよいし、無効化処理に必要な構成要素(アクセス情報取得部311、無効化処理部312)のみで構成されるとしてもよいし、さらに、上記の組み合わせから構成されるとしてもよい。この時、更新モジュール群130に含まれる更新モジュール全体として、監視処理と更新処理に必要な構成要素を含むよう構成されていればよい。
(3)上記実施の形態では、更新モジュール131、132、133において監視制御部303が他の更新モジュールを改ざん検出するタイミング、及び改ざん検出対象となる更新モジュールの選択処理を制御するとした。すなわち、各更新モジュールの監視制御部303が独立に監視に関する制御を行うとしたが、これに限定するものではなく、1つの更新モジュールの監視制御部303が監視処理全体を制御するとしてもよいし、監視制御部303が更新サーバ200からの指示に基づいて、改ざん検出タイミングや改ざん検出対象となる更新モジュールの選択を制御するとしてもよい。
(4)上記実施の形態では、更新モジュール131、132、133において改ざんチェック実行部302により他の更新モジュールや保護制御モジュール120の改ざんチェックを実行するとしたが、改ざんチェック対象はモジュール全体に限定するものではなく、モジュール内の一部、例えば、特定の機能や関数、鍵等のデータであってもよい。また、一度に改ざん対象全てを改ざんチェックするのではなく、改ざん対象の一部を改ざんチェックするだけでもよい。この時、改ざん対象を一定のサイズに分割した部分毎に改ざんチェックしてもよいし、機能や関数単位で分割した部分毎に改ざんチェックしてもよい。さらに、改ざん対象の一部を、改ざんチェックの度に順番に改ざんチェックするとしてもよいし、改ざんチェックする部分を改ざんチェックの度にランダムに決定してもよし、どの部分を改ざんチェックするかが他のモジュールや機器100外部などから与えられるとしてもよい。
(5)上記実施の形態では、更新モジュール131、132、133や保護制御モジュール120は、耐タンパ化された領域等、攻撃者による攻撃から保護されている領域で動作するとしてもよい。監視処理に必要な構成要素のみで構成される更新モジュールが、攻撃者による攻撃から保護されている領域で動作する場合、他の更新モジュールや更新用ソフトウェア配布モジュール210、アクセス情報取得鍵配布モジュール220は、その保護された領域にある更新モジュールから、他の更新モジュールや保護制御モジュール120が攻撃されたことを検知した旨の通知を受けたときに、その通知を無条件に受け入れ、更新処理や無効化処理を実施してもよいし、その通知を他のモジュールからの通知よりも重要な通知として扱い、更新処理や無効化処理の判断を行ってもよい。
また、保護制御モジュールが保護モード(耐タンパ化された領域等)で、更新モジュールが通常モード(耐タンパ化されていない領域等)で動作するとしてもよい。これにより、保護モードで動作する保護制御モジュールが信頼できなくなったときにもそれを検知し、更新できる。
(6)上記実施の形態では、アクセス情報取得鍵配布モジュール220は、更新サーバ200にあり、アクセス制御モジュール140は、機器100にあるとしたが、これに限定するものではなく、アクセス情報取得鍵配布モジュール220とアクセス制御モジュール140とはそれぞれ、機器100にあってもよいし、更新サーバ200にあってもよいし、各更新モジュール内にあってもよい。また、アクセス情報取得鍵配布モジュール220とアクセス制御モジュール140とは、別々のモジュールではなく1つのモジュールであってもよい。アクセス情報取得鍵配布モジュール220とアクセス制御モジュール140とが1つのモジュールである場合には、更新モジュールへアクセス情報取得鍵と暗号化アクセス情報とを送信するのではなく、アクセス情報を直接送信してもよい。さらに、アクセス情報取得鍵配布モジュール220やアクセス制御モジュール140が機器100内にあるときには、耐タンパ化などにより攻撃から保護される領域にあるとしてもよい。
(7)上記実施の形態では、更新サーバ200は、更新用ソフトウェア配布モジュール210とアクセス情報取得鍵配布モジュール220とから構成されるとしたが、これに限定するものではなく、更新用ソフトウェア配布モジュール210とアクセス情報取得鍵配布モジュール220とは、1つのモジュールであってもよいし、どちらか1つのモジュールのみで構成されてもよい。
(8)上記実施の形態では、ソフトウェア更新システム1000は、機器100の工場製造時に初期設計処理を行うとしたが、これに限定するものではなく、販売後など工場出荷後のどこかで初期化処理を実施してもよい。また、初期化処理は1度だけでなく、2度以上実施してもよい。
(9)上記実施の形態では、初期設計時の動作として、改ざん検出用証明書及び認証鍵証明書は、更新用ソフトウェア配布モジュール210が保持する署名秘密鍵を用いて生成された証明書であるとしたが、これに限定するものではなく、それぞれ別の鍵を用いて生成されてもよいし、更新用ソフトウェア配布モジュール210以外の証明書発行装置により発行された証明書でもよい。
(10)上記実施の形態では、初期設計時や次ラウンド準備時の動作として、暗復号鍵から生成する分散情報を更新モジュール131、132、133へ送信し、更新モジュール131、132、133が分散情報を保持するとしたが、これに限定するものではなく、更新モジュールの代わりにアプリが保持するとしてもよいし、更新モジュール131、132、133とアプリとが保持するとしてもよい。
(11)上記実施の形態では、検知時の動作として、更新モジュール131、132、133が保護制御モジュール120の改ざん検出を行うときに、検証鍵を使用して計算したMAC値を用いて改ざん検出処理を行うとしたが、これに限定するものではなく、保護制御モジュール120の改ざん検出用証明書を用いて検証するとしてもよい。また、MAC値や証明書のようにハッシュ値を利用した改ざん検証を行うのではなく、ログをチェックすることで改ざん検証を行うとしてもよい。
(12)上記実施の形態では、検知時の動作として、更新モジュール131、132、133が保護制御モジュール120の改ざんを検出した場合、更新用ソフトウェア配布モジュール210と他の更新モジュールへ通知するとしたが、これに限定するものではなく、更新用ソフトウェア配布モジュール210と他の更新モジュールのうち、どれか1つ以上のモジュールに通知するとしてもよい。また、保護制御モジュール120の改ざんを検出した場合、更新モジュールを停止するとしてもよいし、機器100や保護制御モジュール120を停止するとしてもよい。更に、改ざんされた保護制御モジュールを消去するとしてもよい。さらに、更新モジュール131、132、133が保護制御モジュール120の改ざんを検出しなかった場合、更新用ソフトウェア配布モジュール210へ通知を行わないとしたが、これに限定するものではなく、改ざん検出処理を実施した結果として、改ざんを検出しなかった旨を通知するとしてもよい。
(13)上記実施の形態では、検知時の動作として、更新モジュール131、132、133は、他の更新モジュールに保護制御モジュールの改ざん検出結果を送信しないとしたが、それぞれの更新モジュールで検出結果を共有するとしてもよい。また、検出結果を共有しない更新モジュールがあった場合に、当該更新モジュールを不正な更新モジュールと判断して、無効化するとしてもよい。
(14)上記実施の形態では、解析・判断時の動作として、改ざん情報に基づいて保護制御モジュール120を更新するかどうか判定するとしたが、これに限定するものではなく、改ざんされていると通知してきた更新モジュールの数によって更新するかどうかを判定してもよい。また、解析・判断時の動作として、保護制御モジュール120を更新するか否か、及び保護制御モジュール120を無効化するか否かを判断したが、これに限定するものではなく、機器100を停止するか否かを判断するとしてもよい。
(15)上記実施の形態では、相互認証時の動作として、更新モジュール131、132、133が、更新用ソフトウェア配布モジュール210を認証し、その後、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証するとしたが、これに限定するものではなく、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証し、その後、更新モジュール131、132、133が、更新用ソフトウェア配布モジュール210を認証してもよいし、それぞれの更新モジュール131、132、133と更新用ソフトウェア配布モジュール210とが個別に認証処理を行ってもよい。
(16)上記実施の形態では、相互認証時の動作として、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証する処理において、チャレンジデータをそれぞれの更新モジュールで異なる値にするとしたが、これに限定するものではなく、チャレンジデータとして全ての更新モジュールで同じ値としてもよいし、更新モジュール131、132、133を複数のグルーブに分け、それぞれのグループで異なる値にしてもよい。
(17)上記実施の形態では、相互認証時の動作として、それぞれの更新モジュール131、132、133が、更新用ソフトウェア配布モジュール210を認証する処理において、それぞれの更新モジュール131、132、133が個別に更新用ソフトウェア配布モジュール210を認証するとしたが、これに限定するものではなく、署名検証した結果を他の更新モジュールへ通知し、更新モジュール間で検証結果を共有し、自更新モジュールの認証結果と他の更新モジュールから受信した認証結果とから、更新用ソフトウェア配布モジュール210が正当なモジュールかどうかをそれぞれ判定してもよい。判定方法としては、例えば、一定数(例えば、過半数等)の更新モジュールが認証に成功した場合には正当なモジュールであると判定し、そうでない場合には、正当なモジュールではないと判定する方法がある。
(18)上記実施の形態では、相互認証時の動作として、更新サーバ200は署名秘密鍵と署名公開鍵とを使用して相互認証処理を実施するとしたが、これに限定するものではなく、署名秘密鍵と署名公開鍵とは別に、相互認証に使用する認証鍵対を用いるとしてもよい。この時、更新サーバ200の認証鍵対のうちの認証公開鍵は、予め更新モジュール131、132、133で保持するとしてもよいし、相互認証処理時に更新サーバ200から更新モジュール131、132、133へ送信するとしてもよい。
(19)上記実施の形態では、相互認証時の動作として、正当なモジュールであると検証できた更新モジュールが、回復処理に必要な数以上あるかどうかで、その後の回復処理を実施するかどうか判定したが、これに限定するものではなく、不正な更新モジュールの数が、予め設定されている許容数未満かどうかで回復処理を実施するかどうか判定してもよい。また、相互認証処理において、回復処理に必要な数に満たないと判定した場合には、機器を停止するとしたが、更新モジュールを無効化してもよい。
(20)本発明の実施の形態1では、相互認証時の動作として、更新用ソフトウェア配布モジュール210がそれぞれの更新モジュール131、132、133を認証する時に、更新モジュール131、132、133は、レスポンスデータと一緒に認証公開鍵と認証鍵証明書とを更新用ソフトウェア配布モジュール210へ送信するとしたが、これに限定するものではなく、それぞれ別のタイミングで送信してもよい。また、認証公開鍵や認証鍵証明書は、更新用ソフトウェア配布モジュール210から要求があったときにのみそれぞれ送信するとしてもよい。この時、更新用ソフトウェア配布モジュール210は、全ての更新モジュールの認証公開鍵や認証鍵証明書を受信してもよいし、予め設定されている、回復処理に必要な数以上、或いは予め設定されている、不正な更新モジュールの許容数未満の更新モジュールの認証公開鍵と認証鍵証明書とを受信してもよい。
(21)本発明の実施の形態1では、回復時の動作として、監視処理時を、1回の復号中(監視3-1、3-2、5-1、5-2)に2回実施するとしたが、これに限定するものではなく、復号処理の時間にあわせて何回監視処理を行ってもよいし、復号処理以外であっても、鍵や更新用保護制御モジュールの受信処理時や検知処理時、相互認証時に監視処理を行ってもよい。また、監視処理を一定時間間隔で定期的に実施するとしたが、これに限定するものではなく、更新処理を複数のブロックに分割し、その処理ブロックの処理が終わるごとに実施してもよいし、ランダムな時間間隔で実施してもよいし、更新サーバ200から指定された時間間隔で実施してもよい。
また、各更新モジュールは、監視処理を実行するタイミングを示す同期情報を外部のサーバから取得し、取得した同期情報にしたがって監視処理を実行するとしてもよい。これにより、各更新モジュールは、他の更新モジュールと同じタイミングで監視処理を実行することができるので、不正な更新モジュールの検出精度を向上させることができる。
さらに、通常時と回復処理時とにおける検知頻度を変更するとしてもよい。例えば、通常時より回復処理時の検知頻度を高くすることにより、回復処理中の保護制御モジュールの保護に万全を期すことができる。検知頻度の変更は、回復処理中であってもよい。
(22)本発明の実施の形態1では、回復時の動作として、監視処理のパターンは、更新モジュール131が更新モジュール132の改ざん検出を行い、更新モジュール132が更新モジュール133の改ざん検出を行い、更新モジュール133が更新モジュール131の改ざん検出を行うものであったが、これに限定するものではなく、例えば、更新モジュール131が更新モジュール133の改ざん検出を行い、更新モジュール132が更新モジュール131の改ざん検出を行い、更新モジュール133が更新モジュール132の改ざん検出を行うなど、予め決められたパターンで改ざん検出するとしてもよいし、どの更新モジュールの改ざん検出を行うかをランダムに決定してもよいし、他のモジュールや機器100外部から与えられるとしてもよい。また、各更新モジュールは、当該更新モジュール(自更新モジュール)が改ざんされていないかを検証するとしてもよい。さらに、自更新モジュールの改ざんを検出すると、自更新モジュール自身を無効化するとしてもよい。更に、全ての更新モジュールが他の更新モジュールから監視される必要はなく、他の更新モジュールから監視されない更新モジュールがあってもよいし、複数の更新モジュールから監視されてもよい。また、監視処理のパターンを変更する場合は、改ざん検出の処理毎など、一定の間隔で変更するとしてもよいし、ランダムなタイミングで変更するとしてもよいし、他のモジュールや機器100外部から与えられたタイミングで変更するとしてもよい。また、複数の更新モジュールは、改ざん検出の結果を、更新サーバにより指定される順序で、更新サーバに送信してもよい。
(23)本発明の実施の形態1では、回復時の動作として、監視処理時に、更新モジュール131が更新モジュール132の改ざん検出を行い、更新モジュール132が更新モジュール133の改ざん検出を行い、更新モジュール133が更新モジュール131の改ざん検出を行うというように、全ての更新モジュールが監視処理を行うとしたが、これに限定するものではなく、一つの更新モジュールが更新処理を実施し、他の更新モジュールが監視処理を実施してもよい。この時の監視パターンとしては、更新処理を行っている更新モジュールを、1つの更新モジュールが監視してもよいし、複数または全ての更新モジュールが監視してもよい。例えば、更新モジュール131が更新モジュール132の改ざん検出を行い、更新モジュール132が更新モジュール133の改ざん検出を行い、更新モジュール133が更新処理を行う。これにより、更新処理を中断することなく監視処理も実施できる。
また、上記実施の形態では、更新モジュール131が更新モジュール132の改ざん検出を行い、更新モジュール132が更新モジュール133の改ざん検出を行い、更新モジュール133が更新モジュール131の改ざん検出を行うというように、監視構成としてループ方式を用いたが、複数の更新モジュールの各々が相互に監視し合う構成としてもよいし、それらを組み合わせてもよい。複数の更新モジュールの各々が相互に監視し合う構成とすることにより、改ざん検証精度をさらに高めることができる。
(24)本発明の実施の形態1では、回復時の動作として、更新モジュール132は、取得した更新用保護制御モジュール121を保護制御モジュール120に上書きし、保護制御モジュール120を更新するとしたが、これに限定するものではなく、更新用ソフトウェア配布モジュール210から保護制御モジュール120と更新用保護制御モジュール121との差分を取得し、差分のみを更新するとしてもよいし、更新用保護制御モジュール121を保護制御モジュール120とは別の領域へ書き込み、保護制御モジュール120に代わって、更新用保護制御モジュール121が実行されるようにしてもよい。
(25)本発明の実施の形態1では、回復時の動作として、監視処理により、更新モジュール131、132、133の改ざんが検出された場合、改ざん検出の通知を受けた更新用ソフトウェア配布モジュール210は、直ちに回復処理を停止するとしたが、これに限定するものではなく、更新用ソフトウェア配布モジュール210から更新モジュールへ、鍵などのデータを次に送信するタイミングで回復処理を停止するとしてもよい。また、回復処理を停止するのではなく、改ざんされた更新モジュールを使用せずに、正常な更新モジュールを用いて回復処理を行うとしてもよいし、改ざんされた更新モジュールを無効化あるいは更新するとしてもよい。この時、無効化や更新などの処理を行うタイミングとしては、直ちに処理してもよいし、次に鍵が送付されるタイミングで処理してもよいし、改ざんされた更新モジュールを使用せずに回復処理を再開するときに処理してもよい。改ざんされた更新モジュールを無効化あるいは更新する処理を担う更新モジュールを更新サーバが指定するとしてもよい。また、監視処理により改ざんが検出された場合だけでなく、検知処理時に保護制御モジュール120によって改ざんが検出された更新モジュールや、相互認証処理時に認証に失敗した更新モジュールについても同様に、当該更新モジュールを使用せずに回復処理を行うとしてもよいし、改ざんされた更新モジュールを無効化するとしてもよいし、更新するとしてもよい。さらに、改ざんされた更新モジュールが存在する場合には、保護制御モジュールの更新を行わないとしてもよい。
(26)本発明の実施の形態1では、回復時の動作として、更新処理において復号に使用する更新モジュールを、更新用ソフトウェア配布モジュール210が更新モジュール群130から一つ選択するとしたが、その選択方法は、予め決められた更新モジュールを選択するとしてもよいし、ランダムに決定するとしてもよいし、機器100から通知された情報を元に決定するとしてもよいし、相互認証時に認証した順番に応じて選択するとしてもよい。
(27)本発明の実施の形態1では、回復時の動作として、更新処理において更新用ソフトウェア配布モジュール210が更新用保護制御モジュール121を複数の鍵を用いて多重に暗号化するとしたが、これに限定するものではなく、更新用保護制御モジュール121を複数の部分に分割した分割モジュールを生成し、分割モジュールそれぞれを個別に暗号化し、更新モジュールと一対一に対応する形態で、更新モジュールへ送信するとしてもよい。この場合、更新処理としては、暗号化した分割モジュールと暗号に使用した鍵を送信するときに、それらを1度に全て送信するのではなく、1つの暗号化した分割モジュールの復号処理が終了するまで、他の暗号化した分割モジュールと鍵を送信しないように、更新モジュールへの送信を制御する。別の方法として、暗号化した分割モジュールは1度に更新モジュールへ送信し、それらを復号するための鍵の送信のタイミングのみを制御するとしてもよいし、鍵は1度に更新モジュールへ送信し、暗号化した分割モジュールの送信のタイミングのみを制御するとしてもよいし、全ての鍵と暗号化した分割モジュールを1度に送信するとしてもよい。また、分割モジュールは、1つの鍵で暗号化されるのではなく、複数の鍵を用いて多重に暗号化されてもよい。この場合、鍵や多重暗号化した分割モジュールの送信制御は、更新用保護制御モジュール121を複数の鍵を用いて多重に暗号化した時と同様である。更に、暗号化した分割モジュールとそれを復号する鍵は、1つの更新モジュールへ送信してもよいし、それぞれ別の更新モジュールへ送信し、機器100内部で更新モジュール同士が協調動作するとしてもよい。その際、分割モジュールを受信する前後で監視処理を実施してもよい。また、監視処理により、改ざんされた不正な更新モジュールが検出された場合、次の分割モジュールを送信するタイミングで更新処理を停止してもよい。さらに、複数の更新モジュールは、改ざんされた更新モジュールが存在する場合には、それを更新サーバに通知し、更新サーバは、改ざんされた更新モジュールには復号鍵を送信しないとしてもよい。分割モジュールはそれぞれ異なる暗号鍵で暗号化されていてもよい。
(28)本発明の実施の形態1では、回復時の動作として、暗復号鍵(旧暗復号鍵)で暗号化されたアプリ110、111を新しい暗復号鍵(新暗復号鍵)を用いて再暗号化するとしたが、これに限定するものではなく、再暗号化処理を行わなくてもよい。この時、新暗復号鍵を生成せずに旧暗復号鍵を使い続けるとしてもよいし、旧暗復号鍵と新暗復号鍵を保持しておき、アプリによって使用する鍵を変える構成にしてもよいし、旧暗復号鍵が必要になったときには分散情報から再び生成するとしてもよい。旧暗復号鍵を使用し続ける場合は、保護制御モジュール120が更新される度に旧暗復号鍵が増えることになる。また、各更新モジュールで新暗復号鍵と旧暗復号鍵の分散情報を保持しておく必要がある。
(29)本発明の実施の形態1において、保護制御モジュール121が正しく更新されなかった場合に機器100を停止するとしたが、これに限定するものではなく、再度、相互認証処理及び回復処理を実施するとしても良い。
(30)本発明の実施の形態1において、無効化時の動作として、アクセス情報は、更新モジュールを消去するための専用ドライバであるとしたが、これに限定するものではなく、更新モジュールを消去するための専用プログラムであってもよいし、更新モジュールを消去するための手順が記された手順書であってもよいし、消去する更新モジュールのアドレスであってもよいし、更新モジュールを消去するプログラムのアドレスであってもよいし、更新モジュールを消去するための機能を動作させるためのレジスタやメモリのアドレスやレジスタやメモリに設定する値であってもよい。また、アクセス情報は、コード部分を消去する旨が記述された情報であってもよい。この場合、コード位置はヘッダに格納されており、ヘッダを参照して消去すべきコード部分を判断するとしてもよい。さらに、アクセス制御モジュール自体が暗号鍵で暗号化されているとしてもよい。その場合には、改ざんされていない更新モジュールは、更新サーバから、アクセス制御モジュールを暗号化した暗号鍵に対応する復号鍵を取得し、取得した復号鍵を用いてアクセス制御モジュールを復号し、改ざんされた更新モジュールに対応するアクセス情報をアクセス制御モジュールから取得し、取得したアクセス情報に基づいて、改ざんされた更新モジュールを無効化するとしてもよい。
(31)本発明の実施の形態1において、無効化時の動作として、改ざんされた更新モジュール全体を消去するとしたが、これに限定するものではなく、改ざんされた不正な更新モジュールの一部、例えば、他のモジュールを読み込むための読み込み機能など特定の機能や関数、鍵や他のモジュールをアクセスするための情報(チケット、トークン、ソケット)などのデータを消去するとしてもよいし、他のプログラムからアクセスできなくしてもよいし、不活性化してもよいし、更新してもよい。また、改ざんされた更新モジュールを無効化した後、無効化処理を行った更新モジュールは、アクセス制御モジュールに格納されている、無効化した更新モジュールに対応するアクセス情報を消去するとしてもよい。
(32)本発明の実施の形態1において、改ざんされた不正な更新モジュールを無効化するとしたが、これに限定するものではなく、改ざんされた不正な更新モジュールを無効化しないとしてもよい。この時、どのくらいの部分が改ざんされているか、どの部分が改ざんされたか等によって、無効化するかどうかを判断してもよいし、改ざんされた不正な更新モジュールの数によって無効化する更新モジュール数を決めてもよい。
(33)本発明の実施の形態2では、保護制御モジュール120が更新モジュール131、132、133の改ざん検出を行うときに、各更新モジュールの改ざん検出用証明書を検証するとしたが、これに限定するものではなく、更新モジュール131、132、133と同様に、検証鍵を使用して計算したMAC値を用いる改ざん検出を行うとしてもよい。この場合、保護制御モジュール120には、検証鍵が埋め込まれ、初期設計時に、改ざん検出用証明書の検証が実施される。問題なかった場合には、保護制御モジュール120が、それぞれの更新モジュールに対して検証鍵を使用してMAC値を生成し、MAC値テーブルとして保持する処理を追加する必要がある。
(34)本発明の実施の形態2では、保護制御モジュール120が、更新モジュール131、132、133の改ざんを検出しなかった場合には、更新用ソフトウェア配布モジュール210へ通知を行わないとしたが、これに限定するものではなく、改ざんを検出しなかった旨を更新用ソフトウェア配布モジュール210へ通知してもよい。
(35)本発明の実施の形態2では、保護制御モジュール120から更新用ソフトウェア配布モジュール210へ、更新モジュール131、132、133の改ざんを検出した旨の通知があった場合、更新用ソフトウェア配布モジュール210は、保護制御モジュール120が改ざんされていないかを確認するために、更新モジュール131、132、133へ保護制御モジュール120の改ざん検出を依頼するとしたが、これに限定するものではなく、保護制御モジュール120から更新用ソフトウェア配布モジュール210へ、更新モジュール131、132、133の改ざんを検出した旨の通知があった場合、検出された更新モジュールが改ざんされていると判断し、当該更新モジュールを相互認証処理や回復処理に使用しないとしてもよいし、保護制御モジュール120が無効化処理を実施するとしてもよい。この時、保護制御モジュール120は、耐タンパー化された領域で動作するなど、攻撃から保護されていることが望ましい。
(36)本発明の実施の形態3では、アクセス情報取得鍵の送付依頼をした更新モジュールが、保護制御モジュール120を更新する更新モジュールであるかどうかを、更新用ソフトウェア配布モジュール210に問い合わせたが、これに限定するものではなく、更新サーバ200が保護制御モジュール120を更新する更新モジュールであるかどうかを確認してもよい。
(37)上記の各モジュールは、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるモジュールであってもよいし、オペレーティングシステムから呼ばれるドライバであってもよいし、アプリケーションプログラムであってもよい。
(38)上記の各装置を構成する構成要素の一部または全部は、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内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
(39)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(40)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、前記コンピュータプログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記コンピュータプログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(41)上記実施の形態では、更新モジュールの数を3として説明したが、これに限定されるものでなく、更新モジュールは、複数あればよい。
(42)上記実施の形態では、アクセス制御モジュール140及び更新モジュール群130は、OS150の中に組み込まれているとしたが、更新モジュールがOSを更新する機能を備えている場合等には、更新モジュールは、OSの管理外にプログラムとして格納されているとしてもよい。また、保護制御モジュールがOSに組み込まれているとしてもよい。
(43)上記実施の形態では、RAM上で動作しているモジュールが改ざん検出及び無効化の対象であったが、EEPROMに記憶されているモジュールの改ざんチェックを行ってもよし、改ざんされている場合には無効化してもよい。また、一つでも改ざんされている更新モジュールがあれば、全ての更新モジュールを無効化あるいは更新してもよい。RAM及びEEPROMの両方のモジュールを無効化するとしてもよい。また、更新の対象となるのは、EEPROMに記憶されているモジュールでもよいし、RAM上で動作しているモジュールでもよい。
(44)機器100は具体的には、携帯電話等の携帯端末やデジタルテレビ等、双方向のデータ通信が可能な機器であればよい。
(45)上記実施の形態では、アクセス情報は、更新モジュール毎にそれぞれ個別のアクセス情報取得鍵で暗号化されているとしたが、同一のアクセス情報取得鍵で暗号化されているとしてもよい。その場合には、正常な更新モジュールが更新サーバにアクセスして、アクセス情報取得鍵に対応した復号鍵を取得し、取得した復号鍵を用いてアクセス制御モジュールを復号し、アクセス制御モジュールから、改ざんされた更新モジュールに対応するアクセス情報を取得し、取得したアクセス情報に基づいて、改ざんされた更新モジュールを無効化するとしてもよい。
(46)上記実施の形態では、保護制御モジュールが改ざんされている場合に、当該保護制御モジュールを更新し、その際、更新モジュール群に含まれる複数の更新モジュールの各々が、他の更新モジュールの改ざん検証を行うとしたが、改ざんの有無に関わらず、例えば、保護制御モジュールのバージョンをアップさせる場合等において、改ざん検証を行うとしてもよい。
(47)上記実施の形態では、更新用の保護制御モジュールは、複数の暗号鍵で暗号化されていたが、一つの暗号鍵で暗号化されているとしてもよい。その場合、当該暗号鍵に対応する復号鍵が複数に分割され、分割された復号鍵の全てが、改ざんされていない更新モジュールを送信先として送信され、分割された全ての復号鍵を用いて、改ざんされていない更新モジュールは、更新用の保護制御モジュールを復号するとしてもよい。
(48)分散情報を保持している更新モジュールが無効化されたときに、他の更新モジュールで保持している分散情報を更新する処理(脱退処理)を行ってもよいし、更新モジュールを新たに追加するときに分散情報を更新する処理(追加処理)を行ってもよい。
以下に、脱退処理及び追加処理の詳細を説明する。ここでは、機器100Aは6つの更新モジュール121A~126Aを備えるものとして説明する。
更新モジュール121A~126Aは、制御部250_j、分散情報格納部251_j、他モジュール分散情報格納部252_j、認証子格納部253_j、リスト格納部254_j、ID格納部255_j、送信部256_j及び受信部257_jから構成されている。制御部250_jは、分散情報更新部260_j、分散情報分割部261_j、分散情報検証部262_j、他モジュール分散情報検証部263_j、部分情報検証部264_j、変形情報生成部265_j、リスト更新部266_j及び取得部267_jを有している。なお、符号25x(x=1、2、・・・、7)に付与されている添え字jは、1、2、・・・、6の値であり、j番目の更新モジュールに対応する。
また、他モジュール分散情報XXX_Yは、分散情報XXXと同じと識別される分散情報で、更新モジュール12Yが保持していることを表す。この様に、複数の更新モジュールで共通の分散情報を持つことで分散情報に対して冗長性を持たせた構成としている。また、以降の説明において、第1及び第2他モジュール分散情報を特に区別する必要がない場合には、単に、他モジュール分散情報と言い、各他モジュール分散情報と分散情報とを特に区別する必要がない場合には、単に、分散情報と言う。
脱退処理の動作
脱退処理について、図30にて示す流れ図を用いて説明する。
脱退処理について、図30にて示す流れ図を用いて説明する。
この処理では、更新モジュールが不正な動作を行う可能性を考え、更新モジュール間で送信されるデータが正しいデータであるかを常に検証することで、不正な動作を行う更新モジュールが存在した場合に検知できるようにしている。さらに、各処理において、分散情報の値を更新する場合には、更新前の分散情報の値を退避しておき、脱退処理中に不正な動作を行う更新モジュールの存在を検知した場合には、脱退処理を中止し、分散情報の値を脱退処理前の値に戻すことで、分散情報が不正な値になることを防止する。
また、当該処理では、脱退する更新モジュールが所有する分散情報と同じ分散情報を持つ更新モジュールが分散情報の生成及び配布を行うものとする。この様な処理にすることで、脱退する更新モジュールが脱退処理を行わなくても分散情報を更新することが可能となり、不正な動作を行う更新モジュールを無効化する処理などにも利用できる。
なお、脱退対象となるモジュールを更新モジュール121Aとし、部分情報の生成を更新モジュール126Aが行うものとして、以下説明する。
更新モジュール126Aは、外部の装置(図示せず)から、脱退対象の更新モジュール121Aが有する分散情報“d_1”と同一の他モジュール分散情報から部分情報を生成する旨の脱退時の部分情報生成指示を受け取る。
更新モジュール126Aは、第1他モジュール分散情報“d1_1”から5つの分散情報を生成し、配布する処理を行う(ステップS4000)。言い換えると、更新モジュール126Aは、第1他モジュール分散情報“d1_1”を、5つの分散情報に分散(分解)する。
更新モジュール126Aが有する第1他モジュール分散情報“d1_1”と同一の情報を持つべきモジュールである更新モジュール122Aは、部分情報に用いられた第1他モジュール分散情報“d1_1”の検証を行う(ステップS4050)。
更新モジュール122A~126Aは、脱退時における第1及び第2更新処理を行い、それぞれが保持する分散情報、第1及び第2他モジュール分散情報を更新する(ステップS4100、S4150)。
更新モジュール122A~126Aは、更新が正常に行われたか否かを判断する(ステップS4200)。このとき、更新モジュール122A~125Aは、判断結果を部分情報送信元である更新モジュール126Aへ通知する。具体的には、分散情報を共通に持っている更新モジュール同士で、分散情報検証部262_j及び他モジュール分散情報検証部263_jを用いて、互いに持っている分散情報が同じ値に更新されたかを、セキュリティの確保された通信路で分散情報を送りあい、受信した分散情報と各自が保持していた分散情報が同じ値かどうかを検証する。更新モジュール122A~125Aは、検証結果を更新モジュール126Aへ通知し、更新モジュール126Aは、検証結果を一時的に保持する。
全ての装置にて更新が正常に行われた場合には(ステップS4200における「YES」)、更新モジュール126Aは、配布先リストT100を更新する。更新モジュール126Aは、更新後の配布先リストをリスト格納部254_6へ格納するとともに、更新モジュール122A~125A及び保護制御モジュール装置へ送信する。更新モジュール122A~125A及び保護制御モジュール装置は、現在格納している配布先リストから更新後の配布先リストへと更新する(ステップS4250)。
全ての装置にて更新が正常に行われていない場合には(ステップS4200における「NO」)、更新モジュール126Aは、更新モジュール122A~125Aへその旨を通知する。更新モジュール126A、及び通知を受けた更新モジュール122A~125Aは、脱退処理を中止し、自装置の分散情報の値を脱退処理の前に戻し、処理を終了する。
なお、セキュリティの確保された通信路で分散情報を送りあい、受信した分散情報と同じ値かどうかを検証するとしたが、これに限定するものではなく、ゼロ知識証明などの暗号プロトコルを使用して検証してもよい。ゼロ知識証明については、非特許文献1の132~150ページに、暗号プロトコルについては、非特許文献1の224~225ページに詳しく説明されている。
以下、ステップS400からS415にて行われる各処理について説明する。
(部分情報の生成処理)
ここでは、図30のステップS4000にて示す部分情報の生成処理について、図31にて示す流れ図を用いて説明する。
ここでは、図30のステップS4000にて示す部分情報の生成処理について、図31にて示す流れ図を用いて説明する。
更新モジュール126Aの分散情報分割部261_6は、第1他モジュール分散情報“d1_1”211_6から5つの部分情報(d_1_1~d_1_5)を生成する(ステップS4500)。このとき、各部分情報は、次式を満たすものとする。
(式) d1_1=d_1_1+d_1_2+d_1_3+d_1_4+d_1_5 mod L
具体的には、分散情報分割部261_6は、乱数生成器を用いて、(k-2)個(=4個)の乱数を生成することにより、部分情報(d_1_1~d_1_4)を生成する。次に、分散情報分割部261_6は、
d_1_5 = d1_1 - (d_1_1+d_1_2+d_1_3+d_1_4)
により、d_1_5を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
具体的には、分散情報分割部261_6は、乱数生成器を用いて、(k-2)個(=4個)の乱数を生成することにより、部分情報(d_1_1~d_1_4)を生成する。次に、分散情報分割部261_6は、
d_1_5 = d1_1 - (d_1_1+d_1_2+d_1_3+d_1_4)
により、d_1_5を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
分散情報分割部261_6は、脱退対象の装置(ここでは、更新モジュール121A)が保持する分散情報“d_1”及びこの情報と同一の値となるべき情報“d1_1”及び“d2_1”を除く残りの分散情報に対して、同一となるべき分散情報毎に、異なる部分情報を割り当てる。具体的には、部分情報d_1_iを分散情報d_(i+1)に割り当てる。
分散情報分割部261_6は、配布先リストT100の内容に基づいて、配布先の更新モジュール毎に、2つ若しくは3つの部分情報を配布する(ステップS4550)。なお、自装置へは2つの部分情報が配布されるが、この場合、分散情報分割部261_jは、分散情報更新部260_jへ出力する。
具体的には、分散情報分割部261_6は、以下のように各部分情報を配布する。
分散情報分割部261_6は、部分情報d_1_1、d_1_2を更新モジュール122Aへ送信する(ステップS4600)。分散情報分割部261_6は、部分情報d_1_1、d_1_2、d_1_3を更新モジュール123Aへ送信する(ステップS4610)。分散情報分割部261_6は、部分情報d_1_2、d_1_3、d_1_4を更新モジュール124Aへ送信する(ステップS462)。分散情報分割部261_6は、部分情報d_1_3、d_1_4、d_1_5を更新モジュール125Aへ送信する(ステップS4630)。分散情報分割部261_6は、部分情報d_1_4、d_1_5を分散情報更新部260_6へ出力し、一時的に記憶する。i番目の更新モジュールは、受信した各部分情報を分散情報更新部260_jに一時的に格納する。
(分散情報の検証処理)
ここでは、図30のステップS4050にて示す分散情報の検証処理について、図32にて示す流れ図を用いて説明する。
ここでは、図30のステップS4050にて示す分散情報の検証処理について、図32にて示す流れ図を用いて説明する。
分散情報211_6が正当な値であることを検証するために更新モジュール122Aが保持する第2他モジュール分散情報211_2を利用する。
部分情報検証部264_2は、更新モジュール126Aから部分情報検証指示を、受信部257_jを介して受け取ると、更新モジュール121Aを除く残りのモジュール123A、124A、125A及び126Aそれぞれから部分情報d_1_2、d_1_3、d_1_4、d_1_5を収集する(ステップS4700)。
具体的には、i番目(i=3~6)の更新モジュールは部分情報d_1_(i-1)を更新モジュール122Aへ出力する(ステップS4710~S4740)。
部分情報検証部264_2は、分散情報更新部260_jにて記憶しているd_1_1と、受信した各部分情報d_1_2、d_1_3、d_1_4、d_1_5とを加算し、値s’を算出し、算出した値s’が正当であるか否かを検証する(ステップS4800)。具体的には、部分情報検証部264_2は、算出した値s’と、他モジュール分散情報格納部252_jに格納されている第2他モジュール分散情報“d2_1”とが一致するか否かを判断する。
部分情報検証部264_2は、検証結果を各更新モジュール123A~126Aへ通知する(ステップS4850)。具体的には、部分情報検証部264_2は、検証結果により、値s’が第2他モジュール分散情報“d2_1”と同一であると判断する場合には、同一である旨の検証結果を各更新モジュール123A~126Aへ出力する。同一でないと判断する場合には、部分情報検証部264_2は、同一でない旨の検証結果を各更新モジュール123A~126Aへ出力する。なお、当該モジュールに対しては、検証結果を分散情報更新部260_jへ出力する。
(脱退時の第1更新処理)
ここでは、図30のステップS410にて示す脱退時の第1更新処理について、図33及び図34にて示す流れ図を用いて説明する。
ここでは、図30のステップS410にて示す脱退時の第1更新処理について、図33及び図34にて示す流れ図を用いて説明する。
更新モジュール122Aの分散情報更新部260_2は、部分情報検証部264_2にて行われた検証の結果により、更新モジュール126Aの第1他モジュール分散情報“d1_1”が正当であるか否かを判断する(ステップS5000)。正当であると判断する場合には(ステップS5000における「YES」)、分散情報更新部260_2は、一時的に記憶している部分情報“d_1_1”を用いて分散情報“d_2”を更新する(ステップS5050)。具体的には、分散情報更新部260_2は、分散情報“d_2”に部分情報“d_1_1”を加算することにより、新たな分散情報“d_2’(=d_2+d_1_1)”を算出する。次に、分散情報更新部260_2は、一時的に記憶している部分情報“d_1_2”を用いて第1他モジュール分散情報“d1_3”を更新する(ステップS5100)。具体的には、分散情報更新部260_2は、第1他モジュール分散情報“d1_3”に部分情報“d_1_2”を加算することにより、新たな分散情報“d1_3’(=d1_3+d_1_2)”を算出する。
更新モジュール123Aの分散情報更新部260_3は、更新モジュール122Aから受け取った検証結果により、更新モジュール126Aの第1他モジュール分散情報“d1_1”が正当であるか否かを判断する(ステップS5200)。正当であると判断する場合には(ステップS5200における「YES」)、分散情報更新部260_3は、一時的に記憶している部分情報“d_1_2”を用いて分散情報“d_3”を更新する(ステップS5250)。具体的には、分散情報更新部260_3は、分散情報“d_3”に部分情報“d_1_2”を加算することにより、新たな分散情報“d_3’(=d_3+d_1_2)”を算出する。次に、分散情報更新部260_3は、一時的に記憶している部分情報“d_1_3”、及び“d_1_1”を用いて第1及び他モジュール分散情報“d1_4”、“d2_2”を更新する(ステップS5300)。具体的には、分散情報更新部260_3は、第1他モジュール分散情報“d1_4”に部分情報“d_1_3”を加算することにより、新たな分散情報“d1_4’(=d1_4+d_1_3)”を算出する。分散情報更新部260_3は、第2他モジュール分散情報“d2_2”に部分情報“d_1_1”を加算することにより、新たな分散情報“d2_3’(=d2_2+d_1_1)”を算出する。
更新モジュール124Aの分散情報更新部260_4は、更新モジュール122Aから受け取った検証結果により、更新モジュール126Aの第1他モジュール分散情報“d1_1”が正当であるか否かを判断する(ステップS5400)。正当であると判断する場合には(ステップS5400における「YES」)、分散情報更新部260_4は、一時的に記憶している部分情報“d_1_3”を用いて分散情報“d_4”を更新する(ステップS5450)。具体的には、分散情報更新部260_4は、分散情報“d_4”に部分情報“d_1_3”を加算することにより、新たな分散情報“d_4’(=d_4+d_1_3)”を算出する。次に、分散情報更新部260_4は、一時的に記憶している部分情報“d_1_4”、及び“d_1_2”を用いて第1及び他モジュール分散情報“d1_5”、“d2_3”を更新する(ステップS5500)。具体的には、分散情報更新部260_4は、第1他モジュール分散情報“d1_5”に部分情報“d_1_4”を加算することにより、新たな分散情報“d1_5’(=d1_5+d_1_4)”を算出する。分散情報更新部260_4は、第2他モジュール分散情報“d2_3”に部分情報“d_1_2”を加算することにより、新たな分散情報“d2_3’(=d2_3+d_1_2)”を算出する。
更新モジュール125Aの分散情報更新部260_5は、更新モジュール122Aから受け取った検証結果により、更新モジュール126Aの第1他モジュール分散情報“d1_1”が正当であるか否かを判断する(ステップS5600)。正当であると判断する場合には(ステップS5600における「YES」)、分散情報更新部260_5は、一時的に記憶している部分情報“d_1_4”を用いて分散情報“d_5”を更新する(ステップS5650)。具体的には、分散情報更新部260_5は、分散情報“d_5”に部分情報“d_1_4”を加算することにより、新たな分散情報“d_5’(=d_5+d_1_4)”を算出する。次に、分散情報更新部260_5は、一時的に記憶している部分情報“d_1_5”、及び“d_1_3”を用いて第1及び他モジュール分散情報“d1_6”、“d2_4”を更新する(ステップS5700)。具体的には、分散情報更新部260_5は、第1他モジュール分散情報“d1_6”に部分情報“d_1_5”を加算することにより、新たな分散情報“d1_6’(=d1_6+d_1_5)”を算出する。分散情報更新部260_5は、第2他モジュール分散情報“d2_4”に部分情報“d_1_3”を加算することにより、新たな分散情報“d2_4’(=d2_4+d_1_3)”を算出する。
更新モジュール126Aの分散情報更新部260_6は、更新モジュール122Aから受け取った検証結果により、当該更新モジュールの第1他モジュール分散情報“d1_1”が正当であるか否かを判断する(ステップS5800)。正当であると判断する場合には(ステップS5800における「YES」)、分散情報更新部260_6は、一時的に記憶している部分情報“d_1_5”を用いて分散情報“d_6”を更新する(ステップS5850)。具体的には、分散情報更新部260_6は、分散情報“d_6”に部分情報“d_1_5”を加算することにより、新たな分散情報“d_6’(=d_6+d_1_5)”を算出する。次に、分散情報更新部260_6は、一時的に記憶している部分情報“d_1_4”を用いて第2他モジュール分散情報“d2_5”を更新する(ステップS5900)。具体的には、分散情報更新部260_6は、第2他モジュール分散情報“d2_5”に部分情報“d_1_4”を加算することにより、新たな分散情報“d2_5’(=d2_5+d_1_4)”を算出する。
各更新モジュール122A~126Aにおいて、第1他モジュール分散情報“d1_1”が正当でないと判断する場合には(ステップS5000、S5200、S5400、S5600及びS5800における「NO」)、検証の結果が一致しないと通知を受け取った場合には、更新モジュール122Aか126Aが不正な動作を行っているので、各更新モジュールは、脱退処理を中止する。
(脱退時の第2更新処理)
ここでは、図30のステップS415にて示す脱退時の第2更新処理について、図35にて示す流れ図を用いて説明する。
ここでは、図30のステップS415にて示す脱退時の第2更新処理について、図35にて示す流れ図を用いて説明する。
更新モジュール126Aの分散情報更新部260_6は、分散情報“d_6’”を更新モジュール122Aへ出力する(ステップS6000)。
更新モジュール122Aの分散情報更新部260_2は、分散情報“d_2’”を更新モジュール126Aへ出力する(ステップS6050)。
分散情報更新部260_6は、分散情報“d_2’”及び“d2_2’”を収集する(ステップS6100)。このとき、更新モジュール123Aの分散情報更新部260_3は分散情報“d2_2’”を送信する(ステップS6110)。
分散情報更新部260_2は、分散情報“d_6’”及び“d2_6’”を収集する(ステップS6150)。このとき、更新モジュール123Aの分散情報更新部260_3は分散情報“d2_2’”を送信する(ステップS6160)。
分散情報更新部260_6は、収集した分散情報“d_2’”及び“d2_2’”が一致するか否かを判断する(ステップS6200)。一致すると判断する場合には(ステップS6200における「YES」)、分散情報更新部260_6は、第1他モジュール分散情報を“d_2’”とする(ステップS6250)。
分散情報更新部260_2は、収集した分散情報“d_6’”及び“d2_6’”が一致するか否かを判断する(ステップS6300)。一致すると判断する場合には(ステップS6300における「YES」)、分散情報更新部260_2は、第2他モジュール分散情報を“d_6’”とする(ステップS6350)。
分散情報更新部260_6は、一致しないと判断する場合には(ステップS6200における「NO」)、更新モジュール126Aは、更新モジュール122A~125Aへその旨を通知する。更新モジュール126A、及び通知を受けた更新モジュール122A~125Aは、脱退処理を中止し、自モジュールの分散情報の値を脱退処理の前に戻し、処理を終了する。
分散情報更新部260_2は、一致しないと判断する場合には(ステップS6300における「NO」)、更新モジュール122Aは、更新モジュール123A~126Aへその旨を通知する。更新モジュール122A、及び通知を受けた更新モジュール123A~126Aは、脱退処理を中止し、自モジュールの分散情報の値を脱退処理の前に戻し、処理を終了する。
(具体例)
脱退処理後の更新モジュール122A~126Aのそれぞれが保持する分散情報、第1及び第2他モジュール分散情報を、図36にて示す。
脱退処理後の更新モジュール122A~126Aのそれぞれが保持する分散情報、第1及び第2他モジュール分散情報を、図36にて示す。
例えば、更新モジュール122Aは、脱退処理後において、更新後の分散情報“d_2’”212b、第1他モジュール分散情報“d1_3’”213_2b及び第2他モジュール分散情報“d2_6’”211_2bを保持している。
ここで、更新後の各分散情報“d_2’”~“d_6’”により、秘密鍵“d”が回復されることを以下に示す。
d_2’+d_3’+d_4’+d_5’+d_6’
= (d_2+d_1_1)+(d_3+d_1_2)+(d_4+d_1_3)
+(d_5+d_1_4)+(d_6+d_1_5)
= (d_1_1+d_1_2+d_1_3+d_1_4+d_1_5)
+(d_2+d_3+d_4+d_5+d_6)
= d_1+d_2+d_3+d_4+d_5+d_6
= d
このように、更新モジュール121Aが脱退後も、それぞれの更新モジュールが保持する分散情報の総和を一定とすることが可能となるため、脱退処理時において、ソフトウェア更新システムは、新しい秘密鍵“d”を復元し分散情報を再生成することなく、更新モジュールを脱退させることが可能となる。
= (d_2+d_1_1)+(d_3+d_1_2)+(d_4+d_1_3)
+(d_5+d_1_4)+(d_6+d_1_5)
= (d_1_1+d_1_2+d_1_3+d_1_4+d_1_5)
+(d_2+d_3+d_4+d_5+d_6)
= d_1+d_2+d_3+d_4+d_5+d_6
= d
このように、更新モジュール121Aが脱退後も、それぞれの更新モジュールが保持する分散情報の総和を一定とすることが可能となるため、脱退処理時において、ソフトウェア更新システムは、新しい秘密鍵“d”を復元し分散情報を再生成することなく、更新モジュールを脱退させることが可能となる。
追加処理の動作
ここでは、追加処理について、図37にて示す流れ図を用いて説明する。
追加処理では、更新モジュールが不正な動作を行う可能性を考え、更新モジュール間で送信されるデータが正しいデータであるかを常に検証することで、不正な動作を行う更新モジュールが存在した場合に検知できるようにしている。さらに、追加処理では、分散情報の値を更新する場合には、更新前の分散情報の値を退避しておき、追加処理中に不正な動作を行う更新モジュールの存在を検知した場合には、追加処理を中止し、分散情報の値を追加処理前の値に戻すことで、分散情報が不正な値になることを防止する。
ここでは、複数の更新モジュールから変形情報を追加する更新モジュールへ送信し、追加する更新モジュールの分散情報を生成することで、追加する更新モジュールに変形情報を送信する更新モジュールが不正な動作を行い、「新しい秘密鍵」が正しく生成できないように、不正な変形情報を送信するような行為を防止している。また、分散情報を正しく更新しなかったりするような行為を防止する。また、各更新モジュールは分散情報が正しく更新されたかを、同じ分散情報を共通に持っている更新モジュール同士で確認することで、不正な更新モジュールによる不正な更新を防止している。
また、追加する更新モジュールへ変形情報を送信した更新モジュールが、追加する更新モジュールの分散情報を共通に持つ構成の場合、元々保持していた分散情報と追加する更新モジュールの分散情報と追加する更新モジュールへ送信した変形情報から、本来保持していない分散情報を計算することが可能になる。そのため、更新モジュールの追加処理の最後に、変形情報を送信した更新モジュールの所有する分散情報から上記とは異なる値の変形情報を切り出し、その変形情報を分割して各更新モジュールへ送信することで、分散情報の値を更新する処理が必要になる。より詳細な説明は後述する。
なお、追加対象となる更新モジュールを更新モジュール127Aとし、変形情報の生成を更新モジュール121A、及び126Aが行うものとして、以下説明する。
更新モジュール121A、及び126Aが、変形情報を生成し、各更新モジュールへ配布する配布処理を行う(ステップS7000)。
追加対象の更新モジュール127A及び、更新モジュール127Aと同一の分散情報を保持する更新モジュール121A、及び126Aとが分散情報を生成する分散情報の生成処理を行う(ステップS7050)。
更新モジュール127Aが、第1及び第2他モジュール分散情報を格納する他モジュール分散情報の格納処理を行う(ステップS7100)。
更新モジュール121A、122A、125A~127Aは、更新が正常に行われたか否かを判断する(ステップS7150)。更新モジュール121A、122A、125A及び126Aは、検証結果を更新モジュール127Aへ通知し、更新モジュール127Aは、検証結果を一時的に保持する。
更新対象の全ての更新モジュールにおいて正常に更新がされたと判断する場合には(ステップS7150における「YES」)、更新モジュール127Aの分散情報更新部260_7は、更新モジュール121A及び126Aから証明書を収集する(ステップS7200)。
分散情報更新部260_7は、更新モジュール121A及び126Aから収集した証明書が正当であるか否かを判断する(ステップS7250)。具体的には、分散情報更新部260_7は、収集した2つの証明書が同一であるか否かを判断する。
同一であると判断する場合には(ステップS7250における「YES」)、分散情報更新部260_7は、証明書を認証子格納部253_7へ格納する(ステップS7300)。分散情報更新部260_7は、証明書の格納後、追加時の第1分割処理の開始を示す旨の指示を更新モジュール121Aへ出力する。
次に、更新モジュール121Aが、自身が保持する分散情報から7つの部分情報を生成し、生成した各部分情報を各更新モジュールへ配布する追加時の第1分割処理を行う(ステップS7350)。
更新モジュール121A~127Aは、配布された部分情報を用いて分散情報を更新する追加時の第1更新処理を行う(ステップS7400)。
更新モジュール121A~127Aは、更新が正常に行われたか否かを判断する(ステップS7450)。このとき、更新モジュール122A~127Aは、判断結果を部分情報送信元である更新モジュール121Aへ通知する。具体的には、分散情報を共通に持っている更新モジュール同士で、分散情報検証部262_j及び他モジュール分散情報検証部263_jを用いて、互いに持っている分散情報が同じ値に更新されたかを、セキュリティの確保された通信路で分散情報を送りあい、受信した分散情報と各自が保持していた分散情報が同じ値かどうかを検証する。更新モジュール122A~127Aは、検証結果を更新モジュール121Aへ通知し、更新モジュール121Aは、検証結果を一時的に保持する。
全ての更新モジュールにて更新が正常に行われた場合には(ステップS7450における「YES」)、更新モジュール121Aは、更新モジュール126Aへ追加時の第2分割処理を行う旨の分割指示を送信する。更新モジュール126Aは分割指示を受け取ると、自身が保持する分散情報から7つの部分情報を生成し、生成した各部分情報を各更新モジュールへ配布する追加時の第2分割処理を行う(ステップS7500)。
更新モジュール121A~127Aは、配布された部分情報を用いて分散情報を更新する追加時の第2更新処理を行う(ステップS7550)。
更新モジュール121A~127Aは、更新が正常に行われたか否かを判断する(ステップS7600)。更新モジュール121A~125A及び127Aは、検証結果を更新モジュール126Aへ通知し、更新モジュール126Aは、検証結果を一時的に保持する。
全ての更新モジュールにて更新が正常に行われた場合には(ステップS7600における「YES」)、更新モジュール126Aは、配布先リストT100を更新する。更新モジュール126Aは、更新後の配布先リストをリスト格納部254_6へ格納するとともに、更新モジュール121A~125A、127A及び保護制御モジュールへ送信する。更新モジュール121A~125A、127A及び保護制御モジュールは、現在格納している配布先リストから更新後の配布先リストへと更新する(ステップS7650)。
更新対象の更新モジュールにて更新が正常に行われていないと判断する場合には(ステップS7150における「NO」)、及び証明書が正当でないと判断する場合には(ステップS7250における「NO」)、更新モジュール127Aは、更新対象の各更新モジュール121A、122A、125A及び126Aへその旨を通知する。更新対象の各更新モジュールは、追加理を中止し、自モジュールの分散情報の値を追加処理の前に戻し、処理を終了する。
全てのモジュールにて更新が正常に行われていない場合には(ステップS7450における「NO」)、更新モジュール121Aは、更新モジュール122A~127Aへその旨を通知する。更新モジュール121A~127Aは、追加処理を中止し、自モジュールの分散情報の値を追加処理の前に戻し、処理を終了する。
また、ステップS7600における「NO」の場合も同様に、更新モジュール121A~127Aは、脱退処理を中止し、自モジュールの分散情報の値を脱退処理の前に戻し、処理を終了する。
なお、セキュリティの確保された通信路で分散情報を送りあい、受信した分散情報と同じ値かどうかを検証するとしたが、これに限定するものではなく、ゼロ知識証明などの暗号プロトコルを使用して検証してもよい。ゼロ知識証明については、非特許文献1の132~150ページに、暗号プロトコルについては、非特許文献1の224~225ページに詳しく説明されている。
以下、追加処理の詳細について説明する。
(配布処理)
ここでは、図37のステップS7000にて示す部分情報の生成処理について、図38にて示す流れ図を用いて説明する。
ここでは、図37のステップS7000にて示す部分情報の生成処理について、図38にて示す流れ図を用いて説明する。
更新モジュール126Aの変形情報生成部265_6は、外部装置から追加時の分散情報生成指示を受け取ると、変形情報nを生成する(ステップS8000)。
更新モジュール121Aの変形情報生成部265_1は、外部装置から追加時の分散情報生成指示を受け取ると、変形情報mを生成する(ステップS8050)。
変形情報生成部265_6は、生成した変形情報nを更新モジュール121A、125及び127へ出力する(ステップS8100)。
変形情報生成部265_1は、生成した変形情報mを更新モジュール122A、126A、及び127Aへ出力する(ステップS8150)。
更新モジュール126Aの分散情報更新部260_6は、変形情報mを受け取ると、受け取った変形情報mを一時的に格納する(ステップS8200)。
更新モジュール121Aの分散情報更新部260_1は、変形情報nを受け取ると、受け取った変形情報nを一時的に格納する(ステップS8250)。
分散情報更新部260_6は、生成した変形情報nを用いて、新たな分散情報“d_6’(=d_6-n)”を生成し、分散情報格納部251_6に格納されている分散情報“d_6“を“d_6’”へと更新する(ステップS8300)。
分散情報更新部260_1は、生成した変形情報mを用いて、新たな分散情報“d_1’(=d_1-m)”を生成し、分散情報格納部251_1に格納されている分散情報“d_1”を“d_1’”へと更新する(ステップS8350)。
更新モジュール125Aの分散情報更新部260_5は、変形情報nを受け取ると、受け取った変形情報nを用いて新たな第1他モジュール分散情報“d1_6’(=d1_6-n)”を生成し、他モジュール分散情報格納部252_5に格納されている第1他モジュール分散情報“d1_6”を“d1_6’”へと更新する(ステップS8400)。
更新モジュール127Aの分散情報更新部260_7は、変形情報n及びmを受け取ると、受け取った変形情報n及びmを一時的に格納する(ステップS8450)。
更新モジュール122Aの分散情報更新部260_2は、変形情報mを受け取ると、受け取った変形情報mを用いて新たな第2他モジュール分散情報“d2_1’(=d2_1-m)”を生成し、他モジュール分散情報格納部252_2に格納されている第2他モジュール分散情報“d2_1”を“d2_1’”へと更新する(ステップS8500)。
(分散情報の生成処理)
ここでは、図37のステップS705にて示す分散情報の生成処理について、図39にて示す流れ図を用いて説明する。
ここでは、図37のステップS705にて示す分散情報の生成処理について、図39にて示す流れ図を用いて説明する。
分散情報更新部260_6は、変形情報n及びmを用いて他モジュール分散情報“d1_7=(m+n)”を生成する(ステップS8600)。分散情報更新部260_6は、他モジュール分散情報格納部252_6に格納されている第1他モジュール分散情報“d1_1”を“d1_7”へと更新(置換)する(ステップS8650)。
分散情報更新部260_7は、変形情報n及びmを用いて分散情報“d_7=(m+n)”を生成する(ステップS8700)。分散情報更新部260_7は、分散情報格納部251_7に生成した分散情報“d_7”を格納する(ステップS8750)。
分散情報更新部260_1は、変形情報n及びmを用いて他モジュール分散情報“d2_7=(m+n)”を生成する(ステップS8800)。分散情報更新部260_1は、他モジュール分散情報格納部252_1に格納されている第2他モジュール分散情報“d2_1”を“d2_7”へと更新(置換)する(ステップS8850)。
(他モジュール分散情報の格納処理)
ここでは、図37のステップS7100にて示す他モジュール分散情報の格納処理について、図40にて示す流れ図を用いて説明する。
ここでは、図37のステップS7100にて示す他モジュール分散情報の格納処理について、図40にて示す流れ図を用いて説明する。
更新モジュール127Aの分散情報更新部260_7は、更新モジュール121Aへ分散情報要求指示を、更新モジュール122Aへ第2他モジュール分散情報要求指示を、それぞれ出力し、分散情報“d_1’”及び“d2_1’”を収集する(ステップS9000)。このとき、分散情報要求指示を受け付けた更新モジュール121Aの取得部267_1は、分散情報“d_1’”を取得して、更新モジュール127Aへ出力する(ステップS9010)。また、第2他モジュール分散情報要求指示を受け付けた更新モジュール122Aの取得部267_2は、分散情報“d2_1’”を取得して、更新モジュール127Aへ出力する(ステップS9020)。
分散情報更新部260_7は、収集した分散情報“d_1’”と“d2_1’”とが同一の値であるか否かを判断する(ステップS9050)。
同一であると判断する場合には(ステップS9050における「YES」)、分散情報更新部260_7は、収集した分散情報“d_1’”を第1他モジュール分散情報として他モジュール分散情報格納部252_7へ格納する(ステップS9100)。
分散情報更新部260_7は、更新モジュール126Aへ分散情報要求指示を、更新モジュール125Aへ第1他モジュール分散情報要求指示を、それぞれ出力し、分散情報“d_6’”及び“d1_6’”を収集する(ステップS9150)。このとき、分散情報要求指示を受け付けた更新モジュール126Aの取得部267_6は、分散情報“d_6’”を取得して、更新モジュール127Aへ出力する(ステップS9160)。また、第1他モジュール分散情報要求指示を受け付けた更新モジュール125Aの取得部267_5は、分散情報“d1_6’”を取得して、更新モジュール127Aへ出力する(ステップS9170)。
分散情報更新部260_7は、収集した分散情報“d_6’”と“d1_6’”とが同一の値であるか否かを判断する(ステップS9200)。
同一であると判断する場合には(ステップS9200における「YES」)、分散情報更新部260_7は、収集した分散情報“d_6’”を第2他モジュール分散情報として他モジュール分散情報格納部252_7へ格納する(ステップS9250)。
同一でないと判断する場合には(ステップS9050若しくはステップS9200における「NO」)、更新モジュール127Aは、更新モジュール121A~126Aへその旨を通知する。更新モジュール121A~127Aは、追加処理を中止し、自モジュールの分散情報の値を追加処理の前に戻し、処理を終了する。
(追加時の第1分割処理)
ここでは、図37のステップS7350にて示す追加時の第1分割処理について、図41にて示す流れ図を用いて説明する。
ここでは、図37のステップS7350にて示す追加時の第1分割処理について、図41にて示す流れ図を用いて説明する。
更新モジュール121Aの分散情報分割部261_1は、分散情報“d_1’”から7つの部分情報(d_1_1~d_1_7)を生成する(ステップS9500)。言い換えると、分散情報分割部261_1は、分散情報“d_1’”を、7つの部分情報(d_1_1~d_1_7)に分散(分解)する。このとき、各部分情報は、次式を満たすものとする。
(式) d_1’= d_1_1+d_1_2+d_1_3+d_1_4+d_1_5
+d_1_6+d_1_7 mod L
具体的には、分散情報分割部261_1は、乱数生成器を用いて、6個の乱数を生成することにより、部分情報(d_1_1~d_1_6)を生成する。次に、分散情報分割部261_1は、
d_1_7 = d_1’ - (d_1_1+d_1_2+・・・+d_1_6)
により、d_1_7を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
+d_1_6+d_1_7 mod L
具体的には、分散情報分割部261_1は、乱数生成器を用いて、6個の乱数を生成することにより、部分情報(d_1_1~d_1_6)を生成する。次に、分散情報分割部261_1は、
d_1_7 = d_1’ - (d_1_1+d_1_2+・・・+d_1_6)
により、d_1_7を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
分散情報分割部261_1は、生成(分散)した3個若しくは6個の部分情報を各モジュール122A~127Aへ配布する(ステップS9550)。
具体的には、分散情報分割部261_1は、更新モジュール122A及び127に対して生成した部分情報d_1_2~d_1_7を配布する(ステップS9560及びS9610)。他のモジュール123A~126Aにおけるi番目のモジュールに対しては、部分情報d_1_(i-1)、d_1_i及びd_1_(i+1)を配布する(ステップS9570、S9580、S9590及びS9600)。
更新モジュール122A~127Aは、受信した各部分情報を分散情報更新部260_jに一時的に格納する。
(追加時の第1更新処理)
ここでは、図37のステップS7400にて示す追加時の第1更新処理について、図42から図44にて示す流れ図を用いて説明する。
ここでは、図37のステップS7400にて示す追加時の第1更新処理について、図42から図44にて示す流れ図を用いて説明する。
更新モジュール121Aの分散情報更新部260_1は、生成した部分情報“d_1_1”を新たな分散情報“D_1(=d_1_1)”として、分散情報格納部251_1に格納されている分散情報“d_1’”を新たな分散情報“D_1”に更新する(ステップS9700)。分散情報更新部260_1は、生成した部分情報“d_1_2”及び“d_1_7”を用いて新たな第1及び第2他モジュール分散情報“D1_2(=d1_2+d_1_2)”及び“D2_7(=d2_7+d_1_7)”を生成し、分散情報格納部251_1に格納されている第1及び第2他モジュール分散情報“d1_2”及び“d2_7’”を新たな第1及び第2他モジュール分散情報“D1_2”及び“D2_7”に更新する(ステップS9750)。
更新モジュール122Aの分散情報更新部260_2は、更新モジュール121Aから受け取った部分情報“d_1_2”を用いて新たな分散情報“D_2(=d_2+d_1_2)”を生成し、分散情報格納部251_2に格納されている分散情報“d_2”を新たな分散情報“D_2”に更新する(ステップS9800)。分散情報更新部260_2は、更新モジュール121Aから受け取った部分情報“d_1_2”~“d_1_7”を用いて新たな第1及び第2他モジュール分散情報“D1_3(=d1_3+d_1_3)”及び“D2_1(=d2_1’-(d_1_2+d_1_3+・・・+d_1_7))”を生成し、分散情報格納部251_2に格納されている第1及び第2他モジュール分散情報“d1_3”及び“d2_1’”を新たな第1及び第2他モジュール分散情報“D1_3”及び“D2_1”に更新する(ステップS9850)。このとき、減算結果が負の数になる事もあるが、そのまま新たな分散情報として扱う。
更新モジュール123Aの分散情報更新部260_3は、更新モジュール121Aから受け取った部分情報“d_1_3”を用いて新たな分散情報“D_3(=d_3+d_1_3)”を生成し、分散情報格納部251_3に格納されている分散情報“d_3”を新たな分散情報“D_3”に更新する(ステップS9900)。分散情報更新部260_3は、更新モジュール121Aから受け取った部分情報“d_1_4”及び“d_1_2”を用いて新たな第1及び第2他モジュール分散情報“D1_4(=d1_4+d_1_4)”及び“D2_2(=d2_2+d_1_2)”を生成し、分散情報格納部251_3に格納されている第1及び第2他モジュール分散情報“d1_4”及び“d2_2”を新たな第1及び第2他モジュール分散情報“D1_4”及び“D2_2”に更新する(ステップS9950)。
更新モジュール124Aの分散情報更新部260_4は、更新モジュール121Aから受け取った部分情報“d_1_4”を用いて新たな分散情報“D_4(=d_4+d_1_4)”を生成し、分散情報格納部251_4に格納されている分散情報“d_4”を新たな分散情報“D_4”に更新する(ステップS10000)。分散情報更新部260_4は、更新モジュール121Aから受け取った部分情報“d_1_5”及び“d_1_3”を用いて新たな第1及び第2他モジュール分散情報“D1_5(=d1_5+d_1_5)”及び“D2_3(=d2_3+d_1_3)”を生成し、分散情報格納部251_4に格納されている第1及び第2他モジュール分散情報“d1_5”及び“d2_3”を新たな第1及び第2他モジュール分散情報“D1_5”及び“D2_3”に更新する(ステップS10050)。
更新モジュール125Aの分散情報更新部260_5は、更新モジュール121Aから受け取った部分情報“d_1_5”を用いて新たな分散情報“D_5(=d_5+d_1_5)”を生成し、分散情報格納部251_5に格納されている分散情報“d_5”を新たな分散情報“D_5”に更新する(ステップS1010)。分散情報更新部260_5は、更新モジュール121Aから受け取った部分情報“d_1_6”及び“d_1_4”を用いて新たな第1及び第2他モジュール分散情報“D1_6(=d1_6+d_1_6)”及び“D2_4(=d2_4+d_1_4)”を生成し、分散情報格納部251_5に格納されている第1及び第2他モジュール分散情報“d1_6”及び“d2_4”を新たな第1及び第2他モジュール分散情報“D1_6”及び“D2_4”に更新する(ステップS10150)。
更新モジュール126Aの分散情報更新部260_6は、更新モジュール121Aから受け取った部分情報“d_1_6”を用いて新たな分散情報“D_6(=d_6’+d_1_6)”を生成し、分散情報格納部251_6に格納されている分散情報“d_6’”を新たな分散情報“D_6”に更新する(ステップS10200)。分散情報更新部260_6は、更新モジュール121Aから受け取った部分情報“d_1_7”及び“d_1_5”を用いて新たな第1及び第2他モジュール分散情報“D1_7(=d1_7+d_1_7)”及び“D2_5(=d2_5+d_1_5)”を生成し、分散情報格納部251_6に格納されている第1及び第2他モジュール分散情報“d1_7”及び“d2_5”を新たな第1及び第2他モジュール分散情報“D1_7”及び“D2_5”に更新する(ステップS10250)。
更新モジュール127Aの分散情報更新部260_7は、更新モジュール121Aから受け取った部分情報“d_1_7”を用いて新たな分散情報“D_7(=d_7+d_1_7)”を生成し、分散情報格納部251_7に格納されている分散情報“d_7”を新たな分散情報“D_7”に更新する(ステップS10300)。分散情報更新部260_7は、更新モジュール121Aから受け取った部分情報“d_1_2”~“d_1_7”を用いて新たな第1及び第2他モジュール分散情報“D1_1(=d1_1’-(d_1_2+d_1_3+・・・+d_1_7))”及び“D2_6(=d2_6’+d_1_6)”を生成し、分散情報格納部251_7に格納されている第1及び第2他モジュール分散情報“d1_1’”及び“d2_6’”を新たな第1及び第2他モジュール分散情報“D1_1”及び“D2_6”に更新する(ステップS10350)。このとき、減算結果が負の数になる事もあるが、そのまま新たな分散情報として扱う。
(追加時の第2分割処理)
ここでは、図37のステップS750にて示す追加時の第2分割処理について、図45にて示す流れ図を用いて説明する。
ここでは、図37のステップS750にて示す追加時の第2分割処理について、図45にて示す流れ図を用いて説明する。
更新モジュール126Aの分散情報分割部261_6は、分散情報“D_6”から7つの部分情報(d_6_1~d_6_7)を生成する(ステップS1050)。言い換えると、分散情報分割部261_6は、分散情報“D_6”を、7つの部分情報(d_6_1~d_6_7)に分散(分解)する。このとき、各部分情報は、次式を満たすものとする。
(式) D_6= d_6_1+d_6_2+d_6_3+d_6_4+d_6_5
+d_6_6+d_6_7 mod L
具体的には、分散情報分割部261_6は、乱数生成器を用いて、6個の乱数を生成することにより、部分情報(d_6_1~d_6_6)を生成する。次に、分散情報分割部261_6は、
d_6_7 = D_6 - (d_6_1+d_6_2+・・・+d_6_6)
により、d_6_7を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
+d_6_6+d_6_7 mod L
具体的には、分散情報分割部261_6は、乱数生成器を用いて、6個の乱数を生成することにより、部分情報(d_6_1~d_6_6)を生成する。次に、分散情報分割部261_6は、
d_6_7 = D_6 - (d_6_1+d_6_2+・・・+d_6_6)
により、d_6_7を算出する。このとき、減算結果が負の数になる事もあるが、そのまま部分情報として扱う。
分散情報分割部261_6は、生成(分散)した3個若しくは6個分散情報を各更新モジュール121A~125A及び127Aへ配布する(ステップS10550)。
更新モジュール125A及び127Aに対して生成した部分情報d_6_1~d_6_5及びd_6_7を配布する(ステップS10600及びS10610)。他のモジュール121A~124Aにおけるi番目のモジュールに対しては、部分情報d_6_(i-1)、d_6_i及びd_6_(i+1)を配布する(ステップS10560、S10570、S10580及びS10590)。なお、i-1=0の場合には、部分情報d_6_7を配布する。
更新モジュール121A~125A及び127Aは、受信した各部分情報を分散情報更新部260_jに一時的に格納する。
(追加時の第2更新処理)
ここでは、図37のステップS7550にて示す追加時の第2更新処理について、図46から図48にて示す流れ図を用いて説明する。
ここでは、図37のステップS7550にて示す追加時の第2更新処理について、図46から図48にて示す流れ図を用いて説明する。
更新モジュール121Aの分散情報更新部260_1は、更新モジュール126Aから受け取った部分情報“d_6_1”を用いて、新たな分散情報“D_1’(=D_1+d_6_1)”を生成し、分散情報格納部251_1に格納されている分散情報“D_1”を新たな分散情報“D_1’”に更新する(ステップS10700)。分散情報更新部260_1は、更新モジュール126Aから受け取った部分情報“d_6_2”及び“d_6_7”を用いて新たな第1及び第2他モジュール分散情報“D1_2’(=D1_2+d_6_2)”及び“D2_7’(=D2_7+d_6_7)”を生成し、分散情報格納部251_1に格納されている第1及び第2他モジュール分散情報“D1_2”及び“D2_7’”を新たな第1及び第2他モジュール分散情報“D1_2’”及び“D2_7’”に更新する(ステップS10750)。
更新モジュール122Aの分散情報更新部260_2は、更新モジュール126Aから受け取った部分情報“d_6_2”を用いて新たな分散情報“D_2’(=D_2+d_6_2)”を生成し、分散情報格納部251_2に格納されている分散情報“D_2”を新たな分散情報“D_2’”に更新する(ステップS10800)。分散情報更新部260_2は、更新モジュール126Aから受け取った部分情報“d_6_3”及び“d_6_1”を用いて新たな第1及び第2他モジュール分散情報“D1_3’(=D1_3+d_6_3)”及び“D2_1’(=D2_1+d_6_1)”を生成し、分散情報格納部251_2に格納されている第1及び第2他モジュール分散情報“D1_3”及び“D2_1”を新たな第1及び第2他モジュール分散情報“D1_3’”及び“D2_1’”に更新する(ステップS10850)。
更新モジュール123Aの分散情報更新部260_3は、更新モジュール126Aから受け取った部分情報“d_6_3”を用いて新たな分散情報“D_3’(=D_3+d_6_3)”を生成し、分散情報格納部251_3に格納されている分散情報“D_3”を新たな分散情報“D_3’”に更新する(ステップS1090)。分散情報更新部260_3は、更新モジュール126Aから受け取った部分情報“d_6_4”及び“d_6_2”を用いて新たな第1及び第2他モジュール分散情報“D1_4’(=D1_4+d_6_4)”及び“D2_2’(=D2_2+d_6_2)”を生成し、分散情報格納部251_3に格納されている第1及び第2他モジュール分散情報“D1_4”及び“D2_2”を新たな第1及び第2他モジュール分散情報“D1_4’”及び“D2_2’”に更新する(ステップS10950)。
更新モジュール124Aの分散情報更新部260_4は、更新モジュール121Aから受け取った部分情報“d_6_4”を用いて新たな分散情報“D_4’(=D_4+d_6_4)”を生成し、分散情報格納部251_4に格納されている分散情報“D_4”を新たな分散情報“D_4’”に更新する(ステップS11000)。分散情報更新部260_4は、更新モジュール126Aから受け取った部分情報“d_6_5”及び“d_6_3”を用いて新たな第1及び第2他モジュール分散情報“D1_5’(=D1_5+d_6_5)”及び“D2_3’(=D2_3+d_6_3)”を生成し、分散情報格納部251_4に格納されている第1及び第2他モジュール分散情報“D1_5”及び“D2_3”を新たな第1及び第2他モジュール分散情報“D1_5’”及び“D2_3’”に更新する(ステップS11050)。
更新モジュール125Aの分散情報更新部260_5は、更新モジュール126Aから受け取った部分情報“d_6_5”を用いて新たな分散情報“D_5’(=D_5+d_6_5)”を生成し、分散情報格納部251_5に格納されている分散情報“D_5”を新たな分散情報“D_5’”に更新する(ステップS11100)。分散情報更新部260_5は、更新モジュール126Aから受け取った部分情報“d_6_1”~“d_6_5”及び“d_6_7”を用いて新たな第1及び第2他モジュール分散情報“D1_6’(=D1_6-(d_6_1+d_6_2+・・・+d_6_5+d_6_7)”及び“D2_4’(=D2_4+d_6_4)”を生成し、分散情報格納部251_5に格納されている第1及び第2他モジュール分散情報“D1_6”及び“D2_4”を新たな第1及び第2他モジュール分散情報“D1_6’”及び“D2_4’”に更新する(ステップS11150)。このとき、減算結果が負の数になる事もあるが、そのまま新たな分散情報として扱う。
更新モジュール126Aの分散情報更新部260_6は、生成した部分情報“d_1_6”を新たな分散情報“D_6’(=d_6_6)”として、分散情報格納部251_6に格納されている分散情報“D_6”を新たな分散情報“D_6’”に更新する(ステップS11200)。分散情報更新部260_6は、生成した部分情報“d_6_7”及び“d_6_5”を用いて新たな第1及び第2他モジュール分散情報“D1_7’(=D1_7+d_6_7)”及び“D2_5’(=D2_5+d_6_5)”を生成し、分散情報格納部251_6に格納されている第1及び第2他モジュール分散情報“D1_7”及び“D2_5”を新たな第1及び第2他モジュール分散情報“D1_7’”及び“D2_5’”に更新する(ステップS11250)。
更新モジュール127Aの分散情報更新部260_7は、更新モジュール126Aから受け取った部分情報“d_6_7”を用いて新たな分散情報“D_7’(=D_7+d_6_7)”を生成し、分散情報格納部251_7に格納されている分散情報“D_7”を新たな分散情報“D_7’”に更新する(ステップS11300)。分散情報更新部260_7は、更新モジュール126Aから受け取った部分情報“d_6_1”~“d_1_5”及び“d_1_7”を用いて新たな第1及び第2他モジュール分散情報“D1_1’(=D1_1+d_6_1)”及び“D2_6’(=D2_6-(d_6_1+d_6_2+・・・+d_6_5+d_6_7))”を生成し、分散情報格納部251_7に格納されている第1及び第2他モジュール分散情報“D1_1”及び“D2_6”を新たな第1及び第2他モジュール分散情報“D1_1’”及び“D2_6’”に更新する(ステップS11350)。このとき、減算結果が負の数になる事もあるが、そのまま新たな分散情報として扱う。
(具体例)
追加処理後の更新モジュール121A~127Aのそれぞれが保持する分散情報、第1及び第2他モジュール分散情報を、図49にて示す。
追加処理後の更新モジュール121A~127Aのそれぞれが保持する分散情報、第1及び第2他モジュール分散情報を、図49にて示す。
例えば、更新モジュール121Aは、追加処理後において、更新後の分散情報“D_1’”211c、第1他モジュール分散情報“D1_2’”212_1c及び第2他モジュール分散情報“D2_7’”217_1cを保持している。
ここで、更新後の各分散情報“D_1’”~“D_7’”により、秘密鍵“d”が回復されることを以下に示す。
D_1’+D_2’+D_3’+D_4’+D_5’+D_6’+D_7’
= (D_1+d_6_1)+(D_2+d_6_2)+(D_3+d_6_3)
+(D_4+d_6_4)+(D_5+d_6_5)+(d_6_6)+(D_7+d_6_7)
= D_1+D_2+D_3+D_4+D_5+D_7
+d_6_1+d_6_2+d_6_3+d_6_4+d_6_5+d_6_6+d_6_7
= D_1+D_2+D_3+D_4+D_5+D_6+D_7
= (d_1_1)+(d_2+d_1_2)+(d_3+d_1_3)+(d_4+d_1_4)
+(d_5+d_1_5)+(d_6’+d_1_6)+(d_7+d_1_7)
= d_2+d_3+d_4+d_5+d_6’+d_7
+d_1_1+d_1_2+d_1_3+d_1_4+d_1_5+d_1_6+d_1_7
= d_1’+d_2+d_3+d_4+d_5+d_6’+d_7
= (d_1-m)+d_2+d_3+d_4+d_5+(d_6-n)+m+n
= d_1+d_2+d_3+d_4+d_5+d_6+d_7
= d
このように、更新モジュール127Aの追加後も、それぞれの更新モジュールが保持する分散情報の総和を一定とすることが可能となるため、追加処理時において、ソフトウェア更新システムは、新しい秘密鍵“d”を復元し分散情報を再生成することなく、更新モジュールを追加させることが可能となる。
= (D_1+d_6_1)+(D_2+d_6_2)+(D_3+d_6_3)
+(D_4+d_6_4)+(D_5+d_6_5)+(d_6_6)+(D_7+d_6_7)
= D_1+D_2+D_3+D_4+D_5+D_7
+d_6_1+d_6_2+d_6_3+d_6_4+d_6_5+d_6_6+d_6_7
= D_1+D_2+D_3+D_4+D_5+D_6+D_7
= (d_1_1)+(d_2+d_1_2)+(d_3+d_1_3)+(d_4+d_1_4)
+(d_5+d_1_5)+(d_6’+d_1_6)+(d_7+d_1_7)
= d_2+d_3+d_4+d_5+d_6’+d_7
+d_1_1+d_1_2+d_1_3+d_1_4+d_1_5+d_1_6+d_1_7
= d_1’+d_2+d_3+d_4+d_5+d_6’+d_7
= (d_1-m)+d_2+d_3+d_4+d_5+(d_6-n)+m+n
= d_1+d_2+d_3+d_4+d_5+d_6+d_7
= d
このように、更新モジュール127Aの追加後も、それぞれの更新モジュールが保持する分散情報の総和を一定とすることが可能となるため、追加処理時において、ソフトウェア更新システムは、新しい秘密鍵“d”を復元し分散情報を再生成することなく、更新モジュールを追加させることが可能となる。
(追加処理時の第1及び第2更新処理の必要性)
追加時における第1及び第2更新処理は、更新モジュール121Aと126Aが分散情報を持ちすぎるために必要になる処理である。
追加時における第1及び第2更新処理は、更新モジュール121Aと126Aが分散情報を持ちすぎるために必要になる処理である。
具体的には、更新モジュール121Aは、追加処理のステップS7300の終了後には、分散情報“d_1’”と他モジュール分散情報“d1_2”及びと“d2_7”の3つの分散情報を保持することになる。この時、他モジュール分散情報“d2_7”は、更新モジュール121Aが生成した変形情報mと更新モジュール126Aが生成した変形情報nの和になっている。そのため、他モジュール分散情報“d2_7”と更新モジュール121Aが生成した変形情報mから更新モジュール126Aが送信した変形情報nを求めることが出来る。さらに、追加処理前には更新前の他モジュール分散情報“d2_6”も保持していたため、この更新前の他モジュール分散情報“d2_6”と更新モジュール126Aが生成した変形情報nとから、更新後の分散情報“d2_6’(=d_6’)”の値を求めることが出来る。この様に更新モジュール121Aは、本来は3つの分散情報しか保持しないはずが4つの分散情報を保持することが可能となり、分散情報を持ちすぎることになる。同様の事が更新モジュール126Aにも言えるため、更新モジュールの追加処理の最後に、このような分散情報の持ちすぎを解消するために、更新モジュール121Aと126Aが所有する分散情報の更新を行う必要がある。
なお、追加される更新モジュールの所有する分散情報を生成するために2つの更新モジュールが変形情報を生成、送信する構成としたが、これに限定するものではなく、例えば追加される更新モジュール以外のすべての更新モジュールが変形情報を送信する構成にしてもよい。
(49)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(49)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
また、本発明に係るソフトウェア更新装置は、その範囲を逸脱することなく本発明の趣旨に沿って様々な変形または修正が可能であることは言うまでもない。
本発明は、ネットワークで接続された外部サーバから更新用のソフトウェアを取得し、取得したソフトウェアで自装置内のソフトウェアを更新するソフトウェア更新装置に広く適用することができる。
Claims (17)
- 所定のアプリケーションと、
前記所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、
前記保護制御モジュールを更新する更新用の保護制御モジュールを外部サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群と、を備え、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行い、
前記複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記更新モジュール群に含まれる他の更新モジュールが、前記不正動作を行う可能性があると検証された更新モジュールを無効化する
ことを特徴とするソフトウェア更新装置。 - 前記更新モジュール群に含まれる複数の更新モジュールの各々を無効化するための所定の情報を格納し、所定の暗号鍵で暗号化されたアクセス制御モジュールをさらに備え、
前記他の更新モジュールは、前記外部サーバにアクセスして前記外部サーバから前記所定の暗号鍵に対応した復号鍵を取得し、前記取得した復号鍵を用いてアクセス制御モジュールを復号し、
前記不正動作を行う可能性があると検証された更新モジュールを無効化するための所定の情報を前記アクセス制御モジュールから取得し、前記所定の情報に基づいて前記不正動作を行う可能性があると検証された更新モジュールを無効化する
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記更新モジュール群に含まれる複数の更新モジュールの各々を無効化するための所定の情報を格納しているアクセス制御モジュールをさらに備え、
前記所定の情報は、更新モジュール毎に異なる暗号鍵で暗号化されており、
前記他の更新モジュールは、前記外部サーバにアクセスし、前記不正動作を行う可能性があると検証された更新モジュールに関する所定の情報を暗号化した暗号鍵に対応した復号鍵を前記外部サーバから取得し、前記不正動作を行う可能性があると検証された更新モジュールに関する所定の情報を前記取得した復号鍵を用いて復号し、
前記復号された所定の情報に基づいて前記不正動作を行う可能性があると検証された更新モジュールを無効化する
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記所定の情報は、前記更新モジュール群に含まれる複数の更新モジュールの各々の格納位置情報である
ことを特徴とする請求項2または3の何れかに記載のソフトウェア更新装置。 - 前記所定の情報は、前記更新モジュール群に含まれる複数の更新モジュールの各々を無効化するための処理手順を示す情報である
ことを特徴とする請求項2または3の何れかに記載のソフトウェア更新装置。 - 前記他の更新モジュールは、前記格納位置情報に基づいて、前記不正動作を行う可能性があると検証された更新モジュールの全体を消去することで無効化する
ことを特徴とする請求項4記載のソフトウェア更新装置。 - 前記格納位置情報は、前記更新モジュールが無効化される際に消去される消去部分を示し、
前記他の更新モジュールは、前記格納位置情報に基づいて、前記不正動作を行う可能性があると検証された更新モジュールの消去部分を消去することで無効化する
ことを特徴とする請求項4記載のソフトウェア更新装置。 - 前記格納位置情報は、前記更新モジュールが無効化される際に消去されるコード部分を示し、
前記他の更新モジュールは、前記格納位置情報に基づいて、前記不正動作を行う可能性があると検証された更新モジュールのコード部分を消去することで無効化する
ことを特徴とする請求項4記載のソフトウェア更新装置。 - 前記他の更新モジュールは、前記不正動作を行う可能性があると検証された更新モジュールを無効化した場合、前記アクセス制御モジュールに格納されている、無効化した更新モジュールについての所定の情報を消去する
ことを特徴とする請求項2または3の何れかに記載のソフトウェア更新装置。 - 前記無効化は、前記不正動作を行う可能性があると検証された更新モジュールが、検証対象となる更新モジュールを検証する際に参照する、当該検証対象の更新モジュールにアクセスするための情報を消去することである
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記無効化は、前記不正動作を行う可能性があると検証された更新モジュールが、前記保護制御モジュールにアクセスするための情報を消去することである
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 前記複数の更新モジュールの各々による検証は、当該更新モジュールが自更新モジュールを検証する場合を含む
ことを特徴とする請求項1記載のソフトウェア更新装置。 - 自更新モジュールが不正動作を行う可能性があることを検証した場合には、前記自更新モジュールは前記自更新モジュールを無効化する
ことを特徴とする請求項12記載のソフトウェア更新装置。 - 前記複数の更新モジュールの各々は、前記選定した更新モジュールのハッシュ値を算出し、当該更新モジュールに予め付加されているハッシュ値と、算出したハッシュ値が一致するか判断することにより、前記検証を行う
ことを特徴とする請求項1記載のソフトウェア更新装置。 - ソフトウェア更新装置と当該ソフトウェア更新装置に接続されるサーバとを含むソフトウェア更新システムであって、
前記ソフトウェア更新装置は、
所定のアプリケーションと、
前記所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、
前記保護制御モジュールを更新する更新用の保護制御モジュールを前記サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群と、を備え、
前記サーバは、
前記保護制御モジュールを更新する更新用の保護制御モジュールを格納する格納部と、
前記更新用の保護制御モジュールを前記ソフトウェア更新装置に送信する通信部と、を備え、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行い、
前記複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記更新モジュール群に含まれる他の更新モジュールが、前記不正動作を行う可能性があると検証された更新モジュールを無効化する
ことを特徴とするソフトウェア更新システム。 - 無効化方法であって、
所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、前記保護制御モジュールを更新する更新用の保護制御モジュールを外部サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群とを起動する起動ステップと、
前記所定のアプリケーションを実行する実行ステップとを含み、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証を行い、
前記複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記更新モジュール群に含まれる他の更新モジュールが、前記不正動作を行う可能性があると検証された更新モジュールを無効化する
ことを特徴とする無効化方法。 - 無効化プログラムであって、
前記無効化プログラムは、
所定のアプリケーションが改ざんされていないかを検証する保護制御モジュールと、
前記保護制御モジュールを更新する更新用の保護制御モジュールを外部サーバから受信し前記保護制御モジュールを更新する更新モジュールを複数含む更新モジュール群と、を含み、
前記更新モジュール群に含まれる複数の更新モジュールの各々は、
同時に起動している全ての更新モジュールが、少なくとも他の一つの更新モジュールの検証対象となるように、検証対象を選定して不正動作を行わないか検証する検証手順と、
前記複数の更新モジュールの何れかが不正動作を行う可能性があることが検証された場合、前記更新モジュール群に含まれる他の更新モジュールが、前記不正動作を行う可能性があると検証された更新モジュールを無効化する無効化手順とを含む処理をコンピュータに行わせる
無効化プログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP08873612A EP2259204A1 (en) | 2008-03-28 | 2008-11-06 | Software updating apparatus, software updating system, invalidation method, and invalidation program |
US12/601,368 US8600896B2 (en) | 2008-03-28 | 2008-11-06 | Software updating apparatus, software updating system, invalidation method, and invalidation program |
JP2010505049A JP4932034B2 (ja) | 2008-03-28 | 2008-11-06 | ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム |
US14/066,835 US9594909B2 (en) | 2008-03-28 | 2013-10-30 | Software updating apparatus, software updating system, invalidation method, and invalidation program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008087301 | 2008-03-28 | ||
JP2008-087301 | 2008-03-28 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/601,368 A-371-Of-International US8600896B2 (en) | 2008-03-28 | 2008-11-06 | Software updating apparatus, software updating system, invalidation method, and invalidation program |
US14/066,835 Division US9594909B2 (en) | 2008-03-28 | 2013-10-30 | Software updating apparatus, software updating system, invalidation method, and invalidation program |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009118801A1 true WO2009118801A1 (ja) | 2009-10-01 |
Family
ID=41113045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2008/003208 WO2009118801A1 (ja) | 2008-03-28 | 2008-11-06 | ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム |
Country Status (4)
Country | Link |
---|---|
US (2) | US8600896B2 (ja) |
EP (1) | EP2259204A1 (ja) |
JP (1) | JP4932034B2 (ja) |
WO (1) | WO2009118801A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011248865A (ja) * | 2010-04-26 | 2011-12-08 | Panasonic Corp | 改ざん監視システム、管理装置及び管理方法 |
JP2013537729A (ja) * | 2010-06-10 | 2013-10-03 | アルカテル−ルーセント | 単一の登録手順を使用するクライアントのグループの安全な登録 |
JP2021114173A (ja) * | 2020-01-20 | 2021-08-05 | キヤノン株式会社 | 情報処理装置、情報処理装置の処理方法およびプログラム |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2686796C (en) | 2008-12-03 | 2017-05-16 | Trend Micro Incorporated | Method and system for real time classification of events in computer integrity system |
JP5368878B2 (ja) * | 2009-05-25 | 2013-12-18 | キヤノン株式会社 | 情報処理装置、製造装置及びデバイス製造方法 |
EP2454658A1 (en) * | 2009-07-16 | 2012-05-23 | Assa Abloy Ab | Blind verification of computer firmware |
US8352482B2 (en) | 2009-07-21 | 2013-01-08 | Vmware, Inc. | System and method for replicating disk images in a cloud computing based virtual machine file system |
US8234518B2 (en) * | 2009-07-21 | 2012-07-31 | Vmware, Inc. | Method for voting with secret shares in a distributed system |
US8352490B2 (en) | 2009-10-22 | 2013-01-08 | Vmware, Inc. | Method and system for locating update operations in a virtual machine disk image |
US8594850B1 (en) | 2012-09-30 | 2013-11-26 | Nest Labs, Inc. | Updating control software on a network-connected HVAC controller |
WO2015142765A1 (en) | 2014-03-17 | 2015-09-24 | Coinbase, Inc | Bitcoin host computer system |
US9405524B1 (en) * | 2014-04-30 | 2016-08-02 | Allscripts Software, Llc | Software verification system and methods |
US20180314510A1 (en) * | 2014-05-08 | 2018-11-01 | Google Inc. | System for distributing components |
AU2015374202B2 (en) | 2014-12-29 | 2019-02-14 | Visa International Service Association | Over-the-air provisioning of application library |
US10205598B2 (en) * | 2015-05-03 | 2019-02-12 | Ronald Francis Sulpizio, JR. | Temporal key generation and PKI gateway |
US9735958B2 (en) | 2015-05-19 | 2017-08-15 | Coinbase, Inc. | Key ceremony of a security system forming part of a host computer for cryptographic transactions |
US10728043B2 (en) | 2015-07-21 | 2020-07-28 | Entrust, Inc. | Method and apparatus for providing secure communication among constrained devices |
US10250600B2 (en) * | 2015-07-27 | 2019-04-02 | International Business Machines Corporation | Updating database drivers for client applications through a database server push |
JP6644037B2 (ja) * | 2017-09-08 | 2020-02-12 | 株式会社東芝 | 通信制御システム |
JP7171339B2 (ja) * | 2018-09-26 | 2022-11-15 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法、及び、プログラム |
JP7166884B2 (ja) | 2018-11-14 | 2022-11-08 | キヤノン株式会社 | ソフトウェアの改ざんを検知することが可能な情報処理装置 |
JP7278753B2 (ja) * | 2018-11-19 | 2023-05-22 | キヤノン株式会社 | ソフトウェアの改ざんを検知することが可能な情報処理装置 |
US11394543B2 (en) | 2018-12-13 | 2022-07-19 | Coinbase, Inc. | System and method for secure sensitive data storage and recovery |
JP7008661B2 (ja) * | 2019-05-31 | 2022-01-25 | 本田技研工業株式会社 | 認証システム |
US11635990B2 (en) | 2019-07-01 | 2023-04-25 | Nutanix, Inc. | Scalable centralized manager including examples of data pipeline deployment to an edge system |
US11501881B2 (en) | 2019-07-03 | 2022-11-15 | Nutanix, Inc. | Apparatus and method for deploying a mobile device as a data source in an IoT system |
EP4007983A4 (en) | 2019-08-01 | 2023-08-30 | Coinbase, Inc. | SYSTEMS AND METHODS FOR GENERATING SIGNATURES |
NZ786912A (en) * | 2019-09-25 | 2022-08-26 | Shift5 Inc | Passive monitoring and prevention of unauthorized firmware or software upgrades between computing devices |
US11943350B2 (en) * | 2019-10-16 | 2024-03-26 | Coinbase, Inc. | Systems and methods for re-using cold storage keys |
US11726764B2 (en) * | 2020-11-11 | 2023-08-15 | Nutanix, Inc. | Upgrade systems for service domains |
US11665221B2 (en) | 2020-11-13 | 2023-05-30 | Nutanix, Inc. | Common services model for multi-cloud platform |
US11736585B2 (en) | 2021-02-26 | 2023-08-22 | Nutanix, Inc. | Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0356732B2 (ja) | 1982-06-28 | 1991-08-29 | ||
JP2001051742A (ja) * | 1999-07-13 | 2001-02-23 | Internatl Business Mach Corp <Ibm> | 実行可能モジュールおよび関連する保護サービス・プロバイダ・モジュールの完全性検査方法および装置 |
JP2006018123A (ja) * | 2004-07-02 | 2006-01-19 | Nippon Telegr & Teleph Corp <Ntt> | 発展型コンテンツ作成装置、コンテンツ発展装置及びそのプログラム |
WO2006085595A1 (ja) * | 2005-02-10 | 2006-08-17 | Matsushita Electric Industrial Co., Ltd. | プログラム変換装置及びプログラム実行装置 |
JP2008016014A (ja) * | 2006-06-07 | 2008-01-24 | Matsushita Electric Ind Co Ltd | 機密情報保護システム、機密情報復元装置、及び割符生成装置 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2837446B2 (ja) | 1989-07-21 | 1998-12-16 | カヤバ工業株式会社 | 二段作動ステーダンパ |
CN1869997A (zh) * | 1995-02-13 | 2006-11-29 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
US5991399A (en) * | 1997-12-18 | 1999-11-23 | Intel Corporation | Method for securely distributing a conditional use private key to a trusted entity on a remote system |
JPH11252067A (ja) | 1998-03-03 | 1999-09-17 | Nippon Telegr & Teleph Corp <Ntt> | セキュリティオペレーション制御方法およびその記録媒体 |
JP3056732B1 (ja) | 1999-04-09 | 2000-06-26 | コナミ株式会社 | コンピュ―タシステム、コンピュ―タプログラムの実行方法及びコンピュ―タプログラム記録媒体 |
CN1182479C (zh) * | 2000-01-07 | 2004-12-29 | 国际商业机器公司 | 有效地收集、整理和访问证书吊销表的系统和方法 |
US20070271191A1 (en) | 2000-03-09 | 2007-11-22 | Andres Torrubia-Saez | Method and apparatus for secure distribution of software |
JP3644494B2 (ja) | 2001-04-13 | 2005-04-27 | 日本電気株式会社 | 情報検索装置 |
US20030009681A1 (en) | 2001-07-09 | 2003-01-09 | Shunji Harada | Digital work protection system, recording medium apparatus, transmission apparatus, and playback apparatus |
JP2003044155A (ja) | 2001-07-30 | 2003-02-14 | Hitachi-Lg Data Storage Inc | ソフトウェアのインストール方法及びファームウェアのアップデート方法及びそれらに用いる記録再生装置及び記録媒体 |
US20050168323A1 (en) * | 2002-04-26 | 2005-08-04 | Koninklijke Philips Electronics N.V. | Security modules for conditional access with restrictions |
US7216369B2 (en) * | 2002-06-28 | 2007-05-08 | Intel Corporation | Trusted platform apparatus, system, and method |
DE60317242T2 (de) | 2002-08-01 | 2008-02-14 | Matsushita Electric Industrial Co., Ltd., Kadoma | Apparate und Verfahren zum Entschlüsseln von verschlüsselten Datenblöcken und zum Lokalisieren der verschlüsselten Datenblöcke im für die Ausführung verwendeten Speicherbereich |
US7240200B2 (en) | 2002-09-26 | 2007-07-03 | International Business Machines Corporation | System and method for guaranteeing software integrity via combined hardware and software authentication |
JP2004234645A (ja) | 2003-01-10 | 2004-08-19 | Canon Inc | 画像形成装置の監視装置、該監視装置による制御方法、及び該制御方法を実行するプログラム、並びに管理装置、該管理装置による制御方法、及び該制御方法を実行するプログラム |
KR20050111326A (ko) | 2003-02-21 | 2005-11-24 | 마츠시타 덴끼 산교 가부시키가이샤 | 소프트웨어 관리 시스템, 기록 매체, 및 정보-처리 장치 |
US20040202324A1 (en) | 2003-04-11 | 2004-10-14 | Matsushita Electric Industrial Co., Ltd | Program electronic watermark processing apparatus |
US7249353B2 (en) | 2003-04-17 | 2007-07-24 | Hewlett-Packard Development Company, L.P. | Image-formation device firmware having modular upgrade capability |
KR100568228B1 (ko) | 2003-05-20 | 2006-04-07 | 삼성전자주식회사 | 고유번호를 이용한 프로그램 탬퍼 방지 방법과 난독처리된 프로그램 업그레이드 방법, 상기 방법을 위한 장치 |
JP4676724B2 (ja) | 2003-08-12 | 2011-04-27 | 株式会社リコー | 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体 |
CN101668166A (zh) | 2003-12-18 | 2010-03-10 | 松下电器产业株式会社 | 用于存储、认证以及执行应用程序的方法 |
JP4335707B2 (ja) | 2004-02-06 | 2009-09-30 | Necエレクトロニクス株式会社 | プログラム改竄検出装置、及びプログラム改竄検出プログラムおよびプログラム改竄検出方法 |
US7325126B2 (en) | 2004-03-05 | 2008-01-29 | Microsoft Corporation | System and method for distributed module authentication |
EP1783581A4 (en) | 2004-06-30 | 2010-08-25 | Panasonic Corp | PROVISION OF EXECUTION OF A PROGRAM AND METHOD OF EXECUTION |
GB2419198A (en) * | 2004-10-14 | 2006-04-19 | Hewlett Packard Development Co | Identifying performance affecting causes in a data storage system |
JP4496061B2 (ja) | 2004-11-11 | 2010-07-07 | パナソニック株式会社 | 機密情報処理装置 |
US20080168562A1 (en) | 2005-02-25 | 2008-07-10 | Tomoyuki Haga | Secure Processing Device and Secure Processing System |
US20060248107A1 (en) | 2005-04-11 | 2006-11-02 | Coronado Juan A | Apparatus system and method for updating software while preserving system state |
US7509528B2 (en) | 2006-03-10 | 2009-03-24 | Alcatel Lucent | Transaction bundling for improved redundancy |
US8645942B2 (en) | 2006-05-26 | 2014-02-04 | Oracle International Corporation | Software update syndication |
US20080005800A1 (en) | 2006-06-07 | 2008-01-03 | Kaoru Yokota | Confidential information protection system, confidential information restoring device, and tally generating device |
US7424398B2 (en) | 2006-06-22 | 2008-09-09 | Lexmark International, Inc. | Boot validation system and method |
JP4048382B1 (ja) | 2006-09-01 | 2008-02-20 | 富士ゼロックス株式会社 | 情報処理システムおよびプログラム |
US20080244557A1 (en) | 2007-04-02 | 2008-10-02 | Inventec Corporation | Knowledge management system and method for implementing management software using the same |
US9053323B2 (en) | 2007-04-13 | 2015-06-09 | Hewlett-Packard Development Company, L.P. | Trusted component update system and method |
US8612773B2 (en) | 2007-05-03 | 2013-12-17 | International Business Machines Corporation | Method and system for software installation |
US20080301667A1 (en) | 2007-05-30 | 2008-12-04 | Google Inc. | Dynamically Updating Software Applications on a Device |
US8225105B2 (en) | 2007-08-13 | 2012-07-17 | International Business Machines Corporation | Method and apparatus for verifying integrity of computer system vital data components |
-
2008
- 2008-11-06 US US12/601,368 patent/US8600896B2/en active Active
- 2008-11-06 WO PCT/JP2008/003208 patent/WO2009118801A1/ja active Application Filing
- 2008-11-06 EP EP08873612A patent/EP2259204A1/en not_active Withdrawn
- 2008-11-06 JP JP2010505049A patent/JP4932034B2/ja active Active
-
2013
- 2013-10-30 US US14/066,835 patent/US9594909B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0356732B2 (ja) | 1982-06-28 | 1991-08-29 | ||
JP2001051742A (ja) * | 1999-07-13 | 2001-02-23 | Internatl Business Mach Corp <Ibm> | 実行可能モジュールおよび関連する保護サービス・プロバイダ・モジュールの完全性検査方法および装置 |
JP2006018123A (ja) * | 2004-07-02 | 2006-01-19 | Nippon Telegr & Teleph Corp <Ntt> | 発展型コンテンツ作成装置、コンテンツ発展装置及びそのプログラム |
WO2006085595A1 (ja) * | 2005-02-10 | 2006-08-17 | Matsushita Electric Industrial Co., Ltd. | プログラム変換装置及びプログラム実行装置 |
JP2008016014A (ja) * | 2006-06-07 | 2008-01-24 | Matsushita Electric Ind Co Ltd | 機密情報保護システム、機密情報復元装置、及び割符生成装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011248865A (ja) * | 2010-04-26 | 2011-12-08 | Panasonic Corp | 改ざん監視システム、管理装置及び管理方法 |
JP2013537729A (ja) * | 2010-06-10 | 2013-10-03 | アルカテル−ルーセント | 単一の登録手順を使用するクライアントのグループの安全な登録 |
US9450928B2 (en) | 2010-06-10 | 2016-09-20 | Gemalto Sa | Secure registration of group of clients using single registration procedure |
JP2021114173A (ja) * | 2020-01-20 | 2021-08-05 | キヤノン株式会社 | 情報処理装置、情報処理装置の処理方法およびプログラム |
JP7374780B2 (ja) | 2020-01-20 | 2023-11-07 | キヤノン株式会社 | 情報処理装置および情報処理装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2009118801A1 (ja) | 2011-07-21 |
US9594909B2 (en) | 2017-03-14 |
US20100175061A1 (en) | 2010-07-08 |
US20140059679A1 (en) | 2014-02-27 |
JP4932034B2 (ja) | 2012-05-16 |
US8600896B2 (en) | 2013-12-03 |
EP2259204A1 (en) | 2010-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4932034B2 (ja) | ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム | |
JP4932033B2 (ja) | ソフトウェア更新装置、ソフトウェア更新システム、改ざん検証方法、及び改ざん検証プログラム | |
US8935530B2 (en) | Control device and computer readable medium | |
JP5411282B2 (ja) | 情報処理装置、管理装置、不正モジュール検知システム、不正モジュール検知方法、不正モジュール検知プログラムを記録している記録媒体、管理方法、管理プログラムを記録している記録媒体および集積回路 | |
TWI567579B (zh) | 用於對硬體裝置提供金鑰的方法和設備 | |
JP4763368B2 (ja) | 通信カード、機密情報処理システム、機密情報転送方法およびプログラム | |
JP5457362B2 (ja) | 情報処理装置、情報処理方法、情報処理プログラム及び集積回路 | |
JP6720581B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
US8745735B2 (en) | Monitoring system, program-executing device, monitoring program, recording medium and integrated circuit | |
US8707430B2 (en) | Tampering monitoring system, management apparatus, and management method | |
US8516574B2 (en) | Software update system, management apparatus, recording medium, and integrated circuit | |
US8769312B2 (en) | Tampering monitoring system, protection control module, and detection module | |
CN102656592A (zh) | 信息处理设备、信息处理系统、软件例程执行方法和远程认证方法 | |
JP5453323B2 (ja) | 改竄監視システム、管理装置及び改竄管理方法 | |
US8800038B2 (en) | Tampering monitoring system, control device, and tampering control method | |
KR20160098756A (ko) | 하드웨어 보안 모듈, 상기 하드웨어 보안 모듈에 저장된 무결성 검증 값을 업데이트하는 방법, 상기 하드웨어 보안 모듈을 이용하여 단말에 저장된 프로그램을 업데이트하는 방법 | |
CN113626803A (zh) | 一种bmc固件的保护方法、系统、装置及可读存储介质 | |
WO2019142307A1 (ja) | 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム | |
JP2004282391A (ja) | 認証機能を有する情報処理装置及び認証機能付与方法 | |
EP3460705A1 (en) | Distributed deployment of unique firmware | |
JP2023164669A (ja) | 情報処理装置、サーバ装置、通信システム、通信方法、及びプログラム | |
CN117215621A (zh) | 用于更新电子设备固件的方法、装置和系统 | |
JP2004185348A (ja) | プログラム修正方法およびその実施icカード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 2010505049 Country of ref document: JP |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 08873612 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2008873612 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 12601368 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |