KR101795482B1 - Device and method for encrypted data retrival - Google Patents
Device and method for encrypted data retrival Download PDFInfo
- Publication number
- KR101795482B1 KR101795482B1 KR1020160033152A KR20160033152A KR101795482B1 KR 101795482 B1 KR101795482 B1 KR 101795482B1 KR 1020160033152 A KR1020160033152 A KR 1020160033152A KR 20160033152 A KR20160033152 A KR 20160033152A KR 101795482 B1 KR101795482 B1 KR 101795482B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- server
- matrix
- processor
- index
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
-
- G06F17/30171—
-
- G06F17/30386—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 통신 모듈, 데이터 검색 프로그램이 저장된 메모리 및 프로그램을 실행하는 프로세서를 포함한다. 이때, 프로세서는 프로그램의 실행에 따라, 범위 및 키에 기초하여, 서버에 저장된 데이터 중 검색 대상 데이터에 대응하는 인덱스를 산출하며, 산출된 인덱스를 서버로 전송하고, 서버로부터 산출된 인덱스에 대응하는 데이터를 수신한다. 그리고 범위는 서버로부터 수신한 순열 정보에 기초하여 산출된 것이며, 키는 서버에 저장된 데이터에 대응하여 설정된다.The present invention includes a communication module, a memory in which a data retrieval program is stored, and a processor for executing the program. At this time, the processor calculates the index corresponding to the search target data among the data stored in the server, based on the range and the key, and transmits the calculated index to the server, And receives data. The range is calculated based on the permutation information received from the server, and the key is set corresponding to the data stored in the server.
Description
본 발명은 데이터 검색 단말 및 그의 검색 방법에 관한 것이다.The present invention relates to a data search terminal and a search method thereof.
일반적인 데이터 검색 기술은 암호화되지 않은 정보에 대한 검색을 수행한다. 그러나 클라우드(cloud) 환경에서 데이터를 저장하는 기술이 발달함에 따라, 암호화된 데이터에 대한 검색에 대한 요구가 증가하고 있다. Common data retrieval techniques perform searches on unencrypted information. However, as the technology for storing data in a cloud environment develops, there is an increasing demand for searching for encrypted data.
순서보존 암호화(order preserving encryption; OPE) 방법은 데이터를 암호화하되, 결과 값의 순서를 보존하는 방법이다. 순서보존 암호화 방법은 데이터 암호화를 통하여, 안정성 및 검색에 대한 효율성을 동시에 만족시킬 수 있다. 그러나 순서 보존 암호화 방법은 순서가 보존되므로 순서로부터 데이터 정보가 유출될 수 있는 위험이 있다.The order preserving encryption (OPE) method encrypts data but preserves the order of the results. The sequential encryption method can satisfy both stability and retrieval efficiency through data encryption. However, there is a risk that data informa- tion can be leaked from the sequence because the sequence preservation encryption method preserves the order.
이와 관련되어, 한국 공개특허공보 제1584220호(발명의 명칭: "암호화 데이터 정렬 유지를 위한 인코딩 방법")는 카운터 모드 블록 암호화에 의한 암호화된 데이터를 평문 데이터 정렬 순서를 유지할 수 있게 인코딩하는 방법을 개시하고 있다.In this connection, Korean Patent Publication No. 1584220 (entitled "Encoding Method for Maintaining Encrypted Data Alignment") discloses a method for encoding encrypted data by counter mode block encryption so as to maintain a clear text data sort order Lt; / RTI >
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 서버에 저장된 암호화된 데이터에 대한 검색을 수행할 수 있는 데이터 검색 단말 및 그의 검색 방법에 관한 것이다. Disclosure of Invention Technical Problem [8] The present invention is directed to a data retrieval terminal and a retrieval method for retrieving encrypted data stored in a server.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.It should be understood, however, that the technical scope of the present invention is not limited to the above-described technical problems, and other technical problems may exist.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 서버에 저장된 데이터를 검색하는 단말은 통신 모듈, 데이터 검색 프로그램이 저장된 메모리 및 프로그램을 실행하는 프로세서를 포함한다. 이때, 프로세서는 프로그램의 실행에 따라, 범위 및 키에 기초하여, 서버에 저장된 데이터 중 검색 대상 데이터에 대응하는 인덱스를 산출하며, 산출된 인덱스를 서버로 전송하고, 서버로부터 산출된 인덱스에 대응하는 데이터를 수신한다. 그리고 범위는 서버로부터 수신한 순열 정보에 기초하여 산출된 것이며, 키는 서버에 저장된 데이터에 대응하여 설정된다.According to an aspect of the present invention, there is provided a terminal for retrieving data stored in a server according to the first aspect of the present invention includes a communication module, a memory in which a data retrieval program is stored, and a processor for executing the program. At this time, the processor calculates the index corresponding to the search target data among the data stored in the server, based on the range and the key, and transmits the calculated index to the server, And receives data. The range is calculated based on the permutation information received from the server, and the key is set corresponding to the data stored in the server.
또한, 본 발명의 제 2 측면에 따른 단말에서의 서버에 저장된 데이터 검색 방법은 범위 및 키에 기초하여, 서버에 저장된 데이터 중 검색 대상 데이터에 대응하는 인덱스를 산출하는 단계; 산출된 인덱스를 서버로 전송하는 단계; 및 서버로부터 산출된 인덱스에 대응하는 데이터를 수신하는 단계를 포함한다. 이때, 범위는 서버로부터 수신한 순열 정보에 기초하여 산출된 것이며, 키는 서버에 저장된 데이터에 대응하여 설정된 것이다.According to a second aspect of the present invention, there is provided a method of retrieving data stored in a server in a terminal, comprising: calculating an index corresponding to data to be retrieved from data stored in a server based on a range and a key; Transmitting the calculated index to a server; And receiving data corresponding to the index calculated from the server. In this case, the range is calculated based on the permutation information received from the server, and the key is set corresponding to the data stored in the server.
본 발명은 단말에서 데이터를 재정렬하고, 서버로 전송하여 서버의 데이터베이스에 저장할 수 있다. 그러므로 본 발명은 서버에 저장된 데이터의 안정성을 보장할 수 있다. 또한, 본 발명은 이진 검색을 통하여, 서버에 저장된 암호화된 데이터에 대한 효율적인 검색을 수행할 수 있다. 그러므로 본 발명은 데이터 유출을 방지하고, 암호화된 데이터의 신속한 검색을 제공할 수 있다.The present invention can rearrange the data at the terminal, transmit the data to the server, and store the data in the database of the server. Therefore, the present invention can ensure the stability of data stored in the server. In addition, the present invention can perform an efficient search for encrypted data stored in a server through a binary search. Therefore, the present invention can prevent data leakage and provide quick retrieval of encrypted data.
도 1은 본 발명의 일 실시예에 따른 데이터 검색 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 유계 행렬 및 균형 행렬의 예시도이다.
도 3은 본 발명의 일 실시예에 따른 데이터 암호화 행렬의 예시도이다.
도 4는 본 발명의 일 실시예에 따른 데이터의 예시도이다.
도 5는 본 발명의 일 실시예에 따른 데이터 검색의 예시도이다.
도 6은 본 발명의 일 실시예에 따른 데이터 검색 단말의 검색 방법의 순서도이다.1 is a block diagram of a data retrieval system in accordance with an embodiment of the present invention.
FIG. 2 is an exemplary diagram of a relational matrix and a balance matrix according to an embodiment of the present invention.
3 is an exemplary diagram of a data encryption matrix according to one embodiment of the present invention.
4 is an illustration of data according to an embodiment of the present invention.
5 is an exemplary diagram of data retrieval according to an embodiment of the present invention.
6 is a flowchart of a search method of a data search terminal according to an embodiment of the present invention.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, which will be readily apparent to those skilled in the art. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly illustrate the present invention, parts not related to the description are omitted, and similar parts are denoted by like reference characters throughout the specification.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part is referred to as being "connected" to another part, it includes not only "directly connected" but also "electrically connected" with another part in between . Also, when a part is referred to as "including " an element, it does not exclude other elements unless specifically stated otherwise.
다음은 도 1 내지 도 5를 참조하여, 본 발명의 일 실시예에 따른 데이터 검색 시스템(100)을 설명한다.The following is a description of a
도 1은 본 발명의 일 실시예에 따른 데이터 검색 시스템(100)의 블록도이다.1 is a block diagram of a
데이터 검색 시스템(100)은 단말(110)이 서버(120)에 저장된 암호화된 데이터를 검색한다. 이때, 서버(120)에 저장된 데이터는 단말(110)에 의해 암호화된 후 서버(120)에 포함된 데이터베이스(122)에 저장된 것일 수 있다.The
데이터 검색 시스템(100)은 서버(120) 및 복수의 단말(110)을 포함할 수 있다.The
서버(120)는 단말(110)로부터 데이터를 수신하여 저장할 수 있다. 또한, 서버(120)는 단말(110)의 요청에 따라, 단말(110)에 단말(110)의 요청에 대응하는 데이터를 제공할 수 있다. 서버(120)는 데이터를 저장할 수 있는 데이터베이스(122)를 포함할 수 있다.The
이때, 데이터베이스(122)는 서버(120)에 응용 프로그램(application) 또는 서비스(service)의 형태로 포함된 것일 수 있다. 또한, 데이터베이스(122)는 서버(120)와 연결된 데이터베이스 서버일 수 있다. 그리고 서버(120)는 클라우드 서버일 수 있다. At this time, the
서버(120)는 단말(110)에서 암호화를 위하여 사용할 수 있는 순열 정보를 포함할 수 있다. 이때, 순열 정보는 행렬의 모든 행이 순열(permutation)로 이루어진 유계 행렬(bounded matrix) 및 균형 행렬(balanced matrix)을 포함할 수 있다. 유계 행렬 및 균형 행렬은 행 및 열의 수가 동일한 정방 행렬(square matrix)일 수 있다.The
도 2는 본 발명의 일 실시예에 따른 유계 행렬 및 균형 행렬의 예시도이다.FIG. 2 is an exemplary diagram of a relational matrix and a balance matrix according to an embodiment of the present invention.
균형 행렬은 도 2의 (a)와 같이, 동일한 열에 동일한 원소가 한 번도 중복될 수 없는 행렬을 의미한다. 균형 행렬은 "1-균형 행렬" 또는 "1-balanced"로 표기할 수 있다.The balance matrix means a matrix in which the same elements in the same column can not be duplicated at all, as shown in Fig. 2 (a). The equilibrium matrix can be denoted as "1-balanced matrix" or "1-balanced".
유계 행렬은 도 2의 (b)와 같이, 동일한 열에 동일한 원소가 특정 개수 이하 포함된 행렬을 의미한다. 유계 행렬은 열에 포함된 동일한 원소 개수(k)에 따라, "k-유계 행렬" 또는 "k-Bounded"로 표기할 수 있다.As shown in FIG. 2 (b), the relational matrix means a matrix including the same number of elements of the same column or less. The affine matrices can be denoted as " k - matrix" or " k - bounded" according to the same number of elements ( k ) contained in the column.
단말(110)은 데이터를 암호화하여, 서버(120)에 저장한다. 그리고 단말(110)은 서버(120)에 저장된 암호화된 데이터를 검색할 수 있다. 단말(110)은 통신 모듈(111), 메모리(112) 및 프로세서(113)을 포함한다. The
통신 모듈(111)은 서버(120)와의 데이터 통신을 수행할 수 있다.The
메모리(112)는 데이터 검색 프로그램이 저장된다. 이때, 메모리(112)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 비휘발성 저장장치 및 저장된 정보를 유지하기 위하여 전력이 필요한 휘발성 저장장치를 통칭하는 것이다.The
프로세서(113)는 데이터를 서버(120)에 포함된 데이터베이스(122)에 저장할 수 있다. 이때, 프로세서(113)는 저장되는 데이터를 재정렬하여, 서버(120)로 전송할 수 있다.The
구체적으로 프로세서(113)는 서버(120)의 데이터베이스(122)에 원시 데이터(original data)를 저장한다. 이때, 원시 데이터는 특정 속성에 따라 정렬된 데이터일 수 있다. 예를 들어, 원시 데이터는 주 키(primary key)에 따라 정렬된 데이터일 수 있다.Specifically, the
프로세서(113)는 원시 데이터를 저장하기 위하여, 서버(120)에 저장된 순열 정보 중 하나의 유계 행렬 및 하나 이상의 균형 행렬을 선택할 수 있다. 이때, 선택된 유계 행렬 및 균형 행렬의 크기는 저장하고자 하는 원시 데이터의 수에 따라, 결정될 수 있다.The
또한, 본 명세서에서 원시 데이터, 유계 행렬 및 균형 행렬의 인덱스(index)는 0부터 시작할 수 있다. 즉 원시 데이터의 인덱스는 0보다 같거나 크며, '원시 데이터 크기 - 1'보다 작은 값을 가질 수 있다. 또한, 행렬에서 행의 인덱스 및 열의 인덱스는 같거나 0보다 크며, '행렬의 차원 수 - 1'보다 작은 값을 가질 수 있다.Also, in this specification, the indexes of the raw data, the relational matrix and the balance matrix can start from zero. That is, the index of the raw data is equal to or larger than 0 and can have a value smaller than 'raw data size - 1'. Also, the index of the row and the index of the column in the matrix are equal to or greater than 0, and may have a value smaller than the number of dimensions of the matrix - 1.
한편, 프로세서(113)는 유계 행렬 및 균형 행렬 각각의 차원의 곱이 원시 데이터의 수보다 크도록 유계 행렬 및 균형 행렬의 차원의 수를 선택할 수 있다. 예를 들어, 원시 데이터 수가 10개라면, 프로세서(113)는 유계 행렬 및 균형 행렬의 차원 수의 곱이 10 이상이 되도록 유계 행렬 및 균형 행렬을 선택할 수 있다.On the other hand, the
그리고 프로세서(113)는 선택된 차원의 수에 대응하는 유계 행렬 및 균형 행렬을 선택할 수 있다. 프로세서(113)가 유계 행렬 및 균형 행렬을 선택하면, 서버(120)는 선택된 유계 행렬 및 균형 행렬 정보를 저장할 수 있다. The
프로세서(113)는 유계 행렬 및 균형 행렬의 곱을 통하여, 데이터 암호화 행렬을 산출할 수 있다.The
예를 들어, N-1 개의 균형 행렬(M 1, M 2, … ,M N -1) 및 1개의 유계 행렬(M N )이 선택되는 경우, 데이터 암호화 행렬(M)은 N-1 개의 균형 행렬 및 1개의 유계 행렬의 곱을 통하여 산출될 수 있다. 데이터 암호화 행렬은 먼저 (M N x M N- 1 )을 산출하고, 산출된 값에 다시 M N-2 를 곱하는 연산 순서로 산출될 수 있다. 즉, 데이터 암호화 행렬 M는 {((M N x M N-1 ) x … x M 2 ) x M 1 }을 통하여 산출될 수 있다. For example, N -1 of balance matrix (M 1, M 2, ..., M N -1) and one oil-based matrix (M N) in this case is selected, data encryption, matrix (M) is N -1 of balance Can be computed through the multiplication of a matrix and a relational matrix. The data encryption matrix is first ( M N x M N- 1 ), and multiplying the calculated value by M N-2 again. That is, the data encryption matrix M {(( M N x M N-1 ) x ... x M 2 ) x M 1 }.
예를 들어, [수학식 1]에 기초하여, 1 개의 균형 행렬(M 1) 및 1개의 유계 행렬(M 2 )로부터 데이터 암호화 행렬 M을 산출할 수 있다. [수학식 1]에서 m 1 은 균형 행렬(M 1)의 차원 수이며, m 2 은 유계 행렬(M 2 ) 의 차원 수이다. J 는 m 1 X m 1 의 원소가 모두 1인 정방 행렬이다. 또한, 데이터 암호화 행렬 M은 행 및 열의 크기가 (m 1 X m 2 )인 정방 행렬이다. For example, based on
예를 들어, [수학식 1]에서는 1행 1열부터 m 1 행 m 1 열까지의 원소를 산출하기 위한 식이다. 즉, 앞에서 설명한 예제에 따라, 1행 1열부터 3행 3열까지의 원소를 산출하는 식은 이다. 이때, 는 이므로, 이므로, 1행 1열부터 3 행 3열까지의 원소는 이 될 수 있다. For example,
즉, 데이터 암호화 행렬 M에서 1행 1열의 값은 0, 1행 3열의 값은 1이되며, 3행 3열의 값은 2가 될 수 있다. That is, in the data encryption matrix M , the value of 1 row and 1 column is 0, the value of 1 row and 3 column is 1, and the value of 3 row and 3 column can be 2.
또한, 1행 10열부터 3행 12열까지의 원소를 산출하는 식은 이므로, 1행 10열부터 3행 12열까지의 원소는 가 될 수 있다. The equation for calculating the elements from
데이터 암호화 행렬은 단말(110)에서 서버(120)로부터 유계 행렬 및 균등 행렬을 수신한 후, 계산된 것일 수 있다. 또한, 데이터 암호화 행렬은 서버(120)에서 계산된 후 단말(110)로 전달된 것일 수 있다. The data encryption matrix may be computed after receiving the residual matrix and the uniformity matrix from the terminal 120 at the terminal 110. In addition, the data encryption matrix may be calculated by the
예를 들어, 데이터 암호화 행렬을 단말(110)에서 계산되는 경우, 프로세서(113)는 선택한 유계 행렬 및 하나 이상의 균형 행렬을 서버(120)로부터 수신하여, 데이터 암호화 행렬을 산출할 수 있다.For example, if a data encryption matrix is computed at the terminal 110, the
또한, 서버(120)에서 데이터 암호화 행렬이 계산되는 경우, 프로세서(113)는 선택한 유계 행렬 및 하나 이상의 균형 행렬의 정보를 서버(120)로 전송할 수 있다. 그리고 서버(120)에서 데이터 암호화 행렬을 산출하면, 프로세서(113)는 통신 모듈(111)을 통하여, 산출된 데이터 암호화 행렬을 수신할 수 있다. 또는, 프로세서(113)는 통신 모듈(111)을 통하여, 서버(120)로 키를 전송하고, 서버(120)로부터 키에 대응하는 행을 수신할 수 있다. In addition, when a data encryption matrix is calculated at the
그리고 프로세서(113)는 산출된 데이터 암호화 행렬에 기초하여, 원시 데이터를 재정렬할 수 있다. 이때, 프로세서(113)는 키에 기초하여, 재정렬에 사용될 행을 선택할 수 있다. 그리고 사용자가 데이터 암호화를 위한 키를 선택하면, 프로세서(113)는 키를 메모리(112)에 저장할 수 있다.The
이때, 키는 단말(110)을 통하여, 원시 데이터를 저장하는 사용자가 선택한 것일 수 있다. 키는 1보다 크거나 같은 값이며, 유계 행렬 및 하나 이상의 균형 행렬 각각의 차원의 곱보다 작거나 같은 값일 수 있다. At this time, the key may be selected by the user through the terminal 110 to store the raw data. The key may be a value greater than or equal to 1 and may be a value less than or equal to the product of the inference matrix and the dimension of each of the at least one balance matrix.
도 3은 본 발명의 일 실시예에 따른 데이터 암호화 행렬의 예시도이다.3 is an exemplary diagram of a data encryption matrix according to one embodiment of the present invention.
예를 들어, 도 3을 참조하면 프로세서(113)는 하나의 유계 행렬(M 2 ) 및 하나의 균형 행렬(M 1 )의 곱을 통하여, 데이터 암호화 행렬을 산출할 수 있다. 그리고 사용자가 키로 7번째 행의 인덱스인 "6"을 선택하면, 프로세서(113)는 데이터 암호화 행렬의 7번째 행을 선택할 수 있다. For example, referring to FIG. 3, the
프로세서(113)는 데이터 암호화 행렬에서 선택한 7번째 행을 이용하여, 저장할 데이터를 재정렬 할 수 있다. The
도 4는 본 발명의 일 실시예에 따른 데이터의 예시도이다. 4 is an illustration of data according to an embodiment of the present invention.
도 4를 참조하면, 프로세서(113)는 도 4의 (a)와 같은 원시 데이터를 재정렬하여, 도 4의 (b)와 같이 서버(120)의 데이터베이스(122)에 저장할 수 있다. 이때, 원시 데이터는 주 키인 "No" 속성에 따라 내림차순 정렬될 수 있다.Referring to FIG. 4, the
프로세서(113)는 먼저 키를 이용하여, 원시 데이터 중 서버(120)에 저장될 데이터를 선택할 수 있다. 그리고 프로세서(113)는 선택된 데이터를 서버(120)로 전송하여, 서버(120)의 데이터베이스(122)에 저장할 수 있다.The
예를 들어, 프로세서(113)는 "M[키][y] = h"를 만족하는 y값에 기초하여, 서버(120)에 저장할 데이터를 선택할 수 있다. 이때, M은 데이터 암호화 행렬을 의미하며, y는 서버(120)에 저장할 데이터의 현재 인덱스가 될 수 있다. 또한, h는 서버(120)에 저장될 데이터를 선택하는 순서가 될 수 있다.For example, the
그리고 프로세서(113)는 원시 데이터 중 1번째로 서버(120)에 저장할 데이터를 선택할 수 있다. 이때, 프로세서(113)는 1번째 데이터를 선택하기 위하여, 변수 h를 0으로 설정할 수 있다. 그리고 프로세서(113)는 데이터 암호화 행렬에서 " M[6][y] = 0"을 만족하는 y값인 "6"을 찾을 수 있다. 그러므로 프로세서(113)는 데이터의 인덱스가 "6"인 7번째 데이터 "<'Green', 901212, 'M', 'AAA'>"을 선택할 수 있다. 프로세서(113)는 선택한 데이터를 통신 모듈(111)을 통하여 서버(120)로 전송할 수 있다.The
서버(120)는 단말(110)로부터 수신한 데이터를 순서대로 데이터베이스(122)에 저장할 수 있다. 그러므로 단말(110)이 전송한 7번째 데이터는 데이터베이스(122)에 1번째 데이터로 저장되게 된다.The
이때, 프로세서(113)가 서버(120)로 전송하는 데이터는 암호화된 것일 수 있다. 즉, 프로세서(113)는 서버(120)로 "<'Green', 901212, 'M', 'AAA'>" 데이터를 전송하기 전에 암호화를 수행할 수 있다. 프로세서(113)는 "<'Green', 901212, 'M', 'AAA'>"에 대응하여 암호화된 데이터를 서버(120)로 전송할 수 있다. 그리고 서버(120)는 암호화된 데이터를 서버(120)의 데이터베이스(122)에 저장할 수 있다.At this time, the data transmitted from the
또한, 프로세서(113)는 원시 데이터 중 2번째 데이터를 선택할 수 있다. 이를 위하여, 프로세서(113)는 h를 1 증가시켜, 1로 설정할 수 있다. 프로세서(113)는 데이터 암호화 행렬에서 "M[6][y] = 1"을 만족하는 y값인 "8"을 찾을 수 있다. 그러므로 프로세서(113)는 데이터 인덱스가 "8"인 9번째 데이터 "<'Isabella', 910815, 'F', 'CCC'>"를 선택하여, 통신 모듈(111)을 통하여 서버(120)로 전송할 수 있다.Further, the
단말(110)로부터 데이터를 수신한 서버(120)는 서버(120)의 데이터베이스(122)에 수신한 데이터를 저장할 수 있다. 이때, 서버(120)는 단말(110)로부터 수신한 순서대로 데이터를 저장할 수 있다. 그러므로 서버(120)의 데이터베이스(122)에는 "<'Green', 901212, 'M', 'AAA'>" 및 "<'Isabella', 910815, 'F', 'CCC'>"순으로 데이터가 저장되게 된다.The
이와 같이, 프로세서(113)는 h값을 1씩 증가시키면서, 원시 데이터 중 서버(120)에 저장될 데이터를 선택할 수 있다. 그리고 프로세서(113)는 통신 모듈(111)을 통하여 선택된 데이터를 서버(120)로 전송할 수 있다.In this way, the
다시 도 4를 참조하면 도 4의 (b)와 같이, 서버(120)의 데이터베이스(122)는 재정렬된 데이터가 저장될 수 있다. 즉, 서버(120)의 데이터베이스(122)에 저장되는 데이터는 단말(110)이 전송하는 순서에 따라 저장될 수 있다. 그러므로 도 4의 (a) 및 (b)와 같이, 단말(110)의 원시 데이터와 서버(120)의 데이터베이스(122)에 저장되는 데이터는 순서가 상이할 수 있다.Referring again to FIG. 4, the reordering data may be stored in the
한편, 프로세서(113)는 사용자의 검색 요청에 따라, 서버(120)로부터 사용자의 검색 요청에 대응하는 데이터를 수신할 수 있다. 이때, 사용자의 검색 요청은 데이터베이스(122)에 대한 쿼리(query) 일 수 있다.Meanwhile, the
앞에서 설명한 바와 같이, 프로세서(113)는 서버(120)에 원시 데이터를 저장할 때, 저장된 원시 데이터에 대한 재정렬 정보를 저장하지 않으므로, 사용자의 검색 요청에 대응하는 데이터가 저장된 위치를 알 수 없다. 또한, 서버(120)가 저장하는 데이터는 암호화된 데이터이므로 서버(120)는 사용자의 검색 요청에 대응하는 데이터가 정확히 무엇인지 확인할 수 없다.As described above, when the
그러므로 프로세서(113)는 원시 데이터를 저장할 때, 선택된 순열 정보 및 키에 기초하여, 검색 범위를 설정할 수 있다. 그리고 프로세서(113)는 설정된 범위를 줄이는 방향으로 서버(120)의 데이터베이스(122)에 저장된 데이터를 반복적으로 확인하여, 사용자의 검색 요청에 대응하는 데이터를 검색할 수 있다. Therefore, when the
이때, 원시 데이터는 특정 속성에 대하여 정렬된 데이터이다. 그러므로 이러한 특징에 기초하여, 프로세서(113)는 이진 검색(binary search)을 수행할 수 있다. At this time, the raw data is data arranged for a specific attribute. Therefore, based on this feature, the
이진 검색 기법은 정렬된 데이터에서 특정 값을 위치의 찾는 검색 기법이다. 구체적으로 이진 검색 기법은 전체 데이터를 대상으로 범위 설정하고, 설정된 범위 내에서 중앙값을 선택한다. 그리고 이진 검색 기법은 선택된 중앙값에 대응하는 데이터가 검색 대상 데이터보다 큰지 작은지를 비교하는 방식으로 검색을 수행한다. A binary search technique is a search technique that locates a specific value in an ordered set of data. Specifically, the binary search technique sets a range for all data and selects a median within a set range. The binary search technique performs a search by comparing whether data corresponding to the selected median is larger or smaller than search target data.
만약, 중앙값에 대응하는 데이터가 검색 대상 데이터보다 큰 경우, 이진 검색 기법은 중앙값을 범위의 새로운 최대값으로 설정하고, 다시 중앙값을 선택하여, 비교를 반복한다. 또한, 중앙값에 대응하는 데이터가 검색 대상 데이터보다 작은 경우, 이진 검색 기법은 중앙값을 범위의 새로운 최소값으로 설정하고, 다시 중앙값을 선택하여 비교를 반복한다. 이러한 방법을 통하여, 이진 검색 기법은 검색 범위를 줄여가며 원하는 정보를 검색할 수 있다.If the data corresponding to the median value is larger than the data to be searched, the binary search technique sets the median value to the new maximum value of the range, selects the median value again, and repeats the comparison. If the data corresponding to the median value is smaller than the data to be searched, the binary search technique sets the median value to the new minimum value of the range, selects the median value again, and repeats the comparison. Through this method, the binary search technique can search the desired information by reducing the search range.
본 발명의 일 실시예에 따른 프로세서(113)는 이진 검색 방법에 따라, 사용자 요청에 대응하는 검색 대상 데이터를 검색할 수 있다. 이를 위하여, 프로세서(113)는 먼저, 순열정보, 범위 및 키에 기초하여, 검색할 서버(120)에 저장된 데이터의 인덱스를 산출한다.The
이때, 순열정보는 앞에서 설명한 바와 같이, 원시 데이터의 저장 시 단말(110)이 선택하여 서버(120)에 저장된 것일 수 있다. 또한, 범위는 서버(120)에 단말(110)이 원시 데이터 저장 시 선택한 순열 정보에 기초하여 산출된 것일 수 있다. 키는 서버(120)의 데이터베이스(122)에 원시 데이터를 저장할 때 사용한 후 단말(110)의 메모리(112)에 저장된 것일 수 있다.At this time, as described above, the permutation information may be stored in the
프로세서(113)는 통신 모듈(111)을 통하여, 산출된 데이터의 인덱스를 서버(120)로 전송한다. 그리고 프로세서(113)는 서버(120)로부터 데이터의 인덱스에 대응하는 데이터를 수신한다. 프로세서(113)는 서버(120)로부터 수신된 데이터와 검색 대상 데이터를 비교할 수 있다. 수신된 데이터와 검색 대상 데이터가 상이한 경우, 프로세서(113)는 산출된 데이터의 인덱스에 기초하여, 새로운 범위를 산출할 수 있다.The
만약, 수신된 데이터가 검색 대상 데이터보다 큰 경우, 프로세서(113)는 데이터의 인덱스에 기초하여 새로운 최대값을 설정할 수 있다. 그리고 프로세서(113)는 이전 범위의 최소값 및 새로운 최대값을 이용하여 새로운 범위를 산출할 수 있다.If the received data is larger than the search target data, the
또한, 수신된 데이터가 검색 대상 데이터보다 작을 경우, 프로세서(113)는 데이터의 인덱스에 기초하여 새로운 최소값을 설정할 수 있다. 그리고 프로세서(113)는 새로운 최소값 및 이전 범위의 최대값에 기초하여 새로운 범위를 산출할 수 있다.Further, when the received data is smaller than the search target data, the
프로세서(113)는 산출된 새로운 범위 및 키에 기초하여, 데이터의 인덱스를 재산출할 수 있다. 그리고 프로세서(113)는 재산출된 데이터의 인덱스를 서버(120)에 전송하고, 데이터의 인덱스에 대응하는 데이터를 다시 수신할 수 있다.The
프로세서(113)는 수신된 데이터가 검색 대상 데이터와 동일할 때까지 범위를 재설정하고 검색하는 과정을 반복할 수 있다. 만약, 수신된 데이터와 검색 대상 데이터가 동일한 경우, 프로세서(113)는 사용자에게 수신된 데이터를 제공할 수 있다.The
도 5는 본 발명의 일 실시예에 따른 데이터 검색의 예시도이다.5 is an exemplary diagram of data retrieval according to an embodiment of the present invention.
예를 들어, 도 5를 참조하면, 서버(120)는 원시 데이터 저장 시 단말(110)의 프로세서(113)가 선택한 순열 정보를 저장할 수 있다. 또한, 서버(120)는 데이터베이스(122)에 단말(110)의 프로세서(113)로부터 수신한 데이터를 저장할 수 있다.For example, referring to FIG. 5, the
프로세서(113)는 사용자로부터 "No 속성"의 값이 "920311"인 데이터에 대한 검색 요청을 수신할 수 있다. 즉, 검색 대상 데이터는 "No 속성"의 값이 "920311"인 데이터가 될 수 있다. The
먼저, 프로세서(113)는 검색 대상 데이터에 대한 검색 범위를 설정할 수 있다. 앞에서 설명한 바와 같이, 데이터의 크기는 유계 행렬 및 균형 행렬의 차원의 곱보다 작거나 같을 수 있다. 그러므로 프로세서(113)는 기저장된 순열 정보에 기초하여, 데이터의 크기를 예측할 수 있다.First, the
순열 정보에 저장된 유계 행렬이 "4 x 4 행렬"(4차원)이고, 균형 행렬이 "3 x 3"(3차원)이므로 프로세서(113)는 데이터의 크기가 두 행렬의 차원의 곱인 12보다 작을 것으로 예측할 수 있다. 그러므로 프로세서(113)는 데이터베이스(122)에 저장된 데이터에 대한 검색 범위를 인덱스 "0"이상 인덱스 "11" 이하로 설정할 수 있다.Since the relational matrix stored in the permutation information is a " 4 x 4 matrix "(4-dimensional) and the balance matrix is 3 x 3 (3-dimensional), the
프로세서(113)는 설정된 범위의 중앙값을 선택하여, 검색을 위하여 사용될 데이터 암호화 행렬의 열을 선택할 수 있다. 이때, 프로세서(113)는 [수학식 2]에 기초하여, 중앙값을 선택할 수 있다. [수학식 2]에서 low는 범위의 최소값, high는 범위의 최대값이다. 또한, y는 검색에 사용될 열이며, floor() 함수는 소수점 이하를 버리는 함수이다. The
[수학식 2]에서 현재 설정된 범위를 통하여, low = 0, high = 11이므로, y는 5가 된다. 즉, 프로세서(113)는 검색에 사용될 데이터 암호화 행렬의 열 인덱스로 "5"을 산출할 수 있다. 그리고 데이터 저장 시 사용한 키가 "6"이므로 프로세서(113)는 순열 정보를 통하여, 산출된 데이터 암호화 행렬 "M(6, 5)"의 값을 서버(120)로 전송할 데이터의 인덱스로 사용할 수 있다. 즉, 데이터 암호화 행렬의 7행 6열의 값이 10이므로, 프로세서(113)는 데이터의 인덱스로 "10"을 설정할 수 있다. 그리고 프로세서(113)는 서버(120)로 "10"을 전달할 수 있다. Since low = 0 and high = 11 through the currently set range in Equation (2), y becomes 5. That is, the
서버(120)는 단말(110)로부터 "10"을 수신하면, 데이터베이스(122)에 저장된 데이터 중 데이터의 인덱스가 "10"인 11번째 데이터를 검색할 수 있다. 그리고 서버(120)는 11번째 데이터인 "<'Frank', 901018, 'M', 'GGG'>"를 단말(110)로 전달할 수 있다. When the
단말(110)의 프로세서(113)는 통신 모듈(111)을 통하여, 서버(120)로부터 "<'Frank', 901018, 'M', 'GGG'>"를 수신할 수 있다. 그리고 검색 대상 데이터과 서버(120)로부터 수신한 데이터를 비교할 수 있다. 검색 대상 데이터의 "No 속성" 값 "920311"보다 수신한 데이터의 "No 속성" 값 "901018"은 작다. 그러므로 프로세서(113)는 검색에 사용된 데이터 암호화 행렬의 열 인덱스 "5"보다 1 큰 값인 "6"을 새로운 low로 다시 설정할 수 있다. 그러므로 새로운 범위에서 low는 6이며, high는 11이 될 수 있다. The
[수학식 1]에 기초하여, 프로세서(113)는 새로운 범위에 대한 중앙값인 "8"을 선택할 수 있다. 즉, 프로세서(113)는 데이터 암호화 행렬 "M(6, 8)"의 값인 "1"을 데이터의 인덱스로 선택할 수 있다. 프로세서(113)는 선택된 검색에 사용될 데이터의 인덱스 "1"을 서버(120)로 전송하고 서버(120)로부터 인덱스에 대응하는 데이터베이스(122)에 2번째 데이터인 "<'Isabella', 910815, 'F', 'CCC'>"를 수신할 수 있다.Based on Equation (1), the
프로세서(113)는 수신한 데이터에 포함된 "No 속성"의 값 "910815"와 검색 대상 데이터의 "No 속성" 값 "920311"을 비교할 수 있다. 서버(120)로부터 수신한 값이 작으므로, 프로세서(113)는 검색에 사용된 열인 8보다 1 큰 값인 9를 새로운 low로 다시 설정할 수 있다. 그러므로 새로운 low는 9이며, high는 11이 될 수 있다. The
위에서 설명한 방법에 따라, 프로세서(113)는 새로운 범위에 따라, 데이터 암호화 행렬 M의 6행 10열의 값인 8을 검색에 사용될 인덱스로 사용할 인덱스로 선택할 수 있다. 프로세서(113)는 서버(120)로 8을 전달하고, 서버(120)로부터 인덱스 8에 대응하는 데이터인 <'Kelly', 930208, 'F', 'AAA'>를 수신할 수 있다. According to the above-described method, the
프로세서(113)는 수신한 데이터에 포함된 No 속성 값 "930208"과 사용자의 검색 요청인 No 속성 값 "920311"을 비교할 수 있다. 서버(120)로부터 수신한 값이 크므로, 프로세서(113)는 검색에 사용된 데이터 암호화 행렬의 열 인덱스인 "10"보다 1 작은 값인 "9"를 범위의 새로운 high로 다시 설정할 수 있다. 그러므로 범위의 새로운 low 및 high는 모두 9가 될 수 있다. The
다시, 프로세서(113)는 새로운 범위에 따라, 데이터 암호화 행렬 M(6, 9)의 값인 "6"을 검색에 사용될 데이터의 인덱스로 선택할 수 있다. 프로세서(113)는 서버(120)로 데이터 인덱스 "6"을 전달하고, 서버(120)로부터 데이터 인덱스 "6"에 대응하는 데이터인 "<'John', 920311, 'M', 'AAA'>"를 수신할 수 있다. Again, the
프로세서(113)는 수신한 데이터에 포함된 "No 속성" 값 "920311"과 검색 대상 데이터의 "No 속성" 값 "920311"을 비교할 수 있다. 서버(120)로부터 수신한 "No 속성" 값과 검색 대상 데이터의 "No 속성" 값이 같으므로, 프로세서(113)는 검색을 완료하고 검색 결과인 "<'John', 920311, 'M', 'AAA'>"를 사용자에게 제공할 수 있다. The
한편, 본 발명의 일 실시예에 따른 단말(110)은 검색을 수행할 때마다 데이터 암호화 행렬을 생성하거나, 서버로부터 데이터 암호화 행렬을 수신하여 사용할 수 있다. 구체적으로 단말(110)은 검색을 수행할 때, 데이터 암호화 행렬에 대응하는 행과 열 인덱스를 서버(120)로 전달할 수 있다. 그리고 단말(110)은 행과 열의 인덱스에 대응하는 데이터 암호화 행렬의 값을 서버(120)로부터 수신하여 검색에 사용될 데이터의 인덱스를 설정할 수 있다. Meanwhile, the terminal 110 according to an embodiment of the present invention may generate a data encryption matrix each time a search is performed, or may receive and use a data encryption matrix from a server. Specifically, when the terminal 110 performs the search, it may transmit the row and column indexes corresponding to the data encryption matrix to the
그러므로 서버(120)는 단말(110)이 검색을 수행할 때 또는 단말(110)의 요청에 따라, 미리 단말(110)이 선택한 순열 정보에 기초하여, 데이터 암호화 행렬을 생성할 수 있다. 그리고 서버(120)는 단말(110)로부터 행과 열을 수신하면 생성된 데이터 암호화 행렬로부터 인덱스를 산출하여, 단말(110)로 전송할 수 있다.Therefore, the
또한, 본 발명의 다른 실시예에 따른 단말(110)은 [수학식 3] 내지 [수학식 5]를 통하여, 검색을 수행할 데이터의 인덱스를 산출할 수 있다. Also, the terminal 110 according to another embodiment of the present invention can calculate the index of the data to be searched through [Equation 3] to [Equation 5].
구체적으로 단말(110)은 [수학식 3]을 통하여, 데이터 암호화 행렬의 행(R)에 따른 유계 행렬의 행(q x ) 및 균형 행렬의 행(r x )을 산출할 수 있다. 예를 들어, 행의 인덱스가 "6"이고, 균형 행렬의 차원의 크기가 "3"이므로, [수학식 3]은 "6 = q x X 3+ r x "가 될 수 있다. 이때, "r x "은 균형 행렬의 차원의 수보다 작아야 하므로, "q x "는 "2"가 되고, "r x "는 "0"이 될 수 있다.Specifically, the terminal 110 can calculate the row ( q x ) of the residual matrix and the row ( r x ) of the balance matrix according to the row ( R ) of the data encryption matrix through the formula (3). For example, because the index of the line is "6", the dimensional size of the balance of the matrix, "3", [Equation 3] is "6 = x
[수학식 4]를 통하여, 데이터 암호화 행렬의 열(C)에 따른 유계 행렬의 열(q y ) 및 균형 행렬의 열(r y )을 산출할 수 있다. 예를 들어, 열의 인덱스가 "5"이고, 균형 행렬의 차원의 크기가 "3"이므로, [수학식 4]는 "5 = q y X 3+ r y "가 될 수 있다. 이때, "r y "은 균형 행렬의 차원의 수보다 작아야 하므로, "q y "는 "1"이 되고, "r y "는 "2"가 될 수 있다.( Q y ) and a column ( r y ) of the balance matrix according to the column ( C ) of the data encryption matrix can be calculated through the equation (4). For example, if the index of the column is "5", since the dimensional size of the balance of the matrix, "3", [Equation 4] "5 =
즉, 단말(110)의 프로세서(113)는 [수학식 3] 및 [수학식 4]를 통하여, 데이터 암호화 행렬의 행(R) 및 열(C)에 따른 유계 행렬에서의 행(q x ) 및 열(q y )과 균형 행렬에서의 행(r x ) 및 열(r y )을 산출할 수 있다. 그리고 [수학식 5] 및 각각의 행렬의 값에 기초하여, 프로세서(113)는 데이터의 인덱스(i)를 산출할 수 있다. In other words, the
한편, 본 발명의 일 실시예에 따른 단말(110)의 프로세서(113)는 원시 데이터에 데이터가 추가되는 경우를 대비하여, 초기 원시 데이터 저장 시 충분한 데이터 크기를 고려하여, 순열 정보를 선택할 수 있다. 그리고 데이터가 추가되면, 프로세서(113)는 기 선택된 순열 정보에 기초하여, 추가 데이터에 대한 재정렬을 수행하여, 서버(120)로 전송할 수 있다. Meanwhile, the
서버(120)는 추가 데이터가 수신되면, 데이터베이스(122)의 기존 데이터가 저장된 데이터 공간에 수신된 추가 데이터를 저장할 수 있다. The
또한, 본 발명의 다른 실시예에 따른 프로세서(113)는 원시 데이터에 데이터가 추가되면, 서버(120)로 전송하여, 데이터베이스(122)에 기존 저장된 데이터에 링크드 리스트(linked-list) 형태로 추가 데이터를 저장할 수 있다. In addition, the
구체적으로 단말(110)의 프로세서(113)는 추가 데이터가 발생하면, 순열 정보를 선택하고, 선택된 순열 정보에 기초하여, 추가 데이터를 재정렬할 수 있다. 그리고 재정렬된 추가 데이터를 서버(120)로 전송할 수 있다.Specifically, the
서버(120)는 수신한 추가 데이터를 데이터베이스(122)에 저장할 수 있다. 이때, 서버(120)는 수신한 추가 데이터를 기존에 저장된 데이터에 링크드 리스트 형태로 연결할 수 있다. 그러므로 서버(120)에 저장되는 추가 데이터는 기존 데이터와 연결될 수 있다. The
그리고 본 발명의 또 다른 실시예에 따른 프로세서(113)는 원시 데이터에 데이터가 추가되면, 기존에 저장된 데이터와 추가 데이터를 병합하여 재정렬할 수 있다. 이를 위하여, 프로세서(113)는 병합된 데이터를 위한 순열 정보를 다시 선택할 수 있다. 그리고 프로세서(113)는 다시 선택된 순열 정보에 따라, 재정렬된 병합 데이터를 서버(120)로 전송하여 저장되도록 할 수 있다. In addition, the
다음은 도 6을 참조하여, 본 발명의 일 실시예에 따른 데이터 검색 단말(110)의 검색 방법을 설명한다. Next, a search method of the
도 6은 본 발명의 일 실시예에 따른 데이터 검색 단말(110)의 검색 방법의 순서도이다. 6 is a flowchart of a search method of the
데이터 검색 단말(110)은 범위 및 키에 기초하여, 상기 서버(120)에 저장된 데이터 중 검색 대상 데이터에 대응하는 인덱스를 산출한다(S600). 이때, 범위는 서버(120)로부터 수신한 순열 정보에 기초하여 산출된 것이다. 또한, 키는 서버(120)에 저장된 데이터에 대응하여 설정된 것이다. The
또한, 데이터 검색 단말(110)은 산출된 인덱스를 상기 서버(120)로 전송한다(S610). In addition, the
서버(120)는 서버(120)의 데이터베이스(122)를 통하여, 데이터 검색 단말(110)로부터 산출된 인덱스에 대응하는 데이터를 검색할 수 있다. 서버(120)는 검색된 데이터를 데이터 검색 단말(110)로 전송할 수 있다.The
데이터 검색 단말(110)은 서버(120)로부터 산출된 인덱스에 대응하는 데이터를 수신한다(S620). The
데이터 검색 단말(110)은 수신된 데이터와 검색 대상 데이터를 비교할 수 있다(S630).The data search terminal 110 may compare the received data with the search target data (S630).
그리고 데이터 검색 단말(110)은 서버(120)로부터 수신한 데이터가 검색 대상 데이터와 매칭되지 않은 경우, 데이터 검색 단말(110)은 범위를 재산출할 수 있다(S640). If the data received from the
그리고 재산출된 범위 및 키에 기초하여, 서버(120)로부터 수신한 데이터가 검색 대상 데이터와 매칭될 때, 인덱스를 산출하고(S600), 산출된 인덱스를 서버(120)로 전송하며(S610), 전송한 인덱스에 대응하는 데이터를 수신하고(S620), 수신된 데이터와 검색 대상 데이터를 비교하는(S630) 과정을 반복하여 수행할 수 있다.When the data received from the
한편, 데이터 검색 단말(110)은 인덱스를 산출하기 이전에 서버(120)의 데이터베이스(122)에 원시 데이터를 저장할 수 있다. Meanwhile, the
구체적으로 데이터 검색 단말(110)은 서버(120)로부터 순열 정보를 수신할 수 있다. Specifically, the
데이터 검색 단말(110)은 순열 정보에 기초하여, 키를 선택할 수 있다. 그리고 데이터 검색 단말(110)은 선택된 키 및 순열 정보에 기초하여, 원시 데이터를 재정렬할 수 있다.The data search terminal 110 can select a key based on the permutation information. Then, the
데이터 검색 단말(110)은 재정렬된 원시 데이터를 서버(120)의 데이터베이스(122)에 저장되도록 서버(120)로 전송할 수 있다.The
본 발명의 일 실시예에 따른 데이터 검색 단말(110) 및 그의 검색 방법은 단말(110)에서 데이터를 재정렬하여, 서버(120)로 전송하여 서버(120)의 데이터베이스(122)에 저장할 수 있다. 그러므로 데이터 검색 단말(110) 및 그의 검색 방법은 서버(120)에 저장된 데이터의 안정성을 보장할 수 있다. 또한, 데이터 검색 단말(110) 및 그의 검색 방법은 이진 검색을 통하여, 서버(120)에 저장된 암호화된 데이터에 대한 효율적인 검색을 수행할 수 있다. 그러므로 데이터 검색 단말(110) 및 그의 검색 방법은 데이터 유출을 방지하고, 암호화된 데이터의 신속한 검색을 제공할 수 있다.The
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능한 기록 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능한 기록 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.One embodiment of the present invention may also be embodied in the form of a recording medium including instructions executable by a computer, such as program modules, being executed by a computer. Computer readable media can be any available media that can be accessed by a computer, and includes both volatile and nonvolatile media, removable and non-removable media. The computer-readable recording medium may also include computer storage media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.While the methods and systems of the present invention have been described in connection with specific embodiments, some or all of those elements or operations may be implemented using a computer system having a general purpose hardware architecture.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.It will be understood by those skilled in the art that the foregoing description of the present invention is for illustrative purposes only and that those of ordinary skill in the art can readily understand that various changes and modifications may be made without departing from the spirit or essential characteristics of the present invention. will be. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is defined by the appended claims rather than the detailed description and all changes or modifications derived from the meaning and scope of the claims and their equivalents are to be construed as being included within the scope of the present invention do.
100: 데이터 검색 시스템
110: 단말
111: 통신 모듈
112: 메모리
113: 프로세서
120: 서버
121: 순열 정보
122: 데이터베이스100: Data retrieval system
110: terminal
111: Communication module
112: memory
113: Processor
120: Server
121: Permutation information
122: Database
Claims (14)
통신 모듈,
데이터 검색 프로그램이 저장된 메모리 및
상기 프로그램을 실행하는 프로세서를 포함하고,
상기 프로세서는 상기 프로그램의 실행에 따라, 범위 및 키에 기초하여, 상기 서버에 저장된 데이터 중 검색 대상 데이터에 대응하는 인덱스를 산출하며, 상기 산출된 인덱스를 상기 서버로 전송하고, 상기 서버로부터 상기 산출된 인덱스에 대응하는 데이터를 수신하되,
상기 범위는 상기 서버로부터 수신한 순열 정보에 기초하여 산출된 것이며,
상기 키는 상기 서버에 저장된 데이터에 대응하여 설정된 것이고,
상기 프로세서는 상기 서버로부터 상기 순열 정보를 수신하고, 상기 순열 정보에 기초하여, 상기 키를 선택하며, 상기 선택된 키 및 상기 순열 정보에 기초하여, 원시 데이터를 재정렬하고, 상기 재정렬된 원시 데이터를 상기 서버의 데이터베이스에 저장되도록 상기 서버로 전송하는 것이고,
상기 순열 정보는 유계 행렬(bounded matrix) 및 하나 이상의 균형 행렬(balanced matrix)을 포함하는 것인, 데이터 검색 단말.1. A terminal for searching data stored in a server,
Communication module,
The data retrieval program stores the memory and
And a processor for executing the program,
Wherein the processor calculates the index corresponding to the data to be searched among the data stored in the server based on the range and the key according to the execution of the program and transmits the calculated index to the server, Receiving the data corresponding to the index,
The range is calculated based on the permutation information received from the server,
Wherein the key is set corresponding to data stored in the server,
Wherein the processor receives the permutation information from the server, selects the key based on the permutation information, rearranges the raw data based on the selected key and the permutation information, To the server so as to be stored in a database of the server,
Wherein the permutation information comprises a bounded matrix and at least one balanced matrix.
상기 프로세서는 상기 서버로부터 수신한 데이터 및 상기 검색 대상 데이터를 비교하고, 상기 서버로부터 수신한 데이터 및 상기 검색 대상 데이터가 매칭되지 않을 경우, 상기 범위를 재산출하고,
상기 서버로부터 수신한 데이터 및 상기 검색 대상 데이터가 매칭될 때까지 상기 재산출된 범위 및 상기 키에 기초하여, 인덱스를 재산출하며, 상기 재산출된 인덱스를 상기 서버로 전송하고, 상기 서버로부터 상기 재산출된 인덱스에 대응하는 데이터를 재수신하는 것을 반복하는, 데이터 검색 단말.The method according to claim 1,
The processor compares the data received from the server and the data to be searched, re-calculates the range if the data received from the server and the data to be searched do not match,
Calculating an index based on the re-calculated range and the key until the data received from the server and the data to be searched match; transmitting the re-calculated index to the server; And re-receiving the data corresponding to the re-calculated index.
상기 프로세서는 이진 검색 방법에 기초하여, 상기 검색 대상 데이터를 검색하는 것인, 데이터 검색 단말.The method according to claim 1,
Wherein the processor searches the data to be searched based on the binary search method.
상기 프로세서는 상기 유계 행렬의 차원 및 상기 하나 이상의 균형 행렬의 차원의 곱을 산출하고, 상기 산출된 곱이 상기 데이터의 수보다 크도록 상기 유계 행렬 및 상기 하나 이상의 균형 행렬을 선택하며,
상기 산출된 곱보다 작거나 같은 값을 상기 키로 선택하는 것인, 데이터 검색 단말.The method according to claim 1,
Wherein the processor is operative to calculate a product of a dimension of the relic matrix and a dimension of the at least one balance matrix and to select the relic matrix and the at least one balance matrix such that the calculated product is greater than the number of data,
And selects a value less than or equal to the calculated product with the key.
상기 프로세서는 상기 선택된 키 및 상기 수신된 순열 정보에 기초하여, 상기 서버에 저장할 데이터를 순차적으로 선택하여, 상기 서버로 전송하는 것인, 데이터 검색 단말.6. The method of claim 5,
Wherein the processor sequentially selects data to be stored in the server based on the selected key and the received permutation information and transmits the selected data to the server.
상기 유계 행렬은 동일한 열에 동일한 값의 원소가 미리 정해진 값 미만으로 포함되는 행렬이며,
상기 균형 행렬은 동일한 열에 동일한 원소가 포함되지 않는 행렬인, 데이터 검색 단말.The method according to claim 1,
Wherein the relational matrix is a matrix in which elements of the same value are included in the same column below a predetermined value,
Wherein the balance matrix is a matrix in which the same element is not included in the same column.
상기 원시 데이터는 상기 원시 데이터에 포함된 특정 속성에 대하여 정렬된 것인, 데이터 검색 단말.The method according to claim 1,
Wherein the raw data is arranged for specific attributes included in the raw data.
상기 프로세서는 유계 행렬을 생성하고, 상기 생성된 유계 행렬 및 상기 서버로부터 수신한 하나 이상의 균형 행렬에 기초하여, 상기 원시 데이터를 재정렬하고, 상기 유계 행렬을 상기 메모리에 저장하는, 데이터 검색 단말. The method according to claim 1,
Wherein the processor generates a relational matrix and reorders the raw data based on the generated relational matrix and one or more balance matrices received from the server and stores the relational matrix in the memory.
상기 프로세서는 데이터가 추가되면, 상기 선택된 키 및 상기 순열 정보에 기초하여, 추가 데이터를 재정렬하고, 상기 재정렬된 추가 데이터가 상기 서버에 저장되도록 상기 재정렬된 추가 데이터를 상기 서버로 전송하되,
상기 순열 정보는 상기 원시 데이터 및 상기 추가 데이터의 크기에 기초하여 선택된 것인, 데이터 검색 단말.The method according to claim 1,
The processor reorders the additional data based on the selected key and the permutation information when data is added and transmits the reordered additional data to the server so that the reordered additional data is stored in the server,
Wherein the permutation information is selected based on the size of the raw data and the additional data.
서버로부터 수신한 순열 정보에 기초하여 상기 키를 선택하는 단계;
상기 키 및 상기 순열 정보에 기초하여 원시 데이터를 재정렬하는 단계;
상기 재정렬된 원시 데이터를 상기 서버의 데이터베이스에 저장되도록 상기 서버로 전송하는 단계;
범위 및 상기 키에 기초하여, 상기 서버에 저장된 데이터 중 검색 대상 데이터에 대응하는 인덱스를 산출하는 단계;
상기 산출된 인덱스를 상기 서버로 전송하는 단계; 및
상기 서버로부터 상기 산출된 인덱스에 대응하는 데이터를 수신하는 단계를 포함하되,
상기 범위는 상기 순열 정보에 기초하여 산출된 것이며,
상기 키는 상기 서버에 저장된 데이터에 대응하여 설정된 것이고,
상기 순열 정보는 유계 행렬(bounded matrix) 및 하나 이상의 균형 행렬(balanced matrix)을 포함하는 것인, 데이터 검색 방법.A method for searching a data stored in a server in a terminal,
Selecting the key based on permutation information received from a server;
Rearranging the raw data based on the key and the permutation information;
Transmitting the reordered raw data to the server to be stored in a database of the server;
Calculating an index corresponding to the data to be searched among the data stored in the server based on the range and the key;
Transmitting the calculated index to the server; And
And receiving data corresponding to the calculated index from the server,
The range is calculated based on the permutation information,
Wherein the key is set corresponding to data stored in the server,
Wherein the permutation information comprises a bounded matrix and at least one balanced matrix.
상기 데이터를 수신하는 단계 이후에, 상기 수신된 데이터와 상기 검색 대상 데이터를 비교하는 단계; 및
상기 서버로부터 수신한 데이터가 상기 검색 대상 데이터와 매칭되지 않을 경우, 상기 범위를 재산출하는 단계를 포함하되,
상기 서버로부터 수신한 데이터가 상기 검색 대상 데이터와 매칭될 때까지 상기 재산출된 범위 및 상기 키에 기초하여, 상기 인덱스를 산출하는 단계, 상기 산출된 인덱스를 상기 서버로 전송하는 단계, 상기 데이터를 수신하는 단계 및 상기 비교하는 단계를 반복 수행하는, 데이터 검색 방법. 12. The method of claim 11,
Comparing the received data with the search target data after receiving the data; And
If the data received from the server does not match the search object data,
Calculating the index based on the re-calculated range and the key until the data received from the server matches the search object data, transmitting the calculated index to the server, Wherein the step of receiving and the step of comparing are repeated.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160033152A KR101795482B1 (en) | 2016-03-21 | 2016-03-21 | Device and method for encrypted data retrival |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160033152A KR101795482B1 (en) | 2016-03-21 | 2016-03-21 | Device and method for encrypted data retrival |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170109272A KR20170109272A (en) | 2017-09-29 |
KR101795482B1 true KR101795482B1 (en) | 2017-11-10 |
Family
ID=60035616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160033152A KR101795482B1 (en) | 2016-03-21 | 2016-03-21 | Device and method for encrypted data retrival |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101795482B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107734054A (en) * | 2017-11-06 | 2018-02-23 | 福州大学 | Encryption data searching system in safe cloud storage |
CN114338208B (en) * | 2021-12-31 | 2023-11-28 | 章鱼博士智能技术(上海)有限公司 | Message data encryption method and device and electronic equipment |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005071305A (en) * | 2003-08-05 | 2005-03-17 | Ntt Data Corp | Information retrieval device |
-
2016
- 2016-03-21 KR KR1020160033152A patent/KR101795482B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005071305A (en) * | 2003-08-05 | 2005-03-17 | Ntt Data Corp | Information retrieval device |
Also Published As
Publication number | Publication date |
---|---|
KR20170109272A (en) | 2017-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403284B2 (en) | System for data sharing platform based on distributed data sharing environment based on block chain, method of searching for data in the system, and method of providing search index in the system | |
CN108197226A (en) | MPTC account status tree and MPTC block chain method for quickly retrieving | |
CN110413611B (en) | Data storage and query method and device | |
US9824068B2 (en) | Methods and apparatus for sorting data | |
CN103283247B (en) | Vector transformation for indexing, similarity search and classification | |
EP3035613A1 (en) | Ccn routing using hardware-assisted hash tables | |
US9971770B2 (en) | Inverted indexing | |
CN107590214B (en) | Recommendation method and device for search keywords and electronic equipment | |
US11238046B2 (en) | Information management device, information management method, and information management program | |
EP3739466A1 (en) | Information management device, information management method, and information management program | |
CN102782643A (en) | Index searching using a bloom filter | |
CN110769079A (en) | Method and device for retrieving geographic position corresponding to IP | |
EP3289484A1 (en) | Method and database computer system for performing a database query using a bitmap index | |
AU2014353667A1 (en) | A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure | |
KR101795482B1 (en) | Device and method for encrypted data retrival | |
US9971793B2 (en) | Database management system and database management method | |
KR101489876B1 (en) | System and method for searching encryption document | |
JP7080803B2 (en) | Information processing equipment, information processing methods, and information processing programs | |
JP7047110B2 (en) | Content-independent file indexing methods and systems | |
KR102184275B1 (en) | Electronic apparatus and communication system for optimally achieving private information retrieval with low upload cost based on probabilistic technique, and operating method of the same | |
CN108345699B (en) | Method, device and storage medium for acquiring multimedia data | |
US11281674B2 (en) | Grouping data in a heap using tags | |
CN108984780B (en) | Method and device for managing disk data based on data structure supporting repeated key value tree | |
CN110647517B (en) | Processing method and device for table data structure | |
KR101895848B1 (en) | Document security method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |