WO2006090800A1 - セキュア処理装置、及びセキュア処理システム - Google Patents

セキュア処理装置、及びセキュア処理システム Download PDF

Info

Publication number
WO2006090800A1
WO2006090800A1 PCT/JP2006/303320 JP2006303320W WO2006090800A1 WO 2006090800 A1 WO2006090800 A1 WO 2006090800A1 JP 2006303320 W JP2006303320 W JP 2006303320W WO 2006090800 A1 WO2006090800 A1 WO 2006090800A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
protected
unit
secure processing
execution
Prior art date
Application number
PCT/JP2006/303320
Other languages
English (en)
French (fr)
Inventor
Tomoyuki Haga
Yoshikatsu Ito
Hideki Matsushima
Yukie Shoda
Shigehiko Kimura
Hiroshi Okuyama
Yasuki Oiwa
Takafumi Kagawa
Original Assignee
Matsushita Electric Industrial Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to EP06714460A priority Critical patent/EP1862937A1/en
Priority to JP2007504784A priority patent/JP4796050B2/ja
Publication of WO2006090800A1 publication Critical patent/WO2006090800A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Definitions

  • the present invention relates to a technique for preventing unauthorized tampering and analysis of a program.
  • Paid digital content for viewing using a PC or a mobile phone is distributed, but in order to prevent unauthorized copying, the digital content is encrypted and distributed. Therefore, the program for playing back digital content includes an encryption key for decrypting the encryption key. Therefore, if a malicious user for the purpose of fraud analysis can analyze the reproduction program and specify the encryption key, the digital content is illegally copied.
  • the present invention has been made in view of the above problems, and an object of the present invention is to provide a secure processing system capable of satisfying both prevention of illegal analysis of a program and convenience for a bona fide user. To do.
  • the present invention provides a secure processing device, In order to obtain the same result as the program, a plurality of protected programs generated based on the original program are stored, and the program storage means and the protected program to be analyzed are invalidated. It comprises: invalidation means; selection means for selecting one protected program that has not been invalidated from the plurality of protected programs; and execution means for executing the selected one protected program. And
  • the secure processing device includes analysis detection means for determining whether or not the protected program is an analysis target when the execution means executes one protected program.
  • the invalidation means includes an invalidation list storage unit that stores an invalid key list indicating a protected program that has been invalidated, and the analysis detection means causes the protected program to be analyzed. If it is determined that the protected program is invalidated, the invalidation list may include an invalidation registration unit that registers that the protected program is invalidated.
  • the selection unit can identify the invalidated protected program, and the protected program to be executed.
  • the protected program that has not been invalidated can be selected.
  • the analysis detection unit detects the protected program to be analyzed
  • the invalidation registration unit updates the invalidation list. Therefore, the selection unit always refers to the new invalidation list, Once disabled, the protected program can be selected.
  • the invalidation list is added with signature data for proving the validity of the invalidation list
  • the selecting means is the signature data added to the invalidation list.
  • the invalidation list is detected as a result of the verification of the signature data. In such a case, it may be configured to cancel the protected program selection process.
  • the plurality of protected programs are obfuscated programs obtained by obfuscating the original program, and each protected program differs in obfuscation method and Z or degree of obfuscation. Therefore, configure the program to have different code.
  • any one or more protected programs among the plurality of protected programs are different partial programs among the plurality of partial programs included in the original program as the obfuscation method. It may be configured to be a generated program by using a method for encrypting.
  • the one or more protected programs are encrypted partial programs, that is, the encrypted positions are different, a malicious user tries to analyze a plurality of times. However, analysis becomes difficult.
  • the one or more protected programs generated by encrypting the partial program are different encryption key algorithms and different partial program powers to be encrypted.
  • It may be configured to be a program encrypted using Z or a different encryption key. According to this configuration, since the one or more protected programs differ not only in the encrypted location but also in the encryption algorithm and encryption key, the analysis can be made more difficult.
  • any one or more of the protected programs among the plurality of protected programs may be dependent on each other among the plurality of instructions included in the original program as the obfuscation method.
  • the one or more protected programs are generated based on the parallelism of the original program, and it is possible to make analysis by a malicious user difficult while ensuring the same output result as the original program. .
  • any one or more of the protected programs among the plurality of protected programs may use an instruction included in the original program as a method of the obfuscation error processing different from the instruction. It may be configured to be a generated program by using a method of replacing with an identical instruction having one or more instruction powers that performs and outputs the same result as the instruction. According to this configuration, the one or more protected programs are generated using the identity instruction of the original program, while ensuring the same output result as the original program.
  • any one or more of the protected programs among the plurality of protected programs is a dummy instruction that is an instruction that does not affect the result of the original program as the obfuscation method. May be configured to be a generated program using the method of inserting into the original program! /.
  • the one or more protected programs are generated redundantly using dummy code, ensuring the same output result as the original program and making analysis by a malicious user difficult. Can do.
  • the secure processing device includes analysis detection means for determining whether or not the protected program is an analysis target when the execution means executes one protected program. It may be configured to provide.
  • the invalidation means invalidates the protected program at risk of exposing confidential information. be able to.
  • the debugger detection unit invalidates the detected debugger, and the debugger detection unit detects the debugger.
  • An instruction unit that instructs the execution unit to stop execution, and the execution unit receives an instruction to stop execution from the instruction unit. The execution of the protected program being executed may be immediately stopped.
  • the secure processing apparatus has a function of detecting a debugger. Further, by disabling the detected debugger, the protected program being executed is analyzed and kept secret. It can prevent the information that should be exposed.
  • the analysis detection unit includes a tampering detection unit that detects tampering of the protected program, and an instruction unit that instructs the execution unit to stop execution when tampering is detected by the tampering detection unit.
  • the execution means may be configured to stop the execution of the protected program upon receiving an execution stop instruction from the instruction unit.
  • the secure processing apparatus can execute a protected program other than the protected program for which tampering has been detected, and therefore, an unauthorized program without harming the interests of a bona fide user. Can be prevented.
  • the analysis detection unit may be configured to include a log information generation unit that generates analysis log information related to the analysis when it is determined that the protected program is an analysis target.
  • the secure processing device may be connected to an external server via a network
  • the log information generation unit may be configured to transmit the generated analysis log information to the external server.
  • the external server can analyze what analysis action has been performed.
  • a protected program that is more difficult to analyze can be generated.
  • the analysis detection means further holds a threshold value storage unit that stores a threshold value set to a predetermined numerical value, and the number of times that the protected program is determined to be analyzed, An analysis number counting unit that updates the number of times held for each determination.
  • the validation registration unit may be configured to register that the protected program is invalidated in the invalidation list when the number of times held by the analysis number counting unit exceeds the threshold. .
  • the protected program is invalidated only when the number of times of analysis exceeds a preset threshold value. Therefore, it is possible to prevent the protected program being executed immediately from being invalidated due to an accidental operation by a good-willed user. In addition, if the malicious user repeats the analysis, the number of analyzes exceeds the preset threshold and the protected program is invalidated, revealing information that should be kept confidential in the protected program. Can be prevented.
  • the selection means may be configured to refer to the invalidation list and randomly select one protected program that has not been invalidated.
  • the protected program to be selected that is, the protected program to be executed, is randomly determined each time, so that unauthorized analysis by a malicious user can be made difficult.
  • the selection means stores information for identifying the selected protected program, refers to the information and the invalidation list, is not selected, is invalidated, and there is no V. It may be configured to randomly select one protected program! /.
  • the protected program to be selected that is, the protected program to be executed is randomly determined each time and the protected program that has been executed once is not selected from the next time, a malicious user is selected. It is possible to make fraud analysis by using more difficult.
  • the selection means stores a predetermined selection order in advance, refers to the invalidation list, and selects one protected program that has not been invalidated according to the selection order. Do it.
  • the selection means stores obfuscation degree information indicating the degree of obfuscation of each protected program for the plurality of protected programs, and the obfuscation degree information and the obfuscation degree information It may be configured to refer to the invalidation list and select one protected program that has been invalidated so that it is executed in order of the degree of obfuscation and the protected program. ,.
  • the selection means stores obfuscation degree information indicating the degree of obfuscation of each protected program for the plurality of protected programs,
  • the obfuscation degree information may be configured to select one protected program that is invalidated so that the obfuscated program is executed in order from the low-protected program.
  • a protected program with a higher degree of obfuscation has a slower program execution speed, and a protected program with a higher degree of obfuscation has a higher program execution speed. Therefore, according to this configuration, it is possible to provide a secure processing device that is highly convenient for a bona fide user who does not intend to perform fraud analysis because the protected program power having a high execution speed is also executed.
  • the selection means may be configured to select one protected program that can be invalidated so that the protected program is executed in order of fast execution speed.
  • the secure processing device is connected via a network to a program update server that holds a protected program, and the selection means determines that the remaining number of protected programs that are not invalidated is
  • a determination unit that determines whether or not the threshold is equal to or less than a predetermined threshold; and when the determination unit determines that the threshold is equal to or less than the predetermined threshold, a new protected program is transmitted to the program update server. It may be configured to include: a requesting program requesting unit; and a program receiving unit that receives a new protected program from the program update server.
  • the secure processing device can acquire a new protected program from the program update server and secure the right to use the program of a bona fide user. it can.
  • the present invention is a secure processing system that is connected via a network and includes a secure processing device and a program update server, and the secure processing device obtains the same result as the original program.
  • the first storage means for storing a plurality of protected programs generated based on the original program, the invalidating means for invalidating the protected programs to be analyzed, and the plurality of the protected programs.
  • the program update server includes a second storage unit storing a plurality of protected programs, and a secure processing device for receiving a protected program.
  • Request receiving means for receiving a transmission request; and transmission means for reading one or more protected programs from the second storage means and transmitting them to the secure processing device when the request receiving means accepts the transmission request. It is characterized by providing.
  • the secure processing device receives a new protected program from the program update server. Gram can be obtained and the right to use the program of a bona fide user can be held.
  • FIG. 1 is a system configuration diagram showing a configuration of a secure processing system 1.
  • FIG. 2 is a functional block diagram functionally showing the configuration of the mobile phone 10.
  • FIG. 3 is a diagram showing protected programs stored in a program storage unit 111.
  • FIG. 4 is a diagram for explaining the features of a secure program.
  • FIG. 5 is a diagram for explaining the function of fraud analysis detecting section 116.
  • FIG. 6 is a diagram showing a data configuration of a falsification detection value table 410 held by a falsification detection unit 402.
  • FIG. 7 is a diagram showing a data configuration of fraud analysis log information 420.
  • FIG. 8 is a diagram showing a data structure of an invalidation list 500.
  • FIG. 9 is a functional block diagram functionally showing the configuration of the program update server 20.
  • FIG. 10 is a diagram showing protected programs stored in an update program storage unit 604.
  • FIG. 11 is a flowchart showing the overall operation of the secure processing system 1.
  • FIG. 12 is a flowchart showing protected program update processing in the secure processing system 1.
  • FIG. 13 is a flowchart showing the operation of program selection processing 1 in the secure processing system 1.
  • FIG. 14 is a flowchart showing the operation of program selection process 2 in secure processing system 1.
  • FIG. 15 is a flowchart showing processing at the time of fraud detection in the secure processing system 1.
  • FIG. 1 is a system configuration diagram showing the configuration of the secure processing system 1.
  • the secure processing system 1 includes a mobile phone 10, a program update server 20, and a network 30.
  • the mobile phone 10 is a portable phone that performs communication using radio waves.
  • the mobile phone 10 downloads the encrypted content and holds the downloaded encrypted content.
  • the mobile phone 10 holds an encrypted content decryption program for decrypting and reproducing the B-encoded content.
  • the encrypted content held by the mobile phone 10 is data generated by applying the encryption algorithm E to the music content.
  • the program update server 20 is connected to the mobile phone 10 via the network 30 and updates the encrypted content decryption program used for decrypting the encrypted content by the mobile phone 10.
  • a specific example of the network 30 is the Internet.
  • the cellular phone network and wireless base stations are omitted!
  • FIG. 2 is a functional block diagram functionally showing the configuration of the mobile phone 10.
  • the mobile phone 10 also includes an antenna 101, a transmission / reception unit 102, a communication control unit 103, a storage unit 104, a display unit 105, an operation unit 106, a speaker 107, a microphone 108, and a secure processing unit 109.
  • the antenna 101, the transmission / reception unit 102, the communication control unit 103, the storage unit 104, the display unit 105, the operation unit 106, the speaker 107, and the microphone 108 are functional blocks for achieving a function as a normal mobile phone.
  • the secure processing unit 109 is a characteristic functional block of the present invention.
  • the mobile phone 10 is specifically a computer system including a microprocessor, ROM, RAM, and the like.
  • the transmission / reception unit 102 performs a call, email transmission / reception, communication with the program update server 20 via the network 30, etc. via the antenna 101.
  • the communication control unit 103 stores a computer program for communication control. By executing the communication control computer program, the mouth setter controls communication functions such as a telephone call, mail transmission / reception, network connection, etc. of the mobile phone 10.
  • the storage unit 104 stores a telephone directory, a schedule book, transmitted / received e-mail data, downloaded encrypted content, and the like.
  • the display unit 105 includes a liquid crystal display, and displays various screens on the liquid crystal display.
  • the operation unit 106 includes a plurality of buttons and the like provided on the operation surface of the mobile phone 10, and receives input from the user by pressing the button.
  • the speaker 107 outputs sound, and the microphone 108 receives sound input.
  • the secure processing unit 109 includes a program storage unit 111, an execution program selection unit 112, a program load unit 113, a program load region 114, a program execution unit 115, a fraud analysis detection unit 116, an invalidation list storage unit 117, and an invalidation list update. Part 118.
  • the program storage unit 111 is configured by a Flash ROM, an EEPROM, or an HDD.
  • FIG. 3 is a diagram showing the inside of the program storage unit 111.
  • the program storage unit 111 includes a plurality of protected programs including a protected program A (201), a protected program B (202), ..., and a protected program C (203).
  • a protected program A 201
  • a protected program B 202
  • a protected program C 203.
  • Each protected program is given a program identifier. Specifically, the protected program A (201) has program identifier A: 0001 (211), the protected program B (202) has program identifier B: 0002 (212), and the protected program C (203). Is assigned a program identifier C: 0003 (213).
  • All protected programs stored in the program storage unit 111 are programs generated by obfuscating the original program 200, which is an encrypted content decryption program, and as shown in FIG.
  • the original program 200 and each protected program output the decryption content 303 having the same output value when the encrypted content 301 and the decryption key 302 are input values. It is assumed that the protected program in this embodiment includes a decryption key 3002.
  • obfuscation is the process of making a program complicated without changing its structural meaning. This is a technology aimed at making it difficult to analyze the program. Specifically, a part or all of the original program 200 is not encrypted or the execution of the original program 200 is not affected. Insert unnecessary dummy code, replace some code included in the original program 200 with equivalent code that is different from the part of the code but obtains the same result, or replace the original program It is realized by changing the order of codes that do not change even if the order is changed, dividing one module into multiple modules, and complicating the control structure. The
  • Each protected program is obfuscated by different methods, obfuscated by using different methods in different combinations, encrypted using different encryption algorithms and encryption keys,
  • Each program has a different binary code because different parts of the original program 200 are encrypted or obfuscated to different degrees.
  • the degree of obfuscation can be changed by changing the additional code size of the dummy code, the complicated pattern of the control structure, the number of module divisions, the strength of the encryption algorithm, etc.
  • the execution program selection unit 112 refers to the invalidation list 500 stored in the invalidation list storage unit 117 and selects one protected program that has not been invalidated.
  • the execution program selection unit 112 reads the program start address and program size of the selected protected program from the invalidation list, and notifies the program load unit 113 of the read program start address and program size.
  • the execution program selection unit 112 generates a random number using a random number generator, and selects a protected program to be executed based on the generated random number. Details of the protected program selection will be described later.
  • the execution program selection unit 112 sends the invalidation list update unit 118 to the invalidation list update unit 118.
  • the execution program selection unit 112 sends the invalidation list update unit 118 to the invalidation list update unit 118.
  • it requests download of a new protected program.
  • the program load unit 113 When the program load unit 113 receives the program start address and the program size from the execution program selection unit 112, the program load unit 113 loads the protected program into the program load area 114.
  • the program load area 114 is a RAM as a specific example in this embodiment.
  • the program execution unit 115 includes a microprocessor and executes the protected program loaded into the program load area 114.
  • the program execution unit 115 reads and reads the encrypted content from the storage unit 104 by executing the protected program.
  • the decrypted algorithm D is applied to the encrypted content using the content decryption key to decrypt the music content.
  • the program execution unit 115 outputs the decrypted music content to the speaker 107 via the communication control unit 103.
  • the decryption algorithm D is an algorithm for converting the ciphertext encrypted by applying the encryption algorithm E into plaintext.
  • the fraud analysis detection unit 116 includes a debugger detection unit 401, a falsification detection unit 402, and a fraud analysis notification unit 403 as shown in FIG.
  • the debugger detection unit 401 has a function of detecting an in-circuit emulator (registered trademark) and a software debugger during execution of the protected program by the program execution unit 115.
  • the debugger detection unit 401 detects the debugger, it disables the debugger, for example, by disconnecting the debugger interface.
  • the debugger detection unit 401 notifies the fraud analysis notifying unit 403 that fraud analysis has been detected.
  • the falsification detection unit 402 stores in advance a falsification detection value table 410 shown in FIG.
  • the falsification detection value table 410 includes falsification detection value information 411, 412,... 413, and each falsification detection value information includes a program identifier and a falsification detection value for determination.
  • the program identifier is information for uniquely identifying the protected program.
  • the determination falsification detection value is a value calculated in advance using a one-way function for the protected program identified by the associated program identifier, and is data used to determine whether or not falsification has occurred. .
  • the falsification detection value table 410 is stored in the program storage unit 111 and includes falsification detection value information corresponding to each protected program on a one-to-one basis for all protected programs. It is out.
  • the falsification detection value information 411 includes the program identifier “0001” and the falsification for determination. Includes detection value “detection value A”. Since the program identifier “0001” is a program identifier corresponding to the protected program A (201), the determination falsification detection value “detection value A” determines whether the protected program A (201) has been tampered with. This data is used for this purpose.
  • the falsification detection value information 412 includes a program identifier “0002” and a falsification detection value for detection “detection value B”. Since the program identifier “0002” is a program identifier corresponding to the protected program B (202), the falsification detection value “detection value B” is used to determine whether the protected program B (202) has been falsified. Data used.
  • the falsification detection value information 413 includes a program identifier “0003” and a falsification detection value for detection “detection value C”. Since the program identifier “0003” is a program identifier corresponding to the protected program C (203), the falsification detection value “detection value C” is used to determine whether the protected program C (203) has been falsified. Data used.
  • the falsification detection unit 402 When the falsification detection unit 402 receives a determination falsification detection value and a program identifier from the invalidation list update unit 118 as a new protected program is downloaded, the falsification detection value table 410 Register with.
  • the falsification detection unit 402 calculates a falsification detection value using a one-way function for the loaded protected program. The falsification detection unit 402 determines whether or not the calculated falsification detection value matches the falsification detection value for determination described in the falsification detection value table 410. If they match, it is determined that the protected program loaded into the program load area 114 has not been altered! / ⁇ , and if not, it is determined that the protected program has been tampered. When the falsification detection unit 402 detects falsification of the protected program, the falsification analysis notification unit 403 notifies the fraud analysis notification unit 403 that fraud analysis has been detected.
  • the falsification detection value for determination and the falsification detection value shall be calculated using SHA (Secure Hash Algorithm)-1 as an example.
  • the fraud analysis notification unit 403 Upon receiving notification that the fraud analysis has been detected from the debugger detection unit 401 and the falsification detection unit 402, the fraud analysis notification unit 403 instructs the program execution unit 115 to stop executing the program, and Generate fraud analysis log information.
  • the fraud analysis notifying unit 403 transmits the generated fraud analysis log information to the communication control unit 103, the transmission / reception unit 102, the antenna 101, and the network. It is transmitted to the program update server 20 via the network 30.
  • FIG. 7 is a diagram showing a data configuration of fraud analysis log information 420 generated by fraud analysis notifying unit 403.
  • the fraud analysis log information 420 includes a program identifier field 421, a fraud analysis detection code field 422, a general-purpose register value field 423, a stack pointer field 424, a link register field 425, and a program counter field 426.
  • a program identifier for identifying a protected program executed by the program execution unit 115 upon detection of fraud analysis is described.
  • the fraud analysis detection code column 422 a fraud analysis detection code indicating which of the force debugger detection unit 401 and the falsification detection unit 402 detects the fraud analysis is described.
  • the unauthorized analysis detection code is set to “1” when the debugger detection unit 401 detects a debugger, and is set to “2” when the tampering detection unit 402 detects tampering.
  • the general-purpose register value column 423, stack pointer column 424, link register column 425, and program counter column 426 each value of the register file inside the microprocessor at the time of debugger detection is described.
  • the fraud analysis notifying unit 403 uses the value indicating the status of the debug register, the address value set in the debug register, etc. as fraud analysis log information. May be described.
  • the invalidation list storage unit 117 holds an invalidation list 500 shown in FIG.
  • the invalidation list 500 includes a plurality of program invalidation information, and each program invalidation information includes a program identifier, a program start address, a program size, and invalidation flag power.
  • the program identifier is information for uniquely identifying the protected program.
  • the program start address indicates the recording start position of the corresponding protected program in the program storage unit 111
  • the program size is information indicating the data size of the protected program.
  • the invalidation flag is information indicating whether or not the corresponding protected program has been invalidated, and is set to either “0” or “1”. “0” indicates that the protected program has not been disabled, and “1” indicates that the protected program has been disabled.
  • the invalidation list 500 is stored in the program storage unit 111.
  • it contains program invalidation information corresponding to each protected program.
  • the program invalidation information 501 corresponds to the protected program A (201)
  • the program invalidation information 502 corresponds to the protected program B (202)
  • the program invalidation information 503 is This corresponds to protected program C (203).
  • the invalidation list update unit 118 When the invalidation list update unit 118 receives a download request for the protected program from the execution program selection unit 112, the invalidation list update unit 118 sends the received download request to the communication control unit 103, the transmission / reception unit 102, the antenna 101, and the network 30. To the program update server 20. The invalidation list update unit 118 sends the protected program and the determination falsification detection value transmitted from the program update server 20 in response to the download request to the network 30, the antenna 101, the transmission / reception unit 102, and the communication control unit. Receive via 103. The invalidation list updating unit 118 writes the received protected program to the program storage unit 111, and the received alteration detection value for determination and the program identifier for identifying the protected program are modified by the fraud analysis detecting unit 116. Output to the detection unit 402.
  • the invalidation list updating unit 118 updates the invalidation list 500 stored in the invalidation list storage unit 117 in the following cases.
  • FIG. 9 is a functional block diagram functionally showing the configuration of the program update server 20.
  • the program update server 20 includes a transmission / reception unit 601, a control unit 602, an unauthorized analysis log information storage unit 603, and an update program storage unit 604.
  • the program update server 20 includes a microprocessor, ROM, RAM, and hard disk. A computer system in which unit isotropic forces are also configured.
  • the transmission / reception unit 601 is a network connection unit, receives information transmitted from the mobile phone 10 via the network 30, and outputs the received information to the control unit 602. In addition, the transmission / reception unit 601 receives the information output from the control unit 602 and transmits the received information to the mobile phone 10 via the network 30.
  • the control unit 602 controls the entire program update server 20. Specifically, when receiving a download request for a protected program from the mobile phone 10 via the transmission / reception unit 601 and the network 30, the control unit 602 determines that the program is a protected program from the update program storage unit 604. The tampering detection value is read, and the read protected program and the judgment tampering detection value are output to the transmission / reception unit 601. Further, when receiving the fraud analysis log information from the mobile phone 10 via the transmission / reception unit 601 and the network 30, the control unit 602 writes the received fraud analysis log information in the fraud analysis log information storage unit 603.
  • the fraud analysis log information storage unit 603 stores the fraud analysis log information transmitted from the mobile phone 10.
  • FIG. 10 is a diagram showing the inside of the update program storage unit 604.
  • the update program storage unit 604 includes a plurality of protected programs including a protected program X (611), a protected program Y (612), ..., a protected program Z (613). I remember the protection program.
  • a program identifier is assigned to each protected program. Specifically, the protected program ⁇ (611) has a program identifier X: 1001 (621), the protected program ⁇ (61 2) has a program identifier ⁇ : 1002 (622), and the protected program ⁇ (613) Is given the product identifier ⁇ : 1003 (623)!
  • each protected program stored in the update program storage unit 604 is stored in the program storage unit 111 of the mobile phone 10 and obfuscates the original program 200 in the same manner as the protected program.
  • Each of the generated programs has different nounary codes and has the properties shown in FIG.
  • the protected program ⁇ (61 1), the protected program ⁇ (612), ..., the protected program ⁇ ⁇ ⁇ (613) takes the encrypted content 301 and the content decryption key 302 as input values.
  • Decrypted content 303 Is output.
  • the update program storage unit 604 stores the determination falsification detection value in association with each protected program.
  • protected program X corresponds to judgment falsification detection value X (631)
  • protected program Y corresponds to judgment falsification detection value Y (632 )
  • protected program ⁇ corresponds to judgment falsification detection value ⁇ (633).
  • Each determination falsification detection value is a value calculated in advance using a one-way function in the corresponding protected program, and is data used to determine whether the corresponding protected program has been tampered with. .
  • FIG. 11 is a flowchart showing the overall operation of the secure processing system 1. The operation shown here is started when a request for decryption of the encrypted content is generated in the mobile phone 10.
  • the execution program selection unit 112 of the mobile phone 10 reads the invalidation list 500 stored in the invalidation list storage unit 117 (step S101).
  • the execution program selection unit 112 reads the invalidation flag in the invalidation list 500 and determines whether or not all protected programs stored in the program storage unit 111 are invalidated (step S 102). ).
  • step S102 If all protected programs are disabled (YES in step S102), that is, if all the invalidation flags in the invalidation list 500 are set to "1", the mobile phone 10 The protected program is updated (step S103). If there is a protected program that has not been invalidated, that is, if there is an invalidation flag set to “0” in the invalidation list 500 (NO in step S102), the execution program selection unit 112 Then, the protected program selection process is performed, and one protected program is selected (step S104).
  • the program load unit 113 loads the one protected program selected in step S104 from the program storage unit 111 to the program load area 114 (step S105).
  • the falsification detection unit 402 of the fraud analysis detection unit 116 calculates a falsification detection value of the protected program imported to the program load area 114 (step S106). If tampering of the protected program is detected (YES in step S107), that is, if the tampering detection value calculated in step S106 does not match the judgment tampering detection value held in advance, step S112 Proceed to
  • step S107 In the case where no falsification of the protected program is detected (NO in step S107), that is, the falsification detection value calculated in step S106 matches the judgment falsification detection value held in advance.
  • the program execution unit 115 starts execution of the protected program loaded in step S105 (step S108).
  • the program execution unit 115 continues to execute the protected program.
  • step S109 If the debugger detection unit 401 detects a debugger during execution of the protected program (YES in step S109), the debugger detection unit 401 invalidates the debugger and proceeds to step S111.
  • the falsification detection unit 402 that has detected the falsification and the debugger detection unit 401 that has detected the debugger notify the fraud analysis notification unit 403 of the fact, and the fraud analysis notification unit 403 cancels the execution to the program execution unit 115. Instruct. Thereafter, the program execution unit 115 executes! And stops the execution of the protected program (step S112).
  • Fraud analysis notification unit 403 performs fraud analysis notification processing (step S113), and mobile phone 10 ends the processing.
  • FIG. 12 is a flowchart showing the operation of the protected program update process. The operation shown here is the details of step S103 in the flowchart shown in FIG.
  • the execution program selection unit 112 of the mobile phone 10 generates a download request for requesting a download of a new protected program (step S201).
  • the execution program selection unit 112 outputs the generated download request to the invalidation list update unit 118.
  • the invalidation list update unit 118 includes the communication control unit 103, the transmission / reception unit 102, the antenna 101, and the network.
  • the download request is transmitted to the program update server 20 via the network 30, and the transmission / reception unit 601 of the program update server 20 receives the download request (step S202).
  • control unit 602 of the program update server 20 When receiving the download request from the transmission / reception unit 601, the control unit 602 of the program update server 20 reads out the protected program and the determination falsification detection value from the update program storage unit 604 (step S 203). The control unit 602 outputs the read protected program and the determination falsification detection value to the transmission / reception unit 601.
  • the transmission / reception unit 601 transmits the protected program and the falsification detection value for determination to the mobile phone 10 via the network 30, and the transmission / reception unit 102 of the mobile phone 10 determines that the program is a protected program via the antenna 101.
  • the falsification detection value is received (step S204).
  • the invalidation list update unit 118 generates program invalidation information related to the protected program received in step S204, and the generated program invalidation information is stored in the invalidation list storage unit 117. Is registered in the invalidation list 500 (step S205).
  • the invalidation list updating unit 118 outputs the determination falsification detection value and the program identifier received in step S204 to the falsification detection unit 402 of the fraud analysis detection unit 116, and the falsification detection unit 402
  • the falsification detection value is associated with the program identifier and registered in the falsification detection value table 410 (step S 206).
  • the invalidation list update unit 118 writes the protected program received in step S 204 to the program storage unit 111 (step S 207). When the writing is completed (step S 208), the invalidation list update unit 118 returns to step S 104 in FIG. Continue return processing.
  • FIG. 13 is a flowchart showing the operation of the program selection process 1. The operation shown here is the details of step S104 in the flowchart shown in FIG.
  • the execution program selection unit 112 refers to the invalidation list 500 stored in the invalidation list storage unit 117 and registers the total number of program invalidation information registered in the invalidation list 500, that is, the program The total number of protected programs stored in the storage unit 111 is N (step S301).
  • the execution program selection unit 112 is an integer range from 1 to N using a random number generator. Then, the random number r is generated (step S302). The execution program selection unit 112 reads the invalidation flag included in the program invalidation information located in the r-th upper force among the N pieces of program invalidation information included in the invalidation list 500 (step S303).
  • step S304 When the invalidation flag is set to 1! (YES in step S304), since the corresponding protected program is invalidated, the execution program selection unit 112 selects the protected program. Since it cannot, return to step S302 and continue the process of selecting another protected program.
  • the execution program selection unit 112 selects the r-th protected program (step S305).
  • the execution program selection unit 112 reads the program identifier, program start address, and program size related to the selected protected program from the invalidation list, and reads the read program identifier, program start address, and program size into the program.
  • the load unit 113 is notified (step S306). Thereafter, the process returns to step S105 in FIG. 11 to continue the processing.
  • the program selection process 2 is a modification of the program selection process 1 described above, and corresponds to the details of step S104 in the flowchart shown in FIG.
  • the execution program selection unit 112 refers to the invalidation list 500 stored in the invalidation list storage unit 117 and refers to the total number of program invalidation information registered in the invalidation list 500, that is, the program storage unit. Let N be the total number of protected programs stored in 111 (step S401).
  • the execution program selection unit 112 holds a random number list therein.
  • the random number list is a list in which random numbers already generated by the random number generator are registered.
  • the execution program selection unit 112 refers to the random number list (step S402) and counts the total number of random numbers registered in the random number list. If the total number of random numbers registered in the random number list is N (step S In step 403, YES, the execution program selection unit 112 clears the random number list stored therein (step S404).
  • the execution program selection unit 112 If the total number of random numbers registered in the random number list is less than N (NO in step S403), the execution program selection unit 112 generates a random number r in the integer range from 1 to N by the random number generator. (Step S405). The execution program selection unit 112 determines whether or not the random number r generated in step S405 is already registered in the random number list.
  • step S406 If the random number r has already been registered in the random number list (YES in step S406), the execution program selecting unit 112 returns to step S401 and continues the processing. If the random number r force is not registered in the random number list (NO in step S406), the random number r generated in step S405 is registered in the random number list (step S407).
  • the execution program selection unit 112 reads the invalidation flag included in the program invalidation information located at the r-th position from the top among the N pieces of program invalidation information included in the invalidation list 500 (Step S408). ).
  • step S409 If the invalidation flag is set to 1! (YES in step S409), the corresponding protected program has been invalidated, and the execution program selection unit 112 selects the protected program. Therefore, return to step S401 and continue processing.
  • the execution program selection unit 112 selects the r-th protected program (step S410).
  • the execution program selection unit 112 reads the program identifier, program start address, and program size related to the selected protected program from the invalidation list, and reads the read program identifier, program start address, and program size into the program.
  • the load unit 113 is notified (step S411). Thereafter, the process returns to step S105 in FIG. 11 to continue the processing.
  • the fraud analysis notifying unit 403 of the fraud analysis detecting unit 116 acquires the program identifier of the protected program that has been loaded into the program load area 114 via the program execution unit 115. Obtain (step S501).
  • the fraud analysis notifying unit 403 determines whether the fraud analysis has been detected by the debugger detecting unit 401 or the falsification detecting unit 402.
  • the debugger detection unit 401 detects the unauthorized analysis (“debugger detection” in step S502)
  • the unauthorized analysis notification unit 403 sets the unauthorized analysis detection code to “1” (step S503).
  • the fraud analysis notifying unit 403 acquires each value of the general-purpose register, stack pointer, link register, and program counter from the register file included in the program execution unit 115 (step S504).
  • the tampering analysis notifying unit 403 sets the tampering detection code to "2" (step S505)
  • the notification unit 403 describes the acquired program identifier in the program identifier column 421 of the fraud analysis log information 420, and further sets the fraud analysis detection code set to either “1” or “2” to the fraud analysis detection code column. Describe in 422.
  • the illegal analysis notifying unit 403 acquires each value of the register file in step S504
  • the illegal analysis notifying unit 403 converts the acquired values into the general-purpose register value column 423, the stack pointer column 424, the link analysis column information 424, and the link Described in each column of the register column 425 and the program counter column 426
  • the fraud analysis log information 420 is generated (step S506).
  • the fraud analysis notifying unit 403 transmits the generated fraud analysis log information 420 to the program update server 20 via the communication control unit 103, the transmission / reception unit 102, the antenna 101, and the network 30, and the program update server 20 receives the fraud analysis log information 420 (step S507) o
  • the control unit 602 of the program update server 20 Upon receiving the fraud analysis log information 420 from the transmission / reception unit 601, the control unit 602 of the program update server 20 writes the received fraud analysis log information 420 into the fraud analysis log information storage unit 603, and the fraud analysis log information storage unit 603 Stores the fraud analysis log information 420 (step S508).
  • the fraud analysis notifying unit 403 of the mobile phone 10 notifies the invalidation list updating unit 118 of detection of fraud analysis together with the program identifier acquired in step S501 (scheduling). Step S509).
  • the invalidation list update unit 118 sets the invalidation flag of the program invalidation information identified by the accepted program identifier from the invalidation list to “1” (step S510). Then return to the flowchart in Figure 11.
  • the protected program in the present invention may be a program generated by performing obfuscation processing on the entire original program, or a program generated by performing obfuscation processing on a part of the original program. Even so.
  • the program storage unit 111 of the mobile phone 10 has a configuration for storing a plurality of protected programs each having a different binary code.
  • the program storage unit 111 is a binary It is not essential to store a protected program that is a code.
  • a configuration may be adopted in which a protected program that is a source program with different obfuscation is stored.
  • the program execution unit 115 may be configured to execute each protected program using an interpreter.
  • the tampering detection unit 402 of the mobile phone 10 has a configuration for performing tampering detection using a one-way function, but the tampering detection method in the present invention is not limited to the one-way function.
  • an encrypted protected program obtained by encrypting each protected program is stored in advance, and the protected program selected by the execution program selecting unit 112 is subjected to the same encryption process.
  • a method of detecting the presence or absence of falsification by comparing the result of the comparison with an encrypted protected program stored in advance may be used.
  • the execution program selection unit 112 of the mobile phone 10 is invalidated by executing the program selection process 1 shown in FIG. 13 or the program selection process 2 shown in FIG.
  • the method for selecting a protected program in the present invention is not limited to these, and the present invention includes the following cases, for example.
  • the execution program selection unit 112 may store a predetermined selection order in advance, and may select a protected program to be executed according to the selection order. Specifically, the execution program selection unit 112 stores program identifiers arranged according to the selection order, and when a decryption request for encrypted content is generated, the execution program selection unit 112 sets the selection order. Read the upper program identifier. Subsequently, the execution program selection unit 112 reads the invalidation list 500 from the invalidation list storage unit 117, and determines whether the protected program identified by the previously read program identifier has been invalidated. to decide. If it is not invalidated, the protected program is selected, and the program start address and program size are notified to the program load unit 113. If it is invalidated, the execution program selection unit 112 reads the program identifier with the next selection order and repeats the above processing. As described above, the execution program selection unit 112 selects one protected program that is not invalidated according to a predetermined selection order.
  • the execution program selection unit 112 stores a selection order according to the degree of obfuscation of each protected program in advance, and may select a protected program to be executed according to the selection order. .
  • the degree of obfuscation of each protected program depends on the additional size of the dummy code, the complicated pattern of the control structure, and the number of module divisions.
  • the execution program selection unit 112 stores program identifiers in descending order of the degree of obfuscation, and when a decryption request for encrypted content occurs, the execution program selection unit 112 determines the upper level, that is, the degree of obfuscation. Reads the program identifier of the protected program with the highest value. Thereafter, the execution program selection unit 112 performs the same processing as in (a), and selects one protected program that is not obfuscated and the protected program power is invalidated in order.
  • the execution program selection unit 112 may be configured to select one protected program that is not invalidated in order of the protected program power with a low degree of obfuscation. This is because a protected program with a higher degree of obfuscation generally has a lower execution speed. Therefore, for a bona fide user who does not perform fraud analysis, a program with a high execution speed, that is, a low degree of obfuscation. This is because it is desirable to select programs with priority. [0090] Alternatively, one protected program that is not invalidated may be selected in order of increasing actual execution speed regardless of the degree of obfuscation.
  • the execution program selection unit 112 may store information indicating the execution speed of each protected program in association with the program identifier for identifying each protected program, and the mobile phone 10 may be protected. Each time you download a protection program, you can configure it to perform a test run and measure the execution speed of the downloaded protected program.
  • the tamper detection unit 402 has a configuration that calculates a tamper detection value when the protected program is loaded into the program load area 114, and determines whether or not tampering has occurred.
  • the tampering detection of the protected program in the invention may be performed on the program stored in the program storage unit 111 before the protected program is loaded, or may be performed before the execution of the protected program. Or it may be done periodically while the loaded program is running.
  • the fraud analysis notifying unit 403 of the fraud analysis detecting unit 116 receives a notification that fraud analysis has been detected from either the debugger detecting unit 401 or the falsification detecting unit 402.
  • the program execution unit 115 is unconditionally instructed to stop the execution of the protected program, and the fraud analysis log information is created.
  • the present invention include.
  • the fraud analysis notifying unit 403 holds a threshold value indicating a predetermined number in advance.
  • the fraud analysis notification unit 403 counts the number of times each time it receives notification from the debugger detection unit 401 and the falsification detection unit 402 that fraud analysis has been detected. When the number of counts exceeds the stored threshold, the fraud analysis detection unit 403 instructs the program execution unit 115 to stop execution of the protected program and creates fraud analysis log information. May be configured. As a result, it is possible to prevent an erroneous operation of a bona fide user from being determined as an unauthorized analysis and immediately stopping the program being executed.
  • the protected program in which the fraud analysis is detected is invalidated by rewriting the invalidation flag in the invalidation list from “0” to “1”.
  • the invalidation of the program according to the present invention includes clearing the protected program in the program storage unit 111 in addition to rewriting the invalidation flag.
  • the program may not be actually executed by overwriting the memory with random number data. In this way, by disabling the protected program that may have been analyzed, it is possible to reduce the risk that the protected program that should have been invalidated due to a user malfunction or the like is executed again.
  • the program invalidation information may be deleted from the invalidation list.
  • the program invalidation information By deleting the program invalidation information from the invalid key list, the information related to the address of the invalidated protected program is deleted, so the protected program that should have been invalidated due to a user malfunction etc. Can reduce the risk of being executed again.
  • the invalidation list in the present invention may include signature data issued by a valid institutional force.
  • the execution program selection unit 112 reads the invalidation list in step S101 (FIG. 11), verifies the signature data, and if the verification of the signature data is successful, continues the processing from step S102. However, if the verification of the signature data fails, that is, if the invalidation list is invalid, the processing from step S102 onward may not be performed. According to this configuration, the protected program is disabled. Invalidation It can be determined that the list has not been invalidated by falsification of the list, and execution can be prevented.
  • the protection target program is only the original program 200 that is an encrypted content decryption program.
  • a plurality of protection target programs may exist.
  • the invalidation list storage unit 117 stores an invalidation list for each protection target program.
  • the mobile phone 10 is connected from the program update server 20 to the down port.
  • the protected program that has been loaded may be overwritten in the area where the protected protected program in the program storage unit 111 is invalidated, or stored in another area in the program storage unit 111. May be. This makes it possible to erase the protected protected program and add a new protected program at a time. Further, since the storage area of the protected program that has been invalidated is reused as the storage area of a new protected program to be added, the capacity of the program storage unit 111 can be used effectively.
  • the mobile phone 10 determines that all protected programs stored in the program storage unit 111 are invalidated, and then starts a new one from the program update Sano.
  • this configuration is not essential, and the timing for downloading the protected program from the program update server is not particularly limited. For example, each time one protected program is invalidated, the mobile phone 10 may download a new protected program from the program update server 20.
  • the mobile phone 10 is stored in the program storage unit 111, and all the protected programs are not invalidated, and there is an effective protected program remaining.
  • a new protected program may be downloaded from the program update server 20. For example, when the number of effective protected programs stored in the program storage unit 111 falls below a predetermined number, the mobile phone 10 holds the past selection history and the same protected program is selected. It may be configured to download a new protected program when the probability exceeds a predetermined value.
  • the mobile phone 10 since the mobile phone 10 acquires a new protected program when the number of effective protected programs decreases, the mobile phone 10 randomly selects the protected program to be executed to some extent. Can be guaranteed.
  • communication between the mobile phone 10 and the program update server 20 establishes a secure communication path, so-called SAC (Secure Authentication Channel), and download processing of the protected program via the SAC, It may be configured to send and receive fraud analysis log information.
  • SAC Secure Sockets Layer
  • SSL Secure Sockets Layer
  • 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 that also has the computer program power.
  • the present invention provides a computer-readable recording medium for the computer program or the digital signal, for example, a flexible disk, a hard disk, a CD ROM, a MO, a DVD, a DVD-ROM, a DVD RAM, a BD (Blu-ray Disc). It may be recorded in a semiconductor memory or the like. Further, the present invention may be the computer program or the digital signal recorded on these recording media.
  • a computer-readable recording medium for the computer program or the digital signal for example, a flexible disk, a hard disk, a CD ROM, a MO, a DVD, a DVD-ROM, a DVD RAM, a BD (Blu-ray Disc). It may be recorded in a semiconductor memory or the like. Further, the present invention may be the computer program or the digital signal recorded on these recording media.
  • the present invention may be configured such that the computer program or the digital signal is transmitted via an electric communication line, a wireless or wired communication line, a network typified by the Internet, or the like.
  • the present invention may also be a computer system including a microprocessor and a memory.
  • the memory may store the computer program, and the microprocessor may operate according to the computer program.
  • the present invention also includes the case where part or all of the functional blocks of the mobile phone 10 and the program update server 20 in the above embodiment are implemented as an LSI that is an integrated circuit. These may be individually chipped, or may be chipped to include some or all of them. Here, it may be called IC, system LSI, super LSI, unoretra LSI, depending on the difference in power integration of LSI.
  • the method of circuit integration is not limited to LSI, and may be realized with a dedicated circuit. You can use an FPGA (Field Programmable Gate Array) that can be programmed after manufacturing LSI or a reconfigurable processor that can reconfigure the connection and settings of circuit cells inside the LSI.
  • FPGA Field Programmable Gate Array
  • the present invention can be used as a mechanism for preventing exposure of information to be concealed by fraud analysis in a service industry that distributes digital content.
  • the present invention can be used for IJ even in the manufacturing industry that produces playback devices for playing back digital content.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

 プログラム記憶部111には、複数の被保護プログラムが記憶されており、無効化リスト記憶部117には、無効化されている被保護プログラムの情報が記憶されている。実行プログラム選択部112は、無効化リストを参照して、無効化されていない1の被保護プログラムを選択する。実行前、又は実行中の被保護プログラムについて、不正解析が検出されると、不正解析検出部116は、前記被保護プログラムの実行を中止させ、無効化リスト更新部118は、無効化リストに前記被保護プログラムが無効化されている旨を登録する。

