KR20170122048A - 블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법 - Google Patents
블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법 Download PDFInfo
- Publication number
- KR20170122048A KR20170122048A KR1020160051127A KR20160051127A KR20170122048A KR 20170122048 A KR20170122048 A KR 20170122048A KR 1020160051127 A KR1020160051127 A KR 1020160051127A KR 20160051127 A KR20160051127 A KR 20160051127A KR 20170122048 A KR20170122048 A KR 20170122048A
- Authority
- KR
- South Korea
- Prior art keywords
- binary tree
- data
- level
- node
- user terminal
- 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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- 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
- G06F16/2246—Trees, e.g. B+trees
-
- 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
- G06F16/2272—Management thereof
-
- 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
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- 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)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법이 개시된다.
검색 인덱스 생성 방법은 암호 데이터의 개수 및 상기 암호 데이터에 포함된 키워드들의 개수에 따라 이진 트리의 레벨을 결정하는 단계; 상기 이진 트리의 레벨별로 서로 다른 해시 함수들을 할당하는 단계; 상기 이진 트리의 최하위 레벨에 대응하는 리프 노드들마다 서로 다른 암호 데이터를 할당하는 단계; 상기 이진 트리의 각 레벨에 할당된 해시 함수와 상기 암호 데이터에 포함된 키워드 및 암호 데이터가 할당된 리프 노드의 식별 정보를 사용하여 상기 이진 트리의 루트 노드에서 상기 리프 노드까지의 경로에 포함된 중간 노드들 각각에 대응하는 블룸 필터들을 생성하는 단계: 및 상기 암호 데이터를 검색하기 위한 이진 트리 구조의 검색 인덱스의 루트 노드, 리프 노드 및 중간 노드들 각각에 상기 블룸 필터들을 추가하는 단계를 포함할 수 있다.
검색 인덱스 생성 방법은 암호 데이터의 개수 및 상기 암호 데이터에 포함된 키워드들의 개수에 따라 이진 트리의 레벨을 결정하는 단계; 상기 이진 트리의 레벨별로 서로 다른 해시 함수들을 할당하는 단계; 상기 이진 트리의 최하위 레벨에 대응하는 리프 노드들마다 서로 다른 암호 데이터를 할당하는 단계; 상기 이진 트리의 각 레벨에 할당된 해시 함수와 상기 암호 데이터에 포함된 키워드 및 암호 데이터가 할당된 리프 노드의 식별 정보를 사용하여 상기 이진 트리의 루트 노드에서 상기 리프 노드까지의 경로에 포함된 중간 노드들 각각에 대응하는 블룸 필터들을 생성하는 단계: 및 상기 암호 데이터를 검색하기 위한 이진 트리 구조의 검색 인덱스의 루트 노드, 리프 노드 및 중간 노드들 각각에 상기 블룸 필터들을 추가하는 단계를 포함할 수 있다.
Description
본 발명은 클라우드 스토리지와 같은 외부 데이터 저장 공간을 활용한 서비스가 널리 확산되면서 요구되는 데이터의 기밀성과 활용성을 동시에 제공하기 위한 암호 데이터 검색 기술에 관한 것이다.
암호 데이터 검색 기술은 데이터가 암호화된 상태에서 데이터를 복호화하지 않고 사용자가 원하는 데이터를 검색할 수 있도록 하는 데이터 암호화 기술이다.
암호 데이터 검색 기술은 2000년대 초반 최초로 제안되었으며, 2004년, Boneh등이 검색 가능 암호화 기술에 대한 안전성 모델을 최초로 제시하면서 암호학적 안전성에 대한 체계적인 연구가 시작되었다. 이후 다양한 연구를 통해 이론적으로 완벽한 안전성을 제공하는 기술을 설계하는 방향으로 연구가 진행되었는데, 이를 위해서 강한 안전성 제공이 용이한 공개키 암호 기반의 암호 데이터 검색 기법이 다수 연구 되었다.
그러나, 공개키 방식의 검색 가능 암호화 기술은 각각의 암호 데이터 마다 추가적인 검색 태그를 제공하는 방식이기 때문에 소수의 데이터를 검색하는 경우라도 전체 태그에 대한 검색 연산이 요구되어 비현실적인 검색 시간이 소요되어 현실적인 데이터 저장 환경에 적용하기 어렵다.
이러한 이유로 이론적인 안전성 보다는 검색 효율성이 강조된 대칭키 기반 암호 기술을 사용한 검색 가능 암호화 기술을 제공하는 연구가 최근 진행되고 있다.
특히, 2006년 Curtmola등이 linked chain 구조를 이용한 설계를 통해 전체 저장된 데이터의 양과 무관한 검색 시간을 제공하는 암호 데이터 검색 기법을 제안한 이 후 유사한 구조를 이용한 기법 설계가 활발히 진행되었다.
하지만, linked chain등과 같이 데이터 사이의 연관성을 바탕으로 검색 태그를 구성하는 방식은 새로운 데이터를 추가하거나 또는 기존 데이터 중 일부를 삭제하는 경우 데이터 사이의 연관성이 변경 되어 이러한 변경 내용을 검색 태그에 적용시키는 것에 많은 노력이 요구된다는 단점이 존재한다.
본 발명은 현실적인 데이터 저장 환경에서의 효율적인 데이터 검색을 위해 검색 효율성을 강화한 대칭키 기반의 기술을 바탕으로 암호 데이터의 추가 및 삭제가 자유로운 동적 검색 가능 암호화 기술을 제공하는 것을 목적으로 한다.
본 발명의 일실시예에 따른 검색 인덱스 생성 방법은 데이터의 개수 및 상기 데이터에 포함된 키워드들의 개수에 따라 이진 트리의 레벨을 결정하는 단계; 상기 이진 트리의 레벨별로 서로 다른 해시 함수들을 할당하는 단계; 상기 이진 트리의 최하위 레벨에 대응하는 리프 노드들마다 서로 다른 암호 데이터를 할당하는 단계; 상기 이진 트리의 레벨별로 할당된 해시 함수들과 상기 암호 데이터에 포함된 키워드 및 암호 데이터가 할당된 리프 노드의 식별 정보를 사용하여 상기 이진 트리의 루트 노드에서 상기 리프 노드까지의 경로에 포함된 중간 노드들 각각에 대응하는 블룸 필터들을 생성하는 단계: 및 상기 암호 데이터들과 상기 블룸 필터들을 서버로 전송하는 단계를 포함하고, 상기 서버는, 상기 이진 트리의 레벨에 따라 이진 트리 구조의 검색 인덱스를 설정하여 초기화하고, 수신한 블룸 필터들을 이진 트리 구조의 검색 인덱스의 해당 노드에 추가하며, 상기 암호 데이터의 식별 정보를 리프 노드에 할당할 수 있다.
본 발명의 일실시예에 따른 검색 인덱스 생성 방법은 상기 이진 트리의 레벨별로 할당된 해시 함수들 중 일부를 비밀 정보로 설정하여 사용자 단말에 저장하고, 비밀 정보로 설정되지 않은 해시 함수들을 공개 정보로 설정하여 서버에 저장하는 단계를 더 포함할 수 있다.
본 발명의 일실시예에 따른 암호 데이터 검색 방법은 사용자가 검색할 키워드와 자신이 저장하고 있는 비밀 정보로부터 도출된 추가정보(trapdoor)를 생성하고 서버에 전송하는 단계; 서버가 이진 트리 형태의 검색 인덱스의 루트 노드에 할당된 블룸 필터와 전송된 추가정보를 이용하여 사용자가 검색하고자 하는 암호 데이터가 포함되었는지 여부를 확인하는 단계; 서버가 사용자로부터 제공받은 추가정보와 서버가 저장하고 있는 공개 정보를 활용하여 하위 노드에 해당하는 추가정보를 계산하는 단계; 검색하고자 하는 데이터가 포함된 것으로 확인된 노드의 경우, 그 하위 노드에 대해 서버가 검색 키워드 포함 여부를 순차적으로 확인하는 단계; 최종적으로 서버가 이진 트리 형태의 검색 인덱스의 리프 노드 중 상기 검색하고자 하는 데이터가 포함된 리프 노드를 확인하는 단계; 및 서버가 상기 리프 노드에 해당하는 암호 데이터를 추출하여 사용자에 전송하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 암호 데이터 검색 방법의 리프 노드를 확인하는 단계는, 상기 이진 트리 구조의 검색 인덱스의 중간 노드에 할당된 블룸 필터에 대해 상기 추가정보가 포함되어 있는지 여부를 확인하는 단계; 상기 추가정보가 포함된 것으로 판단된 경우, 해당 추가정보 및 서버에 공개된 정보로부터 두 자식 노드들에 대한 추가정보를 서버가 계산하고 계산된 추가정보를 사용하여 두 자식 노드에 대한 데이터 포함 여부를 검사하는 단계, 및 이러한 확인 과정을 검색하고자 하는 데이터를 포함한 모든 리프 노드를 확일 할 때 까지 반복하는 단계를 포함하고, 중간 노드가 검색 데이터를 포함하지 않는 것으로 확인된 경우에는 그 자식 노드에 대한 확인 과정을 생략할 수 있다.
본 발명의 일실시예에 따른 사용자 단말은 암호 데이터의 개수 및 상기 암호 데이터에 포함된 키워드들의 개수에 따라 이진 트리의 레벨을 결정하고, 상기 이진 트리의 각 레벨에 서로 다른 해시 함수들을 선택하여 할당하며, 상기 이진 트리의 각 레벨에 할당된 해시 함수와 상기 암호 데이터에 포함된 키워드를 사용하여 트리의 각 노드에 암호 데이터를 검색하기 위한 블룸 필터를 생성하며, 생성한 블룸 필터를 상기 이진 트리의 대응하는 노드에 할당하여 저장할 수 있도록 서버에 전송하는 프로세서를 포함할 수 있다.
본 발명의 일실시예에 따른 서버는 이진 트리 구조의 검색 인덱스의 리프 노드 중 암호 데이터가 할당되지 않은 리프 노드의 식별 정보를 사용자 단말에 제공하고, 사용자 단말로부터 암호 데이터 및 복수의 블룸 필터들을 수신하는 통신기; 및 상기 암호 데이터를 상기 할당한 리프 노드에 할당하고, 상기 복수의 블룸 필터들을 상기 이진 트리 구조의 검색 인덱스의 루트 노드에서 상기 리프 노드까지의 경로에 포함된 중간 노드들에 각각 할당하는 프로세서를 포함하고, 상기 사용자 단말은 상기 암호 데이터에 포함된 키워드 및 상기 식별 정보에 해시 함수를 적용하여 상기 블룸 필터들을 생성할 수 있다.
본 발명의 일실시예에 따른 서버는 검색 대상인 암호 데이터에 포함된 키워드로부터 도출된 추가정보(trapdoor)를 수신하는 통신기; 및 이진 트리 구조의 검색 인덱스의 루트 노드에 할당된 블룸 필터를 이용하여 상기 인덱스에 상기 추가정보에 대응하는 암호 데이터가 포함되었는지 여부를 확인하고, 상기 이진 트리 구조의 검색 인덱스의 레벨들 각각에 할당된 블룸 필터를 이용하여 상기 이진 트리에 포함된 복수의 리프 노드들 중 상기 추가정보에 대응하는 리프 노드를 검색하며, 상기 검색한 리프 노드에 할당된 암호 데이터를 추출하는 프로세서를 포함할 수 있다.
본 발명의 일실시예에 의하면, 키워드가 목표 집합의 원소임을 효율적으로 확인할 수 있는 블룸 필터를 이용한 트리 구조의 인덱스를 생성하여 검색 대상이 되는 암호 데이터의 추가 및 삭제가 자유로운 동적 검색 방법을 제공할 수 있다.
도 1은 본 발명의 일실시예에 따른 암호 데이터 검색 시스템을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 인덱스 생성 과정의 일례이다.
도 3은 본 발명의 일실시예에 따른 암호 데이터 추가 과정의 일례이다.
도 4는 본 발명의 일실시예에 따른 검색 과정의 일례이다.
도 5는 본 발명의 일실시예에 따른 블룸 필터 생성 과정의 일례이다.
도 6은 본 발명의 일실시예에 따른 리프 노드의 식별 정보의 일례이다.
도 7은 본 발명의 일실시예에 따른 인덱스 생성 방법을 도시한 플로우차트이다.
도 8은 본 발명의 일실시예에 따른 암호 데이터 추가 방법을 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 검색 방법을 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 인덱스 생성 과정의 일례이다.
도 3은 본 발명의 일실시예에 따른 암호 데이터 추가 과정의 일례이다.
도 4는 본 발명의 일실시예에 따른 검색 과정의 일례이다.
도 5는 본 발명의 일실시예에 따른 블룸 필터 생성 과정의 일례이다.
도 6은 본 발명의 일실시예에 따른 리프 노드의 식별 정보의 일례이다.
도 7은 본 발명의 일실시예에 따른 인덱스 생성 방법을 도시한 플로우차트이다.
도 8은 본 발명의 일실시예에 따른 암호 데이터 추가 방법을 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 검색 방법을 도시한 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 본 발명의 일실시예에 따른 인덱스 생성 방법, 암호 데이터 추가 방법 및 검색 방법은 암호 데이터 검색 시스템에 의해 수행될 수 있다.
도 1은 본 발명의 일실시예에 따른 암호 데이터 검색 시스템을 나타내는 도면이다.
암호 데이터 검색 시스템은 도 1에 도시된 바와 같이 사용자 단말(110)과 서버(120)로 구성될 수 있다.
사용자 단말(110)은 원본 데이터를 암호화하여 암호 데이터를 생성하고, 암호 데이터를 검색하기 위한 인덱스를 생성할 수 있다. 이때, 생성되는 검색 인덱스는 대상 데이터에 포함된 키워드에 의해서만 결정되기 때문에 데이터를 키워드의 집합으로 정의할 수 있다. 예를 들어, i번째 원본 데이터 Mi는 수학식 1과 같이 정의될 수 있다.
사용자 단말(110)은 암호 데이터를 검색하기 위한 이진 트리 구조의 검색 인덱스 구성을 위한 블룸 필터를 다음과 같이 생성할 수 있다.
먼저, 사용자 단말(110)의 프로세서(111)는 서버(120)에 저장할 암호 데이터들의 개수인 m 및 암호 데이터들에 각각 포함된 키워드들의 개수인 t에 따라 이진 트리의 레벨을 의미하는 정수 d를 결정할 수 있다. 또한, 사용자 단말(110)의 프로세서(111)는 블룸 필터의 크기인 n, 하나의 키워드에 대응하는 해시(hash) 함수의 개수인 v를 결정할 수 있다. 예를 들어, 이진 트리의 루트 노드(Root node)는 0-level로 표시되고, 이진 트리의 리프 노드(leaf node)는 d-level로 표현될 수 있다. 이때, 상기 이진 트리는 최대 2d개의 리프 노드를 가지며 2d개의 데이터에 대한 검색 인덱스를 구성할 수 있다.
사용자 단말(110)의 프로세서(111)는 이진 트리의 레벨별로 서로 다른 해시 함수들을 할당할 수 있다. 구체적으로, 사용자 단말(110)의 프로세서(111)는 이진 트리의 레벨별로 해시 함수들의 집합인 Hi 을 설정할 수 있다. 예를 들어, Hi는 수학식 2와 같이 표시될 수 있다.
이때, 해시 함수인 fij들 각각의 출력은 1 내지 n 사이의 정수일 수 있다.
이때, 사용자 단말(110)의 프로세서(111)는 이진 트리의 레벨별로 할당된 해시 함수들 중 일부를 비밀 정보로 설정하여 사용자 단말(110)에 저장하고, 비밀 정보로 설정되지 않은 해시 함수들을 공개 정보로 설정하여 서버(120)에 저장할 수 있다.
또한, 사용자 단말(110)의 프로세서(111)는 이진 트리의 레벨별로 추가적인 해시 함수 gi와 상수 ρi를 선택할 수 있다. 이때, 해시 함수들은 이진 트리의 레벨에 따라 다를 수 있다. 이때, 해시 함수 gi는 이진 트리의 하위 레벨로 정보를 전달하기 위하여 적용하는 함수이므로, 블룸 필터 계산을 위한 해시 함수인 Hi = {fi1, fi2, ..., fiv}들과는 서로 다른 함수일 수 있다.
그리고, 사용자 단말(110)의 통신기(112)는 서버(120)로 블룸 필터의 크기인 n 및 이진 트리의 레벨을 의미하는 정수 d를 전송할 수 있다. 이때, 서버(120)의 프로세서(122)는 통신기(121)가 수신한 d와 n을 기초로 d레벨로 구성된 이진 트리 구조의 검색 인덱스를 생성할 수 있다. 이 때, 트리의 각 노드는 n개의 원소로 이루어진 배열 (b[1], b[2], ..., b[n])로 구성된 블룸 필터이며, 서버(120)의 프로세서(122)는 블룸 필터에 포함된 모든 원소(b[i])의 초기값을 0으로 설정할 수 있다
검색 인덱스에 초기 데이터를 저장하는 경우, 검색 인덱스의 모든 리프 노드는 비어있을 수 있다. 따라서, 사용자 단말(110)의 프로세서(111)는 검색 인덱스의 리프 노드에 서로 다른 암호 데이터를 임의로 할당할 수 있다. 그리고, 사용자 단말(110)의 프로세서(111)은 해시 함수 Hi, 암호 데이터에 포함된 키워드, 및 암호 데이터가 할당된 리프 노드의 식별 정보를 사용하여 검색 인덱스의 루트 노드에서 상기 리프 노드 사이의 경로에 대응하는 모든 중간 노드에 해당하는 블룸 필터들을 생성할 수 있다. 이때, 해시 함수 Hi는 리프 노드에 할당한 각각의 암호 데이터에 대응하는 블롬 필터의 계산을 위하여 선택된 해시 함수일 수 있다.
복수의 암호 데이터에 포함된 키워드가 동일한 경우, 사용자 단말(110)의 프로세서(111)는 루트 노드에서 암호 데이터들 각각이 할당된 리프 노드들까지의 경로들에 포함된 중간 노드들 중 복수의 경로에 중복으로 포함된 노드에는 동일한 블룸 필터를 생성할 수 있다. 또한, 복수의 경로에 중복으로 포함되지 않은 노드에는 서로 다른 블룸 필터를 생성할 수 있다.
예를 들어, 동일한 키워드가 포함된 제1 암호 데이터, 제2 암호 데이터가 각각 제1 리프 노드, 제2 리프 노드에 할당될 수 있다. 그리고, 루트 노드에서 제1 리프 노드까지의 경로에는 제1 중간 노드, 제2 중간 노드, 및 제3 중간 노드가 포함될 수 있다. 또한, 루트 노드에서 제2 리프 노드까지의 경로에는 제1 중간 노드, 제4 중간 노드, 및 제5 중간 노드가 포함될 수 있다. 이때, 사용자 단말(110)의 프로세서(111)는 루트 노드에서 제1 리프 노드까지의 경로와 루트 노드에서 제2 리프 노드까지의 경로에 중복으로 포함된 제1 중간 노드에 동일한 블룸 필터를 생성할 수 있다. 또한, 사용자 단말(110)의 프로세서(111)는 다른 경로에 중복되지 않은 제3 중간 노드, 내지 제5 중간 노드에는 서로 다른 블룸 필터를 생성할 수 있다.
마지막으로 프로세서(111)는 생성된 블룸 필터와 암호화된 데이터를 서버(120)에 전송하고, 서버(120)는 전송 받은 루트 노드, 리프 노드 및 중간 노드들을 서버(120)가 관리하는 검색 인덱스의 해당 노드에 추가하여 암호 데이터를 검색하기 위한 이진 트리 구조의 검색 인덱스를 완성할 수 있다. 또한, 서버(120)는 각각의 리프 노드에 암호 데이터의 식별 정보를 할당하고 암호 데이터는 별도의 저장 공간에 보관한다.
또한, 사용자 단말(110)의 프로세서(111)는 암호 데이터에 포함된 키워드로부터 암호 데이터를 검색하기 위한 키로 사용되는 추가 정보를 도출할 수 있다. 이때, 프로세서(111)는 암호 데이터에 포함된 키워드 k에 해시 함수를 적용하여 추가정보(trapdoor) T를 계산할 수 있다. 예를 들어, 추가 정보는 수학식 3과 같이 계산될 수 있다.
그리고, 통신기(112)는 프로세서(111)가 도출한 추가 정보를 서버(120)로 전송할 수 있다.
서버(120)의 프로세서(122)는 통신기(121)가 사용자 단말(110)로부터 추가 정보를 수신하는 경우, 서버(120)에 저장된 인덱스를 이용하여 추가 정보의 도출에 사용된 키워드에 대응하는 암호 데이터를 검색할 수 있다. 그리고, 서버(120)의 통신기(121)는 프로세서(122)가 검색한 암호 데이터를 사용자 단말(110)에 전송할 수 있다.
또한, 서버(120)의 프로세서(122)는 검색 인덱스에서 암호 데이터가 할당되지 않은 리프 노드를 식별할 수 있다. 그리고, 사용자 단말(110)이 인덱스에 암호 데이터의 추가를 요청하는 경우, 서버(120)의 통신기(121)는 암호 데이터가 할당되지 않은 리프 노드 중 하나의 식별 정보를 사용자 단말(110)로 전송할 수 있다.
이때, 사용자 단말(110)의 프로세서(111)는 통신기(112)가 수신한 리프 노드의 식별 정보를 이용하여 루트 노드에서 해당 리프 노드까지의 경로에 포함된 노드에 할당할 블룸 필터들을 생성할 수 있다. 그리고, 사용자 단말(110)의 통신기(112)는 수신한 리프 노드에 할당할 암호 데이터 및 생성한 블룸 필터들을 서버(120)로 전송할 수 있다.
이때, 서버(120)의 프로세서(122)는 통신기(121)가 수신한 암호 데이터를 식별한 리프 노드에 할당할 수 있다. 또한, 프로세서(122)는 루트 노드에서 해당 리프 노드까지의 경로에 포함된 노드에 할당된 블룸 필터와 사용자 단말(110)로부터 수신한 블룸 필터들에 대한 OR 연산, 또는 ADD 연산을 수행할 수 있다.
또한, 사용자 단말(110)의 프로세서(111)는 이진 트리의 레벨을 의미하는 정수 d와 함께, d 보다 작은 정수 d'을 정의할 수 있다 (d > d').
그리고, d'레벨보다 하위 레벨에 암호화 데이터가 추가되는 경우, 사용자 단말(110)의 프로세서(111)는 중간 노드의 블룸 필터에 대해서 논리적인 OR 연산 대신 산술적인 ADD 연산을 수행하는 카운팅 필터(counting filter)를 생성할 수 있다. 이때, 카운팅 필터의 각각의 원소는 이진수가 아닌 크기 범위가 정해진 정수로 표현될 수 있다.
그리고, 서버(120)는 추가정보를 사용하여 키워드가 포함되었는지를 확인하는 과정에서 d'레벨을 기준으로 상위 레벨은 일반적인 블룸 필터 검색 방법을 적용하여 해시 결과에 해당하는 블룸 필터의 원소의 값이 1인지 여부를 확인하고, 하위 레벨의 경우에는 해시 결과에 해당하는 필터의 값이 1 또는 1보다 큰 정수 인지를 확인할 수 있다.
또한, 서버(120)는 인덱스의 노드에 할당한 암호 데이터를 삭제하는 경우, 카운팅 필터를 사용하는 d'레벨보다 하위 레벨의 중간 노드에 해당하는 필터의 각각의 원소에 대해서 산술적인 뺄셈 연산을 수행하고, d'레벨보다 상위 레벨의 중간 노드의 블룸 필터는 수정하지 않을 수 있다, 단 뺄셈의 결과가 음수일 경우는 0으로 저장할 수 있다.
본 발명의 일실시예에 따른 암호 데이터 검색 시스템은 키워드가 목표 집합의 원소임을 효율적으로 확인할 수 있는 블룸 필터를 이용한 트리 구조의 인덱스를 생성하여 검색 대상이 되는 암호 데이터의 추가 및 삭제가 자유로운 동적 검색 방법을 제공할 수 있다.
도 2는 본 발명의 일실시예에 따른 인덱스 생성 과정의 일례이다.
사용자 단말(110)은 도 2에 도시된 바와 같이 원본 데이터인 문서(210)를 암호화하여 암호 데이터(220)를 생성할 수 있다.
다음으로, 사용자 단말(110)은 이진 트리의 리프 노드에 암호 데이터(220)를 할당할 수 있다.
그 다음으로, 사용자 단말(110)은 암호 데이터가 할당된 리프 노드의 식별 정보와 암호 데이터(220)에 포함된 키워드로부터 블룸 필터를 생성하여 인덱스(230)를 구성할 수 있다. 이때, 암호 데이터(220)를 검색하기 위한 인덱스(230)는 도 2에 도시된 바와 같이 이진 트리 구조일 수 있다.
예를 들어, 키워드들의 집합 S에 대해 정의된 블룸 필터는 B[H;S]로 표시할 수 있다. 이때, H는 블룸 필터를 정의하기 위해 사용된 해시 함수의 집합일 수 있다.
상기한 바와 같이, Hi는 이진 트리의 i레벨에 할당된 해시 함수들의 집합일 수 있다. 또한, t 개의 키워드들로 구성된 집합 S는 수학식 4와 같이 정의될 수 있다.
이때, ki는 i번째 키워드일 수 있다.
또한, 리프 노드의 식별 정보는 루트 노드에서 해당 리프 노드까지의 경로에 따라 결정될 수 있다. 그리고, 리프 노드의 레벨이 d인 경우, 리프 노드의 식별 정보는 d 자리의 이진수 η1η2,...,ηd로 정의될 수 있다. 이때, ηi는 각각 0 또는 1인 이진수일 수 있다. 리프 노드의 식별 정보의 구조는 이하 도 6을 참조하여 상세히 설명한다.
먼저, 사용자 단말(110)은 초기값이 '0'으로 설정된 d+1개의 블룸 필터인 (BF0, BF1,..., BFd)를 생성할 수 있다. 이때, 사용자 단말(110)은 n개의 원소로 이루어진 배열 (b[1], b[2], ... , b[n])로 블룸 필터를 생성하고, 블룸 필터에 포함된 원소들의 초기값을 0으로 설정할 수 있다.
이진 트리의 0레벨인 루트 노드의 경우, 프로세서(111)는 키워드 ki에 0레벨에 할당된 해시 함수 g0를 적용하여 0레벨 키워드 w0i = g0(ki)를 결정할 수 있다.
그리고, 프로세서(111)는 수학식 5와 같이 0레벨 키워드 w0i에 H0에 포함된 v개의 해시 함수를 각각 적용하여 h0 i1, ... , h0 iv 를 다음 수학식5와 같이 계산할 수 있다.
이때, MSB(ρ,w)는 키워드 w0i 의 가장 왼쪽 ρ-bits일 수 있다.
그리고, 프로세서(111)는 해시 함수들의 결과인 h0 i1, ..., h0 iv에 따라 이진 트리의 0레벨에 대응하는 블룸 필터인 BF0의 h0 i1,..., h0 iv 번째에 해당하는 원소의 값을 1로 변경할 수 있다.
즉, 프로세서(111)은 수학식 6과 같이 이진 트리의 0레벨에 대응하는 블룸 필터인 BF0를 생성할 수 있다.
다음으로, 사용자 단말(110)은 0레벨의 키워드 w0i에 서버(120)로부터 수신한 리프 노드의 고유 번호 중 1레벨에 대응하는 정보인 η1를 더한 값을 계산할 수 있다. 그리고, 사용자 단말(110)은 계산한 값에 이진 트리의 1레벨에 할당된 해시 함수 g1를 적용하여 이진 트리의 1레벨의 키워드 w1i를 결정할 수 있다. 예를 들어, 사용자 단말(110)는 1레벨의 키워드 w1i를 w11 = g1(η1||w01), w12 = g1(η1||w02), ... , w1t = g1(η1||w0t)와 같이 결정할 수 있다.
또한, 사용자 단말(110)은 1레벨 키워드 w1i의 가장 왼쪽의 ρ1 비트들에 H1의 v개의 해시 함수를 적용한 결과를 계산할 수 있다. 그리고, 사용자 단말(110)은 모든 원소를 0으로 초기화한 이진 트리의 1레벨에 대응하는 블룸 필터에서 H1에 의해 계산된 원소의 값을 1로 변경할 수 있다.
즉, 프로세서(111)은 수학식 7과 같이 이진 트리의 1레벨에 대응하는 블룸 필터인 BF1를 생성할 수 있다.
그 다음으로, 사용자 단말(110)은 1레벨의 키워드 w1i에 서버(120)로부터 수신한 리프 노드의 고유 번호 중 2레벨에 대응하는 정보인 η2를 더한 값을 계산할 수 있다. 그리고, 사용자 단말(110)은 계산한 값에 이진 트리의 2레벨에 할당된 해시 함수 g2를 적용하여 이진 트리의 2레벨의 키워드 w2i를 결정할 수 있다. 또한, 사용자 단말(110)은 2레벨 키워드 w2의 가장 왼쪽의 ρ2 비트들에 H2에 포함된 v개의 해시 함수를 각각 적용한 결과를 계산할 수 있다. 그리고, 사용자 단말(110)은 모든 원소를 0으로 초기화한 이진 트리의 2레벨에 대응하는 블룸 필터에서 H2에 대응하는 원소의 값을 1로 변경함으로써, 이진 트리의 2레벨에 대응하는 블룸 필터인 BF2를 생성할 수 있다.
다음으로, 사용자 단말(110)은 2레벨의 키워드 w2i에 서버(120)로부터 수신한 리프 노드의 고유 번호 중 3레벨에 대응하는 정보인 η3를 더한 값을 계산할 수 있다. 그리고, 사용자 단말(110)은 계산한 값에 이진 트리의 3레벨에 할당된 해시 함수 g3를 적용하여 이진 트리의 3레벨의 키워드 w3i를 결정할 수 있다. 또한, 사용자 단말(110)은 3레벨 키워드 w3i의 가장 왼쪽의 ρ3 비트들에 H3에 포함된 v개의 해시 함수를 각각 적용한 결과를 계산할 수 있다. 그리고, 사용자 단말(110)은 모든 원소를 0으로 초기화한 이진 트리의 3레벨에 대응하는 블룸 필터에서 H3에 대응하는 원소의 값을 1로 변경 함으로써, 이진 트리의 3레벨에 대응하는 블룸 필터인 BF3를 생성할 수 있다.
이때, ρi는 기설정된 변수 값이며, 하위 레벨로 가면서 i에 비례하여 증가할 수 있으며, 리프 노드에서 사용하는 ρd은 키워드 전체를 포함해야 한다.
이진 트리의 레벨이 j인 경우, 사용자 단말(110)은 (j-1)-level에 사용된 키워드 w(j-1)i 에 ηj을 더하고, 해시 함수 gj을 적용하여 j레벨의 키워드 wji를 생성할 수 있다. 그리고, 사용자 단말(110)은 j레벨의 키워드 wji를 이용하여 수학식 8과 같은 j레벨에 대응하는 블룸 필터인 BFj를 생성할 수 있다.
사용자 단말(110)은 이진 트리의 레벨이 d가 될 때까지 이진 트리의 현재 레벨을 j에 입력한 수학식 8을 이용하여 이진 트리의 레벨들 각각에 대응하는 블룸 필터를 생성할 수 있다.
그리고, 사용자 단말(110)은 암호 데이터(220) 및 인덱스(230)를 서버(120)에 전송할 수 있다.
이때, 서버(120)는 수신한 암호 데이터(220) 및 인덱스(230)를 저장하고 관리할 수 있다.
도 3은 본 발명의 일실시예에 따른 암호 데이터 추가 과정의 일례이다.
서버(120)는 이진 트리 구조의 검색 인덱스(350)에서 암호 데이터가 할당되지 않은 리프 노드를 식별할 수 있다. 그리고, 사용자 단말(110)이 인덱스에 암호 데이터의 추가를 요청하는 경우, 서버(120)는 암호 데이터가 할당되지 않은 리프 노드 중 하나의 리프 노드의 식별 정보(310)를 사용자 단말(110)로 전송할 수 있다.
이때, 사용자 단말(110)은 추가할 원본 데이터인 문서(320)를 암호화하여 암호 데이터(330)를 생성할 수 있다. 다음으로, 사용자 단말(110)은 리프 노드의 식별 정보(310)를 이용하여 루트 노드에서 해당 리프 노드까지의 경로에 포함된 노드(340)에 할당할 블룸 필터들을 생성할 수 있다. 그 다음으로, 사용자 단말(110)은 암호 데이터(320) 및 루트 노드에서 해당 리프 노드까지의 경로에 포함된 노드(340)에 할당할 블룸 필터들을 서버(120)로 전송할 수 있다.
이때, 서버(120)는 암호 데이터(330)를 리프 노드의 식별 정보(310)에 대응하는 리프 노드에 할당할 수 있다. 또한, 프로세서(122)는 도 3에 도시된 바와 같이 인덱스(350)에 포함된 노드들 중 경로(340)에 포함된 노드에 할당된 블룸 필터와 사용자 단말(110)로부터 수신한 블룸 필터들에 대한 OR 연산을 수행할 수 있다. 예를 들어, 서버(120)는 인덱스(350)의 d 레벨 노드에 할당된 블룸 필터와 경로(340)에 포함된 노드들 중 d 레벨 노드에 할당된 블룸 필터에 대한 OR 연산을 수행하고, 수행 결과를 인덱스(350)의 d 레벨 노드의 블룸 필터로 재할당할 수 있다.
도 4는 본 발명의 일실시예에 따른 검색 과정의 일례이다.
사용자 단말(110)은 암호 데이터에 포함된 키워드(410)에 해시 함수를 적용하여 암호 데이터를 검색하기 위한 키로 사용되는 추가 정보(420)를 도출할 수 있다. 그리고, 사용자 단말(110)은 추가 정보(420)를 서버(120)로 전송할 수 있다.
서버(120)는 서버(120)에 저장된 인덱스(430)를 이용하여 추가 정보(420)의 도출에 사용된 키워드에 대응하는 암호 데이터(440)를 검색할 수 있다.
구체적으로, 서버(120)는 인덱스(430)의 이진 트리의 루트 노드에 할당된 블룸 필터를 이용하여 인덱스(230)에 추가정보(420)에 대응하는 암호 데이터(440)가 포함되었는지 여부를 확인할 수 있다.
인덱스(230)에 추가정보(420)에 대응하는 암호 데이터(440)가 포함되지 않은 경우, 서버(120)는 사용자 단말(110)에게 추가정보(420)에 대응하는 암호 데이터(440)가 존재하지 않는다는 답변을 전송할 수 있다.
인덱스(230)에 추가정보(420)에 대응하는 암호 데이터가 포함된 경우, 서버(120)는 인덱스(230)의 이진 트리의 레벨들 각각에 할당된 블룸 필터를 이용하여 이진 트리(230)에 포함된 복수의 리프 노드들 중 추가정보(420)에 대응하는 리프 노드(431)를 검색할 수 있다. 그리고, 서버(120)는 리프 노드(431)에 할당된 암호 데이터(440)를 추출하여 사용자 단말(110)에 전송할 수 있다.
도 5는 본 발명의 일실시예에 따른 블룸 필터 생성 과정의 일례이다.
도 5는 사용자 단말(110)이 서버(120)로부터 레벨이 3인 이진 트리 구조의 검색 인덱스에서 선택된 리프 노드의 식별 정보를 수신하고, 키워드 k(510)가 1개인 경우, 사용자 단말(110)이 루트 노드에서 해당 리프 노드까지의 경로에 포함된 노드들 각각에 할당할 블룸 필터를 생성하는 과정이다.
먼저, 사용자 단말(110)은 초기값이 '0'으로 설정된 4개의 블룸 필터인 (BF0, BF1,..., BF3)를 생성할 수 있다. 이때, 사용자 단말(110)은 n개의 원소로 이루어진 배열 (b[1], b[2],..., b[n])로 블룸 필터를 생성하고, 블룸 필터에 포함된 원소들의 초기값을 0으로 설정할 수 있다.
이진 트리의 0레벨인 루트 노드의 경우, 프로세서(111)는 키워드 ki(510)에 선택한 해시 함수 g0를 적용하여 0레벨 키워드 w0i = g0(ki)(520)를 결정할 수 있다.
그리고, 프로세서(111)는 수학식 9와 같이 0레벨 키워드 w0(520)에 H0(521)에 포함된 v개의 해시 함수를 각각 적용하여 h0 i1,..., h0 iv 를 계산할 수 있다.
이때, MSB(ρ,w)는 키워드 w0i 의 가장 왼쪽 ρ-bits일 수 있다.
그리고, 프로세서(111)는 해시 함수들의 결과인 h0 i1,..., h0 iv에 따라 이진 트리의 0레벨에 대응하는 블룸 필터인 BF0(522)의 h0 i1,..., h0 iv 번째에 해당하는 원소의 값을 1로 변경할 수 있다.
즉, 프로세서(111)은 수학식 10과 같이 이진 트리의 0레벨에 대응하는 블룸 필터인 BF0(522)를 생성할 수 있다.
다음으로, 사용자 단말(110)은 0레벨의 키워드 w0(520)에 서버(120)로부터 수신한 리프 노드의 고유 번호 중 1레벨에 대응하는 정보인 η1를 더한 값을 계산할 수 있다. 그리고, 사용자 단말(110)은 계산한 값에 이진 트리의 1레벨에 할당된 해시 함수 g1를 적용하여 이진 트리의 1레벨의 키워드 w1 (530)를 결정할 수 있다.
따라서, 1레벨의 키워드 w1(530)는 w1 = g1(η1||w0)와 같이 계산될 수 있다.
또한, 사용자 단말(110)은 1레벨 키워드 w1(530)의 가장 왼쪽의 ρ1 비트들에 H1(531)의 v개의 해시 함수를 적용한 결과를 계산할 수 있다. 그리고, 사용자 단말(110)은 모든 원소를 0으로 초기화한 이진 트리의 1레벨에 대응하는 블룸 필터(532)에서 도 5에 도시된 바와 같이 H1(531)에 의해 계산된 원소의 값을 1로 변경할 수 있다.
즉, 프로세서(111)은 수학식 11과 같이 이진 트리의 1레벨에 대응하는 블룸 필터인 BF1(532)를 생성할 수 있다.
그 다음으로, 사용자 단말(110)은 1레벨의 키워드 w1(530)에 서버(120)로부터 수신한 리프 노드의 고유 번호 중 2레벨에 대응하는 정보인 η2를 더한 값을 계산할 수 있다. 그리고, 사용자 단말(110)은 계산한 값에 이진 트리의 2레벨에 할당된 해시 함수 g2를 적용하여 이진 트리의 2레벨의 키워드 w2(540)를 결정할 수 있다. 또한, 사용자 단말(110)은 2레벨 키워드 w2(540)의 가장 왼쪽의 ρ2 비트들에 H2(541)에 포함된 v개의 해시 함수를 각각 적용한 결과를 계산할 수 있다. 그리고, 사용자 단말(110)은 모든 원소를 0으로 초기화한 이진 트리의 2레벨에 대응하는 블룸 필터(542)에서 도 5에 도시된 바와 같이 H2(541)에 대응하는 원소의 값을 1로 변경함으로써, 이진 트리의 2레벨에 대응하는 블룸 필터인 BF2(542)를 생성할 수 있다.
다음으로, 사용자 단말(110)은 2레벨의 키워드 w2(540)에 서버(120)로부터 수신한 리프 노드의 고유 번호 중 3레벨에 대응하는 정보인 η3를 더한 값을 계산할 수 있다. 그리고, 사용자 단말(110)은 계산한 값에 이진 트리의 3레벨에 할당된 해시 함수 g3를 적용하여 이진 트리의 3레벨의 키워드 w3(550)를 결정할 수 있다. 또한, 사용자 단말(110)은 3레벨 키워드 w3(550)의 가장 왼쪽의 ρ3 비트들에 H3(551)에 포함된 v개의 해시 함수를 각각 적용한 결과를 계산할 수 있다. 그리고, 사용자 단말(110)은 모든 원소를 0으로 초기화한 이진 트리의 3레벨에 대응하는 블룸 필터(552)에서 도 5에 도시된 바와 같이 H3(551)에 대응하는 원소의 값을 1로 변경 함으로써, 이진 트리의 3레벨에 대응하는 블룸 필터인 BF3(552)를 생성할 수 있다.
이때, ρi는 기설정된 변수 값이며, 하위 레벨로 가면서 i에 비례하여 증가할 수 있으며, 리프 노드에서 사용하는 ρd은 키워드 전체를 포함해야 한다.
도 5에는 3레벨까지만 도시되어 있으나, 이진 트리의 레벨이 j인 경우, 사용자 단말(110)은 (j-1)-level에 사용된 키워드 w(j-1) 에 ηj을 더하고, 해시 함수 gj을 적용하여 j레벨의 키워드 wj를 생성할 수 있다. 그리고, 사용자 단말(110)은 j레벨의 키워드 wj를 이용하여 수학식 12와 같은 j레벨에 대응하는 블룸 필터인 BFj를 생성할 수 있다.
마지막으로 사용자 단말(110)은 블룸 필터(522), 블룸 필터(532), 블룸 필터(542), 블룸 필터(552)를 암호 데이터와 함께 서버(120)로 전송할 수 있다.
이때, 서버(120)는 사용자 단말(110)로부터 수신한 암호 데이터를 리프 노드의 식별 정보에 대응하는 리프 노드에 할당할 수 있다. 그리고, 서버(120)는 루트 노드에서 리프 노드의 식별 정보에 대응하는 리프 노드까지의 경로에 포함된 중간 노드들 각각에 할당된 d+1개의 블룸 필터에 각각 사용자 단말(110)로부터 수신한 블룸 필터인 BF0, BF1,,,,, BFd를 순차적으로 OR 연산할 수 있다.
도 6은 본 발명의 일실시예에 따른 리프 노드의 식별 정보의 일례이다.
리프 노드의 식별 정보는 루트 노드에서 해당 리프 노드까지의 경로에 따라 결정될 수 있다. 그리고, 리프 노드의 레벨이 d인 경우, 리프 노드의 식별 정보는 d 자리의 이진수 η1η2,...,ηd로 정의될 수 있다.
예를 들어, 이진 트리 구조의 검색 인덱스의 리프 노드들 중에서 리프 5(600)의 식별 정보는 루트 노드(610)에서 리프 5(600)까지의 경로에 포함된 중간 노드(620), 중간 노드(630)에 따라 결정될 수 있다.
구체적으로, 리프 5(600)은 최하위 레벨이 3인 이진 트리 구조의 검색 인덱스의 리프 노드이므로, 식별 정보인 리프(Leaf) ID는 도 6에 도시된 바와 같이 3자리의 2진수로 구성될 수 있다.
이때, 리프 5(600)의 식별 정보의 첫 번째 값인 η1은 도 6에 도시된 바와 같이 중간 노드(620)가 루트 노드(610)의 오른쪽에 위치한 자식 노드라는 것을 나타내는 1일 수 있다.
또한, 리프 5(600)의 식별 정보의 두 번째 값인 η2은 도 6에 도시된 바와 같이 중간 노드(630)가 중간 노드(620)의 왼쪽에 위치한 자식 노드라는 것을 나타내는 0일 수 있다.
그리고, 리프 5(600)의 식별 정보의 세 번째 값인 η3은 도 6에 도시된 바와 같이 리프 5(600)가 중간 노드(630)의 오른쪽에 위치한 자식 노드라는 것을 나타내는 1일 수 있다.
즉, 리프 5(600)의 식별 정보는 이진 트리 구조의 검색 인덱스에서 리프 5(600)의 위치를 나타내는 정보일 수 있다.
도 7은 본 발명의 일실시예에 따른 인덱스 생성 방법을 도시한 플로우차트이다.
단계(710)에서 사용자 단말(110)은 암호 데이터의 개수 및 암호 데이터에 포함된 키워드들의 개수에 따라 이진 트리의 레벨을 결정할 수 있다. 이때, 사용자 단말(110)은 결정한 이진 트리의 레벨을 서버(120)로 전송할 수 있다. 그리고, 서버(120)는 사용자 단말(110)로부터 수신한 이진 트리의 레벨에 따라 암호 데이터를 검색하기 위한 이진 트리 구조의 검색 인덱스를 설정하여 초기화할 수 있다.
단계(720)에서 사용자 단말(110)은 이진 트리의 레벨 별로 서로 다른 해시 함수들을 선택하여 할당할 수 있다.
단계(730)에서 사용자 단말(110)은 단계(710)에서 결정한 이진 트리의 최하위 레벨에 대응하는 리프 노드들마다 서로 다른 암호 데이터를 할당할 수 있다.
단계(740)에서 사용자 단말(110)은 암호 데이터가 할당된 리프 노드의 식별정보와 암호 데이터에 포함된 키워드에 해시 함수를 적용하여 루트 노드에서 리프 노드까지의 경로에 포함된 각각의 중간 노드에 대응하는 블룸 필터들을 생성할 수 있다.
단계(750)에서 사용자 단말(110)은 암호 데이터들과 단계(740)에서 생성한 블룸 필터들을 서버(120)로 전송할 수 있다. 이때, 서버(120)는, 수신한 블룸 필터들을 이진 트리 구조의 검색 인덱스의 해당 노드에 추가하며, 암호 데이터의 식별 정보를 리프 노드에 할당할 수 있다. 그리고, 서버(120)는 암호 데이터를 검색 인덱스와는 별도로 저장할 수 있다.
도 8은 본 발명의 일실시예에 따른 암호 데이터 추가 방법을 도시한 도면이다.
단계(810)에서 사용자 단말(110)은 원본 정보를 암호화하여 암호 데이터를 생성할 수 있다. 그리고, 서버(120)에게 암호 데이터의 추가를 요청할 수 있다.
단계(820)에서 서버(120)는 이진 트리 구조의 검색 인덱스의 리프 노드들 중 암호 데이터가 할당되지 않은 리프 노드를 검색할 수 있다.
단계(830)에서 서버(120)는 단계(820)에서 검색한 리프 노드의 식별 정보를 사용자 단말(110)에 제공할 수 있다.
단계(840)에서 사용자 단말(110)은 단계(810)에서 생성한 암호 데이터에 포함된 키워드 및 단계(830)에서 수신한 리프 노드의 식별 정보에 해시 함수를 적용하여 블룸 필터들을 생성할 수 있다.
단계(850)에서 사용자 단말(110)은 단계(840)에서 생성한 암호 데이터 및 복수의 블룸 필터들을 전송할 수 있다.
단계(860)에서 서버(120)는 단계(850)에서 수신한 암호 데이터를 단계(820)에서 검색한 리프 노드에 할당할 수 있다.
단계(870)에서 서버(120)는 단계(850)에서 수신한 복수의 블룸 필터들을 이진 트리 인덱스의 루트 노드에서 단계(820)에서 검색한 리프 노드까지의 경로에 포함된 중간 노드들에 각각 할당할 수 있다.
도 9는 본 발명의 일실시예에 따른 검색 방법을 도시한 도면이다.
단계(910)에서 사용자 단말(110)은 암호 데이터에 포함된 키워드로부터 검색을 위한 추가정보(trapdoor)를 도출할 수 있다.
단계(920)에서 사용자 단말(110)은 단계(910)에서 도출한 추가정보를 서버(120)로 전송할 수 있다.
단계(930)에서 서버(120)는 이진 트리 구조의 검색 인덱스의 루트 노드에 할당된 블룸 필터를 이용하여 인덱스에 단계(920)에서 수신한 추가 정보에 대응하는 암호 데이터가 포함되었는지 여부를 확인할 수 있다.
구체적으로, 서버(120)는 추가정보(trapdoor)인 T가 루트 노드에 할당된 블룸 필터에 포함되어 있는지를 검사할 수 있다. 이때, 서버(120)는 h1 = f01(MSB(ρ0, T)), h2 = f02(MSB(ρ0, T)), ..., hv = f0v(MSB(ρ0, T))를 각각 계산하고, 루트 노드에 할당된 블룸 필터의 hi번째 원소가 모두 1의 값을 가지는 지를 확인할 수 있다.
hi번째 원소들 중 하나라도 0인 경우, 서버(120)는 인덱스에 단계(920)에서 수신한 추가 정보에 대응하는 암호 데이터가 포함되지 않았다고 판단할 수 있다. 그리고, 서버(120)는 사용자 단말(110)에게 추가 정보에 대응하는 암호 데이터가 존재하지 않는다는 것을 알리는 메시지를 전송할 수 있다.
단계(940)에서 서버(120)는 이진 트리 구조의 검색 인덱스의 레벨들 각각에 할당된 블룸 필터를 이용하여 이진 트리 구조의 검색 인덱스에 포함된 복수의 리프 노드들 중 추가 정보에 대응하는 리프 노드를 검색할 수 있다.
이때, 서버(120)는 이진 트리 구조의 검색 인덱스의 중간 노드들 각각에 배치된 블룸 필터에 추가 정보가 포함되어 있는지 여부를 검사할 수 있다. 블룸 필터를 검사하여 블룸 필터의 hi번째 원소가 모두 1인 것이 확인되는 경우, 서버(120)는 해당 블룸 필터에 추가 정보가 포함된 것으로 판단할 수 있다.
그리고, 서버(120)는 추가 정보가 포함된 것으로 판단된 중간 노드의 하위 레벨의 노드들에 할당된 블룸 필터에 추가 정보가 포함되어 있는지 여부를 검사할 수 있다. 이때, 서버(120)는 추가 정보에 서로 다른 해시 함수를 적용하고, 서로 다른 해시 함수가 적용된 추가 정보를 이용하여 중간 노드의 하위 레벨의 노드들에 배치된 블룸 필터를 검사할 수 있다. 예를 들어, 서버(120)는 중간 노드의 자식 노드인 하위 레벨의 노드들 중 왼쪽 자식 노드(left child node)에 할당된 블룸 필터는 g1(0||T)를 사용하여 검사하고, 오른쪽 자식 노드(right child node)에 할당된 블룸 필터는 g1(1||T)를 사용하여 검사할 수 있다.
또한, 하위 레벨의 노드에 할당된 블룸 필터에서 해시 함수가 적용된 추가 정보의 값이 나타내는 좌표의 값 중에 0이 포함된 경우 서버(120)는 하위 레벨의 노드에 추가 정보가 포함되지 않았다고 판단할 수 있다. 그리고, 서버(120)는 하위 레벨의 노드의 자식 노드에 대한 검색을 수행하지 않을 수 있다.
그리고, 서버(120)는 필터링 결과 추가 정보가 포함된 것으로 판단된 노드가 이진 트리 구조의 검색 인덱스의 리프 노드(leaf node)일 때까지 상기 과정을 반복 수행할 수 있다.
단계(950)에서 서버(120)는 단계(940)에서 검색한 리프 노드에 할당된 암호 데이터를 추출할 수 있다.
단계(960)에서 서버(120)는 단계(950)에서 추출한 암호 데이터를 추가 정보에 대한 검색 결과로 사용자 단말(110)에게 전송할 수 있다.
본 발명은 키워드가 목표 집합의 원소임을 효율적으로 확인할 수 있는 블룸 필터를 이용한 트리 구조의 인덱스를 생성하여 검색 대상이 되는 암호 데이터의 추가 및 삭제가 자유로운 동적 검색 방법을 제공할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
110: 사용자 단말
120: 서버
120: 서버
Claims (1)
- 데이터의 개수 및 상기 데이터에 포함된 키워드들의 개수에 따라 이진 트리의 레벨을 결정하는 단계;
상기 이진 트리의 레벨별로 서로 다른 해시 함수들을 할당하는 단계;
상기 이진 트리의 최하위 레벨에 대응하는 리프 노드들마다 서로 다른 암호 데이터를 할당하는 단계;
상기 이진 트리의 레벨별로 할당된 해시 함수들과 상기 암호 데이터에 포함된 키워드 및 암호 데이터가 할당된 리프 노드의 식별 정보를 사용하여 상기 이진 트리의 루트 노드에서 상기 리프 노드까지의 경로에 포함된 중간 노드들 각각에 대응하는 블룸 필터들을 생성하는 단계: 및
상기 암호 데이터들과 상기 블룸 필터들을 서버로 전송하는 단계
를 포함하고,
상기 서버는,
상기 이진 트리의 레벨에 따라 이진 트리 구조의 검색 인덱스를 설정하여 초기화하고, 수신한 블룸 필터들을 이진 트리 구조의 검색 인덱스의 해당 노드에 추가하며, 상기 암호 데이터의 식별 정보를 리프 노드에 할당하는 검색 인덱스 생성 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160051127A KR20170122048A (ko) | 2016-04-26 | 2016-04-26 | 블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160051127A KR20170122048A (ko) | 2016-04-26 | 2016-04-26 | 블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170122048A true KR20170122048A (ko) | 2017-11-03 |
Family
ID=60383935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160051127A KR20170122048A (ko) | 2016-04-26 | 2016-04-26 | 블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20170122048A (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739892A (zh) * | 2018-12-27 | 2019-05-10 | 王梅 | 对互联网内的数据获取请求进行分级扩展的方法及系统 |
CN110176984A (zh) * | 2019-05-28 | 2019-08-27 | 创意信息技术股份有限公司 | 一种用于安全字符串模式匹配的数据结构构造及匹配方法 |
KR102075318B1 (ko) * | 2019-10-29 | 2020-02-07 | 주식회사 코드42 | 차량을 이용한 정보 수집 시스템 및 차량을 이용한 정보 수집 방법 |
KR20200107662A (ko) * | 2019-03-08 | 2020-09-16 | 한국전자통신연구원 | 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법 |
CN114911851A (zh) * | 2022-07-12 | 2022-08-16 | 北京信安世纪科技股份有限公司 | 数据查询方法、装置及存储介质 |
KR20240077337A (ko) | 2022-11-24 | 2024-05-31 | 서강대학교산학협력단 | 비트맵 시리얼을 이용한 동영상 데이터 무결성 검증 시스템 및 그 방법 |
-
2016
- 2016-04-26 KR KR1020160051127A patent/KR20170122048A/ko unknown
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739892A (zh) * | 2018-12-27 | 2019-05-10 | 王梅 | 对互联网内的数据获取请求进行分级扩展的方法及系统 |
CN109739892B (zh) * | 2018-12-27 | 2021-03-09 | 深圳前海网新科技有限公司 | 对互联网内的数据获取请求进行分级扩展的方法及系统 |
KR20200107662A (ko) * | 2019-03-08 | 2020-09-16 | 한국전자통신연구원 | 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법 |
US11403284B2 (en) * | 2019-03-08 | 2022-08-02 | Electronics And Telecommunications Research Institute | 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 |
CN110176984A (zh) * | 2019-05-28 | 2019-08-27 | 创意信息技术股份有限公司 | 一种用于安全字符串模式匹配的数据结构构造及匹配方法 |
CN110176984B (zh) * | 2019-05-28 | 2020-11-03 | 创意信息技术股份有限公司 | 一种用于安全字符串模式匹配的数据结构构造及匹配方法 |
KR102075318B1 (ko) * | 2019-10-29 | 2020-02-07 | 주식회사 코드42 | 차량을 이용한 정보 수집 시스템 및 차량을 이용한 정보 수집 방법 |
CN114911851A (zh) * | 2022-07-12 | 2022-08-16 | 北京信安世纪科技股份有限公司 | 数据查询方法、装置及存储介质 |
CN114911851B (zh) * | 2022-07-12 | 2022-10-14 | 北京信安世纪科技股份有限公司 | 数据查询方法、装置及存储介质 |
KR20240077337A (ko) | 2022-11-24 | 2024-05-31 | 서강대학교산학협력단 | 비트맵 시리얼을 이용한 동영상 데이터 무결성 검증 시스템 및 그 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20170122048A (ko) | 블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법 | |
Demertzis et al. | Fast searchable encryption with tunable locality | |
Im et al. | Efficient massively parallel methods for dynamic programming | |
US8533489B2 (en) | Searchable symmetric encryption with dynamic updating | |
US9300471B2 (en) | Information processing apparatus, information processing method, and program | |
Tahir et al. | A new secure and lightweight searchable encryption scheme over encrypted cloud data | |
CN106503574A (zh) | 区块链安全存储方法 | |
Jing et al. | Authentication of k nearest neighbor query on road networks | |
CN111026788B (zh) | 一种混合云中基于同态加密的多关键词密文排序检索方法 | |
JP6239213B1 (ja) | 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム | |
KR101282281B1 (ko) | 프라이버시를 보장하는 가중치 기반의 키워드 검색을 위한 방법 및 장치 | |
EP2241986A1 (en) | Privacy and confidentiality preserving schema mapping repository for mapping reuse | |
CN111753324B (zh) | 私有数据的处理方法、计算方法及所适用的设备 | |
EP2778953A1 (en) | Encoded-search database device, method for adding and deleting data for encoded search, and addition/deletion program | |
CN108092766A (zh) | 一种密文搜索权限验证方法及其系统 | |
US10700934B2 (en) | Communication control device, communication control method, and computer program product | |
US20190026502A1 (en) | Searchable symmetric encryption with enhanced locality via balanced allocations | |
US10673624B2 (en) | Communication control device, communication control method, and computer program product | |
CN117951730A (zh) | 一种基于哈希索引的云端安全可搜索加密方法 | |
CN108650268A (zh) | 一种实现多级访问的可搜索加密方法及系统 | |
CN116992464A (zh) | 一种支持动态更新的通配符可搜索加密方法及系统 | |
JP5937556B2 (ja) | 秘密計算装置、秘匿検索システム、秘密計算方法、秘匿検索方法、プログラム | |
Hwang et al. | Encrypted keyword search mechanism based on bitmap index for personal storage services | |
KR101942763B1 (ko) | 암호화 인덱스 기반 영역 질의 처리 방법 및 영역 질의 처리 시스템 | |
CN108632257A (zh) | 支持分层搜索的加密健康记录的获取方法和系统 |