KR102308066B1 - 저선형 공개-키 동작들을 사용하는 개인 정보 리트리벌 - Google Patents

저선형 공개-키 동작들을 사용하는 개인 정보 리트리벌 Download PDF

Info

Publication number
KR102308066B1
KR102308066B1 KR1020207034943A KR20207034943A KR102308066B1 KR 102308066 B1 KR102308066 B1 KR 102308066B1 KR 1020207034943 A KR1020207034943 A KR 1020207034943A KR 20207034943 A KR20207034943 A KR 20207034943A KR 102308066 B1 KR102308066 B1 KR 102308066B1
Authority
KR
South Korea
Prior art keywords
data blocks
sum
storage device
data
untrusted storage
Prior art date
Application number
KR1020207034943A
Other languages
English (en)
Other versions
KR20200142588A (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 KR20200142588A publication Critical patent/KR20200142588A/ko
Application granted granted Critical
Publication of KR102308066B1 publication Critical patent/KR102308066B1/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

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

Abstract

방법(500)은 신뢰되지 않은 저장 디바이스(150)로부터 데이터 블록들(102)의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령(200)을 실행함으로써 클라이언트 디바이스들(120) 상의 클라이언트 상태(250)를 초기화하는 단계를 포함한다. 각각의 계산된 합(O)은 클라이언트 디바이스의 메모리 하드웨어(122)에 저장되고 정확히 k개의 데이터 블록들의 대응하는 서브세트(S)의 합을 포함한다. 방법은 또한, 신뢰되지 않은 저장 디바이스에 저장된 질의 블록(Bq)을 포함하지 않는 c개의 합들(O) 중 하나를 식별하기 위해 데이터 블록들의 c개의 합들(O) 각각을 반복하고, 신뢰되지 않은 저장 디바이스를 파티션들로 의사랜덤하게 파티셔닝하도록 서비스에 명령하고, 그리고 대응하는 암호화된 데이터 블록 합(302)을 결정하기 위해 각각의 파티션에서 데이터 블록들을 합함으로써, 신뢰되지 않은 저장 디바이스에 저장된 질의 블록(Bq)을 리트리브하기 위한 질의 명령(300)을 실행하는 단계를 포함한다.

Description

저선형 공개-키 동작들을 사용하는 개인 정보 리트리벌
[0001] 본 개시내용은 저선형(sublinear) 암호화 동작들을 사용한 개인 정보 리트리벌(private information retrieval)에 관한 것이다.
[0002] 기업들 및 개인들은 분산형 저장 시스템들(즉, 클라우드 저장 서비스들)을 사용하여 다수의 메모리 위치들 위에 있는 메모리 상에 데이터를 저장하고 있다. 저장된 데이터에 대한 검색 질의들의 수행과 같은, 클라우드 저장 서비스들이 제공하는 필수 기능들을 사용하기 위해, 기업들은 클라우드 저장 서비스들에 대한 평문 액세스(plaintext access)를 제공하도록 요구된다. 결과적으로, 건강, 금융 및 법률과 같은 민감한 많은 정부 및 개인 섹터들은, 클라우드 저장 서비스들의 편의성과 비용 상의 이점들의 증대에도 불구하고, 그들의 사용을 꺼린다. 예컨대, 사용자들에 의한 데이터 액세스 패턴들은 데이터 및/또는 사용자에 관한 상당량의 정보를 제공할 수 있다.
[0003] PIR(private information retrieval) 방식들은, 사용자가 하나 이상의 저장 디바이스들을 호스팅하는 서버에 리트리브(retrieve)되는 데이터 또는 사용자에 관한 어떠한 지식도 드러내지 않고 하나 이상의 저장 디바이스들로부터 데이터를 리트리브할 수 있게 한다. PIR에 대해, 서버 저장 디바이스들은 일반적으로 보호되지 않고, 개인 정보는 모든 가입자들의 그룹이 전체 저장 디바이스로부터 데이터를 다운로드하도록 허용되는 공용 저장 디바이스 또는 서버 저장 디바이스 중 어느 하나로부터 리트리브된다. 액세스 패턴들이 드러나지 않도록 사용자들이 서버 저장 디바이스에서 콘텐츠 모두를 간단히 다운로드할 수 있지만, 다수의 저장 디바이스들에 걸쳐 있는 클라우드 저장 서비스로부터 모든 콘텐츠를 다운로드할 필요가 있는 경우, 이것은 너무 오래 걸린다. 더욱이, 다수의 사용자들에 대한 액세스를 허용하는 종래의 PIR 방식들은 일반적으로, 사용자들 간의 충돌들(collisions) 또는 갈등들(conflicts) 없이 동시적이고 독립적인 질의를 허용하기 위해 사용자들에게 무상태(stateless)를 요구한다. 사용자들이 임의의 상태를 유지하지 않기 때문에, 이러한 종래의 PIR 방식들은 n개의 블록들의 데이터베이스에 대해 Ω(n) 암호화 동작들을 수행하도록 서버에 요구하여 계산 비용이 많이 든다.
[0004] 다수의 클라이언트들을 갖는 단일-서버 PIR(Private Information Retrieval) 시스템에서, 서버는 스토리지 리소스들에 데이터의 평문 블록들의 세트를 저장할 것이다. 서버가 데이터 블록들을 생성하여 저장하는 것을 담당하지만, 스토리지 리소스들로부터 특정 데이터 블록을 리트리브하는 클라이언트는, 클라이언트가 어떤 블록을 리트리브하였는지를 서버가 식별할 수 없을 것이라는 보장을 원한다. 예컨대, 평문 텍스트 데이터 블록들은, 서버가 다수의 상이한 애플리케이션들을 생성하고 분배하는 머신 학습 모델들을 포함할 수 있다. 클라이언트들이 평문의 머신 학습 모델들을 리트리브하면, 서버, 및 궁극적으로 서버와 연관된 엔티티는 PIR에 의해 제공되는 보장 없이 클라이언트들에 대한 중요한 개인 정보를 학습할 수 있을 것이다.
[0005] 둘 이상의 서버들 ― 이들 각각이 다수의 클라이언트들에 의한 액세스를 제공하기 위해 평문 데이터를 호스팅하는 것을 공동으로 담당함 ― 을 사용하는 기존의 PIR 프로토콜들에서, 서버들이 결탁하지 않는다는 것, 즉, 서버들이 서로 정보를 공유하지 않는다는 가정이 있다. 그러나, 실세계 시나리오들에서, 평문 데이터를 공동으로 호스팅하는 서버들과 연관된 상이한 엔티티들이 서로 경쟁자들일 수 있기 때문에, 다중-서버 PIR 프로토콜은 실행 불가능하다. 반면에, 단일-서버를 사용하는 기존의 PIR 프로토콜들은, 클라이언트 디바이스들이 서로로부터 독립적으로 평문 데이터 블록들에 동시에 액세스할 수 있다는 것을 보장하기 위해 클라이언트 디바이스들에 상태를 유지하지 않도록 요구한다. 그러나, 스마트 폰들과 같은 현대 클라이언트 디바이스들은 애플리케이션들이 100 메가바이트의 데이터를 저장할 수 있게 하기 때문에, 무상태(stateless) 클라이언트들의 요건은 단일-서버가 수행해야 하는 암호화 동작들의 수로 인해 낭비되고 계산 측면에서 비용이 많이 든다.
[0006] 본원의 구현들은, 각각의 클라이언트가 다른 클라이언트들의 상태로부터 독립적으로 상태를 유지하도록 허용된 비동기 클라이언트 저장 모델을 사용하는 단일-서버 PIR 루틴에 관한 것이다. 따라서, 클라이언트 디바이스들은, 서버에 의해 관리되는 스토리지 리소스들에 저장된 평문 데이터 블록들에 대한 질의를 수행한 후에, 다른 클라이언트 디바이스들의 상태로부터 독립적으로 자신들의 상태를 업데이트할 수 있다. 유사하게, 클라이언트의 상태가 손실되면, 해당 클라이언트만이 그 상태를 회복하기 위해 서버를 이용하여 계산들을 수행할 필요가 있다. 클라이언트들이 자신들의 로컬 스토리지를 활용하여 서로로부터 독립적으로 상태를 유지할 수 있도록 한 결과, 단일-서버 PIR 루틴은, 데이터 블록들이 서버에게 불확정적인 방식으로 리트리브되도록 보장하는 데 필요한 암호화 동작들의 수를 최소화함으로써 계산 효율성을 크게 개선한다. 예컨대, 1-백만개의 암호화 동작들(거듭제곱(exponentiation))은 몇 분의 CPU 시간이 필요하지만, 1-백만개의 평문 동작들(예컨대, 덧셈(addition)/XOR)은 1초 미만의 시간이 필요하다.
[0007] 불확정 RAM(Random Access Memory) 프로토콜들이 또한 로컬 클라이언트 스토리지를 사용하여 효율성을 개선하지만, 불확정 RAM 프로토콜들은 종종 다수의 클라이언트들로부터의 질의들을 쉽게 수행하는 능력을 희생한다. 예컨대, 로컬 클라이언트 스토리지를 사용하는 불확정 RAM 프로토콜들은 동기화된 상태들을 갖도록 클라이언트들에 요구하여, 질의 클라이언트가 상태를 업데이트할 필요가 없을 뿐만 아니라, 다른 모든 비-질의 클라이언트들도 또한 자신들의 상태를 업데이트해야 하게 한다. 결과적으로, 클라이언트 상태들을 동기화 상태로 유지하기 위해, 클라이언트들은 서로 통신할 필요가 있거나, 서버는 각각의 클라이언트의 상태들을 추적해야 하고, 이로써 서버에 대한 더 큰 저장 비용들로 이어진다. 게다가, 대부분의 불확정 RAM 프로토콜들은 클라이언트들이 스토리지 리소스들에 동시에 액세스하는 것을 허용하지 않거나, 동시의 불확정 RAM 프로토콜들을 위해 클라이언트-클라이언트 통신을 요구한다.
[0008] 반면에, Doubly Efficient PIR 프로토콜들은, 모든 클라이언트들이 개인 키를 공유하고 서로에게 정직할 수 있도록 신뢰해야 한다는 것을 희생하는 대신에 더 빠른 계산 시간들을 달성한다. 예컨대, Doubly Efficient PIR 프로토콜들은 원활하고 로컬적으로 디코딩 가능한 코드들(예컨대, Reed-Muller 코드)의 사용을 통해 각각의 스토리지 리소스 엘리먼트에 대한 동작들의 수행을 피하지만, 각각의 클라이언트가 스토리지 리소스를 질의하기 위해 단일 개인 키를 공유하는 것을 요구하는 지정된 클라이언트 모델의 사용을 요구한다. 다수의 클라이언트들이 단일 개인 키를 공유하는 시나리오들에서, 단일 클라이언트가 서버에 개인 키를 유출하는 것은 서버가 모든 클라이언트들의 질의된 모든 인덱스들을 결정할 수 있게 할 수 있다. 게다가, Doubly Efficient PIR 프로토콜들은 q개의 질의들을 안전하게 취급할 수 있도록 폴리(N, q) 데이터베이스 크기들을 저장해야 한다. q개의 질의들 후에, 데이터베이스는 단일 클라이언트에 의해 개인적으로 재초기화되어야 하고, 모든 클라이언트에 새로운 키들이 제공되어야 한다. 클라이언트들이 상태를 유지할 수 있게 함으로써, 본 개시내용의 단일-서버 PIR 루틴은 많은 클라이언트들에 걸친 재초기화를 피하고, 특정 클라이언트가 q개의 질의들을 수행한 후에, 해당 클라이언트만이 효율적인 질의를 계속하기 위해 서버와의 상태를 업데이트해야 하는 반면에, 다른 클라이언트들은 자신들의 상태를 유지하고 질의를 자유롭게 계속한다.
[0009] 본 개시내용의 일 양상은 PIR(private information retrieval)을 사용하여 데이터 스토리지 저장 디바이스 상에서 데이터 블록들을 불확정적으로 리트리브하기 위한 방법을 제공한다. 방법은, 클라이언트 디바이스의 데이터 프로세싱 하드웨어에 의해, 데이터 스토리지(untrusted) 저장 디바이스로부터 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령(private batched sum retrieval instruction)을 실행함으로써 클라이언트 디바이스들 상의 클라이언트 상태를 초기화하는 단계를 포함하고, 각각의 계산된 합(O)은 클라이언트 디바이스의 메모리 하드웨어에 저장되고 정확히 k개의 데이터 블록들의 대응하는 서브세트(S)의 합을 포함한다. 방법은 또한, 데이터 스토리지 저장 디바이스에 저장된 질의 블록(Bq)을 포함하지 않는 c개의 합들(O) 중 하나를 식별하기 위해 메모리 하드웨어에 저장된 데이터 블록들의 c개의 합들(O) 각각을 반복하고; 데이터 스토리지 저장 디바이스를 관리하는 서비스에, n개의 데이터 블록들의 데이터 스토리지 저장 디바이스를
Figure 112020131116728-pct00001
개의 파티션들로 의사랜덤하게 파티셔닝하도록 명령하고,
Figure 112020131116728-pct00002
개의 파티션들 각각에 대한 대응하는 암호화된 데이터 블록 합을 결정하기 위해
Figure 112020131116728-pct00003
개의 파티션들 각각에서 k+1개의 데이터 블록들을 합하고,
Figure 112020131116728-pct00004
개의 파티션들 중 하나는 질의 블록(Bq)을 포함하지 않는 데이터 블록들의 식별된 c 합(O)을 포함하는 고정된 파티션을 포함함 ―; 데이터 스토리지 저장 디바이스를 관리하는 서비스로부터 고정된 파티션을 포함하는
Figure 112020131116728-pct00005
개의 파티션들에 대한 암호화된 데이터 블록 합을 리트리브하고; 그리고 질의 블록(Bq)을 획득하기 위해, 클라이언트 디바이스의 메모리 하드웨어에 저장된 데이터 블록들의 식별된 c 합(O)으로부터 암호화된 데이터 블록 합을 복호화 및 감산함으로써, 데이터 프로세싱 하드웨어에 의해, 데이터 스토리지 저장 디바이스에 저장된 질의 블록(Bq)을 리트리브하기 위한 질의 명령을 실행하는 단계를 포함한다. 방법은 또한, 데이터 프로세싱 하드웨어(124)에 의해, 질의들(q)의 수가 질의 임계치를 초과하는지 여부를 결정하는 단계, 및 데이터 프로세싱 하드웨어(124)에 의해, 질의들(q)의 수가 질의 임계치를 초과할 때, 클라이언트 상태를 재초기화하는 단계를 포함한다.
[0010] 본 개시내용의 구현들은 다음의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령을 실행하는 것은: 신뢰되지 않은(untrusted) 저장 디바이스에 저장된 모든 각각의 데이터 블록을 클라이언트 디바이스들로 스트리밍하는 것 ― 신뢰되지 않은 저장 디바이스는 n개의 데이터 블록들을 저장함 ―; 신뢰되지 않은 저장 디바이스로부터 스트리밍된 선택된 데이터 블록들을 데이터 블록들의 c개의 서브세트들(S) 중 대응하는 서브세트들(S)에 할당하는 것; 및 대응하는 서브세트(S)에 할당된 선택된 데이터 블록들을 합함으로써 데이터 블록들의 각각의 c 합(O)을 계산하는 것을 포함한다. 다른 구현들에서, 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령을 실행하는 것은 메모리 하드웨어 상의 저장을 위해 데이터 블록들의 c개의 합들(O)을 계산하기 위해 신뢰되지 않은 저장 디바이스로부터 m개의 데이터 블록들을 다운로드하는 것을 포함한다. 여기서, 클라이언트 디바이스에 의해 다운로드된 m개의 데이터 블록들의 수는 k개의 데이터 블록들의 수와 데이터 블록들의 c개의 합들(O)의 수 간의 곱(product)과 동일하다.
[0011] 또 다른 구현들에서, 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령을 실행하는 것은: k개의 버킷들 각각으로부터 t개의 데이터 블록들을 리트리브하기 위해 클라이언트 디바이스들로부터의 개인 정보 리트리브 요청을 신뢰되지 않은 저장 디바이스를 관리하는 서비스에 전송하는 것 ― 개인 정보 요청은 서비스로 하여금 대응하는 개인 정보 리트리벌 결과로서 각각의 t 데이터 블록을 암호화하여 신뢰되지 않은 저장 디바이스에 저장하게 함 ―; 덧셈 동형 암호화들(additively homomorphic encryptions)의 벡터를 생성하는 것; 덧셈 동형 암호화들의 벡터를 신뢰되지 않은 저장 디바이스에 업로드하는 것 ― 덧셈 동형 암호화들의 벡터는 신뢰되지 않은 저장 디바이스를 관리하는 서비스로 하여금 덧셈 동형 암호화들의 벡터를 사용하여 개인 정보 리트리벌 결과들에 대해 덧셈 동형 암호화 계산을 실행하게 하고, 덧셈 동형 암호화 계산은 데이터 블록들의 대응하는 c 합(O)에 대한 암호문 값에 대응함 ―; 및 데이터 블록들의 대응하는 c 합(O)을 획득하기 위해, 신뢰되지 않은 저장 디바이스를 관리하는 서비스로부터 암호문을 수신 및 복호화하는 것을 포함한다. 덧셈 동형 암호화 계산은 내적 계산(dot product computation)을 포함한다. 부가적으로 또는 대안적으로, t는 1과 동일할 수 있다.
[0012] 일부 예들에서, n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를
Figure 112020131116728-pct00006
개의 파티션들로 의사랜덤하게 파티셔닝하도록 신뢰되지 않은 저장 디바이스를 관리하는 서비스에 명령하는 것은, n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를
Figure 112020131116728-pct00007
개의 파티션들로 의사랜덤하게 파티셔닝하기 위한 명령들을 포함하는 의사랜덤 순열 파티셔닝 키들(pseudorandom permutation partitioning keys)(κ)의 벡터를 생성하는 것; 및 의사랜덤 순열 파티셔닝 키들의 벡터를 포함하는 요청을 클라이언트 디바이스로부터 신뢰되지 않은 저장 디바이스를 관리하는 서비스에 전송하는 것을 포함하고, 요청은 서비스가 n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를
Figure 112020131116728-pct00008
개의 파티션들로 의사랜덤하게 파티셔닝하게 하고,
Figure 112020131116728-pct00009
개의 파티션들 중 하나는 질의 블록(Bq)을 포함하지 않는 데이터 블록들의 식별된 c 합(O)을 포함하는 고정된 파티션을 포함한다. 의사랜덤 파티션은, 각각의 행이 대응하는 파티션을 포함하고, 각각의 열이 각각의 파티션에서 k+1개의 블록들 중 대응하는 블록에 대해 증분적으로 생성되는 의사랜덤 순열을 포함하는 2-차원 행렬을 포함한다.
[0013] 본 개시내용의 시스템 양상은 PIR(private information retrieval)을 사용하여 신뢰되지 않은 저장 디바이스 상에서 데이터 블록들을 불확정적으로 리트리브하기 위한 시스템을 제공한다. 시스템은 클라이언트 디바이스의 데이터 프로세싱 하드웨어 및 데이터 프로세싱 하드웨어와 통신하는 클라이언트 디바이스의 메모리 하드웨어를 포함한다. 메모리 하드웨어는, 데이터 프로세싱 하드웨어에 의해 실행될 때, 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장하고, 동작들은: 신뢰되지 않은 저장 디바이스로부터 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령을 실행함으로써 클라이언트 디바이스들 상의 클라이언트 상태를 초기화하는 동작을 포함하고, 각각의 계산된 합(O)은 클라이언트 디바이스의 메모리 하드웨어에 저장되고 정확히 k개의 데이터 블록들의 대응하는 서브세트(S)의 합을 포함한다. 동작들은 또한, 신뢰되지 않은 저장 디바이스에 저장된 질의 블록(Bq)을 포함하지 않는 c개의 합들(O) 중 하나를 식별하기 위해 메모리 하드웨어에 저장된 데이터 블록들의 c개의 합들(O) 각각을 반복하고; 신뢰되지 않은 저장 디바이스를 관리하는 서비스에, n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를
Figure 112021057615438-pct00010
개의 파티션들로 의사랜덤하게 파티셔닝하도록 명령하고, ― 파티션들 각각은 k+1개의 데이터 블록들을 포함하고,
Figure 112021057615438-pct00011
개의 파티션들 각각에 대한 대응하는 암호화된 데이터 블록 합을 결정하기 위해
Figure 112021057615438-pct00012
개의 파티션들 각각에서 k+1개의 데이터 블록들을 합하고,
Figure 112021057615438-pct00013
개의 파티션들 중 하나는 질의 블록(Bq)을 포함하지 않는 데이터 블록들의 식별된 c 합(O)을 포함하는 고정된 파티션을 포함함 ―; 신뢰되지 않은 저장 디바이스를 관리하는 서비스로부터 고정된 파티션을 포함하는
Figure 112021057615438-pct00014
개의 파티션들에 대한 암호화된 데이터 블록 합을 리트리브하고; 그리고 질의 블록(Bq)을 획득하기 위해, 클라이언트 디바이스의 메모리 하드웨어에 저장된 데이터 블록들의 식별된 c 합(O)으로부터 암호화된 데이터 블록 합을 복호화 및 감산함으로써, 신뢰되지 않은 저장 디바이스에 저장된 질의 블록(Bq)을 리트리브하기 위한 질의 명령을 실행하는 동작을 포함한다. 동작들은 또한, 질의들(q)의 수가 질의 임계치를 초과하는지 여부를 결정하는 동작, 및 질의들(q)의 수가 질의 임계치를 초과하면 클라이언트 상태를 재초기화하는 동작을 포함한다.
[0014] 본 개시내용의 이러한 양상은 다음의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령을 실행하는 것은: 신뢰되지 않은 저장 디바이스에 저장된 모든 각각의 데이터 블록을 클라이언트 디바이스들로 스트리밍하는 것 ― 신뢰되지 않은 저장 디바이스는 n개의 데이터 블록들을 저장함 ―; 신뢰되지 않은 저장 디바이스로부터 스트리밍된 선택된 데이터 블록들을 데이터 블록들의 c개의 서브세트들(S) 중 대응하는 서브세트들(S)에 할당하는 것; 및 대응하는 서브세트(S)에 할당된 선택된 데이터 블록들을 합함으로써 데이터 블록들의 각각의 c 합(O)을 계산하는 건을 포함한다. 다른 구현들에서, 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령을 실행하는 것은, 메모리 하드웨어 상의 저장을 위해 데이터 블록들의 c개의 합들(O)을 계산하기 위해 신뢰되지 않은 저장 디바이스로부터 m개의 데이터 블록들을 다운로드하는 것을 포함한다. 여기서, 클라이언트 디바이스에 의해 다운로드된 m개의 데이터 블록들의 수는 k개의 데이터 블록들의 수와 데이터 블록들의 c개의 합들(O)의 수 간의 곱과 동일하다.
[0015] 또 다른 구현들에서, 데이터 블록들의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령을 실행하는 것은: k개의 버킷들 각각으로부터 t개의 데이터 블록들을 리트리브하기 위해 클라이언트 디바이스들로부터의 개인 정보 리트리브 요청을 신뢰되지 않은 저장 디바이스를 관리하는 서비스에 전송하는 것 ― 개인 정보 요청은 서비스로 하여금 대응하는 개인 정보 리트리벌 결과로서 각각의 t 데이터 블록을 암호화하여 신뢰되지 않은 저장 디바이스에 저장하게 함 ―; 덧셈 동형 암호화들의 벡터를 생성하는 것; 덧셈 동형 암호화들의 벡터를 신뢰되지 않은 저장 디바이스에 업로드하는 것 ― 덧셈 동형 암호화들의 벡터는 신뢰되지 않은 저장 디바이스를 관리하는 서비스로 하여금 덧셈 동형 암호화들의 벡터를 사용하여 개인 정보 리트리벌 결과들에 대해 덧셈 동형 암호화 계산을 실행하게 하고, 덧셈 동형 암호화 계산은 데이터 블록들의 대응하는 c 합(O)에 대한 암호문 값에 대응함 ―; 및 데이터 블록들의 대응하는 c 합(O)을 획득하기 위해, 신뢰되지 않은 저장 디바이스를 관리하는 서비스로부터 암호문을 수신 및 복호화하는 것을 포함한다. 덧셈 동형 암호화 계산은 내적 계산(dot product computation)을 포함한다. 부가적으로 또는 대안적으로, t는 1과 동일할 수 있다.
[0016] 일부 예들에서, n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를
Figure 112020131116728-pct00015
개의 파티션들로 의사랜덤하게 파티셔닝하도록 신뢰되지 않은 저장 디바이스를 관리하는 서비스에 명령하는 것은, n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를
Figure 112020131116728-pct00016
개의 파티션들로 의사랜덤하게 파티셔닝하기 위한 명령들을 포함하는 의사랜덤 순열 파티셔닝 키들(pseudorandom permutation partitioning keys)(κ)의 벡터를 생성하는 것; 및 의사랜덤 순열 파티셔닝 키들의 벡터를 포함하는 요청을 클라이언트 디바이스로부터 신뢰되지 않은 저장 디바이스를 관리하는 서비스에 전송하는 것을 포함하고, 요청은 서비스가 n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를
Figure 112020131116728-pct00017
개의 파티션들로 의사랜덤하게 파티셔닝하게 하고,
Figure 112020131116728-pct00018
개의 파티션들 중 하나는 질의 블록(Bq)을 포함하지 않는 데이터 블록들의 식별된 c 합(O)을 포함하는 고정된 파티션을 포함한다. 의사랜덤 파티션은, 각각의 행이 대응하는 파티션을 포함하고, 각각의 열이 각각의 파티션에서 k+1개의 블록들 중 대응하는 블록에 대해 증분적으로 생성되는 의사랜덤 순열을 포함하는 2-차원 행렬을 포함한다.
[0017] 본 개시내용의 하나 이상의 구현들의 세부사항들은 첨부 도면들 및 이하의 설명에서 제시된다. 다른 양상들, 특징들 및 장점들은 상세한 설명과 도면들 및 청구항들로부터 명백해질 것이다.
[0018] 도 1a는, 상태를 유지하는 다수의 클라이언트 디바이스들에 대한 분산형 시스템의 비-일시적 데이터 스토리지에 저장된 데이터 블록들에 대한 불확정 액세스(oblivious access)를 허용하는 예시적인 개인 정보 리트리벌 시스템의 개략도이다.
[0019] 도 1b는, 상태를 유지하는 다수의 클라이언트 디바이스들에 대한 분산형 시스템의 비-일시적 데이터 스토리지에 저장된 데이터 블록들에 대한 불확정 액세스를 허용하는 예시적인 개인 정보 리트리벌 시스템의 개략도이다.
[0020] 도 2a는 전체 데이터베이스를 신뢰되지 않은 저장 디바이스로부터 상태를 유지하는 클라이언트 디바이스로 스트리밍하는 예시적인 개인 배치 합 리트리벌 명령의 개략도이다.
[0021] 도 2b는, 특정 수의 데이터 블록들을 분산형 시스템의 신뢰되지 않은 저장 디바이스로부터 상태를 유지하는 클라이언트 디바이스로 다운로드하는 예시적인 개인 배치 합 리트리벌 명령의 개략도이다.
[0022] 도 2c-2e는, 분산형 시스템의 신뢰되지 않은 저장 디바이스를 특정 수의 버킷들 ― 이들 각각은 균일한 수의 데이터 블록들을 포함함 ― 로 인코딩하기 위해 클라이언트 디바이스로부터의 배치 코드들을 사용하는 예시적인 개인 배치 합 리트리벌 루틴의 개략도이다.
[0023] 도 3a-3c는 분산형 시스템의 신뢰되지 않은 저장 디바이스에 저장된 데이터 블록을 불확정적으로 리트리브하기 위해 클라이언트 디바이스 상에서 실행되는 예시적인 질의 명령의 개략도이다.
[0024] 도 4a는 의사랜덤 파티셔닝 키들(pseudorandom partitioning keys)의 벡터를 생성하기 위한 예시적인 알고리즘을 제공한다.
[0025] 도 4b는 클라이언트 디바이스에 의해 생성된 의사랜덤 파티셔닝 키들의 벡터를 사용하여 데이터베이스를 파티셔닝하기 위한 예시적인 알고리즘을 제공한다.
[0026] 도 4c는 개인 배치 코드 루틴을 실행함으로써 클라이언트 디바이스 상태를 초기화하기 위한 예시적인 알고리즘을 제공한다.
[0027] 도 4d는 신뢰되지 않은 저장 디바이스로부터 질의 블록을 불확정적으로 리트리브하기 위한 질의 명령을 실행하기 위한 예시적인 알고리즘을 제공한다.
[0028] 도 4e는 의사랜덤 기능 키들을 생성하기 위한 예시적인 알고리즘을 제공한다.
[0029] 도 4f는 클라이언트 디바이스에 의해 생성된 의사랜덤 파티셔닝 키들을 사용하여 고정된 파티션을 추출하고 데이터베이스를 파티셔닝하기 위한 예시적인 알고리즘을 제공한다.
[0030] 도 5는 개인 정보 리트리벌을 사용하여 신뢰되지 않은 저장 디바이스로부터 데이터 블록을 불확정적으로 리브리브하는 방법에 대한 동작들의 예시적인 배열의 흐름도이다.
[0031] 도 6은 본원에 설명된 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0032] 다양한 도면들 내의 유사한 참조 심볼들은 유사한 엘리먼트들을 나타낸다.
[0033] 본원의 구현들은, 다수의 클라이언트 디바이스들 ― 이들 각각은 비동기 상태임 ― 이 서비스 제공자에 의해 관리되는 신뢰되지 않은 메모리에 저장된 데이터 블록들을 불확정적으로 리트리브할 수 있게 하는 단일-서버 PIR(private information retrieval) 루틴에 관한 것이다. 신뢰되지 않은 메모리는, 클라이언트 디바이스들이 액세스 가능한 클라우드-환경에서 실행되는 분산형 저장 시스템의 스토리지 리소스들을 포함할 수 있다. 신뢰되지 않은 메모리에 저장된 데이터 블록들은 공개적으로 알려지고 암호화되지 않는다(예컨대, 평문). 따라서, 다수의 클라이언트 디바이스들이 독립적인 스토리지(예컨대, 비동기 상태)를 갖는 단일-서버 PIR 루틴은 신뢰되지 않은 메모리로부터 공개적으로 알려지고 암호화되지 않은 데이터의 액세스 패턴들을 효과적으로 숨긴다. 일 예에서, 스토리지 리소스들(예컨대, 신뢰되지 않은 메모리)을 관리하는 서비스 제공자는 클라이언트 디바이스들에 대한 분배를 위한 머신 학습 모델들을 생성할 수 있다. 여기서, 서버 제공자는 생성된 머신 러닝 모델들을 스토리지 리소스들에 데이터 블록들로서 저장할 수 있고, 클라이언트 디바이스들은 클라이언트에 관한 개인 정보를 사용하여 특정 머신 학습 모델들을 질의할 수 있다. 단일-서버 PIR 루틴은, 머신 학습 모델들을 분배하는 서비스 제공자가 클라이언트 디바이스에 의해 어떤 학습 모델이 리트리브되었는지를 학습하는 것을 방지한다. 또 다른 예에서, 공장 재설정(factory reset)을 겪은 클라이언트 디바이스들은, 클라이언트 디바이스가 기업 그룹과 연관되는지 아니면 개인과 연관되는지 대개 확인한다. 클라이언트 디바이스의 제조자(또는 클라이언트 디바이스에서 실행되는 운영 시스템 또는 다른 소프트웨어의 제공자)는 기업 식별자들 및 연관된 클라이언트 식별자들의 세트를 평문으로 저장할 수 있다. 클라이언트 디바이스가 특정 기업 그룹에 속할 때 공장 재설정을 완료하려면 추가의 동작들이 요구될 수 있지만, 단일-서버 PIR 루틴은, 클라이언트 디바이스가 기업 그룹에 속하지 않을 때 클라이언트 디바이스와 연관된 클라이언트 식별자가 제조자에게 결코 유출되지 않는다는 것을 보장한다.
[0034] 비동기 상태는, 신뢰되지 않은 메모리에 저장된 데이터에 대한 질의를 수행한 후, 클라이언트 디바이스들이 서로 독립적으로 자신들의 상태를 업데이트할 수 있게 하기 위해, 각각의 클라이언트 디바이스가 다른 클라이언트 디바이스들로부터 독립적인 스토리지를 갖는 것을 의미한다. 유사하게, 클라이언트 디바이스가 상태를 해제하기로 결정할 때, 다른 모든 클라이언트 디바이스들의 질의들은 신뢰되지 않은 메모리를 관리하는 서버로부터 은닉된 상태를 유지한다. 단일-서버 PIR 루틴을 구성하고 나중에 더 효율적인 온라인 질의를 제공하기 위해, 클라이언트 디바이스들은, 개인 배치 합 리트리브 루틴을 실행하고 그리고 이후에, 클라이언트 디바이스들이 신뢰되지 않은 메모리에 저장된 데이터 블록들에 대한 질의들을 실행할 때, 클라이언트 디바이스들이 신뢰되지 않은 메모리를 관리하는 서비스에 대한 고정된 파티션들을 통신하도록 허용하는 제한된 의사랜덤 파티셔닝 명령을 실행함으로써 먼저 자신들의 상태를 초기화한다.
[0035] 도 1a 및 1b는, 공개적으로 알려진 그리고 비암호화된 n개의 데이터 블록들(B)(102)을 분산형 시스템(140) 상에 저장하고, 비동기 상태(250)를 유지하는 다수의 클라이언트 디바이스들(120)(120a-n)에 의해 데이터 블록들(B)(102)에 대한 검색 기능들을 보존하면서, 클라이언트 디바이스들(120)이 액세스 패턴들을 감추도록 데이터 블록들(B)(102)을 불확정적으로 리브리브하기 위한 PIR(private information retrieval)을 사용하도록 허용하기 위한 예시적인 시스템(100)을 묘사한다. 따라서, 클라이언트 디바이스(120)는 데이터 블록(102)을 소유하지 않을 수 있고, 데이터 블록들(102)의 콘텐츠는 구성들에서 공공에게 이용 가능하다. 클라이언트(10)와 연관된 클라이언트 디바이스(120)(예컨대, 컴퓨터)는, 네트워크(130)를 통해, 스케일링 가능한/탄력적인 비-일시적 스토리지 추상화(storage abstraction)(150)를 갖는 분산형 시스템(140)과 통신한다. 클라이언트 디바이스(120)는 연관된 메모리 하드웨어(122) 및 연관된 데이터 프로세싱 하드웨어(124)를 포함할 수 있다. 각각의 클라이언트 디바이스(120)는, 스토리지 추상화(150)에 저장된 데이터 블록들(B)(102)을 질의하기 위한 질의 명령들(300)을 실행할 때, 데이터 블록들(B)(102) 중 하나 이상을 저장하기 위한 상태(250)를 유지하기 위해 연관된 메모리 하드웨어(122)를 레버리지(leverage)할 수 있다. 스토리지 추상화(150)(예컨대, 파일 시스템, 데이터 스토리지 등)는 스토리지 리소스들(114) 위에 놓여, 하나 이상의 클라이언트 디바이스(120)에 의한 스토리지 리소스들(114)의 스케일링 가능한 사용을 허용한다.
[0036] 일부 구현들에서, 분산형 시스템(140)은 스토리지 추상화(150)에 대한 액세스를 관리하는 컴퓨팅 디바이스(112)(예컨대, 서버)를 실행한다. 예컨대, 서버는 데이터 블록들을 생성하여 스토리지 추상화에 평문으로 저장할 수 있고, 클라이언트 디바이스(120)는 스토리지 추상화(150)로부터 평문의 데이터 블록들(102)을 리트리브할 수 있다. 도시된 예가 분산형 시스템(140)과 연관된 신뢰되지 않은 측(untrusted side)과 네트워크(130)를 통해 통신하는 클라이언트 디바이스들(120)과 연관된 신뢰 측(trusted side)을 갖는 시스템(100)을 묘사하지만, 시스템(100)은 대안적으로 신뢰 컴퓨팅 디바이스(들)(CPU) 및 신뢰 데이터 저장 디바이스를 갖는 대형 인트라넷 상에서 구현될 수 있다. 분산형 시스템(140) 또는 데이터 스토리지와 연관된 신뢰되지 않은 측은, 컴퓨팅 디바이스(112)가 정직하게 프로토콜을 따르지만 분산형 시스템(140)에 의해 유출된 정보를 사용하여 임의의 확률적으로 다항식 시간 알고리즘을 수행하여 추가 통찰(insight)을 획득할 수 있다는 점에서 "준정직(honest-but-curious)"으로 간주된다.
[0037] 일부 구현들에서, 분산형 시스템(100)은 리소스들(110, 110a-z)을 포함한다. 리소스들(110)은 하드웨어 리소스들 및 소프트웨어 리소스들을 포함할 수 있다. 하드웨어 리소스들(110)은 컴퓨팅 디바이스들(112)(데이터 프로세싱 디바이스들 및 데이터 프로세싱 하드웨어로 또한 지칭됨) 또는 비-일시적 메모리(114)(메모리 하드웨어 및 스토리지 리소스들로 또한 지칭됨)를 포함할 수 있다. 소프트웨어 리소스들(110)은 소프트웨어 애플리케이션들, 소프트웨어 서비스들, API(application programming interface)들 등을 포함할 수 있다. 소프트웨어 리소스들(110)은 하드웨어 리소스들(110)에 상주할 수 있다. 예컨대, 소프트웨어 리소스들(110)은 메모리 하드웨어(114)에 저장될 수 있거나, 하드웨어 리소스들(110)(예컨대, 컴퓨팅 디바이스들(112))은 소프트웨어 리소스들(110)을 실행할 수 있다.
[0038] 소프트웨어 애플리케이션(즉, 소프트웨어 리소스(110))은 컴퓨팅 디바이스로 하여금 작업을 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 일부 예들에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로 지칭될 수 있다. 예시적인 애플리케이션들은 시스템 진단 애플리케이션들, 시스템 관리 애플리케이션들, 시스템 유지 보수 애플리케이션들, 워드 프로세싱 애플리케이션들, 스프레드시트(spreadsheet) 애플리케이션들, 메시징 애플리케이션들, 미디어 스트리밍 애플리케이션들, 소셜 네트워킹 애플리케이션들 및 게임 애플리케이션들을 포함하지만 이에 제한되지는 않는다.
[0039] 메모리 하드웨어(114, 122)는 컴퓨팅 디바이스(112) 및/또는 클라이언트 디바이스(120)(즉, 클라이언트 디바이스(120)의 데이터 프로세싱 하드웨어(124))가 사용할 프로그램들(예컨대, 명령들의 시퀀스들) 또는 데이터(예컨대, 프로그램 상태 정보)를 일시적으로 또는 영구적으로 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 메모리 하드웨어(114, 122)는 휘발성 및/또는 비-휘발성 어드레싱 가능한 반도체 메모리일 수 있다. 비-휘발성 메모리의 예들은 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예컨대, 부팅 프로그램들과 같은, 펌웨어용으로 전형적으로 사용됨)을 포함하지만, 이에 제한되지 않는다. 휘발성 메모리의 예들은 RAM(random access memory), ORAM(oblivious random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory) 및 디스크들 또는 테이프들을 포함하지만, 이에 제한되지 않는다.
[0040] 네트워크(130)는 LAN(local area network), WAN(wide area network) 및/또는 인터넷과 같은 다양한 타입들의 네트워크들을 포함할 수 있다. 네트워크(130)가 장거리 네트워크(예컨대, 인터넷 또는 WAN)를 나타낼 수 있지만, 일부 구현들에서, 네트워크(130)는 LAN(local area network)과 같은 단거리 네트워크를 포함한다. 일부 구현들에서, 네트워크(130)는 표준 통신 기술들 및/또는 프로토콜들을 사용한다. 따라서, 네트워크(130)는 이더넷, WiFi(Wireless Fidelity)(예컨대, 802.11), WiMAX(worldwide interoperability for microwave access), 3G, LTE(Long Term Evolution), DSL(Digital Subscriber Line), ATM(asynchronous transfer mode), InfiniBand, PCI Express Express Advanced Switching, 블루투스, BLE(Bluetooth Low Energy) 등과 같은 기술들을 사용하는 링크들을 포함할 수 있다. 유사하게, 네트워크(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(file transfer protocol) 등을 포함할 수 있다. 네트워크(130)를 통해 교환되는 데이터는 HTML(hypertext markup language), XML(extensible markup language) 등을 포함하는 기술들 및/또는 포맷들을 사용하여 표현될 수 있다. 게다가, SSL(secure sockets layer), TLS(transport layer security), VPN(virtual private network)들, IPsec(Internet Protocol security) 등과 같은 종래의 암호화 기술들을 사용하여 링크들 중 일부 또는 전부가 암호화될 수 있다. 다른 예들에서, 네트워크(130)는 전술한 것들 대신에 또는 이들에 부가하여 맞춤형 및/또는 전용 데이터 통신 기술들을 사용한다.
[0041] 데이터 블록들(102)은 원자 단위의 데이터에 대응하고, 이들 각각은 각각 크기 B 바이트를 갖는다. 예컨대, 분산형 시스템에 저장하기 위한 B의 전형적인 값은 64KB 내지 256B일 수 있다. 표기 n은 스토리지 리소스(들)(114)와 연관되고 PIR을 사용하여 스토리지 추상화(150)에 저장되는 데이터 블록들(102)의 수를 나타낸다. n개의 데이터 블록들(B)(102) 각각은 메모리 하드웨어(114)에 걸쳐 위에 놓인 스토리지 추상화(150)의 대응하는 메모리 위치(118, 118a-n)(도 1b)에 저장된다. 구체적으로, n개의 데이터 블록들(B)(102)은 PIR 스토리지와 연관되고, 이로써 n개의 데이터 블록들(B)(102)은 하나 이상의 스토리지 리소스들(114) 상에 저장되고 암호화되지 않고 공공에게 이용 가능하다. 예컨대, 비암호화된 공개 데이터 블록들(B)은, 분산형 시스템(140)에 의해 생성되고 클라이언트 디바이스들(120)에 의한 다운로드에 이용가능한 머신 학습 모델들과 연관될 수 있다.
[0042] 분산형 시스템(140)의 스토리지 추상화(150)(예컨대, 데이터베이스)에 의해 저장된 공개적으로 알려진 평문 데이터 블록들(102)에 대해 보다 효율적인 질의를 제공하기 위해, 각각의 클라이언트 디바이스(120)는, 클라이언트 디바이스(120)로 하여금 클라이언트 디바이스(120)의 메모리 하드웨어(122) 상의 저장을 위해 스토리지 추상화(150)로부터 O개의 데이터 블록들(102)의 c개의 합들을 계산하게 하는 개인 BSR(batched sum retrieval) 명령(200)을 실행함으로써 대응하는 상태(250)를 초기화한다. 여기서, c개의 계산된 합들(O) 각각은 정확히 k개의 데이터 블록들(102)의 대응하는 서브세트(S)의 합을 포함한다. 일부 구현들에서, 각각의 클라이언트 디바이스(120)는, 데이터 블록들(102)의 각각의 c개의 합들(O1, O2,..., OC)을 계산하기 전에, 랜덤 순열(π1, π2,..., πk)을 생성하여 대응하는 서브세트(S1, S2,..., SC)의 각각의 k 블록에 적용한다. 클라이언트 디바이스들(120)은, 나중에 데이터 블록들(102)에 대한 보다 효율적인 질의를 제공하기 위해, 상태(250)를 초기화하고, 정지 시간들(downtimes)(예컨대, 야간) 동안 개인 BSR 명령들(200)을 실행할 수 있다. 임계수의 질의들을 수행한 후, 각각의 클라이언트 디바이스(120)는 다른 클라이언트 디바이스들(120)의 상태(250)와 독립적으로 그리고 다른 클라이언트 디바이스들(120)에 의한 질의를 중단하지 않고서 자신의 상태(250)를 재초기화한다.
[0043] 클라이언트 디바이스들(120)은, 제한없이, 데이터베이스의 크기(예컨대, n개의 데이터 블록들(102)의 수), 계산 요건들, 및/또는 대역폭 요건들을 포함하는 하나 이상의 팩터들에 기반하여 상이한 개인 BSR 명령들(200)을 선택할 수 있다. 예컨대, 개인 BSR 명령(200)은, 스토리지 추상화(150)로부터 모든 각각의 n개의 데이터 블록(102)을 스트리밍하고 데이터 블록들의 각각의 c 합(O)을 계산하기 위해 선택된 데이터 블록들(102)을 대응하는 c개의 서브세트들(S)에 할당하는 스트리밍 개인 BSR 명령(200a, 200)(도 2a)을 포함할 수 있다. 다른 예들에서, 개인 BSR 명령(200)은, 데이터 블록들의 c개의 합들(O)을 계산하기 위해 스토리지 추상화(150)로부터 m개의 데이터 블록들(102)을 다운로드하는 배치 개인 BSR 명령(200b, 200)(도 2b)을 포함한다. 또 다른 예들에서, 개인 BSR 명령(200)은, 스토리지 추상화(150)를 k개의 버킷들로 파티셔닝하고, 계산될 데이터 블록들(102)의 각각 c개의 합(O)에 대해, 메모리 하드웨어(122)(즉, 상태(250) 내)에 저장하기 위해 데이터 블록들(102)의 대응하는 합(O)을 계산하기 위해 k개의 버킷들 각각으로부터 t개의 데이터 블록들을 다운로드하는 배치 코드 개인 BSR 명령(200c, 200)(도 2c-2e)을 포함한다. 일반적으로, 스트리밍 개인 BSR 명령(200a)은 더 작은 크기들의 데이터베이스들에 대해 가장 효율적인 반면에, 배치 코드 개인 BSR 명령(200c)은 더 큰 크기들의 데이터베이스들에 대해 가장 효율적이다. 배치 개인 BSR 명령(200b)은 중간 크기의 데이터베이스들에 대해 최상의 질의 효율성들을 제공할 수 있다.
[0044] 상태(250)를 초기화한 후, 클라이언트 디바이스(120)는 스토리지 추상화(200)에 저장된 질의 블록(Bq)을 불확정적으로 리트리브하기 위해 질의 명령(300)을 실행한다. 여기서, 클라이언트 디바이스(120)는, 질의 블록(Bq)을 포함하지 않는 c개의 합들(O) 중 하나를 식별하기 위해 대응하는 상태(250)를 반복적으로 검색한다. 질의 블록(Bq)을 포함하지 않는 c개의 합들(O)을 식별할 때, 클라이언트 디바이스(120)는, 스토리지 추상화(150)를 관리하는 서비스(예컨대, 서버)(160)에 n개의 데이터 블록들의 스토리지 추상화를
Figure 112020131116728-pct00019
개의 파티션들(350)로 의사랜덤하게 파티셔닝하도록 명령하는 파티션 요청(320)을 전송할 수 있고,
Figure 112020131116728-pct00020
개의 파티션들(350) 각각은 k+1개의 데이터 블록들을 포함하고,
Figure 112020131116728-pct00021
개의 파티션들 각각에 대한 대응하는 암호화된 데이터 블록 합(302)을 결정하기 위해
Figure 112020131116728-pct00022
개의 파티션들 각각의 k+1개의 데이터 블록들을 합한다.
Figure 112020131116728-pct00023
개의 파티션들 중 파티션(350)은 2-차원 행렬을 포함한다. 유리하게는, 파티션 요청(320)은 식별된 c 합(O)을 포함하는 고정된 파티션을
Figure 112020131116728-pct00024
개의 파티션들 중 하나에 임베딩하고, 이로써 식별된 c 합(O)은 2-차원 행렬의 랜덤한 행(예컨대, r번째 행)에 임베딩된다. 불확정적으로, 서비스(160)는, 데이터 블록들(102)(즉, k개의 데이터 블록들)의 식별된 c 합(O)에 대한 고정된 파티션뿐만 아니라 질의 블록(Bq)(예컨대, +1 블록)을 포함하는 암호화된 데이터 블록 합(302)을 반환할 수 있다. 암호화된 데이터 블록 합(302)을 수신하는 것에 대한 응답으로, 클라이언트 디바이스(120)는 (예컨대, 데이터 프로세싱 하드웨어(124)를 통해) 암호화된 데이터 블록 합(302)을 복호화하여, 질의 블록(Bq)을 획득하기 위해 클라이언트 디바이스(120)에 저장된 데이터 블록들(102)의 식별된 c 합(O)으로부터 감산한다. 따라서, 명령(300)을 실행함으로써, 클라이언트 디바이스(120)는, 분산형 시스템(140)에 대해 클라이언트 디바이스(120)에 의해 실행된 질의의 시퀀스뿐만 아니라 데이터 블록(102)의 콘텐츠를 노출시키지 않고 데이터 블록(Bq)을 리트리브할 수 있다. 서비스(160)는 데이터 프로세싱 하드웨어(112) 상에서 실행될 수 있다.
[0045] 도 1b를 참조하면, 일부 구현들에서, 분산형 저장 시스템(140)은 느슨하게 (loosely) 커플링된 메모리 호스트들(110, 110a-z)(예컨대, 컴퓨터들 또는 서버들)를 포함하고, 이들 각각은 데이터를 캐싱하는 데 사용될 수 있는 스토리지 리소스들(114)(예컨대, 메모리 하드웨어, 플래시 메모리, DRAM(dynamic random access memory), PCM(phase change memory) 및/또는 디스크들)과 통신하는 컴퓨팅 리소스(112)(예컨대, 하나 이상의 프로세서들 또는 CPU(central processing unit)들)를 갖는다. 스토리지 리소스들(114) 위에 놓인 스토리지 추상화(150)는 하나 이상의 클라이언트 디바이스들(120, 120a-n)에 의한 스토리지 리소스들(114)의 스케일링 가능한 사용을 허용한다. 클라이언트 디바이스들(120)은 네트워크(130)를 통해(예컨대, RPC(remote procedure call)들을 통해) 메모리 호스트들(110)과 통신할 수 있다. 컴퓨팅 리소스들(112)은 서비스(160)를 실행할 수 있다.
[0046] 일부 구현들에서, 분산형 저장 시스템(140)은 "단일-측(single-sided)"이어서, 클라이언트 디바이스들(120)이 데이터 블록들(102)에 대한 질의들(q)을 실행하기 위한 명령들(300)을 실행할 때, 스토리지 추상화(150)로부터 데이터 블록들(102)을 리트리브하기 위해 클라이언트 디바이스(120)로부터의 질의들에 응답하기 위한 임의의 서버 작업들의 필요성을 제거한다. "단일-측"은, 메모리 호스트들(110) 상의 대부분의 요청 프로세싱이 메모리 호스트들(110)의 CPU들(112)에서 실행되는 소프트웨어에 의해서가 아니라 하드웨어에서 이루어질 수 있게 하는 방법을 의미한다. 단일-측 분산형 캐싱 시스템에 관련된 추가적인 개념들 및 특징들은 미국 특허 제9,164,702호에서 찾을 수 있으며, 이로써 이 특허는 그 전체가 인용에 의해 본원에 포함된다.
[0047] 분산형 시스템(140)은 원격 메모리 호스트들(110)(예컨대, 스토리지 추상화(200))의 스토리지 리소스들(114)(예컨대, 메모리 하드웨어) 주변의 데이터 블록(102)을 불확정적으로 이동시키고, RPC들을 통해 또는 RDMA(remote direct memory access) 가능 NIC(network interface controller)들(116)을 통해 원격 메모리 호스트들(110)로부터 데이터 블록들(102)을 획득할 수 있다. 네트워크 인터페이스 제어기(116)(네트워크 인터페이스 카드, 네트워크 어댑터 또는 LAN 어댑터로 또한 알려짐)는 컴퓨팅 디바이스/리소스(112)를 네트워크(130)에 연결하는 컴퓨터 하드웨어 컴포넌트일 수 있다. 메모리 호스트들(110a-z) 및 클라이언트 디바이스(120) 둘 모두는 네트워크 통신들을 위한 네트워크 인터페이스 제어기(116)를 각각 가질 수 있다. 하드웨어 리소스(110)의 물리적 프로세서(112) 상에서 실행되는 명령(300)은 메모리(114)의 원격 다이렉트 메모리 액세스 가능 구역들/위치들(118A-N)의 세트를 네트워크 인터페이스 제어기(116)에 등록한다. 각각의 메모리 위치(118)는 대응하는 데이터 블록(102)을 저장하도록 구성된다.
[0048] 도 2a는, 데이터 블록들(102)의 c개의 합들(O) ― 각각의 합은 정확히 k개의 데이터 블록들을 포함함 ― 을 계산하기 위해 PIR 스토리지 추상화(114, 150)(예컨대, 스토리지 추상화/데이터베이스)의 전체 콘텐츠를 스트리밍하도록 클라이언트 디바이스(120)에서 실행되는 예시적인 스트리밍 개인 BSR 명령(200a)을 제공한다. n개의 데이터 블록들(102)의 스트리밍을 개시하기 위해, 클라이언트 디바이스(102)는 PIR 스토리지 추상화(150)를 관리하는 서비스(160)에 스트림 요청(202)을 전송할 수 있다. n개의 데이터 블록들(102) 모두가 스트리밍되기 때문에, 명령(200a)은, 어떤 데이터 블록들(102)이 클라이언트 디바이스(120)에 의해 액세스되는지를 서버(160)로부터 은닉할 필요가 없다. 클라이언트 디바이스(120)는 데이터 블록들(102)의 c개의 서브세트들 중 서브세트들(S1, S2,..., SC) 중 대응하는 서브세트들에 스트림에서 선택된 데이터 블록들(102)을 할당할 수 있다. 이후에, 클라이언트 디바이스(120)는, 대응하는 서브세트(S1, S2,..., SC)(예컨대, 입력)에 할당된 선택된 k개의 데이터 블록들을 합함으로써 각각의 c개의 합(O1, O2,..., OC)(예컨대, 출력)을 계산한다. 각각의 서브세트(S)에 대해, 클라이언트 디바이스(120)는 서브세트(S)에 포함된 각각의 데이터 블록(B1, B2,..., Bk)에 대응하는 랜덤 순열을 추가로 적용할 수 있다. 클라이언트 디바이스의 메모리 하드웨어(122)에 저장된 데이터 블록들의 총 수(m)는 서브세트들(S)의 총 수(c)와, 각각의 서브세트에 할당된 데이터 블록들의 수(k)의 곱과 동일하다. 스트리밍 개인 BSR 명령(200a)은 클라이언트 디바이스(120)에서 O(n) 대역폭, O(m) 추가들 및 O(c) 로컬 메모리를 사용할 수 있다.
[0049] 도 2b는, 클라이언트 디바이스(120)로 하여금 데이터 블록들(102)의 c개의 합들(O) ― 각각의 합은 정확히 k개의 데이터 블록들을 포함함 ― 을 계산하기 위해 PIR 스토리지 추상화(114, 150)로부터 정확히 m개의 데이터 블록들을 다운로드하기 위한 다운로드 요청(204)을 전송하게 하는, 클라이언트 디바이스들(120)에서 실행되는 예시적인 배치 개인 BSR 명령(200b)을 제공한다. 따라서, 스트리밍 개인 BSR 명령(200b)이 PIR 스토리지 추상화(114, 150)로부터 모두 n개의 데이터 블록들을 스트리밍하는 반면, 배치 개인 BSR 명령(200b)은 클라이언트 상태(250)의 c개의 서브세트들(S)을 어셈블링하는 데 필요한 m개의 데이터 블록들(102)만을 다운로드한다. 클라이언트 디바이스에 의해 다운로드된 m개의 데이터 블록들의 수는 k개의 데이터 블록들의 수와 데이터 블록들의 c개의 합들(O)의 수 간의 곱과 동일하기 때문에, 명령(200b)은 정확히 k개의 데이터 블록들을 데이터 블록들(102)의 c개의 서브세트들 중 서브세트들(S1, S2,..., SC) 중 대응하는 서브세트들에 할당한다. 이후에, 클라이언트 디바이스(120)는, 대응하는 서브세트(S1, S2,..., SC)(예컨대, 입력)에 할당된 선택된 k개의 데이터 블록들을 합함으로써 각각의 c개의 합(O1, O2,..., OC)(예컨대, 출력)을 계산한다. 각각의 서브세트(S)에 대해, 클라이언트 디바이스(120)는 서브세트(S)에 포함된 각각의 데이터 블록(B1, B2,..., Bk)에 대응하는 랜덤 순열을 추가로 적용할 수 있다. 배치 개인 BSR 명령(200b)은 O(m log n+λ+mB) 대역폭 및 O(n)의 계산을 사용할 수 있다.
[0050] 도 2c-2e는, n개의 데이터 블록들의 PIR 스토리지 추상화(114, 150)를 k개의 버킷들(260)로 파티셔닝/분할/세그먼트화하고, 클라이언트 디바이스(120) 상의 저장을 위해 계산될 데이터 블록들(102)의 각각의 c 합(O)에 대해, 데이터 블록들(102)의 대응하는 합(O)을 계산하기 위해 k개의 버킷들(260) 각각으로부터 t개의 데이터 블록들을 다운로드하는, 클라이언트 디바이스들(120)에서 실행되는 예시적인 배치 코드 개인 BSR 명령(200b)을 제공한다. 더 작은 버킷들(260)은, 클라이언트 디바이스(120)가 배치 코드 개인 BSR 명령(200b)의 실행 동안 상태(250)를 초기화할 때, 대역폭을 증가시키기 위해 스토리지 추상화(150)를 세분화한다. 클라이언트 디바이스들(120)에 의해 분산형 시스템(140)에서 파티셔닝된 k개의 버킷들(260)의 수는 보안 및/또는 대역폭 요건들에 기반하여 튜닝 가능하다. 도시된 예들에서, 스토리지 추상화(150)의 n개의 데이터 블록들(102)은, 4개의 버킷들(250, 260a-d)이 총괄적으로 N(예컨대, 16)개의 데이터 블록들(102A-102N)을 포함하도록 4개의 버킷들(260, 260a-d)로 파티셔닝된다. 게다가, 각각의 k 버킷(260) 내의 데이터 블록들(102)은 인코딩 함수를 사용하여 암호화된다.
[0051] 도 2c는, 서비스(160)로 하여금 스토리지 추상화(150)를 k개의 버킷들(250a-d)로 파티셔닝하고 인코딩 함수를 사용하여 모두 k개의 버킷들에서 나타나는 N개의 블록들(102)을 인코딩하게 하는 배치 코드들(262)을 서비스(160)에 전송함으로써 명령(200b)을 개시하는 클라이언트 디바이스를 도시한다. 배치 코드들(262)은, 최대 m개의 아이템들을 갖는 임의의 서브세트(S)에 대해, 대응하는 서브세트(S)에 할당된 블록들(102)의 세트가 k개의 버킷들(260) 각각에서 최대 t개의 아이템들을 판독함으로써 리트리브될 수 있음을 보장한다. 본원의 구현들은 t를 일(1)과 동일하게 설정한다. 일부 예들에서, 배치 코드들(262)은 쿠쿠 배치 코드들(cuckoo batch codes)을 포함한다. 클라이언트 디바이스들(120)은 배치 코드들(262)을 제공하기 위해 데이터 프로세싱 하드웨어(124)와 통신하는 암호화 모듈(305)을 포함할 수 있다. 암호화 모듈(305)은 데이터 프로세싱 하드웨어(124)에서 실행되는 소프트웨어를 포함할 수 있거나, 데이터 프로세싱 하드웨어(124)와 통신하는 별개의 하드웨어를 포함할 수 있다. 도 2c는 제1 서브세트(S1) 및 제2 서브세트(S2) ― 예컨대, c는 2개의 서브세트들(S)과 동일함 ― 에 대해 정확히 k개의 데이터 블록들을 리트리브하기 위해 초기화하는 클라이언트 디바이스(120)의 상태(250)를 추가로 도시한다. 2개의 서브세트들만이 예로서 도시되지만, 다른 예들은 2개 초과의 서브세트들을 포함할 수 있다.
[0052] 도 2d는, 배치 코드 개인 BSR 명령(200c)을 실행하는 동안, 제1 서브세트(S1)에 대한 k개의 버킷들(260a-260d) 각각으로부터 t개의 데이터 블록들(102)을 다운로드하기 위한 PIR 요청(264)을 서비스(160)에 전송하는 클라이언트 디바이스(120)를 도시한다. 도시되지 않지만, 클라이언트 디바이스(120)는 또한 제2 서브세트(S2)에 대한 입력을 위해 k개의 버킷들 각각으로부터 t개의 데이터 블록들(102)을 다운로드하기 위한 대응하는 PIR 요청(264)을 전송한다. PIR 요청(264)을 수신하는 것에 대한 응답으로, 서비스는, 제1 서브세트(S1)와 연관된 대응하는 개인 정보 리트리벌 결과(r1, r2, r3, r4)로서 k개의 버킷들(260)로부터 리트리브된 각각의 t개의 데이터 블록(102)을 암호화하고 이를 저장한다. 따라서, 결과들은 분산형 시스템(140)의 스토리지 리소스(114)에 저장된다. 도시된 예에서, t는, 서비스(160)가 PIR 결과(r1)로서 버킷 1(260a)로부터 블록(2)을 랜덤하게 다운로드, 암호화 및 저장하고; PIR 결과(r2)로서 버킷 2(260b)로부터 블록(7)을 다운로드, 암호화 및 저장하고; PIR 결과(r3)로서 버킷 3(260c)으로부터 블록(12)을 다운로드, 암호화 및 저장하고; 그리고 PIR 결과(r4)로서 버킷 4(260d)로부터에서 블록(15)을 다운로드, 암호화 및 저장하도록 1과 동일하다.
[0053] 제1 서브세트(S1)에 대한 버킷들(260) 각각으로부터 t개의 데이터 블록들(102)을 다운로드하기 위한 PIR 요청(304)을 전송한 후, 클라이언트 디바이스는 덧셈 동형 암호화들의 벡터(266)를 생성하고 덧셈 동형 암호화들(e1, e2, e3, e4)의 벡터(266)를 분산형 시스템(140)(예컨대, 스토리지 추상화(150))에 업로드한다. 일부 예들에서, 동형 암호화(ej)는, 계산될 합(Oi)이 합의 부분으로서 i번째 버킷(260)으로부터의 블록(102)을 요구한다는 것이 필요충분조건이면(if and only if) 일(1)의 암호화이고, 그렇지 않은 경우 동형 암호화(ej)는 제로(0)의 암호화이다. 덧셈 동형 암호화들(e1, e2, e3, e4)의 벡터(266)는, 서비스(160)로 하여금 덧셈 동형 암호화들(e1, e2, e3, e4)의 벡터(266)를 사용하여 제1 서브세트(S1)와 연관된 개인 정보 리트리벌 결과들(r1, r2, r3, r4)에 대해 덧셈 동형 암호화 계산(268)을 실행하게 한다. 덧셈 동형 암호화 계산(268)은 데이터 블록들의 대응하는 c 합(O)에 대한 암호문 값에 대응한다. 덧셈 동형 암호화들은, 서비스(160)가, k개의 버킷들(260)로부터 다운로드된 인코딩된 결과들이 합해질 수 있도록 덧셈 동형 암호화 계산(268)을 수행할 수 있게 하고, 이로써 암호화 동작들을 수행하는 것과 연관된 계산 비용들을 경감시킨다. 도시된 예에서, 덧셈 동형 암호화 계산(268)은 내적 계산을 포함한다. 이후에, 서비스(160)는 데이터 블록들의 대응하는 c 합(O)(예컨대, 도 2d의 예에서 합(O1))에 대한 암호문 값을 클라이언트 디바이스(120)에 반환하고, 클라이언트 디바이스(120)는 상태(250)를 초기화하기 위해 로컬 메모리 하드웨어(122) 상의 저장을 위해 데이터 블록들의 c 합(O)(예컨대, 도 2d의 예에서 합(O1))을 계산하기 위해 암호문 값을 복호화한다. 이 프로세스는 계산될 데이터 블록들의 각각의 c 합(O)에 대해 반복된다.
[0054] 도 3a-3c는, 도 2a-2e의 개인 BSR 명령(200)의 실행을 통해 상태(250)를 초기화한 후, 스토리지 추상화(150)로부터 질의 블록(Bq)을 리트리브하기 위해 클라이언트 디바이스들(120)에서 실행되는 예시적인 질의 명령(300)을 제공한다. 도 3a는, 질의 블록(Bq)을 포함하지 않는 c개의 합들(O) 중 하나를 식별하기 위해 메모리 하드웨어(122)에 저장된 데이터 블록들(1-2)의 c개의 합들(O) 각각을 반복하는 클라이언트 디바이스(120)를 도시한다. 도시된 예에서, 클라이언트 디바이스(120)는, 제3 합(O3)이 질의 블록(Bq)을 포함하지 않는다는 것을 식별할 때, c개의 합들(O)을 반복하는 것을 중단한다. 합들(O1, O2 및 Oc) 모두는 질의 블록(Bq)을 포함한다. 스토리지 추상화(150)는 n개의 데이터 블록들(102, 102a-n)의 데이터베이스를 포함한다. 본 개시내용에서 스토리지 추상화(150)의 데이터베이스는, 부분 합들의 효율적인 구성을 허용하고, 아이템들을 업데이트하고 값들을 효율적으로 선택하기 위해 1부터 n까지 정렬된 정수들을 갖는 온라인 부분 합 데이터 구조를 포함할 수 있다.
[0055] 도 3b는, 질의 블록(Bq)을 포함하지 않는 c 합(O)(예컨대, 합(O3))을 식별한 후, 키들(κ)(PRPartition.GenerateKey(n, k+1, S))의 벡터를 생성하는 클라이언트 디바이스(120)를 도시한다. 도 4a는 키들(κ)(PRPartition.GenerateKey(n, k+1, S))의 벡터를 생성하기 위한 예시적인 알고리즘(400a)을 제공한다. 질의 명령(200)을 실행하는 동안 클라이언트 디바이스(120)에 의해 생성된 키들(κ)의 벡터는 n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스를 각각 k+1개의 데이터 블록들(102)을 포함하는
Figure 112020131116728-pct00025
개의 파티션들(350)로 의사랜덤하게 파티셔닝하기 위한 명령들을 포함한다. 보다 구체적으로,
Figure 112020131116728-pct00026
개의 파티션들(350)은, 파티션들 중 하나가 질의 블록(Bq)을 포함하지 않는 데이터 블록들의 식별된 c 합(O)(예컨대, 합(O3))을 포함하는 고정된 파티션이 되도록 제한된 의사랜덤 파티션들의 2-차원 행렬을 포함한다. 따라서, 키들(κ)의 벡터는, 스토리지 추상화(150) 및 스토리지 추상화(150)를 관리하는 서비스(160)로부터 불확정 방식으로, 질의 블록(Bq)을 포함하지 않는 데이터 블록들의 식별된 c 합(O)(예컨대, 합(O3))에 대응하는 서브세트(S)(예컨대, 서브세트(S3))를 고정된 파티션으로서 파티션들(350) 중 랜덤한 r번째 행에 임베딩한다. 유리하게는, 클라이언트 디바이스(120)는, 분산형 시스템(140)에서 어떠한 계산들도 요구하지 않고서 로컬적으로 스토리지 추상화(150)를 파티셔닝하기 위한 키들(κ)의 벡터를 생성할 수 있다.
[0056] 클라이언트 디바이스(120)는, 공간 효율적인 표현으로 정해진 크기의 데이터의 랜덤한 서브세트를 샘플링하기 위해 제한된 의사랜덤 파티셔닝을 실행하도록 서비스(160)에 명령한다. 즉, 키들(κ)의 벡터는 랜덤한 키/시드(κ)를 생성하고 세트 {F(κ, 1),..., F(κ, k)}를 사용함으로써 [n] 정수들(예컨대, 데이터 블록들(102))의 스토리지 추상화(150)(예컨대, 데이터베이스)에 걸쳐 의사랜덤 순열들의 군(pseudorandom family of permutations)을 사용한다. 결과적으로, 요청(320)은, 서비스(160)로 하여금 2-차원 행렬로서 [n] 정수들을 크기(k+1) 정수들의
Figure 112020131116728-pct00027
개의 세트들로 파티셔닝하게 하고, 2-차원 행렬에서 각각의 행은 대응하는 파티션을 나타낼 것이다. 2-차원 행렬은 초기에 비어 있고, 입력 서브세트(S)를 랜덤하게 선택된 순서로 임베딩하기 위한 행을 선택하기 위한 의사랜덤 순열이다. [n] 정수들의 남아있는 엘리먼트들은 빈 행렬로 랜덤하게 분배되어야 한다.
Figure 112020131116728-pct00028
개의 파티션들 중 하나는 정확히 k개의 데이터 블록들(102)의 입력 서브세트(S)에 고정된다. 이 고정된 입력 서브세트(S)는, 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 로컬적으로 저장된 데이터 블록들(102)의 계산된 c개의 합들(O) 중 하나에 대응한다. 구체적으로, CPP 명령(300)의 실행은, 피벗,..., 피벗+(
Figure 112020131116728-pct00029
)-1에서 생성된 순열의
Figure 112020131116728-pct00030
개의 파티션들 중 하나가 원하는 고정된 입력 서브세트(S)가 되도록 피벗을 선택함으로써 고정된 입력 서브세트(S)가 BSR 명령(200)에 의해 이전에 계산된 c개의 합들(O) 중 하나에 대응하는 것을 보장한다. 따라서, 고정된 입력 서브세트(S)는
Figure 112020131116728-pct00031
개의 인덱스들에서 순열의 평가들에 대응할 것이다.
[0057] 일부 예들에서, 고정된 엘리먼트(s)와 연관된 피벗을 찾기 위해, 피벗은 π-1(s)-r가 되도록 설정될 수 있고, 여기서 r은 {0,...,(
Figure 112020131116728-pct00032
)-1}로부터 랜덤하게 균일하게 선택되어 s가 생성된 서브세트에서 나타날 것이라는 것을 보장한다. 샘플링은, 고정된 엘리먼트 주위에 생성된 크기((
Figure 112020131116728-pct00033
)-1)의 랜덤한 서브세트가 입력 서브세트의 어떠한 다른 엘리먼트들도 포함하지 않을 때에만 성공한다. 랜덤한 서브세트가 입력 서브세트 엘리먼트를 포함하지 않을 확률은 다음과 같이 설명될 수 있다.
Figure 112020131116728-pct00034
[0058] 이 접근법에 기반하여, 순열 키는, 모든 열 서브세트들이 행렬의 행들 중 하나에 임베딩된 고정된 입력 서브세트(S)로부터 정확히 하나의 엘리먼트를 포함하도록 행렬의 각각의 열 내의 서브세트들을 나타낼 수 있다. 부가적으로, 모든 열 서브세트들은 쌍으로 분리되어야 한다. 일부 예들에서, 명령(300)은 모든 가능한 남아있는 아이템들에 대한 의사랜덤 순열에 대한 랜덤 키를 생성한다. 의사랜덤 순열(li:= F(K, i))의 평가는 li번째 가장 큰 남아있는 엘리먼트에 맵핑된다. 순열(π)로부터 지정된 크기(k)의 서브세트는 단순히 l1번째,..., lk번째 가장 큰 남아있는 엘리먼트들을 포함하는 세트이고, 이로써 향후 샘플링되는 모든 서브세트들이 임의의 이전 고정된 열 서브세트들과 분리되는 것을 보장한다. 분리된 샘플링된 서브세트들을 보장하는 능력을 사용하여, 각각의 열 서브세트는 일정한 수의 샘플들을 사용하여 생성될 수 있다.
[0059] 모든 미사용 엘리먼트들을 명시적으로 저장하는 것이 선형 스토리지를 요구지만, 명령(300)은 입력 서브세트로부터 남아있는 미사용 아이템들의 지식만을 요구한다. 특히, 각각의 남아있는 입력 서브세트 엘리먼트에 대한 값 ― 이는 순위(rank)로 표기됨 ― 에서 더 작은 미사용 아이템들의 수에 대한 지식이 요구된다. 입력 서브세트의 아이템들은, 인덱스(i)까지의 특정 합이 입력 서브세트의 i번째 가장 큰 멤버의 순위와 동일하도록 분류된 순서로 저장된다. 데이터 구조를 초기화할 때, 부분적인 합 질의를 수행함으로써 순위가 리트리브될 수 있다는 것을 보장하기 위해 분류된 입력 서브세트의 인접한 엘리먼트들 사이의 차이들이 저장된다. 미사용 엘리먼트들의 세트로부터 엘리먼트를 제거하는 것은, 제거된 엘리먼트보다 더 큰 모든 입력 서브세트 엘리먼트들의 순위를 1만큼 감소시키는 것을 요구한다. 제거될 엘리먼트보다 더 큰, 입력 서브세트 내의 가장 작은 아이템의 인덱스로부터 간단히 1을 감산함으로써 이것이 달성될 수 있다. 결과적으로, 더 큰 모든 입력 서브세트 엘리먼트들의 순위가 또한 1만큼 감소할 것이다. 제거된 엘리먼트보다 큰 입력 서브세트로부터 가장 작은 엘리먼트를 찾는 것은, 순위를 리트리브하면서 단일 PartialSums.Select 동작을 요구하고, 엔트리를 업데이트하는 것은 단일 PartialSums.Sum 및 PartialSums.Update 동작을 각각 요구한다. 전체 데이터 구조는 각각의 입력 서브세트 아이템에 대해 단일 엔트리만 저장하는 것을 요구하고, 이는 저장 요건들이 입력 서브세트 크기에서 선형적이라는 것을 의미한다.
[0060] 계속해서 도 3b를 참조하면, 클라이언트 디바이스(120)는, 의사랜덤 순열 파티셔닝 키들(κ)의 벡터를 포함하는 요청(320)을 서비스(160)에 전송한다. 요청(320)은, 서비스(160)에 의해 수신될 때, 서비스(160)로 하여금 n개의 데이터 블록들(102)의 스토리지 추상화(150)를
Figure 112020131116728-pct00035
개의 파티션들(350)로 의사랜덤하게 파티셔닝(PRPartition.GetPartition(κ))하게 하고,
Figure 112020131116728-pct00036
개의 파티션들(350) 중 하나는 질의 블록(Bq)을 포함하지 않는 데이터 블록들(102)의 식별된 c 합(O)(예컨대, 합(O3))을 포함하는 고정된 파티션을 포함한다. 도 4b는, 스토리지 추상화(150)를
Figure 112020131116728-pct00037
개의 파티션들(350)로 의사랜덤하게 파티셔닝하기 위해 의사랜덤 순열 파티셔닝 키들(κ)의 벡터를 사용하기 위한 예시적인 알고리즘(400b)을 제공한다. 도시된 예에서,
Figure 112020131116728-pct00038
개의 파티션들(350) 중 제3 파티션(P3)은 질의 블록(Bq), 및 질의 블록(Bq)을 포함하지 않는 데이터 블록들(102)의 식별된 c 합(O)(예컨대, 합(O3))을 포함하는 고정된 파티션을 포함한다. 여기서, 제3 파티션(P3)은 데이터 블록들(102)의 식별된 c 합(O) 중 k개의 블록들 및 질의 블록(Bq)을 포함하는 하나의 부가적인 블록을 포함한다. 제3 파티션(P3)은
Figure 112020131116728-pct00039
개의 파티션들(350)을 나타내는 2-차원 행렬의 3번째 행에 대응한다. 서비스(160)에 의한 PIR 스토리지 추상화(150)(예컨대, 데이터베이스)의 의사랜덤 파티셔닝은, 서비스(160)가 각각의 파티션(P1, P2,..., P(n/k+1))에 대해 대응하는 암호화된 데이터 블록 합(T1, T2...., T(n/k+1))(302)을 결정하기 위해 파티션들(350) 각각의 k+1개의 데이터 블록들을 합하는 것을 더 포함한다.
[0061] 도 3c는, 데이터 블록들(102)의 식별된 c 합(O)의 k개의 블록들 및 질의 블록(Bq)을 포함하는 하나의 부가적인 블록을 포함하는 제3 파티션(P3)에 대한 암호화된 데이터 블록 합(T3)(302)을 불확정적으로 반환하는 서비스(160)를 도시한다. 암호화된 데이터 블록 합(T3)(302)을 수신하는 것에 대한 응답으로, 클라이언트 디바이스(120)는 암호화된 데이터 블록 합(T3)(302)을 복호화하고, 질의 블록(Bq)을 포함하지 않는 데이터 블록들(102)의 식별된 c 합(O)(예컨대, 합(O3))을 리트리브하고, 그리고 질의 블록(Bq)을 획득하기 위해 k개의 데이터 블록들(102)의 식별된 c개의 합(O3)으로부터 복호화된 데이터 블록 합(T3)(302)을 감산한다.
[0062] 도 4c는 위의 언급들에서 제시된 개인 BSR 명령들(200, 200a, 200b, 200c) 중 하나를 실행함으로써 클라이언트 상태(250)를 초기화하기 위한 예시적인 알고리즘(400c)을 제공한다. 도 4d는 질의 블록(Bq)을 리트리브하기 위해 질의(q)를 실행하기 위한 예시적인 알고리즘(400d)을 제공한다. 예시적인 알고리즘(400d)은 클라이언트 디바이스들(120)에서 로컬적으로 의사랜덤 파티셔닝 키들(κ)의 벡터를 생성하기 위한 PRPartition.GenerateKey(n, k+1, S) 단계, 및 의사랜덤 파티셔닝 키들(κ)의 벡터를 사용하여 PIR 스토리지를 의사랜덤하게 파티셔닝하기 위한 후속 PRPartition.GetPartition(κ) 단계를 포함한다.
[0063] 다른 구현들에서, 제한된 의사랜덤 파티션들은 의사랜덤 함수들을 사용하는 불확정적으로 제한된 파티션들로 교체된다. 서브루틴은, m개의 별개의 값들을 만날(encountered) 때까지 연속적인 입력들에 대해 PRF(pseudorandom function)를 평가하기 위해, 임의의 시드/키(κ)가 주어지면, n개의 데이터 블록들(102)의 스토리지 추상화(150)로부터 크기 정렬된 서브젝트(subject)의 m개의 블록들을 추출함으로써 불확정적으로 제한된 파티션들을 생성할 수 있다. 시드/키(κ)에 의해 생성된 세트(Tκ)가 주어지면, 루틴은 Tκ의 r번째 엘리먼트를 임의의 값으로 고정하여, 재배향된 서브세트의 r번째 값이 i이고, 남아있는 m-1개의 엘리먼트들은 랜덤할 수 있다. 이러한 랜덤 제한된 서브세트는, 랜덤(κ)을 샘플링하고, Tκ를 생성하고, r번째 엘리먼트를
Figure 112020131116728-pct00040
개의 파티션들(350)을 나타내는 2-차원 행렬에 고정함으로써 생성될 수 있다. 여기서, 샘플링은 제한된 서브세트로부터 남아있는 미사용 아이템들에 대한 지식만을 요구하는데, 왜냐하면 랜덤하게 생성된 제한된 서브세트가 고정된 엘리먼트를 넘어서 제한된 서브세트와 상호작용하는지 여부를 결정하기 위한 확인만이 요구되기 때문이다. 달리 말하면, 샘플링은, 각각의 남아있는 제한된 서브세트 엘리먼트보다 값이 더 작은 미사용 숫자들의 수에 대한 지식만을 요구한다. 이 지식은 각각의 제한된 서브세트 엘리먼트의 순위에 대응한다. 따라서, 모든 미사용 아이템들 중 제한된 서브세트 및 대응하는 순위만이 명시적으로 스토리지를 요구한다. 따라서, 일단 열 서브세트가 고정되면, 더 이상 사용되지 않는 모든 고정된 아이템들을 반영하기 위해 모든 입력 서브세트 엘리먼트들의 순위가 업데이트되어야 한다. 즉, 모든 제한된 서브세트 엘리먼트들의 순위는 더 작은, 열 서브세트 내의 모든 아이템들만큼 감소되어야 한다. 결과적으로, 불확정적으로 제한된 파티션들을 생성하기 위한 서브-루틴은 순위들을 유지하기 위해 O(k) 스토리지만을 요구한다.
[0064] 불확정적으로 제한된 파티션들을 생성하는 루틴은 키들을 생성하기 위한 키 생성 단계(OCP.GenerateKey), 및 고정된 파티션을 추출하기 위한 파티션 추출 단계(OCP.ExtractPartition)를 포함할 수 있다. 도 4e는 키들을 생성하기 위한 OCP.GenerateKey 단계의 예시적인 알고리즘(400e)을 제공하고, 도 4f는 고정된 파티션을 추출하기 위한 예시적인 알고리즘(400f)을 제공한다. 일부 구현들에서, 데이터 블록(Bq)을 리트리브하기 위해 질의 명령(300)을 실행하기 위한 예시적인 알고리즘(400d)은 대신에, 본 개시내용의 범위를 벗어나지 않고, 의사랜덤 함수들을 사용하는 불확정으로 제한된 파티션들로 의사랜덤 파티션들을 교체할 수 있다. 여기서, 알고리즘(400d)은 PRPartition.GenerateKey(n, k+1, S) 단계(도 4a)를 키들을 생성하기 위한 OCP.GenerateKey 단계(도 4e)로 교체하고, 후속 PRPartition.GetPartition(κ) 단계(도 4b)를 파티션 추출 단계(OCP.ExtractPartition)(도 4f)로 교체하여, PIR 스토리지를 불확정적으로 파티셔닝하고 PRF 키들에 기반하여 고정된 파티션을 추출할 수 있다.
[0065] 도 5는, 신뢰되지 않은 저장 디바이스(114, 150)에 평문으로 저장된 공개적으로 알려진 데이터 블록들(102)을 리트리브하기 위해 PIR(private information retrieval)을 사용하는 방법(500)에 대한 동작들의 예시적인 배열의 흐름도이다. 신뢰되지 않은 저장 디바이스는 분산형 시스템(140) 상에 스토리지 추상화(150)를 구현하는 하나 이상의 저장 디바이스들(114)을 포함할 수 있다. 신뢰되지 않은 저장 디바이스(114, 150)는, 다수의 클라이언트 디바이스들이 액세스하기 위해 이용가능한 공개적으로 알려지고 비암호화된 데이터 블록들을 저장하는 임의의 데이터 스토어 또는 데이터베이스일 수 있다. PIR 양상은, 신뢰되지 않은 저장 디바이스(150) 또는 저장 디바이스(150)를 관리하는 서비스(160)가 저장 디바이스(150)로부터 리트리브된 액세스 패턴들 또는 데이터를 학습하지 않는 것을 보장한다. 각각의 클라이언트 디바이스(120)의 데이터 프로세싱 하드웨어(124)는 메모리 하드웨어(122)에 저장된 명령들을 실행함으로써 방법(500)에 대한 동작들을 실행할 수 있다. 동작(502)에서, 방법(502)은, 신뢰되지 않은 저장 디바이스(150)로부터 데이터 블록들(102)의 c개의 합들(O)을 계산하기 위한 개인 배치 합 리트리벌 명령(200)을 실행함으로써 클라이언트 디바이스(120) 상의 클라이언트 상태(250)를 초기화하는 단계를 포함하고, 각각의 계산된 합(O)은 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 저장되고 정확히 k개의 데이터 블록들(102)의 대응하는 서브세트(S)의 합을 포함한다.
[0066] 동작(504)에서, 방법(500)은, 질의 블록(Bq)을 포함하지 않는 c개의 합들(O) 중 하나를 식별하기 위해 메모리 하드웨어(122)에 저장된 데이터 블록들(102)의 c개의 합들(O) 각각을 반복함으로써 신뢰되지 않은 저장 디바이스(150)에 저장된 질의 블록(Bq)을 리트리브하기 위한 질의 명령(300)을 실행하는 단계를 포함한다. 동작(506)에서, 질의 명령(300)의 실행은 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에, n개의 데이터 블록들의 신뢰되지 않은 저장 디바이스(150)를
Figure 112020131116728-pct00041
개의 파티션들(350) ― 파티션들(350) 각각은 k+1개의 데이터 블록들(102)을 포함함 ― 로 의사랜덤하게 파티셔닝하도록 명령하는 단계, 및
Figure 112020131116728-pct00042
개의 파티션들(350) 각각에 대한 대응하는 암호화된 데이터 블록 합(302)을 결정하기 위해
Figure 112020131116728-pct00043
개의 파티션들(350) 각각에서 k+1개의 데이터 블록들(102)을 합하는 단계를 더 포함하고,
Figure 112020131116728-pct00044
개의 파티션들(350) 중 하나는 질의 블록(Bq)을 포함하지 않는 데이터 블록들의 식별된 c 합(O)을 포함하는 고정된 파티션을 포함한다. 동작(506)은 도 4a 및 4b의 알고리즘들(400a, 400b)을 통해 제한된 의사랜덤 파티션들에 기반하여 또는 도 4e 및 4f의 알고리즘들(400e, 400f)을 통해 불확정적으로 제한된 파티션들에 기반하여 파티션들(350)을 생성할 수 있다.
[0067] 동작(508)에서, 질의 명령(300)의 실행은, 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스로부터 고정된 파티션을 포함하는
Figure 112020131116728-pct00045
개의 파티션들에 대한 암호화된 데이터 블록 합(302)을 리트리브하는 단계를 더 포함한다. 동작(510)에서, 질의 명령(300)의 실행은, 질의 블록(Bq)을 획득하기 위해 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 저장된 데이터 블록들의 식별된 c 합(O)으로부터 암호화된 데이터 블록 합(302)을 복호화 및 감산하는 단계를 더 포함한다. 방법은 질의들(q)의 수가 질의 임계치를 초과하는지 여부를 결정하는 단계, 및 질의들(q)의 수가 질의 임계치를 초과할 때 클라이언트 상태(250)를 재초기화하는 단계를 포함할 수 있다.
[0068] 도 6은 본 문서에 설명된 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스(600)(예컨대, 데이터 프로세싱 하드웨어)의 개략도이다. 컴퓨팅 디바이스(600)는 랩톱들, 데스크톱들, 워크스테이션들, 개인 휴대 정보 단말기들, 서버들, 블레이드 서버들, 메인프레임들 및 그 밖의 다른 적절한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 나타내는 것으로 의도된다. 본원에 도시된 컴포넌트들, 그들의 연결들 및 관계들, 및 그들의 기능들은 단지 예시적인 것으로 여겨지며, 본 문서에 설명되고/되거나 청구된 발명들의 구현들을 제한하려 의도하는 것은 아니다.
[0069] 컴퓨팅 디바이스(600)는 프로세서(610), 메모리(620), 저장 디바이스(630), 메모리(620)에 연결되는 고속 인터페이스/제어기(640) 및 고속 확장 포트들(650), 및 저속 버스(670) 및 저장 디바이스(630)에 연결되는 저속 인터페이스/제어기(660)를 포함한다. 컴포넌트들(610, 620, 630, 640, 650 및 660) 각각은 다양한 버스들을 사용하여 상호 연결되며, 공통 마더보드 상에 또는 적절할 경우 다른 방식들로 장착될 수 있다. 프로세서(610)는 GUI(graphical user interface)에 대한 그래픽 정보를 고속 인터페이스(640)에 연결된 디스플레이(680)와 같은 외부의 입력/출력 디바이스 상에 디스플레이하기 위해 메모리(620) 내에 또는 저장 디바이스(630) 상에 저장된 명령들을 포함하여, 컴퓨팅 디바이스(600) 내에서 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들이, 적절한 경우, 다수의 메모리들 및 메모리의 타입들과 함께 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(600)이 연결될 수 있으며, 각각의 디바이스는 필요한 동작들의 부분들을 (예컨대, 서버 뱅크, 블레이드 서버들의 그룹, 또는 멀티-프로세서 시스템으로서) 제공한다.
[0070] 메모리(620)는 정보를 컴퓨팅 디바이스(600) 내에 비-일시적으로 저장한다. 메모리(620)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(620)는 컴퓨팅 디바이스(600)에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램들(예컨대, 명령들의 시퀀스들) 또는 데이터(예컨대, 프로그램 상태 정보)를 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 비-휘발성 메모리의 예들은 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예컨대, 부팅 프로그램들과 같은, 전형적으로 펌웨어용으로 사용됨)을 포함하지만, 이에 제한되지 않는다. 휘발성 메모리의 예들은 RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory) 및 디스크들 또는 테이프들을 포함하지만, 이에 제한되지 않는다.
[0071] 저장 디바이스(630)(예컨대, 메모리 하드웨어)는, 컴퓨팅 디바이스(600)에 대한 대용량 스토리지를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(630)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(630)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성들 내의 디바이스들을 포함하는 디바이스들의 어레이일 수 있다. 부가적인 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어에서 유형적으로 구현된다. 컴퓨터 프로그램 제품은 실행될 때 위에서 설명한 것들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 메모리(620), 저장 디바이스(630), 또는 프로세서(610) 상의 메모리와 같은 컴퓨터- 또는 머신-판독 가능 매체이다.
[0072] 고속 제어기(640)는 컴퓨팅 디바이스(600)의 대역폭 집약적 동작들을 관리하는 반면, 저속 제어기(660)는 보다 낮은 대역폭 집약적 동작들을 관리한다. 이러한 임무들의 할당은 예시적일 뿐이다. 일부 구현들에서, 고속 제어기(640)는 메모리(620), 디스플레이(680)(예컨대, 그래픽 프로세서 또는 가속기를 통해), 및 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(650)에 연결된다. 일부 구현들에서, 저속 제어기(660)는 저장 디바이스(630) 및 저속 확장 포트(670)에 커플링된다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(670)는 키보드, 포인팅 디바이스, 스캐너, 또는 예컨대 네트워크 어댑터를 통해 스위치 또는 라우터와 같은 네트워킹 디바이스와 같은 하나 이상의 입력/출력 디바이스들에 커플링될 수 있다.
[0073] 컴퓨팅 디바이스(600)는 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 이것은 표준 서버(600a)로서 또는 이러한 서버들(600a)의 그룹에서 여러 번, 랩톱 컴퓨터(600b)로서 또는 랙 서버 시스템(600c)의 일부로서 구현될 수 있다.
[0074] 소프트웨어 애플리케이션(즉, 소프트웨어 리소스)은 컴퓨팅 디바이스로 하여금 작업을 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 일부 예들에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로 지칭될 수 있다. 예시적인 애플리케이션들은 시스템 진단 애플리케이션들, 시스템 관리 애플리케이션들, 시스템 유지 보수 애플리케이션들, 워드 프로세싱 애플리케이션들, 스프레드시트(spreadsheet) 애플리케이션들, 메시징 애플리케이션들, 미디어 스트리밍 애플리케이션들, 소셜 네트워킹 애플리케이션들 및 게임 애플리케이션들을 포함하지만, 이에 제한되지는 않는다.
[0075] 본원에 설명된 시스템들 및 기법들의 다양한 구현들은 디지털 전자 및/또는 광학 회로, 집적 회로, 특별히 설계된 ASIC들(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고, 이들로 데이터 및 명령들을 송신하도록 커플링된, 특수 목적 또는 범용일 수 있는, 적어도 하나의 프로그래밍 가능 프로세서를 포함하는 프로그래밍 가능 시스템 상에서 실행 가능한 그리고/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0076] 이러한 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 또한 알려짐)은 프로그래밍 가능 프로세서를 위한 머신 명령들을 포함하고, 상위 레벨 절차 및/또는 객체-지향형 프로그래밍 언어로 및/또는 어셈블리/머신 언어로 구현될 수 있다. 본원에서 사용되는 것으로, "머신-판독 가능 매체" 및 "컴퓨터-판독 가능 매체"라는 용어들은 머신 명령들 및/또는 데이터를 프로그래밍 가능 프로세서에 제공하는 데 사용되는, 머신 명령들을 머신 판독 가능 신호로서 수신하는 머신-판독 가능 매체를 포함하여, 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독 가능 매체, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리, PLD(Programmable Logic Device))들을 지칭한다. "머신-판독 가능 신호"라는 용어는 머신 명령들 및/또는 데이터를 프로그래밍 가능 프로세서에 제공하는 데 사용되는 임의의 신호를 지칭한다.
[0077] 본 명세서에 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작하고 출력을 발생시킴으로써 하나 이상의 컴퓨터 프로그램들을 실행하여 기능들을 수행하는 하나 이상의 프로그래밍 가능 프로세서들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한 특수 목적 로직 회로, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서 범용 마이크로프로세서 및 특수 목적 마이크로 프로세서 둘 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대 자기, 광자기 디스크들 또는 광학 디스크들을 포함하거나, 또는 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하기 위해, 또는 그 둘 모두를 위해 동작 가능하게 커플링될 것이다. 그러나, 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 예로서 반도체 메모리 디바이스들, 예컨대 EPROM, EEPROM 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대 내부 하드 디스크들 또는 착탈식 디스크들; 광자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 포함하여, 모든 형태들의 비-휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나, 특수 목적 로직 회로에 포함될 수 있다.
[0078] 사용자와의 상호작용을 제공하기 위해, 본 개시내용의 하나 이상의 양태들은 디스플레이 디바이스, 예컨대 CRT(cathode ray tube), LCD(liquid crystal device) 모니터 또는 사용자에게 정보를 디스플레이하기 위한 터치 스크린 및 임의로 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스, 예컨대, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들이 사용되어 마찬가지로 사용자와의 상호-작용을 제공할 수 있고; 예컨대, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예컨대 시각적 피드백, 청각 피드백 또는 촉각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하여, 임의의 형태로 수신될 수 있다. 부가적으로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 그 디바이스로부터 문서들을 수신함으로써; 예컨대, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써 사용자와 상호작용할 수 있다.
[0079] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 개시내용의 사상 및 범위에서 벗어나지 않고서, 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 다른 구현들은 다음의 청구항들의 범위 내에 있다.

Claims (22)

  1. 신뢰되지 않은(untrusted) 저장 디바이스 상에서 데이터 블록들을 불확정적으로 리트리브(retrieve)하기 위한 방법(500)으로서,
    클라이언트 디바이스(120)의 데이터 프로세싱 하드웨어(124)에 의해, 신뢰되지 않은 저장 디바이스(150)로부터의 데이터 블록들(102)의 c개의 합들을 계산하기 위한 개인 배치 합(private batched sum) 리트리브 명령(200)을 실행함으로써 상기 클라이언트 디바이스들(120) 상의 클라이언트 상태(250)를 초기화하는 단계 ― 각각의 계산된 합은 상기 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 저장되고 k개의 데이터 블록들(102)의 대응하는 서브세트(S)의 합을 포함함 ―;
    상기 데이터 프로세싱 하드웨어(124)에 의해, 상기 신뢰되지 않은 저장 디바이스(150)에 저장된 질의 블록(query block)(Bq)을 리트리브하기 위한 질의 명령(300)을 실행하는 단계;
    상기 데이터 프로세싱 하드웨어(124)에 의해, 질의들(q)의 수가 질의 임계치를 초과하는지 여부를 결정하는 단계; 및
    상기 데이터 프로세싱 하드웨어(124)에 의해, 상기 질의들(q)의 수가 상기 질의 임계치를 초과할 때, 상기 클라이언트 상태(250)를 재초기화하는 단계
    를 포함하고,
    상기 질의 명령(300)을 실행하는 단계는,
    상기 메모리 하드웨어(122)에 저장된 데이터 블록들(102)의 상기 c개의 합들 각각에 대해, 상기 c개의 합들 중 상기 질의 블록(Bq)을 포함하지 않는 합을 식별하는 것을 반복하고;
    n개의 데이터 블록들의 상기 신뢰되지 않은 저장 디바이스(150)를
    Figure 112021057615438-pct00046
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하도록 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 명령하고 ― 상기 파티션들(350) 각각은 k+1개의 데이터 블록들(102)을 포함함 ―, 그리고 상기
    Figure 112021057615438-pct00047
    개의 파티션들(350) 각각에 대한 대응하는 암호화된 데이터 블록 합(302)을 결정하기 위해 상기
    Figure 112021057615438-pct00048
    개의 파티션들(350) 각각에서 k+1개의 데이터 블록들(102)을 합하고 ― 상기
    Figure 112021057615438-pct00049
    개의 파티션들(350) 중 하나는 상기 질의 블록(Bq)을 포함하지 않는, 데이터 블록들의 식별된 c 합을 포함하는 고정된 파티션을 포함함 ―;
    상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스로부터 상기 고정된 파티션을 포함하는 상기
    Figure 112021057615438-pct00050
    개의 파티션들에 대한 상기 암호화된 데이터 블록 합(302)을 리트리브하고; 그리고
    상기 질의 블록(Bq)을 획득하기 위해, 상기 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 저장된 상기 데이터 블록들의 식별된 c 합으로부터 상기 암호화된 데이터 블록 합(302)을 복호화 및 감산함으로써
    수행되는,
    방법(500).
  2. 제1항에 있어서,
    상기 데이터 블록들의 c개의 합들을 계산하기 위한 상기 개인 배치 합 리트리브 명령(200)을 실행하는 것은:
    상기 신뢰되지 않은 저장 디바이스(150)에 저장된 모든 각각의 데이터 블록(102)을 상기 클라이언트 디바이스들(120)로 스트리밍하는 것 ― 상기 신뢰되지 않은 저장 디바이스(150)는 n개의 데이터 블록들을 저장함 ―;
    상기 신뢰되지 않은 저장 디바이스(150)로부터 스트리밍된, 선택된 데이터 블록들(102)을 데이터 블록들의 c개의 서브세트들(S) 중 대응하는 서브세트들(S)에 할당하는 것; 및
    상기 대응하는 서브세트(S)에 할당된 상기 선택된 데이터 블록들(102)을 합함으로써 데이터 블록들의 각 c 합을 계산하는 것을 포함하는,
    방법(500).
  3. 제1항에 있어서,
    상기 데이터 블록들의 c개의 합들을 계산하기 위한 상기 개인 배치 합 리트리브 명령(200)을 실행하는 것은, 상기 데이터 블록들(102)의 c개의 합들을 계산하기 위해, 상기 신뢰되지 않은 저장 디바이스(150)로부터 m개의 데이터 블록들(102)을 상기 메모리 하드웨어(122) 상의 저장을 위해 다운로드하는 것을 포함하는,
    방법(500).
  4. 제3항에 있어서,
    상기 클라이언트 디바이스(120)에 의해 다운로드된 m개의 데이터 블록들(102)의 수는 상기 k개의 데이터 블록들(102)의 수와 상기 데이터 블록들(102)의 c개의 합들의 수 간의 곱(product)과 동일한,
    방법(500).
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 데이터 블록들(102)의 c개의 합들을 계산하기 위한 상기 개인 배치 합 리트리브 명령(200)을 실행하는 것은:
    n개의 데이터 블록들(102)의 상기 신뢰되지 않은 저장 디바이스(150)를 k개의 버킷들(260)로 파티셔닝하는 것; 및
    계산될 데이터 블록들(102)의 각 c 합에 대해, 데이터 블록들(102)의 대응하는 합을 계산하기 위해, 상기 k개의 버킷들(160) 각각으로부터 t개의 데이터 블록들(102)을 상기 메모리 하드웨어(122) 상의 저장을 위해 다운로드하는 것을 포함하는,
    방법(500).
  6. 제5항에 있어서,
    상기 계산될 데이터 블록들(102)의 각 c 합에 대해, 상기 k개의 버킷들(260) 각각으로부터 t개의 데이터 블록들(102)을 다운로드하는 것은:
    상기 k개의 버킷들(260) 각각으로부터 상기 t개의 데이터 블록들(102)을 리트리브하기 위해 상기 클라이언트 디바이스들(120)로부터의 개인 정보 리트리브 요청(264)을 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 전송하는 것 ― 상기 개인 정보 요청(264)은, 상기 서비스(160)로 하여금, 상기 신뢰되지 않은 저장 디바이스(150)에 대한 대응하는 개인 정보 리트리브 결과로서 각각의 t 데이터 블록(102)을 암호화 및 저장하게 함 ―;
    덧셈 동형 암호화들(additively homomorphic encryptions)의 벡터(266)를 생성하는 것;
    상기 덧셈 동형 암호화들의 벡터(266)를 상기 신뢰되지 않은 저장 디바이스(150)에 업로드하는 것 ― 상기 덧셈 동형 암호화들의 벡터(266)는, 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)로 하여금, 상기 덧셈 동형 암호화들의 벡터(266)를 사용하여 상기 개인 정보 리트리브 결과들에 대해 덧셈 동형 암호화 계산(268)을 실행하게 하고, 상기 덧셈 동형 암호화 계산(268)은 데이터 블록들의 대응하는 c 합에 대한 암호문 값(ciphertext value)에 대응함 ―; 및
    상기 데이터 블록들(102)의 대응하는 c 합을 획득하기 위해, 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 상기 서비스(160)로부터 상기 암호문을 수신 및 복호화하는 것을 포함하는,
    방법(500).
  7. 제6항에 있어서,
    상기 덧셈 동형 암호화 계산(268)은 내적(dot production) 계산을 포함하는,
    방법(500).
  8. 제5항에 있어서,
    t는 1과 동일한,
    방법(500).
  9. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 클라이언트 디바이스들(120) 상의 상기 클라이언트 상태(250)를 초기화하는 단계는, 상기 데이터 블록들(102)의 c개의 합들을 계산하기 전에, k개의 데이터 블록들(102)의 각 서브세트(S)에 대한 의사랜덤 순열(pseudorandom permutation)(π)을 생성하는 단계를 포함하는,
    방법(500).
  10. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 n개의 데이터 블록들의 상기 신뢰되지 않은 저장 디바이스(150)를
    Figure 112021057615438-pct00051
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하도록 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 명령하는 것은:
    n개의 데이터 블록들의 상기 신뢰되지 않은 저장 디바이스(150)를
    Figure 112021057615438-pct00052
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하기 위한 명령들을 포함하는 의사랜덤 순열 파티셔닝 키들(κ)의 벡터를 생성하는 것; 및
    상기 의사랜덤 순열 파티셔닝 키들(κ)의 벡터를 포함하는 요청(320)을 상기 클라이언트 디바이스(120)로부터 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 전송하는 것을 포함하고,
    상기 요청(320)은, 상기 서비스(160)로 하여금, n개의 데이터 블록들(102)의 상기 신뢰되지 않은 저장 디바이스(150)를 상기
    Figure 112021057615438-pct00053
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하게 하고, 이때 상기
    Figure 112021057615438-pct00054
    개의 파티션들(350) 중 하나는, 상기 질의 블록(Bq)을 포함하지 않는, 데이터 블록들(102)의 식별된 c 합을 포함하는 상기 고정된 파티션을 포함하는,
    방법(500).
  11. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 파티션들(350)은 2-차원 행렬을 포함하고, 상기 2-차원 행렬의 각 행(row)은 대응하는 파티션을 포함하고 각 열(column)은 각 파티션의 상기 k+1개의 블록들(102) 중 대응하는 블록에 대해 증분적으로 생성되는 의사랜덤 순열을 포함하는,
    방법(500).
  12. 신뢰되지 않은 저장 디바이스 상에서 데이터 블록들을 불확정적으로 리트리브하기 위한 시스템(600)으로서,
    클라이언트 디바이스들(120)의 데이터 프로세싱 하드웨어(124);
    데이터 프로세싱 하드웨어(124)와 통신하는 상기 클라이언트 디바이스들(120)의 메모리 하드웨어(122)를 포함하고,
    상기 메모리 하드웨어(122)는, 상기 데이터 프로세싱 하드웨어(124)에 의해 실행될 때, 상기 데이터 프로세싱 하드웨어(124)로 하여금:
    신뢰되지 않은 저장 디바이스(150)로부터의 데이터 블록들(102)의 c개의 합들을 계산하기 위한 개인 배치 합 리트리브 명령(200)을 실행함으로써 상기 클라이언트 디바이스들(120) 상의 클라이언트 상태(250)를 초기화하는 동작 ― 각각의 계산된 합은 상기 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 저장되고 k개의 데이터 블록들(102)의 대응하는 서브세트(S)의 합을 포함함 ―;
    상기 신뢰되지 않은 저장 디바이스(150)에 저장된 질의 블록(Bq)을 리트리브하기 위한 질의 명령(300)을 실행하는 동작;
    질의들(q)의 수가 질의 임계치를 초과하는지 여부를 결정하는 동작; 및
    상기 질의들(q)의 수가 상기 질의 임계치를 초과할 때, 상기 클라이언트 상태(250)를 재초기화하는 동작
    을 포함하는 동작들을 수행하게 하는 명령들을 저장하고 있고,
    상기 신뢰되지 않은 저장 디바이스(150)에 저장된 질의 블록(Bq)을 리트리브하기 위한 질의 명령(300)을 실행하는 동작은,
    상기 메모리 하드웨어(122)에 저장된 데이터 블록들(102)의 상기 c개의 합들 각각에 대해, 상기 c개의 합들 중 상기 질의 블록(Bq)을 포함하지 않는 합을 식별하는 것을 반복하고;
    n개의 데이터 블록들의 상기 신뢰되지 않은 저장 디바이스(150)를
    Figure 112021057615438-pct00055
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하도록 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 명령하고 ― 상기 파티션들(350) 각각은 k+1개의 데이터 블록들(102)을 포함함 ―, 그리고 상기
    Figure 112021057615438-pct00056
    개의 파티션들(350) 각각에 대한 대응하는 암호화된 데이터 블록 합(302)을 결정하기 위해 상기
    Figure 112021057615438-pct00057
    개의 파티션들(350) 각각에서 k+1개의 데이터 블록들(102)을 합하고 ― 상기
    Figure 112021057615438-pct00058
    개의 파티션들(350) 중 하나는 상기 질의 블록(Bq)을 포함하지 않는, 데이터 블록들의 식별된 c 합을 포함하는 고정된 파티션을 포함함 ―;
    상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 상기 서비스로부터 상기 고정된 파티션을 포함하는 상기
    Figure 112021057615438-pct00059
    개의 파티션들에 대한 상기 암호화된 데이터 블록 합(302)을 리트리브하고; 그리고
    상기 질의 블록(Bq)을 획득하기 위해, 상기 클라이언트 디바이스(120)의 메모리 하드웨어(122)에 저장된 상기 데이터 블록들의 식별된 c 합으로부터 상기 암호화된 데이터 블록 합(302)을 복호화 및 감산함으로써 수행되는,
    시스템(600).
  13. 제12항에 있어서,
    상기 데이터 블록들의 c개의 합들을 계산하기 위해 상기 개인 배치 합 리트리브 명령(200)을 실행하는 것은:
    상기 신뢰되지 않은 저장 디바이스(150)에 저장된 모든 각각의 데이터 블록(102)을 상기 클라이언트 디바이스들(120)로 스트리밍하는 것 ― 상기 신뢰되지 않은 저장 디바이스(150)는 n개의 데이터 블록들을 저장함 ―;
    상기 신뢰되지 않은 저장 디바이스(150)로부터 스트리밍된 선택된 데이터 블록들(102)을 데이터 블록들의 c개의 서브세트들(S) 중 대응하는 서브세트들(S)에 할당하는 것; 및
    상기 대응하는 서브세트(S)에 할당된 상기 선택된 데이터 블록들(102)을 합함으로써 데이터 블록들의 각 c 합을 계산하는 것을 포함하는,
    시스템(600).
  14. 제12항에 있어서,
    상기 데이터 블록들의 c개의 합들을 계산하기 위한 상기 개인 배치 합 리트리브 명령(200)을 실행하는 것은, 상기 데이터 블록들(102)의 c개의 합들을 계산하기 위해, 상기 신뢰되지 않은 저장 디바이스(150)로부터 m개의 데이터 블록들(102)을 상기 메모리 하드웨어(122) 상의 저장을 위해 다운로드하는 것을 포함하는,
    시스템(600).
  15. 제14항에 있어서,
    상기 클라이언트 디바이스(120)에 의해 다운로드된 m개의 데이터 블록들(102)의 수는 상기 k개의 데이터 블록들(102)의 수와 데이터 블록들(102)의 c개의 합들의 수 간의 곱과 동일한,
    시스템(600).
  16. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 데이터 블록들(102)의 c개의 합들을 계산하기 위한 상기 개인 배치 합 리트리브 명령(200)을 실행하는 것은:
    n개의 데이터 블록들(102)의 상기 신뢰되지 않은 저장 디바이스(150)를 k개의 버킷들(260)로 파티셔닝하는 것; 및
    계산될 데이터 블록들(102)의 각 c 합에 대해, 데이터 블록들(102)의 대응하는 합을 계산하기 위해, 상기 k개의 버킷들(160) 각각으로부터 t개의 데이터 블록들(102)을 상기 메모리 하드웨어(122) 상의 저장을 위해 다운로드하는 것을 포함하는,
    시스템(600).
  17. 제16항에 있어서,
    상기 계산될 데이터 블록들(102)의 각 c 합에 대해, 상기 k개의 버킷들(260) 각각으로부터 t개의 데이터 블록들(102)을 다운로드하는 것은:
    상기 k개의 버킷들(260) 각각으로부터 상기 t개의 데이터 블록들(102)을 리트리브하기 위해 상기 클라이언트 디바이스들(120)로부터의 개인 정보 리트리브 요청(264)을 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 전송하는 것 ― 상기 개인 정보 요청(264)은, 상기 서비스(160)로 하여금, 상기 신뢰되지 않은 저장 디바이스(150)에 대한 대응하는 개인 정보 리트리브 결과로서 각각의 t 데이터 블록(102)을 암호화 및 저장하게 함 ―;
    덧셈 동형 암호화들의 벡터(266)를 생성하는 것;
    상기 덧셈 동형 암호화들의 벡터(266)를 상기 신뢰되지 않은 저장 디바이스(150)에 업로드하는 것 ― 상기 덧셈 동형 암호화들의 벡터(266)는, 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)로 하여금, 상기 덧셈 동형 암호화들의 벡터(266)를 사용하여 상기 개인 정보 리트리브 결과들에 대해 덧셈 동형 암호화 계산(268)을 실행하게 하고, 상기 덧셈 동형 암호화 계산(268)은 데이터 블록들의 대응하는 c 합에 대한 암호문 값에 대응함 ―; 및
    상기 데이터 블록들(102)의 대응하는 c 합을 획득하기 위해, 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)로부터 상기 암호문을 수신 및 복호화하는 것을 포함하는,
    시스템(600).
  18. 제17항에 있어서,
    상기 덧셈 동형 암호화 계산(268)은 내적 계산을 포함하는,
    시스템(600).
  19. 제16항에 있어서,
    t는 1과 동일한,
    시스템(600).
  20. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 클라이언트 디바이스들(120) 상의 상기 클라이언트 상태(250)를 초기화하는 동작은, 상기 데이터 블록들(102)의 c개의 합들을 계산하기 전에, k개의 데이터 블록들(102)의 각 서브세트(S)에 대한 의사랜덤 순열(π)을 생성하는 동작을 포함하는,
    시스템(600).
  21. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 n개의 데이터 블록들의 상기 신뢰되지 않은 저장 디바이스(150)를
    Figure 112021057615438-pct00060
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하도록 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 명령하는 것은:
    n개의 데이터 블록들의 상기 신뢰되지 않은 저장 디바이스(150)를
    Figure 112021057615438-pct00061
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하기 위한 명령들을 포함하는 의사랜덤 순열 파티셔닝 키들(κ)의 벡터를 생성하는 것; 및
    상기 의사랜덤 순열 파티셔닝 키들(κ)의 벡터를 포함하는 요청(320)을 상기 클라이언트 디바이스(120)로부터 상기 신뢰되지 않은 저장 디바이스(150)를 관리하는 서비스(160)에 전송하는 것을 포함하고,
    상기 요청(320)은, 상기 서비스(160)로 하여금, n개의 데이터 블록들(102)의 상기 신뢰되지 않은 저장 디바이스(150)를 상기
    Figure 112021057615438-pct00062
    개의 파티션들(350)로 의사랜덤하게 파티셔닝하게 하고, 이때 상기
    Figure 112021057615438-pct00063
    개의 파티션들(350) 중 하나는, 상기 질의 블록(Bq)을 포함하지 않는, 데이터 블록들(102)의 식별된 c 합을 포함하는 상기 고정된 파티션을 포함하는,
    시스템(600).
  22. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 파티션들(350)은 2-차원 행렬을 포함하고, 상기 2-차원 행렬의 각 행은 대응하는 파티션을 포함하고 각 열은 각 파티션에서 상기 k+1개의 블록들(102) 중 대응하는 블록에 대해 증분적으로 생성되는 의사랜덤 순열을 포함하는,
    시스템(600).
