[go: up one dir, main page]

WO2025063010A1 - Secret search system, data management server, and secret search method - Google Patents

Secret search system, data management server, and secret search method Download PDF

Info

Publication number
WO2025063010A1
WO2025063010A1 PCT/JP2024/031272 JP2024031272W WO2025063010A1 WO 2025063010 A1 WO2025063010 A1 WO 2025063010A1 JP 2024031272 W JP2024031272 W JP 2024031272W WO 2025063010 A1 WO2025063010 A1 WO 2025063010A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
vector
keyword
management server
search
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
PCT/JP2024/031272
Other languages
French (fr)
Japanese (ja)
Inventor
寛鵬 篠木
尚宜 佐藤
雅之 吉野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of WO2025063010A1 publication Critical patent/WO2025063010A1/en
Pending legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Definitions

  • searchable encryption which can determine whether multiple ciphertexts match their corresponding plaintexts without the need to decrypt the ciphertexts.
  • Searchable encryption is broadly divided into two types: symmetric key and public key. While symmetric key encryption is highly efficient in terms of search speed and ciphertext size, it requires the use of a private key during encryption, which can make key management difficult when there are many data providers. With public key encryption, encryption can be performed using public parameters without using a private key, making it unnecessary to provide a private key to data providers and facilitating key management. The following non-patent document 1 describes public key searchable encryption.
  • Non-Patent Document 1 uses a lattice structure, resulting in a large ciphertext size. Therefore, one aspect of the present invention is to realize a public key searchable encryption scheme that is fast and has a small ciphertext size.
  • a confidential search system includes a data management server, a data utilization terminal, and a data provision terminal, the data provision terminal holds a registered keyword and a public key, randomly extracts a plurality of vectors, calculates a first hash value of the registered keyword based on a predetermined hash function, generates a first vector based on a vector included in the plurality of vectors and the public key, rounds the components of the vector generated based on a vector included in the plurality of vectors and the first hash value to a predetermined number of most significant bits to generate a second vector, and transmits an encrypted keyword including the first vector and the second vector to the data management server, the data utilization terminal receives a search key, and The data utilization terminal holds a word and a private key corresponding to the public key, calculates a second hash value of the search keyword based on the predetermined hash function, generates a third vector based on the second hash value and the private key,
  • the data usage terminal acquires the keywords to be searched, generates a search query from the acquired keywords, and sends it to the data management server.
  • the data management server performs a search corresponding to the received search query without decrypting the encrypted keywords.
  • the data management server transmits encrypted data and public data corresponding to the encrypted keywords found in the search to the data usage terminal.
  • the data usage terminal decrypts the received encrypted data, and uses the decrypted encrypted data and the received public data.
  • Data management server 100 2 is a block diagram showing an example of the configuration of the data management server 100.
  • the data management server 100 is configured by a computer having a CPU 110, a memory 115, an auxiliary storage device 120, an input device 101, an output device 102, and a communication device 103.
  • CPU 110 is an example of a processor, and executes programs stored in memory 115.
  • Memory 115 includes ROM (Read Only Memory), which is a non-volatile storage element, and RAM (Random Access Memory), which is a volatile storage element.
  • ROM Read Only Memory
  • RAM Random Access Memory
  • ROM stores immutable programs (e.g., BIOS (Basic Input/Output System)).
  • BIOS Basic Input/Output System
  • RAM is a high-speed, volatile storage element such as DRAM (Dynamic Random Access Memory), and temporarily stores programs executed by CPU 110 and data used when executing the programs.
  • the auxiliary storage device 120 is a large-capacity, non-volatile storage device such as a magnetic storage device (HDD (Hard Disk Drive)) or a flash memory (SSD (Solid State Drive)), and stores the programs executed by the CPU 110 and data used when the programs are executed. In other words, the programs are read from the auxiliary storage device 120, loaded into the memory 115, and executed by the CPU 110.
  • HDD Hard Disk Drive
  • SSD Solid State Drive
  • the data management server 100 is a computer system that is configured on one physical computer, or on multiple logically or physically configured computers, and may operate in separate threads on the same computer, or may operate on a virtual computer constructed on multiple physical computer resources. The same applies to the data usage terminal 200 and the data provision terminal 400.
  • the CPU 110 includes, for example, a search processing unit 111 which is a functional unit.
  • the search processing unit 111 performs searches using encrypted keywords.
  • the CPU 110 functions as the search processing unit 111 by operating according to a search processing program loaded into the memory 115.
  • the relationship between the program and the functional unit is also similar for the functional units included in the CPU 210 (described later) of the data utilization terminal 200 and the functional units included in the CPU 410 (described later) of the data provision terminal 400.
  • the functions of the functional units included in the CPU 110, the CPU 210 of the data utilization terminal 200, and the CPU 410 of the data provision terminal 400 may be realized by hardware such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field-Programmable Gate Array).
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • the auxiliary storage device 120 includes, for example, a ciphertext storage unit 130, a plaintext storage unit 140, and a public parameter storage unit 150, all of which are areas for storing data.
  • the ciphertext storage unit 130 stores encrypted data 132 collected from the data providing terminal 400, and encrypted keywords 131 linked to each piece of encrypted data 132.
  • the plaintext storage unit 140 stores public data 141 linked to each encrypted keyword 131.
  • the public parameter storage unit 150 stores public parameters 151 required for processing by the search processing unit 111.
  • auxiliary storage device 120 the auxiliary storage device 220 of the data utilization terminal 200 (described later), and the auxiliary storage device 420 of the data provision terminal 400 (described later) may be stored in the memory 115, memory 215, and memory 415, respectively, or may be stored in an external database connected to the server or the terminal.
  • the hardware explanations of the CPU 210, memory 215, auxiliary storage device 220, input device 201, output device 202, and communication device 203 are omitted because they are similar to the hardware explanations of the CPU 110, memory 115, auxiliary storage device 120, input device 101, output device 102, and communication device 103, respectively.
  • the auxiliary storage device 220 includes a search query storage unit 230 and a key storage unit 240, both of which are areas for storing data.
  • the search query storage unit 230 stores a search query 231 generated by the search query generation processing unit 211 (the search query 231 is stored in association with a corresponding keyword).
  • the key storage unit 240 stores public parameters 241, a private key 242 used for processing by the search query generation processing unit 211, and a data decryption key 243 used for processing by the data decryption processing unit 212.
  • Data providing terminal 400 4 is a block diagram showing an example of the configuration of the data providing terminal 400.
  • the data providing terminal 400 is configured by a computer having a CPU 410, a memory 415, an auxiliary storage device 420, an input device 401, an output device 402, and a communication device 403, for example.
  • the hardware explanations of the CPU 410, memory 415, auxiliary storage device 420, input device 401, output device 402, and communication device 403 are omitted because they are similar to the hardware explanations of the CPU 110, memory 115, auxiliary storage device 120, input device 101, output device 102, and communication device 103, respectively.
  • the CPU 410 includes, for example, a keyword encryption processing unit 411 and a data encryption processing unit 412, both of which are functional units.
  • the keyword encryption processing unit 411 performs encryption processing on the keyword 441.
  • the data encryption processing unit 412 performs encryption processing on the confidential data 442.
  • the auxiliary storage device 420 includes a parameter storage unit 430 and a data storage unit 440, both of which are areas for storing data.
  • the parameter storage unit 430 stores public parameters 431 used in processing by the keyword encryption processing unit 411, and a data encryption key 432 used in processing by the data encryption processing unit 412.
  • the data management server 100 receives the encryption keyword, encrypted data, and public data from each data providing terminal 400, links the received data to the data providing terminal 400 that sent it, and stores the received encryption keyword in the ciphertext memory unit 130 as the encryption keyword 131, stores the received encrypted data in the ciphertext memory unit 130 as the encrypted data 132, and stores the received public data in the plaintext memory unit 140 as the public data 141 (S203).
  • the search processing unit 111 of the data management server 100 searches the encrypted keywords 131 stored in the ciphertext storage unit 130 for an encrypted keyword that corresponds to the search query received from the data utilization terminal 200, and extracts the encrypted data and public data linked to the encrypted keyword found in the search from the ciphertext storage unit 130 and the plaintext storage unit 140 (S207). Details of the search process in step S207 will be described later with reference to FIG. 10.
  • step S201 For a keyword 441 linked only to public data 443, the process of generating encrypted data 445 included in step S201, the process of transmitting encrypted data 445 included in step S202, the process of saving encrypted data 132 included in step S203, the process of extracting encrypted data 132 included in step S207, the process of transmitting encrypted data 132 included in step S208, and the process of decrypting and using the encrypted data included in step S209 are omitted.
  • N is a natural number of a power of 2
  • q is a prime number
  • N' is a natural number of a power of 2 not greater than N
  • m is a natural number not greater than N'
  • L is a natural number not greater than log 2 q
  • 0 ⁇ 1/2 is a real number
  • the parameter generation processing unit 213 sets these parameters according to these conditions and a predetermined security level. Note that the higher the security level is set, the larger N is, and the smaller q is when N is fixed. For example, N can be 1024 or 2048, and q can be a prime number greater than 218 and less than 230 .
  • (Keywords encryption) 8 is a flowchart showing an example of the encrypted keyword generation process included in step S201.
  • the keyword encryption processing unit 411 of the data providing terminal 400 randomly extracts N-dimensional vectors r, e 1 , e 2 ⁇ R/qR with short length (norm) (S401), where R/qR is a remainder ring of R, and will be denoted as Rq hereinafter.
  • the keyword encryption processing unit 411 rounds each component of v to only the most significant L bits (S404). That is, in step S404, the keyword encryption processing unit 411 replaces v with the value obtained by multiplying the integer closest to 2 -L v by 2 L.
  • the processing in step S404 makes it possible to reduce the ciphertext size.
  • the keyword encryption processing unit 411 outputs the combination (u, v) of u calculated in step S403 and v calculated in step S404 as an encrypted keyword (S405). Note that in the method described in Non-Patent Document 1, a hash value for v is further calculated and added to the encrypted keyword, but in this embodiment, since the hash value is not necessary, the amount of calculation required for the calculation process of the hash value is reduced, and the size of the encrypted keyword can be further reduced.
  • step S102 the data utilization terminal 200 transmits all of the public parameters to each data providing terminal 400.
  • the parameters e.g., N, q, h
  • each data providing terminal 400 stores the parameters as public parameters 431.
  • (Search query generation process) 9 is a flowchart showing an example of the search query generation process in step S205.
  • the search query generation processing unit 211 of the data utilization terminal 200 acquires a keyword W to be searched, for example, via an input to the input device 201 (S501).
  • the search query generation processing unit 211 determines whether a search query corresponding to the keyword W acquired in step S501 is stored in the search query storage unit 230 (S502). If the search query generation processing unit 211 determines that a search query 231 corresponding to the keyword W is stored in the search query storage unit 230 (S502: YES), it outputs the corresponding search query 231 (S503) and ends the search query generation process.
  • the search processing unit 111 calculates N' components out of the N components of the N-dimensional vector v-u*s for the encrypted keyword (u, v), and regards each of the calculated N' components as an integer in the range of -q/2 to q/2 among integers that are congruent modulo q (S602). Note that the search processing unit 111 may calculate, for example, any N' components out of the N components of the N-dimensional vector v-u*s, or may calculate N' components at equal intervals.
  • the search processing unit 111 After performing the processes from step S602 to step S605 for all encrypted keywords 131 (S606), the search processing unit 111 outputs all encrypted data 132 and public data 141 that were added to the hit data in step S604 (S607).
  • the search processing unit 111 does not calculate a hash value, and therefore the speed of the search process can be improved.
  • N' is smaller than N
  • the search processing unit 111 performs the processes of steps S603 and S604 only for some components of v-u*s, and therefore the search speed can be further improved.
  • the data providing terminal 400 must also receive N' as a public parameter from the data using terminal 200. Furthermore, in step S602, the search processing unit 111 only needs to calculate v-u*s for the N' components of the encrypted keyword 131 calculated in step S403. Note that which components are the N' components to be calculated in steps S403 and S602 may be determined in advance, or information indicating which N' components are the ones calculated in step S403 may be notified to the data management server 100 from the data providing terminal 400.
  • FIGS. 11A to 11C are diagrams showing examples of the data configuration of data handled in this embodiment.
  • FIG. 11A is a diagram showing examples of the data configuration of keywords 441, confidential data 442, and public data 443 held by the data providing terminal 400.
  • the name of the disease (of the patient), which is an example of keyword 441 the name of the hospital (of the hospital providing the data), which is an example of public data 443, and the age (of the patient), which is an example of confidential data 442 are linked and stored in the auxiliary storage device 420.
  • each disease name is encrypted using public parameters 431 to generate an encryption keyword 444, and each age is encrypted using a data encryption key 432 to generate encrypted data 445.
  • the encrypted disease name, encrypted age, and (unencrypted) hospital name are sent to the data management server 100.
  • FIG. 11B is a diagram showing an example of the data configuration of the encryption keyword 131, public data 141, and encrypted data 132 held by the data management server 100.
  • the encrypted disease name received by the data management server 100 from each data providing terminal 400 is linked as the encryption keyword 131, the encrypted age as the encrypted data 132, and the (unencrypted) hospital name as the public data 141, and these are stored in the auxiliary storage device 120.
  • the values in the disease name and age fields are shown in plain text, but the values in the disease name and age fields are written as ciphertext.
  • FIG. 11C is a diagram showing an example of the data structure of hit data obtained by a search process by the data management server 100.
  • a search query is generated from the keyword "Disease X" by the data usage terminal 200, and in step S207, a search process is performed on the data in FIG. 11B using the search query, resulting in the hit data in FIG. 11C.
  • the hit data in FIG. 11C is data extracted from the data in FIG. 11B by linking public data 141 corresponding to the encrypted keyword 131 corresponding to the keyword "X disease” with encrypted data 132 corresponding to the encrypted keyword 131 corresponding to the keyword "X disease".
  • the values in the age field are shown in plain text for ease of viewing, but the values in the age field are written as cipher text.
  • the hit data in FIG. 11C is transmitted to the data utilization terminal 200.
  • Example 2 describes a use case in which the confidential search system in Example 1 is applied to a questionnaire compilation.
  • the data providers who use the data providing terminals 400 are the respondents to the questionnaire, and the data users who use the data using terminals 200 are the implementers of the questionnaire.
  • the data usage terminal 200 creates questions for a survey and answer options for the questions, for example, in accordance with input to the input device 201, and transmits these to each data providing terminal 400.
  • Each answer option in the survey is an example of a keyword 441.
  • Each data providing terminal 400 accepts a selection for an option, for example according to input to the input device 401, encrypts the selected option in step S201 to generate an encryption keyword 444, and transmits the encryption keyword 444 to the data management server 100 in step S202. However, if multiple options are selected as answers to a question, each data providing terminal 400 encrypts each of the selected options and transmits them to the data management server 100.
  • step S204 the data usage terminal 200 accepts input of a search keyword corresponding to the options to be tabulated via input to the input device 201, and in step S205 generates a search query 231 corresponding to the search keyword and transmits it to the data management server 100.
  • step S207 the data management server 100 executes a search using the search query 231 on all (encrypted) survey results (a set of encrypted keywords 131) received from each data provision terminal 400, and transmits the number of hits to the data usage terminal 200.
  • data management server 100 does not hold encrypted data 132 and public data 141.
  • data management server 100 can also transmit information indicating the hit results of a search using a search query (the number of hits in this embodiment) to data utilization terminal 200, rather than transmitting encrypted data 132 and public data 141 corresponding to encrypted keyword 131 that was found by a search using a search query to data utilization terminal 200.
  • the present invention is not limited to the above-described embodiments, but includes various modified examples.
  • the above-described embodiments have been described in detail to clearly explain the present invention, and are not necessarily limited to those having all of the configurations described. It is also possible to replace part of the configuration of one embodiment with the configuration of another embodiment, and it is also possible to add the configuration of another embodiment to the configuration of one embodiment. It is also possible to add, delete, or replace part of the configuration of each embodiment with other configurations.
  • the above-mentioned configurations, functions, processing units, processing means, etc. may be realized in hardware, in part or in whole, for example by designing them as integrated circuits. Furthermore, the above-mentioned configurations, functions, etc. may be realized in software, by a processor interpreting and executing a program that realizes each function. Information on the programs, tables, files, etc. that realize each function can be stored in a memory, a recording device such as a hard disk or SSD (Solid State Drive), or a recording medium such as an IC card, SD card, or DVD.
  • a recording device such as a hard disk or SSD (Solid State Drive)
  • a recording medium such as an IC card, SD card, or DVD.
  • control lines and information lines shown are those considered necessary for the explanation, and do not necessarily show all control lines and information lines on the product. In reality, it can be assumed that almost all components are interconnected.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

According to the present invention, a data provision terminal transmits, to a data management server, an encrypted keyword including a first vector based on a random vector and a public key, and a second vector obtained by rounding components of a vector generated on the basis of the random vector and a hash value of a registered keyword to higher-order bits. A data utilization terminal generates a search query on the basis of a hash value of a search keyword and a secret key, and transmits the search query to the data management server. The data management server determines whether the search keyword matches the registered keyword on the basis of the number of components included in a first range among at least some components of a vector obtained by subtracting the product of the first vector and the search query from the second vector.

Description

秘匿検索システム、データ管理サーバ、及び秘匿検索方法Confidential search system, data management server, and confidential search method 参照による取り込みIncorporation by Reference

 本出願は、2023年9月22日に出願された日本特許出願第2023-158312号の優先権を主張し、その内容を参照することにより、本出願に取り込む。 This application claims priority to Japanese Patent Application No. 2023-158312, filed on September 22, 2023, the contents of which are incorporated herein by reference.

 本発明は、秘匿検索システム、データ管理サーバ、及び秘匿検索方法に関する。 The present invention relates to a confidential search system, a data management server, and a confidential search method.

 近年、膨大なデータから未知の有効な知識を引き出すビッグデータ分析が注目を集めている。また、企業が、自社が保有するデータはもとより、社外のデータも収集し、マーケティングや業務効率化に活用するなど、情報の種々の分析はますます重要な活動として広く認識されてきている。一方で、顧客の個人情報を含む情報が漏えいする事件及び事故が多発しており社会問題となっている。 In recent years, big data analysis, which extracts previously unknown and useful knowledge from huge amounts of data, has been attracting attention. In addition, various types of information analysis are being widely recognized as an increasingly important activity, with companies collecting data from outside the company as well as their own, and using it for marketing and business efficiency. On the other hand, there have been frequent incidents and accidents in which information, including personal information of customers, has been leaked, which has become a social problem.

 そこで、安全性の高い暗号化技術を用いながら、暗号化した状態のまま何らかの処理を可能にする技術の研究に注目が集まっている。このような技術の一つとして、複数の暗号文を復号することなく、当該複数の暗号文それぞれに対応する平文が一致するか判定できる検索可能暗号の研究が盛んに行われている。 Therefore, research is being focused on technologies that use highly secure encryption technology while still allowing some processing to be done while the data remains encrypted. One such technology is searchable encryption, which can determine whether multiple ciphertexts match their corresponding plaintexts without the need to decrypt the ciphertexts.

 検索可能暗号は、共通鍵方式と公開鍵方式の2種類に大別される。共通鍵方式は検索速度や暗号文サイズの面で非常に効率的である反面、暗号化の際に秘密鍵を用いる必要があるため、多数のデータ提供者がいる場合には鍵の管理が難しいという問題が発生する。公開鍵方式では、秘密鍵を用いることなく公開パラメータを用いて暗号化できるため、データ提供者に秘密鍵をわたす必要がなく、鍵の管理が容易である。下記の非特許文献1には、公開鍵検索可能暗号方式について記載されている。 Searchable encryption is broadly divided into two types: symmetric key and public key. While symmetric key encryption is highly efficient in terms of search speed and ciphertext size, it requires the use of a private key during encryption, which can make key management difficult when there are many data providers. With public key encryption, encryption can be performed using public parameters without using a private key, making it unnecessary to provide a private key to data providers and facilitating key management. The following non-patent document 1 describes public key searchable encryption.

R. Behnia, M. O. Ozmen, and A. A. Yavuz, “Lattice-based public key searchable encryption from experimental perspectives,” IEEE Transactions on Dependable and Secure Computing 17.6, pp. 1269-1282, 2018.、[2023年7月3日検索]、インターネット<https://eprint.iacr.org/2017/1215.pdf>R. Behnia, M. O. Ozmen, and A. A. Yavuz, “Lattice-based public key searchable encryption from experimental perspectives,” IEEE Transactions on Dependable and Secure Computing 17.6, pp. 1269-1282, 2018. [Retrieved July 3, 2023], Internet: https://eprint.iacr.org/2017/1215.pdf

 例えば、データ提供者が持つデータをクラウドに蓄積し、データ利用者は蓄積されたデータから特定のキーワードに紐づいたデータを検索して利用する状況を想定する。クラウド業者による情報の悪用やクラウドから第三者への情報漏洩を防ぐためには、データを暗号化した状態で検索処理を行う必要がある。また、複数のデータ提供者が存在する場合には、鍵管理の容易な公開鍵方式を用いることが望ましい。 For example, consider a situation where a data provider stores data in the cloud, and data users search the stored data for data linked to specific keywords. To prevent the cloud provider from misusing the information or leaking information from the cloud to third parties, the data must be encrypted before the search process is carried out. Furthermore, when there are multiple data providers, it is desirable to use a public key system, which allows for easy key management.

 しかし、公開鍵方式は、共通鍵方式と比較して効率性が大幅に劣る。非特許文献1に記載の公開鍵検索可能暗号方式は、格子構造を用いるため、暗号文サイズが大きい。そこで本発明の一態様は、高速かつ暗号文サイズが小さい公開鍵検索可能暗号方式を実現する。 However, the public key scheme is significantly less efficient than the common key scheme. The public key searchable encryption scheme described in Non-Patent Document 1 uses a lattice structure, resulting in a large ciphertext size. Therefore, one aspect of the present invention is to realize a public key searchable encryption scheme that is fast and has a small ciphertext size.

 上記課題を解決するために本発明の一態様は以下の構成を採用する。秘匿検索システムは、データ管理サーバと、データ利用端末と、データ提供端末と、を備え、前記データ提供端末は、登録キーワードと、公開鍵と、を保持し、複数のベクトルをランダムに抽出し、所定のハッシュ関数に基づいて前記登録キーワードの第1ハッシュ値を計算し、前記複数のベクトルに含まれるベクトルと前記公開鍵とに基づいて第1ベクトルを生成し、前記複数のベクトルに含まれるベクトルと前記第1ハッシュ値とに基づいて生成したベクトルの成分を上位の所定数ビットに丸めて第2ベクトルを生成し、前記第1ベクトルと前記第2ベクトルとを含む暗号化キーワードを前記データ管理サーバに送信し、前記データ利用端末は、検索キーワードと、前記公開鍵に対応する秘密鍵と、を保持し、前記所定のハッシュ関数に基づいて前記検索キーワードの第2ハッシュ値を計算し、前記第2ハッシュ値と前記秘密鍵とに基づいて第3ベクトルを生成し、前記第3ベクトルを検索クエリとして前記データ管理サーバに送信し、前記データ管理サーバは、前記第1ベクトルと前記第3ベクトルとの積を前記第2ベクトルから引いたベクトルの少なくとも一部の成分を計算し、前記計算した少なくとも一部の成分のうち、第1範囲に含まれる成分の数に基づいて、前記検索キーワードと前記登録キーワードとが一致するかの検索結果を判定し、前記検索結果に基づくデータを前記データ利用端末に送信する。 In order to solve the above problem, one embodiment of the present invention employs the following configuration: A confidential search system includes a data management server, a data utilization terminal, and a data provision terminal, the data provision terminal holds a registered keyword and a public key, randomly extracts a plurality of vectors, calculates a first hash value of the registered keyword based on a predetermined hash function, generates a first vector based on a vector included in the plurality of vectors and the public key, rounds the components of the vector generated based on a vector included in the plurality of vectors and the first hash value to a predetermined number of most significant bits to generate a second vector, and transmits an encrypted keyword including the first vector and the second vector to the data management server, the data utilization terminal receives a search key, and The data utilization terminal holds a word and a private key corresponding to the public key, calculates a second hash value of the search keyword based on the predetermined hash function, generates a third vector based on the second hash value and the private key, and transmits the third vector to the data management server as a search query. The data management server calculates at least some of the components of a vector obtained by subtracting the product of the first vector and the third vector from the second vector, and determines a search result as to whether the search keyword matches the registered keyword based on the number of components included in a first range among the at least some of the calculated components, and transmits data based on the search result to the data utilization terminal.

 本発明の一態様によれば、高速かつ暗号文サイズが小さい公開鍵検索可能暗号方式を実現することができる。 According to one aspect of the present invention, it is possible to realize a public key searchable encryption method that is fast and has a small ciphertext size.

 上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。  Problems, configurations and advantages other than those mentioned above will become clear from the description of the embodiments below.

実施例1における秘匿検索システムの構成例を示すブロック図である。1 is a block diagram showing a configuration example of a confidential search system according to a first embodiment. 実施例1におけるデータ管理サーバの構成例を示すブロック図である。2 is a block diagram showing a configuration example of a data management server according to the first embodiment; FIG. 実施例1におけるデータ利用端末の構成例を示すブロック図である。2 is a block diagram showing a configuration example of a data utilization terminal according to the first embodiment. FIG. 実施例1におけるデータ提供端末の構成例を示すブロック図である。3 is a block diagram showing a configuration example of a data providing terminal according to the first embodiment; FIG. 実施例1における公開パラメータ及び暗号化鍵の生成及び配布処理の一例を示すシーケンス図である。FIG. 11 is a sequence diagram illustrating an example of a process for generating and distributing public parameters and an encryption key according to the first embodiment. 実施例1におけるキーワード及びデータに対する暗号化及び送信処理、検索クエリの作成及び送信処理、並びに検索及びデータ送信処理、の一例を示すシーケンス図である。11 is a sequence diagram showing an example of encryption and transmission processing for keywords and data, creation and transmission processing of a search query, and search and data transmission processing in the first embodiment. FIG. 実施例1における公開パラメータ及び秘密鍵の生成処理の一例を示すフローチャートである。11 is a flowchart illustrating an example of a process for generating public parameters and a private key according to the first embodiment. 実施例1における暗号化キーワード生成処理の一例を示すフローチャートである。11 is a flowchart illustrating an example of an encrypted keyword generation process according to the first embodiment. 実施例1における検索クエリ生成処理の一例を示すフローチャートである。11 is a flowchart illustrating an example of a search query generation process according to the first embodiment. 実施例1における検索処理の一例を示すフローチャートである。11 is a flowchart illustrating an example of a search process according to the first embodiment. 実施例1におけるデータ提供端末が有するキーワード、要秘匿データ、及び公開データのデータ構成例を示す図である。4A to 4C are diagrams illustrating examples of data configurations of keywords, confidential data, and public data stored in a data providing terminal in the first embodiment. 実施例1におけるデータ管理サーバが有する暗号化キーワード、公開データ、及び暗号化データのデータ構成例を示す図である。4A to 4C are diagrams illustrating examples of data configurations of encrypted keywords, public data, and encrypted data stored in the data management server in the first embodiment. 実施例1における検索処理によって得られるヒットデータのデータ構成例を示す図である。11 is a diagram showing an example of a data configuration of hit data obtained by a search process in the first embodiment. FIG.

 本実施形態ではデータ管理サーバ、データ利用端末、及びデータ提供端末を含む秘匿検索システムについて説明する。データ利用端末は事前にパラメータ及び鍵を決定し、決定したパラメータ及び鍵の少なくとも一部をデータ管理端末及びデータ提供端末と共有する。 In this embodiment, a confidential search system including a data management server, a data usage terminal, and a data provision terminal is described. The data usage terminal determines parameters and keys in advance, and shares at least a portion of the determined parameters and keys with the data management terminal and the data provision terminal.

 データ提供端末は、キーワードを検索可能暗号で暗号化し、当該キーワードに紐づけられた要秘匿データを公開鍵暗号方式又は共通鍵暗号方式で暗号化する。データ提供端末を暗号化したキーワードと、暗号化した要秘匿データと、当該キーワードに紐づけられた公開データと、をデータ管理サーバ100に送信する。データ提供端末がこれらの処理を繰り返すことで、データ管理サーバは暗号化キーワード、暗号化データ、及び公開データの組を蓄積する。 The data providing terminal encrypts the keyword with a searchable cipher, and encrypts the confidential data linked to the keyword with a public key encryption method or a common key encryption method. The data providing terminal transmits the encrypted keyword, the encrypted confidential data, and the public data linked to the keyword to the data management server 100. As the data providing terminal repeats these processes, the data management server accumulates sets of encrypted keyword, encrypted data, and public data.

 データ利用端末は、検索対象のキーワードを取得し、取得したキーワードから検索クエリを生成してデータ管理サーバに送信する。データ管理サーバは、受信した検索クエリに対応する検索を、暗号化キーワードを復号することなく行う。データ管理サーバは、当該検索によってヒットした暗号化キーワードに対応する暗号化データ及び公開データを、データ利用端末に送信する。データ利用端末は、受信した暗号化データを復号し、復号した暗号化データ及び受信した公開データを利用する。 The data usage terminal acquires the keywords to be searched, generates a search query from the acquired keywords, and sends it to the data management server. The data management server performs a search corresponding to the received search query without decrypting the encrypted keywords. The data management server transmits encrypted data and public data corresponding to the encrypted keywords found in the search to the data usage terminal. The data usage terminal decrypts the received encrypted data, and uses the decrypted encrypted data and the received public data.

 以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。 Below, an embodiment of the present invention will be described in detail with reference to the drawings. In this embodiment, the same components are generally given the same reference numerals, and repeated explanations will be omitted. It should be noted that this embodiment is merely one example for realizing the present invention, and does not limit the technical scope of the present invention.

<システム構成>
 図1は、秘匿検索システムの構成例を示すブロック図である。秘匿検索システムは、収集したデータを暗号化し、暗号化したデータを復号することなく検索を実行し、検索にヒットしたデータを利用する。
<System Configuration>
1 is a block diagram showing an example of the configuration of a confidential search system. The confidential search system encrypts collected data, executes a search without decrypting the encrypted data, and uses data found in the search.

 秘匿検索システムは、例えば、データセンタ等に設置されるデータ管理サーバ100、データ利用者によって利用されるデータ利用端末200、及びデータ提供者によって利用されるデータ提供端末400を含み、これらがインターネット等のネットワーク300を介して接続されており、通信可能な状態になっている。 The confidential search system includes, for example, a data management server 100 installed in a data center or the like, a data usage terminal 200 used by data users, and a data provision terminal 400 used by data providers, all of which are connected via a network 300 such as the Internet and are in a state in which they can communicate with each other.

 図1に示す例では、秘匿検索システムは複数のデータ提供端末400を含んでいるが、秘匿検索システムが含むデータ提供端末400の台数に制限はない(1台であってもよい)。つまり、データ提供者の人数に制限はない。 In the example shown in FIG. 1, the confidential search system includes multiple data providing terminals 400, but there is no limit to the number of data providing terminals 400 included in the confidential search system (it may be one). In other words, there is no limit to the number of data providers.

(データ管理サーバ100)
 図2は、データ管理サーバ100の構成例を示すブロック図である。データ管理サーバ100は、CPU110、メモリ115、補助記憶装置120、入力装置101、出力装置102、及び通信装置103を有する計算機によって構成される。
(Data management server 100)
2 is a block diagram showing an example of the configuration of the data management server 100. The data management server 100 is configured by a computer having a CPU 110, a memory 115, an auxiliary storage device 120, an input device 101, an output device 102, and a communication device 103.

 CPU110は、プロセッサの一例であり、メモリ115に格納されたプログラムを実行する。メモリ115は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、不変のプログラム(例えば、BIOS(Basic Input/Output System))などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、CPU110が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。 CPU 110 is an example of a processor, and executes programs stored in memory 115. Memory 115 includes ROM (Read Only Memory), which is a non-volatile storage element, and RAM (Random Access Memory), which is a volatile storage element. ROM stores immutable programs (e.g., BIOS (Basic Input/Output System)). RAM is a high-speed, volatile storage element such as DRAM (Dynamic Random Access Memory), and temporarily stores programs executed by CPU 110 and data used when executing the programs.

 補助記憶装置120は、例えば、磁気記憶装置(HDD(Hard Disk Drive))、フラッシュメモリ(SSD(Solid State Drive))等の大容量かつ不揮発性の記憶装置であり、CPU110が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置120から読み出されて、メモリ115にロードされて、CPU110によって実行される。 The auxiliary storage device 120 is a large-capacity, non-volatile storage device such as a magnetic storage device (HDD (Hard Disk Drive)) or a flash memory (SSD (Solid State Drive)), and stores the programs executed by the CPU 110 and data used when the programs are executed. In other words, the programs are read from the auxiliary storage device 120, loaded into the memory 115, and executed by the CPU 110.

 入力装置101は、キーボードやマウスなどの、オペレータからの入力を受ける装置である。出力装置102は、ディスプレイ装置やプリンタなどの、プログラムの実行結果をオペレータが視認可能な形式で出力する装置である。 The input device 101 is a device, such as a keyboard or mouse, that receives input from an operator. The output device 102 is a device, such as a display device or printer, that outputs the results of program execution in a format that can be viewed by the operator.

 通信装置103は、所定のプロトコルに従って、外部の装置との通信を制御するネットワークインターフェース装置である。また、通信装置103は、例えば、USB(Universal Serial Bus)等のシリアルインターフェースを含んでもよい。 The communication device 103 is a network interface device that controls communication with external devices according to a specific protocol. The communication device 103 may also include a serial interface such as a Universal Serial Bus (USB).

 CPU110が実行するプログラムの一部またはすべては、非一時的記憶媒体であるリムーバブルメディア(CD-ROM、フラッシュメモリなど)又は、非一時的記憶装置を備える外部計算機からネットワークを介してデータ管理サーバ100に提供され、非一時的記憶媒体である不揮発性の補助記憶装置120に格納されてもよい。このため、データ管理サーバ100は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。これは、データ利用端末200及びデータ提供端末400についても同様である。 A part or all of the programs executed by the CPU 110 may be provided to the data management server 100 via a network from a removable medium (CD-ROM, flash memory, etc.) that is a non-transitory storage medium, or from an external computer equipped with a non-transitory storage device, and stored in a non-volatile auxiliary storage device 120 that is a non-transitory storage medium. For this reason, the data management server 100 should preferably have an interface for reading data from removable media. This also applies to the data utilization terminal 200 and the data provision terminal 400.

 データ管理サーバ100は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。これはデータ利用端末200及びデータ提供端末400についても同様である。 The data management server 100 is a computer system that is configured on one physical computer, or on multiple logically or physically configured computers, and may operate in separate threads on the same computer, or may operate on a virtual computer constructed on multiple physical computer resources. The same applies to the data usage terminal 200 and the data provision terminal 400.

 CPU110は、例えば、機能部である検索処理部111を含む。検索処理部111は、暗号化キーワードを用いた検索を行う。例えば、CPU110は、メモリ115にロードされた検索処理プログラムに従って動作することで、検索処理部111として機能する。また、データ利用端末200の後述するCPU210に含まれる機能部、データ提供端末400の後述するCPU410に含まれる機能部についても、プログラムと機能部の関係は同様である。 The CPU 110 includes, for example, a search processing unit 111 which is a functional unit. The search processing unit 111 performs searches using encrypted keywords. For example, the CPU 110 functions as the search processing unit 111 by operating according to a search processing program loaded into the memory 115. The relationship between the program and the functional unit is also similar for the functional units included in the CPU 210 (described later) of the data utilization terminal 200 and the functional units included in the CPU 410 (described later) of the data provision terminal 400.

 なお、CPU110、データ利用端末200のCPU210、及びデータ提供端末400のCPU410に含まれる機能部による機能の一部又は全部が、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)等のハードウェアによって実現されてもよい。 Furthermore, some or all of the functions of the functional units included in the CPU 110, the CPU 210 of the data utilization terminal 200, and the CPU 410 of the data provision terminal 400 may be realized by hardware such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field-Programmable Gate Array).

 補助記憶装置120は、例えば、いずれもデータを記憶する領域である、暗号文記憶部130、平文記憶部140、及び公開パラメータ記憶部150を含む。暗号文記憶部130には、データ提供端末400から収集した、暗号化データ132と、暗号化データ132それぞれに紐づいた暗号化キーワード131と、が格納される。平文記憶部140には、暗号化キーワード131それぞれに紐づいた公開データ141が格納される。公開パラメータ記憶部150には、検索処理部111による処理に必要な公開パラメータ151が格納される。 The auxiliary storage device 120 includes, for example, a ciphertext storage unit 130, a plaintext storage unit 140, and a public parameter storage unit 150, all of which are areas for storing data. The ciphertext storage unit 130 stores encrypted data 132 collected from the data providing terminal 400, and encrypted keywords 131 linked to each piece of encrypted data 132. The plaintext storage unit 140 stores public data 141 linked to each encrypted keyword 131. The public parameter storage unit 150 stores public parameters 151 required for processing by the search processing unit 111.

 なお、補助記憶装置120、データ利用端末200の後述する補助記憶装置220、及びデータ提供端末400の後述する補助記憶装置420に格納されている一部又は全部の情報は、それぞれ、メモリ115、メモリ215、及びメモリ415に格納されていてもよいし、当該サーバ又は当該端末に接続されている外部のデータベースに格納されていてもよい。 In addition, some or all of the information stored in the auxiliary storage device 120, the auxiliary storage device 220 of the data utilization terminal 200 (described later), and the auxiliary storage device 420 of the data provision terminal 400 (described later) may be stored in the memory 115, memory 215, and memory 415, respectively, or may be stored in an external database connected to the server or the terminal.

 なお、本実施形態において、秘匿検索システムが使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよい。例えば、テーブル、リスト、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。 In this embodiment, the information used by the confidential search system may be expressed in any data structure, regardless of the data structure. For example, the information may be stored in a data structure appropriately selected from a table, a list, a database, or a queue.

(データ利用端末200)
 図3は、データ利用端末200の構成例を示すブロック図である。データ利用端末200は、例えば、CPU210、メモリ215、補助記憶装置220、入力装置201、出力装置202、及び通信装置203を有する計算機によって構成される。
(Data utilization terminal 200)
3 is a block diagram showing an example of the configuration of the data utilization terminal 200. The data utilization terminal 200 is configured by a computer having a CPU 210, a memory 215, an auxiliary storage device 220, an input device 201, an output device 202, and a communication device 203, for example.

 CPU210、メモリ215、補助記憶装置220、入力装置201、出力装置202、及び通信装置203のハードウェアとしての説明は、それぞれ、CPU110、メモリ115、補助記憶装置120、入力装置101、出力装置102、及び通信装置103のハードウェアとしての説明と同様であるため省略する。 The hardware explanations of the CPU 210, memory 215, auxiliary storage device 220, input device 201, output device 202, and communication device 203 are omitted because they are similar to the hardware explanations of the CPU 110, memory 115, auxiliary storage device 120, input device 101, output device 102, and communication device 103, respectively.

 CPU210は、例えば、いずれも機能部である、検索クエリ生成処理部211、データ復号処理部212、パラメータ生成処理部213、及び鍵生成処理部214を含む。検索クエリ生成処理部211は、入力装置201を介して入力されたキーワードに対応する検索クエリ231を生成する。データ復号処理部212は、データ管理サーバ100から受信した暗号化データに対する復号処理を行う。パラメータ生成処理部213は、公開鍵を含む公開パラメータ241と、当該公開鍵に対応する秘密鍵242と、を生成する。鍵生成処理部214は、後述するデータ暗号化鍵と、当該データ暗号化鍵に対応するデータ復号鍵243と、を生成する。 The CPU 210 includes, for example, a search query generation processing unit 211, a data decryption processing unit 212, a parameter generation processing unit 213, and a key generation processing unit 214, all of which are functional units. The search query generation processing unit 211 generates a search query 231 corresponding to a keyword input via the input device 201. The data decryption processing unit 212 performs a decryption process on encrypted data received from the data management server 100. The parameter generation processing unit 213 generates public parameters 241 including a public key, and a private key 242 corresponding to the public key. The key generation processing unit 214 generates a data encryption key, which will be described later, and a data decryption key 243 corresponding to the data encryption key.

 補助記憶装置220は、いずれもデータを記憶する領域である、検索クエリ記憶部230及び鍵記憶部240を含む。検索クエリ記憶部230には、検索クエリ生成処理部211によって生成された検索クエリ231が格納される(検索クエリ231は対応するキーワードと紐づけられて格納される)。鍵記憶部240には、公開パラメータ241と、検索クエリ生成処理部211による処理に用いられる秘密鍵242と、データ復号処理部212による処理に用いられるデータ復号鍵243と、が格納される。 The auxiliary storage device 220 includes a search query storage unit 230 and a key storage unit 240, both of which are areas for storing data. The search query storage unit 230 stores a search query 231 generated by the search query generation processing unit 211 (the search query 231 is stored in association with a corresponding keyword). The key storage unit 240 stores public parameters 241, a private key 242 used for processing by the search query generation processing unit 211, and a data decryption key 243 used for processing by the data decryption processing unit 212.

(データ提供端末400)
 図4は、データ提供端末400の構成例を示すブロック図である。データ提供端末400は、例えば、CPU410、メモリ415、補助記憶装置420、入力装置401、出力装置402、及び通信装置403を有する計算機によって構成される。
(Data providing terminal 400)
4 is a block diagram showing an example of the configuration of the data providing terminal 400. The data providing terminal 400 is configured by a computer having a CPU 410, a memory 415, an auxiliary storage device 420, an input device 401, an output device 402, and a communication device 403, for example.

 CPU410、メモリ415、補助記憶装置420、入力装置401、出力装置402、及び通信装置403のハードウェアとしての説明は、それぞれ、CPU110、メモリ115、補助記憶装置120、入力装置101、出力装置102、及び通信装置103のハードウェアとしての説明と同様であるため省略する。 The hardware explanations of the CPU 410, memory 415, auxiliary storage device 420, input device 401, output device 402, and communication device 403 are omitted because they are similar to the hardware explanations of the CPU 110, memory 115, auxiliary storage device 120, input device 101, output device 102, and communication device 103, respectively.

 CPU410は、例えば、いずれも機能部であるキーワード暗号化処理部411及びデータ暗号化処理部412を含む。キーワード暗号化処理部411は、キーワード441に対する暗号化処理を行う。データ暗号化処理部412は、要秘匿データ442に対する暗号化処理を行う。 The CPU 410 includes, for example, a keyword encryption processing unit 411 and a data encryption processing unit 412, both of which are functional units. The keyword encryption processing unit 411 performs encryption processing on the keyword 441. The data encryption processing unit 412 performs encryption processing on the confidential data 442.

 補助記憶装置420は、いずれもデータを記憶する領域である、パラメータ記憶部430及びデータ記憶部440を含む。パラメータ記憶部430には、キーワード暗号化処理部411による処理で用いられる公開パラメータ431と、データ暗号化処理部412による処理で用いられるデータ暗号化鍵432と、が格納される。 The auxiliary storage device 420 includes a parameter storage unit 430 and a data storage unit 440, both of which are areas for storing data. The parameter storage unit 430 stores public parameters 431 used in processing by the keyword encryption processing unit 411, and a data encryption key 432 used in processing by the data encryption processing unit 412.

 データ記憶部440には、キーワード441と要秘匿データ442と公開データ443とが互いに紐づけられて格納されている。また、データ記憶部440には、キーワード暗号化処理部411によって作成された暗号化キーワード444と、データ暗号化処理部412によって作成された暗号化データ445と、が格納される。 Keywords 441, confidential data 442, and public data 443 are stored in the data storage unit 440, linked to one another. The data storage unit 440 also stores encrypted keywords 444 created by the keyword encryption processing unit 411, and encrypted data 445 created by the data encryption processing unit 412.

<シーケンス図及びフローチャート>
(データ収集、データ暗号化、秘匿検索処理、及び受信した検索結果に対する復号化)
 図5は、データ利用端末200による公開パラメータ及び暗号化鍵の生成及び配布処理の一例を示すシーケンス図である。
<Sequence diagram and flow chart>
(Data collection, data encryption, confidential search processing, and decryption of received search results)
FIG. 5 is a sequence diagram showing an example of a process for generating and distributing public parameters and an encryption key by the data utilization terminal 200. As shown in FIG.

 データ利用端末200のパラメータ生成処理部213は、公開パラメータ及び秘密鍵を生成し、生成した公開パラメータを公開パラメータ241として鍵記憶部240に保存し、生成した秘密鍵を秘密鍵242として鍵記憶部240に保存する(S101)。ステップS101における公開パラメータ及び秘密鍵の生成処理の詳細は、図7を用いて後述する。 The parameter generation processing unit 213 of the data utilization terminal 200 generates public parameters and a private key, stores the generated public parameters as public parameters 241 in the key storage unit 240, and stores the generated private key as private key 242 in the key storage unit 240 (S101). Details of the process of generating the public parameters and private key in step S101 will be described later with reference to FIG. 7.

 なお、図5の例では、データ利用端末200が公開パラメータを生成するが、後述する公開鍵hを除く公開パラメータは、データ管理サーバ100又はいずれかのデータ提供端末400によって生成されてもよいし、秘匿検索システムの外部の装置によって生成されてもよい。 In the example of FIG. 5, the data utilization terminal 200 generates the public parameters, but the public parameters other than the public key h described below may be generated by the data management server 100 or any of the data providing terminals 400, or may be generated by a device external to the confidential search system.

 パラメータ生成処理部213は、ステップS201で生成した公開パラメータをデータ管理サーバ100及び各データ提供端末400に送信する(S102)。データ管理サーバ100の検索処理部111は、データ利用端末200から公開パラメータを受信し、受信した公開パラメータを公開パラメータ151として公開パラメータ記憶部150に保存する(S103)。 The parameter generation processing unit 213 transmits the public parameters generated in step S201 to the data management server 100 and each data providing terminal 400 (S102). The search processing unit 111 of the data management server 100 receives the public parameters from the data utilization terminal 200, and stores the received public parameters in the public parameter storage unit 150 as public parameters 151 (S103).

 各データ提供端末400のキーワード暗号化処理部411は、データ利用端末200から公開パラメータを受信し、受信した公開パラメータを公開パラメータ431として当該データ提供端末400のパラメータ記憶部430に保存する(S104)。 The keyword encryption processing unit 411 of each data providing terminal 400 receives the public parameters from the data using terminal 200, and stores the received public parameters as public parameters 431 in the parameter storage unit 430 of the data providing terminal 400 (S104).

 データ利用端末200の鍵生成処理部214は、データ暗号化鍵及びデータ復号鍵を生成し、生成したデータ復号鍵をデータ復号鍵243として鍵記憶部240に保存する(S105)。なお、鍵生成処理部214は、既知の公開鍵暗号方式又は既知の共通鍵暗号方式を用いて、データ暗号化鍵及びデータ復号鍵を生成する。鍵生成処理部214は、公開鍵暗号方式を用いてデータ暗号化鍵及びデータ復号鍵を生成する場合には、データ復号鍵を秘密鍵として、データ暗号化鍵を公開鍵として生成する。 The key generation processing unit 214 of the data utilization terminal 200 generates a data encryption key and a data decryption key, and stores the generated data decryption key in the key storage unit 240 as the data decryption key 243 (S105). The key generation processing unit 214 generates the data encryption key and the data decryption key using a known public key cryptosystem or a known common key cryptosystem. When generating the data encryption key and the data decryption key using a public key cryptosystem, the key generation processing unit 214 generates the data decryption key as a private key and the data encryption key as a public key.

 鍵生成処理部214は、生成したデータ暗号化鍵を各データ提供端末400に送信する(S106)。各データ提供端末400のキーワード暗号化処理部411は、データ利用端末200からデータ暗号化鍵を受信し、受信したデータ暗号化鍵をデータ暗号化鍵432として当該データ提供端末400のパラメータ記憶部430に保存する(S107)。 The key generation processing unit 214 transmits the generated data encryption key to each data providing terminal 400 (S106). The keyword encryption processing unit 411 of each data providing terminal 400 receives the data encryption key from the data utilization terminal 200, and stores the received data encryption key in the parameter storage unit 430 of the data providing terminal 400 as the data encryption key 432 (S107).

 図6は、データ提供端末400によるキーワード及びデータに対する暗号化及び送信処理、データ利用端末200による検索クエリの作成及び送信処理、並びにデータ管理サーバ100による検索及びデータ送信処理、の一例を示すシーケンス図である。 FIG. 6 is a sequence diagram showing an example of encryption and transmission processing of keywords and data by the data providing terminal 400, creation and transmission processing of a search query by the data using terminal 200, and search and data transmission processing by the data management server 100.

 各データ提供端末400のキーワード暗号化処理部411は、当該データ提供端末400のデータ記憶部440に保存されているキーワード441を、公開パラメータ431を用いて暗号化することで暗号化キーワード444を生成し、各データ提供端末400のデータ暗号化処理部412は、当該データ提供端末400のデータ記憶部440に保存されている(当該キーワード441に紐づく)要秘匿データ442を、データ暗号化鍵432を用いて暗号化することで暗号化データ445を生成する(S201)。ステップS201における暗号化キーワード444の生成処理の詳細については、図8を用いて後述する。 The keyword encryption processing unit 411 of each data providing terminal 400 generates an encrypted keyword 444 by encrypting the keyword 441 stored in the data storage unit 440 of the data providing terminal 400 using the public parameters 431, and the data encryption processing unit 412 of each data providing terminal 400 generates encrypted data 445 by encrypting the confidential data 442 (linked to the keyword 441) stored in the data storage unit 440 of the data providing terminal 400 using the data encryption key 432 (S201). Details of the process of generating the encrypted keyword 444 in step S201 will be described later with reference to FIG. 8.

 各データ提供端末400のデータ暗号化処理部412は、ステップS201で生成した暗号化キーワード444、暗号化データ445、並びに当該暗号化キーワード444に紐づく公開データ443をデータ管理サーバ100に送信する(S202)。 The data encryption processing unit 412 of each data providing terminal 400 transmits the encryption keyword 444 generated in step S201, the encrypted data 445, and the public data 443 linked to the encryption keyword 444 to the data management server 100 (S202).

 データ管理サーバ100は、各データ提供端末400から暗号化キーワード、暗号化データ、公開データを受信し、受信したこれらのデータを送信元であるデータ提供端末400ごとに紐づけて、受信した暗号化キーワードを暗号化キーワード131として暗号文記憶部130に保存し、受信した暗号化データを暗号化データ132として暗号文記憶部130に保存し、受信した公開データを公開データ141として平文記憶部140に保存する(S203)。 The data management server 100 receives the encryption keyword, encrypted data, and public data from each data providing terminal 400, links the received data to the data providing terminal 400 that sent it, and stores the received encryption keyword in the ciphertext memory unit 130 as the encryption keyword 131, stores the received encrypted data in the ciphertext memory unit 130 as the encrypted data 132, and stores the received public data in the plaintext memory unit 140 as the public data 141 (S203).

 なお、データ提供端末400が、複数のキーワード441を保持する場合には、各キーワード441(及び当該キーワード441に紐づく要秘匿データ442及び公開データ443)に対して、ステップS201~S203の処理が実行される。 If the data providing terminal 400 holds multiple keywords 441, the processes of steps S201 to S203 are executed for each keyword 441 (and the confidential data 442 and public data 443 linked to that keyword 441).

 データ利用端末200の検索クエリ生成処理部211は、例えば入力装置201への入力を介して検索対象のキーワードを取得する(S204)。検索クエリ生成処理部211は、ステップS204で取得したキーワードに対応する検索クエリ231を生成して(S205)、データ管理サーバ100に送信する(S206)。ステップS205における検索クエリ生成処理の詳細については、図9を用いて後述する。 The search query generation processing unit 211 of the data utilization terminal 200 acquires the keywords to be searched, for example, via input to the input device 201 (S204). The search query generation processing unit 211 generates a search query 231 corresponding to the keywords acquired in step S204 (S205), and transmits it to the data management server 100 (S206). Details of the search query generation processing in step S205 will be described later with reference to FIG. 9.

 データ管理サーバ100の検索処理部111は、暗号文記憶部130に蓄積された暗号化キーワード131から、データ利用端末200から受信した検索クエリに該当する暗号化キーワードを検索し、当該検索においてヒットした暗号化キーワードに紐づけられた暗号化データ及び公開データを暗号文記憶部130及び平文記憶部140から抽出する(S207)。ステップS207における検索処理の詳細については、図10を用いて後述する。 The search processing unit 111 of the data management server 100 searches the encrypted keywords 131 stored in the ciphertext storage unit 130 for an encrypted keyword that corresponds to the search query received from the data utilization terminal 200, and extracts the encrypted data and public data linked to the encrypted keyword found in the search from the ciphertext storage unit 130 and the plaintext storage unit 140 (S207). Details of the search process in step S207 will be described later with reference to FIG. 10.

 検索処理部111は、抽出した暗号化データ及び公開データをデータ利用端末200に送信する(S208)。データ利用端末200のデータ復号処理部212は、データ管理サーバ100から受信した暗号化データを、データ復号鍵243を用いて復号し、当該復号した暗号化データと、データ管理サーバ100から受信した公開データと、を出力装置202に表示する等して、データ利用者に利用させる(S209)。 The search processing unit 111 transmits the extracted encrypted data and public data to the data utilization terminal 200 (S208). The data decryption processing unit 212 of the data utilization terminal 200 decrypts the encrypted data received from the data management server 100 using the data decryption key 243, and displays the decrypted encrypted data and the public data received from the data management server 100 on the output device 202, for example, to allow the data user to use them (S209).

 なお、データ提供端末400の各キーワード441には、要秘匿データ442又は公開データ443の一方のみが紐づけられていることもある。例えば、要秘匿データ442のみが紐づけられたキーワード441に対しては、ステップS202に含まれる公開データ443の送信処理、ステップS203に含まれる公開データ141の保存処理、ステップS207に含まれる公開データ141の抽出処理、及びステップS208に含まれる公開データ141の送信処理が省略される。 Note that each keyword 441 of the data providing terminal 400 may be linked to only one of the confidential data 442 or the public data 443. For example, for a keyword 441 linked only to the confidential data 442, the process of transmitting the public data 443 included in step S202, the process of saving the public data 141 included in step S203, the process of extracting the public data 141 included in step S207, and the process of transmitting the public data 141 included in step S208 are omitted.

 また、例えば、公開データ443のみが紐づけられたキーワード441に対しては、ステップS201に含まれる暗号化データ445の生成処理、及びステップS202に含まれる暗号化データ445の送信処理、ステップS203に含まれる暗号化データ132の保存処理、ステップS207に含まれる暗号化データ132の抽出処理、ステップS208に含まれる暗号化データ132の送信処理、及びステップS209に含まれる暗号化データの復号及び利用処理が省略される。 Furthermore, for example, for a keyword 441 linked only to public data 443, the process of generating encrypted data 445 included in step S201, the process of transmitting encrypted data 445 included in step S202, the process of saving encrypted data 132 included in step S203, the process of extracting encrypted data 132 included in step S207, the process of transmitting encrypted data 132 included in step S208, and the process of decrypting and using the encrypted data included in step S209 are omitted.

(公開パラメータ及び秘密鍵の生成処理)
 図7は、ステップS101における公開パラメータ及び秘密鍵の生成処理の一例を示すフローチャートである。データ利用端末200のパラメータ生成処理部213は、予め定められた必要なセキュリティレベルに応じてパラメータN,q,N’,α,m,及びLを設定する(S301)。
(Generation of public parameters and private keys)
7 is a flowchart showing an example of the process of generating public parameters and a private key in step S101. The parameter generation processing unit 213 of the data utilization terminal 200 sets parameters N, q, N', α, m, and L according to a predetermined required security level (S301).

 ただし、Nは2べきの自然数、qは素数、N’はN以下の2べきの自然数、mはN’以下の自然数、Lはlogq以下の自然数、0<α<1/2は実数であり、パラメータ生成処理部213はこれらの条件と予め定められたセキュリティレベルとに従ってこれらのパラメータを設定する。なお、セキュリティレベルが高く設定されるほど、Nが大きく、かつNが固定されたときのqが小さくなる。例えば、Nは1024又は2048、qは218より大きくかつ230より小さい素数とすることができる。 where N is a natural number of a power of 2, q is a prime number, N' is a natural number of a power of 2 not greater than N, m is a natural number not greater than N', L is a natural number not greater than log 2 q, 0<α<1/2 is a real number, and the parameter generation processing unit 213 sets these parameters according to these conditions and a predetermined security level. Note that the higher the security level is set, the larger N is, and the smaller q is when N is fixed. For example, N can be 1024 or 2048, and q can be a prime number greater than 218 and less than 230 .

 パラメータ生成処理部213は、長さの短いf,g∈Z[X]/(X+1)をランダムに生成し(S302)、公開鍵h=f-1g mod qを算出する(S303)。但し、Z[X]/(X+1)の任意の元の長さは、a=a+aX+・・・+aN-1N-1∈Z[X]/(X+1)をN次元ベクトル(a,a,・・・,aN-1)と同一視することで、(a +a +・・・+aN-1 1/2によって定義される。長さの短いf,g∈Z[X]/(X+1)の長さはそれぞれ、1.2(q/2)1/2以下であることが望ましい。また、Z[X]/(X+1)は整数係数多項式環の剰余環であり、以下Rとも表記する。 The parameter generation processing unit 213 randomly generates short f, g ∈ Z[X]/(X N +1) (S302) and calculates the public key h = f -1 g mod q (S303). However, the length of any original Z[X]/(X N +1) is defined by (a 0 2 + a 1 2 + ... + a N-1 2 ) 1/2 by equating a = a 0 + a 1 X + ... + a N- 1 X N-1 ∈ Z [X]/(X N +1 ) with the N-dimensional vector ( a 0 , a 1 , ..., a N-1 ) . It is desirable that the length of each of the short f, g ∈ Z[X]/(X N +1) is 1.2(q/2) 1/2 or less. Furthermore, Z[X]/(X N +1) is a remainder ring of the integer coefficient polynomial ring, and will hereinafter be denoted as R.

 パラメータ生成処理部213は、f*G-F*g=q(「*」はR上の乗算を示す)をみたす長さの短いF,G∈Rを計算する(S304)。具体的には、例えば、パラメータ生成処理部213は、非特許文献1に記載の手法によって、f*G-F*g=qを満たすFとGの組み合わせを1つ以上探索して発見し、当該発見した組み合わせのうち、例えば、Fの長さとGの長さの合計が最も短い組み合わせにかかるF,GをステップS304において特定する。 The parameter generation processing unit 213 calculates F, G∈R with short lengths that satisfy f*G-F*g=q (where "*" indicates multiplication on R) (S304). Specifically, for example, the parameter generation processing unit 213 searches for and finds one or more combinations of F and G that satisfy f*G-F*g=q using the method described in Non-Patent Document 1, and identifies, from among the combinations found, F and G with the shortest total length of F and G in step S304.

 パラメータ生成処理部213は、ステップS301で設定したパラメータとステップS303で生成した公開鍵とを含む公開パラメータ(N,q,h,N’,α,m,L)と、ステップS302で生成した値及びステップS304で計算した値を含む秘密鍵(f,g,F,G)と、を出力する(S305)。 The parameter generation processing unit 213 outputs public parameters (N, q, h, N', α, m, L) including the parameters set in step S301 and the public key generated in step S303, and a private key (f, g, F, G) including the values generated in step S302 and the values calculated in step S304 (S305).

(キーワード暗号化)
 図8は、ステップS201に含まれる暗号化キーワード生成処理の一例を示すフローチャートである。データ提供端末400のキーワード暗号化処理部411は、長さ(ノルム)の短いN次元ベクトルr,e,e∈R/qRをランダムに抽出する(S401)。ただし、R/qRはRの剰余環で、以下Rとも表記する。
(Keywords encryption)
8 is a flowchart showing an example of the encrypted keyword generation process included in step S201. The keyword encryption processing unit 411 of the data providing terminal 400 randomly extracts N-dimensional vectors r, e 1 , e 2 ∈ R/qR with short length (norm) (S401), where R/qR is a remainder ring of R, and will be denoted as Rq hereinafter.

 また、ステップS401において、キーワード暗号化処理部411は、長さの短いN次元ベクトルであるr,e,eそれぞれを、例えば、各成分が1,0,又-1のいずれかであるN次元ベクトル(長さがN1/2以下である)からランダムに抽出するとよい。なお、異なるキーワード441が暗号化されるたびにステップS401の処理が実行されることが望ましい、即ちキーワード441ごとに異なるr,e,eの組み合わせが抽出されることが望ましい。 In step S401, the keyword encryption processing unit 411 may randomly extract r, e 1 , and e 2 , which are short N-dimensional vectors, from N-dimensional vectors (having a length of N 1/2 or less) whose components are 1, 0, or −1, for example. It is preferable to execute the process of step S401 every time a different keyword 441 is encrypted, that is, it is preferable to extract a different combination of r, e 1 , and e 2 for each keyword 441.

 キーワード暗号化処理部411は、暗号化対象のキーワードwのハッシュ値t=H(w)∈Rを計算する(S402)。なお、H()は所定のハッシュ関数であり、データ利用端末200と、全てのデータ提供端末400と、の間で、H()が予め共有されている。 The keyword encryption processing unit 411 calculates a hash value t=H(w) ∈Rq of the keyword w to be encrypted (S402). Note that H() is a predetermined hash function, and H() is shared in advance between the data utilization terminal 200 and all the data providing terminals 400.

 キーワード暗号化処理部411は、u=r*h+eとv=r*t+eを計算する(S403)。キーワード暗号化処理部411は、vの各成分を上位Lビットのみに丸める(S404)。即ち、ステップS404において、キーワード暗号化処理部411は、2-Lvに最も近い整数に2をかけた値をvと置きなおす。ステップS404の処理によって、暗号文サイズを削減することができる。 The keyword encryption processing unit 411 calculates u=r*h+ e1 and v=r*t+ e2 (S403). The keyword encryption processing unit 411 rounds each component of v to only the most significant L bits (S404). That is, in step S404, the keyword encryption processing unit 411 replaces v with the value obtained by multiplying the integer closest to 2 -L v by 2 L. The processing in step S404 makes it possible to reduce the ciphertext size.

 キーワード暗号化処理部411は、ステップS403で計算したuとステップS404で算出したvとの組み合わせ(u,v)を暗号化キーワードとして出力する(S405)。なお、非特許文献1に記載の方法では、vに関するハッシュ値をさらに計算し、当該ハッシュ値が暗号化キーワードにさらに追加されるが、本実施例では当該ハッシュ値が不要であるため、当該ハッシュ値の計算処理にかかる計算量が削減され、さらに暗号化キーワードのサイズを削減することができる。 The keyword encryption processing unit 411 outputs the combination (u, v) of u calculated in step S403 and v calculated in step S404 as an encrypted keyword (S405). Note that in the method described in Non-Patent Document 1, a hash value for v is further calculated and added to the encrypted keyword, but in this embodiment, since the hash value is not necessary, the amount of calculation required for the calculation process of the hash value is reduced, and the size of the encrypted keyword can be further reduced.

 なお、ステップS102においてデータ利用端末200は、公開パラメータの全てを各データ提供端末400に送信しているが、公開パラメータのうちステップS401~S405で用いられるパラメータのみ(例えば、N,q,h)を各データ提供端末400に送信し、各データ提供端末400は当該パラメータを公開パラメータ431として保存してもよい。 In step S102, the data utilization terminal 200 transmits all of the public parameters to each data providing terminal 400. However, it is also possible to transmit only the parameters (e.g., N, q, h) used in steps S401 to S405 from the public parameters to each data providing terminal 400, and each data providing terminal 400 stores the parameters as public parameters 431.

(検索クエリ生成処理)
 図9は、ステップS205における検索クエリ生成処理の一例を示すフローチャートである。データ利用端末200の検索クエリ生成処理部211は、例えば入力装置201への入力を介して、検索対象のキーワードWを取得する(S501)。
(Search query generation process)
9 is a flowchart showing an example of the search query generation process in step S205. The search query generation processing unit 211 of the data utilization terminal 200 acquires a keyword W to be searched, for example, via an input to the input device 201 (S501).

 検索クエリ生成処理部211は、ステップS501で取得したキーワードWに対応する検索クエリが検索クエリ記憶部230に保存されているかを判定する(S502)。検索クエリ生成処理部211は、当該キーワードWに対応する検索クエリ231が検索クエリ記憶部230に保存されていると判定した場合(S502:YES)、当該対応する検索クエリ231を出力して(S503)、検索クエリ生成処理を終了する。 The search query generation processing unit 211 determines whether a search query corresponding to the keyword W acquired in step S501 is stored in the search query storage unit 230 (S502). If the search query generation processing unit 211 determines that a search query 231 corresponding to the keyword W is stored in the search query storage unit 230 (S502: YES), it outputs the corresponding search query 231 (S503) and ends the search query generation process.

 検索クエリ生成処理部211は、当該キーワードWに対応する検索クエリ231が検索クエリ記憶部230に保存されていないと判定した場合(S502:NO)以下の手順で検索クエリを生成する。まず、検索クエリ生成処理部211は、キーワードWのハッシュ値T=H(W)を計算する(S504)。 If the search query generation processing unit 211 determines that the search query 231 corresponding to the keyword W is not stored in the search query storage unit 230 (S502: NO), the search query generation processing unit 211 generates a search query in the following procedure. First, the search query generation processing unit 211 calculates the hash value T=H(W) of the keyword W (S504).

 検索クエリ生成処理部211は、秘密鍵(f,g,F,G)を用いて、s’+s*h=Tを満たす長さ(ノルム)の短いベクトルs’,s∈Rを所定の離散ガウス分布から抽出する(S505)。具体的には、例えば、ステップS505において、検索クエリ生成処理部211は、非特許文献1に記載の手法を採用することで、s’+s*h=Tを満たし、かつベクトルs’とsの長さがそれぞれa(Nq)1/2程度(例えばaは1以上かつ4以下程度の値であり、非特許文献1に記載の手法において採用されるパラメータによって決定される)と短い、s’とsの組み合わせを、当該秘密鍵を用いて、当該所定の離散ガウス分布から抽出することができる。 The search query generation processing unit 211 uses a private key (f, g, F, G) to extract vectors s', s∈Rq with short lengths (norms) that satisfy s'+s*h=T from a predetermined discrete Gaussian distribution (S505). Specifically, for example, in step S505, the search query generation processing unit 211 employs the method described in Non-Patent Document 1 to be able to extract, from the predetermined discrete Gaussian distribution, a combination of s' and s that satisfies s'+s*h=T and in which the lengths of the vectors s' and s are short, each of which is approximately a(Nq) 1/2 (for example, a is a value that is approximately 1 or more and 4 or less, and is determined by parameters employed in the method described in Non-Patent Document 1), using the private key.

 検索クエリ生成処理部211は、ステップS501で取得したキーワードWと、ステップS505で抽出した検索クエリsと、を紐づけて検索クエリ記憶部230に格納する(S506)。検索クエリ生成処理部211は、検索クエリsを出力して(S507)、検索クエリ生成処理を終了する。 The search query generation processing unit 211 associates the keyword W acquired in step S501 with the search query s extracted in step S505 and stores them in the search query storage unit 230 (S506). The search query generation processing unit 211 outputs the search query s (S507) and ends the search query generation process.

 なお、ステップS505における離散ガウス分布からのベクトルs’,sの抽出処理においてランダム性のある抽出処理が含まれる。従って、仮に同じキーワードWに対してステップS505の処理を複数回実行すると、ステップS505の処理のたびに異なる検索クエリsが得られうる。同じキーワードWから異なる検索クエリsが生成されないようにするために、ステップS502、ステップS503、及びステップS506の処理が実行される。即ちキーワードWから生成された検索クエリsを当該キーワードと紐づけて保存しておき、同じキーワードWが再度指定された場合には、新たに検索クエリsを生成せずに保存されている検索クエリsを取得するようにしている。 Note that the process of extracting vectors s', s from the discrete Gaussian distribution in step S505 includes a random extraction process. Therefore, if the process of step S505 is executed multiple times for the same keyword W, a different search query s may be obtained each time the process of step S505 is executed. In order to prevent different search queries s from being generated from the same keyword W, the processes of steps S502, S503, and S506 are executed. That is, the search query s generated from the keyword W is linked to the keyword and saved, and when the same keyword W is specified again, the saved search query s is obtained without generating a new search query s.

 また、ステップS505におけるランダム性のある抽出処理を、擬似ランダム関数等を用いた処理等の決定性を有する処理に置き換えることで、当該ランダム性が除去されてもよい。この場合、ステップS502、ステップS503、及びステップS506の処理が省略されてもよい、即ちステップS501で過去に検索クエリを生成したキーワードと同じキーワードが再取得されても、当該同じキーワードから再度検索クエリを生成してもよい。 Furthermore, the randomness of the extraction process in step S505 may be removed by replacing it with a deterministic process such as a process using a pseudo-random function. In this case, the processes in steps S502, S503, and S506 may be omitted, i.e., the same keyword as the keyword that previously generated a search query in step S501 may be reacquired, and a search query may be generated again from the same keyword.

(検索処理)
 図10は、ステップS207における検索処理の一例を示すフローチャートである。データ管理サーバ100の検索処理部111は、暗号文記憶部130に格納されている各暗号化キーワード131について、ステップS602~ステップS604の処理を実行する(S601)。
(Search process)
10 is a flowchart showing an example of the search process in step S207. The search processing unit 111 of the data management server 100 executes the processes of steps S602 to S604 for each encrypted keyword 131 stored in the ciphertext storage unit 130 (S601).

 検索処理部111は、暗号化キーワード(u,v)に対してN次元ベクトルv-u*sのN個の成分のうち、N’個の成分を計算し、計算したN’個の成分それぞれを、qを法として合同な整数のうち-q/2からq/2の範囲の整数とみなす(S602)。なお、検索処理部111は、N次元ベクトルv-u*sのN個の成分のうち、例えば、任意のN’個の成分を計算してもよいし、等間隔のN’個の成分を計算してもよい。 The search processing unit 111 calculates N' components out of the N components of the N-dimensional vector v-u*s for the encrypted keyword (u, v), and regards each of the calculated N' components as an integer in the range of -q/2 to q/2 among integers that are congruent modulo q (S602). Note that the search processing unit 111 may calculate, for example, any N' components out of the N components of the N-dimensional vector v-u*s, or may calculate N' components at equal intervals.

 検索処理部111は、ステップS602で-q/2からq/2の範囲の整数とみなされたN’個の成分のうち、-αq以上かつαq以下の範囲に含まれる成分の個数がm個以上であるかを判定する(S603)。 The search processing unit 111 determines whether the number of components that fall within the range of -αq and αq (inclusive) is m or more out of the N' components that were deemed to be integers in the range of -q/2 to q/2 in step S602 (S603).

 検索処理部111は、当該N’個の成分のうちm個以上の成分が当該範囲に含まれると判定した場合(S603:YES)、検索クエリsに対応するキーワードと、当該暗号化キーワード131に対応するキーワードと、が一致していると判定して、当該暗号化キーワード131に紐づく暗号化データ132及び公開データ141をヒットデータに追加する(S604)。 If the search processing unit 111 determines that m or more of the N' components are included in the range (S603: YES), it determines that the keyword corresponding to the search query s matches the keyword corresponding to the encrypted keyword 131, and adds the encrypted data 132 and public data 141 linked to the encrypted keyword 131 to the hit data (S604).

 検索処理部111は、当該N’個の成分のうちm個未満の成分が当該範囲に含まれると判定した場合(S603:NO)、検索クエリsに対応するキーワードと、当該暗号化キーワード131に対応するキーワードと、が一致していないと判定するため、ステップS604の処理を実行しない。 If the search processing unit 111 determines that less than m components out of the N' components are included in the range (S603: NO), it determines that the keyword corresponding to the search query s does not match the keyword corresponding to the encrypted keyword 131, and therefore does not execute the process of step S604.

 検索処理部111は、全ての暗号化キーワード131についてステップS602からステップS605の処理を行ったのち(S606)、ステップS604でヒットデータに追加された暗号化データ132及び公開データ141を全て出力する(S607)。 After performing the processes from step S602 to step S605 for all encrypted keywords 131 (S606), the search processing unit 111 outputs all encrypted data 132 and public data 141 that were added to the hit data in step S604 (S607).

 図10の検索処理において、検索処理部111は、非特許文献1に記載の方式と異なり、ハッシュ値の計算を実行しないため検索処理の速度を向上させることができる。また、特に、N’がNより小さい場合には、検索処理部111は、v-u*sの一部の成分についてのみ、ステップS603及びステップS604の処理を実行するため、さらに検索速度を向上させることができる。 In the search process of FIG. 10, unlike the method described in Non-Patent Document 1, the search processing unit 111 does not calculate a hash value, and therefore the speed of the search process can be improved. In particular, when N' is smaller than N, the search processing unit 111 performs the processes of steps S603 and S604 only for some components of v-u*s, and therefore the search speed can be further improved.

 なお、図10に示した検索処理の通り、mが大きいほど、またαが小さいほど検索処理におけるヒット率(検索クエリsに対する何らかのヒットデータが得られる確率)が下がるものの誤ヒット率(検索クエリsに対する誤ったヒットデータが得られる確率)も低下する。一方、mが小さいほど、及びαが大きいほど検索処理におけるヒット率が上昇するものの誤ヒット率も上昇する。このようにmやαは検索におけるヒット率等を考慮して設定されるとよい。 As shown in the search process in FIG. 10, the larger m is and the smaller α is, the lower the hit rate in the search process (the probability that some hit data will be obtained for search query s), but the false hit rate (the probability that incorrect hit data will be obtained for search query s) also decreases. On the other hand, the smaller m is and the larger α is, the higher the hit rate in the search process, but the false hit rate also increases. In this way, m and α should be set taking into account the hit rate in the search, etc.

 なお、図10の例では、ステップS602においてv-u*sのN個の成分のうちN’個の成分のみを計算するため、ステップS403においてキーワード暗号化処理部411が予めv=r*t+eのN個の成分のうちN’個の成分のみを計算し、当該計算したN’個の成分のみを並べたベクトルをステップS404以降の処理におけるvとしてもよい。これにより、暗号化キーワード生成処理を高速化することができ、暗号化キーワードのサイズをさらに削減することができる。 10, since only N' components out of the N components of v-u*s are calculated in step S602, the keyword encryption processing unit 411 may calculate in advance only N' components out of the N components of v=r*t+ e2 in step S403, and a vector in which only the calculated N' components are arranged may be used as v in the processing from step S404 onwards. This can speed up the encrypted keyword generation process and further reduce the size of the encrypted keyword.

 この場合、データ提供端末400は公開パラメータとしてN’もデータ利用端末200から受信している必要がある。また、ステップS602において、検索処理部111は、暗号化キーワード131のステップS403で計算された当該N’個の成分についてのみ、v-u*sを計算すればよい。なお、ステップS403及びステップS602においてどの成分が計算対象のN’個の成分であるかが予め定められていてもよいし、ステップS403において計算されたN’個の成分がどの成分であるかを示す情報がデータ提供端末400からデータ管理サーバ100に通知されてもよい。 In this case, the data providing terminal 400 must also receive N' as a public parameter from the data using terminal 200. Furthermore, in step S602, the search processing unit 111 only needs to calculate v-u*s for the N' components of the encrypted keyword 131 calculated in step S403. Note that which components are the N' components to be calculated in steps S403 and S602 may be determined in advance, or information indicating which N' components are the ones calculated in step S403 may be notified to the data management server 100 from the data providing terminal 400.

 なお、ステップS102においてデータ利用端末200は、公開パラメータの全てをデータ管理サーバ100に送信しているが、公開パラメータのうちステップS601~S606で用いられるパラメータのみ(例えば、N’,m,α,q)をデータ管理サーバ100に送信し、データ管理サーバ100は当該パラメータを公開パラメータ151として保存してもよい。 In step S102, the data utilization terminal 200 transmits all of the public parameters to the data management server 100. However, it is also possible to transmit only the parameters (e.g., N', m, α, q) used in steps S601 to S606 from the public parameters to the data management server 100, and the data management server 100 stores these parameters as public parameters 151.

 図11A~図11Cは、本実施例で扱われるデータのデータ構成例を示す図である。図11Aは、データ提供端末400が有するキーワード441、要秘匿データ442、及び公開データ443のデータ構成例を示す図である。図11Aに示すように、キーワード441の一例である(患者の)病名と、公開データ443の一例である(データ提供元である病院の)病院名と、要秘匿データ442の一例である(患者の)年齢と、が紐づけられて補助記憶装置420に保存されている。 FIGS. 11A to 11C are diagrams showing examples of the data configuration of data handled in this embodiment. FIG. 11A is a diagram showing examples of the data configuration of keywords 441, confidential data 442, and public data 443 held by the data providing terminal 400. As shown in FIG. 11A, the name of the disease (of the patient), which is an example of keyword 441, the name of the hospital (of the hospital providing the data), which is an example of public data 443, and the age (of the patient), which is an example of confidential data 442, are linked and stored in the auxiliary storage device 420.

 ステップS201において、各病名が公開パラメータ431を用いて暗号化されることで暗号化キーワード444が生成され、各年齢がデータ暗号化鍵432を用いて暗号化されることで暗号化データ445が生成される。当該暗号化された病名と、当該暗号化された年齢と、(暗号化されていない)病院名と、がステップS202において、データ管理サーバ100に送信される。 In step S201, each disease name is encrypted using public parameters 431 to generate an encryption keyword 444, and each age is encrypted using a data encryption key 432 to generate encrypted data 445. In step S202, the encrypted disease name, encrypted age, and (unencrypted) hospital name are sent to the data management server 100.

 図11Bは、データ管理サーバ100が有する暗号化キーワード131、公開データ141、及び暗号化データ132のデータ構成例を示す図である。図11Bに示すように、ステップS203において、データ管理サーバ100が各データ提供端末400から受信した、暗号化された病名が暗号化キーワード131として、暗号化された年齢が暗号化データ132として、(暗号化されていない)病院名が公開データ141として、それぞれ紐づけられて補助記憶装置120に保存される。図11Bの例では、見易さのために、病名欄及び年齢欄の値が平文で図示されているが、病名欄及び年齢欄の値は暗号文として記述されている。 FIG. 11B is a diagram showing an example of the data configuration of the encryption keyword 131, public data 141, and encrypted data 132 held by the data management server 100. As shown in FIG. 11B, in step S203, the encrypted disease name received by the data management server 100 from each data providing terminal 400 is linked as the encryption keyword 131, the encrypted age as the encrypted data 132, and the (unencrypted) hospital name as the public data 141, and these are stored in the auxiliary storage device 120. In the example of FIG. 11B, for ease of viewing, the values in the disease name and age fields are shown in plain text, but the values in the disease name and age fields are written as ciphertext.

 図11Cは、データ管理サーバ100による検索処理によって得られるヒットデータのデータ構成例を示す図である。ステップS205においてデータ利用端末200によってキーワード「X病」から生成された検索クエリが生成され、ステップS207において、図11Bのデータに対して当該検索クエリによる検索処理が行われると、図11Cのヒットデータが得られる。 FIG. 11C is a diagram showing an example of the data structure of hit data obtained by a search process by the data management server 100. In step S205, a search query is generated from the keyword "Disease X" by the data usage terminal 200, and in step S207, a search process is performed on the data in FIG. 11B using the search query, resulting in the hit data in FIG. 11C.

 図11Cのヒットデータは、図11Bのデータから、キーワード「X病」に対応する暗号化キーワード131に対応する公開データ141と、キーワード「X病」に対応する暗号化キーワード131に対応する暗号化データ132と、が紐づけられて抽出されたデータである。図11Cの例では、見易さのために、年齢欄の値が平文で図示されているが、年齢欄の値は暗号文として記述されている。ステップS208において、図11Cのヒットデータがデータ利用端末200に送信される。 The hit data in FIG. 11C is data extracted from the data in FIG. 11B by linking public data 141 corresponding to the encrypted keyword 131 corresponding to the keyword "X disease" with encrypted data 132 corresponding to the encrypted keyword 131 corresponding to the keyword "X disease". In the example in FIG. 11C, the values in the age field are shown in plain text for ease of viewing, but the values in the age field are written as cipher text. In step S208, the hit data in FIG. 11C is transmitted to the data utilization terminal 200.

 実施例2は、実施例1における秘匿検索システムをアンケート集計に適用したユースケースを説明する。各データ提供端末400を利用するデータ提供者はアンケートの回答者であり、データ利用端末200を利用するデータ利用者はアンケートの実施者である。 Example 2 describes a use case in which the confidential search system in Example 1 is applied to a questionnaire compilation. The data providers who use the data providing terminals 400 are the respondents to the questionnaire, and the data users who use the data using terminals 200 are the implementers of the questionnaire.

 データ利用端末200は、例えば入力装置201への入力に従って、アンケートにおける質問と、当該質問に対する回答の選択肢と、を作成し、各データ提供端末400に送信する。アンケートの各選択肢はキーワード441の一例である。 The data usage terminal 200 creates questions for a survey and answer options for the questions, for example, in accordance with input to the input device 201, and transmits these to each data providing terminal 400. Each answer option in the survey is an example of a keyword 441.

 各データ提供端末400は、例えば入力装置401への入力に従って、選択肢に対する選択を受け付け、選択された選択肢をステップS201において暗号化することで暗号化キーワード444を生成し、ステップS202においてデータ管理サーバ100へ暗号化キーワード444を送信する。但し、質問に対する回答として複数の選択肢が選択された場合は、各データ提供端末400は、当該選択された複数の選択肢それぞれを暗号化してデータ管理サーバ100へ送信する。 Each data providing terminal 400 accepts a selection for an option, for example according to input to the input device 401, encrypts the selected option in step S201 to generate an encryption keyword 444, and transmits the encryption keyword 444 to the data management server 100 in step S202. However, if multiple options are selected as answers to a question, each data providing terminal 400 encrypts each of the selected options and transmits them to the data management server 100.

 データ利用端末200は、ステップS204において集計したい選択肢に対応する検索キーワードの入力を入力装置201への入力を介して受け付け、ステップS205において当該検索キーワードに対応する検索クエリ231を生成してデータ管理サーバ100へ送信する。データ管理サーバ100は、ステップS207において、各データ提供端末400から受信した(暗号化された)アンケート結果全体(暗号化キーワード131の集合)に対して当該検索クエリ231を用いた検索を実行し、ヒットした件数をデータ利用端末200へ送信する。 In step S204, the data usage terminal 200 accepts input of a search keyword corresponding to the options to be tabulated via input to the input device 201, and in step S205 generates a search query 231 corresponding to the search keyword and transmits it to the data management server 100. In step S207, the data management server 100 executes a search using the search query 231 on all (encrypted) survey results (a set of encrypted keywords 131) received from each data provision terminal 400, and transmits the number of hits to the data usage terminal 200.

 このように、本実施例ではキーワード441に対して要秘匿データ442も公開データ443も紐づいていない、即ち暗号化データ445が生成されず、データ管理サーバ100が暗号化データ132及び公開データ141を保持しない。本実施例のように、データ管理サーバ100は、検索クエリを用いた検索によってヒットした暗号化キーワード131に対応する暗号化データ132及び公開データ141をデータ利用端末200に送信するのではなく、検索クエリを用いた検索によってヒット結果を示す情報(本実施例ではヒット件数)をデータ利用端末200に送信することもできる。 In this way, in this embodiment, neither confidential data 442 nor public data 443 is linked to keyword 441, i.e., encrypted data 445 is not generated, and data management server 100 does not hold encrypted data 132 and public data 141. As in this embodiment, data management server 100 can also transmit information indicating the hit results of a search using a search query (the number of hits in this embodiment) to data utilization terminal 200, rather than transmitting encrypted data 132 and public data 141 corresponding to encrypted keyword 131 that was found by a search using a search query to data utilization terminal 200.

 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。 The present invention is not limited to the above-described embodiments, but includes various modified examples. For example, the above-described embodiments have been described in detail to clearly explain the present invention, and are not necessarily limited to those having all of the configurations described. It is also possible to replace part of the configuration of one embodiment with the configuration of another embodiment, and it is also possible to add the configuration of another embodiment to the configuration of one embodiment. It is also possible to add, delete, or replace part of the configuration of each embodiment with other configurations.

 また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。 Furthermore, the above-mentioned configurations, functions, processing units, processing means, etc. may be realized in hardware, in part or in whole, for example by designing them as integrated circuits. Furthermore, the above-mentioned configurations, functions, etc. may be realized in software, by a processor interpreting and executing a program that realizes each function. Information on the programs, tables, files, etc. that realize each function can be stored in a memory, a recording device such as a hard disk or SSD (Solid State Drive), or a recording medium such as an IC card, SD card, or DVD.

 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。 Furthermore, the control lines and information lines shown are those considered necessary for the explanation, and do not necessarily show all control lines and information lines on the product. In reality, it can be assumed that almost all components are interconnected.

Claims (11)

 秘匿検索システムであって、
 データ管理サーバと、データ利用端末と、データ提供端末と、を備え、
 前記データ提供端末は、
 登録キーワードと、公開鍵と、を保持し、
 複数のベクトルをランダムに抽出し、
 所定のハッシュ関数に基づいて前記登録キーワードの第1ハッシュ値を計算し、
 前記複数のベクトルに含まれるベクトルと前記公開鍵とに基づいて第1ベクトルを生成し、
 前記複数のベクトルに含まれるベクトルと前記第1ハッシュ値とに基づいて生成したベクトルの成分を上位の所定数ビットに丸めて第2ベクトルを生成し、
 前記第1ベクトルと前記第2ベクトルとを含む暗号化キーワードを前記データ管理サーバに送信し、
 前記データ利用端末は、
 検索キーワードと、前記公開鍵に対応する秘密鍵と、を保持し、
 前記所定のハッシュ関数に基づいて前記検索キーワードの第2ハッシュ値を計算し、
 前記第2ハッシュ値と前記秘密鍵とに基づいて第3ベクトルを生成し、
 前記第3ベクトルを検索クエリとして前記データ管理サーバに送信し、
 前記データ管理サーバは、
 前記第1ベクトルと前記第3ベクトルとの積を前記第2ベクトルから引いたベクトルの少なくとも一部の成分を計算し、
 前記計算した少なくとも一部の成分のうち、第1範囲に含まれる成分の数に基づいて、前記検索キーワードと前記登録キーワードとが一致するかの検索結果を判定し、
 前記検索結果に基づくデータを前記データ利用端末に送信する、秘匿検索システム。
A confidential search system, comprising:
The system includes a data management server, a data utilization terminal, and a data provision terminal,
The data providing terminal includes:
Hold the registered keyword and the public key,
Randomly extract multiple vectors,
Calculating a first hash value of the registered keyword based on a predetermined hash function;
generating a first vector based on a vector included in the plurality of vectors and the public key;
generating a second vector by rounding a component of a vector generated based on a vector included in the plurality of vectors and the first hash value to a predetermined number of most significant bits;
Sending an encryption keyword including the first vector and the second vector to the data management server;
The data utilization terminal includes:
Holding a search keyword and a private key corresponding to the public key;
calculating a second hash value of the search keyword based on the predetermined hash function;
generating a third vector based on the second hash value and the private key;
Transmitting the third vector as a search query to the data management server;
The data management server includes:
Calculating at least some components of a vector obtained by subtracting the product of the first vector and the third vector from the second vector;
determining a search result as to whether the search keyword matches the registered keyword based on the number of components included in a first range among the at least a portion of the calculated components;
The confidential search system transmits data based on the search results to the data utilization terminal.
 請求項1に記載の秘匿検索システムであって、
 Nは2べきの自然数、qは素数、N’はN以下の2べきの自然数、mはN’以下の整数、Lはlogq以下の整数、αは0<α<1/2を満たす実数、f及びgはZ[X]/(X+1)=Rの元であり、
 前記公開鍵は、h=f-1g mod qであり、
 前記秘密鍵は、(f,g,F,G)であり、
 F及びGはf*G-F*g=qを満たし、
 前記データ提供端末は、
 前記複数のベクトルとしてr,e,e∈R/qRを抽出し、
 前記所定のハッシュ関数であるH()に基づいて前記登録キーワードであるwの前記第1ハッシュ値であるt=H(w)を計算し、
 前記第1ベクトルとして、u=r*h+eを生成し、
 r*t+eの一部又は全部の成分を計算し、当該計算した成分からなるベクトルの各成分をLビットに丸めたベクトルを前記第2ベクトルであるvとして生成し、
 (u,v)を前記暗号化キーワードとして、前記データ管理サーバに送信し、
 前記データ利用端末は、
 前記検索キーワードであるWの前記第2ハッシュ値であるT=H(W)を計算し、
 s’+s*h=Tを満たすs’,s∈R/qRを前記秘密鍵に基づいて生成し、
 前記生成したsを前記第3ベクトルである前記検索クエリとして前記データ管理サーバに送信し、
 前記データ管理サーバは、
 v-u*sのN’個の成分を計算し、
 前記計算したv-u*sのN’個の成分のうち、前記第1範囲である-αq以上かつαq以下の範囲に含まれる成分がm個以上である場合、前記検索キーワードと前記登録キーワードとが一致すると判定する、秘匿検索システム。
The confidential search system according to claim 1,
N is a natural number of a power of 2, q is a prime number, N' is a natural number of a power of 2 or less than N, m is an integer less than N', L is an integer less than log 2 q, α is a real number satisfying 0<α<1/2, f and g are elements of Z[X]/(X N +1)=R,
The public key is h=f −1 g mod q,
the private key is (f, g, F, G),
F and G satisfy f*G-F*g=q,
The data providing terminal includes:
Extract r, e 1 , e 2 ∈ R/qR as the plurality of vectors;
Calculate the first hash value t=H(w) of the registered keyword w based on the predetermined hash function H();
Generate u=r*h+ e1 as the first vector;
Calculating some or all of the components of r*t+ e2 , and generating a vector v as the second vector by rounding each component of the vector composed of the calculated components to L bits;
Transmitting (u, v) as the encrypted keyword to the data management server;
The data utilization terminal includes:
Calculate the second hash value T=H(W) of the search keyword W;
Generate s′, s∈R/qR that satisfies s′+s*h=T based on the private key;
Transmitting the generated s to the data management server as the search query, which is the third vector;
The data management server includes:
Calculate the N' components of v-u*s;
A confidential search system that determines that the search keyword matches the registered keyword when the number of components included in the first range of -αq or more and αq or less is m or more among the N' components of the calculated v-u*s.
 請求項2に記載の秘匿検索システムであって、
 前記データ提供端末は、r*t+eのN’個の成分を計算し、当該計算したN’個の成分からなるベクトルの各成分をLビットに丸めたベクトルを前記第2ベクトルであるvとして生成し、
 前記データ管理サーバは、r*t+eの計算対象となったN’個の成分と同じ成分についてのみv-u*sを計算する、秘匿検索システム。
The confidential search system according to claim 2,
The data providing terminal calculates N' components of r*t+ e2 , and generates a vector as the second vector v by rounding each component of the vector consisting of the calculated N' components to L bits;
The data management server calculates vu*s only for the same N' components as the N' components that are the subject of calculation of r*t+ e2 .
 請求項2に記載の秘匿検索システムであって、
 前記データ利用端末は、
 N,q,N’,m,及びLを決定し、
 f及びgをランダムに生成し、
 前記公開鍵hを生成し、
 f*G-F*g=qを満たすF及びGを計算し、
 公開パラメータ(N,q,h,N’,m,L)及び前記秘密鍵(f,g,F,G)を生成し、
 前記公開パラメータの少なくとも一部を前記データ管理サーバ及び前記データ提供端末に送信する、秘匿検索システム。
The confidential search system according to claim 2,
The data utilization terminal includes:
Determine N, q, N′, m, and L;
Randomly generate f and g;
generating said public key h;
Calculate F and G such that f*G-F*g=q;
Generate public parameters (N, q, h, N′, m, L) and the private keys (f, g, F, G);
A confidential search system that transmits at least a portion of the public parameters to the data management server and the data providing terminal.
 データ管理サーバであって、
 プロセッサとメモリとを備え、
 前記メモリは、
 暗号化キーワードと検索クエリとを保持し、
 前記暗号化キーワードは第1ベクトルと第2ベクトルとを含み、
 前記第1ベクトルは、ランダムに抽出された複数のベクトルに含まれるベクトルと公開鍵とに基づいて生成されたベクトルであり、
 前記第2ベクトルは、前記複数のベクトルに含まれるベクトルと第1ハッシュ値とに基づいて生成されたベクトルの成分を上位の所定数ビットに丸めて生成されたベクトルであり、
 前記第1ハッシュ値は、所定のハッシュ関数に基づいて計算された登録キーワードのハッシュ値であり、
 前記検索クエリは、第2ハッシュ値と、前記公開鍵に対応する秘密鍵と、に基づいて生成された第3ベクトルであり、
 前記第2ハッシュ値は、前記所定のハッシュ関数に基づいて計算された検索キーワードのハッシュ値であり、
 前記プロセッサは、
 前記第1ベクトルと前記第3ベクトルとの積を前記第2ベクトルから引いたベクトルの少なくとも一部の成分を計算し、
 前記計算した少なくとも一部の成分のうち、第1範囲に含まれる成分の数に基づいて、前記検索キーワードと前記登録キーワードとが一致するかの検索結果を判定し、
 前記検索結果に基づくデータを出力する、データ管理サーバ。
A data management server,
A processor and a memory,
The memory includes:
Holding the encrypted keyword and the search query;
the encrypted keyword includes a first vector and a second vector;
the first vector is a vector generated based on a vector included in a plurality of randomly extracted vectors and a public key;
the second vector is a vector generated by rounding a component of a vector generated based on a vector included in the plurality of vectors and a first hash value to a predetermined number of most significant bits,
the first hash value is a hash value of a registered keyword calculated based on a predetermined hash function,
the search query is a third vector generated based on the second hash value and a private key corresponding to the public key;
the second hash value is a hash value of the search keyword calculated based on the predetermined hash function,
The processor,
Calculating at least some components of a vector obtained by subtracting the product of the first vector and the third vector from the second vector;
determining a search result as to whether the search keyword matches the registered keyword based on the number of components included in a first range among the at least a portion of the calculated components;
A data management server outputs data based on the search results.
 請求項5に記載のデータ管理サーバであって、
 Nは2べきの自然数、qは素数、N’はN以下の2べきの自然数、mはN’以下の整数、Lはlogq以下の整数、αは0<α<1/2を満たす実数、f及びgはZ[X]/(X+1)=Rの元であり、
 前記公開鍵は、h=f-1g mod qであり、
 前記秘密鍵は、(f,g,F,G)であり、
 F及びGはf*G-F*g=qを満たし、
 前記複数のベクトルはr,e,e∈R/qRであり、
 前記第1ハッシュ値は、前記所定のハッシュ関数であるH()に基づく前記登録キーワードであるwのハッシュ値t=H(w)であり、
 前記第1ベクトルは、u=r*h+eであり、
 前記第2ベクトルは、r*t+eの一部又は全部の成分からなるベクトルの各成分をLビットに丸めたベクトルvであり、
 前記暗号化キーワードは(u,v)であり、
 前記第2ハッシュ値は、前記検索キーワードであるWのハッシュ値T=H(W)であり、
 前記第3ベクトルは、前記秘密鍵に基づいて生成された、s’+s*h=Tを満たすs’,s∈R/qRにおけるsであり、
 前記プロセッサは、
 v-u*sのN’個の成分を計算し、
 前記計算したv-u*sのN’個の成分のうち、前記第1範囲である-αq以上かつαq以下の範囲に含まれる成分がm個以上である場合、前記検索キーワードと前記登録キーワードとが一致すると判定する、データ管理サーバ。
6. The data management server according to claim 5,
N is a natural number of a power of 2, q is a prime number, N' is a natural number of a power of 2 or less than N, m is an integer less than N', L is an integer less than log 2 q, α is a real number satisfying 0<α<1/2, f and g are elements of Z[X]/(X N +1)=R,
The public key is h=f −1 g mod q,
the private key is (f, g, F, G),
F and G satisfy f*G-F*g=q,
The plurality of vectors are r, e 1 , e 2 ∈ R/qR;
the first hash value is a hash value t=H(w) of the registered keyword w based on the predetermined hash function H(),
The first vector is u=r*h+ e1 ,
The second vector is a vector v obtained by rounding each component of a vector consisting of some or all of the components of r*t+ e2 to L bits,
the encryption keyword is (u, v),
the second hash value is a hash value T=H(W) of the search keyword W,
the third vector is s in s′, s∈R/qR, where s′+s*h=T, generated based on the private key;
The processor,
Calculate the N' components of v-u*s;
A data management server that determines that the search keyword matches the registered keyword if, among the N' components of the calculated v-u*s, there are m or more components that fall within the first range that is greater than or equal to -αq and less than or equal to αq.
 請求項6に記載のデータ管理サーバであって、
 前記第2ベクトルであるvは、r*t+eのN’個の成分からなるベクトルの各成分をLビットに丸めたベクトルであり、
 前記プロセッサは、r*t+eの計算対象となったN’個の成分と同じ成分についてのみv-u*sを計算する、データ管理サーバ。
7. The data management server according to claim 6,
The second vector v is a vector obtained by rounding each component of a vector consisting of N' components of r*t+ e2 to L bits,
The processor calculates vu*s only for the same N' components as those used for the calculation of r*t+ e2 . A data management server.
 秘匿検索システムによる秘匿検索方法であって、
 前記秘匿検索システムは、データ管理サーバと、データ利用端末と、データ提供端末と、を含み、
 前記データ提供端末は、登録キーワードと、公開鍵と、を保持し、
 前記データ利用端末は、検索キーワードと、前記公開鍵に対応する秘密鍵と、を保持し、
 前記秘匿検索方法は、
 前記データ提供端末が、複数のベクトルをランダムに抽出し、
 前記データ提供端末が、所定のハッシュ関数に基づいて前記登録キーワードの第1ハッシュ値を計算し、
 前記データ提供端末が、前記複数のベクトルに含まれるベクトルと前記公開鍵とに基づいて第1ベクトルを生成し、
 前記データ提供端末が、前記複数のベクトルに含まれるベクトルと前記第1ハッシュ値とに基づいて生成したベクトルの成分を上位の所定数ビットに丸めて第2ベクトルを生成し、
 前記データ提供端末が、前記第1ベクトルと前記第2ベクトルとを含む暗号化キーワードを前記データ管理サーバに送信し、
 前記データ利用端末が、前記所定のハッシュ関数に基づいて前記検索キーワードの第2ハッシュ値を計算し、
 前記データ利用端末が、前記第2ハッシュ値と前記秘密鍵とに基づいて第3ベクトルを生成し、
 前記データ利用端末が、前記第3ベクトルを検索クエリとして前記データ管理サーバに送信し、
 前記データ管理サーバが、前記第1ベクトルと前記第3ベクトルとの積を前記第2ベクトルから引いたベクトルの少なくとも一部の成分を計算し、
 前記データ管理サーバが、前記計算した少なくとも一部の成分のうち、第1範囲に含まれる成分の数に基づいて、前記検索キーワードと前記登録キーワードとが一致するかの検索結果を判定し、
 前記データ管理サーバが、前記検索結果に基づくデータを前記データ利用端末に送信する、秘匿検索方法。
A confidential search method using a confidential search system, comprising:
The confidential search system includes a data management server, a data utilization terminal, and a data provision terminal,
the data providing terminal holds a registered keyword and a public key;
the data utilization terminal holds a search keyword and a private key corresponding to the public key;
The confidential search method includes:
The data providing terminal randomly extracts a plurality of vectors;
the data providing terminal calculates a first hash value of the registered keyword based on a predetermined hash function;
the data providing terminal generates a first vector based on a vector included in the plurality of vectors and the public key;
the data providing terminal generates a second vector by rounding a component of a vector generated based on a vector included in the plurality of vectors and the first hash value to a predetermined number of most significant bits;
the data providing terminal transmits an encrypted keyword including the first vector and the second vector to the data management server;
the data utilization terminal calculates a second hash value of the search keyword based on the predetermined hash function;
the data utilization terminal generates a third vector based on the second hash value and the private key;
the data utilization terminal transmits the third vector as a search query to the data management server;
the data management server calculates at least some components of a vector obtained by subtracting a product of the first vector and the third vector from the second vector;
the data management server determines a search result as to whether the search keyword matches the registered keyword based on a number of components included in a first range among the at least a portion of the calculated components;
The data management server transmits data based on the search results to the data utilization terminal.
 請求項8に記載の秘匿検索方法であって、
 Nは2べきの自然数、qは素数、N’はN以下の2べきの自然数、mはN’以下の整数、Lはlogq以下の整数、αは0<α<1/2を満たす実数、f及びgはZ[X]/(X+1)=Rの元であり、
 前記公開鍵は、h=f-1g mod qであり、
 前記秘密鍵は、(f,g,F,G)であり、
 F及びGはf*G-F*g=qを満たし、
 前記秘匿検索方法は、
 前記データ提供端末が、前記複数のベクトルとしてr,e,e∈R/qRを抽出し、
 前記データ提供端末が、前記所定のハッシュ関数であるH()に基づいて前記登録キーワードであるwの前記第1ハッシュ値であるt=H(w)を計算し、
 前記データ提供端末が、前記第1ベクトルとして、u=r*h+eを生成し、
 前記データ提供端末が、r*t+eの一部又は全部の成分を計算し、当該計算した成分からなるベクトルの各成分をLビットに丸めたベクトルを前記第2ベクトルであるvとして生成し、
 前記データ提供端末が、(u,v)を前記暗号化キーワードとして、前記データ管理サーバに送信し、
 前記データ利用端末が、前記検索キーワードであるWの前記第2ハッシュ値であるT=H(W)を計算し、
 前記データ利用端末が、s’+s*h=Tを満たすs’,s∈R/qRを前記秘密鍵に基づいて生成し、
 前記データ利用端末が、前記生成したsを前記第3ベクトルである前記検索クエリとして前記データ管理サーバに送信し、
 前記データ管理サーバが、v-u*sのN’個の成分を計算し、
 前記データ管理サーバが、前記計算したv-u*sのN’個の成分のうち、前記第1範囲である-αq以上かつαq以下の範囲に含まれる成分がm個以上である場合、前記検索キーワードと前記登録キーワードとが一致すると判定する、秘匿検索方法。
The confidential search method according to claim 8,
N is a natural number of a power of 2, q is a prime number, N' is a natural number of a power of 2 or less than N, m is an integer less than N', L is an integer less than log 2 q, α is a real number satisfying 0<α<1/2, f and g are elements of Z[X]/(X N +1)=R,
The public key is h=f −1 g mod q,
the private key is (f, g, F, G),
F and G satisfy f*G-F*g=q,
The confidential search method includes:
The data providing terminal extracts r, e 1 , e 2 ∈R/qR as the plurality of vectors;
the data providing terminal calculates the first hash value t=H(w) of the registered keyword w based on the predetermined hash function H();
The data providing terminal generates u=r*h+ e1 as the first vector,
the data providing terminal calculates some or all of the components of r*t+ e2 , and generates a vector as the second vector v by rounding each component of a vector consisting of the calculated components to L bits;
the data providing terminal transmits (u, v) as the encrypted keyword to the data management server;
The data utilization terminal calculates the second hash value T=H(W) of the search keyword W,
The data utilization terminal generates s', s∈R/qR that satisfies s'+s*h=T based on the private key,
the data utilization terminal transmits the generated s to the data management server as the search query, which is the third vector;
The data management server calculates N' components of v-u*s;
The confidential search method, in which the data management server determines that the search keyword matches the registered keyword if, among the N' components of the calculated v-u*s, there are m or more components that fall within the first range that is greater than or equal to -αq and less than or equal to αq.
 請求項9に記載の秘匿検索方法であって、
 前記データ提供端末が、r*t+eのN’個の成分を計算し、当該計算したN’個の成分からなるベクトルの各成分をLビットに丸めたベクトルを前記第2ベクトルであるvとして生成し、
 前記データ管理サーバが、r*t+eの計算対象となったN’個の成分と同じ成分についてのみv-u*sを計算する、秘匿検索方法。
The confidential search method according to claim 9,
The data providing terminal calculates N' components of r*t+ e2 , and generates a vector v as the second vector by rounding each component of the vector consisting of the calculated N' components to L bits;
The data management server calculates v−u*s only for the same N′ components as those used in the calculation of r*t+ e2 .
 請求項9に記載の秘匿検索方法であって、
 前記データ利用端末が、N,q,N’,m,及びLを決定し、
 前記データ利用端末が、f及びgをランダムに生成し、
 前記データ利用端末が、前記公開鍵hを生成し、
 前記データ利用端末が、f*G-F*g=qを満たすF及びGを計算し、
 前記データ利用端末が、公開パラメータ(N,q,h,N’,m,L)及び前記秘密鍵(f,g,F,G)を生成し、
 前記データ利用端末が、前記公開パラメータの少なくとも一部を前記データ管理サーバ及び前記データ提供端末に送信する、秘匿検索方法。
The confidential search method according to claim 9,
The data utilizing terminal determines N, q, N′, m, and L;
The data utilizing terminal randomly generates f and g;
The data utilization terminal generates the public key h,
The data utilizing terminal calculates F and G that satisfy f*G-F*g=q,
The data utilization terminal generates public parameters (N, q, h, N′, m, L) and the private key (f, g, F, G);
The data utilization terminal transmits at least a portion of the public parameters to the data management server and the data providing terminal.
PCT/JP2024/031272 2023-09-22 2024-08-30 Secret search system, data management server, and secret search method Pending WO2025063010A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2023-158312 2023-09-22
JP2023158312A JP2025049852A (en) 2023-09-22 2023-09-22 Confidential search system, data management server, and confidential search method

Publications (1)

Publication Number Publication Date
WO2025063010A1 true WO2025063010A1 (en) 2025-03-27

Family

ID=95072797

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2024/031272 Pending WO2025063010A1 (en) 2023-09-22 2024-08-30 Secret search system, data management server, and secret search method

Country Status (2)

Country Link
JP (1) JP2025049852A (en)
WO (1) WO2025063010A1 (en)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LIJUN QI ; JINCHENG ZHUANG: "Efficient Public Key Searchable Encryption Schemes from Standard Hard Lattice Problems for Cloud Computing", IACR, INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH, vol. 20221012:070625, 12 October 2022 (2022-10-12), International Association for Cryptologic Research, pages 1 - 19, XP061073957 *
ROUZBEH BEHNIA ; MUSLUM OZGUR OZMEN ; ATTILA A. YAVUZ: "Lattice-Based Public Key Searchable Encryption from Experimental Perspectives", IACR, INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH, vol. 20181109:215604, 9 November 2018 (2018-11-09), International Association for Cryptologic Research , pages 1 - 14, XP061026686 *

Also Published As

Publication number Publication date
JP2025049852A (en) 2025-04-04

Similar Documents

Publication Publication Date Title
CN107077469B (en) Server device, retrieval system, terminal device, and retrieval method
US10664610B2 (en) Method and system for range search on encrypted data
Liu et al. An efficient privacy-preserving outsourced computation over public data
US11475121B2 (en) Confidential information processing system and confidential information processing method
US11184163B2 (en) Value comparison server, value comparison encryption system, and value comparison method
US8769302B2 (en) Encrypting data and characterization data that describes valid contents of a column
JP6770075B2 (en) Encrypted message search method, message sending / receiving system, terminal, program
Zhang et al. Dynamic and Efficient Private Keyword Search over Inverted Index--Based Encrypted Data
JP2019146088A (en) Computer system, connection device, and data processing method
US20190260583A1 (en) Encryption device, search device, computer readable medium, encryption method, and search method
WO2011013463A1 (en) Range retrieval system, range retrieval method, and program for range retrieval
US20250150260A1 (en) Multi-key information retrieval
US11811741B2 (en) Information processing system and information processing method
WO2025063010A1 (en) Secret search system, data management server, and secret search method
US10769144B2 (en) Database search system, database search method, and non-transitory recording medium
WO2021144834A1 (en) Secret retrieval system, secret retrieval method, and secret retrieval program
Rahman et al. A novel privacy preserving search technique for stego data in untrusted cloud
US11989325B1 (en) Protecting membership in a secure multi-party computation and/or communication
US20250279876A1 (en) Registration request device, search request device, registration request method, search request method, and data management method
CN120408657A (en) Searchable encryption management method, device, storage medium and electronic device
CN118796449A (en) Computing power network, data retrieval method, storage medium and computer program product

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: 24868090

Country of ref document: EP

Kind code of ref document: A1