WO2017168535A1 - データベースシステム及びデータ検索方法 - Google Patents

データベースシステム及びデータ検索方法 Download PDF

Info

Publication number
WO2017168535A1
WO2017168535A1 PCT/JP2016/059994 JP2016059994W WO2017168535A1 WO 2017168535 A1 WO2017168535 A1 WO 2017168535A1 JP 2016059994 W JP2016059994 W JP 2016059994W WO 2017168535 A1 WO2017168535 A1 WO 2017168535A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
encrypted
search
data
database
Prior art date
Application number
PCT/JP2016/059994
Other languages
English (en)
French (fr)
Inventor
啓成 藤原
由美子 横張
鈴木 貴之
佐藤 嘉則
雅之 吉野
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/059994 priority Critical patent/WO2017168535A1/ja
Priority to EP16896755.2A priority patent/EP3438846B1/en
Priority to US16/080,286 priority patent/US10789374B2/en
Priority to JP2018507857A priority patent/JP6589051B2/ja
Publication of WO2017168535A1 publication Critical patent/WO2017168535A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6227Protecting 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Definitions

  • the present invention relates to a concealment database system that stores data in a state where the data is encrypted and concealed by a system administrator who does not have a key.
  • Patent Document 1 discloses that “a user system connected to a database system via a network, which manages key information for encryption and decryption, and data and / or metadata safety setting information. The storage unit to be stored and whether or not the database operation instruction needs to be encrypted are determined. If encryption is necessary, the encryption algorithm corresponding to the data and / or metadata is selected and encrypted. When the database operation is performed by transmitting to the database control unit and encryption is not necessary, the database operation command is transmitted to the database control unit to execute the database operation, and the processing result transmitted from the database control unit is obtained.
  • the system "comprises a safety setting means for setting the security information of the data stored in the database is disclosed.
  • Patent Document 2 discloses a system that enables search / sorting in an encrypted state by storing encryption and order relations stored in the cloud on the cloud.
  • Non-Patent Document 1 discloses a method for speeding up the search by sending a key capable of disclosing the partial information of the encrypted data to the server side. Further, Non-Patent Document 1 provides an encryption / decryption mechanism that operates on a user's browser as a plug-in in a Web application system, adds a searchable encryption as a user-defined function of a database, A system using the cipher using the above is disclosed.
  • the data acquisition process in the above-described usage form generally follows the following flow.
  • the user terminal transmits data acquisition conditions including keywords and the like to the application server.
  • the application server on the cloud interprets the data acquisition conditions, generates a database operation instruction based on the interpretation result, and transmits the database operation instruction to the database server, thereby requesting the requested information to the database server. Get from.
  • the application server transmits the acquired information to the user terminal.
  • a general database operation command generated by the application server may not be processed.
  • the database server performs the following (1) to (4) with respect to the concealment database system that performs encryption by the stochastic encryption method in which the equivalence relation and the order relation between the ciphertexts are concealed.
  • the data acquisition process cannot be executed.
  • a database operation command that combines records included in two different tables and acquires the combined information. For example, when acquiring a combined result obtained by combining a record including information on each patient and a record including diagnostic information from the patient table and the diagnostic table, the above-described database operation instruction is issued.
  • a database operation command for acquiring a record that partially matches a column included in a record of an arbitrary table using a partial keyword as a search condition For example, when a part of the patient's name is input as a keyword and a partially matching patient record is acquired from the patient table, the above-mentioned database operation order is issued.
  • Database operation instruction for acquiring a predetermined number of records sorted in a specified order from a predetermined table. For example, when a certain number of records rearranged in ascending order of patient IDs are acquired from the patient table, the aforementioned database operation command is issued.
  • the present invention proposes a concealed database system that can execute the aforementioned database operation command and a data acquisition method in the concealed database system.
  • a typical example of the invention disclosed in the present application is as follows. That is, a database server that stores registration information including one or more encrypted data encrypted using a stochastic encryption method, and a data acquisition request for acquiring the encrypted data from the database server
  • a database system including a transmitting terminal, wherein the probabilistic encryption method is an encryption method in which the encrypted data is generated so that a data value before encryption becomes a different data value for each encryption process.
  • the terminal encrypts data to be stored in the database server according to a probabilistic encryption method using a hash value and a mask based on an output value of a homomorphic function, and decrypts the encrypted data.
  • An encrypted search query generation unit for generating an encrypted search query in which a search query used for data search is encrypted, and obtaining the data including the encrypted search condition by encrypting a plaintext search condition
  • An additional processing unit that transmits a request, and the database server stores a definition pattern for converting the data acquisition request into a database operation command processed by the database server for each type of search processing
  • the database operation instruction definition information and the additional information for search for each type of the search process are held, and the database operation is performed by converting the data acquisition request received from the terminal based on the database operation instruction definition information
  • a database control unit that obtains the requested encrypted data; and an encryption match determination unit that determines the encrypted data that matches the encrypted search query using the additional information for search, and
  • the additional processing unit generates
  • the terminal can efficiently obtain the encrypted data from the database server without decrypting the encrypted data.
  • FIG. 3 is a diagram illustrating an example of a data structure of an encrypted main information group according to the first embodiment. It is a figure which shows an example of the data structure of the database side additional information group of Example 1.
  • FIG. 6 is a diagram illustrating an example of a data structure of SQL definition information according to Embodiment 1.
  • FIG. 3 is a diagram illustrating an example of a data structure of temporary information temporarily stored in the memory of Embodiment 1.
  • FIG. FIG. 10 is a sequence diagram illustrating a flow of preparation processing for combined information acquisition processing according to the first exemplary embodiment. 6 is a diagram illustrating an example of a connection setting input screen according to the first embodiment.
  • 10 is a diagram illustrating an example of a combination setting result display screen according to the first embodiment.
  • 10 is a flowchart illustrating an example of a join target column determination process executed by a user-side addition processing unit according to the first embodiment. It is a sequence diagram which shows the flow of the joint information acquisition process of Example 1.
  • FIG. It is a figure which shows an example of the patient information acquisition screen of Example 1.
  • FIG. It is a figure which shows an example of the patient disease name list display screen of Example 1.
  • FIG. It is a block diagram which shows the logic structure of the user side addition process part of Example 2.
  • FIG. It is a block diagram which shows the logic structure of the database side addition process part of Example 2.
  • FIG. 6 is a diagram illustrating an example of a data structure of data temporarily stored in a memory according to Embodiment 2.
  • FIG. It is a figure which shows an example of the data structure of the encryption main information group of Example 2.
  • FIG. 10 is a diagram illustrating an example of a data structure of a database side additional information group according to Embodiment 2.
  • FIG. It is a figure which shows an example of the data structure of the temporary information temporarily stored in the memory of Example 2.
  • FIG. 10 is a sequence diagram illustrating a flow of a partial match search preparation process according to the second embodiment. It is a figure which shows an example of the partial matching setting input screen of Example 2.
  • FIG. It is a figure which shows an example of the partial matching setting result display screen of Example 2.
  • FIG. 10 is a flowchart illustrating an example of partial information generation processing executed by a partial information generation unit according to the second embodiment.
  • FIG. 10 is a sequence diagram illustrating a partial match search process according to the second embodiment. It is a figure which shows an example of the patient information acquisition screen of Example 2.
  • FIG. 12 is a flowchart illustrating an example of a partial match search query generation process executed by a partial match search query generation unit according to the second embodiment.
  • 10 is a flowchart illustrating an example of a partial match ID acquisition process executed by a partial match ID acquisition unit according to the second embodiment.
  • FIG. 10 is a block diagram illustrating a logical configuration of a user side additional processing unit according to a third embodiment.
  • FIG. 10 is a diagram illustrating an example of a data structure of data temporarily stored in a memory according to the third embodiment. It is a figure which shows an example of the data structure of the encryption main information group of Example 3. FIG. It is a figure which shows an example of the data structure of the database side additional information group of Example 3. FIG. It is a figure which shows an example of the data structure of the temporary information temporarily stored in the memory of Example 3.
  • FIG. 10 is a sequence diagram illustrating a flow of a range search / sort preparation process according to the third embodiment.
  • FIG. 10 is a diagram illustrating an example of a range search / sort setting input screen according to a third embodiment.
  • FIG. 10 is a diagram illustrating an example of a range search / sort setting result display screen according to a third embodiment.
  • 10 is a flowchart illustrating a corresponding range information generation process executed by a corresponding range information generation unit according to the third embodiment.
  • 14 is a flowchart illustrating a corresponding range label information generation process executed by a corresponding range label information generation unit according to the third embodiment.
  • FIG. 10 is a sequence diagram illustrating a flow of range search / sort processing according to the third embodiment. It is a figure which shows an example of the patient information acquisition screen of Example 3.
  • FIG. It is a figure which shows an example of the patient information display screen of Example 3.
  • FIG. 10 is a flowchart illustrating range search / sort query generation processing executed by a range search / sort query generation unit according to a third embodiment. It is a flowchart explaining an example of the result display process which the user terminal of Example 3 performs.
  • FIG. 1 is a block diagram illustrating a configuration example of the concealment database system 1 according to the first embodiment.
  • the concealment database system 1 includes a user terminal 2 constituting a user system, and an application server 3 and a database server 4 constituting a data center system.
  • the user database 2, the application server 3, and the database server 4 included in the concealment database system 1 of FIG. 1 are each one, but the concealment database system 1 may include two or more of each configuration.
  • the concealment database system 1 is a system that provides the following functions.
  • One function is a function of encrypting data managed by a user operating the user terminal 2 and storing the encrypted data (ciphertext) in the database server 4 via the application server 3.
  • Another function is a search function and an analysis function for encrypted data stored in the database server 4 in cooperation with the application server 3 and the database server 4.
  • the concealment database system 1 provides a function for realizing the combined information acquisition process as one of the search functions.
  • the combined information acquisition process is a process for combining records included in two different tables and acquiring the combined information.
  • the user terminal 2 and the application server 3 are connected to each other via a user internal network 5, an external network 6, and a cloud internal network 7.
  • the application server 3 and the database server 4 are connected to each other via the cloud internal network 7.
  • the user internal network 5 is a network including a local area network in the user's office.
  • the external network 6 is a network including the Internet and a wide area network provided by a carrier.
  • the cloud internal network 7 is a network including a local area network in the data center. The present invention is not limited to the type of network that connects each configuration.
  • the user terminal 2 is a device such as a personal computer, a tablet terminal, and a smartphone used by the user.
  • the user terminal 2 encrypts a request for an acquisition request input by the user, transmits the encrypted request to the application server 3, and receives an encrypted processing result for the request.
  • the user terminal 2 decrypts the processing result and executes processing such as selection or shaping of the decrypted processing result. Further, the user terminal 2 displays the processing result and stores the processing result.
  • the user terminal 2 includes a memory 210, a display device 220, an input device 230, a CPU 240, a NIC (Network Interface Card) 250, and a storage device 260 as hardware configurations. Note that the user terminal 2 may have other hardware.
  • CPU 240 executes a program stored in memory 210.
  • the functions of the user terminal 2 can be realized by the CPU 240 executing the program.
  • the CPU 240 executes a program stored in memory 210.
  • the functions of the user terminal 2 can be realized by the CPU 240 executing the program.
  • the CPU 240 executes a program stored in memory 210.
  • the functions of the user terminal 2 can be realized by the CPU 240 executing the program.
  • the CPU 240 when a process is described with a functional unit as a subject, it indicates that the CPU 240 is executing a program that realizes the functional unit.
  • the memory 210 stores a program executed by the CPU 240 and information used for executing the program.
  • the memory 210 includes a work area and the like. Details of the program stored in the memory 210 will be described later. Note that the program stored in the memory 210 may be stored in the storage device 260 or an external storage device. In this case, the CPU 240 reads a program from the storage device 260 or an external storage device, and expands the read program in the memory 210.
  • the storage device 260 is a non-volatile storage device that permanently stores data.
  • the storage device 260 may be, for example, an HDD (Hard Disk Drive) and an SSD (Solid State Drive). Details of data stored in the storage device 260 will be described later.
  • the display device 220 is a device for displaying various information to the user.
  • the display device 220 may be a display, for example.
  • the input device 230 is a device for the user to input various information to the user terminal 2. Examples of the input device 230 include a keyboard, a mouse, and a touch panel.
  • the memory 210 stores programs for realizing the browser 211, the encryption unit 212, the decryption unit 213, the encrypted search query generation unit 214, the key management unit 215, and the user side addition processing unit 216.
  • the browser 211 displays on the display device 220 a screen for the user to input a request via the input device 230, a screen for referring to a processing result for the request, and the like.
  • the encryption unit 212 receives plaintext input and outputs a ciphertext (encrypted data) by encrypting the plaintext based on the probabilistic encryption method described in Patent Document 3.
  • the probabilistic encryption method is an encryption algorithm for generating random ciphertext (encrypted data) in which the equivalence relation and the magnitude relation are concealed from unencrypted data (plaintext).
  • plaintext and ciphertext have a one-to-many correspondence.
  • data to be stored in the database server 4 is encrypted according to a probabilistic encryption method using a mask based on an output value of a hash value and a homomorphic function.
  • the probabilistic encryption method described in Patent Document 3 is used to search for encrypted data according to probabilistic encryption using a mask using a homomorphic function that outputs the same value from a plurality of different input values.
  • the query is encrypted.
  • a DB server that stores registration data encrypted by a probabilistic encryption method and a search client, the DB server received from the search client stores A searchable cryptographic processing system for searching without releasing the encryption of the data stored in the DB server in accordance with a search query that requests a search for data to be stored, wherein the probabilistic encryption method uses the same data A data encryption method for generating a ciphertext with a different data value from a plaintext of a value, wherein the search client stores a storage unit that stores the search query, a control unit that encrypts the search query, and an encryption A communication unit that transmits the search query, wherein the control unit in the search client includes a random number generation unit that generates a first random number, and the first random number.
  • the control unit in the search client includes a compression function unit that converts the function value output from the homomorphic function unit and outputs a hash value
  • the DB server includes a communication unit that receives the search query, and an encryption unit A storage unit that stores the encrypted search query and the encrypted registration data; and a control unit that determines whether the stored registration data corresponds to the search query, the control unit in the DB server Is an overall processing unit for deriving a random number correlation between the encrypted registration data and the encrypted search query, and a homomorphism having a function value of a homomorphic function having the correlation as an input value.
  • the encrypted search query transmitted by the search client is encrypted by the basic arithmetic unit using the probabilistic encryption method, and the compression function unit outputs the ciphertext. “Data composed of hash values
  • unencrypted data is also described as plain text data to distinguish it from encrypted data.
  • stochastic encryption method of the present specification indicates the stochastic encryption method described in Patent Document 3.
  • the decryption unit 213 receives an input of ciphertext (encrypted data), and outputs plaintext (plaintext data) by decrypting the ciphertext according to a procedure reverse to the encryption processing of the stochastic encryption method.
  • the encrypted search query generation unit 214 accepts input of plain text data and outputs an encrypted search query used for encryption match determination processing.
  • the encryption match determination process is executed by the encryption match determination unit 412.
  • an encrypted search query is also simply referred to as a search query.
  • the key management unit 215 manages key information used for encryption and decryption.
  • the key management unit 215 receives a key acquisition request from the encryption unit 212, the decryption unit 213, and the encrypted search query generation unit 214, the key management unit 215 transmits key information necessary for processing to each unit.
  • the user side additional processing unit 216 executes processing for acquiring encrypted data from the database server 4. Specifically, the following three processes are executed.
  • the user-side addition processing unit 216 searches for encrypted data requested from the database server 4 and executes a preparation process for acquiring the data.
  • the user-side addition processing unit 216 converts a data acquisition request input by the user via the browser 211 into a data acquisition request that can be interpreted by the application server 3, and converts the converted data acquisition request to the application server 3. Output to.
  • the user-side additional processing unit 216 receives information on a processing result for the data acquisition request received from the application server 3 as an input, and after performing data selection and data shaping according to the data acquisition request, Outputs the processing result.
  • the storage device 260 stores a main information group 261 and a user side additional information group 262.
  • the main information group 261 is information managed by the user operating the user terminal 2 and stores plaintext data before being stored in the database server 4.
  • the main information group 261 stores a plurality of pieces of information in table format.
  • the data format of the data stored in the main information group 261 is not limited.
  • the user terminal 2 does not hold the main information group 261. However, when data is registered in the database server 4 for the first time, the user terminal 2 may hold the main information group 261.
  • the user side additional information group 262 stores additional information referred to when a data acquisition request is generated. Processing using the user side additional information group 262 will be described in a second embodiment.
  • the application server 3 receives the data acquisition request from the user terminal 2, generates a database operation command for performing processing on the encrypted data using the data acquisition request, and generates the database operation generated in the database server 4. Send instructions. Further, the application server 3 receives the processing result for the database operation command from the database server 4 and transmits the processing result to the user terminal 2.
  • SQL will be described as an example of a database operation command. Note that the present embodiment is not limited to the type of database operation instruction.
  • the application server 3 includes a memory 310, a display device 320, an input device 330, a CPU 340, a NIC 350, and a storage device 360 as hardware configurations.
  • the application server 3 may have other hardware. Since the memory 310, the display device 320, the input device 330, the CPU 340, the NIC 350, and the storage device 360 are the same as the memory 210, the display device 220, the input device 230, the CPU 240, the NIC 250, and the storage device 260, the description thereof is omitted. To do.
  • the program stored in the memory 310 will be described.
  • the memory 310 stores programs for realizing the application unit 311, the SQL generation unit 312, and the database interface unit 313.
  • the application unit 311 processes the data acquisition request received from the user terminal 2, transmits the input information included in the data acquisition request to the SQL generation unit 312, and displays the processing result for the data acquisition request in the database server 4. Receive from.
  • the SQL generation unit 312 generates SQL including encrypted data corresponding to the input information included in the data acquisition request based on the SQL definition information 361 and transmits it to the database interface unit 313. Also, the SQL generation unit 312 receives the processing result of the SQL from the database interface unit 313 and transmits the processing result to the application unit 311.
  • the database interface unit 313 transmits the SQL received from the SQL generation unit 312 to the database server 4, receives the SQL processing result from the database server 4, and transmits the processing result to the SQL generation unit 312.
  • the storage device 360 stores SQL definition information 361.
  • the SQL definition information 361 stores information defining an SQL generation pattern for each type of data acquisition request.
  • the SQL definition information 361 is stored in the storage device 360, but may be stored in the memory 310. Also, the SQL definition information 361 may be stored in both the storage device 360 and the memory 310.
  • the database server 4 generates a processing result including encrypted data by executing the SQL received from the application server 3, and transmits the processing result to the application server 3.
  • the database server 4 includes a memory 410, a display device 420, an input device 430, a CPU 440, a NIC 450, and a storage device 460 as hardware configurations.
  • the database server 4 may have other hardware.
  • the memory 410, the display device 420, the input device 430, the CPU 440, the NIC 450, and the storage device 460 are the same as the memory 210, the display device 220, the input device 230, the CPU 240, the NIC 250, and the storage device 260, and thus description thereof is omitted. To do.
  • the program stored in the memory 410 will be described.
  • the memory 410 stores programs for realizing the database control unit 411, the encryption match determination unit 412, and the database side addition processing unit 413.
  • the database control unit 411 receives the SQL from the application server 3, and executes SQL on the encrypted main information group 461 in cooperation with the encryption match determination unit 412 and the database side additional processing unit 413. In addition, the database control unit 411 transmits a processing result including encrypted data acquired by executing SQL to the application server 3.
  • the encryption match determination unit 412 compares the two encrypted data and determines whether the plaintext data before encryption of each encrypted data matches. More specifically, the encryption match determination unit 412 receives as input the encrypted data generated by the encryption unit 212 and the search query generated by the encrypted search query generation unit 214, and the plaintext data of the encrypted data and the search query It is determined whether or not the plaintext data match. The cipher match determination unit 412 outputs “true” when the two plaintext data match, and outputs “false” when the two plaintext data do not match.
  • the encryption match determination unit 412 can determine whether the encrypted data is the same data without decrypting the encrypted data.
  • the database side additional processing unit 413 has a function of converting a complicated process that is difficult to express in a simple SQL out of database processes for acquiring data into a user-defined function. More specifically, the database side additional processing unit 413 receives the encrypted input information from the database control unit 411, executes additional processing using the database side additional information group 462 and the like, and returns a return value or an output value. The stored table is output as the processing result of the additional processing.
  • the storage device 460 stores an encrypted main information group 461 and a database side additional information group 462.
  • the encrypted main information group 461 stores encrypted data corresponding to the main information group 261. More specifically, the encrypted main information group 461 stores encrypted data obtained by encrypting plaintext data of the main information group 261 based on a probabilistic encryption method.
  • the database side additional information group 462 stores information for improving the efficiency of data acquisition processing for the encrypted main information group 461.
  • the encrypted main information group 461 is stored in the storage device 460, but may be stored in the memory 410. Further, the encrypted main information group 461 may be stored in both the storage device 460 and the memory 410.
  • FIG. 2 is a diagram illustrating an example of a data structure of the encrypted main information group 461 according to the first embodiment.
  • the encrypted main information group 461 of the first embodiment includes encrypted patient information 4611 and encrypted diagnosis information 4612.
  • the encrypted patient information 4611 is a list of patients and includes a plurality of records including an “ID” column, a “patient number” column, and a “name” column.
  • the encrypted patient information 4611 shown in FIG. 2 stores 1 million records from patient numbers “0000001” to “1000000”.
  • the “ID” column is an identification number for uniquely identifying the record of the encrypted patient information 4611.
  • the “patient number” column is an identification number for uniquely identifying a patient.
  • the “Name” column is the name of the patient.
  • the top record of the encrypted patient information 4611 indicates that the name of the patient whose patient number is “Enc (0000001)” is “Enc (Suzuki)”.
  • Enc (X) indicates that the plaintext data X in parentheses is encrypted data encrypted by the encryption unit 212.
  • Encrypted diagnosis information 4612 is information related to a patient diagnosis result, and includes a plurality of records including an “ID” column, a “patient number” column, and a “disease name” column. In the encrypted diagnosis information 4612, only the record of the patient whose disease name is found is stored.
  • the “ID” column is identification information for uniquely identifying the record of the encrypted diagnosis information 4612.
  • the “patient number” column is the same as the “patient number” column of the encrypted patient information 4611.
  • the “disease name” column is a disease name indicating the diagnosis result of the patient.
  • the top record of the encrypted diagnosis information 4612 indicates that the disease name of the patient whose patient number is “Enc (0000002)” is “Enc (hypertension)”.
  • FIG. 3 is a diagram illustrating an example of a data structure of the database side additional information group 462 of the first embodiment.
  • the database side additional information group 462 of the first embodiment includes encrypted combined information 4621.
  • the encrypted combined information 4621 includes a plurality of records including an “ID” column, a “patient number” column, a “patient number_query” column, and a “disease name” column.
  • the “ID” column, the “patient number” column, and the “disease name” column correspond to the “ID” column, the “patient number” column, and the “disease name” column of the record included in the encrypted diagnosis information 4612.
  • the “patient number_query” column is a search query generated from the patient number.
  • the encrypted combined information 4621 includes a search query column used for the encryption match determination process executed when a plurality of pieces of information (tables) included in the encrypted main information group 461 are combined. .
  • the top record of the encrypted combined information 4621 corresponds to the record whose ID of the encrypted diagnosis information 4612 is “1”, and the patient number of the patient whose patient number is “Enc (0000002)”.
  • the search query of “EncQuery (0000002)” indicates that the disease name of the patient is “Enc (hypertension)”.
  • EncQuery (X) indicates that the plain text data X in parentheses is encrypted data encrypted by the encrypted search query generation unit 214.
  • FIG. 4 is a diagram illustrating an example of a data structure of the SQL definition information 361 according to the first embodiment.
  • the SQL definition information 361 includes a plurality of records for storing definition information of SQL generation patterns for each type of data acquisition request.
  • the record includes a definition ID 3611, a request process 3612, and an SQL definition 3613.
  • the definition ID 3611 is an identification number for uniquely identifying the definition stored in the SQL definition information 361.
  • the request processing 3612 is a processing pattern corresponding to a data acquisition request, that is, a type of data acquisition request.
  • the SQL definition 3613 is SQL definition information corresponding to the processing pattern set in the request processing 3612.
  • the top record of the SQL definition information 361 indicates that the ID is “1” and stores the SQL definition information corresponding to the processing pattern corresponding to “join”.
  • SQL definition 3613 of the record SQL for joining the encrypted table X and table Y is stored.
  • FIG. 5 is a diagram illustrating an example of a data structure of the temporary information 4101 temporarily stored in the memory 410 according to the first embodiment.
  • the temporary information 4101 stores an SQL processing result for realizing a data acquisition request for which the request processing 3612 is “join”. Specifically, the temporary information 4101 is a processing result output by combining the records of the encrypted patient information 4011 and the encrypted diagnosis information 4612 based on the SQL definition 3613 whose definition ID 3611 is “1”.
  • the record stored in the temporary information 4101 includes a “patient number” column, a “name” column, and a “disease name” column.
  • the top record of the temporary information 4101 indicates that the disease name of the patient whose patient number is “Enc (0000002)” and whose name is “Enc (Sato)” is “Enc (hypertension)”. .
  • FIG. 6 is a sequence diagram illustrating the flow of the preparation process for the combined information acquisition process according to the first embodiment.
  • FIG. 7 is a diagram illustrating an example of the combination setting input screen 2111 according to the first embodiment.
  • FIG. 8 is a diagram illustrating an example of the combination setting result display screen 2112 according to the first embodiment.
  • the user terminal 2, the application server 3, and the database server 4 cooperate to execute a preparation process for the combined information acquisition process.
  • the preparation process of the combined information acquisition process is started when the user terminal 2 receives an input from the user.
  • the user terminal 2 receives an input from the user (step S101).
  • the user inputs information to be combined and a column to be combined using a combination setting input screen 2111 as shown in FIG.
  • a system engineer of a cloud service provider that performs initial information registration operation operates the user terminal 2 when constructing a system, and a user terminal 2 when a hospital clerk and a doctor perform registration work for update information. Is assumed to be operated.
  • the combination setting input screen 2111 is displayed on the display device 220 by the browser 211.
  • the combination setting input screen 2111 includes a plurality of input forms (P101), (P102), (P103), and (P104) for specifying information to be combined and columns to be combined.
  • the combination setting input screen 2111 includes an OK button (P105) and a cancel button (P106).
  • the input form (P101) and the input form (P102) are input forms for inputting the name of the first information to be combined and the name of the column.
  • the input form (P103) and the input form (P104) are input forms for inputting the name of the second information to be combined and the name of the column to be combined.
  • the OK button (P105) is an operation button for confirming the value input in each input form.
  • the cancel button (P106) is an operation button for canceling the confirmation of the value input in each input form.
  • the user executes a preparation process of the combined information acquisition process for acquiring a record in which the “patient number” column of the encrypted patient information 4611 and the “patient number” column of the encrypted diagnosis information 4612 are combined.
  • a value as shown in FIG. 7 is input. That is, the user enters “encrypted patient information” in the input form (P101), “patient number” in the input form (P102), “encrypted diagnostic information” in the input form (P103), and “patient” in the input form (P104). Enter the number.
  • the browser 211 transmits the value of each input form to the user-side addition processing unit 216 as input information.
  • the user terminal 2 generates a data acquisition request for acquiring the value of the column to be combined in the information to be combined (step S102). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 executes a join target column determination process in order to determine join target information from which a value of a join target column is read.
  • join target column determination process the join target information that generates the smallest number of search queries is determined as the join target information for reading the values of the join target columns. Details of the join target column determination process will be described with reference to FIG.
  • the user-side addition processing unit 216 generates a data acquisition request including the determined name of the information to be combined, the name of the column to be combined with the information, and a read command as input information, and issues the data acquisition request. Transmit to the application server 3.
  • the above is the description of the processing in step S102.
  • the application server 3 when receiving the data acquisition request, the application server 3 generates SQL for reading the value of the column to be combined of the determined information to be combined (step S103). Specifically, the following processing is executed.
  • the application unit 311 receives the data acquisition request and inputs the request information included in the data acquisition request to the SQL generation unit 312.
  • the SQL generation unit 312 generates an SQL for reading the value of the column to be combined of the determined information to be combined based on the request information, and transmits the generated SQL to the application unit 311.
  • the application unit 311 When the application unit 311 receives the SQL as an output from the SQL generation unit 312, the application unit 311 transmits the SQL to the database server 4 via the database interface unit 313.
  • the determined combination target information is the encrypted diagnosis information 4612 and the combination target column is the “patient number” column
  • the following SQL (A) is generated. SQL (A) SELECT Patient number FROM Encrypted diagnostic information
  • SQL (A) means reading the values in the “patient number” column of all records included in the encrypted diagnosis information 4612. The above is the description of the process in step S103.
  • step S104 when the database server 4 receives the SQL from the application server 3, the database server 4 executes the SQL (step S104).
  • the database control unit 411 executes the received SQL and transmits the processing result to the application server 3.
  • the processing result is transmitted to the user terminal 2 via the application server 3.
  • the database server 4 when receiving the SQL (A), transmits the values of the “patient number” column of all the records of the encrypted diagnosis information 4612 to the user terminal 2 as a processing result.
  • the value in the “patient number” column is encrypted data.
  • step S105 when the user terminal 2 receives the processing result from the database server 4, the user terminal 2 decrypts the processing result (step S105). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 acquires key information from the key management unit 215 and inputs the acquired key information and the column value to be combined included in the processing result to the decryption unit 213.
  • the decryption unit 213 obtains plaintext data by decrypting the values of the columns to be combined using the key information.
  • the decryption unit 213 transmits the plain text data to the user side addition processing unit 216.
  • the decryption unit 213 acquires “0000002” as plain text data.
  • the processing in step S105 is the description of the processing in step S105.
  • step S106 the user terminal 2 generates a search query using the plaintext data and the key acquired in step S105 (step S106). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 acquires key information from the key management unit 215, and inputs the acquired key information and the plaintext data received from the decryption unit 213 to the encrypted search query generation unit 214.
  • the encrypted search query generation unit 214 generates a search query for the values of the columns to be combined when receiving input from the user-side addition processing unit 216.
  • the encrypted search query generation unit 214 transmits the generated search query to the user side addition processing unit 216.
  • the encrypted search query generation unit 214 when “0000002” is input as plaintext data, the encrypted search query generation unit 214 generates encrypted data “EncQuery (0000002)” as a search query using the input key information.
  • EncQuery (0000002)
  • the user terminal 2 generates a generation command for generating the encrypted combined information 4621 (step S107). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 After receiving the search query from the encrypted search query generation unit 214, the user-side addition processing unit 216 inserts the search query column into the information to be combined determined in step S102, and stores the encrypted combined information 4621 in the database.
  • a generation instruction for generating the side additional information group 462 is generated. Specifically, the user-side addition processing unit 216 generates a generation command including the name of information to be used, the name of the column to be inserted, and all search queries set in the column.
  • a generation command for setting the information to be used as “encrypted diagnosis information 4612”, the name of the new column as “patient number_query”, and the search query “EncQuery (X)” as a new column is generated.
  • the user side addition processing unit 216 transmits the generated generation command to the application server 3.
  • the above is the description of the processing in step S107.
  • the application server 3 generates SQL for generating the encrypted combined information 4621 (step S108). Specifically, the following processing is executed.
  • each information included in the generation command is input to the SQL generation unit 312. To do.
  • the SQL generation unit 312 generates SQL for generating the encrypted combined information 4621 based on the name of information to be used, the name of the column to be inserted, and all the search queries set in the column. In addition, the SQL generation unit 312 transmits the generated SQL to the application unit 311.
  • the application unit 311 When the application unit 311 receives the SQL, the application unit 311 transmits the SQL to the database server 4 via the database interface unit 313.
  • SQL (B) means that the “patient number_query” column is added to the encrypted diagnosis information 4612.
  • SQL (C) means setting a search query in the “patient number_query” column of each record. The above is the description of the processing in step S108.
  • step S109 when the database server 4 receives the SQL from the application server 3, the database server 4 executes the SQL (step S109). Specifically, the following processing is executed.
  • the database control unit 411 generates the encrypted combined information 4621 by executing the received SQL.
  • the database control unit 411 adds identification information to the encrypted combined information 4621. This is because a plurality of pieces of encrypted combined information 4621 are generated according to the combination of information to be combined.
  • the database control unit 411 transmits a processing result including information related to the encrypted combined information 4621 to the application server 3.
  • the processing result is transmitted to the user terminal 2 via the application server 3.
  • the database control unit 411 copies the encrypted diagnosis information 4612 to the database side additional information group 462 and stores “Patient” in the encrypted diagnosis information 4612.
  • the encryption combination information 4621 is generated by adding a number_query "column and setting a value in the column.
  • the database server 4 shows the result status indicating that the generation of the encrypted combined information 4621 has been successful, the number of values set in the “patient number_query” column, the time required for generating the encrypted combined information 4621, etc. Is sent to the application server 3.
  • the application unit 311 of the application server 3 generates result display information based on the received processing result and the information received in step S102 and step S107, and transmits the result display information to the user terminal 2.
  • the above is the description of the process in step S109.
  • the user terminal 2 displays a series of processing results to the user (step S110).
  • the browser 211 of the user terminal 2 when the browser 211 of the user terminal 2 receives the result display information, the browser 211 of the user terminal 2 displays a combined setting result display screen 2112 as shown in FIG. 8 on the display device 220 based on the result display information.
  • the combination setting result display screen 2112 is displayed on the display device 220 by the browser 211.
  • the combination setting result display screen 2112 includes a plurality of display forms (P201), (P202), (P203), (P204), and (P205) indicating values input using the combination setting input screen 2111 and execution results of SQL. , (P206), (P207), and (P208).
  • the combination setting result display screen 2112 includes an OK button (P209).
  • the display form (P201) and the display form (P203) are display forms that display the name of the first information to be combined and the name of the second information to be combined input using the connection setting input screen 2111. .
  • the display form (P202) and the display form (P204) are display forms that display the number of records of information to be combined first and the number of records of information to be combined second.
  • the display form (P205) is a display form that displays the name of the information in which the column of the search query is inserted.
  • the display form (P206) is a display form that displays the name of the column of the search query to be inserted.
  • the display form (P207) is a display form that displays the time required to generate the encrypted combined information 4621.
  • the display form (P208) is a display form for displaying the generation result of the encrypted combined information 4621. Either “success” or “failure” is displayed on the display form (P208).
  • the OK button (P209) is an operation button for instructing the end of display.
  • the user terminal 2 may store the processing result in the user side additional information group 262 as necessary, or may transmit it to the application server 3 or the database server 4.
  • the processing result includes a correspondence relationship between the encrypted combined information 4621 and the information used to generate the encrypted combined information 4621, a search query, and a column of information used to generate the encrypted combined information 4621. Are included.
  • step S102 when the user terminal 2 holds the main information group 261, the processing from step S102 to step S105 can be omitted.
  • the above is the description of the flow of the joint preparation process.
  • FIG. 9 is a flowchart illustrating an example of the join target column determination process executed by the user-side addition processing unit 216 according to the first embodiment.
  • the user side addition processing unit 216 When the user side addition processing unit 216 receives the name of the information to be combined, etc., the user side addition processing unit 216 starts a combination target column determination process described below.
  • the user-side addition processing unit 216 acquires the number of records of the first combination target information and the second combination target information (step F101).
  • the user-side addition processing unit 216 reads information on the number of records of information to be combined from the user-side additional information group 262.
  • the user-side additional processing unit 216 transmits an acquisition request for the number of records of information to be combined to the application server 3. Accordingly, SQL is transmitted to the database server 4 in order to count the number of records of information to be combined.
  • the user-side addition processing unit 216 can acquire the number of records of information to be combined by receiving the SQL processing result from the database server 4.
  • the user-side addition processing unit 216 determines the information to be combined with a small number of records as the information to be combined from which the values of the columns to be combined are read (Step F102).
  • the user-side addition processing unit 216 determines the encrypted diagnosis information 4612 as information to be combined from which the values of the columns to be combined are read out. Note that the column to be combined is a “patient number” column.
  • FIG. 10 is a sequence diagram illustrating the flow of the combined information acquisition process according to the first embodiment.
  • FIG. 11 is a diagram illustrating an example of a patient information acquisition screen 2113 according to the first embodiment.
  • FIG. 12 is a diagram illustrating an example of a patient disease name list display screen 2114 according to the first embodiment.
  • the user terminal 2, the application server 3, and the database server 4 execute a combined information acquisition process in cooperation.
  • the combined information acquisition process is started when the user terminal 2 receives an input from the user.
  • the user terminal 2 receives an input from the user (step S201).
  • the user uses the patient information acquisition screen 2113 as shown in FIG. 11 to input information necessary for acquiring the combined information.
  • a doctor who has stored sensitive information displays master information indicating basic patient information and data obtained by comparing recent patient diagnosis results, it is assumed that the user terminal 2 is operated.
  • the patient information acquisition screen 2113 is displayed on the display device 220 by the browser 211.
  • the patient information acquisition screen 2113 includes a plurality of radio buttons (P301) and (P302) for selecting information to be acquired.
  • the patient information acquisition screen 2113 includes an OK button (P303) and a cancel button (P304).
  • the radio button (P301) is a radio button for displaying a list of disease names of each patient.
  • the radio button (P302) is a radio button for displaying a list of medical certificates.
  • the OK button (P303) is an operation button for confirming the input of the selected radio button.
  • the cancel button (P304) is an operation button for canceling confirmation of input of the selected radio button.
  • the user selects the radio button (P301) and presses the OK button (P105).
  • the user terminal 2 generates a data acquisition request for acquiring combined information (step S202). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 specifies the type of operation necessary for acquiring the requested information.
  • the user-side addition processing unit 216 specifies a column necessary for the requested information and specifies information including the specified column. Further, the user-side addition processing unit 216 specifies encrypted combined information 4621 that stores a search query used for the encryption match determination process.
  • the operation type, the necessary columns, and the encrypted combined information 4621 are associated with the operation screen in advance. Also, it is conceivable that definition information indicating the data structure of information included in the main information group 261 is stored in the user side additional information group 262 in advance.
  • the user side additional processing unit 216 generates a data acquisition request including the type of operation, the name of the target information, the name of the target column, the identification information of the encrypted combined information 4621, and the read command.
  • the user-side addition processing unit 216 transmits the generated data acquisition request to the application server 3.
  • the patient number, name, and disease name are specified as necessary columns for the requested information, and encrypted patient information 4611 and encrypted diagnostic information 4612 are included in the requested information. Identified as necessary information. Also, the encrypted combined information 4621 including the patient number_query is specified as the encrypted combined information 4621 that stores the search query used for the encryption match determination process.
  • the application server 3 may specify the encrypted combined information 4621 that stores the type of operation and the search query necessary to acquire the requested information.
  • the application server 3 or the database server 4 holds information necessary for specifying. The above is the description of the process in step S202.
  • the application server 3 generates SQL for acquiring combined information obtained by combining the two pieces of information (step S203). Specifically, the following processing is executed.
  • the application unit 311 When the application unit 311 receives the data acquisition request, the application unit 311 transmits the data acquisition request to the SQL generation unit 312.
  • the SQL generation unit 312 refers to the SQL definition information 361 and identifies a record for which the request process 3612 matches the type of process included in the data acquisition request. In this case, a record whose definition ID 3611 is “1” is specified.
  • the SQL generation unit 312 generates the SQL based on the column name, the information name, the identification information of the encrypted combined information 4621 including the search query, and the SQL definition 3613 of the identified record. Generate.
  • the SQL generation unit 312 transmits the generated SQL to the application unit 311.
  • the application unit 311 transmits SQL to the database server 4 via the database interface unit 313.
  • the SQL generation unit 312 when the radio button (P301) is selected, the SQL generation unit 312 generates the following SQL (D).
  • SQL (D) combines the records of matching information when the value of the “patient number” column of the encrypted patient information 4611 and the value of the “patient number_query” column of the encrypted combined information 4621 match. This means that the values of the “patient number” column, “name” column, and “disease name” column are read out from the combined result.
  • the above is the description of the process in step S203.
  • the database server 4 executes the SQL (step S204).
  • the database control unit 411 executes the received SQL and transmits the processing result to the application server 3.
  • the processing result is transmitted to the user terminal 2 via the application server 3.
  • the database control unit 411 when the database control unit 411 receives SQL (D), it calls the encryption match determination unit 412.
  • the encryption match determination unit 412 includes the value of the “patient number” column of one record included in the encrypted patient information 4611 and the value of the “patient number_query” column of one record included in the encrypted combined information 4621. Are determined to match.
  • the database control unit 411 acquires a record in which the value of the “patient number_query” column matches the value of the “patient number” column based on the determination result of the encryption match determination unit 412 and stores it in the temporary information 4101.
  • the database control unit 411 transmits the processing result including the temporary information 4101 to the application server 3.
  • the user terminal 2 decrypts the processing result (step S205).
  • the user-side addition processing unit 216 acquires key information from the key management unit 215 and transmits the temporary information 4104 and the key information to the decryption unit 213. To do.
  • the decryption unit 213 obtains plaintext data by decrypting the temporary information 4104 using the key information.
  • the decryption unit 213 transmits the plain text data to the user side addition processing unit 216.
  • the user-side addition processing unit 216 transmits plaintext data to the browser 211.
  • the user terminal 2 displays the result of a series of processing to the user (step S206).
  • the browser 211 generates display information for displaying a processing result including plaintext data, and a patient disease name list display screen 2114 as shown in FIG. 12 is displayed on the display device 220 based on the display information. indicate.
  • the patient disease list display screen 2114 is displayed on the display device 220 by the browser 211.
  • the patient disease name list display screen 2114 includes a combined result (P401) which is plain text data.
  • the patient disease name list display screen 2114 includes an OK button (P402).
  • the combined result shown in FIG. 12 includes a plurality of records including a “patient number” column, a “name” column, and a “disease name” column.
  • the top record indicates that a patient whose patient number is “0000002” and whose name is “Sato” has received a diagnosis result of hypertension.
  • the OK button (P402) is an operation button for instructing the end of display.
  • the above is the description of the patient disease list display screen 2114.
  • the above is the description of the combined information acquisition process.
  • the encrypted combined information 4621 is generated using one of the two pieces of information to be combined, but the present invention is not limited to this.
  • the name of the first information, the name of the column to be combined with the first information, the name of the second information, the name of the column to be combined with the second information, and the search query It may be encrypted combined information 4621 including a plurality of associated records.
  • the database control unit 411 executes the encryption match determination process for each of the first information and the second information, and records the first information that matches the search query and the search query. Combine the records of the matching second information.
  • the concealment database system 1 of the second embodiment is different from the first embodiment in that it provides a function for realizing a partial match search process.
  • the partial match search process is a process for acquiring a record that partially matches a column included in a record of an arbitrary table using a partial keyword as a search condition.
  • the second embodiment will be described with a focus on differences from the first embodiment.
  • Example 2 the software configuration and the contents of information held by each device are partially different.
  • the software configuration of the user terminal 2 of the second embodiment is the same as the software configuration of the user terminal 2 of the first embodiment.
  • the user-side addition processing unit 216 of the second embodiment is different from the first embodiment in that it has a function for realizing a partial match search process.
  • FIG. 13 is a block diagram illustrating a logical configuration of the user-side addition processing unit 216 according to the second embodiment.
  • the user side addition processing unit 216 includes a partial information generation unit 2161 and a partial match search query generation unit 2162 as functions for realizing partial match search processing.
  • the partial information generation unit 2161 receives input of plaintext data in a column of arbitrary information, generates partial information 2101 by dividing the plaintext data into a predetermined granularity, and outputs the partial information 2101. Note that the division granularity of the plaintext data is determined in a preparation process for a partial match search process described later.
  • the partial match search query generation unit 2162 receives input of a search term that is plain text data, divides the search term into a predetermined granularity, and the search term divided in cooperation with the encrypted search query generation unit 214 is encrypted.
  • the partial match search query (encrypted search query) is generated, and the partial match search query is output. Note that the search word division granularity is determined in a partial match search process described later.
  • the software configuration of the application server 3 according to the second embodiment is the same as the software configuration of the application server 3 according to the first embodiment.
  • the application server 3 generates an SQL that realizes the partial match search process based on the SQL definition 3613 whose definition ID 3611 is “2”.
  • the SQL definition 3613 whose definition ID 3611 is “2” is the following SQL (E) and (F).
  • SQL (E) SELECT partial match ID acquisition (name_partial information, LikeID information_xxx, partial match search query);
  • SQL (E) is an SQL for instructing the partial match ID acquisition unit 4131 to execute the partial match ID acquisition process.
  • the ID that matches the partial match search query information 2102 is extracted from the encrypted partial information 4622, and LikeID information_xxx 4623 is extracted. Means output to.
  • SQL (F) means that the encrypted patient information 4613 and LikeID information_xxx 4623 are combined in the “ID” column, and the values in the “patient number” column and “name” column of the matched records are read out.
  • the software configuration of the database server 4 of the second embodiment is the same as the software configuration of the database server 4 of the first embodiment.
  • the database side additional processing unit 413 of the second embodiment is different from the first embodiment in that it has a function for realizing a partial match search process.
  • FIG. 14 is a block diagram illustrating a logical configuration of the database side additional processing unit 413 according to the second embodiment.
  • the database side addition processing unit 413 includes a partial match ID acquisition unit 4131 as a function for realizing the partial match search process.
  • the partial match ID acquisition unit 4131 receives as input the partial table search query and the output table name that stores the ID of the partially matched record, determines the partial match ID using the cryptographic match determination unit 412, and outputs the ID Output to table.
  • FIG. 15 is a diagram illustrating an example of a data structure of data temporarily stored in the memory 210 according to the second embodiment.
  • the memory 210 stores partial information 2101 and partial match search query information 2102.
  • the partial information 2101 includes a plurality of records including a “name_partial information” column, an “ID” column, and an “offset” column.
  • the “name_partial information” column is a value obtained by dividing the value of the column subject to the partial match search process.
  • a partial match search process is performed on the “name” column of the encrypted patient information 4613, so the partial information 2101 includes a “name_partial information” column.
  • the target of the partial match search process is different, the partial information 2101 includes a “(target column name) _partial information” column.
  • the “ID” column is an identification number of a record that stores a value before the value stored in the “name_partial information” column is divided.
  • the “ID” column of this embodiment corresponds to the “ID” column of the encrypted patient information 4613.
  • the “offset” column is a division position of the value stored in “name_partial information” in the value before division.
  • the top entry of the partial information 2101 is “Suzuki” stored in the “name_partial information” column, and the “name” of the record whose “ID” column of the encrypted patient information 4613 is “1”. This is a value obtained by dividing the column value “Taro Suzuki” and indicates that the division position is “0”.
  • the partial match search query information 2102 includes a plurality of records that store partial match search queries generated from values obtained by dividing a search term used for partial match search processing.
  • the record includes a “search query” column and an “offset” column.
  • Search query column is a partial match search query.
  • the “offset” column is a division position of the value before encryption in the search word.
  • the partial match search query information 2102 in FIG. 15 stores a search query generated from the search term “Taiji Fujiwara”.
  • the top record of the partial match search query information 2102 indicates that the search query is “EncQuery (Fujiwara)”, and “Fujiwara” before encryption indicates that the search word division position is “0”.
  • FIG. 16 is a diagram illustrating an example of a data structure of the encrypted main information group 461 according to the second embodiment.
  • the encrypted main information group 461 of the second embodiment includes encrypted patient information 4613.
  • the encrypted patient information 4613 is a list of patients and includes a plurality of records including an “ID” column, a “patient number” column, and a “name” column.
  • the “ID” column, the “patient number” column, and the “name” column are the same as the “ID” column, “patient number” column, and “name” column of the encrypted patient information 4611 of the first embodiment.
  • the top record of the encrypted patient information 4613 indicates that the patient number of the record having the ID “1” is “Enc (0000001)” and the name is “Enc (Taro Suzuki)”.
  • FIG. 17 is a diagram illustrating an example of a data structure of the database side additional information group 462 of the second embodiment.
  • the database side additional information group 462 of the second embodiment includes encrypted partial information 4622 and LikeID information_xxx 4623 used for the partial match search process.
  • the encrypted partial information 4622 includes a plurality of records including a “name_partial information” column, an “ID” column, and an “offset” column.
  • the “name_partial information” column is encrypted data that is compared with the partial match search query in the cryptographic match determination process. For example, “Enc (Suzuki)” in which “Suzuki” is encrypted is stored in the “name_partial information” column of the top record of the encrypted partial information 4622.
  • ID column and offset are columns corresponding to the “ID” column and “offset” of the partial information 2101.
  • LikeID information_xxx 4623 is an ID output by the partial match ID acquisition unit 4131. LikeID information_xxx 4623 includes only an “ID” column. A different value is set in “xxx” of LikeID information_xxx 4623 for each partial match search process.
  • Like ID information_xxx 4623 shown in FIG. 17 indicates that the ID output from the partial match ID acquisition unit 4131 is only “2”.
  • FIG. 18 is a diagram illustrating an example of a data structure of the temporary information 4102 temporarily stored in the memory 410 according to the second embodiment.
  • Temporary information 4102 stores the execution result of SQL (F). Specifically, the temporary information 4102 stores the values of the “patient number” column and the “name” column of the record including the ID that matches the partial match search query in the partial match search process from the encrypted patient information 4613. Accordingly, the temporary information 4102 includes one record including a “patient number” column and a “name” column.
  • the temporary information 4102 in FIG. 18 indicates that a record whose patient number is “Enc (0000003)” and whose name is “Enc (Taro Fujiwara)” is output as a result of the partial match search process.
  • FIG. 19 is a sequence diagram illustrating the flow of preparation processing for partial match search processing according to the second embodiment.
  • FIG. 20 is a diagram illustrating an example of the partial match setting input screen 2115 according to the second embodiment.
  • FIG. 21 is a diagram illustrating an example of the partial match setting result display screen 2116 according to the second embodiment.
  • the user terminal 2, the application server 3, and the database server 4 cooperate to execute a preparation process for a partial match search process.
  • step S101 to S105 is the same as the process flow of the first embodiment. However, the processing content of each step is partially different.
  • step S101 of the second embodiment information input by the user is different from that of the first embodiment.
  • the user uses the partial match setting input screen 2115 as shown in FIG. 20 to input information and columns to be subjected to partial match search processing.
  • the partial match setting input screen 2115 is displayed on the display device 220 by the browser 211.
  • the partial match setting input screen 2115 includes a plurality of input forms (P501), (P502), and (P503) for inputting information necessary for partial match search processing.
  • the partial match setting input screen 2115 includes an OK button (P504) and a cancel button (P505).
  • the input form (P501) is an input form for inputting the name of information to be subjected to partial match search processing.
  • the input form (P502) is an input form for inputting the name of a column to be subjected to partial match search processing.
  • the input form (P503) is an input form for inputting a column name for designating a record from which a column value is read based on the processing result of the partial match search process.
  • the OK button (P504) is an operation button for confirming the value input in each input form.
  • the cancel button (P505) is an operation button for canceling the confirmation of the value input in each input form.
  • “encrypted patient information” is input as information to be subjected to partial match search processing
  • “name” column is input as a column to be subjected to partial match search processing
  • a record for reading the column value ⁇ ⁇ ⁇ “ID” column is input as a column for designating.
  • step S102 of the second embodiment the join target column determination process is not executed.
  • step S103 of the second embodiment the SQL generation unit 312 generates SQL for reading the value of the target column included in the data acquisition request based on the value input on the partial match setting input screen 2115.
  • step S104 and step S105 in the second embodiment are the same as those in the first embodiment.
  • User terminal 2 generates partial information 2101 using the plaintext data decrypted in step S105 (step S301).
  • step S301 When a value as shown in FIG. 20 is input to the partial match setting input screen 2115, the following processing is executed.
  • the user side addition processing unit 216 calls the partial information generation unit 2161. At this time, the user-side addition processing unit 216 inputs a pair of values in the “ID” column and the “name” column of “encrypted patient information 4613” to the partial information generation unit 2161.
  • the partial information generation unit 2161 executes partial information generation processing based on the input value. Thereby, partial information 2101 shown in FIG. 15 is generated. Details of the partial information generation processing will be described with reference to FIG. The above is the description of the process in step S301.
  • the user terminal 2 encrypts the column value that is the target of the partial match search process of the partial information 2101 (step S302). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 acquires key information from the key management unit 215, and transmits the key information and partial information generation unit 2161 to the encryption unit 212.
  • the encryption unit 212 encrypts the value of the column to be subjected to the partial match search process among the columns included in the partial information 2101 using the key information.
  • the decryption unit 213 transmits the partial information 2101 in which the column value that is the target of the partial match search process is encrypted, to the user-side addition processing unit 216. The above is the description of the process in step S302.
  • the user terminal 2 generates a generation command for generating the encrypted partial information 4622 (step S303).
  • the user-side addition processing unit 216 generates a generation command for registering the encrypted partial information 2101 received from the encryption unit 212 as the encrypted partial information 4622, and the command is added to the application server 3. Send to.
  • step S303 After the processing in step S303, the processing from step S108 to step S110 is executed.
  • the process flow from step S108 to step S110 is the same as the process flow of the first embodiment. However, the processing contents in each step are partially different.
  • step S108 of the second embodiment the SQL generation unit 312 generates SQL for generating the encrypted partial information 4622 using each information included in the generation instruction.
  • step S109 of the second embodiment the database control unit 411 generates encrypted partial information 4622 in the database side additional information group 462 by executing the received SQL.
  • step S110 of the second embodiment the browser 211 displays a partial match setting result display screen 2116 as shown in FIG. 21 on the display device 220 based on the result display information.
  • the partial match setting result display screen 2116 is displayed on the display device 220 by the browser 211.
  • the partial match setting result display screen 2116 includes display values (P601), (P602), (P603), (P604), and (P605) indicating the values input to the partial match setting input screen 2115 and the execution results of SQL. .
  • the partial match setting result display screen 2116 includes an OK button (P606).
  • the display form (P601) is a display form that displays the name of information to be subjected to the partial match search process input on the partial match setting input screen 2115.
  • the display form (P602) is a display form that displays the names of columns to be subjected to the partial match search process input on the partial match setting input screen 2115.
  • the display form (P603) is a display form for displaying the name of the encrypted partial information 4622.
  • the display form (P604) is a display form that displays the number of records included in the encrypted partial information 4622.
  • the display form (P605) is a display form showing the generation result of the encrypted partial information 4622. Either “success” or “failure” is displayed on the display form (P605).
  • the OK button (P606) is an operation button for instructing the end of display.
  • the user terminal 2 may store the processing result in the user side additional information group 262 as necessary, or may transmit it to the application server 3 or the database server 4.
  • the processing result includes the correspondence between the encrypted partial information 4622 and the partial information 2101. The above is the description of the flow of preparation processing for partial match search processing.
  • FIG. 22 is a flowchart illustrating an example of partial information generation processing executed by the partial information generation unit 2161 according to the second embodiment.
  • the partial information generation unit 2161 When the partial information generation unit 2161 is called from the user-side addition processing unit 216, the partial information generation unit 2161 starts a partial information generation process described below.
  • the partial information generation unit 2161 receives a pair of “ID” column values, which are plaintext data, and a column value target for partial match search processing.
  • the partial information generation unit 2161 reads one pair (step F201).
  • the partial information generation unit 2161 reads one pair in ascending order of the ID value.
  • the partial information generation unit 2161 reads a pair whose ID is “1” and whose name is “Taro Suzuki”.
  • the partial information generation unit 2161 divides the column values to be subjected to the partial match search process using the N-gram method (step F202).
  • the partial information generation unit 2161 assigns an offset indicating the division position from the beginning of the value before division for each divided value (step F203).
  • the partial information generation unit 2161 adds a record including the divided value, ID, and offset to the partial information 2101 (step F204).
  • Partial information ID offset value record 1 Suzuki 1 0
  • Kita 1 1 Record 3: Taro 1 2
  • the partial information generation unit 2161 determines whether or not the processing has been completed for all pairs (step F205).
  • the partial information generation unit 2161 returns to Step F201 and executes the same processing.
  • the partial information generation unit 2161 ends the processing. Through the above processing, partial information 2101 as shown in FIG. 15 is generated.
  • the user terminal 2 can narrow down the partially matched IDs and acquire the encrypted data corresponding to the ID. This completes the description of the preparation process for the partial match search process.
  • FIG. 23 is a sequence diagram illustrating a flow of partial match search processing according to the second embodiment.
  • FIG. 24 is a diagram illustrating an example of a patient information acquisition screen 2117 according to the second embodiment.
  • FIG. 25 is a diagram illustrating an example of a patient information display screen 2118 according to the second embodiment.
  • the user terminal 2, the application server 3, and the database server 4 cooperate to execute a partial match search process.
  • the partial match search process is started when the user terminal 2 receives an input from the user.
  • the user terminal 2 receives an input from the user (step S401).
  • the user uses a patient information acquisition screen 2117 as shown in FIG. 24 to input a part of the name as a search term.
  • a doctor who has stored sensitive information uses a part of the patient's name as a search term and requests display of the corresponding patient information, it is assumed that the user terminal 2 is operated.
  • the patient information acquisition screen 2117 is displayed on the display device 220 by the browser 211.
  • the patient information acquisition screen 2117 includes a radio button (P701) and an input form (P702).
  • the patient information acquisition screen 2117 includes an OK button (P703) and a cancel button (P704).
  • the radio button (P701) is a radio button for selecting the format of data to be displayed.
  • the input form (P702) is an input form for inputting a search term.
  • the OK button (P703) is an operation button for confirming the input.
  • the cancel button (P704) is an operation button for canceling input confirmation.
  • the user operates a radio button (P301), inputs a search term into the input form (P302), and presses an OK button (P703).
  • P301 a radio button
  • P302 inputs a search term into the input form
  • P703 an OK button
  • the user terminal 2 generates a data acquisition request for acquiring information that matches the search term (step S402). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 specifies the type of operation necessary for acquiring the requested information.
  • the user-side addition processing unit 216 identifies target information and a target column name.
  • the user-side addition processing unit 216 identifies encrypted partial information 4622 that stores a search query used for the encryption match determination process.
  • the user side addition processing unit 216 inputs the input search word to the partial match search query generation unit 2162 and instructs execution of the partial match search query generation process.
  • the partial match search query generation unit 2162 generates partial match search query information 2102 by executing a partial match search query generation process. For example, when the search term “Taiji Fujiwara” is input, partial match search query information 2102 as shown in FIG. 15 is generated. Details of the partial match search query generation process will be described with reference to FIG.
  • the partial match search query generation unit 2162 transmits the partial match search query information 2102 to the user side addition processing unit 216.
  • the user-side addition processing unit 216 makes an acquisition request for data including the type of operation, the name of the target information, the name of the target column, the identification information of the encrypted partial information 4622, the partial match search query information 2102, and the read command. It is generated and transmitted to the application server 3.
  • the above is the description of the process in step S402.
  • the application server 3 generates SQL for executing a partial match search process on the encrypted data (step S403). Specifically, the following processing is executed.
  • the application unit 311 When the application unit 311 receives the data acquisition request, the application unit 311 transmits the data acquisition request to the SQL generation unit 312.
  • the SQL generation unit 312 refers to the SQL definition information 361 and specifies a record for which the request processing 3612 matches the type of operation included in the data acquisition request. In this case, a record whose definition ID 3611 is “2” is specified.
  • the SQL generation unit 312 generates SQL based on the column name, information name, partial match search query information 2102 included in the data acquisition request, and the SQL definition 3613 of the identified record. In this embodiment, the SQL for the partial match ID acquisition process and the SQL for the partial match target column acquisition process are generated. The SQL generation unit 312 transmits the generated SQL to the application unit 311.
  • the application unit 311 transmits SQL to the database server 4 via the database interface unit 313.
  • the SQL generation unit 312 When information as illustrated in FIG. 24 is input, the SQL generation unit 312 generates the following SQL (G) and (H).
  • SQL (G) SELECT partial match ID acquisition (name_partial information, LikeID information_001, partial match search query EQ);
  • SQL (G) is the SQL of the partial match ID acquisition process.
  • SQL (G) means that the ID that matches the partial match search query is output from the encrypted partial information 4622 to the LikeID information_001 by instructing the partial match ID acquisition unit 4131 to execute the partial match ID acquisition process. To do.
  • SQL (H) is the SQL of the partial match target column acquisition process.
  • SQL (H) means that a record is output by combining encrypted patient information 4613 and LikeID information_001, and values in the “patient number” column and “name” column of the record are read out. The above is the description of step S403.
  • the database server 4 executes a partial match ID acquisition process and a partial match target column acquisition process according to the SQL (step S404, step S405). Specifically, the following processing is executed.
  • the database control unit 411 executes SQL for partial match ID acquisition processing and executes SQL for partial match target column acquisition processing.
  • the database control unit 411 instructs the partial match ID acquisition unit 4131 of the database side addition processing unit 413 to execute the partial match ID acquisition process based on SQL (G).
  • the ID is stored in LikeID information_xxx 4623. Details of the partial match ID acquisition processing will be described with reference to FIG.
  • the database control unit 411 Based on SQL (H), the database control unit 411 outputs a record in which the “ID” column matches the ID stored in the LikeID information_xxx 4623 from the encrypted patient information 4613, and the “patient number” column of the record And get the value of the "name” column.
  • the database control unit 411 stores the acquisition result as temporary information 4102 in the memory 410.
  • the database control unit 411 transmits the processing result including the temporary information 4102 to the application server 3.
  • the above is description of the process of step S404 and step S405.
  • step S406 when the user terminal 2 receives the processing result, the user terminal 2 decrypts the processing result (step S406).
  • the user-side addition processing unit 216 acquires key information from the key management unit 215 and transmits the temporary information 4102 and the key information to the decryption unit 213. .
  • the decryption unit 213 obtains plaintext data by decrypting the column values included in the temporary information 4102 using the key information.
  • the decryption unit 213 transmits the plain text data to the user side addition processing unit 216.
  • the user-side addition processing unit 216 transmits plaintext data to the browser 211.
  • the user terminal 2 displays a series of processing results to the user (step S407).
  • the browser 211 generates display information for displaying a processing result including plaintext data, and displays a patient information display screen 2118 as shown in FIG. 25 on the display device 220 based on the display information. To do.
  • the patient information display screen 2118 is displayed on the display device 220 by the browser 211.
  • the patient information display screen 2118 includes a list of search results (P801).
  • the patient information display screen 2118 includes an OK button (P802).
  • the list of search results (P801) shown in FIG. 25 includes one record including a “patient” column and a “name” column. This record indicates that the patient number is “0000002” and the name is “Taro Fujiwara”.
  • the OK button (P802) is an operation button for instructing the end of display.
  • FIG. 26 is a flowchart illustrating an example of a partial match search query generation process executed by the partial match search query generation unit 2162 according to the second embodiment.
  • the partial match search query generation unit 2162 starts a partial match search query generation process described below when a search word is input.
  • the partial match search query generation unit 2162 divides the search word using the N-gram method (step F301).
  • the partial match search query generation unit 2162 assigns an offset indicating the division position from the beginning of the value before division for each divided value (step F302).
  • the partial match search query generation unit 2162 generates a search query (step F303).
  • the partial match search query generation unit 2162 obtains key information from the key management unit 215, and transmits each divided value and key information to the encrypted search query generation unit 214.
  • the encrypted search query generation unit 214 generates a search query by encrypting each divided value using the key information, and transmits the search query to the partial match search query generation unit 2162.
  • EncQuery (Fujiwara) and “EncQuery (Hara)” are generated from “Fujiwara” and “Hara”.
  • the partial match search query generation unit 2162 generates partial match search query information 2102 (step F304).
  • the partial match search query generation unit 2162 generates partial match search query information 2102 including a plurality of records including a divided value, a divided value offset, and a divided value search query.
  • Partial search query offset Record 1 EncQuery (Fujiwara) 0
  • Record 2 EncQuery (Hara) 1
  • partial match search query information 2102 as shown in FIG. 15 is stored in the memory 210.
  • FIG. 27 is a flowchart illustrating an example of a partial match ID acquisition process executed by the partial match ID acquisition unit 4131 according to the second embodiment.
  • the partial match ID acquisition unit 4131 executes a partial match ID acquisition process described below.
  • the partial match ID acquisition unit 4131 receives the name of the encrypted partial information 4622, the name of the LikeID information_xxx 4623, and the partial match search query.
  • the partial match ID acquisition unit 4131 sets “0” as an initial value to the variable offset_now indicating the current position information and the variable n indicating the count (step F401).
  • the partial match ID acquisition unit 4131 sets a variable query_now indicating the target partial match search query (step F402).
  • the partial match ID acquisition unit 4131 searches the partial match search query information 2102 for a partial match search query in which the value of the “offset” column matches offset_now.
  • the partial match ID acquisition unit 4131 sets the searched partial match search query to query_now.
  • the partial match search query “EnQuery (Fujiwara)” of the record whose “offset” column is “0” is set to the query_now.
  • the partial match ID acquisition unit 4131 generates a Position_Table (step F403). Specifically, the following processing is executed.
  • the partial match ID acquisition unit 4131 calls the cryptographic match determination unit 412 and searches the encrypted partial information 4622 for a record whose value of the “partial information” column matches query_now.
  • the partial match ID acquisition unit 4131 generates a Position_Table composed of records including a column storing a value obtained by adding “1” to the value of the “ID” column of the retrieved record and the value of the “offset” column. .
  • the partial match ID acquisition unit 4131 stores the Position_Table in the memory 410.
  • Position_Table includes the following records. The above is the description of the processing in step F403. (Position_Table) ID offset Record 1: 2 1
  • the partial match ID acquisition unit 4131 updates offset_now (step F404).
  • the partial match ID acquisition unit 4131 adds “1” to the current offset_now.
  • the partial match ID acquisition unit 4131 determines whether or not there is a partial match search query in which the value of the “offset” column matches offset_now in the partial match search query information 2102 (step F405).
  • the partial match ID acquisition unit 4131 refers to the partial match search query information 2102 and determines whether or not there is a partial match search query whose value in the “offset” column matches offset_now.
  • the partial match ID acquisition unit 4131 updates query_now (step F406).
  • the partial match ID acquisition unit 4131 sets the searched partial match search query to query_now. For example, when “EncQuery (Fujiwara)” is set in the query_now before the update, offset_now is updated to “1” in step F404. Therefore, “EncQuery (raw material)” is set in the query_now.
  • the partial match ID acquisition unit 4131 updates n (step F407).
  • the partial match ID acquisition unit 4131 adds “1” to the current n.
  • the partial match ID acquisition unit 4131 searches the encrypted partial information 4622 for a record that matches the condition (step F408). Specifically, the following processing is executed.
  • the partial match ID acquisition unit 4131 matches the values of the “ID” column and the “offset” column of the encrypted partial information 4622 with the values of the “ID” column and the “offset” column of the nth record of the Position_Table, and The record in which the value of the “partial information” column of the encrypted partial information 4622 matches query_now is searched. It should be noted that the encryption match determination unit 412 performs a match determination between the “partial information” column value of the encrypted partial information 4622 and the query_now.
  • the Position_Table includes the record illustrated in step F403.
  • the partial match ID acquisition unit 4131 has an “ID” column value of “2”, an “offset” column value of “1”, and a “name_partial information” column of “EncQuery (raw)”. Find records that match.
  • the partial match ID acquisition unit 4131 acquires the following record as a search result. The above is the description of step F408. (search results) Name_Partial information ID offset Record 1: “Enc” 2 1
  • the partial match ID acquisition unit 4131 determines whether there is a record that matches the condition based on the search result (step F409).
  • the partial match ID acquisition unit 4131 When it is determined that there is a record that matches the condition, the partial match ID acquisition unit 4131 adds “1” to the value of the “offset” column of the nth record of Position_Table (step F410). Thereafter, the partial match ID acquisition unit 4131 proceeds to step F412.
  • n is “1”
  • the value of the “offset” column of the first record 1 of the Position_Table illustrated in step F403 is “2”.
  • the partial match ID acquisition unit 4131 deletes the nth record of Position_Table (step F410). Thereafter, the partial match ID acquisition unit 4131 proceeds to step F412.
  • the partial match ID acquisition unit 4131 determines whether or not the (n + 1) th record exists in the Position_Table (step F412).
  • the partial match ID acquisition unit 4131 returns to Step F407 and executes the same processing.
  • the partial match ID acquisition unit 4131 returns to Step F404 and executes the same processing.
  • step F405 when it is determined that there is no partial match search query in which the value of the “offset” column matches offset_now, the partial match ID acquisition unit 4131 generates LikeID information_xxx 4623 (step F413). Thereafter, the partial match ID acquisition unit 4131 ends the partial match ID acquisition process.
  • the partial match ID acquisition unit 4131 deduplicates the value in the “ID” column of the Position_Table and generates LikeID information_xxx 4623 including only the ID group.
  • the partial match ID acquisition unit 4131 stores the generated LikeID information_xxx 4623 in the database side additional information group 462.
  • LikeID information _xxx 4623 including the following records is generated. (LikeID information_xxx) ID Record 1: 2
  • the concealment database system 1 of the third embodiment is different from the first embodiment in that it provides functions for realizing the range search process and the sort process.
  • the range search process is a process for acquiring records included in a specified range
  • the sort process is a process for rearranging records according to an arbitrary condition.
  • Example 3 the software configuration and the content of information held by each device are partially different.
  • the software configuration of the user terminal 2 of the second embodiment is the same as the software configuration of the user terminal 2 of the first embodiment.
  • the user-side addition processing unit 216 of the second embodiment is different from the first embodiment in that it has a function for realizing a range search process and a sort process.
  • FIG. 28 is a block diagram illustrating a logical configuration of the user-side addition processing unit 216 according to the third embodiment.
  • the user side addition processing unit 216 includes a corresponding range information generation unit 2163, a corresponding range label information generation unit 2164, a range search / sort query generation unit 2165, an out-of-range data deletion unit 2166, and a restricted sort processing unit 2167.
  • the corresponding range information generation unit 2163 receives information on the target column of the range search process / sort process that is plaintext data, assigns a range label to a plurality of sections obtained by dividing the range of the target column, and measures the frequency of each section To generate corresponding range information 2621 and output corresponding range information 2621.
  • the corresponding range label information generation unit 2164 receives input of the name of the corresponding range information 2621 and the value of the target column, acquires a range label corresponding to the column value from the corresponding range information 2621, and outputs the acquired range label. .
  • the range search / sort query generation unit 2165 receives an input of a range search process / sort process condition that is plaintext data, and outputs a search query of a range label corresponding to the condition.
  • the out-of-range data deletion unit 2166 deletes records that do not meet the conditions of the range search process / sort process from the process results of the range search process / sort process, and outputs only records that meet the condition.
  • the limited sort processing unit 2167 receives the processing result of the range search processing / sort processing or the processing result of the range search processing / sort processing processed by the out-of-range data deletion unit 2166 as an input, and sorts them in the designated order. A predetermined number of records are output. Note that the number of records to be output (Limit number) is designated in advance by the user.
  • the software configuration of the application server 3 of the third embodiment is the same as the software configuration of the application server 3 of the first embodiment.
  • the application server 3 generates an SQL that realizes the range search process / sort process based on the SQL definition 3613 whose definition ID 3611 is “3”.
  • the SQL definition 3613 whose definition ID 3611 is “3” is the following SQL (I).
  • SQL (I) is obtained from the encryption correspondence range information 4624 and “patient number” from the record group whose “age_range label” column matches the search query “EncQuery (300)” or the search query “EncQuery (400)”. This means reading the values of the column, “name” column, and “age” column.
  • the software configuration of the database server 4 of the third embodiment is the same as the software configuration of the database server 4 of the first embodiment.
  • FIG. 29 is a diagram illustrating an example of a data structure of the user side additional information group 262 according to the third embodiment.
  • the user side additional information group 262 of the second embodiment includes corresponding range information 2621.
  • Corresponding range information 2621 includes a plurality of records including a “corresponding range” column, a “range label” column, and a “frequency” column.
  • the “corresponding range” column is a division into which the range of the column subject to the range search process / sort process is divided.
  • the corresponding range information 2621 includes an “age_corresponding range” column.
  • the “range label” column is a range label assigned to the category.
  • the “frequency” column is the number of records in which the value of the column corresponding to the “age_corresponding range” column is included in the category.
  • the record at the top of the corresponding range information 2621 is a record in which the age is “0 to 9 years old”, the range label is “100”, and the value of the “age” column of the record is included in the relevant category.
  • the number of “2” is “2”.
  • FIG. 30 is a diagram illustrating an example of a data structure of data temporarily stored in the memory 210 according to the third embodiment.
  • the memory 210 includes range search query information 2103.
  • the range search query information 2103 includes a plurality of records that store search queries generated based on the range search processing / sort processing conditions.
  • the record includes a “search query” column.
  • the search query of this embodiment is used for the encryption match determination process executed in the range search process.
  • the range search query information 2103 shown in FIG. 30 includes a record of the search query “EncQuery (300)” and a record of the search query “EncQuery (400)”.
  • FIG. 31 is a diagram illustrating an example of a data structure of the encrypted main information group 461 according to the third embodiment.
  • the encrypted main information group 461 of the third embodiment includes encrypted patient information 4614.
  • the encrypted patient information 4614 is a list of patients, and includes a plurality of records including an “ID” column, a “patient number” column, a “name” column, and an “age” column.
  • the “ID” column, the “patient number” column, and the “name” column are the same as the “ID” column, the “patient number” column, and the “name” column in the encrypted patient information 4611 of the first embodiment.
  • the “age” column is the age of the patient.
  • the top record of the encrypted patient information 4614 is a patient whose patient number is “Enc (0000001)”, whose name is “Enc (Suzuki)”, and whose age is “Enc (4)”. Indicates.
  • FIG. 32 is a diagram illustrating an example of a data structure of the database side additional information group 462 of the third embodiment.
  • the database side additional information group 462 of the third embodiment includes encryption compatible range information 4624 used for range search processing / sort processing.
  • the encryption corresponding range information 4624 includes a plurality of records including an “ID” column, a “patient number” column, a “name” column, an “age” column, and an “age_range label” column.
  • the “age_range label” column is encrypted data that is compared with the search query in the encryption match determination process. For example, in the “age_range label” column of the top record of the encryption-corresponding range information 4624, “Enc (100)” in which the range label “100” of the category including “4” is encrypted is stored. Stored.
  • the “ID” column, “patient number” column, “name” column, and “age” column are the “ID” column, “patient number” column, “name” column, and “age” column of the encrypted patient information 4614. Is a column corresponding to.
  • FIG. 33 is a diagram illustrating an example of a data structure of temporary information 4103 temporarily stored in the memory 410 according to the third embodiment.
  • Temporary information 4103 stores the execution result of SQL (I). Specifically, the temporary information 4103 stores the values of the “patient number” column, “name” column, and “age” column of the record that matches the search query from the encrypted patient information 4614. Accordingly, the temporary information 4103 includes one or more records including a “patient number” column, a “name” column, and an “age” column.
  • the top record of the temporary information 4103 shown in FIG. 33 is a record of a patient whose patient number is “Enc (0000005)”, whose name is “Enc (Fujiwara)”, and whose age is “Enc (23)”. Indicates a record.
  • FIG. 34 is a sequence diagram illustrating the flow of the range search process / sort process preparation process according to the third embodiment.
  • FIG. 35 is a diagram illustrating an example of a range search process / sort process setting input screen 2119 according to the third embodiment.
  • FIG. 36 is a diagram illustrating an example of a range search process / sort process setting result display screen 2120 according to the third embodiment.
  • the user terminal 2, the application server 3, and the database server 4 cooperate to execute range search processing / sort processing preparation processing.
  • step S101 to S105 is the same as the process flow of the first embodiment. However, the processing content of each step is partially different.
  • step S101 of the third embodiment information input by the user is different from that of the first embodiment.
  • the user uses a range search process / sort process setting input screen 2119 as shown in FIG. 35 to specify information, columns, range, and frequency leveling criteria that are targets of the range search process / sort process. Enter a value.
  • the range search process / sort process setting input screen 2119 is displayed on the display device 220 by the browser 211.
  • the range search process / sort process setting input screen 2119 includes a plurality of input forms (P901), (P902), (P903), (P904), and (P905) for inputting information necessary for the range search process and the sort process. .
  • the range search process / sort process setting input screen 2119 includes an OK button (P906) and a cancel button (P907).
  • the input form (P901) is an input form for inputting the name of information to be subjected to range search processing / sort processing.
  • the input form (P902) is an input form for inputting the name of a column to be subjected to range search processing / sort processing.
  • the input form (P903) is an input form for inputting the lower limit value of the target column range
  • the input form (P904) is an input form for inputting the upper limit value of the target column range
  • the input form (P905) is an input form for inputting a reference value for leveling the number of records included in each section.
  • the OK button (P906) is an operation button for confirming the value input in each input form.
  • the cancel button (P907) is an operation button for canceling the confirmation of the value input in each input form.
  • “encrypted patient information” and “age” are input as information and columns to be subjected to range search processing / sort processing, a value range is input from “0” to “200”, and a frequency leveling reference value Is input as “2”.
  • step S102 of the third embodiment the join target column determination process is not executed.
  • step S103 of the third embodiment the SQL generation unit 312 reads out the value of the target column included in the data acquisition request based on the value input in the range search process / sort process setting input screen 2119. Is generated.
  • step S104 and step S105 in the third embodiment are the same as those in the first embodiment.
  • step S105 the value of the “age” column of the encrypted patient information 4614 is stored in the memory 210 in a decrypted state.
  • User terminal 2 generates corresponding range information 2621 using the plaintext data decrypted in step S105 (step S501).
  • the user-side addition processing unit 216 calls the corresponding range information generation unit 2163.
  • the user-side addition processing unit 216 inputs the target column value, the target column value range, and the frequency leveling reference value to the corresponding range information generation unit 2163.
  • the corresponding range information generation unit 2163 performs a corresponding range information generation process based on the input value.
  • the corresponding range information 2621 shown in FIG. 29 is generated. Details of the corresponding range information generation processing will be described with reference to FIG.
  • the user terminal 2 encrypts the corresponding range information 2621 (step S502). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 acquires key information from the key management unit 215, and transmits the corresponding range information 2621 and the key information to the encryption unit 212.
  • the encryption unit 212 encrypts the correspondence range information 2621 using the key information, and transmits the encrypted correspondence range information 2621 to the user side addition processing unit 216.
  • the user-side addition processing unit 216 generates a generation command for generating the encrypted corresponding range information 2621.
  • the user terminal 2 generates a corresponding range label (step S503).
  • the user-side addition processing unit 216 calls the corresponding range label information generation unit 2164.
  • the user-side addition processing unit 216 inputs the plaintext data of the target column and the name of the corresponding range information 2621 before encryption.
  • the corresponding range label information generation unit 2164 executes a corresponding range label information generation process based on the input value. As a result, a range label corresponding to each section of the target column is generated. Details of the corresponding range label information generation processing will be described with reference to FIG.
  • the user terminal 2 generates a generation command for generating the encryption corresponding range information 4624 (step S504). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 acquires key information from the key management unit 215, and inputs the range label and key information generated in step S503 to the encrypted search query generation unit 214.
  • the encrypted search query generation unit 214 generates a search query for the range label, and transmits the generated search query to the user side addition processing unit 216.
  • the user side addition processing unit 216 generates an addition command for adding a search query column to the encrypted corresponding range information 2621.
  • the user-side addition processing unit 216 generates information including encrypted correspondence range information 2621 information, information encryption correspondence range information 2621 generation instruction, range label search query, and “search query” column addition instruction. Generate instructions.
  • the user-side addition processing unit 216 transmits the generated generation command to the application server 3. The above is the description of the process in step S504.
  • step S504 After the process of step S504, the processes from step S108 to step S110 are executed.
  • the process flow from step S108 to step S110 is the same as the process flow of the first embodiment. However, the processing contents in each step are partially different.
  • step S108 of the third embodiment the SQL generation unit 312 generates an SQL for generating the encryption corresponding range information 4624 using each information included in the generation instruction.
  • step S109 of the third embodiment the database control unit 411 generates encryption corresponding range information 4624 in the database side additional information group 462 by executing the received SQL.
  • step S110 of the third embodiment the browser 211 displays a range search process / sort process setting result display screen 2120 as shown in FIG. 36 on the display device 220 based on the result display information.
  • the range search process / sort process setting result display screen 2120 is displayed on the display device 220 by the browser 211.
  • the range search process / sort process setting result display screen 2120 includes information input to the range search process / sort process setting input screen 2119 and display forms (P1001), (P1002), (P1003) indicating the SQL execution results. (P1004), (P1005), and (P1006) are included.
  • the range search process / sort process setting result display screen 2120 includes an OK button (P1007).
  • the display form (P1001) is a display form for displaying the name of the target information input on the range search process / sort process setting input screen 2119.
  • the display form (P1002) is a display form that displays the name of the target column input on the range search process / sort process setting input screen 2119.
  • the display form (P1003) is a display form for displaying the name of the corresponding range information 2621.
  • the display form (P1004) is a display form for displaying the name of the encryption corresponding range information 4624.
  • the display form (P1005) is a display form that displays the column names of the corresponding range information 2621 added as a search query.
  • the display form (P1006) is a display form for displaying the generation result of the encryption correspondence range information 4624. On the display form (P1006), either “success” or “failure” is displayed.
  • the OK button (P1007) is an operation button for instructing the end of display.
  • the user terminal 2 may store the processing result in the user side additional information group 262 as necessary, or may transmit it to the application server 3 or the database server 4.
  • the processing result includes a correspondence relationship between the encryption corresponding range information 4624 and the corresponding range information 2621.
  • FIG. 37 is a flowchart for describing the corresponding range information generation processing executed by the corresponding range information generation unit 2163 according to the third embodiment.
  • the corresponding range information generation unit 2163 When the corresponding range information generation unit 2163 is called from the user-side addition processing unit 216, the corresponding range information generation unit 2163 starts the corresponding range information generation process described below.
  • the corresponding range information generation unit 2163 receives the target column value, the target column value range, and the frequency leveling reference value.
  • the corresponding range information generation unit 2163 calculates the frequency (number of records) for each value of the target column (step F501).
  • the corresponding range information generation unit 2163 divides the range of the target column into a plurality of sections and assigns a range label to each section (step F502). At this time, the corresponding range information generation unit 2163 divides the value range into a plurality of categories so that the total value of the frequency values included in each category does not exceed the frequency leveling reference value.
  • the corresponding range information generation unit 2163 generates corresponding range information 2621 (step F503). Thereafter, the corresponding range information generation unit 2163 ends the process.
  • the corresponding range information generation unit 2163 generates the corresponding range information generation unit 2163 by registering a record including a “corresponding range” column, a “range label” column, and a “frequency” column. Also, the corresponding range information generation unit 2163 stores the generated corresponding range information 2621 in the user side additional information group 262.
  • the corresponding range information generation unit 2163 when a value as shown in FIG. 35 is input, the corresponding range information generation unit 2163 generates corresponding range information 2621 as shown in FIG.
  • FIG. 38 is a flowchart illustrating the corresponding range label information generation processing executed by the corresponding range label information generation unit 2164 according to the third embodiment.
  • the corresponding range label information generation unit 2164 executes a corresponding range label information generation process described below.
  • the corresponding range label information generation unit 2164 receives the plaintext data of the target column and the name of the corresponding range information 2621 before encryption.
  • the corresponding range label information generation unit 2164 reads one value of the target column and sets the value as X (step F601).
  • the corresponding range label information generation unit 2164 specifies the range label of the section including X (step F602).
  • the corresponding range label information generation unit 2164 refers to the “corresponding range” column of the corresponding range information 2621 based on the name of the corresponding range information 2621 input from the user-side addition processing unit 216, and sets X to Identify the record corresponding to the included category.
  • the corresponding range label information generation unit 2164 reads a value from the “range label” column of the identified record, and sets the value as Y.
  • the corresponding range label information generation unit 2164 adds a record including X and Y to the corresponding range label information (step F603).
  • the corresponding range label information is a list of range labels including the target column, and is temporarily stored in the memory 210.
  • the corresponding range label information generation unit 2164 determines whether or not processing has been completed for all target column values (step F604).
  • the corresponding range label information generation unit 2164 returns to Step F601 and executes the same processing.
  • the corresponding range label information generation unit 2164 ends the corresponding range label information generation processing.
  • FIG. 39 is a sequence diagram illustrating the flow of the range search process / sort process according to the third embodiment.
  • FIG. 40 is a diagram illustrating an example of a patient information acquisition screen 2121 according to the third embodiment.
  • FIG. 41 is a diagram illustrating an example of a patient information display screen 2122 according to the third embodiment.
  • the user terminal 2, the application server 3, and the database server 4 cooperate to execute range search processing / sort processing.
  • the range search process / sort process is started when the user terminal 2 receives an input from the user.
  • the user terminal 2 receives an input from the user (step S601).
  • the user uses the patient information acquisition screen 2121 as shown in FIG. 40 to search the range of the target column value, the number of records displayed on one screen (the number of Limits), and the display of displayed records. Enter the order.
  • a doctor who has stored sensitive information displays a predetermined number of records of patients included in an arbitrary age group in ascending order of age on one screen, it is assumed that the user terminal 2 is operated.
  • the patient information acquisition screen 2121 is displayed on the display device 220 by the browser 211.
  • the patient information acquisition screen 2121 includes a plurality of input forms (P1101), (P1102), (P1103), (P1104), and (P1105) for inputting search conditions, and a plurality of radio buttons (P1106) and (P1107). including.
  • the patient information acquisition screen 2121 includes an OK button (P1108) and a cancel button (P1109).
  • the input form (P1101) is an input form for inputting information to be subjected to range search processing.
  • the input form (P1102) is an input form for inputting the lower limit value of the range.
  • the input form (P1103) is an input form for inputting the upper limit value of the range.
  • the input form (P1104) is an input form for inputting the number of records to be displayed on one screen.
  • the input form (P1105) is an input form for inputting a target column for record sorting.
  • the radio button (P1106) is a radio button for selecting a sort process for rearranging records in ascending order of column values input to the input form (P1105).
  • the radio button (P1106) is a radio button for selecting a sort process for rearranging records in descending order of column values input to the input form (P1105).
  • the OK button (P1108) is an operation button for confirming the input.
  • the cancel button (P1109) is an operation button for canceling confirmation of input.
  • the user terminal 2 generates range label candidate information (step S602). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 refers to the “corresponding range” column of the corresponding range information 2621 and identifies a group of groups in which the search range and the value range specified using the patient information acquisition screen 2121 overlap.
  • the user side additional processing unit 216 reads the values of the “range label” column and the “frequency” column of the record corresponding to the category included in the specified category group from the corresponding range information 2621. Furthermore, the user-side addition processing unit 216 adds a record in which the values of the “range label” column and the “frequency” column are associated to the range label candidate information according to the designated display order.
  • the range label candidate information is information temporarily stored in the memory 210.
  • the “age corresponding range” column is “ A group of 20-29 "and" 30-39 "is identified.
  • the user-side addition processing unit 216 first adds a record that associates “300” and “2” to the range label candidate information, and then records that associates “400” and “2”. Is added to the range label candidate information.
  • the above is the description of the processing in step S602.
  • the user terminal 2 sets T and range label_now as variables (step S603).
  • the user side addition processing unit 216 sets T and range label_now.
  • T is a variable indicating the number of records displayed in one screen.
  • the range label_now is a variable indicating the value of the range label included in the top record of the range label candidate information.
  • step S602 In the case of the range label candidate information exemplified in step S602, “2” is set in T, and “300” is set in range label_now.
  • the user terminal 2 generates a data acquisition request (step S604). Specifically, the following processing is executed.
  • the user-side addition processing unit 216 specifies the type of operation necessary for acquiring the requested information.
  • the user-side addition processing unit 216 identifies the name of the target information.
  • the user-side addition processing unit 216 specifies encryption-corresponding range information 4624 that stores a search query used for encryption match determination processing. Further, the user-side addition processing unit 216 inputs T, range label_now, and range label candidate information to the range search / sort query generation unit 2165, and instructs execution of the range search / sort query generation processing.
  • the range search / sort query generation unit 2165 generates range search query information 2103 by executing range search / sort query generation processing. For example, when T is “2”, range label_now is “300”, and range label candidate information exemplified in step S602 is input, range search query information 2103 shown in FIG. 30 is generated. Details of the range search / sort query generation processing will be described with reference to FIG.
  • the range search / sort query generation unit 2165 transmits the range search query information 2103 to the user side addition processing unit 216.
  • the user-side addition processing unit 216 generates a data acquisition request including the type of operation, the name of the target information, the identification information of the encryption correspondence range information 4624, the range search query information 2103, and the read command, and the application server 3 To send to.
  • the above is the description of the process in step S604.
  • the application server 3 generates SQL for executing a range search process on the encrypted data (step S605). Specifically, the following processing is executed.
  • the application unit 311 When the application unit 311 receives the data acquisition request, the application unit 311 transmits the data acquisition request to the SQL generation unit 312.
  • the SQL generation unit 312 refers to the SQL definition information 361 and specifies a record for which the request processing 3612 matches the type of operation included in the data acquisition request. In this case, a record whose definition ID 3611 is “3” is specified.
  • the SQL generation unit 312 generates SQL based on the name of the range search target information included in the data acquisition request and the range search query information 2103 and the SQL definition 3613 of the identified record.
  • the SQL generation unit 312 transmits the generated SQL to the application unit 311.
  • the application unit 311 transmits SQL to the database server 4 via the database interface unit 313.
  • SQL (J) instructs the encryption match determination unit 412 to execute the process, and the value of the “age_range label” column matches the search query “EncQuery (300)” from the encryption corresponding range information 4624. This means reading the values of the “patient number” column, “name” column, and “age” column of the record. The above is the description of the process in step S605.
  • step S606 when the database server 4 receives the SQL from the application server 3, the database server 4 executes a range search process according to the SQL (step S606).
  • the database control unit 411 executes the received SQL, and stores the execution result in the memory 410 as temporary information 4103.
  • the database control unit 411 transmits the execution result including the temporary information 4103 to the application server 3.
  • the received SQL is SQL (J)
  • J the received SQL
  • the database control unit 411 calls the encryption match determination unit 412 based on SQL (J).
  • the cipher match determination unit 412 performs a cipher match determination on the value of the “age_range label” column of the search query and the encryption correspondence range information 4624 and outputs the determination result to the database control unit 411.
  • the database control unit 411 specifies a record that matches the condition of the range search process based on the determination result output from the encryption match determination unit 412.
  • the database control unit 411 stores temporary information 4103 shown in FIG.
  • the database control unit 411 transmits the processing result including the temporary information 4103 to the application server 3.
  • the above is the description of the processing in step S606.
  • step S607 when the user terminal 2 receives the processing result, the user terminal 2 decrypts the processing result (step S607).
  • the user-side addition processing unit 216 acquires key information from the key management unit 215, and transmits the temporary information 4103 and the key information to the decryption unit 213. .
  • the decryption unit 213 obtains plaintext data by decrypting the column value included in the temporary information 4103 using the key information.
  • the decryption unit 213 transmits the plain text data to the user side addition processing unit 216.
  • step S608 the user terminal 2 executes a result display process.
  • the user terminal 2 extracts only the record requested by the user from the process result, and rearranges the extracted records in the designated order.
  • the browser 211 of the user terminal 2 generates display information for displaying the processing result including the rearranged records, and displays a patient information display screen 2122 as shown in FIG. 41 based on the display information on the display device 220. To display. Details of the result display process will be described with reference to FIG.
  • the patient information display screen 2122 is displayed on the display device 220 by the browser 211.
  • the patient information display screen 2122 includes a list of search results (P1201) and an operation area (P1202).
  • the patient information display screen 2122 includes an OK button (P1203).
  • the search result list (P1201) shown in FIG. 41 includes a plurality of records including a “patient number” column, a “name” column, and an “age” column.
  • two records rearranged in ascending order of record age are displayed.
  • the operation area (P1202) is an operation area for displaying a record that has not been displayed yet.
  • the OK button (P1203) is an operation button for instructing the end of display.
  • the above is the description of the patient information display screen 2122.
  • the above is the description of the flow of the range search process / sort process.
  • FIG. 42 is a flowchart for explaining range search / sort query generation processing executed by the range search / sort query generation unit 2165 according to the third embodiment.
  • the range search / sort query generation unit 2165 starts a range search / sort query generation process described below, which is called from the user-side addition processing unit 216. Note that the range search / sort query generation unit 2165 receives T, range label_now, and range label candidate information.
  • the range search / sort query generation unit 2165 initializes N_now and range label_next as variables, and also initializes range search query information 2103 (step F701). Specifically, the following processing is executed.
  • the range search / sort query generation unit 2165 sets “0” to N_now. Also, the range search / sort query generation unit 2165 refers to the range label_now and the corresponding range information 2621 to determine whether or not there is a next range label after the range label set in the range label_now. If there is a next range label after the range label set in the range label_now, the range search / sort query generation unit 2165 sets the next range label in the range label_next. When there is no next range label after the range label set in the range label_now, the range search / sort query generation unit 2165 sets “NULL” in the range label_next.
  • the range search / sort query generation unit 2165 generates empty range search query information 2103. The above is the description of the processing in step F701.
  • the range search / sort query generation unit 2165 updates N_now (step F702).
  • the range search / sort query generation unit 2165 adds the value of the “frequency” column of the record of the range label candidate information corresponding to the range label_now to N_now.
  • the range search / sort query generation unit 2165 determines whether N_now is equal to or greater than T (step F703).
  • step F710 If it is determined that N_now is equal to or greater than T, the range search / sort query generation unit 2165 proceeds to step F710.
  • the range search / sort query generation unit 2165 determines whether or not the range label_next is “NULL” (step F704).
  • the range search / sort query generation unit 2165 proceeds to Step F710.
  • the range search / sort query generation unit 2165 registers the value of the range label_now in the range search query information 2103 (step F705).
  • the range search / sort query generation unit 2165 sets the value of the range label_next to the range label_now (step F706).
  • the range search / sort query generation unit 2165 determines whether search queries for all range labels included in the range label candidate information have been generated (step F707).
  • the range search / sort query generation unit 2165 updates the range label_next (step F708). Thereafter, the range search / sort query generation unit 2165 returns to Step F702 and executes the same processing.
  • the range search / sort query generation unit 2165 selects a range label that is not selected from the range label candidate information, and sets the selected range label as the range label_next. For example, a method of selecting the next record of the range label_now can be considered.
  • the range search / sort query generation unit 2165 sets “NULL” in the range label_next (step F709). Thereafter, the range search / sort query generation unit 2165 returns to Step F702 and executes the same processing.
  • step F703 is YES or step F704 is YES
  • the range search / sort query generation unit 2165 generates a search query for each range label registered in the range search query information 2103 (step F710). Thereafter, the range search / sort query generation unit 2165 ends the process. Specifically, the following processing is executed.
  • the range search / sort query generation unit 2165 acquires key information from the key management unit 215 and transmits each range label registered in the range search query information 2103 and key information to the encrypted search query generation unit 214.
  • the encrypted search query generation unit 214 generates a search query by encrypting each range label using the key information, and transmits the search query to the range search / sort query generation unit 2165.
  • the range search / sort query generation unit 2165 replaces each range label registered in the range search query information 2103 with a search query. Thereby, range search query information 2103 for acquiring records equal to or less than the designated display number is generated.
  • the above is the description of the processing in step F710.
  • FIG. 43 is a flowchart illustrating an example of a result display process executed by the user terminal 2 according to the third embodiment.
  • the user-side addition processing unit 216 deletes records outside the search range from the records included in the processing result (step F801). Specifically, the following processing is executed.
  • the user addition processing unit 216 calls the out-of-range data deletion unit 2166. At this time, the user-side addition processing unit 216 inputs the decrypted plaintext data (record group) and an upper limit value and a lower limit value indicating the search range of the target column.
  • the out-of-range data deletion unit 2166 deletes records that are not included in the search range, and transmits a processing result including only the records in the search range to the user-side addition processing unit 216.
  • the above is the description of the processing in step F801.
  • the user-side additional processing unit 216 executes a limited sort process on the records included in the processing result (Step F802). Specifically, the following processing is executed.
  • the user side additional processing unit 216 calls the restricted sort processing unit 2167. At this time, the user-side addition processing unit 216 inputs the processing result stored in the memory 210, the number of display cases, and the display order to the restricted sort processing unit 2167.
  • the restricted sort processing unit 2167 sorts the records included in the processing results according to the display order.
  • the limited sort processing unit 2167 reads out records by the number of displays from the processing result in which the records are rearranged, and transmits the read records to the user-side addition processing unit 216. The above is the description of the process in step F802.
  • the user-side addition processing unit 216 determines whether or not the specified number of records have been read (Step F803).
  • the user-side addition processing unit 216 updates the variable T (step F804). Thereafter, the user-side addition processing unit 216 returns to step S604 and executes similar processing.
  • the user-side addition processing unit 216 sets a value calculated by subtracting the number of records read out from the designated display number to T.
  • the user-side additional processing unit 216 When it is determined that the records for the designated number of display items have been read, the user-side additional processing unit 216 generates result display information by shaping the processing result into a predetermined data format (step F805).
  • the user-side addition processing unit 216 transmits result display information to the browser 211 (Step F806).
  • the browser 211 displays a patient information display screen 2122 on the display device 220 based on the result display information.
  • the user-side addition processing unit 216 determines whether or not search queries for all range labels included in the range label candidate information have been generated (step F807).
  • the user-side addition processing unit 216 When it is determined that the search queries for all the range labels included in the range label candidate information have not been generated, the user-side addition processing unit 216 returns to step S603 and executes the same processing.
  • the user-side addition processing unit 216 ends the result display process.
  • a processing result of a predetermined number of records is transmitted to the user terminal 2 based on the correspondence range information 2621, the encryption correspondence range information 4626, and the SQL definition information 361.
  • the records rearranged in a predetermined order are displayed. Therefore, it is possible to realize a concealment database system capable of executing a database operation command for obtaining a predetermined number of records sorted in a specified order from a predetermined table while maintaining data confidentiality.
  • the concealment database system 1 realizes a data acquisition request process involving data processing in the following flow.
  • the user terminal 2 When the user terminal 2 receives an acquisition request for data including plaintext data, the user terminal 2 converts the request to acquire data including encrypted data using the user side additional information group 262. Further, the user terminal 2 transmits a processing command for processing the encrypted data to the cloud-side application server 3 via the user internal network 5 and the external network.
  • the application server 3 generates an SQL including an operation for the encrypted data based on the SQL definition information 361 based on the SQL definition information 361 and transmits the data acquisition request including the encrypted data to the database server 4.
  • the database server 4 When the database server 4 receives the SQL from the application server 3, the database server 4 executes an encrypted data acquisition process based on the SQL and the database side additional information group 462. The database server 4 transmits the processing result including the acquired encrypted data to the user terminal 2 via the application server 3.
  • the user terminal 2 acquires desired plaintext data by decrypting the processing result including the encrypted data and executing a predetermined process.
  • the user terminal 2 since plaintext data is not transmitted to the application server 3 and the database server 4 on the cloud, the user terminal 2 performs processing of partial matching search, processing result of the combined information acquisition processing, while maintaining data confidentiality. The result, the processing result of the range search, and the processing result of the sort process can be acquired.
  • the application server 3 and the database server 4 are separate devices, but the functions may be combined into one device.
  • this invention is not limited to the above-mentioned Example, Various modifications are included. Further, for example, the above-described embodiments are described in detail for easy understanding of the present invention, and are not necessarily limited to those provided with all the described configurations. In addition, a part of the configuration of the embodiment can be added to, deleted from, or replaced with another configuration.
  • each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • the present invention can also be realized by software program codes that implement the functions of the embodiments.
  • a storage medium in which the program code is recorded is provided to the computer, and a CPU included in the computer reads the program code stored in the storage medium.
  • the program code itself read from the storage medium realizes the functions of the above-described embodiments, and the program code itself and the storage medium storing it constitute the present invention.
  • Examples of storage media for supplying such program codes include flexible disks, CD-ROMs, DVD-ROMs, hard disks, SSDs (Solid State Drives), optical disks, magneto-optical disks, CD-Rs, magnetic tapes, A non-volatile memory card, ROM, or the like is used.
  • program code for realizing the functions described in this embodiment can be implemented by a wide range of programs or script languages such as assembler, C / C ++, Perl, Shell, PHP, Java, and the like.
  • the program code is stored in a storage means such as a hard disk or memory of a computer or a storage medium such as a CD-RW or CD-R.
  • the CPU included in the computer may read and execute the program code stored in the storage unit or the storage medium.
  • control lines and information lines indicate those that are considered necessary for the explanation, and do not necessarily indicate all the control lines and information lines on the product. All the components may be connected to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

確率的暗号化方式を用いて暗号化された暗号化データ含む登録情報を記憶するデータベースサーバ、及び端末を含むデータベースシステムであって、端末は、暗号化部、復号化部、暗号化データの検索に用いる検索クエリが暗号化された暗号化検索クエリを生成する暗号化検索クエリ生成部、及び平文の検索条件を暗号化し、暗号化された検索条件を含むデータの取得要求を送信する付加処理部を有し、データベースサーバは、データベース操作命令定義情報、及び検索用付加情報を保持し、データベース操作命令定義情報に基づいてデータの取得要求を変換してデータベース操作命令を生成するデータベース操作命令生成部、及びデータベース操作命令及び検索用付加情報を用いて、検索条件を満たす暗号化データを取得するデータベース制御部を有する。

Description

データベースシステム及びデータ検索方法
 本発明は、データを暗号化して鍵を持たないシステム管理者に隠蔽した状態でデータを保存する秘匿化データベースシステムに関する。
 近年、ストレージの低価格化及び大規模化、並びにネットワークの整備等の情報技術の発展に伴い、蓄積される情報量が増大している。このような状況の下、いわゆるビッグデータを活用しようという動きが活発化している。
 また、クラウドコンピューティングの普及が進んでおり、クラウド上のビッグデータ分析基盤の活用が広まっていくと考えられる。
 医療情報及び個人情報等は極めて機微性が高く、クラウド上からのデータの復元及びデータ持ち出し等の情報漏えいのリスクに対処する必要がある。その対処法の1つとして、ユーザのみがデータの暗号化の鍵を管理することによって、鍵を管理していないクラウドのシステム管理者に対してデータを隠蔽し、クラウド上でデータを復元できない状態にし、クラウドからのデータの持ち出しリスクを低減する秘匿化データベースシステムが有効である。
 前述した秘匿化データベースシステムに、さらに、暗号化データの検索を可能とする検索可能暗号技術などを用いることが有効である。これによって、クラウド上でデータを復号化することなく、データの検索及び分析が可能となる。
 本技術の背景技術として、特許文献1、特許文献2、特許文献3、及び非特許文献1がある。特許文献1には、「データベースシステムにネットワークを介して接続するユーザシステムであって、暗号化と復号化のための鍵情報を管理する手段と、データ及び/又はメタデータの安全性設定情報を記憶する記憶部と、データベース操作命令に対して暗号化の必要の有無を判別し、暗号化が必要な場合、データ及び/又はメタデータに応じた暗号化アルゴリズムを選択して暗号化した上でデータベース制御手段に送信してデータベースの操作を実行し、暗号化が不要な場合、前記データベース操作命令をデータベース制御手段に送信してデータベース操作を実行し、前記データベース制御手段から送信された処理結果を受け取り、前記処理結果のデータ及び/又はメタデータの復号化あるいは変換が必要な場合、必要な復号化あるいは変換を行い、前記データベース操作命令の応答として返すアプリケーション応答手段と、データベースに格納するデータの安全性情報を設定する安全性設定手段を備えるシステム」が開示されている。
 また、特許文献2には、同値関係を保存する暗号化及び順序関係をクラウド上に保持すること等により暗号化状態での検索・ソート等を可能とするシステムが開示されている。
 また、非特許文献1には、暗号化データの部分情報を開示可能な鍵をサーバ側に送付することによって、検索を高速化する方法が開示されている。さらに、非特許文献1には、Webアプリケーションシステムにおいて、プラグインとして利用者のブラウザ上で動作する暗号化/復号化の仕組みを設け、データベースのユーザ定義関数として検索可能暗号を追加し、SQL文を用いて当該暗号を利用するシステムが開示されている。
