CN114938668A - 数据分发限制的安全管理 - Google Patents
数据分发限制的安全管理 Download PDFInfo
- Publication number
- CN114938668A CN114938668A CN202080045742.XA CN202080045742A CN114938668A CN 114938668 A CN114938668 A CN 114938668A CN 202080045742 A CN202080045742 A CN 202080045742A CN 114938668 A CN114938668 A CN 114938668A
- Authority
- CN
- China
- Prior art keywords
- application
- digital component
- universal
- digital
- blocked
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 85
- 230000004044 response Effects 0.000 claims abstract description 37
- 241000544061 Cuculus canorus Species 0.000 claims description 32
- 230000003993 interaction Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 abstract description 13
- 101710165590 Mitochondrial pyruvate carrier 1 Proteins 0.000 description 57
- 102100024828 Mitochondrial pyruvate carrier 1 Human genes 0.000 description 57
- 101710101695 Probable mitochondrial pyruvate carrier 1 Proteins 0.000 description 57
- 101710165595 Mitochondrial pyruvate carrier 2 Proteins 0.000 description 51
- 102100025031 Mitochondrial pyruvate carrier 2 Human genes 0.000 description 51
- 101710101698 Probable mitochondrial pyruvate carrier 2 Proteins 0.000 description 51
- 230000006870 function Effects 0.000 description 45
- 230000008569 process Effects 0.000 description 41
- 230000000694 effects Effects 0.000 description 28
- 238000004364 calculation method Methods 0.000 description 23
- 230000001186 cumulative effect Effects 0.000 description 13
- 239000013598 vector Substances 0.000 description 13
- 238000013515 script Methods 0.000 description 11
- 235000014510 cooky Nutrition 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 101100346189 Caenorhabditis elegans mpc-1 gene Proteins 0.000 description 5
- 101100346198 Caenorhabditis elegans mpc-2 gene Proteins 0.000 description 5
- CDBYLPFSWZWCQE-UHFFFAOYSA-L Sodium Carbonate Chemical compound [Na+].[Na+].[O-]C([O-])=O CDBYLPFSWZWCQE-UHFFFAOYSA-L 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 101150039239 LOC1 gene Proteins 0.000 description 3
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 238000010413 gardening Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 229960004717 insulin aspart Drugs 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- VOMXSOIBEJBQNF-UTTRGDHVSA-N novorapid Chemical compound C([C@H](NC(=O)[C@H](CC(C)C)NC(=O)[C@H](CO)NC(=O)[C@H](CS)NC(=O)[C@H]([C@@H](C)CC)NC(=O)[C@H](CO)NC(=O)[C@H]([C@@H](C)O)NC(=O)[C@H](CS)NC(=O)[C@H](CS)NC(=O)[C@H](CCC(N)=O)NC(=O)[C@H](CCC(O)=O)NC(=O)[C@H](C(C)C)NC(=O)[C@@H](NC(=O)CN)[C@@H](C)CC)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](CC=1C=CC(O)=CC=1)C(=O)N[C@@H](CS)C(=O)N[C@@H](CC(N)=O)C(O)=O)C1=CC=C(O)C=C1.C([C@@H](C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](C(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](C)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CC=1C=CC(O)=CC=1)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](C(C)C)C(=O)N[C@@H](CS)C(=O)NCC(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](CCCNC(N)=N)C(=O)NCC(=O)N[C@@H](CC=1C=CC=CC=1)C(=O)N[C@@H](CC=1C=CC=CC=1)C(=O)N[C@@H](CC=1C=CC(O)=CC=1)C(=O)N[C@@H]([C@@H](C)O)C(=O)N[C@@H](CC(O)=O)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H]([C@@H](C)O)C(O)=O)C(C)C)NC(=O)[C@H](CO)NC(=O)CNC(=O)[C@H](CS)NC(=O)[C@H](CC(C)C)NC(=O)[C@H](CC=1NC=NC=1)NC(=O)[C@H](CCC(N)=O)NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](NC(=O)[C@@H](N)CC=1C=CC=CC=1)C(C)C)C1=CN=CN1 VOMXSOIBEJBQNF-UTTRGDHVSA-N 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6263—Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0251—Targeted advertisements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0407—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/083—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q2220/00—Business processing using cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Accounting & Taxation (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Power Engineering (AREA)
- Information Transfer Between Computers (AREA)
Abstract
提供了方法、系统和装置,包括编码在计算机存储介质上的计算机程序,用于允许合适的数字组件被自动选择并提供给客户端设备。方法可以包括为在应用中呈现的数字组件生成通用标识符。应用更新已经为由应用在指定的时间段呈现的数字组件创建的通用标识符的集合。应用识别数字组件和被阻止的对应的通用标识符,并生成表示被阻止的通用标识符的集合的概率数据结构。应用创建概率数据结构的多个份额,并将不同的份额发送到不同的服务器。应用接收由不同的服务器中的每一个基于多个份额生成的单独响应,并且基于单独响应的组合来识别要在应用中呈现的数字组件。
Description
背景技术
本说明书涉及数据处理和数据安全。
客户端设备可以使用应用(例如,网络浏览器、本地应用)来访问内容平台(例如,搜索平台、社交媒体平台或托管内容的另一平台)。内容平台可以在客户端设备上启动的应用内显示可以由一个或多个内容源/平台提供的数字组件(离散单元的数字内容或数字信息,诸如视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一单元的内容)。一些系统出于各种原因,诸如节省处理资源,限制数据(诸如数字组件)的分发。然而,实施这些限制的技术可能会导致数据安全问题。
发明内容
总的来说,本说明书中描述的主题的一个创新方面可以体现在方法中,该方法包括以下操作:由应用并为在应用中呈现的数字组件生成通用标识符,通用标识符是(i)用于提供数字组件的内容源的活动标识符(campaign identifier)和(ii)内容源的域的组合的加密版本;由应用基于所生成的通用标识符来更新已经为由应用在指定时间段呈现的数字组件创建的通用标识符的集合;由应用识别与已经(i)由应用生成并(ii)被阻止用于在应用中呈现未来的数字组件的通用标识符相对应的被阻止的通用标识符的集合;由应用生成表示被阻止的通用标识符的集合的概率数据结构;由应用创建概率数据结构的多个份额(share);由应用将多个份额中的不同份额发送到不同的服务器;由应用接收由不同的服务器中的每一个基于发送到不同的服务器的多个份额中的不同份额生成的单独响应;以及由应用并基于单独响应的组合来识别要在应用中呈现的数字组件。
该方面的其他实施方式包括对应的装置、系统和计算机程序,被配置为执行在计算机存储设备上编码的方法的方面。这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。
在一些方面,检测与对应于应用中呈现的给定数字组件的静音元件的交互,并且响应于在最新近的时间帧中检测到与静音元件的交互,更新被阻止的通用标识符的集合以包括该给定数字组件的通用标识符。
在一些方面,更新通用标识符的集合包括响应于由应用呈现与特定通用标识符相关联的数字组件,递增指示具有该特定通用标识符的数字组件的呈现频率的呈现计数器。在一些方面,更新通用标识符的集合包括当呈现计数器超过指定值时,将特定通用标识符添加到被阻止的通用标识符的集合。
在一些方面,生成概率数据结构包括生成表示(i)被阻止的通用标识符的集合和(ii)与分配给应用的用户的用户组相对应的用户组标识符的集合的概率数据结构。在一些方面,生成概率数据结构还包括使用由两个或更多个随机变量参数化的伪随机函数,并且其中概率数据结构是布谷鸟过滤器(cuckoo filter)。
在一些方面,提供数字组件的实体可以生成数字组件的通用标识符。
可以实施本说明书中描述的主题的特定实施例,以便实现以下优点中的一个或多个。可以通过使用安全多方计算(multi-party computation,“MPC”)过程来限制、阻止或保护对某些类型的数据的访问,该过程可以由不同方操作的两个或更多个MPC服务器来执行,以确定何时向客户端设备分发数字组件和/或分发什么数字组件。例如,MPC服务器可以通过分别处理提供给MPC服务器中的不同MPC服务器的、数据的不同秘密份额(secret share)(例如,数据集的不同或不相交的子集)来做出确定,以确保可以访问由秘密份额之一表示的数据的MPC服务器或任何其他方中的任何一个不能以明文方式访问完整的数据集。
例如,通过使用概率数据结构,例如布谷鸟过滤器,可以减少做出确定所需的数据量和处理资源,概率数据结构可以同时表示被阻止呈现的数字组件和请求呈现数据(例如数字组件)的客户端设备的用户所属的组(例如,兴趣组),而不泄露关于用户的敏感数据。以这种方式使用概率数据结构保护了用户隐私,并减少了提供给MPC集群的信息的大小。数据大小的这种减少减小了传输信息所消耗的带宽量,减少了传输信息的等待时间,并减少了传输信息所需的处理功率和用电池运行的设备(例如,移动设备)的相关电池功率的量。
如上所述,概率数据结构的使用还可以通过用少于五个查找操作(例如,在一些情况下不超过两个查找操作)执行分析来减少确定客户端设备的用户是否有资格接收特定类型的数据所需的处理资源(例如,存储器、CPU周期或云计算资源)的量,其中现有技术可能需要数百次查找才能得到相同的结果。更具体地,使用概率数据结构确保了需要被识别以向特定客户端设备提供特定数据集(例如,数字组件)的信息将仅在概率数据结构的指定数量(例如,两个或三个)的位置中找到,使得只有这两个位置需要被计算设备检查。这显然提高了计算系统本身的效率,并可以节省资源,诸如电池寿命、能耗、所需的设备冷却。与执行不到五次的查找操作相比,它还可以导致比需要执行数百次查找操作的系统更快地获得结果的能力。
MPC集群可以发送标识MPC集群使用安全MPC过程选择的所选数字组件的结果的秘密份额。通过仅发送所选数字组件的结果的秘密份额,而不是发送所有或大的数字组件集合的信息,类似地减少了在发送和接收结果时消耗的带宽、等待时间、处理功率和电池功率。这还通过限制向客户端设备提供信息的数字组件的数量来减少向MPC集群提交数字组件的选择值的内容平台的机密信息的潜在泄露。因此,本公开允许自动选择合适的数字组件并将其提供给客户端设备,同时考虑与客户端设备相关联的被阻止的数字组件。这是通过提高通过网络传输的用户数据的安全性并有效利用处理器和带宽资源的方式来实现的。
本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。根据描述、附图和权利要求,本主题的其他特征、方面和优点将变得明显。
附图说明
图1是其中数字组件被分发的示例环境的框图。
图2是用于选择分发到客户端设备的数字组件的示例过程的泳道图。
图3是向客户端设备分发数字组件的示例过程的流程图。
图4是可以用于执行描述的操作的示例计算机系统的框图。
具体实施方式
本文档公开了用于实施限制对特定类型数据的访问的技术的方法、系统、装置和计算机可读介质。在一些情况下,本文讨论的技术可以用于管理、限制、限定或防止向已经被预先提供数据达预定次数的客户端设备(或客户端设备的用户)分发数据。例如,可以阻止或以其他方式限制在客户端设备上显示先前已经在该客户端设备上显示过的数字组件,或者可以阻止或以其他方式限制向该客户端设备的用户(例如,在各种不同的客户端设备上)显示达预定次数。这些技术还使得客户端设备的用户能够阻止某些类型的数据(例如,某些类型的数字组件)被递送到客户端设备或在客户端设备上呈现。这可以防止浪费资源,否则这些资源会因向客户端设备递送过时或不需要的数据而被消耗。本文讨论的技术是参考向客户端设备分发数字组件来描述的,但是这些技术也可以应用于任何数据的管理,使得使用这些技术可以限制或保护对任何数据的访问。
通常,经由客户端设备连接到互联网的用户可以被提供数字组件。在这种情况下,数字组件服务器可以基于第三方cookie(例如,来自与用户当前正在查看的网页的域不同的域的cookie)和诸如用户的在线活动、用户浏览历史的活动数据来控制对数字组件的访问。例如,数字组件服务器可以使用包含在cookie(例如,跨多个域/网站收集数据的第三方cookie)中的信息来基于客户端设备的用户访问的先前网站来提供数字组件。然而,在阻止使用第三方cookies的浏览器中,通常跨多个网站收集的浏览信息不再可用。因此,任何依赖于第三方cookie(例如,来自不同于用户当前正在查看的网页的域的域(诸如有效的顶级(top-level)域(eTLD+1))的cookie)收集的信息的功能,诸如管理向客户端设备的数据分发,不再可用。
本文中描述的技术能够独立于第三方cookie或其他设备/浏览器标识符来管理数据访问,使得这些技术可以用于控制对客户端设备的数据(诸如,数字组件)的访问(例如,分发),即使第三方cookie的使用已经被阻止(例如,通过安装在客户端设备上的浏览器)。这些技术也可以以这样的方式实施,即用于控制对服务器提供的数据的访问的完整数据集完全(或大部分)驻留在客户端设备上,而仅将完整数据集的部分(例如,完全不同或不相交的子集)提供给远程服务器。这防止基于其做出访问控制决定的完整数据集被有助于本文讨论的技术的任何远程服务器访问。
如本说明书中进一步描述的,在客户端设备上执行的应用生成通用标识符,该通用标识符标识先前已经提供给客户端设备的数据源。例如,在数字组件的上下文中,通用标识符可以唯一地表示提供数字组件的实体和/或触发向客户端设备发送数字组件的特定数字组件组(例如,活动(campaign))。对应于每个数字组件的通用标识符可以与每个数字组件一起被递送到客户端设备,使得数字组件可以跟踪数字组件从特定实体和/或数字组件组被递送到客户端设备的频率。在更一般的受管理数据访问实施方式中,可以使用类似的技术来使客户端设备能够跟踪由某些实体提供的和/或包含在某些数据库、索引或文件夹中的数据被发送到客户端设备(或被客户端设备下载)的频率。
如下文更详细讨论的,通用标识符可以由客户端侧应用使用,以基于对应于特定通用标识符的数字组件被递送到客户端设备和/或由客户端设备呈现的频率,来跟踪哪些数字组件(或其他类型的数据)被允许呈现(或访问)或者应该被阻止呈现(或访问)。附加地,通用标识符的使用使得客户端设备能够管理如客户端设备的用户所请求的对来自指定源的某些类型的数字组件(或其他数据)的递送的阻止。在一些情况下,客户端设备可以维护被阻止的通用标识符的集合(例如,列表),该集合指定具有与被阻止的通用标识符之一相匹配的通用标识符的数字组件被阻止递送到客户端设备或由客户端设备呈现。尽管在本文档中,技术和方法使用通用标识符作为标识数字组件和活动的方法,但是应当注意,该方法和技术可以扩展到其他形式的标识。例如,可以使用与数字组件或活动相关联的标签或标注来标识它们。例如,如果客户端设备的用户想要阻止与苏打饮料相关的所有数字组件,则可以使用术语“苏打饮料”来标识与苏打饮料相关的所有数字组件。在这种情况下,术语“苏打饮料”可以是与和苏打饮料相关的数字组件相关联地使用的分类术语,或者是在互联网上用于标识这种数字组件的术语。
这些技术还使得客户端侧应用能够跟踪不同数字组件在客户端设备上呈现的次数,并且限制具有已经在指定时间段内被应用识别了至少预定次数的通用标识符的某些数字组件的呈现。换句话说,一旦某个通用标识符在某个时间帧中已经被遇到预定次数,客户端侧应用可以进一步通过将通用标识符添加到被阻止的通用标识符的集合中来至少暂时地防止具有该通用标识符的数据(例如,数字组件)被发送到客户端设备或呈现在客户端设备上。为了对随后向客户端设备递送数据(诸如数字组件)实施限制,客户端设备使用被阻止的通用标识符的集合生成概率数据结构,并与一个或多个远程服务器(例如,两个或更多个MPC服务器)共享(share)该概率数据结构,该一个或多个远程服务器可以在选择要向客户端设备递送的数据(例如,数字组件)的过程中使用该概率数据结构。
在一些方面,数字组件服务器可以部署包括两个或更多个计算服务器的安全多方计算(multi-party computation,MPC)系统,以执行安全MPC过程来基于概率数据结构选择数字组件,而任何一个MPC服务器都不能以明文访问信息。这些技术使得客户端设备能够以秘密份额的方式生成概率数据结构并将其发送到MPC系统中的每个服务器,从而维护用户隐私和匿名性。参考图1-4进一步解释这些技术和方法。
图1是其中数字组件被分发用于与电子文档一起呈现的示例环境100的框图。示例环境100包括网络102,诸如局域网(local area network,LAN)、广域网(wide areanetwork,WAN)、互联网或其组合。网络102连接内容服务器104、客户端设备106、数字组件服务器108和数字组件分发系统110(也称为组件分发系统(component distributionsystem,CDS)。
客户端设备106是能够通过网络102请求和接收资源的电子设备。示例客户端设备106包括个人计算机、移动通信设备、可穿戴设备、个人数字助理、游戏系统、虚拟现实系统、流媒体设备以及可以通过网络102发送和接收数据的其他设备。客户端设备106通常包括用户应用112,诸如网络浏览器,以便于通过网络102发送和接收数据,但是由客户端设备106执行的本地应用也可以便于通过网络102发送和接收数据。客户端设备106,特别是个人数字助理,可以包括能够与客户端设备106进行语音交互的硬件和/或软件。例如,客户端设备106可以包括麦克风,用户可以通过该麦克风提交音频(例如,语音)输入,诸如命令、搜索查询、浏览指令、智能家居指令和/或其他信息。附加地,客户端设备106可以包括扬声器,通过该扬声器可以向用户提供音频(例如,语音)输出。个人数字助理可以在任何客户端设备106中实施,客户端设备106的示例包括可穿戴设备、智能扬声器、家用电器、汽车、平板设备或其他客户端设备106。
电子文档是在客户端设备106呈现一组内容的数据。电子文档的示例包括网页、文字处理文档、可移植文档格式(portable document format,PDF)文档、图像、视频、搜索结果页面、电子游戏、虚拟(或增强)现实环境以及提要源(feed source)。本地应用(例如,“app”),诸如安装在移动、平板或台式计算设备上的应用,也是电子文档的示例。电子文档可以由内容服务器104提供给客户端设备106。例如,内容服务器104可以包括托管发布者网站的服务器。在该示例中,客户端设备106可以发起对给定发布者网页的请求,并且托管给定发布者网页的内容服务器104可以通过发送发起客户端设备106处的给定网页的呈现的机器可执行指令来响应该请求。
在另一示例中,内容服务器104可以包括应用服务器,客户端设备106可以从该应用服务器下载应用。在该示例中,客户端设备106可以下载在客户端设备106安装应用所需的文件,然后在本地执行下载的应用。下载的应用可以被配置为呈现作为应用本身的一部分的本地内容、以及从数字组件服务器108获得的并且当应用在客户端设备106处被执行时被插入到应用中的一个或多个数字组件(例如,由第三方创建/分发的内容)的组合。
电子文档可以包括各种内容。例如,电子文档可以包括在电子文档本身内和/或不随时间变化的静态内容(例如,文本或其他指定内容)。电子文档还可以包括可能会随着时间的推移或根据请求而变化的动态内容。例如,给定电子文档的发布者可以维护用于填充电子文档的部分的数据源。在该示例中,给定电子文档可以包括标签或脚本,其中当给定电子文档被客户端设备106处理(例如,呈现或执行)时,该标签或脚本使得客户端设备106从数据源请求内容。客户端设备106将从数据源获得的内容集成到给定的电子文档中,以创建包括从数据源获得的内容的复合电子文档。
在一些情况下,给定的电子文档可以包括引用数字组件分发系统110的数字组件标签或数字组件脚本。在这些情况下,当客户端设备106处理给定电子文档时,客户端设备106执行数字组件标签或数字组件脚本。数字组件标签或数字组件脚本的执行将客户端设备106配置为生成对数字组件112的请求(称为“组件请求”),该请求通过网络102发送到数字组件分发系统110。例如,数字组件标签或数字组件脚本可以使客户端设备106能够生成包括报头和有效载荷数据的分组化数据请求。数字组件请求112可以包括指定特征的事件数据,该特征诸如是从其请求媒体的服务器的名称(或网络位置)、请求设备(例如,客户端设备106)的名称(或网络位置)和/或数字组件分发系统110可以用来选择响应于请求而提供的一个或多个数字组件的信息。组件请求112由客户端设备106通过网络102(例如,电信网络)发送到数字组件分发系统110的服务器。
数字组件请求112可以包括指定其他事件特征(诸如被请求的电子文档和可以呈现数字组件的电子文档的位置特征)的事件数据。例如,可以向数字组件分发系统110提供事件数据,该事件数据指定对将在其中呈现数字组件的电子文档(例如,网页或应用)的引用(例如,统一资源定位符(Uniform Resource Locator,URL))、可用于呈现数字组件的电子文档的可用位置、可用位置的大小和/或有资格在这些位置呈现的媒体类型。类似地,指定与电子文档相关联的关键字(“文档关键字”)或由电子文档引用的实体(例如,人、地方或事物)的事件数据也可以被包括在组件请求112中(例如,作为有效载荷数据)并被提供给数字组件分发系统110,以便于标识有资格与电子文档一起呈现的数字组件。事件数据还可以包括从客户端设备106提交的为了获得搜索结果页面和/或指定搜索结果和/或包括在搜索结果中的文本、听觉或其他视觉内容的数据的搜索查询。
组件请求112还可以包括与其他信息相关的事件数据,该其他信息诸如是客户端设备106的用户已经提供的信息、指示从其提交组件请求的状态或区域的地理信息、或者提供其中数字组件将被显示的环境的上下文的其他信息(例如,组件请求的一天中的时间、组件请求的一周中的一天、数字组件将在其处被显示的设备的类型,诸如移动设备或平板设备)。组件请求112可以例如通过分组化网络发送,并且组件请求112本身可以被格式化为具有报头和有效载荷数据的分组化数据。报头可以指定分组的目的地,并且有效载荷数据可以包括上面讨论的任何信息。
包括一个或多个数字组件分发服务器的数字组件分发系统110响应于接收到组件请求112和/或使用包括在组件请求112中的信息,选择将与给定电子文档一起呈现的数字组件。在一些实施方式中,在不到一秒的时间内选择数字组件,以避免可能由数字组件的延迟选择引起的错误。例如,响应于组件请求112提供数字组件的延迟可能导致客户端设备106处的页面加载错误,或者导致电子文档的部分保持未被填充,即使在电子文档的其他部分被呈现在客户端设备106处之后。此外,随着向客户端设备106提供数字组件的延迟增加,当数字组件被递送到客户端设备106时,电子文档更有可能不再呈现在客户端设备106处,从而负面影响用户对电子文档的体验以及浪费系统带宽和其他资源。此外,例如,如果当提供数字组件时电子文档不再呈现在客户端设备106上,则提供数字组件的延迟会导致数字组件的递送失败。
为了便于电子文档的搜索,环境100可以包括搜索系统150,其通过爬行和索引电子文档(例如,基于电子文档的爬行内容进行索引)来识别电子文档。可以基于与数据相关联的电子文档来索引关于电子文档的数据。电子文档的被索引的以及可选地被高速缓存的副本被存储在搜索索引152(例如,(多个)硬件存储设备)中。与电子文档相关联的数据是表示电子文档中包括的内容的数据和/或电子文档的元数据。
客户端设备106可以通过网络102向搜索系统150提交搜索查询。作为响应,搜索系统150访问搜索索引152以识别与搜索查询相关的电子文档。搜索系统150以搜索结果的形式识别电子文档,并在搜索结果页面中将搜索结果返回给客户端设备106。搜索结果是由搜索系统150生成的数据,其识别对特定搜索查询做出响应(例如,相关)的电子文档,并且包括活动链接(例如,超文本链接),该活动链接使得客户端设备响应于用户与搜索结果的交互从指定位置请求数据。示例搜索结果可以包括网页标题、从网页中提取的文本片段或图像的一部分、以及网页的URL。另一示例搜索结果可以包括可下载应用的标题、描述可下载应用的文本片段、描绘可下载应用的用户界面的图像、和/或可将应用下载到客户端设备106的位置的URL。另一示例搜索结果可以包括流媒体的标题、描述流媒体的文本片段、描绘流媒体内容的图像和/或可将流媒体下载到客户端设备106的位置的URL。像其他电子文档一样,搜索结果页面可以包括一个或多个槽,其中可以呈现数字组件(例如,广告、视频剪辑、音频剪辑、图像或其他数字组件)。
在一些实施方式中,数字组件分发系统110在分布式计算系统中实施,该分布式计算系统包括例如服务器和多个计算设备的集合114,这些计算设备互连并响应于组件请求112识别和分发数字组件。多个计算设备的集合114一起操作以从数百万个可用数字组件的语料库(corpus)中识别有资格呈现在电子文档中的一组数字组件。
在一些实施方式中,数字组件分发系统110实施用于选择和分发数字组件的不同技术。例如,数字组件可以包括促成(例如,制约或限制)对应数字组件的选择/分发/传输的对应分发参数。例如,分发参数可以通过要求组件请求包括与数字组件的分发参数之一匹配(例如,精确地匹配或以某个预先指定的相似性水平匹配)的至少一个标准来促成数字组件的传输。
在另一个示例中,特定数字组件的分发参数可以包括分发关键词,这些分发关键词必须匹配(例如,通过电子文档、文档关键词或组件请求112中指定的术语),以便数字组件有资格被呈现。分发参数还可以要求组件请求112包括指定特定地理区域(例如,国家或州)的信息和/或指定组件请求112起源于特定类型的客户端设备106(例如,移动设备或平板设备)的信息,以便组件项目有资格被呈现。分发参数还可以指定用于评估用于选择/分发/传输(例如,在其他可用的数字组件中)的组件项目的资格的资格值(例如,等级、分数或一些其他指定值),如下面更详细讨论的。在一些情况下,资格值可以基于当特定事件归因于数字组件项目(例如,数字组件的呈现)时将提交的量。
有资格的数字组件的识别可以被分割成多个任务117a-117c,然后在多个计算设备的集合114中的计算设备之间分配这些任务。例如,集合114中的不同计算设备114可以各自分析不同的数字组件,以识别具有与组件请求112中包括的信息相匹配的分发参数的各种数字组件。在一些实施方式中,集合114中的每个给定计算设备114可以分析不同的数据维度(或维度集合)并将分析的结果(Res 1-Res 3)118a-118c传递(例如传输)回数字组件分发系统110。例如,由集合114中的计算设备114中的每一个提供的结果118a-118c可以识别响应于组件请求有资格分发的数字组件项目的子集和/或具有特定分发参数的数字组件的子集。数字组件的子集的识别可以包括,例如,将事件数据与分发参数进行比较,并且识别具有与事件数据的至少一些特征匹配的分发参数的数字组件的子集。
数字组件分发系统110聚合从多个计算设备的集合114接收的结果118a-118c,并使用与聚合的结果相关联的信息来选择将响应于组件请求112而提供的一个或多个数字组件。例如,数字组件分发系统110可以基于一个或多个数字组件评估过程的结果来选择获胜数字组件的集合(一个或多个数字组件)。进而,数字组件分发系统110可以生成并通过网络102发送回复数据120(例如,表示回复的数字数据),其中该回复数据120使得客户端设备106能够将获胜数字组件的集合集成到给定的电子文档中,使得获胜数字组件的集合和电子文档的内容一起呈现在客户端设备106的显示器上。
在一些实施方式中,客户端设备106执行包括在回复数据120中的指令,该回复数据120配置并使客户端设备106能够从一个或多个数字组件服务器108获得获胜数字组件的集合。例如,回复数据120中的指令可以包括网络位置(例如,URL)和脚本,其中该脚本使得客户端设备106向数字组件服务器108发送服务器请求(server request,SR)121,以从数字组件服务器108获得给定的获胜数字组件。响应于服务器请求121,数字组件服务器108将识别在服务器请求121中指定的给定获胜数字组件,并将在客户端设备106处呈现电子文档中的给定获胜数字组件的数字组件数据122(DI数据)发送给客户端设备106。
在一些情况下,接收与用户先前访问和/或与用户交互的网页、应用页面或其他电子资源相关的数字组件(或其他数据)对用户是有益的。为了将这样的数字组件分发给用户,可以基于用户访问的数字内容将用户分配给用户组,例如用户兴趣组、相似用户群组或涉及相似用户数据的其他组类型。例如,当用户访问特定网站并与网站上呈现的特定项目交互或向虚拟购物车添加项目时,该用户可以被分配给已经访问过相同网站或上下文相似或对相同项目感兴趣的其他网站的用户组。为了说明,如果客户端设备106的用户搜索鞋并访问不同鞋制造商的多个网页,则可以将用户分配给用户组“鞋”,该用户组“鞋”可以包括访问过与鞋相关的网站的所有用户的标识符。
在一些实施方式中,用户的组成员资格可以在用户的客户端设备106处维护,例如,通过基于浏览器的应用,而不是通过数字组件服务器108或内容平台104来维护,或通过另一方来维护。用户组可以由用户组的相应标签来指定。用户组的标签可以是对组的描述(例如,园艺组)或表示组的代码(例如,非描述性的字母数字序列)。用户组的标签可以存储在客户端设备106处的安全存储装置中,和/或可以在存储时被加密,以防止其他人访问该列表。
在一些实施方式中,可以使用由用户组的标签和内容平台104的域参数化的基于散列的消息认证码(hash-based message authentication code,HMAC)(表示为HMAC(user_group_label,eTLD+1))来生成用户组的标识符。在一些实施方式中,可以使用安全散列算法(secure hash algorithm,SHA-256)来实施HMAC,该算法是具有256比特摘要长度的加密散列函数,以生成散列化的256比特(32字节)输出。在这样的示例中,HMAC(user_group_label,eTLD+1)为用户组生成256比特的唯一标识符作为用户组标识符。
内容平台104可以使用用户的用户组成员资格来选择用户可能感兴趣的或者以另一种方式(例如,帮助用户完成任务)对用户/用户设备有益的数字组件或其他内容。例如,这样的数字组件或其他内容可以包括改善用户体验、改善用户设备的运行或以某种其他方式有益于用户或用户设备的数据。
当诸如浏览器的应用107加载包括一个或多个数字组件槽的发布者140的网站142时,应用107可以为每个槽请求数字组件。在一些实施方式中,数字组件槽可以包括使得应用107请求数字组件以呈现给客户端设备106的用户的代码(例如,脚本)。在从数字组件服务器接收到数字组件作为响应之后,数字组件被呈现在网站142的相应数字组件槽中。然而,在这种情况下,为了避免重复呈现相同的数字组件,应用107可以维护通用标识符的集合,使得集合中的每个标识符可以唯一地标识先前在客户端设备106上呈现的数字组件。例如,可信程序(例如,网络浏览器或操作系统可以维护标识符的集合,或者客户端设备106)。
在一些实施方式中,每个数字组件可以包括唯一标识内容源的域内的每个数字组件的标识符(例如,对于数字组件服务器108)。在其他实施方式中,数字组件可以是数字组件服务器108的活动的一部分。例如,数字组件服务器108可以发起促销特定品牌鞋子的活动。为了宣传该活动,数字组件服务器108可以提供与特定品牌的鞋上下文相关的多个数字组件。在这种情况下,与鞋子品牌上下文相关的多个数字组件中的每一个是活动的一部分。在这种情况下,活动中的多个数字组件中的每一个可以用唯一的标识符(称为活动标识符)来标识,其中该标识符将该活动与数字组件服务器108的其他活动区分开来。
当数字组件经由应用107呈现在客户端设备106上时,应用107检索由数字组件服务器108分配给数字组件的活动标识符。在一些实施方式中,应用107还可以检索数字内容提供商的域的eTLD+1。eTLD+1是有效的顶级域(eTLD)加上比公共后缀多一个级别。eTLD+1的示例是“example.com”,其中“.com”是顶级域。
在针对特定数字组件检索活动标识符和数字内容提供商(也称为内容源)的域的eTLD+1之后,应用107可以为特定数字组件生成通用标识符。在一些实施方式中,数字组件服务器108可以生成通用标识符并将其分配给数字组件。在这样的实施方式中,应用107可以检索呈现在客户端设备106上的数字组件的通用标识符。通用标识符是唯一表示数字组件的数据,其中该数字组件(i)由特定内容源(例如,数字内容提供商)提供,并且(ii)由相同的活动或分发规则的集合触发以递送给客户端设备。换句话说,具有相同的通用标识符的两个不同的数字组件(或其他数据文件)被认为源自相同的内容源,并且被相同的活动触发来递送。为了简洁和可读性,下面的描述也将通用标识符称为唯一标识特定数字组件。在一些实施方式中,数字组件的通用标识符可以使用由活动标识符和数字组件服务器108的域参数化的基于散列的消息认证码(HMAC)(表示为HMAC(campaign_identifier,eTLD+1))来计算。在一些实施方式中,可以使用安全散列算法(SHA-256)来实施HMAC,该算法是具有256比特摘要长度的加密散列函数,以生成散列化的256比特(32字节)输出。在这样的示例中,HMAC(campaign_identifier,eTLD+1)为数字组件生成256比特唯一标识符作为通用标识符。
通过使用散列函数来生成通用标识符,在没有附加信息的情况下,除了在客户端设备106上执行的应用107和数字组件的相应数字组件服务器108之外的任何实体要找出提供数字组件的内容源的身份或内容源使用的活动标识符在计算上是不切实际的。因此,如果另一个实体接收到通用标识符的集合或者以某种方式获得对通用标识符的未授权访问,散列函数方式保护了内容源的机密信息。
应用107维护通用标识符的集合,该通用标识符的集合在所有数字组件服务器108上的整个活动空间中唯一地标识数字组件。在一些实施方式中,通用标识符的集合包括、被索引到集合中的通用标识符中的每一个的呈现计数器或以其他方式与集合中的通用标识符中的每一个的呈现计数器相关联。每个特定通用标识符的呈现计数器指示具有该特定通用标识符的数字组件的递送和/或呈现的频率。例如,特定通用标识符的呈现计数器可以表示具有该特定通用标识符的数字组件在给定时间帧中先前被递送到和/或呈现在客户端设备106上的次数。
在为被递送到客户端设备106并呈现在客户端设备106上的特定数字组件计算/生成通用标识符之后,应用107用特定数字组件的通用标识符更新通用标识符的集合。在集合中不存在特定数字组件的通用标识符的情况下,应用107将特定数字组件的通用标识符添加到的集合中,并将对应的呈现计数器递增1。在集合中已经存在特定数字组件的通用标识符的情况下,应用107例如通过将计数器递增1来更新通用标识符的对应的呈现计数器。
在一些实施方式中,在客户端设备106处执行的应用107可以维护被阻止的通用标识符的集合,该通用标识符的集合包括已经被用户明确阻止的数字组件的通用标识符。例如,假设用户与对应于给定数字组件(或被递送到客户端设备106的数据的一部分)的静音元件交互。在该示例中,用户与静音元件的交互是用户不希望在未来(例如,至少某一时间量内)看到该数字组件或潜在相似的数字组件(例如,来自相同的内容源或活动)的指示。响应于该交互,应用107可以将给定数字组件的通用标识符添加到被阻止的通用标识符的集合中,然后该通用标识符可以用于阻止具有与给定数字组件相同的通用标识符的其他数字组件的递送(或呈现)。
应用107可以将已经被递送/呈现至少预定次数(例如,在指定时间段(诸如一天、一周、一个月等)内,呈现超过X次)的数字组件的那些通用标识符添加到被阻止的通用标识符的集合中。例如,当具有通用标识符1A2B3C的数字组件在过去的Y天内已经被递送并呈现给特定用户超过X次时,应用107可以将通用标识符1A2B3C添加到存储在客户端设备106处的被阻止的通用标识符的集合中。
可以基于每个内容源和/或每个活动来指定用于将通用标识符添加到被阻止的通用标识符的集合的呈现的阈值数量和/或指定的时间段。例如,数字组件服务器可以在客户端设备106上存储活动的规则的集合,其中这些规则不允许活动的数字组件的呈现在设置的持续时间(称为max_time)内超过设置的次数(称为max_ppt)。在这种情况下,在从包括数字组件的响应中检索数字组件标识符和eTLD+1域时,应用107还可以检索定义活动的规则的信息。当在一时间段内呈现特定活动的数字组件并更新与数字组件相关联的通用标识符的集合时,如果呈现计数器超过max_ppt,则应用107通过将通用标识符添加到被阻止的通用标识符的集合来更新被阻止的通用标识符的集合。例如,假设应用107检索由数字组件服务器108设置的特定活动的规则,其中该数字组件服务器108将max_ppt设置为2并将max_time设置为60秒。还假设应用107已经呈现了由数字组件服务器108为特定活动提供的第一数字组件。此时,应用107为第一数字组件生成通用标识符,并通过包括第一数字组件的通用标识符来更新通用标识符的集合,并将相应的呈现计数器从0增加到1。注意,max_ppt=2和max_time=60秒意味着在呈现第一数字组件之后的60秒内,在客户端设备106上只能呈现属于数字组件服务器108的特定活动的一个更多的数字组件。
继续上述示例,假设在呈现第一数字组件20秒之后,应用107针对特定活动从同一数字组件服务器108接收第二数字组件。应用107为第二数字组件生成通用标识符,并通过将对应的呈现计数器从1增加到2来更新通用标识符的集合。注意,此时,由数字组件服务器108提供的并且与特定活动相关的数字组件已经在客户端设备106上呈现的次数是2(即,等于max_ppt)。在这种情况下,应用107将通用标识符添加到被阻止的通用标识符的集合,从而指示具有相同通用标识符(或者可能不完全相同的匹配通用标识符,诸如在值的范围内)的数字组件(或其他数据)被阻止呈现在客户端设备106处。
在一些实施方式中,具有相同max_time的通用标识符的集合可以使用先进先出(first-in,first-out,FIFO)方法来实施。FIFO中的每个条目是一对{time_stamp,universal_identifier}。还假设对于属于数字组件服务器的特定活动的数字组件,即对于数字组件服务器的特定活动,数字组件服务器108将max_ppt设置为2,并且将max_time设置为60秒,在60秒的持续时间内最多2个数字组件将被呈现在应用107上。在这种情况下,由应用107实施的FIFO将保存两个条目,并且每当来自特定活动的数字组件被呈现在应用107上时,具有数字组件的活动的通用标识符和数字组件何时被呈现在应用107上的时间戳的条目被推入FIFO。这种实施方式还可以包括条目删除方法,其中当第一个条目的时间戳早于max_time时,该方法可以自动删除FIFO的第一个条目。如果在任何时间点,如果FIFO包含多于max_ppt次出现的universal_identifier,则对应的条目被包括在被阻止的通用标识符集合中。
在一些实施方式中,如果用户在max_time指示的最新近时间段中没有阻止与通用标识符相关联的活动和/或数字组件,则应用107可以从被阻止的通用标识符的集合中移除该通用标识符,从而允许与被删除的通用标识符相关联的数字组件呈现在客户端设备106上的应用107上。继续上面的示例,当用户阻止对应的活动和/或数字组件时,应用可以维护具有成对的被阻止的通用标识符和时间戳的FIFO。如果第一个条目的时间戳晚于max_time,应用会自动删除FIFO的第一个条目。在任何时候,应用107可以收集FIFO中的被阻止的通用标识符的集合,并且结果是被阻止的通用标识符的集合。
在一些实施方式中,应用107可以提供用户界面,该用户界面使得用户能够阻止和/或允许在客户端设备处呈现数字组件。例如,用户界面可以使用户能够选择用户希望将来看不到的数字组件。在这种情况下,应用107可以生成通用标识符,并将其添加到被阻止的通用标识符的集合中。这为用户提供了更好的透明度和控制。在另一种情况下,用户界面可以使用户能够重置被阻止的通用标识符的集合,这将从被阻止的通用标识符的集合中移除所有条目,从而允许在客户端设备106上呈现所有数字组件。
在一些实施方式中,由数字组件服务器108提供的数字组件可以包括静音元件。静音元件是包括在数字组件中的用户界面控件,并且响应于用户与静音元件的交互,触发脚本,该脚本生成用户不希望在未来(例如,至少在特定时间段内)看到该数字组件(或潜在相似的数字组件)的指示。在使用中,如果用户希望将来看不到类似的数字组件,用户可以与静音元件交互。
在这样的实施方式中,应用107可以包括通过分析信号的集合来确定用户与呈现在客户端设备106上的数字组件的静音元件的交互的技术和方法。例如,应用107可以实施基于启发式的方法,以用于确定用户与数字组件的静音元件的交互。在这样的实施方式中,应用107分析由用户与由数字组件服务器108提供的数字组件的交互生成的信号。
在另一个示例中,应用107可以实施包括多个可训练参数并且被训练成通过分析信号来确定用户与呈现在客户端设备106上的数字组件的静音元件的用户交互的机器学习模型。机器学习模型可以是被认为适合于特定实施的任何模型,诸如决策树、人工神经网络、遗传编程、逻辑编程、支持向量机、聚类、强化学习、贝叶斯推理等。
在另一示例中,包括呈现数字组件的数字组件槽的网站142可以包括机器可执行指令(例如,嵌入在网站142中的脚本),以确定用户与数字组件的静音元件的交互。在检测到用户与静音元件的交互之后,机器可执行指令可以使用一个或多个应用用户接口(application user interface,API)通知应用107。
当诸如浏览器的应用107加载包括一个或多个数字组件槽的网站142时,应用107可以为每个槽请求数字组件。在一些实施方式中,应用107可以生成概率数据结构,该概率数据结构表示被阻止的通用标识符的集合和客户端设备106(或用户)所属的用户组。在一些情况下,应用107可以以更多带宽消耗和更多计算成本为代价,为被阻止的通用标识符的集合和用户组生成两个布谷鸟过滤器(cuckoo filter)。应用107可以将概率数据结构与对数字组件的请求一起发送,以便于对向客户端设备106递送数据(诸如数字组件)的管理。
在一些实施方式中,概率数据结构是布谷鸟过滤器。一般来说,布谷鸟过滤器包括桶数组,其中每个桶可以保存b个指纹。项目的指纹是从该项目的散列中导出的比特串。布谷鸟过滤器使用n个散列函数,允许将项目放在b个位置中的任何一个中的n个不同桶中。通常,布谷鸟过滤器通过其指纹和桶大小来标识。例如,(2,4)布谷鸟过滤器存储2比特长度的指纹,并且布谷鸟数组中的每个桶可以存储最多4个指纹。
在一些实施方式中,应用107使用由用户组标识符或来自被阻止的通用标识符的集合的通用标识符中的任一个和由应用107生成的随机变量参数化的伪随机函数(pseudorandom function,PRF)。例如,假设由应用107生成的随机变量是rand_var1a、rand_var1b和rand_var2。还假设桶中的每个项目是k比特整数。应用可以使用PRF(ug_id,rand_var1a)和PRF(blocked_uid,rand_var1b)生成布谷鸟过滤器表,其中ug_id是通过基于内容提供商的域在用户组的标签上应用HMAC而生成的用户组的标识符,并且blocked_uid是来自被阻止的通用标识符的集合的标识符。注意,对所有用户组标识符和被阻止的通用标识符的集合中的所有通用标识符重复该过程。
如前所述,数字组件服务器108可以部署包括两个或更多个计算服务器的安全多方计算(MPC)系统,以执行安全MPC过程来基于概率数据结构选择数字组件,而没有任何一个MPC服务器能够以明文访问信息。例如,假设MPC系统包括两个计算服务器MPC1和MPC2。为了保护用户隐私,应用107生成概率数据结构的秘密份额,并将秘密份额中的每一个发送到MPC系统的相应计算服务器。
应用107可以基于为用户组标识符和被阻止的通用标识符的集合中的通用标识符生成的布谷鸟过滤器表来生成向量B。向量B可以表示为Bi=PRF(rand_var2,i)–Ai,其中Ai是布谷鸟过滤器表,并且i是向量Bi和布谷鸟过滤器表Ai的索引。当应用107针对槽发起对数字组件的请求时,应用将rand_var1a、rand_var1b和rand_var2发送到MPC1。应用107还将向量B和rand_var1a和rand_var1b发送到MPC2。注意,由于计算服务器MPC1和MPC2中没有一个访问所有三个秘密份额和向量B,所以没有一个计算服务器能够重新创建布谷鸟过滤器表,从而维护了用户隐私。
在一些实施方式中,应用107可以使用分布式点函数(distributed pointfunction)来生成被阻止的通用标识符的集合的份额。分布点函数表示点函数的秘密份额。一般来说,点函数是函数fi:[N]→[N],其中当x!=i时f(x)=0并且f(i)=1。点函数fi的秘密份额是两个函数gi:[N]->[N]和hi:[N]->[N],使得对于集合[N]中所有x,fi(x)=gi(x)+hi(x)。此外,给定函数hi或gi(但不是两者)的参数,不可能恢复原始函数fi。
这样的实施方式可以使用布谷鸟过滤器,该布谷鸟过滤器具有使用两个散列函数F1和F2的表。客户端设备可以通过使用散列函数F1和F2两者为用户组标识符的集合中的每个用户组标识符计算用户组标识符的两个可能位置来生成布谷鸟过滤器。如果两个可能位置中的至少一个是空的,则客户端设备110可以将元素插入空位置(该空位置可以在任一表中),以完成该用户组标识符的插入过程。如果两个位置都被占用,则客户端设备110随机挑选一个位置,并将当前在该位置的项目与要插入的项目交换。客户端设备110然后可以重新计算两个散列函数F1和F2,并再次尝试插入。重复该过程,直到插入成功或者对于用户组标识符的集合中的每个用户组标识符尝试失败太多次。构造布谷鸟过滤器后,每个用户组标识符ug_id存储在表的特定索引中。
对于被阻止的通用标识符的集合中的每个通用标识符(blocked_uid),需要点函数Gblocked_uid,其中该点函数Gblocked_uid可以被分成分布式点函数gblocked_uid,1和gblocked_uid,2,使得对于下列关系满足。
如果i=F1(blocked_uid)
Gblocked_uid(i)=gblocked_uid,1(i)+gblocked_uid,2(i)=blocked_uid
否则Gblocked_uid(i)=gblocked_uid,1(i)+gblocked_uid,2(i)=0。
如果i=F2(blocked_uid)
Hblocked_uid(i)=hblocked_uid,1(i)+hblocked_uid,2(i)=blocked_uid
否则Hblocked_uid(i)=hblocked_uid,1(i)+hblocked_uid,2(i)=0。
特定点函数的分布式点函数可以在多个可能的点(例如,多个可能的被阻止的标识符)上进行评估,但是除了blocked_uid之外,结果总是零。与发送其他加密形式的用户组标识符相比,分布式点函数具有可以在网络上传输的非常小的数据大小,而无需使用太多带宽并且具有低延迟。
对于给定blocked_uid、点函数F1和布谷鸟过滤器的对应的第一表(如果blocked_uid被插入到第一表中),应用107为计算系统MPC1生成分布式点函数gblocked_uid,1,并且为计算系统MPC2生成分布式函数gblocked_uid,2。类似地,对于给定blocked_uid、点函数F2和布谷鸟过滤器的对应的第二表(如果blocked_uid被插入到第二表中),应用107为计算系统MPC1生成分布式点函数hblocked_uid,1,并且为计算系统MPC2生成分布式点函数hblocked_uid,2。
类似地,应用107可以使用分布式点函数来生成与应用107相关联的用户组的所有用户组标识符的秘密份额。对于给定ug_id、点函数F1和布谷鸟过滤器的对应的第一表(如果blocked_uid被插入到第一表中),应用107为计算系统MPC1生成分布式点函数gug_id,1,并为计算系统MPC2生成分布式函数gug_id,2。类似地,对于给定ug_id、点函数F2和布谷鸟过滤器的对应的第二表(如果blocked_uid被插入到第二表中),应用107为计算系统MPC1生成分布式点函数hug_id,1,并为计算系统MPC2生成分布式点函数hug_id,2。
在客户端设备106上执行的应用107可以向MPC系统的对应计算服务器发送包括对应秘密份额的数字组件请求。例如,应用107生成并向MPC1发送对数字组件的请求,该请求包括概率数据结构(即,布谷鸟过滤器)的第一秘密份额。请求参数包括rand_var1a、rand_var1b和rand_var2。类似地,应用107还向MPC2发送对数字组件的请求,该请求包括概率数据结构的第二秘密份额。请求参数包括向量B、rand_var1a和rand_var1b。
在一些实施方式中,在接收到秘密份额之后,MPC系统内的各个计算服务器中的每一个使用概率数据结构的秘密份额来执行安全MPC过程,以选择数字组件。例如,MPC1可以计算数组T,其中数组的第i个元素Ti=PRF(rand_var2,i)。注意,T和B是布谷鸟向量表A的两个加性秘密份额。为了在本文档中解释的目的,这两个加性秘密份额被表示为[Ai,1]和[Ai,2]。还要注意,MPC1可以计算[Ai,1],并且MPC2从应用107接收[Ai,2]。
继续上述示例,当确定每个数字组件的资格性时,可以确定数字组件中的每一个是否由被阻止的通用标识符的集合阻止,以及用户的用户组标识符(例如,兴趣组标识符)是否和与每个数字组件的选择值相对应的用户组标识符匹配。作为评估的一部分,MPC1可以计算以下内容:
[loc1,1]=[AH1(ug_id(sv)),1]==PRF(ug_id(sv),rand_var2)
[loc2,1]=[AH2(ug_id(sv)),1]==PRF(ug_id(sv),rand_var2)
[block1,1]=[AH1(blocked_uid(sv)),1]==PRF(blocked_uid(sv),rand_var2)
[block2,1]=[AH2(blocked_uid(sv)),1]==PRF(blocked_uid(sv),rand_var2)
类似地,MPC2可以计算以下内容
[loc1,2]=[AH1(ug_id(sv)),2]==PRF(ug_id(sv),rand_var2)
[loc2,2]=[AH2(ug_id(sv)),2]==PRF(ug_id(sv),rand_var2)
[block1,2]=[AH1(blocked_uid(sv)),2]==PRF(blocked_uid(sv),rand_var2)
[block2,2]=[AH2(blocked_uid(sv)),2]==PRF(blocked_uid(sv),rand_var2其中sv是参照表2解释的选择值。
即使计算服务器不访问MPC系统的其他计算服务器的秘密份额,MPC系统的每个计算服务器也可以使用上面确定的值来基于秘密份额信息确定不同数字组件的资格性。一般来说,通过检查由MPC系统的计算服务器接收的概率数据结构的秘密份额内的两个位置,MPC的每个计算服务器确定对应于每个选择值(例如,每个数字组件的分数、排名、出价或其他选择值)的特定用户组标识符(例如,兴趣组标识符)是否包括在由客户端设备106提供的概率数据结构中。MPC系统的每个计算服务器还在由该MPC接收的概率数据结构的秘密份额中确定对应于每个选择值的通用标识符是否包含在被阻止的通用标识符的集合中,其中该被阻止的通用标识符被包括在由客户端设备提供的概率数据结构中。为了使数字组件有资格分发,必须在概率数据结构中找到与该数字组件的选择值相关联的用户组标识符,并且不可以在概率数据结构中找到该数字组件的通用标识符。
上面列出的计算导致指示任一MPC计算服务器是否将与数字组件的选择值相关联的用户组标识符(例如,兴趣组标识符)定位在概率数据结构的它们各自的秘密份额中的两个指定位置中的任一个。例如,MPC计算服务器将执行安全的MPC过程来计算loc1或loc2的秘密份额中的值1,即loc1的值可以从[loc1,1]和[loc1,2]重建。类似地,如果MPC计算服务器可用的概率数据结构的两个位置中的任何一个指示和与选择值相关联的用户组标识符的匹配,则loc2的值可以从[loc2,1]和[loc2,2]重建。否则,MPC服务器将计算loc1和loc2两者的秘密份额中的值0,其中值0指示在与选择值相关联的用户组标识符和用户的用户组标识符之间没有识别出匹配。与选择值相关联的用户组标识符必须由MPC系统在位置之一处识别,以便选择值有资格,并且对应的数字组件有资格以递送给客户端设备106。然而,如果数字组件被阻止(例如,通过将其通用标识符包括在被阻止的通用标识符的集合中),则即使MPC之一识别出数字组件的选择值的用户组标识符和用户的用户组标识符之间的匹配,该数字组件仍然没有资格被递送。
关于对应于选择值的数字组件是否被阻止,根据上面示出的关系,如果概率数据结构的两个位置中的任何一个指示数字组件的通用标识符包括在被阻止的通用标识符的集合中,则MPC1将为block1或block2中的任何一个计算为1。否则,MPC服务器将为block1和block2计算为0。如果通用标识符被MPC服务器确定为包括在概率数据结构中,则数字组件将没有资格递送给客户端设备。
为了确定每个选择值和对应数字组件的资格性,必须评估MPC1和MPC2的结果,以确定数字组件是否被阻止,以及与选择值相关联的用户组标识符是否在概率数据结构中找到。继续上面的示例,作为资格性确定的一部分,MPC1可以确定每个候选选择值(和候选数字组件)的资格性,例如,通过如下计算秘密布尔参数[is_candidatesv,1]
[is_candidatesv,1]=(1-[loc1,1==0]x[loc2,1==0])x[block1,1==0]x[block2,1==0]。类似地,MPC2可以如下计算秘密布尔参数[is_candidatesv,2]
[is_candidatesv,2]=(1-[loc1,2==0]x[loc2,2==0])x[block1,2==0]x[block2,2==0]。
当在MPC可用的概率数据结构的秘密份额的两个指定位置中的任一个中找到用户的用户组标识符(例如,兴趣组标识符)并且在MPC可用的概率数据结构的秘密份额的两个指定位置中的任一个中没有找到数字组件的通用标识符时,这些操作导致值1,该值1是选择要递送到客户端设备106的数字组件的有资格的指示。如果在MPC检查的两个指定位置中的任何一个中找到通用标识符,则该值将为0,使数字组件没有资格用于递送。这些结果可以被用作如参考图2更详细描述的用于选择要递送到客户端设备的数字组件的数字组件选择过程的一部分。例如,如果其两个秘密份额为[is_candidatesv,1]和[is_candidatesv,2]的秘密消息的值为0,则该选择值将被视为没有资格,使得该选择值不能用于触发向客户端设备106递送对应的数字组件。
在一些实施方式中,数字组件的源可以向MPC系统提供数字组件的包括选择值的选择标准。选择值可以指示数字组件服务器108(或内容源)愿意为呈现或用户与数字组件的交互提供的量。MPC系统可以存储选择标准以用于未来的从客户端设备106接收的数字组件请求。对于每个数字组件,内容源还可以加载数字组件的附加数据,例如元数据。数字组件的附加数据可以包括对应于该数字组件的用户组的用户组标识符(例如,兴趣组标识符)。例如,内容源可以管理包括数字组件的集合的活动,其中数字组件被分发到作为用户组的成员的用户的客户端设备106。
数字组件的附加数据可以包括上下文选择信号,其指示数字组件有资格的上下文,例如,客户端设备106的位置、为应用107选择的口头语言、数字组件可以呈现的资源的通用资源定位符(URL)和/或数字组件不能呈现的资源的被排除的URL。数字组件的该数据还可以识别数字组件,例如,使用唯一标识符、可以从中获得数字组件的域和/或数字组件的其他适当数据。
在一些实施方式中,MPC系统缓存或以其他方式存储提供给MPC系统以用于数字组件请求的数字组件的选择值。在该示例中,数字组件和选择值的上下文信号可以包括该数字组件请求中包括的上下文信号。
在一些实施方式中,MPC系统的每个计算服务器使用两级查找表(lookup table,LUT)存储数字组件的选择值。第一级可以由用户组请求关键字(UG_Request_Key)来键控(keyed)。UG_Request_Key可以是基于上下文信号的集合(例如数字组件请求的上下文信号的集合(例如,URL、位置、语言等)或对于其数字组件有资格被分发的上下文信号的集合)的合成消息。也就是说,第一级LUT可以基于上下文信号的集合进行键控。第一级的关键字可以是UG_Request_Key的散列,例如,使用诸如SHA256的散列函数。该关键字可以被截断到指定数量的比特,例如16比特、32比特或其他合适数量的比特。第一级LUT中的每个关键字UG_Request_Key的值可以指示第二级LUT的行,第二级LUT包括对于数字组件请求有资格的数字组件的数据,该数字组件请求包括UG_Request_Key的上下文信号。示例第一级LUT如下表1所示。
关键字 | 值 |
SHA256(UG_Request_Key) | 行… |
… | 行… |
表1
第二级LUT可以基于第一级LUT中的用户组请求关键字UG_Request_Key和用户组标识符的组合来键控。第二级LUT中的每一行可以用于特定数字组件的特定选择值。例如,内容源可以为同一数字组件提交不同的选择值,每个选择值用于上下文信号的不同集合和/或不同的用户组标识符。因此,数字组件的选择值可以基于上下文而变化。
内容源(例如,数字组件服务器108)可以将数字组件与内容源想要向其呈现数字组件的用户组相关联(例如,链接或映射)。例如,数字组件服务器108可以指定将与男子篮球鞋相关的数字组件呈现给对篮球和/或鞋感兴趣的男子。在该示例中,数字组件服务器108可以向MPC系统提供指示数字组件对应于用户组的用户组标识符的数据,该用户组包括对篮球和/或鞋感兴趣的男子。
在一些实施方式中,第二级LUT中的行的关键字可以是基于用户组请求关键字UG_Request_Key和该行的数字组件的用户组标识符的组合而生成的散列或代码。例如,关键字可以是该组合的基于散列的消息认证码(HMAC),可以表示为HMACSHA256(UG_Request_Key,ug_id)。
继续前面的男子篮球鞋示例,包括要呈现给男子篮球鞋组中的用户的数字组件的信息的行的第二级查找关键字可以是用户组请求关键字UG_Request_Key和男子篮球鞋组的用户组标识符ug_id的组合。由于数字组件可以在不同的上下文中呈现,第二级查找表可以包括数字组件(男子篮球鞋组的用户组标识符ug_id)的多个行,每一行具有不同的用户组请求关键字UG_Request_Key和不同的值。
第二级LUT的每行的值可以是数字组件的选择值和数字组件的其他数据,例如,标识数字组件或数字组件可从其下载的网络位置的元数据等。该值可以是数字组件信息元素dc_information_element,其可以是具有选择值和元数据的字节数组。字节数组可以具有特定的格式,客户端设备106的应用107或可信程序和计算系统MPC1和MPC2可以解析该格式以获得选择值和元数据。示例第二级LUT如下表2所示。
表2
第二级LUT将选择值映射到特定数字组件、特定用户组标识符ug_id以及映射到由第一级查找关键字UG_Request_Key定义的上下文信号的特定集合。通过这样做,第二级LUT指示数字组件的选择值打算用于的数字组件槽的特定上下文。这允许数字组件服务器108针对由上下文信号和用户的组成员资格定义的不同上下文,为同一数字组件指定不同的选择值。当接收到指示将向其呈现数字组件的用户是由特定用户组标识符ug_id标识的特定用户组的成员并且数字组件将在由第一级查找关键字的上下文信号定义的特定上下文中呈现的数字组件请求时,第二级LUT中具有匹配用户组标识符和匹配第一级查找关键字的任何选择值是响应于该请求而被选择用于分发的候选。
图2是用于选择分发到客户端设备的数字组件的示例过程200的泳道图。过程200的操作可以例如通过MPC系统的计算系统MPC1和MPC2来实施。过程200的操作也可以被实施为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行这些指令可以使一个或多个数据处理装置执行过程200的操作。
计算系统MPC1识别有资格的选择值(202)。如上面参考图1详细描述的,计算系统MPC1可以为从应用107接收的数字组件请求识别有资格的选择值。例如,当应用107针对槽发起对数字组件的请求时,应用可以将rand_var1a、rand_var1b和rand_var2作为数字组件请求中的参数发送给MPC1。数字组件请求还可以包括基于数字组件请求的上下文信号生成的第一级查找关键字,例如SHA256(UG_Request_Key)。
计算系统MPC1可以使用数字组件请求的第一级查找关键字来识别有资格的选择值。计算系统MPC1可以访问第一级LUT,并使用第一级查找关键字来识别第二级LUT的行,其中第二级LUT的行包括对于由第一级查找关键字表示的上下文信号集合的、有资格呈现的数字组件的选择值(例如,已经接收到该数字组件的选择值)的信息。例如,如上所述,第二级LUT的每行包括数字组件的信息和基于上下文信号的集合的第二级查找关键字。因此,计算系统MPC1可以使用第一级查找关键字来识别第二级LUT的行,这些行具有与在数字组件请求中接收的第一级查找关键字所定义的上下文信号的集合相匹配的上下文信号的集合。这些行包括数字组件的信息,这些数字组件有资格被呈现或具有由在数字组件请求中接收的第一级查找关键字定义的上下文的有资格的选择值。
计算系统MPC2识别有资格的选择值(204)。计算系统MPC2可以为从客户端设备106接收的数字组件请求识别有资格的选择值。例如,当应用107针对槽发起对数字组件的请求时,应用将向量B、rand_var1a和rand_var1b发送到MPC1。数字组件请求还可以包括基于数字组件请求的上下文信号生成的第一级查找关键字,例如SHA256(UG_Request_Key)。计算系统MPC2接收的数字组件请求的第一级查找关键字可以与计算系统MPC1接收的第一级查找关键字相同。
为简洁起见,过程200的剩余步骤是根据概率数据结构来描述的,该概率数据结构是响应于数字组件请求而选择用于分发到客户端设备106上的应用107的数字组件。MPC系统可以选择用于在应用107上呈现的数字组件。例如,如下,MPC1和MPC2两者执行安全MPC过程来选择数字组件。
计算系统MPC2可以使用数字组件请求的第一级查找关键字来识别有资格的选择值。计算系统MPC2可以访问第一级LUT,并使用第一级查找关键字来识别第二级LUT的行,其中第二级LUT的行包括对于由第一级查找关键字表示的上下文信号的集合的、有资格被呈现的数字组件(例如,已经接收到该数字组件的选择值)的信息。如上所述,每个计算系统MPC1和MPC2可以维护包括相同信息的相应的两级LUT。与MPC2类似,MPC1也可以使用数字组件请求的第一级查找关键字来识别有资格的选择值。
对于每个有资格的选择值,计算系统MPC1和MPC2响应于数字组件请求,确定选择值及其数字组件是否是被选择用于分发到应用107的候选(206)。候选选择值是数字组件的有资格的选择值,该数字组件具有与用户的用户组标识符相匹配的用户组标识符(例如,包括该用户作为成员的用户组的用户组标识符)并且具有不被包括在被阻止的通用标识符的集合中的通用标识符。如上所述,每个数字组件可以被映射到一个或多个用户组,包括数字组件服务器108指示应该向其呈现数字组件的成员。如上所述,该信息是第二级LUT的第二级查找关键字的一部分。
如果通过检查由MPC系统的计算服务器接收的概率数据结构内的两个位置,作为对应于每个选择值(对于每个数字组件)的行的第二级查找关键字的一部分的用户组标识符ug_id被包括在由客户端设备106提供的概率数据结构中,则第二级LUT中的行的数字组件是用于选择的候选。然而,如果数字组件被阻止(例如,通过将其通用标识符包括在被阻止的通用标识符的集合中),则数字组件仍然没有资格被递送,即使MPC系统识别出数字组件的选择值的用户组标识符和用户的用户组标识符之间的匹配。
计算系统MPC1和MPC2可以使用安全MPC技术(该安全MPC技术使用秘密份额使得MPC1和MPC2都不知道哪些数字组件是候选或者包括用户作为成员的用户组)来识别候选选择值。为此,计算系统MPC1为与用户组标识符ug_id相关联并且与作为候选用于选择的数字组件相关联的每个选择值计算候选参数的第一份额[is_candidatesv,1]。类似地,计算系统MPC2为与同一个数字组件相关联的、与用户组标识符ug_id相关联的每个选择值计算候选参数的第二份额[is_candidatesv,2]。候选参数[is_candidatesv,1]是第一秘密份额,并且[is_candidatesv,2]是第二秘密份额。
计算系统MPC1和MPC2可以使用支持下表3所示操作的秘密共享技术或秘密共享库。支持这些操作的秘密共享技术的一个示例是通过私有信息聚合的安全性(Securitythrough Private Information Aggregation,SEPIA)。
表3
计算服务器MPC1确定选择值的顺序(208)。类似地,计算服务器MPC2确定选择值的顺序(210)。这两个顺序应该完全相同,因为在两个计算系统MPC1和MPC2上,对排序过程的输入是相同的。每个计算服务器MPC1和MPC2可以在其第二级LUT中确定选择值的顺序。该顺序可以包括第二级LUT中的与UG_Request_key相关联的所有选择值,包括候选选择值和不作为候选的选择值。顺序可以是从最高选择值到最低选择值。在一些实施方式中,用于顺序的选择值可以是将被提供给网站发布者的值,其中将利用该值来呈现所选择的数字组件。由于选择值是明文形式,计算服务器MPC1和MPC2不必执行任何往返计算来排序选择值。相反,每个计算系统MPC1和MPC2可以独立地对其第二级LUT的与UG_Request_key相关联的选择值进行排序。如果选择值作为秘密份额存储在每个计算服务器MPC1和MPC2处,每个计算服务器MPC1和MPC2具有每个选择值的相应秘密份额,则计算服务器MPC1和MPC2可以使用往返计算来执行安全的MPC过程,以对选择值进行排序。如果两个或更多个选择值之间存在联系(tie),则计算系统MPC1和MPC2可以使用对应于这些选择值的数字组件的其他元数据来确定性地打破该联系。
计算服务器MPC1和MPC2为每个候选选择值确定累积值的秘密份额(212)。从概念上讲,数字组件的给定选择值的累积值表示从顺序顶部到给定选择值的候选选择值的总数,如果给定选择值是候选,则包括给定选择值。
下表4显示了这一概念。
表4
在该表中,对于具有等于1的候选参数is_candidate的每个选择值,累积值(acc)随着其从顺序的顶部前进到顺序的底部而递增。例如,因为最高选择值的候选参数is_candidate等于零,所以最高选择值的累积值acc为零。因为第二选择值的候选参数is_candidate等于1,并且第二高选择值以上的选择值都不具有等于1的候选参数is_candidate,所以第二选择值的累积值acc为1。沿顺序向下移动,第三高选择值的候选参数is_candidate为零,因此第三选择值的累积值acc不会从第二选择值的累积值acc开始递增。由于第四高选择值的候选参数is_candidate为1,所以第四高选择值的累积值acc从第三最高选择值的累积值acc递增1。因此,因为从最高选择值到第四高选择值(包括第四高选择值)有两个选择值具有候选参数is_candidate,所以第四高选择值的累积值acc等于2。
使用该表,计算系统MPC1和MPC2将选择对应于选择参数的数字组件以分配给应用107,其中对于该选择参数,候选参数is_candidate的值为1,并且累积值acc的值为1,如表4的第四列所示。这表示候选参数is_candidate的值为1的最高排序的选择值。由于候选参数is_candidate处于计算系统MPC1和MPC2的秘密份额中,以维护用户隐私并确保用户数据不被泄露,计算系统MPC1和MPC2为每个选择值确定累积值acc的秘密份额,并使用往返计算来确定哪个选择值具有等于1的累积值acc和等于1的候选参数is_candidate。
计算服务器MPC1和MPC2可以独立地为每个选择值确定累积值acc的秘密份额,而无需任何往返计算。例如,如上面参考表4,计算服务器MPC1可以通过按照从最高到最低的顺序遍历(traversing)所有选择值并对过程中的选择值的候选参数is_candidate求和,来为每个选择值确定对于选择值sv的累积值acc的第一份额[accsv,1]。类似地,计算服务器MPC2可以通过按照从最高到最低的顺序遍历所有选择值,并对过程中的选择值的候选参数is_candidate求和,来为每个选择值确定累积值acc的第二份额[accsv,2]。
计算服务器MPC1和MPC2为每个选择值确定指示累积值是否具有指定值的结果的秘密份额(214)。如表4的第3列和第4列所示,指定值可以是值1。如上所述,累加值为1并且候选参数is_candidate为1的选择值是候选选择值中最高的选择值。
计算服务器MPC1和MPC2可以参与多轮计算,例如多个远程过程调用(remoteprocedure call,RPC),作为安全MPC过程的一部分,以在每个选择值的秘密份额方面计算等式运算accsv==1。在该过程结束时,计算服务器MPC1对于每个选择值具有结果的一个秘密份额accsv,1==1,并且计算服务器MPC2对于每个选择值具有结果的另一个秘密份额accsv,2==1。
计算服务器MPC1和MPC2确定选择结果(216)。计算服务器MPC1和MPC2可以基于对于每个选择值,accsv==1的秘密份额和候选参数is_candidatesv的秘密份额来确定选择结果。为此,计算服务器MPC1和MPC2可以根据秘密份额计算胜利者参数[is_winnersv,1]和[is_winnersv,2]。胜利者参数可以是布尔值,其指示选择值是否是选择过程的胜利者,例如,对应于选择值的数字组件是否被选择用于响应于数字组件请求分发到应用107。
每个计算服务器MPC1和MPC2可以协作执行加密协议,为每个选择值计算秘密份额方面的胜利者参数。这需要计算服务器MPC1和MPC2之间的一个RPC来多重两个秘密份额。在这个MPC过程结束时,计算服务器MPC1具有结果is_winnersv的一个秘密份额,表示为[is_winnersv,1]=[is_candidatesv,1]x([accsv,1]==1)。类似地,计算服务器MPC2具有结果is_winnersv的另一秘密份额,表示为[is_winnersv,2]=[is_candidatesv,2]x([accsv,2]==1)。注意,对于所有选择值,最多一个选择值具有等于1的胜利者参数is_winnersv,其对应于被选择用于分发到应用107的数字组件。所有其他的都等于零。
计算服务器MPC1和MPC2可以基于选择值的胜利者参数和选择值的数字组件信息元素information_element或选择值本身来计算选择结果。如上所述,数字组件的数字组件信息元素information_element可以包括数字组件的选择值和数字组件的其他数据。
计算服务器MPC1和MPC2可以使用下面的关系1来计算选择结果resultF1。
在该示例中,选择结果resultF1的值将为零(如果没有具有与用户的用户组标识符匹配的用户组标识符的经高速缓存的选择值),或者选择结果resultF1的值等于具有等于1的is_winnersv的所选数字组件的数字组件信息元素information_element。在另一示例中,数字组件信息元素information_element可以用数字组件的选择值在关系1中替换。在该示例中,选择结果resultF1的值为零(如果没有具有与用户的用户组标识符匹配的用户组标识符的经高速缓存的选择值),或者选择结果resultF1的值等于具有等于1的is_winnersv的所选数字组件的选择值。
为了以秘密份额执行计算,计算系统MPC1获取所有选择值,并将可以是明文形式的选择值的数字组件信息元素information_elementsv乘以胜利者参数[is_winnersv,1]的第一秘密份额。计算系统MPC1然后可以确定这些乘积的总和,并将总和返回给提交数字组件请求的客户端设备106。也就是说,MPC1可以使用下面的关系式2来确定总和,作为结果的第一份额。
计算系统MPC2可以执行类似的计算来使用下面的关系3确定结果的第二份额。
计算系统MPC1可以将选择结果的第一份额返回给应用107。类似地,计算系统MPC2可以将选择结果的第二份额返回给应用107。应用107然后可以例如通过确定秘密份额的总和,假设采用了加性秘密份额算法,使用两个秘密份额和以明文重建选择结果resultF1。如果选择结果resultF1的值为零,则MPC集群130没有为包括该用户作为成员的用户组识别数字组件。否则,选择结果resultF1具有等于数字组件信息元素information_element的值,应用107可以解析数字组件信息元素information_element以获得数字组件的选择值和元数据。应用107然后可以如上所述显示数字组件或者使用从数字组件服务器108接收的数字组件和其他数字组件来执行选择过程。
在一些实施方式中,应用107可以执行最终验证,即由MPC系统选择的(多个)数字组件的用户组与包括用户作为成员的用户组相匹配。例如,每个数字组件的数字组件信息元素information_element可以包括数字组件的(多个)用户组标识符。应用107可以将数字组件信息元素information_element的(多个)用户组标识符与用户的用户组列表进行比较。如果不匹配,应用107可以从选择过程中排除数字组件。如果存在匹配,应用107可以在选择过程中包括数字组件。
图3是向客户端设备分发数字组件的示例过程的流程图。过程300的操作在下面被描述为由图1中描述和描绘的系统的组件执行。过程300的操作仅出于说明的目的在下面描述。过程300的操作可以由任何适当的设备或系统(例如任何适当的数据处理装置)来执行。过程300的操作也可以被实施为存储在非暂时性计算机可读介质上的指令。指令的执行使得一个或多个数据处理装置执行过程300的操作。
为呈现在浏览器上的数字组件生成通用标识符(310)。在针对特定数字组件检索活动标识符和数字内容提供商(也称为内容源)的域的eTLD+1之后,应用107可以为特定数字组件生成通用标识符。在一些实施方式中,内容源可以计算通用标识符。数字组件的通用标识符可以使用由活动标识符和数字组件服务器108的域参数化的基于散列的消息认证码(HMAC)(表示为HMAC(campaign_identifier,eTLD+1))来计算。在一些实施方式中,可以使用安全散列算法(SHA-256)来实施HMAC,该算法是具有256比特摘要长度的加密散列函数,以生成散列的256比特(32字节)输出。在这样的示例中,HMAC(campaign_identifier,eTLD+1)为数字组件生成256比特唯一标识符作为通用标识符。
更新已经为数字组件创建的通用标识符的集合(320)。应用107维护通用标识符的集合,该通用标识符的集合跨所有数字组件服务器108在整个活动空间中唯一地标识数字组件。在为被递送到客户端设备106并呈现在客户端设备106上的特定数字组件计算/生成通用标识符之后,应用107用特定数字组件的通用标识符更新通用标识符的集合。例如,当集合中不存在特定数字组件的通用标识符时,应用107将该特定数字组件的通用标识符添加到的该集合中,并将对应的呈现计数器递增1。在集合中已经存在特定数字组件的通用标识符的情况下,应用107例如通过将计数器递增1来更新通用标识符的对应的呈现计数器。
识别对应于通用标识符的被阻止的通用标识符的集合(330)。在客户端设备106处执行的应用107可以维护被阻止的通用标识符的集合,该通用标识符的集合包括最近已经被用户明确阻止的数字组件的通用标识符。例如,假设用户与对应于给定数字组件(或被递送到客户端设备106的数据的一部分)的静音元件交互。在该示例中,用户与静音元件的交互是用户不希望在未来(例如,至少某一时间量内)看到该数字组件或潜在相似的数字组件(例如,来自相同的内容源或活动,或视觉上相似的)的指示。响应于该交互,应用107可以将给定数字组件的通用标识符添加到被阻止的通用标识符的集合中,然后该通用标识符可以用于来阻止具有与给定数字组件相同的通用标识符的其他数字组件的递送(或呈现)。
应用107可以将已经被递送/呈现至少预定次数(例如,在指定时间段内,诸如一天、一周、一个月等,呈现超过X次)的数字组件的那些通用标识符添加到被阻止的通用标识符的集合中。例如,当具有通用标识符1A2B3C的数字组件在过去的Y天内已经被递送/呈现给特定用户超过X次时,应用107可以将通用标识符1A2B3C添加到存储在客户端设备106处的被阻止的通用标识符的集合中。
生成表示被阻止的通用标识符的集合和用户组标识符的概率数据结构(240)。应用107可以生成概率数据结构,该概率数据结构表示被阻止的通用标识符的集合和客户端设备106(或用户)所属的用户组。在一些实施方式中,概率数据结构是布谷鸟过滤器。为了生成布谷鸟过滤器,应用107使用伪随机函数(PRF),该伪随机函数由用户组标识符或来自被阻止的通用标识符的集合的通用标识符中的任一个、以及由应用107生成的两个随机变量中的任一个来参数化。例如,假设由应用107生成的三个随机变量是rand_var1a、rand_var1b和rand_var2。还假设桶中的每个项目都是k比特整数。应用可以生成包含PRF(ug_id,rand_var1a)和PRF(blocked_uid,rand_var1b)的布谷鸟过滤器表,其中ug_id是通过基于内容提供商的域在用户组的标签上应用HMAC而生成的用户组的标识符,并且blocked_uid是来自被阻止的通用标识符的集合的标识符。
创建概率数据结构的多个份额(250)。应用107可以基于为用户组标识符和被阻止的通用标识符的集合中的通用标识符生成的布谷鸟过滤器表来生成向量Bi。向量B可以表示为Bi=PRF(rand_var2,i)–Ai,其中Ai是布谷鸟过滤器表中第i个条目的内容,并且i是向量Bi和布谷鸟过滤器表Ai的索引。应用107生成rand_var1a、rand_var1b和rand_var2作为发送到MPC1的数字组件请求中的参数。应用107还生成向量B、rand_var1a和rand_var1b作为发送到MPC2的数字组件请求中的参数。
将多个份额中的不同份额发送到不同的服务器(260)。例如,当应用107针对槽发起对数字组件的请求时,应用将rand_var1a、rand_var1b和rand_var2作为请求参数发送给MPC1。应用107还将向量B、rand_var1a和rand_var1b作为请求参数发送给MPC2。
接收由不同的服务器中的每一个基于发送到不同的服务器的多个份额中的不同份额生成的单独响应(270)。在接收到秘密份额之后,MPC系统内的各个计算服务器中的每一个使用概率数据结构的秘密份额来执行安全MPC过程,以选择数字组件。例如,MPC1可以计算数组T,其中数组的第i个元素Ti=PRF(rand_var2,i)。当确定每个数字组件用于进行选择的资格性时,可以确定数字组件中的每一个是否由被阻止的通用标识符的集合阻止,以及用户的用户组标识符(例如,兴趣组标识符)是否和与每个数字组件的选择值相对应的用户组标识符匹配。
MPC系统的每个计算服务器可以基于秘密份额信息使用所确定的值来确定不同数字组件的资格性。MPC系统的每个计算服务器还在由该MPC接收的概率数据结构的秘密份额中确定对应于每个选择值的通用标识符是否被包含在被阻止的通用标识符的集合中,其中该被阻止的通用标识符被包括在由客户端设备提供的概率数据结构中。为了使数字组件有资格分发,必须在概率数据结构中找到与该数字组件的选择值相关联的用户组标识符,并且不可以在概率数据结构中找到该数字组件的通用标识符。
参照图2解释了选择过程的细节。此后,MPC系统的计算服务器计算选择结果resultF1,生成resultF1的秘密份额,并将相应的秘密份额发送到应用107。例如,MPC1可以将选择结果的第一份额返回给应用107。类似地,计算系统MPC2可以将选择结果的第二份额返回给应用107。
识别要在浏览器中呈现的数字组件(280)。应用107可以使用从MPC系统的计算服务器接收的秘密份额以明文形式重建选择结果resultF1。例如,应用107然后可以使用两个秘密份额,并且例如通过确定秘密份额的总和,以明文形式重建选择结果resultF1。
图4是可用于执行上述操作的示例计算机系统400的框图。系统300包括处理器410、存储器420、存储设备430和输入/输出设备440。组件410、420、430和440中的每一个可以例如使用系统总线450互连。处理器410能够处理在系统400内执行的指令。在一个实施方式中,处理器410是单线程处理器。在另一实施方式中,处理器410是多线程处理器。处理器410能够处理存储在存储器420中或存储设备430上的指令。
存储器420将信息存储在系统400内。在一个实施方式中,存储器420是计算机可读介质。在一个实施方式中,存储器420是易失性存储器单元。在另一实施方式中,存储器420是非易失性存储器单元。
存储设备430能够为系统400提供大容量存储。在一个实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)或者一些其他大容量存储设备。
输入/输出设备440为系统400提供输入/输出操作。在一个实施方式中,输入/输出设备440可以包括网络接口设备(诸如以太网卡)、串行通信设备(例如RS-232端口)、和/或无线接口设备(例如802.11卡)中的一个或多个。在另一实施方式中,输入/输出设备可以包括被配置为接收输入数据并将输出数据发送到其他输入/输出设备(例如,键盘、打印机和显示设备370)的驱动器设备。然而,也可以使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图4中描述了示例处理系统,但是本说明书中描述的主题和功能性操作的实施方式可以在其他类型的数字电子电路中实施,或者在包括本说明书中公开的结构及其结构等同物的计算机软件、固件或硬件中实施,或者在它们中的一个或多个的组合中实施。
电子文档(为简洁起见,简称为文档)不一定对应于文件。文档可以存储在保存其他文档的文件的一部分中,存储在专用于所讨论的文档的单个文件中,或者存储在多个协同文件中。
本说明书中描述的主题和操作的实施例可以在数字电子电路中实施,或者在包括本说明书中公开的结构及其结构等同物的计算机软件、固件或硬件中实施,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以实施为一个或多个计算机程序,即编码在计算机存储介质(或媒介)上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。替换地或附加地,程序指令可以被编码在人工生成的传播信号(例如机器生成的电、光或电磁信号)上,人工生成的传播信号被生成以编码信息,用于发送到合适的接收器设备以由数据处理装置执行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备或它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或包括在一个或多个单独的物理组件或介质(例如,多个光盘、磁盘或其他存储设备)中。
本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
术语“数据处理装置”包括用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统、或前述中的多个或它们的组合。该装置可以包括专用逻辑电路,例如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境可以实施各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译或解释语言、声明或过程语言)编写,并且它可以以任何形式(包括作为独立程序或作为模块、组件、子例程、对象或适合在计算环境中使用的其他单元)部署。计算机程序可以,但不是必须,对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协同文件中(例如,存储一个或多个模块、子程序或部分代码的文件)。计算机程序可以被部署为在一台计算机上或位于一个站点或分布在多个站点并通过通信网络互连的多台计算机上执行。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。这些过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实施为专用逻辑电路,例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC)。
举例来说,适合于执行计算机程序的处理器包括通用和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,以从其接收数据或向其发送数据,或两者兼有。然而,计算机不必须具有这样的设备。此外,计算机可以嵌入到另一个设备(例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)等)中。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如:半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及光盘和DVD光盘。处理器和存储器可以由专用逻辑电路来补充或结合在其中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备,例如阴极射线管(CRT,cathode ray tube)或液晶显示器(LCD,liquid crystal display)监视器,以及用户可以向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式(包括声音、语音或触觉输入)接收来自用户的输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,将网页发送到用户客户端设备上的网络浏览器。
本说明书中描述的主题的实施例可以在计算系统中实施,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或网络浏览器(用户可以通过该图形用户界面或网络浏览器与本说明书中描述的主题的实施交互)的客户端计算机,或者包括一个或多个这样的后端、中间件或前端组件的任意组合。该系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、内部网络(例如互联网)和对等网络(例如自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户机和服务器的关系是通过运行在各自计算机上并且彼此之间具有客户机-服务器关系的计算机程序产生的。在一些实施例中,服务器将数据(例如,HTML页面)发送到客户端设备(例如,出于向与客户端设备交互的用户显示数据和从其接收用户输入的目的)。在客户端设备处生成的数据(例如,用户交互的结果)可以在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实施细节,但是这些不应被解释为对任何发明或所要求保护的范围的限制,而是对特定发明的特定实施例的特定特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实施或者在任何合适的子组合中实施。此外,尽管特征可以在上面被描述为在某些组合中起作用,并且甚至最初被这样要求保护,但是在一些情况下,来自所要求保护的组合的一个或多个特征可以从集合中删除,并且所要求保护的组合可以指向子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描述了操作,但是这不应该被理解为要求以所示的特定顺序或顺序执行这些操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品中或者封装到多个软件产品中。
因此,已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。在一些情况下,权利要求中列举的动作可以以不同的顺序执行,并且仍然获得期望的结果。此外,附图中描述的过程不一定需要所示的特定顺序或顺序来获得期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
Claims (20)
1.一种计算机实施的方法,包括:
由应用并为在所述应用中呈现的数字组件生成通用标识符,所述通用标识符是(i)用于提供所述数字组件的内容源的活动标识符和(ii)所述内容源的域的组合的加密版本;
由所述应用基于所生成的通用标识符来更新已经为由所述应用在指定时间段呈现的数字组件创建的通用标识符的集合;
由所述应用识别与已经(i)由所述应用生成并(ii)被阻止用于在所述应用中呈现未来的数字组件的通用标识符相对应的被阻止的通用标识符的集合;
由所述应用生成表示所述被阻止的通用标识符的集合的概率数据结构;
由所述应用创建所述概率数据结构的多个份额;
由所述应用将所述多个份额中的不同份额发送到不同的服务器;
由所述应用接收由所述不同的服务器中的每一个基于发送到所述不同的服务器的所述多个份额中的不同份额生成的单独响应;以及
由所述应用并基于所述单独响应的组合来识别要在所述应用中呈现的数字组件。
2.根据权利要求1所述的方法,还包括:
由所述应用检测与对应于所述应用中呈现的给定数字组件的静音元件的交互;以及
响应于在最新近的时间帧中检测到与所述静音元件的交互,更新所述被阻止的通用标识符的集合,以包括所述给定数字组件的通用标识符。
3.根据权利要求1所述的方法,其中,更新所述通用标识符的集合包括响应于由所述应用呈现与特定通用标识符相关联的数字组件,递增指示具有所述特定通用标识符的数字组件的呈现频率的呈现计数器。
4.根据权利要求3所述的方法,还包括当所述呈现计数器超过指定值时,将所述特定通用标识符添加到所述被阻止的通用标识符的集合。
5.根据权利要求1所述的方法,其中,生成所述概率数据结构包括生成表示(i)所述被阻止的通用标识符的集合和(ii)与分配给所述应用的用户的用户组相对应的用户组标识符的集合的概率数据结构。
6.根据权利要求5所述的方法,其中,生成所述概率数据结构还包括使用由两个或更多个随机变量参数化的伪随机函数。
7.根据权利要求1所述的方法,其中,提供所述数字组件的实体能生成所述数字组件的通用标识符。
8.根据权利要求1所述的方法,其中,所述概率数据结构是布谷鸟过滤器。
9.一种系统,包括:
由应用并为在所述应用中呈现的数字组件生成通用标识符,所述通用标识符是(i)用于提供所述数字组件的内容源的活动标识符和(ii)所述内容源的域的组合的加密版本;
由所述应用基于所生成的通用标识符来更新已经为由所述应用在指定时间段呈现的数字组件创建的通用标识符的集合;
由所述应用识别与已经(i)由所述应用生成并(ii)被阻止用于在所述应用中呈现未来的数字组件的通用标识符相对应的被阻止的通用标识符的集合;
由所述应用生成表示所述被阻止的通用标识符的集合的概率数据结构;
由所述应用创建所述概率数据结构的多个份额;
由所述应用将所述多个份额中的不同份额发送到不同的服务器;
由所述应用接收由所述不同的服务器中的每一个基于发送到所述不同的服务器的所述多个份额中的不同份额生成的单独响应;以及
由所述应用并基于所述单独响应的组合来识别要在所述应用中呈现的数字组件。
10.根据权利要求9所述的系统,还包括:
由所述应用检测与对应于所述应用中呈现的给定数字组件的静音元件的交互;以及
响应于在最新近的时间帧中检测到与所述静音元件的交互,更新所述被阻止的通用标识符的集合,以包括所述给定数字组件的通用标识符。
11.根据权利要求9所述的系统,其中,更新所述通用标识符的集合包括响应于由所述应用呈现与特定通用标识符相关联的数字组件,递增指示具有所述特定通用标识符的数字组件的呈现频率的呈现计数器。
12.根据权利要求11所述的方法,还包括当所述呈现计数器超过指定值时,将所述特定通用标识符添加到所述被阻止的通用标识符的集合中。
13.根据权利要求9所述的系统,其中,生成所述概率数据结构包括生成表示(i)所述被阻止的通用标识符的集合和(ii)与分配给所述应用的用户的用户组相对应的用户组标识符的集合的概率数据结构。
14.根据权利要求13所述的系统,其中,生成所述概率数据结构还包括使用由两个或更多个随机变量参数化的伪随机函数。
15.根据权利要求9所述的系统,其中,提供所述数字组件的实体能生成所述数字组件的通用标识符。
16.根据权利要求9所述的系统,其中,所述概率数据结构是布谷鸟过滤器。
17.一种非暂时性计算机可读介质,存储有指令,所述指令当由一个或多个数据处理装置执行时,使得所述一个或多个数据处理装置执行操作,所述操作包括:
由应用并为在所述应用中呈现的数字组件生成通用标识符,所述通用标识符是(i)用于提供所述数字组件的内容源的活动标识符和(ii)所述内容源的域的组合的加密版本;
由所述应用基于所生成的通用标识符来更新已经为由所述应用在指定时间段呈现的数字组件创建的通用标识符的集合;
由所述应用识别与已经(i)由所述应用生成并(ii)被阻止用于在所述应用中呈现未来的数字组件的通用标识符相对应的被阻止的通用标识符的集合;
由所述应用生成表示所述被阻止的通用标识符的集合的概率数据结构;
由所述应用创建所述概率数据结构的多个份额;
由所述应用将所述多个份额中的不同份额发送到不同的服务器;
由所述应用接收由所述不同的服务器中的每一个基于发送到所述不同的服务器的所述多个份额中的不同份额生成的单独响应;以及
由所述应用并基于所述单独响应的组合来识别要在所述应用中呈现的数字组件。
18.根据权利要求17所述的非暂时性计算机可读介质,还包括:
由所述应用检测与对应于所述应用中呈现的给定数字组件的静音元件的交互;以及
响应于在最新近的时间帧中检测到与所述静音元件的交互,更新所述被阻止的通用标识符的集合,以包括所述给定数字组件的通用标识符。
19.根据权利要求17所述的非暂时性计算机可读介质,其中,生成所述概率数据结构包括生成表示(i)所述被阻止的通用标识符的集合和(ii)与分配给所述应用的用户的用户组相对应的用户组标识符的集合的概率数据结构。
20.根据权利要求19所述的非暂时性计算机可读介质,其中,生成所述概率数据结构还包括使用由两个或更多个随机变量参数化的伪随机函数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2020/063409 WO2022119578A1 (en) | 2020-12-04 | 2020-12-04 | Secured management of data distribution restrictions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114938668A true CN114938668A (zh) | 2022-08-23 |
Family
ID=74004160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080045742.XA Pending CN114938668A (zh) | 2020-12-04 | 2020-12-04 | 数据分发限制的安全管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220414247A1 (zh) |
EP (2) | EP4038532B1 (zh) |
JP (1) | JP7267471B2 (zh) |
KR (1) | KR20220079797A (zh) |
CN (1) | CN114938668A (zh) |
WO (1) | WO2022119578A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220391372A1 (en) * | 2021-06-08 | 2022-12-08 | Amadeus S.A.S. | Database offloading utilizing a locater index |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9363238B2 (en) * | 2012-06-04 | 2016-06-07 | Apple Inc. | Repackaging demographic data with anonymous identifier |
WO2014179402A2 (en) * | 2013-04-30 | 2014-11-06 | AppNexus Inc. | Methods and systems for tracking consumers without server-side profiling |
US9881320B2 (en) * | 2014-05-28 | 2018-01-30 | Apple Inc. | Targeting customer segments |
US11115479B2 (en) | 2019-01-10 | 2021-09-07 | Google Llc | Enhanced online privacy |
US11245536B2 (en) * | 2019-04-16 | 2022-02-08 | Meta Platforms, Inc. | Secure multi-party computation attribution |
-
2020
- 2020-12-04 CN CN202080045742.XA patent/CN114938668A/zh active Pending
- 2020-12-04 WO PCT/US2020/063409 patent/WO2022119578A1/en unknown
- 2020-12-04 KR KR1020217041373A patent/KR20220079797A/ko not_active Application Discontinuation
- 2020-12-04 US US17/760,881 patent/US20220414247A1/en active Pending
- 2020-12-04 JP JP2021576384A patent/JP7267471B2/ja active Active
- 2020-12-04 EP EP20829257.3A patent/EP4038532B1/en active Active
- 2020-12-04 EP EP23176573.6A patent/EP4220467A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220079797A (ko) | 2022-06-14 |
US20220414247A1 (en) | 2022-12-29 |
WO2022119578A1 (en) | 2022-06-09 |
EP4038532B1 (en) | 2023-07-26 |
JP7267471B2 (ja) | 2023-05-01 |
JP2023089216A (ja) | 2023-06-27 |
JP2023508251A (ja) | 2023-03-02 |
EP4220467A1 (en) | 2023-08-02 |
EP4038532A1 (en) | 2022-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4070223B1 (en) | Using secure multi-party computation to improve content selection process integrity | |
US20230188329A1 (en) | Using secure multi-party computation and probabilistic data structures to protect access to information | |
EP4066199A1 (en) | Feedback controller using secret sharing | |
JP7267471B2 (ja) | データ配布制限のセキュアな管理 | |
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) | セキュアマルチパーティ計算の性能の向上 | |
US20230171091A1 (en) | Flexible content selection processes using secure multi-party computation | |
US20240022392A1 (en) | Privacy preserving measurements using secure multi-party computation | |
US12026287B2 (en) | Using secure multi-party computation to improve content selection process integrity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |