KR102639227B1 - 시간 데이터의 획득 또는 조작을 방지하면서 네트워크 데이터의 시퀀스 생성 - Google Patents

시간 데이터의 획득 또는 조작을 방지하면서 네트워크 데이터의 시퀀스 생성 Download PDF

Info

Publication number
KR102639227B1
KR102639227B1 KR1020217040459A KR20217040459A KR102639227B1 KR 102639227 B1 KR102639227 B1 KR 102639227B1 KR 1020217040459 A KR1020217040459 A KR 1020217040459A KR 20217040459 A KR20217040459 A KR 20217040459A KR 102639227 B1 KR102639227 B1 KR 102639227B1
Authority
KR
South Korea
Prior art keywords
data
encrypted
conversion
aggregation server
key
Prior art date
Application number
KR1020217040459A
Other languages
English (en)
Other versions
KR20220006616A (ko
Inventor
강 왕
마르셀 엠. 모티 융
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20220006616A publication Critical patent/KR20220006616A/ko
Application granted granted Critical
Publication of KR102639227B1 publication Critical patent/KR102639227B1/ko

Links

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
    • 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
    • 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/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
    • 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/3297Cryptographic 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 time stamps, e.g. generation of time stamps
    • 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)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)
  • Burglar Alarm Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

방법, 시스템 및 디바이스는 네트워크 측정치를 결정하기 위한 방법을 포함한다. 일부 양태에서, 방법은 제1 집계 서버에 의해 다수의 클라이언트 디바이스 각각으로부터, 암호화된 노출 데이터를 수신하는 단계를 포함한다. 제2 집계 서버들은 다수의 클라이언트 디바이스의 적어도 일부 각각으로부터, 암호화된 전환 데이터를 수신한다. 제1 집계 서버와 제2 집계 서버는 암호화된 노출 데이터와 암호화된 전환 데이터의 시간순 시퀀스를 생성하고 암호화된 노출 데이터와 암호화된 전환 데이터를 복호화하기 위해 다자간 계산 프로세스를 수행한다.

Description

시간 데이터의 획득 또는 조작을 방지하면서 네트워크 데이터의 시퀀스 생성
클라이언트 디바이스는 인터넷과 같은 공용 네트워크를 통해 데이터를 전송한다. 이러한 통신은 의도된 수신자가 아닌 엔티티들이 가로채거나 변경할 수 있다. 또한, 엔터티들은 네트워크 ID를 위조하고 이러한 위조된 네트워크 ID에서 비롯된 것으로 보이는 데이터를 전송할 수 있다. 이러한 위조의 예는 엔티티가 네트워크 ID를 생성하여 피어-투-피어 네트워크의 평판(reputation) 시스템을 파괴하는 시빌(Sybil) 공격이다.
본 명세서는 사기를 방지하고 사용자 프라이버시를 보호하는 방식으로 통신 네트워크 측정치를 생성하는 것과 관련된 기술을 설명한다.
일반적으로, 본 명세서에 기술된 주제의 하나의 혁신적인 양태는 제1 집계 서버에 의해 다수의 클라이언트 디바이스 각각으로부터, 클라이언트 디바이스에 의해 기록된 디지털 컴포넌트의 각 노출에 대해, (i) 노출이 발생된 클라이언트 디바이스 또는 클라이언트 디바이스상의 애플리케이션에 대한 제1 고유 식별자를 기반으로 하는 제1 결합 키, (ii) 제1 집계 서버의 제1 공개키와 제1 집계 서버와 다른 제2 집계 서버의 제2 공개키를 사용하여 암호화된 암호화된 노출 데이터 및 (iii) 노출이 발생된 시간을 나타내는 암호화된 노출 시간 데이터를 포함하는 노출 데이터를 수신하는 단계와; 제2 집계 서버에 의해 다수의 클라이언트 디바이스의 적어도 일부 각각으로부터, 클라이언트 디바이스에 의해 기록된 각 전환에 대해, (i) 전환이 발생된 클라이언트 디바이스 또는 클라이언트 디바이스상의 애플리케이션에 대한 제2 고유 식별자를 기반으로 하는 제2 결합 키, (ii) 제1 공개키 및 제2 공개키를 사용하여 암호화된 암호화된 전환 데이터를 포함하는 제2 값, 및 (iii) 전환이 발생된 시간을 나타내는 암호화된 전환 시간 데이터를 포함하는 전환 데이터를 수신하는 단계와; 제1 집계 서버와 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 전환 데이터의 시간순 시퀀스를 생성하고 암호화된 노출 데이터 및 암호화된 전환 데이터를 복호화하기 위해 다자간 계산 프로세스를 수행하는 단계와, 상기 다자간 계산 프로세스를 수행하는 단계는 제1 결합 키 및 제2 결합 키에 기초하여, 암호화된 전환 데이터 및 대응하는 암호화된 노출 데이터의 그룹을 식별하는 단계; 암호화된 노출 시간 데이터 및 암호화된 전환 시간 데이터에 기초하여 각각의 시간순 시퀀스에 대해 상기 암호화된 전환 데이터 및 대응하는 암호화된 노출 데이터를 정렬하는 단계; 및 제1 공개키에 대응하는 제1 개인키 및 제2 공개키에 대응하는 제2 개인키를 사용하여 상기 암호화된 노출 데이터 및 전환 데이터의 각 시퀀스에 대한 노출 데이터 및 전환 데이터를 다단계로 복호화하는 단계를 포함하는 방법으로 구현될 수 있다.
이 양태의 다른 구현은 컴퓨터 저장 디바이스에 인코딩된 방법의 양태를 수행하도록 구성된 대응하는 장치, 시스템 및 컴퓨터 프로그램을 포함한다. 유리하게는, 이는 사용자 프라이버시를 유지하고 따라서 보다 안전한 시스템/방법을 제공하면서 전환 데이터를 노출 데이터에 귀속(attribute)시키는 수단을 제공한다. 본 명세서에 기술된 바와 같이, 전환 데이터는 디지털 컴포넌트와의 사용자 상호 작용에 대응하는 반면, 노출 데이터는 사용자에게 디지털 컴포넌트를 제공하는 것에 대응한다. 따라서, 해당 노출에 전환을 귀속시킴으로써 노출 및 전환 데이터를 조정하는 것은 사용자에게 제공되는 디지털 컴포넌트와의 사용자 상호 작용을 모니터링하는데 유용하다. 전환 또는 노출 데이터를 기반으로 사용자를 식별하거나 추적할 수 없도록 이러한 상호 작용을 모니터링할 때 사용자 프라이버시를 유지하는 보안 시스템을 제공하는 것이 종종 중요하다. 개시된 기술은 노출 데이터와 전환 데이터를 조정할 때 사용자의 프라이버시를 유지할 수 있도록 하는 기술적 효과를 제공하고, 노출 데이터와 전환 데이터를 조정할 때 사기 행위를 방지하는 기술적 효과도 제공한다. 특히, 위에서 언급한 암호화 기술은 제3자가 당사자를 사용자에게 다시 이끌 수 있는 민감한 노출 또는 전환 데이터를 가로채지 못하게 한다. 또한, 이러한 암호화 기술은 위의 방법에 관련된 모든 엔터티가 사용자에 대한 정보를 학습하는 것을 방지하고(예를 들어, 특정 사용자에 대한 노출 및 전환 데이터를 매칭시킴으로써) 따라서 사용자가 노출 또는 전환 데이터를 기반으로 추적되는 것을 방지한다. 예를 들어, 앞서 언급한 바와 같이, 노출 데이터와 전환 데이터는 각각 제1 집계 서버의 제1 공개키와 제2 집계 서버의 제2 공개키를 사용하여 이중 암호화되었다. 이 특정 기능은 암호화된 노출 데이터 및 전환 데이터를 복호화하기 위해서는(즉, 각각의 개인키를 사용하여) 두 집계 서버가 모두 필요하기 때문에 보안을 강화하고 사용자 프라이버시를 보호하는 역할을 한다. 이런 식으로, 하나의 서버(또는 가로채는 당사자)가 평문(일반 텍스트) 노출 또는 전환 데이터를 얻을 수 없으므로 보안이 향상된다. 따라서, 개시된 기술은 사용자 프라이버시가 유지될 수 있게 하는 디지털 컴포넌트와의 사용자 상호 작용을 모니터링하기 위한 보안 시스템을 제공하는 기술적 문제를 해결한다.
또한 디지털 컴포넌트와의 사용자 상호 작용을 모니터링하고 노출 및 전환 데이터를 조정할 때 사기(예를 들어, 디지털 컴포넌트와의 거짓 사용자 상호 작용 에뮬레이션)를 방지하는 것이 종종 중요하다. 다수의 집계 서버를 사용하여 다중 당사자 계산(MPC)을 구성하면 각 서버가 사기 행위(예를 들어, 서버 중 하나가 손상되거나 다른 엔티티들과 공모하는 경우)의 징후에 대해 서로 확인할 수 있게 하고 측정에서 사기를 방지할 수 있다. 따라서 노출 및 전환 데이터를 조정할 때 사기 행위를 방지하는 동시에 사용자 프라이버시를 유지하는 공개된 기술에 의해 추가적인 기술 효과가 가능하다.
또한, 개시된 기술은 디지털 컴포넌트와의 사용자 상호 작용을 위해 더 많은 유연성을 가능하게 한다. 특히, 클라이언트 디바이스 또는 애플리케이션에 대한 고유 식별자를 기반으로 하는 위에서 언급한 결합 키 사용은 동일한 플랫폼 또는 교차 플랫폼 사용자 상호 작용을 모니터링할 수 있다(즉, 노출 및 전환은 동일하거나 다른 웹 브라우저 또는 사용자 디바이스의 다른 애플리케이션을 통해 발생함).
게다가, 암호화된 전환 데이터 및 대응하는 암호화된 노출 데이터의 그룹을 식별함으로써 시간순 시퀀스를 생성하는 단계; 및 각 시간순 시퀀스에 대해, 암호화된 노출 시간 데이터 및 암호화된 전환 시간 데이터에 기초하여 암호화된 전환 데이터 및 대응하는 암호화된 노출 데이터를 정렬하는 단계의 특징은 해당 노출에 대한 전환의 기여에 있어 정확도를 높일 수 있다. 이는 전환이 전환 및 노출에 대한 개별 시간 데이터를 기반으로 하는 노출에 기인(귀속)하기 때문에 디지털 컴포넌트와의 사용자 상호 작용을 보다 정확하게 모니터링할 수 있다.
이러한 구현 및 다른 구현은 다음 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 일부 양태에서, 암호화된 노출 시간 데이터는 제1 공개키 및 제2 공개키를 사용하여 암호화된다. 암호화된 노출 시간 데이터는 노출이 발생된 시간과 노출이 발생된 클라이언트 디바이스의 클럭 스큐의 합에 대한 암호화된 버전을 포함할 수 있다. 노출이 발생된 시간과 노출이 발생된 클라이언트 디바이스의 클럭 스큐의 합은 동형, 부가, 확률론적 공개키 암호화를 사용하여 암호화될 수 있다.
일부 양태에서, 암호화된 전환 시간 데이터는 제1 공개키 및 제2 공개키를 사용하여 암호화된다. 암호화된 전환 시간 데이터는 전환이 발생된 시간과 전환이 발생된 클라이언트 디바이스의 클럭 스큐의 합계의 암호화된 버전을 포함한다. 전환이 발생된 시간과 전환이 발생된 클라이언트 디바이스의 클럭 스큐의 합은 동형, 부가, 확률적 공개키 암호화를 사용하여 암호화된다. 노출 및/또는 전환 날짜의 이중 암호화와 유사하게 노출 시간 데이터 및/또는 전환 시간 데이터의 이중 암호화는 보안을 향상시키므로 유리하다. 이중 암호화된 시간 데이터를 복호화하려면 두 집계 서버의 개인키가 필요하다. 이러한 방식으로, 하나의 서버(또는 가로채는 당사자)만으로는 일반 텍스트 시간 데이터를 얻을 수 없으므로 시간-간격 기반 공격의 위험을 완화하고 보안을 향상시킨다. 암호화된 노출 및/또는 전환 시간 데이터에서 클럭 스큐를 사용하면 동일-디바이스 전환과 교차-디바이스(디바이스간) 전환을 구분하는데 특히 유용하다. 본 명세서에 설명된 바와 같이, 전환 및 노출이 동일한 디바이스에서 발생하는 경우, 각 전환 및 노출에 대한 디바이스의 클럭 스큐는 (암호화되어 있기 때문에) 동일하지만 집계 서버에서 알 수 없다. 전환 및 노출이 상이한 디바이스에서 발생하는 경우, 각 디바이스의 클럭 스큐는 상이하다. 두 경우 모두, 노출/전환이 발생된 시간과 노출/전환이 발생된 클라이언트 디바이스의 클럭 스큐의 합의 암호화는 이러한 기능으로 인해 사용자 정보를 획득하거나 사기를 저지르기 위한 시간 간격 기반 공격을 시작하기가 더 어려워지기 때문에 향상된 보안의 기술적 효과를 제공한다.
일부 측면은 암호화된 노출 데이터 및 암호화된 전환 데이터의 각 시간순 시퀀스에 대해, 암호화된 노출 데이터 및 암호화된 전환 데이터의 시간순 시퀀스에 적어도 부분적으로 기초하여 암호화된 노출 데이터의 각 노출에 암호화된 전환 데이터의 전환에 대한 크레딧을 귀속시키는 단계를 포함할 수 있다.
일부 양태에서, 다자간 계산 프로세스를 수행하는 단계는 각각의 노출에 대해: 제1 집계 서버에 의해, 제1 결합 키를 암호화하는 단계와; 제1 집계 서버에 의해 제2 집계 서버로, 암호화된 제1 결합 키, 암호화된 노출 데이터 및 암호화된 노출 시간 데이터를 포함하는 튜플을 전송하는 단계와; 그리고 각각의 전환에 대해: 제2 집계 서버에 의해, 제2 결합 키를 암호화하는 단계와; 제2 집계 서버에 의해 제1 집계 서버로, 암호화된 제2 결합 키, 암호화된 전환 데이터 및 암호화된 전환 시간 데이터를 포함하는 튜플을 전송하는 단계를 포함한다.
일부 양태에서, 다자간 계산 프로세스를 수행하는 단계는 제1 집계 서버에 의해, 각각의 암호화된 각 전환 시간 데이터를 복호화하는 단계와; 제1 집계 서버에 의해, 제1 시간 스큐 값을 결정하는 단계와; 전환이 발생된 시간, 전환이 발생된 클라이언트 디바이스의 클럭 스큐 및 제1 시간 스큐 값의 합계를 암호화함으로써 제2 암호화된 전환 시간 데이터를 생성하는 단계와; 제1 집계 서버에 의해, 각각의 고유한 암호화된 전환 데이터에 대해, 고유한 제2 결합 키의 수를 결정하는 단계와; 제1 집계 서버에 의해 수신된 암호화된 전환 데이터 세트로부터, 고유한 제2 결합 키의 수가 임계값 미만인 각각의 암호화된 전환 데이터를 필터링하는 단계와; 그리고 암호화된 전환 데이터 세트내의 나머지 암호화된 전환 데이터 각각에 대해, 암호화된 전환 데이터에 대한 제2 결합 키, 암호화된 전환 데이터 및 제2 암호화된 전환 시간 데이터를 포함하는 데이터의 튜플을 제공하는 단계를 포함한다. 위에서 언급한 필터링 단계는 각 암호화된 전환 데이터는 임계값 수의 고유한 제1 결합 키가 필요하고 그렇지 않으면 데이터가 필터링되기 때문에 데이터 보안을 강화하는 기술적 효과를 제공한다. 이는 전환 데이터에 기초하여 특정 사용자를 추적하기 어렵게 만들어(필터링되지 않은 나머지 노출 데이터가 적어도 임계값 수의 결합 키와 관련되어 있기 때문에) 사용자 프라이버시의 보호를 향상시키는 역할을 하므로 전환 데이터와 관련된 익명성을 향상시킨다.
일부 양태에서, 다자간 계산 프로세스를 수행하는 단계는 제2 집계 서버에 의해, 각각의 암호화된 노출 시간 데이터를 복호화하는 단계와; 제2 집계 서버에 의해, 제2 시간 스큐 값을 결정하는 단계와; 노출이 발생된 시간, 노출이 발생된 클라이언트 디바이스의 클럭 스큐 및 제2 시간 스큐 값의 합계를 암호화함으로써 제2 암호화된 노출 시간 데이터를 생성하는 단계와; 제2 집계 서버에 의해, 각각의 고유한 암호화된 전환 데이터에 대해, 고유한 제1 결합 키의 수를 결정하는 단계와; 제2 집계 서버에 의해 수신된 암호화된 노출 데이터 세트로부터, 고유한 제1 결합 키의 수가 임계값 미만인 각각의 암호화된 노출 데이터를 필터링하는 단계와; 그리고 암호화된 노출 데이터 세트내의 나머지 암호화된 전환 데이터 각각에 대해, 암호화된 노출 데이터에 대한 제1 결합 키, 암호화된 전환 데이터 및 제2 암호화된 노출 시간 데이터를 포함하는 데이터의 튜플을 제공하는 단계를 포함한다. 위에서 언급한 필터링 단계는 각 암호화된 노출 데이터는 임계값 수의 고유한 제1 결합 키가 필요하고 그렇지 않으면 데이터가 필터링되기 때문에 데이터 보안을 강화하는 기술적 효과를 제공한다. 이는 노출 데이터에 기초하여 특정 사용자를 추적하기 어렵게 만들기 때문에(필터링되지 않은 나머지 노출 데이터가 적어도 임계값 수의 결합 키와 관련되어 있기 때문에) 사용자 프라이버시의 보호를 향상시키는 역할을 하므로 노출 데이터와 관련된 익명성을 향상시킨다.
본 명세서에 기술된 주제는 다음 이점 중 하나 이상을 실현하기 위해 특정 실시예에서 구현될 수 있다. 본 문서에 설명된 암호화 기술은 다양한 유형의 데이터 측정을 계산하는 동시에 사용자 프라이버시를 보호하고 데이터의 사기성 조작을 방지할 수 있도록 한다. 예를 들어, 이 기술을 사용하면 노출, 다양한 유형의 전환, 전환의 집계된 값을 측정 계산할 수 있으며 사용자 프라이버시를 보호하고 전환 보고 및 노출 보고시 사기를 방지할 수 있다. 예를 들어, 이 기술을 사용하면 클릭(click-through) 전환, 조회(view-through) 전환, 애플리케이션 다운로드 전환, 노출이 발생한 디바이스와 상이한 디바이스에서 전환이 발생하는 교차-디바이스 전환, 그리고 사용자 프라이버시를 보호하고 사기를 방지하면서 애플리케이션에서 노출이 발생하고 브라우저에서 전환이 발생한(또는 그 반대의 경우) 애플리케이션에서 웹으로의 전환을 계산할 수 있다. 이 기술은 또한 동일한 보호를 통해 마지막 클릭 기여, 데이터 기반 및 멀티-터치 기여와 같은 다양한 기여도 모델을 지원한다.
다중 당사자 계산(MPC)를 형성하기 위해 다중 집계 서버의 사용은 각 서버가 사기 행위의 징후를 다른 서버에서 확인할 수 있도록 하고 단일 서버가 언제든지 일반 텍스트로 된 사용자 데이터에 액세스할 수 없도록 한다. 본 문서에 설명된 k-익명성 기술, 차등 프라이버시 기술, 공개키 암호화 및 부가/교환 동형 암호화 기술과 결합된 MPC를 사용하면 서버 중 하나가 손상되거나 다른 엔티티와 공모하더라도 사용자 프라이버시를 보호하고 측정시 사기를 방지한다. 네트워크 데이터에 블라인드 서명하기 위해 블라인드 서명 기술을 사용하는 것은 블라인드 해제된(unblind) 데이터를 다른 엔터티들에 전달하지 않음으로써 사용자 프라이버시를 보호하면서 이러한 데이터에서 사기 여부를 확인할 수 있다. 네트워크 데이터를 포함하는 데이터 엘리먼트의 일부는 다수의 엔티티의 사기 또는 공모를 방지하기 위해 다수의 엔티티에 의해 블라인드 서명 및/또는 암호화될 수 있다. 본 명세서에 설명된 바와 같이, 블라인드 데이터(예를 들어, 노출 데이터 또는 전환 데이터)는 암호화 기술을 사용하여 블라인드된 데이터이다. 블라인드(된) 데이터는 엔티티가 그 블라인드 데이터에서 일반 텍스트 데이터를 확인할 수 없도록 위장된다. 엔터티는 해당 데이터의 합법성을 검증(확인)하기 위해 데이터에 블라인드 서명할 수 있지만(예를 들어, 노출이 유효하다고 결정하는 사기 검출 시스템이 블라인드 노출 데이터에 서명할 수 있음), 서명하는 엔터티는 실제로 일반 텍스트 데이터를 보지 않고 데이터에 서명할 수 있다. 따라서 사기 검출 서버 또는 임의의 다른 가로채는 당사자가 일반 노출 데이터를 볼 수 없기 때문에 사기 검출 서버하여 사용자 프라이버시가 손상되지 않은 동안 사기를 확인할 수 있다.
전술한 주제의 다양한 특징 및 이점이 도면과 관련하여 아래에서 설명된다. 추가 특징 및 이점은 본 명세서 및 청구범위에 기재된 주제로부터 명백하다.
도 1은 집계 서버가 집계된 네트워크 측정치를 결정하는 예시적인 환경의 블록도이다.
도 2는 집계된 네트워크 측정치를 결정하기 위한 예시적인 프로세스 흐름을 도시하는 블록도이다.
도 3은 집계된 데이터를 결정하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 4는 집계된 데이터를 결정하기 위한 다른 예시적인 프로세스를 도시하는 흐름도이다.
도 5는 데이터의 무결성을 검증하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 6은 사용자 프라이버시를 보호하면서 이벤트의 시간순 순서를 생성하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 7은 데이터 기반 기여를 사용하여 노출에 전환을 귀속시키기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 8은 집계 전환 값을 결정하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 9는 집계된 전환 데이터를 결정하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 10은 예시적인 컴퓨터 시스템의 블록도이다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
일반적으로 본 문서는 이벤트 수준 및 집계된(aggregated, 통합된) 네트워크 측정치를 결정할 때 사기를 방지하기 위한 암호화 기술에 대해 설명한다. 예를 들어, 본 문서에 설명된 기술은 다양한 유형의 전환에 대한 디지털 컴포넌트의 이벤트 수준 및 통합 노출 및 전환 측정치를 결정할 때 사기를 방지할 수 있다. 이 문서에 설명된 암호화 기술은 또한 예를 들어 모든 엔터티가 사용자의 클라이언트 디바이스들로부터 수신된 사용자 데이터를 추적하거나 집계하는 것을 방지함으로써 사용자 프라이버시를 보호할 수도 있다.
시스템의 개요
도 1은 집계 서버(180)가 집계 네트워크 측정치를 결정하는 예시적인 환경(100)의 블록도이다. 예시적인 환경(100)은 LAN(Local Area Network), WAN(Wide Area Network), 인터넷, 모바일 네트워크, 또는 이들의 조합과 같은 데이터 통신 네트워크(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)은 리소스(145)(또는 애플리케이션 컨텐츠)에 대한 관련성, 디지털 컴포넌트의 성능(예를 들어, 사용자들이 디지털 컴포넌트와 상호 작용하는 속도) 등에 기초하여 디지털 컴포넌트 제공자(160) 및/또는 디지털 컴포넌트 파트너(157)로부터 수신된 디지털 컴포넌트로부터 디지털 컴포넌트를 선택할 수 있다. 그런 다음, 디지털 컴포넌트 배포 시스템(150)은 리소스(145) 또는 다른 애플리케이션 컨텐츠와 함께 제시하기 위해 상기 선택된 디지털 컴포넌트(들)를 클라이언트 디바이스(110)에 제공할 수 있다.
애플리케이션(112)이 디지털 컴포넌트를 제시할 때, 애플리케이션(112)(브라우저일 수 있음)은 디지털 컴포넌트의 프리젠테이션을 위한 노출 데이터(114)를 저장할 수 있다. 디지털 컴포넌트의 특정 프리젠테이션을 위한 노출 데이터(114)는 디지털 컴포넌트에 대한 방문 페이지(예를 들어, 디지털 컴포넌트에 의해 링크된 페이지 및 사용자가 디지털 컴포넌트를 클릭하거나 디지털 컴포넌트와 상호 작용할 때 애플리케이션/브라우저가 사용자에게 페이지를 제시함)의 URL 또는 도메인, 디지털 컴포넌트에 대한 하나 이상의 식별자, 노출과 관련된 이벤트-레벨 데이터, 노출 데이터가 클라이언트 디바이스(110)에서 삭제될 때를 지정하는 만료 시간, 및/또는 디지털 컴포넌트에 대한 전환 보고가 전송될 보고 URL 또는 도메인을 포함할 수 있다. 이 데이터는 예를 들어 디지털 컴포넌트의 메타데이터 또는 디지털 컴포넌트의 앵커 태그로서 디지털 컴포넌트에 의해 제공될 수 있다. 아래에서 더 자세히 설명되는 바와 같이, 디지털 컴포넌트의 각각의 노출에 대한 원시 노출 데이터를 저장하거나 저장하는 것 외에, 애플리케이션(112)은 사기 검출 시스템(170)에 의해 블라인드 서명된 노출 데이터를 저장할 수 있다.
애플리케이션(112)은 또한 검출되는 전환에 응답하여 전환 데이터(116)를 저장할 수 있다. 디지털 컴포넌트에 대한 전환은 디지털 컴포넌트가 사용자에게 제시 및/또는 상호 작용한 후 지정 사용자 액션의 완료이다. 전환을 위한 전환 데이터(116)는 다양한 전환 측정 요구에 대한 여러 유형의 전환이 있기 때문에 전환의 유형을 나타내는 데이터를 포함할 수 있다. 전환 유형은 전환이 완료된 후 후속 액션을 지정할 수 있다. 예를 들어, 전환은 온라인 쇼핑 카트에 아이템을 추가하는 것일 수 있다. 이 예에서 제1 유형의 전환은 체크아웃하지 않고 아이템을 추가하는 것이고(예를 들어, 구매를 완료하지 않은 경우) 제2 유형의 전환은 체크아웃한 상태에서 아이템을 추가하는 것일 수 있다. 아래에서 자세히 설명하는 바와같이, 전환을 위한 전환 데이터는 전환의 유형을 나타내는 하나 이상의 비트 세트일 수 있고, 애플리케이션은 디지털 컴포넌트 배포 시스템(150)(또는 전환이 실제로 발생하는 전환 시스템)에 의해 블라인드 서명된 전환 데이터를 저장할 수 있다.
하나 이상의 서버로서 구현될 수 있는 사기 검출 시스템(170)은 클라이언트 디바이스(110) 및/또는 애플리케이션(112)으로부터 수신된 사기 신호를 평가하여 노출이 유효한지 또는 사기성인지 여부를 결정할 수 있다. 아래에서 설명되는 바와 같이, 사기 검출 시스템(170)은 또한 전환 시스템(172)으로부터 수신된 사기 신호에 기초하여, 전환이 유효한지 또는 사기성인지 여부를 결정할 수 있다. 사기 신호는 애플리케이션에 따라 다를 수 있으며 구현에 따라 다를 수 있다.
노출 시간에, 애플리케이션(112)(또는 클라이언트 디바이스(110) 상의 운영 체제)은 사기 검출 신호를 수집하고 사기 검출 신호를 사기 검출 시스템(170)에 제공할 수 있다. 사기 검출 신호에 더하여, 애플리케이션(112)은 노출에 대한 블라인드 노출 데이터를 사기 검출 시스템(170)으로 전송할 수 있다. 블라인드 노출 데이터는 암호화 기술을 사용하여 블라인드(예를 들어, 위장)된 노출 데이터이다. 사기 검출 시스템(170)이 노출이 유효하다고 결정하면, 사기 검출 시스템(170)은 블라인드 노출 데이터에 서명하고 서명된 블라인드 노출 데이터를 애플리케이션(112)에 제공할 수 있다. 블라인드 노출 데이터를 생성하고 블라인드 노출 데이터에 서명하는 기술의 예는 아래에 설명되어 있다.
사기 검출 시스템(170)은 디지털 컴포넌트 배포 시스템(150)에 의해 작동될 수 있다. 일부 구현에서, 사기 검출 시스템(170)은 하나 이상의 제3자에 의해 운영된다. 예를 들어, 애플리케이션 제공자, 예를 들어 웹 브라우저 또는 네이티브 애플리케이션을 개발 및 제공하는 엔티티 및/또는 디지털 컴포넌트 배포 시스템(150)을 운영하는 디지털 컴포넌트 배포자는 하나 이상의 제3자가 사기 검출 시스템(170)을 운영하여 사기를 탐지하고 다수의 상이한 개발자의 애플리케이션(예를 들어, 웹 브라우저 및/또는 네이티브 애플리케이션)으로부터 수신된 블라인드 데이터에 블라인드 서명하도록 인증할 수 있다.
하나 이상의 서버로 구현될 수 있는 전환 시스템(172)은 전환이 발생했는지 여부를 결정할 수 있다. 예를 들어, 각각의 디지털 컴포넌트 제공자(160)는 전환이 자신의 디지털 컴포넌트에 대해 발생하는지 여부를 결정하는 전환 시스템(172)을 운영할 수 있다. 특정 예에서, 전환은 웹사이트에서 제품을 획득하는 것일 수 있다. 이 예에서, 전환 시스템(172) 및 웹사이트는 제품의 유통업자에 의해 유지될 수 있다. 전환 시스템(172)은 웹사이트를 호스팅하는 웹 서버로부터, 제품이 획득되었음을 명시하는 데이터를 수신하고, 그 데이터에 기초하여 전환이 발생되었음을 결정할 수 있다.
다른 예에서, 전환은 애플리케이션의 다운로드일 수 있다. 이 예에서, 애플리케이션이 클라이언트 디바이스(110)에 다운로드될 때, 애플리케이션 스토어는 애플리케이션이 클라이언트 디바이스(110)에 다운로드되었음을 지정하는 데이터를 애플리케이션 개발자의 전환 시스템(172)으로 제공할 수 있다. 일부 구현에서, 애플리케이션 스토어는 또한 전환 시스템(172)을 운영한다.
전환 시스템(172)은 또한 사기 검출 시스템(170)과 상호 작용하여 전환이 유효한지 사기성인지 여부를 결정할 수 있다. 예를 들어, 전환 시스템(172)은 사기 검출 시스템(170)에 블라인드 전환 데이터 및 사기 검출 신호를 제공할 수 있다. 블라인드 전환 데이터는 암호화 기술을 사용하여 블라인드(예를 들어, 위장)된 전환 데이터이다. 사기 검출 시스템(170)이 전환이 유효하고 및/또는 사용자 상호 작용이 진짜라고 결정하면, 사기 검출 시스템(172)은 블라인드 전환 데이터에 서명하고 서명된 블라인드 전환 데이터를 애플리케이션(112)에 제공할 수 있다. 블라인드 전환 데이터를 생성하고 블라인드 전환 데이터에 서명하기 위한 예시적인 기술은 아래에 설명되어 있다.
집계 서버들(180)은 클라이언트 디바이스(110)로부터 수신된 데이터에 기초하여 집계된(통합) 네트워크 측정치를 생성할 수 있다. 집계 서버들(180)은 클라이언트 디바이스들(110)로부터 수신된 데이터에 기초하여 다양한 유형의 전환에 대한 노출 및/또는 전환 카운트를 생성할 수 있다. 예를 들어, 집계 서버들(180)은 사용자 프라이버시를 보호하고 사기를 방지하면서 디지털 컴포넌트에 대해, 클릭(click-through) 전환, 조회(view-through) 전환, 애플리케이션 다운로드 전환, 교차-디바이스 전환, 애플리케이션에서 웹으로의 전환, 웹에서 애플리케이션으로의 전환 등의 카운트를 결정할 수 있다. 아래에서 설명되는 바와 같이, 집계 서버(180)는 MPC 프로토콜을 구현하고 교환적 암호화 기술을 사용하여, 사용자 프라이버시를 보호하고 네트워크 측정치를 결정하고 보고할 때 사기를 방지한다.
클릭 전환은 사용자가 디지털 컴포넌트와 상호 작용하고 이어서 사용자가 특정 액션을 완료하는 전환이다. 조회 전환은 디지털 컴포넌트가 사용자에게 제시되고 이어서 사용자가 특정 액션을 완료하는 전환이다. 애플리케이션 다운로드 전환은 디지털 컴포넌트가 사용자에게 제시되고 이어서 사용자가 제시된 디지털 컴포넌트에 의해 참조되는, 예를 들어 제시된 디지털 컴포넌트에 의해 프로모션되는 애플리케이션을 다운로드하는 전환이다. 이 예에서 애플리케이션 다운로드는 특정 작업이다. 교차-디바이스 전환은 디지털 컴포넌트가 제시된 디바이스와 상이한 디바이스에서 특정 액션이 발생하는 전환이다. 애플리케이션에서 웹으로의 전환은 노출이 발생한, 예를 들어 디지털 컴포넌트가 애플리케이션에서 제시되고 특정 이벤트가 브라우저에서 발생한 전환이다.
집계 서버(180)는 보고 시스템(190)에 노출 데이터(예를 들어, 노출 카운트), 전환 데이터(예를 들어, 전환 카운트)를 보고할 수 있다. 보고 시스템(190)은 노출 데이터, 전환 데이터, 및/또는 관련 네트워크 측정치를 전달하는 인입 (incoming) 요청을 수신하는 보고 URL을 구현하는 보고 도메인으로 구현될 수 있다. 보고 시스템(190)은 디지털 컴포넌트 배포 시스템(150) 또는 디지털 컴포넌트 배포자에 데이터를 보고하는 디지털 컴포넌트 배포자 또는 다른 엔티티에 의해 유지될 수 있다.
환경(100)은 또한 시간 서버(192)를 포함할 수 있다. 시간 서버(192)는 아래에서 설명되는 기술들 중 일부에서 사용될 수 있다. 후술하는 바와 같이, 시간 서버(192)는 시간 서버(192)의 공개키를 사용하여 암호화된 일부 데이터를 복호화하는데 사용될 수 있다. 시간 서버(192)는 공개키에 대응하는 개인키를 기밀로 유지하고 개인키를 사용하여 데이터를 복호화할 수 있다.
네트워크 측정치를 결정하기 위한 예시적인 프로세스 흐름
도 2는 집계된 네트워크 측정치를 결정하기 위한 예시적인 프로세스 흐름(200)의 블록도이다. 프로세스 흐름(200)은 하나 이상의 클라이언트 디바이스(110), 사기 검출 시스템(170), 전환 탐지 시스템(172), 집계 서버(180-A, 180-B), 보고 시스템(190)을 포함하여 도 1의 컴포넌트등 중 일부에 의해 수행되는 것으로 도시되어 있다.
웹 브라우저 또는 네이티브 애플리케이션일 수 있는 애플리케이션(112)의 각 인스턴스는 전환 측정 목적으로 사용되는 고유 식별자를 가질 수 있다. 다시 말해, 하나의 클라이언트 디바이스에 있는 특정 웹 브라우저의 인스턴스는 다른 클라이언트 디바이스에서 실행되는 특정 웹 브라우저의 다른 인스턴스와 다르고 다른 고유 식별자를 갖는다. 애플리케이션(112)에 대한 고유 식별자는 난수 또는 의사 난수적으로 생성될 수 있고 애플리케이션(112)은 고유 식별자를 애플리케이션(112) 외부로 절대 누출하지 않도록 구성될 수 있다. 아래에 설명된 것처럼, 고유 식별자의 특성과 용도는 측정되는 전환 유형에 기초하여 변경될 수 있다. 교차-디바이스 측정을 지원하는 일부 구현에서, 동일한 사용자가 소유한 모든 클라이언트 디바이스(110) 상의 모든 애플리케이션(들)(112)은 전환 측정 목적으로 사용되는 동일한 고유 식별자를 가질 수 있다.
디지털 컴포넌트가 클라이언트 디바이스(110)에서 애플리케이션(112)에 의해 제시될 때, 애플리케이션(112)은 노출 데이터(mi), 목적지(dc_destination), 전환 측정 만료 날짜, 및 디지털 컴포넌트에 대한 전환 보고를 수신할 보고 도메인(report_domain)을 기록할 수 있다. 노출 데이터는 불투명한 바이트 어레이의 형식일 수 있고, 예를 들어 애플리케이션(112)에서 디지털 컴포넌트의 노출과 관련된 이벤트 레벨 데이터 및/또는 디지털 컴포넌트에 대한 하나 이상의 식별자를 포함할 수 있다.
목적지는 URI(Uniform Resource Identifier), URL 또는 디지털 컴포넌트에 대한 방문 페이지(예를 들어, 디지털 컴포넌트에 의해 링크된 페이지 및 사용자가 디지털 컴포넌트를 클릭하거나 디지털 컴포넌트와 상호 작용할 때 애플리케이션/브라우저가 사용자에게 페이지를 제시함)의 도메인을 포함할 수 있다. URI의 예에는 애플리케이션을 다운로드하기 위한 애플리케이션 스토어에 대한 링크와 인앱(in-app) 구매를 위한 애플리케이션 내의 위치에 대한 딥 링크가 포함된다. 따라서, 목적지는 대상 도메인이라고도 지칭될 수 있다. 전환 측정 만료 날짜는 노출 데이터가 클라이언트 디바이스(110)에서 삭제되는 시간(또는 시간 기간)일 수 있다. 보고 도메인은 예를 들어 디지털 컴포넌트 제공자(160)가 전환 보고가 전송되기를 원하는 보고 시스템(190)에 대해 디지털 컴포넌트의 전환 보고가 전송될 보고 URL 또는 도메인일 수 있다.
일부 구현에서, 애플리케이션(112)은 또한 애플리케이션(112)이 디지털 컴포넌트를 제시할 때 사용자가 디지털 컴포넌트와 상호 작용(예를 들어, 선택 또는 클릭)했는지 여부를 지정하는 클릭 데이터(클릭)를 기록할 수 있다. 클릭 데이터는 부울 변수일 수 있는데, 예를 들어, 상호 작용하는 경우 값은 1이고 상호 작용하지 않는 경우 값은 0이다. 일부 다른 구현에서, 애플리케이션(들)(112)은 또한 사용자가 디지털 컴포넌트와 상호 작용한 방법, 예를 들어 사용자가 설문 조사를 작성하거나 디지털 컴포넌트를 음소거한 방식을 나타내는 다른 유형의 메타데이터를 기록할 수 있다. 예를 들어, 사용자는 사용자가 미래에 동일한(또는 유사한) 디지털 컴포넌트를 보고 싶지 않다는 것을 나타내기 위해 디지털 컴포넌트를 음소거할 수 있다.
전술한 바와 같이, 애플리케이션(112)은 또한 사기 검출 시스템(170)과 상호 작용하여 디지털 컴포넌트의 노출이 유효한지 사기성인지 여부를 결정할 수 있다. 애플리케이션(112)은 또한 노출이 유효한 경우 사기 검출 시스템(170)이 노출과 관련된 정보에 블라인드 서명하도록 요청할 수 있다.
일부 구현에서, 디지털 컴포넌트는 사기 검출 신호(202)를 수집하고 평가를 위해 사기 검출 신호(202)를 사기 검출 시스템(170)에 전송하는 컴퓨터 판독 가능 코드, 예를 들어 스크립트를 호출할 수 있다. 애플리케이션(112)은 노출이 유효한 경우 노출과 관련된 정보에 블라인드 서명하도록 사기 검출 시스템(170)에 대한 요청과 함께 사기 검출 시스템(170)에 대한 이 호출을 피기백(piggyback), 예를 들어 이 호풀에 데이터를 추가할 수 있다.
일부 구현에서, 애플리케이션(112)은 블라인드 노출 데이터(201)를 사기 검출 시스템(170)으로 전송할 수 있다. 블라인드 노출 데이터(201)는 사기 검출 시스템(170)에 의해 블라인드 서명될 두 개의 블라인드 노출 데이터 엘리먼트를 포함할 수 있다. 이러한 데이터 엘리먼트를 바인딩 및/또는 암호화하는 것은 사기 검출 시스템(170)이 암호화되지 않은 사용자 데이터를 수신하고 사용자를 추적하는 것을 방지함으로써 사용자 프라이버시를 보호한다.
제1 암호화된 데이터 엘리먼트는 애플리케이션에 대한 고유 식별자(ID), 목적지(dc_destination) 및 보고 도메인(report_domain)의 조합(예를 들어, 연결(연접) 또는 일부 다른 조합)의 암호화된 암호화 해시 버전이다. 이 제1 암호화된 데이터 엘리먼트는 CryptoHash(ID, dc_destination, report_domain)로 정의할 수 있다. 이 예에서 암호화 해시는 튜플(ID, dc_destination, report_domain)을 해시 값에 매핑하는 단방향 암호화 해시 함수일 수 있다.
일 예에서, 암호화 해시 함수는 해시 기반 메시지 인증 코드(HMAC), 예를 들어 HMACSHA256 메시지 코드이다. 예를 들어, 제1 암호화된 데이터 엘리먼트는 ID를 키로 사용하고 HMAC를 중첩하는 HMACSHA256(HMACSHA256(ID, dc_destination), report_domain)일 수 있다. 다른 예에서 제1 암호화된 데이터 엘리먼트는 SHA256(ID || dc_destination || report_domain)일 수 있다. 본 문서의 목적을 위해, 기호(||)는 간단한 메시지로부터 복잡한 메시지를 구성하는 방법을 나타내는데, 여기서 구성은 가역적, 즉, 복잡한 메시지로부터 간단한 메시지를 다시 추출할 수 있다. 한 가지 예시적인 방법은 직렬화/역직렬화가 있는 프로토콜 버퍼이다. 다른 예로는 JavaTM 직렬화, JSON(JavaScript Object Notation) 등이 있다.
제2 암호화된 데이터 엘리먼트는 노출 데이터(mi)와 디지털 컴포넌트가 클릭(클릭)되었는지 또는 상호 작용했는지 여부를 지정하는 데이터 조합의 암호화된 버전이다. 예를 들어, 애플리케이션(112)은 (mi || click)의 복합 메시지를 생성하고 보고 시스템(190)으로부터 페치된, 예를 들어, 그로부터 획득된 공개키를 사용하여 이 복합 메시지를 암호화할 수 있다. 이 복합 메시지는 노출 데이터를 나타내고 디지털 컴포넌트가 클릭되었는지 또는 상호 작용했는지 여부를 나타낸다. 애플리케이션(112)은 보고 시스템(190)의 공개키를 사용하여 복합 메시지를 암호화할 수 있으므로 보고 시스템(190)만이 예를 들어 공개키에 수학적으로 링크된 개인키를 사용하여 노출 데이터 및 클릭 데이터를 복호화할 수 있다. 보고 시스템(190)은 다른 엔티티가 이 정보에 액세스할 수 없도록 개인키를 기밀로 유지할 수 있다. 이 제2 암호화된 데이터 엘리먼트는 PubKeyEncrypt(mi || clicked, report_domain)으로 정의될 수 있다. 이 표현에서, 쉼표 뒤에 "report_domain"을 포함하면 복합 메시지를 암호화하는데 사용되는 공개키가 보고 시스템(190)의 공개키임을 나타낸다.
사기 검출 시스템(170)은 블라인드 노출 데이터(201) 및 사기 검출 신호(202)를 수신하고 사기 검출 신호를 평가하여 디지털 컴포넌트의 노출이 유효한지 사기인지 여부를 결정할 수 있다. 사기 검출 시스템(170)이 노출이 유효하다고 결정하는 경우, 사기 검출 시스템(170)은 블라인드 서명 기술을 사용하여 블라인드 노출 데이터(201)에 블라인드 서명할 수 있다. 예를 들어, 사기 검출 시스템(170)은 블라인드 노출 데이터(201)의 제1 데이터 엘리먼트에 대한 제1 블라인드 서명 및 제2 암호화 데이터 엘리먼트에 대한 제2 블라인드 서명을 생성할 수 있다. 일부 구현에서, 블라인드 서명 기술은 CloudflareTM에 의해 지원되는 Privacy Pass 프로토콜이거나 그롬(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 암호화된 데이터 엘리먼트의 블라인드 서명을 사용하여 키를 생성할 수 있다. 이 키는 블라인드 서명된 결합 키(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 암호화된 데이터 엘리먼트의 블라인드 서명을 포함하는 복합 메시지를 암호화함으로써 2회(이중) 암호화된 노출 데이터(ImpressionData2)를 생성할 수 있다. ImpressionData1은 1회 암호화된 데이터(제2 암호화된 데이터 엘리먼트)를 나타내도록 한다. 이 2회 암호화된 노출 데이터는 ImpressionData2 = (PubKeyEncrypt(ImpressionData1 || blind_signature, Si)로 정의될 수 있으며, 여기서 blind_signature는 제2 암호화된 데이터 엘리먼트의 블라인드 서명을 나타내고, Si는 노출 데이터를 수집하는 집계 서버(180-A)의 공개키를 나타낸다. 즉, 애플리케이션(112)은 1회 암호화된 데이터(ImpressionData1)와 1회 암호화된 노출 데이터(ImpressionData1)의 블라인드 서명으로부터 복합 메시지를 생성함으로써 2회 암호화된 노출 데이터 (ImpressionData2)를 생성하고 이 복합 메시지를 집계 서버(180-A)의 공개키를 사용하여 암호화할 수 있다.
그런 다음, 애플리케이션(112)은 2회 암호화된 노출 데이터 (ImpressionData2) 및 전환 데이터를 수집하는 집계 서버(180-B)의 공개키를 사용하여 3회(3중) 암호화된 노출 데이터(ImpressionData3)를 생성할 수 있다. 일부 구현에서, 3회 암호화된 노출 데이터(ImpressionData3)는 확률적 공개키 암호화를 사용하여 생성된다. 이 예에서 3회 암호화된 노출 데이터는 ImpressionData3p = (PubKeyEncryptProbabilistic(ImpressionData2, Sc)와 같이 정의될 수 있다.
이 시점에서, 노출 데이터는 보고 시스템(190), 집계 서버(180-A), 집계 서버(180-B)로부터 순차적으로 공개키를 이용하여 3회 암호화된다. 이러한 방식으로, 애플리케이션(112)은 가장 안쪽의 1회 암호화된 노출 데이터(PubKeyEncrypt(mi || clicked, report_domain)가 애플리케이션(112)에서 보고 시스템(190)으로 전송되는 동안 노출 데이터(mi)를 보호하기 때문에 3회 암호화된 노출 데이터(ImpressionData3p)를 충분한 프라이버시 보호를 통해 집계 서버(180-A)로 안전하게 전송할 수 있다. 집계 서버(180-B)의 공개키를 이용한 가장 바깥쪽의(최외곽) 확률적 공개키 암호화는 보고 시스템(190), 집계 서버(180-A) 및 디지털 컴포넌트 배포 시스템(150) 간의 공모(collusion)을 방지하며, 여기서 공모 당사자들은 블라인드 서명된 안정적인 노출 결합 키(BlindlySignedKey(ID, dc_destination, report_domain))와 1회 암호화된 재구성 가능한 노출 데이터(PubKeyEncrypt(mi || clicked, report_domain)를 사용하여 게시자 도메인에서 사용자들을 추적할 수 있다. 후술하는 바와 같이, 두 개의 집계 서버(180-A 및 180-B)가 (PubKeyEncrypt(mi || clicked, report_domain)가 모든 적용 가능한 임계값을 충족한다고 확신하는 경우에만, 집계 서버(180-A 및 180-B)는 3회 암호화된 노출 데이터를 공동으로 복호화g하여 각 집계 서버(180-A 및 180-B)에 의해 보고 시스템(190)으로 독립적으로 전송될 (PubKeyEncrypt(mi || clicked, report_domain)을 발견한다.
일부 구현에서, 사기 검출 시스템(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) 부하와 같은 부하를 감소시킬 수 있다. 이것은 또한 예를 들어 모바일 디바이스가 Wi-Fi에 연결되고 충전될 때 일괄 업로드가 발생하는 경우 클라이언트 디바이스(110)에 의한 대역폭 및 배터리 소모를 줄일 수 있다. 이것은 또한 클라이언트 디바이스(110)와 집계 서버(180-A) 간의 통신이 HTTPS(Hypertext Transfer Protocol Secure)를 통해 이루어지는 경우 암호화 키를 관리하기 위해 배치(batch) 프로토콜 인스턴스당 키를 선택하도록, 예를 들어 전체 배치에 동일한 암호화 키를 사용할 수 있도록 한다.
전환 시스템(172)이 클라이언트 디바이스(110)에 대해 실제 전환이 발생했다고 결정할 때, 전환 시스템(172)은 사기 검출 시스템(170)과 상호 작용하여 전환이 유효한지 또는 사기성인지 여부를 결정할 수 있다. 예를 들어, 전환 시스템(172)은 클라이언트 디바이스(110)로부터 사기 검출 신호(211)를 획득하여 사기 검출 시스템(170)으로 사기 검출 신호(211)를 전송할 수 있다. 사기 검출 시스템(170)은 사기 검출 신호(211)를 평가하여 전환이 유효한지 사기성인지 여부, 클라이언트 디바이스(110)가 신뢰할 수 있는지(루팅된(rooted), 데이터 센터의 에뮬레이터 또는 손상되었는지에 대해) 여부, 및/또는 사용자의 상호 작용이 진짜인지 여부를 결정할 수 있다.
사기 검출 신호로, 전환 시스템(172)은 또한 전환이 유효한 경우 사기 검출 시스템(170)에 의해 블라인드 서명될 제3 암호화된 데이터 엘리먼트를 전솔할 수 있다. 이 제3 암호화된 데이터 엘리먼트는 애플리케이션(112)에 대한 고유 식별자(ID)와 전환이 발생된 전환 도메인(conversion_domain)의 조합의 암호화된 버전을 포함할 수 있다. 전환 도메인은 전환이 발생된 웹사이트일 수 있다. 이 데이터는 노출 데이터의 제1 암호화된 데이터 엘리먼트가 암호화되는 방식과 유사하게 전환을 위한 보고 시스템(190)의 공개키를 사용하여 암호화될 수 있다. 예를 들어, 제3 암호화된 데이터 엘리먼트는 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)로 정의될 수 있다. 서명된 전환 데이터를 생성하는 것은 개인키 및 공개키 기반 디지털 서명 알고리즘을 사용하여 전환 메타데이터에 디지털 서명을 첨부하는 것을 포함할 수 있다. 전환 시스템(172)은 블라인드 서명된 전환 키 및 서명된 전환 데이터(213)를 애플리케이션(112)에 제공할 수 있다.
애플리케이션(112)은 서명된 전환 데이터(PrivateKeySign(mc, conversion_domain))를 사용하여 다중 암호화된 전환 데이터를 생성할 수 있다. 애플리케이션(112)은 전환을 위한 보고 시스템(190)의 공개키를 사용하여 상기 서명된 전환 데이터(PrivateKeySign(mc, conversion_domain))를 암호화함으로써 1회 암호화된 전환 데이터를 생성할 수 있다. 이 1회 암호화된 전환 데이터(ConversionData1)는 PubKeyEncrypt(PrivateKeySign(mc, conversion_domain), report_domain)로 정의될 수 있다. 일부 구현에서, 전환 시스템(172)은 애플리케이션(112)이 아닌 다중 암호화된 전환 데이터 또는 적어도 1회 암호화된 전환 데이터를 생성할 수 있다.
디지털 서명과 함께 암호화 사용은 전환 시스템(172)에서 보고 시스템(190)으로 다수의 중개자, 예를 들어 집계 서버(180-A, 180-B)를 통해 전송하는 동안 전환 데이터(mc)가 위조 및 도청되지 않도록 보호한다. 집계를 용이하게 하고 나중 단계에서 k-익명성을 적용하기 위해, ConversionData1의 암호화 및 디지털 서명이 시간/일괄 처리 시간의 범위(window) 내에서 결정적이어야 하므로 동일한 평문이 동일한 암호문에 매핑된다.
일부 경우, 전환 메타데이터(mc)에 엔트로피가 많지 않을 수 있다. 따라서, 1회 암호화된 전환 데이터(ConversionData1)는 카디널리티(cardinality)가 제한되어 쉽게 추측될 수 있다. 이러한 경우 전환 메타데이터(mc)와 전환 도메인(conversion_domain) 및 보고 도메인(report_domain)의 암호화 해시로부터 복합 메시지를 구성하고 그 복합 메시지를 암호화함으로써 의사 엔트로피(예를 들어, 암호 키 기반 랜덤성)가 전환 메타데이터(mc)에 추가될 수 있다. 이 예에서, 1회 암호화된 전환 데이터(ConversionData1)는 PubKeyEncrypt(PrivateKeySign(mc || HMACSHA256(conversion_domain, report_domain), conversion_domain), report_domain)로 정의될 수 있으며, 이는 HMACSHA256이 변환 도메인과 보고 도메인의 암호화 해시이며 의사 엔트로피를 추가한다. 이 예에서, 전환 도메인의 개인키는 복합 메시지에 서명하는데 사용되고 보고 도메인의 공개키는 서명된 복합 메시지를 암호화하는데 사용된다.
애플리케이션(112)은 전환 데이터를 수집하는 집계 서버(180-B)의 공개키를 사용하여 1회 암호화된 전환 데이터(ConversionData1)를 암호화함으로써 2회 암호화된 전환 데이터(ConversionData2)를 생성할 수 있다. 2회 암호화된 전환 데이터(ConversionData2)는 PubKeyEncrypt(ConversionData1, Sc)로 정의될 수 있으며, 여기서 Sc는 집계 서버(180-B)의 공개키를 나타낸다. 그런 다음, 애플리케이션(112)은 노출 데이터를 수집하는 집계 서버(180-A)의 공개키를 사용하여 2회 암호화된 전환 데이터(ConversionData2)를 암호화함으로써 3회 암호화된 전환 데이터(ConversionData3)를 생성할 수 있다. 일부 구현에서, 3회 암호화된 전환 데이터(ConversionData3)는 확률적 공개키 암호화를 사용하여 생성된다. 이 예에서, 3회 암호화된 전환 데이터는 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)가 안정적인 블라인드 서명된 전환 키 및 2회 암호화된 전환 데이터(ConversionData2)를 사용하여 전환을 보고하는 다중 도메인에 걸쳐 사용자를 추적하는 것을 방지할 수 있다.
노출 및 전환 데이터를 복호화하기 위한 에시적인 MPC 프로세스
집계 서버(180-A 및 180-B)는 임계값 및/또는 다른 프라이버시 보호 기준을 충족하는 수신된 데이터의 서브세트를 집계한 다음 복호화하고 보고 시스템(190)에 보고를 전송하기 위해 다단계 MPC 프로세스를 사용할 수 있다. 이 프로세스는 집계된 전환 데이터를 결정하기 위한 예시적인 프로세스(300)를 도시하는 흐름도인 도 3에 예시되어 있다. 프로세스(300)는 예를 들어 다수의 집계 서버, 예를 들어 도 1 및 2의 집계 서버(180-A 및 180-B)에 의해 구현될 수 있다.
집계 서버(A, B)는 교환적(commutative) 속성을 갖는 교환적 암호화 기술 "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))를 포함할 수 있고 값으로서 3회 암호화된 노출 데이터(ImpressionData3p)를 포함할 수 있다.
집계 서버(180-B)는 전환 데이터를 수신한다(304). 예를 들어, 집계 서버(180-B)는 다수의 클라이언트 디바이스로부터 전환 데이터의 배치를 수신할 수 있다. 전술한 바와 같이, 각각의 클라이언트 디바이스는 전환 데이터의 배치를 집계 서버(180-B)로 주기적으로 전송할 수 있다.
전환 데이터는 각 전환에 대한 키 값 쌍의 형태로 전송될 수 있다. 각 키 값 쌍은 키로서 전환을 위한 블라인드 서명된 전환 키(BlindlySignedKey(ID, conversion_domain, report_domain))를 포함할 수 있으며 값으로서 3회 암호화된 전환 데이터(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)는 2회 암호화된 전환 데이터(ConversionData2)를 복구하기 위해 자신의 개인키(공개키(Si)에 대응하는 개인키)를 사용하여 3회 암호화된 전환 데이터 (ConversionData3p)를 복호화할 수 있다. 집계 서버(180-A)는 그런 다음 선택된 암호화 키(Keyi2)를 사용하여 2회 암호화된 전환 데이터(ConversionData2)를 재암호화할 수 있다. 이 암호화를 위해, 결정론적 대칭 암호화 기술이 사용될 수 있다. 이 암호화된 전환 데이터는 전환 데이터가 보고 시스템(190), 집계 서버(180-B), 집계 서버(180-A)의 3개 도메인의 키를 사용하여 순차적으로 3번 결정론적으로 암호화되었으므로 ConversionData3'라고 지칭될 수 있다.
집계 서버(180-A)는 또한 선택된 암호화 키(Keyi2)를 사용하여 이미 교환적으로 암호화된 블라인드 서명된 노출 키(H(BlindlySignedKey, Keyc) 위(top)에 교환적 암호화를 적용할 수 있다. 이 단계의 결과는 Ħ(BlindlySignedKey) 및 ConversionData3'이다. 집계 서버(180-A)는 암호화된 결합 키와 암호화된 3회 암호화된 전환 데이터의 수신된 각 쌍에 대해, 두 개의 결과를 집계 서버(180-B)로 전송한다.
각각의 수신된 암호화된 결합 키와 3회 암호화된 노출 데이터 쌍({H(BlindlySignedKey, Keyi1), ImpressionData3p})에 대해, 집계 서버(180-B)는 결합 키와 노출 데이터를 재암호화한다(312). 일부 구현에서, 집계 서버(180-B)는 2회 암호화된 노출 데이터(ImpressionData2)를 복구하기 위해 자신의 개인키(공개키 Sc에 대응하는 개인키)를 사용하여 3회 암호화된 노출 데이터(ImpressionData3p)를 복호화할 수 있다. 집계 서버(180-B)는 그런 다음 선택된 암호화 키(Keyc2)를 사용하여 2회 암호화된 노출 데이터(ImpressionData2)를 재암호화할 수 있다. 이 암호화를 위해, 결정론적 대칭 암호화 기술이 사용될 수 있다. 이 암호화된 전환 데이터는 노출 데이터가 보고 시스템(190), 집계 서버(180-A), 집계 서버(180-B)의 3개 도메인의 키를 사용하여 순차적으로 결정론적으로 3번 암호화되었으므로 ImpressionData3'라고 지칭될 수 있다.
집계 서버(180-B)는 또한 선택된 암호화 키(Keyc2)를 사용하여 이미 교환 가능하게 암호화된 블라인드 서명된 노출 키(H(BlindlySignedKey, Keyi1)) 위에 교환적 암호화를 적용할 수 있다. 이 단계의 결과는 Ħ(BlindlySignedKey) 및 ImpressionData3'이다. 집계 서버(180-B)는 수신된 암호화된 결합 키 및 3회 암호화된 노출 데이터의 각 쌍에 대해 두 개의 결과를 집계 서버(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]에 되시되어 있다. 다른 예에서, 노출 데이터와 전환 데이터를 결합하는 것은 결합된 노출 데이터와 전환 데이터 각각에 대해, 행 키와 상기 결합된 노출 데이터 및 전환 데이터를 포함하는 튜플을 생성하는 것을 포함할 수 있다.
행 키 3회 암호화된
노출 데이터
3회 암호화된
전환 데이터
Ħ(BlindlySignedKey)) ImpressionData3' ConversionData3'
... ... ...
집계 서버(180-A)는 그런 다음 k-익명성 기준을 충족하도록 데이터를 필터링할 수 있다. 집계 서버(180-A)는 각각의 3회 암호화된 노출 데이터와 관련된 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 결정할 수 있다. 3회 암호화된 각 노출 데이터는 노출 데이터의 발생이라고도 지칭될 수 있다. 노출 데이터는 애플리케이션에 특정적이지 않고 대신 제시된 디지털 컴포넌트를 기반으로 하기 때문에 다수의 노출은 동일한 3회 암호화된 노출 데이터를 가질 수 있지만 다른 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 가질 수 있다.
집계 서버(180-A)는 각각의 고유한 노출 데이터와 관련된 별개의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 k-익명성 임계값과 비교할 수 있다. 그 수가 임계값 미만이면, 집계 서버(180-A)는 테이블 또는 기타 데이터 구조로부터 노출 데이터의 발생을 필터링할 수 있다.
집계 서버(180-A)는 또한 각각의 3회 암호화된 전환 데이터와 관련된 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 결정할 수 있다. 3회 암호화된 각 전환 데이터는 전환 데이터의 발생이라고도 지칭될 수 있다. 전환 데이터는 애플리케이션에 특정적이지 않고 대신 전환 이벤트와 관련된 데이터를 기반으로 하기 때문에 다수의 전환은 동일한 3회 암호화된 전환 데이터를 가질 수 있지만 다른 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 가질 수 있다.
집계 서버(180-A)는 각각의 고유한 전환 데이터와 관련된 별개의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 k-익명성 임계값과 비교할 수 있다. 그 수가 임계값 미만이면, 집계 서버(180-A)는 테이블 또는 기타 데이터 구조로부터 전환 데이터의 발생을 필터링할 수 있다.
집계 서버(180-A)는 또한 3회 암호화된 노출 데이터 및 전환 데이터의 각각의 조합과 관련된 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 수를 결정할 수 있다. 즉, 이는 동일한 3회 암호화된 노출 데이터 및 동일한 3회 암호화 전환 데이터를 가진 고유한 블라인드 서명된 키의 수이다. 3회 암호화된 노출 데이터 및 동일한 3회 암호화된 전환 데이터의 각 조합은 노출 교차 전환 데이터의 발생으로 지칭될 수 있다.
집계 서버(180-A)는 노출 교차 전환 데이터의 각 발생의 횟수를 k-익명성 임계값과 비교할 수 있다. 그 횟수가 임계값 미만인 경우, 집계 서버(180-A)는 테이블 또는 기타 데이터 구조로부터 노출 교차 전환 데이터의 발생을 필터링할 수 있다.
집계 서버(180-A)는 그런 다음 아래의 [표 2]에 도시된 바와 같이 새로운 테이블 또는 데이터 구조를 생성하기 위해 필터링 후의 나머지 데이터를 사용할 수 있다. [표 2]의 각 행은 ImpressionData3'와 대응하는 ConversionData3'의 발생의 조합에 해당한다. 이 테이블은 각 조합의 발생 횟수, 예를 들어 각 조합과 관련된 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))의 횟수를 기록한다. 이 카운트는 동일한 노출 데이터를 가진 디지털 컴포넌트의 노출로 인해 발생하는 디지털 컴포넌트의 전환 횟수와 같다.
노출 교차 번환 데이터의
발생
3회 암호화된
노출 데이터
3화 암호화된
전환 데이터
... 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 키 교환 사용하여) 결정될 수 있다. 교환(exchange)의 결과는 동일한 의사 난수 발생기(예를 들어, 고급 암호화 표준(AES) 알고리즘 기반 발생기)에 대한 시드이다. 이렇게 하면 두 집계 서버에서 동일한 서브세트가 샘플링되고 의사 난수가 동일하면 나머지 프로세스가 결정적론적이므로 동일한 결과가 계산된다.
결합 및 필터링 후, 두 집계 서버(180-A 및 180-B)는 동일한 데이터, 예를 들어 각각이 {count, ImpressionData3', ConversionData3'}를 포함하는 튜플의 테이블 또는 목록을 갖는다. 그 카운트는 ImpressionData3'로 표현되는 동일한 노출 데이터가 있는 노출의 전환 횟수이다.
각 튜플에 대해, 집계 서버(180-A)는 3회 암호화된 전환 데이터(ConversionData3')를 복호화한다(318). 집계 서버(180-A)는 선택된 암호화 키(Keyi2)를 사용하여 3회 암호화된 전환 데이터(ConversionData3')를 복호화하여 {count, ImpressionData3', ConversionData2'}를 획득할 수 있다. 집계 서버(180-A)는 이러한 결과 튜플을 집계 서버(180-B)로 전송할 수 있다.
유사하게, 각각의 튜플에 대해, 집계 서버(180-B)는 3회 암호화된 노출 데이터(ImpressionData3')를 복호화한다(320). 집계 서버(180-B)는 선택된 암호화 키(Keyc2)를 사용하여 3회 암호화된 노출 데이터(ImpressionData3')를 복호화하여 {count, ImpressionData2, ConversiodData3'}를 획득할 수 있다. 집계 서버(180-B)는 이러한 결과 튜플을 집계 서버(180-A)로 전송할 수 있다.
집계 서버(180-A)는 각각의 수신된 결과 튜플{count, ImpressionData2, ConversionData3'}의 2회 암호화된 노출 데이터(ImpressionData2) 및 3회 암호화된 전환 데이터(ConversionData3')를 복호화한다(322). 집계 서버(180-A)는 집계 서버(180-A)의 공개키(Si)에 대응하는 개인키를 이용하여 2회 암호화된 노출 데이터(ImpressionData2)와 3회 암호화된 전환 데이터(ConversionData3')를 복호화할 수 있다. 수신된 각 튜플에 대해 이 복호화를 수행하면 {count, ImpressionData1, ConversionData2} 튜플이 생성된다. 집계 서버(180-A)는 이러한 튜플 {count, ImpressionData1, ConversionData2} 각각을 집계 서버(180-B)로 전송할 수 있다.
집계 서버(180-B)는 각각의 수신된 결과 튜플{count, ImpressionData3', ConversionData2}의 3회 암호화된 노출 데이터(ImpressionData3') 및 2회 암호화된 전환 데이터(ConversionData2)를 복호화한다(324). 집계 서버(180-B)는 집계 서버(180-B)의 공개키(Sc)에 대응하는 개인키를 사용하여 3회 암호화된 노출 데이터(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)은 report_domain(예를 들어, 보고 시스템(190)의 URL)을 평문(일반 텍스트)으로, 예를 들어, 노출 시간에 키 값 쌍(Mi)의 일부로서 집계 서버(180-A)로 전송할 수 있다. 유사하게, 전환이 발생하는 애플리케이션(112)은 예를 들어 전환 시간에 키 값 쌍(Mc)의 일부로서 report_domain을 평문으로 집계 서버(180-B)에 전송할 수 있다.
다른 예에서, 브라우저 개발자(또는 애플리케이션 개발자)는 허용된 보고 시스템(190) 및 그들의 report_domain의 화이트리스트를 공개할 수 있다. 브라우저(또는 애플리케이션)는 주기적으로 화이트리스트를 다운로드하고 전환 보고를 보내기 위해 화이트리스트를 적용할 수 있다.
다른 예에서, 브라우저 또는 애플리케이션은 (t,n) 임계값 암호화 기술을 사용하여 보고 도메인을 암호화하여 암호화된 보고 도메인을 집계 서버(180-A 및 180-B)로 전송할 수 있다. 이 예에서, 집계 서버(180-A 및 180-B)는 적어도 t개의 브라우저 또는 애플리케이션이 동일한 report_domain을 보고한 경우에만 일반 텍스트 report_domain을 복구할 수 있다. 다른 예에서, 예를 들어, report_domain이 충분한 엔트로피를 갖지 않는 경우, report_domain의 유도(derivation)는 (t,n)-임계값 암호화 기술에서 사용될 수 있다. 예를 들어, 유도는 report_domain과 디지털 컴포넌트에 대한 랜딩 페이지의 암호화 해시의 조합일 수 있다.
도 2로 돌아가면, 보고 시스템(190)은 각 1회 암호화된 전환 데이터(ImpressionData1) 및 PubKeyEncrypt(PrivateKeySign(mc, conversion_domain), report_domain) 쌍에 대해 집계 서버(180-A 및 180-B)로부터 두 개의 전환 보고(127 및 128)를 수신한다. 각각의 전환 보고(127, 128)는 노출 및 전환의 각 조합에 대해, 예를 들어 위에서 설명된 테이블로부터 도출된 바와 같이 필터링된 데이터의 조합의 수를 포함할 수 있다. 집계 서버(180-A)로부터 수신된 전환 보고서(127)의 데이터는 노출 및 전환 데이터의 동일한 배치에 대해 집계 서버(180-B)로부터 수신된 전환 보고(128)의 데이터와 매칭되어야 한다. 보고 시스템(190)은 두 수를 비교하여 악의적인 행동의 잠재적 징후에 대한 불일치를 식별할 수 있다.
보고 시스템(190)은 또한 노출 데이터의 블라인드 서명을 검증하기 위해 사기 검출 시스템(170)을 호출할 수 있다. 보고 시스템(190)은 그런 다음 암호화된 전환 데이터를 자신의 개인키를 사용하여 복호화할 수 있다. 보고 시스템(190)은 그런 다음 전환 시스템의 공개키를 사용하여 전환 데이터에 대한 디지털 서명을 확인할 수 있다. 두 검증이 모두 성공적인 경우, 보고 시스템(190)은 전환 측정 데이터가 유효하다고 확신할 수 있다.
전환 보고의 수신자는 전환 보고의 데이터를 신뢰할 수 있어야 한다. 두 개의 집계 서버(180-A, 180-B)로부터 수신된 전환 보고를 비교하고 블라인드 서명을 검증하는 위의 기술은 전환 보고 파이프라인에서 대부분의 사기를 방지할 수 있다. 그러나, 두 집계 서버가 공모하여 전환 카운트를 수정할 수 있다. 이러한 공모를 방지하기 위해, 전환 서버(172)는 전환 데이터를 클라이언트 디바이스(110)에 제공하기 전에 전환 데이터를 암호화하고 디지털 서명할 수 있다. 예를 들어, 전환 시스템(172)은 서명을 보존하는 비대칭 부가 동형 암호화 또는 다른 구조 보존 서명 기술을 사용하여 전환 데이터를 암호화하고 디지털 서명할 수 있다. 이러한 방식으로, 디지털 서명은 위에서 설명한 것처럼 3회 암호화(또는 다중 암호화)된 후 보존된다. 이 암호화는 집계 서버(180-A, 180-B)가 전환 데이터에 액세스하는 것을 방지하고 수신자가 디지털 서명을 확인하여 전환 데이터가 수정되지 않았는지 확인할 수 있게 한다. 전환 데이터에 전환 가치(value)가 포함된 경우 아래 설명과 같이 각 전환 가치를 유사한 방식으로 암호화하여 서명할 수 있다.
위에서 설명된 전환 보고 기술은 다양한 유형의 전환 이벤트를 지원할 수 있다. 동일한 브라우저(또는 동일한 애플리케이션) 클릭 전환 및 조회 전환을 지원하기 위해 브라우저 또는 애플리케이션은 전환 측정 전용으로 브라우저 전체(또는 애플리케이션 전체)에서 랜덤하게 생성된 고유 식별자(ID)를 선택할 수 있다. 브라우저(또는 애플리케이션)는 노출 및 전환 시간 모두에서 BlindlySignedKey(ID, conversion_domain, report_domain)를 계산할 수 있다. 클릭 전환과 조회 전환을 구분하기 위해, 노출 시간에 브라우저 또는 애플리케이션은 사용자가 노출 데이터(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 값은 클라이언트 디바이스로부터 수신된 3회 암호화된 노출 데이터(ImpressionData3)일 수 있다.
제2 집계 서버는 다수의 클라이언트 디바이스의 적어도 일부로부터, 전환 데이터를 수신한다(404). 전환 데이터는 클라이언트 디바이스에 의해 기록된 각 전환에 대해, 전환이 발생된 클라이언트 디바이스 또는 클라이언트 디바이스의 애플리케이션에 대한 제2 고유 식별자에 기초한 제2 키를 포함하는 제2 키 값 쌍을 포함할 수 있다. 예를 들어, 전환을 위한 제2 키는 클라이언트 디바이스로부터 수신된 블라인드 서명된 전환 키(BlindlySignedKey(ID, conversion_domain, report_domain))일 수 있다.
전환을 위한 제2 키 값 쌍은 제1 암호화 키 및 제2 암호화 키를 사용하여 암호화되었던 암호화된 전환 데이터를 포함하는 제2 값을 포함할 수 있다. 예를 들어, 제2 값은 클라이언트 디바이스로부터 수신된 3회 암호화된 전환 데이터(ConversionData3)일 수 있다.
집계 서버(180-A 및 180-B)는 암호화된 노출 및 전환 데이터를 결합하기 위해 MPC 프로세스를 수행하고, 결합 결과를 필터링하고, 그런 다음 암호화된 노출 데이터의 서브세트와 프라이버시 보호 기준을 충족하는 암호화된 전환 데이터를 복호화한다(406). 이 MPC 프로세스는 제1 키 및 제2 키에 기초하여, 암호화된 전환 데이터 및 대응하는 암호화된 노출 데이터의 쌍을 식별하는 것을 포함할 수 있다. 그런 다음 암호화된 노출 데이터와 전환 데이터의 각 쌍에 대한 노출 데이터 및 전환 데이터는 제1 공개키에 해당하는 제1 개인키와 제2 공개키에 해당하는 제2 개인키를 사용하여 다수의 스테이지에서 복호화될 수 있다. 각 스테이지는 암호화된 노출 데이터 또는 암호화된 전환 데이터와 대응하는 암호화된 노출 데이터의 각 쌍의 암호화된 전환 데이터 중 하나를 복호화하고, 결과 데이터를 제1 집계 서버 또는 제2 집계 서버 중 다른 하나로 전송하는 제1 집계 서버 또는 제2 집계 서버 중 하나를 포함할 수 있다. 이 MPC 프로세스는 도 3에 도시되고 위에서 설명된 프로세스(300)와 동일하거나 유사할 수 있다.
복호화된 노출 데이터의 각 부분과 복호화된 전환 데이터의 각 부분은 각각의 보고 시스템으로 전송된다(408). 예를 들어, 집계 서버(180-A, 180-B) 각각은 상술한 바와 같이 개별 보고 시스템으로 전환 보고를 전송할 수 있다.
각 집계 서버 데이터의 무결성 검증
전술한 바와 같이, 프로세스(300)의 시작에서, 집계 서버(180-A)는 각각의 노출에 대한 키 값 쌍의 형태로 노출 데이터(Mi)를 수신한다. 각 키 값 쌍에는 3회 암호화된 노출 데이터(ImpressionData3p)에 대한 블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))가 포함될 수 있다. 3회 암호화된 노출 데이터(ImpressionData3p)의 마지막 암호화는 집계 서버(180-B)의 공개키를 사용하는 확률적이다. 따라서, 집계 서버(180-B) 이외의 다른 당사자는 3회 암호화된 노출 데이터(ImpressionData3p)를 복호화할 수 없으며, 이는 집계 서버(180-B)를 제외한 모든 서버에 대해 암호학적 난수가 될 수 있다.
또한, 애플리케이션(112)을 제외한 다른 당사자는 사용자 식별자(ID)의 일반 텍스트(평문) 값을 알지 못한다. 공모 당사자가 복구할 수 있는 유일한 정보는 블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain)) 뒤에 있는 익명의 사용자가 특성을 알 수 없는 많은 노출을 가지고 있다는 것이다. 공모 당사자는 전체 디지털 컴포넌트 렌더링이 목적지(dc_destination) 및 보고 도메인(report_domain)에 의해 분할되기 때문에 애플리케이션(112)/클라이언트 디바이스(110)/사용자가 본 총 노출 수를 추론할 수 없다.
블라인드 서명된 노출 키(BlindlySignedKey(ID, dc_destination, report_domain))와 관련하여 사용자에게 표시되는 노출 수를 아는 것이 우려되는 경우, 애플리케이션(112)은 랜덤 또는 의사-랜덤 시간 동안 반복적으로 노출에 대한 노출 데이터(Mi)를 전송할 수 있다. 3회 암호화된 노출 데이터(ImpressionData3p)를 생성할 때 적용된 확률적 암호화를 고려할 때, 집계 서버(180-A) 및 임의의 공모 당사자는 수신된 노출 데이터를 중복 제거(deduplicate)할 수 없다. 그러나, 집계 서버(180-B)는 3회 암호화된 노출 데이터(ImpressionData3p)를 복호화한 후 노출을 중복 제거하여 2회 암호화된 노출 데이터(ImpressionData2)를 복구할 수 있다.
프로세스(300)를 참조하여 위에서 설명된 바와 같이, 프로세스(300)의 단계(310)의 시작에서, 집계 서버(180-A)는 집계 서버(180-B)로부터 {H(BlindlySignedKey, Keyc), ConversionData3p} 쌍을 수신하며, 이는 집계 서버(180-A)가 단계(302)에서 갖는 것, 즉 키 값 쌍{(BlindlySignedKey(ID, dc_destination, report_domain)), ImpressionData3p}에 결합될 수 없다. 또한, 블라인드 서명된 키 H(BlindlySignedKey, Keyc)는 MPC 프로세스의 각 실행에 대해서만 유효할 수 있으며 집계 서버(180-B)는 각 실행 후에 상기 선택된 키(Keyc1 및 Keyc2)를 폐기할 수 있다. 집계 서버(180-A)는 2회 암호화된 전환 데이터(ConversionData2)를 복구하기 위해 자신의 공개키를 사용하여 3회 암호화된 전환 데이터(ConversionData3p)를 복호화할 수 있다. 이때, 집계 서버(180-A)는 H(BlindlySignedKey, Keyc) 및 2회 암호화된 전환 데이터(ConversionData2)를 가지며, 둘 모두는 암호화되고 집계 서버(180-B)만이 복호화 키를 갖는다. 집계 서버(180-B)가 정직하다면, 집계 서버(180-A)가 사용자 프라이버시를 위험에 빠뜨리기 위해 할 수 있는 일은 없다.
프로세스(300)의 단계(314)의 시작에서, 집계 서버(180-A)는 각각의 노출에 대해, 집계 서버(180-B)로부터 2회 암호화된 블라인드 서명된 결합 키(Ħ(BlindlySignedKey)) 및 3회 암호화된 노출 데이터(ImpressionData3')를 수신한다. 이 3회 암호화된 노출 데이터(ImpressionData3')는 집계 서버(180-B)가 소유한 키를 사용하여 마지막으로 암호화되었으며, 이는 현재 MPC 프로세스의 실행에 대해서만 유효하다. 집계 서버(180-B)와의 공모 없이, 집계 서버(180-A)가 할 수 있는 최악의 일은 데이터의 실제 튜플{count, ImpressionData3', ConversionData2'}이 아닌 데이터의 가짜 튜플{count', ImpressionData3'', ConversionData2''}을 전송하는 것이다.
도 5는 데이터의 무결성을 검증하기 위한 예시적인 프로세스(500)를 도시하는 흐름도이다. 특히, 프로세스(500)는 본 문서에 설명된 MPC 프로세스, 예를 들어, 도 3 및 4의 MPC 프로세스 또는 후술하는 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)는 각 튜플에서 2회 암호화된 전환 데이터(ConversionData2')를 암호화하여 각 튜플에 대해 3회 암호화된 전환 데이터 ConversionData3'를 생성할 수 있다. 이는 집계 서버(180-A)의 공개키를 이용한 3회 암호화 전환 데이터 ConversionData3의 결정론적 공개키 암호화 결과인 3회 암호화 전환 데이터(ConversionData3)의 정의로 인해 가능하다.
집계 서버(180-B)는 k-익명성과 차등 프라이버시를 달성하기 위해 임계값 및 서브샘플링을 적용한 후, 수신된 각 튜플{count, ImpressionData3', ConversionData2'}를 {count, ImpressionData3', ConversionData3'}으로 변환하고, 집계 서버(180-B)가 도 3의 단계(316)에서 생성한 결과 데이터 세트를 비교할 수 있다. 예를 들어, 집계 서버(180-B)는 튜플{count, ImpressionData3', ConversionData3'}을 [표 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)는 이러한 조각의 데이터를 사용하여, 두 데이터 세트의 3회 암호화된 노출 데이터(ImpressionData3')와 2회 암호화된 노출 데이터(ImpressionData2) 간의 매핑을 추론할 수 있다.
집계 서버(180-B)와 유사하게, 집계 서버(180-A)는 3회 암호화된 노출 데이터(ImpressionData3')가 실제로 집계 서버(180-B)의 공개키를 사용하여 2회 암호화된 노출 데이터(ImpressionData2)의 결정론적 공개키 암호화 결과임을 확인할 수 있다. 그러나, 집계 서버(180-A)는 공개키 암호화 알고리즘의 설계로 인해 3회 암호화된 노출 데이터(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)를 이중 암호화된 노출 데이터(ImpressionData2)로 재암호화할 수 있다. 집계 서버(180-B)는 결정론적 공개키 알고리즘과 집계 서버(180-A)의 공개키를 사용하여 상기 이중 암호화된 전환 데이터(ConversionData2)를 이중 암호화된 노출 데이터(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)로부터 수신된 두 개의 전환 보고 사이의 불일치를 찾을 것이다. 보고 시스템(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)), 3회 암호화된 노출 데이터(ImpressionData3p) 및 노출 시간 데이터(ImpressionTime2)가 포함될 수 있다. 블라인드 서명된 노출 키 및 3회 암호화된 노출 데이터는 프로세스(300)의 블라인드 서명된 노출 키 및 3회 암호화된 노출 데이터와 동일하거나 유사할 수 있다. 노출 시간 데이터는 노출이 발생된 시간을 나타내며 암호화될 수 있다.
노출 시간 데이터(ImpressionTime2)는 집계 서버(180-A)의 공개키(Si)와 집계 서버(180-B)의 공개키(Sc)를 사용하여 이중으로 암호화될 수 있다. 예를 들어, 노출 시간 데이터(ImpressionTime2)는 PubKeyEncrypt(T(tm + tdevice), Si), Sc)로 정의될 수 있다. 이 예에서, tm은 노출 또는 클릭 시간(예를 들어, 디지털 컴포넌트가 제시되거나 상호 작용한 시간)이고, tdevice는 디지털 컴포넌트를 제시한 애플리케이션(112)이 설치된 클라이언트 디바이스(110)의 클럭 스큐이다. 이 예에서, 두 시간의 합은 암호화 기술(T)과 집계 서버(180-A)의 공개키(Si)를 사용하여 암호화된다. 암호화 기술(T)은 동형의 부가적인 확률적(homomorphic, additive, probabilistic) 공개키 암호화 기술(예를 들어, Paillier 암호화 시스템)일 수 있다. 이어서 이 암호화된 값은 집계 서버(180-B)의 공개키(Sc)를 사용하여 암호화된다. 이 제2 암호화는 결정론적 또는 확률적 암호화 기술일 수 있다.
집계 서버(180-B)는 전환 데이터를 수신한다(604). 예에서, 전환 데이터는 블라인드 서명된 전환 키(BlindlySignedKey(ID, conversion_domain, report_domain)), 3회 암호화된 전환 데이터(ConversionData3p), 및 전환 시간 데이터(ConversionTime2)를 포함할 수 있다. 블라인드 서명된 전환 키 및 3회 암호화된 전환 데이터는 프로세스(300)의 블라인드 서명된 전환 키 및 3회 암호화된 전환 데이터와 동일하거나 유사할 수 있다. 전환 시간 데이터는 전환이 발생된 시간을 나타내며 암호화될 수 있다.
전환 시간 데이터(ConversionTime2)는 집계 서버(180-A)의 공개키(Si) 및 집계 서버(180-B)의 공개키(Sc)를 사용하여 이중으로 암호화될 수 있다. 예를 들어, 전환 시간 데이터(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)는 각 노출에 대해, 암호화된 결합 키, 3회 암호화된 노출 데이터(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)는 각 전환에 대해, 암호화된 결합 키, 3회 암호화된 전환 데이터(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)는 시간 스큐 값(time_skewi)으로서, 비밀 키(Keyi, skew)의 HMAC, 스큐 및 암호화된 블라인드 서명된 전환 키, 예를 들어 HMACSHA256(Keyi, skew,Ħ(BlindlySignedKey)을 계산할 수 있다.
그런 다음 집계 서버(180-A)는 수신된 각 튜플에 대해, 1회 암호화된 전환 시간 데이터(ConversionTime1)를 생성할 수 있다. 일부 구현에서, 1회 암호화된 전환 시간 데이터(ConversionTime1)는 동형, 부가, 확률적 공개키 암호화 기술(T), 예를 들어 T(zn + tdevice + time_skewi, Sc)를 사용하여 생성된다. 이 예에서, 전환 시간(zn), 클라이언트 디바이스의 클럭 스큐(tdevice) 및 시간 스큐 값(time_skewi)의 합은 집계 서버(180-B)의 공개키(Sc)를 사용하여 암호화된다.
프로세스(300)의 단계(310)를 참조하여 위에서 설명된 바와 같이, 집계 서버(180-A)는 또한 3회 암호화된 전환 데이터(ConversionData3p)를 복호화하고 재암호화할 수 있다. 즉, 집계 서버(180-A)는 자신의 개인키(공개키(Si)에 대응하는 개인키)를 사용하여 3회 암호화된 전환 데이터(ConversionData3p)를 복호화하여 2회 암호화된 전환 데이터(ConversionData2)를 복구할 수 있다. 그런 다음 집계 서버(180-A)는 자신의 선택된 암호화 키(Keyi2)를 사용하여 2회 암호화된 전환 데이터(ConversionData2)를 재암호화하여 3회 암호화된 전환 데이터(ConversionData3p)를 얻을 수 있다.
집계 서버(180-A)는 각각의 고유한 3회 암호화된 전환 데이터(ConversionData3p)에 대해, 3회 암호화된 전환 데이터(ConversionData3p)와 관련된 고유한 암호화된 블라인드 서명된 전환 키(Ħ(BlindlySignedKey))의 수를 결정할 수 있다. 전환을 위해 3회 암호화된 전환 데이터(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)) 위에 교환적 암호화를 적용할 수 있다. 그 결과 암호화된 블라인드 서명된 키 Ħ(BlindlySignedKey)가 생성된다.
집계 서버(180-B)는 시간 스큐 값(time_skewc)을 계산할 수 있다. 예를 들어, 집계 서버(180-B)는 시간 스큐 값(time_skewc)으로서, 비밀 키(Keyc, skew)의 HMAC, 및 암호화된 블라인드 서명된 전환 키, 예를 들어 HMACSHA256(Keyc, skew, Ħ(BlindlySignedKey)를 계산할 수 있다. .
그런 다음 집계 서버(180-B)는 각각의 수신된 튜플에 대해, 1회 암호화된 노출 시간 데이터(ImpressionTime1)를 생성할 수 있다. 일부 구현에서, 1회 암호화된 전환 시간 데이터(ImpressionTime1)는 동형, 부가, 확률적 공개키 암호화 기술(T), 예를 들어 T(tm + tdevice + time_skewc, Si)를 사용하여 생성된다. 이 예에서, 노출 시간(tm), 클라이언트 디바이스의 클럭 스큐(tdevice) 및 시간 스큐 값(time_skewc)의 합은 집계 서버(180-A)의 공개키(Si)를 사용하여 암호화된다.
프로세스(300)의 단계(312)를 참조하여 위에서 설명된 바와 같이, 집계 서버(180-B)는 또한 3회 암호화된 노출 데이터(ImpressionData3p)를 복호화하고 재암호화할 수 있다. 즉, 집계 서버(180-B)는 자신의 개인키(공개키(Sc)에 대응하는 개인키)를 사용하여 3회 암호화된 전환 데이터(ImpressionData3p)를 복호화하여 2회 암호화된 노출 데이터(ImpressionData2)를 복구할 수 있다. 그런 다음 집계 서버(180-A)는 선택된 암호화 키(Keyc2)를 사용하여 2회 암호화된 노출 데이터(ImpressionData2)를 재암호화하여 3회 암호화된 노출 데이터(ImpressionData3p)를 얻을 수 있다.
집계 서버(180-B)는 각각의 고유한 3회 암호화된 노출 데이터(ImpressionData3p)에 대해, 3회 암호화된 노출 데이터(ImpressionData3p)와 관련된 고유한 암호화된 블라인드 서명된 전환 키(Ħ(BlindlySignedKey))의 수를 결정할 수 있다. 노출에 대해 3회 암호화된 노출 데이터(ImpressionData3p)와 관련된 고유한 암호화된 블라인드 서명된 전환 키(Ħ(BlindlySignedKey))의 수가 (예를 들어, 차등 프라이버시 임계값 요구에 기초하는) 임계값을 충족하는 경우, 집계 서버(180-B)는 집계 서버(180-A)로, 튜플({Ħ(BlindlySignedKey, Keyi), ImpressionData3, ImpressionTime1})을 전송한다.
집계 서버(180-A)는 집계 서버(180-B)로부터 수신된 암호화된 노출 및 전환 데이터를 결합하고 필터링한다(614). 집계 서버(180-A)는 집계 서버(180-A)로부터 수신한 튜플({Ħ(BlindlySignedKey, Keyi), ImpressionData3, ImpressionTime1})을 집계 서버(180-A)가 단계(610)에서 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 사용하여 단계(610)에서 생성한 튜플({Ħ(BlindlySignedKey), ConversionData3p, ConversionTime1})과 결합할 수 있다. 각각의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해, 집계 서버(180-A)는 {Ħ(BlindlySignedKey), ImpressionData3p, ImpressionTime1, ConversionData3p, ConversionTime1}을 포함하는 테이블의 튜플 또는 행을 형성한다.
애플리케이션(112)이 동일한 디지털 컴포넌트에 대한 다중 노출을 보고할 수 있으므로, 각각의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey)에 대해 노출 데이터(ImpressionData3)가 여러번 발생될 수 있을 수 있다. 집계 서버(180-A)는 동일한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey) 및 동일한 3회 암호화된 전환 데이터(ConversionData3p)를 갖는 각각의 3회 암호화된 노출 데이터(ImpressionData3p)에 대한 공개키(Si)를 사용하여 1회 암호화된 노출 시간 데이터(ImpressionTime1)를 복호화하여, t'm = tm + tdevice + time_skewc를 포함하는 암호화되지 않은 시간 데이터(ImpressionTime0)를 획득할 수 있다. 집계 서버(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}을 집계 서버(180-B)가 단계(612)에서 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))를 사용하여 생성한 튜플({Ħ(BlindlySignedKey, Keyi), ImpressionData3, ImpressionTime1}과 결합할 수 있다. 각각의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해, 집계 서버(180-A)는 {Ħ(BlindlySignedKey), ImpressionData3p, ImpressionTime1, ConversionData3p, ConversionTime1}을 포함하는 테이블에 튜플 또는 행을 형성한다.
집계 서버(180-B)는 또한 동일한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey) 및 동일한 3회 암호화된 전환 데이터(ConversionData3p)를 갖는 각각의 3회 암호화된 노출 데이터(ImpressionData3p)에 대해 자신의 공개키(Sc)를 사용하여 1회 암호화된 변환 시간 데이터(ConversionTime1)를 해독하여, t'm = tm + tdevice + time_skewi를 포함하는 암호화되지 않은 시간 데이터(CompressionTime0)를 획득할 수 있다.
집계 서버(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, ImpressionTime0, ConversionData3p, ConversionTime0} 형태의 레코드(기록)을 형성할 수 있다.
집계 서버(180-A)는 노출 및 전환의 시간순 순서를 생성한다(618). 각각의 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해, 집계 서버(180-A)는 각 노출 데이터(ImpressionData3p) 조각에 대한 노출 시간(ImpressionTime0)과 각 전환 데이터(ConversionData3p) 조각에 대한 전환 시간(ConversionTime0)을 비교하여, 그 시간들 사용하여 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대한 노출(들) 및 전환(들)의 시간순 시퀀스를 생성한다.
집계 서버(180-B)는 노출 및 전환의 시간순 순서를 생성한다(620). 각각의 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대해, 집계 서버(180-A)는 각 노출 데이터(ImpressionData3p) 조각에 대한 노출 시간(ImpressionTime0)과 각 전환 데이터(ConversionData3p) 조각에 대한 전환 시간(ConversionTime0)을 비교하여, 그 시간들을 사용하여 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대한 노출(들) 및 전환(들)의 시간순 시퀀스를 생성한다.
각각의 고유한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))는 특정 디지털 컴포넌트 및 특정 고유 식별자(ID)에 대응하므로, 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))에 대한 시간순 시퀀스는 고유 식별자에 대한 디지털 컴포넌트의 하나 이상의 노출(예를 들어, 고유 식별자에 대응하는 사용자의 하나 이상의 디바이스에서) 및 특정 디지털 컴포넌트의 프리젠테이션(제시)으로 인한 하나 이상의 전환(들)을 포함한다. 예를 들어, 시퀀스는 특정 디지털 컴포넌트가 동일한 사용자에게 여러 번 제시된 경우 다중 노출을 포함할 수 있고 시퀀스에는 상이한 유형의 다중 전환(예를 들어, 가상 장바구니에 아이템을 추가하기 위한 전환 및 그 아이템의 획득 완료를 위한 전환)이 포함될 수 있다.
시간순 순서는 집계 서버(180-A 및 180-B)가 전환을 노출로 귀속시키는 기여도 프로세스를 독립적으로 수행할 수 있게 한다. 예를 들어, 마지막 클릭 기여도 모델에서, 집계 서버(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)는 두 개의 인접한 노출 사이의 시간 간격(δ'), 예를 들어 δ'm = t'm+1 - t'm를 계산할 수 있다. tdevice가 충분히 작다고 가정하면 δ'm ≒ δm = t'm+1 - t'm이다. 디지털 컴포넌트 배포 시스템이 사용자에게 일련의 노출을 제공하는 경우, 디지털 컴포넌트 배포 시스템은 두 개의 인접한 노출 사이의 시간 간격(예를 들어, δm)을 기록할 수 있다. 위의 내용에 기초하여, 디지털 컴포넌트 배포 시스템은 디지털 컴포넌트 배포 시스템은이 집계 서버(180-A)와 모의하는 경우 시간 간격에 기초하여 개별 사용자를 인식할 수 있을 것이다. 디지털 컴포넌트 배포 시스템은 또한 디지털 컴포넌트 배포 시스템이 집계 서버(180-B)와 결탁하는 경우 첨부된 유사한 시간-간격 공격을 시작할 수 있다.
이러한 시간-간격 기반 공격을 저지하기 위한 한 가지 옵션은 다음 속성을 갖는 단조 증가 함수를 사용하는 것이다. 두 개의 임의의 숫자(a 및 b)가 주어지면, 두 값 a-b 및 Γ(a)-Γ(b)는 상관 관계가 없다. 즉, a-b를 아는 것은 Γ(a)-Γ(b)를 예측하는데 도움이 되지 않으며 그 반대의 경우도 마찬가지이다.
함수(Γ)로, 노출 시간 데이터(ImpressionTime2)는 PubKeyEncrypt(T(Γ(tm + tdevice), Si), Sc)로서 정의될 수 있다. 이 예에서 δ'm = Γ(tm+1 + tdevice + skew) - Γ(tm + tdevice + skew)이다. 따라서 δ'm ≠ δ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)는 집계 서버(180-B)로 {H(BlindlySignedKey, Si), ImpressionData3p, T(tm + tdevice, Stime)} 형태의 튜플을 대신 전송할 수 있다. 즉, 집계 서버(180-A)는 블라인드 서명된 키를 비밀키(Si)로 암호화하고 노출 및 시간 데이터를 그대로 전달할 수 있다.
유사하게, 수정된 단계(608)에서, 집계 서버(180-B)는 집계 서버(180-A)로 {H(BlindlySignedKey, Sc), ImpressionData3p, T(zn + tdevice, Stime) 형태의 튜플을 대신 전송할 수 있다. 즉, 집계 서버(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)를 참조하여 위에서 설명된 바와 같이 데이터 세트를 결합하고 필터링할 수 있다. 노출 시간(ImpressionTime0)을 tm + tdevice + time_skewc + time_skewi로 결정하기 보다는, 집계 서버(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)은 동형, 부가, 확률론적 공개키 암호화 기술(T)와 시간 서버(192)의 공개키(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} 형태의 레코드를 형성할 수 있다.
동일하거나 다수의 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))와 관련된 다수 조각의 노출 데이터(ImpressionData3) 및 다수 조각의 전환 데이터(ConversionData3)로 구성된 각 레코드 내에서, 집계 서버(180-A)는 암호화된 시간 값(ImpresionTime3_skew 및 ConversionTime3_skew)에 랜덤 또는 의사 랜덤 인덱스를 할당할 수 있다. 집계 서버(180-A)는 암호화된 시간 값(그러나 블라인드 서명된 키 또는 노출 또는 전환 데이터는 아님)과 함께 이러한 인덱스를 시간 서버(192)로 전송할 수 있다. 시간 서버(192)는 공개키(Stime)에 대응하는 개인키를 사용하여 암호화된 시간 값을 복호화하고, 이러한 복호화되었지만 삼중-편향된(triple-skewed) 시간 값을 정렬하고, 그리고 인덱스를 시간순으로 집계 서버(180-A)에 다시 전송할 수 있다.
이러한 방식으로, 시간 서버(192)는 어떤 사용자 데이터에도 액세스할 수 없습니다. 시간 서버(192)는 삼중 편향된 시간 값의 목적에 대한, 또는 삼중 편향된 시간 값의 모음(collection)이 동일한 암호화된 블라인드 서명된 키(Ħ(BlindlySignedKey))와 연관되는지 여부에 대한 액세스 권한조차 갖지 않는다. 집계 서버(180-A)와 결탁하지 않고, 시간 서버(192)는 시간 또는 시간-간격 기반 공격을 시작할 수 없다.
집계 서버(180-A)는 데이터에 대응하는 암호화된 시간 값의 인덱스들을 사용하여 각 레코드에 대한 노출 데이터(ImpressionData3) 및 전환 데이터(ConversionData3)를 정렬할 수 있다. 이 순서로, 집계 서버(180-A)는 위에서 설명된 바와 같이 전환을 노출에 귀속시키는 기여도 프로세스를 수행할 수 있다. 집계 서버(180-B)는 암호화된 시간 값에 인덱스를 할당하고 기여를 위한 데이터를 정렬하기 위해 시간 서버(192)와 상호 작용하는 동일한 프로세스를 수행할 수 있다. 두 집계 서버(180-A, 180-B)가 이 과정을 완료하면, 집계 서버(180-A, 180-B)는 결과를 비교할 수 있다.
데이터 기반 기여
본 문서에 설명된 MPC 프로세스, 예를 들어 도 3의 프로세스(300)는 데이터 기반 기여(DDA)를 지원하도록 적용될 수 있다. 데이터 기반 기여는 디지털 컴포넌트, 캠페인 및/또는 사용자의 행동을 기반으로 한 전환에 대한 검색 키워드에 크레딧을 부여한다. 예를 들어, DDA는 전환으로 이어지는 전환 경로에서 각 키워드의 실제 기여를 계산하기 위해 전환 데이터를 사용할 수 있다. 이것은 크레딧을 적용하기 위한 나중 처리를 위해, 보고 시스템(190)에 집계 임계값을 충족하는 전체 경로를 보고함으로써 작동한다.
도 7은 데이터 기반 기여를 사용하여 노출에 전환을 귀속하기 위한 예시적인 프로세스(700)를 도시하는 흐름도이다. 프로세스(700)는 도 1 및 도 2의 집계 서버(180-A, 180-B)에 의해 수행될 수 있다.
DDA를 추적하기 위해, 디지털 컴포넌트 및/또는 전환 시스템(190)은 DDA를 인에이블(활성화)하도록 클라이언트 디바이스(110)의 애플리케이션(112)에 통지할 수 있다(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) 및 3회 암호화된 노출 데이터(ImpressionData3p)를 포함하는 노출 데이터(Mi)를 집계 서버(180-A)로 전송할 수 있다. 유사하게, 애플리케이션(112)이 위에서 설명된 바와 같이 전환을 보고할 때, 애플리케이션(112)은 블라인드 서명된 결합 키(BlindlySignedKey) 및 3회 암호화된 전환 데이터(ConversionData3p)를 포함하는 전환 데이터(Mc)를 집계 서버(180-B)로 전송할 수 있다. 이 예에서 블라인드 서명된 키는 클릭한 파라미터를 고려하는 수정된 버전이다.
노출 및 전환의 시퀀스가 생성된다(706). 시퀀스를 생성하기 전에, 각 집계 서버(180-A, 180-B)는 프로세스(300)의 단계(306-316)을 참조하여 위에서 설명한 바와 같이 데이터를 결합하고 필터링할 수 있다. 결합 및 필터링이 완료된 후, 각 집계 서버는 {ImpressionData3,1, ImpressionData3,2, ImpressionData3,i …, ConversionData 3 }의 형태의 주어진 사용자와 관련된 각각의 고유한 블라인드 서명된 결합 키(BlindlySignedKey)에 대한 레코드를 가지고 있다. 이 형태에서, 노출(들)과 전환(들)은 시간순으로 정렬될 수 있다. 블라인드 서명된 결합 키(BlindlySignedKey)에 대한 이러한 시간순으로 정렬된 시퀀스를 시퀀스라고 할 수 있다.
각각의 고유 시퀀스에 대해, 집계 서버(180-A 및 180-B) 모두 고유 시퀀스를 갖는 블라인드 서명된 결합 키(BlindlySignedKey)의 수를 결정한다(708). 예를 들어, 다수의 사용자가 전환 이벤트 전에 동일한 디지털 컴포넌트를 동일한 순서로 클릭했을 수 있다. 이러한 경우, 노출 및 전환 시퀀스는 각 사용자에 대해 블라인드 서명된 고유한 결합 키(BlindlySignedKey)를 갖을 것이다.
시퀀스들이 필터링된다(710). 예를 들어, 각 집계 서버(180-A 및 180-B)는 프라이버시 또는 다른 임계값 요구 사항에 기초하여 시퀀스들를 필터링할 수 있다. 특정 예에서, 집계 서버(180-A 및 180-B)는 시퀀스로부터, 적어도 임계 수threshold number)의 고유한 블라인드 서명된 결합 키(BlindlySignedKey)르 갖지 않는 각 시퀀스를 필터링할 수 있다. 그 결과는 {Occurrencem, Sequencem} 쌍의 목록이며, 여기서 m = 1, 2, … M이다.
노출 및 전환 데이터가 복호화된다(712). 노출 및 전환 데이터는 프로세스(300)의 단계(318-328)의 MPC 프로세스를 사용하여 복호화될 수 있다. 이 복호화는 {Occurrence1, ImpressionData1,1, … ImpressionData1,1, ConversionData1,1}, {Occurrence2, ImpressionData1,2, … ImpressionData1,2, ConversionData1,2} 형태의 튜플을 생성한다. 각 튜플은 보고 도메인(190)의 공개키를 사용하여 1회 암호화된 노출 및 전환 데이터의 시퀀스를 포함한다.
노출 및 전환 데이터는 각각의 보고 시스템으로 전송된다(714). 그런 다음 보고 시스템(190)은 DDA 기술(예를 들어, Shapley Value)을 최종 시퀀스 세트에 적용하여 크레딧을 할당할 수 있다.
DDA는 다수의 도메인 간의 사이트간(cross-site) 보고이므로, 임계값 요구 사항을 충족할 수 있는 개별 시퀀스의 수가 적을 수 있는데, 특히 많은 정보가 노출 및/또는 전환 데이터에 인코딩된 경우, 각 노출 데이터(ImpressionData3p)의 다양한 발생(occurrences)과 전환 데이터(ConversionData3p)의 다양한 발생이 발생한다. 이러한 경우, 사용자 프라이버시를 보호하기 위해 최종 측정 보고에서 각 시퀀스의 발생 횟수에 차등 프라이버시 노이즈가 추가될 수 있으며, 이는 디지털 컴포넌트 제공자에게 유용성이 낮을 수 있다.
이 유틸리티는 노출 데이터(ImpressionData3p) 및/또는 전환 데이터(ConversionData3p)의 엔트로피를 줄이거나 보고 윈도우를 확대함으로써 사용자 프라이버시를 계속 보호하면서 개선될 수 있다. 노출 데이터의 순서가 중요하지 않거나 중복된 노출 데이터가 무시될 수 있는 경우, 디지털 컴포넌트 제공자는 전환 사이트에서 집계 서버(180-A, 180-B)에 통지할 수 있다. 이 경우, 집계 서버(180-A, 180-B)는 각 세트(시퀀스)와 관련된 고유한 블라인드 서명된 결합 키(BlindlySignedKey)의 수를 카운트하고 그에 따라 임계값 및 서브샘플링을 적용할 것이다.
집계 전환 값 결정
본 문서에 설명된 MPC 프로세스, 예를 들어 도 3의 프로세스(300)는 전환 및 노출 수에 추가하여 전환 값 보고를 지원하도록 적응될 수 있다. 각 전환에 대해, 광고주는 숫자 전환 값(예를 들어, 디지털 컴포넌트 제공자의 웹 사이트상에서 소비한 금액)를 첨부할 수 있다. 특정 노출 및 전환 쌍에 대해 {V1, V2, … Vn}이 부착된 해당 숫자 전환 값이 있는 n개의 전환이 있다고 가정한다. 전환 횟수는 이다. 총 전환 값은 이다. 전환값의 제곱의 합은 이다. 전환 값의 평균은 A1/A0이고 분산은 A2/A0 -(A1/A0)2이다. 두 캠페인의 효과를 비교하기 위해, 전환 값의 분포(전환이 발생된 경우)가 정규 분포를 따른다고 가정하고 두 정규 분포 간에 유의한 차이가 있는지 여부를 비교할 수 있다. 그러기 위해서는 2차 모멘트 분산(Ai,2)이 필요하다.
집계 서버(180-A 및 180-B)가 전환 값(A1)을 안전하게 계산할 수 있게 하기 위해, 숫자 덧셈 연산을 지원하는 교환적 암호화 기술(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)는 클라이언트 디바이스로부터, 예를 들어, 일괄(batch)로 전환 데이터를 수신할 수 있다. 애플리케이션(112)이 위에서 설명된 바와 같이 노출을 보고할 때, 애플리케이션(112)은 블라인드 서명된 결합 키(BlindlySignedKey) 및 3회 암호화된 노출 데이터(ImpressionData3p)를 포함하는 노출 데이터(Mi)를 집계 서버(180-A)로 전송할 수 있다.
유사하게, 애플리케이션(112)이 위에서 설명된 바와 같이 전환을 보고할 때, 애플리케이션(112)은 블라인드 서명된 결합 키(BlindlySignedKey) 및 3회 암호화된 전환 데이터(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)을 수신하고 하나 이상의 3회 암호화된 전환 값 및 3회 암호화된 제곱 전환 값을 생성할 수 있다. 예를 들어, 애플리케이션(112)은 3회 암호화된 전환 값으로서 PublicKeyEncrypt(H(Vi, report_domain), Sc, Si)를 생성할 수 있다. 이 예에서, 전환 시스템(172)으로부터 수신된 암호화된 전환 값은 집계 서버(180-B)의 공개키(Sc)를 사용하여 암호화되고, 그 결과는 집계 서버(180-A)의 공개키(Si)를 사용하여 암호화된다. 이 3회 암호화된 전환 값은 또한 세번 째 암호화가 확률적일 수 있으므로 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)에 의해 정의된 2회 암호화된 전환 값(ConversionData2)이 복구된다. 집계 서버(180-B)는 이 2회 암호화된 전환 값(ConversionData2)을 로컬로 유지할 수 있다.
암호화된 노출 및 전환 데이터가 결합되고 필터링된다(808). 예를 들어, 각 집계 서버(180-B)는 데이터를 결합하고 필터링할 수 있다. 이 예에서, 집계 서버(180-A)는 프로세스(300)의 단계(314)와 유사하지만 추가 전환 값(ConversionValue2)이 있는 블라인드 서명된 키(Ħ(BlindlySignedKey)를 사용하여 전환 값(ConversionValue2), 전환 데이터(ConversionData3) 및 노출 데이터(ImpressionData3)를 결합할 수 있다. 그런 다음 집계 서버(180-A)는 프로세스(300)의 단계(314)에서와 유사하게 임계값에 기초하여 결합된 레코드를 필터링할 수 있다. 예를 들어, 집계 서버(180-A)는 임계값을 충족하거나 초과하는데 실패한 다수의 고유 블라인드 서명된 키(Ħ(BlindlySignedKey))를 갖는 {ConversionValue2, ConversionData3, ImpressionData3}의 결합된 레코드를 데이터 세트로부터 필터링할 수 있다.
각각의 나머지 결합된 레코드에 대해, 집계 서버(180-A)는 키/값 쌍을 생성할 수 있다. 이 예에서, 키는 블라인드 서명된 키(Ħ(BlindlySignedKey)), 3회 암호화된 노출 데이터(ImpressionData3) 및 3회 암호화된 전환 데이터(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)로부터 수신된 키/값 쌍과 이 데이터를 결합할 수 있다.
2회 암호화된 전환 값(ConversionValue2)이 복호화된다(810). 집계 서버(180-B)는 공개키(Sc)에 대응하는 개인키를 사용하여 2회 암호화된 전환값(ConversionValue2)을 복호화하여, 상술한 바와 같이 보고 시스템(190)의 공개 키를 이용하여 1회 암호화된 1회 암호화된 전환 값(ConversionValue1)를 복구할 수 있다. 집계 서버(180-B)는 1회 암호화된 각 전환 값(ConversionValue1)과 그의 키(CrytpoHash(H(Key), ImpressionData3, ConversionData3))를 집계 서버(180-A)로 전송할 수 있다.
총 전환 값이 결정된다(812). 각 집계 서버(180-A, 180-B)는 동일한 노출 데이터(ImpressionData3) 및 전환 데이터(ConversionData3)를 갖는 각 레코드에 대한 총 전환 값을 결정할 수 있다. 즉, ImpressionData3와 ConversionData3의 각각의 결합된 조합에 대해, 집계 서버(180-A, 180-B)는 전환 값들(ConversionValue1)의 합을 독립적으로 결정할 수 있다. 전환값들은 암호화되어 있으므로, 그 합은 H(∑V,report_domain)와 같이 결정될 수 있다.
총 전환 값을 포함하는 노출 및 전환 데이터가 보고 시스템으로 전송된다(814). 예를 들어, 집계 서버(180-A 및 180-B)는 단계(318-328)에서 설명된 MPC 프로세스를 사용하여 노출 및 전환 데이터를 복호화할 수 있다. 그런 다음 각 집계 서버(180-A)는 각 노출 및 전환 쌍에 대해, 노출 데이터(ImpressionData1), 전환 데이터(ConversionData1), 전환 횟수의 카운트(count) 및 전환 값(H(∑V, report_domain)) … (H(∑Vn,report_domain))을 포함하는 보고를 생성하여 보고 시스템(190)으로 전송할 수 있다. 예를 들어, 합산된 값이 여러 개 있을 수 있는데, 하나는 전환 값들의 합이고 다른 하나는 전환 값들의 제곱합, 예를 들어, V2 = V1 2인 경우 합(V1) 및 합(V2))이다.
보고 시스템(190)은 두 개의 집계 서버(180-A, 180-B)로부터의 두 개의 보고를 비교하여 그들이 매칭하는지 확인할 수 있다. 그들이 매칭하다면, 보고 시스템(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)는 예를 들어 Diffie-Hellman 프로토콜을 사용하여 집계 서버(180-A 및 180-B)가 공동으로 도출하는 공통 시드를 사용하여 난수 생성기를 초기화함으로써 일관된 노이즈(noisek)를 생성할 수 있다.
교차-디바이스 측정을 위한 추가 사용자 프라이버시 보호
전술한 바와같이, 다수의 디바이스에 걸쳐 노출 및 전환 카운트와 전환 값을 결정할 때, 고유 식별자(ID)는 사용자에 관한 정보이거나 이러한 정보, 예를 들어, 사용자 이메일 주소의 암호화 해시에 기초할 수 있다. 노출 데이터(ImpressionData3p) 및 전환 데이터(ConversionData3p)에 대해 위에서 설명한 확률적 암호화를 사용하여, 집계 서버(180-A 및 180-B)는 사용자에 대한 일부 전환 횟수를 결정할 수 있지만 노출 또는 전환 자체에 대해서는 아무것도 결정할 수 없다. 그러나, 집계 서버(180-A 및 180-B)는 사용자가 어떤 온라인 활동을 하고 있음을 검출할 수 있다.
도 9는 집계된 전환 데이터를 결정하기 위한 예시적인 프로세스(900)를 도시하는 흐름도이다. 프로세스(900)는 집계 서버(180-A, 180-B)에 의해 수행될 수 있다.
노출 및 전환 데이터가 수신된다(902). 예를 들어, 위에서 설명된 바와 같이, 집계 서버(180-A)는 노출 데이터를 수신할 수 있고 집계 서버(180-B)는 클라이언트 디바이스로부터, 예를 들어, 일괄로 전환 데이터를 수신할 수 있다.
이 예에서, 노출 데이터는 디지털 컴포넌트의 각 노출에 대해 {H(CryptoHash(ID, dc_destination, report_domain), Stime), ImpressionData3p}의 형태일 수 있다. 이 예에서, 고유 식별자(ID), 목적지(dc_destination) 및 보고 도메인의 암호 해시는 부가 동형 공개키 암호화 기술(H) 및 시간 서버(192)의 공개키(Stime)를 사용하여 암호화된다. 이 암호화된 암호화 해시는 노출 결합 키 역할을 한다. 전환 데이터는 또한 도 2를 참조하여 전술한 바와 같이 암호화될 수 있는 3회 암호화된 노출 데이터(ImpressionData3p)를 포함한다.
전환 데이터는 디지털 컴포넌트의 각 전환에 대해 {H(CryptoHash(ID, dc_destination, report_domain), Stime), ConversionData3p}의 형태일 수 있다. 이 예에서, 고유 식별자(ID), 목적지(dc_destination) 및 보고 도메인의 암호 해시는 부가 동형 공개키 암호화 기술(H) 및 시간 서버(192)의 공개키(Stime)를 사용하여 암호화된다. 이 암호화된 암호화 해시는 전환 결합 키 역할을 한다. 전환 데이터는 또한 도 2를 참조하여 전술한 바와 같이 암호화될 수 있는 3회 암호화된 전환 데이터(ConversionData3p)를 포함한다. 시간 서버(192)와 공모하지 않고, 집계 서버(180-A 또는 180-B)는 모두 암호화 기술(H)의 확률적 특성으로 인해 암호화 해시(ID, dc_destination, report_domain)를 복구하거나 H(CryptoHash(…))를 이해할 수 없다.
논스가 선택된다(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). 수신된 암호화된 결합 키 및 3회 암호화된 전환 데이터{H(CryptoHash(ID, dc_destination, report_domain) + noncei, Stime), ImpressionData3p}의 각 쌍에 대해, 집계 서버(180-A)는 결합 키와 전환 데이터를 재암호화한다. 프로세스(300)의 단계(310)를 참조하여 전술한 바와 같이, 집계 서버(180-A)는 개인키(공개키(Si)에 대응하는 개인키)를 사용하여 3회 암호화된 전환 데이터(ConversionData3p)를 복호화하여 2회 암호화된 전환 데이터(ConversionData2)를 복구할 수 있다. 그런 다음 집계 서버(180-A)는 선택된 암호화 키(Keyi2)를 사용하여 2회 암호화된 전환 데이터(ConversionData2)를 재암호화할 수 있다.
집계 서버(180-A)는 또한 암호화된 결합 키 및 3회 암호화된 전환 데이터(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)에 대응하는 개인키)를 사용하여 3회 암호화된 노출 데이터(ImpressionData3p)를 복호화하여 2회 암호화된 노출 데이터(ImpressionData2)를 복구할 수 있다. 그런 다음 집계 서버(180-B)는 선택된 암호화 키(Keyc2)를 사용하여 2회 암호화된 노출 데이터(ImpressionData2)를 재암호화할 수 있다.
집계 서버(180-B)는 또한 암호화된 결합 키 및 3회 암호화된 노출 데이터 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(필드 프로그래밍 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)를 포함할 수 있다. 장치는 또한 하드웨어 외에도 문제의 컴퓨터 프로그램에 대한 실행 환경을 만드는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스 플랫폼 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 다른 컴퓨팅 모델 인프라를 구현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 또는 해석 언어, 선언적 또는 절차적 언어를 포함하여 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램이나 모듈, 컴포넌트, 서브 루틴, 객체 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하여 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그럴 필요는 없다. 프로그램은 다른 프로그램 또는 데이터(예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트)를 포함하는 파일의 일부, 해당 프로그램 전용 단일 파일 또는 다수의 조정 파일(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 다수의 사이트에 분산되고 통신 네트워크로 상호 연결된 다수의 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스 및 논리 흐름은 입력 데이터에 대해 동작하여 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)와 같은 특수 목적 논리 회로에 의해 수행될 수 있고 장치 또한 이들로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예로서 범용 및 특수 목적의 마이크로 프로세서 모두를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령과 데이터를 수신한다. 컴퓨터의 필수 엘리먼트는 명령들에 따라 동작을 수행하기 위한 프로세서와 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광 자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 데이터를 전송하거나 둘 모두를 하도록 작동 가능하게 결합된다. 그러나 컴퓨터에는 이러한 디바이스들이 필요하지 않다. 더욱이, 컴퓨터는 다른 디바이스(예를 들어, 모바일 전화기, PDA(personal digital assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기 또는 휴대용 저장 디바이스(예를 들어, 범용 직렬 버스(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 공개키를 사용하여 암호화된 암호화된 노출 데이터 및 (iii) 노출이 발생된 시간을 나타내는 암호화된 노출 시간 데이터를 포함하는 노출 데이터를 수신하는 단계와;
    제2 집계 서버에 의해 다수의 클라이언트 디바이스의 적어도 일부 각각으로부터, 클라이언트 디바이스에 의해 기록된 각 전환에 대해, (i) 전환이 발생된 클라이언트 디바이스 또는 클라이언트 디바이스의 애플리케이션에 대한 제2 고유 식별자에 기초하는 제2 결합 키, (ii) 제1 공개키 및 제2 공개키를 사용하여 암호화된 암호화된 전환 데이터를 포함하는 제2 값, 및 (iii) 전환이 발생된 시간을 나타내는 암호화된 전환 시간 데이터를 포함하는 전환 데이터를 수신하는 단계와;
    제1 집계 서버 및 제2 집계 서버에 의해, 암호화된 노출 데이터 및 암호화된 전환 데이터의 시간순 시퀀스를 생성하고 암호화된 노출 데이터 및 암호화된 전환 데이터를 복호화하기 위해 다자간(multi-party) 계산 프로세스를 수행하는 단계와, 상기 다자간 계산 프로세스를 수행하는 단계는,
    제1 결합 키 및 제2 결합 키에 기초하여, 암호화된 전환 데이터 및 대응하는 암호화된 노출 데이터의 그룹을 식별하는 단계;
    각 시간순 시퀀스에 대해, 암호화된 노출 시간 데이터 및 암호화된 전환 시간 데이터에 기초하여 암호화된 전환 데이터 및 대응하는 암호화된 노출 데이터를 정렬하는 단계; 및
    제1 공개키에 대응하는 제1 개인키 및 제2 공개키에 대응하는 제2 개인키를 사용하여 암호화된 노출 데이터 및 전환 데이터의 각 시퀀스에 대한 노출 데이터 및 전환 데이터를 다단계(multiple stages)로 복호화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 암호화된 노출 시간 데이터는,
    제1 공개키 및 제2 공개키를 사용하여 암호화되는 것을 특징으로 하는 컴퓨터 구현 방법.
  3. 제2항에 있어서,
    상기 암호화된 노출 시간 데이터는,
    노출이 발생된 시간과 노출이 발생된 클라이언트 디바이스의 클럭 스큐(skew)의 합의 암호화된 버전을 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  4. 제3항에 있어서,
    노출이 발생된 시간과 노출이 발생된 클라이언트 디바이스의 클럭 스큐의 합은 동형의 부가적인 확률적(homomorphic, additive, probabilistic) 공개키 암호화를 사용하여 암호화되는 것을 특징으로 하는 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 암호화된 전환 시간 데이터는,
    제1 공개키 및 제2 공개키를 사용하여 암호화되는 것을 특징으로 하는 컴퓨터 구현 방법.
  6. 제5항에 있어서,
    상기 암호화된 전환 시간 데이터는,
    전환이 발생된 시간과 전환이 발생된 클라이언트 디바이스의 클럭 스큐의 합의 암호화된 버전을 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  7. 제6항에 있어서,
    전환이 발생된 시간과 전환이 발생된 클라이언트 디바이스의 클럭 스큐의 합은 동형의 부가적인 확률적 공개키 암호화를 사용하여 암호화되는 것을 특징으로 하는 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    암호화된 노출 데이터 및 암호화된 전환 데이터의 각 시간순 시퀀스에 대해, 암호화된 노출 데이터 및 암호화된 전환 데이터의 시간순 시퀀스에 적어도 부분적으로 기초하여 암호화된 노출 데이터의 각 노출에 암호화된 전환 데이터의 전환에 대한 크레딧을 귀속시키는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 다자간 계산 프로세스를 수행하는 단계는,
    각 노출에 대해:
    제1 집계 서버에 의해, 제1 결합 키를 암호화하는 단계;
    제1 집계 서버에 의해 제2 집계 서버로, 암호화된 제1 결합 키, 암호화된 노출 데이터 및 암호화된 노출 시간 데이터를 포함하는 튜플을 전송하는 단계;
    각 전환에 대해:
    제2 집계 서버에 의해, 제2 결합 키를 암호화하는 단계;
    제2 집계 서버에 의해 제1 집계 서버로, 암호화된 제2 결합 키, 암호화된 전환 데이터 및 암호화된 전환 시간 데이터를 포함하는 튜플을 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  10. 제9항에 있어서,
    상기 다자간 계산 프로세스를 수행하는 단계는,
    제1 집계 서버에 의해, 각각의 암호화된 각 전환 시간 데이터를 복호화하는 단계;
    제1 집계 서버에 의해, 제1 시간 스큐 값을 결정하는 단계;
    전환이 발생된 시간, 전환이 발생된 클라이언트 디바이스의 클럭 스큐 및 제1 시간 스큐 값의 합을 암호화함으로써 암호화된 제2 전환 시간 데이터를 생성하는 단계;
    제1 집계 서버에 의해, 각각의 고유한 암호화된 전환 데이터에 대해, 고유한 제2 결합 키의 수를 결정하는 단계;
    제1 집계 서버에 의해 수신된 암호화된 전환 데이터 세트로부터, 고유한 제2 결합 키의 수가 임계값 미만인 각 암호화된 전환 데이터를 필터링하는 단계; 및
    암호화된 전환 데이터 세트의 나머지 암호화된 전환 데이터 각각에 대해, 암호화된 전환 데이터에 대한 제2 결합 키, 암호화된 전환 데이터 및 임호화된 제2 전환 시간 데이터를 포함하는 데이터의 튜플을 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  11. 제10항에 있어서,
    상기 다자간 계산 프로세스를 수행하는 단계는,
    제2 집계 서버에 의해, 각각의 암호화된 노출 시간 데이터를 복호화하는 단계;
    제2 집계 서버에 의해, 제2 시간 스큐 값을 결정하는 단계;
    노출이 발생된 시간, 노출이 발생된 클라이언트 디바이스의 클럭 스큐 및 제2 시간 스큐 값의 합을 암호화함으로써 암호화된 제2 노출 시간 데이터를 생성하는 단계;
    제2 집계 서버에 의해, 각각의 고유한 암호화된 전환 데이터에 대해, 고유한 제1 결합 키의 수를 결정하는 단계;
    제2 집계 서버에 의해 수신된 암호화된 노출 데이터 세트로부터, 고유한 제1 결합 키의 수가 임계값 미만인 각 암호화된 노출 데이터를 필터링하는 단계; 및
    암호화된 노출 데이터 세트의 나머지 암호화된 전환 데이터 각각에 대해, 암호화된 노출 데이터에 대한 제1 결합 키, 암호화된 전환 데이터 및 임호화된 제2 노출 시간 데이터를 포함하는 데이터의 튜플을 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  12. 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 제1항 내지 제11항 중 어느 한 항의 방법의 단계들을 수행하게 하는 명령들을 포함하는 하나 이상의 컴퓨터 판독 가능 저장 매체.
  13. 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 제1항 내지 제11항 중 어느 한 항의 방법의 단계들을 수행하게 하는 명령들을 포함하는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
  14. 사기 방지 시스템으로서, 상기 시스템은,
    하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 제1항 내지 제11항 중 어느 한 항의 방법의 단계들을 수행하게 하는 명령들을 포함하는 하나 이상의 컴퓨터 판독 가능 저장 매체를 갖는 데이터 처리 시스템을 포함하는 것을 특징으로 하는 사기 방지 시스템.
KR1020217040459A 2020-02-06 2020-12-14 시간 데이터의 획득 또는 조작을 방지하면서 네트워크 데이터의 시퀀스 생성 KR102639227B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL272521A IL272521B2 (en) 2020-02-06 2020-02-06 Creating sequences of network data while preventing the acquisition or manipulation of time data
IL272521 2020-02-06
PCT/US2020/064806 WO2021158287A1 (en) 2020-02-06 2020-12-14 Generating sequences of network data while preventing acquisition or manipulation of time data

Publications (2)

Publication Number Publication Date
KR20220006616A KR20220006616A (ko) 2022-01-17
KR102639227B1 true KR102639227B1 (ko) 2024-02-21

Family

ID=77199396

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217040459A KR102639227B1 (ko) 2020-02-06 2020-12-14 시간 데이터의 획득 또는 조작을 방지하면서 네트워크 데이터의 시퀀스 생성

Country Status (7)

Country Link
US (2) US11757619B2 (ko)
EP (2) EP4293557A3 (ko)
JP (1) JP7201848B2 (ko)
KR (1) KR102639227B1 (ko)
CN (1) CN114223175A (ko)
IL (1) IL272521B2 (ko)
WO (1) WO2021158287A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102525981B1 (ko) * 2020-10-06 2023-04-26 주식회사 카카오 어플리케이션에서 제공되는 광고의 전환 추적 방법 및 장치
CN114840867B (zh) * 2022-07-01 2022-09-20 北京融数联智科技有限公司 基于可交换加密数据混淆的数据查询方法、装置和系统
CN115544579B (zh) * 2022-11-24 2023-03-28 北京融数联智科技有限公司 一种双随机数据混淆查询方法、装置和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017156996A (ja) 2016-03-02 2017-09-07 株式会社日立製作所 データ集計システム、データ集計方法、及び、データ集計装置
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 (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101024768B1 (ko) * 2003-04-24 2011-03-24 파나소닉 주식회사 파라미터 생성 장치, 암호 시스템, 복호 시스템, 암호장치, 복호 장치, 암호화 방법, 복호화 방법, 및 그프로그램
US8001055B2 (en) * 2006-02-21 2011-08-16 Weiss Kenneth P Method, system and apparatus for secure access, payment and identification
KR100870027B1 (ko) * 2007-03-12 2008-11-24 권요한 암호화된 공간정보데이터의 복호화시 로그 저장 시스템 및방법
US8930706B2 (en) * 2010-06-30 2015-01-06 Antonio Pujante Cuadrupani Method, device and network for authenticating the position of a navigation receiver
US9461876B2 (en) * 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction
CN107864677B (zh) * 2015-07-22 2022-05-27 爱维士软件有限责任公司 内容访问验证系统和方法
WO2018031597A1 (en) * 2016-08-08 2018-02-15 Google Llc Systems and methods for data aggregation based on one-time pad based sharing
US10277395B2 (en) * 2017-05-19 2019-04-30 International Business Machines Corporation Cryptographic key-generation with application to data deduplication
US11368318B2 (en) * 2018-07-31 2022-06-21 Massachusetts Institute Of Technology Group identification system
DE102020105051A1 (de) * 2020-02-26 2021-08-26 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zur Anonymisierung von fahrzeugbezogenen Daten für Analysezwecke

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017156996A (ja) 2016-03-02 2017-09-07 株式会社日立製作所 データ集計システム、データ集計方法、及び、データ集計装置
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
IL272521A (en) 2021-08-31
EP4293557A3 (en) 2024-03-13
US20230421353A1 (en) 2023-12-28
US20220239464A1 (en) 2022-07-28
WO2021158287A1 (en) 2021-08-12
EP3966988A1 (en) 2022-03-16
EP3966988B1 (en) 2023-11-01
KR20220006616A (ko) 2022-01-17
IL272521B2 (en) 2023-05-01
US11757619B2 (en) 2023-09-12
EP4293557A2 (en) 2023-12-20
CN114223175A (zh) 2022-03-22
IL272521B1 (en) 2023-01-01
JP2022532950A (ja) 2022-07-20
JP7201848B2 (ja) 2023-01-10

Similar Documents

Publication Publication Date Title
KR102639227B1 (ko) 시간 데이터의 획득 또는 조작을 방지하면서 네트워크 데이터의 시퀀스 생성
JP7401624B2 (ja) 暗号化されたネットワーク値の集約
JP7399236B2 (ja) 複数の集約サーバを使用してデータ操作を防止すること
US11736459B2 (en) Preventing fraud in aggregated network measurements
US12010106B2 (en) Preventing fraud in aggregated network measurements
US11863690B2 (en) Preventing data manipulation and protecting user privacy in telecommunication network measurements

Legal Events

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