特開2014-13582号公報 特開2013-25361号公報 特開2012-123614号公報
松田 規、他4名、"検索可能暗号の高速化とWebアプリケーションへの適用方式に関する提案"、平成25年7月、「マルチメディア,分散,協調とモバイル(DICOMO2013)シンポジウム」
 近年、一般的なPCに加えて、スマートフォン及びタブレット端末等ユーザ端末が多様化している。そのため、様々なユーザ端末が、直接、クラウドにアクセスし、クラウド上のアプリケーションサーバを介してデータベースサーバを操作し、主要なデータ処理をクラウド側で行なうクラウドサービスの利用形態が広まっている。
 前述した利用形態におけるデータ取得処理は、一般的に以下の流れとなる。まず、ユーザ端末が、アプリケーションサーバにキーワード等を含むデータの取得条件を送信する。次に、クラウド上のアプリケーションサーバが、データの取得条件を解釈し、解釈の結果に基づいてデータベース操作命令を生成し、データベース操作命令をデータベースサーバに送信することによって、要求された情報をデータベースサーバから取得する。最後に、アプリケーションサーバが、取得した情報をユーザ端末に送信する。
 ユーザのみが鍵を管理し、データベースサーバには当該鍵を用いて暗号化されたデータを格納する秘匿化データベースシステムでは、アプリケーションサーバが生成する一般的なデータベース操作命令が処理できない場合がある。
 具体的には、暗号文間の同値関係及び順序関係が隠蔽される確率的暗号方式で暗号化を行なった秘匿化データベースシステムに対して、データベースサーバは、次の(1)から(4)のデータ取得処理を実行することができない。
 (1)2つの異なるテーブルに含まれるレコードを結合し、結合した情報を取得するデータベース操作命令。例えば、患者テーブル及び診断テーブルから各患者の情報を含むレコードと診断情報を含むレコードとを結合した結合結果を取得する場合に、前述したデータベース操作命令が発行される。
 (2)部分的なキーワードを検索条件として、任意のテーブルのレコードに含まれるカラムと部分的に一致するレコードを取得するデータベース操作命令。例えば、患者の氏名の一部をキーワードとして入力し、患者テーブルから部分的に一致する患者のレコードを取得する場合に、前述したデータベース操作命が発行される。
 (3)所定のカラムの値の範囲、例えば、上限値及び下限値を検索条件として、任意のテーブルから指定された範囲に含まれるレコードを取得するデータベース操作命令。例えば、患者の年齢の上限値及び下限値を範囲の条件として、患者テーブルから指定された範囲に含まれる患者のレコードを取得する場合に、前述したデータベース操作命が発行される。
 (4)所定のテーブルから、指定された順番にソートされた所定の数のレコードを取得するデータベース操作命令。例えば、患者IDの昇順に並び替えられた一定数のレコードを患者テーブルから取得する場合に、前述したデータベース操作命令が発行される。
 本発明は、前述したデータベース操作命令が実行可能な秘匿化データベースシステム及び秘匿化データベースシステムにおけるデータの取得方法を提案するものである。
 本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、確率的暗号化方式を用いて暗号化された暗号化データを一つ以上含む登録情報を記憶するデータベースサーバ、及び、前記データベースサーバから前記暗号化データを取得するためのデータの取得要求を送信する端末を含むデータベースシステムであって、前記確率的暗号化方式は、暗号化前のデータ値が、暗号化処理毎に異なるデータ値となるように前記暗号化データが生成される暗号化方式であり、前記端末は、ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがって前記データベースサーバに格納するデータを暗号化する暗号化部と、前記暗号化データを復号化する復号化部と、複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられる検索クエリが暗号化された暗号化検索クエリを生成する暗号化検索クエリ生成部と、平文の検索条件を暗号化し、暗号化された前記検索条件を含む前記データの取得要求を送信する付加処理部と、を有し、前記データベースサーバは、検索処理の種別毎に、前記データの取得要求を前記データベースサーバが処理するデータベース操作命令に変換するための定義パターンを格納するデータベース操作命令定義情報と、前記検索処理の種別毎の検索用付加情報と、を保持し、前記データベース操作命令定義情報に基づいて、前記端末から受信したデータ取得要求を変換することによって前記データベース操作命令を生成するデータベース操作命令生成部と、前記データベース操作命令及び前記検索用付加情報を用いて、要求された前記暗号化データを取得するデータベース制御部と、前記検索用付加情報を用いて、前記暗号化検索クエリと一致する前記暗号化データを判定する暗号一致判定部と、を有し、前記付加処理部は、前記検索用付加情報を用いた検索処理を行うためのデータの取得要求を生成し、前記データベース制御部は、前記データベース操作命令の実行時に、前記暗号一致判定部を呼び出し、前記暗号一致判定部の処理結果に基づいて、前記検索条件を満たす前記暗号化データを取得し、前記取得された暗号化データを含む処理結果を前記端末に送信し、前記復号化部は、前記処理結果に含まれる前記暗号化データを復号化することを特徴とする。
 本発明の一形態によれば、端末は、暗号化データを復号化することなく、効率的に暗号化データをデータベースサーバから取得できる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1の秘匿化データベースシステムの構成例を示すブロック図である。 実施例1の暗号化メイン情報群のデータ構造の一例を示す図である。 実施例1のデータベース側付加情報群のデータ構造の一例を示す図である。 実施例1のSQL定義情報のデータ構造の一例を示す図である。 実施例1のメモリに一時的に格納される一時情報のデータ構造の一例を示す図である。 実施例1の結合情報取得処理の準備処理の流れを説明するシーケンス図である。 実施例1の結合設定入力画面の一例を示す図である。 実施例1の結合設定結果表示画面の一例を示す図である。 実施例1のユーザ側付加処理部が実行する結合対象カラム決定処理の一例を説明するフローチャートである。 実施例1の結合情報取得処理の流れを示すシーケンス図である。 実施例1の患者情報取得画面の一例を示す図である。 実施例1の患者病名一覧表示画面の一例を示す図である。 実施例2のユーザ側付加処理部の論理構成を示すブロック図である。 実施例2のデータベース側付加処理部の論理構成を示すブロック図である。 実施例2のメモリに一時的に格納されるデータのデータ構造の一例を示す図である。 実施例2の暗号化メイン情報群のデータ構造の一例を示す図である。 実施例2のデータベース側付加情報群のデータ構造の一例を示す図である。 実施例2のメモリに一時的に格納される一時情報のデータ構造の一例を示す図である。 実施例2の部分一致検索の準備処理の流れを説明するシーケンス図である。 実施例2の部分一致設定入力画面の一例を示す図である。 実施例2の部分一致設定結果表示画面の一例を示す図である。 実施例2の部分情報生成部が実行する部分情報生成処理の一例を説明するフローチャートである。 実施例2の部分一致検索の処理の流れを示すシーケンス図である。 実施例2の患者情報取得画面の一例を示す図である。 実施例2の患者情報表示画面の一例を示す図である。 実施例2の部分一致検索クエリ生成部が実行する部分一致検索クエリ生成処理の一例を説明するフローチャートである。 実施例2の部分一致ID取得部が実行する部分一致ID取得処理の一例を説明するフローチャートである。 実施例3のユーザ側付加処理部の論理構成を示すブロック図である。 実施例3のユーザ側付加情報群のデータ構造の一例を示す図である。 実施例3のメモリに一時的に格納されるデータのデータ構造の一例を示す図である。 実施例3の暗号化メイン情報群のデータ構造の一例を示す図である。 実施例3のデータベース側付加情報群のデータ構造の一例を示す図である。 実施例3のメモリに一時的に格納される一時情報のデータ構造の一例を示す図である。 実施例3の範囲検索/ソートの準備処理の流れを説明するシーケンス図である。 実施例3の範囲検索/ソート設定入力画面の一例を示す図である。 実施例3の範囲検索/ソート設定結果表示画面の一例を示す図である。 実施例3の対応範囲情報生成部が実行する対応範囲情報生成処理を説明するフローチャートである。 実施例3の対応範囲ラベル情報生成部が実行する対応範囲ラベル情報生成処理を説明するフローチャートである。 実施例3の範囲検索/ソート処理の流れを示すシーケンス図である。 実施例3の患者情報取得画面の一例を示す図である。 実施例3の患者情報表示画面の一例を示す図である。 実施例3の範囲検索/ソートクエリ生成部が実行する範囲検索/ソートクエリ生成処理を説明するフローチャートである。 実施例3のユーザ端末が実行する結果表示処理の一例を説明するフローチャートである。
 以下、図面を参照して本発明の実施例を説明する。
 (1-1)実施例1の計算機システムの構成
 図1は、実施例1の秘匿化データベースシステム1の構成例を示すブロック図である。
 秘匿化データベースシステム1は、ユーザシステムを構成するユーザ端末2、並びに、データセンタシステムを構成するアプリケーションサーバ3及びデータベースサーバ4から構成される。図1の秘匿化データベースシステム1に含まれるユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4はそれぞれ1つずつであるが、秘匿化データベースシステム1は、各構成を2つ以上含んでもよい。
 秘匿化データベースシステム1は、以下の機能を提供するシステムである。1つの機能は、ユーザ端末2を操作するユーザが管理するデータを暗号化し、アプリケーションサーバ3を介してデータベースサーバ4に暗号化データ(暗号文)を保存する機能である。また、もう1つの機能は、アプリケーションサーバ3及びデータベースサーバ4が連携して、データベースサーバ4に格納される暗号化データに対する検索機能及び分析機能である。
 実施例1の秘匿化データベースシステム1は、検索機能の1つとして、結合情報取得処理を実現するための機能を提供する。結合情報取得処理は、2つの異なるテーブルに含まれるレコードを結合し、結合した情報を取得するための処理である。
 ユーザ端末2及びアプリケーションサーバ3は、ユーザ内部ネットワーク5、外部ネットワーク6、及びクラウド内部ネットワーク7を介して互いに接続する。また、アプリケーションサーバ3及びデータベースサーバ4は、クラウド内部ネットワーク7を介して互いに接続する。
 ユーザ内部ネットワーク5は、ユーザの事業所内のローカルエリアネットワーク等を含むネットワークである。外部ネットワーク6は、インターネット及びキャリアが提供するワイドエリアネットワーク等を含むネットワークである。クラウド内部ネットワーク7は、データセンタ内のローカルエリアネットワーク等を含むネットワークである。なお、本発明は、各構成を接続するネットワークの種別に限定されない。
 ユーザ端末2は、ユーザが使用するパーソナルコンピュータ、タブレット端末、及びスマートフォン等の装置である。ユーザ端末2は、ユーザによって入力された取得要求の要求等を暗号化し、アプリケーションサーバ3に暗号化された要求を送信し、また、当該要求に対する暗号化された処理結果を受信する。また、ユーザ端末2は、暗号化された処理結果を受信した場合、当該処理結果を復号化し、復号化された処理結果の取捨選択又は整形等の処理を実行する。また、ユーザ端末2は、処理結果を表示し、また、処理結果を記憶する。
 ユーザ端末2は、ハードウェア構成として、メモリ210、表示装置220、入力装置230、CPU240、NIC(Network Interface Card)250、及び記憶装置260を有する。なお、ユーザ端末2は、他のハードウェアを有してもよい。
 CPU240は、メモリ210に格納されるプログラムを実行する。CPU240がプログラムを実行することによって、ユーザ端末2が有する機能を実現できる。以下の説明では、機能部を主語に処理を説明する場合、CPU240が当該機能部を実現するプログラムを実行していることを示す。
 メモリ210は、CPU240によって実行されるプログラム及び当該プログラムの実行に使用される情報を格納する。また、メモリ210は、ワークエリア等を含む。メモリ210に格納されるプログラムの詳細は後述する。なお、メモリ210に格納されるプログラムは、記憶装置260又は外部の記憶装置に格納されてもよい。この場合、CPU240は、記憶装置260又は外部の記憶装置からプログラムを読み出し、読み出されたプログラムをメモリ210に展開する。
 記憶装置260は、データを永続的に格納する不揮発性の記憶装置である。記憶装置260は、例えば、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等が考えられる。記憶装置260に格納されるデータの詳細は後述する。
 表示装置220は、ユーザに対して各種情報を表示するための装置である。表示装置220は、例えば、ディスプレイ等が考えられる。入力装置230は、ユーザがユーザ端末2に対して各種情報を入力するための装置である。入力装置230は、例えば、キーボード、マウス、及びタッチパネル等が考えられる。
 ここで、メモリ210に格納されるプログラムについて説明する。メモリ210は、ブラウザ211、暗号化部212、復号化部213、暗号化検索クエリ生成部214、鍵管理部215、及びユーザ側付加処理部216を実現するプログラムを格納する。
 ブラウザ211は、表示装置220に、入力装置230を介してユーザが要求を入力するための画面、及び要求に対する処理結果を参照するための画面等を表示する。
 暗号化部212は、平文の入力を受け付け、特許文献3に記載の確率的暗号化方式に基づいて平文を暗号化することによって暗号文(暗号化データ)を出力する。
 ここで、確率的暗号化方式は、暗号化されていないデータ(平文)から、同値関係及び大小関係が秘匿されたランダムな暗号文(暗号化データ)を生成する暗号化のアルゴリズムである。確率的暗号化方式では、平文及び暗号文が一対多の対応関係を有する。
 特許文献3に記載の確率的暗号化方式では、ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがってデータベースサーバ4に格納するデータが暗号化される。また、特許文献3に記載の確率的暗号化方式では、複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられるクエリが暗号化される。
 より具体的には、特許文献3には、「確率的暗号化方式により暗号化された登録データを記憶するDBサーバと、検索クライアントとを含み、前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、前記検索クライアントにおける前記制御部は、第1の乱数を生成する乱数生成部と、前記第1の乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記第1の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、前記検索クライアントにおける前記制御部は、前記準同型関数部が出力した前記関数値を変換し、ハッシュ値を出力する圧縮関数部を備え、前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、前記DBサーバにおける前記制御部は、暗号化された前記登録データと暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された暗号文と、前記圧縮関数部が出力する前記ハッシュ値から構成されるデータが暗号化されていること」が記載されている。
 特許文献3に記載の確率的暗号化方式を用いることによって、データベースサーバ4側で暗号化データのみを用いた検索が可能となる。
 以下の説明では、暗号化データと区別するために、暗号化されていないデータを平文データとも記載する。また、本明細書の確率的暗号化方式は、特許文献3に記載の確率的暗号化方式を示す。
 復号化部213は、暗号文(暗号化データ)の入力を受け付け、確率的暗号化方式の暗号処理とは逆の手順にしたがって暗号文を復号化することによって平文(平文データ)を出力する。
 暗号化検索クエリ生成部214は、平文データの入力を受け付け、暗号一致判定処理に使用される暗号化された検索クエリを出力する。なお、暗号一致判定処理は、暗号一致判定部412によって実行される。本明細書では、暗号化された検索クエリを単に検索クエリとも記載する。
 鍵管理部215は、暗号化及び復号化に使用する鍵情報を管理する。鍵管理部215は、暗号化部212、復号化部213、及び暗号化検索クエリ生成部214から鍵取得要求を受け付けた場合、各部に処理に必要な鍵情報を送信する。
 ユーザ側付加処理部216は、データベースサーバ4から暗号化データを取得するための処理を実行する。具体的には、以下のような3つの処理が実行される。
 (1)ユーザ側付加処理部216は、データベースサーバ4から要求された暗号化データを検索し、取得するための準備処理を実行する。(2)ユーザ側付加処理部216は、ユーザがブラウザ211を介して入力したデータの取得要求をアプリケーションサーバ3が解釈できるデータの取得要求に変換し、変換されたデータの取得要求をアプリケーションサーバ3に出力する。(3)ユーザ側付加処理部216は、アプリケーションサーバ3から受信したデータの取得要求に対する処理結果の情報を入力として受け付け、データの取得要求にしたがってデータの取捨選択及びデータの整形を行った後、処理結果を出力する。
 次に、記憶装置260に格納される情報について説明する。記憶装置260は、メイン情報群261及びユーザ側付加情報群262を格納する。
 メイン情報群261は、ユーザ端末2を操作するユーザが管理する情報であり、データベースサーバ4に保存される前の平文データを格納する。例えば、メイン情報群261には、テーブル形式の情報が複数格納される。なお、メイン情報群261に格納されるデータのデータ形式に限定されない。
 通常、メイン情報群261は暗号化されてデータベースサーバ4に格納されるため、ユーザ端末2は、メイン情報群261を保持していない。ただし、初めてデータをデータベースサーバ4に登録する場合には、ユーザ端末2が、メイン情報群261を保持することが考えられる。
 ユーザ側付加情報群262は、データの取得要求を生成する場合に参照される付加情報を格納する。ユーザ側付加情報群262を用いた処理は、実施例2で説明する。
 アプリケーションサーバ3は、ユーザ端末2からデータの取得要求を受信し、当該データの取得要求を用いて暗号化データに対する処理を行うためのデータベース操作命令を生成し、データベースサーバ4に生成されたデータベース操作命令を送信する。また、アプリケーションサーバ3は、データベース操作命令に対する処理結果をデータベースサーバ4から受信し、当該処理結果をユーザ端末2に送信する。
 本実施例では、データベース操作命令としてSQLを例に説明する。なお、本実施例は、データベース操作命令の種別に限定されない。
 アプリケーションサーバ3は、ハードウェア構成として、メモリ310、表示装置320、入力装置330、CPU340、NIC350、及び記憶装置360を有する。なお、アプリケーションサーバ3は、他のハードウェアを有してもよい。メモリ310、表示装置320、入力装置330、CPU340、NIC350、及び記憶装置360は、メモリ210、表示装置220、入力装置230、CPU240、NIC250、及び記憶装置260と同一のものであるため説明を省略する。
 メモリ310に格納されるプログラムについて説明する。メモリ310は、アプリケーション部311、SQL生成部312、及びデータベースインタフェース部313を実現するプログラムを格納する。
 アプリケーション部311は、ユーザ端末2から受信したデータの取得要求を処理し、データの取得要求に含まれる入力情報をSQL生成部312に送信し、また、データの取得要求に対する処理結果をデータベースサーバ4から受信する。
 SQL生成部312は、SQL定義情報361に基づいて、データの取得要求に含まれる入力情報に対応する暗号化データを含むSQLを生成し、データベースインタフェース部313に送信する。また、SQL生成部312は、当該SQLの処理結果をデータベースインタフェース部313から受信し、当該処理結果をアプリケーション部311に送信する。
 データベースインタフェース部313は、SQL生成部312から受信したSQLをデータベースサーバ4に送信し、データベースサーバ4からSQLの処理結果を受信し、また、SQL生成部312に当該処理結果を送信する。
 記憶装置360に格納される情報について説明する。記憶装置360は、SQL定義情報361を格納する。
 SQL定義情報361は、データの取得要求の種類ごとのSQLの生成パターンを定義した情報を格納する。
 本実施例では、SQL定義情報361は記憶装置360に格納されるが、メモリ310に格納されてもよい。また、SQL定義情報361は、記憶装置360及びメモリ310の両方に格納されてもよい。
 データベースサーバ4は、アプリケーションサーバ3から受信したSQLを実行することによって暗号化データを含む処理結果を生成し、当該処理結果をアプリケーションサーバ3に送信する。
 データベースサーバ4は、ハードウェア構成として、メモリ410、表示装置420、入力装置430、CPU440、NIC450、及び記憶装置460を有する。なお、データベースサーバ4は、他のハードウェアを有してもよい。メモリ410、表示装置420、入力装置430、CPU440、NIC450、及び記憶装置460は、メモリ210、表示装置220、入力装置230、CPU240、NIC250、及び記憶装置260と同一のものであるため説明を省略する。
 メモリ410に格納されるプログラムについて説明する。メモリ410は、データベース制御部411、暗号一致判定部412、及びデータベース側付加処理部413を実現するプログラムを格納する。
 データベース制御部411は、アプリケーションサーバ3からSQLを受信し、暗号一致判定部412及びデータベース側付加処理部413と連携して暗号化メイン情報群461に対してSQLを実行する。また、データベース制御部411は、SQLを実行することによって取得された暗号化データを含む処理結果をアプリケーションサーバ3に送信する。
 暗号一致判定部412は、2つの暗号化データを比較し、各暗号化データの暗号化前の平文データが一致するか否かを判定する。より具体的には、暗号一致判定部412は、暗号化部212が生成した暗号化データ及び暗号化検索クエリ生成部214が生成した検索クエリを入力として受け付け、暗号化データの平文データ及び検索クエリの平文データが一致しているか否かを判定する。暗号一致判定部412は、2つの平文データが一致している場合、“true”を出力し、2つの平文データが一致していない場合、“false”を出力する。
 暗号一致判定部412は、暗号化データを復号化することなく、暗号化データが同一のデータであるか否かを判定できる。
 データベース側付加処理部413は、データを取得するためのデータベース処理のうち、簡便なSQLでは表現が難しい複雑な処理をユーザ定義関数化した機能を有する。より具体的には、データベース側付加処理部413は、データベース制御部411から暗号化された入力情報を受け付け、データベース側付加情報群462等を用いた付加処理を実行し、返り値又は出力値を格納したテーブルを付加処理の処理結果として出力する。
 記憶装置460に格納される情報について説明する。記憶装置460は、暗号化メイン情報群461及びデータベース側付加情報群462を格納する。
 暗号化メイン情報群461は、メイン情報群261に対応する暗号化データを格納する。より具体的には、暗号化メイン情報群461は、メイン情報群261の平文データが確率的暗号化方式に基づいて暗号化された暗号化データを格納する。データベース側付加情報群462は、暗号化メイン情報群461に対するデータの取得処理を効率化するための情報を格納する。
 本実施例では、暗号化メイン情報群461は、記憶装置460に格納されるが、メモリ410に格納されてもよい。また、暗号化メイン情報群461は、記憶装置460及びメモリ410の両方に格納されてもよい。
 図2は、実施例1の暗号化メイン情報群461のデータ構造の一例を示す図である。
 実施例1の暗号化メイン情報群461は、暗号化患者情報4611及び暗号化診断情報4612を含む。
 暗号化患者情報4611は、患者の一覧であり、“ID”カラム、“患者番号”カラム、及び“名前”カラムを含むレコードを複数含む。図2に示す暗号化患者情報4611は、患者番号が“0000001”から“1000000”まで、100万件のレコードを格納する。
 “ID”カラムは、暗号化患者情報4611のレコードを一意に識別するための識別番号である。“患者番号”カラムは、患者を一意に識別するための識別番号である。“名前”カラムは、患者の氏名である。
 例えば、暗号化患者情報4611の一番上のレコードは、患者番号が“Enc(0000001)”である患者の名前が“Enc(鈴木)”であることを示す。
 本明細書において、Enc(X)は、括弧内の平文データXが暗号化部212によって暗号化された暗号化データであることを示す。
 暗号化診断情報4612は、患者の診断結果に関する情報であり、“ID”カラム、“患者番号”カラム、及び“病名”カラムから構成されるレコードを複数含む。暗号化診断情報4612には、病名が判明した患者のレコードのみが格納される。
 “ID”カラムは、暗号化診断情報4612のレコードを一意に識別するための識別情報である。“患者番号”カラムは、暗号化患者情報4611の“患者番号”カラムと同一のものである。“病名”カラムは、患者の診断結果を示す病名である。
 例えば、暗号化診断情報4612の一番上のレコードは、患者番号が“Enc(0000002)”である患者の病名が“Enc(高血圧症)”であることを示す。
 図3は、実施例1のデータベース側付加情報群462のデータ構造の一例を示す図である。
 実施例1のデータベース側付加情報群462は、暗号化結合情報4621を含む。
 暗号化結合情報4621は、“ID”カラム、“患者番号”カラム、“患者番号_クエリ”カラム、及び“病名”カラムを含むレコードを複数含む。“ID”カラム、“患者番号”カラム、及び“病名”カラムは、暗号化診断情報4612に含まれるレコードの“ID”カラム、“患者番号”カラム、及び“病名”カラムに対応する。
 “患者番号_クエリ”カラムは、患者番号から生成された検索クエリである。このように、暗号化結合情報4621には、暗号化メイン情報群461に含まれる複数の情報(テーブル)を結合する場合に実行される暗号一致判定処理に使用される検索クエリのカラムが含まれる。
 例えば、暗号化結合情報4621の一番上のレコードは、暗号化診断情報4612のIDが“1”のレコードに対応すること、及び、患者番号が“Enc(0000002)”である患者の患者番号の検索クエリが“EncQuery(0000002)”であり、当該患者の病名が“Enc(高血圧症)”であることを示す。
 本明細書において、EncQuery(X)は、括弧内の平文データXが暗号化検索クエリ生成部214によって暗号化された暗号化データであることを示す。
 図4は、実施例1のSQL定義情報361のデータ構造の一例を示す図である。
 SQL定義情報361は、データの取得要求の種別毎のSQLの生成パターンの定義情報を格納するレコードを複数含む。当該レコードは、定義ID3611、要求処理3612、及びSQL定義3613を含む。
 定義ID3611は、SQL定義情報361に格納される定義を一意に識別するための識別番号である。要求処理3612は、データの取得要求に対応する処理パターン、すなわち、データ取得要求の種別である。SQL定義3613は、要求処理3612に設定された処理パターンに対応するSQLの定義情報である。
 例えば、SQL定義情報361の一番上のレコードは、IDが“1”であり、“結合”に対応する処理パターンに対応するSQLの定義情報を格納するレコードであることを示す。当該レコードのSQL定義3613には、暗号化されたテーブルX及びテーブルYを結合するためのSQLが格納される。
 なお、SQL定義3613の“暗号一致判定(Table_X.カラムA, Table_Z.カラムB_クエリ) = ‘true’);”は、暗号化メイン情報群461に含まれるテーブルXの“A”カラムと、テーブルYの暗号化結合情報4621であるテーブルZの“検索クエリ”カラムとが一致するか否かを判定するための暗号一致判定処理を定義する命令文である。
 図5は、実施例1のメモリ410に一時的に格納される一時情報4101のデータ構造の一例を示す図である。
 実施例1の一時情報4101は、要求処理3612が“結合”であるデータの取得要求を実現するSQLの処理結果を格納する。具体的には、一時情報4101は、定義ID3611が“1”のSQL定義3613に基づいて、暗号化患者情報4011及び暗号化診断情報4612のレコードを結合することによって出力された処理結果である。一時情報4101に格納されるレコードは、“患者番号”カラム、“名前”カラム、及び“病名”カラムを含む。
 例えば、一時情報4101の一番上のレコードは、患者番号が“Enc(0000002)”及び名前が“Enc(佐藤)”である患者の病名が“Enc(高血圧症)”であるということを示す。
 (1-2)結合情報取得処理の準備処理の詳細
 次に、図6、図7、図8、及び図9を用いて、結合情報取得処理に必要な設定を行うための結合情報取得処理の準備処理の詳細を説明する。
 図6は、実施例1の結合情報取得処理の準備処理の流れを説明するシーケンス図である。図7は、実施例1の結合設定入力画面2111の一例を示す図である。図8は、実施例1の結合設定結果表示画面2112の一例を示す図である。
 ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して結合情報取得処理の準備処理を実行する。結合情報取得処理の準備処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
 まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS101)。
 例えば、ユーザは、図7に示すような結合設定入力画面2111を用いて、結合対象の情報及び結合対象のカラムを入力する。初期情報の登録作業を行なうクラウドサービス提供会社のシステムエンジニアが、システム構築する場合にユーザ端末2を操作し、病院の事務担当者及び医師等が、更新情報の登録作業を行う場合にユーザ端末2を操作することが想定される。
 ここで、結合設定入力画面2111について説明する。結合設定入力画面2111は、ブラウザ211によって表示装置220に表示される。
 結合設定入力画面2111は、結合対象の情報及び結合対象のカラムを指定する複数の入力フォーム(P101)、(P102)、(P103)、(P104)を含む。また、結合設定入力画面2111は、OKボタン(P105)及びキャンセルボタン(P106)を含む。
 入力フォーム(P101)及び入力フォーム(P102)は、第1の結合対象の情報の名称及びカラムの名称を入力するための入力フォームである。入力フォーム(P103)及び入力フォーム(P104)は、第2の結合対象の情報の名称及び結合対象のカラムの名称を入力するための入力フォームである。
 OKボタン(P105)は、各入力フォームに入力した値を確定するための操作ボタンである。キャンセルボタン(P106)は、各入力フォームに入力した値の確定をキャンセルするための操作ボタンである。
 例えば、ユーザは、暗号化患者情報4611の“患者番号”カラムと暗号化診断情報4612の“患者番号”カラムとが結合されたレコードを取得するための結合情報取得処理の準備処理を実行する場合、図7に示すような値を入力する。すなわち、ユーザは、入力フォーム(P101)に“暗号化患者情報”、入力フォーム(P102)に“患者番号”、入力フォーム(P103)に“暗号化診断情報”、入力フォーム(P104)に“患者番号”を入力する。ユーザがOKボタン(P105)を押下した場合、ブラウザ211は、各入力フォームの値を入力情報としてユーザ側付加処理部216に送信する。
 以上が結合設定入力画面2111の説明である。図6の説明に戻る。
 次に、ユーザ端末2は、結合対象の情報の結合対象のカラムの値を取得するためのデータの取得要求を生成する(ステップS102)。具体的には、以下のような処理が実行される。
 まず、ユーザ側付加処理部216は、結合対象のカラムの値を読み出す結合対象の情報を決定するために、結合対象カラム決定処理を実行する。
 結合対象カラム決定処理では、生成される検索クエリの数が最も少なくなる結合対象の情報が、結合対象のカラムの値を読み出す結合対象の情報として決定される。結合対象カラム決定処理の詳細は、図9を用いて説明する。
 ユーザ側付加処理部216は、決定された結合対象の情報の名称、当該情報の結合対象のカラムの名称、及び読出命令を入力情報として含むデータの取得要求を生成し、当該データの取得要求をアプリケーションサーバ3に送信する。以上がステップS102の処理の説明である。
 次に、アプリケーションサーバ3は、データの取得要求を受信した場合、決定された結合対象の情報の結合対象のカラムの値を読み出すためのSQLを生成する(ステップS103)。具体的には、以下のような処理が実行される。
 アプリケーション部311が、データの取得要求を受信し、SQL生成部312にデータの取得要求に含まれる要求情報を入力する。
 SQL生成部312は、要求情報に基づいて、決定された結合対象の情報の結合対象のカラムの値を読み出すためのSQLを生成し、生成されたSQLをアプリケーション部311に送信する。
 アプリケーション部311は、SQL生成部312から出力としてSQLを受信した場合、データベースインタフェース部313を介して、データベースサーバ4に当該SQLを送信する。
 例えば、決定された結合対象の情報が暗号化診断情報4612、かつ、結合対象のカラムが“患者番号”カラムである場合、以下のようなSQL(A)が生成される。
