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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/0822—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/083—Key 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/0833—Key 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/0836—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/3033—Public 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
Description
본 발명의 실시예들은 암호화 기술과 관련된다.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.
본 발명의 실시예들은 멀티 클라이언트 환경에서 범위 질의를 지원하는 암호화 방법 및 이를 이용한 장치를 제공하기 위한 것이다.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
키 생성 장치(110)는 암호화 시스템(100)에서 사용할 마스터 비밀키, 사용자 암호키 및 공개 파라미터를 생성하기 위한 장치로서 예를 들어, 신뢰 기관(Trusted Third Party)와 같이 신뢰할 수 있는 개체에 의해 운영될 수 있다.The
구체적으로, 키 생성 장치(110)는 암호화 시스템(100)에 참여한 복수의 사용자 각각에 대한 사용자 암호키를 생성하고, 생성된 각 사용자에 대한 사용자 암호키를 암호화를 위해 각 사용자에 의해 이용되는 클라이언트 장치(120-1, 120-2, 120-n)로 제공할 수 있다.Specifically, the
또한, 키 생성 장치(110)는 마스터 비밀키 및 공개 파라미터를 생성하여 마스터 비밀키는 안전하게 저장하고, 공개 파라미터는 암호화 시스템(100) 내에 공개할 수 있다.In addition, the
한편, 키 생성 장치(110)는 질의 장치(140)의 요청에 따라 질의 벡터 집합에 대한 토큰을 생성하여 질의 장치(140)로 제공할 수 있다.Meanwhile, the
클라이언트 장치(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
데이터베이스(130)는 각 클라이언트 장치(120-1, 120-2, 120-n)에 의해 생성된 암호문을 저장하기 위한 것으로, 각 클라이언트 장치(120-1, 120-2, 120-n) 및 질의 장치(140)에 의해 접근 가능한 하나 이상의 서버 또는 클라우드(cloud) 환경 내에 구현될 수 있다.
질의 장치(140)는 키 생성 장치(110)로부터 제공받은 질의 벡터 집합에 대한 토큰과 각 클라이언트 장치(120-1, 120-2, 120-n)에 의해 생성되어 데이터베이스(130)에 저장된 복수의 암호문을 이용하여, 복수의 암호문 각각에 의해 암호화된 데이터를 포함하는 데이터 집합과 질의 벡터 집합 사이의 매칭 여부를 판단한다. The
한편, 도 1에 도시된 암호화 시스템(100)에서 수행되는 암호화 기법은 다음과 같은 4개의 알고리즘으로 구성될 수 있다.Meanwhile, the encryption technique performed in the
셋업(setup) 알고리즘Setup algorithm
셋업 알고리즘은 보안 상수(Security Parameter) 1λ 및 암호화 시스템(100)에 참여할 사용자의 총수(n)을 입력받아 각각 위수(order)가 소수(prime number) p인 순환군(cyclic group) , 및 를 생성할 수 있다.The setup algorithm receives security parameters 1 λ and the total number (n) of users to participate in the
또한, 셋업 알고리즘은 를 만족하는 겹선형 함수(bilinear map) , 를 만족하는 의 생성원(generator) 및 를 만족하는 의 생성원 를 생성할 수 있다. Also, the setup algorithm Bilinear map that satisfies , Satisfying Generator And Satisfying Origin of Can generate
이후, 셋업 알고리즘은 모든 i(이때, i는 사용자 인덱스로서 인 정수)에 대해 를 만족하는 , 임의의 정수 및 를 선택하여 각 사용자에 대한 사용자 암호키 를 생성할 수 있다.After that, the setup algorithm is set to all i (where i is the user index Phosphorus constants) Satisfying , Any integer And Select the user encryption key for each user Can generate
또한, 셋업 알고리즘은 를 만족하는 를 선택하고, 마스터 비밀키 를 생성할 수 있다.Also, the setup algorithm Satisfying Select and Master Secret Key Can generate
또한, 셋업 알고리즘은 임의의 문자 열을 로 맵핑시키는 해시 함수(hash function) (즉, ) 및 깊이(depth)가 (이때, 은 인 정수)인 이진 트리(binary tree) BT를 생성할 수 있다.In addition, the setup algorithm can generate arbitrary strings. Hash function to map to (In other words, ) And depth (At this time, silver Can generate a binary tree BT.
이때, 이진 트리는 이진 트리 내 깊이가 1인 하나의 루트 노드 및 개의 상이한 값들 각각에 대응되며 이진 트리 내 깊이가 인 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 Corresponding to each of the different values and the depth in the binary tree 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(즉, )인 이진 트리로서, 깊이가 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, ) 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
또한, 키 생성 장치(110)는 마스터 비밀키 MK는 안전하게 저장하고, 공개 파라미터 를 공개할 수 있다. 이때, 는 임의의 문자 열을 로 맵핑시키는 해시 함수(hash function)(즉, )를 나타낸다. 또한, BT는 암호화 시스템(100) 내에서 이용할 이진 트리에 대한 정보(예를 들어, 이진 트리의 깊이, 각 리프 노드에 대응되는 값, 이진 트리 내 각 노드에 할당된 노드 식별 정보 등)를 나타낸다.In addition, the
암호화 알고리즘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
구체적인 예로, 암호화할 데이터가 특정인의 홍체 데이터, 지문 데이터, 유전자 데이터 등과 같은 생체 데이터의 특정 속성에 대한 값인 경우, 데이터에 대한 라벨은 해당 특정 속성을 나타내는 정보일 수 있다. 다른 예로, 암호화할 데이터가 특정 학급의 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
우선, 암호화 알고리즘은 이진 트리 내에서 루트 노드로부터 암호화할 데이터 에 대응되는 리프 노드까지의 경로 상에 있는 노드들을 포함하는 노드 집합 을 생성한다.First, the encryption algorithm is the data to be encrypted from the root node in the binary tree. Node set including nodes on the path to the leaf node corresponding to Produces
예를 들어, 도 2에 도시된 이진 트리에서, 에 대응되는 리프 노드가 'I'인 경우, 암호화 알고리즘은 이진 트리 내에서 루트 노드 'A'로부터 리프 노드 'I'까지의 경로 상에 있는 노드들, 즉, 'A', 'B', 'D' 및 'I'를 포함하는 노드 집합을 생성할 수 있다.For example, in the binary tree shown in FIG. 2, 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
노드 집합을 생성한 이후 암호화 알고리즘은 노드 집합에 포함된 각 노드 의 식별 정보에 대한 의사 난수(pseudo-random number)를 생성할 있다. After creating the node set, the encryption algorithm is used for each node in the node set. Pseudo-random number for identification information of.
이때, 암호화 알고리즘은 아래의 수학식 1을 이용하여 노드 의 식별 정보에 대한 의사 난수 를 생성할 수 있다.At this time, the encryption algorithm is a node using Equation 1 below. Pseudo-random number for identification information Can generate
[수학식 1][Equation 1]
수학식 1에서, PRF()는 의사 랜덤 함수(pseudo-random function)를 나타낸다. 또한, 는 노드 집합 에 포함된 노드들 중 j (이때, j는 인 정수)번째 노드를 나타내며, 는 에 할당된 노드 식별 정보를 나타낸다.In Equation 1, PRF() denotes a pseudo-random function. In addition, Is a set of nodes Among the nodes included in j (where j is Integer) represents the node, The Node identification information assigned to.
3. 암호문 생성3. Generating cipher text
이후, 암호화 알고리즘은 암호화할 데이터 의 라벨 T에 대한 해시 값 H(T), 노드 집합 에 포함된 각 노드의 이진 트리 내 깊이 , 의사 난수 및 사용자 i의 사용자 암호키 EKi에 기초하여 에 대한 암호문을 생성할 수 있다.Then, the encryption algorithm Hash value for label T of H(T), set of nodes The depth in the binary tree of each node included in , Pseudo-random number And based on the user encryption key EK i of user i You can generate a cipher text for.
구체적으로, 암호화 알고리즘은 아래의 수학식 2를 이용하여 데이터 에 대한 암호문 를 생성할 수 있다.Specifically, the encryption algorithm is
[수학식 2][Equation 2]
한편, 본 발명의 일 실시예에서, 암호화 알고리즘은 키 생성 장치(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
이 경우, 각 클라이언트 장치(120-1, 120-2, 120-n)는 암호화 알고리즘을 수행하여 생성한 암호문 를 데이터베이스(130)에 저장할 수 있다. 이때, 각 클라이언트 장치(120-1, 120-2, 120-n)는 암호문 에 의해 암호화된 데이터 의 라벨 T 및 사용자의 인덱스 정보 i를 암호문 와 함께 데이터베이스(130)에 저장할 수 있다.In this case, each client device (120-1, 120-2, 120-n) is a ciphertext generated by performing an encryption algorithm Can be stored in the
토큰(Token) 생성 알고리즘Token generation algorithm
토큰 생성 알고리즘은 질의 벡터 집합 에 대한 토큰을 생성할 수 있다. Token generation algorithm is a set of query vectors Can generate tokens for
이때, 질의 벡터 집합은 암호화 알고리즘을 이용하여 각 클라이언트 장치(120-1, 120-2, 120-n)에 의해 생성된 암호문 각각에 의해 암호화된 데이터 에 대한 범위 질의 벡터 를 포함할 수 있다. 이때, 및 는 각각 의 값이 포함되어야 할 범위의 하한 값과 상한 값을 나타낸다. 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 Data encrypted by each Vector of range query for It may include. At this time, And Each 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
토큰 생성 알고리즘은 모든 에 대해, 이진 트리 내에 포함된 노드들 중 범위 질의 벡터 에 대한 하나 이상의 커버 노드를 포함하는 커버 노드 집합 (이때, m은 커버 노드 집합에 포함된 커버 노드의 개수)을 생성한다.All token generation algorithms For, range query vector among nodes included in binary tree A set of cover nodes comprising one or more cover nodes for (At this time, m is the number of cover nodes included in the set of cover nodes).
이때, 커버 노드는 이진 트리에서 범위 질의 벡터 에 의한 값의 범위에 포함되지 않는 각 리프 노드와 이진 트리의 루트 노드 사이의 경로 상에 존재하는 모든 노드를 제거하여 생성된 각 서브 트리의 루트 노드를 의미할 수 있다.At this time, the cover node is a range query vector in the binary tree. 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에 도시된 이진 트리에서 범위 질의 벡터 의 값의 범위에 포함되는 리프 노드가 '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 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
토큰 생성 알고리즘은 커버 노드 집합에 포함된 각 노드 의 식별 정보에 대한 의사 난수를 생성할 있다. The token generation algorithm includes each node included in the set of cover nodes. Can generate pseudo-random numbers for identification information.
이때, 토큰 생성 알고리즘은 상술한 수학식 1을 이용하여 커버 노드 집합에 포함된 각 노드의 식별 정보에 대한 의사 난수 를 생성할 수 있다.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. Can generate
3. 토큰 생성3. Token Generation
토큰 생성 알고리즘은 커버 노드 집합 에 포함된 각 노드의 이진 트리 내 깊이 , 커버 노드 집합 에 포함된 각 노드의 식별 정보에 대한 의사 난수 및 마스터 비밀키 MK를 이용하여 질의 벡터 집합에 포함된 각 범위 질의 벡터 에 대한 부분 토큰 을 생성할 수 있다.Token generation algorithm is a set of cover nodes The depth in the binary tree of each node included in , Cover node set Pseudo-random number for each node's identification information And each range query vector included in the query vector set using the master secret key MK Partial token for Can generate
구체적으로, 토큰 생성 알고리즘은 아래의 수학식 3을 이용하여 부분 토큰 를 생성할 수 있다.Specifically, the token generation algorithm is a partial token using Equation 3 below. Can generate
[수학식 3][Equation 3]
이때, 는 및 을 만족하는 임의의 정수, , 및 는 각각 를 만족하는 임의의 정수, m은 커버 노드 집합에 포함된 노드의 개수를 나타낸다.At this time, The And Any integer that satisfies, , And Each Any integer that satisfies, m represents the number of nodes included in the set of cover nodes.
이후 토큰 생성 알고리즘은 질의 벡터 집합 Y에 포함된 각 범위 질의 벡터에 대한 부분 토큰을 포함하는 질의 벡터 집합 Y에 대한 토큰 을 생성할 수 있다.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. Can generate
한편, 본 발명의 일 실시예에서, 토큰 생성 알고리즘은 키 생성 장치(110)에 의해 수행될 수 있다.Meanwhile, in one embodiment of the present invention, the token generation algorithm may be performed by the
이 경우, 키 생성 장치(110)는 질의 장치(140)로부터 질의 벡터 집합 Y에 대한 토큰 생성 요청이 있는 경우, 토큰 생성 알고리즘을 수행하여 질의 벡터 집합 Y에 대한 토큰 TKY를 생성할 수 있다. 또한, 키 생성 장치(110)는 생성된 토큰 TKY를 질의 장치(140)로 제공할 수 있다.In this case, the
쿼리(query) 알고리즘Query algorithm
쿼리 알고리즘은 라벨 T가 동일한 데이터들을 포함하는 데이터 집합 에 포함된 각 데이터 에 대한 암호문 을 포함하는 암호문 집합 , 라벨 T 및 질의 벡터 집합 에 대한 토큰 TKY를 이용하여, 질의 벡터 집합 Y와 데이터 집합 X사이의 매칭 여부를 판단할 수 있다. 이때, 질의 벡터 집합 Y와 데이터 집합 X가 매칭된다는 것은 데이터 집합 X에 포함된 각 데이터 가 질의 벡터 집합 Y에 포함된 범위 질의 벡터 중 대응되는 범위 질의 벡터 에 따른 범위 내에 속함(즉, 모든 i에 대해 을 만족)을 의미할 수 있다. The query algorithm is a data set that contains data with the same label T Data included in Ciphertext for Ciphertext set containing Set of labels, labels T and quality 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. Of the range query vectors included in the vector set Y of the false query, the corresponding range query vector Within the range of (i.e. for all i Can satisfy).
한편, 쿼리 알고리즘은 암호문 집합 CTT와 토큰 TKY를 이용하여 임의의 j에 대해 만들 수 있는 각 조합 (이때, , )에 대해 아래의 수학식 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 (At this time, , ), it may be determined whether the following equations 4 and 5 are satisfied.
[수학식 4][Equation 4]
[수학식 5][Equation 5]
이때, 수학식 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
이 경우, 질의 장치(110)는 쿼리 알고리즘을 수행하여 질의 벡터 집합 Y와 데이터 집합 X가 매칭되는 것으로 판단된 경우, 1을 출력하고, 매칭되지 않는 것으로 판단된 경우, 0을 출력할 수 있다.In this case, the
도 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
도 4를 참조하면, 우선, 키 생성 장치(110)는 셋업 알고리즘을 수행하여, 각 사용자의 사용자 암호키 , 마스터 비밀키 및 공개 파라미터 를 생성한다(401). Referring to FIG. 4, first, the
이후, 키 생성 장치(110)는 사용자 1의 사용자 암호키 EK1을 사용자 1에 의해 이용되는 클라이언트 장치 1(120-1)로 제공한다(402). Thereafter, the
또한, 키 생성 장치(110)는 사용자 2의 사용자 암호키 EK2을 사용자 2에 의해 이용되는 클라이언트 장치 2(120-2)로 제공한다(403).In addition, the
또한, 키 생성 장치(110)는 사용자 3의 사용자 암호키 EK3을 사용자 3에 의해 이용되는 클라이언트 장치 3(120-3)로 제공한다(404).In addition, the
한편, 키 생성 장치(110)로부터 사용자 암호키 EK1를 획득한 클라이언트 장치 1(120-1)은 암호화 알고리즘을 수행하여 라벨이 T인 데이터 에 대한 암호문 을 생성한다(405).On the other hand, the client device 1 (120-1) that obtains the user encryption key EK 1 from the
이후, 클라이언트 장치 1(120-1)은 생성한 암호문 을 데이터베이스(130)에 저장한다(406).Thereafter, the client device 1 (120-1) generates the encrypted text Is stored in the database 130 (406).
또한, 키 생성 장치(110)로부터 사용자 암호키 EK2를 획득한 클라이언트 장치 2(120-2)는 암호화 알고리즘을 수행하여 라벨이 T인 데이터 에 대한 암호문 을 생성한다(407).In addition, the client device 2 (120-2) that obtains the user encryption key EK 2 from the
이후, 클라이언트 장치 2(120-2)는 생성한 암호문 을 데이터베이스(130)에 저장한다(408).Thereafter, the client device 2 (120-2) generates the encrypted text Is stored in the database 130 (408).
또한, 키 생성 장치(110)로부터 사용자 암호키 EK3를 획득한 클라이언트 장치 3(120-3)은 암호화 알고리즘을 수행하여 라벨이 T인 데이터 에 대한 암호문 을 생성한다(409).In addition, the client device 3 (120-3), which has obtained the user encryption key EK 3 from the
이후, 클라이언트 장치 3(120-3)는 생성한 암호문 을 데이터베이스(130)에 저장한다(410).Thereafter, the client device 3 (120-3) generates the encrypted text 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)는 데이터 집합 에 대한 질의 벡터 집합 를 생성한다(501).Referring to Figure 5, first, the
이후, 질의 장치(140)는 키 생성 장치(110)로 질의 벡터 집합 Y에 대한 토큰 생성을 요청한다(502).Thereafter, the
이후, 키 생성 장치(110)는 토큰 생성 알고리즘을 수행하여 질의 벡터 집합 Y에 대한 토큰 을 생성한다(503).Thereafter, the
이후, 키 생성 장치(110)는 생성한 토큰 TKY를 질의 장치(140)로 제공한다(504).Thereafter, the
이후, 질의 장치(140)는 쿼리 알고리즘을 수행하여 데이터베이스(130)에 저장된 암호문 , 및 를 포함하는 암호문 집합 과 토큰 TKY를 이용하여 질의 벡터 집합 Y와 데이터 집합 X 사이의 매칭 여부를 판단한다(505).Thereafter, the
한편, 도 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
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.The
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.Computer
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.The
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.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.
상기 사용자 암호키는, 아래의 수학식 1
[수학식 1]
(이때, 는 사용자 인덱스, 는 사용자 i에 대한 사용자 암호키, 는 의 원소, 및 는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
(이때, 는 상기 복수의 노드 중 j(이때, j는 인 정수, 은 상기 이진 트리의 깊이) 번째 노드, 는 에 할당된 노드 식별 정보, 는 에 대한 의사 난수)
를 이용하여 상기 복수의 노드 각각에 대한 의사 난수를 생성하는, 방법.
The method according to claim 1,
The user encryption key, the following equation 1
[Equation 1]
(At this time, User index, Is the user encryption key for user i, The Element of, And Is an arbitrary integer, p is a prime number
Satisfied,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
(At this time, Is j among the plurality of nodes (where j is Phosphorus Integer, Is the depth of the binary tree) th node, The Node identification information assigned to, The Pseudo-random number for)
Method for generating a pseudo-random number for each of the plurality of nodes.
상기 암호문을 생성하는 단계는, 아래의 수학식 3
[수학식 3]
(이때, 는 상기 암호문, 는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨, 는 상기 해시 값)
을 이용하여 상기 암호문을 생성하는, 방법.
The method according to claim 4,
The step of generating the ciphertext is Equation 3 below.
[Equation 3]
(At this time, Is the ciphertext, Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label, 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.
상기 토큰을 생성하는 단계는,
상기 이진 트리로부터 상기 복수의 범위 질의 벡터 각각에 대한 커버 노드 집합을 생성하는 단계;
상기 커버 노드 집합 각각에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수(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.
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
(이때, 는 사용자 인덱스, 는 사용자 i에 대한 사용자 암호키, 는 의 원소, 및 는 각각 임의의 정수, p는 소수(prime number))을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
(이때, 는 상기 하나 이상의 노드 중 j(이때, j는 인 정수, 은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드, 는 에 할당된 노드 식별 정보, 는 에 대한 의사 난수)
를 이용하여 상기 의사 난수를 생성하는, 방법.
The method according to claim 7,
The user encryption key is the following equation 1
[Equation 1]
(At this time, User index, Is the user encryption key for user i, The Element of, And Each satisfy an arbitrary integer, p is a prime number,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
(At this time, Is j among the one or more nodes (where j is Phosphorus Integer, Is the number of nodes included in the set of cover nodes) th node, The Node identification information assigned to, The Pseudo-random number for)
Method for generating the pseudo-random number using the method.
상기 마스터 비밀키를 생성하는 단계는 아래의 수학식 3
[수학식 3]
(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 총수, 는 위수가 p인 순환군(cyclic group) 의 원소)
을 이용하여 상기 마스터 비밀키를 생성하고,
상기 부분 토큰을 생성하는 단계는, 아래의 수학식 4
[수학식 4]
(이때, 는 범위 질의 벡터 에 대한 부분 토큰, 는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, 는 상기 순환군 의 생성원, 는 및 을 만족하는 임의의 정수, , 및 는 각각 를 만족하는 임의의 정수)
를 이용하여 상기 부분 토큰을 생성하는, 방법.
The method according to claim 8,
The step of generating the master secret key is Equation 3 below.
[Equation 3]
(At this time, MK is the master secret key, n is the total number of the plurality of users, Is a cyclic group with p Element of)
Generate the master secret key using,
The step of generating the partial token, Equation 4 below
[Equation 4]
(At this time, Is a range query vector Partial tokens for, Is the depth in the binary tree of the j-th node among the one or more nodes, Is the circulating group The origin of, The And Any integer that satisfies, , And Each 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.
상기 복수의 데이터 각각에 대한 암호문은, 상기 라벨에 대한 해시 값, 상기 복수의 데이터 각각에 대하여 기 설정된 이진 트리로부터 생성된 노드 집합에 포함된 복수의 노드 각각의 식별 정보에 대한 의사 난수, 상기 복수의 노드 각각의 상기 이진 트리 내 깊이 및 상기 사용자 암호키에 기초하여 생성되고,
상기 토큰은, 상기 복수의 범위 질의 벡터 각각에 대하여 상기 이진 트리로부터 생성된 커버 노드 집합에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수, 상기 하나 이상의 노드 각각의 상기 이진 트리 내 깊이 및 마스터 비밀키에 기초하여 생성된 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 포함하는, 방법.
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.
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
(는 사용자 인덱스, 는 사용자 i에 대한 사용자 암호키, 는 의 원소, 및 는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수는, 아래의 수학식 2
[수학식 2]
(이때,는 상기 복수의 노드 중 j(이때, j는 인 정수, 은 상기 이진 트리의 깊이) 번째 노드 또는 상기 하나 이상의 노드 중 j(이때, j는 인 정수, 은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드, 는 에 할당된 노드 식별 정보, 는 에 대한 의사 난수)
를 이용하여 생성되는, 방법.
The method according to claim 11,
The user encryption key is the following equation 1
[Equation 1]
( User index, Is the user encryption key for user i, The Element of, And Is an arbitrary integer, p is a prime number
Satisfied,
The pseudo-random number is Equation 2 below.
[Equation 2]
(At this time, Is j among the plurality of nodes (where j is Phosphorus Integer, Is the depth of the binary tree), or j of the one or more nodes (where j is Phosphorus Integer, Is the number of nodes included in the set of cover nodes) th node, The Node identification information assigned to, The Pseudo-random number for)
Generated using the method.
상기 마스터 비밀키는 아래의 수학식 3
[수학식 3]
(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 수, 는 위수가 p인 순환군(cyclic group) 의 원소)
을 만족하고,
상기 암호문은, 아래의 수학식 4
[수학식 4]
(이때, 는 상기 암호문, 는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨, 는 상기 해시 값)
를 만족하고,
상기 부분 토큰은, 아래의 수학식 5
[수학식 5]
(이때, 는 범위 질의 벡터 에 대한 부분 토큰, 는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, 는 상기 순환군 의 생성원, 는 및 을 만족하는 임의의 정수, , 및 는 각각 를 만족하는 임의의 정수)
를 만족하는, 방법.
The method according to claim 12,
The master secret key is Equation 3 below.
[Equation 3]
(At this time, MK is the master secret key, n is the number of the plurality of users, Is a cyclic group with p Element of)
Satisfied,
The ciphertext is the following Equation 4
[Equation 4]
(At this time, Is the ciphertext, Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label, Is the hash value above)
Satisfied,
The partial token, Equation 5 below
[Equation 5]
(At this time, Is a range query vector Partial tokens for, Is the depth in the binary tree of the j-th node among the one or more nodes, Is the circulating group The origin of, The And Any integer that satisfies, , And Each Any integer satisfying)
How to satisfy, how.
상기 판단하는 단계는, 상기 복수의 데이터 각각에 대한 암호문을 포함하는 암호문 집합과 상기 질의 벡터 집합에 대한 토큰을 이용하여 임의의 j에 대해 만들 수 있는 각 조합 (이때, , )에 대해 아래의 수학식 6 및 7을 만족하는지 여부를 판단하고,
[수학식 6]
[수학식 7]
(이때, e는 를 만족하는 겹선형 함수(bilinear map), , 및 는 위수(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 (At this time, , ), it is determined whether or not the following equations 6 and 7 are satisfied,
[Equation 6]
[Equation 7]
(At this time, e is Bilinear map, which satisfies , And 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.
상기 사용자 암호키는, 아래의 수학식 1
[수학식 1]
(이때, 는 사용자 인덱스, 는 사용자 i에 대한 사용자 암호키, 는 의 원소, 및 는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
(이때, 는 상기 복수의 노드 중 j(이때, j는 인 정수, 은 상기 이진 트리의 깊이) 번째 노드, 는 에 할당된 노드 식별 정보, 는 에 대한 의사 난수)
를 이용하여 상기 복수의 노드 각각에 대한 의사 난수를 생성하는, 장치.
The method according to claim 15,
The user encryption key, the following equation 1
[Equation 1]
(At this time, User index, Is the user encryption key for user i, The Element of, And Is an arbitrary integer, p is a prime number
Satisfied,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
(At this time, Is j among the plurality of nodes (where j is Phosphorus Integer, Is the depth of the binary tree) th node, The Node identification information assigned to, The Pseudo-random number for)
Device for generating a pseudo-random number for each of the plurality of nodes using the.
상기 암호문을 생성하는 단계는, 아래의 수학식 3
[수학식 3]
(이때, 는 상기 암호문, 는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨, 는 상기 해시 값)
을 이용하여 상기 암호문을 생성하는, 장치.
The method according to claim 18,
The step of generating the ciphertext is Equation 3 below.
[Equation 3]
(At this time, Is the ciphertext, Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label, 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.
상기 토큰을 생성하는 단계는,
상기 이진 트리로부터 상기 복수의 범위 질의 벡터 각각에 대한 커버 노드 집합을 생성하는 단계;
상기 커버 노드 집합 각각에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수(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.
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
(이때, 는 사용자 인덱스, 는 사용자 i에 대한 사용자 암호키, 는 의 원소, 및 는 각각 임의의 정수, p는 소수(prime number))을 만족하고,
상기 의사 난수를 생성하는 단계는, 아래의 수학식 2
[수학식 2]
(이때, 는 상기 하나 이상의 노드 중 j(이때, j는 인 정수, 은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드, 는 에 할당된 노드 식별 정보, 는 에 대한 의사 난수)
를 이용하여 상기 의사 난수를 생성하는, 장치.
The method of claim 21,
The user encryption key is the following equation 1
[Equation 1]
(At this time, User index, Is the user encryption key for user i, The Element of, And Each satisfy an arbitrary integer, p is a prime number,
The step of generating the pseudo-random number is Equation 2 below.
[Equation 2]
(At this time, Is j among the one or more nodes (where j is Phosphorus Integer, Is the number of nodes included in the set of cover nodes) th node, The Node identification information assigned to, The Pseudo-random number for)
Using the device, to generate the pseudo-random number.
상기 마스터 비밀키를 생성하는 단계는 아래의 수학식 3
[수학식 3]
(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 총수, 는 위수가 p인 순환군(cyclic group) 의 원소)
을 이용하여 상기 마스터 비밀키를 생성하고,
상기 부분 토큰을 생성하는 단계는, 아래의 수학식 4
[수학식 4]
(이때, 는 범위 질의 벡터 에 대한 부분 토큰, 는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, 는 상기 순환군 의 생성원, 는 및 을 만족하는 임의의 정수, , 및 는 각각 를 만족하는 임의의 정수)
를 이용하여 상기 부분 토큰을 생성하는, 장치.
The method according to claim 22,
The step of generating the master secret key is Equation 3 below.
[Equation 3]
(At this time, MK is the master secret key, n is the total number of the plurality of users, Is a cyclic group with p Element of)
Generate the master secret key using,
The step of generating the partial token, Equation 4 below
[Equation 4]
(At this time, Is a range query vector Partial tokens for, Is the depth in the binary tree of the j-th node among the one or more nodes, Is the circulating group The origin of, The And Any integer that satisfies, , And Each 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.
상기 복수의 데이터 각각에 대한 암호문은, 상기 라벨에 대한 해시 값, 상기 복수의 데이터 각각에 대하여 기 설정된 이진 트리로부터 생성된 노드 집합에 포함된 복수의 노드 각각의 식별 정보에 대한 의사 난수, 상기 복수의 노드 각각의 상기 이진 트리 내 깊이 및 상기 사용자 암호키에 기초하여 생성되고,
상기 토큰은, 상기 복수의 범위 질의 벡터 각각에 대하여 상기 이진 트리로부터 생성된 커버 노드 집합에 포함된 하나 이상의 노드 각각의 식별 정보에 대한 의사 난수, 상기 하나 이상의 노드 각각의 상기 이진 트리 내 깊이 및 마스터 비밀키에 기초하여 생성된 상기 복수의 범위 질의 벡터 각각에 대한 부분 토큰을 포함하는, 장치.
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.
상기 사용자 암호키는 아래의 수학식 1
[수학식 1]
(는 사용자 인덱스, 는 사용자 i에 대한 사용자 암호키, 는 의 원소, 및 는 각각 임의의 정수, p는 소수(prime number))
을 만족하고,
상기 의사 난수는, 아래의 수학식 2
[수학식 2]
(이때,는 상기 복수의 노드 중 j(이때, j는 인 정수, 은 상기 이진 트리의 깊이) 번째 노드 또는 상기 하나 이상의 노드 중 j(이때, j는 인 정수, 은 상기 커버 노드 집합에 포함된 노드의 개수) 번째 노드, 는 에 할당된 노드 식별 정보, 는 에 대한 의사 난수)
를 이용하여 생성되는, 장치.
The method according to claim 25,
The user encryption key is the following equation 1
[Equation 1]
( User index, Is the user encryption key for user i, The Element of, And Is an arbitrary integer, p is a prime number
Satisfied,
The pseudo-random number is Equation 2 below.
[Equation 2]
(At this time, Is j among the plurality of nodes (where j is Phosphorus Integer, Is the depth of the binary tree), or j of the one or more nodes (where j is Phosphorus Integer, Is the number of nodes included in the set of cover nodes) th node, The Node identification information assigned to, The Pseudo-random number for)
Generated using a device.
상기 마스터 비밀키는 아래의 수학식 3
[수학식 3]
(이때, MK는 상기 마스터 비밀키, n은 상기 복수의 사용자의 수, 는 위수가 p인 순환군(cyclic group) 의 원소)
을 만족하고,
상기 암호문은, 아래의 수학식 4
[수학식 4]
(이때, 는 상기 암호문, 는 상기 복수의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, T는 상기 라벨, 는 상기 해시 값)
를 만족하고,
상기 부분 토큰은, 아래의 수학식 5
[수학식 5]
(이때, 는 범위 질의 벡터 에 대한 부분 토큰, 는 상기 하나 이상의 노드 중 j번째 노드의 상기 이진 트리 내 깊이, 는 상기 순환군 의 생성원, 는 및 을 만족하는 임의의 정수, , 및 는 각각 를 만족하는 임의의 정수)
를 만족하는, 장치.
The method according to claim 26,
The master secret key is Equation 3 below.
[Equation 3]
(At this time, MK is the master secret key, n is the number of the plurality of users, Is a cyclic group with p Element of)
Satisfied,
The ciphertext is the following Equation 4
[Equation 4]
(At this time, Is the ciphertext, Is the depth in the binary tree of the j-th node among the plurality of nodes, T is the label, Is the hash value above)
Satisfied,
The partial token, Equation 5 below
[Equation 5]
(At this time, Is a range query vector Partial tokens for, Is the depth in the binary tree of the j-th node among the one or more nodes, Is the circulating group The origin of, The And Any integer that satisfies, , And Each Any integer satisfying)
To satisfy, the device.
상기 판단하는 단계는, 상기 복수의 데이터 각각에 대한 암호문을 포함하는 암호문 집합과 상기 질의 벡터 집합에 대한 토큰을 이용하여 임의의 j에 대해 만들 수 있는 각 조합 (이때, , )에 대해 아래의 수학식 6 및 7을 만족하는지 여부를 판단하고,
[수학식 6]
[수학식 7]
(이때, e는 를 만족하는 겹선형 함수(bilinear map), , 및 는 위수(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 (At this time, , ), it is determined whether or not the following equations 6 and 7 are satisfied,
[Equation 6]
[Equation 7]
(At this time, e is Bilinear map, which satisfies , And 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.
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)
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 |
-
2019
- 2019-09-02 KR KR1020190108054A patent/KR102123440B1/en active IP Right Grant
Patent Citations (6)
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 |