KR20230048126A - 보안 다자간 연산을 사용한 암호화 보안 제어 - Google Patents

보안 다자간 연산을 사용한 암호화 보안 제어 Download PDF

Info

Publication number
KR20230048126A
KR20230048126A KR1020237008075A KR20237008075A KR20230048126A KR 20230048126 A KR20230048126 A KR 20230048126A KR 1020237008075 A KR1020237008075 A KR 1020237008075A KR 20237008075 A KR20237008075 A KR 20237008075A KR 20230048126 A KR20230048126 A KR 20230048126A
Authority
KR
South Korea
Prior art keywords
digital component
selection
share
eligibility
digital
Prior art date
Application number
KR1020237008075A
Other languages
English (en)
Inventor
강 왕
마르셀 엠. 모티 영
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20230048126A publication Critical patent/KR20230048126A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/50Oblivious transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Networks Using Active Elements (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Abstract

이 문서는 보안 MPC를 사용하여 사용자 개인 정보를 보호하고 선택 프로세스에 관련된 각 당사자의 데이터 보안을 보호하는 방식으로 디지털 컴포넌트를 선택하는 시스템 및 기술을 설명한다. 한 양태에서, 방법은 안전한 다자간 연산(MPC) 시스템의 제1 컴퓨터에 의해, 선택된 디지털 컴포넌트가 클라이언트 장치에 디스플레이될 환경의 컨텍스트 속성 세트의 적어도 제1 쉐어를 획득하는 단계를 포함한다. 디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해, 디지털 컴포넌트에 대한 적격성 기준 세트 사이의 관계를 정의하는 적격성 표현의 적어도 제1 쉐어가 획득된다. 컨텍스트 속성 세트의 적어도 제1 쉐어와 적격성 표현의 적어도 제1 쉐어에 기초하여 적격성 파라미터의 제1 쉐어가 결정된다.

Description

보안 다자간 연산을 사용한 암호화 보안 제어
본 명세서는 암호화 및 데이터 보안에 관한 것이다.
보안 다자간 연산(secure multi-party computation: MPC)은, 개별 당사자가 다른 당사자의 데이터 또는 중간 연산된 값들에 액세스할 수 없는데 반해, 출력들은 지정된 당사자에게만 공개(release)되도록 연산을 여러 당사자들에 걸쳐 분산함으로써 데이터에 대한 액세스를 방지하는 암호화 프로토콜들의 패밀리이다. MPC 컴퓨팅 시스템은 일반적으로 비밀 쉐어 또는 기타 암호화된 형태의 데이터를 사용하여 연산을 수행하고 당사자들 간의 보안적 정보 교환을 수행한다.
일반적으로, 본 명세서에 기술된 주제의 하나의 혁신적인 양태는 방법으로 구현될 수 있으며, 방법은, 복수의 컴퓨터를 포함하는 보안 다자간 연산(MPC) 시스템의 제1 컴퓨터에 의해, 선택된 디지털 컴포넌트가 클라이언트 장치에 디스플레이될 환경의 컨텍스트 속성 세트의 적어도 제1 쉐어를 획득하는 단계; 디지털 컴포넌트들의 세트의 각 디지털 컴포넌트에 대해: 상기 디지털 컴포넌트에 대한 적격성 기준 세트 사이의 관계를 정의하는 적격성 표현의 적어도 제1 쉐어를 획득하는 단계; 그리고 상기 컨텍스트 속성 세트의 적어도 제1 쉐어 및 상기 적격성 표현의 적어도 제1 쉐어에 기초하여, 상기 디지털 컴포넌트가 상기 클라이언트 장치에 디스플레이될 선택에 적격인지를 나타내는 적격성 파라미터의 적어도 제1 쉐어를 결정하는 단계; 상기 보안 MPC 시스템의 하나 이상의 제2 컴퓨터와 협력하여 상기 제1 컴퓨터에 의해, 상기 선택된 디지털 컴포넌트로서, 상기 디지털 컴포넌트가 선택에 적격임을 나타내는 적격성 파라미터를 갖는 각 디지털 컴포넌트를 포함하는 적격한 디지털 컴포넌트들의 세트로부터 소정의 디지털 컴포넌트를 선택하기 위해 보안 MPC 프로세스를 수행하는 단계; 상기 보안 MPC 프로세스의 결과로서, 상기 선택된 디지털 컴포넌트를 식별하는 선택 결과의 제1 쉐어를 생성하는 단계; 그리고 상기 제1 컴퓨터에 의해 상기 클라이언트 장치에 상기 선택 결과의 제1 쉐어를 전송하는 단계를 포함한다. 이 양태의 다른 구현은 컴퓨터 저장 장치에 인코딩된 방법의 양태를 수행하도록 구성된 대응하는 장치, 시스템 및 컴퓨터 프로그램을 포함한다.
이러한 구현 및 기타 구현은 각각 선택적으로 다음 기능 중 하나 이상을 포함할 수 있다. 일부 양태들에서, 상기 컨텍스트 속성 세트의 적어도 제1 쉐어를 획득하는 단계는 상기 클라이언트 장치 또는 콘텐츠 플랫폼 중 하나로부터 상기 컨텍스트 속성 세트의 제1 비밀 쉐어를 수신하는 단계를 포함한다.
일부 양태에서, 상기 컨텍스트 속성 세트의 적어도 제1 쉐어는 상기 컨텍스트 속성 세트 내의 모든 컨텍스트 속성을 포함하고; 상기 적격성 표현의 적어도 제1 쉐어는 상기 적격성 표현의 전체를 포함하고; 그리고 상기 디지털 컴포넌트가 선택에 적격인지 여부를 나타내는 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 다른 코드 실행으로부터 격리된 샌드박스 환경에서 상기 컨텍스트 속성 세트에 기초하여 상기 적격성 표현을 평가하는 것을 포함한다.
일부 양태들에서, 상기 컨텍스트 속성 세트의 적어도 제1 쉐어 및 상기 적격성 표현의 적어도 제1 쉐어에 기초하여, 상기 디지털 컴포넌트가 선택에 적격인지를 나타내는 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은, 하나 이상의 제2 컴퓨터와 공동으로, 상기 적격성 파라미터의 제1 비밀 쉐어를 결정하기 위한 제2 보안 MPC 프로세스를 수행하는 것을 포함한다.
일부 양태에서, 특정 디지털 컴포넌트에 대한 적격성 기준 세트의 적어도 제1 쉐어는 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 제1 비밀 쉐어를 포함하고; 상기 컨텍스트 속성 세트는 컨텍스트 속성의 벡터를 포함하고; 상기 특정 디지털 컴포넌트에 대한 적격성 표현은 SIC(set intersection check)를 포함하고; 그리고 상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 보안 MPC 시스템의 하나 이상의 제2 컴퓨터와 공동으로 제2 보안 MPC 프로세스를 사용하여, 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 적어도 하나의 요소와 상기 컨텍스트 속성 벡터의 적어도 하나의 요소 사이에 인터섹션(intersection)이 있음을 결정하는 것을 포함한다.
일부 양태에서, 상기 적격성 표현은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 하나 이상의 요소가 상기 컨텍스트 속성 벡터의 하나 이상의 해당 요소와 일치할 때 상기 특정 디지털 컴포넌트가 선택에 부적격한 블록 리스트로 상기 특정 디지털 컴포넌에 대한 속성 벡터를 정의하고; 그리고 상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 적어도 하나의 요소와 상기 컨텍스트 속성 벡터의 적어도 하나의 요소 사이에 인터섹션이 있다는 결정에 응답하여 상기 특정 디지털 컴포넌트가 상기 클라이언트 장치에 디스플레이될 선택에 부적합함을 나타내도록 상기 적격성 파라미터의 적어도 제1 쉐어의 값을 설정하는 것을 포함한다.
일부 양태에서, 상기 적격성 표현은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 하나 이상의 요소가 상기 컨텍스트 속성 벡터의 하나 이상의 해당 요소와 일치할 때 상기 특정 디지털 컴포넌트가 선택에 적격한 활성화된 리스트로 상기 특정 디지털 컴포넌트에 대한 속성 벡터를 정의하고; 그리고 상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 적어도 하나의 요소와 상기 컨텍스트 속성 벡터의 적어도 하나의 요소 사이에 인터섹션(intersection)이 있다는 결정에 응답하여 상기 특정 디지털 컴포넌트가 상기 클라이언트 장치에 디스플레이될 선택에 적격임을 나타내도록 상기 적격성 파라미터의 적어도 제1 쉐어의 값을 설정하는 것을 포함한다.
일부 양태에서, 상기 특정 디지털 컴포넌트에 대한 적격성 기준 세트의 적어도 제1 쉐어는 상기 특정 디지털 컴포넌트에 대한 속성을 포함하는 제1 블룸 필터의 제1 비밀 쉐어를 포함하고; 상기 컨텍스트 속성 세트는 컨텍스트 속성을 포함하는 제2 블룸 필터를 포함하고; 상기 특정 디지털 컴포넌트에 대한 적격성 표현은 SIC(set intersection check)를 포함하고; 그리고 상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 보안 MPC 시스템의 하나 이상의 제2 컴퓨터와 공동으로 제2 보안 MPC 프로세스를 사용하여, 상기 제1 블룸 필터의 적어도 하나의 요소와 상기 제2 블룸 필터의 적어도 하나의 요소 사이에 인터섹션이 있음을 결정하는 것을 포함한다.
일부 양태에서, 특정 디지털 컴포넌트에 대한 적격성 표현은 디지털 컴포넌트에 대한 소정의 속성과 컨텍스트 속성 세트의 해당 속성 사이의 비교를 포함한다. 일부 양태에서, 상기 특정 디지털 컴포넌트에 대한 적격성 표현은 상기 디지털 컴포넌트에 대한 소정의 속성과 상기 컨텍스트 속성 세트의 해당 속성 사이의 동등성 테스트(equality test)를 포함한다.
일부 양태에서, 상기 특정 디지털 컴포넌트에 대한 적격성 표현은 상기 특정 디지털 컴포넌트가 선택에 적격한 시기를 정의하는 진리표(truth table)를 포함한다. 일부 양태에서, 상기 적격성 표현은 2개 이상의 하위 표현을 포함하는 부울 표현 및 각 쌍의 하위 표현에 대한 부울 연산자를 포함한다. 상기 2개 이상의 하위 표현은 (i) SIC(set intersection check), (ii) 동등성 테스트 및 (iii) 비교 테스트 중 2개 이상을 포함할 수 있다.
일부 양태에서, 상기 컨텍스트 속성 세트는 (i) 상기 선택된 디지털 컴포넌트가 디스플레이될 리소스에 관한 데이터, (ii) 상기 클라이언트 장치의 사용자에 관한 데이터, (iii) 디지털 컴포넌트를 디스플레이할 애플리케이션에 관한 데이터 또는 (iv) 상기 클라이언트 장치에 대한 데이터 중 적어도 하나를 포함한다.
본 명세서에 기술된 주제는 다음 이점들 중 하나 이상을 실현하도록 특정 실시예에서 구현될 수 있다. 사용자 정보 쉐어에 기초하여 디지털 컴포넌트를 선택하기 위해 서로 다른 당사자가 운영하는 2 이상의 MPC 서버에서 수행하는 보안 MPC 프로세스를 사용하면 MPC 컴퓨터 간에 무단 공모이 없는 한 MPC 컴퓨터 또는 다른 당사자가 사용자 정보에 클리어텍스트(cleartext)로 액세스할 수 없다. 이러한 방식으로 적어도 하나의 MPC 서버가 정직한 한 사용자 데이터 개인 정보가 보호된다. 보안 MPC 프로세스는 콘텐츠 플랫폼 정보의 기밀성을 유지하기 위해 디지털 컴포넌트 선택 시 콘텐츠 플랫폼에서 수신한 정보 쉐어를 사용할 수 있으므로 MPC 컴퓨터나 정보 쉐어를 획득한 다른 엔터티가 정보에 액세스할 수 없다.
디지털 컴포넌트 선택 프로세스에서, MPC 서버들은 당사자들이 클리어텍스트로 사용자 정보에 액세스하는 것을 방지하면서 하나 이상의 적격 조건을 만족하는 적격한 디지털 컴포넌트로부터 선택을 할 수 있다. 적격성 조건들은 다른 무엇보다도 특히 디지털 컴포넌트의 배포 방식 또는 빈도에 대한 제한 및 지침을 포함할 수 있다. 이들 조건은 사용자 그룹 멤버십, 빈도 제어, 음소거(예: 사용자 차단), 사용자의 마이크로 타겟팅을 방지하기 위한 k-익명성, 및/또는 속도(pacing) 및 예산 제약을 포함할 수 있다.
또 다른 예시적인 적격성 조건은 디지털 컴포넌트가 표시될 컨텍스트, 예를 들어 디지털 컴포넌트가 디스플레이될 리소스, 디지털 컴포넌트를 디스플레이할 클라이언트 장치의 지리적 위치 및 디지털 컴포넌트를 디스플레이할 애플리케이션(예: 브라우저)의 구어 설정과 관련된다. 디지털 컴포넌트 공급자는 디지털 컴포넌트를 표시(디스플레이)하거나 표시할 수 없는 컨텍스트를 지정할 수도 있다. 마찬가지로 리소스 게시자는 리소스와 함께 표시하거나 표시할 수 없는 디지털 컴포넌트의 기능을 지정할 수 있다. 관련 컨텍스트가 있는 각 디지털 컴포넌트 디스플레이 기회에 적격한 디지털 컴포넌트를 식별하는 데 사용할 수 있는 속성의 모든 가능한 조합을 설명하는 캐시 조회 키를 사용하는 대신, 디지털 컴포넌트에 대한 기준은 예를 들어 보안 MPC 프로세스를 사용하는 비밀 쉐어에서 MPC 컴퓨터에 의해 평가될 수 있는 표현을 사용하여 정의될 수 있다. 이러한 방식으로 MPC 컴퓨터에 저장되는 데이터의 양은 대용량 캐시 조회 키 사용에 비해 상대적으로 줄어든다. 이는 또한 MPC 컴퓨터의 데이터 저장 요구 사항을 늘리지 않고도 디지털 컴포넌트의 표시에 대한 게시자 및 디지털 컴포넌트 공급자 제어의 유연성을 증가시킨다. 이는 MPC 컴퓨터가 더 많은 디지털 컴포넌트, 디지털 컴포넌트에 대한 정보 및/또는 고속 메모리, 예를 들어 고속 캐시에 기타 관련 정보를 저장할 수 있게 한다.
디지털 컴포넌트의 선택은 일반적으로 콘텐츠가 클라이언트 장치에 로드될 때 발생하는 온라인 프로세스이므로, 이 프로세스가 예를 들어 밀리초 이내에 신속하게 완료되는 것이 중요하다. 이 문서에서 설명하는 기술은 클라이언트 장치와 MPC 클러스터 간에 전송되는 데이터 크기를 줄이고, MPC 클러스터에 필요한 연산 리소스를 줄이고, 그리고 MPC의 서버들에 의해 수행되는 왕복 통신 및 연산의 수 및 서버 간에 전송되는 데이터 크기를 줄임으로써 디지털 컴포넌트들이 선택되는 속도를 향상시킨다. 클라이언트 장치와 서버 사이의 데이터 크기 감소는 또한 예를 들어 클라이언트 장치가 배터리 전원으로 실행되는 모바일 디바이스인 경우 클라이언트 장치의 네트워크 대역폭 소비 및 배터리 소비를 줄인다.
MPC 클러스터는 보안 MPC 프로세스를 사용하여 MPC 클러스터가 선택한 선택된 디지털 컴포넌트를 식별하는 결과의 비밀 쉐어를 전송할 수 있다. 디지털 컴포넌트 세트의 전체 또는 대부분에 대한 정보가 아닌 오로지 선택된 디지털 컴포넌트에 대한 결과의 비밀 쉐어를 전송함으로써, 결과를 송수신하는데 있어 대기 시간과 소비된 대역폭, 처리 전력 및 배터리 전력을 유사하게 줄일 수 있다. 이것은 또한 정보가 클라이언트 장치에 제공되는 디지털 컴포넌트의 수를 제한함으로써 디지털 컴포넌트에 대한 선택 값을 MPC 클러스터에 제출하는 콘텐츠 플랫폼의 기밀 정보의 잠재적 누출을 줄인다.
콘텐츠 프리젠테이션의 대기 시간을 감소시키는 것은 또한 그러한 콘텐츠가 도착하기를 기다리는 동안 사용자 디바이스에서 발생하는 오류의 수를 감소시킨다. 콘텐츠는 종종 밀리초 단위로 무선 네트워크로 연결된 모바일 장치에 제공되어야 하므로 콘텐츠 선택 및 제공에 있어서 지연 시간을 줄이는 것은 오류를 방지하고 사용자의 좌절을 줄이는 데 중요하다.
본 명세서에서 설명된 주제의 하나 이상의 실시예의 세부사항들이 첨부 도면 및 아래의 상세한 설명에서 제시된다. 주제의 다른 특징, 양태 및 장점들은 상세한 설명, 도면 및 청구범위에서 명백해질 것이다.
도 1은 MPC 클러스터가 클라이언트 장치들에 배포를 위해 디지털 컴포넌트를 선택하기 위한 보안 MPC 프로세스를 수행하는 환경의 블록도이다.
도 2는 도 1의 환경 내에서의 예시적인 데이터 흐름을 도시한다.
도 3은 클라이언트 장치에 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 4는 클라이언트 장치로의 배포를 위한 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 도면이다.
도 5는 디지털 컴포넌트가 선택에 적격인지를 결정하기 위한 예시적인 프로세스의 다이어그램이다.
도 6은 클라이언트 장치로의 분배를 위해 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스의 다이어그램이다.
도 7은 예시적인 컴퓨터 시스템의 블록도이다.
다양한 도면에서 동일한 참조 번호 및 명칭은 동일한 요소를 나타낸다.
일반적으로 이 문서는 암호화, 비밀 쉐어 및 보안 MPC를 사용하여 사용자 개인 정보를 보호하고 선택 프로세스에 관련된 각 당사자의 데이터 보안을 보호하는 방식으로 디지털 컴포넌트를 선택하는 시스템 및 기술을 설명한다. 이 문서에 설명된 기술은 이 기술은 요청이 수신된 후 짧은 시간 주기(예: 밀리초 이내)에 디지털 컴포넌트를 제공하고 디지털 컴포넌트를 표시하는 클라이언트 장치로 송수신되는 데이터의 크기를 최소화하면서 이러한 개인 정보 보호 및 데이터 보안을 허용한다. 이 기술은 또한 디지털 컴포넌트가 표시되는 환경과 특정 전자 리소스(예: 웹페이지) 및/또는 기본 애플리케이션 콘텐츠와 함께 표시되는 디지털 컴포넌트를 제어하기 위해 콘텐츠 플랫폼 및/또는 디지털 컴포넌트 공급자가 지정한 규칙 및 기타 데이터의 유연성과 보안을 제공한다.
도 1은 MPC 클러스터(130)가 클라이언트 장치(110)에 배포하기 위한 디지털 컴포넌트를 선택하기 위해 보안적 MPC 프로세스를 수행하는 환경(100)의 블록도이다. 예시적인 환경(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)로부터 디지털 컴포넌트를 요청할 수 있다.
일부 게시자(publishers)(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)는 또한 아래에서 더 상세히 설명되는 바와 같이 디지털 컴포넌트를 선택하기 위해 다른 조건들을 사용할 수 있다. 클리어텍스트(Cleartext)는 키나 기타 암호 해독 장치 또는 기타 암호 해독 프로세스를 요구하지 않고 보거나 사용할 수 있는 형식으로 이진 파일을 포함한 코드 또는 데이터로 연산 태그가 지정되거나 특수 형식이 지정되거나 작성되지 않은 텍스트이다.
예시적인 보안 MPC 클러스터(130)는 예를 들어 사용자의 그룹 멤버십 및/또는 컨텍스트 데이터(예: 선택한 디지털 컴포넌트가 디스플레이될 환경의 컨텍스트 속성)에 기초하지만, 그룹 구성원, 컨텍스트 데이터 또는 기타 사용자 정보 또는 이러한 사용자 정보에서 파생된 신호에 액세스하지 않고, 사용자의 클라이언트 장치에 배포하기 위한 디지털 컴포넌트를 선택하기 위해 보안 MPC 프로세스를 수행하는 2개의 컴퓨팅 시스템 MPC1 및 MPC2를 포함한다. 예시적인 MPC 클러스터(130)가 2개의 컴퓨팅 시스템을 포함하지만, MPC 클러스터(130)가 하나보다 많은 컴퓨팅 시스템을 포함하는 한 더 많은 컴퓨팅 시스템이 사용될 수도 있다. 예를 들어, MPC 클러스터(130)는 3개의 컴퓨팅 시스템, 4개의 컴퓨팅 시스템 또는 다른 적절한 개수의 컴퓨팅 시스템을 포함할 수 있다. MPC 클러스터(130)에서 더 많은 컴퓨팅 시스템을 사용하면 더 많은 보안을 제공할 수 있지만 MPC 프로세스의 복잡성도 증가시킬 수 있다. 각 컴퓨팅 시스템 MPC1 및 MPC2는 서버 또는 다른 적절한 유형의 컴퓨터일 수 있다.
컴퓨팅 시스템(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)에 의해 사용될 수 있는 값의 벡터 또는 선택 값을 저장할 수 있다. 디지털 컴포넌트에 대한 선택 값은 디지털 컴포넌트가 표시되는 컨텍스트를 기반으로 할 수 있다. 예를 들어, 디지털 컴포넌트 제공자(160)는 디지털 컴포넌트가 특정 주제(topic)와 관련된 경우 다른 주제에 대한 것보다 특정 주제(예: 여행 관련 웹페이지)에 관련된 리소스에 표시될 자신의 디지털 컴포넌트에 더 높은 선택 값을 기꺼이 제공할 수 있다. 다른 예로서, 디지털 컴포넌트 제공자(160)는 특정 특성, 관심, 의도, 디지털 컴포넌트와의 이전 상호작용 등을 갖는 사용자에게 디스플레이될 디지털 컴포넌트에 대해 더 높은 선택 값을 기꺼이 제공할 수 있다. 따라서, DSP(150)는 컴퓨팅 시스템 MPC1 및 MPC2에 소정의 디지털 컴포넌트에 대한 다중 선택 값(또는 다중 선택 값 벡터)을 제공할 수 있으며, 각각의 선택 값 또는 벡터는 컨텍스트 및 사용자 속성의 상이한 조합에 대한 것이다.
각 선택 값 또는 벡터와 해당 디지털 컴포넌트는 디지털 컴포넌트 선택 아이템이라고 할 수 있다. 디지털 컴포넌트 선택 아이템에는 디지털 컴포넌트 자체, 선택 값 또는 벡터, 디지털 컴포넌트(예: 디지털 컴포넌트의 메타데이터)에 대한 정보, 조건 데이터 및/또는 적격성 기준 세트 간의 관계를 정의하는 적격성 표현(eligibility expression)이 포함될 수 있다.
적격성 표현은 디지털 컴포넌트가 클라이언트 장치(110)에 표시될 컨텍스트에 기초하여 디지털 컴포넌트 선택 아이템이 클라이언트 장치(110)로의 배포에 적격인지 여부를 결정하는 데 사용된다. 적격성 기준은 적격성 표현의 기준이다. 적격성 표현은 여러 하위 표현(sub-expressions)과 하위 표현 사이의 부울 연산자(Boolean operators)를 포함하는 부울 표현의 형식일 수 있다. 적격성 표현의 예는 "URL = example.com AND location = United States"가 될 수 있다. DSP(150)는 예를 들어 디지털 컴포넌트 선택 아이템의 일부로서 디지털 컴포넌트 및 대응하는 선택 값(또는 선택 값을 결정하는 데 사용할 수 있는 하나 이상의 벡터와 같은 데이터)에 대한 적격성 표현을 컴퓨팅 시스템 MPC1 및 MPC에 제공할 수 있다. 적격성 표현, 적격성 기준 및 적격성 표현을 평가하는 기법의 예는 아래에 설명되어 있다.
디지털 컴포넌트 선택 아이템에 대한 조건 데이터는 디지털 컴포넌트 선택 아이템(따라서 선택 아이템의 디지털 컴포넌트 및 선택 값)이 소정의 디지털 컴포넌트 선택 프로세스의 후보가 되기 위해 충족되어야 하는 조건(들)을 정의한다. 저장된 디지털 컴포넌트는 0개 이상의 해당 조건을 가질 수 있다. 일부 구현에서, 선택을 위한 후보가 되기 위해, 디지털 컴포넌트 선택 아이템은 디지털 컴포넌트에 대한 적격성 기준에 기초하여 적격이어야 하고 디지털 컴포넌트 선택 아이템에 대한 각각의 조건이 만족되어야 한다.
하나의 예시적인 조건은 선택된 디지털 컴포넌트가 제공될 사용자가 저장된 디지털 컴포넌트에 대응하는 사용자 그룹의 구성원이라는 것이다. 이 조건은 사용자 그룹 멤버쉽 조건이라고 할 수 있다. 이 예에서, 컴퓨팅 시스템 MPC1 및 MPC2는 디지털 컴포넌트 선택 아이템에 대해(예를 들어, 선택 아이템의 일부로서) 디지털 컴포넌트에 대응하는 하나 이상의 사용자 그룹 식별자 세트를 저장할 수 있다. 이러한 사용자 그룹 식별자는 저장된 디지털 컴포넌트가 제공될 수 있는 사용자 그룹을 식별한다. 즉, 상기 디지털 컴포넌트 선택 아이템은 디지털 컴포넌트 선택 아이템에 대한 하나 이상의 사용자 그룹 식별자에 의해 식별되는 사용자 그룹 중 적어도 하나의 구성원인 사용자에게 제공할 디지털 컴포넌트를 선택하기 위해 수행되는 디지털 컴포넌트 선택 프로세스의 후보일 뿐이다.
저장된 디지털 컴포넌트에 대한 다른 예시적인 조건은 디지털 컴포넌트 또는 특정 카테고리의 디지털 컴포넌트가 소정의 기간 동안 최대 횟수만큼 동일한 사용자에게만 제공될 수 있음을 나타내는 빈도 상한 조건이다. 디지털 컴포넌트에 대한 다른 예시적인 조건은 디지털 컴포넌트가 사용자에 의해 차단, 예를 들어 음소거되었음을 나타내는 차단된 디지털 컴포넌트 조건이다. 이들 예시적인 조건에 대해, 컴퓨팅 시스템(MPC1 및 MPC2)은 저장소로부터 복수의 사용자 각각에 대해 사용자에게 제공할 수 없는 디지털 컴포넌트를 나타내는 확률적 데이터 구조, 예를 들어 쿠쿠 필터 또는 블룸 필터를 수신할 수 있다. 예를 들어, 확률적 데이터 구조는 사용자가 직접 차단하거나 소정의 시간 동안 디지털 컴포넌트가 사용자에게 표시되는 빈도를 초과하여 차단된 디지털 컴포넌트에 대한 범용 식별자를 나타낼 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 예를 들어 컴퓨팅 시스템(MPC1 또는 MPC2)이 클리어텍스트의 식별자에 액세스하는 것을 방지하는 암호화된 형태로 사용자의 클라이언트 장치(110)로부터 확률적 데이터 구조를 수신할 수 있다. 예를 들어, 사용자의 클라이언트 장치(110)에서 실행되는 애플리케이션(112)은 빈도 제한으로 인해 차단되거나 사용자에 의해 차단된 차단 디지털 컴포넌트에 대한 식별자를 나타내는 블룸 필터를 생성할 수 있다. 그 다음, 애플리케이션(112)은 컴퓨팅 시스템(MPC1 및 MPC2)으로 하여금 소정의 디지털 컴포넌트가 사용자에 대해 차단되는지 여부를 결정하기 위해 보안적 MPC 프로세스를 사용하여 블룸 필터에 협력하여 질의 할 수 있게 하는 데이터를 각각의 컴퓨팅 시스템(MPC1 및 MPC2)에 제공할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 이 보안적 MPC 프로세스를 사용하여 차단된 디지털 컴포넌트 상태의 비밀 쉐어를 연산한다.
일부 구현에서, 차단된 디지털 컴포넌트에 대한 식별자는 사용자 그룹 식별자와 동일한 확률적 데이터 구조에 포함될 수 있고 상이한 해시 함수를 사용하여 질의될 수 있다. 그러나, 차단된 디지털 컴포넌트에 대한 목표 오탐지 비율은 사용자 그룹 식별자에 대한 오탐지 비율보다 낮을 수 있다. 따라서 차단된 디지털 컴포넌트에 대해 사용자 그룹 식별자보다 블룸 필터를 생성하고 쿼리하는 데 더 적은 해시 함수를 사용할 수 있다. 차단된 디지털 컴포넌트에 대한 블룸 필터의 데이터 크기를 줄이기 위해 사용자 그룹 식별자는 차단된 디지털 컴포넌트보다는 블룸 필터로 나타낼 수 있다. 이것은 네트워크를 통해 블룸 필터를 보낼 때 대기 시간을 줄이고 블룸 필터를 보낼 때 소모되는 대역폭을 줄이며 블룸 필터를 보내기 위한 배터리 전력 사용량을 줄인다.
저장된 디지털 컴포넌트에 대한 다른 예시적인 조건은 시간 지속기간에 걸쳐 디지털 컴포넌트의 배포를 조정하는 페이싱 조건이다. 컴퓨팅 시스템(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-익명성 조건을 갖는 디지털 컴포넌트를 포함하지 않는다.
일부 구현에서, 각각의 디지털 컴포넌트 선택 아이템은 디지털 컴포넌트 정보 요소(dc_information_element)의 형태로 저장되며, 이는 크리에이티브(creative) 자체를 포함하여 디지털 컴포넌트에 대한 선택 값 및 기타 정보가 있는 바이트 어레이(byte array)일 수 있다. 바이트 어레이는 애플리케이션(112) 또는 클라이언트 장치(110)의 신뢰 프로그램, 및 컴퓨팅 시스템 MPC1 및 MPC2가 선택 값 및 메타데이터를 획득하기 위해 파싱할 수 있는 특정 포맷을 가질 수 있다. 일부 구현에서, 디지털 컴포넌트 정보 요소는 디지털 컴포넌트 자체를 포함할 수 있다.
이 문서 전체에 걸친 설명에 더하여, 사용자는 제어(예컨대, 사용자가 인터렉션할 수 있는 사용자 인터페이스 요소)를 제공받을 수 있어 시스템, 프로그램 또는 기능의 경우와 시기 모두에 대해 선택할 수 있다. 여기에 설명된 사용자 정보(예컨대, 사용자의 소셜 네트워크, 소셜 활동 또는 활동, 직업, 사용자의 선호도 또는 사용자의 현재 위치에 대한 정보)의 수집을 가능하게 할 수 있으며, 사용자가 서버로부터 콘텐츠 또는 통신을 전송받는 경우. 또한 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방식으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원이 처리되어 사용자에 대한 개인 식별 정보가 결정될 수 없거나, 위치 정보를 얻은 사용자의 지리적 위치가 일반화될 수 있어(예컨대, 도시, 우편 번호 또는 주 수준), 사용자의 특정 위치를 확인할 수 없도록 한다. 따라서 사용자는 사용자에 대해 수집되는 정보, 해당 정보가 사용되는 방법 및 사용자에게 제공되는 정보를 제어할 수 있다.
이 문서에서 MPC 클러스터에 의해 비밀 쉐어에 대해 수행되는 일부 연산은 비밀 쉐어 값의 곱 또는 합계로 표시된다. 이러한 연산이 수행되는 속도를 높이기 위해 AND 연산(예: 비트 AND)을 사용하여 비밀 쉐어에서 곱셈을 수행할 수 있고 XOR 연산(예: 비트 XOR 연산)을 사용하여 비밀 쉐어에서 덧셈을 수행할 수 있다. 어떤 경우에는 하나의 클리어텍스트 정수(cleartext integer)가 Z2에서 0 또는 1을 나타내는 비밀 쉐어로 곱해질 때(즉, 모듈로 2에서 두 쉐어의 합이 0 또는 1임) 곱셈 또는 비트별 AND가 필요하지 않다. 대신 각 컴퓨팅 시스템은 쉐어를 평가하고 쉐어가 1이면 정수를 리턴하고 쉐어가 0이면 0을 리턴할 수 있다.
도 2는 도 1의 환경(100) 내의 예시적인 데이터 흐름을 도시한다. 이 설명에는 2가지 유형의 선택 값이 포함된다. 즉, 사용자 그룹 멤버십 또는 기타 비즈니스 민감한 정보와 같은 민감한 사용자 정보 또는 파렴치한 당사자가 민감한 정보를 추론할 수 있는 값의 변경을 허용할 수 있는 파라미터를 조건으로 하는 선택 값, 또는 "조건부 선택 값"; 민감한 정보를 조건으로 하지 않는 선택 값, 또는 "무조건부 선택 값". 사용자 개인 정보를 보호하기 위해 "조건부 선택 값"에 대한 조건이 SSP(170) 또는 DSP(150) 대신 MPC 클러스터(130) 내에서 평가되어 "조건부 선택 값"이 콘텐츠 선택 프로세스의 후보인지 여부를 결정한다.
이 구조는 MPC 클러스터(130)가 사용자 개인 정보 및 비즈니스 기밀 정보를 보호하고 애플리케이션(112)의 제공자와 같은 애플리케이션 제공자에게 자신의 신뢰성을 증명할 수 있게 한다. 이 예에서, MPC 클러스터(130)는 보안 제2-당사자 MPC 클러스터(130)의 2개의 컴퓨팅 시스템 중 적어도 하나가 정직한 경우 기밀 사용자 데이터 또는 비즈니스 기밀 정보의 누출이 없음을 보장하기 위해 암호화 기술을 적용하는 보안 2-당사자 연산(2PC: 2-Party computation) 아키텍처에 의존한다. MPC 클러스터(130)가 2개 이상의 컴퓨팅 시스템을 포함하는 경우, 현재 MPC 프로토콜이 확장되거나 다른 MPC 프로토콜이 사용될 수 있다.
MPC 클러스터(130)는 보안 2PC 프로토콜을 실행하여 후보 디지털 컴포넌트의 적격성을 평가하기 위한 조건을 평가 및 적용하고, 선택 값에 기초하여 디지털 컴포넌트를 선택하기 위해 선택 프로세스를 수행하고, 이러한 조건이 의존하는 파라미터를 업데이트하기 위해 노출 및 사용자 상호작용(예: 디지털 컴포넌트 선택) 알림을 수신한다. 이러한 모든 프로세스는 보안 2PC 및 비밀 쉐어 기술을 사용하여 수행할 수 있다. 이 프로토콜은 도 3 내지 도 6을 참조하여 상세히 설명된다.
스테이지 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)는 컨텍스트 요청에 응답하여 임의의 수의 선택 값을 리턴할 수 있다.
일부 구현에서, 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에서 전송된 디지털 컴포넌트 요청에 해당하는 선택 프로세스에서 사용된 후에 선택값을 폐기할 것이다. 디지털 컴포넌트 선택 아이템이 MPC 클러스터(130)에 의해 저장되면, MPC 클러스터(130)는 클라이언트 장치로부터 수신된 미래의 디지털 컴포넌트 요청에 대한 미래의 디지털 컴포넌트 선택 프로세스에 디지털 컴포넌트 선택 아이템을 포함할 수 있다.
DSP(150)는 또한 예를 들어 디지털 컴포넌트 선택 아이템의 일부로서, 적격성 표현 및 그에 대응하는 적격성 기준, 및 디지털 컴포넌트 선택 아이템이 선택을 위한 후보가 되기 위해 충족되어야 하는 임의의 조건(들)을 정의하는 조건 데이터를 제공할 수 있다. 이 정보는 개인 정보 보호의 대상 수준 및/또는 데이터 보안의 대상 수준에 따라 클리어텍스트(cleartext) 또는 쉐어(예: 비밀 쉐어)로 제공될 수 있다. 비밀 쉐어가 사용되는 경우, DSP(150)는 SSP(170)에 적격성 표현의 제1 비밀 쉐어, 적격성 기준의 제1 비밀 쉐어 및 각 조건에 대한 조건 데이터의 제1 비밀 쉐어를 제공할 수 있다. DSP(150)는 또한 각 조건에 대한 적격성 표현의 제2 비밀 쉐어, 적격성 기준의 제2 비밀 쉐어 및 조건 데이터의 제2 비밀 쉐어를 SSP(170)에 제공할 수 있다. SSP(170)는 제1 비밀 쉐어를 MPC1에 제공하고, 제2 비밀 쉐어를 MPC2에 제공할 수 있어 MPC1도 MPC2도 무단 공모(unauthorized collusion)이 없는 한 클리어텍스트(cleartext)의 정보에 액세스할 수 없다.
벡터들이 선택 값을 결정하기 위해 사용될 때, 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개의 벡터 간의 내적은
Figure pct00001
일 수 있다.
스테이지 E에서, SSP(170)는 DSP(150)로부터 디지털 컴포넌트 선택 아이템을 수신하여 디지털 컴포넌트 선택 아이템을 MPC 클러스터(130)에 제공한다. 일부 구현에서, SSP(170)는 디지털 컴포넌트 선택 아이템을 MPC 클러스터(130)에 전송하기 전에 디지털 컴포넌트 선택 아이템을 처리(프로세싱)할 수 있다.
SSP(170)는 또한 선택 값 규칙을 적용하여 예를 들어 선택 값들이 특정 콘텐츠 제공자들에 대한 게시 후 값들에 영향을 미치는 방식을 결정한다. 게시 후 값들은 예를 들어 게시자(140)의 리소스 또는 애플리케이션 콘텐츠와 함께 디지털 컴포넌트를 표시하기 위해 게시자(140)에 제공되는 양을 나타낼 수 있다. 그 후, SSP(170)는 상위 무조건 선택 값, 즉 가장 높은 게시 후 값을 산출하는 무조건부 선택 값을 결정하기 위해 선택 프로세스를 수행한다. 무조건부 선택 값은 민감한 정보에서 결정되지 않으므로 예산 및 속도 규칙, 광고주 및 디지털 컴포넌트 제외와 같은 콘텐츠 선택 규칙들이 MPC 클러스터(130)가 아닌 SSP(170)(또는 DSP(150))에 의해 적용될 수 있다. 그 후, SSP(170)는 MPC 클러스터(130)에 JIT 선택 값들인 다음의 값들 즉, MPC 클러스터(130)에서 캐싱을 가능하게 하는 모든 선택 값(TTL 값을 갖는 선택 값) 및 게시 후 값이 최상위 무조건부 선택 값보다 작지 않은 모든 선택값들을 MPC 클러스터(130)에 포워딩한다.
일부 구현에서, DSP(150) 및/또는 SSP(170)는 선택된 디지털 컴포넌트 요청이 표시될 환경의 속성을 추론할 수 있다. 예를 들어, DSP(150) 및/또는 SSP(170)는 디지털 컴포넌트가 디스플레이될 클라이언트 장치(110)의 대략적인 위치, 디지털 컴포넌트가 디스플레이될 리소스의 주제(topic), 디지털 컴포넌트가 표시될 시간 및/또는 날짜를 추론할 수 있다. SSP(170)는 디지털 컴포넌트 선택 아이템과 함께 유추된 속성을 MPC 클러스터(130)에 제공할 수 있다. 일부 구현에서, MPC 클러스터(130)는 DSP(150) 및 SSP(170)에서 이용할 수 없는 정보(클라이언트 장치 IP 주소와 같은)에 기초하여 디지털 컴포넌트가 디스플레이될 클라이언트 장치(110)의 대략적인 위치를 추론할 수 있다.
스테이지 F에서, MPC 클러스터(130)는 캐싱을 가능하게 하는(즉, TTL 값을 갖는) 수신된 JIT 선택 값으로 자신의 캐시를 업데이트한다. 또한, MPC 클러스터(130)는 사용자 그룹 멤버십 규칙, 빈도 제어, 페이싱 규칙 및 특정 사용자의 마이크로 타게팅을 방지하기 위한 규칙과 같은 선택 규칙들을 스테이지 E에서 수신된 모든 선택 값들 뿐만 아니라 선택 프로세스에 대한 유효한 후보들을 선택하기 위한 이전에 캐시된 선택 값들에 적용한다. 이 규칙들은 무엇보다도 특히 디지털 컴포넌트의 배포 방식 또는 빈도에 대한 제한 및 지침을 포함할 수 있다. 이 규칙들은 주파수 제어, 음소거, 리소스 고갈 및 속도 제한을 포함한다. 일부 구현에서, MPC 클러스터(130)에 의해 평가되는 조건을 갖는 JIT 디지털 컴포넌트들은 현재 디지털 컴포넌트 선택 프로세스에 대해 무시될 수 있다. 예를 들어, 현재 선택 프로세스에 대한 이러한 디지털 컴포넌트들의 무시는 디지털 컴포넌트를 선택하고 제공하는데 있어 대기 시간 감소 등 성능상의 이점을 제공할 수 있다. 그후, MPC 클러스터(130)는 모든 적격 후보 중에서 최종 선택 프로세스를 실행하고, 우승 디지털 컴포넌트를 선택한 다음, 디지털 컴포넌트 요청에 응답하여 선택된 디지털 컴포넌트에 대한 데이터를 애플리케이션(112)에 리턴한다. 디지털 컴포넌트의 선택 및 규칙의 적용은 도 3 내지 6을 참조하여 설명된 바와 같이 비밀 쉐어를 사용하는 보안 MPC 프로세스를 사용하여 수행될 수 있다.
스테이지 G에서, 선택된 디지털 컴포넌트는 애플리케이션(112)에 의해 렌더링된다. 애플리케이션(112)은 그 후 MPC 클러스터(130)에 임프레션 통지를 제공한다. 이 임프레션 통지는 MPC 클러스터(130)가 예를 들어 스테이지 A의 후속 발생에서 수신된 미래의 디지털 컴포넌트 요청에 대한 선택 규칙을 시행할 수 있도록 하는 업데이트 파라미터들에 관한 정보를 MPC 클러스터(130)가 업데이트할 수 있도록 한다. 일부 구현에서, 애플리케이션(112)은 사용자가 디지털 컴포넌트를 클릭하는 것과 같이 디지털 컴포넌트와 상호작용할 때 상호작용 통지를 MPC 클러스터(130)에 제공할 수 있다. 일부 구현에서, 애플리케이션(112)은 MPC 클러스터(130)에 대한 처리/연산 비용 뿐만 아니라 모바일 장치에 대한 네트워크 통신 및 배터리/대역폭 소비의 수를 줄이기 위해 미래의 컴포넌트 요청 A 위에 피기백(piggy-back)함으로써 노출 또는 상호작용 알림 G를 MPC 클러스터(130)에 보낼 수 있다.
도 3은 클라이언트 장치로의 배포를 위해 디지털 컴포넌트를 선택하기 위한 예시적인 프로세스(300)의 업무 흐름 도면이다. 프로세스(300)의 동작들은 예를 들어 클라이언트 장치(110), MPC 클러스터(130)의 컴퓨팅 시스템들(MPC1 및 MPC2), 및 DSP들(150)에 의해 구현될 수 있다. 프로세스(300)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(300)의 동작들을 수행하게 할 수 있다. 비록 프로세스(300) 및 아래의 다른 프로세스들이 2개의 컴퓨팅 시스템 MPC 클러스터(130)의 관점에서 설명되어 있지만, 2개 이상의 컴퓨팅 시스템들을 갖는 MPC 클러스터들은 유사한 프로세스들을 수행하기 위해 사용될 수도 있다. 또한, 프로세스(300)의 동작들은 SSP들(170)에 의해 구현될 수 있다.
DSP(150)는 디지털 컴포넌트(302)에 대한 정보를 제공한다. 이 정보에는 디지털 컴포넌트에 대한 선택 값 및 추가 정보(예: 적격성 표현, 적격성 기준(eligibility criteria) 및/또는 조건에 대한 조건 데이터)가 포함될 수 있다. 일부 구현에서, DSP(150)는 SSP(간결성을 위해 도 3에 도시되지 않음)를 통해 선택 값 및 추가 정보를 MPC 클러스터(130)에 제공한다. 예를 들어, DSP(150)는 디지털 컴포넌트 요청에 응답하여 선택 값 및 추가 정보를 제공하고 그리고 선택 값에 대응하는 디지털 컴포넌트를 MPC 클러스터(130)에 저장되어야 하는 저장된 디지털 컴포넌트로 지정할 수 있다.
전술한 바와 같이, DSP(150)는 하나 이상의 디지털 컴포넌트에 대한 하나 이상의 디지털 컴포넌트 선택 아이템을 MPC 클러스터(130)에 제공할 수 있다. 각각의 디지털 컴포넌트 선택 아이템은 대응하는 디지털 컴포넌트, 선택 값 및 전술한 기타 정보를 가질 수 있다. 서로 다른 컨텍스트 환경에 대해 서로 다른 선택 값을 제공하기 위해, DSP(150)는 동일한 디지털 컴포넌트에 대해 복수의 디지털 컴포넌트 선택 아이템을 제공할 수 있으며, 각각의 디지털 컴포넌트 선택 아이템은 상이한 적격성 표현 또는 상이한 적격성 기준 및 상이한 선택 값을 가질 수 있다. MPC 클러스터(130)는 예를 들어 캐시와 같은 고속 메모리에 클라이언트 장치(110)로부터 수신된 미래의 디지털 컴포넌트 요청을 위한 디지털 컴포넌트 선택 아이템을 저장할 수 있다.
일부 구현들에서, DSP(150)는 디지털 컴포넌트에 대한 정적 선택 값 대신에 디지털 컴포넌트에 대한 값들의 디지털 컴포넌트 기반 벡터를 제공할 수 있다. 그러한 예들에서, 값들의 디지털 컴포넌트 기반 벡터는 선택 값 대신에 저장될 수 있다.
클라이언트 장치(110)는 콘텐츠를 수신한다(304). 예를 들어, 클라이언트 장치(110)는 웹 브라우저에 의한 디스플레이를 위한 전자 리소스(예를 들어, 웹 페이지) 또는 네이티브 애플리케이션에 의한 디스플레이를 위한 애플리케이션 콘텐츠를 수신할 수 있다. 콘텐츠는 실행될 때 클라이언트 장치(110)가 각 슬롯에 대한 디지털 컴포넌트를 요청하게 하는 컴퓨터-판독가능 코드, 예를 들어 스크립트들을 포함하는 하나 이상의 디지털 컴포넌트 슬롯을 포함할 수 있다. 클라이언트 장치(110)는 클라이언트 장치(110)의 디스플레이 상에 콘텐츠를 렌더링할 수 있다.
클라이언트 장치(110)는 사용자 그룹 식별자들의 세트를 식별한다(306). 사용자 그룹 식별자 세트는 애플리케이션(112) 또는 클라이언트 장치(110)의 사용자를 구성원으로 포함하는 사용자 그룹에 대한 사용자 그룹 식별자일 수 있다. 예를 들어, 사용자 그룹 식별자들의 세트는 사용자 그룹 리스트의 사용자 그룹 식별자들일 수 있다. 콘텐츠 또는 신뢰할 수 있는 프로그램을 렌더링하는 애플리케이션(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) 모두 비밀 쉐어들에 액세스할 수 없기 때문에, 컴퓨팅 시스템들 중 어느 것도 쿠쿠 필터 테이블을 재생성할 수 없어, 사용자 개인정보를 보호한다.
단계 306 및 308은 일부 구현에서 제외될 수 있는 선택적 단계이다. 예를 들어, MPC 클러스터(130)는 사용자의 사용자 그룹 멤버십을 고려하지 않고 디지털 컴포넌트를 제공할 수 있다. 사용 그룹 멤버십이 사용되는 구현에서, 클라이언트 장치(110)는 확률적 데이터 구조를 사용하는 것과는 다른 방식으로 사용자 그룹 멤버십 데이터를 암호화 및/또는 압축할 수 있다.
클라이언트 장치(110)는 MPC 클러스터(130)에 디지털 컴포넌트 요청을 전송한다(310). 디지털 컴포넌트 요청은 선택된 디지털 컴포넌트가 디스플레이될 컨텍스트와 관련된 컨텍스트 데이터, 예를 들어 선택된 디지털 컴포넌트가 디스플레이될 환경의 컨텍스트 속성을 포함할 수 있다. 컨텍스트 데이터는 디지털 컴포넌트가 디스플레이될 리소스에 대한 데이터, 클라이언트 장치(110)의 사용자에 대한 데이터, 디지털 컴포넌트를 표시할 애플리케이션(112)에 대한 데이터, 클라이언트 장치(110)에 대한 데이터, 및/또는 일반적인 컨텍스트 데이터(예: 날짜 및 시간)를 포함할 수 있다.
리소스에 대한 데이터는 리소스의 URL, 리소스의 주제(topic), 리소스의 디지털 컴포넌트 슬롯 수, 디지털 컴포넌트 슬롯의 유형, 디지털 컴포넌트 슬롯의 리소스 내 위치 등을 포함할 수 있다. 사용자에 대한 데이터에는 인구통계학적 데이터(예: 연령, 성별 등), 사용자 그룹 멤버십 및/또는 기타 적절한 사용자 데이터가 포함될 수 있다. 애플리케이션(112)에 대한 데이터는 애플리케이션의 이름(예를 들어, 특정 웹 브라우저 또는 네이티브 애플리케이션), 애플리케이션의 카테고리(예: 브라우저, 비디오 스트리밍 애플리케이션, 지도 애플리케이션 등) 및/또는 애플리케이션(112)에 대한 다른 적절한 데이터를 포함할 수 있다. 클라이언트 장치(110)에 관한 데이터는 클라이언트 장치(110)의 일반적인 영역, 클라이언트 장치(110)의 유형, 클라이언트 장치의 디스플레이 크기 등을 나타내는 대략적인 지리적 위치 정보(예: 시, 주, 우편번호 등)를 포함할 수 있다.
컨텍스트 및/또는 사용자 데이터의 일부 또는 전부가 사적인 것으로 간주될 수 있으므로, 클라이언트 장치(110)는 임의의 승인되지 않은 엔티티가 그러한 정보를 얻는 것을 방지하기 위해 암호화 또는 기타 기술을 사용하여 데이터를 전송할 수 있다. 이들 엔티티 및 MPC 클러스터(130)의 컴퓨팅 시스템 MPC1 및 MPC2가 클리어텍스트의 컨텍스트 데이터에 액세스하는 것을 방지하기 위해, 클라이언트 장치(110)는 컨텍스트 데이터의 각각의 쉐어, 예를 들어 비밀 쉐어를 생성하고 쉐어를 MPC 클러스터(130)의 각 컴퓨팅 시스템으로 전송할 수 있다. 예를 들어, 클라이언트 장치(110)는 컨텍스트 데이터의 제1 비밀 쉐어를 컴퓨팅 시스템 MPC1에 전송할 수 있고 컨텍스트 데이터의 제2 비밀 쉐어를 컴퓨팅 시스템 MPC2에 보낼 수 있다. 이러한 방식으로 무단 공모(unauthorized collusion)가 없으면 컴퓨팅 시스템 MPC1과 MPC2 모두 컨텍스트 데이터를 클리어텍스트로 재구성할 수 없다.
일부 구현에서, 애플리케이션(112)은 컴퓨팅 시스템 MPC1 및 MPC2가 플레인텍스트(plaintext)로 컨텍스트 데이터에 액세스할 수 있도록 하는 암호화 기술을 사용하여 암호화되거나 클리어텍스트로 컨텍스트 데이터의 일부를 전송하는 동안, 비밀 쉐어를 사용하여 컨텍스트 데이터의 일부, 예를 들어 민감한 것으로 간주되는 컨텍스트 데이터를 전송하도록 구성될 수 있다. 이는 MPC 클러스터(130)가 DSP(150)로의 분배를 위해 SSP(170)에 적어도 일부 컨텍스트 데이터를 전송할 수 있게 하여, DSP(150)가 이 컨텍스트 데이터를 사용하여 디지털 컴포넌트 및/또는 디지털 컴포넌트에 대한 선택 값을 선택할 수 있게 한다. 일부 구현에서, 클라이언트 장치(110) 또는 애플리케이션(112)은 컨텍스트 디지털 컴포넌트 요청을 생성하고, SSP(170)의 공개 키를 사용하여 블롭(blob)으로 암호화하고, 파라미터로서 디지털 컴포넌트 요청에 블롭을 삽입한다. 그러한 구현에서, MPC 클러스터(130)는 암호화된 블롭으로서 SSP(170)를 위해 의도된 컨텍스트 데이터를 클리어텍스트로 액세스하지 않고 포워딩할 수 있다.
사용자 그룹 구성원을 나타내는 확률적 데이터 구조를 포함하는 구현에서 디지털 컴포넌트 요청은 쿠쿠 필터에 대한 파라미터를 포함할 수 있다. 예를 들어, 클라이언트 장치(110)는 rand_varla, rand_varlb 및 rand_var2를 포함하는 디지털 컴포넌트 요청을 컴퓨팅 시스템(MPC1)에 전송할 수 있다. 클라이언트 장치(110)는 또한 벡터 B, rand_varla 및 rand_varlb를 포함하는 디지털 컴포넌트 요청을 컴퓨팅 시스템(MPC2)으로 전송할 수 있다. 두 디지털 컴포넌트 요청들은 또한, 예를 들어 전자 리소스의 URL, 리소스의 디지털 컴포넌트 슬롯들의 수, 클라이언트 장치(110)의 지리적 위치와 같은 컨텍스트 신호들, 및/또는 예를 들어 디지털 컴포넌트를 선택하는데 사용될 수 있는 질의 키와 같은 다른 적절한 컨텍스트 신호들을 포함할 수 있다.
MPC 클러스터(130)는 컨텍스트 디지털 컴포넌트 요청을 SSP(170)로 전송한다(312). 이 디지털 컴포넌트 요청은 컨텍스트 신호를 포함할 수 있지만, 사용자를 멤버쉽으로 포함하는 사용자 그룹을 식별하는 사용자 그룹 식별자와 같은 민감한 사용자 데이터는 포함하지 않는다. 예를 들어, 컨텍스트 디지털 컴포넌트 요청은 클라이언트 장치(110)로부터 수신된 클리어텍스트 컨텍스트 데이터를 포함할 수 있지만, 비밀 쉐어로서 클라이언트 장치(110)로부터 전송된 어떠한 컨텍스트 데이터도 포함하지 않을 수 있다. 일부 구현에서, 컨텍스트 디지털 컴포넌트 요청은 클라이언트 장치(110)에 렌더링된 게시자의 페이지에 있는 SSP의 태그에 의해 또는 클라이언트 장치(110)에 설치된 게시자의 애플리케이션에 있는 SSP의 소프트웨어 개발 키트(SDK)에 의해 생성되었다.
SSP(170)는 컨텍스트 디지털 컴포넌트 요청을 하나 이상의 DSP들(150)로 전송한다(314). 각 DSP(150)는 디지털 컴포넌트들에 대한 하나 이상의 조건부 선택 값들 및/또는 디지털 컴포넌트들에 대한 하나 이상의 무조건부 선택 값들로 요청에 응답할 수 있다. 각 디지털 컴포넌트에 대해, 응답은 디지털 컴포넌트를 식별하는 데이터, 디지털 컴포넌트에 대한 선택 값, 디지털 컴포넌트에 대한 메타데이터(또는 다른 추가 정보)를 포함할 수 있다. 예를 들어, 응답은 각 디지털 컴포넌트에 대한 디지털 컴포넌트 선택 아이템, 예를 들어 디지털 컴포넌트 정보 요소(dc_information_element)를 포함할 수 있다. 각 DSP(150)는 컨텍스트 신호들에 기초하여 디지털 컴포넌트 선택 프로세스에 포함을 위해 하나 이상의 디지털 컴포넌트들을 선택하고, 각 선택된 디지털 컴포넌트에 대한 선택 값을 결정하거나 식별할 수 있다. 일부 구현들에서, DSP(150)는 컨텍스트 신호들에 기초하여 하나 이상의 디지털 컴포넌트들 각각에 대한 컨텍스트 벡터를 생성할 수 있다.
각 DSP(150)는 그 응답을 SSP(170)에 전송할 수 있다(316). SSP(170)는 응답을 MPC 클러스터(130)로 전송할 수 있다(318). 전술한 바와 같이, DSP(150) 및/또는 SSP(170)는 예를 들어 MPC 클러스터(130)로부터 수신된 컨텍스트 데이터에 기초하여 선택된 디지털 컴포넌트가 클라이언트 장치(110)에 디스플레이될 환경에 대한 추가적인 컨텍스트 데이터를 추론할 수 있다. 만일 그렇다면, SSP(170)는 또한 MPC 클러스터(130)에 대한 응답으로 이 추가 컨텍스트 데이터를 포함할 수 있다.
MPC 클러스터(130)는 클라이언트 장치(110)에서의 디스플레이를 제공할 디지털 컴포넌트를 선택하기 위해 보안 MPC 프로세스를 수행한다(320). 이 선택은 예를 들어 적격성 표현 및/또는 적격성 기준을 사용하여 컨텍스트 신호에 기초하여 디지털 컴포넌트 선택 프로세스에 적격인 디지털 컴포넌트 선택 아이템을 식별하는 것과 같이 일련의 디지털 컴포넌트 및 그에 대응하는 선택 값을 식별하는 것을 포함할 수 있다. 이는 적격한 디지털 컴포넌트 선택 아이템 세트에서 선택 후보인 후보 디지털 컴포넌트 선택 아이템을 식별하는 것도 포함할 수 있다. 후보 디지털 컴포넌트 선택 아이템은 DSP(150)가 무조건(unconditional) 선택 값 또는 벡터를 제공한 무조건 디지털 컴포넌트 및 디지털 컴포넌트의 각 조건을 만족하는 조건부 디지털 컴포넌트를 포함할 수 있다. 조건부 디지털 컴포넌트 선택 아이템은 디지털 컴포넌트 선택 아이템의 모든 조건을 만족하는 경우에만 디지털 컴포넌트 선택 프로세스의 후보로 간주된다.
MPC 클러스터(130)는 후보 디지털 컴포넌트 선택 아이템들에 대한 선택 값들에 기초하여 디지털 컴포넌트 요청에 응답하여 클라이언트 장치(110)에 자신의 디지털 컴포넌트를 제공할 디지털 컴포넌트 선택 아이템들을 후보 디지털 컴포넌트 아이템들 중에서 선택할 수 있다. 벡터를 이용하여 결정된 선택값을 갖는 디지털 컴포넌트 선택 아이템에 대해, MPC 클러스터(130)는 벡터, 예를 들어 디지털 컴포넌트 기반 벡터, 컨텍스트 벡터 및 선택적으로 사용자 프로파일 벡터의 내적을 결정함으로써 디지털 컴포넌트 선택 아이템에 대한 선택 값을 결정할 수 있다.
MPC 클러스터(130)는 선택 결과의 비밀 쉐어를 클라이언트 장치(110)로 전송한다(322). 일부 구현에서, MPC 클러스터(130)는 또한 디지털 컴포넌트 선택 프로세스에 대한 선택 프로세스 식별자를 클라이언트 장치(110)에 전송할 수 있다. 선택 프로세스 식별자는 선택 결과가 생성된 디지털 컴포넌트 선택 프로세스를 고유하게 식별할 수 있다. 예를 들어, 컴퓨팅 시스템 MPC1 및 MPC2는 클라이언트 장치(110)에 제공할 선택 결과를 생성하기 위해 컴퓨팅 시스템 MPC1 및 MPC2가 선택 프로세스를 수행하는 각각의 디지털 컴포넌트 요청에 대한 각각의 선택 프로세스 식별자 SPID를 각각 생성할 수 있다. 일부 구현에서, 선택 프로세스 식별자 SPID는 난스(nonce) 또는 불투명 영숫자 또는 숫자 시퀀스일 수 있다.
전체 또는 대규모 디지털 컴포넌트 세트에 대한 정보가 아닌 선택한 디지털 컴포넌트에 대한 결과의 비밀 쉐어를 전송함으로써 유사하게 결과를 전송하고 수신할 때 대기 시간과 소비된 대역폭, 처리 전력 및 배터리 전력을 줄인다. 이는 또한 정보가 클라이언트 장치에 제공되는 디지털 컴포넌트의 수를 제한함으로써 MPC 클러스터(130)에 디지털 컴포넌트에 대한 선택 값을 제출하는 콘텐츠 플랫폼의 기밀 정보의 잠재적인 누출을 감소시킨다.
MPC 클러스터(130)는 또한 SPID들에 의해 키가 지정되거나 그렇지 않으면 SPID에 연결된 선택 프로세스의 일부인 선택 값들에 대한 데이터를 저장할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은 선택 프로세스를 위해 컴퓨팅 시스템(MPC1)에 의해 생성된 SPID1에 기초한 키를 갖는 선택 값들에 대한 데이터를 포함하는 테이블 또는 다른 데이터 구조를 저장할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 선택 프로세스를 위해 컴퓨팅 시스템(MPC2)에 의해 생성된 SPID2에 기초한 키를 갖는 선택 값들에 대한 데이터를 포함하는 테이블 또는 다른 데이터 구조를 저장할 수 있다. 이것은 MPC 클러스터(130)가 클라이언트 장치(110)로부터 수신된 데이터에 기초하여 피드백 제어기들에 대한 프로세스 변수들을 업데이트할 수 있게 한다. 일부 구현에서, 클라이언트 장치(110) 또는 애플리케이션(112)은 SPID를 생성한다. 일부 구현에서 MPC1 및 MPC2는 디지털 컴포넌트 요청(310)에서 SPID를 추론한다.
선택 결과는 선택 디지털 컴포넌트 선택 아이템의 디지털 컴포넌트에 대한 정보를 포함하는 바이트 어레이 형태일 수 있다. 예를 들어, 선택 결과는 디지털 컴포넌트에 대한 선택 값과 메타데이터 및/또는 디지털 컴포넌트에 대한 다른 추가 정보를 포함하는 바이트 어레이일 수 있다. 컴퓨팅 시스템 MPC1 및 MPC2는 보안 MPC 프로세스를 사용하여 아래에서 더 자세히 설명하는 바와 같이 선택 결과의 비밀 쉐어를 결정할 수 있다. 컴퓨팅 시스템 MPC1은 선택 결과의 제1 비밀 쉐어를 클라이언트 장치(110)에 전송할 수 있고, 컴퓨팅 시스템 MPC2는 선택 결과의 제2 비밀 쉐어를 클라이언트 장치(110)에 전송할 수 있다. 컴퓨팅 시스템 MPC1 및 MPC2가 선택된 디지털 컴포넌트를 아는 것을 방지하기 위해, 컴퓨팅 시스템 MPC1 및 MPC2는 선택 결과의 비밀 쉐어를 서로 쉐어하는 것을 방지할 수 있다. 예를 들어 MPC1 및 MPC2는 디지털 컴포넌트 요청의 파라미터가 될 수 있는 클라이언트 장치의 공개 키를 사용하여 각각의 비밀 쉐어를 독립적으로 암호화할 수 있다.
전체 또는 대규모 디지털 컴포넌트 세트에 대한 정보가 아닌 선택한 디지털 컴포넌트에 대한 결과의 비밀 쉐어를 전송함으로써 유사하게 결과를 전송하고 수신할 때 대기 시간과 소비된 대역폭, 처리 전력 및 배터리 전력을 줄인다. 또한 클라이언트 장치에 정보를 제공하는 디지털 컴포넌트의 수를 제한하여 디지털 컴포넌트에 대한 선택 값을 MPC 클러스터에 제출하는 콘텐츠 플랫폼의 기밀 정보 유출 가능성을 줄인다.
클라이언트 장치(110)는 선택 결과(들)에 대응하는 디지털 컴포넌트를 결정한다(324). 클라이언트 장치(110)가 컴퓨팅 시스템들(MPC1 및 MPC2)로부터 2개의 비밀 쉐어들을 수신하는 각각의 선택 결과에 대해, 클라이언트 장치(110)는 2개의 비밀 쉐어들로부터 선택 결과를 결정할 수 있다. 예를 들어, 아래에서 더 자세히 설명되는 추가 비밀 쉐어 라이브러리를 사용하여, 클라이언트 장치(110)는 선택 결과의 2개의 비밀 쉐어들을 함께 추가하여 비암호화 텍스트의 선택 결과를 얻을 수 있다. 이것은 디지털 컴포넌트에 대한 선택 값 및 디지털 컴포넌트에 대한 메타데이터, 예를 들어 디지털 컴포넌트의 아이덴티티, 클라이언트 장치(110)가 디지털 컴포넌트를 다운로드할 수 있는 위치, 등에 대한 액세스를 클라이언트 장치(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)의 동작들을 수행하게 할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트들에 대한 선택 값들을 결정 및/또는 식별한다(402). 컴퓨팅 시스템들(MPC1 및 MPC2)은 클라이언트 장치(110)로부터 수신된 디지털 컴포넌트 요청에 응답하여 선택 값들을 결정할 수 있다. 도 3을 참조하여 기술한 바와 같이, 컴퓨팅 시스템(MPC1)은 클라이언트 장치(110)의 사용자에 대한 사용자 그룹 식별자들을 나타내는 확률적 데이터 구조에 대한 컨텍스트 데이터 및 선택적으로 데이터를 포함하는 디지털 컴포넌트 요청을 클라이언트 장치(110)로부터 수신할 수 있다. 확률적 데이터 구조에 대한 데이터는 파라미터들(rand_varla, rand_varlb 및 rand_var2)을 포함할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 클라이언트 장치(110)로부터 컨텍스트 데이터 및 파라미터들(벡터 B, rand_varla 및 rand_varlb)를 수신할 수 있다. 컨텍스트 데이터는 전술한 바와 같이 선택된 디지털 컴포넌트가 디스플레이될 환경의 컨텍스트 속성을 포함할 수 있다.
클라이언트 장치(110)는 다양한 방식으로 컴퓨팅 시스템 MPC1 및 MPC2에 컨텍스트 데이터를 전송할 수 있다. 일부 구현들에서, 클라이언트 장치(110)는 컨텍스트 데이터의 제1 비밀 쉐어를 컴퓨팅 시스템 MPC1에 전송할 수 있고 컨텍스트 데이터의 제2 비밀 쉐어를 컴퓨팅 시스템 MPC2에 전송할 수 있다. 일부 컨텍스트 데이터가 민감하지 않은 것으로 간주되는 경우, 클라이언트 장치(110)는 이러한 민감하지 않은 컨텍스트 데이터를 각 컴퓨팅 시스템 MPC1 및 MPC2에 클리어텍스트로 보낼 수 있다.
일부 구현에서, 클라이언트 장치(110)는 컨텍스트 속성을 벡터로 인코딩하고 벡터를 각각의 컴퓨팅 시스템 MPC1 및 MPC2로 보내거나 벡터의 각각의 비밀 쉐어를 컴퓨팅 시스템 MPC1 및 MPC2로 보낼 수 있다. 벡터의 요소(및 선택적으로 벡터 형식이 아닌 경우)는 정수로 표현할 수 있다. 예를 들어 위치는 가능한 각 위치에 정수를 할당하거나 해당 위치의 우편 번호를 사용하여 정수로 표현할 수 있다.
선택 값은 각 컴퓨팅 시스템 MPC1 및 MPC2에 의해 데이터가 저장되는 저장된 디지털 컴포넌트에 대한 선택 값 및 SSP(170)로부터 디지털 컴포넌트 선택 프로세스를 위해 수신된 JIT 선택 값을 포함할 수 있다. 선택 값이 벡터를 사용하여 결정되는 상황에 대해, 각 컴퓨팅 시스템 MPC1 및 MPC2는 디지털 컴포넌트에 대한 벡터의 내적을 결정하여 선택 값을 결정할 수 있다.
컴퓨팅 시스템 MPC1은 적격한 디지털 컴포넌트(eligible digital components)를 식별한다(404). 컴퓨팅 시스템 MPC2는 적격한 디지털 컴포넌트도 식별한다(406). 적격한 디지털 컴포넌트는 디지털 컴포넌트 요청의 컨텍스트 데이터를 기반으로 선택할 수 있는 디지털 컴포넌트 선택 아이템이 있는 디지털 컴포넌트이다.
일부 구현에서, 컴퓨팅 시스템 MPC1 및 MPC2는 각각의 저장된 및/또는 JIT 디지털 컴포넌트가 디지털 컴포넌트에 대한 적격성 표현을 사용하여 적격한지 여부를 결정한다. 적격성 검사(eligibility check)의 출력은 디지털 컴포넌트 선택 아이템(및 해당 디지털 컴포넌트 및 해당 선택 값)이 디지털 컴포넌트 요청에 응답하여 디스플레이하기 위해 클라이언트 장치(110)로의 배포를 위한 선택에 적격인지 여부를 나타내는 적격성 파라미터(eligibility parameter)일 수 있다. 일부 구현에서, 디지털 컴포넌트 선택 아이템 "i"에 대한 적격성 파라미터(eligbility_checki)는 클리어텍스트일 수 있다. 일부 구현에서, 디지털 컴포넌트 선택 아이템 i에 대한 자격 파라미터(eligbility_checki)는 비밀 쉐어에 있을 수 있으며, 컴퓨팅 시스템 MPC1은 제1 비밀 쉐어[eligbility_checki.1]를 갖고 컴퓨팅 시스템 MPC2는 제2 비밀 쉐어[eligbility_checki.2]를 갖는다. 대괄호는 파라미터의 비밀 쉐어를 나타내는 데 사용된다. 디지털 컴포넌트인지 여부를 결정하기 위한 예시적인 프로세스는 도 5를 참조하여 설명된다.
각각의 적격한 디지털 컴포넌트에 대해, 컴퓨팅 시스템들(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]을 연산한다.
Figure pct00002
관계 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]를 연산한다.
Figure pct00003
여기서 [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)은 블룸 필터에 질의할 수 있다. 결과는 컴퓨팅 시스템(MPC1)이 블룸 필터의 각 해시 함수에 대해 사용자 그룹 멤버쉽 조건 파라미터의 제 1 비밀 쉐어[ug_checki,1]를 갖는다는 것이다. 유사하게, 컴퓨팅 시스템(MPC2)은 블룸 필터의 각 해시 함수에 대해 사용자 그룹 멤버쉽 조건 파라미터의 제 2 비밀 쉐어[ug_checki,2]를 갖는다. 디지털 컴포넌트가 사용자 그룹 멤버쉽 조건을 충족하기 위해, 블룸 필터의 각 해시 값에 대한 사용자 그룹 멤버쉽 조건 파라미터, 즉 ug_checki는 참인 부울 값, 즉 1을 가질 필요는 없을 것이다. 사용자가 특정 사용자 그룹에 속하는지 검사하기 위해, Bloom 필터에 N개의 어레이 인덱스로 해시하는 N개의 해시 함수가 있다고 가정하고 해당 N 인덱스의 모든 부울 값이 1 또는 참(True)이여야 한다. 구현 수준에서, 각 ug_check 파라미터는 N 비밀 쉐어의 비트 AND(bitwise AND) 결과일 수 있다. 각 해시 값에 대한 비밀 쉐어들은 디지털 컴포넌트 선택 아이템에 대한 후보 파라미터의 비밀 쉐어들의 최종 연산에 포함될 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 또한 빈도 제어들 또는 뮤팅에 따라 조건이 지정되는 각각의 디지털 컴포넌트 선택 아이템(i)에 대한 차단된 디지털 컴포넌트 파라미터(blocked_checki)의 각각의 비밀 쉐어들([blocked_checki,1] 및 [blocked_checki,2])를 연산하기 위해 협력할 수 있다. 두 개의 비밀 쉐어들의 조합은 디지털 컴포넌트가 빈도 제어들(예: 디지털 컴포넌트가 기간 동안 임계 횟수 이상 사용자에게 제공되지 않은)를 기반으로 및/또는 사용자가 디지털 컴포넌트를 사용자에게 표시하지 않도록 선택했는지 여부에 기반으로, 차단된 디지털 컴포넌트 조건을 충족하는지 여부를 나타내는 부울 값일 수 있다. 예를 들어, 참의 부울 값, 즉 1의 값은 이들 요소들을 기반으로 디지털 컴포넌트가 사용자에게 디스플레이될 수 있음을 나타내고, 거짓의 부울 값, 즉 0의 값은 디지털 컴포넌트가 이들 요소들을 기반으로 사용자에게 표시될 수 없음을 나타낼 수 있다.
차단된 디지털 컴포넌트 파라미터의 비밀 쉐어들을 결정하기 위해, 컴퓨팅 시스템들(MPC1 및 MPC2)은 차단된 디지털 컴포넌트들에 대한 식별자들을 나타내는 블룸 필터의 쉐어들, 예를 들어 어레이들을 사용할 수 있다. 애플리케이션(112)은 차단된 디지털 컴포넌트들에 대한 식별자들을 나타내는 블룸 필터를 생성하고, 블룸 필터를 나타내는 데이터를 컴퓨팅 시스템들(MPC1 및 MPC2)에 전송할 수 있다. 컴퓨팅 시스템들(MPC1 및 MPC2)은 비밀 쉐어들([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])을 연산함으로써, 확률은 높게 설정된다. 캠페인이 배송 일정보다 늦어지면, 확률이 낮아진다.
컴퓨팅 시스템들(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)은 디지털 컴포넌트에 대응하는 디지털 컴포넌트 선택 아이템에 대한 각 조건의 파라미터의 대응하는 비밀 쉐어를 저장할 수 있다. 이러한 방식으로, 적어도 하나의 MPC 컴퓨팅 시스템이 정직한 한, 컴퓨팅 시스템들(MPC1 및 MPC2) 중 어느 것도 비암호화 텍스트의 파라미터 값을 알지 못한다. 각 디지털 컴포넌트 선택 아이템은 0개 이상의 조건들에서 조건이 지정될 수 있다. 소정의 디지털 컴포넌트 선택 프로세스에 대해, 일부 디지털 컴포넌트 선택 아이템은 다른 디지털 컴포넌트 선택 아이템과 다른 조건들 및/또는 다른 양의 조건들을 가질 수 있다.
일부 구현에서, 디지털 컴포넌트 선택 아이템이 디지털 컴포넌트 선택 프로세스에 포함되기 위해 충족해야 하는 유일한 조건은 컨텍스트 데이터를 기반으로 하는 적격성 조건이다. 이 예에서 다른 조건(예: k-익명성, 페이싱 등)은 고려되지 않는다.
일부 예시적인 조건들이 위에 제공되었지만, 다른 조건들도 사용될 수 있다. 일반적으로 컴퓨팅 시스템들(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
이 예에서는 AND 연산자만 사용되지만 OR, XOR 및 NOT과 같은 다른 부울 연산자도 사용할 수 있다. 각 조건 파라미터의 값이 비밀 쉐어들에 존재하기 때문에, 컴퓨팅 시스템들(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)에서 후보 적격성에 대해 평가된 후보 디지털 컴포넌트들 및 다른 디지털 컴포넌트들을 포함할 수 있다. 예를 들어 이러한 순서는 예를 들어, 디지털 컴포넌트 선택 프로세스에 이용 가능한 모든 이용 가능한 디지털 컴포넌트, 디지털 컴포넌트 선택 프로세스에 적격한 모든 디지털 컴포넌트(예: 컨텍스트 데이터를 기반으로 적격) 또는 MPC 클러스터(130)에 의해 유지되는 모든 디지털 컴포넌트를 포함할 수 있다. 순서는 최상위 선택 값을 갖는 디지털 컴포넌트 선택 아이템에서 최하위 선택 값을 갖는 디지털 컴포넌트 선택 아이템까지일 수 있다. 일부 구현들에서, 순서에 사용되는 선택 값들은 예를 들어 DSP(150) 및/또는 SSP(170)와의 임의의 쉐어 및 선택된 디지털 컴포넌트가 디스플레이될 리소스의 발행인(140)에 제공될 값일 수 있다.
선택 값들이 비암호화 텍스트(클리어텍스트)로 되어 있기 때문에, 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트 선택 아이템들의 순서를 결정하기 위해 임의의 왕복 연산들을 수행할 필요가 없다. 대신, 각 컴퓨팅 시스템들(MPC1 및 MPC2)은 선택 값들을 독립적으로 순서를 정할 수 있다. 선택 값들이 각 컴퓨팅 시스템(MPC1 및 MPC2)에 비밀 쉐어들로 저장되고, 각 컴퓨팅 시스템들(MPC1 및 MPC2)이 각 선택 값의 각각의 비밀 쉐어를 갖는 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 선택 값에 기초하여 디지털 컴포넌트 선택 아이템의 순서를 정하기 위해 왕복 연산을 사용하여 보안 MPC 프로세스를 수행할 수 있다. 둘 이상의 선택 값들 사이에 동점(tie)이 존재하는 경우, 컴퓨팅 시스템들(MPC1 및 MPC2)은 이들 선택 값들에 대응하는 디지털 컴포넌트 선택 아이템들에 대한 다른 메타데이터를 사용하여 결정론적으로 동점을 깰 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각 후보 디지털 컴포넌트 선택 아이템에 대한 누적 값(accumulated value)의 비밀 쉐어들을 결정한다(414). 개념적으로, 소정의 디지털 컴포넌트 선택 아이템에 대한 누적 값은, 소정의 디지털 컴포넌트 선택 아이템이 후보일지라도 소정의 디지털 컴포넌트 선택 아이템을 제외하고, 소정의 디지털 컴포넌트 선택 아이템에 대한 순서의 상부로부터 선택 값까지의 후보 디지털 컴포넌트 선택 아이템의 총수를 나타낸다. 즉, 누적된 값은 소정의 디지털 컴포넌트 선택 아이템보다 선택에 더 적격인 후보 디지털 컴포넌트 선택 아이템의 수를 나타낸다. 이 개념은 아래 표 1에 도시되어 있다.
순서가 정해진 선택 값들 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 예와 관련하여 이루어질 것이다.
개념적으로, 표 1에서, 누적 값(acc)은 순서의 상위에서 순서의 하한으로 진행함에 따라 1과 동일한 후보 파라미터(is_dc_a_candidate)를 갖는 각 디지털 컴포넌트 선택 아이템에 대해 증분된다. 아래에서 기술된 것처럼, 누적 값들(acc)의 연산은 비밀 쉐어들에서 수행된다. 예를 들어, 최상위 선택 값을 갖는 디지털 컴포넌트 선택 아이템에 대한 누적 값(acc)은, 최상위 선택 값에 대한 후보 파라미터(is_dc_a_candidate)가 0과 같기 때문에, 0이다. 제 2의 최상위 디지털 컴포넌트 선택 아이템(제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의 값을 갖는다.
표 1을 사용하여, 컴퓨팅 시스템들(MPC1 및 MPC2)은, 표 1의 네 번째 열에 표시된 바와 같이, 클라이언트 장치(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)은 표 1을 참조하여 위에서 기술한 바와 같이, 각 디지털 컴포넌트 선택 아이템(i)에 대해 모든 디지털 컴포넌트들을 순서상 최상위에서 최하위로 가로지르고, 도중에 디지털 컴포넌트 선택 아이템에 대한 후보 파라미터(is_dc_a_candidate)를 합산함으로써, 누적된 값(acc)의 제 1 쉐어([acci,1])를 결정할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 각 디지털 컴포넌트 선택 아이템(i)에 대해 순서상 최상위로부터 최하위로 모든 디지털 컴포넌트들을 가로지르고(traversing), 도중에 디지털 컴포넌트 선택 아이템에 대한 후보 파라미터(is_dc_a_candidate)를 합산함으로써, 누적된 값(acc)의 제 2 쉐어([acci,2])를 결정할 수 있다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각각의 디지털 컴포넌트 선택 아이템에 대해 누적된 값이 지정된 값을 갖는지 여부를 나타내는 결과의 비밀 쉐어들을 결정한다(416). 지정된 값은 표 1의 3열과 4열에서와 같이 0의 값이 될 수 있다. 위에서 설명한 바와 같이, 누적 값이 0이고 전체 후보 파라미터(is_dc_a_candidate)가 1인 디지털 컴포넌트 선택 아이템은 후보 디지털 컴포넌트 선택 아이템 중에서 최상위 선택 값을 갖는 디지털 컴포넌트 선택 아이템이다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 각각의 디지털 컴포넌트 선택 아이템(i)에 대한 비밀 쉐어들의 관점에서 등식 연산(acci == 0)을 연산하기 위한 보안적 MPC 프로세스의 일부로서 다중 라운드들의 연산들, 예를 들어 다중 RPC들에 참여할 수 있다. 등식 연산은 디지털 컴포넌트 선택 아이템(i)에 대한 누적 값(acci)이 0의 값을 갖는지 여부를 결정하는데 사용된다. 이 프로세스의 마지막에, 컴퓨팅 시스템(MPC1)은 각 디지털 컴포넌트 선택 아이템(i)에 대해, 결과(acci == 0)의 하나의 비밀 쉐어를 갖고, 컴퓨팅 시스템(MPC2)은 각 디지털 컴포넌트 선택 아이템(i)에 대해 결과(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과 같다.
컴퓨팅 시스템들(MPC1 및 MPC2)은 선택 결과를 결정한다(420). 일부 구현들에서, 컴퓨팅 시스템들(MPC1 및 MPC2)은 디지털 컴포넌트 선택 아이템들에 대한 승자 파라미터 및 디지털 컴포넌트들에 대한 디지털 컴포넌트 정보 요소(dc_information_element)에 기초하여 선택 결과를 연산할 수 있다. 전술한 바와 같이, 디지털 컴포넌트에 대한 디지털 컴포넌트 정보 요소(dc_information_element)는 디지털 컴포넌트에 대한 선택 값 및 디지털 컴포넌트에 대한 다른 데이터를 포함할 수 있다.
개념적으로, 컴퓨팅 시스템들(MPC1 및 MPC2)은 아래의 관계 4를 사용하여 선택 결과 파라미터("result")를 연산할 수 있다.
Figure pct00004
즉, 컴퓨팅 시스템들(MPC1 및 MPC2)은 모든 디지털 컴포넌트 선택 아이템들에 걸쳐 승자 파라미터(is_dc_the_winneri)와 디지털 컴포넌트 정보 요소(dc_information_elementi)의 곱의 합을 결정할 수 있다. 이 예에서, 선택 결과는 후보 디지털 컴포넌트가 없는 경우 0의 값을 갖거나, 1과 동일한 승자 파라미터(is_dc_the_winneri)를 갖는 선택된 디지털 컴포넌트 선택 아이템의 디지털 컴포넌트 정보 요소(dc_information_element)와 동일한 값을 가질 것이다. 다른 예에서, 디지털 컴포넌트 정보 요소(dc_information_element)는 관계 4에서 디지털 컴포넌트들에 대한 선택 값들로 대체될 수 있다. 이 예에서, 선택 결과는 후보 디지털 컴포넌트 선택 아이템이 없는 경우 0의 값을 갖거나, 1과 동일한 승자 파라미터(is_dc_the_winneri)를 갖는 선택된 디지털 컴포넌트 선택 아이템의 선택 값과 동일한 값을 갖질 것이다.
비밀 쉐어들에서 연산을 수행하기 위해 컴퓨팅 시스템(MPC1)은 모든 디지털 컴포넌트 선택 아이템들을 취하고, 비암호화 텍스트일 수 있는 디지털 컴포넌트 선택 아이템에 대한 디지털 컴포넌트 정보 요소(dc_information_elementi)에, 디지털 컴포넌트 선택 아이템에 대한 승자 파라미터의 제 1 비밀 쉐어([is_dc_the_winneri,1])를 곱한다. 컴퓨팅 시스템(MPC1)은 그 다음 이들 곱들의 합을 결정할 수 있고, 그 합을 디지털 컴포넌트 요청을 제출한 클라이언트 장치(110)에 리턴할 수 있다. 즉, 컴퓨팅 시스템(MPC1)은 결과의 제 1 비밀 쉐어([result1])로서 아래의 관계 5를 사용하여 합계를 결정할 수 있다.
Figure pct00005
컴퓨팅 시스템(MPC2)은 아래의 관계 6을 사용하여 결과의 제 2 비밀 쉐어([result2])를 결정하기 위해 유사한 연산을 수행할 수 있다.
Figure pct00006
일부 구현에서, MPC 클러스터(130)의 성능은 비밀 쉐어에서 수행되는 곱셈을 비트 AND 연산으로 대체하고 합계를 비트 XOR 연산으로 대체함으로써 (예: 컴퓨팅 시스템 MPC1과 MPC2 간의 연산 및 왕복 통신을 줄임으로써) 개선될 수 있다. 일부 구현에서 왜곡된 회로를 사용하여 다양한 관계를 평가할 수 있으므로 연산 및 왕복 통신이 감소한다. 예를 들어, MPC1은 왜곡된 회로(garbled circuits) 구현에서 가블러(garbler) 역할을 할 수 있고 MPC2는 평가자(evaluator) 역할을 할 수 있다.
컴퓨팅 시스템(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]와 동등하다. 이는 개인 정보 검색 보장을 유지하면서 가장 큰 크리에이티브의 크기에 필요한 대역폭을 감소시킨다. 이것은 위에서 설명한 것처럼 선택 결과의 두 개의 비밀 쉐어들을 전송하는 것에 비해 응답의 대역폭을 감소시킨다. 이러한 방식으로, 다른 프로세스에서와 같이 디지털 컴포넌트 크리에이티브를 전송하는 것과 관련하여 이 개인 정보 보호 기술에서 추가 대기 시간 또는 대역폭 소비가 거의 또는 전혀 없다.
도 5는 디지털 컴포넌트가 선택에 적격인지를 결정하기 위한 예시적인 프로세스의 다이어그램이다. 프로세스(500)의 동작들은 예를 들어, MPC 클러스터(130)의 컴퓨팅 시스템들(MPC1 및 MPC2)에 의해 구현될 수 있다. 프로세스(500)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독가능 매체에 저장된 명령들로 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(500)의 동작들을 수행하게 할 수 있다.
컴퓨팅 시스템 MPC1은 선택된 디지털 컴포넌트가 클라이언트 장치에 디스플레이될 환경의 컨텍스트 속성 세트를 획득한다(502). 컴퓨팅 시스템 MPC2는 또한 동일한 컨텍스트 속성 세트를 획득한다(504).
컨텍스트 속성 세트는 클라이언트 장치(110) 및/또는 콘텐츠 플랫폼, 예를 들어 SSP(170) 및/또는 하나 이상의 DSP(150)로부터 수신될 수 있다. 예를 들어, 클라이언트 장치(110)는 컴퓨팅 시스템 MPC1 및 MPC2에 디지털 컴포넌트 요청과 함께 컨텍스트 속성 세트를 제공할 수 있다. 콘텐츠 플랫폼은 위에서 설명한 대로 환경에 대한 컨텍스트 속성을 추론할 수도 있다. 위에서 설명한 바와 같이, 컨텍스트 속성은 디지털 컴포넌트가 디스플레이될 리소스에 대한 데이터, 클라이언트 장치(110)의 사용자에 대한 데이터, 디지털 컴포넌트를 표시할 애플리케이션(112)에 대한 데이터, 클라이언트 장치(110)에 대한 데이터, 및/또는 일반적인 컨텍스트 데이터(예: 날짜 및 시간)를 포함할 수 있다.
속성 세트는 속성 벡터 형식일 수 있다. 일부 구현에서, 각각의 컴퓨팅 시스템 MPC1 및 MPC2는 컨텍스트 속성 세트의 각각의 비밀 쉐어, 예를 들어 컨텍스트 속성 벡터의 각각의 비밀 쉐어를 수신한다.
컴퓨팅 시스템 MPC1은 디지털 컴포넌트 선택 아이템에 대한 적격성 데이터(eligibility data)를 획득한다(506). 컴퓨팅 시스템 MPC2는 또한 디지털 컴포넌트 선택 아이템에 대한 적격성 데이터를 획득한다(508). 적격성 데이터는 적격성 표현 및/또는 디지털 컴포넌트 선택 아이템의 선택 값 및 디지털 컴포넌트가 디지털 컴포넌트 선택 프로세스에 포함될 수 있는 컨텍스트 환경을 정의하는 적격성 기준을 포함할 수 있다.
적격성 표현은 부울 AND, 부울 OR 및 단항 부울(unary Boolean) NOT와 같은 각 하위 표현들 쌍 사이의 부울 연산자와 적격성 기준을 기반으로 하는 하위 표현식을 포함하는 부울 표현의 형식일 수 있다. 부울 NOT 연산자는 여러 파라미터에 대한 연산이 아닌 단일 파라미터에 대해 연산할 수 있다. 각 하위 표현(sub-expression)은 하나 이상의 컨텍스트 속성을 기반으로 할 수 있다. 예를 들어, 하나의 하위 표현은 디지털 컴포넌트를 표시할 클라이언트 장치(110)의 지리적 위치가 특정 지리적 영역에 위치하도록 요청할 수 있으며 그리고 다른 하위 표현은 디지털 컴포넌트가 디스플레이될 리소스의 주제(topic)가 주제들의 세트 중 하나를 가질 것을 요청할 수 있다. 이 예에서 적격성 표현은 "클라이언트 장치의 위치 = 특정 지리적 지역 AND 리소스 주제(resource topic) ∈ 주제들의 세트"와 같이 나타낼 수 있다.
경우에 따라, 예를 들어 디지털 컴포넌트 선택 아이템의 적격성이 단일 컨텍스트 속성에 따라 결정되는 경우 적격성 표현에는 단일 하위 표현만 포함될 수 있다. 그러나 MPC 클러스터(130)는 임의의 부울 표현, 예를 들어 디지털 컴포넌트가 리소스와 함께 표시되는 방법에 대한 미세한 제어(fine grain control)를 제공하기 위해 하위 표현들 사이의 논리 연산자 및 다중 하위 표현을 포함하는 부울 표현을 지원할 수 있다.
일부 구현에서 콘텐츠 플랫폼은 디지털 컴포넌트에 대한 적격성 표현을 제공한다. 이러한 경우 비즈니스 기밀 정보를 보호하기 위해 콘텐츠 플랫폼은 적격성 표현의 각각의 비밀 쉐어와 해당 적격성 기준을 컴퓨팅 시스템 MPC1 및 MPC2에 제공할 수 있다. 이 예에서 컴퓨팅 시스템 MPC1은 적격성 표현의 제1 비밀 쉐어와 적격성 기준의 제1 비밀 쉐어를 수신한다. 마찬가지로, 컴퓨팅 시스템 MPC2는 적격성 표현의 제2 비밀 쉐어와 적격성 기준의 제2 비밀 쉐어를 수신한다.
콘텐츠 플랫폼은 클리어텍스트로 적격성 표현 및 적격성 기준을 제공할 수도 있다. 예를 들어, 콘텐츠 플랫폼은 스크립트 기능 또는 기타 컴퓨터 판독 가능 코드의 형태로 적격성 표현을 제공할 수 있다. 이러한 예에서, 컴퓨팅 시스템 MPC1 및 MPC2는 샌드박스 환경에서 스크립트 또는 기타 코드를 실행하여 디지털 컴포넌트 선택 아이템이 적격한지 여부를 결정할 수 있다. 샌드박스 환경은 다른 코드 실행과 격리될 수 있다. 샌드박스 환경을 사용하면 예를 들어 사용자 데이터 프라이버시를 보호하고 컴퓨팅 시스템 MPC1 및 MPC2를 악성 코드로부터 보호하기 위해 스크립트가 입력/출력 요청을 하거나 샌드박스 환경에 제공되지 않은 데이터를 가져오는 것을 방지할 수 있다.
일부 구현에서, MPC 클러스터(130)는 콘텐츠 플랫폼에 의해 제공되는 적격성 기준 및/또는 적격성 표현에 기초하여 적격성 표현을 구축한다. 예를 들어, DSP(150)는 디지털 컴포넌트 중 하나에 대해 디지털 컴포넌트가 적격한 시기를 정의하는 하위 표현을 제공할 수 있다. 유사하게, SSP(170)는 리소스에 대해 리소스와 함께 표시되도록 허용되지 않는 디지털 컴포넌트의 속성을 정의하는 하위 표현을 제공할 수 있다. 디지털 컴포넌트 요청이 리소스와 함께 디지털 컴포넌트를 표시하기 위한 것일 때, MPC 클러스터(130)는 리소스에 대한 하위 표현(들)과 디지털 컴포넌트에 대한 하위 표현(들)에 액세스하고 적격성 표현을 구축할 수 있다. 예를 들어, 컴퓨팅 시스템 MPC1 및 MPC2는 디지털 컴포넌트가 리소스와 함께 디스플레이 할 수 있도록 두 세트의 하위 표현을 만족시켜야하므로 AND 연산자를 사용하여 SSP(170)에 대한 하위 표현(들)을 DSP(150)에 대한 하위 표현(들)과 결합할 수 있다. 적격성 표현이 비밀 쉐어를 사용하여 컴퓨팅 시스템 MPC1 및 MPC2에 제공되는 경우, 컴퓨팅 시스템 MPC1 및 MPC2는 아래에 설명된 대로 보안 MPC 프로세스를 사용하여 하위 표현의 두 세트가 모두 충족되는지 여부를 평가할 수 있다.
적격성 표현을 사용하면 대용량 캐시 조회 키 사용에 비해 컴퓨팅 시스템 MPC1 및 MPC2에서 저장하는 데이터의 양이 줄어든다. 이는 또한 컴퓨팅 시스템 MPC1 및 MPC2의 데이터 저장 요구 사항을 증가시키지 않고 디지털 컴포넌트의 디스플레이에 대한 게시자 및 디지털 컴포넌트 공급자 제어의 유연성을 증가시키며, 이는 컴퓨팅 시스템 MPC1 및 MPC2가 더 많은 디지털 컴포넌트, 디지털 컴포넌트에 대한 정보 및/또는 고속 메모리, 예를 들어 고속 캐시에 다른 관련 정보를 저장할 수 있게 한다.
MPC 클러스터(130)는 다양한 유형의 하위 표현을 지원할 수 있고 적격성 기준의 비밀 쉐어에 기초하여 보안 MPC 프로세스를 사용하여 각각의 유형을 평가할 수 있다. 일부 예제 유형에는 SIC(set intersection checks), 동등성 테스트, 비교 및 진리표가 포함된다.
SIC(set intersection checks)를 사용하여 속성이 속성 세트의 구성원인지 여부를 결정할 수 있다. 이는 디지털 컴포넌트에 리소스 게시자(publisher)가 해당 리소스와 함께 표시되기를 원하지 않는 속성이 있는지 여부를 결정하는 데 사용할 수 있다. 예를 들어 게시자는 특정 아이템과 관련된 콘텐츠가 있는 디지털 컴포넌트를 차단할 수 있다. SIC(set intersection checks)는 특정 아이템이 디지털 컴포넌트에 대한 속성 세트의 속성 중 하나와 일치하는지 확인하는 데 사용할 수 있다.
각 디지털 컴포넌트 선택 아이템에는 Sdcsi로 표시될 수 있는 속성 세트가 있을 수 있다. 디지털 컴포넌트의 일부 속성은 게시자(publisher)를 대신하여 SSP(170)에 의해 결정되고 디지털 컴포넌트 선택 아이템에 첨부될 수 있다. 예를 들어, 디지털 컴포넌트 검토 프로세스 동안, SSP(170)는 디지털 컴포넌트가 특정 아이템에 관한 것이라고 결정할 수 있고 특정 아이템을 SSP-결정 속성 중 하나로 디지털 컴포넌트 선택 아이템에 첨부할 수 있다. SSP 결정 속성 세트는 Sdcsi,SSP라고 할 수 있다.
SSP(170)는 예를 들어 표현 P ∈ Sdcsi를 제공함으로써 퍼블리셔(게시자)의 리소스에서 특정 아이템과 관련된 디지털 컴포넌트를 선택하지 않도록 MPC 클러스터(130)에 명령할 수 있으며, 여기서 P는 제외된 속성(즉, 특정 아이템)을 나타내고, Sdcsi는 디지털 컴포넌트의 속성을 나타내며, 이는 SSP(170)에 의해 추론된 속성을 포함할 수 있다. SSP(170)는 속성이 디지털 컴포넌트의 속성 세트에 있으면 디지털 컴포넌트가 선택에 적합하지 않다고 MPC 클러스터(130)에 지시할 수 있다.
유사하게, 디지털 컴포넌트의 일부 속성은 디지털 컴포넌트를 발행하는 디지털 컴포넌트 제공자(160)를 대신하여 DSP(150)에 의해 결정되고 디지털 컴포넌트 선택 아이템에 첨부될 수 있다. DSP가 디지털 컴포넌트가 스포츠 관련 리소스와 함께 표시되기를 원하는 경우, DSP(150)는 디지털 컴포넌트 선택 아이템에 "스포츠" 속성을 DSP 결정 속성 중 하나로 추가할 수 있다. DSP 결정 속성 세트는 Sdcsi,DSP라고 할 수 있다.
DSP(150)는 특정 속성, 예를 들어 "스포츠"가 디지털 컴포넌트 요청에 대한 컨텍스트 속성 세트에 포함되는 경우 디지털 컴포넌트가 선택에 적합하도록 MPC 클러스터(130)에 지시할 수 있다. 그렇게 하기 위해, DSP(150)는 표현 P ∈ Sdcsi를 제공할 수 있는데, 여기서 P는 디지털 컴포넌트가 적격한 하나 이상의 원하는 속성(즉, 스포츠)을 나타내고, Sdcsi는 디지털 컴포넌트의 속성을 나타낸다. DSP(150)는 속성이 디지털 컴포넌트의 속성 세트에 있으면 디지털 컴포넌트가 선택에 적격하지 않다고 MPC 클러스터(130)에 지시할 수 있다.
속성에 특정 값이 있는지 여부를 결정하기 위해 동등성 테스트를 사용할 수 있다. 예를 들어, 클라이언트 장치(110)의 지리적 위치는 많은 다른 값을 가질 수 있는 반면, DSP(150)는 가능한 위치 중 하나에서 적격한 디지털 컴포넌트에 대한 특정 선택 값만을 원할 수 있다. 동등성 테스트는 컨텍스트 속성 세트 내의 특정 속성이 특정 값을 갖는지 여부 또는 디지털 컴포넌트 속성의 특정 속성이 특정 값을 갖는지 여부를 결정하는 데 사용할 수 있다. 콘텐츠 플랫폼은 컨텍스트 속성 또는 디지털 컴포넌트의 속성 중 어느 하나의 특정 속성이 특정 값을 갖는지를 결정하기 위해 동등성 테스트를 수행하도록 MPC 클러스터(130)에 지시할 수 있다.
속성은 잘 정의된 비교 테스트를 사용하여 서수(ordinal)가 될 수 있다. 예를 들어, 디지털 컴포넌트 선택 아이템이 60세 이상의 사용자에게만 유효한 경우, 디지털 컴포넌트 선택 아이템은 값이 60인 "최소 연령(minimum age)" 속성을 가진 표현을 가질 수 있다. DSP(150)는 최소 연령 속성을 컨텍스트 속성 세트에 포함될 수 있는 사용자의 나이와 비교하도록 MPC 클러스터(130)에 지시할 수 있다.
콘텐츠 플랫폼은 하나 이상의 SIC(set intersection checks), 하나 이상의 동등성 테스트 및/또는 하나 이상의 비교를 포함하여 여러 유형의 하위 표현을 포함하는 적격성 표현을 생성할 수 있다. 이를 통해 디지털 컴포넌트가 디스플레이될 수 있는 컨텍스트와 게시자 리소스(publisher resources)에 표시되는 디지털 컴포넌트의 콘텐츠를 세밀하게(fine-grained) 제어할 수 있다. 식의 예는 "특정 아이템
Figure pct00007
Sdcsi AND 특정 상태 = 클라이언트 장치의 위치 AND 사용자의 나이 ≥ 최소 연령"과 같다. 이 예에서, 디지털 컴포넌트는 디지털 컴포넌트 Sdcsi의 속성에 특정 아이템이 포함되지 않고, 클라이언트 장치(110)의 위치가 특정 상태에 있고, 그리고 클라이언트 장치(110) 사용자의 연령이 적어도 최소 연령인 경우에만 적격하다. 이 예제에서는 AND 연산자만 사용했지만 OR, XOR, NOT 등과 같은 다른 부울 연산자도 사용할 수 있다.
컴퓨팅 시스템 MPC1 및 MPC2는 적격성 표현(eligibility expression)을 평가한다(510). 컴퓨팅 시스템 MPC1 및 MPC2는 디지털 컴포넌트가 선택에 적격한지 여부를 결정하기 위해 각 디지털 컴포넌트에 대한 적격성 표현을 평가한다. 상술한 바와 같이, 적격성 표현 및 대응하는 적격성 기준이 클리어텍스트로 컴퓨팅 시스템 MPC1 및 MPC2에 제공되는 경우 평가는 샌드박스에서 발생할 수 있다.
일부 상황에서, 디지털 컴포넌트 요청에 대한 컨텍스트 속성 세트 및/또는 디지털 컴포넌트 선택 아이템과 관련된 속성은 민감하거나 기밀일 수 있다. 예를 들어, DSP(150)는 리소스가 분류되는 방식으로 인해 DSP(150)가 특정 디지털 컴포넌트 또는 디지털 컴포넌트 세트가 게시자의 리소스에 표시되는 것을 허용하지 않는다는 것을 특정 게시자에게 알리고 싶지 않을 수 있다. 다른 예에서, SSP(170)는 특정 리소스가 한 제공자의 디지털 컴포넌트를 표시하기 위해 이용가능하지만 다른 제공자의 디지털 컴포넌트가 아니라는 것을 디지털 컴포넌트 제공자에게 공개하기를 원하지 않을 수 있다.
그러한 데이터가 유출되는 것을 방지하기 위해, MPC 클러스터(130)는 보안 MPC 프로세스를 사용하여 디지털 컴포넌트가 적격한지 여부를 결정할 수 있다. 컨텍스트 속성, 적격성 표현 및 적격성 기준 세트를 클리어텍스트로 수신하는 대신, 각각의 컴퓨팅 시스템 MPC1 및 MPC2는 컨텍스트 속성 세트의 각각의 비밀 쉐어, 적격성 표현의 각각의 비밀 쉐어 및 적격성 기준의 각각의 비밀 쉐어를 수신할 수 있다. 컴퓨팅 시스템 MPC1 및 MPC2는 디지털 컴포넌트 선택 아이템이 적격한지 여부를 결정하기 위해 비밀 쉐어를 사용하여 보안 MPC 프로세스를 수행할 수 있다.
SIC(set intersection check)의 경우, 예를 들어 인코딩할 속성의 수에 따라 벡터, 블룸 필터 또는 분산 포인트 함수(DPF: distributed point function)를 사용하여 속성을 인코딩할 수 있다. 속성의 수가 제한되면(예: 100, 500 미만 또는 다른 적절한 임계값) 벡터를 효율적으로 사용할 수 있다. 기밀 정보를 보호하기 위해, 벡터 또는 속성을 Z2에서 두 개의 추가 비밀 쉐어 벡터로 분할할 수 있다. 예를 들어, 벡터의 제1 요소가 디지털 컴포넌트 선택 아이템이 특정 아이템과 관련되어 있는지 여부를 나타내는 경우, 디지털 컴포넌트는 실제로 특정 아이템과 관련되어 있으므로 S[0] = 1인 비밀 벡터 S가 있을 수 있다. 이 예에서, 벡터 S의 요소 0은 특정 아이템을 나타낸다. 추가 비밀 쉐어의 두 벡터는 각각 S1과 S2이며, 여기서 S1[0] XOR S2[0] == 1이다. 이 예에서, 컴퓨팅 시스템 MPC1은 벡터 S의 제1 비밀 쉐어 S1을 수신할 수 있고, 컴퓨팅 시스템 MPC2는 벡터 S의 제2 비밀 쉐어 S2를 수신할 수 있다. 디지털 컴포넌트가 특정 아이템과 관련이 없는 경우 표현은 S[0] = 0 및 S1[0] XOR S2[0] == 0 이다.
벡터는 디지털 컴포넌트 선택 아이템의 디지털 컴포넌트의 제한된 수의 속성과 디지털 컴포넌트 요청에 대한 컨텍스트 속성 세트를 인코딩하는 데 사용할 수 있다. S1과 S2는 각각 MPC1과 MPC2가 보유한 디지털 컴포넌트 선택 아이템에 대한 비밀 쉐어의 벡터를 나타낸다. 이 벡터는 디지털 컴포넌트의 속성, 예를 들어 디지털 컴포넌트의 속성 또는 디지털 컴포넌트가 적격하거나 적격하지 않은 환경 속성을 인코딩한다.
P1과 P2는 각각 MPC1과 MPC2가 보유한 디지털 컴포넌트 요청에 대한 비밀 쉐어 벡터를 나타낸다. 이 벡터는 디지털 컴포넌트 요청의 컨텍스트 속성을 인코딩한다. 개념적으로, common_properties가 "재구성(reconstruct)(S1, S2) = 재구성(P1, P2)"를 나타내도록 한다. 컴퓨팅 시스템 MPC1 및 MP2는 보안 MPC 프로세스를 사용하여 벡터의 비밀 쉐어를 평가하고 벡터의 해당 요소를 비교함으로써 비밀 쉐어의 common_properties를 연산할 수 있다. common_properties의 요소 값이 1이면 디지털 컴포넌트 선택 아이템과 현재 디지털 컴포넌트 요청이 모두 요소에 해당하는 동일한 속성을 쉐어한다. S와 P의 데이터 유형이 정수가 아닌 부울인 경우, 비교 연산은 보안 MPC 프로토콜에서 추가 왕복(extra round trip)이 필요하지 않은 논리적 XOR에 최적화될 수 있다.
블록 리스트을 구현하기 위해, 즉 디지털 컴포넌트 선택 아이템이 현재 디지털 컴포넌트 요청에 대해 지정된 속성과 연결되어 있는 경우 디지털 컴포넌트 선택 아이템이 선택에 적격하지 않다. 컴퓨팅 시스템 MPC1 및 MPC2는 사용자 개인 정보를 보호하기 위해 비밀 쉐어에서 연산된 common_properties의 요소를 검사한다. 모든 요소의 값이 0이면 현재 요청에 대해 디지털 컴포넌트 선택 아이템이 차단되지 않는다.
활성화된 리스트(enabled list)를 구현하기 위해, 즉 캐시된 비드(cached bid)가 현재 디지털 컴포넌트 요청에 대해 지정된 속성과 연결된 경우 디지털 컴포넌트 선택 아이템을 선택할 수 있으며, 컴퓨팅 시스템 MPC1 및 MPC2는 common_properties의 요소를 검사한다. 모든 요소의 값이 0이면 현재 디지털 컴포넌트 요청에 대해 디지털 컴포넌트 선택 아이템이 차단된다(blocked).
common_properties를 연산하고 common_properties의 모든 요소 값이 0인지 검사하는 데 사용할 수 있는 몇 가지 기술이 있다. 한 가지 기술은 OT(Oblivious Transfer)를 사용하는 GMW(Goldreich-Micali-Wigderson)이고 또 다른 접근 방식은 왜곡된 회로(garbled circuits)이다. 두 접근 방식 모두 두 컴퓨팅 시스템 MPC1과 MPC2 사이의 온라인 통신의 한 온라인 라운드(online round)를 활용한다.
많은 수의 속성이 있는 경우(예: 속성의 임계값 수보다 큰 경우) 벡터 사용은 블룸 필터 또는 DPF를 사용하는 것만큼 효율적이지 않을 수 있다. 디지털 컴포넌트 선택 아이템 및 디지털 컴포넌트 요청에 대한 평균 속성 수가 전체 속성 수에 비해 적고 사용 사례가 일정 수준의 FPR(False Positive Rate)을 허용할 수 있는 경우, 속성은 블룸 필터로 인코딩할 수 있다. 그렇지 않으면 속성을 DPF로 인코딩할 수 있다. 어느 솔루션에서든, 콘텐츠 플랫폼과 MPC 클러스터(130) 사이의 통신 대역폭이 감소된다.
동등성 테스트를 위해, 디지털 컴포넌트 선택 아이템의 경우 MPC1 및 MPC2가 각각 디지털 컴포넌트 선택 아이템에 대한 속성의 두 비밀 쉐어 [p1] 및 [p2]를 보유한다고 가정한다. 디지털 컴포넌트 요청의 경우, SSP(170)는 디지털 컴포넌트 요청에 대한 속성(예를 들어, 컨텍스트 속성 세트)의 2개의 비밀 쉐어 [q1] [q2]를 각각 MP1 및 MPC2로 전송한다. MPC1과 MPC2는 두 개의 비밀 메시지 p와 q가 같은지 여부를 비교하며, 여기서 p = 재구성([p1], [p2]) 및 q = 재구성([q1], [q2])이다.
다음 두 주장은 동일하다(p와 q는 동일하고; p-q = 0). 이러한 관측치와 함께, 대체 프로토콜은 MPC 클러스터(130)가 tmp = p-q를 연산할 수 있고 비밀 쉐어 연산을 사용하여 tmp가 0인지 여부를 결정할 수 있다는 것이다. 이를 위해 MPC1은 [tmp1] = [p1] - [q1]을 연산하고 MPC2는 [tmp1] = [p2] - [q2]를 연산한다. 컴퓨팅 시스템 MPC1 및 MPC2는 GMW 또는 왜곡된 회로를 사용하여 비밀 메시지 tmp가 0인지 여부(즉, tmp의 모든 비트가 0인지)를 결정할 수 있다.
전술한 표현에 부가하여, MPC 클러스터(130)는 디지털 컴포넌트 선택 아이템이 디지털 컴포넌트 요청에 응답하여 선택에 적격한지를 결정하기 위한 제어를 정의하는 진리표를 지원할 수 있다. MPC 클러스터(130)는 적격성 표현에 기초하여 진리표를 생성할 수 있다.
다양한 하위 표현을 평가한 후, 컴퓨팅 시스템 MPC1 및 MPC2는 적격성 표현의 부울 연산자를 평가할 수 있다. 일부 하위 표현의 결과는 각 컴퓨팅 시스템 MPC1 및 MPC2가 보유한 비밀 쉐어일 수 있으므로 컴퓨팅 시스템 MPC1 및 MPC는 보안 MPC 프로세스를 사용하여 부울 연산자를 평가할 수 있다. 이의 결과는 또한 디지털 컴포넌트 선택 아이템이 적격한지 여부를 나타내는 적격성 파라미터(eligbility_checki)의 비밀 쉐어일 수 있다. 예를 들어, 컴퓨팅 시스템 MPC1은 제1 비밀 쉐어[eligbility_checki.1]를 가질 수 있고, 컴퓨팅 시스템 MPC2는 제2 비밀 쉐어[eligbility_checki.2]를 가질 수 있다. 그러면 컴퓨팅 시스템 MPC1 및 MPC2는 전술한 바와 같이 디지털 컴포넌트를 선택하기 위한 프로세스의 일부로서 적격성 파라미터의 비밀 쉐어를 사용할 수 있다.
도 6은 디지털 컴포넌트 선택 프로세스에서 디지털 컴포넌트에 대한 가장 높은 다른 선택 값을 결정하기 위한 예시적 프로세스(600)의 다이어그램이다. 프로세스(600)의 동작은 예를 들어 MPC 클러스터(130)의 다른 컴퓨팅 시스템(들)과 협력하여 MPC 클러스터(130)의 컴퓨팅 시스템 MPC1 또는 MPC2에 의해 구현될 수 있다. 프로세스(600)의 동작은 또한 비일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령어로 구현될 수 있다. 하나 이상의 데이터 처리 장치에 의한 명령어의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(600)의 동작을 수행하게 할 수 있다.
컴퓨팅 시스템은 선택된 디지털 컴포넌트가 클라이언트 장치에 디스플레이될 환경의 컨텍스트 속성 세트의 적어도 제1 쉐어를 획득한다(602). 컨텍스트 속성 세트는 클라이언트 장치(110) 및/또는 콘텐츠 플랫폼, 예를 들어 SSP(170) 및/또는 하나 이상의 DSP(150)로부터 수신될 수 있다. 예를 들어, 클라이언트 장치(110)는 컴퓨팅 시스템 MPC1 및 MPC2에 디지털 컴포넌트 요청과 함께 컨텍스트 속성 세트를 제공할 수 있다. 콘텐츠 플랫폼은 위에서 설명한 대로 환경에 대한 컨텍스트 속성을 추론할 수도 있다. 위에서 설명한 바와 같이, 컨텍스트 속성은 디지털 컴포넌트가 표시되는 리소스에 대한 데이터, 클라이언트 장치(110)의 사용자에 관한 데이터, 디지털 컴포넌트를 표시할 애플리케이션(112)에 대한 데이터, 클라이언트 장치(110)에 대한 데이터, 및/또는 일반적인 컨텍스트 데이터(예: 날짜 및 시간)를 포함할 수 있다.
컴퓨팅 시스템은 컨텍스트 속성 세트의 제1 비밀 쉐어를 수신할 수 있다. MPC 클러스터(130)의 각각의 다른 컴퓨팅 시스템은 컨텍스트 속성 세트의 각각의 제2 비밀 쉐어를 수신할 수 있다.
컴퓨팅 시스템은 디지털 컴포넌트 세트의 각 디지털 컴포넌트에 대해 디지털 컴포넌트에 대한 적격성 기준 세트 사이의 관계를 정의하는 적격성 표현의 적어도 제1 쉐어를 획득한다(604). 위에서 설명한 것처럼 적격성 표현은 하나 이상의 하위 표현, NOT과 같은 단항 부울 연산자 및 하위 표현 쌍 사이의 부울 연산자를 포함할 수 있다.
컴퓨팅 시스템은 적격성 표현의 제1 비밀 쉐어 및 적격성 표현에 대한 적격성 기준의 제1 비밀 쉐어를 수신할 수 있다. MPC 클러스터(130)의 각각의 다른 컴퓨팅 시스템은 적격성 표현 세트의 각각의 제2 비밀 쉐어 및 적격성 기준의 각각의 제2 비밀 쉐어를 수신할 수 있다.
컴퓨팅 시스템은 각각의 디지털 컴포넌트에 대해 그리고 컨텍스트 속성 세트의 적어도 제1 쉐어 및 적격성 표현의 적어도 제1 쉐어에 기초하여, 디지털 컴포넌트가 클라이언트 장치에 디스플레이될 선택에 적격인지 여부를 나타내는 적격성 파라미터의 적어도 제1 쉐어를 결정한다(606). 컴퓨팅 시스템은 위에서 설명한 바와 같이, 도 5에 도시된 프로세스(500)를 사용하여 적격성 파라미터의 제1 쉐어를 결정할 수 있다. MPC 클러스터(130)의 각각의 다른 컴퓨팅 시스템은 프로세스(500)의 일부로서 적격성 파라미터의 제2 쉐어를 결정할 수 있다.
컴퓨팅 시스템은 MPC 클러스터의 서로 다른 컴퓨팅 시스템과 협력하여, 선택된 디지털 컴포넌트로서, 디지털 컴포넌트가 선택에 적격임을 나타내는 적격성 파라미터를 갖는 각 디지털 컴포넌트를 포함하는 적격한 디지털 컴포넌트 세트로부터 주어진 디지털 컴포넌트를 선택하기 위해 보안 MPC 프로세스를 수행한다(608). 컴퓨팅 시스템은 위에서 설명한 바와 같이, 도 4에 도시된 프로세스(400)를 사용하여 다른 컴퓨팅 시스템과 협력하여 디지털 컴포넌트를 선택할 수 있다.
컴퓨팅 시스템은 보안 MPC 프로세스의 결과로서, 선택된 디지털 컴포넌트를 식별하는 선택 결과의 제1 쉐어를 생성한다(610). MPC 클러스터(130)의 각각의 다른 컴퓨팅 시스템은 선택 결과의 각각의 제2 쉐어를 생성한다. 컴퓨팅 시스템은 위에서 설명한 바와 같이, 도 4에 도시된 프로세스(400)의 일부로서 선택 결과의 쉐어를 결정할 수 있다.
컴퓨팅 시스템은 선택 결과의 제1 쉐어를 클라이언트 장치로 전송한다(612). MPC 클러스터(130)의 각각의 다른 컴퓨팅 시스템은 또한 선택 결과의 각각의 제2 쉐어를 클라이언트 장치에 전송한다. 그런 다음 클라이언트 장치는 선택한 디지털 컴포넌트에 액세스하고 디지털 컴포넌트를 표시(디스플레이)할 수 있다.
일부 구현에서, MPC 클러스터(130)는 디지털 컴포넌트가 선택 프로세스의 후보인지 여부를 결정하기 위해, 예를 들어 디지털 컴포넌트에 대한 후보 파라미터의 비밀 쉐어를 결정하기 위해 보안 MPC 프로세스에 왜곡된 회로(garbled circuits)를 사용할 수 있다. 디지털 컴포넌트당 많은 조건(예: 경우에 따라 수십 개)이 있을 수 있으므로 각 디지털 컴포넌트에 대해 왜곡된 회로에 많은 게이트가 있을 수 있다. 게이트 수를 줄이면 보안 MPC 프로토콜을 실행하기 위한 대역폭 비용이 줄어들고 디지털 컴포넌트 선택 시 대기 시간이 크게 줄어든다.
예를 들어 동일한 디지털 컴포넌트 또는 디지털 컴포넌트 그룹에 대해 동일한 쌍의 입력 또는 중간 부울 변수 사이에는 많은 반복 연산 및 논리적 AND 연산이 있다. 그리디(greedy) 알고리즘을 사용하여 하위 표현의 중복 연산을 피할 수 있으므로 AND 연산의 수를 줄일 수 있다.
위에서 설명한 프로세스에서 후보 파라미터(is_dc_a_candidate)가 0 또는 1의 값을 가진 ZP에 있다고 가정할 수 있다. MPC 클러스터(130)는 최고에서 최저까지 선택 값(예를 들어, 퍼블리셔(게시자)(publisher)에 귀속된 부분)을 갖는 디지털 컴포넌트로부터 모든 캐싱된 디지털 컴포넌트를 통해 반복할 것이다. 각각의 캐싱된 디지털 컴포넌트 i에 대해, MPC 클러스터(130)는 누적 값(acci)을 연산한 다음 ZP에서 acci == 0을 연산한다. 결과는 다시 Z2로 변환된다. Z2에서 Zp로 또는 그 반대로 변환하면 프로토콜 복잡성이 증가한다. 왜곡된 회로를 사용하는 Zp의 동등성 테스트 acci == 0은 log2(p) 게이트를 수반할 수 있으며, 이는 상당한 성능 및 대역폭 비용을 초래한다.
MPC 클러스터(130)는 후보 파라미터(is_dc_a_candidatei)를 Z2에 유지하고 훨씬 더 낮은 연산 및 대역폭 비용으로 부울 회로를 사용하여 Z2에서 누적 값(acci then acci == 0)을 연산할 수 있다. 이를 위해, 누적 값(acci)은 두 가지 가능한 값, 후보 디지털 컴포넌트가 현재 디지털 컴포넌트 i에 대한 현재 선택 값보다 더 높은 선택 값을 가지지 않으면 0, 또는 적어도 하나의 후보 디지털 컴포넌트가 현재 디지털 컴포넌트에 대한 현재 선택 값보다 더 높은 선택 값을 가지면 0으로 제한된다. 위에서 설명한 프로세스에서 누적 값은 각 후보 디지털 컴포넌트에 대해 증가하므로 1보다 클 수 있다.
누적 값(acc)의 업데이트된 시맨틱으로, MPC 클러스터(130)는 다음과 같이 최고 선택 값에서 최저 선택 값까지 모든 캐시된 디지털 컴포넌트를 반복하면서 승자 파라미터(is_dc_the_winneri)를 갖는 누적 값을 연산할 수 있다. 가장 높은 선택 값을 갖는 디지털 컴포넌트에 대한 누적 값(acc)은 항상 0이다. 연산이 필요하지 않다.
두 번째로 높은 선택 값을 갖는 디지털 컴포넌트에 대한 누적 값(acc)은 항상 가장 높은 선택 값을 갖는 디지털 컴포넌트의 후보 파라미터(is_dc_a_candidate)의 값과 동일하다. 이것 역시 연산이 필요하지 않다.
MPC 클러스터(130)는 이미 n번째로 높은 선택값을 갖는 디지털 컴포넌트에 대한 누적값(acc)을 연산했다고 가정하자. (n+1) 번째로 높은 선택 값을 갖는 디지털 컴포넌트에 대한 누적 값(acc)은 "accn+1 = accn OR is_dc_a_canddaten"으로 연산될 수 있다. MPC 클러스터(130)는 승자 파라미터(is_dc_a_winnern+1 = is_dc_a_canddaten+1 AND NOT accn+1)를 추가로 연산할 수 있다.
MPC 클러스터(130)는 각각의 캐시된 디지털 컴포넌트에 대해 4개의 와이어, 예를 들어 2개의 입력 와이어(accn 및 is_dc_a_canddaten) 및 2개의 출력 와이어(accn+1 및 is_dc_a_winnern+1)를 갖는 2개의 게이트를 가질 수 있다. 이러한 향상으로, MPC 클러스터(130)는 각각 수십 개의 게이트 대신 캐시된 디지털 컴포넌트당 두 개의 게이트만 필요로 한다. 이 암호화 프로세스는 위에서 설명한 대로 후보 적격성 결정의 일부로 수행될 수 있다.
도 7은 위에서 설명된 동작들을 수행하는 데 사용될 수 있는 예시적인 컴퓨터 시스템(700)의 블록도이다. 시스템(700)은 프로세서(710), 메모리(720), 저장 디바이스(730), 및 입출력 디바이스(740)를 포함한다. 각각의 컴포넌트(710, 720, 730, 740)는 예를 들어, 시스템 버스(750)를 사용하여 상호연결될 수 있다. 프로세서(710)는 시스템(700)내에서 실행하기 위한 명령어들을 처리할 수 있다. 일부 구현에서, 프로세서(710)는 단일 스레드 프로세서이다. 다른 구현에서, 프로세서(710)는 다중 스레드 프로세서이다. 프로세서(710)는 메모리(720) 또는 저장 디바이스(730)에 저장된 명령어들을 처리할 수 있다.
메모리(720)는 시스템(700) 내에 정보를 저장한다. 일 구현에서, 메모리(720)는 컴퓨터 판독가능 매체이다. 일부 구현에서, 메모리(720)는 휘발성 메모리 유닛이다. 다른 구현에서, 메모리(720)는 비휘발성 메모리 유닛이다.
저장 디바이스(730)는 시스템(700)을 위한 대용량 저장 디바이스를 제공할 수 있다. 일부 구현에서, 저장 디바이스(730)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(730)는 예를 들어, 하드 디스크 디바이스, 광 디스크 디바이스, 복수의 컴퓨팅 디바이스들(예를 들어, 클라우드 저장 디바이스)에 의해 네트워크를 통해 쉐어되는 저장 디바이스, 또는 일부 다른 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(740)는 시스템(700)에 대한 입력/출력 동작을 제공한다. 일부 구현에서, 입력/출력 디바이스(740)는 네트워크 인터페이스 디바이스(예를 들어, 이더넷 카드), 직렬 통신 디바이스(예를 들어, RS-232 포트) 및/또는 무선 인터페이스 디바이스(예를 들어, 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 외부 디바이스(760), 예를 들어, 키보드, 프린터 및 디스플레이 디바이스로 보내도록 구성된 드라이버 디바이스를 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스, 모바일 통신 디바이스, 셋톱 박스 텔레비전 클라이언트 장치 등과 같은 다른 구현도 사용될 수 있다.
예시적인 프로세싱 시스템이 도 7에서 설명되었지만, 본 명세서에 기술된 주제 및 기능적 동작의 구현은 본 명세서에 개시된 구조들 및 이들의 구조적 균등물을 포함하는 다른 유형의 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 또는 이들 중 하나 이상의 조합에서 구현될 수 있다.
본 발명의 실시예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다. 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 디바이스에 전송하기 위한 정보를 인코딩하기 위해생성된 인공적으로 생성된 전파된 신호 즉, 머신-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 컴퓨터 저장 매체 또는 비일시적 컴퓨터 저장 매체는 컴퓨터 판독가능 매체로 지칭될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트 또는 매체(예를 들면, 복수의 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 페이지)를 전송한다. 사용자 디바이스에서 생성된 데이터(예를 들어, 사용자 인터렉션의 결과)는 서버에서 사용자 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정한 발명의 특정한 실시예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 실시예의 컨텍스트에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 컨텍스트에서 기술된 다양한 구성들은 또한 복수의 실시예에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 실시예에서 다양한 시스템 컴포넌트들의 분리는 모든 실시예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 복수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다.
따라서, 본 발명의 특정한 실시예들이 기술되었다. 다른 실시예들도 다음의 청구항들의 범위 내에 있다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다. 특정 구현예에서, 멀티태스킹과 병렬 프로세싱이 장점적일 수 있다.

Claims (17)

  1. 컴퓨터로 구현되는 방법으로서,
    복수의 컴퓨터를 포함하는 보안 다자간 연산(MPC) 시스템의 제1 컴퓨터에 의해, 선택된 디지털 컴포넌트가 클라이언트 장치에 디스플레이될 환경의 컨텍스트 속성 세트의 적어도 제1 쉐어를 획득하는 단계;
    디지털 컴포넌트들의 세트의 각 디지털 컴포넌트에 대해:
    상기 디지털 컴포넌트에 대한 적격성 기준 세트 사이의 관계를 정의하는 적격성 표현의 적어도 제1 쉐어를 획득하는 단계; 그리고
    상기 컨텍스트 속성 세트의 적어도 제1 쉐어 및 상기 적격성 표현의 적어도 제1 쉐어에 기초하여, 상기 디지털 컴포넌트가 상기 클라이언트 장치에 디스플레이될 선택에 적격인지를 나타내는 적격성 파라미터의 적어도 제1 쉐어를 결정하는 단계;
    상기 보안 MPC 시스템의 하나 이상의 제2 컴퓨터와 협력하여 상기 제1 컴퓨터에 의해, 상기 선택된 디지털 컴포넌트로서, 상기 디지털 컴포넌트가 선택에 적격임을 나타내는 적격성 파라미터를 갖는 각 디지털 컴포넌트를 포함하는 적격한 디지털 컴포넌트들의 세트로부터 소정의 디지털 컴포넌트를 선택하기 위해 보안 MPC 프로세스를 수행하는 단계;
    상기 보안 MPC 프로세스의 결과로서, 상기 선택된 디지털 컴포넌트를 식별하는 선택 결과의 제1 쉐어를 생성하는 단계; 그리고
    상기 제1 컴퓨터에 의해 상기 클라이언트 장치에 상기 선택 결과의 제1 쉐어를 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서, 상기 컨텍스트 속성 세트의 적어도 제1 쉐어를 획득하는 단계는 상기 클라이언트 장치 또는 콘텐츠 플랫폼 중 하나로부터 상기 컨텍스트 속성 세트의 제1 비밀 쉐어를 수신하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 컨텍스트 속성 세트의 적어도 제1 쉐어는 상기 컨텍스트 속성 세트 내의 모든 컨텍스트 속성을 포함하고;
    상기 적격성 표현의 적어도 제1 쉐어는 상기 적격성 표현의 전체를 포함하고; 그리고
    상기 디지털 컴포넌트가 선택에 적격인지 여부를 나타내는 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 다른 코드 실행으로부터 격리된 샌드박스 환경에서 상기 컨텍스트 속성 세트에 기초하여 상기 적격성 표현을 평가하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 선행하는 청구항 중 어느 한 항에 있어서, 상기 컨텍스트 속성 세트의 적어도 제1 쉐어 및 상기 적격성 표현의 적어도 제1 쉐어에 기초하여, 상기 디지털 컴포넌트가 선택에 적격인지를 나타내는 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은,
    하나 이상의 제2 컴퓨터와 공동으로, 상기 적격성 파라미터의 제1 비밀 쉐어를 결정하기 위한 제2 보안 MPC 프로세스를 수행하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 선행하는 청구항 중 어느 한 항에 있어서,
    특정 디지털 컴포넌트에 대한 적격성 기준 세트의 적어도 제1 쉐어는 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 제1 비밀 쉐어를 포함하고;
    상기 컨텍스트 속성 세트는 컨텍스트 속성의 벡터를 포함하고;
    상기 특정 디지털 컴포넌트에 대한 적격성 표현은 SIC(set intersection check)를 포함하고; 그리고
    상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 보안 MPC 시스템의 하나 이상의 제2 컴퓨터와 공동으로 제2 보안 MPC 프로세스를 사용하여, 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 적어도 하나의 요소와 상기 컨텍스트 속성 벡터의 적어도 하나의 요소 사이에 인터섹션(intersection)이 있음을 결정하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제5항에 있어서,
    상기 적격성 표현은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 하나 이상의 요소가 상기 컨텍스트 속성 벡터의 하나 이상의 해당 요소와 일치할 때 상기 특정 디지털 컴포넌트가 선택에 부적격한 블록 리스트로 상기 특정 디지털 컴포넌에 대한 속성 벡터를 정의하고; 그리고
    상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 적어도 하나의 요소와 상기 컨텍스트 속성 벡터의 적어도 하나의 요소 사이에 인터섹션이 있다는 결정에 응답하여 상기 특정 디지털 컴포넌트가 상기 클라이언트 장치에 디스플레이될 선택에 부적합함을 나타내도록 상기 적격성 파라미터의 적어도 제1 쉐어의 값을 설정하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제5항에 있어서,
    상기 적격성 표현은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 하나 이상의 요소가 상기 컨텍스트 속성 벡터의 하나 이상의 해당 요소와 일치할 때 상기 특정 디지털 컴포넌트가 선택에 적격한 활성화된 리스트로 상기 특정 디지털 컴포넌트에 대한 속성 벡터를 정의하고; 그리고
    상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 특정 디지털 컴포넌트에 대한 속성 벡터의 적어도 하나의 요소와 상기 컨텍스트 속성 벡터의 적어도 하나의 요소 사이에 인터섹션(intersection)이 있다는 결정에 응답하여 상기 특정 디지털 컴포넌트가 상기 클라이언트 장치에 디스플레이될 선택에 적격임을 나타내도록 상기 적격성 파라미터의 적어도 제1 쉐어의 값을 설정하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 특정 디지털 컴포넌트에 대한 적격성 기준 세트의 적어도 제1 쉐어는 상기 특정 디지털 컴포넌트에 대한 속성을 포함하는 제1 블룸 필터의 제1 비밀 쉐어를 포함하고;
    상기 컨텍스트 속성 세트는 컨텍스트 속성을 포함하는 제2 블룸 필터를 포함하고;
    상기 특정 디지털 컴포넌트에 대한 적격성 표현은 SIC(set intersection check)를 포함하고; 그리고
    상기 특정 디지털 컴포넌트에 대한 적격성 파라미터의 적어도 제1 쉐어를 결정하는 것은 상기 보안 MPC 시스템의 하나 이상의 제2 컴퓨터와 공동으로 제2 보안 MPC 프로세스를 사용하여, 상기 제1 블룸 필터의 적어도 하나의 요소와 상기 제2 블룸 필터의 적어도 하나의 요소 사이에 인터섹션이 있음을 결정하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 선행하는 청구항 중 어느 한 항에 있어서,
    특정 디지털 컴포넌트에 대한 적격성 표현은 상기 디지털 컴포넌트에 대한 소정의 속성과 상기 컨텍스트 속성 세트의 해당 속성 사이의 비교를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 특정 디지털 컴포넌트에 대한 적격성 표현은 상기 디지털 컴포넌트에 대한 소정의 속성과 상기 컨텍스트 속성 세트의 해당 속성 사이의 동등성 테스트(equality test)를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  11. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 특정 디지털 컴포넌트에 대한 적격성 표현은 상기 특정 디지털 컴포넌트가 선택에 적격한 시기를 정의하는 진리표(truth table)를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  12. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 적격성 표현은 2개 이상의 하위 표현을 포함하는 부울 표현 및 각 쌍의 하위 표현에 대한 부울 연산자를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  13. 제12항에 있어서,
    상기 2개 이상의 하위 표현은 (i) SIC(set intersection check), (ii) 동등성 테스트 및 (iii) 비교 테스트 중 2개 이상을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  14. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 컨텍스트 속성 세트는 (i) 상기 선택된 디지털 컴포넌트가 디스플레이될 리소스에 관한 데이터, (ii) 상기 클라이언트 장치의 사용자에 관한 데이터, (iii) 디지털 컴포넌트를 디스플레이할 애플리케이션에 관한 데이터 또는 (iv) 상기 클라이언트 장치에 대한 데이터 중 적어도 하나를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  15. 시스템으로서,
    하나 이상의 프로세서; 그리고
    상기 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금 선행하는 청구항 중 어느 한 항의 방법을 수행하게 하는 명령어를 저장하는 하나 이상의 저장 장치를 포함하는 것을 특징으로 하는 시스템.
  16. 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금 제1항 내지 제14항 중 어느 한 항의 방법을 수행하게 하는 명령어를 포함한 컴퓨터 판독 가능 저장 매체.
  17. 컴퓨터에 의해 실행될 때 상기 컴퓨터로 하여금 제1항 내지 제14항 중 어느 한 항의 방법의 단계를 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램 제품.
KR1020237008075A 2021-08-22 2022-08-22 보안 다자간 연산을 사용한 암호화 보안 제어 KR20230048126A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL285766 2021-08-22
IL285766A IL285766A (en) 2021-08-22 2021-08-22 Cryptographically secure control using secure multi-factor computation
PCT/US2022/041025 WO2023027982A1 (en) 2021-08-22 2022-08-22 Cryptographically secure control using secure multi-party computation

Publications (1)

Publication Number Publication Date
KR20230048126A true KR20230048126A (ko) 2023-04-10

Family

ID=83319343

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237008075A KR20230048126A (ko) 2021-08-22 2022-08-22 보안 다자간 연산을 사용한 암호화 보안 제어

Country Status (6)

Country Link
EP (1) EP4197156A1 (ko)
JP (1) JP2023549009A (ko)
KR (1) KR20230048126A (ko)
CN (1) CN116097616A (ko)
IL (1) IL285766A (ko)
WO (1) WO2023027982A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117319086B (zh) * 2023-11-27 2024-02-09 北京信安世纪科技股份有限公司 不经意传输系统、方法、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11784800B2 (en) * 2020-02-14 2023-10-10 Google Llc Secure multi-party reach and frequency estimation

Also Published As

Publication number Publication date
JP2023549009A (ja) 2023-11-22
CN116097616A (zh) 2023-05-09
IL285766A (en) 2023-03-01
WO2023027982A1 (en) 2023-03-02
EP4197156A1 (en) 2023-06-21

Similar Documents

Publication Publication Date Title
JP7238213B2 (ja) コンテンツ選択プロセスの完全性を改善するためのセキュアマルチパーティ計算の使用
KR20220167394A (ko) 다자간 컴퓨팅 및 확률적 데이터 구조를 이용한 정보에 대한 액세스 보호
KR20230048126A (ko) 보안 다자간 연산을 사용한 암호화 보안 제어
EP4081971B1 (en) Using secure mpc and vector computations to protect access to information in content distribution
US20240195603A1 (en) Cryptographically secure control using secure multi-party computation
JP7471450B2 (ja) セキュアマルチパーティ計算の性能の向上
JP7440667B2 (ja) セキュアマルチパーティ計算を使用したフレキシブルなコンテンツ選択プロセス
JP7425222B2 (ja) セキュアマルチパーティ計算を使用したプライバシー保持測定
JP7448686B2 (ja) プライバシーを守るドメインをまたがる実験群区分および監視
WO2024030200A1 (en) Single request architecture for increasing efficiency of secure multi-party computations
CN114450919A (zh) 在线隐私保护技术