KR102390938B1 - 브라우저 쿠키를 대체하는 도메인 특정 브라우저 식별자 - Google Patents

브라우저 쿠키를 대체하는 도메인 특정 브라우저 식별자 Download PDF

Info

Publication number
KR102390938B1
KR102390938B1 KR1020207029517A KR20207029517A KR102390938B1 KR 102390938 B1 KR102390938 B1 KR 102390938B1 KR 1020207029517 A KR1020207029517 A KR 1020207029517A KR 20207029517 A KR20207029517 A KR 20207029517A KR 102390938 B1 KR102390938 B1 KR 102390938B1
Authority
KR
South Korea
Prior art keywords
content provider
content
client device
identifier
provider
Prior art date
Application number
KR1020207029517A
Other languages
English (en)
Other versions
KR20200131311A (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 KR20200131311A publication Critical patent/KR20200131311A/ko
Application granted granted Critical
Publication of KR102390938B1 publication Critical patent/KR102390938B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0421Anonymous communication, i.e. the party's identifiers are hidden from the other party or parties, e.g. using an anonymizer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6263Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0277Online advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • H04L67/22
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles

Abstract

본 개시는 때때로 "읽기 전용 쿠키"("ROC")로 지칭되는 안전하고, 사용자에게 투명하며, 매우 효율적인 콘텐츠 제공자-특정 식별자("CPSID")를 제공한다. 이러한 콘텐츠 제공자-특정 식별자는 클라이언트 디바이스에 의해 생성되고 콘텐츠 제공자의 공개 키로 암호화되어, 서드 파티가 매치를 간접적으로 식별하는 것을 방지하고, 제공자 측 쿠키 매치 테이블 및 리소스 집약적 추적 통신의 필요성을 제거할 수 있다. 콘텐츠 제공자-특정 식별자의 생성은 사용자 정책에 의해 제어될 수 있어서, 식별자는 예를 들어 도메인 내의 미리 결정된 주소; 화이트리스트 상의 콘텐츠 제공자(예: 사용자가 명시적 동의를 제공한 콘텐츠 제공자); 및/또는 블랙리스트 상에 없는 콘텐츠 제공자(예: 사용자가 명시적 동의를 거부한 콘텐츠 제공자)만 검색할 수 있는 준수 서비스 약관(ToS)을 가진 콘텐츠 제공자에 대해서만 생성된다.

Description

브라우저 쿠키를 대체하는 도메인 특정 브라우저 식별자
브라우저 쿠키 또는 쇼트 디바이스, 사용자 또는 세션-특정 식별자는 웹 페이지 퍼블리셔, 광고주 또는 다른 그러한 엔티티와 같은 콘텐츠 제공자에 대해 디바이스, 사용자 또는 세션을 고유하게(또는 반-고유하게) 식별하는데 사용된다. 이러한 쿠키는 일반적으로 콘텐츠 제공자에 의해, 예를 들어 제1 세션 또는 로그인 프로세스 동안 생성되고, 브라우저 또는 클라이언트 디바이스의 다른 애플리케이션의 후속 요청에서 제공된다. 그 다음 퍼블리셔는 각 요청을 동일한 식별자(및 암시적으로 동일한 디바이스, 사용자 또는 세션)와 연관시켜 콘텐츠 선택을 커스터마이징하게 한다.
그러나, 일반적인 브라우저 쿠키는 몇 가지 중요한 단점이 있다. 사용자는 사용자가 식별되거나 서드 파티에 의해 추적됨을 인식할 필요없이, 웹사이트 내에 포함된 콘텐츠를 제공하는 서드 파티 콘텐츠 제공자는 쿠키를 제공하여 브라우저를 추적할 수 있다(예: 브라우저 주소바에 표시된 주소는 메인페이지의 소스를 식별할 뿐, 내장 콘텐츠의 주소를 필요적으로 식별하지 않기 때문). 따라서, 사용자가 잠재적인 프라이버시 문제를 식별하고, 사용자의 개인 정보의 프라이버시를 제어하는 것이 어려울 수 있다.
또한 일반적인 브라우저 쿠키는 도메인 특정적이다. 일부 보안 조치를 제공하기 위해, 브라우저 및 기타 애플리케이션 제조자는 콘텐츠 제공자가 다른 도메인의 다른 콘텐츠 제공자가 생성한 쿠키를 읽거나 수신하지 못하게 한다. 이 문제를 해결하기 위해, 합법적인 이유와 불법적인 이유 모두에서, 콘텐츠 제공자는 쿠키 매치를 사용하여, 한 콘텐츠 제공자의 쿠키와 다른 콘텐츠 제공자의 쿠키 간의 연관을 생성한다. 쿠키 매칭의 한 구현예는 한 엔터티에 의해 수신되고 다른 엔터티로 리디렉션된 요청으로, 페이지 내에 작은 내장 콘텐츠 아이템을 사용한다(예: "추적 픽셀"이라고 하는 대응하는 쿠키의 전송과 함께, 브라우저가 이미지를 요청하게 하는 1픽셀 x 1픽셀의 "보이지 않는" 이미지). 그 결과 픽셀을 "렌더링"하기 위한 두 번의 왕복 통신 교환이 발생한다: 제1 엔터티에 대한 요청과 리디렉션 주소를 사용한 응답, 제2 엔터티에 대한 요청 및 응답. 10개 이상의 내장 추적 픽셀이 포함된 일반적인 페이지의 경우,이러한 통신을 수행하는데 상당한 시간이 걸릴 수 있다. 통신이 완료되기 전에 사용자가 페이지를 벗어나면 매치가 식별되지 않을 수 있다. 결과적으로, 쿠키 매치는 느리고 종종 불완전하며 웹페이지의 렌더링 속도를 늦추고 대역폭을 소비하고 배터리 수명을 줄인다. 또한 쿠키 매치를 통해 서드 파티 엔터티는 사용자가 명시적인 동의를 제공하지 않고 불투명한 방식으로 온라인 행동을 추적할 수 있으며 이는 사용자 프라이버시에 위협이 된다.
본 명세서에 기술된 시스템 및 방법은 "읽기 전용 쿠키"("ROC"라고도 함) 는 안전하고 사용자에게 투명하며 매우 효율적인 콘텐츠 제공자-특정 식별자("CPSID")로 기존 브라우저 쿠키를 대체한다. 이러한 콘텐츠 제공자-특정 식별자는 클라이언트 디바이스에 의해 생성되고 콘텐츠 제공자의 공개 키로 암호화되어, 서드 파티가 매치를 간접적으로 식별하는 것을 방지하고, 사용자 투명성 및 쿠키 사용의 명백한 이해와 감시를 막는 제공자 측 쿠키 매치 테이블 및 리소스 집약적 쿠키 매칭 통신 및 시스템의 필요성을 제거할 수 있다. 콘텐츠 제공자-특정 식별자의 생성은 사용자 정책에 의해 제어될 수 있어서, 식별자는 예를 들어 도메인 내의 미리 결정된 주소; 화이트리스트 상의 콘텐츠 제공자(예: 사용자가 명시적 동의를 제공한 콘텐츠 제공자); 및/또는 블랙리스트 상에 없는 콘텐츠 제공자(예: 사용자가 명시적 동의를 거부한 콘텐츠 제공자)만 검색할 수 있는 준수 서비스 약관(ToS)을 가진 콘텐츠 제공자에 대해서만 생성된다.
콘텐츠 제공자-특정 식별자는 브라우저, 애플리케이션, 디바이스 또는 세션 특정 개인 식별자(디바이스의 다른 사용자와 별개인, 특정한 사용자에 대한 브라우저의 인스턴스에 특정적인 식별자)의 입력 또는 콘텐츠 제공자의 도메인 이름 또는 주소(예: "example.com")로부터 암호화 해시(예를 들어, MD5, SHA256 등과 같은 임의의 적절한 해시 알고리즘)로 생성될 수 있다. 일부 구현예에서, 추가 솔트를 제공하기 위해, 해시 입력은 예를 들어 입력 값과 연결될 수 있는 콘텐츠 제공자-특정 식별자에 대한 생성 시간 또는 만료 시간을 포함할 수 있다. 디바이스 유형 또는 일련 번호, 클록 스큐 시간, 하드웨어 식별자 또는 기타 그러한 데이터와 같은 다른 엔트로피 소스가 유사하게 해시 입력의 복잡성을 증가시키는데 사용될 수 있다. 일부 구현예에서, "만료 시간"은 클라이언트에 의한 자동 재생을 허용하는 콘텐츠 제공자-특정 식별자가 만료되기 전의 주, 월 또는 년 수와 같은 세분화된 값일 수 있다.
다른 구현예에서, 콘텐츠 제공자-특정 식별자는 콘텐츠 제공자(예를 들어 example.com)의 도메인에 의해 키가 지정된 룩업 테이블에 저장된 랜덤하게 생성된 값일 수 있다. 이것은 암호화 해시 결과를 계산하는 것보다 적은 프로세서 리소스를 필요로 할 수 있지만 테이블을 위한 큰 스토리지 공간이 필요할 수 있다.
콘텐츠 제공자-특정 식별자는 암호화된 읽기 전용 쿠키("eROC")를 생성하기 위해 콘텐츠 제공자의 공개 키를 통해 클라이언트 디바이스에 의해 암호화될 수 있다. 일부 구현예에서, 클라이언트 디바이스는 암호화 이전에 생성 타임스탬프 및/또는 난수(예를 들어, 임시 솔트)와 콘텐츠 제공자-특정 식별자를 연결하여 단일 도메인에 대한 결과 eROC가 매우 다양하도록 할 수 있다. 따라서, 의도된 콘텐츠 제공자는 콘텐츠 제공자-특정 식별자를 복호화하고 추출할 수 있고, (예를 들어, 쿠키 매칭을 수행하려는) 다른 콘텐츠 제공자는 그렇게 할 수 없다. 중개자를 통해 클라이언트 디바이스로부터 의도된 콘텐츠 제공자에게 전송하는 동안 eROC를 보호하기 위해, 생성 타임스탬프 및/또는 임시 값을 사용하여 의도된 콘텐츠 제공자가 아닌 다른 사람에게 쓸모 없거나 해독할 수 없는 불안정한 eROC를 생성할 수 있다. 콘텐츠 제공자 간의 데이터 교환을 허용하기 위해, 제1 콘텐츠 제공자는 제2 콘텐츠 제공자에 대한 eROC를 클라이언트 디바이스로부터 요청할 수 있고, 수신된 eROC를 제2 콘텐츠 제공자에게 포워딩할 수 있다. 수신된 쿠키는 제2 콘텐츠 제공자의 공개 키로 암호화되기 때문에, 제1 콘텐츠 제공자는 제2 콘텐츠 제공자의 ROC를 복호화하거나 복구할 수 없지만 대신 eROC를 포워딩하고 연관된 데이터를 요청할 수 있다. 따라서 적절한 eROC를 소유하고 있다는 것은 데이터 교환에 대한 클라이언트 디바이스의 승인을 표시한다. 각 요청은 클라이언트 디바이스를 통과해야 하기 때문에, 클라이언트 디바이스는 프라이버시 및 콘텐츠 제공자 간의 데이터 교환을 제어할 수 있으며, 이러한 전송에 대한 감사 로그 또는 데이터 교환 로그를 생성하여 사용자의 투명성을 높일 수 있다.
이러한 구현예는 본 개시의 범위를 제한하거나 정의하는 것이 아니라 이해를 돕기 위해 언급된다. 특정한 구현예는 다음의 이점들 중 하나 이상을 실현할 수 있다. 기존 브라우저 쿠키를 암호화된 콘텐츠 제공자-특정 식별자로 대체함으로써, 클라이언트 디바이스의 사용자는 교환을 식별하는 투명한 감사 로그로 파트너 콘텐츠 제공자 간의 데이터 교환을 포함한 개인 데이터를 더 잘 제어할 수 있다. 또한 클라이언트 디바이스에서 쿠키 생성 및 암호화를 활용하여 콘텐츠 제공자의 대형 쿠키 매칭 테이블에서 리소스 소비를 방지하여 효율성을 높인다. 쿠키 매칭을 위한 추적 픽셀 및 이중 왕복 통신을 제거하면 효율성이 향상되고 사용자 프라이버시를 더 잘 보호하여, 클라이언트 브라우저 또는 애플리케이션이 더 적은 배터리 및 프로세서 사용으로 페이지를 더 빠르게 렌더링할 수 있다.
하나 이상의 구현예들의 세부 내용들이 첨부 도면과 아래의 설명에서 기술된다. 본 개시의 다른 구성들, 양태들 및 이점들은 설명, 도면 및 청구항으로부터 명백해질 것이다.
도 1a는 일부 구현예에 따른, 데이터 교환을 위한 네트워크 및 디바이스 환경의 블록도를 도시한다.
도 1b는 일부 구현예에 따른, 종래의 쿠키 교환 및 매칭을 예시하는 흐름도이다.
도 1c는 일부 구현예에 따른, 예시적 쿠키 매칭 테이블의 예시이다.
도 1d는 일부 구현예에 따른, 콘텐츠 제공자-특정 식별자(읽기 전용 쿠키 또는 "ROC")를 사용하는 디바이스 식별자 교환을 도시하는 흐름도이다.
도 2는 콘텐츠 제공자-특정 식별자와 함께 사용하기 위한 컴퓨팅 디바이스의 구현예를 도시하는 블록도이다. 그리고
도 3a 및 3b는 콘텐츠 제공자-특정 식별자를 사용하는 데이터 교환 방법의 구현예를 도시하는 흐름도이다.
다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 구성요소를 표시한다.
브라우저 쿠키 또는 쇼트 디바이스, 사용자 또는 세션-특정 식별자는 웹 페이지 퍼블리셔, 광고주 또는 다른 그러한 엔티티와 같은 콘텐츠 제공자에 대해 디바이스, 사용자 또는 세션을 고유하게(또는 반-고유하게) 식별하는데 사용된다. 이러한 쿠키는 일반적으로 콘텐츠 제공자에 의해, 예를 들어 제1 세션 또는 로그인 프로세스 동안 생성되고, 브라우저 또는 클라이언트 디바이스의 다른 애플리케이션의 후속 요청에서 제공된다. 그 다음 퍼블리셔는 각 요청을 동일한 식별자(및 암시적으로 동일한 디바이스, 사용자 또는 세션)와 연관시켜 콘텐츠 선택을 커스터마이징하게 한다.
예를 들어, 도 1a는 일부 구현예에 따른, 데이터 교환을 위한 네트워크 및 디바이스 환경의 블록도를 도시한다. 도시된 바와 같이, 클라이언트 디바이스(100)는 네트워크(106, 106')를 통해 일반적으로 콘텐츠 서버(들) 또는 콘텐츠 제공자(들)(104)로 지칭되는 하나 이상의 콘텐츠 서버(104-104N)와 통신할 수 있다. 클라이언트 디바이스(100)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대용 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨터, 임베디드 컴퓨터, 스마트 텔레비전, 콘솔, 사물 인터넷(IoT) 디바이스 또는 스마트 기기를 포함한 임의의 유형 및 형태의 컴퓨팅 디바이스 또는 다른 유형 및 형태의 컴퓨팅 디바이스를 포함할 수 있다. 많은 구현예에서, 클라이언트 디바이스(100)는 웹브라우저, 소셜 미디어 애플리케이션, 비디오 게임 또는 다른 그러한 애플리케이션과 같은 콘텐츠를 요청하기 위한 애플리케이션을 실행할 수 있다. 클라이언트 디바이스(100)는 콘텐츠를 요청할 수 있으며, 콘텐츠 제공자가 대응하는 디바이스 또는 디바이스의 사용자에 대한 맞춤형 콘텐츠를 선택할 수 있도록 디바이스 식별자, 쿠키 또는 기타 그러한 식별자를 제공할 수 있다.
네트워크(106, 106')는 근거리 통신망(LAN), 인터넷과 같은 광역 네트워크(WAN), 위성 네트워크, 케이블 네트워크, 광대역 네트워크, 광섬유 네트워크, 마이크로파 네트워크, 셀룰러 네트워크, 무선 네트워크, 또는 이들 또는 다른 그러한 네트워크의 조합을 포함하는 네트워크의 유형 및 형태를 포함할 수 있다. 네트워크(106, 106')는 동일한 유형의 네트워크이거나 상이한 유형일 수 있으며, 게이트웨이, 모뎀, 방화벽, 라우터, 스위치 등을 포함하는 복수의 추가 디바이스(도시되지 않음)를 포함할 수 있다. 네트워크(106, 106')는 또한 네트워크(106, 106') 내에서 데이터를 수신 및/또는 전송하도록 구성된 임의의 수의 컴퓨팅 디바이스(예를 들어, 컴퓨터, 서버, 라우터, 네트워크 스위치 등)를 포함할 수 있다. 네트워크(106, 106')는 임의의 수의 고정 배선 및/또는 무선 연결을 더 포함할 수 있다. 클라이언트 디바이스(100)는(예를 들어, 광섬유 케이블, CAT5 케이블 등을 통해) 배선된 송수신기와 무선으로(예를 들어, WiFi, 셀룰러, 라디오 등을 통해) 네트워크(106, 106') 내 다른 컴퓨팅 디바이스들과 통신할 수 있다. 일부 구현예에서, 네트워크(106, 106')는 단일 물리적 머신에 의해 실행되는 복수의 가상 머신 사이의 가상 네트워크와 같은 가상 네트워크 또는 물리적으로 이동 가능한 미디어를 통한 데이터의 오프라인 전송(예: Sneakernet, 테이프 미디어, CD-ROM, 플래시 미디어, 외장 하드 드라이브, 플로피 디스크 등을 통한 데이터 전송)과 같은 추상적 네트워크이거나 이를 포함할 수 있다.
많은 구현예에서, 통신은 중개 서버(102)를 통해 흐를 수 있으며, 이는 풀 또는 복수의 이용 가능한 제공자로부터 콘텐츠 제공자를 선택하도록 서비스할 수 있다. 예를 들어, 일부 구현예에서, 중개 서버(102)는 클라이언트 디바이스(100)로부터 콘텐츠에 대한 요청을 수신할 수 있고, 콘텐츠 제공자들(104) 중에서 콘텐츠 제공자를 선택하여 요청된 콘텐츠를 제공할 수 있다. 일부 구현예에서, 이러한 선택은 로드 밸런싱 알고리즘, 경매 알고리즘(예를 들어, 콘텐츠를 제공할 기회에 입찰하는 제공자와 함께) 등을 통해 이루어질 수 있다. 따라서, 중개 서버(102)는 교환 서버, 로드 밸런서, 경매 제공자 또는 임의의 기타 그러한 용어로 지칭될 수 있다. 네트워크(106, 106 ') 사이에 도시되어 있지만, 많은 구현예에서, 중개 서버(102)는 콘텐츠 서버(104)와 동일한 네트워크 세그먼트에 배치될 수 있다.
중개 서버(102) 및 콘텐츠 서버(104)는 데스크톱 컴퓨터, 서버, 워크 스테이션, 랩톱 컴퓨터, 휴대용 컴퓨터, 임베디드 컴퓨터 또는 임의의 유형 및 형태의 컴퓨팅 디바이스 또는 임의의 기타 유형 및 형태의 컴퓨팅 디바이스를 포함할 수 있다. 많은 구현예에서, 중개 서버(102) 및/또는 콘텐츠 서버(104)는 하나 이상의 물리적 컴퓨팅 디바이스에 의해 실행되는 가상 머신을 포함할 수 있으며, 서버 팜, 클러스터 또는 디바이스의 클라우드로 구성될 수 있다.
상기 논의된 바와 같이, 쿠키는 맞춤형 콘텐츠를 제공하기 위해 사용될 수 있다. 예를 들어, 콘텐츠에 대한 요청을 발행할 때, 클라이언트 디바이스(100)는 디바이스 식별자 또는 쿠키를 중개 서버(102)에 제공할 수 있다. 클라이언트 프라이버시를 유지하기 위해, 일부 구현예에서, 중개 서버(102)는 쿠키를 콘텐츠 서버(들)(104)로 포워딩하지 않을 수 있고; 오히려, 중개 서버(102)는 각 콘텐츠 서버(104) 및 클라이언트 디바이스(100)의 쿠키에 대한 식별자의 매칭 테이블을 유지할 수 있다. 쿠키를 수신하면, 중개 서버(102)는 매칭 테이블에서 쿠키를 검색하고, 각 콘텐츠 제공자에 대한 식별자를 검색할 수 있다; 그 후 중개 서버(102)는 콘텐츠에 대한 요청과 함께 콘텐츠 제공자 식별자를 각 콘텐츠 제공자에게 전송할 수 있다.
예를 들어, 도 1b는 일부 구현예에 따른, 종래의 쿠키 교환 및 매칭을 예시하는 흐름도이다. 단계 120에서, 클라이언트 디바이스(100)는 콘텐츠 아이템을 요청하고 디바이스, 사용자 또는 세션에 대응하는 디바이스 식별자 또는 쿠키를 중개 서버(102)에 제공할 수 있다. 단계 122에서, 중개 서버(102)는 수신된 쿠키를 각 콘텐츠 서버(104)에 대한 쿠키에 매칭시킬 수 있다. 단계 124에서, 중개 서버는 콘텐츠 서버(104)에 대응하는 쿠키 및 콘텐츠에 대한 요청을 각 콘텐츠 서버(104)에 전송할 수 있다(따라서, 하나의 전송만 도시되지만 많은 구현예에서, 많은 요청이 단계 124에서 직렬 또는 병렬로 전송될 수 있음). 단계 126에서, 각 콘텐츠 서버(104)는 콘텐츠 서버 식별자를 사용하여 맞춤형 콘텐츠를 선택할 수 있고, 단계 128에서 콘텐츠를 중개 서버에 제공할 수 있다. 그 다음 중개 서버(102)는 단계(130)에서 하나(예를 들어, 일부 구현예에서 제1 수신된 콘텐츠) 또는 수신된 콘텐츠 모두를 클라이언트 디바이스에 포워딩할 수 있다.
설명된 구현예는 브라우저 쿠키를 사용하여 맞춤형 콘텐츠를 제공하는 한 가지 방법일 뿐이며, 다른 많은 유사한 구현예도 가능하다. 예를 들어, 일부 구현예에서, 중개 서버는 대응하는 콘텐츠 서버 식별자와 함께 콘텐츠 서버(104)에 요청을 전송할 수 있고, 하나 이상의 콘텐츠 서버(104)는 콘텐츠를 클라이언트 디바이스에 제공할 기회에 대한 입찰로 응답할 수 있다. 중개 서버(102)는 낙찰을 선택하고 선택된 콘텐츠를 단일 서버로부터 요청할 수 있다.
다른 구현예에서, 쿠키 매칭은 유사한 매칭 테이블을 갖는 콘텐츠 서버(104)에 의해 수행될 수 있다. 콘텐츠 서버(104)는 클라이언트 디바이스에 의해 제공되고 중개 서버에 의해 포워딩된 쿠키(중개 서버의 도메인을 참조하거나 그와 연관된 쿠키)를 수신하고 자신의 매칭 테이블에서 대응하는 쿠키를 조회할 수 있다. 따라서, 각각의 구현예에서, 프라이버시의 조치를 제공하기 위해, 쿠키는 도메인 또는 콘텐츠 서버에 특정적이며, 다른 도메인의 콘텐츠 서버(104) 간에 공유되지 않으며, 클라이언트 디바이스에 의해 제공되는 쿠키와 매칭되어야 한다.
일반적인 브라우저 쿠키는 몇 가지 중요한 단점이 있다. 사용자는 사용자가 식별되거나 서드 파티에 의해 추적됨을 인식할 필요없이, 웹사이트 내에 포함된 콘텐츠를 제공하는 서드 파티 콘텐츠 제공자(104)는 쿠키를 제공하여 브라우저를 추적할 수 있다(예: 브라우저 주소바에 표시된 주소는 메인페이지의 소스를 식별할 뿐, 내장 콘텐츠의 주소를 필요적으로 식별하지 않기 때문). 따라서, 사용자가 잠재적인 프라이버시 문제를 식별하고, 사용자의 개인 정보의 프라이버시를 제어하는 것이 어려울 수 있다.
위에서 언급된 바와 같이, 일반적인 브라우저 쿠키는 도메인에 특정적이기 때문에, 콘텐츠 제공자는 쿠키 매치를 사용하여, 한 콘텐츠 제공자의 쿠키와 다른 콘텐츠 제공자의 쿠키 간의 연관을 생성한다. 쿠키 매칭의 한 구현예는 한 엔터티에 의해 수신되고 다른 엔터티로 리디렉션된 요청으로, 페이지 내에 작은 내장 콘텐츠 아이템을 사용한다(예: "추적 픽셀"이라고 하는 대응하는 쿠키의 전송과 함께, 브라우저가 이미지를 요청하게 하는 1픽셀 x 1픽셀의 "보이지 않는" 이미지). 그 결과 픽셀을 "렌더링"하기 위한 두 번의 왕복 통신 교환이 발생한다: 제1 엔터티에 대한 요청과 리디렉션 주소를 사용한 응답, 제2 엔터티에 대한 요청 및 응답. 10개 이상의 내장 추적 픽셀이 포함된 일반적인 페이지의 경우, 이러한 통신을 수행하는데 상당한 시간이 걸릴 수 있다. 통신이 완료되기 전에 사용자가 페이지를 벗어나면 매치가 식별되지 않을 수 있다. 결과적으로, 쿠키 매치는 느리고 종종 불완전하며 웹페이지의 렌더링 속도를 늦추고 대역폭을 소비하고 배터리 수명을 줄인다. 또한 쿠키 매치를 통해 서드 파티 엔터티는 사용자가 명시적인 동의를 제공하지 않고 불투명한 방식으로 온라인 행동을 추적할 수 있으며 이는 사용자 프라이버시에 위협이 된다. 또한, 쿠키 매칭 테이블이 채워진 후에, 서버 간의 추가 요청 및 데이터 교환이 클라이언트 디바이스를 통과할 필요가 없기 때문에, 중개 서버와 콘텐츠 서버는 사용자의 투명성과 제어없이 사용자 데이터를 자유롭게 공유할 수 있다. 이러한 사용자 데이터 공유는 사용자가 클라이언트 디바이스에서 캐시된 쿠키 또는 계정 식별자를 삭제하더라도 계속될 수 있다. 서버에서 옵트 아웃 메커니즘을 사용하더라도 보안 또는 프라이버시를 제공하지 못할 수 있다.
도 1c는 일부 구현예에 따른, 예시적 쿠키 매칭 테이블(135)의 예시이다. 중개 서버(102)는 예를 들어 이러한 테이블(135)을 유지하고, 테이블을 디바이스 식별자 또는 쿠키 및 콘텐츠 서버 쿠키로 채울 수 있다. 도시된 대로, 테이블은 클라이언트 디바이스 및 콘텐츠 서버의 수에 따라 매우 빠르게 커질 수 있다. 수만 또는 수십만 개 이상의 클라이언트 디바이스와 수백 또는 수천 개의 콘텐츠 제공자가 있는 일반적인 구현예에서, 테이블은 상당한 스토리지가 필요할 수 있으며, 매치를 식별하기 위해 검색하는데 많은 양의 서버 리소스(예: 프로세서 시간 및 메모리)가 필요할 수 있다.
따라서, 기존의 브라우저 쿠키 구현은 느리고 비효율적이며, 많은 양의 서버 리소스를 소비하고, 매칭 테이블을 추적하고 생성하는 동안 긴 지연으로 인해 부정확하거나 매치되지 않을 수 있으며, 추적 픽셀로부터 앞뒤 추가적 통신으로 인해 웹페이지 렌더링에 상당한 지연을 추가할 수 있다. 또한 이러한 구현은 보안 또는 프라이버시가 열악할 수 있으며, 및/또는 사용자에 대한 감사 또는 투명성이 부족하여 개인 정보가 공유되는지 여부 또는 그 방법을 결정할 수 없다.
대신, 본 명세서에 기술된 시스템 및 방법은 "읽기 전용 쿠키"("ROC"라고도 함)는 안전하고 사용자에게 투명하며 매우 효율적인 콘텐츠 제공자-특정 식별자("CPSID")로 기존 브라우저 쿠키를 대체한다. 이러한 콘텐츠 제공자-특정 식별자는 클라이언트 디바이스에 의해 생성되고 콘텐츠 제공자의 공개 키로 암호화되어, 서드 파티가 매치를 간접적으로 식별하는 것을 방지하고, 제공자 측 쿠키 매치 테이블 및 리소스 집약적 추적 통신의 필요성을 제거할 수 있다. 콘텐츠 제공자-특정 식별자의 생성은 사용자 정책에 의해 제어될 수 있어서, 식별자는 예를 들어 도메인 내의 미리 결정된 주소; 화이트리스트 상의 콘텐츠 제공자(예: 사용자가 명시적 동의를 제공한 콘텐츠 제공자); 및/또는 블랙리스트 상에 없는 콘텐츠 제공자(예: 사용자가 명시적 동의를 거부한 콘텐츠 제공자)만 검색할 수 있는 준수 서비스 약관(ToS)을 가진 콘텐츠 제공자에 대해서만 생성된다.
콘텐츠 제공자-특정 식별자는 브라우저, 애플리케이션, 디바이스 또는 세션 특정 개인 식별자(디바이스의 다른 사용자와 별개인, 특정한 사용자에 대한 브라우저의 인스턴스에 특정적인 식별자)의 입력 또는 콘텐츠 제공자의 도메인 이름 또는 주소(예: "example.com")로부터 암호화 해시(예를 들어, MD5, SHA256 등과 같은 임의의 적절한 해시 알고리즘)로 생성될 수 있다. 일부 구현예에서, 추가 솔트를 제공하기 위해, 해시 입력은 예를 들어 입력 값과 연결될 수 있는 콘텐츠 제공자-특정 식별자에 대한 생성 시간 또는 만료 시간을 포함할 수 있다. 디바이스 유형 또는 일련 번호, 클록 스큐 시간, 하드웨어 식별자 또는 기타 그러한 데이터와 같은 다른 엔트로피 소스가 유사하게 해시 입력의 복잡성을 증가시키는데 사용될 수 있다. 일부 구현예에서, "만료 시간"은 클라이언트에 의한 자동 재생을 허용하는 콘텐츠 제공자-특정 식별자가 만료되기 전의 주, 월 또는 년 수와 같은 세분화된 값일 수 있다. 일부 구현예에서, 콘텐츠 제공자-특정 식별자는 클라이언트 디바이스 상의 애플리케이션에 걸쳐 통합될 수 있어서, 동일한 콘텐츠 제공자-특정 식별자가 디바이스 상의 각 브라우저, 모바일 애플리케이션, 웹뷰 등으로부터의 요청에 사용될 수 있다. 예를 들어, 암호화 해시에 대한 입력은 콘텐츠 제공자의 도메인 이름 또는 주소와 디바이스 특정 식별자를 포함할 수 있으므로, 입력은 해시 계산을 트리거한 애플리케이션(예: 웹 브라우저 대 디바이스 상의 비디오 게임)에 관계없이 동일하다.
다른 구현예에서, 콘텐츠 제공자-특정 식별자 또는 읽기 전용 쿠키(ROC)는 콘텐츠 제공자(예를 들어 example.com)의 도메인에 의해 키가 지정된 룩업 테이블에 저장된 랜덤하게 생성된 값일 수 있다. 이것은 해시 결과를 계산하는 것보다 적은 프로세서 리소스를 필요로 할 수 있지만 테이블을 위한 큰 스토리지 공간이 필요할 수 있다.
콘텐츠 제공자-특정 식별자는 암호화된 읽기 전용 쿠키("eROC")를 생성하기 위해 콘텐츠 제공자의 공개 키를 통해 클라이언트 디바이스에 의해 암호화될 수 있다. 일부 구현예에서, 클라이언트 디바이스는 암호화 이전에 생성 타임스탬프 및/또는 난수(예를 들어, 임시 솔트)와 콘텐츠 제공자-특정 식별자를 연결하여 단일 도메인에 대한 결과 eROC가 매우 다양하도록 할 수 있다. 따라서, 의도된 콘텐츠 제공자는 콘텐츠 제공자-특정 식별자를 복호화하고 추출할 수 있고, (예를 들어, 쿠키 매칭을 수행하려는) 다른 콘텐츠 제공자 또는 식별자를 가로채려는 악성 중개자(예를 들어, 중간에 있는 공격자)는 그렇게 할 수 없다. 콘텐츠 제공자 간의 데이터 교환을 허용하기 위해, 제1 콘텐츠 제공자는 제2 콘텐츠 제공자에 대한 eROC를 클라이언트 디바이스로부터 요청할 수 있고, 수신된 eROC를 그것의 지정된 또는 "정당한" 소유자 즉, 제2 콘텐츠 제공자에게 포워딩할 수 있다. 수신된 쿠키는 제2 콘텐츠 제공자의 공개 키로 암호화되기 때문에, 제1 콘텐츠 제공자는 제2 콘텐츠 제공자의 원래 ROC를 복호화하거나 복구할 수 없지만 대신 eROC를 포워딩하고 연관된 데이터를 요청할 수 있다. 따라서 적절한 eROC를 소유하고 있다는 것은 사용자 데이터 교환에 대한 클라이언트 디바이스의 승인을 표시한다. 각 요청은 클라이언트 디바이스를 통과해야 하기 때문에, 클라이언트 디바이스는 프라이버시 및 콘텐츠 제공자 간의 데이터 교환을 제어할 수 있으며, 이러한 전송에 대한 감사 로그 또는 데이터 교환 로그를 생성하여 사용자의 투명성을 높일 수 있다.
도 1d는 일부 구현예에 따른, 콘텐츠 제공자-특정 식별자를 사용하는 쿠키 교환을 도시하는 흐름도이다. 단계 150에서, 클라이언트 디바이스(100)는 콘텐츠 아이템을 요청할 수 있다. 일부 구현예에서, 예를 들어, 배너 또는 다른 이미지와 같은 페이지에 내장된 콘텐츠에 대한 요청, 프리롤, 포스트롤 또는 삽입 미디어 파일과 같은 미디어 파일 또는 기타 그러한 콘텐츠인 요청은 웹페이지를 렌더링하는 동안 생성될 수 있다. 일부 구현예에서, 요청은 알려지지 않은 콘텐츠 아이템에 대한 것 일 수 있으며, 콘텐츠 서버(104)는 적절한 콘텐츠 아이템을 선택할 수 있다. 일부 구현예에서, 요청은 사용자 이름, 계정 이름, 주소 또는 하드웨어 식별자, 또는 임의의 다른 그러한 정보를 포함하는 클라이언트 디바이스의 디바이스 식별자 또는 다른 식별자를 포함할 수 있다.
단계 152에서, 중개 서버는 요청을 수신하고, 클라이언트 디바이스(100)에 콘텐츠를 제공하기 위해 하나 이상의 콘텐츠 서버 또는 제공자를 선택할 수 있다. 일부 구현예에서, 콘텐츠 서버의 선택은 로드 밸런싱 요구 사항, 경매 승자 또는 임의의 다른 그러한 방법에 기초할 수 있다. 예를 들어, 중개 서버(102)는 잠재적으로 콘텐츠를 제공하기 위해 콘텐츠 서버의 리스트로부터 10개의 콘텐츠 서버(104)를 선택할 수 있고, 각각의 새로운 요청으로 서버를 통해 순환할 수 있다. 일부 구현예에서, 중개 서버는 클라이언트 디바이스(100)에 콘텐츠를 제공할 기회에 대한 입찰 또는 다른 제안을 요청하기 위해 콘텐츠 서버(104)와 통신할 수 있다. 중개 서버는 콘텐츠를 제공하기 위한 낙찰 또는 입찰을 선택할 수 있다.
중개 서버(102)는 클라이언트 디바이스(100)와 잠재적으로 데이터를 교환하도록 선택된 콘텐츠 서버를 식별하는 응답을 생성할 수 있다. 응답은 각각의 선택된 콘텐츠 서버(104)의 도메인 또는 주소 또는 다른 그러한 식별자를 포함할 수 있으며, 식별자는 함께 연결된다. 일부 구현예에서, 식별자는 32 또는 64 바이트와 같은 미리 결정된 길이를 가질 수 있으며, 더 짧은 도메인 또는 주소가 패딩되거나 더 긴 도메인은 생략될 수 있다. 그 후, 클라이언트 디바이스(100)가 미리 결정된 길이에 따라 각 식별자를 추출할 수 있으므로 식별자는 직접 연결될 수 있다. 다른 구현예에서, 식별자는 구분 기호(예를 들어, 미리 결정된 문자 또는 문자열)에 의해 분리될 수 있다. 단계 154에서, 중개 서버는 식별자의 리스트를 클라이언트 디바이스에 전송할 수 있다.
단계 156에서, 클라이언트 디바이스는 리스트의 각 콘텐츠 서버에 대한 암호화된 읽기 전용 쿠키 또는 콘텐츠 제공자-특정 식별자를 생성할 수 있다. 위에서 논의된 바와 같이, 클라이언트 디바이스는 리스트로부터 도메인 이름 또는 주소와 같은 콘텐츠 제공자의 식별자를 추출할 수 있다. 클라이언트 디바이스는 도메인 이름 또는 주소 더하기 클라이언트 디바이스(100)에 의해 유지되고 다른 디바이스와 공유되지 않는 개인 키 또는 식별자의 암호화 해시를 계산할 수 있다. 일부 구현예에서, 추가 솔트가 해시에 적용될 수 있거나, 쿠키의 생성 날짜 또는 쿠키의 만료 날짜와 같은 추가 데이터가 엔트로피의 소스로 사용될 수 있다. 일부 구현예에서, "만료 시간"은 클라이언트에 의한 자동 재생을 허용하는 콘텐츠 제공자-특정 식별자가 만료되기 전의 주, 월 또는 년 수와 같은 세분화된 값일 수 있다. 사용된 주소 공간(예: 도메인 또는 주소 길이, 개인 키, 임의의 추가 엔트로피 솔트) 내에서 충돌이 거의 또는 전혀 없는 적절한 해싱 함수로 임의의 적절한 단방향 해싱 함수가 사용될 수 있다. 해시 함수는 MD5, SHA256 또는 기타 이러한 함수를 포함할 수 있다.
일부 구현예에서, 클라이언트 디바이스는 해시 결과를 계산하지 않고, 대신 예를 들어 클라이언트 디바이스의 개인 키 또는 식별자를 시드로 사용하여 계산되거나 이와 다르게 생성된(예: 난수 생성기 또는 의사 난수 생성기의 출력으로부터) 랜덤 값의 룩업 테이블을 유지할 수 있다. 룩업 테이블에 대한 인덱스는 콘텐츠 제공자의 도메인 또는 주소를 포함할 수 있다. 일부 구현예에서, 룩업 테이블은 미리 생성될 수 있고, 다른 구현예에서, 클라이언트 디바이스는 엔트리가 아직 존재하지 않는 경우 각 도메인 또는 제공자 식별자에 대한 룩업 테이블에 엔트리를 추가할 수 있다.
따라서, 암호화 해시 함수를 통해 또는 룩업 테이블의 임의 데이터를 통해 생성되든, 클라이언트 디바이스는 각 콘텐츠 제공자에 특정적인 고유 식별자를 검색하거나 생성할 수 있지만, 클라이언트 디바이스가 콘텐츠 제공자에 대한 쿠키에 대한 추가 요청에 대해 동일한 식별자를 검색하거나 생성할 수 있다는 점에서 반복 가능하다(일부 구현예에서, 적어도 쿠키가 만료되거나 사용자가 재설정될 때까지).
쿠키에 대한 보안을 제공하기 위해, 클라이언트 디바이스(100)는 콘텐츠 제공자의 공개 암호화 키를 이용하여 각 쿠키를 암호화할 수 있다. 키는 미리 검색되거나 쿠키 생성 중에 동적으로 검색될 수 있다(예: 클라이언트 디바이스는 "example.com" 도메인 또는"example.com/key.html'에 대한 "key.html "파일과 같은 콘텐츠 제공자의 도메인에 있는 미리 결정된 위치 또는 주소로부터 키를 검색할 수 있다). 따라서, 클라이언트 디바이스는 단계 154에서 리스트에서 식별된 각 콘텐츠 제공자에 대해 암호화된 읽기 전용 쿠키 또는 eROC를 생성할 수 있다. 이들 eROC는 단계 158에서 중개 서버(102)에 대한 추가 요청으로 제공될 수 있다. 일부 구현예에서, eROC는 직접 연결될 수 있고, 미리 결정된 길이(예를 들어, 64바이트, 256바이트 등)를 가질 수 있다. 다른 구현예에서, eROC는 가변 길이를 가질 수 있고, 미리 결정된 식별자 또는 문자열(예: URL의 파라미터-값 쌍 등)에 의해 분리될 수 있다.
일부 구현예에서, eROC는 단계 154에서 수신된 리스트의 각 콘텐츠 제공자에 대해 제공될 수 있다. 다른 구현예에서, 클라이언트 디바이스는 정책을 적용하여 리스트를 필터링하거나 콘텐츠 제공자를 포함 또는 제외할 수 있다. 예를 들어, 일부 구현예에서, 클라이언트 디바이스는 프라이버시 및 보안 요구 사항의 준수를 보장하기 위해 각 도메인으로부터 서비스 약관(ToS) 문서를 검색할 수 있다. 클라이언트 디바이스는 ToS 문서가 검색될 수 있는 경우 및/또는 ToS 문서가 미리 결정된 문자열(예: 보안 정책, 법적 배상 등)을 포함하거나 매칭되는 경우에만 제공자에 대한 eROC를 생성할 수 있다. 유사하게, 일부 구현예에서, 클라이언트 디바이스는 콘텐츠 제공자의 화이트리스트 및/또는 블랙리스트를 유지할 수 있어서, 클라이언트 디바이스가 제공자에 대한 eROC를 생성하게 하기 위해 제공자는 화이트리스트에서 식별되거나 블랙리스트에서 식별되지 않아야 한다. 이는 식별 가능한 정보를 수신할 수 있는 콘텐츠 제공자에 대한 제어 수단을 사용자 또는 관리자에게 제공할 수 있다. 일부 구현예에서, 블랙리스트는 악의적 행위자를 식별한 보안 기관 또는 그룹과 같은 서드 파티 엔티티에 의해 제공될 수 있다.
eROC를 수신하면, 중개 서버(102)는 응답으로부터 각각의 eROC를 추출하고, 콘텐츠에 대한 요청과 함께 단계 160에서 eROC를 대응하는 콘텐츠 제공자에게 포워딩할 수 있다. 일부 구현예에서, 서버(102)는 다음 요청을 추출하고 포워딩하기 전에 콘텐츠 제공자로부터의 응답 또는 타임아웃 타이머의 만료를 기다리면서, 요청을 연속적으로 추출하고 전달할 수 있고; 다른 구현예에서, 서버는 복수의 요청을 병렬로 추출하고 포워딩할 수 있다.
요청 및 상기 콘텐츠 제공자에 대응하는 eROC를 수신하면, 각각의 콘텐츠 제공자는 단계 162에서 ROC를 복구하기 위해 그들의 개인 키를 사용하여 eROC를 복호화할 수 있다. 위에서 설명한 바와 같이, ROC는 난수 또는 단방향 해시 결과로 생성되기 때문에 콘텐츠 제공자는 클라이언트 디바이스의 개인 식별자를 추출하지 못할 수 있다. 그럼에도 불구하고, ROC는 해당 콘텐츠 제공자에 대해 고유할 수 있으며, 클라이언트 디바이스를 콘텐츠 제공자-특정 식별자(CPSID)로 고유하게 식별하는데 사용될 수 있다. 콘텐츠 서버는 클라이언트 디바이스로 전달할 콘텐츠를 선택할 수 있고, 콘텐츠를 중개 서버(164)에 전송할 수 있으며, 중개 서버(164)는 단계 166에서 콘텐츠를 클라이언트 디바이스에 포워딩할 수 있다. 일부 구현예에서, 콘텐츠 서버는 콘텐츠를 클라이언트 디바이스에 직접 전송할 수 있다. 예를 들어, 일부 구현예에서, 클라이언트 디바이스는 단계 154에서 리스트에서 식별된 각 콘텐츠 서버(104)에 eROC 및 요청을 전송할 수 있으며, 단계 158-160에서 중개 서버를 우회할 수 있고, 콘텐츠 서버는 단계 164-166에서 중개 서버를 우회하도록 응답할 수 있다. 이러한 일부 구현예에서, ROC는 별개로 암호화될 필요가 없고, 오히려 대응하는 콘텐츠 서버(104)에 직접 전송되는 각각의 요청은 HTTPS와 같은 암호화된 프로토콜을 통해 전송될 수 있다. 이러한 구현예에서, ROC는 프로토콜 암호화에 의해 서드 파티 행위자로부터 보호될 수 있으며, 클라이언트에 의해 별도로 암호화될 필요가 없다. 대신, ROC는 간접 통신을 위해서만 암호화될 수 있다(예: 중개 서버 또는 아래에서 설명하는 다른 콘텐츠 서버를 통해).
위에서 논의된 바와 같이, 일부 구현예에서, 콘텐츠 서버(104)는 사용자 데이터를 공유하기 위한 합법적 필요성을 가질 수 있다(예를 들어, 도메인 간의 연합 서비스를 위해). 보안 및 프라이버시를 유지하면서 이를 달성하기 위해, 일부 구현예에서, 제1 콘텐츠 서버(104) 및/또는 중개 서버(102)는 제2 콘텐츠 서버와 데이터를 교환하기를 원한다는 것을 클라이언트 디바이스에 신호할 수 있다. 이는 브라우저 API에 대한 자바 스크립트 호출, 웹페이지의 특수 태그 파라미터, 공개적으로 액세스할 수 있는 파트너 파일(예: 콘텐츠 제공자가 데이터를 공유할 도메인 식별 등), 메타 데이터에서 다른 도메인을 식별하는 HTTPS 응답 헤더 또는 기타 수단을 통해 수행될 수 있다. 데이터 교환을 허용하기 위해, 클라이언트 디바이스는 제1 콘텐츠 제공자에 대응하는 eROC를 상기 제1 콘텐츠 제공자에게 전송할 수 있고(제1 콘텐츠 제공자가 ROC를 복호화하고 클라이언트 디바이스를 식별할 수 있도록), 또한 제2 콘텐츠 제공자에 대응하는 eROC를 상기 제1 콘텐츠 제공자에게 전송할 수 있다. 이러한 eROC는 예를 들어 콘텐츠에 대한 요청으로 콘텐츠 제공자에게 전송될 수 있다. 제1 콘텐츠 제공자는 제2 콘텐츠 제공자의 개인 키가 없기 때문에, 제2 eROC를 복호화하고 제2 ROC를 복구할 수 없다; 그러나, 사용자 데이터에 대한 요청과 함께 제2 eROC를 파트너 콘텐츠 제공자에게 포워딩할 수 있다. 요청을 수신하면, 제2 콘텐츠 제공자는 제2 eROC를 복호화하고, ROC에 따라 클라이언트 디바이스를 식별하고, 요청된 데이터를 제1 콘텐츠 제공자에게 제공할 수 있다. 일부 구현예에서, 콘텐츠 제공자는 자신의 ROC와 그 파트너 콘텐츠 제공자의 eROC 사이의 매핑을 임시 기간 동안 캐시하거나 저장할 수 있어서, eROC를 사용하여 추가 데이터를 요청할 수 있다. 그러나, 많은 구현예에서, 그러한 캐싱은 허용되지 않거나 매우 제한될 수 있으므로 클라이언트 디바이스는 사용자 데이터 교환의 정확한 감사 로그를 유지할 수 있다.
클라이언트 디바이스가 데이터 공유 요청을 수신하고 eROC를 제공하기 때문에, 클라이언트 디바이스는 콘텐츠 제공자 간에 또는 중개 서버(102)와 콘텐츠 서버(104) 간에 데이터를 공유하는 각 인스턴스의 감사 로그 또는 기록을 생성할 수 있을 뿐만 아니라 프라이버시 및 보안 정책(예: 블랙리스트에 있는 엔터티 간의 데이터 공유 방지 또는 화이트리스트에 있는 엔터티로의 공유 제한 등)을 적용할 수 있다.
도 2는 콘텐츠 제공자-특정 식별자와 함께 사용하기 위한 컴퓨팅 디바이스의 구현예를 도시하는 블록도이다. 위에서 논의된 바와 같이, 클라이언트 디바이스(들)(100)는 클라이언트, 디바이스, 클라이언트 디바이스, 컴퓨팅 디바이스, 사용자 디바이스 또는 임의의 다른 그러한 용어로 다양하게 지칭될 수 있으며, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 비디오 게임 콘솔, 스마트 텔레비전 또는 셋톱 박스, 서버, 워크스테이션 또는 네트워크를 통해(106) 통신할 수 있는 임의의 다른 유형 및 형태의 컴퓨팅 디바이스일 수 있다. 일부 구현예에서, 클라이언트 디바이스(100)는 웹브라우저, 메일 클라이언트, 비디오 플레이어, 음악 플레이어, 비디오 게임 또는 기타 그러한 애플리케이션과 같은 네트워크(106)를 통해 통신하기 위한 애플리케이션, 서비스, 서버, 데몬, 루틴 또는 기타 실행 가능한 로직을 실행할 수 있다. 이러한 애플리케이션은 커맨드 라인 인터페이스, 그래픽 사용자 인터페이스 또는 이러한 인터페이스 또는 기타 인터페이스의 조합이 포함될 수 있다. 클라이언트 디바이스가 스마트 텔레비전 또는 셋톱 박스인 구현예에서, 클라이언트 디바이스는 지상파, 위성 또는 케이블 방송과 같은 제1 인터페이스를 통해 콘텐츠를 수신할 수 있고; 이더넷 또는 WiFi 인터페이스와 같은 네트워크(106)를 통해 제2 인터페이스를 통해 시청자 측정 서버와 통신할 수 있다. 다른 구현예에서, 클라이언트 디바이스(100)는 네트워크(106)를 통해 콘텐츠를 수신할 수 있고, 네트워크(106)를 통해 인터렉션의 식별을 전송할 수 있다.
클라이언트 디바이스(100)는 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 디지털 비디오 레코더, 텔레비전용 셋톱 박스, 비디오 게임 콘솔 또는 기타 유형 및 형태의 컴퓨팅 디바이스 또는 디바이스 조합을 포함하되 이에 제한되지 않고 네트워크(106)를 통해 통신하도록 구성된 임의의 수의 다양한 유형의 사용자 전자 디바이스일 수 있다. 일부 구현예에서, 클라이언트 디바이스(100)의 유형은 모바일 디바이스, 데스크톱 디바이스 또는 고정 상태를 유지하도록 의도된 디바이스 또는 근거리 통신망을 통해 네트워크(106)에 주로 액세스하도록 구성된 디바이스 또는 미디어 소비 디바이스와 같은 다른 범주의 전자 디바이스로 분류될 수 있다.
많은 구현예에서, 클라이언트 디바이스(100)는 프로세서(200) 및 메모리(206)를 포함한다. 메모리(206)는 프로세서(200)에 의해 실행될 때 프로세서(200)로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 하는 기계 명령어를 저장한다. 프로세서(200)는 마이크로 프로세서, ASIC, FPGA 등 또는 이들의 조합을 포함할 수 있다. 많은 구현예에서, 프로세서(200)는 멀티코어 프로세서 또는 프로세서의 어레이일 수 있다. 메모리(206)는 전자, 광학, 자기 또는 프로세서(200)에 프로그램 명령어를 제공할 수 있는 임의의 기타 저장 디바이스를 포함할 수 있지만, 이에 한정되지 않는다. 메모리(206)는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ROM, RAM, EEPROM, EPROM, 플래시 메모리, 광학 매체, 또는 프로세서가 명령어를 판독할 수 있는 임의의 기타 적절한 메모리를 포함할 수 있다. 명령어는 C, C++, C#, Java, JavaScript, Perl, HTML, XML, Python 및 Visual Basic과 같은 임의의 적절한 컴퓨터 프로그래밍 언어의 코드를 포함할 수 있다.
클라이언트 디바이스(100)는 하나 이상의 네트워크 인터페이스(202)를 포함할 수 있다. 네트워크 인터페이스(202)는 10 Base T, 100 Base T 또는 1000 Base T("기가비트")를 포함하는 이더넷; 802.11a, 802.11b, 802.11g, 802.11n 또는 802.11ac와 같은 다양한 802.11 무선; CDMA, LTE, 3G 또는 4G 셀룰러를 포함하는 셀룰러; Bluetooth 또는 기타 단거리 무선 연결; 또는 네트워크(106)와 통신하기 위한 이들 또는 다른 인터페이스의 임의의 조합을 포함하는 임의의 유형 및 형태의 인터페이스를 포함할 수 있다. 많은 구현예에서, 클라이언트 디바이스(100)는 상이한 유형의 복수의 네트워크 인터페이스(202)를 포함할 수 있어, 상이한 서브-네트워크를 통해 다양한 네트워크(106) 또는 인터넷과 같은 네트워크(106)로의 연결을 허용한다.
클라이언트 디바이스(100)는 하나 이상의 사용자 인터페이스 디바이스(204)를 포함할 수 있다. 사용자 인터페이스 디바이스(204)는 감각 정보(예를 들어, 디스플레이상의 시각화, 하나 이상의 사운드, 촉각적 피드백 등)를 생성함으로써 사용자에게 데이터를 전달하고 및/또는 사용자로부터 수신된 감각 정보를 전자 신호(예를 들어, 키보드, 마우스, 포인팅 디바이스, 터치 스크린 디스플레이, 마이크로폰 등)로 변환하는 임의의 전자 디바이스일 수 있다. 하나 이상의 사용자 인터페이스 디바이스들은 다양한 구현예에 따라, 클라이언트 디바이스(100)의 하우징 내부(예: 내장 디스플레이, 터치 스크린, 마이크로폰 등) 또는 클라이언트 디바이스(100)의 하우징 외부(예: 클라이언트 디바이스(100)에 연결된 모니터, 클라이언트 디바이스(100)에 연결된 스피커 등)에 있을 수 있다.
클라이언트 디바이스(100)는 메모리(206)에 애플리케이션(208)을 포함하거나 프로세서(200)와 함께 애플리케이션(208)을 실행할 수 있다. 애플리케이션(208)은 클라이언트 디바이스(예를 들어, 디스플레이, 스피커 등)의 출력 인터페이스(204)를 통해 콘텐츠를 수신하고 콘텐츠를 디스플레이 또는 출력하기 위한 애플리케이션, 애플릿, 스크립트, 서비스, 데몬, 루틴 또는 기타 실행 가능한 로직일 수 있다. 일 구현예에서, 애플리케이션(208)은 웹브라우저일 수 있다. 애플리케이션(208)은 네트워크 인터페이스(202)를 통해 수신되고 및/또는 프로세서(200)에 의해 로컬적으로 생성된 콘텐츠를 디스플레이하기 위한 기능을 포함할 수 있다. 일부 구현예에서, 애플리케이션(208)은 미디어 플레이어일 수 있거나 웹 브라우저 내의 플러그인 또는 네이티브 미디어 플레이어와 같은 내장 미디어 플레이어를 포함할 수 있다. 애플리케이션(208)은 건너 뛰기 제어, 싫어요 버튼 또는 임의의 유사한 인터페이스와 같은 미디어 플레이어에서 재생되는 콘텐츠와 인터렉션하기 위한 사용자 인터페이스를 제공할 수 있다.
클라이언트(100)는 디바이스 식별자(210)를 포함하거나 그로 식별될 수 있다. 디바이스 식별자(210)는 영숫자 문자열, 데이터 문자열, 일련 번호, 미디어 액세스 제어(MAC) 주소, 인터넷 프로토콜(IP) 주소, 사용자 이름 또는 계정 이름, GUID(Globally Unique Identifier), 쿠키, 임의 또는 의사 난수, 또는 이들 또는 다른 식별자의 조합을 포함하는 임의의 기타 유형 및 형태의 식별자일 수 있다. 일부 구현예에서, 디바이스 식별자(210)는 디바이스에 고정되거나 제조자 일련 번호 또는 MAC 주소와 같이 디바이스에 미리 구성될 수 있고, 다른 구현예에서 디바이스 식별자(210)는 콘텐츠 제공자, 스트리밍 서버, 애플리케이션(208) 또는 쿠키 또는 사용자 이름과 같은 다른 엔터티에 의해 동적으로 설정될 수 있다. 일부 구현예에서, 고유하거나 새로운 디바이스 식별자(210)는 콘텐츠 제공자 및/또는 시청자 측정 서버에 대한 각각의 통신을 위해 설정될 수 있고, 다른 구현예에서, 디바이스 식별자(210)는 변경되지 않을 수 있거나 주기적으로(예를 들어, 매시간, 매일, 매주 등) 또는 기타 간격(예: 클라이언트 디바이스 다시 시작, 인터넷 서비스에 로그인 등)으로 변경될 수 있다. 일부 구현예에서, 디바이스 식별자(210)는 하나 이상의 다른 디바이스 식별자(210)(예를 들어, 모바일 디바이스에 대한 디바이스 식별자, 가정용 컴퓨터에 대한 디바이스 식별자 등)와 연관될 수 있다. 많은 구현예에서, 상기 논의된 바와 같이, 디바이스 식별자(210)는 콘텐츠 제공자에 의해 생성되고 및/또는 디바이스(100)에 전송될 수 있다. 다른 구현예에서, 위에서 논의된 바와 같이, 클라이언트(100)는 측정 서비스 또는 콘텐츠 제공자로부터 디바이스 식별자 또는 쿠키(210)를 요청할 수 있고, 콘텐츠 또는 측정 데이터에 대한 요청과 연관하여 디바이스 식별자 또는 쿠키(210)를 측정 서비스 또는 콘텐츠 제공자에게 전송할 수 있다.
다양한 구현예에서, 클라이언트 디바이스(100)는 읽기 전용 쿠키 룩업 테이블(LUT)(216); 및/또는 암호화기(214)를 포함할 수 있다. 상기 논의된 바와 같이, 일부 구현예에서, ROC LUT(216)는 대응하는 콘텐츠 제공자의 식별자(예를 들어, 도메인 이름, 주소 등)에 의해 인덱싱된 각 콘텐츠 제공자에 대한 랜덤 식별자를 포함할 수 있다. 랜덤 식별자는 미리 생성되거나 동적으로 생성될 수 있다(예: LUT에 새로운 공급자를 추가할 때). 일부 구현예에서, 디바이스 식별자(210)는 랜덤 식별자의 생성을 위한 시드로 사용될 수 있다. 다른 구현예에서, 암호화기(214)는 디바이스 식별자(210)의 입력 및 콘텐츠 제공자의 도메인 또는 주소(및 잠재적으로 전술한 바와 같이 추가 엔트로피 솔트)의 입력으로부터 해시 결과를 계산하는데 사용될 수 있다. 암호화기(214)는 하드웨어 또는 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 일부 구현예에서, 암호화기(214)는 암호화 모듈, 신뢰 플랫폼 모듈(TPM), ASIC 또는 암호화 및 암호화 해시 계산을 수행하기 위한 임의의 다른 유형 및 형태의 회로를 포함할 수 있다.
클라이언트 디바이스(100)는 식별 엔진(212)을 실행할 수 있다. 식별 엔진(212)은 룩업 테이블(216)로부터 ROC를 식별 및 검색하거나 디바이스 식별자(210) 및 콘텐츠 제공자의 도메인 또는 주소에 기초하여 콘텐츠 제공자에 대한 ROC를 생성하기 위한 애플리케이션, 서버, 서비스, 데몬, 루틴 또는 기타 실행 가능한 로직을 포함할 수 있다. 식별 엔진은 복수의 ROC를 생성 또는 검색하고, 암호화기(214)를 통해 ROC를 암호화하고, 암호화된 ROC를 중개 서버로 또는 콘텐츠 제공자(104)에 직접 전송하도록 구성될 수 있다(예를 들어, 콘텐츠에 대한 요청으로).
또한 도 2는 중개 서버(102)의 구현의 블록도이다. 클라이언트 디바이스(100)와 마찬가지로, 중개 서버(102)는 하나 이상의 프로세서(200), 메모리 또는 저장 디바이스(206), 네트워크 인터페이스(202) 및 사용자 인터페이스(204)를 포함할 수 있다. 헤드리스 서버로 지칭되는 일부 구현예에서, 서버(102)는 사용자 인터페이스(204)를 포함하지 않을 수 있지만, 네트워크(106)를 통해 사용자 인터페이스(204)를 사용하여 클라이언트(100) 또는 콘텐츠 제공자와 통신할 수 있다. 일부 구현예에서, 메모리(206)는 FTP 서버, 웹 서버, 메일 서버, 파일 공유 서버, 피어 투 피어 서버, 또는 콘텐츠 또는 클라이언트가 콘텐츠 제공자에서 콘텐츠에 액세스하게 하는 리디렉션 명령을 전달하기 위한 다른 그러한 애플리케이션을 포함하는 서버의 프로세서(200)에 의해 실행되는 하나 이상의 애플리케이션을 저장할 수 있다.
일부 구현예에서, 중개 서버(102)는 콘텐츠 제공자 선택기(220) 및/또는 쿠키 추출기(222)를 포함할 수 있다. 콘텐츠 제공자 선택기(220) 및 쿠키 추출기(222)는 각각 애플리케이션, 서버, 서비스, 데몬, 루틴 또는 다른 실행 가능한 로직을 포함할 수 있다. 콘텐츠 제공자 선택기(220)는 예를 들어 라운드 로빈 또는 다른 로드 밸런싱 시스템을 통해, 또는 경매 기반 시스템을 통해, 콘텐츠 제공자의 리스트로부터 콘텐츠 제공자(104)를 선택하도록 구성될 수 있다. 따라서, 일부 구현예에서 콘텐츠 제공자 선택기(220)는 클라이언트 디바이스에 콘텐츠를 제공할 기회에 대한 입찰과 같은 콘텐츠 제공자(104)에 요청을 전송하고 그로부터 응답을 수신하도록 구성될 수 있다. 콘텐츠 제공자 선택기(220)는 또한 선택된 콘텐츠 제공자의 도메인 또는 주소와 같은 식별자를 포함하는 클라이언트 디바이스(100)의 요청에 대한 응답을 생성하도록 구성되어, 클라이언트 디바이스가 대응하는 eROC를 생성하게 할 수 있다.
상기 논의된 바와 같이, 일부 구현예에서, 이들 eROC는 클라이언트로부터의 추가 요청에서 중개 서버(102)에 제공될 수 있다; 이러한 구현예에서, 쿠키 추출기(222)는 요청으로부터 각각의 eROC를 추출하고, 요청 및 대응하는 eROC를 각각의 콘텐츠 제공자에게 포워딩할 수 있다. 다른 구현예에서, 클라이언트 디바이스는 콘텐츠 제공자의 콘텐츠를 직접 요청할 수 있고, 요청 및 대응하는 eROC를 각각의 콘텐츠 제공자에게 전송할 수 있다. 일부 구현예에서, 각각의 eROC는 요청에서 파라미터 값 쌍으로서, 데이터의 연결된 문자열(예를 들어, 구분자에 의해 분리되거나 다양한 구현예에서 고정 길이를 가짐) 또는 임의의 다른 그러한 형식으로 수신될 수 있다. 따라서, 쿠키 추출기(222)는 eROC로 구성된 수신된 요청으로부터 미리 결정된 수의 바이트를 추출하고, 추출된 eROC를 대응하는 콘텐츠 제공자에게 포워딩하도록 구성될 수 있다. 일부 구현예에서, 각 콘텐츠 제공자는 클라이언트로부터 수신된 콘텐츠에 대한 요청에서 명시적으로 식별될 수 있다. 예를 들어, 요청은 콘텐츠 제공자 식별자 및 eROC의 세트를 포함할 수 있다. 또한 도 2는 콘텐츠 제공자(104)를 도시한다. 콘텐츠 제공자(104)는 네트워크(106)에 연결되고 클라이언트(100)에 콘텐츠를 직접 또는 중개 서버(102)를 통해 제공하도록 구성된 하나 이상의 컴퓨팅 디바이스를 포함할 수 있다. 콘텐츠 제공자는 콘텐츠 제공자, 서버, 웹 서버, 데이터 서버, 퍼블리셔, 서비스 제공자 또는 기타 유사한 용어로 다양하게 지칭될 수 있다. 많은 구현예에서, 콘텐츠 제공자는 서버 팜 또는 클라우드로 구성된 복수의 컴퓨팅 디바이스를 포함할 수 있으며, 라우터, 로드 밸런서, 네트워크 주소 변환기, 방화벽 또는 기타 그러한 디바이스를 포함할 수 있다. 콘텐츠 제공자는 컴퓨터 서버(예를 들어, FTP 서버, 파일 공유 서버, 웹 서버 등) 또는 서버의 조합(예를 들어, 데이터 센터, 클라우드 컴퓨팅 플랫폼 등)일 수 있다. 콘텐츠 제공자는 텍스트, 이미지, 비디오, 오디오, 멀티미디어 또는 기타 데이터, 또는 이들의 임의의 조합을 포함하는 임의의 유형 및 형태의 콘텐츠를 제공할 수 있다. 콘텐츠는 라이브 미디어 콘텐츠, 사전 녹화된 미디어 콘텐츠, 렌더링된 콘텐츠, 영화, 텔레비전 쇼, 팟캐스트, 비디오 블로그, 비디오 게임 또는 기타 인터렉티브 콘텐츠, 임의의 형식의 광고, 소셜 미디어, 또는 임의의 다른 유형 및 형태의 콘텐츠를 포함할 수 있다.
콘텐츠 제공자는 하나 이상의 프로세서(200), 네트워크 인터페이스(202), I/O 인터페이스(204) 및/또는 메모리 디바이스(206)를 포함할 수 있다. 많은 구현예에서, 콘텐츠 제공자(104)는 물리적 디바이스에 의해 실행되는 가상 머신을 포함하는 복수의 컴퓨팅 디바이스를 포함할 수 있다. 예를 들어, 콘텐츠 제공자(104)는 하나 이상의 물리적 컴퓨팅 디바이스에 의해 실행되는 복수의 가상 머신을 포함할 수 있으며, 각각의 이러한 가상 머신은 콘텐츠 서버(예: 웹 서버, 파일 서버, 스트리밍 미디어 서버 등)를 실행하고, 네트워크 저장 디바이스, RAID 저장 디바이스 또는 기타 이러한 디바이스와 같은 하나 이상의 저장 디바이스와 통신한다.
콘텐츠 제공자(104)는 콘텐츠 선택기(230)를 포함할 수 있다. 콘텐츠 선택기(230)는 클라이언트 디바이스(100)로의 전달을 위해 콘텐츠 저장소(234)로부터 콘텐츠를 선택하기 위한 애플리케이션, 서비스, 서버, 데몬, 루틴, 또는 다른 실행 가능한 로직을 포함할 수 있다. 많은 구현예에서, 콘텐츠 선택기(230)는 식별자 데이터베이스(232)에 저장된 클라이언트에 대한 정보에 기초하여 클라이언트에 전달하기 위한 콘텐츠를 선택할 수 있다. 예를 들어, 데이터베이스(232)는 디바이스 성능(예를 들어, 화면 해상도 또는 배향, 색 깊이, 대역폭 등)에 대한 정보 또는 맞춤형 콘텐츠를 선택하기 위한 ROC에 의해 인덱싱된, 다른 정보를 포함할 수 있다. 일부 구현예에서, 중개 서버(102)로부터 또는 클라이언트 디바이스(100)로부터 직접 eROC를 수신하면, 콘텐츠 제공자(104)는 읽기 전용 쿠키(ROC)를 복구하기 위해 eROC를 복호화할 수 있다. 콘텐츠 선택기(230)는 쿠키를 통해 데이터베이스(232)에서 클라이언트에 대한 정보를 식별하고 스토리지(234)로부터 대응하는 콘텐츠를 선택할 수 있다. 다양한 구현예에서, 콘텐츠 선택기(230)는 콘텐츠를 클라이언트 디바이스(100)로 푸시 또는 스트리밍하고, 클라이언트 애플리케이션(208)이 후속적으로 (예: 콘텐츠 제공자(104)의 웹 서버로부터) 콘텐츠를 전달하고 렌더링할 것을 요청할 수 있도록 클라이언트 디바이스에 콘텐츠의 고유 리소스 식별자(URI) 또는 주소를 제공하거나 또는 클라이언트 디바이스로의 포워딩을 위해 URI 또는 주소를 중개 서버(102)에 제공한다.
콘텐츠 스토리지(234)가 메모리(206) 내에 도시되어 있지만, 많은 구현예에서, 콘텐츠 스토리지(234)는 콘텐츠 제공자(예를 들어, 저장소 클라우드, 네트워크 저장소 등)와 통신하는 하나 이상의 추가 저장 디바이스에 의해 제공될 수 있다. 상기 논의된 바와 같이, 콘텐츠 스토리지(234)는 오디오, 비디오, 애니메이션, 텍스트, 멀티미디어, 스틸 또는 애니메이션 그래픽, 실행 가능한 스크립트를 포함하는 임의의 유형 및 형태의 데이터 또는 임의의 기타 유형 및 형태의 콘텐츠를 포함할 수 있다.
상기 논의된 바와 같이, 식별자 데이터베이스(232)는 데이터베이스, 플랫 파일, 인덱싱된 파일, 또는 클라이언트 디바이스, 계정 또는 세션에 관한 정보를 읽기 전용 쿠키 또는 콘텐츠 제공자-특정 식별자와 연관시키기 위한 다른 유형 및 형태의 데이터 구조를 포함할 수 있다. 일부 구현예에서, 식별자 데이터베이스(232)는 메모리(206)에 저장될 수 있고, 다른 구현예에서, 식별자 데이터베이스(232)는 개별적으로 저장되고 콘텐츠 선택기(230)에 제공될 수 있다(예를 들어, 별도의 데이터베이스 서버에 의해).
콘텐츠 제공자(104)는 복호화기(236)를 포함할 수 있다. 복호화기(236)는 콘텐츠 제공자의 개인 키를 통해 암호화된 읽기 전용 쿠키를 복호화하기 위한 소프트웨어, 하드웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 복호화기(236)는 임의의 적합한 유형의 복호화 알고리즘을 수행할 수 있고, ASIC, FPGA, TPM(trusted platform module) 또는 다른 그러한 엘리먼트와 같은 복호화 회로를 포함할 수 있다.
도 3a 및 3b는 콘텐츠 제공자-특정 식별자 또는 읽기 전용 쿠키를 사용하는 데이터 교환 방법의 구현예를 도시하는 흐름도이다. 각 흐름도는 클라이언트 디바이스(들)(100), 중개 서버(들)(102) 또는 콘텐츠 제공자(들)(104)에 의해 수행되는 단계 또는 절차를 보여주기 위해 부분적으로 분할된다.
단계 300에서, 일부 구현예에서, 클라이언트 디바이스(100)는 콘텐츠에 대한 요청을 중개 서버(102)에 전송할 수 있다. 일부 구현예에서, 웹 브라우저 또는 미디어 애플리케이션과 같은 클라이언트 디바이스(100) 상의 애플리케이션은 웹페이지를 렌더링하는 동안 또는 콘텐츠의 다른 아이템을 재생하는 동안 시간이 지정된 이벤트를 만나는 것과 같이 콘텐츠에 대한 요청을 생성할 수 있다. 요청은 임의의 적절한 수단(예: HTTPS 요청, RESTful 요청 등)을 통해 전송될 수 있으며, 일부 구현예에서 핸드 쉐이킹 절차를 수행하는 것을 포함할 수 있다. 일부 구현예에서, 요청은 디바이스 식별자, 계정 식별자, 사용자 식별자, 세션 식별자, 또는 다른 그러한 식별자, 또는 클라이언트 디바이스를 고유하게 식별하기 위해 중개 서버(102)를 위해 클라이언트 디바이스에 의해 생성된 쿠키(예: ROC)를 포함할 수 있다. 예를 들어, 일부 구현예에서, 중개 서버(102)는 이전에 클라이언트 디바이스(100)에 쿠키를 제공했을 수 있고(예를 들어, 인증 절차 또는 다른 그러한 이벤트 동안), 클라이언트 디바이스(100)는 이후 요청에서 동일한 쿠키를 제공할 수 있다.
단계 302에서, 일부 구현예에서, 중개 서버(102)는 잠재적으로 클라이언트 디바이스에 콘텐츠를 제공하기 위해 콘텐츠 제공자를 선택할 수 있다. 콘텐츠 제공자는 위에서 논의된 바와 같이 경매 시스템 또는 라운드 로빈 알고리즘 또는 기타 로드 밸런싱 시스템과 같은 임의의 방법을 통해 선택될 수 있다. 일부 구현예에서, 중개 서버(102)는 입찰을 획득하기 위해 요청을 콘텐츠 서버(104)에 전송할 수 있고, 콘텐츠를 제공할 수 있는지 확인하거나, 또는 다른 그러한 요청(도시되지 않음)을 확인할 수 있으며, 응답에 기초하여 콘텐츠 서버(104)를 선택할 수 있다.
단계 304에서, 중개 서버(102)는 잠재적으로 콘텐츠를 제공하기 위해 선택된 제공자를 제공자 리스트에 추가할 수 있다. 제공자를 추가하는 것은 리스트에 제공자의 도메인 이름 또는 주소를 추가하거나, 도메인 이름 또는 주소를 이름 또는 주소의 세트에 연결하거나, 그렇지 않으면 제공자의 식별을 리스트에 추가하는 것을 포함할 수 있다.
단계 306에서, 중개 서버는 추가 제공자가 리스트에 추가되어야 하는지 여부를 결정할 수 있다. 일부 구현예에서, 리스트는 미리 결정된 길이(예를 들어, 5명의 제공자, 10명의 제공자 등)를 가질 수 있고, 중개 서버는 이 길이에 도달할 때까지 제공자를 추가할 수 있다. 다른 구현예에서, 중개 서버는 타이머 만료에 도달할 때까지 제공자를 추가할 수 있다. 예를 들어, 중개 서버(102)는 콘텐츠를 제공하기 위한 입찰 또는 가용성에 대한 요청을 콘텐츠 제공자에게 전송할 수 있고, 5초, 3초, 1초 또는 임의의 다른 그러한 기간 내에 응답한 임의의 제공자를 리스트에 추가할 수 있다. 단계 302-306은 리스트가 완료될 때까지 반복적으로 반복될 수 있다(예를 들어, 미리 결정된 길이 또는 기간에 도달하거나, 모든 제공자에게 요청을 발행하거나 모든 제공자를 리스트에 추가하는 등). 단계 308에서, 중개 서버는 생성된 리스트를 제1 요청에 대한 응답으로서 클라이언트 디바이스에 전송할 수 있다.
단계 310에서, 클라이언트 디바이스는 리스트로부터 제1 콘텐츠 제공자 도메인 또는 주소를 추출할 수 있다. 상기 논의된 바와 같이, 리스트는 다양한 구현예에서 미리 결정된 길이의 필드, 또는 구분자에 의해 분리된 가변 길이 필드를 포함할 수 있다. 클라이언트 디바이스는 길이 또는 구분자에 따라 도메인 또는 주소를 추출할 수 있다.
상기 논의된 바와 같이, 일부 구현예에서, 클라이언트 디바이스는 콘텐츠 제공자 도메인 또는 주소 또는 다른 식별자에 의해 인덱싱된 각 콘텐츠 제공자에 대해 랜덤하게 생성된 읽기 전용 쿠키를 갖는 룩업 테이블을 유지할 수 있다. 이러한 구현예에서, 단계 312A에서, 클라이언트 디바이스는 대응하는 ROC를 식별할 수 있다. 상기 논의된 바와 같이, 일부 구현예에서, 테이블은 랜덤 ROC 값으로 미리 채워질 수 있다. 다른 구현예에서, 클라이언트 디바이스는 제공자에 대한 테이블에 ROC가 존재하는지 여부를 결정할 수 있다; 그렇지 않은 경우, 제공자에 대한 새로운 랜덤 ROC를 생성할 수 있다(예: 클라이언트 디바이스의 개인 식별자, 랜덤 시드 또는 시스템 시간 및/또는 하드웨어 난수 생성기, 소프트웨어 난수 생성기, 네트워크 특성(예: 대기 시간, 지터, 오류율 등)을 포함한 기타 엔트로피 소스 또는 기타 그러한 정보 사용).
다른 구현예에서, 단계 312B에서, 클라이언트 디바이스는 도메인 또는 주소의 입력 또는 콘텐츠 제공자의 다른 식별자 및 클라이언트 디바이스의 개인 키 또는 식별자에 적용된 해싱 알고리즘의 결과를 계산할 수 있다. 일부 구현예에서, 쿠키의 만료 또는 생성 시간과 같은 추가 엔트로피가 사용될 수 있다. 적절한 해싱 알고리즘이 사용될 수 있다. 일부 구현예에서, 쿠키는 암호화 해싱에 필요한 컴퓨팅 리소스를 줄이기 위해 생성 후(일부 구현예에서 미리 결정된 만료 기간이 끝날 때까지와 같은 임시 기간 동안) 클라이언트 디바이스에 의해 저장되거나 캐시될 수 있다. 이러한 구현예에서, 단계 312A에서와 같이, 클라이언트 디바이스는 먼저 콘텐츠 제공자에 대한 ROC가 이전에 생성되어 캐시에 저장되었는지 여부를 결정할 수 있으며; 그렇지 않은 경우, 해시를 계산하고 새 ROC를 생성할 수 있다.
단계 314에서, 일부 구현예에서, 클라이언트 디바이스는 예를 들어 미리 결정된 주소에서 콘텐츠 제공자의 공개 키를 검색할 수 있다(예를 들어, "단계 318에서, 클라이언트 디바이스는 리스트이 추가 제공자를 포함하는지 여부를 결정할 수 있으며, 그렇다면, 310-318 단계를 반복한다).
상기 논의된 바와 같이, 일부 구현예에서, 클라이언트 디바이스는 제공자 리스트에 보안 또는 프라이버시 정책을 적용할 수 있다. 예를 들어, 단계 310 이후, 제공자에 대한 ROC를 생성 또는 검색하기 전에, 클라이언트 디바이스는 먼저 제공자가 블랙리스트에서 식별되는지 또는 화이트리스트에서 식별되지 않는지를 결정할 수 있다. 그렇다면, 클라이언트 디바이스는 단계 318로 바로 건너뛸 수 있다. 유사하게, 일부 구현예에서, 클라이언트 디바이스는 제공자가 준수하는 ToS 계약을 가지고 있는지 여부를 결정할 수 있다(예를 들어, 미리 결정된 주소에서 계약을 검색함으로써). 유사하게, 일부 구현예에서 클라이언트 디바이스는 감사 로그에 리스트에서 식별되었던 및/또는 콘텐츠를 클라이언트 디바이스에 제공하기 위해 선택되었던 각 콘텐츠 제공자의 ID를 기록할 수 있다. 따라서, 감사 로그는 어떤 콘텐츠 제공자 또는 제공자들이 중개 서버(102)와 사용자 데이터를 공유할 수 있는지 또는 어느 쌍의 콘텐츠 제공자들이 그들 사이에서 사용자 데이터를 공유할 수 있는지를 나타낼 수 있다. 감사 로그는 클라이언트 디바이스 사용자에게 투명성을 제공하고, 사용자 정보의 보안 및 프라이버시에 대한 추가 제어를 제공한다.
단계 320에서, 일부 구현예에서, 클라이언트 디바이스는 암호화된 ROC(eROC) 세트를 중개 디바이스에 전송할 수 있다. 상기 논의된 바와 같이, eROC는 구분자에 의해 연결되거나 분리될 수 있고, 대응하는 콘텐츠 제공자의 ID를 포함할 수 있거나 원래 수신된 리스트에 대응하는 순서일 수 있다. 단계 322에서, 일부 구현예에서, 중개 서버는 예를 들어 구분자 또는 고정 길이에 따라 세트로부터 eROC를 추출할 수 있다. 단계 324에서, 중개 서버는 eROC 및 콘텐츠 아이템에 대한 요청을 제공자에게 포워딩할 수 있다. 일부 구현예에서, eROC 및 요청을 포워딩하는 것은 클라이언트 디바이스에 콘텐츠를 제공하기 위해 입찰을 요청하는 것을 포함할 수 있다. 단계 326에서, 중개 서버는 클라이언트 디바이스로부터 수신된 통신이 추가 eROC를 포함하는지 여부를 결정할 수 있고, 그렇다면 각 추가 eROC에 대해 단계 322-326을 반복할 수 있다.
다른 구현예에서, 상기 논의된 바와 같이, 클라이언트 디바이스는 각각의 eROC를 대응하는 콘텐츠 제공자에게 전송하여 중개 서버를 우회할 수 있다. 이는 예를 들어, 중개 서버가 단계 302에서 로드 밸런싱 또는 경매를 수행하는 구현예에서, 특히 중개 서버가 단일 콘텐츠 제공자만을 선택하는 경우 수행될 수 있다. 그러한 경우, 복수의 eROC로부터 eROC의 추출 및 포워딩이 수행될 필요가 없으며, 클라이언트 디바이스는 대신 콘텐츠 제공자와 직접 통신할 수 있다.
도 3b로 돌아가면, 각각의 콘텐츠 서버(104)는 도시된 바와 같이 중개 서버(102)로부터 콘텐츠 및 eROC에 대한 요청을 수신할 수 있다(또는 콘텐츠 서버(104)는 일부 구현예에서 위에서 논의된 바와 같이 클라이언트 디바이스로부터 직접 요청 및 eROC를 수신할 수 있다). 단계 332에서, 콘텐츠 서버는 개인 키를 사용하여 eROC를 복호화할 수 있다.
단계 334에서, 콘텐츠 서버는 복호화된 ROC가 그 로컬 쿠키 데이터베이스에 있는지를 결정할 수 있다. 예를 들어, 특정한 클라이언트로부터 콘텐츠 요청을 처음 수신하거나 클라이언트의 이전 ROC가 만료되었거나 사용자가 ROC를 재설정한 경우 ROC가 데이터베이스에 없을 수 있고, 클라이언트가 새 ROC를 생성하도록 한다. ROC가 데이터베이스에 없는 경우 콘텐츠 서버는 단계 336에서 ROC를 로컬 데이터베이스에 추가할 수 있다.
단계 338에서, 콘텐츠 서버는 클라이언트 디바이스에 전달하기 위한 콘텐츠 아이템을 선택할 수 있다. 콘텐츠 아이템은 임의의 적절한 수단을 통해 선택될 수 있으며, 예를 들어 콘텐츠 서버의 로컬 데이터베이스에 있는 ROC와 연관된 정보에 기초하고, 클라이언트 디바이스 또는 웹브라우징으로부터 수신된 정보 또는 클라이언트 디바이스, 이전 콘텐츠 요청 또는 인터렉션 또는 기타 다른 유형 및 형태의 정보와 연관된 검색 이력에 기초하여 클라이언트 디바이스에 대해 개인화되거나 커스터마이징될 수 있다.
일부 구현예에서, 단계 340에서, 콘텐츠 서버는 선택된 콘텐츠를 중개 서버에 전송할 수 있다. 중개 서버는 단계 342에서 콘텐츠를 클라이언트 디바이스에 포워딩할 수 있다. 일부 구현예에서, 중개 서버는 복수의 콘텐츠 서버(104)로부터 콘텐츠를 수신할 수 있다(예를 들어, 단계 330-340은 복수의 콘텐츠 서버에 의해 병렬적으로 수행될 수 있다). 중개 서버는 입찰 프로세스 또는 경매를 통해 또는 복수의 콘텐츠 서버로부터 수신된 콘텐츠의 제1 아이템에 응답하는 것과 같이 단계 342에서 클라이언트 디바이스에 포워딩할 콘텐츠 아이템을 선택할 수 있으며, 나머지 콘텐츠 아이템은 폐기된다. 다른 구현예에서, 콘텐츠 서버는 단계 342를 우회하여 선택된 콘텐츠를 클라이언트 디바이스에 직접 전송할 수 있다. 간단히 도 3a로 돌아가면, 선택된 콘텐츠 아이템을 수신하면, 클라이언트 디바이스는 단계 350에서 콘텐츠를 렌더링하거나 디스플레이할 수 있다.
따라서, 본 명세서에 기술된 시스템 및 방법은 "읽기 전용 쿠키"("ROC"라고도 함)는 안전하고 사용자에게 투명하며 매우 효율적인 콘텐츠 제공자-특정 식별자("CPSID")로 기존 브라우저 쿠키를 대체한다. 이러한 콘텐츠 제공자-특정 식별자는 클라이언트 디바이스에 의해 생성되고 콘텐츠 제공자의 공개 키로 암호화되어, 서드 파티가 매치를 간접적으로 식별하는 것을 방지하고, 제공자 측 쿠키 매치 테이블 및 리소스 집약적 추적 통신의 필요성을 제거할 수 있다. 콘텐츠 제공자-특정 식별자의 생성은 사용자 정책에 의해 제어될 수 있어서, 식별자는 예를 들어 도메인 내의 미리 결정된 주소; 화이트리스트 상의 콘텐츠 제공자(예: 사용자가 명시적 동의를 제공한 콘텐츠 제공자); 및/또는 블랙리스트 상에 없는 콘텐츠 제공자(예: 사용자가 명시적 동의를 거부한 콘텐츠 제공자)만 검색할 수 있는 준수 서비스 약관(ToS)을 가진 콘텐츠 제공자에 대해서만 생성된다. 또한, 이러한 시스템과 방법은 IDFA(Identifier for Advertisers) 또는 AdID(Advertiser ID) 시스템과 같은 종래의 브라우저 쿠키와 유사한 디바이스 식별 시스템에 적용될 수 있다. 이러한 시스템의 종래 구현예에서, 사용자 재설정가능 식별자가 클라이언트 디바이스에서 활용될 수 있으며, 수신자-무관 기반으로 요청시 콘텐츠 서버에 제공될 수 있으며, 서버는 사용자 감독 또는 제어없이 IDFA 또는 AdID 식별자를 사용하여 자유롭게 데이터를 교환할 수 있다. 대신, 개시된 방법 및 시스템은 콘텐츠 서버-특정 식별자 또는 ROC를 제공하는 데 사용될 수 있다.
일 양태에서, 본 개시 내용은 도메인 간의 제어된 데이터 교환을 위한 방법에 관한 것이다. 상기 방법은 클라이언트 디바이스의 네트워크 인터페이스에 의해, 중개 서버로부터, 상기 중개 서버에 의해 선택된 콘텐츠 제공자의 리스트를 수신하는 단계를 포함한다. 상기 방법은 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대해: 상기 클라이언트 디바이스의 식별 엔진에 의해, 콘텐츠 제공자-특정 식별자를 생성하는 단계, 및 상기 클라이언트 디바이스의 암호화기에 의해, 대응하는 콘텐츠 제공자의 암호화 키를 사용하여, 상기 콘텐츠 제공자-특정 식별자를 암호화하는 단계를 포함한다. 상기 방법은 또한 상기 클라이언트 디바이스의 네트워크 인터페이스에 의해, 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대한 상기 암호화된 콘텐츠 제공자-특정 식별자를 중개 서버에 전송하는 단계를 포함하며, 상기 중개 서버는 각 암호화된 콘텐츠 제공자-특정 식별자를 상기 대응하는 콘텐츠 제공자에게 포워딩한다.
일부 구현예에서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 암호화기에 의해, 상기 클라이언트 디바이스의 식별자 및 상기 대응하는 콘텐츠 제공자의 도메인 이름을 포함하는 입력의 암호화 해시를 계산하는 단계를 포함한다. 추가 구현예에서, 상기 암호화 해시에 대한 입력은 상기 콘텐츠 제공자-특정 식별자에 대한 만료 시간을 더 포함한다. 다른 추가 구현예에서, 상기 클라이언트 디바이스의 식별자는 상기 클라이언트 디바이스에 의해 실행되는 애플리케이션에 특정적이다. 일부 구현예에서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 식별 엔진에 의해, 상기 대응하는 콘텐츠 제공자의 도메인 이름과 연관된 인덱스에서의 룩업 테이블에서 미리 결정된 랜덤 값을 식별하는 단계를 포함한다. 일부 구현예에서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 식별 엔진에 의해, 상기 대응하는 콘텐츠 제공자가 상기 클라이언트 디바이스의 블랙리스트에서 식별되지 않음을 결정하는 단계를 더 포함한다. 일부 구현예에서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 식별 엔진에 의해, 상기 클라이언트 디바이스의 동의 리스트에서 상기 대응하는 콘텐츠 제공자가 식별되었다고 결정하는 단계를 포함한다. 일부 구현예에서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 네트워크 인터페이스를 통해 상기 식별 엔진에 의해, 상기 대응하는 콘텐츠 제공자의 공개 키를 검색하는 단계를 포함한다. 일부 구현예에서, 상기 방법은 식별자를 수신하는 콘텐츠 제공자의 로그에 각각의 대응하는 콘텐츠 제공자의 표시를 추가하는 단계를 포함한다.
또 다른 양태에서, 본 출원은 도메인 간의 제어된 데이터 교환을 위한 시스템에 관한 것이다. 시스템은 중개 서버로부터 수신된 콘텐츠 제공자 리스트에서 각 콘텐츠 제공자에 대해, 콘텐츠 제공자-특정 식별자를 생성하도록 구성된 식별 엔진을 포함한다. 시스템은 대응하는 콘텐츠 제공자의 암호화 키(예: 공개 키)를 사용하여, 각각의 콘텐츠 제공자-특정 식별자를 암호화도록 구성된 암호화기; 및 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대한 상기 암호화된 콘텐츠 제공자-특정 식별자를 중개 서버에 전송하도록 구성된 네트워크 인터페이스를 포함하며, 상기 중개 서버는 각 암호화된 콘텐츠 제공자-특정 식별자를 상기 대응하는 콘텐츠 제공자에게 포워딩한다.
일부 구현예에서, 상기 암호화기는 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대해, 상기 클라이언트 디바이스의 식별자 및 상기 대응하는 콘텐츠 제공자의 도메인 이름을 포함하는 입력의 암호화 해시를 계산하도록 더 구성된다. 추가 구현예에서, 상기 암호화 해시에 대한 입력은 상기 콘텐츠 제공자-특정 식별자에 대한 만료 시간을 더 포함한다. 다른 추가 구현예에서, 상기 클라이언트 디바이스의 식별자는 상기 클라이언트 디바이스에 의해 실행되는 애플리케이션에 특정적이다.
일부 구현예에서, 상기 식별 엔진은 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대해, 상기 대응하는 콘텐츠 제공자의 도메인 이름과 연관된 인덱스에서의 룩업 테이블에서 미리 결정된 랜덤 값을 식별하도록 더 구성된다. 일부 구현예에서, 상기 식별 엔진은 상기 클라이언트 디바이스의 블랙리스트에서 상기 콘텐츠 제공자의 리스트에서 각각의 콘텐츠 제공자가 식별되지 않음을 결정하도록 더 구성된다.
일부 구현예에서, 상기 식별 엔진은 상기 클라이언트 디바이스의 동의 리스트에서 상기 콘텐츠 제공자의 리스트에서 각각의 콘텐츠 제공자가 식별된다고 결정하도록 더 구성된다. 일부 구현예에서, 상기 식별 엔진은 상기 네트워크 인터페이스를 통해, 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자의 공개 키를 검색하도록 더 구성된다. 일부 구현예에서, 상기 식별 엔진은 식별자를 수신하는 콘텐츠 제공자의 로그에 각각의 대응하는 콘텐츠 제공자의 표시를 추가하도록 더 구성된다.
다른 양태에서, 본 개시는 제어된 데이터 교환을 위한 시스템에 관한 것이다. 시스템은 클라이언트 디바이스 및 복수의 콘텐츠 제공자와 통신하는 네트워크 인터페이스를 포함하며, 상기 네트워크 인터페이스는 상기 클라이언트 디바이스로부터 콘텐츠에 대한 요청을 수신하도록 구성된다. 시스템은 또한 상기 복수의 콘텐츠 제공자의 서브세트를 선택하고, 상기 선택된 서브세트의 각 콘텐츠 제공자의 식별을 포함하는 리스트를 생성하도록 구성된 콘텐츠 제공자 선택기를 포함한다. 상기 네트워크 인터페이스는: 상기 리스트를 상기 클라이언트 디바이스에 전송하고; 상기 클라이언트 디바이스로부터, 상기 복수의 콘텐츠 제공자의 추가 서브세트의 각 콘텐츠 제공자에 대한 암호화된 콘텐츠 제공자-특정 식별자를 포함하는 응답을 수신하고; 상기 추가 서브세트의 각 콘텐츠 제공자에게, 콘텐츠에 대한 추가 요청을 전송하고, 각각의 추가 요청은 상기 수신자 콘텐츠 제공자에 대응하는 상기 암호화된 콘텐츠 제공자-특정 식별자를 포함하고; 제1 콘텐츠 제공자로부터, 상기 수신된 암호화된 콘텐츠 제공자-특정 식별자에 기초하여 상기 콘텐츠 제공자에 의해 선택된 콘텐츠의 아이템을 수신하고; 그리고 상기 수신된 콘텐츠의 아이템을 상기 클라이언트 디바이스에 의한 제시를 위해 상기 클라이언트 디바이스에 포워딩하도록 더 구성된다.
일부 구현예에서, 시스템은 상기 응답으로부터 각각의 암호화된 콘텐츠 제공자-특정 식별자를 추출하고, 각각의 추출된 암호화된 콘텐츠 제공자-특정 식별자를 상기 대응하는 콘텐츠 제공자와 연관시키도록 구성된 식별자 추출기를 포함한다.
본 발명의 구현예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 구현예들은 하나 이상의 컴퓨터 프로그램들 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 하나 이상의 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로서 구현될 수 있다. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 컴포넌트들 또는 매체(예를 들면, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)이거나 또는 그에 포함될 수 있다. 따라서, 컴퓨터 저장 매체는 유형적일 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 또는 다른 소스들로부터 수신된 데이터에서 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "클라이언트" 또는 "서버"는 프로그래머블 프로세서, 컴퓨터, 시스템 온 칩 또는 앞서 언급된 것들 중 다수의 것들 또는 조합들을 포함하는 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 실행 환경, 가상 머신 또는 그들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일된 또는 인터프리트된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 객체로서 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하는 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들이나 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들을 가지는 파일의 부분에, 문제되는 프로그램 전용 단일의 파일에 또는 다수의 조정된 파일들, 예를 들어, 하나 이상의 모듈들, 서브프로그램 또는 코드의 일부를 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되어 있거나 다수의 사이트들에 걸쳐서 분산되어 있고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은 범용 및 전용 마이크로프로세서들과 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 몇 가지만 나열하면, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 기술된 본 발명의 구현예들은 디스플레이 디바이스 예를 들어, CRT(cathode ray tube), LCD(liquid crystal display), OLED(organic light emitting diode), TFT(thin-film transistor), 플라즈마, 기타 플렉시블 구성 또는 사용자에게 정보를 디스플레이하기 위한 임의의 기타 모니터 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드, 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼 등 또는 터치 스크린, 터치 패드 등을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 인터렉션을 제공하는데 사용될 수 있다; 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써; 웹 브라우저로부터 수신된 요청에 응답하여, 사용자의 사용자 디바이스상의 웹 브라우저에 웹 페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
본 명세서에서 기술된 발명의 구현예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트, 애플리케이션 서버와 같은 미들웨어 컴포넌트 또는 그래픽 사용자 인터페이스를 가지는 사용자 컴퓨터 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹 브라우저와 같은 프론트엔드 컴포넌트 또는 하나 이상의 상기 백엔드, 미들웨어 또는 프론트엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)를 포함할 수 있다.
본 명세서에서 논의된 시스템들이 사용자들에 관한 개인 정보를 수집하거나 또는 개인 정보를 사용하는 경우들에 있어서, 사용자들에게 프로그램들 또는 구성들이 개인 정보 예를 들면, 사용자의 소셜 네트워크, 소셜 액션들 또는 활동들, 사용자의 선호들 또는 사용자의 위치에 관한 정보를 수집할 것인지 여부를 제어할, 사용자와 더 관련된 콘텐츠 서버 또는 기타 데이터 프로세싱 시스템으로부터의 콘텐츠를 수신할지 또는 어떻게 수신할지 제어할 기회가 제공될 수 있다. 추가로, 특정 데이터는 그것이 저장되거나 사용되기 전에 하나 이상의 다양한 방식들로 익명화되어, 파라미터들을 생성하는 경우 개인적으로 식별가능한 정보는 제거되도록 한다. 예를 들면, 사용자의 신원은 사용자에 관한 개인적으로 식별가능한 정보가 결정될 수 없도록 익명화되거나 또는 사용자의 지리적 위치는 위치 정보가 획득된 곳에서 일반화되어(시, 우편번호 또는 주 수준으로), 사용자의 특정한 위치가 결정될 수 없도록 한다. 따라서, 사용자는 그 또는 그녀에 관한 정보가 어떻게 수집되는지 그리고 콘텐츠 서버에 의해 사용되는지에 관한 제어를 가질 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정한 발명의 특정한 구현예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 구현예의 맥락에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 구현예에서 조합하여 구현될 수 있다. 반대로, 단일 구현예의 맥락에서 기술된 다양한 구성들은 또한 다수의 구현예에서 개별적으로 또는 임의의 적합한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 구현예에서 다양한 시스템 컴포넌트들의 분리는 모든 구현예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다.
따라서, 본 발명의 특정한 구현예들이 기술되었다. 다른 구현예들도 다음의 청구항들의 범위 내에 있다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다. 특정 구현예에서, 멀티태스킹 또는 병렬 프로세싱이 활용될 수 있다.

Claims (20)

  1. 도메인 간의 제어된 데이터 교환을 위한 방법으로서,
    클라이언트 디바이스의 네트워크 인터페이스에 의해, 중개 서버로부터, 상기 중개 서버에 의해 선택된 콘텐츠 제공자의 리스트를 수신하는 단계;
    콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대해:
    상기 클라이언트 디바이스의 식별 엔진에 의해, 콘텐츠 제공자-특정 식별자를 생성하는 단계, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 네트워크 인터페이스를 통해 상기 식별 엔진에 의해, 대응하는 콘텐츠 제공자의 공개 키를 검색하는 단계를 포함하며, 및
    상기 클라이언트 디바이스의 암호화기에 의해, 상기 대응하는 콘텐츠 제공자의 공개 키를 사용하여, 상기 콘텐츠 제공자-특정 식별자를 암호화하는 단계; 및
    상기 클라이언트 디바이스의 네트워크 인터페이스에 의해, 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대한 상기 암호화된 콘텐츠 제공자-특정 식별자를 중개 서버에 전송하는 단계를 포함하며, 상기 중개 서버는 각 암호화된 콘텐츠 제공자-특정 식별자를 상기 대응하는 콘텐츠 제공자에게 포워딩하는, 방법.
  2. 청구항 1에 있어서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 암호화기에 의해, 상기 클라이언트 디바이스의 식별자 및 상기 대응하는 콘텐츠 제공자의 도메인 이름을 포함하는 입력의 암호화 해시를 계산하는 단계를 포함하는, 방법.
  3. 청구항 2에 있어서, 상기 암호화 해시에 대한 입력은 상기 콘텐츠 제공자-특정 식별자에 대한 만료 시간을 더 포함하는, 방법.
  4. 청구항 2에 있어서, 상기 클라이언트 디바이스의 식별자는 상기 클라이언트 디바이스에 의해 실행되는 애플리케이션에 특정적인, 방법.
  5. 청구항 1에 있어서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 식별 엔진에 의해, 상기 대응하는 콘텐츠 제공자의 도메인 이름과 연관된 인덱스에서의 룩업 테이블에서 미리 결정된 랜덤 값을 식별하는 단계를 포함하는, 방법.
  6. 청구항 1에 있어서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 식별 엔진에 의해, 상기 대응하는 콘텐츠 제공자가 상기 클라이언트 디바이스의 블랙리스트에서 식별되지 않음을 결정하는 단계를 더 포함하는, 방법.
  7. 청구항 1에 있어서, 상기 콘텐츠 제공자-특정 식별자를 생성하는 단계는 상기 식별 엔진에 의해, 상기 클라이언트 디바이스의 동의 리스트에서 상기 대응하는 콘텐츠 제공자가 식별되었다고 결정하는 단계를 더 포함하는, 방법.
  8. 삭제
  9. 청구항 1에 있어서, 식별자를 수신하는 콘텐츠 제공자의 로그에 각각의 대응하는 콘텐츠 제공자의 표시를 추가하는 단계를 더 포함하는, 방법.
  10. 도메인 간의 제어된 데이터 교환을 위한 시스템으로서,
    중개 서버로부터 수신된 콘텐츠 제공자 리스트에서 각 콘텐츠 제공자에 대해, 콘텐츠 제공자-특정 식별자를 생성하고, 네트워크 인터페이스를 통해, 상기 콘텐츠 제공자 리스트에서 각 콘텐츠 제공자의 공개 키를 검색하도록 하도록 구성된 식별 엔진;
    대응하는 콘텐츠 제공자의 공개 키를 사용하여, 각각의 콘텐츠 제공자-특정 식별자를 암호화도록 구성된 암호화기; 및
    상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대한 상기 암호화된 콘텐츠 제공자-특정 식별자를 중개 서버에 전송하도록 구성된 네트워크 인터페이스를 포함하며, 상기 중개 서버는 각 암호화된 콘텐츠 제공자-특정 식별자를 상기 대응하는 콘텐츠 제공자에게 포워딩하는, 시스템.
  11. 청구항 10에 있어서, 상기 암호화기는 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대해, 클라이언트 디바이스의 식별자 및 상기 대응하는 콘텐츠 제공자의 도메인 이름을 포함하는 입력의 암호화 해시를 계산하도록 더 구성되는, 시스템.
  12. 청구항 11에 있어서, 상기 암호화 해시에 대한 입력은 상기 콘텐츠 제공자-특정 식별자에 대한 만료 시간을 더 포함하는, 시스템.
  13. 청구항 11에 있어서, 상기 클라이언트 디바이스의 식별자는 상기 클라이언트 디바이스에 의해 실행되는 애플리케이션에 특정적인, 시스템.
  14. 청구항 10에 있어서, 상기 식별 엔진은 상기 콘텐츠 제공자의 리스트에서 각 콘텐츠 제공자에 대해, 상기 대응하는 콘텐츠 제공자의 도메인 이름과 연관된 인덱스에서의 룩업 테이블에서 미리 결정된 랜덤 값을 식별하도록 더 구성되는, 시스템.
  15. 청구항 10에 있어서, 상기 식별 엔진은 클라이언트 디바이스의 블랙리스트에서 상기 콘텐츠 제공자의 리스트에서 각각의 콘텐츠 제공자가 식별되지 않음을 결정하도록 더 구성되는, 시스템.
  16. 청구항 10에 있어서, 상기 식별 엔진은 클라이언트 디바이스의 동의 리스트에서 상기 콘텐츠 제공자의 리스트에서 각각의 콘텐츠 제공자가 식별된다고 결정하도록 더 구성되는, 시스템.
  17. 삭제
  18. 청구항 10에 있어서, 상기 식별 엔진은 식별자를 수신하는 콘텐츠 제공자의 로그에 각각의 대응하는 콘텐츠 제공자의 표시를 추가하도록 더 구성되는, 시스템.
  19. 제어된 데이터 교환을 위한 시스템으로서,
    클라이언트 디바이스 및 복수의 콘텐츠 제공자와 통신하는 네트워크 인터페이스, 상기 네트워크 인터페이스는 상기 클라이언트 디바이스로부터 콘텐츠에 대한 요청을 수신하도록 구성되며;
    상기 복수의 콘텐츠 제공자의 서브세트를 선택하고, 상기 선택된 서브세트의 각 콘텐츠 제공자의 식별을 포함하는 리스트를 생성하도록 구성된 콘텐츠 제공자 선택기를 포함하며;
    상기 네트워크 인터페이스는:
    상기 리스트를 상기 클라이언트 디바이스에 전송하고,
    상기 클라이언트 디바이스로부터, 상기 복수의 콘텐츠 제공자의 추가 서브세트의 각 콘텐츠 제공자에 대한 암호화된 콘텐츠 제공자-특정 식별자를 포함하는 응답을 수신하고, 상기 암호화된 콘텐츠 제공자-특정 식별자는 상기 네트워크 인터페이스를 통해, 상기 복수의 콘텐츠 제공자의 추가 서브세트의 각 콘텐츠 제공자의 공개 키를 검색함으로써 암호화되며,
    상기 추가 서브세트의 각 콘텐츠 제공자에게, 콘텐츠에 대한 추가 요청을 전송하고, 각각의 추가 요청은 수신자 콘텐츠 제공자에 대응하는 상기 암호화된 콘텐츠 제공자-특정 식별자를 포함하고,
    제1 콘텐츠 제공자로부터, 상기 수신된 암호화된 콘텐츠 제공자-특정 식별자에 기초하여 상기 콘텐츠 제공자에 의해 선택된 콘텐츠의 아이템을 수신하고, 그리고
    상기 수신된 콘텐츠의 아이템을 상기 클라이언트 디바이스에 의한 제시를 위해 상기 클라이언트 디바이스에 포워딩하도록 더 구성되는, 시스템.
  20. 청구항 19에 있어서, 상기 응답으로부터 각각의 암호화된 콘텐츠 제공자-특정 식별자를 추출하고, 각각의 추출된 암호화된 콘텐츠 제공자-특정 식별자를 상기 대응하는 콘텐츠 제공자와 연관시키도록 구성된 식별자 추출기를 더 포함하는, 시스템.
KR1020207029517A 2018-04-05 2018-04-05 브라우저 쿠키를 대체하는 도메인 특정 브라우저 식별자 KR102390938B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/026287 WO2019194811A1 (en) 2018-04-05 2018-04-05 Domain specific browser identifiers as replacement of browser cookies

Publications (2)

Publication Number Publication Date
KR20200131311A KR20200131311A (ko) 2020-11-23
KR102390938B1 true KR102390938B1 (ko) 2022-04-26

Family

ID=62092251

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207029517A KR102390938B1 (ko) 2018-04-05 2018-04-05 브라우저 쿠키를 대체하는 도메인 특정 브라우저 식별자

Country Status (6)

Country Link
US (2) US11601404B2 (ko)
EP (2) EP3759638B1 (ko)
JP (1) JP7132350B2 (ko)
KR (1) KR102390938B1 (ko)
CN (1) CN112088374B (ko)
WO (1) WO2019194811A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942909B2 (en) * 2018-09-25 2021-03-09 Salesforce.Com, Inc. Efficient production and consumption for data changes in a database under high concurrency
CN111600952B (zh) * 2020-05-15 2021-09-07 华人运通(上海)云计算科技有限公司 场景推送方法、执行方法、装置、终端、服务器和系统
CN111787088B (zh) * 2020-06-28 2023-04-28 百度在线网络技术(北京)有限公司 小程序数据处理的方法和装置
US11917022B1 (en) * 2020-07-15 2024-02-27 Quantcast Corporation Consent system
CN111881387B (zh) * 2020-07-21 2024-04-26 北京百度网讯科技有限公司 用于小程序的数据处理方法、装置、设备和介质
IL276440A (en) * 2020-08-02 2022-03-01 Google Llc Using multilateral calculation techniques and k-anonymity to protect confidential information
CN112672354B (zh) * 2020-12-25 2022-02-01 四川长虹电器股份有限公司 一种应用程序升级认证方法、装置及智能终端设备
TWI778533B (zh) * 2021-03-03 2022-09-21 樂建中 網頁瀏覽器之瀏覽軌跡記錄方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172091A1 (en) * 2000-05-18 2009-07-02 Maquis Techtrix Llc System and Method for Implementing Click-through for Browser Executed Software Including Ad Proxy and Proxy Cookie Caching
US20170180127A1 (en) * 2012-08-30 2017-06-22 The Nielsen Company (Us), Llc Methods and apparatus to collect distributed user information for media impressions and search terms

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478434B1 (en) * 2000-05-31 2009-01-13 International Business Machines Corporation Authentication and authorization protocol for secure web-based access to a protected resource
JP4569828B2 (ja) * 2003-07-14 2010-10-27 ソニー株式会社 通信方法、通信装置およびプログラム
MX2008013880A (es) * 2006-05-02 2009-04-02 Koninkl Philips Electronics Nv Acceso mejorado a dominios autorizados.
US7904470B2 (en) * 2007-06-13 2011-03-08 Sap Ag Discovery service for electronic data environment
US20110016197A1 (en) 2008-03-05 2011-01-20 Yoshiko Shiimori Proxy server, and method and program for controlling same
US8196177B2 (en) * 2008-10-16 2012-06-05 International Business Machines Corporation Digital rights management (DRM)-enabled policy management for a service provider in a federated environment
US8874662B2 (en) * 2008-10-17 2014-10-28 Alan Graham Method and apparatus for controlling unsolicited messages in a messaging network using an authoritative domain name server
JP5397071B2 (ja) 2009-07-31 2014-01-22 富士通株式会社 中継装置、中継方法、および中継プログラム
US20110055552A1 (en) * 2009-09-02 2011-03-03 Max Planck Gesellschaft Zur Foerderung Der Wissenschaften Private, accountable, and personalized information delivery in a networked system
EP2534810B1 (en) * 2010-02-09 2014-04-16 InterDigital Patent Holdings, Inc. Method and apparatus for trusted federated identity
US9232011B2 (en) * 2010-03-26 2016-01-05 Microsoft Technology Licensing, Llc Tracking navigation flows within the same browser tab
US20130208893A1 (en) * 2012-02-13 2013-08-15 Eugene Shablygin Sharing secure data
CN102638581B (zh) * 2012-03-31 2015-11-25 北京奇虎科技有限公司 一种cookie信息存储方法和系统
US10084595B2 (en) * 2012-08-24 2018-09-25 At&T Intellectual Property I, L.P. Algorithm-based anonymous customer references
US9571390B2 (en) * 2013-11-25 2017-02-14 Cisco Technology, Inc. Path optimization for adaptive streaming
US10445769B2 (en) * 2013-12-24 2019-10-15 Google Llc Systems and methods for audience measurement
US10049392B2 (en) 2014-05-20 2018-08-14 Oath Inc. Systems and methods for identity-protected advertising network
US10600076B2 (en) * 2014-08-14 2020-03-24 Google Llc Systems and methods for obfuscated audience measurement
KR102333395B1 (ko) * 2015-02-17 2021-12-03 삼성전자 주식회사 이동통신 시스템의 단말에서 프로파일 수신을 위한 방법 및 장치
US9798896B2 (en) * 2015-06-22 2017-10-24 Qualcomm Incorporated Managing unwanted tracking on a device
GB2543312A (en) * 2015-10-14 2017-04-19 Smartpipe Tech Ltd Network identification as a service
US10348684B2 (en) * 2016-09-01 2019-07-09 Hewlett Packard Enterprise Development Lp Filtering of packets for packet types at network devices
US10630648B1 (en) * 2017-02-08 2020-04-21 United Services Automobile Association (Usaa) Systems and methods for facilitating digital document communication
US10902016B2 (en) * 2018-02-12 2021-01-26 Artem Shamsutdinov Autonomous interdependent repositories

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172091A1 (en) * 2000-05-18 2009-07-02 Maquis Techtrix Llc System and Method for Implementing Click-through for Browser Executed Software Including Ad Proxy and Proxy Cookie Caching
US20170180127A1 (en) * 2012-08-30 2017-06-22 The Nielsen Company (Us), Llc Methods and apparatus to collect distributed user information for media impressions and search terms

Also Published As

Publication number Publication date
US20210336937A1 (en) 2021-10-28
EP4365806A2 (en) 2024-05-08
CN112088374B (zh) 2024-04-30
WO2019194811A1 (en) 2019-10-10
US20230188507A1 (en) 2023-06-15
CN112088374A (zh) 2020-12-15
JP2021519981A (ja) 2021-08-12
EP3759638A1 (en) 2021-01-06
US11601404B2 (en) 2023-03-07
KR20200131311A (ko) 2020-11-23
JP7132350B2 (ja) 2022-09-06
EP3759638B1 (en) 2024-03-27

Similar Documents

Publication Publication Date Title
KR102390938B1 (ko) 브라우저 쿠키를 대체하는 도메인 특정 브라우저 식별자
EP3763108B1 (en) Restricted environments for message generation in networked environments
KR102346120B1 (ko) 도메인 특정 브라우저 식별자 자체 인증
JP7442553B2 (ja) 集約されたコンバージョンの測定
JP7074926B1 (ja) コンテンツ要求データの暗号化のためのシステムおよび方法
JP2023503802A (ja) プライバシーを保護するデータ収集および分析
US11968297B2 (en) Online privacy preserving techniques
JP2023551077A (ja) プライバシー保護のための局所的暗号技法

Legal Events

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