SQL(A)
 SELECT 患者番号FROM 暗号化診断情報
 SQL(A)は、暗号化診断情報4612に含まれる全てのレコードの“患者番号”カラムの値を読み出すことを意味する。以上がステップS103の処理の説明である。
 次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLを実行する(ステップS104)。
 具体的には、データベース制御部411が、受信したSQLを実行し、処理結果をアプリケーションサーバ3に送信する。当該処理結果は、アプリケーションサーバ3を介してユーザ端末2に送信される。
 例えば、データベースサーバ4は、SQL(A)を受信した場合、暗号化診断情報4612の全レコードの“患者番号”カラムの値を処理結果としてユーザ端末2に送信する。なお、“患者番号”カラムの値は暗号化データである。
 次に、ユーザ端末2は、データベースサーバ4から処理結果を受信した場合、当該処理結果を復号化する(ステップS105)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、取得された鍵情報及び処理結果に含まれる結合対象のカラムの値を復号化部213に入力する。
 復号化部213は、鍵情報を用いて、結合対象のカラムの値を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。
 例えば、結合対象のカラムの値が“Enc(0000002)”である場合、復号化部213は、“0000002”を平文データとして取得する。以上がステップS105の処理の説明である。
 次に、ユーザ端末2は、ステップS105において取得された平文データ及び鍵を用いて検索クエリを生成する(ステップS106)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、取得された鍵情報及び復号化部213から受信した平文データを暗号化検索クエリ生成部214に入力する。
 暗号化検索クエリ生成部214は、ユーザ側付加処理部216から入力を受け付けた場合、結合対象のカラムの値の検索クエリを生成する。暗号化検索クエリ生成部214は、生成された検索クエリをユーザ側付加処理部216に送信する。
 例えば、“0000002”が平文データとして入力された場合、暗号化検索クエリ生成部214は、入力された鍵情報を用いて“EncQuery(0000002)”という暗号化データを検索クエリとして生成する。以上が、ステップS106の処理の説明である。
 次に、ユーザ端末2は、暗号化結合情報4621を生成するための生成命令を生成する(ステップS107)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、暗号化検索クエリ生成部214から検索クエリを受信した後、ステップS102において決定された結合対象の情報に検索クエリのカラムを挿入して、暗号化結合情報4621をデータベース側付加情報群462に生成するための生成命令を生成する。具体的には、ユーザ側付加処理部216は、使用する情報の名称、挿入するカラムの名称、当該カラムに設定する全ての検索クエリを含む生成命令を生成する。
 例えば、使用する情報が“暗号化診断情報4612”、新しいカラムの名称が“患者番号_クエリ”、さらに検索クエリ“EncQuery(X)”を新しいカラムに設定するための生成命令が生成される。
 ユーザ側付加処理部216は、生成された生成命令をアプリケーションサーバ3に送信する。以上がステップS107の処理の説明である。
 次に、アプリケーションサーバ3は、暗号化結合情報4621を生成するためのSQLを生成する(ステップS108)。具体的には、以下のような処理が実行される。
 アプリケーション部311は、使用する情報の名称、挿入するカラムの名称、及び当該カラムに設定する全ての検索クエリを含む生成命令を受信した場合、生成命令に含まれる各情報をSQL生成部312に入力する。
 SQL生成部312は、使用する情報の名称、挿入するカラムの名称、及び当該カラムに設定する全ての検索クエリに基づいて、暗号化結合情報4621を生成するためのSQLを生成する。また、SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
 アプリケーション部311は、SQLを受信した場合、データベースインタフェース部313を介して、データベースサーバ4に当該SQLを送信する。
 例えば、使用する情報が“暗号化診断情報4612”、新しいカラムの名称が“患者番号_クエリ”、さらに検索クエリ“EncQuery(X)”である場合、以下のようなSQL(B)及びSQL(C)が生成される。
SQL(B)
 ALTER TABLE 暗号化診断情報 ADD 患者番号_クエリ BLOB;
SQL(C)
 INSERT INTO 暗号化診断情報 ( 患者番号_クエリ )
 VALUES( EncQuery(0000002),
      EncQuery(0000004),
      ・・・・・・・
      EncQuery(1000000));
 SQL(B)は、暗号化診断情報4612に、“患者番号_クエリ”カラムを追加することを意味する。SQL(C)は、各レコードの“患者番号_クエリ”カラムに検索クエリを設定することを意味する。以上が、ステップS108の処理の説明である。
 次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLを実行する(ステップS109)。具体的には、以下のような処理が実行される。
 データベース制御部411は、受信したSQLを実行することによって暗号化結合情報4621を生成する。データベース制御部411は、暗号化結合情報4621に識別情報を付与する。結合する情報の組合せに応じて、複数の暗号化結合情報4621が生成されるためである。
 データベース制御部411は、暗号化結合情報4621に関する情報を含む処理結果をアプリケーションサーバ3に送信する。当該処理結果は、アプリケーションサーバ3を介してユーザ端末2に送信される。
 例えば、データベースサーバ4がSQL(B)及びSQL(C)を受信した場合、データベース制御部411は、暗号化診断情報4612をデータベース側付加情報群462にコピーし、暗号化診断情報4612に“患者番号_クエリ”カラムを追加し、当該カラムに値を設定することによって暗号化結合情報4621を生成する。データベースサーバ4は、暗号化結合情報4621の生成が成功した旨を示す結果ステータス、“患者番号_クエリ”カラムに値が設定された件数、及び暗号化結合情報4621の生成に要した所要時間等を含む処理結果をアプリケーションサーバ3に送信する。
 このとき、アプリケーションサーバ3のアプリケーション部311は、受信した処理結果、並びに、ステップS102及びステップS107で受信した情報に基づいて、結果表示情報を生成し、結果表示情報をユーザ端末2に送信する。以上が、ステップS109の処理の説明である。
 次に、ユーザ端末2は、一連の処理の結果をユーザに対して表示する(ステップS110)。
 具体的には、ユーザ端末2のブラウザ211は、結果表示情報を受信した場合、当該結果表示情報に基づいて、図8に示すような結合設定結果表示画面2112を表示装置220に表示する。
 ここで、結合設定結果表示画面2112について説明する。結合設定結果表示画面2112は、ブラウザ211によって表示装置220に表示される。
 結合設定結果表示画面2112は、結合設定入力画面2111を用いて入力された値、SQLの実行結果を示す複数の表示フォーム(P201)、(P202)、(P203)、(P204)、(P205)、(P206)、(P207)、(P208)を含む。また、結合設定結果表示画面2112は、OKボタン(P209)を含む。
 表示フォーム(P201)及び表示フォーム(P203)は、結合設定入力画面2111を用いて入力された第1の結合対象の情報の名称及び第2の結合対象の情報の名称を表示する表示フォームである。表示フォーム(P202)及び表示フォーム(P204)は、第1の結合対象の情報のレコード数及び第2の結合対象の情報のレコード数を表示する表示フォームである。
 表示フォーム(P205)は、検索クエリのカラムが挿入された情報の名称を表示する表示フォームである。表示フォーム(P206)は、挿入される検索クエリのカラムの名称を表示する表示フォームである。
 表示フォーム(P207)は、暗号化結合情報4621の生成に要した時間を表示する表示フォームである。表示フォーム(P208)は、暗号化結合情報4621の生成結果を表示する表示フォームである。表示フォーム(P208)には、“成功”又は“失敗”のいずれかが表示される。
 OKボタン(P209)は、表示の終了を指示するための操作ボタンである。
 例えば、図7に示すような値が入力された場合、表示フォーム(P201)には“暗号化患者情報”、表示フォーム(P202)には“1000000”、表示フォーム(P203)には“暗号化診断情報”、表示フォーム(P204)には“3000”が表示される。また、SQL(B)及びSQL(C)に基づいて暗号化結合情報4621が生成された場合、表示フォーム(P205)には“暗号化診断情報”、表示フォーム(P206)には“患者番号_クエリ”が表示される。また、表示フォーム(P207)には、“100ms”、表示フォーム(P208)には“成功”が表示される。ユーザがOKボタン(P209)を押下した場合、結合設定結果表示画面2112の表示が終了する。
 以上が結合設定結果表示画面2112の説明である。図6の説明に戻る。
 ユーザ端末2は、必要に応じて処理結果をユーザ側付加情報群262に格納してもよいし、また、アプリケーションサーバ3又はデータベースサーバ4に送信してもよい。なお、当該処理結果には、暗号化結合情報4621と、暗号化結合情報4621の生成に用いた情報との対応関係、及び検索クエリと、暗号化結合情報4621の生成に用いた情報のカラムとの対応関係等が含まれる。
 なお、ユーザ端末2がメイン情報群261を保持する場合、ステップS102からステップS105までの処理を省略できる。以上が結合準備処理の流れの説明である。
 図9は、実施例1のユーザ側付加処理部216が実行する結合対象カラム決定処理の一例を説明するフローチャートである。
 ユーザ側付加処理部216は、結合対象の情報の名称等を受信した場合、以下で説明する結合対象カラム決定処理を開始する。
 まず、ユーザ側付加処理部216は、第1の結合対象の情報及び第2の結合対象の情報のレコード数を取得する(ステップF101)。
 具体的には、ユーザ側付加処理部216は、ユーザ側付加情報群262から各結合対象の情報のレコード数に関する情報を読み出す。
 なお、ユーザ側付加情報群262に結合対象の情報のレコード数に関する情報が存在しない場合、ユーザ側付加処理部216は、アプリケーションサーバ3に各結合対象の情報のレコード数の取得要求を送信する。これによって、各結合対象の情報のレコード数をカウントするためSQLがデータベースサーバ4に送信される。ユーザ側付加処理部216は、データベースサーバ4からSQLの処理結果を受信することによって各結合対象の情報のレコード数を取得できる。
 次に、ユーザ側付加処理部216は、レコード数が少ない結合対象の情報を、結合対象のカラムの値を読み出す結合対象の情報に決定する(ステップF102)。
 暗号化患者情報4611及び暗号化診断情報4612が結合対象の情報である場合、暗号化診断情報4612のレコード数は暗号化患者情報4611のレコード数より小さい。したがって、ユーザ側付加処理部216は、暗号化診断情報4612を、結合対象のカラムの値を読み出す結合対象の情報に決定する。なお、結合対象のカラムは、“患者番号”カラムである。
 結合対象カラム決定処理が実行されることによって、検索クエリの生成数及び追加数を必要最小限にできる。したがって、結合準備処理及び図10を用いて説明する結合情報取得処理の処理時間を短縮できる。
 以上が結合情報取得処理の準備処理の説明である。
 (1-3)結合情報取得処理の詳細
 次に、図10、図11、及び図12を用いて、結合情報取得処理の詳細を説明する。
 図10は、実施例1の結合情報取得処理の流れを示すシーケンス図である。図11は、実施例1の患者情報取得画面2113の一例を示す図である。図12は、実施例1の患者病名一覧表示画面2114の一例を示す図である。
 ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して結合情報取得処理を実行する。結合情報取得処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
 まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS201)。
 例えば、ユーザは、図11に示すような患者情報取得画面2113を用いて、結合情報を取得するために必要な情報を入力する。機微な情報を保存した医師が、患者の基本情報を示すマスタ情報と、最近の患者の診断結果とを突き合わせたデータとを表示する場合、ユーザ端末2を操作することが想定される。
 ここで、患者情報取得画面2113について説明する。患者情報取得画面2113は、ブラウザ211によって表示装置220に表示される。
 患者情報取得画面2113は、取得する情報を選択するための複数のラジオボタン(P301)、(P302)を含む。また、患者情報取得画面2113は、OKボタン(P303)及びキャンセルボタン(P304)を含む。
 ラジオボタン(P301)は、各患者の病名の一覧を表示するためのラジオボタンである。ラジオボタン(P302)は、診断書の一覧を表示するためのラジオボタンである。
 OKボタン(P303)は、選択されたラジオボタンの入力を確定するための操作ボタンである。キャンセルボタン(P304)は、選択されたラジオボタンの入力の確定をキャンセルするための操作ボタンである。
 例えば、ユーザは、ラジオボタン(P301)を選択し、OKボタン(P105)を押下する。
 以上が患者情報取得画面2113の説明である。図10の説明に戻る。
 次に、ユーザ端末2は、結合情報を取得するためのデータの取得要求を生成する(ステップS202)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、要求された情報を取得するために必要な操作の種別を特定する。ユーザ側付加処理部216は、要求された情報に必要なカラムを特定し、また、特定されたカラムを含む情報を特定する。さらに、ユーザ側付加処理部216は、暗号一致判定処理に使用する検索クエリを格納する暗号化結合情報4621を特定する。
 例えば、操作の種別、必要なカラム、及び暗号化結合情報4621を、予め操作画面に対応付けておくことが考えられる。また、メイン情報群261に含まれる情報のデータ構造を示す定義情報を、予め、ユーザ側付加情報群262に格納することが考えられる。
 ユーザ側付加処理部216は、操作の種別、対象の情報の名称、対象のカラムの名称、暗号化結合情報4621の識別情報、及び読出命令を含むデータの取得要求を生成する。ユーザ側付加処理部216は、生成されたデータの取得要求をアプリケーションサーバ3に送信する。
 例えば、ラジオボタン(P301)が選択された場合、患者番号、名前、及び病名が要求された情報に必要なカラムとして特定され、暗号化患者情報4611及び暗号化診断情報4612が要求された情報に必要な情報として特定される。また、患者番号_クエリを含む暗号化結合情報4621が、暗号一致判定処理に使用する検索クエリを格納する暗号化結合情報4621として特定される。
 なお、要求された情報を取得するために必要な操作の種別及び検索クエリを格納する暗号化結合情報4621は、アプリケーションサーバ3が特定してもよい。この場合、アプリケーションサーバ3又はデータベースサーバ4が、特定するために必要な情報を保持する。以上がステップS202の処理の説明である。
 次に、アプリケーションサーバ3は、2つの情報を結合された結合情報を取得するためのSQLを生成する(ステップS203)。具体的には、以下のような処理が実行される。
 アプリケーション部311は、データの取得要求を受信した場合、データの取得要求をSQL生成部312に送信する。
 SQL生成部312は、SQL定義情報361を参照して、要求処理3612がデータの取得要求に含まれる処理の種別に一致するレコードを特定する。この場合、定義ID3611が“1”のレコードが特定される。
 SQL生成部312は、データの取得要求に含まれるカラムの名称、情報の名称、及び検索クエリを含む暗号化結合情報4621の識別情報、並びに特定されたレコードのSQL定義3613に基づいて、SQLを生成する。SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
 アプリケーション部311は、データベースインタフェース部313を介して、SQLをデータベースサーバ4に送信する。
 例えば、ラジオボタン(P301)が選択された場合、SQL生成部312は以下のようなSQL(D)を生成する。
SQL(D)
 SELECT 患者番号, 名前, 病名 FROM 暗号化患者情報 X
 JOIN 暗号化結合情報 Y
 ON (
    暗号一致判定(X.患者番号, Y.患者番号_クエリ)=‘true’);
 SQL(D)は、暗号化患者情報4611の“患者番号”カラムの値と、暗号化結合情報4621の“患者番号_クエリ”カラムの値とが一致した場合、一致する各情報のレコードを結合し、結合結果から“患者番号”カラム、“名前”カラム、及び“病名”カラムの値を読み出すことを意味する。以上がステップS203の処理の説明である。
 次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLを実行する(ステップS204)。
 具体的には、データベース制御部411が、受信したSQLを実行し、処理結果をアプリケーションサーバ3に送信する。当該処理結果は、アプリケーションサーバ3を介してユーザ端末2に送信される。
 例えば、データベース制御部411は、SQL(D)を受信した場合、暗号一致判定部412を呼び出す。暗号一致判定部412は、暗号化患者情報4611に含まれる1つのレコードの“患者番号”カラムの値と、暗号化結合情報4621に含まれる1つのレコードの“患者番号_クエリ”カラムの値とが一致するか否か判定する。データベース制御部411は、暗号一致判定部412の判定結果に基づいて、“患者番号_クエリ”カラムの値が“患者番号”カラムの値に一致するレコードを取得し、一時情報4101に格納する。
 SQL(D)が実行された場合、図5に示すような一時情報4101がメモリ410上に出力される。データベース制御部411は、当該一時情報4101を含む処理結果をアプリケーションサーバ3に送信する。
 なお、特許文献3の確率的暗号化方式を用いることによって、暗号化された情報のカラムの値と、検索クエリの値とが一致するか否かを判定することができる。具体的な判定方法は、特許文献3に記載されているため詳細な説明は省略する。
 次に、ユーザ端末2は、処理結果を受信した場合、当該処理結果を復号化する(ステップS205)。
 具体的には、ユーザ側付加処理部216は、一時情報4101を含む処理結果を受信した場合、鍵管理部215から鍵情報を取得し、一時情報4104及び当該鍵情報を復号化部213に送信する。復号化部213は、鍵情報を用いて、一時情報4104を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。ユーザ側付加処理部216は、平文データをブラウザ211に送信する。
 次に、ユーザ端末2は、一連の処理の結果をユーザに対して表示する(ステップS206)。
 具体的には、ブラウザ211は、平文データを含む処理結果を表示するための表示情報を生成し、当該表示情報に基づいて、図12に示すような患者病名一覧表示画面2114を表示装置220に表示する。
 ここで、患者病名一覧表示画面2114について説明する。患者病名一覧表示画面2114は、ブラウザ211によって表示装置220に表示される。
 患者病名一覧表示画面2114は、平文データである結合結果(P401)を含む。また、患者病名一覧表示画面2114は、OKボタン(P402)を含む。
 図12に示す結合結果は、“患者番号”カラム、“名前”カラム、及び“病名”カラムを含むレコードを複数含む。一番上のレコードは、患者番号が“0000002”かつ名前が“佐藤”である患者が、高血圧症という診断結果を受けたことを示す。OKボタン(P402)は、表示の終了を指示するための操作ボタンである。
 以上が患者病名一覧表示画面2114の説明である。また、以上が結合情報取得処理の説明である。
 なお、実施例1では、結合する2つの情報のいずれかを用いて暗号化結合情報4621が生成されているが、これに限定されない。第1情報及び第2情報を結合させる場合、第1情報の名称、第1情報の結合対象のカラムの名称、第2情報の名称、第2情報の結合対象のカラムの名称、及び検索クエリを対応付けたレコードを複数含む暗号化結合情報4621であってもよい。
 前述した暗号化結合情報4621の場合、データベース制御部411は、第1情報及び第2情報のそれぞれに対して暗号一致判定処理を実行し、検索クエリと一致する第1情報のレコード及び検索クエリと一致する第2情報のレコードを結合する。
 (1-4)実施例1の効果
 以上に説明したように、実施例1の秘匿化データベースシステム1では、暗号化結合情報4621及びSQL定義情報361に基づいて、データベースサーバ4内で暗号化された情報が復号されることなく、2つの暗号化された情報が結合された結合情報がユーザ端末2に送信される。したがって、データの秘匿性を維持しつつ、結合結果を取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
 実施例2の秘匿化データベースシステム1は、部分一致検索処理を実現するための機能を提供する点が実施例1とは異なる。部分一致検索処理は、部分的なキーワードを検索条件として、任意のテーブルのレコードに含まれるカラムと部分的に一致するレコードを取得するための処理である。以下、実施例1との差異を中心に、実施例2について説明する。
 (2-1)実施例2の計算機システムの構成
 実施例2の秘匿化データベースシステム1は、実施例1と同一の構成であるため説明を省略する。また、実施例2のユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4のハードウェア構成は実施例1の各ハードウェア構成と同一であるため説明を省略する。
 実施例2では、ソフトウェア構成及び各装置が保持する情報の内容が一部異なる。
 まず、ユーザ端末2のソフトウェア構成について説明する。実施例2のユーザ端末2のソフトウェア構成は、実施例1のユーザ端末2のソフトウェア構成と同一である。ただし、実施例2のユーザ側付加処理部216は、部分一致検索処理を実現するための機能を有する点が実施例1とは異なる。
 図13は、実施例2のユーザ側付加処理部216の論理構成を示すブロック図である。
 ユーザ側付加処理部216は、部分一致検索処理を実現するための機能として、部分情報生成部2161及び部分一致検索クエリ生成部2162を含む。
 部分情報生成部2161は、任意の情報のカラムの平文データの入力を受け付け、所定の粒度に平文データを分割することによって部分情報2101を生成し、部分情報2101を出力する。なお、平文データの分割粒度は、後述する部分一致検索処理の準備処理において決定される。
 部分一致検索クエリ生成部2162は、平文データである検索語の入力を受け付け、所定の粒度に検索語を分割し、暗号化検索クエリ生成部214と連携して分割された検索語が暗号化された部分一致検索クエリ(暗号化された検索クエリ)を生成し、部分一致検索クエリを出力する。なお、検索語の分割粒度は、後述する部分一致検索処理において決定される。
 次に、アプリケーションサーバ3のソフトウェア構成について説明する。実施例2のアプリケーションサーバ3のソフトウェア構成は、実施例1のアプリケーションサーバ3のソフトウェア構成と同一である。
 実施例2では、アプリケーションサーバ3は、定義ID3611が“2”のSQL定義3613に基づいて、部分一致検索処理を実現するSQLを生成する。ここで、定義ID3611が“2”のSQL定義3613は、以下のようなSQL(E)、(F)となる。
SQL(E)
 SELECT 部分一致ID取得(名前_部分情報,
             LikeID情報_xxx, 部分一致検索クエリ );
SQL(F)
 SELECT 患者番号, 名前 FROM 暗号化患者情報
 JOIN LikeID情報_xxx
 ON ( 暗号化患者情報.ID = LikeID情報_xxx.ID );
 SQL(E)は、部分一致ID取得部4131に部分一致ID取得処理の実行を指示するSQLであり、暗号化部分情報4622から部分一致検索クエリ情報2102に一致するIDを抽出し、LikeID情報_xxx4623に出力することを意味する。SQL(F)は、暗号化患者情報4613及びLikeID情報_xxx4623を“ID”カラムで結合し、一致したレコードの“患者番号”カラム及び“名前”カラムの値を読み出すことを意味する。
 次に、データベースサーバ4のソフトウェア構成について説明する。実施例2のデータベースサーバ4のソフトウェア構成は、実施例1のデータベースサーバ4のソフトウェア構成と同一である。ただし、実施例2のデータベース側付加処理部413は、部分一致検索処理を実現するための機能を有する点が実施例1とは異なる。
 図14は、実施例2のデータベース側付加処理部413の論理構成を示すブロック図である。
 データベース側付加処理部413は、部分一致検索処理を実現するための機能として、部分一致ID取得部4131を含む。
 部分一致ID取得部4131は、部分一致検索クエリ及び部分一致したレコードのIDを格納する出力テーブル名を入力として受け付け、暗号一致判定部412を用いて部分一致するIDを判定し、当該IDを出力テーブルに出力する。
 次に、実施例2の各構成が有する情報について説明する。
 図15は、実施例2のメモリ210に一時的に格納されるデータのデータ構造の一例を示す図である。
 実施例2のメモリ210は、部分情報2101及び部分一致検索クエリ情報2102を格納する。
 部分情報2101は、“名前_部分情報”カラム、“ID”カラム、及び“offset”カラムを含むレコードを複数含む。
 “名前_部分情報”カラムは、部分一致検索処理の対象となるカラムの値が分割された値である。本実施例では、暗号化患者情報4613の“名前”カラムに対する部分一致検索処理が行われるため、部分情報2101には、“名前_部分情報”カラムが含まれる。なお、部分一致検索処理の対象が異なる場合、部分情報2101は、“(対象カラムの名称)_部分情報”カラムが含まれる。
 “ID”カラムは、“名前_部分情報”カラムに格納される値が分割される前の値を格納するレコードの識別番号である。本実施例の“ID”カラムは、暗号化患者情報4613の“ID”カラムに対応する。
 “offset”カラムは、分割される前の値における“名前_部分情報”に格納される値の分割位置である。
 例えば、部分情報2101の一番上のエントリは、“名前_部分情報”カラムに格納される“鈴木”は、暗号化患者情報4613の“ID”カラムが“1”であるレコードの“名前”カラムの値“鈴木太郎”を分割した値であり、分割位置は“0”であることを示す。
 部分一致検索クエリ情報2102は、部分一致検索処理に用いる検索語が分割された値から生成された部分一致検索クエリを格納するレコードを複数含む。当該レコードは、“検索クエリ”カラム及び“offset”カラムを含む。
 “検索クエリ”カラムは、部分一致検索クエリである。“offset”カラムは、検索語における暗号化前の値の分割位置である。
 図15の部分一致検索クエリ情報2102は、検索語“藤原太”から生成される検索クエリを格納することを示す。部分一致検索クエリ情報2102の一番上のレコードは、検索クエリが“EncQuery(藤原)”であり、暗号化前の“藤原”は、検索語の分割位置が“0”であることを示す。
 図16は、実施例2の暗号化メイン情報群461のデータ構造の一例を示す図である。
 実施例2の暗号化メイン情報群461は、暗号化患者情報4613を含む。
 暗号化患者情報4613は、患者の一覧であり、“ID”カラム、“患者番号”カラム、及び“名前”カラムを含むレコードを複数含む。
 “ID”カラム、“患者番号”カラム、及び“名前”カラムは、実施例1の暗号化患者情報4611のID”カラム、“患者番号”カラム、及び“名前”カラムと同一のものである。
 例えば、暗号化患者情報4613の一番上のレコードは、IDが“1”のレコードの患者番号が“Enc(0000001)”、名前が“Enc(鈴木太郎)”であることを示す。
 図17は、実施例2のデータベース側付加情報群462のデータ構造の一例を示す図である。
 実施例2のデータベース側付加情報群462は、部分一致検索処理に使用する暗号化部分情報4622及びLikeID情報_xxx4623を含む。
 暗号化部分情報4622は、“名前_部分情報”カラム、“ID”カラム、及び“offset”カラムを含むレコードを複数含む。
 “名前_部分情報”カラムは、暗号一致判定処理において部分一致検索クエリと比較される暗号化データである。例えば、暗号化部分情報4622の一番上のレコードの“名前_部分情報”カラムには、“鈴木”が暗号化された“Enc(鈴木)”が格納される。
 “ID”カラム、及び“offset”は、部分情報2101の“ID”カラム、及び“offset”に対応するカラムである。
 LikeID情報_xxx4623は、部分一致ID取得部4131によって出力されたIDである。LikeID情報_xxx4623は、“ID”カラムのみから構成される。LikeID情報_xxx4623の“xxx”には、部分一致検索処理毎に異なる値が設定される。
 図17に示すLikeID情報_xxx4623は、部分一致ID取得部4131から出力されたIDが“2”のみであることを示す。
 図18は、実施例2のメモリ410に一時的に格納される一時情報4102のデータ構造の一例を示す図である。
 一時情報4102は、SQL(F)の実行結果を格納する。具体的には、一時情報4102は、暗号化患者情報4613から、部分一致検索処理において部分一致検索クエリと一致したIDを含むレコードの“患者番号”カラム及び“名前”カラムの値を格納する。したがって、一時情報4102は、“患者番号”カラム及び“名前”カラムを含む1つのレコードを含む。
 図18の一時情報4102は、患者番号が“Enc(0000003)”であり名前が“Enc(藤原太郎)”であるレコードが部分一致検索処理の結果として出力されたことを示す。
 (2-2)部分一致検索処理の準備処理の詳細
 次に、図19、図20、図21、及び図22を用いて、部分一致検索処理に必要な設定を行うための部分一致検索処理の準備処理の詳細を説明する。
 図19は、実施例2の部分一致検索処理の準備処理の流れを説明するシーケンス図である。図20は、実施例2の部分一致設定入力画面2115の一例を示す図である。図21は、実施例2の部分一致設定結果表示画面2116の一例を示す図である。
 ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して部分一致検索処理の準備処理を実行する。
 ステップS101からS105までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップの処理内容が一部異なる。
 実施例2のステップS101では、ユーザが入力する情報が実施例1とは異なる。実施例2では、ユーザは、図20に示すような部分一致設定入力画面2115を用いて、部分一致検索処理の対象の情報及びカラムを入力する。
 ここで、部分一致設定入力画面2115について説明する。部分一致設定入力画面2115は、ブラウザ211によって表示装置220に表示される。
 部分一致設定入力画面2115は、部分一致検索処理に必要な情報を入力する複数の入力フォーム(P501)、(P502)、(P503)を含む。また、部分一致設定入力画面2115は、OKボタン(P504)及びキャンセルボタン(P505)を含む。
 入力フォーム(P501)は、部分一致検索処理の対象となる情報の名称を入力するための入力フォームである。入力フォーム(P502)は、部分一致検索処理の対象となるカラムの名称を入力するための入力フォームである。入力フォーム(P503)は、部分一致検索処理の処理結果に基づいて、カラムの値を読み出すレコードを指定するカラムの名称を入力するための入力フォームである。
 OKボタン(P504)は、各入力フォームに入力した値を確定するための操作ボタンである。キャンセルボタン(P505)は、各入力フォームに入力した値の確定をキャンセルするための操作ボタンである。
 図20では、部分一致検索処理の対象となる情報として“暗号化患者情報”が入力され、部分一致検索処理の対象となるカラムとして“名前”カラムが入力され、また、カラムの値を読み出すレコードを指定するカラムとして “ID”カラムが入力される。
 以上が部分一致設定入力画面2115の説明である。図19の説明に戻る。
 実施例2のステップS102では、結合対象カラム決定処理は実行されない。
 実施例2のステップS103では、SQL生成部312は、部分一致設定入力画面2115に入力された値に基づいて、データの取得要求に含まれる対象のカラムの値を読み出すためのSQLを生成する。
 実施例2のステップS104及びステップS105の処理の内容は、実施例1と同一である。
 ユーザ端末2は、ステップS105において復号化された平文データを用いて、部分情報2101を生成する(ステップS301)。図20に示すような値が部分一致設定入力画面2115に入力されている場合、以下のような処理が実行される。
 ユーザ側付加処理部216は、部分情報生成部2161を呼び出す。このとき、ユーザ側付加処理部216は、“暗号化患者情報4613”の“ID”カラム及び“名前”カラムの値のペアを部分情報生成部2161に入力する。
 部分情報生成部2161は、入力された値に基づいて部分情報生成処理を実行する。これによって、図15に示す部分情報2101が生成される。部分情報生成処理の詳細は、図22を用いて説明する。以上がステップS301の処理の説明である。
 次に、ユーザ端末2は、部分情報2101の部分一致検索処理の対象となるカラムの値を暗号化する(ステップS302)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、鍵情報及び部分情報生成部2161を暗号化部212に送信する。
 暗号化部212は、部分情報2101に含まれるカラムのうち、部分一致検索処理の対象となるカラムの値を鍵情報を用いて暗号化する。復号化部213は、部分一致検索処理の対象となるカラムの値が暗号化された部分情報2101をユーザ側付加処理部216に送信する。以上がステップS302の処理の説明である。
 次に、ユーザ端末2は、暗号化部分情報4622を生成するための生成命令を生成する(ステップS303)。
 具体的には、ユーザ側付加処理部216は、暗号化部212から受信した暗号化された部分情報2101を暗号化部分情報4622として登録するための生成命令を生成し、当該命令をアプリケーションサーバ3に送信する。
 ステップS303の処理の後、ステップS108からステップS110までの処理が実行される。ステップS108からステップS110までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップにおける処理内容が一部異なる。
 実施例2のステップS108では、SQL生成部312は、生成命令に含まれる各情報を用いて、暗号化部分情報4622を生成するためのSQLを生成する。
 実施例2のステップS109では、データベース制御部411は、受信したSQLを実行することによってデータベース側付加情報群462に暗号化部分情報4622を生成する。
 実施例2のステップS110では、ブラウザ211は、結果表示情報に基づいて、図21に示すような部分一致設定結果表示画面2116を表示装置220に表示する。
 ここで、部分一致設定結果表示画面2116について説明する。部分一致設定結果表示画面2116は、ブラウザ211によって表示装置220に表示される。
 部分一致設定結果表示画面2116は、部分一致設定入力画面2115に入力された値、SQLの実行結果を示す表示フォーム(P601)、(P602)、(P603)、(P604)、(P605)を含む。また、部分一致設定結果表示画面2116は、OKボタン(P606)を含む。
 表示フォーム(P601)は、部分一致設定入力画面2115に入力された部分一致検索処理の対象となる情報の名称を表示する表示フォームである。表示フォーム(P602)は、部分一致設定入力画面2115に入力された部分一致検索処理の対象となるカラムの名称を表示する表示フォームである。
 表示フォーム(P603)は、暗号化部分情報4622の名称を表示する表示フォームである。表示フォーム(P604)は、暗号化部分情報4622に含まれるレコードの数を表示する表示フォームである。表示フォーム(P605)は、暗号化部分情報4622の生成結果を示す表示フォームである。表示フォーム(P605)には、“成功”又は“失敗”のいずれかが表示される。
 OKボタン(P606)は、表示の終了を指示するための操作ボタンである。
 例えば、図20に示すような値が入力された場合、表示フォーム(P601)には“暗号化患者情報”、表示フォーム(P602)には“名前”、表示フォーム(P603)には、“名前_部分情報”、表示フォーム(P604)には、“8000”、表示フォーム(P605)には“成功”が表示される。ユーザはOKボタン(P606)を押下した場合、部分一致設定結果表示画面2116の表示が終了する。
 以上が部分一致設定結果表示画面2116の説明である。図19の説明に戻る。
 ユーザ端末2は、必要に応じて処理結果をユーザ側付加情報群262に格納してもよいし、また、アプリケーションサーバ3又はデータベースサーバ4に送信してもよい。なお、当該処理結果には、暗号化部分情報4622と部分情報2101との対応関係等が含まれる。以上が部分一致検索処理の準備処理の流れの説明である。
 図22は、実施例2の部分情報生成部2161が実行する部分情報生成処理の一例を説明するフローチャートである。
 部分情報生成部2161は、ユーザ側付加処理部216から呼び出された場合、以下で説明する部分情報生成処理を開始する。なお、部分情報生成部2161には、平文データである“ID”カラムの値、及び部分一致検索処理の対象となるカラムの値のペアが入力される。
 まず、部分情報生成部2161は、ペアを1つ読み出す(ステップF201)。
 例えば、部分情報生成部2161は、IDの値の昇順にペアを1つ読み出す。暗号化患者情報4613の“ID”カラム及び“名前”カラムの値のペアが入力された場合、部分情報生成部2161は、ID“1”かつ名前が“鈴木太郎”であるペアを読み出す。
 次に、部分情報生成部2161は、N-gram方式を用いて、部分一致検索処理の対象となるカラムの値を分割する(ステップF202)。
 例えば、N=2のN-gram方式を用いた場合、名前“鈴木太郎”の値は、“鈴木”、“木太”、及び“太郎”の3つに分割される。
 次に、部分情報生成部2161は、分割された各値について、分割前の値の先頭からの分割位置を示すoffsetを割り当てる(ステップF203)。
 例えば、“鈴木”にはoffset“0”が割り当てられ、“木太”にはoffset“1”が割り当てられ、“太郎”にはoffset“2”が割り当てられる。
 次に、部分情報生成部2161は、分割された値、ID、及びoffsetを含むレコードを部分情報2101に追加する(ステップF204)。
 例えば、分割された値が“鈴木”、“木太”、及び“太郎”である場合、以下の3つのレコードが部分情報2101に追加される。
        部分情報  ID  offset値
レコード1:  鈴木    1   0
レコード2:  木太    1   1
レコード3:  太郎    1   2
 次に、部分情報生成部2161は、全てのペアに対して処理が完了したか否かを判定する(ステップF205)。
 全てのペアに対して処理が完了していないと判定された場合、部分情報生成部2161は、ステップF201に戻り、同様の処理を実行する。
 全てのペアに対して処理が完了したと判定された場合、部分情報生成部2161は、処理を終了する。以上の処理によって図15に示すような部分情報2101が生成される。
 IDを含めた部分一致検索処理を実行するための情報を予め用意することによって、部分一致検索処理において、ユーザ端末2は、部分一致するIDを絞り込み、IDに対応する暗号化データを取得できる。以上が部分一致検索処理の準備処理の説明である。
 (2-3)部分一致検索処理の詳細
 次に、図23、図24、図25、図26、及び図27を用いて、部分一致検索処理の詳細を説明する。
 図23は、実施例2の部分一致検索処理の流れを示すシーケンス図である。図24は、実施例2の患者情報取得画面2117の一例を示す図である。図25は、実施例2の患者情報表示画面2118の一例を示す図である。
 ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して部分一致検索の処理を実行する。部分一致検索の処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
 まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS401)。
 例えば、ユーザは、図24に示すような患者情報取得画面2117を用いて、検索語として、名前の一部を入力する。機微な情報を保存した医師が、患者の名前の一部を検索語とし、該当する患者情報の表示を要求する場合、ユーザ端末2を操作することが想定される。
 ここで、患者情報取得画面2117について説明する。患者情報取得画面2117は、ブラウザ211によって表示装置220に表示される。
 患者情報取得画面2117は、ラジオボタン(P701)、及び入力フォーム(P702)を含む。また、患者情報取得画面2117は、OKボタン(P703)及びキャンセルボタン(P704)を含む。
 ラジオボタン(P701)は、表示するデータの形式を選択するためのラジオボタンである。入力フォーム(P702)は、検索語を入力するための入力フォームである。
 OKボタン(P703)は、入力を確定するための操作ボタンである。キャンセルボタン(P704)は、入力の確定をキャンセルするための操作ボタンである。
 例えば、ユーザは、ラジオボタン(P301)を操作し、入力フォーム(P302)に検索語を入力し、OKボタン(P703)を押下する。
 以上が患者情報取得画面2117の説明である。図23の説明に戻る。
 次に、ユーザ端末2は、検索語に一致する情報を取得するためのデータの取得要求を生成する(ステップS402)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、要求された情報を取得するために必要な操作の種別を特定する。ユーザ側付加処理部216は、対象の情報及び対象のカラムの名称を特定する。また、ユーザ側付加処理部216は、暗号一致判定処理に使用する検索クエリを格納する暗号化部分情報4622を特定する。ユーザ側付加処理部216は、入力された検索語を部分一致検索クエリ生成部2162に入力し、部分一致検索クエリ生成処理の実行を指示する。
 部分一致検索クエリ生成部2162は、部分一致検索クエリ生成処理を実行することによって部分一致検索クエリ情報2102を生成する。例えば、検索語“藤原太”が入力された場合、図15に示すような部分一致検索クエリ情報2102が生成される。なお、部分一致検索クエリ生成処理の詳細は、図26を用いて説明する。
 部分一致検索クエリ生成部2162は、部分一致検索クエリ情報2102をユーザ側付加処理部216に送信する。
 ユーザ側付加処理部216は、操作の種別、対象の情報の名称、対象のカラムの名称、暗号化部分情報4622の識別情報、部分一致検索クエリ情報2102、及び読出命令を含むデータの取得要求を生成し、アプリケーションサーバ3に送信する。以上がステップS402の処理の説明である。
 次に、アプリケーションサーバ3は、暗号化データに対する部分一致検索処理を実行するためのSQLを生成する(ステップS403)。具体的には、以下のような処理が実行される。
 アプリケーション部311は、データの取得要求を受信した場合、データの取得要求をSQL生成部312に送信する。
 SQL生成部312は、SQL定義情報361を参照し、要求処理3612がデータの取得要求に含まれる操作の種別に一致するレコードを特定する。この場合、定義ID3611が“2”のレコードが特定される。
 SQL生成部312は、データの取得要求に含まれるカラムの名称、情報の名称、部分一致検索クエリ情報2102、並びに特定されたレコードのSQL定義3613に基づいて、SQLを生成する。本実施例では、部分一致ID取得処理のSQL及び部分一致対象カラム取得処理のSQLが生成される。SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
 アプリケーション部311は、データベースインタフェース部313を介して、SQLをデータベースサーバ4に送信する。
 図24に示すような情報が入力された場合、SQL生成部312は以下のようなSQL(G)、(H)を生成する。
SQL(G)
 SELECT 部分一致ID取得(名前_部分情報,
             LikeID情報_001, 部分一致検索クエリEQ );
SQL(H)
 SELECT 患者番号, 名前 FROM 暗号化患者情報
 JOIN LikeID情報_001
 ON ( 暗号化患者情報.ID = LikeID情報_001.ID );
 SQL(G)は、部分一致ID取得処理のSQLである。SQL(G)は、部分一致ID取得部4131に部分一致ID取得処理の実行を指示することによって、暗号化部分情報4622から部分一致検索クエリに一致するIDをLikeID情報_001に出力することを意味する。
 SQL(H)は、部分一致対象カラム取得処理のSQLである。SQL(H)は、暗号化患者情報4613とLikeID情報_001を結合することによってレコードを出力し、当該レコードの“患者番号”カラム及び“名前”カラムの値を読み出すことを意味する。以上がステップS403の説明である。
 次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLにしたがって、部分一致ID取得処理及び部分一致対象カラム取得処理を実行する(ステップS404、ステップS405)。具体的には、以下のような処理が実行される。
 データベース制御部411は、部分一致ID取得処理のSQLを実行し、部分一致対象カラム取得処理のSQLを実行する。
 ここで、受信したSQLがSQL(G)、(H)である場合を例に説明する。
 まず、データベース制御部411は、SQL(G)に基づいて、データベース側付加処理部413の部分一致ID取得部4131に部分一致ID取得処理の実行を指示する。これによって、LikeID情報_xxx4623にIDが格納される。部分一致ID取得処理の詳細は、図27を用いて説明する。
 データベース制御部411は、SQL(H)に基づいて、暗号化患者情報4613から、“ID”カラムがLikeID情報_xxx4623に格納されるIDと一致するレコードを出力し、当該レコードの“患者番号”カラム及び“名前”カラムの値を取得する。データベース制御部411は、メモリ410に一時情報4102として取得結果を格納する。
 データベース制御部411は、一時情報4102を含む処理結果をアプリケーションサーバ3に送信する。以上がステップS404、ステップS405の処理の説明である。
 次に、ユーザ端末2は、処理結果を受信した場合、当該処理結果を復号化する(ステップS406)。
 具体的には、ユーザ側付加処理部216は、一時情報4102を含む処理結果を受信した場合、鍵管理部215から鍵情報を取得し、一時情報4102及び鍵情報を復号化部213に送信する。復号化部213は、鍵情報を用いて、一時情報4102に含まれるカラムの値を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。ユーザ側付加処理部216は、平文データをブラウザ211に送信する。
 次に、ユーザ端末2は、一連の処理の結果をユーザに対して表示する(ステップS407)。
 具体的には、ブラウザ211は、平文データを含む処理結果を表示するための表示情報を生成し、当該表示情報に基づいて、図25に示すような患者情報表示画面2118を表示装置220に表示する。
 ここで、患者情報表示画面2118について説明する。患者情報表示画面2118は、ブラウザ211によって表示装置220に表示される。
 患者情報表示画面2118は、検索結果の一覧(P801)を含む。また、患者情報表示画面2118は、OKボタン(P802)を含む。
 図25に示す検索結果の一覧(P801)は、“患者”カラム、及び“名前”カラムを含むレコードを1つ含む。当該レコードは、患者番号が“0000002”、名前が“藤原太郎”という患者であることを示す。OKボタン(P802)は、表示の終了を指示するための操作ボタンである。
 以上が患者情報表示画面2118の説明である。また、以上が部分一致検索処理の流れの説明である。
 図26は、実施例2の部分一致検索クエリ生成部2162が実行する部分一致検索クエリ生成処理の一例を説明するフローチャートである。
 部分一致検索クエリ生成部2162は、検索語が入力された場合、以下で説明する部分一致検索クエリ生成処理を開始する。
 まず、部分一致検索クエリ生成部2162は、N-gram方式を用いて、検索語を分割する(ステップF301)。
 N=2のN-gram方式を用いた場合、検索語“藤原太”は、“藤原”及び“原太”の2つに分割される。
 次に、部分一致検索クエリ生成部2162は、分割された各値について、分割前の値の先頭からの分割位置を示すoffsetを割り当てる(ステップF302)。
 例えば、検索語が“藤原太”である場合、“藤原”にはoffset“0”が割り当てられ、“原太”にoffset“1”を割り当てられる。
 次に、部分一致検索クエリ生成部2162は、検索クエリを生成する(ステップF303)。
 具体的には、部分一致検索クエリ生成部2162は、鍵管理部215から鍵情報を取得し、分割された各値及び鍵情報を暗号化検索クエリ生成部214に送信する。暗号化検索クエリ生成部214は、鍵情報を用いて、分割された各値を暗号化することによって検索クエリを生成し、当該検索クエリを部分一致検索クエリ生成部2162に送信する。
 例えば、“藤原”及び“原太”から、“EncQuery(藤原)”及び“EncQuery(原太)”が生成される。
 次に、部分一致検索クエリ生成部2162は、部分一致検索クエリ情報2102を生成する(ステップF304)。
 具体的には、部分一致検索クエリ生成部2162は、分割された値、分割された値のoffset、及び分割された値の検索クエリを含むレコードを複数含む部分一致検索クエリ情報2102を生成する。
 例えば、検索語“藤原太”が入力された場合、以下の2つのレコードを含む部分一致検索クエリ情報2102が生成される。
       部分一致検索クエリ  offset
レコード1: EncQuery(藤原)    0
レコード2: EncQuery(原太)    1
 以上の処理によって、図15に示すような部分一致検索クエリ情報2102がメモリ210に格納される。
 図27は、実施例2の部分一致ID取得部4131が実行する部分一致ID取得処理の一例を説明するフローチャートである。
 部分一致ID取得部4131は、データベース側付加処理部413から読み出された場合、以下で説明する部分一致ID取得処理を実行する。なお、部分一致ID取得部4131には、暗号化部分情報4622の名称、LikeID情報_xxx4623の名称、及び部分一致検索クエリが入力される。
 まず、部分一致ID取得部4131は、現在の位置情報を示す変数offset_now、及びカウントを示す変数nに初期値として“0”を設定する(ステップF401)。
 次に、部分一致ID取得部4131は、対象の部分一致検索クエリを示す変数query_nowを設定する(ステップF402)。
 具体的には、部分一致ID取得部4131は、部分一致検索クエリ情報2102から、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリを検索する。部分一致ID取得部4131は、検索された部分一致検索クエリをquery_nowに設定する。
 例えば、offset_nowが“0”の場合、“offset”カラムが“0”であるレコードの部分一致検索クエリ“EncQuery(藤原)”が、query_nowに設定される。
 次に、部分一致ID取得部4131は、Position_Tableを生成する(ステップF403)。具体的には、以下のような処理が実行される。
 部分一致ID取得部4131は、暗号一致判定部412を呼び出し、暗号化部分情報4622から、“部分情報”カラムの値がquery_nowと一致するレコードを検索する。
 部分一致ID取得部4131は、検索されたレコードの“ID”カラムの値、及び“offset”カラムの値に“1”を加えた値を格納するカラムを含むレコードから構成されるPosition_Tableを生成する。部分一致ID取得部4131は、メモリ410にPosition_Table格納する。
 例えば、暗号化部分情報4622が図17に示す暗号化部分情報4622であり、かつ、query_nowが“EncQuery(藤原)”である場合、“ID”カラムの値が“2”であり、“offset”カラムの値に“1”を加えた値が“1”であるレコードを含むPosition_Tableが生成される。具体的には、Position_Tableは以下のようなレコードを含む。以上がステップF403の処理の説明である。
(Position_Table )
       ID  offset
レコード1: 2  1
 次に、部分一致ID取得部4131は、offset_nowを更新する(ステップF404)。
 具体的には、部分一致ID取得部4131は、現在のoffset_nowに“1”を加算する。
 次に、部分一致ID取得部4131は、部分一致検索クエリ情報2102に、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在するか否かを判定する(ステップF405)。
 具体的には、部分一致ID取得部4131は、部分一致検索クエリ情報2102を参照し、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在するか否かを判定する。
 “offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在すると判定された場合、部分一致ID取得部4131は、query_nowを更新する(ステップF406)。
 具体的には、部分一致ID取得部4131は、検索された部分一致検索クエリをquery_nowに設定する。例えば、更新前のquery_nowに“EncQuery(藤原)”が設定されている場合、ステップF404においてoffset_nowは“1”に更新される。したがって、query_nowには“EncQuery(原太)”が設定される。
 次に、部分一致ID取得部4131は、nを更新する(ステップF407)。
 具体的には、部分一致ID取得部4131は、現在のnに“1”を加算する。
 次に、部分一致ID取得部4131は、暗号化部分情報4622から条件に一致するレコードを検索する(ステップF408)。具体的には、以下のような処理が実行される。
 部分一致ID取得部4131は、暗号化部分情報4622の“ID”カラム及び“offset”カラムの値が、Position_Tableのn番目のレコードの“ID”カラム及び“offset”カラムの値と一致し、かつ、暗号化部分情報4622の“部分情報”カラムの値が、query_nowに一致するレコードを検索する。なお、暗号化部分情報4622の“部分情報”カラムの値とquery_nowとの間の一致判定は、暗号一致判定部412によって行われる。
 例えば、nが“1”である場合、Position_TableにはステップF403において例示したレコードが含まれる。この場合、部分一致ID取得部4131は、“ID”カラムの値が“2”、“offset”カラムの値が“1”であり、“名前_部分情報”カラムが“EncQuery(原太)”と一致するレコードを検索する。部分一致ID取得部4131は、以下のようなレコードを検索結果として取得する。以上がステップF408の処理の説明である。