KR1020207034943A 2018-05-07 2018-05-07 저선형 공개-키 동작들을 사용하는 개인 정보 리트리벌 KR102308066B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/031369 WO2019216872A1 (en) 2018-05-07 2018-05-07 Private information retrieval with sublinear public-key operations

Publications (2)

Publication Number Publication Date
KR20200142588A KR20200142588A (ko) 2020-12-22
KR102308066B1 true KR102308066B1 (ko) 2021-09-30

Family

ID=62245440

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207034943A KR102308066B1 (ko) 2018-05-07 2018-05-07 저선형 공개-키 동작들을 사용하는 개인 정보 리트리벌

Country Status (6)

Country Link
US (2) US11593516B2 (ko)
EP (1) EP3776317B1 (ko)
JP (1) JP7000601B2 (ko)
KR (1) KR102308066B1 (ko)
CN (1) CN112400171B (ko)
WO (1) WO2019216872A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021087073A1 (en) 2019-10-30 2021-05-06 Via Science, Inc. Secure outsourcing of a multiplication
CN115269938B (zh) * 2022-09-22 2023-02-14 深圳市洞见智慧科技有限公司 基于同态加密的关键词匿踪查询方法、系统及相关装置
US11977657B1 (en) * 2023-02-22 2024-05-07 Lorica Cybersecurity Inc. Method and system for confidential repository searching and retrieval

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170031627A1 (en) 2015-07-31 2017-02-02 International Business Machines Corporation Proxying slice access requests during a data evacuation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5890151A (en) * 1997-05-09 1999-03-30 International Business Machines Corporation Method and system for performing partial-sum queries on a data cube
US7620625B2 (en) * 2004-05-20 2009-11-17 Ntt Docomo, Inc. Method and apparatus for communication efficient private information retrieval and oblivious transfer
JP2006210964A (ja) * 2005-01-24 2006-08-10 National Institute Of Information & Communication Technology エルガマル暗号による情報授受伝達方法及び装置
JP4837362B2 (ja) * 2005-10-31 2011-12-14 株式会社エヌ・ティ・ティ・データ データ検索システム、情報処理装置、データ検索方法、及び、プログラム。
US8880905B2 (en) * 2010-10-27 2014-11-04 Apple Inc. Methods for processing private metadata
US8635465B1 (en) * 2012-03-28 2014-01-21 Emc Corporation Counter-based encryption of stored data blocks
CN102629924A (zh) * 2012-03-30 2012-08-08 上海交通大学 一种多服务器环境下的隐私信息检索方法
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
WO2015152935A1 (en) * 2014-04-04 2015-10-08 Hewlett-Packard Development Company, L.P. Storing and retrieving ciphertext in data storage
US10268834B2 (en) * 2014-06-26 2019-04-23 Telefonaktiebolaget Lm Ericsson (Publ) Privacy-preserving querying mechanism on privately encrypted data on semi-trusted cloud
US9946719B2 (en) * 2015-07-27 2018-04-17 Sas Institute Inc. Distributed data set encryption and decryption
US10789207B2 (en) * 2015-07-27 2020-09-29 Sas Institute Inc. Distributed data storage grouping
US10229285B2 (en) * 2016-03-22 2019-03-12 International Business Machines Corporation Privacy enhanced central data storage
CN107992582B (zh) * 2017-12-07 2021-01-29 深圳先达数据信息技术有限公司 一种基于锯齿解码的私有信息检索方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170031627A1 (en) 2015-07-31 2017-02-02 International Business Machines Corporation Proxying slice access requests during a data evacuation

Also Published As

Publication number Publication date
JP7000601B2 (ja) 2022-01-19
CN112400171A (zh) 2021-02-23
CN112400171B (zh) 2024-04-09
EP3776317A1 (en) 2021-02-17
KR20200142588A (ko) 2020-12-22
JP2021521490A (ja) 2021-08-26
US20210192076A1 (en) 2021-06-24
US11593516B2 (en) 2023-02-28
WO2019216872A1 (en) 2019-11-14
US20230185960A1 (en) 2023-06-15
EP3776317B1 (en) 2022-07-06

Similar Documents

Publication Publication Date Title
EP3586260B1 (en) Encrypting data records and processing encrypted records without exposing plaintext
CN107430668B (zh) 用于个人设备和云数据的安全分布式备份
JP7124182B2 (ja) 差分プライバシーを備える忘却型アクセス
US20230185960A1 (en) Private Information Retrieval with Sublinear Public-Key Operations
JP2014515521A (ja) 分散されたクラウドコンピューティング環境におけるデータ安全性を達成するための方法および装置
US11599806B2 (en) Depth-constrained knowledge distillation for inference on encrypted data
Pitchai et al. Searchable encrypted data file sharing method using public cloud service for secure storage in cloud computing
CN110622142B (zh) 高效不经意的云存储
Lam et al. Gpu-based private information retrieval for on-device machine learning inference
JP7212179B2 (ja) Rlwe暗号文の圧縮および忘却型展開
EP3616068B1 (en) Efficient oblivious permutation
Mishra et al. Improved cloud security approach with threshold cryptography
US20240137205A1 (en) Efficient random masking of values while maintaining their sign under fully homomorphic encryption (fhe)
US20220376888A1 (en) Efficiently batching pre-encrypted data for homomorphic inference

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant