WO2006126686A1 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
WO2006126686A1
WO2006126686A1 PCT/JP2006/310584 JP2006310584W WO2006126686A1 WO 2006126686 A1 WO2006126686 A1 WO 2006126686A1 JP 2006310584 W JP2006310584 W JP 2006310584W WO 2006126686 A1 WO2006126686 A1 WO 2006126686A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
data
access
address
normal mode
Prior art date
Application number
PCT/JP2006/310584
Other languages
English (en)
French (fr)
Inventor
Kouichi Kanemura
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 JP2007517924A priority Critical patent/JP4886682B2/ja
Priority to US11/914,525 priority patent/US7874009B2/en
Publication of WO2006126686A1 publication Critical patent/WO2006126686A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Definitions

  • the present invention relates to a data processing apparatus that processes protected data by a cooperative operation of a plurality of processes, and more particularly to a technique for preventing unauthorized processing of protected data.
  • Patent Document 1 Japanese Patent Laid-Open No. 2-155034
  • Patent Document 2 JP-A-4-102920
  • Patent Document 3 Japanese Patent Laid-Open No. 2001-318787
  • Non-Patent Document 1 Lie, D., Thekkath, C. A., Mitchell, M., Lincoln,
  • Non-Patent Document 2 E. Suh, D. Clarke, B. Gassend, M. van Dijk, and S. Devadas.The AEGIS processor architecture for tampereviden t and tamper resistant processing.
  • an object of the present invention is to provide a data processing apparatus that can prevent leakage of data even when data handled by each program is subjected to cooperative processing.
  • the present invention includes a processor that operates according to a program, and switches between a normal mode in which a process that is an execution unit of the program operates and a protection mode in which the operation of the process is suppressed.
  • An access prohibiting means for permitting access by the first process and prohibiting access by other processes to the processing target data of the first process in the normal mode;
  • a detection means for detecting a call instruction for instructing a call of the second process from the first process, a switching means for switching from the normal mode to the protection mode when the call instruction is detected, and in the protection mode Determining whether the second process has the right to use the data to be processed.
  • Control means for controlling the access to the target data so as to be permitted.
  • the data processing apparatus of the present invention has the above-described configuration, so that the first process can pass data to the second process so that it is not known to processes other than the second process. It is possible to prevent data leakage by other operating processes.
  • the second program is updated and the function is changed. If you lose the right to use the data to be processed! Even so, the determination means can detect it and the control means can prevent information leakage.
  • the access prohibition means operates in the normal mode and a holding unit that holds the memory and management information indicating an area that is allowed to be accessed in the memory for each process so as to be rewritable only in the protection mode.
  • An access restriction unit that accesses the memory in accordance with the management information, and when the control means determines that the use right is granted by the determination means, the management information of the second process includes: Information for permitting access to the area in which the target data is stored on the memory may be added.
  • the management information held by the holding unit includes one or more pieces of information in which an address in the memory is associated with a key corresponding to the address
  • the access restriction unit includes the memory including the address of the memory An access request included in the access request, an address determination unit that determines whether or not the access power is included in the management information, and the access request when the access request is determined to be included. If it is a write request, the data to be written is encrypted with the key corresponding to the address and written to the area indicated by the address, and if the access request is a read request, the memory And an access execution unit that decrypts and outputs data read from the address using a key corresponding to the address.
  • data is encrypted and recorded in the memory with a key for each address determined for each process, and the encrypted and recorded data is decrypted and read.
  • the access can prevent the data from being used properly.
  • the access request to the memory includes a read request for reading data from the memory, a write request for data to the memory, a use permission request for the area of the memory desired to be used, and other requests. It shall include a shared setting request to use the memory area that the process is permitted to use in its own process.
  • the data may be a process code.
  • Each process is assigned an individual process identifier, and the management information held by the holding unit associates an address in the memory with a process identifier permitted to access the address.
  • the access restriction unit is assigned to an acquisition unit that obtains an access request to the memory including an address of the memory, an address included in the access request, and a process that requested the access.
  • An address determination unit that determines whether or not the information associated with the process identifier is included in the management information, and if it is determined that the information is included, causes the process that requested access to access the address in the memory It is good also as including an access execution part.
  • the process indicated by the process identifier corresponding to the access-requested address included in the management information indicates access to the address of the memory. Therefore, it is possible to prevent the data from being leaked by other processes.
  • security requirement information indicating whether or not to allow execution of each of one or more data processing methods is assigned to the data, and each of the processes can be executed with or without the ability to execute each of the above data processing methods.
  • the call command includes processing specification information indicating one or more data processing methods! /, Deviation, and the determination means includes the security requirement information indicated by the processing specification information. The right to use the data processing method is permitted and the function information of the second process indicates that the data processing method indicated by the processing specifying information can be executed. It is good also as deciding.
  • the switching means saves the context of the process operating in the normal mode to the memory, and When switching from the protection mode to the normal mode, the context of the process operating in the normal mode may be restored from the memory.
  • execution of context save / restore processing can be limited to the case in the protection mode, so that an illegal operation is performed on the context and data is leaked by the process operating in the normal mode. Can be prevented.
  • the first process and the second process include an interrupt process or an exception process for handling an interrupt or an exception when an interrupt or an exception occurs while each of the first process and the second process is operating.
  • the apparatus further includes a vector table holding means for holding a vector table indicating processing to be executed in an rewritable state only in the protection mode when an interrupt or an exception occurs, and a process for operating the vector table.
  • the vector tape is executed in the protection mode, and the interrupt process or exception process of the second process is executed when an interrupt or exception occurs in the normal mode. This may include vector table rewriting means for rewriting.
  • the determination means further includes a process request receiving unit that receives a use request for an area in the memory, a use determination unit that determines whether the requested address is already used, and a use If it is determined that there is a use authority by the authority determination unit and the authority determination unit that determines whether or not there is a use authority for the data requested to be stored at the address of the requested process
  • the management information of the process that has requested use includes a management information registration unit for registering information permitting access to the area indicated by the address.
  • the management information in accordance with a request from the process, is generated so that only the process that has requested use can use the requested memory area, and is stored in the area by another process. Data can be prevented from being leaked.
  • the management information registration unit generates a key when the authority determination unit determines that there is a use authority, and information that associates the address with the generated key as information that permits the access Please add it to the management information of the process that requested use.
  • the data processing apparatus further includes debugging means for performing debugging related to the process.
  • the switching means further enables the debugging means and switches to the protection mode when switching to the normal mode. In this case, the debugging means may be disabled.
  • the data processing method of the present invention includes a processor that operates according to a program, and is used for a data processing device that operates by switching between a normal mode in which a process that is an execution unit of the program operates and a protection mode in which the operation of the process is suppressed.
  • a normal mode an access prohibition step for permitting access by the first process and prohibiting access by other processes in the normal mode, and a normal process.
  • a detection step for detecting a call instruction for instructing the calling of the second process from the first process
  • a switching step for switching from the normal mode to the protection mode when the call instruction is detected
  • a protection mode The second process power The right to use the data to be processed!
  • the second access process is performed with respect to the second access prohibition unit. And a control step of controlling the process so that access to the processing target data is permitted in the normal mode.
  • the computer program of the present invention includes a processor that operates according to the program.
  • a computer program used for a data processing device that operates by switching between a normal mode in which a process that is an execution unit of the program operates and a protection mode in which the operation of the process is suppressed, and in the normal mode, the first process
  • a detection step of detecting a call instruction to be performed, a switching step of switching from the normal mode to the protection mode when the call instruction is detected, and the second process in the protection mode is authorized to use the data to be processed.
  • the access prohibition means is permitted to allow the second process to access the processing target data in the normal mode.
  • the first process power can pass data to the second process so that it is not known to processes other than the second process, and the data is transferred by other processes operating in the normal mode. Leakage can be prevented.
  • An integrated circuit of the present invention includes a processor that operates according to a program, and operates by switching between a normal mode in which a process that is an execution unit of the program operates and a protection mode in which the operation of the process is suppressed
  • access prohibition means for permitting access by the first process to the data to be processed by the first process and prohibiting access by other processes, and in the normal mode
  • the first process Detecting means for detecting a call instruction for instructing a second process, switching means for switching from a normal mode to a protection mode when the call instruction is detected, and in the protection mode, the second process is configured to A means for determining whether or not the user has authority to use the data to be processed, and a protection mode.
  • Control means for controlling the second process to be permitted to access the processing target data in the normal mode.
  • the first process power can pass data to the second process so that it is not known to processes other than the second process, and the data is transferred by other processes operating in the normal mode. Leakage can be prevented.
  • the determination means can detect it and the control means can prevent information leakage.
  • FIG. 1 is a diagram schematically showing a main part of a configuration of a program protection device according to the present invention.
  • FIG. 2 is a diagram showing a hardware configuration of a program protection device according to the present invention.
  • FIG. 3 is a diagram showing a configuration of a key register.
  • FIG. 4 is a diagram showing a configuration of data to be protected.
  • FIG. 5 is a diagram schematically showing the structure of a file for recording a program.
  • FIG. 6 is a diagram schematically showing the structure of a file for recording a program.
  • FIG. 7 is a diagram showing a software configuration of the program protection device.
  • FIG. 8 is a diagram showing a configuration of a management table.
  • FIG. 9 is a diagram showing a configuration of a management table.
  • FIG. 10 is a flowchart showing an unauthorized operation prevention control process.
  • FIG. 11 is a flowchart showing processing of state switching operations A and B.
  • FIG. 12 is a flowchart showing processing of the unauthorized operation prevention control unit in response to a request from program X.
  • FIG. 13 is a flowchart showing the overall operation of the program.
  • FIG. 14 is a flowchart showing the overall operation of the program (continuation of FIG. 13).
  • FIG. 15 is a flowchart showing the operation of the program protection device.
  • FIG. 17 shows the state of the management table during operation of the program protection device.
  • FIG. 18 shows the status of the management table during operation of the program protection device.
  • ⁇ 19] Indicates the status of the management table during operation of the program protection device.
  • FIG. 20 is a flowchart showing processing for determining whether or not a function flag of a program satisfies a security requirement.
  • FIG. 21 is a flowchart showing the operation of a program in the program protection device.
  • FIG. 22 is a block diagram showing a configuration of a program protection device according to a modification.
  • FIG. 23 is a diagram showing a configuration of an ID register according to a modification.
  • FIG. 1 is a diagram schematically showing main parts of the configuration of the program protection device 0101.
  • the program protection device 0101 includes a CPU 0201, an unauthorized operation prevention circuit 0105, a storage medium 0216, It is comprised including.
  • the CPU 0201 is a processor that executes a program.
  • the unauthorized operation prevention circuit 0105 is a circuit having a mechanism for preventing unauthorized execution of programs executed by the CPU 0201 and unauthorized access between programs.
  • the storage medium 0216 stores protected data 0108, which is confidential information such as contents and personal information, handled by a program executed by the CPU 0201 in an encrypted state.
  • Examples of programs executed on the CPU 0201 include an operating system (OS) 0104, a program A0102, a program B0103, a program C0107, and an unauthorized operation prevention control unit 0106 as shown in FIG.
  • OS operating system
  • A0102 program A0102
  • program B0103 program B0103
  • program C0107 program C0107
  • unauthorized operation prevention control unit 0106 as shown in FIG.
  • the unauthorized operation prevention control unit 0106 obtains a memory area use request from each of the program A0102, program B0103, program C0107, and other programs and OS0104, and determines whether or not the memory area can be used. Control 0105 Thus, the memory area is used only in a mode requested by the request source program.
  • An operating system (OS) 0104 is basic software for operating a program A0102, a program B0103, a program C0107, and other programs (not shown).
  • Program A0102, program B0103, and program C0107 are application programs that execute arbitrary processing.
  • the program A010 2 is a program that decrypts the protection target data 0108, which is the content
  • the program B0103 is a player program that plays the content
  • the program A0102 and the program BO 103 Suppose that they cooperate when processing content.
  • the program A0102 decrypts the encrypted content that is the protection target data 0108, and causes the program B0103 to reproduce the decrypted content.
  • the program A0102 includes a call instruction for calling the program B0103, and when the CPU0201 detects the call instruction, the CPU 0201 issues a state switching instruction indicating a protection mode to be described later to the unauthorized operation prevention circuit 0105.
  • the unauthorized operation prevention circuit 0105 performs processing by switching to the protection mode based on the state switching instruction.
  • the call instruction includes information indicating a data processing method such as content output, copy, move, special reproduction, and digital output.
  • the unauthorized operation prevention control unit 0106 controls the unauthorized operation prevention circuit 01 05 in the protection mode, thereby preventing the program C0107 from illegally using the content or destroying the content. ing.
  • the program protection device 0101 includes a CPU 0201, a nonvolatile memory 0203, a nose encryption circuit 0204, a key register 0205, an access limit circuit 0207, a state switching circuit 0208, which are connected to each other via a bus 0210.
  • Debugger I / F0209 storage media 0216, non-volatile memory 0221, RAM0202 connected to nose encryption circuit 0204, and access limit times
  • a protection memory 0206 connected to the path 0207 is included.
  • the program protection device 0101 is a computer system that also includes a microprocessor, ROM, RAM, and the like.
  • the ROM stores a computer program
  • the program protection device 0101 achieves its function by operating according to the microprocessor power and the computer program.
  • the CPU 0201 is a microprocessor that executes programs stored in the RAM 0202 and the protection memory 0206.
  • the state switching circuit 0208 receives a state switching instruction selectively indicating either the normal mode or the protection mode from the CPU 0201, and the debugger IF0209, the key register 0 205, and the access restriction circuit 0207 are
  • the protection mode for switching to the mode corresponding to the state switching instruction is a mode in which only a specific program with high security operates, and the normal mode is a mode in which other programs operate.
  • the state switching circuit 0208 When the received state switching instruction indicates the protection mode, the state switching circuit 0208 outputs a status signal A0211 indicating the protection mode to the debugger IZF0209, invalidates the debugger I ZF209, and stores it in the key register 0205. Status signal B0217 indicating protection mode is output, and status signal C0218 indicating protection mode is output to the access restriction circuit 0207.
  • the state switching circuit 0208 When the received state switching instruction indicates the normal mode, the state switching circuit 0208 outputs a status signal A0211 indicating the normal mode to the debugger IZF0209 and sets the normal mode to the key register 0205. Status signal B0217 is output, and a status signal C0218 indicating the normal mode is output to the access restriction circuit 0207. Further, the state switching circuit 02 08 changes the vector table 0219 as necessary. The operation for switching the state and the change of the vector table 0219 will be described later.
  • the access restriction circuit 0207 is a circuit that controls the connection between the bus 0210 and the protection memory 0206.
  • the state signal C received from the state switching circuit 0208 indicates the normal mode
  • the access restriction circuit 0207 When the connection between the bus 0210 and the protection memory 0206 is cut off and the protection mode is indicated, the bus 0210 and the protection memory 0206 are connected. Therefore, a program operating in the normal mode cannot access the data in the protection memory 0206.
  • the debugger IZF0209 is an interface to which a program debugger outside the program protection device 0101 can be connected, and is connected to the CPU 0201!
  • the debugger IZF0209 connects the program debugger and the CPU 0201 when the status signal A notified from the status switching circuit 0208 indicates the normal mode, and connects with the program debugger when the status signal A indicates the protection mode. Disconnect from CPU0201.
  • the key register 0205 is a circuit that outputs an encryption key corresponding to the address requested to be accessed to the bus encryption circuit 0204.
  • the key register 0205 is a command key information table 0305 indicating correspondence between addresses and instruction bus encryption keys, and a data register indicating correspondence between addresses and data bus encryption keys.
  • the key information table 0306 is held, the address signal 0 301 is acquired from the bus encryption circuit 0204, the instruction bus key number key signal 0302 associated with the address indicated by the address signal 0301, and the data
  • the bus encryption key signal 0303 is output to the bus encryption circuit 0204.
  • the instruction key information table 0305 includes instruction key information T0311, T0312, T0313 • ⁇ , and each instruction key information indicates a correspondence between an address and an instruction bus encryption key.
  • the data key information table 0306 includes data key information ⁇ 0321, ⁇ 0322, ⁇ 0323, and the like. Each data key information indicates a correspondence between an address and a data bus encryption key.
  • the change of the setting of the key register 0205 can be changed only when the status signal ⁇ output from the status switching circuit 0208 indicates the protection mode, and is notified by the unauthorized operation prevention control unit 0106 via the bus 0210.
  • the setting signal 0304 is changed.
  • the RAM 0202 is a memory device connected to the bus encryption circuit 0204 !.
  • the bus encryption circuit 0204 uses the key notified from the key register 0205 to correspond to the key. Codes and data that are input to and output from the associated memory addresses are decrypted.
  • the bus encryption circuit 0204 detects whether the CPU 0201 is accessing the RAM 0202 for fetching instructions and whether it is accessing for data access, and in the case of fetching instructions to the same physical address. Uses an instruction bus encryption key, and in the case of data access, encrypts and decrypts codes and data using a data bus encryption key.
  • the nonvolatile memory 0203 stores a file A0212, a file B0213, a file C0214, a file OS0215, a BIOS0405, and a file S0220.
  • the file A0212 includes a code encryption key 0710, a code 0711 of the program A0102, a signature A 0115, and a function flag A0111.
  • the code encryption key 0710 is a key (KC — A) used to encrypt the code 0711 of the program A.
  • the code encryption key 0710 is encrypted with a public key encryption algorithm! /.
  • the secret key corresponding to the public key used when encrypting the code encryption key 0710 is held by the unauthorized operation prevention control unit 0106.
  • the code 0711 of the program A describes the processing performed by the program A0102.
  • the code 0711 of the program A is encrypted with the code encryption key 0710.
  • the signature A0115 stores a vendor signature obtained by encrypting the code 0711 of the program A.
  • Function flag A0111 is the program A0102 force function 0714, 0715, 0716, 0717, 0
  • the function flag indicates whether the program has file output, copy, move, special playback, and digital output functions.
  • the function flag is, for example, 5-bit data, and a file output function, a copy function, a movement function, a special playback function, and a digital output function are assigned to each bit.
  • the function flag when the file output and movement functions are provided is 10100 in binary representation, and 00001 is expressed in binary representation when only the digital output function is provided.
  • Function flag A0111 of program A01 02 is 00000 in binary notation, indicating that not all functions are provided.
  • the function flag C0113 of the file C0214 indicates that the file output function 0734 is provided
  • the function flag OS0114 of the file OS0215 indicates that the file output function 0744, the copy function 0745, and the move function 0746 are provided.
  • the non-volatile memory 0221 is a memory device that stores a vector table 0219 indicating addresses of exceptions and interrupt handlers.
  • the CPU 0201 when the CPU 0201 detects the occurrence of an interrupt or an exception, the CPU 0201 refers to the vector table 0219 to obtain the position of the handler to be executed next.
  • the handler address corresponding to various exceptions and interrupts stored in the vector table 0219 can be changed only by the state switching circuit 0208, and only the software operating in the protection mode can be used. You can request to change the setting contents of vector table 0219.
  • the storage medium 0216 stores the protection target data 0108, which is confidential information such as contents and personal information, in an encrypted state.
  • the protection target data 0108 includes data 0701, a data encryption key 0702, a security requirement list 0109, and signature data 0708.
  • Data 0701 is data to be protected, and is encrypted using a data encryption key 0702. However, the data 0701 is not necessarily encrypted.
  • Data encryption key 0702 is encrypted with the public key encryption algorithm and is encrypted. Since the secret key corresponding to the public key used at this time is held by the unauthorized operation prevention control unit 0106, only the unauthorized operation prevention control unit 0106 can decrypt it.
  • the security requirement list 0109 includes security requirements 0703, 0704, 0705, 0706, 070 7.
  • the security requirement list is, for example, 5-bit data in which each bit indicates security requirements.Each bit corresponds to the file output function, copy function, move function, special playback function, and digital output function, and the bit value is A case of 1 indicates that the function is possible, and a bit value of ⁇ indicates that the function is not possible.
  • the security requirement list when the file output and movement functions are possible is 10100 in binary representation, and 00001 is expressed in binary representation when only the digital output function is possible.
  • the security requirements 0703, 0704, 0705, 0706, and 0707 for the data 0701 are all impossible.
  • the signature data 0708 is signature data for the security requirement list 0109, and the validity of the security requirement list 0109 can be verified by using the signature data.
  • the program operating on the CPU 0201 of the program protection device 0101 includes an operating system (OS) 0104 including an OS interrupt management unit 0404, and a program A0102 including a program A interrupt management unit 0402.
  • the program B 0103 includes the program B interrupt management unit 0403
  • the program C 0107 includes the program C interrupt management unit 0406
  • the security kernel 0401 includes the program unauthorized operation prevention control unit 0106
  • the BIOS 0405 includes the program B interrupt management unit 0403, the program C 0107 including the program C interrupt management unit 0406, the security kernel 0401, the unauthorized operation prevention control unit 0106, and the BIOS 0405.
  • the BIOS 0405 is stored in the nonvolatile memory 0203 and is executed by the CPU 0201 in the normal mode when the program protection device 0101 is turned on.
  • BIOS 0405 loads the OS 0104 into the RAM 0202 after performing basic hardware settings.
  • BIOS0405 loads only OS0104.
  • the OS 0104 is an OS having a general operating system function, and after starting, the program A 0102, the program B 0103, and the program C 0107 are started in order.
  • the OS interrupt management unit 0404 included in the OS0104 includes a handler for handling an interrupt or an exception that occurs when the OS0104 is operating.
  • the program A0102, the program B0103, and the program C0107 are programs that perform general-purpose processing that operates on the OS0104, and handle the protection target data 0108.
  • the interrupt management unit 0402 included in the program A0102 includes a handler for handling an interrupt or exception that occurs when the program A0102 is operating.
  • interrupt management unit 0403 included in the program B0103 and the interrupt management unit 0403 included in the program C0107 include handlers that handle interrupts and exceptions that occur when the programs B0103 and C0107 are operating.
  • Program A0102, program B0103, program C0107, and OS0104 are software that operates in the normal mode, and are loaded into the RAM0202 and executed by the CPU0201.
  • the security kernel 0401 is software that performs system control in the protection mode, and is loaded into the protection memory 0206 and executed by the CPU 0201.
  • the security kernel 0401 handles interrupts and exceptions that occur in the protection mode, and executes processing for the handled interrupts and exceptions.
  • the contents of the vector table 0219 in the protection mode are rewritten by the state switching unit 0206 so that the CPU 0201 executes the handler in the security kernel 0401 when an interrupt or exception occurs immediately before switching to the protection mode.
  • the security kernel 0401 transfers the control subject to the unauthorized operation prevention control unit 0106.
  • the control subject When the unauthorized operation prevention control process by the unauthorized operation prevention control unit 0106 is completed, the control subject returns to the security kernel 0401, and the security kernel 0401 issues a state switching request to the state switching circuit 0 208 to shift to the normal mode. Output.
  • the unauthorized operation prevention control unit 0106 controls the unauthorized operation prevention circuit 0105 to prevent an unauthorized operation of a program including the OS 0104 and the like.
  • the unauthorized operation prevention control unit 0106 is a program that operates in the protection mode, and is a protection memory. It is loaded into 0206 and executed by the CPU0201. Therefore, the security kernel 0401 and the unauthorized operation prevention control unit 0106 cannot be accessed from a program operating in the normal mode without access authority to the protected memory 0206.
  • the unauthorized operation prevention control unit 0106 manages a management table 0110 that is data for controlling the unauthorized operation prevention circuit 0105.
  • management table 0110 will be described with reference to FIGS.
  • the management table 0110 is a group of management data for protecting the program data and the code area.
  • the data area management information table group 0501, the code area management information table group 0502 shown in FIG. Includes security requirement management information table T0310, program management information table T0410, and current program management table 0503 shown in Fig. 9.
  • a data area management information table group 0501, a code area management information table group 0502, a security requirement management information table ⁇ 0310, a program management information table ⁇ 0410, and a powerful program management table 0503 are stored in the protection memory 0206.
  • the unauthorized operation prevention control unit 0106 displays the contents of the code area management information table group and the program management information table according to the registration request made by the OS 0104 for the program ⁇ 0102, the program ⁇ 0103, and the program C0107 Register or renew.
  • the unauthorized operation prevention control unit 0106 registers or updates the contents of the data area management information table group according to the protection setting request generated by another program in the data area protection setting process described later, and performs data area sharing setting described later. Then, register or update the contents of the security requirement management information table according to the sharing setting request made from other programs.
  • Program management information table T0410 contains program management information T0411, T0412, TO 413, T0414.
  • Each program management information includes a program management information identifier, a code address, a program identifier, a shared program identifier, and a function flag.
  • the program management information identifier is an identifier for identifying program management information.
  • the illegal operation prevention control unit 0106 registers the program management information, the illegal operation prevention control unit 0106 assigns a value that does not overlap with a value already used.
  • the code address is an address area that is managed by each program management information.
  • the program identifier is an identifier of a program including a code loaded in the address area, and is assigned to each program in advance.
  • the shared program identifier is an identifier of a program that shares the address area code.
  • the function flag is a flag indicating whether or not file output, copy, move, special reproduction, and digital output functions are permitted for the code in the address area.
  • the function flag is, for example, 5-bit data, and a file output function, a copy function, a move function, a special playback function, and a digital output function are assigned to each bit.
  • the function flag is 10100 in binary representation when file output and movement are permitted, and 0 0001 in binary representation when only the digital output function is permitted.
  • the code area management information table group 0502 includes program code area management information tables ⁇ ⁇ ⁇ ⁇ ⁇ 0210, ⁇ 0220, ⁇ 0230, and the like.
  • the program code region management information table is generated for each program.
  • the code area management information table T0210 generated for a program whose program identifier is P1 includes code area management information T0211, T0212, T0213-•, and the data area management information includes a code area identifier, Includes code address and code encryption key.
  • the code area identifier is an identifier for identifying the code area management information, and is already used when the unauthorized operation prevention control unit 0106 generates the code area management information. V, assign a value that does not overlap with the value.
  • the code address is an address area that is managed by the code area management information.
  • the code encryption key is a key for encrypting and decrypting a code held in the memory area indicated by the address area, and is used for code access.
  • Data area management information table group 0501 includes data area management information table T0110,
  • the data area management information table is generated for each program, and includes a data area identifier, a data address, and a data encryption key.
  • the data area identifier is an identifier for identifying each data area management information.
  • the data address is an address area that is managed by each data area management information.
  • the data encryption key is a key for encrypting and decrypting data held in the memory area indicated by the address area, and is used for data access.
  • Security requirement management information table T0310 is a data area management information table group 0
  • This table is used to manage security requirements for each data area management information included in 501.
  • the security requirement management information includes a security requirement management information identifier, a data address, a generated program identifier, a shared program identifier, and a security requirement.
  • the security requirement management information identifier is an identifier for identifying security requirement management information.
  • the data address is an address area managed by the security area management information.
  • the generated program identifier is an identifier of a program that first sets data for the address area on the physical memory.
  • the shared program identifier is an identifier for identifying a program sharing the memory area with respect to the address area on the physical memory.
  • the security requirement defines a method of protecting data held in the address area on the physical memory indicated by the data address.
  • the security requirement has the same structure as the function flag.
  • the security requirement is 5-bit data, and each bit includes a file output function, a copy function, a move function, and a special playback function. The execution of the digital output function is assigned.
  • the function flag is 10100 in binary representation when file output and transfer are permitted, and 00001 in binary representation when only digital output is permitted.
  • the identifier of the currently running program is stored.
  • the BIOS 0405 is activated (step S2011).
  • the BIOS 0405 performs basic settings for the hardware of the program protection device 0101 and then loads the OS 0104 into the RAM 0202 (step S2012).
  • OS0104 is connected to OS0104, which is its own program, against unauthorized operation prevention control unit 0106! Perform the registration process described later (step S2020), connect to program A0102! /, Perform the registration process described later (step S2021), perform the registration process for program B0103 (step S2022), Registration processing for C0107 is performed (step S2023).
  • the unauthorized operation prevention control unit 0106 can process each request such as memory protection from the OS 0104, the program A01 02, the program B0103, and the program C0107.
  • OS0104 sequentially selects the programs A0102, B0103, and C0107 that have been successfully registered. (Step S2031).
  • the OS 0104 makes a protection setting to be described later for the data area used in its own program to the unauthorized operation prevention control unit 0106 (step S2040).
  • the program A0102 performs the later-described protection setting for the data area used in its own program for the unauthorized operation prevention control unit 0106 (step S2041), and the program B0103 provides for the unauthorized operation prevention control unit 0106.
  • the program A0102 performs the data area sharing setting described later for sharing the data area to be used with other programs to the unauthorized operation prevention control unit 0106 (step S2051).
  • the program B0103 sends an illegal operation prevention control unit 0106 to the program B0103 when necessary.
  • a data area sharing setting is made to share the data area to be used with other programs (step S 2053).
  • step S2061 the OS 0104 switches the current program to be operated as necessary (step S2061), and the current program executes a process to be performed by the own program (step S2062).
  • step S2021 the program registration process in step S2021, the protection setting process in step S2041, the data area sharing setting process in step 2051, and the program switching process in step S2061 will be described.
  • Step S2020, Step SS2021, Step S2022, Step S2023, Step S2040, Step S2041, Step S2042, Step S2043, Step S2051 Steps S2052 and S2053 are all executed according to the basic processing flow shown in FIGS.
  • steps S2020 to S2023 will be described by taking step S2021 as an example, and steps S2040 to S2043 will be described as! Steps S2041 will be described as Italy, and steps S2051 to S2053 will be described! In the following, step S2051 will be described as a column.
  • Step S2021 in FIG. 21 is a process of registering information about the OS0104 force program A in the improper operation prevention control unit 0106.
  • the program X shown in FIGS. 11 and 12 shows a program that operates according to the flowchart, and in this embodiment, the program A0102, program B0103, program C0107, or OS0104 is any power. Here, it corresponds to OS0104 force program X, OS interrupt management unit 0404 force, corresponds to program X interrupt management unit, and OS0104 requests registration of program A !.
  • the program X first writes a registration request for registering the program A in the data area on the RAM 0202 that is designated in advance for the program X.
  • the registration request includes the key (code encryption) used for encrypting the code of program A, which is the program to be registered, as shown in FIG. 5, the signature data of the program, and the function flag. It is. Further, the registration request includes program load address information.
  • the key is encrypted by the public key encryption algorithm, and the secret key corresponding to the public key used for the key encryption is stored in the unauthorized operation prevention control unit 0106.
  • the program signature data is used to verify the correctness and completeness of the program.
  • the program load address information is an address area in which a program to be registered is loaded.
  • Program X generates a software interrupt caused by the program A registration request (step S0801), and transfers control to the program X interrupt manager.
  • the interrupt management unit for program X investigates the cause of the software interrupt generated by program X, reads the registration request from the predetermined data area, and confirms the type of interrupt (step S0802).
  • the interrupt management unit for program X confirms that the interrupt type is a software interrupt caused by a registration request for program A.
  • the program X interrupt management unit stores the registration request in the shared memory (step S0803).
  • the shared memory is a predetermined memory area in the RAM 0202 used for communication between the normal mode and the protection mode.
  • the state switching operation A for switching the operation state of the program protection device 0101 from the normal mode to the protection mode is executed.
  • program X is OS0104.
  • the program X interrupt management unit requests the state switching circuit 0208 to switch the state to the protection mode (step S 1700).
  • the state switching circuit 0208 stores the state in the CPU in a predetermined data area managed by the program X in the RAM 0202 (step S1701).
  • the state switching circuit 0208 saves the context of the program X, which is the state switching request source, in an area predetermined for use by the program X in the RAM 2022.
  • the state switching circuit 0208 outputs the state signal A0211 indicating the protection mode, and disables the debugger IZ F0209 (step S 1702).
  • the state switching circuit 0208 clears the CPU internal state (step S1703).
  • state switching circuit 0208 outputs a state signal B0217 indicating a protection mode, and changes the setting of key register 0205 (step S 1704).
  • the key register 0205 can change the instruction key information table 0305 and the data key information table 0306 using the setting signal 0304 notified via the bus 0210.
  • the state switching circuit 0208 outputs a state signal C0218 indicating the protection mode, changes the setting of the access restriction circuit 0207 (step S 1705), and the access restriction circuit 0207 also protects the bus 0210 force. Open access to memory 0206.
  • the open state indicates a state where access from the bus 0210 to the protected memory 0206 is permitted.
  • the state switching circuit 0208 changes the setting of the vector table 0219 so that the CPU 0201 executes the handler in the security kernel 0401 when an interrupt or exception occurs (step S 1706).
  • the state switching circuit 0208 returns the context stored in the protection memory 0206 immediately before switching from the previous protection mode to the normal mode to the CPU (step S 1707).
  • the program protection device 0101 enters the protection mode, and the state switching operation A ends.
  • the security kernel 0401 transfers control to the unauthorized operation prevention control unit 0106 (step S0815).
  • misbehaving prevention controller 0106 obtains the request from the shared memory (step S0806) o
  • the request is the registration request.
  • the unauthorized operation prevention control unit 0106 executes unauthorized operation prevention control processing (step S0807).
  • step S 0807 the details of the unauthorized operation prevention control process (step S 0807) when the request is the registration request will be described with reference to FIG.
  • the unauthorized operation prevention control unit 0106 determines which request is the request (step S600).
  • step S600 registration
  • step S0612 Since the request is a registration request (step S600: registration), the process branches to step S0612.
  • the unauthorized operation prevention control unit 0106 uses the security requirement management information table T0310 and the program management information table T0410 to determine the program load address information. It is determined whether or not the code address area force indicated in this field is an unused area (step S0612).
  • step S0612 If the area is an unused area (YES in step S0612), the unauthorized operation prevention control unit 0106 verifies the signature of the program and the signature of the function flag (step S0613).
  • step S0613 If the signature verification result is OK (YES in step S0613), the unauthorized operation prevention control unit 0106 generates a new code area management information table and data area management information table (step S0614).
  • the program management information table T0410 and the code area management information table are updated (step S0615).
  • the unauthorized operation prevention control unit 0106 Upon updating the program management information table T0410, the unauthorized operation prevention control unit 0106 adds a program management information after generating a unique program identifier.
  • the unauthorized operation prevention control unit 0106 decrypts the code encryption key and adds code area management information.
  • the unauthorized operation prevention control unit 0106 generates a processing result.
  • the processing result includes the program identifier generated when the management table is updated (step S0615). If the code address area is not used in the unused area (NO in step S0612) and the signature verification fails (NO in step S0613), the cause of the process failure is included in the process result.
  • the processing result generated here is stored in the shared memory (step S080 8).
  • unauthorized operation prevention control unit 0106 transfers control to security kernel 0401 (step S0816).
  • the security kernel 0401, the state switching unit 0208, and the program X interrupt management unit execute the state switching operation B to switch from the protection mode to the normal mode (step S0809).
  • program X is OS0104 as described above.
  • the security kernel 0401 requests the state switching circuit 0208 to switch the state by outputting a state signal C0218 indicating the normal mode (step S 1710).
  • the state switching circuit 0208 stores the CPU context in the protected memory 0206 (step S0817).
  • the access restriction circuit 0207 receives the status signal C0218 and blocks access from the bus 0210 to the protection memory 0206.
  • the shut-off state indicates a state where the protected memory 0206 cannot be accessed from the bus 0210.
  • the state switching circuit 0208 controls the state signal B0217 and changes the setting of the key register 0205 (step S 1713).
  • the key register 0205 prevents the command key information table 0305 and the data key information table 0306 from being changed by using the setting signal 0304 notified via the bus 0210.
  • the state switching circuit 0208 clears the CPU internal state (step S1714).
  • the state switching circuit 0208 changes the setting of the vector table 0219 (step S1715).
  • the state switching circuit 0208 sets the CPU 0201 to execute the handler included in the program X interrupt management unit when an interrupt or exception occurs.
  • the vector table 0219 is set to execute the handler included in each interrupt management unit.
  • the interrupt control unit 0106 can instruct the state switching circuit 0208 which interrupt management unit is set to execute a handler.
  • the state switching circuit 0208 controls the state signal A0211 to enable the debugger IZF0209 (step S 1716).
  • the state switching circuit 0208 restores the context of the program X (step S1 717), and then the state switching circuit 0208 transfers control to the program X interrupt management unit (step S1718), and the program protection device 0101 Enters the normal mode, and state switching operation B ends.
  • the interrupt management unit for program X acquires the processing result from the shared memory (step S0811).
  • the program X interrupt management unit stores the processing result in the data area managed by the program X (step S0812), and then returns from the software interrupt (step S0813).
  • Step S2041 in FIG. 21 is a process in which program A requests the illegal operation prevention control unit 0106 to set protection of the memory area to be used.
  • program X is assumed to be program A0102.
  • the program X writes a data area protection setting request including a data address and security requirements to a shared memory that is a data area on the RAM 0202 specified in advance for the program itself.
  • the data address includes a head address and a tail address of a memory area that the program X desires to use as a data area.
  • the security requirement is a protection attribute that the program X desires to set for the data stored at the data address, and has the same data structure as the security requirement list 0109.
  • the security requirement is 5-bit data, and whether or not to execute a file output function, a copy function, a move function, a special reproduction function, and a digital output function is assigned to each bit.
  • the security requirement may be a security requirement list 0109.
  • step S0802 the unauthorized operation prevention control unit 0106 obtains the data area protection setting request.
  • Steps S0803 to S0806 are similar to the program registration process.
  • step S0600 of FIG. 10 which is a detail of step S0807, the unauthorized operation prevention control unit 0106 determines that the processing request is a data area protection setting request (protection of step S0600), and step S0602 Migrate to
  • the unauthorized operation prevention control unit 0106 includes the data address strength included in the data area protection setting request and the security requirement management information in the security requirement management information table T0310. (Step S0602), if it is not registered, it is determined that it is an unused area, and if it is registered, it is determined that it is not an unused area.
  • step S0602 If it is an unused area (YES in step S0602), the security requirement management information table T0310 and the data area management information table group 0501 are updated (step SO 603).
  • the unauthorized operation prevention control unit 0106 adds a new security that uses the start address and the end address as data addresses in the data area management information table corresponding to the request source program. Add requirements management information.
  • the unauthorized operation prevention control unit 0106 generates and registers a random value for the data encryption key in the new security requirement management information.
  • the unauthorized operation prevention control unit 0106 sets the updated information in the data area management information table in the unauthorized operation prevention circuit 0105 (step S0604).
  • the unauthorized operation prevention control unit 0106 performs an unauthorized operation on the set of the data address of the new security requirement management information and the data encryption key as the setting of the updated information in the unauthorized operation prevention circuit 0105. This is added to the data key information table 0306 of the prevention circuit 0105.
  • step S0602 if the received data address area has already been secured by another program (NO in step S0602), the unauthorized operation prevention control unit 0106 updates the management table (step S0603). ), And the process of changing the data area setting (step S0604) is not performed, and the process proceeds to step S0808.
  • the unauthorized operation prevention control unit 0106 stores the processing result in the shared memory (step S0808).
  • the processing result includes error factors such as normal termination, data address area reserved by another program, and V.
  • the subsequent processing is the same as the program registration processing described above.
  • step S2051 in FIG. 21 program A responds to the unauthorized operation prevention control unit 0106. And a process for requesting the sharing setting of the memory area to be used.
  • the program X is the program AO 102.
  • the program X writes the data area sharing setting request including the data address and the security requirement and the signature AO 115 to the shared memory that is the data area on the RAM 0202 that is designated in advance for the program itself.
  • the data address includes a head address and a tail address of a memory area that the program X desires to share as a data area, and the security requirement includes information on a function flag AO 111 of the file A0212.
  • the signature A0115 is used by the unauthorized operation prevention control unit 0106 to confirm the validity of the function flag A0111.
  • the unauthorized operation prevention control unit 0106 acquires the data area sharing setting request.
  • Steps S0803 to S0806 are the same as those in the program registration process.
  • step S0600 in FIG. 10 which is the details of step S0807, it is determined that the processing request is a data area sharing setting request (sharing in step S0600).
  • step S0802 the unauthorized operation prevention control unit 0106 obtains the data area sharing setting request from the shared memory on the RAM 0202.
  • step S0632 the data address included in the data area sharing setting request is obtained.
  • the security requirement management information table determines whether it is registered as security requirement management information in T0310. If it is registered (YES in step S0632), the unauthorized operation prevention control unit 0106 stores the data area. The validity of the sharing setting request is determined (step S0633).
  • step S0633 If it is determined to be valid (YES in step S0633), the unauthorized operation prevention control unit 0106 reads the security requirement management information table T0310 and the data area for the requesting program.
  • the area management information table is updated (step S0634).
  • the unauthorized operation prevention control unit 0106 specifically adds the identifier of the program requesting sharing to the shared program identifier of the security requirement management information corresponding to the target data area.
  • the identifier stored in the current program management table 0503 is used as the identifier of the requesting program.
  • the security requirement management corresponding to the data area to which the requesting program specifies the security requirements specified add as information security requirements.
  • the security requirement specified by the requesting program is stricter than the existing security requirement, because the security requirement has the same data structure as security requirement list 0109. , When security requirements are higher than existing ones. Further, in updating the data area management information table, the unauthorized operation prevention control unit 0106 adds the data area management information to the data area management information table for the request source program.
  • the requested address area is set as the data address of the data area management information to be added, and the encryption key used for encryption / decryption of the data area to be shared is set as the data encryption key. Set.
  • the unauthorized operation prevention control unit 0106 changes the data protection setting (step S06 35).
  • the unauthorized operation prevention control unit 0106 reflects the updated contents of the data area management information table updated in step S0634 in the unauthorized operation prevention circuit 0105, and generates a processing result indicating normal termination.
  • step S0632 determines whether it is registered (NO in step S063 2) and if the setting is not valid (NO in step S0633).
  • the unauthorized operation prevention control unit 0106 performs processing indicating an error. Generate results.
  • the unauthorized operation prevention control unit 0106 stores the generated processing result in the shared memory ( Step S0808).
  • the processing result includes error factors such as normal termination, data address area reserved by another program, and V.
  • the subsequent processing is the same as the program registration processing described above.
  • Step S2061 in FIG. 21 is a process for requesting the program A0102 force unauthorized operation prevention control unit 010 6 to switch the current program and for the request.
  • program X is program A0102, and it is requested to switch to program B0103.
  • program X wishes to transmit to a shared memory, which is a data area in RAM0202 designated in advance for its own program, to the switching request including the identifier of the program to be switched and to the program to be switched.
  • a shared memory which is a data area in RAM0202 designated in advance for its own program, to the switching request including the identifier of the program to be switched and to the program to be switched.
  • step S0802 the interrupt management unit for program X acquires the program switching request.
  • Steps S0803 to S0806 are similar to the program registration process.
  • step S0600 of FIG. 10 which is the details of step S0807, the processing request is
  • the program switching request is determined (switching of step S0600).
  • step S0802 the unauthorized operation prevention control unit 0106 acquires the switching request from the RAM 0202, and further acquires argument data (step S0621).
  • the argument data is information transmitted to the program power of the switching source and the program of the switching destination, and includes commands and the like.
  • the unauthorized operation prevention control unit 0106 stores the acquired argument data in the protected memory 0206.
  • the storage position of the argument data in the RAM 0202 is determined in advance, and the unauthorized operation prevention control unit 0106 knows in advance.
  • the position of the argument data need not be fixed, but may be included in the switching request.
  • the unauthorized operation prevention control unit 0106 updates the current program management table (step S0622).
  • the unauthorized operation prevention control unit 0106 changes the setting of the unauthorized operation prevention circuit 0105 (step S0623).
  • the unauthorized operation prevention control unit 0106 erases the contents of the instruction key information table and the data key information table stored in the key register 0205, and is included in the data area management information table group 0501. Write the data address and data encryption key pair stored in each data area management information in the data area management information table corresponding to the switching destination program to the data key table of the unauthorized operation prevention circuit 0105. .
  • the unauthorized operation prevention control unit 0106 stores the argument data stored in advance in the protection memory 0206 in the RAM 0202 managed by the switching destination program (step S0624).
  • the unauthorized operation prevention control unit 0106 generates a processing result including a branch instruction to the switching destination program, and stores the processing result in the shared memory (step S0808).
  • the unauthorized operation prevention control unit 0106 can pass the argument data to another program via the protected memory.
  • the illegal operation prevention control unit 0106 when requested to transfer data from a program including OS0104 to another program, the data leaks to a program other than the request source program and the request destination program. In this way, it is possible to perform delivery.
  • the program A0102 After decrypting the content that is the protection target data 0108, the program A0102 sends the decrypted content to the program B in a predetermined data area to request the reproduction of the decrypted content.
  • a processing request including argument data is written, a software interrupt is generated to switch to program B0103, and control is transferred to program A interrupt management unit 0402 (step S0901).
  • Program A interrupt management unit 0402 obtains the argument data from the data area, and confirms that the interrupt type is a software interrupt for switching to program B0103 (step S0902). .
  • the program A interrupt management unit 0402 stores a request for switching to the program B0103 and argument data in the shared memory (step S0903).
  • program A interrupt management unit 0402, state switching circuit 0208, and security kernel 0401 execute state switching operation A described above to switch from the normal mode to the protection mode (step S0905).
  • step S0905 the security kernel 0401 that has become the controlling entity transfers control to the unauthorized operation prevention control unit 0106 (step S0907).
  • the unauthorized operation prevention control unit 0106 acquires the request and the argument data stored in Step S0903 from the shared memory (Step S0908).
  • the unauthorized operation prevention control unit 0106 determines that the program switching process is necessary because the request is a switching request to the program B0103, and performs the above-described program switching process 0602. (S0909). [0133] The unauthorized operation prevention control unit 0106 stores the result of the switching process in the shared memory (step S0910).
  • the unauthorized operation prevention control unit 0106 transfers control to the security kernel (step S09l).
  • the security kernel 0401, the state switching circuit 0208, and the OS interrupt management unit 0404 execute the state switching operation B described above to switch from the protection mode to the normal mode (step S0913). Since switching of programs requires processing of the operating system, control is transferred to the OS interrupt management unit 0404 after returning to the normal mode.
  • the OS interrupt management unit 0404 acquires the processing result from the shared memory (step S 0915), and transfers control to the OS 0104 (step S0916).
  • OS0104 performs switching processing from program A0102 to program B0103 (step S0917).
  • OS0104 performs processing such as program context switching.
  • the OS 0104 transfers control to the OS interrupt management unit 0404 in order to request the unauthorized operation prevention control unit 0106 to switch to the program B 0103 (step S0918).
  • the OS interrupt management unit 0404 stores the request for switching to the program B0103 in the shared memory (step S0919).
  • steps S0921 to S0929 are the same processes as steps S0905 to S0913, and thus the description thereof is omitted.
  • the program B interrupt management unit 0403 acquires a processing result from the shared memory (step S0931).
  • the program B interrupt management unit 0403 stores the processing result in the data area managed by the program B0103 (step S0932), and then returns from the software interrupt (step S0933).
  • FIG. 16 shows the state of the RAM 0202 during operation of the program protection device 0101.
  • the codes of the program A0102, the program B0103, the program C0107, and the OS0104 are encrypted by the code encryption keys KC—A, KC—B, KC—C, and KC—OS and stored in the nonvolatile memory 0203, respectively.
  • BIOS 0405 stored in the nonvolatile memory 0203 loads the final A0212, the final B0 213, the file C0214, and the file OS0215 into the RAM0202.
  • the code area 1201 of program A0102 (including constants) is loaded at address 1000 and address 1100.
  • program B0103, program C0107, and OS0104 are loaded at addresses 2000 to 2100, 3000 to 3100, and 4000 to 4100, respectively.
  • protection target data 0108 stored in the storage medium 0216 is loaded into the protection target data area 1210 at addresses 8000-9000.
  • protection target data 0108 may be loaded by other programs that need not be loaded by the BIOS 0405.
  • BIOS 0405 makes a program registration request to the unauthorized operation prevention control unit 0106.
  • the unauthorized operation prevention control unit 0106 registers each program according to the program registration process 0601.
  • the management table 0110 includes the data area management information table T0500, ⁇ 0600, ⁇ 0700, ⁇ 0800, the code area management information table TO 900, T1000, ⁇ 1100, ⁇ 1200, and program management information.
  • Table Tl 300 and security requirement management information table T1400 are generated.
  • BIOS0405 is program A0102, program B0103, program CO
  • BIOS 0405 registers only OS0104, it can register OS0104 power program A0102, program B0103, and program C0107.
  • Program management information T1301 to T1304 is added to the program management information table T1300 by updating the management table of the program registration process 0601 (step S0615).
  • the function flags 0113 and 0114 of the programs 0107 and 030104 have the file output function
  • the function flags of the program management information T1303 and T1304 have the file output function.
  • the code area management information T0901 and 2090 2 are the best for the program ⁇ ⁇ ⁇ code area management information table ⁇ 0900! ]
  • “A—CO” is set as the code area identifier, “1000 to 1099” as the code address, and “KC_A” as the code encryption key.
  • the unauthorized operation prevention control unit 0106 decrypts the code code key 0710 stored in the file A0212 with the secret key.
  • code area management information T0902 “undefined area” is set as the code area identifier, “non-defined area” is set as the code address, and “KC_RA” is set as the code encryption key.
  • non-defined area means a code area other than the code address area defined in the code area management information other than the code area management information T0902 registered in the code area management information table T0900 for program A This means an area, and KC_RA is used as the code encryption key in this area.
  • KC-RA is a random value generated by the unauthorized operation prevention control unit 0106.
  • Other codes and area management ⁇ Blueprint tape tapes T1000, T1100, T1200 Figure 16 [As shown] Is set.
  • FIG. 15 is a flowchart showing the operation of the program protection device 0101.
  • the program A0102 requests the illegal operation prevention control unit 0106 to set data protection in order to make the data area 1202 of the program A usable (step S1101).
  • program A0102 assigns the data area from 1500 to 1599 to program AO.
  • Program A0102 performs the same operation as step S0801 to step S0813, and sets data protection.
  • data area management information T0501 is added to the program A data area management information table T0500, and security requirement management information T1401 is added to the security requirement management information table T1400.
  • the unauthorized operation prevention control unit 0106 performs the data area protection setting process 0603.
  • the data encryption key KD-A1 of the data area management information T0501 is a random value generated by the unauthorized operation prevention control unit.
  • the program A0102 performs setting so that the data in the protection target data area 1210 can be handled (step S1102).
  • the program A0102 sets the data area for the unauthorized operation prevention control unit 0106. Make a request.
  • the data area setting request includes the address of the protected data area 1210 and the security requirements.
  • the program A0102 instructs the unauthorized operation prevention control unit 0106 to use the security requirement list 0109 included in the protection target data 0108 as the security requirement.
  • the unauthorized operation prevention control unit 0106 performs processing up to (step S0801) force (step S0813) shown in FIG.
  • step S0807 the unauthorized operation prevention control unit 0106 performs the same process as the data area protection setting process 0603.
  • step S0602 After the process of checking whether it is an unused area (step S0602), whether the function flag of program A satisfies the security requirement described in the security requirement list 0109 of the protected data 0108 shown in the flowchart of FIG. A process for confirming this is added.
  • the unauthorized operation prevention control unit 0 106 first confirms the validity of the security requirement list (step S1801).
  • step S1801 If it is determined that the security requirement list is not valid (NO in step S1801), the unauthorized operation prevention control process ends.
  • the unauthorized operation prevention control unit 0106 confirms the validity of the security requirement list 0109 using the signature data 0708.
  • the unauthorized operation prevention control unit 0106 compares the security requirement with the function flag (step S 1802).
  • the unauthorized operation prevention control unit 0106 compares the security requirement list 01 09 whose validity has been confirmed with the function flag of the program A included in the program management information T1301, and checks whether the security requirements are satisfied.
  • Security requirement management information table Check whether or not the security requirements of the security requirement management information for which the generated program included in T1400 is program A satisfies the security requirement list 0109. Confirm.
  • step SI 802 If it is determined that the security requirements are not satisfied (NO in step SI 802), the unauthorized operation prevention control process is terminated.
  • the unauthorized operation prevention control unit 0106 updates the data area management information table (Step S0603).
  • the unauthorized operation prevention control unit 0106 adds the data area management information T0502 to the program A data area management information table T0500 and also adds the security requirement management information T1402 to the security requirement management information table T1400.
  • the data encryption key 0702 is stored in the data encryption key of the data area management information T0502.
  • the data encryption key 0702 is indicated as “KD_S”.
  • the program A0102 requests the unauthorized operation prevention control unit 0106 to secure the data area from addresses 1600 to 1699 with the security requirements based on the security requirement list 0109 (step S1103).
  • the security requirement list 0109 includes information indicating that the protection target data 0108 is file output prohibited.
  • the unauthorized operation prevention control unit 0106 determines whether the requested security requirement is equivalent or strict to the security requirement of all data areas already generated by the program A0102. Use to confirm.
  • management information is not updated. If the required security requirements are the same or strict as the security requirements of all data areas that have already been generated! /, The data area management information T0503 is stored in the data area management information table T0500 for program A. As security requirements are added Security requirement management information T1403 is added to the physical information table T1400.
  • the program A0102 reads the protection target data 0108 from the protection target data area 1210, and processes the protection target data 0108 (step S1105).
  • the processing result is stored in the data area 1203 of program A.
  • the program A0102 performs a switching process from the program A0102 to the program B0103 (step S1106).
  • step S 1106 Before the switching process (step S 1106) is executed, information on the program A code area management information table T0900 and the program A data area management information table T0500 is set in the unauthorized operation prevention control unit 0105.
  • step S 1106 When the switching process (step S 1106) is executed, information on the program B code area management information table T1000 and the program B data area management information table T0600 is set in the unauthorized operation prevention control unit 0105. Is done.
  • each code area management information table is stored in the instruction key information table 0305 of the key register 0205 constituting the unauthorized operation prevention control unit 0105 so that a key corresponding to the program being operated is set in the key register.
  • the settings of each data area management information table are reflected in the data key information table 03 06.
  • the program protection device 0101 performs the switching process from the program A0102 to the program B0103 (step S1106), and the program A0102 is loaded! Therefore, unauthorized execution of program A0102 by program B0103 can be prevented.
  • code area 1201 located at addresses 1000 to 1099
  • code area The code 1201 is decrypted using the code encryption key KC-RB.
  • step S1106 when the program protection device 0101 performs the switching process from the program A0102 to the program B0103 (step S1106) and an interrupt or exception occurs, it is included in the program B interrupt management unit 0403 The handler is executed.
  • control other than program B0103 is not deprived of control by interrupts and exceptions.
  • the program B0103 requests the illegal operation prevention control unit 0106 to set data protection in order to make the data area 1205 of the program B usable (step S1107).
  • the program B0103 requests the unauthorized operation prevention control unit 0106 to secure the data area from 2500 to 2599 in a state where only the program B0103 is accessible.
  • the data area management information T0601 is added to the program B data area management information table T0600, and the security requirement management information T1404 is added to the security requirement management information table T1400.
  • the program B0103 performs data protection setting in order to share the data area 1203 with the program A (step S 1108).
  • the program B0103 requests the unauthorized operation prevention control unit 0106 to secure the data area 1203 from addresses 1600 to 1699 with security requirements indicating that output to the file is impossible.
  • the data area 1203 is already secured by the program A0102, the data area is shared.
  • the program protection device 0101 performs the same processing as steps S0801 to S0813 shown in FIG.
  • the unauthorized operation prevention control unit 0106 performs the data area sharing setting process 0604 shown in FIG.
  • the unauthorized operation prevention control unit 0106 checks whether or not the requested data area exists in the security requirement management information table T1400 (step S0632).
  • the unauthorized operation prevention control unit 0106 can confirm the presence of the security requirement management information T1403.
  • the unauthorized operation prevention control unit 0106 confirms whether or not the function flag included in the program management information T1302 of program B satisfies the security requirement included in the security requirement management information T1403 of the requested data area.
  • the security requirement of the data area 1203 to be shared cannot be output to a file, whereas the function flag of the program B0103 cannot be output to a file, so it is determined to be appropriate.
  • the identifier of program B is set as the shared program identifier included in the security requirement management information T1403.
  • step S0634 the management table is updated (step S0634), and the data area management information T0602 is added to the program B data area management information table T0600.
  • step S0635 the data protection setting is changed (step S0635), and the setting of the key register 0205 is changed.
  • the program A data area 1203 can be referenced from the program B0103.
  • program B0103 performs processing using the data in data area 1203 (step S1109).
  • the program protection device 0101 performs a process for switching the program B force to C (step S1110).
  • the program C0107 requests the unauthorized operation prevention control unit 0106 to set data protection in order to make the data area 1207 of the program C usable (step S1111).
  • the program C0107 requests the unauthorized operation prevention control unit 0106 to secure the data area from addresses 3500 to 3599 in a state where only the program C can be accessed.
  • data area management information T0701 is added to the data area management information table T0700 for program C
  • security requirement management information T1405 is added to the security requirement management information table T1400.
  • program C0107 performs data protection setting in order to share data area 1203 with program A0102 (step S1112).
  • the program C0107 requests the unauthorized operation prevention control unit 0106 to secure the data area 1203 from addresses 1600 to 1699 with security requirements indicating that output to the file is possible.
  • step S1108 Similar to the setting of the shared memory (step S1108), the unauthorized operation prevention control unit 0106 performs the data area sharing setting process 0604.
  • the shared memory setting (step S1112) is different from the shared memory setting (step S1108), and the shared memory setting fails.
  • the unauthorized operation prevention control unit 0106 checks whether the security requirement of the security requirement management information T1403 is satisfied by the function flag of the program management information T1303.
  • the unauthorized operation prevention control unit 0106 determines that the program does not satisfy the security requirement of the data area 1203 (NO in step S0633), The unauthorized operation prevention control unit 0106 ends the unauthorized operation prevention control process.
  • the code encryption key such as the code encryption key 0710 is encrypted with the public key encryption algorithm.
  • the present invention is not limited to this.
  • Each code encryption key may be encrypted by a common key encryption method.
  • the common key used for encryption is held by the unauthorized operation prevention control unit 0106.
  • the program does not necessarily need to be encrypted.
  • the code encryption key 0710 is a null key. Further, the code encryption key 0710 can include algorithm information used when encrypting the code 0711 of the program A.
  • the data encryption key 0702 may be encrypted by the common key encryption method.
  • the common key used for encryption is the unauthorized operation prevention control unit 01. 06 hold.
  • the data encryption key 0702 is a null key.
  • the data encryption key 0702 can include algorithm information used when the data 0701 is encrypted.
  • the power of restricting access to the RAM0202 using the unauthorized operation prevention circuit 0105 is not limited to this.
  • an unauthorized operation prevention circuit 2105 may be used in place of the unauthorized operation prevention circuit 0105.
  • the unauthorized operation prevention circuit 2105 restricts access to the RAM 0202 using the program ID instead of performing encryption and decryption on the code and data stored in the RAM 0202.
  • the unauthorized operation prevention circuit 2105 includes an ID register 2205 instead of the key register, and includes a bus connection permission circuit 2204 instead of the bus signal circuit.
  • the ID register 2205 includes an instruction ID information table 2305 indicating the correspondence between the address and the instruction bus connection ID, and a data HD information table indicating the correspondence between the address and the data bus connection ID. 2306 and is added from the bus connection permission circuit 2204.
  • the response signal 2301 is acquired, and the instruction bus connection ID 2302 and the data bus connection ID 2303 associated with the address indicated by the address signal 2301 are output to the bus connection permission circuit 2204.
  • the instruction HD information table 2305 includes instruction HD information T2311, T2312, T231 3... For each instruction.
  • the data HD information table 2306 includes data HD information T2321, ⁇ 2322, ⁇ 2 323, etc., and each data HD information indicates the correspondence between the address and the data bus connection ID. It is shown.
  • the contents of the management table 0110 managed by the unauthorized operation prevention control unit 0106 are related to IDs to be set in the unauthorized operation prevention circuit 2105 instead of those described in the above embodiment. Information.
  • the setting of the ID register 2205 can be changed using the setting signal 2304 notified by the bus 0210 only when the status signal B output from the status switching circuit 0208 indicates the protection mode.
  • the RAM 0202 is a memory device connected to the bus connection permission circuit 2204.
  • the bus connection permission circuit 2204 compares the data bus connection ID and code nose connection ID notified from the ID register 2205 with the IDs unique to the currently operating program. Allows access to the indicated memory area.
  • the unique ID of the currently running program is the unique ID of the current program set in the current program management table T0503.
  • the bus connection permission circuit 2204 detects whether a program running on the CPU 0201 accesses the RAM0202 for the instruction fetch! /, Or accesses for the data access!
  • the instruction bus connection ID is used for instruction fetch to a physical address
  • the data bus connection ID is used for data access.
  • information management such as code area, data area, security requirement, program management information, memory sharing, and execution unit switching are performed in units of programs.
  • the present invention is not limited to this, and may be performed for each other unit such as a process or a thread.
  • the processes and threads that operate cooperatively in the normal mode and the protected mode may be different processes or threads of the same program that are not included in the processes and threads included in different programs.
  • Each of the above devices is specifically a computer system that also includes power, such as a microprocessor, ROM, RAM, hard disk unit, display unit, keyboard, and mouse.
  • a computer program is stored in the RAM or the hard disk unit.
  • Microprocessor power Each device achieves its functions by operating according to the computer program.
  • the computer program is configured by combining a plurality of instruction codes indicating commands to the computer in order to achieve a predetermined function.
  • System LSI Large Scale Integration
  • System LSI is an ultra-multifunctional LSI that is manufactured by integrating multiple components on a single chip. Specifically, it is a computer system that includes a microprocessor, ROM, RAM, and so on. It is. A computer program is stored in the RAM. Microprocessor power The system LSI achieves its functions by operating according to the computer program. These may be individually arranged on one chip, or may be integrated into one chip to include some or all of them.
  • IC integrated circuit
  • system LSI system LSI
  • super LSI super LSI
  • non-linear LSI depending on the difference in the degree of power integration.
  • the method of circuit integration is not limited to LSI, and may be realized by a dedicated circuit or a general-purpose processor. It is also possible to use a field programmable gate array (FPGA) that can be programmed after LSI manufacturing, or a reconfigurable processor that can reconfigure the connection and settings of circuit cells inside the LSI.
  • FPGA field programmable gate array
  • each of the above devices may be configured as an IC card or a single module force that can be attached to and detached from each device.
  • the IC card or the module is a computer system including a microprocessor, ROM, RAM, and the like.
  • the IC card or the module may include the super multifunctional LSI described above.
  • the IC card or the module achieves its function by the microprocessor operating according to the computer program. This IC card or module may be tamper resistant! /.
  • 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 also provides a computer-readable recording medium such as a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD (Blu-ray). Disc), semiconductor memory, etc. may be recorded. 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 represented by the Internet, a data broadcast, 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 data processing device corresponds to the program protection device 0101.
  • the detection means corresponds to the CPU 0201 and the state switching unit 0208.
  • the access means corresponds to the unauthorized operation prevention control circuit 0105, the RAM 0202, the protection memory 0206, and the access restriction circuit 0207.
  • the switching means corresponds to the state switching unit 0208.
  • the determination means corresponds to the unauthorized operation prevention control unit 0106.
  • the control means corresponds to the unauthorized operation prevention control unit 0106 and the security kernel 0401.
  • the memory corresponds to RAM0202.
  • the holding unit corresponds to the key register 0205.
  • the access restriction unit corresponds to the unauthorized operation prevention control unit 0106, the security kernel 0401, the unauthorized operation prevention control circuit 0105, the RAM 0202, the protection memory 0206, and the access restriction circuit 0207.
  • the acquisition unit in the access restriction unit corresponds to the RAM 0202, the unauthorized operation prevention circuit 02 05, the security kernel 0401, and the unauthorized operation prevention control unit 0106.
  • the address determination unit corresponds to the key register 0205 and the bus encryption circuit 0204.
  • the access execution unit corresponds to the bus encryption circuit 0204.
  • the management information adding unit corresponds to the unauthorized operation prevention control unit 0106.
  • the vector table holding means corresponds to the nonvolatile memory 221.
  • the vector table rewriting means corresponds to the unauthorized operation prevention control unit 0106.
  • the use request receiving unit corresponds to the bus encryption circuit 0204.
  • the use determination unit corresponds to the bus encryption circuit 0204.
  • the authority determination unit corresponds to the unauthorized operation prevention control unit 0106.
  • the management information registration unit corresponds to the unauthorized operation prevention control unit 0106.
  • the debugging means corresponds to the debugger IZF0209.
  • the forced invalidation means corresponds to the CPU 0201.
  • the program protection device of the present invention is used as a digital home appliance that can be updated to add a function or correct a defect. Produced, used and sold.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

 プログラムの品質によらず、各プログラムが取り扱うデータが、他のプログラムにより不正使用されるのを防ぐことができるデータ処理装置を提供する。  プログラムを実行するCPU0106と、各プログラムが使用するデータを他のプログラムが不正アクセスするのを防止する不正動作防止回路0105とを備え、保護モードで動作し不正動作防止回路0105を制御する不正動作防止制御部0106が、通常モードで動作するプログラムA0102が使用しているメモリ領域について、通常モードで動作するプログラムB0103に割り当てられた機能フラグに基づき、前記メモリ領域の使用可否を判定し、使用させる場合にプログラムB0103に当該メモリ領域が使用できるよう不正動作防止回路0105に設定する。

