KR20230003238A - 감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색 - Google Patents

감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색 Download PDF

Info

Publication number
KR20230003238A
KR20230003238A KR1020227042292A KR20227042292A KR20230003238A KR 20230003238 A KR20230003238 A KR 20230003238A KR 1020227042292 A KR1020227042292 A KR 1020227042292A KR 20227042292 A KR20227042292 A KR 20227042292A KR 20230003238 A KR20230003238 A KR 20230003238A
Authority
KR
South Korea
Prior art keywords
keyword
encrypted
list
keywords
document
Prior art date
Application number
KR1020227042292A
Other languages
English (en)
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 구글 엘엘씨
Publication of KR20230003238A publication Critical patent/KR20230003238A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/144Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/156Query results presentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

방법(900)은 신뢰되지 않는 스토리지 디바이스(150) 상에 저장되는 하나 이상의 암호화된 문서들(152)에서 나타나는 사용자 디바이스(10)로부터의 복수의 키워드들(32)에 대한 검색 질의(20)를 수신하는 것을 포함한다. 방법은 복수의 키워드들 중 제1 키워드 및 제2 키워드를 포함하는 문서를 각각 나타내는 문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스하는 것을 또한 포함한다. 방법은, 각각의 나머지 키워드에 대해, 제1, 제2, 및 개개의 나머지 키워드를 포함하는 문서를 각각 나타내는 문서 식별자들의 대응하는 목록을 결정하는 것을 또한 포함한다. 방법은, 문서 식별자들의 제1 목록 및 문서 식별자들의 각각의 대응하는 목록에 기초하여, 복수의 키워드들 각각을 포함하는 문서를 각각 나타내는 문서 식별자들의 제2 목록을 결정하는 것을 포함한다.

Description

감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색
[0001] 본 개시내용은 감소된 볼륨 누출로 암호화된 데이터에 대해 암호화된 검색(encrypted search)들을 수행하는 것에 관한 것이다.
[0002] 검색 가능한 암호화(즉, 암호화된 검색)는 클라우드에 많은 양들의 데이터의 저장이 더욱 보편화 됨에 따라, 인기도가 증가하였다. 점점 더 많이, 사용자 또는 클라이언트는 클라이언트의 제어 하에 있지 않은 서버(즉, 서버는 신뢰되지 않음)에 저장되는 암호화된 문서들의 대규모 집성본(corpus)을 소유하고 있다. 검색 가능한 암호화를 통해, 클라이언트는 그들의 암호화된 문서들을 신뢰되지 않는 서버 상에 저장할 수 있지만, 문서들을 검색하는 성능을 여전히 유지할 수 있고, 예를 들면, 특정한 키워드를 포함하는 모든 문서들의 식별자들을 리트리브(retrieve)할 수 있다. 그러나, 그러한 검색 가능한 암호화는 종종 보안 및 프라이버시 결점들과 함께 오게 된다.
[0003] 본 개시의 하나의 양태는 감소된 볼륨 누출로 암호화된 데이터에 대해 암호화된 검색을 수행하기 위한 방법을 제공한다. 방법은, 데이터 프로세싱 하드웨어에서, 사용자와 연관되는 사용자 디바이스로부터 복수의 키워드들에 대한 검색 질의(search query)를 수신하는 것을 포함한다. 복수의 키워드들은 신뢰되지 않는 스토리지 디바이스 상에 저장되는 암호화된 문서들의 집성본 내의 하나 이상의 암호화된 문서들에서 나타난다. 방법은, 데이터 프로세싱 하드웨어에 의해, 문서 식별자들의 제1 목록을 획득하기 위해 암호화된 검색 인덱스에 액세스하는 것을 또한 포함한다. 문서 식별자들의 제1 목록 내의 각각의 문서 식별자는, 복수의 키워드들 중 제1 키워드 및 복수의 키워드들 중 제2 키워드를 포함하는 문서를 나타낸다. 하나 이상의 암호화된 문서들에서 제1 키워드 및 제2 키워드 이후에 나타나는 각각의 나머지 키워드에 대해, 방법은, 데이터 프로세싱 하드웨어에 의해, 문서 식별자들의 대응하는 목록을 결정하는 것을 포함한다. 문서 식별자들의 대응하는 목록 내의 각각의 문서 식별자는 제1 키워드, 제2 키워드, 및 개개의 나머지 키워드를 포함하는 문서를 나타낸다. 방법은, 데이터 프로세싱 하드웨어에 의해, 문서 식별자들의 제1 목록 및 문서 식별자들의 각각의 대응하는 목록에 기초하여, 문서 식별자들의 제2 목록을 결정하는 것을 또한 포함한다. 문서 식별자들의 제2 목록 내의 각각의 문서 식별자는 복수의 키워드들 각각을 포함하는 문서를 나타낸다. 방법은, 데이터 프로세싱 하드웨어에 의해, 암호화된 검색 인덱스로부터 획득되는 문서 식별자들의 제2 목록을 사용자 디바이스에게 반환하는 것을 또한 포함한다.
[0004] 본 개시의 구현예들은 다음의 옵션 사항의 피처들 중 하나 이상을 포함할 수 있다. 몇몇 구현예들에서, 암호화된 검색 인덱스는, 하나 이상의 암호화된 문서에서 나타나는 키워드들의 각각의 개개의 쌍에 대해, 키워드들의 개개의 쌍 내의 키워드들 둘 모두를 포함하는 문서를 나타내는 문서 식별자들의 키워드 쌍 목록을 나타내는 암호화된 값, 및 암호화된 값 및 키워드들의 개개의 쌍 내의 키워드들 중 하나를 나타내는 암호화된 태그를 포함한다. 각각의 암호화된 값은 키워드들의 쌍 및 비밀 마스터 키에 기초하여 의사랜덤 함수 키(pseudorandom function key)를 사용하여 암호화될 수 있다.
[0005] 의사랜덤 함수 키는, 몇몇 예들에서, 쌍의 키워드들의 연접(concatenation)에 기초한다. 옵션 사항으로(optionally), 각각의 암호화된 태그는 키워드들 중 하나 및 비밀 마스터 키에 기초하여 의사랜덤 함수 키를 사용하여 암호화된다. 암호화된 검색 인덱스는, 하나 이상의 암호화된 문서들에서 나타나는 키워드들의 각각의 개개의 쌍에 대해, 이중 태그(double tag)들의 목록을 더 포함할 수 있다. 이중 태그들의 목록 내의 각각의 이중 태그는 키워드들의 개개의 쌍에 대한 대응하는 암호화된 태그의 암호화된 해시를 포함할 수 있다.
[0006] 몇몇 구현예들에서, 문서 식별자들의 제2 목록을 결정하는 것은, 하나 이상의 암호화된 문서들에서 제1 키워드 및 제2 키워드 이후에 나타나는 각각의 나머지 키워드에 대해, 개개의 나머지 키워드에 대응하는 이중 태그가 이중 태그들의 목록 내에 존재하는지의 여부를 결정하는 것 및 개개의 나머지 키워드에 대응하지 않는 각각의 이중 태그를 이중 태그들의 목록으로부터 제거하는 것을 포함할 수 있다. 몇몇 예들에서, 문서 식별자들의 제1 목록을 획득하기 위해 암호화된 검색 인덱스에 액세스하는 것은 제1 키워드 및 제2 키워드에 대응하는 문서 식별자들의 키워드 쌍 목록을 리트리브하는 것(retrieving)을 포함한다.
[0007] 검색 질의는 제1 키워드 및 제2 키워드를 나타내는 토큰을 포함할 수 있고, 그리고, 하나 이상의 암호화된 문서들에서 제1 키워드 및 제2 키워드 이후에 나타나는 각각의 나머지 키워드에 대해, 제1 키워드 및 개개의 나머지 키워드를 나타내는 토큰을 포함할 수 있다. 몇몇 구현예들에서, 암호화된 검색 인덱스로부터 획득되는 문서 식별자들의 제2 목록을 사용자 디바이스에게 반환하는 것은, 사용자 디바이스로 하여금, 비밀 마스터 키를 사용하여 문서 식별자들의 제2 목록을 암호 해제(decrypt)하게 한다.
[0008] 본 개시내용의 다른 양태는 감소된 볼륨 누출로 암호화된 데이터에 대해 암호화된 검색을 수행하기 위한 시스템을 제공한다. 시스템은 데이터 프로세싱 하드웨어 및 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는, 데이터 프로세싱 하드웨어 상에서 실행될 때, 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장한다. 동작들은 사용자와 연관되는 사용자 디바이스로부터 복수의 키워드들에 대한 검색 질의를 수신하는 것을 포함한다. 복수의 키워드들은 신뢰되지 않는 스토리지 디바이스 상에 저장되는 암호화된 문서들의 집성본 내의 하나 이상의 암호화된 문서들에서 나타난다. 동작들은 문서 식별자들의 제1 목록을 획득하기 위해 암호화된 검색 인덱스에 액세스하는 동작을 또한 포함된다. 문서 식별자들의 제1 목록 내의 각각의 문서 식별자는, 복수의 키워드들 중 제1 키워드 및 복수의 키워드들 중 제2 키워드를 포함하는 문서를 나타낸다. 하나 이상의 암호화된 문서들에서 제1 키워드 및 제2 키워드 이후에 나타나는 각각의 나머지 키워드에 대해, 동작들은 문서 식별자들의 대응하는 목록을 결정하는 것을 포함한다. 문서 식별자들의 대응하는 목록 내의 각각의 문서 식별자는 제1 키워드, 제2 키워드, 및 개개의 나머지 키워드를 포함하는 문서를 나타낸다. 동작들은, 문서 식별자들의 제1 목록 및 문서 식별자들의 각각의 대응하는 목록에 기초하여, 문서 식별자들의 제2 목록을 결정하는 것을 또한 포함한다. 문서 식별자들의 제2 목록 내의 각각의 문서 식별자는 복수의 키워드들 각각을 포함하는 문서를 나타낸다. 동작들은 암호화된 검색 인덱스로부터 획득되는 문서 식별자들의 제2 목록을 사용자 디바이스에게 반환하는 것을 또한 포함한다.
[0009] 이 양태는 다음의 옵션 사항의 피처들 중 하나 이상을 포함할 수 있다. 몇몇 구현예들에서, 암호화된 검색 인덱스는, 하나 이상의 암호화된 문서에서 나타나는 키워드들의 각각의 개개의 쌍에 대해, 키워드들의 개개의 쌍 내의 키워드들 둘 모두를 포함하는 문서를 나타내는 문서 식별자들의 키워드 쌍 목록을 나타내는 암호화된 값, 및 암호화된 값 및 키워드들의 개개의 쌍 내의 키워드들 중 하나를 나타내는 암호화된 태그를 포함한다. 각각의 암호화된 값은 키워드들의 쌍 및 비밀 마스터 키에 기초하여 의사랜덤 함수 키를 사용하여 암호화될 수 있다.
[0010] 의사랜덤 함수 키는, 몇몇 예들에서, 쌍의 키워드들의 연접에 기초한다. 옵션 사항으로, 각각의 암호화된 태그는 키워드들 중 하나 및 비밀 마스터 키에 기초하여 의사랜덤 함수 키를 사용하여 암호화된다. 암호화된 검색 인덱스는, 하나 이상의 암호화된 문서들에서 나타나는 키워드들의 각각의 개개의 쌍에 대해, 이중 태그들의 목록을 더 포함할 수 있다. 이중 태그들의 목록 내의 각각의 이중 태그는 키워드들의 개개의 쌍에 대한 대응하는 암호화된 태그의 암호화된 해시를 포함할 수 있다.
[0011] 몇몇 구현예들에서, 문서 식별자들의 제2 목록을 결정하는 것은, 하나 이상의 암호화된 문서들에서 제1 키워드 및 제2 키워드 이후에 나타나는 각각의 나머지 키워드에 대해, 개개의 나머지 키워드에 대응하는 이중 태그가 이중 태그들의 목록 내에 존재하는지의 여부를 결정하는 것 및 개개의 나머지 키워드에 대응하지 않는 각각의 이중 태그를 이중 태그들의 목록으로부터 제거하는 것을 포함할 수 있다. 몇몇 예들에서, 문서 식별자들의 제1 목록을 획득하기 위해 암호화된 검색 인덱스에 액세스하는 것은 제1 키워드 및 제2 키워드에 대응하는 문서 식별자들의 키워드 쌍 목록을 리트리브하는 것을 포함한다.
[0012] 검색 질의는 제1 키워드 및 제2 키워드를 나타내는 토큰을 포함할 수 있고, 그리고, 하나 이상의 암호화된 문서들에서 제1 키워드 및 제2 키워드 이후에 나타나는 각각의 나머지 키워드에 대해, 제1 키워드 및 개개의 나머지 키워드를 나타내는 토큰을 포함할 수 있다. 몇몇 구현예들에서, 암호화된 검색 인덱스로부터 획득되는 문서 식별자들의 제2 목록을 사용자 디바이스에게 반환하는 것은, 사용자 디바이스로 하여금, 비밀 마스터 키를 사용하여 문서 식별자들의 제2 목록을 암호 해제하게 한다.
[0013] 본 개시의 하나 이상의 구현예들의 세부사항들은 첨부의 도면들 및 하기의 설명에서 기재된다. 다른 양태들, 피처들 및 이점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
[0014] 도 1은 감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색을 제공하는 예시적인 시스템의 개략도이다.
[0015] 도 2는 암호화된 검색 인덱스의 예시적인 컴포넌트들의 개략도이다.
[0016] 도 3은 문서 식별자들의 목록을 필터링하는 암호화된 검색 관리자의 개략도이다.
[0017] 도 4는 도 3의 필터링에 기초하여 문서 식별자들의 제2 목록을 결정하는 암호화된 검색 관리자의 개략도이다.
[0018] 도 5는 암호화된 태그들 및 값들을 갖는 암호화된 검색 인덱스의 개략도이다.
[0019] 도 6a 및 도 6b는 클라이언트 암호화 검색 시스템(client encrypted search system)의 개략도들이다.
[0020] 도 7a 내지 도 7d는 시스템이 결합 질의(conjunctive query)들을 수행하기 위한 형식적인 설명(formal description)들의 개략도들이다.
[0021] 도 8a 내지 도 8d는 시스템이 논리곱 정규형(conjunctive normal form; CNF) 질의들을 수행하기 위한 형식적인 설명들의 개략도들이다.
[0022] 도 9는 감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색을 제공하는 방법에 대한 동작들의 예시적인 배열의 플로우차트이다.
[0023] 도 10은 본원에서 설명되는 시스템들 및 방법들을 구현하기 위해 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0024] 다양한 도면들에서 유사한 참조 부호들은 유사한 엘리먼트들을 표시한다(indicate).
[0025] 검색 가능한 암호화(이것은 암호화된 검색 또는 구조화된 암호화로서 또한 지칭될 수 있음)의 인기도가 증가하고 있다. 검색 가능한 암호화의 목표는 클라이언트가 암호화된 문서들의 집성본의 저장을 신뢰되지 않는 서버에 아웃소싱하는 것을 가능하게 하는 것이다. 예를 들면, 클라이언트는 많은 수의 문서들(또는 서버에 업로딩되는 임의의 다른 아이템, 예컨대 사진들, 전자메일들 등)을 클라우드 기반의 스토리지 솔루션에 안전하게 저장하기를 소망할 수 있다. 용어 문서들은 일반적으로 사용되며, 임의의 종류의 디지털 파일들(예를 들면, 사진들, 노래들, 데이터베이스 엔트리들 등)을 나타낼 수 있다. 통상적으로, 클라이언트는, 암호화가 제공하는 문서들의 프라이버시 및 보안성을 동시에 유지하면서, 문서들을 효율적으로 검색하는 능력(즉, 하나 이상의 특정한 키워드들에 대한 검색)을 유지하기를 원할 것이다. 이러한 프라이버시를 유지하기 위해, 문서들의 내용들 또는 클라이언트로부터의 질의들에 관련되는 정보는 신뢰되지 않는 서버로부터 숨겨진 상태로 유지되어야 한다. 이 문제를 해결하는 일반적인 방식은, 신뢰되지 않는 서버 상에 저장되는 문서들 모두의 키워드들 및 연관된 문서 식별자들을 인덱싱하는 별개의 암호화된 검색 인덱스(즉, 암호화된 멀티맵)의 생성이다. 효율적인 구성을 가능하게 하기 위해, 암호화된 검색 인덱스들은 잘 정의되고 "합리적인" 양의 정보를 누출하도록 통상적으로 허용된다.
[0026] 이 검색 인덱스는 신뢰되지 않는 서버가 액세스할 수 없는 키를 사용하여 암호화되고, 그 다음, 문서들과 함께 저장된다. 그 다음, 클라이언트는 서버가 암호화된 검색 인덱스에 대해 평가하는 검색 질의를 생성할 수 있다. 평가는 신뢰되지 않는 서버가 클라이언트에게 반환하는 검색 질의의 키워드와 연관되는 암호화된 문서 식별자들을 초래한다. 이러한 방식으로, 클라이언트는 (예를 들면, 신뢰되지 않는 서버로의) 정보 누출을 최소화하면서 키워드를 포함하는 문서들의 문서 식별자들의 목록을 수신한다.
[0027] 결합 질의들은 하나 이상의 키워드들을 포함하는 질의들이며 응답은 질의된 키워드들 각각을 각각 포함하는 문서들의 세트로 구성되어야 한다. 예를 들면, 클라이언트가 암호화된 검색 인덱스를 구현하는 원격 스토리지 시스템에 결합 질의(
Figure pct00001
)를 제출하는 것을 고려한다. 단순 접근법(naive approach)은, 각각의 개개의 키워드를 개별적으로 포함하는 문서 식별자들의 세트를 획득하기 위해 암호화된 검색 인덱스의 q 번의 검색들을 수행한다. 문서 식별자들의 q 개의 세트들 각각은 클라이언트로 반환될 수 있고 클라이언트는 모든 세트들의 결합을 국부적으로 수행할 수 있다. 이 경우, 클라이언트에게 전달되는 정보의 양은 최적인 것보다 상당히 더 많을 가능성이 있다. 즉, 이 접근법은 결합 세트 내의 각각의 값을 q 번 전달한다. 이것은, 반환되는 문서 식별자들의 대부분이 아니면 많은 것들이 키워드들 각각을 포함하지 않으며, 따라서, 불필요하게 정보를 누출한다는 사실에 의해 상황이 악화된다. 이상적인 시나리오에서, 원격 스토리지 시스템은 누출을 최소화하기 위해 질의된 키워드들 각각을 포함하는 문서 식별자들만을 반환한다.
[0028] 본원에서의 구현예들은, 효율성 또는 유용성을 손상시키지 않으면서 볼륨 누출을 억제하는 표현적 부울 질의(expressive Boolean query)들(예를 들면, 결합 질의들 및/또는 논리곱 정규형(CNF) 질의들)을 지원하는 암호화된 검색 인덱스를 포함하는 시스템을 대상으로 한다. 시스템은, 신뢰되지 않는 스토리지 디바이스에 저장되는 암호화된 문서들의 집성본에서 나타나는 키워드들의 각각의 쌍에 대한 암호화된 해시를 포함하는 암호화된 검색 인덱스를 포함한다. 각각의 암호화된 해시는 키워드들의 쌍을 포함하는 문서 식별자들의 목록을 나타낸다. 키워드들의 쌍을 포함하는 문서 식별자들의 목록은 질의 내의 나머지 키워드들로부터 결과들을 필터링하기 위해 사용되며, 따라서, 클라이언트로 전달되는 정보의 양 및 신뢰되지 않는 스토리지 디바이스로 누출되는 정보의 양을 크게 감소시킨다.
[0029] 이제 도 1을 참조하면, 몇몇 구현예들에서, 예시적인 시스템(100)은 개개의 사용자 또는 클라이언트(12)와 연관되며 네트워크(112)를 통해 신뢰되지 않는 원격 시스템(111)과 통신하는 사용자 디바이스(10)를 포함한다. 사용자 디바이스(10)는 임의의 컴퓨팅 디바이스, 예컨대 데스크탑 워크스테이션, 랩탑 워크스테이션, 또는 모바일 디바이스(즉, 스마트폰)에 대응할 수 있다. 사용자 디바이스(10)는 컴퓨팅 리소스들(18)(예를 들면, 데이터 프로세싱 하드웨어) 및/또는 스토리지 리소스들(16)(예를 들면, 메모리 하드웨어)를 포함한다.
[0030] 원격 시스템(111)은 확장 가능한/탄성적인 컴퓨팅 리소스들(118)(예를 들면, 데이터 프로세싱 하드웨어) 및/또는 스토리지 리소스들(116)(예를 들면, 메모리 하드웨어)를 구비하는 단일의 컴퓨터, 다수의 컴퓨터들, 또는 분산형 시스템(예를 들면, 클라우드 환경)일 수 있다. 신뢰되지 않는 문서 데이터 저장소(150)(즉, 원격 스토리지 디바이스(150))는 클라이언트 또는 컴퓨팅 리소스들(118) 중 하나 이상에 의한 스토리지 리소스들(116)의 확장 가능한 사용을 허용하기 위해 스토리지 리소스들(116) 상에 배치된다. 문서 데이터 저장소(150)는 문서들(152, 152a-n)의 집성본을 저장하도록 구성된다. 각각의 문서(152)는 연관된 문서(152)(예를 들면, 문서 이름)를 고유하게 식별하는 문서 식별자(154)를 포함한다. 각각의 문서(152)는 키워드들(32)의 세트를 또한 포함한다. 키워드들(32)의 세트는 사용자(12)가 검색할 수 있는 연관된 암호화된 문서(152)에서 나타나는 모든 키워드들을 포함한다. 본원에서 사용되는 바와 같이, 문서(152)는 문서 데이터 저장소(150) 내에서의 저장을 위해 원격 시스템(111) 상으로 업로딩되는 임의의 아이템, 예컨대, 제한 없이, 전자메일들, 캘린더 이벤트들, 메모들, 데이터베이스 엔트리들, 사진들, 오디오 파일들 등을 지칭할 수 있다. 몇몇 구현예들에서, 사용자 디바이스(10)는 데이터 저장소(150) 내의 암호화된 문서들(152)에 대한 액세스를 관리하기 위한 검색 가능한 암호화(Searchable Encryption; SE) 관리자(120)를 실행한다.
[0031] 사용자(12)는 사용자 디바이스(10) 상에서 실행되는 소프트웨어 애플리케이션(예를 들면, 웹 브라우저)을 통해 SE 관리자(120)와 상호 작용할 수 있다. 소프트웨어 애플리케이션(즉, 소프트웨어 리소스)은 컴퓨팅 디바이스로 하여금 태스크를 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 몇몇 예들에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱", 또는 "프로그램"으로 지칭될 수 있다. 예시적인 애플리케이션들은, 시스템 진단 애플리케이션들, 시스템 관리 애플리케이션들, 시스템 유지 보수 애플리케이션들, 워드 프로세싱 애플리케이션들, 스프레드시트 애플리케이션들, 메시징 애플리케이션들, 미디어 스트리밍 애플리케이션들, 소셜 네트워킹 애플리케이션들, 및 게이밍 애플리케이션들을 포함하지만, 이들로 제한되지는 않는다. 하기에서 더욱 상세하게 논의되는 바와 같이, 사용자 디바이스(10)는 신뢰되지 않는 데이터 저장소(150) 내에 저장되는 값들을 암호화하기 위한 의사랜덤 함수(15) 및 마스터 키(14)를 사용하여 클라이언트 암호화 검색 시스템(600)을 실행할 수 있다.
[0032] SE 관리자(120)는, 사용자 디바이스(10)로부터, 신뢰되지 않는 스토리지 디바이스(150) 상에 저장되는 암호화된 문서들(152) 중 하나 이상에서 나타나는 복수의 키워드들(32)에 대한 검색 질의(20)를 수신한다. SE 관리자(120)는 문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스한다. 문서 식별자들(154)의 제1 목록 내의 각각의 문서 식별자(154)는 암호화되고 복수의 키워드들(32) 중 제1 키워드(32) 및 복수의 키워드들(32) 중 제2 키워드(32)를 포함하는 문서(152)를 나타낸다. 즉, SE 관리자(120)는 복수의 키워드들(32) 중 두 개를 각각 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 목록을 검색 인덱스(160)로부터 획득한다. 하기에서 더욱 상세하게 논의되는 바와 같이, 검색 인덱스(160)는 문서들(152)에서 나타나는 키워드들(32)의 각각의 쌍에 대한 문서 식별자들(154)의 대응하는 목록을 포함한다. 예를 들면, SE 관리자(120)가, 키워드들(32) "cat", "dog", "elephant", 및 "fox"에 대한 검색을 포함하는 질의(20)를 수신하는 경우, SE 관리자(120)는 암호화된 검색 인덱스(160)에 액세스하여 "cat", "dog", "elephant", 및 "fox" 중 임의의 두 개(예를 들면, "cat" 및 "dog" 둘 모두 또는 "cat" 및 "fox" 둘 모두)를 포함하는 문서들(152)에 대응하는 문서 식별자들(154)의 목록을 획득할 것이다.
[0033] 하기에서 더욱 상세하게 논의되는 바와 같이, 몇몇 예들에서, 검색 질의(20)는 제1 키워드(32) 및 제2 키워드(32)를 나타내는 토큰(24)을 포함한다. 검색 질의(20)는, 질의(20)에서 제1 키워드(32) 및 제2 키워드(32) 이후의 각각의 나머지 키워드(32)에 대해, 제1 키워드(32) 및 나머지 키워드(32)를 나타내는 토큰(24)을 또한 포함할 수 있다.
[0034] 하나 이상의 암호화된 문서들에서 제1 키워드 및 제2 키워드 이후에 나타나는 각각의 나머지 키워드(32)에 대해, SE 관리자(120)는, 제1 키워드, 제2 키워드 및, 개개의 나머지 키워드를 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 대응하는 목록을 결정한다. 키워드들(32)은 검색 질의(20) 또는 문서들(152)에서의 키워드들(32)의 어떠한 순서에도 관계없이 임의의 순서로 프로세싱될 수 있다. 키워드들(32) "cat", "dog", "elephant" 및 "fox"를 포함하는 질의(20)의 이전 예로 돌아가서, SE 관리자(120)는 키워드들(32) "cat" 및 "dog"를 포함하는 문서 식별자들(154)의 목록을 먼저 획득할 수 있다. 그 다음, SE 관리자(120)는, 각각의 나머지 키워드(32)(즉, "elephant" 및 "fox")에 대해, "cat", "dog" 및 나머지 키워드를 포함하는 문서 식별자들(154)의 대응하는 목록을 결정할 수 있다. 이 예에서, SE 관리자(120)는 문서 식별자들의 두 개의 대응하는 목록들을 결정한다: 키워드들(32) "cat", "dog", 및 "elephant"를 각각 포함하는 문서들(152)을 나타내는 문서 식별자들의 제1 목록 및 키워드들(32) "cat", "dog", 및 "fox"를 포함하는 문서들(152)을 각각 나타내는 문서 식별자들(154)의 제2 목록.
[0035] SE 관리자(120)는, 문서 식별자들(154)의 제1 목록(즉, 제1 키워드(32) 및 제2 키워드(32)를 각각 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 목록) 및 문서 식별자들(154)의 각각의 대응하는 목록(즉, 제1 키워드(32), 제2 키워드, 및 나머지 키워드(32)를 각각 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 목록들)에 기초하여, 질의(20)의 복수의 키워드들(32) 각각을 포함하는 문서(152)를 나타내는 각각의 문서 식별자(154)를 갖는 문서 식별자들(154)의 제2 목록을 결정한다. 다시 이전의 예로 돌아가서, 문서 식별자들(154)의 제2 목록은 "dog", "cat", "elephant" 및 "fox" 각각을 포함하는 각각의 문서(152)를 나타낸다. SE 관리자(120)는 암호화된 검색 인덱스(160)로부터 획득되는 문서 식별자들(154)의 제2 목록을 사용자 디바이스(10)에게 반환한다. 사용자 디바이스는, 예를 들면, 비밀 마스터 키(14)를 사용하여 문서 식별자들(154)의 제2 목록을 암호 해제할 수 있다.
[0036] 이제 도 2를 참조하면, 몇몇 구현예들에서, 암호화된 검색 인덱스(160)는 각각의 키워드(32)(k1, k2, k3, ..., kn)를 문서 식별자들(154, 154a-n)의 대응하는 목록과 연관시키는 제1 부분(162a)을 포함한다. 각각의 목록 내의 각각의 문서 식별자(154)는 대응하는 키워드(32)를 포함하는 문서(152)를 나타낸다. 도시되는 예에서, 키워드(32)(k1)는 문서 식별자들(154a)의 목록과 연관된다. 각각의 문서 식별자(154a)는 키워드(32)(k1)를 포함하는 문서(152)를 나타내거나, 또는 그와 연관된다. 사용자(12)가 질의(20)에서 포함할 수 있는 각각의 키워드(32)는 문서 식별자들(154)의 대응하는 목록을 포함한다. SE 관리자(120)가 단일의 키워드(32)에 대해서만 사용자 디바이스(10)로부터 질의(20)를 수신하는 경우, SE 관리자(120)는 단일의 질의된 키워드(32)와 연관되는 문서 식별자들(154)의 대응하는 목록을 단순히 반환할 수 있다.
[0037] 암호화된 검색 인덱스(160)는, 몇몇 예들에서, 키워드들(32)의 각각의 쌍을 문서 식별자들(154, 154e-n)의 대응하는 목록과 연관시키는 제2 부분(162b)을 또한 포함한다. 즉, 키워드들(32)의 쌍들의 모든 조합은 쌍의 키워드들(32) 둘 모두를 포함하는 문서(152)를 각각 나타내는 문서 식별자들(154)의 대응하는 목록과 연관된다. 도시되는 예에서, 키워드들(k1 및 k2)은 문서 식별자들(154e)의 목록과 연관된다. 여기서, 각각의 문서 식별자(154e)는 k1 및 k2 둘 모두를 포함한다. 유사하게, 키워드들(32)(k1 및 k3)의 쌍은 문서 식별자들(154f)의 목록과 연관되고 키워드들(32)(k1 및 kn)은 문서 식별자들(154g)의 목록과 연관된다.
[0038] 이제 도 3을 참조하면, 몇몇 예들에서, SE 관리자(120)는, 질의(20)를 수신한 이후, 제1 키워드(32) 및 제2 키워드(32)를 포함하는 문서 식별자들(154)의 목록을 먼저 획득한다. SE 관리자(120)는 질의의 제1 키워드(32) 및 제2 키워드(32)에 대응하는 토큰(24)(도 1)에 기초하여 이 목록을 획득할 수 있다. 이 예에서, SE 관리자(120)는 키워드들(32)(k1, k2, k3, k4, 및 k5)을 포함하는 질의(20)를 수신하였다. 즉, 사용자 디바이스(10)는 키워드들(32)(k1-k5) 각각을 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 반환을 요청하는 질의(20)를 전송하였다. 하기에서 더욱 상세하게 논의되는 바와 같이, 문서 식별자들(154)의 대응하는 목록은 질의(20)에서의 나머지 키워드들(32) 각각에 대한 결과들을 (임의의 순서로) 필터링하기 위해 사용된다. 여기서, SE 관리자(120)는 키워드들(k1 및 k2)과 연관되는 문서 식별자들(154e)의 목록을 리트리브하지만, SE 관리자(120)는 질의(20)에 포함되는 키워드들(32)의 임의의 쌍(예를 들면, k2 및 k5, k3 및 k4, k1 및 k5 등)에 대응하는 문서 식별자들(154)의 목록을 리트리브할 수 있다. 몇몇 구현예들에서, 사용자 디바이스(10)는 (예를 들면, 토큰(24)을 통해) 키워드들(32)의 어떤 쌍을 선택할지를 명시하고, 한편, 다른 구현예들에서, SE 관리자(120)는 키워드들(32)의 어떤 쌍을 선택할지를 결정한다. 몇몇 예들에서, 목록 내의 문서 식별자들(154)의 수를 감소시키는 것이, 상응하여, 누출되는 정보의 양을 감소시킬 수 있기 때문에, 사용자 디바이스(10) 또는 SE 관리자(120)가 적은 수의 문서 식별자들(154)에 대응할 가능성이 가장 높은 키워드들(32)의 쌍을 선택하는 것이 유리하다. 예를 들면, 가장 덜 공통인 키워드들(32)이 적은 수의 문서 식별자들(154)에 대응할 가능성이 가장 높을 수 있기 때문에, 사용자 디바이스(10)는 질의(20)에 포함되는 두 개의 가장 덜 공통인 키워드들(32)을 선택한다. 사용자 디바이스(10) 및/또는 SE 관리자(120)는 질의(20)에서 가장 많이 또는 가장 덜 공통인 키워드들(32)을 결정하기 위해 데이터베이스 또는 다른 데이터 구조를 참조할 수 있다.
[0039] 질의(20)의 제1 및 제2 키워드들(32)에 대응하는 문서 식별자들(154)의 목록을 획득한 이후, SE 관리자(120)는, 질의(20)에서의 각각의 나머지 키워드(32)에 대해, 제1 키워드(32) 및 제2 키워드(32)를 포함하는 문서 식별자들(154)의 목록으로부터 나머지 키워드(32)를 포함하는 문서 식별자들(154)의 대응하는 목록을 (예를 들면, 질의(20)에서의 나머지 토큰들(24)에 기초하여) 결정할 수 있다. 도 3에서 도시되는 예에서, SE 관리자(120)는 문서 식별자들(154e)의 목록(즉, k1 및 k2 둘 모두를 포함하는 문서 식별자들(154)의 목록) 내의 어떤 문서 식별자들(154)이 키워드(k3)를 포함하는지를 결정하는 것에 의해, 문서 식별자들(154ea)의 목록을 획득한다. 유사하게, SE 관리자(120)는, 키워드(k4)를 포함하는 문서 식별자들(154e)의 목록으로부터 문서 식별자들(154eb)의 목록을 결정하고 키워드(k5)를 포함하는 문서 식별자들(154e)의 목록으로부터 문서 식별자들(154ec)의 목록을 또한 결정한다. 이것은, 키워드들(32)(k1, k2, 및 k3)을 포함하는 문서 식별자들(154ea)의 대응하는 목록, 키워드들(32)(k1, k2, 및 k4)을 포함하는 문서 식별자들(154eb)의 대응하는 목록, 및 키워드들(32)(k1, k2, 및 k5)을 포함하는 문서 식별자들(154ec)의 대응하는 목록을 초래한다.
[0040] 이제 도 4를 참조하면, SE 관리자(120)는, 몇몇 구현예들에서, 질의(20) 내의 키워드들(32) 모두를 각각 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 제2 목록을 획득하기 위해, 문서 식별자들(154)의 대응하는 목록들 각각에 어떤 문서 식별자들(154)이 포함되는지를 결정한다. 도 3으로부터의 예를 계속하면, 도 4는, 키워드들(32)(k1, k2, k3, k4, 및 k5)에 대한 질의(20)에 응답하여, SE 관리자(120)가 문서 식별자들(154ea, 154eb, 154ec)의 대응하는 목록들을 획득하는 것을 도시한다. 문서 식별자들(154ea, 154eb, 154ec)의 이들 대응하는 목록들에 기초하여, SE 관리자(120)는 문서 식별자들(154ed)의 목록을 결정한다. 예를 들면, SE 관리자(120)는 어떤 문서 식별자들(154)이 문서 식별자들(154ea, 154eb, 154ec)의 대응하는 목록들에서 공통인지(즉, 각각의 목록에 나타남)를 결정한다. 각각의 문서 식별자(154ed)는 키워드들(32)(k1, k2, k3, k4, 및 k5) 각각을 포함하는 문서(152)를 나타낸다. 문서 식별자들(154ed)의 제2 목록은 질의(20)에 응답하여 사용자 디바이스(10)로 반환된다.
[0041] 이제 도 5를 참조하면, 몇몇 구현예들에서, 개략도(500)는, 신뢰되지 않는 스토리지 디바이스(150) 상에 저장되는 암호화된 문서들(152)에서 나타나는 키워드들(32)의 각각의 개개의 쌍에 대해, 키워드들(32)의 개개의 쌍 내의 키워드들(32) 둘 모두를 포함하는 문서(152)를 나타내는 문서 식별자들(154)의 키워드(32) 쌍 목록을 나타내는 암호화된 값(510), 및 암호화된 값(510) 및 키워드들(32)의 개개의 쌍 내의 키워드들(32) 중 하나를 나타내는 암호화된 태그(512)를 포함하는 암호화된 검색 인덱스(160)를 도시한다. 도시되는 예에서, 키워드들(32)(k1 및 k2)의 쌍은 키워드들(32)(k1 및 k2) 둘 모두를 포함하는 문서들(152)을 나타내는 문서 식별자들(154e)의 대응하는 목록을 갖는다. 키워드들(32)(k1 및 k2)의 쌍은 암호화된 값(510a) 및 암호화된 태그(512a)와 연관된다.
[0042] 암호화된 값(510)은 키워드들(32)의 연관된 쌍에 대응하는 문서 식별자들(154)의 목록의 표현일 수 있다. 즉, 사용자 디바이스(10)는, 암호화된 값(510)을 암호 해제한 이후, 암호 해제된 값으로부터 문서 식별자들(154)의 연관된 목록을 복구할 수 있다. 암호화된 태그(512)는 연관된 암호화된 값(510)에 대응하는 키워드들(32)의 연관된 쌍을 나타낼 수 있다. 따라서, SE 관리자(120)가 키워드들(32)의 쌍에 대응하는 문서 식별자들(154)의 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스할 때, SE 관리자(120)는 키워드들(32)의 쌍에 대응하는 암호화된 태그(512)와 연관되는 암호화된 값(510)에 액세스할 수 있다. 몇몇 구현예들에서, 암호화된 값(510)은 값 키(520)를 통해 암호화되고, 한편, 암호화된 태그(512)는 태그 키(522)를 사용하여 암호화된다. 값 키(520) 및 태그 키(522) 둘 모두가 대응하는 암호화된 값(510)/암호화된 태그(512)와 연관되는 키워드들(32) 중 하나 또는 둘 모두에 의존할 수 있기 때문에, 각각의 값 키(520)와 각각의 태그 키(522)는 고유하다. 도시되는 예에서, 키워드들(32)(k1 및 k2)의 쌍은 암호화된 값(510a) 및 암호화된 태그(512a)와 연관된다. SE 관리자(120)는, 제1 키워드(32) 및 제2 키워드(32)를 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스할 때, SE 관리자(120)는 제1 키워드(32) 및 제2 키워드(32)(예를 들면, 암호화된 태그(512))에 대응하는 문서 식별자들(154)의 키워드(32) 쌍 목록(예를 들면, 암호화된 값(510))을 리트리브할 수 있다.
[0043] 몇몇 구현예들에서, 암호화된 검색 인덱스(160)는, 문서들(152)에서 나타나는 키워드들(32)의 각각의 개개의 쌍에 대해, 이중 태그들(514)의 목록을 더 포함하는데, 이중 태그들(514)의 목록 내의 각각의 이중 태그(514)는 키워드들(32)의 개개의 쌍에 대한 대응하는 암호화된 태그(512)의 암호화된 해시(515)를 포함한다. 즉, 이중 태그들(514)은 암호화된 태그들(512)의 해시들(예를 들면, 태그 키(522)를 사용함)일 수 있다. 여기서, 암호화된 이중 태그(514a)는 태그(512a)를 대응하는 태그 키(522a)를 사용하여 암호화하는 것에 의해 암호화된 태그(512a)로부터 생성된다. 하기에서 논의되는 바와 같이, 이중 태그들(514)의 추가는 암호화된 검색 인덱스(160)의 효율성을 증가시킨다.
[0044] SE 관리자(120)가 문서 식별자들(154)의 제2 목록(즉, 질의(20)의 키워드들(32) 각각을 각각 포함하는 문서들(152)을 나타내는 문서 식별자들(154)의 목록)를 결정할 때, 몇몇 예들에서, 하나 이상의 암호화된 문서들(152)에서 제1 키워드(32) 및 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해, SE 관리자(120)는, 개개의 나머지 키워드(32)에 대응하는 이중 태그(514)가 이중 태그들의 목록(514) 내에 존재하는지의 여부를 결정한다. SE 관리자(120)는, 개개의 나머지 키워드(32)에 대응하지 않는 각각의 이중 태그(514)를 이중 태그들(514)의 목록으로부터 제거할 수 있다. 따라서, SE 관리자(120)는, 질의(20)의 각각의 나머지 키워드(32)에 대해, 질의(20)에서의 키워드들(32) 중 적어도 하나를 포함하지 않는 이중 태그들(514)을 제거한다. SE 관리자(120)가 각각의 나머지 키워드(32)를 평가한 이후, 나머지 이중 태그들(514)만이 문서 식별자들(154)의 제2 목록을 나타낸다. 이것은, 제1 키워드(32) 및 제2 키워드(32)를 포함하는 문서(152)를 각각 나타내는 문서 식별자들(154)의 제1 목록을 SE 관리자(120)가 신속하고 효율적으로 필터링하는 것을 허용할 수 있다.
[0045] 이제 도 6a를 참조하면, 몇몇 예들에서, 클라이언트 암호화 검색 시스템(600)은, 키워드들(32)의 연관된 쌍 및 비밀 마스터 키(14)에 기초하여 값 키(520)(예를 들면, 의사랜덤 함수 키)를 사용하여 암호화된 값(510)을 암호화하는 것에 의해 각각의 암호화된 값(510)을 생성한다. 키워드들(32)의 쌍은 함께 연접될 수 있다. 옵션 사항으로, 비밀 마스터 키(14)는 사용자 디바이스(10) 상에 저장되고 및/또는 사용자(12)에 의해서만 액세스 가능하다. 의사랜덤 함수(15)는 연접된 키워드들(32)의 대응하는 쌍 및 비밀 마스터 키(14)를 수신하고 대응하는 암호화된 값(510)을 암호화하는 대응하는 값 키(520)를 생성한다. 즉, 각각의 값 키(520)는 키워드 쌍 내의 키워드들(32) 둘 모두에 기초한다. 도 6b에서 도시되는 바와 같이, 클라이언트 암호화 검색 시스템(600)은, 키워드들(32)의 쌍의 키워드들(32) 중 하나 및 비밀 마스터 키(14)에 기초하여 태그 키(522)(즉, 의사랜덤 함수 키)를 사용하여 각각의 암호화된 태그(512)를 암호화하는 것에 의해 각각의 암호화된 태그(512)를 또한 생성할 수 있다. 즉, 암호화된 값(510)이 키워드들(32)의 쌍 내의 키워드들(32) 둘 모두에 기초하여 생성되는 값 키(520)에 기초할 수 있지만, 암호화된 태그는 키워드들(32)의 쌍 내의 키워드들(32) 중 하나에 기초하여 생성되는 태그 키(522)에 기초할 수 있다. 도 6b에서, 클라이언트 암호화 검색 시스템(600)은 키워드(32)(ki) 및 마스터 키(14)를 사용하여 키워드들(32)(ki 및 kj)의 쌍에 대한 태그 키(522)를 생성한다. 그러나, 클라이언트 암호화 검색 시스템(600)은 키워드(32)(kj)에 기초하여 태그 키(522)를 또한 생성할 수 있다.
[0046] 이제 도 7a 내지 도 7d를 참조하면, 개략도들(700a-d)은, 두 개 이상의 키워드들(32)을 포함하는 결합 질의(20)를 생성하고 그에 응답하기 위한 SE 관리자(120) 및 클라이언트 암호화 검색 시스템(600)의 구성에 대한 형식적인 설명을 제공한다. 개략도(700a)는 암호화된 검색 인덱스(160)(즉, 암호화된 멀티맵(encrypted multi-map) 또는 EMM)에 대한 형식적인 설명을 제공한다. 단계들 1 및 2에서, 사용자 디바이스(10)는 의사랜덤 함수(15) 및 비밀 마스터 키(14)에 대한 키들을 랜덤하게 선택한다. 단계 3에서, 멀티맵은 초기화되고, 단계 4에서, 사용자 디바이스(10)는 키워드들(32)의 각각의 쌍에 대해 대응하는 암호화된 값(510) 및 암호화된 태그(512)를 생성한다. 단계 5에서, 멀티맵은 암호화되고 암호화된 검색 인덱스(160)를 형성한다. 단계 6에서, 이중 태그들(514)의 세트는 초기화되고, 단계 7에서, 사용자 디바이스(10)는 키워드들(32)의 각각의 쌍에 대한 각각의 이중 태그(514)를 생성한다. 사용자 디바이스는, 단계 8에서, 이중 태그들(514)의 세트를 랜덤하게 순열 배치하고(permutes), 단계 9에서 암호화된 검색 인덱스(160)를 스토리지 디바이스(150)로 전송한다.
[0047] 도 7b의 개략도(700b)는 사용자 디바이스(10)가 검색 질의(20)를 생성하기 위한 기술에 대한 형식적인 설명을 제공한다. 단계 1에서, 사용자 디바이스(10)는 키워드들(32)의 제1 쌍에 기초하여 제1 토큰(24)을 생성한다. 단계 2에서, 사용자 디바이스(10)는 제1 키워드(32) 및 제2 키워드(32)의 연접에 기초하여 제1 토큰(24)을 암호화한다. 단계 3에서, 사용자 디바이스(10)는 각각의 나머지 키워드(32)에 대해 나머지 토큰들(24)을 생성한다. 단계 4에서, 사용자 디바이스(10)는 각각의 생성된 토큰(24)이 포함된 검색 질의(20)를 송신한다.
[0048] 도 7c의 개략도(700c)는 SE 관리자(120)가 문서 식별자들(154)의 적절한 목록을 결정하여 검색 질의(20)에 응답하기 위한 기술에 대한 형식적인 설명을 제공한다. 단계 1에서, SE 관리자(120)는 검색 질의(20)의 토큰들(24)과 연관되는 암호화된 값들(510) 및 암호화된 태그들(512)을 리트리브한다. 단계 2에서, SE 관리자(120)는 제1 키워드(32) 및 제2 키워드(32)와 연관되는 모든 암호화된 태그들(512)을 리트리브한다. 단계 2에서, SE 관리자(120)는 검색 질의(20) 내에서 사용자 디바이스(10)에 의해 전송되는 암호화 키들(예를 들면, 토큰들(24))을 사용하여 리트리브된 암호화된 태그들(512)을 암호 해제한다. 단계 3에서, 응답 세트는 널(null)로 초기화되고, 단계 4에서, 제1 키워드(32) 및 제2 키워드(32) 뒤의 각각의 나머지 키워드(32)에 대해, SE 관리자(120)는 대응하는 이중 태그(514)를 계산하고, 질의(20)의 키워드들(32) 각각을 포함하는 문서 식별자들(154)만을 포함하도록 응답 세트를 필터링한다. 단계 5에서, SE 관리자(120)는 문서 식별자들(154)의 응답 세트를 사용자 디바이스(10)에게 반환한다.
[0049] 도 7d의 개략도(700d)는, 사용자 디바이스(10)가 SE 관리자(120)에 의해 전송되는 응답으로부터 문서 식별자들(154)를 리트리브하기 위한 기술에 대한 형식적인 설명을 제공한다. 사용자 디바이스(10)는, 단계 1에서, 암호화된 값들(510)을 단순히 대응하는 키(520)를 사용하여 암호 해제할 수 있다.
[0050] 따라서, 누출을 최소화하면서 효율성을 유지하기 위해, 사용자 디바이스(10)는 신뢰되지 않는 스토리지 디바이스에서 암호화된 검색 인덱스(160)와 함께 저장되는 이중 태그들(514)의 추가적인 세트(
Figure pct00002
)를 구성한다. 키들(a, b)의 각각의 쌍에 대해, 이중 태그(514)는 각각의 값(
Figure pct00003
)에 대해
Figure pct00004
에 추가된다. 사용자 디바이스(10)는 비밀 마스터 키(14)로부터 의사랜덤 함수(pseudorandom function; PRF) 키(
Figure pct00005
)를 의사랜덤하게 생성하고, 따라서, 키들(a, b)의 쌍에만 전적으로 의존한다. 이중 태그(514)는, 본질적으로, 암호화된 검색 인덱스(160) 내에 또한 저장되는 암호화된 태그(512)의 해시일 수 있다. SE 관리자(120)는, 그 다음, 세트(
Figure pct00006
)를 활용하는 것에 의해 제1 키워드(32) 및 제2 키워드(32)에 대응하는 문서 식별자들(154)의 목록을 필터링할 수 있다. 예를 들면, SE 관리자(120)가 문서 식별자들(154)의 목록(즉, 세트(
Figure pct00007
))을 필터링하여 키워드(32)(k3)를 포함하는 값들만을 유지하기 위해(즉, 세트(
Figure pct00008
)∩MM[k3]을 계산하기 위해), 클라이언트는 PRF 키(
Figure pct00009
)를 드러낸다. SE 관리자(120)는
Figure pct00010
를 사용하여
Figure pct00011
내의 각각의 태그를 평가하고, 결과적으로 나타나는 PRF 출력이
Figure pct00012
에서 나타나는지 또는 나타나지 않는지의 여부를 체크한다. 자신의 결과적으로 나타나는 PRF 출력이
Figure pct00013
에서 나타나는 쌍들만이 세트(
Figure pct00014
)에서 유지된다.
Figure pct00015
의 신중한 선택을 통해,
Figure pct00016
에서 또한 나타나는 값들만이
Figure pct00017
에서 나타나는 키(
Figure pct00018
) 하에서의 대응하는 PRF 출력들을 가질 것이다. 모든 나머지 키워드들(32)(즉, k3, ..., kq)에 대해 이 필터링 기술을 반복하는 것에 의해, SE 관리자(120)는 q 결합을 성공적으로 계산한다. 이 기술은 2 결합 질의(
Figure pct00019
)의 볼륨만을 누출시킨다.
[0051] 본원에서의 예들이 결합 질의들(20)에 응답하는 것을 대상으로 하지만, 본원에서의 기술들은 논리곱 정규형(CNF) 질의들(20)과 같은 더욱 복잡한 질의들(20)에도 또한 적용될 수 있다. 도 8a 내지 도 8d는, 세 개 이상의 키워드들(32)를 포함하는 CNF 질의(20)를 생성하고 그에 응답하기 위한 SE 관리자(120) 및 클라이언트 암호화 검색 시스템(600)의 구성에 대한 형식적인 설명을 제공하는 개략도들(800a-d)을 포함한다.
[0052] 도 8a는 암호화된 검색 인덱스(160)(즉, 암호화된 멀티맵 또는 EMM)에 대한 개략도(800a)를 갖는 형식적인 설명을 제공한다. CNF 질의들(20)에 대한 암호화된 검색 인덱스(160)에 대한 셋업은 결합 질의들에 대한 암호화된 검색 인덱스(도 7a)와 동일하다. 도 8b의 개략도(800b)는 사용자 디바이스(10)가 CNF 검색 질의(20)를 생성하기 위한 기술에 대한 형식적인 설명을 제공하고, 한편, 도 8c의 개략도(800c)는 CNF 질의(20)에 대한 암호화된 검색 인덱스(160)를 검색하기 위한 형식적인 설명을 제공한다. 마지막으로, 도 8d의 개략도(800d)는 사용자 디바이스(10)가 SE 관리자(120)로부터의 응답을 암호 해제하기 위한 형식적인 설명을 제공한다.
[0053] 개략도들(800a-d)의 형식적인 설명들을 설명하기 위해, 한 예는 두 개의 절(clause)들만을 갖는 CNF 공식의 간단한 사례(
Figure pct00020
)를 가지고 시작하는데, 각각의 절은 모든 d∈{1,2}에 대해
Figure pct00021
로 표기된다. 모든 i∈{1, ..., qi}에 대해, 세트(Si)는 본원에서 다음과 같이 정의된다:
Figure pct00022
[0054] 시스템(100)은, i ≠ j인 한, 세트들(Si 및 Sj)의 임의의 쌍이 서로소(disjoint)라는 사실을 활용한다. 더구나, 모든 q1 개의 세트들의 합집합은
Figure pct00023
와 동일하다. SE 관리자(120)는 세트들(S1, ..., Sq1)을 계산하고 그들의 합집합을 답변으로서 반환할 수 있다.
[0055] 질의(
Figure pct00024
)에 대해, 클라이언트 암호화 검색 시스템(600)은 별개의 토큰들(tok1, ..., tokq1)을 계산할 수 있다.
Figure pct00025
에 대한 토큰은, 단순히, 계산된 토큰들(tok1, ..., tokq1) 각각의 연접이다. 각각의 토큰(toki)은 각각의 튜플의 모든 암호화된 태그들(512)에 대한 암호 해제 키들을 포함한다. 결과적으로, SE 관리자(120)는
Figure pct00026
에 대한 해싱된 세트들을 계산할 수 있다. 암호화된 태그들(512)를 사용하여, SE 관리자(120)는 최종 응답의 수퍼세트인 Si로 표기되는 모든 q2 개의 세트들의 합집합을 또한 계산할 수 있다. 예에서, Si는 현재 세트(
Figure pct00027
)와 동일하다.
[0056] 그러나, 모든 부분들이 서로소인 것을 보장하기 위해, SE 관리자(120)는 각각의 Si를 필터링하고 Si로부터 세트(
Figure pct00028
)를 제거한다. 결합 질의들(20)와 유사하게, SE 관리자(120)는 모든 j∈{i+1, ..., q1}에 대해 세트들(
Figure pct00029
) 각각을 반복적으로 필터링한다. 임의의 j에 대해 이것을 달성하기 위해, 사용자 디바이스(10)는 PRF 키(
Figure pct00030
)를 SE 관리자(120)로 전송한다. SE 관리자(120)는, 수신된 PRF 키를 사용하여 Si 내에 있는 모든 암호화된 태그(512)를 해싱할 수 있고, 결과적으로 나타나는 출력이
Figure pct00031
에서 나타나는지 또는 나타나지 않는지의 여부를 체크할 수 있다. 자신의 해시 태그(512)가
Figure pct00032
에서 나타나는 모든 쌍은, 그것이 세트(
Figure pct00033
)에서 나타나야 하기 때문에, Si로부터 안전하게 제거될 수 있다. 일반적으로, 사용자 디바이스(10)는, SE 관리자(120)가 모든 세트들(
Figure pct00034
)에 대한 필터링을 반복하는 것을 가능하게 하는 모든 j∈{i+1, ..., q1}에 대한 PRF 키들(
Figure pct00035
)을 전송할 수 있다. 따라서, SE 관리자(120)는, 자신의 합집합이 정확하게
Figure pct00036
에 대한 응답 세트인 모든 서로소 세트들(S1, ..., Sq1)을 계산한다. 이 기술은 임의의 수의 절들을 갖는 CNF 질의들(20)로 확장될 수 있다.
[0057] 예를 들면, 새로운 절(
Figure pct00037
)이 주어지면, SE 관리자(120)는, 자신의 합집합이 질의(20)(
Figure pct00038
)에 대한 응답에 대응하는 필터링된 세트들(
Figure pct00039
)을 계산할 수 있다. 각각의 세트(Si) 내의 모든 태그들(512)이 쌍의 키워드들(32) 중 하나에만 전적으로 의존하는 PRF 키(522) 하에서 해싱되기 때문에, 세트들(
Figure pct00040
) 중 어느 것에서도 나타나지 않는 Si 내의 모든 아이템들을 제거하는 것이 충분하다. 이것을 달성하기 위해, 사용자 디바이스(10)는 PRF 키들(
Figure pct00041
)을 SE 관리자(120)로 송신한다.
[0058] SE 관리자(120)는 모든 q3 개의 키들 하에서 Si 내의 각각의 태그를 해싱할 수 있고 결과적으로 나타나는 해시가
Figure pct00042
에서 나타나는지 또는 나타나지 않는지의 여부를 체크할 수 있다. 모든 q3 개의 해시들이
Figure pct00043
에서 나타나지 않는 Si 내의 임의의 태그에 대해, SE 관리자(120)는 연관된 값(510)이 세트들(
Figure pct00044
) 중 어디에서도 나타나지 않는다는 것을 결정할 수 있고 Si로부터 태그(512)를 제거할 수 있다. 따라서, 모든 이들 태그들(512)을 제거하는 것에 의해, SE 관리자(120)는 모든 q1 개의 세트들에 대해
Figure pct00045
을 성공적으로 계산한다. 형태
Figure pct00046
의 임의의 CNF 질의(20)에 대해, SE 관리자(120)는 사용자 디바이스(10)에 대한 질의(20)에 대한 최종 응답을 계산하기 위해 모든 D3, ..., Dl에 대해 위에서 설명되는 바와 같은 필터링을 반복할 수 있다.
[0059] 도 9는 감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색을 위한 방법(900)에 대한 동작들의 예시적인 배열의 플로우차트이다. 방법(900)은, 동작(902)에서, 데이터 프로세싱 하드웨어(118)에서, 사용자(12)와 연관되는 사용자 디바이스(10)로부터 복수의 키워드들(32)에 대한 검색 질의(20)를 수신하는 것을 포함한다. 복수의 키워드들(32)은 신뢰되지 않는 스토리지 디바이스(150) 상에 저장되는 암호화된 문서들(152)의 집성본 내의 하나 이상의 암호화된 문서들(152)에서 나타난다. 동작(904)에서, 방법(900)은, 데이터 프로세싱 하드웨어(118)에 의해, 문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스하는 것을 포함한다. 문서 식별자들(154)의 제1 목록 내의 각각의 문서 식별자(154)는, 복수의 키워드들(32) 중 제1 키워드(32) 및 복수의 키워드들(32) 중 제2 키워드(32)를 포함하는 문서(152)를 나타낸다.
[0060] 방법(900)은, 동작(906)에서, 하나 이상의 암호화된 문서들(152)에서 제1 키워드(32) 및 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해, 데이터 프로세싱 하드웨어(118)에 의해, 문서 식별자들(154)의 대응하는 목록을 결정하는 것을 또한 포함한다. 문서 식별자들(154)의 대응하는 목록 내의 각각의 문서 식별자(154)는 제1 키워드(32), 제2 키워드(32), 및 개개의 나머지 키워드(32)를 포함하는 문서(152)를 나타낸다. 동작(908)에서, 방법(900)은, 데이터 프로세싱 하드웨어(118)에 의해, 문서 식별자들(154)의 제1 목록 및 문서 식별자들(154)의 각각의 대응하는 목록에 기초하여, 문서 식별자들(154)의 제2 목록을 결정하는 것을 포함한다. 문서 식별자들(154)의 제2 목록 내의 각각의 문서 식별자(154)는 복수의 키워드들(32) 각각을 포함하는 문서(152)를 나타낸다. 방법(900)은, 동작(910)에서, 데이터 프로세싱 하드웨어(118)에 의해, 암호화된 검색 인덱스(160)로부터 획득되는 문서 식별자들(154)의 제2 목록을 사용자 디바이스(10)에게 반환하는 것을 포함한다.
[0061] 도 10은 이 문서에서 설명되는 시스템들 및 방법들을 구현하기 위해 사용될 수 있는 예시적인 컴퓨팅 디바이스(1000)의 개략도이다. 컴퓨팅 디바이스(1000)는, 랩탑들, 데스크탑들, 워크스테이션들, 개인 정보 단말기(personal digital assistant)들, 서버들, 블레이드 서버들, 메인프레임들, 및 다른 적합한 컴퓨터들과 같은, 다양한 형태들의 디지털 컴퓨터들을 나타내도록 의도된다. 여기에서 도시되는 컴포넌트들, 그들의 연결들 및 관계들, 및 그들의 기능들은 단지 예시에 불과한 것으로 의도되며, 이 문서에서 설명되는 및/또는 청구되는 본 발명의 구현예들을 제한하도록 의도되는 것은 아니다.
[0062] 컴퓨팅 디바이스(1000)는 프로세서(1010), 메모리(1020), 스토리지 디바이스(1030), 메모리(1020) 및 고속 확장 포트들(1050)에 연결되는 고속 인터페이스/컨트롤러(1040), 및 저속 버스(1070) 및 스토리지 디바이스(1030)에 연결되는 저속 인터페이스/컨트롤러(1060)를 포함한다. 컴포넌트들(1010, 1020, 1030, 1040, 1050, 및 1060) 각각은 다양한 버스들을 사용하여 인터커넥트되며, 공통 마더보드 상에 또는 적절히 다른 방식들로 장착될 수 있다. 프로세서(1010)는, 외부 입력/출력 디바이스, 예컨대 고속 인터페이스(1040)에 커플링되는 디스플레이(1080) 상에서 그래픽 사용자 인터페이스(graphical user interface; GUI)에 대한 그래픽 정보를 디스플레이하기 위해 메모리(1020)에 또는 스토리지 디바이스(1030) 상에 저장되는 명령들을 비롯하여, 컴퓨팅 디바이스(1000) 내에서의 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현예들에서, 다수의 프로세서들 및/또는 다수의 버스들이, 다수의 메모리들 및 다수의 타입들의 메모리와 함께, 적절히, 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(1000)이 연결될 수 있는데, 각각의 디바이스는 필요한 동작들의 일부들을 (예를 들면, 서버 뱅크, 블레이드 서버들의 그룹, 또는 다중 프로세서 시스템으로서) 제공한다.
[0063] 메모리(1020)는 정보를 컴퓨팅 디바이스(1000) 내에서 비일시적으로 저장한다. 메모리(1020)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들), 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비일시적 메모리(1020)는 컴퓨팅 디바이스(1000)에 의한 사용을 위해 프로그램들(예를 들면, 명령들의 시퀀스들) 또는 데이터(예를 들면, 프로그램 상태 정보)를 일시적 또는 영구적 기반으로 저장하기 위해 사용되는 물리적 디바이스들일 수 있다. 비-휘발성 메모리의 예들은, 플래시 메모리 및 리드 온리 메모리(read-only memory; ROM)/프로그래머블 리드 온리 메모리(programmable read-only memory; PROM)/소거 가능한 프로그래머블 리드 온리 메모리(erasable programmable read-only memory; EPROM)/전자적으로 소거 가능한 프로그래머블 리드 온리 메모리(electronically erasable programmable read-only memory; EEPROM)(예를 들면, 부트 프로그램들과 같은 펌웨어를 위해 통상적으로 사용됨)를 포함하지만, 이들로 제한되지는 않는다. 휘발성 메모리의 예들은 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM), 정적 랜덤 액세스 메모리(static random access memory; SRAM), 상변화 메모리(phase change memory; PCM)뿐만 아니라 디스크들 또는 테이프들을 포함하지만, 이들로 제한되지는 않는다.
[0064] 스토리지 디바이스(1030)는 컴퓨팅 디바이스(1000)에 대한 대용량 스토리지를 제공할 수 있다. 몇몇 구현예들에서, 스토리지 디바이스(1030)는 컴퓨터 판독 가능 매체이다. 여러 가지 상이한 구현예들에서, 스토리지 디바이스(1030)는, 스토리지 영역 네트워크 또는 다른 구성들에서의 디바이스들을 비롯하여, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 디바이스들의 어레이일 수 있다. 추가적인 구현예들에서, 컴퓨터 프로그램 제품은 정보 캐리어에서 유형적으로 구체화된다. 컴퓨터 프로그램 제품은, 실행될 때, 상기에서 설명되는 것들과 같은, 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 컴퓨터 또는 머신 판독 가능 매체, 예컨대 메모리(1020), 스토리지 디바이스(1030), 또는 프로세서(1010) 상의 메모리이다.
[0065] 고속 컨트롤러(1040)는 컴퓨팅 디바이스(1000)에 대한 대역폭 집약적인 동작들을 관리하고, 한편, 저속 컨트롤러(1060)는 덜 대역폭 집약적인 동작들을 관리한다. 직무들의 그러한 할당은 단지에 예시에 불과하다. 몇몇 구현예들에서, 고속 컨트롤러(1040)는 메모리(1020), 디스플레이(1080)(예를 들면, 그래픽스 프로세서 또는 가속기를 통해), 및 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(1050)에 커플링된다. 몇몇 구현예들에서, 저속 컨트롤러(1060)는 스토리지 디바이스(1030) 및 저속 확장 포트(1090)에 커플링된다. 다양한 통신 포트들(예를 들면, USB, 블루투스(Bluetooth), 이더넷(Ethernet), 무선 이더넷)을 포함할 수 있는 저속 확장 포트(1090)는 하나 이상의 입력/출력 디바이스들, 예컨대, 키보드, 포인팅 디바이스, 스캐너, 또는 스위치 또는 라우터와 같은 네트워킹 디바이스에, 예를 들면, 네트워크 어댑터를 통해, 커플링될 수 있다.
[0066] 컴퓨팅 디바이스(1000)는, 도면에서 도시되는 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예를 들면, 그것은, 표준 서버(1000a)로서 또는 그러한 서버들(1000a)의 그룹에서 다수 회, 랩탑 컴퓨터(1000b)로서, 또는 랙 서버 시스템(rack server system; 1000c)의 일부로서 구현될 수 있다.
[0067] 본원에서 설명되는 시스템들 및 기술들의 다양한 구현예들은 디지털 전자 및/또는 광학 회로부(circuitry), 집적 회로부, 특별히 설계된 ASIC(application specific integrated circuit; 주문형 집적 회로)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들에서 실현될 수 있다. 이들 다양한 구현예들은, 스토리지 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하도록, 그리고 그들로 데이터 및 명령들을 송신하도록 커플링되는, 특수 용도 또는 일반 용도일 수 있는, 적어도 하나의 프로그래머블 프로세서를 포함하는 프로그래머블 시스템 상에서 실행 가능한 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0068] 이들 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로서 또한 공지되어 있음)은 프로그래머블 프로세서에 대한 머신 명령들을 포함하며, 하이 레벨의 절차적 및/또는 객체 지향 프로그래밍 언어에서, 및/또는 어셈블리/기계어에서 구현될 수 있다. 본원에서 사용되는 바와 같이, 용어들 "머신 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는, 머신 명령들을 머신 판독 가능 신호로서 수신하는 머신 판독 가능 매체를 비롯하여, 머신 명령들 및/또는 데이터를 프로그래머블 프로세서로 제공하기 위해 사용되는 임의의 컴퓨터 프로그램 제품, 비일시적 컴퓨터 판독 가능 매체, 장치 및/또는 디바이스(예를 들면, 자기 디스크들, 광학 디스크들, 메모리, 프로그래머블 로직 디바이스(Programmable Logic Device; PLD)들)를 지칭한다. 용어 "머신 판독 가능 신호"는 머신 명령들 및/또는 데이터를 프로그래머블 프로세서에 제공하기 위해 사용되는 임의의 신호를 지칭한다.
[0069] 본 명세서에서 설명되는 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작하는 것 및 출력을 생성하는 것에 의해 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는, 데이터 프로세싱 하드웨어로서 또한 지칭되는, 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로부, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예로서, 범용 및 특수 목적 둘 모두의 마이크로프로세서들, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 리드 온리 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 스토리지 디바이스들, 예를 들면, 자기, 광자기 디스크(magneto optical disk)들, 또는 광학 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하도록 또는 이들로 데이터를 전송하도록, 또는 둘 모두를 하도록 동작 가능하게 커플링될 것이다. 그러나, 컴퓨터는 그러한 디바이스들을 가질 필요가 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체들은, 예로서 반도체 메모리 디바이스들, 예를 들면, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들면, 내장 하드 디스크들 또는 착탈식 디스크들; 광자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 비롯한, 모든 형태들의 비-휘발성 메모리, 매체들 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로부에 의해 보완될 수 있거나, 또는 그것에 통합될 수 있다.
[0070] 사용자와의 상호 작용을 제공하기 위해, 본 개시의 하나 이상의 양태들은, 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예를 들면, CRT(cathode ray tube), LCD(liquid crystal display; 액정 디스플레이) 모니터, 또는 터치스크린 및 옵션 사항으로, 사용자가 컴퓨터에게 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예를 들면, 마우스 또는 트랙볼을 구비하는 컴퓨터 상에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류들의 디바이스들이 역시 사용될 수 있다; 예를 들면, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들면, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은 음향, 음성, 또는 촉각 입력을 비롯하여, 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서들을 전송하는 것 및 그들로부터 문서들을 수신하는 것에 의해; 예를 들면, 웹 브라우저로부터 수신되는 요청들에 응답하여 웹페이지들을 사용자의 클라이언트 디바이스 상의 웹 브라우저로 전송하는 것에 의해, 사용자와 상호 작용할 수 있다.
[0071] 다수의 구현예들이 설명되었다. 그럼에도 불구하고, 본 개시의 정신 및 범위로부터 벗어나지 않으면서 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 다른 구현예들은 다음의 청구항들의 범위 내에 있다.

Claims (20)

  1. 방법(900)으로서,
    데이터 프로세싱 하드웨어(118)에서, 사용자와 연관되는 사용자 디바이스(10)로부터 복수의 키워드들(32)에 대한 검색 질의(search query)(20)를 수신하는 단계 ―상기 복수의 키워드들(32)은 신뢰되지 않는 스토리지 디바이스(150) 상에 저장되는 암호화된 문서들(152)의 집성본(corpus) 내의 하나 이상의 암호화된 문서들(152)에서 나타남―;
    상기 데이터 프로세싱 하드웨어(118)에 의해, 문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스하는 단계 ―상기 문서 식별자들(154)의 제1 목록 내의 각각의 문서 식별자(154)는, 상기 복수의 키워드들(32) 중 제1 키워드(32) 및 상기 복수의 키워드들(32) 중 제2 키워드(32)를 포함하는 문서(152)를 나타냄―;
    상기 하나 이상의 암호화된 문서들(152)에서 상기 제1 키워드(32) 및 상기 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해, 상기 데이터 프로세싱 하드웨어(118)에 의해, 문서 식별자들(154)의 대응하는 목록을 결정하는 단계 ―상기 문서 식별자들(154)의 대응하는 목록 내의 각각의 문서 식별자(154)는 상기 제1 키워드(32), 상기 제2 키워드(32), 및 개개의 나머지 키워드(32)를 포함하는 문서(152)를 나타냄―;
    상기 데이터 프로세싱 하드웨어(118)에 의해, 상기 문서 식별자들(154)의 제1 목록 및 문서 식별자들(154)의 각각의 대응하는 목록에 기초하여, 문서 식별자들(154)의 제2 목록을 결정하는 단계 ―상기 문서 식별자들(154)의 제2 목록 내의 각각의 문서 식별자(154)는 상기 복수의 키워드들(32) 각각을 포함하는 문서(152)를 나타냄―; 및
    상기 데이터 프로세싱 하드웨어(118)에 의해, 상기 암호화된 검색 인덱스(160)로부터 획득되는 상기 문서 식별자들(154)의 제2 목록을 상기 사용자 디바이스(10)에게 반환하는 단계를 포함하는, 방법(900).
  2. 제1항에 있어서,
    상기 암호화된 검색 인덱스(160)는, 상기 하나 이상의 암호화된 문서들(152)에서 나타나는 키워드들(32)의 각각의 개개의 쌍에 대해,
    상기 키워드들(32)의 개개의 쌍 내의 상기 키워드들(32) 둘 모두를 포함하는 문서(152)를 나타내는 문서 식별자들(154)의 키워드 쌍 목록을 나타내는 암호화된 값(510); 및
    상기 암호화된 값(510) 및 상기 키워드들(32)의 개개의 쌍 내의 상기 키워드들(32) 중 하나를 나타내는 암호화된 태그(512)
    를 포함하는, 방법(900).
  3. 제2항에 있어서,
    각각의 암호화된 값(510)은 상기 키워드들(32)의 쌍 및 비밀 마스터 키(14)에 기초하여 의사랜덤 함수 키(pseudorandom function key)(15)를 사용하여 암호화되는, 방법(900).
  4. 제3항에 있어서,
    상기 의사랜덤 함수 키(15)는 상기 쌍의 키워드들(32)의 연접(concatenation)에 기초하는, 방법(900).
  5. 제2항 내지 제4항 중 어느 한 항에 있어서,
    각각의 암호화된 태그(512)는 키워드들(32) 중 하나 및 비밀 마스터 키(14)에 기초하여 의사랜덤 함수 키(15)를 사용하여 암호화되는, 방법(900).
  6. 제2항 내지 제5항 중 어느 한 항에 있어서,
    상기 암호화된 검색 인덱스(160)는, 상기 하나 이상의 암호화된 문서들(152)에서 나타나는 키워드들(32)의 각각의 개개의 쌍에 대해, 이중 태그(double tag)들의 목록을 더 포함하고, 상기 이중 태그들의 목록 내의 각각의 이중 태그는 상기 키워드들(32)의 개개의 쌍에 대한 대응하는 암호화된 태그(512)의 암호화된 해시(515)를 포함하는, 방법(900).
  7. 제6항에 있어서,
    상기 문서 식별자들(154)의 제2 목록을 결정하는 단계는, 상기 하나 이상의 암호화된 문서들(152)에서 상기 제1 키워드(32) 및 상기 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해,
    상기 개개의 나머지 키워드(32)에 대응하는 이중 태그가 상기 이중 태그들의 목록 내에 존재하는지의 여부를 결정하는 단계; 및
    상기 개개의 나머지 키워드(32)에 대응하지 않는 각각의 이중 태그를 상기 이중 태그들의 목록으로부터 제거하는 단계
    를 포함하는, 방법(900).
  8. 제2항 내지 제7항 중 어느 한 항에 있어서,
    상기 문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스하는 단계는, 상기 제1 키워드(32) 및 상기 제2 키워드(32)에 대응하는 문서 식별자들(154)의 상기 키워드 쌍 목록을 리트리브하는(retrieving) 단계를 포함하는, 방법(900).
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 검색 질의(20)는,
    상기 제1 키워드(32) 및 상기 제2 키워드(32)를 나타내는 토큰(24); 및
    상기 하나 이상의 암호화된 문서들(152)에서 상기 제1 키워드(32) 및 상기 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해, 상기 제1 키워드(32) 및 상기 개개의 나머지 키워드(32)를 나타내는 토큰(24)
    을 포함하는, 방법(900).
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 암호화된 검색 인덱스(160)로부터 획득되는 상기 문서 식별자들(154)의 제2 목록을 상기 사용자 디바이스(10)에게 반환하는 단계는, 상기 사용자 디바이스(10)로 하여금, 비밀 마스터 키(14)를 사용하여 상기 문서 식별자들(154)의 제2 목록을 암호 해제(decrypt)하게 하는, 방법(900).
  11. 시스템(100)으로서,
    데이터 프로세싱 하드웨어(118); 및
    상기 데이터 프로세싱 하드웨어(118)와 통신하는 메모리 하드웨어(116)
    를 포함하고, 상기 메모리 하드웨어(116)는 상기 데이터 프로세싱 하드웨어(118) 상에서 실행될 때 상기 데이터 프로세싱 하드웨어(118)로 하여금,
    사용자와 연관되는 사용자 디바이스(10)로부터 복수의 키워드들(32)에 대한 검색 질의(20)를 수신하는 것 ―상기 복수의 키워드들(32)은 신뢰되지 않는 스토리지 디바이스(150) 상에 저장되는 암호화된 문서들(152)의 집성본 내의 하나 이상의 암호화된 문서들(152)에서 나타남―;
    문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스하는 것 ―상기 문서 식별자들(154)의 제1 목록 내의 각각의 문서 식별자(154)는, 상기 복수의 키워드들(32) 중 제1 키워드(32) 및 상기 복수의 키워드들(32) 중 제2 키워드(32)를 포함하는 문서(152)를 나타냄―;
    상기 하나 이상의 암호화된 문서들(152)에서 상기 제1 키워드(32) 및 상기 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해, 문서 식별자들(154)의 대응하는 목록을 결정하는 것 ―상기 문서 식별자들(154)의 대응하는 목록 내의 각각의 문서 식별자(154)는 상기 제1 키워드(32), 상기 제2 키워드(32), 및 개개의 나머지 키워드(32)를 포함하는 문서(152)를 나타냄―;
    상기 문서 식별자들(154)의 제1 목록 및 문서 식별자들(154)의 각각의 대응하는 목록에 기초하여, 문서 식별자들(154)의 제2 목록을 결정하는 것 ―상기 문서 식별자들(154)의 제2 목록 내의 각각의 문서 식별자(154)는 상기 복수의 키워드들(32) 각각을 포함하는 문서(152)를 나타냄―; 및
    상기 암호화된 검색 인덱스(160)로부터 획득되는 상기 문서 식별자들(154)의 제2 목록을 상기 사용자 디바이스(10)에게 반환하는 것
    을 포함하는 동작들을 수행하게 하는 명령들을 저장하는, 시스템(100).
  12. 제11항에 있어서,
    상기 암호화된 검색 인덱스(160)는, 상기 하나 이상의 암호화된 문서들(152)에서 나타나는 키워드들(32)의 각각의 개개의 쌍에 대해,
    상기 키워드들(32)의 개개의 쌍 내의 상기 키워드들(32) 둘 모두를 포함하는 문서(152)를 나타내는 문서 식별자들(154)의 키워드 쌍 목록을 나타내는 암호화된 값(510); 및
    상기 암호화된 값(510) 및 상기 키워드들(32)의 개개의 쌍 내의 상기 키워드들(32) 중 하나를 나타내는 암호화된 태그(512)
    를 포함하는, 시스템(100).
  13. 제12항에 있어서,
    각각의 암호화된 값(510)은 상기 키워드들(32)의 쌍 및 비밀 마스터 키(14)에 기초하여 의사랜덤 함수 키(15)를 사용하여 암호화되는, 시스템(100).
  14. 제13항에 있어서,
    상기 의사랜덤 함수 키(15)는 상기 쌍의 키워드들(32)의 연접에 기초하는, 시스템(100).
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    각각의 암호화된 태그(512)는 키워드들(32) 중 하나 및 비밀 마스터 키(14)에 기초하여 의사랜덤 함수 키(15)를 사용하여 암호화되는, 시스템(100).
  16. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 암호화된 검색 인덱스(160)는, 상기 하나 이상의 암호화된 문서들(152)에서 나타나는 키워드들(32)의 각각의 개개의 쌍에 대해, 이중 태그들의 목록을 더 포함하고, 상기 이중 태그들의 목록 내의 각각의 이중 태그는 상기 키워드들(32)의 개개의 쌍에 대한 대응하는 암호화된 태그(512)의 암호화된 해시(515)를 포함하는, 시스템(100).
  17. 제16항에 있어서,
    상기 문서 식별자들(154)의 제2 목록을 결정하는 것은, 상기 하나 이상의 암호화된 문서들(152)에서 상기 제1 키워드(32) 및 상기 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해,
    상기 개개의 나머지 키워드(32)에 대응하는 이중 태그가 상기 이중 태그들의 목록 내에 존재하는지의 여부를 결정하는 것; 및
    상기 개개의 나머지 키워드(32)에 대응하지 않는 각각의 이중 태그를 상기 이중 태그들의 목록으로부터 제거하는 것
    을 포함하는, 시스템(100).
  18. 제12항 내지 제17항 중 어느 한 항에 있어서,
    상기 문서 식별자들(154)의 제1 목록을 획득하기 위해 암호화된 검색 인덱스(160)에 액세스하는 것은, 상기 제1 키워드(32) 및 상기 제2 키워드(32)에 대응하는 문서 식별자들(154)의 상기 키워드 쌍 목록을 리트리브하는 것을 포함하는, 시스템(100).
  19. 제11항 내지 제18항 중 어느 한 항에 있어서,
    상기 검색 질의(20)는,
    상기 제1 키워드(32) 및 상기 제2 키워드(32)를 나타내는 토큰(24); 및
    상기 하나 이상의 암호화된 문서들(152)에서 상기 제1 키워드(32) 및 상기 제2 키워드(32) 이후에 나타나는 각각의 나머지 키워드(32)에 대해, 상기 제1 키워드(32) 및 상기 개개의 나머지 키워드(32)를 나타내는 토큰(24)
    을 포함하는, 시스템(100).
  20. 제11항 내지 제19항 중 어느 한 항에 있어서,
    상기 암호화된 검색 인덱스(160)로부터 획득되는 상기 문서 식별자들(154)의 제2 목록을 상기 사용자 디바이스(10)에게 반환하는 것은, 상기 사용자 디바이스(10)로 하여금, 비밀 마스터 키(14)를 사용하여 상기 문서 식별자들(154)의 제2 목록을 암호 해제하게 하는, 시스템(100).
KR1020227042292A 2020-05-05 2020-12-16 감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색 KR20230003238A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/867,342 US11250151B2 (en) 2020-05-05 2020-05-05 Encrypted search over encrypted data with reduced volume leakage
US16/867,342 2020-05-05
PCT/US2020/065174 WO2021225630A1 (en) 2020-05-05 2020-12-16 Encrypted search over encrypted data with reduced volume leakage

Publications (1)

Publication Number Publication Date
KR20230003238A true KR20230003238A (ko) 2023-01-05

Family

ID=74175964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227042292A KR20230003238A (ko) 2020-05-05 2020-12-16 감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색

Country Status (6)

Country Link
US (1) US11250151B2 (ko)
EP (1) EP4118537A1 (ko)
JP (1) JP7271800B2 (ko)
KR (1) KR20230003238A (ko)
CN (1) CN115485678A (ko)
WO (1) WO2021225630A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114090638B (zh) * 2022-01-20 2022-04-22 支付宝(杭州)信息技术有限公司 基于隐私保护的联合数据查询方法及装置
CN117240620B (zh) * 2023-11-13 2024-02-06 杭州金智塔科技有限公司 隐私集合求并集系统及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510846B1 (en) * 2006-06-29 2013-08-13 Google Inc. Data encryption and isolation
KR101190061B1 (ko) 2008-12-01 2012-10-11 한국전자통신연구원 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법
CN103329184B (zh) * 2011-01-13 2016-02-03 三菱电机株式会社 数据处理装置以及数据保管装置
US9298808B2 (en) * 2013-05-24 2016-03-29 Symantec Corporation Encrypted search acceleration
US9679160B1 (en) * 2014-01-13 2017-06-13 Symantec Corporation Systems and methods for maintaining encrypted search indexes on third-party storage systems
US9501661B2 (en) * 2014-06-10 2016-11-22 Salesforce.Com, Inc. Systems and methods for implementing an encrypted search index
US9894042B2 (en) * 2015-07-24 2018-02-13 Skyhigh Networks, Inc. Searchable encryption enabling encrypted search based on document type
US9633219B2 (en) * 2015-08-26 2017-04-25 International Business Machines Corporation Providing secure indexes for searching encrypted data
WO2017044595A1 (en) * 2015-09-08 2017-03-16 OverNest, Inc. Systems and methods for storing data blocks using a set of generated logical memory identifiers
US9971904B2 (en) * 2015-09-30 2018-05-15 Robert Bosch Gmbh Method and system for range search on encrypted data
US9977918B2 (en) * 2015-09-30 2018-05-22 Robert Bosch Gmbh Method and system for verifiable searchable symmetric encryption
US11341128B2 (en) * 2015-11-12 2022-05-24 Sap Se Poly-logarithmic range queries on encrypted data
US10127391B1 (en) * 2015-12-28 2018-11-13 EMC IP Holding Company LLC Encrypted search indexes
US9715546B1 (en) * 2016-02-18 2017-07-25 Yahoo! Inc. Method and system for searching encrypted data
WO2018122287A1 (en) * 2016-12-30 2018-07-05 Robert Bosch Gmbh Method and system for search pattern oblivious dynamic symmetric searchable encryption
US11023477B2 (en) * 2016-12-30 2021-06-01 Robert Bosch Gmbh Method and system for fuzzy keyword search over encrypted data
US11216433B2 (en) * 2019-12-12 2022-01-04 Google Llc Encrypted search with no zero-day leakage
US11902425B2 (en) * 2019-12-12 2024-02-13 Google Llc Encrypted search with a public key
US11308224B2 (en) * 2019-12-13 2022-04-19 Google Llc Encrypted search system design for email client-side encryption

Also Published As

Publication number Publication date
US11250151B2 (en) 2022-02-15
US20210350014A1 (en) 2021-11-11
CN115485678A (zh) 2022-12-16
JP2023518111A (ja) 2023-04-27
EP4118537A1 (en) 2023-01-18
WO2021225630A1 (en) 2021-11-11
JP7271800B2 (ja) 2023-05-11

Similar Documents

Publication Publication Date Title
US10474835B2 (en) Zero-knowledge databases
US10985902B2 (en) Dynamic symmetric searchable encryption
Fuller et al. Sok: Cryptographically protected database search
Peng et al. An efficient ranked multi-keyword search for multiple data owners over encrypted cloud data
EP4235473A2 (en) Encrypted search with a public key
Liu et al. Efficient searchable symmetric encryption for storing multiple source dynamic social data on cloud
KR20230003238A (ko) 감소된 볼륨 누출로 암호화된 데이터에 대한 암호화된 검색
Wiese et al. CloudDBGuard: A framework for encrypted data storage in NoSQL wide column stores
US11328091B2 (en) Method for securing access to a relation
Azraoui et al. Framework for Searchable Encryption with SQL Databases.
Zhao et al. Secure and efficient product information retrieval in cloud computing
Rajendran et al. An Efficient Ranked Multi-Keyword Search for Multiple Data Owners Over Encrypted Cloud Data: Survey
Hue et al. An experimental evaluation for a new column–level access control mechanism for electronic health record systems
Sumalatha et al. SK-IR: Secured keyword based retrieval of sensor data in cloud
Jang et al. An effective queries execution algorithm on the encrypted database
RAMESH et al. Multi-Keyword Ranked Search over Encrypted Cloud Data
Vincent et al. Security and Privacy Ensured Data Search Model for Encrypted Storage in Cloud Environment.
Cherukuri et al. A DYNAMIC MULTI-KEYWORD RANKED SEARCH USING MRSE OVER ON ENCRYPTED CLOUD
KALYANI et al. EFFICIENT KEYWORD SEARCH OVER ENCRYPTED CLOUD DATA
Priya Dharshini et al. DELAY-OPTIMAL TASK OFFLOADING FOR UAV-ENABLED EDGE-CLOUD COMPUTING SYSTEMS