KR102123440B1 - Encryption method for supporting range query in multi-client environment and apparatus using the same - Google Patents

Encryption method for supporting range query in multi-client environment and apparatus using the same Download PDF

Info

Publication number
KR102123440B1
KR102123440B1 KR1020190108054A KR20190108054A KR102123440B1 KR 102123440 B1 KR102123440 B1 KR 102123440B1 KR 1020190108054 A KR1020190108054 A KR 1020190108054A KR 20190108054 A KR20190108054 A KR 20190108054A KR 102123440 B1 KR102123440 B1 KR 102123440B1
Authority
KR
South Korea
Prior art keywords
nodes
equation
generating
node
binary tree
Prior art date
Application number
KR1020190108054A
Other languages
Korean (ko)
Inventor
이광수
Original Assignee
세종대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 세종대학교산학협력단 filed Critical 세종대학교산학협력단
Priority to KR1020190108054A priority Critical patent/KR102123440B1/en
Application granted granted Critical
Publication of KR102123440B1 publication Critical patent/KR102123440B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test

Abstract

Disclosed are an encryption method for supporting range query for ciphertexts in a multi-client environment and an apparatus using the same. According to an embodiment of the present invention, a method comprises the steps of: obtaining a user encryption key from a key generating device; generating a node set including a plurality of nodes on a path from a root node to a leaf node corresponding to data to be encrypted in a preset binary tree; and generating a ciphertext for the data to be encrypted based on the user encryption key, a label for the data to be encrypted, and the node set.

Description

멀티 클라이언트 환경에서 범위 질의를 지원하는 암호화 방법 및 이를 이용한 장치{ENCRYPTION METHOD FOR SUPPORTING RANGE QUERY IN MULTI-CLIENT ENVIRONMENT AND APPARATUS USING THE SAME}An encryption method supporting range query in a multi-client environment and a device using the same {ENCRYPTION METHOD FOR SUPPORTING RANGE QUERY IN MULTI-CLIENT ENVIRONMENT AND APPARATUS USING THE SAME}

본 발명의 실시예들은 암호화 기술과 관련된다.Embodiments of the invention relate to encryption technology.

술어-기반 암호(Predicate Encryption)는 암호화된 메시지의 속성과 속성 벡터 간의 동치 연산을 가능하게 하는 비밀키 암호 기술이다. 기존 술어-기반 암호 기법들은 다수의 클라이언트가 생성한 다수의 암호문들을 모두 한 번에 비교하기가 어려웠다. 일부 다수 술어-기반 암호 기법은 다수의 클라이언트가 생성한 다수의 암호문에 대한 비교를 지원했으나 다수 암호문에 대한 질의(또는 복호화) 연산을 수행하는 과정이 처리하는 암호문의 개수에 선형적으로 늘어나는 단점을 가져서 비효율적이었다.Predicate Encryption (Predicate Encryption) is a secret key encryption technology that enables the equivalent operation between the attribute vector and the attribute of the encrypted message. Conventional predicate-based cryptography has been difficult to compare multiple ciphertexts generated by multiple clients at once. Some multiple predicate-based cryptography supports comparison of multiple ciphertexts generated by multiple clients, but the disadvantage of linear increase in the number of ciphertexts processed by the process of performing a query (or decryption) operation on multiple ciphertexts It was inefficient.

범위-질의 암호(Range Query Encryption)는 암호화된 상태에서 평문이 질의된 범위에 포함되는가에 대한 여부를 확인할 수 있는 암호 기술이다. 기존의 범위-질의가 가능한 암호화 기법은 2007년에 설계되었으나 비효율적이어서 현실에 적용하기 어렵다. Range Query Encryption is an encryption technology that can check whether plain text is included in the queried range in an encrypted state. The existing range-queriable encryption technique was designed in 2007, but it is inefficient and difficult to apply to reality.

한편, 범위-질의 암호와 정의는 다르지만, 순서 노출 암호(Order-Revealing Encryption)를 범위 질의에 응용할 수 있으며, 최근 다중 클라이언트 환경을 효율적으로 지원하는 순서 노출 암호가 제안되었다. 하지만 순서 노출 암호는 암호문의 순서가 노출되는 점에서 범위-질의 암호보다 더 많은 정보를 노출한다는 단점이 있다.On the other hand, although the scope-query password and definition are different, an order-revealing encryption can be applied to the range query, and recently, a sequence-exposed password that efficiently supports a multi-client environment has been proposed. However, the order-exposed password has the disadvantage that it exposes more information than the range-query password in that the order of the ciphertext is exposed.

대한민국 등록특허공보 제10-1695361호 (2017. 01. 11. 공고)Republic of Korea Patent Registration No. 10-1695361 (January 2017. 11. Announcement)

본 발명의 실시예들은 멀티 클라이언트 환경에서 범위 질의를 지원하는 암호화 방법 및 이를 이용한 장치를 제공하기 위한 것이다.Embodiments of the present invention are to provide an encryption method and a device using the same for supporting range queries in a multi-client environment.

본 발명의 일 실시예에 따른 방법은, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 키 생성 장치로부터 사용자 암호키를 획득하는 단계; 기 설정된 이진 트리 내에서 루트 노드로부터 암호화할 데이터에 대응되는 리프 노드까지의 경로 상에 있는 복수의 노드를 포함하는 노드 집합을 생성하는 단계; 상기 사용자 암호키, 상기 암호화할 데이터에 대한 라벨(label) 및 상기 노드 집합에 기초하여 상기 암호화할 데이터에 대한 암호문을 생성하는 단계를 포함한다.A method according to an embodiment of the present invention is a method performed in a computing device having one or more processors, and a memory storing one or more programs executed by the one or more processors, the user password from the key generating device Obtaining a key; Generating a node set including a plurality of nodes in a path from a root node to a leaf node corresponding to data to be encrypted in a preset binary tree; And generating a cipher text for the data to be encrypted based on the user encryption key, a label for the data to be encrypted, and the node set.

본 발명의 일 실시예에 따른 방법은, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 복수의 사용자 각각에 대한 사용자 암호키 및 마스터 비밀키를 생성하는 단계; 상기 생성된 사용자 암호키를 상기 복수의 사용자 각각의 클라이언트 장치로 제공하는 단계; 질의 장치로부터 복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 수신하는 단계; 기 설정된 이진 트리, 상기 질의 벡터 집합 및 상기 마스터 비밀키를 이용하여 상기 질의 벡터 집합에 대한 토큰을 생성하는 단계; 및 상기 생성된 토큰을 상기 질의 장치로 제공하는 단계를 포함한다.A method according to an embodiment of the present invention is a method performed in a computing device having one or more processors, and a memory storing one or more programs executed by the one or more processors, for each of a plurality of users Generating a user encryption key and a master secret key; Providing the generated user encryption key to the client devices of each of the plurality of users; Receiving a query vector set including a plurality of range query vectors from the query device; Generating a token for the query vector set using a preset binary tree, the query vector set, and the master secret key; And providing the generated token to the query device.

본 발명의 일 실시예에 따른 방법은, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 생성하는 단계; 키 생성 장치로부터 상기 질의 벡터 집합에 대한 토큰을 획득하는 단계; 및 상이한 사용자 암호키를 이용하여 암호화된 복수의 데이터 각각에 대한 암호문, 상기 복수의 데이터에 대한 라벨(label) 및 상기 토큰을 이용하여, 상기 복수의 데이터를 포함하는 데이터 집합과 상기 질의 벡터 집합 사이의 매칭 여부를 판단하는 단계를 포함한다.A method according to an embodiment of the present invention is a method performed in a computing device having one or more processors, and a memory storing one or more programs executed by the one or more processors, the method comprising: Generating a vector set of queries including; Obtaining a token for the set of query vectors from a key generator; And a ciphertext for each of the plurality of data encrypted using different user encryption keys, a label for the plurality of data, and the token, between the data set containing the plurality of data and the query vector set. And determining whether to match.

본 발명의 일 실시예에 따른 장치는, 하나 이상의 프로세서; 메모리; 및 하나 이상의 프로그램을 포함하는 장치로서, 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며, 상기 프로그램은, 키 생성 장치로부터 사용자 암호키를 획득하는 단계; 기 설정된 이진 트리 내에서 루트 노드로부터 암호화할 데이터에 대응되는 리프 노드까지의 경로 상에 있는 복수의 노드를 포함하는 노드 집합을 생성하는 단계; 및 상기 사용자 암호키, 상기 암호화할 데이터에 대한 라벨(label) 및 상기 노드 집합에 기초하여 상기 암호화할 데이터에 대한 암호문을 생성하는 단계를 실행하기 위한 명령어들을 포함한다.An apparatus according to an embodiment of the present invention, one or more processors; Memory; And one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the program comprising: obtaining a user encryption key from a key generating device; Generating a node set including a plurality of nodes in a path from a root node to a leaf node corresponding to data to be encrypted in a preset binary tree; And instructions for executing the step of generating a ciphertext for the data to be encrypted based on the user encryption key, the label for the data to be encrypted, and the node set.

본 발명의 일 실시예에 따른 장치는, 하나 이상의 프로세서; 메모리; 및 하나 이상의 프로그램을 포함하는 장치로서, 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며, 상기 프로그램은, 복수의 사용자 각각에 대한 사용자 암호키 및 마스터 비밀키를 생성하는 단계; 상기 생성된 사용자 암호키를 상기 복수의 사용자 각각의 클라이언트 장치로 제공하는 단계; 질의 장치로부터 복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 수신하는 단계; 기 설정된 이진 트리, 상기 질의 벡터 집합 및 상기 마스터 비밀키를 이용하여 상기 질의 벡터 집합에 대한 토큰을 생성하는 단계; 및 상기 생성된 토큰을 상기 질의 장치로 제공하는 단계를 실행하기 위한 명령어들을 포함한다.An apparatus according to an embodiment of the present invention, one or more processors; Memory; And one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, wherein the programs generate a user encryption key and a master secret key for each of the plurality of users. To do; Providing the generated user encryption key to the client devices of each of the plurality of users; Receiving a query vector set including a plurality of range query vectors from the query device; Generating a token for the query vector set using a preset binary tree, the query vector set, and the master secret key; And instructions for executing the step of providing the generated token to the query device.

본 발명의 일 실시예에 따른 장치는, 하나 이상의 프로세서; 메모리; 및 하나 이상의 프로그램을 포함하는 장치로서, 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며, 상기 프로그램은, 복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 생성하는 단계; 키 생성 장치로부터 상기 질의 벡터 집합에 대한 토큰을 획득하는 단계; 및 상이한 사용자 암호키를 이용하여 암호화된 복수의 데이터 각각에 대한 암호문, 상기 복수의 데이터에 대한 라벨(label) 및 상기 토큰을 이용하여, 상기 복수의 데이터를 포함하는 데이터 집합과 상기 질의 벡터 집합 사이의 매칭 여부를 판단하는 단계를 실행하기 위한 명령어들을 포함한다.An apparatus according to an embodiment of the present invention, one or more processors; Memory; And one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the program generating a query vector set comprising a plurality of range query vectors. ; Obtaining a token for the set of query vectors from a key generator; And a ciphertext for each of the plurality of data encrypted using different user encryption keys, a label for the plurality of data, and the token, between the data set containing the plurality of data and the query vector set. It includes instructions for executing the step of determining whether or not the match.

본 발명의 실시예들에 따르면, 멀티 클라이언트 환경에서 상이한 클라이언트에 의해 생성된 다수의 암호문에 대한 효율적인 범위 질의 연산이 가능하게 된다.According to embodiments of the present invention, an efficient range query operation for a plurality of ciphertexts generated by different clients in a multi-client environment is possible.

도 1은 도 1은 본 발명의 일 실시예에 따른 암호화 시스템의 구성도
도 2는 일 실시예에 따른 이진 트리의 일 예를 나타낸 도면
도 3은 일 실시예에 따른 커버 노드 집합을 설명하기 위한 도면
도 4는 본 발명의 일 실시예에 따른 암호화 과정을 설명하기 위한 순서도
도 5는 본 발명의 일 실시예에 따른 질의 벡터 집합과 데이터 집합 사이의 매칭 여부를 판단하는 과정을 설명하기 위한 순서도
도 6은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
1 is a block diagram of an encryption system according to an embodiment of the present invention
2 is a diagram illustrating an example of a binary tree according to an embodiment
3 is a view for explaining a set of cover nodes according to an embodiment
4 is a flow chart for explaining the encryption process according to an embodiment of the present invention
5 is a flowchart for explaining a process of determining whether to match between a query vector set and a data set according to an embodiment of the present invention
6 is a block diagram illustrating and illustrating a computing environment including a computing device suitable for use in example embodiments.

이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.Hereinafter, specific embodiments of the present invention will be described with reference to the drawings. The following detailed description is provided to aid in a comprehensive understanding of the methods, devices and/or systems described herein. However, this is only an example and the present invention is not limited thereto.

본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.In describing the embodiments of the present invention, when it is determined that a detailed description of known technology related to the present invention may unnecessarily obscure the subject matter of the present invention, the detailed description will be omitted. In addition, terms to be described later are terms defined in consideration of functions in the present invention, which may vary according to a user's or operator's intention or practice. Therefore, the definition should be made based on the contents throughout this specification. The terminology used in the detailed description is only for describing embodiments of the present invention and should not be limiting. Unless expressly used otherwise, a singular form includes a plural form. In this description, expressions such as “including” or “equipment” are intended to indicate certain characteristics, numbers, steps, actions, elements, parts or combinations thereof, and one or more other than described. It should not be interpreted to exclude the presence or likelihood of other characteristics, numbers, steps, actions, elements, parts or combinations thereof.

도 1은 본 발명의 일 실시예에 따른 암호화 시스템의 구성도이다. 1 is a block diagram of an encryption system according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 암호화 시스템(100)은 키 생성 장치(110), 복수의 클라이언트 장치(120-1, 120-2, 120-n), 데이터베이스(130) 및 질의 장치(140)를 포함한다. Referring to FIG. 1, the encryption system 100 according to an embodiment of the present invention includes a key generating device 110, a plurality of client devices 120-1, 120-2, 120-n, a database 130, and Query device 140.

키 생성 장치(110)는 암호화 시스템(100)에서 사용할 마스터 비밀키, 사용자 암호키 및 공개 파라미터를 생성하기 위한 장치로서 예를 들어, 신뢰 기관(Trusted Third Party)와 같이 신뢰할 수 있는 개체에 의해 운영될 수 있다.The key generating device 110 is a device for generating a master secret key, a user encryption key, and public parameters to be used in the encryption system 100, and is operated by a trusted entity, such as a trusted third party, for example. Can be.

구체적으로, 키 생성 장치(110)는 암호화 시스템(100)에 참여한 복수의 사용자 각각에 대한 사용자 암호키를 생성하고, 생성된 각 사용자에 대한 사용자 암호키를 암호화를 위해 각 사용자에 의해 이용되는 클라이언트 장치(120-1, 120-2, 120-n)로 제공할 수 있다.Specifically, the key generating device 110 generates a user encryption key for each of a plurality of users participating in the encryption system 100, and a client used by each user to encrypt the user encryption key for each generated user Devices 120-1, 120-2, and 120-n.

또한, 키 생성 장치(110)는 마스터 비밀키 및 공개 파라미터를 생성하여 마스터 비밀키는 안전하게 저장하고, 공개 파라미터는 암호화 시스템(100) 내에 공개할 수 있다.In addition, the key generating device 110 generates a master secret key and a public parameter to safely store the master secret key, and the public parameter can be disclosed in the encryption system 100.

한편, 키 생성 장치(110)는 질의 장치(140)의 요청에 따라 질의 벡터 집합에 대한 토큰을 생성하여 질의 장치(140)로 제공할 수 있다.Meanwhile, the key generating device 110 may generate a token for a set of query vectors at the request of the query device 140 and provide it to the query device 140.

클라이언트 장치(120-1, 120-2, 120-n)는 암호문 생성을 위해 키 생성 장치(110)로부터 사용자 암호키를 발급받은 각 사용자에 의해 이용되는 장치로서, 클라이언트 장치(120-1, 120-2, 120-n)의 개수는 실시예에 따라 변경될 수 있다.The client devices 120-1, 120-2, and 120-n are devices used by each user who has issued a user encryption key from the key generation device 110 for generating a ciphertext, and the client devices 120-1, 120 The number of -2, 120-n) may be changed according to embodiments.

데이터베이스(130)는 각 클라이언트 장치(120-1, 120-2, 120-n)에 의해 생성된 암호문을 저장하기 위한 것으로, 각 클라이언트 장치(120-1, 120-2, 120-n) 및 질의 장치(140)에 의해 접근 가능한 하나 이상의 서버 또는 클라우드(cloud) 환경 내에 구현될 수 있다.Database 130 is for storing the ciphertext generated by each client device (120-1, 120-2, 120-n), each client device (120-1, 120-2, 120-n) and query It may be implemented in one or more servers or cloud environments accessible by the device 140.

질의 장치(140)는 키 생성 장치(110)로부터 제공받은 질의 벡터 집합에 대한 토큰과 각 클라이언트 장치(120-1, 120-2, 120-n)에 의해 생성되어 데이터베이스(130)에 저장된 복수의 암호문을 이용하여, 복수의 암호문 각각에 의해 암호화된 데이터를 포함하는 데이터 집합과 질의 벡터 집합 사이의 매칭 여부를 판단한다. The querying device 140 generates tokens for a set of query vectors provided from the key generating device 110 and a plurality of queries generated by the client devices 120-1, 120-2, and 120-n and stored in the database 130. By using the ciphertext, it is determined whether a match between a dataset including data encrypted by each of the plurality of ciphertexts and a query vector set.

한편, 도 1에 도시된 암호화 시스템(100)에서 수행되는 암호화 기법은 다음과 같은 4개의 알고리즘으로 구성될 수 있다.Meanwhile, the encryption technique performed in the encryption system 100 illustrated in FIG. 1 may be composed of the following four algorithms.

셋업(setup) 알고리즘Setup algorithm

셋업 알고리즘은 보안 상수(Security Parameter) 1λ 및 암호화 시스템(100)에 참여할 사용자의 총수(n)을 입력받아 각각 위수(order)가 소수(prime number) p인 순환군(cyclic group)

Figure 112019090036619-pat00001
,
Figure 112019090036619-pat00002
Figure 112019090036619-pat00003
를 생성할 수 있다.The setup algorithm receives security parameters 1 λ and the total number (n) of users to participate in the encryption system 100, and a cyclic group having a prime number p, respectively.
Figure 112019090036619-pat00001
,
Figure 112019090036619-pat00002
And
Figure 112019090036619-pat00003
Can generate

또한, 셋업 알고리즘은

Figure 112019090036619-pat00004
를 만족하는 겹선형 함수(bilinear map)
Figure 112019090036619-pat00005
,
Figure 112019090036619-pat00006
를 만족하는
Figure 112019090036619-pat00007
의 생성원(generator)
Figure 112019090036619-pat00008
Figure 112019090036619-pat00009
를 만족하는
Figure 112019090036619-pat00010
의 생성원
Figure 112019090036619-pat00011
를 생성할 수 있다. Also, the setup algorithm
Figure 112019090036619-pat00004
Bilinear map that satisfies
Figure 112019090036619-pat00005
,
Figure 112019090036619-pat00006
Satisfying
Figure 112019090036619-pat00007
Generator
Figure 112019090036619-pat00008
And
Figure 112019090036619-pat00009
Satisfying
Figure 112019090036619-pat00010
Origin of
Figure 112019090036619-pat00011
Can generate

이후, 셋업 알고리즘은 모든 i(이때, i는 사용자 인덱스로서

Figure 112019090036619-pat00012
인 정수)에 대해
Figure 112019090036619-pat00013
를 만족하는
Figure 112019090036619-pat00014
, 임의의 정수
Figure 112019090036619-pat00015
Figure 112019090036619-pat00016
를 선택하여 각 사용자에 대한 사용자 암호키
Figure 112019090036619-pat00017
를 생성할 수 있다.After that, the setup algorithm is set to all i (where i is the user index
Figure 112019090036619-pat00012
Phosphorus constants)
Figure 112019090036619-pat00013
Satisfying
Figure 112019090036619-pat00014
, Any integer
Figure 112019090036619-pat00015
And
Figure 112019090036619-pat00016
Select the user encryption key for each user
Figure 112019090036619-pat00017
Can generate

또한, 셋업 알고리즘은

Figure 112019090036619-pat00018
를 만족하는
Figure 112019090036619-pat00019
를 선택하고, 마스터 비밀키
Figure 112019090036619-pat00020
를 생성할 수 있다.Also, the setup algorithm
Figure 112019090036619-pat00018
Satisfying
Figure 112019090036619-pat00019
Select and Master Secret Key
Figure 112019090036619-pat00020
Can generate

또한, 셋업 알고리즘은 임의의 문자 열을

Figure 112019090036619-pat00021
로 맵핑시키는 해시 함수(hash function)
Figure 112019090036619-pat00022
(즉,
Figure 112019090036619-pat00023
) 및 깊이(depth)가
Figure 112019090036619-pat00024
(이때,
Figure 112019090036619-pat00025
Figure 112019090036619-pat00026
인 정수)인 이진 트리(binary tree) BT를 생성할 수 있다.In addition, the setup algorithm can generate arbitrary strings.
Figure 112019090036619-pat00021
Hash function to map to
Figure 112019090036619-pat00022
(In other words,
Figure 112019090036619-pat00023
) And depth
Figure 112019090036619-pat00024
(At this time,
Figure 112019090036619-pat00025
silver
Figure 112019090036619-pat00026
Can generate a binary tree BT.

이때, 이진 트리는 이진 트리 내 깊이가 1인 하나의 루트 노드 및

Figure 112019090036619-pat00027
개의 상이한 값들 각각에 대응되며 이진 트리 내 깊이가
Figure 112019090036619-pat00028
인 D개의 리프 노드(leaf node)를 포함하고, 리프 노드를 제외한 나머지 노드들이 각각 두 개의 자식 노드(child node)를 가지는 완전 이진 트리(perfect binary tree)로 구성될 수 있다. At this time, the binary tree is a root node with a depth of 1 in the binary tree, and
Figure 112019090036619-pat00027
Corresponding to each of the different values and the depth in the binary tree
Figure 112019090036619-pat00028
Including D leaf nodes, the remaining nodes except the leaf node may be composed of a perfect binary tree having two child nodes.

한편, 이진 트리에 포함된 각 노드에는 이진 트리 내에서 각 노드를 식별하기 위한 노드 식별 정보가 할당될 수 있다.Meanwhile, node identification information for identifying each node in the binary tree may be assigned to each node included in the binary tree.

도 2는 일 실시예에 따른 이진 트리의 일 예를 나타낸 도면이다.2 is a diagram illustrating an example of a binary tree according to an embodiment.

도 2에 도시된 이진 트리에서 원형으로 표시된 부분은 이진 트리에 포함된 각 노드를 나타내며, 각 노드에 표시된 알파벳은 각 노드에 할당된 노드 식별 정보를 나타낸다. In the binary tree shown in FIG. 2, a circled portion indicates each node included in the binary tree, and an alphabet displayed on each node represents node identification information assigned to each node.

즉, 도 2에 도시된 이진 트리는 깊이가 4(즉,

Figure 112019090036619-pat00029
)인 이진 트리로서, 깊이가 1인 루트 노드(즉, 'A')와 각각 깊이가 4인 8개의 리프 노드(즉, 'H', 'I', 'J', 'K', 'L' 'M' 'N' 'O')를 포함하고 있으며, 리프 노드를 제외한 나머지 노드들은 각각 2개의 자식 노드를 가지고 있다.That is, the binary tree shown in FIG. 2 has a depth of 4 (ie,
Figure 112019090036619-pat00029
) Is a binary tree, with a root node of depth 1 (ie'A') and 8 leaf nodes of depth 4 (ie'H','I','J','K','L) ''M''N''O'), and the rest of the nodes except the leaf node each have two child nodes.

또한, 8개의 리프 노드는 각각 상이한 특정한 값에 대응될 수 있다. 예를 들어, 리프 노드 'H', 'I', 'J', 'K', 'L' 'M' 'N' 및 'O'는 각각 '10', '20', '30', '40', '50', '60', '70' 및 '80'에 대응될 수 있다.Also, each of the eight leaf nodes may correspond to a different specific value. For example, leaf nodes'H','I','J','K','L''M''N' and'O' are respectively '10', '20', '30', ' It may correspond to 40', '50', '60', '70' and '80'.

한편, 도 2에 도시된 예에서는 각 노드에 할당된 노드 식별 정보가 알파벳인 것으로 예시하고 있으나, 노드 식별 정보는 이진 트리 내에서 특정 노드를 식별할 수만 있다면 반드시 특정한 형태로 한정되는 것은 아니다. On the other hand, in the example shown in FIG. 2, the node identification information assigned to each node is illustrated as an alphabet, but the node identification information is not necessarily limited to a specific form as long as a specific node can be identified in a binary tree.

또한, 이진 트리의 깊이와 이진 트리 내 각 리프 노드에 대응되는 값은 실시예에 따라 다양하게 변형될 수 있다.In addition, the depth of the binary tree and the values corresponding to each leaf node in the binary tree may be variously modified according to embodiments.

다시 도 1을 참조하면, 본 발명의 일 실시예에서, 셋업 알고리즘은 키 생성 장치(110)에 의해 수행될 수 있다. 이 경우, 키 생성 장치(110)는 셋업 알고리즘을 수행하여 생성한 각 사용자의 사용자 암호키 EKi를 각 사용자의 클라이언트 장치(120-1, 120-2, 120-n)로 제공할 수 있다. Referring back to FIG. 1, in one embodiment of the present invention, the setup algorithm may be performed by the key generation device 110. In this case, the key generating device 110 may provide the user encryption key EK i of each user generated by performing the setup algorithm to the client devices 120-1, 120-2, and 120-n of each user.

또한, 키 생성 장치(110)는 마스터 비밀키 MK는 안전하게 저장하고, 공개 파라미터

Figure 112019090036619-pat00030
를 공개할 수 있다. 이때,
Figure 112019090036619-pat00031
는 임의의 문자 열을
Figure 112019090036619-pat00032
로 맵핑시키는 해시 함수(hash function)(즉,
Figure 112019090036619-pat00033
)를 나타낸다. 또한, BT는 암호화 시스템(100) 내에서 이용할 이진 트리에 대한 정보(예를 들어, 이진 트리의 깊이, 각 리프 노드에 대응되는 값, 이진 트리 내 각 노드에 할당된 노드 식별 정보 등)를 나타낸다.In addition, the key generating device 110 securely stores the master secret key MK, and public parameters
Figure 112019090036619-pat00030
Can be released. At this time,
Figure 112019090036619-pat00031
Is a random string
Figure 112019090036619-pat00032
Hash function to map to (i.e.
Figure 112019090036619-pat00033
). In addition, BT represents information about a binary tree to be used in the encryption system 100 (eg, the depth of the binary tree, a value corresponding to each leaf node, node identification information assigned to each node in the binary tree, etc.). .

암호화 알고리즘Encryption algorithm

암호화 알고리즘은 사용자 암호키, 공개 파라미터, 암호화할 데이터에 대한 라벨(Label) 및 이진 트리 내에서 루트 노드로부터 암호화할 데이터에 대응되는 리프 노드까지의 경로 상에 있는 노드들을 포함하는 노드 집합에 기초하여 암호화할 데이터에 대한 암호문을 생성할 수 있다.The encryption algorithm is based on a set of nodes including a user encryption key, public parameters, a label for the data to be encrypted, and nodes in the path from the root node to the leaf node corresponding to the data to be encrypted in the binary tree. You can create a cipher text for the data to be encrypted.

이때, 암호화할 데이터에 대한 라벨은 암호화 시스템(100) 내에서 기 설정되거나 암호화 시스템(100) 내의 사용자들 사이에 사전 합의된 방식에 따라 암호화할 데이터에 부여되는 정보로서 예를 들어, 암호화할 데이터에 대한 분류 정보, 암호화할 데이터와 관련된 시점에 관한 정보 등일 수 있으나, 반드시 특정한 정보로 한정되는 것은 아니다. At this time, the label for the data to be encrypted is information that is set in the encryption system 100 or is given to data to be encrypted according to a method previously agreed between users in the encryption system 100, for example, data to be encrypted. It may be classified information, information about the time point associated with the data to be encrypted, but is not necessarily limited to specific information.

구체적인 예로, 암호화할 데이터가 특정인의 홍체 데이터, 지문 데이터, 유전자 데이터 등과 같은 생체 데이터의 특정 속성에 대한 값인 경우, 데이터에 대한 라벨은 해당 특정 속성을 나타내는 정보일 수 있다. 다른 예로, 암호화할 데이터가 특정 학급의 1학기 성적 데이터 및 2학기 성적 데이터 중 1학기 성적 데이터인 경우, 해당 데이터에 대한 라벨은 1학기 성적 데이터임을 나타내는 정보일 수 있다.As a specific example, when the data to be encrypted is a value for a specific attribute of biological data such as iris data, fingerprint data, genetic data, etc. of a specific person, the label for the data may be information indicating the specific attribute. As another example, when the data to be encrypted is the first semester grade data of the first semester grade data and the second semester grade data of a specific class, the label for the data may be information indicating that the first semester grade data.

한편, 일 실시예에 따르면, 암호화 알고리즘은 아래와 같은 절차를 통해 수행될 수 있다.Meanwhile, according to an embodiment, the encryption algorithm may be performed through the following procedure.

1. 노드 집합 생성1. Create a node set

우선, 암호화 알고리즘은 이진 트리 내에서 루트 노드로부터 암호화할 데이터

Figure 112019090036619-pat00034
에 대응되는 리프 노드까지의 경로 상에 있는 노드들을 포함하는 노드 집합
Figure 112019090036619-pat00035
을 생성한다.First, the encryption algorithm is the data to be encrypted from the root node in the binary tree.
Figure 112019090036619-pat00034
Node set including nodes on the path to the leaf node corresponding to
Figure 112019090036619-pat00035
Produces

예를 들어, 도 2에 도시된 이진 트리에서,

Figure 112019090036619-pat00036
에 대응되는 리프 노드가 'I'인 경우, 암호화 알고리즘은 이진 트리 내에서 루트 노드 'A'로부터 리프 노드 'I'까지의 경로 상에 있는 노드들, 즉, 'A', 'B', 'D' 및 'I'를 포함하는 노드 집합을 생성할 수 있다.For example, in the binary tree shown in FIG. 2,
Figure 112019090036619-pat00036
If the leaf node corresponding to is'I', the encryption algorithm is the nodes on the path from the root node'A' to the leaf node'I' in the binary tree, that is,'A','B', ' A node set including D'and'I' may be generated.

2. 의사 난수 생성2. Pseudo random number generation

노드 집합을 생성한 이후 암호화 알고리즘은 노드 집합에 포함된 각 노드

Figure 112019090036619-pat00037
의 식별 정보에 대한 의사 난수(pseudo-random number)를 생성할 있다. After creating the node set, the encryption algorithm is used for each node in the node set.
Figure 112019090036619-pat00037
Pseudo-random number for identification information of.

이때, 암호화 알고리즘은 아래의 수학식 1을 이용하여 노드

Figure 112019090036619-pat00038
의 식별 정보에 대한 의사 난수
Figure 112019090036619-pat00039
를 생성할 수 있다.At this time, the encryption algorithm is a node using Equation 1 below.
Figure 112019090036619-pat00038
Pseudo-random number for identification information
Figure 112019090036619-pat00039
Can generate

[수학식 1][Equation 1]

Figure 112019090036619-pat00040
Figure 112019090036619-pat00040

수학식 1에서, PRF()는 의사 랜덤 함수(pseudo-random function)를 나타낸다. 또한,

Figure 112019090036619-pat00041
는 노드 집합
Figure 112019090036619-pat00042
에 포함된 노드들 중 j (이때, j는
Figure 112019090036619-pat00043
인 정수)번째 노드를 나타내며,
Figure 112019090036619-pat00044
Figure 112019090036619-pat00045
에 할당된 노드 식별 정보를 나타낸다.In Equation 1, PRF() denotes a pseudo-random function. In addition,
Figure 112019090036619-pat00041
Is a set of nodes
Figure 112019090036619-pat00042
Among the nodes included in j (where j is
Figure 112019090036619-pat00043
Integer) represents the node,
Figure 112019090036619-pat00044
The
Figure 112019090036619-pat00045
Node identification information assigned to.

3. 암호문 생성3. Generating cipher text

이후, 암호화 알고리즘은 암호화할 데이터

Figure 112019090036619-pat00046
의 라벨 T에 대한 해시 값 H(T), 노드 집합
Figure 112019090036619-pat00047
에 포함된 각 노드의 이진 트리 내 깊이
Figure 112019090036619-pat00048
, 의사 난수
Figure 112019090036619-pat00049
및 사용자 i의 사용자 암호키 EKi에 기초하여
Figure 112019090036619-pat00050
에 대한 암호문을 생성할 수 있다.Then, the encryption algorithm
Figure 112019090036619-pat00046
Hash value for label T of H(T), set of nodes
Figure 112019090036619-pat00047
The depth in the binary tree of each node included in
Figure 112019090036619-pat00048
, Pseudo-random number
Figure 112019090036619-pat00049
And based on the user encryption key EK i of user i
Figure 112019090036619-pat00050
You can generate a cipher text for.

구체적으로, 암호화 알고리즘은 아래의 수학식 2를 이용하여 데이터

Figure 112019090036619-pat00051
에 대한 암호문
Figure 112019090036619-pat00052
를 생성할 수 있다.Specifically, the encryption algorithm is data using Equation 2 below.
Figure 112019090036619-pat00051
Ciphertext for
Figure 112019090036619-pat00052
Can generate

[수학식 2][Equation 2]

Figure 112019090036619-pat00053
Figure 112019090036619-pat00053

한편, 본 발명의 일 실시예에서, 암호화 알고리즘은 키 생성 장치(110)로부터 사용자 암호키를 발급받은 각 클라이언트 장치(120-1, 120-2, 120-n)에 의해 수행될 수 있다.Meanwhile, in one embodiment of the present invention, the encryption algorithm may be performed by each of the client devices 120-1, 120-2, and 120-n, which are issued a user encryption key from the key generating device 110.

이 경우, 각 클라이언트 장치(120-1, 120-2, 120-n)는 암호화 알고리즘을 수행하여 생성한 암호문

Figure 112019090036619-pat00054
를 데이터베이스(130)에 저장할 수 있다. 이때, 각 클라이언트 장치(120-1, 120-2, 120-n)는 암호문
Figure 112019090036619-pat00055
에 의해 암호화된 데이터
Figure 112019090036619-pat00056
의 라벨 T 및 사용자의 인덱스 정보 i를 암호문
Figure 112019090036619-pat00057
와 함께 데이터베이스(130)에 저장할 수 있다.In this case, each client device (120-1, 120-2, 120-n) is a ciphertext generated by performing an encryption algorithm
Figure 112019090036619-pat00054
Can be stored in the database 130. At this time, each client device (120-1, 120-2, 120-n) is encrypted text
Figure 112019090036619-pat00055
Data encrypted by
Figure 112019090036619-pat00056
The label T and the index information of the user i ciphertext
Figure 112019090036619-pat00057
With it can be stored in the database 130.

토큰(Token) 생성 알고리즘Token generation algorithm

토큰 생성 알고리즘은 질의 벡터 집합

Figure 112019090036619-pat00058
에 대한 토큰을 생성할 수 있다. Token generation algorithm is a set of query vectors
Figure 112019090036619-pat00058
Can generate tokens for

이때, 질의 벡터 집합은 암호화 알고리즘을 이용하여 각 클라이언트 장치(120-1, 120-2, 120-n)에 의해 생성된 암호문

Figure 112019090036619-pat00059
각각에 의해 암호화된 데이터
Figure 112019090036619-pat00060
에 대한 범위 질의 벡터
Figure 112019090036619-pat00061
를 포함할 수 있다. 이때,
Figure 112019090036619-pat00062
Figure 112019090036619-pat00063
는 각각
Figure 112019090036619-pat00064
의 값이 포함되어야 할 범위의 하한 값과 상한 값을 나타낸다. At this time, the query vector set is a ciphertext generated by each client device (120-1, 120-2, 120-n) using an encryption algorithm
Figure 112019090036619-pat00059
Data encrypted by each
Figure 112019090036619-pat00060
Vector of range query for
Figure 112019090036619-pat00061
It may include. At this time,
Figure 112019090036619-pat00062
And
Figure 112019090036619-pat00063
Each
Figure 112019090036619-pat00064
Indicates the lower and upper limits of the range in which the values of

한편, 실시예에 따라, 범위 질의 벡터는 하한 값과 상한 값 중 하나만을 포함하거나 와일드 카드 값을 가질 수 있다. 이때, 특정 데이터에 대한 범위 질의 벡터가 와일드 카드 값을 가진다는 것은 해당 특정 데이터의 값이 어떠한 값을 가지더라도 무관함을 나타낸다.Meanwhile, according to an embodiment, the range query vector may include only one of the lower limit value and the upper limit value, or may have a wildcard value. At this time, that the range query vector for a specific data has a wild card value indicates that it does not matter what the value of the specific data has.

한편, 일 실시예에 따르면, 토큰 생성 알고리즘은 아래와 같은 절차를 통해 수행될 수 있다.Meanwhile, according to an embodiment, the token generation algorithm may be performed through the following procedure.

1. 커버 노드 집합 생성 1. Create a cover node set

토큰 생성 알고리즘은 모든

Figure 112019090036619-pat00065
에 대해, 이진 트리 내에 포함된 노드들 중 범위 질의 벡터
Figure 112019090036619-pat00066
에 대한 하나 이상의 커버 노드를 포함하는 커버 노드 집합
Figure 112019090036619-pat00067
(이때, m은 커버 노드 집합에 포함된 커버 노드의 개수)을 생성한다.All token generation algorithms
Figure 112019090036619-pat00065
For, range query vector among nodes included in binary tree
Figure 112019090036619-pat00066
A set of cover nodes comprising one or more cover nodes for
Figure 112019090036619-pat00067
(At this time, m is the number of cover nodes included in the set of cover nodes).

이때, 커버 노드는 이진 트리에서 범위 질의 벡터

Figure 112019090036619-pat00068
에 의한 값의 범위에 포함되지 않는 각 리프 노드와 이진 트리의 루트 노드 사이의 경로 상에 존재하는 모든 노드를 제거하여 생성된 각 서브 트리의 루트 노드를 의미할 수 있다.At this time, the cover node is a range query vector in the binary tree.
Figure 112019090036619-pat00068
It may mean the root node of each sub-tree created by removing all nodes existing on the path between each leaf node not included in the range of values by and the root node of the binary tree.

예를 들어, 도 2에 도시된 이진 트리에서 범위 질의 벡터

Figure 112019090036619-pat00069
의 값의 범위에 포함되는 리프 노드가 'J', 'K', 'L' 및 'M'인 것으로 가정하면, 'J', 'K', 'L' 및 'M'를 제외한 나머지 리프 노드 (즉, 'H', 'I', 'N' 및 'O') 각각과 루트 노드 'A' 사이의 경로 상에 존재하는 모든 노드를 제거하여 생성되는 서브 트리는 도 3과 같다.For example, the range query vector in the binary tree shown in FIG. 2
Figure 112019090036619-pat00069
Assuming that the leaf nodes included in the range of values are'J','K','L'and'M', the remaining leaf nodes except'J','K','L'and'M'(Ie,'H','I','N',and'O') The subtree generated by removing all nodes existing on the path between each and the root node'A' is shown in FIG. 3.

따라서, 이 경우, 커버 노드 집합은 도 3에 도시된 2개의 서브 트리 각각의 루트 노드인 'E' 및 'F'를 포함할 수 있다.Accordingly, in this case, the set of cover nodes may include'E' and'F', which are root nodes of each of the two sub trees shown in FIG. 3.

2. 의사 난수 생성2. Pseudo random number generation

토큰 생성 알고리즘은 커버 노드 집합에 포함된 각 노드

Figure 112019090036619-pat00070
의 식별 정보에 대한 의사 난수를 생성할 있다. The token generation algorithm includes each node included in the set of cover nodes.
Figure 112019090036619-pat00070
Can generate pseudo-random numbers for identification information.

이때, 토큰 생성 알고리즘은 상술한 수학식 1을 이용하여 커버 노드 집합에 포함된 각 노드의 식별 정보에 대한 의사 난수

Figure 112019090036619-pat00071
를 생성할 수 있다.At this time, the token generation algorithm uses the above-described Equation 1 to generate pseudo-random numbers for identification information of each node included in the set of cover nodes.
Figure 112019090036619-pat00071
Can generate

3. 토큰 생성3. Token Generation

토큰 생성 알고리즘은 커버 노드 집합

Figure 112019090036619-pat00072
에 포함된 각 노드의 이진 트리 내 깊이
Figure 112019090036619-pat00073
, 커버 노드 집합
Figure 112019090036619-pat00074
에 포함된 각 노드의 식별 정보에 대한 의사 난수
Figure 112019090036619-pat00075
및 마스터 비밀키 MK를 이용하여 질의 벡터 집합에 포함된 각 범위 질의 벡터
Figure 112019090036619-pat00076
에 대한 부분 토큰
Figure 112019090036619-pat00077
을 생성할 수 있다.Token generation algorithm is a set of cover nodes
Figure 112019090036619-pat00072
The depth in the binary tree of each node included in
Figure 112019090036619-pat00073
, Cover node set
Figure 112019090036619-pat00074
Pseudo-random number for each node's identification information
Figure 112019090036619-pat00075
And each range query vector included in the query vector set using the master secret key MK
Figure 112019090036619-pat00076
Partial token for
Figure 112019090036619-pat00077
Can generate

구체적으로, 토큰 생성 알고리즘은 아래의 수학식 3을 이용하여 부분 토큰

Figure 112019090036619-pat00078
를 생성할 수 있다.Specifically, the token generation algorithm is a partial token using Equation 3 below.
Figure 112019090036619-pat00078
Can generate

[수학식 3][Equation 3]

Figure 112019090036619-pat00079
Figure 112019090036619-pat00079

이때,

Figure 112019090036619-pat00080
Figure 112019090036619-pat00081
Figure 112019090036619-pat00082
을 만족하는 임의의 정수,
Figure 112019090036619-pat00083
,
Figure 112019090036619-pat00084
Figure 112019090036619-pat00085
는 각각
Figure 112019090036619-pat00086
를 만족하는 임의의 정수, m은 커버 노드 집합에 포함된 노드의 개수를 나타낸다.At this time,
Figure 112019090036619-pat00080
The
Figure 112019090036619-pat00081
And
Figure 112019090036619-pat00082
Any integer that satisfies,
Figure 112019090036619-pat00083
,
Figure 112019090036619-pat00084
And
Figure 112019090036619-pat00085
Each
Figure 112019090036619-pat00086
Any integer that satisfies, m represents the number of nodes included in the set of cover nodes.

이후 토큰 생성 알고리즘은 질의 벡터 집합 Y에 포함된 각 범위 질의 벡터에 대한 부분 토큰을 포함하는 질의 벡터 집합 Y에 대한 토큰

Figure 112019090036619-pat00087
을 생성할 수 있다.Thereafter, the token generation algorithm is a token for a query vector set Y that includes a partial token for each range query vector included in the query vector set Y.
Figure 112019090036619-pat00087
Can generate

한편, 본 발명의 일 실시예에서, 토큰 생성 알고리즘은 키 생성 장치(110)에 의해 수행될 수 있다.Meanwhile, in one embodiment of the present invention, the token generation algorithm may be performed by the key generation device 110.

이 경우, 키 생성 장치(110)는 질의 장치(140)로부터 질의 벡터 집합 Y에 대한 토큰 생성 요청이 있는 경우, 토큰 생성 알고리즘을 수행하여 질의 벡터 집합 Y에 대한 토큰 TKY를 생성할 수 있다. 또한, 키 생성 장치(110)는 생성된 토큰 TKY를 질의 장치(140)로 제공할 수 있다.In this case, the key generation device 110 may generate a token TK Y for the query vector set Y by performing a token generation algorithm when a request is generated for the query vector set Y from the query device 140. In addition, the key generation device 110 may provide the generated token TK Y to the query device 140.

쿼리(query) 알고리즘Query algorithm

쿼리 알고리즘은 라벨 T가 동일한 데이터들을 포함하는 데이터 집합

Figure 112019090036619-pat00088
에 포함된 각 데이터
Figure 112019090036619-pat00089
에 대한 암호문
Figure 112019090036619-pat00090
을 포함하는 암호문 집합
Figure 112019090036619-pat00091
, 라벨 T 및 질의 벡터 집합
Figure 112019090036619-pat00092
에 대한 토큰 TKY를 이용하여, 질의 벡터 집합 Y와 데이터 집합 X사이의 매칭 여부를 판단할 수 있다. 이때, 질의 벡터 집합 Y와 데이터 집합 X가 매칭된다는 것은 데이터 집합 X에 포함된 각 데이터
Figure 112019090036619-pat00093
가 질의 벡터 집합 Y에 포함된 범위 질의 벡터 중 대응되는 범위 질의 벡터
Figure 112019090036619-pat00094
에 따른 범위 내에 속함(즉, 모든 i에 대해
Figure 112019090036619-pat00095
을 만족)을 의미할 수 있다. The query algorithm is a data set that contains data with the same label T
Figure 112019090036619-pat00088
Data included in
Figure 112019090036619-pat00089
Ciphertext for
Figure 112019090036619-pat00090
Ciphertext set containing
Figure 112019090036619-pat00091
Set of labels, labels T and quality
Figure 112019090036619-pat00092
By using the token TK Y for, it is possible to determine whether a match between the query vector set Y and the data set X is made. At this time, the query vector set Y and the data set X match each data included in the data set X.
Figure 112019090036619-pat00093
Of the range query vectors included in the vector set Y of the false query, the corresponding range query vector
Figure 112019090036619-pat00094
Within the range of (i.e. for all i
Figure 112019090036619-pat00095
Can satisfy).

한편, 쿼리 알고리즘은 암호문 집합 CTT와 토큰 TKY를 이용하여 임의의 j에 대해 만들 수 있는 각 조합

Figure 112019090036619-pat00096
(이때,
Figure 112019090036619-pat00097
,
Figure 112019090036619-pat00098
)에 대해 아래의 수학식 4 및 5를 만족하는지 여부를 판단할 수 있다.On the other hand, the query algorithm can create each combination of arbitrary j using the ciphertext set CT T and token TK Y
Figure 112019090036619-pat00096
(At this time,
Figure 112019090036619-pat00097
,
Figure 112019090036619-pat00098
), it may be determined whether the following equations 4 and 5 are satisfied.

[수학식 4][Equation 4]

Figure 112019090036619-pat00099
Figure 112019090036619-pat00099

[수학식 5][Equation 5]

Figure 112019090036619-pat00100
Figure 112019090036619-pat00100

이때, 수학식 4 및 5를 만족하는 조합이 존재하는 경우, 쿼리 알고리즘은 질의 벡터 집합 Y와 데이터 집합 X가 매칭되는 것으로 판단할 수 있다. 반면, 수학식 4 및 5를 만족하는 조합이 존재하지 않는 경우, 쿼리 알고리즘은 질의 벡터 집합 Y와 데이터 집합 X가 매칭되지 않는 것으로 판단할 수 있다At this time, when a combination satisfying Equations 4 and 5 exists, the query algorithm may determine that the query vector set Y and the data set X match. On the other hand, if there is no combination satisfying Equations 4 and 5, the query algorithm may determine that the query vector set Y and the data set X do not match.

한편, 본 발명의 일 실시예에서, 쿼리 알고리즘은 질의 장치(140)에 의해 수행될 수 있다.Meanwhile, in one embodiment of the present invention, the query algorithm may be performed by the querying device 140.

이 경우, 질의 장치(110)는 쿼리 알고리즘을 수행하여 질의 벡터 집합 Y와 데이터 집합 X가 매칭되는 것으로 판단된 경우, 1을 출력하고, 매칭되지 않는 것으로 판단된 경우, 0을 출력할 수 있다.In this case, the query device 110 may perform a query algorithm and output 1 when it is determined that the query vector set Y and the data set X match, and output 0 when it is determined that the query vector is not matched.

도 4는 본 발명의 일 실시예에 따른 암호화 과정을 설명하기 위한 순서도이다. 4 is a flowchart illustrating an encryption process according to an embodiment of the present invention.

도 4에 도시된 순서도에서는 설명의 편의를 위해 암호화 시스템(100) 내에 각각 상이한 사용자에 의해 이용되는 3개의 클라이언트 장치(120-1, 120-2, 120-3)가 있는 것으로 가정하나, 사용자 및 클라이언트 장치의 개수가 반드시 도시된 예에 한정되는 것은 아니다.In the flowchart shown in FIG. 4, it is assumed that there are three client devices 120-1, 120-2, and 120-3 used by different users in the encryption system 100 for convenience of explanation, but the user and The number of client devices is not necessarily limited to the illustrated example.

도 4를 참조하면, 우선, 키 생성 장치(110)는 셋업 알고리즘을 수행하여, 각 사용자의 사용자 암호키

Figure 112019090036619-pat00101
, 마스터 비밀키
Figure 112019090036619-pat00102
및 공개 파라미터
Figure 112019090036619-pat00103
를 생성한다(401). Referring to FIG. 4, first, the key generation device 110 performs a setup algorithm, so that each user's user encryption key
Figure 112019090036619-pat00101
, Master secret key
Figure 112019090036619-pat00102
And public parameters
Figure 112019090036619-pat00103
Create (401).

이후, 키 생성 장치(110)는 사용자 1의 사용자 암호키 EK1을 사용자 1에 의해 이용되는 클라이언트 장치 1(120-1)로 제공한다(402). Thereafter, the key generating device 110 provides the user encryption key EK 1 of the user 1 to the client device 1 120-1 used by the user 1 (402).

또한, 키 생성 장치(110)는 사용자 2의 사용자 암호키 EK2을 사용자 2에 의해 이용되는 클라이언트 장치 2(120-2)로 제공한다(403).In addition, the key generating device 110 provides the user encryption key EK 2 of the user 2 to the client device 2 120-2 used by the user 2 (403).

또한, 키 생성 장치(110)는 사용자 3의 사용자 암호키 EK3을 사용자 3에 의해 이용되는 클라이언트 장치 3(120-3)로 제공한다(404).In addition, the key generating device 110 provides the user encryption key EK 3 of the user 3 to the client device 3 (120-3) used by the user 3 (404).

한편, 키 생성 장치(110)로부터 사용자 암호키 EK1를 획득한 클라이언트 장치 1(120-1)은 암호화 알고리즘을 수행하여 라벨이 T인 데이터

Figure 112019090036619-pat00104
에 대한 암호문
Figure 112019090036619-pat00105
을 생성한다(405).On the other hand, the client device 1 (120-1) that obtains the user encryption key EK 1 from the key generation device 110 performs an encryption algorithm to label data of T
Figure 112019090036619-pat00104
Ciphertext for
Figure 112019090036619-pat00105
Produces (405).

이후, 클라이언트 장치 1(120-1)은 생성한 암호문

Figure 112019090036619-pat00106
을 데이터베이스(130)에 저장한다(406).Thereafter, the client device 1 (120-1) generates the encrypted text
Figure 112019090036619-pat00106
Is stored in the database 130 (406).

또한, 키 생성 장치(110)로부터 사용자 암호키 EK2를 획득한 클라이언트 장치 2(120-2)는 암호화 알고리즘을 수행하여 라벨이 T인 데이터

Figure 112019090036619-pat00107
에 대한 암호문
Figure 112019090036619-pat00108
을 생성한다(407).In addition, the client device 2 (120-2) that obtains the user encryption key EK 2 from the key generation device 110 performs an encryption algorithm to label data of T
Figure 112019090036619-pat00107
Ciphertext for
Figure 112019090036619-pat00108
Produces (407).

이후, 클라이언트 장치 2(120-2)는 생성한 암호문

Figure 112019090036619-pat00109
을 데이터베이스(130)에 저장한다(408).Thereafter, the client device 2 (120-2) generates the encrypted text
Figure 112019090036619-pat00109
Is stored in the database 130 (408).

또한, 키 생성 장치(110)로부터 사용자 암호키 EK3를 획득한 클라이언트 장치 3(120-3)은 암호화 알고리즘을 수행하여 라벨이 T인 데이터

Figure 112019090036619-pat00110
에 대한 암호문
Figure 112019090036619-pat00111
을 생성한다(409).In addition, the client device 3 (120-3), which has obtained the user encryption key EK 3 from the key generation device 110, performs an encryption algorithm to perform data with a label T.
Figure 112019090036619-pat00110
Ciphertext for
Figure 112019090036619-pat00111
Create (409).

이후, 클라이언트 장치 3(120-3)는 생성한 암호문

Figure 112019090036619-pat00112
을 데이터베이스(130)에 저장한다(410).Thereafter, the client device 3 (120-3) generates the encrypted text
Figure 112019090036619-pat00112
Is stored in the database 130 (410).

도 5는 본 발명의 일 실시예에 따른 질의 벡터 집합과 데이터 집합 사이의 매칭 여부를 판단하는 과정을 설명하기 위한 순서도이다.5 is a flowchart for explaining a process of determining whether to match between a query vector set and a data set according to an embodiment of the present invention.

도 5에 도시된 과정은 도 4에 도시된 암호화 과정 이후에 수행될 수 있다.The process illustrated in FIG. 5 may be performed after the encryption process illustrated in FIG. 4.

도 5를 참조하면, 우선, 질의 장치(140)는 데이터 집합

Figure 112019090036619-pat00113
에 대한 질의 벡터 집합
Figure 112019090036619-pat00114
를 생성한다(501).Referring to Figure 5, first, the query device 140 is a data set
Figure 112019090036619-pat00113
Vector set of queries for
Figure 112019090036619-pat00114
Create (501).

이후, 질의 장치(140)는 키 생성 장치(110)로 질의 벡터 집합 Y에 대한 토큰 생성을 요청한다(502).Thereafter, the query device 140 requests the key generation device 110 to generate a token for the query vector set Y (502).

이후, 키 생성 장치(110)는 토큰 생성 알고리즘을 수행하여 질의 벡터 집합 Y에 대한 토큰

Figure 112019090036619-pat00115
을 생성한다(503).Thereafter, the key generation device 110 performs a token generation algorithm to generate a token for the query vector set Y.
Figure 112019090036619-pat00115
Create (503).

이후, 키 생성 장치(110)는 생성한 토큰 TKY를 질의 장치(140)로 제공한다(504).Thereafter, the key generating device 110 provides the generated token TK Y to the query device 140 (504).

이후, 질의 장치(140)는 쿼리 알고리즘을 수행하여 데이터베이스(130)에 저장된 암호문

Figure 112019090036619-pat00116
,
Figure 112019090036619-pat00117
Figure 112019090036619-pat00118
를 포함하는 암호문 집합
Figure 112019090036619-pat00119
과 토큰 TKY를 이용하여 질의 벡터 집합 Y와 데이터 집합 X 사이의 매칭 여부를 판단한다(505).Thereafter, the query device 140 performs a query algorithm to encrypt the ciphertext stored in the database 130
Figure 112019090036619-pat00116
,
Figure 112019090036619-pat00117
And
Figure 112019090036619-pat00118
Ciphertext set containing
Figure 112019090036619-pat00119
It is determined whether the match between the query vector set Y and the data set X is made by using and TK Y (505).

한편, 도 4 및 도 5에 도시된 순서도에서는 상기 과정을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.Meanwhile, in the flowcharts illustrated in FIGS. 4 and 5, the above process is divided into a plurality of steps, but at least some of the steps are performed by changing the order, combined with other steps, or omitted, or as detailed steps. It may be performed separately, or may be performed by adding one or more steps not shown.

도 6은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.6 is a block diagram illustrating and illustrating a computing environment including a computing device suitable for use in example embodiments. In the illustrated embodiment, each component may have different functions and capabilities in addition to those described below, and may include additional components in addition to those described below.

도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 암호화 시스템(100)에 포함되는 하나 이상의 컴포넌트일 수 있다.The illustrated computing environment 10 includes a computing device 12. In one embodiment, computing device 12 may be one or more components included in encryption system 100.

컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.The computing device 12 includes at least one processor 14, a computer readable storage medium 16 and a communication bus 18. The processor 14 can cause the computing device 12 to operate in accordance with the exemplary embodiment mentioned above. For example, processor 14 may execute one or more programs stored on computer readable storage medium 16. The one or more programs may include one or more computer-executable instructions, which, when executed by the processor 14, configure the computing device 12 to perform operations according to an exemplary embodiment. Can be.

컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.Computer readable storage medium 16 is configured to store computer executable instructions or program code, program data and/or other suitable types of information. The program 20 stored on the computer readable storage medium 16 includes a set of instructions executable by the processor 14. In one embodiment, the computer readable storage medium 16 is a memory (volatile memory such as random access memory, non-volatile memory, or a suitable combination thereof), one or more magnetic disk storage devices, optical disk storage devices, flash Memory devices, other types of storage media that can be accessed by the computing device 12 and store desired information, or suitable combinations thereof.

통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.The communication bus 18 interconnects various other components of the computing device 12, including a processor 14 and a computer readable storage medium 16.

컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.Computing device 12 may also include one or more I/O interfaces 22 and one or more network communication interfaces 26 that provide an interface for one or more I/O devices 24. The input/output interface 22 and the network communication interface 26 are connected to the communication bus 18. The input/output device 24 may be connected to other components of the computing device 12 through the input/output interface 22. Exemplary input/output devices 24 include pointing devices (such as a mouse or trackpad), keyboards, touch input devices (such as touch pads or touch screens), voice or sound input devices, various types of sensor devices, and/or imaging devices. Input devices and/or output devices such as display devices, printers, speakers, and/or network cards. The exemplary input/output device 24 is a component constituting the computing device 12 and may be included inside the computing device 12 or may be connected to the computing device 12 as a separate device distinct from the computing device 12. It might be.

이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Although the present invention has been described in detail through exemplary embodiments above, those skilled in the art to which the present invention pertains are capable of various modifications within the limits of the embodiments described above without departing from the scope of the present invention. Will understand. Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined not only by the claims to be described later, but also by the claims and equivalents.

10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스
100: 암호화 시스템
110: 키 생성 장치
120-1, 120-2, 120-3, 120-n: 클라이언트 장치
130: 데이터베이스
140: 질의 장치
10: computing environment
12: computing device
14: processor
16: computer readable storage media
18: Communication bus
20: Program
22: I/O interface
24: I/O device
26: network communication interface
100: encryption system
110: key generation device
120-1, 120-2, 120-3, 120-n: client device
130: database
140: query device

Claims (28)

하나 이상의 프로세서들, 및
상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서,
키 생성 장치로부터 사용자 암호키를 획득하는 단계;
기 설정된 이진 트리 내에서 루트 노드로부터 암호화할 데이터에 대응되는 리프 노드까지의 경로 상에 있는 복수의 노드를 포함하는 노드 집합을 생성하는 단계;
상기 사용자 암호키, 상기 암호화할 데이터에 대한 라벨(label) 및 상기 노드 집합에 기초하여 상기 암호화할 데이터에 대한 암호문을 생성하는 단계를 포함하고,
상기 암호문을 생성하는 단계는,
상기 라벨에 대한 해시 값을 생성하는 단계;
상기 복수의 노드 각각의 식별 정보에 대한 의사 난수(pseudo-random number)를 생성하는 단계; 및
상기 해시 값, 상기 의사 난수, 상기 복수의 노드 각각의 상기 이진 트리 내 깊이(depth) 및 상기 사용자 암호키에 기초하여 상기 암호문을 생성하는 단계를 포함하고,
상기 암호문은, 상기 복수의 노드 각각에 대한 의사 난수를 상기 해시 값의 지수로 이용하여 산출된 복수의 암호문 원소를 포함하는, 방법.
One or more processors, and
A method performed in a computing device having a memory that stores one or more programs executed by the one or more processors,
Obtaining a user encryption key from the key generating device;
Generating a node set including a plurality of nodes in a path from a root node to a leaf node corresponding to data to be encrypted in a preset binary tree;
Generating a ciphertext for the data to be encrypted based on the user encryption key, a label for the data to be encrypted, and the node set,
The step of generating the ciphertext,
Generating a hash value for the label;
Generating a pseudo-random number for identification information of each of the plurality of nodes; And
Generating the ciphertext based on the hash value, the pseudo-random number, the depth in the binary tree of each of the plurality of nodes, and the user encryption key,
The ciphertext includes a plurality of ciphertext elements calculated by using a pseudo-random number for each of the plurality of nodes as an index of the hash value.
삭제delete 삭제delete 청구항 1에 있어서,
상기 사용자 암호키는, 아래의 수학식 1
[수학식 1]
Figure 112020051707196-pat00120

(이때,
Figure 112020051707196-pat00121
는 사용자 인덱스,
Figure 112020051707196-pat00122
는 사용자 i에 대한 사용자 암호키,
Figure 112020051707196-pat00123
Figure 112020051707196-pat00124
의 원소,
Figure 112020051707196-pat00125
Figure 112020051707196-pat00126
는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
Figure 112020051707196-pat00127

(이때,
Figure 112020051707196-pat00128
는 상기 복수의 노드 중 j(이때, j는
Figure 112020051707196-pat00129
인 정수,
Figure 112020051707196-pat00130
은 상기 이진 트리의 깊이) 번째 노드,
Figure 112020051707196-pat00131
Figure 112020051707196-pat00132
에 할당된 노드 식별 정보,
Figure 112020051707196-pat00133
Figure 112020051707196-pat00134
에 대한 의사 난수)
를 이용하여 상기 복수의 노드 각각에 대한 의사 난수를 생성하는, 방법.
The method according to claim 1,
The user encryption key, the following equation 1
[Equation 1]
Figure 112020051707196-pat00120

(At this time,
Figure 112020051707196-pat00121
User index,
Figure 112020051707196-pat00122
Is the user encryption key for user i,
Figure 112020051707196-pat00123
The
Figure 112020051707196-pat00124
Element of,
Figure 112020051707196-pat00125
And
Figure 112020051707196-pat00126
Is an arbitrary integer, p is a prime number
Satisfied,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
Figure 112020051707196-pat00127

(At this time,
Figure 112020051707196-pat00128
Is j among the plurality of nodes (where j is
Figure 112020051707196-pat00129
Phosphorus Integer,
Figure 112020051707196-pat00130
Is the depth of the binary tree) th node,
Figure 112020051707196-pat00131
The
Figure 112020051707196-pat00132
Node identification information assigned to,
Figure 112020051707196-pat00133
The
Figure 112020051707196-pat00134
Pseudo-random number for)
Method for generating a pseudo-random number for each of the plurality of nodes.
청구항 4에 있어서,
상기 암호문을 생성하는 단계는, 아래의 수학식 3
[수학식 3]
Figure 112019090036619-pat00135

(이때,
Figure 112019090036619-pat00136
는 상기 암호문,
Figure 112019090036619-pat00137
는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨,
Figure 112019090036619-pat00138
는 상기 해시 값)
을 이용하여 상기 암호문을 생성하는, 방법.
The method according to claim 4,
The step of generating the ciphertext is Equation 3 below.
[Equation 3]
Figure 112019090036619-pat00135

(At this time,
Figure 112019090036619-pat00136
Is the ciphertext,
Figure 112019090036619-pat00137
Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label,
Figure 112019090036619-pat00138
Is the hash value above)
Method for generating the ciphertext using.
하나 이상의 프로세서들, 및
상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서,
복수의 사용자 각각에 대한 사용자 암호키 및 마스터 비밀키를 생성하는 단계;
상기 생성된 사용자 암호키를 상기 복수의 사용자 각각의 클라이언트 장치로 제공하는 단계;
질의 장치로부터 복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 수신하는 단계;
기 설정된 이진 트리, 상기 질의 벡터 집합 및 상기 마스터 비밀키를 이용하여 상기 질의 벡터 집합에 대한 토큰을 생성하는 단계; 및
상기 생성된 토큰을 상기 질의 장치로 제공하는 단계를 포함하는, 방법.
One or more processors, and
A method performed in a computing device having a memory that stores one or more programs executed by the one or more processors,
Generating a user encryption key and a master secret key for each of the plurality of users;
Providing the generated user encryption key to the client devices of each of the plurality of users;
Receiving a query vector set including a plurality of range query vectors from the query device;
Generating a token for the query vector set using a preset binary tree, the query vector set, and the master secret key; And
And providing the generated token to the querying device.
청구항 6에 있어서,
상기 토큰을 생성하는 단계는,
상기 이진 트리로부터 상기 복수의 범위 질의 벡터 각각에 대한 커버 노드 집합을 생성하는 단계;
상기 커버 노드 집합 각각에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수(pseudo-random number)를 생성하는 단계; 및
상기 하나 이상의 노드 각각의 상기 이진 트리 내 깊이(depth), 상기 의사 난수 및 상기 마스터 비밀키를 이용하여 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 생성하는 단계를 포함하고,
상기 질의 벡터 집합에 대한 토큰은 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 포함하는, 방법.
The method according to claim 6,
The step of generating the token,
Generating a set of cover nodes for each of the plurality of range query vectors from the binary tree;
Generating a pseudo-random number for identification information of each of the one or more nodes included in each of the cover node sets; And
Generating a partial token for each of the plurality of range query vectors using the depth in the binary tree of each of the one or more nodes, the pseudo-random number, and the master secret key,
The token for the set of query vectors includes a partial token for each of the plurality of range query vectors.
청구항 7에 있어서,
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
Figure 112019090036619-pat00139

(이때,
Figure 112019090036619-pat00140
는 사용자 인덱스,
Figure 112019090036619-pat00141
는 사용자 i에 대한 사용자 암호키,
Figure 112019090036619-pat00142
Figure 112019090036619-pat00143
의 원소,
Figure 112019090036619-pat00144
Figure 112019090036619-pat00145
는 각각 임의의 정수, p는 소수(prime number))을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
Figure 112019090036619-pat00146

(이때,
Figure 112019090036619-pat00147
는 상기 하나 이상의 노드 중 j(이때, j는
Figure 112019090036619-pat00148
인 정수,
Figure 112019090036619-pat00149
은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드,
Figure 112019090036619-pat00150
Figure 112019090036619-pat00151
에 할당된 노드 식별 정보,
Figure 112019090036619-pat00152
Figure 112019090036619-pat00153
에 대한 의사 난수)
를 이용하여 상기 의사 난수를 생성하는, 방법.
The method according to claim 7,
The user encryption key is the following equation 1
[Equation 1]
Figure 112019090036619-pat00139

(At this time,
Figure 112019090036619-pat00140
User index,
Figure 112019090036619-pat00141
Is the user encryption key for user i,
Figure 112019090036619-pat00142
The
Figure 112019090036619-pat00143
Element of,
Figure 112019090036619-pat00144
And
Figure 112019090036619-pat00145
Each satisfy an arbitrary integer, p is a prime number,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
Figure 112019090036619-pat00146

(At this time,
Figure 112019090036619-pat00147
Is j among the one or more nodes (where j is
Figure 112019090036619-pat00148
Phosphorus Integer,
Figure 112019090036619-pat00149
Is the number of nodes included in the set of cover nodes) th node,
Figure 112019090036619-pat00150
The
Figure 112019090036619-pat00151
Node identification information assigned to,
Figure 112019090036619-pat00152
The
Figure 112019090036619-pat00153
Pseudo-random number for)
Method for generating the pseudo-random number using the method.
청구항 8에 있어서,
상기 마스터 비밀키를 생성하는 단계는 아래의 수학식 3
[수학식 3]
Figure 112019090036619-pat00154

(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 총수,
Figure 112019090036619-pat00155
는 위수가 p인 순환군(cyclic group)
Figure 112019090036619-pat00156
의 원소)
을 이용하여 상기 마스터 비밀키를 생성하고,
상기 부분 토큰을 생성하는 단계는, 아래의 수학식 4
[수학식 4]
Figure 112019090036619-pat00157

(이때,
Figure 112019090036619-pat00158
는 범위 질의 벡터
Figure 112019090036619-pat00159
에 대한 부분 토큰,
Figure 112019090036619-pat00160
는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이,
Figure 112019090036619-pat00161
는 상기 순환군
Figure 112019090036619-pat00162
의 생성원,
Figure 112019090036619-pat00163
Figure 112019090036619-pat00164
Figure 112019090036619-pat00165
을 만족하는 임의의 정수,
Figure 112019090036619-pat00166
,
Figure 112019090036619-pat00167
Figure 112019090036619-pat00168
는 각각
Figure 112019090036619-pat00169
를 만족하는 임의의 정수)
를 이용하여 상기 부분 토큰을 생성하는, 방법.
The method according to claim 8,
The step of generating the master secret key is Equation 3 below.
[Equation 3]
Figure 112019090036619-pat00154

(At this time, MK is the master secret key, n is the total number of the plurality of users,
Figure 112019090036619-pat00155
Is a cyclic group with p
Figure 112019090036619-pat00156
Element of)
Generate the master secret key using,
The step of generating the partial token, Equation 4 below
[Equation 4]
Figure 112019090036619-pat00157

(At this time,
Figure 112019090036619-pat00158
Is a range query vector
Figure 112019090036619-pat00159
Partial tokens for,
Figure 112019090036619-pat00160
Is the depth in the binary tree of the j-th node among the one or more nodes,
Figure 112019090036619-pat00161
Is the circulating group
Figure 112019090036619-pat00162
The origin of,
Figure 112019090036619-pat00163
The
Figure 112019090036619-pat00164
And
Figure 112019090036619-pat00165
Any integer that satisfies,
Figure 112019090036619-pat00166
,
Figure 112019090036619-pat00167
And
Figure 112019090036619-pat00168
Each
Figure 112019090036619-pat00169
Any integer satisfying)
How to generate the partial token using the method.
하나 이상의 프로세서들, 및
상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서,
복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 생성하는 단계;
키 생성 장치로부터 상기 질의 벡터 집합에 대한 토큰을 획득하는 단계; 및
상이한 복수의 사용자의 사용자 암호키를 이용하여 암호화된 복수의 데이터 각각에 대한 암호문, 상기 복수의 데이터에 대한 라벨(label) 및 상기 토큰을 이용하여, 상기 복수의 데이터를 포함하는 데이터 집합과 상기 질의 벡터 집합 사이의 매칭 여부를 판단하는 단계를 포함하는, 방법.
One or more processors, and
A method performed in a computing device having a memory that stores one or more programs executed by the one or more processors,
Generating a query vector set including a plurality of range query vectors;
Obtaining a token for the set of query vectors from a key generator; And
A data set containing the plurality of data and the query vector using a ciphertext for each of the plurality of data encrypted using a user encryption key of different users, a label for the plurality of data, and the token. And determining whether to match between sets.
청구항 10에 있어서,
상기 복수의 데이터 각각에 대한 암호문은, 상기 라벨에 대한 해시 값, 상기 복수의 데이터 각각에 대하여 기 설정된 이진 트리로부터 생성된 노드 집합에 포함된 복수의 노드 각각의 식별 정보에 대한 의사 난수, 상기 복수의 노드 각각의 상기 이진 트리 내 깊이 및 상기 사용자 암호키에 기초하여 생성되고,
상기 토큰은, 상기 복수의 범위 질의 벡터 각각에 대하여 상기 이진 트리로부터 생성된 커버 노드 집합에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수, 상기 하나 이상의 노드 각각의 상기 이진 트리 내 깊이 및 마스터 비밀키에 기초하여 생성된 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 포함하는, 방법.
The method according to claim 10,
The ciphertext for each of the plurality of data includes a hash value for the label, a pseudo-random number for identification information of each of the plurality of nodes included in a node set generated from a binary tree set for each of the plurality of data, and the plurality of data. Is generated based on the depth in the binary tree of each of the nodes and the user encryption key,
The token is a pseudo-random number for each identification information of each of the one or more nodes included in the set of cover nodes generated from the binary tree for each of the plurality of range query vectors, the depth and the master in the binary tree of each of the one or more nodes. And a partial token for each of the plurality of range query vectors generated based on a secret key.
청구항 11에 있어서,
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
Figure 112019090036619-pat00170

(
Figure 112019090036619-pat00171
는 사용자 인덱스,
Figure 112019090036619-pat00172
는 사용자 i에 대한 사용자 암호키,
Figure 112019090036619-pat00173
Figure 112019090036619-pat00174
의 원소,
Figure 112019090036619-pat00175
Figure 112019090036619-pat00176
는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수는, 아래의 수학식 2
[수학식 2]
Figure 112019090036619-pat00177

(이때,
Figure 112019090036619-pat00178
는 상기 복수의 노드 중 j(이때, j는
Figure 112019090036619-pat00179
인 정수,
Figure 112019090036619-pat00180
은 상기 이진 트리의 깊이) 번째 노드 또는 상기 하나 이상의 노드 중 j(이때, j는
Figure 112019090036619-pat00181
인 정수,
Figure 112019090036619-pat00182
은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드,
Figure 112019090036619-pat00183
Figure 112019090036619-pat00184
에 할당된 노드 식별 정보,
Figure 112019090036619-pat00185
Figure 112019090036619-pat00186
에 대한 의사 난수)
를 이용하여 생성되는, 방법.
The method according to claim 11,
The user encryption key is the following equation 1
[Equation 1]
Figure 112019090036619-pat00170

(
Figure 112019090036619-pat00171
User index,
Figure 112019090036619-pat00172
Is the user encryption key for user i,
Figure 112019090036619-pat00173
The
Figure 112019090036619-pat00174
Element of,
Figure 112019090036619-pat00175
And
Figure 112019090036619-pat00176
Is an arbitrary integer, p is a prime number
Satisfied,
The pseudo-random number is Equation 2 below.
[Equation 2]
Figure 112019090036619-pat00177

(At this time,
Figure 112019090036619-pat00178
Is j among the plurality of nodes (where j is
Figure 112019090036619-pat00179
Phosphorus Integer,
Figure 112019090036619-pat00180
Is the depth of the binary tree), or j of the one or more nodes (where j is
Figure 112019090036619-pat00181
Phosphorus Integer,
Figure 112019090036619-pat00182
Is the number of nodes included in the set of cover nodes) th node,
Figure 112019090036619-pat00183
The
Figure 112019090036619-pat00184
Node identification information assigned to,
Figure 112019090036619-pat00185
The
Figure 112019090036619-pat00186
Pseudo-random number for)
Generated using the method.
청구항 12에 있어서,
상기 마스터 비밀키는 아래의 수학식 3
[수학식 3]
Figure 112019090036619-pat00187

(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 수,
Figure 112019090036619-pat00188
는 위수가 p인 순환군(cyclic group)
Figure 112019090036619-pat00189
의 원소)
을 만족하고,
상기 암호문은, 아래의 수학식 4
[수학식 4]
Figure 112019090036619-pat00190

(이때,
Figure 112019090036619-pat00191
는 상기 암호문,
Figure 112019090036619-pat00192
는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨,
Figure 112019090036619-pat00193
는 상기 해시 값)
를 만족하고,
상기 부분 토큰은, 아래의 수학식 5
[수학식 5]
Figure 112019090036619-pat00194

(이때,
Figure 112019090036619-pat00195
는 범위 질의 벡터
Figure 112019090036619-pat00196
에 대한 부분 토큰,
Figure 112019090036619-pat00197
는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이,
Figure 112019090036619-pat00198
는 상기 순환군
Figure 112019090036619-pat00199
의 생성원,
Figure 112019090036619-pat00200
Figure 112019090036619-pat00201
Figure 112019090036619-pat00202
을 만족하는 임의의 정수,
Figure 112019090036619-pat00203
,
Figure 112019090036619-pat00204
Figure 112019090036619-pat00205
는 각각
Figure 112019090036619-pat00206
를 만족하는 임의의 정수)
를 만족하는, 방법.
The method according to claim 12,
The master secret key is Equation 3 below.
[Equation 3]
Figure 112019090036619-pat00187

(At this time, MK is the master secret key, n is the number of the plurality of users,
Figure 112019090036619-pat00188
Is a cyclic group with p
Figure 112019090036619-pat00189
Element of)
Satisfied,
The ciphertext is the following Equation 4
[Equation 4]
Figure 112019090036619-pat00190

(At this time,
Figure 112019090036619-pat00191
Is the ciphertext,
Figure 112019090036619-pat00192
Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label,
Figure 112019090036619-pat00193
Is the hash value above)
Satisfied,
The partial token, Equation 5 below
[Equation 5]
Figure 112019090036619-pat00194

(At this time,
Figure 112019090036619-pat00195
Is a range query vector
Figure 112019090036619-pat00196
Partial tokens for,
Figure 112019090036619-pat00197
Is the depth in the binary tree of the j-th node among the one or more nodes,
Figure 112019090036619-pat00198
Is the circulating group
Figure 112019090036619-pat00199
The origin of,
Figure 112019090036619-pat00200
The
Figure 112019090036619-pat00201
And
Figure 112019090036619-pat00202
Any integer that satisfies,
Figure 112019090036619-pat00203
,
Figure 112019090036619-pat00204
And
Figure 112019090036619-pat00205
Each
Figure 112019090036619-pat00206
Any integer satisfying)
How to satisfy, how.
청구항 13에 있어서,
상기 판단하는 단계는, 상기 복수의 데이터 각각에 대한 암호문을 포함하는 암호문 집합과 상기 질의 벡터 집합에 대한 토큰을 이용하여 임의의 j에 대해 만들 수 있는 각 조합
Figure 112019090036619-pat00207
(이때,
Figure 112019090036619-pat00208
,
Figure 112019090036619-pat00209
)에 대해 아래의 수학식 6 및 7을 만족하는지 여부를 판단하고,
[수학식 6]
Figure 112019090036619-pat00210

[수학식 7]
Figure 112019090036619-pat00211

(이때, e는
Figure 112019090036619-pat00212
를 만족하는 겹선형 함수(bilinear map),
Figure 112019090036619-pat00213
,
Figure 112019090036619-pat00214
Figure 112019090036619-pat00215
는 위수(order)가 소수 p인 순환군(cyclic group))
상기 수학식 6 및 7을 만족하는 조합이 존재하는 경우, 상기 질의 벡터 집합과 상기 데이터 집합이 매칭되는 것으로 판단하는, 방법.
The method according to claim 13,
In the determining, each combination that can be made for any j using a set of ciphertexts including ciphertexts for each of the plurality of data and a token for the query vector set
Figure 112019090036619-pat00207
(At this time,
Figure 112019090036619-pat00208
,
Figure 112019090036619-pat00209
), it is determined whether or not the following equations 6 and 7 are satisfied,
[Equation 6]
Figure 112019090036619-pat00210

[Equation 7]
Figure 112019090036619-pat00211

(At this time, e is
Figure 112019090036619-pat00212
Bilinear map, which satisfies
Figure 112019090036619-pat00213
,
Figure 112019090036619-pat00214
And
Figure 112019090036619-pat00215
Is a cyclic group with a prime p
When there is a combination that satisfies Equations 6 and 7, it is determined that the query vector set and the data set match.
하나 이상의 프로세서;
메모리; 및
하나 이상의 프로그램을 포함하는 장치로서,
상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며,
상기 프로그램은,
키 생성 장치로부터 사용자 암호키를 획득하는 단계;
기 설정된 이진 트리 내에서 루트 노드로부터 암호화할 데이터에 대응되는 리프 노드까지의 경로 상에 있는 복수의 노드를 포함하는 노드 집합을 생성하는 단계; 및
상기 사용자 암호키, 상기 암호화할 데이터에 대한 라벨(label) 및 상기 노드 집합에 기초하여 상기 암호화할 데이터에 대한 암호문을 생성하는 단계를 실행하기 위한 명령어들을 포함하고,
상기 암호문을 생성하는 단계는,
상기 라벨에 대한 해시 값을 생성하는 단계;
상기 복수의 노드 각각의 식별 정보에 대한 의사 난수(pseudo-random number)를 생성하는 단계; 및
상기 해시 값, 상기 의사 난수, 상기 복수의 노드 각각의 상기 이진 트리 내 깊이(depth) 및 상기 사용자 암호키에 기초하여 상기 암호문을 생성하는 단계를 포함하고,
상기 암호문은, 상기 복수의 노드 각각에 대한 의사 난수를 상기 해시 값의 지수로 이용하여 산출된 복수의 암호문 원소를 포함하는, 장치.
One or more processors;
Memory; And
A device comprising one or more programs,
The one or more programs are stored in the memory and configured to be executed by the one or more processors,
The above program,
Obtaining a user encryption key from the key generating device;
Generating a node set including a plurality of nodes in a path from a root node to a leaf node corresponding to data to be encrypted in a preset binary tree; And
And instructions for executing the step of generating a ciphertext for the data to be encrypted based on the user encryption key, the label for the data to be encrypted, and the node set,
The step of generating the ciphertext,
Generating a hash value for the label;
Generating a pseudo-random number for identification information of each of the plurality of nodes; And
Generating the ciphertext based on the hash value, the pseudo-random number, the depth in the binary tree of each of the plurality of nodes, and the user encryption key,
The ciphertext includes a plurality of ciphertext elements calculated by using a pseudo-random number for each of the plurality of nodes as an index of the hash value.
삭제delete 삭제delete 청구항 15에 있어서,
상기 사용자 암호키는, 아래의 수학식 1
[수학식 1]
Figure 112020051707196-pat00216

(이때,
Figure 112020051707196-pat00217
는 사용자 인덱스,
Figure 112020051707196-pat00218
는 사용자 i에 대한 사용자 암호키,
Figure 112020051707196-pat00219
Figure 112020051707196-pat00220
의 원소,
Figure 112020051707196-pat00221
Figure 112020051707196-pat00222
는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
Figure 112020051707196-pat00223

(이때,
Figure 112020051707196-pat00224
는 상기 복수의 노드 중 j(이때, j는
Figure 112020051707196-pat00225
인 정수,
Figure 112020051707196-pat00226
은 상기 이진 트리의 깊이) 번째 노드,
Figure 112020051707196-pat00227
Figure 112020051707196-pat00228
에 할당된 노드 식별 정보,
Figure 112020051707196-pat00229
Figure 112020051707196-pat00230
에 대한 의사 난수)
를 이용하여 상기 복수의 노드 각각에 대한 의사 난수를 생성하는, 장치.
The method according to claim 15,
The user encryption key, the following equation 1
[Equation 1]
Figure 112020051707196-pat00216

(At this time,
Figure 112020051707196-pat00217
User index,
Figure 112020051707196-pat00218
Is the user encryption key for user i,
Figure 112020051707196-pat00219
The
Figure 112020051707196-pat00220
Element of,
Figure 112020051707196-pat00221
And
Figure 112020051707196-pat00222
Is an arbitrary integer, p is a prime number
Satisfied,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
Figure 112020051707196-pat00223

(At this time,
Figure 112020051707196-pat00224
Is j among the plurality of nodes (where j is
Figure 112020051707196-pat00225
Phosphorus Integer,
Figure 112020051707196-pat00226
Is the depth of the binary tree) th node,
Figure 112020051707196-pat00227
The
Figure 112020051707196-pat00228
Node identification information assigned to,
Figure 112020051707196-pat00229
The
Figure 112020051707196-pat00230
Pseudo-random number for)
Device for generating a pseudo-random number for each of the plurality of nodes using the.
청구항 18에 있어서,
상기 암호문을 생성하는 단계는, 아래의 수학식 3
[수학식 3]
Figure 112019090036619-pat00231

(이때,
Figure 112019090036619-pat00232
는 상기 암호문,
Figure 112019090036619-pat00233
는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨,
Figure 112019090036619-pat00234
는 상기 해시 값)
을 이용하여 상기 암호문을 생성하는, 장치.
The method according to claim 18,
The step of generating the ciphertext is Equation 3 below.
[Equation 3]
Figure 112019090036619-pat00231

(At this time,
Figure 112019090036619-pat00232
Is the ciphertext,
Figure 112019090036619-pat00233
Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label,
Figure 112019090036619-pat00234
Is the hash value above)
Device for generating the ciphertext using.
하나 이상의 프로세서;
메모리; 및
하나 이상의 프로그램을 포함하는 장치로서,
상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며,
상기 프로그램은,
복수의 사용자 각각에 대한 사용자 암호키 및 마스터 비밀키를 생성하는 단계;
상기 생성된 사용자 암호키를 상기 복수의 사용자 각각의 클라이언트 장치로 제공하는 단계;
질의 장치로부터 복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 수신하는 단계;
기 설정된 이진 트리, 상기 질의 벡터 집합 및 상기 마스터 비밀키를 이용하여 상기 질의 벡터 집합에 대한 토큰을 생성하는 단계; 및
상기 생성된 토큰을 상기 질의 장치로 제공하는 단계를 실행하기 위한 명령어들을 포함하는, 장치.
One or more processors;
Memory; And
A device comprising one or more programs,
The one or more programs are stored in the memory and configured to be executed by the one or more processors,
The above program,
Generating a user encryption key and a master secret key for each of the plurality of users;
Providing the generated user encryption key to the client devices of each of the plurality of users;
Receiving a query vector set including a plurality of range query vectors from the query device;
Generating a token for the query vector set using a preset binary tree, the query vector set, and the master secret key; And
And instructions for executing the step of providing the generated token to the querying device.
청구항 20에 있어서,
상기 토큰을 생성하는 단계는,
상기 이진 트리로부터 상기 복수의 범위 질의 벡터 각각에 대한 커버 노드 집합을 생성하는 단계;
상기 커버 노드 집합 각각에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수(pseudo-random number)를 생성하는 단계; 및
상기 하나 이상의 노드 각각의 상기 이진 트리 내 깊이(depth), 상기 의사 난수 및 상기 마스터 비밀키를 이용하여 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 생성하는 단계를 포함하고,
상기 질의 벡터 집합에 대한 토큰은 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 포함하는, 장치.
The method according to claim 20,
The step of generating the token,
Generating a set of cover nodes for each of the plurality of range query vectors from the binary tree;
Generating a pseudo-random number for identification information of each of the one or more nodes included in each of the cover node sets; And
Generating a partial token for each of the plurality of range query vectors using the depth in the binary tree of each of the one or more nodes, the pseudo-random number, and the master secret key,
And the token for the set of query vectors includes a partial token for each of the plurality of range query vectors.
청구항 21에 있어서,
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
Figure 112019090036619-pat00235

(이때,
Figure 112019090036619-pat00236
는 사용자 인덱스,
Figure 112019090036619-pat00237
는 사용자 i에 대한 사용자 암호키,
Figure 112019090036619-pat00238
Figure 112019090036619-pat00239
의 원소,
Figure 112019090036619-pat00240
Figure 112019090036619-pat00241
는 각각 임의의 정수, p는 소수(prime number))을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
Figure 112019090036619-pat00242

(이때,
Figure 112019090036619-pat00243
는 상기 하나 이상의 노드 중 j(이때, j는
Figure 112019090036619-pat00244
인 정수,
Figure 112019090036619-pat00245
은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드,
Figure 112019090036619-pat00246
Figure 112019090036619-pat00247
에 할당된 노드 식별 정보,
Figure 112019090036619-pat00248
Figure 112019090036619-pat00249
에 대한 의사 난수)
를 이용하여 상기 의사 난수를 생성하는, 장치.
The method of claim 21,
The user encryption key is the following equation 1
[Equation 1]
Figure 112019090036619-pat00235

(At this time,
Figure 112019090036619-pat00236
User index,
Figure 112019090036619-pat00237
Is the user encryption key for user i,
Figure 112019090036619-pat00238
The
Figure 112019090036619-pat00239
Element of,
Figure 112019090036619-pat00240
And
Figure 112019090036619-pat00241
Each satisfy an arbitrary integer, p is a prime number,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
Figure 112019090036619-pat00242

(At this time,
Figure 112019090036619-pat00243
Is j among the one or more nodes (where j is
Figure 112019090036619-pat00244
Phosphorus Integer,
Figure 112019090036619-pat00245
Is the number of nodes included in the set of cover nodes) th node,
Figure 112019090036619-pat00246
The
Figure 112019090036619-pat00247
Node identification information assigned to,
Figure 112019090036619-pat00248
The
Figure 112019090036619-pat00249
Pseudo-random number for)
Using the device, to generate the pseudo-random number.
청구항 22에 있어서,
상기 마스터 비밀키를 생성하는 단계는 아래의 수학식 3
[수학식 3]
Figure 112019090036619-pat00250

(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 총수,
Figure 112019090036619-pat00251
는 위수가 p인 순환군(cyclic group)
Figure 112019090036619-pat00252
의 원소)
을 이용하여 상기 마스터 비밀키를 생성하고,
상기 부분 토큰을 생성하는 단계는, 아래의 수학식 4
[수학식 4]
Figure 112019090036619-pat00253

(이때,
Figure 112019090036619-pat00254
는 범위 질의 벡터
Figure 112019090036619-pat00255
에 대한 부분 토큰,
Figure 112019090036619-pat00256
는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이,
Figure 112019090036619-pat00257
는 상기 순환군
Figure 112019090036619-pat00258
의 생성원,
Figure 112019090036619-pat00259
Figure 112019090036619-pat00260
Figure 112019090036619-pat00261
을 만족하는 임의의 정수,
Figure 112019090036619-pat00262
,
Figure 112019090036619-pat00263
Figure 112019090036619-pat00264
는 각각
Figure 112019090036619-pat00265
를 만족하는 임의의 정수)
를 이용하여 상기 부분 토큰을 생성하는, 장치.
The method according to claim 22,
The step of generating the master secret key is Equation 3 below.
[Equation 3]
Figure 112019090036619-pat00250

(At this time, MK is the master secret key, n is the total number of the plurality of users,
Figure 112019090036619-pat00251
Is a cyclic group with p
Figure 112019090036619-pat00252
Element of)
Generate the master secret key using,
The step of generating the partial token, Equation 4 below
[Equation 4]
Figure 112019090036619-pat00253

(At this time,
Figure 112019090036619-pat00254
Is a range query vector
Figure 112019090036619-pat00255
Partial tokens for,
Figure 112019090036619-pat00256
Is the depth in the binary tree of the j-th node among the one or more nodes,
Figure 112019090036619-pat00257
Is the circulating group
Figure 112019090036619-pat00258
The origin of,
Figure 112019090036619-pat00259
The
Figure 112019090036619-pat00260
And
Figure 112019090036619-pat00261
Any integer that satisfies,
Figure 112019090036619-pat00262
,
Figure 112019090036619-pat00263
And
Figure 112019090036619-pat00264
Each
Figure 112019090036619-pat00265
Any integer satisfying)
Device for generating the partial token using.
하나 이상의 프로세서;
메모리; 및
하나 이상의 프로그램을 포함하는 장치로서,
상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며,
상기 프로그램은,
복수의 범위 질의 벡터를 포함하는 질의 벡터 집합을 생성하는 단계;
키 생성 장치로부터 상기 질의 벡터 집합에 대한 토큰을 획득하는 단계; 및
상이한 사용자 암호키를 이용하여 암호화된 복수의 데이터 각각에 대한 암호문, 상기 복수의 데이터에 대한 라벨(label) 및 상기 토큰을 이용하여, 상기 복수의 데이터를 포함하는 데이터 집합과 상기 질의 벡터 집합 사이의 매칭 여부를 판단하는 단계를 실행하기 위한 명령어들을 포함하는, 장치.
One or more processors;
Memory; And
A device comprising one or more programs,
The one or more programs are stored in the memory and configured to be executed by the one or more processors,
The above program,
Generating a query vector set including a plurality of range query vectors;
Obtaining a token for the set of query vectors from a key generator; And
Matching between the data set containing the plurality of data and the set of query vectors using the ciphertext for each of the plurality of data encrypted using different user encryption keys, the label for the plurality of data, and the token. And instructions for executing a step of determining whether or not.
청구항 24에 있어서,
상기 복수의 데이터 각각에 대한 암호문은, 상기 라벨에 대한 해시 값, 상기 복수의 데이터 각각에 대하여 기 설정된 이진 트리로부터 생성된 노드 집합에 포함된 복수의 노드 각각의 식별 정보에 대한 의사 난수, 상기 복수의 노드 각각의 상기 이진 트리 내 깊이 및 상기 사용자 암호키에 기초하여 생성되고,
상기 토큰은, 상기 복수의 범위 질의 벡터 각각에 대하여 상기 이진 트리로부터 생성된 커버 노드 집합에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수, 상기 하나 이상의 노드 각각의 상기 이진 트리 내 깊이 및 마스터 비밀키에 기초하여 생성된 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 포함하는, 장치.
The method according to claim 24,
The ciphertext for each of the plurality of data includes a hash value for the label, a pseudo-random number for identification information of each of the plurality of nodes included in a node set generated from a binary tree set for each of the plurality of data, and the plurality of data. Is generated based on the depth in the binary tree of each of the nodes and the user encryption key,
The token is a pseudo-random number for each identification information of each of the one or more nodes included in the set of cover nodes generated from the binary tree for each of the plurality of range query vectors, the depth and the master in the binary tree of each of the one or more nodes. And a partial token for each of the plurality of range query vectors generated based on a secret key.
청구항 25에 있어서,
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
Figure 112019090036619-pat00266

(
Figure 112019090036619-pat00267
는 사용자 인덱스,
Figure 112019090036619-pat00268
는 사용자 i에 대한 사용자 암호키,
Figure 112019090036619-pat00269
Figure 112019090036619-pat00270
의 원소,
Figure 112019090036619-pat00271
Figure 112019090036619-pat00272
는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수는, 아래의 수학식 2
[수학식 2]
Figure 112019090036619-pat00273

(이때,
Figure 112019090036619-pat00274
는 상기 복수의 노드 중 j(이때, j는
Figure 112019090036619-pat00275
인 정수,
Figure 112019090036619-pat00276
은 상기 이진 트리의 깊이) 번째 노드 또는 상기 하나 이상의 노드 중 j(이때, j는
Figure 112019090036619-pat00277
인 정수,
Figure 112019090036619-pat00278
은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드,
Figure 112019090036619-pat00279
Figure 112019090036619-pat00280
에 할당된 노드 식별 정보,
Figure 112019090036619-pat00281
Figure 112019090036619-pat00282
에 대한 의사 난수)
를 이용하여 생성되는, 장치.
The method according to claim 25,
The user encryption key is the following equation 1
[Equation 1]
Figure 112019090036619-pat00266

(
Figure 112019090036619-pat00267
User index,
Figure 112019090036619-pat00268
Is the user encryption key for user i,
Figure 112019090036619-pat00269
The
Figure 112019090036619-pat00270
Element of,
Figure 112019090036619-pat00271
And
Figure 112019090036619-pat00272
Is an arbitrary integer, p is a prime number
Satisfied,
The pseudo-random number is Equation 2 below.
[Equation 2]
Figure 112019090036619-pat00273

(At this time,
Figure 112019090036619-pat00274
Is j among the plurality of nodes (where j is
Figure 112019090036619-pat00275
Phosphorus Integer,
Figure 112019090036619-pat00276
Is the depth of the binary tree), or j of the one or more nodes (where j is
Figure 112019090036619-pat00277
Phosphorus Integer,
Figure 112019090036619-pat00278
Is the number of nodes included in the set of cover nodes) th node,
Figure 112019090036619-pat00279
The
Figure 112019090036619-pat00280
Node identification information assigned to,
Figure 112019090036619-pat00281
The
Figure 112019090036619-pat00282
Pseudo-random number for)
Generated using a device.
청구항 26에 있어서,
상기 마스터 비밀키는 아래의 수학식 3
[수학식 3]
Figure 112019090036619-pat00283

(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 수,
Figure 112019090036619-pat00284
는 위수가 p인 순환군(cyclic group)
Figure 112019090036619-pat00285
의 원소)
을 만족하고,
상기 암호문은, 아래의 수학식 4
[수학식 4]
Figure 112019090036619-pat00286

(이때,
Figure 112019090036619-pat00287
는 상기 암호문,
Figure 112019090036619-pat00288
는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨,
Figure 112019090036619-pat00289
는 상기 해시 값)
를 만족하고,
상기 부분 토큰은, 아래의 수학식 5
[수학식 5]
Figure 112019090036619-pat00290

(이때,
Figure 112019090036619-pat00291
는 범위 질의 벡터
Figure 112019090036619-pat00292
에 대한 부분 토큰,
Figure 112019090036619-pat00293
는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이,
Figure 112019090036619-pat00294
는 상기 순환군
Figure 112019090036619-pat00295
의 생성원,
Figure 112019090036619-pat00296
Figure 112019090036619-pat00297
Figure 112019090036619-pat00298
을 만족하는 임의의 정수,
Figure 112019090036619-pat00299
,
Figure 112019090036619-pat00300
Figure 112019090036619-pat00301
는 각각
Figure 112019090036619-pat00302
를 만족하는 임의의 정수)
를 만족하는, 장치.
The method according to claim 26,
The master secret key is Equation 3 below.
[Equation 3]
Figure 112019090036619-pat00283

(At this time, MK is the master secret key, n is the number of the plurality of users,
Figure 112019090036619-pat00284
Is a cyclic group with p
Figure 112019090036619-pat00285
Element of)
Satisfied,
The ciphertext is the following Equation 4
[Equation 4]
Figure 112019090036619-pat00286

(At this time,
Figure 112019090036619-pat00287
Is the ciphertext,
Figure 112019090036619-pat00288
Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label,
Figure 112019090036619-pat00289
Is the hash value above)
Satisfied,
The partial token, Equation 5 below
[Equation 5]
Figure 112019090036619-pat00290

(At this time,
Figure 112019090036619-pat00291
Is a range query vector
Figure 112019090036619-pat00292
Partial tokens for,
Figure 112019090036619-pat00293
Is the depth in the binary tree of the j-th node among the one or more nodes,
Figure 112019090036619-pat00294
Is the circulating group
Figure 112019090036619-pat00295
The origin of,
Figure 112019090036619-pat00296
The
Figure 112019090036619-pat00297
And
Figure 112019090036619-pat00298
Any integer that satisfies,
Figure 112019090036619-pat00299
,
Figure 112019090036619-pat00300
And
Figure 112019090036619-pat00301
Each
Figure 112019090036619-pat00302
Any integer satisfying)
To satisfy, the device.
청구항 27에 있어서,
상기 판단하는 단계는, 상기 복수의 데이터 각각에 대한 암호문을 포함하는 암호문 집합과 상기 질의 벡터 집합에 대한 토큰을 이용하여 임의의 j에 대해 만들 수 있는 각 조합
Figure 112019090036619-pat00303
(이때,
Figure 112019090036619-pat00304
,
Figure 112019090036619-pat00305
)에 대해 아래의 수학식 6 및 7을 만족하는지 여부를 판단하고,
[수학식 6]
Figure 112019090036619-pat00306

[수학식 7]
Figure 112019090036619-pat00307

(이때, e는
Figure 112019090036619-pat00308
를 만족하는 겹선형 함수(bilinear map),
Figure 112019090036619-pat00309
,
Figure 112019090036619-pat00310
Figure 112019090036619-pat00311
는 위수(order)가 소수 p인 순환군(cyclic group))
상기 수학식 6 및 7을 만족하는 조합이 존재하는 경우, 상기 질의 벡터 집합과 상기 데이터 집합이 매칭되는 것으로 판단하는, 장치.
The method according to claim 27,
In the determining, each combination that can be made for any j using a set of ciphertexts including ciphertexts for each of the plurality of data and a token for the query vector set
Figure 112019090036619-pat00303
(At this time,
Figure 112019090036619-pat00304
,
Figure 112019090036619-pat00305
), it is determined whether or not the following equations 6 and 7 are satisfied,
[Equation 6]
Figure 112019090036619-pat00306

[Equation 7]
Figure 112019090036619-pat00307

(At this time, e is
Figure 112019090036619-pat00308
Bilinear map, which satisfies
Figure 112019090036619-pat00309
,
Figure 112019090036619-pat00310
And
Figure 112019090036619-pat00311
Is a cyclic group with a prime p
When there is a combination that satisfies Equations 6 and 7, it is determined that the query vector set and the data set match.
KR1020190108054A 2019-09-02 2019-09-02 Encryption method for supporting range query in multi-client environment and apparatus using the same KR102123440B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190108054A KR102123440B1 (en) 2019-09-02 2019-09-02 Encryption method for supporting range query in multi-client environment and apparatus using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190108054A KR102123440B1 (en) 2019-09-02 2019-09-02 Encryption method for supporting range query in multi-client environment and apparatus using the same

Publications (1)

Publication Number Publication Date
KR102123440B1 true KR102123440B1 (en) 2020-06-16

Family

ID=71141714

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190108054A KR102123440B1 (en) 2019-09-02 2019-09-02 Encryption method for supporting range query in multi-client environment and apparatus using the same

Country Status (1)

Country Link
KR (1) KR102123440B1 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130136555A (en) * 2011-03-25 2013-12-12 미쓰비시덴키 가부시키가이샤 Code processing system, key generation device, encoder, decoder, code processing method and code processing program
JP2014095847A (en) * 2012-11-12 2014-05-22 Nippon Telegr & Teleph Corp <Ntt> Functional encryption system, key generation device, encryption device, decryption device, functional encryption method, and program
JP2014219548A (en) * 2013-05-08 2014-11-20 国立大学法人島根大学 Cipher processing system
KR20150070383A (en) * 2012-10-19 2015-06-24 미쓰비시덴키 가부시키가이샤 Encryption system
JP2016517243A (en) * 2013-04-18 2016-06-09 リソフトデブ,インコーポレイテッド System and method for encrypting data
KR101695361B1 (en) 2015-09-21 2017-01-11 국방과학연구소 Terminology encryption method using paring calculation and secret key

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130136555A (en) * 2011-03-25 2013-12-12 미쓰비시덴키 가부시키가이샤 Code processing system, key generation device, encoder, decoder, code processing method and code processing program
KR20150070383A (en) * 2012-10-19 2015-06-24 미쓰비시덴키 가부시키가이샤 Encryption system
JP2014095847A (en) * 2012-11-12 2014-05-22 Nippon Telegr & Teleph Corp <Ntt> Functional encryption system, key generation device, encryption device, decryption device, functional encryption method, and program
JP2016517243A (en) * 2013-04-18 2016-06-09 リソフトデブ,インコーポレイテッド System and method for encrypting data
JP2014219548A (en) * 2013-05-08 2014-11-20 国立大学法人島根大学 Cipher processing system
KR101695361B1 (en) 2015-09-21 2017-01-11 국방과학연구소 Terminology encryption method using paring calculation and secret key

Similar Documents

Publication Publication Date Title
Liu et al. External integrity verification for outsourced big data in cloud and IoT: A big picture
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
US9111106B2 (en) Data processing apparatus and data storage apparatus
JP6180177B2 (en) Encrypted data inquiry method and system capable of protecting privacy
US10055602B2 (en) Securely processing range predicates on cloud databases
EP3168771A1 (en) Poly-logarythmic range queries on encrypted data
CN110710156A (en) Practical reusable fuzzy extractor based on learning hypothesis with errors and random prediction
CN108092766B (en) Ciphertext search authority verification method and system
US20170262546A1 (en) Key search token for encrypted data
CN109361644A (en) A kind of Fog property base encryption method for supporting fast search and decryption
JP2018005220A (en) Polynomial-based homomorphic encryption
CN108170753A (en) A kind of method of Key-Value data base encryptions and Safety query in shared cloud
JP5972181B2 (en) Tamper detection device, tamper detection method, and program
KR102123435B1 (en) Encryption method for supporting equality query in multi-client environment and apparatus using the same
KR102132685B1 (en) Apparatus and method for order-revealing encryption
JP2006189925A (en) Private information management system, private information management program, and private information protection method
KR102123440B1 (en) Encryption method for supporting range query in multi-client environment and apparatus using the same
Muhammad et al. A secure data outsourcing scheme based on Asmuth–Bloom secret sharing
KR102284877B1 (en) Efficient functional encryption for set intersection
Rajkumar et al. Fuzzy-Dedup: A secure deduplication model using cosine based Fuzzy interference system in cloud application
KR102281265B1 (en) Functional encryption for set intersection with time-constrained function keys
Sheikhalishahi et al. Privacy preserving hierarchical clustering over multi-party data distribution
KR102126295B1 (en) Method for comparing chiphertext based and apparatus for executing the method
JP7132506B2 (en) Confidential Information Retrieval System, Confidential Information Retrieval Program, and Confidential Information Retrieval Method
Salmani et al. Dynamic searchable symmetric encryption with full forward privacy

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant