WO2021117638A1 - 情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム - Google Patents

情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム Download PDF

Info

Publication number
WO2021117638A1
WO2021117638A1 PCT/JP2020/045295 JP2020045295W WO2021117638A1 WO 2021117638 A1 WO2021117638 A1 WO 2021117638A1 JP 2020045295 W JP2020045295 W JP 2020045295W WO 2021117638 A1 WO2021117638 A1 WO 2021117638A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
program
key sharing
sharing program
random number
Prior art date
Application number
PCT/JP2020/045295
Other languages
English (en)
French (fr)
Inventor
麻奈美 鈴木
渡辺 大
高橋 健太
雅之 吉野
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to JP2021563925A priority Critical patent/JP7304430B2/ja
Publication of WO2021117638A1 publication Critical patent/WO2021117638A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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

Definitions

  • the present invention relates to a technique for preventing the activity of a malicious program.
  • program dedicated software
  • malware malicious software
  • Patent Document 1 discloses a technique for performing encryption when storing data in a memory without requiring support of special hardware such as a CPU and a memory mechanism.
  • a program that performs encryption processing generates and manages a key used for encryption (hereinafter referred to as "key") in the CPU.
  • the data in memory is encrypted by the method described above. There is a way to exchange the malware between programs. In this method, it is necessary to share the key used for encrypting the data in the memory between the programs.
  • a method of exchanging data between a plurality of programs there is a method of creating a shared area on a memory that can be accessed by a plurality of programs and exchanging data via this shared area.
  • an identifier associated with the shared area is set.
  • a program that uses the shared area accesses the shared area using an identifier associated with this shared area, and acquires or writes a value in the shared area.
  • Non-Patent Document 1 reports that if an attacker can access the shared area, there is a risk that the attacker will acquire data on the shared area.
  • a shared area is used for key sharing between multiple programs, if the malware obtains the key used to conceal the data in the memory stored in the shared area, there is a risk of invalidating the concealment of the data in the memory. ..
  • the present invention has been made in view of the above circumstances, and provides a technique capable of securely sharing a key between two programs.
  • the information processing system related to one viewpoint is An information processing system including a main storage device that stores data and a program, and a processor that is connected to the main storage device and executes a program.
  • An OS operating system
  • An OS for allocating resources including a processor and main memory to a program to be executed based on a predetermined allocation standard. It is equipped with a first key sharing program and a second key sharing program for sharing keys and executing processing.
  • the processor runs the OS, Set a shared area that can be shared for processing by the 1st key sharing program and the 2nd key sharing program. Allocate resources to the first key sharing program, Allocate resources to the second key sharing program,
  • the processor executes the OS and executes the first key sharing program.
  • the second key sharing program repeats the generation of random number data that can specify the random number for generating the second key and the storage of the random number data in the shared area.
  • the processor executes the OS and executes the second key sharing program. Repeatedly acquiring the random number data stored in the shared area, Generate a second key based on the acquired multiple random number data, Generate key generation information that can identify multiple acquired random number data used to generate the second key, Store the key generation information in the shared area
  • the processor executes the OS and executes the first key sharing program. It is characterized in that the first key is generated based on the key generation information stored in the shared area.
  • the key can be safely shared between the two programs.
  • the information may be explained by the expression of "AAA table”, but the information may be expressed by any data structure. That is, the "AAA table” can be called “AAA information” to show that the information does not depend on the data structure.
  • the process may be described with the "program" as the main body of operation, but the program is executed by a processor (for example, a CPU (Central Processing Unit)) to perform a predetermined process. Since the processing is performed while appropriately using a storage unit (for example, a memory) and / or an interface device (for example, a communication port), the main body of the processing operation may be a processor (or a device or system having the processor). The processor may also include hardware circuits that perform some or all of the processing.
  • the program may be installed from the program source into a device such as a calculator.
  • the program source may be, for example, a program distribution server or a computer-readable storage medium. Further, in the following description, two or more programs may be realized as one program, or one program may be realized as two or more programs.
  • the key is safely shared between programs without modifying the OS (operating system) of the terminal as an example of the information processing system. Therefore, in this embodiment, for example, the following OS functions are used.
  • the OS (strictly speaking, the processor that executes the OS) allocates resources for each program according to a predetermined allocation standard using information in the terminal.
  • the order in which resources are allocated to each program by the OS is not constant. Therefore, when attempts to access the same resource from a plurality of programs are repeated at the same time, the order in which the programs access the resources is not constant.
  • a program When a program (strictly speaking, a processor that executes a program) calls an API (Application Programming Interface) prepared by the OS, the OS has an area in memory that can be accessed by multiple programs (“shared area”). ”) Is secured.
  • API Application Programming Interface
  • the key is shared between the programs (between the first key sharing program and the second key sharing program) by the following method.
  • the first key sharing program (strictly speaking, the processor that executes the first key sharing program) generates random number and index information, and repeatedly writes a set of these as random number data in the shared area. Further, the first key sharing program records the random number data written in the shared area in the random number data table.
  • the second key sharing program (strictly speaking, the processor that executes the second key sharing program) is a random number in the shared area while the first key sharing program repeatedly writes random number data to the shared area. Data acquisition is repeated.
  • the second key sharing program generates a key using random numbers of random number data acquired from the shared area. Further, the second key sharing program writes the index numbers of all the random number data used for key generation in the shared area as key generation information.
  • the first key sharing program acquires the key generation information stored in the shared area, and based on this key generation information, acquires the random number used by the second key sharing program for key generation from the random number data table. A key is generated using the acquired random numbers.
  • the first key sharing program and the second key sharing program can generate keys having the same value, that is, the keys can be shared.
  • the timing at which each program running on the OS can access the shared area is determined at any time by the OS based on a predetermined allocation standard. Therefore, as described above, by repeatedly storing and acquiring random number data for key generation via the shared area between programs, for example, even when malware can access the shared area, the second key It is difficult for the malware to acquire all the random number data used by the sharing program for key generation, and it is also difficult for the malware to write all the random number data acquired by the second key sharing program.
  • FIG. 1 is an overall configuration diagram of a network system according to an embodiment.
  • the network system 100 includes an information processing device (terminal) 102 as an example of an information processing system, a program distribution server 103, an authentication server 111, and a program server 112.
  • the terminal 102 is used by the user 101.
  • the authentication server 111 and the program server 112 provide a predetermined service by the service provider 110.
  • the terminal 102 downloads a program for using the service provided by the service provider 110 from the program distribution server 103 according to the operation of the user 101.
  • the terminal 102 installs the program downloaded by the operation of the user 101.
  • the user 101 can access the authentication server 111 by the terminal 102 and perform user registration. After registering as a user, the user 101 can use the service of the service provider 110 by using the terminal 102.
  • the terminal 102 When the terminal 102 receives an instruction to use the service from the user 101, the terminal 102 enables the service to be used through the program server 112 after receiving the user authentication (or device authentication) by the authentication server 111.
  • FIG. 2 is a configuration diagram of a terminal according to an embodiment.
  • the terminal 102 includes a sensor 202, a memory 205 as an example of a main storage device, a CPU 206 as an example of a processor, a network IF (interface) 208, and a storage 210.
  • the sensor 202 is, for example, a camera, a microphone, or the like, and senses the biological information (for example, fingerprint information) 201 of the user 101 to generate the sensor data 203.
  • the memory 205 is, for example, a RAM (RANDOM ACCESS MEMORY), and stores a program executed by the CPU 206 and necessary information.
  • RAM RANDOM ACCESS MEMORY
  • the network IF208 is, for example, an interface such as a wired LAN card or a wireless LAN card, and communicates with other devices (for example, program distribution server 103, authentication server 111, program server 112) via a communication path.
  • devices for example, program distribution server 103, authentication server 111, program server 112
  • the CPU 206 executes various processes according to the program stored in the memory 205 and / or the storage 210.
  • the storage 210 is, for example, a hard disk, a flash memory, or the like, and stores a program executed by the CPU 206 and data used by the CPU 206.
  • the storage 210 stores, for example, a sensor program 211 that acquires the sensor data 203 of the biological information 201 via the sensor 202, and an authentication program 212 that transmits / receives data to / from the authentication server 111.
  • the terminal 102 may contain malware 204.
  • the malware 204 is schematically displayed in FIG. 2, it is actually stored in, for example, the memory 205 or the storage 210.
  • the CPU 206 of the terminal 102 acquires the sensor data 203 generated by sensing the biometric information 201 of the user 101 from the sensor 202 by executing the sensor program 211, and stores the sensor data 203 in the memory 205.
  • the CPU 206 executes the authentication program 212 to perform appropriate processing on the sensor data 203 to generate the communication data 207, which is transmitted to the authentication server 311 via the network IF 208.
  • user authentication is executed on the authentication server 311.
  • FIG. 3 is a functional configuration diagram of the terminal according to one embodiment.
  • the terminal 102 is used between the sensor program 211 and the authentication program 212 so that the sensor data 203 can be safely exchanged between the sensor program 211 and the authentication program 212. It is a terminal that encrypts data.
  • the programs that perform processing for executing key sharing for encryption between the sensor program 211 and the authentication program 212 are the first key sharing program 305 and the second key sharing program 306, which will be described later. The case where is included will be described.
  • first key sharing program 305 and the second key sharing program 306 may be programs that are not included in the sensor program 211 or the authentication program 212. The configuration in this case will be described later.
  • the terminal 102 includes a network IF 208, a sensor 202, an entropy generator 302, a storage 210, a CPU 206, and a memory 205. These functional configurations are connected to each other by a data bus, and data can be exchanged via the memory 205.
  • the entropy generator 302 produces a value having entropy (referred to as "entropy source").
  • entropy source the value for generating the pseudo-random number (referred to as “seeded") is generally generated from the entropy source. If the size of the generated entropy source is not sufficient, seeds are generated based on the repeatedly generated entropy source.
  • the entropy generator 302 may be provided as a function by the OS 304, or may be provided as a function by a program.
  • the CPU 206 holds a plurality of general-purpose registers 303 for storing data handled in arithmetic processing.
  • the storage 210 stores the program execution file and the setting file.
  • the storage 210 stores the first key sharing program 305 and the second key sharing program 306.
  • the first key sharing program 305 and the second key sharing program 306 correspond to the interprogram key sharing program.
  • the first key sharing program 305 and the second key sharing program 306 may be stored in the storage 210 in advance, and if necessary, from a non-temporary storage device of another device via a network or via a network. It may be stored in the storage 210 from a non-temporary storage medium.
  • a program called OS304 resides in the memory 205.
  • the OS 304 mediates data between the hardware and the program, and manages the execution authority and resources of a plurality of programs.
  • the user program is executed by the CPU 206 under the limited authority called the user authority by the management of the OS 304.
  • processing related to resource management of OS 304 is executed by CPU 206 under stronger authority.
  • the first key sharing program 305, the second key sharing program 306, and the malware 204 correspond to the user program.
  • the memory 205 has a kernel space 310 used by the central processing of the OS 304 and a user space 320 used by the user program.
  • the first key sharing program 321 developed on the user space 320 and the second key sharing program 324 are allocated to the memory usage area (for example, the first key sharing program 321) on the user space 320 allocated by the OS 304 for each program.
  • the CPU 206 executes the process using the first key sharing program allocation area 322 and the second key sharing program allocation area 325 allocated to the second key sharing program 324.
  • the used area of the memory 205 allocated to the user program may be dynamically allocated during the execution of the user program, or dynamically (for example, alloc provided as a C language standard library) during the execution of the user program. It may be allocated (via a function or the like).
  • an area different for each program is allocated on the user space 320 as a memory usage area of the program depending on the OS 304, but the user needs to secure a shared area accessible by a plurality of programs on the user space 320 in the memory 205.
  • the shared area 323 can be secured by clearly indicating to the OS 304 at the start of program execution or during execution.
  • IPC interprocess communication method
  • OS 304 for exchanging data between processes.
  • IPCs include pipes, message queues, shared memory, sockets and the like.
  • the first key sharing program 321 and the second key sharing program 324 are configured to secure the shared area 323 in the user space 320 of the memory 205.
  • the shared area 323 may be secured by the first key sharing program 321 or by the second key sharing program 324.
  • the first key sharing program 321 will be described as securing the shared area.
  • the process management function of OS304 allocates hardware resources such as CPU 206 and memory 205 to one of the programs, and switches the allocation of the hardware resources as appropriate (called "interrupt"). )I do. For example, if an interrupt by the second key sharing program 324 occurs during the execution of the first key sharing program 321, the CPU 206 that executes the OS 304 transfers the information of the general-purpose register 303 of the first key sharing program 321 to the kernel space 310. The first key sharing program is saved and stored in the save area 311. After that, the CPU 206 allocates the hardware resource to the second key sharing program 324, which is the next allocation destination of the hardware resource, and starts the execution of the second key sharing program 324. When the execution of the second key sharing program 324 is completed, the CPU 206 restores the data in the first key sharing program save area 311 to the general-purpose register 303, and resumes the processing of the first key sharing program 321.
  • the CPU 206 that executes the OS 304 determines a program to allocate hardware resources based on, for example, time information such as a cycle counter and execution priority information for each program, and performs interrupt processing as necessary. Therefore, when there are a plurality of programs to be executed, the order in which the hardware resources are allocated to the plurality of programs is not necessarily a fixed order.
  • the first key sharing program 321 of the present embodiment sequentially generates and shares random number data including random numbers and index information according to a predetermined rule (for example, between a request for starting delivery of random number data and a request for ending delivery). It is stored in the area 323.
  • the random number data is stored in the shared area 323 at the timing when the resource is allocated to the first key sharing program 321 by the OS 304. At least a part of the random number data stored in the shared area 323 in this way will be acquired by the second key sharing program 324.
  • the first key sharing program 321 acquires the key generation information generated by the second key sharing program 324 from the shared area 323, and generates the first key based on the key generation information.
  • the second key sharing program 324 acquires random number data stored by the first key sharing program 321 via the shared area 323, generates a second key based on the acquired random number data, and generates a second key.
  • the key generation information that can identify the random number used for the generation of is generated and stored in the shared area 323.
  • the random number data is acquired from the shared area 323 at the timing when the resource is allocated to the second key sharing program 324 by the OS 304.
  • the first key generated by the first key sharing program 321 and the second key by the second key sharing program 324 have the same value. That is, the key can be shared between the first key sharing program 321 and the second key sharing program 324. The details of key sharing will be described later.
  • FIG. 4 is a functional configuration diagram realized by the first key sharing program and the second key sharing program according to the embodiment.
  • the random number data generation / delivery unit 400 When the CPU 206 executes the first key sharing program 321, the random number data generation / delivery unit 400, the key generation information acquisition / key generation unit 410, and the first data concealment processing unit 420 are configured.
  • the random number data generation / delivery unit 400 generates random number data and stores it in the shared area 323 so that the random number data is delivered to the second key sharing program 324 via the shared area 323.
  • the random number data generation / delivery unit 400 includes a random number data generation unit 401 and a random number data delivery unit 404.
  • the random number data generation unit 401 generates random number data including random numbers and index information.
  • the random number data generation unit 401 includes a random number generation unit 402 and an index generation unit 403.
  • the random number generation unit 402 generates a random number using the seed generated by the entropy source generated by the entropy generator.
  • the data size of one random number generated by the random number generation unit 402 may be smaller than the size of the random numbers required to generate the first key and the second key.
  • the index generation unit 403 generates index information that identifies the generated random numbers.
  • the index generation unit 403 may use, for example, the output of the counter as index information.
  • the random number data delivery unit 404 stores the random number data generated by the random number data generation unit 401 in the shared area 323.
  • the key generation information acquisition / key generation unit 410 acquires the key generation information stored in the shared area 323 by the second key sharing program 324, and generates the first key based on the key generation information.
  • the key generation information acquisition / key generation unit 410 includes a key generation information acquisition unit 411 and a first key generation unit 412.
  • the key generation information acquisition unit 411 acquires the key generation information stored in the second key sharing program 324 from the shared area 323.
  • the first key generation unit 412 generates the first key using the key generation information acquired by the key generation information acquisition unit 411.
  • the first data concealment processing unit 420 performs a predetermined process while concealing the data stored in the memory 205 using the generated first key. For example, the first data concealment processing unit 420 performs concealment processing for encrypting the sensor data 203 with the first key and stores it in the memory 205. As the concealment processing of the first data concealment processing unit 420, for example, the method of Patent Document 1 may be used.
  • the second key sharing program 324 includes a random number data acquisition / key generation unit 430 and a second data concealment processing unit 440.
  • Random number data acquisition / key generation unit 430 acquires random number data from the shared area 323 and generates a second key.
  • the random number data acquisition / key generation unit 430 includes a random number data acquisition unit 431, a second key generation unit 432, and a key generation information delivery unit 433.
  • the random number data acquisition unit 431 acquires random number data from the shared area 323.
  • the second key generation unit 432 generates the second key based on the random number data acquired by the random number data acquisition unit 431.
  • the second key generation unit 432 may generate a second key based on a plurality of random number data acquired by the random number data acquisition unit 431. For example, one or more random number data is selected from the plurality of random number data. Then, the second key may be generated using the selected random number data.
  • the key generation information delivery unit 433 stores index information of all random number data used for key generation as key generation information in the shared area 323.
  • the second data concealment processing unit 440 performs a predetermined process while performing concealment processing of the data stored in the memory 205 using the second key.
  • the second data concealment processing unit 420 decrypts the encrypted sensor data 203 stored in the memory 205 using the second key, and executes, for example, an authentication process using the decrypted sensor data 203.
  • the concealment processing of the second data concealment processing unit 440 for example, the method of Patent Document 1 may be used.
  • the above processing may be performed in the same manner.
  • FIG. 5 is a functional configuration diagram showing a state at the time of execution of the first key sharing program according to the embodiment.
  • the same parts as those shown in FIG. 3 are designated by the same reference numerals, and duplicate description will be omitted.
  • the first key sharing program 305 is deployed as the first key sharing program 321 on the user space 320 of the memory 205.
  • the CPU 206 executes the first key sharing program 321 while storing the program variables and the data being processed in the general-purpose register 303 and the first key sharing program allocation area 322 on the memory 205.
  • the general-purpose register 303 stores seed 501, random number data table 502, first key 503, key generation information 504, index information 505, and random number 506, depending on the processing status.
  • random number data 524 used in processing and key generation information 525 are stored.
  • the CPU 206 uses the function of the OS 304 to cause the CPU 206 to perform data on the general-purpose register 303.
  • Seed 501, random number data table 502, first key 503, key generation information 504, index information 505, random number 506, etc. are stored in the first key sharing program save area 311 of the kernel space 310.
  • the program executed by the interrupt cannot access the data in the first key sharing program save area 311. Therefore, the malware 204 cannot acquire seed 501, random number data table 502, first key 503, key generation information 504, index information 505, random number 506, etc. from the first key sharing program save area 311 and leaks the information. Can be prevented from doing so.
  • the seed 501, the random number data table 502, the first key 503, the key generation information 504, the index information 505, and the random number 506 are stored in the general-purpose register 303, but are stored in the memory 205. You may do so.
  • This random number data generation process is executed by the random number data generation / delivery unit 400 shown in FIG.
  • FIG. 6 is a flowchart of the random number data generation process according to the embodiment.
  • the random number data generation / delivery unit 400 secures a shared area 323 shared with the second key sharing program 324 in the user space 320 of the memory 205 (step 601).
  • the random number data generation / delivery unit 400 confirms whether or not a request for starting delivery of random number data (delivery start request) has been received from the second key sharing program 324 (step 602), and if not received. (Step 602: No) waits until the delivery start request is received.
  • the random number data generation / delivery unit 400 when the delivery start request is received (step 602: Yes), the random number data generation / delivery unit 400 generates a random number by the random number generation unit 402, and the index generation unit 403 indicates index information indicating the generated random number. Is generated (step 603).
  • the random number data generation / delivery unit 400 writes the random number data 524 including the generated random number and the corresponding index information in the shared area 323 (step 604). If the random number data 524 that has already been written exists in the shared area 323, the random number data generation / delivery unit 400 overwrites the random number data with the new random number data 524. As a result, the latest random number data 524 exists in the shared area 323.
  • the random number data generation / delivery unit 400 adds new random number data 524 as an entry to the random number data table 502 (step 605).
  • the random number data table 502 stores entries corresponding to each random number data 524 generated by the random number data generation / delivery unit 400.
  • the random number data generation / delivery unit 400 confirms whether or not a request for ending the delivery of the random number data (delivery end request) has been received from the second key sharing program 324 (step 606). As a result, when the delivery end request has not been received (step 606: No), it is still necessary to generate the random number data, so the random number data generation / delivery unit 400 proceeds to the process in step 603.
  • step S606 Yes
  • the random number data generation / delivery unit 400 ends the process.
  • step 601 does not have to be performed.
  • FIG. 7 is a functional configuration diagram showing a state at the time of execution of the second key sharing program according to the embodiment.
  • the same parts as those shown in FIG. 3 are designated by the same reference numerals, and duplicate description will be omitted.
  • the second key sharing program 306 is deployed as the second key sharing program 324 on the user space 320 of the memory 205.
  • the CPU 206 executes the second key sharing program 324 while storing the program variables and the data being processed in the general-purpose register 303 and the second key sharing program allocation area 325 on the memory 205.
  • the general-purpose register 303 stores a random number data pool 711, a second key 713, and key generation information 714, depending on the processing status.
  • the random number data pool 711 stores a plurality of random number data 712 acquired from the shared area 323.
  • the CPU 206 uses the function of the OS 304 to cause the CPU 206 to perform data on the general-purpose register 303.
  • the random number data 712 of the random number data pool 711, the second key 713, the key generation information 714, etc. are stored in the second key sharing program save area 312 of the kernel space 310.
  • the program executed by the interrupt cannot access the data in the second key sharing program save area 312. Therefore, the malware 204 cannot acquire the random number data 712, the second key 713, the key generation information 714, etc. of the random number data pool 711 from the second key sharing program save area 312, so that information leakage can be prevented. ..
  • This random number data acquisition process is executed by the random number data acquisition unit 431 shown in FIG.
  • FIG. 8 is a flowchart of the random number data acquisition process according to the embodiment.
  • the random number data acquisition unit 431 transmits a delivery start request for random number data to the first key sharing program 321 (step 801).
  • the random number data acquisition unit 431 acquires the random number data 524 of the shared area 323 and additionally stores it as the random number data 712 in the random number data pool 711 (step 802).
  • the timing at which the random number data acquisition unit 431 can acquire the random number data 524 from the shared area 323 is the timing at which the resource is allocated by the OS 304, and the acquired random number data 524 is stored in the shared area 323 at that time. Random number data 524. Therefore, it is not always possible to acquire all of the random number data 524 sequentially stored in the shared area 323 by the first key sharing program 321.
  • the random number data acquisition unit 431 determines whether or not the number of random number data 712 in the random number data pool 711, that is, the size of the usable random numbers is sufficient for key generation (step 803). For example, if the size of the random number of one random number data 712 is smaller than the size required for key generation, it is determined whether or not a plurality of random number data have been acquired.
  • step 803 when the size of the random number is not large enough to generate the key (step 803: No), the random number data acquisition unit 431 proceeds to the process to step 802 and further acquires the random number data.
  • the random number data acquisition unit 431 transmits a delivery end request to the first key sharing program 321 (step 804). End the process.
  • the random numbers required for generating the key in the second key sharing program 324 can be appropriately acquired.
  • FIG. 6 shows, before step 801 is performed. A process similar to the process shown in step 601 may be performed.
  • FIG. 9 is a sequence diagram of the key sharing process between the first key sharing program and the second key sharing program according to the embodiment.
  • the second key sharing program 324 transmits a delivery start request for the random number data 524 to the first key sharing program 321 (step S11).
  • the first key sharing program 321 When the first key sharing program 321 receives the delivery start request, it executes a process of repeatedly writing random number data to the shared area 323 (step S12).
  • the random numbers are represented by r 0 , r 1 , ...
  • the index numbers of the respective random numbers are represented by 0, 1, ...
  • the random number data is represented by (random numbers). , Index number).
  • the first key sharing program 321 stores the random number data (r 0 , 0) in the shared area 323, stores the random number data (r 1 , 1) in the shared area 323, and stores the random number data (r 0, 1). Random number data is generated and stored in the shared area 323 is repeatedly executed until a distribution end request is received from the second key sharing program 324, such as storing 2 and 2) in the shared area 323. Further, the first key sharing program 321 adds each random number data as an entry to the random number data table 502. The timing at which the first key sharing program 321 stores the random number data in the shared area 323 depends on the timing at which the OS 304 allocates resources to the first key sharing program 321.
  • the second key sharing program 324 repeatedly executes the process of acquiring random number data from the shared area 323 (step S13).
  • the timing at which the second key sharing program 324 acquires the random number data from the shared area 323 depends on the timing at which the OS 304 allocates the resource to the second key sharing program 324. Therefore, for example, as shown in FIG. 9, the random number data (r 1 , 1) is stored in the shared area 323 by the first key sharing program 321, and then the random number data (r 2 , 2) is stored in the shared area 323.
  • the second key sharing program 324 does not acquire the random number data from the shared area 323 until it is stored in the second key sharing program 324, and the second key sharing program 324 cannot acquire the random number data (r 1 , 1). It may occur.
  • the second key sharing program 324 does not need to acquire all of the random number data 524 stored in the first key sharing program 321.
  • Step S14 Corresponds to step 804 in FIG. 8.
  • the first key sharing program 321 ends the random number data generation process.
  • the second key sharing program 324 generates the second key 713 using all or a part of the acquired plurality of random number data 712. Any random number data 712 may be selected and used as long as the size required for key generation can be secured.
  • the second key sharing program 324 writes the index number of the random number data 712 used for generating the second key 713 as the key generation information 525 in the shared area 323 (step S15). According to this key generation information 525, it is possible to specify which random number data random number was used to generate the second key 713.
  • the first key sharing program 321 acquires the key generation information 525 from the shared area 323 (step S16).
  • the first key sharing program 321 acquires the random number used when the second key sharing program 324 generates the second key 713 by referring to the random number data table 502 based on the key generation information 525. Then, the first key 503 is generated using these random numbers.
  • the method of generating the key from the random number is determined in advance as a method common to the first key sharing program 321 and the second key sharing program 324.
  • the first key sharing program 321 and the second key sharing program 324 generate keys using the same random numbers, so that the values of the first key 503 and the second key 713 match. It will be. That is, the first key sharing program 321 and the second key sharing program 324 succeed in sharing the key.
  • the first key sharing program 321 may repeat the acquisition of the key generation information 525 for a certain period of time.
  • the first key sharing program receives a plurality of key generation information 525s having different values, the first key sharing program can detect malware 204 impersonating the second key sharing program 324.
  • the first key sharing program 321 may confirm whether or not the second key sharing program 324 has acquired the random number data 524 written in the shared area 323. In this case, for example, when the random number data 524 is not acquired by the second key sharing program 324, the storage of the next random number data is delayed or the period for storing the random number data is lengthened. You may. By doing so, the processing load of the CPU 205 can be reduced.
  • a key sharing process in which the first key sharing program 321 and the second key sharing program 324 further perform a key sharing confirmation process for confirming whether or not the keys have been successfully shared with each other (first modification). Can be considered.
  • FIG. 10 is a sequence diagram of the key sharing process according to the first modification. Note that the same processing as the key sharing processing shown in FIG. 9 is designated by the same reference numerals, and duplicate description will be omitted.
  • MAC message authentication code
  • the first key sharing program 321 calculates the MAC value using an arbitrary message m and the first key 503, and stores the used message m and the MAC value in the shared area 323. (Step S17).
  • the MAC value calculated by using the message m and the first key 503 is represented as MAC (m, first key).
  • the second key sharing program 324 acquires the message m and the MAC value from the shared area 323 (step S18). Next, the second key sharing program 324 calculates the MAC value (MAC (m, second key)) from the message m and the second key 713, and uses the acquired MAC value (MAC (m, first key)). Check if the calculated MAC value (MAC (m, 2nd key)) is equal.
  • the MAC value (MAC (m, 1st key)) and the MAC value (MAC (m, 2nd key)) are equal, the 1st key 503 and the 2nd key 713 have the same value. It indicates that there is, which means that the key sharing is successful.
  • the second key sharing program 324 succeeds in key sharing when the acquired MAC value (MAC (m, first key)) and the calculated MAC value (MAC (m, second key)) are equal.
  • a key sharing success signal indicating that the key sharing has been performed is transmitted to the first key sharing program 321 (step S19).
  • the first key sharing program 321 can recognize that the key sharing with the second key sharing program 324 is successful by receiving the key sharing success signal.
  • the MAC value is generated by the first key sharing program 321 and the second key sharing program 324 compares the MAC value generated by the first key sharing program 321 with the MAC value calculated by itself. By doing so, the success of key sharing was confirmed.
  • the second key sharing program 324 generated the MAC value
  • the first key sharing program 321 was generated by the second key sharing program 324.
  • the success of key sharing may be confirmed by comparing the MAC value with the MAC value calculated by itself.
  • the shared area for sharing the MAC value may be an area different from the shared area 323.
  • FIG. 11 is a sequence diagram showing an example of the key sharing process in the presence of the malware 204 according to the embodiment. Note that the same processing as the key sharing processing shown in FIG. 9 is designated by the same reference numerals, and duplicate description will be omitted.
  • malware 204 can eavesdrop (reference) the shared area 323 between the first key sharing program 321 and the second key sharing program 324. Malware 204 attempts to generate the same key (first key, second key) shared by the first key sharing program 321 and the second key sharing program by eavesdropping.
  • Malware 204 can acquire random number data by referring to the shared area 323 (step S21).
  • the OS 304 determines a program that can access the resource based on the information in the terminal 102 at any time. Therefore, when a plurality of programs repeat the process of issuing an access request to the same resource (here, the shared area 323) to the OS 304, the access order of the resources of each program is different at any time. Therefore, when the first key sharing program 321 and the second key sharing program 324 repeatedly access the shared area 323, the malware 204 that can access the shared area 323 can access the shared area 323 as well as these programs. The order of the programs that can access the shared area 323 is determined at any time by the OS 304 even when the access to the shared area 323 is repeatedly performed.
  • the malware 204 when the malware 204 repeatedly acquires the random number data 524 in the shared area 323, as shown in FIG. 11, the random number data (R 0 , R 1 , 1,) acquired from the shared area 323 by the second key sharing program 324. and ...), random number data malware 204 has obtained from the shared area 323 (R '0, R' 1, ...) and it is likely to be a state that does not match.
  • the random number data to be acquired does not match, even when the key generation information is acquired on the malware 204 side (step S22), the random number indicated by the key generation information can be appropriately grasped. Therefore, it is unlikely that the same key as the key shared by the first key sharing program 321 and the second key sharing program can be generated. Therefore, the key can be safely shared between a plurality of programs. Therefore, it is possible to reduce the risk that the data encrypted by using the key shared by the first key sharing program 321 and the second key sharing program is leaked to the malware 204.
  • the probability that the malware 204 can eavesdrop on the same random number data as the second key sharing program 324 becomes lower. That is, the probability that a key similar to the key shared by the first key sharing program 321 and the second key sharing program can be generated becomes lower. Therefore, the key can be shared more securely among a plurality of programs.
  • the malware 204 that attacks the terminal 102 as an intermediate attack that is, the first key sharing program 321 and the second key sharing program 324 are attempted to share the key with each key sharing program.
  • the countermeasures when the malware 204 to be executed exists will be described.
  • FIG. 12 is a sequence diagram showing an example of the key sharing process in the presence of malware impersonating the first key sharing program according to the first embodiment. Note that the same processing as the key sharing processing shown in FIG. 9 is designated by the same reference numerals, and duplicate description will be omitted.
  • the second key sharing program 324 grasps the delivery start request to be transmitted to the first key sharing program 321 as the first key sharing program 321. Not only the program (in some cases, the program spoofed by malware 204) but also other programs are sent so that they can be received. As a result, it is possible to appropriately prevent the delivery start request from being transmitted only to the malware 204 impersonating the first key sharing program 321.
  • the second key sharing program 324 sends a delivery start request to all the running programs, or the second key sharing program 324 repeatedly writes the delivery start request to the shared area 323 and shares the first key.
  • This can be realized by the program 321 repeatedly acquiring the delivery start request from the shared area 323.
  • a method of transmitting a delivery start request to all running programs for example, when transmitting a delivery start request as a signal, it can be realized by using a signal broadcast.
  • the malware 204 In order for the malware 204 to share the key with the second key sharing program 324, the malware 204 impersonates the first key sharing program 321 and transfers the random number data 524 and the key generation information 525 between the second key sharing program 324. Need to communicate with.
  • the second key sharing program 324 sends a delivery start request (steps S11 and S31)
  • the second key sharing program 324 sends a delivery start request (steps S11 and S31)
  • the second key sharing program 324 sends a delivery start request (steps S11 and S31)
  • the first key sharing program 321 can also receive the delivery start request.
  • the malware 204 and the first key sharing program 321 repeatedly write random number data to the shared area 323, respectively (steps S12 and S32).
  • the random number data written by the malware 204 (W '0, W' 1, ⁇ , W 'm) and the random number data written by the first key sharing program 321 ( One of W 0 , W 1 , ..., W n ) is stored.
  • the OS 304 determines a program that can access the resource based on the information in the terminal 102 at any time. Therefore, when a plurality of programs repeat the process of issuing an access request to the same resource (here, the shared area 323) to the OS 304, the access order of the resources of each program is different at any time. Therefore, when the first key sharing program 321 and the second key sharing program 324 repeatedly access the shared area 323, the malware 204 that can access the shared area 323 can access the shared area 323 as well as these programs. The order of the programs that can access the shared area 323 is determined at any time by the OS 304 even when the access to the shared area 323 is repeatedly performed.
  • the second key sharing program 324 acquires random number data (R 0 , R 1 , ..., R n ) from the shared area 323, all the random number data becomes only the random number data written by the malware 204. Or, it is unlikely that only the random number data written by the first key sharing program 321 will be used. That is, the random number data (R 0 , R 1 , ..., R n ) acquired by the second key sharing program 324 includes the random number data (W 0 , W 1 , ..., R n) written by the first key sharing program 321. - a part of W n), random number data malware 204 writes (W '0, W' 1 , ⁇ , it is very likely to include a portion of W 'm).
  • the second key sharing program 324 generates the second key 713 using the acquired random number data 524.
  • the malware 204 acquires the data on the shared area 323, all the random number data (W 0 , W 1 , ..., W n ) written in the shared area 323 by the first key sharing program 321. Therefore, even if the key generation information 525 is acquired from the shared area 323 (step S33), the second key 713 generated by the second key sharing program 324 cannot be generated. That is, since the malware 204 cannot share the key with the second key sharing program 324, it cannot perform a man-in-the-middle attack.
  • the random number data used by the second key sharing program 324 for key generation may include the random number data written by the malware 204.
  • the first key sharing program 321 does not know the value of the random number data written by the malware 204, so that the key sharing between the first key sharing program 321 and the second key sharing program 324 Is also likely to fail.
  • the first key sharing program 321 and the second key sharing program 324 have succeeded in sharing keys with each other may be confirmed by using the MAC described with reference to FIG. As a result, when it is confirmed that the key sharing has failed, for example, the first key sharing program 321 and the second key sharing program 324 use the created first key 503 and the second key 713. It may be discarded and the key sharing process may be performed again.
  • the malware also acquires random number data from the shared area, transmits the key generation information generated from the acquired random number data to the first key sharing program, and the first key sharing program transmits from the second key sharing program. If the key generation information sent by the malware is acquired before the obtained key generation information is acquired, the malware may impersonate the second key sharing program and succeed in sharing the key with the first key sharing program. possible. This is because the malware does not need to acquire the same random number data as the random number data acquired by the second key sharing program.
  • the processing of the random number data generation and acquisition processing in FIG. 9 is reversed, that is, that is, The first key sharing program 321 acquires the random number data generated on the second key sharing program 324 side, and the first key sharing program 321 and the second key sharing program 324 use the random number data 712 generated by both.
  • a key sharing process (second modification) for generating the first key 503 and the second key 713 can be considered.
  • the first key sharing program 321 includes a random number data acquisition unit 321 and a key generation information delivery unit 433, and the second key sharing program 324 includes a random number data generation / delivery unit 400 and a key generation information acquisition unit. Includes 411.
  • FIG. 13 is a sequence diagram of the key sharing process according to the second modification. Note that the same processing as the key sharing processing shown in FIG. 11 is designated by the same reference numerals, and duplicate description will be omitted.
  • the first key sharing program 321 After receiving the key generation information, the first key sharing program 321 transmits a random number data delivery start request to the second key sharing program 324 (step S17).
  • the second key sharing program 324 When the second key sharing program 324 receives the delivery start request, it executes a process of repeatedly writing random number data to the shared area 323 (step S18).
  • the random numbers transmitted by the second key sharing program are represented as r'0, r'1, ... In the order of generation.
  • the second key sharing program 324 repeatedly executes the process of generating random number data and storing it in the shared area 323 until the delivery end request is received from the first key sharing program 321.
  • the first key sharing program 321 repeatedly executes the process of acquiring random number data from the shared area 323 (step S19).
  • the first key sharing program 324 acquires random number data of a size sufficient for key generation
  • the first key sharing program 324 sends a delivery end request to the second key sharing program 324 (step S20).
  • the second key sharing program 324 ends the random number data generation process.
  • the first key sharing program 321 generates a new first key 503 by using all or a part of the acquired plurality of random number data and the first key 503. At this time, the first key sharing program does not generate the first key after step S16, but after step S19, all or part of the random number data acquired in step S19 and the random number associated with the key generation information received in S16.
  • the first key 503 may be generated using and.
  • the first key sharing program 321 writes the index number included in the random number data used for the first key generation in the shared area 323 as the key generation information among the random number data acquired in step S19 (step S21).
  • the second key sharing program 324 acquires the key generation information from the shared area 323 (step S22).
  • the second key sharing program 324 acquires the random numbers used when the first key sharing program 321 generates the first key based on the key generation information, and newly obtains the random numbers from these random numbers and the second key 713. Generate a second key. At this time, the second key sharing program does not generate the second key after step S14, but associates all or part of the random number data acquired in step S13 with the key generation information received in step S22 after step S22.
  • the second key 713 may be generated using a random number.
  • steps S17 to S22 are performed after performing steps S11 to S16, steps S17 to S22 may be performed and then steps S11 to S16 may be performed, or steps S11 to S16 may be performed. And steps S17 to S22 may be performed in parallel.
  • the random number data is repeatedly written to the shared area 323 in step S18, and the first All the random number data acquired by the key sharing program in step S19 needs to be written by the malware.
  • the OS 304 randomly determines a program that can access the shared area based on the information in the terminal 102, and cannot determine the timing at which the program accesses the shared area. Therefore, when the malware and the second key sharing program repeatedly write random number data to the shared area 323, it is possible that all the random number data acquired from the shared area 323 by the first key sharing program is written by the malware. Is low. Therefore, in the second modification, the first key sharing program and the second key sharing program can safely share keys even if malware impersonating the second sharing program is operating in the terminal 102.
  • seed501 needs to have sufficient entropy for random number generation, and when the entropy source generated by the entropy generator 302 has sufficient entropy for random number generation, the entropy The source can be used as it is as seed501. However, when the entropy source does not have sufficient entropy, it is necessary to repeatedly collect the entropy source from the entropy generator 302 and generate seed501 using the collected entropy source.
  • the first key sharing program 321 collects the entropy source after activation, but it generally takes time to acquire the entropy source from the entropy generator 302, so that the entropy source generates a random number. If you do not have enough entropy for, the time it takes to share the key will increase.
  • the entropy source is generated from the entropy generator 302 as a method for the first key sharing program 321 to generate the seed 501 at high speed when the entropy source does not have sufficient entropy for random number generation.
  • a program for collecting and delivering (referred to as “entropy source acquisition program 1400") is started before starting the first key sharing program 321 (for example, when starting the terminal 102), and the first key sharing program 321 is started.
  • a value having a large entropy size hereinafter referred to as "seed generation information" is delivered to the first key sharing program 321 to generate the seed 501 using the seed generation information.
  • FIG. 14 is a sequence diagram of the key sharing process according to the third modification. Note that the same processing as the key sharing processing shown in FIG. 9 is designated by the same reference numerals, and duplicate description will be omitted.
  • the entropy source acquisition program 1400 (strictly speaking, the CPU 206 that executes the entropy source acquisition program 1400) receives the entropy source (e 0 , e 1 , ... e p) to get (step S41).
  • the first key sharing program 321 transmits a seed delivery start request requesting the start of seed delivery to the entropy source acquisition program 1400 (step S42).
  • the entropy source acquisition program 1400 uses the acquired entropy source to generate a seed having a high entropy (referred to as “seed generation information” s). 0 , s 1 , ...) Is generated.
  • seed generation information referred to as “seed generation information” s). 0 , s 1 , ...) Is generated.
  • the entropy source acquisition program 1400 shares the generated seed generation information (s 0 , s 1 , ...) With the entropy source acquisition program 1400 and the first key sharing program 321 (for example, the first key sharing program).
  • the process of writing to the shared area 323) between the 321 and the second key sharing program 324 is repeated (step S43).
  • the seed generation information may be, for example, a pseudo-random number generated by an entropy source generated by a pseudo-random number generator as an example of the entropy generator 302.
  • the shared area between the entropy source acquisition program 1400 and the first key sharing program 321 is an area different from the shared area 323 used by the first key sharing program 321 and the second key sharing program 324 for key sharing. May be good.
  • the first key sharing program 321 repeats collecting seed generation information from the shared area 323 with the entropy source acquisition program 1400 (step S44).
  • the first key sharing program 321 does not have to acquire all the seed generation information written in the shared area 323 by the entropy source acquisition program 1400.
  • the first key sharing program 321 collects the seed generation information having a sufficient entropy size for generating the seed 501, and then sends a seed delivery end request requesting the end of the seed delivery to the entropy source acquisition program 1400. (Step S45). As a result, when the seed delivery end request is received, the entropy source acquisition program 1400 ends writing the seed generation information to the shared area 323.
  • the random number generation unit 402 of the first key sharing program 321 generates seed 501 from the seed generation information and shares the key with the second key sharing program 324.
  • the magnitude of the entropy of the seed generation information written in the shared area 323 by the entropy source acquisition program 1400 is significantly larger than the magnitude of the entropy of the entropy source. Therefore, according to the above process, the number of times to collect the value having entropy to generate seed501 can be reduced. Therefore, the first key sharing program 321 can generate and use the seed 501 at high speed.
  • the malware when the malware 204 is composed of a large number of programs and these programs operate in cooperation with each other, the malware can access the shared area 323 rather than the first key sharing program 321 and the second key sharing program 324. As the number of times increases, the security of key sharing decreases. On the other hand, for example, the following may be used.
  • the first key sharing program periodically tries to access the shared area 323 and measures the interval at which the access is actually successful. This may be measured by, for example, a timer included in the CPU 206. Since the interval at which this access is successful increases as the number of programs operating in the terminal 102 increases, the first key sharing program 321 can detect the presence of the malware 204 when the access interval increases.
  • This malware detection function may have a second key sharing program, or a new program (detection program) may have a malware detection function.
  • the detection program sends a signal notifying that the malware has been detected to the first key sharing program 321 and the second key sharing program 324 when the malware 204 is detected, so that the first key sharing program 321 and the second key sharing program 324 can detect malware 204.
  • the random number generator 402 uses a pseudo-random number generator to generate a random number from the index information generated by the index generator 403 and the seed 501, so that the process of step 605 is not performed.
  • the pseudo-random number generator can generate the same random number by inputting the same index information and seed501.
  • the first key generation unit 412 uses a pseudo-random number generator to generate a random number from each index information of the key generation information 525 and the seed 501, and generates the first key 503 using these random numbers. It may be.
  • the second key generation unit 432 After the random number data acquisition unit 431 has collected the random number data in the random number data pool 711 in the general-purpose register 303, the second key generation unit 432 generates the second key from the random number data 712 collected.
  • the usage rate of the general-purpose register 303 increases in proportion to the increase in the number of random number data to be collected.
  • the following may be used.
  • step 802 of FIG. 8 after the random number data acquisition unit 431 acquires the random number data 524 on the shared area, a new first is obtained from the random number included in the random number data and the second key 713 generated from the random numbers acquired so far. Two keys 713 are generated, and index information included in the random number data is newly added to the key generation information 714.
  • step 803 of FIG. 8 it is determined whether or not a random number having a size sufficient for key generation has been acquired from the number of index information included in the key generation information 714. As a result, the random number data pool 711 becomes unnecessary, and the usage rate of the general-purpose register 303 can be reduced.
  • the first key sharing program 321 generates a temporary key 1 using the key generation information 525 delivered by the second key sharing program 324, and the random number data 524 delivered by the second key sharing program 324 is used.
  • the temporary key 2 may be sequentially generated, the first key may be generated from the temporary key 1 and the temporary key 2, and the second key sharing program 324 may perform a process in which this subject is reversed to generate the second key. ..
  • FIG. 15 is an example of a functional configuration diagram realized by the first key sharing program and the second key sharing program according to the present embodiment.
  • the first data concealment processing program 1500 includes, for example, a first program processing unit 1501 that processes the sensor program 211 and a first key sharing program 321.
  • the second data concealment processing program 1510 includes, for example, a two-program processing unit 1511 that processes the authentication program 212, and a second key sharing program 324.
  • the installed first program processing unit 1501 sends data (for example, sensor data 203) to the second program processing unit 1511, the installed first program processing unit 1501 passes the data requiring concealment processing to the first data concealment processing unit 420.
  • the first data concealment processing unit 420 performs concealment processing on the data acquired from the first program processing unit 1501 by using the key shared by the processing described in the above embodiment.
  • the first data concealment processing unit 420 passes the concealed data to the second data concealment processing unit 440 using, for example, the shared area 323.
  • the second data concealment processing unit 440 restores the original data with respect to the acquired concealed data using the key shared by the processing described in the above embodiment, and passes it to the second program processing unit 1511.
  • the same processing as described above may be performed with the main body reversed.
  • the first key sharing program 321 (or the first data concealment processing program 1500) and the second key sharing program 324 (or the second data concealment processing program 1510) are arranged in the same terminal 102. I was trying to execute it.
  • the present invention is not limited to this, and for example, in an information processing system including two terminals connected via the network 301, the first key sharing program 321 (or the first data concealment processing program 1500) and the second key sharing The program 324 (or the second data concealment processing program 1510) may be placed in another terminal and executed.
  • the shared area 323 may be provided in the memory of any terminal.
  • the first key sharing program 321 is a random number via a network.
  • the data 524 may be stored in the shared area 323, and the key generation information may be acquired from the shared area 323.
  • the above disclosure is described for a representative embodiment, one of ordinary skill in the art understands that various changes and modifications can be made in form and detail without departing from the spirit or scope of the subject matter to be disclosed. Will do. Further, in the above embodiment, a part or all of the processing performed by the CPU may be performed by a dedicated hardware circuit.
  • the program in the above embodiment may be installed from the program source.
  • the program source may be a program distribution server or a non-temporary storage medium (eg, a portable storage medium).

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Storage Device Security (AREA)

Abstract

プログラム間で安全に鍵を共有できるようにするために、端末は、第1鍵共有プログラム及び第2鍵共有プログラムと、共有領域とを備え、CPUは、第1鍵共有プログラムにリソースを割り当て、第1鍵共有プログラムを実行することにより、乱数データを生成して共有領域に格納することを繰り返し、第2鍵共有プログラムにリソースを割り当て、第2鍵共有プログラムを実行することにより、共有領域に格納された乱数データを取得することを繰り返し、取得した乱数データに基づいて第2鍵と、第2鍵の鍵生成情報と、を生成し、鍵生成情報を共有領域に格納し、第1鍵共有プログラムにリソースを割り当て、第1鍵共有プログラムを実行することにより、共有領域に格納された鍵生成情報に基づいて第1鍵を生成する。

Description

情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム 参照による取り込み
 本出願は、2019年12月9日に出願された日本特許出願第2019-222400号の優先権を主張し、その内容を参照することにより本出願に取り込む。
 本発明は、悪意を持ったプログラムの活動を防止するための技術に関する。
 モバイル端末の普及とWebサービスの高度化に伴い、サービスの種類も多様化している。特に近年では、モバイル決済のように、従来ATMや窓口の専用端末を経由していた支払いや送金に関するサービスをモバイル端末上で実行するサービスが流行の兆しを見せている。
 このようなサービスを利用する際には、専用のソフトウェア(以下、「プログラム」ともいう)をインストールし、そのプログラムを介してサービスを利用するのが一般的である。
 また、サービスの利用に際してユーザ認証(もしくは端末認証)を行う必要があるが、このとき、ユーザ(もしくは端末)のみが持つ秘密情報が用いられる。このような認証の処理は、SIM(Subscriber Identity Module)チップ上の領域内で行われることが望ましいが、上記のように、プログラム上で秘密情報を取り扱うケースがほとんどである。これは、サービス用のプログラムをインストールするためには、SIMチップの記憶容量や処理能力が低いことが理由である。
 一方で、モバイル端末のセキュリティという観点では、一定の割合でモバイル端末が不正ソフトウェア(以下、「マルウェア」という)に感染しているという現実があり、金融サービスに特化したマルウェアの存在も確認されている。特に、メモリ上に置かれたデータを読み取ってクレジットカード番号などを取り出すマルウェアの存在が報告されており、プログラムの実行中にメモリに置かれるデータを保護する必要がある。
 上記のような課題への対策として、メモリ上のデータを暗号化して格納する方法がある。例えば、特許文献1は、CPUやメモリ機構などの特別のハードウェアのサポートを必要とせずにメモリ上にデータを格納する際に暗号化を行う技術を開示している。この技術では、暗号化処理を行うプログラムが、暗号化に用いる鍵(以下、「鍵」という)の生成、管理をCPU内で行う。
特開2019-074913号公報
Bui, T., Rao, S.P., Antikainen, M., Bojan, V.M., Aura, T.: Man-in-the-machine: Exploiting ill-secured communication inside the computer. In: 27th USENIX Security Symposium. pp. 1511-1525. USENIX Association, Baltimore, MD (2018)
 予めインストールされていたり、後から必要に応じてインストールしたりする複数のプログラム間で、マルウェアに対して安全にデータのやり取りを行う方法として、上記で述べたような方法でメモリ上のデータを暗号化したものをプログラム間でやり取りする方法がある。この方法では、メモリ上のデータの暗号化に用いた鍵をプログラム間で共有する必要がある。
 また、複数のプログラム間でデータをやり取りする方法として、複数のプログラムがアクセスできるメモリ上の共有領域を作成し、この共有領域を介してデータのやり取りをする方法がある。一般的に、共有領域を作成する際は共有領域に紐づく識別子を設定する。共有領域を利用するプログラムはこの共有領域に紐づく識別子を用いて共有領域にアクセスし、共有領域内の値の取得や値の書き込みを行う。複数のプログラム間で共有領域を用いてデータのやり取りを行うためには、共有領域に紐づく識別子をプログラム間で共有する必要がある。
 複数プログラム間での鍵共有方法として、上記の共有領域を介して鍵をやり取りする方法を考える。非特許文献1において、共有領域に攻撃者がアクセスできる場合、攻撃者が共有領域上のデータを取得する危険があることが報告されている。複数プログラム間での鍵共有に共有領域を用いる場合、マルウェアが共有領域上に格納されているメモリ上のデータの秘匿に用いる鍵を取得すると、メモリ上のデータの秘匿を無効化する危険がある。
 本発明は、上記事情に鑑みなされたものであり、2つのプログラム間で安全に鍵を共有することのできる技術を提供する。
 上記目的を達成するため、一観点に係る情報処理システムは、