Description

明 細 書
データ処理装置
技術分野
[0001] 本発明は、複数プロセスの連携動作により保護データを処理するデータ処理装置 に関し、特に、保護データに対する不正処理を防ぐ技術に関する。
背景技術
[0002] 近年、音楽や映画などのコンテンツを再生するコンテンツ再生装置など多くのデジ タル家電に、著作権保護のためのデータの暗号化、復号の機能 (特許文献 1〜3,非 特許文献 1〜2参照)や、販売後における新機能の追加及びバグ修正などのための プログラム更新機能などが実装されてきて 、る。
特許文献 1 :特開平 2— 155034号公報
特許文献 2 :特開平 4— 102920号公報
特許文献 3 :特開 2001— 318787号公報
非特許文献 1 : Lie, D. , Thekkath, C. A. , Mitchell, M. , Lincoln,
P. , Boneh, D. , Mitchell, J. C. and Horowitz, M.: Architech tural Support for Copy and Tamper Resistant Software, In Proce e dings of the 9th Inte 1 Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS— IX) , p ages 169- 177, November 2000.
非特許文献 2 : E. Suh, D. Clarke, B. Gassend, M. van Dijk, and S. Devadas. The AEGIS processor architecture for tampereviden t and tamper resistant processing. Technical Report LCb— TM461 , Massachusetts Institute of Technology, February 2003.
発明の開示
発明が解決しょうとする課題
[0003] 前述の暗号化、復号などデータに対する処理はプログラム自身の管理下で行って おり、前記データが他のプログラムにより漏洩させられることはない。 し力しながら、暗号ィ匕データを復号する復号プログラムと、復号後のデータを再生 するプレーヤプログラムとの間でデータを連携処理するような場合には、当該データ を複数のプログラム力 使用できるようにする必要があるので、前述の更新機能を悪 用されて不正なプログラムが導入されると、当該不正なプログラムによって前記デー タが漏洩されてしまうという問題が生じうる。
[0004] 上記問題に鑑み、本発明は、各プログラムが取り扱うデータを連携処理するような 場合にも、当該データの漏洩を防ぐことができるデータ処理装置を提供することを目 的とする。
課題を解決するための手段
[0005] 上記課題を解決するために、本発明は、プログラムに従って動作するプロセッサを 備え、前記プログラムの実行単位であるプロセスが動作する通常モードと前記プロセ スの動作が抑制される保護モードを切り替えて動作するデータ処理装置であって、 通常モードにおいて、第 1プロセスの処理対象データに対して、前記第 1プロセスに よるアクセスを許可し、他のプロセスによるアクセスを禁止するアクセス禁止手段と、 通常モードにおいて、前記第 1プロセスから、第 2プロセスの呼び出しを指示する呼 出命令を検出する検出手段と、前記呼出命令が検出されると、通常モードから保護 モードに切り替える切替手段と、保護モードにおいて、前記第 2プロセスが、前記処 理対象データについての使用権限を有しているか否かを判断する判断手段と、保護 モードにおいて、前記第 2プロセスが使用権限を有していると判断される場合に、前 記アクセス禁止手段に対して、前記第 2プロセスが前記通常モードにおいて、前記処 理対象データに対しアクセスすることが許可されるように制御する制御手段とを備え る。
発明の効果
[0006] 本発明のデータ処理装置は、上述の構成を備えることにより、第 1プロセスが、第 2 プロセス以外のプロセスに知られないよう第 2プロセスにデータを受け渡すことができ 、通常モードで動作する他のプロセスによってデータが漏洩されるのを防ぐことがで きる。
また、上述の構成を備えることにより、第 2のプログラムが更新されて機能が変更され 、処理対象データの使用権限を失った場合にお!ヽても前記判断手段がそれを検知 し、前記制御手段で情報漏洩を防止できる。
[0007] また、前記アクセス禁止手段は、メモリと、プロセス毎の前記メモリ内でアクセスを許 可する領域を示す管理情報を、保護モードにおいてのみ書き換え可能に保持する 保持部と、通常モードで動作するプロセスを、前記管理情報に従って前記メモリにァ クセスさせるアクセス制限部とを含み、前記制御手段は、前記判断手段により使用権 限があると判定された場合に、第 2プロセスの管理情報に、前記メモリ上で前記対象 データが保持されている領域へのアクセスを許可する情報を追加することとしてもよ い。
[0008] この構成によれば、前記管理情報の書き換えを保護モードである場合に制限する ので、通常モードで動作する他のプロセスにより、前記管理情報をデータの漏洩が可 能なよう不正に書き換えられるのを防ぐことができる。
また、前記保持部が保持する前記管理情報は、前記メモリ中のアドレスと、アドレス に対応する鍵とを対応づけた情報を一以上含み、前記アクセス制限部は、前記メモリ のアドレスを含む前記メモリへのアクセス要求を取得する取得部と、前記アクセス要 求に含まれるアドレス力 前記管理情報に含まれる力否かを判定するアドレス判定部 と、含まれると判定された場合に、前記アクセス要求が書込要求であれば、書き込む データを前記アドレスに対応する鍵で暗号ィ匕して前記アドレスで示される領域に書込 み、前記アクセス要求が読出要求であった場合には、前記メモリの前記アドレスから 読み出したデータを、前記アドレスに対応する鍵を用 、て復号して出力するアクセス 実行部とを含むこととしてもょ 、。
[0009] この構成によれば、プロセス毎に定められているアドレス毎の鍵で前記メモリにデー タを暗号して記録し、暗号して記録されたデータを復号して読み出すので、他のプロ セスによって、前記データが適切に使用されるのを防ぐことができる。
ここで、メモリへのアクセス要求には、前記メモリからデータを読み出す読出要求や、 前記メモリへのデータの書込要求の他、使用を要望する前記メモリの領域の使用許 可要求や、他のプロセスが使用許可されているメモリの領域を、自プロセスでも使用 するための共有設定要求などが含まれるものとする。 [0010] また、前記データは、プロセスのコードであることとしてもよい。
この構成によれば、プロセスのコードが、漏洩するのを防ぐことができる。 また、各プロセスには、個別のプロセス識別子が割り当てられ、前記保持部が保持 する前記管理情報は、前記メモリ中のアドレスと、前記アドレスへのアクセスが許可さ れているプロセス識別子とを対応付けた情報を一以上含み、前記アクセス制限部は 、前記メモリのアドレスを含む前記メモリへのアクセス要求を取得する取得部と、ァク セス要求に含まれるアドレスと、アクセス要求したプロセスに割り当てられたプロセス 識別子とを対応付けた情報が、前記管理情報に含まれる力否かを判定するアドレス 判定部と、含まれると判定された場合に、アクセス要求したプロセスを、前記メモリの 前記アドレスにアクセスさせるアクセス実行部とを含むこととしてもよい。
[0011] この構成によれば、メモリへのアクセス要求があっても、前記メモリの前記アドレスへ のアクセスを、前記管理情報に含まれるアクセス要求されたアドレスに対応するプロ セス識別子で示されるプロセスのみに制限するので、他のプロセスにより前記データ が漏洩されるのを防ぐことができる。
また、前記データには、一以上のデータ処理方法それぞれについて実行を許可す る力否かを示すセキュリティ要件情報が割り当てられ、プロセスそれぞれには、ー以 上のデータ処理方法それぞれを実行可能力否かを示す機能情報が割り当てられ、 前記呼出命令は、一以上のデータ処理方法の!/、ずれかを示す処理特定情報を含み 、前記判断手段は、前記セキュリティ要件情報が前記処理特定情報により示されるデ ータ処理方法の実行を許可しておりかつ第 2プロセスの機能情報が、前記処理特定 情報により示されるデータ処理方法の実行が可能であることを示す場合に、前記使 用権限があると決定することとしてもよい。
[0012] この構成によれば、前記データ連携が要求されているデータを、当該データに割り 当てられたセキュリティ要件情報により許可され、かつ、第 2プロセスの機能情報が実 行可能であることを示して 、るデータ処理方法による処理に限定し、データの漏洩の 可能性を低減することができる。
また、前記切替手段は、前記通常モードから前記保護モードへと切り替える場合に 、前記通常モードで動作しているプロセスのコンテキストを前記メモリに退避し、前記 保護モードから前記通常モードへと切り替える場合に、次に前記通常モードで動作 するプロセスのコンテキストを前記メモリから復帰させることとしてもよい。
[0013] この構成によれば、コンテキストの退避、復帰の処理実行を、保護モードである場合 に限定できるので、通常モードで動作するプロセスによって、コンテキストに対し不正 な操作がされ、データが漏洩されるのを防ぐことができる。
また、前記第 1プロセス及び前記第 2プロセスは、それぞれが動作している間に割り 込み又は例外が発生した場合に、その割り込み又は例外を処理する割込処理又は 例外処理を含み、前記データ処理装置は、さらに、割り込み又は例外が発生した場 合に、実行されるべき処理を示すベクタテーブルを、保護モードにおいてのみ書き換 え可能に保持するべクタテーブル保持手段と、動作するプロセスが、前記第 1プロセ スカも前記第 2プロセスへと切り替わる前に、保護モードにおいて前記べクタテープ ルを、前記通常モードにおいて割り込み又は例外が発生した際に第 2プロセスの割 込処理又は例外処理を実行するよう書き換えるベクタテーブル書換手段とを含むこと としてちよい。
[0014] この構成によれば、ベクタテーブルの変更を、保護モードである場合に限定できる ので、通常モードで動作するプロセスによって、ベクタテーブルに対し不正な書換操 作がされることにより、不正なプロセスが実行され、データが漏洩されるのを防ぐこと ができる。
また、前記判断手段は、さらに、プロセス力 前記メモリにおける領域の使用要求を 受け付ける使用要求受付部と、使用要求されたアドレスが、既に使用されている力否 かを判定する使用判定部と、使用されていな力つた場合に、使用要求したプロセスの 、前記アドレスに格納を要望するデータについての使用権限の有無を判定する権限 判定部と、前記権限判定部により使用権限があると判定された場合に、使用要求し たプロセスの管理情報に、前記アドレスで示される領域へのアクセスを許可する情報 を登録する管理情報登録部とを含むこととしてもょ 、。
[0015] この構成によれば、プロセスからの要求に従い、使用を要求したプロセスのみが、 要求したメモリの領域を使用できるように、管理情報を生成し、他のプロセスによって 、前記領域に記憶されるデータが漏洩されるのを防ぐことができる。 また、前記管理情報登録部は、前記権限判定部により使用権限があると判定され た場合に、鍵を生成し、前記アクセスを許可する情報として、前記アドレスと生成した 鍵とを対応付けた情報を使用要求した前記プロセスの管理情報に追加することとして ちょい。
[0016] この構成によれば、要求されるごと毎に生成する鍵を、管理情報に追加することが できる。
アドレス毎に異なる鍵を用いることなどとすれば、同じ鍵を用いる頻度が少なくなり 鍵が解読される確率を低下させることができる。
また、前記データ処理装置は、さらに、前記プロセスに係るデバッグを行うデバッグ 手段を含み、前記切替手段は、さらに、前記通常モードに切り替える場合に、前記デ バッグ手段を有効化し、前記保護モードに切り替える場合に、前記デバッグ手段を無 効化することとしてもよい。
[0017] この構成によれば、保護モードにおけるデバッグを禁止し、保護モードにおける処 理内容を、解析されるのを防ぐことができる。
本発明のデータ処理方法は、プログラムに従って動作するプロセッサを備え、前記 プログラムの実行単位であるプロセスが動作する通常モードと前記プロセスの動作が 抑制される保護モードを切り替えて動作するデータ処理装置に用いられるデータ処 理方法であって、通常モードにおいて、第 1プロセスの処理対象データに対して、前 記第 1プロセスによるアクセスを許可し、他のプロセスによるアクセスを禁止するァクセ ス禁止ステップと、通常モードにおいて、前記第 1プロセスから、第 2プロセスの呼び 出しを指示する呼出命令を検出する検出ステップと、前記呼出命令が検出されると、 通常モードから保護モードに切り替える切替ステップと、保護モードにおいて、前記 第 2プロセス力 前記処理対象データにつ!、ての使用権限を有して 、る力否かを判 断する判断ステップと、保護モードにおいて、前記第 2プロセスが前記使用権限を有 していると判断される場合に、前記アクセス禁止手段に対して、前記第 2プロセスが 前記通常モードにおいて、前記処理対象データに対しアクセスすることが許可される ように制御する制御ステップとを含む。
[0018] 本発明のコンピュータプログラムは、プログラムに従って動作するプロセッサを備え 、前記プログラムの実行単位であるプロセスが動作する通常モードと前記プロセスの 動作が抑制される保護モードを切り替えて動作するデータ処理装置に用いられるコ ンピュータプログラムであって、通常モードにおいて、第 1プロセスの処理対象データ に対して、前記第 1プロセスによるアクセスを許可し、他のプロセスによるアクセスを禁 止するアクセス禁止ステップと、通常モードにおいて、前記第 1プロセスから、第 2プロ セスの呼び出しを指示する呼出命令を検出する検出ステップと、前記呼出命令が検 出されると、通常モードから保護モードに切り替える切替ステップと、保護モードにお いて、前記第 2プロセスが、前記処理対象データについての使用権限を有している か否かを判断する判断ステップと、保護モードにおいて、前記第 2プロセスが前記使 用権限を有していると判断される場合に、前記アクセス禁止手段に対して、前記第 2 プロセスが前記通常モードにおいて、前記処理対象データに対しアクセスすることが 許可されるように制御する制御ステップとを含む。
[0019] この構成によれば、第 1プロセス力 第 2プロセス以外のプロセスに知られないよう第 2プロセスにデータを受け渡すことができ、通常モードで動作する他のプロセスによつ てデータが漏洩されるのを防ぐことができる。
また、上述の構成を備えることにより、第 2のプログラムが更新されて機能が変更され 、処理対象データの使用権限を失った場合においても前記判断ステップによりそれ を検知し、前記制御ステップによって情報漏洩を防止できる。
[0020] 本発明の集積回路は、プログラムに従って動作するプロセッサを備え、前記プログ ラムの実行単位であるプロセスが動作する通常モードと前記プロセスの動作が抑制さ れる保護モードを切り替えて動作する集積回路であって、通常モードにおいて、第 1 プロセスの処理対象データに対して、前記第 1プロセスによるアクセスを許可し、他の プロセスによるアクセスを禁止するアクセス禁止手段と、通常モードにおいて、前記第 1プロセスから、第 2プロセスの呼び出しを指示する呼出命令を検出する検出手段と 、前記呼出命令が検出されると、通常モードから保護モードに切り替える切替手段と 、保護モードにおいて、前記第 2プロセスが、前記処理対象データについての使用 権限を有しているか否かを判断する判断手段と、保護モードにおいて、前記第 2プロ セスが前記使用権限を有していると判断される場合に、前記アクセス禁止手段に対し て、前記第 2プロセスが前記通常モードにおいて、前記処理対象データに対しァクセ スすることが許可されるように制御する制御手段とを備える。
[0021] この構成によれば、第 1プロセス力 第 2プロセス以外のプロセスに知られないよう第 2プロセスにデータを受け渡すことができ、通常モードで動作する他のプロセスによつ てデータが漏洩されるのを防ぐことができる。
また、上述の構成を備えることにより、第 2のプログラムが更新されて機能が変更され 、処理対象データの使用権限を失った場合にお!ヽても前記判断手段がそれを検知 し、前記制御手段で情報漏洩を防止できる。
図面の簡単な説明
[0022] [図 1]本発明に係るプログラム保護装置の構成の主要部を模式的に示す図である。
[図 2]本発明に係るプログラム保護装置のハードウェア構成を示す図である。
[図 3]鍵レジスタの構成を示す図である。
[図 4]保護対象データの構成を示す図である。
[図 5]プログラムを記録するファイルの構成を模式的に示す図である。
[図 6]プログラムを記録するファイルの構成を模式的に示す図である。
[図 7]プログラム保護装置のソフトウェア構成を示す図である。
[図 8]管理テーブルの構成を示す図である。
[図 9]管理テーブルの構成を示す図である。
[図 10]不正動作防止制御処理を示すフローチャートである。
[図 11]状態切替動作 A及び Bの処理を示すフローチャートである。
[図 12]プログラム Xからの要求に対する不正動作防止制御部の処理を示すフローチ ヤートである。
[図 13]プログラムの全体動作を示すフローチャートである。
[図 14]プログラムの全体動作を示すフローチャートである(図 13の続き)。
[図 15]プログラム保護装置の動作を示すフローチャートである。
[図 16]プログラム保護装置の動作中の RAMの状態を示す。
[図 17]プログラム保護装置の動作中の管理テーブルの状態を示す。
[図 18]プログラム保護装置の動作中の管理テーブルの状態を示す。 圆 19]プログラム保護装置の動作中の管理テーブルの状態を示す。
[図 20]プログラムの機能フラグがセキュリティ要件を満たす力否かを判定する処理を 示すフローチャートである。
[図 21]プログラム保護装置におけるプログラムの動作を示すフローチャートである。
[図 22]変形例に係るプログラム保護装置の構成を示すブロック図である。
[図 23]変形例に係る IDレジスタの構成を示す図である。
符号の説明
0101 プログラム保護装置
0102 プログラム A
0103 プログラム B
0104 オペレーティングシステム(os)
0105 不正動作防止回路
0106 不正動作防止制御部
0107 プログラム C
0108 保護対象データ
0109 セキュリティ要件リスト
0110 管理テーブル
0201 CPU
0202 RAM
0203 不揮発メモリ
0204 バス暗号回路
0205 鍵レジスタ
0206 保護メモリ
0207 アクセス制限回路
0208 状態切替回路
0209
0210 バス
0216 蓄積メディア 0219 ベクタテープノレ
0221 不揮発メモリ
0401 セキュリティカーネノレ
0402 プログラム A用割り込み管理部
0403 プログラム B用割り込み管理部
0404 OS用割り込み管理部
0405 BIOS
0406 プログラム C用割り込み管理部
発明を実施するための最良の形態
[0024] <第 1実施形態 >
< 1.概要 >
図 1は、プログラム保護装置 0101の構成の主要な部分を模式的に示した図である プログラム保護装置 0101は、図 1に示すように、 CPU0201と、不正動作防止回路 0105と、蓄積メディア 0216とを含んで構成される。
[0025] CPU0201は、プログラムを実行するプロセッサである。
不正動作防止回路 0105は、 CPU0201により実行されるプログラムの不正実行及 びプログラム間の不正アクセスを防ぐための機構を備えた回路である。
蓄積メディア 0216は、 CPU0201により実行されるプログラムが扱う、コンテンツや 個人情報などの機密情報である保護対象データ 0108を、暗号化した状態で記憶し ている。
[0026] CPU0201上で実行されるプログラムには、一例として図 1に示すようにオペレーテ イングシステム(OS) 0104、プログラム A0102、プログラム B0103、プログラム C010 7、不正動作防止制御部 0106等がある。
不正動作防止制御部 0106は、プログラム A0102、プログラム B0103、プログラム C0107その他の各プログラムと OS0104のそれぞれから、メモリ領域の使用要求を 取得して使用可否を判定し、使用させる場合には不正動作防止回路 0105を制御し て、要求元のプログラムが要求する態様でのみ、当該メモリ領域の使用をさせる。
[0027] オペレーティングシステム(OS) 0104は、プログラム A0102、プログラム B0103、 プログラム C0107その他のプログラム(図示せず)を動作させる基本ソフトウェアであ る。
プログラム A0102、プログラム B0103、プログラム C0107は、任意の処理を実行す るアプリケーションプログラムである。本実施形態では、一例として、プログラム A010 2力 コンテンツである保護対象データ 0108の復号を行うプログラムであり、プロダラ ム B0103は、コンテンツの再生を行うプレーヤープログラムであり、プログラム A010 2とプログラム BO 103は、コンテンッを処理する際に連携動作するものとする。
[0028] プログラム A0102は、保護対象データ 0108である暗号化されたコンテンツを復号 し、復号済みの当該コンテンツをプログラム B0103に再生させる。プログラム A0102 は、プログラム B0103を呼び出すための呼出命令を含んでおり、 CPU0201は前記 呼出命令を検出すると、不正動作防止回路 0105に後述する保護モードを示す状態 切替指示を行う。不正動作防止回路 0105は、前記状態切替指示に基づき、保護モ ードへと切り替えて、処理を実行する。
前記呼出命令は、コンテンツの出力、コピー、移動、特殊再生、デジタル出力などの データ処理方法を示す情報を含むものとする。
また、不正動作防止制御部 0106が前記保護モードにおいて不正動作防止回路 01 05を制御することにより、例えば、プログラム C0107が、前記コンテンツを不正に使 用したり、コンテンツを破壊するようなことを妨げている。
[0029] 以下、プログラム保護装置 0101の動作について、詳細に説明する。
< 2.構成 >
< 2. 1.ハードウェア構成〉
プログラム保護装置 0101のハードウェア構成について、図面を用 、て説明する。 プログラム保護装置 0101は、図 2に示すように、相互にバス 0210を介して接続さ れる CPU0201、不揮発メモリ 0203、ノ ス暗号回路 0204、鍵レジスタ 0205、ァクセ ス制限回路 0207、状態切替回路 0208、デバッガ I/F0209、蓄積メディア 0216、 不揮発メモリ 0221と、ノ ス暗号回路 0204に接続する RAM0202と、アクセス制限回 路 0207に接続する保護メモリ 0206を含んで構成される。
[0030] プログラム保護装置 0101は、具体的には、マイクロプロセッサ、 ROM, RAMなど 力も構成されるコンピュータシステムである。前記 ROMには、コンピュータプログラム が記憶されており、前記マイクロプロセッサ力 前記コンピュータプログラムに従って 動作することにより、プログラム保護装置 0101は、その機能を達成する。
CPU0201は、 RAM0202,保護メモリ 0206上に記憶されるプログラムを実行する マイクロプロセッサである。
[0031] 状態切替回路 0208は、 CPU0201から、前記通常モードと前記保護モードとのい ずれかを選択的に示す状態切替指示を受けつけて、デバッガ IF0209、鍵レジスタ 0 205、アクセス制限回路 0207を、当該状態切替指示に対応するモードに切り替える 保護モードは、セキュリティの高い特定のプログラムのみが動作するモードであり、 通常モードは、その他のプログラムが動作するモードである。
[0032] 状態切替回路 0208は、受信した前記状態切替指示が保護モードを示す場合には 、デバッガ IZF0209に対し保護モードを示す状態信号 A0211を出力してデバッガ I ZF209を無効化し、鍵レジスタ 0205に対し保護モードを示す状態信号 B0217を出 力し、アクセス制限回路 0207に対し保護モードを示す状態信号 C0218を出力する
[0033] また、状態切替回路 0208は、受信した前記状態切替指示が通常モードを示す場 合には、デバッガ IZF0209に対し通常モードを示す状態信号 A0211を出力し、鍵 レジスタ 0205に対し通常モードを示す状態信号 B0217を出力し、アクセス制限回路 0207に対し通常モードを示す状態信号 C0218を出力する。また、状態切替回路 02 08は必要に応じてベクターテーブル 0219の変更を行う。状態を切り替える動作、ベ クタテーブル 0219の変更については後述する。
[0034] なお、状態切替の詳細は発明者らによる出願、特開 2005— 11336号公報などに 開示されている。
アクセス制限回路 0207は、バス 0210と保護メモリ 0206の接続を制御する回路で あり、状態切替回路 0208から受け取る状態信号 Cが通常モードを示す場合には、バ ス 0210と保護メモリ 0206との接続を遮断し、保護モードを示す場合には、バス 021 0と保護メモリ 0206を接続する。よって、通常モードで動作するプログラムは、保護メ モリ 0206内のデータにアクセスすることはできない。
[0035] デバッガ IZF0209は、プログラム保護装置 0101外のプログラムデバッガを接続可 能なインターフェイスであり、 CPU0201と接続されて!、る。
デバッガ IZF0209は、状態切替回路 0208から通知される状態信号 Aが、通常モ ードを示す場合に、前記プログラムデバッガと CPU0201とを接続し、状態信号 Aが 保護モードを示す場合に、プログラムデバッガと CPU0201との接続を切断する。
[0036] また、状態信号 Aが通常モードを示す場合であっても、デバッガ IZF0209の設定 を変更することにより、プログラムデバッガと CPU0201との接続を強制的に切断状態 にすることも可能である。
鍵レジスタ 0205は、アクセス要求されたアドレスに対応する暗号鍵をバス暗号回路 0204に出力する回路である。
[0037] 鍵レジスタ 0205は、図 3に示すように、アドレスと命令用バス暗号鍵との対応を示す 命令用鍵情報テーブル 0305と、アドレスとデータ用バス暗号鍵との対応を示すデー タ用鍵情報テーブル 0306とを保持しており、バス暗号回路 0204からアドレス信号 0 301を取得して、アドレス信号 0301が示すアドレスに対応づけられている命令用バ ス喑号鍵信号 0302と、データ用バス暗号鍵信号 0303とをバス暗号回路 0204に出 力する。
[0038] ここで、命令用鍵情報テーブル 0305は、命令用鍵情報 T0311、 T0312、 T0313 • · ·を含み、各命令用鍵情報は、アドレスと命令用バス暗号鍵との対応を示しており、 データ用鍵情報テーブル 0306は、データ用鍵情報 Τ0321、 Τ0322、 Τ0323 · · ·を 含み、各データ用鍵情報は、アドレスとデータ用バス暗号鍵との対応を示している。
[0039] 鍵レジスタ 0205の設定の変更は、状態切替回路 0208が出力する状態信号 Βが保 護モードを示すときのみ変更可能であり、不正動作防止制御部 0106によって、バス 0210を介して通知される設定信号 0304を用いて変更される。
RAM0202は、バス暗号回路 0204と接続されて!、るメモリ装置である。 バス暗号回路 0204は、鍵レジスタ 0205から通知される鍵を用いて、当該鍵に対 応付けられたメモリアドレスに入出力するコードやデータの暗号ィ匕ゃ復号を行う。
[0040] これにより、バス 0210と RAM0202との間でやり取りされるコードやデータは、バス 暗号回路 0204で暗号化及び復号される。
また、バス暗号回路 0204は、 CPU0201が命令フェッチのために RAM0202にァ クセスしているの力、データアクセスのためにアクセスしているのかを検知し、同一物 理アドレスへの命令フェッチの場合には命令用バス暗号鍵を用い、データアクセスの 場合にはデータ用バス暗号鍵を用いて、コードやデータの暗号化、復号を行う。
[0041] 不揮発メモリ 0203は、ファイル A0212、ファイル B0213、ファイル C0214、フアイ ル OS0215、 BIOS0405、ファイル S0220を記憶している。
ここで、前記ファイルのデータ構造について、ファイル A0212のデータ構造を例に 、図 5を用いて説明する。
ファイル A0212は、コード暗号鍵 0710、プログラム A0102のコード 0711、署名 A 0115、機能フラグ A0111を含む。
[0042] コード暗号鍵 0710は、プログラム Aのコード 0711を暗号化するのに用いた鍵 (KC — A)である。
コード暗号鍵 0710は、公開鍵暗号アルゴリズムで暗号化されて!/、る。
コード暗号鍵 0710を暗号ィ匕する際に用いられた公開鍵に対応する秘密鍵は、不 正動作防止制御部 0106が保持する。
[0043] プログラム Aのコード 0711には、プログラム A0102が行う処理が記述されており、
CPU0201によって実行される。
プログラム Aのコード 0711は、コード暗号鍵 0710で暗号化されている。 署名 A0115は、プログラム Aのコード 0711を暗号化したベンダの署名が格納され ている。
[0044] 署名 AO 115を用いてプログラム Aのコード 0711の正当性、完全性を検証できる。
機能フラグ A0111は、プログラム A0102力 機能 0714、 0715, 0716, 0717, 0
718 · · ·を備えている力否力示すフラグである。
本実施形態では、機能フラグは、プログラムがファイル出力、コピー、移動、特殊再 生、デジタル出力の各機能を備えているかを示すものとする。 [0045] 機能フラグは、例えば、 5ビットのデータであり、各ビットに、ファイル出力機能、コピ 一機能、移動機能、特殊再生機能、デジタル出力機能が割り当てられる。即ち、ファ ィル出力と、移動の機能を備える場合の、機能フラグは、 2進数表現で 10100となり、 デジタル出力機能のみ備える場合には、 2進数表現で 00001となる。プログラム A01 02の機能フラグ A0111は、 2進数表現で 00000であり、すべての機能を備えていな いことを示している。
[0046] ファイル B0213のデータ構造は図 5に示し、ファイル C0214、ファイル OS0215の データ構造 ίま図 6に示して! /、る。フアイノレ Β0213、フアイノレ C0214、フアイノレ OS021
5は、ファイル A0212と同様の構成を備えるので、説明は省略する。
ただし、ファイル C0214の機能フラグ C0113は、ファイル出力機能 0734を備える ことを示し、ファイル OS0215の機能フラグ OS0114はファイル出力機能 0744、コピ 一機能 0745、移動機能 0746を備えることを示して 、る。
[0047] 不揮発メモリ 0221は、例外および割り込みハンドラのアドレスを示すベクタテープ ル 0219を記憶しているメモリ装置である。
プログラム保護装置 0101において、 CPU0201は、割り込みや例外の発生を検知 した場合に、ベクタテーブル 0219を参照して、次に実行するハンドラの位置を取得 する。
[0048] ベクタテーブル 0219に格納されている各種例外および割り込みに対応するハンド ラのアドレスは、状態切替回路 0208のみが変更可能であり、保護モードにおいて動 作するソフトウェアのみ力 状態切替回路 0208に対しべクタテーブル 0219の設定 内容の変更を依頼することができる。
蓄積メディア 0216は、コンテンツや個人情報などの機密情報である保護対象デー タ 0108を、暗号化した状態で記憶する。
[0049] 保護対象データ 0108は、図 4に示すように、データ 0701、データ暗号鍵 0702、セ キユリティ要件リスト 0109、署名データ 0708を含む。
データ 0701は、保護対象となるデータであり、データ暗号鍵 0702を用いて暗号ィ匕 されている。但し、データ 0701は必ずしも暗号化されている必要はない。
データ暗号鍵 0702は、公開鍵暗号アルゴリズムで暗号化されており、暗号化する 際に用いられた公開鍵に対応する秘密鍵は、不正動作防止制御部 0106が保持し ているので、不正動作防止制御部 0106のみが復号可能である。
[0050] セキュリティ要件リス卜 0109は、セキュリティ要件 0703、 0704、 0705、 0706、 070 7…を含む。
セキュリティ要件リストは、例えば、各ビットがセキュリティ要件を示す 5ビットのデータ であり、各ビットは、ファイル出力機能、コピー機能、移動機能、特殊再生機能、デジ タル出力機能に対応し、ビット値が 1の場合にはその機能が可能であることを示し、ビ ット値力^である場合にはその機能が不可能であることを示す。
[0051] ファイル出力と、移動の機能が可能な場合のセキュリティ要件リストは 2進数表現で 10100となり、デジタル出力機能のみ可能な場合は、 2進数表現で 00001となる。 ここで、データ 0701に対するセキュリティ要件 0703、 0704、 0705、 0706、 0707 は、すべて不可能となっている。
署名データ 0708は、セキュリティ要件リスト 0109に対する署名データであり、当該 署名データを用いることにより、セキュリティ要件リスト 0109の正当性を検証すること ができる。
< 2. 2.ソフトウェア構成 >
次に、プログラム保護装置 0101のソフトウェア構成について、図面を用いて説明す る。
[0052] プログラム保護装置 0101の CPU0201上で動作するプログラムは、図 7に示すよう に、 OS用割り込み管理部 0404を含むオペレーティングシステム(OS) 0104、プロ グラム A用割り込み管理部 0402を含むプログラム A0102、プログラム B用割り込み 管理部 0403を含むプログラム B0103、プログラム C用割り込み管理部 0406を含む プログラム C0107、セキュリティカーネル 0401、不正動作防止制御部 0106、 BIOS 0405を含んで構成される。
[0053] BIOS0405は、不揮発メモリ 0203に記憶されており、プログラム保護装置 0101に おける電源投入時などに、通常モードで CPU0201により実行される。
BIOS0405は、ハードウェアの基本的な設定を行った後、 OS0104を RAM0202 にロードする。本実施形態では、 BIOS0405は、 OS0104のみをロードすることとし ているが、更にプログラム A0102、 B0103、 C0107をロードすることとしてもよい。
[0054] OS0104は、一般的なオペレーティングシステムの機能を持つ OSであり、起動した 後に、プログラム A0102、プログラム B0103、プログラム C0107を順に起動する。 また、 OS0104に含まれる OS用割り込み管理部 0404は、 OS0104力 S動作してい る時に発生する割り込みや例外を処理するハンドラを含む。
[0055] プログラム A0102、プログラム B0103、プログラム C0107は、 OS0104上で動作 する汎用的な処理を行うプログラムであり、保護対象データ 0108を取り扱う。
プログラム A0102に含まれる割り込み管理部 0402は、プログラム A0102が動作し ている時に発生する割り込みや例外を処理するハンドラを含む。
[0056] 同様に、プログラム B0103に含まれる割り込み管理部 0403、プログラム C0107に 含まれる割り込み管理部 0403は、プログラム B0103、 C0107それぞれが動作して いる時に発生する割り込みや例外を処理するハンドラを含む。
プログラム A0102、プログラム B0103、プログラム C0107、 OS0104は、通常モー ドで動作するソフトウェアであり、それぞれ RAM0202にロードされ、 CPU0201によ り実行される。 セキュリティカーネル 0401は、保護モードにおけるシステム制御を行 うソフトウェアであり、保護メモリ 0206にロードされて、 CPU0201により実行される。
[0057] セキュリティカーネル 0401は、保護モードにおいて発生した割り込み及び例外をノヽ ンドリングし、ハンドリングした当該割り込み及び例外に対する処理を実行する。
保護モードにおけるベクタテーブル 0219の内容は、通常モード力も保護モードへ の切替直前に、状態切替部 0206によって、割り込み及び例外発生時に CPU0201 がセキュリティカーネル 0401内のハンドラを実行するよう書き換えられる。
[0058] セキュリティカーネル 0401は、不正動作防止制御部 0106に制御主体を移す。
不正動作防止制御部 0106による不正動作防止制御処理が終了すると、セキユリテ ィカーネル 0401に制御主体が戻り、セキュリティカーネル 0401は、状態切替回路 0 208に対し、通常モードへの移行のための状態切替依頼を出力する。
不正動作防止制御部 0106は、不正動作防止回路 0105を制御して OS0104等を 含むプログラムの不正動作を防止する。
[0059] 不正動作防止制御部 0106は、保護モードで動作するプログラムであり、保護メモリ 0206にロードされて、 CPU0201により実行される。よって、保護メモリ 0206にァク セス権限のない、通常モードで動作するプログラムから、セキュリティカーネル 0401、 および不正動作防止制御部 0106へのアクセスはできない。
不正動作防止制御部 0106は、前記不正動作防止回路 0105を制御するためのデ ータである管理テーブル 0110を管理して 、る。
(管理テーブル)
ここで、管理テーブル 0110について、図 8、図 9を用いて説明する。
[0060] 管理テーブル 0110は、プログラムのデータ及びコード領域の保護のための管理デ ータ群であり、図 8に示すデータ領域管理情報テーブル群 0501、コード領域管理情 報テーブル群 0502と、図 9に示すセキュリティ要件管理情報テーブル T0310、プロ グラム管理情報テーブル T0410およびカレントプログラム管理テーブル 0503を含む
[0061] データ領域管理情報テーブル群 0501、コード領域管理情報テーブル群 0502、セ キユリティ要件管理情報テーブル Τ0310、プログラム管理情報テーブル Τ0410、力 レントプログラム管理テーブル 0503は、保護メモリ 0206に記憶される。
プログラム保護装置 0101に電源が投入された時には、各管理テーブル 0110の内 容は空である。
[0062] 不正動作防止制御部 0106は、後述するプログラム登録処理において、プログラム Α0102、プログラム Β0103、プログラム C0107について OS0104が行う登録要求に 従 、、コード領域管理情報テーブル群とプログラム管理情報テーブルの内容を登録 又は更新する。
不正動作防止制御部 0106は、後述するデータ領域保護設定処理において、他の プログラム力 成される保護設定要求に従ってデータ領域管理情報テーブル群の内 容を登録又は更新し、後述するデータ領域共有設定において、他のプログラムから 成される共有設定要求に従ってセキュリティ要件管理情報テーブルの内容を登録又 は更新する。
(プログラム管理情報テーブル T0410)
プログラム管理情報テーブル T0410は、プログラム管理情報 T0411、 T0412、 TO 413、T0414…を含む。
[0063] 各プログラム管理情報は、プログラム管理情報識別子、コードアドレス、プログラム 識別子、共有プログラム識別子、機能フラグを含む。
プログラム管理情報識別子は、プログラム管理情報を識別するための識別子であり
、不正動作防止制御部 0106が、当該プログラム管理情報を登録する時に、既に使 用されて 、る値と重複しな 、値を割り当てる。
[0064] コードアドレスは、各プログラム管理情報が管理対象とするアドレス領域である。
プログラム識別子は、前記アドレス領域にロードされるコードを含むプログラムの識 別子であり、予め、各プログラムに対し割り振られている。
共有プログラム識別子は、前記アドレス領域のコードを共有するプログラムの識別 子である。
[0065] 機能フラグは、前記アドレス領域のコードに対し、ファイル出力、コピー、移動、特殊 再生、デジタル出力の各機能が許可されて 、るか否かを示すフラグである。
機能フラグは、例えば、 5ビットのデータであり、各ビットに、ファイル出力機能、コピ 一機能、移動機能、特殊再生機能、デジタル出力機能が割り当てられる。
即ち、ファイル出力と、移動とが許可されている場合の、機能フラグは、 2進数表現 で 10100となり、デジタル出力機能のみが許可されている場合には、 2進数表現で 0 0001となる。
(コード領域管理情報テーブル群)
コード領域管理情報テーブル群 0502は、プログラム用コード領域管理情報テープ ル Τ0210、 Τ0220、 Τ0230· · ·を含み、プログラム用コード領域管理情報テーブル は、プログラム毎に生成されたものである。
[0066] プログラム識別子が P1であるプログラムについて生成されるプログラム P1用コード 領域管理情報テーブル T0210は、コード領域管理情報 T0211、 T0212、 T0213 - • ·を含み、データ領域管理情報は、コード領域識別子、コードアドレス、コード暗号 鍵を含む。
コード領域識別子は、コード領域管理情報を識別するための識別子であり、不正動 作防止制御部 0106が、当該コード領域管理情報を生成する時に、既に使用されて V、る値と重複しな 、値を割り当てる。
[0067] コードアドレスは、コード領域管理情報が管理対象とするアドレス領域である。
コード暗号鍵は、前記アドレス領域で示されるメモリ領域に保持されたコードを暗号 ィ匕、復号するための鍵であり、コードアクセスの際に用いられる。
(データ領域管理情報テーブル群)
データ領域管理情報テーブル群 0501は、データ領域管理情報テーブル T0110、
TO 120、 TO 130…を含む。
[0068] データ領域管理情報テーブルは、プログラム毎に生成されたものであり、データ領 域識別子、データアドレス、データ暗号鍵を含む。
データ領域識別子は、各データ領域管理情報を識別するための識別子である。 データアドレスは、各データ領域管理情報が管理対象とするアドレス領域である。 データ暗号鍵は、前記アドレス領域で示されるメモリ領域に保持されたデータを暗 号化、復号するための鍵であり、データアクセスの際に用いられる。
(セキュリティ要件管理情報テーブル)
セキュリティ要件管理情報テーブル T0310は、データ領域管理情報テーブル群 0
501に含まれる各データ領域管理情報に対するセキュリティ要件を管理するための テーブルであり、複数のセキュリティ要件管理情報 T0311、 T0312、 T0313、 T031
4· · ·を含む。
[0069] セキュリティ要件管理情報は、セキュリティ要件管理情報識別子、データアドレス、 生成プログラム識別子、共有プログラム識別子、セキュリティ要件を含む。
セキュリティ要件管理情報識別子は、セキュリティ要件管理情報を識別するための 識別子である。
データアドレスは、セキュリティ領域管理情報が管理対象とするアドレス領域である
[0070] 生成プログラム識別子は、物理メモリ上の前記アドレス領域について、最初にデー タ設定を行ったプログラムの識別子である。
共有プログラム識別子は、物理メモリ上の前記アドレス領域について、当該メモリ領 域を共有するプログラムを識別するための識別子である。 セキュリティ要件は、前記データアドレスにより示される、物理メモリ上の前記アドレ ス領域に保持されるデータの保護方法を定める。
[0071] 前記セキュリティ要件は、本実施形態では、機能フラグと同じ構造を持つものとし、 例えば、 5ビットのデータであり、各ビットに、ファイル出力機能、コピー機能、移動機 能、特殊再生機能、デジタル出力機能の実行可否が割り当てられる。
即ち、ファイル出力と、移動とが実行許可されている場合の、機能フラグは、 2進数 表現で 10100となり、デジタル出力のみ実行許可されている場合には、 2進数表現 で 00001となる。
(カレントプログラム管理テーブル 0503)
カレントプログラム管理テーブル 0503には、現在動作中のプログラムの識別子が
SC fedれる。
< 3.ソフトウェア動作 >
次に、プログラム保護装置 0101上で動作するソフトウェアによる処理の流れについ て説明する。
[0072] まず、ソフトウェア全体の処理フローについて、図 21を用いて説明する。
プログラム保護装置 0101に対し電源が投入されると、 BIOS0405が起動する (ス テツプ S2011)。
BIOS0405は、プログラム保護装置 0101のハードウェアにつ 、ての基本的な設定 を行った後、 OS0104を RAM0202にロードする(ステップ S2012)。
[0073] OS0104は、不正動作防止制御部 0106に対し、自プログラムである OS0104に つ!、ての後述する登録処理を行 、(ステップ S2020)、プログラム A0102につ!/、ての 後述する登録処理を行い(ステップ S2021)、プログラム B0103についての登録処 理を行い(ステップ S2022)、プログラム C0107についての登録処理を行う(ステップ S2023)。
[0074] 登録処理が成されると、不正動作防止制御部 0106は、 OS0104、プログラム A01 02、プログラム B0103、プログラム C0107からのメモリ保護などの各要求について、 処理することが可能となる。
次に、 OS0104は、登録処理が成功したプログラム A0102、 B0103、 C0107を順 に起動する(ステップ S2031)。
[0075] ここで、プログラム A0102、プログラム B0103、プログラム C0107力 OS0104上 で動作を開始する。
次に、 OS0104は、不正動作防止制御部 0106に対し、自プログラム内で使用する データ領域の後述する保護設定を行う (ステップ S2040)。
同様に、プログラム A0102は、不正動作防止制御部 0106に対し、自プログラム内 で使用するデータ領域の後述する保護設定を行い (ステップ S2041)、プログラム B0 103は、不正動作防止制御部 0106に対し、自プログラムが使用するデータ領域の 保護設定を行い (ステップ S2042)、プログラム C0107は、不正動作防止制御部 01 06に対し、自プログラムが使用するデータ領域の保護設定を行う(ステップ S2043) 次に、プログラム A0102は、必要ある場合に、不正動作防止制御部 0106に対し、 他プログラムと使用するデータ領域を共有するための後述するデータ領域共有設定 を行う(ステップ S2051)。
[0076] 同様に、プログラム B0103は、必要ある場合に、不正動作防止制御部 0106に対し
、他プログラムと使用するデータ領域を共有するためのデータ領域共有設定を行 ヽ ( ステップ S2052)、プログラム C0107は、必要ある場合に、不正動作防止制御部 01
06に対し、他プログラムと使用するデータ領域を共有するためのデータ領域共有設 定を行う(ステップ S 2053)。
[0077] これにより、複数のプログラムが、保護されているメモリ領域を共有できるようになる。
以後、 OS0104は、必要に応じ、動作させるカレントのプログラムを切り替え (ステツ プ S2061)、カレントのプログラムは、自プログラムが行うべき処理を実行する(ステツ プ S2062)。
[0078] 以下、ステップ S2021におけるプログラム登録処理、ステップ S2041における保護 設定処理、ステップ 2051におけるデータ領域の共有設定処理、ステップ S2061〖こ おけるプログラム切替処理について、説明する。
上述のステップ S2020、ステップ SS2021、ステップ S2022、ステップ S2023、ス テツプ S2040、ステップ S2041、ステップ S2042、ステップ S2043、ステップ S2051 、ステップ S2052、ステップ S2053は、全て、図 10〜 12で示す基本の処理フローに 従い実行される。
[0079] 以下、ステップ S2020〜S2023については、ステップ S2021を例として説明し、ス テツプ S2040〜S2043につ!/ヽては、ステップ S 2041を伊として説明し、ステップ S20 51〜S2053につ!/、ては、ステップ S2051を ί列として説明する。
また、ステップ S2021〜S2053の各処理の実行は、一度に限らず、必要に応じて 随時実行するものとする。
< 3. 1.プログラム登録処理 >
図 21におけるステップ S2021は、 OS0104力 プログラム Aについての情報を、不 正動作防止制御部 0106に登録する処理である。
[0080] 図 11、図 12に示したプログラム Xは、当該フローチャートに従い動作するプログラム を示しており、本実施形態では、プログラム A0102、プログラム B0103、プログラム C 0107、 OS0104のいずれ力である。ここでは、 OS0104力 プログラム Xに該当し、 OS用割込み管理部 0404力 プログラム X用割込み管理部に該当し、 OS0104が、 プログラム Aにつ!/、ての登録を要求するものとする。
[0081] プログラム Xは、まず、プログラム Xにつ!/、て予め指定されて 、る、 RAM0202上の データ領域に、プログラム Aを登録するための登録要求を書き込む。
前記登録要求には、図 5に示した、登録されるプログラムであるプログラム Aのコー ドを暗号ィ匕する際に用いられた鍵 (コード暗号化)、プログラムの署名データ、機能フ ラグが含まれる。さらに、前記登録要求には、プログラムのロードアドレス情報が含ま れる。
[0082] 鍵は公開鍵暗号アルゴリズムによって暗号ィ匕されており、鍵の暗号ィ匕に用いる公開 鍵に対応する秘密鍵は不正動作防止制御部 0106に格納されている。
秘密鍵は不正動作防止制御部 0106の外部に漏洩しないよう対策が施される。 プログラムの署名データは、プログラムの正当性、完全性を検証するために用いら れる。
[0083] プログラムのロードアドレス情報は、登録されるプログラムがロードされているァドレ ス領域である。 プログラム Xは、プログラム Aの登録要求を要因とするソフトウェア割り込みを発生さ せ (ステップ S0801)、プログラム X用割り込み管理部に制御を移す。
次に、プログラム X用割り込み管理部は、プログラム Xが発生させたソフトウェア割込 みの要因を調査し、前記登録要求を所定の前記データ領域から読み出し、割り込み の種別を確認する (ステップ S0802)。ここで、プログラム X用割込み管理部は、前記 割り込みの種別が、プログラム Aについての登録要求を要因とするソフトウェア割り込 みであったことを確認する。
[0084] 次に、プログラム X用割込み管理部は、前記登録要求を共有メモリに格納する (ステ ップ S0803)。
ここで、前記共有メモリは、通常モードと保護モードとの通信に用いる、 RAM0202 内の所定のメモリ領域である。
ここで、プログラム保護装置 0101の動作状態を、通常モードから保護モードへ切り 替えるための状態切替動作 Aを実行する。
[0085] 状態切替動作 Aについては、図 11 (a)を用いて説明する。
プログラム Xは、ここでは、 OS0104である。
プログラム X用割り込み管理部は、状態切替回路 0208に対し、保護モードへの状 態切替依頼を行う(ステップ S 1700)。
状態切替回路 0208は、 CPU内の状態を予め定められている RAM0202内のプロ グラム Xが管理するデータ領域に格納する (ステップ S1701)。
[0086] 状態切替回路 0208は、状態切替依頼元であるプログラム Xのコンテキストを、 RA M0202においてプログラム Xが使用するよう予め定められている領域に退避する。 状態切替回路 0208は、保護モードを示す状態信号 A0211を出力し、デバッガ IZ F0209を無効ィ匕する(ステップ S 1702)。
次に、状態切替回路 0208は、 CPU内部状態のクリアを行う (ステップ S1703)。
[0087] 次に、状態切替回路 0208は、保護モードを示す状態信号 B0217を出力し、鍵レ ジスタ 0205の設定を変更する(ステップ S 1704)。
ここで、鍵レジスタ 0205は、バス 0210を介して通知される設定信号 0304を用いて 命令用鍵情報テーブル 0305とデータ用鍵情報テーブル 0306を変更できるようにす る。
[0088] 次に、状態切替回路 0208は、保護モードを示す状態信号 C0218を出力し、ァク セス制限回路 0207の設定を変更し (ステップ S 1705)、アクセス制限回路 0207は、 バス 0210力も保護メモリ 0206へのアクセスを開放状態にする。
開放状態とは、バス 0210から保護メモリ 0206へのアクセスが許可された状態を示 す。
[0089] 次に、状態切替回路 0208は、割り込みおよび例外発生時に CPU0201がセキユリ ティカーネル 0401内のハンドラを実行するようベクタテーブル 0219の設定を変更す る(ステップ S 1706)。
状態切替回路 0208は、前回保護モードから通常モードに切り替える直前に保護メ モリ 0206に格納して!/、たコンテキストを CPUに復帰させる(ステップ S 1707)。
[0090] 次に、状態切替回路 0208は、セキュリティカーネル 0401に制御を移す (ステップ S
1708)。プログラム保護装置 0101は保護モードとなり、状態切替動作 Aは終了する 次に、セキュリティカーネル 0401は、不正動作防止制御部 0106に制御を移す (ス テツプ S0815)。
[0091] 次に、不正動作防止制御部 0106は、共有メモリから前記要求を取得する (ステップ S0806) oここでは、前記要求は、前記登録要求である。
次に、不正動作防止制御部 0106は、不正動作防止制御処理 (ステップ S0807)を 実行する。
ここで、前記要求が前記登録要求である場合の不正動作防止制御処理 (ステップ S 0807)の詳細にっ 、て、図 10を用いて説明する。
[0092] 不正動作防止制御部 0106は、前記要求がいずれの要求であるかを判定する (ス テツプ S600)。
前記要求が登録要求であるので (ステップ S600 :登録)、ステップ S0612へと分岐 する。
次に、不正動作防止制御部 0106は、セキュリティ要件管理情報テーブル T0310と プログラム管理情報テーブル T0410を用い、プログラムのロードアドレス情報によつ て示されているコードアドレス領域力 未使用領域であるかどうかを判定する (ステツ プ S0612)。
[0093] 未使用領域である場合 (ステップ S0612の YES)、不正動作防止制御部 0106は、 プログラムの署名と機能フラグの署名の検証を行う(ステップ S0613)。
署名検証結果が OKであった場合 (ステップ S0613の YES)、不正動作防止制御 部 0106は、新規のコード領域管理情報テーブルとデータ領域管理情報テーブルを 生成する(ステップ S0614)。
[0094] 次に、管理テーブルの更新として、プログラム管理情報テーブル T0410の更新とコ ード領域管理情報テーブルの更新を行う(ステップ S0615)。
プログラム管理情報テーブル T0410の更新にぉ 、て、不正動作防止制御部 0106 は、固有のプログラム識別子を生成した後、プログラム管理情報の追加を行う。
コード領域管理情報テーブルの更新において、不正動作防止制御部 0106は、コ ード暗号鍵の復号化とコード領域管理情報の追加を行う。
[0095] 次に、不正動作防止制御部 0106は、処理結果を生成する。
処理結果は、管理テーブルの更新 (ステップ S0615)時に生成したプログラム識別 子を含む。コードアドレス領域が未使用領域でな力つた場合 (ステップ S0612の NO) と署名検証に失敗した場合 (ステップ S0613の NO)には、処理に失敗した原因を処 理結果に含める。ここで生成した処理結果を、共有メモリに格納する (ステップ S080 8)。
[0096] 次に、不正動作防止制御部 0106は、セキュリティカーネル 0401に制御を移す (ス テツプ S0816)。
ここで、セキュリティカーネル 0401、状態切替部 0208、プログラム X用割り込み管 理部が、状態切替動作 Bを実行することにより、保護モードから通常モードへ切り替 える(ステップ S0809)。
[0097] ここで、状態切替動作 Bについて、図 11 (b)を用いて説明する。
ここで、プログラム Xは、前述のように、 OS0104である。
セキュリティカーネル 0401は、状態切替回路 0208に対し、通常モードを示す状態 信号 C0218を出力することにより、状態切替を依頼する (ステップ S 1710)。 状態切替回路 0208は、 CPUのコンテキストを保護メモリ 0206に格納する (ステツ プ S0817)。
[0098] アクセス制限回路 0207は、状態信号 C0218を受け付けて、バス 0210から保護メ モリ 0206へのアクセスを遮断状態にする。
遮断状態とは、バス 0210から保護メモリ 0206へアクセスできな 、状態を示す。 状態切替回路 0208は、状態信号 B0217を制御し、鍵レジスタ 0205の設定を変更 する(ステップ S 1713)。
[0099] ここで、鍵レジスタ 0205は、バス 0210を介して通知される設定信号 0304を用いて 命令用鍵情報テーブル 0305とデータ用鍵情報テーブル 0306を変更できないように する。
状態切替回路 0208は、 CPU内部状態のクリアを行う(ステップ S1714)。 状態切替回路 0208は、ベクタテーブル 0219の設定変更を行う(ステップ S1715) 。 ここで、状態切替回路 0208は、割り込みおよび例外発生時に CPU0201がプロ グラム X用割り込み管理部に含まれるハンドラを実行するよう設定する。
[0100] ベクタテーブル 0219は各々の割り込み管理部に含まれるハンドラを実行するよう 設定される。どの割り込み管理部に含まれるハンドラを実行するよう設定するかは、不 正動作防止制御部 0106が状態切替回路 0208に指示することができる。
次に状態切替回路 0208は、状態信号 A0211を制御してデバッガ IZF0209を有 効にする(ステップ S 1716)。
[0101] なお、不正動作防止制御部 0106が前もって状態切替回路 0208にデバッガ IZF0 209を有効にしないよう指示している場合、状態切替回路 0208は、ステップ S1716 をスキップし、デバッガ IZF0209を有効にしな!/、。
ここで、状態切替回路 0208は、プログラム Xのコンテキストを復帰させ (ステップ S1 717)、次に状態切替回路 0208は、プログラム X用割り込み管理部に制御を移し (ス テツプ S1718)、プログラム保護装置 0101は通常モードとなり、状態切替動作 Bは終 了する。
[0102] 次に、プログラム X用割り込み管理部は、共有メモリから前記処理結果を取得する( ステップ S0811)。 次に、プログラム X用割り込み管理部は、処理結果をプログラム Xが管理するデータ 領域に格納 (ステップ S0812)した後、ソフトウェア割り込みからリターンする (ステップ S0813)。
< 3. 2.データ領域の保護設定処理 >
図 21におけるステップ S2041は、プログラム Aが不正動作防止制御部 0106に対 し、使用するメモリ領域の保護設定を要求する処理である。
[0103] 以下、保護設定の処理について、前述のプログラム登録処理と異なる部分を中心 に、説明する。
ここでは、プログラム Xは、プログラム A0102であるものとする。
まず、プログラム Xは、自プログラムについて予め指定されている RAM0202上の データ領域である共有メモリに、データアドレスとセキュリティ要件とを含むデータ領 域保護設定要求を書き込む。
[0104] 前記データアドレスは、プログラム Xがデータ領域として使用を要望するメモリ領域 の先頭アドレスと末尾アドレスとを含む。
前記セキュリティ要件は、プログラム Xが前記データアドレスに格納するデータに対 し設定を要望する保護属性であり、セキュリティ要件リスト 0109と同様のデータ構造 を持つ。例えば、前記セキュリティ要件は、 5ビットのデータであり、各ビットに、フアイ ル出力機能、コピー機能、移動機能、特殊再生機能、デジタル出力機能の実行可否 が割り当てられる。なお、前記セキュリティ要件は、セキュリティ要件リスト 0109である 場合もある。
[0105] 不正動作防止制御部 0106は、ステップ S0802において、前記データ領域保護設 定要求を取得する。
ステップ S0803〜S0806までは、プログラム登録処理と同様である。
ステップ S0807の詳細である図 10のステップ S0600における判定で、不正動作防 止制御部 0106は、前記処理要求が、データ領域の保護設定要求であると判定し (ス テツプ S0600の保護)、ステップ S0602に移行する。
[0106] 不正動作防止制御部 0106は、前記データ領域保護設定要求に含まれるデータァ ドレス力、セキュリティ要件管理情報テーブル T0310中のセキュリティ要件管理情報 として登録されているか否かを判定し (ステップ S0602)、登録されていなければ、未 使用領域であると決定し、登録されていれば、未使用領域でないと決定する。
未使用領域であった場合 (ステップ S0602の YES)、セキュリティ要件管理情報テ 一ブル T0310およびデータ領域管理情報テーブル群 0501を更新する (ステップ SO 603)。
[0107] セキュリティ要件管理情報テーブル T0310の更新において、不正動作防止制御部 0106は、要求元のプログラムに対応するデータ領域管理情報テーブルに、前記先 頭アドレス及び前記末尾アドレスをデータアドレスとした新規セキュリティ要件管理情 報を追加する。
また、不正動作防止制御部 0106は、前記新規セキュリティ要件管理情報における データ暗号鍵には、乱数値を生成して登録する。
[0108] 次に、不正動作防止制御部 0106は、データ領域管理情報テーブルの更新された 情報を不正動作防止回路 0105に設定する (ステップ S0604)。
具体的には、不正動作防止制御部 0106は、更新された情報の不正動作防止回路 0105への設定として、前記新規セキュリティ要件管理情報のデータアドレスと、デー タ暗号鍵との組を、不正動作防止回路 0105のデータ用鍵情報テーブル 0306に追 加する。
[0109] また、ステップ S0602において、受け取ったデータアドレス領域が既に他のプログ ラムによって確保されている場合には(ステップ S0602の NO)、不正動作防止制御 部 0106は、管理テーブルの更新 (ステップ S0603)、およびデータ領域設定の変更 (ステップ S0604)の処理を行わず、ステップ S0808に移行する。
不正動作防止制御部 0106は、処理結果を共有メモリに格納する (ステップ S0808
) o
[0110] 処理結果には、正常終了、データアドレス領域が他のプログラムにより確保されて V、る等のエラー要因などを含める。
以降の処理は、前述のプログラム登録処理と同様である。
< 3. 3.データ領域共有設定処理 >
図 21におけるステップ S2051は、プログラム Aが不正動作防止制御部 0106に対 し、使用するメモリ領域の共有設定を要求する処理である。
[0111] 以下、データ領域共有設定処理につ!、て、前述のプログラム登録処理と異なる部 分を中心に説明する。なお、プログラム Xは、プログラム AO 102である。
まず、プログラム Xは、自プログラムについて予め指定されている RAM0202上の データ領域である共有メモリに、データアドレスとセキュリティ要件とを含むデータ領 域共有設定要求及び署名 AO 115を書き込む。
[0112] 前記データアドレスは、プログラム Xがデータ領域として共有を要望するメモリ領域 の先頭アドレスと末尾アドレスとを含み、前記セキュリティ要件は、ファイル A0212の 機能フラグ AO 111の情報を含む。
署名 A0115は、不正動作防止制御部 0106により、機能フラグ A0111の正当性の 確認に用いられる。 不正動作防止制御部 0106は、ステップ S0802において、前記 データ領域共有設定要求を取得する。
[0113] ステップ S0803〜S0806までは、プログラム登録処理と同様である。
ステップ S0807の詳細である図 10のステップ S0600における判定で、処理要求が 、データ領域の共有設定要求であると判定する (ステップ S0600の共有)。
不正動作防止制御部 0106は、ステップ S0802〖こおいて、 RAM0202上の共有メ モリから前記データ領域共有設定要求を取得し、ステップ S0632において、前記デ ータ領域共有設定要求に含まれるデータアドレスが、セキュリティ要件管理情報テー ブル T0310中のセキュリティ要件管理情報として登録されているか否かを判定し、登 録されている場合 (ステップ S0632の YES)、不正動作防止制御部 0106は前記デ ータ領域共有設定要求の妥当性判断を行う (ステップ S0633)。
[0114] 妥当性判断は、具体的には、共有を要求しているプログラムに対応するプログラム 管理情報に含まれる機能フラグが、妥当性判断の対象となっているセキュリティ要件 管理情報のセキュリティ要件を満たすかどうかによつて判断される。
また、前記セキュリティ要件の正当性についても、前記共有メモリに書き込まれた署 名を用いて確認する。
[0115] 妥当であると判断した場合 (ステップ S0633の YES)、不正動作防止制御部 0106 は、セキュリティ要件管理情報テーブル T0310と要求元のプログラム用のデータ領 域管理情報テーブルの更新を行う(ステップ S0634)。
不正動作防止制御部 0106は、セキュリティ要件管理情報テーブル T0310の更新 において、具体的には、対象となるデータ領域に対応するセキュリティ要件管理情報 の共有プログラム識別子に共有を要求しているプログラムの識別子を書き込む。
[0116] 要求しているプログラムの識別子は、カレントプログラム管理テーブル 0503に格納 されている識別子を用いる。
また、要求しているプログラムが指定しているセキュリティ要件力 既存のセキユリテ ィ要件より厳しい場合、要求しているプログラムが指定しているセキュリティ要件を、対 象となるデータ領域に対応するセキュリティ要件管理情報のセキュリティ要件として追 加する。
[0117] ここで、要求しているプログラムが指定しているセキュリティ要件が既存のセキユリテ ィ要件より厳しい場合とは、セキュリティ要件はセキュリティ要件リスト 0109と同様のデ ータ構造をしていることから、セキュリティ要件が既存のものより多い場合を指す。 さらに、データ領域管理情報テーブルの更新において、不正動作防止制御部 010 6は、要求元のプログラム用のデータ領域管理情報テーブルにデータ領域管理情報 を追加する。
[0118] ここで、追加するデータ領域管理情報のデータアドレスには、要求されたアドレス領 域を設定し、データ暗号鍵には、共有対象となるデータ領域の暗 Z復号に用いてい る暗号鍵を設定する。
次に、不正動作防止制御部 0106は、データ保護設定の変更を行う(ステップ S06 35)。
[0119] 具体的には、不正動作防止制御部 0106が、ステップ S0634で更新したデータ領 域管理情報テーブルの更新内容を不正動作防止回路 0105に反映し、正常終了を 示す処理結果を生成する。
また、ステップ S0632において、登録されていないと判断した場合 (ステップ S063 2の NO)、および設定が妥当でないと判断した場合 (ステップ S0633の NO)、不正 動作防止制御部 0106は、エラーを示す処理結果を生成する。
[0120] 次に、不正動作防止制御部 0106は、生成した処理結果を共有メモリに格納する( ステップ S0808)。
処理結果には、正常終了、データアドレス領域が他のプログラムにより確保されて V、る等のエラー要因などを含める。
以降の処理は、前述のプログラム登録処理と同様である。
< 3. 4.プログラム切替処理 >
図 21におけるステップ S2061は、プログラム A0102力 不正動作防止制御部 010 6に対し、カレントのプログラムを切り替えるよう要求し、その要求に対する処理である
[0121] 以下、プログラム切替処理について、前述のプログラム登録処理と異なる部分を中 心に説明する。
なお、プログラム Xは、プログラム A0102であり、プログラム B0103への切替を要求 するものとする。
まず、プログラム Xは、自プログラムについて予め指定されている RAM0202上の データ領域である共有メモリに、切替を希望するプログラムの識別子を含む切替要求 と、切替を希望するプログラムに対して伝達を希望する引数データとを書き込む。
[0122] プログラム X用割り込み管理部は、ステップ S0802において、前記プログラム切替 要求を取得する。
ステップ S0803〜S0806までは、プログラム登録処理と同様である。
ステップ S0807の詳細である図 10のステップ S0600における判定で、処理要求が
、プログラム切替要求であると判定する (ステップ S0600の切替)。
[0123] 不正動作防止制御部 0106は、ステップ S0802〖こおいて、 RAM0202から前記切 替要求を取得し、更に、引数データの取得を行う(ステップ S0621)。引数データは、 切替元のプログラム力 切替先のプログラムへ伝達される情報であり、コマンドなどが 含まれる。
不正動作防止制御部 0106は、取得した引数データを保護メモリ 0206に格納する
[0124] RAM0202における引数データの格納位置は予め決められており、不正動作防止 制御部 0106は予め知っている。 なお、引数データの位置は固定である必要はなぐ切替要求に含むこととしてもよ い。
次に、不正動作防止制御部 0106は、カレントプログラム管理テーブルの更新を行 う(ステップ S0622)。
[0125] ここで、カレントプログラム管理テーブルの内容を切替先のプログラムの識別子に変 更する。
次に、不正動作防止制御部 0106は、不正動作防止回路 0105の設定を変更する (ステップ S0623)。
不正動作防止制御部 0106は、鍵レジスタ 0205に記憶されている命令用鍵情報テ 一ブルの内容と、データ用鍵情報テーブルの内容を消去し、データ領域管理情報テ 一ブル群 0501に含まれる切替先のプログラムに対応するデータ領域管理情報テー ブル中の各データ領域管理情報に記憶されて 、るデータアドレスと、データ暗号鍵と の組を、不正動作防止回路 0105のデータ用鍵テーブルに書き込む。
[0126] また、コード領域管理情報テーブル群 0502に含まれる切替先のプログラムに対応 するコード領域管理情報テーブル中の各コード領域管理情報に記憶されているコー ドアドレスと、コード暗号鍵との組を、不正動作防止回路 0105の命令用鍵情報テー ブル 0305に書き込む。
次に、不正動作防止制御部 0106は、予め保護メモリ 0206に格納しておいた引数 データを切替先のプログラムが管理する RAM0202に格納する(ステップ S0624)。
[0127] 次に、不正動作防止制御部 0106は、切替先のプログラムへの分岐指示を含む処 理結果を生成し、当該処理結果を共有メモリに格納する (ステップ S0808)。
このように、不正動作防止制御部 0106は、引数データを保護メモリを介して他のプ ログラムに受け渡すことができる。
そのため、不正動作防止制御部 0106は、 OS0104を含むプログラムから他のプロ グラムへのデータの受け渡しを依頼された場合、依頼元のプログラムと依頼先のプロ グラム以外のプログラムへ、そのデータが漏洩しな 、ように受け渡しを行うことが可能 となる。
[0128] 例えば、プログラム A0102がプログラム B0103を関数として呼び出す場合で、プロ グラム B0103がプログラム A0102のデータ領域を共有していない場合において、引 数データの受け渡しを安全に行うことができる。
また、プログラム A0102が OS0104のシステムコールを呼び出す場合も同様に引 数データの受け渡しを安全に行うことができる。
<4.全体動作 >
プログラム保護装置 0101によるプログラムの切替処理(プログラム A0102からプロ グラム B0103への切替処理)を例として、全体動作について、図 13、図 14に示すフ ローチャートを用いて説明する。
[0129] プログラム A0102は、保護対象データ 0108であるコンテンツの復号を行った後、 復号されたコンテンツの再生を依頼するために、プログラム A0102に対し予め決めら れたデータ領域に、プログラム Bへの引数データを含む処理要求を書き込んで、プロ グラム B0103に切り替えるためにソフトウェア割り込みを発生させ、プログラム A用割 り込み管理部 0402に制御を移す (ステップ S0901)。
[0130] プログラム A用割り込み管理部 0402は、前記データ領域から前記引数データを取 得し、また、割り込みの種別がプログラム B0103へ切り替えるためのソフトウェア割り 込みであったことを確認する(ステップ S0902)。
次に、プログラム A用割り込み管理部 0402は、プログラム B0103へ切り替える旨の 要求と引数データを共有メモリに格納する (ステップ S0903)。
[0131] 次に、プログラム A用割込み管理部 0402、状態切替回路 0208、セキュリティカー ネル 0401は、前述の状態切替動作 Aを実行し、通常モードから保護モードへ切り替 える(ステップ S0905)。
次に、ステップ S0905において、制御主体となったセキュリティカーネル 0401は、 不正動作防止制御部 0106に制御を移す (ステップ S0907)。
[0132] 次に、不正動作防止制御部 0106は、共有メモリから、ステップ S0903で格納され た前記要求と前記引数データを取得する (ステップ S0908)。
次に、不正動作防止制御部 0106は、前記要求がプログラム B0103への切り替え 要求であることから、プログラムの切替処理が必要であることを判断し、前述したプロ グラムの切替処理 0602の処理を行う(S0909)。 [0133] 不正動作防止制御部 0106は、切替処理の結果を共有メモリに格納する (ステップ S0910)。
次に、不正動作防止制御部 0106は、セキュリティカーネルに制御を移す (ステップ S09l 。
ここで、セキュリティカーネル 0401、状態切替回路 0208及び OS用割込み管理部 0404が前述の状態切替動作 Bを実行し、保護モードから通常モードへ切り替える( ステップ S0913)。また、プログラムの切替にはオペレーティングシステムの処理が必 要なので、通常モードに復帰後、 OS用割り込み管理部 0404に制御を移す。
[0134] 次に、 OS用割り込み管理部 0404は、共有メモリから処理結果を取得し (ステップ S 0915)、 OS0104に制御を移す (ステップ S0916)。
次に OS0104は、プログラム A0102からプログラム B0103への切替処理を行う(ス テツプ S0917)。ここで、 OS0104は、プログラムコンテキストの切替などの処理を行う
[0135] 次に、 OS0104は、プログラム B0103への切替を不正動作防止制御部 0106に依 頼するために、 OS用割り込み管理部 0404に制御を移す (ステップ S0918)。
次に、 OS用割り込み管理部 0404は、プログラム B0103への切替要求を共有メモ リに格納する(ステップ S0919)。
[0136] ここで、ステップ S0921〜ステップ S0929は、ステップ S0905〜ステップ S0913ま でと同様の処理であるので、説明を省略する。
ただし、切替先のプログラムは OS0104ではなぐプログラム B0103であるので、プ ログラム B用割り込み管理部 0403に制御が移る。
次に、プログラム B用割り込み管理部 0403は、共有メモリから処理結果を取得する (ステップ S0931)。
[0137] 次にプログラム B用割り込み管理部 0403は、処理結果をプログラム B0103が管理 するデータ領域に格納 (ステップ S0932)した後、ソフトウェア割り込みからリターンす る(ステップ S0933)。
その後、プログラム B0103は、データ処理を行う(ステップ S0934)。
< 5.コンテンツ復号処理を例とした補足説明 > プログラム保護装置 0101において、暗号化コンテンッである保護対象データ 010 8の復号処理を行うプログラム A0102と、復号されたコンテンツを再生するプレーヤ 一であるプログラム Bとが、連係して動作する場合について、データの変化を中心に 、図 15〜図 20に示す図を用いて補足説明する。
[0138] また、保護対象データへのアクセス権を保持していないプログラム C0107が、保護 対象データへアクセスした場合の動作についても説明する。
図 16は、プログラム保護装置 0101動作中の RAM0202の状態を示す。 プログラム A0102、プログラム B0103、プログラム C0107、 OS0104のコードは、 それぞれコード暗号鍵 KC— A、 KC— B、 KC— C、 KC— OSによって暗号化されて 不揮発メモリ 0203に格納されている。
[0139] 不揮発メモリ 0203に格糸内されている BIOS0405は、フアイノレ A0212、フアイノレ B0 213、ファイル C0214、ファイル OS0215を RAM0202にロードする。
その結果、プログラム A0102のコード領域(定数も含まれる) 1201は、 1000番地 力 1100番地にロードされる。
[0140] プログラム B0103、プログラム C0107、 OS0104も同様に、それぞれ 2000〜210 0、 3000〜3100、 4000〜4100番地にロードされる。
また、蓄積メディア 0216に格納されている保護対象データ 0108は、 8000-900 0番地の保護対象データ領域 1210にロードされる。
なお、保護対象データ 0108は、必ずしも BIOS0405がロードする必要はなぐそ の他のプログラムがロードしてもよ 、。
[0141] その後、 BIOS0405は、不正動作防止制御部 0106にプログラム登録依頼をする。
不正動作防止制御部 0106は、プログラムの登録処理 0601に従って、各プロダラ ムを登録する。
その結果、図 17〜図 19に示すように、管理テーブル 0110内に、データ領域管理 情報テーブル T0500、 Τ0600、 Τ0700、 Τ0800、コード領域管理情報テーブル TO 900、 T1000、 Τ1100、 Τ1200、およびプログラム管理情報テーブル Tl 300、セキ ユリティ要件管理情報テーブル T1400が生成される。
[0142] なお、ここでは BIOS0405がプログラム A0102、プログラム B0103、プログラム CO 107をロード Z登録して 、るが、 BIOS0405が OS0104のみをロード Z登録した後、 OS0104力プログラム A0102、プログラム B0103、プログラム C0107をロード Z登 録してちよい。
プログラム登録処理 0601の管理テーブルの更新 (ステップ S0615)で、プログラム 管理情報 T1301〜T1304がプログラム管理情報テーブル T1300に追加される。
[0143] プログラム A0102およびプログラム B0103の機能フラグ 0111および 0112におい て、ファイル出力機能は無しであるので、プログラム管理情報 T1301および T1302 の機能フラグはファイル出力機能無しとなる。
また、プログラムじ0107ぉょび030104の機能フラグ0113ぉょび0114は、フアイ ル出力機能は有りであるので、プログラム管理情報 T1303および T1304の機能フラ グはファイル出力機能有りとなる。
[0144] なお、ここではファイル出力機能のみに着目しているが、その他の機能についても 同様に扱われる。
プログラム登録処理 0601の管理テーブルの更新 (ステップ S0615)で、プログラム Α用コード領域管理情報テーブル Τ0900には、コード領域管理情報 T0901と Τ090 2が追力!]される。
[0145] コード領域管理情報 T0901にお 、て、コード領域識別子として" A— CO"、コードァ ドレスとして" 1000〜1099"、コード暗号鍵としで' KC_A "が設定される。
ここで、不正動作防止制御部 0106は、ファイル A0212に格納されているコード喑 号鍵 0710を秘密鍵で復号ィ匕する。コード領域管理情報 T0902において、コード領 域識別子として"未定義領域"、コードアドレスとして"定義領域以外"、コード暗号鍵 として" KC_RA "が設定される。
[0146] ここで、 "定義領域以外"とは、プログラム A用コード領域管理情報テーブル T0900 に登録されているコード領域管理情報 T0902以外のコード領域管理情報で定義さ れているコードアドレス領域以外の領域を意味し、この領域には、コード暗号鍵として KC_RAが用いられる。
KC— RAは、不正動作防止制御部 0106が生成した乱数値である。なお、他のコ ード、領域管理†青報テープノレ T1000、 T1100、 T1200ち図 16【こ示すよう【こ、同様【こ 設定される。
[0147] 図 15は、プログラム保護装置 0101の動作を示すフローチャートである。
本フローチャートは、プログラム A〜Cが連携動作しようとし、プログラム Cがセキユリ ティ要件違反により停止する場合を示している。
なお、図 15では、各割り込み管理部 0402、 0403、 0404、 0406の動作は省略し ている。以下、図 15にしたがってプログラム保護装置 0101の動作を説明する。
[0148] プログラム A0102は、プログラム Aのデータ領域 1202を使用可能にするために不 正動作防止制御部 0106に対しデータ保護設定を依頼する (ステップ S1101)。 ここで、プログラム A0102は、 1500〜 1599番地までのデータ領域をプログラム AO
102のみアクセス可能な状態で確保するよう不正動作防止制御部 0106に依頼をす る。
[0149] プログラム A0102は、ステップ S0801〜ステップ S0813と同様の動作を行い、デ ータ保護設定を行う。
以下、データ保護設定の依頼は同様の動作で行われるものとする。
その結果、プログラム A用データ領域管理情報テーブル T0500にデータ領域管理 情報 T0501が追加されると共に、セキュリティ要件管理情報テーブル T1400にセキ ユリティ要件管理情報 T1401が追加される。
[0150] このとき、不正動作防止制御処理 (ステップ S0807)において、不正動作防止制御 部 0106は、データ領域の保護設定処理 0603を行う。
データ領域管理情報 T0501のデータ暗号鍵 KD— A1は、不正動作防止制御部 が生成した乱数値である。
次にプログラム A0102は、保護対象データ領域 1210のデータを取り扱えるように 設定を行う(ステップ S 1102)。
[0151] 保護対象データ領域 1210に格納されている保護対象データ 0108内のデータ 07 01はデータ暗号鍵 0702で暗号化されているので、データ 0701をデータ暗号鍵 07 02で復号化しなければプログラム A0102はデータ 0701を使用できない。
ここでは、バス暗号回路 0204で復号ィ匕するものとする。
そこで、プログラム A0102は、不正動作防止制御部 0106に対し、データ領域設定 要求を行う。
[0152] データ領域設定要求には、保護対象データ領域 1210のアドレスとセキュリティ要 件が含まれる。
ここで、プログラム A0102は、セキュリティ要件として、保護対象データ 0108に含ま れるセキュリティ要件リスト 0109を用いるように不正動作防止制御部 0106に指示す る。
[0153] 不正動作防止制御部 0106は、図 12〖こ示す (ステップ S0801)力ら(ステップ S081 3)までの処理を行う。
不正動作防止制御処理 (ステップ S0807)において、不正動作防止制御部 0106 は、データ領域保護設定処理 0603と同様の処理を行う。
ただし、未使用領域であるかどうかを確かめる処理 (ステップ S0602)の後、図 20の フローチャートに示す、プログラム Aの機能フラグが保護対象データ 0108のセキユリ ティ要件リスト 0109記載のセキュリティ要件を満たすかどうかの確認を行う処理が追 加される。
[0154] もし、セキュリティ要件を満たしていなければ不正動作防止制御処理を終了する。
ここで、セキュリティ要件を満たす力どうかの確認において、不正動作防止制御部 0 106は、まずセキュリティ要件リストの正当性確認を行う(ステップ S1801)。
セキュリティ要件リストが正当でないと判断した場合 (ステップ S1801の NO)、不正 動作防止制御処理を終了する。
[0155] ここで、不正動作防止制御部 0106は、署名データ 0708を用い、セキュリティ要件 リスト 0109の正当性の確認を行う。
次に、不正動作防止制御部 0106は、セキュリティ要件と機能フラグの比較を行う( ステップ S 1802)。
ここで、不正動作防止制御部 0106は、正当性を確認したセキュリティ要件リスト 01 09とプログラム管理情報 T1301に含まれるプログラム Aの機能フラグを比較し、セキ ユリティ要件を満たしているかどうかの確認、および、セキュリティ要件管理情報テー ブル T1400に含まれる生成したプログラムがプログラム Aであるセキュリティ要件管 理情報のセキュリティ要件がセキュリティ要件リスト 0109を満たしているかどうかの確 認を行う。
[0156] セキュリティ要件を満たしていないと判断された場合 (ステップ SI 802の NO)、不正 動作防止制御処理を終了する。
セキュリティ要件管理情報テーブル T1400に含まれる他のデータ領域のセキユリテ ィ要件がセキュリティ要件リスト 0109を満たしているかどうか確認することで、保護対 象データ 0108のセキュリティ要件を満たしていないデータ領域力もデータが漏洩す ることを防止することができる。
[0157] 次に、不正動作防止制御部 0106は、データ暗号鍵 0702の復号ィ匕を行った後 (ス テツプ S1803)、データ領域管理情報テーブルの更新 (ステップ S0603)を行う。 ここで、不正動作防止制御部 0106は、プログラム A用データ領域管理情報テープ ル T0500にデータ領域管理情報 T0502を追加すると共に、セキュリティ要件管理情 報テーブル T1400にセキュリティ要件管理情報 T1402を追加する。
[0158] データ領域管理情報 T0502のデータ暗号鍵には、データ暗号鍵 0702が格納され る。
図 17では、データ暗号鍵 0702は、 "KD_S "と示されている。
次にプログラム A0102は、 1600〜1699番地までのデータ領域をセキュリティ要件 リスト 0109に基づくセキュリティ要件で確保するよう不正動作防止制御部 0106に依 頼をする(ステップ S1103)。
[0159] ここで、セキュリティ要件リスト 0109には、保護対象データ 0108はファイル出力禁 止である旨の情報が含まれて 、る。
ここで、不正動作防止制御部 0106は、要求されたセキュリティ要件が、プログラム A0102が既に生成しているすべてのデータ領域のセキュリティ要件と同等力もしくは 厳 、ものであるかをセキュリティ要件管理情報テーブル T1400を用いて確認する。
[0160] もし、要求されたセキュリティ要件が、既に生成しているすべてのデータ領域のセキ ユリティ要件と同等力もしくは厳しいものでなければ、管理情報の追カ卩は行わない。 要求されたセキュリティ要件が、既に生成して!/、るすべてのデータ領域のセキユリテ ィ要件と同等力もしくは厳しいものであると、プログラム A用データ領域管理情報テー ブル T0500にデータ領域管理情報 T0503が追加されると共に、セキュリティ要件管 理情報テーブル T1400にセキュリティ要件管理情報 T1403が追加される。
[0161] 次に、プログラム A0102は、保護対象データ 0108を保護対象データ領域 1210か ら読み出し、保護対象データ 0108の処理を行う (ステップ S 1105)。
処理結果は、プログラム Aのデータ領域 1203に格納される。
次に、プログラム A0102は、プログラム A0102からプログラム B0103への切替処 理を行う(ステップ S 1106)。
[0162] ここで切替処理は、図 13及び図 14のステップ S0901〜ステップ S0933の処理を 行う。
切替処理 (ステップ S 1106)が実行される以前、不正動作防止制御部 0105には、 プログラム A用コード領域管理情報テーブル T0900およびプログラム A用データ領 域管理情報テーブル T0500の情報が設定されている。
[0163] 切替処理 (ステップ S 1106)が実行されると、不正動作防止制御部 0105には、プロ グラム B用コード領域管理情報テーブル T1000およびプログラム B用データ領域管 理情報テーブル T0600の情報が設定される。
ここで、動作中のプログラムに合わせた鍵が鍵レジスタに設定されるように、不正動 作防止制御部 0105を構成している鍵レジスタ 0205の命令用鍵情報テーブル 0305 に各コード領域管理情報テーブルの設定が反映され、データ用鍵情報テーブル 03 06に各データ領域管理情報テーブルの設定が反映される。
[0164] このように、プログラム保護装置 0101がプログラム A0102からプログラム B0103へ の切替処理 (ステップ S1106)を行 、、プログラム A0102がロードされて!/、る領域を 喑 Z復号する鍵を変更するので、プログラム B0103によるプログラム A0102の不正 実行を防止することができる。
例えば、プログラム B0103の動作中にコード暗号鍵 KC— Aで暗号化されて RAM 0202に格納されているプログラム Aのコード領域 1201 (1000〜1099番地に配置 されている)に分岐する場合、コード領域 1201のコードはコード暗号鍵 KC—RBを 用いて復号ィ匕される。
[0165] 鍵 KC— Aで暗号化されて!/、るコードを鍵 KC—RBで復号してもコードは正しく復 号されないため、正しく CPU0201は実行することができず、プログラム B0103による プログラム A0102の不正実行を防止することができる。
また、同様にプログラム B0103の動作中にプログラム Aのデータ領域 1202にァク セスしたとしてもデータ暗号鍵が異なるので、意味のあるデータは取得できな!/、。
[0166] また、プログラム保護装置 0101がプログラム A0102からプログラム B0103への切 替処理 (ステップ S 1106)を行うことで、割り込みおよび例外が発生した場合にはプロ グラム B用割り込み管理部 0403に含まれるハンドラが実行される。
そのため、割り込みおよび例外によって、プログラム B0103以外のプログラムに制 御を奪われることがない。
[0167] 次に、プログラム B0103は、プログラム Bのデータ領域 1205を使用可能にするた めに不正動作防止制御部 0106に対しデータ保護設定を依頼する (ステップ S1107
) o
ここで、プログラム B0103は、 2500〜2599番地までのデータ領域をプログラム B0 103のみアクセス可能な状態で確保するよう不正動作防止制御部 0106に依頼をす る。
[0168] その結果、プログラム B用データ領域管理情報テーブル T0600にデータ領域管理 情報 T0601が追加されると共に、セキュリティ要件管理情報テーブル T1400にセキ ユリティ要件管理情報 T1404が追加される。
次に、プログラム B0103は、データ領域 1203をプログラム Aと共有するためにデー タ保護設定を行う (ステップ S 1108)。
[0169] ここで、プログラム B0103は、 1600〜1699番地までのデータ領域 1203をフアイ ルへの出力不可を示すセキュリティ要件で確保するよう不正動作防止制御部 0106 に依頼をする。
データ領域 1203は、既にプログラム A0102によって確保されているので、データ 領域を共有することとなる。
[0170] プログラム保護装置 0101は、図 12に示すステップ S0801〜ステップ S0813と同 様の処理を行う。
ここで、コード'データ保護設定 (ステップ S0807)において、不正動作防止制御部 0106は、図 10に示すデータ領域共有設定処理 0604を行う。 データ領域共有設定処理 0604において、不正動作防止制御部 0106は、要求さ れているデータ領域がセキュリティ要件管理情報テーブル T1400に存在するかどう かを確かめる(ステップ S0632)。
[0171] 不正動作防止制御部 0106は、セキュリティ要件管理情報 T1403の存在を確認で きる。
次に不正動作防止制御部 0106は、プログラム Bのプログラム管理情報 T1302に 含まれる機能フラグが、要求されているデータ領域のセキュリティ要件管理情報 T14 03に含まれるセキュリティ要件を満たす力どうかを確かめる。
[0172] ここでは、共有対象のデータ領域 1203のセキュリティ要件はファイル出力不可であ るのに対し、プログラム B0103の機能フラグはファイル出力不可能であるので、妥当 であると判断される。
その結果、セキュリティ要件管理情報 T1403に含まれる共有プログラム識別子にプ ログラム Bの識別子が設定される。
[0173] プログラム B0103がデータ領域 1203に要求するセキュリティ要件は、ファイルへの 出力不可であり、これは既存のセキュリティ要件と等しいので、セキュリティ要件管理 情報 T1403のセキュリティ要件は変更しな 、。
次に管理テーブルの更新 (ステップ S0634)が行われ、プログラム B用データ領域 管理情報テーブル T0600にデータ領域管理情報 T0602が追加される。
[0174] データ領域管理情報 T0602のデータ暗号鍵は、プログラム A用データ領域管理情 報 T0503と同様の鍵が設定される。
次にデータ保護設定の変更 (ステップ S0635)が行われ、鍵レジスタ 0205の設定 が変更される。
その結果、プログラム B0103からもプログラム Aのデータ領域 1203の参照が可能 となる。
[0175] 次に、プログラム B0103は、データ領域 1203のデータを用いて処理を行う(ステツ プ S1109)。
次にプログラム保護装置 0101は、プログラム B力も Cへの切替処理を行う(ステップ S1110)。 次に、プログラム C0107は、プログラム Cのデータ領域 1207を使用可能にするた めに不正動作防止制御部 0106に対しデータ保護設定を依頼する (ステップ S 1111
) o
[0176] ここで、プログラム C0107は、 3500〜3599番地までのデータ領域をプログラム C のみアクセス可能な状態で確保するよう不正動作防止制御部 0106に依頼をする。 その結果、プログラム C用データ領域管理情報テーブル T0700にデータ領域管理 情報 T0701が追加されると共に、セキュリティ要件管理情報テーブル T1400にセキ ユリティ要件管理情報 T1405が追加される。
[0177] 次に、プログラム C0107は、データ領域 1203をプログラム A0102と共有するため にデータ保護設定を行う (ステップ S 1112)。
ここで、プログラム C0107は、 1600〜1699番地までのデータ領域 1203をフアイ ルへの出力可を示すセキュリティ要件で確保するよう不正動作防止制御部 0106に 依頼をする。
[0178] 共有メモリの設定 (ステップ S1108)と同様に不正動作防止制御部 0106は、デー タ領域共有設定処理 0604を行う。
共有メモリの設定 (ステップ S 1112)は、共有メモリの設定 (ステップ S 1108)と異な り、共有メモリの設定は失敗する。
データ領域共有設定処理 0604における、要求の妥当性判断 (ステップ S0633)で 妥当でないと判断されるからである。
[0179] より具体的には、不正動作防止制御部 0106は、セキュリティ要件管理情報 T1403 のセキュリティ要件をプログラム管理情報 T1303の機能フラグが満たすかどうかの確 認を行う。
セキュリティ要件がファイル出力不可であるのに機能フラグが出力可能であるので、 不正動作防止制御部 0106は、データ領域 1203のセキュリティ要件をプログラムじが 満たしていないと判断し (ステップ S0633の NO)、不正動作防止制御部 0106は、不 正動作防止制御処理を終了する。
< 6.変形例 >
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の 実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれ る。
(1) 第 1実施形態において、コード暗号鍵 0710等のコード暗号鍵は、公開鍵暗号 アルゴリズムで暗号化されて 、るとして 、たが、これに限るものではな 、。
[0180] それぞれのコード暗号鍵を共通鍵暗号方式で暗号ィ匕してもよぐこの場合、暗号ィ匕 する際に用いた共通鍵は不正動作防止制御部 0106が保持する。また、プログラム は必ずしも暗号ィ匕する必要はない。その場合、コード暗号鍵 0710は NULL鍵とする 。また、コード暗号鍵 0710は、プログラム Aのコード 0711を暗号ィ匕する際に用いた アルゴリズム情報を含むことができる。
[0181] また、データ暗号鍵 0702についても、データ暗号鍵 0702を共通鍵暗号方式で暗 号ィ匕してもよぐこの場合、暗号化する際に用いた共通鍵は不正動作防止制御部 01 06が保持する。
また、データ 0701を暗号化しない場合、データ暗号鍵 0702は NULL鍵とする。
[0182] また、データ暗号鍵 0702は、データ 0701を暗号ィ匕する際に用いたアルゴリズム情 報を含むことができる。
(2) 上述の実施形態では、不正動作防止回路 0105を用いて、 RAM0202へのァ クセスを制限していた力 これに限らず、 RAM0202へのアクセスを、プログラム単位 で制限することができる他の回路、方法等を用いてもよい。
[0183] 例えば、図 22に示すように、不正動作防止回路 0105に代えて、不正動作防止回 路 2105を用いてもよい。
不正動作防止回路 2105は、 RAM0202に記憶させるコード、データに対し暗号 ィ匕、復号を行うのに代えて、 RAM0202へのアクセスを、プログラム IDを用いて制限 する。
[0184] 不正動作防止回路 2105は、鍵レジスタに代えて IDレジスタ 2205を備え、バス喑 号回路に代えてバス接続許可回路 2204を備える。
IDレジスタ 2205は、図 23に示すように、アドレスと命令用バス接続 IDとの対応を示 す命令用 ID情報テーブル 2305と、アドレスとデータ用バス接続 IDとの対応を示す データ用 HD情報テーブル 2306とを保持しており、バス接続許可回路 2204からアド レス信号 2301を取得して、アドレス信号 2301が示すアドレスに対応づけられている 命令用バス接続 ID2302と、データ用バス接続 ID2303とをバス接続許可回路 2204 に出力する。
[0185] ここで、命令用 HD情報テーブル 2305は、命令用 HD情報 T2311、 T2312、 T231 3 · · ·を含み、各命令用 Iひ f青報は、アドレスと命令用バス接続 ID暗号鍵との対応を示 しており、データ用 HD情報テーブル 2306は、データ用 HD情報 T2321、 Τ2322、 Τ2 323 · · ·を含み、各データ用 HD情報は、アドレスとデータ用バス接続 IDとの対応を示 している。
[0186] この変更に伴い、不正動作防止制御部 0106が管理する管理テーブル 0110の内 容は、上述の実施形態で説明したものに代えて、不正動作防止回路 2105に設定す るための IDに関する情報とする。
また、 IDレジスタ 2205の設定は、状態切替回路 0208が出力する状態信号 Bが保 護モードを示すときのみ、バス 0210により通知される設定信号 2304を用いて変更 することができる。
[0187] RAM0202は、バス接続許可回路 2204と接続されているメモリ装置である。
バス接続許可回路 2204は、 IDレジスタ 2205から通知されるデータ用バス接続 ID 、コード用ノ ス接続 IDと、現在動作中のプログラム固有の IDとを比較し、一致する場 合に、当該アドレスで示されるメモリ領域へのアクセスを許可する。前述の現在動作 中のプログラム固有の IDは、カレントプログラム管理テーブル T0503に設定されてい るカレントプログラムの固有の IDである。
[0188] これにより、コードやデータが、バス 0210と RAM0202との間でやり取りされるか否 かをバス接続許可回路 2204により制御することができる。
また、バス接続許可回路 2204は、 CPU0201上で動作するプログラムが命令フエ ツチのために RAM0202にアクセスして!/、るのか、データアクセスのためにアクセスし て!、るのかを検知し、同一物理アドレスへの命令フェッチの場合には命令用バス接 続 IDを用い、データアクセスの場合にはデータ用バス接続 IDを用いる。
[0189] (3)上記の実施形態では、プログラム単位で、コード領域、データ領域、セキユリテ ィ要件、プログラムの管理情報、メモリの共有など情報の管理や、実行単位の切替を 行っていたが、これに限らず、プロセス、スレッドなど他の単位毎に行ってもよい。この 場合、通常モードや保護モードのそれぞれで連携動作するプロセスやスレッドは、互 いに異なるプログラムに含まれるプロセスやスレッドではなぐ同一のプログラムの別 プロセスや別スレッドであってもよ 、。 (4)上記の各装置は、具体的には、マイクロプ ロセッサ、 ROM、 RAM、ハードディスクユニット、ディスプレイユニット、キーボード、 マウスなど力も構成されるコンピュータシステムである。前記 RAM又は前記ハードデ イスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサ 力 前記コンピュータプログラムに従って動作することにより、各装置は、その機能を 達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンビュ ータに対する指令を示す命令コードが複数個組み合わされて構成されたものである
[0190] (5)上記の各装置を構成する構成要素の一部又は全部は、 1個のシステム LSI (La rge Scale Integration:大規模集積回路)から構成されているとしてもよい。シス テム LSIは、複数の構成部を 1個のチップ上に集積して製造された超多機能 LSIであ り、具体的には、マイクロプロセッサ、 ROM、 RAMなどを含んで構成されるコンビュ ータシステムである。前記 RAMには、コンピュータプログラムが記憶されている。前 記マイクロプロセッサ力 前記コンピュータプログラムに従って動作することにより、シ ステム LSIは、その機能を達成する。これらは個別に 1チップィ匕されても良いし、一部 又は全てを含むように 1チップ化されても良 、。
[0191] ここでは、 LSIとした力 集積度の違いにより、 IC、システム LSI、スーパー LSI、ゥ ノレ卜ラ LSIと呼称されることちある。
また、集積回路化の手法は LSIに限るものではなぐ専用回路又は汎用プロセサで 実現してもよい。 LSI製造後に、プログラムすることが可能な FPGA (Field Progra mmable Gate Array)や、 LSI内部の回路セルの接続や設定を再構成可能なリコ ンフィギユラブル ·プロセッサーを利用しても良 、。
[0192] さらには、半導体技術の進歩又は派生する別技術により LSIに置き換わる集積回 路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積ィ匕を行って もよい。バイオ技術の適応等が可能性としてありえる。 (6)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能な I Cカード又は単体のモジュール力 構成されて 、るとしてもよ 、。前記 ICカード又は 前記モジュールは、マイクロプロセッサ、 ROM, RAM,などから構成されるコンビュ ータシステムである。前記 ICカード又は前記モジュールは、上記の超多機能 LSIを 含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作するこ とにより、前記 ICカード又は前記モジュールは、その機能を達成する。この ICカード 又はこのモジュールは、耐タンパ性を有するとしてもよ!/、。
[0193] (7)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンビュ ータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプ ログラム力もなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ 読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、 CD— RO M、 MO、 DVD, DVD-ROM, DVD -RAM, BD (Blu— ray Disc)、半導体メ モリなど、〖こ記録したものとしてもよい。また、これらの記録媒体に記録されている前 記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
[0194] また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信 回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送 等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって 、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサ は、前記コンピュータプログラムに従って動作するとしてもよい。
[0195] また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送する ことにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由し て移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい
(8)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよ!/、。
< 7.用語についての補足説明 >
前記データ処理装置は、プログラム保護装置 0101に相当する。 [0196] 前記検出手段は、 CPU0201及び状態切替部 0208に相当する。
前記アクセス手段は、不正動作防止制御回路 0105及び RAM0202及び保護メモ リ 0206及びアクセス制限回路 0207に相当する。
前記切替手段は、状態切替部 0208に相当する。
前記判定手段は、不正動作防止制御部 0106に相当する。
[0197] 前記制御手段は、不正動作防止制御部 0106及びセキュリティカーネル 0401に相 当する。
前記メモリは、 RAM0202〖こ相当する。
前記保持部は、鍵レジスタ 0205に相当する。
前記アクセス制限部は、不正動作防止制御部 0106及びセキュリティカーネル 040 1及び不正動作防止制御回路 0105及び RAM0202及び保護メモリ 0206及びァク セス制限回路 0207に相当する。
[0198] 前記アクセス制限部における前記取得部は、 RAM0202と、不正動作防止回路 02 05と、セキュリティカーネル 0401と、不正動作防止制御部 0106に相当する。
前記アドレス判定部は、鍵レジスタ 0205とバス暗号回路 0204に相当する。 前記アクセス実行部は、バス暗号回路 0204に相当する。
前記管理情報追加部は、不正動作防止制御部 0106に相当する。
[0199] 前記べクタテーブル保持手段は、不揮発メモリ 221に相当する。
前記べクタテーブル書換手段は、不正動作防止制御部 0106に相当する。 前記使用要求受付部は、バス暗号回路 0204に相当する。
前記使用判定部は、バス暗号回路 0204に相当する。
前記権限判定部は、不正動作防止制御部 0106に相当する。
[0200] 前記管理情報登録部は、不正動作防止制御部 0106に相当する。
前記デバッグ手段は、デバッガ IZF0209に相当する。
前記強制無効化手段は、 CPU0201に相当する。
産業上の利用可能性
[0201] 本発明のプログラム保護装置は、機能追加、不具合修正などのためにプログラムの 更新が可能なデジタル家電などとして使用され、家電製品を扱う業者などにより、生 産、使用、販売等される。

Claims

請求の範囲
[1] プログラムに従って動作するプロセッサを備え、前記プログラムの実行単位であるプ 口セスが動作する通常モードと前記プロセスの動作が抑制される保護モードを切り替 えて動作するデータ処理装置であって、
通常モードにおいて、第 1プロセスの処理対象データに対して、前記第 1プロセスに よるアクセスを許可し、他のプロセスによるアクセスを禁止するアクセス禁止手段と、 通常モードにおいて、前記第 1プロセスから、第 2プロセスの呼び出しを指示する呼 出命令を検出する検出手段と、
前記呼出命令が検出されると、通常モードから保護モードに切り替える切替手段と 保護モードにおいて、前記第 2プロセスが、前記処理対象データについての使用 権限を有している力否かを判断する判断手段と、
保護モードにおいて、前記第 2プロセスが前記使用権限を有していると判断される 場合に、前記アクセス禁止手段に対して、前記第 2プロセスが前記通常モードにおい て、前記処理対象データに対しアクセスすることが許可されるように制御する制御手 段と
を備えることを特徴とするデータ処理装置。
[2] 前記アクセス禁止手段は、
メモリと、
プロセス毎の前記メモリ内でアクセスを許可する領域を示す管理情報を、保護モー ドにおいてのみ書き換え可能に保持する保持部と、
通常モードで動作するプロセスを、前記管理情報に従って前記メモリにアクセスさ せるアクセス制限部と、
を含み、
前記制御手段は、前記判断手段により使用権限があると判定された場合に、第 2プ 口セスの管理情報に、前記メモリ上で前記対象データが保持されている領域へのァ クセスを許可する情報を追加する
ことを特徴とする請求項 1に記載のデータ処理装置。
[3] 前記保持部が保持する前記管理情報は、前記メモリ中のアドレスと、アドレスに対 応する鍵とを対応付けた情報を一以上含み、
前記アクセス制限部は、
前記メモリのアドレスを含む前記メモリへのアクセス要求を取得する取得部と、 前記アクセス要求に含まれるアドレスが、前記管理情報に含まれる力否かを判定す るアドレス判定部と、
含まれると判定された場合に、前記アクセス要求が書込要求であれば、書き込むデ ータを前記アドレスに対応する鍵で暗号ィ匕して前記アドレスで示される領域に書込み 、前記アクセス要求が読出要求であった場合には、前記メモリの前記アドレスから読 み出したデータを、前記アドレスに対応する鍵を用 、て復号して出力するアクセス実 行部と
を含むことを特徴とする請求項 2に記載のデータ処理装置。
[4] 前記データは、プロセスのコードである
ことを特徴とする請求項 2に記載のデータ処理装置。
[5] 各プロセスには、個別のプロセス識別子が割り当てられ、
前記保持部が保持する前記管理情報は、前記メモリ中のアドレスと、前記アドレス へのアクセスが許可されているプロセスを示すプロセス識別子とを対応付けた情報を 一以上含み、
前記アクセス制限部は、
前記メモリのアドレスを含む前記メモリへのアクセス要求を取得する取得部と、 アクセス要求に含まれるアドレスと、アクセス要求したプロセスに割り当てられたプロ セス識別子とを対応付けた情報が、前記管理情報に含まれる力否かを判定するアド レス判定部と、
含まれると判定された場合に、アクセス要求したプロセスを、前記メモリの前記アドレ スにアクセスさせるアクセス実行部と
を含むことを特徴とする請求項 2に記載のデータ処理装置。
[6] 前記データには、一以上のデータ処理方法それぞれについて実行を許可するか 否かを示すセキュリティ要件情報が割り当てられ、 プロセスそれぞれには、一以上のデータ処理方法それぞれを実行可能か否かを示 す機能情報が割り当てられ、
前記呼出命令は、一以上のデータ処理方法の!/、ずれかを示す処理特定情報を含 み、
前記判断手段は、前記セキュリティ要件情報が前記処理特定情報により示されるデ ータ処理方法の実行を許可しておりかつ第 2プロセスの機能情報が、前記処理特定 情報により示されるデータ処理方法の実行が可能であることを示す場合に、前記使 用権限があると決定する
ことを特徴とする請求項 1に記載のデータ処理装置。
[7] 前記切替手段は、前記通常モードから前記保護モードへと切り替える場合に、前記
Figure imgf000055_0001
、るプロセスのコンテキストを前記メモリに退避し、
前記保護モードから前記通常モードへと切り替える場合に、次に前記通常モードで 動作するプロセスのコンテキストを前記メモリから復帰させる
ことを特徴とする請求項 1に記載のデータ処理装置。
[8] 前記第 1プロセス及び前記第 2プロセスは、それぞれが動作している間に割り込み 又は例外が発生した場合に、その割り込み又は例外を処理する割込処理又は例外 処理を含み、
前記データ処理装置は、さらに、
割り込み又は例外が発生した場合に、実行されるべき処理を示すベクタテーブルを 、保護モードにおいてのみ書き換え可能に保持するべクタテーブル保持手段と、 動作するプロセス力 前記第 1プロセス力 前記第 2プロセスへと切り替わる前に、 保護モードにぉ 、て前記べクタテーブルを、前記通常モードにぉ 、て割り込み又は 例外が発生した際に第 2プロセスの割込処理又は例外処理を実行するよう書き換え るべクタテーブル書換手段と を含むことを特徴とする請求項 7記載のデータ処理装置。
[9] 前記判断手段は、さらに、
プロセス力 前記メモリにおける領域の使用要求を受け付ける使用要求受付部と、 使用要求されたアドレスが、既に使用されている力否かを判定する使用判定部と、 使用されていな力つた場合に、使用要求したプロセスの、前記アドレスに格納を要 望するデータについての使用権限の有無を判定する権限判定部と、
前記権限判定部により使用権限があると判定された場合に、使用要求したプロセス の管理情報に、前記アドレスで示される領域へのアクセスを許可する情報を登録する 管理情報登録部と
を含むことを特徴とする請求項 1に記載のデータ処理装置。
[10] 前記管理情報登録部は、前記権限判定部により使用権限があると判定された場合 に、鍵を生成し、前記アクセスを許可する情報として、前記アドレスと生成した鍵とを 対応付けた情報の組を使用要求した前記プロセスの管理情報に追加する
ことを特徴とする請求項 9に記載のデータ処理装置。
[11] 前記データ処理装置は、さらに、
前記プロセスに係るデバッグを行うデバッグ手段を含み、
前記切替手段は、さらに、前記通常モードに切り替える場合に、前記デバッグ手段 を有効化し、前記保護モードに切り替える場合に、前記デバッグ手段を無効化する ことを特徴とする請求項 1記載のデータ処理装置。
[12] プログラムに従って動作するプロセッサを備え、前記プログラムの実行単位であるプ 口セスが動作する通常モードと前記プロセスの動作が抑制される保護モードを切り替 えて動作するデータ処理装置に用いられるデータ処理方法であって、
通常モードにおいて、第 1プロセスの処理対象データに対して、前記第 1プロセスに よるアクセスを許可し、他のプロセスによるアクセスを禁止するアクセス禁止ステップと 通常モードにおいて、前記第 1プロセスから、第 2プロセスの呼び出しを指示する呼 出命令を検出する検出ステップと、
前記呼出命令が検出されると、通常モードから保護モードに切り替える切替ステツ プと、
保護モードにおいて、前記第 2プロセスが、前記処理対象データについての使用 権限を有しているカゝ否かを判断する判断ステップと、
保護モードにおいて、前記第 2プロセスが前記使用権限を有していると判断される 場合に、前記アクセス禁止手段に対して、前記第 2プロセスが前記通常モードにおい て、前記処理対象データに対しアクセスすることが許可されるように制御する制御ス テツプと
を含むことを特徴とするデータ処理方法。
[13] プログラムに従って動作するプロセッサを備え、前記プログラムの実行単位であるプ 口セスが動作する通常モードと前記プロセスの動作が抑制される保護モードを切り替 えて動作するデータ処理装置に用いられるコンピュータプログラムであって、 通常モードにおいて、第 1プロセスの処理対象データに対して、前記第 1プロセスに よるアクセスを許可し、他のプロセスによるアクセスを禁止するアクセス禁止ステップと 通常モードにおいて、前記第 1プロセスから、第 2プロセスの呼び出しを指示する呼 出命令を検出する検出ステップと、
前記呼出命令が検出されると、通常モードから保護モードに切り替える切替ステツ プと、
保護モードにおいて、前記第 2プロセスが、前記処理対象データについての使用 権限を有しているカゝ否かを判断する判断ステップと、
保護モードにおいて、前記第 2プロセスが前記使用権限を有していると判断される 場合に、前記アクセス禁止手段に対して、前記第 2プロセスが前記通常モードにおい て、前記処理対象データに対しアクセスすることが許可されるように制御する制御ス テツプと
を含むことを特徴とするコンピュータプログラム。
[14] プログラムに従って動作するプロセッサを備え、前記プログラムの実行単位であるプ 口セスが動作する通常モードと前記プロセスの動作が抑制される保護モードを切り替 えて動作する集積回路であって、
通常モードにおいて、第 1プロセスの処理対象データに対して、前記第 1プロセスに よるアクセスを許可し、他のプロセスによるアクセスを禁止するアクセス禁止手段と、 通常モードにおいて、前記第 1プロセスから、第 2プロセスの呼び出しを指示する呼 出命令を検出する検出手段と、 前記呼出命令が検出されると、通常モードから保護モードに切り替える切替手段と 保護モードにおいて、前記第 2プロセスが、前記処理対象データについての使用 権限を有している力否かを判断する判断手段と、
保護モードにおいて、前記第 2プロセスが前記使用権限を有していると判断される 場合に、前記アクセス禁止手段に対して、前記第 2プロセスが前記通常モードにおい て、前記処理対象データに対しアクセスすることが許可されるように制御する制御手 段と
を備えることを特徴とする集積回路。
PCT/JP2006/310584 2005-05-26 2006-05-26 データ処理装置 WO2006126686A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007517924A JP4886682B2 (ja) 2005-05-26 2006-05-26 データ処理装置
US11/914,525 US7874009B2 (en) 2005-05-26 2006-05-26 Data processing device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-153478 2005-05-26
JP2005153478 2005-05-26

Publications (1)

Publication Number Publication Date
WO2006126686A1 true WO2006126686A1 (ja) 2006-11-30

Family

ID=37452108

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/310584 WO2006126686A1 (ja) 2005-05-26 2006-05-26 データ処理装置

Country Status (4)

Country Link
US (1) US7874009B2 (ja)
JP (1) JP4886682B2 (ja)
CN (1) CN101233525A (ja)
WO (1) WO2006126686A1 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008114560A1 (ja) * 2007-02-21 2008-09-25 Nec Corporation コンピュータ、動作ルール適用方法、オペレーティングシステム
JP2009163738A (ja) * 2008-01-02 2009-07-23 Arm Ltd 非安全アプリケーションへの安全サービスの提供
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
US20100174919A1 (en) * 2009-01-08 2010-07-08 Takayuki Ito Program execution apparatus, control method, control program, and integrated circuit
JP2012186553A (ja) * 2011-03-03 2012-09-27 Toshiba Corp 通信装置および通信方法
CN102763092A (zh) * 2010-02-16 2012-10-31 Arm有限公司 根据硬件模式和安全标志限制用于指令读取的存储器区域
WO2012169111A1 (ja) * 2011-06-06 2012-12-13 パナソニック株式会社 コンテンツデータ再生方法、およびサムネイル画像生成方法
US8775824B2 (en) 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
US9286242B2 (en) 2013-09-17 2016-03-15 Kabushiki Kaisha Toshiba Information processing apparatus and program execution method
JP2016139211A (ja) * 2015-01-26 2016-08-04 Kddi株式会社 ソフトウェア更新装置、方法及びプログラム

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101425621B1 (ko) * 2008-01-15 2014-07-31 삼성전자주식회사 컨텐츠를 안전하게 공유하는 방법 및 시스템
US8484486B2 (en) * 2008-08-06 2013-07-09 Silver Spring Networks, Inc. Integrated cryptographic security module for a network node
JP5272751B2 (ja) * 2009-01-26 2013-08-28 富士通セミコンダクター株式会社 プロセッサ
US20110167496A1 (en) * 2009-07-07 2011-07-07 Kuity Corp. Enhanced hardware command filter matrix integrated circuit
KR101601790B1 (ko) * 2009-09-22 2016-03-21 삼성전자주식회사 암호키 선택장치를 구비하는 스토리지 시스템 및 암호 키 선택방법
US9076020B2 (en) * 2011-05-13 2015-07-07 Microsoft Technology Licensing, Llc Protected mode for mobile communication and other devices
US9798873B2 (en) 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9098608B2 (en) 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US9465657B2 (en) 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9575903B2 (en) * 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US9170843B2 (en) 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9772875B2 (en) * 2011-11-29 2017-09-26 Dell Products L.P. Multiple framework level modes
KR20140105343A (ko) * 2013-02-22 2014-09-01 삼성전자주식회사 디바이스 및 디바이스에서 복수의 모드를 이용한 데이터의 보안 방법
EP2808818B1 (en) * 2013-05-29 2016-07-13 Nxp B.V. Processing system
WO2015016824A1 (en) * 2013-07-30 2015-02-05 Hewlett-Packard Development Company, L.P. Resource management based on a process identifier
DE102015110729A1 (de) * 2014-07-21 2016-01-21 Dspace Digital Signal Processing And Control Engineering Gmbh Anordnung zur teilweisen Freigabe einer Debuggingschnittstelle
JP2016139322A (ja) * 2015-01-28 2016-08-04 株式会社リコー 画像処理装置及びそれを備えた電子黒板
WO2017019061A1 (en) * 2015-07-29 2017-02-02 Hewlett Packard Enterprise Development Lp Firewall to determine access to a portion of memory
US10339333B2 (en) * 2016-07-20 2019-07-02 Montage Technology Co., Ltd. Method and apparatus for controlling application to access memory
US10649678B2 (en) * 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring
JP2019133345A (ja) * 2018-01-30 2019-08-08 東芝メモリ株式会社 データ蓄積装置、データ処理システムおよびデータ処理方法
KR102287758B1 (ko) * 2018-03-05 2021-08-09 삼성전자주식회사 부채널 공격으로부터 캐시를 보호하는 시스템
KR20200021815A (ko) * 2018-08-21 2020-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
CN111968693B (zh) * 2020-08-21 2022-08-05 广芯微电子(广州)股份有限公司 一种mcu及mcu调试接口控制方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337864A (ja) * 2000-03-22 2001-12-07 Hitachi Ltd アクセス制御システム
JP2002202720A (ja) * 2000-12-28 2002-07-19 Toshiba Corp 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
JP2004199693A (ja) * 2002-01-16 2004-07-15 Texas Instruments Inc 高度機能電話または携帯情報端末用機密保護モード指示器
JP2004288155A (ja) * 2002-11-18 2004-10-14 Arm Ltd メモリへのアクセスを管理するための装置および方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02155034A (ja) 1988-12-08 1990-06-14 Toshiba Corp セキュリティ機能付き計算機
JPH04102920A (ja) 1990-08-22 1992-04-03 Nec Corp 情報処理装置
DE69925087T2 (de) * 1998-09-22 2006-02-02 Matsushita Electric Industrial Co., Ltd., Kadoma Optische Platte, Verfahren zur Wiedergabe zusätzlicher Daten aus einer optischen Platte, Wiedergabegerät für optische Platte sowie Aufzeichnungs- und Wiedergabegerät für optische Platte
US7096268B1 (en) * 1999-09-01 2006-08-22 Matsushita Electric Industrial Co., Ltd. Copyrighted data processing method and apparatus
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
JP4226760B2 (ja) 2000-05-08 2009-02-18 株式会社東芝 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US7035850B2 (en) 2000-03-22 2006-04-25 Hitachi, Ltd. Access control system
EP1331539B1 (en) 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
JP4102920B2 (ja) 2002-07-25 2008-06-18 カシオ計算機株式会社 情報提供装置およびプログラム
US7231476B2 (en) 2002-11-18 2007-06-12 Arm Limited Function control for a processor
GB2396451B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Delivering data processing requests to a suspended operating system
DE60306952T2 (de) 2002-11-18 2007-02-08 Arm Ltd., Cherry Hinton Zuordnung von virtuellen zu physischen speicheradressen in einem system mit einem sicheren bereich und einem nicht sicheren bereich
US7370210B2 (en) 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
GB2411254B (en) 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
GB2395583B (en) 2002-11-18 2005-11-30 Advanced Risc Mach Ltd Diagnostic data capture control for multi-domain processors
US7149862B2 (en) 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
US7117284B2 (en) 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
GB2396712B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
EP1563388A2 (en) 2002-11-18 2005-08-17 ARM Limited Secure memory for protecting against malicious programs
EP1563376B1 (en) 2002-11-18 2006-04-12 ARM Limited Exception types within a secure processing system
GB2396034B (en) 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
GB2402785B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Processor switching between secure and non-secure modes
US7383587B2 (en) 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
GB2396713B (en) 2002-11-18 2005-09-14 Advanced Risc Mach Ltd Apparatus and method for controlling access to a memory unit
WO2004046925A1 (en) 2002-11-18 2004-06-03 Arm Limited Security mode switching via an exception vector
US7171539B2 (en) 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US7539853B2 (en) 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337864A (ja) * 2000-03-22 2001-12-07 Hitachi Ltd アクセス制御システム
JP2002202720A (ja) * 2000-12-28 2002-07-19 Toshiba Corp 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
JP2004199693A (ja) * 2002-01-16 2004-07-15 Texas Instruments Inc 高度機能電話または携帯情報端末用機密保護モード指示器
JP2004288155A (ja) * 2002-11-18 2004-10-14 Arm Ltd メモリへのアクセスを管理するための装置および方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008114560A1 (ja) * 2007-02-21 2008-09-25 Nec Corporation コンピュータ、動作ルール適用方法、オペレーティングシステム
JP5131563B2 (ja) * 2007-02-21 2013-01-30 日本電気株式会社 コンピュータ、動作ルール適用方法、オペレーティングシステム
US8332660B2 (en) 2008-01-02 2012-12-11 Arm Limited Providing secure services to a non-secure application
JP2009163738A (ja) * 2008-01-02 2009-07-23 Arm Ltd 非安全アプリケーションへの安全サービスの提供
US8775824B2 (en) 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
US20100174919A1 (en) * 2009-01-08 2010-07-08 Takayuki Ito Program execution apparatus, control method, control program, and integrated circuit
US8555089B2 (en) * 2009-01-08 2013-10-08 Panasonic Corporation Program execution apparatus, control method, control program, and integrated circuit
JP2010182296A (ja) * 2009-01-08 2010-08-19 Panasonic Corp プログラム実行装置、制御方法、制御プログラム及び集積回路
CN102763092A (zh) * 2010-02-16 2012-10-31 Arm有限公司 根据硬件模式和安全标志限制用于指令读取的存储器区域
JP2012186553A (ja) * 2011-03-03 2012-09-27 Toshiba Corp 通信装置および通信方法
WO2012169111A1 (ja) * 2011-06-06 2012-12-13 パナソニック株式会社 コンテンツデータ再生方法、およびサムネイル画像生成方法
JPWO2012169111A1 (ja) * 2011-06-06 2015-02-23 パナソニック株式会社 コンテンツデータ再生方法、およびサムネイル画像生成方法
US9286242B2 (en) 2013-09-17 2016-03-15 Kabushiki Kaisha Toshiba Information processing apparatus and program execution method
JP2016139211A (ja) * 2015-01-26 2016-08-04 Kddi株式会社 ソフトウェア更新装置、方法及びプログラム

Also Published As

Publication number Publication date
JPWO2006126686A1 (ja) 2008-12-25
US20090083520A1 (en) 2009-03-26
JP4886682B2 (ja) 2012-02-29
US7874009B2 (en) 2011-01-18
CN101233525A (zh) 2008-07-30

Similar Documents

Publication Publication Date Title
WO2006126686A1 (ja) データ処理装置
US7788487B2 (en) Data processing apparatus
US10360411B2 (en) Secure processing unit systems and methods
US8214630B2 (en) Method and apparatus for controlling enablement of JTAG interface
KR100809977B1 (ko) 집적 시스템 내에서의 보안 운영의 활성화 방법, 보안 운영의 초기화 방법, 암호화된 데이터의 변환 방법 및 집적 시스템 기능의 복원 방법
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
JP4702957B2 (ja) 耐タンパ・トラステッド仮想マシン
CN103210396B (zh) 包括用于保护敏感代码和数据的架构的方法和装置
US6735696B1 (en) Digital content protection using a secure booting method and apparatus
CA2333613C (en) Method of controlling usage of software components
JP3881942B2 (ja) 暗号化部を有する半導体装置
WO2009107330A1 (ja) 情報処理装置及びその制御方法
US20070180271A1 (en) Apparatus and method for providing key security in a secure processor
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
US20080065907A1 (en) System and Method for Securely Restoring a Program Context from a Shared Memory
WO2006129654A1 (ja) 電子機器、更新サーバ装置、鍵更新装置
JP2005527019A (ja) マルチトークンのシール及びシール解除
TWI446210B (zh) 數位內容之保護方法、解密方法、播放器、儲存媒體及加密裝置
JP4676547B2 (ja) 半導体装置およびそのブート方法
JP4580024B2 (ja) コンテンツ再生方法
KR20090000566A (ko) 보안 영역을 제공하는 장치 및 그 방법
JP2006179029A (ja) 外部インターフェースを有する半導体装置、およびコンテンツ再生方法
CA2638979A1 (en) Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
JP2010044792A (ja) セキュアデバイス、集積回路および暗号化方法

Legal Events

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

Ref document number: 200680027404.3

Country of ref document: CN

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

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 11914525

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

NENP Non-entry into the national phase

Ref country code: RU

122 Ep: pct application non-entry in european phase

Ref document number: 06746913

Country of ref document: EP

Kind code of ref document: A1