Description

明 細 書
セキュア処理装置、及びセキュア処理システム
技術分野
[0001] 本発明は、プログラムの不正な改ざんや解析を防止する技術に関する。
背景技術
[0002] PCや携帯電話機を用いて視聴するための有料のデジタルコンテンツが配信されて いるが、不正コピーを防止するために、デジタルコンテンツは暗号ィ匕されて配信され る。そのため、デジタルコンテンツを再生するためのプログラムは、暗号ィ匕を解くため の暗号鍵を含んでいる。従って、不正解析を目的とする悪意のユーザが再生用のプ ログラムを解析して、暗号鍵を特定することができれば、デジタルコンテンツを不正に コピーされてしまう。
[0003] このようなプログラムの解析を防止する技術は、従来力も存在しており、解析防止の 技術が施されたプログラムに対し、悪意のユーザは、一般的に毎回異なる不正解析 の手法を試行しながら徐々に解析を進めていき、最終的に暗号鍵等の秘密情報を 取得する。そこで、不正解析を検出すると、それ以降プログラムの実行を不可能にす ることで、そのプログラムに対して不正解析が繰り返されることを防ぐ技術がある。 発明の開示
発明が解決しょうとする課題
[0004] しかしながら、プログラムの不正な解析、及び改ざんを行う意図の無い善意のユー ザの誤操作が、不正な解析、及び改ざんとして検出される場合がある。このような場 合、上記の従来技術では、プログラムの実行が不可能になり、以後、そのプログラム を利用することができなくなる。これは、善意のユーザにとって不利益となる。
本発明は、上記の問題点に鑑みなされたものであって、プログラムの不正解析の防 止と、善意のユーザにとっての利便性とを両立することができるセキュア処理システム を提供することを目的とする。
課題を解決するための手段
[0005] 上記の目的を達成するために、本発明は、セキュア処理装置であって、オリジナル プログラムと同一の結果が得られるように、前記オリジナルプログラムに基づき生成さ れた複数の被保護プログラムを記憶して 、るプログラム記憶手段と、解析の対象とさ れた被保護プログラムを無効化する無効化手段と、前記複数の被保護プログラムか ら、無効化されていない 1の被保護プログラムを選択する選択手段と、選択された 1の 被保護プログラムを実行する実行手段とを備えることを特徴とする。
発明の効果
[0006] 上記の構成によると、解析の対象とされた被保護プログラムを無効化することにより 、悪意のユーザにより同一の被保護プログラムに対する解析が再試行されるのを防 止することができる。更に、当該セキュア処理装置は、複数の被保護プログラムを記 憶しているため、解析の対象とされた被保護プログラムが無効化された場合であって も、無効化されていない他の被保護プログラムを実行することにより、善意のユーザ のプログラムを利用する権利を担保することができる。
[0007] ここで、前記セキュア処理装置は、前記実行手段が 1の被保護プログラムを実行す る際に、前記被保護プログラムが解析の対象とされているか否かを判断する解析検 出手段を備え、前記無効化手段は、無効化されている被保護プログラムを示す無効 ィ匕リストを記憶する無効化リスト記憶部と、前記解析検出手段により、前記被保護プロ グラムが解析の対象とされていると判断されると、前記無効化リストに、前記被保護プ ログラムが無効化された旨を登録する無効化登録部とを備えるように構成してもよい
[0008] この構成によると、無効化リスト記憶部が無効化リストを記憶していることにより、選 択手段は、無効化された被保護プログラムを識別可能であり、実行すべき被保護プ ログラムとして、無効化されていない被保護プログラムを選択することができる。また、 解析検出手段により、解析の対象となった被保護プログラムが検出されると、無効化 登録部により無効化リストが更新されるので、選択手段は、常に新しい無効化リストを 参照して、無効化されて 、な 、被保護プログラムを選択することができる。
[0009] ここで、前記無効化リストは、当該無効化リストの正当性を証明するための署名デー タが付加されており、前記選択手段は、前記無効化リストに付加されている前記署名 データを検証し、前記署名データの検証の結果、前記無効化リストの不正が検出さ れた場合には、被保護プログラムの選択処理を中止するように構成してもよ 、。
この構成によると、不正解析を試みる悪意のユーザにより、無効化リストが改ざんさ れた場合であっても、署名データを検証することにより、無効化リストの改ざんの有無 を判断することが可能となる。また、無効化リストの改ざんが検出された場合には、全 ての被保護プログラムの実行を中止することができ、不正解析を防止することができ る。
[0010] ここで、前記複数の被保護プログラムは、オリジナルプログラムを難読ィ匕した難読ィ匕 プログラムであって、各被保護プログラムは、難読化の方法及び Z又は難読化の程 度がそれぞれ異なることにより、異なるコードを有するプログラムであるように構成して ちょい。
この構成によると、悪意のユーザによる被保護プログラムの解析を困難にすることが できる。
[0011] ここで、前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、前 記難読ィ匕の方法として、前記オリジナルプログラムに含まれる複数の部分プログラム の内、異なる部分プログラムを暗号ィ匕する方法を用い、生成されたプログラムであるよ うに構成してもよい。
この構成によると、前記 1以上の被保護プログラムは、暗号ィ匕されている部分プログ ラム、即ち暗号化されている位置が異なるために、悪意のユーザが複数回解析を試 みた場合であっても、解析が困難となる。
[0012] ここで、部分プログラムを暗号ィ匕することにより生成された前記 1以上の被保護プロ グラムは、暗号ィ匕の対象である各部分プログラム力 異なる暗号ィ匕アルゴリズム及び
Z又は異なる暗号鍵を用いて暗号ィ匕されたプログラムであるように構成してもよ 、。 この構成によると、前記 1以上の被保護プログラムは、暗号ィ匕されている位置が異な るだけでなぐ暗号ィ匕のアルゴリズムや暗号鍵も異なるため、更に解析を困難にする ことができる。
[0013] ここで、前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、前 記難読ィ匕の方法として、前記オリジナルプログラムに含まれる複数の命令の内、相互 に依存関係にな 、命令である並列命令の実行順序を入れ替える方法を用い、生成 されたプログラムであるように構成してもよ!/、。
この構成によると、前記 1以上の被保護プログラムは、オリジナルプログラムの並列 性に基づき生成されており、オリジナルプログラムと同一の出力結果を担保しつつ、 悪意のユーザによる解析を困難にすることができる。
[0014] ここで、前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、前 記難読ィ匕の方法として、前記オリジナルプログラムに含まれる命令を、当該命令と異 なる処理を行い、且つ当該命令と同一の結果を出力する 1以上の命令力 なる恒等 命令に置き換える方法を用い、生成されたプログラムであるように構成してもよ 、。 この構成によると、前記 1以上の被保護プログラムは、オリジナルプログラムの恒等 命令を用いて生成されており、オリジナルプログラムと同一の出力結果を担保しつつ
、悪意のユーザによる解析を困難にすることができる。
[0015] ここで、前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、前 記難読ィ匕の方法として、前記オリジナルプログラムの結果に影響を与えな 、命令で あるダミー命令を、前記オリジナルプログラムに挿入する方法を用い、生成されたプロ グラムであるように構成してもよ!/、。
この構成によると、前記 1以上の被保護プログラムは、ダミーコードを用いて冗長化 して生成されており、オリジナルプログラムと同一の出力結果を担保しつつ、悪意の ユーザによる解析を困難にすることができる。
[0016] ここで、前記セキュア処理装置は、前記実行手段が 1の被保護プログラムを実行す る際に、前記被保護プログラムが解析の対象とされているか否かを判断する解析検 出手段を備えるように構成してもよ 、。
この構成〖こよると、解析検出手段が被保護プログラムの解析の可能性を検出するこ とにより、無効化手段は、秘密の情報が暴露される危険のある被保護プログラムを無 効ィ匕することができる。
[0017] ここで、前記解析検出手段は、前記実行手段による被保護プログラムの実行中に デバッガを検出すると、検出したデバッガを無効化するデバッガ検出部と、前記デバ ッガ検出部によりデバッガが検出されると、前記実行手段に対し、実行中止を指示す る指示部とを備え、前記実行手段は、前記指示部から実行中止の指示を受け付ける と、実行中である前記被保護プログラムの実行を即座に中止するように構成してもよ い。
[0018] この構成〖こよると、当該セキュア処理装置は、デバッガを検出する機能を有し、更に 、検出したデバッガを無効化することにより、実行中の被保護プログラムが解析され、 秘匿にすべき情報が暴露されるのを防止することができる。
ここで、前記解析検出手段は、被保護プログラムの改ざんを検出する改ざん検出部 と、前記改ざん検出部により改ざんが検出されると、前記実行手段に対し、実行中止 を指示する指示部とを備え、前記実行手段は、前記指示部から実行中止の指示を受 け付けると、前記被保護プログラムの実行を中止するように構成してもよい。
[0019] この構成によると、当該セキュア処理装置は、改ざんが検出された被保護プロダラ ム以外の他の被保護プログラムは実行可能であるため、善意のユーザの利益を害す ることなく不正なプログラムの実行を防止することができる。
ここで、前記解析検出手段は、前記被保護プログラムが解析の対象とされていると 判断すると、前記解析に係る解析ログ情報を生成するログ情報生成部を備えるように 構成してちょい。
[0020] この構成〖こよると、解析に係る解析ログ情報を生成することにより、どのような解析行 為がなされたかを知ることができる。また、セキュア処理装置の開発段階におけるテス ト工程において、解析検出手段が正しく解析行為を検出するか否かを確認すること ができる。
ここで、前記セキュア処理装置は、ネットワークを介して外部サーバと接続されてお り、前記ログ情報生成部は、生成した前記解析ログ情報を、前記外部サーバへ送信 するように構成してちょい。
[0021] この構成によると、解析ログ情報を外部サーバへ送信することにより、外部サーバで は、どのような解析行為がなされたのカゝを分析することができる。解析行為を分析す ることにより、より解析の困難な被保護プログラムを生成することができる。
ここで、前記解析検出手段は、更に、所定の数値に設定された閾値を記憶している 閾値記憶部と、被保護プログラムが解析の対象とされて 、ると判断した回数を保持し 、前記判断の都度、保持している回数を更新する解析回数計数部とを備え、前記無 効化登録部は、前記解析回数計数部が保持している回数が前記閾値を超える場合 に、前記無効化リストに、前記被保護プログラムが無効化された旨を登録するように 構成してちょい。
[0022] この構成〖こよると、解析された回数が、予め設定されている閾値を超えた場合にの み、被保護プログラムが無効化される。したがって、善意のユーザの偶然による誤操 作で、直ちに実行中の被保護プログラムが無効化されてしまうことを防ぐことができる 。また、悪意のユーザが解析を繰り返すと、解析の回数が予め設定されている閾値を 超え、被保護プログラムが無効化されるので、被保護プログラムに含まれる秘匿にす べき情報が暴露されることを防止することができる。
[0023] ここで、前記選択手段は、前記無効化リストを参照し、無効化されていない 1の被保 護プログラムをランダムに選択するように構成してもよ 、。
この構成〖こよると、選択する被保護プログラム、即ち実行する被保護プログラムが毎 回ランダムに決定されるので、悪意のユーザによる不正解析を困難にすることができ る。
ここで、前記選択手段は、選択した被保護プログラムを識別するための情報を記憶 しており、前記情報と前記無効化リストとを参照し、未選択であり、且つ無効化されて V、ない 1の被保護プログラムをランダムに選択するように構成してもよ!/、。
[0024] この構成〖こよると、選択する被保護プログラム、即ち実行する被保護プログラムが、 毎回ランダムに決定され、尚且つ一度実行された被保護プログラムが、次回から選択 されないため、悪意のユーザによる不正解析をより困難にすることができる。
ここで、前記選択手段は、予め所定の選択順序を記憶しており、前記無効化リスト を参照し、無効化されていない 1の被保護プログラムを、前記選択順序に応じて選択 するように構成してちょい。
[0025] この構成〖こよると、所定の選択順序を記憶しておくことで、実行する被保護プロダラ ムをランダムに選択する場合と比較すると、乱数生成の処理等を省略することができ 、処理時間を短縮することができる。
ここで、前記選択手段は、前記複数の被保護プログラムについて、各被保護プログ ラムの難読化の程度を示す難読化度情報を記憶しており、前記難読化度情報と前記 無効化リストとを参照し、難読化の程度の高 、被保護プログラムカゝら順に実行される ように、無効化されて ヽな ヽ 1の被保護プログラムを選択するように構成してもよ 、。
[0026] この構成によると、難読ィ匕の程度の高い被保護プログラム、即ち、解析の困難な被 保護プログラム力 順に実行することで、悪意のユーザによる不正解析を効果的に防 止することができる。
ここで、前記選択手段は、前記複数の被保護プログラムについて、各被保護プログ ラムの難読化の程度を示す難読化度情報を記憶しており、
前記難読化度情報を参照し、難読化の程度の低 ヽ被保護プログラムカゝら順に実行 されるように、無効化されて ヽない 1の被保護プログラムを選択するように構成しても よい。
[0027] 一般的に、難読ィ匕の程度が高い被保護プログラムほど、プログラム実行速度が遅く 、難読ィ匕の程度が高い被保護プログラムほど、プログラム実行速度が速くなるの。従 つて、この構成〖こよると、実行速度の速い被保護プログラム力も実行され、不正解析 の意図のな 、善意のユーザにとっては、利便性が高 、セキュア処理装置を提供する ことができる。
ここで、前記選択手段は、実行速度の速い被保護プログラム力 順に実行されるよ うに、無効化されて ヽない 1の被保護プログラムを選択するように構成してもよ 、。
[0028] この構成〖こよると、実行速度の速い被保護プログラム力も実行されるので、不正解 祈の意図のな 、善意のユーザにとっては、利便性が高 、セキュア処理装置を提供す ることがでさる。
ここで、前記セキュア処理装置は、ネットワークを介して、被保護プログラムを保持し ているプログラム更新サーバと接続されており、前記選択手段は、無効化されていな い被保護プログラムの残数が、所定の閾値以下であるカゝ否かを判断する判断部と、 前記判断部により、所定の閾値以下であると判断された場合に、前記プログラム更新 サーバに対し、新たな被保護プログラムの送信を要求するプログラム要求部と、前記 プログラム更新サーバから、新たな被保護プログラムを受信するプログラム受信部と を備えるように構成してもよ 、。
[0029] この構成によると、プログラム記憶手段に記憶されている複数の被保護プログラム が全て無効化された場合であっても、セキュア処理装置は、プログラム更新サーバか ら新たな被保護プログラムを取得することが可能であり、善意のユーザのプログラムを 利用する権利を担保することができる。
また、プログラム記憶手段の記憶容量が少なぐ予め多くの被保護プログラムを記 憶しておいくことができないセキュア処理装置であっても、外部のプログラム更新サー ノくから被保護プログラムを取得することが可能である。
[0030] また、本発明は、ネットワークを介して接続されてセキュア処理装置とプログラム更 新サーバとから構成されるセキュア処理システムであって、前記セキュア処理装置は 、オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに 基づき生成された複数の被保護プログラムを記憶して 、る第 1記憶手段と、解析の対 象とされた被保護プログラムを無効化する無効化手段と、前記複数の被保護プロダラ ムから、無効化されていない 1の被保護プログラムを選択する選択手段と、選択され た 1の被保護プログラムを実行する実行手段と、前記第 1記憶手段に記憶されている 複数の被保護プログラムの内、無効化されていない被保護プログラムの残数が、所 定の閾値以下である場合に、前記プログラム更新サーバに対し、被保護プログラムの 送信を要求する要求手段とを備え、前記プログラム更新サーバは、複数の被保護プ ログラムを記憶している第 2記憶手段と、前記セキュア処理装置から、被保護プロダラ ムの送信要求を受け付ける要求受付手段と、前記要求受付手段が前記送信要求を 受け付けると、前記第 2記憶手段から、 1以上の被保護プログラムを読み出して、前 記セキュア処理装置へ送信する送信手段とを備えることを特徴とする。
[0031] この構成〖こよると、解析の対象とされた被保護プログラムを無効化することにより、悪 意のユーザにより同一の被保護プログラムに対する解析が再試行されるのを防止す ることができる。更に、当該セキュア処理装置は、複数の被保護プログラムを記憶して いるため、解析の対象とされた被保護プログラムが無効化された場合であっても、無 効化されていない他の被保護プログラムを実行することにより、善意のユーザのプロ グラムを利用する権利を担保することができる。
[0032] また、第 1記憶手段に記憶されている複数の被保護プログラムが全て無効化された 場合であっても、セキュア処理装置は、プログラム更新サーノ から新たな被保護プロ グラムを取得することが可能であり、善意のユーザのプログラムを利用する権利を担 保することができる。
図面の簡単な説明
[0033] [図 1]セキュア処理システム 1の構成を示すシステム構成図である。
[図 2]携帯電話機 10の構成を機能的に示す機能ブロック図である。
[図 3]プログラム記憶部 111に記憶されて 、る被保護プログラムを示す図である。
[図 4]セキュアプログラムの特徴について説明するための図である。
[図 5]不正解析検出部 116の機能を説明するための図である。
[図 6]改ざん検出部 402が保持する改ざん検出値テーブル 410のデータ構成を示す 図である。
[図 7]不正解析ログ情報 420のデータ構成を示す図である。
[図 8]無効化リスト 500のデータ構成を示す図である。
[図 9]プログラム更新サーバ 20の構成を機能的に示す機能ブロック図である。
[図 10]更新用プログラム記憶部 604に記憶されている被保護プログラムを示す図で ある。
[図 11]セキュア処理システム 1全体の動作を示すフローチャートである。
[図 12]セキュア処理システム 1における被保護プログラムの更新処理を示すフローチ ヤートである。
[図 13]セキュア処理システム 1におけるプログラム選択処理 1の動作を示すフローチ ヤートである。
[図 14]セキュア処理システム 1におけるプログラム選択処理 2の動作を示すフローチ ヤートである。
[図 15]セキュア処理システム 1における不正検出時の処理を示すフローチャートであ る。
符号の説明
[0034] 1 セキュア処理システム
10 携帯電話機
20 プログラム更新サーバ 30 ネットワーク
101 アンテナ
102 送受信部
103 通信制御部
104 n己' 1思 ρβ
105 表示部
106 操作部
107 スピーカ
108 マイク
109 セキュア処理部
111 プログラム記憶部
112 実行プログラム選択部
113 プログラムロード、咅
114 プログラムロード領域
115 プログラム実行部
116 不正解析検出部
117 無効化リスト記憶部
118 無効化リスト更新部
401 デバッガ検出部
402 改ざん検出部
403 不正解析通知部
601 送受信部
602 制御部
603 不正解析ログ情報記憶部
604 更新用プログラム記憶部
発明を実施するための最良の形態
本発明に係る実施の形態として、セキュア処理システム 1について図面を参照して 説明する。 <構成>
1.セキュア処理システム 1
図 1は、セキュア処理システム 1の構成を示すシステム構成図である。同図に示すよ うに、セキュア処理システム 1は、携帯電話機 10、プログラム更新サーバ 20、及びネ ットワーク 30から構成される。
[0036] 携帯電話機 10は、無線電波を用いて通信を行う可搬型の電話機である。携帯電話 機 10は、暗号化コンテンツをダウンロードし、ダウンロードした暗号ィ匕コンテンツを保 持している。また、携帯電話機 10は、 B音号化コンテンツを復号し、再生するための暗 号化コンテンツ復号プログラムを保持している。ここで、携帯電話機 10が保持してい る暗号化コンテンツは、音楽コンテンツに、暗号ィ匕アルゴリズム Eを施して生成された データである。
[0037] プログラム更新サーバ 20は、ネットワーク 30を介して携帯電話機 10と接続されてお り、携帯電話機 10による暗号ィ匕コンテンツの復号に用いられる暗号ィ匕コンテンツ復 号プログラムの更新を行う。
ここで、ネットワーク 30の具体例はインターネットである。また、図 1では、携帯電話 網及び無線基地局等を省略して!/、る。
[0038] 2.携帯電話機 10
図 2は、携帯電話機 10の構成を機能的に示す機能ブロック図である。同図に示す ように、携帯電話機 10は、アンテナ 101、送受信部 102、通信制御部 103、記憶部 1 04、表示部 105、操作部 106、スピーカ 107、マイク 108、及びセキュア処理部 109 力も構成される。ここで、アンテナ 101、送受信部 102、通信制御部 103、記憶部 10 4、表示部 105、操作部 106、スピーカ 107、及びマイク 108は、通常の携帯電話機 としての機能を達成するための機能ブロックであり、セキュア処理部 109が、本発明 の特徴的な機能ブロックである。なお、携帯電話機 10は、具体的には、マイクロプロ セッサ、 ROM、 RAM等から構成されるコンピュータシステムである。
[0039] 送受信部 102は、アンテナ 101を介して、通話、電子メール送受信、ネットワーク 30 を介したプログラム更新サーバ 20との通信等を行う。
通信制御部 103は、通信制御用コンピュータプログラムを記憶しており、マイクロプ 口セッサが通信制御用コンピュータプログラムを実行することにより、携帯電話機 10 が有する通話、メール送受信、ネットワーク接続等の通信機能を制御する。
[0040] 記憶部 104は、電話帳やスケジュール帳、送受信済みの電子メールデータ、ダウン ロードした暗号ィ匕コンテンツ等を記憶して 、る。
表示部 105は、液晶ディスプレイを含み、各種の画面を液晶ディスプレイに表示す る。
操作部 106は、携帯電話機 10の操作面に設けられた複数のボタン等から構成され 、ボタンの押下により、ユーザ力もの入力を受け付ける。
[0041] スピーカ 107は、音声を出力し、マイク 108は、音声の入力を受け付ける。
セキュア処理部 109は、プログラム記憶部 111、実行プログラム選択部 112、プログ ラムロード部 113、プログラムロード領域 114、プログラム実行部 115、不正解析検出 部 116、無効化リスト記憶部 117、及び無効化リスト更新部 118から構成される。
[0042] プログラム記憶部 111は、 FlashROM, EEPROM、又は HDDで構成される。図 3 は、プログラム記憶部 111の内部を示す図である。同図に示すように、プログラム記 憶部 111は、被保護プログラム A (201)、被保護プログラム B (202)、 · ··、被保護プロ グラム C (203)を含む、複数個の被保護プログラムを記憶して 、る。
各被保護プログラムには、プログラム識別子が付与されている。具体的に、被保護 プログラム A(201)には、プログラム識別子 A : 0001 (211)、被保護プログラム B (20 2)には、プログラム識別子 B: 0002 (212)、被保護プログラム C (203)には、プログ ラム識別子 C: 0003 (213)が付与されて 、る。
[0043] ここで、被保護プログラムの性質について、図 4を用いて説明する。
プログラム記憶部 111に記憶されて 、る全ての被保護プログラムは、暗号化コンテ ンッ復号プログラムであるオリジナルプログラム 200を、難読ィ匕して生成されたプログ ラムであり、図 4に示すように、オリジナルプログラム 200及び各被保護プログラムは、 暗号ィ匕コンテンツ 301と復号鍵 302とを入力値とすると、同一の出力値である復号コ ンテンッ 303を出力する。なお、本実施形態における被保護プログラムは、復号鍵 3 02を内部に含んでいるものとする。
[0044] ここで、難読化とは、プログラムをその構造的意味を変えずに複雑ィ匕することで、プ ログラムの解析を困難にすることを目的とした技術であり、具体的には、オリジナルプ ログラム 200の一部又は全部に暗号ィ匕を施したり、オリジナルプログラム 200に、実 行に影響を与えな 、不要なダミーコードを挿入したり、オリジナルプログラム 200に含 まれる一部のコードを、当該一部のコードと異なるコードであるが同一の結果を得ら れる等価なコードに置き換えたり、オリジナルプログラム 200に含まれるコードの内、 順序を入れ替えても結果の変わらないコードの順序を入れ替えたり、 1つのモジユー ルを複数のモジュールに分割したり、制御構造を複雑ィ匕したりする方法より実現され る。
なお、各被保護プログラムは、それぞれ異なる方法で難読化されたり、複数の方法 をそれぞれ異なる組み合わせで用いて難読化されたり、それぞれ異なる暗号ィ匕アル ゴリズムや暗号鍵を用いて暗号化されたり、それぞれオリジナルプログラム 200の異 なる部分が暗号化されたり、それぞれ異なる程度で難読化されたりすることにより、異 なるバイナリコードを有するプログラムである。難読ィ匕の程度は、ダミーコードの追カロ サイズや、制御構造の複雑化パターン、モジュールの分割数、暗号ィ匕アルゴリズムの 強度等を変更することにより変えることができる。
[0045] 実行プログラム選択部 112は、無効化リスト記憶部 117に記憶されている無効化リ スト 500を参照し、無効化されていない 1つの被保護プログラムを選択する。実行プロ グラム選択部 112は、選択した被保護プログラムのプログラム先頭アドレス、及びプロ グラムサイズを無効化リストから読み出し、読み出したプログラム先頭アドレス、及びプ ログラムサイズを、プログラムロード部 113へ通知する。なお、実行プログラム選択部 1 12は、乱数生成器を用いて乱数を生成し、生成した乱数に基づき、実行する被保護 プログラムを選択する。被保護プログラム選択の詳細については、後述する。
[0046] ここで、無効化リスト 500を参照することにより、全ての被保護プログラムが無効化さ れていると判断する場合には、実行プログラム選択部 112は、無効化リスト更新部 11 8に対し、新たな被保護プログラムのダウンロードを要求する。
プログラムロード部 113は、実行プログラム選択部 112から、プログラム先頭アドレス、 及びプログラムサイズを受け取ると、被保護プログラムをプログラムロード領域 114に ロードする。プログラムロード領域 114は、本実施形態では具体例として RAMである [0047] プログラム実行部 115は、マイクロプロセッサを含み、プログラムロード領域 114に口 ードされた被保護プログラムを実行する。
先に述べたように、被保護プログラムは、暗号ィ匕コンテンツ復号プログラムであるか ら、プログラム実行部 115は、被保護プログラムを実行することにより、記憶部 104か ら暗号化コンテンツを読み出し、読み出した暗号ィ匕コンテンツに、コンテンツ復号鍵 を用いて復号アルゴリズム Dを施し、音楽コンテンツを復号する。プログラム実行部 1 15は、復号された音楽コンテンツを、通信制御部 103を介してスピーカ 107へ出力 する。ここで、復号アルゴリズム Dは、暗号化アルゴリズム Eを施して暗号化された暗 号文を、平文に変換するアルゴリズムである。
[0048] 不正解析検出部 116は、図 5に示すように、デバッガ検出部 401、改ざん検出部 4 02、及び不正解析通知部 403から構成される。
デバッガ検出部 401は、プログラム実行部 115による被保護プログラムの実行中に 、インサーキットエミュレータ (登録商標である。)や、ソフトウェアデバッガを検出する 機能を有する。デバッガ検出部 401は、デバッガを検出すると、デバッガインタフエ一 スを切断する等により、デバッガを無効化する。デバッガ検出部 401は、デバッガを 無効化すると、不正解析通知部 403に不正解析を検出した旨を通知する。
[0049] 改ざん検出部 402は、予め、図 6に示す改ざん検出値テーブル 410を記憶してい る。改ざん検出値テーブル 410は、改ざん検出値情報 411、 412、 · ··、 413を含み、 各改ざん検出値情報は、プログラム識別子と判定用改ざん検出値とを含む。プロダラ ム識別子は、被保護プログラムを一意に識別するための情報である。判定用改ざん 検出値は、対応付けられているプログラム識別子により識別される被保護プログラム に、予め一方向関数を用いて算出された値であり、改ざんの有無を判定するために 用いられるデータである。
[0050] ここで、改ざん検出値テーブル 410は、プログラム記憶部 111に記憶されて 、るす ベての被保護プログラムについて、各被保護プログラムと 1対 1に対応する改ざん検 出値情報を含んでいる。
具体的には、改ざん検出値情報 411は、プログラム識別子「0001」と判定用改ざん 検出値「検出値 A」とを含む。プログラム識別子「0001」は、被保護プログラム A(201 )に対応するプログラム識別子であるから、判定用改ざん検出値「検出値 A」は、被保 護プログラム A (201)の改ざんの有無を判定するために用いられるデータである。
[0051] また、改ざん検出値情報 412は、プログラム識別子「0002」と判定用改ざん検出値 「検出値 B」とを含む。プログラム識別子「0002」は、被保護プログラム B (202)に対 応するプログラム識別子であるから、改ざん検出値「検出値 B」は、被保護プログラム B (202)の改ざんの有無を判定するために用いられるデータである。
また、改ざん検出値情報 413は、プログラム識別子「0003」と判定用改ざん検出値 「検出値 C」とを含む。プログラム識別子「0003」は、被保護プログラム C (203)に対 応するプログラム識別子であるから、改ざん検出値「検出値 C」は、被保護プログラム C (203)の改ざんの有無を判定するために用いられるデータである。
[0052] 改ざん検出部 402は、新たな被保護プログラムのダウンロードに伴 、、無効化リスト 更新部 118から、判定用改ざん検出値とプログラム識別子とを受け取ると、これらを 新に改ざん検出値テーブル 410に登録する。
改ざん検出部 402は、プログラムロード領域 114に被保護プログラムがロードされる と、ロードされた被保護プログラムに一方向関数を用いて、改ざん検出値を算出する 。改ざん検出部 402は、算出された改ざん検出値と、改ざん検出値テーブル 410に 記述されている判定用改ざん検出値とがー致するか否力判断する。一致する場合に は、プログラムロード領域 114にロードされて 、る被保護プログラムは改ざんされて!/ヽ ないと判定し、一致しない場合は、被保護プログラムは改ざんされていると判定する。 改ざん検出部 402は、被保護プログラムの改ざんを検出すると、不正解析通知部 40 3に不正解析を検出した旨を通知する。なお、判定用改ざん検出値及び改ざん検出 値は、一例として、 SHA (Secure Hash Algorithm) - 1を用いて算出するものとす る。
[0053] 不正解析通知部 403は、デバッガ検出部 401及び改ざん検出部 402から不正解 析を検出した旨の通知を受けると、プログラム実行部 115に対し、プログラムの実行 中止を指示し、更に、不正解析ログ情報を生成する。不正解析通知部 403は、生成 した不正解析ログ情報を、通信制御部 103、送受信部 102、アンテナ 101、及びネッ トワーク 30を介して、プログラム更新サーバ 20へ送信する。
[0054] 図 7は、不正解析通知部 403が生成する不正解析ログ情報 420のデータ構成を示 す図である。同図に示すように、不正解析ログ情報 420は、プログラム識別子欄 421 、不正解析検知コード欄 422、汎用レジスタ値欄 423、スタックポインタ欄 424、リンク レジスタ欄 425、及びプログラムカウンタ欄 426を含む。
プログラム識別子欄 421には、不正解析検知時にプログラム実行部 115が実行し て!ヽた被保護プログラムを識別するプログラム識別子が記述される。不正解析検知コ ード欄 422には、不正解析を検出したの力 デバッガ検出部 401及び改ざん検出部 402の何れであるかを示す不正解析検知コードが記述される。不正解析検知コード は、デバッガ検出部 401がデバッガを検出した場合は「1」に設定され、改ざん検出 部 402が改ざんを検出した場合は「2」に設定される。汎用レジスタ値欄 423、スタック ポインタ欄 424、リンクレジスタ欄 425、及びプログラムカウンタ欄 426には、デバッガ 検出時におけるマイクロプロセッサ内部の、レジスタファイルの各値が記述される。
[0055] なお、デバッグレジスタを有するプロセッサを利用する場合には、不正解析通知部 403は、デバッグレジスタの状態を示す値や、デバッグレジスタにセットされているァ ドレス値などを不正解析ログ情報に記述してもよい。
無効化リスト記憶部 117は、図 8に示す無効化リスト 500を保持している。無効化リ スト 500は、複数のプログラム無効化情報を含み、各プログラム無効化情報は、プロ グラム識別子、プログラム先頭アドレス、プログラムサイズ、及び無効化フラグ力も構 成される。
[0056] プログラム識別子は、被保護プログラムを一意に識別するための情報である。プロ グラム先頭アドレスは、対応する被保護プログラムの、プログラム記憶部 111における 記録開始位置を示し、プログラムサイズは、被保護プログラムのデータサイズを示す 情報である。無効化フラグは、対応する被保護プログラムが無効化されているか否か を示す情報であり、「0」及び「1」の何れかに設定される。「0」は、被保護プログラムが 無効化されていないことを示し、「1」は、被保護プログラムが無効化されていることを 示す。
[0057] ここで、無効化リスト 500は、プログラム記憶部 111に記憶されているすべての被保 護プログラムについて、各被保護プログラムと 1対 1に対応するプログラム無効化情報 を含んでいる。具体的に、プログラム無効化情報 501は、被保護プログラム A(201) に対応しており、プログラム無効化情報 502は、被保護プログラム B (202)に対応し ており、プログラム無効化情報 503は、被保護プログラム C (203)に対応している。
[0058] 無効化リスト更新部 118は、実行プログラム選択部 112から被保護プログラムのダウ ンロード要求を受け付けると、受け付けたダウンロード要求を通信制御部 103、送受 信部 102、アンテナ 101、及びネットワーク 30を介して、プログラム更新サーバ 20へ 送信する。無効化リスト更新部 118は、ダウンロード要求に応じて、プログラム更新サ ーバ 20から送信された被保護プログラムと判定用改ざん検出値とを、ネットワーク 30 、アンテナ 101、送受信部 102、及び通信制御部 103を介して受信する。無効化リス ト更新部 118は、受信した被保護プログラムをプログラム記憶部 111へ書き込み、受 信した判定用改ざん検出値と被保護プログラムを識別するプログラム識別子とを、不 正解析検出部 116の改ざん検出部 402へ出力する。
[0059] また、無効化リスト更新部 118は、以下の場合に、無効化リスト記憶部 117に記憶さ れて 、る無効化リスト 500を更新する。
(a)被保護プログラムの不正解析が検出された場合。即ち、無効化リスト更新部 11 8は、不正解析通知部 403から不正解析が検出された被保護プログラムのプログラム 識別子を受け取ると、受け取ったプログラム識別子と対応付けられている無効化フラ グを「0」から「1」に書き換えることにより、無効化リスト 500を更新する。
[0060] (b)プログラム更新サーバ 20から新たな被保護プログラムを受信した場合。即ち、 無効化リスト更新部 118は、プログラム更新サーバ 20から被保護プログラムと判定用 改ざん検出値とを受信すると、受信した被保護プログラムに係るプログラム無効化情 報を生成し、生成したプログラム無効化情報を無効化リスト 500に登録する。
3.プログラム更新サーバ 20
図 9は、プログラム更新サーバ 20の構成を機能的に示す機能ブロック図である。同 図に示すように、プログラム更新サーバ 20は、送受信部 601、制御部 602、不正解 析ログ情報記憶部 603、及び更新用プログラム記憶部 604から構成される。プロダラ ム更新サーバ 20は、具体的には、マイクロプロセッサ、 ROM, RAM,ハードディスク ユニット等力も構成されるコンピュータシステムである。
[0061] 送受信部 601は、ネットワーク接続ユニットであって、ネットワーク 30を介して携帯電 話機 10から送信される情報を受信し、受信した情報を制御部 602へ出力する。また 、送受信部 601は、制御部 602から出力される情報を受け取り、受け取った情報を、 ネットワーク 30を介して、携帯電話機 10へ送信する。
制御部 602は、プログラム更新サーバ 20全体を制御する。具体的には、制御部 60 2は、送受信部 601及びネットワーク 30を介して、携帯電話機 10から被保護プロダラ ムのダウンロード要求を受け付けると、更新用プログラム記憶部 604から被保護プロ グラムと判定用改ざん検出値とを読み出し、読み出した被保護プログラムと判定用改 ざん検出値とを送受信部 601へ出力する。また、制御部 602は、送受信部 601及び ネットワーク 30を介して、携帯電話機 10から不正解析ログ情報を受信すると、受信し た不正解析ログ情報を、不正解析ログ情報記憶部 603に書き込む。
[0062] 不正解析ログ情報記憶部 603は、携帯電話機 10から送信された不正解析ログ情 報を記憶する。
図 10は、更新用プログラム記憶部 604の内部を示す図である。同図に示すように、 更新用プログラム記憶部 604は、被保護プログラム X (611)、被保護プログラム Y (6 12)、 · ··、被保護プログラム Z (613)を含む、複数個の被保護プログラムを記憶して いる。
[0063] 各被保護プログラムには、プログラム識別子が付与されている。具体的に、被保護 プログラム χ(611)には、プログラム識別子 X: 1001 (621)、被保護プログラム Υ(61 2)には、プログラム識別子 Υ: 1002 (622)、被保護プログラム Ζ (613)には、プロダラ ム識別子 Ζ: 1003 (623)が付与されて!、る。
なお、更新用プログラム記憶部 604に記憶されている各被保護プログラムは、携帯 電話機 10のプログラム記憶部 111に記憶されて 、る被保護プログラムと同様に、オリ ジナルプログラム 200を難読ィ匕して生成したプログラムであって、それぞれが異なる ノイナリコードを有し、更に、図 4に示す性質を有する。即ち、被保護プログラム Χ(61 1)、被保護プログラム Υ(612)、 · ··、被保護プログラム Ζ (613)は、暗号化コンテンツ 301及びコンテンツ復号鍵 302を入力値とすると、出力値として、復号コンテンツ 303 を出力する。
[0064] また、更新用プログラム記憶部 604は、各被保護プログラムに対応付けて、判定用 改ざん検出値を記憶している。図 10に示すように、被保護プログラム X (611)と、判 定用改ざん検出値 X(631)とが対応しており、被保護プログラム Y (612)と、判定用 改ざん検出値 Y(632)とが対応しており、被保護プログラム Ζ (613)と、判定用改ざ ん検出値 Ζ (633)とが対応している。各判定用改ざん検出値は、対応する被保護プ ログラムに、予め一方向関数を用いて算出された値であり、対応する被保護プロダラ ムの改ざんの有無を判定するために用いられるデータである。
[0065] <動作 >
ここでは、図 11から図 15に示すフローチャートを用いて、セキュア処理システム 1の 動作について説明する。
1.セキュア処理システム 1全体の動作
図 11は、セキュア処理システム 1全体の動作を示すフローチャートである。なお、こ こに示す動作は、携帯電話機 10において暗号化コンテンツの復号要求が発生する ことにより開始する。
[0066] 携帯電話機 10の実行プログラム選択部 112は、無効化リスト記憶部 117に記憶さ れて 、る無効化リスト 500を読み込む (ステップ S 101)。実行プログラム選択部 112 は、無効化リスト 500の無効化フラグを読み、プログラム記憶部 111に記憶されている 全ての被保護プログラムが、無効化されて ヽるカゝ否か判断する (ステップ S 102)。
[0067] 全ての被保護プログラムが無効化されている場合 (ステップ S 102で YES)、即ち、 無効化リスト 500の無効化フラグが全て「1」に設定されている場合、携帯電話機 10 は、被保護プログラムの更新処理を行う(ステップ S 103)。無効化されていない被保 護プログラムが存在する場合、即ち、無効化リスト 500に、「0」に設定されている無効 化フラグが存在する場合 (ステップ S 102で NO)、実行プログラム選択部 112は、被 保護プログラム選択処理を行 ヽ、 1の被保護プログラムを選択する (ステップ S 104)。
[0068] 次に、プログラムロード部 113は、ステップ S104において選択された 1の被保護プ ログラムを、プログラム記憶部 111からプログラムロード領域 114へロードする (ステツ プ S105)。 次に、不正解析検出部 116の改ざん検出部 402は、プログラムロード領域 114に口 ードされた被保護プログラムの改ざん検出値を算出する (ステップ S106)。被保護プ ログラムの改ざんが検出された場合 (ステップ S107で YES)、即ち、ステップ S106で 算出した改ざん検出値が、予め保持している判定用改ざん検出値と一致しない場合 ίま、ステップ S 112に進む。
[0069] 被保護プログラムの改ざんが検出されな 、場合 (ステップ S107で NO)、即ち、ステ ップ S106で算出した改ざん検出値が、予め保持している判定用改ざん検出値と一 致する場合は、プログラム実行部 115は、ステップ S 105でロードされた被保護プログ ラムの実行を開始する (ステップ S 108)。
被保護プログラムの実行中に、不正解析検出部 116のデバッガ検出部 401がデバ ッガを検出しなければ (ステップ S109で NO)、プログラム実行部 115は、被保護プロ グラムの実行を継続する。
[0070] 被保護プログラムの実行中に、デバッガ検出部 401がデバッガを検出すると (ステツ プ S109で YES)、デバッガ検出部 401は、デバッガを無効化し、ステップ S111に進 む。
改ざんを検出した改ざん検出部 402、及びデバッガを検出したデバッガ検出部 40 1は、不正解析通知部 403に対し、その旨を通知し、不正解析通知部 403はプロダラ ム実行部 115に対し実行中止を指示する。その後、プログラム実行部 115は実行し て!、た被保護プログラムの実行を中止する (ステップ S112)。
[0071] 不正解析通知部 403は、不正解析通知処理を行い (ステップ S 113)、携帯電話機 10は処理を終了する。
2.被保護プログラム更新処理の動作
図 12は、被保護プログラム更新処理の動作を示すフローチャートである。なお、ここ に示す動作は、図 11に示したフローチャートにおけるステップ S 103の詳細である。
[0072] 携帯電話機 10の実行プログラム選択部 112は、新たな被保護プログラムのダウン口 ードを要求するためのダウンロード要求を生成する (ステップ S201)。実行プログラム 選択部 112は、生成したダウンロード要求を、無効化リスト更新部 118へ出力し、無 効化リスト更新部 118は、通信制御部 103、送受信部 102、アンテナ 101、及びネッ トワーク 30を介して、プログラム更新サーバ 20へ、ダウンロード要求を送信し、プログ ラム更新サーバ 20の送受信部 601は、ダウンロード要求を受信する (ステップ S202)
[0073] プログラム更新サーバ 20の制御部 602は、送受信部 601からダウンロード要求を 受け取ると、更新用プログラム記憶部 604から、被保護プログラムと判定用改ざん検 出値とを読み出す (ステップ S 203)。制御部 602は、読み出した被保護プログラムと 判定用改ざん検出値とを、送受信部 601へ出力する。
送受信部 601は、ネットワーク 30を介して被保護プログラムと判定用改ざん検出値 とを携帯電話機 10へ送信し、携帯電話機 10の送受信部 102は、アンテナ 101を介 して、被保護プログラムと判定用改ざん検出値とを受信する (ステップ S204)。
[0074] 無効化リスト更新部 118は、ステップ S204で受信した被保護プログラムに係るプロ グラム無効化情報を生成し、生成したプログラム無効化情報を、無効化リスト記憶部 1 17に記憶されて 、る無効化リスト 500に登録する (ステップ S205)。
次に、無効化リスト更新部 118は、ステップ S 204で受信した判定用改ざん検出値と プログラム識別子とを、不正解析検出部 116の改ざん検出部 402へ出力し、改ざん 検出部 402は、判定用改ざん検出値をプログラム識別子と対応付けて、改ざん検出 値テーブル 410に登録する(ステップ S 206)。
[0075] 更に、無効化リスト更新部 118は、ステップ S 204で受信した被保護プログラムを、 プログラム記憶部 111に書き込み (ステップ S207)、書き込みが終了すると (ステップ S208)、図 11のステップ S104に戻り処理を続ける。
3.プログラム選択処理 1の動作
図 13は、プログラム選択処理 1の動作を示すフローチャートである。なお、ここに示 す動作は、図 11に示したフローチャートにおけるステップ S104の詳細である。
[0076] 実行プログラム選択部 112は、無効化リスト記憶部 117に記憶されている無効化リ スト 500を参照し、無効化リスト 500に登録されて 、るプログラム無効化情報の総数、 即ち、プログラム記憶部 111に記憶されて 、る被保護プログラムの総数を Nとする (ス テツプ S301)。
次に、実行プログラム選択部 112は、乱数生成器にて、 1から Nまでの整数範囲で 、乱数 rを生成する (ステップ S302)。実行プログラム選択部 112は、無効化リスト 500 に含まれる N個のプログラム無効化情報の内、上力 r番目に位置するプログラム無 効化情報に含まれる無効化フラグを読む (ステップ S303)。
[0077] 無効化フラグが 1に設定されて!ヽる場合 (ステップ S304で YES)、対応する被保護 プログラムは無効化されていることから、実行プログラム選択部 112は、当該被保護 プログラムを選択できないため、ステップ S302に戻り、別の被保護プログラムを選択 する処理を続ける。
無効化フラグが 0に設定されている場合 (ステップ S304で NO)、対応する被保護 プログラムは無効化されていないため、実行プログラム選択部 112は、 r番目の被保 護プログラムを選択する (ステップ S305)。実行プログラム選択部 112は、選択した被 保護プログラムに係るプログラム識別子、プログラム先頭アドレス、及びプログラムサ ィズを、無効化リストから読み出し、読み出したプログラム識別子、プログラム先頭アド レス、及びプログラムサイズを、プログラムロード部 113へ通知する(ステップ S306)。 その後、図 11のステップ S105へ戻り、処理を続ける。
[0078] なお、実行プログラム選択部 112による被保護プログラム選択処理は、上記の方法 に限定されず、次に説明する方法を用いてもよい。
4.プログラム選択処理 2の動作
ここでは、図 14に示すフローチャートを用いて、プログラム選択処理 2の動作につ いて説明する。プログラム選択処理 2は、先に説明したプログラム選択処理 1の変形 例であり、図 11に示したフローチャートのステップ S 104の詳細に相当する。
実行プログラム選択部 112は、無効化リスト記憶部 117に記憶されて 、る無効化リス ト 500を参照し、無効化リスト 500に登録されているプログラム無効化情報の総数、即 ち、プログラム記憶部 111に記憶されて 、る被保護プログラムの総数を Nとする (ステ ップ S401)。
ここで、実行プログラム選択部 112は、内部に乱数リストを保持している。乱数リスト は、既に乱数生成器にて生成された乱数を登録しているリストである。実行プログラム 選択部 112は、乱数リストを参照し (ステップ S402)、乱数リストに登録されている乱 数の総数を計数する。乱数リストに登録されて 、る乱数の総数が Nの場合 (ステップ S 403で YES)、実行プログラム選択部 112は、内部に保持している乱数リストをクリア する(ステップ S404)。
乱数リストに登録されて 、る乱数の総数が Nより少な 、場合 (ステップ S403で NO) 、実行プログラム選択部 112は、乱数生成器にて、 1から Nまでの整数範囲で、乱数 r を生成する (ステップ S405)。実行プログラム選択部 112は、ステップ S405で生成し た乱数 rが乱数リストに登録済みである力否か判断する。
乱数 rが、乱数リストに登録済みである場合 (ステップ S406で YES)、実行プロダラ ム選択部 112は、ステップ S401に戻り処理を続ける。乱数 r力 乱数リストに登録され ていない場合 (ステップ S406で NO)、ステップ S405で生成した乱数 rを、乱数リスト に登録する(ステップ S407)。
続いて、実行プログラム選択部 112は、無効化リスト 500に含まれる N個のプロダラ ム無効化情報の内、上から r番目に位置するプログラム無効化情報に含まれる無効 化フラグを読む (ステップ S408)。
[0079] 無効化フラグが 1に設定されて!ヽる場合 (ステップ S409で YES)、対応する被保護 プログラムは無効化されていることから、実行プログラム選択部 112は、当該被保護 プログラムを選択できな 、ため、ステップ S401に戻り処理を続ける。
無効化フラグが 0に設定されている場合 (ステップ S409で NO)、対応する被保護 プログラムは無効化されていないため、実行プログラム選択部 112は、 r番目の被保 護プログラムを選択する (ステップ S410)。実行プログラム選択部 112は、選択した被 保護プログラムに係るプログラム識別子、プログラム先頭アドレス、及びプログラムサ ィズを、無効化リストから読み出し、読み出したプログラム識別子、プログラム先頭アド レス、及びプログラムサイズを、プログラムロード部 113へ通知する(ステップ S411)。 その後、図 11のステップ S105へ戻り、処理を続ける。
[0080] 5.不正解析通知処理の動作
ここでは、図 15に示すフローチャートを用いて、不正解析通知処理の動作につい て説明する。なお、ここで説明する動作は、図 11のステップ S113の詳細である。 不正解析検出部 116の不正解析通知部 403は、プログラム実行部 115を介してプ ログラムロード領域 114にロードされて ヽた被保護プログラムのプログラム識別子を取 得する(ステップ S 501)。
[0081] 次に、不正解析通知部 403は、不正解析を検出したのがデバッガ検出部 401であ る力、又は改ざん検出部 402であるかを判断する。
不正解析を検出したのがデバッガ検出部 401の場合 (ステップ S502で「デバッガ検 出」)、不正解析通知部 403は、不正解析検知コードを「1」に設定する (ステップ S50 3)。その後、不正解析通知部 403は、プログラム実行部 115に含まれるレジスタファ ィルから汎用レジスタ、スタックポインタ、リンクレジスタ、及びプログラムカウンタの各 値を取得する(ステップ S 504)。
[0082] 不正解析を検出したのが改ざん検出部 402の場合 (ステップ S502で「改ざん検出」 )、不正解析通知部 403は、不正解析検知コードを「2」に設定する (ステップ S505) 不正解析通知部 403は、取得したプログラム識別子を、不正解析ログ情報 420の プログラム識別子 421欄に記述し、更に、「1」及び「2」の何れかに設定した不正解析 検知コードを不正解析検知コード欄 422に記述する。次に、不正解析通知部 403は 、ステップ S504でレジスタファイルの各値を取得した場合には、取得した各値を、不 正解析ログ情報 420の汎用レジスタ値欄 423、スタックポインタ欄 424、リンクレジスタ 欄 425、及びプログラムカウンタ欄 426の各欄に記述し、不正解析ログ情報 420を生 成する(ステップ S 506)。
[0083] 不正解析通知部 403は、生成した不正解析ログ情報 420を、通信制御部 103、送 受信部 102、アンテナ 101、及びネットワーク 30を介して、プログラム更新サーバ 20 へ送信し、プログラム更新サーバ 20は不正解析ログ情報 420を受信する (ステップ S 507) o
プログラム更新サーバ 20の制御部 602は、送受信部 601から不正解析ログ情報 4 20を受信すると、受信した不正解析ログ情報 420を、不正解析ログ情報記憶部 603 へ書き込み、不正解析ログ情報記憶部 603は、不正解析ログ情報 420を記憶する( ステップ S508)。
[0084] 一方、携帯電話機 10の不正解析通知部 403は、ステップ S501で取得したプログ ラム識別子と共に、無効化リスト更新部 118に対し、不正解析の検出を通知する (ス テツプ S509)。無効化リスト更新部 118は、不正解析の検出を受け付けると、無効化 リストから、受け付けたプログラム識別子により識別されるプログラム無効化情報の無 効化フラグを「1」に設定する (ステップ S510)。その後、図 11のフローチャートに戻る
[0085] <その他の変形例 >
(1)本発明における被保護プログラムは、オリジナルプログラムの全体に難読ィ匕処 理を施し、生成されたプログラムであってもよいし、オリジナルプログラムの一部分に 難読化処理を施し、生成されたプログラムであってもよ ヽ。
(2)上記実施形態では、携帯電話機 10のプログラム記憶部 111は、それぞれが異 なるバイナリコードを有する複数の被保護プログラムを記憶する構成を備えるが、本 発明において、プログラム記憶部 111は、バイナリコードである被保護プログラムを記 憶していることは必須ではなぐ例えば、異なる難読ィ匕を施したソースプログラムであ る被保護プログラムを記憶している構成であってもよい。この場合、プログラム実行部 115は、インタプリタを用い、各被保護プログラムを実行するように構成してもよい。
[0086] (3)上記実施形態では、携帯電話機 10の改ざん検出部 402は、一方向関数を用 いて改ざん検出を行う構成を有するが、本発明における改ざん検出の方法は一方向 関数に限定されないのは勿論であり、例えば、予め各被保護プログラムを暗号ィ匕した 暗号ィ匕被保護プログラムを記憶しており、実行プログラム選択部 112により選択され た被保護プログラムに、同じ暗号化処理を施した結果と、予め記憶している暗号化被 保護プログラムとを比較することにより、改ざんの有無を検出する方法などを用いても よい。
[0087] (4)上記実施形態では、携帯電話機 10の実行プログラム選択部 112は、図 13に 示したプログラム選択処理 1、又は図 14に示したプログラム選択処理 2を実施するこ とにより無効化されていない 1つの被保護プログラムを選択する構成を有するが、本 発明における被保護プログラムの選択方法は、これらに限定されず、例えば、以下の ような場合も本発明に含まれる。
[0088] (a)実行プログラム選択部 112は、予め所定の選択順序を記憶しており、当該選択 順序に応じて実行すべき被保護プログラムを選択してもよい。 具体的には、実行プログラム選択部 112は、選択順序に応じて並べられたプロダラ ム識別子を記憶しており、暗号化コンテンツの復号要求が発生すると、実行プロダラ ム選択部 112は、選択順序が上位のプログラム識別子を読み出す。続いて、実行プ ログラム選択部 112は、無効化リスト記憶部 117から無効化リスト 500を読み込み、先 に読み出したプログラム識別子により識別される被保護プログラムが、無効化されて いるカゝ否かを判断する。無効化されていない場合には、当該被保護プログラムを選 択し、プログラム先頭アドレス、及びプログラムサイズを、プログラムロード部 113へ通 知する。無効化されている場合には、実行プログラム選択部 112は、選択順位が次 のプログラム識別子を読み出し、上記の処理を繰り返す。このように、実行プログラム 選択部 112は、所定の選択順序に応じて、無効化されていない 1の被保護プロダラ ムを選択する。
(b)実行プログラム選択部 112は、予め各被保護プログラムの難読ィ匕の程度に応じ た選択順序を記憶しており、当該選択順序に応じて実行すべき被保護プログラムを 選択してもよい。上記実施形態で述べたように、各被保護プログラムの難読ィ匕の程度 は、ダミーコードの追加サイズや、制御構造の複雑化パターン、モジュールの分割数
、暗号ィ匕アルゴリズムの強度等によりそれぞれ異なっており、難読化の程度が高いほ ど、被保護プログラムの解析や改ざんは困難になる。
実行プログラム選択部 112は、難読ィ匕の程度が高い順にプログラム識別子を記憶 しており、暗号ィ匕コンテンツの復号要求が発生すると、実行プログラム選択部 112は 、上位の、即ち難読ィ匕の程度が高い被保護プログラムのプログラム識別子を読み出 す。その後、実行プログラム選択部 112は、(a)と同様の処理を行い、難読化の程度 の高 、被保護プログラム力も順に、無効化されて 、ない 1の被保護プログラムを選択 する。
また、実行プログラム選択部 112は、難読ィ匕の程度が低い被保護プログラム力も順 に、無効化されていない 1の被保護プログラムを選択するように構成してもよい。これ は、一般的に難読ィ匕の程度の高い被保護プログラムほど、実行速度が遅くなるので 、不正解析を行わない善意のユーザにとっては、実行速度の速いプログラム、即ち、 難読化の程度の低 、プログラム力 優先的に選択される方が望ま 、からである。 [0090] また、難読化の程度に依らず、実際の実行速度が速い順に、無効化されていない 1 の被保護プログラムを選択するように構成してもよい。この場合、実行プログラム選択 部 112が、各被保護プログラムを識別するプログラム識別子と対応付けて、各被保護 プログラムの実行速度を示す情報を記憶して 、てもよ 、し、携帯電話機 10が被保護 プログラムをダウンロードする都度、テスト実行を行い、ダウンロードした被保護プログ ラムの実行速度を測定するように構成してもよ 、。
[0091] (5)上記実施形態では、改ざん検出部 402は、被保護プログラムがプログラムロー ド領域 114にロードされたときに改ざん検出値の算出を行い、改ざんの有無を判定 する構成を有するが、発明における被保護プログラムの改ざん検出は、被保護プロ グラムがロードされる前にプログラム記憶部 111に記憶されて 、るプログラムに対して 行ってもよいし、被保護プログラムの実行前に行ってもよいし、ロードされたプログラム に対して実行中定期的に行つてもよい。
[0092] (6)上記実施の形態では、不正解析検出部 116の不正解析通知部 403は、デバッ ガ検出部 401及び改ざん検出部 402の何れかから、不正解析を検出した旨の通知 を受け付けると、無条件でプログラム実行部 115に対し、被保護プログラムの実行中 止を指示すると共に、不正解析ログ情報を作成する構成を有するが、例えば、以下 のような場合であっても、本発明に含まれる。
[0093] 不正解析通知部 403は、予め所定数を示す閾値を保持している。不正解析通知部 403は、デバッガ検出部 401及び改ざん検出部 402から不正解析を検出した旨の通 知を受け付ける都度、その回数をカウントする。カウントしている回数が保持している 閾値を超えると、不正解析検出部 403は、プログラム実行部 115に対し、被保護プロ グラムの実行中止を指示すると共に、不正解析ログ情報を作成するように構成しても よい。これにより、善意のユーザの誤操作が不正解析と判定され、直ちに実行中のプ ログラムが停止することを防止することができる。
[0094] (7)上記実施形態では、不正解析が検出(デバッガ検出又は改ざん検出)された被 保護プログラムは、無効化リストの無効化フラグを「0」から「1」に書き換えることにより 無効化される構成を有するが、本発明におけるプログラムの無効化は、無効化フラグ の書き換えに加えて、プログラム記憶部 111内の被保護プログラムをゼロクリアしたり 、乱数データでメモリを上書きしたりすることにより、実際にプログラムが実行されない ようにしてもよい。このように、解析された可能性のある被保護プログラムを実行不能 にすることで、ユーザの誤作動等により、無効化したはずの被保護プログラムが再度 実行される危険を低減することができる。
[0095] また、無効化された被保護プログラムの無効化フラグを「1」に書き換える構成に換 えて、無効化リストからプログラム無効化情報を削除するように構成してもよい。無効 ィ匕リストからプログラム無効化情報を削除することにより、無効化された被保護プログ ラムのアドレス等に係る情報が削除されるので、ユーザの誤作動等により、無効化し たはずの被保護プログラムが再度実行される危険を低減することができる。
[0096] また、上記実施形態では、被保護プログラムが無効化されて!/ヽるか否かを無効化フ ラグにより判定する構成を有するが、この構成は必須ではなぐフラグに換えて、他の 情報により判定する場合も本発明に含まれる。
(8)本発明における無効化リストには、正当な機関力 発行された署名データが付 カロされていてもよい。この場合、実行プログラム選択部 112は、ステップ S101 (図 11) で無効化リストを読み込んだ後、署名データの検証を行い、署名データの検証に成 功した場合、ステップ S 102以降の処理を継続し、署名データの検証に失敗した場合 、即ち無効化リストが不正である場合には、ステップ S 102以降の処理を行わないよう に構成してもよい。この構成によると、無効化されている被保護プログラムが。無効化 リストの改ざんにより無効化されていないものと判断されて、実行されるのを防止する ことができる。
[0097] (9)上記実施形態では、保護対象プログラムは、暗号ィ匕コンテンツ復号プログラム であるオリジナルプログラム 200のみである力 本発明においては、保護対象のプロ グラムは複数存在してもよ 、。
この場合、複数の保護対象プログラムのそれぞれについて、複数の被保護プロダラ ムが生成され、プログラム記憶部 111には、これら複数の被保護プログラムが記憶さ れているものとする。また、無効化リスト記憶部 117には、保護対象プログラム毎にそ れぞれ無効化リストが記憶されて 、るものとする。
[0098] (10)本発明においては、携帯電話機 10がプログラム更新サーバ 20からダウン口 ードした被保護プログラムは、プログラム記憶部 111内の、無効化されている被保護 プログラムが記憶されて 、る領域に上書きしてもよ 、し、プログラム記憶部 111内の 他の領域に記憶してもよい。これにより、無効化された被保護プログラムの消去と新た な被保護プログラムの追加とを一度に行うことができる。また、無効化された被保護プ ログラムの記憶領域を、追加する新たな被保護プログラムの記憶領域として再利用す るので、プログラム記憶部 111の容量を有効に利用することができる。
[0099] (11)上記実施形態において、携帯電話機 10は、プログラム記憶部 111に記憶さ れている全ての被保護プログラムが無効化されていると判断してから、プログラム更 新サーノ から新たな被保護プログラムをダウンロードする構成を有するが、この構成 は必須ではなぐプログラム更新サーノくから被保護プログラムをダウンロードするタイ ミングについては特に限定しない。例えば、 1つの被保護プログラムが無効化される 都度、携帯電話機 10は、プログラム更新サーバ 20から新たな被保護プログラムをダ ゥンロードしてもよい。
[0100] また、携帯電話機 10は、プログラム記憶部 111に記憶されて 、る全ての被保護プロ グラムが無効化されておらず、有効な被保護プログラムが残って 、る状態であっても
、プログラム更新サーバ 20から新たな被保護プログラムをダウンロードしてもよい。例 えば、プログラム記憶部 111に記憶されて 、る有効な被保護プログラムの数が所定 数以下になったら場合、携帯電話機 10が過去の選択履歴を保持し、同じ被保護プ ログラムが選択される確率が所定値以上になった場合等に、新たな被保護プロダラ ムをダウンロードするように構成してもよ 、。
[0101] この構成〖こよると、携帯電話機 10は、有効な被保護プログラムの数が減ってくると、 新し ヽ被保護プログラムを取得するので、実行する被保護プログラムをある程度ラン ダムに選択することが保証できる。
(12)本発明において、携帯電話機 10とプログラム更新サーバ 20との間の通信は 、安全な通信路、所謂 SAC (Secure Authentication Channel)を確立し、 SAC を介して、被保護プログラムのダウンロード処理、不正解析ログ情報の送受信処理を 行うよう構成してもよい。なお、 SACについては、 Secure Sockets Layer (SSL) 等で利用されており、既知の技術で実現可能であるから、説明は省略する。 [0102] (13)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンビュ ータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプ ログラム力もなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ 読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、 CD RO M、 MO、 DVD, DVD-ROM, DVD RAM, BD (Blu- ray Disc)、半導体メモリ など、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コ ンピュータプログラム又は前記デジタル信号であるとしてもよい。
[0103] また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信 回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して 伝送するものとしてもよ 、。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって 、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサ は、前記コンピュータプログラムに従って動作するとしてもよい。
[0104] また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送する ことにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由し て移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい
(14)また本発明は、上記実施形態における携帯電話機 10及びプログラム更新サ ーバ 20の機能ブロックの一部又は全てが集積回路である LSIとして実現される場合 も本発明に含まれる。これらは個別に 1チップィ匕されても良いし、一部又は全てを含 むように 1チップィ匕されてもよい。ここでは、 LSIとした力 集積度の違いにより、 IC、シ ステム LSI、スーパー LSI、ゥノレトラ LSIと呼称されることもある。
[0105] また、集積回路化の手法は LSIに限るものではなぐ専用回路で実現してもよい。 L SI製造後に、プログラムすることが可能な FPGA (Field Programmable Gate Array) や LSI内部の回路セルの接続や設定を再構成可能なリコンフィギユラブル'プロセッ サを利用してもよい。
更には、半導体技術の進歩又は派生する別技術により LSIに置き換わる集積回路 化の技術が登場すれば、当然その技術を用いて機能ブロックの集積ィ匕を行ってもよ い。バイオ技術の適応などが可能性として有り得る。
[0106] (15)前記実施形態及び前記変形例をそれぞれ組み合わせた構成も、本発明に含 まれる。
産業上の利用可能性
[0107] 本発明は、デジタルコンテンツを配信するサービス業において、不正解析により秘 匿にすべき情報が暴露されるのを防止する仕組みとして利用することができる。また 、本発明は、デジタルコンテンツを再生する再生装置を生産する製造業においても 禾 IJ用することがでさる。

Claims

請求の範囲
[1] オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに 基づき生成された複数の被保護プログラムを記憶しているプログラム記憶手段と、 解析の対象とされた被保護プログラムを無効化する無効化手段と、
前記複数の被保護プログラムから、無効化されて ヽない 1の被保護プログラムを選 択する選択手段と、
選択された 1の被保護プログラムを実行する実行手段と
を備えることを特徴とするセキュア処理装置。
[2] 前記セキュア処理装置は、
前記実行手段力^の被保護プログラムを実行する際に、前記被保護プログラムが解 祈の対象とされているか否かを判断する解析検出手段を備え、
前記無効化手段は、
無効化されている被保護プログラムを示す無効化リストを記憶する無効化リスト記憶 部と、
前記解析検出手段により、前記被保護プログラムが解析の対象とされていると判断 されると、前記無効化リストに、前記被保護プログラムが無効化された旨を登録する 無効化登録部とを備える
ことを特徴とする請求項 1に記載のセキュア処理装置。
[3] 前記無効化リストは、当該無効化リストの正当性を証明するための署名データが付 加されており、
前記選択手段は、
前記無効化リストに付加されて!ヽる前記署名データを検証し、前記署名データの検 証の結果、前記無効化リストの不正が検出された場合には、被保護プログラムの選択 処理を中止する
ことを特徴とする請求項 2に記載のセキュア処理装置。
[4] 前記複数の被保護プログラムは、オリジナルプログラムを難読ィ匕した難読ィ匕プログ ラムであって、各被保護プログラムは、難読化の方法及び Z又は難読化の程度がそ れぞれ異なることにより、異なるコードを有するプログラムである ことを特徴とする請求項 1に記載のセキュア処理装置。
[5] 前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、
前記難読ィ匕の方法として、前記オリジナルプログラムに含まれる複数の部分プログ ラムの内、異なる部分プログラムを暗号ィ匕する方法を用い、生成されたプログラムで ある
ことを特徴とする請求項 4に記載のセキュア処理装置。
[6] 部分プログラムを暗号ィ匕することにより生成された前記 1以上の被保護プログラムは
暗号ィ匕の対象である各部分プログラム力 異なる暗号ィ匕アルゴリズム及び Z又は異 なる暗号鍵を用いて暗号ィ匕されたプログラムである
ことを特徴とする請求項 5に記載のセキュア処理装置。
[7] 前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、
前記難読ィ匕の方法として、前記オリジナルプログラムに含まれる複数の命令の内、 相互に依存関係にな 、命令である並列命令の実行順序を入れ替える方法を用い、 生成されたプログラムである
ことを特徴とする請求項 4に記載のセキュア処理装置。
[8] 前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、
前記難読ィ匕の方法として、前記オリジナルプログラムに含まれる命令を、当該命令 と異なる処理を行い、且つ当該命令と同一の結果を出力する 1以上の命令力 なる 恒等命令に置き換える方法を用い、生成されたプログラムである
ことを特徴とする請求項 4に記載のセキュア処理装置。
[9] 前記複数の被保護プログラムの内、何れか 1以上の被保護プログラムは、
前記難読ィ匕の方法として、前記オリジナルプログラムの結果に影響を与えな 、命令 であるダミー命令を、前記オリジナルプログラムに挿入する方法を用い、生成された プログラムである
ことを特徴とする請求項 4に記載のセキュア処理装置。
[10] 前記セキュア処理装置は、
前記実行手段力^の被保護プログラムを実行する際に、前記被保護プログラムが解 祈の対象とされているか否かを判断する解析検出手段を備える
ことを特徴とする請求項 1に記載のセキュア処理装置。
[11] 前記解析検出手段は、
前記実行手段による被保護プログラムの実行中にデバッガを検出すると、検出した デバッガを無効化するデバッガ検出部と、
前記デバッガ検出部によりデバッガが検出されると、前記実行手段に対し、実行中 止を指示する指示部とを備え、
前記実行手段は、前記指示部から実行中止の指示を受け付けると、実行中である 前記被保護プログラムの実行を中止する
ことを特徴とする請求項 10に記載のセキュア処理装置。
[12] 前記解析検出手段は、
被保護プログラムの改ざんを検出する改ざん検出部と、
前記改ざん検出部により改ざんが検出されると、前記実行手段に対し、実行中止を 指示する指示部とを備え、
前記実行手段は、前記指示部から実行中止の指示を受け付けると、前記被保護プ ログラムの実行を中止する
ことを特徴とする請求項 10に記載のセキュア処理装置。
[13] 前記解析検出手段は、
前記被保護プログラムが解析の対象とされて ヽると判断すると、前記解析に係る解 析ログ情報を生成するログ情報生成部を備える
ことを特徴とする請求項 10に記載のセキュア処理装置。
[14] 前記セキュア処理装置は、ネットワークを介して外部サーバと接続されており、 前記ログ情報生成部は、生成した前記解析ログ情報を、前記外部サーバへ送信す る
ことを特徴とする請求項 13に記載のセキュア処理装置。
[15] 前記解析検出手段は、更に、
所定の数値に設定された閾値を記憶している閾値記憶部と、
被保護プログラムが解析の対象とされて ヽると判断した回数を保持し、前記判断の 都度、保持している回数を更新する解析回数計数部とを備え、
前記無効化手段は、
前記解析回数計数部が保持して!/ヽる回数が前記閾値を超える場合に、前記被保 護プログラムを無効化する
ことを特徴とする請求項 10に記載のセキュア処理装置。
[16] 前記選択手段は、
無効化されて 、な 、 1の被保護プログラムをランダムに選択する
ことを特徴とする請求項 1に記載のセキュア処理装置。
[17] 前記選択手段は、
選択した被保護プログラムを識別するための情報を記憶しており、
前記情報を参照し、未選択であり、且つ無効化されていない 1の被保護プログラム をランダムに選択する
ことを特徴とする請求項 1に記載のセキュア処理装置。
[18] 前記選択手段は、
予め所定の選択順序を記憶しており、
無効化されていない 1の被保護プログラムを、前記選択順序に応じて選択する ことを特徴とする請求項 1に記載のセキュア処理装置。
[19] 前記選択手段は、
前記複数の被保護プログラムにつ 、て、各被保護プログラムの難読ィ匕の程度を示 す難読化度情報を記憶しており、
前記難読化度情報を参照し、難読化の程度の高 ヽ被保護プログラムカゝら順に実行 されるように、無効化されて 、ない 1の被保護プログラムを選択する
ことを特徴とする請求項 1に記載のセキュア処理装置。
[20] 前記選択手段は、
前記複数の被保護プログラムにつ 、て、各被保護プログラムの難読ィ匕の程度を示 す難読化度情報を記憶しており、
前記難読化度情報を参照し、難読化の程度の低 ヽ被保護プログラムカゝら順に実行 されるように、無効化されて 、ない 1の被保護プログラムを選択する ことを特徴とする請求項 1に記載のセキュア処理装置。
[21] 前記選択手段は、
実行速度の速 、被保護プログラム力も順に実行されるように、無効化されて 、な ヽ 1の被保護プログラムを選択する
ことを特徴とする請求項 1に記載のセキュア処理装置。
[22] 前記セキュア処理装置は、ネットワークを介して、被保護プログラムを保持して 、る プログラム更新サーバと接続されており、
前記選択手段は、
無効化されていない被保護プログラムの残数が、所定の閾値以下である力否かを 判断する判断部と、
前記判断部により、所定の閾値以下であると判断された場合に、前記プログラム更 新サーバに対し、新たな被保護プログラムの送信を要求するプログラム要求部と、 前記プログラム更新サーバから、新たな被保護プログラムを受信するプログラム受 信部と
を備えることを特徴とする請求項 1に記載のセキュア処理装置。
[23] オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに 基づき生成された複数の被保護プログラムを記憶しているプログラム記憶手段と、 解析の対象とされた被保護プログラムを無効化する無効化手段と、
前記複数の被保護プログラムから、無効化されて ヽない 1の被保護プログラムを選 択する選択手段と、
選択された 1の被保護プログラムを実行する実行手段と
を備えることを特徴とする集積回路。
[24] セキュア処理装置で用いられるセキュア処理方法であって、
前記セキュア処理装置は、
オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに 基づき生成された複数の被保護プログラムを記憶しており、
前記セキュア処理方法は、
解析の対象とされた被保護プログラムを無効化する無効化ステップと、 前記複数の被保護プログラムから、無効化されて ヽない 1の被保護プログラムを選 択する選択ステップと、
選択された 1の被保護プログラムを実行する実行ステップと
を含むことを特徴とするセキュア処理方法。
ネットワークを介して接続されてセキュア処理装置とプログラム更新サーバとから構 成されるセキュア処理システムであって、
前記セキュア処理装置は、
オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに 基づき生成された複数の被保護プログラムを記憶している第 1記憶手段と、 解析の対象とされた被保護プログラムを無効化する無効化手段と、
前記複数の被保護プログラムから、無効化されて ヽない 1の被保護プログラムを選 択する選択手段と、
選択された 1の被保護プログラムを実行する実行手段と、
前記第 1記憶手段に記憶されている複数の被保護プログラムの内、無効化されて いない被保護プログラムの残数力 所定の閾値以下である場合に、前記プログラム 更新サーバに対し、被保護プログラムの送信を要求する要求手段とを備え、 前記プログラム更新サーバは、
複数の被保護プログラムを記憶している第 2記憶手段と、
前記セキュア処理装置から、被保護プログラムの送信要求を受け付ける要求受付 手段と、
前記要求受付手段が前記送信要求を受け付けると、前記第 2記憶手段から、 1以 上の被保護プログラムを読み出して、前記セキュア処理装置へ送信する送信手段と を備える
ことを特徴とするセキュア処理システム。
PCT/JP2006/303320 2005-02-25 2006-02-23 セキュア処理装置、及びセキュア処理システム WO2006090800A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP06714460A EP1862937A1 (en) 2005-02-25 2006-02-23 Secure processing device and secure processing system
JP2007504784A JP4796050B2 (ja) 2005-02-25 2006-02-23 セキュア処理装置、及びセキュア処理システム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005050419 2005-02-25
JP2005-050419 2005-02-25

