KR20210104653A - 다수 당사자 도달 및 빈도 추정 보안화 - Google Patents

다수 당사자 도달 및 빈도 추정 보안화 Download PDF

Info

Publication number
KR20210104653A
KR20210104653A KR1020217011133A KR20217011133A KR20210104653A KR 20210104653 A KR20210104653 A KR 20210104653A KR 1020217011133 A KR1020217011133 A KR 1020217011133A KR 20217011133 A KR20217011133 A KR 20217011133A KR 20210104653 A KR20210104653 A KR 20210104653A
Authority
KR
South Korea
Prior art keywords
processing system
data processing
vector
data
encrypted
Prior art date
Application number
KR1020217011133A
Other languages
English (en)
Other versions
KR102569373B1 (ko
Inventor
그레이그 라이트
벤자민 알. 크루터
제임스 로버트 콜러
아서 아선시온
이브제니 스콜트소브
로라 그레이스 북
셍 마
지아유 펭
시첸 황
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020237027886A priority Critical patent/KR20230124111A/ko
Publication of KR20210104653A publication Critical patent/KR20210104653A/ko
Application granted granted Critical
Publication of KR102569373B1 publication Critical patent/KR102569373B1/ko

Links

Images

Classifications

    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/062Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Abstract

네트워킹 환경에서 디바이스 식별자 및 속성의 카운트 및 빈도를 결정하기 위해 최소 증가 카운팅 블룸 필터를 생성하기 위한 시스템 및 방법이 개시된다. 시스템은 네트워크의 디바이스와 연관된 디바이스 식별자 및 속성을 포함한 데이터 레코드 세트를 유지할 수 있다. 시스템은 카운터 레지스터에 대응하는 좌표를 포함하는 벡터를 생성할 수 있다. 시스템은 카운팅 블룸 필터를 업데이트하기 위해 해시 함수를 식별할 수 있다. 시스템은 카운터 레지스터 세트를 가리키는 인덱스 값을 추출하기 위해 데이터 레코드를 해싱할 수 있다. 시스템은 카운터 레지스터의 최소값에 대응하는 최소 증가 카운팅 블룸 필터의 포지션을 증가시킬 수 있다. 시스템은 공개 키를 포함하는 집합된 공개 키를 얻을 수 있다. 시스템은 집합된 공유 키를 사용하여 카운터 레지스터를 암호화하여 암호화된 벡터를 생성할 수 있다. 시스템은 암호화된 벡터를 네트워크로 연결된 작업자 컴퓨팅 디바이스에 전송할 수 있다.

Description

다수 당사자 도달 및 빈도 추정 보안화
관련 출원에 대한 상호 참조
본 출원은
"SECURE MULTI-PARTY REACH AND FREQUENCY ESTIMATION"이라는 명칭의 2020년 2월 14일 출원된 미국 특허 가출원 번호 제62/977,141호;
"CASCADING LEGIONS CARDINALITY ESTIMATOR"라는 명칭의 2020년 2월 26일 출원된 미국 특허 가출원 번호 제62/981,960호;
"EFFICIENT METHOD FOR DIFFERENTIALLY PRIVATE CARDINALITY ESTIMATION"이라는 명칭의 2020년 3월 10일 출원된 미국 특허 가출원 번호 제62/987,645호; 및
"PRIVACY PRESERVING SECURE CARDINALITY AND FREQUENCY ESTIMATION"이라는 명칭의 2020년 3월 30일 출원된 미국 특허 가출원 번호 제63/002,138호에 대해 우선권을 주장하며,
그 각각의 내용은 그 전체가 본원에 참고로서 통합된다.
많은 경우에, 컴퓨팅 및 데이터 분석 시스템은 데이터 분석 또는 처리의 일부로서 대규모 데이터 세트의 교차 또는 결합을 결정할 수 있다. 여러 소스에 분산된 대규모 데이터 세트의 통합, 교차 또는 빈도를 계산하려면 일반적으로 여러 소스 간에 대규모 데이터 세트에 대한 정보를 공유해야 한다. 각 소스의 정보는 프라이버시 또는 보호된 정보를 포함할 수 있으며, 이러한 정보를 공유하면 프라이버시 및 보안에 부정적인 영향을 미칠 수 있다.
본 명세서에서 논의된 시스템 및 방법은 암호화된 확률 데이터 구조 및 준동형 암호화 체계의 사용을 통해 데이터 및 데이터 카운팅 시스템의 향상된 보안 및 프라이버시를 제공할 수 있다. 많은 구현에서, 최소 증가 카운팅 블룸 필터, 계단식 군단 행렬, 연속 군단 데이터 구조 등과 같은 확률 데이터 구조가 생성되어 네트워킹 환경에서 디바이스 식별자 및 속성의 카운트와 빈도를 결정할 수 있다. 네트워크의 디바이스와 관련된 디바이스 식별자 및 속성을 포함하는 데이터 레코드 세트가 유지될 수 있으며, 카운터 레지스터에 대응할 수 있는 좌표, 포지션 또는 값을 포함하는 확률 데이터 구조가 생성될 수 있다. 해시 함수를 사용하여 식별될 수 있는 데이터 구조를 업데이트할 수 있으며, 데이터 레코드를 해시하여 인덱스 값, 포지션 값 또는 확률 데이터 구조의 하나 이상의 포지션에 대한 다른 포인터 또는 식별자를 추출할 수 있다. 데이터 구조의 포지션은 증가, 업데이트, 플립핑, 치환 또는 변경될 수 있다. 공개 키를 포함하는 집합된 공개 키가 획득될 수 있으며, 데이터 구조는 암호화된 벡터를 생성하기 위해 상기 집합된 공유 키를 사용하여 암호화될 수 있으며, 암호화된 벡터는 네트워크로 연결된 작업자 컴퓨팅 디바이스로 전송된다.
이러한 시스템 및 방법은 확률 데이터 구조를 작업자 컴퓨팅 디바이스로 전송할 수 있으며, 이는 데이터 구조를 생성하는데 사용되는 데이터 레코드보다 훨씬 더 작을 수 있으며, 그렇지 않으면 데이터 레코드는 하나 이상의 작업자 컴퓨팅 디바이스로 전송된다. 이는 네트워크를 통해 전송되는 데이터의 양과 각 작업자 컴퓨팅 디바이스에서 처리하는 데이터의 양을 줄일 수 있으며, 이는 다른 다중 멤버십 비교 및 계산 시스템에 비해 상당한 개선이다. 또한 추정된 히스토그램을 사용함으로써, 이 기술 솔루션의 양태는 네트워크를 통해 보호된 또는 프라이버시 정보를 전송하지 않고도 클라이언트 식별자 속성 데이터 빈도의 정확한 추정을 제공할 수 있다. 이는 식별자 서버가 연관 디바이스의 수 또는 속성을 노출하지 않도록 보호할 뿐만 아니라 클라이언트 디바이스가 보호된 또는 프라이버시 정보를 노출하지 않도록 보호하여, 네트워킹 시스템의 보안 및 프라이버시 보호를 크게 향상시킨다.
본 기술 솔루션의 적어도 하나의 양태는 안전하고 계산적으로 효율적인 전송을 위한 목표 기준을 만족하는 속성을 갖는 식별자 세트를 표현하는 암호화된 확률 데이터 구조를 생성하는 방법에 관한 것이다. 방법은 하나 이상의 프로세서 및 메모리를 포함하는 데이터 프로세싱 시스템에 의해 실행 또는 수행될 수 있다. 방법은 데이터베이스에 디바이스 식별자 세트를 유지하는 단계를 포함할 수 있다. 디바이스 식별자 세트 각각은 디바이스 속성을 포함할 수 있다. 방법은 디바이스 식별자 세트 및 해시 함수를 사용하여 확률 데이터 구조를 생성하는 단계를 포함할 수 있다. 방법은 암호화된 확률 데이터 구조를 생성하기 위해 확률 데이터 구조를 암호화하는 단계를 포함할 수 있고, 암호화된 확률 데이터 구조는 제2 암호화된 확률 데이터 구조와 결합될 수 있도록 한다. 방법은 암호화된 확률 데이터 구조를 작업자 컴퓨팅 디바이스에 전송하는 단계를 포함할 수 있다.
일부 구현예에서, 방법은 제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 수신하는 단계를 포함할 수 있다. 일부 구현예에서, 방법은 디바이스 식별자 세트의 멤버로서 제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 저장하는 단계를 포함할 수 있다. 일부 구현예에서, 방법은 균일하게 분산된 해시 함수를 상기 해시 함수로서 식별하는 단계를 포함할 수 있고, 상기 균일하게 분산된 해시 함수는 균일하게 분산된 값을 출력한다. 일부 구현예에서, 해시 함수는 복수의 해시 함수일 수 있고, 방법은 각각의 복수의 카운터 레지스터에 대응하는 복수의 좌표를 포함하는 벡터 데이터 구조를 생성하는 단계를 포함할 수 있다. 벡터 데이터 구조는 확률 데이터 구조일 수 있다. 일부 구현예에서, 상기 방법은 상기 디바이스 속성을 포함하는 상기 디바이스 식별자 세트 각각에 대해, 상기 복수의 해시 함수를 사용하여 상기 벡터 데이터 구조의 상기 각각의 복수의 카운터 레지스터의 카운터 레지스터를 업데이트하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 복수의 해시된 데이터 레코드 값을 생성하기 위해 상기 복수의 해시 함수 각각을 사용하여 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱하는 단계를 포함할 수 있다. 일부 구현예에서, 방법은 데이터 프로세싱 시스템에 의해, 복수의 해시된 데이터 레코드 값으로부터 복수의 레지스터 식별자를 추출하는 단계를 포함할 수 있다. 복수의 레지스터 식별자들 각각은 복수의 카운터 레지스터 중 각각의 카운터 레지스터에 대응할 수 있다. 일부 구현예에서, 상기 방법은 최소값 임계치를 만족하는 카운터 레지스터 세트를 식별하기 위해 상기 복수의 레지스터 식별자에 대응하는 상기 복수의 카운터 레지스터 각각에 액세스하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 최소값 임계치를 만족하는 카운터 레지스터 세트 각각을 증가시키는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 디바이스 식별자와 연관하여 상기 복수의 해시된 데이터 레코드 값 각각을 데이터베이스에 저장하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 복수의 카운터 레지스터의 개수를 사용하여 상기 복수의 해시된 데이터 레코드 값 각각에 대해 모듈러스 연산을 수행하는 단계를 포함할 수 있다. 일부 구현예에서, 확률 데이터 구조는 제1 벡터 및 제 2 벡터를 포함하는 행렬 데이터 구조이고, 상기 방법은 상기 해시 함수를 사용하여 선택된 벡터 및 디바이스 식별자 세트의 디바이스 식별자를 선택하는 단계를 포함할 수 있다. 선택된 벡터는 제1 벡터 또는 제2 벡터 중 하나일 수 있다. 일부 구현예에서, 상기 방법은 상기 해시 함수 및 상기 디바이스 식별자 세트의 디바이스 식별자를 사용하여 상기 행렬 데이터 구조의 선택된 벡터의 좌표를 업데이트하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 해시된 디바이스 식별자를 생성하기 위해 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 최하위 비트의 수를 결정하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 상기 최하위 비트 수에 기초하여, 상기 제1 벡터를 선택된 벡터로서 또는 상기 제2 벡터를 선택된 벡터로서 선택하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 카운터 레지스터 인덱스 값을 계산하기 위해 상기 해시된 디바이스 식별자에 대한 모듈러스 연산을 수행하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 카운터 레지스터 인덱스 값을 사용하여 상기 좌표를 선택하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 카운터 레지스터 인덱스 값을 사용하여 선택된 상기 좌표를 증가시키는 단계를 포함할 수 있다.
본 개시의 적어도 하나의 다른 양태는 안전하고 계산적으로 효율적인 전송을 위한 목표 기준을 만족하는 속성을 갖는 식별자 세트를 표현하는 암호화된 확률 데이터 구조를 생성하는 시스템에 관한 것이다. 시스템은 하나 이상의 프로세서들 및 메모리를 포함하는 데이터 프로세싱 시스템을 포함할 수 있다. 시스템은 데이터베이스에서, 디바이스 식별자 세트를 유지할 수 있고, 디바이스 식별자 세트 각각은 디바이스 속성을 포함한다. 시스템은 디바이스 식별자 세트 및 해시 함수를 사용하여 확률 데이터 구조를 생성할 수 있다. 시스템은 암호화된 확률 데이터 구조를 생성하기 위해 확률 데이터 구조를 암호화할 수 있고, 암호화된 확률 데이터 구조는 제2 암호화된 확률 데이터 구조와 결합될 수 있도록 한다. 시스템은 암호화된 확률 데이터 구조를 작업자 컴퓨팅 디바이스에 전송할 수 있다.
일부 구현예에서, 시스템은 제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 수신할 수 있다. 일부 구현예에서, 시스템은 디바이스 식별자 세트의 멤버로서 제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 저장할 수 있다. 일부 구현예에서, 시스템은 균일하게 분산된 해시 함수를 상기 해시 함수로서 식별할 수 있고, 상기 균일하게 분산된 해시 함수는 균일하게 분산된 값을 출력한다. 일부 구현예에서, 해시 함수는 복수의 해시 함수일 수 있고, 시스템은 각각의 복수의 카운터 레지스터에 대응하는 복수의 좌표를 포함하는 벡터 데이터 구조를 생성할 수 있다. 벡터 데이터 구조는 확률 데이터 구조일 수 있다. 일부 구현예에서, 시스템은 상기 디바이스 속성을 포함하는 상기 디바이스 식별자 세트 각각에 대해, 상기 복수의 해시 함수를 사용하여 상기 벡터 데이터 구조의 상기 각각의 복수의 카운터 레지스터의 카운터 레지스터를 업데이트할 수 있다.
일부 구현예에서, 시스템은 복수의 해시된 데이터 레코드 값을 생성하기 위해 상기 복수의 해시 함수 각각을 사용하여 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱할 수 있다. 일부 구현예에서, 시스템은 복수의 해시된 데이터 레코드 값으로부터 복수의 레지스터 식별자를 추출할 수 있다. 복수의 레지스터 식별자들 각각은 복수의 카운터 레지스터 중 각각의 카운터 레지스터에 대응할 수 있다. 일부 구현예에서, 시스템은 최소값 임계치를 만족하는 카운터 레지스터 세트를 식별하기 위해 상기 복수의 레지스터 식별자에 대응하는 상기 복수의 카운터 레지스터 각각에 액세스할 수 있다. 일부 구현예에서, 시스템은 상기 최소값 임계치를 만족하는 카운터 레지스터 세트 각각을 증가시킬 수 있다.
일부 구현예에서, 시스템은 디바이스 식별자와 연관하여 상기 복수의 해시된 데이터 레코드 값 각각을 데이터베이스에 저장할 수 있다. 일부 구현예에서, 시스템은 복수의 카운터 레지스터의 개수를 사용하여 상기 복수의 해시된 데이터 레코드 값 각각에 대해 모듈러스 연산을 수행할 수 있다. 일부 구현예에서, 확률 데이터 구조는 제1 벡터 및 제2 벡터를 포함하는 행렬 데이터 구조이고, 시스템은 상기 해시 함수를 사용하여 선택된 벡터 및 디바이스 식별자 세트의 디바이스 식별자를 선택할 수 있고, 상기 선택된 벡터는 상기 제1 벡터 또는 상기 제2 벡터 중 하나이다. 일부 구현예에서, 시스템은 상기 해시 함수 및 상기 디바이스 식별자 세트의 디바이스 식별자를 사용하여 상기 행렬 데이터 구조의 선택된 벡터의 좌표를 업데이트할 수 있다.
일부 구현예에서, 시스템은 해시된 디바이스 식별자를 생성하기 위해 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱할 수 있다. 일부 구현예에서, 시스템은 미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 최하위 비트의 수를 결정할 수 있다. 일부 구현예에서, 시스템은 상기 미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 상기 최하위 비트 수에 기초하여, 상기 제1 벡터를 선택된 벡터로서 또는 상기 제2 벡터를 선택된 벡터로서 선택할 수 있다. 일부 구현예에서, 시스템은 카운터 레지스터 인덱스 값을 계산하기 위해 상기 해시된 디바이스 식별자에 대한 모듈러스 연산을 수행할 수 있다. 일부 구현예에서, 시스템은 상기 카운터 레지스터 인덱스 값을 사용하여 상기 좌표를 선택할 수 있다. 일부 구현예에서, 시스템은 상기 카운터 레지스터 인덱스 값을 사용하여 선택된 상기 좌표를 증가시킬 수 있다.
본 기술 솔루션의 적어도 하나의 다른 양태는 안전하고 계산적으로 효율적인 네트워크 전송을 위해 식별자 세트를 표현하는 암호화된 확률 데이터 구조를 효율적으로 변환하는 방법에 관한 것이다. 상기 방법은 하나 이상의 프로세서 및 메모리를 포함하는 작업자 컴퓨팅 디바이스에 의해, 집합된 공개 키에 부분적으로 대응하는 개인 복호화 키를 메모리에 유지하는 단계를 포함할 수 있다. 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 퍼블리셔 컴퓨팅 디바이스로부터, 암호화된 확률 데이터 구조를 수신하는 단계를 포함할 수 있다. 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 부분적으로 복호화된 확률 데이터 구조를 생성하기 위해 상기 개인 복호화 키를 사용하여 상기 암호화된 확률 데이터 구조를 복호화하는 단계를 포함할 수 있다. 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 결정론적으로 암호화된 확률 데이터 구조를 생성하기 위해 결정론적 암호화 방식을 사용하여 상기 부분적으로 복호화된 확률 데이터 구조를 암호화하는 단계를 포함할 수 있다. 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 셔플된 결정론적으로 암호화된 데이터 구조를 생성하기 위해 상기 결정론적으로 암호화된 확률 데이터 구조의 적어도 2개의 엘리먼트를 순열하는 단계를 포함할 수 있다. 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 셔플된 결정론적으로 암호화된 확률 데이터 구조를 제2 작업자 컴퓨팅 디바이스에 전송하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 개인 복호화 키 및 상기 제1 공개 암호화 키를 포함하는 키 쌍을 생성하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 제2 작업자 컴퓨팅 디바이스로부터 제2 공개 암호화 키를 수신하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 집합된 공개 키를 생성하기 위해 상기 제1 공개 암호화 키 및 상기 제2 공개 암호화 키를 집합하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 작업자 컴퓨팅 디바이스의 메모리에 상기 개인 복호화 키 및 상기 집합된 공개 키를 저장하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 집합된 공개 키를 퍼블리셔 컴퓨팅 디바이스에 전송하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 제1 퍼블리셔 컴퓨팅 디바이스로부터, 제1 암호화된 확률 데이터 구조를 수신하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 제2 퍼블리셔 컴퓨팅 디바이스로부터 제2 암호화된 데이터 구조를 수신하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 암호화된 확률 데이터 구조를 생성하기 위해 제1 암호화된 확률 데이터 구조 및 제2 암호화된 확률 데이터 구조를 결합하는 단계를 더 포함할 수 있다.
일부 구현예에서, 상기 셔플된 결정론적으로 암호화된 데이터 구조는 제1 암호화된 카운터 레지스터 및 제2 암호화된 카운터 레지스터를 포함하고, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 셔플된 결정론적으로 암호화된 데이터 구조의 제1 암호화된 카운터 레지스터를 제1 메시지에서 상기 제2 작업자 컴퓨팅 디바이스로 전송하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 제2 작업자 컴퓨팅 디바이스에, 상기 셔플된 결정론적으로 암호화된 데이터 구조의 제2 암호화된 카운터 레지스터를 제2 메시지로 제2 작업자 컴퓨팅 디바이스에 전송하는 단계를 더 포함할 수 있다.
일부 구현예에서, 상기 방법은 작업자 컴퓨팅 디바이스에 의해, 부분적으로 복호화된 확률 데이터 구조에 추가할 노이즈의 양을 결정하기 위해 랜덤 변수를 생성하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 기준 노이즈 값 및 최대 빈도 값에 기초하여 노이즈 어레이를 생성하는 단계를 더 포함할 수 있고, 상기 노이즈 어레이는 복수의 노이즈 값을 포함한다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 순열된 노이즈 어레이를 생성하기 위해 상기 노이즈 어레이를 순열하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 암호화된 노이즈 어레이를 생성하기 위해 상기 집합된 공개 키를 사용하여 상기 순열된 노이즈 어레이를 암호화하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 암호화된 노이즈 어레이를 애그리게이터 컴퓨팅 디바이스에 전송하는 단계를 더 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 제2 작업자 컴퓨팅 디바이스로부터 상기 기준 노이즈 값 및 상기 최대 빈도 값을 수신하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 제1 암호화된 노이즈 값을 생성하기 위해 상기 집합된 공개 키를 사용하여 상기 순열된 노이즈 어레이의 제1 노이즈 값을 암호화하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 제2 암호화된 노이즈 값을 생성하기 위해 상기 집합된 공개 키를 사용하여 상기 순열된 노이즈 어레이의 제2 노이즈 값을 암호화하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 암호화된 노이즈 어레이를 생성하기 위해 상기 제1 노이즈 값 및 상기 제2 노이즈 값을 집합하는 단계를 더 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 결정적 암호화 키 및 결정적 복호화 키를 생성하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 작업자 컴퓨팅 디바이스의 메모리에 상기 결정적 암호화 키 및 상기 결정적 복호화 키를 저장하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 결정론적으로 암호화된 확률 데이터 구조를 생성하기 위해 결정론적 암호화 키를 사용하여 상기 부분적으로 복호화된 확률 데이터 구조를 암호화하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 제3 작업자 컴퓨팅 디바이스로부터, 제2 셔플된 결정론적 암호화된 확률 데이터 구조를 수신하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 제2 셔플된 부분적으로 복호화된 확률 데이터 구조를 생성하기 위해 상기 결정론적 복호화 키를 사용하여 상기 제2 셔플된 결정론적 암호화된 확률 데이터 구조를 복호화하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 작업자 컴퓨팅 디바이스에 의해, 상기 제2 셔플된 부분적으로 복호화된 확률 데이터 구조를 제2 작업자 컴퓨팅 디바이스에 전송하는 단계를 포함할 수 있다.
본 기술 솔루션의 적어도 하나의 다른 양태는 안전하고 계산적으로 효율적인 네트워크 전송을 위해 식별자 세트를 표현하는 암호화된 확률 데이터 구조를 효율적으로 변환하기 위한 시스템에 관한 것이다. 시스템은 하나 이상의 프로세서 및 메모리를 포함하는 작업자 컴퓨팅 디바이스를 포함할 수 있다. 시스템은 집합된 공개 키에 부분적으로 대응하는 개인 복호화 키를 상기 메모리에 유지할 수 있다. 시스템은 퍼블리셔 컴퓨팅 디바이스로부터 암호화된 확률 데이터 구조를 수신할 수 있다. 시스템은 부분적으로 복호화된 확률 데이터 구조를 생성하기 위해 상기 개인 복호화 키를 사용하여 상기 암호화된 확률 데이터 구조를 복호화할 수 있다. 시스템은 결정론적으로 암호화된 확률 데이터 구조를 생성하기 위해 결정론적 암호화 방식을 사용하여 상기 부분적으로 복호화된 확률 데이터 구조를 암호화할 수 있다. 시스템은 셔플된 결정론적으로 암호화된 데이터 구조를 생성하기 위해 상기 결정론적으로 암호화된 확률 데이터 구조의 적어도 2개의 엘리먼트를 순열할 수 있다. 시스템은 셔플된 결정론적으로 암호화된 확률 데이터 구조를 제2 작업자 컴퓨팅 디바이스에 전송할 수 있다.
일부 구현예에서, 시스템은 상기 개인 복호화 키 및 상기 제1 공개 암호화 키를 포함하는 키 쌍을 생성할 수 있다. 일부 구현예에서, 시스템은 상기 제2 작업자 컴퓨팅 디바이스로부터 제2 공개 암호화 키를 수신할 수 있다. 일부 구현예에서, 시스템은 상기 집합된 공개 키를 생성하기 위해 상기 제1 공개 암호화 키 및 상기 제2 공개 암호화 키를 집합할 수 있다. 일부 구현예에서, 시스템은 상기 작업자 컴퓨팅 디바이스의 메모리에 상기 개인 복호화 키 및 상기 집합된 공개 키를 저장할 수 있다. 일부 구현예에서, 시스템은 상기 집합된 공개 키를 퍼블리셔 컴퓨팅 디바이스에 전송할 수 있다.
일부 구현예에서, 시스템은 제1 퍼블리셔 컴퓨팅 디바이스로부터 제1 암호화된 확률 데이터 구조를 수신할 수 있다. 일부 구현예에서, 시스템은 제2 퍼블리셔 컴퓨팅 디바이스로부터 제2 암호화된 데이터 구조를 수신할 수 있다. 일부 구현예에서, 시스템은 암호화된 확률 데이터 구조를 생성하기 위해 제1 암호화된 확률 데이터 구조 및 제2 암호화된 확률 데이터 구조를 결합할 수 있다. 일부 구현예에서, 상기 셔플된 결정론적으로 암호화된 데이터 구조는 제1 암호화된 카운터 레지스터 및 제2 암호화된 카운터 레지스터를 포함하고, 시스템은 상기 셔플된 결정론적으로 암호화된 데이터 구조의 제1 암호화된 카운터 레지스터를 제1 메시지에서 상기 제2 작업자 컴퓨팅 디바이스로 전송할 수 있다. 일부 구현예에서, 시스템은 상기 제2 작업자 컴퓨팅 디바이스에, 상기 셔플된 결정론적으로 암호화된 데이터 구조의 제2 암호화된 카운터 레지스터를 제2 메시지로 제2 작업자 컴퓨팅 디바이스에 전송할 수 있다.
일부 구현예에서, 시스템은 부분적으로 복호화된 확률 데이터 구조에 추가할 노이즈의 양을 결정하기 위해 랜덤 변수를 생성할 수 있다. 일부 구현예에서, 시스템은 기준 노이즈 값 및 최대 빈도 값에 기초하여 노이즈 어레이를 생성할 수 있고, 상기 노이즈 어레이는 복수의 노이즈 값을 포함한다. 일부 구현예에서, 시스템은 순열된 노이즈 어레이를 생성하기 위해 상기 노이즈 어레이를 순열할 수 있다. 일부 구현예에서, 시스템은 암호화된 노이즈 어레이를 생성하기 위해 상기 집합된 공개 키를 사용하여 상기 순열된 노이즈 어레이를 암호화할 수 있다. 일부 구현예에서, 시스템은 상기 암호화된 노이즈 어레이를 애그리게이터 컴퓨팅 디바이스에 전송할 수 있다.
일부 구현예에서, 시스템은 상기 제2 작업자 컴퓨팅 디바이스로부터 상기 기준 노이즈 값 및 상기 최대 빈도 값을 수신할 수 있다. 일부 구현예에서, 시스템은 제1 암호화된 노이즈 값을 생성하기 위해 상기 집합된 공개 키를 사용하여 상기 순열된 노이즈 어레이의 제1 노이즈 값을 암호화할 수 있다. 일부 구현예에서, 시스템은 제2 암호화된 노이즈 값을 생성하기 위해 상기 집합된 공개 키를 사용하여 상기 순열된 노이즈 어레이의 제2 노이즈 값을 암호화할 수 있다. 일부 구현예에서, 시스템은 상기 암호화된 노이즈 어레이를 생성하기 위해 상기 제1 노이즈 값 및 상기 제2 노이즈 값을 집합할 수 있다.
일부 구현예에서, 시스템은 결정론적 암호화 키 및 결정론적 복호화 키를 생성할 수 있다. 일부 구현예에서, 시스템은 상기 작업자 컴퓨팅 디바이스의 메모리에 상기 결정론적 암호화 키 및 상기 결정론적 복호화 키를 저장할 수 있다. 일부 구현예에서, 시스템은 결정론적으로 암호화된 확률 데이터 구조를 생성하기 위해 결정론적 암호화 키를 사용하여 상기 부분적으로 복호화된 확률 데이터 구조를 암호화할 수 있다. 일부 구현예에서, 시스템은 제3 작업자 컴퓨팅 디바이스로부터, 제2 셔플된 결정론적 암호화된 확률 데이터 구조를 수신할 수 있다. 일부 구현예에서, 시스템은 제2 셔플된 부분적으로 복호화된 확률 데이터 구조를 생성하기 위해 상기 결정론적 복호화 키를 사용하여 상기 제2 셔플된 결정론적 암호화된 확률 데이터 구조를 복호화할 수 있다. 일부 구현예에서, 시스템은 상기 제2 셔플된 부분적으로 복호화된 확률 데이터 구조를 제2 작업자 컴퓨팅 디바이스에 전송할 수 있다.
본 기술 솔루션의 적어도 하나의 다른 양태는 목표 기준을 만족하는 속성을 갖는 멀티세트에서 다수의 멤버를 안전하고 계산적으로 효율적으로 추정하는 방법에 관한 것이다. 방법은 예를 들어 하나 이상의 프로세서들 및 메모리를 포함하는 애그리게이터 컴퓨팅 디바이스에 의해 수행될 수 있다. 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 작업자 컴퓨팅 디바이스로부터 셔플된 암호화된 확률 데이터 구조를 수신하는 단계를 포함할 수 있다. 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 셔플된 암호화된 확률 데이터 구조를 사용하여 히스토그램을 구성하는 단계를 포함할 수 있다. 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 목표 임계치를 만족하는 속성과 연관된 디바이스 식별자의 수를 표현하는 빈도 값을 추정하는 단계를 포함할 수 있다. 상기 방법은 애그리게이터 컴퓨팅 디바이스에 의해, 퍼블리셔 컴퓨팅 디바이스에 목표 임계치를 만족하는 속성과 연관된 디바이스 식별자의 수를 표현하는 빈도 값을 전송하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 셔플된 암호화된 확률 데이터 구조를 제2 작업자 컴퓨팅 디바이스에 전송하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 작업자 컴퓨팅 디바이스로부터 셔플된 부분적으로 복호화된 확률 데이터 구조를 수신하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 셔플된 확률 데이터 구조를 생성하기 위해 상기 결정론적 복호화 키를 사용하여 상기 셔플된 부분적으로 복호화된 확률 데이터 구조를 복호화하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 셔플된 확률 데이터 구조를 사용하여 히스토그램을 구성하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 복수의 퍼블리셔 컴퓨팅 디바이스 각각으로부터 복수의 암호화된 확률 데이터 구조를 수신하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 복수의 암호화된 확률 데이터 구조를 결합된 암호화된 확률 데이터 구조로 결합하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 결합된 암호화된 확률 데이터 구조를 상기 작업자 컴퓨팅 디바이스에 전송하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 동형 추가를 사용하여 상기 복수의 암호화된 확률 데이터 구조를 결합하기 위해 상기 복수의 암호화된 확률 데이터 구조의 제1 암호화된 확률 데이터 구조를 상기 복수의 암호화된 확률 데이터 구조의 제2 암호화된 확률 데이터 구조와 곱하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 작업자 컴퓨팅 디바이스로부터 제1 암호화된 노이즈 어레이를 수신하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 제2 작업자 컴퓨팅 디바이스로부터 제2 암호화된 노이즈 어레이를 수신하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 집합된 노이즈 어레이를 생성하기 위해 상기 제1 암호화된 노이즈 어레이 및 상기 제2 암호화된 노이즈 어레이를 집합하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 집합된 노이즈 어레이를 상기 결합된 암호화된 확률 데이터 구조에 첨부하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 평균 노이즈 값을 결정하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 데이터 구조로부터 노이즈를 제거하기 위해 상기 데이터 구조의 적어도 하나의 값으로부터 상기 평균 노이즈 값을 감산하는 단계를 포함할 수 있다. 일부 구현예에서, 셔플된 암호화된 확률 데이터 구조는 노이즈 행렬 세트이고, 상기 노이즈 행렬 세트 각각은 퍼블리셔 컴퓨팅 디바이스의 세트 중 각각에 대응하며, 상기 방법은 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬 세트의 각 노이즈 행렬에 대한 추정된 카디널리티 값을 추정하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬 세트의 각 노이즈 행렬에 대한 추정된 카디널리티 값에 기초하여 상기 노이즈 행렬 세트의 순위를 매기는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 순위에 기초하여 상기 노이즈 행렬 세트의 제1 서브세트 및 상기 노이즈 행렬 세트의 제2 서브세트를 선택하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬 세트의 제1 서브세트 및 상기 노이즈 행렬 세트의 제2 서브세트에 기초하여 상기 히스토그램을 구성하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬 행의 포지션의 수의 절반보다 작거나 같은 수의 0을 포함하는 노이즈 행렬의 행을 식별하는 단계를 포함할 수 있고, 상기 노이즈 행렬의 행은 행 인덱스 값에 대응한다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 행 인덱스 값을 사용하여 상기 노이즈 행렬의 추정된 카디널리티 값을 계산하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬 세트의 제1 노이즈 행렬의 추정된 카디널리티 값이 상기 노이즈 행렬 세트의 제2 노이즈 행렬의 추정 카디널리티 값보다 크다고 결정하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 제2 순위 값보다 큰 제1 순위 값을 상기 제1 노이즈 행렬에 할당하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 제2 순위 값을 상기 제2 노이즈 행렬에 할당하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬의 제1 서브세트의 제1 몬테-카를로 샘플링에 기초하여, 제1 디노이징된 유니온 벡터를 생성하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬의 제2 서브세트의 제2 몬테-카를로 샘플링에 기초하여, 제2 디노이징된 유니온 벡터를 생성하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 제1 디노이징된 유니온 벡터 및 상기 제2 디노이징된 벡터를 결합된 유니온 데이터 구조로 결합하는 단계를 포함할 수 있다. 일부 구현예에서, 상기 방법은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 결합된 유니온 데이터 구조를 사용하여 히스토그램을 구성하는 단계를 포함할 수 있다.
본 기술 솔루션의 적어도 하나의 다른 양태는 목표 기준을 만족하는 속성을 갖는 멀티세트에서 다수의 멤버를 안전하고 계산적으로 효율적으로 추정하기 위한 시스템에 관한 것이다. 시스템은 하나 이상의 프로세서 및 메모리를 포함하는 애그리게이터 컴퓨팅 디바이스를 포함할 수 있다. 시스템은 셔플된 확률 데이터 구조를 작업자 컴퓨팅 디바이스로부터 수신할 수 있다. 시스템은 상기 셔플된 암호화된 확률 데이터 구조를 사용하여 히스토그램을 구성할 수 있다. 시스템은 목표 임계치를 만족하는 속성과 연관된 디바이스 식별자의 수를 표현하는 빈도 값을 추정할 수 있다. 시스템은 퍼블리셔 컴퓨팅 디바이스에 목표 임계치를 만족하는 속성과 연관된 디바이스 식별자의 수를 표현하는 빈도 값을 전송할 수 있다.
일부 구현예에서, 시스템은 셔플된 암호화된 확률 데이터 구조를 제2 작업자 컴퓨팅 디바이스에 전송할 수 있다. 일부 구현예에서, 시스템은 제2 셔플된 부분적으로 복호화된 확률 데이터 구조를 작업자 컴퓨팅 디바이스로부터 수신할 수 있다. 일부 구현예에서, 시스템은 셔플된 확률 데이터 구조를 생성하기 위해 상기 결정론적 복호화 키를 사용하여 상기 셔플된 부분적으로 복호화된 확률 데이터 구조를 복호화할 수 있다. 일부 구현예에서, 시스템은 셔플된 확률 데이터 구조를 사용하여 히스토그램을 구성할 수 있다.
일부 구현예에서, 시스템은 복수의 퍼블리셔 컴퓨팅 디바이스 각각으로부터 복수의 암호화된 확률 데이터 구조를 수신할 수 있다. 일부 구현예에서, 시스템은 복수의 암호화된 확률 데이터 구조를 결합된 암호화된 확률 데이터 구조로 결합할 수 있다. 일부 구현예에서, 시스템은 결합된 암호화된 확률 데이터 구조를 작업자 컴퓨팅 디바이스에 전송할 수 있다. 일부 구현예에서, 시스템은 동형 추가를 사용하여 상기 복수의 암호화된 확률 데이터 구조를 결합하기 위해 상기 복수의 암호화된 확률 데이터 구조의 제1 암호화된 확률 데이터 구조를 상기 복수의 암호화된 확률 데이터 구조의 제2 암호화된 확률 데이터 구조와 곱할 수 있다.
일부 구현예에서, 시스템은 상기 작업자 컴퓨팅 디바이스로부터 제1 암호화된 노이즈 어레이를 수신할 수 있다. 일부 구현예에서, 시스템은 제2 작업자 컴퓨팅 디바이스로부터 제2 암호화된 노이즈 어레이를 수신할 수 있다. 일부 구현예에서, 시스템은 집합된 노이즈 어레이를 생성하기 위해 상기 제1 암호화된 노이즈 어레이 및 상기 제2 암호화된 노이즈 어레이를 집합할 수 있다. 일부 구현예에서, 시스템은 상기 집합된 노이즈 어레이를 상기 결합된 암호화된 확률 데이터 구조에 첨부할 수 있다. 일부 구현예에서, 시스템은 평균 노이즈 값을 결정할 수 있다. 일부 구현예에서, 시스템은 상기 데이터 구조로부터 노이즈를 제거하기 위해 상기 데이터 구조의 적어도 하나의 값으로부터 상기 평균 노이즈 값을 감산할 수 있다.
일부 구현예에서, 셔플된 암호화된 확률 데이터 구조는 노이즈 행렬 세트이고, 상기 노이즈 행렬 세트 각각은 퍼블리셔 컴퓨팅 디바이스의 세트 중 각각에 대응하며, 시스템은 상기 노이즈 행렬 세트의 각 노이즈 행렬에 대한 추정된 카디널리티 값을 추정할 수 있다. 일부 구현예에서, 시스템은 상기 노이즈 행렬 세트의 각 노이즈 행렬에 대한 추정된 카디널리티 값에 기초하여 상기 노이즈 행렬 세트의 순위를 매길 수 있다. 일부 구현예에서, 시스템은 상기 순위에 기초하여 상기 노이즈 행렬 세트의 제1 서브세트 및 상기 노이즈 행렬 세트의 제2 서브세트를 선택할 수 있다. 일부 구현예에서, 시스템은 상기 노이즈 행렬 세트의 제1 서브세트 및 상기 노이즈 행렬 세트의 제2 서브세트에 기초하여 상기 히스토그램을 구성할 수 있다.
일부 구현예에서, 시스템은 상기 애그리게이터 컴퓨팅 디바이스에 의해, 상기 노이즈 행렬 행의 포지션의 수의 절반보다 작거나 같은 수의 0을 포함하는 노이즈 행렬의 행을 식별할 수 있고, 상기 노이즈 행렬의 행은 행 인덱스 값에 대응한다. 일부 구현예에서, 시스템은 상기 행 인덱스 값을 사용하여 상기 노이즈 행렬의 추정된 카디널리티 값을 계산할 수 있다. 일부 구현예에서, 시스템은 상기 노이즈 행렬 세트의 제1 노이즈 행렬의 추정된 카디널리티 값이 상기 노이즈 행렬 세트의 제2 노이즈 행렬의 추정 카디널리티 값보다 크다고 결정할 수 있다. 일부 구현예에서, 시스템은 상기 제2 순위 값보다 큰 제1 순위 값을 상기 제1 노이즈 행렬에 할당할 수 있다. 일부 구현예에서, 시스템은 상기 제2 순위 값을 상기 제2 노이즈 행렬에 할당할 수 있다.
일부 구현예에서, 시스템은 상기 노이즈 행렬의 제1 서브세트의 제1 몬테-카를로 샘플링에 기초하여, 제1 디노이징된 유니온 벡터를 생성할 수 있다. 일부 구현예에서, 시스템은 상기 노이즈 행렬의 제2 서브세트의 제2 몬테-카를로 샘플링에 기초하여, 제2 디노이징된 유니온 벡터를 생성할 수 있다. 일부 구현예에서, 시스템은 상기 제1 디노이징된 유니온 벡터 및 상기 제2 디노이징된 벡터를 결합된 유니온 데이터 구조로 결합할 수 있다. 일부 구현예에서, 시스템은 결합된 유니온 데이터 구조를 사용하여 히스토그램을 구성할 수 있다.
본 기술의 이러한 구성과 특징, 그리고 구조의 관련 엘리먼트의 동작 및 기능의 방법 및 부품 및 제조 경제의 조합은 첨부 도면을 참조하여 다음 설명과 첨부된 청구항을 고려하면 더욱 분명해질 것이며, 이들 모두는 본 명세서의 일부를 형성하며, 동일한 참조 번호는 다양한 도면에서 대응하는 부분을 나타낸다. 그러나, 도면은 단지 예시 및 설명을 위한 것이며 본 발명의 한계를 정의하기 위한 것이 아님을 명백히 이해해야 한다. 명세서 및 청구 범위에서 사용된 바와 같이, "a", "an"및 "the"의 단수 형태는 문맥이 달리 명시하지 않는 한 복수의 지시 대상을 포함한다.
첨부된 도면은 일정한 비율로 도시된 것이 아니다. 다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 구성 요소를 표시한다. 명확성을 위해 모든 도면에서 모든 컴포넌트가 라벨링된 것은 아니다. 본 기술 솔루션의 이들 및 다른 양태 및 구성은 첨부 도면과 함께 다음의 설명을 검토하면 통상의 기술자에게 명백해질 것이다.
도 1은 디바이스 식별자의 카운트 및 빈도를 결정하기 위해 카운팅 블룸 필터를 생성하기 위한 시스템의 예시적인 구현예를 도시하는 블록도를 도시한다.
도 2a는 카운팅 블룸 필터로의 제1 데이터 레코드의 삽입을 도시하는 예시적인 시스템 흐름도를 도시한다.
도 2b는 표준 카운팅 블룸 필터로의 제2 데이터 레코드의 삽입을 도시하는 예시적인 시스템 흐름도를 도시한다.
도 2c는 카운팅 블룸 필터로의 제 3 데이터 레코드의 삽입을 도시하는 예시적인 시스템 흐름도를 도시한다.
도 3a는 최소 증가 카운팅 블룸 필터에 제1 데이터 레코드를 삽입하는 예시적인 시스템 흐름도를 도시한다.
도 3b는 최소 증가 카운팅 블룸 필터에 제2 데이터 레코드를 삽입하는 예시적인 시스템 흐름도를 도시한다.
도 3c는 최소 증가 카운팅 블룸 필터에 제 3 데이터 레코드를 삽입하는 예시적인 시스템 흐름도를 도시한다.
도 4a는 동형 암호화 키의 생성 및 분배를 위한 예시적인 시스템의 블록도를 도시한다.
도 4b는 프로세싱을 위해 암호화된 벡터를 생성하고 제1 작업자에게 전송하기 위한 예시적인 시스템의 블록도를 도시한다.
도 4c는 각 작업자에 의해 프로세싱된 결합된 벡터의 부분 복호화 및 셔플링을 위한 예시적인 시스템의 블록도를 도시한다.
도 5는 하나 이상의 데이터 레코드를 표현하는 암호화된 벡터를 생성하는 예시적인 방법을 도시하는 흐름도를 도시한다.
도 6은 작업자 컴퓨팅 디바이스에 의해 집합된 암호화된 벡터를 프로세싱하는 예시적인 방법을 도시하는 흐름도를 도시한다.
도 7은 작업자 컴퓨팅 디바이스에 의한 프로세싱 동안 집합된 암호화된 벡터를 노이즈를 생성하고 통합하는 예시적인 방법을 도시하는 흐름도를 도시한다.
도 8은 본 명세서에서 논의된 임의의 컴퓨터를 구현하기 위해 사용될 수 있는 예시적 컴퓨터 시스템의 일반적인 아키텍처를 도시한다.
도 9a 및 9b는 시스템의 다양한 실험 파라미터의 비교 및 결과 계산에 미치는 영향을 나타내는 예시적 데이터 그래프를 도시한다.
도 10a 및 10b는 시스템의 다양한 실험 파라미터의 비교 및 결과 계산에 미치는 영향을 나타내는 예시적 데이터 그래프를 도시한다.
도 11a 및 11b는 시스템의 다양한 실험 파라미터의 비교 및 결과 계산에 미치는 영향을 나타내는 예시적 데이터 그래프를 도시한다.
도 12는 본 명세서에 기술된 바와 같이 FreqLogLog 구현과 카운팅 블룸 필터 구현 사이의 비교를 도시하는 예시적 데이터 그래프를 도시한다.
도 13a 및 13b는 시스템의 다양한 실험 파라미터의 비교 및 결과 계산에 미치는 영향을 나타내는 예시적 데이터 그래프를 도시한다.
도 14a 및 14b는 시스템의 다양한 실험 파라미터의 비교 및 결과 계산에 미치는 영향을 나타내는 예시적 데이터 그래프를 도시한다.
도 15는 시스템의 다양한 실험 파라미터의 비교 및 노이즈의 추가를 포함하여 결과 계산에 미치는 영향을 나타내는 예시적 데이터 그래프를 도시한다.
도 16a 및 16b는 시스템의 다양한 실험 파라미터의 비교 및 데이터에 노이즈 값의 추가를 포함하여 결과 계산에 미치는 영향을 나타내는 예시적 데이터 그래프를 도시한다.
도 17a 및 17b는 본 명세서에 설명된 바와 같이 대안적 구성에서 노이즈를 구현하는 카운팅 블룸 필터 구현의 다양한 표준 에러 값을 도시하는 예시적 데이터 그래프를 도시한다.
도 18은 계단식 군단 카디널리티 추정기 접근법을 사용한 사용자 식별자 추정의 상대적 오류를 도시한다.
도 19는 계단식 군단 카디널리티 추정기 접근법을 사용하여 사용된 다양한 실험을 예시하는 그래프를 도시한다.
도 20는 하나 이상의 데이터 레코드를 표현하는 암호화된 벡터를 생성하는 예시적인 방법을 도시하는 흐름도를 도시한다.
도 21은 차등적으로 개인 노이징된 계단식 군단 데이터 구조 세트의 카디널리티를 추정하는 예시적인 방법을 도시하는 흐름도를 도시한다.
다음은 암호화된 확률 데이터 구조에 기초한 대형 멀티세트의 빈도를 추정하는 방법, 장치 및 시스템에 관한 다양한 개념 및 구현의 상세한 설명이다. 상기 소개되고 아래에서 더 자세히 논의되는 다양한 개념들은 기술된 개념들이 임의의 특정한 구현 방식에 제한되지 않기 때문에, 임의의 다수의 방식들로 구현될 수 있다. 특정 구현예 및 적용의 예는 주로 설명적 목적으로 제공된다.
본 명세서에 기술된 기법 다양한 구현예 및 기법에 대한 설명을 읽을 목적으로, 명세서 섹션에 대한 다음의 간단한 설명이 도움이 될 것이다.
섹션 A는 차등 비공개 방식으로 멀티세트의 빈도와 카디널리티를 추정하기 위해 블룸 필터 카운팅을 구현하는 기법을 설명한다. 하나 이상의 그러한 기법 또는 그 양태는 본 명세서에 기술된 하나 이상의 구현예로 구현될 수 있다.
섹션 B는 멀티세트의 빈도와 카디널리티를 추정하기 위해 계단식 군단 데이터 구조를 구현하는 기법을 설명한다. 하나 이상의 그러한 기법 또는 그 양태는 본 명세서에 기술된 하나 이상의 구현예로 구현될 수 있다.
섹션 C는 차등 개인 방식에서 멀티세트의 빈도와 카디널리티를 추정하기 위해 차등적으로 개인 계단식 군단 데이터 구조를 구현하는 대안적 기법을 설명한다. 하나 이상의 그러한 기법 또는 그 양태는 본 명세서에 기술된 하나 이상의 구현예로 구현될 수 있다.
섹션 D는 연속 액체 군단을 사용하여 멀티세트의 빈도와 카디널리티를 추정하기 위해 HyperLogLog 스케치의 속성과 카운팅 블룸 필터를 결합하는 기법을 설명한다. 하나 이상의 그러한 기법 또는 그 양태는 본 명세서에 기술된 하나 이상의 구현예로 구현될 수 있다.
섹션 E는 멀티세트의 빈도와 카디널리티를 추정하기 위해 지수적 일반화 블룸 필터를 구현하는 기법을 설명한다. 하나 이상의 그러한 기법 또는 그 양태는 본 명세서에 기술된 하나 이상의 구현예로 구현될 수 있다.
본 명세서에서 사용되는 용어 "대안"은 반드시 배타적인 대안 옵션을 지칭하지 않는다 - 서로에 대한 "대안"으로 설명된 다수의 구현예, 기법, 시스템, 방법 또는 프로세스가 적절히 조합되어 사용될 수 있다.
본 명세서에서 사용되는 용어 "스케치"는 본 명세서에 기술된 하나 이상의 데이터 엘리먼트, 데이터 레코드, 변수, 카운터 레지스터, 부동 소수점 값, 문자열, 인덱스 값, 메모리 포인터 값 또는 이들의 임의의 조합을 포함하는 하나 이상의 데이터 구조를 의미한다. 용어 "스케치" 및 "데이터 구조"는 때때로 상호 교환적으로 사용될 수 있다.
A. 시스템 개요 및 카운팅 블룸 필터 빈도 및 카디널리티 추정
식별자 서버는 예를 들어 각각의 클라이언트 디바이스와 연관된 클라이언트 식별자를 유지함으로써 클라이언트 디바이스 세트와 연관될 수 있다. 각 클라이언트 식별자는 각 식별자 서버와 클라이언트 디바이스 간의 연결을 설명하는 속성 정보를 포함할 수 있다. 속성 정보는 클라이언트 디바이스와 식별자 서버 간의 관계에 대한 정보(예: 웹 브라우징 기록, 인터렉션 데이터, 연결 시간, 네트워크 분석 데이터 등)를 포함할 수 있으며, 각각의 클라이언트 디바이스로부터 수신된 보호된 또는 개인 정보를 포함할 수 있다. 서로 다른 식별자 서버는 동일한 각각의 클라이언트 디바이스에 대응하는 서로 다른 속성 데이터 및 서로 다른 클라이언트 식별자를 유지할 수 있다. 일반적으로 각 식별자 서버 간에 중복된 속성 데이터가 있는지 결정하기 위해 식별자 서버는 보호된 또는 개인 정보를 포함할 수 있는 속성 데이터를 중앙 서버와 공유하여 클라이언트 속성 정보의 중복을 제거할 수 있다.
그러나 모든 클라이언트 속성 데이터를 전송하면 확장성에 문제가 발생한다. 클라이언트 식별자 서버 수가 증가하면 일반적으로 네트워크를 통해 전송되는 클라이언트 디바이스 속성 데이터의 양도 증가한다. 속성 데이터는 각 클라이언트 디바이스에 대해 상세하고 상대적으로 클 수 있기 때문에 이러한 정보를 대규모로 전송하면 네트워크 대역폭과 계산 리소스가 소모될 수 있다. 또한 시스템이 총 사용자 식별자 수를 계산하는 것 뿐만 아니라 네트워크를 통해 보호된 또는 개인 속성 정보를 전송하지 않고 특정 속성의 빈도와 같은 특정 속성 데이터 기준을 충족하는 클라이언트 디바이스의 수도 계산하는 것이 유용하다.
앞서 언급한 문제를 해결하기 위해, 이 기술 솔루션의 시스템 및 방법 양태는 카운팅 블룸 필터를 활용하여 다수의 식별자 서버 간에 공통된 클라이언트 디바이스 수를 결정할 수 있다. 각 식별자 서버는 연관된 클라이언트 디바이스 식별자 및 속성 데이터 세트를 표현하는 카운팅 블룸 필터를 생성할 수 있다. 카운팅 블룸 필터는 카운터 레지스터의 벡터("버킷"이라고도 함)일 수 있으며, 각 버킷은 카운팅 블룸 필터의 위치 또는 인덱스 값에 대응하는 버킷 식별자와 연관된다. 각 식별자 서버는 하나 이상의 해시된 식별자를 생성하기 위해 클라이언트 디바이스 식별자 및 속성 데이터에 하나 이상의 해시 함수를 적용할 수 있다. 시스템은 해시된 식별자로부터 카운팅 블룸 필터의 하나 이상의 버킷에 대한 포인터를 추출하고 해당 버킷을 증가시킬 수 있다. 시스템은 블룸 필터의 가장 작은 버킷만 증가되는 최소 증가 기법을 사용할 수 있다. 최소 카운팅 기법을 사용하여, 시스템은 각 식별자 서버와 연관된 총 클라이언트 디바이스 수를 추정할 수 있을 뿐만 아니라 최소 속성 값을 나타내는 속성 데이터와 연관된 클라이언트 디바이스의 수도 추정할 수 있다. 카운팅 블룸 필터는 데이터 세트(예: 블룸 필터 또는 기타 일반화된 데이터 구조)의 아이템 수를 추적할 수 있는 숫자, 정수 또는 값의 문자열일 수 있다. 클라이언트 디바이스 속성의 빈도에 대한 정보를 추정하면 클라이언트 디바이스와 식별자 서버 간의 거시적인 데이터 추세를 결정하는데 유용할 수 있다(예: 네트워크 대역폭 라우팅 및 컴퓨팅 리소스 할당에 대한 결정).
각 식별자 서버의 카운팅 블룸 필터의 차등 프라이버시를 유지하기 위해, 시스템은 카운팅 블룸 필터의 버킷 히스토그램을 구성하여 버킷을 추상화할 수 있다. 버킷 히스토그램을 생성하기 위해, 각 식별자 서버는 각각의 식별자 서버에만 알려진 개인 키를 사용하여 버킷 단위로 카운팅 블룸 필터를 암호화하고 암호화된 블룸 필터를 알려진 작업자 컴퓨팅 디바이스(예: 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 등)에 전송할 수 있다. 작업자 컴퓨팅 디바이스는 모든 식별자 서버 암호화 카운팅 블룸 필터를 하나의 결합된 암호화된 데이터 구조로 결합할 수 있다. 결합된 블룸 필터는 여전히 각 식별자 서버의 개인 키로 암호화된다. 그 후, 결합된 블룸 필터는 공유 키를 사용하여 결합된 필터를 복호화하고 각 버킷을 (예: 결정론적, 비결정론적으로 등) 암호화할 수 있는 각 작업자 컴퓨팅 디바이스에 순차적으로 전달된다. 그 후, 작업은 여러 추가 버킷을 추가 및/또는 제거하여 노이즈를 적용하여, 버킷 히스토그램이 생성될 때 차등적 비공개된다. 작업자는 블룸 필터를 재배치(예: 순열 등)하여 다음 작업자에게 보낼 수 있다. 이는 제1 작업자가 최종 블룸 필터를 다시 수신할 때까지 계속된다. 그 후, 작업자는 각 작업자의 결정론적 키를 사용하여 0에서 원하는 최대 빈도까지 각 값을 암호화할 수 있다. 제1 작업자는 버킷 히스토그램을 구성할 수 있으며, 복호화될 수 없는 임의의 값은 최대 빈도와 동일한 것으로 가정되어 해당 버킷에 추가된다. 최종 히스토그램은 원하는 속성 데이터의 대응 빈도와 함께 모든 식별자 서버에서 고유한 클라이언트 디바이스의 총 수를 추정하는데 사용된다.
따라서 이 기술 솔루션의 양태는 클라이언트 디바이스 식별자 및 데이터 카운팅 시스템의 보안을 강화할 수 있다. 암호화된 카운팅 블룸 필터와 동형 암호화 방식을 사용함으로써, 이 기술 솔루션의 양태는 네트워크를 통해 전송되는 데이터의 양을 줄일 수 있으며, 이는 다른 속성 데이터 카운팅 및 비교 시스템에 비해 상당한 개선이다. 또한 추정된 히스토그램을 사용함으로써, 이 기술 솔루션은 네트워크를 통해 보호된 또는 프라이버시 정보를 전송하지 않고도 클라이언트 식별자 속성 데이터 빈도의 정확한 추정을 제공할 수 있다. 이는 식별자 서버가 연관 디바이스의 수 또는 속성을 노출하지 않도록 보호할 뿐만 아니라 클라이언트 디바이스가 보호된 또는 프라이버시 정보를 노출하지 않도록 보호하여, 네트워킹 시스템의 보안을 크게 향상시킨다.
일부 구현예에서, 디바이스 식별자 및 속성 데이터는 식별자 서버에 걸쳐 프라이버시 보존 방식으로 K+ 값을 계산하는데 사용될 수 있다. 특정 속성이 식별자 서버에서 K회 이상 나타나는 빈도를 반영할 수 있는 K+에 대한 값은 본 명세서에 기술된 카운팅 블룸 필터를 사용하여 계산될 수 있다. 측정 방법이 논의되면, 차등 비공개 방식으로 여러 당사자에 걸쳐 블룸 필터를 집합하기 위한 보안 MPC(다자간 통신) 프로토콜이 제공된다.
이 기술 솔루션의 시스템 및 방법은 안전하고 개인 정보를 보호하는 방식으로 다수의 식별자 서버(예: 퍼블리셔, 공급자 등)에서 교차 미디어 도달 및 속성을 측정하려는 업계 전반의 노력을 설명할 수 있다. 수백 또는 수천 개의 식별자 서버가 이 시스템에 참여할 수 있다. K+ 값, 인터섹션, 유니온 및 속성 빈도를 계산하기 위해 여기에 자세히 설명된 알고리즘은 빈도 추정을 위한 카운팅 블룸 필터 및 퍼블리셔 간 블룸 필터를 결합하기 위한 보안 MPC 프로토콜의 사용을 통해 규모의 문제와 엄격한 개인 정보 요구 사항을 모두 해결한다. 마지막으로, 본 솔루션의 양태에 대한 이러한 시스템 및 방법은 임의의 엔터티 세트가 관련된 다른 당사자의 개인 정보 또는 보호된 정보를 침해할 염려없이 상이한 엔터티에 의해 수행, 실행 또는 달리 운영될 수 있다는 것이 중요하다.
특정 속성 세트의 도달 범위는 각각의 속성에 노출되었거나 반영된 클라이언트 디바이스의 수로 정의될 수 있다. 빈도는 클라이언트 디바이스가 특정 속성과 연관된 횟수로 정의될 수 있다. K+ 값(예: K+ 도달 범위 등)은 특정 속성에 대해 주어진 값 K보다 큰 빈도를 가진 클라이언트 디바이스의 수를 반영하는 측정치를 기술할 수 있다. 즉, 특정 속성 K 이상과 연관된 클라이언트 디바이스의 수이다.
HyperLogLog(HLL)를 카디널리티 추정기로서 사용될 수 있다. 카디널리티 추정기는 실제로 매우 큰 일부 멀티세트 M의 엘리먼트 수를 추정할 수 있다. HLL은 낮은 오류률, 낮은 분산 및 낮은 메모리 사용량을 특징으로 할 수 있다. 또한 두 HLL의 유니온은 계산하기가 간단할 수 있다. 즉, 분산 카운팅 애플리케이션에서 HLL이 구현될 수 있다. FreqLogLog(FLL)라고 하는 HLL의 확장을 사용하면 M의 엘리먼트 수와 그들의 빈도가 추정되게 할 수 있다.
블룸 필터는 세트의 간결한 표현을 제공할 수 있다. 블룸 필터는 insert 및 contains method를 모두 구현할 수 있지만, 간결한 표현으로 인해 contains method가 거짓 긍정을 반환할 가능성이 적다. 즉, 엘리먼트가 세트에 없을 때 세트에 있다고 말할 수 있다. 반면에 거짓 부정은 배제된다. 즉, contains method가 거짓을 반환하면 항상 정확할 수 있다.
빈 블룸 필터는 모든 비트가 0으로 설정된 m 크기의 비트 어레이일 수 있다. 엘리먼트 xk 해시 함수 모듈러스 m을 통해 전달한 다음 Bloom 필터의 해당 비트를 1로 설정하여 삽입할 수 있다(아래 예 참조). contains method는 비슷한 방식으로 작동할 수 있으며, x 모듈러스 m의 모든 k 해시가 1로 설정되면 true를 반환하고 그렇지 않으면 false를 반환할 수 있다. 빈 블룸 필터의 예는 아래 표 1에 도시된다.
ID 0 1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0 0
'값'행으로 표시된 비트 스트링은 빈 블룸 필터를 표현하며, 여기서 블룸 필터의 각 포지션(예: 'ID'행의 숫자 열로 표시됨)는 이진 0 값으로 설정된다. 여기서 m의 값은 11이고 m 포지션의 식별자는 0에서 10까지이다.
비교적 높은 메모리 요구 사항(예: HLL과 관련하여)으로 인해, 일반적으로 블룸 필터는 카디널리티 추정에 사용되지 않을 수 있지만, 블룸 필터의 카디널리티는 다음 공식을 평가하여 결정될 수 있다:
Figure pct00001
위의 식에서 k는 블룸 필터에 사용되는 해시 수, m은 블룸 필터의 비트 수, x는 블룸 필터에 채워진 버킷 수, n은 블룸 필터의 카디널리티 추정의 수일 수 있다.
추정기의 분산은 다음 식으로 근사화된다.
Figure pct00002
분산은 테일러 확장(Taylor expansion)에 기초될 수 있다.
편향의 추정치는 다음 방정식에 의해 제공될 수 있다.
Figure pct00003
CBF(카운팅 블룸 필터)는 삭제 작업을 제공할 수 있는 표준 블룸 필터의 확장이다. 블룸 필터 계산은 표준 블룸 필터와 유사하게 작동한다. 블룸 필터 계산에서 비트 어레이는 카운트 어레이로 대체된다. 완전성을 위해 삭제 동작을 사용하면 거짓 부정 가능성이 발생할 수 있다. 도 2a-2c에 도시된 예는 엘리먼트(x) 중 하나가 두 번 삽입되는 CBF에 3개의 엘리먼트를 삽입하는 것을 표시한다.
최소 증가는 많은 삽입 동작 과정에서 CBF 카운터 값을 최소화할 수 있는 기법을 설명한다. 최소 증가를 사용하여 CBF에 일부 엘리먼트를 삽입할 때, 증가되어야 하는 버킷은 최소값을 가진 버킷이다. 최소 버킷 값은 삽입되는 엘리먼트가 이전에 카운팅 블룸 필터에 삽입되었을 수 있는 최대 횟수를 나타낼 수 있다. 이 기법은 컴퓨터 네트워크에서 트래픽 흐름을 기록하는데 사용될 수 있지만, CBF의 버킷을 1씩 증가시키는 대신 트래픽 흐름 모니터링 애플리케이션은 패킷의 바이트 수만큼 버킷 값을 증가시킬 수 있다. 이렇게 하면 트래픽 과대 평가를 피할 수 있다. 최소 증가 카운팅 블룸 필터의 예가 도 3a-c에 도시된다.
카운팅 블룸 필터를 사용하여 K+ 값을 추정하는 것은 위에 표시된 블룸 필터 카디널리티 추정 공식을 반복적으로 적용하는 것으로 구성될 수 있다. 기본(1+) 값의 경우 이 기술 솔루션은 공식을 직접 적용할 수 있는 반면 K+ 값의 경우 이 기술 솔루션은 K보다 크거나 같은 값으로 버킷을 채운 다음 동일한 공식을 적용할 수 있다. 예를 들어, 값이 0, 1 또는 2인 모든 버킷을 0으로 카운팅하여 3+ 값을 결정할 수 있다. 중요한 관찰은 이 방법이 히스토그램 빈(bin) 범위가 [0, 1), [1, 2), [2, 3) 등인 CBF 버킷 값의 히스토그램을 사용할 수 있다는 것이다. 멀티 식별자 서버의 경우는 CBF가 동일한 구성(즉, 동일한 m, k 및 해시 함수)을 가지고 있고, 동일한 식별자 공간으로부터 채워졌다고 가정하고, CBF를 버킷 단위로 합산하여 CBF의 유니온(union)을 달성할 수 있음을 관찰하여 해결할 수 있다.
CBF 히스토그램의 안전한 계산
이 프로토콜에 대한 입력은 많은 수의 식별자 서버(예: 퍼블리셔, 공급자 등)(수백 또는 수천 개)에서 나올 수 있으므로, 단순한 MPC 접근 방식을 너무 비효율적이다. 대신, "작업자/클라이언트" MPC 패턴을 따를 것이고, 이 패턴에서는 적은 수의 작업자(예: 3)가 많은 퍼블리셔의 데이터를 사용하여 인터렉티브 MPC 프로토콜에 참여할 수 있다. 제공되는 보안은 모든 작업자 당사자가 손상되지 않는 한 식별자 서버의 데이터가 비공개로 유지될 수 있다는 것이다. 이 방식에서, 다른 엔터티는 다른 작업자를 동작할 수 있다.
프로토콜은 작업자 역할을 하는 임의의 많은 당사자에게 공개될 수 있다. 많은 구현예에서, 작업자 수는 고정되어 있고 작업자 세트는 프로토콜 존재를 실행하기 전에 나머지 작업자가 알고 있다. 프로토콜 초기화는 작업자 수에서 2차 통신이 필요할 수 있다.
프로토콜에 대한 간단한 설명이 아래에 제공된다.
각 작업자(W)는 추가 동형(예: ElGamal) 키 쌍(SK, PK)을 생성할 수 있다. 모든 작업자의 공개 키가 결합되어 각 식별자 서버에 배포되는 UPK(uber-public key)를 생성한다.
각 퍼블리셔(P)는 CBF를 생성하고 UPK를 사용하여 버킷 단위로 암호화하여 잘 알려진 단일 작업자(예: 신뢰할 수 있는 작업자, 임의 작업자 등)에게 보낼 수 있다.
그 다음 제1 작업자는 퍼블리셔 CBF를 버킷 단위로 합산하여 최종 결합 CBF로 결합할 수 있다. 최종 CBF는 여전히 각 작업자의 개인 키로 암호화된다.
다음으로, 블룸 필터를 각 작업자에게 전달될 수 있다.
작업자는 SK로 CBF를 복호화하고, 각 버킷을 결정론적으로 암호화할 수 있다.
작업자는 버킷 히스토그램이 생성될 때 차등적으로 비공개되도록 여러 추가 버킷을 추가하거나 제거하여 노이즈를 적용할 수 있다.
그 다음 작업자는 블룸 필터를 순열할 수 있다.
그 다음 작업자는 순열된 블룸 필터를 다음 작업자에게 보낼 수 있다.
이 프로세스는 제1 작업자가 완전히 결정론적 암호화 방식으로 암호화된 순열된 블룸 필터(예: 링 구성 등)를 다시 받을 때까지 반복된다.
다음으로, 작업자는 각 작업자의 결정론적 키를 사용하여 0에서 원하는 최대 빈도까지 각 값을 암호화할 수 있다.
제1 작업자는 버킷 히스토그램을 구성할 수 있다. 복호화될 수 없는 임의의 값은 최대 빈도와 동일한 것으로 간주되며 해당 버킷에 추가될 수 있다.
마지막으로, 히스토그램은 최대 주파수까지 도달 범위와 빈도를 추정하는데 사용되며 이러한 추정치는 프로토콜의 최종 출력이다.
ElGamal 암호화
ElGamal 암호화는 임계치 복호화를 지원하도록 적응될 수 있는 간단한 공개 키 암호화 방식이다. Diffie-Hellman 키 교환 프로토콜의 오프라인 변형으로 볼 수 있으며, 타원 곡선 암호화를 사용하여 구현될 수 있다. 생성기 G가 있는 타원 곡선 그룹의 기본 방식은 다음과 같다.
KeyGen: 랜덤 정수 X modulo q(타원 곡선 그룹의 순서)를 선택한다. 이는 복호화에 사용되는 개인 키이다; 공개 키는 G^X이다.
Encrypt(pk, m): 랜덤 정수 R modulo q를 선택한다. 암호문은(G^R, m pk^R), 즉(G^R, m G^(XR))이다.
Decrypt(sk, m): 비밀 키를 사용하여 G^(XR)을 계산한 다음 m = m pk^R/G^(XR).
이 방식의 임계 버전은 비밀 키 X가 비밀 공유 방식(예: Shamir의 비밀 키 공유 방식 등)을 사용하여 공유로 배포되도록 제공할 수 있다. 각 당사자는 비밀 키의 공유를 사용하여 "공개 키 공유"를 계산할 수 있으며, 그 후 지수에서 비밀 키 공유를 결합함으로써 "진정한" 공개 키를 계산할 수 있다(공유 결합은 선형 작업이므로 그룹 연산을 사용하여 지수로 수행). 임계치가 N-of-N 인 경우, 모든 "공개 키 공유"를 함께 단순히 곱하면 된다. 복호화 공유는 비밀 키 공유를 사용하여 복호화를 수행하고 공개 키가 계산된 것과 동일한 방식으로 결과를 결합하여 계산될 수 있다.
임계치 변형의 간단한 예는 다음과 같습니다: 두 작업자가 G^X 및 G^Y 키를 생성한다. 이 공개 키를 곱하면, 암호화를 위한 공개 키로 사용될 수 있는 G^(X + Y)를 얻고, 대응 비밀 키는 X+Y이다. 그러나 복호화를 위해 원래 비밀 키를 (순서에 관계없이) 하나씩 적용할 수 있으므로 단일 당사자가 공동 개인 키를 알 필요가 없다.
ElGamal 암호화는 추가적인 유용한 속성을 포함할 수 있다: 곱셈 동형을 지원할 수 있다. 두 개의 암호문(G^ R1, M1 G^X R1), (G^R2, M2 G^X R2)이 주어지면, (G^(R1 + R2), M1 M2 G^X(R1 + R2))를 계산할 수 있고, 두 메시지의 곱으로 복호화할 수 있다. 이것은 메시지의 이산 로그에 대한 추가 동형이다; 즉, 우리는 작은 메시지 공간(이산 로그를 효율적으로 계산하는데 충분하게 작은)에서 작동하는 (G^(R1 + R2), G^(M1+M2) G^X(R1 + R2))를 계산하기 위해 이것을 사용할 수 있었다.
우리의 경우, 지수에서 합계를 수행하는 것으로 충분할 수 있다. 카운팅 블룸 필터 추정은 임계 K 미만의 엘리먼트 카운트를 사용할 수 있으며, 이는 룩업 테이블이 디코딩에 충분할 만큼 작다. 여기에 작은 보안 이점도 있다: 애그리게이터는 해당 값이 무엇인지 알지 않고도 임계치를 초과하는 값의 카운트를 학습할 수 있다. 이를 위해, 작업자는 결정론적 암호화(예: Pohlig-Hellman 암호 등)를 사용할 수 있으며, 이는 각 작업자가 부분적으로 복호화된 모든 버킷에 적용되는 비밀 지수를 선택하는 것을 포함할 수 있다; 이것은 동형을 통해서도 수행될 수 있다(이것은 생성기 G를 임의의 그룹 엘리먼트로 변경하는 것과 같다).
블룸 필터를 사용한 접근법, (n-1) 공모(Collusion) HBC
이 접근법에서 작업자는 임계 개인 키와 함께 추가 동형 암호화를 사용하여, 카운팅 블룸 필터의 합계를 계산한 다음, 애그리게이터에게 결과를 공개하기 전에 보안 셔플 및 결정적 암호화를 수행할 수 있다. 합산은 가산적 동형을 사용하여 한 당사자가 직접 계산할 수 있다(예: 퍼블리셔가 블룸 필터의 암호화를 지정된 작업자에게 보내도록 함 등).
효율적으로 순열하기 위해, 이 기술 솔루션은 암호화 방식의 임계 속성을 사용할 수 있다. 단일 당사자가 순열을 수행하는 것을 신뢰하지 않도록, 솔루션은 각 당사자가 무작위로 필터를 순열하도록 할 수 있다(두 순열의 구성은 순열임을 기억). 암호화된 블룸 필터를 수신하고 초기 합산을 계산한 제1 당사자가 제1 순열을 수행할 수 있다. 그 후, 해당 당사자는 암호화된 블룸 필터를 다시 랜덤화한 다음, 복호화 키 공유를 적용하여 결과를 부분적으로 복호화하고 마지막으로 결정론적 방식의 키 공유를 적용할 수 있다. 그 후, 셔플/재랜덤화된 암호문은 다음 당사자에게 전송될 수 있으며, 마지막에는 최종 복호화를 위해 애그리게이터에게 전송될 수 있다.
1 단계 : ElGamal 키 설정
제1 단계로, 작업자는 위에서 설명한 대로 임계 ElGamal 키를 설정한 다음, 결합된 키를 각 퍼블리셔가 사용할 수 있게 한다.
2 단계 : 입력
이 프로토콜은 합계를 계산할 수 있다. 식별자 서버는 작업자가 제공한 복합 공개 키를 사용하여 버킷 단위로 카운팅 블룸 필터를 암호화하고, 임의로 선택할 수 있는 "제1" 당사자에게 암호문을 보낼 수 있다. 그 후, 해당 당사자는 암호문에 대한 동형 더하기 연산을 사용하여 합계를 계산할 수 있으며, 결정론적 암호화 하에서 애그리게이터가 학습할 수 있는 값을 암호화하여 디코딩 룩업 테이블을 추가할 수 있다. 이 당사자가 애그리게이터 자체가 될 수 있지만, 이 경우 애그리게이터는 암호문을 순열을 위해 다음 당사자에게 보내기 전에 부분적으로 암호를 복호화해서는 안된다. - 애그리게이터의 복호화는 애그리게이터가 결과를 학습하도록 보장하는 마지막 단계여야 한다(순열되고 결정론적으로 암호화된 블룸 필터).
3 단계: 셔플링
다음으로, 제1 당사자는 암호문을 부분적으로 복호화하고, 결정론적 암호화 키를 적용하고, 암호화된 필터(룩업 테이블이 아님)를 셔플링하고, 모든 것을 제2 당사자에게 전달할 수 있다. 그 후, 제2 당사자는 부분적으로 암호를 복호화하고, 그 키 하에서 결정론적 암호화를 적용하고, 유일한 남은 복호화가 애그리게이터의 키와 관련될 때까지 셔플(예: 확률적 데이터 구조에서 순열, 순서 변경 또는 포지션 스왑 등)하고, 모든 것을 제3 당사자 등에게 전달할 수 있다.
비밀 공유 방식에 대해 임계치 N을 설정함으로써, 이 기술 솔루션은 작업자의 공모 서브세트가 다른 당사자의 개인 정보를 침해할 수 없도록 한다. 작업자 중 한 명만 순열을 비밀로 유지해야 하기 때문에, 순열은 작업자 간의 임의 공모에 대해 비밀로 유지될 수도 있다. 또 다른 옵션은 MPC 프로토콜을 사용하여 K보다 큰 값의 합계를 계산하는 것이지만 그렇게하는 것은 훨씬 더 많이 계산 집약적일 수 있다.
분산된 차등 비공개 노이즈 생성
노이즈의 추가는 분산된 방식으로 발생하므로, 각 히스토그램 빈에 추가된 총 노이즈는 본 명세서에 기술된 양측 기하학적 분포(two-tailed geometric distribution)를 따를 수 있다. 특히, 각 히스토그램 빈, [0, 최대 빈도]에 대해 각 작업자는 작업자가 각 빈에 추가할 수 있는 노이즈의 양을 결정할 수 있는 랜덤 변수(예: Polya(음이 항의 특수한 경우) 랜덤 변수 등)를 생성할 수 있다. 따라서, 적절하게 구성된 랜덤 변수의 합이 양측 기하학적 랜덤 변수와 같을 수 있으므로, 각 빈은 원하는 양의 노이즈를 수신할 수 있다. 이를 달성하기 위해 위에서 설명한 프로토콜에 몇 가지 수정 사항이 있다.
셔플(예: 각 작업자의 순열)이 시작되기 전에 다음이 발생할 수 있다.
작업자는 노이즈 기준에 동의할 수 있으며, 이는 높은 확률로 개별 작업자가 생성한 음의 노이즈 값보다 클 수 있는 정수일 수 있다. 이 값을 B라고 한다.
각 작업자는 max_frequency + 1 개의 랜덤 변수(예: Polya 랜덤 변수 등) [X0, X1, ... Xi, ..., Xmf]를 생성할 수 있고, 크기 B - X i 의 어레이를 생성한다. 이것을 노이즈 어레이라고 한다.
그 후, 각 i에 대해, 노이즈 어레이를 iB - X i 사본으로 채울 수 있다.
그 후, 각 작업자는 노이즈 어레이를 셔플링하고 ElGamal 공개 키로 각 값을 암호화할 수 있다.
그 후, 각 작업자는 셔플을 시작할 작업자에게 노이즈 어레이를 보낼 수 있다.
그 후, 제1 작업자는 위의 프로토콜에 설명된 대로 모든 CBF를 합산하기 전에 모든 노이즈 어레이를 CBF에 첨부할 수 있다.
마지막으로, 히스토그램이 구성된 후 애그리게이터는 B * 각 히스토그램 버킷에서 작업자 수를 빼면, 기본적으로 각 빈에서 노이즈 기준을 제거하고 양면 기하학적 노이즈만 남길 수 있다.
위의 프로토콜에 대한 적어도 하나의 보호는 식별자 서버가 자체 임계치를 유지하여 N 클라이언트 식별자 또는 속성을 이미 포함하지 않는 한 계산에 대한 세트를 제공하지 않는 것이다. 셔플 단계 동안에 블룸 필터에 DP 노이즈를 추가하면 문제를 완화하는 데 도움이 된다.
카디널리티/주파수 추정에 CBF를 사용할 때의 근본적인 문제는 고정 오류율을 유지하는데 필요한 버킷 수가 추정되는 세트의 크기에서 선형적으로 확장된다는 것이다. 또한 보안 프로토콜에서는 각 퍼블리셔가 생성되는 모든 CBF의 각 버킷을 암호화해야 한다.
문제의 규모는 다양한 속성에서 도달 값을 계산하기 위해 하루에 약 500억 개의 식별자를 프로세싱될 수 있다고 가정할 수 있다. 블룸 필터가 여기에 3배의 오버 헤드를 추가한다고 가정하면 각 식별자 서버는 1,500 억 개의 버킷 암호화를 수행할 수 있으며, 위 문서의 숫자를 사용하면 ~42 CPU 시간이 필요함을 의미한다. 64 바이트 암호 텍스트를 가정하면, 하루에 약 9.6TB의 데이터 전송을 제공할 수 있다. 이는 특히 모든 규모의 퍼블리셔에게 적용되는 상수라는 점을 반영할 때 상당할 수 있다. 다행히, 이 오버 헤드를 완화할 수 있는 몇 가지 방법이 있다.
첫째, 식별자 서버 측 암호화를 제거할 수 있으며 이에 따라 수반되는 암호문 확장으로 인한 통신 오버 헤드를 제거할 수 있다. 여기서, 각 버킷에 대해, 식별자 서버는 CBF가 합산된 엘리먼트가 CBF와 동일한 k 어레이로 표현되도록 버킷 값에 합산되는 k 개의 난수를 생성할 수 있다. 그 후, 식별자 서버는 위에서 설명한 대로 El Gamal 암호화 레이어를 적용하기 전에 퍼블리셔 간에 CBF 공유를 합산할 수 있는 개별 MPC 작업자에게 CBF 공유라고 하는 어레이를 보낼 수 있다. 암호화되면 각 작업자는 암호화된 CBF 공유를 결합할 수 있는 단일 작업자에게 보낼 수 있으며, 그 결과 완전히 결합된 x-pub CBF가 된다. 여기에서 위에서 설명한 프로토콜의 복호화/셔플 단계가 시작될 수 있다. 이 옵션에서, 버킷 공유의 크기는 1 바이트, 2 바이트 또는 4 바이트가 될 수 있으며 결과적으로 하루에 450GB, 900GB 또는 1800GB의 데이터 전송이 가능하다. 여기서 1 바이트의 경우(3 공유 * 1 바이트 * 500억). 이것은 MPC 시스템, 보안 식별자 카운팅 시스템, 빈도 카운팅 시스템 및 식별자 통신 시스템에 실질적 개선을 제공할 수 있다.
적어도 한 가지 개선 사항은 식별자 서버가 작업자 중 하나를 신뢰하고 해당 작업자에게 CBF를 전송하는 것이다. 그 후, 단일 작업자의 CBF를 명확하게 결합할 수 있으며, 해당 작업자는 부분 x-pub CBF를 암호화하는 부담을 감당할 수 있다. 이러한 부분적 x-pub CBF는 동형으로 결합할 수 있는 단일 작업자에게 보낼 수 있다. 그리고, 여기에 설명된 바와 같이, 복호화/셔플 단계가 시작될 수 있다. 이 경우 버킷 당 1 바이트를 가정하면 하루에 150GB의 데이터 전송이 있다. 이것은 MPC 시스템, 보안 식별자 카운팅 시스템, 빈도 카운팅 시스템 및 식별자 통신 시스템에 실질적 개선을 제공할 수 있다.
흥미롭게도, 여기에 설명된 구현예는 위에서 설명된 두 가지 대안과 결합될 수 있으며, 각 식별자 서버(예를 들어, 퍼블리셔)는 시스템과 상호 작용하는 방법을 독립적으로 선택할 수 있다. 덧산의 연관성에 의해 각 작업자는 CBF 공유와 일반 텍스트 CBF를 쉽게 결합할 수 있다. 그 후, 모든 작업자가 그들의 암호화된 부분 x-pub CBF를 상기 암호화된 부분 x-pub CBF를 동형으로 결합하여 완전한 x-pub CBF를 얻을 수 있는 단일 작업자에게 전송하기 전에 이러한 조합을 암호화하고 작업자 별로 다른 암호화된 CBF와 결합할 수 있고, 다시 원래 프로토콜의 셔플 단계를 시작할 수 있다. 이것은 MPC 시스템, 보안 식별자 카운팅 시스템, 빈도 카운팅 시스템 및 식별자 통신 시스템에 실질적 개선을 제공할 수 있다.
다음은 차등 비공개 CBF 히스토그램을 계산하기 위한 암호화 보안 프로토콜을 설명한다.
차등 비공개 CBF 버킷
전체 CBF를 쿼리의 출력으로 사용하는 제1 작업은 민감도를 결정하는 것이다. 이는 먼저 단일 속성의 경우에 수행된 다음, 단일 클라이언트 디바이스와 연관된 모든 속성으로 확장될 수 있다. 충돌을 무시하고, 최대 k(해시 수) 버킷이 삽입 당 증가한다. 최소 증가 사례의 경우 더 작을 수 있지만, 최악의 경우 개인 정보를 손상시키지 않으며, 최소 증가 사례를 특성화하는 것은 다루기 어려운 것처럼 보인다.
단일 노출에 대한 쿼리 민감도를 고려하는 적어도 한 가지 방법은 각 해시 함수의 출력을 L1 민감도가 1인 별개의 쿼리로 간주하는 것이다. 이 경우 전체 CBF 쿼리의 민감도는 k이다. 다른 극단은 전체 CBF 쿼리의 민감도를 1로 선언하는 것이다. 다음은 이 특성화를 진행하며, 이 완화된 가정에서도 버킷 수준의 DP가 실행 가능하지 않음을 보여준다.
민감도는 인접한 두 데이터베이스 간의 최대 거리로 정의할 수 있다. 그 후, 단일 노출에 대한 CBF의 민감도가 1이라고 가정하면, 이를 클라이언트 식별자로 확장하면, 민감도가 특정 속성과 가장 많이 연관된 클라이언트 식별자와 연관된 속성의 총 수와 같을 수 있다. 다시 말해, 이것은 최대 빈도가 될 수 있으며, 이는 k 개의 가장 큰 버킷의 최소값에 의해 제한될 수 있고, 여기서 이에 대한 인수는 최소 증가의 유효성에 대한 인수와 유사하다.
그 다음 CBF를 차등적 비공개로 하려면, 설명된 바와 같이 최대 빈도를 추정하고, 각 버킷에 양면 기하학적 노이즈를 적용하여, 음이 되는 버킷이 0값을 갖도록 노이즈를 잘라 내면 충분한다. 다음 표는 다양한 엡실론 및 민감도 값에 대한 기하학적 분포에 대한 파라미터를 도시한다.
Figure pct00004
한 가지 관찰은 엡실론과 민감도의 적당한 값 조차도 분포의 꼬리가 상당히 길 수 있다는 것이다. 예를 들어, 최대 빈도에 대한 일반적인 값이 상당히 과소 평가될 수 있는 8이라고 가정하면, 엡실론이 1인 경우에도 필요한 노이즈의 양은 견딜 수 없는 것처럼 보이기 시작한다. 그러나 버킷 카운트의 히스토그램을 추정에 사용할 수 있으므로, 집합에서 노이즈가 제거될 수 있는 가능성이 있다. 특히, 노이즈가 있는 히스토그램은 양면 기하 분포의 기대치에 기초하여 디노이징된 히스토그램을 생성하는 보정 행렬로 곱해질 수 있다.
X는 버킷에 양면 기하학적 노이즈를 적용한 후 CBF 버킷의 히스토그램이 될 수 있는 노이즈이 있는 히스토그램이다. Y는 원래 CBF에서 생성된 히스토그램이다. 그러면:
E[X] = A * Y
여기서:
A = [a0, a1, a2, …, ai, ... an]T
그리고 각 ai는 n+1 엘리먼트를 가진 행 벡터일 수 있다.
a0 =[P(Z <= 0), …, P(Z <= n)]
ai =[P(Z = i - j)] - for j in [0, n]
an =[P(Z >= n), …, P(Z >= 0)]
그리고 Z는 양면 기하 랜덤 변수일 수 있다. 기본적으로, a i *YY의 엘리먼트가 X의 특정 빈에 할당될 예상치일 수 있다. A는 열 확률적일 수 있다.
그 다음,
Figure pct00005
=A -1 * X이고, 여기서
Figure pct00006
는 카디널리티를 추정하는데 사용될 수 있는 디노이징된 히스토그램일 수 있다.
적어도 하나의 다른 구현예에서, K+ 값 추정 함수는 다음과 같이 진행될 수 있다.
카운팅 블룸 필터의 각 항목에 대해, 항목이 K보다 크면, 출력 합계에 포함하고 그렇지 않으면 무시한다. MPC에서 이를 계산하기 위해, 시스템은 세트의 각 엘리먼트에 대해 비교, 합계 및 단일 비트 곱(product)을 수행할 수 있다.
b ← x[i] >= K // b 는 0 또는 1 값
sum ← sum + x[i]*b
비교 함수를 계산하면, 필터 엘리먼트의 비트 단위 분해를 사용할 수 있으며, 이는 더 많은 통신을 요구하여 전체 프로토콜의 계산 비용을 높일 수 있다. 비교 자체에는 산술 회로를 계산하는 "일반적인" MPC 구성이 필요하며, 이는 라운드 수를 크게 늘리지 않고도 SPDZ 프로토콜 변형을 사용하여 달성될 수 있다.
산술 회로를 사용하여 비교를 수행하기 위해, 시스템은 "textbook" 감산 알고리즘인 "ripple-borrow" 감산기를 평가할 수 있다. 직관은 X의 상위 비트를 지나서 차용할 필요없이 XY가 계산될 수 있다면 X>=Y이다. 이를 수행하는 한 가지 방법은 함수에 대한 부울 회로를 시뮬레이션하여, "산술 회로"를 생성하는 것이다. 예를 들어, 2 비트 숫자를 비교하려면:
[a0, a1] < [b0, b1]
다음 부울 공식을 사용할 수 있다:
((! a1) && ((! a0) && b0)) || ((! a1) && b1) || ((! a0) && b0) && b1)
이제 이들이 0/1 값들이라고 가정한다(필드에서, 따라서 비트 분해가 필요함). 다음 규칙을 사용하여 동일한 공식을 시뮬레이션할 수 있다:
! x → (1-x)
x && y → x * y
x || y → x + y-x * y
따라서 콤퍼레이터는 다음과 같다:
c1 = ((1 - a1) * ((1 - a0) * b0))
c2 = ((1 - a1) * b1)
c3 = ((1 - a0) * b0 * b1)
out ← c1 + c2 + c3-c1 * c2-c1 * c3-c2 * c3 + c1 * c2 * c3
이것은 임의로 많은 비트들로 확장될 수 있다. 최종 출력은 0/1 값이므로 상기 기술된 바와 같이 합계에 값을 선택적으로 포함하는데 사용할 수 있다.
이 경우 결합된 블룸 필터에 관한 부분적인 정보가 공개되지 않으므로 MPC 프로토콜 자체의 보안을 통해 프라이버시를 보호할 수 있다. 이 경우 필터가 일반으로 표시되지 않기 때문에 필터에서 임의의 순열을 수행할 필요가 없다. 프로토콜의 끝에서 작업자는 합계의 지분을 갖게 되며, 이를 누산기 또는 출력을 받을 자격이 있는 다른 작업자에게 보낼 수 있다.
K가 2의 거듭 제곱인 경우 온라인 프로토콜을 개선할 수 있다. 제1 단계는 각 당사자의 개별 Bloom 필터에 대한 합계를 계산하는 것임을 기억하고; 그 다음 K 값을 초과하지 않는 엘리먼트를 카운트한다. K가 2의 거듭 제곱이면, 이는 특정 포지션을 넘어가는 비트가 있는지 확인하는 것에 해당하고, 콤퍼레이터를 완전히 피하고 덧셈 회로만 온라인으로 계산할 수 있다.
곱셈 게이트 당 하나의 브로드캐스트 라운드를 가정하면, 블룸 필터 엘리먼트가 4비트이면 9개의 브로드캐스트 라운드가 필요하다(가산 회로에 8회, 추가에서 수행된 OR에 대해 1회; 최종 합계는 곱셈이 필요없는 선형 조합). 임의의 공모에 대한 보안을 위해, 정직하지만 호기심 많은 설정(honest-but-curious setting)에서 SPDZ 프로토콜을 사용하면 주요 계산 비용은 Beaver 트리플을 계산하는 것이다.
곱셈 게이트 당 하나의 브로드캐스트 라운드를 가정하면, 블룸 필터 엘리먼트가 4비트이면 9개의 브로드캐스트 라운드가 필요하다(가산 회로에 8회, 추가에서 수행된 OR에 대해 1회; 최종 합계는 곱셈이 필요없는 선형 조합). 임의의 공모에 대한 보안을 위해, 정직하지만 호기심 많은 설정(honest-but-curious setting)에서 SPDZ 프로토콜을 사용하면 주요 계산 비용은 Beaver 트리플을 계산하는 것이다.
이제 도 1을 참조하면, 도시된 것은 네트워킹 환경에서 클라이언트 디바이스 식별자의 카운트 및 빈도를 결정하기 위해 카운팅 블룸 필터를 생성하기 위한 시스템(100)이다. 시스템(100)은 분산 동형 암호화를 사용하여 벡터로부터 추정된 데이터 빈도의 히스토그램을 생성할 수 있다. 시스템(100)은 적어도 하나의 데이터 프로세싱 시스템(105A-N)(때로는 일반적으로 데이터 프로세싱 시스템(105)이라고도 함), 적어도 하나의 네트워크(110), 적어도 하나의 데이터베이스(115) 및 적어도 하나의 클라이언트 디바이스(120A-N)(때로는 일반적으로 클라이언트 디바이스(120)라고 함)를 포함할 수 있다. 데이터 프로세싱 시스템(105)은 적어도 하나의 벡터 생성기(130), 적어도 하나의 해시 식별자(134), 적어도 하나의 데이터 레코드 해시기(140), 적어도 하나의 암호화 키 생성기(145), 적어도 하나의 벡터 암호화기(150), 적어도 하나의 암호화된 벡터 통신기(155), 적어도 하나의 벡터 결합기(160), 적어도 하나의 히스토그램 생성자(165) 및 적어도 하나의 카디널리티 추정기(170)를 포함할 수 있다. 데이터베이스(115)는 적어도 하나의 데이터 레코드(122A-N)(때로는 일반적으로 데이터 레코드(120)로 지칭됨)를 포함할 수 있다. 각각의 데이터 레코드(122)는 적어도 하나의 클라이언트 식별자(125A-N)(때로는 일반적으로 클라이언트 식별자(125)로 지칭됨) 및 적어도 하나의 속성(127A-N)(때로는 일반적으로 속성(127)으로 지칭됨)을 포함할 수 있다.
시스템(100)의 각 컴포넌트(예: 데이터 프로세싱 시스템(105), 네트워크(110), 데이터베이스(115), 클라이언트 디바이스(120), 벡터 생성기(130), 해시 식별자(135), 데이터 레코드 해시기(140), 암호화 키 생성기(145), 벡터 암호화기(150), 암호화된 벡터 통신기(155), 벡터 결합기(160), 히스토그램 구성기(165), 카디널리티 추정기(170), 데이터 레코드(122), 클라이언트 식별자(125) 및 속성(127) 등)은 도 8과 관련하여 본 명세서에 상세화된 컴퓨팅 시스템(800)의 하드웨어 컴포넌트와 소프트웨어의 조합 또는 하드웨어 컴포넌트를 사용하여 구현될 수 있다. 예를 들어, 데이터 프로세싱 시스템(105)은 서버 또는 다른 컴퓨팅 디바이스를 포함할 수 있다. 클라이언트 디바이스(120)는 서버 또는 다른 컴퓨팅 디바이스를 포함할 수 있다. 데이터 프로세싱 시스템(105)의 각 컴포넌트들은 본 명세서에 상세히 설명된 기능을 수행할 수 있다.
네트워크(110)는 인터넷, 로컬, 와이드, 메트로 또는 다른 영역 네트워크, 인트라넷, 위성 네트워크, 음성 또는 데이터 모바일폰 통신 네트워크와 같은 다른 컴퓨터 네트워크들 및 이들의 조합과 같은 컴퓨터 네트워크를 포함할 수 있다. 시스템(100)의 데이터 프로세싱 시스템(105)은 예를 들어 적어도 하나의 콘텐츠 제공자(115) 및 적어도 하나의 데이터베이스(120)와 네트워크(110)를 통해 통신할 수 있다. 네트워크(110)는 콘텐츠 제공자(115), 데이터 프로세싱 시스템(105) 및 특히 웹 서버와 같은 하나 이상의 콘텐츠 소스들 간의 정보를 중계하는 임의의 형태의 컴퓨터 네트워크일 수 있다. 일부 구현예들에서, 네트워크(110)는 근거리 통신망(LAN), 광역 통신망(WAN), 셀룰러 네트워크, 위성 네트워크 또는 다른 유형의 데이터 네트워크와 같은 인터넷 및/또는 다른 유형의 데이터 네트워크를 포함할 수 있다. 네트워크(110)는 또한 네트워크(110) 내에서 데이터를 수신 및/또는 전송하도록 구성된 임의의 수의 컴퓨팅 디바이스(예를 들어, 컴퓨터, 서버, 라우터, 네트워크 스위치 등)를 포함할 수 있다. 네트워크(110)는 임의의 수의 고정 배선 및/또는 무선 연결을 더 포함할 수 있다. 콘텐츠 제공자(115)는(예를 들어, 광섬유 케이블, CAT5 케이블 등을 통해) 배선된 송수신기와 무선으로(예를 들어, WiFi, 셀룰러, 라디오 등을 통해) 네트워크(110) 내 다른 컴퓨팅 디바이스들과 통신할 수 있다. 콘텐츠 제공자(115)는 또한 프록시 디바이스(예를 들어, 라우터, 네트워크 스위치 또는 게이트웨이)를 통해 네트워크(110)의 컴퓨팅 디바이스와 무선으로 통신할 수 있다.
보다 상세하게는, 데이터 프로세싱 시스템(105)은 적어도 하나의 프로세서 및 메모리, 즉 프로세싱 회로를 포함할 수 있다. 메모리는 프로세서에 의해 실행될 때 프로세서로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 하는 프로세서 실행가능 명령어들을 저장한다. 프로세서는 마이크로 프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 등, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령어들을 제공할 수 있는 임의의 다른 저장 또는 전송 디바이스를 포함할 수 있지만, 이에 한정되지 않는다. 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, ROM, RAM, EEPROM(electrically-erasable programmable ROM), EPROM(erasable-programmable ROM), 플래시 메모리, 광학 매체, 또는 프로세서가 명령어들을 판독할 수 있는 임의의 기타 적절한 메모리를 포함할 수 있다. 명령어들은 임의의 적절한 컴퓨터 프로그래밍 언어의 코드가 포함될 수 있다. 데이터 프로세싱 시스템(105)은 예를 들어 본 명세서에 기술된 기능 또는 방법을 포함하는 다양한 기능들을 수행할 수 있는 하나 이상의 컴퓨팅 디바이스들 또는 서버들을 포함할 수 있다.
데이터베이스(115)는 본 명세서에 기술된 임의의 정보를 저장 및/또는 유지하도록 구성된 데이터베이스일 수 있다. 데이터베이스(115)는 본 명세서에서 설명된 각각의 값, 복수 또는 임계치를 포함 또는 색인할 수 있는 하나 이상의 데이터 구조를 유지할 수 있다. 데이터베이스(115)는 하나 이상의 메모리 어드레스 또는 인덱스 값을 사용하여 액세스될 수 있다. 데이터베이스(115)는 데이터 프로세싱 시스템(105)의 컴포넌트 또는 네트워크(110)를 통해 클라이언트 디바이스(120)에 의해 액세스될 수 있다. 일부 구현예에서, 데이터베이스(115)는 데이터 프로세싱 시스템(105)에 내부적일 수 있다. 일부 구현예에서, 시스템(100)은 다수의 데이터베이스를 포함할 수 있으며, 각각의 데이터베이스(115)는 적어도 하나의 데이터 프로세싱 시스템(105A-N)에 대응한다. 예를 들어, 데이터 프로세싱 시스템(105A-N) 각각은 자신의 데이터베이스를 포함하거나 그와 통신할 수 있다. 일부 구현예에서, 데이터베이스(115)는 데이터 프로세싱 시스템(105) 외부에 존재할 수 있고 네트워크(110)를 통해 액세스될 수 있다. 데이터베이스(115)는 많은 상이한 컴퓨터 시스템들 또는 저장 엘리먼트들에 걸쳐 분산될 수 있고, 네트워크(110) 또는 적절한 컴퓨터 버스 인터페이스를 통해 액세스될 수 있다. 데이터 프로세싱 시스템(105)은 임의의 또는 모든 계산, 결정, 선택, 식별, 생성, 구성 또는 연산의 결과를 적절한 값으로 인덱스된 하나 이상의 데이터 구조로 데이터베이스(115)에 저장할 수 있으며, 이들 각각은 본 명세서에 기술된 기능 또는 함수 중 하나를 수행하기 위해 데이터 프로세싱 시스템(105) 또는 클라이언트 디바이스(120)에 의해 액세스될 수 있다.
클라이언트 디바이스(120)는 네트워크(110)를 통해 통신하여 데이터 프로세싱 시스템(105)에 의해 제공되는 표시(예를 들어, 클라이언트 식별자 세트(125), 속성(127), 빈도 값 또는 본 명세서에 기술된 임의의 기타 값 등의 카디널리티를 디스플레이하는 표시)와 같은 데이터를 디스플레이하도록 구성된 컴퓨팅 디바이스일 수 있다. 클라이언트 디바이스(120)는 다른 것들 중에서도 특히, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 개인 휴대 정보 단말기, 모바일 디바이스, 컨슈머 컴퓨팅 디바이스, 서버, 클라이언트, 디지털 비디오 레코더, 텔레비전용 셋톱 박스, 비디오 게임 콘솔 또는 네트워크(110)를 통해 통신하도록 구성된 임의의 기타 컴퓨팅 디바이스일 수 있다. 클라이언트 디바이스(120)는 하나 이상의 클라이언트 식별자(125) 또는 하나 이상의 속성(127)을 데이터 프로세싱 시스템으로 전송 또는 수신할 수 있다. 클라이언트 디바이스(120)는 각각의 클라이언트 디바이스(120)와 연관하여 클라이언트 식별자(125) 또는 속성(127)을 저장하기 위해 적어도 하나의 데이터베이스(115)와 통신할 수 있다.
클라이언트 디바이스(120)는 프로세서 및 메모리, 즉 프로세싱 회로를 포함할 수 있다. 메모리는 프로세서에 의해 실행될 때 프로세서로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 하는 기계 명령어들을 저장한다. 프로세서는 마이크로 프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 등, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령어들을 제공할 수 있는 임의의 다른 저장 또는 전송 디바이스를 포함할 수 있지만, 이에 한정되지 않는다. 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, ROM, RAM, EEPROM(electrically-erasable programmable ROM), EPROM(erasable-programmable ROM), 플래시 메모리, 광학 매체, 또는 프로세서가 명령어들을 판독할 수 있는 임의의 기타 적절한 메모리를 포함할 수 있다. 명령어는 임의의 적절한 컴퓨터 프로그래밍 언어의 코드를 포함할 수 있다.
클라이언트 디바이스(120)는 또한 하나 이상의 사용자 인터페이스 디바이스를 포함할 수 있다. 일반적으로, 사용자 인터페이스 디바이스는 감각 정보(예를 들어, 디스플레이상의 시각화, 하나 이상의 사운드 등)를 생성함으로써 사용자에게 데이터를 전달하고 및/또는 사용자로부터 수신된 감각 정보를 전자 신호(예를 들어, 키보드, 마우스, 포인팅 디바이스, 터치 스크린 디스플레이, 마이크로폰 등)로 변환하는 임의의 전자 디바이스를 지칭한다. 하나 이상의 사용자 인터페이스 디바이스들은 클라이언트 디바이스(120)의 하우징 내부(예: 내장 디스플레이, 마이크로폰 등) 또는 클라이언트 디바이스(120)의 하우징 외부(예: 클라이언트 디바이스(120)에 연결된 모니터, 클라이언트 디바이스(120)에 연결된 스피커 등)에 있을 수 있다. 일부 구현예에서, 클라이언트 디바이스(120)는 클라이언트 디바이스(120)에서 실행되는 운영 체제에 의해 제공되거나, 데이터베이스(115)로부터 검색되거나, 데이터 프로세싱 시스템(105)에 의해 제공되는 인터페이스 데이터를 사용하여 인터페이스를 시각적으로 디스플레이하는 전자 디스플레이를 포함할 수 있다.
데이터 프로세싱 시스템(105)은 데이터베이스(115)에서 적어도 하나의 데이터 레코드(122)를 유지할 수 있다. 데이터 레코드는 예를 들어, 적어도 하나의 클라이언트 식별자(125) 및 적어도 하나의 속성(127)을 포함할 수 있다. 클라이언트 식별자(125)는 클라이언트 디바이스(120) 각각에 대응할 수 있다. 속성은 데이터 레코드(122)의 클라이언트 식별자(125)와 연관될 수 있고, 각각의 클라이언트 디바이스(120)의 속성에 대한 정보를 포함할 수 있다. 속성은 예를 들어, 클라이언트 디바이스 위치 데이터, 클라이언트 디바이스 메타 데이터, 클라이언트 디바이스 파라미터, 설정 및 기타 정보, 사용자 프로필 데이터, 클라이언트 디바이스에서 수행한 인터렉션, 애플리케이션 검색 기록, 웹 페이지 검색 기록, 활동 정보, 디바이스 특성, 클라이언트 디바이스가 콘텐츠 아이템을 보거나 인터렉션했는지 여부, 네트워크 사용 정보, 전력 사용 정보, 디바이스 운영 체제 버전, 설정 및 기타 정보를 포함할 수 있다. 데이터 프로세싱 시스템은 각각의 클라이언트 디바이스로부터 디바이스 식별자 및 속성 데이터를 수신하고, 데이터베이스(115)에서 각각의 클라이언트 디바이스에 대응하는 각각의 데이터 레코드를 생성하고 유지할 수 있다. 모든 클라이언트 디바이스(120)가 각각의 데이터 프로세싱 시스템(105A-N)과 통신하고 있다고 도 1에 도시되어 있지만, 각각의 데이터 프로세싱 시스템은 클라이언트 디바이스(120)의 특정 세트로부터만 클라이언트 디바이스 식별자 및 정보를 수신할 수 있다는 것을 이해해야 한다. 마찬가지로, 데이터 프로세싱 시스템(105A-N)은 다른 데이터 프로세싱 시스템(105A-N)에 의해 액세스될 수 없는 자신의 데이터베이스(115)에 각각의 데이터 레코드를 유지할 수 있다. 일부 구현예에 따르면, 클라이언트 디바이스(120)의 상이한 그룹은 상이한 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105))에 의해 서비스될 수 있고, 각각의 데이터 프로세싱 시스템은 클라이언트 디바이스 세트(120) 중 각각의 클라이언트 디바이스에 대응하는 데이터 레코드의 고유 세트를 유지할 수 있다.
벡터 생성기(130)는 복수의 좌표를 포함하는 벡터를 생성할 수 있다. 벡터를 생성하기 위해, 벡터 생성기(130)는 적어도 하나의 카운터 레지스터를 수용하기 위해 데이터 프로세싱 시스템(105)에 하나 이상의 메모리 영역을 할당할 수 있다. 할당된 카운터 레지스터는 벡터의 적어도 하나의 좌표에 대응할 수 있다. 하나 이상의 카운터 레지스터에 대한 메모리를 생성 및 할당함으로써, 벡터 생성기(130)는 카운터 레지스터를 포함하는 벡터를 생성할 수 있다. 벡터 생성기(130)는 벡터의 카운터 레지스터 각각을 초기화 값, 예를 들어 0 또는 1로 초기화할 수 있다. 벡터 생성기(130)는 임의의 수의 카운터 레지스터(때로는 "버킷"이라고도 함)를 갖도록 최소 증가 카운팅 블룸 필터에 대응할 수 있는 벡터를 생성할 수 있다. 예를 들어, 벡터 생성기(130)는 n개의 버킷을 갖는 최소 증가 카운팅 블룸 필터를 생성하기 위한 표시를 수신할 수 있거나, 버킷 또는 카운터 레지스터 수에 의해 최소 증가 카운팅 블룸의 크기를 특정하는 외부 컴퓨팅 디바이스에 의해 제공되는 내부 구성 설정에 액세스할 수 있다.
해시 식별자(135)는 카운팅 블룸 필터 데이터 구조를 업데이트하는데 사용할 수 있는 해시 함수 목록으로부터 하나 이상의 해시 함수를 식별할 수 있다. 예를 들어, 해시 목록에서 식별된 각 해시는 입력 값에 기초하여 정규 분포 또는 임의성 기대치를 제공할 수 있다. 즉, 예를 들어 해시 함수에 대한 유사한 입력이 반드시 해시 함수와 유사한 출력을 갖는 것은 아니다. 해시 함수는 블룸 필터를 카운팅하기 위한 최적의 해시 함수로 선택할 수 있다. 예를 들어, 해시 식별자(135)는 독립적이고 균일하게 분포된 해시 함수를 선택할 수 있다. 이러한 해시 함수는 예를 들어 murmur 해시, Fowler-Noll-Vo 시리즈 해시 또는 Jenkins 해시 등을 포함할 수 있다. 해시 식별자(135)는 다수의 해시 함수를 선택하거나 식별할 수 있고, 각각의 해시 함수를 각 데이터 레코드에 적용하여 해시된 데이터 레코드 세트를 생성할 수 있다.
데이터 레코드 해시(140)는 각각의 데이터 프로세싱 시스템(105)에 의해 유지되는 각각의 데이터 레코드를 해시하여 각각의 해시된 데이터 레코드 세트를 생성할 수 있다. 해시 데이터 레코드를 적용하는 것은 해시 식별자(135)에 의해 식별된 해시 함수에 대한 인수로서 데이터 레코드를 사용하는 것을 포함할 수 있다. 데이터 레코드 해시(140)는 해시 식별자(135)에 의해 식별된 각각의 해시를 사용하여 각각의 데이터 레코드를 해시할 수 있으며, 그 결과 데이터 레코드 각각에 대응하는 다수의 해시된 값이 생성된다. 이와 같이, 데이터 레코드 해시(140)는 루프의 각 데이터 레코드에 대해 반복할 수 있고, 선택될 때 각각의 데이터 레코드에 각각의 해시 함수를 적용할 수 있다. 해시 함수를 적용한 후, 데이터 레코드 해시(140)는 각각의 데이터 프로세싱 시스템(105)의 메모리에 각각의 데이터 레코드과 연관하여 해시된 데이터 레코드 각각을 저장할 수 있다.
데이터 레코드 해시(140)는 각각의 데이터 프로세싱 시스템(105)에 의해 유지되는 데이터 레코드 각각에 대응하는 해시된 데이터 레코드들 각각으로부터 레지스터 식별자를 추가로 추출할 수 있다. 해시된 데이터 레코드 세트의 각각의 해시된 데이터 레코드는 벡터 생성기(130)에 의해 생성된 벡터의 카운터 레지스터에 대응할 수 있다. 대응하는 카운터 레지스터를 식별하기 위해, 데이터 레코드 해시(140)는 해시된 데이터 레코드 각각에서 레지스터 식별자를 추출할 수 있다. 데이터 레코드 해시(140)는 예를 들어 최소 증가 카운팅 블룸 필터의 카운터 레지스터의 수로 각 해시된 데이터 식별자에 대해 모듈러스 연산을 수행함으로써 레지스터 식별자를 추출할 수 있다. 예를 들어, 해시된 데이터 레코드 중 하나가 500과 같고 최소 증가 카운팅 블룸 필터에 15개의 포지션이 있는 경우, 데이터 프로세싱 시스템은 500 % 15 = 5를 계산하여 해시된 데이터 레코드가 최소 증가 카운팅 블룸 필터의 다섯 번째 카운터 레지스터에 대응하는지 결정할 수 있다. 일부 구현예에서, 최소 증가 블룸 필터의 카운터 레지스터 수가 2의 거듭 제곱이면 데이터 레코드 해시(140)는 log2(b)와 동일한 비트 수를 선택할 수 있으며, 여기서 b는 최소 증가 카운팅 블룸 필터의 카운터 레지스터의 수와 동일하다.
벡터 생성기(130)는 최소 레지스터 값을 결정하기 위해 데이터 레코드 해시기(140)에 의해 식별된 레지스터 식별자에 대응하는 벡터 생성기(130)에 의해 생성된 카운팅 블룸 필터의 카운터 레지스터 각각에 액세스할 수 있다. 최소 증가 블룸 필터 구현예에서, 벡터 생성기(130)는 버킷 값 세트를 검색하기 위해 데이터 레코드 해시(140)에 의해 추출된 레지스터 식별자들 각각과 연관된 카운터 레지스터 버킷에 추가로 액세스할 수 있다. 증가할 버킷 값을 결정하기 위해, 벡터 생성기(130)는 카운터 레지스터 버킷 중 최소값과 동일한 카운터 레지스터 버킷의 서브세트를 결정할 수 있다. 최소값은 각 카운터 레지스터 버킷을 비교하고 가장 작은 버킷 값(예: 0에 가장 가까운 값 등)을 식별하여 결정할 수 있다. 예를 들어 각 값이 3, 91, 30, 88 및 10인 5 개의 버킷이 있는 경우 최소 버킷 값은 3이다. 하나의 버킷만 최소값과 동일한 것으로 설명되어 있지만 최소값과 동일한 버킷의 임의의 수가 있을 수 있다. 이 개념을 설명하기 위해, 다섯 개의 버킷이 각각 5, 10, 30, 5 및 28과 동일한 두 번째 예를 고려한다. 이 예에는 5와 동일한 두 개의 버킷이 있다. 모든 버킷의 최소값도 5이다. 그 후, 벡터 생성기(130)는 카운터 레지스터 버킷의 서브세트에 포함시키기 위한 최소값과 동일한 버킷을 선택할 수 있다. 즉, 버킷이 각각 3, 91, 30, 88, 10과 동일한 첫 번째 예시에서, 벡터 생성기(130)는 최소값인 3과 동일한 버킷을 서브세트에서 카운터 레지스터로 선택할 수 있다. 두 번째 예시에서, 5개의 버킷이 각각 5, 10, 30, 5 및 28과 동일한 경우, 벡터 생성기(130)는 카운터 레지스터 버킷의 최소값인 5와 동일한 두 버킷을 모두 선택할 수 있다. 카운터 레지스터의 선택은 각각의 데이터 프로세싱 시스템(105)의 메모리 내의 데이터 구조에서 대응하는 버킷을 식별하는 레지스터 식별자를 저장하는 것을 포함할 수 있다. 블룸 필터의 최소값을 정확하게 결정하기 위해, 벡터 생성기(130)는 각각의 데이터 레코드에 대해 반복할 수 있고, 각각의 식별자의 해시된 값으로부터 추출된 레지스터 식별자에 액세스할 수 있다.
벡터 생성기(130)는 전술한 바와 같이 카운터 레지스터의 최소값 임계 값을 만족하는 카운터 레지스터 각각을 증가시킬 수 있다. 레지스터 식별자를 증가시키는 것은 각각의 레지스터 식별자에 대응하는 카운터 레지스터에 하나를 추가하는 것을 포함할 수 있다. 일부 구현예에서, 카운터 레지스터에 추가되는 양은 1이 아닌 값일 수 있다. 예를 들어, 벡터 생성기(130)는 여기서 결정, 생성 또는 계산된 임의의 값에 대응할 수 있는 각 카운터 레지스터에 다른 값을 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 본 명세서에서 논의되는 다양한 이유로 카운터 레지스터로부터 감산될 수 있다. 일부 구현예에서, 감산에 대한 대안으로서, 벡터 생성기(130)는 벡터 생성기(130)에 의해 현재 선택되지 않은 다른 카운터 레지스터 버킷 각각에 양(예를 들어, 1 또는 일부 다른 값 등)을 더할 수 있다. 카운터 레지스터 버킷 또는 좌표를 증가시킴으로써, 벡터 생성기(130)는 각각의 데이터 프로세싱 시스템(105)에 의해 유지되는 데이터 레코드에 기초하여 전체적으로 카운팅 블룸 필터를 업데이트할 수 있다. 시스템의 컨텍스트에서, 표준 카운팅 블룸 필터를 업데이트하는 프로세스는 도 2a-2c와 관련하여 아래에서 간략하게 설명되며, 최소 증가 카운팅 블룸 필터를 업데이트하는 프로세스(도 1과 관련하여 설명됨)는 도 3a-c와 관련하여 아래에 설명된다.
이제 도 2a를 참조하면, 도시된 것은 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 데이터 프로세싱 시스템(105) 중 적어도 하나 등)에 의해 데이터 레코드 X를 표준 카운팅 블룸 필터에 삽입하는 것을 도시하는 흐름도(200A)의 예시적인 도시이다. 블록(202)에서, 데이터 프로세싱 시스템은 카운팅 블룸 필터에 삽입할 데이터 레코드를 표시할 수 있다. 표시된 데이터 레코드는 예를 들어 데이터베이스(예를 들어, 데이터베이스(115))로부터 선택될 수 있다. 데이터 프로세싱 시스템은 여기에서 h1, h2 및 h3으로 표시된 여러 해시 함수를 선택할 수 있다. 3개의 해시 함수만 도시되었지만, 데이터 프로세싱 시스템은 표준 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해 임의의 수의 해시 함수를 사용할 수 있음을 이해해야 한다. 블록(204A-C)에서, 데이터 프로세싱 시스템은 식별된 각각의 해시 함수를 사용하여 데이터 레코드 X를 적어도 한 번 복제하고 해시할 수 있다. 해시 함수는 예를 들어, 본 명세서에 설명된 바와 같은 ElGamal 해시일 수 있거나, 특히 SHA-1, SHA-2, MD5와 같은 임의의 다른 유형의 해시일 수 있다. 데이터 레코드 X를 3번 복제하고 해싱함으로써, 데이터 프로세싱 시스템은 도 2a에서 h1(x), h2(x) 및 h3(x)로 표시된 3개의 해시된 데이터 레코드를 생성했다. 여전히 블록(204A-C)를 참조하면, 데이터 프로세싱 시스템은 각각의 해시된 데이터 레코드로부터 인덱스 값을 추출할 수 있다. 추출된 인덱스 값은 카운팅 블룸 필터에서 적어도 하나의 개별 포지션에 대응할 수 있다. 도 2a에 제공된 예시에서, 각 해시는 카운팅 블룸 필터의 레지스터 포지션의 수인 11의 모듈러스로 계산된다. 11개의 레지스터 포지션만이 블룸 필터로 사용되지만, 블룸 필터를 구현하는데 임의의 수의 카운팅 레지스터를 사용할 수 있다.
도 2a에서, h1(x)의 모듈러스 11은 1과 같고, h2(x)의 모듈러스 11은 3과 같고, h3(x)의 모듈러스 11은 9와 같다. 이들 값 각각은 카운팅 블룸 필터에서 각각의 포지션(예를 들어, ID 값 등)와 연관된 카운터 레지스터에 대한 포인터로서 데이터 프로세싱 시스템에 의해 사용될 수 있다. 예를 들어, 1과 같은 h1(x)의 모듈러스 11은 카운팅 블룸 필터에서 포지션 '1'을 가리킬 수 있으며, h2(x)의 모듈러스 11은 3과 같고, 카운팅 블룸 필터에서 포지션 '3'을 가리킬 수 있다. 이들은 블룸 필터 카운팅와 관련된 작업을 설명하기 위한 목적으로 순전히 예제 값이며, 카운팅 블룸 필터를 설명하는 구현 범위를 제한하는 것으로 해석되어서는 안된다. 데이터 프로세싱 시스템은 각각의 해시 함수에 의해 가리키는 카운터 레지스터 각각을 증가시킴으로써 카운팅 블룸 필터를 업데이트(예를 들어, 데이터 레코드 삽입)할 수 있으며, 그 결과 업데이트된 카운팅 블룸 필터(206)가 생성된다. 비록 도 2a는 각각의 카운터 레지스터를 1만큼만 증가시키는 것을 도시하고 있지만, 데이터 프로세싱 시스템은 임의의 값, 예를 들어 바이트 수, 비트 수 또는 임의의 다른 값, 임계치 또는 본 명세서에 기술된 추정치에 상대적으로 카운터 레지스터 중 임의의 값을 증가시킬 수 있음을 이해해야 한다.
이제 도 2b를 참조하면, 도시된 것은 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 데이터 프로세싱 시스템(105) 중 적어도 하나 등)에 의해 데이터 레코드 Y를 도 2a와 관련하여 상기 기술된 업데이트된 카운팅 블룸 필터에 삽입하는 것을 도시하는 흐름도(200B)의 예시적인 도시이다. 블록(208)에서, 데이터 프로세싱 시스템은 카운팅 블룸 필터에 삽입할 데이터 레코드를 표시할 수 있다. 표시된 데이터 레코드는 예를 들어 데이터베이스(예를 들어, 데이터베이스(115))로부터 선택될 수 있다. 데이터 프로세싱 시스템은 여기에서 h1, h2 및 h3으로 표시된 여러 해시 함수를 선택할 수 있다. 3개의 해시 함수만 도시되었지만, 데이터 프로세싱 시스템은 표준 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해 임의의 수의 해시 함수를 사용할 수 있음을 이해해야 한다. 블록(210A-C)에서, 데이터 프로세싱 시스템은 식별된 각각의 해시 함수를 사용하여 데이터 레코드 Y를 적어도 한 번 복제하고 해시할 수 있다. 해시 함수는 예를 들어, 본 명세서에 설명된 바와 같은 ElGamal 해시일 수 있거나, 특히 SHA-1, SHA-2, MD5와 같은 임의의 다른 유형의 해시일 수 있다. 데이터 레코드 Y를 3번 복제하고 해싱함으로써(예: 각 해시에 대해 한번씩), 데이터 프로세싱 시스템은 도 2b에서 h1(y), h2(y) 및 h3(y)로 표시된 3개의 해시된 데이터 레코드를 생성했다. 여전히 블록(210A-C)를 참조하면, 데이터 프로세싱 시스템은 각각의 해시된 데이터 레코드로부터 인덱스 값을 추출할 수 있다. 추출된 인덱스 값은 카운팅 블룸 필터에서 적어도 하나의 개별 포지션에 대응할 수 있다. 도 2a에 제공된 예시에서, 각 해시는 카운팅 블룸 필터의 레지스터 포지션의 수인 11의 모듈러스로 계산된다. 11개의 레지스터 포지션만이 카운팅 블룸 필터로 사용되지만, 카운팅 블룸 필터를 구현하는데 임의의 수의 카운팅 레지스터를 사용할 수 있다.
도 2b에서, h1(y)의 모듈러스 11은 1과 같고, h2(y)의 모듈러스 11은 5과 같고, h3(y)의 모듈러스 11은 7와 같다. 이들 값 각각은 카운팅 블룸 필터에서 각각의 포지션(예를 들어, ID 값 등)와 연관된 카운터 레지스터에 대한 포인터로서 데이터 프로세싱 시스템에 의해 사용될 수 있다. 예를 들어, 1과 같은 h1(y)의 모듈러스 11은 카운팅 블룸 필터에서 포지션 '1'을 가리킬 수 있으며, h2(y)의 모듈러스 11은 5과 같고, 카운팅 블룸 필터에서 포지션 '5'을 가리킬 수 있다. 이들은 블룸 필터 카운팅와 관련된 작업을 설명하기 위한 목적으로 순전히 예제 값이며, 카운팅 블룸 필터를 설명하는 구현 범위를 제한하는 것으로 해석되어서는 안된다. 데이터 프로세싱 시스템은 각각의 해시 함수에 의해 가리키는 카운터 레지스터 각각을 증가시킴으로써 카운팅 블룸 필터를 업데이트(예를 들어, 데이터 레코드 삽입)할 수 있으며, 그 결과 업데이트된 카운팅 블룸 필터(212)가 생성된다. 비록 도 2b는 각각의 카운터 레지스터를 1만큼만 증가시키는 것을 도시하고 있지만, 데이터 프로세싱 시스템은 임의의 값, 예를 들어 바이트 수, 비트 수 또는 임의의 다른 값, 임계치 또는 본 명세서에 기술된 추정치에 상대적으로 카운터 레지스터 중 임의의 값을 증가시킬 수 있음을 이해해야 한다. 도 2b에 도시된 바와 같이, 포지션 '1'에 대응하는 카운터 레지스터는 이미 1인 값을 가지므로 1씩 증가하면 2가 된다. 마찬가지로 포지션 '5'및 '7'에 대응하는 각 카운터 레지스터는 0이므로, 증가되면 각각 1이 된다. 따라서, 업데이트된 카운팅 블룸 필터(212)는 포지션 '1'에서 2, 포지션 '3'에서 1, 포지션 '5'에서 1, 포지션 '7'에서 1, 포지션 '9'에서 1의 값을 갖는다.
이제 도 2c를 참조하면, 도시된 것은 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 데이터 프로세싱 시스템(105) 중 적어도 하나 등)에 의해 데이터 레코드 X를 도 2c와 관련하여 상기 기술된 업데이트된 카운팅 블룸 필터(212)에 삽입하는 것을 도시하는 흐름도(200C)의 예시적인 도시이다. 블록(214)에서, 데이터 프로세싱 시스템은 카운팅 블룸 필터에 삽입할 데이터 레코드 X를 표시할 수 있다. 데이터 레코드 X는 도 2a와 관련하여 전술한 바와 같이 카운팅 블룸 필터에 이미 삽입되었지만, 이것은 카운팅 블룸 필터의 특성으로 인해 동일한 데이터 레코드가 카운팅 블룸에 한 번 이상 삽입되는 것을 반드시 배제하지는 않는다. 이는 예를 들어 각 포지션이 카운터 레지스터 대신 이진 값에 대응할 수 있는 표준 블룸 필터와 다르다. 표시된 데이터 레코드는 예를 들어 데이터베이스(예를 들어, 데이터베이스(115))로부터 선택될 수 있다. 데이터 프로세싱 시스템은 여기에서 h1, h2 및 h3으로 표시된 여러 해시 함수를 선택할 수 있다. 3개의 해시 함수만 도시되었지만, 데이터 프로세싱 시스템은 표준 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해 임의의 수의 해시 함수를 사용할 수 있음을 이해해야 한다. 블록(216A-C)에서, 데이터 프로세싱 시스템은 식별된 각 해시 함수를 사용하여 데이터 레코드 X를 적어도 한 번 복제하고 해시할 수 있다. 해시 함수는 예를 들어, 본 명세서에 설명된 바와 같은 ElGamal 해시일 수 있거나, 특히 SHA-1, SHA-2, MD5와 같은 임의의 다른 유형의 해시일 수 있다. 데이터 레코드 X를 3번 복제하고 해싱함으로써(예: 각 해시에 대해 한번씩), 데이터 프로세싱 시스템은 도 2c에서 h1(x), h2(x) 및 h3(x)로 표시된 3개의 해시된 데이터 레코드를 생성했다. 여전히 블록(214A-C)를 참조하면, 데이터 프로세싱 시스템은 각각의 해시된 데이터 레코드로부터 인덱스 값을 추출할 수 있다. 추출된 인덱스 값은 카운팅 블룸 필터에서 적어도 하나의 개별 포지션에 대응할 수 있다. 도 2c에 제공된 예시에서, 각 해시는 카운팅 블룸 필터의 레지스터 포지션의 수인 11의 모듈러스로 계산된다. 11개의 레지스터 포지션만이 카운팅 블룸 필터로 사용되지만, 카운팅 블룸 필터를 구현하는데 임의의 수의 카운팅 레지스터를 사용할 수 있다.
도 2c에서, h1(x)의 모듈러스 11은 1과 같고, h2(x)의 모듈러스 11은 3과 같고, h3(x)의 모듈러스 11은 9와 같다. 이들 각각의 값은 도 2a에서 결정된 것과 동일하다. 이는 데이터 프로세싱 시스템이 동일한 해시 함수를 사용하여 동일한 데이터 레코드를 해싱하고 있기 때문에, 각 해시의 값은 도 2에서 이전에 계산된 것과 동일한 값이 된다. 데이터 프로세싱 시스템은 카운팅 블룸 필터에서 각각의 포지션(예를 들어, ID 값 등)과 연관된 카운터 레지스터에 대한 포인터로서 이들 인덱스 값 각각을 사용할 수 있다. 예를 들어, 1과 같은 h1(x)의 모듈러스 11은 카운팅 블룸 필터에서 포지션 '1'을 가리킬 수 있으며, h2(x)의 모듈러스 11은 3과 같고, 카운팅 블룸 필터에서 포지션 '3'을 가리킬 수 있다. 이들은 블룸 필터 카운팅와 관련된 작업을 설명하기 위한 목적으로 순전히 예제 값이며, 카운팅 블룸 필터를 설명하는 구현 범위를 제한하는 것으로 해석되어서는 안된다. 데이터 프로세싱 시스템은 각각의 해시 함수에 의해 가리키는 카운터 레지스터 각각을 증가시킴으로써 카운팅 블룸 필터를 업데이트(예를 들어, 데이터 레코드 삽입)할 수 있으며, 그 결과 업데이트된 카운팅 블룸 필터(218)가 생성된다. 비록 도 2c는 각각의 카운터 레지스터를 1만큼만 증가시키는 것을 도시하고 있지만, 데이터 프로세싱 시스템은 임의의 값, 예를 들어 바이트 수, 비트 수 또는 임의의 다른 값, 임계치 또는 본 명세서에 기술된 추정치에 상대적으로 카운터 레지스터 중 임의의 값을 증가시킬 수 있음을 이해해야 한다. 도 2c에 도시된 바와 같이, 포지션 '1'에 대응하는 카운터 레지스터는 이미 2인 값을 가지므로 1씩 증가하면 3이 된다. 마찬가지로, 포지션 '3'과 '9'에 대응하는 각 카운터 레지스터는 1이므로 증가되면 2가 된다. 따라서, 업데이트된 카운팅 블룸 필터(218)는 포지션 '1'에서 3, 포지션 '3'에서 2, 포지션 '5'에서 1, 포지션 '7'에서 1, 포지션 '9'에서 2의 값을 갖는다.
이제 도 3a를 참조하면, 도시된 것은 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 데이터 프로세싱 시스템(105) 중 적어도 하나 등)에 의해 데이터 레코드 X를 최소 증가 카운팅 블룸 필터에 삽입하는 것을 도시하는 흐름도(300A)의 예시적인 도시이다. 블록(302)에서, 데이터 프로세싱 시스템은 카운팅 블룸 필터에 삽입할 데이터 레코드(예: 데이터 레코드 X)를 표시할 수 있다. 표시된 데이터 레코드는 예를 들어 데이터베이스(예를 들어, 데이터베이스(115))로부터 선택될 수 있다. 데이터 프로세싱 시스템은 여기에서 h1, h2 및 h3으로 표시된 여러 해시 함수를 선택할 수 있다. 3개의 해시 함수만 도시되었지만, 데이터 프로세싱 시스템은 표준 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해 임의의 수의 해시 함수를 사용할 수 있음을 이해해야 한다. 블록(304A-C)에서, 데이터 프로세싱 시스템은 식별된 각 해시 함수를 사용하여 선택된 데이터 레코드(예: 데이터 레코드 X)를 적어도 한 번 복제하고 해시할 수 있다. 해시 함수는 예를 들어, 본 명세서에 설명된 바와 같은 ElGamal 해시일 수 있거나, 특히 SHA-1, SHA-2, MD5와 같은 임의의 다른 유형의 해시일 수 있다. 데이터 레코드 X를 3번 복제하고 해싱함으로써, 데이터 프로세싱 시스템은 도 3a에서 h1(x), h2(x) 및 h3(x)로 표시된 3개의 해시된 데이터 레코드를 생성했다. 여전히 블록(304A-C)를 참조하면, 데이터 프로세싱 시스템은 각각의 해시된 데이터 레코드로부터 인덱스 값을 추출할 수 있다. 추출된 인덱스 값은 카운팅 블룸 필터에서 적어도 하나의 개별 포지션에 대응할 수 있다. 도 3a에 제공된 예시에서, 각 해시는 카운팅 블룸 필터의 레지스터 포지션의 수인 11의 모듈러스로 계산된다. 11개의 레지스터 포지션만이 블룸 필터로 사용되지만, 블룸 필터를 구현하는데 임의의 수의 카운팅 레지스터를 사용할 수 있다.
도 3a에서, h1(x)의 모듈러스 11은 1과 같고, h2(x)의 모듈러스 11은 3과 같고, h3(x)의 모듈러스 11은 9와 같다. 이들 값 각각은 카운팅 블룸 필터에서 각각의 포지션(예를 들어, ID 값 등)와 연관된 카운터 레지스터에 대한 포인터로서 데이터 프로세싱 시스템에 의해 사용될 수 있다. 예를 들어, 1과 같은 h1(x)의 모듈러스 11은 카운팅 블룸 필터에서 포지션 '1'을 가리킬 수 있으며, h2(x)의 모듈러스 11은 3과 같고, 카운팅 블룸 필터에서 포지션 '3'을 가리킬 수 있다. 이들은 블룸 필터 카운팅와 관련된 작업을 설명하기 위한 목적으로 순전히 예제 값이며, 카운팅 블룸 필터를 설명하는 구현 범위를 제한하는 것으로 해석되어서는 안된다. 최소 증가 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해, 데이터 프로세싱 시스템은 계산된 인덱스 값이 가리키는 카운터 레지스터의 최소값에 대응하는 카운터 레지스터를 증가시킬 수 있다. 예를 들어, 데이터 프로세싱 시스템은 계산된 인덱스 값이 가리키는 각 카운터 레지스터에 액세스할 수 있다. 도 3a에 도시된 바와 같이, 이들은 포지션 '1', '3', '9'에 대응하는 카운터 레지스터이다. 최소 증가 카운팅 블룸 필터가 아직 업데이트되지 않았기 때문에 이러한 각 포지션은 0이다.
데이터 프로세싱 시스템은 이러한 액세스된 데이터 레지스터 각각을 비교하여 카운터 레지스터 간의 최소값을 결정할 수 있다. 예를 들어 최소값은 액세스된 카운터 레지스터의 가장 작은 카운터 레지스터 값일 수 있다. 둘 이상의 카운터 레지스터가 최소값과 동일할 수 있다. 데이터 프로세싱 시스템은 카운터 레지스터의 결정된 최소값과 동일한 값으로 액세스된 카운터 레지스터의 서브세트를 선택할 수 있다. 도 3a에 표시된 바와 같이, 각각의 액세스된 카운터 레지스터는 0과 같고, 따라서 각각의 액세스된 카운터 레지스터는 최소값(여기서는 0)과 같다. 따라서, 액세스된 각 카운터 레지스터가 선택된다. 데이터 프로세싱 시스템은 카운터 레지스터의 선택된 서브세트 각각을 증가시킴으로써 최소 증가 카운팅 블룸 필터를 업데이트(예를 들어, 데이터 레코드 삽입)하여, 업데이트된 카운팅 블룸 필터(306)를 생성할 수 있다. 비록 도 3a는 각각의 카운터 레지스터를 1만큼만 증가시키는 것을 도시하고 있지만, 데이터 프로세싱 시스템은 임의의 값, 예를 들어 바이트 수, 비트 수 또는 임의의 다른 값, 임계치 또는 본 명세서에 기술된 추정치에 상대적으로 카운터 레지스터의 선택된 서브세트의 임의의 값을 증가시킬 수 있음을 이해해야 한다.
이제 도 3b를 참조하면, 도시된 것은 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 데이터 프로세싱 시스템(105) 중 적어도 하나 등)에 의해 데이터 레코드 Y를 최소 증가 카운팅 블룸 필터에 삽입하는 것을 도시하는 흐름도(300B)의 예시적인 도시이다. 블록(308)에서, 데이터 프로세싱 시스템은 카운팅 블룸 필터에 삽입할 데이터 레코드(예: 데이터 레코드 Y)를 표시할 수 있다. 표시된 데이터 레코드는 예를 들어 데이터베이스(예를 들어, 데이터베이스(115))로부터 선택될 수 있다. 데이터 프로세싱 시스템은 여기에서 h1, h2 및 h3으로 표시된 여러 해시 함수를 선택할 수 있다. 3개의 해시 함수만 도시되었지만, 데이터 프로세싱 시스템은 표준 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해 임의의 수의 해시 함수를 사용할 수 있음을 이해해야 한다. 블록(304A-C)에서, 데이터 프로세싱 시스템은 식별된 각 해시 함수를 사용하여 선택된 데이터 레코드(예: 데이터 레코드 Y)를 적어도 한 번 복제하고 해시할 수 있다. 해시 함수는 예를 들어, 본 명세서에 설명된 바와 같은 ElGamal 해시일 수 있거나, 특히 SHA-1, SHA-2, MD5와 같은 임의의 다른 유형의 해시일 수 있다. 데이터 레코드 Y를 3번 복제하고 해싱함으로써, 데이터 프로세싱 시스템은 도 3b에서 h1(y), h2(y) 및 h3(y)로 표시된 3개의 해시된 데이터 레코드를 생성했다. 여전히 블록(310A-C)를 참조하면, 데이터 프로세싱 시스템은 각각의 해시된 데이터 레코드로부터 인덱스 값을 추출할 수 있다. 추출된 인덱스 값은 카운팅 블룸 필터에서 적어도 하나의 개별 포지션에 대응할 수 있다. 도 3b에 제공된 예시에서, 각 해시는 카운팅 블룸 필터의 레지스터 포지션의 수인 11의 모듈러스로 계산된다. 11개의 레지스터 포지션만이 블룸 필터로 사용되지만, 블룸 필터를 구현하는데 임의의 수의 카운팅 레지스터를 사용할 수 있다.
도 3b에서, h1(y)의 모듈러스 11은 1과 같고, h2(y)의 모듈러스 11은 5과 같고, h3(y)의 모듈러스 11은 7와 같다. 이들 값 각각은 최소 증가 카운팅 블룸 필터에서 각각의 포지션(예를 들어, ID 값 등)와 연관된 카운터 레지스터에 대한 포인터로서 데이터 프로세싱 시스템에 의해 사용될 수 있다. 예를 들어, 1과 같은 h1(y)의 모듈러스 11은 카운팅 블룸 필터에서 포지션 '1'을 가리킬 수 있으며, h2(y)의 모듈러스 11은 5과 같고, 카운팅 블룸 필터에서 포지션 '5'을 가리킬 수 있다. 이들은 블룸 필터 카운팅와 관련된 작업을 설명하기 위한 목적으로 순전히 예제 값이며, 카운팅 블룸 필터를 설명하는 구현 범위를 제한하는 것으로 해석되어서는 안된다. 최소 증가 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해, 데이터 프로세싱 시스템은 계산된 인덱스 값이 가리키는 카운터 레지스터의 최소값에 대응하는 카운터 레지스터를 증가시킬 수 있다. 예를 들어, 데이터 프로세싱 시스템은 계산된 인덱스 값이 가리키는 각 카운터 레지스터에 액세스하여, 업데이트 동작 전에 그들의 값을 결정할 수 있다. 도 3b에 도시된 바와 같이, 이들은 포지션 '1', '5', '7'에 대응하는 카운터 레지스터이다. 업데이트 이전에, 포지션 '1'에 대응하는 값은 1이고, 포지션 '5'에 대응하는 값은 0이고, 포지션 '7'에 해당하는 값도 0이다.
데이터 프로세싱 시스템은 이러한 액세스된 데이터 레지스터 각각을 비교하여 카운터 레지스터 간의 최소값을 결정할 수 있다. 예를 들어 최소값은 액세스된 카운터 레지스터의 가장 작은 카운터 레지스터 값일 수 있다. 둘 이상의 카운터 레지스터가 최소값과 동일할 수 있다. 이 경우, 최소값은 포지션 '5' 및 '7'에 표시되며, 업데이트 단계 이전은 모두 0이다. 데이터 프로세싱 시스템은 카운터 레지스터의 결정된 최소값과 동일한 값으로 액세스된 카운터 레지스터의 서브세트를 선택할 수 있고, 이 경우 포지션 '5' 및 '7'에 대응하는 카운터 레지스터를 선택하는 것을 의미한다. 데이터 프로세싱 시스템은 카운터 레지스터의 선택된 서브세트 각각을 증가시킴으로써 최소 증가 카운팅 블룸 필터를 업데이트(예를 들어, 데이터 레코드 삽입)하여, 업데이트된 카운팅 블룸 필터(312)를 생성할 수 있다. h1(y)가 포지션 '1'을 가리키지만, 가리키는 카운터 레지스터의 최소값과 같지 않기 때문에 증가되지 않는다. 비록 도 3b는 각각의 카운터 레지스터를 1만큼만 증가시키는 것을 도시하고 있지만, 데이터 프로세싱 시스템은 임의의 값, 예를 들어 바이트 수, 비트 수 또는 임의의 다른 값, 임계치 또는 본 명세서에 기술된 추정치에 상대적으로 카운터 레지스터의 선택된 서브세트의 임의의 값을 증가시킬 수 있음을 이해해야 한다.
이제 도 3c를 참조하면, 도시된 것은 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 데이터 프로세싱 시스템(105) 중 적어도 하나 등)에 의해 데이터 레코드 X를 최소 증가 카운팅 블룸 필터에 삽입하는 것을 도시하는 흐름도(300C)의 예시적인 도시이다. 블록(314)에서, 데이터 프로세싱 시스템은 최소 증가 카운팅 블룸 필터에 삽입할 데이터 레코드(예: 데이터 레코드 X)를 표시할 수 있다. 데이터 레코드 X는 도 3a와 관련하여 위에서 설명한 바와 같이 최소 증가 블룸 필터에 이미 삽입되었지만, 이것은 데이터 프로세싱 시스템이 데이터 레코드 X를 두 번 이상 삽입하는 것을 반드시 배제하지는 않는다. 표시된 데이터 레코드는 예를 들어 데이터베이스(예를 들어, 데이터베이스(115))로부터 선택될 수 있다. 데이터 프로세싱 시스템은 여기에서 h1, h2 및 h3으로 표시된 여러 해시 함수를 선택할 수 있다. 3개의 해시 함수만 도시되었지만, 데이터 프로세싱 시스템은 표준 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해 임의의 수의 해시 함수를 사용할 수 있음을 이해해야 한다. 블록(316A-C)에서, 데이터 프로세싱 시스템은 식별된 각 해시 함수를 사용하여 선택된 데이터 레코드(예: 데이터 레코드 X)를 적어도 한 번 복제하고 해시할 수 있다. 해시 함수는 예를 들어, 본 명세서에 설명된 바와 같은 ElGamal 해시일 수 있거나, 특히 SHA-1, SHA-2, MD5와 같은 임의의 다른 유형의 해시일 수 있다. 데이터 레코드 X를 3번 복제하고 해싱함으로써, 데이터 프로세싱 시스템은 도 3c에서 h1(x), h2(x) 및 h3(x)로 표시된 3개의 해시된 데이터 레코드를 생성했다. 여전히 블록(316A-C)를 참조하면, 데이터 프로세싱 시스템은 각각의 해시된 데이터 레코드로부터 인덱스 값을 추출할 수 있다. 추출된 인덱스 값은 카운팅 블룸 필터에서 적어도 하나의 개별 포지션에 대응할 수 있다. 도 3c에 제공된 예시에서, 각 해시는 카운팅 블룸 필터의 레지스터 포지션의 수인 11의 모듈러스로 계산된다. 11개의 레지스터 포지션만이 블룸 필터로 사용되지만, 블룸 필터를 구현하는데 임의의 수의 카운팅 레지스터를 사용할 수 있다.
도 3b에서, h1(x)의 모듈러스 11은 1과 같고, h2(x)의 모듈러스 11은 3과 같고, h3(x)의 모듈러스 11은 9와 같다. 이들 값 각각은 최소 증가 카운팅 블룸 필터에서 각각의 포지션(예를 들어, ID 값 등)와 연관된 카운터 레지스터에 대한 포인터로서 데이터 프로세싱 시스템에 의해 사용될 수 있다. 예를 들어, 1과 같은 h1(x)의 모듈러스 11은 카운팅 블룸 필터에서 포지션 '1'을 가리킬 수 있으며, h2(x)의 모듈러스 11은 3과 같고, 카운팅 블룸 필터에서 포지션 '3'을 가리킬 수 있다. 이들은 블룸 필터 카운팅와 관련된 작업을 설명하기 위한 목적으로 순전히 예제 값이며, 카운팅 블룸 필터를 설명하는 구현 범위를 제한하는 것으로 해석되어서는 안된다. 최소 증가 카운팅 블룸 필터에 데이터 레코드를 삽입하기 위해, 데이터 프로세싱 시스템은 계산된 인덱스 값이 가리키는 카운터 레지스터의 최소값에 대응하는 카운터 레지스터를 증가시킬 수 있다. 예를 들어, 데이터 프로세싱 시스템은 계산된 인덱스 값이 가리키는 각 카운터 레지스터에 액세스하여, 업데이트 동작 전에 그들의 값을 결정할 수 있다. 도 3c에 도시된 바와 같이, 이들은 포지션 '1', '3', '9'에 대응하는 카운터 레지스터이다. 업데이트하기 전에 포지션 '1', '3', '9'에 대응하는 값은 각각 1이다.
데이터 프로세싱 시스템은 이러한 액세스된 데이터 레지스터 각각을 비교하여 카운터 레지스터 간의 최소값을 결정할 수 있다. 예를 들어 최소값은 액세스된 카운터 레지스터의 가장 작은 카운터 레지스터 값일 수 있다. 둘 이상의 카운터 레지스터가 최소값과 동일할 수 있다. 이 경우 최소값은 포지션 '1', '3', '9'에서 공유되며, 업데이트 단계 이전의 위치는 각각 1이다. 데이터 프로세싱 시스템은 카운터 레지스터의 결정된 최소값과 동일한 값으로 액세스된 카운터 레지스터의 서브세트를 선택할 수 있고, 이 경우 포지션 '1', '3' 및 '9'에 대응하는 카운터 레지스터를 선택하는 것을 의미한다. 데이터 프로세싱 시스템은 카운터 레지스터의 선택된 서브세트 각각을 증가시킴으로써 최소 증가 카운팅 블룸 필터를 업데이트(예를 들어, 데이터 레코드 삽입)하여, 업데이트된 카운팅 블룸 필터(318)를 생성할 수 있다. 업데이트된 최소 증가 블룸 필터(318)에서, 포지션 '1', '3' 및 '9' 각각은 2의 값을 갖도록 증가되고 다른 위치는 변경되지 않은 상태로 유지된다. 비록 도 3c는 각각의 카운터 레지스터를 1만큼 증가시키는 것을 도시하고 있지만, 데이터 프로세싱 시스템은 임의의 값, 예를 들어 바이트 수, 비트 수 또는 임의의 다른 값, 임계치 또는 본 명세서에 기술된 추정치에 상대적으로 카운터 레지스터의 선택된 서브세트의 임의의 값을 증가시킬 수 있음을 이해해야 한다.
이제 다시 도 1을 참조하면, 우리는 작업자 컴퓨팅 디바이스의 동작과 관련하여 데이터 프로세싱 시스템의 기능 및 모듈에 대한 설명을 계속한다. 동일한 데이터 프로세싱 시스템(105)의 일부로 도시되어 있지만, 아래에서 설명하는 각 컴포넌트(예를 들어, 암호화 키 생성기(145), 벡터 암호화기(150), 암호화된 벡터 통신기(155), 벡터 결합기(160), 히스토그램 구성기(165) 및 카디널리티 추정기(165)) 및 도 4a-c에서 수반되는 설명은 동일한 모듈 기능을 포함하고 구현하는 작업자 컴퓨팅 디바이스에 의해 수행될 수 있다. 이와 같이, 데이터 프로세싱 시스템(105)이 이러한 모듈을 포함할 수 있지만, 다른 구현예는 이러한 동작 및 컴포넌트가 하나 이상의 작업 컴퓨팅 디바이스에서 실행, 유지 및 구현되도록 제공할 수 있음을 이해해야 한다. 또한, 다음 컴포넌트의 서브세트만이 작업자 컴퓨팅 디바이스, 예를 들어 암호화 키 생성기(145), 암호화된 벡터 통신기(155), 벡터 결합기(160), 히스토그램 구성기(165) 및 카디널리티 추정기(170)를 포함하는 작업자 컴퓨팅 디바이스에 상주할 수 있음을 이해해야 한다. 따라서, 그러한 작업자 컴퓨팅 디바이스는 예를 들어 네트워크(110)를 통해 데이터 프로세싱 시스템(105)과 통신할 수 있고, 시스템의 전체 차등적 프라이버시를 유지하기 위해 암호화된 벡터 또는 암호화 키만 교환할 수 있다.
암호화 키 생성기(145)는 적어도 하나의 벡터를 암호화하기 위해 하나 이상의 개인 및 공개 키를 생성할 수 있다. 암호화 키 생성기(145)는 또한 자신의 공개 및 개인 키 쌍을 생성했던 다른 작업자 컴퓨팅 디바이스를 식별하거나 그로부터 데이터를 수신할 수 있다. 암호화 키 생성기(145)는 적어도 하나의 다른 공개 키를 수신하기 위해 다른 작업자 컴퓨팅 디바이스와 통신할 수 있다. 암호화 키 생성기(145)는 수집된(예를 들어, 결합된) 암호화 키를 생성하기 위해 암호화 키 생성기(145)에 의해 생성된 공개 키와 함께 수신된 공개 키 각각을 통합, 연결 또는 결합할 수 있다. 생성된 암호화 키는 모든 종류의 동형 암호화 키 또는 방식(예: ElGamal 암호화 키)일 수 있다. 암호화 키 생성기(145)는 생성 및 집합된 암호화 키를 벡터 암호화기(150)에 통신하여 각각의 데이터 프로세싱 시스템(105)에 의해 유지되는 최소 증가 카운팅 블룸 필터를 암호화할 수 있다. 암호화 키 생성기(145)는 각각의 집합된 암호화 키를 각각의 데이터 프로세싱 시스템(105A-N)(예를 들어, 각각의 식별자 서버 등)에 추가로 분배할 수 있다.
벡터 암호화기(150)는 암호화된 벡터를 생성하기 위해 암호화 키 생성기(145)에 의해 수신된 통합 암호화 키를 사용하여 최소 증가 카운팅 블룸 필터의 하나 이상의 카운터 레지스터 각각을 암호화할 수 있다. 최소 증가 카운팅 블룸 필터의 차등 프라이버시를 보장하기 위해, 벡터 암호화 기(150)는 각각의 데이터 프로세싱 시스템(105)(예를 들어, 각각의 식별자 서버)에 의해 생성 및 유지되는 벡터를 암호화하기 위해 하나 이상의 암호화 기법을 사용할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 암호화 체계(예를 들어, ElGamal 암호화, 임계값 복호화를 지원하는 암호화 체계, 동형 암호화 등)를 사용하여 암호화 키 생성기로부터 수신된 집합된 공개 키를 사용할 수 있다. 일부 구현예에서, 벡터 암호화기(150)는 집합된 암호화 키를 사용하여 개별적으로 벡터의 좌표에 대응하는 카운터 레지스터들 각각을 암호화할 수 있다. 이러한 구현예에서, 암호화된 카운터 레지스터 각각은 최소 증가 계수 블룸 필터를 나타내는 암호화된 벡터를 생성하기 위해 집합될 수 있다.
암호화된 벡터 통신기(155)는 암호화된 벡터를 적어도 하나의 작업자 컴퓨팅 디바이스에 통신할 수 있다. 일부 구현예에서, 암호화된 벡터 통신기(155)는 암호화된 벡터에 대한 하나 이상의 요청을 수신할 수 있으며, 이는 본 명세서에 설명된 바와 같이 암호화된 벡터의 생성 또는 통신을 차례로 트리거할 수 있다. 요청은 예를 들어 적어도 하나의 작업자 컴퓨팅 디바이스에 의해 수신될 수 있다. 암호화된 벡터를 전송하는 것은 네트워크(110)를 통해 작업자 컴퓨팅 디바이스에 암호화된 벡터를 제공하는 것을 포함할 수 있다. 암호화된 벡터 통신기(155)는 암호화된 벡터를 프로세싱하기 위해 하나 이상의 작업자 컴퓨팅 디바이스 중 첫 번째로 작업자 컴퓨팅 디바이스를 선택할 수 있다. 일부 구현예에서, 암호화된 벡터 통신기(155)는 암호화된 벡터를 버킷 단위로 전송할 수 있으며, 여기서 각 버킷은 작업자 컴퓨팅 디바이스에 개별적으로 전송된다. 일부 구현예에서, 암호화된 벡터 통신기(155)는 암호화된 벡터를 대량 트랜잭션으로 전송할 수 있으며, 여기서 암호화된 벡터의 대부분 또는 전체가 단일 메시지로 전송된다.
벡터 결합기(160)는 하나 이상의 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105A-N))로부터 하나 이상의 암호화된 벡터를 수신할 수 있다. 수신된 암호화 벡터 각각은 암호화된 벡터의 좌표에 대응하는 적어도 하나의 암호화된 카운터 레지스터를 포함할 수 있다. 일부 구현예에서, 벡터 결합기(160)는 벡터를 주기적으로 또는 버스트 트랜잭션으로 수신할 수 있다. 각 벡터는 벡터가 수신되었던 식별자 서버를 반영하는 각각의 식별자와 연관될 수 있다. 식별자 서버로부터 수신된 암호화된 벡터 각각은 암호화 키 생성기(145)에 의해 생성된 결합된 공개 키를 사용하여 암호화될 수 있고, 각각의 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105A-N))에 분배될 수 있다. 결합된 공개 키는 작업자 컴퓨팅 디바이스가 식별자 서버로부터 수신된 암호화된 벡터를 부분적으로 복호화할 수 있게 한다. 이들 동작은 도 4a-c와 관련하여 아래에서 더 상세히 설명된다.
이제 도 4a를 참조하면, 도시된 것은 작업자 컴퓨팅 디바이스에 의한 암호화 키의 생성 및 배포를 위한 시스템 흐름도(400A)이다. 시스템 흐름도(400A)는 하나 이상의 작업자 컴퓨팅 디바이스(405A-C)(때로는 일반적으로 작업자들(405) 또는 작업자(405)로 지칭됨)를 포함할 수 있다. 작업자 컴퓨팅 디바이스는 3개 뿐이지만 여기에 설명된 기능을 구현하기 위해 임의의 수의 작업자 컴퓨팅 디바이스를 사용할 수 있음을 이해해야 한다. 작업자(405)는 데이터 프로세싱 시스템(105) 중 적어도 하나일 수 있거나, 데이터 프로세싱 시스템(105)의 컴포넌트의 서브세트, 예를 들어 암호화 키 생성기(145), 암호화된 벡터 통신기(155), 벡터 결합기(160), 히스토그램 구성기(165) 및 카디널리티 추정기(170)를 포함할 수 있다.
도 4a에 도시된 바와 같이, 작업자(405)는 결합된 키를 생성할 수 있다. 결합된 키를 생성하는 것은 적어도 하나의 공개 키와 적어도 하나의 개인 키를 생성하는 것을 포함할 수 있다. 일부 구현예에서, 작업자(405)는 적어도 ElGamal 암호화 기법의 일부로서 구현될 수 있는 키를 생성할 수 있다. 예를 들어, 작업자(405)는 랜덤(예를 들어, 의사 랜덤 등) 정수 X modulo q(예를 들어, 타원 곡선 그룹의 순서)를 생성하거나 선택할 수 있다. 작업자(405)는 정수 X를 복호화를 위한 개인 키로 사용할 수 있고, gX를 공개 키로 사용할 수 있으며, 여기서 g는 생성기이다. 예를 들어 생성기는 순환 그룹의 멤버일 수 있다. 공개 키는 예를 들어 하나 이상의 다른 작업자(405)와 공유될 수 있다. 다른 작업자(405) 각각은 자신의 공개 및 개인 키 쌍을 생성하여 다른 작업자(405) 각각에 전송할 수 있다. 결합된 키를 생성하기 위해 각 작업자(405)는 다른 작업자(405)로부터 수신된 각 공개 키를 자신의 공개 키와 결합할 수 있다.
이제 도 4b를 참조하면, 도시된 것은 식별자 서버에 의한 암호화된 벡터의 분배를 위한 시스템 흐름도(400B)이다. 시스템 흐름도(400B)는 적어도 하나의 식별자 서버(415A-N) 및 적어도 하나의 작업자(405A-N)를 포함할 수 있다. 작업자(405)는 도 4a와 관련하여 위에서 더 설명된다. 각각의 식별자 서버(415A-N)는 예를 들어, 도 1과 관련하여 위에서 설명된 데이터 프로세싱 시스템(105) 중 하나 이상일 수 있다. 흐름도(400B)에서, 작업자(405A)는 제1 작업자(405)로서(예를 들어, 요청에 의해, 내부 구성 설정 등에 의해 임의로) 선택되었다. 각각의 식별자 서버는 위에서 설명한 바와 같이 암호화된 레지스터 버킷을 포함할 수 있는 연관된 암호화된 벡터를 제공할 수 있다.
식별자 서버에 의해 암호화를 위해 결합된 키를 전송한 후, 작업자(405)(예를 들어, 제1 작업자(405A))는 식별자 서버(415A-N) 각각으로부터 적어도 하나의 암호화된 벡터를 수신할 수 있다. 일부 구현예에서, 제1 작업자(405A)는 벡터를 주기적으로 또는 버스트 트랜잭션으로 수신할 수 있다. 각 벡터는 벡터가 수신되었던 식별자 서버(415A-N)를 반영하는 각각의 식별자와 연관될 수 있다. 식별자 서버(415A-N)로부터 수신된 각각의 암호화된 벡터는 도 1 및 도 4a와 관련하여 위에서 설명된 바와 같이 생성된 결합된 공개 키를 사용하여 암호화될 수 있다. 결합된 공개 키는 각 작업자(405)가 식별자 서버로부터 수신된 암호화된 벡터를 부분적으로 복호화하게 할 수 있다.
이제 도 4c를 참조하면, 도시된 것은 노이즈가 있는 집합된 벡터의 순차 복호화에 대한 시스템 흐름도(400C)이다. 시스템 흐름도(400C)는 적어도 하나의 작업자(405A-N)를 포함할 수 있다. 작업자(405)는 도 4a 및 4b와 관련하여 위에서 더 설명된다. 흐름도(400C)에서, 제1 작업자(405A)는 도 4b와 관련하여 전술한 바와 같이 식별자 서버(415A-N)로부터 수신된 암호화된 벡터를 프로세싱할 수 있다. 암호화된 벡터를 프로세싱하기 위해, 제1 작업자(405A)는 도 6 및 도 7과 관련하여 이하에서 설명되는 바와 같이 방법(600) 및 방법(700)의 단계를 수행할 수 있다. 식별자 서버(415A-N)로부터 수신된 벡터를 프로세싱한 후, 작업자(415)는 프로세싱된 암호화된 벡터를 그 첨부된 디코딩 룩업 테이블과 함께 애그리게이터 컴퓨팅 디바이스(410)로 전달할 수 있다.
애그리게이터(410) 컴퓨팅 디바이스는 데이터 프로세싱 시스템(105A-N)의 하나 이상의 모듈 또는 위에서 설명한 바와 같이 작업자 컴퓨팅 디바이스의 하나 이상의 모듈을 포함할 수 있다. 예를 들어, 애그리게이터(410)는 데이터 프로세싱 시스템(105)의 모든 컴포넌트(예: 벡터 생성기(130), 해시 식별자(135), 데이터 레코드 해시기(140), 암호화 키 생성기(145), 벡터 암호화기(150), 암호화된 벡터 통신기(155), 벡터 결합기(160), 히스토그램 구성기(165) 및 카디널리티 추정기(170) 등)를 포함할 수 있다. 일부 구현예에서, 애그리게이터(410)는 데이터 프로세싱 시스템(105)의 일부 컴포넌트(예를 들어, 암호화 키 생성기(145), 암호화된 벡터 통신기(155), 벡터 결합기(160), 히스토그램 구성기(165) 및 카디널리티 추정기(170))를 포함할 수 있다. 일부 구현예에서, 애그리게이터(410)는 암호화된 벡터 통신기(155), 히스토그램 구성기(165) 및 카디널리티 추정기(170)를 포함할 수 있다. 애그리게이터(410)는 데이터 프로세싱 시스템(105A-N) 중 적어도 하나, 작업자(405A-N) 중 적어도 하나, 또는 작업자(405A-N) 및 데이터 프로세싱 시스템(105A-N)과 통신하는 별도의 개별 컴퓨팅 디바이스일 수 있다.
다시 도 1을 참조하여 (적어도 하나의 데이터 프로세싱 시스템(105A-N) 또는 적어도 하나의 작업자(405) 등일 수 있는) 애그리게이터(410)의 동작과 관련하여 다음 컴포넌트를 설명하면, 암호화된 벡터 통신기(155)는 작업자 컴퓨팅 디바이스(예: 작업자(405) 등)로부터의 암호화된 순열된 벡터를 수신할 수 있다. 암호화된 순열 벡터는 아래에 설명된 방법(500) 및 방법(600)과 함께 각각의 작업자 컴퓨팅 디바이스(예를 들어, 작업자(405))에 의해 프로세싱되는 집합 벡터일 수 있다. 암호화된 벡터 통신기(155)는 컴퓨터 메모리의 하나 이상의 데이터 구조에 암호화된 순열 벡터를 저장할 수 있다. 일부 구현예에서, 암호화된 벡터 통신기(155)는 순열된 암호화된 벡터와 연관된 디코딩 룩업 테이블을 수신할 수 있다. 일부 구현예에서, 순열된 암호화 벡터는 디코딩 룩업 테이블과 연결되거나 그렇지 않으면 추가될 수 있다.
히스토그램 구성기(165)는 암호화된 순열 벡터의 좌표 값에 기초하여 버킷 히스토그램을 구성할 수 있다. 히스토그램 구성은 암호화된 순열 벡터에 추가되거나 연결된 디코딩 룩업 테이블을 사용하여 암호화된 순열 벡터를 디코딩하는 것을 포함할 수 있다. 디코딩 룩업 테이블은 예를 들어 작업자(405) 중 적어도 하나에 의해 생성된 대응 디코딩 키일 수 있다. 히스토그램 구성기(165)는 식별자 서버에 대응하는 집합된 벡터의 값을 나타내기 위해 디코딩 룩업 테이블을 사용할 수 있다. 복호화되면 집합된 벡터는 목표 빈도 값에 대응하는 복호화된 버킷 값을 포함할 수 있다. 목표 빈도 값은 내부 구성 설정에 의해 제공될 수 있으며, 시스템(100)의 임의의 컴퓨팅 디바이스로부터 수신된 요청으로 제공되거나 작업자(405) 또는 애그리게이터(410) 중 하나로부터 제공될 수 있다. 목표 빈도 값은 0보다 크거나 같은 모든 종류의 숫자 값을 포함할 수 있으며, 히스토그램 구성기(165)가 목표 빈도 값을 사용하여 값이 목표 빈도보다 크거나 같은 암호화된 벡터의 버킷을 디코딩하게 할 수 있다. 예를 들어, 목표 빈도 값이 3이면 히스토그램 구성기(165)는 3개 이상의 암호화된 벡터의 버킷을 디코딩할 수 있고, 목표 빈도 값보다 작은 버킷의 값은 디코딩할 수 없다.
일부 구현예에서, 작업자(405)는 디코딩 룩업 테이블을 생성할 때 목표 빈도 값을 통합할 수 있다. 이러한 구현예에서, 작업자(405)는 목표 빈도 값보다 크거나 같은 값을 갖는 버킷만을 디코딩하도록 디코딩 룩업 테이블을 구성할 수 있다. 작업자(405)는 예를 들어 시스템(100)의 임의의 컴퓨팅 디바이스로부터 또는 내부 구성 설정으로부터 요청 또는 메시지에서 목표 빈도 값을 획득할 수 있다. 그러한 구현예에서, 디코딩 룩업 테이블은 목표 빈도 값과 같거나 더 큰 값을 갖는 버킷을 디코딩하도록 구성될 수 있다. 각각의 작업자(405)는 암호화된 벡터의 자신의 몫을 부분적으로 복호화할 때 결정론적 암호화 키의 몫으로 디코딩 룩업 테이블을 업데이트할 수 있다. 작업자(405)는 임계치보다 크거나 같은 암호화된 벡터의 버킷의 자신의 몫을 디코딩하도록 디코딩 룩업 테이블을 구성할 수 있지만 임계치보다 작은 값에 대응하는 버킷은 복호화할 수 없다. 이와 같이 히스토그램 구성기(165)가 암호화된 벡터를 디코딩하여 히스토그램을 생성할 때, 디코딩 룩업 테이블을 사용하여 목표 빈도 임계치보다 크거나 같은 각 버킷이 디코딩될 수 있고, 목표보다 작은 버킷은 암호화된 상태로 유지될 수 있다. 버킷 히스토그램을 구성할 때 암호화된 상태로 남아있는 각 버킷은 여기에 설명된 대로 max_frequency 값으로 설정될 수 있다. 히스토그램 구성기(165)는 예를 들어 시스템(100)의 임의의 컴퓨팅 디바이스로부터의 요청 또는 메시지로부터 또는 내부 구성 설정으로부터 max_frequency 값을 수신할 수 있다. 암호화된 벡터를 디코딩함으로써, 히스토그램 구성기(165)는 암호화된 벡터의 디코딩된 값들 각각을 포함하는 디코딩된 벡터를 생성할 수 있다.
디코딩 룩업 테이블을 사용하여 암호화된 벡터를 디코딩 한 후, 히스토그램 구성기(165)는 디코딩된 벡터의 버킷 또는 카운터 레지스터를 사용하여 버킷 히스토그램을 생성할 수 있다. 버킷 히스토그램은 디코딩된 벡터의 각 버킷 값의 빈도에 대응할 수 있다. 예를 들어 버킷 히스토그램의 각 빈은 [0, 1); [1, 2); [2, 3); [3, 4); 등과 같은 범위를 가질 수 있다. 버킷 히스토그램을 생성하기 위해, 히스토그램 구성기(165)는 디코딩된 벡터의 각 좌표에 액세스하여 그 값을 결정할 수 있다. 그 값을 결정한 후, 히스토그램 구성기(165)는 버킷 히스토그램에서 대응하는 빈을 증가시키거나 추가할 수 있다. 예를 들어, 히스토그램 구성기(165)가 51과 동일한 디코딩된 벡터 좌표 값에 액세스하면, 히스토그램 구성기(165)는 범위 [51, 52)에 대응하는 버킷 히스토그램 빈을 증가시킬 수 있다. 이러한 예에서, 히스토그램 빈 범위가 단일 정수 범위와 동일하다고 설명되었지만, 버킷 히스토그램 빈은 모든 유형의 숫자 범위를 반영하는 빈에 대응할 수 있음을 이해해야 한다. 따라서 일부 구현예에서 버킷 히스토그램 빈은 단일 정수 값 범위보다 더 넓거나 좁은 범위에 대응할 수 있다.
히스토그램 구성기(165)는 디코딩된 벡터의 각 값을 반복할 수 있고, 전술한 바와 같이 히스토그램을 업데이트할 수 있다. 히스토그램 구성기(165)는 컴퓨터 메모리의 하나 이상의 데이터 구조에 히스토그램을 저장할 수 있다. 디코딩된 벡터의 각 좌표 버킷을 반복한 후, 히스토그램 구성기(165)는 히스토그램에서 노이즈를 제거할 수 있다. 벡터를 부분적으로 복호화하고 셔플링하기 전에 하나 이상의 작업자(405)가 추가 버킷을 추가했음을 기억해야 한다. 노이즈 버킷 값을 암호화된 벡터에 첨부하기 전에, 작업자(405) 각각은 기준 노이즈 값 B에 동의했다. 이와 같이, 히스토그램에 제시된 결과가 편향되고, 정확한 측정을 달성하기 위해 노이즈가 제거될 수 있다. 노이즈를 제거하기 위해, 히스토그램 구성기(165)는 각각의 버킷 히스토그램 빈을 반복하고, B*w를 뺄 수 있으며, 여기서 w는 버킷에 노이즈를 추가한 작업자(405)의 수이다. 히스토그램 구성기(165)는 하나 이상의 작업자(405)로부터 기준 노이즈 값과 함께 암호화된 벡터에 노이즈를 추가한 작업자(405)의 수를 수신할 수 있다. 일부 구현예에서, 히스토그램 구성기(165)는 기준 노이즈 값 B에 대해 이미 동의한 작업자(405)에서 실행 중이다. 이와 같이, 컴퓨터 메모리에 상주할 수 있는 기준 노이즈 값을 요청하거나 수신할 필요가 있을 수 있다. 히스토그램의 각 빈으로부터 노이즈를 감산함으로써, 히스토그램 구성기(165)는 필터링된 히스토그램을 생성할 수 있다. 기준(baseline)이 제거되었지만 필터링된 히스토그램에 양측 기하학적 노이즈가 여전히 존재할 수 있음을 이해해야 한다. 이는 카디널리티 또는 빈도 추정 결과에 큰 영향을 미치지 않으면서, 노이즈가 히스토그램의 값을 더 난독화하므로 시스템의 보안을 더욱 향상시킬 수 있다.
카디널리티 추정기(170)는 히스토그램 생성기(165)에 의해 생성된 필터링된 히스토그램에 기초하여 디바이스 식별자 및 디바이스 속성 세트의 카디널리티(예를 들어, 멀티세트의 고유 멤버의 수 등)를 추정할 수 있다. 멀티세트의 총 카디널리티를 추정하기 위해, 카디널리티 추정기(170)는 아래에 포함된 공식을 사용할 수 있다.
Figure pct00007
위 식에서, n은 멀티세트의 카디널리티, k는 각 최소 증가 계수 블룸 필터를 채우는데 사용되는 해시 함수의 수, m은 디코딩된 벡터의 카운터 레지스터 버킷 수, x는 디코딩된 벡터의 채워진 버킷의 수이다. 카디널리티 추정기(170)는 필터링된 히스토그램에서 1보다 크거나 같은 각각의 빈을 카운팅함으로써 채워진 버킷의 수를 결정할 수 있다. 카디널리티 추정기(170)는 시스템(100)의 하나 이상의 컴퓨팅 디바이스 또는 작업자(405) 또는 애그리게이터(410) 중 임의의 것으로부터, 각각의 다른 값(예를 들어, 해시 함수의 수, 각각의 디코딩된 벡터 내의 카운터 레지스터 버킷의 수 등)을 수신할 수 있다. 멀티세트의 K+ 빈도를 추정하기 위해, 카디널리티 추정기(170)는 하나 이상의 대안으로 위에서 제공된 식을 이용할 수 있다. K+ 빈도를 추정하기 위해, 카디널리티 추정기(170)는 카디널리티 추정기(170)가 목표 빈도 값 K보다 작은 범위에 대응하는 필터링된 히스토그램의 빈을 비어있는 것으로 취급하도록 히스토그램을 추가로 필터링할 수 있다. 예를 들어, 목표 빈도가 3인 경우, 카디널리티 추정기(170)는 3미만의 모든 범위(예: [0, 1), [1, 2), [2, 3) 등)를 비어있는 것으로 취급할 수 있고, 카디널리티 추정에 해당 버킷을 포함하지 않는다. 이와 같이, 위 식에서 x의 값은 빈도 임계 값보다 크거나 같은 디코딩된 벡터의 버킷 수로 취급된다. 카디널리티 추정기(170)는 예를 들어, 내부 구성 설정으로부터 또는 시스템(100)의 하나 이상의 컴퓨팅 디바이스로부터, 또는 작업자(405) 또는 애그리게이터(410)로부터 빈도 임계 값을 수신할 수 있다. 멀티세트의 카디널리티 또는 빈도를 계산한 후, 카디널리티 추정기(170)는 하나 이상의 메시지에서 카디널리티 또는 빈도를 요청하는 컴퓨팅 디바이스에 제공(예를 들어, 전송 또는 통신하는 등)할 수 있다. 카디널리티 추정기(170)는 시스템(100)의 임의의 컴퓨팅 디바이스, 예를 들어 데이터 프로세싱 시스템(105A-N), 클라이언트 디바이스(120) 또는 시스템(100)에 도시되지 않았지만 네트워크(110)에 통신적으로 연결되고 요청을 통신하고 카디널리티 추정기(170)로부터 카디널리티 데이터를 수신하도록 구성된 다른 외부 컴퓨팅 디바이스로부터 카디널리티에 대한 요청을 수신할 수 있다.
이제 도 5를 참조하면, 도시된 것은 식별자 값 및 속성 데이터에 기초하여 암호화된 벡터를 생성하기 위한 방법(500)의 흐름도이다. 방법(500)은 예를 들어, 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 적어도 하나의 데이터 프로세싱 시스템(105) 등) 또는 여기에 설명된 임의의 다른 컴퓨팅 디바이스에 의해 수행될 수 있다. 데이터 프로세싱 시스템은 데이터 레코드를 유지할 수 있다(동작 502). 데이터 프로세싱 시스템은 벡터를 생성할 수 있다(동작 504). 데이터 프로세싱 시스템은 k번째 데이터 레코드를 선택할 수 있다(동작 506). 데이터 프로세싱 시스템은 선택된 데이터 레코드를 해시할 수 있다(동작 508). 데이터 프로세싱 시스템은 레지스터 식별자를 추출할 수 있다(동작 510). 데이터 프로세싱 시스템은 j번째 레지스터 식별자를 선택할 수 있다(동작 512). 데이터 프로세싱 시스템은 선택된 레지스터 식별자를 증가시킬 수 있다(동작 514). 데이터 프로세싱 시스템은 카운터 레지스터 j가 레지스터 식별자의 수 m과 동일한지 여부를 결정할 수 있다(동작 516). 데이터 프로세싱 시스템은 카운터 레지스터 j를 증가시킬 수 있다(동작 518). 데이터 프로세싱 시스템은 카운터 레지스터 k가 데이터 레코드의 수 n과 동일한지 여부를 결정할 수 있다(동작 520). 데이터 프로세싱 시스템은 카운터 레지스터 k를 증가시킬 수 있다(동작 522). 데이터 프로세싱 시스템은 집합된 암호화 키를 획득할 수 있다(동작 524). 데이터 프로세싱 시스템은 벡터 카운터 레지스터를 암호화할 수 있다(동작 526). 데이터 프로세싱 시스템은 암호화된 벡터를 전송할 수 있다(동작 528).
데이터 프로세싱 시스템은 데이터 레코드를 유지할 수 있다(동작 502). 데이터 레코드(예를 들어, 데이터 레코드(122A-N))는 예를 들어 하나 이상의 디바이스 식별자(예를 들어, 클라이언트 식별자(122A-N)) 및 하나 이상의 속성(예를 들어, 속성(127A-N))을 포함할 수 있다. 데이터 레코드는 데이터 프로세싱 시스템에 통신적으로 결합된 데이터베이스(예를 들어, 데이터베이스(115))에 저장된 하나 이상의 데이터 구조일 수 있다. 데이터 레코드를 유지하는 것은 컴퓨터 메모리에 하나 이상의 데이터 레코드를 저장하는 것을 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 하나 이상의 메시지(예를 들어, 요청, 표시, 데이터 패킷 등)를 수신하는 것에 응답하여 데이터 레코드를 적어도 하나의 클라이언트 디바이스(예를 들어, 적어도 하나의 클라이언트 디바이스(120))에 유지할 수 있다. 데이터 프로세싱 시스템은 메시지의 속성과 함께 메시지로부터 적어도 하나의 식별자를 추출하고 식별자 및 속성을 포함하는 데이터 레코드를 생성할 수 있다. 데이터 프로세싱 시스템은 데이터베이스, 하나 이상의 데이터 구조 또는 비휘발성 컴퓨터 판독가능 매체와 같은 컴퓨터 메모리에 데이터 레코드를 유지(예를 들어, 저장, 로드 또는 기록)할 수 있다.
데이터 프로세싱 시스템은 벡터를 생성할 수 있다(동작 504). 벡터를 생성하기 위해, 데이터 프로세싱 시스템은 적어도 하나의 카운터 레지스터를 수용하기 위해 하나 이상의 메모리 영역을 할당할 수 있다. 할당된 카운터 레지스터는 벡터의 적어도 하나의 좌표에 대응할 수 있다. 하나 이상의 카운터 레지스터에 대한 메모리를 생성하고 할당함으로써, 데이터 프로세싱 시스템은 카운터 레지스터를 포함하는 벡터를 생성할 수 있다. 데이터 프로세싱 시스템은 벡터의 카운터 레지스터 각각을 초기화 값(예: 0 또는 1)으로 초기화할 수 있다. 데이터 프로세싱 시스템은 임의의 수의 카운터 레지스터(때로는 "버킷"이라고도 함)를 갖도록 최소 증가 카운팅 블룸 필터에 대응할 수 있는 벡터를 생성할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 n개의 버킷을 갖는 최소 증가 카운팅 블룸 필터를 생성하기 위한 표시를 수신할 수 있거나, 버킷 또는 카운터 레지스터 수에 의해 최소 증가 카운팅 블룸의 크기를 특정하는 외부 컴퓨팅 디바이스에 의해 제공되는 내부 구성 설정에 액세스할 수 있다.
데이터 프로세싱 시스템은 k번째 데이터 레코드를 선택할 수 있다(동작 506). 생성된 최소 증가 카운팅 블룸 필터에 (동작 502)에서 유지되는 각 데이터 레코드를 프로세싱하고 추가하기 위해, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에서 유지하는 데이터 레코드 각각에 대해 반복할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k에 기초하여 데이터 레코드 각각을 반복적으로 루프할 수 있다. 예를 들면, 데이터 레코드 각각은 인덱스 값(예를 들어, 인덱스 0, 인덱스 1, 인덱스 2 등)에 의해 데이터 구조에서 인덱스될 수 있다. 데이터 레코드를 프로세싱하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 k와 동일한(거의 동일한) 인덱스 값을 포함하거나 그와 연관된 데이터 레코드를 선택할 수 있다. 그것이 루프의 첫 번째 반복이라면, 카운터 레지스터 k는 k번째 데이터 레코드를 선택하기 전에 초기화 값(예를 들어, k = 0, k = 1 등)으로 초기화될 수 있다. 데이터 레코드를 선택하는 것은 데이터 레코드와 연관된 데이터를 데이터 프로세싱 시스템의 컴퓨터 메모리의 다른 영역, 예를 들어 메모리의 작업 영역에 복사하는 것을 포함할 수 있다. 데이터 레코드를 선택하는 것은 데이터 레코드가 데이터베이스에 있는 경우 데이터베이스에서 데이터 레코드를 검색하고, 샘플과 연관된 데이터를 데이터 프로세싱 시스템의 다른 컴퓨터 메모리 영역(예: 메모리의 작업 영역)에 복사하는 것을 포함할 수 있다.
데이터 프로세싱 시스템은 선택된 데이터 레코드를 해시할 수 있다(동작 508). 데이터 프로세싱 시스템은 최소 증가 카운팅 블룸 필터를 채우기 위해 하나 이상의 해시 함수를 식별하고 실행할 수 있다. 예를 들어, 해시 목록에서 식별된 각 해시는 입력 값에 기초하여 정규 분포 또는 임의성 기대치를 제공할 수 있다. 즉, 예를 들어 해시 함수에 대한 유사한 입력이 반드시 해시 함수와 유사한 출력을 갖는 것은 아니다. 해시 함수는 블룸 필터를 카운팅하기 위한 최적의 해시 함수로 선택할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 독립적이고 균일하게 분포된 해시 함수를 선택할 수 있다. 이러한 해시 함수는 예를 들어 murmur 해시, Fowler-Noll-Vo 시리즈 해시 또는 Jenkins 해시 등을 포함할 수 있다. 데이터 프로세싱 시스템은 다수의 해시 함수를 선택하거나 식별할 수 있고, 각각의 해시 함수를 선택된 데이터 레코드에 적용하여 해시된 데이터 레코드 세트를 생성할 수 있다.
데이터 프로세싱 시스템은 레지스터 식별자를 추출할 수 있다(동작 510). 해시된 데이터 레코드 세트의 각각의 해시된 데이터 레코드는 동작 504에 의해 생성된 벡터의 카운터 레지스터에 대응할 수 있다. 대응하는 카운터 레지스터를 식별하기 위해, 데이터 프로세싱 시스템은 해시된 데이터 레코드 각각에서 레지스터 식별자를 추출할 수 있다. 데이터 프로세싱 시스템은 예를 들어 최소 증가 카운팅 블룸 필터의 카운터 레지스터의 수로 각 해시된 데이터 식별자에 대해 모듈러스 연산을 수행함으로써 레지스터 식별자를 추출할 수 있다. 예를 들어, 해시된 데이터 레코드 중 하나가 500과 같고 최소 증가 카운팅 블룸 필터에 15개의 포지션이 있는 경우, 데이터 프로세싱 시스템은 500 % 15 = 5를 계산하여 해시된 데이터 레코드가 최소 증가 카운팅 블룸 필터의 다섯 번째 카운터 레지스터에 대응하는지 결정할 수 있다. 일부 구현예에서, 최소 증가 블룸 필터의 카운터 레지스터 수가 2의 거듭 제곱이면 데이터 프로세싱 시스템은 log2(b)와 동일한 비트 수를 선택할 수 있으며, 여기서 b는 최소 증가 카운팅 블룸 필터의 카운터 레지스터의 수와 동일하다.
최소 증가 블룸 필터 구현예에서, 데이터 프로세싱 시스템은 버킷 값 세트를 검색하기 위해 동작 510에 의해 추출된 레지스터 식별자들 각각과 연관된 카운터 레지스터 버킷에 추가로 액세스할 수 있다. 증가할 버킷 값을 결정하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 버킷 중 최소값과 동일한 카운터 레지스터 버킷의 서브세트를 결정할 수 있다. 최소값은 각 카운터 레지스터 버킷을 비교하고 가장 작은 버킷 값(예: 0에 가장 가까운 값)을 식별하여 결정할 수 있다. 예를 들어 각 값이 3, 91, 30, 88 및 10인 5 개의 버킷이 있는 경우 최소 버킷 값은 3이다. 하나의 버킷만 최소값과 동일한 것으로 설명되어 있지만 최소값과 동일한 버킷의 임의의 수가 있을 수 있다. 이 개념을 설명하기 위해, 다섯 개의 버킷이 각각 5, 10, 30, 5 및 28과 동일한 두 번째 예를 고려한다. 이 예에는 5와 동일한 두 개의 버킷이 있다. 모든 버킷의 최소값도 5이다. 그 후, 데이터 프로세싱 시스템은 카운터 레지스터 버킷의 서브세트에 포함시키기 위한 최소값과 동일한 버킷을 선택할 수 있다. 즉, 버킷이 각각 3, 91, 30, 88, 10과 동일한 첫 번째 예시에서, 데이터 프로세싱 시스템은 최소값인 3과 동일한 버킷을 서브세트에서 카운터 레지스터로 선택할 수 있다. 두 번째 예시에서, 5개의 버킷이 각각 5, 10, 30, 5 및 28과 동일한 경우, 데이터 프로세싱 시스템은 카운터 레지스터 버킷의 최소값인 5와 동일한 두 버킷을 모두 선택할 수 있다. 카운터 레지스터의 선택은 데이터 프로세싱 시스템의 메모리 내의 데이터 구조에서 대응하는 버킷을 식별하는 레지스터 식별자를 저장하는 것을 포함할 수 있다. 그 후, 데이터 프로세싱 시스템은 동작 512의 레지스터 식별자 서브세트 목록에 대해 반복할 수 있다.
데이터 프로세싱 시스템은 j번째 레지스터 식별자를 선택할 수 있다(동작 512). 동작 510에서 추출된 각 레지스터 식별자를 프로세싱하고 업데이트하기 위해, 데이터 프로세싱 시스템은 각 레지스터 식별자에 대해 반복할 수 있다. 데이터 프로세싱 시스템은 카운터 레지스터 j에 기초하여 레지스터 식별자 각각을 반복적으로 루프할 수 있다. 예를 들면, 레지스터 식별자 각각은 인덱스 값(예를 들어, 인덱스 0, 인덱스 1, 인덱스 2 등)에 의해 데이터 구조에서 인덱스될 수 있다. 레지스터 식별자 및 그것의 연관된 카운터 레지스터를 프로세싱하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 j와 동일한(거의 동일한) 인덱스 값을 포함하거나 그와 연관된 레지스터 식별자를 선택할 수 있다. 그것이 루프의 첫 번째 반복이라면, 카운터 레지스터 j는 j번째 레지스터 식별자를 선택하기 전에 초기화 값(예를 들어, k = 0, k = 1 등)으로 초기화될 수 있다. 레지스터 식별자를 선택하는 것은 레지스터 식별자와 연관된 데이터를 데이터 프로세싱 시스템의 컴퓨터 메모리의 다른 영역, 예를 들어 메모리의 작업 영역에 복사하는 것을 포함할 수 있다.
데이터 프로세싱 시스템은 선택된 레지스터 식별자를 증가시킬 수 있다(동작 514). 레지스터 식별자를 증가시키는 것은 레지스터 식별자에 대응하는 카운터 레지스터에 하나를 추가하는 것을 포함할 수 있다. 일부 구현예에서, 카운터 레지스터에 추가되는 양은 1이 아닌 값일 수 있다. 예를 들어, 데이터 프로세싱 시스템은 여기서 결정, 생성 또는 계산된 임의의 값에 대응할 수 있는 각 카운터 레지스터에 다른 값을 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 본 명세서에서 논의되는 다양한 이유로 카운터 레지스터로부터 감산될 수 있다. 일부 구현예에서, 감산에 대한 대안으로서, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에 의해 현재 선택되지 않은 다른 카운터 레지스터 버킷 각각에 양(예를 들어, 1 또는 일부 다른 값 등)을 더할 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 j가 레지스터 식별자의 수 m과 동일한지 여부를 결정할 수 있다(동작 516). 데이터 프로세싱 시스템이 추출된 레지스터 식별자에 대응하는 카운터 레지스터 버킷 각각을 증가 또는 업데이트했는지 여부를 결정하기 위해, 데이터 프로세싱 시스템은 각 레지스터 식별자를 선택하는데 사용된 카운터 레지스터(예: j)를 총 추출된 레지스터 식별자의 수 m과 비교할 수 있다. 카운터 레지스터 j가 총 추출된 레지스터 식별자의 수 m과 동일하지 않으면(예를 들어, 그보다 작은 경우), 데이터 프로세싱 시스템은 동작 518를 실행할 수 있다. 카운터 레지스터 j가 총 추출된 레지스터 식별자의 수 m과 같거나(예를 들어, 크거나 같으면), 데이터 프로세싱 시스템은 동작 520를 실행할 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 j를 증가시킬 수 있다(동작 518). 일부 구현예에서, 데이터 프로세싱 시스템은 추출된 레지스터 식별자의 세트(예를 들어, 추출된 레지스터 식별자들의 서브세트 등)에서 다음 프로세싱되지 않은 레지스터 식별자를 나타내기 위해 레지스터 j에 하나를 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 j를 다음 프로세싱되지 않은 추출된 레지스터 식별자의 메모리 어드레스 값(예를 들어, 컴퓨터 메모리에서의 위치)으로 설정할 수 있다. 일부 구현예에서, 다음 프로세싱되지 않은 추출된 레지스터 식별자의 메모리 어드레스 값은 현재(예를 들어, 선택된) 레지스터 식별자의 위치에서 데이터 구조에 포함될 수 있다. 카운터 레지스터 j의 값을 증가시킨 후, 데이터 프로세싱 시스템은 동작 512를 실행할 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 k가 데이터 레코드의 수 n과 동일한지 여부를 결정할 수 있다(동작 520). 데이터 프로세싱 시스템이 각 데이터 레코드를 사용하여 최소 증가(예: 또는 표준) 카운팅 블룸 필터를 업데이트했는지 여부를 결정하기 위해, 데이터 프로세싱 시스템은 각 데이터 레코드를 선택하는데 사용된 카운터 레지스터(예: k)를 총 데이터 레코드의 수 n과 비교할 수 있다. 카운터 레지스터 k가 총 데이터 레코드의 수 n과 동일하지 않으면(예를 들어, 그보다 작은 경우), 데이터 프로세싱 시스템은 동작 522를 실행할 수 있다. 카운터 레지스터 k가 총 데이터 레코드의 수 n과 같으면(예를 들어, 동일하거나 그보다 큰 경우), 데이터 프로세싱 시스템은 동작 524를 실행할 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 k를 증가시킬 수 있다(동작 522). 일부 구현예에서, 데이터 프로세싱 시스템은 유지된 데이터 레코드 세트(예를 들어, 동작 502에서 데이터 프로세싱 시스템에 의해 유지되는 데이터 레코드 등)에서 다음 프로세싱되지 않은 데이터 레코드를 나타내기 위해 레지스터 k에 하나를 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k를 다음 프로세싱되지 않은 데이터 레코드의 메모리 어드레스 값(예를 들어, 컴퓨터 메모리에서의 위치)으로 설정할 수 있다. 일부 구현예에서, 다음 프로세싱되지 않은 데이터 레코드의 메모리 어드레스 값은 현재(예를 들어, 선택된) 데이터 레코드의 위치에서 데이터 구조에 포함될 수 있다. 카운터 레지스터 k의 값을 증가시킨 후, 데이터 프로세싱 시스템은 동작 524를 실행할 수 있다.
데이터 프로세싱 시스템은 집합된 암호화 키를 획득할 수 있다(동작 524). 예를 들어, 데이터 프로세싱 시스템은 하나 이상의 작업자 컴퓨팅 디바이스에 의해 생성된 집합된 공개 키를 수신할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 다른 컴퓨팅 디바이스(예를 들어, 다른 데이터 프로세싱 시스템, 작업자 컴퓨팅 디바이스 등)로부터 하나 이상의 공개 키를 수신하고, 공개 키를 집합된 공개 암호화 키로 집합할 수 있다. 일부 구현예에서, 집합된 키는 하나 이상의 벡터(예를 들어, 업데이트된 카운터 레지스터 버킷을 포함하는 카운팅 블룸 필터 벡터 등)를 부분적으로 또는 완전히 암호화하는데 사용될 수 있다. 일부 구현예에서, 집합된 키는 데이터 프로세싱 시스템에 의해 유지되는 카운팅 블룸 필터를 암호화하기 위해 데이터 프로세싱 시스템에 배포되는 단일 공개 키일 수 있다. 일부 구현예에서, 집합된 암호화 키는 하나 이상의 ElGamal 암호화 키, 또는 임의의 다른 유형의 동형 암호화 체계를 포함할 수 있다. 일부 구현예에서, 집합된 암호화 키는 임계 복호화 방식을 지원하는 모든 종류의 공개 암호화 키일 수 있다.
데이터 프로세싱 시스템은 벡터 카운터 레지스터를 암호화할 수 있다(동작 526). 최소 증가 카운팅 블룸 필터의 차등 프라이버시를 보장하기 위해, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에 의해 생성 및 유지되는 벡터를 암호화하기 위해 하나 이상의 암호화 기법을 사용할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 암호화 체계(예를 들어, ElGamal 암호화, 임계값 복호화를 지원하는 암호화 체계, 동형 암호화 등)을 사용하여 동작 526에서 획득된 집합된 공개 키를 사용할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 집합된 암호화 키를 사용하여 개별적으로 벡터의 좌표에 대응하는 카운터 레지스터들 각각을 암호화할 수 있다. 이러한 구현예에서, 암호화된 카운터 레지스터 각각은 최소 증가 계수 블룸 필터를 나타내는 암호화된 벡터를 생성하기 위해 집합될 수 있다.
데이터 프로세싱 시스템은 암호화된 벡터를 전송할 수 있다(동작 528). 암호화된 벡터를 전송하는 것은 작업자 컴퓨팅 디바이스에 암호화된 벡터를 제공하는 것을 포함할 수 있다. 데이터 프로세싱 시스템은 암호화된 벡터를 프로세싱하기 위해 하나 이상의 작업자 컴퓨팅 디바이스 중 첫 번째로 작업자 컴퓨팅 디바이스를 선택할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 암호화된 벡터를 버킷 단위로 전송할 수 있으며, 여기서 각 버킷은 작업자 컴퓨팅 디바이스에 개별적으로 전송된다. 일부 구현예에서, 데이터 프로세싱 시스템은 암호화된 벡터를 대량 트랜잭션으로 전송할 수 있으며, 여기서 암호화된 벡터의 대부분 또는 전체가 단일 메시지로 전송된다.
이제 도 6을 참조하면, 도시된 것은 작업자 컴퓨팅 디바이스에 의해 암호화된 벡터를 프로세싱하기 위해 암호화 키를 생성 및 집합하는 방법(600)의 흐름도이다. 방법(600)은 예를 들어, 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 적어도 하나의 데이터 프로세싱 시스템(105) 등) 또는 여기에 설명된 임의의 다른 컴퓨팅 디바이스에 의해 수행될 수 있다. 데이터 프로세싱 시스템은 결합된 키를 생성할 수 있다(동작 602). 데이터 프로세싱 시스템은 결합된 키를 식별자 서버로 전송할 수 있다(동작 604). 데이터 프로세싱 시스템은 암호화된 벡터를 수신할 수 있다(동작 606). 데이터 프로세싱 시스템은 k번째 암호화된 벡터를 선택할 수 있다(동작 608). 데이터 프로세싱 시스템은 동형 암호화로 합계를 계산할 수 있다(동작 610). 데이터 프로세싱 시스템은 카운터 레지스터 k가 암호화된 벡터의 수 n과 동일한지 여부를 결정할 수 있다(동작 612). 데이터 프로세싱 시스템은 암호화된 벡터에 디코딩 룩업 테이블을 첨부할 수 있다(동작 614). 데이터 프로세싱 시스템은 디코딩 룩업 테이블을 첨부할 수 있다(동작 616). 데이터 프로세싱 시스템은 암호화된 벡터를 부분적으로 복호화할 수 있다(동작 618). 데이터 프로세싱 시스템은 결정론적 암호화를 적용할 수 있다(동작 620). 데이터 프로세싱 시스템은 암호화된 벡터를 셔플할 수 있다(동작 622). 데이터 프로세싱 시스템은 프로세싱된 암호화된 벡터를 제2 작업자에게 포워딩할 수 있다(동작 624).
데이터 프로세싱 시스템은 결합된 키를 생성할 수 있다(동작 602). 결합된 키를 생성하는 것은 적어도 하나의 공개 키와 적어도 하나의 개인 키를 생성하는 것을 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 적어도 ElGamal 암호화 기법의 일부로서 구현될 수 있는 키를 생성할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 랜덤(예를 들어, 의사 랜덤 등) 정수 X modulo q(예를 들어, 타원 곡선 그룹의 순서)를 생성하거나 선택할 수 있다. 데이터 프로세싱 시스템은 정수 X를 복호화를 위한 개인 키로 사용할 수 있고, gX를 공개 키로 사용할 수 있으며, 여기서 g는 생성기이다. 예를 들어 생성기는 순환 그룹의 멤버일 수 있다. 공개 키는 예를 들어 하나 이상의 다른 작업자 컴퓨팅 디바이스와 공유될 수 있다. 다른 작업자 컴퓨팅 디바이스는 자신의 공개 및 개인 키 쌍을 생성하여 데이터 프로세싱 시스템에 전송할 수 있다. 결합된 키를 생성하기 위해, 데이터 프로세싱 시스템은 다른 작업자 컴퓨팅 디바이스로부터 수신된 각 공개 키를 자신의 공개 키와 결합할 수 있다.
데이터 프로세싱 시스템은 결합된 키를 식별자 서버로 전송할 수 있다(동작 604). 식별자 서버는 예를 들어, 도 5와 관련하여 위에서 설명한 방법(500)을 실행하는 데이터 프로세싱 시스템일 수 있다. 식별자 서버는 도 1과 관련하여 위에서 설명된 데이터 프로세싱 시스템(105A-N)일 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 동작 602에서 생성된 결합된 키의 각 공개 키를 한 번에 하나씩 전송할 수 있으며, 여기서 공개 키 각각은 단일 메시지를 차지한다. 일부 구현예에서, 데이터 프로세싱 시스템은 단일 메시지의 결합된 키를 식별자 서버(예를 들어, 단일 패킷, 단일 트랜잭션 또는 일련의 패킷 등)에 전송할 수 있다.
데이터 프로세싱 시스템은 암호화된 벡터를 수신할 수 있다(동작 606). 식별자 서버에 의해 암호화를 위해 결합된 키를 전송한 후, 데이터 프로세싱 시스템은 식별자 서버 각각으로부터 적어도 하나의 암호화된 벡터를 수신할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 벡터를 주기적으로 또는 버스트 트랜잭션으로 수신할 수 있다. 각 벡터는 벡터가 수신되었던 식별자 서버를 반영하는 각각의 식별자와 연관될 수 있다. 식별자 서버로부터 수신된 각각의 암호화된 벡터는 동작 602에서 생성된 결합된 공개 키를 사용하여 암호화될 수 있다. 결합된 공개 키는 각 작업자가 식별자 서버로부터 수신된 암호화된 벡터를 부분적으로 복호화하게 할 수 있다.
데이터 프로세싱 시스템은 k번째 암호화된 벡터를 선택할 수 있다(동작 608). 동형 추가를 사용하여 동작 606에서 수신된 각 암호화된 벡터를 프로세싱하고 집합하기 위해, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에서 수신된 각 암호화된 벡터에 대해 반복할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k에 기초하여 암호화된 벡터 각각을 반복적으로 루프할 수 있다. 암호화된 벡터 각각은 인덱스 값(예를 들어, 인덱스 0, 인덱스 1, 인덱스 2 등)에 의해 데이터 구조에서 인덱스될 수 있다. 암호화된 벡터를 프로세싱하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 k와 동일한(거의 동일한) 인덱스 값을 포함하거나 그와 연관된 암호화된 벡터를 선택할 수 있다. 그것이 루프의 첫 번째 반복이라면, 카운터 레지스터 k는 k번째 암호화된 벡터를 선택하기 전에 초기화 값(예를 들어, k = 0, k = 1 등)으로 초기화될 수 있다. 암호화된 벡터를 선택하는 것은 암호화된 벡터와 연관된 데이터를 데이터 프로세싱 시스템의 컴퓨터 메모리의 다른 영역, 예를 들어 메모리의 작업 영역에 복사하는 것을 포함할 수 있다.
데이터 프로세싱 시스템은 동형 추가를 사용하여 암호화된 벡터의 합계를 계산할 수 있다(동작 610). 데이터 프로세싱 시스템은 암호화된 벡터 각각을 집합 암호화된 벡터로 누적, 추가 또는 집합할 수 있다. 집합 암호화된 벡터는 예를 들어, 식별자 서버에 의해 업데이트된 각 암호화된 카운터 레지스터 버킷의 집합된 총합을 포함할 수 있다. 식별자 서버는 각각 최소 증가 카운팅 블룸 필터를 유지하고 업데이트하여 각 식별자 서버와 연관된 디바이스의 수 및 속성을 나타낸다. 동형 암호화를 사용하여 서버를 암호화함으로써 각 식별자 서버는 서버와 연관된 디바이스 수 또는 속성 유형에 대한 정보나 데이터를 숨길 수 있다. 이 단계에서, 데이터 프로세싱 시스템(예를 들어, 작업자 컴퓨팅 디바이스 등)은 암호화된 벡터 각각을 집합하여, 모든 식별자 서버에 걸쳐 디바이스의 총 수 및 속성을 나타내는 집합된 벡터를 생성할 수 있다. 동형 추가를 사용함으로써, 데이터 프로세싱 시스템은 집합 전에 암호화된 벡터를 복호화할 필요가 없으므로 시스템의 차등 프라이버시를 보존할 수 있다. 동형 추가를 수행하기 위해, 데이터 프로세싱 시스템은 선택한 암호화된 벡터를 누산기 벡터에 동형 추가할 수 있다. 루프의 첫 번째 반복(예: k가 초기화 값과 같음 등)이면, 데이터 프로세싱 시스템은 선택된 벡터를 누산기 암호화 벡터로 저장할 수 있다. 루프의 첫 번째 반복이 아닌 경우, 데이터 프로세싱 시스템은 선택된 벡터와 누산기 벡터간에 동형 추가를 수행하고, 동형 추가의 결과를 누산기 벡터로 저장할 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 k가 암호화된 벡터의 수 n과 동일한지 여부를 결정할 수 있다(동작 612). 데이터 프로세싱 시스템이 각각의 암호화된 벡터를 동형적으로 추가했는지 여부를 결정하기 위해, 데이터 프로세싱 시스템은 각 데이터 레코드를 선택하는데 사용되는 카운터 레지스터(예를 들어, k)를 총 암호화된 벡터의 수 n과 비교할 수 있다. 카운터 레지스터 k가 총 암호화된 벡터의 수 n과 동일하지 않으면(예를 들어, 그보다 작은 경우), 데이터 프로세싱 시스템은 동작 614를 실행할 수 있다. 카운터 레지스터 k가 총 암호화된 벡터의 수 n과 같으면(예를 들어, 동일하거나 그보다 큰 경우), 데이터 프로세싱 시스템은 동작 616를 실행할 수 있다. 암호화된 벡터를 모두 추가한 후, 데이터 프로세싱 시스템은 누산기 벡터를 컴퓨터 메모리의 다른 영역에 복사하여, 누적된 또는 집합된 암호화된 벡터를 생성할 수 있다.
데이터 프로세싱 시스템은 암호화된 벡터에 디코딩 룩업 테이블을 첨부할 수 있다(동작 614). 일부 구현예에서, 데이터 프로세싱 시스템은 암호화된 벡터 세트(예를 들어, 동작 606에서 데이터 프로세싱 시스템에 의해 암호화된 벡터 등)에서 다음 프로세싱되지 않은 암호화된 벡터를 나타내기 위해 레지스터 k에 하나를 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k를 다음 프로세싱되지 않은 암호화된 벡터의 메모리 어드레스 값(예를 들어, 컴퓨터 메모리에서의 위치)으로 설정할 수 있다. 일부 구현예에서, 다음 프로세싱되지 않은 암호화된 벡터의 메모리 어드레스 값은 현재(예를 들어, 선택된) 암호화된 벡터의 위치에서 데이터 구조에 포함될 수 있다. 카운터 레지스터 k의 값을 증가시킨 후, 데이터 프로세싱 시스템은 동작 608를 실행할 수 있다.
데이터 프로세싱 시스템은 암호화된 벡터 버킷을 부분적으로 복호화할 수 있다(동작 616). 집합되거나 누적된 암호화된 벡터의 각 버킷을 결정론적으로 암호화하기 위해, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에 대응하는 값을 부분적으로 복호화할 수 있다. 예를 들어, 집합된 암호화된 벡터의 특정 버킷은 데이터 프로세싱 시스템에 의해 유지되는 하나 이상의 키를 사용하여 복호화될 수 있다. 예를 들어, 하나 이상의 키는 동작 602의 데이터 프로세싱 시스템에 의해 생성된 비밀 키를 포함할 수 있다. 예를 들어, 동작 602에서, 데이터 프로세싱 시스템은 공개 키와 개인 키를 생성하고 데이터 프로세싱 시스템과 통신하는 다른 작업자 컴퓨팅 디바이스와 공개 키를 교환한다. 결합된 키를 생성하기 위해, 데이터 프로세싱 시스템은 개인 키를 연결, 집합 또는 결합할 수 있다. ElGamal 또는 동형 암호화 키의 특성으로 인해, 데이터 프로세싱 시스템은 집합된 공개 키를 사용하여 암호화된 임의의 값을 부분적으로 복호화할 수 있다. 분산된 동형 암호화 체계를 사용하는 부분 복호화만을 허용함으로써, 방법(600)은 식별자 서버에 의해 생성된 벡터의 차등 프라이버시를 보존할 수 있다.
데이터 프로세싱 시스템은 결정론적 암호화를 적용할 수 있다(동작 618). 결정론적 암호화는 예를 들어 동작 616의 데이터 프로세싱 시스템에 의해 생성된 부분적으로 복호화된 값에 적용될 수 있다. 결정론적 암호화는 데이터 프로세싱 시스템에만 알려진 비밀 키를 적용하여 달성될 수 있다. 예를 들어, 데이터 프로세싱 시스템은 동작 616에서 생성된 부분적으로 복호화된 모든 버킷에 비밀 지수를 적용할 수 있다. 이 동작은 동형(homomorphism)(예: 생성기 g를 임의의 그룹 엘리먼트 등으로 변경하는 것과 동일)을 통해 수행할 수 있다. 비밀 키는 특정 임계 값을 만족하는 값만 암호화하거나 복호화할 수 있는 임계 비밀 키일 수 있다. 이러한 방식으로 데이터 프로세싱 시스템은 시스템의 전반적인 프라이버시 및 보안을 유지할 수 있다. 비밀 키는 결정론적 암호화의 결과를 디코딩하는데 사용될 수 있는 룩업 테이블 또는 모든 작업자 컴퓨팅 디바이스에서 집합된 결정론적 암호화와 연관될 수 있다.
데이터 프로세싱 시스템은 디코딩 룩업 테이블을 첨부할 수 있다(동작 620). 디코딩 룩업 테이블은 동작 616에서 부분적으로 복호화된 결정론적으로 암호화된 벡터에 첨부될 수 있다. 디코딩 룩업 테이블은 예를 들어, 모든 작업자 컴퓨팅 디바이스에 걸쳐 분산 결정론적 암호화 체계의 최종 출력을 디코딩하는데 사용될 수 있다. 결정론적 암호화 체계와 값의 부분적인 복호화를 사용하여, 데이터 프로세싱 시스템은 시스템의 차등 프라이버시를 보존하고, 최소 증가 블룸 필터에서 식별자 서버에 의해 표시되는 임의의 개인 또는 보호된 데이터를 보호할 수 있다. 디코딩 룩업 테이블을 첨부하는 것은 예를 들어 룩업 테이블을 결정론적으로 암호화되고 부분적으로 복호화된 벡터에 연결하는 것을 포함할 수 있다. 룩업 테이블은 복호화에 대한 작업자 기여만 복호화할 수 있으므로, 작업자 컴퓨팅 디바이스의 서브세트는 데이터 세트를 완전히 복호화할 수 없다. 임계 암호화를 사용함으로써 시스템의 보안이 더욱 향상되며, 임계치를 만족하는 값만 복호화하여 작업자 컴퓨팅 디바이스에 제공한다. 암호화된 벡터 버킷을 셔플링하기 전에, 데이터 프로세싱 시스템은 도 7에서 아래에 설명된 방법(700)에 요약된 프로세스를 사용하여 벡터에 노이즈 값을 첨부할 수 있다.
데이터 프로세싱 시스템은 암호화된 벡터 버킷을 셔플링할 수 있다(동작 622). 암호화된 벡터 버킷 셔플은 벡터 버킷을 무작위로 순열하는 것을 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 암호화된 벡터의 각 버킷에 액세스하고 랜덤(예: 의사 랜덤 등) 방식으로 순서를 변경할 수 있다. 데이터 프로세싱 시스템은 다른 컴퓨팅 디바이스가 순열된 버킷의 순열 순서를 알거나 결정할 수 없도록 비밀리에 버킷을 셔플링하거나 순열할 수 있다. 암호화된 벡터의 순열 또는 셔플링은 암호화된 벡터에 첨부된 룩업 테이블의 순서를 셔플하는 것은 포함하지 않는다. 이렇게 하면 암호화된 벡터 값의 최종 결정이 룩업 테이블을 사용하여 계산될 수 있다.
데이터 프로세싱 시스템은 프로세싱된 암호화된 벡터를 제2 작업자에게 포워딩할 수 있다(동작 624). 전체 벡터를 완전히 프로세싱하고 결정적으로 암호화하기 위해, 암호화된 벡터는 동작 602에서 생성된 결합된 키에 기여한 각 작업자 컴퓨팅 디바이스에 의해 프로세싱될 수 있다. 결합된 키 값은 각 작업자 컴퓨팅 디바이스(및 데이터 프로세싱 시스템 포함)에 의해 생성된 각 공개 키로 포함한다. 암호화 체계가 동형이기 때문에, 작업자의 각 개인 키는 동형 방식을 사용하여 결합된 집합된 암호화 벡터를 부분적으로 복호화할 수 있지만, 작업자 컴퓨팅 디바이스는 벡터를 완전히 복호화할 수 없다. 이를 통해 각 작업자 컴퓨팅 디바이스는 부분적으로 복호화된 값을 결정론적으로 암호화하고 다음 작업자 디바이스로 포워딩할 수 있다. 작업자 디바이스가 부분 복호화에 기초하여 벡터를 결정론적으로 암호화한 후 결과를 집합하고 암호화된 벡터에 첨부된 룩업 테이블을 사용하여 최종 결과를 계산할 수 있다.
이제 도 7을 참조하면, 도시된 것은 작업자 컴퓨팅 디바이스들 사이에 차등 프라이버시를 제공하기 위해 노이즈를 암호화된 집합된 벡터에 통합하는 방법(700)의 흐름도이다. 방법(700)은 예를 들어, 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 적어도 하나의 데이터 프로세싱 시스템(105) 등) 또는 여기에 설명된 임의의 다른 컴퓨팅 디바이스에 의해 수행될 수 있다. 데이터 프로세싱 시스템은 노이즈 기준 B에 동의할 수 있다(동작 702). 데이터 프로세싱 시스템은 랜덤 변수의 수를 생성할 수 있다(동작 704). 데이터 프로세싱 시스템은 노이즈 어레이를 생성할 수 있다(동작 706). 데이터 프로세싱 시스템은 k번째 노이즈 어레이 값을 선택할 수 있다(동작 708). 데이터 프로세싱 시스템은 랜덤 변수를 사용하여 노이즈 배열을 채울 수 있다(동작 710). 데이터 프로세싱 시스템은 k가 노이즈 어레이 값의 수 n과 동일한지 여부를 결정할 수 있다(동작 712). 데이터 프로세싱 시스템은 카운터 레지스터 k를 증가시킬 수 있다(동작 714). 데이터 프로세싱 시스템은 노이즈 어레이를 셔플링할 수 있다(동작 716). 데이터 프로세싱 시스템은 노이즈 어레이를 암호화할 수 있다(동작 718). 데이터 프로세싱 시스템은 부분 복호화 전에 암호화된 벡터에 노이즈를 첨부할 수 있다(동작 720).
데이터 프로세싱 시스템은 노이즈 기준 B에 동의할 수 있다(동작 702). 노이즈 기준은 예를 들어 개별 작업자 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템, 다른 데이터 프로세싱 시스템 등)에 의해 생성된 임의의 음의 노이즈 값보다 클 수 있는 정수일 수 있다. 예를 들어, 데이터 프로세싱 시스템은 임의의 생성된 노이즈가 임계치를 초과하지 않거나 초과할 수 없도록 노이즈 계산에 대한 특정 임계치를 사용할 수 있다. 노이즈 기준은 기준 값(예: 정수 값 등)에 더하거나 빼는 노이즈가 음수가 되지 않도록 구성될 수 있다. 기준 노이즈 값에 동의하기 위해, 각 작업자 컴퓨팅 디바이스는 각 작업자가 기준 노이즈 값이 음수 값이 되지 않는다 것이 만족될 때까지 생성된 기준 값을 교환할 수 있다. 작업자 컴퓨팅 디바이스가 기준 노이즈 값에 동의하면, 작업자 컴퓨팅 디바이스는 기준 노이즈 값과 함께 동의 메시지를 다른 컴퓨팅 디바이스에 브로드캐스트할 수 있다. 각 작업자 컴퓨팅 디바이스에서 동의 메시지가 수신되면, 그 디바이스는 기준 노이즈 값에 동의한 것이다.
데이터 프로세싱 시스템은 랜덤 변수의 수를 생성할 수 있다(동작 704). 랜덤 변수의 수는 예를 들어 시스템에 의해 측정될 최대 원하는 빈도(예: K+ 빈도 등)에 1을 더한 값일 수 있다. 이는 max_frequency + 1로 지정될 수 있다. 랜덤 변수는 모든 종류의 랜덤 변수일 수 있다(예: Polya 랜덤 변수 등). 랜덤 변수는 랜덤 변수 세트로 생성될 수 있다. 예를 들어, 랜덤 변수 세트는 [X0, X1, X2,…, Xi,…, Xmf]로 구성될 수 있고, 여기서 Xi는 세트의 인덱스 값(예: 랜덤 변수 세트의 Xi)을 표시하며, Xmf는 시스템에 의해 측정될 최대 빈도를 표시한다.
데이터 프로세싱 시스템은 노이즈 어레이를 생성할 수 있다(동작 706). 데이터 프로세싱 시스템은 특정 크기의 노이즈 어레이를 할당할 수 있다. 노이즈 어레이의 크기는 예를 들어 동작 704에서 생성된 랜덤 변수 세트의 각 Xi에 대한 Σ(B - X i ) 일 수 있다. 데이터 프로세싱 시스템은 예를 들어 각 랜덤 변수와 기준 노이즈 값의 차이를 계산하고 각 차이를 누적하여 기준의 총합에서 랜덤 변수를 뺀 값을 결정할 수 있다. 노이즈 어레이의 총 크기는 차이의 합과 같을 수 있다. 노이즈 어레이를 생성하는 것은 노이즈 어레이의 크기와 동일한 메모리 영역을 할당하는 것을 포함할 수 있다.
데이터 프로세싱 시스템은 k번째 노이즈 어레이 값을 선택할 수 있다(동작 708). 동작 704에서 생성된 각 랜덤 변수에 기초하여 노이즈 어레이를 채우기 위해, 데이터 프로세싱 시스템은 각 노이즈 어레이 값(예를 들어, 동작 704에서 생성된 각 랜덤 변수 등)에 대해 반복할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k에 기초하여 노이즈 값 각각을 반복적으로 루프할 수 있다. 노이즈 값 각각은 인덱스 값(예를 들어, 인덱스 0, 인덱스 1, 인덱스 2 등)에 의해 데이터 구조에서 인덱스될 수 있다. 노이즈 값을 프로세싱하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 k와 동일한(거의 동일한) 인덱스 값을 포함하거나 그와 연관된 노이즈 값을 선택할 수 있다. 그것이 루프의 첫 번째 반복이라면, 카운터 레지스터 k는 k번째 노이즈 값을 선택하기 전에 초기화 값(예를 들어, k = 0, k = 1 등)으로 초기화될 수 있다. 노이즈 값을 선택하는 것은 노이즈 값과 연관된 데이터를 데이터 프로세싱 시스템의 컴퓨터 메모리의 다른 영역, 예를 들어 메모리의 작업 영역에 복사하는 것을 포함할 수 있다.
데이터 프로세싱 시스템은 랜덤 변수를 사용하여 노이즈 배열을 채울 수 있다(동작 710). 선택 노이즈 값(예: 선택된 랜덤 변수 Xk)을 사용하여, 데이터 프로세싱 시스템은 기준 노이즈 값과 랜덤 변수 간의 차이를 계산할 수 있다. 이 값은 식 D = B - X k 를 사용하여 계산할 수 있고, 여기서 D는 각각의 차이 값이다. 그 후, 데이터 프로세싱 시스템은 kD 사본으로 노이즈 어레이를 채울 수 있고, 여기서 k의 값은 노이즈 값과 동일하다. 예를 들어, 이는 노이즈 어레이의 k 번째 포지션에 액세스하고 노이즈 어레이에 k * D를 추가하는 것을 포함할 수 있다. 이러한 방식으로 노이즈 어레이의 각 포지션은 기준 값과 시스템에서 생성된 랜덤 변수에 기초하여 의사 랜덤 노이즈 값으로 채워질 수 있다.
데이터 프로세싱 시스템은 k가 노이즈 어레이 값의 수 n과 동일한지 여부를 결정할 수 있다(동작 712). 데이터 프로세싱 시스템이 노이즈 벡터의 각 포지션을 업데이트했는지 여부를 결정하기 위해, 데이터 프로세싱 시스템은 각 노이즈 값을 선택하는데 사용되는 카운터 레지스터(예를 들어, k)를 노이즈 값의 총 수 n과 비교할 수 있다. 카운터 레지스터 k가 총 노이즈 값의 수 n과 동일하지 않으면(예를 들어, 그보다 작은 경우), 데이터 프로세싱 시스템은 동작 714를 실행할 수 있다. 카운터 레지스터 k가 총 노이즈 값의 수 n과 같으면(예를 들어, 동일하거나 그보다 큰 경우), 데이터 프로세싱 시스템은 동작 716를 실행할 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 k를 증가시킬 수 있다(동작 714). 일부 구현예에서, 데이터 프로세싱 시스템은 유지된 데이터 레코드 세트(예를 들어, 동작 502에서 데이터 프로세싱 시스템에 의해 유지되는 데이터 레코드 등)에서 다음 프로세싱되지 않은 데이터 레코드를 나타내기 위해 레지스터 k에 하나를 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k를 다음 프로세싱되지 않은 데이터 레코드의 메모리 어드레스 값(예를 들어, 컴퓨터 메모리에서의 위치)으로 설정할 수 있다. 일부 구현예에서, 다음 프로세싱되지 않은 데이터 레코드의 메모리 어드레스 값은 현재(예를 들어, 선택된) 데이터 레코드의 위치에서 데이터 구조에 포함될 수 있다. 카운터 레지스터 k의 값을 증가시킨 후, 데이터 프로세싱 시스템은 동작 524를 실행할 수 있다.
데이터 프로세싱 시스템은 노이즈 어레이를 셔플링할 수 있다(동작 716). 노이즈 어레이를 셔플링하는 것은 노이즈 어레이에서 값의 포지션을 무작위로(예를 들어, 의사-랜덤하게 등) 스와핑하는 것을 포함할 수 있으며, 그에 따라 랜덤하게 순열된 노이즈 어레이를 생성한다. k의 크기가 증가할수록 노이즈 어레이의 각 포지션의 값이 더 커지기 때문이다(예: 노이즈 어레이의 각 포지션 k에 대해, 노이즈 값은 k * D이며, 여기서 D는 기준 노이즈 레벨 빼기 랜덤 변수 X k 임). 일 실시예에서, 노이즈 어레이를 셔플링하는 것은 노이즈 어레이의 랜덤(예를 들어, 의사-랜덤 등) 포지션을 선택하는 것, 및 노이즈 어레이의 다른 의사-랜덤 위치로 그것을 스와핑하는 것을 포함할 수 있다. 다른 실시예에서, 노이즈 어레이를 셔플링하는 것은 제2 노이즈 어레이의 포지션에 의사-랜덤하게 할당된 노이즈 어레이의 값을 포함하는 제2 노이즈 어레이를 생성하는 것을 포함할 수 있다. 이것은 데이터 프로세싱 시스템이 어레이 포지션에 대해 적어도 의사 랜덤하게 분포된 노이즈 어레이를 생성하도록 보장할 수 있다.
데이터 프로세싱 시스템은 노이즈 어레이를 암호화할 수 있다(동작 718). 데이터 프로세싱 시스템은 도 6과 관련하여 위에서 설명한 방법(600)의 동작(602)에서 생성된 결합된 키를 사용하여 노이즈 어레이의 각 포지션을 암호화할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 노이즈 어레이의 각각의 포지션을 개별적으로 암호화하지 않고 단일 단계에서 결합된 키를 사용하여 전체 노이즈 어레이를 암호화할 수 있다. 집합된 벡터를 암호화하는데 사용되는 것과 동일한 공개 키를 사용하여 노이즈 어레이를 암호화함으로써, 데이터 프로세싱 시스템은 시스템의 차등 프라이버시를 개선하기 위해 향후 단계에서 노이즈 어레이를 집합된 벡터와 결합할 수 있다. 나중에, 데이터 프로세싱 시스템이 집합된 결과를 디코딩할 때, 데이터 프로세싱 시스템은 결과에서 노이즈를 "추출"하기 위해 추가 계산을 수행하여, 디바이스 식별자 및 속성의 K+ 빈도에 대한 차등 계산만 남길 수 있다.
데이터 프로세싱 시스템은 부분 복호화 전에 암호화된 벡터에 노이즈를 첨부할 수 있다(동작 720). 암호화된 벡터에 노이즈를 첨부하는 것은 암호화된 벡터 값에 노이즈 자체를 추가하는 것을 포함할 수 있으므로, 데이터의 전체 정확도를 감소시키지 않고 데이터 벡터에 추가적인 수준의 프라이버시를 도입할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 부분 복호화 단계(예를 들어, 동작 616) 이전에 암호화된 벡터에 각 노이즈 값(예를 들어, 노이즈 어레이의 각 포지션)을 첨부할 수 있다. 이는 누산기 컴퓨팅 디바이스에 의해 최종 히스토그램이 구성될 때, 데이터 프로세싱 시스템은 히스토그램의 각 버킷에서 B*노이즈 벡터의 수를 간단히 제거하여 데이터에서 노이즈를 제거할 수 있음을 의미할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 각 작업자 컴퓨팅 디바이스로부터 노이즈 벡터를 수신하고, 부분 복호화 단계 전에 각 노이즈 값을 암호화된 벡터에 첨부할 수 있다. 이러한 방식으로, 데이터 프로세싱 시스템은 벡터가 시스템 전체를 이동할 때 순열되는 많은 노이즈 값이 있는 큰 벡터를 생성할 수 있다. 어떤 작업자 디바이스도 어떤 값이 노이즈 값인지 알지 못하기 때문에, 단일 작업자는 식별자 서버로부터 데이터 프로세싱 시스템에 제공된 원본 데이터를 결정할 수 없다. 이는 데이터 분석 시스템의 보안을 크게 향상시킨다.
도 8은 일부 구현예에 따라 본 명세서에서 논의된 임의의 컴퓨터 시스템을 구현하기 위해 사용될 수 있는 예시적 컴퓨터 시스템(800)의 일반적 아키텍처를 도시한다. 컴퓨터 시스템(800)은 디스플레이를 위해 네트워크(110)를 통해 정보를 제공하는데 사용될 수 있다. 도 8의 컴퓨터 시스템(800) 도 5의 컴퓨터 시스템(600)은 메모리(825)에 통신적으로 연결된 하나 이상의 프로세서들(820), 하나 이상의 통신 인터페이스(805), 및 하나 이상의 출력 디바이스들(810)(예를 들어, 하나 이상의 디스플레이 유닛들) 및 하나 이상의 입력 디바이스들(815)을 포함한다. 프로세서(820)는 예를 들어, 데이터 프로세싱 시스템(105A-N) 또는 클라이언트 디바이스(120A-N)와 같은 시스템(100)의 다른 컴포넌트들에 포함될 수 있다.
도 8의 컴퓨터 시스템(800)에서, 메모리(825)는 임의의 컴퓨터 판독가능 저장 매체를 포함할 수 있고, 각각의 시스템들에 대해 본 명세서에서 기술된 다양한 기능들을 구현하기 위한 프로세서-실행가능 명령어들과 같은 컴퓨터 명령어들 뿐만 아니라 그와 연관된 임의의 데이터, 그에 의해 생성된 임의의 데이터 또는 통신 인터페이스(들) 또는 입력 디바이스(들)(있는 경우)을 통해 수신된 임의의 데이터를 저장할 수 있다. 다시 도 8의 시스템(800)을 참조하면, 데이터 프로세싱 시스템(105A-N)은 특히 사용자 식별자들의 세트, 생성된 벡터들과 관련된 정보를 저장하는 메모리(825)를 포함할 수 있다. 도 8에 도시된 프로세서(들)(820)는 메모리(825)에 저장된 명령어를 실행하는데 사용될 수 있고, 그렇게 함으로써, 명령어의 실행에 따라 프로세싱되거나 생성된 다양한 정보를 메모리로부터 판독하거나 메모리에 기록할 수 있다.
도 8에 도시된 컴퓨터 시스템(800)의 프로세서(820)는 또한 명령어들의 실행에 따라 다양한 정보를 전송 또는 수신하도록 통신 인터페이스(들)(805)에 통신적으로 연결되거나 제어될 수 있다. 예를 들어, 통신 인터페이스(들)(805)는 유선 또는 무선 네트워크, 버스 또는 기타 통신 수단에 연결될 수 있으며, 따라서 컴퓨터 시스템(800)이 다른 디바이스들(예를 들어, 다른 컴퓨터 시스템들)에 정보를 전송하거나 또는 그로부터 정보를 수신하게 할 수 있다. 도 8의 시스템에서 명시적으로 도시되지 않았지만, 하나 이상의 통신 인터페이스는 시스템(800)의 컴포넌트들 간의 정보 흐름을 용이하게 한다. 일부 구현예에서, 통신 인터페이스(들)는 컴퓨터 시스템(800)의 적어도 일부 양태들에 대한 액세스 포털로서 웹사이트를 제공하도록(예를 들어, 다양한 하드웨어 컴포넌트들 또는 소프트웨어 컴포넌트들을 통해) 구성될 수 있다. 통신 인터페이스(805)의 예는 사용자가 컴퓨터 시스템(800)과 통신할 수 있는 사용자 인터페이스(예를 들어, 웹페이지)를 포함한다.
도 8에 도시된 컴퓨터 시스템(800)의 출력 디바이스들(810)은 예를 들어, 명령어들의 실행과 관련하여 다양한 정보가 보여 지거나 인식될 수 있도록 제공될 수 있다. 입력 디바이스(들)(815)은 예를 들어, 사용자가 수동 조절을 하거나, 선택을 하거나, 데이터를 입력하거나 또는 명령어들의 실행 중에 프로세서와 다양한 방식으로 인터렉션할 수 있도록 제공될 수 있다. 본 명세서에서 논의된 다양한 시스템들에 이용될 수 있는 일반적인 컴퓨터 시스템 아키텍처에 관한 추가 정보가 본 명세서에서 더 제공된다.
측정 정확도
이 섹션은 다양한 구성에서 FreqLogLog(FLL), CBF 및 최소 증가 CBF(MICBF) 방법을 비교하는데 중점을 둔다. 도 9a-17b와 관련하여 다음 표, 데이터 및 설명은 예시이며 어떤식으로든 제한하는 것으로 해석되어서는 안된다. 각 구성은 시뮬레이션의 파라미터가 될 수 있는 특정 빈도 분포에 따라 1백만 개의 엘리먼트를 삽입하는 것으로 구성된 각 시도에서 100회 이상의 시도를 시뮬레이션할 수 있다. 예를 들어, 엘리먼트 1234는 시뮬레이션의 빈도 분포에서 가져온 그림에 따라 1회 이상 삽입될 것이다. 즉, 아래에서 설명하는 균일 분포의 경우 총 약 220,000개의 고유 엘리먼트에 대해 8개 빈도 각각에 대해 약 27,500개의 고유 엘리먼트를 삽입한다. 마지막으로, 카디널리티와 엘리먼트 빈도가 추정되는 세트가 각 구성에 대해 동일한지 확인하기 위해 고정 랜덤 시드가 구성 전반에 사용된다.
측정 정확도가 엘리먼트 빈도 분포에 의존하지 않음을 입증하기 위해 다음 빈도 분포를 고려한다. 이를 보다 확실하게 증명하기 위해 여기에서 더 많은 작업을 수행할 수 있지만 전체적 분포는 효과가 없는 것으로 보인다. 따라서 초기 시뮬레이션 세트 후에는 "UNIFORM 1 ~ 8"만 사용된다. 아래의 표 2에 표시된 설명은 도 9a-17b에 표시된 데이터와 함께 제공된다.
이름 설명
UNIFORM 1 to 8 (a.k.a. uniform) 엘리먼트가 [1,8]에서 빈도를 가질 가능성이 동일함
LINEAR 1 to 8 빈도 1의 가중치가 8이고 빈도 8의 가중치가 1인 엘리먼트가 선형 가중치가 적용된 빈도를 가질 가능성
LINEAR 8 to 1 INEAR 1부터 8의 역.
FLL과 CBF의 여러 상이한 구성이 고려될 수 있다. FLLS의 경우, 기본 파라미터는 사용할 버킷 수이며, 2의 제곱이다. 따라서 FLL_2_16은 2^16 버킷이 사용되었음을 나타낸다. CBF의 경우, 최소 증가 구성 사용 여부, 버킷 수(m) 및 해시 함수 수(k)의 세 가지 파라미터가 있다.
다음 표는 메모리 사용량과 함께 시뮬레이션되었던 구성 세트를 보여준다. CBF의 경우 버킷 당 1바이트로 가정하는 총 메모리 사용량을 보고하지만, 측정하려는 최대 빈도에 따라 이를 버킷 당4 비트 또는 그 이하로 줄일 수 있다. 그러나 MPC 프로토콜의 관점에서 고려할 때 이러한 감소의 실용성은 그다지 중요하지 않고, MPC 프로토콜은 여기에 설명된 대로 일반 텍스트 크기에 관계없이 버킷에 동등한 암호문 확장을 가져올 수 있다. FLL의 경우, 버킷 당 3바이트를 가정하여 총 메모리를 보고한다. Bloom 필터는 HLL보다 훨씬 더 많은 메모리를 사용할 수 있지만, 더 정확한 측정을 제공할 수 있으며, 매우 적은 정보를 유출하는 안전한 다자간 프로토콜을 사용할 수 있다.
구성 이름 설명 블룸 필터 버킷 블룸 필터 해시 메모리 사용량 (MB)
CBF_0_01_Uniform 유니폼 빈도 분포에서 1%의 거짓 긍정률을 가진 CBF 9,585,059 7 ~9.6MB
CBF_MI_0_01_Uniform 유니폼 빈도 분포에서 1% 거짓 긍정률을 갖는 최소 증가 CBF 9,585,059 7 ~9.6MB
CBF_MI_0_1_Uniform 위와 같지만 거짓 긍정률이 10% 4,792,530 4 ~4.8MB
CBF_MI_0_25_Uniform 위와 같지만 거짓 긍정률이 25% 2,885,391 3 ~2.8MB
CBF_MI_0_3_Uniform 위와 같지만 거짓 긍정률이 30% 2,505,912 2 ~2.5MB
CBF_MI_0_4_Uniform 위와 같지만 거짓 긍정률이 40% 1,907,140 2 ~1.9MB
CBF_MI_0_5_Uniform 위와 같지만 거짓 긍정률이 50% 1,442,696 2 ~1.4MB
FLL_2_14_Uniform 유니폼 빈도 분포에서 14개 버킷의 2제곱인 FLL N/A N/A ~48kB
FLL_2_18_Uniform 균일한 빈도 분포에서 18개 버킷의 2제곱인 FLL N/A N/A ~790kB
FLL_2_20_Uniform 균일한 빈도 분포에서 20개 버킷의 2제곱인 FLL N/A N/A ~3.2MB
FLL_2_22_Uniform 유니폼 빈도 분포에서 22개 버킷의 2제곱인 FLL N/A N/A ~12.6MB
도 9a-17n에 도시된 차트는 평균 절대 오차의 로그(log10(MAE)), 평균 절대 오차율(MAER), 루트 평균 제곱 오차의 로그(log10(RMSE)) 및 평균 오차(ME)이다. 오류를 보고하는 차트는 최대 10개의 값에 대한 k+ 도달을 표시하는 반면, 비율을 보고하는 차트는 최대 8개의 값만 표시한다. 이는 시뮬레이션된 최대 빈도가 항상 8이기 때문에 9+ 및 10+ 값에 대해 0이 아닌 값은 오류이다.
도 9a-b는 CBF 및 FLL_2_14_Uniform의 여러 구성을 고려한다. CBF가 경쟁력이 있으려면, 최소 증가 구성을 활성화해야 할 수 있으므로 향후 모든 결과에서 MICBF를 활용할 수 있다. 최소 증가 CBF는 FLL의 오류율이 상당히 우수한 약 1%에 불과하지만 FLL을 크게 능가할 수 있다. 반면에 최상의 MICBF는 오류가 거의 0에 가깝지만 메모리 비용이 훨씬 더 많이든다. 모든 방법은 ME 플롯에 표시된 것처럼 과잉 추정쪽으로 편향되어 있다. 빈도 8에서 MI_CBF_0_4는 FLL과 비슷한 성능을 갖지만 메모리 사용량은 ~50배이다. 그러나 MICBF는 더 낮은 빈도에서 훨씬 더 잘 수행한다.
다음으로, 도 10a-b에서, 몇 가지 더 높은 메모리 FLL이 테스트되었다. MICBF 및 3개의 더 높은 메모리 FLL에 대해 위와 동일한 메트릭이 설명되어 있다. 주된 관찰은 12.6MB의 메모리를 사용하는 가장 높은 메모리 FLL, FLL_2_22(노란색 선) 조차도 9.6MB의 메모리를 사용하는 CBF_MI_0_01보다 성능이 우수하다는 것이다. 또 다른 관찰은 FLL이 더 높은 빈도를 덜 정확하게 추정하는 반면 MICBF는 빈도에서 더 일관된 오류를 갖는다는 것이다. 마지막으로 흥미롭고 다소 혼란스러운 결과는 곡선의 모양과 관련이 있다. log10(MAE) 플롯을 보면 MICBF 및 FLL 오류의 일반적인 모양이 파라미터화 전반에 걸쳐 동일한 것으로 보이지만, 자세히 살펴보면 FLL_2_18의 곡선은 MICBF 패밀리 곡선과 매우 유사하며 CBF_MI_0_1은 FLL 패밀리 곡선과 유사해 보인다. 이것은 오류가 아니며, 결과는 여러 번 확인되었다.
기준 측정 세트에 대한 또 다른 고려 사항은 두 가지 방법이 서로 다른 빈도 분포와 관련하여 수행하는 방식이다. 여기서, FLL_2_14 및 CBF_MI_0_01은 위에서 설명한 빈도 분포에 대해 테스트되었으며, 그 결과는 도 11a-b에 도시되어 있다. 전반적으로, MICBF는 빈도 분포의 변화에 탄력적이며, 세 분포에서 거의 제로에 가까운 오류율을 안정적으로 나타내는 반면, FLL의 오류율은 빈도 분포에 따라 최대 2.5%까지 변동한다. 특히, 빈도 분포가 덜 조밀한 경우 FLL은 카디널리티를 과대 평가하는 경향이 더 크다. 이는 LINEAR_8_1 분포에 대한 1+ 도달 범위의 과대 추정(~ 1.5 %)과 LINEAR_1_8 분포에 대한 8+ 도달 범위의 과대 추정(~ 4.5 %)으로 표시된다. 아마도 후자는 1+ 도달이 모든 빈도를 포함하는 반면 8+는 그렇지 않기 때문에 더 큰 오류를 나타낸다.
마지막으로, 도 12는 추정기의 변동성을 고려한다. 여기서, 로그 스케일 플롯이 생략되고(MAER 및 ME만 도시됨), 차트가 너무 복잡하지 않도록 하기 위해 두 개의 추정치만 도시된다. 또한, 완전히 공정한 비교를 위해 CBF_MI_0_25_Uniform을 FLL_2_14_Uniform과 비교한다. 분명한 것은 FLL이 더 높은 빈도에서 변동성이 증가한다는 것이고, 위와 같이 더 높은 빈도에서 더 적은 수의 버킷을 평균화할 수 있다는 사실로 설명될 수 있다. 그러나 가장 낮은 빈도에서도 FLL은 모든 빈도에서 일관되게 작은 변동성을 갖는 MICBF보다 훨씬 더 많은 변동성을 갖는다.
전반적으로, FLL에 비해 MICBF는 훨씬 더 많은 메모리 사용에도 불구하고 더 정확하고 더 넓은 범위의 빈도 분포에서 변동성이 적다. 다음은 MICBF에 차등 프라이버시를 적용하는 방법을 고려할 것이다.
MICBF를 차등적으로 비공개로 만드는 적어도 두 가지 접근법이 여기에 제시되어 있으며, 둘 다 노이즈에 대해 양면 기하학적 분포를 사용한다. 첫 번째는 개별 CBF 버킷에 차등 프라이버시(DP)를 적용하는 것이며, 이로 인해 측정 품질이 상당히 저하되며 자세한 내용은 아래에서 검토한다. 반면에, 버킷 값의 히스토그램에 DP를 적용하는 두 번째 방법은 확실한 결과를 가진다.
카디널리티 추정이 버킷 값의 히스토그램을 사용할 수 있고, 다음 섹션에서 가능함을 보여줄 버킷 값을 표시하지 않고 히스토그램을 계산할 수 있다고 가정하면, 버킷 값 히스토그램 자체에 차등 프라이버시가 적용될 수 있다. 이제, 일반적으로 히스토그램 쿼리의 민감도는 1이 될 수 있지만, 버킷 값의 히스토그램을 고려하고 각 클라이언트 디바이스 식별자 또는 속성 데이터가 k번 표현되므로, 민감도는 실제로 k이거나 단지 해시 함수의 수이다. CBF_MI_0_01 패밀리의 경우, 이 값은 7이다.
도 13a-b는 0.1, 0.5, 1, 2의 엡실론 값에 대해 주어진 추정치를 도시한다. 이들은 각각 0.0142, 0.0689, 0.1331 및 0.2485의 양면 기하 분포 파라미터에 대응한다. 히스토그램에 노이즈를 추가하는 것은 적당한 엡실론 값에 상대적으로 영향을 미치지 않으며 엡실론이 0.1인 경우에도 측정이 합리적이다.
마지막으로, 도 14a-b는 1의 엡실론에 대한 MICBF의 여러 파라미터화 정확도이다. 여기서, 차등 프라이버시를 사용하더라도, CBF_MI_0_4는 더 높은 빈도에서 FLL만큼 성능을 계속 유지한다.
도 15는 노이즈가 추가되지 않은(Uniform), 노이즈이 추가되고 수정되지 않은(GEO_NOCOR), 그리고 보정 후 노이즈(GEO_COR)가 있는 CBF_MI_0_01에 대한 MAE의 log10을 보여준다. 엡실론 1이 사용되고 쿼리 민감도는 8로 설정되며, 이는 파라미터 0.1175가 있는 양면 기하 분포가 사용되었음을 의미한다. 참고로 FLL_2_14도 도시된다. 보정 전에 기하학적 노이즈가 있는 CBF는 사용할 수 없지만, 디노이징된 버전도 FLL보다 훨씬 더 많은 오류를 나타낸다. 도 16a-b는 전체 차트 세트를 도시하지만 GEO_NOCOR를 제거한다. 평균 오차의 플롯을 조사하여 얻은 한 가지 관찰은 빈도가 변함에 따라 추정치가 과다 추정과 과소 추정 사이에서 변동한다는 것이다.
관찰은 단일 CBF를 취하고 100개의 서로 다른 노이즈 벡터를 적용하여 조사되었던 디노이징(denoised) 체제 하에서 추정의 분산에 대한 또 다른 질문으로 이어진다. 이것은 민감도가 8이고 엡실론의 4가지 다른 값(0.5, 1, 2 및 3)을 갖는 쿼리에 대해 수행되었지만, 중요한 것은 이러한 값이 의미하는 기하학적 분포에 대한 파라미터이며, 이는 도 17a-b에 나열된다. p = 0.06인 경우, 추정값의 표준 편차가 평균을 기준으로 약 5%씩 달라진다. 또한 쿼리의 민감도가 8보다 훨씬 높을 가능성이 있으므로, p = 0.06이 노이즈 분포에 대해 예상할 수 있는 최대 값일 것이다.
B. 계단식 군단 빈도 및 카디널리티 추정
이 섹션에 설명된 구현예, 기술, 시스템, 방법 또는 프로세스는 위 섹션 A에 설명된 컴퓨터 시스템 또는 이 섹션에 설명된 컴퓨터 시스템에 의해 수행 또는 실행될 수 있다.
식별자 서버는 예를 들어 각각의 클라이언트 디바이스와 연관된 클라이언트 식별자를 유지함으로써 클라이언트 디바이스 세트와 연관될 수 있다. 각 클라이언트 식별자는 각 식별자 서버와 클라이언트 디바이스 간의 연결을 설명하는 속성 정보를 포함할 수 있다. 속성 정보는 클라이언트 디바이스와 식별자 서버 간의 관계에 대한 정보(예: 웹 브라우징 기록, 인터렉션 데이터, 연결 시간, 네트워크 분석 데이터 등)를 포함할 수 있으며, 각각의 클라이언트 디바이스로부터 수신된 보호된 또는 개인 정보를 포함할 수 있다. 서로 다른 식별자 서버는 동일한 각각의 클라이언트 디바이스에 대응하는 서로 다른 속성 데이터 및 서로 다른 클라이언트 식별자를 유지할 수 있다. 일반적으로 각 식별자 서버 간에 중복된 속성 데이터가 있는지 결정하기 위해 식별자 서버는 보호된 또는 개인 정보를 포함할 수 있는 속성 데이터를 중앙 서버와 공유하여 클라이언트 속성 정보의 중복을 제거할 수 있다.
그러나 모든 클라이언트 속성 데이터를 전송하면 확장성에 문제가 발생한다. 클라이언트 식별자 서버 수가 증가하면 일반적으로 네트워크를 통해 전송되는 클라이언트 디바이스 속성 데이터의 양도 증가한다. 속성 데이터는 각 클라이언트 디바이스에 대해 상세하고 상대적으로 클 수 있기 때문에 이러한 정보를 대규모로 전송하면 네트워크 대역폭과 계산 리소스가 소모될 수 있다. 또한 시스템이 총 사용자 식별자 수를 계산하는 것 뿐만 아니라 네트워크를 통해 보호된 또는 개인 속성 정보를 전송하지 않고 특정 속성의 빈도와 같은 특정 속성 데이터 기준을 충족하는 클라이언트 디바이스의 수도 계산하는 것이 유용하다. 또한, 이러한 이슈를 해결하는데 사용되는 암호화된 확률 데이터 구조의 구현예는 비현실적으로 큰(예: 기가 바이트 정도) 스케치 크기로 인해 어려움을 겪는다.
앞서 언급한 이슈를 해결하기 위해, 이 기술 솔루션의 시스템 및 방법의 양태에서 계단식 군단 방식을 활용할 수 있다. 본 명세서에 설명된 확률적 데이터 구조는 클라이언트 디바이스 식별자의 멀티세트 내의 멤버의 수에 기초하여 크기가 대수적으로 증가할 수 있다. 퍼블리셔 컴퓨팅 디바이스는 연관된 클라이언트 디바이스 세트로서의 해시 및 활동 빈도(예를 들어, 콘텐츠 아이템과의 인터렉션 빈도 등)를 계산하여 해시된 디바이스 식별자인 경우 세트를 생성할 수 있다. 퍼블리셔는 비트 값 행렬을 포함하는 계단식 군단 데이터 구조를 생성할 수 있다. 행렬의 각 행은 각 해시 데이터 레코드의 최하위 0의 수에 대응할 수 있다. 행렬의 각 열은 각 해시된 데이터 레코드의 모듈러스 값에 대응할 수 있다.
퍼블리셔 컴퓨팅 디바이스는 데이터 레코드에서 최하위 0의 수를 결정하여 계단식 군단 행렬을 채울 수 있다. 예를 들어, 행렬의 제1 행은 단일 최하위 0(예: 1111 1110)에 대응할 수 있고, 제2 행은 두 개의 최하위 0(예: 1111 1100)에 대응할 수 있다. 균일하게 분산된 출력을 생성하는 해시 함수를 사용하여 각 디바이스 식별자를 해시할 수 있다. 따라서, 행렬의 행에 대응하는 임의의 해시 식별자의 확률 p는 2-k일 수 있고, 여기서 k는 행렬의 인덱스이다. 예를 들어, 임의의 주어진 해시된 식별자는 제1 행을 채울 확률이 50%(예: p = 0.5), 행렬의 제2 행을 채울 확률이 25%(예: p = 0.25)일 수 있다. 퍼블리셔 컴퓨팅 디바이스가 해시된 식별자가 행렬의 행에 대응한다고 결정하면, 퍼블리셔는 해시된 데이터 레코드에 대해 모듈러스 연산을 수행하여 해당 행의 포지션을 선택하고 해당 포지션의 비트를 1로 설정할 수 있다. 퍼블리셔 컴퓨팅 디바이스는 퍼블리셔와 연관된 모든 식별자에 대해 이 동작을 수행할 수 있다. 퍼블리셔 컴퓨팅 디바이스가 모든 식별자로 행렬을 채운 후, 퍼블리셔 컴퓨팅 디바이스는 확률 p로 행렬의 각 행의 비트를 무작위로 플립핑하여 스케치를 차등적으로 비공개로 만들 수 있다.
계단식 군단 데이터 구조를 구현하는 기법은 HyperLogLog의 문제를 해결할 수 있다. 카운팅 블룸 필터와 관련하여 위에서(예를 들어, 섹션 A 및 전체 등에서) 설명된 바와 같이, 계단식 군단 데이터 구조는 하나 이상의 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105A-N) 등)에 의해 생성될 수 있고, 스케치는 안전한 다자간 계산(예: 동형 암호화 기반 등)과 차등 프라이버시 노이즈를 추가의 조합을 통해 프라이버시 보호 방식으로 병합될 수 있다.
위 섹션 A에서 설명한 CBF(Counting Bloom Filters)에 기초한 접근법을 사용하면, 다수의 퍼블리셔에 걸쳐 프라이버시 도달 범위 및 빈도 중복 제거를 제공할 수 있다. 이러한 해결책은 곱셈 동형을 가진 암호화 체계를 구현하여 분산 검증 기법의 계산 성능을 향상시킬 수 있다. 이러한 접근법에서, 스케치의 크기는 전체 인터넷 인구 또는 다양한 규모의 다른 인구에 가까운 크기의 청중을 저장할 수 있다. 이러한 접근법을 통해 각 퍼블리셔는 각 요청에 대해 몇 기가 바이트의 데이터 세트 또는 일부 형태의 피드백 루프를 업로드할 수 있고, 여기서 시스템은 작은 스케치로 시작한 다음 청중이 많은 경우 또는 다른 방법의 양태에 기초하여 더 큰 스케치를 요청할 수 있다.
HLL(HyperLogLog) 기반 접근법은 계산 비용이 더 많이 드는 암호화를 활용할 수 있는 최소/최대 동작을 구현할 수 있다. HLL 구현예에서 스케치에 배치된 사용자 식별자의 차등 프라이버시를 유지하는 것도 어려운 과제다.
여기에 설명된 CLCE(Cascading Legions Cardinality Estimator) 기법을 구현하는 접근법은 카운팅 블룸 필터(예를 들어, 섹션 A 등에서 위에 설명됨) 및 HyperLogLog의 아이디어를 결합하여 적어도 앞서 언급한 이슈를 해결할 수 있다. 따라서, 여기에 설명된 CLCE 구현예는 디바이스 식별자의 차등 프라이버시를 손상시키지 않으면서, 여러 데이터 세트에 걸쳐 카디널리티 결정 알고리즘에 대한 개선을 제시한다. 다른 구현예 및 기법과 달리, 계단식 군단 스케치의 크기는 특정 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105) 등)와 연관된 식별자의 수의 크기에 따라 대수적으로 증가할 수 있다. 이러한 기법을 구현하는데 최소/최대 동작이 필요하지 않으므로, CLCE에 대해 계산적으로 저렴한 암호화 체계를 사용할 수 있다. 스케치의 구조는 위의 섹션 A에서 설명한 카운팅 블룸 필터 접근법과 유사하므로, CBF용으로 개발된 MPC(다자간 계산)(예: 섹션 A에서 위의 설명)를 CLCE 스케치에 적용하여 디바이스 식별자 및 목표 속성 세트의 빈도 및 카디널리티를 계산한다.
동시에, CLCE에 의해 획득된 카디널리티 추정치는 편향되지 않을 수 있으며, 유니온 연산은 교환적이므로 다른 구현과 비교할 때 높은 품질의 결과를 제공할 수 있다. CLCE 스케치는 적어도 두 개의 파라미터: 군단의 수 l 및 군단에서 포지션의 수 n을 포함할 수 있다. 스케치는 2차원 n x l 비트 어레이일 수 있다. 일부 구현예에서, 스케치는 카운터 레지스터의 2차원 n x l 어레이, 또는 컴퓨터 메모리(예를 들어, 데이터 프로세싱 시스템의 메모리(105) 등)의 하나 이상의 데이터 구조에 저장될 수 있는 다른 유형의 변수 또는 데이터 유형일 수 있다. 빈 스케치는 초기화 값(예: 0)으로 초기화될 수 있다.
추정기의 예시적 표현은 다음 의사 코드에 포함되어 있다:
class CascadingLegions:
def __init__(self, l, n):
self.l = l # number of legions
self.n = n # number of positions in a legion
self.legions = new array l by n filled with zeros
def Add(self, element):
binary_fingerprint = binary fingerprint of element
legion = number of least significant zeros in binary_fingerprint
# Elements that belong beyond the last legion are placed into the last
# legion.
if legion >= self.l:
legion = self.l - 1
# Position uses the bits of binary_fingerprint that
# remain after removing trailing 0s and the 1.
position = (binary_fingerprint // 2 ** (legion + 1)) % self.n
self.legions[legion, position] = 1
@staticmethod
def ExpectedBits(num_elements):
# It is easy to see that the following is the formula for expected number of
# bits activated after num_elements elements were added.
return sum(
1 - exp(num_elements / (2 ** i * self.n)) * self.n
for i in range(1, self.l)) + (
1 - exp(num_elements / (2 ** (self.l - 1) * self.n)) * self.n
def EstimateCardinality(self):
b = count bits in self.legions
return average num_elements for which int(ExpectedBits) is equal to b
def Merge(self, other_sketch):
self.legions = elementwise OR of self.legions and other_sketch.legions.
위의 추정기 표현은 추정기의 기능(예: 계단식 군단 스케치의 구성, 스케치에 엘리먼트 추가, 군단에 기초하여 예상 비트 수 결정, 스케치에 기초하여 한 세트의 카디널리티 추정 및 다른 스케치의 병합 등)이 단일 클래스의 일부로서 단일 컴퓨팅 디바이스에서 발생할 수 있다는 것을 표시할 수 있지만, 위의 의사 코드는 순전히 예를 들어 알고리즘 표현과 같은 방식으로 구성되며, 이러한 기법을 수행하는 시스템의 구성을 설명하는 것으로 해석되면 안된다. 여기에 설명된 임의의 컴퓨팅 디바이스는 위에 설명된 기능 중 임의의 기능을 수행할 수 있으며, 이러한 기법은 하나 이상의 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(105A-N), 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등)에 걸쳐 분산될 수 있다. 위의 의사 코드는 본 명세서에 기술된 시스템 및 방법에 대해 어떠한 측면에서든 제한하는 것으로 해석되어서는 안되며, 위의 표현은 순전히 예시적 목적이며 본 명세서에 기술된 구현예의 하나 이상의 양태만 설명할 수 있음을 이해해야 한다.
파라미터(l, n)를 가진 계단식 군단 스케치는 표준 편차가
Figure pct00008
를 가지는(예: 같음, 대략 같음 등) 상대 오차로 최대
Figure pct00009
크기 세트의 카디널리티를 추정할 수 있다.
이제 도 18에 도시된 그래프를 참조하면, 도시된 것은 10개의 시뮬레이션과 함께 스케치에 추가된 디바이스 식별자가 차지하는 이론적으로 추정된 비트 수이다. n = 10K, l = 7의 CLCE 파라미터가 사용된다. 도 18에 표현된 데이터는 순전히 예시적 데이터로 간주되어야 하며, 여기에 설명된 기법의 구현예는 다른 결과를 생성할 수 있다. 따라서 데이터는 순전히 예시 데이터이며, 어떤 측면에서든 제한적인 것으로 간주되어서는 안된다.
도 18의 선은 시각적으로 구분할 수 없다. 도 18에서, 군단 수에서 디바이스 식별자 추정의 상대 오차는 2%미만으로 유지된다. 단순성을 위해, 마지막 군단을 넘어서는 사용자 식별자를 삭제하기 때문에, 소규모 청중의 경우 오류가 4%에 이른다. 일부 구현예에서, 마지막 군단을 넘어서는 사용자 식별자는 삭제되지 않는다.
도 19는 32개의 군단이 있는 스케치의 예시 데이터를 도시하며, 10K 포지션은 임의의 최신 디바이스 식별자 세트를 정확하게 측정하는데 충분할 수 있다. 이 스케치는 320 킬로 비트를 포함할 수 있지만, 다양한 파라미터를 가진 다른 수의 비트, 군단 또는 군단 포지션을 포함할 수 있다.
계단식 군단 카디널리티 또는 빈도 추정을 수행하기 위해, 시스템(예를 들어, 시스템(100), 시스템(400A-C), 이들의 임의의 조합 등)은 다음 프로세스의 임의의 조합을 수행할 수 있다. 첫째, 시스템은 스케치(예를 들어, 여기에 설명된 계단식 군단 스케치, 여기에 설명된 다른 데이터 구조 또는 스케치 등)를 생성할 수 있는 다수의(예를 들어, 1, 10, 100, 1000 또는 10000 등을 초과하는) 퍼블리셔 컴퓨팅 디바이스(예: 데이터 프로세싱 시스템(105A-N), 여기에 설명된 다른 컴퓨팅 디바이스, 식별자 서버 등) 및 작은 수의 작업자(예를 들어, 작업자 컴퓨팅 디바이스(405A-N), 여기에 설명된 다른 컴퓨팅 디바이스 등)을 포함하여, 스케치를 결합하기 위한 보안 프로토콜을 실행한다. 스케치를 결합하기 위한 보안 프로토콜은 이 섹션에 설명된 계단식 군단 스케치를 사용하여, 섹션 A에서 위에 설명된 MPC 프로토콜일 수 있다. 다음으로, 시스템은 ElGamal 암호화 시스템을 사용하여 스케치를 암호화할 수 있으며, 섹션 A에서 위에서 설명한 CBF 설계와 마찬가지로 공지된 값을 복호화하기 위해 시스템은 곱셈 동형화(예: ElGamal 암호화 사용 등)를 사용하여 지수가 같은 밑수를 곱하면 가산된다는 것을 관찰함으로써 추가를 달성할 수 있다. 예를 들어 2 ^ 5 * 2 ^ 5 = 2 ^ 10이다. 셋째, 고유한 ElGamal 공개 키가 결합될 수 있으며 해당 복호화(또는 일부 개인 키만 사용되는 경우 부분 복호화 등)은 해당 공용 키가 조합의 일부인 각 개인 키를 적용할 수 있다. 각 작업자는 키 쌍을 생성할 수 있고, 결합된 공개 키는 퍼블리셔 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(105A-N), 여기에 설명된 다른 컴퓨팅 디바이스, 식별자 서버 등)에 의해 사용되어 스케치를 암호화할 수 있다.
각각의 작업자 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등))는 여기에 설명된 바와 같이 공개 키를 교환하고 결합하여 집합된 공개 키를 생성할 수 있다. 집합된 공개 키(예: 결합된 ElGamal 또는 동형 추가 암호화 체계 키 등)가 생성되면 프로토콜은 다음과 같이 진행될 수 있다. 각 퍼블리셔 컴퓨팅 디바이스는 스케치를 암호화하여 적어도 하나의 작업자 컴퓨팅 디바이스(예: 작업자 컴퓨팅 디바이스(405A), 애그리게이터 컴퓨팅 디바이스(410 등))에 제공할 수 있고, 이는 때때로 제1 작업자 컴퓨팅 디바이스로 지칭될 수 있다.
상기 제1 작업자 컴퓨팅 디바이스는 각 스케치 포지션 별(예를 들어, 버킷 별, 각 카운터 레지스터, 변수 또는 유사한 인덱스 값 또는 포지션을 가진 데이터 항목의 결합 또는 각각의 각 군단의 각 포지션)을 합산하여 결합된 스케치를 생성할 수 있다. 결합된 스케치는 각각의 식별자 서버(예를 들어, 때때로 퍼블리셔 컴퓨팅 디바이스로 지칭되는 데이터 프로세싱 시스템(105A-N))로부터 수신된 각각의 스케치와 동일한 규모일 수 있거나 규모를 수용하도록 구성될 수 있다. 일부 구현예에서, 계단식 군단 스케치가 비트 행렬 데이터 구조인 경우, 스케치를 결합하는 것은 결합될 모든 스케치에 대해 비트 OR 연산을 수행하는 것을 포함할 수 있다. 일부 구현예에서, 계단식 군단 스케치가 값 행렬 데이터 구조(예를 들어, 다른 유형의 변수, 값 또는 카운터 레지스터 등의 행렬)인 경우, 제1 작업자는 다른 유형의 조합 연산(예를 들어, 추가, 곱셈, 동형 추가 등)을 본 명세서에 기술된, 결합될 스케치에 걸쳐 수행할 수 있다.
시스템(예를 들어, 시스템(405A-C))의 작업자 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등))는 섹션 A에 설명된 MPC 프로토콜과 관련하여 위에서 설명한 바와 같이, 결정론적 암호화 레이어를 적용하고 비결정론적 암호화 레이어를 제거하면서 결합된 스케치를 셔플링할 수 있다. 예를 들어, 제1 작업자 컴퓨팅 디바이스는 포지션 및 군단에 걸쳐 비트(또는 행렬의 다른 유형의 데이터 등)를 셔플링하고, 그 결과를 제2 작업자 컴퓨팅 디바이스로 전달한다. 암호화되고 결합된 스케치를 셔플링하기 전에, 각 작업자 컴퓨팅 디바이스는 집합된 암호화 키에 대한 해당 작업자 기여에 대응하는 개인 복호화 키(예: 작업자 컴퓨팅 디바이스에 의해 생성된 집합된 ElGamal 암호화 키 등)를 사용하여 스케치를 부분적으로 복호화할 수 있다. 개인 복호화 키를 사용하여 스케치를 부분적으로 복호화한 후, 현재 스케치를 프로세싱 중인 작업자 컴퓨팅 디바이스는 스케치에 결정론적 암호화 체계를 적용할 수 있다. 결정론적 암호화 레이어를 적용한 후, 작업자 컴퓨팅 디바이스는 암호화된 데이터 구조의 포지션을 순열하거나 셔플링할 수 있다. 데이터 구조가 계단식 군단 데이터 구조인 경우, 작업자 컴퓨팅 디바이스는 l군단 각각에서 n개의 포지션을 순열할 수 있다. 일부 구현예에서, 작업자 컴퓨팅 디바이스는 l 군단의 순서를 순열화할 수 있다.
이 프로세스는 작업자 컴퓨팅 디바이스(405) 각각에 대해 계속될 수 있다. 예를 들어, 제2 작업자 컴퓨팅 디바이스(예를 들어, 작업자(405B) 등)는 비결정론적 암호화 레이어를 제거하고, 결정론적 암호화 레이어를 추가하고, 선택적으로 순열화할 수 있다. 그 다음, 제2 작업자는 프로세싱된 스케치 결과를 제3 작업자 컴퓨팅 디바이스(예를 들어, 작업자(405C) 등)에 전송할 수 있다. 이 프로세스는 각 작업자 컴퓨팅 디바이스가 비결정론적 암호화 레이어를 제거(예: 집합된 암호화 키를 생성하는데 사용되는 공개 암호화 키로 생성된 개인 복호화 키 사용하여)할 때까지 계속할 수 있고, 결정론적 암호화 레이어를 적용하고, 선택적으로 스케치를 순열화할 수 있다.
작업자(예를 들어, 작업자(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등)는 링 구성으로 배열될 수 있다. 이러한 구성에서, 제1 작업자 컴퓨팅 디바이스(예: 작업자(405A) 또는 애그리게이터 컴퓨팅 디바이스(410) 등)는 암호화된 스케치를 프로세싱하고, 출력을 제2 작업자 컴퓨팅 디바이스에 전송할 수 있으며, 제2 작업자는 출력을 제3 작업자 컴퓨팅 디바이스에 전송할 수 있다. 최종 작업자 컴퓨팅 디바이스(예를 들어, 작업자(405N), 여기서 N은 작업자 컴퓨팅 디바이스의 수 등)가 스케치를 프로세싱하면, 출력을 제1 작업자 컴퓨팅 디바이스(예: 작업자 컴퓨팅 디바이스(405A), 애그리게이터 컴퓨팅 디바이스(410) 등)에 전송할 수 있다. 그 후, 제1 작업자 컴퓨팅 디바이스는 비결정론적 암호화를 제거하고, 프로세스의 제1 단계에서 아직 수행하지 않은 경우, 결정론적 암호화 레이어를 추가할 수 있다. 일부 구현예에서, 제1 작업자 컴퓨팅 디바이스는 각각의 스케치를 결합하고, 결합된 암호화된 스케치를 제2 작업자 컴퓨팅 디바이스에 전송할 수 있으며, 비결정론적 암호화 레이어를 제거하고, 링 구성의 각 작업자 컴퓨팅 디바이스에 의해 스케치를 프로세싱한 후 최종 프로세싱 단계로서 결정론적 암호화 레이어를 적용할 수 있다.
다음으로, 값 0은 각 작업자에 의해 결정론적으로 암호화되어, 스케치에 있는 0의 수를 나타낸다. 여기에서 카디널리티의 추정치가 계산될 수 있다.
일부 구현예에서, 결정론적 암호화 없이 0의 수를 카운팅할 수 있다. 메시지가 지수에 있기 때문에, 시스템은 암호화 0이 그룹의 아이덴티티 엘리먼트일 뿐이라는 사실에 의존할 수 있다. 따라서 결정론적 암호화 대신, 시스템은 모든 암호문에 대해 랜덤 지수를 선택할 수 있다(결정론적 암호화가될 수 있는 모두에 대해 동일한 지수를 사용하는 대신). '0' 엘리먼트는 0으로 유지될 수 있고, 나머지는 랜덤화될 수 있다. 이것은 0의 수만 나타내므로, 시스템의 전반적인 프라이버시를 향상시킬 수 있다. 이 시스템은 전체 카디널리티에서 '참조 군단'을 결정하고, 상기 군단을 골든 업워드로 셔플링할 수 있다.
추정을 위해, 시스템은 버킷 값의 부분 히스토그램을 나타낼 수 있다. 즉, 시스템은 존재하는 0의 카운트를 알 수 있고, 다른 모든 값의 카운트는 1이라고 가정할 수 있다. 다음으로, 스케치에 추가되었던 사용자 식별자에 대해, 히스토그램에 대한 기여도는 "1"의 카운트를 최대 1씩 증가시킬 수 있고, 여기서 히스토그램에 대한 단일 식별자의 기여도는 실제로 해시 충돌로 인해 0일 수 있다. 따라서, 쿼리의 민감도는 1일 수 있다.
양측 기하학적 분포에서 추출될 수 있는 노이즈 추가는 두 가지 방법 중 하나 이상으로 수행될 수 있다. 더 간단한 구현예는 히스토그램을 작업자에게 마스킹 해제한 다음 추정을 계산하기 전에 각 히스토그램 버킷에 정확한 양의 노이즈를 추가하는 것을 포함할 수 있다. 이로 인해, 계산 결과가 차등적으로 비공개로 할 수 있지만, 작업자는 실제 히스토그램 값을 학습한다.
더 복잡하지만 더 안전한, 노이즈 추가 구현예는 생성을 작업자에게 분산시키는 것을 포함할 수 있다. 이러한 구현예에서, 각 작업자는 두 개의 Polya 랜덤 변수(Xi, Yi)를 그릴 수 있으며, 이는 i번째 작업자에 의해 히스토그램에 추가될 0의 수와 1의 수를 각각 나타낸다. 음이 항의 특수한 경우인 Polya 랜덤 변수는 양측 기하 랜덤 변수를 합산하도록 구성될 수 있다.
첫째, 작업자는 각 버킷에 추가될 노이즈의 임의 기준에 동의하는 것으로 시작할 수 있다. 이 값을 B라고 한다. 그 다음 셔플 단계 동안, 각 작업자는 B-X 0을 스케치에 추가하고 B-Y 1을 스케치에 추가할 수 있다. 마지막으로, 히스토그램을 집합하는 작업자는 각 히스토그램 버킷에서 B * W 값을 뺄 수 있고, 여기서 W는 작업자 수이다. 그 후, 필요한 노이즈 분포가 남는다.
확률적 디컨벌루션 및 빈도 히스토그램 추정을 포함하여 빈도 히스토그램 추정을 위한 두 가지 이상의 옵션이 있다.
계단식 군단을 사용하여 멀티세트의 빈도를 추정하는 적어도 하나의 기법은 확률적 디컨벌루션에 기초한다. 확률적 디컨벌루션 기법은 작업자 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등)에 의해 생성된 최종 복호화된, 집합된 및 선택적으로 셔플링된 계단식 군단 스케치에 기초하여 빈도 히스토그램을 생성할 수 있다. 빈도 히스토그램을 추정하기 위해, self.legions(예: legions 데이터 구조 등)는 약간의 존재가 아닌 사용자 식별자와 연관된 빈도를 저장할 수 있다. 이러한 구현예에서, 계단식 군단 데이터 구조는 비트 값의 행렬이 아니라, 대신 여기에 설명된 대로 업데이트되는 빈도 값의 행렬이 되도록 생성된다. 작업자 컴퓨팅 디바이스(405A-N)에 의해 생성된 집합된 공개 키를 사용하여 암호화될 때, 각 군단의 각 포지션의 빈도 값은 일부 소수의 거듭 제곱으로 바뀔 수 있다(예를 들어, 각 군단의 각 포지션은 집합된 키를 사용하여 독립적으로 암호화된다). 일부 구현예에서, 다른 암호화 체계가 사용되며, 각 군단은 집합된 공개 키를 사용하여 독립적으로 암호화된다. 일부 구현예에서, 전체 계단식 군단 데이터 구조는 포지션별 또는 군단별이 아닌 집합된 공개 키를 사용하여 한 번 암호화된다.
시스템은 참조 군단(예: 포지션의 절반 미만이 활성화된 첫 군단 등)에 도달할 때까지 왼쪽에서 오른쪽으로(예: 군단 색인의 오름차순 또는 내림차순 등) 군단을 복호화할 수 있다. 예를 들어, 집합된 데이터 구조가 각각의 작업자 컴퓨팅 디바이스(예: 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 등)에 의해 프로세싱되면, 애그리게이터 컴퓨팅 디바이스는 계단식 군단 데이터 구조의 각 군단을 점진적으로 복호화할 수 있다. 군단이 복호화되면, 애그리게이터 컴퓨팅 디바이스는 군단에 채워지는 포지션의 수를 결정할 수 있다. 애그리게이터 컴퓨팅 디바이스는 복호화된 군단의 각 포지션을 반복하고 포지션 값이 0인지(또는 임계 값 미만 또는 다른 미리 결정된 값과 같은지 또는 일부 다른 비-집단 기준을 만족하는지 여부)를 결정함으로써 채워지는 군단의 포지션의 수를 결정할 수 있다. 애그리게이터 컴퓨팅 디바이스는 해당 군단의 포지션의 절반 미만이 채워지면 특정 군단이 참조 군단이라고 결정할 수 있다. 애그리게이터 컴퓨팅 디바이스가 군단이 참조 군단이 아니라고 결정하면, 애그리게이터 컴퓨팅 디바이스는 계단식 군단 데이터 구조에서 다음 군단을 복호화할 수 있다. 계단식 군단 데이터 구조의 다음 군단은 예를 들어, 다음으로 큰 군단 색인에 대응하는 군단이거나 다음 군단을 식별하는 다른 메트릭(예: 다음 메모리 주소 등)일 수 있다.
참조 군단부터, 적은 수의 충돌이 있을 수 있다. 따라서 시스템은 모든 군단을 함께 셔플링한 후 복호화할 수 있다. 빈도는 결과 빈도 히스토그램을 결정하기 위한 샘플로 사용된다. 충돌 후 히스토그램을 관찰한 가장 가능성이 높은 원래 히스토그램을 찾아 일부 조정을 수행할 수 있다. 이 접근법은 둘 이상의 사용자가 기여한 레지스터(예: 포지션 등)를 필터링하고 사용자 빈도의 깨끗한 샘플을 얻기 위한 동형 암호화를 포함할 수 있다.
동일한 키 집합 구조는 암호화된 카운터와 키(E(count), E(key)) 쌍이다. 계단식 군단 데이터 구조에 대한 추가는 다음과 같이 정의할 수 있다:
(E(count1), E(key1)) + (E(count2), E(key2)) = (E(count1 + count2 + R * (key1 - key2)), E(key1 + R * (key1 - key2)).
여기서 R은 난수이다. 이 추가 연산은 동형으로 계산될 수 있다.
이 구조는 다음과 같이 작동할 수 있다.
If key1 = key2 = key then
(E(count1), E(key)) + (E(count2), E(key)) = (E(count1 + count2), E(key)).
계단식 군단을 사용하여 멀티세트의 빈도를 추정하는 적어도 하나의 다른 기법은 빈도 히스토그램 추정에 기초한다. 빈도 히스토그램 추정 기반 기법은 추가 추정 및 프로세싱을 위해 빈도 히스토그램을 생성하여 특정 목표 기준의 빈도를 추정할 수 있다. 각 레지스터(예: 군단 포지션 등)에 대해 시스템은 동일한 키 애그리게이터를 추가할 수 있다. 퍼블리셔 컴퓨팅 디바이스(예를 들어, 식별자 서버, 데이터 프로세싱 시스템(105A-N) 등)는 레지스터를 키로 개시하는 가상 ID의 해시를 사용할 수 있다. 퍼블리셔 컴퓨팅 디바이스에 디바이스 식별자가 없는 경우 특수한 빈 토큰을 추가한다. 레지스터 부울이 먼저 결합되고, 결합되지 않은 노출 애그리게이터가 함께 셔플링될 수 있다. 0이 아닌 레지스터의 경우, 빈 토큰이 복호화되고 폐기된다. 나머지 노출 애그리게이터가 결합될 수 있다. 그 후, 카운터가 복호화된다.
시스템은 각 계단식 군단 데이터 구조의 생성에 기여한 디바이스 식별자 및 속성의 프라이버시를 가리거나 보호하기 위해 각 계단식 군단 데이터 구조에 차등 프라이버시 보호를 적용할 수 있다. 예를 들어, 각 퍼블리셔 컴퓨팅 디바이스(예를 들어, 식별자 서버, 데이터 프로세싱 시스템(105A-N) 등)는 비트를 무작위로 플립핑하여 계단식 군단 스케치에 차등 개인 노이즈를 적용하는 것을 보호할 수 있으며, 위 섹션 A에서 설명한 블룸 필터를 사용하여 수행하는 방식과 유사하게 수행한다. 일부 구현예에서, 스케치의 각 포지션이 빈도 추정을 위한 카운터 레지스터이면, 차등 프라이버시는 군단에서 랜덤 포지션을 무작위로 추가, 업데이트 또는 증가함으로써 구현될 수 있다. 예를 들어, 이러한 노이즈는 1, 2 등과 같은 미리 결정된 양만큼 증가하거나 특정 임계 값(예를 들어, 0과 100 사이의 난수 또는 임의의 다른 범위 등) 내에서 임의의 양만큼 증가함으로써 추가될 수 있다.
시스템은 확률 p로 각 군단 x 포지션(예를 들어, 또는 위에서 설명한 카운터 레지스터에 추가 등)를 플립핑하여 노이즈를 적용할 수 있다. k 스케치의 경우, 일부 포지션에서 비트 b의 조합이 있는 경우, 이 조합은 확률 p^(k-a)*(1-p)^a와 함께 비트(b')의 조합으로 변환되며, 여기서 a는 b_i=b'_i인 포지션 i의 수이다. 이 근거를 카운터 레지스터 기반 빈도 군단에 적용할 때, 0과 같거나 같지 않은 포지션에 대해 동일한 분석이 적용된다(예: 이 분석에서 0과 같은 모든 포지션은 이진 0으로 취급될 수 있으며, 0과 같지 않은 모든 포지션은 이 분석에서 이진 1로 취급될 수 있다.) 따라서 시스템은 조합 전환의 확률 행렬을 계산하고 반전에 의해 노이즈 보정 행렬을 얻을 수 있다.
시스템은 참조 군단에 기초하여 카디널리티 또는 빈도를 추정할 수 있다. 따라서 시스템은 결합된 계단식 군단 스케치를 (예를 들어, 작업자 컴퓨팅 디바이스 및 애그리게이터 컴퓨팅 디바이스 등에 의해 프로세싱된 후) 블룸 필터의 모음 또는 카운팅 블룸 필터로 취급하거나, 노이즈가 가장 적은 것을 선택할 수 있다. 시스템은 참조 군단을 선택하는데 휴리스틱을 사용할 수 있다: 비트의 절반 미만으로 포화된 제1 군단(노이즈 제거가 적용된 후) 또는 카운터 레지스터의 경우 포지션의 절반 미만이 채워진 제1 군단으로 선택될 수 있다. 각 군단은 집단의 확률이 감소하는 순서로 분석될 수 있다. 예를 들어 각 군단은 기초하여 채워질 수 있다.
이제 도 5를 참조하면, 도시된 것은 식별자 값 및 속성 데이터에 기초하여 계단식 군단 데이터 구조를 생성하기 위한 방법(2000)의 흐름도이다. 방법(2000)은 예를 들어, 적어도 하나의 데이터 프로세싱 시스템(예를 들어, 적어도 하나의 데이터 프로세싱 시스템(105) 등) 또는 여기에 설명된 임의의 다른 컴퓨팅 디바이스에 의해 수행될 수 있다. 데이터 프로세싱 시스템은 데이터 레코드를 유지할 수 있다(동작 2002). 데이터 프로세싱 시스템은 빈 계단식 군단 데이터 구조를 생성할 수 있다(동작 2004). 데이터 프로세싱 시스템은 k번째 데이터 레코드를 선택할 수 있다(동작 2006). 데이터 프로세싱 시스템은 선택된 데이터 레코드를 해시할 수 있다(동작 2008). 데이터 프로세싱 시스템은 군단을 선택할 수 있다(동작 2010). 데이터 프로세싱 시스템은 포지션 식별자를 추출할 수 있다(동작 2012). 데이터 프로세싱 시스템은 선택한 레지스터 군단에서 포지션을 업데이트할 수 있다(동작 2014). 데이터 프로세싱 시스템은 카운터 레지스터 k가 데이터 레코드의 수 n과 동일한지 여부를 결정할 수 있다(동작 2016). 데이터 프로세싱 시스템은 카운터 레지스터 k를 증가시킬 수 있다(동작 2018). 데이터 프로세싱 시스템은 집합된 암호화 키를 획득할 수 있다(동작 2020). 데이터 프로세싱 시스템은 벡터 카운터 레지스터를 암호화할 수 있다(동작 2022). 데이터 프로세싱 시스템은 암호화된 벡터를 전송할 수 있다(동작 2024).
데이터 프로세싱 시스템은 데이터 레코드를 유지할 수 있다(동작 2002). 데이터 레코드(예를 들어, 데이터 레코드(122A-N))는 예를 들어 하나 이상의 디바이스 식별자(예를 들어, 클라이언트 식별자(122A-N)) 및 하나 이상의 속성(예를 들어, 속성(127A-N))을 포함할 수 있다. 데이터 레코드는 데이터 프로세싱 시스템에 통신적으로 결합된 데이터베이스(예를 들어, 데이터베이스(115))에 저장된 하나 이상의 데이터 구조일 수 있다. 데이터 레코드를 유지하는 것은 컴퓨터 메모리에 하나 이상의 데이터 레코드를 저장하는 것을 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 하나 이상의 메시지(예를 들어, 요청, 표시, 데이터 패킷 등)를 수신하는 것에 응답하여 데이터 레코드를 적어도 하나의 클라이언트 디바이스(예를 들어, 적어도 하나의 클라이언트 디바이스(120))에 유지할 수 있다. 데이터 프로세싱 시스템은 메시지의 속성과 함께 메시지로부터 적어도 하나의 식별자를 추출하고 식별자 및 속성을 포함하는 데이터 레코드를 생성할 수 있다. 데이터 프로세싱 시스템은 데이터베이스, 하나 이상의 데이터 구조 또는 비휘발성 컴퓨터 판독가능 매체와 같은 컴퓨터 메모리에 데이터 레코드를 유지(예를 들어, 저장, 로드 또는 기록)할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 하나 이상의 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(120A-N) 등)로부터 하나 이상의 데이터 레코드를 수신할 수 있다.
데이터 프로세싱 시스템은 계단식 군단 데이터 구조를 생성할 수 있다(동작 2004). 계단식 군단 데이터 구조를 생성하기 위해, 데이터 프로세싱 시스템은 적어도 하나의 비트 어레이, 적어도 하나의 카운터 레지스터 어레이 또는 적어도 하나의 카운터 레지스터를 수용하기 위해 하나 이상의 메모리 영역을 할당할 수 있다. 할당된 적어도 하나의 비트 어레이, 적어도 하나의 카운터 레지스터 어레이 또는 적어도 하나의 카운터 레지스터는 계단식 군단 데이터 구조의 적어도 하나의 좌표(예를 들어, 특정 군단에서의 포지션 등)에 대응할 수 있다. 하나 이상의 카운터 레지스터에 대한 메모리를 생성하고 할당함으로써, 데이터 프로세싱 시스템은 카운터 레지스터를 포함하는 벡터를 생성할 수 있다. 데이터 프로세싱 시스템은 비트 어레이 또는 카운터 레지스터 어레이일 수 있는 적어도 하나의 군단을 생성할 수 있다. 데이터 프로세싱 시스템은 생성된 각 군단에 군단 ID(예를 들어, 위에서 사용된 군단 식별자 l 등)를 할당할 수 있고, 각 군단의 각 포지션(예컨대, 각 비트, 카운터 레지스터 등)에 포지션 식별자를 할당할 수 있다. 일부 구현예에서, 포지션 식별자는 군단 간에 동일할 수 있지만 동일한 군단 간에는 다를 수 있다. 예를 들어, 특정 군단의 모든 포지션은 다른 포지션 식별자를 가질 수 있지만, 두 개의 다른 군단에 있는 유사한 포지션은 동일한 식별자를 가질 수 있다. 데이터 프로세싱 시스템은 계단식 군단 데이터 구조의 각 포지션(예를 들어, 비트 값 또는 카운터 레지스터 등)를 초기화 값, 예를 들어 0 또는 1로 초기화할 수 있다. 데이터 프로세싱 시스템은 카운터 레지스터 또는 비트 값의 행렬에 대응할 수 있는 계단식 군단 데이터 구조를 생성할 수 있으며, 행렬의 각 포지션은 때때로 "버킷" 또는 "버킷들"이라고 한다. 예를 들어, 데이터 프로세싱 시스템은 버킷 당 l개의 군단과 n개의 포지션 또는 l군단에 걸쳐 lxn개의 버킷이 있는 계단식 군단 데이터 구조를 생성하라는 표시를 수신할 수 있다. 데이터 프로세싱 시스템은 군단, 버킷, 비트 포지션, 카운터 레지스터 또는 여기에 설명된 임의의 다른 가능한 파라미터에 의해 계단식 군단 데이터 구조의 크기를 지정하는 외부 컴퓨팅 디바이스에 의해 제공되는 내부 구성 설정에 액세스할 수 있다.
데이터 프로세싱 시스템은 k번째 데이터 레코드를 선택할 수 있다(동작 2006). 생성된 계단식 군단 데이터 구조에 동작 2002에서 유지되는 각 데이터 레코드를 프로세싱하고 추가하기 위해, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에서 유지하는 데이터 레코드 각각에 대해 반복할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k에 기초하여 데이터 레코드 각각을 반복적으로 루프할 수 있다. 예를 들면, 데이터 레코드 각각은 인덱스 값(예를 들어, 인덱스 0, 인덱스 1, 인덱스 2 등)에 의해 데이터 구조에서 인덱스될 수 있다. 데이터 레코드를 프로세싱하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 k와 동일한(거의 동일한) 인덱스 값을 포함하거나 그와 연관된 데이터 레코드를 선택할 수 있다. 그것이 루프의 첫 번째 반복이라면, 카운터 레지스터 k는 k번째 데이터 레코드를 선택하기 전에 초기화 값(예를 들어, k = 0, k = 1 등)으로 초기화될 수 있다. 데이터 레코드를 선택하는 것은 데이터 레코드와 연관된 데이터를 데이터 프로세싱 시스템의 컴퓨터 메모리의 다른 영역, 예를 들어 메모리의 작업 영역에 복사하는 것을 포함할 수 있다. 데이터 레코드를 선택하는 것은 데이터 레코드가 데이터베이스에 있는 경우 데이터베이스에서 데이터 레코드를 검색하고, 샘플과 연관된 데이터를 데이터 프로세싱 시스템의 다른 컴퓨터 메모리 영역(예: 메모리의 작업 영역)에 복사하는 것을 포함할 수 있다.
데이터 프로세싱 시스템은 선택된 데이터 레코드를 해시할 수 있다(동작 2008). 데이터 프로세싱 시스템은 계단식 군단 데이터 구조를 채우는데 사용할 해시 함수를 식별하고 실행할 수 있다. 예를 들어, 해시 목록에서 식별된 각 해시는 입력 값에 기초하여 정규 분포 또는 임의성 기대치를 제공할 수 있다. 즉, 예를 들어 해시 함수에 대한 유사한 입력이 반드시 해시 함수와 유사한 출력을 갖는 것은 아니다. 해시 함수는 계단식 군단 데이터 구조를 위한 최적의 해시 함수로 선택될 수 있다. 예를 들어, 데이터 프로세싱 시스템은 독립적이고 균일하게 분산된 해시 함수를 선택할 수 있다. 이러한 해시 함수는 예를 들어 murmur 해시, Fowler-Noll-Vo 시리즈 해시, 또는 Jenkins 해시, SHA-1 해시, SHA-2 해시 또는 균일하게 분포된 또는 실질적으로 균일하게 분포된 출력 분포 등을 생성할 수 있는 당업계에 공지된 임의의 다른 유형의 해시 함수를 포함할 수 있다. 데이터 프로세싱 시스템은 해시 함수를 선택하거나 식별할 수 있으며, 선택된 데이터 레코드에 해시 함수를 적용하여 해시된 데이터 레코드를 생성할 수 있다.
데이터 프로세싱 시스템은 생성된 계단식 군단 데이터 구조의 군단을 선택할 수 있다(동작 2010). 계단식 군단 데이터 구조는 여러 군단을 포함하도록 생성될 수 있으며, 각 군단은 대응하는 색인 값으로 인덱싱된다. 인덱스 값이 증가하면, 대응 군단의 포지션을 업데이트하는 값의 확률이 감소할 수 있다. 예를 들어, l 군단이 있는 계단식 군단 데이터 구조를 고려한다. l군단 각각은 인덱스 값(예: 1, 2, 3,…, l)으로 번호를 매길 수 있다. 일부 구현예에서, 각 군단의 인덱스 값은 서로 다른 숫자로 시작하고 끝날 수 있다(예를 들어, 제1 군단은 0의 인덱스 값을 갖고 마지막 군단은 l-1의 인덱스 값을 갖는 등). 각 해시된 데이터 레코드는 계단식 군단 데이터 구조에서 군단의 포지션을 업데이트할 수 있다. 해시된 데이터 레코드에 기초하여 업데이트될 군단을 결정하기 위해, 데이터 프로세싱 시스템은 해시된 데이터 레코드의 특정 포지션에 있는 0의 수를 결정할 수 있다. 예를 들어, 값 '0110 1010 0100'과 동일한 해시된 데이터 레코드의 경우, 데이터 프로세싱 시스템은 해시된 데이터 레코드에 두 개의 연속적인 최하위 0이 있음을 결정할 수 있다. 이 결정에 기초하여, 데이터 프로세싱 시스템은 업데이트할 두 번째 것(예를 들어, 인덱스 값이 2인 계단식 군단 등)을 선택할 수 있다. 이는 인덱스 값이 3인 군단에 배치되는 3개의 연속적인 0과 인덱스 값이 4인 군단에 배치되는 4개의 연속적인 0에 뒤따른다. 따라서 해시 함수의 출력이 균일하게 분산되기 때문에, 하나의 최하위 0이 있는 해시된 데이터 레코드의 확률은 50%이고, 2개의 연속된 최하위 0이 있는 해시된 데이터 레코드의 확률은 25%, 3개의 연속된 최하위 0이 있는 해시된 데이터 레코드의 확률은 12.5% 등이며, 각 군단은 임의의 주어진 해시된 데이터 레코드로 채워질 가능성이 점점 더 적다. 일부 구현예에서, 다른 일련의 비트는 동일한 비트 포지션 및 연속 값 체계가 계단식 군단 데이터 구조를 채우는데 사용되는 각 해시 데이터 레코드에 사용되는 한 유사한 방식(예를 들어, 연속적인 최상위 비트, 또는 각 해시된 데이터 레코드 전체에 걸쳐 일련의 연속 또는 비연속 비트 등)으로 군단을 선택하는데 사용된다.
데이터 프로세싱 시스템은 해시된 데이터 레코드에서 포지션 식별자를 추출할 수 있다(동작 2012). 해시된 데이터 레코드는 동작 2010에서 선택된 군단의 포지션에 대응할 수 있다. 선택된 군단에서 대응하는 포지션을 식별하기 위해, 데이터 프로세싱 시스템은 해시된 데이터 레코드에서 레지스터 식별자를 추출할 수 있다. 데이터 프로세싱 시스템은 예를 들어 선택된 군단의 포지션의 수로 각 해시된 데이터 식별자에 대해 모듈러스 연산을 수행하여 레지스터 식별자를 추출할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 군단을 선택하는데 사용되지 않는 해시된 데이터 레코드의 비트에 대해 모듈러스 연산을 수행할 수 있다. 예를 들어, 해시된 데이터 레코드가 '0110 1010 0100'과 같고, 군단이 최하위 비트에서 시작하는 연속 0의 수로 선택된 경우, 데이터 프로세싱 시스템은 이 예에서는 '0110 1010 01'인 해시된 데이터 레코드의 나머지 부분에 대해 모듈러스 연산을 수행할 수 있다. 연속 0 최하위 비트 수가 4개이면(예: 해시된 데이터 레코드가 '1001 0011 0000'과 같음), 데이터 프로세싱 시스템은 군단의 포지션을 선택하기 위해 군단을 선택하는데 사용되지 않은 해시된 데이터 레코드의 비트를 사용할 수 있다(예: '1001 0011'). 군단을 선택하는데 사용된 비트가 제거된 후 남아있는 비트 수가 포지션을 선택하는데 필요한 비트 수보다 적으면, 데이터 프로세싱 시스템은 군단의 포지션을 선택하는데 필요한 수까지 랜덤 비트(예: 의사 랜덤, 균일 분산)를 생성할 수 있다. 예를 들어 군단에 16개의 포지션이 있지만 나머지 부분이 추출된 후 2비트만 남아있는 경우, 데이터 프로세싱 시스템은 랜덤하게(예: 의사 랜덤 등) 2비트를 더 생성하고 그들을 나머지 2비트에 연결할 수 있다. 이 예에서는 4개의 균일하게 분산된 비트로 구성된 비트 열을 생성하며, 이는 군단의 16개 포지션으로부터 선택하는데 사용될 수 있다.
데이터 프로세싱 시스템은 선택된 군단에서 선택된 포지션을 업데이트할 수 있다(동작 2014). 선택된 포지션을 업데이트하는 것은 예를 들어 선택된 군단의 포지션 식별자에 대응하는 카운터 레지스터에 하나를 추가하는 것을 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 선택된 군단의 포지션 식별자에 대응하는 비트를 설정할 수 있다. 일부 구현예에서, 카운터 레지스터에 추가되는 양은 1이 아닌 값일 수 있다. 예를 들어, 데이터 프로세싱 시스템은 여기서 결정, 생성 또는 계산된 임의의 값에 대응할 수 있는 각 카운터 레지스터에 다른 값을 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 본 명세서에서 논의되는 다양한 이유로 카운터 레지스터로부터 감산될 수 있다. 일부 구현예에서, 감산에 대한 대안으로서, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에 의해 현재 선택되지 않은 다른 카운터 레지스터 버킷 각각에 양(예를 들어, 1 또는 일부 다른 값 등)을 더할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 특정 데이터 레코드와 연관된 특정 액세스 수만큼 값을 증가시킬 수 있다. 디바이스 식별자와 연관된 디바이스가 특정 콘텐츠 아이템에 특정 횟수만큼 액세스하는 경우, 데이터 프로세싱 시스템은 계단식 군단 데이터 구조(예를 들어, 다른 섹션을 포함하여 여기에 설명된 임의의 다른 확률 데이터 구조)에서 포지션을 해시된 데이터 레코드에 대응하는 디바이스가 특정 콘텐츠 아이템에 액세스 한 횟수만큼 증가시킬 수 있다. 일부 구현예에서, 이 특정 콘텐츠 아이템이 액세스된 횟수는 각각의 데이터 레코드에 저장될 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 k가 데이터 레코드의 수 n과 동일한지 여부를 결정할 수 있다(동작 2016). 데이터 프로세싱 시스템이 각 데이터 레코드를 사용하여 계단식 군단 데이터 구조를 업데이트했는지 여부를 결정하기 위해, 데이터 프로세싱 시스템은 각 데이터 레코드를 선택하는데 사용되는 카운터 레지스터(예: k)를 총 데이터 레코드 수 n과 비교할 수 있다. 카운터 레지스터 k가 총 데이터 레코드의 수 n과 동일하지 않으면(예를 들어, 그보다 작은 경우), 데이터 프로세싱 시스템은 동작 2018를 실행할 수 있다. 카운터 레지스터 k가 총 데이터 레코드의 수 n과 같으면(예를 들어, 동일하거나 그보다 큰 경우), 데이터 프로세싱 시스템은 동작 2020를 실행할 수 있다.
데이터 프로세싱 시스템은 카운터 레지스터 k를 증가시킬 수 있다(동작 2018). 일부 구현예에서, 데이터 프로세싱 시스템은 유지된 데이터 레코드 세트(예를 들어, 동작 2002에서 데이터 프로세싱 시스템에 의해 유지되는 데이터 레코드 등)에서 다음 프로세싱되지 않은 데이터 레코드를 나타내기 위해 레지스터 k에 하나를 추가할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 카운터 레지스터 k를 다음 프로세싱되지 않은 데이터 레코드의 메모리 어드레스 값(예를 들어, 컴퓨터 메모리에서의 위치)으로 설정할 수 있다. 일부 구현예에서, 다음 프로세싱되지 않은 데이터 레코드의 메모리 어드레스 값은 현재(예를 들어, 선택된) 데이터 레코드의 위치에서 데이터 구조에 포함될 수 있다. 카운터 레지스터 k의 값을 증가시킨 후, 데이터 프로세싱 시스템은 동작 2006를 실행할 수 있다.
데이터 프로세싱 시스템은 집합된 암호화 키를 획득할 수 있다(동작 2020). 예를 들어, 데이터 프로세싱 시스템은 하나 이상의 작업자 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등)에 의해 생성되는 집합된 공개 키를 수신할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 다른 컴퓨팅 디바이스(예를 들어, 다른 데이터 프로세싱 시스템, 작업자 컴퓨팅 디바이스 등)로부터 하나 이상의 공개 키를 수신하고, 공개 키를 집합된 공개 암호화 키로 집합할 수 있다. 일부 구현예에서, 작업자 컴퓨팅 디바이스는 공개 키를 교환 및 집합하고, 집합된 공개 키를 생성하고, 이를 계단식 군단 데이터 구조를 생성한 각 데이터 프로세싱 시스템에 전송할 수 있다. 집합된 키는 일부 구현예에서, 본 명세서에 설명된 하나 이상의 포지션, 군단 또는 계단식 군단 데이터 구조를 부분적으로 또는 완전히 암호화하는데 사용될 수 있다. 일부 구현예에서, 집합된 키는 데이터 프로세싱 시스템에 의해 유지되는 계단식 군단 데이터 구조를 암호화하기 위해 데이터 프로세싱 시스템에 배포되는 단일 공개 키일 수 있다. 일부 구현예에서, 집합된 암호화 키는 하나 이상의 ElGamal 암호화 키, 또는 임의의 다른 유형의 동형 암호화 체계를 포함할 수 있다. 일부 구현예에서, 집합된 암호화 키는 임계 복호화 방식을 지원하는 모든 종류의 공개 암호화 키일 수 있다.
데이터 프로세싱 시스템은 계단식 군단 데이터 구조를 암호화할 수 있다(동작 2022). 계단식 군단 데이터 구조의 차등 프라이버시를 보장하기 위해, 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에 의해 생성되고 유지되는 계단식 군단 데이터 구조를 암호화하기 위해 하나 이상의 암호화 기법을 사용할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 암호화 체계(예를 들어, ElGamal 암호화, 임계값 복호화를 지원하는 암호화 체계, 동형 암호화 등)을 사용하여 동작 2020에서 획득된 집합된 공개 키를 사용할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 계단식 군단 데이터 구조를 암호화하기 위해 집합된 암호화 키를 사용하여 개별적으로 각 군단의 포지션에 대응하는 카운터 레지스터 또는 비트 값 각각을 암호화할 수 있다. 이러한 구현에서, 각각의 암호화된 카운터 레지스터 또는 비트 값은 계단식 군단 데이터 구조를 표현하는 암호화된 데이터 구조를 생성하기 위해 집합될 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 계단식 군단 데이터 구조를 군단 단위로 암호화할 수 있고 즉, 각 군단은 독립적으로 암호화되고 계단식 군단 데이터 구조를 표현하는 암호화된 데이터 구조로 집합될 수 있다.
데이터 프로세싱 시스템은 암호화된 계단식 군단 데이터 구조를 전송할 수 있다(동작 2024). 암호화된 계단식 군단 데이터 구조를 전송하는 것은 암호화된 계단식 군단 데이터 구조를 작업자 컴퓨팅 디바이스(예를 들어, 임의의 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등)에 제공하는 것을 포함할 수 있다. 데이터 프로세싱 시스템은 암호화된 계단식 군단 데이터 구조를 프로세싱하기 위해 하나 이상의 작업자 컴퓨팅 디바이스 중 첫 번째로 작업자 컴퓨팅 디바이스를 선택할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 암호화된 계단식 군단 데이터 구조를 포지션 단위로 전송할 수 있으며, 여기서 각 군단의 각 포지션은 작업자 컴퓨팅 디바이스로 개별적으로 전송될 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 암호화된 계단식 군단 데이터 구조를 대량 트랜잭션으로 전송할 수 있으며, 여기서 암호화된 벡터의 대부분 또는 전체가 단일 메시지로 전송된다. 일부 구현예에서, 데이터 프로세싱 시스템은 암호화된 계단식 군단 데이터 구조를 군단 단위로 전송할 수 있으며, 여기서 각 암호화된 군단은 자체 메시지로 작업자 컴퓨팅 디바이스에 전송된다.
C. 빈도 및 카디널리티 추정을 위한 대체 계단식 군단 기법
식별자 서버는 예를 들어 각각의 클라이언트 디바이스와 연관된 클라이언트 식별자를 유지함으로써 클라이언트 디바이스 세트와 연관될 수 있다. 각 클라이언트 식별자는 각 식별자 서버와 클라이언트 디바이스 간의 연결을 설명하는 속성 정보를 포함할 수 있다. 속성 정보는 클라이언트 디바이스와 식별자 서버 간의 관계에 대한 정보(예: 웹 브라우징 기록, 인터렉션 데이터, 연결 시간, 네트워크 분석 데이터 등)를 포함할 수 있으며, 각각의 클라이언트 디바이스로부터 수신된 보호된 또는 개인 정보를 포함할 수 있다. 서로 다른 식별자 서버는 동일한 각각의 클라이언트 디바이스에 대응하는 서로 다른 속성 데이터 및 서로 다른 클라이언트 식별자를 유지할 수 있다. 일반적으로 각 식별자 서버간에 중복된 속성 데이터가 있는지 결정하기 위해 식별자 서버는 보호된 또는 개인 정보를 포함할 수 있는 속성 데이터를 중앙 서버와 공유하여 클라이언트 속성 정보의 중복을 제거할 수 있다.
그러나 모든 클라이언트 속성 데이터를 전송하면 확장성에 문제가 발생한다. 클라이언트 식별자 서버 수가 증가하면 일반적으로 네트워크를 통해 전송되는 클라이언트 디바이스 속성 데이터의 양도 증가한다. 속성 데이터는 각 클라이언트 디바이스에 대해 상세하고 상대적으로 클 수 있기 때문에 이러한 정보를 대규모로 전송하면 네트워크 대역폭과 계산 리소스가 소모될 수 있다. 또한 시스템이 총 사용자 식별자 수를 계산하는 것 뿐만 아니라 네트워크를 통해 보호된 또는 개인 속성 정보를 전송하지 않고 특정 속성의 빈도와 같은 특정 속성 데이터 기준을 충족하는 클라이언트 디바이스의 수도 계산하는 것이 유용하다. 또한, 이러한 이슈를 해결하는데 사용되는 암호화된 확률 데이터 구조의 구현예는 비현실적으로 큰(예: 기가 바이트 정도) 스케치 크기로 인해 어려움을 겪는다.
전술한 문제를 해결하기 위해, 이 기술적 접근의 시스템 및 방법의 양태는 미국 특허 가출원 번호 제62/981,960호에서 설명된 바와 같이 생성된 디노이징된 계단식 군단 데이터 구조를 결합할 수 있다. 각 퍼블리셔 컴퓨팅 디바이스는 해당 퍼블리셔와 연관된 디바이스 식별자를 표현하는 확률 행렬 데이터 구조를 생성할 수 있다. 차등 프라이버시를 유지하기 위해, 각 퍼블리셔는 행렬의 각 행에서 비트를 무작위로 플립핑할 수 있다. 데이터 프로세싱 시스템은 모든 퍼블리셔 컴퓨팅 디바이스로부터 때때로 스케치로 지칭되는 노이즈 행렬들을 수신하고 모든 퍼블리셔 컴퓨팅 디바이스에 걸쳐 식별자의 멀티세트의 유니온 또는 카디널리티를 계산할 수 있다.
각 퍼블리셔로부터의 스케치를 사용하여 식별자의 멀티세트의 유니온을 계산하는 적어도 하나의 구현예는 먼저 각 노이즈가 있는 스케치의 카디널리티(예를 들어, 스케치를 생성하는데 사용되는 추정된 식별자 수)를 계산하고, 노이즈가 있는 스케치를 카디널리티 내림차순으로 정렬하는 것을 포함한다. 데이터 프로세싱 시스템은 노이징된 스케치를 미리 결정된 크기의 그룹으로 그룹화하고 디노이징된 것을 추정할 수 있다. 데이터 프로세싱 시스템은 Monte-Carlo 샘플링을 사용하여 각 스케치 그룹에 대해 디노이징된 유니온 스케치를 추정할 수 있다. 추정된 디노이징된 스케치가 생성되면, 데이터 프로세싱 시스템은 스케치를 결합하고 모든 퍼블리셔 컴퓨팅 디바이스의 모든 디바이스 식별자를 나타내는 카디널리티 또는 유니온을 결정할 수 있다.
본 명세서에 기술된 기법은 퍼블리셔 컴퓨팅 디바이스가 디바이스 식별자 또는 퍼블리셔 컴퓨팅 디바이스(예: 데이터 프로세싱 시스템(105A-N))에 의해 유지되는 데이터 레코드의 디바이스 식별자와 연관하여 저장된 속성에 관한 정보를 공개하지 않고, 퍼블리셔 컴퓨팅 디바이스 세트의 식별자(예: 디바이스 식별자, 속성 등)의 총 수를 찾게 한다.
수학적으로, 이것은 일반적인 문제의 예다: 세트 S1, ... , Sk의 유니온의 카디널리티 찾기. 여기서 각 세트 Si는 에이전트 Ai(예: 데이터 프로세싱 시스템 105I 등)에 의해 유지된다. 데이터세트의 개별 멤버에 대한 특정 정보(예: 디바이스 식별자, 속성 데이터, 개인 또는 집합 데이터 레코드 등)를 공개하지 않는 경우 데이터세트를 차등적 비공개(private)라고 한다. 사용자의 세트의 스케치를 생성하여, 이들이 차등적으로 비공개이고, 세트(예를 들어, 멀티세트) 유니온의 카디널리티가 효율적으로 결정될 수 있도록 하는 것이 바람직하다. 차등적 비공개 및 노이징된 계단식 군단(예를 들어, 섹션 B에서 위에서 설명한 계단식 군단 등)의 효율적인 유니온을 위한 알고리즘이 이 섹션에 설명되어 있다. 섹션 B는 식별자의 멀티세트의 카디널리티와 빈도를 결정하기 위한 계단식 군단 체계를 제공하기 위해 섹션 A에 요약된 시스템의 구현예를 자세히 설명한다. 이 섹션에서는 데이터 프로세싱 레벨에서 각 계단식 군단 데이터 구조(예: 스케치 등)에 차등적 비공개(DP, Differentially private) 노이즈를 추가하고(예: 각 데이터 프로세싱 시스템(105A-N)은 각각의 계단식 군단 스케치에 노이즈를 추가할 수 있음), 최종 카디널리티 또는 주파수 추정의 정확도에 대한 DP 노이즈의 영향을 줄이거나 제거할 수 있는 기법을 사용하여 멀티세트의 카디널리티 및 주파수를 효율적으로 결정하는 기법을 자세히 설명한다.
k DP 노이징된 계단식 군단 스케치의 중복 제거는 선형 시간으로 달성될 수 있다. 알고리즘은 계산적으로 효율적이다. 임의의 수의 스케치를 중복 제거하는데 사용할 수 있는 휴리스틱이 설명되어 있다. 특정 가정이 유지되면 노이즈가 작다. 특히, 유니온 스케치의 카디널리티가 가장 큰 스케치에 의해 지배되는 경우 노이즈가 작다. 블룸 필터에 대한 중복 제거 알고리즘(예를 들어, 섹션 A에서 설명됨)의 복잡성은 이 섹션에서 설명된 기법을 사용하여 지수적 시간으로부터 선형 시간으로 개선될 수 있다.
확률 p로 각 군단 x 포지션을 무작위로 플립핑하여 노이즈가 추가된다. 이 확률은 차등 프라이버시 엡실론과 관련이 있는 것으로 간주된다:
Figure pct00010
이 체계는 예를 들어 계단식 군단 데이터 구조를 블룸 필터(예를 들어, 섹션 B 등에 설명된 바와 같이 카운터 레지스터가 비트 값 대신 사용되는 경우 카운팅 블룸 필터)로 감소시킴으로써 효율적으로 될 수 있다. 계단식 군단 스케치는 각각 n 개의 포지션을 가진 l 군단으로 구성될 수 있다. 아이템(예를 들어, 디바이스 식별자 및 연관 속성 데이터 등을 포함하는 데이터 레코드)은 한 군단의 한 포지션으로 해시될 수 있다. 아이템이 k 번째 군단으로 해시될 확률은 2-k다. 군단이 주어지면, 특정 데이터 레코드에 의해 한 포지션이 채워지거나 업데이트될 확률은 선택된 군단의 각 포지션에 대해 동일하다.
안전한 다자간 계산에서, 카디널리티 추정은 1로 설정된 총 포지션 수(예: 0으로 설정되지 않음)에서 수행된다. 차등적 비공개인 경우, 총 포지션의 수의 노이즈는 비어 있고 포화된 군단에 의해 지배될 것이다. 따라서 포화 과정에 있는 군단에서 추정을 이루어질 수 있다. 포화 과정에 있는 군단의 선택은 위 섹션 B에 설명되어 있지만, 값으로 채워진 포지션의 절반 미만을 갖는 계단식 군단 데이터 구조의 제1 군단을 결정하는 것을 포함한다. 자체적으로, 포화 과정에 있는 군단은 균일한 블룸 필터(또는 카운터 레지스터가 사용되는 경우 카운팅 블룸 필터 등)일 수 있다. 유니폼 블룸 필터 카디널리티 추정을 위한 알고리즘은 다음과 같은 순전히 예시 및 비 제한적 의사 코드에 설명된 바와 같이 계단식 군단에 적용될 수 있다:
Input: CascadingLegion(l, n) sketches s[0], ..., s[k-1] noised with probability
Output: cardinality of the union
for legion in range(l):
estimate C to be denoised number of bits set to 1 in the
union of sketeches
if C < (n/2):
# we are at Reference Legion
Return estimation C * 2^legion
알고리즘은 블룸 필터의 포지션에서 관찰된 비트 조합 볼륨의 벡터에서 작동할 수 있다. 알고리즘은 다음과 같이 진행할 수 있다:
1. 비트 조합 b1, b2의 모든 쌍에 대해 b1에서 b2로 이어지는 랜덤 플립 확률이 계산된다.
2. 확률은 1에서 계산될 수 있으며 전이 행렬 M으로 조합된다.
3. 전이 행렬 M은 보정 행렬 C를 계산하기 위해 반전될 수 있다.
4. 스케치 모음이 주어지면:
a. 비트 조합의 볼륨 벡터가 계산된다.
b. 벡터에 보정 행렬을 적용하여 비트 조합 볼륨의 사전 노이즈 벡터를 추정한다.
비트 조합 볼륨의 사전 노이즈 벡터는 데이터 레코드의 전체 멀티세트를 기술한다. 유니온을 계산하기 위해 시스템은(0, ... 0)을 제외한 모든 조합을 합산할 수 있다. 보정 행렬의 계산은 예를 들어 다음의 예시적 비제한적 의사 코드에 의해 설명된 바와 같이 적어도 하나의 구현예에서 구현될 수 있다.
def NoiseCorrection(s, p=0.1):
""" Noise correction matrix.
Args:
s: Number of bloom filters
p: DP flip probability
Returns:
A matrix that is to be applied to combination count to
recover estimated combination count before DP noise.
"""
q = 1 - p
size = 2 ** s
result = []
for i in range(size):
row = []
for j in range(size):
match = ~(numpy.uint8(i) ^ numpy.uint8(j))
match_count = bin(match & (size-1)).count('1')
row.append(q**match_count*p**(log2(size)-match_count))
result.append(row)
m = numpy.matrix(result)
return numpy.linalg.inv(m)
다른 구현예에서, 프로세싱은 조합 벡터보다는 number-of-ones 벡터에서 발생할 수 있다. number-of-ones에 대한 전이 확률을 결정하는 것은 이항 계수를 사용하여 수행될 수 있다. 벡터의 제1 행은 모두 0인 디노이징된 버킷 수를 추정하는데 사용된다. 적어도 하나의 구현예에서, 1의 수 공간에서 전이 확률을 계산하는 것은 다음 예시적 의사 코드에 설명된 대로 선형 시간으로 달성될 수 있다.
def TransitionProbability(l, s, t, p):
result = 0
q = 1 - p
for i in range(l // 2 + 1):
flip_zeros = max(0, t - s) + i
flip_ones = max(0, s - t) + i
flips = flip_ones + flip_zeros
calms = 1 - flips
if flip_ones > s or flip_zeros > l - s:
continue
choose_ones = special.comb(s, flip_ones)
choose_zeros = special.comb(l - s, flip_zeros)
choices = choose_ones * choose_zeros
assert choices > 0
result += choices * p ** flips * q ** calms
return result
본 섹션에 설명된 기법은 확률 행렬의 반전을 포함할 수 있다. 이러한 반전의 결과는 큰 차원에서 시끄러울 수 있다. 작은 스케치 집합(예: 5개)이 주어지면, 유니온의 디노이징된 스케치 샘플이 획득될 수 있다. 아래에 표시된 실시예는 2개의 스케치에 대한 유니온의 디노이징된 스케치를 얻지 만, 아래에 표시된 메서드는 임의의 수의 스케치로 일반화될 수 있으며, 단일 비트가 아닌 정수 값(예: 카운트 등)인 포지션을 포함하는 스케치로도 일반화될 수 있다. 이 메서드는 Monte Carlo 샘플링 휴리스틱이며, 아래의 의사 코드 예제에서 보여진다:
def GetCombinationsVector(s1, s2):
"""Compute vector of combinations of bits in sketches."""
v = [0, 0, 0, 0]
for x, y in zip(s1, s2):
v[x+2*y] += 1
return v
def ProbabilityOfOr(bit_a, bit_b, priors_map):
prob_map = {}
for true_a in [0, 1]:
for true_b in [0, 1]:
flip_a_needed = 1 if bit_a != true_a else 0
flip_b_needed = 1 if bit_b != true_b else 0
prob_map[true_a,true_b] = priors_map[true_a,true_b]*(
p ** flip_a_needed * q ** (1 - flip_a_needed) *
p ** flip_b_needed * q ** (1 - flip_b_needed))
prob_00 = prob_map[0, 0] / sum(prob_map.values())
return 1 - prob00
def DenoisedUnion(s1, s2):
v = GetCombinationsVector(s1, s2)
assert p == 0.1, "For now only case p=0.1 is simulated"
v =numpy.matrix([[ 1.265625,-0.140625,-0.140625, 0.015625],
[-0.140625, 1.265625, 0.015625,-0.140625],
[-0.140625, 0.015625, 1.265625,-0.140625],
[ 0.015625,-0.140625,-0.140625, 1.265625]])*
numpy.array(v).reshape(4, 1)
priors_map = {(0,0):v[0], (1,0):v[1], (0,1):v[2], (1,1):v[3]}
probs = [ProbabilityOfOr(x, y, priors_map) for x, y in zip(s1,s2)]
result = [int(random.uniform(0,1) < x) for x in probs]
return result
위에서 설명한 기법을 사용하여, 시스템은 정확도 손실없이 큰(예: 10개 이상 등) 노이징된 스케치에 대한 유니온을 계산할 수 있다. 알고리즘은 튜닝 파라미터 k를 포함할 수 있으며, 일부 구현예에서 약 5로 설정될 수 있다. 그러나 튜닝 파라미터 k는 다른 값으로도 설정될 수 있다.
1. 단일 스케치의 카디널리티를 추정할 수 있는 위에서 설명한 직접 추정 기법을 사용하여 각 스케치의 카디널리티를 추정(예: 특정 스케치의 전환 확률을 결정하고 포지션에서 해당 숫자를 제거하고 스케치의 카디널리티를 결정).
2. 카디널리티를 기준으로 스케치를 내림차순으로 정렬(예: 스케치 목록의 첫 번째 스케치가 가장 큰 카디널리티, 목록의 두 번째 스케치가 두 번째로 큰 카디널리티 등).
3. 카디널리티 순서를 유지하면서 스케치를 k 크기의 그룹으로 그룹화(예: 목록의 첫 번째 k 스케치는 첫 번째 그룹에 있고, 목록의 다음 k 스케치는 두 번째 그룹에 있는 등). 이렇게하면 g 그룹의 스케치를 생성한다.
4. 스케치의 각 g 그룹에 대해, Monte Carlo 방법을 사용하여 각 그룹에 대해 디노이징된 유니온을 샘플링한다. 이것은 g Monte Carlo 샘플링된 유니온 스케치를 반환할 수 있다.
5. 1 단계에서와 같이 직접 g 스케치의 유니온을 취한다.
유니온된 모든 세트의 수퍼 세트가 제공되면, Monte-Carlo 샘플링의 정확도가 더욱 향상될 수 있다. 이러한 구현예에서 매핑된 데이터가 없는 모든 레지스터는 0으로 채워진다.
이제 도 21을 참조하면, 도시된 것은 차등적 비공개 노이징된 계단식 군단 스케치의 카디널리티를 추정하는 방법(2100)의 예시적 흐름도이다. 이 방법은 섹션 A에서 본 명세서에 기술된 컴퓨팅 디바이스 중 임의의 것 또는 애그리게이터 컴퓨팅 디바이스(예: 애그리게이터 컴퓨팅 디바이스(410) 등)과 같은 본 명세서에 기술된 임의의 다른 컴퓨팅 디바이스(예를 들어, 하나 이상의 데이터 프로세싱 시스템(105A-N), 하나 이상의 클라이언트 디바이스(120A-N), 하나 이상의 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410) 등)에 의해 실행 또는 수행될 수 있다. 애그리게이터 컴퓨팅 디바이스는 하나 이상의 차등 비공개 계단식 군단 스케치를 수신할 수 있다(동작 2102). 애그리게이터 컴퓨팅 디바이스는 k 번째 스케치를 선택할 수 있다(동작 2104). 애그리게이터 컴퓨팅 디바이스는 선택된 스케치의 카디널리티를 추정할 수 있다(동작 2106). 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 k가 스케치의 수 n과 동일한지 여부를 결정할 수 있다(동작 2108). 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 k를 증가시킬 수 있다(동작 2110). 애그리게이터 컴퓨팅 디바이스는 카디널리티에 의해 스케치를 정렬할 수 있다(동작 2112). 애그리게이터 컴퓨팅 디바이스는 정렬된 스케치를 그룹화할 수 있다(동작 2114). 애그리게이터 컴퓨팅 디바이스는 g 번째 그룹을 선택할 수 있다(동작 2116). 애그리게이터 컴퓨팅 디바이스는 Monte Carlo 샘플링을 사용하여 선택한 그룹의 유니온을 추정할 수 있다(동작 2118). 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 g가 그룹의 수 m과 동일한지 여부를 결정할 수 있다(결정 2120). 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 g를 증가시킬 수 있다. 애그리게이터 컴퓨팅 디바이스는 g 그룹 유니온 값의 유니온으로부터 카디널리티를 추정할 수 있다(동작 2124).
애그리게이터 컴퓨팅 디바이스는 하나 이상의 차등 비공개 계단식 군단 스케치를 수신할 수 있다(동작 2102). 일부 구현예에서, 애그리게이터 컴퓨팅 디바이스는 주기적으로 또는 버스트 트랜잭션에서 차등적 비공개(예를 들어, 노이징된) 계단식 군단을 수신할 수 있다. 각각의 계단식 군단 스케치는 계단식 군단 스케치가 생성되고 수신된 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105A-N) 등)를 반영하는 각각의 식별자와 연관될 수 있다. 식별자 서버로부터 수신된 차등적 비공개 계단식 군단 스케치 각각은 집합된 암호화 키를 사용하여 암호화될 수 있다. 일부 구현예에서, 계단식 군단 스케치는 암호화되지 않으며, 차등적 프라이버시는 각 식별자 서버에 의해 계단식 군단 스케치에 추가된 노이즈를 통해 유지된다.
애그리게이터 컴퓨팅 디바이스는 k 번째 스케치를 선택할 수 있다(동작 2104). 동작 2102에서 수신된 각 계단식 군단 스케치의 노이징된 카디널리티를 프로세싱하고 결정하기 위해, 애그리게이터 컴퓨팅 디바이스는 애그리게이터 컴퓨팅 디바이스에서 수신한 각 스케치를 반복할 수 있다. 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 k에 기초하여 각각의 계단식 군단 스케치를 반복적으로 반복할 수 있다. 계단식 군단 스케치 각각은 인덱스 값(예를 들어, 인덱스 0, 인덱스 1, 인덱스 2 등)에 의해 데이터 구조에서 인덱스될 수 있다. 계단식 군단 스케치를 프로세싱하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 k와 동일한(거의 동일한) 인덱스 값을 포함하거나 그와 연관된 계단식 군단 스케치를 선택할 수 있다. 그것이 루프의 첫 번째 반복이라면, 카운터 레지스터 k는 k번째 계단식 군단 스케치를 선택하기 전에 legion(예를 들어, k = 0, k = 1 등)으로 초기화될 수 있다. 계단식 군단 스케치를 선택하는 것은 계단식 군단 스케치와 연관된 데이터를 애그리게이터 컴퓨팅 디바이스의 컴퓨터 메모리의 다른 영역, 예를 들어 메모리의 작업 영역에 복사하는 것을 포함할 수 있다.
애그리게이터 컴퓨팅 디바이스는 선택된 스케치의 카디널리티를 추정할 수 있다(동작 2106). 애그리게이터 컴퓨팅 디바이스에 의해 수신된 계단식 군단 스케치의 목록을 순위 화하기 위해, 애그리게이터 컴퓨팅 디바이스는 선택된 계단식 군단 스케치의 카디널리티(예를 들어, 노이징된 카디널리티)를 순위 추정할 수 있다. 이를 위해, 애그리게이터 컴퓨팅 디바이스는 채움 확률이 가장 높은 군단(예: i = 1, 여기서 i는 선택된 군단)에서 시작하여, 채움 확률이 가장 낮은 군단(예: i = 1, 여기서 i는 선택된 군단)에서 종료하는 스케치의 l 군단 각각을 반복할 수 있다. 각각의 선택된 군단에 대해, 애그리게이터 컴퓨팅 디바이스는 군단 내에 채워진 포지션의 수(예를 들어, 1과 같은 채움 값과 동일한 비트 수)를 군단 내에 채워지지 않은 포지션의 수와 비교할 수 있다. 애그리게이터 컴퓨팅 디바이스가 선택된 군단에 대해 채워진 포지션의 수가 채워지지 않은 포지션의 수보다 크거나 같다고 결정하면, 애그리게이터 컴퓨팅 디바이스는 계단식 군단 데이터 구조에서 다음 군단으로 이동할 수 있다. 애그리게이터 컴퓨팅 디바이스가 채워진 포지션의 수가 채워지지 않은 포지션의 수보다 적다고 결정하면, 애그리게이터 컴퓨팅 디바이스는 현재 군단 인덱스와 연관하여 선택된 군단을 참조 군단으로 저장할 수 있다(예를 들어, 애그리게이터 컴퓨팅 디바이스가 계단식 군단 데이터 구조에서 세 번째 군단으로 반복되고 첫 군단의 인덱스는 0이고 참조 군단 인덱스는 2와 같을 수 있다). 애그리게이터 컴퓨팅 디바이스는 참조 군단의 채워진 포지션 수에 2 ^(golden_legion_index)를 곱하여 선택한 노이징된 군단 데이터 구조의 카디널리티를 추정할 수 있다. 예를 들어, 참조 군단에 채워진 포지션이 10개이고 참조 군단 인덱스가 4인 경우, 애그리게이터 컴퓨팅 디바이스는 노이징된 계단식 군단 데이터 구조의 노이징된 카디널리티를 10*2^4 또는 160으로 추정할 수 있다.
애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 k가 스케치의 수 n과 동일한지 여부를 결정할 수 있다(동작 2108). 애그리게이터 컴퓨팅 디바이스가 각 노이징된 계단식 군단 스케치를 사용하여 노이징된 카디널리티를 추정했는지 여부를 결정하기 위해, 애그리게이터 컴퓨팅 디바이스는 각 노이징된 계단식 군단 스케치를 선택하는데 사용되는 카운터 레지스터(예: k)를 노이징된 계단식 군단 스케치의 총 수 n과 비교할 수 있다. 카운터 레지스터 k가 노이징된 계단식 군단 스케치 n의 총 수와 동일하지 않으면(예를 들어, 더 작으면), 애그리게이터 컴퓨팅 디바이스는 동작 2110을 실행할 수 있다. 카운터 레지스터 k가 노이징된 계단식 군단 스케치의 총 수 n과 같으면(예를 들어, 동일하거나 그보다 큰 경우), 데이터 프로세싱 시스템은 동작 2112를 실행할 수 있다.
애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 k를 증가시킬 수 있다(동작 2110). 일부 구현예에서, 애그리게이터 컴퓨팅 디바이스는 수신된 계단식 군단 스케치의 세트(예를 들어, 동작 2102에서 애그리게이터 컴퓨팅 디바이스에 의해 수신된 계단식 군단 스케치 등)에서 다음 프로세싱되지 않은 노이징된 계단식 군단 스케치를 나타내기 위해 레지스터 k에 하나를 추가할 수 있다. 일부 구현예에서, 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 k를 다음 프로세싱되지 않은 계단식 군단 스케치의 메모리 어드레스 값(예를 들어, 컴퓨터 메모리에서의 위치)으로 설정할 수 있다. 일부 구현예에서, 다음 프로세싱되지 않은 계단식 군단 스케치의 메모리 어드레스 값은 현재(예를 들어, 선택된) 계단식 군단 스케치의 위치에서 데이터 구조에 포함될 수 있다. 카운터 레지스터 k의 값을 증가시킨 후, 애그리게이터 컴퓨터 디바이스는 동작 2104를 실행할 수 있다.
애그리게이터 컴퓨팅 디바이스는 카디널리티에 의해 스케치를 정렬할 수 있다(동작 2112). 각 차등적 비공개 계단식 군단 스케치의 노이징된 카디널리티를 추정한 후, 애그리게이터 컴퓨팅 디바이스는 추정된 노이징된 카디널리티 값에 기초하여 차등적 비공개 계단식 군단 스케치의 정렬된 목록을 생성할 수 있다. 노이징된 카디널리티 값은 각각의 계단식 군단 스케치에 기여한 세트의 카디널리티를 정확하게 표현하지 못할 수 있지만 이 방법(2100)에 설명된 대로 스케치를 정렬할 목적으로는 충분히 정확하다. 계단식 군단 스케치를 정렬하는 것은 효율적인 정렬 알고리즘(예: 힙 정렬) 또는 다른 유형의 정렬 알고리즘을 사용하여 스케치의 추정된 노이징된 카디널리티 각각을 비교하는 것을 포함할 수 있다. 정렬 알고리즘을 사용하여, 애그리게이터 컴퓨팅 디바이스는 계단식 군단 스케치의 정렬된 목록을 내림차순으로 생성할 수 있다. 예를 들어, 목록의 제1 항목은 동작 2106에서 계산된 가장 큰 노이징된 카디널리티와 연관된 계단식 군단 스케치일 수 있고, 목록의 제2 항목은 두 번째로 큰 노이징된 카디널리티와 연관된 계단식 군단 스케치일 수 있다.
애그리게이터 컴퓨팅 디바이스는 정렬된 스케치를 그룹화할 수 있다(동작 2114). 계단식 군단 스케치를 정렬한 후, 애그리게이터 컴퓨팅 디바이스는 각 스케치를 크기 jm 그룹으로 할당할 수 있고, 여기서 j는 파라미터가 약 5이지만 다른 값과 같을 수 있다. 파라미터 j는 애그리게이터 컴퓨팅 디바이스의 메모리에 있는 하나 이상의 데이터 구조로부터 검색될 수 있다. 예를 들어, 애그리게이터 컴퓨팅 디바이스는 목록에서 제1 j개의 스케치를 선택하여 제1 그룹에 할당할 수 있다. 애그리게이터 컴퓨팅 디바이스는 목록에서 그룹화되지 않은 다음 j개 스케치를 선택하고, 다음 그룹에 할당할 수 있으며, 애그리게이터 컴퓨팅 디바이스가 크기가 jm개의 스케치 그룹을 생성할 때까지 계속할 수 있다.
애그리게이터 컴퓨팅 디바이스는 g 번째 그룹을 선택할 수 있다(동작 2116). 동작 2114에서 생성된 각 그룹의 Monte Carlo 샘플링된 카디널리티를 프로세싱하고 결정하기 위해, 애그리게이터 컴퓨팅 디바이스는 애그리게이터 컴퓨팅 디바이스에서 생성된 각 그룹을 반복할 수 있다. 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 g에 기초하여 각 그룹을 반복적으로 루프할 수 있다. 그룹 각각은 인덱스 값(예를 들어, 인덱스 0, 인덱스 1, 인덱스 2 등)에 의해 데이터 구조에서 인덱스될 수 있다. 그룹을 프로세싱하기 위해, 데이터 프로세싱 시스템은 카운터 레지스터 g와 동일한(거의 동일한) 그룹을 포함하거나 그와 연관된 노이즈 값을 선택할 수 있다 그것이 루프의 첫 번째 반복이라면, 카운터 레지스터 gg번째 그룹을 선택하기 전에 초기화 값(예를 들어, g = 0, g = 1 등)으로 초기화될 수 있다. 그룹을 선택하는 것은 그룹과 연관된 데이터를 애그리게이터 컴퓨팅 디바이스의 컴퓨터 메모리의 다른 영역, 예를 들어 메모리의 작업 영역에 복사하는 것을 포함할 수 있다.
애그리게이터 컴퓨팅 디바이스는 Monte Carlo 샘플링을 사용하여 선택한 그룹의 유니온을 추정할 수 있다(동작 2118). Monte Carlo 샘플링을 사용하여 카디널리티를 추정하는 것은 그룹에 있는 벡터의 조합 벡터를 결정하고, 특정 포지션에서 비트가 플립될 확률을 계산하고, 각각의 입력 스케치의 디노이징된 유니온을 추정하는 디노이징된 추정 스케치를 생성하는 것을 포함할 수 있다. 다음 의사 코드의 두 스케치에 대한 프로세스가 아래에 표시되어 있지만 약간의 수정으로 두 개 이상의 스케치로 확장될 수 있다:
def GetCombinationsVector(s1, s2):
"""Compute vector of combinations of bits in sketches."""
v = [0, 0, 0, 0]
for x, y in zip(s1, s2):
v[x+2*y] += 1
return v
def ProbabilityOfOr(bit_a, bit_b, priors_map):
prob_map = {}
p = 0.1
q = 1 - p
for true_a in [0, 1]:
for true_b in [0, 1]:
flip_a_needed = 1 if bit_a != true_a else 0
flip_b_needed = 1 if bit_b != true_b else 0
prob_map[true_a,true_b] = priors_map[true_a,true_b]*(
p ** flip_a_needed * q ** (1 - flip_a_needed) *
p ** flip_b_needed * q ** (1 - flip_b_needed))
prob_00 = prob_map[0, 0] / sum(prob_map.values())
return 1 - prob00
def DenoisedUnion(s1, s2):
p = 0.1
q = 1 - p
v = GetCombinationsVector(s1, s2)
assert p == 0.1, "For now only case p=0.1 is simulated"
v =numpy.matrix([[ 1.265625,-0.140625,-0.140625, 0.015625],
[-0.140625, 1.265625, 0.015625,-0.140625],
[-0.140625, 0.015625, 1.265625,-0.140625],
[ 0.015625,-0.140625,-0.140625, 1.265625]])*
numpy.array(v).reshape(4, 1)
priors_map = {(0,0):v[0], (1,0):v[1], (0,1):v[2], (1,1):v[3]}
probs = [ProbabilityOfOr(x, y, priors_map) for x, y in zip(s1,s2)]
result = [int(random.uniform(0,1) < x) for x in probs]
return result
위의 의사 코드는 0.1의 확률을 포함하는 것으로 표시되지만, 조합 벡터 v를 곱하는데 사용되는 역행렬에 대응 변경이 수행되는 한 p의 값은 임의의 값으로 변경될 수 있음을 이해해야 한다. 또한, 위의 의사 코드에서 두 개의 스케치만 결합될 수 있지만, 이 숫자는 둘 이상의 벡터를 수용하기 위해 조합 벡터의 파라미터, 역행렬의 크기 및 ProbabilityOfOr 함수를 변경하여 확장할 수 있음을 이해해야 한다. 다른 구현예에서, 2개의 그룹에 대한 디노이징된 유니온을 결정하는데 사용되는 방법이 사용될 수 있다(예를 들어, 그룹 크기를 결정하기 위한 파라미터 j가 2로 설정될 수 있는 등).
애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 g가 그룹의 수 m과 동일한지 여부를 결정할 수 있다(결정 2120). 애그리게이터 컴퓨팅 디바이스가 각각의 계단식 군단 스케치 그룹을 사용하여 유니온 몬테 카를로 샘플링 값을 추정했는지 여부를 결정하기 위해, 애그리게이터 컴퓨팅 디바이스는 각 그룹을 선택하는 데 사용된 카운터 레지스터(예를 들어, g)를 총 그룹 수 m과 비교할 수 있다. 카운터 레지스터 g가 그룹의 총 수 m과 동일하지 않으면(예를 들어, 더 작으면), 애그리게이터 컴퓨팅 디바이스는 동작 2122을 실행할 수 있다. 카운터 레지스터 g가 그룹의 총 수 m과 같으면(예를 들어, 동일하거나 그보다 큰 경우), 데이터 프로세싱 시스템은 동작 2124를 실행할 수 있다.
애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 g를 증가시킬 수 있다. 일부 구현예에서, 애그리게이터 컴퓨팅 디바이스는 계단식 군단 스케치 그룹의 세트(예를 들어, 동작 2114에서 애그리게이터 컴퓨팅 디바이스에 의해 생성된 계단식 군단 스케치의 그룹 등)에서 다음 프로세싱되지 않은 계단식 군단 스케치 그룹을 나타내기 위해 레지스터 g에 1을 추가할 수 있다. 일부 구현예에서, 애그리게이터 컴퓨팅 디바이스는 카운터 레지스터 g를 다음 프로세싱되지 않은 그룹의 메모리 어드레스 값(예를 들어, 컴퓨터 메모리에서의 위치)으로 설정할 수 있다. 일부 구현예에서, 다음 프로세싱되지 않은 그룹의 메모리 어드레스 값은 현재(예를 들어, 선택된) 그룹의 위치에서 데이터 구조에 포함될 수 있다. 카운터 레지스터 g의 값을 증가시킨 후, 애그리게이터 컴퓨터 디바이스는 동작 2116를 실행할 수 있다.
애그리게이터 컴퓨팅 디바이스는 g 그룹 유니온 값의 유니온으로부터 카디널리티를 추정할 수 있다(동작 2124). 위에서 설명한 것처럼, m 그룹의 계단식 군단 스케치 각각을 몬테 카를로 샘플링하여 생성된 스케치는 각 그룹 멤버의 디노이징된 유니온을 나타낸다. 따라서 몬테카를로 샘플 스케치 각각의 유니온은 단계 2102에서 수신된 모든 계단식 군단 스케치의 디노이징된 통합을 나타내는 결합된 유니온 스케치를 결정하기 위해 기본 집합(예: 각 그룹에 걸쳐 비트 OR 연산 등)에 의해 결정될 수 있다. 애그리게이터 컴퓨팅 디바이스는 생성된 몬테카를로 샘플 스케치 각각을 집합(예를 들어, 반복적으로 비트 ORing, 추가 등)하여 결합된 계단식 군단 스케치를 생성할 수 있다. 애그리게이터 컴퓨팅 디바이스는 결합된 스케치를 사용하여 단계 2102에서 수신된 스케치의 유니온의 디노이징된 카디널리티를 결정할 수 있다.
이를 위해, 애그리게이터 컴퓨팅 디바이스는 채움 확률이 가장 높은 군단(예: i = 1, 여기서 i는 선택된 군단)에서 시작하여, 채움 확률이 가장 낮은 군단(예: i = 1, 여기서 i는 선택된 군단)에서 종료하는 결합된 스케치의 l 군단 각각을 반복할 수 있다. 각각의 선택된 군단에 대해, 애그리게이터 컴퓨팅 디바이스는 군단 내에 채워진 포지션의 수(예를 들어, 1과 같은 채움 값과 동일한 비트 수)를 군단 내에 채워지지 않은 포지션의 수와 비교할 수 있다. 애그리게이터 컴퓨팅 디바이스가 선택된 군단에 대해 채워진 포지션의 수가 채워지지 않은 포지션의 수보다 크거나 같다고 결정하면, 애그리게이터 컴퓨팅 디바이스는 결합된 스케치에서 다음 군단으로 이동할 수 있다. 애그리게이터 컴퓨팅 디바이스가 채워진 포지션의 수가 채워지지 않은 포지션의 수보다 적다고 결정하면, 애그리게이터 컴퓨팅 디바이스는 현재 군단 인덱스 i와 연관하여 선택된 군단을 참조 군단으로 저장할 수 있다(예를 들어, 애그리게이터 컴퓨팅 디바이스가 결합된 스케치에서 세 번째 군단으로 반복되고 첫 군단의 인덱스는 0이고 참조 군단 인덱스 i는 2와 같을 수 있다). 애그리게이터 컴퓨팅 디바이스는 참조 군단의 채워진 포지션 수에 2 ^(golden_legion_index)를 곱하여 결합된 스케치의 디노이징된 카디널리티를 추정할 수 있다. 예를 들어, 참조 군단에 채워진 포지션이 10개이고 참조 군단 인덱스가 4인 경우, 애그리게이터 컴퓨팅 디바이스는 노이징된 계단식 군단 데이터 구조의 노이징된 카디널리티를 10*2^4 또는 160으로 추정할 수 있다.
애그리게이터 컴퓨팅 디바이스는 요청에 응답하여 방법 2100의 단계를 수행할 수 있다. 예를 들어, 외부 컴퓨팅 디바이스는 식별자 서버에 상주하는 식별자 및 속성 데이터 세트의 디노이징된 카디널리티에 대한 요청을 애그리게이터 컴퓨팅 디바이스에 제공할 수 있다. 그 다음, 애그리게이터 컴퓨팅 디바이스는 각각의 식별자 서버(예를 들어, 각각의 데이터 프로세싱 시스템(105A-N) 등)로부터 계단식 군단 스케치를 요청할 수 있다. 각각의 데이터 프로세싱 시스템(105)은 섹션 B에 설명된 바와 같이 계단식 군단 스케치를 생성할 수 있고, 여기에서 전술한 바와 같이 확률 p로 스케치의 비트를 플립함으로써 확률적 노이즈를 적용할 수 있다. 스케치를 생성한 후, 데이터 프로세싱 시스템(105)은 추가 프로세싱을 위해 그들의 스케치를 애그리게이터 컴퓨팅 디바이스로 전송할 수 있다. 애그리게이터 컴퓨팅 디바이스는 방법(2100)의 단계(2102)에서와 같이 데이터 프로세싱 시스템(105)으로부터 스케치를 수신할 수 있고, 그 다음 스케치에 기여한 식별자의 카디널리티를 결정하는 방법의 단계를 수행할 수 있다. 카디널리티를 결정한 후, 애그리게이터 컴퓨팅 디바이스는 멀티세트의 추정된 카디널리티를 요청을 담당하는 외부 컴퓨팅 디바이스에 전송할 수 있다.
본 명세서에 설명된 기술은 다수의 기술적 이점을 제공한다. 각각의 데이터 프로세싱 시스템(105)이 네트워크를 통해 많은 양의 데이터를 전송하여 네트워크 리소스를 소모하는 대신, 각 데이터 프로세싱 시스템은 계산 기법을 사용하여 (1) 전체 식별자 및 속성 세트를 표현하고, (2) 차등적으로 비공개인 작은 데이터 구조를 생성할 수 있다. 또한, 계단식 군단 스케치를 생성하기 위해 본 명세서에 기술된 계산 기법은 식별자 서버에 의해 유지되는 식별자의 수에 따라 계산 복잡도가 선형적으로 확장된다. 스케치가 나타내는 데이터보다 훨씬 작을 수 있기 때문에, 데이터 자체 대신 스케치를 차등적 비공개로 배포하면 네트워킹 리소스에 대한 부하를 감소시킨다. 이것은 네트워킹 기술의 개선이다. 또한 스케치가 차등적 비공개이기 때문에, 스케치로 표현된 데이터를 다른 컴퓨팅 디바이스에 배포할 필요가 없으므로 네트워킹 시스템과 카디널리티 추정기 시스템의 보안이 향상된다.
D. 빈도 및 카디널리티 추정을 위한 연속 액체 군단 기법
카디널리티 및 빈도 추정 기법이 소개된다. 이러한 방법은 HyperLogLog 및 블룸 필터의 양태를 결합하여 아이템 할당을 버킷에 기하학적으로 배포하여 블룸 필터보다 더 간결한 스케치를 작성할 수 있다. 본 명세서에 기술된 시스템 및 방법은 버킷 단위 합계를 사용하여 스케치를 결합할 수 있으며, 동형 암호화를 활용하여 신뢰할 수 없는 여러 당사자 간에 스케치를 결합하는 안전한 다자간 계산 프로토콜을 생성할 수 있는 동시에 프로토콜 당사자가 합의된 출력에 대한 차등적 비공개 추정치를 학습한다.
디바이스 식별자의 빈도는 특정 콘텐츠 아이템에 액세스한 디바이스 식별자(이후에는 디바이스 또는 식별자라고도 함)의 수일 수 있다. 이와 같이, 카디널리티는 콘텐츠 아이템에 액세스한 고유 디바이스 식별자의 수일 수 있고, 빈도는 미리 결정된 횟수 이상 콘텐츠 아이템에 액세스한 고유 디바이스 식별자의 수일 수 있으므로 관련된 값이다. 예를 들어, 1+ 빈도(예를 들어, 콘텐츠에 한 번 이상 액세스한 고유 디바이스 식별자의 수 등)는 서로 다른 퍼블리셔 컴퓨팅 디바이스에 걸쳐 식별자 세트의 멀티세트의 카디널리티일 수 있다. 콘텐츠의 빈도를 결정하는 적어도 두 가지 방법, 즉 빈도 히스토그램과 k+ 도달이 여기에 설명된다. 빈도 히스토그램은 각 빈도를 가지는 디바이스 비율을 표시할 수 있으며, k+ 도달은 빈도가 k보다 큰 디바이스의 세트의 카디널리티를 나타낼 수 있다. 데이터 세트에 대한 단일 패스만으로 값 범위에 대한 빈도를 추정하면, 추정을 수행하는데 필요한 계산 리소스의 양이 줄어들기 때문에 카디널리티 추정 컴퓨터 시스템이 개선된다. 빈도에 대해 계산된 최대 값은 미리 결정된 최대 빈도 값에 기초할 수 있고, 이는 콘텐츠 제공자가 이 메트릭을 사용하여 콘텐츠 노출을 제한할 수 있기 때문이다.
이 기술 솔루션의 시스템 및 방법은 콘텐츠 퍼블리셔의 도달 범위 및 빈도를 결정할 수 있으며, 여기서 콘텐츠 퍼블리셔 컴퓨팅 디바이스(예: 임의의 데이터 프로세싱 시스템(105A-N) 등)는 콘텐츠를 호스팅하고 제공하는 엔티티로 정의된다. 그러나, 콘텐츠 퍼블리셔는 서로를 신뢰하지 않을 수 있으므로, 카디널리티와 빈도를 결정하는데 사용되는 스케치를 직접 공유할 수 없다. 본 명세서에 기술된 카디널리티 및 빈도 측정을 위한 시스템 및 방법은 스케치를 구성하는 식별자 또는 디바이스의 프라이버시를 보존할 수 있으며, 콘텐츠 퍼블리셔 컴퓨팅 디바이스가 서로에 대한 정보를 학습하는 것을 방지하여 네트워킹 시스템의 전체 보안을 향상시킬 수 있다.
보안 및 프라이버시 보호 방식으로 하나 이상의 퍼블리셔 컴퓨팅 디바이스에 걸쳐 식별자의 카디널리티 및 빈도를 결정하는 다양한 방법이 설명될 것이다: 카디널리티 및 빈도를 추정하기 위해 블룸 필터의 기하학적으로 분산된 어레이일 수 있는 계단식 군단(Cascading Legions)(예를 들어, 여기에서 섹션 B 및 C 등에서 위에서 설명됨); 계단식 군단 알고리즘의 연속 버전일 수 있는 액체 군단(Liquid Legions)(예: 이 섹션에서 설명됨); 다중 퍼블리셔 도달 범위를 추정하기 위해 차등 프라이버시를 적용하는 두 가지 메커니즘; 및 두 가지 유형의 스케치를 결합하고 차등적 비공개인 빈도 추정치를 생성하기 위한 다자간 계산 프로토콜.
카디널리티를 추정하는 또 다른 기법은 HyperLogLog이다. HyperLogLog(HLL)는 낮은 오류율, 낮은 분산 및 낮은 메모리 사용을 특징으로 하는 카디널리티 추정기일 수 있다. 또한, 두 HLL의 유니온은 계산하기가 간단할 수 있으므로, HLL이 분산 카운팅 애플리케이션에 이상적일 수 있다. 카디널리티와 빈도를 모두 추정할 수 있는 HLL의 확장을 FreqLogLog라고 한다. 이를 위해, FreqLogLogs(FLL)는 레지스터 당 두 개의 추가 값, 카운트 및 지문을 저장할 수 있다. HLL 레지스터 값이 업데이트되면, 아이템의 지문이 저장되고 카운터가 1로 재설정된다. 그 다음, 해당 레지스터에 할당된 다른 아이템이 이전 아이템과 동일한 수의 선행 0이 있을 때 지문이 비교된다. 동일한 경우, 카운트가 증가된다. 그렇지 않으면, 새 지문이 이전 지문보다 크면, 새 지문이 저장되고 카운트는 1로 재설정된다. 그렇지 않으면, 이전 지문이 더 커지고 아무것도 수정되지 않는다.
이러한 또 다른 기법은 블룸 필터에 기초한다. HLL과 마찬가지로, Bloom 필터는 카디널리티와 빈도를 계산하는데 사용될 수 있으며 비교적 더 높은 메모리 요구 사항을 가질 수 있다. 블룸 필터의 카디널리티는
Figure pct00011
를 평가하여 결정될 수 있다. 여기서 k는 블룸 필터를 생성하는데 사용된 해시의 수, m은 블룸 필터의 비트 수, x는 블룸 필터의 채워진 버킷 수, n은 블룸 필터의 카디널리티의 추정치 수다.
k가 1로 이동하고 함수를 반전하면, 다음 공식:
Figure pct00012
을 사용하여 설정된 크기에 따라 활성 비트 수를 추정할 수 있다.
다른 컴퓨팅 디바이스로 전송할 때 스케치의 차등 프라이버시를 유지하기 위해 ElGamal 암호화를 사용할 수 있다(예: 섹션 A 등에서 설명됨). ElGamal 암호화는 임계 복호화를 지원하도록 적응될 수 있는 간단한 공개 키 암호화 방식이다. Diffie-Hellman 키 교환 프로토콜의 오프라인 변형으로 볼 수 있다. 생성기 G를 가진 그룹에 대한 기본 체계는 다음과 같다:
KeyGen: 랜덤 정수 X modulo q(그룹의 순서)를 선택한다. 이는 복호화에 사용되는 개인 키이다; 공개 키는 G^X이다.
Encrypt(pk, m): 랜덤 정수 R modulo q를 선택한다. 암호문은(G^R, m pk^R), 즉(G^R, m G^(XR))이다.
Decrypt(sk, m): 비밀 키를 사용하여 G^(XR)을 계산한 다음 m = m pk^R/G^(XR).
이 체계의 N-of-N 임계 버전은 모든 공개 키를 함께 곱하여 구성될 수 있다. 이 임계 변형의 예는 다음과 같다. 두 당사자가 G^X 및 G^Y 키를 생성할 수 있다. 이러한 공개 키를 곱하면 G^(X + Y)로 계산되어 암호화를 위한 공개 키로 사용될 수 있다; 대응 비밀 키는 X + Y다. 복호화를 위해, 원래 비밀 키를 (순서에 관계없이) 하나씩 적용할 수 있으므로, 단일 당사자가 공동 개인 키를 알 필요가 없다.
ElGamal 암호화는 곱셈 동형을 지원할 수 있다. 두 개의 암호문 (G^R1, M1 G^X R1), (G^R2, M2 G^X R2)이 주어지면, 값 (G^(R1 + R2), M1 M2 G^X(R1 + R2))은 두 메시지의 곱을 복호화하기 위해 계산될 수 있다. 이것은 메시지의 이산 로그에 대한 부가적인 동형일 수 있다; 즉, 값 (G^(R1 + R2), G^(M1 + M2) G^X(R1 + R2))이 계산될 수 있으며, 이는 작은 메시지 공간(이산 로그를 효율적으로 계산할 만큼 충분히 작음)에 사용될 수 있다.
지수로 합계를 수행하는 것으로 충분할 수 있다. 예를 들어, 2^v1 및 2^v2로 표현되는 v1, v2 값을 가진 두 정수는 곱셈적으로 결합하여 2^(v1 + v2)의 결합된 암호문을 산출할 수 있다. 또한, 아래에서 설명된 스케치는 최대 원하는 주파수보다 적은 수의 엘리먼트를 사용할 수 있기 때문에, 이러한 잘 알려진 값만 디코딩하기 위해 룩업 테이블을 사용할 수 있다. 여기에 작은 보안 이점도 있다: 애그리게이터는 해당 값이 무엇인지 알지 않고도 임계치를 초과하는 값의 카운트를 학습할 수 있다. 이를 위해, 작업자는 암호화(예: Pohlig-Hellman 암호 등)를 사용할 수 있으며, 이는 각 작업자가 부분적으로 복호화된 모든 버킷에 적용되는 비밀 지수를 선택하는 것을 포함할 수 있다. 이것은 동형을 통해 수행될 수 있으며, 생성기 G를 임의의 그룹 엘리먼트로 변경하는 것과 동일할 수 있다.
멀티세트의 카디널리티 및 빈도를 추정하는 또 다른 기법은 계단식 군단 스케치를 사용하여 구현될 수 있다. 블룸 필터 정확도를 위한 비트 수는 측정되어야 하는 세트의 카디널리티에 따라 선형적으로 증가할 수 있다. CascadingLegions(CL)의 registers(즉, 아이템의 존재를 기록하는 비트)를 2차원 어레이(또는 행렬)로 배열하면 비트 수의 선형 증가를 완화할 수 있다. 어레이의 열을 legions라고 하고 행을 positions이라고 한다. 따라서 각 아이템은 register인 군단의 (legion, position) 튜플에 매핑된다. 군단에 대한 확률 분포는 기하학적이고 포지션에 걸쳐 균일하므로 각 군단은 단일 해시 블룸 필터일 수 있다. 이 체계는 고정된 상대 오차로 카디널리티를 추정할 수 있으며, 필요한 스케치 크기는 측정되어야 하는 세트의 카디널리티와 함께 대수적으로 증가할 수 있다. 또한, 블룸 필터와 마찬가지로, CL 스케치 레지스터는 비트단위-OR 연산을 통해 결합될 수 있거나 또는 스케치가 빈도 문제에 필요한 카운터를 포함하는 경우, 스케치는 레지스터단위로 합산하여 결합될 수 있다.
아래에 설명된 알고리즘 1(섹션 B 등에서 제공되는 개시 내용에 기초함)은 CL 스케치의 초기화를 설명한다. 여기에는 레지스터 어레이(들)의 할당과 동일한 키 애그리게이터 어레이(b)의 할당이 포함될 수 있다. 아이템이 처음에 레지스터(r)에 삽입되면, 동일한 키 애그리게이터가 해당 아이템의 지문을 저장할 수 있으며 s[r]은 1로 설정된다. 그 후, 다음에 아이템이 해당 레지스터에 할당되면, 그것의 지문을 기존 지문과 비교할 수 있다. 지문이 같으면 s[r]을 증가시킬 수 있다. 새 지문이 기존 지문보다 크면 기존 지문을 교체하고 s[r]을 1로 재설정할 수 있다. 그렇지 않으면, 새 지문이 더 작아지고 수정되지 않는다. 동일한 키 애그리게이터를 업데이트하는 프로세스는 아이템을 스케치에 삽입하는 방법을 설명하는 알고리즘 3의 일부로 설명된다.
알고리즘 1, 스케치 초기화:
settings: none
input: number of legions l, and number of positions m
output: CascadingLegions sketch and same key aggregator (s, b)
let s = integer array of size l * n
let b = array of SameKeyAggregator structures
initialize s with zeros
삽입 알고리즘을 진행하기 전에, 레지스터 할당 알고리즘이 도입된다. 아이템을 레지스터에 할당하려면, 먼저 해시될 수 있다. 다음으로, 해시 값에서 선행 0의 수(예: 최상위, 최하위 등)를 결정하여 군단이 할당될 수 있다. 다음으로, 0이 아닌 첫 번째 비트가 제거되고 나머지 비트 모듈러스 포지션의 수는 군단에서의 포지션을 결정한다. 아래에 설명된 알고리즘 2 참조. 군단을 결정하는 방법으로 해시 값의 활성 비트 합계를 사용하여 이항 분포를 사용하여 아이템을 군단에 할당할 수 있다.
알고리즘 2, 레지스터 할당:
settings: number of legions l, number of positions m.
input: fingerprint (f) of item to allocate.
output: CascadingLegions register (i, j)
let i = 0
while f % 2 == 0 and i < l - 1:
let i += 1
let f /= 2
let f /= 2
let j = f % m
return (j, i)
아이템을 레지스터(i, j)에 할당하여 삽입을 진행할 수 있다. 다음 단계는 위에서 설명된 바와 같이 동일한 키 애그리게이터를 확인하고, 그에 따라 레지스터 값을 조정하는 것이다. 알고리즘은 카운터의 사용을 가정할 수 있지만, 빈도가 바람직하지 않은(예를 들어, 카디널리티가 요구되는 등) 구현예에서 각 군단은 비트 어레이로 표현될 수 있다.
알고리즘 3, 아이템 삽입:
input: item
output: modified sketch (s,b)
f = fingerprint(item)
let (i, j) = allocateRegister(f)
let r = i * m + j
if b[r] == null or b[r] == f:
s[r] += 1
b[r] = f
elif b[r] < f:
s[r] = 1
br[r] = f
아이템 세트의 카디널리티를 추정하기 위해, 특정 카디널리티에 의해 활성화되는 예상 레지스터 수를 도출할 수 있다. 각 군단은 균일 블룸 필터일 수 있으므로, tj 아이템이 군단 j에 속하면
Figure pct00013
레지스터의 일부가 활성화될 수 있다. 그리고 군단 이 아이템의 2^-(j + 1) 부분에 맞을 것으로 예상되므로, 활성화된 총 레지스터 수는 다음과 같을 수 있다:
Figure pct00014
F(t)는 단조롭기 때문에, 이진 검색을 사용하여 관찰된 활성화된 레지스터 수를 고려하여 카디널리티 t를 효율적으로 찾을 수 있다. 아래에 설명된 알고리즘 4 참조
알고리즘 4, 계단식 군단 스케치에서 카디널리티 추정:
settings: number of legions l, number of positions m
input: CascadingLegions sketch s
output: estimated cardinality of the set stored in s
define function F(t):
return sum((1 - exp(-t * 2^(-t * 2 ^( -(j + 1)) / m )) * m for j in range(l) )
define function InverseF(c):
return results of binary search of t such that F(t) = c
let c = count of non-zeros in s
let t = InverseF(c)
return t
빈도 추정을 위해, 레지스터로부터 카운트 분포를 추출할 수 있고, 샘플로부터 빈도 분포를 외삽할 수 있다.
이러한 스케치는 랜덤 노이즈의 도입을 통해 차등적 비공개로 확장될 수 있다. 계단식 군단 스케치에 있는 비트를 무작위로 플립핑하여 랜덤 노이즈를 도입할 수 있다. 스케치는 확률 p로 스케치의 각 비트를 플립하여 파라미터ε를 사용하여 차등적 비공개로 할 수 있다.
Figure pct00015
예를 들어, ln(3)의 DP 엡실론에 대해 비트는 확률 0.25로 플립될 수 있다. 알고리즘 4에서, 필터 S의 목록이 주어졌을 때, 모든 비트가 p 확률로 플립되었으며 유니온의 0 레지스터 수는 집합에서 노이즈를 제거하여 추정될 수 있다. 이 전략은 전체 스케치에 적용될 수 있지만, 완전히 포화되거나 완전히 0인 군단이 많이 있을 것으로 예상되기 때문에 그러한 추정의 오류가 클 것이다. 대신 디노이징이 각 군단에 개별적으로 적용될 수 있으며, 포화 과정에 있는 군단(예: 값의 절반 미만이 채워진 첫 번째 군단 등)을 사용하여 추정될 수 있다.
알고리즘 5, 노이징된 계단식 군단 스케치의 참조 군단을 사용하여 유니온의 카디널리티 추정.
settings: number of legions l, number of positions m, flip probability p
input: a list of CascadingLegions sketches S which had bits flipped with probability p
output: estimated cardinality of the union of sets stored in S
let InverseF = InverseF function from Algorithm 3.
define function OneCountsVolumesVector(S, j):
let v = [0] * len(S)
for i in range(m):
let c = number of sketches in S that have 1 in i-th position of j-th legion
let v[c] += 1
return v
define function TransitionProbability(a, b):
# For brevity, this function is omitted from the description of high level algorithm.
# An example Python implementation of this function is included in the Appendix.
return probability of a vector with a ones to have b ones after bits flipping with probability p
define function CorrectionMatrix():
let N be a matrix of transition probabilities, i.e. N(a, b) = TransitionProbability(a, b).
return linear algebra inverse of N
for g in range(l):
let v = OneCountsVolumesVector(S)
let estimated_zero_count = first coordinate of CorrectionMatrix() * v
if j < l - 1 and estimated_zero_count < 0.4 * m:
# The legion j is oversaturated, move on.
continue
# Legion g is saturated just enough, it's the Reference Legion.
return InverseF(m - estimated_zero_count)
이러한 또 다른 기법인 액체 군단은 연속 분포를 사용하는 계단식 군단 기법의 확장이다. 군단이 ½ 단계로 감소하는 할당 확률을 갖는다는 결정은 임의적이다. 예상되는 군단 수에 대한 공식 F는 l개의 항으로 합계를 사용할 수 있다. 대신, 다양한 감쇠 계수가 있는 기하학적 분포를 사용하여 아이템을 레지스터에 할당할 수 있다. 제한된 기하학적 분포를 고려한다.
Figure pct00016
이 샘플링을 효율적으로 수행하고 분석을 단순화하기 위해 지수 분포가 사용될 수 있다:
Figure pct00017
해상도 m과 함께 세그먼트 [0, 1]로 잘린다.
아이템을 레지스터에 할당하려면, i 번째 세그먼트가 i 번째 레지스터에 대응한다고 가정하여 세그먼트 [0, 1]을 동일한 길이의 m개 세그먼트로 분할할 수 있다. 지수 분포에서 실수 값이 샘플링될 수 있으며, 실수가 떨어진 간격에 대응하는 레지스터에 아이템이 할당될 수 있다.
실수 값 분포로부터 숫자를 샘플링하려면, 세그먼트 [0, 1]의 숫자를 균일하게 샘플링하고, 역 누적 분포 함수(CDF)가 적용될 수 있다. 위의 잘린 지수 분포의 역 CDF는 다음과 같을 수 있다:
Figure pct00018
따라서 우리는 LiquidLegions 스케치의 군단을 샘플링하기 위해 알고리즘 1L에 도달한다.
알고리즘 1L: Liquid Legions 레지스터 할당:
settings: decay parameter a, number of positions m.
input: item to allocate.
output: CascadingLegions register (i, j)
let f = fingerprint64bit(item)
let u = f / 2 ^ 64
let x = 1 - log(exp(a) + u * (1 - exp(a))) / a
return integer floor of x * (m + 1)
Liquid Legions의 스케치 생성 알고리즘은 적절한 레지스터 할당 함수가 있는 Cascading Legions와 동일할 수 있다. 카디널리티 추정을 위해, 함수는 활성화된 예상 레지스터 수 r에 카디널리티를 매핑할 수 있다.
t = c / m을 r / m에 매핑하는 함수는 적분을 통해 임의 분포 P에 대해 획득될 수 있다.
Figure pct00019
이 공식은 i 번째 레지스터가 적어도 하나의 아이템에 할당되고, m이 무한대가 될 때 한계에 도달할 확률을 작성하여 획득될 수 있다.
Figure pct00020
아래에서, 카디널리티 추정 알고리즘이 설명된다. 카디널리티 함수의 대체를 제외하고는 Cascading Legions 대응과 동일할 수 있다.
알고리즘 3L 부록. LiquidLegions 스케치의 역 카디널리티 추정 함수:
define function F(t):
return 1 - (-expi(- a * t / (exp(a) - 1))
+expi(-a * exp(a) * t / (exp(a) - 1))) / a
Liquid Legion 스케치의 차등적 비공개 버전은 Reference Legion이 연속적으로 미끄러질 수 있고, 추정치의 최소 분산을 위해 길이가 최적화될 수 있다는 점을 제외하면 Cascading Legion과 동일할 수 있다. 역 카디널리티 추정기를 미분하고 활성화된 레지스터 수의 증분 증가 확률을 곱한 미분 값이 최대인 지점을 찾아 최적의 참조 군단을 찾을 수 있다. 데이터 프로세싱 시스템은 섹션 C에서 위에 설명된 알고리즘과 함께 또는 대체로 알고리즘의 일부 또는 전부를 활용할 수 있다. 예를 들어, 스케치의 카디널리티를 결정하는 알고리즘을 이 섹션의 알고리즘으로 교체 또는 Liquid Legions 스케치를 채우는 알고리즘을 계단식 군단 구현예에 의해 사용되는 알고리즘 등으로 교체함으로써. 데이터 프로세싱 시스템(105A-N), 작업자 컴퓨팅 디바이스(405), 또는 애그리게이터 컴퓨팅 디바이스(410) 중 임의의 것이 이 섹션에서 설명된 기능 중 일부 또는 전부를 수행할 수 있다는 것을 이해해야 한다.
Liquid Legions 스케치 분석에 사용되는 기법은 레지스터를 통한 아이템의 임의 분포에 적용될 수 있다. 또한, 활동 공간에서 Dirac Mixture를 사용하여 임의 분포를 근사화할 수 있다. 따라서 지수화된 확률 함수는 적분될 필요가 없으며, Dirac Mixture에 의한 근사치가 사용될 수 있다.
암호화된 동일한 키 애그리게이터를 사용하여, 본 문서의 시스템은 동형 암호화를 활용하여 디바이스 식별자보다 더 많이 기여한 레지스터를 필터링하고, 디바이스 빈도의 깨끗한 샘플을 결정할 수 있다. 키 집합 구조는 암호화된 카운터와 키의 쌍이 될 수 있다(E(count), E(key)).
구조에 대한 추가는 다음과 같이 정의될 수 있다:
(E(count1), E(key1)) + (E(count2), E(key2)) =
(E(count1+count2+R*(key1-key2)), E(key1+R*(key1-key2)),
여기서 R은 난수다.
이 더하기 연산은 동형으로 계산될 수 있다. 그러면 구조는 다음과 같이 작동할 수 있다:
If key1 = key2 = key then
(E(count1), E(key)) + (E(count2), E(key)) = (E(count1 + count2), E(key)).
그렇지 않으면 카운터가 무작위로 파괴될 수 있다.
이러한 스케치를 생성하는 퍼블리셔 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템 105A-N 등) 간의 차등 프라이버시를 유지하기 위해, 시스템은 안전한 다자간 계산 프로토콜을 구현하여 퍼블리셔 간에 스케치를 집합하고 멀티세트의 카디널리티 및 빈도를 추정할 수 있다. 위와 같이 파라미터화가 동일한 스케치는 포지션단위로 합산하여 결합될 수 있다. 경량 MPC 프로토콜은 ElGamal 암호화의 동형 속성을 프로토콜의 핵심 작업으로 사용하여 공동 스케치를 계산하는데 사용될 수 있다. 높은 수준의 접근법은 먼저 N-of-N 임계 키를 설정한 다음 각 스케치 제공자가 공개 키를 사용하여 입력을 암호화하도록 하는 것이다. 그 다음 각 비밀 키 보유자는 공동 스케치를 부분적으로 복호화하고 동형 속성을 사용하여 결정론적 암호를 적용한 다음 결과를 다음 보유자에게 전달할 수 있다. 모든 복호화 키 공유가 사용되면, 결과는 원하는 통계가 계산될 수 있는 결정 론적으로 암호화된 스케치가 된다. 프로토콜은 차등 비공개 출력이 계산될 수 있는 방법을 포함하여 아래에서 설명된다.
일부 구현예에서, 스케치 제공자의 수가 많을 수 있다. 일부 구현예에서, 소수의 독립적으로 운영되는 작업자가 프로토콜을 실행하고 대부분의 스케치 제공자는 암호화된 입력을 작업자 중 적어도 하나에 보낼 수 있다. 작업자 사이에서, 통신 그래프는 링 토폴로지를 따를 수 있다. 나머지 예의 경우, 이 개시는 작업자 1이 작업자 2와, 작업자 2가 작업자 3과, 작업자 3이 작업자 1과 통신하도록 3명의 작업자가 있다는 가정하에 동작한다. 그러나 프로토콜에 참여할 수 있는 작업자는 얼마든지 있을 수 있음을 이해해야 한다.
시작하기 위해, 각 작업자는 위에서 설명한 대로 또는 섹션 A에 설명된 대로 ElGamal 키 쌍(pki, ski)을 생성할 수 있다. 각 작업자는 자신의 키를 다른 작업자 각각에게 브로드캐스트할 수 있다. 각 작업자는 결합된 공개 키를 형성할 수 있으며, 스케치 공급자는 작업자 중 하나에서 키를 가져올 수 있다. 이 결합된 공개 키는 스케치 제공자가 스케치를 암호화하는데 사용할 수 있다.
각각의 스케치 제공자(예를 들어, 데이터 프로세싱 시스템(105A-N))는 다음을 수행할 수 있다(예를 들어, 섹션 AC와 관련하여 본 명세서에서 설명됨):
1. 작업자(예를 들어, 작업자 컴퓨팅 디바이스(405A-N) 등)로부터 결합된(예를 들어, 집합된) 공개 키를 검색.
2. 버킷 지문을 포함하는 스케치를 생성(예: 여기에 설명된대로 등).
3. 0이 아닌 각 포지션이 3개의 튜플(위치, 값, 지문)로 표시되는 희소 표현으로 스케치를 패키징.
4. 결합된 공개 키를 사용하여 각 3튜플에 ElGamal 암호화를 적용.
5. 암호화된 희소 스케치를 제1 작업자(예를 들어, 작업자 컴퓨팅 디바이스(405A) 등)에게 보냄.
스케치 제공자가 자신의 스케치를 임의의 작업자에게 보낸 다음 프로토콜로 시작되는 단일 작업자에게 보내기 전에 각 작업자가 수신한 스케치를 셔플링하도록 일반화할 수 있다. 이 예시적 설명에서, 모든 스케치 제공자가 한 명의 작업자에게 스케치를 보내는 것으로 가정한다. 그러나 스케치 제공자의 수에 관계없이 여러 작업자에게 스케치를 보낼 수 있다는 점을 이해해야 한다. 제1 작업자가 각 퍼블리셔의 암호화된 희소 스케치를 수신하면 프로토콜을 시작할 수 있다.
1. 모든 퍼블리셔의 모든 3-튜플(이후 "3-튜플"이라고 함)에 대해 제1 작업자(예: 작업자(405A))는 3-튜플을 셔플링(예: 순열)하고 다음 작업자에게 전송할 수 있다.
2. 다음 작업자는 다음 단계를 수행한다:
a. ElGamal 키 공유(예: 비밀 키 등)를 사용하여, 각 포지션 ID(예: 각 3-튜플)를 부분적으로 복호화한다.
b. 이는 ElGamal 동형을 사용하여 결정론적 암호화 계층을 각 포지션 ID(예: 각 3-튜플)에 적용한다.
c. 3-튜플을 셔플링한다.
d. 3-튜플을 다음 작업자에게 전달한다.
3. 이 프로세스는 제1 작업자가 3-튜플(예: 링 구성 등)을 다시 수신할 때까지 계속될 수 있다.
4. 그 다음, 제1 작업자는 키 공유를 사용하여 3-튜플을 복호화하고, 이제 결정론적으로 암호화된 포지션 ID에서 튜플을 결합할 수 있고, 그러면 각 포지션에 대해 다음 구조가 생성된다 (Enon_det(position), [(E(value1), E(지문 1)),(E(값 2), E(지문 2)),…]).
5. 그 다음 제1 작업자는 위에서 설명한 동일한 키 애그리게이터 방법을 사용하여 암호화된 (값, 지문) 튜플을 결합한다. 이렇게 하면 결합된 스케치에서 0이 아닌 포지션 ID 각각에 대해 (Enon_det(position_id), E(value), E(fingerprint))의 3-튜플이 생성될 수 있다.
6. 제1 작업자가 제2 통신을 개시한다.
a. 결합된 3-튜플에서 암호화된 키(예: E(key))를 삭제하는 것으로 시작하여, 0이 아닌 각 포지션 ID에 대해 (Enon_det(position_id),(E(count))의 결합된 2-튜플이 생성된다.
b. 그 다음 결합된 2-튜플(이하 "2-튜플"이라고 함)을 다음 작업자에게 전달한다.
7. 다음 작업자는 다음 단계를 수행한다:
a. 각 카운트로부터 비결정론적 암호화를 제거한다.
b. 각 카운트에 결정론적 암호화를 적용한다.
c. 튜플이 이미 제1 라운드에서 셔플되었으므로 셔플링이 필요하지 않다.
8. 이 프로세스는 제1 작업자가 비결정론적으로 암호화된 2-튜플 세트를 수신할 때까지 계속된다.
9. 여기에서 카디널리티 추정치를 얻을 수 있다.
10. 다음으로, 작업자는 협력하여 빈도 분포를 결정할 수 있다:
a. 먼저 작업자는 이전 라운드에서와 동일한 키를 사용하여 정수 값 [1, max_frequency)을 사용하여 결정론적으로 암호화할 수 있으며, 이는 알려진 값 [1, max_frequency)에 대한 일반 텍스트에 대한 암호문 룩업 테이블을 생성할 수 있다.
b. 그 다음, 룩업 테이블을 사용하여 결정론적으로 암호화된 스케치에서 빈도 히스토그램을 구성할 수 있다. 이 히스토그램은 스케치의 빈도 분포를 결정하는데 사용할 수 있다.
c. 룩업 테이블의 값에 매핑되지 않는 스케치에 있는 모든 값은 max_frequency와 동일한 것으로 간주된다.
이것은 도 4a-c 및 도 5-7과 관련하여 위에서 설명된 MPC 프로토콜의 확장이다. 즉, 여기에 설명된 임의의 컴퓨팅 디바이스, 예를 들어 데이터 프로세싱 시스템(105A-N), 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스는 이 섹션에서 설명된 기능 중 하나 이상을 수행할 수 있다. 또한 섹션 A-C의 방법, 시스템 또는 기술 중 일부 또는 전부가 이 섹션의 기능에 적용될 수 있음을 이해해야 한다.
동일한 키 애그리게이터는 간단한 동등성 테스트를 사용하여 주어진 포지션의 키가 동일한지 여부를 결정할 수 있다. 각 히스토그램 빈에 대해 양측 기하학적 랜덤 변수를 생성하고 해당 빈에 추가하여 차등 프라이버시를 빈도 히스토그램에 직접 추가할 수 있다. 쿼리 민감도는 1이며, 이는 임의의 식별자는 빈도 히스토그램에 최대 한 번만 표시될 수 있기 때문에 반드시 그래야 한다.
노이즈를 추가하기 위해, 작업자는 각 버킷에 추가될 임의의 기준선 B에 동의하는 것으로 시작할 수 있다. 위 프로토콜의 1 단계와 2 단계는 각 작업자가 max_frequency 랜덤 변수(X1, Xi, Xmax_freq)를 그리도록 확장될 수 있다. 이들은 특정 작업자에 대한 값 [1, max_frequency] 계산에 추가할 노이즈 값의 수를 나타낼 수 있다. 이를 달성하기 위해, 각 작업자는 값 i를 갖는 B-X i 튜플을 스케치에 추가할 수 있다. 그 다음, 9 단계에서 제1 작업자는 각 히스토그램 버킷에서 B * W 값을 뺄 수 있고, 여기서 W는 작업자 수다. 그 다음, 이는 필요한 노이즈 분포를 제공한다. 또한, 노이즈 기준선을 뺀 후에 카디널리티가 추정될 수 있다. 각 작업자가 계산에 노이즈를 추가하는 방법에 대한 자세한 내용은 아래에 설명된 알고리즘 5를 참조. 유사한 기법이 도 7과 함께 섹션 A에서 위에서 설명된다. 예를 들어, 다음 알고리즘은 작업자 컴퓨팅 디바이스(405A-N)에 의해 빈도를 계산하는 동안 분산된 노이즈 값을 생성하고 추가하는데 사용될 수 있다.
알고리즘 5, 작업자 생성 분산 노이즈:
noise_tuples = []
for v in [0, max_frequency]:
x = drawPolyaRv()
for i in range(B-x):
noise_tuples.append((random(), v, random()))
개별 스케치 기여자의 카디널리티 유출을 방지하기 위해, 각 스케치 제공자는 sentinel_value가 잘 알려진 레지스터 값인 값 (sentinel_position, 0, 0)으로 여러 개의 3-튜플을 암호화할 수 있다. 그 다음, 4 단계가 끝날 때 작업자에 의해 감시 포지션을 결정론적으로 암호화할 수 있으며, 해당 포지션의 모든 튜플을 폐기할 수 있다.
일부 구현예에서, 모든 버킷이 스케치 제공자에 의해 암호화될 수 있는 고밀도 버전의 프로토콜을 사용할 수 있다. 그러나 희소 방법은 스케치가 ⅓차있는 일반적인 경우에 더 자원 효율적일 수 있다.
위에서 설명한 것과 동일한 주요 애그리게이터 기법은 분산 데이터를 수집하기 위해 더 일반화될 수 있다. 예를 들어, 식별자의 분포는 하나 이상의 속성(예를 들어, 디바이스 정보, 디바이스 메타 데이터, 디바이스에 대한 정보 등)에 기초하여 선택될 수 있다. 속성 별로 스케치를 생성하는 대신, 속성을 동일한 키 애그리게이터에 저장할 수 있으므로, 계산 리소스를 절약할 수 있으며 카디널리티 및 빈도 결정 컴퓨터 시스템을 개선할 수 있다. 트레이드오프는 속성 버킷에 대한 대략적 카운트가 아닌 대략적인 분포가 알려진다는 것이다. 따라서, 특정 속성이 멀티세트의 작은 부분이면, 카테고리 또는 속성에 대한 도달 범위의 상대적 오류를 보장할 수 없다. 배포 데모를 저장하기 위해 애그리게이터를 다음과 같이 조정할 수 있다. 카테고리(예: 속성)가 객체에 일관되게 할당될 수 있다고 가정할 수 있다.
(E(category1), E(key1)) + (E(category2), E(key2)) =
(E(category1 + R * (key1 - key2)), E(key1 + R * (key1 - key2)).
시스템은 작업을 엘리먼트 단위로 적용하는 동일한 키 애그리게이터에 임의의 수의 스케치 및 카테고리 클래스를 저장할 수 있다. 예를 들면:
(E(count1_a), E(count1_b), E(category1_c), E(E(key1)) +
(E(count2_a), E(count2_b), E(category2_c), E(E(key2)) =
(E(count1_a + count2_a + R * (key1 - key2)),
E(count1_b + count2_b + R * (key1 - key2)),
E(category1_c + R * (key1 - key2)),
E(key1 + R * (key1 - key2)).
설명을 위해 이 알고리즘을 Same Key Aggregator라고 할 수 있으며, 임의 카운트와 카테고리 분포를 집합한다고 가정할 수 있다. 구조 병합 동작은 '+' 기호를 통해 표시되며, 이는 위에서 설명한 대로 카운트 추가 및 카테고리 병합을 의미한다. 알고리즘의 일반 텍스트 버전
일부 구현예에서, Same Key Aggregator 애그리게이터는 암호화된 키 대신 사용할 수 있는 부동 소수점 값 해시를 포함할 수 있다. 단일 카운터의 경우 다음과 같다:
(hash_1, count_1) + (hash_2, count_2) =
((hash_1, count_1 + count_2)
if (hash_1 == hash_2) else min((hash_1, count_1), (hash_2, count_2)))
여기에 설명된 시스템 및 방법은 섹션 A-C에서 제공된 구현예를 수정 또는 확장 할뿐만 아니라 이전 섹션에서 설명되지 않은 다른 구현예를 구현하기 위해 이 섹션에서 설명된 기법을 구현할 수 있음을 이해해야 한다.
E. 빈도 및 카디널리티 추정을 위한 지수 일반화 블룸 필터
이 기법 솔루션의 이 섹션에서는 본 명세서에 기술된 전체 빈도 및 카디널리티를 계산하는데 사용되는 지수 및 일반화된 블룸 필터 데이터 구조를 설명한다. 이 기술 솔루션의 다른 섹션(예를 들어, 섹션 A-D)에서 설명된 바와 같이, 각 퍼블리셔 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(105A-N))는 하나 이상의 디바이스 식별자 또는 속성을 나타낼 수 있는 자신의 프라이버시 안전 스케치를 생성할 수 있다. 디바이스 식별자 또는 속성은 디바이스 식별자에 의해 수행되는 하나 이상의 액션, 예를 들어 특정 콘텐츠 아이템 또는 웹 주소에 액세스하는 것과 연관될 수 있다. 퍼블리셔 컴퓨팅 디바이스 각각은 수신된 스케치에 걸쳐 중복 제거된 고유 디바이스 식별자의 수를 추정하는 중복 제거 서비스(예를 들어, 임의의 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 등)로 스케치를 전송할 수 있다. 스케치는 차등적 프라이버시 안전일 수 있다. 결과적으로, 스케치를 신뢰할 수 없는 엔터티로 전송할 때에도 스케치의 차등 프라이버시를 유지할 수 있어 네트워킹 시스템의 보안이 향상된다.
이 기술 솔루션에 설명된 기법은 지수 일반화 블룸 필터(exp-GBF)를 스케치로 사용할 수 있다. 본 명세서에 기술된 기법은 애그리게이터 컴퓨팅 디바이스가 exp-GBF 스케치에 의해 표현된 멀티세트의 카디널리티를 추정하는데 사용할 수 있는 차등 프라이버시 안전 스케치로서 exp-GBF의 생성을 허용할 수 있다. 본 명세서에 기술된 기법은 여러 퍼블리셔에 걸쳐 exp-GBF를 결합하거나 결합하는 시스템 및 방법을 제공한다.
본 명세서에 기술된 기법은 기하학적 일반화 블룸 필터(exp-GBF)를 사용할 수 있다. GBF는 클래식 블룸 필터를 일반화하여, 비트 벡터의 비트가 해시된 식별자 공간의 다른 부분을 커버할 수 있도록 한다. 특히, i 번째 비트는 해시된 식별자 공간의 pi를 커버한다. pi는 분수일 수 있다. 퍼블리셔 컴퓨팅 디바이스(예: 데이터 프로세싱 시스템(105A-N))는 exp-GBF가 pi에 대한 지수 함수를 사용할 수 있으며, pi = kappa * exp(-kappa * i / m), m은 비트 벡터의 길이다. kappa는 exp-GBF 스케치의 형상을 결정할 수 있는 파라미터다.
본 명세서에 기술된 컴퓨팅 디바이스(예를 들어, 애그리게이터 컴퓨팅 디바이스(410) 또는 작업자 컴퓨팅 디바이스(405), 데이터 프로세싱 시스템(105A-N), 임의의 다른 컴퓨팅 디바이스 등)는 다음 공식을 사용하여 주어진 exp-GBF의 중복 제거된 카디널리티를 계산할 수 있다:
Figure pct00021
여기서 C는 exp-GBF에 기여한 식별자 세트의 카디널리티, x는 exp-GBF 스케치에 설정된 비트 수, m은 스케치의 총 비트 포지션 수다.
차등 프라이버시를 유지하기 위해, 퍼블리셔 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(105A-N))는 확률 p로 exp-GBF 스케치에서 각 비트를 플립핑할 수 있다. 예를 들어, 퍼블리셔 컴퓨팅 디바이스는 확률 p로 '1'비트를 '0'으로 플립하고 확률 q로 '0'비트를 '1'비트로 플립할 수 있다. 이 차등 비공개 exp-GBF 스케치를 dp-exp-GBF라고할 수 있다. exp GBF 스케치에서 각 비트를 플립핑하여 차등적 비공개로 한 후, 퍼블리셔 컴퓨팅 디바이스는 dp-exp-GBF 스케치를 애그리게이터 컴퓨팅 디바이스에 전송하여, 다른 퍼블리셔 컴퓨팅 디바이스에서 중복 제거된 카디널리티를 계산할 수 있다.
주어진 dp-exp-GBF 스케치에 대한 고유 카운트를 계산하기 위해, 애그리게이터 컴퓨팅 디바이스는 다음 공식을 사용하여 dp-exp-GBF 스케치의 수정된 1 비트 값을 계산할 수 있다.
Figure pct00022
여기서 CB는 카디널리티 추정에 사용되는 수정된 1 비트 수이고, q는 0 비트가 1 비트로 플립될 확률, p는 1 비트가 0 비트로 플립될 확률, x는 '1'로 설정된 스케치의 비트 수이고, z는 '0'으로 설정된 스케치의 비트 수다. 그 다음, 애그리게이터 컴퓨팅 디바이스는 다음 공식을 사용하여 수정된 1 비트 수로 dp-exp-GBF의 중복 제거된 도달 범위를 계산할 수 있다:
Figure pct00023
여기서 DC는 dp-exp-GBF의 카디널리티, CB는 위의 공식을 사용하여 계산된 수정된 1 비트 수, m은 dp-exp-GBF의 비트 위치 수다.
이 섹션에서 설명하는 스케치는 일반적으로 'ADBF(Any Distribution Bloom Filter)'라고도 한다. 이 섹션에서 설명하는 스케치는 균일 또는 지수 이외의 다른 분포 함수를 수용할 수 있는 비트 분포 허용을 포함할 수 있다. 예를 들어, 여기에 설명된 기법은 선형 감쇠 블룸 필터(BF), 쌍곡선 BF, 또는 균일한 지수 BF의 혼합물을 구현할 수 있다. 노이즈 보정은 하나 이상의 애그리게이터 또는 작업자 컴퓨팅 디바이스(예를 들어, 애그리게이터 컴퓨팅 디바이스(410), 작업자 컴퓨팅 디바이스(405A-N) 등)에 의해 효율적으로 적용될 수 있다.
또한, 애그리게이터 컴퓨팅 디바이스(예: 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 등)에 의해 구현된 추정 기법은 참조 군단의 비트만 사용되는 참조 군단 기반 구현예에서와 달리, 스케치의 모든 비트가 카디널리티 추정에 기여할 수 있도록 구현될 수 있다. 참조 군단을 선택하는 대신, 애그리게이터 컴퓨팅 디바이스는 스케치에서 각 비트의 가중치를 조정할 수 있고, 가중치 값은 스케치에서 최종 카디널리티 추정에 대한 비트의 기여도를 나타낸다. 스케치의 파라미터에 기초하여, 애그리게이터 컴퓨팅 디바이스는 스케치의 각 비트에 대한 최적의 가중치를 도출하여, 카디널리티 추정의 전체 정확도를 향상시킬 수 있다.
ADBF 구현예를 설명하기 위해 이 기술 솔루션은 몇 가지 대체 접근법을 설명하는 것으로 시작한다. 첫째, 확률적 카운팅 및 확률적 평균(PSCA)을 구현하는 스케치가 설명된다.
PSCA 기반 기법은 비트 맵 데이터 구조를 활용할 수 있다. 다음은 PCSA 3x2 비트 맵을 도시한다. 각 셀 값은 1 또는 0과 같은 비트일 수 있다. 여기서 일반 지정자 '행'과 '열'은 특정 셀의 위치를 설명하는데 사용된다. 행은 레지스터라고도 한다. PSCA 스케치에서 식별자는 비트 시퀀스에 기초하여 셀에 할당될 수 있다. 예를 들어, 각 행은 총 유니버스 식별자의 1 / nrows(이 예에서는 ⅓) 부분을 캡처할 수 있다. 열에는 전체 유니버스 식별자 중 기하 급수적으로 감소한 부분이 있을 수 있다. 예를 들어, 열 1은 ½을 가질 수 있고, 열 2는 ¼을 가질 수 있다. 따라서, 셀은 유니버스의 1 / nrows *(½) ^ column_id 부분을 캡처한다. 3x2 PSCA 스케치의 예시 표현이 아래에 포함된다.
Figure pct00024
3x2 PSCA 스케치 표현
PCSA 비트 맵은 아래 그림과 같이 비트 벡터로 플랫화될 수 있다. 벡터는 열 순서로 셀을 정렬한다. 제1 열로부터 3개 셀의 제1 세그먼트이다. 그들은 각각 1/6의 유니버스 ID를 캡처한다. 제2 열로부터 3개 셀의 제2 세그먼트이다. 그들은 각각 유니버스의 1/12를 캡처한다. 비트 맵과 비트 벡터는 동일하며, 서로 1-1 매핑될 수 있음이 분명하다.
Figure pct00025
3x2 PSCA 스케치의 플랫화된 표현
ADBF 스케치는 이러한 스케치의 일반화된 형태일 수 있다. ADBF 스케치는 아래 그림과 같이 유니버스의 모든 확률을 취할 수 있다.
Figure pct00026
ADBF 스케치의 플랫화된 표현
스케치의 각 포지션에 대한 확률 분포는 임의의 값으로 일반화될 수 있기 때문에 여기에 설명된 다른 구조가 그 결과로 나타날 수 있다. 예를 들어, 모든 확률 값이 1/m로 동일하게 가중치를 부여하면 클래식 블룸 필터 구현예가 되며, 여기서 m은 스케치의 포지션 수다. 마찬가지로 '폭포'와 같은 확률이 각 세그먼트에 할당되면, PSCA와 같은 스케치가 나타난다. 또한 지수 p 값이 사용되면 다음과 같다:
Figure pct00027
여기서 i는 스케치에서 포지션의 인덱스, c는 정규화 계수, m은 스케치의 포지션 수이며, 액체 군단 유형 스케치가 나타난다.
아래에 설명된 지수 블룸 필터 케이스는 우아한 통계 모델 및 해석을 통해 폐쇄형 최대 가능성 솔루션을 제공한다. 다음으로, 식별자로부터 ADBF 구성, 노이즈 추가, 하나의 ADBF의 고유 카운트 계산 및 여러 결합된 ADBF의 고유 카운트 계산을 포함하여 ADBF 및 일부 이론적 공식에 대해 설명한다. 블룸 필터, PCSA/CL 및 ADBF를 비교하기 위한 시뮬레이션 결과가 제공된다.
일반화된 블룸 필터(ADBF)는 다음과 같이 퍼블리셔 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(105A-N))에 의해 구성될 수 있다. kappa 파라미터는 값 1로 설정될 수 있지만, 1보다 작을 수 있는 조정 가능한 파라미터다. 데이터 프로세싱 시스템은 ADBF 데이터 구조를 구성하는데 활용하기 위해 하나 이상의 데이터 레코드(예: 식별자 및 속성 또는 특정 기준을 충족하는 식별자 등)에 액세스할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 구성된 ADBF 스케치에 삽입하는데 사용할 하나 이상의 데이터 레코드에 액세스하기 위해 데이터베이스(예를 들어, 데이터베이스(115) 등)에 액세스할 수 있다. ADBF 스케치는 데이터 프로세싱 시스템의 메모리에 유지될 수 있으며, 다른 스케치 구현예에 대한 진행 섹션에서 본 명세서에 기술된 초기화 값으로 초기화될 수 있다. 예를 들어, ADBF 스케치를 구성하는 절차는 계단식 군단 스케치 또는 액체 군단 스케치와 실질적으로 유사할 수 있으며, 데이터 프로세싱 시스템의 메모리에 저장되거나 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 또는 클라이언트 디바이스(120)로부터 수신된 파라미터에 기초될 수 있다.
구성 후, 데이터 레코드는 다음 기법을 사용하여 ADBF의 포지션에 매핑될 수 있다. ADBF 스케치는 여러 버킷 k와 i가 1에서 k까지의 범위에 있는 모든 p i 의 합이 kappa와 같은 임의의 확률 벡터(p 1 , p 2 ,…, p k )를 포함하도록 구성될 수 있다. kappa의 값은 1일 수 있지만 반드시 1일 필요는 없다. 확률 벡터는 확률 벡터의 각 좌표가 ADBF 스케치에서 단일 버킷 또는 레지스터에 할당될 수 있도록 한다. 데이터 레코드의 각 식별자(예를 들어, 데이터베이스(115)에 유지되는 데이터 레코드 등)는 확률 p i 로 ADBF 스케치의 버킷 i에 삽입될 수 있다. 실제로, h는 식별자 공간(예를 들어, 데이터 레코드 공간 등)을 균일하게(0, 2^64)로 매핑하는 데이터 프로세싱 시스템(105)에 의해 식별된 해시라고 하자. 그 다음 표현식
Figure pct00028
이 만족되면, 데이터 레코드 x를 버킷 i에 삽입할 수 있다. 데이터 레코드 세트의 경우(데이터 레코드는 "식별자"라는 용어와 상호 교환적으로 사용될 수 있음) 세트에 있는 적어도 하나의 데이터 레코드가 버킷 i에 삽입되면 대응 NBF에 엘리먼트 i = 1이고, 그렇지 않으면 0이다. 섹션 D에서 여기에 설명된 액체 군단 기법은 p i 가 지수 분포에 기초하여 결정되는 ADBF의 경우일 수 있다.
이 섹션에서 설명하는 BLIP 기법은 차등적 프라이버시 보호일 수 있다. 특히, ADBF + BLIP는 원시 NBF의 각 버킷을 플립핑하여 획득될 수 있다. 이진 0은 이진 1로 플립될 수 있고 이진 1은 동일한 확률 p로 이진 0으로 플립될 수 있다. 일부 구현예에서, 이진 0 값은 확률 p로 이진 1로 플립될 수 있고 이진 1 값은 확률 q로 이진 0으로 플립될 수 있다.
ABDF 스케치 유니온의 카디널리티는 이 섹션 아래에 설명된 식(1) 또는 (3)의 근을 찾아서 추정될 수 있다. 이 추정기는 예를 들어 하나 이상의 애그리게이터 컴퓨팅 디바이스(410) 또는 하나 이상의 작업자 컴퓨팅 디바이스(405)에 의해 수행될 수 있다. 이 섹션에서 설명하는 추정기 기법은 균일 및 지수와 같은 특수 분포에 대한 근사 솔루션(근사치 포함)을 가질 수 있으며, 이전 섹션에서 설명한 균일 및 지수 블룸 필터의 기존 추정기를 커버한다. 비트의 임의 확률 분포에 대해, 이 추정기는 폐쇄형 솔루션을 갖지 않을 수 있지만 여기에 설명된 컴퓨팅 디바이스에 의해 수치적으로 해결될 수 있다. 추정기는 추정기를 실행하는 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 등)의 메모리로부터 일련의 튜닝 파라미터를 포함하거나 검색할 수 있다. 카디널리티 추정기의 분산을 최소화하기 위한 최적의 파라미터는 아래에서 도출되고 설명된다.
본 명세서에 설명된 하나 이상의 컴퓨팅 디바이스에 의해 실행 또는 수행되는 추정기는 노이즈 없는 ADBF 스케치(예를 들어, 통합된 노이즈 없는 ADBF 스케치 등)를 중복 제거할 수 있다. 노이즈 없는 ADBF 스케치를 병합할 때 유니온 세트의 ADBF가 b = [b 1 , b 2 ,…, b k ]로 표시된다. 1 ≤ ik의 경우, 유니온의 적어도 하나의 데이터 레코드가 해당 버킷에 매핑되면 b i = 1이고, 그렇지 않으면 0이다. 모멘트의 방법은 b 1 , b 2 ,…, b k 로부터 유니온을 추정하는데 사용될 수 있다. p i 는 데이터 레코드가 버킷 i에 매핑될 확률을 나타내는데 사용된다. u의 유니온 카디널리티를 고려하면, u 데이터 레코드가 버킷 i에 포함되지 않을 확률은 (1-p i )u와 같다. 즉, P(b i = 0) = (1 - p i )u이고, 따라서 E(b i = 1|u) = 1 - (1 - pi)u다. 따라서 예상치를 가진 총 수는
Figure pct00029
이다. 따라서, 관찰된 bi를 연결하고, 다음 식을 다시 풀면 u의 추정치를 얻을 수 있다.
식 1:
Figure pct00030
통계 용어를 사용하면, "통계
Figure pct00031
에 따라, 비트 확률 분포 p i (1 ≤ i ≤ m)에서 u의 모멘트 추정기"라고 할 수 있다. 일반 분포 p i (1 ≤ i ≤ m)의 경우, 추정기는 폐쇄형 솔루션이 없을 수 있다. 그러나 균일 및 지수 분포와 같은 특정 분포의 경우, 추정기는 이전 섹션에서 위에서 설명한 추정기와 정확하게 일치하는 근사 솔루션을 가질 수 있다.
당업계에 알려진 바와 같이, 표현
Figure pct00032
은 x가 무한대에 가까워지면 e -1 로 간다. 따라서, 각 p i 가 충분히 작을 때(예: 매우 작지만 0은 아님 등),(1-p i )1/pi는 대략 e -1 이고, (1-p i )u는 대략 exp(-p i u)이다. 이 근사를 통해 식(1)을 식(2)로 줄일 수 있다.
Figure pct00033
여기서 y =
Figure pct00034
은 블룸 필터의 1의 수이다.
균일 블룸 필터의 경우, 각 p i = 1/k이고 식(2)의 해는 다음과 같다.
Figure pct00035
이 식은 균일 블룸 필터에 대한 유니온의 추정기일 수 있다.
지수 일반화 블룸 필터의 경우, 각 p i = -cln(i/k)이며, 여기서 c는 정규화 상수다. k가 충분히 크면
Figure pct00036
적분은 partus에 의한 적분을 통해 해결될 수 있다. 따라서, exp(-p i u) = exp[(1/k) ln(i/k)u] = (i/k)u/k, 그리고 따라서,
Figure pct00037
이 경우, 식 (2)는 k / (u/k + 1) = k - y, 즉, u/k + 1 = k/(k-y)로 감소되며, u = ky / (k - y) = y / (1 - y/k)이다. 이것은 식(3)에 주어진 해일 수 있다.
쌍곡선 일반화 블룸 필터의 경우, 각
Figure pct00038
, 여기서 a는 미리 지정된 비율이고 c는 정규화 상수다. k가 충분히 크면:
Figure pct00039
[0001]
Figure pct00040
이면,
Figure pct00041
, 그리고 그 후,
Figure pct00042
=
Figure pct00043
=
Figure pct00044
=
Figure pct00045
]
=
Figure pct00046
,
여기서
Figure pct00047
는 지수 적분 함수다. 따라서 식(2)는
Figure pct00048
로 감소되고, Ei 함수의 구현을 사용하여 b의 근을 풀 수 있다. u의 값은 u = abk / [1 - exp(-a)]로 추정될 수 있다.
위의 유도를 요약하면, 식(1)은 비트 분포 p i (1 ≤ i ≤ m)에서 유니온 추정에 대한 개요를 제공한다. 추정치는 통계
Figure pct00049
의 기대치에 기초하여 모멘트 방법을 기반으로 얻거나 도출될 수 있다. 추정기는 균일하고 지수적인 ADF에 대한 적어도 근사 형태 솔루션을 가지고 있으며, 이렇게 얻어지거나 도출된 근사 형태는 본 명세서에 기술된 섹션 A-D에서 설명한 추정기일 수 있다.
또 다른 비트 분포의 ADBF, p i = c(i/k), c는 정규화 상수다. 이 분포에서 비트 확률은 비트 인덱스 i의 선형 함수로 감소될 수 있다. 이 ADBF에 대한 폐쇄형 추정기도 있다. 첫째, k가 충분히 클 때 정규화 상수
Figure pct00050
. 그 후,
Figure pct00051
여기서 a = 2u/k. 따라서 식(2)는
Figure pct00052
인 경우 유지할 수 있다. 이것은 u의 초월적 함수일 수 있으며, 폐쇄형 솔루션이 없을 수도 있다. 그러나 이것은 u의 단조 함수로 주어질 수 있기 때문에 수치적으로 풀어질 수 있다. 일반적으로 식(2)는 u의 단조 함수로 주어질 수 있으므로, 이분법 방법을 사용하여 풀어질 수 있다.
특히, 작업자 컴퓨팅 디바이스(405) 또는 애그리게이터 컴퓨팅 디바이스(410)에 의해 실행되는 무-노이즈 ADBF에 대한 추정기는 bi의 각각에 가중치를 추가함으로써 더 확장될 수 있다. 유니온 세트의 원시 블룸 필터가
Figure pct00053
로 표현되는 경우 유니온 추정을 고려한다. 위에서 설명한 추정기는 총 비트의 예상 값
Figure pct00054
사이의 관계를 활용한다. 이러한 구현예에서, 모든 비트는 확률이 가장 높은 비트에서 가장 확률이 낮은 비트까지 동일하게 가중치를 부여할 수 있다. 이것은 균일하지 않은 블룸 필터에는 효율적이지 않을 수 있다. 비-균일 블룸 필터를 구현하는 기법에서, 처음 몇 비트에 대한 확률(
Figure pct00055
)은 모든 비트의 평균(
Figure pct00056
)보다 훨씬 높을 수 있고, 마지막 몇 비트에 대한 확률은 평균보다 훨씬 낮을 수 있다. 따라서 블룸 필터 스케치가 절반이 찼을 때, 처음 몇 비트는 1과 같고 마지막 몇 비트는 0과 같을 가능성이 있다. 그러한 구현예에서, 스케치의 양쪽 끝에 있는 비트는 거의 정보를 전달할 수 없는 반면, 스케치 중간의 패턴은 카디널리티 추정(예: 참조 군단의 선택 등)에 초점이 맞춰질 수 있어야 한다. 따라서, 가중화된 합산 모멘트
Figure pct00057
에 기초한 추정치는 직접 합계
Figure pct00058
대신, 다른 카디널리티 추정 시스템에 비해 개선된 카디널리티 추정 체계의 정확성과 유연성을 향상시킬 수 있다.
Figure pct00059
와 같이,
Figure pct00060
에 기초한 방법의 모멘트는 아래 식(3)의 근으로서
Figure pct00061
의 추정치를 제공할 수 있다:
Figure pct00062
일부 구현예에서, 가중치
Figure pct00063
는 상수일 수 있다. 가중치가 상수 값이라고 하면,
Figure pct00064
Figure pct00065
다. 따라서 위의 식(3)은
Figure pct00066
과 같이 다시 작성될 수 있다.
Figure pct00067
은 랜덤 변수일 수 있다. 사실, 특정 가정 하에서,
Figure pct00068
Figure pct00069
분산을 가진 변수일 수 있다. 이 경우, 델타 방법은
Figure pct00070
의 분포가
Figure pct00071
근(예:
Figure pct00072
등)의 분포를 결정할 수 있다.
Figure pct00073
Figure pct00074
Figure pct00075
을 가진 랜덤 변수일 수 있다. 충분히 큰
Figure pct00076
를 고려하면,
Figure pct00077
. 여기서
Figure pct00078
은 진정한 유니온을 나타낼 수 있다.
Figure pct00079
단순화를 위해 Delta 방법으로
Figure pct00080
.
이 분포에서,
Figure pct00081
Figure pct00082
의 값은 위에 설명되어 있으며,
Figure pct00083
.
위를 고려하면,
Figure pct00084
여기서 행렬
Figure pct00085
Figure pct00086
for any
Figure pct00087
Figure pct00088
for any
Figure pct00089
그리고 벡터
Figure pct00090
각 엘리먼트
Figure pct00091
를 가질 수 있다.
최적의 가중치 벡터는 다음과 같다:
Figure pct00092
이 가중치 하에서
Figure pct00093
.
또한,
Figure pct00094
Figure pct00095
의 함수로 최소화될 수 있다.
그들의 스케치의 차별화된 프라이버시를 유지하기 위해, 각각의 퍼블리셔 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(105A-N) 등)는 미리 결정된 확률로 특정 비트를 플립할 수 있다. 여기서 노이즈를 추가하기 위해 비트를 플립하는 프로세스를 '블리핑'이라고 할 수 있으며, 확률적 비트 플립을 통해 노이즈가 도입된 스케치를 '블리핑된'이라고 한다. 애그리게이터 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 등)에 의해 구현된 추정기는 추가로 확장되어 데이터 프로세싱 시스템(105)에 의해 생성된 노이징된(예: 블리핑된) ADBF 스케치의 유니온의 카디널리티를 정확하게 계산할 수 있다.
데이터 프로세싱 시스템(105)에 의해 생성된 ADBF는 블리핑될 수 있다. 따라서 위에서 설명한 원시 ADBF에 기반한 추정기는 직접 적용되지 않을 수 있다. 이러한 구현예에서, 애그리게이터 컴퓨팅 디바이스는 유니온 세트의 원시 ADBF를 추정할 수 있다(예: 마지막 두 하위 섹션의
Figure pct00096
벡터 등). 노이징된 블룸 필터가
Figure pct00097
로 표현되고, 블립 확률(예: ADBF 스케치에서 주어진 '0'비트가 '1'로 플립될 확률 및 ADBF 스케치에서 주어진 '1'비트가 '0'으로 플립될 확률, 등)이
Figure pct00098
라고 가정하면,
Figure pct00099
벡터는 애그리게이터 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410) 등)에 의해 다음과 같이 추정될 수 있다:
Figure pct00100
추정된
Figure pct00101
벡터는 노이징된(예: 블립핑된) 스케치의 유니온 크기
Figure pct00102
를 추정하기 위해 본 명세서에 상기 기술된 식(1) 또는 식(3)과 함께 사용될 수 있다.
노이즈는 추정기에 분산을 더 추가할 수 있다. 노이즈를 사용하면 추정기의 분산을
Figure pct00103
로 나타낼 수 있고, 여기서 벡터
Figure pct00104
Figure pct00105
로 나타낼 수 있고, 행렬
Figure pct00106
Figure pct00107
로 나타낼 수 있고,
Figure pct00108
는 상기 벡터이다.
분산을 구한 다음 분산을 최소화하는 최적의 가중치를 얻으려면, 각
Figure pct00109
을 구하는 것으로 충분하다. 그러나, 이러한 공분산은 더 이상 유니온 도달 범위만으로 결정될 수 없다. 서로 다른 ADBF 간의 상관 관계에 의존하며, 이러한 상관 관계는 전체 벤 다이어그램에 따라 달라진다.
퍼블리셔 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(105) 등) 각각에 걸친 식별자(예를 들어, 데이터 레코드)의 멀티세트의 유니온에 걸친 노이즈의 분산 분석은 각 데이터 프로세싱 시스템(105) 간의 데이터 레코드의 각 세트의 오버랩에 기초하여 달라질 수 있다. 서로 다른 데이터 프로세싱 시스템의 데이터 레코드 간의 분산 분석을 지원하기 위해, 다음 표기를 고려한다.
Figure pct00110
Figure pct00111
번째 데이터 프로세싱 시스템(105)(예: 데이터 프로세싱 시스템(105V) 등)에서 얻은 ADBF 스케치 데이터 레코드의 카디널리티다.
Figure pct00112
Figure pct00113
번째 데이터 프로세싱 시스템으로부터 획득된 노이즈 없는 ADBF의
Figure pct00114
번째 비트이다.
Figure pct00115
Figure pct00116
번째 데이터 프로세싱 시스템으로부터 획득된 노이징된 ADBF의
Figure pct00117
번째 비트이다(
Figure pct00118
는 고정 확률
Figure pct00119
Figure pct00120
를 플립함으로써 획득된다).
다음 식과 도출은 분산이 멀티세트 카디널리티 추정에 미치는 영향을 이해하는데 도움이 될 수 있다. 유니온의 추정 ADBF,
Figure pct00121
은 그
Figure pct00122
번째 엘리먼트로
Figure pct00123
과 같이 정의된다.
따라서, 독립적인 카디널리티 시나리오에서,
Figure pct00124
Where,
Figure pct00125
Thus,
Figure pct00126
Consider:
Figure pct00127
Where,
Figure pct00128
Figure pct00129
Figure pct00130
Figure pct00131
Figure pct00132
Figure pct00133
Figure pct00134
Figure pct00135
Thus:
Figure pct00136
Now consider:
Figure pct00137
Figure pct00138
Figure pct00139
Figure pct00140
where for any data processing system
Figure pct00141
:
Figure pct00142
Because
Figure pct00143
consider:
Figure pct00144
Consider also:
Figure pct00145
Hence:
Figure pct00146
Put together:
Figure pct00147
Put together:
Figure pct00148
Put together:
Figure pct00149
which can equal
Figure pct00150
이것은 추정기의 편견없음과 일치한다. Put together:
Figure pct00151
요약하면 다음과 같습니다.
Figure pct00152
Figure pct00153
Figure pct00154
이 공식의 분석을 따르면:
Figure pct00155
유니버스가 크다고 생각하면:
Figure pct00156
여기서
Figure pct00157
은 카디널리티의 진정한 유니온이다. 추가 고려:
Figure pct00158
유니버스가 크다고 고려하면:
Figure pct00159
노이즈 없는 경우의 공분산과 동일할 수 있다.
다음은 데이터 프로세싱 시스템(105A-N), 작업자 컴퓨팅 디바이스(405A-N), 애그리게이터 컴퓨팅 디바이스(410), 클라이언트 디바이스(120A-N) 또는 본 명세서에 기술된 임의의 다른 컴퓨팅 디바이스에서 구현될 수 있는 알고리즘 구현 및 의사 코드를 포함한다. 또한, 데이터 프로세싱 시스템(105A-N), 시스템(100), 시스템(400A-C)의 임의의 컴포넌트 및 그의 임의의 컴포넌트는 이 섹션에서 상세히 설명된 임의의 기능을 수행할 수 있다.
ADBF 스케치가 m 비트를 갖도록 생성되었다고 가정한다. 균일(예를 들어, 정상 블룸 필터) 및 지수 블룸 필터(예를 들어, 액체 군단 등)에 대한 0, 1,…, m-1에서 i에 대한 확률 값 pi는 데이터 프로세싱 시스템(105)에 의해 생성된 또는 네트워크(110)를 통해 외부 컴퓨팅 디바이스(예를 들어, 여기에 설명된 임의의 컴퓨팅 디바이스 등)에 의해 제공된 미리 결정된 값이고, 데이터 프로세싱 시스템(105)의 메모리 또는 이 섹션에서 설명된 기능을 수행하는 임의의 다른 컴퓨팅 디바이스에 저장된다. 지수 블룸 필터 구현예의 경우, kappa = 1 값을 간단하게 사용할 수 있지만, 일부 구현예에서 다른 값도 사용될 수 있다.
각각의 pi 값을 생성하는 하나 이상의 구현예가 아래 의사 코드로 제공된다:
if method == 'exponential':
p = -np.log((np.arange(bit_size) + 1) / bit_size)
if method == 'uniform':
p = np.ones(bit_size)
p = p/sum(p)
데이터 레코드 세트의 경우, 다음 예시적 의사 코드에 설명된 대로 정규화된 값을 계산하여 ADBF 비트 포지션에 추가될 수 있다.
# Map ids into normalized values.
values = hash64(ids) / 2^64
# Value bounds for bits.
bit_bounds = np.cumsum(p)
# Identify the bit index for values.
bit_indices = np.searchsorted(bit_bounds, values)
# Set the respective bit for each id.
ADBF = np.zeros(bit_size)
for i in bit_indices:
ADBF[i] = 1
주어진 ADBF 스케치의 경우, 스케치에 추가되었던 고유 데이터 레코드의 수는 스케치의 1 비트 수에 기초하여 추정될 수 있다. 이것은 다음 예시 의사 코드로 기술된다:
def _UniqueCountFromOnes(ones, bit_size, method):
if method == 'exponential':
return ones / (1 - ones/bit_size)
elif method == 'uniform':
return np.log(1 - ones / bit_size) / np.log(1- 1 / bit_size)
확률 p로 비트를 플립핑하여 각 스케치에 노이즈를 추가할 수 있다. 비트가 플립되는 확률 p는 앞에서 설명한 확률 할당 pi와 상이하다. ADBF 스케치에 대해 무작위로 플립된 비트는 차등 프라이버시를 안전하게 만들 수 있다. 비트 플립 프로세스는 다음과 같은 의사 코드 예시로 기술될 수 있다:
# blip: the probability to flip: 1 -> 0; and 0-> 1
def Flip(ADBF, flip):
for i in np.arange(len(ADBF)):
if np.random.uniform() < flip:
if ADBF[i] == 1:
ADBF[i] = 0
else:
ADBF[i] = 1
일부 구현예에서, 상기 구현예는 별도의 확률이 '0'비트를 '1'비트로 플립하고 '1'비트를 '0'비트로 플립할 수 있도록 확장될 수 있다. 이러한 구현예는 아래의 의사 코드 예시에서 보여진다:
def Flip(ADBF, flip0to1_prob, flip1to0_prob):
"""Can be more efficient than for-loop.
"""
num_bits = len(ADBF)
flip0to1 = np.random.choice([True, False], size=num_bits,
p=[flip0to1_prob, 1 - flip0to1_prob])
flip1to0 = np.random.choice([True, False], size=num_bits,
p=[flip1to0_prob, 1 - flip1to0_prob])
return ADBF * (1 - flip1to0) + (1 - ADBF) * flip0to1
확률 p로 플립된 비트를 통해 소개된 노이즈를 가진 주어진 ADBF 스케치의 경우, 스케치에 추가되었던 고유 데이터 레코드의 수는 스케치의 1 비트의 수정된 수에 기초하여 추정될 수 있다. 이는 다음과 같은 의사 코드 예시로 보여진다:
def _UniqueCount(ADBF, blip=None, method='exponential'):
one_bits = sum(ADBF)
zero_bits = len(ADBF) - one_bits
bit_size = len(ADBF)
if blip:
q = 1-blip
corrected_one_bits = (q*one_bits - blip*zero_bits) / (q - blip)
return _UniqueCountFromOnes(corrected_one_bits, bit_size, method)
다음 기법은 임의의 수(예를 들어, m) 데이터 프로세싱 시스템(105)에 걸쳐 데이터 레코드 세트를 중복 제거하기 위해 슬라이스 내의 모든 0의 수를 계산할 수 있다. 슬라이스는 m 퍼블리셔의 비트 포지션에 대한 m 비트 벡터일 수 있다. 슬라이스가 m 개의 데이터 프로세싱 시스템의 모든 0 비트를 가진 경우, 이 슬라이스에 기여한 데이터 레코드는 없다. 목표는 노이징된 관측치가 주어졌을 때 모두 0 비트 슬라이스(all-zero-bits-slices)의 수를 추정하는 것이다. 이를 수행하는 방법의 예는 다음 의사 코드와 같다:
def _ComputeOnesFromPubs(ADBFs, blip, verbose=False):
"""Correct number of ones."""
m = len(ADBFs)
# Compute counts of bit positions for slices of 1 one, 2 ones, 3 ones, etc.
sum_ADBF = functools.reduce(lambda a, b: a + b, ADBFs.values())
unique_values, freq_count = np.unique(sum_ADBF, return_counts=True)
freqs = np.zeros(m+1)
freqs[[int(v) for v in unique_values]] = freq_count
q = 1 - blip
s = 0
for k in np.arange(m+1):
s += np.power(q, m-k) * np.power(-blip, k) * freqs[k]
n0 = s/np.power(q-blip, m)
return len(ADBFs[0]) - n0
그 후, 여러 데이터 프로세싱 시스템에서 ADBF 스케치를 생성하는데 사용되는 데이터 레코드의 유니온을 계산할 수 있다. 아래에 포함된 예시적 의사 코드는 많은 데이터 프로세싱 시스템의 '블리핑된' ADBF 스케치에서 데이터 레코드의 유니온을 나타내는 스케치 생성을 결정하는 적어도 하나의 방법을 구현한다.
def EstimateUnionADBFFromPubs(ADBFs, blip0to1_probs_arr, blip1to0_probs_arr):
"""Each ADBF can be a numpy array.
"""
num_pubs = len(ADBFs)
num_bits = len(ADBFs[0])
d_vector = np.ones(num_bits)
for j in range(num_pubs):
d_vector *= (- blip1to0_probs_arr[j] * ADBFs[j] +
(1 - blip1to0_probs_arr[j]) * (1 - ADBFs[j]))
return d_vector / np.prod(1 - blip1to0_probs_arr - blip0to1_probs_arr)
다음은 본 명세서 및 이전 섹션에서 설명된 다양한 확률 데이터 구조의 중복 제거된 빈도를 계산하기 위한 본 명세서에 기술된 작업자 컴퓨팅 디바이스 또는 애그리게이터 컴퓨팅 디바이스(예를 들어, 작업자 컴퓨팅 디바이스(405), 애그리게이터 컴퓨팅 디바이스(410 등))에 의해 사용 가능한 다양한 구현예 및 프로세스에 대한 설명을 포함한다. 전술한 바와 같이, 애그리게이터 컴퓨팅 디바이스(410) 또는 작업자 컴퓨팅 디바이스(405)와 같은 애그리게이터 컴퓨팅 디바이스는 다양한 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105A-N) 등)로부터 하나 이상의 데이터 구조를 수신할 수 있다. 이러한 각 데이터 구조는 하나 이상의 속성을 포함하는 식별자를 표현할 수 있다. 예를 들어, 이러한 속성은 인터렉션에 할당되거나 연관된 디바이스 별 온라인 활동 또는 인터렉션을 설명할 수 있다. 데이터 레코드(예를 들어, 데이터 레코드(122) 등)은 각각의 데이터 프로세싱 시스템(105)에 의해 유지될 수 있다. 애그리게이터 컴퓨팅 디바이스(410) 또는 작업자 컴퓨팅 디바이스(405)는 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105))로부터 수신된 데이터 구조의 구성에 의해 표현된 정보에 기초하여 식별자의 속성의 빈도를 계산할 수 있다. 여기에 설명된 바와 같이, 계산될 수 있는 하나의 메트릭은 많은 식별자 서버에 걸쳐 유지되는 식별자의 빈도 속성이다. 예를 들어, 특정 유형의 콘텐츠와 특정 유형의 온라인 활동(예를 들어, 인터렉션)을 수행한 특정 그룹의 식별자에 대해 빈도가 계산될 수 있다. 위에서 설명한 방법과 같이 스케치를 집합하는 다양한 방법 또는 순서가 아래에 포함된다.
적어도 하나의 방법은 데이터 프로세싱 시스템(105)에 의해 애그리게이터 컴퓨팅 디바이스(410)(또는 경우에 따라 작업자 컴퓨팅 디바이스(405))로 전송되는 각 데이터 구조에 기여하는 식별자의 도달 범위가 실질적으로 독립적이라고 가정한다. 이러한 방법은 데이터 프로세싱 시스템(105)으로부터 수신된 데이터 구조의 순차적 중복 제거를 구현할 수 있으며, 아래의 컨볼루션 프로세스를 통해 설명될 수 있으며, 여기서 fi는 i 번째 데이터 프로세싱 시스템의 빈도 분포이다. 이러한 구현예에서, 빈도는 f1_2 =(f1 * f2)(k)와 같이 반복적으로 결정될 수 있고, 여기서 k는 원하는 빈도 속성 값(예: 특정 콘텐츠 아이템과 k번 이상 인터렉션한 고유 식별자의 수 k)이다. 빈도 분포 데이터 구조를 집합시키는 컴퓨팅 디바이스는 예를 들어, f1_2_3 =(f1_2 * f3)(k) 등의 프로세스를 각 식별자 서버(예: 데이터 프로세싱 시스템(105))로부터 빈도 분포가 결정될 때까지 수행할 수 있다.
이러한 구현예에서, 데이터 프로세싱 시스템(105) 각각에 의해 전송된 스케치는 본 명세서에서 전술한 바와 같이 애그리게이터 컴퓨팅 디바이스(410) 또는 작업자 컴퓨팅 디바이스(405)에 의해 순차적으로 결합될 수 있다. 이 방법의 간결한 설명을 돕기 위해, 다음 작업이 스케치와 함께 사용되어 스케치가 나타내는 데이터 레코드 세트에 대한 다양한 세트 동작을 표시한다. 이러한 작업은 인터섹션(
Figure pct00160
), 유니온(
Figure pct00161
) 또는 설정 차이(\)를 포함할 수 있다.
두 개의 식별자 서버(예를 들어, 두 개의 데이터 프로세싱 시스템(105))를 고려한다. 제1 데이터 프로세싱 시스템(105)은 스케치
Figure pct00162
를 전송하고, 제2 데이터 프로세싱 시스템(105)은
Figure pct00163
을 전송한다. 각 퍼블리셔의 모든 스케치가 분리된 세트에서 나온 것이므로 1개 이상의 도달 범위의 스케치를 쉽게 얻을 수 있다. 예를 들면,
Figure pct00164
Figure pct00165
.
다음으로, 애그리게이터 컴퓨팅 디바이스(410) 또는 작업자 컴퓨팅 디바이스(405)는 제1 데이터 프로세싱 시스템(105) 및 제2 데이터 프로세싱 시스템(105)으로부터 수신된 두 스케치의 유니온의 도달 빈도를 추정할 수 있다.
예를 들어,
Figure pct00166
의 경우, frequency j의 유니온 도달 범위는 다음 교차 추정치에서 비롯된다(그리고 서로 분리되어 있다).
Figure pct00167
Figure pct00168
, 및
Figure pct00169
.
Figure pct00170
Figure pct00171
에 대해,
Figure pct00172
또는
Figure pct00173
는 더 분해해야 될 수 있다. 예를 들면:
Figure pct00174
.
Figure pct00175
.
따라서 빈도 = j 의 카디널리티는
Figure pct00176
빈도> = k의 경우, 빈도의 유니온 도달 범위는 다음 교차점에서 발생한다:
Figure pct00177
,
Figure pct00178
,
Figure pct00179
,
…,
Figure pct00180
, …,
Figure pct00181
,
Figure pct00182
, =
Figure pct00183
.
Figure pct00184
, …,
Figure pct00185
,
Figure pct00186
, =
Figure pct00187
.
Figure pct00188
의 경우, 추가로 다음과 같이 분해된다:
Figure pct00189
모든 조각별 카디널리티 추정치가 주어지면, k+ 도달 범위는 합산, 결합 또는 계산될 수 있다. 둘 이상의 퍼블리셔로 확장하는 것은 스케치를 병합한 다음 여기에서 전술한 바와 같이 제3 식별자 서버(예를 들어, 데이터 프로세싱 시스템(105))로 중복 제거를 수행하는 것을 포함할 수 있다. 병합 작업은 다음과 같다:
Figure pct00190
, for j=1:k-1.
둘 이상의 스케치를 병합하는 다른 방법 중 하나 이상은 Chow-Liu 모델에 기초할 수 있다. 이 방법은 예를 들어 애그리게이터 컴퓨팅 디바이스(410) 또는 작업자 컴퓨팅 디바이스(405)를 포함하여 여기에 설명된 임의의 컴퓨팅 디바이스에 의해 구현될 수 있다. 본 명세서에서 사용된 바와 같이, 함수 R은 도달 범위를 나타내고 f1,…, fs는 각 데이터 프로세싱 시스템(105)에서 각 식별자의 빈도를 나타낸다. 이와 같이:
Figure pct00191
예를 들면:
Figure pct00192
Figure pct00193
Figure pct00194
Figure pct00195
Figure pct00196
.
R(f1 = j1, f2 = j2,…, fs = js) 형식의 각 항은 Chow-Liu 모델을 사용하여 추정될 수 있다:
Figure pct00197
Figure pct00198
,
which implies that
Figure pct00199
Figure pct00200
이것은 식별자 서버 s
Figure pct00201
의 선형 트리 아래에 있는 Chow-Liu 모델일 수 있다. 한계 도달 거리와 양방향 교차점은 위의 방정식에 포함된다. 따라서 각 식별자 서버는
Figure pct00202
모든 식별자 및 속성(본 명세서에서 "id"라고도 함)을
Figure pct00203
로 알고 있고, 그들은 이들 ID의 것을 나타내는 암호화되거나 프로세싱된 데이터 구조를 전송할 수 있으며, 그 다음 여기에서 위와 아래에 설명된 추정기를 사용하여 방정식(1)의 모든 항을 얻을 수 있다. 임의의
Figure pct00204
의 경우,
Figure pct00205
를 가진 ID는 데이터 레코드(122)로부터 식별될 수 있다. 그러나, 각각의 데이터 프로세싱 시스템(105)은 빈도 = 0인 모든 ID를 알지 못할 수 있다. 데이터 프로세싱 시스템(105)은 데이터 레코드의 공통 목록을 공유하지 않을 수 있다. 데이터 프로세싱 시스템(105A)에 의해 유지되는 데이터 레코드(122)가 아닌 이러한 레코드는 데이터 프로세싱 시스템(105A)에서 빈도 = 0으로 할당되어야 하지만, 데이터 프로세싱 시스템(105A)은 이러한 ID를 나타내는 데이터를 유지하거나 가질 수 없다.
이 문제는
Figure pct00206
에 유의하여 해결할 수 있다.
Figure pct00207
이 표현하는 데이터 구조가 획득될 수 있으므로
Figure pct00208
Figure pct00209
이면 추정될 수 있다.
Figure pct00210
중에 0이 여러 개있는 경우, 0과 0이 아닌 j는 분리될 수 있다.
Figure pct00211
동안
Figure pct00212
라고 가정한다. 선형 트리의 Chow-Liu 모델
Figure pct00213
Figure pct00214
Figure pct00215
그리고 그 다음,
Figure pct00216
이와 같이,
Figure pct00217
를 포함하는 용어는
Figure pct00218
까지
Figure pct00219
를 표현하는 데이터 구조를 사용하여 계산될 수 있고, 이들은 첫 번째를 제외한 모든 용어이다. 제1 용어,
Figure pct00220
는, 두 세트의 중복 제거
Figure pct00221
Figure pct00222
이다. 이 두 세트를 중복 제거하기 위해, 데이터 프로세싱 시스템(105)에 의해 전송된 데이터 구조
Figure pct00223
는 데이터 프로세싱 시스템(105)
Figure pct00224
으로부터 직접 도출된다. 세트을 나타내는 데이터 구조
Figure pct00225
는 반면에,
Figure pct00226
까지
Figure pct00227
를 나타내는 데이터 구조를 병합하여 추정될 수 있다. 이와 같이,
Figure pct00228
이 추정될 수 있다. 이 방법의 비제한적인 구현예 및 예시는 다음 예시적 의사 코드에서 설명된다.
freq_combinations = FindCombinations(frequency_target, num_servers)
# Using our notations, this is to find all combinations of j1, j2, ..., js
target_freq_reach = 0
for freq_combination in freq_combinations:
  zero_servers, nonzeros_servers = FindZeros(freq_combination)
  # zero_servers and non_zeros_servers are indices lists of the servers with j=0 and j>0 respectively
  data_structure_to_dedup_with = np.zeros(num_buckets)
  for server_index in zero_servers:
    data_structure_to_dedup_with = Merge(data_structure_to_dedup_with, GetOnePlusData_structure(server_index))
  # Then dedup with the first pub with non-zero frequency
  first_nonzero_server_index = nonzeros_servers[0]
  data_structure_firstnon_zero_server = GetData_structureAtCertainFreq(
                 first_nonzero_server_index, freq_combination)
  intersection = sum(Data_structure_first_nonzero_server) - EstimateOverlap(data_structure_to_dedup_with, data_structure_first_non_zero_server)
  # Then multiply R(fr+2=jr+2,  fr+1=jr+1) / R(fr+1=jr+1) up to R(fs=js,  fs-1=js-1) / R( fs-1=js-1) in equation (2)
  for server_index in remaining_nonzero_servers:
    overlap_rate = EstimateOverlap(previous_data_structure, current_data_structure)
    intersection  *= overlap_rate
  target_freq_reach += intersection
return target_freq_reach
# Final estimate of R(f1+f2++fs=k)
예를 들어, 차등 프라이버시는 본 명세서에서 위에서 설명된 차등 프라이버시 기반 방법 중 하나를 사용하여 도입될 수 있다. 예를 들어, 각각의 데이터 프로세싱 시스템(105)은 본 명세서에서 전술한 바와 같이 각각의 데이터 프로세싱 시스템(105)에 의해 전송된 k + 1 스케치에 차등적 비공개 노이즈를 추가할 수 있다.
본 발명의 구현예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 구현예들은 하나 이상의 컴퓨터 프로그램들 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 컴포넌트들로서 구현될 수 있다. 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스 또는 그들의 임의의 조합이거나 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지를 포함할 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트 또는 매체(예를 들면, 다수의 CD, 디스크, 플래시 메모리, 솔리드 스테이트 메모리 또는 다른 저장 디바이스)이거나 또는 그에 포함될 수 있다.
본 명세서에 개시된 구성은 랩톱 컴퓨터 또는 다른 개인용 컴퓨터, 스마트폰, 다른 모바일폰, 핸드 헬드 컴퓨터, 태블릿 PC 또는 기타 컴퓨팅 디바이스에서 구현될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 또는 다른 소스들로부터 수신된 데이터에서 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "데이터 프로세싱 장치", "데이터 프로세싱 시스템", "사용자 디바이스", "클라이언트 디바이스", "작업자 디바이스", "작업자", "작업자 컴퓨팅 디바이스", "퍼블리셔" 또는 “컴퓨팅 디바이스"는 예시로서 프로그래머블 프로세서, 컴퓨터, 시스템 온 칩 또는 앞서 언급된 것들 중 다수의 것들 또는 조합들을 포함하는 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 실행 환경, 가상 머신 또는 그들의 임의의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일된 또는 인터프리트된 언어들, 선언적, 기능적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 객체로서 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하는 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들이나 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들을 가지는 파일의 부분에, 문제되는 프로그램 전용 단일의 파일에 또는 다수의 조정된 파일들, 예를 들어, 하나 이상의 모듈들, 서브프로그램 또는 코드의 일부를 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되어 있거나 다수의 사이트들에 걸쳐서 분산되어 있고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예시로서, 범용 및 전용 마이크로프로세서들과 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 엘리먼트들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들을 포함한다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스 예를 들면, 자기적, 자기-광학 디스크, 플래시 메모리, 솔리드 스테이트 드라이브 또는 광학적 디스크 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 기술된 본 발명의 구현예들은 사용자에게 정보를 디스플레이하기 위해 예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 인터렉션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 포함할 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써 예를 들어, 웹브라우저로부터 수신된 요청에 응답하여, 사용자의 사용자 디바이스상의 웹브라우저에 웹페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
본 명세서에서 기술된 발명의 구현예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트, 애플리케이션 서버와 같은 미들웨어 컴포넌트 또는 그래픽 사용자 인터페이스를 가지는 사용자 컴퓨터 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹 브라우저와 같은 프론트엔드 컴포넌트 또는 하나 이상의 상기 백엔드, 미들웨어 또는 프론트엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)를 포함한다.
데이터 프로세싱 시스템(600)과 같은 컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(105)은 적어도 하나의 데이터 센터 또는 서버 팜에 위치된 복수의 서버들 포함할 수 있다. 사용자와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 인터렉션한다. 사용자와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 사용자-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 일부 구현예에서, 서버는(예를 들어, 사용자 디바이스와 인터렉션하는 사용자에게 데이터를 디스플레이하고 사용자 입력을 수신하기 위해) 사용자 디바이스에 데이터(예를 들어, HTML 페이지)를 전송한다. 사용자 디바이스에서 생성된 데이터(예를 들어, 사용자 인터렉션의 결과)는 서버에서 사용자 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 본 구현예의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 본 명세서에 기술된 시스템 및 방법의 특정한 구현예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 구현예의 맥락에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 구현예에서 조합하여 구현될 수 있다. 반대로, 단일 구현예의 맥락에서 기술된 다양한 구성들은 또한 다수의 구현예에서 개별적으로 또는 임의의 적합한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다.
특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 구현예에서 다양한 시스템 컴포넌트들의 분리는 모든 구현예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다. 예를 들면, 데이터 프로세싱 시스템(105)은 단일 모듈, 하나 이상의 프로세싱 모듈을 갖는 논리 디바이스, 하나 이상의 서버 또는 클라우드 컴퓨팅 환경의 일부일 수 있다.
일부 예시적 구현 및 구현예들을 설명하였지만, 전술한 예는 예시적인 것이며 제한적인 것은 아니며 예시로서 제시되었다. 특히, 본 명세서에 제시된 많은 예들이 방법 동작들 또는 시스템 엘리먼트들의 특정 조합을 포함하지만, 그러한 동작들 및 엘리먼트들은 동일한 목적을 달성하기 위해 다른 방식으로 결합될 수 있다. 하나의 구현예와만 관련하여 논의된 동작, 엘리먼트 및 구성들은 다른 구현예들에서 유사한 역할로부터 배제되지 않는다.
본 명세서에서 사용된 문구 및 용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되어서는 안된다. "포함(including)" "포함(comprising)" "포함(having)" "포함(containing)" "포함(involving)" "포함(characterized by)" "포함(characterized in that)” 및 본 명세서에서 이들의 변형들은 열거된 아이템들, 그 균등물 및 추가 아이템들뿐만 아니라 배타적으로 열거된 아이템들로 구성되는 대안적 구현예들을 포함하는 것을 의미한다. 일 구현예에서, 본 명세서에 기술된 시스템 및 방법은 설명된 엘리먼트들, 동작들 또는 컴포넌트들 중 하나, 하나 이상의 조합 또는 전부로 구성된다.
단수형으로 본 명세서에서 언급된 시스템 및 방법의 구현 또는 엘리먼트에 관한 참조는 이들 엘리먼트들 복수형을 포함하는 구현예들을 포함할 수 있고, 복수형으로 본 명세서에서 언급된 임의의 구현예 또는 엘리먼트에 대한 임의의 참조는 단수형 엘리먼트를 포함하는 구현예들을 포함할 수 있다. 단수 또는 복수 형태의 참조는 현재 개시된 시스템 또는 방법, 그들의 컴포넌트들, 동작 또는 엘리먼트를 단수 또는 복수 구성으로 제한하려는 것이 아니다. 임의의 정보, 동작 또는 엘리먼트에 기초한 임의의 동작 또는 엘리먼트에 대한 참조는 해당 동작 또는 엘리먼트가 적어도 부분적으로 임의의 정보, 동작 또는 엘리먼트에 기초하는 구현예를 포함할 수 있다.
본 명세서에 개시된 임의의 구현예는 임의의 다른 구현예와 결합될 수 있으며, "구현", "일부 구현", "대안적 구현", "다양한 구현", "하나의 구현” 등은 반드시 상호 배타적이지 않고, 구현예과 관련하여 기술된 특정한 구성, 구조 또는 특성이 적어도 하나의 구현예에 포함될 수 있음을 나타내는 것이다. 본 명세서에 사용된 용어들은 반드시 모두 동일한 구현예를 지칭하는 것은 아니다. 임의의 구현예는 본 명세서에 개시된 양태들 및 구현예들과 일관된 방식으로 임의의 다른 구현예와 포괄적으로 또는 배타적으로 결합될 수 있다.
"또는"에 대한 참조는 "또는"을 사용하여 기술된 임의의 용어가 기술된 용어들 중 하나, 하나 이상 및 전부를 나타낼 수 있도록 포괄적인 것으로 해석될 수 있다.
도면, 상세한 설명 또는 청구범위의 기술적 구성에 참조 부호가 있는 경우, 상기 참조 부호는 도면, 상세한 설명 및 청구 범위의 명료성을 증가시키는 목적으로만으로 포함되었다. 따라서, 참조 부호들 또는 그것들의 부재는 임의의 청구항 엘리먼트들의 범위에 대해 어떠한 제한 효과도 가지지 않는다.
본 명세서에 기술된 시스템 및 방법은 그 특성을 벗어나지 않고 다른 특정 형태로 구체화될 수 있다. 본 명세서에서 제공된 예시들은 정보 리소스의 콘텐츠의 디스플레이를 제어하는 것에 관한 것이지만, 본 명세서에 기술된 시스템 및 방법은 다른 환경에 적용되는 것을 포함할 수 있다. 전술한 구현예들은 기술된 시스템 및 방법을 제한하는 것이라기 보다는 예시적인 것이다. 따라서, 본 명세서에 기술된 시스템 및 방법의 범위는 상술한 설명보다는 첨부된 청구범위에 의해 표시되며, 청구범위의 의미 및 범위 내에서의 변경들도 그 안에 포함된다.
전술한 시스템 및 방법은 하나 이상의 제조물, 예를 들어 컴퓨터 판독가능 매체 상에 또는 기록된 하나 이상의 컴퓨터 프로그램에서 명령어로서 제공될 수 있음을 이해해야 한다. 제조물은 플로피 디스크, 하드 디스크, CD-ROM, 플래시 메모리 카드, PROM, RAM, ROM 또는 자기 테이프일 수 있다. 일반적으로 컴퓨터 프로그램은 LISP, Perl, Python, C, C ++, C #, PROLOG와 같은 프로그래밍 언어 또는 JAVA와 같은 모든 바이트 코드 언어로 구현될 수 있다. 소프트웨어 프로그램은 객체 코드로서 하나 이상의 제조물에 저장될 수 있다.
방법 및 시스템의 특정 실시예를 설명하였지만, 본 개시 내용의 개념을 포함하는 다른 실시예가 사용될 수 있다는 것이 이제 통상의 기술자에게 명백할 것이다. 따라서, 본 개시는 특정 실시예로 제한되어서는 안되며, 오히려 다음 청구 범위의 사상 및 범위에 의해서만 제한되어야 한다.

Claims (20)

  1. 안전하고 계산적으로 효율적인 전송을 위한 목표 기준을 만족하는 속성을 갖는 식별자 세트를 표현하는 암호화된 데이터 구조를 생성하는 방법으로서,
    하나 이상의 프로세서 및 메모리를 포함하는 데이터 프로세싱 시스템에 의해, 데이터베이스에서, 디바이스 식별자 세트를 유지하는 단계, 디바이스 식별자 세트 각각은 디바이스 속성을 포함하며;
    상기 데이터 프로세싱 시스템에 의해, 상기 디바이스 식별자 세트 및 해시 함수를 사용하여 데이터 구조를 생성하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 상기 데이터 구조를 암호화하여 암호화된 데이터 구조를 생성하는 단계, 상기 암호화된 데이터 구조는 제2 암호화된 데이터 구조와 결합될 수 있으며;
    상기 데이터 프로세싱 시스템에 의해, 상기 암호화된 데이터 구조를 작업자 컴퓨팅 디바이스로 전송하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 수신하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 상기 디바이스 식별자 세트의 멤버로서 저장하는 단계를 더 포함하는, 방법.
  3. 청구항 1에 있어서, 상기 데이터 프로세싱 시스템에 의해, 균일하게 분산된 해시 함수를 상기 해시 함수로서 식별하는 단계를 더 포함하고, 상기 균일하게 분산된 해시 함수는 균일하게 분산된 값을 출력하는, 방법.
  4. 청구항 1에 있어서, 상기 해시 함수는 복수의 해시 함수이고, 상기 데이터 구조를 생성하는 단계는:
    상기 데이터 프로세싱 시스템에 의해, 각각의 복수의 카운터 레지스터에 대응하는 복수의 좌표를 포함하는 벡터 데이터 구조를 생성하는 단계, 상기 벡터 데이터 구조는 상기 데이터 구조이며; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 디바이스 속성을 포함하는 상기 디바이스 식별자 세트 각각에 대해, 상기 복수의 해시 함수를 사용하여 상기 벡터 데이터 구조의 상기 각각의 복수의 카운터 레지스터의 카운터 레지스터를 업데이트하는 단계를 포함하는, 방법.
  5. 청구항 4에 있어서, 상기 디바이스 속성을 포함하는 상기 디바이스 식별자 세트 각각에 대해, 상기 각각의 복수의 카운터 레지스터의 카운터 레지스터를 업데이트하는 단계는:
    상기 데이터 프로세싱 시스템에 의해, 복수의 해시된 데이터 레코드 값을 생성하기 위해 상기 복수의 해시 함수 각각을 사용하여 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 상기 복수의 해시된 데이터 레코드 값으로부터 복수의 레지스터 식별자를 추출하는 단계, 상기 복수의 레지스터 식별자 각각은 상기 복수의 카운터 레지스터의 각각의 카운터 레지스터에 대응하며;
    상기 데이터 프로세싱 시스템에 의해, 최소값 임계치를 만족하는 카운터 레지스터 세트를 식별하기 위해 상기 복수의 레지스터 식별자에 대응하는 상기 복수의 카운터 레지스터 각각에 액세스하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 최소값 임계치를 만족하는 카운터 레지스터 세트 각각을 증가시키는 단계를 포함하는, 방법.
  6. 청구항 5에 있어서, 상기 디바이스 식별자 세트의 상기 디바이스 식별자를 해싱하는 단계는 상기 데이터 프로세싱 시스템에 의해 상기 디바이스 식별자와 연관하여 상기 복수의 해시된 데이터 레코드 값 각각을 상기 데이터베이스에 저장하는 단계를 더 포함하는, 방법.
  7. 청구항 5에 있어서, 상기 복수의 레지스터 식별자를 추출하는 단계는 상기 복수의 카운터 레지스터의 개수를 사용하여 상기 복수의 해시된 데이터 레코드 값 각각에 대해 모듈러스 연산을 수행하는 단계를 더 포함하는, 방법.
  8. 청구항 1에 있어서, 상기 데이터 구조는 제1 벡터 및 제2 벡터를 포함하는 행렬 데이터 구조이고, 상기 데이터 구조를 생성하는 단계는:
    상기 데이터 프로세싱 시스템에 의해, 상기 해시 함수 및 상기 디바이스 식별자 세트의 디바이스 식별자를 사용하여 선택된 벡터를 선택하는 단계, 상기 선택된 벡터는 상기 제1 벡터 또는 상기 제2 벡터 중 하나이며; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 해시 함수 및 상기 디바이스 식별자 세트의 디바이스 식별자를 사용하여 상기 행렬 데이터 구조의 선택된 벡터의 좌표를 업데이트하는 단계를 포함하는, 방법.
  9. 청구항 8에 있어서, 상기 선택된 벡터를 선택하는 단계는:
    상기 데이터 프로세싱 시스템에 의해, 해시된 디바이스 식별자를 생성하기 위해 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 최하위 비트의 수를 결정하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 상기 최하위 비트 수에 기초하여, 상기 제1 벡터를 선택된 벡터로서 또는 상기 제2 벡터를 선택된 벡터로서 선택하는 단계를 포함하는, 방법.
  10. 청구항 9에 있어서, 상기 행렬 데이터 구조의 상기 선택된 벡터의 좌표를 업데이트하는 단계는:
    상기 데이터 프로세싱 시스템에 의해, 카운터 레지스터 인덱스 값을 계산하기 위해 상기 해시된 디바이스 식별자에 대한 모듈러스 연산을 수행하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 카운터 레지스터 인덱스 값을 사용하여 좌표를 선택하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 카운터 레지스터 인덱스 값을 사용하여 선택된 좌표를 증가시키는 단계를 포함하는, 방법.
  11. 안전하고 계산적으로 효율적인 전송을 위한 목표 기준을 만족하는 속성을 갖는 식별자 세트를 표현하는 암호화된 데이터 구조를 생성하기 위한 시스템으로서,
    하나 이상의 프로세서 및 메모리를 포함하는 데이터 프로세싱 시스템을 포함하며, 상기 데이터 프로세싱 시스템은:
    데이터베이스에서, 디바이스 식별자 세트를 유지하고, 디바이스 식별자 세트 각각은 디바이스 속성을 포함하며;
    상기 디바이스 식별자 세트 및 해시 함수를 사용하여 데이터 구조를 생성하고;
    상기 데이터 구조를 암호화하여 암호화된 데이터 구조를 생성하고, 상기 암호화된 데이터 구조는 제2 암호화된 데이터 구조와 결합될 수 있으며;
    상기 암호화된 데이터 구조를 작업자 컴퓨팅 디바이스로 전송하도록 구성되는 시스템.
  12. 청구항 11에 있어서, 상기 데이터 프로세싱 시스템은:
    제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 수신하고; 그리고
    상기 제1 디바이스 속성을 포함하는 제1 디바이스 식별자를 상기 디바이스 식별자 세트의 멤버로서 저장하도록 더 구성되는, 시스템.
  13. 청구항 11에 있어서, 상기 데이터 프로세싱 시스템은 균일하게 분산된 해시 함수를 상기 해시 함수로서 식별하도록 더 구성되며, 상기 균일하게 분산된 해시 함수는 균일하게 분산된 값을 출력하는, 시스템.
  14. 청구항 11에 있어서, 상기 해시 함수는 복수의 해시 함수이고, 상기 데이터 프로세싱 시스템은:
    각각의 복수의 카운터 레지스터에 대응하는 복수의 좌표를 포함하는 벡터 데이터 구조를 생성하고, 상기 벡터 데이터 구조는 상기 데이터 구조이며; 그리고
    상기 디바이스 속성을 포함하는 상기 디바이스 식별자 세트 각각에 대해, 상기 복수의 해시 함수를 사용하여 상기 벡터 데이터 구조의 상기 각각의 복수의 카운터 레지스터의 카운터 레지스터를 업데이트하도록 더 구성되는, 시스템.
  15. 청구항 14에 있어서, 상기 데이터 프로세싱 시스템은:
    복수의 해시된 데이터 레코드 값을 생성하기 위해 상기 복수의 해시 함수 각각을 사용하여 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱하고;
    상기 복수의 해시된 데이터 레코드 값으로부터 복수의 레지스터 식별자를 추출하고, 상기 복수의 레지스터 식별자 각각은 상기 복수의 카운터 레지스터의 각각의 카운터 레지스터에 대응하며;
    최소값 임계치를 만족하는 카운터 레지스터 세트를 식별하기 위해 상기 복수의 레지스터 식별자에 대응하는 상기 복수의 카운터 레지스터 각각에 액세스하고; 그리고
    상기 최소값 임계치를 만족하는 카운터 레지스터 세트 각각을 증가시키도록 더 구성되는, 시스템.
  16. 청구항 15에 있어서, 상기 데이터 프로세싱 시스템은 상기 디바이스 식별자와 연관하여 상기 복수의 해시된 데이터 레코드 값 각각을 상기 데이터베이스에 저장하도록 더 구성되는, 시스템.
  17. 청구항 15에 있어서, 상기 데이터 프로세싱 시스템은 상기 복수의 카운터 레지스터의 개수를 사용하여 상기 복수의 해시된 데이터 레코드 값 각각에 대해 모듈러스 연산을 수행하도록 더 구성되는, 시스템.
  18. 청구항 11에 있어서, 상기 데이터 구조는 제1 벡터 및 제2 벡터를 포함하는 행렬 데이터 구조이고, 상기 데이터 프로세싱 시스템은:
    상기 해시 함수 및 상기 디바이스 식별자 세트의 디바이스 식별자를 사용하여 선택된 벡터를 선택하고, 상기 선택된 벡터는 상기 제1 벡터 또는 상기 제2 벡터 중 하나이며; 그리고
    상기 해시 함수 및 상기 디바이스 식별자 세트의 디바이스 식별자를 사용하여 상기 행렬 데이터 구조의 선택된 벡터의 좌표를 업데이트하도록 더 구성되는, 시스템.
  19. 청구항 18에 있어서, 상기 데이터 프로세싱 시스템은:
    해시된 디바이스 식별자를 생성하기 위해 상기 디바이스 식별자 세트의 디바이스 식별자를 해싱하고;
    미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 최하위 비트의 수를 결정하고; 그리고
    상기 미리 결정된 비트 값을 만족하는 상기 해시된 디바이스 식별자의 상기 최하위 비트 수에 기초하여, 상기 제1 벡터를 선택된 벡터로서 또는 상기 제2 벡터를 선택된 벡터로서 선택하도록 더 구성되는, 시스템.
  20. 청구항 19에 있어서, 상기 데이터 프로세싱 시스템은:
    카운터 레지스터 인덱스 값을 계산하기 위해 상기 해시된 디바이스 식별자에 대해 모듈러스 연산을 수행하고;
    상기 카운터 레지스터 인덱스 값을 사용하여 상기 좌표를 선택하고; 그리고
    상기 카운터 레지스터 인덱스 값을 사용하여 선택된 상기 좌표를 증가시키도록 더 구성되는, 시스템.
KR1020217011133A 2020-02-14 2020-07-28 다수 당사자 도달 및 빈도 추정 보안화 KR102569373B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237027886A KR20230124111A (ko) 2020-02-14 2020-07-28 다수 당사자 도달 및 빈도 추정 보안화

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US202062977141P 2020-02-14 2020-02-14
US62/977,141 2020-02-14
US202062981960P 2020-02-26 2020-02-26
US62/981,960 2020-02-26
US202062987645P 2020-03-10 2020-03-10
US62/987,645 2020-03-10
US202063002138P 2020-03-30 2020-03-30
US63/002,138 2020-03-30
PCT/US2020/043894 WO2021162743A1 (en) 2020-02-14 2020-07-28 Secure multi-party reach and frequency estimation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237027886A Division KR20230124111A (ko) 2020-02-14 2020-07-28 다수 당사자 도달 및 빈도 추정 보안화

Publications (2)

Publication Number Publication Date
KR20210104653A true KR20210104653A (ko) 2021-08-25
KR102569373B1 KR102569373B1 (ko) 2023-08-22

Family

ID=71944289

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020217011267A KR102371529B1 (ko) 2020-02-14 2020-07-07 다수 당사자 도달 및 빈도 추정 보안화
KR1020217011266A KR102371528B1 (ko) 2020-02-14 2020-07-07 다수 당사자 도달 및 빈도 추정 보안화
KR1020217011133A KR102569373B1 (ko) 2020-02-14 2020-07-28 다수 당사자 도달 및 빈도 추정 보안화
KR1020237027886A KR20230124111A (ko) 2020-02-14 2020-07-28 다수 당사자 도달 및 빈도 추정 보안화

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020217011267A KR102371529B1 (ko) 2020-02-14 2020-07-07 다수 당사자 도달 및 빈도 추정 보안화
KR1020217011266A KR102371528B1 (ko) 2020-02-14 2020-07-07 다수 당사자 도달 및 빈도 추정 보안화

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237027886A KR20230124111A (ko) 2020-02-14 2020-07-28 다수 당사자 도달 및 빈도 추정 보안화

Country Status (6)

Country Link
US (5) US11784800B2 (ko)
EP (3) EP3891921B1 (ko)
JP (3) JP7121195B2 (ko)
KR (4) KR102371529B1 (ko)
CN (3) CN114175568B (ko)
WO (3) WO2021162738A1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11902259B2 (en) * 2020-02-05 2024-02-13 Google Llc Pure differentially private algorithms for summation in the shuffled model
US11676160B2 (en) 2020-02-11 2023-06-13 The Nielsen Company (Us), Llc Methods and apparatus to estimate cardinality of users represented in arbitrarily distributed bloom filters
US11722500B2 (en) * 2020-04-01 2023-08-08 Paypal, Inc. Secure identity verification marketplace using hashed data and forward hashing search functions
US11741068B2 (en) 2020-06-30 2023-08-29 The Nielsen Company (Us), Llc Methods and apparatus to estimate cardinality of users represented across multiple bloom filter arrays
US11550949B2 (en) * 2020-07-21 2023-01-10 Constella Intelligence, Inc. Secure exchange of password presence data
US11755545B2 (en) 2020-07-31 2023-09-12 The Nielsen Company (Us), Llc Methods and apparatus to estimate audience measurement metrics based on users represented in bloom filter arrays
US11496287B2 (en) 2020-08-18 2022-11-08 Seagate Technology Llc Privacy preserving fully homomorphic encryption with circuit verification
US11575501B2 (en) * 2020-09-24 2023-02-07 Seagate Technology Llc Preserving aggregation using homomorphic encryption and trusted execution environment, secure against malicious aggregator
US20220156783A1 (en) * 2020-11-13 2022-05-19 The Nielsen Company (Us), Llc Methods and apparatus to estimate unique audience sizes across multiple intersecting platforms
US11734290B1 (en) * 2020-11-24 2023-08-22 Amazon Technologies, Inc. Computationally efficient cardinality-estimation techniques
EP4038532B1 (en) * 2020-12-04 2023-07-26 Google LLC Secured management of data distribution restrictions
US12081644B2 (en) * 2021-02-01 2024-09-03 Sap Se Efficient distributed privacy-preserving computations
US12045203B2 (en) * 2021-06-14 2024-07-23 EMC IP Holding Company LLC Systems and methods for physical capacity estimation of logical space units
US11854030B2 (en) * 2021-06-29 2023-12-26 The Nielsen Company (Us), Llc Methods and apparatus to estimate cardinality across multiple datasets represented using bloom filter arrays
IL285766A (en) * 2021-08-22 2023-03-01 Google Llc Cryptographically secure control using secure multi-factor computation
US11909866B2 (en) * 2021-08-27 2024-02-20 Paypal, Inc. Systems and methods for configuring a networked system to perform threshold multi-party computation
US11847119B2 (en) * 2021-08-30 2023-12-19 The Nielsen Company (Us), Llc Method and system for estimating the cardinality of information
US11876775B2 (en) * 2021-08-30 2024-01-16 Arbor Networks, Inc. System and method for monitoring communication traffic associated with dynamic internet services via DNS monitoring
US11934399B2 (en) * 2021-08-30 2024-03-19 The Nielsen Company (Us), Llc Method and system for estimating the cardinality of information
US20230117942A1 (en) * 2021-10-15 2023-04-20 The Nielsen Company (Us), Llc Methods and apparatus to determine a frequency distribution for data in a database
CN113886889B (zh) * 2021-10-26 2024-04-09 重庆邮电大学 一种基于联合随机翻转的差分隐私保护方法
KR102401485B1 (ko) * 2021-12-30 2022-05-24 주식회사 디사일로 동형 암호화된 데이터 처리 방법 및 시스템
US20230351043A1 (en) * 2022-04-28 2023-11-02 Fidelity Information Services, Llc Systems and methods for securing data by stateless tokenization
CN114884675B (zh) * 2022-04-29 2023-12-05 杭州博盾习言科技有限公司 基于比特传输的多方隐私求交方法、装置、设备及介质
CN114584285B (zh) * 2022-05-05 2022-07-29 深圳市洞见智慧科技有限公司 安全多方处理方法及相关设备
US12067264B2 (en) * 2022-06-01 2024-08-20 Micron Technology, Inc. Power efficient codeword scrambling in a non-volatile memory device
CN115242371B (zh) * 2022-06-15 2024-04-19 华中科技大学 差分隐私保护的集合交集及其基数计算方法、装置及系统
CN115455483B (zh) * 2022-09-21 2023-12-26 广州大学 一种基于本地差分隐私的大数据频数估计方法
WO2024079899A1 (ja) * 2022-10-14 2024-04-18 日本電信電話株式会社 統計値推定装置、統計値推定システム、統計値推定方法、及びプログラム
WO2024123664A1 (en) * 2022-12-05 2024-06-13 Google Llc Confusion matrix estimation in distributed computation environments
US20240256530A1 (en) * 2023-01-31 2024-08-01 Meta Platforms, Inc. Differentially private approximate distinct-counting sketches
CN117910047A (zh) * 2024-03-20 2024-04-19 广东电网有限责任公司 一种多密钥联邦学习方法、装置、终端设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130010950A1 (en) * 2011-07-08 2013-01-10 Sap Ag Public-Key Encrypted Bloom Filters With Applications To Private Set Intersection
US20150220625A1 (en) * 2014-02-03 2015-08-06 Interdigital Patent Holdings, Inc. Methods and apparatus for conveying surveillance targets using bloom filters
US20160180917A1 (en) * 2014-12-23 2016-06-23 Zeshan A. Chishti Techniques to Reduce Memory Cell Refreshes for a Memory Device
US20180357434A1 (en) * 2017-06-08 2018-12-13 The Government Of The United States, As Represented By The Secretary Of The Army Secure Generalized Bloom Filter

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526472A3 (en) 1995-02-13 2006-07-26 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
KR100337637B1 (ko) * 1998-12-03 2002-07-18 오길록 암호화된전자문서복구방법
JP3788246B2 (ja) 2001-02-13 2006-06-21 日本電気株式会社 匿名復号システム及び匿名復号方法
CA2369304A1 (en) 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
EP1720144A4 (en) 2004-01-26 2013-10-23 Nec Corp METHOD AND DEVICE FOR CALCULATING A FUNCTION FROM MANY INPUTS
US7856100B2 (en) * 2005-12-19 2010-12-21 Microsoft Corporation Privacy-preserving data aggregation using homomorphic encryption
WO2011112535A2 (en) * 2010-03-10 2011-09-15 Promentis Pharmaceuticals, Inc. Propionic acids, propionic acid esters, and related compounds
EP2503480A1 (en) 2011-03-22 2012-09-26 Smals Vzw Method and devices for secure data access and exchange
US8472983B1 (en) 2011-12-07 2013-06-25 Cisco Technology, Inc. Selective location-aware paging
US20130226972A1 (en) * 2012-02-27 2013-08-29 Ramakumar Kosuru Methods and systems for processing data arrays using bloom filters
US9049011B1 (en) * 2012-08-15 2015-06-02 Washington State University Secure key storage and distribution
US9465826B2 (en) * 2012-11-27 2016-10-11 Hewlett Packard Enterprise Development Lp Estimating unique entry counts using a counting bloom filter
US9306738B2 (en) 2012-12-21 2016-04-05 Microsoft Technology Licensing, Llc Managed secure computations on encrypted data
JP5873822B2 (ja) 2013-02-15 2016-03-01 日本電信電話株式会社 秘匿共通集合演算システム及び秘匿共通集合演算方法
US9652511B2 (en) 2013-03-13 2017-05-16 International Business Machines Corporation Secure matching supporting fuzzy data
US9514169B2 (en) * 2013-09-23 2016-12-06 Protegrity Corporation Columnar table data protection
US10445769B2 (en) 2013-12-24 2019-10-15 Google Llc Systems and methods for audience measurement
WO2015116221A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Managing database with counting bloom filters
US20150293923A1 (en) 2014-04-10 2015-10-15 Max Planck Gesellschaft zur Förderung der Wissenschaften e.V. Systems and methods for anonymized user list count
JP6331715B2 (ja) 2014-06-02 2018-05-30 富士通株式会社 情報生成装置、ネットワークシステム、及び情報生成方法
US10320752B2 (en) * 2014-10-24 2019-06-11 National Ict Australia Limited Gradients over distributed datasets
DE102015210734B4 (de) * 2014-10-31 2021-03-04 Hewlett Packard Enterprise Development Lp Verwaltung kryptographischer schlüssel
US20160378465A1 (en) 2015-06-23 2016-12-29 Intel Corporation Efficient sparse array handling in a processor
US10581812B2 (en) 2015-12-01 2020-03-03 Duality Technologies, Inc. Device, system and method for fast and secure proxy re-encryption
US10740474B1 (en) 2015-12-28 2020-08-11 Ionic Security Inc. Systems and methods for generation of secure indexes for cryptographically-secure queries
US11138170B2 (en) 2016-01-11 2021-10-05 Oracle International Corporation Query-as-a-service system that provides query-result data to remote clients
US10069631B2 (en) 2016-03-17 2018-09-04 Palo Alto Research Center Incorporated Fault-tolerant aggregation of encrypted data in a star network
CN106534313B (zh) 2016-11-17 2019-09-13 浙江工商大学 面向云端数据发布保护安全及隐私的频度测定方法和系统
JP6802572B2 (ja) 2016-12-26 2020-12-16 国立大学法人大阪大学 データ解析方法およびデータ解析システム
US10970629B1 (en) * 2017-02-24 2021-04-06 Amazon Technologies, Inc. Encodings for reversible sparse dimensionality reduction
US20180285596A1 (en) 2017-03-30 2018-10-04 Cisco Technology, Inc. System and method for managing sensitive data
US10599867B2 (en) * 2017-06-04 2020-03-24 Apple Inc. User experience using privatized crowdsourced data
US12067129B2 (en) 2017-06-23 2024-08-20 Flytxt B.V. Privacy preserving computation protocol for data analytics
GB2565540A (en) 2017-08-11 2019-02-20 Infosum Ltd System and methods for joining datasets
US10901907B2 (en) 2017-10-19 2021-01-26 Samsung Electronics Co., Ltd. System and method for identifying hot data and stream in a solid-state drive
US10585915B2 (en) * 2017-10-25 2020-03-10 International Business Machines Corporation Database sharding
CN110971414B (zh) * 2017-11-10 2021-05-04 财付通支付科技有限公司 生成签名的方法、装置、终端及服务器
WO2019152515A1 (en) * 2018-01-31 2019-08-08 Walmart Apollo, Llc System and method for prescription security and authentication
US20190244138A1 (en) 2018-02-08 2019-08-08 Apple Inc. Privatized machine learning using generative adversarial networks
US20190286718A1 (en) * 2018-03-15 2019-09-19 Qualcomm Incorporated Data structure with rotating bloom filters
WO2019204711A1 (en) 2018-04-19 2019-10-24 Google Llc Security measures for determination of private set intersections
EP3823561A4 (en) 2018-07-19 2022-04-27 Cryoheart Laboratories, Inc. SYSTEM AND PROCEDURE FOR BONE FUSION
GB201811968D0 (en) * 2018-07-23 2018-09-05 Nchain Holdings Ltd Computer-implemented System and Method
CN110913344B (zh) * 2018-08-27 2023-09-01 香港科技大学 协同目标跟踪系统和方法
US11347808B1 (en) 2018-12-03 2022-05-31 Amazon Technologies, Inc. Dynamically-adaptive bloom-filter
US10862513B2 (en) * 2019-01-16 2020-12-08 Fungible, Inc. Data processing unit having hardware-based parallel variable-length codeword decoding
US10990598B2 (en) 2019-01-31 2021-04-27 Microsoft Technology Licensing, Llc Aggregating quantile metrics in multidimensional data sets
CN111680041B (zh) 2020-05-31 2023-11-24 西南电子技术研究所(中国电子科技集团公司第十研究所) 面向异构数据的安全高效存取方法
US11809577B2 (en) * 2020-09-07 2023-11-07 The Toronto-Dominion Bank Application of trained artificial intelligence processes to encrypted data within a distributed computing environment
CN113157778B (zh) 2021-06-09 2021-09-24 富算科技(上海)有限公司 分布式数据仓库的可代理查询方法、系统、设备及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130010950A1 (en) * 2011-07-08 2013-01-10 Sap Ag Public-Key Encrypted Bloom Filters With Applications To Private Set Intersection
US20150220625A1 (en) * 2014-02-03 2015-08-06 Interdigital Patent Holdings, Inc. Methods and apparatus for conveying surveillance targets using bloom filters
US20160180917A1 (en) * 2014-12-23 2016-06-23 Zeshan A. Chishti Techniques to Reduce Memory Cell Refreshes for a Memory Device
US20180357434A1 (en) * 2017-06-08 2018-12-13 The Government Of The United States, As Represented By The Secretary Of The Army Secure Generalized Bloom Filter

Also Published As

Publication number Publication date
KR102371528B1 (ko) 2022-03-07
CN114175568A (zh) 2022-03-11
JP2022517299A (ja) 2022-03-08
KR102371529B1 (ko) 2022-03-07
CN113557512B (zh) 2022-09-20
WO2021162737A1 (en) 2021-08-19
US11909864B2 (en) 2024-02-20
JP7144607B2 (ja) 2022-09-29
US20210359836A1 (en) 2021-11-18
KR20210104655A (ko) 2021-08-25
JP7121195B2 (ja) 2022-08-17
JP7121194B2 (ja) 2022-08-17
US20240204988A1 (en) 2024-06-20
CN114175568B (zh) 2023-06-06
KR20230124111A (ko) 2023-08-24
EP3891921B1 (en) 2022-11-16
WO2021162743A1 (en) 2021-08-19
EP3891923A1 (en) 2021-10-13
US20210359846A1 (en) 2021-11-18
EP3891922B1 (en) 2022-09-07
KR20210104654A (ko) 2021-08-25
KR102569373B1 (ko) 2023-08-22
JP2022517054A (ja) 2022-03-04
CN113557511A (zh) 2021-10-26
US11784800B2 (en) 2023-10-10
EP3891921A1 (en) 2021-10-13
CN113557511B (zh) 2024-09-03
US12069161B2 (en) 2024-08-20
US20230421365A1 (en) 2023-12-28
US20220376887A1 (en) 2022-11-24
JP2022517298A (ja) 2022-03-08
EP3891923B1 (en) 2023-07-12
EP3891922A1 (en) 2021-10-13
CN113557512A (zh) 2021-10-26
WO2021162738A1 (en) 2021-08-19

Similar Documents

Publication Publication Date Title
KR102371528B1 (ko) 다수 당사자 도달 및 빈도 추정 보안화
Chen et al. Labeled PSI from fully homomorphic encryption with malicious security
Rathee et al. Cryptflow2: Practical 2-party secure inference
Ion et al. On deploying secure computing: Private intersection-sum-with-cardinality
Raghuraman et al. Blazing fast PSI from improved OKVS and subfield VOLE
Di Pietro et al. Proof of ownership for deduplication systems: a secure, scalable, and efficient solution
Abadi et al. Feather: Lightweight multi-party updatable delegated private set intersection
Choi et al. Compressed oblivious encoding for homomorphically encrypted search
CN116324778A (zh) 可更新私有集合交集
Syam Kumar et al. RSA-based dynamic public audit service for integrity verification of data storage in cloud computing using Sobol sequence
Lian et al. Bootstrapping of FHE over the integers with large message space
Zhao Order-Preserving Database Encryption with Secret Sharing
Wang et al. Differentially Private Numerical Vector Analyses in the Local and Shuffle Model
Yang et al. PPCT: Privacy-Preserving Contact Tracing Using Concise Private Set Intersection Cardinality
Hoang Privacy-Preserving and Functional Information Systems

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant