KR20230002717A - 안전한 다자간 컴퓨팅을 사용한 유연한 콘텐츠 선택 프로세스 - Google Patents
안전한 다자간 컴퓨팅을 사용한 유연한 콘텐츠 선택 프로세스 Download PDFInfo
- Publication number
- KR20230002717A KR20230002717A KR1020227039722A KR20227039722A KR20230002717A KR 20230002717 A KR20230002717 A KR 20230002717A KR 1020227039722 A KR1020227039722 A KR 1020227039722A KR 20227039722 A KR20227039722 A KR 20227039722A KR 20230002717 A KR20230002717 A KR 20230002717A
- Authority
- KR
- South Korea
- Prior art keywords
- digital component
- digital
- selection
- value
- mpc2
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/466—Electronic auction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Studio Circuits (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
이 문서는 보안 MPC를 사용하여 사용자 개인 정보를 보호하고 선택 프로세스에 관련된 각 당사자의 데이터 보안을 보호하는 방식으로 디지털 컴포넌트를 선택하는 것과 관련이 있다. 일 양태에서, 방법은 클라이언트 장치로부터 보안 MPC 시스템의 제1 서버에 의해 디지털 컴포넌트 요청을 수신하는 단계를 포함한다. 제1 서버는 세트의 각 디지털 컴포넌트에 대해, 선택 값과 우선순위 계층을 식별한다. 각 계층에 대해, 제1 서버는 보안 MPC 시스템의 하나 이상의 제2 서버와 협력하여 보안 MPC 프로세스를 사용하여 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 제1 비밀 공유를 결정한다. 제1 서버는 주어진 디지털 컴포넌트가 승자 디지털 컴포넌트임을 나타내는 승자 파라미터가 주어진 디지털 컴포넌트에 대해 가장 높은 계층을 식별한다.
Description
본 명세서는 암호화 및 데이터 보안에 관한 것이다.
보안적 다자간 연산(secure multi-party computation: MPC)은, 개별 당사자가 다른 당사자의 데이터 또는 중간 연산된 값들에 액세스할 수 없는데 반해, 출력들은 지정된 당사자에게만 공개(release)되도록 연산을 여러 당사자들에 걸쳐 분산함으로써 데이터에 대한 액세스를 방지하는 암호화 프로토콜들의 패밀리이다. MPC 컴퓨팅 시스템은 일반적으로 비밀 공유 또는 기타 암호화된 형태의 데이터를 사용하여 연산을 수행하고 당사자들 간의 보안적 정보 교환을 수행한다.
일반적으로 본 명세서에 기술된 주제의 혁신적인 양태는 방법으로 구현될 수 있으며, 방법은, 보안 다자간 연산(MPC) 시스템의 제1 서버에 의해 그리고 클라이언트 장치로부터 디지털 컴포넌트 요청을 수신하는 단계; 디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트에 대한 선택 값 및 상기 디지털 컴포넌트에 대한 우선순위 계층(priority tier)을 식별하는 단계; 복수의 우선순위 계층들 각각에 대해: 상기 보안 MPC 시스템의 하나 이상의 제2 서버와 협력하여 보안 MPC 프로세스를 사용하여, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 제1 비밀 공유(share)를 결정하는 단계 -상기 제1 비밀 공유(share)를 결정하는 단계는, 상기 우선순위 계층의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트가 선택을 위한 후보인지 여부를 나타내는 후보 파라미터의 제1 비밀 공유를 결정하는 단계; 그리고 (i) 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 후보 파라미터의 값의 제1 비밀 공유, (ii) 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 후보 파라미터의 하나 이상의 제2 비밀 공유, 그리고 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 선택 값에 기초하여 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 승자 파라미터의 비밀 공유를 결정하는 단계를 포함함-; 주어진 디지털 컴포넌트가 상기 계층에 대한 승자 디지털 컴포넌트임을 나타내는 승자 파라미터를 갖는 복수의 계층들 중 최상위 계층을 식별하는 단계; 그리고 상기 주어진 디지털 컴포넌트를 식별하는 선택 결과의 제1 비밀 공유를 상기 클라이언트 장치에 제공하는 단계를 포함한다. 이 양태의 다른 구현은 컴퓨터 저장 장치에 인코딩된 방법의 양태를 수행하도록 구성된 대응하는 장치, 시스템 및 컴퓨터 프로그램을 포함한다.
이러한 구현 및 기타 구현은 각각 다음 기능 중 하나 이상을 선택적으로 포함할 수 있다. 일부 양태들에서, 상기 보안 MPC 시스템의 하나 이상의 제2 서버와 협력하여 상기 보안 MPC 프로세스를 사용하여, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 제1 비밀 공유를 결정하는 단계는, 병렬로 각 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 승자 파라미터의 제1 비밀 공유를 결정하는 단계를 포함한다. 이 실시예는 전체 디지털 콘텐츠 선택 프로세스가 수행되는 속도를 향상시킬 수 있기 때문에 특히 유리하다.
일부 양태들에서, 상기 보안 MPC 시스템의 하나 이상의 제2 서버와 협력하여 상기 보안 MPC 프로세스를 사용하여, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 제1 비밀 공유를 결정하는 단계는, 최상위 우선순위 계층에서 최하위 우선순위 계층까지의 시퀀스에서 각 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 승자 파라미터의 상기 제1 비밀 공유를 결정하는 단계를 포함한다. 이 실시예는 프로세스의 속도가 중요하지 않은 상황에서 특히 유리하다. 대신에, 이 특정 실시예는 더 높은 우선순위 계층이 승자 디지털 컴포넌트를 포함하는 경우 더 낮은 우선순위 계층에 대한 계산 낭비를 방지함으로써 계산 자원을 효율적으로 사용한다.
일부 양태들에서, 상기 우선순위 계층의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트가 선택을 위한 후보인지 여부를 나타내는 후보 파라미터의 제1 비밀 공유를 결정하는 단계는, 상기 하나 이상의 제2 서버 각각과 협력하여, 특정 디지털 컴포넌트에 대한 하나 이상의 조건들에 대한 비밀 공유들에 기초하여 상기 특정 디지털 컴포넌트에 대한 상기 후보 파라미터의 상기 제1 비밀 공유를 결정하는 단계를 포함한다.
일부 양태에서, 상기 디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트에 대한 선택 값을 식별하는 단계는, 주어진 콘텐츠 플랫폼에 대해, 상기 디지털 컴포넌트 요청이 수신된 전자 리소스의 발행자(publisher)에 의해 설정된 부스트(boost) 또는 상기 발행자를 위한 콘텐츠 플랫폼을 식별하는 단계; 그리고 상기 부스트를 사용하여 상기 콘텐츠 플랫폼의 각 디지털 컴포넌트에 대한 상기 선택 값을 조정하는 단계를 포함한다.
일부 양태에서, 방법은, 상기 디지털 컴포넌트 요청이 수신된 전자 리소스의 발행자에 의해 설정된 선택 값 하한(floor)을 식별하는 단계; 그리고 상기 디지털 컴포넌트 세트로부터, 상기 선택 값 하한보다 작은 선택 값을 갖는 하나 이상의 디지털 컴포넌트를 필터링하는 단계를 더 포함한다. 디지털 컴포넌트 세트로부터 필터링된 디지털 컴포넌트는 불필요하고/하거나 관련이 없는 디지털 컴포넌트에 대응할 수 있다(선택값이 하한값보다 낮기 때문에). 따라서 이러한 방식으로 불필요한 디지털 컴포넌트를 필터링하면 네트워크 대역폭 사용량과 계산 리소스 사용량을 줄일 수 있으므로 전체 콘텐츠 선택 프로세스를 보다 효율적으로 만들 수 있다.
일부 양태들에서, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 비밀 공유를 결정하는 단계는, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 선택 값에 기초하여 상기 우선순위 계층의 디지털 컴포넌트들을 오더링(ordering)하는 단계; 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 후보 파라미터의 제1 비밀 공유 및 상기 오더링에 적어도 기초하여 계층의 각 디지털 컴포넌트에 대한 누적 값의 제1 비밀 공유를 결정하는 단계 -디지털 컴포넌트에 대한 상기 누적 값은 디지털 컴포넌트보다 더 높은 선택 값을 갖는 우선순위 계층의 후보 디지털 컴포넌트의 양(quantity)을 나타냄-; 그리고 상기 우선순위 계층의 각 디지털 컴포넌트에 대해, 디지털 컴포넌트에 대한 상기 후보 파라미터의 제1 비밀 공유, 디지털 컴포넌트에 대한 상기 후보 파라미터의 하나 이상의 제2 비밀 공유 각각, 및 디지털 컴포넌트에 대한 상기 누적 값에 기초하여 디지털 컴포넌트에 대한 상기 승자 파라미터의 제1 비밀 공유를 결정하는 단계를 포함한다. 일부 양태는, 제2 값 선택 프로세스에 대응하는 제2 선택 값을 결정하는 단계를 더 포함하고, 상기 제2 선택 값을 결정하는 단계는, 각각의 우선순위 계층에 대해, 주어진 디지털 컴포넌트가 상기 우선순위 계층에 포함되는지 여부를 나타내는 승자 계층 파라미터(winning tier parameter)의 제1 비밀 공유를 결정하는 단계; 상기 디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해, 디지털 컴포넌트에 대한 상기 선택 값이 후보 디지털 컴포넌트 세트에서 두 번째로 가장 높은 선택 값일 수 있는지 여부를 나타내는 제2 선택 값 파라미터의 제1 비밀 공유를 결정하는 단계; 그리고 (i) 디지털 컴포넌트에 대한 상기 후보 파라미터는 디지털 컴포넌트가 선택을 위한 후보임을 나타내고, (ii) 상기 승자 계층 파라미터는 주어진 디지털 컴포넌트가 승자 계층에 포함되어 있음을 나타내고, (iii) 상기 제2 선택 값 파라미터는 디지털 컴포넌트에 대한 상기 선택 값이 후보 디지털 컴포넌트 세트에서 두 번째로 가장 높은 선택 값일 수 있음을 나타내는 디지털 컴포넌트에 대한 선택 값을 제2 선택 값으로서 식별하는 단계를 더 포함한다.
본 명세서에 기술된 주제는 다음 이점들 중 하나 이상을 실현하도록 특정 실시예에서 구현될 수 있다. 사용자 정보 공유에 기초하여 디지털 컴포넌트를 선택하기 위해 서로 다른 당사자가 운영하는 2 이상의 MPC 서버에서 수행하는 보안 MPC 프로세스를 사용하면 MPC 서버 간에 무단 결탁이 없는 한 MPC 서버 또는 다른 당사자가 사용자 정보에 일반 텍스트(cleartext)로 액세스할 수 없다. 이러한 방식으로 적어도 하나의 MPC 서버가 정직한 한 사용자 데이터 개인 정보가 보호된다.
디지털 컴포넌트 선택 프로세스에서, MPC 서버들은 당사자들이 일반 텍스트로 사용자 정보에 액세스하는 것을 방지하면서 하나 이상의 적격 조건을 만족하는 적격 디지털 컴포넌트로부터 선택을 할 수 있다. 적격성 조건들은 다른 무엇보다도 특히 디지털 컴포넌트의 배포 방식 또는 빈도에 대한 제한 및 지침을 포함할 수 있다. 이들 조건은 사용자 그룹 멤버십, 빈도 제어, 음소거(예: 사용자 차단), 사용자의 마이크로 목표팅을 방지하기 위한 k-익명성, 및/또는 속도(pacing) 및 예산 제약을 포함할 수 있다.
디지털 컴포넌트의 선택은 일반적으로 콘텐츠가 클라이언트 디바이스에 로드될 때 발생하는 온라인 프로세스이므로, 이 프로세스가 예를 들어 밀리초 이내에 신속하게 완료되는 것이 중요하다. 이 문서에서 설명하는 기술은 클라이언트 디바이스와 MPC 클러스터 간에 전송되는 데이터 크기를 줄이고, MPC 클러스터에 필요한 연산 리소스를 줄이고, 그리고 MPC의 서버들에 의해 수행되는 왕복 통신 및 연산의 수 및 서버 간에 전송되는 데이터 크기를 줄임으로써 디지털 컴포넌트들이 선택되는 속도를 향상시킨다. 클라이언트 디바이스와 서버 사이의 데이터 크기 감소는 또한 예를 들어 클라이언트 디바이스가 배터리 전원으로 실행되는 모바일 디바이스인 경우 클라이언트 디바이스의 네트워크 대역폭 소비 및 배터리 소비를 줄인다.
사용자의 클라이언트 디바이스는 사용자를 구성원으로 포함하고 확률적 데이터 구조를 제공할 수 있는 사용자 그룹을 나타내는 뻐꾸기 필터 또는 블룸 필터와 같은 확률적 데이터 구조 또는 MPC 클러스터의 서버에 확률적 데이터 구조를 나타내는 데이터를 생성할 수 있다. 이러한 방식으로 확률적 데이터 구조를 사용하면 사용자의 그룹 구성원에 대한 액세스를 방지하여 사용자 개인 정보를 보호하고 데이터 보안을 유지하며, 확률적 데이터 구조는 데이터 세트의 압축된 표현이므로 MPC 클러스터에 제공되는 정보의 크기를 줄일 수 있다. 확률적 데이터 구조를 나타내는 데이터가 생성되어 데이터의 일부만 수신하는 당사자가 다른 부분을 가지거나, 예를 들어 보안 MPC 프로세스를 사용하여 다른 MPC 서버와 협력하지 않고 사용자의 사용자 그룹 구성원에 액세스할 수 없도록 MPC 서버에 전송될 수 있다. 데이터 크기의 감소는 정보를 전송하는 데 소비되는 대역폭의 양을 줄이고 정보 전송의 지연을 줄이며, 정보를 전송하는 데 필요한 배터리로 실행되는 장치(예: 모바일 장치)에 대한 처리 전력 및 관련 배터리 전력의 양을 줄인다.
MPC 클러스터는 보안 MPC 프로세스를 사용하여 MPC 클러스터가 선택한 선택된 디지털 컴포넌트를 식별하는 결과의 비밀 공유를 전송할 수 있다. 디지털 컴포넌트 세트의 전체 또는 대부분에 대한 정보가 아닌 오로지 선택된 디지털 컴포넌트에 대한 결과의 비밀 공유를 전송함으로써, 결과를 송수신하는데 있어 대기 시간과 소비된 대역폭, 처리 전력 및 배터리 전력을 유사하게 줄일 수 있다. 이것은 또한 정보가 클라이언트 디바이스에 제공되는 디지털 컴포넌트의 수를 제한함으로써 디지털 컴포넌트에 대한 선택 값을 MPC 클러스터에 제출하는 콘텐츠 플랫폼의 기밀 정보의 잠재적 누출을 줄인다.
콘텐츠 프리젠테이션의 대기 시간을 감소시키는 것은 또한 그러한 콘텐츠가 도착하기를 기다리는 동안 사용자 디바이스에서 발생하는 오류의 수를 감소시킨다. 콘텐츠는 종종 밀리초 단위로 무선 네트워크로 연결된 모바일 장치에 제공되어야 하므로 콘텐츠 선택 및 제공에 있어서 지연 시간을 줄이는 것은 오류를 방지하고 사용자의 좌절을 줄이는 데 중요하다.
이 문서에 설명된 보안 MPC 기술은 유연하고 다양한 유형의 선택 프로세스 및/또는 플로어, 계층 및/또는 부스트와 같은 추가적인 선택 프로세스 특징들을 지원한다. 이 문서에 설명된 보안 MPC 기술은 사용자 개인 정보 및 데이터 보안을 유지하면서 이러한 특징들을 가능하게 한다. 계층들을 사용하는 경우, 다중 선택 프로세스들이 디지털 컴포넌트 선택의 대기 시간을 줄이기 위해 병렬로 수행되거나 불필요한 연산을 줄이기 위해 시퀀스로 수행될 수 있다. 디지털 컴포넌트 선택 프로세스의 효율성을 개선하는 데 사용할 수 있는 메트릭을 집계하여 사용자 개인 정보를 보호하는 방식으로 적절한 당사자에게 보고할 수 있다.
본 명세서에서 설명된 주제의 하나 이상의 실시예의 세부사항들이 첨부 도면 및 아래의 상세한 설명에서 제시된다. 주제의 다른 특징, 양태 및 장점들은 상세한 설명, 도면 및 청구범위에서 명백해질 것이다.
도 1은 MPC 클러스터가 클라이언트 디바이스들에 배포를 위해 디지털 컴포넌트를 선택하기 위한 보안 MPC 프로세스를 수행하는 환경의 블록도이다.
도 2는 도 1의 환경 내에서의 예시적인 데이터 흐름을 도시한다.
도 3은 클라이언트 디바이스에 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 4는 클라이언트 디바이스로의 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 5는 클라이언트 디바이스로의 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 6은 디지털 컴포넌트 선택 프로세스에서 디지털 컴포넌트에 대한 가장 높은 다른 선택 값을 결정하기 위한 예시적인 프로세스의 다이어그램이다.
도 7은 실제 디지털 컴포넌트 선택 프로세스와 반사실적 디지털 컴포넌트 선택 프로세스의 제1 선택 값 사이의 차이를 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 8은 비밀 공유를 사용하여 전송된 블룸 필터를 사용하여 사용자가 사용자 그룹의 구성원인지 여부를 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 9는 예시적인 MPC 컴퓨팅 시스템의 블록도이다.
도 10은 예시적인 컴퓨터 시스템의 블록도이다.
다양한 도면에서 동일한 참조 번호 및 명칭은 동일한 요소를 나타낸다.
도 2는 도 1의 환경 내에서의 예시적인 데이터 흐름을 도시한다.
도 3은 클라이언트 디바이스에 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 4는 클라이언트 디바이스로의 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 5는 클라이언트 디바이스로의 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 6은 디지털 컴포넌트 선택 프로세스에서 디지털 컴포넌트에 대한 가장 높은 다른 선택 값을 결정하기 위한 예시적인 프로세스의 다이어그램이다.
도 7은 실제 디지털 컴포넌트 선택 프로세스와 반사실적 디지털 컴포넌트 선택 프로세스의 제1 선택 값 사이의 차이를 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 8은 비밀 공유를 사용하여 전송된 블룸 필터를 사용하여 사용자가 사용자 그룹의 구성원인지 여부를 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 9는 예시적인 MPC 컴퓨팅 시스템의 블록도이다.
도 10은 예시적인 컴퓨터 시스템의 블록도이다.
다양한 도면에서 동일한 참조 번호 및 명칭은 동일한 요소를 나타낸다.
일반적으로, 이 문서는 사용자 개인 정보를 보호하고 선택 프로세스에 관련된 각 당사자의 데이터 보안성을 보호하는 방식으로 디지털 컴포넌트를 선택하기 위해 보안적 MPC를 사용하기 위한 시스템 및 기술을 설명한다. 선택 프로세스의 개선 사항들은 디지털 컴포넌트 선택 프로세스의 다양한 변형을 지원하여, 디지털 컴포넌트 선택을 관리하는 콘텐츠 발행자 및 디지털 컴포넌트의 선택을 관리하는 콘텐츠 플랫폼에 유연성을 제공하는 동시에 사용자 개인 정보 및 데이터 보안을 유지한다. 예를 들어, 이 문서에 설명된 MPC 클러스터는 계층, 선택 값 부스트, 제1 값 선택 프로세스, 제2 값 선택 프로세스 및/또는 이들 변형들 중 하나 이상의 조합을 포함하는 보안적 디지털 컴포넌트 선택 프로세스를 수행할 수 있다. 이 문서에 설명된 기술은 이러한 유연성, 개인 정보 보호 및 데이터 보안을 허용하는 동시에 요청을 받은 후 디지털 컴포넌트를 디스플레이하는 클라이언트 디바이스로/로부터 보내지는 데이터 크기를 최소화하면서 짧은 시간(예컨대, 수밀리초 이내)에 디지털 컴포넌트를 여전히 제공한다.
MPC 클러스터는 또한 미래의 디지털 컴포넌트 선택 프로세스를 더욱 향상시키기 위해 사용될 수 있는 완료된 선택 프로세스에 기초하여 정보, 예를 들어 메트릭을 생성할 수 있다. 이 정보는 사용자 데이터 및 발행자 및/또는 콘텐츠 플렛폼에 대한 데이터가 MPC 클러스터 및/또는 다른 당사자의 서버들 간의 무단 결탁 없이 액세스할 수 없도록 보안적 MPC를 사용하여 생성될 수 있다. 이 정보는 오직 수신자만이 일반텍스트(cleartext)로 정보에 액세스할 수 있도록 암호화된 형식(예컨대, 비밀 공유(비밀 쉐어)로서)으로 적절한 당사자에게 보고될 수 있다. 일부 구현에서, 사용자 개인 정보를 보호하기 위해, 의도된 수신자는 차등 개인 정보 노이즈가 적용된 일반텍스트 및/또는 집계 형식의 정보에 액세스할 수 있다. 일반텍스트는 계산적으로 태그가 지정되지 않거나 특수하게 포멧되거나 혹은 키나 기타 암호 해독 장치 또는 기타 암호 해독 프로세스 없이 보거나 사용할 수 있는 형식으로 이진 파일을 포함하는 코드 또는 데이터로 작성되는 텍스트이다.
이 문서에서, MPC 클러스터에 의해 비밀 공유(비밀 쉐어)에 대해 수행된 일부 계산은 비밀 공유(비밀 쉐어) 값의 곱 또는 합으로 표시된다. 이러한 계산이 수행되는 속도를 높이기 위해, AND 연산(예컨대, 비트 AND)을 사용하여 비밀 공유(비밀 쉐어)에서 곱셈이 수행될 수 있고, XOR 연산(예컨대, 비트 XOR 연산)을 사용하여 비밀 공유에서 덧셈이 수행될 수 있다. 일부 경우에서, 하나의 일반 텍스트 정수가 Z2에서 0 또는 1을 나타내는 비밀 공유와 곱해질 때(즉, 모듈로 2의 2개의 공유의 합계가 0 또는 1임) 곱셈이나 비트 AND가 필요로 되지 않는다. 대신에, 각 컴퓨팅 시스템은 그의 공유을 평가하고 그의 공유이 1이면 정수를 리턴하고 공유이 0이면 0을 리턴할 수 있다.
도 1은 MPC 클러스터(130)가 클라이언트 디바이스(110)에 배포하기 위한 디지털 컴포넌트를 선택하기 위해 보안적 MPC 프로세스를 수행하는 환경(100)의 블록도이다. MPC 클러스터(130)는 또한 완료된 디지털 컴포넌트 선택 프로세스에 대한 정보를 생성하고, 적절한 당사자에게 정보를 제공한다. 예시적인 환경(100)은 LAN, WAN, 인터넷, 모바일 네트워크, 또는 이들의 조합과 같은 데이터 통신 네트워크(105)를 포함한다. 네트워크(105)는 클라이언트 디바이스(110), 보안적 MPC 클러스터(130), 발행자(140), 웹사이트(142), 및 콘텐츠 플랫폼, 예를 들어 공급측 플랫폼(SSP)(170) 및 수요측 플랫폼(DSP)(150)을 연결한다. 예시적인 환경(100)은 많은 상이한 클라이언트 디바이스(110), 보안적 MPC 클러스터(130), 발행자(140), 웹사이트(142), DSP(150), 및 SSP(170)를 포함한다. 웹사이트(142)는 하나 이상의 전자 리소스(145)를 포함한다. 리소스(145)는 도메인 이름과 연관될 수 있고 하나 이상의 서버에 의해 호스팅될 수 있다. 예시적인 웹 사이트는 텍스트, 이미지, 멀티미디어 콘텐츠 및 스크립트와 같은 프로그래밍 요소를 포함할 수 있는 HTML(Hypertext Markup Language) 형식의 웹 페이지 모음이다. 각각의 웹사이트(142)는 웹사이트(142)를 제어, 관리 및/또는 소유하는 엔티티인 콘텐츠 발행자(140)에 의해 유지된다.
리소스(145)는 네트워크(105)를 통해 발행자(140)에 의해 제공될 수 있고 리소스 어드레스와 연관될 수 있는 임의의 데이터이다. 리소스는, 몇 가지를 들자면, HTML 페이지, 워드 프로세싱 문서, PDF(Portable Document Format) 문서, 이미지, 비디오 및 피드 소스를 포함한다. 리소스(145)는 단어, 구, 그림 등과 같은 콘텐츠를 포함할 수 있고, 임베디드 정보(예를 들어, 메타 정보 및 하이퍼링크) 및/또는 임베디드 명령어, 예를 들어 스크립트를 포함할 수 있다.
클라이언트 디바이스(110)는 네트워크(105)를 통해 통신할 수 있는 전자 장치이다. 예시적인 클라이언트 디바이스(110)는 개인용 컴퓨터, 모바일 통신 장치, 예를 들어 스마트폰, 및 네트워크(105)를 통해 데이터를 송수신할 수 있는 다른 장치를 포함한다. 클라이언트 디바이스(110)는 또한 마이크를 통해 오디오 입력을 수용하고 스피커를 통해 오디오 출력을 출력하는 디지털 어시스턴트 장치를 포함할 수 있다. 디지털 어시스턴트는, 디지털 어시스턴트가 오디오 입력을 수용하기 위해 마이크를 활성화하는 "핫워드" 또는 "핫문구"를 검출하면 (예컨대, 오디오 입력을 수용할 준비가 되는)청취 모드로 전환될 수 있다. 디지털 어시스턴트 디바이스는 또한 이미지를 캡처하고 정보를 시각적으로 제시하기 위한 카메라 및/또는 디스플레이를 포함할 수 있다. 디지털 어시스턴트는 웨어러블 장치(예컨대, 시계 또는 안경), 스마트폰, 스피커 장치, 태블릿 장치 또는 다른 하드웨어 장치를 포함하는 다양한 형태의 하드웨어 장치로 구현될 수 있다. 클라이언트 디바이스(110)는 또한 디지털 미디어 장치, 예를 들어 텔레비전 또는 다른 디스플레이에 연결되어 텔레비전, 게임 시스템 또는 가상 현실 시스템에 비디오를 스트리밍하는 스트리밍 장치를 포함할 수 있다.
클라이언트 디바이스(110)는 일반적으로 네트워크(105)를 통한 데이터의 송수신을 용이하게 하기 위해 웹 브라우저 및/또는 네이티브 애플리케이션과 같은 애플리케이션(112)을 포함한다. 네이티브 애플리케이션은 특정 플랫폼 또는 특정 디바이스 용, 예를 들어, 특정 운영 체제를 가진 모바일 디바이스용으로 개발된 애플리케이션이다. 발행자(140)는 네이티브 애플리케이션을 개발하여 예를 들어 다운로드가 가능하게 클라이언트 디바이스(110)에 제공할 수 있다. 웹 브라우저는 예를 들어 클라이언트 디바이스(110)의 사용자가 웹 브라우저의 주소 표시 줄에 리소스(145)에 대한 리소스 주소를 입력하거나 리소스 주소를 참조하는 링크를 선택함에 응답하여 발행자(140)의 웹사이트(142)를 호스팅하는 웹 서버로부터 리소스(145)를 요청할 수 있다. 마찬가지로 기본 애플리케이션은 발행자의 원격 서버로부터 애플리케이션 콘텐츠를 요청할 수 있다.
일부 리소스, 애플리케이션 페이지, 또는 다른 애플리케이션 콘텐츠는 리소스(145) 또는 애플리케이션 페이지와 함께 디지털 컴포넌트를 디스플레이하기 위한 디지털 컴포넌트 슬롯을 포함할 수 있다. 이 문서 전체에서 사용된 "디지털 컴포넌트"라는 문구는 디지털 콘텐츠 또는 디지털 정보의 개별 단위(예컨대, 비디오 클립, 오디오 클립, 멀티미디어 클립, 이미지, 텍스트 또는 다른 콘텐츠 단위)를 나타낸다. 디지털 컴포넌트는 물리적 메모리 장치에 단일 파일 또는 파일 모음으로 전자적으로 저장될 수 있으며 디지털 컴포넌트는 비디오 파일, 오디오 파일, 멀티미디어 파일, 이미지 파일 또는 텍스트 파일의 형태를 취하고 광고 정보를 포함할 수 있어 광고는 일종의 디지털 컴포넌트가 된다. 예를 들어, 디지털 컴포넌트는 웹 페이지의 콘텐츠, 애플리케이션 콘텐츠(예를 들어, 애플리케이션 페이지), 또는 애플리케이션(112)에 의해 디스플레이되는 다른 리소스를 보완하기 위한 콘텐츠일 수 있다. 더 구체적으로, 디지털 컴포넌트는 리소스 콘텐츠에 관한 디지털 콘텐츠를 포함할 수 있으며, 예를 들어 디지털 컴포넌트는 웹 페이지 콘텐츠와 동일한 토픽 또는 관련 토픽과 관련될 수 있다. 따라서 디지털 컴포넌트의 제공은 웹 페이지 또는 애플리케이션 콘텐츠를 보완하고 일반적으로 향상시킬 수 있다.
애플리케이션(112)이 하나 이상의 디지털 컴포넌트 슬롯을 포함하는 리소스(또는 애플리케이션 콘텐츠)를 로드할 때, 애플리케이션(112)은 각 슬롯에 대한 디지털 컴포넌트를 요청할 수 있다. 일부 구현에서, 디지털 컴포넌트 슬롯은 애플리케이션(112)에 의해 처리될 때 애플리케이션(112)으로 하여금 클라이언트 디바이스(110)의 사용자에게 디스플레이하기 위한 디지털 컴포넌트를 요청하게 하는 코드, 예를 들어 하나 이상의 스크립트를 포함할 수 있다. 아래에서 설명되는 바와같이, 애플리케이션(112)은 MPC 클러스터(130) 및/또는 하나 이상의 SSP(170)로부터 디지털 컴포넌트를 요청할 수 있다. 일부 발행자(140)는 SSP(170)를 사용하여 리소스(145) 및/또는 애플리케이션(112)의 디지털 컴포넌트 슬롯에 대한 디지털 컴포넌트를 획득하는 프로세스를 관리한다. SSP(170)는 리소스 및/또는 애플리케이션에 대한 디지털 컴포넌트를 획득하는 프로세스를 자동화하는 하드웨어 및/또는 소프트웨어로 구현된 기술 플랫폼이다. 각 발행자(140)는 대응하는 SSP(170) 또는 다수의 SSP(170)를 가질 수 있다. 일부 발행자(140)는 동일한 SSP(170)를 사용할 수 있다.
디지털 컴포넌트 제공자(160)는 발행자의 리소스(145) 및 애플리케이션(112)의 디지털 컴포넌트 슬롯에 표시되는 디지털 컴포넌트를 생성(또는 달리 발행)할 수 있다. 예를 들어, 디지털 컴포넌트 제공자(160)는 디지털 컴포넌트 제공자(160)와 관련된 콘텐츠를 포함하는 디지털 컴포넌트를 생성할 수 있다. 특정 예에서, 제품 제조업체의 디지털 컴포넌트는 제품과 관련된 콘텐츠를 포함할 수 있다.
디지털 컴포넌트 제공자(160)는 DSP(150)를 사용하여 디지털 컴포넌트 슬롯에 디스플레이하기 위한 디지털 컴포넌트의 제공을 관리할 수 있다. DSP(150)는 리소스 및/또는 애플리케이션과 함께 디스플레이하기 위한 디지털 컴포넌트를 배포하는 프로세스를 자동화하는 하드웨어 및/또는 소프트웨어로 구현된 기술 플랫폼이다. DSP(150)는 디지털 컴포넌트 제공자(160)를 대신하여 복수의 SSP(170)와 인터랙션하여 복수의 상이한 발행자(140)의 리소스(145) 및/또는 애플리케이션(112)과 함께 디스플레이를 위한 디지털 컴포넌트를 제공한다. 일반적으로, DSP(150)는 (예를 들어, SSP(170)로부터) 디지털 컴포넌트에 대한 요청을 수신하고, 이 요청에 기초하여 하나 이상의 디지털 컴포넌트 제공자(160)에 의해 생성된 하나 이상의 디지털 컴포넌트에 대한 선택 값을 생성(또는 선택)할 수 있으며, 디지털 컴포넌트(예를 들어, 디지털 컴포넌트 자체 또는 디지털 컴포넌트가 다운로드될 수 있게 하는 코드)와 관련된 데이터 및 선택 파라미터를 SSP(170)에 제공한다. 선택 값은 디지털 컴포넌트 제공자(160)가 디스플레이 또는 디지털 컴포넌트와의 사용자 인터랙션을 위해 제공하고자 하는 양을 나타낼 수 있다. 그 후, SSP(170)는 클라이언트 디바이스(110)에서 디스플레이를 위한 디지털 컴포넌트를 선택하고, 예를 들어 디지털 컴포넌트 또는 디지털 컴포넌트의 다운로드를 가능하게 하는 코드를 제공함으로써 클라이언트 디바이스(110)가 디지털 컴포넌트를 디스플레이하게 하는 데이터를 클라이언트 디바이스(110)에 제공할 수 있다. 아래에서 더 상세히 설명되는 바와 같이, MPC 클러스터(130)는 사용자 개인 정보를 보존하는 방식으로 클라이언트 디바이스(110)가 디스플레이할 디지털 컴포넌트를 선택할 수 있다.
일부 경우에, 사용자가 이전에 방문 및/또는 사용자와 인터렉션한 웹 페이지, 애플리케이션 페이지, 또는 기타 전자 리소스와 관련된 디지털 컴포넌트를 수신하는 것이 사용자에게 이점이 있다. 이러한 디지털 컴포넌트를 사용자들에게 배포하기 위해 사용자들은 사용자 그룹, 예를 들어 동일하거나 유사한 토픽에 관심이 있는 사용자의 사용자 관심 그룹, 유사한 사용자들의 코호트, 또는 유사한 사용자 데이터를 포함하는 기타 그룹 유형에 할당될 수 있다. 사용자들은 특정 리소스들을 방문하거나 이 리소스들에서 특정 작업을 수행할 때 사용자 그룹들에 할당될 수 있다(예컨대, 웹 페이지에 디스플레이된 특정 항목과 인터랙션하거나 항목을 가상 장바구니에 추가). 사용자 그룹들은 디지털 컴포넌트 제공자들(160)에 의해 생성 및 업데이트될 수 있다. 즉, 각 디지털 컴포넌트 제공자(160)는 사용자들이 디지털 컴포넌트 제공자들(160)의 전자 리소스들을 방문할 때 사용자들의 그들의 사용자 그룹들에 할당할 수 있다. 사용자 그룹들은 또한 콘텐츠 플랫폼, 예를 들어 DSP(150) 및/또는 SSP(170)에 의해 생성 및/또는 업데이트될 수 있다.
사용자 개인 정보를 보호하기 위해, 사용자의 그룹 멤버십은 예를 들어, 디지털 컴포넌트 제공자, 콘텐츠 플랫폼 또는 기타 당사자에 의해서가 아닌 애플리케이션들(112) 중 하나, 클라이언트 디바이스(110)의 운영 체제, 또는 디지털 컴포넌트가 아닌 다른 신뢰 프로그램에 의해 유지될 수 있다. 특정 예에서, 신뢰 프로그램(예컨대, 웹 브라우저 또는 운영 체제)은 웹 브라우저 또는 다른 애플리케이션을 이용하는 사용자에 대해 (예컨대, 브라우저, 애플리케이션, 또는 클라이언트 디바이스(110)에 로그인한 사용자에 대해) 사용자 그룹 식별자 목록("사용자 그룹 목록")을 유지할 수 있다. 사용자 그룹 목록은 사용자를 구성원으로서 포함하는 각 사용자 그룹에 대해 사용자 그룹 식별자를 포함할 수 있다. 사용자 그룹을 생성하는 디지털 컴포넌트 제공자(160) 또는 콘텐츠 플랫폼은 그들의 사용자 그룹에 대해 사용자 그룹 식별자를 지정할 수 있다. 사용자 그룹에 대한 사용자 그룹 식별자는 그룹(예컨대, 가드닝 그룹)을 설명하거나 그룹을 나타내는 코드(예컨대, 설명이 아닌 영숫자 시퀀스)일 수 있다. 사용자에 대한 사용자 그룹 목록은 클라이언트 디바이스(110)의 보안적저장소에 저장될 수 있고/있거나 저장될 때 다른 사람들이 이 목록에 액세스하는 것을 방지하기 위해 암호화될 수 있다.
애플리케이션(112)이 디지털 컴포넌트 제공자(160)와 관련된 리소스(예를 들어, 웹 페이지), 애플리케이션 콘텐츠 또는 디지털 컴포넌트를 표시할 때, 리소스, 애플리케이션 콘텐츠 또는 디지털 컴포넌트는 애플리케이션(112)이 사용자 그룹 식별자를 사용자 그룹 목록에 추가하도록 요청할 수 있다. 이에 응답하여, 애플리케이션(112)은 하나 이상의 사용자 그룹 식별자를 사용자 그룹 목록에 추가하고 사용자 그룹 목록을 보안적으로 저장할 수 있다. 예를 들어, 사용자가 특정 항목에 대한 추가 정보를 보기 위해 선택하는 웹 페이지는 특정 항목과 관련된 사용자 그룹에 사용자를 추가할 수 있다.
일부 구현들에서, MPC 클러스터(130)는 사용자에게 관심이 있을 수 있거나 다른 방식으로 사용자/사용자 디바이스에 유익할 수 있는 디지털 컴포넌트들을 선택하기 위해 사용자의 사용자 그룹 멤버십을 사용할 수 있다. 예를 들어, 이러한 디지털 컴포넌트 또는 다른 콘텐츠는 사용자 경험을 개선하거나, 사용자 장치의 실행을 개선하거나, 또는 어떤 다른 방식으로 사용자 또는 클라이언트 디바이스(110)에 이익이 되는 데이터를 포함할 수 있다. 그러나, 사용자의 사용자 그룹 목록의 사용자 그룹 식별자가 제공될 수 있고, MPC 클러스터(130)의 컴퓨팅 시스템(MPC1 및 MPC2)이 일반텍스트로 사용자에 대한 사용자 그룹 식별자에 액세스하는 것을 방지하는 방식으로 디지털 컴포넌트를 선택하는 데 사용될 수 있으므로 사용자 그룹 구성원 데이터를 사용하여 디지털 컴포넌트를 선택할 때 사용자 개인 정보를 보호할 수 있다. MPC 클러스터(130)는 또한 아래에서 더 상세히 설명되는 바와 같이 디지털 컴포넌트를 선택하기 위해 다른 조건들을 사용할 수 있다.
보안적 MPC 클러스터(130)는 보안적 MPC 프로세스를 수행하여, 일반텍스트에서 그룹 멤버쉽 또는 다른 사용자 정보에 액세스함이 없이 사용자의 그룹 멤버쉽과 그러한 사용자 정보로부터 파생된 신호에 기초하여 사용자들의 클라이언트 디바이스들에 배포할 디지털 컴포넌트를 선택하는 2개의 컴퓨팅 시스템(MPC1 및 MPC2)을 포함한다. 예시적인 MPC 클러스터(130)가 2개의 컴퓨팅 시스템을 포함하지만, MPC 클러스터(130)가 하나보다 많은 컴퓨팅 시스템을 포함하는한 더 많은 컴퓨팅 시스템이 또한 사용될 수 있다. 예를 들어, MPC 클러스터(130)는 3개의 컴퓨팅 시스템, 4개의 컴퓨팅 시스템, 또는 다른 적절한 수의 컴퓨팅 시스템을 포함할 수 있다. MPC 클러스터(130)에서 더 많은 컴퓨팅 시스템을 사용하는 것은 더 많은 보안을 제공할 수 있지만 MPC 프로세스의 복잡성을 증가시킬 수도 있다. 각 컴퓨팅 시스템은 서버 또는 기타 적절한 유형의 컴퓨터일 수 있다. MPC 컴퓨팅 시스템에 대한 예시적인 아키텍처가 도 9에 도시되어 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 상이한 엔티티들에 의해 동작될 수 있다. 이러한 방식으로 각 엔티티는 일반텍스트에서 사용자의 그룹 멤버쉽 또는 기타 사용자 정보 또는 이러한 사용자 정보에서 파생된 신호에 액세스할 수 없다. 예를 들어, 컴퓨팅 시스템(MPC1 또는 MPC2) 중 하나는 사용자, 발행자(140), DSP(150), SSP(170) 및 디지털 컴포넌트 제공자(160)와 다른 신뢰 당사자에 의해 운영될 수 있다. 예를 들어, 산업 그룹, 정부 그룹 또는 브라우저 개발자는 컴퓨팅 시스템 (MPC1 및 MPC2) 중 하나를 유지 및 운영할 수 있다. 다른 컴퓨팅 시스템은 이러한 그룹 중 다른 하나에 의해 운영되어, 다른 신뢰 당사자가 각 컴퓨팅 시스템(MPC1 및 MPC2)를 운영하도록 할 수 있다. 장점적으로, 상이한 컴퓨팅 시스템(MPC1 및 MPC2)를 운영하는 상이한 당사자는 사용자 개인 정보를 위험에 빠뜨리기 위해 공모할 인센티브를 갖지 않을 수 있다. 일부 구현에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 구조적으로 분리되고 이 문서에 설명된 보안적 MPC 프로세스를 수행하는 것 외에는 서로 통신하지 않도록 모니터링된다.
각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트(예를 들어, 디지털 컴포넌트에 대한 크리에이티브), 디지털 컴포넌트에 대한 선택 값, 및 디지털 컴포넌트에 대한 기타 정보를 저장할 수 있다. 예를 들어, 컴퓨팅 시스템 (MPC1 및 MPC2)는 이전 디지털 컴포넌트 선택 프로세스의 일부로서 SSP(170) 및/또는 DSP(150)로부터 이전에 수신되거나 혹은 그렇지않은 경우 예컨대 디지털 컴포넌트 선택 프로세스에서 사용하기 위해 사전에 제공되는 컴퓨팅 시스템(MPC1 및 MPC2)에 제공되는 선택 값들을 캐시할 수 있다. 이러한 식으로, MPC 클러스터(130)는 클라이언트 디바이스(110)로부터 수신된 미래의 디지털 컴포넌트 요청에 응답하여 클라이언트 디바이스(110)에 배포하기 위한 디지털 컴포넌트를 선택하기 위해 선택 값을 사용할 수 있다. 그러나, 디지털 컴포넌트 자체가 반드시 MPC 클러스터(130)에 의해 저장될 필요는 없다. 대신에, MPC 클러스터(130)는 각각의 저장된 디지털 컴포넌트에 대해 데이터, 예를 들어, 디지털 컴포넌트가 다운로드될 수 있는 네트워크 위치를 참조하는 코드를 저장할 수 있다. 일부 구현에서, 디지털 컴포넌트 자체는 저장되고 MPC 클러스터(130)에 의해 애플리케이션(112)에 직접 리턴된다. 이러한 구현은 장치의 배터리 및 대역폭을 소모할 수 있는 추가 요청에서 디지털 컴포넌트 및/또는 디지털 컴포넌트에 대한 다른 정보를 가져오기 위해 애플리케이션(112)의 필요성을 감소시키고 장치를 추적하기 위해 디지털 컴포넌트 자체를 호스팅하는 서버에 대한 추가 신호가 누출될 수 있다.
각각의 저장된 디지털 컴포넌트에 대해, 각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트에 대한 선택 값을 결정하기 위해 컴퓨팅 시스템(MPC1 및 MPC2)에 의해 사용될 수 있는 값의 벡터 또는 선택 값을 저장할 수 있다. 각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 또한 디지털 컴포넌트가 주어진 디지털 컴포넌트 선택 프로세스에 대한 적격 후보가 되기 위해 충족되어야 하는 조건(들)을 정의하는 조건 데이터를 각 디지털 컴포넌트에 대해 저장할 수 있다. 저장된 디지털 컴포넌트는 0개 이상의 해당 조건을 가질 수 있다.
하나의 예시적인 조건은 선택된 디지털 컴포넌트가 제공될 사용자가 저장된 디지털 컴포넌트에 대응하는 사용자 그룹의 구성원이라는 것이다. 이 조건은 사용자 그룹 멤버쉽 조건이라고 할 수 있다. 이 예에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 저장된 디지털 컴포넌트에 대해 디지털 컴포넌트에 대응하는 하나 이상의 사용자 그룹 식별자의 세트를 저장할 수 있다. 이들 사용자 그룹 식별자는 저장된 디지털 컴포넌트가 제공될 수 있는 사용자 그룹을 식별한다. 즉, 저장된 디지털 컴포넌트는 저장된 디지털 컴포넌트에 대한 하나 이상의 사용자 그룹 식별자 세트에 의해 식별되는 사용자 그룹 중 적어도 하나의 구성원인 사용자에게 제공할 디지털 컴포넌트를 선택하기 위해 수행되는 디지털 컴포넌트 선택 프로세스의 후보일 뿐이다.
저장된 디지털 컴포넌트에 대한 다른 예시적인 조건은 디지털 컴포넌트 또는 특정 카테고리의 디지털 컴포넌트가 주어진 기간 동안 최대 횟수만큼 동일한 사용자에게만 제공될 수 있음을 나타내는 빈도 상한 조건이다. 디지털 컴포넌트에 대한 다른 예시적인 조건은 디지털 컴포넌트가 사용자에 의해 차단, 예를 들어 음소거되었음을 나타내는 차단된 디지털 컴포넌트 조건이다. 이들 예시적인 조건에 대해, 컴퓨팅 시스템(MPC1 및 MPC2)은 저장소로부터 다수의 사용자 각각에 대해 사용자에게 제공할 수 없는 디지털 컴포넌트를 나타내는 확률적 데이터 구조, 예를 들어 뻐꾸기 필터 또는 블룸 필터를 수신할 수 있다. 예를 들어, 확률적 데이터 구조는 사용자가 직접 차단하거나 주어진 시간 동안 디지털 컴포넌트가 사용자에게 표시되는 빈도를 초과하여 차단된 디지털 컴포넌트에 대한 범용 식별자를 나타낼 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 예를 들어 컴퓨팅 시스템(MPC1 또는 MPC2)이 일반 텍스트의 식별자에 액세스하는 것을 방지하는 암호화된 형태로 사용자의 클라이언트 디바이스(110)로부터 확률적 데이터 구조를 수신할 수 있다. 예를 들어, 사용자의 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)은 빈도 제한으로 인해 차단되거나 사용자에 의해 차단된 차단 디지털 컴포넌트에 대한 식별자를 나타내는 블룸 필터를 생성할 수 있다. 그 다음, 애플리케이션(112)은 컴퓨팅 시스템(MPC1 및 MPC2)으로 하여금 주어진 디지털 컴포넌트가 사용자에 대해 차단되는지 여부를 결정하기 위해 보안적 MPC 프로세스를 사용하여 블룸 필터에 협력하여 질의 할 수 있게 하는 데이터를 각각의 컴퓨팅 시스템(MPC1 및 MPC2)에 제공할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 이 보안적 MPC 프로세스를 사용하여 차단된 디지털 컴포넌트 상태의 비밀 공유를 계산한다. 블룸 필터를 생성 및 질의하기 위한 예시적인 프로세스가 도 8을 참조하여 설명된다.
일부 구현에서, 차단된 디지털 컴포넌트에 대한 식별자는 사용자 그룹 식별자와 동일한 확률적 데이터 구조에 포함될 수 있고 상이한 해시 함수를 사용하여 질의될 수 있다. 그러나, 차단된 디지털 컴포넌트에 대한 목표 오탐지 비율은 사용자 그룹 식별자에 대한 오탐지 비율보다 낮을 수 있다. 따라서 차단된 디지털 컴포넌트에 대해 사용자 그룹 식별자보다 블룸 필터를 생성하고 쿼리하는 데 더 적은 해시 함수를 사용할 수 있다. 차단된 디지털 컴포넌트에 대한 블룸 필터의 데이터 크기를 줄이기 위해 사용자 그룹 식별자는 차단된 디지털 컴포넌트보다는 블룸 필터로 나타낼 수 있다. 이것은 네트워크를 통해 블룸 필터를 보낼 때 대기 시간을 줄이고 블룸 필터를 보낼 때 소모되는 대역폭을 줄이며 블룸 필터를 보내기 위한 배터리 전력 사용량을 줄인다.
저장된 디지털 컴포넌트에 대한 다른 예시적인 조건은 시간 지속기간에 걸쳐 디지털 컴포넌트의 배포를 조정하는 페이싱 조건이다. 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트가 시간 지속기간에 걸쳐 제공될 수 있는 총 횟수 및/또는 시간 지속기간 동안 디지털 컴포넌트에 대한 최대 예산을 나타내는 데이터를 저장할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 이 정보를 사용하여 이 조건(예컨대, 디지털 컴포넌트가 후보가 되기 위해 만족되어야할 디지털 컴포넌트에 대한 모든 조건)에 기초하여 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스의 후보가 될 수 있는 빈도를 조정할 수 있다. 일부 구현에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 페이싱 조건을 갖는 저장된 디지털 컴포넌트를 페이싱하기 위해 비밀 공유를 사용하는 PID(proportional-integral-derivative) 컨트롤러와 같은 피드백 컨트롤러를 구현할 수 있다.
이 예에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트에 대한 PID 제어기에 대한 설정값을 저장할 수 있고 디지털 컴포넌트에 대한 PID 제어기에 대해 측정된 변수를 유지할 수 있다. 일반적으로 PID 컨트롤러는 목표 설정값과 측정된 변수의 차이인 오차값을 사용하여 측정된 변수를 설정값으로 구동하는 출력을 결정하는 피드백 컨트롤러이다. 클라이언트 디바이스에 대한 디지털 컴포넌트의 배포 페이징과 관련하여 캠페인의 설정값은 임프레션율, 인터렉션율, 전환율 및/또는 리소스 고갈률(예컨대, 예산 소비율)이 될 수 있다. 유사하게, 측정된 변수는 임프레션율, 인터렉션율, 전환율 및/또는 주어진 기간 동안의 자원 고갈율일 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 또한 각 PID 컨트롤러에 대한 튜닝 파라미터를 저장할 수 있다. 설정값, 측정된 변수 및 조정 파라미터는 목표 개인정보 보호/데이터 보안에 따라 비밀 공유(각 컴퓨팅 시스템(MPC1 및 MPC2)이 각 파라미터의 해당 공유를 저장함)에 저장하거나 일반 텍스트로 저장할 수 있다.
다른 예시적인 조건은 k-익명성 조건이다. k-익명성 조건은 디지털 컴포넌트가 주어진 기간 동안 적어도 k명의 사용자에게 배포하기에 적격(또는 선택되었을) 할 것을 요구하는 k-익명성 규칙을 포함할 수 있다. k-익명성의 개념은 특정 사용자에 대한 데이터가 다른 사용자의 임계 수 k의 데이터와 구별되지 않는다는 것을 보장한다. 시스템은 예를 들어, 특정 디지털 컴포넌트가 하나 이상의 디지털 컴포넌트에 대한 요청에 응답하여 클라이언트 디바이스(110)에 배포되고 동일한 디지털 컴포넌트가 있을 수 있거나 있었던 것을 보장함으로써 k-익명성 규칙을 시행할 수 있다. , 특정 기간 내에 적어도 k 사용자의 세트에 또는 적어도 k 애플리케이션(112)에 의해 디스플레이된다. 일부 구현에서, 디지털 컴포넌트가 배포될 수 있거나 배포된 k개의 애플리케이션(112) 각각은 다른 사용자를 위한 것이어야 한다. 이 예에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트에 대해 값 k를 저장하고 디지털 컴포넌트가 배포될 수 있었던 다수의 사용자를 유지할 수 있다.
디지털 컴포넌트가 표시될 수 있었던 사용자의 수를 결정하는 것은 각각의 실제 디지털 컴포넌트 선택 프로세스와 병렬로 반사실적 디지털 컴포넌트 선택 프로세스를 실행하는 것을 포함할 수 있다. 이 반사실적 디지털 컴포넌트 선택 프로세스에서, 모든 디지털 컴포넌트는 k-익명성 조건을 제외한 모든 조건을 만족한다면 후보가 될 수 있다. 디지털 컴포넌트가 반사실적 디지털 컴포넌트 선택 프로세스에서 적어도 k 사용자 또는 애플리케이션(112)에 대해 선택되는 경우, 디지털 컴포넌트는 k-익명성 조건이 아니라면 k 사용자에게 표시되었을 것이다. 이러한 일이 발생하면 k-익명성 조건을 만족하는 디지털 컴포넌트는(디지털 컴포넌트에 대한 다른 조건이 충족된다는 가정에서)실제 디지털 컴포넌트 선택 프로세스에 포함될 수 있으며, 이는 만족하지 못한 k-익명성 조건을 갖는 디지털 컴포넌트를 포함하지 않는다.
일부 구현에서, 각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트에 대한 정보를 디지털 컴포넌트 및 그 각각의 정보를 문맥 신호 세트에 매핑하는 데이터 구조에 저장한다. 예를 들어, 각 디지털 컴포넌트는 문맥 신호 세트를 포함하는 리소스 및/또는 애플리케이션이 있는 프레젠테이션 환경에 표시하기에 적격할 수 있다. 문맥 신호는 예를 들어 리소스의 주제, 리소스에서 발견된 키워드, 리소스에 대한 리소스 로케이터, 클라이언트 디바이스(110)의 지리적 위치, 애플리케이션(112)의 구어 설정, 리소스의 디지털 컴포넌트 슬롯의 수, 디지털 컴포넌트 슬롯의 유형 및/또는 기타 적절한 문맥 신호를 포함할 수 있다. 또한, 디지털 컴포넌트는 문맥 신호의 각 세트에 대해 하나씩 다수의 대응하는 선택 값을 가질 수 있다. 이러한 데이터 구조를 사용하면 컴퓨팅 시스템(MPC1 및 MPC2)이 디지털 컴포넌트 선택 프로세스에 적합한 디지털 컴포넌트를 식별할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 상기 조건들을 사용하여 이들 적격한 디지털 컴포넌트로부터 디지털 컴포넌트 선택 프로세스에서 선택을 위한 실제 적격한 후보인 디지털 컴포넌트를 식별할 수 있다. 디지털 컴포넌트가 적격인지 여부를 결정하는데 사용하기 위한 문맥 신호 세트는 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트 요청의 문맥 신호를 사용하여 적격 디지털 컴포넌트를 룩업할 수 있게 하는 룩업 키의 형태일 수 있다.
디지털 컴포넌트가 디지털 컴포넌트에 대한 적격한 사용자 그룹을 식별하는 대응하는 사용자 그룹 식별자와 연관될 때, 정보는 룩업 테이블(LUT)을 사용하여 저장될 수 있다. LUT를 사용하면 몇 가지 성능상의 이점을 제공할 수 있지만 다른 적절한 데이터 구조도 사용할 수 있다. LUT는 문맥 신호 또는 문맥 신호로부터 파생된 룩업 키를 디지털 컴포넌트 세트에 매핑하여 디지털 컴포넌트 세트가 표시에 적합하도록 하고 그리고/또는 이에 대해 선택 값 또는 벡터가 이 문서 설명된 다른 조건들에 적합하도록 한다. 이러한 방식으로, 컴퓨팅 시스템(MPC1 및 MPC2)은 각각의 디지털 컴포넌트에 대해, 예를 들어 문맥 신호의 각 세트에 대해 하나씩 다수의 선택 값을 저장할 수 있다.
일부 구현에서, 룩업 키는 문맥 신호의 해시 기반 메시지 인증 코드(HMAC)이다. 예를 들어 룩업 키는 HMAC(URL, HMAC(언어, 위치))일 수 있다. 여기서 파라미터 URL은 디지털 컴포넌트 및 선택 값이 적합한 리소스의 URL이고 파라미터 언어는 지정된 구어이다. 디지털 컴포넌트 및 선택 값이 적격인 애플리케이션(112)이고, 파라미터 위치는 디지털 컴포넌트 및 선택 값이 적격인 지리적 위치이다. 디지털 컴포넌트 요청의 문맥 신호가 이러한 파라미터와 일치하는 경우 룩업 키에 매핑된 디지털 컴포넌트 및 선택 값은 요청에 대한 응답으로 디지털 컴포넌트를 선택하기 위한 디지털 컴포넌트 선택 프로세스에 적합하다. URL, 위치 및 언어에 추가로 또는 URL 대신에 다른 문맥 신호를 사용할 수 있다.
네트워크(105)를 통해 디지털 컴포넌트 요청을 전송함으로써 소비되는 대역폭의 양 및 대기 시간의 양을 줄이기 위해, 애플리케이션(112)은 문맥 신호를 컴퓨팅 시스템(MPC1 및 MPC2)에 전송하기 보다는 동일 HMAC를 이용하여 룩업 키를 계산할 수 있다. 이것은 또한 클라이언트 디바이스(110)에 의해 소모되는 배터리의 양 및 각각의 컴퓨팅 시스템(MP1 및 MPC2)에 의해 수신되는 데이터의 양을 감소시킨다.
일부 구현에서, 예를 들어 디지털 컴포넌트가 사용자에 대한 사용자 그룹 멤버십에 대해 조건화될 때 2 스테이지 LUT 테이블이 사용된다. 제1 스테이지는 요청 키(UG_Request_Key)로 키잉될 수 있다. UG_Request_Key는 문맥 신호 세트, 예를 들어 디지털 컴포넌트 요청의 문맥 신호 세트(예컨대, URL, 위치, 언어 등)를 기반으로 하는 복합 메시지 형태의 룩업 키일 수 있다. 또는 디지털 컴포넌트가 배포하기에 적격한 문맥 신호 세트이다. 즉, 제1 스테이지 LUT는 문맥 신호 세트를 기반으로 키잉될 수 있다. 제1 스테이지의 키는 SHA256과 같은 해시 함수를 사용하는 UG_Request_Key의 해시일 수 있다. 이 키는 지정된 비트 수(예컨대, 16바이트 또는 다른 적절한 비트 수)로 절단될 수 있다. 제1 스테이지 LUT의 각 키 UG_Request_Key에 대한 값은 UG_Request_Key의 문맥 신호를 포함하는 디지털 컴포넌트 요청에 적합한 디지털 컴포넌트에 대한 데이터를 포함하는 제2 스테이지 LUT의 행을 나타낼 수 있다. 제1 스테이지 LUT의 예가 아래 표 1에 나와 있다.
키 | 값 |
SHA256(UG_Request_Key) | 행 |
... | 행 |
제2 스테이지 LUT는 제1 스테이지 LUT의 사용자 그룹 요청 키 UG_Request_Key와 사용자 그룹 식별자의 조합에 기초하여 키잉될 수 있다. 일부 구현에서, 제2 스테이지 LUT는 어레이 또는 다른 적절한 데이터 구조일 수 있다. 제2 스테이지 LUT의 각 행은 특정 디지털 컴포넌트에 대한 특정 선택 값(또는 값들의 벡터)에 대한 것일 수 있다. 예를 들어, DSP(150)는 동일한 디지털 컴포넌트에 대해 상이한 선택 값을 제출할 수 있으며, 각각의 선택 값은 상이한 세트의 문맥 신호 및/또는 상이한 사용자 그룹 식별자에 대한 것이다. 따라서, 디지털 컴포넌트에 대한 선택 값은 디지털 컴포넌트 선택 프로세스가 수행되고 있는 사용자의 문맥 및 사용자 그룹 구성원에 따라 달라질 수 있다. DSP(150) 또는 디지털 컴포넌트 제공자(160)는 DSP(150) 또는 디지털 컴포넌트 제공자가 디지털 컴포넌트가 디스플레이되기를 원하는 사용자 그룹에 디지털 컴포넌트를 관련, 예를 들어 링크 또는 매핑할 수 있다. 예를 들어, DSP(150)는 플라이 낚시에 관심을 보인 남성에게 플라이 낚시와 관련된 디지털 컴포넌트가 표시되기를 원할 수 있다. 이 예에서, DSP(150)는 디지털 컴포넌트가 플라이 낚시에 관심을 보인 남성을 포함하는 사용자 그룹에 대한 사용자 그룹 식별자에 대응함을 나타내는 데이터를 MPC 클러스터(130)에 제공할 수 있다.
일부 구현에서, 제2 스테이지 LUT의 행에 대한 키는 사용자 그룹 요청 키 UG_Request_Key와 행의 디지털 컴포넌트에 대한 사용자 그룹 식별자의 조합에 기초하여 생성된 해시 또는 코드일 수 있다. 예를 들어, 키는 HMACSHA256(UG_Request_Key, ug_id)으로 표시될 수 있는 조합의 HMAC일 수 있다. 사용자 그룹 식별자 ug_id는 사용자 그룹에 대한 내부 사용자 그룹 식별자와 사용자 그룹 소유자의 도메인(예컨대, DSP, SSP 또는 사용자 그룹을 소유하는 디지털 컴포넌트 제공자)의 조합을 기반으로 할 수 있다. 예를 들어, 사용자 그룹 식별자 ug_id는 소유자 도메인의 eTLD+1 및 사용자 그룹에 대한 소유자의 내부 사용자 그룹 식별자의 디지털 다이제스트일 수 있다. eTLD+1은 유효 최상위 도메인(eTLD)에 공용 접미사보다 한 수준 더 추가한 것이다. eTLD+1의 예는 "example.com"이며, 여기서 ".com"은 최상위 도메인이다. ug_id는 16바이트 또는 다른 적절한 데이터 크기로 절단될 수 있다.
이전의 플라이 낚시 예에 계속해서, 남자 플라이 낚시 그룹의 사용자에게 표시될 디지털 컴포넌트에 대한 정보를 포함하는 행에 대한 제2 스테이지 룩업 키는 사용자 그룹 요청 키 UG_Request_Key 및 남자 플라이 낚시 그룹의 사용자 그룹 식별자 ug_id의 조합일 수 있다. 디지털 컴포넌트가 다른 문맥로 표시될 수 있으므로 제2 스테이지 록업 테이블은 각각 다른 사용자 그룹 요청 키 UG_Request_Key 및 다른 값을 가진 남자 플라이 낚시 그룹에 대한 사용자 그룹 식별자 ug_id와 연관된 디지털 컴포넌트에 대한 다수의 행을 포함할 수 있다.
제2 스테이지 LUT의 각 행에 대한 값은 디지털 컴포넌트에 대한 선택 값(또는 값들의 벡터) 및 디지털 컴포넌트에 대한 다른 데이터, 예를 들어, 디지털 컴포넌트 또는 디지털 컴포넌트는 다운로드될 수 있는 네트워크 위치를 식별하는 메타데이터일 수 있다. 일부 구현에서, 행은 예를 들어 웹 패키지 형식으로 애플리케이션(112)에 의해 렌더링될 준비가 된 디지털 컴포넌트 자체를 포함할 수 있다.
이 값은 선택 값 및 메타데이터를 갖는 바이트 어레이일 수 있는 디지털 컴포넌트 정보 요소 dc_information_element일 수 있다. 바이트 어레이는 애플리케이션(112) 또는 클라이언트 디바이스(110)의 신뢰 프로그램 및 컴퓨팅 시스템(MPC1 및 MPC2)이 선택 값 및 메타데이터를 획득하기 위해 구문 분석할 수 있는 특정 포맷을 가질 수 있다. 일부 구현에서, 디지털 컴포넌트 정보 요소는 디지털 컴포넌트 자체를 포함할 수 있다. 제2 스테이지 LUT의 예가 아래 표 2에 나타나 있다. 벡터가 선택 값을 결정하는 데 사용되는 경우 선택 값은 표 2의 벡터로 대체될 수 있다.
키 | 값 |
HMAC(UG_Request_Key, UG_ID) | {선택 값, 메타데이터} |
... | ... |
제2 스테이지 LUT는 선택 값을 특정 디지털 컴포넌트, 특정 사용자 그룹 식별자 ug_id, 및 제1 스테이지 룩업 키 UG_Request_Key에 의해 정의된 문맥 신호의 특정 세트에 맵핑한다. 그렇게 함으로써, 제2 스테이지 LUT는 디지털 컴포넌트에 대한 선택 값이 적격한 디지털 컴포넌트 슬롯의 특정 문맥를 나타낸다. 이것은 DSP(150) 또는 디지털 컴포넌트 제공자(160)가 문맥 신호 및 사용자의 그룹 구성원에 의해 정의된 서로 다른 문맥들에 대해 동일한 디지털 컴포넌트에 대해 서로 다른 선택 값들을 지정할 수 있게 한다. 디지털 컴포넌트가 표시될 사용자가 특정 사용자 그룹 식별자 ug_id로 식별되는 특정 사용자 그룹의 구성원이고 디지털 컴포넌트가 제1 스테이지 룩업 키의 문맥 신호에서, 매칭 사용자 그룹 식별자 및 매칭되는 제1 스테이지 룩업 키를 갖는 제2 스테이지 LUT에서 선택 값을 갖는 임의의 디지털 컴포넌트는 요청에 응답하여 배포를 위해 선택되기 위한 후보이다.이 문서 전체에 걸친 설명에 더하여, 사용자는 제어(예컨대, 사용자가 인터렉션할 수 있는 사용자 인터페이스 요소)를 제공받을 수 있어 시스템, 프로그램 또는 기능의 경우와 시기 모두에 대해 선택할 수 있다. 여기에 설명된 사용자 정보(예컨대, 사용자의 소셜 네트워크, 소셜 활동 또는 활동, 직업, 사용자의 선호도 또는 사용자의 현재 위치에 대한 정보)의 수집을 가능하게 할 수 있으며, 사용자가 서버로부터 콘텐츠 또는 통신을 전송받는 경우. 또한 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방식으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원이 처리되어 사용자에 대한 개인 식별 정보가 결정될 수 없거나, 위치 정보를 얻은 사용자의 지리적 위치가 일반화될 수 있어(예컨대, 도시, 우편 번호 또는 주 수준), 사용자의 특정 위치를 확인할 수 없도록 한다. 따라서 사용자는 사용자에 대해 수집되는 정보, 해당 정보가 사용되는 방법 및 사용자에게 제공되는 정보를 제어할 수 있다.
도 2는 도 1의 환경(100) 내의 예시적인 데이터 흐름을 도시한다. 이 설명에는 2가지 유형의 선택 값이 포함된다. 즉, 사용자 그룹 멤버십 또는 기타 비즈니스 민감한 정보와 같은 민감한 사용자 정보 또는 파렴치한 당사자가 민감한 정보를 추론할 수 있는 값의 변경을 허용할 수 있는 파라미터를 조건으로 하는 선택 값, 또는 "조건부 선택 값"; 민감한 정보를 조건으로 하지 않는 선택 값, 또는 "무조건부 선택 값". 사용자 개인 정보를 보호하기 위해 "조건부 선택 값"에 대한 조건이 SSP(170) 또는 DSP(150) 대신 MPC 클러스터(130) 내에서 평가되어 "조건부 선택 값"이 콘텐츠 선택 프로세스의 후보인지 여부를 결정한다.
이 구조는 MPC 클러스터(130)가 사용자 개인 정보 및 비즈니스 기밀 정보를 보호하고 애플리케이션(112)의 제공자와 같은 애플리케이션 제공자에게 자신의 신뢰성을 증명할 수 있게 한다. 이 예에서, MPC 클러스터(130)는 보안 제2-당사자 MPC 클러스터(130)의 2개의 컴퓨팅 시스템 중 적어도 하나가 정직한 경우 기밀 사용자 데이터 또는 비즈니스 기밀 정보의 누출이 없음을 보장하기 위해 암호화 기술을 적용하는 보안 2-당사자 계산(2PC) 아키텍처에 의존한다. MPC 클러스터(130)가 2개 이상의 컴퓨팅 시스템을 포함하는 경우, 현재 MPC 프로토콜이 확장되거나 다른 MPC 프로토콜이 사용될 수 있다.
MPC 클러스터(130)는 보안 2PC 프로토콜을 실행하여 후보 디지털 컴포넌트를 선택하기 위한 조건을 평가 및 적용하고, 선택 값을 기반으로 디지털 컴포넌트를 선택하기 위한 선택 프로세스를 수행하고, 이러한 조건이 의존하는 파라미터를 업데이트하기 위해 임프레션 통지를 수신한다. 이러한 모든 프로세스는 비밀 공유 기술을 사용하여 수행할 수 있다. 이 프로토콜은 도 3를 참조하여 상세히 설명된다.
스테이지 A에서, 애플리케이션(112)은 예를 들어 SSP(170)와 같은 콘텐츠 플랫폼으로부터의 트리거링 요소와 협력하여 디지털 컴포넌트에 대한 요청을 MPC 클러스터(130)에 전송한다. 애플리케이션(112)은 여러 디지털 컴포넌트를 가져오기 위해 디지털 컴포넌트들에 대한 여러 개의 요청을 하나의 조합 요청에 함께 포함시킬 수 있다. 그 다음, MPC 클러스터(130)는 조합 요청에서 각 요청에 독립적으로 서빙하거나 하나 이상의 선택 결정을 전체적으로 내릴 수 있다. 이 예에서 요청은 단일 디지털 컴포넌트에 대한 요청이며 민감한 정보를 기반으로 선택된 디지털 컴포넌트 또는 민감한 정보를 사용하지 않고 선택된 디지털 컴포넌트에 대한 요청을 포함한다. MPC 클러스터(130)는 각각의 특정 디지털 컴포넌트에 각각 매핑되는 선택 값들의 세트 중에서 특정 선택 값에 대응하는 특정 디지털 컴포넌트를 선택함으로써 요청에 응답할 수 있다. 이러한 선택 값들은 MPC 클러스터(130)에서 이전에 캐싱되거나 그렇지 않으면 저장된 선택 값 및/또는 JIT(Just-In-Time) 선택 값일 수 있는 DSP(150) 또는 SSP(170)와 같은 플랫폼에 의해 생성된 선택 값일 수 있다. JIT 선택 값은 필요에 따라 직접 생성되며 디지털 컴포넌트가 필요할 때만 선택 값이 생성되기 때문에 효율성을 높이고 낭비를 줄인다. 예를 들어, JIT 선택 값은 디지털 컴포넌트 슬롯이 사용 가능해지면 생성될 수 있으며, 이는 디지털 컴포넌트에 대한 요청 수신으로 표시된다. 따라서, MPC 클러스터(130)는 정보가 MPC 클러스터(130)에 저장되는 저장된 디지털 컴포넌트 및 현재 디지털 컴포넌트 요청에 대해 JIT 선택 값이 수신되는 디지털 컴포넌트를 포함하는 디지털 컴포넌트의 세트로부터 디지털 컴포넌트를 선택할 수 있다.
일부 구현에서, 디지털 컴포넌트에 대한 선택 값은 2개 이상의 벡터를 사용하여 결정될 수 있다. MPC 클러스터(130)는 디지털 컴포넌트에 대해 디지털 컴포넌트에 대한 선택 값을 결정하는데 사용될 수 있는 값의 제1 벡터를 저장할 수 있다. 값들의 제1 벡터는 하나 이상의 사용자 그룹에 특정적일 수 있으며, 예를 들어, 하나 이상의 사용자 그룹의 구성원인 사용자에 대해 디지털 컴포넌트가 선택될 때 디지털 컴포넌트에 대한 선택 값을 결정하는 데 사용될 수 있다. 따라서 값들의 제1 벡터는 사용자 그룹 기반 벡터라고도 할 수 있다. 사용자 그룹 기반 벡터는 2개 이상의 차원들에 걸쳐 여러 요소를 포함할 수 있으며 각 요소는 디지털 컴포넌트 프레젠테이션 기회의 특별한 특징을 나타낼 수 있다. 예를 들어, 사용자 그룹 기반 값들 벡터는 지리적 위치 또는 지역, 구어, 연령 또는 연령 범위, 웹 페이지 또는 기타 전자 리소스의 특정 URL, 디지털 컴포넌트 슬롯리 폴드보다 위이거나 아래이건 간에 특정 제품 또는 서비스에 대한 요소, 디지털 컴포넌트 슬롯의 유형, 디지털 컴포넌트 슬롯의 크기, 전자 리소스의 디지털 컴포넌트 슬롯 수, 하루의 시간, 웹 속성 식별자 및/또는 디지털 컴포넌트 표시 기회의 기타 적절한 특징을 포함할 수 있다. 일부 구현에서, 예를 들어 신경망을 채택하는 구현에서 값들의 사용자 그룹 기반 벡터는 일부 추상 벡터 공간에 사용자 그룹을 임베딩할 수 있다.
각 요소의 값은 요소에 대응하는 특징을 갖는 현재의 디지털 컴포넌트 프리젠테이션 기회에 기초하여 디지털 컴포넌트에 대한 선택 값을 증가 또는 감소시키는 양을 반영할 수 있다. 예를 들어, DSP(150)가 디지털 컴포넌트가 애틀랜타의 사용자들에게 표시되기를 원하지만 댈러스의 사용자에게는 표시되지 않는 경우, 애틀랜타에 대한 요소의 값은 1보다 큰 양의 값일 수 있고 댈러스에 대한 요소의 값은 1보다 작은 양수 값(예컨대, 0 또는 음수 값)일 수 있다. 아래에서 더 자세히 설명되는 바와 같이, 사용자 그룹 기반 벡터의 값들은 디지털 컴포넌트에 대한 선택 값을 결정하기 위한 벡터 내적 계산의 일부일 수 있다.
요청은 애플리케이션(112)이 매핑되거나 아니면 연관되는 사용자 그룹에 대한 사용자 그룹 식별자와 같이 민감할 수 있는 정보, 및 디지털 컴포넌트가 제시 및/또는 디스플레이될 문맥에 관한 애플리케이션(112)으로부터의 문맥 신호와 같은 민감하지 않은 정보를 포함하는 디지털 컴포넌트 선택 프로세스에서 사용되는 정보를 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 시스템(110)의 설계는 민감하거나 기밀일 수 있는 사용자 데이터의 보호를 향상시킨다.
트리거링 요소는 예를 들어 애플리케이션(112)이 방문한 인터넷 위치 내의 디지털 컴포넌트 슬롯의 존재를 검출하는 태그일 수 있다. 트리거링 요소는 예를 들어 인터넷 위치에 배치될 수 있고, 디지털 컴포넌트가 요청되어야 하는 디지털 컴포넌트 슬롯의 존재를 애플리케이션(112)에 알릴 수 있다.
스테이지 B에서, MPC 클러스터(130)는 문맥 신호와 같이 민감하지 않은 정보에 기반한 디지털 컴포넌트 요청을 SSP(170)로 전송한다. 이 요청을 "문맥 요청"이라고 한다. 문맥 요청은 디지털 컴포넌트에 대한 요청을 트리거한 인터넷 위치(예컨대, 콘텐츠 발행자)에서 직접 수집한 다양한 문맥 신호 및 민감하지 않은 사용자 정보를 포함할 수 있다. 예를 들어 문맥 신호는 분석 데이터, 언어 설정 및 콘텐츠 발행자가 우수한 사용자 경험을 제공하는 데 도움이 되는 기타 데이터를 포함할 수 있다. 그러나, SSP(170)에 제공된 문맥 요청은 사용자 그룹 식별자와 같은 민감한 정보를 포함하지 않는다.
스테이지 C에서, SSP(170)는 문맥 요청을 하나 이상의 DSP(150)로 전달한다. 이 특정 예에서 그리고 단순화를 위해, SSP(170)는 문맥 요청을 단일 DSP(150)로 전달한다. 예를 들어, SSP(170)는 DSP(150)에 문맥 정보를 전달할 수 있다. 이 예에서 DSP(150)는 디지털 컴포넌트 및 디지털 컴포넌트에 매핑된 선택 값을 갖거나 문맥 신호를 사용하여 디지털 컴포넌트에 대한 선택 값을 결정할 수 있다.
스테이지 D에서, 하나 이상의 DSP(150)는 문맥 요청에 응답하여 선택 값을 리턴한다. 예를 들어, DSP(150)는 문맥 요청에 응답하여 디지털 컴포넌트에 매핑된 하나 이상의 선택 값을 리턴한다. DSP(150)는 문맥 요청에 응답하여 임의의 수의 선택 값을 리턴할 수 있다. 일부 구현에서, DSP(150)는 사용자 그룹 정보와 같은 민감한 정보에 기초하여 디지털 컴포넌트 요청에 응답하여 선택 값을 추가로 리턴할 수 있다. 이러한 선택 값은 민감한 정보를 조건으로 하기 때문에 "조건부 선택 값"이며, 따라서 선택 값이 조건화된 민감한 정보와 일치하는 민감한 정보를 포함하는 요청을 수신하는 MPC 클러스터(130)에 대해 조건부로 지정된다. DSP(150)가 제공하는 각각의 선택 값에 대해, DSP(150)는 TTL(time-to-live) 파라미터, 즉 MPC 클러스터(130)가 선택 값을 캐시할 수 있는 최대 시간 범위와 같은 정보를 포함한다. 이 TTL 파라미터는 MPC 클러스터(130)가 DSP(150)로부터 수신된 선택 값을 캐시할 수 있게 한다. 일부 구현에서, TTL 파라미터 없이, MPC 클러스터(130)는 수신된 선택 값을 캐시하지 않고 대신 선택 값이 예를 들어 스테이지 A, B 및 C에서 전송된 디지털 컴포넌트 요청에 해당하는 선택 프로세스에서 사용된 후에 선택값을 폐기할 것이다.
벡터들이 선택 값을 결정하기 위해 사용될 때, DSP(150)는 값들의 제2 벡터를 생성하여 리턴할 수 있다. DSP(150)는 스테이지 B 및 C에서 전송된 디지털 컴포넌트 요청의 문맥 신호에 기초하여 값들의 제2 벡터를 생성할 수 있다. 제2 벡터는 문맥 벡터로 지칭될 수 있다. 문맥 벡터는 사용자 그룹 기반 벡터와 동일한 특징에 해당하는 동일한 요소를 포함할 수 있다. 그러나, DSP(150)는 디지털 컴포넌트 요청의 문맥 신호에 기초하여 현재 디지털 컴포넌트 요청에 대한 문맥 벡터의 값을 결정할 수 있다. 대조적으로, DSP(150)의 사용자 그룹 기반 벡터의 값은 MPC 클러스터(130)로서 저장되고, 예를 들어 사용자 그룹 기반 벡터에 대응하는 사용자 그룹(들)에 기초하여 미리 결정된다.
문맥 벡터를 제공하는 각각의 DSP(150)에 대해, MPC 클러스터(130)는 DSP(150)에 의해 제공되는 사용자 그룹 기반 벡터와 문맥 벡터의 내적을 결정함으로써 DSP(150)의 각각의 저장된 디지털 컴포넌트에 대한 선택 값을 결정할 수 있다. DSP(150)가 예를 들어 각각 다른 디지털 컴포넌트에 대해 MPC 클러스터(130)에 의해 저장된 다수의 사용자 그룹 기반 벡터를 갖는 경우, MPC 클러스터(130)는 각각의 사용자 그룹 기반 벡터에 대해 문맥 벡터와 사용자 그룹 기반 벡터의 내적을 결정할 수 있다.
일부 구현에서, 디지털 컴포넌트 요청이 제출되는 사용자의 사용자 프로파일에 기초하여 제3 벡터가 사용될 수 있다. 이 벡터는 다른 벡터와 동일한 치수 및 특징을 가질 수 있지만 사용자의 사용자 프로파일에 기초한 값을 갖는다.
예를 들어, 사용자 프로파일 벡터에서 Austin에 대한 위치 요소 값은 사용자가 Austin에 있으면 양수 값을 가질 수 있고, 사용자가 Austin에 없으면 음수 값 또는 제로 값을 가질 수 있는 바, 문맥 벡터의 동일한 위치 요소에 대한 값은 만일 현재 사용자에게 표시되는 발행자 콘텐츠가 Austin과 관련성이 높은 경우 양수 값을 가질 수 있고, 만일 디지털 컴포넌트가 Austin과 관련이 있는 경우 디지털 컴포넌트에 대한 사용자 그룹 기반 벡터의 동일한 위치 요소 값은 양수 값을 가질 수 있다. 3개의 벡터의 내적을 계산하기 위해 컴퓨팅 시스템(MPC1 및 MPC2)은 먼저 3개의 벡터들 각각으로부터 하나씩 해당하는 요소들 간에 요소별 곱셈을 수행한 다음 결과를 합산한다. 예를 들어, 3개의 벡터가 각각 V1={v1,1...v1,n}, V2={v2,1 ...v2,n} 및 V={v3,1 ...v3,n}라고 가정하면, 3개의 벡터 간의 내적은 일 수 있다
스테이지 E에서, SSP(170)는 조건부 선택 값에 대응하는 디지털 컴포넌트에 컨텐츠 선택 규칙을 적용한다. 위에서 설명된 바와 같이, 이들 조건은 사용자 그룹 식별자, 빈도 제어, 차단된(예를 들어, 음소거된) 디지털 컴포넌트, 속도 및/또는 k-익명성에 기초할 수 있다.
SSP(170)는 또한 선택 값 규칙을 적용하여 예를 들어 선택 값들이 특정 콘텐츠 제공자들에 대한 게시 후 값들에 영향을 미치는 방식을 결정한다. 게시 후 값들은 예를 들어 발행자(140)의 리소스 또는 애플리케이션 콘텐츠와 함께 디지털 컴포넌트를 표시하기 위해 발행자(140)에 제공되는 양을 나타낼 수 있다. 그 후, SSP(170)는 상위 무조건 선택 값, 즉 가장 높은 게시 후 값을 산출하는 무조건부 선택 값을 결정하기 위해 선택 프로세스를 수행한다. 무조건부 선택 값은 민감한 정보에서 결정되지 않으므로 예산 및 속도 규칙, 광고주 및 디지털 컴포넌트 제외와 같은 콘텐츠 선택 규칙들이 MPC 클러스터(130)가 아닌 SSP(170)에 의해 적용될 수 있다. 그 후, SSP(170)는 MPC 클러스터(130)에 JIT 선택 값들인 다음의 값들 즉, MPC 클러스터(130)에서 캐싱을 가능하게 하는 모든 선택 값(TTL 값을 갖는 선택 값) 및 게시 후 값이 최상위 무조건부 선택 값보다 작지 않은 모든 선택값들을 MPC 클러스터(130)에 포워딩한다.
스테이지 F에서, MPC 클러스터(130)는 캐싱을 가능하게 하는(즉, TTL 값을 갖는) 수신된 JIT 선택 값으로 자신의 캐시를 업데이트한다. 또한, MPC 클러스터(130)는 사용자 그룹 멤버십 규칙, 빈도 제어, 페이싱 규칙 및 특정 사용자의 마이크로 타게팅을 방지하기 위한 규칙과 같은 선택 규칙들을 스테이지 E에서 수신된 모든 선택 값들 뿐만 아니라 선택 프로세스에 대한 유효한 후보들을 선택하기 위한 이전에 캐시된 선택 값들에 적용한다. 이 규칙들은 무엇보다도 특히 디지털 컴포넌트의 배포 방식 또는 빈도에 대한 제한 및 지침을 포함할 수 있다. 이 규칙들은 주파수 제어, 음소거, 리소스 고갈 및 속도 제한을 포함한다. 일부 구현에서, MPC 클러스터(130)에 의해 평가되는 조건을 갖는 JIT 디지털 컴포넌트들은 현재 디지털 컴포넌트 선택 프로세스에 대해 무시될 수 있다. 예를 들어, 현재 선택 프로세스에 대한 이러한 디지털 컴포넌트들의 무시는 디지털 컴포넌트를 선택하고 제공하는데 있어 대기 시간 감소 등 성능상의 이점을 제공할 수 있다. 그후, MPC 클러스터(130)는 모든 적격 후보 중에서 최종 선택 프로세스를 실행하고, 우승 선택 값을 선택한 다음, 디지털 컴포넌트 요청에 응답하여 우승 선택 값에 매핑된 디지털 컴포넌트에 대한 데이터를 애플리케이션(112)에 리턴한다.
스테이지 G에서, 우승 선택 값에 매핑된 디지털 컴포넌트는 애플리케이션(112)에 의해 렌더링된다. 애플리케이션(112)은 그 후 MPC 클러스터(130)에 임프레션 통지를 제공한다. 이 임프레션 통지는 MPC 클러스터(130)가 예를 들어 스테이지 A의 후속 발생에서 수신된 미래의 디지털 컴포넌트 요청에 대한 선택 규칙을 시행할 수 있도록 하는 업데이트 파라미터들에 관한 정보를 MPC 클러스터(130)가 업데이트할 수 있도록 한다. 일부 구현에서, 애플리케이션(112)은 모바일 디바이스들에 대한 네트워크 통신의 수 및 배터리/대역폭 소비는 물론 MPC 클러스터(130)에 대한 처리/연산 비용을 줄이기 위해 미래 컴포넌트 요청 A의 맨 위에 피기백함으로써 임프레션 통지를 MPC 클러스터(130)에 전송할 수 있다.
도 3은 클라이언트 디바이스로의 배포를 위해 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스(300)의 업무 흐름 도면이다. 프로세스(300)의 동작들은 예를 들어 클라이언트 디바이스(110), MPC 클러스터(130)의 컴퓨팅 시스템들(MPC1 및 MPC2), 및 DSP들(150)에 의해 구현될 수 있다. 프로세스(300)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(300)의 동작들을 수행하게 할 수 있다. 비록 프로세스(300) 및 아래의 다른 프로세스들이 2개의 컴퓨팅 시스템 MPC 클러스터(130)의 관점에서 설명되어 있지만, 2개 이상의 컴퓨팅 시스템들을 갖는 MPC 클러스터들은 유사한 프로세스들을 수행하기 위해 사용될 수도 있다. 또한, 프로세스(300)의 동작들은 SSP들(170)에 의해 구현될 수 있다.
예시적인 프로세스(300)는 계층들, 부스트들, 제 1 가치 선택 프로세스들(예를 들어, 제 1 가격 경매들), 제 2 가치 선택 프로세스들(예를 들어, 제 2 가격 경매들), 및 하한들과 같은 변형을 포함할 수 있다. 이러한 변형들 각각은 도 3 내지 도 5를 참조하여 설명된다.
일반적으로 부스트는 디지털 컴포넌트에 대한 선택값이 조정되는 양이다. 예를 들어, 콘텐츠 발행인은, 디지털 컴포넌트가 발행인의 리소스들(145) 중 하나 또는 애플리케이션 콘텐츠와 함께 디스플레이를 위해 선택될 때, 특정 DSP(150)에 지정된 양 "x"의 부스트를 제공하도록 SSP(170)에 지시할 수 있다. DSP(150)가 "y"의 선택 값을 제출하면, 디지털 컴포넌트 선택 프로세스에서 사용되는 선택 값은 x + y가 될 것이다. 그러나 DSP(150)는 디지털 컴포넌트가 선택되는 경우 제 1 또는 제 2 선택 값 프로세스에서 y보다 크지 않은 양을 제공하도록 오로지 요구될 것이다. 프로세스(300)에서, MPC 클러스터(130)는 SSP(170)에 의해 제공된 정보에 따라 선택 값들에 부스트를 적용할 수 있다. 예를 들어, 각 SSP(170)는 부스트들을 DSP(150) 및 발행인(140) 쌍들에 매핑하는 정보를 제공할 수 있다. 즉, 정보는 특정 DSP의 선택 값들이 특정 발행인의 콘텐츠와 함께 디스플레이할 디지털 컴포넌트를 선택하는 디지털 컴포넌트 선택 프로세스들에 대해 특정 양만큼 부스트되어야 함을 나타낼 수 있다. 일부 구현들에서 SSP/발행인은 더 세분화된 수준에서 부스트를 지원할 수 있다. 예를 들어, 각 질의 키에 대해(예: 문맥상 신호들의 각 세트에 대해) SSP/발행인은 부스트를 지정할 수 있다.
SSP(170)는 보안적 MPC 클러스터(130)에 DSP(150)를 상이한 우선순위들을 갖는 다중 계층들로 분할하도록 지시할 수 있다. 디지털 컴포넌트 선택 과정에서 모든 후보 디지털 컴포넌트 중 최상위 선택 값에 해당하는 디지털 컴포넌트를 선택하는 것이 아니라, 최상위 우선순위 계층(티어)에서 최상위 선택 값을 갖는 디지털 컴포넌트가 선택된다. 설명을 위해 최상위 계층과 최하위 계층의 두 계층들이 있는 예를 고려한다. 최상위 계층에 하나 이상의 후보 디지털 컴포넌트들이 있는 경우, 최하위 계층의 후보 디지털 컴포넌트가 최상위 계층에 있는 모든 후보 디지털 컴포넌트들의 선택 값보다 높은 선택 값을 가지고 있더라도, 최상위 계층에 있서 최상위 선택 값을 가진 후보 디지털 컴포넌트가 선택된다.
제 1 값 선택 프로세스와 제 2 값 선택 프로세스 사이의 주요 차이점은 선택된 디지털 컴포넌트에 대한 소거량이다. 소거량은 디지털 컴포넌트의 디스플레이를 위해 DSP(150)에 의해 발행인(140) 및/또는 SSP(170)에 제공되는데 필요한 양이다. 두 프로세스들을 모두 사용하여 동일한 디지털 컴포넌트가 선택된다. 제 1 값 선택 프로세스에서 DSP(150)는 발행인(140) 및/또는 SSP(170)에 DSP(150)에 의해 제출된 선택 값과 동일한 양을 제공하는 것이 요구될 것이다. 제 2 값 선택 프로세스에서 DSP(150)는 대신 다음의 최상위 선택 값을 기준으로 양을 제공하는 것이 요구될 것이다. 계층들이 제 2 선택 값 프로세스와 함께 사용되는 경우, 다음의 최상위 값은 선택된 디지털 컴포넌트와 동일한 계층에서 다음의 최상위 값일 것이다. 동일한 계층에서 이러한 후보 디지털 컴포넌트가 없는 경우, 다음의 최상위 값은 디지털 컴포넌트 선택 프로세스의 최소값이 될 수 있다.
선택 값 하한은 발행인(140)이 디지털 컴포넌트의 디스플레이를 위해 기꺼이 수락하는 최소 선택 값을 나타낼 수 있다. 발행인(140)은 디지털 컴포넌트들의 각 카테고리에 대해(예를 들어, 자동차들과 관련된 디지털 컴포넌트들에 대한 하나의 하한 및 원예와 관련된 디지털 컴포넌트들에 대한 다른 하한), 각 디지털 컴포넌트 제공자(160)에 대해, 각 브랜드에 대해, 발행인 사이트의 각 페이지에 대해, 각 디지털 컴포넌트 슬롯에 대해, 디지털 컴포넌트 슬롯들의 그룹에 대해, 및/또는 디지털 컴포넌트들의 다른 유형들의 그룹들에 대해, 다양한 DSP들(150)에 대한 선택 값 하한을 지정할 수 있다. 일부 구현들에서, SSP(170)는 사전에 또는 예를 들어 스테이지 A의 각 디지털 컴포넌트 요청에 대해 발행인(140)을 대신하여 하한을 설정할 수 있다.
DSP들(150)은 디지털 컴포넌트에 대한 선택 값들 및 추가 정보(예를 들어, 조건들과 같은 선택 기준)를 MPC 클러스터(130)에 제공한다(302). 일부 구현들에서, DSP들(150)은 SSP(간결함을 위해 도 3에 도시되지 않음)를 통해 MPC 클러스터(130)에 선택 값들 및 추가 정보를 제공한다. 예를 들어, DSP들(150)은 디지털 컴포넌트 요청들에 응답하여 선택 값들 및 추가 정보를 제공하고, 선택 값들에 대응하는 디지털 컴포넌트들을 MPC 클러스터(130)에 저장되어야 하는 저장된 디지털 컴포넌트들로 지정할 수 있다.
MPC 클러스터(130)는 클라이언트 디바이스(110)로부터 수신된 미래의 디지털 컴포넌트 요청들에 대한 선택 값들 및 선택 기준을 저장할 수 있다. 각 디지털 컴포넌트에 대해 DSP(150)는 또한 디지털 컴포넌트에 대한 추가 데이터, 예를 들어 메타데이터를 업로드할 수 있다. 디지털 컴포넌트에 대한 추가 정보는 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스에 포함되기 위해 충족되어야 하는 하나 이상의 조건들(및 조건(들)에 대한 파라미터들)을 포함할 수 있다. 예를 들어, 추가 정보는 디지털 컴포넌트에 대응하는 사용자 그룹들에 대한 하나 이상의 사용자 그룹 식별자들을 포함할 수 있다.
디지털 컴포넌트에 대한 추가 정보는 디지털 컴포넌트가 적격인 문맥을 나타내는 선택 신호들, 예를 들어 클라이언트 디바이스(110)의 위치, 애플리케이션(112)에 대해 선택된 음성 언어, 디지털 컴포넌트가 제공될 수 있는 리소스들에 대한 URL들 및/또는 디지털 컴포넌트가 제공될 수 없는 리소스들에 대한 URL들을 포함할 수 있다. 디지털 컴포넌트에 대한 이러한 추가 정보는 또한 예를 들어 고유 식별자, 디지털 컴포넌트가 획득될 수 있는 도메인, 및/또는 디지털 컴포넌트에 대한 다른 적절한 데이터를 사용하여 디지털 컴포넌트를 식별할 수 있다. 이러한 추가 정보는 디지털 컴포넌트에 대한 메타데이터로 포함될 수 있다.
일부 구현들에서, MPC 클러스터(130)는 디지털 컴포넌트 요청들을 위해 MPC 클러스터(130)에 제공된 디지털 컴포넌트들에 대한 선택 값들, 선택 기준 및 다른 정보를 캐싱하거나 그렇지 않으면 저장한다. 이 예에서, 디지털 컴포넌트 및 선택 값에 대한 문맥 신호들은 디지털 컴포넌트 요청에 포함된 문맥 신호들을 포함할 수 있다. 전술한 바와 같이 선택 값들과 메타데이터는 2 스테이지 LUT에 저장될 수 있다.
일부 구현들에서, DSP(150)는 디지털 컴포넌트에 대한 정적 선택 값 대신에 디지털 컴포넌트에 대한 값들의 사용자 그룹-기반 벡터를 제공할 수 있다. 그러한 예들에서, 값들의 사용자 그룹-기반 벡터는 선택 값 대신에 저장될 수 있다.
클라이언트 디바이스(110)는 콘텐츠를 수신한다(304). 예를 들어, 클라이언트 디바이스(110)는 웹 브라우저에 의한 디스플레이를 위한 전자 리소스(예를 들어, 웹 페이지) 또는 네이티브 애플리케이션에 의한 디스플레이를 위한 애플리케이션 콘텐츠를 수신할 수 있다. 콘텐츠는 실행될 때 클라이언트 디바이스(110)가 각 슬롯에 대한 디지털 컴포넌트를 요청하게 하는 컴퓨터-판독가능 코드, 예를 들어 스크립트들을 포함하는 하나 이상의 디지털 컴포넌트 슬롯을 포함할 수 있다. 클라이언트 디바이스(110)는 클라이언트 디바이스(110)의 디스플레이 상에 콘텐츠를 렌더링할 수 있다.
클라이언트 디바이스(110)는 사용자 그룹 식별자들의 세트를 식별한다(306). 사용자 그룹 식별자들의 세트는 사용자를 멤버쉽으로 포함하는 사용자 그룹들에 대한 사용자 그룹 식별자일 수 있다. 예를 들어, 사용자 그룹 식별자들의 세트는 사용자 그룹 목록의 사용자 그룹 식별자들일 수 있다. 콘텐츠 또는 신뢰할 수 있는 프로그램을 렌더링하는 애플리케이션(112)은 예를 들어 클라이언트 디바이스(110)의 보안적저장소로부터 사용자 그룹 목록에 액세스함으로써 사용자 그룹 식별자들의 세트를 식별할 수 있다.
클라이언트 디바이스(110)는 확률적 데이터 구조를 생성한다(308). 민감한 정보에 기초하여 디지털 컴포넌트 요청을 보안적이고 효율적으로 생성하기 위해, 애플리케이션(112)은 뻐꾸기(cuckoo) 필터 또는 블룸(Bloom) 필터와 같은 확률적 데이터 구조들을 사용할 수 있다. 이 예에서 확률적 데이터 구조는 뻐꾸기 필터이다. 블룸 필터를 사용하는 예는 도 8을 참조하여 설명된다. 일반적으로 뻐꾸기 필터는 각 버킷이 b개의 지문들을 저장할 수 있는 버킷들의 배열을 포함한다. 항목의 지문은 해당 항목의 해시에서 파생된 비트 스트링이다. 뻐꾸기 필터는 항목을 b개의 위치들 중 임의의 곳의 n개의 다른 버킷들에 놓이게 하는 n개의 해시 함수들을 사용한다. 일반적으로 뻐꾸기 필터는 각 버킷 내의 지문들의 수와 버킷들의 수로 식별된다. 예를 들어, (2, 4) 뻐꾸기 필터는 2개의 버킷들을 구비하고, 뻐꾸기 배열의 각 버킷은 최대 4개의 지문들을 저장할 수 있다. 따라서 뻐꾸기 필터의 총 용량은 2×4개, 즉 8개의 지문들이다.
뻐꾸기 필터의 구성에 따라, 항목은 뻐꾸기 필터의 N개의 가능한 위치들 중 하나에 삽입될 수 있다(예, N=2). 애플리케이션(112)은 사용자 그룹 식별자 또는 차단된 식별자들의 세트로부터의 식별자 및 애플리케이션(112)에 의해 생성된 2개의 랜덤 변수들 중 하나에 의해 파라미터화된 N개의 의사 랜덤 함수(PRF)를 사용하여 삽입될 항목에 대한 모든 가능한 위치들을 결정한다. 예를 들어, 애플리케이션(112)에 의해 생성된 2개의 랜덤 변수들이 rand_varla 및 rand_varlb라고 가정한다. 일부 구현들에서, 애플리케이션(112) 및 MPC 클러스터(130)는 사전에 PRF에 동의하며, 여기서 PRF(x,y)∈[0,2k - 1]이고, 여기서 k는 뻐꾸기 필터의 버킷 내의 각 항목에서 비트들의 수이다.
뻐꾸기 필터의 각 위치는 사용자 그룹 식별자 또는 차단된 식별자에 의해 점유될 수 있거나, 비어 있을 수 있다. 차단된 식별자들은 애플리케이션(112)이 예를 들어 빈도 제어들에 기초하여 디지털 컴포넌트들을 차단하는 식별자들, 또는 사용자 그룹에 대한 디지털 컴포넌트들을 차단하기 위해 선택한 식별자들이다. 애플리케이션(112)은 PRF(ug_id, rand_varla), PRF(blocked_uid, rand_varlb) 및 0의 요소들을 갖는 뻐꾸기 필터 테이블을 생성할 수 있고, 여기서 ug_id는 콘텐츠 제공자의 도메인에 기초하여 사용자 그룹의 레이블에 HMAC를 적용하여 생성된 사용자 그룹의 식별자이고, locked_uid는 차단된 식별자들의 세트로부터의 식별자이고, 0은 빈 항목을 나타낸다. 이 프로세스는 모든 사용자 그룹 식별자들에 대해 반복된다. 일부 구현들에서, 동일한 확률적 데이터 구조, 예를 들어 뻐꾸기 필터 또는 블룸 필터는 사용자 그룹 식별자들과 차단된 식별자들 모두를 저장할 수 있다. 다른 구현들에서, 사용자 그룹 식별자들 및 차단된 식별자들은 전용 확률 데이터 구조들에 저장된다.
애플리케이션(112)은 사용자 그룹 식별자들 및/또는 차단된 식별자들에 대해 생성된 뻐꾸기 필터 테이블에 기초하여 벡터 B를 생성할 수 있다. 벡터 B의 각 값(Bi)은 Bi = (Ai -PRF(rand_var2, i)) mod p 로 나타낼 수 있고, 여기서 A는 뻐꾸기 필터 테이블이고, i는 벡터 B 및 뻐꾸기 필터 테이블 A의 인덱스이다. 애플리케이션(112)이 디지털 컴포넌트 슬롯에 대한 디지털 컴포넌트에 대한 요청을 개시할 때, 애플리케이션(112)은 컴퓨팅 시스템(MPC1)에 대한 요청의 파라미터들로서 rand_varla, rand_varlb 및 rand_var2를 전송한다. 애플리케이션(112)은 또한 컴퓨팅 시스템(MPC2)에 대한 요청의 파라미터들로서 벡터 B, rand_varla 및 rand_varlb를 전송한다. PRF(rand_var2, i) 및 Bi는 각각 컴퓨팅 시스템들(MPC1 및 MPC2)이 보유하는 Zp에서 Ai의 두 가지 추가 비밀 공유들이다. 컴퓨팅 시스템들(MPC1과 MPC2) 모두 비밀 공유들에 액세스할 수 없기 때문에, 컴퓨팅 시스템들 중 어느 것도 뻐꾸기 필터 테이블을 재생성할 수 없어, 사용자 개인정보를 보호한다.
클라이언트 디바이스(110)는 뻐꾸기 필터에 대한 파라미터들을 포함하는 디지털 컴포넌트 요청들을 MPC 클러스터(130)에 전송한다(310). 예를 들어, 클라이언트 디바이스(110)는 rand_varla, rand_varlb 및 rand_var2를 포함하는 디지털 컴포넌트 요청을 컴퓨팅 시스템(MPC1)에 전송할 수 있다. 클라이언트 디바이스(110)는 또한 벡터 B, rand_varla 및 rand_varlb를 포함하는 디지털 컴포넌트 요청을 컴퓨팅 시스템(MPC2)으로 전송할 수 있다. 두 디지털 컴포넌트 요청들은 또한, 예를 들어 전자 리소스의 URL, 리소스의 디지털 컴포넌트 슬롯들의 수, 클라이언트 디바이스(110)의 지리적 위치와 같은 문맥 신호들, 및/또는 예를 들어 디지털 컴포넌트를 선택하는데 사용될 수 있는 질의 키와 같은 다른 적절한 문맥 신호들을 포함할 수 있다.
MPC 클러스터(130)는 문맥 디지털 컴포넌트 요청을 SSP(170)로 전송한다(312). 이 디지털 컴포넌트 요청은 문맥 신호를 포함할 수 있지만, 사용자를 멤버쉽으로 포함하는 사용자 그룹을 식별하는 사용자 그룹 식별자와 같은 민감한 사용자 데이터는 포함하지 않는다. 일부 구현들에서, 문맥 디지털 컴포넌트 요청은 클라이언트 디바이스(110) 상에서 렌더링된 발행인의 페이지 상의 SSP의 태그에 의해 생성되었다. 애플리케이션(112)은 동작(310)에서 전송된 디지털 컴포넌트 요청 상의 피기백(piggyback)에 의해 MPC 클러스터(130)를 통해 SSP(170)에 문맥 디지털 컴포넌트 요청을 전송한다. 일부 구현들에서, 애플리케이션(112)은 SSP(170)의 공개 키를 사용하여 문맥 디지털 컴포넌트 요청을 암호화하고, 암호화된 문맥 디지털 컴포넌트 요청을 동작(310)에서 전송된 디지털 컴포넌트 요청에 대한 피기백(piggy-back)에 의해 SSP(170)에 전송하여, SSP(170) 이외의 누구도 문맥 디지털 컴포넌트를 해독할 수 없다.
SSP(170)는 문맥 디지털 컴포넌트 요청을 하나 이상의 DSP들(150)로 전송한다(314). 각 DSP(150)는 디지털 컴포넌트들에 대한 하나 이상의 조건부 선택 값들 및/또는 디지털 컴포넌트들에 대한 하나 이상의 무조건부 선택 값들로 요청에 응답할 수 있다. 각 디지털 컴포넌트에 대해, 응답은 디지털 컴포넌트를 식별하는 데이터, 디지털 컴포넌트에 대한 선택 값, 디지털 컴포넌트에 대한 메타데이터(또는 다른 추가 정보)를 포함할 수 있다. 예를 들어, 응답은 각 디지털 컴포넌트에 대한 디지털 컴포넌트 정보 요소(dc_information_element)를 포함할 수 있다. 각 DSP(150)는 문맥 신호들에 기초하여 디지털 컴포넌트 선택 프로세스에 포함을 위해 하나 이상의 디지털 컴포넌트들을 선택하고, 각 선택된 디지털 컴포넌트에 대한 선택 값을 결정하거나 식별할 수 있다. 일부 구현들에서, DSP(150)는 문맥 신호들에 기초하여 하나 이상의 디지털 컴포넌트들 각각에 대한 문맥 벡터를 생성할 수 있다.
각 DSP(150)는 그 응답을 SSP(170)에 전송할 수 있다(316). SSP(170)는 응답을 MPC 클러스터(130)로 전송할 수 있다(318). 일부 구현들에서, SSP(170)는 응답을 MPC 클러스터(130)에 전송하기 전에 디지털 컴포넌트 선택 프로세스에 대해 하나 이상의 하한들을 적용할 수 있다. SSP(170)는 디지털 컴포넌트가 선택되는 전자 리소스의 발행인(140)에 기초하여 하한(들)을 적용할 수 있다. 상술한 바와 같이, 발행인(140)는 DSP(150), 디지털 컴포넌트들의 카테고리들, 디지털 컴포넌트 제공자들(160), 브랜드들에 대해, 및/또는 디지털 컴포넌트들의 다른 유형들의 그룹들에 대해 하한들을 지정할 수 있다.
SSP(170)는 발행인(140)에 의해 지정된 하한들을 식별하고, 이들을 DSP들(150)로부터 수신된 선택 값에 적용할 수 있다. 선택 값이 해당 하한보다 작으면, SSP(170)는 디지털 컴포넌트 선택 프로세스로부터 선택 값을, 예를 들어 MPC 클러스터(130)에 선택 값을 제공하지 않음으로써 제거할 수 있다. 예를 들어, 발행인(140)이 주어진 디지털 컴포넌트 제공자(160)에 대해 5단위의 하한을 지정했다고 가정하자. DSP(150)가 주어진 디지털 컴포넌트 제공자(160)의 디지털 컴포넌트에 대해 4 단위의 선택 값을 제공했다면, SSP(170)는 디지털 컴포넌트 선택 프로세스로부터 선택 값을 필터링할 수 있다.
위에서 설명된 바와 같이, DSP(150)는 미래에 디지털 컴포넌트 프로세스에서 사용하기 위해 저장될 저장된 디지털 컴포넌트들에 대한 선택 값을 제공할 수 있다. 이들 선택 값들이 해당 하한(들)을 충족하지 않는 경우, 디지털 컴포넌트들 및 관련 선택 값들은, SSP(170)가 이들을 MPC 클러스터(130)로 전달하지 않기 때문에, MPC 클러스터(130)에 저장되지 않는다.
일부 구현들에서, MPC 클러스터(130)는 SSP(170)가 아니라 또는 그에 더하여 하한들을 시행한다. MPC 클러스터(130)가 벡터가 선택 값들을 결정하기 위해 사용될 때 벡터의 내적을 계산함에 따라, MPC는 클러스터(130)는 이들 선택 값들에 대한 하한들을 시행할 수 있다. MPC 클러스터(130)는 또한 예를 들어 SSP(170)보다는 정적 선택 값들에 대해 하한을 시행할 수 있다.
MPC 클러스터(130)는 보안적 MPC 프로세스를 수행하여, 클라이언트 디바이스(110)에서의 디스플레이를 제공할 디지털 컴포넌트를 선택한다(320). 이 선택은, 예를 들어, 도 1을 참조하여 위에서 설명된 제 1 스테이지 질의 키와 같은 질의 키를 사용하여 문맥 신호들에 기초하여 디지털 컴포넌트 선택 프로세스에 적합한 디지털 컴포넌트들의 세트 및 그들의 대응하는 선택 값들을 식별하는 것을 포함할 수 있다. 이것은 또한 디지털 컴포넌트들의 세트로부터 선택 후보들인 후보 디지털 컴포넌트들을 식별하는 것을 포함할 수 있다. 후보 디지털 컴포넌트들은 DSP들(150)이 선택 값들을 제공한 무조건 디지털 컴포넌트들 및 디지털 컴포넌트의 각 조건이 충족되는 조건부 디지털 컴포넌트들을 포함할 수 있다. 조건부 디지털 컴포넌트는 디지털 컴포넌트의 모든 조건들이 충족되는 경우에만 디지털 컴포넌트 선택 프로세스의 후보를 고려한다.
MPC 클러스터(130)는 후보 디지털 컴포넌트들로부터 후보 디지털 컴포넌트들에 대한 선택 값들에 기초하여 디지털 컴포넌트 요청에 응답하여 클라이언트 디바이스(110)에 제공할 디지털 컴포넌트를 선택할 수 있다. 벡터들을 사용하여 결정된 선택 값을 갖는 디지털 컴포넌트들의 경우, MPC 클러스터(130)는 벡터들, 예를 들어 사용자 그룹-기반 벡터, 문맥 벡터 및 선택적으로 사용자 프로파일 벡터의 내적을 결정함으로써 디지털 컴포넌트에 대한 선택 값을 결정할 수 있다.
디지털 컴포넌트를 선택함에 있어서, MPC 클러스터(130)는 또한 디지털 컴포넌트들에 대한 임의의 계층들 또는 부스트들을 고려할 수 있다. 전술한 바와 같이, 발행인(140)은 DSP들(150) 및/또는 디지털 컴포넌트 제공자들(160)에 대한 계층들 및/또는 부스트들을 설정할 수 있다. 선택되는 디지털 컴포넌트의 발행인(140)이 부스트들을 설정하고 있을 때, MPC 클러스터(130)(또는 SSP(170))는 발행인(140)에 의해 지정된 대응하는 부스트를 사용하여 DSP들(150) 및/또는 디지털 컴포넌트 제공자들(160)에 대한 디지털 컴포넌트들의 선택 값을 조정할 수 있다. 벡터들이 선택값을 결정하기 위해 사용되는 경우, MPC 클러스터(130)는 선택 값이 벡터들의 내적을 계산함으로써 결정된 이후 선택 값을 조정할 수 있다.
계층들이 사용될 때, MPC 클러스터(130)는 예를 들어 최상위 우선순위 계층에서 최하위 우선순위 계층까지 순차적으로 또는 병렬로 각 계층에 대한 선택 프로세스를 수행할 수 있다. MPC 클러스터(130)는 적어도 하나의 후보 디지털 컴포넌트를 포함하는 최상위 우선순위 계층에서 최상위 선택 값을 갖는 디지털 컴포넌트를 선택할 수 있다. 예를 들어, 최상위 우선순위 계층의 디지털 컴포넌트들 중 어느 것도 후보가 아닌 경우, 예를 들어 디지털 컴포넌트 선택 프로세스에 포함을 위한 모든 조건들을 충족하는 못하는 경우, MPC 클러스터(130)는 후보를 포함하는 다음의 최상위 우선순위 계층에서 후보를 선택한다.
MPC 클러스터(130)는 선택 프로세스가 수행되는 속도를 개선하기 위해 병렬로 각 계층에 대한 선택 프로세스를 수행할 수 있다. 이러한 방식으로, 최상위 우선순위 계층에 후보들이 없는 경우, MPC 클러스터(130)는 이미 시작되었으며 서로의 계층에 대한 선택 프로세스를 완료했을 수 있어, 최종 디지털 컴포넌트는 선택될 수 있다.
MPC 클러스터(130)는 최상위 우선순위 계층에서 최하위 우선순위 계층까지 순차적으로 선택 프로세스들을 수행할 수 있다. 속도가 그다지 중요하지 않은 경우, 더 높은 우선순위 계층이 후보 디지털 컴포넌트를 포함한다면 이 방식은 더 낮은 우선순위 계층들에 대해 수행되는 계산 낭비를 줄일 수 있다. 보안적 MPC 프로세스를 사용하여 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스가 도 4에 도시되어 있고, 아래에 설명되어 있다.
MPC 클러스터(130)는 선택 결과의 비밀 공유들을 클라이언트 디바이스(110)로 전송한다(322). 일부 구현들에서, MPC 클러스터(130)는 또한 디지털 컴포넌트 선택 프로세스에 대한 선택 프로세스 식별자를 클라이언트 디바이스(110)에 전송할 수 있다. 선택 프로세스 식별자는 선택 결과가 생성된 디지털 컴포넌트 선택 프로세스를 고유하게 식별할 수 있다. 예를 들어, 컴퓨팅 시스템들(MPC1 및 MPC2)은 각각 컴퓨팅 시스템들(MPC1 및 MPC2)이 선택 프로세스를 수행하여 클라이언트 디바이스(110)에 제공할 선택 결과를 생성하는 각 디지털 컴포넌트 요청에 대한 각각의 선택 프로세스 식별자(SPID)를 생성할 수 있다. 일부 구현들에서, 선택 프로세스 식별자(SPID)는 임시값(nonce) 또는 불투명한 영숫자 또는 숫자 시퀀스일 수 있다.
MPC 클러스터(130)는 또한 SPID들에 의해 키가 지정되거나 그렇지 않으면 SPID에 연결된 선택 프로세스의 일부인 선택 값들에 대한 데이터를 저장할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은 선택 프로세스를 위해 컴퓨팅 시스템(MPC1)에 의해 생성된 SPID1에 기초한 키를 갖는 선택 값들에 대한 데이터를 포함하는 테이블 또는 다른 데이터 구조를 저장할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 선택 프로세스를 위해 컴퓨팅 시스템(MPC2)에 의해 생성된 SPID2에 기초한 키를 갖는 선택 값들에 대한 데이터를 포함하는 테이블 또는 다른 데이터 구조를 저장할 수 있다. 이것은 MPC 클러스터(130)가 클라이언트 디바이스(110)로부터 수신된 데이터에 기초하여 피드백 제어기들에 대한 프로세스 변수들을 업데이트할 수 있게 한다.
선택 결과는 선택된 디지털 컴포넌트에 대한 정보를 포함하는 바이트 어레이의 형태일 수 있다. 예를 들어, 선택 결과는 제 2 LUT의 디지털 컴포넌트에 대한 값, 예를 들어 디지털 컴포넌트에 대한 선택 값 및 디지털 컴포넌트에 대한 메타데이터를 포함하는 바이트 어레이일 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 보안적 MPC 프로세스를 사용하여, 아래에서 더 자세히 설명된 바와 같이, 선택 결과의 비밀 공유들을 결정할 수 있다. 컴퓨팅 시스템(MPC1)은 선택 결과의 제 1 비밀 공유를 클라이언트 디바이스(110)에 전송할 수 있고, 컴퓨팅 시스템(MPC2)은 선택 결과의 제 2 비밀 공유를 클라이언트 디바이스(110)에 전송할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)이 선택된 디지털 컴포넌트를 인식하는 것을 방지하기 위하여, 컴퓨팅 시스템들(MPC1 및 MPC2)은 선택 결과의 그들의 비밀 공유들을 서로 공유하는 것이 방지될 수 있다.
클라이언트 디바이스(110)는 선택 결과(들)에 대응하는 디지털 컴포넌트를 결정한다(324). 클라이언트 디바이스(110)가 컴퓨팅 시스템들(MPC1 및 MPC2)로부터 2개의 비밀 공유들을 수신하는 각각의 선택 결과에 대해, 클라이언트 디바이스(110)는 2개의 비밀 공유들로부터 선택 결과를 결정할 수 있다. 예를 들어, 아래에서 더 자세히 설명되는 추가 비밀 공유 라이브러리를 사용하여, 클라이언트 디바이스(110)는 선택 결과의 2개의 비밀 공유들을 함께 추가하여 비암호화 텍스트의 선택 결과를 얻을 수 있다. 이것은 디지털 컴포넌트에 대한 선택 값 및 디지털 컴포넌트에 대한 메타데이터, 예를 들어 디지털 컴포넌트의 아이덴티티, 클라이언트 디바이스(110)가 디지털 컴포넌트를 다운로드할 수 있는 위치, 등에 대한 액세스를 클라이언트 디바이스(110)에 제공한다.
클라이언트 디바이스(110)는 디지털 컴포넌트를 디스플레이한다(326). 예를 들어, 애플리케이션(112)은 스테이지(304)에서 수신된 콘텐츠와 함께 디지털 컴포넌트를 디스플레이할 수 있다. 일부 구현들에서, 클라이언트 디바이스(110)는 선택 결과의 디지털 컴포넌트를 디스플레이할 수 있다.
일부 구현들에서, 클라이언트 디바이스(110)는 MPC 클러스터(130)로부터의 사용자 그룹 멤버쉽에 기초하여 디지털 컴포넌트를 요청할 수 있다. 클라이언트 디바이스(110)는 또한 SSP(170)로부터의 문맥 신호에 기초하여 디지털 컴포넌트를 요청할 수 있다. 이들 문맥 신호들은 위에서 설명한 동일한 문맥 신호, 그리고 선택적으로 리소스의 디지털 컴포넌트 슬롯의 수, 디지털 컴포넌트 슬롯의 유형, 리소스와 함께 표시될 수 있는 디지털 컴포넌트들의 유형들 및/또는 형식들, 등과 같은 추가 문맥 신호를 포함할 수 있다. SSP(170)는 디지털 컴포넌트들에 대한 문맥 신호들 및 선택 값들에 기초하여 하나 이상의 디지털 컴포넌트들을 선택할 수 있고, 선택된 디지털 컴포넌트들(또는 디지털 컴포넌트들을 식별하는 데이터) 및 디지털 컴포넌트(들)에 대한 선택 값들 중 하나 이상을 클라이언트 디바이스(110)에 제공할 수 있다. 클라이언트 디바이스(110)는 MPC 클러스터(130)로부터 수신된 선택 결과의 디지털 컴포넌트 및 SSP(170)에 의해 선택된 디지털 컴포넌트(들)를 포함하는 디지털 컴포넌트들의 세트로부터, 리소스와 함께 표시할 디지털 컴포넌트를 선택할 수 있다. 리소스가 다수의 디지털 컴포넌트 슬롯들을 포함하는 경우, 클라이언트 디바이스(110)는 MPC 클러스터(130) 및 SSP(170)로부터 각각의 슬롯에 대한 각각의 디지털 컴포넌트를 요청할 수 있다.
클라이언트 디바이스(110)는 하나 이상의 이벤트 통지들을 MPC 클러스터(130)에 전송할 수 있다(328). 예를 들어, MPC 클러스터(130)로부터 수신된 선택 결과의 디지털 컴포넌트가 클라이언트 디바이스(110)의 애플리케이션(112)에 의해 디스플레이된다고 가정하면, 애플리케이션(112)은 디지털 컴포넌트의 디스플레이에 응답하여 디지털 컴포넌트에 대한 임프레션 통지들을 전송할 수 있다. 다른 예에서, 애플리케이션(112)은 사용자 인터렉션, 예를 들어, 디지털 컴포넌트의 선택/클릭을 검출하는 것에 응답하여 사용자 인터렉션 통지를 전송할 수 있다.
사용자 인터렉션 통지들의 경우, 애플리케이션(112)은 사용자가 디지털 컴포넌트와 인터렉션한 경우 1의 값을, 또는 사용자가 디지털 컴포넌트가 표시된 후 지정된 시간 내에 디지털 컴포넌트와 상호 작용하지 않은 경우 0의 값을 가질 수 있는 부울 파라미터인 클릭된 파라미터(clicked)의 비밀 공유들을 생성할 수 있다. 따라서 이 예에서 두 값 중 하나는 디지털 컴포넌트가 표시되었음을 나타내지만, 다른 하나의 값은 사용자가 디지털 컴포넌트와 상호 작용했음을 나타낼 수 있다. 애플리케이션(112)은 컴퓨팅 시스템(MPC1)로부터 수신된 SPID1 및 클릭된 파라미터의 제 1 비밀 공유[clicked1]를 포함하는 제 1 통지를 컴퓨터 시스템(MPC1)에 보낼 수 있다. 유사하게, 애플리케이션(112)은 컴퓨팅 시스템(MPC2)로부터 수신된 SPID2 및 클릭된 파라미터의 제 2 비밀 공유[clicked2]를 포함하는 제 2 통지를 컴퓨터 시스템(MPC2)에 전송할 수 있다. 다른 예에서, 통지는 디지털 컴포넌트가 예를 들어 클릭된 파라미터와 유사한 비밀 공유들을 사용하여 클라이언트 디바이스(110)에 디스플레이되었는지 여부를 개별적으로 나타낼 수 있다.
임프레션 및 사용자 인터렉션 통지들은 MPC 클러스터(130)가 디지털 컴포넌트의 분포의 보조를 맞추는데 사용된 피드백 제어기에 대한 프로세스 변수들을 업데이트할 수 있게 한다. 예를 들어, 프로세스 변수가 임프레션 비율이면, MPC 클러스터(130)는 디지털 컴포넌트(또는 디지털 컴포넌트를 포함하는 캠페인)의 임프레션의 카운트값을 업데이트하기 위해 임프레션 통지를 사용할 수 있다. 프로세스 변수가 사용자 인터렉션 비율인 경우, MPC 클러스터(130)는 클릭된 파라미터를 사용하여 디지털 컴포넌트(또는 디지털 컴포넌트를 포함하는 캠페인)에 대한 사용자 인터렉션의 수를 업데이트할 수 있다. 특정 예에서, 컴퓨팅 시스템(MPC1)은 선택 프로세스를 위한 저장된 데이터를 획득하기 위해 SPID1을 사용할 수 있고, 컴퓨팅 시스템(MPC2)은 선택 프로세스를 위한 저장된 데이터를 획득하기 위해 SPID2를 사용할 수 있다. MPC 클러스터(130)는 보안적 MPC 프로세스를 수행하여 애플리케이션(112)에 의해 디스플레이된 디지털 컴포넌트의 캠페인에 대한 프로세스 변수들(예를 들어, 임프레션 비율, 인터렉션 비율, 전환 비율, 및/또는 리소스 고갈 비율)을 업데이트할 수 있다. 유사하게, MPC 클러스터(130)는 디지털 컴포넌트가 k-익명성 조건을 충족하는지 여부를 결정하기 위해 사용되는 카운트값들을 업데이트하기 위해 통지들을 사용할 수 있다.
도 4는 클라이언트 디바이스로의 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스(400)의 업무 흐름 도면이다. 프로세스(400)의 동작은 예를 들어 MPC 클러스터(130)의 컴퓨팅 시스템들(MPC1 및 MPC2)에 의해 구현될 수 있다. 프로세스(400)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체에 저장된 명령들로서 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치들이 프로세스(400)의 동작들을 수행하게 할 수 있다.
프로세스(400)는 제 1 값 선택 프로세스들, 제 2 값 선택 프로세스들, 및/또는 부스트들 및/또는 하한들을 포함하는 선택 프로세스들에 사용될 수 있다. 이들 변형들의 각각은 아래에 설명되어 있다. 도 5에 도시된 다른 예시적인 프로세스(500)는 계층들을 포함하는 선택 프로세스들에 사용될 수 있다. 프로세스(500)는 또한 제 1 값 선택 프로세스들, 제 2 값 선택 프로세스들, 부스트들, 및/또는 하한들을 지원할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트들에 대한 선택 값들을 결정 및/또는 식별한다(402). 컴퓨팅 시스템들(MPC1 및 MPC2)은 클라이언트 디바이스(110)로부터 수신된 디지털 컴포넌트 요청에 응답하여 선택 값들을 결정할 수 있다. 도 3을 참조하여 기술한 바와 같이, 컴퓨팅 시스템(MPC1)은 클라이언트 디바이스(110)의 사용자에 대한 사용자 그룹 식별자들을 나타내는 확률적 데이터 구조에 대한 문맥 신호들 및 데이터를 포함하는 디지털 컴포넌트 요청을 클라이언트 디바이스(110)로부터 수신할 수 있다. 확률적 데이터 구조에 대한 데이터는 파라미터들(rand_varla, rand_varlb 및 rand_var2)을 포함할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 클라이언트 디바이스(110)로부터 문맥 신호들 및 파라미터들(벡터 B, rand_varla 및 rand_varlb)를 수신할 수 있다. 문맥 신호들은 질의 키의 형태, 예를 들어 도 1을 참조하여 설명된 제 1 스테이지 질의 키(SHA256(UG_Request_Key))일 수 있다.
선택 값들은 각 컴퓨팅 시스템(MPC1 및 MPC2)에 의해 데이터가 저장되는 저장된 디지털 컴포넌트들에 대한 선택 값들과 SSP(170)로부터 디지털 컴포넌트 선택 프로세스에 대해 수신된 JIT 선택 값들을 포함할 수 있다. 선택 값들이 벡터들을 사용하여 결정되는 상황들에 대해, 각 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트에 대한 벡터들의 내적을 결정함으로써 선택 값들을 결정할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 또한 발행인(140) 또는 SSP(170)가 부스트를 설정한 디지털 컴포넌트들에 대한 임의의 부스트들을 적용할 수 있고/있거나, 발행인(140 또는 SSP(170))에 의해 설정된 임의의 하한들을 시행할 수 있다.
컴퓨팅 시스템(MPC1)은 적격 디지털 컴포넌트들을 식별한다(404). 컴퓨팅 시스템(MPC1)은 예를 들어 도 3을 참조하여 설명된, 클라이언트 디바이스(110)로부터 수신된 디지털 컴포넌트 요청에 대해 적격한 디지털 컴포넌트들을 식별할 수 있다. 적격 디지털 컴포넌트는 디지털 컴포넌트 요청의 문맥 신호들을 기반으로 한 선택을 위해 적격인 디지털 컴포넌트이다. 예를 들어, 적격 디지털 컴포넌트는 디지털 컴포넌트 요청의 문맥 신호와 일치하는 문맥 신호들의 세트를 갖는 디지털 컴포넌트, 예를 들어 요청의 질의 키와 일치하는 질의 키를 갖는 디지털 컴포넌트일 수 있다.
2스테이지 LUT가 사용되는 구현들에서, 컴퓨팅 시스템(MPC1)은 디지털 컴포넌트 요청의 제 1 스테이지 질의 키를 사용하여 적격한 디지털 컴포넌트들을 식별할 수 있다. 컴퓨팅 시스템(MPC1)은 제 1 스테이지 LUT에 액세스하고 제 1 스테이지 질의 키를 사용하여, 제 2 스테이지 LUT의 행들을 식별할 수 있고, 이들 행들은 디스플레이되기에 적격인 디지털 컴포넌트들에 대한 정보, 예를 들어, 선택 값이 수신된 정보, 제 1 스테이지 질의 키로 표시되는 문맥 신호들의 세트에 대한 정보를 포함한다. 예를 들어, 위에서 설명된 바와 같이, 제 2 스테이지 LUT의 각 행은 디지털 컴포넌트에 대한 정보 및 문맥 신호들의 세트에 기반한 제 2 스테이지 질의 키를 포함한다. 따라서, 컴퓨팅 시스템(MPC1)은 디지털 컴포넌트 요청에서 수신된 제 1 스테이지 질의 키에 의해 한정된 문맥 신호들의 세트와 일치하는 문맥 신호들의 세트를 갖는 제 2 스테이지 LUT의 행들을 식별하기 위해 제 1 스테이지 질의 키를 사용할 수 있다. 이들 행들은 디스플레이되기에 적격이거나, 디지털 컴포넌트 요청에서 수신된 제 1 스테이지 질의 키로 한정된 문맥에 대해 적격인 선택 값들을 갖는 디지털 컴포넌트들에 대한 정보를 포함한다.
컴퓨팅 시스템(MPC2)은 적격 디지털 컴포넌트들을 식별한다(406). 컴퓨팅 시스템(MPC2)은 클라이언트 디바이스(110)로부터 수신된 디지털 컴포넌트 요청에 대한 적격 디지털 컴포넌트들을 식별할 수 있다. 컴퓨팅 시스템(MPC2)은 컴퓨팅 시스템(MPC1)과 유사한 방식으로 적격 디지털 컴포넌트들을 식별할 수 있다. MPC 클러스터(130)가 하한들을 시행하는 구현들에서, 각각의 MPC 컴퓨팅 시스템(MPC1 및 MPC2)은 적격 디지털 컴포넌트들로부터, 해당 하한을 충족하지 않는 예를 들어, 부합하거나 초과하지 않는 선택 값을 갖는 임의의 적격 디지털 컴포넌트를 필터링할 수 있다.
각각의 적격 디지털 컴포넌트에 대해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트 및 그 선택 값이 디지털 컴포넌트 요청에 응답하여 클라이언트 디바이스(110)에 배포하기 위해 선택되기 위한 후보인지 여부를 결정한다(408). 후보 디지털 컴포넌트들은, 디지털 컴포넌트가 조건부 디지털 컴포넌트인 경우, 디지털 컴포넌트에 대한 하나 이상의 조건들을 모두 충족하는 적격 디지털 컴포넌트들이다. 문맥에 따라 적격인 각 무조건 디지털 컴포넌트는 또한 후보 디지털 컴포넌트이다. 컴퓨팅 시스템들(MPC1 및 MPC2)은, 컴퓨팅 시스템(MPC1 또는 MPC2) 중 어느 것도 비암호문으로 후보 디지털 컴포넌트들을 식별할 수 없도록, 보안적 MPC 프로세스를 사용하여 후보 디지털 컴포넌트들을 결정할 수 있다.
사용자 그룹 멤버쉽 조건들에 대해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 각각의 적격 디지털 컴포넌트("i")에 대한 사용자 그룹 멤버쉽 조건 파라미터(ug_checki)의 각각의 비밀 공유들을 계산할 수 있다. 컴퓨팅 시스템(MPC1)에 의해 유지되는 사용자 그룹 멤버쉽 조건 파라미터(ug_checki)의 제 1 비밀 공유는 [ug_checki,1]로 표시될 수 있고, 컴퓨팅 시스템(MPC2)에 의해 유지되는 사용자 그룹 멤버쉽 조건 파라미터(ug_checki)의 제 2 비밀 공유는 [ug_checki,2]로 표시될 수 있다. 대괄호들은 파라미터들의 비밀 공유들을 나타내는데 사용된다.
뻐꾸기 필터가 사용자에 대한 사용자 그룹 멤버쉽을 나타내는데 사용되는 구현들의 경우, 컴퓨팅 시스템(MPC1)은 컴퓨팅 시스템(MPC2)과 협력하여 아래 관계 1에 따라 [ug_checki,1]을 계산한다.
관계 1에서, Π는 다수의 항목들의 곱셈을 나타낸다. 여기서, ug_id(x)는 선택 값(x)과 연관된 사용자 그룹 식별자(ug_id)를 검색하는데 사용되는 함수이고, {F1,… FN}은 뻐꾸기 필터 표(A) 내에서 항목의 가능한 인덱스를 계산하기 위한 해시 함수들의 세트이고, rand_val1a는 디지털 컴포넌트 요청에서 수신된 임의의 값이다. [Mx,1]은 배열 [M1]의 x번째 요소이다. ==는 비밀 정수의 비암호화 텍스트 정수와 비밀 공유 간의 등식 테스트이다. ==의 결과는 0(같지 않음) 또는 1(같음)인 비밀 정수의 비밀 공유이다. 여기서 [Mi,1]의 값은 [PRF(rand_val2a, i)1]이다.
유사하게, 컴퓨팅 시스템(MPC2)은 컴퓨팅 시스템(MPC2)와 협력하여 아래 관계 2에 따라 [ug_checki,2]를 계산한다.
여기서 [Mi,2]의 값 = Bi이다.
디지털 컴포넌트가 선택되는 사용자의 사용자 그룹 멤버쉽에 따라 조건이 지정되는 디지털 컴포넌트의 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 사용자 그룹 멤버쉽 조건 파라미터(ug_checki)의 비밀 공유들([ug_checki,1] 및 [ug_checki,2])을 계산할 수 있다. 두 개의 비밀 공유들의 조합은 사용자가 디지털 컴포넌트에 해당하는 사용자 그룹의 멤버인지 여부를 나타내는 부울 값일 수 있다. 예를 들어 1의 값은 사용자가 멤버임을 나타내고, 0의 값은 사용자가 멤버가 아님을 나타낼 수 있다. 사용자의 사용자 그룹 멤버쉽에 조건이 지정되지 않은 디지털 컴포넌트들의 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 조합이 디지털 컴포넌트에 대응하는 사용자 그룹의 멤버임을 나타내는 값(예: 1)을 갖도록 비밀 공유들([ug_checki,1] 및 [ug_checki,2])에 대한 디폴트 값들을 사용할 수 있다.
블룸 필터가 사용자의 사용자 그룹 멤버쉽을 나타내기 위해 사용되는 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 도 8을 참조하여 설명된 바와 같이 블룸 필터에 질의할 수 있다. 결과는 컴퓨팅 시스템(MPC1)이 블룸 필터의 각 해시 함수에 대해 사용자 그룹 멤버쉽 조건 파라미터의 제 1 비밀 공유[ug_checki,1]를 갖는다는 것이다. 유사하게, 컴퓨팅 시스템(MPC2)은 블룸 필터의 각 해시 함수에 대해 사용자 그룹 멤버쉽 조건 파라미터의 제 2 비밀 공유[ug_checki,2]를 갖는다. 디지털 컴포넌트가 사용자 그룹 멤버쉽 조건을 충족하기 위해, 블룸 필터의 각 해시 값에 대한 사용자 그룹 멤버쉽 조건 파라미터, 즉 ug_checki는 참인 부울 값, 즉 1을 가질 필요는 없을 것이다. 각 해시 값에 대한 비밀 공유들은 디지털 컴포넌트에 대한 후보 파라미터의 비밀 공유들의 최종 계산에 포함될 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 또한 빈도 제어들 또는 뮤팅에 따라 조건이 지정되는 각각의 디지털 컴포넌트(i)에 대한 차단된 디지털 컴포넌트 파라미터(blocked_checki)의 각각의 비밀 공유들([blocked_checki,1] 및 [blocked_checki,2])를 계산하기 위해 협력할 수 있다. 두 개의 비밀 공유들의 조합은 디지털 컴포넌트가 빈도 제어들(예: 디지털 컴포넌트가 기간 동안 임계 횟수 이상 사용자에게 제공되지 않은)를 기반으로 및/또는 사용자가 디지털 컴포넌트를 사용자에게 표시하지 않도록 선택했는지 여부에 기반으로, 차단된 디지털 컴포넌트 조건을 충족하는지 여부를 나타내는 부울 값일 수 있다. 예를 들어, 참의 부울 값, 즉 1의 값은 이들 요소들을 기반으로 디지털 컴포넌트가 사용자에게 디스플레이될 수 있음을 나타내고, 거짓의 부울 값, 즉 0의 값은 디지털 컴포넌트가 이들 요소들을 기반으로 사용자에게 표시될 수 없음을 나타낼 수 있다.
차단된 디지털 컴포넌트 파라미터의 비밀 공유들을 결정하기 위해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 차단된 디지털 컴포넌트들에 대한 식별자들을 나타내는 블룸 필터의 공유들, 예를 들어 어레이들을 사용할 수 있다. 애플리케이션(112)은 차단된 디지털 컴포넌트들에 대한 식별자들을 나타내는 블룸 필터를 생성하고, 블룸 필터를 나타내는 데이터를 도 8을 참조하여 설명된 바와 같이 컴퓨팅 시스템들(MPC1 및 MPC2)에 전송할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 이후 도 8을 참조하여 설명된 바와 같이 비밀 공유들([blocked_checki,1] 및 [blocked_checki,2])을 획득하기 위해 블룸 필터를 나타내는 어레이들을 사용하여 블룸 필터에 질의할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 또한 예를 들어 피드백 컨트롤러를 사용하여 보조가 맞춰지는 각 디지털 컴포넌트(i)에 대한 보조맞춤 제어 체크 파라미터 (pacing_checki)의 각각의 비밀 공유들([pacing_checki,1] 및 [pacing_checki,2])을 계산하기 위해 협력할 수 있다. 두 비밀 공유들의 조합은 디지털 컴포넌트가 예를 들어 피드백 컨트롤러의 출력을 기반으로 보조맞춤 조건을 충족하는지 여부를 나타내는 부울 값일 수 있다. 예를 들어, 디지털 컴포넌트가 목표 임프레션 비율과 관련하여 너무 빈번하게 제공되는 경우, 피드백 컨트롤러의 출력은 디지털 컴포넌트가 이 디지털 컴포넌트 선택 프로세스에 적격이지 않음을 나타낼 수 있다. 참의 부울 값, 즉 1의 값은 디지털 컴포넌트가 보조맞춤 조건을 충족함을, 즉 이 선택 프로세스에 대해 조절되지 않음을 나타낼 수 있고, 거짓의 부울 값, 즉 0의 값은 디지털 컴포넌트가 보조맞춤 조건을 충족하지 않음을, 즉 이 선택 프로세스에 대해 조절됨을 나타낼 수 있다.
리소스 고갈(예: 예산) 및 보조맞춤 규칙들을 시행하기 위해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 피드백 컨트롤러 및 리소스 고갈 조건을 사용하여 결정된 확률을 사용하여 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스에 참여하는 것을 랜덤으로 차단할 수 있다. 디지털 컴포넌트를 포함하는 캠페인이 추가 리소스들을 갖지 않는 경우, 확률은 1로 설정된다. 그렇지 않은 경우, 캠페인이 배달 일정보다 앞서면, 컴퓨팅 시스템들(MPC1 및 MPC2)이 디지털 컴포넌트 선택 프로세스로부터 디지털 컴포넌트를 차단할 가능성이 더 높아지도록, 예컨대 보조맞춤 제어 확인 파라미터(pacing_checki)가 0의 값을 갖도록 비밀 공유들([pacing_checki,1] 및 [pacing_checki,2])을 계산함으로써, 확률은 높게(예: 0보다 크고 1에 가깝게) 설정된다. 캠페인이 배송 일정보다 늦어지면, 확률이 낮아진다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 피드백 컨트롤러를 사용하여 추가 비밀 공유들의 각 캠페인에 대한 보조맞춤 선택기 파라미터(pacing_selector)를 주기적으로 계산할 수 있다. 개념적으로 보조맞춤 선택기 파라미터는 최대 범위의 계수만큼 확장된 조절 확률이다.
각각의 디지털 컴포넌트 요청 및 각각의 디지털 컴포넌트에 대해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 [0, 최대 범위]에 균일하게 분포된 비밀 번호를 계산한다. 난수가 보조맞춤 선택기 파라미터(pacing_selector) 이하이면, 컴퓨팅 시스템들(MPC1 및 MPC2)은 예를 들어 보조맞춤 제어 체크 파라미터(pacing_checki)가 0의 값을 갖도록 비밀 공유들([pacing_checki,1] 및 [pacing_checki, 2])을 계산함으로써, 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스에 참여하는 것을 차단한다.
디지털 컴포넌트 선택 프로세스에서 참여자들의 사용자 개인정보 및 기밀 정보를 보호하기 위해, 난수 및 보조맞춤 선택기 파라미터 모두가 추가 비밀 공유들에 존재한다. 두 개의 비밀 공유들 간의 비교는 왜곡된 회로 프로토콜을 사용하여 수행될 수 있다. 두 비밀 공유들을 6비트 또는 7비트로 제한함으로써, 비교 프로토콜은 컴퓨팅 시스템들(MPC1 및 MPC2) 사이에서 1회 또는 2회의 통신을 수행할 수 있다.
캠페인의 보조맞춤 선택기 파라미터를 결정하기 위해, 컴퓨팅 시스템들은 각 캠페인에 사용된 리소스들의 양을 resources_used_campaign = ∑(clearing_value ×is_dc_the_winner)로 계산할 수 있고, 여기서 합계는 캠페인의 디지털 컴포넌트를 포함하는 모든 디지털 컴포넌트 선택 프로세스들에 걸친 합계이고, 파라미터(clearing_value)는 디지털 컴포넌트 선택 프로세스에 대한 소거 값이고, is_dc_the_winner는 디지털 컴포넌트 선택 프로세스에서 디지털 컴포넌트에 대한 승자 파라미터이다. 이 계산은 각 컴퓨팅 시스템(MPC1 및 MPC2)이 사용된 리소스들의 양의 비밀 공유를 보유하도록 비밀 공유들에서 수행될 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 사용된 리소스의 양, 즉 resources_used_campaign이 비밀 공유들에서 캠페인에 할당된 리소스들의 총 양보다 큰지 여부를 결정함으로써 캠페인에 대해 리소스의 소진된 파라미터(resources_exhausted)를 계산할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각 캠페인에 대한 보조맞춤 선택기 파라미터(pacing_selector)를 pacing_selector = resources_exhausted×maximum range +(1-resources_exhausted)×output으로 계산할 수 있으며, 여기서 파라미터 출력은 피드백 컨트롤러의 출력이다. 이 계산은 컴퓨팅 시스템들(MPC1 및 MPC2) 사이에서 하나의 RPC를 사용하여 비밀 공유들의 곱셈을 계산할 수 있다. 그러나 이러한 계산은 임의의 추가 대기 시간을 방지하기 위해 주기적으로 오프라인으로 계산될 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 또한 k-익명성 조건을 충족해야 하는 각 디지털 컴포넌트(i)에 대한 k-익명성 검사 파라미터(kanonymity_checki)의 [kanonymity_checki,1] 및 [kanonymity_checki,2]의 각각의 비밀 공유들을 계산하기 위해 협력할 수 있고, 이러한 k-익명성 조건은 일부 구현들에서는 모든 디지털 컴포넌트에 적용될 수 있다. 두 개의 비밀 공유들의 조합은 디지털 컴포넌트가 k-익명성 조건을 충족시키는지 여부를 나타내는 부울 값일 수 있다. 예를 들어, 1의 값은 디지털 컴포넌트가 k-익명성을 충족시킴을 나타낼 수 있고, 0의 값은 디지털 컴포넌트가 k-익명성을 충족하지 못하여, 디지털 컴포넌트 선택 프로세스에서 차단되어야 함을 나타낼 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 (도 9를 참조하여 설명된 바와 같이) 주기적으로 로그를 처리하여, 승자 디지털 컴포넌트들이 애플리케이션(112)에 의해 보여진(또는 보여질 수 있었던), 예를 들어 대응하는 선택 프로세스 식별자가 임프레션 통지들에서 수신되었던, 디지털 컴포넌트 선택 프로세스들을 식별할 수 있다. 이들 선택 프로세스들 중에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 사용자 애플리케이션들(112)에 의해 표시된(또는 표시될 수 있었던) 임프레션의 수를impression_show_i =∑(is_dc_the_winner_i)로 카운트한다. 여기서 i는 디지털 컴포넌트 또는 캠페인을 나타낼 수 있다. 계산은 각각의 컴퓨팅 시스템들(MPC1 및 MPC2)이 노출의 수(impression_show_i)의 비밀 공유를 가지도록 비밀 공유들에서 수행된다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 이후, 예를 들어 임프레들의 수를 비밀 공유들에 걸쳐 k에 대해 비교함으로써, 임프레션의 수가 값(k)을 초과하는 지의 여부를 결정할 수 있다.
각 조건부 디지털 컴포넌트(예를 들어, 적어도 하나의 조건을 갖는 디지털 컴포넌트들)의 각 조건에 대해, 각 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트에 대한 각 조건의 파라미터의 대응하는 비밀 공유를 저장할 수 있다. 이러한 방식으로, 적어도 하나의 MPC 컴퓨팅 시스템이 정직한 한, 컴퓨팅 시스템들(MPC1 및 MPC2) 중 어느 것도 비암호화 텍스트의 파라미터 값을 알지 못한다. 각 디지털 컴포넌트는 0개 이상의 조건들에서 조건이 지정될 수 있다. 주어진 디지털 컴포넌트 선택 프로세스에 대해, 일부 디지털 컴포넌트들은 다른 디지털 컴포넌트들과 다른 조건들 및/또는 다른 양의 조건들을 가질 수 있다.
일부 예시적인 조건들이 위에 제공되었지만, 다른 조건들도 사용될 수 있다. 일반적으로 컴퓨팅 시스템들(MPC1 및 MPC2)은 보안적 MPC 프로세스를 사용하여 조건 파라미터들의 비밀 공유들을 계산할 수 있다. 조건 파라미터들을 결정하기 위한 기준과 기술들은 다양할 수 있다. 일부 구현들에서, 조건 파라미터들의 비밀 공유들은 예를 들어 컴퓨팅 시스템들(MPC1 및 MPC2)이 조건 파라미터들을 계산하지 않도록, 다른 컴퓨팅 시스템으로부터 수신될 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은, 조건부 디지털 컴포넌트가 조건 파라미터들의 비밀 공유들을 사용하여 디지털 컴포넌트 선택 프로세스에 대한 후보인지의 여부를 결정할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 조건부 디지털 컴포넌트에 대한 조건 파라미터(들)의 비밀 공유들을 사용하여 각 조건부 디지털 컴포넌트(i)에 대한 후보 파라미터(is_dc_a_candidatei)의 비밀 공유들을 계산할 수 있다. 일반적으로 조건부 디지털 컴포넌트가 위에서 설명한 각 조건들에 따라 조건이 지정되면, 디지털 컴포넌트(i)에 대한 후보 파라미터는 아래 관계 3을 사용하여 계산될 수 있다.
is_dc_a_candidatei = ug_checki AND blocked_checki AND pacing_checki AND kanonymity_checki
각 조건 파라미터의 값이 비밀 공유들에 존재하기 때문에, 컴퓨팅 시스템들(MPC1 및 MPC2)은, 조건 파라미터들의 비밀 공유들을 사용하여 디지털 컴포넌트(i)에 대한 후보 파라미터의 대응하는 비밀 공유들([is_dc_a_candidatei,1] 및 [is_dc_a_candidatei,2])을 결정하기 위해, 왕복 원격 프로시저 호출들(RPC)을 사용하여 보안적 MPC 프로세스에서 협력할 수 있다. 논리적 AND 연산들을 결정하기 위한 임의의 적절한 비밀 공유 알고리즘은 디지털 컴포넌트(i)에 대한 후보 파라미터의 비밀 공유들( [is_dc_a_candidatei,1] 및 [is_dc_a_candidatei,2])을 결정하는데 사용될 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 이들 조건들에 대한 조건 파라미터들의 비밀 공유들만을 사용하여 후보 파라미터의 비밀 공유들을 결정할 수 있다. 이러한 보안적 MPC 프로세스의 마지막으로, 컴퓨팅 시스템(MPC1)은 각 조건부 디지털 컴포넌트에 대한 후보 파라미터의 제 1 비밀 공유([is_dc_a_candidatei,1])를 보유하고, 컴퓨팅 시스템(MPC2)은 각 조건부 디지털 컴포넌트에 대한 후보 파라미터의 제 2 비밀 공유([is_dc_a_candidatei,2])를 보유한다.
일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 왜곡된 회로 프로토콜을 사용하여 각 디지털 컴포넌트에 대한 관계 3을 평가한다. 이 예에서 컴퓨팅 시스템들(MPC1 및 MPC2) 중 하나는 왜곡된 회로를 구성할 수 있다. 이 예에서 컴퓨팅 시스템(MPC1)이 왜곡된 회로를 구성한다고 가정한다. 컴퓨팅 시스템(MPC1)은 자신의 비밀 공유들를 알고 있고, 컴퓨팅 시스템(MPC2)의 비밀 공유들이 디지털 컴포넌트에 대한 후보 파라미터가 참, 또는 1이 되기 위해 보유해야 하는 오로지 하나의 가능한 비트 패턴만이 존재한다는 것을 또한 알고 있다. 이러한 속성을 통해, 컴퓨팅 시스템(MPC1)은 예를 들어 관계 3에서 총 약 50개의 부울 파라미터들이 있는 경우, 왜곡된 회로를 구성하는데 최대 50개의 게이트들만을 필요로 한다.
관계 3에서, 오로지 하나의 사용자 그룹 멤버쉽 조건 파라미터(ug_checki)가 존재한다. 그러나 블룸 필터가 사용자에 대한 사용자 그룹 멤버쉽을 나타내는데 사용되는 경우, 관계 3은 블룸 필터의 각 해시 함수에 대한 개별 사용자 그룹 멤버쉽 조건 파라미터(ug_checki)를 포함할 수 있다. 유사하게, 차단된 디지털 컴포넌트들이 블룸 필터를 사용하여 표현되는 경우, 관계 3은 이 블룸 필터의 각 해시 함수에 대한 각각의 차단된 디지털 컴포넌트 파라미터(block_checki)를 포함할 것이다. 관계 3에서 pacing_checki는 디지털 컴포넌트의 소유자가 보조맞춤 확인을 가능하게 하는 경우에만 존재한다.
컴퓨팅 시스템(MPC1)은 선택 값들에 기초하여 디지털 컴포넌트들의 순서를 결정(오더링)(ordering)한다(410). 유사하게, 컴퓨팅 시스템(MPC2)은 선택 값들에 기초하여 디지털 컴포넌트의 순서를 결정한다(412). 순서결정 프로세스에 대한 입력이 두 컴퓨팅 시스템들(MPC1 및 MPC2)에서 동일하기 때문에, 이들 두 순서들은 정확히 동일해야 한다. 각 컴퓨팅 시스템(MPC1 및 MPC2)은 디지털 컴포넌트들의 순서를 결정할 수 있다. 각 순서는 단계(408)에서 후보 적격성에 대해 평가된 후보 디지털 컴포넌트들 및 다른 디지털 컴포넌트들을 포함할 수 있다. 예를 들어 이러한 순서는 디지털 컴포넌트 선택 프로세스에 사용할 수 있는 모든 사용 가능한 디지털 컴포넌트, 디지털 컴포넌트 선택 프로세스에 사용할 수 있는 모든 적격 디지털 컴포넌트들(예: 문맥 신호들에 따라 적격인), 또는 제 2 스테이지 LUT가 사용되는 경우 제 2 스테이지 LUT의 모든 디지털 컴포넌트를 포함할 수 있다. 순서는 최상위 선택 값을 갖는 디지털 컴포넌트에서 최하위 선택 값을 갖는 디지털 컴포넌트까지일 수 있다. 일부 구현들에서, 순서에 사용되는 선택 값들은 예를 들어 DSP(150) 및/또는 SSP(170)와의 임의의 공유 및 임의의 적용 가능한 부스트 후에, 선택된 디지털 컴포넌트가 디스플레이될 리소스의 발행인(140)에 제공될 값일 수 있다.
선택 값들이 비암호화 텍스트로 되어 있기 때문에, 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트들의 순서를 결정하기 위해 임의의 왕복 계산들을 수행할 필요가 없다. 대신, 각 컴퓨팅 시스템들(MPC1 및 MPC2)은 선택 값들을 독립적으로 순서를 정할 수 있다. 선택 값들이 각 컴퓨팅 시스템(MPC1 및 MPC2)에 비밀 공유들로 저장되고, 각 컴퓨팅 시스템들(MPC1 및 MPC2)이 각 선택 값의 각각의 비밀 공유를 갖는 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 왕복 계산들을 사용하여 보안적 MPC 프로세스를 수행하여, 선택 값들의 순서를 정할 수 있다. 둘 이상의 선택 값들 사이에 동점이 존재하는 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 이들 선택 값들에 대응하는 디지털 컴포넌트들에 대한 다른 메타데이터를 사용하여 결정론적으로 동점을 깰 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각 후보 디지털 컴포넌트에 대한 누적 값(accumulated value)의 비밀 공유들을 결정한다(414). 개념적으로, 주어진 디지털 컴포넌트에 대한 누적 값은, 주어진 디지털 컴포넌트가 후보일지라도 주어진 디지털 컴포넌트를 제외하고, 주어진 디지털 컴포넌트에 대한 순서의 상부로부터 선택 값까지의 후보 디지털 컴포넌트들의 총수를 나타낸다. 즉, 누적된 값은 주어진 디지털 컴포넌트보다 선택에 더 적격인 후보 디지털 컴포넌트들의 수를 나타낸다. 이 개념은 아래 표 3에 도시되어 있다.
순서가 정해진 선택 값들 | is_dc_a_candidate | 누적 값(acc) | 누적 값이 0과 같은지? |
최상위 | 0 | 0 | 1 |
2번째로 높은 | 1 | 0 | 1 |
3번째로 높은 | 0 | 1 | 0 |
4번째로 높은 | 1 | 1 | 0 |
... | ... | ... | ... |
일부 구현들에서, 주어진 디지털 컴포넌트에 대한 누적 값은, 순서의 상부로부터 주어진 디지털 컴포넌트가 후보인 경우 주어진 디지털 컴포넌트를 포함하는, 주어진 디지털 컴포넌트까지의 후보 디지털 컴포넌트들의 총 수를 나타낸다. 이 예에서 4번째 열은 누적 값이 0이 아닌 1과 같은지 여부를 나타낸다. 간결함을 위해 나머지 논의는 주어진 디지털 컴포넌트에 대한 누적 값이, 주어진 디지털 컴포넌트가 후보라 할지라도 주어진 디지털 컴포넌트를 제외하고, 순서의 상부로부터 주어진 디지털 컴포넌트까지의 후보 디지털 컴포넌트들의 총 수를 나타내는 제 1 예와 관련하여 이루어질 것이다.개념적으로, 표 3에서, 누적 값(acc)은 순서의 상위에서 순서의 하한으로 진행함에 따라 1과 동일한 후보 파라미터(is_dc_a_candidate)를 갖는 각 디지털 컴포넌트에 대해 증분된다. 아래에서 기술된 것처럼, 누적 값들(acc)의 계산은 비밀 공유들에서 수행된다. 예를 들어, 최상위 선택 값을 갖는 디지털 컴포넌트에 대한 누적 값(acc)은, 최상위 선택 값에 대한 후보 파라미터(is_dc_a_candidate)가 0과 같기 때문에, 0이다. 제 2의 최상위 디지털 컴포넌트에 대한 누적 값(acc)은 또한, 제 2의 최상위 디지털 컴포넌트에 대한 후보 파라미터(is_dc_a_candidate)가 1과 동일하지만, 제 2의 최상위 디지털 컴포넌트보다 높은 선택 값들 중 어느 것도 1과 동일한 후보 파라미터(is_dc_a_candidate)를 갖지 않기 때문에, 0이다. 순서 아래로 내려가면서, 제 3의 최상위 선택 디지털 컴포넌트에 대한 후보 파라미터(is_dc_a_candidate)에 대한 누적 값(acc)은 1의 값을 갖는 제 2의 최상위 선택 값에 대한 후보 파라미터(is_dc_a_candidate)에 기초하여 1의 값으로 증분된다. 제3의 최상위 디지털 컴포넌트에 대한 후보 파라미터(is_dc_a _candidate)가 0이므로, 제 4의 최상위 디지털 컴포넌트에 대한 누적 값(acc)은 증가하지 않고, 제 3의 최상위 디지털 컴포넌트와 마찬가지로 0의 값을 갖는다.
표 3을 사용하여, 컴퓨팅 시스템들(MPC1 및 MPC2)은, 표 3의 네 번째 열에 표시된 바와 같이, 클라이언트 디바이스(110)로의 배포를 위해 전체 후보 파라미터(is_dc_a_candidate)가 1의 값을 갖고 누적 값(acc)이 0의 값을 갖는 선택 값에 대응하는 디지털 컴포넌트를 선택할 것이다. 이는 후보 파라미터(is_dc_a_candidate)가 1의 값을 갖는 최상위 순서의 선택 값에 해당하는 디지털 컴포넌트를 나타낸다. 후보 파라미터(is_dc_a_candidate)가 사용자 개인 정보를 유지하고 사용자 데이터가 누출되지 않는 것을 보장하기 위해 컴퓨팅 시스템들(MPC1 및 MPC2)에 대한 비밀 공유들에 존재하므로, 컴퓨팅 시스템들(MPC1 및 MPC2)은 각 디지털 컴포넌트에 대한 누적 값(acc)의 비밀 공유들을 결정하고 왕복 계산들을 사용하여, 어느 디지털 컴포넌트가 0과 동일한 누적 값(acc) 및 1과 동일한 후보 파라미터(is_dc_a_candidate)를 갖는지를 결정한다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 비밀 공유 알고리즘에 따라 일부 구현들에서 어떠한 왕복 계산들 없이도, 각 디지털 컴포넌트에 대한 누적 값(acc)의 비밀 공유들을 독립적으로 결정할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은 표 3을 참조하여 위에서 기술한 바와 같이, 각 디지털 컴포넌트(i)에 대해 모든 디지털 컴포넌트들을 순서상 최상위에서 최하위로 가로지르고, 도중에 디지털 컴포넌트에 대한 후보 파라미터(is_dc_a_candidate)를 합산함으로써, 누적된 값(acc)의 제 1 공유([acci,1])를 결정할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 각 디지털 컴포넌트(i)에 대해 순서상 최상위로부터 최하위로 모든 디지털 컴포넌트들을 가로지르고, 도중에 디지털 컴포넌트들에 대한 후보 파라미터(is_dc_a_candidate)를 합산함으로써, 누적된 값(acc)의 제 2 공유([acci,2])를 결정할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각각의 디지털 컴포넌트에 대해 누적된 값이 지정된 값을 갖는지 여부를 나타내는 결과의 비밀 공유들을 결정한다(416). 지정된 값은 표 3의 3열과 4열에서와 같이 0의 값이 될 수 있다. 위에서 설명한 바와 같이, 누적 값이 0이고 전체 후보 파라미터(is_dc_a_candidate)가 1인 디지털 컴포넌트는 후보 디지털 컴포넌트들 중에서 최상위 선택 값을 갖는 디지털 컴포넌트이다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각각의 디지털 컴포넌트(i)에 대한 비밀 공유들의 관점에서 등식 연산(acci == 0)을 계산하기 위한 보안적 MPC 프로세스의 일부로서 다중 라운드들의 계산들, 예를 들어 다중 RPC들에 참여할 수 있다. 등식 연산은 디지털 컴포넌트(i)에 대한 누적 값(acci)이 0의 값을 갖는지 여부를 결정하는데 사용된다. 이 프로세스의 마지막에, 컴퓨팅 시스템(MPC1)은 각 디지털 컴포넌트(i)에 대해, 결과(acci == 0)의 하나의 비밀 공유를 갖고, 컴퓨팅 시스템(MPC2)은 각 디지털 컴포넌트에 대해 결과(acci == 0)의 다른 비밀 공유를 갖는다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각각의 디지털 컴포넌트(i)에 대한 승자 파라미터(is_dc_the_winneri)의 비밀 공유들을 결정한다(418). 컴퓨팅 시스템들(MPC1 및 MPC2)은 각각의 디지털 컴포넌트(i)에 대해 누적 값(acci == 0)의 비밀 공유들 및 각 디지털 컴포넌트(i)에 대한 후보 파라미터(is_dc_a_candidatei)의 비밀 공유들에 기초하여 승자 파라미터들(is_dc_the_winneri)을 결정할 수 있다. 각각의 디지털 컴포넌트(i)에 대한 승자 파라미터(is_dc_the_winneri)는 디지털 컴포넌트(i)가 선택 프로세스의 승자인지 여부, 예를 들어 디지털 컴포넌트(i)가 디지털 컴포넌트 요청에 응답하여 클라이언트 디바이스(110)에 배포를 위해 선택되었는지 여부를 나타내는 부울 값일 수 있다.
일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 비밀 공유 곱셈 프로토콜을 수행하여, 각 선택 값에 대해, 비밀 공유들에 관해 승자 파라미터(is_dc_the_winneri) == (is_dc_a_candidatei×(acci==0))를 계산할 수 있다. 이것은 다수의 2개의 비밀 공유들에 대한 컴퓨팅 시스템들(MPC1 및 MPC2) 사이에서 하나의 RPC를 포함할 수 있다. 이 MPC 프로세스의 마지막에서, 컴퓨팅 시스템(MPC1)은 [is_dc_the_winneri,1] = [is_dc_a_candidatei,1]×([acci,1] == 1)로 표현되는 결과(is_dc_the_winneri)의 하나의 비밀 공유를 갖는다. 유사하게, 컴퓨팅 시스템(MPC2)은 [is_dc_the_winneri,2] = [is_dc_a_candidatesv,2]×([acci,2] == 0)로 표현되는 결과(is_dc_the_winneri)의 다른 비밀 공유를 가는다. 모든 디지털 컴포넌트들에 대해, 최대 하나의 디지털 컴포넌트는 1과 동일한 승자 파라미터(is_dc_the_winneri)를 가지며, 이는 클라이언트 디바이스(110)에 배포하기 위해 선택된 디지털 컴포넌트이다. 모든 다른 것들은 0과 같다.
제 1 값 선택 프로세스의 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 각 디지털 컴포넌트(i)에 대한 승자 파라미터(is_dc_the_winneri)를 결정하기 위해 유사한 프로세스를 수행할 수 있다. 예를 들어, 컴퓨팅 시스템들(MPC1 및 MPC2)은 제 1 선택 값 파라미터(may_first_svi)의 비밀 공유를 결정하기 위한 비밀 공유 등식 테스트를 수행할 수 있다( = (acci == 0)). 디지털 컴포넌트(i)에 대한 제 1 선택 값 파라미터(may_first_svi)는 디지털 컴포넌트에 대한 선택 값이 후보 디지털 컴포넌트 중에서 최상위일 수 있는지 여부를 나타내는 부울 값일 수 있다. 선택 값에 해당하는 디지털 컴포넌트가 실제로 후보 디지털 컴포넌트인 경우, 선택 값은 후보 디지털 컴포넌트 중 오로지 최상위 선택 값일 것이다. 따라서, 디지털 컴포넌트(i)에 대한 제 1 선택 값 파라미터(may_first_svi)는 디지털 컴포넌트가 실제로 후보 디지털 컴포넌트인 경우, 디지털 컴포넌트가 최상위 선택값을 가질 것인지 여부를 나타낸다. 이러한 등식 테스트의 마지막에, 컴퓨팅 시스템(MPC1)은 디지털 컴포넌트(i)에 대한 제 1 선택 값 파라미터(may_first_svi)의 제 1 비밀 공유([maybe_first_svi,1])를 갖고, 컴퓨팅 시스템(MPC2)은 디지털 컴포넌트(i)에 대한 제 1 선택 값 파라미터(may_first_svi)의 제 2 비밀 공유([maybe_first_svi,2])를 갖는다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 아래의 관계 4를 사용하여 비밀 공유들의 측면에서 각 디지털 컴포넌트(i)에 대한 승자 파라미터(is_dc_the_winneri)를 계산할 수 있다:
컴퓨팅 시스템들(MPC1 및 MPC2)은 선택 결과를 결정한다(420). 일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트들에 대한 승자 파라미터 및 디지털 컴포넌트들에 대한 디지털 컴포넌트 정보 요소(dc_information_element)에 기초하여 선택 결과를 계산할 수 있다. 전술한 바와 같이, 디지털 컴포넌트에 대한 디지털 컴포넌트 정보 요소(dc_information_element)는 디지털 컴포넌트에 대한 선택 값 및 디지털 컴포넌트에 대한 다른 데이터를 포함할 수 있다.
개념적으로, 컴퓨팅 시스템들(MPC1 및 MPC2)은 아래의 관계 5를 사용하여 선택 결과 파라미터("result")를 계산할 수 있다.
즉, 컴퓨팅 시스템들(MPC1 및 MPC2)은 모든 디지털 컴포넌트들에 걸쳐 승자 파라미터(is_dc_the_winneri)와 디지털 컴포넌트 정보 요소(dc_information_elementi)의 곱의 합을 결정할 수 있다. 이 예에서, 선택 결과는 후보 디지털 컴포넌트가 없는 경우 0의 값을 갖거나, 1과 동일한 승자 파라미터(is_dc_the_winneri)를 갖는 선택된 디지털 컴포넌트의 디지털 컴포넌트 정보 요소(dc_information_element)와 동일한 값을 가질 것이다. 다른 예에서, 디지털 컴포넌트 정보 요소(dc_information_element)는 관계 5에서 디지털 컴포넌트들에 대한 선택 값들로 대체될 수 있다. 이 예에서, 선택 결과는 후보 디지털 컴포넌트가 없는 경우 0의 값을 갖거나, 1과 동일한 승자 파라미터(is_dc_the_winneri)를 갖는 선택된 디지털 컴포넌트의 선택 값과 동일한 값을 갖질 것이다.
비밀 공유들에서 계산을 수행하기 위해 컴퓨팅 시스템(MPC1)은 모든 디지털 컴포넌트들을 취하고, 비암호화 텍스트일 수 있는 디지털 컴포넌트에 대한 디지털 컴포넌트 정보 요소(dc_information_elementi)에, 디지털 컴포넌트에 대한 승자 파라미터의 제 1 비밀 공유([is_dc_the_winneri,1])를 곱한다. 컴퓨팅 시스템(MPC1)은 그 다음 이들 곱들의 합을 결정할 수 있고, 그 합을 디지털 컴포넌트 요청을 제출한 클라이언트 디바이스(110)에 리턴할 수 있다. 즉, 컴퓨팅 시스템(MPC1)은 결과의 제 1 비밀 공유([result1])로서 아래의 관계 6을 사용하여 합계를 결정할 수 있다.
컴퓨팅 시스템(MPC2)은 아래의 관계 7을 사용하여 결과의 제 2 비밀 공유([result2])를 결정하기 위해 유사한 계산을 수행할 수 있다.
컴퓨팅 시스템(MPC1)은 선택 결과의 제 1 공유([result1])를 클라이언트 디바이스(110)로 전송한다(422). 유사하게, 컴퓨팅 시스템(MPC2)은 선택 결과의 제 2 공유([result2])를 클라이언트 디바이스(110)에 전송한다(424). 그런 다음 애플리케이션(112)은, 예를 들어 추가 비밀 공유 알고리즘들이 채택되는 경우 비밀 공유들의 합을 결정함으로써, 두 개의 비밀 공유들([result1] 및 [result2])을 사용하여 선택 결과(result)를 비암호 문으로 재구성할 수 있다. 선택 결과가 0의 값을 갖는다면, MPC 클러스터(130)는 클라이언트 디바이스(110)에 배포를 위한 디지털 컴포넌트를 식별하지 않았다. 그렇지 않을 경우, 선택 결과는 디지털 컴포넌트 정보 요소(dc_information_element)와 동일한 값을 갖는다. 애플리케이션(112)은 디지털 컴포넌트 정보 요소(dc_information_element)를 파싱하여 디지털 컴포넌트에 대한 선택 값 및 메타데이터를 획득할 수 있다. 그 다음, 애플리케이션(112)은 디지털 컴포넌트를 디스플레이하거나, 전술한 바와 같이 디지털 컴포넌트 및 SSP(170)로부터 수신된 다른 디지털 컴포넌트를 사용하여 선택 프로세스를 수행할 수 있다.
일부 구현들에서, 선택된 디지털 컴포넌트는 마스크를 사용하여 클라이언트 디바이스(110)에 전송되어, 컴퓨팅 시스템들(MPC1 및 MPC2) 중 하나가 비암호 문으로 선택된 디지털 컴포넌트에 액세스할 수 있는 것을 방지하고, 디지털 컴포넌트를 클라이언트 디바이스(110)로 전송할 때 지연을 감소시킨다. 이 예에서, 애플리케이션(112)은 각각의 디지털 컴포넌트 요청에 대한 임시값을 선택하고, 디지털 컴포넌트 요청과 함께 임시값을 전송할 수 있다. 애플리케이션(112)은 임시값을 컴퓨팅 시스템들(MPC1 및 MPC2) 중 하나로 전송할 수 있다. 예시를 위해, 임시값이 컴퓨팅 시스템(MPC2)으로 전송된다고 가정한다.
애플리케이션(112) 및 컴퓨팅 시스템(MPC2) 모두는 동일한 알고리즘 및 동일한 입력을 갖는 가장 큰 디지털 컴포넌트 크리에이티브와 동일한 크기의 마스크를 독립적으로 계산할 수 있다. 예를 들어, 마스크의 i번째 비트는 PRF(nonce, i)로 표현될 수 있으며, 여기서 PRF는 의사 난수 함수를 나타낸다. 애플리케이션(112) 및 컴퓨팅 시스템(MPC2) 둘 모두는 컴퓨팅 시스템(MPC1)로부터 임시값과 마스크를 엄격하게 기밀로 유지할 수 있다.
선택된 디지털 컴포넌트를 애플리케이션(112)에 전송하기 위해, 컴퓨팅 시스템(MPC2)은 [result2] 비트-XOR 마스크를 컴퓨팅 시스템(MPC1)에 전송할 수 있다. 컴퓨팅 시스템(MPC1)은 그 다음 선택 결과로서, 예를 들어 디지털 컴포넌트 요청에 대한 응답으로서 [result1] 비트-XOR ([result2] 비트-XOR 마스크)을 애플리케이션(112)에 전송한다.
애플리케이션(112)은 디지털 컴포넌트에 대한 크리에이티브로서 [result1] 비트-XOR ([result2] 비트-XOR 마스크) 비트-XOR 마스크를 계산할 수 있다. 이는 [result1] 비트-XOR [result2]와 동등하다. 이는 개인 정보 검색 보장을 유지하면서 가장 큰 크리에이티브의 크기에 필요한 대역폭을 감소시킨다. 이것은 위에서 설명한 것처럼 선택 결과의 두 개의 비밀 공유들을 전송하는 것에 비해 응답의 대역폭을 감소시킨다. 이러한 방식으로, 다른 프로세스에서와 같이 디지털 컴포넌트 크리에이티브를 전송하는 것과 관련하여 이 개인 정보 보호 기술에서 추가 대기 시간 또는 대역폭 소비가 거의 또는 전혀 없다.
제 2 값 선택 프로세스의 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 각 디지털 컴포넌트에 대한 제 2 선택 값 파라미터(may_second_svi)의 비밀 공유들을 계산할 수 있다. 디지털 컴포넌트(i)에 대한 제 2 선택 값 파라미터는 디지털 컴포넌트에 대한 선택 값이 후보 디지털 컴포넌트들 중에서 제 2의 최상위 선택 값일 수 있는지 여부를 나타내는 부울 값일 수 있다. 선택 값에 해당하는 디지털 컴포넌트가 실제로 후보 디지털 컴포넌트인 경우, 선택 값은 오로지 후보 디지털 컴포넌트 중에서 제 2의 최상위 선택 값이다. 따라서, 디지털 컴포넌트(i)에 대한 제 2 선택 값 파라미터(may_second_svi)는, 디지털 컴포넌트가 실제로 후보 디지털 컴포넌트인 경우, 디지털 컴포넌트가 제 2의 최상위 선택 값을 가질 것인지 여부를 나타낸다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 제 2 선택 값 파라미터의 비밀 공유를 결정하기 위해 비밀 공유 등식 테스트를 수행할 수 있다(may_second_svi = (acci == 1)).
이 등식 테스트의 마지막에, 컴퓨팅 시스템(MPC1)은 디지털 컴포넌트(i)에 대한 제 2 선택 값 파라미터(may_second_svi)의 제 1 비밀 공유([maybe_second_svi,1])를 갖고, 컴퓨팅 시스템(MPC2)은 디지털 컴포넌트(i)에 대한 제 2 선택 값 파라미터( may_second_svi)의 제 2 비밀 공유([maybe_second_svi,2])를 갖는다.
컴퓨팅 시스템들(MPC1 및 MPC2)은, 각각의 디지털 컴포넌트(i)에 대해, is_dc_a_candidatei AND may_second_svi의 결과가 참, 즉 1의 부울 값인지를 결정함으로써, 비밀 공유들의 관점에서 제 2의 최상위 선택 값을 갖는 후보 디지털 컴포넌트를 결정할 수 있다. 즉, 컴퓨팅 시스템들(MPC1 및 MPC2)은 어느 디지털 컴포넌트가 후보 디지털 컴포넌트이고, 참, 즉 1의 부울 값을 갖는 제 2 선택 값 파라미터(may_second_svi)를 갖는지를 결정할 수 있다.
개념적으로 컴퓨팅 시스템들(MPC1 및 MPC2)은 아래의 관계 8을 사용하여 후보 중에서 제 2의 최상위 선택 값을 계산할 수 있다:
관계 8에서 파라미터 "selectionvaluei"는 디지털 컴포넌트(i)(임의의 부스트를 갖는)에 대한 선택 값이고, 파라미터 "second_selection_value"는 후보 디지털 컴포넌트 중에서 제 2의 최상위 선택 값의 값이다. 관계를 사용하여 제 2 선택 값은 하나의 후보인 디지털 컴포넌트에 대한 선택 값이고, 참의 부울 값을 갖는 제 2 선택 값 파라미터를 갖는다. 이 관계의 부울 값들은 1(참에 대해) 또는 0(거짓에 대해)의 값으로 처리될 수 있다.
비밀 공유들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 비밀 공유들로 is_dc_a_candidate?_i AND maybe_second_svi의 결과를 계산하고, Z2 공간에서 두 개의 추가 비밀 공유들로 결과를 나타낸다(예: 추가 및 mod 2). 또한 선택 값은 비암호 문으로 되어 있다. 관계 8은, 비암호 문 표현에서 선택 값의 각 비트와 각 컴퓨팅 시스템(MPC1 및 MPC2)이 보유하는 is_dc_a_candidatei AND maybe_second_svi의 결과의 1-비트 비밀 공유 사이의 비트 논리 AND 연산으로 곱셈을 대체함으로써, 단순화될 수 있다. 또한 합계는 비트 XOR 연산으로 대체될 수 있다.
도 5는 클라이언트 디바이스로의 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스(500)의 업무 흐름 도면이다. 프로세스(500)의 동작들은 예를 들어, MPC 클러스터(130)의 컴퓨팅 시스템들(MPC1 및 MPC2)에 의해 구현될 수 있다. 프로세스(500)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체에 저장된 명령들로 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(500)의 동작들을 수행하게 할 수 있다. 위에서 언급한 바와 같이, 프로세스(500)는 계층들을 포함하는 선택 프로세스에 사용될 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트에 대한 선택 값들을 결정한다(502). 컴퓨팅 시스템들(MPC1 및 MPC2)은 클라이언트 디바이스(110)로부터 디지털 컴포넌트 요청을 수신하는 것에 응답하여 선택 값들을 획득하거나 결정할 수 있다. 컴퓨팅 시스템(MPC1)은 디지털 컴포넌트 선택 프로세스에 적격인 적격 디지털 컴포넌트들을 식별한다(504). 컴퓨팅 시스템(MPC2)은 또한 디지털 컴포넌트 선택 프로세스에 적격인 적격 디지털 컴포넌트들을 식별한다(506). 각각의 적격 디지털 컴포넌트에 대해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스의 후보인지 여부를 결정한다(508). 단계들(502-508)은 도 4에 도시된 프로세스(400)의 단계들(402-408)과 동일하거나 유사할 수 있다.
컴퓨팅 시스템(MPC1)은 디지털 컴포넌트들을 계층들로 그룹화한다(510). 위에서 설명된 바와 같이, 발행인은 DSP(150) 및/또는 디지털 컴포넌트 제공자들(160)에 대한 계층들을 설정자 수 있다. 발행인들에 대한 계층들은 최상위 우선순위 계층, 최하위 우선순위 계층, 및 선택적으로 최상위 우선순위 계층과 최하위 우선순위 계층 사이의 하나 이상의 계층들을 포함할 수 있다.
컴퓨팅 시스템(MPC1)은 디지털 컴포넌트에 대응하는, 예를 들어 디지털 컴포넌트에 대한 선택 값 또는 값들의 벡터를 제공한, DSP(150) 또는 디지털 컴포넌트 제공자(160)에 기초하여 각각의 디지털 컴포넌트에 대한 계층을 결정할 수 있다. 컴퓨팅 시스템(MPC1)은 디지털 컴포넌트들을 그들 각각의 계층들로 그룹화할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 디지털 컴포넌트들을 그들 각각의 계층들로 그룹화할 수 있다(512). 계층들에 대한 디지털 컴포넌트들의 그룹들은 컴퓨팅 시스템들(MPC1 및 MPC2) 모두에 대해 동일해야 한다. 일부 구현들에서, SSP(170)는 계층을 명시적으로 결정하고, 이후 저장될 예를 들어, MPC 클러스터(130)에 캐시될 각 선택 값에 대한 메타데이터로 인코딩한다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 그 다음, 디지털 컴포넌트 요청에 응답하여 제공할 디지털 컴포넌트를 선택하기 위해 하나 이상의 계층들 각각에 대한 개별 선택 프로세스를 수행할 수 있다(513). 일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 계층들에 대한 선택 프로세스들을 병렬로 수행한다. 일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은, 선택 프로세스가 모든 계층들에 대해 수행될 때까지, 최상위 우선순위 계층에서 시작하여 계층별로 아래로 이동하는 선택 프로세스들을 순서대로 수행한다. 일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 후보가 계층에서 일단 발견되면 중지할 수 있지만, 이는 컴퓨팅 시스템들(MPC1 및 MPC2)에 사용자 민감한 정보를 누출할 위험이 있다. 점선 상자의 단계들은 개별 선택 프로세스가 수행되는 각 계층에 대해 수행된다.
컴퓨팅 시스템(MPC1)은 선택 값들에 의해 계층으로 그룹화된 디지털 컴포넌트들의 순서를 지정한다(514). 선택 값들은 먼저 계층 우선순위에 의해, 이후 동일한 계층 내에서 선택 값에 의해 순서가 정해질 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 선택 값들에 의해 계층으로 그룹화된 디지털 컴포넌트들의 순서를 지정한다(516). 각 계층에 대해, 이들 단계들(514 및 516)은 도 4에 도시된 프로세스(400)의 단계들(410 및 412)과 유사하다. 그러나, 순서들은 계층들에 포함된 디지털 컴포넌트만을 포함한다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 계층 내의 각 디지털 컴포넌트에 대한 누적 값(acci)의 비밀 공유들을 결정하기 위해 협력한다(518). 위에서 설명한 바와 같이, 주어진 디지털 컴포넌트에 대한 누적 값은 주어진 디지털 컴포넌트가 후보일지라도 주어진 디지털 컴포넌트를 제외하고, 순서의 상부로부터 주어진 디지털 컴포넌트에 대한 선택 값까지의 후보 디지털 컴포넌트들의 총 수를 나타낼 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 도 4의 프로세스(400)의 단계(414)를 참조하여 위에서 설명된 것과 유사한 방식으로 계층의 디지털 컴포넌트들에 대한 누적 값을 결정할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 비밀 공유 알고리즘에 따라 일부 구현들에서 임의의 왕복 계산들 없이 각 디지털 컴포넌트에 대한 누적 값(acc)의 비밀 공유들을 독립적으로 결정할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은, 표 3을 참조하여 기술한 바와 같이, 각 디지털 컴포넌트(i)에 대해 계층 내의 모든 디지털 컴포넌트들을 최상위로부터 최하위의 순서로 가로지르고, 도중에 디지털 컴포넌트들에 대한 후보 파라미터들(is_dc_a_candidate)을 합산함으로써, 누적 값(acc)의 제 1 공유([acci,1])를 결정할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 각 디지털 컴포넌트(i)에 대해 계층 내의 모든 디지털 구성요들을 최상위로부터 최하위의 순서로 가로지르고, 도중에 디지털 컴포넌트들에 대한 후보 파라미터들(is_dc_a_candidate)을 합산함으로써, 누적 값(acc)의 제 2 공유([acci,2])를 결정할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 계층 내의 각 후보 디지털 컴포넌트에 대해 누적 값이 지정된 값과 같은지 여부를 나타내는 결과의 비밀 공유들을 결정한다(520). 지정된 값은 표 3의 열 3 및 열 4에 표시된 바와 같이 0의 값일 수 있다. 계층 내에서, 누적 값이 0이고 전체 후보 파라미터(is_dc_a_candidate)가 참 또는 1의 부울 값을 갖는 디지털 컴포넌트는 계층 내의 후보 디지털 컴포넌트들이 있다면 이들 중 최상위 선택 값을 갖는 디지털 컴포넌트이다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각 디지털 컴포넌트(i)에 대한 비밀 공유들의 측면에서 등식 연산(acci == 0)을 계산하기 위한 보안적 MPC 프로세스의 일부로서 다중 라운드의 계산들, 예를 들어 다중 RPC들에 참여할 수 있다. 등식 연산은 디지털 컴포넌트(i)에 대한 누적 값(acci)이 0의 값을 갖는지 여부를 결정하는데 사용된다. 이 프로세스의 마지막에 컴퓨팅 시스템(MPC1)은 계층 내의 각 디지털 컴포넌트(i)에 대해 결과(acci == 0)의 하나의 비밀 공유를 가지며, 컴퓨팅 시스템(MPC2)은 계층 내의 각 디지털 컴포넌트에 대해 결과(acci == 0)의 다른 비밀 공유를 갖는다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 계층 내의 각 디지털 컴포넌트에 대한 승리 파라미터의 비밀 공유를 결정한다(522). 컴퓨팅 시스템들(MPC1 및 MPC2)은 계층 내의 각 디지털 컴포넌트(i)에 대해 누적 값(acci == 0)의 비밀 공유 및 계층 내의 각 디지털 컴포넌트(i)에 대한 후보 파라미터(is_dc_a_candidatei)의 비밀 공유에 기초하여 승자 파라미터(is_dc_the_winneri)를 결정할 수 있다. 각 디지털 컴포넌트(i)에 대한 승자 파라미터(is_dc_the_winneri)는, 디지털 컴포넌트(i)가 계층에 대한 선택 프로세스의 승자인지 여부, 예를 들어 디지털 컴포넌트(i)가 후보 디지털 컴포넌트이고 계층 내의 후보 디지털 컴포넌트들 중에서 최상위 선택 값을 갖는지를 나타내는 부울 값일 수 있다. 일부 구현들에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 비밀 공유 곱셈 프로토콜을 수행하여, 각 선택 값에 대해 비밀 공유들에 관한 승자 파라미터(is_dc_the_winneri=(is_dc_a_candidatei×(acci==0))를 계산할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 선택 결과를 결정한다(524). 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트가 계층에 대한 승자임을 나타내는 값(예를 들어, 부울 참 또는 1)을 갖는 승리 파라미터(is_dc_the_winneri)를 갖는 디지털 컴포넌트를 포함하는 최상위 계층을 결정함으로써 선택 결과를 결정할 수 있다. 이러한 디지털 컴포넌트는 전체 디지털 컴포넌트 선택 프로세스의 승자이다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 누적 값을 사용하여, 참 또는 1과 동일한 승자 파라미터를 갖는 최상위 계층을 결정할 수 있다. 예를 들어, 컴퓨팅 시스템들(MPC1 및 MPC2)은 계층 내의 모든 디지털 컴포넌트들에 대한 누적 값이 0이 아닌 최상위 계층을 식별할 수 있다.
컴퓨팅 시스템(MPC1)은 디지털 컴포넌트 요청이 수신된 클라이언트 디바이스(110)에 선택 결과의 제 1 비밀 공유를 제공한다(526). 컴퓨팅 시스템(MPC2)은 디지털 컴포넌트 요청이 수신된 클라이언트 디바이스(110)에 선택 결과의 제 2 비밀 공유를 제공한다(528).
계층들을 포함하는 제 2 값 선택 프로세스에서, 디지털 컴포넌트에 대한 선택 값은, 디지털 컴포넌트가 선택된 디지털 컴포넌트와 동일한 계층에 있는 경우 선택 프로세스에 대한 제 2 선택 값을 제공하는데 오로지 적격이다. 제 2 선택 값을 결정하기 위해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 각 계층(t)에 대해, 계층(t)이 클라이언트 디바이스(110)로의 배포를 위해 선택된 디지털 컴포넌트를 포함하는지 여부를 나타내는 승리 계층 파라미터(may_winning_tiert)를 계산할 수 있다. 개념적으로, 컴퓨팅 시스템들(MPC1 및 MPC2)는 아래의 관계 9를 사용하여 각 계층(t)에 대해 승리 계층 파라미터(Maybe_wining_tiert)를 계산할 수 있다:
관계 9에서 파라미터 "T"는 계층(t)보다 더 높은 우선순위를 갖는 모든 계층들을 나타낸다. 따라서, 계층에 대한 승리 계층 파라미터(may_winning_tiert)는 임의의 더 높은 우선순위 계층이 후보 디지털 컴포넌트를 포함하는지 여부를 나타낸다. 그렇지 않은 경우, 계층(t)은 적어도 하나의 후보 디지털 컴포넌트를 포함하는 경우 승리 계층이다.
합과 값 0 사이의 등식 테스트는 또한 컴퓨팅 시스템들(MPC1 및 MPC2) 사이의 RPC를 사용하여 계산될 수 있다. 다양한 계산들을 위한 다중 RPC들은 컴퓨팅 시스템들(MPC1 및 MPC2) 사이의 대기 시간 및 네트워크 대역폭 소비를 줄이기 위해 더 적은 수의 RPC들로 함께 그룹화될 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 그 다음, 제 2 선택 값이, 주어진 디지털 컴포넌트에 대한 후보 파라미터(is_dc_a_candidatei), 디지털 컴포넌트에 대한 제 2 선택 값 파라미터(maybe_second_svi)(도 4를 참조하여 위에서 설명된 바와 같이 계산될 수 있는), 및 주어진 디지털 컴포넌트를 포함하는 계층(t)에 대한 승리 계층 파라미터( may_winning_tiert)의 조합에 기초하여 주어진 디지털 컴포넌트에 대한 선택 값에 의해 설정되는지 여부를 결정할 수 있다. 예를 들어, 제 2 선택 값은, 주어진 디지털 컴포넌트에 대한 is_dc_a_candidatei AND Maybe_second_svi AND Maybe_winning_tiert가 참 또는 1의 부울 값을 가질 때, 주어진 디지털 컴포넌트의 선택 값에 의해 설정된다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 그 다음 주어진 디지털 컴포넌트에 대한 선택 값을 사용하여 제 2 선택 값을 결정할 수 있다. 예를 들어, 제 2 선택 값은 주어진 디지털 컴포넌트에 대한 선택 값 또는 주어진 디지털 컴포넌트에 대한 선택 값에 지정된 양을 더한 값과 같을 수 있다.
DSP들(150) 및 디지털 컴포넌트 제공자들(160)은 종종 디지털 컴포넌트 프로세스의 최상위 다른 선택 값을 아는 것으로부터 이익을 얻을 수 있으므로, 유사한 선택 프로세스에서 디지털 컴포넌트들에 대해 제공하는 선택 값들을 최적화하거나 개선할 수 있다. 예를 들어, 선택된 디지털 컴포넌트를 갖는 DSP(150)는 그 선택 값이 다음의 최상위보다 얼마나 더 높았는지 아는 것으로부터 이익을 얻을 수 있다. 유사하게, 선택되지 않은 디지털 컴포넌트를 갖는 DSP(150)는 디지털 컴포넌트가 선택되기 위해 선택 값이 얼마나 더 높아야 하는지를 아는 것으로부터 이익을 얻을 수 있다. DSP들(150) 및/또는 디지털 컴포넌트 제공자들(160)이 이 정보에 기초하여 선택 값을 제공할 때, DSP(150)는 그 목적을 달성할, 예를 들어 지나치게 높은 선택 값으로 인한 낭비를 회피할, 또는 낮은 선택 값으로 인한 디지털 컴포넌트의 표현 기회들을 손실할 가능성이 더 높다.
선택된 디지털 컴포넌트를 갖는 DSP(150) 또는 디지털 컴포넌트 제공자(160)의 경우, 최상위 다른 선택 값은 제 2의 최상위 선택 값이다. 모든 다른 것들의 경우, 최상위 다른 선택 값은 최상위 선택 값이다. 이는 제 1 값 선택 프로세스들 및 제 2 값 선택 프로세스들 모두에 동일하다.
도 6은 디지털 컴포넌트 선택 프로세스에서 디지털 컴포넌트들에 대한 최상위 다른 선택 값을 결정하기 위한 예시적인 프로세스(600)의 도면이다. 프로세스(600)의 동작들은 예를 들어, MPC 클러스터(130)의 컴퓨팅 시스템들(MPC1 및 MPC2)에 의해 구현될 수 있다. 프로세스(600)의 동작들은 또한 비일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체에 저장된 명령들로서 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(600)의 동작들을 수행하게 할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트 선택 프로세스를 수행하여 클라이언트 디바이스에 배포를 위한 디지털 컴포넌트를 선택한다(602). 컴퓨팅 시스템들(MPC1 및 MPC2)은 도 3 내지 도 5를 참조하여 위에서 설명된 바와 같이 디지털 컴포넌트를 선택하기 위해 보안적 MPC 프로세스를 사용하여 협력할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트 선택 프로세스를 위한 제 1 선택 값을 결정한다(604). 제 1 선택 값은 클라이언트 디바이스(110)로의 분배를 위해 선택된 디지털 컴포넌트의 선택 값일 수 있다. 예를 들어, 제 1 선택 값은 후보 디지털 컴포넌트들의 최상위 선택 값일 수 있다. 계층들이 사용되는 경우, 제 1 선택 값은 적어도 하나의 후보 디지털 컴포넌트를 포함하는 최상위 우선순위 계층 내에서 후보 디지털 컴포넌트의 최상위 선택 값일 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 보안적 MPC 프로세스를 사용하여 제 1 선택 값을 결정하기 위해 협력할 수 있다. 개념적으로, 컴퓨팅 시스템들(MPC1 및 MPC2)은 아래의 관계 10을 사용하여 제 1 선택 값을 결정할 수 있다:
제 1 선택 값
이 합계는 디지털 컴포넌트 선택 프로세스에 포함된 모든 디지털 컴포넌트들에 걸친 합계일 수 있다. 각 디지털 컴포넌트(i)에 대한 선택 값(selection_valuei)은 비암호화 텍스트일 수 있다. 전술한 바와 같이, 컴퓨팅 시스템들(MPC1 및 MPC2)은 후보 파라미터(is_dc_a_candidatei) 및 제 1 선택 값 파라미터(may_first_svi)의 비밀 공유들을 계산할 수 있다. 컴퓨팅 시스템(MPC1)은 각각의 디지털 컴포넌트(i)에 대해, 후보 파라미터(is_dc_a_candidatei)의 제 1 공유([is_dc_a_candidatei,1]) 및 제 1 선택 값 파라미터(may_first_svi)의 제 1 공유([maybe_first_svi,1])를 저장할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 각각의 디지털 컴포넌트(i)에 대해, 후보 파라미터(is_dc_a_candidatei)의 제 2 공유([is_dc_a_candidatei,2]) 및 제 1 선택 값 파라미터(may_first_svi)의 제 2 공유([maybe_first_svi,2])을 저장할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트 선택 프로세스를 위한 제 2 선택 값을 결정한다(606). 제 2 선택 값은 클라이언트 디바이스(110)로의 분배를 위해 선택된 디지털 컴포넌트의 선택 값 뒤에 있는 다음으로 최상위 선택 값일 수 있다. 예를 들어, 제 2 선택 값은 후보 디지털 컴포넌트들 중 제 2의 최상위 선택 값일 수 있다. 계층들이 사용되는 경우, 제 2 선택 값은 적어도 하나의 후보 디지털 컴포넌트를 포함하는 최상위 우선순위 계층에서 후보 디지털 컴포넌트의 제 2의 최상위 선택 값일 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 보안적 MPC 프로세스를 사용하여 제 2 선택 값을 결정하기 위해 협력할 수 있다. 개념적으로, 컴퓨팅 시스템들(MPC1 및 MPC2)은 아래의 관계 11을 사용하여 제 2 선택 값을 결정할 수 있다:
제 2 선택 값
이 합계는 디지털 컴포넌트 선택 프로세스에 포함된 모든 디지털 컴포넌트들에 걸친 합계일 수 있다. 위에서 설명된 바와 같이, 컴퓨팅 시스템들(MPC1 및 MPC2)은 후보 파라미터(is_dc_a_candidatei) 및 제 2 선택 값 파라미터(may_second_svi)의 비밀 공유들을 계산할 수 있다. 컴퓨팅 시스템(MPC1)은 각각의 디지털 컴포넌트(i)에 대해 제 2 선택 값 파라미터(mave_second_svi)의 제 1 공유([maybe_second_svi,1])를 저장할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 각각의 디지털 컴포넌트(i)에 대해 제 2 선택 값 파라미터(may_second_svi)의 제 2 공유([maybe_second_svi,2])를 저장할 수 있다.
관계 10 및 11에서 부울 값들(참 및 거짓)은 각각 1 및 0으로 처리될 수 있다. 비밀 공유들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 비밀 공유를 사용하여(예: 컴퓨팅 시스템들 간의 RPC를 사용하여) 두 관계 10 및 11의 AND 연산 결과를 계산하고, 그 결과를 Z2 공간에서 2개의 추가 비밀 공유들로 나타낸다(예를 들어, 추가 이후 mod 2). 따라서, 각각의 컴퓨팅 시스템은 제 1 선택 값 및 제 2 선택 값의 비밀 공유를 저장할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은 제 1 선택 값의 제 1 공유 및 제 2 선택 값의 제 1 공유를 저장할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 제 1 선택 값의 제 2 공유 및 제 2 선택 값의 제 2 공유를 저장할 수 있다. 제 1 선택 값의 두 공유들의 합(예: 추가 이후 mod 2)은 제 1 선택 값과 같고, 제 2 선택 값의 두 공유들의 합(예: 추가 이후 mod 2)은 제 2 선택 값과 같다.
관계 10과 11은 곱셈을 선택 값들(selection_valuei)의 각 선택 값 사이의 비트 AND 연산과, 각 컴퓨팅 시스템들(MPC1 및 MPC2)이 보유하는 후보 파라미터(또는 제 2 선택 값 파라미터)와 제 1 선택 값 사이의 AND 연산 결과의 1-비트 비밀 공유로 대체함으로써 단순화될 수 있다. 또한 관계 10과 11의 합산은 비트 XOR 연산으로 대체될 수 있다.
각각의 디지털 컴포넌트에 대해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 최상위 다른 선택 값을 계산한다(608). 컴퓨팅 시스템들(MPC1 및 MPC2)은 비밀 공유들에서 2단계 프로세스를 사용하여 디지털 컴포넌트에 대한 최상위 다른 선택 값을 계산할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트(i)에 대한 승자 파라미터(is_dc_the_winneri)를 계산할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 후보 파라미터(is_dc_a_candidatei)의 비밀 공유들 및 제 1 선택 값 파라미터 (may_first_svi)의 비밀 공유들을 사용하여 승자 파라미터(is_dc_the_winneri)를 계산할 수 있다, 예를 들어, is_dc_the_winneri = is_dc_a_candidatei AND Maybe_first_svi.
컴퓨팅 시스템들(MPC1 및 MPC2)은 관계 12를 사용하여 디지털 컴포넌트(i)에 대한 최상위 다른 선택 값(HOSVi)을 계산할 수 있다:
승자 파라미터, 제 1 선택 값, 및 제 2 선택 값이 컴퓨팅 시스템(MPC1 및 MPC2)에 의해 비밀 공유들로 유지되기 때문에, 컴퓨팅 시스템들(MPC1 및 MPC2)은 두 컴퓨팅 시스템들(MPC1 및 MPC2) 간의 RPC를 사용하는 협력에서 최상위 다른 선택 값을 결정한다.
이 프로세스의 마직막에서, 컴퓨팅 시스템(MPC1)은 디지털 컴포넌트(i)에 대한 최상위 다른 선택 값의 제 1 공유([HOSVi,1])을 저장하고, 컴퓨팅 시스템(MPC2)은 디지털 컴포넌트(i)에 대한 최상위 다른 선택 값의 제 2 공유([HOSVi,2])를 저장한다.
컴퓨팅 시스템(MPC1)은 각각의 디지털 컴포넌트에 대한 최상위 다른 선택 값의 제 1 공유를 예를 들어 디지털 컴포넌트에 대응하는 DSP(150) 또는 디지털 컴포넌트(160)에 전송한다(610). 유사하게, 컴퓨팅 시스템(MPC2)은 각각의 디지털 컴포넌트에 대한 최상위 다른 선택 값의 제 2 공유를, 예를 들어 디지털 컴포넌트에 대응하는 DSP(150) 또는 디지털 컴포넌트(160)에 전송한다(612). 일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 각 DSP(150) 및/또는 각각의 디지털 컴포넌트 제공자(160)에 대한 정보를 집계하는 집계 서비스에 공유들을 제공한다.
2개의 비밀 공유들의 수신자는 공유들을 결합하여 디지털 컴포넌트 선택 프로세스에서 디지털 컴포넌트에 대한 최상위 다른 선택 값을 도출할 수 있다. 예를 들어, 추가 비밀 공유 알고리즘이 사용되는 경우, 수신자는 두 개의 공유들을 추가하여 최상위 다른 선택 값을 도출할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 최상위 다른 선택 값을 갖는 추가 데이터를 전송할 수 있다. 예를 들어, 컴퓨팅 시스템들(MPC1 및 MPC2)은 최상위 다른 선택 값의 공유와 함께 질의 키와 같은 디지털 컴포넌트 선택 프로세스의 문맥 신호들을 전송할 수 있다. 이러한 방식으로, 동일하거나 유사한 문맥을 갖는 디지털 컴포넌트 선택 프로세스들에 대한 선택 값의 상황은 동일하거나 유사한 문맥을 갖는 디지털 컴포넌트 선택 프로세스들에 대한 최상위 다른 선택 값들을 사용하여 계산될 수 있다.
일부 구현들에서, 성능을 증가시키기 위해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트 선택 프로세스의 선택 결과가 클라이언트 디바이스(110)에 제공된 후 최상위 다른 선택 값들을 비동기적으로 계산할 수 있다. 이는 디지털 컴포넌트의 송신 및 디스플레이시 대기시간을 감소시킨다. 일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 컴퓨팅 시스템들(MPC1 및 MPC2)에 대한 부하가 기준 부하보다 낮을 때 최상위 다른 선택 값들을 계산할 수 있다.
선택 값들에 대한 하한을 포함하는 선택 프로세스들의 경우, 최상위 다른 선택 값을 정확하게 계산하기 위해 추가 단계들이 취해질 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 도 6을 참조하여 설명된 바와 같이 최상위 다른 선택 값들을 계산할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 이후 예를 들어 어떠한 선택 값도 적용 가능한 하한보다 작지 않도록, 하한들을 고려하기 위해 최상위 다른 선택 값들을 조정할 수 있다.
H가 계산된 최상위 다른 선택 값을 나타내고, F가 적용 가능한 하한을 나타낸다고 하면. 최종 최상위 다른 선택 값은 (H>F)×H + (1-H > F가 되며, 이는 F + (H > F)×(H - F)와 동일하다.
사용자 개인 정보를 보호하기 위해, H는 비밀 공유들의 형태이다. 각 컴퓨팅 시스템(MPC1 및 MPC2)은 각각 비밀 공유들([H1] 및 [H2]) 중 하나를 보유한다. 컴퓨팅 시스템(MPC1)은 관계 13을 사용하여 비밀 공유들에서 최종 최상위 다른 선택 값의 제 1 공유를 계산할 수 있다:
유사하게, 컴퓨팅 시스템(MPC2)은 관계 14를 사용하여 비밀 공유들에서 최종 최상위 다른 선택 값의 제 2 공유를 계산할 수 있다:
하한들을 포함하는 디지털 컴포넌트 프로세스들에 대한 최상위 다른 선택 값을 계산하는 이러한 프로세스는 비교 테스트들을 위해 3회 이상 라운드의 RPC들 및 곱셈을 위한 1회 라운드를 사용할 수 있다.
계층들 및/또는 부스트들이 디지털 컴포넌트 선택 프로세스에서 사용될 때, 제 1 선택 값, 예를 들어, 선택된 디지털 컴포넌트에 대한 선택 값은, 후보 디지털 컴포넌트들 중 최상위 선택 값보다 낮을 수 있다. 예를 들어, 최상위 우선순위 계층의 후보 디지털 컴포넌트가 낮은 우선순위 계층의 후보 디지털 컴포넌트보다 낮은 선택 값을 가지는 경우, 더 높은 우선순위 계층의 후보 디지털 컴포넌트는 더 낮은 선택값을 가지더라도 선택될 수 있다. 유사하게, 디지털 컴포넌트는, 디지털 컴포넌트 선택 값에 사용된 선택 값을 부스트되지 않은(또는 더 낮게 부스트된) 디지털 컴포넌트보다 높게 만드는 부스트를 수신하여, 발행인은 부스트되지 않은 디지털 컴포넌트가 선택되었다면 더 적게 수신하였을 것이다. MPC 클러스터(130)는 발행인들이 계층들 및/또는 부스트들과 관련된 기회 비용을 분석할 수 있도록 2개의 값들 사이의 차이를 결정할 수 있다.
도 7은 실제 디지털 컴포넌트 선택 프로세스와 반사실적 디지털 컴포넌트 선택 프로세스의 제 1 선택 값 사이의 차이를 결정하기 위한 예시적인 프로세스(700)의 흐름도이다. 프로세스(700)의 동작들은 예를 들어, MPC 클러스터(130)의 컴퓨팅 시스템들(MPC1 및 MPC2)에 의해 구현될 수 있다. 프로세스(700)의 동작들은 또한 비일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체에 저장된 명령들로서 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(700)의 동작들을 수행하게 할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 실제 디지털 컴포넌트 선택 프로세스를 수행한다(702). 컴퓨팅 시스템들(MP1 및 MPC2)은 디지털 컴포넌트 요청에 응답하여 클라이언트 디바이스(110)에 제공할 디지털 컴포넌트를 선택하기 위해 실제 디지털 컴포넌트 선택 프로세스를 수행할 수 있다. 실제 디지털 컴포넌트 선택 프로세스는 디지털 컴포넌트들에 대한 계층 및/또는 디지털 컴포넌트 선택 프로세스에 포함된 하나 이상의 디지털 컴포넌트들에 대한 부스트들을 포함할 수 있다. 예를 들어, 실제 디지털 컴포넌트 프로세스는 도 3 내지 도 5의 프로세스들과 동일하거나 유사해야 한다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 반사실적 디지털 컴포넌트 선택 프로세스를 수행한다(704). 반사실적 디지털 컴포넌트 프로세스의 단계들은 실제 디지털 컴포넌트 선택 프로세스의 단계들과 유사할 수 있다. 그러나 반사실적 디지털 컴포넌트 선택 프로세스에서, 실제 디지털 컴포넌트 선택 프로세스의 계층들 및/또는 부스트들은 제거된다. 실제 디지털 컴포넌트 선택 프로세스가 계층들을 포함하는 경우(예를 들어, 도 4의 프로세스(400)에서와 같이), 반사실적 디지털 컴포넌트 선택 프로세스는 (예를 들어, 도 5의 프로세스(500)에서와 같이) 하나의 그룹 안에 모든 디지털 컴포넌트들을 갖는다. 실제 디지털 컴포넌트 선택 프로세스가 하나 이상의 디지털 컴포넌트들에 대한 선택 값을 부스팅하는 단계를 포함하였다면, 이러한 부스트들은 반사실적 디지털 컴포넌트 선택 프로세스에서 제거된다. 즉, 반사실적 디지털 컴포넌트 선택 프로세스에서 선택 값들은 부스트된 선택 값이 아닌 수신된 선택 값들일 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 실제 디지털 컴포넌트 선택 프로세스에 대한 소거 값을 결정한다(706). 이러한 소거 값은 선택한 디지털 컴포넌트에 대한 선택 값을 기반으로 할 수 있다. 예를 들어, 소거 값은 선택된 디지털 컴포넌트를 디스플레이하기 위해 발행인에게 실제로 제공될 선택 값의 양일 수 있다. 디지털 컴포넌트에 대한 선택 값이 부스트된 경우, 부스트 양은 동작(414)에서 각 후보 디지털 컴포넌트에 대한 누적 값을 결정할 때 선택 값들의 순서에만 영향을 미칠 것이다.
제 2 값 선택 프로세스의 경우, 소거 값은 선택된 디지털 컴포넌트에 대한 선택 값 이후 다음의 최상위 선택 값에 기초할 것이다. 계층들이 제 2 선택 값 프로세스와 함께 사용되는 경우, 다음의 최상위 값은 선택된 디지털 컴포넌트와 동일한 계층에서 다음의 최상위 값이 될 것이다. 동일한 계층에 이러한 후보 디지털 컴포넌트가 없는 경우, 다음의 최상위 값은 디지털 컴포넌트 선택 프로세스에 대한 최소값이 될 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 반사실적 디지털 컴포넌트 선택 프로세스에 대한 소거 값을 결정한다(708). 이러한 소거 값은 반사실적 디지털 컴포넌트 선택 프로세스에서 선택된 디지털 컴포넌트를 기반으로 할 수 있다. 제 2 값 선택 프로세스들의 경우, 소거 값은 실제 디지털 컴포넌트 선택 프로세스에 대한 소거 값과 유사하게 선택된 디지털 컴포넌트에 대한 선택 값 이후에 다음의 최상위 선택 값을 기반으로 할 것이다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 2개의 소거 값들 사이의 차이를 결정한다(710). 컴퓨팅 시스템들(MPC1 및 MPC)은 실제 디지털 컴포넌트 선택 값에 대한 소거 값에서 반사실적 디지털 컴포넌트 선택 프로세스에 대한 소거 값을 빼서 차이를 결정할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 차이를 수신자에게 제공한다(712). 예를 들어, 컴퓨팅 시스템들 중 하나는 선택 후 디지털 컴포넌트가 디스플레이되었던 리소스 또는 애플리케이션 콘텐츠의 발행인에게 차이를 제공할 수 있다. 다른 예에서, 컴퓨팅 시스템들 중 하나는 발행인에 대한 차이들을 집계하는 집계 서버에 차이를 제공할 수 있다. 어느 예에서든, 컴퓨팅 시스템은 차이를 나타내는 데이터와 함께 실제 디지털 컴포넌트 선택 프로세스에 대한 문맥 신호, 예를 들어 질의 키와, (집합 서버로 전송되는 경우) 발행인을 식별하는 데이터를 제공할 수 있다.
집계 서버는 각 발행인에 대해 보고된 차이를 집계하고, 예를 들어, 계층들 및/또는 부스트들의 사용의 기회 비용을 나타내는 대화형 사용자 인터페이스의 형태로 데이터를 제공할 수 있다. 일부 구현들에서, 컴퓨팅 시스템(MPC1 또는 MPC2)은 또한 각각의 실제 디지털 컴포넌트 선택 프로세스에 대한 집계 서버에 선택 결과를 제공할 수 있다. 이러한 방식으로, 집계 서버는 각 DSP(150) 및/또는 디지털 컴포넌트 제공자(160)에 대한 기회 비용을 집계할 수 있다.
실제 디지털 컴포넌트 선택 프로세스의 선택된 디지털 컴포넌트를 클라이언트 디바이스(110)에 제공할 때 대기시간을 감소시키기 위해, 프로세스(700)의 단계들(704-712)의 일부 또는 전부는 예를 들어 선택 결과가 클라이언트 디바이스(110)에 제공된 후에 비동기적으로 수행될 수 있다.
도 8은 비밀 공유들을 사용하여 전송된 블룸 필터를 사용하여 사용자가 사용자 그룹의 멤버인지 여부를 결정하기 위한 예시적인 프로세스(800)의 흐름도이다. 프로세스(800)의 동작은 예를 들어 도 1의 MPC 클러스터(130)의 클라이언트 디바이스(110) 및 컴퓨팅 시스템들(MPC1 및 MPC2) 상에서 실행되는 애플리케이션(112)에 의해 구현될 수 있다. 프로세스(800)의 동작들은 또한 비일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(800)의 동작들을 수행하게 할 수 있다.
블룸 필터를 사용하여 사용자의 그룹 멤버쉽을 나타내는 데이터를 전송하는 것은, 사용자에 대한 사용자 그룹들을 식별하는 데이터가 비암호화 텍스트로 전송되지 않기 때문에, 전송되는 데이터의 양을 줄이고, 사용자 개인 정보를 보호할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)이 비암호화 텍스트로 사용자의 그룹 멤버쉽에 액세스할 수 있는 것을 방지하기 위해, 애플리케이션(112)은 각 공유들 예컨대 블룸 필터의 비밀 공유들을, 각 컴퓨팅 시스템(MPC1 및 MPC2)에 대한 전체 블룸 필터가 아니라 각 컴퓨팅 시스템(112)에 전송할 수 있다. 그러나 이것은 각 컴퓨팅 시스템(MPC1 및 MPC2)에 하나씩 두 개의 블룸 필터들을 송신하는 것과 동등하게 데이터를 전송하는 것을 필요로 할 수 있다. 이를 방지하고 클라이언트 디바이스(110)로부터 네트워크(105)를 가로질러 컴퓨팅 시스템들(MPC1 및 MPC2)에 전송되는 데이터의 양을 추가로 감소시키기 위해, 애플리케이션(112)은 임시값을 사용하여 생성된 제 1 어레이 및 애플리케이션(112)에 의해 생성된 원래 블룸 필터를 컴퓨팅 시스템들 중 하나, 예를 들어 컴퓨팅 시스템(MPC1)에 전송하고, 임시값만을 다른 컴퓨팅 시스템(MPC2)에 전송할 수 있다. 이러한 방식으로 클라이언트 디바이스(110)로부터 하나의 어레이만이 전송된다. 임시값이 예를 들어 16바이트와 같이 작을 수 있기 때문에, 이것은 클라이언트 디바이스(110)로부터 전송되는 데이터의 양을 크게 감소시켜, 클라이언트 디바이스(110)의 대역폭 소비, 대기 시간 및 배터리 소비를 감소시킨다.
프로세스(800)가 사용자 그룹들에서 사용자의 멤버쉽을 나타내는 블룸 필터의 관점에서 설명되지만, 차단된 디지털 컴포넌트들을 나타내는 블룸 필터를 생성하고, 디지털 컴포넌트가 차단되었는지 여부를 질의하기 위하여 유사한 프로세스가 사용될 수 있다. 이 예에서, 블룸 필터는 사용자 그룹들에 대한 식별자들이 아니라 차단된 디지털 컴포넌트들의 식별자들을 나타낼 것이다.
블룸 필터의 구성은 컴퓨팅 시스템들(MPC1 및 MPC2)에 의한 송신 및/또는 처리에 적응될 수 있다. 블룸 필터의 파라미터들은, 블룸 필터에 의해 표현될 수 있는 사용자 그룹들의 수, 블룸 필터의 원하는 거짓양성 비율, 블룸 필터를 생성하고 요소가 블룸 필터에 포함되는지를 테스트하기 위해 사용된 해시 함수들의 수, 및 블룸 필터의 크기를 포함한다.
해시 함수들의 수를 줄임으로써, 사용자가 사용자 그룹의 멤버인지 여부를 질의할 때, 컴퓨팅 시스템들(MPC1 및 MPC2)에 대한 계산 부담이 감소된다. 그러나 블룸 필터의 크기가 일정하게 유지되면, 이는 거짓양성 비율을 증가시킬 수 있다. 목표 거짓양성 비율이 존재하는 경우, 해시 함수들을 줄이는 것은 큰 블룸 필터 크기를 초래하고, 이는 소비되는 대역폭의 양을 증가시킬 수 있다. 따라서, 블룸 필터의 파라미터들은 대역폭/배터리 소비와 컴퓨팅 시스템들(MPC1 및 MPC2)에 대한 계산 부담 간의 타협점을 사용하여 선택될 수 있다.
애플리케이션(112)은 블룸 필터를 생성한다(802). 애플리케이션(112)은 애플리케이션(112)의 사용자를 멤버로 포함하는 사용자 그룹들에 대한 사용자 그룹 식별자들을 사용하여 블룸 필터를 생성할 수 있다. 그렇게 하기 위해, 애플리케이션(112)은 블룸 필터에 각 해시 함수를 사용하여 사용자 그룹 식별자를 블룸 필터 내의 위치 중 하나로 매핑한다. 애플리케이션(112)은 사용자에 대한 각 사용자 그룹 식별자에 대해 이 동작을 수행할 수 있다. 차단된 디지털 컴포넌트들에 대한 블룸 필터를 구성할 때, 애플리케이션(112)은 차단된 디지털 컴포넌트들의 블룸 필터에 대한 각 해시 함수를 각각의 차단된 디지털 컴포넌트에 대한 식별자에 적용할 수 있다. 블룸 필터는 크기가 N인 비트 배열(A)이다. 블룸 필터의 각 비트는 0 또는 1, 즉 A[i]∈{0,1}이다.
애플리케이션(112)과 컴퓨팅 시스템들(MPC1 및 MPC2)은 사전에 PRF(유사랜덤 함수)에 대해 합의할 수 있다. PRF는 2개의 파라미터들을 취하여, {0, 1} 내의 PRF 번호를 배타적으로 생성할 수 있다.
애플리케이션(112)은 임시값을 선택한다(804). 각각의 디지털 컴포넌트 요청에 대해, 애플리케이션(112)은 컴퓨팅 시스템들(MPC1 또는 MPC2) 중 하나만과 공유될 임시값 예를 들어 랜덤으로 또는 의사 랜덤으로 선택할 수 있다. 이 예에서 임시값은 컴퓨팅 시스템(MPC2)와 공유된다.
애플리케이션(112)은 블룸 필터와 임시값을 사용하여 제 1 어레이(A1)를 계산한다(806). 애플리케이션(112)은 합의된 PRF를 사용하여 제 1 어레이(A1)를 계산할 수 있다. 예를 들어, 애플리케이션(112)은 관계 15를 사용하여 제 1 어레이(A1)를 계산할 수 있다:
관계 15에서 XOR 연산은 비트 XOR 연산이다.
애플리케이션(112)은 제 1 어레이를 컴퓨팅 시스템(MPC1)에 전송한다(808). 애플리케이션(112)은 또한 임시값을 컴퓨팅 시스템(MPC2)로 전송한다(810).
컴퓨팅 시스템(MPC2)은 임시값을 사용하여 제 2 어레이(A2)를 계산한다(812). 컴퓨팅 시스템(MPC2)은 임시값과 PRF를 사용하여 제 2 어레이(A2)를 계산할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC2)은 관계 16을 사용하여 제 2 어레이(A2)를 계산할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 사용자가 하나 이상의 사용자 그룹들의 멤버인지 여부를 결정하기 위해 제 1 어레이(A1) 및 제 2 어레이(A2)를 사용한다(814). 일반적으로, 블룸 필터는 블룸 필터의 각 해시 함수를 사용자 그룹 식별자에 적용하여 해당 해시 함수 및 사용자 그룹 식별자에 해당하는 블룸 필터의 요소를 결정함으로써 질의될 수 있다. 사용자 식별자에 대해, 각 해시 함수의 요소가 1의 값을 가지면, 이는 사용자가 그룹의 멤버임을 나타낸다. 물론 블룸 필터의 특성으로 인해 일부 거짓양성들이 존재할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2) 중 어느 것도 완전한 블룸 필터에 액세스할 수 없으므로(대신 각각 블룸 필터의 비밀 공유만을 가짐), 컴퓨팅 시스템들(MPC1 및 MPC2)은 암호화 프로토콜을 사용하여, 사용자가 사용자 그룹 식별자의 멤버인지 여부를 사용자 그룹 식별자를 통해 결정할 수 있다. 사용될 수 있는 몇 가지 예시적인 암호화 프로토콜들은 왜곡된 회로 및 GMW(Goldreich-Micali-Wigderson) 프로토콜을 포함한다.
어느 알고리즘에서나, 알고리즘에 대한 입력은 (개념적으로) 블룸 필터의 비밀 공유들, 즉, 제 1 어레이(A1) 및 제 2 어레이(A2)이다. 출력들은 각 디지털 컴포넌트에 대해 하나씩, 즉 사용자가 해당 디지털 컴포넌트와 관련된 사용자 그룹의 멤버인지 여부와 같은 한 세트의 부울 메시지들에 대한 비밀 공유들이다.
GMW 프로토콜에서, MPC 컴퓨팅 시스템들 중 하나, 예를 들어 컴퓨팅 시스템(MPC1)은 컴퓨팅 시스템(MPC2)이 소유한 비밀 공유들에 대해 가능한 비트 패턴당 하나의 행으로 진리표를 생성한다. 컴퓨팅 시스템(MPC1)은 예를 들어 랜덤으로 결과에 대한 자신의 비밀 공유를 선택하고, 결과에 대한 자체 비밀 공유들에 기초하여 각 행에 대한 컴퓨팅 시스템(MPC2)의 비밀 공유를 계산하고, 가능하게는 행에 대응하여 컴퓨팅 시스템(MPC2)의 비밀 공유들을 계산한다. 진리표가 구성된 후, 컴퓨팅 시스템(MPC2)은 불확정 전송 프로토콜을 사용하여 자체 비밀 공유들을 기반으로 테이블에서 오로지 하나뿐인 행을 가져온다. 이 프로토콜에서, 한 컴퓨팅 시스템은 정보의 다수의 조각들 중 하나를 다른 컴퓨팅 시스템으로 전송하지만, 어떤 정보(존재한다면)가 전송되었는지 알지 못한다. 이러한 불확정 전송 프로토콜은 프로세스가 어떤 당사자에게도 임의의 정보를 누출하지 않는 것을 보장한다.
주어진 사용자 그룹 식별자에 대해 블룸 필터를 질의한 결과는 각 해시 함수에 대한 사용자 그룹 멤버쉽 조건 파라미터의 비밀 공유들이다. 사용자 그룹 멤버쉽 조건 파라미터의 비밀 공유들은 사용자 그룹에 대응하는 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스의 후보인지 여부를 결정하기 위해 디지털 컴포넌트 선택 프로세스에서 사용될 수 있다. 예를 들어, 10개의 해시 함수들이 사용되는 경우, 컴퓨팅 시스템(MPC1)은 각 사용자 그룹 식별자에 대한 사용자 그룹 멤버쉽 조건 파라미터의 10개의 제 1 비밀 공유들을 가질 것이다. 유사하게, 컴퓨팅 시스템(MPC2)은 각 사용자 그룹 식별자에 대한 사용자 그룹 멤버쉽 조건 파라미터의 10개의 제 2 비밀 공유들을 가질 것이다.
블룸 필터가 차단된 디지털 컴포넌트들에 대한 식별자를 나타내는 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 유사한 방식으로 제 2 어레이를 재구성하고, 블룸 필터에 질의할 수 있다. 주어진 디지털 컴포넌트에 대해 이러한 블룸 필터를 질의한 결과는 각 해시 함수에 대한 차단된 조건 파라미터이다. 차단된 조건 파라미터의 비밀 공유들은 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스의 후보인지 여부를 결정하기 위해 디지털 컴포넌트 선택 프로세스에서 사용될 수 있다.
도 9는 예시적인 MPC 컴퓨팅 시스템(900)의 블록도이다. 이 문서에 설명된 임의의 MPC 컴퓨팅 시스템은 MPC 컴퓨팅 시스템(900)을 사용하여 구현될 수 있다. 대안적으로, MPC 컴퓨팅 시스템은 하나 이상의 서버로서 구현될 수 있다. 그러나, MPC 컴퓨팅 시스템(900)의 아키텍처 및 구성은 일반 서버 배열을 사용하는 것에 비해 많은 성능 개선을 제공한다.
MPC 컴퓨팅 시스템(900)은 로드 밸런서(910), 서빙 풀(920), 및 로그 프로세서 풀(940)을 포함한다. 컴퓨팅 시스템(900)은 또한 로그(930) 및 스냅샷(950)을 생성, 업데이트 및 유지 관리한다.
일부 구현에서, MPC 컴퓨팅 시스템(900)은 디지털 컴포넌트를 선택하고 클라이언트 디바이스(110)에 디지털 컴포넌트를 제공하는데 있어 대기 시간을 줄이기 위해 다양한 지리적 영역에 배치된다. 예를 들어, 2개 이상의 MPC 컴퓨팅 시스템(900)을 갖는 MPC 클러스터는 지역 세트의 각 지역에 배치된다. 각 MPC 클러스터가 2개의 MPC 컴퓨팅 시스템, 예를 들어, MPC1 및 MPC2를 포함하는 경우, 각 영역은 서로 다른 당사자에 의해 운영되는 한 쌍의 MPC 컴퓨팅 시스템(900)을 포함할 수 있다. 모든 지역에 걸친 MPC1의 각 인스턴스는 제1 당사자에 의해 운영될 수 있고 모든 지역에 걸친 MPC2의 각 인스턴스는 제1 당사자와 다른 제2 당사자에 의해 운영될 수 있다.
어느 한 지역의 MPC 클러스터는 그 지역의 클라이언트 디바이스(110)에 의해 생성된 디지털 컴포넌트 요청에 대한 디지털 컴포넌트 선택 프로세스를 수행할 수 있다. 예를 들어, 특정 지역의 클라이언트 디바이스(110)에 전송되는 태그와 같은 디지털 컴포넌트 슬롯에 대한 명령은 특정 지역의 MPC 컴퓨팅 시스템(900)의 네트워크 위치에 대한 참조를 포함할 수 있다. 이러한 방식으로, 애플리케이션(112)은 디지털 컴포넌트 요청 및 통지를 적절한 지역의 MPC 컴퓨팅 시스템(900)에 전송한다. 다른 예에서, DNS(Domain Name Service) 또는 로드 밸런서(910)는 클라이언트 디바이스(110)에 물리적 거리가 가장 가까운 MPC 컴퓨팅 시스템(900)을 선택한다.
임의의 지역에 있는 MPC1은 동일한 지역의 MPC2와 협력하여 디지털 컴포넌트를 선택하고 수신된 요청에 기초하여 로그를 업데이트할 수 있다. 이것은 MPC 컴퓨팅 시스템(900)들 사이의 거리가 감소됨에 따라 MPC 컴퓨팅 시스템(900)들 사이의 왕복을 필요로 하는 협업 연산을 수행할 때 대기 시간 및 소비되는 대역폭을 감소시킨다. 이것은 또한 클라이언트 디바이스(110)와 MPC 컴퓨팅 시스템(900) 사이의 데이터 전송, 예를 들어 디지털 컴포넌트 요청, 디지털 컴포넌트 응답 및 임프레션 통지에서 대기 시간 및 소비되는 대역폭을 감소시킨다.
일부 구현에서, 로그 프로세서 풀(940)은 스냅샷을 생성하여 다른 지역들의 MPC 컴퓨팅 시스템(900)에 게시하기 위한 지역들의 올바른 서브세트에서만 활성화된다. 예를 들어, 제1 당사자에 의해 운영되는 각 지역에 제1 MPC 컴퓨팅 시스템(MPC1)이 있을 수 있다. 이들 제1 MPC 컴퓨팅 시스템의 서브세트는 모든 제1 MPC 컴퓨팅 시스템에 대한 스냅샷을 생성하여 다른 제1 MPC 컴퓨팅 시스템에 스냅샷을 게시할 수 있다. 유사하게, 제2 당사자에 의해 운영되는 각 지역에 제2 MPC 컴퓨팅 시스템(MPC2)이 있을 수 있다. 이러한 제2 MPC 컴퓨팅 시스템의 서브세트는 모든 제2 MPC 컴퓨팅 시스템에 대한 스냅샷을 생성하여 다른 제2 MPC 컴퓨팅 시스템에 스냅샷을 게시할 수 있다. 중요한 것으로, 제1 MPC 컴퓨팅 시스템은 사용자 개인 정보를 보호하기 위해 제2 MPC 컴퓨팅 시스템과 로그 또는 스냅샷을 공유하지 않으며 그 반대의 경우도 마찬가지이다. 그러나, 제1 컴퓨팅 시스템과 제2 컴퓨팅 시스템은 보안 MPC 프로세스를 수행하여 로그의 데이터를 처리하며, 이는 데이터 중 적어도 일부는 민감하고/하거나 기밀이며 일반 텍스트에서 어느 컴퓨팅 시스템에 의해서도 액세스될 수 없어야 하기 때문이다. 대기 시간 또는 대역폭 소비를 증가시키지 않고 효율적으로 그렇게 하기 위해, 제1 MPC 컴퓨팅 시스템의 서브세트와 제2 MPC 컴퓨팅 시스템의 서브세트가 동일한 지역에 있을 수 있다.
로드 밸런서(910)는 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)으로부터 요청을 수신한다. 일부 예에서 HTTP 요청의 형태일 수 있는 이러한 요청은 디지털 컴포넌트 요청 및 통지를 포함할 수 있다. 통지는 디지털 컴포넌트가 클라이언트 디바이스(110)에 디스플레이되었고 선택적으로 사용자가 디지털 컴포넌트와 인터렉션했는지 여부를 MPC 컴퓨팅 시스템(900)에 통지하는 임프레션 통지를 포함할 수 있다. 임프레션 통지는 디스플레이된 디지털 컴포넌트가 표시된 디지털 컴포넌트 선택 프로세스를 식별하는 선택 프로세스 식별자와 같은 추가 정보도 또한 포함할 수 있다. k-익명성 조건의 경우, 임프레션 통지는 또한 실제 디지털 컴포넌트 프로세스의 승자와 반사실적 선택 프로세스의 승자를 식별하는 데이터를 포함할 수 있으므로 MPC 컴퓨팅 시스템(900)이 각 디지털 컴포넌트에 대한 임프레션 수를 업데이트할 수 있다.
로드 밸런서(910)는 서빙 풀(920)의 프로세서들 간의 로드 균형을 맞추는 방식으로 요청을 서빙 풀(920)의 프로세서에 할당할 수 있다. 예를 들어, 로드 밸런서(910)는 각 프로세서의 부하를 파악하고 현재 부하에 기초하여 요청을 할당한다.
서빙 풀(920)은 다중 프로세서를 포함하며, 이들 각각은 예를 들어, 하나 이상의 마이크로프로세서, 하나 이상의 서버급 컴퓨터, 및/또는 하나 이상의 주문형 집적 회로(ASIC)로서 구현될 수 있다. 서빙 풀의 프로세서는 일반적으로 대기 시간에 민감한 수신 요청을 처리한다. 예를 들어, 서빙 풀(920)의 프로세서는 다른 MPC 컴퓨팅 시스템(900)의 프로세서와 협력하여 디지털 컴포넌트 선택 프로세스를 수행할 수 있다. 또한, 서빙 풀(920)의 프로세서는 완료된 디지털 컴포넌트 프로세스 및/또는 수신된 통지에 기초하여 로그(930)를 업데이트할 수 있다.
서빙 풀(920)의 프로세서들은 저장된 디지털 컴포넌트에 대한 현재 데이터베이스를 유지할 수 있다. 이 데이터베이스는 디지털 컴포넌트의 파라미터 및/또는 조건에 대한 현재 값을 포함할 수 있다. 예를 들어, 데이터베이스는 각각의 저장된 디지털 컴포넌트에 대해, 선택 값(들) 또는 벡터들, 조건 중 적어도 일부 조건들 - 예컨대, k-익명성 및 속도, 잔여 예산, (예컨대, k-익명성 조건에 대한 )임프레션 수 및/또는 이 문서에 설명된 디지털 컴포넌트 선택 프로세스에 사용되는 디지털 컴포넌트에 대한 기타 데이터와 같은 오프라인으로 연산될 수 있는 조건들 - 에 대한 파라미터의 비밀 공유들을 포함할 수 있다.
일부 구현에서, 서빙 풀의 데이터베이스는 스냅샷이다. 예를 들어, 각 스냅샷은 스냅샷의 버전을 식별하는 버전 식별자가 있을 수 있다. 두 MPC 시스템은 동일한 버전의 스냅샷을 사용하여 동작해야 한다.
로그(930)는 MPC 클러스터에 의해 저장된 디지털 컴포넌트들과 관련된 다양한 정보를 저장하는 여러 유형의 로그를 포함할 수 있다. 예를 들어, 로그(930)는 디지털 컴포넌트 및 그들의 대응하는 데이터, 예를 들어 선택 값, 선택 값 벡터, 룩업 키, 대응하는 사용자 그룹 식별자(들), 조건, 및/또는 다른 적절한 정보를 저장하기 위한 로그를 포함할 수 있다.
로그(930)는 완료된 디지털 컴포넌트 요청에 대한 정보의 로그를 포함할 수 있다. 이러한 로그는 각 디지털 컴포넌트 선택 프로세스에 대한 선택 프로세스 식별자, 디지털 컴포넌트 선택 프로세스에 대한 지우기 값 및 디지털 컴포넌트 선택 프로세스에 포함된 각 디지털 컴포넌트에 대한 파라미터를 포함할 수 있다. 이러한 파라미터는 예를 들어 후보 파라미터의 비밀 공유, 우승 파라미터, 선택 값, 및/또는 디지털 컴포넌트에 대한 누적 값을 포함할 수 있다.
로그(930)는 디지털 컴포넌트에 대한 조건이 충족되는지 여부를 결정하는 데 사용되는 파라미터에 대한 로그를 포함할 수 있다. 예를 들어, 이러한 로그는 각 디지털 컴포넌트에 대해 임프레션 수, 선택 수, 전환 수, 총 예산, 남은 예산 및/또는 디지털 컴포넌트가 제시될 수 있었던 횟수(예컨대, k-익명성에 대한 반사실적 선택 프로세스에서 선택된 횟수)를 포함할 수 있다. 사용자 개인 정보 및 민감한 사용자 데이터의 기밀성을 보호하기 위해, 일부 구현에서 로그(930)는 위 정보의 비밀 공유를 포함한다.
로그 프로세서 풀(940)은 로그(930)를 처리하고 로그에 기초하여 스냅샷(950)을 생성하는 프로세서(예를 들어, 마이크로프로세서, 서버, 또는 ASIC)를 포함할 수 있다. 각 스냅샷은 서빙 풀(920)의 프로세서에 의해 유지되는 데이터베이스에 대한 업데이트를 포함한다. 예를 들어, 디지털 컴포넌트가 선택되어 클라이언트 디바이스(110)에서 표시되면, 스냅샷은 디지털 컴포넌트에 대한 업데이트된 잔여 예산 및 디지털 컴포넌트에 대한 업데이트된 임프레션의 수를 포함할 수 있다. 로그 프로세서 풀(940)은 로그(930)의 업데이트된 데이터에 기초하여 스냅샷을 생성하고 서빙 풀(920)의 프로세서에 스냅샷을 게시할 수 있다. 로그 프로세서 풀(900)의 프로세서는 또한 예를 들어 로그 프로세서 풀(940)이 일부 MPC 컴퓨팅 시스템(900)에서만 활성화된 경우. 스냅샷을 동일한 당사자에 의해 운영되는 다른 MPC 컴퓨팅에 게시할 수 있다.
요청에 응답할 때 대기 시간을 줄이기 위해, 서빙 풀(920)의 프로세서는 요청을 수신한 직후에 이러한 요청들을 처리할 수 있다. 시간에 민감하지 않은 프로세스는 로그 프로세서 풀(940)의 프로세서에 의해 처리될 수 있다. 예를 들어, 서빙 풀(920)은 디지털 컴포넌트를 선택하여 클라이언트 디바이스(110)에 제공하는 임계 경로에서 임의의 프로세스를 수행할 수 있다. 프로세서 풀(940)은 임계 경로에 있지 않은 모든 프로세스를 수행할 수 있다. 그러나 데이터베이스 업데이트는 최신 정보를 사용하여 디지털 컴포넌트가 선택되도록 신속하게 이루어져야 한다. 따라서, 도 9에 도시된 아키텍처에 의해 제공되는 바와 같이 상이한 세트의 프로세서의 사용은 디지털 컴포넌트 선택 프로세스와 데이터베이스 업데이트 둘 다가 매우 빠르게 수행될 수 있도록 한다.
도 10은 위에서 설명된 동작들을 수행하는 데 사용될 수 있는 예시적인 컴퓨터 시스템(1000)의 블록도이다. 시스템(1000)은 프로세서(1010), 메모리(1020), 저장 디바이스(1030), 및 입출력 디바이스(1040)를 포함한다. 각각의 컴포넌트(1010, 1020, 1030, 1040)는 예를 들어, 시스템 버스(1050)를 사용하여 상호연결될 수 있다. 프로세서(1010)는 시스템(1000)내에서 실행하기 위한 명령어들을 처리할 수 있다. 일부 구현에서, 프로세서(1010)는 단일 스레드 프로세서이다. 다른 구현에서, 프로세서(1010)는 다중 스레드 프로세서이다. 프로세서(1010)는 메모리(1020) 또는 저장 디바이스(1030)에 저장된 명령어들을 처리할 수 있다.
메모리(1020)는 시스템(1000) 내에 정보를 저장한다. 일 구현에서, 메모리(1020)는 컴퓨터 판독가능 매체이다. 일부 구현에서, 메모리(1020)는 휘발성 메모리 유닛이다. 다른 구현에서, 메모리(1020)는 비휘발성 메모리 유닛이다.
저장 디바이스(1030)는 시스템(1000)을 위한 대용량 저장 디바이스를 제공할 수 있다. 일부 구현에서, 저장 디바이스(1030)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(1030)는 예를 들어, 하드 디스크 디바이스, 광 디스크 디바이스, 다수의 컴퓨팅 디바이스들(예를 들어, 클라우드 저장 디바이스)에 의해 네트워크를 통해 공유되는 저장 디바이스, 또는 일부 다른 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(1040)는 시스템(1000)에 대한 입력/출력 동작을 제공한다. 일부 구현에서, 입력/출력 디바이스(1040)는 네트워크 인터페이스 디바이스(예를 들어, 이더넷 카드), 직렬 통신 디바이스(예를 들어, RS-232 포트) 및/또는 무선 인터페이스 디바이스(예를 들어, 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 외부 디바이스(1060), 예를 들어, 키보드, 프린터 및 디스플레이 디바이스로 보내도록 구성된 드라이버 디바이스를 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스, 모바일 통신 디바이스, 셋톱 박스 텔레비전 클라이언트 디바이스 등과 같은 다른 구현도 사용될 수 있다.
예시적인 프로세싱 시스템이 도 10에서 설명되었지만, 본 명세서에 기술된 주제 및 기능적 동작의 구현은 본 명세서에 개시된 구조들 및 이들의 구조적 균등물을 포함하는 다른 유형의 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 또는 이들 중 하나 이상의 조합에서 구현될 수 있다.
본 발명의 실시예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다. 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 디바이스에 전송하기 위한 정보를 인코딩하기 위해생성된 인공적으로 생성된 전파된 신호 즉, 머신-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 컴퓨터 저장 매체 또는 비일시적 컴퓨터 저장 매체는 컴퓨터 판독가능 매체로 지칭될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트 또는 매체(예를 들면, 다수의 CD, 디스크, 플래시 드라이버 또는 다른 저장 디바이스)이거나 또는 그에 포함될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 또는 다른 소스들로부터 수신된 데이터에서 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "데이터 프로세싱 장치"는 예시로서 프로그래머블 프로세서, 컴퓨터, 시스템 온 칩 또는 앞서 언급된 것 중 다수의 것 또는 조합들을 포함하는 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스 및 머신를 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 실행 환경, 가상 머신 또는 그들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일된 또는 인터프리트된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 객체로서 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하는 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들이나 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들을 가지는 파일의 부분에, 문제되는 프로그램 전용 단일의 파일에 또는 다수의 조정된 파일들, 예를 들어, 하나 이상의 모듈들, 서브프로그램 또는 코드의 일부를 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되어 있거나 다수의 사이트들에 걸쳐서 분산되어 있고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예시로서, 범용 및 전용 마이크로프로세서들과 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 몇 가지만 나열하면, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 기술된 본 발명의 실시예는 사용자에게 정보를 디스플레이하기 위해 예를 들어, CRT(cathode ray tube), OLED(organic light-emitting diode) 또는 LCD(liquidcrystal display) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼을 갖는 전자 디바이스에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 인터렉션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써 예를 들어, 웹브라우저로부터 수신된 요청에 응답하여, 사용자의 디바이스 상의 웹 브라우저에 웹페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
본 명세서에서 기술된 발명의 실시예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트, 어플리케이션 서버와 같은 미들웨어 컴포넌트 또는 그래픽 사용자 인터페이스를 가지는 사용자 컴퓨터 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹브라우저와 같은 프론트엔드 컴포넌트 또는 하나 이상의 상기 백엔드, 미들웨어 또는 프론트엔드 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)를 포함한다.
컴퓨팅 시스템은 사용자들 및 서버들을 포함할 수 있다. 사용자와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 인터렉션한다. 예를 들어, 사용자 디바이스는 클라이언트이고, 디지털 콘텐츠 서버 또는 디지털 컴포넌트 서버가 서버일 수 있다. '사용자 디바이스'와 '클라이언트 디바이스'라는 상호 교환적으로 사용될 수 있다. 사용자와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 사용자-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 일부 실시예에서, 서버는(예를 들어, 사용자 디바이스와 인터렉션하는 사용자에게 데이터를 디스플레이하고 사용자 입력을 수신하기 위해) 사용자 디바이스에 데이터(예를 들어, HTML 페이지)를 전송한다. 사용자 디바이스에서 생성된 데이터(예를 들어, 사용자 인터렉션의 결과)는 서버에서 사용자 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정한 발명의 특정한 실시예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 실시예의 문맥에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 문맥에서 기술된 다양한 구성들은 또한 다수의 실시예에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 실시예에서 다양한 시스템 컴포넌트들의 분리는 모든 실시예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다.
따라서, 본 발명의 특정한 실시예들이 기술되었다. 다른 실시예들도 다음의 청구항들의 범위 내에 있다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다. 특정 구현예에서, 멀티태스킹과 병렬 프로세싱이 장점적일 수 있다.
105: 네트워크
130: 보안적 MPC 클러스터
110: 클라이언트 장치(디바이스)
112: 애플리케이션(들)
140: 발행자들
142: 웹사이트들
145: 리소스(들)
160-1, 160-2, 160-N: 디지털 컴포넌트 제공자
130: 보안적 MPC 클러스터
110: 클라이언트 장치(디바이스)
112: 애플리케이션(들)
140: 발행자들
142: 웹사이트들
145: 리소스(들)
160-1, 160-2, 160-N: 디지털 컴포넌트 제공자
Claims (11)
- 컴퓨터로 구현되는 방법으로서,
보안 다자간 연산(MPC) 시스템의 제1 서버에 의해 그리고 클라이언트 장치로부터 디지털 컴포넌트 요청을 수신하는 단계;
디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트에 대한 선택 값 및 상기 디지털 컴포넌트에 대한 우선순위 계층(priority tier)을 식별하는 단계;
복수의 우선순위 계층들 각각에 대해:
상기 보안 MPC 시스템의 하나 이상의 제2 서버와 협력하여 보안 MPC 프로세스를 사용하여, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 제1 비밀 공유(share)를 결정하는 단계 -상기 제1 비밀 공유(share)를 결정하는 단계는,
상기 우선순위 계층의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트가 선택을 위한 후보인지 여부를 나타내는 후보 파라미터의 제1 비밀 공유를 결정하는 단계; 그리고
(i) 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 후보 파라미터의 값의 제1 비밀 공유, (ii) 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 후보 파라미터의 하나 이상의 제2 비밀 공유, 그리고 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 선택 값에 기초하여 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 승자 파라미터의 비밀 공유를 결정하는 단계를 포함함-;
주어진 디지털 컴포넌트가 상기 계층에 대한 승자 디지털 컴포넌트임을 나타내는 승자 파라미터를 갖는 복수의 계층들 중 최상위 계층을 식별하는 단계; 그리고
상기 주어진 디지털 컴포넌트를 식별하는 선택 결과의 제1 비밀 공유를 상기 클라이언트 장치에 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제1항에 있어서, 상기 보안 MPC 시스템의 하나 이상의 제2 서버와 협력하여 상기 보안 MPC 프로세스를 사용하여, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 제1 비밀 공유를 결정하는 단계는,
병렬로 각 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 승자 파라미터의 제1 비밀 공유를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 선행하는 청구항 중 어느 한 항에 있어서, 상기 보안 MPC 시스템의 하나 이상의 제2 서버와 협력하여 상기 보안 MPC 프로세스를 사용하여, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 제1 비밀 공유를 결정하는 단계는,
최상위 우선순위 계층에서 최하위 우선순위 계층까지의 시퀀스에서 각 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 승자 파라미터의 상기 제1 비밀 공유를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 선행하는 청구항 중 어느 한 항에 있어서, 상기 우선순위 계층의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트가 선택을 위한 후보인지 여부를 나타내는 후보 파라미터의 제1 비밀 공유를 결정하는 단계는,
상기 하나 이상의 제2 서버 각각과 협력하여, 특정 디지털 컴포넌트에 대한 하나 이상의 조건들에 대한 비밀 공유들에 기초하여 상기 특정 디지털 컴포넌트에 대한 상기 후보 파라미터의 상기 제1 비밀 공유를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 선행하는 청구항 중 어느 한 항에 있어서, 상기 디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해, 상기 디지털 컴포넌트에 대한 선택 값을 식별하는 단계는,
주어진 콘텐츠 플랫폼에 대해, 상기 디지털 컴포넌트 요청이 수신된 전자 리소스의 발행자(publisher)에 의해 설정된 부스트(boost) 또는 상기 발행자를 위한 콘텐츠 플랫폼을 식별하는 단계; 그리고
상기 부스트를 사용하여 상기 콘텐츠 플랫폼의 각 디지털 컴포넌트에 대한 상기 선택 값을 조정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 선행하는 청구항 중 어느 한 항에 있어서, 상기 방법은,
상기 디지털 컴포넌트 요청이 수신된 전자 리소스의 발행자에 의해 설정된 선택 값 하한(floor)을 식별하는 단계; 그리고
상기 디지털 컴포넌트 세트로부터, 상기 선택 값 하한보다 작은 선택 값을 갖는 하나 이상의 디지털 컴포넌트를 필터링하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 선행하는 청구항 중 어느 한 항에 있어서, 상기 우선순위 계층의 각 디지털 컴포넌트에 대한 승자 파라미터의 비밀 공유를 결정하는 단계는,
상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 선택 값에 기초하여 상기 우선순위 계층의 디지털 컴포넌트들을 오더링(ordering)하는 단계;
상기 우선순위 계층의 각 디지털 컴포넌트에 대한 상기 후보 파라미터의 제1 비밀 공유 및 상기 오더링에 적어도 기초하여 계층의 각 디지털 컴포넌트에 대한 누적 값의 제1 비밀 공유를 결정하는 단계 -디지털 컴포넌트에 대한 상기 누적 값은 디지털 컴포넌트보다 더 높은 선택 값을 갖는 우선순위 계층의 후보 디지털 컴포넌트의 양(quantity)을 나타냄-; 그리고
상기 우선순위 계층의 각 디지털 컴포넌트에 대해, 디지털 컴포넌트에 대한 상기 후보 파라미터의 제1 비밀 공유, 디지털 컴포넌트에 대한 상기 후보 파라미터의 하나 이상의 제2 비밀 공유 각각, 및 디지털 컴포넌트에 대한 상기 누적 값에 기초하여 디지털 컴포넌트에 대한 상기 승자 파라미터의 제1 비밀 공유를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제7항에 있어서, 상기 방법은,
제2 값 선택 프로세스에 대응하는 제2 선택 값을 결정하는 단계를 더 포함하고, 상기 제2 선택 값을 결정하는 단계는,
각각의 우선순위 계층에 대해, 주어진 디지털 컴포넌트가 상기 우선순위 계층에 포함되는지 여부를 나타내는 승자 계층 파라미터(winning tier parameter)의 제1 비밀 공유를 결정하는 단계;
상기 디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해, 디지털 컴포넌트에 대한 상기 선택 값이 후보 디지털 컴포넌트 세트에서 두 번째로 가장 높은 선택 값일 수 있는지 여부를 나타내는 제2 선택 값 파라미터의 제1 비밀 공유를 결정하는 단계; 그리고
(i) 디지털 컴포넌트에 대한 상기 후보 파라미터는 디지털 컴포넌트가 선택을 위한 후보임을 나타내고, (ii) 상기 승자 계층 파라미터는 주어진 디지털 컴포넌트가 승자 계층에 포함되어 있음을 나타내고, (iii) 상기 제2 선택 값 파라미터는 디지털 컴포넌트에 대한 상기 선택 값이 후보 디지털 컴포넌트 세트에서 두 번째로 가장 높은 선택 값일 수 있음을 나타내는 디지털 컴포넌트에 대한 선택 값을 제2 선택 값으로서 식별하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 시스템으로서,
하나 이상의 프로세서; 그리고
상기 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금 선행하는 청구항 중 어느 한 항의 방법을 수행하게 하는 명령어를 저장한 하나 이상의 저장 장치를 포함한느 것을 특징으로 하는 시스템. - 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 제1항 내지 제8항 중 어느 한 항의 방법을 수행하게 하는 명령어를 포함하는 컴퓨터 판독가능 저장 매체.
- 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 제1항 내지 제8항 중 어느 한 항의 방법의 단계를 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL281328A IL281328A (en) | 2021-03-08 | 2021-03-08 | Flexible content selection processes through multi-sided secure calculation |
IL281328 | 2021-03-08 | ||
PCT/US2022/019171 WO2022192148A1 (en) | 2021-03-08 | 2022-03-07 | Flexible content selection processes using secure multi-party computation |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230002717A true KR20230002717A (ko) | 2023-01-05 |
Family
ID=80937265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227039722A KR20230002717A (ko) | 2021-03-08 | 2022-03-07 | 안전한 다자간 컴퓨팅을 사용한 유연한 콘텐츠 선택 프로세스 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230171091A1 (ko) |
EP (1) | EP4128652B1 (ko) |
JP (1) | JP7440667B2 (ko) |
KR (1) | KR20230002717A (ko) |
CN (1) | CN115918029A (ko) |
IL (1) | IL281328A (ko) |
WO (1) | WO2022192148A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230016859A1 (en) * | 2020-07-13 | 2023-01-19 | Inpher, Inc. | Multi-Pivot Partial Quicksort and Oblivious Comparisons of Secret Shared Arithmetic Values in a Multi-Party Computing Setting |
US20240202360A1 (en) * | 2022-12-16 | 2024-06-20 | Google Llc | Privacy preserving custom embeddings |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8015184B2 (en) | 2004-10-26 | 2011-09-06 | Yahoo! Inc. | Method and apparatus for a search-enabled remote control device |
JP2010146269A (ja) | 2008-12-18 | 2010-07-01 | Sanyo Electric Co Ltd | 情報処理装置、情報提供システムおよび情報処理方法 |
US8768774B2 (en) | 2011-11-29 | 2014-07-01 | Facebook, Inc. | Advertisements with multiple targeting criteria bids |
EP2688264B1 (en) | 2012-07-16 | 2016-08-24 | Alcatel Lucent | Method and apparatus for privacy protected clustering of user interest profiles |
EP3031165A2 (en) | 2013-08-09 | 2016-06-15 | Thomson Licensing | A method and system for privacy preserving matrix factorization |
US9679314B1 (en) | 2014-01-31 | 2017-06-13 | Google Inc. | Content selection using distribution parameter data |
US9577829B1 (en) * | 2014-09-03 | 2017-02-21 | Amazon Technologies, Inc. | Multi-party computation services |
ES2904528T3 (es) * | 2015-02-12 | 2022-04-05 | Visa Int Service Ass | Aparatos, métodos y sistemas de procesamiento de cubo de cifrado de múltiples partes |
WO2018135334A1 (ja) | 2017-01-19 | 2018-07-26 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
CN111133719B (zh) | 2017-09-29 | 2024-01-26 | 罗伯特·博世有限公司 | 用于利用spdz的更快速的安全多方内积计算的方法 |
US11023595B1 (en) * | 2018-12-07 | 2021-06-01 | Amazon Technologies, Inc. | System and method for processing encrypted search |
US20210406386A1 (en) * | 2018-05-28 | 2021-12-30 | Royal Bank Of Canada | System and method for multiparty secure computing platform |
WO2020077576A1 (en) | 2018-10-17 | 2020-04-23 | Alibaba Group Holding Limited | Secret sharing with a trusted initializer |
US10917494B2 (en) | 2019-02-01 | 2021-02-09 | Google Llc | Dynamic application content analysis |
-
2021
- 2021-03-08 IL IL281328A patent/IL281328A/en unknown
-
2022
- 2022-03-07 WO PCT/US2022/019171 patent/WO2022192148A1/en unknown
- 2022-03-07 US US17/919,566 patent/US20230171091A1/en active Pending
- 2022-03-07 CN CN202280004253.9A patent/CN115918029A/zh active Pending
- 2022-03-07 EP EP22712718.0A patent/EP4128652B1/en active Active
- 2022-03-07 KR KR1020227039722A patent/KR20230002717A/ko unknown
- 2022-03-07 JP JP2022570376A patent/JP7440667B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP4128652B1 (en) | 2024-08-21 |
IL281328A (en) | 2022-10-01 |
JP7440667B2 (ja) | 2024-02-28 |
EP4128652A1 (en) | 2023-02-08 |
JP2023532833A (ja) | 2023-08-01 |
US20230171091A1 (en) | 2023-06-01 |
WO2022192148A1 (en) | 2022-09-15 |
CN115918029A (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7238213B2 (ja) | コンテンツ選択プロセスの完全性を改善するためのセキュアマルチパーティ計算の使用 | |
EP4081971B1 (en) | Using secure mpc and vector computations to protect access to information in content distribution | |
KR20230002717A (ko) | 안전한 다자간 컴퓨팅을 사용한 유연한 콘텐츠 선택 프로세스 | |
JP7471450B2 (ja) | セキュアマルチパーティ計算の性能の向上 | |
US20240195603A1 (en) | Cryptographically secure control using secure multi-party computation | |
EP4101121B1 (en) | Privacy preserving measurements using secure multi-party computation | |
EP4022482B1 (en) | Protecting access to information in online interactions | |
WO2024030200A1 (en) | Single request architecture for increasing efficiency of secure multi-party computations |