KR20150108516A - 범위 검색을 위한 복호화가능 인덱스 생성 방법, 검색 방법, 및 복호화 방법 - Google Patents
범위 검색을 위한 복호화가능 인덱스 생성 방법, 검색 방법, 및 복호화 방법 Download PDFInfo
- Publication number
- KR20150108516A KR20150108516A KR1020140031371A KR20140031371A KR20150108516A KR 20150108516 A KR20150108516 A KR 20150108516A KR 1020140031371 A KR1020140031371 A KR 1020140031371A KR 20140031371 A KR20140031371 A KR 20140031371A KR 20150108516 A KR20150108516 A KR 20150108516A
- Authority
- KR
- South Korea
- Prior art keywords
- index
- generating
- plain text
- search
- tag
- Prior art date
Links
Images
Classifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
암호화된 데이터베이스에서 효율적인 범위 검색을 위한 인덱스를 생성하는 방법 및 그 인덱스 생성 방법을 이용하여 원하는 데이터를 검색하고 검색 결과를 복호화할 수 있는 복호화 장치 및 방법을 제시한다. 제시된 인덱스 생성 방법은 비밀키 및 일방향 함수를 준비하는 단계, 입력받은 평문 구간에 대한 태그를 비밀키 및 일방향 함수를 이용하여 계산하는 단계, 및 평문 구간을 복수의 부분 구간으로 분할하여 평문이 포함된 부분 구간의 정보를 태그로 암호화하여 암호화된 인덱스를 생성하는 단계를 포함한다.
Description
본 발명은 범위 검색을 위한 복호화가능 인덱스 생성 방법, 검색 방법, 및 복호화 방법에 관한 것으로, 보다 상세하게는 암호화된 데이터베이스에서 범위 검색을 위한 효율적인 인덱스를 생성하는 방법, 이를 이용하여 검색 결과를 얻는 검색 방법, 및 검색 결과를 복호화하는 방법에 관한 것이다.
현대 정보 사회가 고도화되면서 개인 및 기업 등에서 관리/처리하는 데이터의 양이 늘어나며, 스마트 기기가 널리 보급되면서 이러한 다양한 정보 서비스 또한 크게 늘어났다.
하지만, 정보 사회의 모든 구성원이 이러한 정보를 관리하기 위한 시스템을 스스로 유지하기에는 무리가 있다. 그에 따라, 클라우드 서비스와 같은 외부 데이터베이스 서비스를 활용하여 정보를 관리하고 서비스를 제공받는 사례가 점차 늘고 있다.
그러나, 개인의 데이터를 외부 데이터베이스에 위탁하는 방법은 외부 데이터베이스를 통한 민감한 개인 정보의 유출 사례 또한 늘고 있어 데이터 프라이버시를 제공하기 위한 해결책이 매우 중요한 문제로 부각되고 있다.
다양한 해결책이 제시되어 있으나 데이터 프라이버시와 효율성을 동시에 만족시키는 것은 매우 어려운 문제이고, 현재까지 다양한 기법들이 연구되고 있다.
이중에서 높은 안전성을 바탕으로 제시되는 방법으로는 데이터를 암호화하여 데이터베이스에 저장하는 방법이 있다.
오랫동안 정보보호의 기반이 되어온 암호화 시스템은 암호화된 암호문의 안전성을 보장한다. 하지만, 일반적으로 데이터베이스는 데이터를 저장하는 것 이외에 데이터를 검색하고 활용하는 것이 매우 중요하지만, 암호화된 데이터는 데이터베이스 서버가 암호화된 데이터로부터 어떠한 정보도 얻을 수 없도록 하기 때문에 이러한 부가 기능을 원천적으로 봉쇄한다는 단점을 지니고 있다.
이러한 단점을 해결하기 위해서 암호화된 데이터베이스에서 효율적으로 자료를 검색하는 가장 기본적인 문제부터 시작하여 암호화된 데이터를 복호화하지 않고 원하는 연산을 수행하는 것까지 많은 분야에 걸쳐 다양한 연구가 활발히 진행 중이다. 이 중 범위 검색 기술은 사용자가 원하는 범위에 포함되는 모든 데이터를 동시에 검색하는 기술로, 이러한 범위 검색을 기반으로 다양한 데이터 검색을 수행할 수 있기 때문에 매우 중요한 문제라고 할 수 있다. 좀 더 자세히 설명하면, 범위 검색이란 주어진 구간 [a,b]에 대해서 a < x < b 를 만족하는 키워드 x를 포함하는 모든 데이터를 동시에 검색하는 것을 의미한다.
관련 선행기술로는, 오퍼랜드(operands)를 해독하는 것 없이 암호화된 데이터에 직접적으로 GROUPBY 및 ORDERBY 오퍼레이션 뿐만 아니라 MAX, MIN, COUNT의 통합 오퍼레이션, 균등과 범위 질의를 수행할 수 있는 내용이, 미국공개특허공보 제2005-0147246호(system and method for fast querying of encrypted databases)에 기재되었다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 암호화된 데이터베이스에서 효율적인 범위 검색을 위한 인덱스를 생성하는 방법을 제공함에 그 목적이 있다.
한편, 본 발명의 다른 목적은 상술한 인덱스 생성 방법을 이용하여 원하는 데이터를 검색하고 검색 결과를 얻는 검색 방법을 제공함에 있다.
한편, 본 발명의 다른 목적은 검색 결과를 복호화할 수 있는 복호화 방법을 제공함에 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 바람직한 실시양태에 따른 범위 검색을 위한 복호화가능 인덱스 생성 방법은, 인덱스 생성부가, 평문이 포함된 구간에 대한 정보와 비밀키를 입력으로 하여 일방향 함수를 통해 태그를 생성하는 단계; 및 상기 인덱스 생성부가, 상기 평문이 포함된 구간을 복수의 부분 구간으로 분할하고 상기 평문이 포함된 부분 구간의 정보를 상기 태그를 이용하여 암호화하여 암호화된 인덱스를 생성하는 단계;를 포함한다.
이때, 상기 태그를 생성하는 단계는, 사전 준비부에서 사전 준비된 비밀키 및 상기 일방향 함수를 입력받는 단계; 및 상기 평문이 포함된 구간에 대하여 상기 비밀키 및 상기 일방향 함수를 이용하여 상기 태그를 계산하는 단계;를 포함할 수 있다.
이때, 상기 암호화된 인덱스를 생성하는 단계는, 상기 평문이 포함된 구간을 상기 복수의 부분 구간으로 분할하는 단계; 상기 복수의 부분 구간 중에서 상기 평문이 포함된 부분 구간을 검출하는 단계; 및 상기 평문이 포함된 부분 구간에 대한 정보를 상기 태그를 사용하여 상기 암호화된 인덱스를 생성하는 단계;를 포함할 수 있다.
이때, 상기 복수의 부분 구간으로 분할하는 단계는 구간 분할 비율을 임의로 조정가능하다.
이때, 상기 암호화된 인덱스를 생성하는 단계는 상기 평문의 비트 길이만큼 반복된다.
이때, 상기 암호화된 인덱스로부터 범위 검색 및 복호화 작업이 가능하다.
이때, 상기 암호화된 인덱스를 생성하는 단계는, 상기 평문의 비트 길이만큼 반복 수행을 완료하지 않고, 상기 평문의 비트 길이에 비해 짧은 검색 인덱스를 생성하고, 별도의 암호화된 데이터를 제공할 수 있다.
이때, 상기 태그를 생성하는 단계는, 상기 태그를 1-bit 이상의 크기로 생성할 수 있다.
이때, 상기 암호화된 인덱스는 사용자가 관리하지 않는 다른 컴퓨터, 데이터베이스 서버, 저장장치중의 어느 하나로 전송되어 저장될 수 있다.
한편, 본 발명의 바람직한 실시양태에 따른 검색 방법은, 검색부가, 암호화된 인덱스를 수신하여 저장하는 단계; 상기 검색부가, 상기 암호화된 인덱스의 생성에 사용된 비밀키와 일방향 함수를 사용하여 원하는 범위 검색 구간으로부터 생성된 트랩도어를 수신하는 단계; 및 상기 검색부가, 상기 트랩도어와 상기 암호화된 인덱스를 비교하여 검색을 수행하는 단계;를 포함한다.
이때, 상기 트랩도어는, 전체 평문 공간에서 시작하여 상기 전체 평문 공간을 구간 분할해 가며 태그를 생성하되 분할된 공간이 상기 범위 검색 구간과 동일할 때까지 수행되어 생성된 상기 태그를 바탕으로 생성될 수 있다.
이때, 상기 검색을 수행하는 단계는, 상기 트랩도어와 상기 암호화된 인덱스를 비교하여 상위 비트열이 상기 트랩도어와 동일한 인덱스를 검색 결과로 제공할 수 있다.
이때, 상기 검색을 수행하는 단계는, 사용자가 관리하지 않는 다른 컴퓨터, 데이터베이스 서버, 저장장치중의 어느 하나에 의해서 수행될 수 있다.
한편, 본 발명의 바람직한 실시양태에 따른 복호화 방법은, 복호화부가, 암호화된 인덱스를 수신하는 단계; 상기 복호화부가, 상기 암호화된 인덱스의 생성에 사용된 비밀키와 일방향 함수를 사용하여 각 평문 구간에 대한 태그를 생성하는 단계; 및 상기 복호화부가, 상기 암호화된 인덱스와 상기 태그를 비교하여 평문이 포함된 부분 구간을 특정하여 상기 평문을 복원하는 단계;를 포함한다.
이때, 상기 복원하는 단계는, 상기 암호화된 인덱스 및 상기 일방향 함수에서 생성된 정보를 바탕으로 평문 구간을 분할하고 분할된 구간에서 평문의 위치를 추정하는 과정을 반복적으로 사용하여 평문 정보로 복원할 수 있다.
이때, 상기 복원하는 단계는, 상기 평문 구간을 분할함에 있어서 상기 평문의 비트 길이만큼 반복하여 구간 분할을 행할 수 있다.
이러한 구성의 본 발명에 따르면, 데이터를 암호화할 때 향후 범위 검색을 위한 인덱스를 생성하고 검색하고자 하는 범위에 대응하는 트랩도어를 생성한 후에 검색을 위한 인덱스와 트랩도어를 이용하여 원하는 데이터를 검색하여 검색결과를 사용자에게 제공하고 사용자측에서 복호화할 수 있으므로, 암호화된 데이터에 대한 효율적인 범위 검색을 가능하게 한다.
또한, 기존의 범위 검색이 가능한 검색 가능 암호화 기법과 다르게 인덱스 자체로 복호화가 가능하다.
도 1은 본 발명의 실시예에 따른 인덱스 생성 장치와 검색 장치 및 복호화 장치를 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른 인덱스 생성 방법과 검색 방법 및 복호화 방법을 설명하기 위한 순서도이다.
도 3은 도 2에 도시된 인덱스 생성 단계를 상세히 설명하는 순서도이다.
도 2는 본 발명의 실시예에 따른 인덱스 생성 방법과 검색 방법 및 복호화 방법을 설명하기 위한 순서도이다.
도 3은 도 2에 도시된 인덱스 생성 단계를 상세히 설명하는 순서도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예에 따른 인덱스 생성 장치와 검색 장치 및 복호화 장치를 설명하기 위한 도면이다.
도 1에서, 사용자 단말(10)의 사전 준비부(12) 및 인덱스 생성부(14)는 본 발명의 실시예에 따른 인덱스 생성 장치를 구현하는데 필요한 구성요소들이다.
그리고, 도 1에서, 서버(20)의 검색부(22)는 검색 장치가 될 수 있다. 검색부(22)는 검색을 위해 사용자 단말(10)내의 트랩도어 생성부(16)로부터의 트랩도어를 인가받는다.
한편, 도 1에서, 사용자 단말(10)의 복호화부(18)는 복호화 장치가 될 수 있다.
이하의 설명에서는 사용자가 서버(20)에 저장하는 자료의 수를 N으로 정의하고, 각각의 자료에 포함된 키워드를 1에서 R사이의 정수 값(모든 키워드는 결국 일정한 길이를 지닌 비트 스트링(bit string)으로 생각할 수 있기 때문임)으로 정의한다. 편의상, 특정 정수 d에 대해서 R = 2d를 만족한다고 가정한다.
도 1에서, 사전 준비부(12)는 해당 사용자 단말(10)에서 필요로 하는 비밀키 및 일방향 함수를 준비한다. 다시 말해서, 사전 준비부(12)는 사용자의 λ-bit 비밀키 k 및 암호학적으로 안전한 일방향 함수 f : {0,1}λ × {0,1}d × {0,1}d → {0,1}를 결정한다. 그리고, 사전 준비부(12)는 비밀키 k 및 일방향 함수 f를 사용자 단말(10)의 비밀 정보로 저장한다.
인덱스 생성부(14)는 데이터를 암호화할 때 향후 범위 검색을 위한 암호화된 인덱스를 생성한다. 다시 말해서, 인덱스 생성부(14)는 주어진 전체 평문 구간에 대해서 사전 준비부(12)의 비밀키와 암호학적 일방향 함수 f를 사용하여 1-비트의 태크를 계산한 후, 주어진 전체 평문 구간을 크기가 동일한 두 개의 부분 구간으로 분할하고, 두 개의 부분 구간 중에서 평문 m이 포함된 부분 구간의 위치에 따라 암호화된 인덱스(1-bit)를 생성하고, 사전 준비부(12)의 비밀키와 암호학적 일방향 함수 f를 사용하여 태그 생성 과정과 암호화된 인덱스 생성 과정을 다시 반복한다.
즉, 인덱스 생성부(14)는 주어진 평문 구간에 대해서 암호학적 일방향 함수 f를 사용하여 1-bit의 태그를 생성하고, 주어진 평문 구간을 두 개의 부분 구간으로 분할하여 평문 m이 포함되는 위치에 따라 상기 태그를 사용하여 1-bit 정도의 암호화된 인덱스를 생성하는 과정을 전체 평문 공간에서 시작하여 평문 m만을 포함하는 부분 공간까지 반복한다. 이와 같이 생성되는 암호화된 인덱스는 범위 검색을 위한 인덱스와 암호문의 역할을 동시에 수행할 수 있다.
인덱스 생성부(14)는 최종적으로 생성된 암호화된 인덱스를 서버(20)에게로 전송하고, 서버(20)는 수신한 암호화된 인덱스를 저장한다.
한편, 인덱스 생성부(14)는 구간 분할 비율을 임의로 조정할 수 있다.
또한, 인덱스 생성부(14)는 부분 구간 분할을 평문의 비트 길이만큼 반복하지 않고 짧은 인덱스를 생성할 수 있다. 이 경우, 인덱스 생성부(14)는 인덱스 길이를 조정하여 짧은 검색 인덱스를 생성하는 대신 복호화를 위해 별도의 암호화된 데이터를 서버(20)에게로 제공할 수 있다.
본 발명의 실시예에서는 인덱스 생성부(14)에 의해 생성된 암호화된 인덱스는 서버(20)(데이터베이스 서버라고 할 수 있음)의 검색부(22)에게로 전송되어 저장되는 것으로 하였으나, 사용자(데이터 소유자)가 관리하지 않는 다른 컴퓨터 또는 저장장치(예컨대, USB 등) 등으로 전송되어 저장될 수도 있다.
트랩도어 생성부(16)는 검색하고자 하는 범위에 대응하는 트랩도어(trapdoor)를 생성한다. 즉, 트랩도어 생성부(16)는 사용자가 원하는 검색 구간으로부터 검색을 위한 트랩도어를 생성한다.
트랩도어 생성부(16)는 사전 준비부(12)의 비밀키와 암호학적 일방향 함수 f를 사용하여 평문 전체 공간에서부터 태그 생성 과정을 수행한다, 단, 이때에는 분할된 부분 공간 중 원하는 검색 구간이 포함되어 있는 부분 구간을 선택한다. 한 번의 분할 과정마다 1-bit의 태그가 생성되며, 이 과정을 반복하여 원하는 검색 구간까지의 태그를 생성하고, 모든 태그를 연접하여 트랩도어를 구성한다. 트랩도어 생성부(16)는 생성한 트랩도어를 서버(20)에게 제공한다.
서버(20)는 검색부(22)를 포함한다. 검색부(22)는 트랩도어 생성부(16)로부터 트랩도어(예컨대, t-bit의 트랩도어)를 수신하면 저장된 데이터(즉, 암호화된 인덱스) 중에서 상위 t-bit의 트랩도어와 일치하는 데이터(즉, 인덱스(암호문))를 추출하여 검색 결과로서 사용자 단말(10)에게 제공한다. 즉, 서버(20)의 검색부(22)는 저장된 데이터 중에서 트랩도어 생성부(16)로부터의 트랩도어를 근거로 사용자가 원하는 데이터를 검색해 낼 수 있다.
본 발명의 실시예에서는 검색부(22)가 서버(20)(데이터베이스 서버라고 할 수 있음)에 포함되는 것으로 하였는데, 상기 검색부(22)가 사용자가 관리하지 않는 다른 컴퓨터, 저장장치중의 어느 하나에 포함되어 다른 컴퓨터 또는 저장장치에 의해 상술한 검색부(22)의 기능이 수행될 수 있게 하여도 무방하다.
도 1에서, 복호화부(18)는 서버(20)로부터의 검색 결과(즉, 인덱스(암호문))를 복호화하여 평문을 출력한다. 즉, 복호화부(18)는 서버(20)로부터의 검색 결과(즉, 인덱스(암호문))의 상위 비트부터 사전 준비부(12)의 비밀키와 암호학적 일방향 함수 f를 사용하여 생성한 태그를 1-bit씩 비교하여 원하는 평문이 포함된 부분 구간 위치를 특정할 수 있으며, 이 과정을 평문의 비트 길이(bit-length)만큼 반복함으로써, 최종적으로 하나의 평문을 특정할 수 있어 복호화가 가능하다.
도 2는 본 발명의 실시예에 따른 인덱스 생성 방법과 검색 방법 및 복호화 방법을 설명하기 위한 순서도이고, 도 3은 도 2에 도시된 인덱스 생성 단계를 상세히 설명하는 순서도이다.
후술할 설명 중에서, 사전 준비 단계(S10) ~ 인덱스 생성 단계(S20)의 과정이 본 발명의 실시예에 따른 인덱스 생성 방법에 대한 설명이라고 할 수 있고, 트랩도어 생성단계(S30) ~ 검색 단계(S40)의 과정을 본 발명의 실시예에 따른 검색 방법에 대한 설명이라고 할 수 있고, 사전 준비 단계(S10) ~ 복호화 단계(S50)의 과정이 본 발명의 실시예에 따른 복호화 방법에 대한 설명이라고 할 수 있다.
먼저, 사전 준비 단계(S10)에서, 사전 준비부(12)는 해당 사용자의 λ-bit 비밀키 k와 암호학적으로 안전한 일방향 함수 f : {0,1}λ × {0,1}d × {0,1}d → {0,1}를 결정하고, 결정된 비밀키 k 및 암호학적으로 안전한 일방향 함수 f를 비밀 정보로 저장한다.
이어, 인덱스 생성 단계(S20)에서, 인덱스 생성부(14)는 데이터를 암호화할 때 향후 범위 검색을 위해 사용될 암호화된 인덱스를 생성한다. 여기서, 인덱스 생성부(14)에서의 암호화된 인덱스 생성 과정은 하기의 번호 순서대로 행해진다고 볼 수 있다.
1. 전체 평문 공간 [1,R]에 대한 태그 c1’ = f(k, 1, R)를 계산한다.
2. 전체 평문 공간 [1, R]은 크기가 동일한 두 부분 공간인 [1,R/2], [R/2 + 1, R]으로 분할할 수 있는데, 그 두 개의 부분 공간중에서 평문 m이 포함되는 부분 공간을 선택한다.
3. 위의 단계에서 평문 m이 포함된 부분 공간이 [1, R/2]라면 c1 = c1’ 으로 정의할 수 있고, 평문 m이 [R/2 +1, R]에 포함된다면 c1 = c1’ +1 (mod 2)로 정의할 수 있다.
4. 위의 단계에서처럼, 평문 m이 포함된 공간을 [a,b]라 가정하고(도 3에서, S21), 다음과 같은 과정을 반복한다(i = 1, 2, …, d).
1) 공간 [a,b]에 대한 태그 ci’ = f(k, a, b)를 계산한다(도 3에서, S22)
2) 공간 [a, b]를 두 개의 부분 공간 [a, (b+a-1)/2], [(b+a-1)/2 + 1, b]으로 분할한다(도 3에서, S23). 이후, 평문 m이 [a, (b+a-1)/2]에 포함된다면 ci = ci’으로 정의하고, 평문 m이 [(b+a-1)/2 + 1, b]에 포함된다면 ci = ci’ + 1(mod 2)로 정의한다(도 3에서, S24 ~ S26).
3) 평문 m이 포함된 부분 공간을 가지고 반복한다.
5. 상술한 바와 같은 과정을 통해 최종적으로 생성되는 암호화된 인덱스는 c1 || c2 || c3 || … || cd 로 구성된다(도 3에서, S27). 이와 같이 생성된 암호화된 인덱스는 그 자체가 암호문이 되어 서버(20)에게로 전송된다.
그리고, 트랩도어 생성 단계(S30)에서, 트랩도어 생성부(16)는 검색하고자 하는 범위에 대응하는 트랩도어를 생성한다. 트랩도어 생성 과정은 하기의 번호 순서대로 행해진다고 볼 수 있다.
1. 사용자가 검색할 구간 [x,y]이 주어졌다고 가정한다. 단, 여기에서는 편의상 검색 구간 [x,y] = [α(2δ)+1, (α+1)(2δ)] 이라고 가정한다(δ = 0, 1, …, d-1), (α = 0, 1, …, 2d-δ-1).
2. 초기 검색 구간 [1,R]에 대한 태그 c1’ = f(k, 1, R)를 계산하고, 초기 검색 구간 [1,R]을 분할한 부분 구간 [1,R/2], [R/2 + 1, R] 중에서 검색하고자 하는 구간 [x,y]이 포함된 부분 구간을 선택한다.
3. 만약, 구간 [x,y]이 [1,R/2]에 포함된다면, c1 = c1’으로 정의할 수 있고, 구간 [x,y]이 [R/2 + 1, b]에 포함된다면 c1 = c1’ + 1(mod 2)로 정의할 수 있다.
4. 위와 같이 부분 구간 [1, R/2]와 [R/2+1,R] 중에서 [x,y]가 포함된 부분 구간을 [a,b]로 정의하고 다음 과정을 반복한다(i = 1, …, d-δ).
1) 구간 [a,b]에 대한 태그 ci’ = f(k, a, b)를 계산하고, 구간 [a,b]을 분할한 부분 구간 [a,(a+b-1)/2], [(a+b-1)/2 + 1, b] 중에서 검색하고자 하는 구간 [x,y]가 포함된 구간을 선택한다.
2) 구간 [x,y]이 [a, (a+b-1)/2]에 포함된다면 ci = ci’로 정의하고, 구간 [x,y]이 [(a+b-1)/2 + 1, b]에 포함된다면 ci = ci’ + 1(mod 2)로 정의한다.
3) 구간 [x,y]이 포함된 부분 공간을 가지고 반복한다.
5. 상술한 바와 같은 과정을 통해 최종적으로 생성되는 트랩도어는 c1 || c2 || c3 || … || cd -δ 로 구성된다. 즉, 트랩도어 생성부(16)는 주어진 구간에 대한 1비트의 태그를 일정길이만큼 추출해 낸다고 볼 수 있다. 다시 말해서, 트랩도어는 검색 구간에 대한 1비트의 태그의 집합이라고 할 수 있다.
이와 같이 최종적으로 생성되는 트랩도어는 사용자가 원하는 검색 구간으로부터 검색을 위해 서버(20)의 검색부(22)에게로 전송된다. 그에 따라, 임의의 검색 구간은 상기 조건을 만족하는 특정 검색 구간으로 분할하여 검색을 수행할 것이다.
이후, 검색 단계(S40)에서, 서버(20)의 검색부(22)는 트랩도어 생성부(16)로부터 트랩도어(편의상 t-bit라 가정)를 수신하게 되면 저장된 인덱스 중에서 상위 t-bit가 주어진 트랩도어와 일치하는 인덱스를 검색 결과로서 해당 사용자의 단말(10)에게로 제공한다.
마지막으로, 복호화 단계(S50)에서, 사용자 단말(10)의 복호화부(18)는 복호화를 수행한다. 복호화 과정은 하기의 번호 순서대로 행해진다고 볼 수 있다.
1. 주어진 검색 결과(암호문)가 c1 || c2 || c3 || … || cd라 가정한다.
2.초기 평문 구간을 [1, R]로 설정하고, 태그 c1’ = f(k, 1, R)를 계산한다.
3. 초기 평문 구간을 두 개의 부분 구간 [1,R/2]과 [R/2+1, R]으로 분할하고, 주어진 암호문 중에서 첫번째 비트인 c1과 c1’를 비교하여, c1= c1’을 만족하면 평문은 [1, R/2]에 포함됨을 의미하고, 반대로 c1 ≠ c1’를 만족하면 평문은 [R/2+1, R]에 포함됨을 의미한다. 따라서, 비교 결과에 따라 [a,b]를 [1, R/2] 또는 [R/2+1, R]로 설정할 수 있다.
4. 그에 따라 다음 과정을 반복한다(i=1, 2, …, d).
1) [a,b]에 대한 태그 ci’ = f(k, a, b)를 계산한다.
2) ci과 ci’를 비교하여, ci= ci’를 만족하면 [a, (a+b-1)/2]에 대해서 다시 반복한다.
3) 반대로, c1 ≠ c1’를 만족하면 [(a+b-1)/2+1, b]에 대해서 다시 반복한다.
5. d번의 과정을 거치게 되면 [a,b] 구간에는 하나의 정수만 포함되며 그 값이 복호화 결과가 된다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 사용자 단말
12 : 사전 준비부
14 : 인덱스 생성부 16 : 트랩도어 생성부
18 : 복호화부 20 : 서버
22 : 검색부
14 : 인덱스 생성부 16 : 트랩도어 생성부
18 : 복호화부 20 : 서버
22 : 검색부
Claims (16)
- 인덱스 생성부가, 평문이 포함된 구간에 대한 정보와 비밀키를 입력으로 하여 일방향 함수를 통해 태그를 생성하는 단계; 및
상기 인덱스 생성부가, 상기 평문이 포함된 구간을 복수의 부분 구간으로 분할하고 상기 평문이 포함된 부분 구간의 정보를 상기 태그를 이용하여 암호화하여 암호화된 인덱스를 생성하는 단계;를 포함하는 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 1에 있어서,
상기 태그를 생성하는 단계는,
사전 준비부에서 사전 준비된 비밀키 및 상기 일방향 함수를 입력받는 단계; 및
상기 평문이 포함된 구간에 대하여 상기 비밀키 및 상기 일방향 함수를 이용하여 상기 태그를 계산하는 단계;를 포함하는 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 1에 있어서,
상기 암호화된 인덱스를 생성하는 단계는,
상기 평문이 포함된 구간을 상기 복수의 부분 구간으로 분할하는 단계;
상기 복수의 부분 구간 중에서 상기 평문이 포함된 부분 구간을 검출하는 단계; 및
상기 평문이 포함된 부분 구간에 대한 정보를 상기 태그를 사용하여 상기 암호화된 인덱스를 생성하는 단계;를 포함하는 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 3에 있어서,
상기 복수의 부분 구간으로 분할하는 단계는 구간 분할 비율을 임의로 조정가능한 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 1에 있어서,
상기 암호화된 인덱스를 생성하는 단계는 상기 평문의 비트 길이만큼 반복되는 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 1에 있어서,
상기 암호화된 인덱스로부터 범위 검색 및 복호화 작업이 가능한 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 1에 있어서,
상기 암호화된 인덱스를 생성하는 단계는, 상기 평문의 비트 길이만큼 반복 수행을 완료하지 않고, 상기 평문의 비트 길이에 비해 짧은 검색 인덱스를 생성하고, 별도의 암호화된 데이터를 제공하는 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 1에 있어서,
상기 태그를 생성하는 단계는, 상기 태그를 1-bit 이상의 크기로 생성하는 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 청구항 1에 있어서,
상기 암호화된 인덱스는 사용자가 관리하지 않는 다른 컴퓨터, 데이터베이스 서버, 저장장치중의 어느 하나로 전송되어 저장되는 것을 특징으로 하는 범위 검색을 위한 복호화가능 인덱스 생성 방법. - 검색부가, 암호화된 인덱스를 수신하여 저장하는 단계;
상기 검색부가, 상기 암호화된 인덱스의 생성에 사용된 비밀키와 일방향 함수를 사용하여 원하는 범위 검색 구간으로부터 생성된 트랩도어를 수신하는 단계; 및
상기 검색부가, 상기 트랩도어와 상기 암호화된 인덱스를 비교하여 검색을 수행하는 단계;를 포함하는 것을 특징으로 하는 검색 방법. - 청구항 10에 있어서,
상기 트랩도어는, 전체 평문 공간에서 시작하여 상기 전체 평문 공간을 구간 분할해 가며 태그를 생성하되 분할된 공간이 상기 범위 검색 구간과 동일할 때까지 수행되어 생성된 상기 태그를 바탕으로 생성되는 것을 특징으로 하는 검색 방법. - 청구항 10에 있어서,
상기 검색을 수행하는 단계는, 상기 트랩도어와 상기 암호화된 인덱스를 비교하여 상위 비트열이 상기 트랩도어와 동일한 인덱스를 검색 결과로 제공하는 것을 특징으로 하는 검색 방법. - 청구항 10에 있어서,
상기 검색을 수행하는 단계는, 사용자가 관리하지 않는 다른 컴퓨터, 데이터베이스 서버, 저장장치중의 어느 하나에 의해서 수행되는 것을 특징으로 하는 검색 방법. - 복호화부가, 암호화된 인덱스를 수신하는 단계;
상기 복호화부가, 상기 암호화된 인덱스의 생성에 사용된 비밀키와 일방향 함수를 사용하여 각 평문 구간에 대한 태그를 생성하는 단계; 및
상기 복호화부가, 상기 암호화된 인덱스와 상기 태그를 비교하여 평문이 포함된 부분 구간을 특정하여 상기 평문을 복원하는 단계;를 포함하는 것을 특징으로 하는 복호화 방법. - 청구항 14에 있어서,
상기 복원하는 단계는, 상기 암호화된 인덱스 및 상기 일방향 함수에서 생성된 정보를 바탕으로 평문 구간을 분할하고 분할된 구간에서 평문의 위치를 추정하는 과정을 반복적으로 사용하여 평문 정보로 복원하는 것을 특징으로 하는 복호화 방법. - 청구항 15에 있어서,
상기 복원하는 단계는, 상기 평문 구간을 분할함에 있어서 상기 평문의 비트 길이만큼 반복하여 구간 분할을 행하는 것을 특징으로 하는 복호화 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140031371A KR20150108516A (ko) | 2014-03-18 | 2014-03-18 | 범위 검색을 위한 복호화가능 인덱스 생성 방법, 검색 방법, 및 복호화 방법 |
US14/662,126 US20150270958A1 (en) | 2014-03-18 | 2015-03-18 | Decryptable index generation method for range search, search method, and decryption method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140031371A KR20150108516A (ko) | 2014-03-18 | 2014-03-18 | 범위 검색을 위한 복호화가능 인덱스 생성 방법, 검색 방법, 및 복호화 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150108516A true KR20150108516A (ko) | 2015-09-30 |
Family
ID=54143086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140031371A KR20150108516A (ko) | 2014-03-18 | 2014-03-18 | 범위 검색을 위한 복호화가능 인덱스 생성 방법, 검색 방법, 및 복호화 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150270958A1 (ko) |
KR (1) | KR20150108516A (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10929357B2 (en) * | 2016-02-29 | 2021-02-23 | Red Hat, Inc. | Detecting stale storage layouts without using client locks |
JP6494893B2 (ja) * | 2017-01-12 | 2019-04-03 | 三菱電機株式会社 | 暗号化タグ生成装置、検索クエリ生成装置及び秘匿検索システム |
EP3657475B1 (en) * | 2017-09-12 | 2021-08-25 | Mitsubishi Electric Corporation | Data processing apparatus, data processing method, and data processing program |
CN108039944B (zh) * | 2017-12-15 | 2020-09-01 | 复旦大学 | 具有前向安全性的揭序加密框架算法 |
CN108319659B (zh) * | 2018-01-08 | 2021-09-07 | 暨南大学 | 一种基于加密图像快速搜索的社交发现方法 |
CN108390855A (zh) * | 2018-01-11 | 2018-08-10 | 中国人民解放军战略支援部队信息工程大学 | 一种面向云存储的属性基关键词搜索加密系统及方法 |
US11893127B2 (en) * | 2018-12-21 | 2024-02-06 | Acronis International Gmbh | System and method for indexing and searching encrypted archives |
CN110378132A (zh) * | 2019-06-20 | 2019-10-25 | 深圳市掌握时代互联网应用科技有限公司 | 一种基于logistic混沌映射的探宝用户真实信息加密系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101302137B1 (ko) * | 2009-12-16 | 2013-09-16 | 한국전자통신연구원 | 대칭 키 기반 검색 가능 암호 방법 |
KR20120068524A (ko) * | 2010-12-17 | 2012-06-27 | 한국전자통신연구원 | 데이터 관리 장치 및 데이터 관리 방법 |
EP2738689A4 (en) * | 2011-07-29 | 2015-04-29 | Nec Corp | SYSTEM FOR GENERATING A DISPLAY OF INFORMATION RESISTANT INDEX, INDEX GENERATING DEVICE AND METHOD THEREFOR |
WO2013161586A1 (ja) * | 2012-04-24 | 2013-10-31 | 日本電気株式会社 | 暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム |
-
2014
- 2014-03-18 KR KR1020140031371A patent/KR20150108516A/ko not_active Application Discontinuation
-
2015
- 2015-03-18 US US14/662,126 patent/US20150270958A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20150270958A1 (en) | 2015-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20150108516A (ko) | 범위 검색을 위한 복호화가능 인덱스 생성 방법, 검색 방법, 및 복호화 방법 | |
CN111199053B (zh) | 用于对加密数据进行多字符通配符搜索的系统和方法 | |
US9021259B2 (en) | Encrypted database system, client terminal, encrypted database server, natural joining method, and program | |
JP6934963B2 (ja) | データを暗号化する方法およびシステム | |
US10341086B2 (en) | Method and system for providing encrypted data for searching of information therein and a method and system for searching of information on encrypted data | |
KR102219476B1 (ko) | 데이터를 암호화하는 방법 및 그를 위한 장치 | |
US9147079B2 (en) | Encrypted database system, client terminal, encrypted database server, natural joining method, and program | |
US10038562B2 (en) | Method and system for providing encrypted data for searching of information therein and a method and system for searching of information on encrypted data | |
US9037846B2 (en) | Encoded database management system, client and server, natural joining method and program | |
US20160013933A1 (en) | Order-preserving encryption system, device, method, and program | |
KR101727312B1 (ko) | 순서 보존 암호화 및 복호화 장치와 그 방법 | |
CN104717056A (zh) | 一种二维码加密、解密方法及加密、解密装置 | |
CN108416037B (zh) | 云环境中基于两级索引的中心关键词密文搜索方法 | |
JP6632780B2 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
CN112866227A (zh) | 一种文件授权保护方法和系统 | |
KR20150122494A (ko) | 암호화 장치, 암호화 방법, 복호화 방법 및 컴퓨터 판독가능 기록매체 | |
WO2019225735A1 (ja) | データ処理装置、方法及びコンピュータプログラム | |
KR20110057369A (ko) | 데이터 암호화 장치 및 그 방법 | |
KR100919824B1 (ko) | 데이터 암호화 장치와 이를 이용한 암호화 방법 | |
CN111651774B (zh) | 一种将生成概率模型转化为编码器的通用方法及加密方法 | |
Zhang et al. | Enhanced‐Bivium Algorithm for RFID System | |
KR101315683B1 (ko) | 데이터 사이즈 및 형태 변경이 없는 암호화 인코딩 및 복호화 인코딩 방법 | |
KR101297322B1 (ko) | 가독 대칭형 복호화 방법 | |
KR100924796B1 (ko) | 베타 전개를 이용한 순서 보존 수치 데이타 암호화 시스템및 방법 | |
Lu et al. | Secure Cloud Storage and Quick Keyword Based Retrieval System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |