KR101190061B1 - 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법 - Google Patents

결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법 Download PDF

Info

Publication number
KR101190061B1
KR101190061B1 KR1020080120412A KR20080120412A KR101190061B1 KR 101190061 B1 KR101190061 B1 KR 101190061B1 KR 1020080120412 A KR1020080120412 A KR 1020080120412A KR 20080120412 A KR20080120412 A KR 20080120412A KR 101190061 B1 KR101190061 B1 KR 101190061B1
Authority
KR
South Korea
Prior art keywords
index
data
keyword
combined
user terminal
Prior art date
Application number
KR1020080120412A
Other languages
English (en)
Other versions
KR20100062013A (ko
Inventor
조남수
홍도원
조현숙
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020080120412A priority Critical patent/KR101190061B1/ko
Priority to US12/576,537 priority patent/US20100138399A1/en
Publication of KR20100062013A publication Critical patent/KR20100062013A/ko
Application granted granted Critical
Publication of KR101190061B1 publication Critical patent/KR101190061B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법에 관한 것으로서, 결합 키워드에 대한 인덱스 테이블 및 암호화된 데이터를 서버에 저장한 후, 결합 키워드를 이용하여 서버에 저장된 데이터를 검색하는 방법에 관한 것이다. 본 발명에 따르면, 링크드 리스트(linked list)를 변형한 링크드 크리(linked tree) 구조를 이용하여 결합 키워드 검색을 수행함으로써, 각각의 키워드와 관련 데이터를 일일이 검색하지 않아도 되므로, 빠르고 효율적인이 결합 키워드 검색이 가능한 이점이 있다.
암호화, 결합 키워드 검색, 인덱스 테이블, 트랩도어, 링크드 트리

Description

결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법{Method for data encryption and method for data search using conjunctive keyword}
본 발명은 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법에 관한 것으로, 특히 결합 키워드를 이용하여 데이터를 암호화하고, 효율적으로 데이터를 검색하도록 하는 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 유비쿼터스원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-Y-001-04, 과제명: 차세대 시큐리티 기술개발].
현대 사회는 모든 정보를 디지털화하여 저장하고, 저장된 정보를 네트워크를 통해 공유하여 사용하는 사회로 변화하고 있다. 또한, 처리하는 자료의 양이 증가하고 다양한 서비스에 대한 요구가 늘어나면서 특화된 외부 저장수단의 활용이 늘고 있다. 이와 더불어 이러한 외부 저장수단에 저장된 정보에 대한 보안 문제가 이슈가 되고 있다.
외부 저장수단의 보안 문제는, 과거 개인이 독립된 저장 공간을 이용하여 스 스로 정보를 관리하던 때와는 차이를 보인다. 이는, 근본적으로 정보의 소유자와 외부 저장수단을 관리하는 주체가 서로 다르기 때문이다. 데이터베이스 등에서 정보를 보호하기 위해 주로 사용되는 접근 제어나 키 관리 기법들은 외부 침입자를 막는데 유효한 방법이지만, 외부 저장수단의 관리자가 해당 저장수단에 저장되어 있는 자료를 열람하는 것을 근본적으로 차단하지는 못한다.
이에, 정보를 안전하게 저장하기 위한 방법으로 자료의 암호화를 들 수 있다. 즉, 외부 저장수단에 저장할 정보를 안전성이 증명된 암호 시스템을 이용하여 암호화하는 것이다. 안전성이 증명된 암호 시스템은 복호화 키를 소유하지 못한 공격자가 암호화된 데이터로부터 저장된 정보를 얻을 수 없음을 보장한다. 따라서, 외부 침입자 또는 외부 저장수단의 관리자가 암호화된 데이터에 접근한다 하더라도, 해당 데이터로부터 구체적인 정보를 얻지는 못하게 된다.
한편, 정보의 암호화는 저장된 정보의 기밀성을 완벽하게 보장하는 방법이지만, 기존의 데이터베이스가 제공하는 많은 부가 기능 또한 적용할 수 없도록 만든다. 즉, 저장된 정보의 양이 많을수록 이를 효율적으로 활용하고 관리하기 위해서는 다양한 데이터 베이스 기능이 요구되기 때문에, 정보를 단순히 암호화하여 저장하는 방법은 적당한 해법이라 보기 힘들다.
검색 가능 암호 기술은 기존의 암호 기술과 같이 암호화된 정보에 대한 기밀성을 보장하면서 동시에 특정 키워드를 포함하는 자료를 검색할 수 있도록 고안된 암호 기술이다. 데이터베이스에서 제공되는 다양한 기능 중 많은 경우가 특정 키워드를 포함하는 정보에 대한 검색을 바탕으로 이루어지기 때문에 검색 가능 암호 시 스템은 앞에서 제기된 문제에 대한 해결 방안 중 하나로 여겨지고 있다.
검색 가능 암호 시스템에서 자료의 검색은 키워드 단위로 이루어진다. 즉, 특정 키워드와 사용자의 비밀키를 바탕으로 하여 트랩도어(trapdoor)를 생성하고, 이 트랩도어를 이용하여 특정 키워드를 포함하고 있는 자료를 검색하는 방식이다. 검색은 서버에 의해서 이루어지며, 서버가 저장하고 있는 암호화된 인덱스와 트랩도어를 이용한 계산을 통해 주어진 자료가 해당 키워드를 포함하고 있는지의 여부를 확인한다.
대표적인 예로, 결합 키워드 검색을 들 수 있다. 종래의 결합 키워드 검색은 여러 개의 키워드를 동시에 포함하고 있는 자료를 검색하는 것이다. 키워드 A와 B를 동시에 포함하는 자료를 검색하는 것을 예로 살펴보면 다음과 같다. 각각의 단일 키워드 A와 B에 의한 검색을 각각 수행한다고 하면, 서버는 키워드 A를 포함하는 모든 자료의 집합 S(A)와, 키워드 B를 포함하는 모든 자료의 집합 S(B)를 얻게 되고, 최종적으로 S(A)∩S(B)를 계산하여 A와 B를 동시에 포함하는 자료를 찾게 된다.
하지만, 사용자는 위의 계산을 통해서 원하는 결과를 얻을 수는 있으나, 검색 과정에서 많은 정보가 서버에게 유출된다. 즉, 서버는 사용자가 두 개의 키워드에 대한 검색을 수행하였다는 것과 S(A)와 S(B)가 각각 그 결과라는 것을 알게 된다. 따라서, 이 역시 사용자의 정보가 서버에 공개되는 것을 근본적으로 해결하지는 못한다.
또한, 현재 까지 결합 키워드 검색에 대한 연구는 공개키 방식의 검색 가능 암호 시스템에서만 이루어졌다. 그러나, 이러한 공개키 방식의 특징 때문에 암호화와 트랩도어 생성 및 검색에 많은 계산이 필요하므로, 효율성이 저하되는 문제가 있었다.
본 발명의 목적은, 링크드 리스트(linked list)를 변형한 링크드 트리(linked tree) 구조를 이용하여 효율적인 결합 키워드 검색이 가능하도록 하는 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법을 제공함에 있다.
또한, 본 발명의 다른 목적은, 복수의 키워드 뿐만 아니라 결합된 키워드에 대해서도 인덱스 테이블을 생성함으로써, 검색 키워드를 동시에 만족하는 자료만을 검색하는 것이 가능한 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법을 제공함에 있다.
또한, 본 발명의 다른 목적은, 대칭키 방식의 암호 시스템에서 결합 키워드를 이용하여 데이터를 암호화하도록 하는 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법을 제공함에 있다.
상기한 목적을 달성하기 위한 본 발명에 따른 결합 키워드를 이용한 데이터 암호화 방법은, 데이터 암호화를 위한 비밀키를 생성하고, 인덱스 테이블을 생성하기 위한 일방향 함수를 선정하는 단계, 해당 데이터로부터 복수의 키워드를 추출하여 상기 복수의 키워드를 조합하고, 각 키워드 조합으로부터 결합 키워드를 구성하는 단계, 상기 구성하는 단계의 결합 키워드를 복수의 인덱스에 각각 대응되도록 할당하는 단계, 상기 선정하는 단계에서 선정된 일방향 함수를 이용하여 각 결합 키워드 및 해당 결합 키워드가 할당된 인덱스를 암호화하고, 상기 암호화된 결합 키워드의 인덱스 테이블을 생성하는 단계, 및 상기 선정하는 단계에서 생성된 비밀키를 이용하여 각 데이터를 암호화하는 단계를 포함한다.
상기 선정하는 단계는, 두 개의 일방향 함수를 선정하도록 한다. 이때, 상기 두 개의 일방향 함수는 결합 키워드를 암호화하기 위한 일방향 함수 및 결합 키워드가 할당된 각 인덱스를 암호화하기 위한 일방향 함수이다.
상기 키워드 조합은 복수의 키워드 각각으로부터 조합할 수 있는 모든 부분집합에 해당된다.
또한, 상기 할당하는 단계 이전에, 복수의 인덱스를 생성하는 단계를 더 포함한다. 상기 인덱스를 생성하는 단계는, t개의 키워드에 대해 2t개의 인덱스를 생성하도록 한다. 여기서, t는 임의의 양의 정수이다.
상기 인덱스는 데이터 식별자, 링키지(linkage) 및 상수 중 하나 이상을 포함한다. 이때, 상기 상수는 해당 인덱스에 결합 키워드가 할당되었는지 여부를 확인하기 위한 구분자로, '0' 또는 '1'의 값은 갖는다.
또한, 상기 인덱스 테이블을 생성하는 단계는, 상기 각 인덱스에 할당된 결합 키워드 중에서 적어도 하나의 공통 키워드를 포함하는 인덱스에 대해 링키지 값을 설정하도록 한다. 이때, 적어도 하나의 공통 키워드를 포함하며, 결합된 키워드의 개수가 상기 적어도 하나의 공통 키워드의 개수보다 하나 많은 수의 결합 키워드에 대해 링키지 값을 설정하도록 하며, 상기 각 인덱스의 링키지 값은 해당 인덱스의 주소값 및 해당 인덱스의 복호화 값인 것을 특징으로 한다.
상기 인덱스 테이블은 상기 인덱스에 설정된 링키지 값에 의해 각각의 인덱스가 링크드 트리 구조를 갖도록 형성된다.
한편, 상기한 목적을 달성하기 위한 본 발명에 따른 결합 키워드를 이용한 데이터 검색방법은, 사용자 단말기로부터 복수의 키워드가 결합된 검색 키워드에 대한 트랩도어(trapdoor)를 수신하는 단계, 데이터의 결합 키워드에 대해 생성된 인덱스 테이블로부터 상기 수신된 트랩도어에 대응하는 인덱스를 추출하는 단계, 상기 추출된 인덱스를 상기 트랩도어를 이용하여 복호화하는 단계, 상기 복호화된 인덱스의 데이터 식별자를 데이터 검색 목록에 추가하고, 상기 추출된 인덱스의 링키지 값으로부터 다음 인덱스를 추출하여 데이터 검색을 수행하는 단계, 및 상기 인덱스 테이블을 이용한 데이터 검색 완료 후, 상기 데이터 검색 목록을 상기 사용자 단말기로 전송하는 단계를 포함한다.
한편, 상기 결합 키워드를 이용한 데이터 검색방법은, 상기 트랩도어를 수신하는 단계 이전에, 사용자 단말기로부터 암호화된 데이터 및 상기 암호화된 데이터의 결합 키워드에 대한 인덱스 테이블을 수신하여 저장하는 단계를 더 포함한다. 이때, 상기 인덱스 테이블의 각 인덱스는 데이터 식별자, 링키지(linkage) 및 상수 중 하나 이상을 포함한다.
상기 트랩도어는, 인덱스 생성 시, 결합 키워드를 암호화하는데 이용된 일방향 함수에 의해 암호화된 결합된 검색 키워드 및 인덱스를 암호화하는데 이용된 일방향 함수에 의해 암호화된 해쉬값을 포함한다.
상기 검색을 수행하는 단계는, 해당 인덱스의 링키지 값으로부터 링크드 트 리 구조로 검색을 수행하도록 한다. 또한, 상기 검색을 수행하는 단계는, 해당 인덱스의 링키지 값이 'EMPTY'가 될 때까지 계속 수행된다. 또한, 상기 검색을 수행하는 단계는, 해당 인덱스에 포함된 상수값으로부터 해당 인덱스가 결합 키워드가 할당된 인덱스인지 판별하는 단계를 포함한다.
한편, 상기 결합 키워드를 이용한 데이터 검색방법은, 해당 인덱스에 결합 키워드가 할당되지 않은 것으로 판단된 경우, 상기 검색을 수행하는 단계를 종료하고 해당 사용자 단말기로 에러 메시지를 전송하는 단계를 더 포함한다.
또한, 상기 전송하는 단계 이후에, 상기 사용자 단말기로부터 상기 데이터 검색 목록 중 선택된 데이터의 요청이 있는 경우, 해당 데이터를 추출하여 해당 사용자 단말기로 전송하는 단계를 더 포함한다.
본 발명에 따르면, 링크드 리스트(linked list)를 변형한 링크드 트리(linked tree) 구조를 이용하여 결합 키워드 검색을 수행함으로써, 관련 데이터를 일일이 검색하지 않아도 되므로, 빠르고 효율적인 결합 키워드 검색이 가능한 이점이 있다.
또한, 본 발명은 복수의 키워드 뿐만 아니라 결합된 키워드에 대해서도 인덱스 테이블을 생성한다. 따라서, 서버는 각각의 키워드에 대해 검색을 수행하는 것이 아니라, 데이터의 내용이나 키워드를 모른 채로 인덱스 테이블로부터 검색 키워드를 동시에 만족하는 자료만을 검색함으로써, 사용자의 중요한 데이터에 대한 기밀성을 보장할 수 있는 이점이 있다.
또한, 본 발명의 다른 목적은, 대칭키 방식의 암호 시스템에서 결합 키워드를 이용하여 데이터를 암호화함으로써, 암호화된 데이터 검색 시 연산 시간을 단축시킬 수 있는 이점이 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 설명하면 다음과 같다.
도 1은 본 발명에 따른 결합 키워드를 이용한 데이터 암호화 방법에 대한 동작 흐름을 도시한 순서도이다. 도 1을 참조하면, 먼저 사용자 단말기(10)는 데이터를 암호화하기 위한 비밀키 S를 생성한다. 또한, 사용자 단말기(10)는 데이터의 인덱스를 생성하기 위한 일방향 함수 f, h를 선정한다.
또한, 사용자 단말기(10)는 각 데이터로부터 복수의 키워드를 추출하고, 각 키워드의 조합을 구성한다. 즉, 사용자 단말기(10)는 해당 데이터로부터 추출된 복수의 키워드에 대한 모든 부분집합을 구성하도록 한다. 사용자 단말기(10)는 'S110' 과정에서 선정된 일방향 함수 f, h를 이용하여 각 키워드 조합에 대한 인덱스를 생성한다. 이때, 각 키워드 조합이 링크드 트리를 구조를 이루도록 한다. 이에 대한 구체적인 실시예는 도 4 내지 도 6c를 참조하도록 한다.
사용자 단말기(10)는 'S100' 과정에서 생성된 비밀키 S를 이용하여 데이터를 암호화한 후, 'S150' 과정에서 생성된 인덱스와 함께 서버(20)로 전송하도록 한다.
서버(20)는 사용자 단말기(10)로부터 암호화된 데이터 및 인덱스가 수신되면, 수신된 암호화된 데이터 및 인덱스를 저장하도록 한다. 이때, 서버(20)는 암호화된 데이터 및 암호화된 인덱스 만을 저장하고 있으므로, 각 데이터의 내용을 파 악할 수 없을 뿐만 아니라, 외부의 사용자 또한 서버(20)에 저장된 데이터의 내용을 확인할 수 없어 개인 정보가 외부로 유출되는 것을 방지할 수 있다.
도 2는 도 1에서 서버에 저장된 데이터를 검색하는 방법에 대한 동작 흐름을 도시한 순서도로서, 구체적으로는 결합 키워드를 이용하여 데이터를 검색하는 방법에 관한 것이다.
도 2를 참조하면, 먼저 사용자 단말기(10)는 서버(20)에 저장된 데이터를 검색하기 위한 복수의 검색 키워드를 선정한다. 또한, 사용자 단말기(10)는 'S200' 과정에서 선정된 복수의 검색 키워드 조합을 구성하도록 한다. 이때, 사용자 단말기(10)는 복수의 검색 키워드에 대한 모든 부분집합을 구성하도록 한다.
사용자 단말기(10)는 도 1의 'S140' 과정에서 인덱스를 생성하는데 이용된 일방향 함수 f, h를 이용하여 각 검색 키워드 조합에 대한 트랩도어를 생성하고, 생성된 트랩도어를 서버(20)로 전송함으로써 검색 키워드를 포함하는 데이터를 요청하도록 한다.
서버(20)는 사용자 단말기(10)로부터 트랩도어가 수신되면, 인덱스의 링크드 트리 구조를 이용하여 결합 키워드 검색을 수행하도록 한다. 여기서, 트랩도어는 인덱스 테이블을 검색하기 위한 키 및 해당 인덱스를 복호화하기 위한 비밀키를 포함한다.
이때, 사용자 단말기(10)는 사용자 단말기(10)로부터 수신된 트랩도어를 이용하여 해당 인덱스를 추출하고, 트랩도어의 비밀키를 이용하여 추출된 인덱스를 복호화하도록 한다. 또한, 사용자 단말기(10)는 복호화된 인덱스의 링키지 값을 이 용하여 인덱스 테이블을 검색하도록 한다. 이때, 사용자 단말기(10)는 트랩도어에 매칭되는 인덱스를 검출하여 복허화하도록 한다. 사용자 단말기(10)는 복호화된 인덱스로부터 해당 트랩도어에 매칭되는 데이터를 추출하여, 사용자 단말기(10)로 전송하도록 한다.
따라서, 사용자 단말기(10)는 서버(20)로부터 전송된 데이터를 도 1의 'S160' 과정의 비밀키 s를 이용하여 복호화한 후, 출력하도록 한다.
도 3a는 본 발명에 따른 데이터 구조를 나타낸 개략도이고, 도 3b는 본 발명에 따른 인덱스 테이블의 구조를 나타낸 개략도이다.
도 3a 및 도 3b를 참조하여 본 발명의 실시예를 설명하면, 먼저 사용자 단말기(10)에는 총 N개의 데이터가 저장되며, 각 데이터는 t개의 키워드를 갖는다. 이때, 사용자 단말기(10)는 각 데이터의 각 키워드를 조합하고, 각 키워드 조합에 대해 인덱스 테이블을 생성하게 된다. 예를 들어, i를 1부터 N까지의 수 중 임의의 정수라 가정하면, Data i의 키워드가 Ki1, Ki2, Ki3인 경우, 각 키워드 조합은 [Ki1], [Ki2], [Ki3], [Ki1Ki2], [Ki1Ki3], [Ki2Ki3], [Ki1Ki2Ki3]이 된다.
여기서, 각 데이터의 인덱스 테이블은 2t개의 인덱스를 갖는다. 만일, 상기와 같이 해당 데이터의 키워드가 3개인 경우, 해당 데이터의 인덱스 테이블은 23이므로 8개의 인덱스를 갖게 된다. 또한, N개의 데이터는 각각 인덱스 테이블을 가지므로, 인덱스 테이블은 총 2t×N개의 인덱스를 갖는 구조로 형성된다.
각 키워드 조합은 해당 데이터의 인덱스 테이블에 각각 대응되게 된다. 만일, 해당 데이터의 인덱스 수가 각 키워드 조합의 수 보다 많은 경우, 남은 인덱스에는 'NULL'로 표시하도록 한다.
도 4 내지 도 6c는 본 발명에 따른 인덱스 테이블을 생성하는 동작을 설명하는데 참조되는 도면이다.
먼저, 도 4의 (a)는 인덱스 테이블의 각 인덱스에 포함되는 원소의 구조를 나타낸 것이다. m을 1부터 2t까지의 수 중 임의의 정수라 가정하면, 각 인덱스에 포함되는 원소가 A[m]인 경우, A[m]={IDm, (LDm,LKm), (RDm,RKm), bm}의 구조를 갖는다.
여기서, IDm은 해당 인덱스가 속한 데이터를 구분하는 식별자이다. 이때, IDm은 1부터 N까지의 값 중 어느 하나의 값, 즉, N개의 데이터에 대해 각각 대응되는 값을 갖는다. 또한, (LDm,LKm), (RDm,RKm)은 인덱스 테이블의 링크드 트리(linked tree) 구조를 형성하기 위한 링키지(linkage) 값이다. 이에 대한 구체적인 실시예는 도 6b를 참조하도록 한다. 한편, bm은 해당 인덱스에 키워드 정보가 포함되었는지를 구분하기 위한 상수값으로 '0' 또는 '1'의 값을 갖는다. 이후, 서버(20)는 키워드 검색 시 bm의 값으로부터 해당 인덱스의 키워드 유/무를 판단하게 된다.
도 4의 (b)는 (a)의 원소 구조를 참조하여 하나의 데이터에 대한 각 인덱스 구성을 나타낸 것이다. 다시 말해, 해당 데이터는 총 2t개의 인덱스를 가지므로, 각 인덱스에 포함되는 원소는 A[1], A[2], … , A[2t]가 된다. 이때, A[1]={ID1, (LD1,LK1), (RD1,RK1), b1}, A[2]={ID2, (LD2,LK2), (RD2,RK2), b2}, … ,
Figure 112008082678722-pat00001
의 구조를 갖는다.
이에, 도 4의 인덱스 구성을 참조하여, 인덱스 테이블을 생성하는 동작을 좀 더 상세히 설명하고자 한다. 먼저, 도 5는 데이터의 인덱스 테이블에 대한 각 인덱스의 초기화 상태를 나타낸 것이다. 도 5에서와 같이, 각 원소 A[m]의 IDm, (LDm,LKm), (RDm,RKm)은 초기화 상태에서 'EMPTY'로 표시되며, bm은 '0'으로 초기화된다.
Data i의 키워드 집합이 Si라 가정하면, Si={Ki1, Ki2, …, Kit}이다. 여기서, 't > 3' 이고, Si={Ki1, Ki2, Ki3}이라면, Si는 총 t개의 키워드 개수를 맞추기 위해 Si={Ki1, Ki2}={Ki1, Ki2, *, …, *}와 같은 식으로 정의될 수도 있다. 또한, Si의 부분집합을 원소로 갖는 집합을 S라 가정하면, S=[{Ki1}, {Ki2}, {Ki3}, {Ki1Ki2}, {Ki1Ki3}, {Ki2Ki3}, {Ki1Ki2Ki3}]이다. 즉, S는 Di에 포함되는 적어도 하나의 키워드 조합을 원소로 가지게 된다.
도 6a는 데이터의 각 키워드 조합을 각 인덱스에 할당하는 동작을 나타낸 것이다. 만일, 각 인덱스에 어느 하나의 키워드 조합이 할당되면, 키워드 조합이 할 당된 인덱스 A[m]의 bm은 그 설정값이 '0'에서 '1'로 변경된다.
이때, 사용자 단말기(10)는 I(i)=f(Ki1?Ki2?…?Kit)로 정의되는 I(i)의 값을 산출하고, 산출된 I(i)에 대응되는 인덱스 A[I(i)]의 bI(i) 값을 '1'로 변경하도록 한다. 다시 말해, Si={Ki1, Ki2, Ki3}인 경우, 앞서 정의된 S=[{Ki1}, {Ki2}, {Ki3}, {Ki1Ki2}, {Ki1Ki3}, {Ki2Ki3}, {Ki1Ki2Ki3}]의 각 원소를 대응하는 인덱스 A[m]에 각각 할당하고, 해당 A[m]의 bm 값을 '1'로 변경하도록 한다.
예를 들어, Data1의 키워드 집합이 S1={K11, K12, K13}이면, S=[{K11}, {K12}, {K13}, {K11K12}, {K11K13}, {K12K13}, {K11K12K13}]이 된다. 이때, I(1)={f(K11), f(K12), f(K13), f(K11K12), f(K11K13), f(K12K13), f(K11K12K13)}이 된다. 따라서, I(1)에 대응되는 인덱스 A[f(K11)], A[f(K12)], A[f(K13)], A[f(K11K12)], A[f(K11K13)], A[f(K12K13)], A[f(K11K12K13)]의 b값은 모두 '1'로 변경된다. 한편, 대응되는 키워드 조합이 없는 인덱스 A[f(ø)]은 그 설정값이 초기값 그대로 '0'의 값을 갖는다.
한편, 도 6b는 도 6a에서 각 인덱스에 할당된 키워드 조합에 대해 링키지(linkage) 값을 설정하는 동작을 나타낸 것이다.
먼저, 사용자 단말기(10)는 S에 포함된 원소 중 Sp⊂Sq, |Sp|+1=|Sq|를 만족하는 모든 (Sp, Sq) 쌍을 추출한다. 이때, 추출된 Sp에 대응하는 인덱스 A[I(p)]에 서 Sq에 대응하는 인덱스 A[I(q)]로 연결되는 링키지를 설정하도록 한다. 즉, A[I(p)]의 링키지 값인 LDI(p)와 RDI(p) 중 어느 하나를 I(q)의 값으로 설정하고, 대응하는 LKI(p) 또는 RKI(p)를 h(I(q))의 값으로 설정하도록 한다. 따라서, A[I(p)]와 A[I(q)]가 링크드 트리 구조를 갖게 된다.
도 6b를 참조하면, S=[{K11}, {K12}, {K13}, {K11K12}, {K11K13}, {K12K13}, {K11K12K13}]에서 Sp와 Sq가 S의 원소라 가정하면, Sp⊂Sq, |Sp|+1=|Sq|를 만족하는 (Sp, Sq) 쌍은 (K11, K11K12), (K11, K11K13), (K12, K11K12), (K12, K12K13), (K13, K11K13), (K13, K12K13), (K11K12, K11K12K13), (K11K13, K11K12K13), (K12K13, K11K12K13)이다.
먼저, (K11, K11K12)로부터 I(p)=f(K11), I(q)=f(K11K12)가 된다. 따라서, A[f(K11)]의 링키지 값인 LD와 RD 중 'EMPTY' 값을 갖는 어느 하나, 예를 들어, LD를 I(q)의 값인 f(K11K12)로 설정한다. 이때, LD에 대응하는 LK를 h(I(q)), 즉, h(f(K11K12))로 설정하도록 한다. 또한, (K11, K11K13)으로부터 I(p)=f(K11), I(q)=f(K11K13)이 된다. 이때, A[f(K11)]의 링키지 값인 LD와 RD 중 'EMPTY' 값을 갖는 RD를 I(q)의 값인 f(K11K13)으로 설정한다. 이때, RD에 대응하는 RK를 h(I(q)), 즉, h(f(K11K13))으로 설정하도록 한다.
따라서, 도 6b로부터, K11에 대응하는 인덱스 A[f(K11)]는 {EMPTY, (f(K11K12), h(f(K11K12))), (f(K11K13), h(f(K11K13))), 1}로 정의된다.
한편, (K12, K11K12)로부터 I(p)=f(K12), I(q)=f(K11K12)가 된다. 따라서, A[f(K12)]의 링키지 값인 LD와 RD 중 'EMPTY' 값을 갖는 어느 하나, 예를 들어, LD를 I(q)의 값인 f(K11K12)로 설정한다. 이때, LD에 대응하는 LK를 h(I(q)), 즉, h(f(K11K12))로 설정하도록 한다. 또한, (K12, K12K13)으로부터 I(p)=f(K12), I(q)=f(K12K13)이 된다. 이때, A[f(K12)]의 링키지 값인 LD와 RD 중 'EMPTY' 값을 갖는 RD를 I(q)의 값인 f(K12K13)으로 설정한다. 이때, RD에 대응하는 RK를 h(I(q)), 즉, h(f(K12K13))으로 설정하도록 한다.
따라서, 도 6b로부터, K12에 대응하는 인덱스 A[f(K12)]는 {EMPTY, (f(K11K12), h(f(K11K12))), (f(K12K13), h(f(K12K13))), 1}로 정의된다.
한편, A[f(K11)]과 A[f(K12)]의 링키지 값으로 연결된 A[f(K11K12)]는, (K11K12, K11K12K13)으로부터 I(p)=f(K11K12), I(q)=f(K11K12K13)이 된다. 따라서, A[f(K11K12)]의 링키지 값인 LD와 RD 중 'EMPTY' 값을 갖는 어느 하나, 예를 들어, LD를 I(q)의 값인 f(K11K12K13)로 설정한다. 이때, LD에 대응하는 LK를 h(I(q)), 즉, h(f(K11K12K13))으로 설정하도록 한다. I(p)=f(K11K12)인 쌍은 더 이상 없으므로, 도 6b로부터, K11K12에 대응하는 인덱스 A[f(K11K12)]는 {EMPTY, (f(K11K12K13), h(f(K11K12K13))), EMPTY, 1}로 정의된다.
또한, A[f(K11)]의 링키지 값으로 연결된 A[f(K11K13)]은, (K11K13, K11K12K13)으로부터 I(p)=f(K11K13), I(q)=f(K11K12K13)이 된다. 따라서, A[f(K11K13)]의 링키지 값인 LD와 RD 중 'EMPTY' 값을 갖는 어느 하나, 예를 들어, LD를 I(q)의 값인 f(K11K12K13)으로 설정한다. 이때, LD에 대응하는 LK를 h(I(q)), 즉, h(f(K11K12K13))으로 설정하도록 한다. I(p)=f(K11K13)인 쌍은 더 이상 없으므로, 도 6b로부터, K11K13에 대응하는 인덱스 A[f(K11K13)]은 {EMPTY, (f(K11K12K13), h(f(K11K12K13))), EMPTY, 1}로 정의된다.
마찬가지로, A[f(K12)]의 링키지 값으로 연결된 A[f(K12K13)]은, (K12K13, K11K12K13)로부터 I(p)=f(K12K13), I(q)=f(K11K12K13)이 된다. 따라서, A[f(K12K13)]의 링키지 값인 LD와 RD 중 'EMPTY' 값을 갖는 어느 하나, 예를 들어, LD를 I(q)의 값인 f(K11K12K13)으로 설정한다. 이때, LD에 대응하는 LK를 h(I(q)), 즉, h(f(K11K12K13))으로 설정하도록 한다. I(p)=f(K12K13)인 쌍은 더 이상 없으므로, 도 6b로부터, K12K13에 대응하는 인덱스 A[f(K12K13)]은 {EMPTY, (f(K11K12K13), h(f(K11K12K13))), EMPTY, 1}로 정의된다.
한편, A[f(K11K12)], A[f(K11K13)] 및 A[f(K12K13)]의 링키지 값으로 연결된 A[f(K11K12K13)]은 I(p)=f(K11K12K13)인 쌍이 없으므로, 도 6b로부터, K11K12K13에 대응하는 인덱스 A[f(K11K12K13)]은 {EMPTY, EMPTY, EMPTY, 1}로 정의된다.
따라서, 상기한 과정에 의해 사용자 단말기(10)는 Data1의 모든 인덱스 A[f(K11)], A[f(K12)], A[f(K13)], A[f(K11K12)], A[f(K11K13)], A[f(K12K13)], A[f(K11K12K13)]를 도 6b와 같이 정의할 수 있다.
도 6c는 해당 데이터의 인덱스 테이블을 생성하는 마지막 과정으로, 도 6a 및 도 6b에서 정의된 각 인덱스에 대해 데이터 식별자를 할당하는 동작을 나타낸 것이다. 앞서 설명한 바와 같이, 데이터 식별자는 1부터 N까지의 값 중 데이터에 대응하는 값을 갖는다. 예를 들어, Data1의 인덱스에 대해서는 데이터 식별자를 ID1=1로 설정할 수 있다. 즉, 도 6c에 도시된 바와 같이, Data1의 각 인덱스 A[f(K11)], A[f(K12)], A[f(K13)], A[f(K11K12)], A[f(K11K13)], A[f(K12K13)], A[f(K11K12K13)]에 대해 ID의 값을 '1'로 설정하도록 한다.
한편, Data1의 인덱스 테이블 중 키워드 조합이 할당되지 않은 인덱스 A[f(ø)]에 대해서는, b의 값을 제외한 ID, (LD, LK), (RD, RK)의 모든 값을 임의로 선택한 난수열로 채우도록 한다.
마지막으로, 사용자 단말기(10)는 h(I(i))를 이용하여 각 인덱스 A[I(i)]를 암호화함으로써, 도 6c와 같이 Data1에 대한 인덱스 테이블을 완성하도록 한다. 다시 말해, 도 6c에서 A[f(K11)]은 h(f(K11))에 의해 암호화되고, A[f(K12)]는 A(f(K12))에 의해 암호화되고, A[f(K13)]은 h(f(K13))에 의해 암호화된다. 또한, A[f(K11K12)]는 h(f(K11K12))에 의해 암호화되고, A[f(K11K13)]은 h(f(K11K13))에 의해 암호화되고, A[f(K12K13)]은 h(f(K12K13))에 의해 암호화된다. 또한, A[f(K11K12K13)]은 h(f(K11K12K13))에 의해 암호화된다.
마찬가지로, 사용자 단말기(10)는 Data2 내지 Data N에 대해서도, 도 6a 내지 도 6c의 과정을 거쳐 인덱스 테이블을 생성함으로써, 모든 데이터에 대한 인덱스 테이블을 완성하도록 한다.
한편, 도 7a 내지 도 7c는 도 6b의 다른 실시예를 나타낸 것으로, 인덱스를 확장하여 링키지 값을 추가하는 경우의 실시예를 나타낸 것이다.
앞의 실시예에서 하나의 인덱스에는 2개의 링키지 값을 추가할 수 있다. 만일, 어느 하나의 키워드 조합에 대응하는 링키기 값이 3 이상인 경우 해당 인덱스에는 더 이상 링키지 값을 추가할 수 없게 된다.
이 경우, 사용자 단말기(10)는 키워드 조합이 할당되지 않은 인덱스를 이용하여 해당 인덱스를 확장하도록 한다.
다시 말해, 도 7a에 도시된 바와 같이, 인덱스 A[I(i)]의 링키지 값이 {EMPTY, (I(j), h(I(j))), I(k), h(I(k))), 1}로 설정된 상태에서 새로운 링키지 값을 추가하고자 하는 경우, 사용자 단말기(10)는 키워드 조합이 할당되지 않은 인덱스 A[I(n)]을 이용하여 A[I(i)]의 링키지 값을 추가하도록 한다. 이때, 키워드 조합이 할당되지 않은 인덱스는 b의 값으로 확인할 수 있으며, b=0인 인덱스를 이 용하도록 한다.
먼저, 사용자 단말기(10)는 도 7b에 도시된 바와 같이, A[I(n)]의 bI(n)=0을 bI(n)=1로 변경한다. 또한, 사용자 단말기(10)는 A[I(i)]의 링키지 값인 (I(j), h(I(j))), I(k), h(I(k)))을 복사하여, A[I(n)]의 링키지 값으로 설정하도록 한다.
이후, 사용자 단말기(10)는 도 7c에 도시된 바와 같이, A[I(i)]의 LDI(i) 값을 I(n)으로 설정하고, LDI(i)에 대응하는 LKI(i) 값을 h(I(n))으로 설정하도록 한다. 또한, RDI(i) 및 RKI(i) 값을 'EMPTY'로 설정하도록 한다. 따라서, A[I(i)]에서 A[I(n)]으로 링크되도록 함과 동시에, A[I(i)]를 확장하는 것이 가능하게 된다.
도 8은 각 인덱스의 링크드 트리 구조를 나타낸 것이다. 특히, 도 8은 키워드가 A, B, C, D인 데이터의 결합 키워드 중 A를 공통 키워드로 하는 인덱스의 링크드 트리 구조를 나타낸 것이다.
도 8의 실시예에서는 키워드 A가 할당된 인덱스를 '인덱스A', 결합 키워드 AB가 할당된 인덱스를 '인덱스AB', 결합 키워드 AC가 할당된 인덱스를 '인덱스AC', 결합 키워드 AD가 할당된 인덱스를 '인덱스AD', 결합 키워드 ABC가 할당된 인덱스를 '인덱스ABC', 결합 키워드 ABD가 할당된 인덱스를 '인덱스ABD', 결합 키워드 ACD가 할당된 인덱스를 '인덱스ACD', 결합 키워드 ABCD가 할당된 인덱스를 '인덱스ABCD'라 가정한다. 또한, 인덱스A의 확장형 인덱스는 인덱스A'라 가정하여 설명하도록 한다.
먼저, 인덱스A는 키워드 A를 포함하는 인덱스AD로 링크된다. 또한, 인덱스A는 인덱스A의 확장형 인덱스인 인덱스A'로 링크된다. 이때, 인덱스A는 인덱스A'로부터 인덱스AB 및 인덱스AC로 링크된다.
또한, 인덱스AD는 결합 키워드 AD를 포함하는 인덱스ABD 및 인덱스ACD로 링크되고, 인덱스AB는 결합 키워드 AB를 포함하는 인덱스ABD 및 ABC로 링크된다. 또한, 인덱스AC는 결합 키워드 AC를 포함하는 인덱스ABC 및 인덱스ACD로 링크된다.
마지막으로, 인덱스ACD, 인덱스ABD및 인덱스 ABC는 해당 인덱스의 결합 키워드를 모두 포함하는 인덱스 ABCD로 각각 링크된다.
마찬가지로, 인덱스B, 인덱스C 및 인덱스D에서 시작하는 링크드 트리 구조 또한 마찬가지 방법으로 형성된다.
사용자 단말기(10)는 각 데이터에 대한 인덱스 테이블을 생성한 후에, 비밀키 'S'를 이용하여 각 데이터를 암호화하도록 한다. 이렇게 암호화된 데이터 및 인덱스 테이블은 서버(20)에 전송되어 저장된다.
한편, 사용자 단말기(10)는 서버(20)에 저장된 데이터를 검색하고자 하는 경우, 사용자로부터 복수의 검색 키워드가 선정되면, 선정된 복수의 검색 키워드를 결합한다. 이때, 사용자 단말기(10)는 결합 키워드에 대한 트랩도어를 생성하도록 한다. 예를 들어, 복수의 검색 키워드가 a, b인 경우, 사용자 단말기(10)는 각 검색 키워드 a와 b를 결합한 ab에 대한 트랩도어를 생성하도록 한다. 여기서, ab는 'a∩b'를 의미하는 것이다.
사용자 단말기(10)는 결합 키워드에 대한 트랩도어 생성 시, 인덱스를 암호 화하는데 이용된 f와 h를 이용하여 트랩도어를 생성하도록 한다. 다시 말해, 사용자 단말기(10)는 결합 키워드 ab에 대해 T=(f(ab), h(ab))=(x, y)와 같이 트랩도어를 생성한다. 이때, 사용자 단말기(10)는 결합 키워드에 생성된 트랩도어 T=(x, y)를 서버(20)로 전송하여, 결합 키워드를 포함하는 데이터를 요청하도록 한다.
한편, 서버(20)는 사용자 단말기(10)로부터 트랩도어 T=(x, y)가 수신되면, 수신된 트랩도어를 이용하여 저장된 인덱스 테이블을 검색하도록 한다. 여기서, 인덱스 검색 시 이용되는 인덱스 테이블은 도 6c를 참조하도록 한다.
먼저, 서버(20)는 x로부터 A[x]에 해당되는 인덱스를 추출한다. 이때, x=f(ab)이므로, f(ab)에 대응되는 인덱스 A[f(ab)]를 추출한다. 또한, 인덱스 테이블에 포함된 각각의 인덱스는 암호화되어 있으므로, 트랩도어의 y값을 이용하여 추출된 인덱스를 복호화하도록 한다. 이때, y=h(ab)이므로, h(ab)를 이용하여 A[f(ab)]를 복호화하도록 한다.
서버(20)는 A[f(ab)]의 데이터 식별자인 ID 값을 데이터 검색 목록에 추가하도록 한다. 예를 들어, Data1의 키워드 중 K11=a이고, K12=b인 경우, 서버(20)는 A[f(K11K12)]을 검출하여 h(K11K12)로 복호화한다. 이때, A[f(K11K12)]의 데이터 식별자 ID=1로부터 데이터 검색 목록에 'Data1'을 추가하도록 한다.
여기서, 도 6c를 참조하면, A[f(K11K12)]는 (LD, LK) 값으로 f(K11K12K13), h(f(K11K12K13))이 설정되어 있다. 따라서, 서버(20)는 A[f(K11K12)]의 링키지 값인 f(K11K12K13)에 의해 링크된 A[f(K11K12K13)]에 대해서도 검색을 수행하도록 한다. 이때, 서버(20)는 A[f(K11K12)]의 LK 값, 즉, h(f(K11K12K13)을 이용하여 A[f(K11K12K13)]를 복호화하도록 한다. 서버(20)는 모든 링키지 값이 'EMPTY'가 될 때까지 검색을 계속 수행하도록 한다.
또한, Data N의 키워드 중 KN2=a이고, KN3=b인 경우, 서버(20)는 A[f(KN2KN3)]을 검출하여 h(KN2KN3)로 복호화한다. 이때, A[f(KN2KN3)]의 데이터 식별자 ID=N으로부터 데이터 검색 목록에 'Data N'을 추가하도록 한다. 서버(20)는 A[f(KN2KN3)]의 링키지 값에 대응하는 인덱스에 대해서도 계속하여 검색을 수행하도록 한다.
여기서, 본 발명에서는, 데이터의 키워드 뿐만 아니라 결합 키워드에 대해서도 인덱스 테이블을 생성하였으므로, 서버(20)는 결합 키워드 ab로부터 생성된 트랩도어 수신 시, 인덱스 테이블로부터 결합 키워드 ab에 대응하는 인덱스를 바로 추출하는 것이 가능하다. 따라서, 서버(20)는 키워드 a 또는 키워드 b를 포함하는 인덱스에 대한 검색을 별도로 수행하지 않아도 되므로, 기존의 데이터 검색 방법에 비해 검색 시간을 단축시킬 수 있어 효율성이 증대되는 이점이 있다.
한편, 서버(20)는 모든 인덱스 테이블로부터 검색을 완료하면, 검색 중 작성된 데이터 검색 목록을 사용자 단말기(10)로 전송하도록 한다. 만일, 사용자로부터 데이터 검색 목록 중 어느 하나의 데이터 요청이 있는 경우, 서버(20)는 해당 데이터를 추출하여 사용자 단말기(10)로 전송하도록 한다.
만일, 트랩도어를 이용하여 검색을 수행하는 중 b=0의 값을 갖는 인덱스가 하나라도 검색되면, 서버(20)는 검색을 중단하고 사용자 단말기(10)로 검색 실패를 알리는 메시지를 전송하도록 한다.
이상에서와 같이 본 발명에 따른 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
도 1 은 본 발명에 따른 데이터 암호화 방법에 대한 동작 흐름을 도시한 순서도,
도 2 는 본 발명에 따른 데이터 검색 방법에 대한 동작 흐름을 도시한 순서도,
도 3a 및 도 3b 는 본 발명에 적용되는 데이터 및 인덱스 테이블의 구조를 나타낸 예시도,
도 4는 본 발명에 따른 인덱스의 세부 구조를 나타낸 예시도,
도 5 내지 도 7 은 본 발명에 따른 인덱스 테이블을 생성하는 동작 설명에 참조되는 예시도,
도 8 은 본 발명에 따른 링크드 트리 구조를 나타낸 예시도이다.

Claims (20)

  1. 휴대 단말기에서의 결합 키워드를 이용한 데이터 암호화 방법으로서,
    사용자 단말기에 의해, 데이터 암호화를 위한 비밀키를 생성하고, 인덱스 테이블을 생성하기 위해서 결합 키워드를 암호화하기 위한 일방향 함수 및 결합 키워드가 할당된 각 인덱스를 암호화하기 위한 일방향 함수를 포함하는 두 개의 일방향 함수를 선정하는 단계;
    상기 사용자 단말기에 의해, 해당 데이터로부터 복수의 키워드를 추출하여 상기 복수의 키워드를 조합하고, 각 키워드 조합으로부터 결합 키워드를 구성하는 단계;
    상기 사용자 단말기에 의해, 복수의 인덱스를 생성하는 단계;(t개의 키워드에 따른 2t 개의 인덱스를 생성하는 것으로, 상기 t는 임의의 양의 정수)
    상기 사용자 단말기에 의해, 상기 구성하는 단계의 결합 키워드를 상기 생성하는 단계에서 생성된 복수의 인덱스에 각각 대응되도록 할당하는 단계;
    상기 사용자 단말기에 의해, 상기 선정하는 단계에서 선정된 일방향 함수를 이용하여 각 결합 키워드 및 해당 결합 키워드가 할당된 인덱스를 암호화하고, 상기 암호화된 결합 키워드의 인덱스 테이블을 생성하는 단계; 및
    상기 사용자 단말기에 의해, 상기 선정하는 단계에서 생성된 비밀키를 이용하여 각 데이터를 암호화하는 단계;를 포함하는 결합 키워드를 이용한 데이터 암호화 방법.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 키워드 조합은,
    복수의 키워드 각각으로부터 조합할 수 있는 모든 부분집합에 해당되는 것을 특징으로 하는 결합 키워드를 이용한 데이터 암호화 방법.
  4. 삭제
  5. 삭제
  6. 청구항 1에 있어서,
    상기 인덱스는,
    데이터 식별자, 링키지(linkage) 및 상수 중 하나 이상을 포함하는 것을 특 징으로 하는 결합 키워드를 이용한 데이터 암호화 방법.
  7. 청구항 6에 있어서,
    상기 상수는,
    해당 인덱스에 결합 키워드가 할당되었는지 여부를 확인하기 위한 구분자로, '0' 또는 '1'의 값을 갖는 것을 특징으로 하는 결합 키워드를 이용한 데이터 암호화 방법.
  8. 청구항 1에 있어서,
    상기 인덱스 테이블을 생성하는 단계는,
    상기 각 인덱스에 할당된 결합 키워드 중에서 적어도 하나의 공통 키워드를 포함하는 인덱스에 대해 링키지 값을 설정하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 암호화 방법.
  9. 청구항 8에 있어서,
    상기 인덱스 테이블을 생성하는 단계는,
    적어도 하나의 공통 키워드를 포함하며, 결합된 키워드의 개수가 상기 적어도 하나의 공통 키워드의 개수보다 하나 많은 수의 결합 키워드에 대해 링키지 값을 설정하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 암호화 방법.
  10. 청구항 8에 있어서,
    상기 각 인덱스의 상기 링키지 값은,
    해당 인덱스의 주소값 및 해당 인덱스의 복호화 값인 것을 특징으로 하는 결합 키워드를 이용한 데이터 암호화 방법.
  11. 청구항 8에 있어서,
    상기 인덱스 테이블은,
    상기 인덱스에 설정된 링키지 값에 의해 각각의 인덱스가 링크드 트리 구조를 갖도록 형성되는 것을 특징으로 하는 결합 키워드를 이용한 데이터 암호화 방법.
  12. 사용자 단말기에 의해 암호화된 데이터 및 암호화된 데이터의 결합 키워드에 대한 인덱스 테이블이 저장된 서버에서의 결합 키워드를 이용한 데이터 검색방법으로서,
    상기 서버에 의해, 사용자 단말기로부터 복수의 키워드가 결합된 검색 키워드에 대한 트랩도어(trapdoor)를 수신하는 단계;
    상기 서버에 의해, 데이터의 결합 키워드에 대해 생성된 인덱스 테이블로부터 상기 수신된 트랩도어에 대응하는 인덱스를 추출하는 단계;
    상기 서버에 의해, 상기 추출된 인덱스를 결합 키워드를 암호화하는데 이용된 일방향 함수에 의해 암호화된 결합된 검색 키워드 및 인덱스를 암호화하는데 이용된 일방향 함수에 의해 암호화된 해쉬값을 포함하는 상기 트랩도어를 이용하여 복호화하는 단계;
    상기 서버에 의해, 상기 사용자 단말기가 복호화된 인덱스의 링키지 값으로부터 인덱스 테이블을 이용하여 데이터 검색을 수행하는 단계; 및
    상기 서버에 의해, 상기 인덱스 테이블을 이용한 데이터 검색 완료 후, 데이터 검색 목록을 상기 사용자 단말기로 전송하는 단계;를 포함하는 결합 키워드를 이용한 데이터 검색방법.
  13. 청구항 12에 있어서,
    상기 트랩도어를 수신하는 단계 이전에,
    사용자 단말기로부터 암호화된 데이터 및 상기 암호화된 데이터의 결합 키워드에 대한 인덱스 테이블을 수신하여 저장하는 단계;를 더 포함하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
  14. 청구항 13에 있어서,
    상기 인덱스 테이블의 각 인덱스는,
    데이터 식별자, 링키지(linkage) 및 상수 중 하나 이상을 포함하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
  15. 청구항 12에 있어서,
    상기 트랩도어는,
    인덱스 생성 시, 결합 키워드를 암호화하는데 이용된 일방향 함수에 의해 암 호화된 결합된 검색 키워드 및 인덱스를 암호화하는데 이용된 일방향 함수에 의해 암호화된 해쉬값을 포함하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
  16. 청구항 12에 있어서,
    상기 검색을 수행하는 단계는,
    해당 인덱스의 링키지 값으로부터 링크드 트리 구조로 검색을 수행하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
  17. 청구항 12에 있어서,
    상기 검색을 수행하는 단계는,
    해당 인덱스의 링키지 값이 존재하지 않을 때까지 계속 수행되는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
  18. 청구항 12에 있어서,
    상기 검색을 수행하는 단계는,
    해당 인덱스에 포함된 상수값으로부터 해당 인덱스가 결합 키워드가 할당된 인덱스인지 판별하는 단계;를 포함하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
  19. 청구항 18에 있어서,
    해당 인덱스에 결합 키워드가 할당되지 않은 것으로 판단된 경우, 상기 검색을 수행하는 단계를 종료하고 해당 사용자 단말기로 에러 메시지를 전송하는 단계;를 더 포함하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
  20. 청구항 12에 있어서,
    상기 전송하는 단계 이후에,
    상기 사용자 단말기로부터 상기 데이터 검색 목록 중 선택된 데이터의 요청이 있는 경우, 해당 데이터를 추출하여 해당 사용자 단말기로 전송하는 단계;를 더 포함하는 것을 특징으로 하는 결합 키워드를 이용한 데이터 검색방법.
KR1020080120412A 2008-12-01 2008-12-01 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법 KR101190061B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080120412A KR101190061B1 (ko) 2008-12-01 2008-12-01 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법
US12/576,537 US20100138399A1 (en) 2008-12-01 2009-10-09 Method for data encryption and method for data search using conjunctive keyword

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080120412A KR101190061B1 (ko) 2008-12-01 2008-12-01 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법

Publications (2)

Publication Number Publication Date
KR20100062013A KR20100062013A (ko) 2010-06-10
KR101190061B1 true KR101190061B1 (ko) 2012-10-11

Family

ID=42223722

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080120412A KR101190061B1 (ko) 2008-12-01 2008-12-01 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법

Country Status (2)

Country Link
US (1) US20100138399A1 (ko)
KR (1) KR101190061B1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101041568B1 (ko) * 2008-12-16 2011-06-15 한국전자통신연구원 다수의 데이터베이스에 저장된 보호가 필요한 정보들의 평균값 산출 방법
US8468345B2 (en) 2009-11-16 2013-06-18 Microsoft Corporation Containerless data for trustworthy computing and data services
US9537650B2 (en) 2009-12-15 2017-01-03 Microsoft Technology Licensing, Llc Verifiable trust for data through wrapper composition
US10348693B2 (en) * 2009-12-15 2019-07-09 Microsoft Technology Licensing, Llc Trustworthy extensible markup language for trustworthy computing and data services
KR20120068524A (ko) * 2010-12-17 2012-06-27 한국전자통신연구원 데이터 관리 장치 및 데이터 관리 방법
US9311494B2 (en) * 2011-12-01 2016-04-12 Hitachi, Ltd. Secure search method and secure search device
WO2013118280A1 (ja) * 2012-02-09 2013-08-15 株式会社日立製作所 機密データ漏えい防止装置および方法
US20140188626A1 (en) * 2012-12-29 2014-07-03 Nokia Corporation Method and apparatus for secure advertising
US9646166B2 (en) 2013-08-05 2017-05-09 International Business Machines Corporation Masking query data access pattern in encrypted data
US9852306B2 (en) * 2013-08-05 2017-12-26 International Business Machines Corporation Conjunctive search in encrypted data
CN106407362A (zh) * 2016-09-08 2017-02-15 福建中金在线信息科技有限公司 一种关键词信息检索的方法及装置
CN108632248B (zh) * 2018-03-22 2019-10-29 平安科技(深圳)有限公司 数据加密方法、数据查询方法、装置、设备及存储介质
US11250151B2 (en) * 2020-05-05 2022-02-15 Google Llc Encrypted search over encrypted data with reduced volume leakage
KR102407803B1 (ko) * 2021-03-03 2022-06-10 연세대학교 산학협력단 레이킹을 활용한 재현 데이터 정보 보호 방법 및 장치
CN116431736B (zh) * 2023-02-06 2023-10-20 北京三维天地科技股份有限公司 一种在线数据仓库模型的构建方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7362868B2 (en) * 2000-10-20 2008-04-22 Eruces, Inc. Hidden link dynamic key manager for use in computer systems with database structure for storage of encrypted data and method for storage and retrieval of encrypted data
US7797342B2 (en) * 2004-09-03 2010-09-14 Sybase, Inc. Database system providing encrypted column support for applications
US8219564B1 (en) * 2008-04-29 2012-07-10 Netapp, Inc. Two-dimensional indexes for quick multiple attribute search in a catalog system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US A1

Also Published As

Publication number Publication date
KR20100062013A (ko) 2010-06-10
US20100138399A1 (en) 2010-06-03

Similar Documents

Publication Publication Date Title
KR101190061B1 (ko) 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법
JP4958246B2 (ja) 高速検索可能な暗号化のための方法、装置およびシステム
KR101190059B1 (ko) 데이터 암호화 방법 및 암호화된 데이터의 결합 키워드 검색방법
JP5084817B2 (ja) 暗号文の索引付けおよび検索方法と装置
US20190020630A1 (en) Encrypted query-based access to data
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
CN112800445B (zh) 一种用于密文数据的前后向安全和可验证的布尔查询方法
US8874929B2 (en) Cross domain discovery
KR100903599B1 (ko) 내적을 이용한 암호화된 데이터 검색 방법 및 이를 위한단말 장치와 서버
CN114826703B (zh) 基于区块链的数据搜索细粒度访问控制方法及系统
WO2017036547A1 (en) Method for providing encrypted data in a database and method for searching on encrypted data
EP2798809A1 (en) Dynamic pseudonymization method for user data profiling networks and user data profiling network implementing the method
CN108400970A (zh) 云环境中相似数据消息锁定加密去重方法、云存储系统
JP2012164031A (ja) データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
Yiu et al. Outsourcing search services on private spatial data
CN114417073B (zh) 一种加密图的邻居节点查询方法及装置、电子设备
KR101979267B1 (ko) 클라우드 저장 기반 암호화 시스템 및 방법
RuWei et al. Study of privacy-preserving framework for cloud storage
JP5140026B2 (ja) データベース処理方法、データベース処理プログラム、および、暗号化装置
CN107395587B (zh) 一种基于多点协作机制的数据管理方法及系统
CN116611083A (zh) 一种医疗数据共享方法及系统
Ou et al. An Efficient and Privacy‐Preserving Multiuser Cloud‐Based LBS Query Scheme
Dayıoğlu Secure database in cloud computing-cryptdb revisited
KR102386717B1 (ko) 익명 사용자 속성기반의 데이터 접근 제어 시스템 및 방법
CN109672525B (zh) 一种具有前向索引的可搜索公钥加密方法及系统

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
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20150910

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160728

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171101

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180821

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 8