Publications (1)

Publication Number Publication Date
WO2006090800A1 true WO2006090800A1 (ja) 2006-08-31

Family

ID=36927437

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/303320 WO2006090800A1 (ja) 2005-02-25 2006-02-23 セキュア処理装置、及びセキュア処理システム

Country Status (5)

Country Link
EP (1) EP1862937A1 (ja)
JP (1) JP4796050B2 (ja)
KR (1) KR20070105989A (ja)
CN (1) CN101128833A (ja)
WO (1) WO2006090800A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008047830A1 (fr) * 2006-10-20 2008-04-24 Panasonic Corporation Dispositif et procédé de surveillance de falsification de l'information d'application
JP2008117111A (ja) * 2006-11-02 2008-05-22 Megachips Lsi Solutions Inc メモリシステム
JP2008287441A (ja) * 2007-05-16 2008-11-27 Toshiba Corp 情報処理装置およびプログラムの不正利用抑止方法
JP2009271884A (ja) * 2008-05-12 2009-11-19 Fuji Xerox Co Ltd 情報処理装置及び情報処理プログラム
JP2010517119A (ja) * 2007-01-18 2010-05-20 パナソニック株式会社 難読化支援装置
US7930743B2 (en) 2006-09-01 2011-04-19 Fuji Xerox Co., Ltd. Information processing system, information processing method, information processing program, computer readable medium and computer data signal
JP2014531663A (ja) * 2011-08-05 2014-11-27 ケーピーアイティ テクノロジーズ リミテッド 埋め込みソフトウェアコードの保護システム
JP2014241648A (ja) * 2010-10-28 2014-12-25 アップル インコーポレイテッド 無線ネットワーク上で電子識別コンポーネントを配信する方法及び装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8436638B2 (en) * 2010-12-10 2013-05-07 International Business Machines Corporation Switch to perform non-destructive and secure disablement of IC functionality utilizing MEMS and method thereof
KR101322402B1 (ko) * 2011-11-25 2013-11-21 농업협동조합중앙회 어플리케이션 보안 시스템 및 방법, 이를 위한 통신 단말기
EP2979211B1 (en) 2013-03-27 2020-09-09 Irdeto B.V. Protecting software application
JP6654652B2 (ja) * 2015-03-13 2020-02-26 エバースピン コーポレーション 動的なセキュリティーモジュール生成方法及び生成装置
JP7173928B2 (ja) * 2019-06-05 2022-11-16 ファナック株式会社 数値制御装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186753A (ja) * 2001-12-21 2003-07-04 Canon Electronics Inc 電子機器、電子機器の制御方法、および電子機器の制御プログラム
US20040003278A1 (en) * 2002-06-28 2004-01-01 Microsoft Corporation Secure and opaque type library providing secure data protection of variables
JP2004348710A (ja) * 2003-05-20 2004-12-09 Samsung Electronics Co Ltd 固有番号を用いたプログラムの耐タンパ手法、及び難読化されたプログラムアップグレード方法、並びにこれらの方法のための装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186753A (ja) * 2001-12-21 2003-07-04 Canon Electronics Inc 電子機器、電子機器の制御方法、および電子機器の制御プログラム
US20040003278A1 (en) * 2002-06-28 2004-01-01 Microsoft Corporation Secure and opaque type library providing secure data protection of variables
JP2004348710A (ja) * 2003-05-20 2004-12-09 Samsung Electronics Co Ltd 固有番号を用いたプログラムの耐タンパ手法、及び難読化されたプログラムアップグレード方法、並びにこれらの方法のための装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930743B2 (en) 2006-09-01 2011-04-19 Fuji Xerox Co., Ltd. Information processing system, information processing method, information processing program, computer readable medium and computer data signal
WO2008047830A1 (fr) * 2006-10-20 2008-04-24 Panasonic Corporation Dispositif et procédé de surveillance de falsification de l'information d'application
JP2008117111A (ja) * 2006-11-02 2008-05-22 Megachips Lsi Solutions Inc メモリシステム
JP2010517119A (ja) * 2007-01-18 2010-05-20 パナソニック株式会社 難読化支援装置
US9589115B2 (en) 2007-01-18 2017-03-07 Panasonic Intellectual Property Management Co., Ltd. Obfuscation assisting apparatus
JP2008287441A (ja) * 2007-05-16 2008-11-27 Toshiba Corp 情報処理装置およびプログラムの不正利用抑止方法
JP2009271884A (ja) * 2008-05-12 2009-11-19 Fuji Xerox Co Ltd 情報処理装置及び情報処理プログラム
JP2014241648A (ja) * 2010-10-28 2014-12-25 アップル インコーポレイテッド 無線ネットワーク上で電子識別コンポーネントを配信する方法及び装置
JP2014531663A (ja) * 2011-08-05 2014-11-27 ケーピーアイティ テクノロジーズ リミテッド 埋め込みソフトウェアコードの保護システム

Also Published As

Publication number Publication date
JP4796050B2 (ja) 2011-10-19
CN101128833A (zh) 2008-02-20
KR20070105989A (ko) 2007-10-31
JPWO2006090800A1 (ja) 2008-07-24
EP1862937A1 (en) 2007-12-05

Similar Documents

Publication Publication Date Title
JP4796050B2 (ja) セキュア処理装置、及びセキュア処理システム
US10970424B2 (en) Program execution device
US20080168562A1 (en) Secure Processing Device and Secure Processing System
US8555089B2 (en) Program execution apparatus, control method, control program, and integrated circuit
JP4891902B2 (ja) 電子機器、更新サーバ装置、鍵更新装置
KR100851631B1 (ko) 보안 모드 제어 메모리
US8438402B2 (en) Electronic terminal, control method, computer program and integrated circuit
JP4912879B2 (ja) プロセッサの保護された資源へのアクセスに対するセキュリティ保護方法
US9311487B2 (en) Tampering monitoring system, management device, protection control module, and detection module
JP5646631B2 (ja) デバイスの監査
TWI468971B (zh) 安全軟體下載
US8370935B1 (en) Auditing a device
US8949989B2 (en) Auditing a device
US8516574B2 (en) Software update system, management apparatus, recording medium, and integrated circuit
EP2579178A1 (en) Controller, control method, computer program, program recording medium, recording apparatus, and method of manufacturing recording apparatus
CN107870793B (zh) 一种应用程序中加载so文件的方法及装置
EP2051181A1 (en) Information terminal, security device, data protection method, and data protection program
JP6146476B2 (ja) 情報処理装置及び情報処理方法
CN1745357A (zh) 用于在设备中执行测试的方法、系统及设备
US8418256B2 (en) Memory control apparatus, content playback apparatus, control method and recording medium
CN106971105B (zh) 一种基于iOS的应用程序遭遇假面攻击的防御方法
KR20110133447A (ko) 칩셋 상에서 적어도 하나의 기능을 활성화하는 방법 및 그 방법을 구현하기 위한 칩셋
Abrahamsson Security Enhanced Firmware Update Procedures in Embedded Systems
JP2010061182A (ja) ソフトウェア管理方法、ソフトウェア管理装置およびソフトウェア管理プログラム
JP2006085598A (ja) プログラム実行装置及びプログラム実行方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007504784

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1020077018213

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 200680006050.4

Country of ref document: CN

Ref document number: 11885051

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2006714460

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2006714460

Country of ref document: EP