KR102323549B1 - 차등적 프라이버시를 갖는 불확정 액세스 - Google Patents

차등적 프라이버시를 갖는 불확정 액세스 Download PDF

Info

Publication number
KR102323549B1
KR102323549B1 KR1020197036113A KR20197036113A KR102323549B1 KR 102323549 B1 KR102323549 B1 KR 102323549B1 KR 1020197036113 A KR1020197036113 A KR 1020197036113A KR 20197036113 A KR20197036113 A KR 20197036113A KR 102323549 B1 KR102323549 B1 KR 102323549B1
Authority
KR
South Korea
Prior art keywords
data
block
processing hardware
distributed system
data processing
Prior art date
Application number
KR1020197036113A
Other languages
English (en)
Other versions
KR20200005603A (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 구글 엘엘씨
Publication of KR20200005603A publication Critical patent/KR20200005603A/ko
Application granted granted Critical
Publication of KR102323549B1 publication Critical patent/KR102323549B1/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
    • 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
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2123Dummy operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Medical Informatics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

방법은 데이터 블록(102)에 대한 쿼리(q)를 실행하도록 명령(300)을 실행하는 단계 및 그 데이터 블록이 블록 스태쉬(370)에 저장되어 있는지 여부를 결정하는 단계를 포함한다. 데이터 블록이 다운로드 페이즈 동안 블록 스태쉬에 저장될 때, 이 방법은 블록 스태쉬에서 데이터 블록을 제거하는 단계와, 분산 시스템(140)의 메모리(114)에 저장된 랜덤 데이터 블록을 검색하기 위해 분산 시스템(140)으로 페이크 쿼리(304)를 전송하는 단계와, 랜덤 데이터 블록을 폐기하는 단계를 포함한다. 현재 버전의 데이터 블록이 오버라이트 페이즈 동안 블록 스태쉬에 저장되는 경우, 이 방법은 분산 시스템의 메모리에 저장된 다른 랜덤 데이터 블록을 검색하도록 분산 시스템으로 페이크 쿼리를 전송하는 단계와; 새로운 랜덤성으로 랜덤 데이터 블록의 해독 및 재 암호화하는 단계와; 재암호화된 랜덤 데이터 블록을 분산 시스템에 재업로드하는 단계를 포함한다.

Description

차등적 프라이버시를 갖는 불확정 액세스
본 개시는 차등적 프라이버시를 갖는 메모리에 저장된 데이터 블록을 불확정적으로(obliviously) 액세스하는 것에 관한 것이다.
기업 및 개인은 분산 메모리 시스템(즉, 클라우드 스토리지 서비스)을 사용하여 다수의 메모리 위치 위에 있는 메모리에 데이터를 저장하고 있다. 이러한 많은 기업과 개인은 분산 스토리지 시스템에 업로드하기 전에 데이터를 암호화한다. 저장된 데이터에 대한 검색 쿼리 수행과 같은 클라우드 스토리지 서비스가 제공하는 필수 기능을 사용하려면 기업은 클라우드 스토리지 서비스에 대한 일반 텍스트 액세스를 제공해야 한다. 결과적으로, 건강, 금융 및 법률과 같은 많은 정부와 기밀한 민간 부문은 편의성과 비용상의 이점 증대에도 불구하고 클라우드 스토리지 서비스 사용을 꺼린다. 게다가, 데이터 액세스 패턴에 대한 지식만 있으면 데이터를 해독할 필요없이 데이터에 대한 많은 양의 정보를 제공할 수 있으므로 암호화만으로는 데이터 프라이버시를 보장하기에 충분하지 않을 수 있다.
본 개시의 일 양태는 차등적 프라이버시를 갖는 불확정(oblivious) 액세스를 위한 방법을 제공한다. 이 방법은 클라이언트 디바이스의 데이터 처리 하드웨어에 의해, 데이터 블록에 대한 쿼리(q)를 실행하기 위한 명령을 실행하는 단계를 포함한다. 이 방법은 또한 다운로드 페이즈 동안 데이터 처리 하드웨어에 의해, 데이터 블록이 클라이언트 디바이스에 상주하는 메모리 하드웨어상의 블록 스태쉬에 저장되는지 결정하는 단계를 포함한다. 데이터 블록이 블록 스태쉬에 저장되는 경우, 방법은 데이터 처리 하드웨어에 의해, 블록 스태쉬으로부터 데이터 블록을 제거하는 단계와; 데이터 처리 하드웨어에 의해, 데이터 처리 하드웨어와 통신하는 분산 시스템으로 페이크 쿼리를 전송하는 단계와; 그리고 데이터 처리 하드웨어에 의해, 분산 시스템으로부터 검색된 랜덤 데이터 블록을 폐기하는 단계를 포함한다. 페이크 쿼리는 분산 시스템의 메모리에 저장된 랜덤 데이터 블록을 검색한다. 오버라이트 페이즈 동안, 방법은 또한 데이터 처리 하드웨어에 의해, 블록 스태쉬에서 제거되거나 분산 시스템의 메모리로부터 검색된 데이터 블록에 대해 판독 또는 기록 동작을 실행하는 단계를 포함한다. 방법은 데이터 처리 하드웨어에 의해, 확률에 기초하여 클라이언트 디바이스에 존재하는 메모리 하드웨어 또는 분산 시스템의 메모리상의 블록 스태쉬에 현재 버전의 데이터 블록을 저장할지 여부를 결정하는 단계를 더 포함한다. 현재 버전의 데이터 블록이 블록 스태쉬에 저장된 경우, 방법은 데이터 처리 하드웨어에 의해, 분산 시스템의 메모리에 저장된 다른 랜덤 데이터 블록을 검색하기 위해 분산 시스템으로 페이크 쿼리를 전송하는 단계와; 데이터 처리 하드웨어에 의해, 검색된 랜덤 데이터 블록을 해독하는 단계와; 데이터 처리 하드웨어에 의해, 새로운 랜덤성으로 랜덤 데이터 블록을 재암호화하는 단계와; 그리고 데이터 처리 하드웨어에 의해, 재암호화된 랜덤 데이터 블록을 분산 시스템의 메모리에 재 업로드하는 단계를 포함한다.
본 개시의 구현들은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현에서, 데이터 블록이 다운로드 페이즈 동안 블록 스태쉬에 저장되지 않은 경우, 방법은 데이터 처리 하드웨어에 의해, 분산 시스템의 메모리로부터 데이터 블록을 검색하기 위해 실제 쿼리를 분산 시스템으로 전송하는 단계를 포함한다. 오버라이트 페이즈 동안 데이터 블록에 대한 판독 또는 기록 동작을 실행할 때, 방법은 또한 데이터 블록을 새로운 버전의 데이터 블록로 업데이트함으로써 기록 동작을 실행하는 단계를 포함할 수 있다. 일부 구성에서, 상기 확률은 C/N보다 작고, C는 블록 스태쉬(370)의 저장 용량이고, N은 분산 시스템에 저장하기 위해 데이터 처리 하드웨어에 의해 아웃소싱되는 다수의 데이터 블록이다.
일부 예들에서, 데이터 블록의 현재 버전이 오버라이트 페이즈 동안 블록 스태쉬에 저장되지 않은 경우, 방법은 또한 데이터 처리 하드웨어에 의해, 분산 시스템의 메모리로부터 데이터 블록을 검색하기 위해 실제 쿼리를 분산 시스템으로 전송하는 단계와; 데이터 처리 하드웨어에 의해, 현재 버전의 데이터 블록을 암호화하는 단계와; 그리고 데이터 처리 하드웨어에 의해, 데이터 블록의 암호화된 현재 버전을 분산 시스템의 메모리에 업로드하는 단계를 포함한다. 여기서, 방법은 분산 시스템의 메모리로부터 검색된 데이터 블록을 폐기하는 단계를 더 포함한다.
본 개시의 다른 양태는 차등적 프라이버시를 갖는 불확정 액세스를 위한 방법을 제공한다. 이 방법은 클라이언트 디바이스의 데이터 처리 하드웨어에 의해, 데이터 블록에 대한 쿼리(q)를 실행하기 위한 명령을 실행하는 단계를 포함한다. 다운로드 페이즈 동안, 방법은 데이터 처리 하드웨어(124)에 의해, 데이터 블록이 클라이언트 디바이스(120)에 상주하는 메모리 하드웨어의 블록 스태쉬에 저장되는지 여부를 결정하는 단계를 포함한다. 데이터 블록이 블록 스태쉬에 저장되는 경우, 방법은 또한 데이터 처리 하드웨어에 의해, 블록 스태쉬로부터 데이터 블록을 제거하는 단계와; 데이터 처리 하드웨어에 의해, 데이터 처리 하드웨어와 통신하는 분산된 시스템으로 페이크 쿼리를 전송하는 단계와; 그리고 데이터 처리 하드웨어에 의해, 분산 시스템으로부터 검색된 랜덤 데이터 버킷을 폐기하는 단계를 포함한다. 페이크 쿼리는 분산 시스템의 메모리에 저장된 2개의 랜덤 데이터 버킷을 다운로드하며 각각의 데이터 버킷에는 다수의 블록이 포함된다. 오버라이트 페이즈 동안, 방법은 데이터 처리 하드웨어에 의해, 블록 스태쉬로부터 제거되거나 분산 시스템의 메모리로부터 검색된 대응하는 데이터 버킷으로부터 획득된 데이터 블록에 대한 판독 또는 기록 동작을 실행하는 단계를 더 포함한다. 현재 버전의 데이터 블록이 블록 스태쉬에 저장되는 경우, 방법은 데이터 처리 하드웨어에 의해, 분산 시스템의 메모리(114)에 저장되고 각각이 다수의 데이터 블록을 포함하는 다른 2개의 랜덤 데이터 버킷을 다운로드 하기 위해 분산 시스템으로 페이크 쿼리를 전송하는 단계와; 데이터 처리 하드웨어에 의해, 랜덤 데이터 버킷 내의 모든 데이터 블록을 해독하는 단계와; 데이터 처리 하드웨어에 의해, 랜덤 데이터 버킷 내의 데이터 블록을 새로운 랜덤성으로 재 암호화하는 단계와; 그리고 데이터 처리 하드웨어에 의해, 재 암호화된 데이터 블록을 포함하는 랜덤 데이터 버킷을 분산 시스템의 메모리에 재 업로드하는 단계를 포함한다.
본 개시의 구현은 다음의 선택적 특징 중 하나 이상을 포함할 수 있다. 일부 구성에서, 다운로드 페이즈 동안 데이터 블록이 블록 스태쉬에 저장되지 않은 경우, 방법은 데이터 처리 하드웨어에 의해, 분산 시스템의 메모리로부터 한 쌍의 데이터 버킷을 다운로드하도록 실제 쿼리를 분산 시스템으로 전송하는 단계와; 데이터 처리 하드웨어에 의해, 2개의 데이터 버킷 내의 모든 데이터 블록을 해독하는 단계와; 데이터 처리 하드웨어에 의해, 2개의 데이터 버킷 중 하나가 데이터 블록을 포함하는지 여부를 결정하는 단계를 포함한다. 여기서, 실제 쿼리에 응답하여 분산 시스템으로부터 다운로드된 각각의 데이터 버킷은 다수의 데이터 블록 및 그 데이터 블록의 식별자와 관련된 대응하는 암호화 식별자를 포함한다. 이들 구성에서, 데이터 버킷 중 하나가 데이터 블록을 포함하는 경우, 방법은 데이터 처리 하드웨어에 의해, 대응하는 데이터 버킷으로부터 데이터 블록을 제거하는 단계와; 그리고 데이터 처리 하드웨어에 의해, 데이터 버킷으로부터 나머지 데이터 블록을 폐기하는 단계를 더 포함한다.
일부 예에서, 데이터 블록의 식별자는 문자열을 포함한다. 오버라이트 페이즈 동안 데이터 블록에 대한 판독 또는 기록 동작을 실행하는 단계는 또한 새로운 버전의 데이터 블록으로 데이터 블록을 업데이트함으로써 기록 동작을 실행하는 단계를 포함한다. 상기 확률은 C/N보다 작고, C는 블록 스태쉬의 저장 용량이고, N은 분산 시스템에 저장하기 위해 데이터 처리 하드웨어에 의해 아웃소싱되는 다수의 데이터 블록이다.
일부 구현에서, 데이터 블록의 현재 버전이 오버라이트 페이즈 동안 블록 스태쉬에 저장되지 않은 경우, 방법은 데이터 처리 하드웨어에 의해, 분산 시스템의 메모리로부터 한 쌍의 데이터 버킷을 다운로드하도록 실제 쿼리를 분산 시스템으로 전송하는 단계를 포함한다. 여기서, 실제 쿼리에 응답하여 분산 시스템으로부터 다운로드된 각각의 데이터 버킷은 다수의 데이터 블록 및 그 데이터 블록의 식별자와 관련된 대응하는 암호화 식별자를 포함한다.
이 구현에서, 현재 버전의 데이터 블록이 오버라이트 페이즈 동안 블록 스태쉬에 저장되지 않은 경우, 방법은 또한 데이터 처리 하드웨어에 의해, 데이터 버킷 내의 모든 데이터 블록을 해독하는 단계와; 데이터 처리 하드웨어에 의해, 데이터 버켓 중 하나 내의 데이터 블록의 이전 버전을 현재 버전의 데이터 블록으로 대체하는 단계와; 데이터 처리 하드웨어에 의해, 데이터 버켓 내의 현재 버전의 데이터 블록을 포함하는 모든 데이터 블록을 재 암호화하는 단계와; 그리고 데이터 처리 하드웨어에 의해, 재 암호화된 데이터 블록을 포함하는 데이터 버킷을 분산 시스템의 메모리에 업로드하는 단계를 포함한다.
본 개시의 또 다른 양태는 차등적 프라이버시를 갖는 불확정 액세스를 위한 방법을 제공한다. 이 방법은 클라이언트 디바이스의 데이터 처리 하드웨어에 의해, 서버에 저장된 데이터 블록에 대한 쿼리(q)를 실행하기 위한 명령을 실행하는 단계를 포함한다. 방법은 또한 서버 상에 저장된 K개의 블록들에 대한 제1 다운로드 요청을 전송하는 단계와, 상기 K개의 블록은 쿼리된 데이터를 포함하고; 쿼리된 데이터 블록 및 K-1개의 다른 블록에 대한 제2 다운로드 요청을 전송하는 단계를 포함한다. 방법은 제1 다운로드 요청의 K개의 블록에 대한 제1 다운로드 시퀀스를 서버로부터 수신하는 단계와; 그리고 쿼리된 데이터 블록 및 제2 다운로드 요청의 K-1개의 다른 블록에 대한 제2 다운로드 시퀀스를 서버로부터 수신하는 단계를 더 포함한다.
본 개시의 구현은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 예에서, 서버는 비신뢰되고 비-암호화된 복수의 공개적으로 이용 가능한 데이터 블록을 저장한다. 방법은 데이터 처리 하드웨어에 의해, 서버로부터 수신된 제1 다운로드 시퀀스의 K개의 블록을 폐기하는 단계를 포함할 수 있다. 추가적으로 또는 대안적으로, 방법은 데이터 처리 하드웨어에 의해, 서버로부터 수신된 제2 다운로드 시퀀스의 K-1개의 다른 블록을 폐기하는 단계를 또한 포함한다. K에 대한 값은 보안 파라미터 및 0보다 큰 에러 확률에 기초할 수 있다.
도 1은 분산 시스템의 비-일시적 데이터 스토리지에 저장된 데이터 블록에 대한 쿼리를 불확정적으로 실행하기 위한 예시적인 시스템의개략도이다.
도 1b는 하나 이상의 클라이언트가 분산 저장 시스템의 비-일시적 데이터 스토리지에 저장된 데이터 블록에 대한 쿼리를 불확정적으로 실행할 수 있게 하는 예시적인 시스템의 개략도이다.
도 2a 및 도 2b는 단일 서버 또는 다중 서버의 비-일시적 데이터 스토리지 에 저장된 쿼리를 불확정적으로 실행하기 위한 예시적인 차등적 프라이빗(DP) 개인 정보 검색(PIR) 루틴의 개략도이다.
도 3a 내지 도 3d는 분산 시스템의 비-일시적 데이터 스토리지에 저장된 쿼리를 불확정적으로 실행하기 위한 예시적인 DP 불확정 랜덤 액세스 메모리(O-RAM) 루틴의 개략도이다.
도 4a 내지도 4c는 분산 시스템의 비-일시적 데이터 스토리지 상에 암호화 형태로 데이터 블록을 불확정적으로 입력하기 위한 예시적인 DP 불확정 저장 루틴의 개략도이다.
도 5a-5d는 데이터 블록에 대한 쿼리를 실행하기 위해 클라이언트 디바이스에서 실행되는 예시적인 DP 불확정 저장 명령의 개략도이다.
도 6은 암호화 형태의 데이터 블록을 대응 버킷에 입력하고 데이터 블록에 대한 쿼리를 실행함으로써 이진 트리를 초기화하는 예시적인 알고리즘을 제공한다.
도 7은 예시적인 역 지수 트리의 개략도이다.
도 8은 암호화 형태의 데이터 블록을 대응하는 N 버킷에 입력하고 데이터 블록에 대한 쿼리를 실행함으로써 역 지수 트리를 초기화하는 예시적인 알고리즘을 제공한다.
도 9는 본 명세서에 기술된 시스템 및 방법을 구현하는데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
다양한 도면에서 유사한 참조 부호는 유사한 요소를 나타낸다.
불확정(oblivious) 랜덤 액세스 메모리(O-RAM)는 클라이언트 액세스 패턴을 비신뢰(untrusted) 메모리에 저장된 클라이언트 소유의 및 클라이언트가 암호화한 데이터에 은닉할 수 있지만, O-RAM과 관련된 넓은 대역폭 오버헤드 및/또는 큰 클라이언트 스토리지 요구 사항으로 인해 O-RAM의 광범위한 배포가 제한된다. 많은 시나리오에서, O-RAM의 보안 보장은 데이터 컨텐츠와 액세스 패턴을 완전히 은닉하고 너무 강하게 유지된다. 예를 들어, 다른 채널을 통해 유출될 수 있는 액세스 패턴에 관한 정보(예를 들어, 데이터의 사용자/클라이언트에 대한 사전 지식)를 숨기는 것은 무의미할 수 있다. 따라서, 작은 쿼리 세트만 실제로 기밀한 경우 전체 액세스 시퀀스를 은닉하는 것도 필요하지 않다. 본 명세서에서의 구현은 일부 불필요한 보안 요구 사항을 완화함으로써 기하 급수적으로 더 작은 대역폭 오버 헤드를 달성하기 위해 비신뢰(된) 메모리에 저장된 데이터 블록에 대한 차등적 프라이빗 액세스(differentially private access)를 이용하는 것에 관한 것이다. 서비스 제공자가 관리하는 비신뢰 메모리에 저장된 데이터 블록에 대한 쿼리를 불확정적으로(obliviously) 실행하기 위해 O-RAM 및 불확정 스토리지(OS)와 함께 차등적 프라이빗 액세스를 사용할 수 있다. 비신뢰 메모리는 분산 시스템(예를 들어, 클라우드 환경)의 다수의 메모리 위치에 걸쳐서 오버레이된 스토리지 추상화를 유도할 수 있고, 클라이언트는 그 메모리 위치에 걸쳐 암호화된 데이터 블록을 저장할 수 있다. 비신뢰 메모리는 또한 암호화되지 않은 공개적으로 알려진 데이터 블록을 저장할 수 있다. 이러한 시나리오에서, 차등적 프라이빗 액세스는 프라이밋 정보 검색(PIR)과 함께 사용되어, 비신뢰 메모리에서 공개적으로 알려지고 비암호화된 데이터의 액세스 패턴을 숨길 수 있다.
도 1a 및 도 1b는 분산 시스템(140)의 클라이언트(104)에 의해 소유된 N개의 데이터 블록(B)(102)을 저장하고, 클라이언트(104)에 의해 데이터 블록(102)에 대한 검색 기능을 보전하면서 액세스 패턴을 은닉하기 위해 데이터 블록(B)(102)에 대한 쿼리를 불확정적으로 실행하기 위해 차등적 프라이빗 액세스를 사용하는 예시적인 시스템(100)을 도시한다. 클라이언트(104)와 관련된 클라이언트 디바이스(120)(예를 들어, 컴퓨터)는 네트워크(130)를 통해 확장 가능한/탄력적인 비-일시적 스토리지 추상화(150)를 갖는 분산 시스템(140)과 통신한다. 클라이언트 디바이스(120)는 관련 메모리 하드웨어(122) 및 관련 데이터 처리 하드웨어(124)를 포함할 수 있다. 스토리지 추상화(150)(예를 들어, 키/값 저장소, 파일 시스템, 데이터 저장소 등)는 스토리지 리소스(114)에 대해 오버레이되어 하나 이상의 클라이언트 디바이스(120)에 의한 스토리지 리소스(114)의 확장 가능한 사용을 허용한다.
시스템(100)은 하나 이상의 스토리지 리소스(114)를 통해 공개적으로 알려진암호화되지 않은 N 데이터 블록들(102)을 선택적으로 저장할 수 있다. 따라서, 클라이언트 디바이스(120)는 데이터 블록(102)을 소유하지 않을 수 있고, 데이터 블록(102)의 컨텐츠는 구성에서 공개적으로 이용 가능하다. 그러나, 차등적 프라이빗 액세스의 사용은 데이터 블록(102)이 하나 이상의 스토리지 리소스(114)로부터 검색될 때 액세스 패턴을 유사하게 숨길 수 있다.
일부 구현에서, 분산 시스템(140)은 스토리지 추상화(150)에 대한 액세스를 관리하는 컴퓨팅 디바이스(112)를 실행한다. 예를 들어, 클라이언트 디바이스(120)는 데이터 블록(102)을 암호화하여 스토리지 추상화(150)에 저장할 수 있고, 스토리지 추상화(150)로부터 데이터 블록(102)을 검색 및 복호화할 수 있다. 도시된 예는 분산 시스템(140)과 관련된 비신뢰 측(untrusted side)과 네트워크(130)를 통해 통신하는 클라이언트 디바이스(120)와 관련된 신뢰 측(trusted side)을 갖는 시스템(100)을 도시하고 있지만, 시스템(100)은 대안적으로 신뢰할 수 있는 컴퓨팅 디바이스(들)(CPU) 및 신뢰할 수 없는 데이터 저장 디바이스를 갖는 대형 인트라넷상에서 구현될 수 있다. 분산 시스템(140) 또는 데이터 스토리지와 관련된 비신뢰된 측은, 컴퓨팅 디바이스(112)가 정직하게 프로토콜을 따르지만 분산 시스템(140)에 의해 유출된 정보를 사용하여 확률적으로 다항식 시간 알고리즘을 수행하여 추가 통찰(insight)을 얻을 수 있다는 점에서 "정직하지만 색다른(honest-but-curious)" 것으로 간주된다.
일부 구현에서, 분산 시스템(100)은 리소스(110, 110a-z)를 포함한다. 리소스들(110)은 하드웨어 리소스 및 소프트웨어 리소스를 포함할 수 있다. 하드웨어 리소스(110)은 컴퓨팅 디바이스(112)(데이터 처리 디바이스 및 데이터 처리 하드웨어라고도 함) 또는 비-일시적 메모리(114)(메모리 하드웨어 및 스토리지 리소스라고도 함)를 포함할 수 있다. 소프트웨어 리소스(110)는 소프트웨어 애플리케이션, 소프트웨어 서비스, 애플리케이션 프로그래밍 인터페이스(API) 등을 포함할 수 있다. 소프트웨어 리소스(110)는 하드웨어 리소스(110)에 상주할 수 있다. 예를 들어, 소프트웨어 리소스(110)는 메모리 하드웨어(114)에 저장되거나 하드웨어 리소스들(110)(예를 들어, 컴퓨팅 디바이스(112)은 소프트웨어 리소스(110)를 실행 중일 수 있다.
소프트웨어 애플리케이션(즉, 소프트웨어 리소스(110))은 컴퓨팅 디바이스로 하여금 태스크를 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 일부 예에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로 지칭될 수 있다. 예시적인 애플리케이션은 시스템 진단 애플리케이션, 시스템 관리 애플리케이션, 시스템 유지 보수 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드 시트(spreadsheet) 애플리케이션, 메시징 애플리케이션, 미디어 스트리밍 애플리케이션, 소셜 네트워킹 애플리케이션 및 게임 애플리케이션을 포함하지만 이에 제한되지는 않는다.
메모리 하드웨어(114, 122)는 컴퓨팅 디바이스(112) 및/또는 클라이언트 디바이스(120)(즉, 클라이언트 디바이스(120)의 데이터 처리 하드웨어(124))에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램(예를 들어, 명령 시퀀스) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는데 사용되는 물리적 디바이스일 수 있다. 메모리 하드웨어(114, 122)는 휘발성 및/또는 비-휘발성 어드레스 가능한 반도체 메모리일 수 있다. 비-휘발성 메모리의 예는 플래시 메모리 및 판독 전용 메모리(ROM)/프로그램 가능 판독 전용 메모리(PROM)/소거 가능 프로그램 가능 판독 전용 메모리(EPROM)/전자 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM)(예를 들어, 일반적으로 부팅 프로그램과 같은 펌웨어에 사용)을 포함하지만 이에 제한되지 않는다. 휘발성 메모리의 예는 디스크 또는 테이프뿐만 아니라 RAM, 불확정 랜덤 액세스 메모리(ORAM: oblivious random access memory), DRAM, SRAM, 위상 변화 메모리(phase change access memory : PCM)을 포함하지만 이에 제한되는 것은 아니다.
네트워크(130)는 근거리 통신망(LAN), 광역 통신망(WAN) 및/또는 인터넷과 같은 다양한 유형의 네트워크를 포함할 수 있다. 네트워크(130)는 장거리 네트워크(예를 들어, 인터넷 또는 WAN)를 나타낼 수 있지만, 일부 구현에서, 네트워크(130)는 근거리 네트워크(LAN)와 같은 단거리 네트워크를 포함한다. 일부 구현에서, 네트워크(130)는 표준 통신 기술 및/또는 프로토콜을 사용한다. 따라서, 네트워크(130)는 이더넷, 와이파이(WiFi)(예를 들어, 802.11), 와이맥스(WiMAX), 3G, LTE(Long Term Evolution), DSL(Digital Subscriber Line), 비동기식 전송 모드(ATM), InfiniBand, PCI Express 고급 스위칭, 블루투스, 블루투스 저에너지(BLE) 등과 같은 기술을 사용하는 링크들을 포함할 수 있다. 유사하게, 네트워크(130)에서 사용되는 네트워킹 프로토콜은 MPLS(Multiprotocol Label Switching), TCP/IP(Transmission Control Protocol/Internet Protocol), UDP(User Datagram Protocol), HTTP(Hypertext Transport Protocol), SMTP(Simple Mail Transfer Protocol), 파일 전송 프로토콜(FTP)을 포함할 수 있다. 네트워크(130)를 통해 교환되는 데이터는 하이퍼 텍스트 마크 업 언어(HTML), 확장 가능 마크 업 언어(XML) 등을 포함하는 기술 및/또는 포맷을 사용하여 표현될 수 있다. 또한 보안 소켓 계층(SSL), 전송 계층 보안(TLS), 가상 사설망(VPN), 인터넷 프로토콜 보안(IPsec) 등과 같은 기존의 암호화 기술을 사용하여 모든 또는 일부 링크를 암호화할 수 있다. 다른 예들에서, 네트워크(130)는 전술한 것들 대신에 또는 그에 부가하여 맞춤형 및/또는 전용 데이터 통신 기술들을 사용한다.
데이터 블록(102)은 원자 단위의 데이터에 대응하고 각각 크기 B 바이트를 갖는다. 예를 들어, 분산 시스템에 저장하기 위한 B의 일반적인 값은 64KB~256B일 수 있다. 표기법 N은 클라이언트(104)와 관련되고(또는 개인 정보 검색에서 스토리지 리소스(들)(114)과 관련되고) 불확정 랜덤 액세스 메모리(O-RAM) 또는 불확정 스토리지(OS)를 사용하여 스토리지 추상화(150)에 저장되는 데이터 블록(102)의 총 수를 나타낸다. 아래에 보다 상세히 설명되는 바와같이, OS는 데이터 블록(102)이 O-RAM에 의해 사용되는 단순한 인덱스 식별자 대신에 고유한 문자열 식별자에 의해 식별되는 자연스러운 확장을 고려한다는 점을 제외하고는 O-RAM과 동일한 프레임 워크(즉, 스크립트 및 보안 정의)를 사용할 수 있다. 따라서, N은 스토리지 추상화(150)상의 O-RAM 또는 OS의 용량을 지칭할 수 있다. 각각의 N 데이터 블록(102)은 메모리 하드웨어(114)에 걸쳐 오버레이되는 스토리지 추상화(150)의 대응하는 메모리 위치((118, 118A-N)(도 1b)에 저장된다. 일부 구현에서, N 데이터 블록(102)은 프라이빗 정보 검색(PIR) 스토리지와 관련되어 있으며, 이로 인해 N 데이터 블록(102)은 하나 이상의 스토리지 리소스(114) 상에 저장되고 암호화되지 않고 대중에게 이용 가능하다.
전통적인 암호화 방식은 기밀성을 제공하지만, 전통적인 암호화 방식은 비신뢰 분산 시스템(140)에 매우 기밀한 정보를 나타낼 수 있는 데이터 액세스 패턴을 은닉하는데 비효율적이다. 더욱이, 전통적인 암호화 방식은 클라이언트(104)가 분산 시스템(140)에 데이터(102)에 대한 평문 액세스를 제공하는 경우에만 클라이언트(104)가 분산 시스템(140)에 저장된 암호화된 데이터(102)를 검색할 수 있게 한다. 클라이언트 디바이스(120)가 데이터(102)를 발신(originates)함에 따라 클라이언트 디바이스(120)는 신뢰된 것으로 것으로 간주된다.
일부 구현에서, 클라이언트 디바이스(120) 및 분산 시스템(140)은 그 분산 시스템(140)으로부터 (데이터 블록(102)이 판독/기록된) 데이터 액세스 패턴을 완전히 은닉하기 위해 스토리지 추상화(150) 주변의 암호화된 데이터 블록(102)을 불확정적으로 이동시키기 위한 불확정 순열 루틴(450)을 실행한다. 예를 들어, 불확정 순열 루틴(450)은 분산 시스템(140)으로 하여금 어레이(A)로 배열된 재순열된 N 데이터 블록(102)을 저장하기 위해 스토리지 추상화(150)의 새로운 메모리 위치(118)를 할당하게 하고 및/또는 스토리지 추상화(150)를 다수의 데이터 버킷(350)으로 구성/분할/파티션할하게 할 수 있다. 일부 구현에서, 불확정 순열 루틴(450)은 스토리지 추상화(150)를 각각 θ(log log N) 메모리 위치(118)를 포함하는 N개의 데이터 버킷 (350)으로 구성하여, 각 데이터 버킷(350)이 하나 이상의 실제 데이터 블록(102)과 하나 이상의 더미 데이터 블록(103)을 모두 저장할 수 있다. 이러한 구현에서, 스토리지 추상화(150)는 θ(N log log N)와 동일한 총 용량을 포함한다.
신뢰(trusted) 측에서, 클라이언트 디바이스(120)는 한 쌍의 의사 난수 함수(F1, F2) 및 대응하는 식별자(id)를 사용하여 분산 시스템(140)으로부터 한 번에 2개의 데이터 버킷(350)을 반복적으로 다운로드할 수 있고, 불확정 순열 루틴(450)을 실행하는 동안 메모리 하드웨어(122)에 블록 스태쉬(stash)(370)을 할당할 수 있다. 수신된 각각의 데이터 버킷(350)에 대해, 클라이언트 디바이스(120)는 대응하는 데이터 버킷(350) 내의 데이터 블록(102)에 대한 랜덤 순열을 해독 및 적용하여 순열된 데이터 블록을 생성하고, 각각의 순열된 데이터 블록(102)에 대해 대응하는 버퍼 버킷(360)을 결정한다. 스토리지 추상화(150) 주변의 암호화된 데이터 블록(102)을 불확정적으로 이동시키기 위해 불확정 순열 루틴을 실행하는 추가적인 세부 사항은 2017년 4월 27일에 출원된 미국 특허 출원 62/490,804에서 찾을 수 있으며, 이는 그 전문이 본 명세서에 참조로 포함된다. 일부 구현에서, 클라이언트 디바이스(120)는 한 쌍의 버킷(350)으로부터 데이터 블록(102)을 다운로드함으로써 로컬 메모리 하드웨어(122)에서 불확정 셔플을 초기화하고, 새로 선택된 의사 난수 함수(F'1, F'2)를 사용하여 랜덤하게 선택된 새로운 순열에 따라 재암호화된 데이터 블록(102)을 셔플링하기 전에 데이터 블록(102)을 해독/재암호화한다. 그 후, 클라이언트 디바이스(120)는 새롭게 선택된 의사 난수 함수(F'1, F'2)에 기초하여 재순열된 데이터 블록(102)을 대응하는 버퍼 버킷(360)에 업로드한다. 셔플이 완료된 후 오래된 버킷(350)은 삭제될 수 있다. 이 불확정 셔플은 불확정 순열 루틴(450)이 클라이언트 디바이스(120) 및 분산 시스템(140)에서 실행될 때 발생할 수 있다. 스토리지 추상화(150) 주변의 이 N 데이터 블록(102)을 불확정적으로 셔플링하는 추가적 세부 사항은 2017년 5월 19일에 출원된 미국 특허 출원 62/508,523에서 찾을 수 있으며, 이는 그 전문이 본 명세서에 참조로 포함된다.
일부 구현에서, 클라이언트 디바이스(120)가 스토리지 추상화(150) 상에 저장된 암호화된 데이터 블록(102)에 액세스(판독/기록)할 필요가 있을 경우, 클라이언트 디바이스(120)의 데이터 처리 하드웨어(124)는 명령(300, 400)을 실행하여 데이터 블록(102)에 대한 쿼리(q)를 실행한다. 명령(300, 400)을 실행함으로써, 클라이언트 디바이스(120)는 분산 시스템(140)에 대해 클라이언트 디바이스(120)에 의해 실행된 쿼리(q) 시퀀스뿐만 아니라 데이터 블록(102)의 컨텐츠를 노출하지 않고 데이터 블록(102)을 검색할 수 있다. 쿼리(q)는 분산 시스템(140)이 대응하는 동작이 판독인지 또는 기록인지 인식하지 못하도록 두개의 단계 (1) 다운로드 페이즈 (phase, 단계) 및 (2) 오버라이트(overwrite) 페이즈로 구성된다. 또한, 명령(300, 400)의 실행은 어떤 데이터 블록(102)이 분산 시스템(140)으로부터 판독/기록되었는지를 제거한다. 명령(300, 400)의 실행은 클라이언트 디바이스(120)가 데이터 블록(102)에 대한 대응하는 쿼리(q)를 실행할 때 클라이언트 디바이스(120)와 분산 시스템(140) 사이에 2개의 라운드 트립(roundtrip, 왕복)을 요구한다. 예를 들어, 각각의 쿼리(q)는 다운로드 페이즈 및 오버라이트 페이즈를 포함하기 때문에, 기록 동작과 관련된 오버라이트 블록의 컨텐츠는 다운로드 페이즈 동안 다운로드된 블록의 컨텐츠에 의존하지 않는다. 따라서, 2개의 블록은 하나의 라운드 트립을 사용하여 요청될 수 있고, 제2 라운드 트립은 오버라이트 블록을 스토리지 추상화(150)에 다시 업로드하는데 사용될 수 있다.
도 1b를 참조하면, 일부 구현에서, 분산 저장 시스템(140)은 느슨하게 (loosely) 결합된 메모리 호스트(110, 110a-z)(예를 들어, 컴퓨터 또는 서버)를 포함하고, 각각은 데이터를 캐싱하는데 사용될 수 있는 스토리지 리소스(114)(예를 들어, 메모리 하드웨어, 메모리 하드웨어, 플래시 메모리, DRAM, PCM 및/또는 디스크)와 통신하는 컴퓨팅 리소스(112)(예를 들어, 하나 이상의 프로세서 또는 중앙 처리 장치(CPU))을 갖는다. 스토리지 리소스(114)에 대해 오버레이된 스토리지 추상화(150)는 하나 이상의 클라이언트 디바이스(120, 120a-n)에 의해 스토리지 리소스(114)의 확장 가능한 사용을 허용한다. 클라이언트 디바이스들(120)은 네트워크(130)를 통해(예를 들어, 원격 프로시저 호출(RPC)을 통해) 메모리 호스트들(110)과 통신할 수 있다.
일부 구현에서, 분산 저장 시스템(140)은, 클라이언트 디바이스(120)가 데이터 블록(102)에 대한 쿼리를(q)를 실행하도록 명령(300, 400)을 실행할 때 스토리지 추상화(150)로부터 데이터 블록(102) 및/또는 더미 데이터 블록(103)을 검색하기 위해 클라이언트 디바이스(120)로부터의 실제 및/또는 페이크 쿼리에 응답하기 위한 임의의 서버 작업의 필요성을 제거하는, "단측(single-sided)"이다. "단측"은 메모리 호스트(110)의 CPU(112)에서 실행되는 소프트웨어가 아니라 메모리 호스트(110)에 대한 대부분의 요청 처리가 하드웨어에서 수행될 수 있는 방법을 의미한다. 단측 분산 캐싱 시스템과 관련된 추가 개념 및 특징은 미국 특허 제9,164,702 호에서 찾을 수 있으며, 이는 그 전문이 본 명세서에 참조로 포함된다.
분산 시스템(140)은 원격 메모리 호스트(110)(예를 들어, 스토리지 추상화(200))의 스토리지 리소스(114)(예를 들어, 메모리 하드웨어) 주변의 데이터 블록(102)을 불확정적으로 이동시켜, RPC를 통해 또는 원격 직접 메모리 액세스(RDMA) 가능 네트워크 인터페이스 제어기(NIC)(116)를 통해 상기 원격 메모리 호스트(110)로부터 데이터 블록(102)을 획득할 수 있다. 네트워크 인터페이스 제어기(116)(네트워크 인터페이스 카드, 네트워크 어댑터 또는 LAN 어댑터라고도 함)는 컴퓨팅 디바이스/리소스(112)를 네트워크(130)에 연결하는 컴퓨터 하드웨어 컴포넌트일 수 있다. 메모리 호스트들(110a-z) 및 클라이언트 디바이스(120) 모두는 네트워크 통신을 위한 네트워크 인터페이스 제어기(116)를 각각 가질 수 있다. 하드웨어 리소스(110)의 물리적 프로세서(112)상에서 실행되는 명령(300, 400) 및/또는 불확정 순열 루틴(450)은 네트워크 인터페이스 컨트롤러(116)에 메모리(114)의 원격 다이렉트 메모리 액세스 가능 영역/위치(118A-N)의 세트를 등록한다. 각각의 메모리 위치(118)는 대응하는 데이터 블록(102)을 저장하도록 구성된다.
일부 구현에서, 클라이언트 디바이스(120)가 명령(300, 400)을 실행하여 데이터 블록(102)에 대한 쿼리(q)를 실행하고, 데이터 블록(102)이 클라이언트 디바이스(120)의 메모리 하드웨어(122)에서 블록 스태쉬(370)에 로컬로 저장되어 있다고 결정하는 경우, 클라이언트 디바이스(120)는 블록 스태쉬(370)로부터 데이터 블록(102)을 검색하고, 로컬 메모리 하드웨어(122)에서 블록 스태쉬(370)로부터 데이터 블록(102)의 검색을 은닉하도록 랜덤 블록(102)(또는 실제 및/또는 페이크 블록(102, 103)을 검색하기 위해 페이크 쿼리(304, 404)를 NIC(116)로 전송한다. 클라이언트 디바이스(120)는 페이크 쿼리(304, 404)로부터 다운로드된 랜덤 블록(102)을 폐기할 수 있다. 한편, 클라이언트 디바이스(120)가 데이터 블록(102)이 스토리지 추상화(150)에 저장되어 있다고 결정하는 경우, 클라이언트 디바이스(120)는 그 스토리지 추상화(150)로부터 대응하는 데이터 블록(102)을 검색하기 위해 실제 쿼리(302, 402)를 NIC(116)로 전송할 수 있다.
도 2a 및 도 2b는 하나 이상의 공모(colluding) 스토리지 리소스(114)(도 2a) 또는 다중-비공모 스토리지 리소스(도 2b) 중 하나에 저장된 데이터 블록(102)에 대한 다운로드 요청(202, 204)을 실행하기 위해 클라이언트 디바이스(120)상에서 실행되는 예시적인 차등적 프라이빗-정보 검색(DP-IR) 명령(200)을 제공한다. O-RAM 및 OS와 달리, N 데이터 블록(102)의 컨텐츠는 임의의 공격자들을 포함하여 모든 당사자에 의해 알려진 것으로 가정된다. 이 경우, 비신뢰된 서버는 클라이언트 디바이스(120)에 대한 액세스를 제공하기 전에 N개의 데이터 블록을 생성한다. 일반적으로, PIR 클라이언트 디바이스(120)는 데이터 블록(102)이 암호화되지 않고 그들의 메모리 위치가 공개적으로 이용 가능하기 때문에 상태 비보전형이다.
N 데이터 블록을 생성 및 저장하는 단일 서버(110)(예를 들어, 단일 스토리지 리소스(114))에 대해, 도 2a는 저장 디바이스(114a)로부터 블록(B3)(102)을 다운로드하기 위해 DP-IR 명령(200)을 실행하는 클라이언트 디바이스(120)를 도시한다. 여기서, 블록(B3)은 단일 스토리지 리소스(114a)에 저장된 9개의 N 블록(B1-B9) 중 하나에 대응한다. 클라이언트 디바이스(120)는 쿼리된 블록(102)과 관련된 인덱스 i(예를 들어, i = 1, 2, 3 ... 또는 9)를 호출할 수 있다. DP-IR 명령(200)은 일정한 에러 확률(α)에 대해, 하한에 점증적으로 타이트한 보안 파라미터(ε)를 갖는 차등적 프라이버시를 포함한다. 보안 파라미터(ε)는 0보다 크거나 같을 수 있고 에러 확률(α)은 0보다 클 수 있다. 다운로드된 블록(B3)에 대한 액세스 패턴을 은닉하기 위해, DP PIR 명령(200)은 블록(B3)을 제외한 K개 블록에 대해 확률(α)을 갖는 다운로드 요청(202) 및 블록(B3) 및 K-1개 다른 블록에 대해서는 확률(1-α)을 갖는 다른 다운로드 요청(204)을 실행함으로써 실제 쿼리들을 위장한다. 따라서, 각각의 다운로드 요청(202, 204)은 스토리지 리소스(114) 상에 저장된 N 데이터 블록(102) 중 정확히 K개의 블록의 대역폭을 요청하고 있다. 다운로드 요청(202, 204)은 블록(B3)이 클라이언트 디바이스(120)가 다운로드하기를 원하는 실제 쿼리된 블록(B3)이라는 사실을 은닉하기 위해 임의의 순서로 발생할 수 있다. K의 값은 보안 파라미터(ε) 및 에러 확률(α)의 함수에 기초한다. K는 다음과 같이 표현될 수 있다.
Figure 112019125966676-pct00001
단일 서버 예에서, 클라이언트 디바이스(120)는 쿼리된 블록(B3)을 제외한 K개의 블록(B1, B2, B5)을 리턴하는 에러 확률(α)과 관련된 제1 다운로드 시퀀스(212) 및 블록(B3) 및 K-1개의 다른 블록(B6, B9)에 대한 에러 확률(1-α)과 관련된 제2 다운로드 시퀀스(214)를 수신한다. 제2 다운로드 시퀀스(214)는 제1 다운로드 시퀀스(212)를 수신하기 전 또는 후에 클라이언트 디바이스(120)에 의해 수신될 수 있다. 에러 확률(α)과 관련된 제1 다운로드 시퀀스(212)에서 리턴된 K개의 블록(B1, B2, B5)과 에러 확률(1-α)와 연관된 제2 다운로드 시퀀스(214)에서 리턴된 K-1개의 다른 블록(B6, B9)은 각각 클라이언트 디바이스(120)상에서 실행되는 DP-IR 명령(200)에 의해 무작위로 균일하게 선택될 수 있다.
일부 구현에서, 다수의 서버(110, 110a-n)를 운영하는 엔티티 또는 조직(예를 들어, 개별 서버(110)와 각각 관련된 2개 이상의 추가 스토리지 리소스(114, 114a-n))는 서버들 중 일부(t)를 변형시키는 서버들 중 하나를 포함한다. 서로 공모하는 다양한 스토리지 리소스(114a-n)로부터 데이터 블록(102)을 다운로드하는 경우 클라이언트 디바이스(120)에 의한 액세스 패턴을 은닉하기 위한 이러한 상황에서, 도 2a는 분할 하고 모든 공모 스토리지 리소스(114a-n)로부터 블록(B3)을 균등하게 요청하는 대신에 다운로드 요청들(202, 204)을 선택된 임의의 스토리지 리소스(114)로 무작위로 균일하게 전송함으로써 블록 B3(또는 다른 블록 Bi)을 다운로드하기 위해 DP-IR 명령(200)을 실행하는 클라이언트 디바이스(120)를 도시한다. 따라서, 다중 공모 서버 설정에서 상기 다운로드된 블록(B3)에 대한 액세스 패턴을 은닉하기 위해, DP PIR 명령(200)은 블록(B3)을 제외한 K개의 블록에 대해 확률(α)로 상기 다운로드 요청(202) 및 상기 블록(B3) 및 K개의 다른 블록에 대해 확률(1-α)로 다른 다운로드 요청(204)을 실행함으로써 무작위로 선택된 스토리지 리소스(114)에서 균일하게 전송된 실제 쿼리들을 위장한다. 클라이언트 디바이스로부터 다운로드 요청들(202, 204) 각각을 수신한 것에 응답하여, 균일하게 무작위로 선택된 스토리지 리소스(114)는 쿼리된 블록(B3)을 제외하고 K개의 블록(B1, B2, B5)에 대한 에러 확률(α)과 관련된 대응하는 다운로드 시퀀스(212) 및 단일 서버 설정과 관련하여 전술한 바와 동일한 방식으로 블록(B3) 및 K-1개의 다른 블록(B6, B9)에 대한 에러 확률(1-α)과 관련된 대응하는 다운로드 시퀀스(214)를 리턴한다.
도 2b를 참조하면, 클라이언트 디바이스(120)는 상호 불신하고 따라서 서로 정보를 공유하지 않는 다수의 비-공모 서버(110)(예를 들어, 2개 이상의 스토리지 리소스(114)) 중 하나로부터 데이터 블록(Bq)(102)에 대해 쿼리(질의)한다. 예를 들어, 비-공모 서버들(110)은 클라언트 디바이스(120)에 액세스할 수 있지만 계약 의무 또는 다른 이유로 인해 서로 정보를 공유하지 않는 개별 엔티티에 의해 소유될 수 있다. 각각의 비-공모 서버(110)는 비-상호 작용하는 공격자와 관련될 수 있어서, 각 서버(110)는 그의 대응하는 스토리지 리소스(114)상에서 수행된 모든 메모리 액세스 패턴을 모니터링할 수 있다. 다운로드된 블록(Bq)에 대한 액세스 패턴을 은닉하기 위해, DP PIR 명령(200)은 각 스토리지 리소스(114)로부터 정확히 c개의 랜덤한 대역폭 블록을 다운로드하도록 요청하는 각각의 비-공모 스토리지 리소스(114)으로 전송된 대응하는 다운로드 요청(224)을 실행함으로써 실제 쿼리들을 위장한다. 쿼리된 블록 Bq를 저장하는 스토리지 리소스(114)에 대해, 대응하는 다운로드 요청(224)은 쿼리된 블록(Bq) 및 c-1개의 다른 블록에 대한 것이다. 나머지 스토리지 리소스들(114)에 대해, 각각의 대응하는 다운로드 요청(224)은 쿼리된 블록(Bq)을 제외한 c개의 블록에 대한 것이다. 각각의 비-공모 스토리지 리소스(114)에 대한 c의 값은 보안 파라미터(ε), 비-공모 서버(D)의 총 수, 및 각의 스토리지 리소스(114)에 저장된 N개의 데이터 블록(102) 중 대응하는 수에 기초한다. 예를 들어, 각각의 비-공모 스토리지 리소스(114)에 대해, c는 다음과 같이 표현될 수 있다.
Figure 112019125966676-pct00002
일부 구현에서, O-RAM은 클라이언트 디바이스(120)가 클라이언트 소유의 및 클라이언트가 암호화한 데이터 블록(102)을 분산 시스템(140)의 스토리지 추상화(150)에 걸쳐 대응하는 메모리 위치(118)에 비공개적으로 저장할 수 있게 한다. 도 2a 및 2b의 실시예들의 DP-IR과 대조적으로, O-RAM에 저장된 데이터 블록(102)은 개인 키를 사용하여 클라이언트 디바이스(120)에 의해 암호화되고, 각 데이터 블록(102)과 관련된 메모리 위치(118)는 비신뢰 분산 시스템(140)으로부터 은닉된다. 도 3a 내지 도 3d는 분산 시스템(140)에 클라이언트 디바이스(120)에 의해 실행된 쿼리(q)의 시퀀스뿐만 아니라 데이터 블록(102)의 컨텐츠를 노출하지 않고, 스토리지 추상화에 저장된 암호화된 데이터 블록(102)에 액세스(판독/기록)하기 위한 쿼리(q)를 실행하기 위해 클라이언트 디바이스(120)에서 실행되는 차등적 프라이빗-불확정 랜덤 액세스 메모리(DP-ORAM) 명령(300)의 예를 도시한다. 쿼리(q)는 분산 시스템(140)이 쿼리된 데이터 블록(Bi)이 존재하지 않은 경우 미스(miss)를 노출하는 것뿐만 아니라 대응하는 동작이 판독 또는 기록인지 여부를 인식하지 못하도록 2개의 페이즈 즉 (1) 다운로드 페이즈 및 오버라이트 페이즈로 구성된다. 클라이언트 디바이스(120)상에서(예를 들어, 데이터 처리 하드웨어(124)상에서) 실행되는 DP-ORAM 명령(300)은 먼저 암호화 모듈(305)을 사용하여 길이(k)의 개인 키(K, K1, K2)를 생성하고, N개의 빈 블록 슬롯(예를 들어, 빈 메모리 위치(118))의 스토리지 추상화(150)에서 어레이(A)를 초기화하고, 클라이언트 디바이스(120)의 메모리 하드웨어(122)에서 블록 스태쉬(370)을 초기화한다. 어레이(A)의 각각의 빈 블록 슬롯은 대응하는 인덱스(Ai)를 포함할 수 있다. 각각의 빈 블록 슬롯은 초기에 더미 블록(예를 들어, 암호화가 0인 블록)으로 선택적으로 채워질 수 있다.
일부 예에서, 클라이언트 디바이스(120) 및 분산 시스템(140)은 불확정 순열 루틴(450)을 실행하여, 분산 시스템(140)으로 하여금 순열 또는 재순열된 데이터 블록들(102)을 저장하기 위한 스토리지 추상화(150)의 새로운 메모리 위치들(118)을 할당하고, 스토리지 추상화(150)를 다수의 M 데이터 버킷(350, 350a-n)으로 구성/분할/파티션하게 한다. 각각의 데이터 버킷(350)은 지정된 수의 N 데이터 블록(102)을 저장할 수 있다. 일부 예에서, 데이터 블록들(102)은 스토리지 추상화(150)를 M 데이터 버킷(350)으로 분할하는 것이 비신뢰 분산 시스템(140)에 대해 모호/오블리어스하도록 이전의 불확정 순열 루틴(450) 동안 클라이언트 디바이스(120)에서 수행된 의사 난수 순열(π)에 의해 각 데이터 버킷(350)에 무작위로 할당된다. 더 작은 데이터 버킷(350)은 분산 시스템(140)과 클라이언트 디바이스(120)가 불확정 순열 루틴(450) 및 명령(300)의 실행 동안 순열 동작을 수행할 때 대역폭을 증가시키기 위해 스토리지 추상화(150)의 O-RAM을 세분화한다. 분산 시스템(140)에서 초기화된 M 데이터 버킷(350)의 수는 보안 및/또는 대역폭 요건에 기초하여 조정 가능하다.
블록 스태쉬(370)는 클라이언트 디바이스(120)의 메모리 하드웨어(122)에서 C와 동일한 공간/크기/용량을 점유하고, 각 데이터 블록(102)은 (스토리지 추상화(150)에 더하여) 블록 스태쉬(370)에 저장될 확률(p)을 갖는다. 블록 스태쉬(370)의 용량(C)은 보안 및/또는 대역폭 요건에 기초하여 조정 가능하다. 예를 들어, 블록 스태쉬(370)의 용량(C)을 증가시키는 것은 증가된 대역폭의 비용으로 보안을 증가시킨다. 블록 스태쉬(370)에 저장되는 데이터 블록의 확률(p)은 다음과 같이 표현될 수 있다.
Figure 112019125966676-pct00003
DP-ORAM 명령(300)은 또한 클라이언트 디바이스(120)로 하여금 개인 키(K)를 사용하여 각각의 데이터 블록(102)을 암호화하게 하고, 각각의 암호화된 데이터 블록(102)의 실제 위치가 분산 시스템(140)로부터 은닉되도록 순열(π)에 기초하여 스토리지 추상화(150)상의 대응하는 무작위로 선택된 빈 블록 슬롯(Ai)에 각각의 암호화된 데이터 블록(Bi)(102)를 반복적으로 업로드하게 한다. 더욱이, 데이터 블록(102)이 클라이언트 소유-개인 키(K)를 사용하여 클라이언트 디바이스(120)에 의해 신뢰(된) 측에서 암호화됨에 따라, 스토리지 추상화(150)에 저장된 N 데이터 블록(102)의 컨텐츠는 분산 시스템(150)에도 알려져 있지 않다. 클라이언트 디바이스(120)는 요청된 데이터 블록(102)과 관련된 대응하는 인덱스(i)와 함께 순열(π)을 적용함으로써 스토리지 추상화(150)에 저장된 대응하는 데이터 블록(102)에 간단히 액세스할 수 있다.
도 3a를 참조하면, 데이터 처리 하드웨어(124)는 데이터 블록(Bi)(102)이 클라이언트 디바이스(120)의 메모리 하드웨어(122)상의 블록 스태쉬(370)에 저장될 때 다운로드 페이즈 동안 데이터 블록(Bi)(102)에 대한 쿼리(q)를 실행한다. Bi는 스토리지 추상화(150)의 어레이(A)에 암호화되어 저장된 N 데이터 블록(1-16) 중 어느 하나에 대응할 수 있다. 데이터 블록(Bi)(102)은 확률(p)로 블록 스태쉬(370)에 저장되므로, 데이터 처리 하드웨어(124)는 블록 스태쉬(370)으로부터 상기 요청된 데이터 블록(Bi)(102)을 제거하고, 비신뢰 분산 시스템(140)으로 페이크 쿼리(304)를 전송하여 블록 스태쉬(370)로부터의 데이터 블록(Bi) 검색을 난독화하기 위해 스토리지 추상화(150)에 저장된 일부 랜덤 데이터 블록(102)을 다운로드한다. 도시된 예에서, 페이크 쿼리(304)는 스토리지 추상화(150)상에 저장된 N 블록(102)의 어레이(A)의 제3 데이터 버킷(350c)으로부터 블록(11)을 무작위로 선택하고 다운로드한다. 여기서, 페이크 쿼리(304)는 무작위로 균일하게 선택된 j(예를 들어, 도시된 예에서 j는 "11"과 동일함)를 갖는 A[j]를 스토리지 추상화(150)로부터 요청한다. 페이크 쿼리(304)로부터 다운로드된 데이터 블록(예를 들어, 블록 11)을 수신하면, 데이터 처리 하드웨어(124)는 클라이언트 디바이스(120)가 단지 블록 스태쉬(370)로부터 데이터 블록(Bi)의 실제 검색을 난독화하기 위해 랜덤하게 블록을 다운로드하고 있기 때문에 간단히 데이터 블록(102)을 폐기할 수 있다. 따라서, 비신뢰 분산 시스템(140)은 검색된 블록(예를 들어, 블록 11)이 실제 쿼리(302) 또는 페이크 쿼리(304)에 응답하여 다운로드되는지 여부를 인식하지 못한다. 데이터 처리 하드웨어(124)는 블록 스태쉬(370)으로부터 검색된 데이터 블록(Bi)에 대한 판독 동작 또는 기록 동작을 실행할 수 있고, 오버라이트 페이즈동안 확률(p)를 갖는 블록 스태쉬(370) 또는 스토리지 추상화(150)에 데이터 블록(Bi)의 현재 버전을 저장할 수 있다.
한편, 도 3b는 데이터 블록(Bi)이 클라이언트 디바이스(120)의 메모리 하드웨어(122)상의 블록 스태쉬(370)에 로컬로 저장되지 않을 때 다운로드 페이즈 동안 그 데이터 블록(Bi)(102)에 대한 쿼리(q)를 실행하는 데이터 처리 하드웨어(124)를 도시한다. 데이터 블록(Bi)(102)는 블록 스태쉬(370)에 저장되지 않기 때문에, 데이터 처리 하드웨어(124)는 실제 쿼리(302)를 비신뢰 분산 시스템(140)으로 전송하여 스토리지 추상화(150)에 저장된 데이터 블록(Bi)을 다운로드한다. 도시된 예에서, Bi는 스토리지 추상화(150)의 제2 데이터 버킷(350b)의 블록 6에 대응한다. 여기서, 실제 쿼리(302)는 클라이언트 디바이스(120)가 액세스하고자 하는 (데이터 블록(Bi)(102))의 인덱스/식별자에 대응하는 i(예를 들어, 도시된 예에서 "6"과 동일 함)를 갖는 A[i]를 스토리지 추상화(150)로부터 요청한다. 실제 쿼리(302)로부터 데이터 블록(Bi)(102)를 검색/다운로드하는 것에 응답하여, 데이터 처리 하드웨어(124)는 블록(Bi)을 해독한다. 예를 들어, 데이터 처리 하드웨어(124)는 블록 6의 컨텐츠를 해독하기 위해 암호화 모듈(305)에 로컬로 저장된 개인 키(K)에 액세스할 수 있다. 클라이언트 디바이스(120)는 검색된 블록(Bi)(예를 들어, 블록 6)을 예를 들어, 메모리 하드웨어(122)에 홀드할 수 있다.
도 3c를 참조하면, 데이터 처리 하드웨어(124)는 오버라이트 페이즈 동안 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 확률(p)로 현재 버전의 데이터 블록(Bi')을 블록 스태쉬(370)에 저장한다. 오버라이트 페이즈는 이전 버전의 데이터 블록(Bi)이 블록 스태쉬(370)(도 3a) 또는 스토리지 추상화(150)(도 3b)로부터 검색된 대응하는 다운로드 페이즈를 따른다. 일부 예에서, 클라이언트 디바이스(120)는 다운로드 페이즈 동안 검색된 데이터 블록(Bi)에 대한 기록 동작을 실행하여 새로운 버전(Bi')으로 데이터 블록을 업데이트한다. 본 명세서에서 사용된 바와 같이, 이전 버전의 Bi를 새로운 버전 Bi'로 업데이트하는 것은 이전 버전 Bi를 새로운 버전 Bi'로 교체 및 폐기하는 것을 포함할 수 있다. 이 예에서, 업데이트된 새로운 버전(Bi')은 오버라이트 페이즈 동안 확률(p)로 블록 스태쉬(370)에 저장된다. 다른 예에서, 클라이언트 디바이스(120)는 단순히 다운로드 페이즈 동안 검색된 데이터 블록(Bi)에 대한 판독 동작을 실행한다. 이러한 예에서, 블록 스태쉬(370)에 저장된 현재 버전은 다운로드 페이즈 동안 검색된 버전으로부터 변경되지 않는다.
비신뢰 분산 시스템(140)으로부터 확률(p)로 블록 스태쉬(370)의 현재 버전의 데이터 블록(Bi')의 저장을 난독화하기 위해, 데이터 처리 하드웨어(124)는 또 다른 페이크 쿼리(304)를 비신뢰 분산 시스템(140)으로 전송하여 스토리지 추상화(150)에 저장된 일부 랜덤 데이터 블록(102)을 다운로드한다. 도시된 예에서, 페이크 쿼리(304)는 스토리지 추상화(150)에 저장된 N 블록(102)의 어레이(A)의 제2 데이터 버킷(350b)으로부터 블록 8을 무작위로 선택하고 다운로드한다. 여기서, 페이크 쿼리(304)는 무작위로 균일하게 선택된 j(예를 들어, 도시된 예에서 j는 "8"과 동일함)를 갖는 A[j]를 스토리지 추상화(150)로부터 요청한다. 페이크 쿼리(304)로부터 다운로드된 데이터 블록(예를 들어, 블록 8)을 수신하면, 데이터 처리 하드웨어(124)는 랜덤 신선도(freshness)로 그 블록을 해독 및 재암호화한 다음, 그 재암호화된 데이터 블록(예를 들어, 블록 8)을 분산 시스템(140)의 스토리지 추상화(150)에 다시 업로드한다. 여기서, 데이터 처리 하드웨어(124)는 분산 시스템(140)이 판독/기록 액세스를 위한 페이크 쿼리(304) 또는 실제 쿼리(302)에 응답하여 블록이 업로드되었는지 아닌지 여부를 인식하지 못하도록 컨텐츠를 변경하지 않고 단순히 데이터 블록(예를 들어, 블록 8)을 재암호화한다. 다시 말해서, 데이터 처리 하드웨어(124)는 재암호화된 데이터 블록(102)이 오버라이트의 결과로 업데이트된 컨텐츠를 포함하는지 여부 또는 컨텐츠가 변경되지 않았는지 여부를 알 수 있는 방법이 없다.
한편, 현재 버전의 데이터 블록(Bi')이 블록 스태쉬(370)에 저장되지 않은 경우, 도 3d는 데이터 처리 하드웨어(124)가 실제 쿼리(302)를 비신뢰 분산 시스템 (140)으로 전송하여 스토리지 추상화(150)로부터 대응하는 데이터 블록(Bi)(예를 들어, 블록 6)을 검색하는 동안 현재 버전의 데이터 블록(Bi')을 (예를 들어, 메모리 하드웨어(122)에) 홀드하고 있는 클라이언트 디바이스(120)를 도시한다. 그 후에, 데이터 처리 하드웨어(124)는 스토리지 추상화(150)에 저장하기 위해 현재 버전의 데이터 블록(Bi')을 함호화하여 분산 시스템(140)으로 업로드하고, 실제 쿼리(302)로부터 검색된 상기 대응하는 데이터 블록(Bi)의 이전 버전을 폐기한다. 일부 예에서, 현재 버전의 데이터 블록(Bi')은 다운로드 페이즈 동안 검색된 이전 버전의 데이터 블록(Bi)에 대해 기록 동작을 실행한 후 클라이언트 디바이스(120)에 의해 업데이트된 새로운 버전의 블록 6에 대응한다. 다른 예에서, 클라이언트 디바이스(120)가 다운로드 페이즈 동안 검색된 데이터 블록(Bi)에 대한 판독 동작만을 실행할 경우, 분산 시스템(140)으로 업로드된 현재 버전의 데이터 블록(Bi')(예를 들어, 블록 6)은 새로 계산된 암호문(ciphertext)(예를 들어, 다른 암호화)을 제외하고는 상기 대응하는 폐기된 데이터 블록(Bi)로부터 변경되지 않은 채로있을 수 있다. 따라서, 비신뢰 분산 시스템(140)은 클라이언트 디바이스(120)가 개인 키를 사용하여 로컬로 데이터 블록(Bi')을 새로 암호화했기 때문에 업로드된 현재 버전의 데이터 블록(Bi')의 컨텐츠가 변경되었는지 여부를 알지 못한다.
반면에, 도 3a 내지 도 3d의 O-RAM 구성은 클라이언트(104)에 의해 아웃소싱 된 N 데이터 블록(102) 각각이 고유한 블록 식별자(i)를 갖도록 요구하지만, 불확정 스토리지(OS) 구성은 데이터 블록(102)이 문자열에 의해 식별될 수 있게 한다. 더욱이, OS 프로토콜은 동작들이 스토리지 추상화(150)에 현재 저장된 데이터 블록(102) 또는 존재하지 않는 데이터 블록(즉, 블록 미스)을 참조하는지 여부를 공격자가 학습할 수 없도록 임의의 현재 저장된 블록에 대응하지 않는 식별자들을 참조하는 동작들(판독/기록)을 처리해야 한다. 일부 구현에서, DP-ORAM 구성/프로토콜은 고유한 인덱스를 [N]에서 각각의 N 블록으로 할당하는 클라이언트 디바이스(120)(예를 들어, 메모리 하드웨어(122))에 위치 맵을 저장함으로써 DP-OS 구성/프로토콜로 변환한다. 여기서, 위치 맵은 각각의 블록 식별자를 대응하는 인덱스로 변환하여 나머지 쿼리가 이전에 논의된 DP-ORAM과 정확히 일치하도록 한다. 그러나 이러한 구현은 위치 맵을 저장하는데 필요한 많은 양의 클라이언트 측 스토리지로 인해 실용적이지 않을 수 있다. 클라이언트가 블록 식별자(예를 들어, 문자열)의 일대일 위치 맵을 대응하는 인덱스에 저장하지 않아도 되도록 하기 위해, 본 명세서에서의 구현은 블록 식별자를 작은 도메인으로부터 인덱스로 변환하기 위해 의사 난수 함수(PRF)를 사용하는 것에 관한 것이다. PRF는 단일 키의 저장이 필요하므로 클라이언트에 대한 스토리지 요구 사항은 위치 맵을 저장하는 것과 비교하여 크게 줄어든다.
도 4a 내지 도 4c는 클라이언트 디바이스(120) 및 N 데이터 블록(102)을 스토리지 추상화(150) 상에 암호화된 형태로 저장하기 위한 분산 시스템(140)을 초기화하기 위해 클라이언트 디바이스(120)에서 실행되는 예시적인 DP-OS(differential private-oblivious storage) 명령(400)을 도시한다. 도 5a 내지 도 5d는 클라이언트 디바이스(120)에 의해 실행된 쿼리(q)의 시퀀스뿐만 아니라 데이터 블록(102)의 컨텐츠를 분산 시스템(140)에 노출하지 않고 스토리지 추상화(150)에 저장된 암호화(된) 데이터 블록들(102) 중 하나에 액세스(판독/기록)하기 위한 쿼리(q)를 실행하기 위해 DP-OS 명령(400)을 실행하는 클라이언트 디바이스(120)를 도시한다.
도 4a를 참조하면, 데이터 처리 하드웨어(124)에 의한 DP-OS 명령(400)의 실행은 클라이언트 디바이스(120)로 하여금 암호화 모듈(305)로부터 획득된 하나 이상의 개인 키를 사용하여 N 데이터 블록(102) 각각을 암호화하고, 클라이언트 디바이스(120)의 메모리 하드웨어(122)에서 블록 스태쉬(370)을 초기화하고, 암호화된 데이터 블록들(102)의 서브 세트를 확률(p)로 블록 스태쉬(370)에 저장하게 한다. 확률(p)는 위에서 논의된 식 3을 사용하여 표현될 수 있다. ORAM과 마찬가지로, 클라이언트 디바이스(120)에서의 블록 스태쉬(370)는 보안 및 대역폭 요건에 기초하여 조정될 수 있는 스토리지의 O(C) 블록의 용량을 갖는다. 클라이언트 디바이스(120)(예를 들어, 데이터 처리 하드웨어(124))는 명령(400)을 실행할 때, 블록 스태쉬(370)에 저장된 각각의 데이터 블록(102)에 대응하는 고유 문자열 식별자들(id)을 저장하기 위한 식별자 스태쉬(372)를 추가로 초기화한다.
각각의 데이터 블록(102)은 문자열로 표현된 대응하는 식별자(id)를 포함한다. DP-OS 초기화 중에, 명령(400)은 클라이언트 디바이스(120)으로 하여금 분산 시스템(140)이 대응하는 암호화 블록(102, 103)을 저장하기 위해 정확히 m 메모리 슬롯을 갖는 각각의 라벨들(1-N)로 N 버킷(350, 350A-N)을 초기화하는 동안 랜덤하게 PRF(F1, F2)를 생성한다. 도시된 예에서, 각각의 버킷(350)에 대한 메모리 슬롯(m)의 수는 다음과 같이 표현된다.
Figure 112019125966676-pct00004
따라서, 대응하는 버킷(350) 내의 각각의 메모리 슬롯(m)은 암호화 형태로 실제 데이터 블록(102)을 저장하거나 암호화된 형태로 더미 데이터 블록(103)을 저장한다. N 버킷(350)이 초기화될 때, 각각의 버킷(350)은 초기에 더미 블록(103)으로 채워질 수 있다. 각 블록(102, 103)의 메타 데이터 및 컨텐츠는 함께 저장될 것이고, 각 블록(102, 103)은 그 블록이 실제인지 페이크(즉, 더미)인지 여부를 나타내는 대응하는 태그를 포함할 수 있다. 분산 시스템(140)은 N 쌍의 버킷 식별자의 위치 맵(355)을 저장하고 i 번째 쌍으로서 PosMap[i]를 나타낼 수 있다.
클라이언트 디바이스(120)는 추가 키(K1, K2)의 저장을 각각 필요로 하는 PRF(F1, F2)뿐만 아니라 데이터 블록(102)을 암호화/복호화하기 위한 암호화 키(들)을 저장하도록 더 구성된다. 편의상, F1(K1,x) 및 F2(K2,x)를 사용하는 대신 키 파라미터가 드롭(drop)될 수 있다. 명백해 지겠지만, 클라이언트 디바이스(120)에 의해 생성되고 그 위에 저장된 PRF(F1, F2)의 사용은 식별자(idi)를 갖는 데이터 블록(Bi)이 항상 F1(idi) 및 F2(idi)로 라벨링된 2개의 버킷 중 하나에 있거나 블록 스태쉬에 저장되도록 보장한다. 본 명세서에서 사용된 바와 같이, F(idi)는 편의상 쌍(F1(idi), F2(idi))을 지칭한다.
블록들을 암호화하고, N 버킷(350A-N)을 초기화하고, 랜덤하게 PRF(F1, F2)를 생성한 후, 명령(400)은 데이터 처리 하드웨어(124)로 하여금 분산 시스템(140)의 스토리지 추상화(150)에 불확정적으로(obliviously) 저장하기 위해 N 데이터 블록(102) 각각을 반복하게 한다. 데이터 블록(Bi)의 배치에 대응하는 현재 반복에 대해, 도 4b는 인덱스가 s1 = F1(idi) 및 s2 = F2(idi)인 한 쌍의 데이터 버킷(350)을 리턴/다운로드한 다음 그 다운로드된 데이터 버킷(s1, s2)내의 모든 블록(102, 103)을 해독하여 두 버킷 중 어느 것이 최소 로드(least loaded)되는지를 결정하기 위해 PRF(F1, F2)를 사용하는 데이터 처리 하드웨어(124)를 도시한다. 본 명세서에서 사용된 바와 같이, 최소 로드(된) 버킷은 최소량의 실제 데이터 블록(102)을 갖는 데이터 버킷을 지칭한다. 도시된 예에서, 데이터 버킷(s1)은 더 많은 수의 실제 데이터 블록(102)을 포함하기 때문에(예를 들어, 데이터 버킷(s1)은 하나의 실제 데이터 블록(102)을 포함하고 데이터 버킷(s2)은 제로의 실제 데이터 블록(102)을 포함함) 데이터 버킷(s2)이 최소 로드된다. 따라서, 데이터 처리 하드웨어(124)는 최소 로드 버킷(s2)으로부터의 더미 블록들(103) 중 하나를 현재 반복의 데이터 블록(Bi)으로 대체한다. 교체된 더미 블록(103)은 폐기될 수 있다. 한편, 다운로드된 데이터 버킷(s1, s2) 각각이 동일한 개수의 더미 블록들(103)을 포함하는 경우, 클라이언트 디바이스(120)는 데이터 블록(Bi)(102)의 입력을 위해 어느 하나의 버킷을 무작위로 선택할 수 있다.
일부 시나리오에서, 특히 데이터 버킷들(350)이 실제 데이터 블록(102)으로 가득 차게됨에 따라 이후의 반복에서, 현재 반복에 대한 2개의 버킷(s1 = F1(idi) 및 s2 = F2(idi))은 임의의 더미 블록(103)을 포함하지 않을 수 있고, 그에 따라 버킷들은 완전히 채워지고 실제 데이터 블록(102)과 동일하게 로드된다. 이들 시나리오에서, 명령(400)은 현재 처리되고 있는 데이터 블록(Bi)을 입력하기 위한 최소 로드 버킷을 식별하기 위해 2개의 새로운 버킷이 다운로드되도록 단순히 실패 및 종료될 것이다.
도 4c는 다운로드된 버킷(s1, s2) 내의 모든 블록(102, 103)을 새로운 랜덤성(randomness)으로 재암호화한 다음, 그 버킷들(s1, s2)을 스토리지 추상화(150) 내의 동일한 위치에서 분산 시스템(140)으로 다시 업로드하는 데이터 처리 하드웨어(124)를 도시한다. 확률(p)로, Bi는 블록 스태쉬(370)에 저장될 수 있다. 나머지 확률(즉, 1(C/N))에 대해서는 Bi가 폐기된다. 분산 시스템(140)은 한 쌍(F1(idi), F2(idi))을 참조하여 F(idi)로 F(idi)와 동일하게 위치 맵(PosMap[i])을 설정할 수 있다.
N 데이터 블록(102)을 암호화된 형태로 스토리지 추상화(150)상에 불확정적으로 저장하고 데이터 블록(102)의 서브 세트를 확률(p)로 블록 스태쉬(370)에 저장함으로써 DP-OS를 초기화한 후, 도 5a는 데이터 블록(Bi)(102)이 클라이언트 디바이스(120)의 메모리 하드웨어(122)상의 블록 스태쉬(370)에 저장될 때 다운로드 페이즈 동안 데이터 블록(Bi)(102)에 대한 쿼리(q)를 실행하도록 명령(400)을 실행하는 데이터 처리 하드웨어(124)를 도시한다. 쿼리(q)는 블록에 대한 동작(판독/기록)뿐만 아니라 블록(Bi)에 대한 식별자(id)를 포함한다. 동작이 기록 동작인 경우, 현재 버전을 나타내는 새로운 블록이 쿼리(q)에 포함될 수도 있다. 여기서, 데이터 처리 하드웨어(124)는 블록 스태쉬(370)에 쿼리하여 데이터 블록(Bi)(102)이 그안에 저장되어 있는지를 결정하거나, 데이터 처리 하드웨어(124)는 식별자 스태쉬(372)에 쿼리하여 데이터 블록(Bi)(102)와 관련된 대응하는 식별자(id)(예를 들어, 문자열)를 찾는다. 데이터 처리 하드웨어(124)는 블록 스태쉬(370)으로부터 데이터 블록(Bi)(102)을 제거한다. 데이터 블록(Bi)(102)은 확률(p)로 블록 스태쉬(370)에 저장되므로(및/또는 id가 식별자 스태쉬(372)에 저장됨), 데이터 처리 하드웨어(124)는 블록 스태쉬(370)로부터 데이터 블록(Bi)의 검색을 난독화하기 위해 비신뢰 분산 시스템(140)으로 페이크 쿼리(404)를 전송하여 스토리지 추상화(150)에 저장된 2개의 랜덤 데이터 버킷(350)을 다운로드한다. 도시된 예에서, 페이크 쿼리(404)는 버킷 1 및 버킷 3를 랜덤하게 다운로드한다. 클라이언트 디바이스(120)는 2개의 랜덤하게 다운로드된 버킷(350)(예를 들어, 버킷 1 및 버킷 3) 및 그들의 각각의 컨텐츠를 간단히 폐기할 수 있다.
한편, 도 5b는 데이터 블록(Bi)이 로컬 블록 스태쉬(370)에 저장되거나 대응하는 식별자(id)가 클라이언트 디바이스(120)의 식별자 스태쉬(372)에 있지도 않은 경우 다운로드 페이즈 동안 데이터 블록(Bi)(102)에 대한 쿼리(q)를 실행하는 데이터 처리 하드웨어(124)를 도시한다. 데이터 블록(Bi)(102)이 블록 스태쉬(370)에 저장되지 않기 때문에(식별자(id)가 식별 스태쉬(372)에 있지도 않음), 데이터 처리 하드웨어(124)는 실제 쿼리(402)를 비신뢰 분산 시스템(140)으로 전송하여 인덱스(s1 = F1(idi) 및 s2 = F2(idi))를 갖는 한 쌍의 데이터 버킷(350)을 다운로드한 다음, 그 다운로드된 데이터 버킷(s1, s2) 내의 모든 블록(102, 103)을 해독하여 데이터 블록(Bi)이 버킷(s1, s2) 중 하나에 저장되어 있는지를 결정한다. 데이터 처리 하드웨어(124)는 암호화 모듈(305)상에 로컬로 저장된 개인 키들에 액세스함으로써 각각의 버킷 내의 모든 블록(102, 103)을 해독할 수 있다. 도시된 예에서, 데이터 처리 하드웨어(124)는 다운로드된 버킷(s1)으로부터 데이터 블록(Bi)을 찾아서 제거한다. 제거된 데이터 블록(Bi)은 메모리 하드웨어(122) 내의 클라이언트 디바이스(120) 상에 일시적으로 저장될 수 있고, 각각의 다운로드된 버킷(s1, s2)의 나머지 블록(102, 103)은 폐기될 수 있다. 일부 시나리오(미도시)에서, 블록(Bi)에 대한 쿼리(402)는 블록(Bi)이 리턴된 버킷(s1, s2)에서 발견되지 않을 경우 미스(miss)를 초래한다. 이들 시나리오에서, 오버라이트 페이즈는 클라이언트 디바이스(120)가 비존재 블록(Bi)의 미스를 비신뢰 분산 시스템(140)에 노출하지 않도록 클라이언트 디바이스(120)가 랜덤하게 선택된 2개의 버킷에 대해 페이크 오버라이트를 실행하는 단계를 포함한다.
도 5c를 참조하면, 일부 구현에서, 도 5b의 다운로드 페이즈 동안 블록(Bi)에 대한 쿼리(402)가 블록(Bi)이 존재하지 않음을 나타내는 미스를 발생할 때, 데이터 처리 하드웨어(124)는 그 미스와 관련된 식별자(id)를 식별자 스태쉬(372)에 추가한다. 식별자 스태쉬(372)에 식별자(id)의 추가를 난독화하고 블록(Bi)의 비-존재를 비신뢰 분산 시스템(140)에 노출하지 않기 위해, 데이터 처리 하드웨어(124)는 페이크 쿼리(404)를 비신뢰 분산 시스템(140)로 전송하여 스토리지 추상화(150)상에 저장된 2개의 랜덤 데이터 버킷(350)(예를 들어, 버킷 1 및 버킷 3)을 다운로드한다. 그 후, 데이터 처리 하드웨어(124)는 스토리지 추상화(150)내의 동일한 위치에서 버킷(예를 들어, 버킷 1 및 버킷 3)을 분산 시스템(140)으로 다시 업로드하기 전에 상기 랜덤하게 다운로드된 버킷들 내의 모든 블록(102, 103)을 새로운 랜덤성으로 해독 및 재암호화한다. 랜덤하게 다운로드된 버킷(예를 들어, 버킷 1 및 버킷 3)의 컨텐츠는 변경되지 않았기 때문에(새로 계산된 암호문(예를 들어, 다른 암호화)을 제외하고), 2개의 랜덤 버킷에서의 다운로드, 복호화 및 재 암호화는 분산 시스템(140)으로부터의 블록 미스를 은닉하기 위해 페이크 오버라이트로 지칭된다. 따라서, 비신뢰 분산 시스템(140)은 검색된 데이터 버킷(예를 들어, 버킷 1 및 버킷 3)이 실제 쿼리(402) 또는 페이크 쿼리(404)에 응답하여 다운로드되는지 여부를 인식하지 못한다.
다른 구현에서, 데이터 블록(Bi)이 존재하는 경우, 도 5c는 또한 오버라이트 페이즈 동안 클라이언트 디바이스(120)의 메모리 하드웨어(122)상에 확률(p)로 블록 스태쉬(370)에 데이터 블록(Bi)의 현재 버전을 저장하는 데이터 처리 하드웨어(124)를 도시한다. 오버라이트 페이즈는 데이터 블록(Bi)이 블록 스태쉬(370)(도 5a) 또는 스토리지 추상화(150)(도 5b)로부터 검색되는 대응하는 다운로드 페이즈를 따른다. 일부 예들에서, 클라이언트 디바이스(120)는 다운로드 페이즈 동안 검색된 데이터 블록(Bi)에 대한 기록 동작을 실행하여, 그 데이터 블록(Bi)을 새로운 버전의 데이터 블록(Bi')으로 업데이트한다. 이들 예에서, 업데이트된 새로운 버전의 데이터 블록(Bi')은 오버라이트 페이즈 동안 확률(p)로 블록 스태쉬(370)에 저장된다. 다른 예에서, 클라이언트 디바이스(120)는 단순히 다운로드 페이즈 동안 검색된 데이터 블록(Bi)에 대한 판독 동작을 실행한다. 이러한 예에서, 블록 스태쉬(370)에 저장된 현재 버전은 다운로드 페이즈 동안 검색된 버전으로부터 변경되지 않는다.
비신뢰 분산 시스템(140)으로부터의 확률(p)로 블록 스태쉬(370)에 현재 버전의 데이터 블록(Bi')의 저장을 난독화하기 위해, 데이터 처리 하드웨어(124)는 비신뢰 분산 시스템(140)으로 페이크 쿼리(404)를 전송하여 스토리지 추상화(150) 상에 저장된 2개의 랜덤 데이터 버킷(350)(예를 들어, 버킷 1 및 버킷 3)을 다운로드한다. 그런 다음 데이터 처리 하드웨어(124)는 스토리지 추상화(150)내의 동일한 위치에서 버킷(예를 들어, 버킷 1 및 버킷 3)을 분산 시스템(140)으로 다시 업로드하기 전에 상기 랜덤하게 다운로드된 버킷들 내의 모든 블록(102, 103)을 새로운 랜덤성으로 해독 및 재암호화한다. 랜덤하게 다운로드된 버킷(예를 들어, 버킷 1 및 버킷 3)의 컨텐츠는 변경되지 않았기 때문에(새로 계산된 암호문(예를 들어, 다른 암호화)을 제외하고), 2개의 랜덤 버킷에서의 다운로드, 복호화 및 재암호화는 블록 스태쉬(370)에 현재 버전의 데이터 블록(Bi')의 저장을 은닉하기 위해 페이크 오버라이트라고 지칭된다. 따라서, 비신뢰 분산 시스템(140)은 검색된 데이터 버킷(예를 들어, 버킷 1 및 버킷 3)이 실제 쿼리(402) 또는 페이크 쿼리(404)에 응답하여 다운로드되는지 여부를 인식하지 못한다.
한편, 현재 버전의 데이터 블록(Bi')이 나머지 확률(1-(C/N))로 블록 스태쉬(370)에 저장되지 않은 경우, 도 5d는 데이터 처리 하드웨어(124)가 실제 쿼리 (402)를 비신뢰 분산 시스템(140)으로 전송하여 인덱스(s1 = F1(idi) 및 s2 = F2(idi))를 갖는 한 쌍의 데이터 버킷(350)을 다운로드하는 동안 (예를 들어, 메모리 하드웨어(122) 내의) 현재 버전의 데이터 블록(Bi')을 홀드하는 클라이언트 디바이스(120)를 도시한다. 데이터 버킷들(s1, s2)이 수신되면, 데이터 처리 하드웨어(124)는 모든 블록(102, 103)을 해독하고, 버킷들(s1, s2) 중 대응하는 버킷에 있는 이전 버전의 데이터 블록(Bi)을 새로운 버전의 데이터 블록(Bi')으로 교체하고, 새로운 랜덤성으로 데이터 버킷(s1, s2) 내의 새로운 버전의 데이터 블록(Bi')을 포함하는 모든 블록(102, 103)을 재암호화한다. 그런 다음 데이터 처리 하드웨어(124)는 스토리지 추상화(150) 내의 동일한 위치에서 버킷(s1, s2)을 분산 시스템(140)으로 다시 업로드한다.
블록 스태쉬(370)의 크기를 작게 유지하기 위해, DP-OS 명령(400)은 θ(N log N) 쿼리(q)를 실행한 후, 명령(400)은 블록 셔플(suffle)을 사용하여(예를 들어, 불확정 순열 루틴(450)을 실행함으로써), 새로운 시드(K'1, K'2)를 랜덤하게 선택하고(즉, 새로운 PRF(F1', F2')로 생성하고 식별자 스태쉬(372)를 재설정하고) 새로운 시드에 기초하여 버킷들(360)에 블록(102)을 재할당함으로써 시스템을 리프레쉬할 수 있다. 여기서, 분산 시스템(140)은 각 데이터 블록(102)과 관련된 키의 리스트를 유지한다. 따라서, 각각의 키에 대해, 키(K1, K2)와 관련된 2개의 버킷(350)이 다운로드되고, 블록(102, 103)은 대응하는 데이터 블록(102)을 찾아 재암호화하기 위해 해독된다. 그 후, 키(K'1, K'2)와 관련된 2개의 버퍼 버킷(360)이 다운로드, 복호화되고, 데이터 블록(102)은 2개의 버킷(350)을 재암호화하여 분산 시스템(140)으로 다시 업로드하기 전에 2개의 버킷(350) 중 최소 로드된 것에 추가된다. 따라서, 명령(400)이 N개의 쿼리(q)를 실행한 후, 셔플 버퍼는 새로운 블록 및 식별자 스태쉬(370, 372)를 초기화하고, 새로운 PRF(F1', F2')에 기초하여 모든 데이터 블록(102)을 이전(old) 버킷(350)으로부터 새로운 데이터 버킷(360)으로 이동시키고, 이전 데이터 버킷(350)을 삭제한다. 클라이언트 디바이스(120)는 셔플 버퍼를 실행할 때 데이터 처리 하드웨어(124)에 저장된 PosMap을 사용할 수 있다.
일부 구현에서, DP-OS는 고유한 유한 문자열 식별자(k1-kn)와 관련되고 L 버킷들 중 하나에 해시된 각각의 N 데이터 블록(102)과 중첩하는 L 버킷들의 해싱 기법을 사용한다. L 버킷들은 비신뢰 분산 시스템(140)으로 아웃소싱될 수 있고, 각 버킷은 동일한 크기를 포함할 수 있어서, 식별자(k1-kn)의 값에 관한 정보가 분산 시스템(140)에 의해 추론될 수 없다. 해싱 기법은 데이터 블록들(102)에 대한 식별자(k1-kn)의 값을 은닉하도록 구성된다. 해싱 기법은 리프 노드(leaf nodes)가 레벨 0을 차지하고 트리의 루트쪽으로 증가하는 레벨들을 갖는 이진 트리 또는 역 지수 트리를 사용할 수 있다. 트리의 루트는 그 트리의 가장 큰 레벨을 차지한다.
N<L<2N 리프를 갖는 이진 트리의 경우, 트리의 각 노드는 정확히 하나의 블록(102)을 저장할 수 있다. 트리는 초기에 암호화가 0인 블록과 같은 더미 블록들)로 채워질 수 있다. 트리의 리프들은 오른쪽으로 1부터 L까지 번호가 매겨질 수 있으며, 각 리프는 L 버킷들 중 하나에 대응할 수 있다. 여기서, i 번째 버킷은 i 번째 리프부터 그 트리의 루트까지 고유 경로상의 노드에 저장된 모든 블록을 포함할 수 있다. 또한, 클라이언트 디바이스(120)는 트리로부터 오버 플로우되는 블록을 저장하기 위해 블록 스태쉬(370)을 선택적으로 유지할 수 있다. 도 6은 암호화된 형태의 데이터 블록(102)을 대응하는 L 버킷에 입력하고 데이터 블록(Bi)에 대한 쿼리(q)를 실행함으로써 이진 트리를 초기화하는 예시적인 알고리즘(600)을 제공한다.
역 지수 트리는 저장된 데이터 블록의 수 N 및 선택의 수 D에 의해 파라미터 화될 수 있다. 도 7은 N = 7의 데이터 블록 및 D = 2의 선택을 갖는 예시적인 역 지수 트리(700)를 도시한다. 각 레벨에서 자식 수는 트리를 가로지르는 경우 이중 지수적으로 증가한다. L 레벨의 경우, 모든 노드는 레벨 1에서 최대
Figure 112019125966676-pct00005
자식을가지며 모든 노드는 레벨 2에서 최대
Figure 112019125966676-pct00006
자식을 갖는다. 레벨 i에서, 모든 노드는 최대
Figure 112019125966676-pct00007
을 갖는다. 레벨 벨 0에는 리프 노드가 없다. 0보다 큰 모든 레벨 i는 다음과 같이 표현될 수 있다.
Figure 112019125966676-pct00008
트리는 각각의 레벨에 [log2logD N] 레벨에서 발생하는 정확히 하나의 노드가 있으면 그 후에 중지될 수 있다. 레벨 i에서 각 노드는 왼쪽에서 오른쪽으로 1부터 Ni까지 라벨이 붙어 있다. 1보다 크거나 같은 레벨 i에서, 노드
Figure 112019125966676-pct00009
는 레벨 i+1에서 (j-1)·Ci + 1에서 j·Ci로 라벨링된 Ci 자식 노드를 갖을 것이다. 각 레벨 i에서 0보다 크거나 같은 각 노드 Ni는 반올림으로 인해 Ci 자식보다 작을 수 있다. 역 지수 트리에는 루트로부터 i로 라벨링된 리프 노드까지 고유 경로의 모든 노드를 포함하여 i 번째 버킷(
Figure 112019125966676-pct00010
)이 있는 N 버킷이 포함된다. 클라이언트 디바이스(120)는 오버플로 블록(102)을 저장하기 위해 블록 스태쉬(370)을 선택적으로 저장할 수 있다. 도 8은 데이터 블록(102)을 암호화된 형태로 대응하는 N 버킷에 입력하고 데이터 블록(Bi)에 대한 쿼리(q)를 실행함으로써 역 지수 트리를 초기화하는 예시적인 알고리즘(800)을 제공한다.
도 9는 본 문서에서 기술된 시스템 및 방법을 구현하는데 사용될 수 있는 예시적인 컴퓨팅 디바이스(900)(예를 들어, 데이터 처리 하드웨어)의 개략도이다. 컴퓨팅 디바이스(900)는 랩탑, 데스크탑, 워크스테이션, 개인 정보 단말기, 서버, 블레이드 서버, 메인 프레임 및 기타 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내도록 의도된다. 본 명세서에 도시된 컴포넌트, 이들의 연결 및 관계, 및 그 기능은 단지 예시적인 것이며, 본 명세서에 기술되고 및/또는 청구된 본 발명의 구현을 제한하려는 것은 아니다.
컴퓨팅 디바이스(900)는 프로세서(910), 메모리(920), 저장 디바이스(930), 그 메모리(920) 및 고속 확장 포트(950)에 연결되는 고속 인터페이스/제어기(940), 저속 버스(970) 및 저장 디바이스(930)에 연결되는 저속 인터페이스/제어기(960)를 포함한다. 컴포넌트(910, 920, 930, 940, 950, 960) 각각은 다양한 버스를 사용하여 상호 연결되며, 공통 마더 보드 상에 또는 적절한 다른 방식으로 장착될 수 있다. 프로세서(910)는 고속 인터페이스(940)에 연결된 디스플레이(980)와 같은 외부 입력/출력 디바이스 상에 그래픽 사용자 인터페이스(GUI)에 대한 그래픽 정보를 디스플레이하기 위해 메모리(920) 또는 저장 디바이스(930)에 저장된 명령들을 포함하여, 컴퓨팅 디바이스(900) 내의 실행을 위한 명령들을 처리할 수 있다. 다른 구현에서, 다수의 프로세서 및/또는 다수의 버스가 적절하게 다수의 메모리 및 다수 유형의 메모리와 함께 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스(900)는 필요한 동작의 일부(예를 들어, 서버 뱅크, 블레이드 서버 그룹 또는 다중 프로세서 시스템)를 제공하는 각각의 디바이스와 연결될 수 있다.
메모리(920)는 컴퓨팅 디바이스(900) 내에 비-일시적으로 정보를 저장한다. 메모리(920)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(920)는 컴퓨팅 디바이스(900)에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램(예를 들어, 명령 시퀀스) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는데 사용되는 물리적 디바이스일 수 있다. 비-휘발성 메모리의 예는 플래시 메모리 및 판독 전용 메모리(ROM)/프로그램 가능 판독 전용 메모리(PROM)/소거 가능 프로그램 가능 판독 전용 메모리(EPROM)/전자적 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM)(예를 들어, 일반적으로 부팅 프로그램과 같은 펌웨어에 사용됨)을 포함하지만 이에 한정되는 것은 아니다. 휘발성 메모리의 예는 디스크 또는 테이프뿐만 아니라 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 위상 변화 메모리(PCM)를 포함하지만 이에 제한되지는 않는다.
저장 디바이스(930)(예를 들어, 메모리 하드웨어)는 컴퓨팅 디바이스(900)에 대용량 스토리지(저장 장치)를 제공할 수 있다. 일부 구현에서, 저장 디바이스(930)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(930)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성의 디바이스를 포함하는 디바이스 어레이일 수 있다. 추가 구현에서, 컴퓨터 프로그램 제품은 정보 매체(carrier) 내에 유형적으로 내장된다. 컴퓨터 프로그램 제품은 실행될 때 전술한 바와 같은 하나 이상의 방법을 수행하는 명령들을 포함한다. 정보 매체는 메모리(920), 저장 디바이스(930), 또는 프로세서(910)상의 메모리와 같은 컴퓨터 판독 가능 매체 또는 기계 판독 가능 매체이다.
고속 제어기(940)는 컴퓨팅 디바이스(900)에 대한 대역폭 집약 동작을 관리하는 반면, 저속 제어기(960)는 보다 낮은 대역폭 집약 동작을 관리한다. 이러한 임무 할당은 예시 일뿐이다. 일부 구현에서, 고속 제어기(940)는 메모리(920), 디스플레이(980)(예를 들어, 그래픽 프로세서 또는 가속기를 통해) 및 다양한 확장 카드(미도시)를 수용할 수 있는 고속 확장 포트(950)에 연결된다. 일부 구현에서, 저속 제어기(960)는 저장 디바이스(930) 및 저속 확장 포트(970)에 연결된다. 다양한 통신 포트(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트(970)는 예를 들어 네트워크 어댑터를 통해 키보드, 포인팅 디바이스, 스캐너와 같은 하나 이상의 입력/출력 디바이스, 또는 스위치 또는 라우터와 같은 네트워킹 디바이스에 연결될 수 있다.
컴퓨팅 디바이스(900)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 표준 서버(900a) 또는 그러한 서버(900a)의 그룹에서 랩탑 컴퓨터(900b) 또는 랙 서버 시스템(900c)의 일부로서 여러 번 구현될 수 있다.
소프트웨어 애플리케이션(즉, 소프트웨어 리소스)은 컴퓨팅 디바이스로 하여금 태스크를 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 일부 예에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로 지칭될 수 있다. 예시적인 애플리케이션은 시스템 진단 애플리케이션, 시스템 관리 애플리케이션, 시스템 유지 보수 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드 시트 애플리케이션, 메시징 애플리케이션, 미디어 스트리밍 애플리케이션, 소셜 네트워킹 애플리케이션 및 게임 애플리케이션을 포함하지만 이에 제한되지는 않는다.
비-일시적 메모리는 컴퓨팅 디바이스에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램(예를 들어, 명령 시퀀스) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는데 사용되는 물리적 디바이스일 수 있다. 비-일시적 메모리는 휘발성 및/또는 비-휘발성 어드레서블 반도체 메모리일 수 있다. 비-휘발성 메모리의 예는 플래시 메모리 및 판독 전용 메모리(ROM)/프로그램 가능 판독 전용 메모리(PROM)/소거 가능 프로그램 가능 판독 전용 메모리(EPROM)/전자적 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM)(예를 들어, 일반적으로 부팅 프로그램과 같은 펌웨어에 사용됨)을 포함하지만 이에 제한되지 않는다. 휘발성 메모리의 예는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 위상 변화 메모리(PCM) 및 디스크 또는 테이프를 포함하지만 이에 제한되지는 않는다.
본 명세서에 기술된 시스템 및 기술의 다양한 구현은 디지털 전자 및/또는 광학 회로, 집적 회로, 특별히 설계된 ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현은 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신하고 데이터 및 명령을 전송하도록 연결된 특수 또는 범용일 수 있는 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템상에서 실행 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램에서의 구현을 포함할 수 있다.
이들 컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드라고도 함)은 프로그램 가능 프로세서를 위한 기계 명령들을 포함하고, 높은 수준의 절차적 및/또는 객체 지향 프로그래밍 언어 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용된 바와 같이, "기계-판독 가능 매체" 및 "컴퓨터-판독 가능 매체"라는 용어는 기계-판독 가능 신호로서 기계 명령을 수신하는 기계-판독 가능 매체를 포함하여, 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독 가능 매체, 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하는데 사용되는 장치 및/또는 디바이스를 지칭한다. "기계-판독 가능 신호"라는 용어는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하는데 사용되는 임의의 신호를 지칭한다.
본 명세서에 기술된 프로세스 및 논리 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 특수 목적 로직 회로, 예를 들어 FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서는 예로서 범용 마이크로 프로세서 및 특수 목적 마이크로 프로세서, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소는 명령을 수행하기 위한 프로세서 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 예를 들어 자기, 자기 광 디스크 또는 광 디스크와 같은 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스로부터 데이터를 수신하거나 데이터를 전송하기 위해 또는 그 둘 모두를 위해 동작적으로 연결될 것이다. 그러나 컴퓨터에는 이러한 디바이스가 필요하지 않다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는 예로서 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스); 자기 디스크(예를 들어, 내부 하드 디스크 또는 이동식 디스크); 광 자기 디스크; 및 CD ROM 및 DVD-ROM 디스크를 포함하여, 모든 형태의 비-휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 발명의 하나 이상의 양태는 디스플레이 디바이스, 예를 들어 CRT(음극선 관), LCD(액정 디스플레이) 모니터, 또는 사용자에게 정보를 디스플레이하기 위한 터치 스크린 및 선택적으로 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 갖는 컴퓨터상에서 구현될 수 있다. 다른 종류의 디바이스가 사용자와의 상호 작용을 제공하는데 사용될 수 있는데, 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각 피드백, 청각 피드백 또는 촉각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하여 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서를 전송하고 수신함으로써 사용자와 상호 작용할 수 있는데; 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 웹 페이지를 사용자의 클라이언트 디바이스의 웹 브라우저에 전송함으로써 사용자와 상호 작용할 수 있다.
많은 구현들이 설명되었다. 그럼에도 불구하고, 본 발명의 사상 및 범위를 벗어나지 않으면서 다양한 변형이 이루어질 수 있음을 이해할 것이다. 따라서, 다른 구현들은 다음의 청구 범위의 범위 내에 있다.

Claims (17)

  1. 데이터 액세스 방법으로서,
    클라이언트 디바이스(120)의 데이터 처리 하드웨어(124)에 의해, 데이터 블록(102)에 대한 쿼리(q)를 실행하기 위한 명령(300)을 실행하는 단계와;
    다운로드 페이즈(phase) 동안, 데이터 처리 하드웨어(124)에 의해, 데이터 블록(102)이 클라이언트 디바이스(120)에 상주하는 메모리 하드웨어(122)상의 블록 스태쉬(stash)(370)에 저장되는지 여부를 결정하는 단계와;
    데이터 블록(102)이 블록 스태쉬(370)에 저장되는 경우:
    데이터 처리 하드웨어(124)에 의해, 블록 스태쉬(370)로부터 데이터 블록(102)을 제거하는 단계;
    데이터 처리 하드웨어(124)에 의해, 데이터 처리 하드웨어(124)와 통신하여 분산 시스템(140)으로 그 분산 시스템(140)의 메모리(114)에 저장된 랜덤 데이터 블록(102)을 검색하는 페이크(fake) 쿼리(304)를 전송하는 단계; 및
    데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)으로부터 검색된 랜덤 데이터 블록(102)을 폐기하는 단계와;
    오버라이트(overwrite) 페이즈 동안, 데이터 처리 하드웨어(124)에 의해, 블록 스태쉬(370)으로부터 제거되거나 분산 시스템(140)의 메모리(114)로부터 검색된 데이터 블록(102)에 대한 판독 또는 기록 동작을 실행하는 단계와;
    데이터 처리 하드웨어(124)에 의해, 확률에 기초하여 클라이언트 디바이스(120)에 상주하는 메모리 하드웨어(122)에 또는 분산 시스템의 메모리의 블록 스태쉬(370)에 상기 데이터 블록(102)의 현재 버전을 저장할지 여부를 결정하는 단계와; 그리고
    데이터 블록(102)의 현재 버전이 블록 스태쉬(370)에 저장되는 경우:
    데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)의 메모리(114)에 저장된 다른 랜덤 데이터 블록(102)을 검색하도록 페이크 쿼리(304)를 분산 시스템(140)으로 전송하는 단계;
    데이터 처리 하드웨어(124)에 의해, 검색된 랜덤 데이터 블록(102)을 해독하는 단계;
    데이터 처리 하드웨어(124)에 의해, 그 랜덤 데이터 블록(102)을 새로운 랜덤성으로 재 암호화하는 단계; 및
    데이터 처리 하드웨어(124)에 의해, 그 재 암호화된 랜덤 데이터 블록(102)을 분산 시스템(140)의 메모리(114)에 재 업로드하는 단계를 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  2. 제1항에 있어서,
    데이터 블록(102)이 다운로드 페이즈 동안 블록 스태쉬(370)에 저장되지 않은 경우, 데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)의 메모리(114)로부터 그 데이터 블록(102)을 검색하기 위해 실제 쿼리(302)를 분산 시스템(140)으로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  3. 제1항에 있어서,
    상기 오버라이트 페이즈 동안 데이터 블록(102)에 대한 판독 또는 기록 동작을 실행하는 단계는,
    데이터 블록(102)을 새로운 버전의 데이터 블록(102)으로 업데이트함으로써 기록 동작을 실행하는 단계를 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  4. 제1항에 있어서,
    상기 확률은 C/N보다 작고, 상기 C는 블록 스태쉬(370)의 저장 용량이고, 상기 N은 분산 시스템(140)에 저장하기 위해 데이터 처리 하드웨어(124)에 의해 아웃소싱되는 다수의 데이터 블록(102)인 것을 특징으로 하는 데이터 액세스 방법.
  5. 제1항에 있어서,
    상기 데이터 블록(102)의 현재 버전이 오버라이트 페이즈 동안 블록 스태쉬(370)에 저장되지 않은 경우:
    데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)의 메모리(114)로부터 데이터 블록(102)을 검색하도록 실제 쿼리(302)를 분산 시스템(140)으로 전송하는 단계와;
    데이터 처리 하드웨어(124)에 의해, 현재 버전의 데이터 블록(102)을 암호화하는 단계와; 그리고
    데이터 처리 하드웨어(124)에 의해, 데이터 블록(102)의 암호화된 현재 버전을 분산 시스템(140)의 메모리(114)에 업로드하는 단계를 더 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  6. 제5항에 있어서,
    분산 시스템(140)의 메모리(114)로부터 검색된 데이터 블록(102)을 폐기하는 단계를 더 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  7. 데이터 액세스 방법으로서,
    클라이언트 디바이스(120)의 데이터 처리 하드웨어(124)에 의해, 데이터 블록(102)에 대한 쿼리(q)를 실행하기 위한 명령(400)을 실행하는 단계와;
    다운로드 페이즈 동안, 데이터 처리 하드웨어(124)에 의해, 데이터 블록(102)이 클라이언트 디바이스(120)에 상주하는 메모리 하드웨어(122)의 블록 스태쉬(370)에 저장되는지 여부를 결정하는 단계와;
    데이터 블록(102)이 블록 스태쉬(370)에 저장되는 경우:
    데이터 처리 하드웨어(124)에 의해, 블록 스태쉬(370)로부터 데이터 블록(102)을 제거하는 단계;
    데이터 처리 하드웨어(124)에 의해, 데이터 처리 하드웨어(124)와 통신하는 분산된 시스템(140)으로 그 분산 시스템(140)의 메모리(114)에 저장된 2개의 랜덤 데이터 버킷(350)을 다운로드하는 페이크 쿼리(404)를 전송하는 단계, 상기 데이터 버킷(350) 각각은 다수의 데이터 블록(102)을 포함하고; 및
    데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)으로부터 검색된 랜덤 데이터 버킷(350)을 폐기하는 단계와;
    오버라이트 페이즈 동안, 데이터 처리 하드웨어(124)에 의해, 블록 스태쉬(370)로부터 제거되거나 분산 시스템(140)의 메모리(114)로부터 검색된 대응하는 데이터 버킷(350)으로부터 획득된 데이터 블록(102)에 대한 판독 또는 기록 동작을 실행하는 단계와;
    데이터 처리 하드웨어(124)에 의해, 확률에 기초하여 현재 버전의 데이터 블록(102)을 블록 스태쉬(370)에 또는 분산 시스템(140)의 메모리(114)에 저장할지 여부를 결정하는 단계와; 그리고
    데이터 블록(102)의 현재 버전이 블록 스태쉬(370)에 저장되는 경우:
    데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)의 메모리(114)에 저장되고 각각이 다수의 데이터 블록(102)을 포함하는 다른 2개의 랜덤 데이터 버킷(350)을 다운로드 하도록 분산 시스템(140)으로 페이크 쿼리를 전송하는 단계;
    데이터 처리 하드웨어(124)에 의해, 랜덤 데이터 버킷(350) 내의 모든 데이터 블록(102)을 해독하는 단계;
    데이터 처리 하드웨어(124)에 의해, 랜덤 데이터 버킷(350) 내의 데이터 블록(102)을 새로운 랜덤성으로 재 암호화하는 단계; 및
    데이터 처리 하드웨어(124)에 의해, 재 암호화된 데이터 블록(102)을 포함하는 랜덤 데이터 버킷(350)을 분산 시스템(140)의 메모리(114)에 재 업로드하는 단계를 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  8. 제7항에 있어서,
    상기 다운로드 페이즈 동안 데이터 블록(102)이 블록 스태쉬(370)에 저장되지 않은 경우:
    데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)의 메모리(114)로부터 한 쌍의 데이터 버킷(350)을 다운로드하도록 실제 쿼리(402)를 분산 시스템(140)으로 전송하는 단계와, 상기 실제 쿼리(402)에 응답하여 분산 시스템(140)으로부터 다운로드된 각각의 데이터 버킷(350)은 다수의 데이터 블록(102) 및 그 데이터 블록(102)의 식별자(idi)와 관련된 대응하는 암호화 식별자(F(idi))를 포함하고;
    데이터 처리 하드웨어(124)에 의해, 2개의 데이터 버킷(350) 내의 모든 데이터 블록(102)을 해독하는 단계와;
    데이터 처리 하드웨어(124)에 의해, 2개의 데이터 버킷(350) 중 하나가 데이터 블록(102)을 포함하는지 여부를 결정하는 단계와; 그리고
    데이터 버킷(350) 중 하나가 데이터 블록(102)을 포함하는 경우:
    데이터 처리 하드웨어(124)에 의해, 대응하는 데이터 버킷(350)으로부터 데이터 블록(102)을 제거하는 단계; 및
    데이터 처리 하드웨어(124)에 의해, 데이터 버킷(350)으로부터 나머지 데이터 블록(102)을 폐기하는 단계를 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  9. 제7항에 있어서,
    상기 데이터 블록(102)의 식별자는 문자열을 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  10. 제7항에 있어서,
    상기 오버라이트 페이즈 동안 데이터 블록(102)에 대한 판독 또는 기록 동작을 실행하는 단계는,
    새로운 버전의 데이터 블록(102)으로 데이터 블록(102)을 업데이트함으로써 기록 동작을 실행하는 단계를 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  11. 제7항에 있어서,
    상기 확률은 C/N보다 작고, 상기 C는 블록 스태쉬(370)의 저장 용량이고, 상기 N은 분산 시스템(140)에 저장하기 위해 데이터 처리 하드웨어(124)에 의해 아웃소싱되는 다수의 데이터 블록(102)인 것을 특징으로 하는 데이터 액세스 방법.
  12. 제7항에 있어서,
    상기 데이터 블록(102)의 현재 버전이 오버라이트 페이즈 동안 블록 스태쉬(370)에 저장되지 않은 경우:
    데이터 처리 하드웨어(124)에 의해, 분산 시스템(140)의 메모리(114)로부터 한 쌍의 데이터 버킷(350)을 다운로드하도록 실제 쿼리(402)를 분산 시스템(140)으로 전송하는 단계와, 상기 실제 쿼리(402)에 응답하여 분산 시스템(140)으로부터 다운로드된 각각의 데이터 버킷(350)은 다수의 데이터 블록(102) 및 그 데이터 블록(102)의 식별자(idi)와 관련된 대응하는 암호화 식별자(F1(idi), F2(idi))를 포함하고;
    데이터 처리 하드웨어(124)에 의해, 데이터 버킷(350) 내의 모든 데이터 블록(102)을 해독하는 단계와;
    데이터 처리 하드웨어(124)에 의해, 데이터 버켓(350) 중 하나 내의 데이터 블록(102)의 이전 버전을 현재 버전의 데이터 블록(102)으로 대체하는 단계와;
    데이터 처리 하드웨어(124)에 의해, 데이터 버켓(350) 내의 현재 버전의 데이터 블록(102)을 포함하는 모든 데이터 블록(102)을 재 암호화하는 단계와; 그리고
    데이터 처리 하드웨어(124)에 의해, 재 암호화된 데이터 블록(102)을 포함하는 데이터 버킷(350)을 분산 시스템(140)의 메모리(114)에 업로드하는 단계를 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  13. 데이터 액세스 방법으로서,
    클라이언트 디바이스(120)의 데이터 처리 하드웨어(124)에 의해, 서버(110)에 저장된 데이터 블록(102)에 대한 쿼리(q)를 실행하기 위한 명령(200)을 실행하는 단계와;
    상기 쿼리된 데이터 블록(102)을 제외하고 서버(110)에 저장된 K개의 블록(102)에 대한 제1 다운로드 요청(202)을 데이터 처리 하드웨어(124)로부터 전송하는 단계와;
    쿼리된 데이터 블록(102) 및 K-1개의 다른 블록(102)에 대한 제2 다운로드 요청(204)을 데이터 처리 하드웨어(124)로부터 전송하는 단계와;
    서버(110)로부터 제1 다운로드 요청(202)의 K개의 블록(102)에 대한 제1 다운로드 시퀀스(212)를 수신하는 단계와; 그리고
    쿼리된 데이터 블록(102) 및 제2 다운로드 요청(204)의 K-1개의 다른 블록(102)에 대한 제2 다운로드 시퀀스(214)를 서버(110)로부터 수신하는 단계를 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  14. 제13항에 있어서,
    상기 서버(110)는 비신뢰되며, 비-암호화된 복수의 공개적으로 이용 가능한 데이터 블록(102)을 저장하는 것을 특징으로 하는 데이터 액세스 방법.
  15. 제13항에 있어서,
    데이터 처리 하드웨어(124)에 의해, 서버(110)로부터 수신된 제1 다운로드 시퀀스(212)의 K개의 블록(102)을 폐기하는 단계를 더 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  16. 제13항에 있어서,
    데이터 처리 하드웨어(124)에 의해, 서버(110)로부터 수신된 제2 다운로드 시퀀스(224)의 K-1개의 다른 블록(102)을 폐기하는 단계를 더 포함하는 것을 특징으로 하는 데이터 액세스 방법.
  17. 제13항에 있어서,
    K에 대한 값은 보안 파라미터(ε) 및 0보다 큰 에러 확률(α)에 기초하는 것을 특징으로 하는 데이터 액세스 방법.











