Secure search system, registration device, search operation device, secure search method, registration method, search operation method, registration program, and search operation program
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Filing Date
- 2024-10-15
- Publication Date
- 2026-01-08
AI Technical Summary
Existing confidential search methods for encrypted data suffer from increased search execution time and keyword expansion when performing range searches, particularly in wide search ranges, leading to decreased search speed.
A confidential search system that generates encrypted tags and search queries by incorporating keyword length codes and aggregation codes, reducing the number of search keywords by grouping keywords with common lengths and replacing them with aggregation codes, thereby optimizing search efficiency.
The system effectively reduces the number of search keywords and maintains search speed even in wide search ranges by using length codes and aggregation codes, enhancing the efficiency of range searches in encrypted data.
Abstract
Description
Confidential search system, registration device, search operation device, confidential search method, registration method, search operation method, registration program, and search operation program
[0001] The present disclosure relates to range searches in secure search techniques.
[0002] Private search is a technology that allows you to search data while it remains encrypted.
[0003] The use of cloud storage, which is inexpensive and instantly available, has become common. However, when managing data containing sensitive information in cloud storage, the data must be encrypted to prevent information leaks. Private search allows searches of encrypted data without decryption, achieving both security and convenience.
[0004] A private search uses two encrypted keywords to perform a search. The first encrypted keyword is the ciphertext of the keyword (registered keyword) associated with the data. This ciphertext is called the "encrypted tag." The second encrypted keyword is the ciphertext of the keyword (search keyword) to be searched. This ciphertext is called the "search query."
[0005] When data is registered, the encrypted data and encrypted tag are registered in the server's storage. At this time, the encrypted tag is linked to the associated data or data identifier and stored in the storage. When searching for data, a search query is sent to the server to request a search. The server identifies encrypted tags that match the search query from among the encrypted tags stored in the storage. At this time, the server identifies encrypted tags that match the search query without knowing the registration keyword or search keyword. As a result, information about the data and keywords is not exposed. Finally, the server returns the encrypted data linked to the matching encrypted tag to the searcher.
[0006] Some confidential search methods allow for range searches as well as exact match searches. In an exact match search, a match is determined if the registered keyword and the search keyword are identical. In a range search, a match is determined if the registered keyword is included in the range specified by the searcher.
[0007] Range searches are more convenient than exact match searches because they allow for more ambiguous searches. For example, assume that the registered keywords are integers greater than or equal to 0. Also assume that the registered keywords are "98" and "123," and the closed interval [99, 212] is used as the range of search keywords. In this case, a range search will determine that "123" matches, and "98" does not match.
[0008] One naive way to implement a range search is to perform an exact match search using all search keywords included in the range. However, with this method, the exact match search is repeated as many times as there are search keywords included in the range. Therefore, if the range is wide, it has a significant impact on the search execution time.
[0009] Patent Literature 1 discloses a confidential search technique that reduces the search execution time for range searches. This technique introduces a special character "?" that represents a single-digit integer from 0 to 9. This allows multiple search keywords within the search range to be represented by a single search keyword, reducing the number of times exact match searches are repeated. The special character "?" introduced in this technique is called a "wildcard character."
[0010] To make wildcard characters in search keywords work, registered keywords must be expanded into a set of strings, and strings incorporating wildcard characters must be added to the set. For example, the registered keyword "98" is converted into the set {98, 9?} and encrypted. This set has two elements. The registered keyword "123" is converted into the set {123, 12?, 1?} and encrypted. This set has three elements. Furthermore, the search range [99, 212] is converted into {99, 1??, 20?, 210, 211, 212} using wildcard characters and encrypted. In this case, the number of search keywords is reduced from 114 using a naive method to six.
[0011] In this way, the technique of Patent Document 1 increases the size of the encrypted tag, but can significantly reduce the size of the search query compared to the naive technique. In other words, the technique of Patent Document 1 achieves high-speed range searches.
[0012] However, with the method of Patent Document 1, the wider the search range, the greater the number of search keywords. For example, the number of search keywords {1? ? , 2? ? , 9? ?} in the search range [100,999] is 9. However, the number of search keywords {1? ? , 9? ? , 1? ? , 9? ?} in the search range [100,9999] is 18, and the number of search keywords in the search range [100,999999] is 36. Furthermore, an increase in the number of search keywords causes a decrease in search speed.
[0013] Patent No. 6910477
[0014] An object of the present disclosure is to enable a reduction in the number of search keywords in the search range in a confidential search.
[0015] The confidential search system of the present disclosure comprises: a registration device that generates, for each registered data, a registered keyword having, as an element, a keyword length code that represents the length of the keyword for the registered data, encrypts the registered keyword to generate an encrypted tag, and registers the pair of the registered data and the encrypted tag; and a search operation device that replaces, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, the search keyword group with an aggregation code that represents the length of the search keywords that belong to the search keyword group, thereby generating a search keyword set having, as an element, the aggregation code for each search keyword group, and encrypts the search keyword set to generate a search query.
[0016] According to the present disclosure, two or more search keywords that are included in a search range and have a common length are replaced with an aggregation code that represents the length of the search keywords, thereby reducing the number of search keywords in the search range in a confidential search.
[0017] 1. A configuration diagram of a confidential search system 100 according to the first embodiment. A configuration diagram of a registration device 200 according to the first embodiment. A configuration diagram of a generation unit 220 according to the first embodiment. A configuration diagram of a search operation device 300 according to the first embodiment. A configuration diagram of a generation unit 320 according to the first embodiment. A configuration diagram of a data management device 400 according to the first embodiment. A flowchart of a confidential search method according to the first embodiment. A flowchart of step S110 according to the first embodiment. A flowchart of step S120 according to the first embodiment. A flowchart of step S130 according to the first embodiment. A hardware configuration diagram of a registration device 200 according to the first embodiment. A hardware configuration diagram of a search operation device 300 according to the first embodiment. A hardware configuration diagram of a data management device 400 according to the first embodiment.
[0018] In the embodiments and drawings, the same or corresponding elements are denoted by the same reference numerals. The description of elements denoted by the same reference numerals as those already described will be omitted or simplified as appropriate. Arrows in the drawings primarily indicate the flow of data or the flow of processing.
[0019] First Embodiment A confidential search system 100 will be described with reference to FIGS.
[0020] ***Description of Configuration*** The configuration of the confidential search system 100 will be described based on Fig. 1. The confidential search system 100 comprises a registration device 200, a search operation device 300, and a data management device 400. The registration device 200, the search operation device 300, and the data management device 400 can communicate with each other via a network 101.
[0021] The configuration of the registration device 200 will be described with reference to Fig. 2. The registration device 200 is a computer that includes hardware such as a processor 201, a memory 202, an auxiliary storage device 203, a communication device 204, and an input / output interface 205. These pieces of hardware are connected to each other via signal lines.
[0022] The processor 201 is the processor of the registration device 200. The processor is an IC that performs arithmetic processing and controls other hardware. For example, the processor is a CPU, DSP, or GPU. IC is an abbreviation for Integrated Circuit. CPU is an abbreviation for Central Processing Unit. DSP is an abbreviation for Digital Signal Processor. GPU is an abbreviation for Graphics Processing Unit.
[0023] The memory 202 is the memory of the registration device 200. Data stored in the memory 202 is saved in the auxiliary storage device 203 as needed. The memory is a volatile or non-volatile storage device. The memory is also called a primary storage device or a main memory. For example, the memory is a RAM. RAM is an abbreviation for Random Access Memory.
[0024] The auxiliary storage device 203 is an auxiliary storage device of the registration device 200. Data stored in the auxiliary storage device 203 is loaded into the memory 202 as needed. The auxiliary storage device is a non-volatile storage device. For example, the auxiliary storage device is a ROM, a HDD, a flash memory, or a combination thereof. ROM is an abbreviation for Read Only Memory. HDD is an abbreviation for Hard Disk Drive.
[0025] The communication device 204 is a communication device of the registration device 200. The communication of the registration device 200 is performed using the communication device 204. The communication device is a receiver and a transmitter. For example, the communication device is a communication chip or NIC. NIC is an abbreviation for Network Interface Card.
[0026] The input / output interface 205 is an input / output interface of the registration device 200. Input and output of the registration device 200 is performed via the input / output interface 205. The input / output interface is a port to which an input device and an output device are connected. For example, the input / output interface is a USB terminal, the input devices are a keyboard and a mouse, and the output device is a display. USB is an abbreviation for Universal Serial Bus.
[0027] The registration device 200 includes elements such as a reception unit 210, a generation unit 220, and a registration unit 230. These elements are realized by software.
[0028] The auxiliary storage device 203 stores a registration program for causing the computer to function as the reception unit 210, the generation unit 220, and the registration unit 230. The registration program is loaded into the memory 202 and executed by the processor 201. The auxiliary storage device 203 also stores an OS. At least a portion of the OS is loaded into the memory 202 and executed by the processor 201. The processor 201 executes the registration program while running the OS. OS is an abbreviation for Operating System.
[0029] Data (input data, output data, etc.) of the registered program is stored in the storage unit 290. The memory 202 functions as the storage unit 290. However, a storage device such as the auxiliary storage device 203, a register in the processor 201, or a cache memory in the processor 201 may function as the storage unit 290 instead of or together with the memory 202.
[0030] The registration program can be recorded (stored) in a computer-readable manner on a non-volatile recording medium such as an optical disk or a flash memory.
[0031] The configuration of the generation unit 220 will be described with reference to Fig. 3. The generation unit 220 includes a keyword acquisition unit 221, a keyword conversion unit 222, a keyword addition unit 223, an encrypted tag generation unit 224, and a random number generation unit 225.
[0032] The configuration of the search operation device 300 will be described with reference to Fig. 4. The search operation device 300 is a computer equipped with hardware such as a processor 301, a memory 302, an auxiliary storage device 303, a communication device 304, and an input / output interface 305. These pieces of hardware are connected to each other via signal lines.
[0033] Processor 301 is the processor of search operation device 300. Memory 302 is the memory of search operation device 300. Data stored in memory 302 is saved in auxiliary storage device 303 as needed. Auxiliary storage device 303 is the auxiliary storage device of search operation device 300. Data stored in auxiliary storage device 303 is loaded into memory 302 as needed. Communication device 304 is the communication device of search operation device 300. Communication of search operation device 300 is performed using communication device 304. Input / output interface 305 is the input / output interface of search operation device 300. Input and output of search operation device 300 is performed via input / output interface 305.
[0034] The search operation device 300 includes elements such as a receiving unit 310, a generating unit 320, a requesting unit 330, and an output unit 340. These elements are realized by software.
[0035] The auxiliary storage device 303 stores a search operation program for causing the computer to function as a receiving unit 310, a generating unit 320, a request unit 330, and an output unit 340. The search operation program is loaded into the memory 302 and executed by the processor 301. The auxiliary storage device 303 also stores an OS. At least a portion of the OS is loaded into the memory 302 and executed by the processor 301. The processor 301 executes the search operation program while running the OS.
[0036] Data (input data, output data, etc.) of the search operation program is stored in the storage unit 390. The memory 302 functions as the storage unit 390. However, a storage device such as the auxiliary storage device 303, a register in the processor 301, or a cache memory in the processor 301 may function as the storage unit 390 instead of or together with the memory 302.
[0037] The search operation program can be recorded (stored) in a computer-readable manner on a non-volatile recording medium such as an optical disk or a flash memory.
[0038] The configuration of the generation unit 320 will be described with reference to Fig. 5. The generation unit 320 includes a keyword enumeration unit 321, a keyword aggregation unit 322, and a search query generation unit 323.
[0039] The configuration of the data management device 400 will be described with reference to Fig. 6. The data management device 400 is a computer that includes hardware such as a processor 401, a memory 402, an auxiliary storage device 403, a communication device 404, and an input / output interface 405. These pieces of hardware are connected to each other via signal lines.
[0040] The processor 401 is the processor of the data management device 400. The memory 402 is the memory of the data management device 400. Data stored in the memory 402 is saved in the auxiliary storage device 403 as needed. The auxiliary storage device 403 is the auxiliary storage device of the data management device 400. Data stored in the auxiliary storage device 403 is loaded into the memory 402 as needed. The communication device 404 is the communication device of the data management device 400. Communication of the data management device 400 is performed using the communication device 404. The input / output interface 405 is the input / output interface of the data management device 400. Input and output of the data management device 400 is performed via the input / output interface 405.
[0041] The data management device 400 includes elements such as a reception unit 410, a search unit 420, and an output unit 430. These elements are realized by software.
[0042] The auxiliary storage device 403 stores a data management program for causing the computer to function as a reception unit 410, a search unit 420, and an output unit 430. The data management program is loaded into the memory 402 and executed by the processor 401. The auxiliary storage device 403 also stores an OS. At least a portion of the OS is loaded into the memory 402 and executed by the processor 401. The processor 401 executes the data management program while running the OS.
[0043] Data (input data, output data, etc.) of the data management program is stored in the storage unit 490. The memory 402 functions as the storage unit 490. However, a storage unit such as the auxiliary storage unit 403, a register in the processor 401, or a cache memory in the processor 401 may function as the storage unit 490 instead of or together with the memory 402.
[0044] The data management program can be recorded (stored) in a computer-readable manner on a non-volatile recording medium such as an optical disk or flash memory.
[0045] ***Explanation of Operation*** The operation procedures of the confidential search system 100 correspond to a confidential search method. Also, the operation procedures of the confidential search system 100 correspond to processing procedures by a confidential search program. The operation procedures of the registration device 200 correspond to a registration method. Also, the operation procedures of the registration device 200 correspond to processing procedures by a registration program. The operation procedures of the search operation device 300 correspond to a search operation method. Also, the operation procedures of the search operation device 300 correspond to processing procedures by a search operation program. The operation procedures of the data management device 400 correspond to a data management method. Also, the operation procedures of the data management device 400 correspond to processing procedures by a data management program.
[0046] The confidential search method will be described with reference to Fig. 7. In step S110, the registration device 200 generates a registration keyword for each piece of registration data using a keyword for the registration data, encrypts the registration keyword to generate an encrypted tag, and registers a pair of the registration data and the encrypted tag.
[0047] The registered data is data that is registered for confidential search and is searched by confidential search.
[0048] A keyword for registered data is composed of a symbol string in which one or more symbols are lined up. Specifically, a symbol string is a string in which one or more symbols (e.g., numbers) with a defined order are lined up. A specific example of a symbol string is an integer. An integer is a symbol string in which one or more numbers are lined up. However, a symbol string may be a numerical value other than an integer. A symbol string may also be a character string in which one or more characters are lined up. Furthermore, a symbol string may be a string of other symbols (e.g., marks), or a string that combines two or more of numbers, letters, and other symbols.
[0049] A registered keyword is data whose elements are a keyword for registered data, one or more converted keywords, and a keyword long code. A converted keyword is a keyword generated by replacing some symbols in a symbol string that constitutes a keyword for registered data with wildcard symbols. The keyword long code is a code that represents the length of the keyword for registered data.
[0050] The encrypted tag is an encrypted registered keyword.
[0051] Step S110 will be described in detail later.
[0052] In step S120, the search operation device 300 generates a set of search keywords based on the search range, and encrypts the set of search keywords to generate a search query.
[0053] The search range is the range of the symbol string to be searched.
[0054] A search keyword set is data whose elements are an aggregation code for each search keyword group and each search keyword that does not belong to any search keyword group. A search keyword group is composed of two or more search keywords that are included in the search range and have a common length. In particular, when all search keywords with a common length are included in the search range, all search keywords with a common length constitute a search keyword group. The aggregation code is a code that represents the length of the search keywords that belong to the search keyword group. In the search keyword set, the search keyword group is replaced with an aggregation code for each search keyword group.
[0055] A search query is an encrypted set of search keywords.
[0056] Step S120 will be described in detail later.
[0057] In step S130, the data management device 400 compares the encrypted tag for each piece of registered data with the search query, and outputs the registered data for the encrypted tag that matches the search query.
[0058] Step S110 will be described in detail with reference to Fig. 8. Step S110 is executed by the registration device 200.
[0059] Steps S111 to S118 are executed for each piece of registered data D.
[0060] In step S111, the encrypted tag generating unit 224 obtains the private key K.
[0061] The private key K is obtained as follows: The private key K is stored in the storage unit 290, and the encrypted tag generation unit 224 obtains the private key K from the storage unit 290. For example, the private key K is obtained from another device and stored in advance in the storage unit 290. However, the encrypted tag generation unit 224 may obtain the private key K from another device.
[0062] In step S112, the accepting unit 210 accepts the registration data D.
[0063] For example, the registration data D is input to the registration device 200, and the reception unit 210 receives the input registration data D. The reception unit 210 may also receive the registration data D from another device.
[0064] Then, the receiving unit 210 passes the registration data D to the keyword obtaining unit 221 .
[0065] In step S113, the keyword acquiring unit 221 acquires the keyword W for the registered data D.
[0066] For example, the keyword acquiring unit 221 extracts the keyword W from the registered data D by performing morphological analysis or natural language processing on the registered data D. However, the keyword W may be input to the registration device 200, and the keyword acquiring unit 221 may receive the input keyword W.
[0067] Then, the keyword acquisition unit 221 passes the keyword W to the keyword conversion unit 222 .
[0068] In step S114, the random number generation unit 225 generates a random number. The generated random number is referred to as a tag random number R. The tag random number R is passed to the encrypted tag generation unit 224.
[0069] In step S115, the keyword conversion unit 222 converts the keyword W to generate a registered keyword U.
[0070] For example, if the keyword W is an integer "123", the following registered keyword U is generated: U={123, 12?, 1?}
[0071] The registered keyword U has three elements: "123", "12?", and "1??". "123" is the same as the keyword W. "12?" and "1??" are conversion keywords, which are generated by replacing part of the symbol string "123" that makes up the keyword W with the wildcard symbol "?".
[0072] Then, the keyword conversion unit 222 passes the registered keyword U to the keyword addition unit 223 .
[0073] In step S116, the keyword adding unit 223 adds a keyword long code to the registered keyword U.
[0074] For example, if the keyword W is an integer, the character string "n digits" representing the number of digits n of the keyword W becomes the keyword long code.
[0075] For example, if the keyword W is an integer "123" and the registered keyword U is {123, 12?, 1??}, the keyword long code "3 digits" is added to the registered keyword U as follows: U={123, 12?, 1??, 3 digits}
[0076] Then, the keyword adding unit 223 passes the registered keyword U to the encrypted tag generating unit 224 .
[0077] In step S117, the encrypted tag generation unit 224 encrypts the registered keyword U to generate an encrypted tag CT.
[0078] The encrypted tag CT is generated as follows: A registered keyword U having m elements can be expressed as follows: U={u1, u2, ..., um}
[0079] Each element ui of the registered keyword U is encrypted using a secret key K, a tag random number R, and an encrypted tag generation function ET. The encrypted element ui is referred to as an element ti. The element ti is expressed as follows: ti = ET(K, ui, R).
[0080] The encrypted tag CT is expressed as follows using each element ti and the tag random number R: CT=((t1, t2, . . . , tn), R)
[0081] In step S118 , the registration unit 230 registers the set of the registration data D and the encrypted tag CT in the data management device 400 .
[0082] Specifically, the registration unit 230 communicates with the data management device 400 to register a set of the registration data D and the encrypted tag CT in the data management device 400. As a result, the set of the registration data D and the encrypted tag CT is stored in the storage unit 490 of the data management device 400.
[0083] Step S120 will be described in detail with reference to Fig. 9. Step S120 is executed by the search operation device 300.
[0084] In step S121, the search query generation unit 323 acquires the private key K.
[0085] The private key K is acquired as follows. The private key K is stored in the storage unit 390, and the search query generation unit 323 acquires the private key K from the storage unit 390. For example, the private key K is acquired from another device and stored in the storage unit 390 in advance. However, the search query generation unit 323 may also acquire the private key K from another device. Note that the private key K in step S121 may be the same as the private key K in step S111, or may be different from the private key K in step S111. Furthermore, if there are multiple search operation devices 300, the private key K may be different for each search operation device 300.
[0086] In step S122, the receiving unit 310 receives the search range [FROM, TO].
[0087] The search range [FROM, TO] indicates the range from the symbol string "FROM" to the symbol string "TO." For example, the search range [99, 10000] indicates the range of integers from "99" to "10000."
[0088] For example, a search range [FROM, TO] is input to the search operation device 300, and the receiving unit 310 receives the input search range [FROM, TO]. Alternatively, the receiving unit 310 may receive the search range [FROM, TO] from another device.
[0089] Then, the receiving unit 310 passes the search range [FROM, TO] to the keyword listing unit 321 .
[0090] In step S123, the keyword enumeration unit 321 generates a keyword set RANGE based on the search range [FROM, TO].
[0091] For example, when the search range is [99, 10000], the following keyword set RANGE is generated: RANGE={99, 1???, 2???, ..., 9???, 1???, 2???, ..., 9???, 10000}
[0092] "1???" represents the range from 100 to 199, "2???" represents the range from 200 to 299, and "9???" represents the range from 900 to 999. The subset {1???, 2???, ..., 9???} represents all three-digit integers (100 to 999). "1???" represents the range from 1000 to 1999, "2???" represents the range from 2000 to 2999, and "9???" represents the range from 9000 to 9999. The subset {1???, 2???, ..., 9???} represents all four-digit integers (1000 to 9999).
[0093] Then, the keyword enumeration unit 321 passes the keyword set RANGE to the keyword aggregation unit 322 .
[0094] In step S124, the keyword aggregating unit 322 attempts to aggregate elements of the keyword set RANGE.
[0095] For example, in the keyword set RANGE, a subset representing all n-digit integers is replaced with an aggregate code "n-digits".
[0096] For example, assume that the keyword set RANGE before aggregation is expressed as follows: RANGE = {99, 1???, 2???, ..., 9???, 1???, 2???, ..., 9???, 10000} The subset {1???, 2???, ..., 9???} is composed of nine symbol strings with a common length (number of digits) and represents all three-digit integers. Therefore, this subset (group of search keywords) is aggregated and replaced with the aggregation code "3 digits." The subset {1???, 2???, ..., 9???} is composed of nine symbol strings with a common length (number of digits) and represents all four-digit integers. Therefore, this subset (group of search keywords) is aggregated and replaced with the aggregation code "4 digits." As a result, the aggregated keyword set RANGE (search keyword set) is expressed as follows: RANGE={99, 3 digits, 4 digits, 10000}
[0097] Then, the keyword aggregating unit 322 passes the keyword set RANGE to the search query generating unit 323 .
[0098] In step S125, the search query generation unit 323 generates a search query Q by encrypting the keyword set RANGE.
[0099] A search query Q is generated as follows: A keyword set RANGE having m elements can be expressed as follows: RANGE={RANGE1, RANGE2, ..., RANGEm}
[0100] Each element RANGEi of the keyword set RANGE is encrypted using a secret key K and a search query generation function EQ. The encrypted element RANGEi is referred to as an element qi. The element qi is expressed as follows: qi = EQ(K, RANGEi).
[0101] A search query Q is expressed as follows using each element qi: Q=(q1, q2, ..., qm)
[0102] Then, the search query generation unit 323 passes the search query Q to the request unit 330 .
[0103] In step S126 , the request unit 330 transmits the search query Q to the data management device 400 .
[0104] In step S127 , the request unit 330 receives the search results from the data management device 400 .
[0105] In step S128, the output unit 340 outputs the search results.
[0106] For example, the output unit 340 displays the search results on a display.
[0107] Step S130 will be described in detail with reference to Fig. 10. Step S130 is executed by the data management device 400.
[0108] In step S131 , the receiving unit 410 receives the search query Q from the search operation device 300 and passes the search query Q to the search unit 420 .
[0109] In step S132, the search unit 420 compares the search query Q with the encrypted tag CT for each piece of registered data D, and searches for registered data D for the encrypted tag CT that matches the search query Q.
[0110] The search query Q and the encrypted tag CT are matched using a matching function CMP. The search query Q and the encrypted tag CT are expressed as follows: Q = (q1, q2, ..., qm) CT = ((t1, t2, ..., tn), R) The matching function CMP is expressed as follows using element qj of the search query Q, element ti of the encrypted tag CT, and tag random number R: V = CMP((ti, R), qj) "V" is a variable that indicates whether element ti and element qj "match" or "mismatch".
[0111] The search query Q is matched with the encrypted tag CT using the matching function CMP as follows: The matching function CMP is executed for any combination of an element qj of the search query Q and an element ti of the encrypted tag CT. Then, if there is one or more combinations (ti, qj) for which the result V of the matching function CMP is a "match," the search query Q is determined to "match" the encrypted tag CT; otherwise, the search query Q is determined to "mismatch" the encrypted tag CT.
[0112] Then, the search unit 420 passes the registered data D for the encrypted tag CT that matches the search query Q to the output unit 430 .
[0113] In step S133 , the output unit 430 transmits the search results to the search operation device 300 .
[0114] The search results indicate registered data D (relevant data) for the encrypted tag CT that matches the search query Q. However, if no relevant data is found, the search results indicate that no relevant data was found.
[0115] *** Supplementary explanation of operation *** In a private search, the registered keywords and search range are encrypted using a private key, and an encrypted tag and search query are generated. Depending on the private search method, the private key used to generate the encrypted tag may differ from the private key used to generate the search query.
[0116] In the first embodiment, a range search is performed using an exact match search in a confidential search.
[0117] A method for generating encrypted tags and search queries in an exact match search will now be described. An encrypted tag CT for a registered keyword W is generated using a secret key K, a tag random number R, and an encrypted tag generation function ET as follows: CT = (ET(K, W, R), R) A search query Q for a search keyword W is generated using a secret key K and an encrypted query generation function EQ as follows: Q = EQ(K, W)
[0118] A method for matching an encrypted tag with a search query in an exact match search will now be described. A variable V is generated as follows using the encrypted tag CT, the search query Q, and the matching function CMP. The variable V indicates a match or mismatch: V = CMP(CT, Q).
[0119] ) CMP。 English: For example, the encrypted tag generation function ET, the search query generation function EQ, and the matching function CMP can be configured as follows: Each of the functions F1 and F2 is a pseudo-random function, a hash function, or a function of a symmetric key cryptography method. The encrypted tag generation function ET is expressed as follows: "||" means concatenation. ET(K, W, R) = F2(F1(K||W)||R) The search query generation function EQ is expressed as follows: EQ(K, W) = F1(K||W) The matching function CMP is a function that first calculates F2(Q||R) using the tag random number R, which is the second element of the encrypted tag CT, and the search query Q, and returns "match" if F2(Q||R) and the first element of the encrypted tag CT are identical, and returns "mismatch" otherwise.
[0120] The registration device 200 operates as follows. First, the registration device 200 receives the registration data D and extracts the keyword W from the registration data D. Next, the registration device 200 converts the keyword W to generate the registration keyword U. The registration keyword U is expressed as follows: U = {u1, u2, ..., un} Next, the registration device 200 encrypts the registration keyword U using the secret key K to generate the encrypted tag CT. Then, the registration device 200 registers the data D and the encrypted tag CT in the data management device 400.
[0121] Multiple keywords W may be extracted from the registered data D. The registered data D may be plain text or cipher text. If the registered data D is cipher text, the registered data D included in the search results may be decrypted and then output in step S128. The keyword W may be received via the input / output interface 205 of the registration device 200 without being extracted from the data D. In this case, the registered data D may be cipher text.
[0122] The search operation device 300 operates as follows. First, the search operation device 300 receives a search range [FROM, TO] and converts the search range [FROM, TO] to generate a set of search keywords W'. The search keywords W' are expressed as follows: W'={w'1, w'2, ..., w'm} Then, the search operation device 300 encrypts each search keyword w'i using a secret key K to generate a search query Q.
[0123] The data management device 400 operates as follows: First, the data management device 400 receives a search query Q and identifies an encrypted tag that matches the search query Q from among the registered encrypted tags CT. Then, the data management device 400 returns to the search operation device 300 the registered data D linked to the encrypted tag CT that has been determined to match.
[0124] ***Effects of First Embodiment*** The first embodiment is a form of range search in which the number of search keywords expressing elements in the search range is reduced.
[0125] The first embodiment has the following features: The registration device includes information about the length of the registered keyword in the encrypted tag. The search operation device aggregates elements within the search range based on the length of the keyword, thereby reducing the number of elements.
[0126] In the first embodiment, in a range search when the search range is wide, the size of the encrypted tag increases compared to the conventional method, but the size of the search query is significantly reduced. Therefore, the first embodiment can suppress a decrease in search speed.
[0127] The range search described in Patent Document 1 has a problem in that the search speed decreases when the difference between the maximum and minimum elements of the search range is large. Embodiment 1 reduces the number of search keywords that represent elements of the search range by introducing a new character string. More specifically, Embodiment 1 introduces a character string "n digits" that represents the length of the keyword, so that search keywords with the same length are represented by a single search keyword. Embodiment 1 makes it possible to suppress a decrease in search speed even when the difference between the maximum and minimum elements of the search range is large.
[0128] ***Example of First Embodiment*** The keyword length code may express the length of the keyword for the registered data as a range of keyword lengths. The aggregation code may express the length of the search keyword belonging to the search keyword group as a range of search keyword lengths. For example, if the aggregated keyword set RANGE has three aggregation codes, {1 digit, 2 digits, 3 digits}, as elements, the three elements {1 digit, 2 digits, 3 digits} can be further aggregated into an aggregation code, {3 digits or less}. In other words, the number of elements in the aggregated keyword set RANGE can be further reduced.
[0129] An example of a symbol string that can be used as a keyword is an integer. The integer may be a decimal number, or an integer with a base other than "10" (such as binary or hexadecimal). The larger the base, the greater the benefit of reducing search queries. It is also possible to apply a mixed radix, which allows the base to be set for each digit.
[0130] *** Supplementary Note on First Embodiment *** The hardware configuration of the registration device 200 will be described with reference to Fig. 11 . The registration device 200 includes a processing circuit 209. The processing circuit 209 is the processing circuit of the registration device 200. The processing circuit 209 is hardware that realizes the reception unit 210, the generation unit 220, and the registration unit 230.
[0131] The processing circuitry may be dedicated hardware or may be a processor that executes a program stored in a memory.
[0132] If the processing circuit is dedicated hardware, it may be, for example, a single circuit, a multiple circuit, a programmed processor, a parallel programmed processor, an ASIC, an FPGA, or a combination thereof. ASIC is an abbreviation for Application Specific Integrated Circuit. FPGA is an abbreviation for Field Programmable Gate Array.
[0133] The registration device 200 may include multiple processing circuits that replace the processing circuit 209.
[0134] In the processing circuit 209, some functions may be realized by dedicated hardware, and the remaining functions may be realized by software or firmware.
[0135] Thus, the functionality of registration device 200 can be realized in hardware, software, firmware, or a combination thereof.
[0136] The hardware configuration of the search operation device 300 will be described with reference to Fig. 12. The search operation device 300 includes a processing circuit 309. The processing circuit 309 is the processing circuit of the search operation device 300. The processing circuit 309 is hardware that realizes a reception unit 310, a generation unit 320, a request unit 330, and an output unit 340. The search operation device 300 may include multiple processing circuits that replace the processing circuit 309.
[0137] In the processing circuit 309, some functions may be realized by dedicated hardware, and the remaining functions may be realized by software or firmware.
[0138] In this way, the functions of the search operation device 300 can be realized by hardware, software, firmware, or a combination of these.
[0139] The hardware configuration of the data management device 400 will be described with reference to Fig. 13. The data management device 400 includes a processing circuit 409. The processing circuit 409 is the processing circuit of the data management device 400. The processing circuit 409 is hardware that realizes a reception unit 410, a search unit 420, and an output unit 430. The data management device 400 may include multiple processing circuits that replace the processing circuit 409.
[0140] In the processing circuit 409, some functions may be realized by dedicated hardware, and the remaining functions may be realized by software or firmware.
[0141] In this way, the functions of the data management device 400 can be realized by hardware, software, firmware, or a combination of these.
[0142] The first embodiment is an example of a preferred embodiment and is not intended to limit the technical scope of the present disclosure. The first embodiment may be implemented in part or in combination with other embodiments. The procedures described using flowcharts and the like may be modified as appropriate.
[0143] The "part" of each element of the registration device 200, the search operation device 300, and the data management device 400 may be read as "processing," "step," "circuit," or "circuitry."
[0144] Aspects of the present disclosure are described below as supplementary notes. (Supplementary Note 1) A secret search system comprising: a registration device that generates, for each registered data, registered keywords having, as elements, keyword length codes that represent the lengths of the keywords for the registered data, encrypts the registered keywords to generate encrypted tags, and registers a set of the registered data and the encrypted tags; and a search operation device that replaces, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, the search keyword group with an aggregation code that represents the lengths of the search keywords that belong to the search keyword group, to generate a search keyword set having, as elements, the aggregation code for each search keyword group, and encrypts the search keyword set to generate a search query.
[0145] (Supplementary Note 2) The registration device generates one or more converted keywords for each of the registered data by replacing some symbols in a symbol string constituting the keyword for the registered data with wildcard symbols, and generates the registered keyword having the keyword for the registered data, the one or more converted keywords, and the keyword long code as elements. This is the confidential search system described in Supplementary Note 1.
[0146] (Supplementary Note 3) The confidential search system according to Supplementary Note 1 or Supplementary Note 2, wherein the search operation device generates the search keyword set having, as elements, the aggregation code for each of the search keyword groups and each of the search keywords that do not belong to any of the search keyword groups.
[0147] (Supplementary Note 4) The confidential search system according to any one of Supplementary Note 1 to Supplementary Note 3, further comprising a data management device that compares the encrypted tag for each of the registered data with the search query, and outputs the registered data for the encrypted tag that matches the search query.
[0148] (Supplementary Note 5) A registration device comprising: a generation unit that generates, for each registration data, a registration keyword having as an element a keyword length code that represents the length of a keyword for the registration data, and encrypts the registration keyword to generate an encrypted tag; and a registration unit that registers a pair of the registration data and the encrypted tag.
[0149] (Supplementary Note 6) The registration device described in Supplementary Note 5, wherein the generation unit generates one or more converted keywords for each of the registered data by replacing some symbols in a symbol string constituting the keyword for the registered data with wildcard symbols, and generates the registered keyword having the keyword for the registered data, the one or more converted keywords, and the keyword long code as elements.
[0150] (Supplementary Note 7) A search operation device comprising: a generation unit that generates a search keyword set having the aggregation code for each search keyword group as an element by replacing the search keyword group with an aggregation code that represents the lengths of the search keywords belonging to the search keyword group for each search keyword group, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, and encrypts the search keyword set to generate a search query.
[0151] (Supplementary Note 8) The search operation device according to Supplementary Note 7, wherein the generation unit generates the search keyword set having, as elements, the aggregation code for each of the search keyword groups and each of the search keywords that do not belong to any of the search keyword groups.
[0152] (Supplementary Note 9) A confidential search method comprising: generating, for each registered data, a registered keyword having, as an element, a keyword length code that represents the length of the keyword for the registered data; encrypting the registered keyword to generate an encrypted tag; registering a pair of the registered data and the encrypted tag; replacing, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, the search keyword group with an aggregation code that represents the lengths of the search keywords that belong to the search keyword group, thereby generating a search keyword set having, as an element, the aggregation code for each search keyword group; and encrypting the search keyword set to generate a search query.
[0153] (Supplementary Note 10) A registration method comprising: generating, for each registration data, a registration keyword having, as an element, a keyword length code representing the length of a keyword for the registration data; encrypting the registration keyword to generate an encrypted tag; and registering a pair of the registration data and the encrypted tag.
[0154] (Supplementary Note 11) A search operation method, comprising: for each search keyword group consisting of two or more search keywords included in a search range and having a common length, replacing the search keyword group with an aggregation code representing the lengths of the search keywords belonging to the search keyword group, generating a search keyword set having the aggregation code for each search keyword group as an element, and encrypting the search keyword set to generate a search query.
[0155] (Supplementary Note 12) A registration program for causing a computer to execute the following steps: a generation process for generating, for each registration data, a registration keyword having as an element a keyword length code that represents the length of the keyword for the registration data, and encrypting the registration keyword to generate an encrypted tag; and a registration process for registering a set of the registration data and the encrypted tag.
[0156] (Supplementary Note 13) A search operation program for causing a computer to execute a generation process of generating a search keyword set having the aggregation code for each search keyword group as an element by replacing the search keyword group with an aggregation code that represents the length of the search keywords belonging to the search keyword group for each search keyword group that is comprised of two or more search keywords that are included in a search range and have a common length, and encrypting the search keyword set to generate a search query.
[0157] 100 Confidential search system, 101 Network, 200 Registration device, 201 Processor, 202 Memory, 203 Auxiliary storage device, 204 Communication device, 205 Input / output interface, 209 Processing circuit, 210 Reception unit, 220 Generation unit, 221 Keyword acquisition unit, 222 Keyword conversion unit, 223 Keyword addition unit, 224 Encrypted tag generation unit, 225 Random number generation unit, 230 Registration unit, 290 Storage unit, 300 Search operation device, 301 Processor, 302 Memory, 303 Auxiliary storage device, 304 Communication device, 305 Input / output interface, 309 Processing circuit, 310 Reception unit, 320 Generation unit, 321 Keyword enumeration unit, 322 Keyword aggregation unit, 323 Search query generation unit, 330 Request unit, 340 Output unit, 390 Storage unit, 400 Data management device, 401 processor, 402 memory, 403 auxiliary storage device, 404 communication device, 405 input / output interface, 409 processing circuit, 410 reception unit, 420 search unit, 421 matching unit, 422 extraction unit, 430 output unit, 490 storage unit.
Claims
1. A confidential search system comprising: a registration device that generates, for each registered data, registered keywords having as elements keyword length codes that represent the lengths of the keywords for the registered data, encrypts the registered keywords to generate encrypted tags, and registers the sets of the registered data and the encrypted tags; and a search operation device that replaces, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, the search keyword group with an aggregation code that represents the lengths of the search keywords that belong to the search keyword group, generates a search keyword set having as elements the aggregation code for each search keyword group, and encrypts the search keyword set to generate a search query.
2. The confidential search system of claim 1, wherein the registration device generates one or more converted keywords for each registered data by replacing some symbols in a symbol string constituting the keyword for the registered data with wildcard symbols, and generates the registered keyword having as elements the keyword for the registered data, the one or more converted keywords, and the keyword long code.
3. The confidential search system according to claim 1 or claim 2, wherein the search operation device generates the search keyword set having as elements the aggregation code for each of the search keyword groups and each of the search keywords that do not belong to any of the search keyword groups.
4. A confidential search system according to any one of claims 1 to 3, comprising a data management device that compares the encrypted tag for each piece of registered data with the search query, and outputs the registered data for the encrypted tag that matches the search query.
5. A registration device comprising: a generation unit that generates, for each registration data, a registration keyword having as an element a keyword length code that represents the length of the keyword for the registration data, and encrypts the registration keyword to generate an encrypted tag; and a registration unit that registers a pair of the registration data and the encrypted tag.
6. The registration device according to claim 5, wherein the generation unit generates one or more converted keywords for each of the registered data by replacing some of the symbols in the symbol string constituting the keyword for the registered data with wildcard symbols, and generates the registered keyword having the keyword for the registered data, the one or more converted keywords, and the keyword long code as elements.
7. A search operation device comprising a generation unit that replaces each search keyword group consisting of two or more search keywords that are included in a search range and have a common length with an aggregation code that represents the length of the search keywords belonging to the search keyword group, generates a search keyword set having the aggregation code for each search keyword group as an element, and encrypts the search keyword set to generate a search query.
8. The search operation device according to claim 7, wherein the generation unit generates the search keyword set having as elements the aggregation code for each of the search keyword groups and each of the search keywords that do not belong to any of the search keyword groups.
9. A secret search method comprising: generating, for each registered data, a registered keyword having, as an element, a keyword length code that represents the length of the keyword for the registered data; encrypting the registered keyword to generate an encrypted tag; registering a pair of the registered data and the encrypted tag; replacing, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, the search keyword group with an aggregation code that represents the length of the search keywords belonging to the search keyword group, thereby generating a search keyword set having, as an element, the aggregation code for each search keyword group; and encrypting the search keyword set to generate a search query.
10. A registration method comprising: generating, for each registration data, a registration keyword having as an element a keyword length code representing the length of the keyword for the registration data; encrypting the registration keyword to generate an encrypted tag; and registering a pair of the registration data and the encrypted tag.
11. A search operation method, which generates a search keyword set having the aggregation code for each search keyword group as an element, by replacing the search keyword group with an aggregation code that represents the length of the search keywords belonging to the search keyword group for each search keyword group, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, and encrypting the search keyword set to generate a search query.
12. A registration program for causing a computer to execute the following steps: a generation process for generating, for each registration data, a registration keyword having as its element a keyword length code that represents the length of the keyword for the registration data, and encrypting the registration keyword to generate an encrypted tag; and a registration process for registering a set of the registration data and the encrypted tag.
13. A search operation program that causes a computer to execute a generation process that replaces, for each search keyword group consisting of two or more search keywords that are included in a search range and have a common length, the search keyword group with an aggregation code that represents the length of the search keywords that belong to the search keyword group, generates a search keyword set having the aggregation code for each search keyword group as an element, and encrypts the search keyword set to generate a search query.