WO2017033843A1 - 検索可能暗号処理システム - Google Patents
検索可能暗号処理システム Download PDFInfo
- Publication number
- WO2017033843A1 WO2017033843A1 PCT/JP2016/074170 JP2016074170W WO2017033843A1 WO 2017033843 A1 WO2017033843 A1 WO 2017033843A1 JP 2016074170 W JP2016074170 W JP 2016074170W WO 2017033843 A1 WO2017033843 A1 WO 2017033843A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- key
- secret
- data
- search
- unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Definitions
- the present invention relates to a searchable cryptographic processing system.
- the operation management form called cloud which uses information systems provided by other organizations instead of maintaining the information systems by the own organization, has been spotlighted. ing.
- the cloud because the organization that manages the information system is different from the organization that uses the information system, measures to prevent information leakage, investigation of the cause after the occurrence of an accident, measures to prevent recurrence, etc. Hard to stand. Therefore, it is necessary to ensure the confidentiality of data in advance by using encryption technology as a preventive measure against illegal data leakage.
- Patent Document 1 describes a search processing method for searching entrusted encrypted data without decrypting the encrypted data in accordance with a client request.
- This search processing method is a probabilistic encryption method in which plaintext and ciphertext have a complicated correspondence of 1 to m, which is safer than deterministic encryption that has a simple one-to-one correspondence.
- a technique for safely searching data stored in a server while preventing information leakage to a server administrator is disclosed.
- the ciphertext held by the management server cannot be changed directly, so the user must pass a secret key to the management server.
- the secret key is passed to the management server, the plaintext information is exposed and the confidentiality of the encrypted data cannot be maintained. Therefore, to change the ciphertext without decryption, the user downloads all encrypted data on the management server, decrypts all encrypted data, and re-encrypts with a new secret key. It was necessary to re-upload to the management server. This flow has a drawback that the load on the user side is large because the amount of calculation for encryption / decryption is proportional to the amount of encrypted data deposited in the server.
- the present invention has been made in view of the above, and in the server / client model, encrypted data corresponding to a certain secret key while maintaining the confidentiality of the encrypted data without applying a load on the user side. It is an object of the present invention to provide a searchable cryptographic processing system capable of converting a password into encrypted data corresponding to another secret key.
- a searchable cryptographic processing system is a searchable cryptographic processing system in which a registration client and a management server are connected via a network.
- a concealment encrypted with the first secret key based on the difference between the first secret key for encrypting the plaintext data and the second secret key for newly encrypting the plaintext data.
- a searchable cryptographic processing system comprising: a registered client processing unit that generates a differential key mask for updating data with the second secret key.
- encrypted data corresponding to one secret key is encrypted to another secret key while maintaining the confidentiality of the encrypted data without imposing a load on the user side. Can be converted into digitized data.
- the secret data created by the registration client 100 is registered in the management server 300, and the search client 200 It shows that the management server 300 is requested to search for confidential data and the confidential data acquired from the management server 300 can be decrypted.
- a key stream is generated independently from each of the two types of private keys, a new private key and an old private key held by the registered client 100, using each private key.
- the difference key mask which is the difference between the two types of key streams, indicates that the management server 300 can update the secret data corresponding to the new secret key.
- FIG. 1 is a schematic diagram of a search processing system according to this embodiment to which the searchable cryptographic processing system according to the present invention is applied.
- the search processing system includes a registration client 100, a search client 200, and a management server 300, each configured to be able to send and receive information via a network 400.
- the registration client 100 in the present embodiment functions as a data registration transmitting / receiving device that transmits the concealed data to the management server 300.
- the search client 200 functions as a search transmission / reception device that transmits a concealed keyword to the management server 300 and receives a search result.
- the management server 300 stores the concealed data in the database 341 and functions as a transmission / reception device that searches the data in the database 341.
- the registration client 100 is a transmission / reception device for requesting conversion of the concealed data corresponding to one secret key to the concealed data corresponding to another secret key, managed by the management server 300 Function as.
- FIG. 3 is a functional schematic diagram of the registration client 100.
- the registration client 100 includes a control unit 110, a storage unit 120, an input unit 101, an output unit 102, and a communication unit 103.
- the storage unit 120 includes a data storage unit 130, a key storage unit 150, and a temporary storage unit 180.
- the data storage unit 130 stores information for specifying a transmission sentence, which is data to be transmitted to the management server 300. In addition, the data storage unit 130 stores information for specifying the received plaintext data 131 via the input unit 101.
- the data storage unit 130 also stores an encryption context 140 in which information related to encryption is collected.
- the encryption context 140 stores an encryption algorithm 141, an initial vector 136, and a search tag length 135 used when creating secret data. If the data from which the secret data is created is fixed at 128 bits or less, the initial vector 136 may not be used. In this case, the initial vector need not be stored, and the processing related to the initial vector is omitted in all the processes in the registration client 100.
- the key storage unit 150 stores information for specifying the fixed secret key 160 and the update secret key 170 that the registered client 100 should secretly manage from the viewpoint of security.
- the fixed secret key 160 is a secret key that is continuously used even after the secret data update process disclosed in the present embodiment, and information that specifies the random number mask generation key 151 and the data encryption key 152 is stored. Is done.
- the update secret key 170 is a secret key that changes the secret key used before and after the secret data update process disclosed in the present embodiment, and is information that identifies the key mask generation key 171 and the key mask nonce 172 Is memorized.
- the update-type secret key 170 includes a first secret key for encrypting plaintext data with a conventional old secret key and a second secret key for encrypting plaintext data with a new secret key. .
- Temporary storage unit 180 stores information necessary for processing in control unit 110.
- the control unit 110 includes an overall processing unit 111, an encryption unit 112, a pseudo random number generation unit 114, an irreversible conversion unit 115, a homomorphic function unit 116, a basic calculation unit 117, and a key generation unit 118. However, if the secret key generation process is not performed, the key generation unit 118 does not need to hold the key.
- the overall processing unit 111 controls all processing in the registered client 100. For example, the overall processing unit 111 performs processing for storing information received through the input unit 101 as plain text data 131 in the data storage unit 130.
- the overall processing unit 111 performs processing for displaying the plaintext data 131 on the output unit 102. Further, the overall processing unit 111 reads the plaintext data 131 stored in the data storage unit 130, respectively, the encryption unit 112, the pseudorandom number generation unit 114, the irreversible conversion unit 115, the homomorphic function unit 116, the basic A process of storing the data input to and output from the arithmetic unit 117 as confidential data in the data storage unit 130 is performed.
- the overall processing unit 111 performs processing for transmitting the confidential data to the management server 300 via the communication unit 103.
- the overall processing unit 111 performs processing for storing the confidential data received from the management server 300 via the communication unit 103 in the temporary storage unit 180 and displaying it in the output unit 102.
- the encryption unit 112 performs a process of outputting data obtained by encrypting input data.
- the plain text data 131 and the data encryption key 152 are input from the overall processing unit 111, and the process of outputting the encrypted data is performed.
- the encryption unit 112 is realized by implementing a standard encryption algorithm.
- the pseudorandom number generator 114 performs a process of outputting a pseudorandom number.
- the pseudo random number generation unit 114 is realized by implementing a standard pseudo random number generation algorithm that requires a secret key and an initial vector.
- the pseudo random number generation unit 114 is realized by hardware that outputs random numbers based on physical phenomena such as temperature, time, and electric energy.
- the pseudo random number generation unit 114 uses the random number mask generation key 151 and the initial vector 136 input from the overall processing unit 111, and outputs a pseudo random number.
- the irreversible conversion unit 115 performs a process of outputting data obtained by compressing input data.
- the irreversible conversion unit 115 performs a process of converting the data input from the overall processing unit 111 into another data having a fixed length and outputting it.
- the irreversible conversion unit 115 can realize the irreversible conversion unit 115 that converts input data of arbitrary length into 256-bit data by implementing a SHA-256 function that is a standard cryptographic hash function algorithm.
- the homomorphic function unit 116 performs a process of outputting the output result of the function having homomorphism as data to the input data.
- a function having a homomorphism is a function F, an input variable x, and an input variable y.
- the basic operation unit 117 performs processing related to basic arithmetic operations such as addition, subtraction, comparison calculation, AND, OR, and XOR.
- the basic operation unit 117 outputs, as data, an XOR operation that is an exclusive OR for each bit of the two pieces of data input from the overall processing unit 111, or a verification result that the comparison operation is established or not. Process.
- the key generation unit 118 is used to generate a fixed secret key and an update secret key used for encryption algorithm and random number generation.
- the key generation unit 118 is realized by implementing a standard key generation algorithm.
- the pseudo random number generation unit 114 may be used to generate a fixed secret key or an update secret key.
- the registration client 100 shown above includes, for example, a CPU (Central Processing Unit) 601, a memory 602, and an external storage device 603 such as an HDD (Hard Disk Drive) as shown in FIG. 6 (schematic diagram of a computer).
- a reading device 607 that reads and writes information from / to a portable storage medium 608 such as a CD (Compact Disk) or a DVD (Digital Versatile Disk), an input device 606 such as a keyboard or a mouse, and an output device 605 such as a display
- a general computer 600 including a communication device 604 such as a NIC (Network Interface Card) for connecting to a communication network, and an internal communication line (referred to as a system bus) 609 such as a system bus for connecting them. realizable.
- the storage unit 120 can be realized by the CPU 601 using the memory 602 or the external storage device 603, and the control unit 110 and each processing unit included in the control unit 110 are stored in the external storage device 603. It can be realized by loading a predetermined program into the memory 602 and executed by the CPU 601.
- the input unit 101 can be realized by the CPU 601 using the input device 606.
- the output unit 102 can be realized by the CPU 601.
- the communication unit 103 can be realized by using the communication device 604 by the CPU 601.
- This predetermined program is stored (downloaded) in the external storage device 603 from the storage medium 608 via the reading device 607 or from the network via the communication device 604, and then loaded onto the memory 602 and loaded onto the CPU 601. May also be executed. Alternatively, the program may be directly loaded on the memory 602 from the storage medium 608 via the reading device 607 or from the network via the communication device 604 and executed by the CPU 601.
- FIG. 4 is a functional schematic diagram of the search client 200.
- the search client 200 includes a control unit 210, a storage unit 220, an input unit 201, an output unit 202, and a communication unit 203.
- the storage unit 220 includes a data storage unit 230, a key storage unit 250, and a temporary storage unit 280.
- the data storage unit 230 stores information that specifies data to be transmitted to the management server 300 and information that specifies data received via the communication unit 203.
- the data storage unit 230 stores information that specifies the plaintext keyword 241 received by the search client 200 via the input unit 201.
- the data storage unit 230 stores information specifying data received from the management server 300 via the communication unit 203 as confidential data, and stores data obtained by releasing the concealment from the confidential data as plain text data.
- the data storage unit 230 stores an encryption context 240 in which information related to encryption is collected.
- the encryption context 240 stores an encryption algorithm 244, an initial vector 236, and a designated block 237 that are used for a secret keyword, the secret data is released.
- the initial vector 136 may not be used. In this case, the initial vector need not be stored, and the process related to the initial vector is omitted in all the processes in the search client 200.
- the key storage unit 250 stores information that identifies the fixed secret key 260 and the update secret key 270 that the search client 200 should secretly manage from the viewpoint of security.
- the fixed secret key 260 is a secret key that is continuously used even after the secret data update process disclosed in the present embodiment, and includes a random number mask generation key 251, a data encryption key 252, and a data decryption key 253. Information to be identified is stored.
- the update secret key 270 is a secret key that changes the secret key used before and after the secret data update processing disclosed in the present embodiment.
- the key mask generation key 271, the key mask nonce 272, and the update search key 273 Information for specifying is stored.
- the updated secret key 270 includes a first search secret key for encrypting a plaintext keyword with a conventional old secret key and a second search secret for encrypting a plaintext keyword with a new secret key. There is a key.
- a first search key mask generation key for generating the first search secret key and a nonce for the first search key mask; and a second for generating the second secret key.
- Temporary storage unit 280 stores information necessary for processing in control unit 210.
- the control unit 210 includes an overall processing unit 211, an encryption unit 212, a decryption unit 213, a pseudo-random number generation unit 214, an irreversible conversion unit 215, a homomorphic function unit 216, a basic calculation unit 217, and a key generation. Part 218. However, if the secret key generation process is not performed, the key generation unit 218 may not hold the key.
- the overall processing unit 211 controls all processing in the search client 200. For example, the overall processing unit 211 performs processing for storing information received through the input unit 201 as the plaintext keyword 241 in the data storage unit 230.
- the overall processing unit 211 performs processing for displaying the plaintext keyword 241 on the output unit 202.
- the overall processing unit 211 reads the plaintext keyword 241 stored in the data storage unit 230, respectively, the encryption unit 212, the pseudorandom number generation unit 214, the irreversible conversion unit 215, the homomorphic function unit 216, the basic function A process of storing the data input to and output from the calculation unit 217 in the data storage unit 230 as a secret keyword is performed.
- the overall processing unit 211 performs a process of transmitting the secret keyword to the management server 300 via the communication unit 203.
- the overall processing unit 211 performs processing for receiving confidential data and plaintext data from the management server 300 via the communication unit 203.
- the overall processing unit 211 performs processing for storing the received confidential data and plaintext data in the data storage unit 230 via the communication unit 203.
- the overall processing unit 211 reads the confidential data stored in the data storage unit 230, and inputs them to the decoding unit 213, the irreversible conversion unit 215, the homomorphic function unit 216, and the basic calculation unit 217, respectively.
- the output data is stored in the data storage unit 230 as plain text data.
- the overall processing unit 211 performs processing for displaying plain text data on the output unit 202. Furthermore, the overall processing unit 211 performs processing for storing data received from the management server 300 via the communication unit 203 in the temporary storage unit 280 and processing for displaying the data on the output unit 202.
- the encryption unit 212 performs a process of outputting data obtained by encrypting input data.
- the encryption unit 212 receives the plaintext keyword 241 and the data encryption key 252 from the overall processing unit 211, and performs a process of outputting the encrypted plaintext keyword.
- the decryption unit 213 performs a process of decrypting and outputting the input encrypted data.
- the decryption unit 213 receives the encrypted data and the data decryption key 253 from the overall processing unit 211, and performs a process of outputting plaintext data after decryption.
- the pseudo random number generation unit 214 performs a process of outputting a pseudo random number.
- the pseudo random number generation unit 214 is realized by mounting a standard pseudo random number generation algorithm that requires a secret key and an initial vector. At this time, if the value of one or both of the secret key and the initial vector is changed for each use, a different pseudorandom number is generated each time.
- the pseudo random number generation unit 214 is realized by hardware that outputs random numbers from physical phenomena such as temperature, time, and electric energy. In the present embodiment, the pseudo random number generation unit 214 uses the random number mask generation key 251 and the initial vector 236 input from the overall processing unit 211, and outputs a pseudo random number.
- the irreversible conversion unit 215 performs processing for outputting data obtained by irreversibly converting the input data.
- the irreversible conversion unit 215 performs a process of converting the data input from the overall processing unit 211 into another data having a fixed length and outputting it.
- the irreversible conversion unit 215 can realize the irreversible conversion unit 215 that converts input data of arbitrary length into 256-bit data by implementing SHA-256, which is a standard cryptographic hash function algorithm.
- the homomorphic function unit 216 performs processing for outputting the output result of the homomorphic function as data for the input data.
- the homomorphic function indicates a case where (Equation 2) holds for the function F, the input variable x, and the input variable y. Note that the same can be done when homomorphism is established with an operation symbol other than the XOR operation which is an exclusive OR for each bit.
- the basic operation unit 217 performs processing related to basic arithmetic operations such as addition, subtraction, comparison calculation, AND, OR, and XOR.
- the key generation unit 218 is used for generation processing of a fixed secret key and an update secret key used for encryption algorithm and random number generation.
- the key generation unit 218 is realized by implementing a standard key generation algorithm.
- the pseudo random number generation unit 214 may be used to generate a fixed secret key or an update secret key.
- the search client 200 described above includes, for example, a CPU 601, a memory 602, an external storage device 603 such as an HDD, and a portable storage such as a CD and a DVD as shown in FIG. 6 (schematic diagram of a computer).
- a reading device 607 that reads / writes information from / to the medium 608, an input device 606 such as a keyboard and a mouse, an output device 605 such as a display, and a communication device 604 such as a NIC for connecting to a communication network are connected to each other.
- an internal communication line (referred to as a system bus) such as a system bus.
- the storage unit 220 can be realized by the CPU 601 using the memory 602 or the external storage device 603, and the control unit 210 and each processing unit included in the control unit 210 are stored in the external storage device 603. It can be realized by loading a predetermined program into the memory 602 and executed by the CPU 601.
- the input unit 201 can be realized by the CPU 601 using the input device 606.
- the output unit 202 can be realized by the CPU 601.
- the communication unit 203 can be realized by using the communication device 604 by the CPU 601.
- This predetermined program is stored (downloaded) in the external storage device 603 from the storage medium 608 via the reading device 607 or from the network via the communication device 604, and then loaded onto the memory 602 and loaded onto the CPU 601. May also be executed. Alternatively, the program may be directly loaded on the memory 602 from the storage medium 608 via the reading device 607 or from the network via the communication device 604 and executed by the CPU 601.
- FIG. 5 is a functional schematic diagram of the management server 300.
- the management server 300 includes a control unit 310, a storage unit 320, an input unit 301, an output unit 302, and a communication unit 303.
- the storage unit 320 includes a data storage unit 330, a key storage unit 350, and a temporary storage unit 380.
- the data storage unit 330 stores information specifying data received via the communication unit 303.
- information received from the registered client 100 via the communication unit 303 is stored in the data storage unit 330 as configuration information of the database 341.
- the data storage unit 330 stores information for specifying a keyword received via the communication unit 303.
- information received from the search client 200 via the communication unit 303 is stored in the data storage unit 330 as a secret keyword.
- the data storage unit 330 stores an encryption context 340 and a database 341 that summarize information related to encryption.
- the encryption context 340 stores an encryption algorithm 344, a search tag length 335, an initial vector 336, and a designated block 337 that are used when creating secret data.
- the database 341 is composed of at least one set of plain text data and secret data.
- the DB is composed of RDB (Relational Database), KVS (Key-Valued System), etc., and each data managed as a record in the database is concealed as secret data 343 or plaintext data 342 or each Data is stored as a set of concealment data 343 and plaintext data 342.
- Temporary storage unit 380 stores information necessary for processing in control unit 310.
- the control unit 310 includes an overall processing unit 311, a decoding unit 313, an irreversible conversion unit 315, a homomorphic function unit 316, and a basic calculation unit 317.
- the overall processing unit 311 controls all processes in the management server 300. For example, the overall processing unit 311 performs processing for receiving confidential data and plaintext data from the registered client 100 via the communication unit 303.
- the overall processing unit 311 performs processing for storing the confidential data 343 and the plaintext data 342 received via the communication unit 303 as configuration information of the database 341 in the data storage unit 330.
- the overall processing unit 311 performs a process of receiving a secret keyword from the search client 200 via the communication unit 303.
- the overall processing unit 311 performs a process of storing the secret keyword received via the communication unit 303 in the data storage unit 330.
- the overall processing unit 311 performs processing for storing information related to data received from the search client 200 or the registration client 100 via the communication unit 303 in the temporary storage unit 380 and processing for displaying the information on the output unit 302.
- the decryption unit 313 performs a process of outputting data obtained by decrypting the input data. For example, the decryption unit 313 receives the encrypted data and the update-type search key 354 from the overall processing unit 311 and performs a process of decrypting and outputting.
- the irreversible conversion unit 315 performs a process of outputting data obtained by irreversibly converting the input data.
- the irreversible conversion unit 315 performs a process of converting the data input from the overall processing unit 311 into another data having a fixed length and outputting it.
- the irreversible conversion unit 315 can realize the irreversible conversion unit 115 that converts input data having an arbitrary length into 256-bit data by implementing a SHA-256 function that is a standard cryptographic hash function algorithm.
- the homomorphic function unit 316 performs processing for outputting the output result of the homomorphic function as data for the input data.
- the homomorphic function indicates a case where (Equation 2) holds for the function F, the input variable x, and the input variable y. Note that this embodiment can be similarly implemented when homomorphism is established with an operation symbol other than the XOR operation which is an exclusive OR for each bit.
- the basic operation unit 317 performs processing related to basic arithmetic operations such as addition, subtraction, comparison calculation, AND, OR, and XOR.
- the management server 300 described above includes, for example, a CPU 601, a memory 602, an external storage device 603 such as an HDD, and a portable storage such as a CD and a DVD as shown in FIG. 6 (schematic diagram of a computer).
- a reading device 607 that reads / writes information from / to the medium 608, an input device 606 such as a keyboard and a mouse, an output device 605 such as a display, and a communication device 604 such as a NIC for connecting to a communication network are connected to each other. It can be realized by a general computer having an internal communication line (referred to as a system bus) such as a system bus.
- the storage units 120, 220, and 320 can be realized by the CPU 601 using the memory 602 or the external storage device 603, and each process included in the control units 110, 210, and 310 and the control units 110, 210, and 310 is performed.
- the unit can be realized by loading a predetermined program stored in the external storage device 603 into the memory 602 and executing it by the CPU 601, and the input unit 101, 201, 301 uses the input device 606 by the CPU 601.
- the output units 102, 202, and 302 can be realized by the CPU 601 using the output device 605, and the communication units 103, 203, and 303 can be realized by the CPU 601 using the communication device 604. It is feasible.
- This predetermined program is stored (downloaded) in the external storage device 603 from the storage medium 608 via the reading device 607 or from the network via the communication device 604, and then loaded onto the memory 602 and loaded onto the CPU 601. May also be executed. Alternatively, the program may be directly loaded onto the memory 602 from the storage medium 608 via the reading device 607 or from the network via the communication device 604 and executed by the CPU 601.
- the registration client 100 performs processing for storing the information input from the user via the input unit 101 in the storage unit 120 as plain text data 131 (S101).
- the registration client 100 performs processing for creating secret data by the control unit 110 (S102).
- the registered client 100 performs a process of transmitting the plaintext data 1 and / or the secret data from the communication unit 103 to the management server 300 via the network 400 (S103).
- the management server 300 performs a process of receiving, from the communication unit 303, the plaintext data and / or the secret data transmitted by the registration client 100 via the network 400 (S104).
- the management server 300 uses the control unit 310 to store the received plaintext data and / or confidential data in the storage unit 320 as configuration information of the database 341 (S105).
- the management server 300 performs processing for transmitting the success / failure of the registration processing of the plaintext data and the secret data from the communication unit 303 to the registration client via the network 400 (S106).
- the registration client 100 performs processing for receiving the success / failure of the registration processing of plain text data and secret data transmitted from the communication unit 103 via the network 400 by the management server 300 (S107).
- the registration client 100 performs a process of displaying registration information including the success or failure of the registration process to the user via the output unit 102 (S108).
- the above is the sequence showing the process in which the registration client 100 registers the confidential data in the management server 300 via the network 400.
- the processing procedure of this sequence does not necessarily follow the order described above, and may be performed in a different order. Further, it is not always necessary to process all the procedures described above.
- the secret data created in S102 may be further added with a process of using a renewal search key or renewal private key and partially or entirely encrypting it partially.
- ⁇ Search flow of confidential data> A sequence showing processing in which the management server 300 searches the database 341 using the secret keyword transmitted by the search client 200 via the network 400, and the search client 200 acquires the search result will be described.
- the search client 200 performs a process of storing information input from the user via the input unit 201 in the storage unit 220 as the plaintext keyword 241 (S201).
- the search client 200 uses the control unit 210 to create a secret keyword from a plaintext keyword (S202).
- the search client 200 performs processing for transmitting the secret keyword to the management server 300 from the communication unit 203 via the network 400 (S203).
- the management server 300 performs processing for receiving the secret keyword transmitted by the search client 200 from the communication unit 303 via the network 400 (S204).
- the management server 300 uses the control unit 310 to search the database 341 for the secret data 343 related to the secret keyword (S205).
- the management server 300 performs a process of transmitting a search result (consisting of secret data and / or plain text data) corresponding to the secret keyword from the communication unit 303 to the search client via the network 400. (S206).
- the search client 200 performs processing for receiving the search result transmitted from the management server 300 via the network 400 from the communication unit 203 (S207).
- the search client 200 restores the plaintext data from the search result corresponding to the secret keyword by the control unit 210 (S208).
- the search client 200 stores the plain text data in the storage unit 220 via the output unit 202 (S209).
- the search client 200 displays the plain text data on the output unit 202 (S210).
- the above is a sequence showing a process in which the management server 300 searches the database 341 using the secret keyword transmitted by the search client 200 via the network 400, and the search client 200 acquires the search result.
- the processing procedure of this sequence does not necessarily follow the order described above, and may be performed in a different order. Further, it is not always necessary to process all the procedures described above. Further, a new process may be added. For example, in S205, when part or all of the secret data to be searched is double-encrypted with the update type search key, the management server 300 adds a process for decrypting the secret data with the update type search key. Similarly, in S205, even when a part or all of the secret keyword is double-encrypted with the update-type search key, the management server 300 adds decryption processing of the secret keyword with the update-type search key.
- FIG. 7 shows a procedure of secret data generation processing in the registered client 100.
- the overall processing unit 111 of the registered client 100 secures a work area necessary for the secret data generation process in the temporary storage unit 180.
- the entire processing unit 111 of the registered client 100 acquires the plaintext data 131 and divides it into sizes that can be processed by the encryption unit 112.
- the entire processing unit 111 of the registered client 100 inputs the initial vector 136, the data encryption key 152, and the n divided plaintext blocks to the encryption unit 112, and encrypts them according to the encryption algorithm 141 such as ECB mode and CBC mode.
- N intermediate encrypted data C1, C2,... Cn are obtained.
- the plaintext data 131 is divided into 128-bit plaintext blocks, and the encryption unit 112 uses the data encryption key 152 and the initial vector.
- 136 is used to output intermediate encrypted data C1, C2,... Cn encrypted in the CES mode of AES encryption.
- the overall processing unit 111 of the registered client 100 inputs the initial vector 136 and the random number mask generation key 151 to the pseudo random number generation unit 114, and generates a random number stream used for n pieces of intermediate encrypted data. For example, as shown in FIG. 11A in FIG. 11, data obtained by concatenating an initial vector 136 and constants and a random number mask generation key 151 are input to a pseudo random number generation unit 114, and random numbers corresponding to n blocks are input. Streams R1, R2,... Rn are generated.
- the overall processing unit 111 of the registration client 100 inputs the nonce 172 for key mask and the key mask generation key 171 to the pseudo random number generation unit 114, and generates a key stream used for n pieces of intermediate encrypted data. For example, as shown in FIG. 11 (b) in FIG. 11, data obtained by concatenating a nonce 172 for key mask and a constant and a key mask generation key 171 are input to the pseudorandom number generation unit 114, which corresponds to n blocks. Key streams T1, T2,... Tn are generated.
- the overall processing unit 111 of the registered client 100 inputs the intermediate encrypted data, the random number stream, and the key stream to the basic calculation unit 117, the basic calculation unit 117 calculates an exclusive OR (XOR calculation), and outputs an output result D1, D2,... Dn is acquired as the ciphertext body.
- the entire processing unit 111 of the registered client 100 inputs all or part of the random number stream to the homomorphic function unit 116, and acquires the output data as a function value.
- Rn which is a part of the random number stream
- F (Rn) the output result
- the function value is input to the irreversible conversion unit 115, and the output data is acquired as an irreversible conversion value.
- the irreversible conversion unit 115 implements the hash function SHA256
- the 256 bits of the hash value is the irreversible conversion value H (F (Rn)).
- the irreversible conversion unit 115 acquires the bit length recorded in the search tag length 135 out of the 256-bit hash value as the search tag Dn + 1 for confidential data. For example, the irreversible conversion unit 115 extracts the least significant 32 bits and uses it as a search tag for confidential data.
- the bit to be extracted from the irreversible transformation value H is not limited to the least significant bit, but may be extracted from the most significant bit, or may be extracted from a predetermined location or a random location.
- the overall processing unit 111 of the registered client 100 sets the initial vector 136 as D0, and stores the data obtained by concatenating the ciphertext bodies D1, D2,... Dn, and the search tag Dn + 1 in the data storage unit 130 as confidential data.
- the overall processing unit 111 of the registered client 100 releases the work area reserved for the secret data generation processing from the temporary storage unit 180.
- the secret data decryption process will be described later.
- a key stream generated from the key mask generation key 171 and the key mask nonce 172 is used. Therefore, the generation of the secret data requires the key mask generation key 171 and the key mask nonce 172.
- the key mask generation key 271 and the key mask nonce 272 are also required for the decryption process described later.
- secret data generation procedure does not necessarily follow the order described above, and may be performed in a different order.
- the generation of confidential data may be processed by the search client 200 instead of the registration client 100.
- FIG. 8 shows a procedure for generating secret keywords in the search client 200.
- the overall processing unit 211 of the search client 200 secures a work area necessary for the secret keyword generation process in the temporary storage unit 280.
- the overall processing unit 211 of the search client 200 acquires the plaintext keyword 241 and generates a plaintext block according to the description of the designated block 237.
- the overall processing unit 211 of the search client 200 inputs the initial vector 236, the data encryption key 252 and the plaintext block to the encryption unit 212, and acquires the intermediate encrypted keyword Cn encrypted according to the encryption algorithm 244.
- the encryption algorithm 244 has a key length of 256 bits AES cipher CBC mode and the designated block 237 is designated n-th
- the overall processing unit 211 divides the plaintext keyword 241 into plaintext blocks of 128 bits and encrypts them.
- the unit 112 uses the data encryption key 252 and the initial vector 236, and outputs Cn which is the nth data from the data C1, C2,... Cn encrypted in the CBC mode of AES encryption as an intermediate encryption keyword.
- the overall processing unit 211 of the search client 200 inputs the initial vector 236 and the random number mask generation key 251 to the pseudo random number generation unit 214, and generates a random number stream used for masking the intermediate encryption keyword. For example, when the nth is specified in the specified block 237, a random number stream Pn that is equal to or larger than the size of the intermediate encryption keyword Cn is generated. At this time, each time the random number stream is generated, the data value of the initial vector 250 and / or the random number mask generation key 251 is updated, so that the data value of the random number stream is different every time.
- the overall processing unit 211 of the search client 200 inputs a nonce 272 for key mask and a key mask generation key 271 to the pseudo random number generation unit 214, and generates a key stream used for masking the intermediate encryption keyword. For example, when the nth is specified in the specified block 237, a key stream Tn that is equal to or larger than the size of the intermediate encryption keyword Cn is generated.
- the overall processing unit 211 of the search client 200 inputs the intermediate encryption keyword, the random number stream, and the key stream to the basic operation unit 217, and the basic operation unit 217 calculates an exclusive OR (XOR operation) and encrypts the output result.
- XOR operation exclusive OR
- the intermediate encryption keyword Cn the random number stream Pn
- the key stream Tn the encryption keyword Wn.
- the entire processing unit 211 of the search client 200 inputs the random number stream Pn to the homomorphic function unit 216 and acquires the output data as a function value F (Pn).
- the overall processing unit 211 of the search client 200 inputs the update type search key 273, the initial vector 236, and the function value to the encryption unit 212, and outputs the output data as a secret keyword search tag E (F (Pn)). Is obtained as Wn + 1.
- the entire processing unit 211 of the search client 200 concatenates the initial vector 236, the encrypted keyword body, and the search keyword for the secret keyword, and stores this in the data storage unit 230 as the secret keyword.
- the entire processing unit of the search client 200 releases the work area reserved for the secret keyword generation process from the temporary storage unit 280.
- the key stream generated from the key mask generation key 271 and the key mask nonce 272 is used. Therefore, the generation of the secret keyword requires the key mask generation key 271 and the key mask nonce 272.
- the secret keyword generation procedure does not necessarily follow the order described above, and may be performed in a different order. Further, a new process may be added. For example, the search tag for the secret keyword is encrypted with the update-type search key. Similarly, a process for double-encrypting the encryption main body, which is another block of the secret keyword, may be added.
- the secret client may be generated not by the search client 200 but by the registration client 100.
- FIG. 9 shows a procedure of the comparison process between the secret data 343 and the secret keyword in the management server 300.
- the management server 300 uses the secret data 343 and the secret keyword, and shows a processing procedure for detecting whether the plaintext data before being concealed and the value of the plaintext keyword are the same.
- the overall processing unit 311 of the management server 300 secures a work area necessary for the matching comparison process of the secret data 343 in the temporary storage unit 380.
- the overall processing unit 311 of the management server 300 acquires the confidential data 343 stored in the database 341. Further, the overall processing unit 311 extracts the ciphertext body corresponding to the designated block 337 from the ciphertext body in the secret data 343. For example, when the n-th is specified in the designated block 337, the overall processing unit 311 regards the secret data 343 as the initial vector, the ciphertext body, and the concatenated data of the search tag for the secret data, and the n from the corresponding ciphertext body. The ciphertext body block Dn corresponding to the th block is taken out.
- the overall processing unit 311 of the management server 300 acquires the encrypted keyword body in the secret keyword.
- the secret keyword W is regarded as an initial vector W0, an encrypted keyword body Wn, a secret keyword search tag Wn + 1, and a set of three divided blocks, and Wn corresponding to the encrypted keyword body is extracted.
- the overall processing unit 311 of the management server 300 inputs the ciphertext body block and the encrypted keyword body to the basic operation unit 317, and the basic operation unit 317 calculates the exclusive OR (XOR operation) and obtains the output result.
- XOR operation exclusive OR
- Equation 5 holds for the ciphertext body block Dn and the encrypted keyword body Wn.
- Dn xor Wn (Cn xor Rn xor Tn) xor (Cn xor Pn xor Tn)
- the overall processing unit 311 of the management server 300 acquires the initial vector W0 for the secret keyword and the search tag Wn + 1 for the secret keyword, and inputs them together with the updated search key 354 to the decryption unit 313, and the decrypted function value F (Pn) To get.
- the overall processing unit 311 of the management server 300 inputs the function value F (Dn xor Wn) and the function value F (Pn) to the basic operation unit 317, and the basic operation unit 317 calculates the exclusive OR (XOR calculation). Then, the output function value F (R′n) is acquired.
- (Formula 8) is established.
- the overall processing unit 311 of the management server 300 inputs the function value F (Rn) to the irreversible conversion unit 315 and acquires the irreversible conversion value H (F (Rn)) from the output data.
- the overall processing unit 311 of the management server 300 extracts the bit length recorded in the search tag length 335 from the irreversible conversion value H. For example, the least significant 32 bits are extracted. Further, not only from the least significant bit but also from the most significant bit, the bit may be extracted from a predetermined location or a random location.
- the overall processing unit 311 of the management server 300 releases the work area reserved for the confidential data matching comparison process from the temporary storage unit 380.
- the procedure for comparing and comparing the secret data and the secret keyword does not necessarily follow the order described above, and may be performed in a different order.
- other than TRUE or FALSE may be used for the answer of the match comparison result, and a multi-value answer may be used instead of the binary value.
- FIG. 10 shows the procedure of the secret data decrypting process in the search client 200.
- the overall processing unit 211 of the search client 200 secures a work area necessary for the decryption processing of the confidential data in the temporary storage unit 280.
- the entire processing unit 211 of the search client 200 acquires confidential data. Further, an initial vector is acquired from the secret data.
- the secret data is regarded as a set of blocks D0, D1, D2,... Dn, Dn + 1, and an initial vector D0 that is the first block is acquired.
- the overall processing unit 211 of the search client 200 inputs the initial vector and the random number mask generation key 251 to the pseudo random number generation unit 214, and generates a random number stream used for canceling the mask of the intermediate encryption keyword. For example, as shown in FIG. 11A in FIG. 11, the overall processing unit 211 inputs data obtained by concatenating an initial vector and a constant and a random number mask generation key to the pseudo random number generation unit 214, and blocks n blocks. .. Rn are generated corresponding to the random number streams R1, R2,.
- the overall processing unit 211 of the search client 200 inputs the nonce 272 for key mask and the key mask generation key 271 to the pseudo-random number generation unit 214, and generates a key stream used for n pieces of intermediate encrypted data. For example, as shown in FIG. 11B in FIG. 11, data obtained by concatenating a nonce 272 for key mask and a constant and a key mask generation key 271 are input to the pseudorandom number generation unit 214, which corresponds to n blocks. Key streams T1, T2,... Tn are generated.
- the overall processing unit 211 of the search client 200 inputs the ciphertext body, the random number stream, and the key stream to the basic operation unit 217, and the basic operation unit 217 calculates an exclusive OR (XOR operation) and outputs the output results C1 and C2. ... Cn is acquired as intermediate encrypted data.
- the entire processing unit 211 of the search client 200 inputs the encryption algorithm 244, the initial vector 236, the data decryption key 253, and the divided intermediate encrypted data to the decryption unit 213, and encrypts the ECB mode, the CBC mode, etc.
- the n pieces of intermediate encrypted data C1, C2,... Cn encrypted according to the algorithm 244 are acquired.
- the overall processing unit divides the intermediate encrypted data into 128-bit blocks, and the decryption unit 213 decrypts the data.
- the plaintext blocks M1, M2,... Mn decrypted using the key 253 and the initial vector and decrypted in the CBC mode of the AES cipher are output.
- plaintext blocks M1, M2,... Mn are concatenated and stored in the data storage unit 230 as plaintext data.
- the entire processing unit of the search client 200 releases the work area reserved for the decryption process of the secret data from the temporary storage unit 280.
- secret data decryption procedure does not necessarily follow the order described above, and may be performed in a different order.
- the registration client 100 may process the decryption of the confidential data instead of the search client 200.
- the registration client 100 uses the key generation unit 118 to generate the update secret key 170 (S1001). For example, a key generation algorithm 171 and a key mask nonce 172 are generated independently using a key generation algorithm.
- the update-type secret key 170 includes a key mask generation key 171 and a key mask nonce 172, but both may be generated or one of them may be generated.
- the registration client 100 updates the secret data 343 in the management server 300 via the network 400 using the newly generated update secret key 170 (S1002).
- the confidential data update flow will be described later.
- the registration client After completion of the confidential data update flow, the registration client registers the updated private key 170 generated in S1001 in the key storage unit 150 as a new updated private key 170 (S1003).
- the registration client 100 registers the update type private key to the search client 200 via the network (S1004).
- update private key 170 update processing procedure does not necessarily follow the order described above.
- the updated private key 170 may be acquired via the input unit 101 or the communication unit 103.
- new processing may be added.
- the registered client 100 may delete the old updated private key 170 after registering the new updated private key 170 generated in S1003.
- update processing of the update-type private key 170 may be processed not by the registration client 100 but by the search client 200.
- the search client 200 uses the key generation unit 218 to generate an update search key 273, which is an element of the update secret key 270 (S1101).
- the update type search key 273 is generated using a key generation algorithm.
- the search client 200 registers the update-type search key 273 in the management server 300 via the network 400 (S1102).
- the search client registers the update search key 273 generated in S1001 in the key storage unit 250 as a new update search key 273 (S1003).
- update processing procedure for the update-type search key 273 does not necessarily follow the order described above.
- the updated search key 273 may be acquired via the input unit 201 or the communication unit 203.
- new processing may be added.
- the search client 200 may delete the old update-type search key 273 after registering the new update-type search key 273 generated in S1103.
- update processing of the update type search key 273 may be processed by the management server 300 instead of the search client 200.
- the search client 200 acquires the update-type search key 273 from the management server 300 via the network 400.
- the registration client 100 performs a process of transmitting an inquiry from the communication unit 103 to the management server 300 via the network 400 (S301).
- the management server 300 performs processing for receiving an inquiry transmitted from the registration client 100 from the communication unit 303 via the network 400 (S302).
- the management server 300 performs processing for transmitting the size of the confidential data from the communication unit 303 to the registered client 300 via the network 400 (S303).
- the registration client 100 performs a process of receiving the size of the confidential data transmitted from the management server 300 via the network 400 from the communication unit 103 (S304).
- the overall processing unit 311 of the management server 300 uses the basic calculation unit 317 to subtract the initial vector and the size of the search tag for the secret data from the size of the secret data to calculate the size of the ciphertext body (S305).
- the overall processing unit 311 of the management server 300 regards the size that is equal to or larger than the ciphertext body as the size of the differential key mask to be generated, and transmits the size to the registration client 100 (S306).
- the registration client 100 performs a process of generating a differential key mask of the above size received from the management server 300 by the control unit 110 (S307).
- the registration client 100 performs processing for transmitting the generated differential key mask from the communication unit 103 via the network 400 to the management server 300 (S308).
- the management server 300 performs a process of receiving the differential key mask transmitted from the registration client 100 from the communication unit 303 via the network 400 (S309).
- the management server 300 uses the received differential key mask by the control unit 310 to update the confidential data 343 that is the configuration information of the database 341, and stores the updated confidential data 343 in the storage unit 320 ( S310).
- the management server 300 performs processing to transmit the success / failure of the update processing of the confidential data 343 from the communication unit 303 to the registered client 100 via the network 400 (S311).
- the registration client 100 performs a process of receiving success or failure of the update process of the secret data 343 transmitted from the communication unit 103 via the network 400 by the management server 300 (S312).
- the registration client 100 performs a process of displaying success / failure information of the update process of the secret data 343 to the user via the output unit 102 (S313).
- processing procedure of this sequence does not necessarily follow the order described above, and may be performed in a different order. Further, it is not always necessary to process all the procedures described above. A part of the processing may be replaced with another processing. For example, in S306, a predetermined value may be regarded as the size of the difference key mask. Further, further processing may be added. For example, after the end of S310, the registered client may perform a process of deleting the updated secret key corresponding to the secret data before update. Further, instead of the registration client 100, the search client 200 may perform the role of the registration client 100.
- the update process of the update type search key may be performed together.
- the search client may send a new update type search key to the management server, and the management server deposits it.
- the update type search key may be updated by the search client and the management server.
- the management server may use different update-type search keys for each registered client or search client.
- the differential key mask refers to a difference between two types of key streams that are independently generated from a new secret key and an old secret key held by the registered client 100.
- the management server 300 can update the secret data from the old secret key to the secret data corresponding to the new secret key by using the differential key mask that is the difference between the two types of key streams generated from the two types of secret keys. .
- the registered client 100 has a new key mask nonce 172 ′ and a new key mask generation key 171 ′ in addition to the conventional key mask nonce 172 and the conventional key mask generation key 171 necessary for the differential key mask generation process. .
- the overall processing unit 111 of the registered client 100 secures a work area necessary for the generation process of the differential key mask in the temporary storage unit 180.
- the entire processing unit 111 of the registered client 100 inputs the conventional key mask nonce 172 and the conventional key mask generation key 171 to the pseudo-random number generation unit 114, and the conventional key stream used for the n pieces of intermediate encrypted data. Generate. For example, as shown in FIG. 11B in FIG. 11, data obtained by concatenating a conventional key mask nonce 172 and a constant and a conventional key mask generation key 171 are input to the pseudorandom number generation unit 114, and n pieces of data are input. The conventional key streams T1, T2,... Tn corresponding to these blocks are generated.
- the entire processing unit 111 of the registered client 100 inputs a new key mask nonce 172 ′ and a new key mask generation key 171 ′ to the pseudo-random number generation unit 114, and generates a new key stream to be used for n intermediate encrypted data. To do. For example, as shown in FIG. 11B in FIG. 11, data obtained by concatenating a new key mask nonce 172 ′ and a constant and a new key mask generation key 171 ′ are input to the pseudo-random number generation unit 114, and n pieces A new key stream T1 ′, T2 ′,.
- the overall processing unit 111 of the registered client 100 inputs the conventional key stream and the new key stream to the basic operation unit 117, and the basic operation unit 117 calculates exclusive OR (XOR operation), and outputs the results S1, S2,. ... Acquire Sn as a differential key mask.
- XOR operation exclusive OR
- the new key stream Ti ′ is masked by the conventional key stream Ti, and the mask can be released only by the registration client 100 or search client 200 having the conventional key mask nonce 172 and the conventional key mask generation key 171. Limited to. Therefore, the value of the new key stream Ti ′ or the conventional key stream Ti does not leak directly to the management server 300.
- the overall processing unit 111 of the registered client 100 releases the work area reserved for the differential key mask generation process from the temporary storage unit 180.
- differential key mask generation procedure does not necessarily follow the order described above, and may be performed in a different order.
- the generation of the differential key mask may be processed by the search client 200 instead of the registration client 100.
- a new key mask nonce 272 'and a new key mask generation key 271' may be used.
- a secret keyword can be updated using a difference key mask.
- FIG. 13 shows a procedure of confidential data update processing in the management server 300.
- the overall processing unit 311 of the management server 300 secures a work area necessary for the re-encryption processing of the secret data 343 in the temporary storage unit 380.
- the overall processing unit 311 of the management server 300 acquires the confidential data 343 stored in the database 341. Further, the ciphertext body is extracted from the secret data 343.
- the overall processing unit 311 of the management server 300 inputs the conventional ciphertext body and the conventional key stream to the basic operation unit 317, calculates the exclusive OR (XOR calculation), and outputs the output results D1 ′, D2 ′,. ... Dn 'is acquired as a new ciphertext body.
- the entire processing unit of the management server 300 stores data obtained by connecting the initial vector 336, the ciphertext bodies D1 ', D2', ... Dn ', and the search tag Dn + 1 as new confidential data in the data storage unit.
- the overall processing unit of the management server 300 releases the work area reserved for the update process of the secret data 343 from the temporary storage unit 380.
- the confidential data update procedure in the management server 300 does not necessarily follow the order described above, and may be performed in a different order.
- FIG. 14 is a schematic diagram of the system of this embodiment.
- the search processing system includes a registration client 100, a search client 200, and a management server 300.
- the registration client 100 and the management server 300 are connected via a network 500, and the search client 200 and the management server 300 are connected via a network 600. Configured to send and receive information.
- the registration client 100 and the search client 200 in this embodiment are the same as those in the first embodiment, except that the key mask generation key 171 and the key mask nonce 172 in the update secret key 170 and the update secret key 270 At least one of the key mask generation key 271 and the key mask nonce 272 has a different value.
- the management server 300 in this embodiment is the same as that in the first embodiment as shown in FIG. 15, except that the key storage unit 350 in the storage unit 320 has a differential key mask 355.
- the differential key mask 355 includes all or a part of the combination of the key mask generation key 171 and the key mask nonce 172 held by the registered client 100 and the key mask generation key 271 and the key mask nonce 272 held by the search client 200. Generated using. As described later, the generation process of the differential key mask 355 includes a key mask generation key 171 and a key mask nonce 172 held by the registration client 100, a key mask generation key 271 and a key mask nonce 272 held by the search client 200. Is used.
- ⁇ Difference key mask generation flow> A procedure for generating a differential key mask by the registered client 100 is shown.
- the registration client 100 has a key mask nonce 171 and a key mask generation key 172, and a key mask nonce 271 and a key mask generation key 272 distributed to the search client 200.
- the overall processing unit 111 of the registered client 100 secures a work area necessary for the generation process of the differential key mask in the temporary storage unit 180.
- the entire processing unit 111 of the registered client 100 inputs the key mask nonce 171 and the key mask generation key 172 to the pseudo random number generation unit 114, and generates a key stream (1) used for n pieces of intermediate encrypted data.
- a key stream (1) used for n pieces of intermediate encrypted data.
- data obtained by concatenating a nonce 171 for key mask and a constant and a key mask generation key 172 are input to the pseudo-random number generation unit 114 and correspond to n blocks.
- T1, T2,... Tn are generated as the key stream (1).
- the overall processing unit 111 of the registered client 100 inputs the key mask nonce 271 and the key mask generation key 272 to the pseudo random number generation unit 114, and generates a key stream (2) used for n pieces of intermediate encrypted data.
- a key stream (2) used for n pieces of intermediate encrypted data.
- data obtained by concatenating a nonce 171 for key mask and a constant and a key mask generation key 172 are input to the pseudo-random number generation unit 114 and correspond to n blocks.
- T1 ′, T2 ′,... Tn ′ are generated as the key stream (2) to be performed.
- the overall processing unit 111 of the registered client 100 inputs the key stream (1) and the key stream (2) to the basic calculation unit 117, and the basic calculation unit 117 calculates an exclusive OR (XOR calculation) and outputs an output result S1. , S2,... Sn is acquired as a differential key mask.
- XOR calculation exclusive OR
- the overall processing unit 117 of the registered client 100 releases the work area reserved for the differential key mask generation process from the temporary storage unit 180.
- differential key mask generation procedure does not necessarily follow the order described above, and may be performed in a different order.
- the main part of the differential key mask is the registered client 100, it may be changed to the search client 200 and distributed to the registered client 100.
- a new player such as a reliable organization may be prepared for the subject of the differential key mask.
- ⁇ Differential key mask registration flow> A sequence showing processing for transmitting the differential key mask to the registration client 100 via the network 500 and registering the key storage unit 350 differential key mask by the management server 300 will be described.
- the registered client 100 performs processing for generating a differential key mask (S301).
- the registered client 100 performs processing for transmitting the differential key mask from the communication unit 103 to the management server 300 via the network 500 (S302).
- the management server 300 performs a process of receiving the differential key mask transmitted from the registration client 100 from the communication unit 303 via the network 500 (S303).
- the management server 300 uses the control unit 310 to store the received differential key mask in the key storage unit 350 (S304).
- the management server 300 performs processing for transmitting the success / failure of the registration process of the differential key mask from the communication unit 303 to the registration client 100 via the network 500 (S305).
- the registration client 100 performs a process of receiving the success / failure of the registration process of the differential key mask transmitted from the communication unit 103 via the network 500 by the management server 300 (S306).
- the registration client 100 performs a process of displaying registration information including the success or failure of the registration process to the user via the output unit 102 (S307).
- the above is the sequence showing the process in which the registration client 100 registers the differential key mask with the management server 300 via the network 500.
- processing procedure of this sequence does not necessarily follow the order described above, and may be performed in a different order. Further, it is not always necessary to process all the procedures described above.
- search client 200 may be changed to register the differential key mask in the management server 300 via the network 600.
- the search client 200 performs a process of storing the information input from the user via the input unit 201 as the plaintext keyword 241 in the storage unit 220 (S401).
- the search client 200 uses the control unit 210 to generate a secret keyword from the plaintext keyword 241 (S402).
- the search client 200 performs processing for transmitting the secret keyword to the management server 300 from the communication unit 203 via the network 600 (S403).
- the management server 300 performs processing for receiving the secret keyword transmitted from the search client 200 via the network 600 from the communication unit 303 (S404).
- the management server 300 uses the control unit 310 to perform a secret keyword conversion process (S405).
- the secret keyword conversion process will be described later.
- the management server 300 uses the control unit 310 to search the database 341 for the secret data 343 related to the secret keyword (S406).
- the management server 300 performs processing for converting the secret data corresponding to the secret keyword (S407).
- This conversion process is a process of converting (updating) the secret data corresponding to the update secret key 170 of the registration client 100 to the secret data corresponding to the update secret key 270 of the search client 200.
- this conversion process is realized by the re-encryption process reported using FIG. 13 in the first embodiment.
- the management server 300 performs a process of transmitting a search result corresponding to the confidential keyword (configured with confidential data and / or plaintext data) from the communication unit 303 to the search client 200 via the network 600. Perform (S408).
- the search client 200 performs processing for receiving the search result transmitted from the management server 300 from the communication unit 203 via the network 600 (S409).
- the search client 200 restores the plaintext data from the search result corresponding to the secret keyword by the control unit 210 (S410).
- the search client 200 stores the plain text data in the storage unit 220 via the output unit 202 (S409).
- the search client 200 displays the plain text data on the output unit 202 (S411).
- the above is a sequence showing a process in which the management server 300 searches the database 341 using the secret keyword transmitted by the search client 200 via the network 600, and the search client 200 acquires the search result.
- processing procedure of this sequence does not necessarily follow the order described above, and may be performed in a different order. Further, it is not always necessary to process all the procedures described above.
- This sequence explained the process of converting the secret keyword and searching for the secret keyword and secret data after the conversion. This is because the number of secret keywords transmitted from the search client to the management server is smaller than the number of secret data managed by the management server, so converting the secret keywords in the search is more effective than converting the secret data. This is because it can be processed efficiently.
- the secret data may be converted, and the process may be changed so that the secret keyword and the converted secret data are searched. Further, the processing may be changed so as to convert both the secret data and the secret keyword.
- the overall processing unit 311 of the management server 300 acquires the encrypted keyword body from the secret keyword.
- the overall processing unit 311 of the management server 300 acquires the corresponding block of the corresponding differential key mask according to the description of the designated block 337. For example, if the encryption algorithm 344 has a key length of 256 bits AES cipher CBC mode and the designated block 337 is designated n-th, the overall processing unit 311 divides the differential key mask into 128-bit blocks, and the differential key mask From S1, S2,... Sn, the nth data Sn is output as the corresponding block of the differential key mask.
- the overall processing unit 311 of the management server 300 inputs the encryption keyword body and the corresponding block of the differential key mask to the basic operation unit 317, calculates exclusive OR (XOR calculation), and newly encrypts the output result Wn ′. Get as keyword body.
- the overall processing unit 311 of the management server 300 uses the data obtained by connecting the initial vector, the encrypted keyword body, and the prosecution tag as a new secret keyword.
- the overall processing unit 311 of the management server 300 releases the work area reserved for the secret keyword conversion process from the temporary storage unit 380.
- the procedure for updating the secret data 343 in the management server 300 does not necessarily follow the order described above, and may be performed in a different order.
- the management server 300 updates the secret data in the same procedure as the secret data update flow of the first embodiment.
- the search client 200 decrypts the secret data in the same procedure as the secret data decryption process of the first embodiment.
- the encrypted data corresponding to the secret key in the encrypted state is associated with another secret key while maintaining the state in which the server can retrieve the encrypted data in the encrypted state.
- a system capable of maintaining a safe state for the server can be constructed.
- the server-side encrypted data is not decrypted when the client-side secret key is updated, so there is no load on the user side. Can be efficiently re-encrypted.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
登録クライアントと管理サーバとがネットワークを介して接続された検索可能暗号処理システムにおいて、登録クライアントは、平文データを暗号化するための第一の秘密鍵と、新たに平文データを暗号化するための第二の秘密鍵との差分に基づいて、第一の秘密鍵により暗号化された秘匿データを第二の秘密鍵により更新するための差分鍵マスクを生成する登録クライアント処理部、を備える。
Description
本発明は、検索可能暗号処理システムに関する。
情報システムの開発・運用管理費の効率化を目的に、近年、情報システムを自組織が維持するのではなく、他組織が提供する情報システムを利用する、クラウドと呼ばれる運用管理形態が脚光を浴びている。一方、クラウドにおいては、情報システムを管理する組織が、情報システムを利用する組織とは異なるため、情報漏えい等を防止する策や、事故発生後の原因究明、再発防止策等が自組織だけでは立てにくい。そのため、事前に、データの不正流出の予防策として、暗号技術を活用し、データの機密性を確保する必要がある。
サーバ/クライアントモデルにおいて、クライアントが、サーバにデータを預託しながら、サーバに対し、預託したデータの情報漏洩を防ぐ技術として、暗号技術を利用した方式が知られている。例えば、特許文献1には、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理方式が記載されている。この検索処理方式は、平文と暗号文が一対一の単純な対応関係を有する決定的暗号化方式よりも安全な、平文と暗号文が一対mの複雑な対応関係を有する確率的暗号化方式を採用しており、サーバ管理者への情報漏洩を防ぎながら、かつサーバに預託したデータを安全に検索するための技術が開示されている。
しかしながら、特許文献1に記載された技術では、秘密鍵の更新が容易ではない。図2を用いて説明する。図2の上側の図が示すように、秘密鍵を共有する複数の利用者が管理サーバの暗号文を検索可能な状態から、図2の下側の図が示すように、ある利用者だけを管理サーバの暗号文を検索可能な状態に変更したい場合、全員が共有する古い秘密鍵は失効させ、特定の利用者だけが保有する新しい秘密鍵のみが有効にする必要がある。その場合、管理サーバが保存する古い秘密鍵で暗号化した暗号文を、新しい秘密鍵で暗号化した暗号文に変更する必要がある。
しかし、検索可能暗号では、管理サーバが保有する暗号文は直接的には変更できないため、利用者は管理サーバに秘密鍵を渡す必要がある。しかしながら、管理サーバに秘密鍵を渡してしまうと、平文情報が露呈し、暗号化データの機密性が維持できない。そのため、復号なしで暗号文を変更するには、管理サーバ上の全ての暗号化データを、利用者がいったんダウンロードし、全ての暗号化データの復号、新たな秘密鍵で再暗号化をした上で、管理サーバに再アップロードする必要があった。このフローは暗復号化にかかる計算量がサーバに預けた暗号化データの量に比例しているため、利用者側の負荷が大きい、という欠点がある。
本発明は、上記に鑑みてなされたものであって、サーバ/クライアントモデルにおいて、利用者側の負荷をかけずに暗号化データの機密性を維持したまま、ある秘密鍵に対応する暗号化データを別の秘密鍵に対応する暗号化データに変換することが可能な検索可能暗号処理システムを提供することを目的とする。
前記課題を解決し、目的を達成するために、本発明にかかる検索可能暗号処理システムは、登録クライアントと管理サーバとがネットワークを介して接続された検索可能暗号処理システムにおいて、前記登録クライアントは、平文データを暗号化するための第一の秘密鍵と、新たに前記平文データを暗号化するための第二の秘密鍵との差分に基づいて、前記第一の秘密鍵により暗号化された秘匿データを前記第二の秘密鍵により更新するための差分鍵マスクを生成する登録クライアント処理部、を備えることを特徴とする検索可能暗号処理システムとして構成される。
本発明によれば、サーバ/クライアントモデルにおいて、利用者側の負荷をかけずに暗号化データの機密性を維持したまま、ある秘密鍵に対応する暗号化データを別の秘密鍵に対応する暗号化データに変換することができる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態において、同一の部材には原則として同一の符号を付け、繰り返しの説明は省略する。
(実施の形態1)
第一の実施形態では、登録クライアント100と検索クライアント200と管理サーバ300とがネットワーク400で接続されたシステムにおいて、登録クライアント100が作成した秘匿データを管理サーバ300に登録し、検索クライアント200がその秘匿データの検索を管理サーバ300に依頼し、管理サーバ300から取得した秘匿データを復号できることを示す。また、登録クライアント100が保有する秘密鍵の更新処理として、登録クライアント100が保有する新しい秘密鍵と古い秘密鍵の2種類の秘密鍵から、それぞれの秘密鍵を用いて独立に鍵ストリームを生成し、この2種類の鍵ストリームの差分である差分鍵マスクによって、管理サーバ300が新しい秘密鍵に対応した秘匿データに更新できることを示す。
第一の実施形態では、登録クライアント100と検索クライアント200と管理サーバ300とがネットワーク400で接続されたシステムにおいて、登録クライアント100が作成した秘匿データを管理サーバ300に登録し、検索クライアント200がその秘匿データの検索を管理サーバ300に依頼し、管理サーバ300から取得した秘匿データを復号できることを示す。また、登録クライアント100が保有する秘密鍵の更新処理として、登録クライアント100が保有する新しい秘密鍵と古い秘密鍵の2種類の秘密鍵から、それぞれの秘密鍵を用いて独立に鍵ストリームを生成し、この2種類の鍵ストリームの差分である差分鍵マスクによって、管理サーバ300が新しい秘密鍵に対応した秘匿データに更新できることを示す。
図1は、本発明にかかる検索可能暗号処理システムを適用した、本実施形態における検索処理システムの概略図である。図示するように、検索処理システムは、登録クライアント100と、検索クライアント200と、管理サーバ300とを備え、それぞれがネットワーク400を介して情報を送受信できるよう構成されている。
ここで、本実施形態における登録クライアント100は、秘匿化したデータを管理サーバ300に送信するデータ登録用の送受信装置として機能する。検索クライアント200は、秘匿化したキーワードを管理サーバ300に送信し、検索結果を受信する、検索用の送受信装置として機能する。管理サーバ300は、秘匿化したデータをデータベース341に保管し、またデータベース341内のデータを検索する送受信装置として機能する。
また、本実施形態における登録クライアント100は、管理サーバ300で管理される、ある秘密鍵に対応する秘匿化したデータを、別の秘密鍵に対応する秘匿化したデータへの変換依頼用の送受信装置として機能する。
図3は、登録クライアント100の機能概略図である。図示するように、登録クライアント100は、制御部110と、記憶部120と、入力部101と、出力部102と、通信部103とを備える。
記憶部120は、データ記憶部130と、鍵記憶部150と、一時記憶部180とを備える。
記憶部120は、データ記憶部130と、鍵記憶部150と、一時記憶部180とを備える。
データ記憶部130は、管理サーバ300に送信するデータである、送信文を特定する情報を記憶する。また、データ記憶部130は、入力部101を介して、受け付けた平文データ131を特定する情報を記憶する。また、データ記憶部130は、暗号化に関連する情報をまとめた暗号化コンテキスト140を記憶する。暗号化コンテキスト140には、秘匿データの作成時に用いる暗号化アルゴリズム141と初期ベクトル136と検索タグ長135が記憶される。秘匿データの作成元となるデータが128ビット以下に固定されている場合は、初期ベクトル136は用いなくてもよい。その場合、初期ベクトルは記憶しなくても良く、登録クライアント100における全ての処理で、初期ベクトルに関する処理は省略する。
鍵記憶部150は、安全性の観点から登録クライアント100が秘密に管理すべき、固定型秘密鍵160と更新型秘密鍵170を特定する情報を記憶する。固定型秘密鍵160とは、本実施形態で開示する秘匿データの更新処理後も、継続して利用し続ける秘密鍵であり、乱数マスク生成鍵151とデータ暗号化鍵152を特定する情報が記憶される。更新型秘密鍵170とは、本実施形態で開示する秘匿データの更新処理の前後で、利用される秘密鍵が変わる秘密鍵であり、鍵マスク生成鍵171と鍵マスク用ノンス172を特定する情報が記憶される。更新型秘密鍵170には、従来の古い秘密鍵で平文データを暗号化するための第一の秘密鍵と、新たな秘密鍵で平文データを暗号化するための第二の秘密鍵とがある。また、上記第一の秘密鍵を生成するための第一の鍵マスク生成鍵および第一の鍵マスク用ノンスと、上記第二の秘密鍵を生成するための第二の鍵マスク生成鍵および第二の鍵マスク用ノンスとがある。
一時記憶部180は、制御部110での処理で必要となる情報を記憶する。
制御部110は、全体処理部111と、暗号化部112と、擬似乱数生成部114と、不可逆変換部115と、準同型関数部116と、基本演算部117と、鍵生成部118を備える。ただし、秘密鍵の生成処理を行わない場合、鍵生成部118は保持しなくても良い。
制御部110は、全体処理部111と、暗号化部112と、擬似乱数生成部114と、不可逆変換部115と、準同型関数部116と、基本演算部117と、鍵生成部118を備える。ただし、秘密鍵の生成処理を行わない場合、鍵生成部118は保持しなくても良い。
全体処理部111は、登録クライアント100における全ての処理を制御する。例えば、全体処理部111は、入力部101を介して入力を受け付けた情報を、データ記憶部130に平文データ131として記憶する処理を行う。
また、全体処理部111は、平文データ131を出力部102に表示する処理を行う。
また、全体処理部111は、データ記憶部130に記憶した平文データ131を読み込み、それぞれ、暗号化部112と、擬似乱数生成部114と、不可逆変換部115と、準同型関数部116と、基本演算部117とに入力し、出力されたデータを、データ記憶部130に秘匿データとして記憶する処理を行う。
また、全体処理部111は、データ記憶部130に記憶した平文データ131を読み込み、それぞれ、暗号化部112と、擬似乱数生成部114と、不可逆変換部115と、準同型関数部116と、基本演算部117とに入力し、出力されたデータを、データ記憶部130に秘匿データとして記憶する処理を行う。
また、全体処理部111は、秘匿データを、通信部103を介して管理サーバ300に送信する処理を行う。
さらに、全体処理部111は、管理サーバ300より通信部103を介して受信した秘匿データを、一時記憶部180に記憶する処理と出力部102に表示する処理を行う。
暗号化部112は、入力されたデータを暗号化したデータを出力する処理を行う。
例えば、全体処理部111から平文データ131とデータ暗号化鍵152が入力され、暗号化したデータを出力する処理を行う。例えば、暗号化部112は、標準的な暗号化アルゴリズムの実装により、実現される。
例えば、全体処理部111から平文データ131とデータ暗号化鍵152が入力され、暗号化したデータを出力する処理を行う。例えば、暗号化部112は、標準的な暗号化アルゴリズムの実装により、実現される。
擬似乱数生成部114は、擬似乱数を出力する処理を行う。例えば、擬似乱数生成部114は、秘密鍵と初期ベクトルを要する、標準的な擬似乱数生成アルゴリズムの実装により実現される。また例えば、擬似乱数生成部114は、温度、時間、電力量、等の物理現象から、乱数を出力するハードウェアにより実現される。本実施形態においては、擬似乱数生成部114は、全体処理部111から入力された乱数マスク生成鍵151と初期ベクトル136を用い、擬似乱数を出力する。
不可逆変換部115は、入力されたデータを圧縮したデータを出力する処理を行う。
例えば、不可逆変換部115は、全体処理部111から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。
例えば、不可逆変換部115は、全体処理部111から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。
例えば、不可逆変換部115は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256関数の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部115が実現できる。
準同型関数部116は、入力データに対し、準同型性を有する関数の出力結果をデータとして出力する処理を行う。
ただし、準同型を有する関数(以降、準同型関数と呼ぶ)とは、関数Fと、入力変数x、入力変数yに対し、
(数1)
F(x・y)=F(x)?F(y)
が成り立つ関数を指す。ただし、・と?は、演算記号を表わし、加算用の演算記号+、乗算用の演算記号*、ビット毎の排他的論理和であるXOR(eXclusive OR)演算用の演算記号xor等が入る。
(数1)
F(x・y)=F(x)?F(y)
が成り立つ関数を指す。ただし、・と?は、演算記号を表わし、加算用の演算記号+、乗算用の演算記号*、ビット毎の排他的論理和であるXOR(eXclusive OR)演算用の演算記号xor等が入る。
このとき、(数1)において、・と?にXOR演算記号xorが入る場合、(数2)が成り立つ。
(数2)
F(x xor y)=F(x)xor F(y)
(数2)
F(x xor y)=F(x)xor F(y)
基本演算部117は、加算、減算、比較算や、AND、OR、XOR等の基本的な算術演算に関する処理を行う。
例えば、基本演算部117は、全体処理部111から入力された2つのデータのビット毎の排他的論理和であるXOR演算や、比較演算の等号成立または不成立の検証結果を、データとして出力する処理を行う。
鍵生成部118は、暗号化アルゴリズムや乱数生成などに用いる固定型秘密鍵や更新型秘密鍵の生成処理に用いる。例えば、鍵生成部118は、標準的な鍵生成アルゴリズムの実装により実現される。また、擬似乱数生成部114を用い、固定型秘密鍵や更新型秘密鍵を生成するようにしてもよい。
以上に示した登録クライアント100は、例えば、図6(コンピュータの概略図)に示すような、CPU(Central Processing Unit)601と、メモリ602と、HDD(Hard Disk Drive)等の外部記憶装置603と、CD(Compact Disk)やDVD(Digital Versatile Disk)等の可搬性を有する記憶媒体608に対して情報を読み書きする読書装置607と、キーボードやマウス等の入力装置606と、ディスプレイ等の出力装置605と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置604と、これらを連結するシステムバス等の内部通信線(システムバスという)609と、を備えた一般的なコンピュータ600で実現できる。
例えば、記憶部120は、CPU601がメモリ602または外部記憶装置603を利用することにより実現可能であり、制御部110と制御部110に含まれる各処理部は、外部記憶装置603に記憶されている所定のプログラムをメモリ602にロードしてCPU601で実行することで実現可能であり、入力部101は、CPU601が入力装置606を利用することで実現可能であり、出力部102は、CPU601が出力装置605を利用することで実現可能であり、通信部103は、CPU601が通信装置604を利用することで実現可能である。
この所定のプログラムは、読書装置607を介して記憶媒体608から、あるいは、通信装置604を介してネットワークから、外部記憶装置603に記憶(ダウンロード)され、それから、メモリ602上にロードされて、CPU601により実行されるようにしてもよい。また、読書装置607を介して、記憶媒体608から、あるいは通信装置604を介してネットワークから、メモリ602上に直接ロードされ、CPU601により実行されるようにしてもよい。
図4は、検索クライアント200の機能概略図である。図示するように、検索クライアント200は、制御部210と、記憶部220と、入力部201と、出力部202と、通信部203とを備える。
記憶部220は、データ記憶部230と、鍵記憶部250と、一時記憶部280とを備える。
記憶部220は、データ記憶部230と、鍵記憶部250と、一時記憶部280とを備える。
データ記憶部230は、管理サーバ300に送信するデータである、送信文を特定する情報と通信部203を介して受信したデータを特定する情報を記憶する。本実施形態においては、データ記憶部230は、検索クライアント200が、入力部201を介して受け付けた平文キーワード241を特定する情報を記憶する。また、データ記憶部230は、通信部203を介して管理サーバ300から受信したデータを特定する情報を秘匿データとして記憶し、秘匿データから秘匿化を解除したデータを平文データとして記憶する。また、データ記憶部230は、暗号化に関連する情報をまとめた暗号化コンテキスト240を記憶する。暗号化コンテキスト240には、秘匿データの秘匿化の解除、秘匿キーワードに用いる暗号化アルゴリズム244と初期ベクトル236と指定ブロック237が記憶される。秘匿キーワードの作成元となるデータ(含む、キーワード)が128ビット以下に固定されている場合は、初期ベクトル136は用いなくてもよい。その場合、初期ベクトルは記憶しなくても良く、検索クライアント200における全ての処理で、初期ベクトルに関する処理は省略する。
鍵記憶部250は、安全性の観点から検索クライアント200が秘密に管理すべき、固定型秘密鍵260と更新型秘密鍵270を特定する情報を記憶する。固定型秘密鍵260とは、本実施形態で開示する秘匿データの更新処理後も、継続して利用し続ける秘密鍵であり、乱数マスク生成鍵251とデータ暗号化鍵252とデータ復号鍵253を特定する情報が記憶される。更新型秘密鍵270とは、本実施形態で開示する秘匿データの更新処理前後で、利用する秘密鍵が変わる秘密鍵であり、鍵マスク生成鍵271と鍵マスク用ノンス272、更新型検索鍵273を特定する情報が記憶される。更新型秘密鍵270には、従来の古い秘密鍵で平文キーワードを暗号化するための第一の検索用秘密鍵と、新たな秘密鍵で平文キーワードを暗号化するための第二の検索用秘密鍵とがある。また、上記第一の検索用秘密鍵を生成するための第一の検索用鍵マスク生成鍵および第一の検索用鍵マスク用ノンスと、上記第二の秘密鍵を生成するための第二の検索用鍵マスク生成鍵および第二の検索用鍵マスク用ノンスとがある。
一時記憶部280は、制御部210での処理で必要となる情報を記憶する。
制御部210は、全体処理部211と、暗号化部212と、復号化部213と、擬似乱数生成部214と、不可逆変換部215と、準同型関数部216と、基本演算部217と鍵生成部218を備える。ただし、秘密鍵の生成処理を行わない場合、鍵生成部218は保持しなくても良い。
制御部210は、全体処理部211と、暗号化部212と、復号化部213と、擬似乱数生成部214と、不可逆変換部215と、準同型関数部216と、基本演算部217と鍵生成部218を備える。ただし、秘密鍵の生成処理を行わない場合、鍵生成部218は保持しなくても良い。
全体処理部211は、検索クライアント200における全ての処理を制御する。例えば、全体処理部211は、入力部201を介して入力を受け付けた情報を、データ記憶部230に平文キーワード241として記憶する処理を行う。
また、全体処理部211は、平文キーワード241を出力部202に表示する処理を行う。
また、全体処理部211は、データ記憶部230に記憶した平文キーワード241を読み込み、それぞれ、暗号化部212と、擬似乱数生成部214と、不可逆変換部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを秘匿キーワードとしてデータ記憶部230に記憶する処理を行う。
また、全体処理部211は、データ記憶部230に記憶した平文キーワード241を読み込み、それぞれ、暗号化部212と、擬似乱数生成部214と、不可逆変換部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを秘匿キーワードとしてデータ記憶部230に記憶する処理を行う。
また、全体処理部211は、通信部203を介して、秘匿キーワードを管理サーバ300に送信する処理を行う。
また、全体処理部211は、通信部203を介して、秘匿データや平文データを管理サーバ300から受信する処理を行う。
また、全体処理部211は、通信部203を介して、受信した秘匿データや平文データをデータ記憶部230に記憶する処理を行う。
また、全体処理部211は、データ記憶部230に記憶した秘匿データを読み込み、それぞれ、復号化部213と、不可逆変換部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを平文データとしてデータ記憶部230に記憶する処理を行う。
また、全体処理部211は、平文データを出力部202に表示する処理を行う。さらに、全体処理部211は、管理サーバ300より、通信部203を介して受信したデータを、一時記憶部280に記憶する処理と、出力部202に表示する処理を行う。
暗号化部212は、入力されたデータを暗号化したデータを出力する処理を行う。
例えば、暗号化部212は、全体処理部211から平文キーワード241とデータ暗号化鍵252が入力され、暗号化した平文キーワードを出力する処理を行う。
例えば、暗号化部212は、全体処理部211から平文キーワード241とデータ暗号化鍵252が入力され、暗号化した平文キーワードを出力する処理を行う。
復号化部213は、入力された暗号化データを復号化し、出力する処理を行う。
例えば、復号化部213は、全体処理部211から暗号化したデータとデータ復号化鍵253が入力され、復号後、平文のデータを出力する処理を行う。
例えば、復号化部213は、全体処理部211から暗号化したデータとデータ復号化鍵253が入力され、復号後、平文のデータを出力する処理を行う。
擬似乱数生成部214は、擬似乱数を出力する処理を行う。
例えば、擬似乱数生成部214は、秘密鍵と初期ベクトルを要する、標準的な擬似乱数生成アルゴリズムの実装により実現される。このとき、秘密鍵と初期ベクトルの一方または両方の値を利用毎に変更すれば、毎回、異なる擬似乱数が生成される。また例えば、擬似乱数生成部214は、温度、時間、電力量、等の物理現象から、乱数を出力するハードウェアにより実現される。本実施形態においては、擬似乱数生成部214は、全体処理部211から入力された乱数マスク生成鍵251と初期ベクトル236を用い、擬似乱数を出力する。
例えば、擬似乱数生成部214は、秘密鍵と初期ベクトルを要する、標準的な擬似乱数生成アルゴリズムの実装により実現される。このとき、秘密鍵と初期ベクトルの一方または両方の値を利用毎に変更すれば、毎回、異なる擬似乱数が生成される。また例えば、擬似乱数生成部214は、温度、時間、電力量、等の物理現象から、乱数を出力するハードウェアにより実現される。本実施形態においては、擬似乱数生成部214は、全体処理部211から入力された乱数マスク生成鍵251と初期ベクトル236を用い、擬似乱数を出力する。
不可逆変換部215は、入力されたデータを不可逆変換したデータを出力する処理を行う。例えば、不可逆変換部215は、全体処理部211から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。
例えば、不可逆変換部215は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部215が実現できる。
例えば、不可逆変換部215は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部215が実現できる。
準同型関数部216は、入力されたデータに対し、準同型性関数の出力結果をデータとして出力する処理を行う。
ただし、準同型関数とは、関数Fと、入力変数x、入力変数yに対し、(数2)が成り立つ場合を示す。なお、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、同様に実施できる。
基本演算部217は、加算、減算、比較算や、AND、OR、XOR等の基本的な算術演算に関する処理を行う。
鍵生成部218は、暗号化アルゴリズムや乱数生成などに用いる固定型秘密鍵や更新型秘密鍵の生成処理に用いる。例えば、鍵生成部218は、標準的な鍵生成アルゴリズムの実装により実現される。また、擬似乱数生成部214を用い、固定型秘密鍵や更新型秘密鍵を生成するようにしてもよい。
以上に示した検索クライアント200は、例えば、図6(コンピュータの概略図)に示すような、CPU601と、メモリ602と、HDD等の外部記憶装置603と、CDやDVD等の可搬性を有する記憶媒体608に対して情報を読み書きする読書装置607と、キーボードやマウス等の入力装置606と、ディスプレイ等の出力装置605と、通信ネットワークに接続するためのNIC等の通信装置604と、これらを連結するシステムバス等の内部通信線(システムバスという)と、を備えた一般的なコンピュータで実現できる。
例えば、記憶部220は、CPU601がメモリ602または外部記憶装置603を利用することにより実現可能であり、制御部210と制御部210に含まれる各処理部は、外部記憶装置603に記憶されている所定のプログラムをメモリ602にロードしてCPU601で実行することで実現可能であり、入力部201は、CPU601が入力装置606を利用することで実現可能であり、出力部202は、CPU601が出力装置605を利用することで実現可能であり、通信部203は、CPU601が通信装置604を利用することで実現可能である。
この所定のプログラムは、読書装置607を介して記憶媒体608から、あるいは、通信装置604を介してネットワークから、外部記憶装置603に記憶(ダウンロード)され、それから、メモリ602上にロードされて、CPU601により実行されるようにしてもよい。また、読書装置607を介して、記憶媒体608から、あるいは通信装置604を介してネットワークから、メモリ602上に直接ロードされ、CPU601により実行されるようにしてもよい。
図5は、管理サーバ300の機能概略図である。図示するように、管理サーバ300は、制御部310と、記憶部320と、入力部301と、出力部302と、通信部303と、を備える。
記憶部320は、データ記憶部330と、鍵記憶部350と、一時記憶部380とを備える。
データ記憶部330は、通信部303を介して受信したデータを特定する情報が記憶する。ここで、本実施形態においては、通信部303を介して登録クライアント100から受信した情報を、データ記憶部330にデータベース341の構成情報として記憶する処理を行う。また、データ記憶部330は、通信部303を介して受信したキーワードを特定する情報を記憶する。ここで、本実施形態においては、通信部303を介して検索クライアント200から受信した情報を、データ記憶部330に秘匿キーワードとして記憶する処理を行う。
データ記憶部330は、通信部303を介して受信したデータを特定する情報が記憶する。ここで、本実施形態においては、通信部303を介して登録クライアント100から受信した情報を、データ記憶部330にデータベース341の構成情報として記憶する処理を行う。また、データ記憶部330は、通信部303を介して受信したキーワードを特定する情報を記憶する。ここで、本実施形態においては、通信部303を介して検索クライアント200から受信した情報を、データ記憶部330に秘匿キーワードとして記憶する処理を行う。
また、データ記憶部330は、暗号化に関連する情報をまとめた暗号化コンテキスト340とデータベース341を記憶する。暗号化コンテキスト340は、秘匿データの作成時に用いる暗号化アルゴリズム344と検索タグ長335と初期ベクトル336と指定ブロック337を記憶する。データベース341は、平文データと秘匿データの少なくとも一方の集合から構成される。例えば、DBはRDB(Relational Database)やKVS(Key-Valued System)などで構成され、データベースにおいてレコードとして管理される各データが秘匿化された秘匿データ343または平文状態の平文データ342として、または各データは秘匿化データ343と平文データ342の組で保存されている。
一時記憶部380は、制御部310での処理で必要となる情報を記憶する。
制御部310は、全体処理部311と、復号化部313と、不可逆変換部315と、準同型関数部316と、基本演算部317と、を備える。
制御部310は、全体処理部311と、復号化部313と、不可逆変換部315と、準同型関数部316と、基本演算部317と、を備える。
全体処理部311は、管理サーバ300における全ての処理を制御する。
例えば、全体処理部311は、通信部303を介して秘匿データや平文データを登録クライアント100から受信する処理を行う。
例えば、全体処理部311は、通信部303を介して秘匿データや平文データを登録クライアント100から受信する処理を行う。
また、全体処理部311は、通信部303を介して受信した秘匿データ343や平文データ342をデータ記憶部330内のデータベース341の構成情報として記憶する処理を行う。
また、全体処理部311は、通信部303を介して秘匿キーワードを検索クライアント200から受信する処理を行う。
また、全体処理部311は、通信部303を介して受信した秘匿キーワードをデータ記憶部330に記憶する処理を行う。
また、全体処理部311は、検索クライアント200または登録クライアント100より、通信部303を介して受信したデータに関する情報を、一時記憶部380に記憶する処理と、出力部302に表示する処理を行う。
復号化部313は、入力されたデータを復号化したデータを出力する処理を行う。
例えば、復号化部313は、全体処理部311から暗号化したデータと更新型検索鍵354が入力され、復号し、出力する処理を行う。
例えば、復号化部313は、全体処理部311から暗号化したデータと更新型検索鍵354が入力され、復号し、出力する処理を行う。
不可逆変換部315は、入力されたデータを不可逆変換したデータを出力する処理を行う。
例えば、不可逆変換部315は、全体処理部311から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。
例えば、不可逆変換部315は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256関数の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部115が実現できる。
例えば、不可逆変換部315は、全体処理部311から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。
例えば、不可逆変換部315は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256関数の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部115が実現できる。
準同型関数部316は、入力されたデータに対し、準同型関数の出力結果をデータとして出力する処理を行う。
ただし、準同型関数とは、関数Fと、入力変数x、入力変数yに対し、(数2)が成り立つ場合を示す。なお、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
基本演算部317は、加算、減算、比較算や、AND、OR、XOR等の基本的な算術演算に関する処理を行う。
以上に示した管理サーバ300は、例えば、図6(コンピュータの概略図)に示すような、CPU601と、メモリ602と、HDD等の外部記憶装置603と、CDやDVD等の可搬性を有する記憶媒体608に対して情報を読み書きする読書装置607と、キーボードやマウス等の入力装置606と、ディスプレイ等の出力装置605と、通信ネットワークに接続するためのNIC等の通信装置604と、これらを連結するシステムバス等の内部通信線(システムバスという)とを備えた一般的なコンピュータで実現できる。
例えば、記憶部120、220、320は、CPU601がメモリ602または外部記憶装置603を利用することにより実現可能であり、制御部110、210、310と制御部110、210、310に含まれる各処理部は、外部記憶装置603に記憶されている所定のプログラムをメモリ602にロードしてCPU601で実行することで実現可能であり、入力部101、201、301は、CPU601が入力装置606を利用することで実現可能であり、出力部102、202、302は、CPU601が出力装置605を利用することで実現可能であり、通信部103、203、303は、CPU601が通信装置604を利用することで実現可能である。
この所定のプログラムは、読書装置607を介して記憶媒体608から、あるいは、通信装置604を介してネットワークから、外部記憶装置603に記憶(ダウンロード)され、それから、メモリ602上にロードされて、CPU601により実行されるようにしてもよい。また、読書装置607を介して記憶媒体608から、あるいは通信装置604を介してネットワークから、メモリ602上に直接ロードされ、CPU601により実行されるようにしてもよい。
<秘匿データの登録フロー>
ネットワーク400を経由し、登録クライアント100が秘匿データを管理サーバ300へ登録する処理を示すシーケンスを説明する。
ネットワーク400を経由し、登録クライアント100が秘匿データを管理サーバ300へ登録する処理を示すシーケンスを説明する。
登録クライアント100は、入力部101を経由し、ユーザから入力された情報を平文データ131として、記憶部120へ記憶する処理を行う(S101)。
登録クライアント100は、制御部110により、秘匿データを作成する処理を行う(S102)。
登録クライアント100は、通信部103から、ネットワーク400を経由し、平文データ1と秘匿データの両方またはいずれか一方を、管理サーバ300へ、送信する処理を行う(S103)。
管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント100が送信した平文データと秘匿データの両方またはいずれか一方を受信する処理を行う(S104)。
管理サーバ300は、制御部310により、受信した平文データと秘匿データの両方またはいずれか一方を、データベース341の構成情報として、記憶部320へ記憶する処理を行う(S105)。
管理サーバ300は、平文データや秘匿データの登録処理の成否を、通信部303から、ネットワーク400を経由し、登録クライアントへ送信する処理を行う(S106)。
登録クライアント100は、通信部103から、ネットワーク400を経由し、管理サーバ300が送信した、平文データや秘匿データの登録処理の成否を、受信する処理を行う(S107)。
登録クライアント100は、出力部102を経由し、ユーザに、登録処理の成否を含む、登録情報について、表示する処理を行う(S108)。
以上が、ネットワーク400を経由し、登録クライアント100が、秘匿データを管理サーバ300へ登録する処理を示すシーケンスである。
なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。例えば、S102で作成した秘匿データを、更に更新型検索鍵や更新型秘密鍵を用い、その一部または全部を二重に暗号化する処理を付け加えても良い。
<秘匿データの検索フロー>
ネットワーク400を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスを説明する。
ネットワーク400を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスを説明する。
検索クライアント200は、入力部201を経由し、ユーザから入力された情報を平文キーワード241として、記憶部220へ記憶する処理を行う(S201)。
検索クライアント200は、制御部210により、平文キーワードから秘匿キーワードを作成する処理を行う(S202)。
検索クライアント200は、通信部203から、ネットワーク400を経由し、秘匿キーワードを管理サーバ300へ送信する処理を行う(S203)。
管理サーバ300は、通信部303から、ネットワーク400を経由し、検索クライアント200が送信した秘匿キーワードを、受信する処理を行う(S204)。
管理サーバ300は、制御部310により、データベース341から、秘匿キーワードに関係する、秘匿データ343を検索する処理を行う(S205)。
管理サーバ300は、秘匿キーワードに該当する検索結果(秘匿データと平文データの両方またはいずれか一方で構成される)を、通信部303から、ネットワーク400を経由し、検索クライアントへ送信する処理を行う(S206)。
検索クライアント200は、通信部203から、ネットワーク400を経由し、管理サーバ300が送信した、検索結果を受信する処理を行う(S207)。
秘匿データが検索結果に含まれる場合、検索クライアント200は、制御部210により、秘匿キーワードに該当する検索結果から、平文データを復元する(S208)。
検索クライアント200は、出力部202を経由し、平文データを記憶部220に記憶する(S209)。
検索クライアント200は、平文データを出力部202に表示する(S210)。
検索クライアント200は、平文データを出力部202に表示する(S210)。
以上が、ネットワーク400を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスである。
なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。また、新たな処理を追加しても良い。例えば、S205において、検索する秘匿データの一部または全部が更新型検索鍵で二重に暗号化されている場合、管理サーバ300は、更新型検索鍵による秘匿データの復号処理を付け加える。同様に、S205において、秘匿キーワードの一部または全部が更新型検索鍵で二重に暗号化されている場合も、管理サーバ300は、更新型検索鍵による秘匿キーワードの復号処理を付け加える。
<秘匿データの生成フロー>
登録クライアント100における秘匿データの生成処理の手順を図7に示す。登録クライアント100の全体処理部111は、秘匿データの生成処理に必要な作業領域を一時記憶部180に確保する。
登録クライアント100における秘匿データの生成処理の手順を図7に示す。登録クライアント100の全体処理部111は、秘匿データの生成処理に必要な作業領域を一時記憶部180に確保する。
登録クライアント100の全体処理部111は、平文データ131を取得し、暗号化部112が処理可能なサイズに分割する。登録クライアント100の全体処理部111は、初期ベクトル136、データ暗号化鍵152、分割されたn個の平文ブロックを暗号化部112に入力し、ECBモード、CBCモード等の暗号化アルゴリズム141に従って暗号化された、n個の中間暗号化データC1、C2、……Cnを取得する。例えば、暗号化アルゴリズム141として鍵長256ビットAES暗号のCBCモードが指定されている場合、平文データ131は128ビット毎の平文ブロックに分割され、暗号化部112はデータ暗号化鍵152と初期ベクトル136を用い、AES暗号のCBCモードで暗号化された中間暗号化データC1、C2、……Cnを出力する。
登録クライアント100の全体処理部111は、擬似乱数生成部114に初期ベクトル136と乱数マスク生成鍵151を入力し、n個分の中間暗号化データに用いる乱数ストリームを生成する。例えば、図11内の図11(a)に示すように、初期ベクトル136と定数を連結したデータと乱数マスク生成鍵151を擬似乱数生成部114に入力し、n個分のブロックに相当する乱数ストリームR1、R2、……Rnを生成する。
登録クライアント100の全体処理部111は、擬似乱数生成部114に鍵マスク用ノンス172と鍵マスク生成鍵171を入力し、n個分の中間暗号化データに用いる鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、鍵マスク用ノンス172と定数を連結したデータと鍵マスク生成鍵171を擬似乱数生成部114に入力し、n個分のブロックに相当する鍵ストリームT1、T2、……Tnを生成する。
登録クライアント100の全体処理部111は、基本演算部117に中間暗号化データと乱数ストリームと鍵ストリームを入力し、基本演算部117は排他的論理和(XOR算)を計算し、出力結果D1、D2、……Dnを暗号文本体として取得する。
(数3)
Di=Ci xor Ri xor Ti(i=1、・・・n)
(数3)
Di=Ci xor Ri xor Ti(i=1、・・・n)
登録クライアント100の全体処理部111は、準同型関数部116に乱数ストリームの全部または一部を入力し、出力されたデータを関数値として取得する。例えば、図7に示すように、乱数ストリームの一部であるRnを準同型関数部116に入力し、その出力結果を関数値F(Rn)とする。関数値を不可逆変換部115に入力し、出力されたデータを不可逆変換値として取得する。例えば、不可逆変換部115がハッシュ関数SHA256を実装している場合、そのハッシュ値256ビットが不可逆変換値H(F(Rn))である。
さらに、不可逆変換部115は、256ビットのハッシュ値のうち、検索タグ長135に記録されたビット長を秘匿データ用の検索タグDn+1として取得する。例えば、不可逆変換部115は、最下位32ビットを抽出し、秘匿データ用の検索タグとする。ただし、不可逆変換値Hから、抽出するビットは最下位ビットからに限らず、最上位ビットから抽出、または既定の箇所あるいはランダムな箇所からビットを抽出してもよい。
登録クライアント100の全体処理部111は、初期ベクトル136をD0とし、暗号文本体D1、D2、……Dn、検索タグDn+1を連結したデータを秘匿データとしてデータ記憶部130に格納する。
登録クライアント100の全体処理部111は、秘匿データの生成処理用に確保した作業領域を一時記憶部180から解放する。
秘匿データの復号処理については後述するが、前述の秘匿データの生成処理において、鍵マスク生成鍵171と鍵マスク用ノンス172から生成した鍵ストリームを用いた。従って、秘匿データの生成には、鍵マスク生成鍵171と鍵マスク用ノンス172が必要とされる。また、後述する復号処理にも、鍵マスク生成鍵171と鍵マスク用ノンス172と同様に鍵マスク生成鍵271と鍵マスク用ノンス272が必要とされる。
なお、秘匿データの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
また、秘匿データの生成を、登録クライアント100ではなく、検索クライアント200が処理しても良い。
<秘匿キーワードの生成フロー>
検索クライアント200における秘匿キーワードの生成処理の手順を図8に示す。
検索クライアント200における秘匿キーワードの生成処理の手順を図8に示す。
検索クライアント200の全体処理部211は、秘匿キーワードの生成処理に必要な作業領域を一時記憶部280に確保する。
検索クライアント200の全体処理部211は、平文キーワード241を取得し、指定ブロック237の記述に従い、平文ブロックを生成する。検索クライアント200の全体処理部211は、初期ベクトル236、データ暗号化鍵252、平文ブロックを暗号化部212に入力し、暗号化アルゴリズム244に従って暗号化された、中間暗号化キーワードCnを取得する。例えば、暗号化アルゴリズム244として鍵長256ビットAES暗号CBCモード、指定ブロック237にn番目が指定されている場合、全体処理部211は平文キーワード241を128ビット毎の平文ブロックに分割し、暗号化部112はデータ暗号化鍵252と初期ベクトル236を用い、AES暗号のCBCモードで暗号化したデータC1、C2、……Cnから、n番目のデータであるCnを中間暗号化キーワードとして出力する。
検索クライアント200の全体処理部211は、擬似乱数生成部214に初期ベクトル236と乱数マスク生成鍵251を入力し、中間暗号化キーワードのマスクに用いる、乱数ストリームを生成する。例えば、指定ブロック237にn番目が指定されている場合、中間暗号化キーワードCnのサイズ以上の乱数ストリームPnを生成する。このとき、乱数ストリームを生成する毎に、初期ベクトル250と乱数マスク生成鍵251の両方またはその一方のデータ値が更新されるため、乱数ストリームのデータ値は毎回異なる。
検索クライアント200の全体処理部211は、擬似乱数生成部214に鍵マスク用ノンス272と鍵マスク生成鍵271を入力し、中間暗号化キーワードのマスクに用いる鍵ストリームを生成する。例えば、指定ブロック237にn番目が指定されている場合、中間暗号化キーワードCnのサイズ以上の鍵ストリームTnを生成する。
検索クライアント200の全体処理部211は、基本演算部217に中間暗号化キーワードと乱数ストリームと鍵ストリームを入力し、基本演算部217は排他的論理和(XOR算)を計算し、出力結果を暗号化キーワード本体として取得する。例えば、中間暗号化キーワードCn、乱数ストリームPn、鍵ストリームTn、暗号化キーワードWnには次式が成り立つ。
(数4)
Wn=Cn xor Pn xor Tn。
(数4)
Wn=Cn xor Pn xor Tn。
検索クライアント200の全体処理部211は、準同型関数部216に乱数ストリームPnを入力し、出力されたデータを関数値F(Pn)として取得する。検索クライアント200の全体処理部211は、更新型検索鍵273、初期ベクトル236と前記関数値を暗号化部212に入力し、出力されたデータを秘匿キーワード用の検索タグE(F(Pn))をWn+1として取得する。
検索クライアント200の全体処理部211は、初期ベクトル236、暗号化キーワード本体、秘匿キーワード用の検索タグを連結し、これを秘匿キーワードとしてデータ記憶部230に格納する。
検索クライアント200の全体処理部は、秘匿キーワードの生成処理用に確保した作業領域を一時記憶部280から解放する。
このように、秘匿キーワードの生成処理において、鍵マスク生成鍵271と鍵マスク用ノンス272から生成した鍵ストリームを用いる。従って、秘匿キーワードの生成には、鍵マスク生成鍵271と鍵マスク用ノンス272が必要とされる。
なお、秘匿キーワードの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、新たな処理を付け加えても良い。例えば、秘匿キーワードの検索タグは更新型検索鍵で暗号化されているが、同様に、秘匿キーワードの他のブロックである暗号化本体を二重に暗号化する処理を付け加えても良い。
また、秘匿キーワードの生成を、検索クライアント200ではなく、登録クライアント100が処理しても良い。
<秘匿データの一致比較フロー>
管理サーバ300における秘匿データ343と秘匿キーワードの一致比較処理の手順を図9に示す。具体的には、管理サーバ300は、秘匿データ343と秘匿キーワードを用い、秘匿化される前の平文データと平文キーワードの値が同じであるかを検知する処理手順を示す。
管理サーバ300における秘匿データ343と秘匿キーワードの一致比較処理の手順を図9に示す。具体的には、管理サーバ300は、秘匿データ343と秘匿キーワードを用い、秘匿化される前の平文データと平文キーワードの値が同じであるかを検知する処理手順を示す。
管理サーバ300の全体処理部311は、秘匿データ343の一致比較処理に必要な作業領域を一時記憶部380に確保する。
管理サーバ300の全体処理部311は、データベース341内に格納されている秘匿データ343を取得する。さらに、全体処理部311は、秘匿データ343における暗号文本体から、指定ブロック337に該当する暗号文本体を取り出す。例えば、指定ブロック337にn番目が指定されている場合、全体処理部311は、秘匿データ343を初期ベクトル、暗号文本体、秘匿データの検索タグの連結データとみなし、該当する暗号文本体からn番目のブロックに該当する暗号文本体ブロックDnを取り出す。
管理サーバ300の全体処理部311は、秘匿キーワードにおける暗号化キーワード本体を取得する。例えば、秘匿キーワードWを初期ベクトルW0、暗号化キーワード本体Wn、秘匿キーワード用の検索タグWn+1と3分割されたブロックの集合とみなし、暗号化キーワード本体に該当するWnを取り出す。
管理サーバ300の全体処理部311は、基本演算部317に暗号文本体ブロックと暗号化キーワード本体を入力し、基本演算部317はその排他的論理和(XOR算)を計算し、出力結果を取得する。例えば、暗号文本体ブロックDnと暗号化キーワード本体Wnに対し、(数5)が成り立つ。
(数5)
Dn xor Wn =(Cn xor Rn xor Tn) xor (Cn xor Pn xor Tn)
(数5)
Dn xor Wn =(Cn xor Rn xor Tn) xor (Cn xor Pn xor Tn)
ここで、平文データと平文キーワードの値が同じ場合、(数5)から(数6)が導ける。
(数6)
Dn xor Wn = Rn xor Pn
(数6)
Dn xor Wn = Rn xor Pn
即ち、中間暗号化データと中間暗号化キーワードの値が抹消され、さらにそれらをマスクしていた鍵ストリームの値も同様に抹消される。従って、(数6)に示すように、暗号文本体ブロックDnと暗号化キーワード本体Wnの排他的論理和は、乱数ストリーム(RnとPn)の情報のみを残す。
管理サーバ300の全体処理部311は、基本演算部317の出力結果を準同型関数部316に入力し、準同型関数部316の出力結果である関数値F(Dn xor Wn)を取得する。なお、(数6)より、関数値F(Dn xor Wn)には、(数7)が成り立つ。
(数7)
F(Dn xor Wn)=F(Rn xor Pn)
(数7)
F(Dn xor Wn)=F(Rn xor Pn)
管理サーバ300の全体処理部311は、秘匿キーワードにおける初期ベクトルW0と秘匿キーワードの検索タグWn+1を取得し、更新型検索鍵354と共に復号化部313に入力し、復号された関数値F(Pn)を取得する。
管理サーバ300の全体処理部311は、基本演算部317に関数値F(Dn xor Wn)と関数値F(Pn)を入力し、基本演算部317はその排他的論理和(XOR算)を計算し、出力された関数値F(R'n)を取得する。計算式として、(数8)が成り立つ。
(数8)
Z = F(Dn xor Wn) xor F(Pn)
= F(Rn xor Pn) xor F(Pn)
= F(Rn)
(数8)
Z = F(Dn xor Wn) xor F(Pn)
= F(Rn xor Pn) xor F(Pn)
= F(Rn)
管理サーバ300の全体処理部311は、不可逆変換部315に関数値F(Rn)を入力し、出力されたデータを不可逆変換値H(F(Rn))を取得する。
管理サーバ300の全体処理部311は、不可逆変換値Hから、検索タグ長335に記録されたビット長を抽出する。例えば、最下位32ビットを抽出する。また、最下位ビットからに限らず、最上位ビットから抽出、既定の箇所あるいはランダムな箇所からビットを抽出してもよい。
基本演算部317は、抽出したデータと秘匿データの検索タグを比較し、同一であれば一致比較結果の該当を意味するTRUE(=1)を、同一でなければ一致比較結果の非該当を意味するFALSE(=0)を出力する。
管理サーバ300の全体処理部311は、秘匿データの一致比較処理用に確保した作業領域を一時記憶部380から解放する。
なお、秘匿データと秘匿キーワードの一致比較手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、一致比較結果の回答にTRUEやFALSE以外を用いてもよく、二値の代わりに多値の回答でもよい。
<秘匿データの復号フロー>
検索クライアント200における秘匿データの復号処理の手順を図10に示す。
検索クライアント200の全体処理部211は、秘匿データの復号処理に必要な作業領域を一時記憶部280に確保する。
検索クライアント200における秘匿データの復号処理の手順を図10に示す。
検索クライアント200の全体処理部211は、秘匿データの復号処理に必要な作業領域を一時記憶部280に確保する。
検索クライアント200の全体処理部211は秘匿データを取得する。さらに、秘匿データから、初期ベクトルを取得する。例えば、秘匿データをD0、D1、D2、……Dn、Dn+1のブロックの集合とみなし、1番目のブロックである初期ベクトルD0を取得する。
検索クライアント200の全体処理部211は、擬似乱数生成部214に初期ベクトルと乱数マスク生成鍵251を入力し、中間暗号化キーワードのマスクの解除に用いる、乱数ストリームを生成する。例えば、全体処理部211は、図11内の図11(a)に示すように、初期ベクトルと定数を連結したデータと乱数マスク生成鍵を擬似乱数生成部214に入力し、n個分のブロックに相当する乱数ストリームR1、R2、……Rnを生成する。
検索クライアント200の全体処理部211は、擬似乱数生成部214に鍵マスク用ノンス272と鍵マスク生成鍵271を入力し、n個分の中間暗号化データに用いる鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、鍵マスク用ノンス272と定数を連結したデータと鍵マスク生成鍵271を擬似乱数生成部214に入力し、n個分のブロックに相当する鍵ストリームT1、T2、……Tnを生成する。
検索クライアント200の全体処理部211は、基本演算部217に暗号文本体と乱数ストリームと鍵ストリームを入力し、基本演算部217は排他的論理和(XOR算)を計算し、出力結果C1、C2、……Cnを中間暗号化データとして取得する。
(数9)
Ci=Di xor Ri xor Ti(i=1、・・・n)
(数9)
Ci=Di xor Ri xor Ti(i=1、・・・n)
検索クライアント200の全体処理部211は、暗号化アルゴリズム244、初期ベクトル236、データ復号化鍵253、分割された中間暗号化データを復号化部213に入力し、ECBモード、CBCモード等の暗号化アルゴリズム244に従って暗号化された、n個の中間暗号化データC1、C2、……Cnを取得する。例えば、暗号化アルゴリズム244として鍵長256ビットAES暗号のCBCモードが指定されている場合、全体処理部は、中間暗号化データを128ビット毎のブロックに分割し、復号化部213によりデータ復号化鍵253と初期ベクトルを用いて復号され、AES暗号のCBCモードで復号化された平文ブロックM1、M2、……Mnを出力する。
最後に、平文ブロックM1、M2、・・・・・Mnを連結し、平文データとしてデータ記憶部230に格納する。
検索クライアント200の全体処理部は、秘匿データの復号処理用に確保した作業領域を一時記憶部280から解放する。
なお、秘匿データの復号手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
また、秘匿データの復号を、検索クライアント200ではなく、登録クライアント100が処理しても良い。
<更新型秘密鍵の更新フロー>
登録クライアント100における更新型秘密鍵170の更新処理を示す。この処理を利用することにより、古い更新型秘密鍵を失効させ、新しい更新型秘密鍵を有する登録クライアントと検索クライアントだけが正常な動作を実現できるようになる。
登録クライアント100における更新型秘密鍵170の更新処理を示す。この処理を利用することにより、古い更新型秘密鍵を失効させ、新しい更新型秘密鍵を有する登録クライアントと検索クライアントだけが正常な動作を実現できるようになる。
登録クライアント100は、鍵生成部118を用い、更新型秘密鍵170を生成する(S1001)。例えば、鍵生成アルゴリズムを用い、鍵マスク生成鍵171と鍵マスク用ノンス172をそれぞれ独立に生成する。なお、更新型秘密鍵170は、鍵マスク生成鍵171と鍵マスク用ノンス172から構成されるが、両方を生成してもよく、一方を生成してもよい。
登録クライアント100は、新たに生成した更新型秘密鍵170を用い、ネットワーク400経由で管理サーバ300における秘匿データ343を更新する(S1002)。秘匿データの更新フローについては後述する。
秘匿データの更新フロー終了後、登録クライアントはS1001で生成した更新型秘密鍵170を新しい更新型秘密鍵170として、鍵記憶部150に登録する(S1003)。
登録クライアント100は、ネットワーク経由で、検索クライアント200へ更新型秘密鍵を登録する(S1004)。
なお、更新型秘密鍵170の更新処理の手順は、必ずしも上記の記述通りの順序に従う必要はない。
また、処理の一部を別の処理で代替しても良い。例えば、S1001において、更新型秘密鍵170を生成する代わりに、入力部101または通信部103経由で、更新型秘密鍵170を取得しても良い。
また、新たな処理を付け加えても良い。例えば、登録クライアント100はS1003で生成した新しい更新型秘密鍵170を登録後、古い更新型秘密鍵170は削除しても良い。
また、更新型秘密鍵170の更新処理を、登録クライアント100ではなく、検索クライアント200が処理しても良い。
<更新型検索鍵の更新フロー>
検索クライアント200における更新型検索鍵273の更新処理を示す。この処理を利用することにより、古い更新型検索鍵を失効させ、新しい更新型検索鍵を有する検索クライアント200と管理サーバ300だけが正常な動作を実現できるようになる。
検索クライアント200における更新型検索鍵273の更新処理を示す。この処理を利用することにより、古い更新型検索鍵を失効させ、新しい更新型検索鍵を有する検索クライアント200と管理サーバ300だけが正常な動作を実現できるようになる。
検索クライアント200は、鍵生成部218を用い、更新型秘密鍵270の一要素である、更新型検索鍵273を生成する(S1101)。例えば、鍵生成アルゴリズムを用い、更新型検索鍵273を生成する。
検索クライアント200は、ネットワーク経由400で、管理サーバ300に更新型検索鍵273を登録する (S1102)。
検索クライアントはS1001で生成した更新型検索鍵273を新しい更新型検索鍵273として、鍵記憶部250に登録する(S1003)。
なお、更新型検索鍵273の更新処理の手順は、必ずしも上記の記述通りの順序に従う必要はない。
また、処理の一部を別の処理で代替しても良い。例えば、S1101において、更新型検索鍵273を生成する代わりに、入力部201または通信部203経由で、更新型検索鍵273を取得しても良い。
また、新たな処理を付け加えても良い。例えば、検索クライアント200はS1103で生成した新しい更新型検索鍵273を登録後、古い更新型検索鍵273は削除しても良い。
また、更新型検索鍵273の更新処理を、検索クライアント200ではなく、管理サーバ300が処理しても良い。その際には、S1102は、検索クライアント200は、ネットワーク400経由で、管理サーバ300から、更新型検索鍵273を取得する。
<秘匿データの更新フロー>
登録クライアント100の更新型秘密鍵の更新に伴い、管理サーバ300が預かる秘匿データの更新処理(古い更新型秘密鍵から新しい更新型秘密鍵の付け替えに対応)を行う。ネットワーク400を経由し、登録クライアント100が送信した差分鍵マスクを用い、管理サーバ300がデータベース341における秘匿データ343を更新する処理を示すシーケンスを説明する。
登録クライアント100の更新型秘密鍵の更新に伴い、管理サーバ300が預かる秘匿データの更新処理(古い更新型秘密鍵から新しい更新型秘密鍵の付け替えに対応)を行う。ネットワーク400を経由し、登録クライアント100が送信した差分鍵マスクを用い、管理サーバ300がデータベース341における秘匿データ343を更新する処理を示すシーケンスを説明する。
登録クライアント100は、通信部103から、ネットワーク400を経由し、秘匿データ343のサイズを、管理サーバ300へ、問い合わせを送信する処理を行う(S301)。
管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント100が送信した問い合わせを受信する処理を行う(S302)。
管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント300へ秘匿データのサイズを送信する処理を行う(S303)。
登録クライアント100は、通信部103から、ネットワーク400を経由し、管理サーバ300が送信した、秘匿データのサイズを受信する処理を行う(S304)。
管理サーバ300の全体処理部311は、基本演算部317を用い、秘匿データのサイズから初期ベクトルと秘匿データ用の検索タグのサイズを差し引き、暗号文本体のサイズを算出する(S305)。
管理サーバ300の全体処理部311は、暗号文本体以上となるサイズを、生成する差分鍵マスクのサイズとみなし、そのサイズを登録クライアント100に送信する(S306)。
登録クライアント100は、制御部110により、管理サーバ300から受信した上記サイズの差分鍵マスクを生成する処理を行う(S307)。
登録クライアント100は、通信部103から、ネットワーク400を経由し、生成した差分鍵マスクを管理サーバ300へ送信する処理を行う(S308)。
管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント100が送信した差分鍵マスクを受信する処理を行う(S309)。
管理サーバ300は、制御部310により、受信した差分鍵マスクを用い、データベース341の構成情報である秘匿データ343の更新処理を行い、更新した秘匿データ343を記憶部320へ記憶する処理を行う(S310)。
管理サーバ300は、秘匿データ343の更新処理の成否を、通信部303から、ネットワーク400を経由し、登録クライアント100へ送信する処理を行う(S311)。
登録クライアント100は、通信部103から、ネットワーク400を経由し、管理サーバ300が送信した、秘匿データ343の更新処理の成否を、受信する処理を行う(S312)。
登録クライアント100は、出力部102を経由し、ユーザに秘匿データ343の更新処理の成否情報を表示する処理を行う(S313)。
なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。また、処理の一部を別の処理で代替しても良い。例えば、S306において、予め定められた値を差分鍵マスクのサイズとみなしても良い。また、更に処理を追加しても良い。例えば、S310終了後、登録クライアントは更新前の秘匿データに対応する、更新型秘密鍵を削除する処理を行ってもよい。また、登録クライアント100の代わりに、検索クライアント200が登録クライアント100の役割を実施しても良い。
なお、上記では、更新型秘密鍵の更新処理のみを説明したが、更新型検索鍵の更新処理もあわせて行っても良い。更新型検索鍵の更新処理は、検索クライアントが新しい更新型検索鍵を管理サーバへ送信、管理サーバがそれを預かればよい。また更新型検索鍵の更新処理は検索クライアントと管理サーバで行っても良い。また、登録クライアント、検索クライアント、管理サーバが複数存在する場合、それぞれの登録クライアントまたは検索クライアント別に異なる更新型検索鍵を管理サーバが利用するようにしても良い。
<差分鍵マスクの生成フロー>
差分鍵マスクとは、登録クライアント100が保有する新しい秘密鍵と古い秘密鍵から、それぞれ独立に生成した2種類の鍵ストリームの、差分を指す。2種類の秘密鍵から生成した、2種類の鍵ストリームの差分である差分鍵マスクによって、後述するように、管理サーバ300は秘匿データを古い秘密鍵から新しい秘密鍵に対応する秘匿データに更新できる。
差分鍵マスクとは、登録クライアント100が保有する新しい秘密鍵と古い秘密鍵から、それぞれ独立に生成した2種類の鍵ストリームの、差分を指す。2種類の秘密鍵から生成した、2種類の鍵ストリームの差分である差分鍵マスクによって、後述するように、管理サーバ300は秘匿データを古い秘密鍵から新しい秘密鍵に対応する秘匿データに更新できる。
ここでは、登録クライアント100における差分鍵マスクの生成処理の手順を、図12を用いて示す。
登録クライアント100は、差分鍵マスクの生成処理に必要な従来の鍵マスク用ノンス172と従来の鍵マスク生成鍵171に加え、新しい鍵マスク用ノンス172’と新しい鍵マスク生成鍵171’を保有する。
登録クライアント100の全体処理部111は、差分鍵マスクの生成処理に必要な作業領域を一時記憶部180に確保する。
登録クライアント100の全体処理部111は、擬似乱数生成部114に従来の鍵マスク用ノンス172と従来の鍵マスク生成鍵171を入力し、n個分の中間暗号化データに用いる従来の鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、従来の鍵マスク用ノンス172と定数を連結したデータと従来の鍵マスク生成鍵171を擬似乱数生成部114に入力し、n個分のブロックに相当する従来の鍵ストリームT1、T2、……Tnを生成する。
登録クライアント100の全体処理部111は、擬似乱数生成部114に新しい鍵マスク用ノンス172’と新しい鍵マスク生成鍵171’を入力し、n個分の中間暗号化データに用いる新しい鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、新しい鍵マスク用ノンス172’と定数を連結したデータと新しい鍵マスク生成鍵171’を擬似乱数生成部114に入力し、n個分のブロックに相当する新しい鍵ストリームT1’、T2’、……Tn’を生成する。
登録クライアント100の全体処理部111は、基本演算部117に従来の鍵ストリームと新しい鍵ストリームを入力し、基本演算部117は排他的論理和(XOR算)を計算し、出力結果S1、S2、……Snを差分鍵マスクとして取得する。
(数10)
Si=Ti xor Ti’(i=1、・・・n)
(数10)
Si=Ti xor Ti’(i=1、・・・n)
新しい鍵ストリームTi’は従来の鍵ストリームTiでマスクされており、このマスクを解除できるのは、従来の鍵マスク用ノンス172と従来の鍵マスク生成鍵171を保有する登録クライアント100または検索クライアント200に限られる。従って、管理サーバ300に新しい鍵ストリームTi’または従来の鍵ストリームTiの値が直接的に漏洩することはない。
登録クライアント100の全体処理部111は、差分鍵マスクの生成処理用に確保した作業領域を一時記憶部180から解放する。
なお、差分鍵マスクの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
また、差分鍵マスクの生成を、登録クライアント100ではなく、検索クライアント200が処理しても良い。この場合、検索クライアント200が保有する従来の鍵マスク用ノンス272と従来の鍵マスク生成鍵271に加え、新しい鍵マスク用ノンス272’と新しい鍵マスク生成鍵271’を用いればよい。これにより、差分鍵マスクを用いて秘匿キーワードを更新することができる。
<秘匿化データの更新フロー>
管理サーバ300における秘匿データの更新処理の手順を図13に示す。
管理サーバ300の全体処理部311は、秘匿データ343の再暗号化処理に必要な作業領域を一時記憶部380に確保する。
管理サーバ300における秘匿データの更新処理の手順を図13に示す。
管理サーバ300の全体処理部311は、秘匿データ343の再暗号化処理に必要な作業領域を一時記憶部380に確保する。
管理サーバ300の全体処理部311は、データベース341内に格納されている秘匿データ343を取得する。さらに、秘匿データ343から、暗号文本体を取り出す。
管理サーバ300の全体処理部311は、基本演算部317に従来の暗号文本体と従来の鍵ストリームを入力し、排他的論理和(XOR算)を計算し、出力結果D1’、D2’、……Dn’を新しい暗号文本体として取得する。
ここで計算式として、(数11)が成り立つ。
(数11)
Di’=Di xor Si
=(Ci xor Ri xor Ti)xor (Ti xor Ti’)
=Ci xor Ri xor Ti’ (i=1、・・・n)
(数11)
Di’=Di xor Si
=(Ci xor Ri xor Ti)xor (Ti xor Ti’)
=Ci xor Ri xor Ti’ (i=1、・・・n)
(数11)より、従来の暗号文本体は、中間暗号文Ciと乱数ストリームRiと従来の鍵ストリームTiの排他的論理和(xor)で算出(Di= Ci xor Ri xor Ti)されていたが、新しい暗号文本体は中間暗号文Ciと乱数ストリームRiと新しい鍵ストリームTi’の排他的論理和(xor)で算出(Di’= Ci xor Ri xor Ti’)される。従って、従来の鍵ストリームTiが新しい鍵ストリームTi’に変更された。
管理サーバ300の全体処理部は、初期ベクトル336と、暗号文本体D1’、D2’、……Dn’、検索タグDn+1を連結したデータを新しい秘匿データとしてデータ記憶部に格納する。
この秘匿データの復号処理に、従来の鍵マスク生成鍵と鍵マスク用ノンスではなく、新しい鍵マスク生成鍵と鍵マスク用ノンスを必要とする、新しい秘匿データが生成された。
管理サーバ300の全体処理部は、秘匿データ343の更新処理用に確保した作業領域を一時記憶部380から解放する。
なお、管理サーバ300における秘匿データの更新手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
(実施の形態2)
第二の実施形態では、登録クライアント100と検索クライアント200と管理サーバ300とがネットワーク500とネットワーク600で接続されたシステムにおいて、登録クライアント100が生成した秘匿データを管理サーバ300に登録し、管理サーバ300が差分鍵マスクによって検索クライアント200が保有する秘密鍵に対応させる秘匿データに更新し、検索クライアント200がその秘匿データの検索を管理サーバ300に依頼し、管理サーバ300から取得した秘匿データを復号できることを示す。複数の検索クライアント200がそれぞれ異なる秘密鍵を保有する場合も、管理サーバ300がもつ差分鍵マスクによってそれぞれの検索クライアント200が保有する秘密鍵に対応させる秘匿データに更新し、検索クライアントが復号可能な状態に秘匿データを変更できる。
第二の実施形態では、登録クライアント100と検索クライアント200と管理サーバ300とがネットワーク500とネットワーク600で接続されたシステムにおいて、登録クライアント100が生成した秘匿データを管理サーバ300に登録し、管理サーバ300が差分鍵マスクによって検索クライアント200が保有する秘密鍵に対応させる秘匿データに更新し、検索クライアント200がその秘匿データの検索を管理サーバ300に依頼し、管理サーバ300から取得した秘匿データを復号できることを示す。複数の検索クライアント200がそれぞれ異なる秘密鍵を保有する場合も、管理サーバ300がもつ差分鍵マスクによってそれぞれの検索クライアント200が保有する秘密鍵に対応させる秘匿データに更新し、検索クライアントが復号可能な状態に秘匿データを変更できる。
図14は、本実施形態のシステムの概略図である。図示するように、検索処理システムは、登録クライアント100と、検索クライアント200と、管理サーバ300とを備え、登録クライアント100と管理サーバ300がネットワーク500、検索クライアント200と管理サーバ300がネットワーク600を介して情報を送受信できるよう構成されている。
本実施形態における登録クライアント100と検索クライアント200は、第一の実施の形態と同様であるが、更新型秘密鍵170における鍵マスク生成鍵171と鍵マスク用ノンス172と、更新型秘密鍵270における鍵マスク生成鍵271と鍵マスク用ノンス272は、その少なくとも一方は値が異なる。
本実施形態における管理サーバ300は、図15に示すように、第一の実施の形態と同様であるが、記憶部320における鍵記憶部350において差分鍵マスク355を保有するところが異なる。差分鍵マスク355は、登録クライアント100が保有する鍵マスク生成鍵171と鍵マスク用ノンス172と、検索クライアント200が保有する鍵マスク生成鍵271と鍵マスク用ノンス272の組み合わせ全数またはその一部を用いて生成される。差分鍵マスク355の生成処理は、後述するように、登録クライアント100が保有する鍵マスク生成鍵171と鍵マスク用ノンス172と、検索クライアント200が保有する鍵マスク生成鍵271と鍵マスク用ノンス272を用いる。
<差分鍵マスクの生成フロー>
登録クライアント100による差分鍵マスクの生成処理の手順を示す。
登録クライアント100は、鍵マスク用ノンス171と鍵マスク生成鍵172、検索クライアント200に配布する鍵マスク用ノンス271と鍵マスク生成鍵272を保有する。
登録クライアント100による差分鍵マスクの生成処理の手順を示す。
登録クライアント100は、鍵マスク用ノンス171と鍵マスク生成鍵172、検索クライアント200に配布する鍵マスク用ノンス271と鍵マスク生成鍵272を保有する。
登録クライアント100の全体処理部111は、差分鍵マスクの生成処理に必要な作業領域を一時記憶部180に確保する。
登録クライアント100の全体処理部111は、擬似乱数生成部114に鍵マスク用ノンス171と鍵マスク生成鍵172を入力し、n個分の中間暗号化データに用いる鍵ストリーム(1)を生成する。例えば、図11内の図11(b)と同様に、鍵マスク用ノンス171と定数を連結したデータと鍵マスク生成鍵172を擬似乱数生成部114に入力し、n個分のブロックに相当する鍵ストリーム(1)としてT1、T2、……Tnを生成する。
登録クライアント100の全体処理部111は、擬似乱数生成部114に鍵マスク用ノンス271と鍵マスク生成鍵272を入力し、n個分の中間暗号化データに用いる鍵ストリーム(2)を生成する。例えば、図11内の図11(b)に示すように、鍵マスク用ノンス171と定数を連結したデータと鍵マスク生成鍵172を擬似乱数生成部114に入力し、n個分のブロックに相当する鍵ストリーム(2)としてT1’、T2’、……Tn’を生成する。
登録クライアント100の全体処理部111は、基本演算部117に鍵ストリーム(1)と鍵ストリーム(2)を入力し、基本演算部117は排他的論理和(XOR算)を計算し、出力結果S1、S2、……Snを差分鍵マスクとして取得する。
(数12)
Si=Ti xor Ti’(i=1、・・・n)
(数12)
Si=Ti xor Ti’(i=1、・・・n)
登録クライアント100の全体処理部117は、差分鍵マスクの生成処理用に確保した作業領域を一時記憶部180から解放する。
なお、差分鍵マスクの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
また、差分鍵マスクの主体を登録クライアント100としたが、検索クライアント200に変更し、登録クライアント100に配布するよう変更してもよい。
また、差分鍵マスクの主体用に、信頼できる機関など新たなプレイヤを用意しても良い。
<差分鍵マスクの登録フロー>
ネットワーク500を経由し、登録クライアント100に差分鍵マスクを送信し、管理サーバ300が鍵記憶部350差分鍵マスクを登録する処理を示すシーケンスを説明する。
ネットワーク500を経由し、登録クライアント100に差分鍵マスクを送信し、管理サーバ300が鍵記憶部350差分鍵マスクを登録する処理を示すシーケンスを説明する。
登録クライアント100は、差分鍵マスクを生成する処理を行う(S301)。
登録クライアント100は、通信部103から、ネットワーク500を経由し、差分鍵マスクを管理サーバ300へ送信する処理を行う(S302)。
登録クライアント100は、通信部103から、ネットワーク500を経由し、差分鍵マスクを管理サーバ300へ送信する処理を行う(S302)。
管理サーバ300は、通信部303から、ネットワーク500を経由し、登録クライアント100が送信した差分鍵マスクを受信する処理を行う(S303)。
管理サーバ300は、制御部310により、受信した差分鍵マスクを、鍵記憶部350へ記憶する処理を行う(S304)。
管理サーバ300は、差分鍵マスクの登録処理の成否を、通信部303から、ネットワーク500を経由し、登録クライアント100へ送信する処理を行う(S305)。
登録クライアント100は、通信部103から、ネットワーク500を経由し、管理サーバ300が送信した、差分鍵マスクの登録処理の成否を、受信する処理を行う(S306)。
登録クライアント100は、出力部102を経由し、ユーザに、登録処理の成否を含む、登録情報について、表示する処理を行う(S307)。
以上が、ネットワーク500を経由し、登録クライアント100が差分鍵マスクを管理サーバ300へ登録する処理を示すシーケンスである。
なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。
また、ネットワーク600を経由し、検索クライアント200が差分鍵マスクを管理サーバ300へ登録するよう変更しても良い。
<秘匿データの検索フロー>
ネットワーク600を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスを説明する。
ネットワーク600を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスを説明する。
検索クライアント200は、入力部201を経由し、ユーザから入力された情報を平文キーワード241として、記憶部220へ記憶する処理を行う(S401)。
検索クライアント200は、制御部210により、平文キーワード241から秘匿キーワードを生成する処理を行う(S402)。
検索クライアント200は、通信部203から、ネットワーク600を経由し、秘匿キーワードを、管理サーバ300へ、送信する処理を行う(S403)。
管理サーバ300は、通信部303から、ネットワーク600を経由し、検索クライアント200が送信した秘匿キーワードを、受信する処理を行う(S404)。
管理サーバ300は、制御部310により、秘匿キーワードの変換処理を行う(S405)。この秘匿キーワードの変換処理については後述する。
管理サーバ300は、制御部310により、データベース341から、秘匿キーワードに関係する、秘匿データ343を検索する処理を行う(S406)。
管理サーバ300は、秘匿キーワードに該当する秘匿データを変換する処理を行う(S407)。この変換処理は、登録クライアント100の更新型秘密鍵170に対応する秘匿データを、検索クライアント200の更新型秘密鍵270に対応する秘匿データに変換(更新)する処理である。例えば、第一の実施の形態で図13を用いて報告した再暗号化処理により、この変換処理を実現する。
管理サーバ300は、秘匿キーワードに該当する検索結果(秘匿データと平文データの両方またはいずれか一方で構成される)を、通信部303から、ネットワーク600を経由し、検索クライアント200へ送信する処理を行う(S408)。
検索クライアント200は、通信部203から、ネットワーク600を経由し、管理サーバ300が送信した、検索結果を受信する処理を行う(S409)。
秘匿データが検索結果に含まれる場合、検索クライアント200は、制御部210により、秘匿キーワードに該当する検索結果から、平文データを復元する(S410)。
検索クライアント200は、出力部202を経由し、平文データを記憶部220に記憶する(S409)。
検索クライアント200は、平文データを出力部202に表示する(S411)。
以上が、ネットワーク600を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスである。
なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。
このシーケンスは、秘匿キーワードを変換し、変換後の秘匿キーワードと秘匿データを検索する処理を説明した。これは、検索クライアントから管理サーバへ送信される秘匿キーワードの数が、管理サーバが管理する秘匿データの数より少ないため、検索において秘匿キーワードを変換した方が、秘匿データを変換するよりも、数が少なく効率的に処理できるからである。もちろん、変換先を秘匿キーワードに固定する必要はなく、秘匿キーワードではなく、秘匿データを変換し、秘匿キーワードと変換後の秘匿データを検索するように処理を変更しても良い。また、秘匿データと秘匿キーワードの双方を変換するように処理を変更しても良い。
<秘匿キーワードの変換フロー>
管理サーバ300における秘匿キーワードの変換処理の手順を図16に示す。管理サーバ300の全体処理部311は秘匿キーワードの変換処理に必要な作業領域を一時記憶部380に確保する。
管理サーバ300における秘匿キーワードの変換処理の手順を図16に示す。管理サーバ300の全体処理部311は秘匿キーワードの変換処理に必要な作業領域を一時記憶部380に確保する。
管理サーバ300の全体処理部311は、秘匿キーワードから暗号化キーワード本体を取得する。
管理サーバ300の全体処理部311は、指定ブロック337の記述に従い、該当する差分鍵マスクの該当ブロックを取得する。例えば、暗号化アルゴリズム344として鍵長256ビットAES暗号CBCモード、指定ブロック337にn番目が指定されている場合、全体処理部311は差分鍵マスクを128ビット毎のブロックに分割し、差分鍵マスクS1、S2、……Snから、n番目のデータであるSnを差分鍵マスクの該当ブロックとして出力する。
管理サーバ300の全体処理部311は、基本演算部317に暗号化キーワード本体と差分鍵マスクの該当ブロックを入力し、排他的論理和(XOR算)を計算し、出力結果Wn’を新しい暗号化キーワード本体として取得する。
ここで計算式として、(数13)が成り立つ。
(数13)
Wn xor Sn = Cn xor Pn xor Tn’
(数13)
Wn xor Sn = Cn xor Pn xor Tn’
(数13)より、中間暗号化キーワードCnと乱数ストリームRnと従来の鍵ストリームTnの排他的論理和(xor)で算出(Wi= Ci xor Pi xor Ti)されていた暗化キーワード文本体が、中間暗号文Ciと乱数ストリームRiと新しい鍵ストリームTi’の排他的論理和(xor)で算出(Wi’= Ci xor Pi xor Ti’)で算出される新しい暗号化キーワード本体に変形された。従って、従来の鍵ストリームTiが新しい鍵ストリームTi’に変更された。
管理サーバ300の全体処理部311は、初期ベクトルと、暗号化キーワード本体、検察タグを連結したデータを新しい秘匿キーワードとする。
管理サーバ300の全体処理部311は、秘匿キーワードの変換処理用に確保した作業領域を一時記憶部380から解放する。
なお、管理サーバ300における秘匿データ343の更新手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
<秘匿データの復号フロー>
管理サーバ300は、第一の実施の形態の秘匿データの更新フローと同様の手順で、秘匿データを更新する。検索クライアント200は、第一の実施の形態の秘匿データの復号処理のと同様の手順で、秘匿データを復号する。
管理サーバ300は、第一の実施の形態の秘匿データの更新フローと同様の手順で、秘匿データを更新する。検索クライアント200は、第一の実施の形態の秘匿データの復号処理のと同様の手順で、秘匿データを復号する。
このように、サーバ/クライアントモデルにおいて、サーバが暗号化状態で暗号化データを検索できる状態を維持したまま、かつ暗号化状態である秘密鍵に対応する暗号化データを別の秘密鍵に対応する暗号化データに変換することにより、サーバに対しても安全な状態を維持可能なシステムを構築できる。また、暗号化状態のデータを検索可能なサーバ/クライアント型のシステムにおいて、クライアント側の秘密鍵の更新に伴い、サーバ側の暗号化状態のデータを復号しないため、利用者側の負荷をかけずに効率的に再暗号化することができる。
100:登録クライアント、
200:検索クライアント、
300:管理サーバ、
400:ネットワーク、
600:コンピュータ、
101、201、301:入力部、
102、202、302:出力部、
103、203、303:通信部、
110、210、310:制御部、
111、211、311:全体処理部、
112、212:暗号化部、
213、313:復号化部、
114、214:擬似乱数生成部、
115、215、315:不可逆変換部、
116、216、316:準同型関数部、
117、217、317:基本演算部、
118、218:鍵生成部
120、220、320:記憶部、
130、230、330:データ記憶部、
140、240、340:暗号化コンテキスト、
131、342:平文データ、
135、335:検索タグ長、
136、236、336:初期ベクトル、
141、244、344:暗号化アルゴリズム
237、337:指定ブロック、
241:平文キーワード、
341:データベース、
343:秘匿データ、
150、250、350:鍵記憶部、
151、251:乱数マスク生成鍵、
152、252:データ暗号化鍵、
253:データ復号化鍵、
160、260、360:固定型秘密鍵
170、270:更新型秘密鍵
171、271:鍵マスク生成鍵
172、272:鍵マスク用ノンス
273、354:更新型検索鍵
180、280、380:一時記憶部、
601:CPU(Central Processing Unit)、
602:メモリ、
603:外部記憶装置、
604:通信装置、
605:出力装置、
606:入力装置、
607:読書装置、
608:記憶媒体、
609:内部通信線。
200:検索クライアント、
300:管理サーバ、
400:ネットワーク、
600:コンピュータ、
101、201、301:入力部、
102、202、302:出力部、
103、203、303:通信部、
110、210、310:制御部、
111、211、311:全体処理部、
112、212:暗号化部、
213、313:復号化部、
114、214:擬似乱数生成部、
115、215、315:不可逆変換部、
116、216、316:準同型関数部、
117、217、317:基本演算部、
118、218:鍵生成部
120、220、320:記憶部、
130、230、330:データ記憶部、
140、240、340:暗号化コンテキスト、
131、342:平文データ、
135、335:検索タグ長、
136、236、336:初期ベクトル、
141、244、344:暗号化アルゴリズム
237、337:指定ブロック、
241:平文キーワード、
341:データベース、
343:秘匿データ、
150、250、350:鍵記憶部、
151、251:乱数マスク生成鍵、
152、252:データ暗号化鍵、
253:データ復号化鍵、
160、260、360:固定型秘密鍵
170、270:更新型秘密鍵
171、271:鍵マスク生成鍵
172、272:鍵マスク用ノンス
273、354:更新型検索鍵
180、280、380:一時記憶部、
601:CPU(Central Processing Unit)、
602:メモリ、
603:外部記憶装置、
604:通信装置、
605:出力装置、
606:入力装置、
607:読書装置、
608:記憶媒体、
609:内部通信線。
Claims (10)
- 登録クライアントと管理サーバとがネットワークを介して接続された検索可能暗号処理システムにおいて、
前記登録クライアントは、平文データを暗号化するための第一の秘密鍵と、新たに前記平文データを暗号化するための第二の秘密鍵との差分に基づいて、前記第一の秘密鍵により暗号化された秘匿データを前記第二の秘密鍵により更新するための差分鍵マスクを生成する登録クライアント処理部、
を備えることを特徴とする検索可能暗号処理システム。 - 前記登録クライアントは、
所定のアルゴリズムにしたがって前記第二の秘密鍵を生成する鍵生成部、を備え、
前記管理サーバは、
前記第二の秘密鍵により前記秘匿データを更新するサーバ処理部、を備え、
前記登録クライアント処理部は、前記秘匿データを更新した前記第二の秘密鍵を新たな前記第一の秘密鍵とする、
ことを特徴とする請求項1に記載の検索可能暗号処理システム。 - 前記管理サーバは、
前記サーバ処理部が、前記秘匿データと前記差分鍵マスクとの差分から得られた前記第二の秘密鍵により前記秘匿データを更新する、
ことを特徴とする請求項2に記載の検索可能暗号処理システム。 - 前記管理サーバは、
前記サーバ処理部が、前記秘匿データに含まれる暗号化データ本体のサイズを算出し、前記登録クライアントにより生成された新たな差分鍵マスクと前記秘匿データとの差分により得られた前記第二の秘密鍵により前記秘匿データを更新し、
前記登録クライアントは、
前記登録クライアント処理部が、少なくとも前記サイズ以上となる前記差分鍵マスクを前記新たな差分鍵マスクとして生成する、
ことを特徴とする請求項3に記載の検索可能暗号処理システム。 - 前記登録クライアントは、
第一の鍵マスク生成鍵と第一の鍵マスク用ノンスと擬似乱数発生部とに基づいて前記第一の秘密鍵を生成し、第二の鍵マスク生成鍵と第二の鍵マスク用ノンスと擬似乱数発生部とに基づいて前記第二の秘密鍵を生成する鍵生成部、を備え、
前記登録クライアント処理部は、前記鍵生成部により生成された前記第一の秘密鍵と前記第二の秘密鍵との差分に基づいて、前記差分鍵マスクを生成する、
ことを特徴とする請求項1に記載の検索可能暗号処理システム。 - 前記検索可能暗号処理システムは、ネットワークを介して前記管理サーバに接続された検索クライアントを備え、
前記検索クライアントは、
平文キーワードと、前記平文キーワードを暗号化するための第一の検索用秘密鍵とに基づいて、秘匿キーワードを生成する検索クライアント処理部、を備え
前記管理サーバは、
前記サーバ処理部が、前記秘匿キーワードと前記秘匿データとの差分に基づいて得られたデータと、前記秘匿データとが一致するか否かを判定することにより、暗号化したまま前記秘匿データを検索する、
ことを特徴とする請求項1に記載の検索可能暗号処理システム。 - 前記検索クライアントは、
前記検索クライアント処理部が、前記第一の検索用秘密鍵と、新たに前記平文キーワードを暗号化するための第二の検索用秘密鍵との差分に基づいて、前記第一の検索用秘密鍵により暗号化された秘匿キーワードを前記第二の検索用秘密鍵により更新するための検索用差分鍵マスクを生成する、
を備えることを特徴とする請求項6に記載の検索可能暗号処理システム。 - 前記管理サーバは、
前記サーバ処理部が、前記秘匿キーワードと前記検索用差分鍵マスクとの差分から得られた前記第二の検索用秘密鍵により前記秘匿キーワードを更新する、
ことを特徴とする請求項7に記載の検索可能暗号処理システム。 - 前記管理サーバは、ネットワークを介して複数の前記検索クライアントに接続され、
前記サーバ処理部は、前記検索クライアントに対応する前記第一の検索用秘密鍵ごとに、前記検索用差分鍵マスクを生成する、
ことを特徴とする請求項7に記載の検索可能暗号処理システム。 - 前記管理サーバは、
前記サーバ処理部が、それぞれの前記検索クライアントについて、生成された前記秘匿キーワードと前記検索用差分鍵マスクとの差分から得られた前記第二の検索用秘密鍵により前記秘匿キーワードを更新する、
を備えることを特徴とする請求項9に記載の検索可能暗号処理システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16839190.2A EP3343829A4 (en) | 2015-08-25 | 2016-08-19 | BROKEN CRYPTOGRAPH PROCESSING SYSTEM |
US15/746,872 US10733317B2 (en) | 2015-08-25 | 2016-08-19 | Searchable encryption processing system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015165619A JP6961324B2 (ja) | 2015-08-25 | 2015-08-25 | 検索可能暗号処理システム |
JP2015-165619 | 2015-08-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017033843A1 true WO2017033843A1 (ja) | 2017-03-02 |
Family
ID=58100267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2016/074170 WO2017033843A1 (ja) | 2015-08-25 | 2016-08-19 | 検索可能暗号処理システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US10733317B2 (ja) |
EP (1) | EP3343829A4 (ja) |
JP (1) | JP6961324B2 (ja) |
WO (1) | WO2017033843A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018148493A (ja) * | 2017-03-08 | 2018-09-20 | 日本放送協会 | 鍵生成装置、中間暗号化装置、委託暗号化装置、データ検索装置、復号装置およびそれらのプログラム |
US11658808B2 (en) * | 2019-08-21 | 2023-05-23 | Arm Limited | Re-encryption following an OTP update event |
CN111092721B (zh) * | 2019-12-03 | 2023-03-03 | 深圳前海微众银行股份有限公司 | 一种设置访问口令的方法及装置 |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
CN112217706B (zh) * | 2020-12-02 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
DE112021005887B4 (de) * | 2021-01-13 | 2025-05-08 | Mitsubishi Electric Corporation | Durchsuchbares Verschlüsselungssystem und durchsuchbares Verschlüsselungsverfahren |
FR3139401B1 (fr) * | 2022-09-05 | 2024-09-20 | Commissariat Energie Atomique | Méthode de contrôle d’accès à authentification conditionnée |
US12388622B2 (en) * | 2023-02-09 | 2025-08-12 | International Business Machines Corporation | Masking ciphertexts using random elements for secure decryption |
EP4432597A1 (en) * | 2023-03-14 | 2024-09-18 | Barclays Execution Services Limited | Methods for encrypting data, decrypting data, and searching encrypted data |
CN116980111A (zh) * | 2023-09-22 | 2023-10-31 | 北京格尔国信科技有限公司 | 一种密钥更新方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012077541A1 (ja) * | 2010-12-08 | 2012-06-14 | 株式会社日立製作所 | 検索可能暗号処理システム |
US20130046974A1 (en) * | 2011-08-16 | 2013-02-21 | Microsoft Corporation | Dynamic symmetric searchable encryption |
JP2015177506A (ja) * | 2014-03-18 | 2015-10-05 | 国立研究開発法人情報通信研究機構 | 暗号データ更新システム、暗号データ更新方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005252384A (ja) * | 2004-03-01 | 2005-09-15 | Rikogaku Shinkokai | 暗号化データ保管サーバシステム、暗号化データ保管方法及び再暗号化方法 |
TWI401583B (zh) * | 2009-08-06 | 2013-07-11 | Phison Electronics Corp | 資料擾亂/解擾亂與資料處理方法及其控制器與儲存系統 |
WO2014109828A2 (en) * | 2012-11-16 | 2014-07-17 | Raytheon Bbn Technologies Corp. | Method for secure substring search |
JP2014119486A (ja) * | 2012-12-13 | 2014-06-30 | Hitachi Solutions Ltd | 秘匿検索処理システム、秘匿検索処理方法、および秘匿検索処理プログラム |
JP6033741B2 (ja) * | 2013-06-14 | 2016-11-30 | 株式会社日立製作所 | 暗号化鍵更新システム及びその方法 |
JP6144992B2 (ja) * | 2013-08-08 | 2017-06-07 | 株式会社日立製作所 | 検索可能暗号処理システム及び方法 |
JP6173904B2 (ja) * | 2013-12-13 | 2017-08-02 | 株式会社東芝 | 共通鍵暗号装置及びプログラム、並びに、共通鍵復号装置及びプログラム |
-
2015
- 2015-08-25 JP JP2015165619A patent/JP6961324B2/ja active Active
-
2016
- 2016-08-19 EP EP16839190.2A patent/EP3343829A4/en active Pending
- 2016-08-19 US US15/746,872 patent/US10733317B2/en active Active
- 2016-08-19 WO PCT/JP2016/074170 patent/WO2017033843A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012077541A1 (ja) * | 2010-12-08 | 2012-06-14 | 株式会社日立製作所 | 検索可能暗号処理システム |
US20130046974A1 (en) * | 2011-08-16 | 2013-02-21 | Microsoft Corporation | Dynamic symmetric searchable encryption |
JP2015177506A (ja) * | 2014-03-18 | 2015-10-05 | 国立研究開発法人情報通信研究機構 | 暗号データ更新システム、暗号データ更新方法 |
Non-Patent Citations (3)
Title |
---|
ANONO, Y. ET AL.: "Fast and Secure Linear Regression and Biometric Authentiction with Security Update", CRYPTOLOGY EPRINT ARCHIVE, REPORT:2015/692, July 2015 (2015-07-01), XP 061018967, Retrieved from the Internet <URL:http://eprint.iacr.org/2015/692> [retrieved on 20160930] * |
See also references of EP3343829A4 * |
YOSHINORI AONO ET AL.: "Security Updatable Jun Dokei Ango o Mochiita Hitoku Data no Senkei Kaiki Enzan", 2015 NEN SYMPOSIUM ON CRYPTOGRAPHY AND INFORMATION SECURITY KOEN RONBUNSHU, January 2015 (2015-01-01), pages 1 - 8, XP009508857 * |
Also Published As
Publication number | Publication date |
---|---|
US20190130125A1 (en) | 2019-05-02 |
JP2017044779A (ja) | 2017-03-02 |
EP3343829A1 (en) | 2018-07-04 |
JP6961324B2 (ja) | 2021-11-05 |
US10733317B2 (en) | 2020-08-04 |
EP3343829A4 (en) | 2019-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017033843A1 (ja) | 検索可能暗号処理システム | |
EP3058678B1 (en) | System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption | |
KR102432299B1 (ko) | 양자 키 분배에 기초하는 암호화 및 복호화를 위한 시스템 및 방법 | |
CN108768951B (zh) | 一种云环境下保护文件隐私的数据加密和检索方法 | |
JP6144992B2 (ja) | 検索可能暗号処理システム及び方法 | |
CN105245328B (zh) | 一种基于第三方的用户及文件的密钥产生管理方法 | |
Salam et al. | Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage | |
JP6925686B1 (ja) | 情報処理システム、情報処理装置、情報処理方法、および、情報処理プログラム | |
US20130262863A1 (en) | Searchable encryption processing system | |
Ahmad et al. | Hybrid cryptography algorithms in cloud computing: A review | |
CN105743888A (zh) | 一种基于关键字搜索的代理重加密方案 | |
JP6033741B2 (ja) | 暗号化鍵更新システム及びその方法 | |
CN114036240A (zh) | 一种基于区块链的多服务商隐私数据共享系统和方法 | |
JP2014175970A (ja) | 情報配信システム、情報処理装置及びプログラム | |
JP7588854B2 (ja) | データをセキュアにするための方法およびシステム | |
KR101979267B1 (ko) | 클라우드 저장 기반 암호화 시스템 및 방법 | |
KR101140576B1 (ko) | 암호화 문서에 대한 다자간 검색 시스템 및 그 방법 | |
JP6653246B2 (ja) | 計算機システム及びデータ管理方法 | |
CN108512840A (zh) | 一种基于泄序加密的密文检索方法 | |
WO2008065351A1 (en) | Self encryption | |
CN116248289B (zh) | 基于密文属性加密的工业互联网标识解析访问控制方法 | |
GB2444343A (en) | Encryption system for peer-to-peer networks in which data is divided into chunks and self-encryption is applied | |
CN113609502A (zh) | 一种基于区块链的空间众包系统及方法 | |
Lee et al. | A study of practical proxy reencryption with a keyword search scheme considering cloud storage structure | |
CN110650152B (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: 16839190 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2016839190 Country of ref document: EP |