WO2016072022A1 - 暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機 - Google Patents

暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機 Download PDF

Info

Publication number
WO2016072022A1
WO2016072022A1 PCT/JP2014/079615 JP2014079615W WO2016072022A1 WO 2016072022 A1 WO2016072022 A1 WO 2016072022A1 JP 2014079615 W JP2014079615 W JP 2014079615W WO 2016072022 A1 WO2016072022 A1 WO 2016072022A1
Authority
WO
WIPO (PCT)
Prior art keywords
graph
encrypted
encryption
query
search
Prior art date
Application number
PCT/JP2014/079615
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 US15/524,145 priority Critical patent/US20170322977A1/en
Priority to EP14905559.2A priority patent/EP3217293B1/en
Priority to PCT/JP2014/079615 priority patent/WO2016072022A1/ja
Publication of WO2016072022A1 publication Critical patent/WO2016072022A1/ja

Links

Images

Classifications

    • 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
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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
    • 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
    • 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

Definitions

  • the present invention relates to a technique for performing a search in an encrypted state without decrypting the encrypted graph structure data.
  • ADVANCED ENCRYPTION STANDARD [online], November 26, 2001, Federal Information Processing Standards Publication 197, [October 2, 2014 search], Internet ⁇ http://csrc.nist.gov/publications/ fips / fips197 / fips-197.pdf> Secure Hash Standard (SHS), [online], March 2012, FEDERAL INFORMATION, PROCESSING, STANDARDS, PUBLICATION, 180-4, [October 2, 2014 search], Internet ⁇ http://csrc.nist.gov/publications/ fips / fips180-4 / fips-180-4.pdf>
  • Patent Document 1 Since only encrypted data is sent to the cloud side and plain text data is not shown, the above-mentioned privacy problems can be solved.
  • Patent Document 1 a method is shown in which each cell of table-type data is encrypted, and a search is performed with each cell still encrypted.
  • Retrieval that includes traversing processing specific to the graph structure, such as searching for a route between a specific node (start point) and another node (end point) as described above, and the data to be encrypted is data having a graph structure.
  • an encrypted query for searching for an intermediate node existing on the route is required.
  • an object of the present invention is to reduce the load required for search processing of data having an encrypted graph structure.
  • a first computer including a processor and a memory generates an encryption graph by encrypting a graph including a start point, an edge, and an end point
  • the encryption graph is generated by a second computer including the processor and the memory.
  • the second computer receives the encrypted graph search query, and receives the encrypted graph search query and the encrypted graph data as inputs, and the searchable cryptographic manager.
  • FIG. 6 is a first half of a flowchart illustrating an example of search processing for encrypted graph data according to the first embodiment of this invention. It is a latter half part of the flowchart which shows a 1st Example of this invention and shows an example of the search process of encryption graph data. It is a figure which shows a prior art example and shows an example of the graph encrypted with the searchable encryption. It is a figure which shows a prior art example and shows an example of the graph after performing a search.
  • a search accompanied by a graph traversal process is shown for graph data encrypted with searchable encryption.
  • a graph traversal process a process in which the user terminal inquires of the database server whether or not a path having a length n or less starting from a specific vertex node and ending with another vertex node exists in the graph data. Illustrate. It is assumed that the maximum value (or threshold value) n of the route length to be searched is set in advance.
  • Graph data traversal processing searches graph data for a specific vertex node, further searches for nodes adjacent to that vertex node, and further nodes adjacent to that adjacent node This is a process of repeatedly searching for an adjacent node of a specific node and its adjacent nodes.
  • Searchable Cryptographic Algorithm is an ordinary probabilistic encryption and common key encryption (searchable encryption) function that performs decryption. This is a generic term for ciphers that can be used to determine whether plaintext matches (hereinafter referred to as matching processing) without decryption while encrypted. Generation of an encrypted search query used for encryption, decryption, and search can be executed only by an entity having a secret key (a user terminal in this embodiment).
  • the matching process between the ciphertext and the encrypted query can be performed by an entity having a search key (in this embodiment, a database server).
  • the searchable cryptographic algorithm includes a set of the following four functions [searchable cryptographic secret key generation function, searchable cryptographic encryption function, searchable cryptographic query function, searchable cryptographic matching function]. Is done.
  • Searchable cryptographic secret key generation function (secret key generation function) A secret key generation algorithm defined by a searchable encryption algorithm. Hereinafter, it is referred to as secret key generation processing.
  • a security parameter and a key seed are used as function inputs, and a binary string having a specific bit length corresponding to a secret key used as a function input in the following (2) and (3) and a search key used as a function input in (4) is output. To do.
  • Searchable cryptographic encryption function (encryption function) A probabilistic encryption algorithm defined by a searchable encryption algorithm. Outputs ciphertext using plaintext and secret key as function inputs.
  • Searchable cryptographic query function This refers to a probabilistic query generation algorithm defined by a searchable cryptographic algorithm. Using plaintext query and secret key as function inputs, output encrypted query.
  • Searchable cryptographic matching function This refers to a matching algorithm between a ciphertext and an encrypted query specified by a searchable cryptographic algorithm. If the ciphertext argument, encrypted query argument, and search key are function inputs, if the plaintext for the ciphertext matches the plaintext for the encrypted query, [Cleartext Match] is output as the result, otherwise [Cleartext] [Mismatch] is output.
  • an encrypted graph and an encrypted query are input to the searchable cryptographic matching function as ciphertext, and the encrypted graph to which [plaintext match] is output becomes the search result of the encrypted query.
  • the searchable encryption algorithm that is, the searchable encryption secret key generation function, the searchable encryption encryption function, the searchable encryption query function, and the searchable encryption matching function are fixed to one and the description of the embodiment will be described.
  • a specific searchable encryption algorithm a publicly known or well-known technique as disclosed in Patent Document 1 may be used.
  • FIG. 1 is a block diagram showing an example of an encryption graph search system according to an embodiment of the present invention.
  • the encrypted graph search system is configured such that the user terminal 100 and the database server 200 can transmit and receive information to and from each other via the network 300.
  • FIG. 2A is a block diagram illustrating an example of the user terminal 100.
  • the user terminal 100 is a computer in which a CPU 101, an auxiliary storage device 102, a memory 103, a display device 105, an input / output interface 106, and a communication device 107 are connected by an internal signal line 104. is there.
  • the auxiliary storage device 102 stores a program code.
  • the program code is loaded into the memory 103 and executed by the CPU 101.
  • FIG. 2A shows a state in which each program code and data are loaded in the memory 103.
  • the memory 103 includes a secret key generation unit 110 that generates a secret key 150 and a search key 160, and an encrypted graph data generation unit 120 that encrypts plaintext (non-ciphertext) graph data 140 and generates encrypted graph data 400. Then, an encryption graph search query generation unit 130 that generates an encryption graph search query 500 for searching the encryption graph data 400 is stored.
  • the functional units of the secret key generation unit 110, the encrypted graph data generation unit 120, and the encrypted graph search query generation unit 130 are loaded into the memory 103 as program codes.
  • the CPU 101 operates as a functional unit that provides a predetermined function by performing processing according to the program of each functional unit.
  • the CPU 101 functions as the secret key generation unit 110 by performing processing according to the secret key generation program.
  • the CPU 101 also operates as a function unit that provides each function of a plurality of processes executed by each program.
  • a computer and a computer system are an apparatus and a system including these functional units.
  • Information such as programs and tables for realizing each functional unit of the user terminal 100 includes an auxiliary storage device 102, a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), an IC card, an SD card, It can be stored in a computer-readable non-transitory data storage medium such as a DVD.
  • auxiliary storage device 102 a nonvolatile semiconductor memory
  • a hard disk drive a storage device such as an SSD (Solid State Drive)
  • an IC card such as an SD card
  • It can be stored in a computer-readable non-transitory data storage medium such as a DVD.
  • the secret key generation unit 110 generates the secret key 150 and the search key 160 using the searchable cryptographic secret key generation function (1) above.
  • the encrypted graph data generation unit 120 generates the encrypted graph data 400 as a ciphertext from the secret key 150 and the plaintext graph data 140 using the searchable encryption function of (2) above.
  • the encryption graph search query generation unit 130 generates an encryption query from the secret key 150 and the plaintext graph using the searchable encryption query function of (3) above, and sets it in the encryption graph data 400 as described later. Further, the encrypted graph search query generation unit 130 transmits the searchable cryptographic matching function (4) and the search key 160 to the database server 200 in advance.
  • FIG. 2B is a block diagram illustrating an example of the database server 200.
  • the database server 200 is a computer in which a CPU 201, an auxiliary storage device 202, a memory 203, a display device 205, an input / output interface 206, and a communication device 207 are connected by an internal signal line 204. It is.
  • auxiliary storage device 202 stores a program.
  • the program is loaded into the memory 1032 and executed by the CPU 201.
  • the memory 203 stores a database management system (hereinafter referred to as DBMS) 300 including an encrypted graph search unit 310, encrypted graph data 400 distributed from the user terminal 100, a search key 160, and a searchable cryptographic matching function 170.
  • DBMS database management system
  • Each functional unit of the DBMS 300 is loaded into the memory 203 as a program. Similar to the user terminal 100, the CPU 201 operates as a functional unit that provides a predetermined function by processing according to the program of each functional unit.
  • the DBMS 300 receives an encrypted graph search query from the user terminal 100, the encrypted graph search unit 310 searches the encrypted graph data 400, and returns a search result to the user terminal 100.
  • FIG. 3 shows an example of graph data.
  • FIG. 4 is a diagram showing an example of plain text graph data.
  • the plain text graph data 140 of this embodiment is composed of directed graph data.
  • the plain text graph data 140 is represented by a table having fields of side number 141, start point 142, side 143, and end point 144 as shown in FIG.
  • all graphs are directed graphs having a direction from the start point 142 to the end point 144, and are simply referred to as graphs hereinafter.
  • the edge a has a vertex node A as a start point and B as an end point.
  • plain text graph data 140 is handled as a table type data format in which four data of a side number 141, a start point 142, a side 143, and an end point 144 are taken as one line.
  • FIG. 5 is a diagram showing an example of the encrypted graph data.
  • FIG. 5 is a data format example of the encrypted graph data 400 to which an encrypted graph obtained by encrypting the plain text graph data 140 of FIG. 4 and an encrypted query for searching the encrypted graph are added.
  • the encrypted graph data 400 includes the plaintext graph data 140 with the edge number 141 as the plaintext edge number 401, and the fields of the start point 142, the edge 143, and the end point 144 are encrypted using a searchable encryption function.
  • the encrypted encryption start point 402, encryption edge 403, and encryption end point 404 are set.
  • the encrypted graph data 400 includes an encrypted query start point 451, an encrypted query edge 452, an encrypted query obtained by performing an encryption query on the encrypted start point 402, edge 403, and end point 4004 fields using a searchable encryption query function.
  • This is a table type data format in which seven fields including the end point 453 are added as one line.
  • the encrypted graph data 400 is information in which encrypted graph data and an encrypted query for searching without encrypting the encrypted graph data are collected for each side.
  • the first line [1, A, a, B] of the plain text graph data in FIG. 4 is [1, Enc (A), Enc (a), Enc in the first line of the encrypted graph data 400 in FIG. (B), Query (A), Query (a), Query (B)].
  • Enc (A) is data obtained by encrypting plaintext A with a searchable encryption encryption function
  • Query (A) indicates data obtained by performing encryption query on plaintext A with a searchable encryption query function.
  • the encrypted graph data 400 includes an encrypted graph (402 to 404) obtained by encrypting the plain text graph data 140 and an encryption query (451 to 453) for searching the encrypted graph for each line. Is generated as
  • FIG. 6 shows an example of the data format of the encrypted graph search query data.
  • the encrypted graph search query 500 includes two data, a start point query 501 and an end point query 502.
  • This encrypted graph search query 500 shows an example in which the user terminal 100 inquires whether there is a path of length n or less starting from the vertex node A and ending at the vertex node D in the graph data.
  • the encrypted graph search query generation unit 130 inputs the data Query (A) obtained by performing the encryption query with the encryption query function that can search the plain text A from the query accepted by the user terminal 100, and the plain text D in the end point query area.
  • the data query (D) obtained by performing the encryption query with the searchable encryption query function is input, and the encrypted graph search query 500 is generated.
  • FIG. 7 is a sequence diagram showing an example of pre-save processing of the encryption graph. This sequence diagram shows the procedure of data transmission / reception and program processing in the pre-save processing of encrypted data between the user terminal 100 and the database server 200.
  • the secret key generation unit 110 of the user terminal 100 uses a searchable cryptographic secret key generation function set in advance, a secret key 150 used as an input of a searchable cryptographic encryption function and a searchable cryptographic query function, A search key 160 to be used as an input of a possible cryptographic matching function is generated (S100).
  • the secret key generation unit 110 is set with a searchable encryption secret key generation function, a searchable encryption encryption function, a searchable encryption query function, and a searchable encryption matching function as preset searchable encryption algorithms. .
  • the encryption graph data generation unit 120 of the user terminal 100 converts the plaintext graph data 140 held by itself into a searchable encryption encryption function according to the data format of the encryption graph data 400 shown in FIG. Encryption is performed using the secret key 150 generated in step S100, and an encryption graph from the encryption start point 402 to the encryption end point 404 is generated.
  • the encrypted graph data generation unit 120 encrypts a query for searching the plaintext graph data 140 using the searchable encryption query function and the secret key 150 generated in step S100, so that the encrypted query start point 451- An encrypted query including the encrypted query end point 453 is generated.
  • the encryption graph data generation unit 120 collects the encryption graph and the encryption query for each side of the plain text graph data 140 and generates the encryption graph data 400 (S200).
  • the user terminal 100 transmits the encrypted graph data 400 to the database server 200.
  • the user terminal 100 transmits the search key 160 generated in step S100 and the searchable cryptographic matching function 170 to the database server 200, and ends the pre-save process.
  • FIG. 8 is a sequence diagram showing an example of the encryption graph search process. This sequence diagram shows data transmission / reception and program processing in the encrypted graph search processing between the user terminal 100 and the database server 200.
  • the user terminal 100 accepts a search request from the user.
  • the encrypted graph search query generation unit 130 generates the encrypted graph search query 500 based on the received search request and the data format shown in FIG. 6 (S300).
  • the encrypted graph search query generation unit 130 when determining whether or not there is a path in the graph data 140 that has the vertex node A as the start point and the vertex node D as the end point, the encrypted graph search query generation unit 130, as shown in FIG.
  • Data Query (A) obtained by performing a cryptographic query on plaintext A using a searchable cryptographic query function is input to the start point query area
  • data Query (D) obtained by performing a cryptographic query on a plaintext D searchable using the cryptographic query function is input to the end point query area.
  • the user terminal 100 transmits the encrypted graph search query 500 generated in step S300 to the database server 200.
  • the DBMS 300 of the database server 200 inputs the received encrypted graph search query 500 to the encrypted graph search unit 310, executes an encrypted graph search process on the encrypted graph data 400, and generates a search result.
  • the encrypted graph search unit 310 generates a search result as an encrypted search processing result 600.
  • the DBMS 300 returns the encrypted search processing result 600 to the user terminal 100 (S400).
  • the DBMS 300 of the database server 200 searches the encrypted graph data 400 using the encrypted graph search query 500 received from the user terminal 100.
  • the encrypted graph search unit 310 of the DBMS 300 generates the encrypted search processing result 600 without decrypting the graph data 400 that matches the search condition, and responds to the user terminal 100.
  • FIGS. 9 and 10 are detailed flowcharts showing an example of the encryption graph search process (S400) in FIG.
  • FIG. 9 is the first half of a flowchart showing an example of search processing for encrypted graph data.
  • FIG. 10 is the latter half of the flowchart showing an example of the encryption graph data search process.
  • the database server 200 By executing the processing of FIG. 9 and FIG. 10, the database server 200 performs a traversing process on the encrypted graph data 400 and starts from the vertex node corresponding to the start point query 501 in the encrypted graph search query 500. It is possible to determine whether or not there is a path having a length n or less with the vertex node corresponding to the end point query 502 as an end point.
  • the DBMS 300 of the database server 200 that has received the encrypted graph search query 500 performs an internal variable memory area [pool: S1] for search processing for the longest path value n set in advance. [Pool: S2]... [Pool: Sn] memory area [Pool: Sn] is secured on the memory 203.
  • the DBMS 300 of the database server 200 initializes the memory area [pool: Sn].
  • the DBMS 300 of the database server 200 secures an internal variable memory area [search result: R] for storing the search result on the memory 203.
  • the encryption graph search unit 310 of the DBMS 300 sets the start point query 501 of the encryption graph search query 500 as the encryption query argument of the searchable encryption matching function 170. Further, the encryption graph search unit 310 sets each encryption data in the column of the encryption start point 402 of the encryption graph data 400 as a ciphertext argument of the searchable encryption matching function 170. Then, the encryption graph search unit 310 inputs the encryption query argument, the ciphertext argument, and the search key 160 to the searchable encryption matching function 170, and executes the matching process.
  • the encryption graph search unit 310 stores the side number of each line that has been matched in the internal variable memory area [internal pool: S1] (S402).
  • the encryption graph search unit 310 determines whether the edge number data is stored in the internal variable memory area [pool: S1] (S403). In other words, it is determined whether there is a matching start point in the encrypted graph data 400.
  • step S404 If the side number is not stored in the internal variable memory area [pool: S1], the process proceeds to step S404.
  • the search process (S400) ends.
  • step S405 the encrypted graph search unit 310 adds the encrypted graph data 400 to each [side number: t] stored in the internal variable memory areas [pool: S1] to [pool: Sn].
  • the encrypted data in the t-th row of the column of the encryption end point 404 is set as a ciphertext argument.
  • the encryption graph search unit 310 sets the end point query 502 of the encryption graph search query 500 as an encryption query argument.
  • the encryption graph search unit 310 inputs the ciphertext argument, the encryption query argument, and the search key 160 to the searchable encryption matching function 170, and the encryption end point 404 of each [side number: t] is encrypted.
  • a matching process is executed to determine whether the end point query 502 of the graph search query 500 matches.
  • step S408 the encrypted graph data 400 is searched for the encrypted edge 403 whose path length is n or less and whose starting point is the encrypted end point 404 of [side number: t].
  • the encryption graph search unit 310 increments the internal variable [path length: i] ⁇ i + 1 (S408).
  • the encryption graph search unit 310 performs the encryption query of the t-th row of the encryption graph data 400 for each [side number: t] stored in the internal variable memory area [pool: Si].
  • the end point 453 is set as an encryption query argument of the searchable encryption matching function 170.
  • the encryption graph search unit 310 sets each encryption data in the column of the encryption start point 402 of the encryption graph data 400 as a ciphertext argument of the searchable encryption matching function 170.
  • the encrypted graph search unit 310 inputs the ciphertext argument, the encrypted query argument, and the search key 160 to the searchable cryptographic matching function 170 and executes the matching process.
  • the encrypted graph search unit 310 stores the side number of each row hit by matching in the internal variable memory area [internal pool: S (i + 1)] (S409).
  • the encrypted graph search unit 310 determines whether or not the edge number is stored in the internal variable memory area [internal pool: S (i + 1)] (S410). When the edge number is stored in the internal variable memory area [internal pool: S (i + 1)], it is determined that the encrypted edge 403 starting from the encryption end point 404 of [side number: t] exists. The process proceeds to step S412.
  • step S412 the encryption graph search unit 310 performs the encryption end point of the encryption graph data 400 for each [side number: t] stored in the internal variable memory area [pool: S (i + 1)].
  • the encrypted data in the t-th row of the column 404 is set as a ciphertext argument.
  • the encryption graph search unit 310 sets the end point query 502 of the encryption graph search query 500 as an encryption query argument.
  • the encryption graph search unit 310 inputs the ciphertext argument, the encryption query argument, and the search key 160 to the searchable encryption matching function 170, and the encryption end point 404 of each [side number: t] is encrypted.
  • a matching process is executed to determine whether the end point query 502 of the graph search query 500 matches.
  • the encryption graph search unit 310 determines whether there is encrypted data hit in the matching process in step S412 (S413). If there is encrypted data hit by the matching process, the process proceeds to step S414. If there is no encrypted data hit, the process proceeds to step S415.
  • the database server 200 can reduce the load required for search processing of data having an encrypted graph structure. Further, the database server 200 determines whether or not there is a path having a length of n or less in the encrypted graph data 400 starting from the vertex node corresponding to the start point query 501 and having the vertex node corresponding to the end point query 502 as the end point. It becomes possible to do.
  • the user's computer (not shown) encrypts each cell in the table of FIG. 4 with searchable encryption and stores it in the cloud (not shown).
  • the user's computer issues a search command (query) that enumerates all the shortest paths connecting the vertex A and the vertex node D in FIG.
  • a search command query
  • the cloud includes a DBMS
  • FIG. 11 is a table 400A in which each cell in the table of FIG. 4 is encrypted with searchable encryption.
  • the table 400A includes an edge number 401A, an encrypted start point 402A, an encrypted edge 403A, and an encrypted end point 404A in one line.
  • the cloud When the user sends the encryption query Query1 of the searchable encryption of the vertex A and the searchable encryption query Query2 of the vertex node D to the cloud, the cloud sends Query1 and Query2 to the encrypted data of each cell.
  • the matching process is executed.
  • FIG. 12 is a table 400A obtained by decrypting each cell in the table of FIG. 11 with the encryption queries Query1 and 2.
  • the cloud obtains that the vertex of Query 1 and the vertex of Query 2 are not adjacent nodes.
  • the encrypted end node “dcd1ce1” in the first row and the fourth column ”Is once returned to the user's computer and the user's computer decrypts the encrypted data“ dcd1ce1 ”, and after obtaining the vertex B, generates the search query encryption 3 for the vertex B searchable encryption.
  • the user's computer returns Query 3 to the cloud, and the cloud executes a matching process with Query 3 on the encrypted data of each cell to obtain Query 1 ⁇ Query 3 ⁇ Query 2 which is one of the shortest paths.
  • the cloud returns, for example, the encrypted data “d26e5cd” in the second row and the fourth column to the user's computer, and after obtaining the encryption query Query4 of the vertex C, the same By performing the processing, another shortest path Query1 ⁇ Query4 ⁇ Query2 is obtained.
  • the graph structure is traversed (that is, a certain vertex node is searched, a node adjacent to the vertex node is further searched, and the adjacent node is further searched.
  • searching for nodes that are adjacent to each other such as a search process that repeatedly follows adjacent nodes
  • a large amount of data generation and transmission / reception processing is required between the cloud user and the cloud, causing a processing delay.
  • the graph data 400 of FIG. 4 in which the encryption graph and the encryption query are collected for each side is generated by the user terminal 100 and transmitted to the database server 200. Keep it.
  • the user terminal 100 searches, as shown in FIG. 8, it is only necessary to transmit the encrypted graph search query 500 including the start point query 501 and the end point query 502 shown in FIG. 5 to the database server 200. .
  • the value of the maximum value n of the path length is set in advance, but it is not always necessary to set in advance, and the user terminal 100 sends the encrypted graph search query 500 to the database server 200.
  • the maximum path length value n may be specified by adding the maximum path length column to the data format column of the encrypted graph search query 500 and setting the value of the area to n. . If it is known in advance that there is no closed path in the valid graph, the encryption graph search process (S400) is guaranteed to stop without specifying the maximum path length n. It is not necessary to specify the maximum value n of the route length.
  • an encrypted graph that solves a determination problem such as whether or not a path having a length n or less starting from a specific vertex node and having another vertex node as an end point exists in the graph data.
  • the search process (S400) is executed, the encrypted graph search process (S400) is not necessarily a process for solving this determination problem.
  • Each row data of the encrypted graph that is searched by the query and hits the matching processing may be used as the encrypted search processing result 600.
  • the encryption edge column of the encryption graph is searched with the encryption query of the encrypted edge using a specific edge as an encryption query, and each row data of the encryption graph hit in the matching process is encrypted and searched.
  • the processing result 600 may be used.
  • the encrypted graph search process when there is a shortest path in the graph data starting from a specific vertex node and ending at another vertex node, the shortest path is encrypted.
  • the integrated search processing result 600 it may be as shown in FIG.
  • FIG. 13 is a diagram showing an example of tree data for shortest path search.
  • FIG. 13 shows the internal variable memory areas [Pool: S1], [Pool: S2],... [Pool for search processing in FIGS. : Sn], in addition to the edge numbers stored in each Si, the start point and end point encrypted data and the encrypted query are made into a tree structure.
  • the encrypted data and the encrypted query are stored in the internal variable memory areas [pool: T0], [pool: T1]... [Pool: Tn] in the tree structure.
  • FIG. 14 is a diagram illustrating an example of the shortest path search result.
  • the shortest path search encrypted search processing result 600 includes a path number 601 and side numbers 602 and 603 in one line.
  • a set of encryption queries of the narrowing target edges may be added to the encrypted graph search query 500.
  • encrypted graph data is generated in the data format shown in FIG. 5 so that it is adjacent to a specific encrypted vertex.
  • the existing algorithm may be realized on the encrypted graph data by replacing the traversing process in the traversing algorithm in step S409 of FIG. 10 with the existing algorithm. .
  • the encrypted graph search unit 310 cannot operate the searchable cryptographic matching function 170 without the search key 160. Therefore, the encrypted graph data 400 can be searched only by the computer to which the search key 160 is distributed. As a result, it is possible to ensure security when the encrypted graph data 400 is outsourced and search processing is performed.
  • FIG. 15 is a block diagram showing an example of the encryption graph search system according to the second embodiment of the present invention.
  • the data provider terminal 1400, the database server 200, and the data user terminal 1500 exchange information with each other via the network 300.
  • the difference between the first embodiment and the second embodiment is that the function and processing of the user terminal 100 of the first embodiment are divided into a data provider terminal 1400 and a data user terminal 1500 shown in FIG. is there.
  • the data provider terminal 1400 generates the encrypted graph data 400 and stores it in the database server 200, as with the user terminal 100 of the first embodiment.
  • the data user terminal 1500 requests a graph search in plain text, acquires the encrypted graph search query 500 from the data provider terminal 1400, and accesses the database server 200.
  • the hardware configuration of the data provider terminal 1400, the data format of the plaintext and encrypted graph data 400, the data format of the encrypted graph search query 500, and the encryption graph search processing are the same as those in the first embodiment. This is the same as the user terminal 100. The same components as those in the first embodiment are denoted by the same reference numerals.
  • the database server 200 is the same as that in the first embodiment.
  • the hardware configuration of the data user terminal 1500 is the same as that of the user terminal 100 of the first embodiment, and the software configuration includes a plaintext graph search query generation unit 1510 that generates a plaintext graph search query 420 from a plaintext graph search request. Have.
  • FIG. 16 is a sequence diagram showing an example of encrypted data pre-save processing in the second embodiment.
  • the data provider terminal 1400 uses the searchable encryption secret key generation function to search for the searchable encryption encryption function and the searchable encryption query function.
  • a secret key 150 used as an input and a search key 160 used as an input of the searchable cryptographic matching function 170 are generated (S100).
  • the data provider terminal 1400 uses the searchable encryption / encryption function, the searchable encryption / encryption function, and the secret generated in step S100 in accordance with the data format shown in FIG. Encryption is performed using the key 150 to generate encryption graph data 400 including an encryption graph and an encryption query (S200).
  • the data provider terminal 1400 transmits the encrypted graph data 400 to the database server 200.
  • the data provider terminal 1400 transmits the search key 160 generated in step S100 to the database server 200.
  • the data provider terminal 1400 transmits the searchable cryptographic matching function 170 to the database server 200 and ends the pre-save process.
  • FIG. 17 is a sequence diagram illustrating an example of the encryption graph search process of the data provider terminal 1400, the data user terminal 1500, and the database server 200.
  • the data user terminal 1500 generates a plaintext graph search query 420 by the plaintext graph search query generation unit 1510 and transmits it to the data provider terminal 1400 (S500).
  • the data format of the plaintext graph search query 420 is the same as the data format of the encrypted graph search query of the first embodiment (FIG. 6), and the data content is plaintext.
  • the plaintext graph search query 420 inquires whether there is a route in the graph data that has the vertex node A as the start point and the vertex node D as the end point.
  • the plaintext graph search query generation unit 1510 inputs two pieces of data in which plaintext A is input into the area of the start point query 501 and plaintext D is input into the area of the end point query 502 shown in FIG. 420 is generated.
  • the data provider terminal 1400 receives the data user terminal 1500 or the plaintext graph search query 420.
  • the encryption graph search query generation unit 130 of the data provider terminal 1400 generates the encryption graph search query 500 according to the data format shown in FIG. 6 and transmits it to the data user terminal 1500 (S300).
  • the data user terminal 1500 transmits the encrypted graph search query 500 to the database server 200 as it is.
  • the DBMS 300 of the database server 200 inputs the received encrypted graph search query 500 to the encrypted graph search unit 310 as in the first embodiment, and executes the encrypted graph search processing on the encrypted graph data 400. To do.
  • the encrypted graph search unit 310 generates a search result as an encrypted search processing result 600.
  • the DBMS 300 returns the encrypted search processing result 600 to the data user terminal 1500 (S400).
  • the encrypted search processing result 600 Can output binary results such as [Yes] or [No].
  • the ciphertext of the vertex node adjacent to the target vertex node is output from the database server 200 as the encryption search processing result 600. Is done.
  • the data user terminal 1500 transmits the received encrypted search processing result 600 to the data provider terminal 1400 that holds the secret key 150, and requests the decryption process. Then, the data provider terminal 1400 may return a plaintext set of adjacent vertex nodes to the data user terminal 1500.
  • the data provider terminal 1400 may transmit the secret key 150 to the data user terminal 1500, and the data user terminal 1500 may generate an encrypted graph search query and decrypt the encrypted search processing result 600. .
  • the data provider terminal 1400 and the data user terminal 1500 are divided as in the second embodiment, it is possible to suppress an increase in transmission / reception of encrypted data and an encrypted query. Generation of data necessary for processing and transmission / reception processing can be suppressed, and a load required for search processing of data having an encrypted graph structure can be reduced.
  • step S300 of FIG. 17 the data provider terminal 1400 transmits the encrypted graph search query 500 to the data user terminal 1500, but transmits the encrypted graph search query 500 and the transmission destination of the search result to the database server 200. You may do it.
  • FIG. 18 is a block diagram showing an example of an encrypted graph search system according to the third embodiment of the present invention.
  • the encrypted graph search system is configured such that the data provider terminal 1400A, the data user terminal 1500, and the key management server 1600 can transmit and receive information to and from each other via the network 300.
  • the key management server 1600 and the database server 200 are connected so that information can be transmitted and received between them.
  • the database server 200 may be connected to the network 300.
  • a key management server 1600 is installed in the third embodiment, and secret keys such as encryption, decryption and query generation are provided.
  • the key management server 1600 performs processing using 150.
  • the database server 200 is the same as that in the first embodiment.
  • the data user terminal 1500 is the same as that in the second embodiment.
  • the data provider terminal 1400A has only the plain text data 140 in the configuration of the second embodiment.
  • the key management server 1600 is obtained by removing the plain text graph data 140 from the user terminal 100 of the first embodiment. That is, the key management server 1600 includes a secret key generation unit 110, an encryption graph data generation unit 120, an encryption graph search query generation unit 130, a secret key 150, a search key 160, and an encryption graph search query 500. Including. In the following description, the same reference numerals are used for the same components as those in the first embodiment or the second embodiment.
  • FIG. 19 is a sequence diagram showing an example of pre-save processing of encrypted graph data according to the third embodiment.
  • the secret key generation unit 110 uses the searchable encryption secret key generation function to search for the searchable encryption encryption function and the searchable encryption query function.
  • a secret key 150 used as an input and a search key 160 used as an input of the searchable cryptographic matching function 170 are generated (S100).
  • the data provider terminal 1400 transmits the plain text graph data 140 (FIG. 4) held by itself to the key management server 1600.
  • the key management server 1600 uses the searchable encryption / encryption function encryption, the searchable encryption query function, and the secret key 150 generated in step S100 in accordance with the data format shown in FIG.
  • the encrypted graph data 400 including the encrypted graph and the encrypted query is generated (S200).
  • the key management server 1600 transmits the encrypted graph data 400 to the database server 200.
  • the key management server 1600 transmits the search key 160 generated in step S100 to the database server 200.
  • the key management server 1600 transmits the searchable cryptographic matching function 170 to the database server 200, and ends the pre-save process.
  • FIG. 20 is a flowchart showing an example of encryption graph search processing of the data provider terminal 1400, the data user terminal 1500, the key management server 1600, and the database server 200.
  • the data user terminal 1500 generates the plaintext graph search query 420 by the plaintext graph search query generation unit 1510 and transmits it to the key management server 1600 as in the second embodiment (S500).
  • the encryption graph search query generation unit 130 of the key management server 1600 generates the encryption graph search query 500 according to the data format shown in FIG. 6, and transmits the encryption graph search query 500 to the database server 200 ( S300).
  • the DBMS 300 of the database server 200 inputs the received encrypted graph search query 500 to the encrypted graph search unit 310 and performs the encrypted graph search processing on the encrypted graph data 400 as in the first embodiment. Execute.
  • the encrypted graph search unit 310 generates a search result as the encrypted search processing result 600 and returns it to the key management server 1600 (S400).
  • the encrypted graph search query 500 is inquired about a determination problem such as whether there is a route having the vertex node A as the start point and the vertex node D as the end point in the graph data, the encrypted search processing result 600 Can output binary values such as [Yes] or [No].
  • the ciphertext of the vertex node adjacent to the target vertex node is output from the database server 200 as the encryption search processing result 600. Is done.
  • the key management server 1600 performs a decryption process of the ciphertext using the secret key (S500).
  • the decrypted search processing result 430 is transmitted to the data user terminal 1500, and the search processing ends.
  • the data provider terminal 1400, the data user terminal 1500, and the key management server 1600 are separated as in the third embodiment, it is possible to suppress an increase in transmission / reception of encrypted data and an encrypted query.
  • generation of data necessary for the process and transmission / reception process can be suppressed, and the load required for the search process of data having an encrypted graph structure can be reduced.
  • the database server 200 has a graph structure of the encrypted graph data 400 such that the end node of edge number 1 and the start node of edge number 4 match before the user terminal 100 transmits the encrypted graph search query 500. That is, information such as which node is the start point, which node is the end point, and which node is connected can be acquired. This situation is the same in the second and third embodiments.
  • the graph structure that is, which node is the start point, which node is the end point, and which node is connected to which database server 200 enables calculation.
  • the database server 200 cannot obtain a solution even if the encrypted query is executed until the encrypted graph search query 500 is received.
  • the data format of the encrypted graph data 400 of the first embodiment is modified based on the Patent Document 1 to obtain the encrypted graph data 400B.
  • Other configurations are the same as those in the first embodiment.
  • the secret key generation unit 110 of the user terminal 100 prepares a common key encryption method C ( ⁇ , ⁇ ) and a hash function H ( ⁇ ).
  • a ciphertext obtained by encrypting the message m with the secret key sk using the common key encryption method C ( ⁇ , ⁇ ) is represented by C (m, sk), and a hash value of the hash function H ( ⁇ ) of the message m Is represented by H (m).
  • the non-patent documents 1 and 2 may be used for the common key encryption method and the hash function, respectively.
  • FIG. 21 shows a data format of the encrypted graph data 400B in the fourth embodiment.
  • the change from FIG. 5 is that the value Query ( ⁇ ) of each cell of the encrypted query start point 451 column and the encrypted query end point 453 column is encrypted by the common key encryption method C ( ⁇ , ⁇ ). It is a point that is.
  • the value of the encrypted query end point 453 of edge number 1 is Query (B) in FIG. 5 of the first embodiment, but is changed to C (Query (B), e1) in FIG. .
  • the secret key e1 of C (Query (B), e1) of the encryption query end point 453 of edge number 1 is the searchable encryption disclosed in Patent Document 1 with the encryption start point Enc (A) of edge number 1 Of the above-mentioned hash function H of the homomorphic function value F R (708) when the ciphertext is generated using the searchable cryptographic encryption function of the method (referred to as secret registration data 712 creation processing in Patent Document 1) It is a hash value.
  • the secret key e1 H (F R ).
  • the homomorphic function value F R (708) when generating the ciphertext Enc (X) using the searchable encryption function of the searchable encryption method disclosed in Patent Document 1 is expressed as F R-Enc (X ) .
  • this homomorphic function value F R-Enc (A) uses Enc (A) and Query using the searchable cryptographic matching function 170.
  • the database server 200 acquires from the user terminal 100 within the process of performing the matching process of (A).
  • the database server 200 receives Query (A) in the encrypted graph search query 500 from the user terminal 100, acquires the homomorphic function value FR-Enc (A) , and uses the hash function H to hash
  • the database server 200 calculates the secret key e1 using the homomorphic function value FR-Enc (A) acquired from the user terminal 100, so that the column C of the encrypted query end point 453 of the edge number 1 is stored.
  • (Query (B), e1) can be decoded to obtain Query (B). That is, the user terminal 100 further encrypts the encrypted query with the second key e1, and transmits a homomorphic function value for decompressing the encrypted encrypted query as a query execution key when executing the search.
  • the second key e1 is calculated by the hash function H from the homomorphic function value that is the query execution key, and the encrypted encrypted query is decrypted to obtain the encrypted query.
  • the hash function H may be transmitted by the user terminal 100 to the database server 200 together with the search key 160 and the like in advance.
  • the traversing process shown in FIGS. 9 and 10 of the first embodiment can be similarly executed.
  • the database server 200 executes the matching process using the searchable cryptographic matching function 170
  • the database server 200 assigns each cell in the encrypted query end point 453 column to the common key C (
  • the secret key is calculated using the homomorphic function value key F R-Enc (X) used in the encryption in ( ⁇ , ⁇ )
  • each cell in the column of the encrypted query end point 453 is decrypted, and the traverse process is performed. Execute.
  • the ciphertext of the encryption start point 402 with the same side number is generated as the secret key for encrypting each cell in the column of the encryption query end point 453 with the common key encryption method C ( ⁇ , ⁇ ).
  • the hash value H (F R-Enc (X) ) of the hash function H of the homomorphic function value F R-Enc (X) is shown.
  • the fourth embodiment is not limited to this, and the same side number is used as a secret key for encrypting each cell in the column of the encryption query start point 451 by the common key encryption method C ( ⁇ , ⁇ ).
  • the hash value H (F R-Enc (X) ) of the hash function H of the homomorphic function value F R-Enc (X) when generating the ciphertext of the encryption end point 404 may be used.
  • encrypted graph data is further encrypted by further encrypting the encrypted query.
  • the confidentiality of 400B can be improved. Therefore, when data is outsourced, it is possible to reduce the load required for search processing while ensuring security.
  • the homomorphic function value FR-Enc (X) is acquired from the user terminal 100 as a key for decrypting the encrypted encrypted query, and the encrypted query is decrypted.
  • the secret key may be acquired from the user terminal 100.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments are described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • any of the additions, deletions, or substitutions of other configurations can be applied to a part of the configuration of each embodiment, either alone or in combination.
  • 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.
  • each of the above-described configurations, functions, and the like may be realized by software by the processor interpreting and executing a program that realizes each function.
  • Information such as programs, tables, and files that realize each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Abstract

 第1の計算機が暗号化グラフを生成し、第2の計算機で前記暗号化グラフを検索する暗号化グラフの検索システムであって、第1の計算機は、秘密鍵生成関数で秘密鍵を生成し、始点と辺と終点を含むグラフを暗号化関数で暗号化して暗号化グラフを生成し、検索可能暗号クエリ関数で暗号化クエリを生成し、辺毎に暗号化グラフと暗号化クエリとを対応付けた暗号化グラフデータと検索可能暗号マッチング関数を第2の計算機に送信し、検索対象のグラフを検索可能暗号クエリ関数で暗号化した暗号化グラフ検索クエリを生成して第2の計算機へ送信し、第2の計算機は、暗号化グラフデータと検索可能暗号マッチング関数を格納し、受信した暗号化グラフ検索クエリと暗号化グラフデータを入力として検索可能暗号マッチング関数を用いて検索処理を実行する。

Description

暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機
 本発明は、暗号化されたグラフ構造データを復号化することなく、暗号化状態のまま検索を行う技術に関する。
 近年、大量のデータを収集、保管、分析を行い、価値のある知識を抽出するビックデータビジネスが普及をみせている。特に、ソーシャルネットワークのコンテンツの分析などにおいては大容量のグラフ構造データをデータベースに保管し、分析が行われている。
 しかし、従来のリレーショナルデータベースでは、グラフ構造データを扱う際に、ある特定のノードと隣接しているノードを全て抽出するといった処理や、ある特定のノードともう一つのノードとの経路を探索するといった、多くの結合処理(join)が発生する検索を実行する際に大量の計算リソースを必要とする、という問題があるため、この様な処理に特化したグラフデータベースが注目を集めている。
 一方で、大量のデータを扱う際には、大容量のストレージや高速なCPUおよびこれらを分散統制するシステムを必要とするため、クラウドなどの外部リソースを利用することが考えられている。しかし、クラウドサービスを利用するユーザが、データを外部組織に保管する場合、セキュリティ上の問題が発生する。このため、暗号化処理を施した後にデータをアウトソースし、暗号化したまま検索などの処理を実行する秘匿情報処理技術が注目を集めている(例えば、特許文献1、非特許文献1、2)。
特開2012-123614号公報
ADVANCED ENCRYPTION STANDARD (AES)、[online]、2001年11月26日、Federal Information Processing Standards Publication 197、[平成26年10月2日検索]、インターネット<http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf> Secure Hash Standard (SHS)、[online]、2012年3月、FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION 180-4、[平成26年10月2日検索]、インターネット<http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
 上述したようにデータのアウトソース時に発生するセキュリティ上の課題に対して、例えば、特許文献1ではデータを暗号化した後にクラウドなどにアウトソースする。そして、ユーザが利用する計算機は暗号化された検索クエリをクラウドに送信する。クラウド側では、暗号化したまま検索を実行する暗号検索処理システムが提案されている。
 クラウド側には暗号化されたデータのみを送信し、平文データを見せないため、前述のプラバシー上の課題を解決することができる。特許文献1の発明では、テーブル型データの各セルを暗号化し、さらに各セルを暗号化したまま検索を行う方法が示されている。
 暗号化対象のデータがグラフ構造を持つデータで、かつ、上述のようにある特定のノード(始点)ともう一つのノード(終点)との経路を探索するといったグラフ構造特有のトラバース処理を含む検索を実行する際には、始点ノードと終点ノードを検索するための暗号化クエリに加えて、経路上に存在する中間ノードを検索するための暗号化クエリを必要とする。トラバース処理の過程で中間ノードを特定するたびに、クラウド側がユーザにそれらのノードの暗号化クエリの生成および送信処理を依頼する必要があるため、大量の通信および計算リソースを必要とする、という課題があった。
 そこで、本発明は、暗号化されたグラフ構造を持つデータの検索処理に要する負荷を低減することを目的とする。
 本発明は、プロセッサとメモリとを含む第1の計算機が、始点と辺と終点を含むグラフを暗号化して暗号化グラフを生成し、プロセッサとメモリを備えた第2の計算機で前記暗号化グラフを検索する暗号化グラフの検索方法であって、前記第1の計算機が、予め設定された検索可能暗号アルゴリズムの秘密鍵生成関数を用いて秘密鍵を生成する第1のステップと、前記第1の計算機が、前記検索可能暗号アルゴリズムの暗号化関数を用いて前記グラフを暗号化して暗号化グラフを生成する第2のステップと、前記第1の計算機が、前記検索可能暗号アルゴリズムの検索可能暗号クエリ関数を用いて前記グラフを検索するクエリを暗号化して暗号化クエリを生成する第3のステップと、前記第1の計算機が、前記グラフの辺毎に前記暗号化グラフと前記暗号化クエリとを対応付けた暗号化グラフデータを前記第2の計算機に送信する第4のステップと、前記第1の計算機が、前記検索可能暗号アルゴリズムの検索可能暗号マッチング関数を前記第2の計算機に送信する第5のステップと、前記第2の計算機が、前記暗号化グラフデータと前記検索可能暗号マッチング関数を受信して格納する第6のステップと、前記第1の計算機が、検索対象の前記グラフの始点と終点を前記検索可能暗号クエリ関数で暗号化して暗号化グラフ検索クエリを生成し、当該暗号化グラフ検索クエリを前記第2の計算機へ送信する第7のステップと、前記第2の計算機が、前記暗号化グラフ検索クエリを受信して、当該暗号化グラフ検索クエリと前記暗号化グラフデータを入力として前記検索可能暗号マッチング関数を用いて検索処理を実行する第8のステップと、前記第2の計算機が、前記検索処理の結果を前記第1の計算機へ送信する第9のステップと、を含む。
 本発明によれば、計算機システムに預託するグラフデータのセキュリティを確保したまま、グラフデータ特有の検索処理を実行することが可能となる。
本発明の第1の実施例を示し、暗号化グラフ検索システムの一例を示すブロック図である。 本発明の第1の実施例を示し、ユーザ端末の一例を示すブロック図である。 本発明の第1の実施例を示し、データベースサーバの一例を示すブロック図である。 本発明の第1の実施例を示し、グラフデータの一例を示す図である。 本発明の第1の実施例を示し、平文グラフデータの一例を示す図である。 本発明の第1の実施例を示し、暗号化グラフデータの一例を示す図である。 本発明の第1の実施例を示し、暗号化グラフ検索クエリの一例を示す図である。 本発明の第1の実施例を示し、暗号化グラフデータの事前保存処理の一例を示すシーケンス図である。 本発明の第1の実施例を示し、暗号化グラフデータの検索処理の一例を示すシーケンス図である。 本発明の第1の実施例を示し、暗号化グラフデータの検索処理の一例を示すフローチャートの前半部である。 本発明の第1の実施例を示し、暗号化グラフデータの検索処理の一例を示すフローチャートの後半部である。 従来例を示し、検索可能暗号で暗号化されたグラフの一例を示す図である。 従来例を示し、検索を実行した後のグラフの一例を示す図である。 本発明の第1の実施例を示し、最短経路検索向けのツリーデータの一例を示す図である。 本発明の第1の実施例を示し、最短経路検索結果の一例を示す図である。 本発明の第2の実施例を示し、暗号化グラフ検索システムの一例を示すブロック図である。 本発明の第2の実施例を示し、暗号化グラフの事前保存処理の一例を示すシーケンス図である。 本発明の第2の実施例を示し、暗号化グラフの検索処理の一例を示すシーケンス図である。 本発明の第3の実施例を示し、暗号化グラフ検索システムの一例を示すブロック図である。 本発明の第3の実施例を示し、暗号化グラフの事前保存処理の一例を示すシーケンス図である。 本発明の第3の実施例を示し、暗号化グラフの検索処理の一例を示すシーケンス図である。 本発明の第4の実施例を示し、暗号化グラフデータの一例を示す図である。
 以下、本発明の第一の実施例を図面に基づいて詳細に説明する。なお、本実施例では、検索可能暗号で暗号化されたグラフデータに対して、グラフのトラバース処理を伴う検索の例を示す。グラフのトラバース処理として、ある特定の頂点ノードを始点とし、もう一つの頂点ノードを終点とする長さn以下の経路がグラフデータ内に存在するか否かをユーザ端末がデータベースサーバに問い合わせる処理を例示する。検索する経路長の最大値(または閾値)nの値は事前に設定されているものとする。
 本実施例で使用する用語を定義する。
 1.グラフデータのトラバース処理
 グラフデータのトラバース処理とは、グラフ構造のデータに対して、ある特定の頂点ノードを検索し、さらにその頂点ノードに隣接するノードを検索し、さらにその隣接ノードに隣接するノードを検索するといった、特定のノードの隣接ノードとその隣接ノードを繰り返し検索する処理とする。
 2.共通鍵検索可能暗号アルゴリズム
 共通鍵検索可能暗号アルゴリズム(以下、検索可能暗号アルゴリズムと称する)とは、通常の確率的暗号化および、復号化を行う共通鍵暗号(検索可能暗号)機能に加えて、暗号化したまま、復号することなく、平文の一致判定(以下、マッチング処理)が可能な暗号の総称である。暗号化、復号化、および検索の際に利用する暗号化検索クエリの生成は、秘密鍵を持つエンティティ(本実施例ではユーザ端末)のみが実行可能である。
 また、暗号文と暗号化クエリのマッチング処理は、検索鍵を持つエンティティ(本実施例ではデータベースサーバ)が可能である。より具体的には検索可能暗号アルゴリズムとは以下の4つの関数の組[検索可能暗号秘密鍵生成関数、検索可能暗号暗号化関数、検索可能暗号クエリ関数、検索可能暗号マッチング関数]を含んで構成される。
 (1)検索可能暗号秘密鍵生成関数(秘密鍵生成関数)
 検索可能暗号アルゴリズムで規定されている秘密鍵生成アルゴリズムを指す。以後、秘密鍵生成処理と呼ぶ。セキュリティパラメータと鍵シードを関数入力とし、以下の(2)、(3)で関数入力とする秘密鍵と(4)で関数入力とする検索鍵に相当する特定のビット長のバイナリ列を出力とする。
 (2)検索可能暗号暗号化関数(暗号化関数)
 検索可能暗号アルゴリズムで規定されている確率的な暗号化アルゴリズムを指す。平文と秘密鍵を関数入力とし暗号文を出力する。
 (3)検索可能暗号クエリ関数
 検索可能暗号アルゴリズムで規定されている確率的なクエリ生成アルゴリズムを指す。平文クエリと秘密鍵を関数入力とし、暗号化クエリを出力する。 
 (4)検索可能暗号マッチング関数
 検索可能暗号アルゴリズムで規定されている暗号文と暗号化クエリのマッチングアルゴリズムを指す。暗号文引数と暗号化クエリ引数と検索鍵を関数入力とし、暗号文に対する平文と、暗号化クエリに関する平文が一致した場合に結果として[平文一致]を出力し、そうでない場合、結果として[平文不一致]を出力する。本実施例では暗号文として暗号化グラフと暗号化クエリを検索可能暗号マッチング関数へ入力し、[平文一致]が出力された暗号化グラフが暗号化クエリの検索結果となる。
 以後、本実施例では、検索可能暗号アルゴリズム、つまり検索可能暗号秘密鍵生成関数、検索可能暗号暗号化関数、検索可能暗号クエリ関数、検索可能暗号マッチング関数を一つ固定して実施例の説明を行う。なお、具体的な検索可能暗号方式アルゴリズムとしては特許文献1に開示されるような公知または周知の技術を用いてもよい。
 以下、図1と図2を用いて、本実施例のシステムの構成を示す。
 図1は、本発明の実施の形態である暗号化グラフ検索システムの一例を示すブロック図である。図示するように、暗号化グラフ検索システムは、ユーザ端末100と、データベースサーバ200とがネットワーク300を介して相互に情報を送受信できるように構成されている。
 図2Aは、ユーザ端末100の一例を示すブロック図である。図示するように、ユーザ端末100は、CPU101と、補助記憶装置102と、メモリ103と、表示装置105と、入出力インターフェース106と、通信装置107と、が内部信号線104で連結された計算機である。
 また、補助記憶装置102には、プログラムコードが格納されている。プログラムコードは、メモリ103にロードされCPU101によって実行される。
 図2Aにおいて、メモリ103には各プログラムコードとデータがロードされた状態を示す。
 メモリ103には、秘密鍵150と検索鍵160を生成する秘密鍵生成部110と、平文(非暗号文)グラフデータ140を暗号化して暗号化グラフデータ400を生成する暗号化グラフデータ生成部120と、暗号化グラフデータ400を検索するための暗号化グラフ検索クエリ500を生成する暗号化グラフ検索クエリ生成部130が格納される。
 秘密鍵生成部110と、暗号化グラフデータ生成部120と、暗号化グラフ検索クエリ生成部130の各機能部はプログラムコードとしてメモリ103にロードされる。
 CPU101は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU101は、秘密鍵生成プログラムに従って処理することで秘密鍵生成部110として機能する。他のプログラムコードについても同様である。さらに、CPU101は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
 ユーザ端末100の各機能部を実現するプログラム、テーブル等の情報は、補助記憶装置102や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
 ここで、秘密鍵生成部110は、上記(1)の検索可能暗号秘密鍵生成関数により秘密鍵150と検索鍵160を生成する。
 暗号化グラフデータ生成部120は、上記(2)の検索可能暗号暗号化関数を用いて、秘密鍵150と平文グラフデータ140から暗号文としての暗号化グラフデータ400を生成する。
 暗号化グラフ検索クエリ生成部130は、上記(3)の検索可能暗号クエリ関数を用いて秘密鍵150と平文グラフから暗号化クエリを生成し、後述するように暗号化グラフデータ400に設定する。また、暗号化グラフ検索クエリ生成部130は、上記(4)の検索可能暗号マッチング関数と検索鍵160をデータベースサーバ200へ送信しておく。
 図2Bは、データベースサーバ200の一例を示すブロック図である。図示するように、データベースサーバ200は、CPU201と、補助記憶装置202と、メモリ203と、表示装置205と、入出力インターフェース206と、通信装置207と、が内部信号線204で接続結された計算機である。
 また、補助記憶装置202には、プログラムが格納されている。プログラムは、メモリ1032ロードされCPU201によって実行される。
 メモリ203には、暗号化グラフ検索部310を含むデータベース管理システム(以下、DBMS)300と、ユーザ端末100から配布された暗号化グラフデータ400、検索鍵160及び検索可能暗号マッチング関数170が格納される。
 DBMS300の各機能部はプログラムとしてメモリ203にロードされる。CPU201は、ユーザ端末100と同様に、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。
 DBMS300は、後述するように、ユーザ端末100から暗号化グラフ検索クエリを受け付けて、暗号化グラフ検索部310が暗号化グラフデータ400を検索し、検索結果をユーザ端末100に応答する。
 以下、図3から図6を用いて本実施例1の暗号化グラフ検索システムで扱うデータのフォーマットを説明する。
 図3はグラフデータの一例を示す図である。図4は平文グラフデータの一例を示す図である。
 本実施例の平文グラフデータ140は、有向グラフデータで構成される。この平文グラフデータ140は、図4のように辺番号141、始点142、辺143、終点144のフィールドからなるテーブルで表現される。なお、実施例では全てのグラフは始点142から終点144へ向きを有する有向グラフとし、以後、単にグラフと称する。
 図3において、平文グラフデータ140は頂点ノードの集合V={A,B,C,D}と辺の集合E={a,b,c,d,e}からなり、各辺は頂点ノードのいずれかを始点または終点としている。
 例えば辺aは頂点ノードAを始点、Bを終点としている。このような平文グラフデータ140は、図4で示すように、辺番号141、始点142、辺143、終点144の四つのデータを一行とするテーブル型データフォーマットとして扱われる。
 図5は暗号化グラフデータの一例を示す図である。図5は、図4の平文グラフデータ140を暗号化した暗号化グラフと、暗号化グラフを検索する暗号化クエリとを加えた暗号化グラフデータ400のデータフォーマット例である。
 図5で示すように、暗号化グラフデータ400は、平文グラフデータ140の辺番号141を平文の辺番号401とし、始点142、辺143、終点144の各フィールドを検索可能暗号暗号化関数で暗号化した暗号化始点402、暗号化辺403、暗号化終点404として設定される。
 さらに、暗号化グラフデータ400は、暗号化された始点402、辺403、終点4004の各フィールドを検索可能暗号クエリ関数で暗号クエリ化した暗号化クエリ始点451、暗号化クエリ辺452、暗号化クエリ終点453を加えた7つのフィールドを一行とするテーブル型データフォーマットである。
 暗号化グラフデータ400は、暗号化したグラフデータと、暗号化されたグラフデータを復号することなく検索するための暗号化クエリを辺毎にまとめた情報である。 例えば、図4の平文グラフデータの1行目[1,A,a,B]は、図5の暗号化グラフデータ400の1行目で[1,Enc(A),Enc(a),Enc(B),Query(A),Query(a),Query(B)]と暗号化される。
 図中、Enc(A)は平文Aを検索可能暗号暗号化関数で暗号化したデータであり、Query(A)は、平文Aを検索可能暗号クエリ関数で暗号クエリ化したデータを示している。
 例えば、辺番号401=1の、暗号化始点402は、平文グラフデータ140の始点Aを、検索可能暗号暗号化関数を用いて暗号化グラフデータ生成部120が暗号文とし生成した暗号化グラフである。
 また、辺番号401=1の、暗号化クエリ始点451は、平文グラフデータ140の始点Aを、検索可能暗号クエリ関数を用いて暗号化グラフ検索クエリ生成部130が生成した暗号化クエリである。
 そして、暗号化グラフデータ400は、平文グラフデータ140を暗号化した暗号化グラフ(402~404)と、暗号化グラフを検索するための暗号化クエリ(451~453)を辺毎に一行のデータとして生成される。
 図6は、暗号化グラフ検索クエリデータのデータフォーマットの一例である。図6で示すように、暗号化グラフ検索クエリ500は、始点クエリ501と終点クエリ502の2つのデータを含む。
 この暗号化グラフ検索クエリ500は、ユーザ端末100がグラフデータ中に頂点ノードAを始点とし、頂点ノードDを終点とする長さn以下の経路が存在するか否かを問い合わせる例を示す。
 暗号化グラフ検索クエリ生成部130は、ユーザ端末100で受け付けた問合せから始点クエリ領域に平文Aを検索可能暗号クエリ関数で暗号クエリ化したデータQuery(A)を入力し、終点クエリ領域に平文Dを検索可能暗号クエリ関数で暗号クエリ化したデータQuery(D)を入力し、暗号化グラフ検索クエリ500を生成する。
 以下、図7から図10を用いて本実施例の暗号化グラフ検索システムの検索処理について説明する。
 図7は、暗号化グラフの事前保存処理の一例を示すシーケンス図である。このシーケンス図は、ユーザ端末100とデータベースサーバ200の暗号化データの事前保存処理におけるデータの送受信およびプログラムの処理の手順を示す。
 まず、ユーザ端末100の秘密鍵生成部110は、予め設定された検索可能暗号秘密鍵生成関数を用いて検索可能暗号暗号化関数、検索可能暗号クエリ関数の入力として使用する秘密鍵150と、検索可能暗号マッチング関数の入力として使用する検索鍵160を生成する(S100)。なお、秘密鍵生成部110は、予め設定された検索可能暗号アルゴリズムとして、検索可能暗号秘密鍵生成関数、検索可能暗号暗号化関数、検索可能暗号クエリ関数、検索可能暗号マッチング関数が設定されている。
 次に、ユーザ端末100の暗号化グラフデータ生成部120は、自身が保持している平文グラフデータ140を、図5で示した暗号化グラフデータ400のデータフォーマットに従って、検索可能暗号暗号化関数と上記ステップS100で生成した秘密鍵150を用いて暗号化し、暗号化始点402~暗号化終点404の暗号化グラフを生成する。
 また、暗号化グラフデータ生成部120は、平文グラフデータ140を検索するクエリを、上記検索可能暗号クエリ関数と上記ステップS100で生成した秘密鍵150を用いて暗号化して、暗号化クエリ始点451~暗号化クエリ終点453からなる暗号化クエリを生成する。
 暗号化グラフデータ生成部120は、暗号化グラフと暗号化クエリを平文グラフデータ140の辺毎にまとめて、暗号化グラフデータ400を生成する(S200)。
 次に、ユーザ端末100は暗号化グラフデータ400をデータベースサーバ200に送信する。次に、ユーザ端末100は上記ステップS100で生成した検索鍵160と、検索可能暗号マッチング関数170をデータベースサーバ200に送信し、事前保存処理を終了する。
 図8は、暗号化グラフの検索処理の一例を示すシーケンス図である。このシーケンス図は、ユーザ端末100とデータベースサーバ200の暗号化グラフ検索処理におけるデータの送受信およびプログラムの処理を示す。
 まず、ユーザ端末100は、ユーザからの検索要求を受け付ける。暗号化グラフ検索クエリ生成部130は、受け付けた検索要求と図6で示したデータフォーマットに基づいて、暗号化グラフ検索クエリ500を生成する(S300)。
 例えば、グラフデータ140中に頂点ノードAを始点、頂点ノードDを終点とする経路が存在するか否かの判定を行う場合、暗号化グラフ検索クエリ生成部130は、図6で示した通り、始点クエリ領域に平文Aを検索可能暗号クエリ関数で暗号クエリ化したデータQuery(A)を入力し、終点クエリ領域に平文Dを検索可能暗号クエリ関数で暗号クエリ化したデータQuery(D)を入力した2つのデータを暗号化グラフ検索クエリ500として生成する。
 次に、ユーザ端末100は上記ステップS300で生成した暗号化グラフ検索クエリ500をデータベースサーバ200に送信する。次に、データベースサーバ200のDBMS300は、受信した暗号化グラフ検索クエリ500を暗号化グラフ検索部310へ入力して暗号化グラフデータ400上で暗号化グラフ検索処理を実行し、検索結果を生成する。暗号化グラフ検索部310は、検索結果を暗号化検索処理結果600として生成する。そして、DBMS300はユーザ端末100に暗号化検索処理結果600を返信する(S400)。
 上記処理によって、データベースサーバ200のDBMS300は、ユーザ端末100から受け付けた暗号化グラフ検索クエリ500で暗号化グラフデータ400を検索する。DBMS300の暗号化グラフ検索部310は、検索条件にマッチしたグラフデータ400を復号せずに暗号化検索処理結果600として生成し、ユーザ端末100へ応答する。
 図9と図10は上記図8中の暗号化グラフ検索処理(S400)の処理の一例を示すフローチャートの詳細である。
 なお、図9は、暗号化グラフデータの検索処理の一例を示すフローチャートの前半部である。また、図10は、暗号化グラフデータの検索処理の一例を示すフローチャートの後半部である。
 図9と図10の処理を実行することで、データベースサーバ200は暗号化グラフデータ400に対してトラバース処理を行って、暗号化グラフ検索クエリ500内の始点クエリ501に対応する頂点ノードを始点とし、終点クエリ502に対応する頂点ノードを終点とする長さn以下の経路が存在するか否かを判定することが可能となる。
 まず、図9では、暗号化グラフ検索クエリ500を受信したデータベースサーバ200のDBMS300は、事前に設定されている最長経路値nに対して、検索処理用の内部変数メモリ領域[プール:S1]、[プール:S2]・・・[プール:Sn]のメモリ領域[プール:Sn]をメモリ203上に確保する。データベースサーバ200のDBMS300は、メモリ領域[プール:Sn]を初期化する。次に、データベースサーバ200のDBMS300は、検索結果保存用の内部変数メモリ領域[検索結果:R]をメモリ203上に確保する。データベースサーバ200のDBMS300は、確保したメモリ領域[検索結果:R]を、検索処理用の内部変数[経路長:i]をi=0で初期化する(S401)。
 次に、DBMS300の暗号化グラフ検索部310は、暗号化グラフ検索クエリ500の始点クエリ501を、検索可能暗号マッチング関数170の暗号化クエリ引数に設定する。また、暗号化グラフ検索部310は、暗号化グラフデータ400の暗号化始点402のカラムの各暗号化データを検索可能暗号マッチング関数170の暗号文引数に設定する。そして、暗号化グラフ検索部310は、暗号化クエリ引数、暗号文引数及び検索鍵160を検索可能暗号マッチング関数170へ入力し、マッチング処理を実行する。
 そして、暗号化グラフ検索部310は、マッチングにヒットした各行の辺番号を内部変数メモリ領域[内部プール:S1]に保存する(S402)。
 次に、暗号化グラフ検索部310は、内部変数メモリ領域[プール:S1]内に 辺番号データが保存されているか否かを判定する(S403)。換言すれば、暗号化グラフデータ400の中にマッチする始点が存在したか否かを判定する。
 内部変数メモリ領域[プール:S1]内に辺番号が保存されていない場合にはステップS404へ進む。
 ステップS404では、暗号化グラフ検索部310が、内部変数メモリ領域[検索結果:R]=Noとして[検索結果:R]を検索処理結果として生成し、当該検索処理結果を出力して暗号化グラフ検索処理(S400)を終了する。
 一方、内部変数メモリ領域[プール:S1]内に辺番号が保存されている場合にはステップS405へ進む。
 ステップS405で、暗号化グラフ検索部310は、内部変数メモリ領域[プール:S1]~[プール:Sn]内に保存されている各[辺番号:t]に対して、暗号化グラフデータ400の暗号化終点404のカラムのt行目の暗号化データを暗号文引数として設定する。暗号化グラフ検索部310は、暗号化グラフ検索クエリ500の終点クエリ502を暗号化クエリ引数として設定する。そして、暗号化グラフ検索部310は、暗号文引数、暗号化クエリ引数と検索鍵160をそれぞれ検索可能暗号マッチング関数170へ入力して、各[辺番号:t]の暗号化終点404が暗号化グラフ検索クエリ500の終点クエリ502と一致しているかマッチング処理を実行する。
 次に、上記ステップS405のマッチング処理でヒットした暗号化データがある場合は、ステップS407へ進む。ステップS407では、暗号化グラフ検索部310が、内部変数メモリ領域[検索結果:R]=Yesとして[検索結果:R]を出力して暗号化グラフ検索処理(S400)を終了する。
 一方、上記ステップS405のマッチング処理でヒットした暗号化データがない場合は、図10のステップS408へ進んでトラバース処理を実行する。ステップS408以降のトラバース処理では、経路長がn以下で、[辺番号:t]の暗号化終点404を始点とする暗号化辺403を暗号化グラフデータ400から検索する。
 まず、暗号化グラフ検索部310は、内部変数[経路長:i]←i+1として、インクリメントを行う(S408)。
 次に、暗号化グラフ検索部310は、内部変数メモリ領域[プール:Si]内に保存されている各[辺番号:t]に対して、暗号化グラフデータ400のt行目の暗号化クエリ終点453を検索可能暗号マッチング関数170の暗号化クエリ引数として設定する。また、暗号化グラフ検索部310は、暗号化グラフデータ400の暗号化始点402のカラムの各暗号化データを検索可能暗号マッチング関数170の暗号文引数として設定する。そして、暗号化グラフ検索部310は、暗号文引数と暗号化クエリ引数及び検索鍵160を検索可能暗号マッチング関数170へ入力してマッチング処理を実行する。暗号化グラフ検索部310は、マッチングでヒットした各行の辺番号を内部変数メモリ領域[内部プール:S(i+1)]に保存する(S409)。
 次に、暗号化グラフ検索部310は、内部変数メモリ領域[内部プール:S(i+1)]に辺番号が保存されているか否かを判定する(S410)。内部変数メモリ領域[内部プール:S(i+1)]に辺番号が保存されている場合には、[辺番号:t]の暗号化終点404を始点とする暗号化辺403が存在すると判定してステップS412へ進む。
 一方、内部変数メモリ領域[内部プール:S(i+1)]に辺番号が保存されていない場合には、[辺番号:t]の暗号化終点404を始点とする暗号化辺403は存在しないと判定してステップS411へ進む。ステップS411では、暗号化グラフ検索部310が、内部変数メモリ領域[検索結果:R]=Noとして[検索結果:R]を出力して暗号化グラフ検索処理(S400)を終了する。
 ステップS412で、暗号化グラフ検索部310は、内部変数メモリ領域[プール:S(i+1)]内に保存されている各[辺番号:t]に対して、暗号化グラフデータ400の暗号化終点404のカラムのt行目の暗号化データを暗号文引数として設定する。また、暗号化グラフ検索部310は、暗号化グラフ検索クエリ500の終点クエリ502を暗号化クエリ引数として設定する。そして、暗号化グラフ検索部310は、暗号文引数と暗号化クエリ引数及び検索鍵160をそれぞれ検索可能暗号マッチング関数170へ入力して、各[辺番号:t]の暗号化終点404が暗号化グラフ検索クエリ500の終点クエリ502と一致しているかマッチング処理を実行する。
 次に、暗号化グラフ検索部310は、ステップS412のマッチング処理でヒットした暗号化データがあるか否かを判定する(S413)。マッチング処理でヒットした暗号化データがある場合はステップS414へ進み、ヒットした暗号化データがない場合にはステップS415へ進む。
 ステップS414では、暗号化グラフ検索部310が、内部変数メモリ領域[検索結果:R]=Yesとして[検索結果:R]を出力して暗号化グラフ検索処理(S400)を終了する。
 一方、ステップS415で、ヒットしたデータがない場合には、暗号化グラフ検索部310が、内部変数[経路長:i]と最長経路値nとの比較を行い、i=nの場合にはステップS416へ進み、i<nの場合にはステップS408へ戻って[経路長:i]をインクリメントしてから上記処理を繰り返す。
 ステップS416では、暗号化グラフ検索部310が、内部変数メモリ領域[検索結果:R]=Noとして[検索結果:R]を出力して暗号化グラフ検索処理(S400)を終了する。
 以上の処理により、データベースサーバ200は、暗号化されたグラフ構造を持つデータの検索処理に要する負荷を低減することができる。さらに、データベースサーバ200は暗号化グラフデータ400内に始点クエリ501に対応する頂点ノードを始点として、終点クエリ502に対応する頂点ノードを終点とする長さn以下の経路が存在する否かを判定することが可能となる。
 ここで、検索処理に要する負荷の低減について以下に説明する。
 ユーザの計算機(図示省略)は、図4のテーブルの各セルを検索可能暗号によって暗号化し、クラウド(図示省略)に保管する。ユーザの計算機は、図3の頂点Aと頂点ノードDを結ぶ最短経路を全て列挙する検索命令(クエリ)を発行する。そして、クラウドがDBMSを備えてクエリを受け付けて検索を実行する場合を考える。
 図11は、図4のテーブルの各セルを検索可能暗号で暗号化したテーブル400Aである。テーブル400Aは、辺番号401Aと、暗号化された始点402Aと、暗号化された辺403Aと、暗号化された終点404Aをひとつの行に含む。
 ユーザがクラウドに頂点Aの検索可能暗号の暗号化クエリQuery1と、頂点ノードDの検索可能暗号の暗号化クエリQuery2を送信することで、クラウドは各セルの暗号化データに対してQuery1とQuery2とのマッチング処理を実行する。
 マッチング処理の結果、図12のような結果を得る。図12は、図11のテーブルの各セルを暗号化クエリQuery1、2で復号化したテーブル400Aである。
 この結果、クラウドはQuery1の頂点とQuery2の頂点が隣接ノードではないことを得るが、Query1とQuery2を結ぶ経路を探索するためには、例えば1行4列目の暗号化された終点ノード「dcd1ce1」を一度ユーザの計算機に返信し、ユーザの計算機は暗号化データ「dcd1ce1」を復号し、頂点Bを得た後に、頂点Bの検索可能暗号の暗号化クエリQuery3を生成する。そして、ユーザの計算機は、このQuery3をクラウドに返信し、クラウドは各セルの暗号化データに対してQuery3とのマッチング処理を実行し、最短経路の1つであるQuery1→Query3→Query2を得る。
 更に、別の最短経路を探索するために、クラウドは、例えば2行4列目の暗号化データ「d26e5cd」をユーザの計算機に返信し、頂点Cの暗号化クエリQuery4を得た後に、同様の処理を行うことで、もう一つの最短経路Query1→Query4→Query2を得る。
 このように従来の技術の検索可能暗号で各セルを暗号化した場合、グラフ構造をトラバースする(つまり、ある頂点ノードを検索し、さらにその頂点ノードに隣接するノードを検索し、さらにその隣接ノードに隣接するノードを検索するといった、隣接ノードを繰り返し辿る検索処理)際に、クラウドユーザとクラウドの間でトラバース処理に必要なデータの生成および送受信処理が大量に発生し、処理遅延をまねく課題が存在する。
 これに対して、本実施例では、図7で示したように、暗号化グラフと暗号化クエリを辺毎にまとめた図4のグラフデータ400をユーザ端末100で生成し、データベースサーバ200へ送信しておく。そして、ユーザ端末100が検索する際には、図8で示したように、図5で示した始点クエリ501と終点クエリ502を含む暗号化グラフ検索クエリ500をデータベースサーバ200へ送信するだけで良い。
 これにより、暗号化データと暗号化クエリの送受信が増大するのを抑制でき、特に、トラバース処理では、処理に必要なデータの生成および送受信処理を抑制することが可能となって、暗号化されたグラフ構造を持つデータの検索処理に要する負荷を低減することができるのである。
 なお,本発明は上述の実施例1に限定されるものではなく、その要旨の範囲内で様々な変形が可能である。
 例えば、本実施例では、経路長の最大値nの値は事前に設定されているものとしたが、必ずしも事前に設定する必要はなく、ユーザ端末100が暗号化グラフ検索クエリ500をデータベースサーバ200に送信する際に、暗号化グラフ検索クエリ500のデータフォーマットカラムに経路長の最大値のカラムを加え、その領域の値をnとする事で、経路長の最大値nを指定してもよい。また、有効グラフ内に閉経路がないことが事前に判明しているならば、経路長の最大値nを指定しなくとも暗号化グラフ検索処理(S400)は停止することが保障されるので、経路長の最大値nを指定しなくてもよい。
 また、本実施例1では、ある特定の頂点ノードを始点とし、もう一つの頂点ノードを終点とする長さn以下の経路がグラフデータ内に存在するか否かといった判定問題を解く暗号化グラフ検索処理(S400)実行したが、暗号化グラフ検索処理(S400)は必ずしもこの判定問題を解く処理である必要はない。例えば、特許文献1で示されているような暗号化グラフに対して、特定の頂点を始点とする辺を列挙するために暗号化グラフの暗号化始点カラムを暗号化された該頂点の暗号化クエリで検索し、マッチング処理にヒットした暗号化グラフの各行データを暗号化検索処理結果600としてもよい。
 また、同様に特定の辺を暗号化クエリとして暗号化グラフの暗号化辺カラムを暗号化された該辺の暗号化クエリで検索し、マッチング処理にヒットした暗号化グラフの各行データを暗号化検索処理結果600としてもよい。
 また、その他の暗号化グラフ検索処理(S400)の例として、ある特定の頂点ノードを始点とし、もう一つの頂点ノードを終点とするグラフデータ内の最短経路が存在する場合、その最短経路を暗号化検索処理結果600とするために、図13で示すようにしても良い。
 図13は、最短経路検索向けのツリーデータの一例を示す図である。図13は、第一の実施例の暗号化グラフ検索処理(S400)において、図9、10内の検索処理用の内部変数メモリ領域[プール:S1]、[プール:S2]・・・[プール:Sn]に加えて、各Si内に保存されている辺番号に対して、その始点、終点の暗号化データ、暗号化クエリをツリー構造としてものである。図13で示すようにツリー構造に内部変数メモリ領域[プール:T0]、[プール:T1]・・・[プール:Tn]内に暗号化データと暗号化クエリを保存する。これにより、上記図10のステップS414において最短経路を発見した際に、ツリー構造内部変数メモリ領域[プール:T0]、[プール:T1]・・・[プール:Tn]とそのリンク構造[プール:S1]、[プール:S2]・・・[プール:Sn]内から、発見した最短経路を暗号化検索処理結果600とすることができる。図14は、最短経路検索結果の一例を示す図である。
 図14で示すように、最短経路検索向け暗号化検索処理結果600は、経路番号601と辺番号602、603をひとつの行に含む。
 更に最短経路検索の暗号化検索処理結果600から指定した最短経路を絞り込むために、絞込み対象の辺の暗号化クエリの集合を暗号化グラフ検索クエリ500に付け加えてもよい。例えば、辺a、辺dからなる経路に絞り込む際には、図6の暗号化グラフ検索クエリ500に、絞込む辺集合={Query(a),Query(d)}を付け加えて暗号化グラフ検索クエリ500とすることができる。
 また、グラフのトラバースを伴い頂点や経路を検索する既存(公知または周知)のアルゴリズムを採用する場合、暗号化グラフデータを図5に示すデータフォーマットで生成することで、特定の暗号化頂点に隣接する別の暗号化頂点を列挙する際に、図10のステップS409のトラバース処理のアルゴリズム中のトラバース処理を既存のアルゴリズムへ置き換えることで、既存のアルゴリズムを暗号化グラフデータ上で実現してもよい。
 また、本実施例では、暗号化グラフ検索部310は、検索鍵160がなければ検索可能暗号マッチング関数170を機能させることはできない。このため、検索鍵160を配布された計算機でのみ暗号化グラフデータ400の検索が実施可能となる。これにより、暗号化グラフデータ400をアウトソースして検索処理を実施する場合のセキュリティを確保することができる。
 次に、本発明の第二の実施例を図面に基づいて説明する。
 図15は、本発明の第二の実施例の暗号化グラフ検索システムの一例を示すブロック図である。
 図示のように、暗号化グラフ検索システムは、データ提供者端末1400と、データベースサーバ200と、データ利用者端末1500がネットワーク300を介して相互に情報を送受信する。
 第一の実施例と第二の実施例の相違は、第一の実施例のユーザ端末100の機能と処理を、図15で示すデータ提供者端末1400とデータ利用者端末1500に分割した点である。データ提供者端末1400は、前記実施例1のユーザ端末100と同様に、暗号化グラフデータ400を生成しデータベースサーバ200に格納する。
 データ利用者端末1500は、平文でグラフ検索を要求し、データ提供者端末1400から暗号化グラフ検索クエリ500を取得してデータベースサーバ200にアクセスする。
 また、データ提供者端末1400のハードウェア構成と、平文および暗号化グラフデータ400のデータフォーマットと、暗号化グラフ検索クエリ500のデータフォーマットと、暗号化グラフ検索の処理は前記第一の実施例のユーザ端末100と同様である。前記第1の実施例と同一のものに同一の符号を付す。なお、データベースサーバ200は、前記第1実施例と同様である。
 データ利用者端末1500のハードウェア構成は、前記実施例1のユーザ端末100と同様であり、ソフトウェア構成は、平文のグラフ検索要求から平文グラフ検索クエリ420を生成する平文グラフ検索クエリ生成部1510を有する。
 図16は第二の実施例における暗号化データ事前保存処理の一例を示すシーケンス図である。
 まず、データ提供者端末1400は前記実施例1のユーザ端末100と同様に、秘密鍵生成部110が、検索可能暗号秘密鍵生成関数を用いて検索可能暗号暗号化関数、検索可能暗号クエリ関数の入力として使用する秘密鍵150と、検索可能暗号マッチング関数170の入力として使用する検索鍵160を生成する(S100)。
 次に、データ提供者端末1400は自身が保持している平文グラフデータ140を図5で示したデータフォーマットに従って、検索可能暗号暗号化関数と、検索可能暗号クエリ関数と上記ステップS100で生成した秘密鍵150を用いて暗号化し、暗号化グラフと暗号化クエリを含む暗号化グラフデータ400を生成する(S200)。
 次に、データ提供者端末1400は暗号化グラフデータ400をデータベースサーバ200に送信する。
 次に、データ提供者端末1400は上記ステップS100で生成した検索鍵160をデータベースサーバ200に送信する。また、データ提供者端末1400は、検索可能暗号マッチング関数170をデータベースサーバ200に送信し、事前保存処理を終了する。
 図17は、データ提供者端末1400とデータ利用者端末1500とデータベースサーバ200の暗号化グラフ検索処理の一例を示すシーケンス図である。
 まず、データ利用者端末1500は、平文グラフ検索クエリ生成部1510で平文グラフ検索クエリ420を生成して、データ提供者端末1400に送信する(S500)。この平文グラフ検索クエリ420のデータフォーマットは、前記実施例1の暗号化グラフ検索クエリのデータフォーマット(図6)と同様とし、データの中身を平文とする。
 例えば、平文グラフ検索クエリ420は、グラフデータ中に頂点ノードAを始点とし、頂点ノードDを終点とする経路が存在するか否かを問い合わせる。この問合せの場合、平文グラフ検索クエリ生成部1510は、図6に示した始点クエリ501の領域に平文Aを入力し、終点クエリ502の領域に平文Dを入力した2つのデータを平文グラフ検索クエリ420として生成する。
 次に、データ提供者端末1400は、データ利用者端末1500か平文グラフ検索クエリ420を受信する。データ提供者端末1400の暗号化グラフ検索クエリ生成部130は、図6で示したデータフォーマットに従って暗号化グラフ検索クエリ500を生成し、データ利用者端末1500に送信する(S300)。
 次に、データ利用者端末1500は上記S300で生成した暗号化グラフ検索クエリ500を受信すると、そのまま暗号化グラフ検索クエリ500をデータベースサーバ200に送信する。
 次に、データベースサーバ200のDBMS300は、前記実施例1と同様に受信した暗号化グラフ検索クエリ500を暗号化グラフ検索部310へ入力して暗号化グラフデータ400上で暗号化グラフ検索処理を実行する。暗号化グラフ検索部310は、検索結果を暗号化検索処理結果600として生成する。そして、DBMS300はデータ利用者端末1500に暗号化検索処理結果600を返信する(S400)。
 また、暗号化グラフ検索クエリ500としてグラフデータ中に頂点ノードAを始点とし、頂点ノードDを終点とする経路が存在するか否かといった判定問題を問い合わせた場合には、暗号化検索処理結果600は[Yes]もしくは[No]といった2値の結果を出力することができる。
 暗号化グラフ検索クエリ500で、特定の頂点ノードに隣接する頂点ノードの集合を検索した場合、データベースサーバ200からは対象の頂点ノードに隣接した頂点ノードの暗号文が暗号化検索処理結果600として出力される。
 この場合、データ利用者端末1500は、秘密鍵150を保持するデータ提供者端末1400に受信した暗号化検索処理結果600を送信し、復号処理を依頼する。そして、隣接した頂点ノードの平文集合をデータ提供者端末1400がデータ利用者端末1500へ返信してもよい。
 また、データ提供者端末1400が秘密鍵150をデータ利用者端末1500に送信し、データ利用者端末1500が暗号化グラフ検索クエリの生成や、暗号化検索処理結果600の復号処理を行ってもよい。
 以上、本実施例2のように、データ提供者端末1400とデータ利用者端末1500に分けた場合でも、暗号化データと暗号化クエリの送受信が増大するのを抑制でき、特に、トラバース処理では、処理に必要なデータの生成および送受信処理を抑制することが可能となって、暗号化されたグラフ構造を持つデータの検索処理に要する負荷を低減することができるのである。
 なお、図17のステップS300でデータ提供者端末1400は、データ利用者端末1500へ暗号化グラフ検索クエリ500を送信したが、データベースサーバ200へ暗号化グラフ検索クエリ500と検索結果の送信先を送信しても良い。
 次に、本発明の第三の実施例を図面に基づいて説明する。
 図18は、本発明の第三の実施例を示し、暗号化グラフ検索システムの一例を示すブロック図である。図示のように、暗号化グラフ検索システムは、データ提供者端末1400Aと、データ利用者端末1500と、鍵管理サーバ1600とがネットワーク300を介して相互に情報を送受信できるように構成されており、鍵管理サーバ1600とデータベースサーバ200が相互に情報を送受信できるように接続されている。なお、データベースサーバ200がネットワーク300に接続されていても良い。
 前記第一の実施例及び第二の実施例と第三の実施例との相違は、第三の実施例では鍵管理サーバ1600を設置し、暗号化と、復号化及びクエリ生成などの秘密鍵150を利用する処理を鍵管理サーバ1600が行う点である。
 データベースサーバ200は、前記実施例1と同様である。データ利用者端末1500は、前記実施例2と同様である。
 以下、図19、図20を用いて本実施例3を説明する。
 データ提供者端末1400Aは、前記実施例2の構成の内、平文グラフデータ140のみを有する。一方、鍵管理サーバ1600は、前記実施例1のユーザ端末100から平文グラフデータ140を除いたものである。すなわち、鍵管理サーバ1600は、秘密鍵生成部110と、暗号化グラフデータ生成部120と、暗号化グラフ検索クエリ生成部130と、秘密鍵150と、検索鍵160と、暗号化グラフ検索クエリ500とを含む。以下の説明では、前記実施例1または実施例2と同一の構成には、同一の符号を用いる。
 図19は第三の実施例を示し、暗号化グラフデータの事前保存処理の一例を示すシーケンス図である。
 まず、鍵管理サーバ1600は、前記実施例1のユーザ端末100と同様に、秘密鍵生成部110が、検索可能暗号秘密鍵生成関数を用いて検索可能暗号暗号化関数、検索可能暗号クエリ関数の入力として使用する秘密鍵150と、検索可能暗号マッチング関数170の入力として使用する検索鍵160を生成する(S100)。
 次に、データ提供者端末1400は自身が保持している平文グラフデータ140(図4)を鍵管理サーバ1600に送信する。鍵管理サーバ1600は受信した平文グラフデータ140を図5で示したデータフォーマットに従って、検索可能暗号暗号化関数暗号化と、検索可能暗号クエリ関数と、上記ステップS100で生成した秘密鍵150を用いて暗号化し、暗号化グラフと暗号化クエリを含む暗号化グラフデータ400を生成する(S200)。
 次に、鍵管理サーバ1600は暗号化グラフデータ400をデータベースサーバ200に送信する。次に、鍵管理サーバ1600は、上記ステップS100で生成した検索鍵160をデータベースサーバ200に送信する。また、鍵管理サーバ1600は、検索可能暗号マッチング関数170をデータベースサーバ200に送信し、事前保存処理を終了する。
 図20は、データ提供者端末1400とデータ利用者端末1500と鍵管理サーバ1600とデータベースサーバ200の暗号化グラフ検索処理の一例を示すフローチャートである。
 まず、データ利用者端末1500は、前記実施例2と同様に、平文グラフ検索クエリ生成部1510で平文グラフ検索クエリ420を生成し、鍵管理サーバ1600へ送信する(S500)。
 次に、鍵管理サーバ1600の暗号化グラフ検索クエリ生成部130は、図6で示したデータフォーマットに従って暗号化グラフ検索クエリ500を生成し、暗号化グラフ検索クエリ500をデータベースサーバ200に送信する(S300)。
 次に、データベースサーバ200のDBMS300は、前記実施例1と同様に、受信した暗号化グラフ検索クエリ500を暗号化グラフ検索部310へ入力して暗号化グラフデータ400上で暗号化グラフ検索処理を実行する。暗号化グラフ検索部310は、検索結果を暗号化検索処理結果600として生成し、鍵管理サーバ1600に返信する(S400)。
 この時、暗号化グラフ検索クエリ500としてグラフデータ中に頂点ノードAを始点、頂点ノードDを終点とする経路が存在するか否かといった判定問題を問い合わせた場合には、暗号化検索処理結果600は[Yes]もしくは[No]といった2値を出力することができる。
 暗号化グラフ検索クエリ500で、特定の頂点ノードに隣接する頂点ノードの集合を検索した場合、データベースサーバ200からは対象の頂点ノードに隣接した頂点ノードの暗号文が暗号化検索処理結果600として出力される。
 このように暗号化検索処理結果600が暗号文を含む場合、鍵管理サーバ1600は秘密鍵を用いて暗号文の復号処理を行う(S500)。次に、復号化した検索処理結果430をデータ利用者端末1500に送信し、検索処理を終了する。
 以上、本実施例3のように、データ提供者端末1400とデータ利用者端末1500と鍵管理サーバ1600に分けた場合でも、暗号化データと暗号化クエリの送受信が増大するのを抑制でき、特に、トラバース処理では、処理に必要なデータの生成および送受信処理を抑制することが可能となって、暗号化されたグラフ構造を持つデータの検索処理に要する負荷を低減することができるのである。
 次に、本発明の第四の実施の形態を図面に基づいて説明する。
 前記第一の実施例では、暗号化グラフデータ400を図5に示したデータフォーマットで暗号化していた。そして、図7において事前保存処理が終了した段階で、データベースサーバ200が、例えば図5の暗号化グラフデータ400の辺番号1の暗号化クエリ終点453=「Query(B)」を用いて、図5の暗号化グラフデータ400の暗号化始点402のカラムに対して検索可能暗号マッチング関数を用いて検索を行うと、辺番号4の暗号化始点402=「Enc(B)」がマッチングでヒットするか否かを判定可能である。
 結果として、データベースサーバ200は、ユーザ端末100が暗号化グラフ検索クエリ500を送信する前に、辺番号1の終点ノードと辺番号4の始点ノードが一致するといった暗号化グラフデータ400のグラフ構造、つまり、どのノードが始点で、どのノードが終点で、どのノードと連結しているか、といった情報を取得することができる。第二、第三の実施例でもこの状況は同様である。
 そこで本実施例4では、ユーザ端末100が暗号化グラフ検索クエリ500を送信した際に初めてグラフ構造、つまり、どのノードが始点で、どのノードが終点で、どのノードと連結しているかをデータベースサーバ200で算出可能にする。換言すると、データベースサーバ200は、暗号化グラフ検索クエリ500を受信するまで暗号化クエリを実行しても解を得られない。
 このため、本実施例4では、前記実施例1の暗号化グラフデータ400のデータフォーマットを前記特許文献1に基づいて変形して暗号化グラフデータ400Bとしたものである。その他の構成については、前記実施例1と同様である。
 まず、ユーザ端末100の秘密鍵生成部110では、共通鍵暗号方法C(-,-)とハッシュ関数H(-)を用意する。ただし、共通鍵暗号方法C(-,-)を用いてメッセージmを秘密鍵skで暗号化した暗号文をC(m,sk)で表記し、メッセージmのハッシュ関数H(-)のハッシュ値をH(m)で表記する。また、共通鍵暗号方法、ハッシュ関数はそれぞれ前記非特許文献1、2を用いてもよい。
 図21は、本実施例4における暗号化グラフデータ400Bのデータフォーマットである。図21に示す通り、図5からの変更点は、暗号化クエリ始点451のカラムと暗号化クエリ終点453カラムの各セルの値Query(-)が共通鍵暗号方法C(-,-)で暗号化されている点である。
 例えば、辺番号1の暗号化クエリ終点453の値は、前記実施例1の図5ではQuery(B)となっていたが、図21ではC(Query(B),e1)に変更されている。
 ここで、辺番号1の暗号化クエリ終点453のC(Query(B),e1)の秘密鍵e1は、辺番号1の暗号化始点Enc(A)を特許文献1に開示された検索可能暗号方法の検索可能暗号暗号化関数を用いて暗号文を生成する(特許文献1では秘匿登録データ712作成処理と称している)際の準同型関数値F(708)の前述のハッシュ関数Hのハッシュ値である。
 つまり、秘密鍵e1=H(F)となる。以下、特許文献1に開示された検索可能暗号方法の検索可能暗号暗号化関数を用いて暗号文Enc(X)を生成する際の準同型関数値F(708)をFR-Enc(X)で表す。
 同様に暗号化クエリ終点453のカラムの各セルを共通鍵暗号方法C(-,-)で暗号化する際に、辺番号401=2以降で、秘密鍵e1,e2,e3,e4,e5の値を、それぞれ対応する辺番号の始点Enc(A),Enc(A),Enc(C),Enc(B),Enc(C)を、前記特許文献1に開示された検索可能暗号方法の検索可能暗号暗号化関数を用いて暗号化する際の準同型関数値FR-Enc(A),FR-Enc(C),FR-Enc(B),FR-Enc(C)のハッシュ関数Hによるハッシュ値とする。
 つまり、
e1=H(FR-Enc(A)),
e2=H(FR-Enc(A)),
e3=H(FR-Enc(C)),
e4=H(FR-Enc(B)),
e5=H(FR-Enc(C)
とする。
 以上で、暗号化クエリ終点453のカラムの各セルがe1,e2,e3,e4,e5で暗号化されたため、前記実施例1の図7に示した事前保存処理終了時、つまりユーザ端末100から暗号化グラフ検索クエリ500と準同型関数値を受信していない状態であり、検索可能暗号マッチング関数170と暗号化クエリを用いて検索を実行することは困難となる。
 一方、特許文献1のS1311の処理の(8)式に開示されるとおり、この準同型関数値FR-Enc(A)は、検索可能暗号マッチング関数170を用いて、Enc(A)とQuery(A)のマッチング処理を行う処理内でデータベースサーバ200がユーザ端末100から取得する。
 このため、データベースサーバ200は、ユーザ端末100から暗号化グラフ検索クエリ500内のQuery(A)を受信し、準同型関数値FR-Enc(A)を取得し、ハッシュ関数Hを用いてハッシュ値H(FR-Enc(A))=e1を計算し、鍵e1を得る。これにより、データベースサーバ200は、ユーザ端末100から取得した準同型関数値FR-Enc(A)を用いて秘密鍵e1を算出することで、辺番号1の暗号化クエリ終点453のカラムのC(Query(B),e1)を復号化し、Query(B)を得ることができる。すなわち、ユーザ端末100は、第2の鍵e1で暗号化クエリをさらに暗号化し、検索実行の際には、暗号化された暗号化クエリを解凍する準同型関数値をクエリ実行鍵として送信する。
 そして、データベースサーバ200では、クエリ実行鍵である準同型関数値からハッシュ関数Hで第2の鍵e1を算して、暗号化された暗号化クエリを復号し、暗号化クエリを得る。なお、ハッシュ関数Hは、ユーザ端末100が予め検索鍵160等とともにデータベースサーバ200へ送信しておけば良い。
 以後、同様に前記実施例1の図9、10で示したトラバース処理についても実行することが可能となる。ただし、データベースサーバ200は、検索可能暗号マッチング関数170を用いてマッチング処理を実行する際に、マッチングでヒットした際のマッチング処理の処理において、暗号化クエリ終点453カラムの各セルを共通鍵C(-,-)で暗号化した際に用いた準同型関数値鍵FR-Enc(X)を用いて秘密鍵を演算し、暗号化クエリ終点453のカラムの各セルを復号化し、トラバース処理を実行する。
 また、上述の例では暗号化クエリ終点453のカラムの各セルを共通鍵暗号方法C(-,-)で暗号化する際の秘密鍵を、同じ辺番号の暗号化始点402の暗号文を生成する際の準同型関数値FR-Enc(X)のハッシュ関数Hのハッシュ値H(FR-Enc(X))とする例を示した。本実施例4は、これに限定されるものではなく、暗号化クエリ始点451のカラムの各セルを共通鍵暗号方法C(-,-)で暗号化する際の秘密鍵として、同じ辺番号の暗号化終点404の暗号文を生成する際の準同型関数値FR-Enc(X)のハッシュ関数Hのハッシュ値H(FR-Enc(X))としてもよい。
 つまり、図21の暗号化クエリ始点451のカラムの各暗号文C(Query(A),s1),C(Query(A),s2),C(Query(C),s3),C(Query(B),s4),C(Query(C),s5)に用いられている秘密鍵s1,s2,s3,s4,s5,として、
s1= H(FR-Enc(B)),
s2= H(FR-Enc(C)),
s3= H(FR-Enc(B)),
s4= H(FR-Enc(D)),
s5= H(FR-Enc(D)
とする。そして、グラフの終点から始点を遡るトラバース処理の際に、暗号化終点404のマッチング処理の中間処理において算出される準同型関数値から上述の秘密鍵150を算出してもよい。
 以上より、本実施例4によれば、暗号化されたグラフ構造を持つデータの検索処理に要する負荷を低減するのに加えて、暗号化クエリをさらに暗号化しておくことで、暗号化グラフデータ400Bの機密性を向上させることができる。したがって、データのアウトソースを行う際には、セキュリティを確保しながらも、検索処理に要する負荷を低減することが可能となる。
 なお、上記実施例4では、暗号化した暗号化クエリを復号する鍵として準同型関数値FR-Enc(X)をユーザ端末100から取得して、暗号化クエリを復号する例を示したが、秘密鍵をユーザ端末100から取得するようにしてもよい。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
 また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。

Claims (14)

  1.  プロセッサとメモリとを含む第1の計算機が、始点と辺と終点を含むグラフを暗号化して暗号化グラフを生成し、プロセッサとメモリを備えた第2の計算機で前記暗号化グラフを検索する暗号化グラフの検索方法であって、
     前記第1の計算機が、予め設定された検索可能暗号アルゴリズムの秘密鍵生成関数を用いて秘密鍵を生成する第1のステップと、
     前記第1の計算機が、前記検索可能暗号アルゴリズムの暗号化関数を用いて前記グラフを暗号化して暗号化グラフを生成する第2のステップと、
     前記第1の計算機が、前記検索可能暗号アルゴリズムの検索可能暗号クエリ関数を用いて前記グラフを検索するクエリを暗号化して暗号化クエリを生成する第3のステップと、
     前記第1の計算機が、前記グラフの辺毎に前記暗号化グラフと前記暗号化クエリとを対応付けた暗号化グラフデータを前記第2の計算機に送信する第4のステップと、
     前記第1の計算機が、前記検索可能暗号アルゴリズムの検索可能暗号マッチング関数を前記第2の計算機に送信する第5のステップと、
     前記第2の計算機が、前記暗号化グラフデータと前記検索可能暗号マッチング関数を受信して格納する第6のステップと、
     前記第1の計算機が、検索対象の前記グラフの始点と終点を前記検索可能暗号クエリ関数で暗号化して暗号化グラフ検索クエリを生成し、当該暗号化グラフ検索クエリを前記第2の計算機へ送信する第7のステップと、
     前記第2の計算機が、前記暗号化グラフ検索クエリを受信して、当該暗号化グラフ検索クエリと前記暗号化グラフデータを入力として前記検索可能暗号マッチング関数を用いて検索処理を実行する第8のステップと、
     前記第2の計算機が、前記検索処理の結果を前記第1の計算機へ送信する第9のステップと、
    を含むことを特徴とする暗号化グラフの検索方法。
  2.  請求項1に記載の暗号化グラフの検索方法であって、
     前記第3のステップは、第2の鍵を用いて前記暗号化クエリをさらに暗号化することを特徴とする暗号化グラフの検索方法。
  3.  請求項2に記載の暗号化グラフの検索方法であって、
     前記第7のステップは、
     前記第2の鍵を生成したクエリ実行鍵を送信するステップをさらに含み、
     前記第8のステップは、
     前記クエリ実行鍵を受信して第2の鍵を算出するステップをさらに含むことを特徴とする暗号化グラフの検索方法。
  4.  請求項1に記載の暗号化グラフの検索方法であって、
     前記第1のステップは、
     前記検索可能暗号アルゴリズムの秘密鍵生成関数を用いて検索可能暗号マッチング関数の入力となる検索鍵を生成するステップをさらに含み、
     前記第5のステップは、
     前記検索鍵を前記第2の計算機に送信するステップをさらに含み、
     前記第8のステップは、
     前記検索鍵を入力として前記検索可能暗号マッチング関数を使用可能にするステップをさらに含むことを特徴とする暗号化グラフの検索方法。
  5.  請求項1に記載の暗号化グラフの検索方法であって、
     前記グラフは、
     前記始点から前記終点への向きを有する有向グラフであって、
     前記第8のステップは、
     前記検索対象の有効グラフの始点とする辺の終点を検出するステップと、
     前記終点を始点とする他の辺を検出するステップと、を含むことを特徴とする暗号化グラフの検索方法。
  6.  請求項5に記載の暗号化グラフの検索方法であって、
     前記第8のステップは、
     前記他の辺の終点が、前記検索対象の有効グラフの終点を含む場合には、前記始点から前記終点までの辺を経路として出力するステップと、
     前記他の辺の終点が、前記検索対象の有効グラフの終点に一致しない場合には、前記他の辺の終点を始点とするさらに他の辺を検索するステップと、を含むことを特徴とする暗号化グラフの検索方法。
  7.  請求項6に記載の暗号化グラフの検索方法であって、
     前記第8のステップは、
     前記検索対象の終点から終点までの辺からなる経路のうち、最短経路または最長経路を検索の結果として出力するステップをさらに含むことを特徴とする暗号化グラフの検索方法。
  8.  請求項6に記載の暗号化グラフの検索方法であって、
     前記第8のステップは、
     前記検索対象の始点と終点が存在するか否かを検索結果として出力するステップをさらに含むことを特徴とする暗号化グラフの検索方法。
  9.  請求項1に記載の暗号化グラフの検索方法であって、
     前記第7のステップは、
     第3の計算機が、前記検索対象のグラフの始点と終点を前記第1の計算機へ送信するステップと、
     前記第1の計算機が、前記検索対象のグラフの始点と終点を受信して、当該始点と終点を前記検索可能暗号クエリ関数で暗号化して暗号化グラフ検索クエリを生成し、当該暗号化グラフ検索クエリを前記第3の計算機へ送信するステップと、
     前記第3の計算機が、受信した前記暗号化グラフ検索クエリを前記第2の計算機へ送信するステップと、を含み、
     前記第9のステップは、
     前記第2の計算機が、前記検索処理の結果を前記第3の計算機へ送信することを特徴とする暗号化グラフの検索方法。
  10.  請求項1に記載の暗号化グラフの検索方法であって、
     前記第7のステップは、
     第3の計算機が、前記検索対象のグラフの始点と終点を前記第1の計算機へ送信するステップと、
     前記第1の計算機が、前記検索対象のグラフの始点と終点を受信して、当該始点と終点を前記検索可能暗号クエリ関数で暗号化して暗号化グラフ検索クエリを生成し、当該暗号化グラフ検索クエリを前記第2の計算機へ送信するステップと、を含み、
     前記第9のステップは、
     前記第2の計算機が、前記検索処理の結果を前記第3の計算機へ送信することを特徴とする暗号化グラフの検索方法。
  11.  請求項9に記載の暗号化グラフの検索方法であって、
     前記第2のステップは、
     第4の計算機が、前記グラフを前記第1の計算機へ送信するステップと、
     前記第1の計算機が、前記グラフを受信して、前記検索可能暗号アルゴリズムの暗号化関数を用いて前記グラフを暗号化して暗号化グラフを生成するステップと、を含むことを特徴とする暗号化グラフの検索方法。
  12.  プロセッサとメモリとを含む第1の計算機が、始点と辺と終点を含むグラフを暗号化して暗号化グラフを生成し、プロセッサとメモリを備えた第2の計算機で前記暗号化グラフを検索する暗号化グラフの検索システムであって、
     前記第1の計算機は、
     予め設定された検索可能暗号アルゴリズムの秘密鍵生成関数を用いて秘密鍵を生成する秘密鍵生成部と、
     前記検索可能暗号アルゴリズムの暗号化関数を用いて前記グラフを暗号化して暗号化グラフを生成し、前記検索可能暗号アルゴリズムの検索可能暗号クエリ関数を用いて前記グラフを検索するクエリを暗号化して暗号化クエリを生成し、前記グラフの辺毎に前記暗号化グラフと前記暗号化クエリとを対応付けた暗号化グラフデータと、前記検索可能暗号アルゴリズムの検索可能暗号マッチング関数を前記第2の計算機に送信する暗号化グラフデータ生成部と、
     検索対象の前記グラフの始点と終点を前記検索可能暗号クエリ関数で暗号化して暗号化グラフ検索クエリを生成し、当該暗号化グラフ検索クエリを前記第2の計算機へ送信する暗号化グラフ検索クエリ生成部と、を有し、
     前記第2の計算機は、
     前記暗号化グラフデータと前記検索可能暗号マッチング関数を受信して格納し、前記暗号化グラフ検索クエリを受信して、当該暗号化グラフ検索クエリと前記暗号化グラフデータを入力として前記検索可能暗号マッチング関数を用いて検索処理を実行し、前記検索処理の結果を前記第1の計算機へ送信する暗号化グラフ検索部を有することを特徴とする暗号化グラフの検索システム。
  13.  プロセッサとメモリとを含む計算機であって、
     グラフデータに含まれる複数の始点と辺と終点の値の各々が検索可能暗号アルゴリズムの第1の関数により暗号化された複数の値からなる暗号化グラフデータと、前記グラフデータに含まれる複数の始点と辺と終点の値の各々の検索クエリが前記検索可能暗号アルゴリズムの第2の関数により暗号化された複数の暗号化クエリとが、始点と辺と終点からなるデータセット毎に対応付けられて前記メモリに記録されていることを特徴とする計算機。
  14.  請求項13に記載された計算機であって、
     前記プロセッサは、前記暗号化グラフデータの所定の始点及び終点の値を検索するための第1及び第2の暗号化クエリを受信すると、
     前記検索可能暗号アルゴリズムの第3の関数を用いて、前記第1の暗号化クエリで前記メモリに記録された前記複数の暗号化された始点の値を検索することにより、前記第1の暗号化クエリの平文と一致する平文を持つ暗号化された始点の値を特定し、
     前記第3の関数を用いて、特定した前記暗号化された始点の値に対応付けられて記録された暗号化された終点の値の平文が前記第2の暗号化クエリの平文と一致するか否かを判定し、
     一致しないと判定した場合、前記第3の関数を用いて、前記暗号化された終点の値に対応付けられて記録された終点の暗号化クエリで、前記メモリに記録された前記複数の暗号化された始点の値を検索することを特徴とする計算機。
PCT/JP2014/079615 2014-11-07 2014-11-07 暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機 WO2016072022A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/524,145 US20170322977A1 (en) 2014-11-07 2014-11-07 Method for retrieving encrypted graph, system for retrieving encrypted graph, and computer
EP14905559.2A EP3217293B1 (en) 2014-11-07 2014-11-07 Method for retrieving encrypted graph, system for retrieving encrypted graph, and computer
PCT/JP2014/079615 WO2016072022A1 (ja) 2014-11-07 2014-11-07 暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/079615 WO2016072022A1 (ja) 2014-11-07 2014-11-07 暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機

Publications (1)

Publication Number Publication Date
WO2016072022A1 true WO2016072022A1 (ja) 2016-05-12

Family

ID=55908774

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/079615 WO2016072022A1 (ja) 2014-11-07 2014-11-07 暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機

Country Status (3)

Country Link
US (1) US20170322977A1 (ja)
EP (1) EP3217293B1 (ja)
WO (1) WO2016072022A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016120975A1 (ja) * 2015-01-26 2016-08-04 株式会社日立製作所 データ集計分析システム及びその方法
US10002146B1 (en) * 2017-02-13 2018-06-19 Sas Institute Inc. Distributed data set indexing
US10642828B2 (en) * 2017-10-10 2020-05-05 Sap Se Searchable encryption scheme with external tokenizer
US11397825B2 (en) * 2019-08-09 2022-07-26 Kyndryl, Inc. Encrypted knowledge graph
US20230016113A1 (en) * 2021-07-17 2023-01-19 International Business Machines Corporation Secure Query Processing on Graph Stores
CN115865953B (zh) * 2023-02-17 2023-05-16 广州合利宝支付科技有限公司 一种基于跨境支付的分布式存储系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008501175A (ja) * 2004-05-28 2008-01-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プロテクトされた構造化されたデータのクエリ方法及び装置
US20110138190A1 (en) * 2009-12-09 2011-06-09 Microsoft Corporation Graph encryption
JP2012123614A (ja) * 2010-12-08 2012-06-28 Hitachi Ltd 検索可能暗号処理システム
JP2014052863A (ja) * 2012-09-07 2014-03-20 Ricoh Co Ltd 情報処理装置、情報処理システム、情報処理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW486902B (en) * 2000-08-11 2002-05-11 Neovue Inc Method capable of preventing electronic documents from being illegally copied and its system
DE10045919A1 (de) * 2000-09-16 2002-03-28 Schlafhorst & Co W Vorrichtung zum Steuern eines Spulenrahmens einer Textilmaschine
US20050195975A1 (en) * 2003-01-21 2005-09-08 Kevin Kawakita Digital media distribution cryptography using media ticket smart cards
US20130170645A1 (en) * 2011-12-29 2013-07-04 Mediatek Inc. Encryption and decryption devices and methods thereof
CN110086830B (zh) * 2012-08-15 2022-03-04 维萨国际服务协会 可搜索的经加密的数据
US9253077B2 (en) * 2012-11-30 2016-02-02 International Business Machines Corporation Parallel top-K simple shortest paths discovery

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008501175A (ja) * 2004-05-28 2008-01-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プロテクトされた構造化されたデータのクエリ方法及び装置
US20110138190A1 (en) * 2009-12-09 2011-06-09 Microsoft Corporation Graph encryption
JP2012123614A (ja) * 2010-12-08 2012-06-28 Hitachi Ltd 検索可能暗号処理システム
JP2014052863A (ja) * 2012-09-07 2014-03-20 Ricoh Co Ltd 情報処理装置、情報処理システム、情報処理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3217293A4 *

Also Published As

Publication number Publication date
EP3217293A4 (en) 2018-07-11
US20170322977A1 (en) 2017-11-09
EP3217293A1 (en) 2017-09-13
EP3217293B1 (en) 2019-05-08

Similar Documents

Publication Publication Date Title
US11003681B2 (en) Anonymization system
WO2016072022A1 (ja) 暗号化グラフの検索方法、暗号化グラフの検索システム及び計算機
US9021259B2 (en) Encrypted database system, client terminal, encrypted database server, natural joining method, and program
US10664610B2 (en) Method and system for range search on encrypted data
WO2016120975A1 (ja) データ集計分析システム及びその方法
US10095719B2 (en) Method and system to perform secure Boolean search over encrypted documents
US20240104234A1 (en) Encrypted information retrieval
US20230006813A1 (en) Encrypted information retrieval
JP2014528680A (ja) デジタルコンテンツ伝送の方法、システムおよび装置
WO2017168798A1 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
Gaikwad et al. Privacy preserving outsourced k nearest neighbors classification: comprehensive study
JP6642425B2 (ja) 条件生成装置、条件生成方法、条件生成プログラム、データベース検索システム、及び、データベース検索プログラム
JP7440662B2 (ja) マルチキー情報検索
Cao et al. One privacy-preserving multi-keyword ranked search scheme revisited
Mathew et al. Aiding Effective Encrypted Document Manipulation Incorporated with Document Categorization Technique in Cloud
Prakash et al. Graph Structured Data Security using Trusted Third Party Query Process in Cloud Computing

Legal Events

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

Ref document number: 14905559

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2014905559

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 15524145

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

NENP Non-entry into the national phase

Ref country code: JP