(検索結果)
       名前_部分情報 ID offset
 レコード1: “Enc(原太)” 2 1
 次に、部分一致ID取得部4131は、検索結果に基づいて、条件に一致するレコードが存在するか否かを判定する(ステップF409)。
 条件に一致するレコードが存在すると判定された場合、部分一致ID取得部4131はPosition_Tableのn番目のレコードの“offset”カラムの値を“1”加算する(ステップF410)。その後、部分一致ID取得部4131は、ステップF412に進む。
 例えば、nが“1”である場合、ステップF403において例示したPosition_Tableの1番目のレコード1の“offset”カラムの値は“2”となる。
 条件に一致するレコードが存在しないと判定された場合、部分一致ID取得部4131は、Position_Tableのn番目のレコードを削除する(ステップF410)。その後、部分一致ID取得部4131は、ステップF412に進む。
 次に、部分一致ID取得部4131は、Position_Tableに(n+1)番目のレコードが存在するか否かを判定する(ステップF412)。
 Position_Tableに(n+1)番目のレコードが存在すると判定された場合、部分一致ID取得部4131は、ステップF407に戻り、同様の処理を実行する。
 Position_Tableに(n+1)番目のレコードが存在しないと判定された場合、部分一致ID取得部4131は、ステップF404に戻り、同様の処理を実行する。
 ステップF405において、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在しないと判定された場合、部分一致ID取得部4131は、LikeID情報_xxx4623を生成する(ステップF413)。その後、部分一致ID取得部4131は、部分一致ID取得処理を終了する。
 具体的には、部分一致ID取得部4131は、Position_Tableの“ID”カラムの値を重複排除し、ID群のみからなるLikeID情報_xxx4623を生成する。部分一致ID取得部4131は、生成されたLikeID情報_xxx4623をデータベース側付加情報群462に格納する。
 例えば、各ステップにおいて例示したレコードを処理した結果、以下のレコードを含む持つLikeID情報_xxx4623が生成される。
(LikeID情報_xxx)
       ID
レコード1: 2
 以上が部分一致検索処理の説明である。
 (2-4)実施例2の効果
 以上で説明したように、実施例2の秘匿化データベースシステム1では、暗号化結合情報4621及びSQL定義情報361に基づいて、名前の一部等の部分的な検索条件を受け付けた場合、暗号化された情報が復号されることなく、部分的に一致した情報を含む検索結果がユーザ端末2に送信される。したがって、データの秘匿性を維持しつつ、任意のテーブルのレコードに含まれるカラムと部分的に一致するレコードを取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
 実施例3の秘匿化データベースシステム1は、範囲検索処理及びソート処理を実現するための機能を提供する点が実施例1とは異なる。範囲検索処理は、指定された範囲に含まれるレコードを取得するための処理であり、ソート処理は任意の条件にしたがってレコードを並び替えるための処理である。以下、実施例1との差異を中心に、実施例3について説明する。
 (3-1)実施例3の計算機システムの構成
 実施例3の秘匿化データベースシステム1は、実施例1と同一の構成であるため説明を省略する。また、実施例3のユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4のハードウェア構成は実施例1の各ハードウェア構成と同一であるため説明を省略する。
 実施例3では、ソフトウェア構成及び各装置が保持する情報の内容が一部異なる。
 まず、ユーザ端末2のソフトウェア構成について説明する。実施例2のユーザ端末2のソフトウェア構成は、実施例1のユーザ端末2のソフトウェア構成と同一である。ただし、実施例2のユーザ側付加処理部216は、範囲検索処理及びソート処理を実現するための機能を有する点が実施例1とは異なる。
 図28は、実施例3のユーザ側付加処理部216の論理構成を示すブロック図である。
 ユーザ側付加処理部216は、対応範囲情報生成部2163、対応範囲ラベル情報生成部2164、範囲検索/ソートクエリ生成部2165、範囲外データ削除部2166、及び制限付きソート処理部2167を含む。
 対応範囲情報生成部2163は、平文データである範囲検索処理/ソート処理の対象カラムの情報を受け付け、対象カラムの値域を分割した複数の区分に範囲ラベルを割り当て、各区分の頻度を計測することによって対応範囲情報2621を生成し、対応範囲情報2621を出力する。
 対応範囲ラベル情報生成部2164は、対応範囲情報2621の名称及び対象のカラムの値の入力を受け付け、対応範囲情報2621からカラムの値に対応する範囲ラベルを取得し、取得した範囲ラベルを出力する。
 範囲検索/ソートクエリ生成部2165は、平文データである範囲検索処理/ソート処理の条件の入力を受け付け、当該条件に対応する範囲ラベルの検索クエリを出力する。
 範囲外データ削除部2166は、範囲検索処理/ソート処理の処理結果から、範囲検索処理/ソート処理の条件に該当しないレコードを削除し、当該条件に該当するレコードのみを出力する。
 制限付きソート処理部2167は、範囲検索処理/ソート処理の処理結果又は範囲外データ削除部2166によって処理された範囲検索処理/ソート処理の処理結果を入力として受け付け、指定された順番に並び替えられた所定の数のレコードを出力する。なお、出力されるレコードの数(Limit数)は、ユーザによって予め指定される。
 次に、アプリケーションサーバ3のソフトウェア構成について説明する。実施例3のアプリケーションサーバ3のソフトウェア構成は、実施例1のアプリケーションサーバ3のソフトウェア構成と同一である。
 実施例3では、アプリケーションサーバ3は、定義ID3611が“3”のSQL定義3613に基づいて、範囲検索処理/ソート処理を実現するSQLを生成する。ここで、定義ID3611が“3”のSQL定義3613は、以下のようなSQL(I)となる。
SQL(I)
 SELECT 患者番号、名前、年齢 FROM 範囲情報
 WHERE 暗号一致判定(年齢_範囲ラベル,EncQuery(300))=‘true’
 OR 暗号一致判定(年齢_範囲ラベル,EncQuery(400))=‘true’;
 SQL(I)は、暗号化対応範囲情報4624から、“年齢_範囲ラベル”カラムが検索クエリ“EncQuery(300)”、又は検索クエリ“EncQuery(400)”と一致するレコード群から“患者番号”カラム、“名前”カラム及び“年齢”カラムの値を読み出すことを意味する。
 次に、データベースサーバ4のソフトウェア構成について説明する。実施例3のデータベースサーバ4のソフトウェア構成は、実施例1のデータベースサーバ4のソフトウェア構成と同一である。
 次に、実施例3の各構成が有する情報について説明する。
 図29は、実施例3のユーザ側付加情報群262のデータ構造の一例を示す図である。
 実施例2のユーザ側付加情報群262は、対応範囲情報2621を含む。
 対応範囲情報2621は、“対応範囲”カラム、“範囲ラベル”カラム、及び“頻度”カラムを含むレコードを複数含む。
 “対応範囲”カラムは、範囲検索処理/ソート処理の対象となるカラムの値域が分割された区分である。本実施例では、年齢の範囲を指定した範囲検索処理を想定しているため、対応範囲情報2621には、“年齢_対応範囲”カラムが含まれる。
 “範囲ラベル”カラムは、区分に割り当てられる範囲ラベルである。“頻度”カラムは、“年齢_対応範囲”カラムに対応するカラムの値が区分に含まれるレコードの数である。
 例えば、対応範囲情報2621の一番上のレコードは、年齢が“0歳から9歳の区分”であり、範囲ラベルは“100”、レコードの“年齢”カラムの値が当該区分に含まれるレコードの数が“2”であることを示す。
 図30は、実施例3のメモリ210に一時的に格納されるデータのデータ構造の一例を示す図である。
 実施例3のメモリ210は、範囲検索クエリ情報2103を含む。
 範囲検索クエリ情報2103は、範囲検索処理/ソート処理の条件に基づいて生成された検索クエリを格納するレコードを複数含む。当該レコードは、“検索クエリ”カラムを含む。本実施例の検索クエリは、範囲検索処理において実行される暗号一致判定処理に用いられる。
 図30に示す範囲検索クエリ情報2103には、検索クエリ“EncQuery(300)”のレコード、及び検索クエリ“EncQuery(400)”のレコードが含まれる。
 図31は、実施例3の暗号化メイン情報群461のデータ構造の一例を示す図である。
 実施例3の暗号化メイン情報群461は、暗号化患者情報4614を含む。
 暗号化患者情報4614は、患者の一覧であり、“ID”カラム、“患者番号”カラム、“名前”カラム、及び“年齢”カラムを含むレコードを複数含む。
 “ID”カラム、“患者番号”カラム、及び“名前”カラムは、実施例1の暗号化患者情報4611のID”カラム、“患者番号”カラム、及び“名前”カラムと同一のものである。“年齢”カラムは、患者の年齢である。
 例えば、暗号化患者情報4614の一番上のレコードは、患者番号が“Enc(0000001)”である患者であり、名前が“Enc(鈴木)”、年齢が“Enc(4)”であることを示す。
 図32は、実施例3のデータベース側付加情報群462のデータ構造の一例を示す図である。
 実施例3のデータベース側付加情報群462は、範囲検索処理/ソート処理に使用する暗号化対応範囲情報4624を含む。
 暗号化対応範囲情報4624は、“ID”カラム、“患者番号”カラム、“名前”カラム、“年齢”カラム、及び“年齢_範囲ラベル”カラムを含むレコードを複数含む。
 “年齢_範囲ラベル”カラムは、暗号一致判定処理において検索クエリと比較される暗号化データである。例えば、暗号化対応範囲情報4624の一番上のレコードの“年齢_範囲ラベル”カラムには、 “4”歳を含む区分の範囲ラベル“100”が暗号化された“Enc(100)”が格納される。
 “ID”カラム、“患者番号”カラム、“名前”カラム、及び“年齢”カラムは、暗号化患者情報4614の“ID”カラム、“患者番号”カラム、“名前”カラム、及び“年齢”カラムに対応するカラムである。
 図33は、実施例3のメモリ410に一時的に格納される一時情報4103のデータ構造の一例を示す図である。
 一時情報4103は、SQL(I)の実行結果を格納する。具体的には、一時情報4103は、暗号化患者情報4614から、検索クエリに一致するレコードの“患者番号”カラム、“名前”カラム、及び“年齢”カラムの値を格納する。したがって、一時情報4103は、“患者番号”カラム、“名前”カラム、及び“年齢”カラムを含むレコードを1つ以上含む。
 図33に示す一時情報4103の一番上のレコードは、患者番号が“Enc(0000005)”であり、名前が“Enc(藤原)”であり、年齢が“Enc(23)”である患者のレコードであることを示す。
 (3-2)範囲検索処理/ソート処理の準備処理の詳細
 次に、図34、図35、図36、図37、及び図38を用いて、暗号化された情報に対する範囲検索処理/ソート処理に必要な設定を行うための範囲検索処理/ソート処理の準備処理の詳細を説明する。
 図34は、実施例3の範囲検索処理/ソート処理の準備処理の流れを説明するシーケンス図である。図35は、実施例3の範囲検索処理/ソート処理設定入力画面2119の一例を示す図である。図36は、実施例3の範囲検索処理/ソート処理設定結果表示画面2120の一例を示す図である。
 ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して範囲検索処理/ソート処理の準備処理を実行する。
 ステップS101からS105までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップの処理内容が一部異なる。
 実施例3のステップS101では、ユーザが入力する情報が実施例1と異なる。実施例3では、ユーザは、図35に示すような範囲検索処理/ソート処理設定入力画面2119を用いて、範囲検索処理/ソート処理の対象となる情報、カラム、値域、及び頻度平準化の基準値を入力する。
 ここで、範囲検索処理/ソート処理設定入力画面2119について説明する。範囲検索処理/ソート処理設定入力画面2119は、ブラウザ211によって表示装置220に表示される。
 範囲検索処理/ソート処理設定入力画面2119は、範囲検索処理及びソート処理に必要な情報を入力する複数の入力フォーム(P901)、(P902)、(P903)、(P904)、(P905)を含む。また、範囲検索処理/ソート処理設定入力画面2119は、OKボタン(P906)及びキャンセルボタン(P907)を含む。
 入力フォーム(P901)は、範囲検索処理/ソート処理の対象となる情報の名称を入力するための入力フォームである。入力フォーム(P902)は、範囲検索処理/ソート処理の対象となるカラムの名称を入力するための入力フォームである。
 入力フォーム(P903)は、対象のカラムの値域の下限値を入力する入力フォームであり、入力フォーム(P904)は、対象のカラムの値域の上限値を入力する入力フォームである。入力フォーム(P905)は、各区分に含まれるレコードの数を平準化するための基準値を入力するための入力フォームである。
 OKボタン(P906)は、各入力フォームに入力した値を確定するための操作ボタンである。キャンセルボタン(P907)は、各入力フォームに入力した値の確定をキャンセルするための操作ボタンである。
 図35では、範囲検索処理/ソート処理の対象となる情報及びカラムとして“暗号化患者情報”及び“年齢”が入力され、値域が“0”から“200”と入力され、頻度平準化基準値が“2”と入力される。
 以上が範囲検索処理/ソート処理設定入力画面2119の説明である。図34の説明に戻る。
 実施例3のステップS102では、結合対象カラム決定処理は実行されない。
 実施例3のステップS103では、SQL生成部312は、範囲検索処理/ソート処理設定入力画面2119に入力された値に基づいて、データの取得要求に含まれる対象のカラムの値を読み出すためのSQLを生成する。
 実施例3のステップS104及びステップS105の処理の内容は、実施例1と同一である。ステップS105の処理が完了した時点では、メモリ210には、暗号化患者情報4614の“年齢”カラムの値が復号化された状態で格納される。
 ユーザ端末2は、ステップS105において復号化された平文データを用いて対応範囲情報2621を生成する(ステップS501)。
 具体的には、ユーザ側付加処理部216は、対応範囲情報生成部2163を呼び出す。このとき、ユーザ側付加処理部216は、対象のカラムの値、対象のカラムの値域、頻度平準化基準値を対応範囲情報生成部2163に入力する。対応範囲情報生成部2163は、入力された値に基づいて対応範囲情報生成処理を実行する。これによって、図29に示す対応範囲情報2621が生成される。対応範囲情報生成処理の詳細は、図37を用いて説明する。
 次に、ユーザ端末2は、対応範囲情報2621を暗号化する(ステップS502)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、対応範囲情報2621及び鍵情報を暗号化部212に送信する。暗号化部212は、鍵情報を用いて対応範囲情報2621を暗号化し、暗号化された対応範囲情報2621をユーザ側付加処理部216に送信する。ユーザ側付加処理部216は、暗号化された対応範囲情報2621を生成するための生成命令を生成する。
 次に、ユーザ端末2は、対応範囲ラベルを生成する(ステップS503)。
 具体的には、ユーザ側付加処理部216は、対応範囲ラベル情報生成部2164を呼び出す。このとき、ユーザ側付加処理部216は、対象のカラムの平文データ及び暗号化前の対応範囲情報2621の名称を入力する。対応範囲ラベル情報生成部2164は、入力された値に基づいて対応範囲ラベル情報生成処理を実行する。これによって、対象カラムの各区分に対応する範囲ラベルが生成される。対応範囲ラベル情報生成処理の詳細は、図38を用いて説明する。
 次に、ユーザ端末2は、暗号化対応範囲情報4624を生成するための生成命令を生成する(ステップS504)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、ステップS503において生成された範囲ラベル及び鍵情報を暗号化検索クエリ生成部214に入力する。暗号化検索クエリ生成部214は、範囲ラベルの検索クエリを生成し、ユーザ側付加処理部216に生成された検索クエリを送信する。
 ユーザ側付加処理部216は、暗号化された対応範囲情報2621に検索クエリのカラムを追加するための追加命令を生成する。
 ユーザ側付加処理部216は、暗号化された対応範囲情報2621の情報、情報暗号化された対応範囲情報2621の生成命令、範囲ラベルの検索クエリ、及び“検索クエリ”カラムの追加命令を含む生成命令を生成する。ユーザ側付加処理部216は、生成された生成命令をアプリケーションサーバ3に送信する。以上がステップS504の処理の説明である。
 ステップS504の処理の後、ステップS108からステップS110までの処理が実行される。ステップS108からステップS110までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップにおける処理内容が一部異なる。
 実施例3のステップS108では、SQL生成部312は、生成命令に含まれる各情報を用いて、暗号化対応範囲情報4624を生成するためのSQLを生成する。
 実施例3のステップS109では、データベース制御部411は、受信したSQLを実行することによってデータベース側付加情報群462に暗号化対応範囲情報4624を生成する。
 実施例3のステップS110では、ブラウザ211は、結果表示情報に基づいて、図36に示すような範囲検索処理/ソート処理設定結果表示画面2120を表示装置220に表示する。
 ここで、範囲検索処理/ソート処理設定結果表示画面2120について説明する。範囲検索処理/ソート処理設定結果表示画面2120は、ブラウザ211によって表示装置220に表示される。
 範囲検索処理/ソート処理設定結果表示画面2120は、範囲検索処理/ソート処理設定入力画面2119に入力された情報、及びSQLの実行結果を示す表示フォーム(P1001)、(P1002)、(P1003)、(P1004)、(P1005)、(P1006)を含む。また、範囲検索処理/ソート処理設定結果表示画面2120は、OKボタン(P1007)を含む。
 表示フォーム(P1001)は、範囲検索処理/ソート処理設定入力画面2119に入力された対象の情報の名称を表示する表示フォームである。表示フォーム(P1002)は、範囲検索処理/ソート処理設定入力画面2119に入力された対象のカラムの名称を表示する表示フォームである。
 表示フォーム(P1003)は、対応範囲情報2621の名称を表示する表示フォームである。表示フォーム(P1004)は、暗号化対応範囲情報4624の名称を表示する表示フォームである。表示フォーム(P1005)は、検索クエリとして追加された対応範囲情報2621のカラムの名称を表示する表示フォームである。
 表示フォーム(P1006)は、暗号化対応範囲情報4624の生成結果を表示する表示フォームである。表示フォーム(P1006)には、“成功”又は“失敗”のいずれかが表示される。
 OKボタン(P1007)は、表示の終了を指示するための操作ボタンである。
 以上が範囲検索処理/ソート処理設定結果表示画面2120の説明である。図34の説明に戻る。
 ユーザ端末2は、必要に応じて処理結果をユーザ側付加情報群262に格納してもよいし、また、アプリケーションサーバ3又はデータベースサーバ4に送信してもよい。なお、当該処理結果には、暗号化対応範囲情報4624と対応範囲情報2621との対応関係等が含まれる。以上が範囲検索処理/ソート処理の準備処理の流れの説明である。
 図37は、実施例3の対応範囲情報生成部2163が実行する対応範囲情報生成処理を説明するフローチャートである。
 対応範囲情報生成部2163は、ユーザ側付加処理部216から呼び出された場合、以下で説明する対応範囲情報生成処理を開始する。なお、対応範囲情報生成部2163には、対象のカラムの値、対象のカラムの値域、及び頻度平準化基準値が入力される。
 まず、対応範囲情報生成部2163は、対象のカラムの値毎の頻度(レコードの数)を算出する(ステップF501)。
 次に、対応範囲情報生成部2163は、対象のカラムの値域を複数の区分に分割し、各区分に範囲ラベルを割り当てる(ステップF502)。このとき、対応範囲情報生成部2163は、各区分に含まれる値域の頻度の合計値が頻度平準化基準値を超えないように値域を複数の区分に分割する。
 次に、対応範囲情報生成部2163は、対応範囲情報2621を生成する(ステップF503)。その後、対応範囲情報生成部2163は、処理を終了する。
 具体的には、対応範囲情報生成部2163は、“対応範囲”カラム、“範囲ラベル”カラム、及び“頻度”カラムを含むレコードを登録することによって対応範囲情報生成部2163を生成する。また、対応範囲情報生成部2163は、生成された対応範囲情報2621をユーザ側付加情報群262に格納する。
 例えば、図35に示すような値が入力された場合、対応範囲情報生成部2163は、図29に示すような対応範囲情報2621を生成する。
 図38は、実施例3の対応範囲ラベル情報生成部2164が実行する対応範囲ラベル情報生成処理を説明するフローチャートである。
 対応範囲ラベル情報生成部2164は、ユーザ側付加処理部216から呼び出された場合、以下で説明する対応範囲ラベル情報生成処理を実行する。なお、対応範囲ラベル情報生成部2164には、対象のカラムの平文データ及び暗号化前の対応範囲情報2621の名称が入力される。
 まず、対応範囲ラベル情報生成部2164は、対象のカラムの値を1つ読出し、当該値をXと設定する(ステップF601)。
 次に、対応範囲ラベル情報生成部2164は、Xが含まれる区分の範囲ラベルを特定する(ステップF602)。
 具体的には、対応範囲ラベル情報生成部2164は、ユーザ側付加処理部216から入力された対応範囲情報2621の名称に基づいて、対応範囲情報2621の“対応範囲”カラムを参照し、Xを含む区分に対応するレコードを特定する。対応範囲ラベル情報生成部2164は、特定されたレコードの“範囲ラベル”カラムから値を読出し、当該値をYと設定する。
 次に、対応範囲ラベル情報生成部2164は、X及びYを含むレコードを対応範囲ラベル情報に追加する(ステップF603)。ここで、対応範囲ラベル情報は、対象のカラムが含まれる範囲ラベルのリストであり、一時的にメモリ210に格納される。
 次に、対応範囲ラベル情報生成部2164は、全ての対象のカラムの値について処理が完了したか否かを判定する(ステップF604)。
 全ての対象のカラムの値について処理が完了していないと判定された場合、対応範囲ラベル情報生成部2164は、ステップF601に戻り、同様の処理を実行する。
 全ての対象のカラムの値について処理が完了したと判定された場合、対応範囲ラベル情報生成部2164は、対応範囲ラベル情報生成処理を終了する。
 以上が範囲検索処理/ソート処理の準備処理の説明である。
 (3-3)範囲検索/ソート処理の詳細
 次に、図39、図40、図41、図42、及び図43を用いて、範囲検索処理/ソート処理の詳細を説明する。
 図39は、実施例3の範囲検索処理/ソート処理の流れを示すシーケンス図である。図40は、実施例3の患者情報取得画面2121の一例を示す図である。図41は、実施例3の患者情報表示画面2122の一例を示す図である。
 ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して範囲検索処理/ソート処理を実行する。範囲検索処理/ソート処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
 まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS601)。
 例えば、ユーザは、図40に示すような患者情報取得画面2121を用いて、対象のカラムの値の検索範囲、一画面に表示されるレコードの数(Limit数)、及び表示されるレコードの表示順番等を入力する。機微な情報を保存した医師が、任意の年齢層に含まれる患者のレコードを一画面中に、年齢の昇順に所定の数だけ表示する場合、ユーザ端末2を操作することが想定される。
 ここで、患者情報取得画面2121について説明する。患者情報取得画面2121は、ブラウザ211によって表示装置220に表示される。
 患者情報取得画面2121は、検索条件を入力するための複数の入力フォーム(P1101)、(P1102)、(P1103)、(P1104)、(P1105)、及び複数のラジオボタン(P1106)、(P1107)を含む。また、患者情報取得画面2121は、OKボタン(P1108)及びキャンセルボタン(P1109)を含む。
 入力フォーム(P1101)は、範囲検索処理の対象となる情報を入力するための入力フォームである。入力フォーム(P1102)は、範囲の下限値を入力するための入力フォームである。入力フォーム(P1103)は、範囲の上限値を入力するための入力フォームである。
 入力フォーム(P1104)は、一画面に表示するレコードの数を入力するための入力フォームである。
 入力フォーム(P1105)は、レコードのソート処理の対象のカラムを入力するための入力フォームである。ラジオボタン(P1106)は、入力フォーム(P1105)に入力されたカラムの値の昇順にレコードを並び替えるソート処理を選択するためのラジオボタンである。ラジオボタン(P1106)は、入力フォーム(P1105)に入力されたカラムの値の降順にレコードを並び替えるソート処理を選択するためのラジオボタンである。
 OKボタン(P1108)は、入力を確定するための操作ボタンである。キャンセルボタン(P1109)は、入力の確定をキャンセルするための操作ボタンである。
 ユーザが、入力フォーム(P1101)、(P1102)、(P1103)にのみ値を入力し、OKボタン(P1108)を押下した場合、検索された全てのレコードがランダムに配置された処理結果が出力される。また、ユーザが、入力フォーム(P1104)、(P1105)にのみ値を入力し、また、ラジオボタン(P1106)、(P1107)のいずれかを選択し、OKボタン(P1108)を押下した場合、全ての範囲から検索されたレコードのうち、所定の数のレコードが指定された順番に並び替えられた処理結果が出力される。
 以上が患者情報取得画面2121の説明である。図39の説明に戻る。
 次に、ユーザ端末2は、範囲ラベル候補情報を生成する(ステップS602)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、対応範囲情報2621の“対応範囲”カラムを参照し、患者情報取得画面2121を用いて指定された検索範囲と値の範囲が重複する区分群を特定する。
 ユーザ側付加処理部216は、対応範囲情報2621から、特定された区分群に含まれる区分に対応するレコードの“範囲ラベル”カラム及び“頻度”カラムの値を読み出す。さらに、ユーザ側付加処理部216は、“範囲ラベル”カラム及び“頻度”カラムの値を対応付けたレコードを、指定された表示順にしたがって範囲ラベル候補情報に追加する。
 なお、範囲ラベル候補情報は、メモリ210に一時的に格納される情報である。
 例えば、ユーザ側付加情報群262に図29に示す対応範囲情報2621が格納され、また、患者情報取得画面2121に図40に示すような値が入力された場合、“年齢対応範囲”カラムが“20-29”及び“30-39”の区分群が特定される。この場合、ユーザ側付加処理部216は、最初に、“300”及び“2”を対応付けたレコードを範囲ラベル候補情報に追加し、次に、“400”及び“2”を対応付けたレコードを範囲ラベル候補情報に追加する。以上がステップS602の処理の説明である。
 次に、ユーザ端末2は、変数として、T及び範囲ラベル_nowを設定する(ステップS603)。
 具体的には、ユーザ側付加処理部216が、T及び範囲ラベル_nowを設定する。Tは、一画面中に表示されるレコードの数を示す変数である。範囲ラベル_nowは、範囲ラベル候補情報の一番上のレコードに含まれる範囲ラベルの値を示す変数である。
 ステップS602において例示した範囲ラベル候補情報の場合、Tには“2”が設定され、範囲ラベル_nowには“300”が設定される。
 次に、ユーザ端末2は、データの取得要求を生成する(ステップS604)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、要求された情報を取得するために必要な操作の種別を特定する。ユーザ側付加処理部216は、対象の情報の名称を特定する。ユーザ側付加処理部216は、暗号一致判定処理に使用する検索クエリを格納する暗号化対応範囲情報4624を特定する。また、ユーザ側付加処理部216は、T及び範囲ラベル_now、並びに、範囲ラベル候補情報を範囲検索/ソートクエリ生成部2165に入力し、範囲検索/ソートクエリ生成処理の実行を指示する。
 範囲検索/ソートクエリ生成部2165は、範囲検索/ソートクエリ生成処理を実行することによって範囲検索クエリ情報2103を生成する。例えば、Tが“2”、範囲ラベル_nowが“300”であり、ステップS602において例示した範囲ラベル候補情報が入力された場合、図30に示す範囲検索クエリ情報2103が生成される。なお、範囲検索/ソートクエリ生成処理の詳細は、図42を用いて説明する。
 範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103をユーザ側付加処理部216に送信する。
 ユーザ側付加処理部216は、操作の種別、対象の情報の名称、暗号化対応範囲情報4624の識別情報、範囲検索クエリ情報2103、及び読出命令を含むデータの取得要求を生成し、アプリケーションサーバ3に送信する。以上がステップS604の処理の説明である。
 次に、アプリケーションサーバ3は、暗号化データに対する範囲検索処理を実行するためのSQLを生成する(ステップS605)。具体的には、以下のような処理が実行される。
 アプリケーション部311は、データの取得要求を受信した場合、データの取得要求をSQL生成部312に送信する。
 SQL生成部312は、SQL定義情報361を参照し、要求処理3612がデータの取得要求に含まれる操作の種別に一致するレコードを特定する。この場合、定義ID3611が“3”のレコードが特定される。
 SQL生成部312は、データの取得要求に含まれる範囲検索の対象となる情報の名称及び範囲検索クエリ情報2103、並びに特定されたレコードのSQL定義3613に基づいて、SQLを生成する。SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
 アプリケーション部311は、データベースインタフェース部313を介して、SQLをデータベースサーバ4に送信する。
 図40に示すような情報が入力された場合、SQL生成部312は以下のようなSQL(J)を生成する。
SQL(J)
 SELECT 患者番号, 名前, 年齢 FROM 暗号化対応範囲情報
 WHERE 暗号一致判定(年齢_範囲ラベル, EncQuery(300))=‘true’;
 SQL(J)は、暗号一致判定部412に処理の実行を指示することによって、暗号化対応範囲情報4624から、“年齢_範囲ラベル”カラムの値が検索クエリ“EncQuery(300)”に一致するレコードの“患者番号”カラム、“名前”カラム、及び“年齢”カラムの値を読み出すことを意味する。以上がステップS605の処理の説明である。
 次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLにしたがって、範囲検索処理を実行する(ステップS606)。
 具体的には、データベース制御部411は、受信したSQLを実行し、実行結果を一時情報4103としてメモリ410に格納する。データベース制御部411は、一時情報4103を含む実行結果をアプリケーションサーバ3に送信する。ここで、受信したSQLがSQL(J)である場合を例に説明する。
 データベース制御部411は、SQL(J)に基づいて、暗号一致判定部412を呼び出す。暗号一致判定部412は、検索クエリ及び暗号化対応範囲情報4624の“年齢_範囲ラベル”カラムの値の暗号一致判定を行い、判定結果をデータベース制御部411に出力する。
 データベース制御部411は、暗号一致判定部412から出力された判定結果に基づいて、範囲検索処理の条件に一致するレコードを特定する。データベース制御部411は、メモリ410に図33に示す一時情報4103を格納する。
 データベース制御部411は、一時情報4103を含む処理結果をアプリケーションサーバ3に送信する。以上がステップS606の処理の説明である。
 次に、ユーザ端末2は、処理結果を受信した場合、当該処理結果を復号化する(ステップS607)。
 具体的には、ユーザ側付加処理部216は、一時情報4103を含む処理結果を受信した場合、鍵管理部215から鍵情報を取得し、一時情報4103及び鍵情報を復号化部213に送信する。復号化部213は、鍵情報を用いて、一時情報4103に含まれるカラムの値を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。
 次に、ユーザ端末2は、結果表示処理を実行する(ステップS608)。
 結果表示処理では、ユーザ端末2は、処理結果からユーザに要求されたレコードのみを抽出し、また、抽出されたレコードを指定された順番に並び替える。ユーザ端末2のブラウザ211は、並び替えられたレコードを含む処理結果を表示するための表示情報を生成し、当該表示情報に基づいて、図41に示すような患者情報表示画面2122を表示装置220に表示する。なお、結果表示処理の詳細は、図43を用いて説明する。
 ここで、患者情報表示画面2122について説明する。患者情報表示画面2122は、ブラウザ211によって表示装置220に表示される。
 患者情報表示画面2122は、検索結果の一覧(P1201)及び操作領域(P1202)を含む。また、患者情報表示画面2122は、OKボタン(P1203)を含む。
 図41に示す検索結果の一覧(P1201)は、“患者番号”カラム、“名前”カラム、及び“年齢”カラムを含むレコードを複数含む。図41に示す検索結果の一覧(P1201)では、レコード年齢の昇順に並び替えられた2つのレコードが表示される。
 操作領域(P1202)は、まだ表示されていないレコードを表示するための操作領域である。OKボタン(P1203)は、表示の終了を指示するための操作ボタンである。
 以上が患者情報表示画面2122の説明である。また、以上が範囲検索処理/ソート処理の流れの説明である。
 図42は、実施例3の範囲検索/ソートクエリ生成部2165が実行する範囲検索/ソートクエリ生成処理を説明するフローチャートである。
 範囲検索/ソートクエリ生成部2165は、ユーザ側付加処理部216から呼び出される以下で説明する範囲検索/ソートクエリ生成処理を開始する。なお、範囲検索/ソートクエリ生成部2165には、T及び範囲ラベル_now、並びに、範囲ラベル候補情報が入力される。
 まず、範囲検索/ソートクエリ生成部2165は、変数として、N_now及び範囲ラベル_nextを初期化し、また、範囲検索クエリ情報2103を初期化する(ステップF701)。具体的には、以下のような処理が実行される。
 範囲検索/ソートクエリ生成部2165は、N_nowに“0”を設定する。また、範囲検索/ソートクエリ生成部2165は、範囲ラベル_now及び対応範囲情報2621を参照して、範囲ラベル_nowに設定された範囲ラベルの次の範囲ラベルが存在するか否かを判定する。範囲ラベル_nowに設定された範囲ラベルの次の範囲ラベルが存在する場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextに次の範囲ラベルを設定する。範囲ラベル_nowに設定された範囲ラベルの次の範囲ラベルが存在しない場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextに“NULL”を設定する。
 また、範囲検索/ソートクエリ生成部2165は、空の範囲検索クエリ情報2103を生成する。以上がステップF701の処理の説明である。
 次に、範囲検索/ソートクエリ生成部2165は、N_nowを更新する(ステップF702)。
 具体的には、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nowに対応する範囲ラベル候補情報のレコードの“頻度”カラムの値を、N_nowに加算する。
 次に、範囲検索/ソートクエリ生成部2165は、N_nowがT以上であるか否かを判定する(ステップF703)。
 N_nowがT以上であると判定された場合、範囲検索/ソートクエリ生成部2165は、ステップF710に進む。
 N_nowがTより小さいと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextが“NULL”であるか否かを判定する(ステップF704)。
 範囲ラベル_nextが“NULL”であると判定された場合、範囲検索/ソートクエリ生成部2165は、ステップF710に進む。
 範囲ラベル_nextが“NULL”ではないと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103に範囲ラベル_nowの値を登録する(ステップF705)。
 次に、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextの値を範囲ラベル_nowに設定する(ステップF706)。
 次に、範囲検索/ソートクエリ生成部2165は、範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されたか否かを判定する(ステップF707)。
 範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されていないと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextを更新する(ステップF708)。その後、範囲検索/ソートクエリ生成部2165は、ステップF702に戻り、同様の処理を実行する。
 具体的には、範囲検索/ソートクエリ生成部2165は、範囲ラベル候補情報の中か選択されていない範囲ラベルを選択し、選択された範囲ラベルを範囲ラベル_nextに設定する。例えば、範囲ラベル_nowの次のレコードを選択する方法が考えられる。
 範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextに“NULL”を設定する(ステップF709)。その後、範囲検索/ソートクエリ生成部2165は、ステップF702に戻り、同様の処理を実行する。
 ステップF703がYES又はステップF704がYESである場合、範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103に登録された各範囲ラベルの検索クエリを生成する(ステップF710)。その後、範囲検索/ソートクエリ生成部2165は、処理を終了する。具体的には、以下のような処理が実行される。
 範囲検索/ソートクエリ生成部2165は、鍵管理部215から鍵情報を取得し、範囲検索クエリ情報2103に登録された各範囲ラベル、及び鍵情報を暗号化検索クエリ生成部214に送信する。
 暗号化検索クエリ生成部214は、鍵情報を用いて、各範囲ラベルを暗号化することによって検索クエリを生成し、当該検索クエリを範囲検索/ソートクエリ生成部2165に送信する。
 範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103に登録される各範囲ラベルを、検索クエリに置換する。これによって、指定された表示件数以下のレコードを取得するための範囲検索クエリ情報2103が生成される。以上がステップF710の処理の説明である。
 図43は、実施例3のユーザ端末2が実行する結果表示処理の一例を説明するフローチャートである。
 まず、ユーザ側付加処理部216は、処理結果に含まれるレコードの中から、検索範囲外のレコードを削除する(ステップF801)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、範囲外データ削除部2166を呼び出す。このとき、ユーザ側付加処理部216は、復号化された平文データ(レコード群)、並びに、対象カラムの検索範囲を示す上限値及び下限値を入力する。
 範囲外データ削除部2166は、検索範囲に含まれないレコードを削除し、検索範囲内のレコードのみを含む処理結果をユーザ側付加処理部216に送信する。以上がステップF801の処理の説明である。
 次に、ユーザ側付加処理部216は、処理結果に含まれるレコードに対して制限付きのソート処理を実行する(ステップF802)。具体的には、以下のような処理が実行される。
 ユーザ側付加処理部216は、制限付きソート処理部2167を呼び出す。このとき、ユーザ側付加処理部216は、メモリ210に格納される処理結果、表示件数、及び表示順序を制限付きソート処理部2167に入力する。
 制限付きソート処理部2167は、表示順序にしたがって、処理結果に含まれるレコードを並び替える。制限付きソート処理部2167は、レコードが並び替えられた処理結果から表示数だけレコードを読み出し、読み出されたレコードをユーザ側付加処理部216に送信する。以上がステップF802の処理の説明である。
 次に、ユーザ側付加処理部216は、指定された表示件数分のレコードが読み出されたか否かを判定する(ステップF803)。
 指定された表示件数分のレコードが読み出されていないと判定された場合、ユーザ側付加処理部216は、変数Tを更新する(ステップF804)。その後、ユーザ側付加処理部216は、ステップS604に戻り、同様の処理を実行する。
 具体的には、ユーザ側付加処理部216は、指定された表示件数から読み出されたレコードの数を減算することによって算出された値をTに設定する。
 指定された表示件数分のレコードが読み出されたと判定された場合、ユーザ側付加処理部216は、処理結果を所定のデータ形式に整形することによって、結果表示情報を生成する(ステップF805)。
 次に、ユーザ側付加処理部216は、結果表示情報をブラウザ211に送信する(ステップF806)。ブラウザ211は、結果表示情報に基づいて、患者情報表示画面2122を表示装置220に表示する。
 次に、ユーザ側付加処理部216は、範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されたか否かを判定する(ステップF807)。
 範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されていないと判定された場合、ユーザ側付加処理部216は、ステップS603に戻り、同様の処理を実行する。
 範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されたと判定された場合、ユーザ側付加処理部216は、結果表示処理を終了する。
 以上が範囲検索/ソート処理の説明である。
 (3-4)実施例3の効果
 以上に説明したように、実施例3の秘匿化データベースシステム1では、対応範囲情報2621、暗号化対応範囲情報4626、及びSQL定義情報361に基づいて、任意のカラムの値の範囲を含む検索条件を受け付けた場合、暗号化された情報が復号化されることなく、指定された範囲に含まれる情報を含む検索結果がユーザ端末2に送信される。したがって、データの秘匿性を維持しつつ、任意のテーブルから指定された範囲に含まれるレコードを取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
 また、実施例3の秘匿化データベースシステム1では、対応範囲情報2621、暗号化対応範囲情報4626、及びSQL定義情報361に基づいて、所定数のレコードを処理結果がユーザ端末2に送信され、また、所定の順番に並び替えられたレコードが表示される。したがって、データの秘匿性を維持しつつ、所定のテーブルから、指定された順番にソートされた所定の数のレコードを取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
 なお、実施例1及び実施例2の秘匿化データベースシステム1にもソート処理を実現するための構成を追加してもよい。
 実施例1から実施例3で示したように、本発明の秘匿化データベースシステム1は、以下のような流れでデータ加工を伴うデータの取得要求の処理を実現する。
 ユーザ端末2は、平文データを含むデータの取得要求を受け付けた場合、ユーザ側付加情報群262を用いて暗号化データを含むデータの取得要求に変換する。また、ユーザ端末2は、ユーザ内部ネットワーク5及び外部ネットワークを介して、クラウド側のアプリケーションサーバ3に暗号化データを処理するための処理命令を送信する。
 アプリケーションサーバ3は、暗号化データを含むデータの取得要求をSQL定義情報361に基づいて、暗号化データに対する操作を含むSQLを生成し、データベースサーバ4に送信する。
 データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQL及びデータベース側付加情報群462に基づいて、暗号化データの取得処理を実行する。データベースサーバ4は、アプリケーションサーバ3を介して、取得された暗号化データを含む処理結果をユーザ端末2に送信する。
 ユーザ端末2は、暗号化データを含む処理結果を復号化し、所定の処理を実行することによって、所望する平文データを取得する。
 前述したようにクラウド上のアプリケーションサーバ3及びデータベースサーバ4には平文データが送信されないため、データの秘匿性を維持しつつ、ユーザ端末2は、結合情報取得処理の処理結果、部分一致検索の処理結果、範囲検索の処理結果、及びソート処理の処理結果を取得できる。
 実施例1から実施例3では、アプリケーションサーバ3及びデータベースサーバ4は、別々の装置であるが、1つの装置に機能をまとめてもよい。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
 また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるCPUが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
 また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java等の広範囲のプログラム又はスクリプト言語で実装できる。
 さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるCPUが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
 上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。

Claims (14)

  1.  確率的暗号化方式を用いて暗号化された暗号化データを一つ以上含む登録情報を記憶するデータベースサーバ、及び、前記データベースサーバから前記暗号化データを取得するためのデータの取得要求を送信する端末を含むデータベースシステムであって、
     前記確率的暗号化方式は、暗号化前のデータ値が、暗号化処理毎に異なるデータ値となるように前記暗号化データが生成される暗号化方式であり、
     前記端末は、
     ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがって前記データベースサーバに格納するデータを暗号化する暗号化部と、
     前記暗号化データを復号化する復号化部と、
     複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられる検索クエリが暗号化された暗号化検索クエリを生成する暗号化検索クエリ生成部と、
     平文の検索条件を暗号化し、暗号化された前記検索条件を含む前記データの取得要求を送信する付加処理部と、を有し、
     前記データベースサーバは、
     検索処理の種別毎に、前記データの取得要求を前記データベースサーバが処理するデータベース操作命令に変換するための定義パターンを格納するデータベース操作命令定義情報と、
     前記検索処理の種別毎の検索用付加情報と、を保持し、
     前記データベース操作命令定義情報に基づいて、前記端末から受信したデータ取得要求を変換することによって前記データベース操作命令を生成するデータベース操作命令生成部と、
     前記データベース操作命令及び前記検索用付加情報を用いて、要求された前記暗号化データを取得するデータベース制御部と、
     前記検索用付加情報を用いて、前記暗号化検索クエリと一致する前記暗号化データを判定する暗号一致判定部と、を有し、
     前記付加処理部は、前記検索用付加情報を用いた検索処理を行うためのデータの取得要求を生成し、
     前記データベース制御部は、
     前記データベース操作命令の実行時に、前記暗号一致判定部を呼び出し、
     前記暗号一致判定部の処理結果に基づいて、前記検索条件を満たす前記暗号化データを取得し、
     前記取得された暗号化データを含む処理結果を前記端末に送信し、
     前記復号化部は、前記処理結果に含まれる前記暗号化データを復号化することを特徴とするデータベースシステム。
  2.  請求項1に記載のデータベースシステムであって、
     前記検索用付加情報を用いた検索処理は、二つの結合対象の前記登録情報を結合した結合情報から前記暗号化データを取得する結合情報取得処理、前記登録情報から検索語と部分的に一致する前記暗号化データを取得する部分一致検索処理、及び任意の範囲に含まれる前記暗号化データを取得する範囲検索処理の少なくともいずれかであることを特徴とするデータベースシステム。
  3.  請求項2に記載のデータベースシステムであって、
     前記登録情報は、前記暗号化データを格納する一つ以上のカラムを含むレコードを一つ以上含み、
     前記結合情報取得処理は、前記結合情報に含まれるレコードから前記一つ以上の暗号化データを取得する処理であり、
     前記データベースサーバは、前記結合情報取得処理に用いる暗号化結合情報を前記検索用付加情報として保持し、
     前記暗号化結合情報は、前記二つの結合対象の登録情報から結合するレコードを特定するための前記暗号化検索クエリを含み、
     前記データベース操作命令生成部は、前記暗号化結合情報を参照し、前記暗号化検索クエリと一致する前記二つの結合対象の登録情報に含まれるレコードを結合するための第1データベース操作命令を生成することを特徴とするデータベースシステム。
  4.  請求項3に記載のデータベースシステムであって、
     前記付加処理部は、
     前記二つの結合対象の登録情報から、一つの前記登録情報を選択し、
     前記データベースサーバから、前記選択された登録情報の結合対象のカラムに格納される前記暗号化データを取得し、
     前記復号化部に前記暗号化データの復号化を指示し、
     前記暗号化検索クエリ生成部は、前記復号化されたデータから第1暗号化検索クエリを生成し、
     前記付加処理部は、
     前記選択された登録情報に、前記第1暗号化検索クエリを格納するカラムを追加することによって前記暗号化結合情報を生成するための第1生成要求を送信し、
     前記データベース操作命令生成部は、前記第1生成要求から第2データベース操作命令を生成し、
     前記データベース制御部は、前記第2データベース操作命令に基づいて、前記暗号化結合情報を生成することを特徴とするデータベースシステム。
  5.  請求項4に記載のデータベースシステムであって、
     前記付加処理部は、
     前記二つの結合対象の登録情報の各々の前記レコード数を取得し、
     前記レコード数が少ない前記登録情報を、前記第1暗号化検索クエリを格納するカラムを追加する前記登録情報として選択することを特徴とするデータベースシステム。
  6.  請求項2に記載のデータベースシステムであって、
     前記登録情報は、前記暗号化データを格納する一つ以上のカラムを含むレコードを一つ以上含み、
     前記部分一致検索処理は、前記登録情報から検索語に部分的に一致する暗号化データを格納するレコードを検索し、検索されたレコードから前記一つ以上の暗号化データを取得する処理であり、
     前記データベースサーバは、前記部分一致検索処理に用いる暗号化部分情報を前記検索用付加情報として保持し、
     前記暗号化部分情報は、検索対象の前記登録情報の対象のカラムに格納される前記暗号化データが暗号化される前の平文データが所定の粒度に分割した第1部分データを暗号化することによって生成された暗号化部分データ、及び前記暗号化データの識別情報を含み、
     前記付加処理部は、前記検索語を所定の粒度に分割することによって前記複数の第1部分データを生成し、
     前記暗号化検索クエリ生成部は、前記複数の第1部分データから複数の第2暗号化検索クエリを生成し、
     前記付加処理部は、前記複数の第2暗号化検索クエリを含む前記データの取得要求を送信し、
     前記データベース操作命令生成部は、前記複数の第2検索クエリの各々に一致する前記暗号化部分情報の前記暗号化部分データを含むレコードを検索するための第3データベース操作命令を生成することを特徴とするデータベースシステム。
  7.  請求項6に記載のデータベースシステムであって、
     前記第3データベース操作命令は、前記暗号化部分情報から前記第2検索クエリに一致するレコードを検索し、前記検索されたレコードに含まれる前記暗号化データの識別情報を取得するための第4データベース操作命令と、前記暗号化部分情報から検索されたレコードに含まれる前記暗号化データの識別情報に基づいて、前記検索対象の登録情報に含まれるレコードを検索するための第5データベース操作命令と、を含むことを特徴とするデータベースシステム。
  8.  請求項6に記載のデータベースシステムであって、
     前記付加処理部は、
     検索対象の前記登録情報から前記対象のカラムに格納される前記暗号化データを取得し、
     前記復号化部に前記暗号化データの復号化を指示し、
     前記復号化されたデータを所定の粒度の分割することによって複数の第2部分データを生成し、
     前記暗号化検索クエリ生成部は、前記複数の第2部分データから前記複数の第2暗号化検索クエリを生成し、
     前記複数の第2暗号化データの各々の識別情報と、前記複数の第2暗号化検索クエリとを対応付けて前記暗号化部分情報を生成するための第2生成要求を送信し、
     前記データベース操作命令生成部は、前記第2生成要求から第5データベース操作命令を生成し、
     前記データベース制御部は、前記第5データベース操作命令に基づいて、前記暗号化部分情報を生成することを特徴とするデータベースシステム。
  9.  請求項8に記載のデータベースシステムであって、
     前記付加処理部は、N-gram方式に基づいて、前記第1部分データ及び前記第2部分データを生成することを特徴とするデータベースシステム。
  10.  請求項2に記載のデータベースシステムであって、
     前記登録情報は、前記暗号化データを格納する一つ以上のカラムを含むレコードを一つ以上含み、
     前記範囲検索処理は、対象の登録情報から、対象のカラムに格納される前記暗号化データが指定された範囲に含まれるレコードを検索し、前記検索されたレコードから前記一つ以上の暗号化データを取得する処理であり、
     前記データベースサーバは、前記範囲検索処理に用いる暗号化対応範囲情報を保持し、
     前記端末は、第3暗号化検索クエリを生成するための対応範囲情報を保持し、
     前記暗号化対応範囲情報は、前記対象の登録情報に含まれるレコードの識別情報、及び、前記対象の登録情報に含まれるレコードの前記対象のカラムに含まれる前記暗号化データが含まれる範囲を識別するためのラベルが暗号化された暗号化ラベルを含み、
     前記対応範囲情報は、前記対象のカラムの値域を分割した区分及び前記ラベルを含み、
     前記付加処理部は、
     前記対応範囲情報を参照して、指定された範囲と重複する前記区分を特定し、
     前記特定された区分に対応する前記ラベルから前記第3暗号化検索クエリを生成し、
     前記第3暗号化検索クエリを含む前記データの取得要求を送信し、
     前記データベース操作命令生成部は、前記暗号化されたラベルが前記第3暗号化検索クエリに一致する前記暗号化対応範囲情報に含まれるレコードを検索するための第6データベース操作命令を生成することを特徴とするデータベースシステム。
  11.  請求項10に記載のデータベースシステムであって、
     前記対応範囲情報に含まれるレコードは、前記区分に含まれる値を有する前記対象の登録情報に含まれるレコードの数を示す頻度を含み、
     前記付加処理部は、前記対応範囲情報に含まれる前記レコードに含まれる前記頻度に基づいて、指定された数より出力されるレコードの数が小さくなるように所定の数の前記区分を特定することを特徴とするデータベースシステム。
  12.  請求項10に記載のデータベースシステムであって、
     前記付加処理部は、
     前記データベースサーバから取得したレコードの前記対象のカラムに格納される前記暗号化データの復号化を前記復号化部に命令し、
     前記復号化されたデータに基づいて、前記データベースサーバから取得したレコードから、指定された範囲に含まれないレコードを削除することを特徴とするデータベースシステム。
  13.  請求項2に記載のデータベースシステムであって、
     前記付加処理部は、前記データベースサーバから取得された前記暗号化データを所定の順番で並び替えることを特徴とするデータベースシステム。
  14.  確率的暗号化方式を用いて暗号化された暗号化データを一つ以上含む登録情報を記憶するデータベースサーバ、及び、前記データベースサーバから前記暗号化データを取得するためのデータの取得要求を送信する端末を含むデータベースシステムにおけるデータ検索方法であって、
     前記確率的暗号化方式は、暗号化前のデータ値が、暗号化処理毎に異なるデータ値となるように前記暗号化データが生成される暗号化方式であり、
     前記端末は、
     ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがって前記データベースサーバに格納するデータを暗号化する暗号化部と、
     前記暗号化データを復号化する復号化部と、
     複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられる検索クエリが暗号化された暗号化検索クエリを生成する暗号化検索クエリ生成部と、
     平文の検索条件を暗号化し、暗号化された前記検索条件を含む前記データの取得要求を送信する付加処理部と、を有し、
     前記データベースサーバは、
     検索処理の種別毎に、前記データの取得要求を前記データベースサーバが処理するデータベース操作命令に変換するための定義パターンを格納するデータベース操作命令定義情報と、
     前記検索処理の種別毎の検索用付加情報と、を保持し、
     前記データベース操作命令定義情報に基づいて、前記端末から受信したデータ取得要求を変換することによって前記データベース操作命令を生成するデータベース操作命令生成部と、
     前記データベース操作命令及び前記検索用付加情報を用いて、要求された前記暗号化データを取得するデータベース制御部と、
     前記検索用付加情報を用いて、前記暗号化検索クエリと一致する前記暗号化データを判定する暗号一致判定部と、を有し、
     前記データ検索方法は、
     前記付加処理部が、検索条件を受け付けるステップと、
     前記付加処理部が、前記検索条件に基づいて、前記検索用付加情報を用いた検索処理を行うためのデータの取得要求を生成するステップと、
     前記付加処理部が、前記データの取得要求を前記データベースサーバに送信するステップと、
     前記データベース制御部が、前記データベース操作命令によって生成された前記データベース操作命令を実行する場合、前記暗号一致判定部を呼び出すステップと、
     前記データベース制御部が、前記暗号一致判定部の処理結果に基づいて、前記検索条件を満たす前記暗号化データを取得するステップと、
     前記データベース制御部が、前記取得された暗号化データを含む処理結果を前記端末に送信するステップと、
     前記復号化部が、前記処理結果に含まれる前記暗号化データを復号化するステップと、
     前記付加処理部が、前記復号化されたデータを提示するための表示情報を生成するステップと、を含むことを特徴とするデータ検索方法。
PCT/JP2016/059994 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法 WO2017168535A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2016/059994 WO2017168535A1 (ja) 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法
EP16896755.2A EP3438846B1 (en) 2016-03-28 2016-03-28 Database system and data retrieval system
US16/080,286 US10789374B2 (en) 2016-03-28 2016-03-28 Database system and data retrieval method
JP2018507857A JP6589051B2 (ja) 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/059994 WO2017168535A1 (ja) 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法

Publications (1)

Publication Number Publication Date
WO2017168535A1 true WO2017168535A1 (ja) 2017-10-05

Family

ID=59963753

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/059994 WO2017168535A1 (ja) 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法

Country Status (4)

Country Link
US (1) US10789374B2 (ja)
EP (1) EP3438846B1 (ja)
JP (1) JP6589051B2 (ja)
WO (1) WO2017168535A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712412A (zh) * 2018-05-15 2018-10-26 北京五八信息技术有限公司 一种数据库的加密、解密方法、装置、存储介质及终端
JP7381893B2 (ja) 2020-04-14 2023-11-16 富士通株式会社 検索方法、検索プログラム、および秘密情報検索システム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3244567A1 (en) * 2016-05-13 2017-11-15 ABB Schweiz AG Encryption for low-end devices through random number generation offloading
JP2018032149A (ja) * 2016-08-23 2018-03-01 株式会社リコー 情報処理装置、情報処理システム、情報処理方法およびプログラム
WO2018110608A1 (ja) * 2016-12-15 2018-06-21 日本電気株式会社 照合システム、方法、装置及びプログラム
US10528557B1 (en) * 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
US10528556B1 (en) * 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
CN110008283B (zh) * 2019-03-12 2023-09-05 山西数字政府建设运营有限公司 一种基于数据标签的数据处理方法及装置
US11204933B2 (en) * 2019-05-23 2021-12-21 Advanced New Technologies Co., Ltd. Data manipulation record storage method, system, apparatus, and device
JP7249248B2 (ja) 2019-08-30 2023-03-30 株式会社日立製作所 秘匿情報処理システム及び秘匿情報処理方法
CN111026798B (zh) * 2019-12-05 2023-07-14 江苏中车城市发展有限公司 一种机电设备数据库系统及其控制方法
CN111008236B (zh) * 2019-12-06 2023-05-02 支付宝(杭州)信息技术有限公司 一种数据查询的方法和系统
US11222134B2 (en) * 2020-03-04 2022-01-11 Sotero, Inc. System and methods for data encryption and application-agnostic querying of encrypted data
KR102361327B1 (ko) * 2020-05-29 2022-02-10 서울대학교산학협력단 쉘 정렬을 이용하여 동형 암호문에 대한 정렬을 수행하는 전자 장치 및 그 동작 방법
CN112052246B (zh) * 2020-09-29 2023-11-24 泰康保险集团股份有限公司 医疗数据处理设备及医疗数据处理方法
CN115208630B (zh) * 2022-06-15 2024-04-09 网易(杭州)网络有限公司 基于区块链的数据获取方法、系统及区块链系统
US11977657B1 (en) * 2023-02-22 2024-05-07 Lorica Cybersecurity Inc. Method and system for confidential repository searching and retrieval

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011198079A (ja) * 2010-03-19 2011-10-06 Hitachi Solutions Ltd データベース暗号化システム及び方法
JP2012123614A (ja) * 2010-12-08 2012-06-28 Hitachi Ltd 検索可能暗号処理システム
WO2015063905A1 (ja) * 2013-10-31 2015-05-07 株式会社日立製作所 データ分析システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002108910A (ja) 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
JP5307199B2 (ja) 2011-07-15 2013-10-02 株式会社エアー データ管理システム及びデータ管理方法
EP2778951B1 (en) 2011-11-11 2017-04-26 NEC Corporation Database encryption system, method and program
US9087212B2 (en) * 2012-01-25 2015-07-21 Massachusetts Institute Of Technology Methods and apparatus for securing a database

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011198079A (ja) * 2010-03-19 2011-10-06 Hitachi Solutions Ltd データベース暗号化システム及び方法
JP2012123614A (ja) * 2010-12-08 2012-06-28 Hitachi Ltd 検索可能暗号処理システム
WO2015063905A1 (ja) * 2013-10-31 2015-05-07 株式会社日立製作所 データ分析システム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Hitoku Keisan System Data o Angoka shitamama Shori Kano ni shite, RDB kara no Joho Roei o Boshi suru", BUSINESS COMMUNICATION, vol. 51, no. 3, 1 March 2014 (2014-03-01), pages 82 - 83, XP009511771, ISSN: 0385-695X *
KOJI CHIDA ET AL.: "Big Data Katsuyo e Kagi o Nigiru Himitsu Keisan", NIKKEI ELECTRONICS, vol. 1137, 23 June 2014 (2014-06-23), pages 47 - 54, XP009511599, ISSN: 0385-1680 *
NORI MATSUDA ET AL.: "Kensaku Kano Ango no Kosokuka to Web Application eno Tekiyo Hoshiki ni Kansuru Teian'', Symposium on Multimedia, Distributed, Cooperative and Mobile Systems (DICOM02013) Ronbunshu", IPSJ SYMPOSIUM SERIES, vol. 2013, no. 2, 22 July 2013 (2013-07-22), pages 2067 - 2074, XP009511604 *
See also references of EP3438846A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712412A (zh) * 2018-05-15 2018-10-26 北京五八信息技术有限公司 一种数据库的加密、解密方法、装置、存储介质及终端
JP7381893B2 (ja) 2020-04-14 2023-11-16 富士通株式会社 検索方法、検索プログラム、および秘密情報検索システム

Also Published As

Publication number Publication date
JPWO2017168535A1 (ja) 2018-12-13
EP3438846A4 (en) 2019-12-11
EP3438846B1 (en) 2022-07-20
US10789374B2 (en) 2020-09-29
US20190034646A1 (en) 2019-01-31
EP3438846A1 (en) 2019-02-06
JP6589051B2 (ja) 2019-10-09

Similar Documents

Publication Publication Date Title
JP6589051B2 (ja) データベースシステム及びデータ検索方法
JP4810611B2 (ja) 暗号化されたデータの検索
JP4958246B2 (ja) 高速検索可能な暗号化のための方法、装置およびシステム
JP6048414B2 (ja) データベース装置と方法及びプログラム
EP2778951B1 (en) Database encryption system, method and program
US8406422B2 (en) Cryptographic module management apparatus, method, and program
US10664610B2 (en) Method and system for range search on encrypted data
JP2008259139A (ja) 鍵管理システム及び鍵管理方法
JP5140026B2 (ja) データベース処理方法、データベース処理プログラム、および、暗号化装置
KR20180130249A (ko) 클라우드 저장 기반 암호화 시스템 및 방법
US8638938B2 (en) Symmetric key subscription
US11410173B1 (en) Tokenization web services
JP5307199B2 (ja) データ管理システム及びデータ管理方法
JP2006189925A (ja) 個人情報管理システム、個人情報管理プログラムおよび個人情報保護方法
JP5586397B2 (ja) セキュア・ネットワーク・ストレージ・システム、方法、クライアント装置、サーバ装置、及びプログラム
US11755767B2 (en) Systems and methods of multi-key encryption for multi-tenant database
JPH11331145A (ja) 情報共有システム、情報保管装置およびそれらの情報処理方法、並びに記録媒体
US20200210595A1 (en) CryptoJSON Indexed Search Systems and Methods
JP5543821B2 (ja) 暗号化装置、復号化装置、および経路探索システム
JP2007072661A (ja) 識別情報生成管理装置およびシステムならびにプログラム
JP5969681B1 (ja) 秘密情報管理システム
JP2019198052A (ja) 鍵生成システム
JP7325872B1 (ja) 秘匿計算システム、情報処理装置、コンピュータープログラムおよびアクセス権管理方法
JP5344166B2 (ja) 文書管理システム、文書管理方法、及びプログラム
JP2005196620A (ja) 文書保護管理システムおよび方法

Legal Events

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

Ref document number: 2018507857

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2016896755

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2016896755

Country of ref document: EP

Effective date: 20181029

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

Ref document number: 16896755

Country of ref document: EP

Kind code of ref document: A1