KR1020197036113A 2017-12-12 2018-01-12 차등적 프라이버시를 갖는 불확정 액세스 KR102323549B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762597781P 2017-12-12 2017-12-12
US62/597,781 2017-12-12
PCT/US2018/013469 WO2019117978A1 (en) 2017-12-12 2018-01-12 Oblivious access with differential privacy

Publications (2)

Publication Number Publication Date
KR20200005603A KR20200005603A (ko) 2020-01-15
KR102323549B1 true KR102323549B1 (ko) 2021-11-08

Family

ID=61074615

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197036113A KR102323549B1 (ko) 2017-12-12 2018-01-12 차등적 프라이버시를 갖는 불확정 액세스

Country Status (6)

Country Link
US (1) US11727124B2 (ko)
EP (2) EP3619637B1 (ko)
JP (2) JP6911158B2 (ko)
KR (1) KR102323549B1 (ko)
CN (1) CN110709846B (ko)
WO (1) WO2019117978A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321471B2 (en) * 2017-12-18 2022-05-03 Beijing Sankuai Online Technology Co., Ltd Encrypted storage of data
US11113296B1 (en) * 2020-04-14 2021-09-07 Google Llc Metadata management for a transactional storage system
JP7384740B2 (ja) * 2020-04-27 2023-11-21 株式会社日立製作所 検索システム、検索装置、および検索方法
CN112667712B (zh) * 2020-12-31 2023-03-17 安徽工业大学 一种基于差分隐私的分组精准直方图数据发布方法
US11308226B1 (en) * 2021-02-22 2022-04-19 CipherMode Labs, Inc. Secure collaborative processing of private inputs
CN114039990B (zh) * 2021-11-01 2022-07-29 上海交通大学 不经意访问存储***
CN114584294B (zh) * 2022-02-28 2024-04-16 淘宝(中国)软件有限公司 不经意分散排列方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160330180A1 (en) 2015-05-07 2016-11-10 ZeroDB, Inc. Zero-knowledge databases
US20170185534A1 (en) 2015-12-29 2017-06-29 Sameer Wagh Tunable oblivious ram

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123045A (en) 1989-08-18 1992-06-16 Massachusetts Institute Of Technology Comprehensive software protection system
US6553409B1 (en) * 1999-07-09 2003-04-22 Microsoft Corporation Background cache synchronization
US6952737B1 (en) * 2000-03-03 2005-10-04 Intel Corporation Method and apparatus for accessing remote storage in a distributed storage cluster architecture
US9098519B2 (en) * 2008-09-16 2015-08-04 File System Labs Llc Methods and apparatus for distributed data storage
WO2011013490A1 (ja) * 2009-07-28 2011-02-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理方法、プログラムおよびウェブ・システム
US9804928B2 (en) * 2011-11-14 2017-10-31 Panzura, Inc. Restoring an archived file in a distributed filesystem
JP2013156798A (ja) * 2012-01-30 2013-08-15 Kddi Corp 記憶装置、アクセスパターンの秘匿方法およびプログラム
US9015853B2 (en) * 2012-06-15 2015-04-21 The Regents Of The University Of California Concealing access patterns to electronic data storage for privacy
JP2014044551A (ja) 2012-08-27 2014-03-13 Sharp Corp コンテンツ取得装置、コンテンツ取得システム、コンテンツを取得するための方法、端末にコンテンツを取得させるためのプログラム
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US9747456B2 (en) 2013-03-15 2017-08-29 Microsoft Technology Licensing, Llc Secure query processing over encrypted data
US9495111B2 (en) 2014-10-10 2016-11-15 The Boeing Company System and method for reducing information leakage from memory
CN105610793B (zh) * 2015-12-18 2018-10-26 江苏大学 一种外包数据加密存储与密文查询***及其应用方法
US10210323B2 (en) 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160330180A1 (en) 2015-05-07 2016-11-10 ZeroDB, Inc. Zero-knowledge databases
US20170185534A1 (en) 2015-12-29 2017-06-29 Sameer Wagh Tunable oblivious ram

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BEIJING INSTITUTE OF TECHNOLOGY
STONY BROOK UNIVERSITY

Also Published As

Publication number Publication date
JP6911158B2 (ja) 2021-07-28
EP3825888B1 (en) 2023-04-26
US20200387615A1 (en) 2020-12-10
US11727124B2 (en) 2023-08-15
KR20200005603A (ko) 2020-01-15
EP3825888A1 (en) 2021-05-26
EP3619637B1 (en) 2021-03-03
CN110709846A (zh) 2020-01-17
WO2019117978A1 (en) 2019-06-20
EP3619637A1 (en) 2020-03-11
CN110709846B (zh) 2023-06-20
JP7124182B2 (ja) 2022-08-23
JP2021182402A (ja) 2021-11-25
JP2020527772A (ja) 2020-09-10

Similar Documents

Publication Publication Date Title
KR102323549B1 (ko) 차등적 프라이버시를 갖는 불확정 액세스
US11574073B2 (en) Encrypted search cloud service with cryptographic sharing
EP3586260B1 (en) Encrypting data records and processing encrypted records without exposing plaintext
US11489660B2 (en) Re-encrypting data on a hash chain
US20230185960A1 (en) Private Information Retrieval with Sublinear Public-Key Operations
US9954920B1 (en) Distributed secure decoding and processing of big data streams
CN110622142B (zh) 高效不经意的云存储
EP3616068B1 (en) Efficient oblivious permutation
US20240243898A1 (en) Verifying remote execution of machine learning inference under homomorphic encryption using permutations

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