KR20210102291A - 암호화된 네트워크 값 집계 - Google Patents

암호화된 네트워크 값 집계 Download PDF

Info

Publication number
KR20210102291A
KR20210102291A KR1020217020668A KR20217020668A KR20210102291A KR 20210102291 A KR20210102291 A KR 20210102291A KR 1020217020668 A KR1020217020668 A KR 1020217020668A KR 20217020668 A KR20217020668 A KR 20217020668A KR 20210102291 A KR20210102291 A KR 20210102291A
Authority
KR
South Korea
Prior art keywords
data
encrypted
aggregation server
transformation
key
Prior art date
Application number
KR1020217020668A
Other languages
English (en)
Other versions
KR102582514B1 (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 KR1020237032243A priority Critical patent/KR20230141908A/ko
Publication of KR20210102291A publication Critical patent/KR20210102291A/ko
Application granted granted Critical
Publication of KR102582514B1 publication Critical patent/KR102582514B1/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/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
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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
    • 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/606Protecting data by securing the transmission between two devices or processes
    • G06F21/608Secure printing
    • 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
    • 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/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/083Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3257Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using blind signatures
    • 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/42Anonymization, e.g. involving pseudonyms
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Storage Device Security (AREA)

Abstract

네트워크 측정을 결정하는 방법을 포함하는 방법, 시스템 및 장치가 개시된다. 일부 양태들에서, 방법은 제1 집계 서버에 의해 그리고 다수의 클라이언트 장치들 각각으로부터 암호화된 노출 데이터를 수신하는 단계를 포함한다. 제2 집계 서버는, 다수의 클라이언트 장치 중 적어도 일부로부터, 클라이언트 장치에 의해 기록된 각 변환에 대해 암호화된 변환 값 데이터를 포함하는 변환 데이터를 수신한다. 제1 집계 서버 및 제2 집계 서버는 암호화된 노출 데이터와 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행한다.

Description

암호화된 네트워크 값 집계
본 명세서는 암호화된 네트워크 값 집계에 관한 것이다.
클라이언트 장치는 인터넷과 같은 공용 네트워크를 통해 데이터를 전송한다. 이러한 통신은 의도된 수신자가 아닌 다른 엔티티에 의해 인터셉트되거나 변경될 수 있다. 또한 엔티티는 네트워크 식별(UD)을 위조하고 이러한 위조된 네트워크 ID에서 발생한 것처럼 보이는 데이터를 전송할 수 있다. 이러한 위조의 예는 엔티티가 네트워크 식별 정보를 생성하여 피어 투 피어(peer-to-peer) 네트워크의 평판 시스템을 파괴하는 사이빌(Sybil) 공격이다.
본 명세서는 부정(fraud)를 방지하고 사용자 프라이버시를 보호하는 방식으로 네트워크 측정(측정치)을 결정하는 것과 관련된 기술을 설명한다.
일반적으로, 본 명세서에 기술된 주제의 하나의 혁신적인 양태는, 제1 집계 서버에 의해 그리고 다수의 클라이언트 장치 각각으로부터, 클라이언트 장치에 의해 기록된 디지털 컴포넌트의 각 노출에 대한 노출 데이터를 수신하는 단계 -노출 데이터는 (i) 노출이 발생한 클라이언트 장치의 애플리케이션 또는 클라이언트 장치에 대한 제1 고유 식별자를 기반으로 하는 제1 조인 키; (ii) 제1 집계 서버의 제1 공개 키를 사용하고 그리고 제1 집계 서버와는 다른 제2 집계 서버의 제2 공개 키를 사용하여 암호화된 노출 데이터를 포함함-; 제2 집계 서버에 의해 그리고 다수의 클라이언트 장치의 적어도 일부 각각으로부터, 클라이언트 장치에 의해 기록된 각 변환에 대한 변환 데이터를 수신하는 단계 -변환 데이터는 (i) 변환이 발생한 클라이언트 장치의 애플리케이션 또는 클라이언트 장치에 대한 제2 고유 식별자를 기반으로 하는 제2 조인 키, (ii) 제1 공개 키와 제2 공개 키를 사용하여 암호화된 변환 데이터를 포함하는 제2 값, 그리고 (iii) 암호화된 변환 값 데이터를 포함함-; 제1 집계 서버 및 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하는 멀티-파티(multi-party) 계산 프로세스를 수행하는 단계 - 멀티-파티 계산 프로세스를 수행하는 단계는, 제1 조인 키 및 제2 조인 키에 기초하여, 해당 암호화된 노출 데이터 및 암호화된 변환 데이터의 쌍을 식별하는 단계; 그리고 제1 공개 키에 대응하는 제1 개인 키 및 제2 공개 키에 대응하는 제2 개인 키를 사용하여 다수의 스테이지에서 암호화된 노출 데이터 및 변환 데이터의 각 쌍에 대한 노출 데이터 및 변환 데이터를 복호화하는 단계를 포함하며, 각 스테이지는, 암호화된 노출 데이터 및 암호화된 변환 데이터의 각 쌍의 암호화된 변환 데이터 또는 암호화된 노출 데이터 중 하나를 복호화하는 제1 집계 서버 또는 제2 집계 서버 중 하나를 포함하며, 제1 집계 서버 또는 제2 집계 서버 중 하나는 결과 데이터를 제1 집계 서버 또는 제2 집계 서버 중 다른 하나에 전송함-; 복호화된 노출 데이터 및 복호화된 변환 데이터를 하나 이상의 리포팅 시스템으로 전송하는 단계를 포함하는 방법으로 구체화될 수 있다. 이 양태의 다른 구현은, 컴퓨터 저장 장치에 인코딩된 방법의 양태를 수행하도록 구성된 대응 장치, 시스템 및 컴퓨터 프로그램을 포함한다. 유리하게, 이는 사용자 프라이버시를 유지하면서 보다 안전한 시스템/방법을 제공하면서 노출 데이터에 귀속되는 변환 데이터에 대한 수단을 제공한다. 본 명세서에 설명된 바와 같이, 변환 데이터는 디지털 컴포넌트와의 사용자 상호 작용에 대응하는 반면, 노출 데이터는 사용자에게 디지털 컴포넌트를 제공하는 것에 대응한다. 따라서 해당 노출에 대한 변환을 기여하여 노출 및 변환 데이터를 조정(reconciling)하면 사용자에게 제공되는 디지털 컴포넌트와의 사용자 상호 작용을 모니터링하는 데 유용하다. 이러한 상호 작용을 모니터링할 때 사용자가 변환 또는 노출 데이터를 기반으로 식별되거나 추적되지 않도록 사용자 프라이버시(개인 정보)를 유지하는 보안 시스템을 제공하는 것이 종종 중요하다. 개시된 기술은 노출 및 변환 데이터를 조정할 때 사용자의 프라이버시를 유지할 수 있도록 함으로써 기술적 효과를 제공하고, 또한 노출 및 변환 데이터를 조정할 때 부정 행위를 방지하는 기술적 효과를 제공한다. 특히, 위에서 언급한 암호화 기술은 제3자가 당사자를 사용자로 다시 유도할 수 있는 민감한 노출 또는 변환 데이터를 가로채는 것을 방지한다. 또한 이러한 암호화 기술은 위의 방법에 관련된 모든 엔티티가 사용자에 대한 정보를 학습하지 못하도록(예: 특정 사용자에 대한 노출 및 변환 데이터를 일치시킴으로써) 사용자가 노출 또는 변환 데이터를 기반으로 추적되는 것을 방지한다. 예를 들어, 위에서 언급한 바와 같이, 노출 데이터 및 변환 데이터는 각각 제1 집계 서버의 제1 공개 키와 제2 집계 서버의 제2 공개 키를 사용하여 이중 암호화되어있다. 이 특정 기능은 암호화된 노출 데이터 및 변환 데이터를 복호화하려면 두 집계 서버(즉, 각각의 개인 키 사용)가 필요하므로 보안을 개선하고 사용자 개인 정보를 보호하는 데 사용된다. 이러한 방식으로 하나의 서버(또는 인터셉팅 당사자)만으로는 일반 텍스트 노출 또는 변환 데이터를 얻을 수 없으므로 보안이 향상된다. 따라서, 개시된 기술은 사용자 프라이버시가 유지될 수 있게 하는 디지털 컴포넌트와 사용자 상호 작용을 모니터링하기 위한 보안 시스템을 제공하는 기술적 문제를 해결한다.
디지털 컴포넌트와의 사용자 상호 작용을 모니터링하고 노출 및 변환 데이터를 조정할 때 부정(예: 디지털 컴포넌트와의 잘못된 사용자 상호 작용 에뮬레이션)를 방지하는 것도 종종 중요하다. 다중 집계 서버를 사용하여 멀티-파티 계산(MPC: multi-party computation)을 구성하면 각 서버가 서로 부정 행위의 징후(예: 서버 중 하나가 손상되거나 다른 엔티티와 공모하는 경우)를 확인할 수 있으며 측정 부정을 방지할 수 있다. 따라서 사용자 프라이버시를 유지하는 동시에 노출 및 변환 데이터를 조정할 때 부정 행위를 방지하는 개시된 기술에 의해 추가적인 기술적 효과가 가능해진다.
또한, 개시된 기술은 디지털 컴포넌트와의 사용자 상호 작용을 모니터링하기 위한 더 큰 유연성을 가능하게 하는 추가적인 기술적 효과를 제공한다. 특히, 클라이언트 장치 또는 애플리케이션에 대한 고유 식별자를 기반으로 하는 위에 언급된 조인 키를 사용하면 동일한 플랫폼 또는 교차 플랫폼 사용자 상호 작용을 모니터링할 수 있다(예: 노출 및 변환은 동일하거나 다른 웹 브라우저 또는 사용자 기기의 다른 애플리케이션을 통해 발생한다.). 또한, 위에서 언급한 바와 같이, 변환 데이터에는 암호화된 변환 값 데이터가 포함된다. 이를 통해 디지털 컴포넌트와의 사용자 상호 작용을 모니터링하고 변환 값를 기반으로 정량화할 수 있다. 변환 값 데이터가 암호화되어 있기 때문에 사용자 프라이버시를 유지하는 기술적 효과가 유지되므로 원치 않는 당사자가 변환 값 데이터에 액세스하여 사용자에 대한 정보를 유추하기 어렵다.
이들 및 기타 구현은 각각 다음 기능 중 하나 이상을 선택적으로 포함할 수 있다. 일부 양태에서, 각 변환에 대한 암호화된 변환 값 데이터는 확률적 동형 가산 공개 키 암호화 기술을 사용하여 첫번째 암호화되고, 제2 집계 서버의 공개 키를 사용하여 두 번째 암호화되고, 제1 집계 서버의 공개 키를 사용하여 세 번째 암호화되어 세 번 암호화된(thrice-encrypted) 변환 값을 포함한다.
일부 양태에서, 변환에 대한 상기 암호화된 변환 값 데이터는 변환 값의 암호화된 조합을 포함하고, 상기 변환을 위한 변환 데이터에 대한 리포팅 도메인은 리포팅된다. 위에서 설명한 것처럼 공개 키 기술을 사용하여 변환 값 데이터를 세 번째로 암호화하면 집계 서버가 변환 값 데이터의 일반 텍스트에 액세스하는 것을 방지하는 기술적 효과를 더 제공한다. 공개 키와 연결된(연관된) 개인 키 소유자 만 변환 값 데이터(예:리포팅 시스템)에 액세스할 수 있다. 따라서, 집계 서버 또는 원치 않는 당사자가 일반 텍스트 변환 값 데이터에 액세스할 수 없기 때문에 사용자 개인 정보를 보호하기 위해 이러한 방식으로 시스템의 보안이 더욱 향상될 수 있다.
일부 양태에서, 제1 집계 서버 및 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는, 제1 집계 서버에 의해, 각각의 제1 조인 키를 암호화하는 단계; 그리고 제1 집계 서버에 의해, 노출에 대한 암호화된 노출 데이터 및 노출에 대한 암호화된 제1 조인 키를 포함하는 데이터 쌍을 제2 집계 서버에 제공하는 단계를 포함한다.
일부 양태에서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는, 제2 집계 서버에 의해, 각각의 제2 조인 키를 암호화하는 단계; 각 변환에 대해, 제2 집계 서버에 의해, 변환을 위한 암호화된 제2 조인 키, 변환을 위한 암호화된 변환 데이터 및 변환을 위한 암호화된 변환 값을 포함하는 데이터 튜플을 제1 집계 서버에 제공하는 단계를 포함한다.
일부 양태에서, 각 변환에 대한 암호화된 변환 값 데이터는 확률적 동형 가산 공개 키 암호화 기술을 사용하여 첫번째 암호화되고, 제2 집계 서버의 공개 키를 사용하여 두 번째 암호화되고, 제1 집계 서버의 공개 키를 사용하여 세 번째 암호화되어 세 번 암호화된 변환 값을 포함한다. 제1 집계 서버 및 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는, 상기 제1 집계 서버에 의해 그리고 상기 제2 집계 서버로부터 수신된 각 데이터 튜플에 대해, 데이터 튜플의 암호화된 변환 값 데이터를 복호화하여 각 데이터 튜플에 대해 두 번 암호화된(twice-encrypted) 변환 값 데이터를 생성하는 단계; 그리고 암호화된 제1 조인 키 및 암호화된 제2 조인 키를 사용하여, 해당 노출 데이터 및 변환 데이터의 그룹을 식별하는 단계를 포함한다.
일부 양태에서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는, 제1 집계 서버에 의해 그리고 해당 노출 데이터 및 변환 데이터의 각 그룹에 대해, 암호화된 노출 데이터와 암호화된 변환 데이터를 기반으로 하는 키와 두 번 암호화된 변환 값 데이터인 값을 포함하는 키 값 쌍을 생성하는 단계; 그리고 제1 집계 서버에 의해, 각 키 값 쌍을 제2 집계 서버에 전송하는 단계를 포함한다.
일부 양태에서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는, 상기 제2 집계 서버에 의해, 상기 제2 집계 서버의 공개 키에 해당하는 제2 집계 서버의 개인 키를 이용하여 두 번 암호화된 변환 값 데이터를 복호화하여 한번 암호화된 변환 값 데이터를 생성하는 단계를 포함한다.
일부 양태에서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는, 제2 집계 서버에 의해, 한번 암호화된 변환 데이터, 및 각각의 한번 암호화된 변환 데이터에 대해 한번 암호화된 변환 값 데이터에 대응하는 키를 제1 집계 서버에 전송하는 단계를 포함한다.
일부 양태에서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는, 노출 및 변환 데이터의 각 그룹에 대해, 한번 암호화된 변환 값 데이터를 기반으로 총 변환 량(total conversion amount)을 결정하는 단계를 포함한다. 노출 및 변환 데이터의 각 그룹에 대한 총 변환 량은 그룹에서 한번 암호화된 변환 값 데이터를 합산하여 결정된다.
본 명세서에 설명된 주제는 다음의 장점 중 하나 이상을 실현하기 위해 특정 실시 예에서 구현될 수 있다. 본 명세서에 설명된 암호화 기술은 다양한 유형의 데이터 측정(측정치)을 계산하는 동시에 사용자 개인 정보를 보호하고 데이터의 부정한 조작을 방지한다. 예를 들어, 이 기술은 사용자 개인 정보를 보호하고 변환 리포팅 및 노출 리포팅에서 부정을 방지하는 동시에 노출 측정, 다양한 유형의 변환 및 변환의 집계 값(aggregated values)을 계산할 수 있다. 예를 들면, 이 기술은 CT(click-through) 변환, VT(view-through) 변환, 애플리케이션 다운로드 변환, 노출이 발생한 기기와는 다른 기기에서 변환이 발생하는 교차 장치(cross-device) 변환, 그리고 사용자 개인 정보를 보호하고 부정을 방지하면서 애플리케이션에서 노출이 발생하고 브라우저에서 변환이 발생한(또는 그 반대로) 애플리케이션에서 웹으로의 변환을 계산하는 데 사용할 수 있다. 이 기술은 또한 동일한 보호 기능으로 마지막 클릭 속성(attribution), 데이터 기반 및 멀티 터치 속성과 같은 다양한 속성 모델을 지원한다.
다중 집계 서버를 사용하여 멀티-파티 계산(MPC)을 형성하면 각 서버가 부정 활동의 징후를 확인하고 단일 서버가 언제든지 일반 텍스트로 사용자 데이터에 액세스할 수 없도록 한다. 본 명세서에 설명된대로 k-익명성(k-anonymity) 기술, 차등 개인 정보 보호 기술, 공개 키 암호화 및 추가/교체 동형 암호화 기술과 결합된 MPC를 사용하면 서버 중 하나가 손상되거나 다른 엔티티와 공모하더라도 사용자 개인 정보를 보호하고 측정치(measurements)에서의 부정을 방지할 수 있다. 블라인드 서명 기술을 사용하여 네트워크 데이터에 블라인드 서명하면 이러한 데이터가 부정인지 확인하는 동시에 다른 엔티티에 비-블라인드(unblind) 데이터를 전달하지 않음으로써 사용자 개인 정보를 보호할 수 있다. 네트워크 데이터를 포함하는 데이터 요소의 일부는 여러 엔티티의 부정 또는 공모를 방지하기 위해 블라인드 서명되거나 및/또는 여러 엔티티에 의해 암호화될 수 있다. 본 명세서에 설명된 바와 같이, 블라인드 데이터(예: 노출 데이터 또는 변환 데이터)는 암호화 기술을 사용하여 블라인드된 데이터이다. 블라인드 데이터는 엔티티가 블라인드 데이터에서 일반 텍스트 데이터를 확인할 수 없도록 위장한다. 엔티티는 데이터의 정당성을 확인하기 위해 데이터에 블라인드 서명할 수 있지만(예: 노출이 유효한지 결정하는 부정 감지 시스템은 블라인드 노출 데이터에 서명할 수 있음), 서명하는 엔티티는 실제로 일반 텍스트 데이터를 보지 않고도 데이터에 서명할 수 있다. 따라서 부정 탐지(감지) 서버 또는 다른 인터셉트 파티(당사자)(intercepting party)가 일반 노출 데이터를 볼 수 없기 때문에, 부정 탐지(감지) 서버를 사용하여 사용자 개인 정보가 손상되지 않는 동안 부정을 확인할 수 있다.
전술한 주제의 다양한 특징 및 장점은 도면과 관련하여 아래에서 설명된다. 추가 특징 및 장점은 여기에 설명된 주제 및 청구 범위로부터 명백하다.
도 1은 집계 서버가 집계된 네트워크 측정(측정치)을 결정하는 예시적인 환경의 블록 다이어그램이다.
도 2는 집계된 네트워크 측정을 결정하기 위한 예시적인 프로세스 흐름을 예시하는 블록도이다.
도 3은 집계된 데이터를 결정하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
도 4는 집계된 데이터를 결정하기 위한 다른 예시적인 프로세스를 예시하는 흐름도이다.
도 5는 데이터의 무결성을 검증하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
도 6은 사용자 프라이버시(개인 정보)를 보호하면서 이벤트의 연대순 순서를 생성하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
도 7은 데이터 기반 속성(attribution)을 사용하여 노출에 대한 변환을 어트 리뷰션(속성)(attributing)하는 예시적인 프로세스를 나타내는 흐름도이다.
도 8은 집계 변환 값을 결정하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
도 9는 집계된 변환 데이터를 결정하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
도 10은 예시적인 컴퓨터 시스템의 블록도이다.
다양한 도면에서 유사한 참조 번호 및 지정은 유사한 요소를 나타낸다.
일반적으로 본 명세서에서는 이벤트-레벨 및 집계된 네트워크 측정(측정치)을 결정할 때 부정(fraud)을 방지하기 위한 암호화 기술을 설명한다. 예를 들어, 본 명세서에 설명된 기술은 다양한 유형의 변환에 대한 디지털 컴포넌트에 대한 이벤트-레벨 및 집계된 노출 및 변환 측정을 결정할 때 부정을 방지할 수 있다. 본 명세서에 설명된 암호화 기술은 예를 들어 모든 엔티티가 사용자의 클라이언트 장치에서 수신한 사용자 데이터를 추적하거나 집계하지 못하도록 방지함으로써 사용자 개인 정보를 보호할 수도 있다.
시스템 개요
도 1은 집계 서버(180)가 집계된 네트워크 측정을 결정하는 예시적인 환경(100)의 블록도이다. 예시적인 환경(100)은 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷, 모바일 네트워크, 또는 이들의 조합과 같은 데이터 통신 네트워크(105)를 포함한다. 네트워크(105)는 클라이언트 장치(110), 발행자(130), 웹 사이트(140), 디지털 컴포넌트 배포 시스템(150), 부정 탐지(감지) 시스템(170), 변환 시스템(172), 집계 서버(180), 리포팅 시스템(190) 및 시간(타임) 서버(192)를 연결한다. 예시적인 환경(100)은 많은 상이한 클라이언트 장치(110), 발행자(130) 및 웹 사이트(140)를 포함할 수 있다. 일부 구현에서, 환경(100)은 또한 다수의 디지털 컴포넌트 배포 시스템(150), 부정 탐지 시스템(170), 변환 시스템(172) 및 리포팅 시스템(190)을 포함할 수 있다. 이 예에서는 두 개의 집계 서버(180-A 및 180-B)가 있지만 아래에 설명된대로 두 개 이상의 집계 서버(180-A 및 180-B)를 사용할 수도 있다.
웹 사이트(140)는 도메인 이름과 연관되고 하나 이상의 서버에 의해 호스팅되는 하나 이상의 리소스(145)이다. 예제 웹 사이트는 텍스트, 이미지, 멀티미디어 콘텐츠 및 스크립트와 같은 프로그래밍 요소를 포함할 수 있는 HTML 형식의 웹 페이지 컬렉션이다. 각 웹 사이트(140)는 웹 사이트(140)를 제어, 관리 및/또는 소유하는 엔티티인 발행자(130)에 의해 유지된다.
리소스(145)는 네트워크(105)를 통해 제공될 수 있는 임의의 데이터이다. 리소스(145)는 리소스(145)와 연관된 리소스 어드레스, 예를 들어 URL(Universal Resource Locator)에 의해 식별된다. 리소스에는 HTML 페이지, 워드 프로세싱 문서 및 PDF(Portable Document Format) 문서, 이미지, 비디오 및 피드 소스가 포함된다. 리소스에는 임베디드된 정보(예: 하이퍼 링크의 메타 정보) 및/또는 임베디드된 명령어(예: 스크립트)을 포함할 수 있는 단어, 구, 이미지 및 사운드와 같은 콘텐츠가 포함될 수 있다.
클라이언트 장치(110)는 네트워크(105)를 통해 통신할 수 있는 전자 장치이다. 예시적인 클라이언트 장치(110)는 개인용 컴퓨터, 모바일 통신 장치, 예를 들어 스마트 폰 및 네트워크(105)를 통해 데이터를 송수신할 수 있는 다른 장치를 포함한다.
클라이언트 장치(110)는 일반적으로 네트워크(105)를 통한 데이터의 송수신을 용이하게 하기 위해 웹 브라우저 및/또는 네이티브 애플리케이션과 같은 애플리케이션(112)을 포함한다. 네이티브 애플리케이션은 특정 플랫폼 또는 특정 장치 용으로 개발된 애플리케이션이다. 발행자(130)는 네이티브 애플리케이션을 개발하고, 클라이언트 장치(110)에 제공할 수 있으며, 예를 들어 네이티브 애플리케이션을 다운로드 가능하게 만들 수 있다. 일부 구현에서, 클라이언트 장치(110)는 비디오를 텔레비전으로 스트리밍하기 위해 텔레비전 또는 다른 디스플레이에 연결되는 스트리밍 장치와 같은 디지털 미디어 장치이다. 디지털 미디어 장치는 또한 비디오를 스트리밍하고 및/또는 리소스를 제공하는 웹 브라우저 및/또는 기타 애플리케이션을 포함할 수 있다.
웹 브라우저는 예를 들어, 클라이언트 장치(110)의 사용자가 웹 브라우저의 어드레스(주소) 바에 리소스(145)에 대한 리소스 어드레스를 입력하는 것에 응답하여 또는 리소스 어드레스를 참조하는 링크를 선택하는 것에 응답하여 발행자(130)의 웹 사이트(140)를 호스팅하는 웹 서버로부터 리소스(145)를 요청할 수 있다. 유사하게, 네이티브 애플리케이션은 발행자(130)의 원격 서버로부터 애플리케이션 콘텐츠를 요청할 수 있다.
일부 리소스(145), 애플리케이션 페이지 또는 다른 애플리케이션 콘텐츠는 리소스(145) 또는 애플리케이션 페이지와 함께 디지털 컴포넌트를 제공하기 위한 디지털 컴포넌트 슬롯을 포함할 수 있다. 본 명세서에서 사용되는 "디지털 컴포넌트"라는 용어는 디지털 콘텐츠 또는 디지털 정보의 개별 유닛(예: 비디오 클립, 오디오 클립, 멀티미디어 클립, 이미지, 텍스트 또는 다른 콘텐츠 유닛)을 의미한다. 디지털 컴포넌트는 물리적 메모리 장치에 단일 파일 또는 파일 컬렉션으로 전자적으로 저장될 수 있으며, 디지털 컴포넌트는 비디오 파일, 오디오 파일, 멀티미디어 파일, 이미지 파일 또는 텍스트 파일의 형태를 취할 수 있으며 광고 정보를 포함할 수 있고, 광고는 디지털 컴포넌트의 한 유형이다. 예를 들어, 디지털 컴포넌트는 웹 페이지의 콘텐츠 또는 애플리케이션(112)에 의해 제공되는 다른 리소스를 보충하기 위한 콘텐츠일 수 있다. 보다 구체적으로, 디지털 컴포넌트는 리소스 콘텐츠와 관련된 디지털 콘텐츠를 포함할 수 있다(예: 디지털 컴포넌트는 웹 페이지 콘텐츠와 동일한 주제 또는 관련 주제와 관련될 수 있음). 따라서 디지털 컴포넌트 분배 시스템(150)에 의한 디지털 컴포넌트의 제공은 웹 페이지 또는 애플리케이션 콘텐츠를 보충하고 일반적으로 향상시킬 수 있다.
애플리케이션(112)이 하나 이상의 디지털 컴포넌트 슬롯을 포함하는 리소스(145)(또는 애플리케이션 콘텐츠)를 로드할 때, 애플리케이션(112)은 디지털 컴포넌트 분배 시스템(150)으로부터 각 슬롯에 대한 디지털 컴포넌트를 요청할 수 있다. 디지털 컴포넌트 분배 시스템(150)은 차례로 디지털 컴포넌트 제공자(160)로부터 디지털 컴포넌트를 요청할 수 있다. 디지털 컴포넌트 제공자(160)는 리소스(145)와 함께 프리젠테이션을 위해 디지털 컴포넌트를 제공하는 엔티티이다.
일부 경우에, 디지털 컴포넌트 분배 시스템(150)은 또한 하나 이상의 디지털 컴포넌트 파트너(157)로부터 디지털 컴포넌트를 요청할 수 있다. 디지털 컴포넌트 파트너(157)는 디지털 컴포넌트 요청에 응답하여 디지털 컴포넌트 제공자(160)를 대신하여 디지털 컴포넌트를 선택하는 엔티티이다.
디지털 컴포넌트 분배 시스템(150)은 다양한 기준에 기초하여 각 디지털 컴포넌트 슬롯에 대한 디지털 컴포넌트를 선택할 수 있다. 예를 들면, 디지털 컴포넌트 분배 시스템(150)은 디지털 컴포넌트 제공자(160) 및/또는 디지털 컴포넌트 파트너(157)로부터 수신된 디지털 컴포넌트로부터, 리소스(145)와의 관련성(또는 애플리케이션 콘텐츠), 디지털 컴포넌트의 수행(예: 사용자가 디지털 컴포넌트와 상호 작용하는 비율) 등에 기초하여 디지털 컴포넌트를 선택할 수 있다. 디지털 컴포넌트 분배 시스템(150)은 리소스(145) 또는 다른 애플리케이션 콘텐츠와 함께 프리젠테이션을 위해 선택된 디지털 컴포넌트(들)를 클라이언트 장치(110)에 제공할 수 있다.
애플리케이션(112)이 디지털 컴포넌트를 제공할 때, 애플리케이션(112)(브라우저일 수 있음)은 디지털 컴포넌트의 프리젠테이션(표시)을 위한 노출 데이터(114)를 저장할 수 있다. 디지털 컴포넌트의 특정 프리젠테이션에 대한 노출 데이터(114)는 디지털 컴포넌트에 대한 랜딩 페이지의 URL 또는 도메인(예: 디지털 컴포넌트에 의해 링크된 페이지 및 사용자가 디지털 컴포넌트를 클릭하거나 상호 작용할 때 애플리케이션/브라우저가 사용자에게 페이지를 표시 함), 디지털 컴포넌트에 대한 하나 이상의 식별자, 노출과 관련된 이벤트-레벨 데이터, 노출 데이터가 클라이언트 장치(110)로부터 삭제될 때를 지정하는 만료 시간 및/또는 디지털 컴포넌트에 대한 변환 리포트가 전송될 리포팅 URL 또는 도메인을 포함할 수 있다. 이 데이터는 예를 들어 디지털 컴포넌트의 메타데이터 또는 디지털 컴포넌트의 앵커 태그와 같이 디지털 컴포넌트에 의해 제공될 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 디지털 컴포넌트의 각 노출에 대한 원시 노출 데이터를 저장하거나 저장하는 것 외에도, 애플리케이션(112)은 부정 탐지 시스템(170)에 의해 블라인드 서명된(blindly signed) 노출 데이터를 저장할 수 있다.
애플리케이션(112)은 또한 변환(conversion)이 검출되는 것에 응답하여 변환 데이터(116)를 저장할 수 있다. 디지털 컴포넌트에 대한 변환은 디지털 컴포넌트가 사용자에게 제공 및/또는 사용자와 상호 작용한 후 지정된 사용자 액션의 완료이다. 변환을 위한 변환 데이터(116)는 다양한 변환 측정 요구를 위한 다중 유형의 변환이 있기 때문에 변환의 유형을 나타내는 데이터를 포함할 수 있다. 변환 유형은 변환이 완료된 후 후속 액션을 지정할 수 있다. 예를 들어, 온라인 쇼핑 카트에 아이템(항목)을 추가하는 것이 변환일 수 있다. 이 예에서, 제1 유형의 변환은 체크 아웃하지 않고 항목을 추가하는 것일 수 있으며(예: 구매를 완료하지 않음) 제2 유형의 변환은 체크 아웃과 함께 항목을 추가하는 것일 수 있다. 아래에서 자세히 설명하는 것처럼, 변환을 위한 변환 데이터는 변환 유형을 나타내는 하나 이상의 비트의 세트일 수 있고, 애플리케이션은 블라인드 서명이 나중에 검증될 수 있도록 디지털 컴포넌트 분배 시스템(150)(또는 변환이 실제로 발생하는 변환 시스템)에 의해 블라인드 서명된 변환 데이터를 저장할 수 있다.
하나 이상의 서버로서 구현될 수 있는 부정 탐지 시스템(170)은 클라이언트 장치(110) 및/또는 애플리케이션(112)으로부터 수신된 부정 신호를 평가하여 노출이 유효한지 부정인지를 결정할 수 있다. 아래에 설명된대로, 부정 탐지 시스템(170)은 또한 변환 시스템(172)으로부터 수신된 부정 신호에 기초하여 변환이 유효한지 또는 부정인지, 예를 들어 디지털 컴포넌트를 본 사용자가 변환을 완료했는지 또는 다른 엔티티에 의해 변환이 위조되었는지 여부를 결정할 수 있다. 부정 신호는 애플리케이션에 따라 다를 수 있으며 구현에 따라 다를 수 있다.
노출 시간에, 애플리케이션(112)(또는 클라이언트 장치(110)상의 운영 체제)은 부정 탐지 신호를 수집하고 부정 탐지 신호를 부정 탐지 시스템(170)에 제공할 수 있다. 부정 탐지 신호에 더하여, 애플리케이션(112)은 부정 탐지 시스템(170)에 노출에 대한 블라인드 노출 데이터를 전송할 수 있다. 블라인드 노출 데이터는 암호화 기술을 사용하여 블라인드(예: 위장)된 노출 데이터이다. 노출 데이터를 블라인드 서명하면, 블라인드 노출 데이터에 서명하는 엔티티(주체)가 일반 텍스트(plaintext)로 노출 데이터에 액세스할 수 없으므로 사용자의 개인 정보를 보호할 수 있다. 부정 탐지 시스템(170)이 노출이 유효하다고 결정하면, 부정 탐지 시스템(170)은 블라인드 노출 데이터에 서명하고 서명된 블라인드 노출 데이터를 애플리케이션(112)에 제공할 수 있다. 블라인드 노출 데이터를 생성하고 블라인드 노출 데이터에 서명하는 기술의 예는 아래에 설명되어 있다.
부정 탐지 시스템(170)은 디지털 컴포넌트 배포 시스템(150)에 의해 운영될 수 있다. 일부 구현에서, 부정 탐지 시스템(170)은 하나 이상의 제3 자에 의해 운영된다. 예를 들어, 애플리케이션 제공자, 예를 들어 웹 브라우저 또는 네이티브 애플리케이션을 개발하고 제공하는 엔티티, 및/또는 디지털 컴포넌트 배포 시스템(150)을 운영하는 디지털 컴포넌트 분배자는 부정을 감지하고 다수의 다른 개발자의 애플리케이션(예를 들어, 웹 브라우저 및/또는 네이티브 애플리케이션)으로부터 수신된 블라인드 데이터를 블라인드 서명하기 위해 부정 탐지(감지) 시스템(170)을 작동하도록 하나 이상의 제3자를 인증할 수 있다.
하나 이상의 서버로 구현될 수 있는 변환 시스템(172)은 변환이 발생했는지 여부를 결정할 수 있다. 예를 들어, 각각의 디지털 컴포넌트 제공자(160)는 디지털 컴포넌트에 대해 변환이 발생하는지 여부를 결정하는 변환 시스템(172)을 운영할 수 있다. 특정 예에서 변환은 웹 사이트에서 제품을 획득하는 것일 수 있다. 이 예에서, 변환 시스템(172) 및 웹 사이트는 제품의 유통업자에 의해 유지될 수 있다. 변환 시스템(172)은 웹 사이트를 호스팅하는 웹 서버로부터, 상품이 획득되었음을 특정하는 데이터를 수신하고 변환이 발생한 데이터에 기초하여 결정할 수 있다.
다른 예에서, 변환은 애플리케이션의 다운로드일 수 있다. 이 예에서, 애플리케이션이 클라이언트 장치(110)에 다운로드될 때, 애플리케이션 스토어는 애플리케이션이 클라이언트 장치(110)에 다운로드되었음을 지정하는 데이터를 애플리케이션 개발자의 변환 시스템(172)에 제공할 수 있다. 일부 구현에서, 애플리케이션 스토어는 또한 변환 시스템(172)을 운영한다.
변환 시스템(172)은 또한 변환이 유효한지 또는 부정인지를 결정하기 위해 부정 탐지 시스템(170)과 상호 작용할 수 있다. 예를 들어, 변환 시스템(172)은 부정 탐지 시스템(170)에 블라인드 변환 데이터 및 부정 탐지 신호를 제공할 수 있다. 블라인드 변환 데이터는 암호화 기술을 사용하여 블라인드(예: 위장)된 변환 데이터이다. 부정 탐지 시스템(170)이 변환이 유효하고 및/또는 사용자 상호 작용이 진짜라고 결정하면 부정 탐지 시스템(172)은 블라인드 변환 데이터에 서명하고 서명된 블라인드 변환 데이터를 애플리케이션(112)에 제공할 수 있다. 블라인드 변환 데이터를 생성하고 블라인드 변환 데이터에 서명하는 기술의 예가 아래에 설명되어 있다.
집계(aggregation) 서버(180)는 클라이언트 장치(110)로부터 수신된 데이터에 기초하여 집계된 네트워크 측정(측정치)을 생성할 수 있다. 집계 서버(180)는 클라이언트 장치(110)로부터 수신된 데이터에 기초하여 다양한 유형의 변환에 대한 노출 및/또는 변환 카운트를 생성할 수 있다. 예를 들면, 집계 서버(180)는 디지털 컴포넌트에 대해, 사용자 개인 정보를 보호하고 부정을 방지하면서, VT(view-through) 변환, 애플리케이션 다운로드 변환, 교차 장치 변환, 애플리케이션에서 웹으로의 변환, CT(click-through) 변환의 카운트를 결정할 수 있다. 아래에 설명된대로, 집계 서버(180)는 MPC(multi-party computation) 프로토콜을 구현하고 교환 암호화 기술을 사용하여 사용자 프라이버시(개인 정보)를 보호하고 네트워크 측정을 결정하고 리포팅할 때 부정을 방지한다.
CT 변환은 사용자가 디지털 컴포넌트와 상호 작용한 후 사용자가 특정 액션을 완료하는 변환이다. VT 변환은 디지털 컴포넌트가 사용자에게 표시되고 사용자가 이후에 특정 액션을 완료하는 변환이다. 애플리케이션 다운로드 변환은 디지털 컴포넌트가 사용자에게 제공되고, 사용자가 이후에 예를 들어 제시된 디지털 컴포넌트에 의해 홍보되는 애플리케이션을 다운로드하는 변환이다. 이 예에서 애플리케이션의 다운로드는 특정 액션이다. 교차 장치 변환은 특정 액션이 디지털 컴포넌트가 표시된 기기와는 다른 기기에서 발생하는 변환이다. 애플리케이션에서 웹으로의 변환은 노출이 발생한(예: 디지털 컴포넌트가 애플리케이션에서 표시되고 특정 이벤트가 브라우저에서 발생한) 변환이다.
집계 서버(180)는 리포팅 시스템(190)에 노출 데이터(예를 들어, 노출 카운트), 변환 데이터(예를 들어, 변환 카운트)를 보고(리포트)할 수 있다. 리포팅 시스템(190)은 노출 데이터, 변환 데이터 및/또는 관련 네트워크 측정(측정치)을 전달하는 인커밍 요청을 수신하는 리포팅 URL을 구현하는 리포팅 도메인으로서 구현될 수 있다. 리포팅 시스템(190)은 디지털 컴포넌트 분배기(분배자), 또는 디지털 컴포넌트 분배 시스템(150) 또는 디지털 컴포넌트 분배기에 데이터를 보고(리포팅)하는 다른 엔티티에 의해 유지될 수 있다.
환경(100)은 또한 타임 서버(192)를 포함할 수 있다. 타임 서버(192)는 후술하는 기술 중 일부에서 사용될 수 있다. 후술하는 바와 같이, 타임 서버(192)는 타임 서버(192)의 공개 키를 이용하여 암호화된 일부 데이터를 복호화하는데 사용될 수 있다. 타임 서버(192)는 공개 키에 대응하는 개인 키를 기밀로 유지하고 개인 키를 사용하여 데이터를 복호화할 수 있다.
네트워크 측정(측정치)을 결정하기 위한 프로세스 흐름 예
도 2는 집계된 네트워크 측정을 결정하기 위한 예시적인 프로세스 흐름(200)의 블록도이다. 프로세스 흐름(200)은 도 1의 일부 컴포넌트에 의해 수행되는 것으로 도시되며, 하나 이상의 클라이언트 장치(110), 부정 탐지 시스템(170), 변환 탐지 시스템(172), 집계 서버(180-A 및 180-B) 및 리포팅 시스템(190)을 포함한다.
웹 브라우저 또는 네이티브 애플리케이션일 수 있는 애플리케이션(112)의 각 인스턴스는 변환 측정 목적으로 사용되는 고유 식별자를 가질 수 있다. 즉, 하나의 클라이언트 장치에서 특정 웹 브라우저의 인스턴스는 다른 클라이언트 장치에서 실행되는 특정 웹 브라우저의 다른 인스턴스와 다르며 고유한(고유) 식별자를 갖는다. 애플리케이션(112)에 대한 고유 식별자는 무작위로 또는 의사 무작위로 생성될 수 있고, 애플리케이션(112)은 애플리케이션(112) 외부에서 고유 식별자를 유출하지 않도록 구성될 수 있다. 아래에 설명된대로, 고유 식별자의 특성과 사용은 측정중인 변환 유형에 따라 달라질 수 있다. 교차 장치 측정을 지원하는 일부 구현에서, 동일한 사용자가 소유한 모든 클라이언트 장치(110)상의 모든 애플리케이션(들)(112)은 변환 측정 목적을 위해 사용되는 동일한 고유 식별자를 가질 수 있다.
클라이언트 장치(110)에서 애플리케이션(112)에 의해 디지털 컴포넌트가 제시 될 때, 애플리케이션(112)은 노출 데이터(mi), 목적지(dc_destination), 변환 측정 만료 날짜 및 디지털 컴포넌트에 대한 변환 보고서(리포트)를 수신할 리포팅 도메인(report_domain)을 기록할 수 있다. 노출 데이터는 불투명한 바이트 어레이의 형태일 수 있고, 예를 들어 디지털 컴포넌트에 대한 하나 이상의 식별자 및/또는 애플리케이션(112)에서 디지털 컴포넌트의 노출과 연관된 이벤트-레벨 데이터를 포함할 수 있다.
목적지(대상)는 URI(Uniform Resource Identifier), URL 또는 디지털 컴포넌트에 대한 랜딩 페이지(예: 디지털 컴포넌트에 의해 링크된 페이지, 및 사용자가 디지털 컴포넌트를 클릭하거나 상호 작용할 때 애플리케이션/브라우저가 사용자에게 페이지를 표시 함)의 도메인 또는 URL을 포함할 수 있다. URI의 예로는 애플리케이션을 다운로드하기 위한 애플리케이션 스토어에 대한 링크와 인앱(in-app) 구매를 위한 애플리케이션 내 위치에 대한 딥 링크가 있다. 따라서 대상(목적지)은 대상 도메인이라고도 한다. 변환 측정 만료일은 클라이언트 장치(110)에서 노출 데이터를 삭제해야하는 시간(또는 기간)일 수 있다. 리포팅 도메인은 예를 들어, 디지털 컴포넌트 제공자(160)가 변환 리포트(보고서)가 전송되기를 원하는 리포팅 시스템(190)에 대해 디지털 컴포넌트에 대한 변환 리포트가 전송될 리포팅 URL 또는 도메인일 수 있다.
일부 구현에서, 애플리케이션(112)은 또한 애플리케이션(112)이 디지털 컴포넌트를 제시할 때 사용자가 디지털 컴포넌트와 상호 작용, 예를 들어 선택 또는 클릭되었는지 여부를 지정하는 클릭 데이터(clicked)를 기록할 수 있다. 클릭 데이터는 부울 변수가 될 수 있으며, 예를 들어 상호 작용하면 값이 1이고 상호 작용하지 않으면 값이 0이다. 일부 다른 구현에서, 애플리케이션(들)(112)은 또한 사용자가 디지털 컴포넌트와 상호 작용하는 방식(예: 사용자가 설문 조사를 작성하거나 디지털 컴포넌트를 음소거 한 경우)을 나타내는 다른 유형의 메타데이터를 기록할 수 있다. 예를 들어, 사용자는 미래에 동일한(또는 유사한) 디지털 컴포넌트를 보고 싶지 않음을 나타내기 위해 디지털 컴포넌트를 음소거할 수 있다.
전술한 바와 같이, 애플리케이션(112)은 또한 디지털 컴포넌트의 노출이 유효한지 또는 부정인지를 결정하기 위해 부정 탐지 시스템(170)과 상호 작용할 수 있다. 애플리케이션(112)은 또한 노출이 유효하다면 부정 탐지 시스템(170)이 노출과 관련된 정보에 블라인드 서명하도록 요청할 수 있다.
일부 구현에서, 디지털 컴포넌트는 부정 탐지 신호(202)를 수집하고 부정 탐지 신호(202)를 평가를 위해 부정 탐지 시스템(170)으로 전송하는 컴퓨터 판독 가능 코드, 예를 들어 스크립트를 호출할 수 있다. 애플리케이션(112)은 노출이 유효하다면, 노출과 관련된 정보에 블라인드 서명하도록 부정 탐지 시스템(170)에 대한 요청과 함께 부정 탐지 시스템(170)에 대한 이 호출에 데이터를 추가할 수 있다.
일부 구현에서, 애플리케이션(112)은 부정 탐지 시스템(170)에 블라인드 노출 데이터(201)를 전송할 수 있다. 블라인드 노출 데이터(201)는 부정 탐지 시스템(170)에 의해 블라인드 서명될 두 개의 블라인드 노출 데이터 요소를 포함할 수 있다. 이러한 데이터 요소를 바인딩 및/또는 암호화하는 것은 부정 탐지 시스템(170)이 암호화되지 않은 사용자 데이터를 수신하고 사용자를 추적하는 것을 방지함으로써 사용자 프라이버시를 보호한다.
제1 암호화된 데이터 요소는 애플리케이션, 대상(목적지)(dc_destination) 및 리포팅 도메인(report_domain)에 대한 고유 식별자(ID)의 조합(예: 연결 또는 기타 조합)의 암호화된 암호화 해시(crypto-hashed) 버전이다. 이 제1 암호화된 데이터 요소는 CryptoHash(ID, dc_destination, report_domain)로 정의할 수 있다. 이 예의 암호화 해시는 튜플(ID, dc_destination, report_domain)을 해시 값에 매핑하는 단방향 암호화 해시 함수일 수 있다.
일례에서, 암호화 해시 함수는 HMAC(해시 기반 메시지 인증 코드), 예를 들어 HMACSHA256 메시지 코드이다. 예를 들어, 제1 암호화된 데이터 요소는 ID를 키로 사용하고 HMAC를 네스팅(nesting)하는 HMACSHA256(HMACSHA256(ID, dc_destination), report_domain)일 수 있다. 다른 예에서, 제1 암호화된 데이터 요소는 SHA256(ID || dc_destination || report_domain) 일 수 있다. 본 명세서에서 기호 ||는 간단한 메시지에서 복잡한(복합) 메시지를 구성하는 방법을 나타내며, 구성이 되돌릴 수 있는 경우, 즉 복합 메시지에서 단순 메시지를 다시 추출할 수 있다. 한 가지 예제 방법은 직렬화/역 직렬화를 사용하는 프로토콜 버퍼이다. 다른 예로는 JavaTM 직렬화, JSON(JavaScript Object Notation) 등이 있다.
제2 암호화된 데이터 요소는 노출 데이터(mi)와 디지털 컴포넌트가 클릭(clicked)되었는지 또는 다른 방식으로 상호 작용했는지를 지정하는 데이터의 조합의 암호화된 버전이다. 예를 들어, 애플리케이션(112)은 (mi || clicked)의 복합(complex) 메시지를 생성하고 예를 들어 리포팅 시스템(190)으로부터 인출된 공개 키를 사용하여 이 복합 메시지를 암호화할 수 있다. 이 복합 메시지는 노출 데이터와 디지털 컴포넌트가 클릭되었는지 또는 다른 방식으로 상호 작용했는지를 나타낸다. 애플리케이션(112)은 리포팅 시스템(190)의 공개 키를 사용하여 복합 메시지를 암호화할 수 있으므로, 리포팅 시스템(190)만이 공개 키에 수학적으로(mathematically) 링크되어 있는 개인 키를 사용하여 노출 데이터 및 클릭 데이터를 복호화할 수 있다. 리포팅 시스템(190)은 다른 엔티티가 이 정보에 액세스할 수 없도록 개인 키를 기밀로 유지할 수 있다. 이 제2 암호화된 데이터 요소는 PubKeyEncrypt(mi || clicked, report_domain)과 같이 정의할 수 있다. 이 표현에서, 쉼표 뒤에 "report_domain"이 포함된 것은 복합 메시지를 암호화하는 데 사용 된 공개 키가 리포팅 시스템(190)의 공개 키임을 나타낸다.
부정 탐지 시스템(170)은 블라인드 노출 데이터(201) 및 부정 탐지 신호(202)를 수신하고 부정 탐지 신호를 평가하여 디지털 컴포넌트의 노출이 유효한지 또는 부정인지를 결정할 수 있다. 부정 탐지 시스템(170)이 노출이 유효하다고 결정하면, 부정 탐지 시스템(170)은 블라인드 서명 기술을 사용하여 블라인드 노출 데이터(201)에 블라인드 서명할 수 있다. 예를 들어, 부정 탐지 시스템(170)은 블라인드 노출 데이터(201)의 제1 데이터 요소에 대한 제1 블라인드 서명 및 제2 암호화 데이터 요소에 대한 제2 블라인드 서명을 생성할 수 있다. 일부 구현에서, 블라인드 서명 기술은 CloudflareTM에서 지원하는 프라이버시 패스 프로토콜이거나 크롬(Chrome)의 트러스트 토큰일 수 있으며, 둘 다 IETF(Internet Engineering Task Force) VOPRF(Verifiable, Oblivious Pseudorandom Function) 드래프트 표준을 기반으로 한다.
이 VOPRF 블라인드 서명 프로토콜은 부정 탐지 시스템(170)에 노출된 정보의 양이 제한되어야 하고, 애플리케이션(112)이 서명이 유효하고 서명보다 더 많은 정보를 포함하지 않도록 보장해야 하기 때문에 특히 유리하며, 사용자를 추적하기 위해 추가 정보가 사용될 수 있다. 본 명세서에 설명된 기술의 목적을 위해, VOPRF 프로토콜은 함수를 적용하고 함수의 인수에 추가하지 않기 때문에 결정론적 프로토콜로 간주된다. 애플리케이션(112)은 서명 검증을 허용하고 노출 데이터의 블라인드 해제를 허용하는 서명 방식을 알 수 있다.
부정 탐지 시스템(170)은 블라인드 서명된 노출 데이터(203)를 애플리케이션(112)에 전송할 수 있다. 이 블라인드 서명된 노출 데이터(203)는 제1 및 제2 암호화된 데이터 요소 및 각각의 블라인드 서명을 포함한다.
애플리케이션(112)은 제1 암호화된 데이터 요소 및 제1 암호화된 데이터 요소에 대한 블라인드 서명을 사용하여 키를 생성할 수 있다. 이 키는 블라인드 서명된 조인 키(blindly signed join key)라고 할 수 있으며, BlindlySignedKey(ID, dc_destination, report_domain)로 정의될 수 있으며, 이는 부정 탐지 시스템(170)으로부터 수신된 제1 암호화된 데이터 요소의 블라인드 서명과 결합된 CryptoHash(ID, dc_destination, report_domain)를 나타낸다.
애플리케이션(112)은 또한 부정 탐지 시스템(170)으로부터 수신된 제2 암호화된 데이터 요소 및 블라인드 서명을 사용하여 다중 암호화된 노출 데이터를 생성할 수 있다. 예를 들어, 애플리케이션(112)은 제2 암호화된 데이터 요소(PubKeyEncrypt(mi || clicked, report_domain)) 및 제2 암호화된 데이터 요소의 블라인드 서명을 포함하는 복합 메시지를 암호화함으로써 두 번 암호화된 노출 데이터(ImpressionData2)를 생성할 수 있다. ImpressionData1이 한번 암호화된 데이터(제2 암호화된 데이터 요소)를 나타내도록 한다. 이 두 번 암호화된 노출 데이터는 ImpressionData2 =(PubKeyEncrypt(ImpressionData1 || blind_signature, Si)로 정의할 수 있으며, 여기서 blind_signature는 암호화된 제2 데이터 요소의 블라인드 서명을 나타내고, Si는 노출 데이터를 수집하는 집계 서버(180-A)의 공개 키를 나타낸다. 즉, 애플리케이션(112)은 1회(한번) 암호화된 데이터(ImpressionData1)와 1 회 암호화된 노출 데이터(ImpressionData1)의 블라인드 서명으로부터 복합 메시지를 생성하여 두 번 암호화된 노출 데이터(ImpressionData2)를 생성하고, 이 복합 메시지를 집계 서버(180-A)의 공개 키를 사용하여 암호화할 수 있다.
그 다음, 애플리케이션(112)은 변환 데이터를 수집하는 집계 서버(180-B)의 공개 키 및 2 회(두 번) 암호화된 노출 데이터(ImpressionData2)를 사용하여 3 회(세 번) 암호화된 노출 데이터(ImpressionData3)를 생성할 수 있다. 일부 구현에서, 세 번 암호화된 노출 데이터(ImpressionData3)는 확률적 공개 키 암호화를 사용하여 생성된다. 이 예에서 세 번 암호화된 노출 데이터는 ImpressionData3p =(PubKeyEncryptProbabilistic(ImpressionData2, Sc와 같이 정의할 수 있다.
이때 노출 데이터는 리포팅 시스템(190), 집계 서버(180-A) 및 집계 서버(180-B)의 공개 키를 사용하여 순차적으로 3 회 암호화된다. 이런 식으로, 애플리케이션(112)은 가장 안쪽에 있는 한번 암호화된 노출 데이터(PubKeyEncrypt(mi || clicked, report_domain)가 애플리케이션(112)에서 리포팅 시스템(190)으로 전송하는 동안 노출 데이터(mi)를 보호하기 때문에 충분한 프라이버시 보호와 함께 세 번 암호화된 노출 데이터(ImpressionData3p)를 집계 서버(180-A)로 안전하게 전송할 수 있다. 집계 서버(180-B)의 공개 키를 이용한 최외 확률적 공개 키 암호화는 리포팅 시스템(190), 집계 서버(180-A) 및 디지털 컴포넌트 배포 시스템(150) 간의 공모(collusion)을 방지하며, 공모 당사자는 안정적인 블라인드 서명된 노출 조인 키(BlindlySignedKey (ID, dc_destination, report_domain)) 및 재구성 가능한 한 번 암호화된 노출 데이터(PubKeyEncrypt (mi || clicked, report_domain))를 사용하여 발행자 도메인 전체의 사용자를 추적할 수 있다. 아래에 설명된대로, 2 개의 집계 서버(180-A 및 180-B)가 (PubKeyEncrypt(mi || clicked, report_domain)이 적용 가능한 모든 임계 값을 충족한다고 확신하는 경우에만, 집계 서버(180-A 및 180-B)가 각각의 집계 서버(180-A 및 180-B)에 의해 독립적으로 리포팅 시스템(190)에 전송될 (PubKeyEncrypt(mi || clicked, report_domain)를 알아내기 위해(uncover) 3 번 암호화된 노출 데이터를 공동으로(collaboratively) 복호화한다.
일부 구현에서, 부정 탐지 시스템(170)은 두 개의 다른 키를 사용하여 제1 암호화된 데이터 요소에 블라인드 서명하여 블라인드 서명된 노출 조인 키(BlindlySignedKey(ID, dc_destination, report_domain))를 생성하고 제2 암호화된 데이터 요소(ImpressionData1)에 블라인드 서명한다. 이를 통해 악의적인 애플리케이션(예: 악성 브라우저가 노출 데이터에 대해 블라인드 서명을 요청하고 나중에 이를 블라인드 서명된 노출 조인 키에 대한 서명으로 주장하거나 그 반대의 경우)을 방지할 수 있다.
애플리케이션(112)은 노출 데이터가 기록된 각각의 노출에 대해 노출 데이터, 예를 들어 3 회 암호화된 노출 데이터를 집계 서버(180-A)에 업로드할 수 있다. 예를 들어, 애플리케이션(112)은 다중 암호화된 노출 데이터(예를 들어, 3 회 암호화된 노출 데이터)를 주기적으로 일괄 업로드할 수 있다. 일부 구현에서, 애플리케이션(112)은 각각의 노출에 대해, 키로서 노출에 대한 블라인드 서명된 노출 조인 키(BlindlySignedKey(ID, dc_destination, report_domain)) 및, 값으로서 3 회 암호화된 노출 데이터(ImpressionData3p)를 포함하는 키 값 쌍 Mi(205)를 업로드한다.
이 일괄(배치)(batch) 업로드는 노출이 발생할 때 각 노출에 대해 키 값 쌍 Mi를 업로드하는 것보다 몇 가지 장점이 있다. 예를 들어, 일괄 업로드는 타이밍 기반 공격을 피하기 위해 집계 서버(180-A)에서 실제 노출 시간을 숨길 수 있다. 이는 또한 예를 들어 집계 서버(180-A)의 초당 쿼리(QPS: queries-per-second) 부하를 줄일 수 있다. 이는 또한 예를 들어 모바일 장치가 와이파이(Wi-Fi)에 연결되고 충전될 때 배치(batch) 업로드가 발생하는 경우 클라이언트 장치(110)에 의한 대역폭 및 배터리 소비를 감소시킬 수 있다. 이는 또한 암호화 키를 관리하기 위해 배치 프로토콜 인스턴스별로 키를 선택할 수 있고, 예를 들어 클라이언트 장치(110)와 집계 서버(180-A) 간의 통신이 HTTPS(Hypertext Transfer Protocol Secure)를 통해 이루어지는 경우 전체 배치에 동일한 암호화 키가 사용할 수 있다.
변환 시스템(172)이 클라이언트 장치(110)에 대해 실제 변환이 발생했다고 결정할 때, 변환 시스템(172)은 변환이 유효한지 또는 부정인지를 결정하기 위해 부정 탐지 시스템(170)과 상호 작용할 수 있다. 예를 들어, 변환 시스템(172)은 클라이언트 장치(110)로부터 부정 탐지 신호(211)를 획득하고 부정 탐지 신호(211)를 부정 탐지 시스템(170)으로 전송할 수 있다. 부정 탐지 시스템(170)은 부정 탐지 신호(211)를 평가하여 변환이 유효한지 또는 부정인지, 클라이언트 장치(110)가 신뢰할 수 있는지(루팅, 데이터 센터의 에뮬레이터 또는 다른 방식으로 손상되 경우), 및/또는 사용자의 상호 작용이 진짜인지를 결정할 수 있다.
부정 탐지 신호로, 변환 시스템(172)은 또한 변환이 유효하다면 부정 탐지 시스템(170)에 의해 블라인드 서명될 제3 암호화 데이터 요소를 전송할 수 있다. 이 제3 암호화된 데이터 요소는 애플리케이션(112)에 대한 고유 식별자(ID) 및 변환이 발생한 변환 도메인(conversion_domain)의 조합의 암호화된 버전을 포함할 수 있다. 변환 도메인은 변환이 발생한 웹 사이트일 수 있다. 이 데이터는 노출 데이터의 제1 암호화된 데이터 요소가 암호화되는 방식과 유사하게, 변환을 위해 리포팅 시스템(190)의 공개 키를 사용하여 암호화될 수 있다. 예를 들어, 세 번째 암호화된 데이터 요소는 CryptoHash(ID, conversion_domain, report_domain)로 정의될 수 있으며, 제1 암호화된 데이터 요소를 생성하는 데 사용된 것과 동일한 암호화 해시 함수를 사용하여 암호화될 수 있다.
부정 탐지 시스템(170)은 노출을 위해 제1 암호화된 데이터 요소에 서명하는 데 사용되는 동일한 프로토콜을 사용하여 제3 암호화된 데이터 요소에 블라인드 서명할 수 있다. 부정 탐지 시스템(170)은 블라인드 서명된 변환 데이터(212)를 변환 시스템(172)에 전송할 수 있다. 이 블라인드 서명된 변환 데이터(212)는 블라인드 서명된 제3(세 번째) 암호화 데이터 요소 및 제3 암호화 데이터 요소의 블라인드 서명을 포함할 수 있다. 변환 시스템(172)은 블라인드 서명된 변환 데이터(212)를 사용하여 블라인드 서명된 변환 키를 생성할 수 있다. 라인드 서명된 변환 키(BlindlySignedKey(ID, conversion_domain, report_domain))는 제3 암호화 데이터 요소와 부정 탐지 시스템(170)으로부터 수신된 제3 암호화 데이터 요소의 블라인드 서명의 조합이다. 이러한 방식으로 실제로 노출에 의해 변환이 실행(트리거)되는 경우, 노출시 dc_destination과 변환시 conversion_domain이 동일하다. 따라서 블라인드 서명된 노출 키는 블라인드 서명된 변환 키와 일치(매칭)한다.
변환 시스템(172)은 또한 변환을 위한 변환 메타데이터 mc 및 변환 시스템(172)의 개인 키를 사용하여 서명된 변환 데이터를 생성할 수 있다. 변환 메타데이터 mc에는 변환 유형, 레이블 및 양자화된 변환 값 등과 같은 변환 관련 데이터가 포함될 수 있다. 서명된 변환 데이터는 PrivateKeySign(mc, conversion_domain)으로 정의될 수 있다. 서명된 변환 데이터를 생성하는 것은 개인 키 및 공개 키 기반 디지털 서명 알고리즘을 사용하여 변환 메타데이터(metadata)에 디지털 서명을 추가하는 것을 포함할 수 있다. 변환 시스템(172)은 블라인드 서명된 변환 키 및 서명된 변환 데이터(213)를 애플리케이션(112)에 제공할 수 있다.
애플리케이션(112)은 서명된 변환 데이터(PrivateKeySign(mc, conversion_domain))를 이용하여 다중 암호화된 변환 데이터를 생성할 수 있다. 애플리케이션(112)은 변환을 위한 리포팅 시스템(190)의 공개 키를 이용하여 서명된 변환 데이터(PrivateKeySign(mc, conversion_domain))를 암호화함으로써 한번 암호화된 변환 데이터를 생성할 수 있다. 한번 암호화된 변환 데이터(ConversionData1)는 PubKeyEncrypt(PrivateKeySign(mc, conversion_domain), report_domain)으로 정의할 수 있다. 일부 구현에서, 변환 시스템(172)은 애플리케이션(112)보다는 다중 암호화된 변환 데이터 또는 적어도 한번 암호화된 변환 데이터를 생성할 수 있다.
디지털 서명과 결합된 암호화의 사용은 변환 시스템(172)에서 리포팅 시스템(190)으로의 전송 동안에 변환 데이터(mc)를 위조 및 도청으로부터 여러 중개자, 예를 들어 집계 서버(180-A 및 180-B)를 통해 보호한다. 집계를 용이하게 하고 이후 스테이지에서 k-익명성을 적용하려면 ConversionData1의 암호화 및 디지털 서명이 시간/배치 처리 시간의 윈도우 내에서 결정적이어야 하므로 동일한 일반 텍스트(plaintext)가 동일한 암호문(ciphertexts)에 매핑된다.
일부 경우에, 변환 메타데이터 mc에 엔트로피가 많지 않을 수 있다. 따라서 한번 암호화된 변환 데이터(ConversionData1)는 카디널리티(cardinality)가 제한되어 쉽게 추측할 수 있다. 이러한 경우, 의사 엔트로피(pseudo-entropy)(예: 암호화 키 기반 임의성)는 변환 메타 데이터 mc에서 복잡한 메시지를 구성하고 변환 도메인(conversion_domain)과 리포팅 도메인(report_domain)의 암호화 해시를 구성하고 복합 메시지를 암호화하여 변환 메타 데이터 mc에 추가할 수 있다. 이 예에서 한번 암호화된 변환 데이터(ConversionData1)는, PubKeyEncrypt(PrivateKeySign(mc || HMACSHA256(conversion_domain, report_domain), conversion_domain), report_domain)과 같이 정의할 수 있으며, 여기서 HMACSHA256(conversion_domain, report_domain)은 변환 도메인과 리포팅 도메인의 암호화 해시이며 의사 엔트로피를 추가한다. 이 예에서, 변환 도메인의 개인 키를 사용하여 복합 메시지에 서명하고 리포팅 도메인의 공개 키를 사용하여 서명된 복합 메시지를 암호화한다.
애플리케이션(112)은 변환 데이터를 수집하는 집계 서버(180-B)의 공개 키를 이용하여 1회 암호화된 변환 데이터(ConversionData1)를 암호화하여 2 회 암호화된 변환 데이터(ConversionData2)를 생성할 수 있다. 두 번(2회) 암호화된 변환 데이터(ConversionData2)는 PubKeyEncrypt(ConversionData1, Sc)로 정의할 수 있으며, 여기서 Sc는 집계 서버(180-B)의 공개 키를 나타낸다. 그러면 애플리케이션(112)은 노출 데이터를 수집하는 집계 서버(180-A)의 공개 키를 사용하여 2 회 암호화된 변환 데이터(ConversionData2)를 암호화함으로써 3 회 암호화된 변환 데이터(ConversionData3)를 생성할 수 있다. 일부 구현에서, 3 회 암호화된 변환 데이터(ConversionData3)는 확률적 공개 키 암호화를 사용하여 생성된다. 이 예에서 세 번 암호화된 변환 데이터는 PubKeyEncryptProbabilistic(ConversionData2, Si)과 같이 정의할 수 있으며, Si는 집계 서버(180-A)의 공개 키를 나타낸다.
애플리케이션(112)은 변환 데이터가 기록된 각 변환에 대해 변환 데이터를 집계 서버(180-B)에 업로드할 수 있다. 예를 들어, 애플리케이션(112)은 다중 암호화된 변환 데이터(예를 들어, 3 회 암호화된 변환 데이터)를 주기적으로 배치 업로드할 수 있다. 일부 구현에서, 애플리케이션(112)은 각각의 변환에 대해, 키로서 변환을 위해 블라인드 서명된 변환 키(BlindlySignedKey(ID, conversion_domain, report_domain)) 및 값으로서 3 회 암호화된 변환 데이터(ConversionData3 또는 ConversionData3p)를 포함하는 키 값 쌍(Mc)(215)를 업로드한다. 이 세 번째, 가장 바깥 쪽의 암호화는 집계 서버(180-B)가 안정적인 블라인드 서명된 변환 키와 두 번 암호화된 변환 데이터(ConversionData2)를 사용하여 변환을 리포팅하는 여러 도메인에서 사용자를 추적하는 것을 방지할 수 있다.
노출 및 변환 데이터 복호화을 위한 MPC 프로세스 예
집계 서버(180-A 및 180-B)는 멀티-스텝 MPC 프로세스를 사용하여 임계 값 및/또는 기타 프라이버시 보호 기준을 충족하는 수신된 데이터 서브세트를 집계 한 다음 복호화하고 리포팅 시스템(190)에 리포트(보고서)를 보낼 수 있다. 이 프로세스는 도 3에 예시되어 있으며, 이는 집계된 변환 데이터를 결정하기 위한 예시적인 프로세스(300)를 예시하는 흐름도이다. 프로세스(300)는 예를 들어 다수의 집계 서버, 예를 들어 도 1 및 2의 집계 서버(180-A 및 180-B)에 의해 구현될 수 있다.
집계 서버 A와 B는 교환 속성이 있는 교환 암호화 기술 "H"를 사용할 수 있다. 즉, 임의의 메시지 m과 두 개의 개별 암호화 키 K1 및 K2가 주어지면 교환 암호화 기술은 H(H(m, K1), K2) = H(H(m, K2), K1) 속성을 갖는다. 즉, 교환 암호화는 별개의 암호화 키를 사용하는 이중 암호화를 포함하며, 암호화 순서(데이터를 먼저 암호화하는 데 사용되는 키)는 어느 쪽이든 동일한 결과가 달성되므로 중요하지 않다.
각 집계 서버(180-A 및 180-B)는 각각 한 쌍의 비밀 암호화 키 Keyi(키 쌍을 나타냄) 및 Keyc(키 쌍을 나타냄)를 선택할 수 있다. 아래에 설명된대로, Keyii 키 중 하나를 사용하여 조인 키를 암호화할 수 있고, Keyi2 키들 중 하나를 사용하여 노출 데이터를 암호화/복호화할 수 있다. 마찬가지로 Keyc1 키들 중 하나를 사용하여 조인 키를 암호화할 수 있고, Keyc2 키들 중 하나를 사용하여 변환 데이터를 암호화/복호화할 수 있다. 집계 서버(180-A 및 180-B)는 지정된 기간, 노출 또는 변환 데이터 배치 당, 또는 기타 적절한 기준에 따라 주기적으로 새로운 키 쌍을 선택할 수 있다.
집계 서버(180-A)는 노출 데이터를 수신한다(302). 예를 들어, 집계 서버(180-A)는 여러 클라이언트 장치로부터 일련의 노출 데이터를 수신할 수 있다. 전술한 바와 같이, 각각의 클라이언트 장치는 주기적으로 노출 데이터의 배치를 집계 서버(180-A)로 보낼 수 있다.
노출 데이터는 각 노출에 대한 키 값 쌍의 형식으로 전송될 수 있다. 각 키 값 쌍은 키로 노출에 대해 블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))를 포함할 수 있으며 값으로 세 번 암호화된 노출 데이터(ImpressionData3p)를 포함할 수 있다.
집계 서버(180-B)는 변환 데이터를 수신한다(304). 예를 들어, 집계 서버(180-B)는 여러 클라이언트 장치로부터 일련의(배치) 변환 데이터를 수신할 수 있다. 전술한 바와 같이, 각 클라이언트 장치는 주기적으로 변환 데이터의 배치를 집계 서버(180-B)로 보낼 수 있다.
변환 데이터는 각 변환에 대한 키 값 쌍의 형식으로 전송될 수 있다. 각 키 값 쌍에는 변환을 위해 블라인드 서명된 변환 키(BlindlySignedKey(ID, dc_destination, report_domain))와 값으로 세 번 암호화된 변환 데이터(ConversionData3p)가 키로 포함될 수 있다.
각 노출에 대해, 집계 서버(180-A)는 교환 암호화 및 선택된 암호화 키 Keyi1(306)을 사용하여 조인 키를 암호화한다. 이 예에서 노출에 대한 조인 키는 노출에 대해 블라인드 서명된 결합 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))이다. 그 후, 집계 서버(180-A)는 각각의 노출에 대해 암호화된 조인 키 및 3 회 암호화된 노출 데이터를 집계 서버(180-B)에 제공할 수 있다. 즉, 집계 서버(180-A)는 각 노출에 대해 {H(BlindlySignedKey, Keyi1), ImpressionData3p} 쌍을 전송할 수 있다. 쌍은 무작위 또는 의사 무작위 순서로 전송될 수 있다.
각 변환에 대해, 집계 서버(180-B)는 교환 암호화 및 선택된 암호화 키 Keyc1(308)을 사용하여 조인 키를 암호화한다. 이 예에서 변환을 위한 조인 키는 변환을 위해 블라인드 서명된 변환 키(BlindlySignedKey(ID, conversion_domain, report_domain))이다. 그 후, 집계 서버(180-B)는 각각의 변환에 대해 암호화된 조인 키 및 3 회 암호화된 변환 데이터를 집계 서버(180-A)에 제공할 수 있다. 즉, 집계 서버(180-B)는 각 노출에 대해 {H(BlindlySignedKey, Keyc), ConversionData3p} 쌍을 전송할 수 있다. 쌍은 무작위 또는 의사 무작위 순서로 전송될 수 있다.
수신된 각각의 암호화된 조인 키 쌍과 세 번(3회) 암호화된 변환 데이터 {H(BlindlySignedKey, Keyc1), ConversionData3p}에 대해 집계 서버(180-A)는 조인 키와 변환 데이터를 다시 암호화한다(310). 일부 구현에서, 집계 서버(180-A)는 자신의 개인 키(공개 키 Si에 대응하는 개인 키)를 사용하여 세 번 암호화된 변환 데이터(ConversionData3p)를 복호화하여 두 번 암호화된 변환 데이터(ConversionData2)를 복구할 수 있다. 집계 서버(180-A)는 선택된 암호화 키 Keyi2를 사용하여 두 번 암호화된 변환 데이터(ConversionData2)를 다시 암호화할 수 있다. 이 암호화를 위해 결정론적 대칭 암호화 기술을 사용할 수 있다. 이 암호화된 변환 데이터는 변환 데이터가 3 개의 도메인, 리포팅 시스템(190), 집계 서버(180-B) 및 집계 서버(180-A)의 키를 사용하여 순차적으로 세 번 결정적으로 암호화 되었기 때문에 ConversionData3 '이라고할 수 있다.
집계 서버(180-A)는 선택된 암호화 키 Keyi2를 사용하여 이미 교환적으로 암호화된 블라인드 서명된 노출 키(H(BlindlySignedKey, Keyc)) 위에 교환 암호화를 적용할 수도 있다. 이 단계의 결과는 Ħ(BlindlySignedKey) 및 ConversionData3'이다. 집계 서버(180-A)는 수신된 각각의 암호화된 조인 키 쌍과 암호화된 3 회 암호화된 변환 데이터에 대해 2 개의 결과를 집계 서버(180-B)로 전송한다.
각각의 수신된 암호화된 조인 키 쌍 및 암호화된 3 회 암호화된 노출 데이터{H(BlindlySignedKey, Keyi1), ImpressionData3p}에 대해, 집계 서버(180-B)는 조인 키 및 노출 데이터를 재 암호화한다(312). 일부 구현에서, 집계 서버(180-B)는 2 회 암호화된 노출 데이터(ImpressionData2)를 복구하기 위해 자신의 개인 키(공개 키 Sc에 대응하는 개인 키)를 사용하여 3 회 암호화된 노출 데이터(ImpressionData3p)를 복호화할 수 있다. 집계 서버(180-B)는 선택된 암호화 키 Keyc2를 사용하여 두 번 암호화된 노출 데이터(ImpressionData2)를 다시 암호화할 수 있다. 이 암호화를 위해 결정론적 대칭 암호화 기술을 사용할 수 있다. 이 암호화된 변환 데이터는 ImpressionData3 '라고 할 수 있는데, 노출 데이터는 리포팅 시스템(190), 집계 서버(180-A) 및 집계 서버(180-B)의 3 개 도메인의 키를 사용하여 순차적으로 세 번 결정적으로 암호화되었다.
집계 서버(180-B)는 선택된 암호화 키 Keyc2를 사용하여 이미 교환적으로 암호화된 블라인드 서명된 노출 키(H(BlindlySignedKey, Keyi1)) 위에 교환 암호화를 적용할 수도 있다. 이 단계의 결과는 Ħ(BlindlySignedKey) 및 ImpressionData3'이다. 집계 서버(180-B)는 수신된 각각의 암호화된 조인 키 쌍 및 3 회 암호화된 노출 데이터에 대해 2 개의 결과를 집계 서버(180-A)로 전송한다.
집계 서버(180-A)는 암호화된 노출 및 변환 데이터를 결합(조인)하고 필터링한다(314). 집계 서버(180-B)로부터 결과를 수신한 집계 서버(180-A)는 각 노출에 대해 한 쌍의 결과 {Ħ(BlindlySignedKey) 및 ImpressionData3'}를 갖는다. 집계 서버(180-A)는 또한 각 변환에 대해 한 쌍의 결과 {Ħ(BlindlySignedKey) 및 ConversionData3'}를 가지고 있다.
블라인드 서명된 키는 교환 암호화를 사용하여 각 집계 서버(180-A 및 180-B)에서 한번씩 암호화되었으므로, 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))와 일치하는 노출에 대한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))는, 이러한 키가 애플리케이션(112)의 고유 식별자, 리포팅 시스템(190)의 도메인 및 디지털 컴폰너트에 대한 랜딩 페이지의 도메인을 기반으로 하므로 디지털 컴포넌트의 노출로 인해 변환이 발생했음을 나타낸다. 따라서, 집계 서버(180-A)는 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 사용하여 쌍을 결합할 수 있다. 해당 노출 데이터를 해당 변환 데이터와 결합하는 것은 노출 데이터를 변환 데이터에 연결하는 것을 포함할 수 있다. 예를 들어, 집계 서버(180-A)는 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 행 키로 사용하는 테이블 또는 기타 데이터 구조를 생성할 수 있다. 각 행에는 행 키와 결합된(조인된) 노출 데이터 및 변환 데이터가 포함될 수 있다. 아래 표 1에는 예제 테이블(표)이 나와 있다. 다른 예에서, 노출 데이터와 변환 데이터를 결합(조인)하는 것은 결합된 각 노출 데이터와 변환 데이터에 대해 행 키와 결합된 노출 데이터 및 변환 데이터를 포함하는 튜플을 생성하는 것을 포함할 수 있다.
행 키 세 번 암호화된 노출 데이터세 번 암호화된 노출 데이터 세 번 암호화된 변환 데이터
Ħ(BlindlySignedKey)) ImpressionData3’ ConversionData3’
... ... ...
그 다음, 집계 서버(180-A)는 k-익명성 기준을 만족하도록 데이터를 필터링할 수 있다. 집계 서버(180-A)는 각각의 3 회 암호화된 노출 데이터와 연관된 고유의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 결정할 수 있다. 세 번(3 회) 암호화된 각 노출 데이터는 노출 데이터 발생이라고도 한다. 노출 데이터는 애플리케이션별로 다르며 대신 제시된 디지털 컴포넌트를 기반으로 하기 때문에 여러 노출이 동일한 3 회 암호화된 노출 데이터를 가질 수 있지만 암호화된 다른 블라인드 서명된 키(Ħ(BlindlySignedKey))를 가질 수 있다.
집계 서버(180-A)는 각각의 고유 노출 데이터와 연관된 별개의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 k-익명성 임계 값과 비교할 수 있다. 수가 임계 값 미만인 경우 집계 서버(180-A)는 테이블 또는 기타 데이터 구조에서 노출 데이터의 발생을 필터링할 수 있다.
집계 서버(180-A)는 또한 각각의 세 번 암호화된 변환 데이터와 연관된 고유의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 결정할 수 있다. 세 번 암호화된 각 변환 데이터는 변환 데이터 발생이라고도 한다. 변환 데이터는 애플리케이션별로 다르며 대신 변환 이벤트와 관련된 데이터를 기반으로하기 때문에 여러 변환이 동일한 세 번 암호화된 변환 데이터를 가질 수 있지만 다른 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 가질 수 있다.
집계 서버(180-A)는 각각의 고유한 변환 데이터와 연관된 별개의 암호화된 블라인드 서명된 키의 횟수(Ħ(BlindlySignedKey))를 k-익명성 임계 값과 비교할 수 있다. 횟수가 임계 값 미만이면 집계 서버(180-A)는 테이블 또는 기타 데이터 구조에서 변환 데이터의 발생을 필터링할 수 있다.
집계 서버(180-A)는 또한 세 번 암호화된 노출 데이터 및 변환 데이터의 각 조합과 연관된 고유의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 횟수를 결정할 수 있다. 즉, 동일한 세 번 암호화된 노출 데이터와 동일한 세 번 암호화된 변환 데이터를 갖는 고유한 블라인드 서명된 키의 개수이다. 세 번 암호화된 노출 데이터와 동일한 세 번 암호화된 변환 데이터의 각 조합을 노출 교차 변환 데이터 발생이라고 할 수도 있다.
집계 서버(180-A)는 노출 교차 변환 데이터의 각 발생 횟수를 k-익명성 임계 값과 비교할 수 있다. 횟수가 임계 값 미만인 경우 집계 서버(180-A)는 테이블 또는 기타 데이터 구조에서 노출 교차 변환 데이터의 발생을 필터링할 수 있다. 그러면 집계 서버(180-A)는 필터링 후 나머지 데이터를 사용하여 아래 표 2와 같이 새 테이블 또는 데이터 구조를 생성할 수 있다. 표 2의 각 행은 pressionData3 '발생과 해당 ConversionData3'발생의 조합에 해당한다. 이 표는 각 조합의 발생 횟수, 예: 각 조합과 관련된 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 기록한다. 이 카운트는 동일한 노출 데이터를 가진 디지털 컴포넌트의 노출로 인해 발생하는 디지털 컴포넌트의 변환 수와 같다.
노출 교차 변환 데이터 발생 세 번 암호화된 노출 데이터 세 번 암호화된 변환 데이터
... ImpressionData3’ ConversionData3’
... ... ...
집계 서버(180-B)는 암호화된 노출 및 변환 데이터를 결합하고 필터링한다(316). 집계 서버(180-A)로부터 결과를 수신한 집계 서버(180-B)는 각 노출에 대해 한 쌍의 결과 {Ħ(BlindlySignedKey) 및 ImpressionData3 '}를 갖는다. 집계 서버(180-A)는 또한 각 변환에 대해 한 쌍의 결과 {Ħ(BlindlySignedKey) 및 ConversionData3 '}를 가지고 있다. 따라서, 집계 서버(180-B)는 집계 서버(180-A)와 동일한 데이터를 갖는다.
집계 서버(180-B)는 동일한 데이터를 사용하여 집계 서버(180-A)와 동일한 계산 및 필터링을 수행하여 동일한 결과에 도달할 수 있다. 즉, 집계 서버(180-B)는 집계 서버(180-A)에서 생성 한 표 2와 일치하는 표를 생성할 수 있다.
일부 구현에서, 두 집계 서버(180-A 및 180-B)는 서브 샘플링을 사용하는 것과 같은 차등 프라이버시를 보장하기 위해 일부 선택적 동작을 수행할 수 있다. 차동 프라이버시는 데이터 세트에 개별 데이터를 제공하지 않고 데이터 세트 내의 그룹 패턴을 설명하여 데이터 세트에 대한 데이터를 공유하는 기술이다. 이를 위해 각 집계 서버는 먼저 일부 확률 베타로 데이터(예: 표 1의 행)를 샘플링할 수 있다. 그런 다음 집계 서버는 위에서 설명한 k-익명성 일반화를 샘플링된 데이터에만 적용한다. 즉, 집계 서버는 각 발생 유형에 대해 암호화된 고유한 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 결정하고 샘플링된 데이터에서 k-익명성 임계 값을 충족하지 않는 키를 필터링할 수 있다.
서브 샘플링의 경우 두 집계 서버가 정확히 동일한 샘플링을 복제하고 동일한 차등 프라이버시 기술을 수행하도록 하기 위해 집계 서버는 의사 난수 기반 샘플링을 사용할 수 있다. 샘플링을 위한 무작위화는 두 서버가 공동으로 결정하는 공통 시드(예: Diffie-Hellman 키 교환 사용)에서 결정될 수 있다. 교환의 결과는 동일한 의사 난수 생성기(예: AES(Advanced Encryption Standard) 알고리즘 기반)에 대한 시드이다. 이렇게 하면 두 집계 서버에서 동일한 서브 세트가 샘플링되고 의사 난수가 동일하면 나머지 프로세스가 결정적이기 때문에 동일한 결과가 계산된다.
결합 및 필터링 후 두 집계 서버(180-A 및 180-B)는 동일한 데이터, 예를 들어, 각각 {count, ImpressionData3 ', ConversionData3'}를 포함하는 튜플 리스트 또는 테이블(표))를 갖는다. 이 카운트는 ImpressionData3 '로 표시되는 동일한 노출 데이터가 있는 노출에 대한 변환 수이다.
각 튜플에 대해, 집계 서버(180-A)는 세 번 암호화된 변환 데이터(ConversionData3 ')를 복호화한다(318). 집계 서버(180-A)는 선택된 암호화 키 Keyi2를 사용하여 세 번 암호화된 변환 데이터(ConversionData3')를 복호화하여 {count, ImpressionData3', ConversionData2 '}를 얻을 수 있다. 집계 서버(180-A)는 이러한 결과 튜플을 집계 서버(180-B)로 보낼 수 있다.
마찬가지로, 각 튜플에 대해 집계 서버(180-B)는 세 번 암호화된 노출 데이터(ImpressionData3')를 복호화한다(320). 집계 서버(180-B)는 선택된 암호화 키 Keyc2를 사용하여 세 번 암호화된 노출 데이터(ImpressionData3')를 복호화하여 {count, ImpressionData2, ConversiodData3'}를 얻을 수 있다. 집계 서버(180-B)는 이러한 결과 튜플을 집계 서버(180-A)로 보낼 수 있다.
집계 서버(180-A)는 수신된 각각의 결과 튜플 {count, ImpressionData2, ConversionData3 '}(322)의 두 번 암호화된 노출 데이터(ImpressionData2) 및 세 번 암호화된 변환 데이터(ConversionData3')를 복호화한다. 집계 서버(180-A)는 집계 서버(180-A)의 공개 키 Si에 대응하는 개인 키를 이용하여 2 회(두 번) 암호화된 노출 데이터(ImpressionData2) 및 세 번 암호화된 변환 데이터(ConversionData3 ')를 복호화할 수 있다. 이 복호화는 수신된 각 튜플에 대해 튜플 {count, ImpressionData1, ConversionData2}가 된다. 집계 서버(180-A)는 이러한 각 튜플 {count, ImpressionData1, ConversionData2}를 집계 서버(180-B)로 전송할 수 있다.
집계 서버(180-B)는 수신된 각 결과 튜플 {count, ImpressionData3', ConversionData2}의 세 번 암호화된 노출 데이터(ImpressionData3') 및 두 번 암호화된 변환 데이터(ConversionData2)를 복호화한다(324). 집계 서버(180-B)는 집계 서버(180-B)의 공개 키 Sc에 대응하는 개인 키를 이용하여 세 번 암호화된 노출 데이터(ImpressionData3') 및 2 회 암호화된 변환 데이터(ConversionData2)를 복호화할 수 있다. 이 복호화는 수신된 각 튜플에 대해 튜플 {count, ImpressionData2, ConversionData1}이 된다. 집계 서버(180-B)는 이러한 각 튜플 {count, ImpressionData2, ConversionData1}을 집계 서버(180-A)로 전송할 수 있다.
집계 서버(180-A)는 수신된 각 튜플 {count, ImpressionData2, ConversionData1}(326)의 노출 데이터를 복호화한다. 집계 서버(180-A)는 집계 서버(180-A)의 공개 키 Si에 대응하는 개인 키를 사용하여 수신된 각 튜플 {count, ImpressionData2, ConversionData1}의 노출 데이터를 복호화한다. 이 복호화은 수신된 각 튜플에 대해 튜플 {count, ImpressionData1, ConversionData1}이 된다.
이 튜플에서, 노출 데이터(ImpressionData1)는 PubKeyEncrypt(mi || clicked, report_domain) || blind_signature)이므로, 리포팅 시스템(190)의 공개 키를 사용하여 암호화된 노출 데이터와 노출 시간에 생성된 제2 데이터 요소의 블라인드 서명을 포함한다. 변환 데이터(ConversionData1)는 PubKeyEncrypt(PrivateKeySign(mc, conversion_domain), report_domain)이므로, 리포팅 시스템(190)의 공개 키를 사용하여 암호화된 변환 데이터를 포함한다.
집계 서버(180-B)는 수신된 각 튜플 {count, ImpressionData1, ConversionData2}(328)의 변환 데이터를 복호화한다. 집계 서버(180-B)는 집계 서버(180-B)의 공개 키 Sc에 대응하는 개인 키를 사용하여 수신된 각 튜플 {count, ImpressionData1, ConversionData2}의 변환 데이터를 복호화한다. 이 복호화은 수신된 각 튜플에 대해 튜플 {count, ImpressionData1, ConversionData1}이 된다.
집계 서버(180-A)에 의해 복호화된 튜플과 마찬가지로, 이 튜플에서 노출 데이터(ImpressionData1)는 PubKeyEncrypt(mi || clicked, report_domain) || blind_signature)이므로, 리포팅 시스템(190)의 공개 키를 사용하여 암호화된 노출 데이터 및 노출 시간에 생성된 제2 데이터 요소의 블라인드 서명을 포함한다. 변환 데이터(ConversionData1)는 PubKeyEncrypt(PrivateKeySign(mc, conversion_domain), report_domain)이므로, 리포팅 시스템(190)의 공개 키를 사용하여 암호화된 변환 데이터를 포함한다.
집계 서버(180-A)는 각각의 복호화된 튜플에 대해 변환 리포트를 튜플에 대한 리포팅 시스템(190)으로 전송한다(330). 유사하게, 집계 서버(180-B)는 각각의 복호화된 튜플에 대해 변환 리포트를 튜플에 대한 리포팅 시스템(190)에 전송한다(332). 변환 리포트에는 복호화된 튜플 또는 복호화된 튜플에 포함된 데이터가 포함될 수 있다.
집계 서버(180-A 및 180-B)는 각 튜플에 대한 리포팅 시스템의 URL을 얻을 수 있으며, 따라서 각 변환은 다양한 방법으로 얻을 수 있다. 일 예에서, 노출이 발생하는 애플리케이션(112)은 예를 들어 노출 시간에 그리고 키 값 쌍 Mi의 일부로서 평문(일반 텍스트)(plaintext)으로 집계 서버(180-A)에 report_domain(예: 리포팅 시스템(190)의 URL)을 전송할 수 있다. 유사하게, 변환이 발생하는 애플리케이션(112)은 예를 들어 키 값 쌍 Mc의 일부로서 변환 시간에 평문으로 집계 서버(180-B)에 report_domain을 전송할 수 있다.
다른 예에서, 브라우저 개발자(또는 애플리케이션 개발자)는 허용된 리포팅 시스템(190) 및 그들의 report_domain의 화이트리스트를 게시할 수 있다. 브라우저(또는 애플리케이션)는 주기적으로 화이트리스트를 다운로드하고 변환 리포트를 보내기 위해 화이트리스트를 적용할 수 있다.
다른 예에서, 브라우저 또는 애플리케이션은 (t, n) 임계 값 암호화 기술을 사용하여 report_domain(리포트 도메인)을 암호화하고 암호화된 report_domain을 집계 서버(180-A 및 180-B)로 보낼 수 있다. 이 예에서 집계 서버(180-A 및 180-B)는 최소 t 개의 브라우저 또는 애플리케이션이 동일한 report_domain을 보고한 경우에만 일반 텍스트 report_domain을 복구할 수 있다. 다른 예에서, 예를 들어 report_domain에 충분한 엔트로피가 없는 경우 report_domain의 파생은 (t, n)-임계 암호화 기술에서 사용될 수 있다. 예를 들어, 파생은 디지털 컴포넌트에 대한 랜딩 페이지의 report_domain과 암호화 해시의 조합일 수 있다.
도 2를 참조하면, 리포팅 시스템(190)은 각각의 한번 암호화된 변환 데이터(ImpressionData1) 및 PubKeyEncrypt(PrivateKeySign(mc, conversion_domain), report_domain) 쌍에 대해 집계 서버(180-A 및 180-B)로부터 2 개의 변환 리포팅(127 및 128)를 수신한다. 각 변환 보고서(리포트)(127 및 128)는 노출 및 변환의 각 조합에 대해, 예를 들어 위에서 설명한 표로부터 유도된 바와 같이 필터링 된 데이터의 조합에 대한 수(number)를 포함할 수 있다. 집계 서버(180-A)로부터 수신된 변환 보고서(127)의 데이터는 동일한 배치의 노출 및 변환 데이터에 대해 집계 서버(180-B)로부터 수신된 변환 보고서(128)의 데이터와 일치해야 한다. 리포팅 시스템(190)은 잠재적인 악의적 행동 징후에 대한 불일치를 식별하기 위해 두 수(number)를 비교할 수 있다.
리포팅 시스템(190)은 또한 노출 데이터에 대한 블라인드 서명을 검증하기 위해 부정 탐지 시스템(170)을 호출할 수 있다. 리포팅 시스템(190)은 자신의 개인 키를 사용하여 암호화된 변환 데이터를 복호화할 수 있다. 리포팅 시스템(190)은 변환 시스템의 공개 키를 사용하여 변환 데이터에 대한 디지털 서명을 확인할 수 있다. 두 검증 모두 성공하면, 리포팅 시스템(190)은 변환 측정 데이터가 유효하다는 것을 확신할 수 있다.
변환 보고서의 수신자는 변환 보고서의 데이터를 신뢰할 수 있어야 한다. 두 집계 서버(180-A 및 180-B)에서 받은 변환 보고서를 비교하고 블라인드 서명을 확인하는 위의 기술은 변환 리포팅 파이프 라인에서 대부분의 부정을 방지할 수 있다. 그러나 두 집계 서버가 결합되어 변환 수를 수정할 수 있다. 이러한 공모를 방지하기 위해, 변환 서버(172)는 변환 데이터를 클라이언트 장치(110)에 제공하기 전에 변환 데이터를 암호화하고 디지털 서명할 수 있다. 예를 들어, 변환 시스템(172)은 서명을 보존하는 비대칭 추가 동형 암호화 또는 다른 구조 보존 서명 기술을 사용하여 변환 데이터를 암호화하고 디지털 서명할 수 있다. 이러한 방식으로 디지털 서명은 위에서 설명한대로 세 번 암호화(또는 다중 암호화)된 후에 보존된다. 이 암호화는 집계 서버(180-A 및 180-B)가 변환 데이터에 액세스하는 것을 방지하고 수신자가 디지털 서명을 확인하여 변환 데이터가 수정되지 않았음을 확인할 수 있도록한다. 변환 데이터에 변환 값이 포함된 경우, 아래 설명과 같이 각 변환 값를 유사한 방식으로 암호화하고 서명할 수 있다.
위에서 설명한 변환 리포팅 기술은 다양한 유형의 변환 이벤트를 지원할 수 있다. 동일한 브라우저(또는 동일한 애플리케이션) CT(click-through) 변환 및 VT(view-through) 변환을 지원하기 위해, 브라우저 또는 애플리케이션은 변환 측정 전용으로 브라우저 전체(또는 애플리케이션 전체)에서 임의로 생성된 고유 식별자(ID)를 선택할 수 있다. 브라우저(또는 애플리케이션)는 노출 및 변환 시간 모두에서 BlindlySignedKey(ID, conversion_domain, report_domain)를 계산할 수 있다. CT 변환과 VT 변환을 구분하기 위해 노출 시간에 브라우저 또는 애플리케이션은 사용자가 노출 데이터 mi와 함께 클릭된 부울 변수를 사용하여 디지털 컴포넌트와 상호 작용했는지 여부를 인코딩할 수 있다. 다른 구현에서, 브라우저 또는 애플리케이션은 예를 들어, 디지털 컴포넌트와의 사용자 상호 작용의 유형을 인코딩할 수 있다(예: 디지털 컴포넌트 음소거, 설문 조사 작성 등).
애플리케이션과 웹 브라우저 간의 동일 기기(동일 장치) 변환을 지원하기 위해, 브라우저와 애플리케이션은 기기-레벨에서 임의로 생성된(예: 기기의 운영체제 별) 고유 식별자(ID)를 사용하여 노출 및 변환을 보고할 수 있다. 또한 웹 브라우저가 아닌 애플리케이션에서 변환이 발생하는 경우, conversion_domain(변환 도메인)은 애플리케이션의 이름이나 애플리케이션을 식별하는 애플리케이션 개발자의 인증서일 수 있다.
교차 장치(기기) 변환(예: 사용자의 한 기기에서 발생한 노출과 사용자의 다른 기기에서 발생한 변환)을 지원하기 위해 고유 식별자(ID)는 사용자에 대한 정보이거나 이러한 정보를 기반으로 할 수 있다. 예를 들어 고유 식별자(ID)는 사용자 로그인 자격 증명의 암호화 해시, 사용자가 제공한 전화 번호 또는 이메일 주소 또는 사용자가 제공한 기타 개인 식별 정보일 수 있다. 예를 들어 사용자는 모바일 애플리케이션에 로그인할 수 있다. 동일한 사용자가 모바일 애플리케이션의 로그인 자격 증명을 사용하여 발행자의 웹 사이트에 로그인할 수 있다. 동일한 로그인 자격 증명을 웹 사이트와 모바일 애플리케이션간에 발생하는 교차 장치 변환에 대한 사용자 식별자(ID)로 사용할 수 있다.
도 4는 집계된 변환 데이터를 결정하기 위한 다른 예시적인 프로세스(400)를 예시하는 흐름도이다. 프로세스(400)는 예를 들어 다수의 집계 서버, 예를 들어 도 1 및 2의 집계 서버(180-A 및 180-B)에 의해 구현될 수 있다.
제1 집계 서버(180-A)는 다수의 클라이언트 장치로부터 노출 데이터를 수신한다(402). 클라이언트 장치에 의해 기록된 디지털 컴포넌트의 각 노출에 대해 노출 데이터는 제1 키 값 쌍을 포함할 수 있다. 노출에 대한 제1 키 값 쌍은 노출이 발생한 클라이언트 장치의 애플리케이션 또는 클라이언트 장치에 대한 고유 식별자를 기반으로 하는 제1 키를 포함할 수 있다. 예를 들어 노출에 대한 제1 키는 블라인드 서명된 노출 키일 수 있으며, 위에서 설명한 것처럼 클라이언트 장치에서 수신한 BlindlySignedKey(ID, dc_destination, report_domain)로 정의할 수 있다.
노출에 대한 제1 키 값 쌍은 제1 집계 서버의 제1 공개 키를 사용하고 제1 집계 서버와는 다른 제2 집계 서버의 제2 공개 키를 사용하여 암호화된 노출 데이터를 포함하는 제1 값도 포함할 수 있다. 예를 들어 제1 값은 클라이언트 장치에서 수신한 세 번 암호화된 노출 데이터(ImpressionData3)일 수 있다.
제2 집계 서버는 다중(다수의) 클라이언트 장치의 적어도 일부로부터 변환 데이터를 수신한다(404). 변환 데이터는 클라이언트 장치에 의해 기록된 각 변환에 대해, 클라이언트 장치 또는 변환이 발생한 클라이언트 장치상의 애플리케이션에 대한 제2 고유 식별자에 기초한 제2 키를 포함하는 제2 키 값 쌍을 포함할 수 있다. 예를 들어, 변환을 위한 제2 키는 클라이언트 장치에서 수신한 블라인드 서명된 변환 키(BlindlySignedKey(ID, conversion_domain, report_domain))일 수 있다.
변환을 위한 제2 키 값 쌍은 제1 암호화 키 및 제2 암호화 키를 사용하여 암호화된 변환 데이터를 포함하는 제2 값을 포함할 수 있다. 예를 들어, 제2 값은 클라이언트 장치에서 수신한 세 번 암호화된 변환 데이터(ConversionData3)일 수 있다.
집계 서버(180-A 및 180-B)는 MPC(multi-party computation) 프로세스를 수행하여 암호화된 노출 및 변환 데이터를 결합하고 결합 결과를 필터링한 다음 암호화된 노출 데이터 및 개인 정보 보호 기준을 충족하는 암호화된 변환 데이터의 서브 세트을 복호화한다(406). 이 MPC 프로세스는 제1 키 및 제2 키에 기초하여 암호화된 변환 데이터 쌍 및 대응하는 암호화된 노출 데이터를 식별하는 것을 포함할 수 있다. 암호화된 노출 데이터 및 변환 데이터의 각 쌍에 대한 노출 데이터 및 변환 데이터는 제1 공개 키에 해당하는 제1 개인 키와 제2 공개 키에 해당하는 제2 개인 키를 사용하여 여러 단계에서 복호화될 수 있다. 각 스테이지는 암호화된 변환 데이터 및 대응하는 암호화된 노출 데이터의 각 쌍의 암호화된 변환 데이터 또는 암호화된 노출 데이터 중 하나를 복호화하는 제1 집계 서버 또는 제2 집계 서버 중 하나를 포함하며, 제1 집계 서버 또는 제2 집계 서버 중 하나는 결과 데이터를 제1 집계 서버 또는 제2 집계 서버 중 다른 하나로 전송한다. 이 MPC 프로세스는 도 3에 도시된 프로세스(300)와 동일하거나 유사할 수 있다.
복호화된 노출 데이터의 각 부분 및 복호화된 변환 데이터의 각 부분은 각각의 리포팅 시스템으로 전송된다(408). 예를 들어, 각 집계 서버(180-A 및 180-B)는 위에서 설명한 바와 같이 변환 보고서를 각각의 리포팅 시스템에 전송할 수 있다.
각 집계 서버 데이터의 무결성 확인(검증)
전술한 바와 같이, 프로세스(300)의 시작에서, 집계 서버(180-A)는 각 노출에 대한 키 값 쌍의 형태로 노출 데이터(Mi)를 수신한다. 각 키 값 쌍에는 세 번 암호화된 노출 데이터(ImpressionData3p)의 노출에 대한 블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))가 포함될 수 있다. 세 번 암호화된 노출 데이터(ImpressionData3p)의 마지막 암호화는 집계 서버(180-B)의 공개 키를 사용하여 확률적(probabilistic)이다. 따라서, 집계 서버(180-B) 이외의 다른 당사자는 세 번 암호화된 노출 데이터(ImpressionData3p)를 복호화할 수 없으며, 이는 집계 서버(180-B)를 제외한 모든 서버에 대해 암호화된 난수일 수 있다.
또한, 애플리케이션(112)을 제외한 다른 어떤 당사자도 사용자 식별자(ID)의 평문 값을 알지 못한다. 공모(colluding) 당사자가 복구할 수 있는 유일한 정보는 블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain)) 뒤에 있는 익명의 사용자가 알 수 없는 특성을 가진 다수의 노출을 가지고 있다는 것이다. 공모 당사자는 전체 디지털 컴포넌트 렌더링이 대상(dc_destination) 및 리포팅 도메인(report_domain)에 의해 분할되기 때문에 애플리케이션(112)/클라이언트 장치(110/사용자)가 본 총 노출 수를 추론할 수 없다.
블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))와 관련된 사용자에게 표시되는 노출 수를 아는 것이 문제가 되는 경우, 애플리케이션(112)은 임의 또는 의사-무작위 시간 동안 반복적으로 노출에 대한 노출 데이터(Mi)를 전송할 수 있다. 세 번 암호화된 노출 데이터(ImpressionData3p)를 생성할 때 적용되는 확률적 암호화를 고려할 때, 집계 서버(180-A) 및 모든 공모 당사자는 수신된 노출 데이터를 중복 제거할 수 없다. 그러나 집계 서버(180-B)는 세 번 암호화된 노출 데이터(ImpressionData3p)를 복호화 한 후 노출을 중복 제거하여 2 회 암호화된 노출 데이터(ImpressionData2)를 복구할 수 있다.
프로세스(300)를 참조하여 전술한 바와 같이, 프로세스(300)의 단계 310의 시작에서, 집계 서버(180-A)는 집계 서버(180-B)로부터 302 단계에서 집계 서버(180-A)가 가지고 있는 것과 결합(조인)할 수 없는 쌍{H(BlindlySignedKey, Keyc), ConversionData3p}, 즉 키 값 쌍{(BlindlySignedKey(ID, dc_destination, report_domain)), ImpressionData3p}을 수신한다. 또한, 블라인드 서명된 키 H(BlindlySignedKey, Keyc)는 MPC 프로세스의 각 실행에 대해서만 유효할 수 있으며 집계 서버(180-B)는 각 실행 후에 선택된 키 Keyc1 및 Keyc2를 폐기할 수 있다. 집계 서버(180-A)는 공개 키를 사용하여 세 번 암호화된 변환 데이터(ConversionData3p)를 복호화하여 2 회 암호화된 변환 데이터(ConversionData2)를 복구할 수 있다. 이때, 집계 서버(180-A)는 H(BlindlySignedKey, Keyc)와 2 회 암호화된 변환 데이터(ConversionData2)를 가지고 있으며, 둘 다 암호화되고 집계 서버(180-B)만이 복호화 키를 갖는다. 집계 서버(180-B)가 정직(honest)하면, 집계 서버(180-A)가 사용자의 프라이버시를 위협하기 위해할 수 있는 일은 아무것도 없다.
프로세스(300)의 단계(314)의 시작에서, 집계 서버(180-A)는 각 노출에 대해 집계 서버(180-B)로부터 2 번 암호화된 블라인드 서명된 조인 키(Ħ(BlindlySignedKey))와 3 번 암호화된 노출 데이터(ImpressionData3')를 수신한다. 이 세 번 암호화된 노출 데이터(ImpressionData3')는 집계 서버(180-B)가 소유한 키를 사용하여 마지막으로 암호화되었으며, 이는 현재 MPC 프로세스 실행에만 유효하다. 집계 서버(180-B)와의 공모없이, 집계 서버(180-A)가 할 수 있는 최악의 상황은 실제 데이터 튜플 {count, ImpressionData3’, ConversionData2’} 대신 가짜 데이터 튜플{count’, ImpressionData3’’, ConversionData2’’}을 보내는 것이다.
도 5는 데이터의 무결성을 검증하기 위한 예시적인 프로세스(500)를 예시하는 흐름도이다. 특히, 프로세스 500은 본 명세서에 설명된 MPC 프로세스 동안, 예를 들어, 아래 설명된 MPC 프로세스 또는 도 3 및 도 4의 MPC 프로세스 동안, 다른 집계 서버(180-A 또는 180-B)로부터 수신된 데이터의 무결성을 검증하기 위해 집계 서버(180-A 또는 180-B) 중 하나에 의해 수행될 수 있다. 설명의 편의를 위해, 프로세스(500)는 집계 서버(180-A)로부터 수신된 데이터의 무결성을 검증하는 집계 서버(180-B)의 관점에서 설명된다. 그러나, 집계 서버(180-B)로부터 수신된 데이터의 무결성을 검증하기 위해 집계 서버(180-A)에 의해 유사한 프로세스가 수행될 수 있다. 이 프로세스(500)는 집계 서버(180-A 또는 180-B) 중 하나가 부정 탐지 시스템(172), 변환 시스템(172) 및 리포팅 시스템(190)과 충돌하는 상황을 포함하여 다양한 유형의 부정을 방지하기 위해 사용될 수 있다.
집계 서버(180-B)는 집계 서버(180-A)로부터 수신된 데이터를 검증한다(502). 집계 서버(180-B)는 프로세스(300)의 단계(324)의 일부로서 단계(502)를 수행할 수 있다. 도 3의 단계 318을 참조하여 전술한 바와 같이, 집계 서버(180-A)는 {count, ImpressionData3 ', ConversionData2'} 형식의 튜플을 집계 서버(180-B)로 보낼 수 있다. 집계 서버(180-B)는 각 튜플에서 두 번 암호화된 변환 데이터 ConversionData2'를 암호화하여 각 튜플에 대해 세 번 암호화된 변환 데이터 ConversionData3'를 생성할 수 있다. 이는 집계 서버(180-A)의 공개 키를 사용하여 세 번 암호화된 변환 데이터 ConversionData3의 결정적 공개 키 암호화 결과인 세 번 암호화된 변환 데이터 ConversionData3의 정의로 인해 가능하다.
집계 서버(180-B)는 수신된 각각의 튜플 {count, ImpressionData3', ConversionData2'}를 {count, ImpressionData3', ConversionData3'}로 변환하고, k- 익명성 및 차등 프라이버시를 달성하기 위해 임계 값 및 서브 샘플링을 적용한 후, 도 3의 단계 316에서 집계 서버(180-B)가 생성한 결과 데이터 세트를 비교할 수 있다. 예를 들어, 집계 서버(180-B)는 튜플 {count, ImpressionData3', ConversionData3'}를 표 2의 행과 비교할 수 있다. 2 개의 데이터 세트가 일치하면, 집계 서버(180-B)는 집계 서버(180-A)가 도 3의 322 단계까지 암호화 프로토콜을 정직하게 실행하고 있음을 확신할 수 있다. 그렇지 않으면, 집계 서버(180-B)는 MPC 프로세스를 조기에 종료하고 및/또는 집계 서버(180-A)의 가능한 오작동을 보고할 수 있다.
프로세스(300)를 참조하여 전술한 바와 같이, 단계 322의 시작에서, 집계 서버(180-A)는 집계 서버(180-B)로부터 {count, ImpressionData2, ConversiodData3'} 형태의 튜플을 수신한다. 집계 서버(180-A)는 임계치 및 서브 샘플링을 적용한 후에 프로세스(300)의 단계(314)에서 생성된 자신의 데이터 세트를 얻을 수 있다. 이 데이터 세트에는 {count, ImpressionData3’, ConversiodData3’} 형식의 행(예: 표 2) 또는 튜플이 포함된다. 집계 서버(180-A)는 이러한 데이터 조각(pieces)을 사용하여 두 데이터 세트의 세 번 암호화된 노출 데이터(ImpressionData3')와 두 번 암호화된 노출 데이터(ImpressionData2) 간의 매핑을 추론할 수 있다.
집계 서버(180-B)와 유사하게, 집계 서버(180-A)는 집계 서버(180-B)의 공개 키를 사용하여 세 번 암호화된 노출 데이터(ImpressionData3 ')가 실제로 2 회 암호화된 노출 데이터(ImpressionData2)의 결정적 공개 키 암호화 결과임을 확인할 수 있다. 그러나, 집계 서버(180-A)는 공개 키 암호화 알고리즘의 설계로 인해 세 번 암호화된 노출 데이터(ImpressionData3')와 2 회 암호화된 노출 데이터(ImpressionData2) 간의 매핑이 주어지면 집계 서버(180-B)의 개인 키를 복구 할 수 없다. 집계 서버(180-A)가 할 수 있는 최악의 일은 실제 데이터 튜플{count, ImpressionData1, ConversionData2}이 아닌 가짜 데이터 튜플{count’, ImpressionData1’, ConversionData2’}을 집계 서버(180-B)로 보내는 것이다.
집계 서버(180-B)는 집계 서버(180-A)로부터 수신된 데이터의 무결성을 검증한다(504). 집계 서버(180-B)는 결정론적 공개 키 알고리즘과 집계 서버(180-A)의 공개 키를 이용하여 암호화된 노출 데이터(ImpressionData1)를 2 회 암호화된 노출 데이터(ImpressionData2)로 재 암호화할 수 있다. 집계 서버(180-B)는 결정론적 공개 키 알고리즘 및 집계 서버(180-A)의 공개 키를 이용하여 2 회 암호화된 변환 데이터(ConversionData2)를 2 회 암호화된 노출 데이터(ConversionData3)로 재 암호화할 수 있다. 그 다음, 집계 서버(180-B)는 암호화 결과를 사용하여 프로세스(300)의 단계 322에서 집계 서버(180-A)로부터 수신된 각 튜플 {count, ImpressionData1, ConversionData2}를 튜플 {count, ImpressionData1, ConversionData2} 형식의 튜플로 변환할 수 있다.
그 다음, 집계 서버(180-B)는 프로세스(300)의 단계 320에서 집계 서버(180-B)가 생성하여 집계 서버(180-A)로 전송한 데이터 세트와 튜플의 결과 데이터 세트를 비교할 수 있다. 두 데이터 세트가 일치하면, 집계 서버(180-B)는 집계 서버(180-A)가 프로세스(300)의 MPC 프로세스에서 지금까지 암호화 프로토콜을 정직하게 실행했다고 확신할 수 있다. 그렇지 않으면, 집계 서버(180-B)는 MPC 프로세스를 조기에 종료하고 및/또는 집계 서버(180-A)의 가능한 오작동을 보고할 수 있다.
프로세스(300)를 참조하여 전술한 바와 같이, 프로세스(300)의 단계 326의 시작에서, 집계 서버(180-A)는 집계 서버(180-B)로부터 튜플 {count, ImpressionData2, ConversionData1}을 수신한다. 집계 서버(180-A)가 프로세스(300)의 단계(326)에서 2 회 암호화된 노출 데이터(ImpressionData2)를 1 회 암호화된 노출 데이터(ImpressionData1)로 정직하게 복호화하지 않고 정확한 튜플{count, ImpressionData1, ConversionData1}을 리포팅 시스템(190)으로 전송하지 않으면, 리포팅 시스템(190)은 집계 서버(180-A 및 180-B)로부터 수신된 2 개의 변환 리포팅 사이의 불일치를 발견할 것이다. 리포팅 시스템(190)은 집계 서버(180-A 및 180-B) 중 적어도 하나에 불일치를 보고할 수 있다. 집계 서버(180-A)가 리포팅 시스템(190)과 충돌하지 않는 경우, 집계 서버(180-A)가 유출된 정보를 파악할 수 있는 리포팅 시스템(190)에 유출할 수 있는 가장 중요한 정보는 각 튜플의 카운트 및 변환 데이터의 히스토그램을 포함한다. 그러나, 이 데이터의 사용자 프라이버시는 프로세스(300)의 단계 314 및 316에서 적용되는 임계치 요구량 및 차등 프라이버시 서브 샘플링에 의해 보호된다.
노출 및 변환 시퀀스 생성
도 6은 사용자 프라이버시를 보호하면서 이벤트의 시간순 시퀀스를 생성하기 위한 예시적인 프로세스(600)를 예시하는 흐름도이다. 프로세스(600)는 노출 및/또는 변환의 시간순 시퀀스를 생성하는 데 사용될 수 있으며, 이는 마지막 클릭 속성 또는 규칙 기반 속성과 같은 다른 변환 속성 모델을 지원하는 데 사용될 수 있다. 프로세스(600)는 집계 서버(180-A 및 180-B)에 의해 수행될 수 있다. 프로세스(300)와 유사하게, 각 집계 서버(180-A 및 180-B)는 각각 한 쌍의 비밀 암호화 키 Keyi(키 쌍을 나타냄) 및 Keyc(키 쌍을 나타냄)를 선택할 수 있다. 집계 서버(180-A)는 또한 비밀 키 Keyi, skew를 선택할 수 있다. 마찬가지로, 집계 서버(180-B)는 비밀 키 Keyc, skew를 선택할 수 있다. 집계 서버(180-A 및 180-B)는 지정된 기간, 노출 또는 변환 데이터 배치 당 또는 기타 적절한 기준에 따라 주기적으로 새 키를 선택할 수 있다.
집계 서버(180-A)는 노출 데이터를 수신한다(602). 이 예에서 각 노출에 대한 노출 데이터는 블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain)), 세 번 암호화된 노출 데이터(ImpressionData3p) 및 노출 시간 데이터(ImpressionTime2)를 포함할 수 있다. 블라인드 서명된 노출 키 및 세 번 암호화된 노출 데이터는 프로세스(300)의 블라인드 서명된 노출 키 및 세 번 암호화된 노출 데이터와 동일하거나 유사할 수 있다. 노출 시간 데이터는 노출이 발생한 시간을 나타내며 암호화할 수 있다.
노출 시간 데이터(ImpressionTime2)는 집계 서버(180-A)의 공개 키 Si와 집계 서버(180-B)의 공개 키를 사용하여 두 번 암호화될 수 있다. 예를 들어 노출 시간 데이터(ImpressionTime2)는 PubKeyEncrypt(T(tm + tdevice), Si), Sc)로 정의할 수 있다. 이 예에서, tm은 노출 또는 클릭 시간(예를 들어, 디지털 컴포넌트가 제시되거나 상호 작용한 시간)이고, tdevice는 디지털 컴포넌트를 제시한 애플리케이션(112)이 설치된 클라이언트 장치(110)의 클록 스큐(clock skew)이다. 이 예에서, 두 번의 합은 암호화 기술 T 및 집계 서버(180-A)의 공개 키 Si를 사용하여 암호화된다. 암호화 기술 T는 동형, 추가, 확률적 공개 키 암호화 기술(예: Paillier 암호 시스템)일 수 있다. 이 암호화된 값은 집계 서버(180-B)의 공개 키 Sc를 사용하여 암호화된다. 이 제2 암호화는 결정적 또는 확률적 암호화 기술 일 수 있다.
집계 서버(180-B)는 변환 데이터를 수신한다(604). 이 예에서 변환 데이터는 블라인드 서명된 변환 키(BlindlySignedKey(ID, conversion_domain, report_domain)), 세 번 암호화된 변환 데이터(ConversionData3p) 및 변환 시간 데이터(ConversionTime2)를 포함할 수 있다. 블라인드 서명된 변환 키 및 세 번 암호화된 변환 데이터는 프로세스(300)의 블라인드 서명된 변환 키 및 세 번 암호화된 변환 데이터와 동일하거나 유사할 수 있다. 변환 시간 데이터는 변환이 발생한 시간을 나타내며 암호화할 수 있다.
변환 시간 데이터(ConversionTime2)는 집계 서버(180-A)의 공개 키 Si와 집계 서버(180-B)의 공개 키 Sc를 사용하여 2 회 암호화될 수 있다. 예를 들어 변환 시간 데이터(ConversionTime2)는 PubKeyEncrypt(T(zn + tdevice), Sc), Si)로 나타낼 수 있다. 이 예에서, zn은 변환 시간(예를 들어, 변환이 완료된 시간)이고 tdevice는 디지털 컴포넌트를 제공하는 애플리케이션(112)이 설치된 클라이언트 장치(110)의 클록 스큐이다. 이 예에서, 두 번의 합은 암호화 기술 T 및 집계 서버(180-B)의 공개 키 Sc를 사용하여 암호화된다. 암호화 기술 T는 동형, 추가, 확률적 공개 키 암호화 기술(예: Paillier 암호 시스템)일 수 있다. 이 암호화된 값은 집계 서버(180-A)의 공개 키 Si를 사용하여 암호화된다. 이 제2 암호화는 결정적 또는 확률적 암호화 기술일 수 있다.
각 노출에 대해, 집계 서버(180-A)는 교환 암호화 및 선택된 암호화 키 Keyi1(606)을 사용하여 조인 키를 암호화한다. 프로세스(300)와 유사하게, 노출에 대한 조인 키는 노출에 대한 블라인드 서명된 결합 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))일 수 있다. 그 다음, 집계 서버(180-A)는 각 노출에 대해 암호화된 조인 키, 세 번 암호화된 노출 데이터(ImpressionData3p) 및 2 회 암호화된 노출 시간 데이터(ImpressionTime2)를 집계 서버(180-B)에 제공할 수 있다. 즉, 집계 서버(180-A)는 각 노출에 대해 {H(BlindlySignedKey, Keyi1), ImpressionData3p, ImpressionTime2}과 같은 튜플을 보낼 수 있다. 튜플은 무작위 또는 의사 무작위 순서로 보낼 수 있다.
각 변환에 대해, 집계 서버(180-B)는 교환 암호화 및 선택된 암호화 키 Keyc1을 사용하여 조인 키를 암호화한다(608). 프로세스(300)와 유사하게, 변환을 위한 조인 키는 변환을 위한 블라인드 서명된 변환 키(BlindlySignedKey(ID, conversion_domain, report_domain))이다. 집계 서버(180-B)는 각 변환에 대해 암호화된 조인 키, 세 번 암호화된 변환 데이터(ConversionData3p) 및 2 회 암호화된 변환 시간 데이터(ConversionTime2)를 집계 서버(180-A)에 제공할 수 있다. 즉, 집계 서버(180-B)는 각 노출에 대해 {H(BlindlySignedKey, Keyc), ConversionData3p, ConversionTime2}과 같은 튜플을 보낼 수 있다. 튜플은 무작위 또는 의사 무작위 순서로 보낼 수 있다.
수신된 각 튜플에 대해, 집계 서버(180-A)는 변환 시간 데이터를 복호화한다(610). 집계 서버(180-A)는 집계 서버(180-A)의 공개 키 Si에 대응하는 개인 키를 사용하여 변환 시간 데이터(ConversionTime2)를 복호화할 수 있다. 이 복호화는(T(zn + tdevice), Sc)를 복구한다.
집계 서버(180-A)는 선택된 암호화 키 Keyi2를 사용하여 이미 교환적으로 암호화된 블라인드 서명된 노출 키(H(BlindlySignedKey, Keyc)) 위에 교환 암호화를 적용할 수도 있다. 그 결과 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)가된다.
집계 서버(180-A)는 시차(시간 스큐) 값(time_skewi)을 계산할 수 있다. 예를 들어, 집계 서버(180-A)는 비밀 키 Keyi, skew의 HMAC, 및 암호화된 블라인드 서명된 변환 키, 예를 들어 HMACSHA256(Keyi, skew, Ħ(BlindlySignedKey)를 시차(시간 차) 값(time_skewi)으로서 계산할 수 있다.
집계 서버(180-A)는 수신된 각 튜플에 대해 한번 암호화된 변환 시간 데이터(ConversionTime1)를 생성할 수 있다. 일부 구현에서, 한번 암호화된 변환 시간 데이터(ConversionTime1)는 동형, 가산, 확률적 공개 키 암호화 기술 T, 예를 들어 T(zn + tdevice + time_skewi, Sc)를 사용하여 생성된다. 이 예에서, 변환 시간(zn), 클라이언트 장치(tdevice)의 클록 스큐 및 시간 스큐 값(time_skewi)의 합이 집계 서버(180-B)의 공개 키 Sc를 사용하여 암호화된다.
프로세스(300)의 단계(310)를 참조하여 전술한 바와 같이, 집계 서버(180-A)는 또한 세 번 암호화된 변환 데이터(ConversionData3p)를 복호화 및 재 암호화할 수 있다. 즉, 집계 서버(180-A)는 자신의 개인 키(공개 키 Si에 대응하는 개인 키)를 이용하여 세 번 암호화된 변환 데이터(ConversionData3p)를 복호화하여 2 회 암호화된 변환 데이터(ConversionData2)를 복구할 수 있다. 집계 서버(180-A)는 선택된 암호화 키 Keyi2를 사용하여 두 번 암호화된 변환 데이터(ConversionData2)를 다시 암호화하여 세 번 암호화된 변환 데이터(ConversionData3p)를 얻을 수 있다.
집계 서버(180-A)는 각각의 고유한 세 번 암호화된 변환 데이터(ConversionData3p)에 대해 세 번 암호화된 변환 데이터(ConversionData3p)와 연관된 고유한 암호화된 블라인드 서명된 변환 키 Ħ(BlindlySignedKey)의 수를 결정할 수 있다. 변환을 위해 세 번 암호화된 변환 데이터(ConversionData3p)와 관련된 고유한 암호화된 블라인드 서명된 변환 키 Ħ(BlindlySignedKey)의 수가 임계 값을 충족하는 경우(예: 임계 값 요구 사항에 따라), 집계 서버(180-A)는 집계 서버(180-B)에 튜플 {Ħ(BlindlySignedKey), ConversionData3p, ConversionTime1}을 전송한다.
각각의 수신된 튜플에 대해, 집계 서버(180-B)는 노출 시간 데이터를 복호화한다(612). 집계 서버(180-B)는 집계 서버(180-B)의 공개 키 Sc에 대응하는 개인 키를 이용하여 노출 시간 데이터(ImpressionTime2)를 복호화할 수 있다. 이 복호화는 (T(tm + tdevice), Si)를 복구된다.
집계 서버(180-B)는 선택된 암호화 키 Keyc2를 사용하여 이미 교환적으로 암호화된 블라인드 서명된 변환 키(H(BlindlySignedKey, Keyi)) 위에 교환적 암호화(commutative encryption)를 적용할 수도 있다. 그 결과 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)가 된다.
집계 서버(180-B)는 시간차 값(time_skewc)을 계산할 수 있다. 예를 들어, 집계 서버(180-B)는 시간 차 값(time_skewc)으로서, 비밀 키 Keyc, skew의 HMAC, 및 암호화된 블라인드 서명된 변환 키, 예를 들어 HMACSHA256(Keyc,skew, Ħ(BlindlySignedKey)를 계산할 수 있다.
집계 서버(180-B)는 수신된 각 튜플에 대해 한번 암호화된 노출 시간 데이터(ImpressionTime1)를 생성할 수 있다. 일부 구현에서, 한번 암호화된 변환 시간 데이터(ImpressionTime1)는 동형, 가산, 확률적 공개 키 암호화 기술 T, 예를 들어 T(tm + tdevice + time_skewc, Si)를 사용하여 생성된다. 이 예에서, 노출 시간(tm), 클라이언트 장치(tdevice)의 클록 스큐 및 시간 스큐 값(time_skewc)의 합이 집계 서버(180-A)의 공개 키 Si를 사용하여 암호화된다.
프로세스(300)의 단계(312)를 참조하여 전술한 바와 같이, 집계 서버(180-B)는 또한 세 번 암호화된 노출 데이터(ImpressionData3p)를 복호화 및 재 암호화할 수 있다. 즉, 집계 서버(180-B)는 자신의 개인 키(공개 키 Sc에 대응하는 개인 키)를 사용하여 세 번 암호화된 변환 데이터(ImpressionData3p)를 복호화하여 2 회 암호화된 노출 데이터(ImpressionData2)를 복구할 수 있다. 집계 서버(180-A)는 선택된 암호화 키 Keyc2를 사용하여 두 번 암호화된 노출 데이터(ImpressionData2)를 다시 암호화하여 세 번 암호화된 노출 데이터(ImpressionData3p)를 얻을 수 있다.
집계 서버(180-B)는 각각의 고유한 세 번 암호화된 노출 데이터(ImpressionData3p)에 대해, 세 번 암호화된 노출 데이터(ImpressionData3p)와 연관된 고유의 암호화된 블라인드 서명된 변환 키 Ħ(BlindlySignedKey)의 수를 결정할 수 있다. 노출에 대해 세 번 암호화된 노출 데이터(ImpressionData3p)와 연결된 고유한 암호화된 블라인드 서명된 변환 키 Ħ(BlindlySignedKey)의 수가 임계 값을 충족하는 경우(예: 차등 개인 정보 보호 임계 값 요구 사항에 따라), 집계 서버(180-B)는 집계 서버(180-A)에 튜플 {Ħ(BlindlySignedKey, Keyi), ImpressionData3, ImpressionTime1}을 전송한다.
집계 서버(180-A)는 집계 서버(180-B)로부터 수신한 암호화된 노출 및 변환 데이터를 결합(조인)하고 필터링한다(614). 집계 서버(180-A)는 집계 서버(180-A)로부터 수신한 튜플 {Ħ(BlindlySignedKey, Keyi), ImpressionData3, ImpressionTime1}을 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 사용하여 단계 610에서 생성된 집계 서버(180-A)의 튜플 {Ħ(BlindlySignedKey), ConversionData3p, ConversionTime1}과 결합(조인)할 수 있다. 각 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해 집계 서버(180-A)는 {Ħ(BlindlySignedKey), ImpressionData3p, ImpressionTime1, ConversionData3p, ConversionTime1}을 포함하는 테이블(표)에서 튜플 또는 행을 형성한다.
애플리케이션(112)이 동일한 디지털 컴포넌트에 대한 다중 노출을 보고할 수 있기 때문에, 각 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey)에 대한 노출 데이터(ImpressionData3)가 여러 번 발생할 수 있다. 집계 서버(180-A)는 t'm = tm + tdevice + time_skewc를 포함하는 암호화되지 않은 시간 데이터(ImpressionTime0)를 얻기위해, 동일한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey) 및 동일한 세 번 암호화된 변환 데이터(ConversionData3p)를 갖는 각 세 번 암호화된 노출 데이터(ImpressionData3p)에 대한 공개 키 Si를 사용하여 1회 암호화된 노출 시간 데이터(ImpressionTime1)를 복호화할 수 있다. 집계 서버(180-A)는 time_skewc의 값을 알지 못한다. 동일한 장치 속성이 사용되는 경우 장치(tdevice)의 클록 스큐는 고정되지만 집계 서버(180-A)에 알려지지 않는다. 교차 장치 속성이 사용되는 경우, 동일 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey)와 연관된 서로 다른 노출에 대한 장치(tdevice)의 클록 스큐는, 데이터가 여러 장치에서 올 수 있고 집계 서버(180-A)에 알려지지 않기 때문에 다를 수 있다. 두 경우 모두 집계 서버(180-A)는 t'm에서 노출/클릭 시간(tm)을 추론할 수 없으므로 사용자를 추적하기 위한 시간 기반 공격을 쉽게 시작할 수 없다.
집계 서버(180-A)는 노출 시간(ImpressionTime0)을 tm + tdevice + time_skewc + time_skewi로 결정할 수 있다. 결합된(조인된) 노출 데이터(ImpressionData3p) 및 변환 데이터(ConversionData3p)의 각 조합에 대해, 집계 서버(180-A)는 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수가 임계 값(예를 들어, k-익명성 프라이버시 임계 값)을 충족하거나 초과하는지 여부를 결정할 수 있다. 그렇다면, 집계 서버(180-A)는 조합에 대해 튜플 {(Ħ(BlindlySignedKey)), ImpressionData3p, ImpressionTime0}을 집계 서버(180-B)로 보낼 수 있다. 일부 구현에서, 집계 서버(180-A)는 또한 프로세스(300)를 참조하여 전술한 바와 같이 차등 프라이버시를 위한 서브 샘플링 기술을 사용할 수 있다.
집계 서버(180-B)는 또한 집계 서버(180-A)로부터 수신된 암호화된 노출 및 변환 데이터를 결합(조인)하고 필터링한다(616). 집계 서버(180-B)는 집계 서버(180-A)로부터 수신한 튜플 {Ħ(BlindlySignedKey), ConversionData3, ConversionTime1}을 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 사용하여 단계 612에서 생성된 집계 서버(180-B)의 튜플 {Ħ(BlindlySignedKey, Keyi), ImpressionData3, ImpressionTime1}과 결합할 수 있다. 각 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해, 집계 서버(180-A)는 {Ħ(BlindlySignedKey), ImpressionData3p, ImpressionTime1, ConversionData3p, ConversionTime1}을 포함하는 테이블에서 튜플 또는 행을 형성한다.
집계 서버(180-B)는 또한 t'm = tm + tdevice + time_skewi를 포함하는 암호화되지 않은 시간 데이터(CompressionTime0)를 얻기 위해, 동일한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey) 및 동일한 세 번 암호화된 변환 데이터(ConversionData3p)를 갖는 각 세 번 암호화된 노출 데이터(ImpressionData3p)에 대한 공개 키 Sc를 사용하여 1 회 암호화된 변환 시간 데이터(ConversionTime1)를 복호화할 수 있다.
집계 서버(180-B)는 변환 시간(ConversionTime0)을 zn+tdevice + time_skewi + time_skewc로 결정할 수 있다. 결합된 노출 데이터(ImpressionData3p) 및 변환 데이터(ConversionData3p)의 각 조합에 대해, 집계 서버(180-B)는 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수가 임계 값(예를 들어, k-익명성 프라이버시 임계 값)을 충족하거나 초과하는지 여부를 결정할 수 있다. 그렇다면, 집계 서버(180-B)는 조합에 대해 튜플 {(Ħ(BlindlySignedKey)), ConversionData3p, ConversionTime0}을 집계 서버(180-A)로 보낼 수 있다. 일부 구현에서, 집계 서버(180-B)는 또한 프로세스(300)를 참조하여 전술한 바와 같이 차등 프라이버시를 위한 서브 샘플링 기술을 사용할 수 있다.
이 시점에서, 집계 서버(180-A 및 180-B)는 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)를 사용하여 노출 및 변환 데이터와 시간을 결합하여 각 고유한 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)에 대해, {(Ħ(BlindlySignedKey)), ImpressionData3p, ImpresionTime0, ConversionData3p, ConversionTime0} 형식의 레코드를 형성할 수 있다.
집계 서버(180-A)는 노출 및 변환의 시간 순서를 생성한다(618). 각 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해, 집계 서버(180-A)는 각 노출 데이터(ImpressionData3p)에 대한 노출 시간(ImpressionTime0)과 각 변환 데이터(ConversionData3p)에 대한 변환 시간(ConversionTime0)을 비교하여 시간을 사용하여 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대한 노출 및 변환의 시간 순서를 생성한다.
집계 서버(180-B)는 노출 및 변환의 시간 순서를 생성한다(620). 각 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해 집계 서버(180-A)는 각 노출 데이터(ImpressionData3p)(노출 데이터의 피스(piece))에 대한 노출 시간(ImpressionTime0)과 각 변환 데이터(ConversionData3p)(변환 데이터의 피스)에 대한 변환 시간(ConversionTime0)을 비교하여 시간을 사용하여 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대한 변환(들) 및 노출(들)의 시간 순서를 생성한다.
각 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))는 특정 디지털 컴포넌트 및 특정 고유 식별자(ID)에 해당하므로, 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대한 시간 순서는 고유 식별자(예: 고유 식별자에 해당하는 사용자의 하나 이상의 장치에서)에 대한 디지털 컴포넌트의 하나 이상의 노출(들) 및 특정 디지털 컴포넌트의 표시로 인해 발생하는 하나 이상의 변환(들)을 포함한다. 예를 들면, 특정 디지털 컴포넌트가 동일한 사용자에게 여러 번 제시된 경우 시퀀스에는 여러 노출이 포함될 수 있으며 시퀀스에는 서로 다른 유형의 여러 변환이 포함될 수 있다(예: 가상 카트에 아이템을 추가하기 위한 것과 아이템 획득 완료를 위한 것).
시간 순서를 통해 집계 서버(180-A 및 180-B)는 독립적으로 속성 프로세스를 수행하여 노출에 대한 변환을 속성화(기여)(attribute)할 수 있다. 예를 들어, 마지막 클릭 속성(attribution) 모델에서 집계 서버(180-A 및 180-B)는 시퀀스에서 변환 이전의 클릭을 포함하는 마지막 노출을 식별하고 마지막 노출에 대한 변환을 속성화할 수 있다. 집계 서버(180-A 및 180-B)는 예를 들어 다른 집계 서버의 결과와 비교하여 서로의 결과를 확인할 수도 있다. 도 6에 도시되어 있지는 않지만, 집계 서버(180-A 및 180-B)는 도 3의 단계 318-332를 참조하여 전술한 바와 같이 노출 및 변환 데이터를 복호화하기 위해 함께 작동할 수 있다. 집계 서버(180-A 및 180-B)는 변환 보고서의 다른 데이터와 함께 속성을 보고할 수 있다.
시간 간격 기반 공격을 방지하거나 탐지하기 위해 몇 가지 추가 단계를 수행할 수 있다. 동일한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))와 연결된 여러 노출/클릭의 경우 집계 서버(180-A)는 t'm을 갖게 되며, 여기서 m은 정수이다. t’m이 가장 오래된 것부터 가장 최근의 것 순으로 정렬되어 있다고 가정하면, 집계 서버(180-A)는 인접한 두 노출 사이의 시간 간격
Figure pct00001
, 예를 들어
Figure pct00002
m= t'm+1 - t'm을 계산할 수 있다. tdevice가 충분히 작다고 가정하면,
Figure pct00003
m
Figure pct00004
Figure pct00005
m= t'm+1 - t'm이다. 디지털 컴포넌트 배포 시스템이 사용자에게 일련의 노출을 제공하는 경우 디지털 컴포넌트 배포 시스템은 인접한 두 노출 사이의 시간 간격(예:
Figure pct00006
m)을 기록할 수 있다. 이를 바탕으로 디지털 컴포넌트 분배 시스템이 집계 서버(180-A)와 공모(collude)하면 디지털 컴포넌트 분배 시스템은 시간 간격에 따라 개별 사용자를 인식할 수 있다. 디지털 컴포넌트 배포 시스템은 디지털 컴포넌트 배포 시스템이 집계 서버(180-B)와 충돌(공모)하는 경우 첨부된 유사한 시간 간격을 시작할 수도 있다.
이러한 시간 간격 기반 공격을 저지하는 한 가지 옵션은 다음과 같은 속성을 가진 단조 증가 함수를 사용하는 것이다. 두 개의 임의의 숫자 a와 b가 주어지면 두 값 a - b와, (a)-,(b)는 상관되지 않는다. 즉, a - b를 아는 것은 (a)-, (b)를 예측하는 데 도움이되지 않으며 그 반대의 경우도 마찬가지이다.
함수를 사용하면, 노출 시간 데이터(ImpressionTime2)를 PubKeyEncrypt(T(,(tm + tdevice), Si), Sc)로 정의할 수 있다. 이 예에서,
Figure pct00007
m =,(tm + 1 + tdevice + skew)-,(tm + tdevice + skew)이다. 따라서,
Figure pct00008
m
Figure pct00009
m이고, 시간 간격 기반 공격이 중단된다.
시간 간격 기반 공격을 저지하기 위한 또 다른 옵션은 전용 타임 서버(192)를 포함하도록 프로세스(600)를 수정하는 것이다. 프로세스 600의 시작 부분에서, 집계 서버(180-A)는 {BlindlySignedKey(ID, dc_destination, report_domain), ImpressionData3p, T(tm + tdevice, Stime)} 형식의 노출 데이터를 수신한다. 이 예에서, 노출/클릭 시간 tm과 장치 tdevice의 클록 스큐의 합은 타임 서버(192)의 공개 키 Stime을 사용하여 암호화된다. 예를 들어, 애플리케이션(112) 또는 클라이언트 장치(110)는 공개 키 Stime을 사용하여 시간 데이터를 암호화할 수 있다. 마찬가지로, 집계 서버(180-B)는 {BlindlySignedKey(ID, conversion_domain, report_domain), ConversionData3p, T(zn + tdevice, Stime)} 형식으로 변환 데이터를 수신한다. 이 예에서, 변환 시간 zn과 장치(디바이스) tdevice의 클록 스큐의 합은 타임 서버(192)의 공개 키 Stime을 사용하여 암호화된다. 예를 들어, 애플리케이션(112) 또는 클라이언트 장치(110)는 공개 키 Stime을 사용하여 시간 데이터를 암호화할 수 있다.
수정된 단계(606)에서, 집계 서버(180-A)는 대신에 {H(BlindlySignedKey, Si), ImpressionData3p, T(tm + tdevice, Stime)} 형태의 튜플을 집계 서버(180-B)로 전송할 수 있다. 즉, 집계 서버(180-A)는 비밀 키 Si로 블라인드 서명된 키를 암호화하고 노출 및 시간 데이터를 그대로 통과시킬 수 있다.
유사하게, 수정된 단계(608)에서, 집계 서버(180-B)는 대신에 {H(BlindlySignedKey, Sc), ImpressionData3p, T(zn + tdevice, Stime)} 형태의 튜플을 집계 서버(180-A)로 전송할 수 있다. 즉, 집계 서버(180-B)는 비밀 키 Sc로 블라인드 서명된 키를 암호화하고 노출 및 시간 데이터를 그대로 통과시킬 수 있다.
수정된 단계(610)에서, 집계 서버(180-A)는 {H(BlindlySignedKey), ConversionData3, T(zn + tdevice + time_skewi, Stime)} 형태의 튜플을 생성하여 집계 서버(180-B)로 전송할 수 있다. 이 예에서 변환 데이터(ConversionData3p)에 적용된 확률적 암호화는 생성할 결정적 암호화(ConversionData3)로 대체된다. 또한, 집계 서버(180-A)는 H(BlindlySignedKey) 및 비밀 키 Si로부터 암호화된 노이즈가 도출되는 암호화된 노출 시간에 랜덤 노이즈를 추가할 수 있다. 유사하게, 단계 612에서, 집계 서버(180-B)는 {H(BlindlySignedKey), ImpressionData3, T(tm + tdevice + time_skewc, Stime)} 형태의 튜플을 생성하여 집계 서버(180-A)로 전송할 수 있다.
수정된 단계(614)에서, 집계 서버(180-A)는 프로세스(600)의 원래 단계(614)를 참조하여 전술한 바와 같이 데이터 세트를 결합(조인)하고 필터링할 수 있다. tm + tdevice + time_skewc + time_skewi로 노출 시간(ImpressionTime0)을 결정하는 대신 집계 서버(180-A)는 암호화된 노출 시간 값(ImpressionTime3_skew)을 결정할 수 있다. 예를 들어 암호화된 노출 시간 값(ImpressionTime3_skew)은 T(tm + tdevice + time_skewc + time_skewi, Stime)로 정의할 수 있다. 즉, 암호화된 노출 시간 값(ImpressionTime3_skew)은 타임 서버(192)의 동형, 가산, 확률적 공개 키 암호화 기술 T와 공개 키 Stime을 사용하여 암호화된 시간 값의 합이다.
결합된 노출 데이터(ImpressionData3) 및 변환 데이터(ConversionData3)의 각 조합에 대해, 집계 서버(180-A)는 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수가 임계 값(예를 들어, 차등 프라이버시 임계 값)을 충족하거나 초과하는지 여부를 결정할 수 있다. 그렇다면, 집계 서버(180-A)는 조합에 대해 튜플 {(Ħ(BlindlySignedKey)), ImpressionData3, ImpressionTime3_skew}를 집계 서버(180-B)로 보낼 수 있다.
수정된 단계(616)에서, 집계 서버(180-B)는 원래 프로세스(600)의 원래 단계(616)를 참조하여 전술한 바와 같이 데이터 세트를 결합하고 필터링할 수 있다. 노출 시간(ConversionTime0)을 zn + tdevice + time_skewc + time_skewi로 결정하는 대신 집계 서버(180-B)는 암호화된 변환 시간 값(ConversionTime3_skew)을 결정할 수 있다. 예를 들어 암호화된 변환 시간 값(ConversionTime3_skew)은 T(zn + tdevice + time_skewc + time_skewi, Stime)로 정의할 수 있다. 즉, 암호화된 변환 시간 값(ConversionTime3_skew)은 타임 서버(192)의 동형, 가산, 확률적 공개 키 암호화 기술 T와 공개 키 Stime을 사용하여 암호화된 시간 값의 합이다.
결합된(조인된) 노출 데이터(ImpressionData3p) 및 변환 데이터(ConversionData3)의 각 조합에 대해, 집계 서버(180-B)는 고유의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수가 임계 값(예를 들어, 차등 프라이버시 임계 값)을 충족하거나 초과하는지 여부를 결정할 수 있다. 그렇다면, 집계 서버(180-B)는 조합에 대해 튜플 {(Ħ(BlindlySignedKey)), ConversionData3, ConversionTime3_skew}를 집계 서버(180-A)로 보낼 수 있다.
이 포인트에서, 집계 서버(180-A 및 180-B)는 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)를 사용하여 노출 및 변환 데이터와 시간을 결합하여, 각 고유한 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)에 대해, {Ħ(BlindlySignedKey), ImpressionData3, ImpresionTime3_skew, ConversionData3, ConversionTime3_skew} 형식의 레코드를 형성할 수 있다.
여러 개의 노출 데이터(ImpressionData3)와 여러 개의 변환 데이터(ConversionData3)로 구성된 각 레코드 내에서 동일하거나 여러 개의 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)와 연결되어 있다. 집계 서버(180-A)는 암호화된 시간 값(ImpresionTime3_skew 및 ConversionTime3_skew)에 랜덤 또는 의사 랜덤 인덱스를 할당할 수 있다. 집계 서버(180-A)는 암호화된 시간 값(단, 블라인드 서명된 키 또는 노출 또는 변환 데이터가 아님)과 함께 이러한 인덱스를 타임 서버(192)로 전송할 수 있다. 타임 서버(192)는 공개 키 Stime에 대응하는 개인 키를 사용하여 암호화된 시간 값을 복호화하고, 이들 복호화되었지만 TS(triple-skewed) 시간 값을 정렬하고, 인덱스를 시간순으로 집계 서버(180-A)로 다시 보낼 수 있다.
이러한 방식으로, 타임 서버(192)는 어떠한 사용자 데이터에도 액세스할 수 없다. 타임 서버(192)는 TS(triple-skewed) 시간 값의 목적 또는 TS(triple-skewed) 시간 값의 수집이 동일한 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)와 연관되는지 여부에 대한 액세스도 갖지 않는다. 집계 서버(180-A)와 공도하지 않고, 타임 서버(192)는 공격을 받는 시간 또는 시간 간격 기반을 시작할 수 없다.
집계 서버(180-A)는 데이터에 대응하는 암호화된 시간 값의 인덱스를 사용하여 각 레코드에 대한 노출 데이터(ImpressionData3) 및 변환 데이터(ConversionData3)를 정렬(순서)(order)할 수 있다. 이 순서로, 집계 서버(180-A)는 전술한 바와 같이 노출에 대한 변환을 속성하는 속성 프로세스를 수행할 수 있다. 집계 서버(180-B)는 인덱스를 암호화된 시간 값에 할당하고 타임 서버(192)와 상호 작용하여 속성을 위한 데이터를 정렬하는 동일한 프로세스를 수행할 수 있다. 집계 서버(180-A와 180-B)가 모두 이 프로세스를 완료하면 집계 서버(180-A와 180-B)가 결과를 비교할 수 있다.
데이터 기반 속성(Data Driven Attribution)
본 명세서에 설명된 MPC 프로세스, 예를 들어 도 3의 프로세스(300)은 데이터 기반 속성(DDA)을 지원하도록 조정할 수 있다. 데이터 기반 속성은 사용자의 행동을 기반으로 한 변환에 대한 디지털 컴포넌트, 캠페인 및/또는 검색 키워드에 크레딧을 제공한다. 예를 들어 DDA는 변환 데이터를 사용하여 변환으로 이어지는 변환 경로에서 각 키워드의 실제 기여도를 계산할 수 있다. 이는 집계 임계 값을 충족하는 전체 경로를 리포팅 시스템(190)에 보고하여 나중에 크레딧을 적용하기 위한 처리(프로세싱)에 의해 작동한다.
도 7은 데이터 기반 속성을 사용하여 노출에 대한 변환을 속성하기 위한 예시적인 프로세스(700)를 예시하는 흐름도이다. 프로세스(700)는 도 1-2의 집계 서버(180-A 및 180-B)에 의해 수행될 수 있다.
DDA를 추적하기 위해, 디지털 컴포넌트 및/또는 변환 시스템(190)은 클라이언트 장치(110)의 애플리케이션(112)에 DDA(Data Drive Attribution)를 활성화하도록 통지할 수 있다(702). DDA가 인에이블될 때, 애플리케이션(112)은 디지털 컴포넌트가 클릭되는지 또는 다른 방식으로 상호 작용하는지를 고려하기 위해 블라인드 서명된 조인 키의 정의를 수정할 수 있다. 디지털 컴포넌트의 클릭된 노출에 대해, 애플리케이션(112)은 각 노출에 대한 블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))의 정의를 BlindlySignedKey(ID || clicked, dc_destination, report_domain)로 수정할 수 있다. 이 정의에서, 블라인드 서명된 노출 키는 복합 메시지(ID || clicked, dc_destination, report_domain)를 해시 값에 매핑하고 그리고 블라인드 서명된 노출 키에 대한 블라인드 서명(blind_singature)을 매핑하는 단방향 암호화 해시 함수를 포함하는 복합 메시지이다. DDA가 클릭된(또는 상호 작용 한) 노출만 고려하는 경우 클릭된 파라미터는 항상 참(true)이거나 값이 1이다.
노출 및 변환 데이터가 수신된다(704). 예를 들어, 전술한 바와 같이, 집계 서버(180-A)는 노출 데이터를 수신할 수 있고, 집계 서버(180-B)는 예를 들어 일괄 적으로(배치로) 변환 데이터를 수신할 수 있다. 애플리케이션(112)이 전술한 바와 같이 노출을보고할 때, 애플리케이션(112)은 블라인드 서명된 조인 키(BlindlySignedKey) 및 세 번 암호화된 노출 데이터(ImpressionData3p)를 포함하는 노출 데이터 Mi를 집계 서버(180-A)로 전송할 수 있다. 유사하게, 애플리케이션(112)이 전술한 바와 같이 변환을 보고할 때, 애플리케이션(112)은 블라인드 서명된 조인 키(BlindlySignedKey) 및 세 번 암호화된 변환 데이터(ConversionData3p)를 포함하는 변환 데이터 Mc를 집계 서버(180-B)로 전송할 수 있다. 이 예에서 블라인드 서명된 키는 클릭된 파라미터를 고려하는 수정된 버전이다.
노출 및 변환의 시퀀스가 생성된다(706). 이 시퀀스를 생성하기 전에, 각 집계 서버(180-A 및 180-B)는 프로세스(300)의 단계 306-316을 참조하여 위에서 설명한 바와 같이 데이터를 결합하고 필터링할 수 있다. 결합 및 필터링이 완료되면, 각 집계 서버에는 {ImpressionData3,1, ImpressionData3,2, ImpressionData3,i…, ConversionData3} 형식의 지정된 사용자와 연관된 각 고유한 블라인드 서명된 조인 키(BlindlySignedKey)에 대한 레코드가 있다. 이 형식에서 노출 및 변환은 시간순으로 정렬될 수 있다. 블라인드 서명된 조인 키(BlindlySignedKey)에 대해 시간순으로 정렬된 이 시퀀스를 시퀀스(Sequence)라고할 수 있다. 각각의 고유 시퀀스에 대해, 두 집계 서버(180-A 및 180-B)는 고유 시퀀스를 갖는 블라인드 서명된 조인 키(BlindlySignedKey)의 수를 결정한다(708). 예를 들어, 여러 사용자가 변환 이벤트 이전에 동일한 순서로 동일한 디지털 컴포넌트를 클릭했을 수 있다. 이러한 경우 노출 및 변환 시퀀스에는 각 사용자에 대해 고유한 블라인드 서명된 조인 키(BlindlySignedKey)가 있다.
시퀀스가 필터링된다(710). 예를 들어, 각 집계 서버(180-A 및 180-B)는 프라이버시 또는 기타 임계 값 요구 사항을 기반으로 시퀀스를 필터링할 수 있다. 특정 예에서, 집계 서버(180-A 및 180-B)는 시퀀스에서, 고유한 블라인드 서명된 조인 키(BlindlySignedKey)의 임계 값 이상이 없는 각 시퀀스를 필터링할 수 있다. 결과는 {Occurrencem, Sequencem} 쌍의 리스트로서, 여기서 m = 1, 2,… M이다.
노출 및 변환 데이터가 복호화된다(712). 노출 및 변환 데이터는 프로세스(300)의 단계 318-328의 MPC 프로세스를 사용하여 복호화될 수 있다. 복호화 결과 {Occurrence1, ImpressionData1,1,… ImpressionData1,?, ConversionData1,1}, {Occurrence2, ImpressionData1,2,… ImpressionData1,?, ConversionData1,2} 형식의 튜플이 생성된다. 각 튜플은 리포팅 도메인(190)의 공개 키를 사용하여 한번 암호화된 노출 및 변환 데이터의 시퀀스를 포함한다.
노출 및 변환 데이터는 각각의 리포팅 시스템으로 전송된다(714). 리포팅 시스템(190)은 그 후 그들의 DDA 기술(예를 들어, Shapley Value)을 최종 시퀀스 세트에 적용하여 크레딧을 할당할 수 있다.
DDA는 여러 도메인 간의 교차 사이트 리포팅이므로, 임계 값 요구 사항을 충족할 수 있는 고유한 시퀀스의 수가 적을 수 있다. 특히 많은 정보가 노출 및/또는 변환 데이터에 인코딩되어 각 노출 데이터(ImpressionData3p)가 여러 번 발생하고 변환 데이터(ConversionData3p)가 여러 번 발생하는 경우 특히 그렇다. 이러한 경우 사용자 개인 정보를 보호하기 위해 최종 측정 보고서에서 각 시퀀스의 발생 횟수에 차등 개인 정보 노이즈를 추가할 수 있으며, 이는 디지털 컴포넌트 공급자에게 유용성이 낮을 수 있다.
이 유틸리티는 노출 데이터(ImpressionData3p) 및/또는 변환 데이터(ConversionData3p)의 엔트로피를 줄이거나 보고 기간을 확대하여 사용자 개인 정보를 보호하면서 개선할 수 있다. 노출 데이터의 순서가 중요하지 않거나 중복 된 노출 데이터를 무시할 수 있는 경우 디지털 컴포넌트 공급자는 변환 사이트에서 집계 서버(180-A 및 180-B)에 알릴 수 있다. 이 경우 집계 서버(180-A 및 180-B)는 각 세트(Set)(Sequence)와 연관된 고유한 블라인드 서명된 조인 키(BlindlySignedKey)의 수를 계산하고 그에 따라 임계 값 및 서브 샘플링을 적용한다.
집계(총) 변환 값 결정
본 명세서에 설명된 MPC 프로세스, 예를 들어 도 3의 프로세스(300)는 변환 및 노출 수 외에도 리포팅(보고) 변환 값를 지원하도록 조정할 수 있다. 각 변환에 대해 광고주는 디지털 컴포넌트 제공 업체의 웹 사이트에 지출한 금액과 같은 수치 변환 값를 첨부할 수 있다. 특정 노출 및 변환 쌍에 대해, {V1, V2,… Vn}이 첨부 된 해당 수치 변환 값이 있는 n 개의 변환이 있다고 가정한다. 변환 수는
Figure pct00010
이다. 총 변환 값은
Figure pct00011
이다. 변환 값의 제곱의 합은
Figure pct00012
이다. 변환 값의 평균은
Figure pct00013
이고, 분산은
Figure pct00014
이다. 두 캠페인의 효과를 비교하기 위해, 변환 값 분포(변환이 발생하는 경우)가 정규 분포를 따른다고 가정한 다음 두 정규 분포간에 유의 한 차이가 있는지 비교할 수 있다. 이를 위해서는 2 차 모멘트 분산(Ai,2)이 필요하다.
집계 서버(180-A 및 180-B)가 변환 값(A1)을 안전하게 계산할 수 있도록, NA(numeric addition) 연산을 지원하는 교환 암호화 기술 H를 사용할 수 있다. 즉, 두 개의 임의의 정수 값 x 및 y에 대해, H(x + y) = HomomorphicAddition(H(x), H(y))이다. 리포팅 시스템(190)이 변환 수 A0를 계산한다는 점을 감안할 때, 이는 총 변환 값 A1을 얻고 일반 평균을 계산하는 안전한 방법이다.
도 8은 총 변환 값을 결정하기 위한 예시적인 프로세스(800)를 예시하는 흐름도이다. 프로세스(800)는 도 1 및 도 2의 집계 서버(180-A 및 180-B)에 의해 수행될 수 있다.
노출 및 변환 데이터가 수신된다(802). 예를 들어, 전술한 바와 같이, 집계 서버(180-A)는 노출 데이터를 수신할 수 있고, 집계 서버(180-B)는 클라이언트 장치로부터 예를 들어 일괄적으로(배치로) 변환 데이터를 수신할 수 있다. 애플리케이션(112)이 전술한 바와 같이 노출을 보고할 때, 애플리케이션(112)은 블라인드 서명된 조인 키(BlindlySignedKey) 및 세 번 암호화된 노출 데이터(ImpressionData3p)를 포함하는 노출 데이터 Mi를 집계 서버(180-A)로 전송할 수 있다.
유사하게, 애플리케이션(112)이 전술한 바와 같이 변환을보고할 때, 애플리케이션(112)은 블라인드 서명된 조인 키(BlindlySignedKey) 및 세 번 암호화된 변환 데이터(ConversionData3p)를 포함하는 변환 데이터 Mc를 집계 서버(180-B)로 전송할 수 있다. 이 예에서 블라인드 서명된 키는 클릭된 파라미터를 고려하는 수정된 버전이다. 그러나,이 예에서, 변환 데이터(Mc)는 또한 변환을 위해 변환 값(V) 및/또는 변환 값 제곱(V2)을 포함할 수 있다. 일반화하기 위해, 변환 데이터 Mc는 Vi에 의해 지정된 바와 같이 변환 값 V1, V2,… Vn을 포함할 수 있다. 이러한 Vi 중 하나는 다른 Vj의 제곱일 수 있다.
실제 값 Vi를 보내는 대신, 애플리케이션(112)은 값 Vi의 암호화된 버전을 보낼 수 있다. 일부 구현에서, 변환 시스템(172)은 확률적 동형 가산 공개 키 암호화 H, 예를 들어 Pailler 암호화 시스템)으로 값 Vi를 암호화하고 H(Vi, report_domain)을 애플리케이션(112)으로 전송할 수 있다. 이 예에서 값은 디지털 컴포넌트에 대한 변환 보고서를 수신하고 암호화 기술 H를 사용하여 암호화되는 리포트 도메인(report_domain)과 결합된다.
애플리케이션(112)은 H(Vi, report_domain)을 수신하고 하나 이상의 세 번 암호화된 변환 값 및 세 번 암호화된 제곱 변환 값을 생성할 수 있다. 예를 들어, 애플리케이션(112)은 세 번 암호화된 변환 값으로서 PublicKeyEncrypt(H(Vi, report_domain), Sc, Si)를 생성할 수 있다. 이 예에서, 변환 시스템(172)으로부터 수신된 암호화된 변환 값은 집계 서버(180-B)의 공개 키 Sc를 사용하여 암호화되고, 이 결과는 집계 서버(180-A)의 공개 키 Si를 사용하여 암호화된다. 이 세 번 암호화된 변환 값은 세 번째 암호화가 확률적일 수 있으므로 ConversionValue3p라고도 한다.
블라인드 서명된 조인 키는 암호화된다(804). 예를 들어, 집계(통합) 서버(180-A)는 프로세스(300)의 단계(306)와 관련하여 전술한 바와 같이, 교환 암호화 및 선택된 암호화 키 Keyi1을 사용하여 수신된 노출 데이터에서 블라인드 서명된 조인 키(BlindlySignedKey)를 암호화할 수 있다. 그런 다음 집계 서버(180-A)는 각 노출에 대해 {H(BlindlySignedKey, Keyi1), ImpressionData3p} 쌍을 집계 서버(180-B)로 보낼 수 있다.
유사하게, 집계 서버(180-B)는 프로세스(300)의 단계(308)와 관련하여 전술한 바와 같이 교환 암호화 및 선택된 암호화 키 Keyc1을 사용하여 수신된 변환 데이터에서 블라인드 서명된 조인 키(BlindlySignedKey)를 암호화할 수 있다. 그런 다음 집계 서버(180-A)는 각 변환에 대해, 튜플 {H(BlindlySignedKey, Keyc1), ConversionData3p, ConversionValue3p}을 집계 서버(180-A)에 보낼 수 있다.
변환 값(ConversionValue3p)이 복호화된다(806). 예를 들어, 집계 서버(180-A)는 공개 키 Si에 대응하는 개인 키를 사용하여 변환 값(ConversionValue3p)을 복호화할 수 있다. 결과적으로 PubKeyEncrypt(H(Vi, report_domain), Sc)에 의해 정의 된 두 번 암호화된 변환 값(ConversionData2)이 복구된다. 집계 서버(180-B)는 이 두 번 암호화된 변환 값(ConversionData2)을 로컬로 유지할 수 있다.
암호화된 노출 및 변환 데이터가 결합(조인)되고 필터링된다(808). 예를 들어, 각 집계 서버(180-B)는 데이터를 결합하고 필터링할 수 있다. 이 예에서, 집계 서버(180-A)는 프로세스(300)의 단계 314와 유사하게, 블라인드 서명된 키(Ħ(BlindlySignedKey)를 사용하여 변환 값(ConversionValue2), 변환 데이터(ConversionData3) 및 노출 데이터(ImpressionData3)를 결합할 수 있으나, 추가 변환 값(ConversionValue2)이 있다. 그 다음, 집계 서버(180-A)는 프로세스(300)의 단계(314)에서와 유사하게 임계 값에 기초하여 결합된 레코드를 필터링할 수 있다. 예를 들어, 집계 서버(180-A)는 데이터 집합에서 임계 값을 충족하지 않거나 초과하는 고유한 블라인드 서명된 키(Ħ(BlindlySignedKey))가 있는 결합된 {ConversionValue2, ConversionData3, ImpressionData3} 레코드를 필터링할 수 있다.
나머지 결합된 레코드 각각에 대해 집계 서버(180-A)는 키/값 쌍을 생성할 수 있다. 이 예에서 키는 블라인드 서명된 키(Ħ(BlindlySignedKey)), 세 번 암호화된 노출 데이터(ImpressionData3) 및 세 번 암호화된 변환 데이터(ConversionData3)의 암호화 해시일 수 있다. 값은 두 번 암호화된 변환 값(ConversionValue2)일 수 있다. 이 키/값 쌍은 {CrytpoHash(H(Key), ImpressionData3, ConversionData3), ConversionValue2}로 정의할 수 있다. 집계 서버(180-A)는 키/값 쌍을 집계 서버(180-B)로 전송할 수 있다.
집계 서버(180-B)는 데이터에 대해 동일한 필터링을 수행하여 필터링 후에 남아있는 동일한 튜플 세트 {H(Key), ImpressionData3, ConversionData3}를 포함하는 데이터 세트를 생성할 수 있다. 집계 서버(180-B)는 튜플에 대해 동일한 암호화 해시(예: CrytpoHash(H(Key), ImpressionData3, ConversionData3))를 수행하여 각 튜플에 대한 키를 가져올 수 있다. 집계 서버(180-B)는 생성된 키를 키/값 쌍의 키와 일치시킴으로써 집계 서버(180-A)로부터 수신된 키/값 쌍과이 데이터를 결합할 수 있다.
두 번 암호화된 변환 값(ConversionValue2)이 복호화된다(810). 집계 서버(180-B)는 공개 키 Sc에 해당하는 개인 키를 사용하여 두 번 암호화된 변환 값(ConversionValue2)을 복호화하여 한번 암호화된 변환 값(ConversionValue1)을 복구할 수 있으며, 이는 전술한 바와 같이 리포팅 시스템(190)의 공개 키를 사용하여 한번 암호화된다. 집계 서버(180-B)는 한번 암호화된 각각의 변환 값(ConversionValue1) 및 그 키(CrytpoHash(H(Key), ImpressionData3, ConversionData3))를 집계 서버(180-A)로 전송할 수 있다.
총 변환 값이 결정된다(812). 각 집계 서버(180-A 및 180-B)는 동일한 노출 데이터(ImpressionData3) 및 변환 데이터(ConversionData3)를 갖는 각 레코드에 대한 총 변환 값를 결정할 수 있다. 즉, ImpressionData3 및 ConversionData3의 결합된 각 조합에 대해, 집계 서버(180-A 및 180-B)는 변환 값의 합계(ConversionValue1)를 독립적으로 결정할 수 있다. 변환 값이 암호화되어 있으므로,
Figure pct00015
로 합계를 결정할 수 있다.
총 변환 값을 포함한 노출 및 변환 데이터가 리포팅 시스템으로 전송된다(814). 예를 들어, 집계 서버(180-A 및 180-B)는 단계 318-328에서 설명된 MPC 프로세스를 사용하여 노출 및 변환 데이터를 복호화할 수 있다. 각각의 집계 서버(180-A)는 각각의 노출 및 변환 쌍에 대해, 노출 데이터(ImpressionData1), 변환 데이터(ConversionData1), 변환 수의 카운트(count), 변환 값 (
Figure pct00016
...(
Figure pct00017
을 포함하는 보고서(리포트)를 생성하여 리포팅 시스템(190)에 전송할 수 있다. 예를 들어, 하나는 변환 값의 합에 대한 값이고 다른 하나는 변환 값의 제곱의 합에 대한 값이 여러 개 있을 수 있다(예: V2 = V 1 2인 경우 sum(V1) 및 sum(V2)).
리포팅 시스템(190)은 2 개의 집계 서버(180-A 및 180-B)로부터의 2 개의 보고서를 비교하여 이들이 일치하는지 확인할 수 있다. 이들이 일치하면, 리포팅 시스템(190)은 부정 탐지 시스템(170)으로부터의 블라인드 서명과 변환 데이터(mc)상의 변환 서버의 서명을 확인할 수 있다. 두 서명이 모두 확인되면, 리포팅 시스템(190)은 변환 보고서의 데이터를 복호화하여 데이터 암호화에 사용된 공개 키에 해당하는 개인 키를 사용하여 각 노출 및 변환 쌍에 대한 {mi || clicked, mc, count, ∑V… ∑Vn을 복구할 수 있다. 즉, 리포팅 시스템(190)은 노출 데이터(mi), 디지털 컴포넌트 클릭 여부, 변환 데이터(mc), 변환 횟수(count) 및 각 노출 및 변환 쌍에 대한 총 변환 값을 복구할 수 있다.
차등 프라이버시
프로세스(300)와 유사하게, 차등 프라이버시를 위해 프로세스(800)에서 서브 샘플링이 사용될 수 있다. 프로세스(800)의 단계(808)에서, 집계 서버(180-A 및 180-B)는 총 변환 값 ∑Vi에 노이즈를 도입하기 위해 프로세스(300)의 단계(314 및 316)에서와 유사한 서브 샘플링 기술을 사용할 수 있다. 또한 집계 서버(180-A 및 180-B)는 변환 보고서를 보내기 전에 각 변환 값 (H(∑V, report_domain)에 임의의 노이즈를 추가할 수 있다. 각 변환 값(H(∑V, report_domain)에 대해, 각 집계 서버(180-A 및 180-B)는 대신 (H(noisek + ∑V, report_domain)을 생성할 수 있다. 집계 서버(180-A와 180-B)는 모두 집계 서버(180-A와 180-B)가 공동으로 파생하는 공통 시드(예: Diffie-Hellman 프로토콜 사용)를 사용하여 난수 생성기를 초기화하여 일관된 노이즈(noisek)를 생성할 수 있다.
교차 장치 측정을 위한 추가 사용자 개인 정보 보호
위에서 설명한 것처럼 여러 기기에서 노출 및 변환 카운트와 변환 값을 결정할 때 고유 식별자(ID)는 사용자에 대한 정보이거나 이러한 정보(예: 사용자 이메일 주소의 암호화 해시)를 기반으로 할 수 있다. 노출 데이터(ImpressionData3p) 및 변환 데이터(ConversionData3p)에 대해 위에서 설명한 확률적 암호화를 사용하여, 집계 서버(180-A 및 180-B)는 사용자에 대한 일부 변환 수를 결정할 수 있지만 노출 또는 변환 자체는 확인할 수 없다. 그러나 집계 서버(180-A 및 180-B)는 사용자가 온라인 활동을 하고 있음을 감지할 수 있다.
도 9는 집계된 변환 데이터를 결정하기 위한 예시적인 프로세스(900)를 예시하는 흐름도이다. 프로세스(900)는 집계 서버(180-A 및 180-B)에 의해 수행될 수 있다.
노출 및 변환 데이터가 수신된다(902). 예를 들어, 전술한 바와 같이, 집계 서버(180-A)는 노출 데이터를 수신할 수 있고, 집계 서버(180-B)는 클라이언트 장치로부터 예를 들어 일괄적으로(batche) 변환 데이터를 수신할 수 있다.
이 예에서 노출 데이터는 디지털 컴포넌트의 각 노출에 대한 {H(CryptoHash(ID, dc_destination, report_domain), Stime), ImpressionData3p} 형식일 수 있다. 이 예에서, 고유 식별자(ID), 대상(목적지)(dc_destination) 및 리포팅 도메인의 암호화 해시는 타임 서버(192)의 추가 동형 공개 키 암호화 기술 H 및 공개 키 Stime을 사용하여 암호화된다. 이 암호화된 암호화 해시는 노출 조인 키 역할을한다. 노출 데이터는 또한 도 2를 참조하여 전술한 바와 같이 암호화될 수 있는 세 번 암호화된 노출 데이터(ImpressionData3p)를 포함한다.
변환 데이터는 디지털 컴포넌트의 각 변환에 대해 {H(CryptoHash(ID, dc_destination, report_domain), Stime), ConversionData3p} 형식이 될 수 있다. 이 예에서, 고유 식별자(ID), 목적지(dc_destination) 및 리포팅 도메인의 암호화 해시는 타임 서버(192)의 추가 동형 공개 키 암호화 기술 H 및 공개 키 Stime을 사용하여 암호화된다. 이 암호화된 암호화 해시는 변환 조인 키 역할을 한다. 변환 데이터는 또한 세 번 암호화된 변환 데이터(ConversionData3p)를 포함하며, 이는 도 2를 참조하여 전술한 바와 같이 암호화될 수 있다. 타임 서버(192)와 공모(colluding )하지 않고, 집계 서버(180-A) 또는 180-B는 암호화 기술 H의 확률적 특성으로 인해 CryptoHash(ID, dc_destination, report_domain)를 복구하거나 H(CryptoHash(…))를 이해할 수 없다.
논스(Nonces)가 선택된다(904). MPC 프로세스를 수행하여 노출 및 변환 데이터를 복호화하기 전에 집계 서버(180-A 및 180-B)는 각각 논스를 선택할 수 있다. 집계 서버(180-A)는 논스(noncei)를 선택할 수 있고, 집계 서버(180-B)는 논스(noncec)를 선택할 수 있다. 집계 서버(180-A 및 180-B)는 모두 해당 논스를 기밀로 유지할 수 있다.
조인 키는 암호화된다(906). 예를 들어, 집계 서버(180-A)는 프로세스(300)의 단계(306)와 관련하여 전술한 바와 같이, 교환 암호화 및 선택된 암호화 키 Keyi1을 사용하여 수신된 노출 데이터에서 조인 키 H(CryptoHash(…))를 암호화할 수 있다. 그런 다음 집계 서버(180-A)는 각 노출에 대해 {H(CryptoHash(ID, dc_destination, report_domain) + noncei, Stime), ImpressionData3p} 쌍을 집계 서버(180-B)로 보낼 수 있다.
유사하게, 집계 서버(180-B)는 프로세스(300)의 단계(308)와 관련하여 전술한 바와 같이 교환 암호화 및 선택된 암호화 키 Keyc1을 사용하여 수신된 노출 데이터에서 조인 키 H(CryptoHash(…))를 암호화할 수 있다. 그런 다음 집계 서버(180-B)는 각 노출에 대해 {H(CryptoHash(ID, dc_destination, report_domain) + noncec, Stime), ConversionData3p} 쌍을 집계 서버(180-A)로 보낼 수 있다.
업데이트된 조인 키가 생성된다(908). 수신된 각 암호화된 조인 키 쌍과 세 번 암호화된 변환 데이터 {H(CryptoHash(ID, dc_destination, report_domain) + noncei, Stime), ImpressionData3p}에 대해 집계 서버(180-A)는 조인 키와 변환 데이터를 다시 암호화한다. 프로세스(300)의 단계 310을 참조하여 위에서 설명한 바와 같이, 집계 서버(180-A)는 자신의 개인 키(공개 키 Si에 대응하는 개인 키)를 사용하여 세 번 암호화된 변환 데이터(ConversionData3p)를 복호화하여 두 번 암호화된 변환 데이터(ConversionData2)를 복구할 수 있다. 집계 서버(180-A)는 선택된 암호화 키 Keyi2를 사용하여 두 번 암호화된 변환 데이터(ConversionData2)를 다시 암호화할 수 있다.
집계 서버(180-A)는 또한 수신된 각각의 암호화된 조인 키 쌍 및 세 번 암호화된 변환 데이터 H(CryptoHash(ID, dc_destination, report_domain) + noncec, Stime)에 대해 업데이트된 조인 키를 생성할 수 있다. 예를 들어, 집계 서버(180-A)는 업데이트된 조인 키 H(CryptoHash(ID, dc_destination, report_domain) + noncec + noncei, Stime)를 생성할 수 있다. 그 다음, 집계 서버(180-A)는 {H(CryptoHash(ID, dc_destination, report_domain) + noncec + noncei, Stime), ConversionData3p} 쌍을 집계 서버(180-B)로 전송할 수 있다.
유사하게, 프로세스(300)의 단계 312를 참조하여 위에서 설명된 바와 같이, 집계 서버(180-B)는 자신의 개인 키(공개 키 Sc에 대응하는 개인 키)를 사용하여 세 번 암호화된 노출 데이터(ImpressionData3p)를 복호화하여 두 번 암호화된 노출 데이터(ImpressionData2)를 복구할 수 있다. 집계 서버(180-B)는 선택된 암호화 키 Keyc2를 사용하여 두 번 암호화된 노출 데이터(ImpressionData2)를 다시 암호화할 수 있다.
집계 서버(180-B)는 또한 수신된 각각의 암호화된 조인 키 쌍 및 세 번 암호화된 노출 데이터 H(CryptoHash(ID, dc_destination, report_domain) + noncei, Stime)에 대해 업데이트된 조인 키를 생성할 수 있다. 예를 들어, 집계 서버(180-B)는 업데이트된 조인 키 H(CryptoHash(ID, dc_destination, report_domain) + noncei + noncec, Stime)를 생성할 수 있다. 그 다음, 집계 서버(180-B)는 {H(CryptoHash(ID, dc_destination, report_domain) + noncei + noncec, Stime), ImpressionData3p} 쌍을 집계 서버(180-A)로 전송할 수 있다.
조인 키가 획득된다(910). 예를 들어, 각각의 집계 서버(180-A 및 180-B)는 타임 서버(192)와 상호 작용하여 각각의 노출 데이터 및 각각의 변환 데이터에 대한 조인 키를 획득할 수 있다. 집계 서버(180-A)는 각 노출 데이터 및 각 변환 데이터에 대해 H(CryptoHash(ID, dc_destination, report_domain) + noncei + noncec, Stime)를 타임 서버(192)로 전송할 수 있다. 타임 서버(192)는 결정론적 대칭 키 암호화 기술과 현재 일괄 처리를 위해 선택된 암호화 키를 사용하여 H(CryptoHash(ID, dc_destination, report_domain) + noncei + noncec, Stime)를 복호화하고 재 암호화할 수 있다. 재 암호화의 결과는 노출 데이터(ImpressionData3p)를 해당 변환 데이터(ConversionData3p)와 결합하기 위한 조인 키이다. 집계 서버(180-B)는 동일한 조인 키를 얻기 위해 유사한 방식으로 타임 서버(192)와 상호 작용할 수 있다.
노출 및 변환 데이터가 복호화된다(912). 획득된 조인 키로, 집계 서버(180-A 및 180-B)는 프로세스(300)의 단계 314-328에서 전술한 바와 같이 노출 및 변환 데이터를 복호화하기 위해 나머지 MPC 프로세스를 수행할 수 있다.
복호화된 노출 및 변환 데이터는 리포팅 시스템으로 전송된다(914). 예를 들어, 각 집계 서버(180-A 및 180-B)는 프로세스(300)의 단계 330 및 332를 참조하여 위에서 설명된 바와 같이 변환 보고서를 각각의 리포팅 시스템에 전송할 수 있다.
더 많은 개인 정보 보호를 제공하기 위해 일부 구현에서는 고유 식별자(ID)에 임의 또는 의사 난수 번호를 사용할 수 있다. 이 임의 또는 의사 난수 번호는 고유 식별자(ID)를 기반으로 할 수 있다. 예를 들어 난수는 HMACSHA256(이메일 주소, email_provider_private_key)을 기반으로 할 수 있다. 이 예에서, 위에서 설명한 키의 고유 식별자(ID)에 사용되는 난수는 전자 메일 공급자(또는 기타 사용자 인증 엔터티)의 개인 키를 사용하는 사용자 전자 메일 주소(또는 기타 사용자 정보)의 HMAC 일 수 있다. 그런 다음 전자 메일 공급자(또는 사용자 인증 엔터티)는 고유 식별자(ID)에 대한 난수를 사용자의 모든 장치 및 애플리케이션에 동기화할 수 있다. 그런 다음 노출 및 변환 데이터를 집계 서버(180-A 및 180-B)에 보고할 때 고유 식별자(ID) 대신이 난수를 사용할 수 있다.
도 10은 전술한 동작을 수행하는데 사용될 수 있는 예시적인 컴퓨터 시스템(1000)의 블록도이다. 시스템(1000)은 프로세서(1010), 메모리(1020), 저장 장치(1030) 및 입/출력 장치(1040)를 포함한다. 컴포넌트(1010, 1020, 1030 및 1040) 각각은 예를 들어 시스템 버스(1050)를 사용하여 상호 연결될 수 있다. 프로세서(1010)는 시스템(1000) 내에서 실행하기 위한 명령어를 처리할 수 있다. 일 구현에서, 프로세서(1010)는 단일 스레드 프로세서이다. 다른 구현에서, 프로세서(1010)는 다수의 스레드 프로세서이다. 프로세서(1010)는 메모리(1020) 또는 저장 장치(1030)에 저장된 명령어를 처리할 수 있다.
메모리(1020)는 시스템(1000) 내에 데이터를 저장한다. 일 구현에서, 메모리(1020)는 컴퓨터 판독 가능 매체이다. 일 구현에서, 메모리(1020)는 휘발성 메모리 유닛이다. 다른 구현에서, 메모리(1020)는 비 휘발성 메모리 유닛이다.
저장 장치(1030)는 시스템(1000)에 대용량 저장 장치를 제공할 수 있다. 일 구현에서, 저장 장치(1030)는 컴퓨터 판독 가능 매체이다. 다양한 구현에서, 저장 장치(1030)는 예를 들어 하드 디스크 장치, 광 디스크 장치, 다수의 컴퓨팅 장치(예를 들어, 클라우드 저장 장치)에 의해 네트워크를 통해 공유되는 저장 장치, 또는 일부 다른 대용량 저장 장치를 포함할 수 있다.
입/출력 장치(1040)는 시스템(1000)에 대한 입/출력 동작을 제공한다. 일 구현에서, 입력/출력 장치(1040)는 하나 이상의 네트워크 인터페이스 장치, 예를 들어 이더넷 카드, 직렬 통신 장치, 예를 들어 RS-232 포트, 및/또는 무선 인터페이스 장치, 예를 들어, 802.11 카드를 포함할 수 있다. 다른 구현에서, 입/출력 장치는 입력 데이터를 수신하고 출력 데이터를 다른 입/출력 장치, 예를 들어 키보드, 프린터 및 디스플레이 장치(1060)로 전송하도록 구성된 드라이버(구동) 장치를 포함할 수 있다. 그러나 모바일 컴퓨팅 장치, 모바일 통신 장치, 셋톱 박스 텔레비전 클라이언트 장치 등과 같은 다른 구현도 사용할 수 있다.
도 10에는 예시적인 처리 시스템이 설명되어 있지만, 본 명세서에 기술된 요지 및 기능적 동작의 구현은 다른 유형의 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있으며, 본 명세서 및 그 구조적 등가물에 개시된 구조를 포함하여, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다.
본 명세서에서 설명된 요지 및 동작은 본 명세서 및 그 구조적 균등물에 개시된 구조 또는 이들 중 하나 이상의 조합을 포함하는 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어로 구현될 수 있다. 본 명세서에서 설명된 요지는 하나 이상의 컴퓨터 프로그램, 예컨대 데이터 처리 장치에 의한 실행 또는 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 저장 매체상에 인코딩된 컴퓨터 프로그램 명령어의 하나 이상의 모듈로서 구현될 수 있다. 대안으로 또는 추가로, 프로그램 명령어는 데이터 처리 장치에 의한 실행을 위해 적합한 수신기 장치로 전송하기 위해 데이터를 인코딩하도록 생성되는 인위적으로 생성된 전파 신호(예: 기계에서 생성된 전기, 광학 또는 전자기 신호)에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 장치, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 장치, 또는 이들 중 하나 이상의 조합일 수 있거나 포함될 수 있다. 컴퓨터 저장 매체가 전파 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령어의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 개별 물리적 컴포넌트 또는 매체(예를 들어, 다수의 CD, 디스크 또는 다른 저장 장치)일 수 있거나 포함될 수 있다.
본 명세서에서 설명된 동작은 하나 이상의 컴퓨터 판독 가능 저장 장치에 저장된 데이터 또는 다른 소스로부터 수신된 데이터에 대해 데이터 처리 장치에 의해 수행되는 동작으로서 구현될 수 있다.
"데이터 처리 장치"라는 용어는 예를 들어, 프로그램 가능한 프로세서, 컴퓨터, 칩 상의 시스템, 또는 다수의 것들, 또는 이들의 조합들을 포함하는, 데이터를 프로세싱하기 위한 다양한 장치들, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 상기 장치는, 하드웨어 이외에, 해당 컴퓨터 프로그램을 위한 실행 환경을 제작하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 환경, 가상 기계, 또는 그들 중 하나 이상의 조합을 구성하는 코드를 또한 포함할 수 있다. 상기 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 기반구조들과 같은, 다양한 상이한 컴퓨팅 모델 기반구조들을 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 스크립트, 또는 코드로 또한 알려짐)은 컴파일된 또는 해석된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립형 프로그램을 또는 모듈, 컴포넌트, 서브루틴, 객체, 또는 컴퓨팅 환경에서의 사용을 위해 적합한 다른 유닛을 포함하는 임의의 형태로 분배될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수도 있지만 그렇지 않을 수도 있다. 컴퓨터 프로그램은 다른 프로그램들 또는 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들), 해당 프로그램 전용의 단일 파일, 또는 다수의 조정된 파일들(예를 들어, 하나 이상의 모듈들, 서브 프로그램들, 또는 코드의 일부들을 저장하는 파일들)을 보유하는 파일의 일부에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터 또는 한 자리에 위치되거나 또는 다수의 자리들에 분산되고 그리고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들 상에도 실행되도록 분배될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작시키고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능한 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 특수 목적 논리 회로, 예를 들어, FPGA(field programmable gate array) or an ASIC(application specific integrated circuit)에 의해 또한 수행될 수 있으며, 장치들 또한 특수 목적 논리회로에 의해 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은 예를 들어, 범용 및 특수 목적 마이크로프로세서들 둘 모두 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들과 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들에 따라 액션들을 수행하기 위한 프로세서이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들(예를 들어, 자기, 광 자기 디스크들 또는 광학 디스크들)로부터 데이터를 수신하거나 저장 디바이스들로 데이터를 전송하기 위해 저장 디바이스들에 동작 가능하게 결합되거나 저장 디바이스들을 포함할 것이다. 그러나 컴퓨터에는 그러한 디바이스들이 필요 없다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 폰, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예를 들어, 범용 직렬 버스(USB) 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적절한 디바이스들은 모든 형태의 비-휘발성 메모리, 매체, 메모리 디바이스들을 포함하며, 상기 메모리 디바이스들은 반도체 메모리 디바이스들 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 또는 분리성 디스크들; 광 자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들이다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 포함될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 기술된 발명의 구현예들은 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스 예를 들어, 음극선관(CRT), 액정 디스플레이(LCD) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있는 터치스크린, 터치 패드, 키보드 및 포인팅 디바이스, 예를 들어, 마우스 또는 트랙볼 등을 갖는 컴퓨터상에서 구현될 수 있다. 다른 종류의 디바이스들이 사용자와의 상호작용을 제공하는데 사용될 수 있으며; 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각 피드백을 포함할 수 있고; 그리고 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 예를 들어, 웹브라우저로부터 수신된 요청들에 응답하여 사용자의 클라이언트 장치 상의 웹 브라우저에 웹 페이지들을 송신함으로써, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서들을 보내고 그로부터 문서들을 수신하여 사용자와 인터랙팅할 수 있다.
본 명세서에 기술된 발명은 컴퓨팅 시스템 내에서 구현될 수 있으며, 상기 컴퓨팅 시스템은 백 엔드 컴포넌트(예를 들어 데이터 서버)를 포함하거나 미들웨어 컴포넌트(예를 들어 애플리케이션 서버)를 포함하거나 프론트 엔드 컴포넌트(예를 들어 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터 또는 사용자가 본 명세서에 기술된 발명의 구현과 인터랙팅할 수 있는 웹 브라우저)를 포함하거나 또는 하나 이상의 그러한 백 엔드, 미들웨어, 프론트 엔드 컴포넌트들의 조합을 포함할 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신 예를 들어, 통신 네트워크, 의 임의의 형태 또는 매체에 의해 상호연결될 수 있다. 통신 네트워크들의 예시들은 근거리 통신망( "LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어-투-피어 네트워크들(예를 들어, 애드 혹 피어-투-피어 네트워크들)을 포함할 수 있다.
컴퓨팅 시스템에는 사용자와 서버가 포함될 수 있다. 사용자와 서버는 일반적으로 서로 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호작용한다. 사용자와 서버의 관계는 각 컴퓨터에서 실행되고, 서로 사용자-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 일부 실시 예에서, 서버는(예를 들어, 클라이언트 장치와 상호작용하는 사용자에게 데이터를 표시하고 사용자로부터 사용자 입력을 수신하기 위해) 데이터(예를 들어, HTML 페이지)를 클라이언트 장치로 전송한다. 클라이언트 장치에서 생성된 데이터(예: 온라인 상호작용의 결과)는 서버의 클라이언트 장치로부터 수신될 수 있다.
본 명세서는 많은 특정 구현예 세부 사항들을 포함하지만, 이들이 발명들의 범위 또는 청구될 수 있는 범위의 제한들로 해석되어서는 안되며, 오히려 본 명세서에 기술된 시스템들 및 방법들의 특정한 구현예들에 특정적인 구성들의 설명들로 해석되어야한다. 별도 구현예들의 컨텍스트에서 본 명세서에 기술된 일정 구성들은 단일 구현으로 조합하여 또한 구현될 수 있다. 반대로, 단일 구현의 컨텍스트에서 기술된 다양한 구성들은 다수의 구현 구현예들에서 개별적으로 또는 임의의 적절한 하위조합으로 또한 구현될 수 있다. 또한, 구성들이 일정 조합들로 작용하는 것으로 기술되고 그렇게 초기에 청구될 수 있지만, 일부 경우들에서 청구된 조합으로부터의 하나 이상의 구성들은 조합으로부터 제거될 수 있고, 청구된 조합은 하위조합 또는 하위조합의 변형으로 유도될 수 있다.
유사하게, 동작들이 특정 순서로 도면들에 도시되어 있지만, 이는 바람직한 동작을 달성하기 위해 이러한 동작이 도시된 순서 또는 순차적인 순서로 수행되거나 도시된 모든 동작이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서 멀티태스킹 및 병렬 처리가 유리할 수 있다. 또한, 상술한 구현 예에서 다양한 시스템 컴포넌트의 분리는 모든 구현 예에서 그러한 분리를 필요로 하는 것으로 이해되어서는 안되며, 서술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품 내에 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것을 이해해야 한다.
따라서, 본 발명의 특정 구현 예가 설명되었다. 다른 구현 예들은 다음의 청구항들의 범위 내에 있다. 경우에 따라 청구 범위에 나열된 동작을 다른 순서로 수행할 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 얻기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 필요로 하지는 않는다. 특정 구현 예에서, 멀티태스킹 또는 병렬 처리가 유리할 수 있다.

Claims (14)

  1. 컴퓨터로 구현되는 방법으로서,
    제1 집계 서버에 의해 그리고 다수의 클라이언트 장치 각각으로부터, 클라이언트 장치에 의해 기록된 디지털 컴포넌트의 각 노출에 대한 노출 데이터를 수신하는 단계 -노출 데이터는 (i) 노출이 발생한 클라이언트 장치의 애플리케이션 또는 클라이언트 장치에 대한 제1 고유 식별자를 기반으로 하는 제1 조인 키, (ii) 제1 집계 서버의 제1 공개 키를 사용하고 그리고 제1 집계 서버와는 다른 제2 집계 서버의 제2 공개 키를 사용하여 암호화된 노출 데이터를 포함함-;
    제2 집계 서버에 의해 그리고 다수의 클라이언트 장치의 적어도 일부 각각으로부터, 클라이언트 장치에 의해 기록된 각 변환에 대한 변환 데이터를 수신하는 단계 -변환 데이터는 (i) 변환이 발생한 클라이언트 장치의 애플리케이션 또는 클라이언트 장치에 대한 제2 고유 식별자를 기반으로 하는 제2 조인 키, (ii) 제1 공개 키와 제2 공개 키를 사용하여 암호화된 변환 데이터를 포함하는 제2 값, 그리고 (iii) 암호화된 변환 값 데이터를 포함함-;
    제1 집계 서버 및 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하는 멀티-파티(multi-party) 계산 프로세스를 수행하는 단계 - 멀티-파티 계산 프로세스를 수행하는 단계는,
    제1 조인 키 및 제2 조인 키에 기초하여, 해당 암호화된 노출 데이터 및 암호화된 변환 데이터의 쌍을 식별하는 단계; 그리고
    제1 공개 키에 대응하는 제1 개인 키 및 제2 공개 키에 대응하는 제2 개인 키를 사용하여 다수의 스테이지에서 암호화된 노출 데이터 및 변환 데이터의 각 쌍에 대한 노출 데이터 및 변환 데이터를 복호화하는 단계를 포함하며, 각 스테이지는,
    암호화된 노출 데이터 및 암호화된 변환 데이터의 각 쌍의 암호화된 변환 데이터 또는 암호화된 노출 데이터 중 하나를 복호화하는 제1 집계 서버 또는 제2 집계 서버 중 하나를 포함하며, 상기 제1 집계 서버 또는 제2 집계 서버 중 하나는 결과 데이터를 제1 집계 서버 또는 제2 집계 서버 중 다른 하나에 전송함-;
    복호화된 노출 데이터 및 복호화된 변환 데이터를 하나 이상의 리포팅 시스템으로 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서, 각 변환에 대한 암호화된 변환 값 데이터는,
    확률적 동형 가산 공개 키 암호화 기술을 사용하여 첫번째 암호화되고, 제2 집계 서버의 공개 키를 사용하여 두 번째 암호화되고, 제1 집계 서버의 공개 키를 사용하여 세 번째 암호화되어 세 번 암호화된(thrice-encrypted) 변환 값을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 선행하는 청구항 중 어느 한 항에 있어서, 변환을 위한 상기 암호화된 변환 값 데이터는 변환 값의 암호화된 조합을 포함하고, 상기 변환을 위한 변환 데이터에 대한 리포팅 도메인은 리포팅되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 선행하는 청구항 중 어느 한 항에 있어서, 제1 집계 서버 및 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는,
    제1 집계 서버에 의해, 각각의 제1 조인 키를 암호화하는 단계; 그리고
    각 노출에 대해, 제1 집계 서버에 의해, 노출에 대한 암호화된 노출 데이터 및 노출에 대한 암호화된 제1 조인 키를 포함하는 데이터 쌍을 제2 집계 서버에 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 제4항에 있어서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는,
    제2 집계 서버에 의해, 각각의 제2 조인 키를 암호화하는 단계;
    각 변환에 대해, 제2 집계 서버에 의해, 변환을 위한 암호화된 제2 조인 키, 변환을 위한 암호화된 변환 데이터 및 변환을 위한 암호화된 변환 값을 포함하는 데이터 튜플을 제1 집계 서버에 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제5항에 있어서,
    각 변환에 대한 암호화된 변환 값 데이터는 확률적 동형 가산 공개 키 암호화 기술을 사용하여 첫번째 암호화되고, 제2 집계 서버의 공개 키를 사용하여 두 번째 암호화되고, 제1 집계 서버의 공개 키를 사용하여 세 번째 암호화되어 세 번 암호화된 변환 값을 포함하며, 그리고
    제1 집계 서버 및 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는,
    상기 제1 집계 서버에 의해 그리고 상기 제2 집계 서버로부터 수신된 각 데이터 튜플에 대해, 데이터 튜플의 암호화된 변환 값 데이터를 복호화하여 각 데이터 튜플에 대해 두 번 암호화된(twice-encrypted) 변환 값 데이터를 생성하는 단계; 그리고
    암호화된 제1 조인 키 및 암호화된 제2 조인 키를 사용하여, 해당 노출 데이터 및 변환 데이터의 그룹을 식별하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제6항에 있어서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는,
    제1 집계 서버에 의해 그리고 해당 노출 데이터 및 변환 데이터의 각 그룹에 대해, 암호화된 노출 데이터와 암호화된 변환 데이터를 기반으로 하는 키와 두 번 암호화된 변환 값 데이터인 값을 포함하는 키 값 쌍을 생성하는 단계; 그리고
    제1 집계 서버에 의해, 각 키 값 쌍을 제2 집계 서버에 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 제6항 또는 제7항에 있어서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는,
    상기 제2 집계 서버에 의해, 상기 제2 집계 서버의 공개 키에 해당하는 제2 집계 서버의 개인 키를 이용하여 두 번 암호화된 변환 값 데이터를 복호화하여 한번 암호화된 변환 값 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 제8항에 있어서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는,
    제2 집계 서버에 의해, 한번 암호화된 변환 데이터, 및 각각의 한번 암호화된 변환 데이터에 대해 한번 암호화된 변환 값 데이터에 대응하는 키를 제1 집계 서버에 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 제9항에 있어서, 상기 제1 집계 서버 및 상기 제2 집계 서버에 의해, 상기 암호화된 노출 데이터 및 상기 암호화된 변환 데이터를 복호화하기 위한 멀티-파티 계산 프로세스를 수행하는 단계는,
    노출 및 변환 데이터의 각 그룹에 대해, 한번 암호화된 변환 값 데이터를 기반으로 총 변환 량(total conversion amount)을 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  11. 제10항에 있어서,
    노출 및 변환 데이터의 각 그룹에 대한 총 변환 량을 결정하는 단계는 그룹에서 한번 암호화된 변환 값 데이터를 합산하여 결정되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  12. 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 제1항 내지 제11항 중 어느 한 항의 방법의 단계를 수행하게 하는 명령어를 포함하는 하나 이상의 컴퓨터 판독 가능 저장 매체.
  13. 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 제1항 내지 제11항 중 어느 한 항의 방법의 단계를 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램 제품.
  14. 부정 방지 시스템으로서,
    하나 이상의 프로세서 및 제11항에 따른 하나 이상의 컴퓨터 판독 가능 저장 매체를 갖는 데이터 처리 시스템을 포함하며, 상기 하나 이상의 프로세서는 제1항 내지 제11항 중 어느 한 항의 단계를 수행하도록 구성되는 부정 방지 시스템.
KR1020217020668A 2020-02-06 2020-12-14 암호화된 네트워크 값 집계 KR102582514B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237032243A KR20230141908A (ko) 2020-02-06 2020-12-14 암호화된 네트워크 값 집계

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL272520A IL272520A (en) 2020-02-06 2020-02-06 Aggregation of encrypted network values
IL272520 2020-02-06
PCT/US2020/064839 WO2021158288A1 (en) 2020-02-06 2020-12-14 Aggregating encrypted network values

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237032243A Division KR20230141908A (ko) 2020-02-06 2020-12-14 암호화된 네트워크 값 집계

Publications (2)

Publication Number Publication Date
KR20210102291A true KR20210102291A (ko) 2021-08-19
KR102582514B1 KR102582514B1 (ko) 2023-09-26

Family

ID=77200220

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217020668A KR102582514B1 (ko) 2020-02-06 2020-12-14 암호화된 네트워크 값 집계
KR1020237032243A KR20230141908A (ko) 2020-02-06 2020-12-14 암호화된 네트워크 값 집계

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237032243A KR20230141908A (ko) 2020-02-06 2020-12-14 암호화된 네트워크 값 집계

Country Status (7)

Country Link
US (2) US12021972B2 (ko)
EP (1) EP3884609A1 (ko)
JP (2) JP7155437B2 (ko)
KR (2) KR102582514B1 (ko)
CN (2) CN113498602B (ko)
IL (1) IL272520A (ko)
WO (1) WO2021158288A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL272516A (en) * 2020-02-06 2021-08-31 Google Llc Prevention of data manipulation using multiple aggregation servers
IL272520A (en) * 2020-02-06 2021-08-31 Google Llc Aggregation of encrypted network values
FR3107128B1 (fr) * 2020-02-06 2022-01-21 Cosmian Tech Procédé et dispositif d'évaluation de correspondance d'ensembles de données structurées protégées par le chiffrement
US11899823B2 (en) * 2021-02-08 2024-02-13 Snap Inc. Privacy safe anonymized identity matching
CN114221749B (zh) * 2021-12-13 2022-08-30 成都天府通金融服务股份有限公司 基于多类型服务器的密钥统一管理方法及系统、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025916A1 (ja) * 2013-08-22 2015-02-26 日本電信電話株式会社 マルチパーティセキュア認証システム、認証サーバ、中間サーバ、マルチパーティセキュア認証方法及びプログラム
KR101677803B1 (ko) * 2014-09-30 2016-11-21 한국정보통신주식회사 카드 리더, 단말기, 중계 서버 및 그를 이용한 결제 정보 처리 방법
EP3506550A1 (en) * 2017-12-28 2019-07-03 Flytxt B.V. Providing security against user collusion in data analytics using random group selection

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9548861B2 (en) * 2011-06-10 2017-01-17 Nec Corporation Encrypted statistical processing system, device, method, and program
US8978158B2 (en) 2012-04-27 2015-03-10 Google Inc. Privacy management across multiple devices
US9552590B2 (en) 2012-10-01 2017-01-24 Dstillery, Inc. Systems, methods, and media for mobile advertising conversion attribution
US9641332B1 (en) 2013-01-30 2017-05-02 Google Inc. Privacy-preserving measurements of a campaign
GB2530726B (en) 2014-09-25 2016-11-02 Ibm Distributed single sign-on
US9565020B1 (en) * 2016-02-02 2017-02-07 International Business Machines Corporation System and method for generating a server-assisted strong password from a weak secret
CN109075963B (zh) * 2016-05-13 2022-04-01 Abb瑞士股份有限公司 安全远程聚合
US10390220B2 (en) * 2016-06-02 2019-08-20 The Regents Of The University Of California Privacy-preserving stream analytics
US10565524B2 (en) * 2017-01-31 2020-02-18 Hewlett Packard Enterprise Development Lp Performing privacy-preserving multi-party analytics on horizontally partitioned local data
WO2018175262A1 (en) * 2017-03-21 2018-09-27 Tora Holdings, Inc. Secure order matching by distributing data and processing across multiple segregated computation nodes
WO2018201062A1 (en) * 2017-04-28 2018-11-01 IronCore Labs, Inc. Orthogonal access control for groups via multi-hop transform encryption
US10630655B2 (en) * 2017-05-18 2020-04-21 Robert Bosch Gmbh Post-quantum secure private stream aggregation
US12067129B2 (en) 2017-06-23 2024-08-20 Flytxt B.V. Privacy preserving computation protocol for data analytics
WO2019010430A2 (en) * 2017-07-06 2019-01-10 Robert Bosch Gmbh METHOD AND SYSTEM FOR PUBLICITY BY SOCIAL MEDIA PRESERVING CONFIDENTIALITY
WO2019020830A1 (en) * 2017-07-28 2019-01-31 Koninklijke Philips N.V. EVALUATION OF A MONITORING FUNCTION
US20200151356A1 (en) * 2017-08-11 2020-05-14 Duality Technologies, Inc. System and method for fast and efficient searching of encrypted ciphertexts
CN108965230B (zh) * 2018-05-09 2021-10-15 深圳市中信网安认证有限公司 一种安全通信方法、系统及终端设备
US10985904B2 (en) * 2019-06-18 2021-04-20 International Business Machines Corporation Compressible (F)HE with applications to PIR
IL272520A (en) * 2020-02-06 2021-08-31 Google Llc Aggregation of encrypted network values

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025916A1 (ja) * 2013-08-22 2015-02-26 日本電信電話株式会社 マルチパーティセキュア認証システム、認証サーバ、中間サーバ、マルチパーティセキュア認証方法及びプログラム
KR101677803B1 (ko) * 2014-09-30 2016-11-21 한국정보통신주식회사 카드 리더, 단말기, 중계 서버 및 그를 이용한 결제 정보 처리 방법
EP3506550A1 (en) * 2017-12-28 2019-07-03 Flytxt B.V. Providing security against user collusion in data analytics using random group selection

Also Published As

Publication number Publication date
US20220376900A1 (en) 2022-11-24
US12021972B2 (en) 2024-06-25
WO2021158288A1 (en) 2021-08-12
JP2022534158A (ja) 2022-07-28
JP7155437B2 (ja) 2022-10-18
CN116938449A (zh) 2023-10-24
KR102582514B1 (ko) 2023-09-26
EP3884609A1 (en) 2021-09-29
US20240297783A1 (en) 2024-09-05
JP7401624B2 (ja) 2023-12-19
KR20230141908A (ko) 2023-10-10
IL272520A (en) 2021-08-31
CN113498602B (zh) 2023-07-11
JP2023002596A (ja) 2023-01-10
CN113498602A (zh) 2021-10-12

Similar Documents

Publication Publication Date Title
KR102582514B1 (ko) 암호화된 네트워크 값 집계
US12069157B2 (en) Generating sequences of network data while preventing acquisition or manipulation of time data
JP7399236B2 (ja) 複数の集約サーバを使用してデータ操作を防止すること
US12010106B2 (en) Preventing fraud in aggregated network measurements

Legal Events

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