データとプログラムとを格納する主記憶装置と、主記憶装置に接続され、プログラムを実行するプロセッサと、を備える情報処理システムであって、
 所定の割当基準に基づいて、実行するプログラムにプロセッサ及び主記憶装置を含むリソースの割り当てを行うためのOS(オペレーティングシステム)と、
鍵を共有して処理を実行するための第1鍵共有プログラム及び第2鍵共有プログラムを備え、
 プロセッサは、OSを実行して、
 第1鍵共有プログラムと第2鍵共有プログラムとで処理に共有可能な共有領域とを設定し、
 第1鍵共有プログラムにリソースを割り当て、
 第2鍵共有プログラムにリソースを割り当て、
 プロセッサは、OSを実行して、第1鍵共有プログラムを実行することにより、
 第2鍵共有プログラムが第2鍵を生成するための乱数を特定可能な乱数データの生成と、共有領域への乱数データの格納と、を繰り返し、
 プロセッサは、OSを実行して、第2鍵共有プログラムを実行することにより、
 共有領域に格納された乱数データを取得することを繰り返し、
 取得した複数の乱数データに基づいて第2鍵を生成し、
 第2鍵を生成するために使用した取得した複数の乱数データを特定可能な鍵生成情報を生成し、
 鍵生成情報を共有領域に格納し、
 プロセッサは、OSを実行して、第1鍵共有プログラムを実行することにより、
 共有領域に格納された鍵生成情報に基づいて第1鍵を生成することを特徴とする。
 本明細書において開示される主題の、少なくとも一つの実施の詳細は、添付されている図面と以下の記述の中で述べられる。開示される主題のその他の特徴、態様、効果は、以下の開示、図面、請求項により明らかにされる。
 本発明によれば、2つのプログラム間で安全に鍵を共有することができる。
一実施形態に係るネットワークシステムの全体構成図の一例である。 一実施形態に係る端末の構成図の一例である。 一実施形態に係る端末の機能構成図の一例である。 一実施形態に係る第1鍵共有プログラム及び第2鍵共有プログラムにより実現される機能構成図の一例である。 一実施形態に係る第1鍵共有プログラムの実行時における機能構成図の一例である。 一実施形態に係る乱数データ生成処理のフローチャートの一例である。 一実施形態に係る第2鍵共有プログラムの実行時における機能構成図の一例である。 一実施形態に係る乱数データ取得処理のフローチャートの一例である。 一実施形態に係る第1鍵共有プログラム及び第2鍵共有プログラムの間の鍵共有処理のシーケンス図の一例である。 第1変形例に係る鍵共有処理のシーケンス図の一例である。 一実施形態に係る、第2鍵共有プログラムになりすますマルウェアが存在する場合の鍵共有処理の一例を示すシーケンス図の一例である。 一実施形態に係る、第1鍵共有プログラムになりすますマルウェアが存在する場合の鍵共有処理の一例を示すシーケンス図の一例である。 第2変形例に係る鍵共有処理のシーケンス図の一例である。 第3変形例に係る鍵共有処理のシーケンス図の一例である。 一実施形態に係る第1鍵共有プログラム及び第2鍵共有プログラムにより実現される機能構成図の一例である。
 実施形態について説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 以下の説明では、「AAAテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と呼ぶことができる。
 また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の動作の主体が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
 まず、本実施形態の概要について説明する。
 本実施形態では、情報処理システムの一例としての端末のOS(オペレーティングシステム)を改変することなく、プログラム間で安全に鍵共有を行うようにする。このため、本実施形態では、例えば、以下に示すOSの機能を利用する。
 OS(厳密には、OSを実行するプロセッサ)は、端末内の情報を用いた所定の割当基準に従ってプログラムごとにリソースの割り当てを行う。一般的には、OSによる各プログラムへのリソースの割当順序は一定ではないので、複数のプログラムから同時に同一リソースへアクセスする試行を繰り返した場合、リソースへのプログラムのアクセス順も一定とはならない。
 プログラム(厳密には、プログラムを実行するプロセッサ)が、OSによって用意されているAPI(Application Programming Interface)を呼び出すことで、OSはメモリ内に複数のプログラムがアクセスすることができる領域(「共有領域」という)を確保する。
 本実施形態では、例えば、以下のような方法により、プログラム間(第1鍵共有プログラムと第2鍵共有プログラムとの間)で鍵の共有を行う。
 第1鍵共有プログラム(厳密には、第1鍵共有プログラムを実行するプロセッサ)は、乱数とインデックス情報を生成し、これらの組を乱数データとして共有領域に書き込む処理を繰り返し行う。また、第1鍵共有プログラムは、共有領域に書き込んだ乱数データを乱数データテーブルに記録する。
 一方、第2鍵共有プログラム(厳密には、第2鍵共有プログラムを実行するプロセッサ)は、第1鍵共有プログラムが共有領域に乱数データを書き込む処理を繰り返し行っている間、共有領域内の乱数データの取得を繰り返し行う。第2鍵共有プログラムは、共有領域から取得した乱数データの乱数を用いて鍵を生成する。また、第2鍵共有プログラムは、鍵の生成に用いた全ての乱数データのインデックス番号を鍵生成情報として共有領域に書き込む。
 第1鍵共有プログラムは、共有領域内に格納されている鍵生成情報を取得し、この鍵生成情報に基づいて、乱数データテーブルから第2鍵共有プログラムが鍵生成に用いた乱数を取得し、取得した乱数を用いて鍵を生成する。
 これらの一連の処理によって、第1鍵共有プログラムと、第2鍵共有プログラムとは、それぞれが同一の値をもつ鍵を生成することができる、すなわち鍵の共有を行うことができる。
 本実施形態によれば、OS上で動く各プログラムが共有領域にアクセスできるタイミングは、OSによって所定の割当基準に基づいて随時決定される。このため、上述したように、プログラム間で共有領域を介して鍵生成を行うための乱数データの格納及び取得を繰り返し行うことで、例えば、マルウェアが共有領域にアクセスできる場合においても、第2鍵共有プログラムが鍵生成に用いる乱数データの全てをマルウェアが取得することが困難であり、また、第2鍵共有プログラムが取得する乱数データの全てをマルウェアが書き込むことも困難である。
 この結果、マルウェアが第1鍵共有プログラムと第2鍵共有プログラムとの間で使用する鍵を取得することが困難であり、これによってマルウェアがメモリ上のデータに施されている秘匿処理を無効化するリスクを軽減できる。
 以下に、本実施形態を図面を参照して詳細に説明する。
 図1は、一実施形態に係るネットワークシステムの全体構成図である。
 ネットワークシステム100は、情報処理システムの一例としての情報処理装置(端末)102と、プログラム配信サーバ103と、認証サーバ111と、プログラムサーバ112とを有する。端末102は、ユーザ101によって使用される。認証サーバ111と、プログラムサーバ112とは、サービス提供者110による所定のサービスを提供する。
 端末102は、ユーザ101の操作に従って、プログラム配信サーバ103からサービス提供者110が提供するサービスを利用するためのプログラムをダウンロードする。端末102は、ユーザ101の操作によってダウンロードしたプログラムをインストールする。ユーザ101は、プログラムをインストールした後に、端末102により認証サーバ111にアクセスしてユーザ登録を行うことができる。ユーザ101は、ユーザ登録を行った後に、端末102を用いてサービス提供者110のサービスを利用することが可能となる。
 端末102は、ユーザ101からサービス利用の指示を受けた場合には、認証サーバ111によるユーザ認証(または装置認証)を受けた後に、プログラムサーバ112を通じてサービスを利用できるようにする。
 図2は、一実施形態に係る端末の構成図である。
 端末102は、センサ202と、主記憶装置の一例としてのメモリ205と、プロセッサの一例としてのCPU206と、ネットワークIF(インターフェース)208と、ストレージ210とを備える。
 センサ202は、例えば、カメラやマイク等であり、ユーザ101の生体情報(例えば、指紋情報)201をセンシングし、センサデータ203を生成する。
 メモリ205は、例えば、RAM(RANDOM ACCESS MEMORY)であり、CPU206で実行されるプログラムや、必要な情報を記憶する。
 ネットワークIF208は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、通信路を介して他の装置(例えば、プログラム配信サーバ103、認証サーバ111、プログラムサーバ112)と通信する。
 CPU206は、メモリ205及び/又はストレージ210に格納されているプログラムに従って各種処理を実行する。
 ストレージ210は、例えば、ハードディスクやフラッシュメモリなどであり、CPU206で実行されるプログラムや、CPU206に利用されるデータを記憶する。本実施形態では、ストレージ210は、例えば、センサ202を介して生体情報201のセンサデータ203を取得するセンサ用プログラム211と、認証サーバ111とのデータの送受信を行う認証プログラム212と、格納する。
 なお、端末102には、マルウェア204が含まれている可能性がある。なお、図2においては、マルウェア204を模式的に表示しているが、実際には、例えば、メモリ205やストレージ210に格納されている。
 ここで、端末102が認証サーバ111によるユーザ認証を利用する場合の処理について説明する。
 端末102のCPU206は、センサ用プログラム211を実行することにより、センサ202から、ユーザ101の生体情報201をセンシングして生成されたセンサデータ203を取得し、センサデータ203をメモリ205に格納する。次いで、CPU206は、認証プログラム212を実行することにより、センサデータ203に対して適切な処理を施して通信データ207を生成し、ネットワークIF208を介して認証サーバ311に送信する。これにより、認証サーバ311においてユーザ認証が実行されることとなる。
 図3は、一実施形態に係る端末の機能構成図である。
 端末102は、図2に示す端末において、センサ用プログラム211と、認証プログラム212との間でセンサデータ203を安全に交換できるようにするために、センサ用プログラム211と認証プログラム212との間でデータを暗号化するようにした端末である。
 以下の説明では、センサ用プログラム211と認証プログラム212との間で暗号化するための鍵共有を実行するための処理を行うプログラムが、後述する第1鍵共有プログラム305と第2鍵共有プログラム306を含んでいる場合について説明する。
 なお、第1鍵共有プログラム305と第2鍵共有プログラム306のいずれか一方または両方が、センサ用プログラム211や認証プログラム212に含まれないプログラムであってもよい。この場合の構成については後述する。
 端末102は、ネットワークIF208、センサ202、エントロピー発生器302、ストレージ210、CPU206、メモリ205を備える。これらの機能構成は、データバスで互いに繋がれており、メモリ205を介してデータをやり取り可能となっている。
 エントロピー発生器302は、エントロピーを有する値(「エントロピー源」という)を生成する。ここで、疑似乱数を生成するための値(「seed」という)は、一般的にエントロピー源から生成される。生成されたエントロピー源のサイズが十分でない場合には、繰り返して生成されたエントロピー源に基づいてseedが生成される。
 なお、エントロピー発生器302はOS304による機能として提供されていてもよいし、プログラムによる機能として提供されていてもよい。
 CPU206は、演算処理で扱うデータを格納するための汎用レジスタ303を複数保持している。
 ストレージ210は、プログラムの実行ファイルや設定ファイルを記憶する。本実施形態では、ストレージ210は、第1鍵共有プログラム305と、第2鍵共有プログラム306とを記憶する。第1鍵共有プログラム305及び第2鍵共有プログラム306は、プログラム間鍵共有プログラムに相当する。
 なお、第1鍵共有プログラム305と、第2鍵共有プログラム306は、予めストレージ210に格納されていてもよいし、必要に応じて、他の装置の非一時的記憶装置からネットワーク経由で、または非一時的な記憶媒体から、ストレージ210に格納されてもよい。
 メモリ205には、OS304と呼ばれるプログラムが常駐している。OS304は、CPU206に実行されることによって、ハードウェアとプログラムとの間のデータの仲介や、複数のプログラムの実行権限とリソースとの管理を行う。
 ユーザプログラムは、OS304の管理によって、ユーザ権限とよばれる限られた権限の元でCPU206により実行される。一方、OS304のリソース管理に関わる処理などは、より強い権限の元でCPU206により実行される。ここで、第1鍵共有プログラム305、第2鍵共有プログラム306、マルウェア204は、ユーザプログラムに対応する。
 メモリ205は、OS304の中心的な処理が利用するカーネル空間310と、ユーザプログラムが利用するユーザ空間320とを有する。
 ユーザ空間320上には、ストレージ210に記憶されている第1鍵共有プログラム305及び第2鍵共有プログラム306等のユーザプログラムが実行されると展開される。
 ユーザ空間320上に展開された第1鍵共有プログラム321や、第2鍵共有プログラム324は、OS304がプログラム毎に割り当てるユーザ空間320上のメモリ利用領域(例えば、第1鍵共有プログラム321に割り当てられた第1鍵共有プログラム割り当て領域322や、第2鍵共有プログラム324に割り当てられた第2鍵共有プログラム割り当て領域325を使って、CPU206により処理が実行される。
 ユーザプログラムに割り当てられるメモリ205の利用領域は、ユーザプログラムの実行時に動的に確保されてもよいし、ユーザプログラムの実行の途中で動的に(例えば、C言語の標準ライブラリとして提供されるalloc関数などを介して)確保されてもよい。
 一般的にOS304によってプログラム毎に異なる領域がプログラムのメモリの利用領域としてユーザ空間320上に割り当てられるが、メモリ205内のユーザ空間320上に複数プログラムがアクセス可能な共有領域を確保することをユーザプログラム実行開始時又は、実行中にOS304へ明示することで、共有領域323を確保することができる。
 複数のプログラムについての共有領域323の作成方法の例としては、非特許文献1のプロセス間通信手法(「IPC」という)の利用があげられる。IPCは、プロセス間でデータのやり取りを行うためにOS304が用意している仕組みである。IPCとしては、パイプ、メッセージキュー、共有メモリ、ソケットなどがあげられる。本実施形態では、第1鍵共有プログラム321と第2鍵共有プログラム324は、メモリ205のユーザ空間320に共有領域323を確保するように構成されている。なお、共有領域323の確保は、第1鍵共有プログラム321が行ってもよいし、第2鍵共有プログラム324が行ってもよい。なお、本実施形態では、便宜的に、第1鍵共有プログラム321が共有領域の確保を行うものとして説明する。
 OS304のプロセス管理機能は、複数のプログラムを実行する場合には、CPU206やメモリ205などのハードウェアリソースを、いずれかのプログラムに割り当て、適宜、このハードウェアリソースの割り当てを切り替え(「割り込み」という)を行う。例えば、第1鍵共有プログラム321の実行中に、第2鍵共有プログラム324による割り込みが発生すると、OS304を実行するCPU206は、第1鍵共有プログラム321の汎用レジスタ303の情報を、カーネル空間310の第1鍵共有プログラム退避領域311へ退避格納する。その後、CPU206は、ハードウェアリソースの次の割当先の第2鍵共有プログラム324に、ハードウェアリソースを割り当て、第2鍵共有プログラム324の実行を開始する。第2鍵共有プログラム324の実行が終了したら、CPU206は、第1鍵共有プログラム退避領域311のデータを汎用レジスタ303に復元し、第1鍵共有プログラム321の処理を再開する。
 OS304を実行するCPU206は、例えば、サイクルカウンタなどの時刻情報やプログラムごとの実行優先度情報などに基づいて、ハードウェアリソースを割り当てるプログラムを決定し、必要に応じて割り込みのための処理を行う。したがって、実行対象の複数のプログラムがある場合には、複数のプログラムに対してハードウェアリソースを割り当てる順番は、必ずしも一定の順番にならない。
 本実施形態の第1鍵共有プログラム321は、所定のルール(例えば、乱数データの配送開始要求から、配送終了要求までの間)に従って、乱数とインデックス情報とを含む乱数データを逐次生成し、共有領域323に格納する。ここで、乱数データが共有領域323に格納されるのは、OS304によって第1鍵共有プログラム321にリソースが割り当てられたタイミングとなる。このように共有領域323に格納された乱数データの少なくとも一部は、第2鍵共有プログラム324により取得されることとなる。また、第1鍵共有プログラム321は、共有領域323から第2鍵共有プログラム324により生成された鍵生成情報を取得し、鍵生成情報に基づいて、第1鍵を生成する。
 一方、第2鍵共有プログラム324は、共有領域323を介して第1鍵共有プログラム321により格納された乱数データを取得し、取得した乱数データに基づいて、第2鍵を生成し、第2鍵の生成に使用した乱数を特定可能な鍵生成情報を生成し、共有領域323に格納する。ここで、共有領域323から乱数データを取得されるのは、OS304によって第2鍵共有プログラム324にリソースが割り当てられたタイミングとなる。
 本実施形態では、マルウェア204等の影響がない場合においては、第1鍵共有プログラム321により生成される第1鍵と、第2鍵共有プログラム324により第2鍵は、同じ値となる。すなわち、第1鍵共有プログラム321と、第2鍵共有プログラム324とは鍵を共有することができる。なお、鍵の共有についての詳細は後述する。
 次に、第1鍵共有プログラム321及び第2鍵共有プログラム324を、CPU206が実行することにより構成される機能構成について詳細に説明する。
 図4は、一実施形態に係る第1鍵共有プログラム及び第2鍵共有プログラムにより実現される機能構成図である。
 第1鍵共有プログラム321をCPU206が実行することにより、乱数データ生成・配送部400と、鍵生成情報取得・鍵生成部410と、第1データ秘匿処理部420とが構成される。
 乱数データ生成・配送部400は、乱数データを生成して共有領域323に格納することにより、共有領域323を介して第2鍵共有プログラム324へ乱数データが配送されるようにする。
 乱数データ生成・配送部400は、乱数データ生成部401と、乱数データ配送部404とを備える。
 乱数データ生成部401は、乱数とインデックス情報とを含む乱数データを生成する。乱数データ生成部401は、乱数生成部402と、インデックス生成部403とを備える。乱数生成部402は、エントロピー発生器により発生されたエントロピー源によって生成されたseedを用いて乱数を生成する。
 このとき、乱数生成部402によって生成される乱数1個のデータサイズは第1鍵および第2鍵の生成に必要な乱数のサイズよりも小さくてもよい。インデックス生成部403は、生成された乱数を識別するインデックス情報を生成する。インデックス生成部403は、例えば、カウンタによる出力をインデックス情報としてもよい。
 乱数データ配送部404は、乱数データ生成部401で生成された乱数データを共有領域323に格納する。
 鍵生成情報取得・鍵生成部410は、第2鍵共有プログラム324によって共有領域323に格納された鍵生成情報を取得して、鍵生成情報に基づいて第1鍵を生成する。鍵生成情報取得・鍵生成部410は、鍵生成情報取得部411と、第1鍵生成部412とを備える。鍵生成情報取得部411は、共有領域323から第2鍵共有プログラム324に格納された鍵生成情報を取得する。第1鍵生成部412は、鍵生成情報取得部411が取得した鍵生成情報を用いて第1鍵を生成する。
 第1データ秘匿処理部420は、生成された第1鍵を用いてメモリ205上に格納するデータの秘匿処理を行いながら所定の処理を行う。例えば、第1データ秘匿処理部420は、センサデータ203を第1鍵で暗号化する秘匿処理を行って、メモリ205に格納する。なお、第1データ秘匿処理部420の秘匿処理としては、例えば、特許文献1の方法を用いてもよい。
 第2鍵共有プログラム324は、乱数データ取得・鍵生成部430と、第2データ秘匿処理部440とを備える。
 乱数データ取得・鍵生成部430は、共有領域323から乱数データを取得して第2鍵を生成する。乱数データ取得・鍵生成部430は、乱数データ取得部431と、第2鍵生成部432と、鍵生成情報配送部433とを備える。乱数データ取得部431は、共有領域323から乱数データを取得する。第2鍵生成部432は、乱数データ取得部431が取得した乱数データに基づいて、第2鍵を生成する。第2鍵生成部432は、乱数データ取得部431が取得した複数の乱数データに基づいて、第2鍵を生成してもよく、例えば、複数の乱数データの中から1以上の乱数データを選択し、選択した乱数データを使用して第2鍵を生成してもよい。鍵生成情報配送部433は、鍵生成に用いた全ての乱数データのインデックス情報を鍵生成情報として共有領域323に格納する。
 第2データ秘匿処理部440は、第2鍵を用いてメモリ205上に格納するデータの秘匿処理を行いながら所定の処理を行う。例えば、第2データ秘匿処理部420は、メモリ205に格納された暗号化されたセンサデータ203を、第2鍵を用いて復号し、復号したセンサデータ203を用いて例えば認証処理を実行する。なお、第2データ秘匿処理部440の秘匿処理としては、例えば、特許文献1の方法を用いてもよい。
 また、第2データ秘匿処理部440から第1データ秘匿処理部420へデータを送る際も、上述の処理を同様に行えばよい。
 次に、第1鍵共有プログラム305の実行時における端末102の構成について説明する。
 図5は、一実施形態に係る第1鍵共有プログラムの実行時における状態を示す機能構成図である。なお、図3に示す要素と同様な部分については、同一符号を付し、重複する説明を省略する。
 第1鍵共有プログラム305がメモリ205のユーザ空間320上に第1鍵共有プログラム321として展開される。CPU206は、汎用レジスタ303や、メモリ205上の第1鍵共有プログラム割り当て領域322にプログラム変数や処理中のデータを格納しながら、第1鍵共有プログラム321を実行する。
 汎用レジスタ303には、処理の状況に応じて、seed501、乱数データテーブル502、第1鍵503、鍵生成情報504、インデックス情報505、乱数506が格納される。
 また、共有領域323には、処理で使用する乱数データ524や、鍵生成情報525が格納される。
 このように第1鍵共有プログラム321を実行している最中に、他のプログラム(マルウェア204も含む)による割り込みが発生した場合には、OS304の機能により、CPU206は、汎用レジスタ303上のデータ(seed501、乱数データテーブル502、第1鍵503、鍵生成情報504、インデックス情報505、乱数506等)を、カーネル空間310の第1鍵共有プログラム退避領域311に格納する。この場合、割り込みによって実行されることとなったプログラムでは、第1鍵共有プログラム退避領域311内のデータにアクセスすることはできない。したがって、マルウェア204は、第1鍵共有プログラム退避領域311からseed501、乱数データテーブル502、第1鍵503、鍵生成情報504、インデックス情報505、乱数506等を取得することができないので、情報が漏洩することを防止できる。
 なお、図5の例では、seed501、乱数データテーブル502、第1鍵503、鍵生成情報504、インデックス情報505、乱数506を汎用レジスタ303に格納するようにしていたが、メモリ205上に格納するようにしてもよい。
 次に、CPU206が第1鍵共有プログラム321を実行することにより行われる乱数データ生成処理について説明する。この乱数データ生成処理は、図4に示す乱数データ生成・配送部400によって実行される。
 図6は、一実施形態に係る乱数データ生成処理のフローチャートである。
 まず、乱数データ生成・配送部400は、メモリ205のユーザ空間320に、第2鍵共有プログラム324とで共有する共有領域323を確保する(ステップ601)。
 次いで、乱数データ生成・配送部400は、第2鍵共有プログラム324から乱数データの配送を開始する要求(配送開始要求)を受信したか否かを確認し(ステップ602)、受信していない場合(ステップ602:No)には、配送開始要求を受信するまで待機する。
 一方、配送開始要求を受信した場合(ステップ602:Yes)には、乱数データ生成・配送部400は、乱数生成部402によって乱数を生成し、インデックス生成部403によって、生成した乱数を示すインデックス情報を生成する(ステップ603)。
 次いで、乱数データ生成・配送部400は、生成した乱数と、対応するインデックス情報とを含む乱数データ524を共有領域323に書き込む(ステップ604)。なお、共有領域323に、すでに書き込まれている乱数データ524が存在する場合には、乱数データ生成・配送部400は、この乱数データを新たな乱数データ524により上書きする。これにより、共有領域323には、最新の乱数データ524が存在することとなる。
 次いで、乱数データ生成・配送部400は、新しい乱数データ524をエントリとして乱数データテーブル502に追加する(ステップ605)。この結果、乱数データテーブル502には、乱数データ生成・配送部400により生成された各乱数データ524に対応するエントリが格納されることとなる。
 次いで、乱数データ生成・配送部400は、第2鍵共有プログラム324から乱数データの配送を終了する要求(配送終了要求)を受信したか否かを確認する(ステップ606)。この結果、配送終了要求を受信していない場合(ステップ606:No)には、まだ乱数データを生成する必要があるので、乱数データ生成・配送部400は、処理をステップ603に進める。
 一方、配送終了要求を受信した場合(ステップS606:Yes)には、乱数データ生成・配送部400は、処理を終了する。
 なお、第1鍵共有プログラム321と第2鍵共有プログラム324とのメモリ205の共有領域323の確保を第2鍵共有プログラム324が行う場合には、ステップ601を行わなくてよい。
 次に、第2鍵共有プログラム306の実行時における端末102の構成について説明する。
 図7は、一実施形態に係る第2鍵共有プログラムの実行時における状態を示す機能構成図である。なお、図3に示す要素と同様な部分については、同一符号を付し、重複する説明を省略する。
 第2鍵共有プログラム306がメモリ205のユーザ空間320上に第2鍵共有プログラム324として展開される。CPU206は、汎用レジスタ303や、メモリ205上の第2鍵共有プログラム割り当て領域325にプログラム変数や処理中のデータを格納しながら、第2鍵共有プログラム324を実行する。
 汎用レジスタ303には、処理の状況に応じて、乱数データプール711、第2鍵713、鍵生成情報714が格納される。乱数データプール711には、共有領域323から取得された複数の乱数データ712が格納される。
 このように第2鍵共有プログラム324を実行している最中に、他のプログラム(マルウェア204も含む)による割り込みが発生した場合には、OS304の機能により、CPU206は、汎用レジスタ303上のデータ(例えば、乱数データプール711の乱数データ712、第2鍵713、鍵生成情報714等)を、カーネル空間310の第2鍵共有プログラム退避領域312に格納する。この場合、割り込みによって実行されることとなったプログラムでは、第2鍵共有プログラム退避領域312内のデータにアクセスすることはできない。したがって、マルウェア204は、第2鍵共有プログラム退避領域312から乱数データプール711の乱数データ712、第2鍵713、鍵生成情報714等を取得することができないので、情報が漏洩することを防止できる。
 次に、CPU206が第2鍵共有プログラム324を実行することにより行われる乱数データ取得処理について説明する。この乱数データ取得処理は、図4に示す乱数データ取得部431によって実行される。
 図8は、一実施形態に係る乱数データ取得処理のフローチャートである。
 まず、乱数データ取得部431は、第1鍵共有プログラム321に対して、乱数データの配送開始要求を送信する(ステップ801)。
 次いで、乱数データ取得部431は、共有領域323の乱数データ524を取得し、乱数データプール711に乱数データ712として追加格納する(ステップ802)。ここで、乱数データ取得部431が共有領域323から乱数データ524を取得できるタイミングは、OS304によりリソースが割り当てられたタイミングであり、取得される乱数データ524は、その時点で共有領域323に格納されている乱数データ524である。したがって、第1鍵共有プログラム321により共有領域323に逐次格納される乱数データ524の全てを取得できるとは限らない。
 次いで、乱数データ取得部431は、乱数データプール711内の乱数データ712の個数、すなわち、使用可能な乱数のサイズが鍵の生成に十分なサイズであるか否かを判定する(ステップ803)。例えば、1つの乱数データ712の乱数のサイズが鍵の生成に必要なサイズよりも小さい場合であれば、複数の乱数データを取得したか否かが判定される。
 この結果、乱数のサイズが鍵の生成に十分なサイズでない場合(ステップ803:No)には、乱数データ取得部431は、処理をステップ802に進めて、更に乱数データを取得する。
 一方、乱数のサイズが鍵の生成に十分なサイズである場合(ステップ803:Yes)には、乱数データ取得部431は、配送終了要求を第1鍵共有プログラム321に送信し(ステップ804)、処理を終了する。
 この乱数データ取得処理によると、第2鍵共有プログラム324において鍵を生成するために必要な乱数を適切に取得することができる。
 なお、第1鍵共有プログラム321と第2鍵共有プログラム324とで共有するメモリ205の共有領域323の確保を第2鍵共有プログラム324が行う場合には、ステップ801を行う前に、図6のステップ601で示す処理と同様な処理を行えばよい。
 次に、第1鍵共有プログラム321と、第2鍵共有プログラム324との間で鍵を共有する鍵共有処理について説明する。
 図9は、一実施形態に係る第1鍵共有プログラム及び第2鍵共有プログラムの間の鍵共有処理のシーケンス図である。
 まず、第2鍵共有プログラム324は、第1鍵共有プログラム321へ乱数データ524の配送開始要求を送信する(ステップS11)。
 第1鍵共有プログラム321は、配送開始要求を受信すると、乱数データを共有領域323に繰り返し書き込む処理を実行する(ステップS12)。
 ここで、図9においては、乱数を、生成された順番にr、r、・・・と表し、それぞれの乱数のインデックス番号を0、1、・・・と表し、乱数データを(乱数,インデックス番号)で表している。
 図9の例では、第1鍵共有プログラム321は、乱数データ(r,0)を共有領域323に格納し、乱数データ(r,1)を共有領域323に格納し、乱数データ(r,2)を共有領域323に格納するといったように、第2鍵共有プログラム324から配信終了要求を受信するまで、乱数データを生成し、共有領域323に格納する処理を繰り返し実行する。また、第1鍵共有プログラム321は、各乱数データを、エントリとして乱数データテーブル502に追加する。なお、第1鍵共有プログラム321が乱数データを共有領域323に格納するタイミングは、OS304が第1鍵共有プログラム321にリソースを割り当てたタイミングに依存する。
 一方、第2鍵共有プログラム324は、共有領域323から乱数データを取得する処理を繰り返し実行する(ステップS13)。
 ここで、第2鍵共有プログラム324が乱数データを共有領域323から取得するタイミングは、OS304が第2鍵共有プログラム324にリソースを割り当てたタイミングに依存する。このため、例えば、図9に示すように、第1鍵共有プログラム321によって、乱数データ(r,1)が共有領域323に格納されてから、乱数データ(r,2)が共有領域323に格納されるまでの間に、第2鍵共有プログラム324による共有領域323からの乱数データの取得が行われず、第2鍵共有プログラム324では、乱数データ(r,1)を取得できないことが発生することもある。なお、本実施形態では、第2鍵共有プログラム324は、第1鍵共有プログラム321が格納した乱数データ524のすべてを取得しておく必要はない。
 この後、第2鍵共有プログラム324は、乱数データプール711の乱数データ712のサイズが鍵を生成するのに十分なサイズ以上になったときには、配送終了要求を、第1鍵共有プログラム321に送信する(ステップS14:図8のステップ804に対応)。この結果、第1鍵共有プログラム321は、乱数データの生成処理を終了する。
 次に、第2鍵共有プログラム324は、取得した複数の乱数データ712の全て又は一部を用いて、第2鍵713を生成する。なお、鍵の生成に必要なサイズが確保できるのであれば、いずれの乱数データ712を選択して使用してもよい。
 更に、第2鍵共有プログラム324は、第2鍵713の生成に用いた乱数データ712のインデックス番号を鍵生成情報525として共有領域323に書き込む(ステップS15)。この鍵生成情報525によると、どの乱数データの乱数を用いて第2鍵713を生成したのかを特定することができる。
 一方、第1鍵共有プログラム321は、共有領域323から鍵生成情報525を取得する(ステップS16)。
 この後、第1鍵共有プログラム321は、鍵生成情報525に基づいて、乱数データテーブル502を参照することにより、第2鍵共有プログラム324が第2鍵713を生成する際に用いた乱数を取得し、これらの乱数を用いて第1鍵503を生成する。なお、乱数から鍵を生成する方法は、予め第1鍵共有プログラム321と、第2鍵共有プログラム324とで共通の方法として決められている。
 上記処理によると、第1鍵共有プログラム321と第2鍵共有プログラム324とはそれぞれ同じ乱数を用いて鍵を生成することとなるので、第1鍵503と第2鍵713との値が一致することとなる。すなわち、第1鍵共有プログラム321と第2鍵共有プログラム324とは鍵の共有に成功する。このとき、第1鍵共有プログラム321は鍵生成情報525の取得を一定時間繰り返してもよい。第1鍵共有プログラムは値の異なる複数の鍵生成情報525を受信したとき、第2鍵共有プログラム324になりすますマルウェア204を検知することができる。
 なお、上記実施形態において、第1鍵共有プログラム321は、共有領域323に書き込んだ乱数データ524を、第2鍵共有プログラム324が取得したか否かを確認するようにしてもよく、この場合には、例えば、第2鍵共有プログラム324による乱数データ524の取得が行われていない場合には、次の乱数データを格納するのを遅くしたり、乱数データの格納を行う周期を長くしたりしてもよい。このようにすることにより、CPU205の処理負荷を低減することができる。
 上記実施形態において、第1鍵共有プログラム321と第2鍵共有プログラム324とがお互いに鍵の共有に成功したか否かを確認する鍵共有確認処理を更に行う鍵共有処理(第1変形例)が考えられる。
 図10は、第1変形例に係る鍵共有処理のシーケンス図である。なお、図9に示す鍵共有処理と同様な処理については、同一の符号を付し、重複する説明を省略する。
 この鍵共有処理においては、メッセージ認証符号(「MAC」という)を用いて、第1鍵共有プログラム321と第2鍵共有プログラム324とがお互いに鍵共有が成功したか否か確認するようにしている。
 第1鍵共有プログラム321は、第1鍵503を生成した後に、任意のメッセージmと第1鍵503を用いてMAC値を計算し、使用したメッセージmと、MAC値とを共有領域323に格納する(ステップS17)。なお、図10においては、メッセージmと第1鍵503を用いて計算したMAC値をMAC(m,第1鍵)と表している。
 一方、第2鍵共有プログラム324は、共有領域323からメッセージmとMAC値とを取得する(ステップS18)。次いで、第2鍵共有プログラム324は、メッセージmと第2鍵713とからMAC値(MAC(m,第2鍵))を計算し、取得したMAC値(MAC(m,第1鍵))と算出したMAC値(MAC(m,第2鍵))とが等しいか否かを確認する。ここで、MAC値(MAC(m,第1鍵))とMAC値(MAC(m,第2鍵))とが等しい場合には、第1鍵503と、第2鍵713とが同じ値であることを示しており、鍵共有が成功していることを意味している。そこで、第2鍵共有プログラム324は、取得したMAC値(MAC(m,第1鍵))と算出したMAC値(MAC(m,第2鍵))とが等しい場合には、鍵共有が成功したことを示す鍵共有成功信号を第1鍵共有プログラム321へ送信する(ステップS19)。第1鍵共有プログラム321は、鍵共有成功信号を受信したことによって、第2鍵共有プログラム324との鍵共有が成功したことを認識することができる。
 なお、上記した例では、MAC値を第1鍵共有プログラム321が生成し、第2鍵共有プログラム324が第1鍵共有プログラム321で生成されたMAC値と、自身が計算したMAC値とを比較することにより、鍵共有の成功を確認するようにしていたが、例えば、第2鍵共有プログラム324がMAC値を生成し、第1鍵共有プログラム321が、第2鍵共有プログラム324により生成されたMAC値と、自身が計算したMAC値とを比較することにより、鍵共有の成功を確認するようにしてもよい。
 また、MAC値を鍵共有で利用した共有領域323に格納するようにしていたが、MAC値を共有する共有領域として共有領域323とは別の領域としてもよい。
 次に、上記した実施形態において、端末102に第2鍵共有プログラム324になりすますマルウェア204が存在する場合における、鍵共有処理について説明する。
 図11は、一実施形態に係る、マルウェア204が存在する場合の鍵共有処理の一例を示すシーケンス図である。なお、図9に示す鍵共有処理と同様な処理については、同一の符号を付し、重複する説明を省略する。
 ここで、マルウェア204は、第1鍵共有プログラム321と第2鍵共有プログラム324との共有領域323を盗聴(参照)することができるものとする。マルウェア204は第1鍵共有プログラム321と第2鍵共有プログラムが共有した鍵(第1鍵、第2鍵)と同じ鍵を盗聴によって生成することを試みるものとする。
 マルウェア204は、共有領域323を参照することにより、乱数データを取得することができる(ステップS21)。
 ここで、端末102においては、OS304が端末102内の情報に基づいてリソースにアクセスできるプログラムを随時決定している。このため、複数のプログラムがOS304へ同一リソース(ここでは共有領域323)へのアクセス要求を出す処理を繰り返したときには、それぞれのプログラムのリソースへのアクセス順は随時異なる。このため、第1鍵共有プログラム321、第2鍵共有プログラム324が共有領域323へのアクセスを繰り返し行っている際に、共有領域323にアクセス可能なマルウェア204がこれらのプログラムと同様に共有領域323へアクセスを繰り返し行うようにした場合にも、共有領域323にアクセスできるプログラムの順序はOS304によって随時決定される。
 したがって、マルウェア204が共有領域323の乱数データ524の取得を繰り返し行った場合に、図11に示すように、第2鍵共有プログラム324が共有領域323から取得した乱数データ(R,R、…)と、マルウェア204が共有領域323から取得した乱数データ(R’,R’、…)とが、一致しない状態となる可能性が高い。このように、取得する乱数データが一致しない状態となるので、マルウェア204側で、鍵生成情報を取得した場合(ステップS22)であっても、鍵生成情報が示す乱数を適切に把握することができないので、第1鍵共有プログラム321と第2鍵共有プログラムが共有した鍵と同様の鍵を生成できる可能性は低い。よって、複数のプログラム間で安全に鍵を共有することができる。したがって、第1鍵共有プログラム321と第2鍵共有プログラムが共有した鍵を用いて暗号化されたデータがマルウェア204に漏洩してしまうリスクを軽減することができる。
 特に、乱数データ524の送受信を繰り返す回数を増やすと、マルウェア204が第2鍵共有プログラム324と同じ乱数データを盗聴することができる確率がより低くなる。すなわち、第1鍵共有プログラム321と第2鍵共有プログラムが共有した鍵と同様の鍵を生成できる確率がより低くなる。よって、複数のプログラム間でより安全に鍵を共有することができる。
 次に、上記した実施形態において、端末102に中間者攻撃を行うマルウェア204、すなわち、第1鍵共有プログラム321及び第2鍵共有プログラム324になりすますことで、各鍵共有プログラムと鍵を共有しようとするマルウェア204が存在する場合の対策について説明する。
 図12は、一実施形態に係る、第1鍵共有プログラムになりすますマルウェアが存在する場合の鍵共有処理の一例を示すシーケンス図である。なお、図9に示す鍵共有処理と同様な処理については、同一の符号を付し、重複する説明を省略する。
 本実施形態では、マルウェア204による中間者攻撃の対策として、第2鍵共有プログラム324は、第1鍵共有プログラム321へ送信する配送開始要求を、自身が第1鍵共有プログラム321として把握しているプログラム(場合によっては、マルウェア204が成りすましているプログラム)だけでなく他のプログラムも受信できるように送信するようにしている。これにより、配送開始要求が、第1鍵共有プログラム321になりすましているマルウェア204のみに送信されてしまうことを適切に防止することができる。
 これは、例えば第2鍵共有プログラム324が起動中の全てのプログラムに対して配送開始要求を送信することや、第2鍵共有プログラム324が共有領域323に繰り返し配送開始要求を書き込み第1鍵共有プログラム321が共有領域323から配送開始要求を繰り返し取得することで実現できる。起動中の全てのプログラムに配送開始要求を送信する方法として、例えば、配信開始要求をシグナルとして送信する場合には、シグナルのブロードキャストを用いることで実現できる。
 マルウェア204が、第2鍵共有プログラム324と鍵を共有するためには、マルウェア204が第1鍵共有プログラム321になりすまし、乱数データ524と鍵生成情報525とを第2鍵共有プログラム324との間でやり取りする必要がある。上記した中間者攻撃への対策を行うことで、第2鍵共有プログラム324が配送開始要求を送信した際(ステップS11,S31)に、第1鍵共有プログラム321になりすましているマルウェア204だけでなく、第1鍵共有プログラム321も配送開始要求を受信することができる。
 この場合には、マルウェア204と第1鍵共有プログラム321とは、それぞれ共有領域323に乱数データの書き込みを繰り返し行う(ステップS12,S32)。
 この際に、共有領域323には、マルウェア204により書き込まれた乱数データ(W’,W’,・・・,W’)と、第1鍵共有プログラム321により書き込まれた乱数データ(W,W,・・・,W)とのいずれかが格納された状態となる。
 ここで、端末102においては、OS304が端末102内の情報に基づいてリソースにアクセスできるプログラムを随時決定している。このため、複数のプログラムがOS304へ同一リソース(ここでは共有領域323)へのアクセス要求を出す処理を繰り返したときには、それぞれのプログラムのリソースへのアクセス順は随時異なる。このため、第1鍵共有プログラム321、第2鍵共有プログラム324が共有領域323へのアクセスを繰り返し行っている際に、共有領域323にアクセス可能なマルウェア204がこれらのプログラムと同様に共有領域323へアクセスを繰り返し行うようにした場合にも、共有領域323にアクセスできるプログラムの順序はOS304によって随時決定される。
 したがって、第2鍵共有プログラム324が、共有領域323から乱数データ(R,R,・・・,R)を取得すると、すべての乱数データが、マルウェア204が書き込んだ乱数データのみとなったり、第1鍵共有プログラム321が書き込んだ乱数データのみとなったりする可能性は低い。すなわち、第2鍵共有プログラム324が取得した乱数データ(R,R,・・・,R)には、第1鍵共有プログラム321が書き込んだ乱数データ(W,W,・・・,W)の一部と、マルウェア204が書き込んだ乱数データ(W’,W’,・・・,W’)の一部とが含まれている可能性が非常に高い。
 このような状態において、第2鍵共有プログラム324は、取得した乱数データ524を用いて第2鍵713を生成する。
 例えば、マルウェア204が、共有領域323上のデータを取得する場合においても、第1鍵共有プログラム321が共有領域323に書き込んだ全ての乱数データ(W,W,・・・,W)を取得することはできないため、共有領域323から鍵生成情報525を取得しても(ステップS33)、第2鍵共有プログラム324が生成した第2鍵713を生成することができない。すなわち、マルウェア204は第2鍵共有プログラム324との間で鍵共有ができないため、中間者攻撃を行うことができない。
 また、マルウェア204が乱数データ524を共有領域323に書き込んでいる場合、第2鍵共有プログラム324が鍵生成に用いた乱数データにはマルウェア204によって書き込まれた乱数データが含まれている可能性が高く、この場合には、第1鍵共有プログラム321は、マルウェア204によって書き込まれた乱数データの値を知らないため、第1鍵共有プログラム321と第2鍵共有プログラム324との間での鍵共有についても失敗する可能性が高い。
 そこで、第1鍵共有プログラム321と第2鍵共有プログラム324とがお互いに鍵共有が成功しているか否かを、図10を参照して説明したMACを用いて確認するようにしてもよい。この結果、鍵共有が失敗していることを確認した場合には、例えば、第1鍵共有プログム321と第2鍵共有プログラム324とは、作成した第1鍵503と、第2鍵713とを破棄し、再度、鍵共有処理を行うようにしてもよい。
 上記実施形態において、マルウェアも、共有領域から乱数データを取得し、取得した乱数データから生成した鍵生成情報を第1鍵共有プログラムへ送信し、第1鍵共有プログラムが第2鍵共有プログラムから送信された鍵生成情報を取得する前にマルウェアが送信した鍵生成情報を取得してしまうと、マルウェアが第2鍵共有プログラムになりすまして第1鍵共有プロラグムとの鍵共有に成功してしまうことがあり得る。なぜなら、マルウェアは第2鍵共有プログラムが取得した乱数データを同じ乱数データを取得する必要はないからである。
 マルウェアによる第2鍵共有プログラムへのなりすましをより効果的に防止する方法として、図9の鍵共有処理における乱数データの生成及び取得処理における処理の主体を逆にした処理を行うようにし、すなわち、第2鍵共有プログラム324側で生成した乱数データを第1鍵共有プログラム321が取得するようにし、第1鍵共有プログラム321と第2鍵共有プログラム324とは、双方が生成した乱数データ712を用いて第1鍵503と第2鍵713とを生成する鍵共有処理(第2変形例)が考えられる。
 第2変形例では、第1鍵共有プログラム321は乱数データ取得部321と鍵生成情報配送部433を含み、また、第2鍵共有プログラム324は乱数データ生成・配送部400と鍵生成情報取得部411を含む。
 図13は、第2変形例に係る鍵共有処理のシーケンス図である。なお、図11に示す鍵共有処理と同様な処理については、同一の符号を付し、重複する説明を省略する。
 第1鍵共有プログラム321は鍵生成情報を受信後、乱数データ配送開始要求を第2鍵共有プログラム324に送信する(ステップS17)。
 第2鍵共有プログラム324は、配送開始要求を受信すると、乱数データを共有領域323に繰り返し書き込む処理を実行する(ステップS18)。
 ここで、図13においては、第2鍵共有プログラムが送信した乱数を、生成された順番にr’0、r’1、・・・と表している。
 図13の例では、第2鍵共有プログラム324は、第1鍵共有プログラム321から配送終了要求を受信するまで、乱数データを生成し、共有領域323に格納する処理を繰り返し実行する。
 一方、第1鍵共有プログラム321は、共有領域323から乱数データを取得する処理を繰り返し実行する(ステップS19)。
 この後、第1鍵共有プログラム324は、鍵生成に十分なサイズの乱数データを取得したときに、配送終了要求を、第2鍵共有プログラム324に送信する(ステップS20)。この結果、第2鍵共有プログラム324は、乱数データの生成処理を終了する。
 次に、第1鍵共有プログラム321は、取得した複数の乱数データのすべてまたは一部と第1鍵503を用いて、新たな第1鍵503を生成する。このとき、第1鍵共有プログラムはステップS16後に第1鍵を生成せずに、ステップS19後に、ステップS19で取得した乱数データのすべてまたは一部と、S16で受信した鍵生成情報に紐づく乱数とを用いて第1鍵503を生成してもよい。
 更に、第1鍵共有プログラム321は、ステップS19で取得した乱数データの内、第1鍵生成に用いた乱数データに含まれるインデックス番号を鍵生成情報として共有領域323に書き込む(ステップS21)。
 一方、第2鍵共有プログラム324は、共有領域323から鍵生成情報を取得する(ステップS22)。
 この後、第2鍵共有プログラム324は、鍵生成情報に基づいて、第1鍵共有プログラム321が第1鍵を生成する際に用いた乱数を取得し、これらの乱数と第2鍵713から新たな第2鍵を生成する。このとき、第2鍵共有プログラムはステップS14後に第2鍵を生成せずに、ステップS22後に、ステップS13で取得した乱数データのすべてまたは一部と、ステップS22で受信した鍵生成情報に紐づく乱数とを用いて第2鍵713を生成してもよい。
 図13では、ステップS11からステップS16を行った後にステップS17からステップS22を行っているが、ステップS17からステップS22を行った後にステップS11からステップS16を行ってもよいし、ステップS11からステップS16とステップS17からステップS22を並行して行ってもよい。
 上記第2変形例において、マルウェアが第2鍵共有プログラムになりすまして第1鍵共有プロラグムとの鍵共有に成功するためには、ステップS18でマルウェアが乱数データを共有領域323に繰り返し書き込み、第1鍵共有プログラムがステップS19で取得する乱数データすべてがマルウェアによって書き込まれたものである必要がある。OS304が端末102内の情報に基づいて共有領域にアクセスできるプログラムをランダムに決定しており、プログラムが共有領域にアクセスするタイミングを決定することはできない。このため、マルウェアと第2鍵共有プログラムが共有領域323に乱数データを繰り返し書き込んでいるとき、第1鍵共有プログラムが共有領域323から取得した乱数データが全てマルウェアによって書き込まれたものである可能性は低い。このため、第2変形例では、第1鍵共有プログラム、第2鍵共有プログラムは、第2共有プログラムになりすますマルウェアが端末102内で動作していても、安全に鍵共有を行うことができる。
 次に、第3変形例に係る鍵共有処理について説明する。
 ここで、エントロピー発生器302により生成されるエントロピー源によりseed501を生成する方法について着目する。
 例えば、seed501は、乱数生成のための十分なエントロピーを有している必要があり、エントロピー発生器302により生成されるエントロピー源が乱数生成のための十分なエントロピーを有しているときは、エントロピー源をそのままseed501として用いることができる。しかし、エントロピー源が十分なエントロピーを有していないときは、エントロピー発生器302から繰り返しエントロピー源を収集し、収集したエントロピー源を用いてseed501を生成する必要がある。
 ここで、第1鍵共有プログラム321は、起動後にエントロピー源の収集を行うこととなるが、一般的にエントロピー発生器302からエントロピー源を取得するには時間がかかるため、エントロピー源が乱数の生成のための十分なエントロピーを有していない場合、鍵共有にかかる時間が増加する。
 そこで、第3変形例においては、エントロピー源が乱数生成のための十分なエントロピーを有していない場合に第1鍵共有プログラム321が高速にseed501を生成する方法として、エントロピー発生器302からエントロピー源を収集し配送するプログラム(「エントロピー源取得プログラム1400」という)を、第1鍵共有プログラム321を起動する前、例えば、端末102を起動する際に、起動しておき、第1鍵共有プログラム321へ大きなエントロピーサイズをもつ値(以下「seed生成情報」という)を配送し、第1鍵共有プログラム321がseed生成情報を用いてseed501を生成するようにしている。
 図14は、第3変形例に係る鍵共有処理のシーケンス図である。なお、図9に示す鍵共有処理と同様な処理については、同一の符号を付し、重複する説明を省略する。
 例えば、端末102が起動された直後に、エントロピー源取得プログラム1400(厳密には、エントロピー源取得プログラム1400を実行するCPU206)は、エントロピー発生器302からエントロピー源(e,e,・・・e)を取得する(ステップS41)。
 その後、第1鍵共有プログラム321が起動されると、第1鍵共有プログラム321は、エントロピー源取得プログラム1400に、seedの配送の開始を要求するseed配送開始要求を送信する(ステップS42)。
 エントロピー源取得プログラム1400は、第1鍵共有プログラム321からseed配送開始要求を受信すると、取得したエントロピー源を用いて、高いエントロピーを有するseedを生成するための値(「seed生成情報」という。s,s,・・・)を生成する。次いで、エントロピー源取得プログラム1400は、生成したseed生成情報(s,s,・・・)をエントロピー源取得プログラム1400と第1鍵共有プログラム321との共有領域(例えば、第1鍵共有プログラム321と第2鍵共有プログラム324との共有領域323)に書き込む処理を繰り返し行う(ステップS43)。
 ここで、seed生成情報として、例えば、エントロピー発生器302の一例としての疑似乱数生成器で生成されたエントロピー源により生成した疑似乱数であってもよい。また、エントロピー源取得プログラム1400と第1鍵共有プログラム321との共有領域は、第1鍵共有プログラム321と第2鍵共有プログラム324とが鍵共有のために用いる共有領域323と異なる領域であってもよい。
 一方、第1鍵共有プログラム321は、エントロピー源取得プログラム1400との共有領域323からseed生成情報の収集を繰り返す(ステップS44)。なお、第1鍵共有プログラム321は、エントロピー源取得プログラム1400が共有領域323に書き込んだすべてのseed生成情報を取得しなくてもよい。
 次いで、第1鍵共有プログラム321は、seed501を生成するための十分なエントロピーサイズを有するseed生成情報を収集した後、エントロピー源取得プログラム1400へseedの配送の終了を要求するseed配送終了要求を送信する(ステップS45)。この結果、seed配送終了要求を受信すると、エントロピー源取得プログラム1400は、seed生成情報の共有領域323への書き込みを終了する。
 この後、第1鍵共有プログラム321の乱数生成部402は、seed生成情報からseed501を生成し、第2鍵共有プログラム324と鍵共有を行う。
 上記処理において、エントロピー源取得プログラム1400により共有領域323に書き込まれるseed生成情報が有するエントロピーの大きさは、エントロピー源が有するエントロピーの大きさよりも大幅に大きい。したがって、上記処理によると、seed501を生成するためにエントロピーを有する値を収集する回数を少なくすることができる。このため、第1鍵共有プログラム321は、seed501を高速に生成して利用することができる。
 次に第4変形例に係る鍵共有処理について説明する。
 上記実施形態では、マルウェア204が多くの数のプログラムから構成され、これらプログラムが連携して動作する場合、マルウェアは第1鍵共有プログラム321や第2鍵共有プログラム324よりも共有領域323にアクセスできる回数が増えるため、鍵共有の安全性が低下する。これに対して、例えば次のようにしてもよい。第1鍵共有プログラムは定期的に共有領域323へのアクセスを試み、実際にアクセスに成功した間隔を測定する。これは例えばCPU206がもつタイマで測定してもよい。端末102内で動作するプログラムが多いほどこのアクセスに成功した間隔は大きくなるため、アクセス間隔が増加したときに第1鍵共有プログラム321はマルウェア204の存在を検知することができる。
 このマルウェア検知機能は第2鍵共有プログラムがもってもよいし、新たなプログラム(検知プログラム)がマルウェア検知機能をもってもよい。このとき、検知プログラムはマルウェア204を検知時に第1鍵共有プログラム321、第2鍵共有プログラム324にマルウェアを検知したことを知らせる信号を送ることで、第1鍵共有プログラム321、第2鍵共有プログラム324はマルウェア204を検知することができる。
 次に第5変形例に係る鍵共有処理について説明する。
 上記実施形態では、汎用レジスタ303内の乱数データテーブル711について、第1鍵共有プログラム321が送信した乱数データ524の数が増加すると乱数データテーブル711に格納する乱数データが増加するため、汎用レジスタ303の使用率が増加してしまう。これに対して、例えば、次のようにしてもよい。図6のステップ603において、乱数生成部402は、疑似乱数生成器を用いて、インデックス生成部403で生成したインデックス情報とseed501とから乱数を生成し、ステップ605の処理を行わないようにする。ここで、疑似乱数生成器は、同一のインデックス情報とseed501とを入力すると同一の乱数を生成できるものとする。
 そして、第1鍵生成部412は、疑似乱数生成器を用いて、鍵生成情報525の各インデックス情報と、seed501とから乱数を生成し、これらの乱数を用いて第1鍵503を生成するようにしてもよい。
 このようにすると、汎用レジスタ303に乱数データテーブル711をもたなくてよいため、汎用レジスタ303の使用率を下げることができて、短い時間での鍵共有が可能になる。
 次に第6変形例に係る鍵共有処理について説明する。
 上記実施形態では、乱数データ取得部431が汎用レジスタ303内の乱数データプール711に乱数データを収集が終了した後、第2鍵生成部432が収集した乱数データ712から第2鍵を生成していたが、収集する乱数データの数の増加に比例して汎用レジスタ303の使用率が増加してしまう。これに対して、例えば次のようにしてもよい。図8のステップ802において、乱数データ取得部431は共有領域上の乱数データ524を取得した後、この乱数データに含まれる乱数とこれまで取得した乱数から生成した第2鍵713から、新たな第2鍵713を生成し、乱数データに含まれるインデックス情報を新たに鍵生成情報714に加える。続いて図8のステップ803において、鍵生成情報714に含まれるインデックス情報の数から鍵生成に十分なサイズの乱数を取得したか判別を行う。これにより、乱数データプール711が不要になり、汎用レジスタ303の使用率を下げることができる。
 また、上記実施形態と第1~第6変形例は、二つ以上を組み合わせることが可能である。
 例えば、上記実施形態の第2変形例に第5変形例、第6変形例を組み合わせることで、汎用レジスタ303の使用率を下げつつなりすましや盗聴を行うマルウェアから安全に鍵共有を行うことができる。この組み合わせ方法として、例えば第1鍵共有プログラム321は第2鍵共有プログラム324が配送した鍵生成情報525を用いて一時鍵1を生成、第2鍵共有プログラム324が配送した乱数データ524を用いて逐次的に一時鍵2を生成し、一時鍵1と一時鍵2から第1鍵を生成し、第2鍵共有プログラム324はこの主体を逆にした処理を行い第2鍵を生成してもよい。
 次に、端末102にすでにインストールされている2つのプログラム(例えば、センサ用プログラム211と、認証プログラム212)に本発明の機能を追加する他の実施形態について詳細に説明する。
 図15は、本実施形態に係る第1鍵共有プログラム、及び第2鍵共有プログラムにより実現される機能構成図の一例である。
 第1データ秘匿処理プログラム1500は、例えば、センサ用プログラム211の処理を行う第1プログラム処理部1501と、第1鍵共有プログラム321を含む。
 第2データ秘匿処理プログラム1510は、例えば、認証プログラム212の処理を行う2プログラム処理部1511と、第2鍵共有プログラム324を含む。
 インストール済みの第1プログラム処理部1501は、第2プログラム処理部1511へデータ(例えば、センサデータ203)を送る際は、秘匿処理が必要なデータを第1データ秘匿処理部420へ渡す。
 第1データ秘匿処理部420は、第1プログラム処理部1501から取得したデータに対してて、上記実施形態で説明した処理により共有した鍵を用いて秘匿処理を行う。
 第1データ秘匿処理部420は、例えば共有領域323を用いて、第2データ秘匿処理部440へ、秘匿処理されたデータを渡す。
 第2データ秘匿処理部440は、取得した秘匿処理されたデータに対して、上記実施形態で説明した処理により共有した鍵を用いて元のデータを復元し、第2プログラム処理部1511へ渡す。
 第2プログラム処理部1511から第1プログラム処理部1501へデータを送る際は、上記と同様の処理を、主体を逆にして行えばよい。
 本実施形態においても、上記第1~第6変形例を一つ以上組み合わせて適用することが可能である。また、上記2つの実施形態を組み合わせることも可能である。
 以上の処理により、いずれか一方または両方がすでにインストールされている2つのプログラム間においても、安全なデータのやり取りが可能になる。
 また、上記各実施形態では、第1鍵共有プログラム321(または第1データ秘匿処理プログラム1500)と第2鍵共有プログラム324(または第2データ秘匿処理プログラム1510)とを同一の端末102内に配置して実行するようにしていた。しかし、これに限られず、例えば、ネットワーク301を介して接続されている2つの端末を含む情報処理システムにおいて、第1鍵共有プログラム321(または第1データ秘匿処理プログラム1500)と、第2鍵共有プログラム324(または第2データ秘匿処理プログラム1510)とを別の端末に配置して実行するようにしてもよい。
 この場合、共有領域323は、いずれの端末のメモリに備えるようにしてもよい。例えば、第2鍵共有プログラム324(または第2データ秘匿処理プログラム1510)を実行する端末のメモリに共有領域を備えるようにした場合には、第1鍵共有プログラム321は、ネットワークを介して、乱数データ524を共有領域323に格納し、また、共有領域323から鍵生成情報を取得するようにすればよい。
 上記開示は、代表的実施形態に関して記述されているが、当業者は、開示される主題の趣旨や範囲を逸脱することなく、形式及び細部において、様々な変更や修正が可能であることを理解するであろう。
 また、上記実施形態において、CPUが行っていた処理の一部又は全部を、専用のハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は非一時的な記憶メディア(例えば可搬型の記憶メディア)であってもよい。

Claims (12)

  1.  データとプログラムとを格納する主記憶装置と、前記主記憶装置に接続され、前記プログラムを実行するプロセッサと、を備える情報処理システムであって、
     所定の割当基準に基づいて、実行する前記プログラムに前記プロセッサ及び前記主記憶装置を含むリソースの割り当てを行うためのOS(オペレーティングシステム)と、
     鍵を共有して処理を実行するための第1鍵共有プログラム及び第2鍵共有プログラムを備え、
     前記プロセッサは、前記OSを実行して、
     前記第1鍵共有プログラムと前記第2鍵共有プログラムとで処理に共有可能な共有領域とを設定し、
     前記第1鍵共有プログラムにリソースを割り当て、
     前記第2鍵共有プログラムにリソースを割り当て、
     前記プロセッサは、前記OSを実行して、
     前記第1鍵共有プログラムを実行することにより、前記第2鍵共有プログラムが第2鍵を生成するための乱数を特定可能な乱数データの生成と、前記共有領域への前記乱数データの格納と、を繰り返し、
     前記プロセッサは、前記OSを実行して、
     前記第2鍵共有プログラムを実行することにより、前記共有領域に格納された乱数データを取得することを繰り返し、
     取得した複数の前記乱数データに基づいて前記第2鍵を生成し、
     前記第2鍵を生成するために使用した前記取得した複数の乱数データを特定可能な鍵生成情報を生成し、
     前記鍵生成情報を前記共有領域に格納し、
     前記プロセッサは、前記OSを実行して、
     前記第1鍵共有プログラムを実行することにより、前記共有領域に格納された前記鍵生成情報に基づいて第1鍵を生成する
    情報処理システム。
  2.  前記OSを実行することによるリソースの割り当ての処理は、前記リソースが各プログラムに対して一定の順序で割り当てられる処理ではない
    請求項1に記載の情報処理システム。
  3.  前記プロセッサは、複数の乱数データの中から鍵の生成に使用する1以上の乱数データを選択し、前記第2鍵の生成を行う
    請求項1に記載の情報処理システム。
  4.  1つの前記乱数データは、前記第2鍵の生成に必要なデータサイズよりも小さいデータであり、
     前記プロセッサは、前記第2鍵の生成に必要なデータサイズ以上となる複数の乱数データに基づいて前記鍵を生成する
    請求項3に記載の情報処理システム。
  5.  前記主記憶装置は、
     前記OS用のカーネル領域を含み、
     前記プロセッサは、データを記憶するレジスタを含み、
     前記プロセッサは、実行しているプログラムとは別のプログラムへのリソースの割り当てがあった場合に、前記レジスタに格納されているデータを、前記カーネル領域に退避格納する
    請求項1に記載の情報処理システム。
  6.  前記プロセッサは、
      前記第1鍵共有プログラムを実行することにより生成した前記第1鍵と、前記第2鍵共有プログラムを実行することにより生成した前記第2鍵とが同一であるか否かを確認する
    請求項1に記載の情報処理システム。
  7.  前記プロセッサは、
      前記第1鍵共有プログラムを実行することにより生成した前記第1鍵と、所定のメッセージとに基づいて生成される第1メッセージ認証符号と、前記第2鍵共有プログラムを実行することにより生成した前記第2鍵と前記所定のメッセージとに基づいて生成される第2メッセージ認証符号とが同一であるか否かを確認する
    請求項6に記載の情報処理システム。
  8.  前記プロセッサは、
     前記第1鍵共有プログラムを実行することにより生成した前記第1鍵と、前記第2鍵共有プログラムを実行することにより生成した前記第2鍵とが同一でない場合に、前記第1鍵共有プログラムと、前記第2鍵共有プログラムとにより鍵を生成する処理を最初から実行する
    請求項6に記載の情報処理システム。
  9.  前記プロセッサは、
     前記OSを実行して、前記第1鍵共有プログラムにリソースを割り当て、前記第1鍵を用いて、前記第2鍵共有プログラムとの間で前記主記憶装置を介してやり取りをするデータの秘匿処理を行い、
     前記プロセッサは、
     前記OSを実行して、前記第2鍵共有プログラムにリソースを割り当て、前記第2鍵を用いて、前記第1鍵共有プログラムとの間でやり取りをするデータの秘匿処理を行う
    請求項1に記載の情報処理システム。
  10.  前記情報処理システムは、
     単一の情報処理装置により実現されている
    請求項1に記載の情報処理システム。
  11.  データとプログラムとを格納する主記憶装置と、前記主記憶装置に接続され、前記プログラムを実行するプロセッサとを備える情報処理システムによるプログラム間鍵共有方法であって、
     所定の割当基準に基づいて、実行する前記プログラムに前記プロセッサ及び前記主記憶装置を含むリソースの割り当てを行うためのOS(オペレーティングシステム)と、
     鍵を共有して処理を実行するための第1鍵共有プログラム及び第2鍵共有プログラムを備え、
     前記OSの実行により、
     前記第1鍵共有プログラムと前記第2鍵共有プログラムとで処理に共有可能な共有領域とを設定し、
     前記第1鍵共有プログラムにリソースを割り当て、
     前記第2鍵共有プログラムにリソースを割り当て、
     前記OSの実行により、
     前記第1鍵共有プログラムを実行することにより、前記第2鍵共有プログラムが第2鍵を生成するための乱数を特定可能な乱数データの生成と、前記共有領域への前記乱数データの格納と、を繰り返し、
     前記OSの実行により、
     前記第2鍵共有プログラムを実行することにより、前記共有領域に格納された乱数データを取得することを繰り返し、
     取得した複数の前記乱数データに基づいて前記第2鍵を生成し、
     前記第2鍵を生成するために使用した前記取得した複数の乱数データを特定可能な鍵生成情報を生成し、
     前記鍵生成情報を前記共有領域に格納し、
     前記OSの実行により、
     前記第1鍵共有プログラムを実行することにより、前記共有領域に格納された前記鍵生成情報に基づいて第1鍵を生成する
    プログラム間鍵共有方法。
  12.  データとプログラムとを格納する主記憶装置と、前記主記憶装置に接続され、前記プログラムを実行するプロセッサとを備えるコンピュータに実行させるプログラム間鍵共有プログラムであって、
     前記プログラム間鍵共有プログラムは、鍵を共有して処理を実行するための第1鍵共有プログラム及び第2鍵共有プログラムを含み、
     前記第1鍵共有プログラムは、
     前記コンピュータに、
      OSによりリソースが割り当てられると、前記第2鍵共有プログラムが第2鍵を生成するための乱数を特定可能な乱数データの生成と、前記主記憶装置の共有領域への前記乱数データの格納と、を繰り返し実行させ、
     前記第2鍵共有プログラムは、
     前記コンピュータに、
      前記OSによりリソースが割り当てられると、前記共有領域に格納された乱数データを取得することを繰り返し実行させ、
     取得した複数の前記乱数データに基づいて前記第2鍵を生成させ、
     前記第2鍵を生成するために使用した前記取得した複数の乱数データを特定可能な鍵生成情報を生成させ、
     前記鍵生成情報を前記共有領域に格納させ、
     前記第1鍵共有プログラムは、
     前記コンピュータに、
      前記OSの実行によりリソースが割り当てられると、前記共有領域に格納された前記鍵生成情報に基づいて第1鍵を生成させる
    プログラム間鍵共有プログラム。

     
PCT/JP2020/045295 2019-12-09 2020-12-04 情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム WO2021117638A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021563925A JP7304430B2 (ja) 2019-12-09 2020-12-04 情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019222400 2019-12-09
JP2019-222400 2019-12-09

Publications (1)

Publication Number Publication Date
WO2021117638A1 true WO2021117638A1 (ja) 2021-06-17

Family

ID=76330340

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/045295 WO2021117638A1 (ja) 2019-12-09 2020-12-04 情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム

Country Status (2)

Country Link
JP (1) JP7304430B2 (ja)
WO (1) WO2021117638A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011101972A1 (ja) * 2010-02-18 2011-08-25 株式会社東芝 プログラム
US20180157433A1 (en) * 2016-12-07 2018-06-07 Vmware, Inc. Inter-application secure data sharing workflow

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4631974B2 (ja) * 2009-01-08 2011-02-16 ソニー株式会社 情報処理装置、情報処理方法、プログラム、および情報処理システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011101972A1 (ja) * 2010-02-18 2011-08-25 株式会社東芝 プログラム
US20180157433A1 (en) * 2016-12-07 2018-06-07 Vmware, Inc. Inter-application secure data sharing workflow

Also Published As

Publication number Publication date
JPWO2021117638A1 (ja) 2021-06-17
JP7304430B2 (ja) 2023-07-06

Similar Documents

Publication Publication Date Title
US10796009B2 (en) Security engine for a secure operating environment
EP2467793B1 (en) Auditing a device
CN110637301B (zh) 减少虚拟机中敏感数据的泄密
KR20180093038A (ko) 신뢰 실행 환경을 갖는 모바일 디바이스
CN109858265A (zh) 一种加密方法、装置及相关设备
EP3270319B1 (en) Method and apparatus for generating dynamic security module
US20230125083A1 (en) Blockchain data access authorization method, apparatus, and device
CN113572715A (zh) 基于区块链的数据传输方法和系统
US9245118B2 (en) Methods for identifying key logging activities with a portable device and devices thereof
WO2014198340A1 (en) Method for performing a secure boot of a computing system and computing system
CN115495746B (zh) 一种基于eBPF的安全防护方法、系统及电子设备
CN110263532B (zh) 可信计算方法、设备及系统
WO2021117638A1 (ja) 情報処理システム、プログラム間鍵共有方法、及びプログラム間鍵共有プログラム
CN112363800B (zh) 一种网卡的内存访问方法、安全处理器、网卡及电子设备
JP7295761B2 (ja) 情報処理装置
WO2020226054A1 (ja) 情報処理方法、情報処理装置及び記憶媒体
US9058484B2 (en) Method for checking whether program instructions have been executed by a portable end device
WO2021117524A1 (ja) 実行ファイル生成装置、方法、およびプログラムが記録された非一時的記憶媒体
CN118094524A (zh) 基于操作系统管理多用户使用加密卡资源的方法及装置

Legal Events

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

Ref document number: 20900481

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021563925

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20900481

Country of ref document: EP

Kind code of ref document: A1