多接收方安全通信的制作方法

文档序号:30623469发布日期:2022-07-02 06:07阅读:1492来源:国知局
多接收方安全通信的制作方法

1.本说明书涉及数据安全性和加密。


背景技术:

2.客户端设备通过公共网络(如互联网)发送请求和其他数据。这些通信可能被其他方更改,例如截取通信的各方和/或接收通信并将它们转发给其他方的中介。客户端设备也容易受到恶意攻击,例如病毒和恶意软件,它们可以在用户不知情或未授权的情况下发送欺诈性请求。此外,其他方可以模仿客户端设备来发送看似源自客户端设备,但实际上来自其他方的设备的请求。


技术实现要素:

3.一般而言,本说明书中描述的主题的一个创新方面可以体现在一种方法,包括由给定接收方的接收方设备从客户端设备接收包括证明令牌和一个或多个附件元素的通信。证明令牌包括一数据组和该数据组的数字签名。每个附件元素包括通信的相应接收方的接收方数据和将附件元素加密地绑定到证明令牌的绑定。该方法可以包括由接收方设备使用给定接收方的证明令牌和给定附件元素来验证通信的完整性,包括:由接收方设备验证给定附件元素的完整性,包括基于给定附件元素的绑定来确定附件元素被绑定到证明令牌;以及由接收方设备验证证明令牌的完整性,包括基于数据组来确定数字签名是有效的。该方法可以包括响应于验证通信的完整性来响应于通信。该方面的其他实现包括对应的装置、系统和计算机程序,其被配置为执行被编码在计算机存储设备上的该方法的各个方面。
4.这些和其他实施方案均可选择包括一个或多个以下特征。在一些方面,绑定包括使用加密散列函数和证明令牌的数字签名计算的数字签名的散列值。验证给定附件元素可以包括使用加密散列函数和证明令牌的数字签名来计算验证散列值,并确定验证散列值与绑定的散列值相匹配。
5.在一些方面,绑定包括使用加密散列函数和证明令牌计算的证明令牌的散列值。验证给定附件元素可以包括使用加密散列函数和证明令牌来计算验证散列值,并确定验证散列值与绑定的散列值相匹配。
6.在一些方面,给定附件元素包括给定接收方的资源定位符和附件元素数字签名,使用(i)客户端设备的私钥和(ii)给定附件元素的绑定、给定附件元素的接收方数据和资源定位符的组合生成附件元素数字签名。
7.在一些方面,验证给定附件元素包括使用对应于私钥的公钥以及给定附件元素的绑定、给定附件元素的接收方数据和资源定位符的组合来验证附件元素数字签名。
8.在一些方面,每个接收方的接收方数据由客户端设备上运行的应用中包含的接收方软件组件加密。证明令牌可以包括指示证明令牌被创建的时间的令牌创建时间戳。验证证明令牌的完整性可包括确定创建证明的时间在接收通信的时间的阈值持续时间内。
9.在一些方面,证明令牌包括客户端设备的公钥。使用对应于客户端设备的公钥的
客户端设备的私钥来生成数字签名。确定数字签名有效可以包括使用公钥和数据组来验证数字签名。
10.在一些方面,数据组包括完整性令牌,完整性令牌包括指示客户端设备或客户端设备上运行的应用是否可信的判决。验证证明令牌可包括确定该判决指示客户端设备或在客户端设备上运行的应用是可信的。接收方设备只能接收给定接收方的附件元素。
11.本说明书中描述的主题可在特定实施例中实施,以实现一个或多个以下优点。使用证明令牌来发送来自客户端设备的数据提供了客户端设备与接收方的计算机或其他设备之间的安全通信信道。将基于包括在证明令牌中的数据生成的数字签名包括在证明令牌中,使得接收方能够验证证明令牌中的数据在证明令牌被创建之后,例如在客户端设备和接收方之间的传输期间未被修改。在证明令牌中包含令牌创建时间使得接收方能够检测重放攻击和/或伪造的数据传输。
12.证明令牌还可包括一个或多个完整性令牌,完整性令牌指示发送证明令牌的客户端设备和/或启动发送的客户端设备上运行的应用程序是否可信。这使得证明令牌的接收方能够验证数据来自受信任的客户端设备,例如,而不是来自仿真器或受损设备。完整性令牌可由可信分析器(例如,第三方分析器)生成并数字签名,使得证明令牌的接收方可验证客户端设备已由可信分析器评估,并且完整性令牌中的数据在由可信分析器创建后未被修改。
13.证明令牌可与分别用于一个或多个接收方的一个或多个附件元素一起发送,每个附件元素可包括其接收方的数据,例如加密数据。通过将附件元素作为单独的数据结构包括在证明令牌中,而不是将每个实体的数据包括在证明令牌中,可以从整个消息或其他电子通信中移除附件元素,而不影响接收方验证证明令牌的能力。这使得接收方之一能够接收证明令牌和所有附件元素,并且对于每个其他接收方,仅转发该接收方的具有证明令牌的附件元素。与所有接收方的数据被包括在证明令牌中的实现相比,这种分离减少了发送给每个接收方的数据量,这减少了带宽消耗,减少了存储证明令牌的数据存储需求,并减少了通过网络发送证明令牌的等待时间。
14.此外,这减少了验证证明令牌所需的处理能力和计算资源(例如,cpu周期)。例如,如果每个接收方的数据被包括在证明令牌中,则除了证明令牌的其他数据之外,接收方的设备将被要求扫描所有这些数据以验证证明令牌的数字签名。通过为每个接收方生成附件元素,每个接收方的设备只需扫描其他证明数据来验证签名,例如,无需扫描每个接收方的数据。此外,通过不向其他接收方提供接收方的数据,这可以更好地保护每个接收方的数据。即使数据在证明令牌中被加密,加密的数据对于找到解密数据的方法的另一实体来说也是易受攻击的。
15.前述主题的各种特征和优点参照附图描述如下。根据本文描述的主题和权利要求,附加的特征和优点是显而易见的。
附图说明
16.图1是为客户端设备和多个接收方之间的通信提供安全信道的环境的框图。
17.图2是说明用于生成和发送包括证明令牌和附件元素的通信的示例过程的流程图。
18.图3为说明验证通信完整性是否有效以及是否响应通信的示例过程的流程图。
19.图4是说明使用证明令牌和附件元素验证通信完整性的另一示例过程的流程图。
20.图5是说明用于验证附件元素的整性的示例过程的流程图。
21.图6为示例计算机系统的框图。
22.各图中相似的参考数字和名称表示相似的元件。
具体实施方式
23.一般而言,本文中描述的系统和技术可以为客户端设备和多个接收方之间的电子通信提供安全的通信信道。客户端设备可以生成包括证明令牌的通信,例如电子消息或请求,该证明令牌可以被通信的接收方用来验证通信的真实性和完整性。证明令牌可以包括一数据组和基于该数据组生成的数字签名。以这种方式,接收方可以通过使用接收到的数据组和发送方的公钥来验证数字签名,从而验证该数据组例如在传输期间未被修改或未被中介修改。
24.一些通信可发送至多个接收方,每个接收方的数据可能不同和/或敏感。在这种情况下,在证明令牌中包括接收方数据会增加发送给每个接收方的通信的数据尺寸,并使接收方数据服从其他接收方。为了减少每个接收方的数据尺寸并提供每个接收方的数据的增强的安全性,接收方专用数据可以以附加元素的形式被发送,这些附加元素是除了证明令牌之外的,但不是用于生成数字签名的证明令牌的数据组的一部分。以这种方式,可以从通信中移除不打算给接收方的附件元素,而不破坏数字签名。
25.图1为环境100的框图,环境100为客户端设备和多个接收方之间的通信提供安全通道。示例环境100包括数据通信网络105,例如局域网(lan)、广域网(wan)、互联网、移动网络或其组合。网络105连接客户端设备110、主接收方设备150、次接收方设备170和完整性系统180。环境100可以包括许多客户端设备110、主接收方设备150、从接收方设备170和完整性系统180。
26.接收方设备150和170是由客户端设备110发送的通信120的接收方的设备,例如计算机。由于本文档中描述的安全通信技术可以应用于许多不同的用例,因此接收方的类型可以根据不同的用例而有所不同。例如,接收方可以是存储和/或利用客户端设备110的用户的用户数据的实体。在该示例中,客户端设备110可以向主接收方设备150发送安全通信120,以指示接收方可以存储什么数据以及如何使用该数据。
27.在另一个示例中,接收方可以是客户端设备110上运行的应用向其报告事件的实体。例如,接收方设备150和/或170可以是聚合服务器,其聚合事件数据,确定例如统计的度量,并报告度量。
28.在另一实例中,接收方为向客户端设备110分发内容(例如,数字组件)的实体。在这个例子中,主接收方设备150可以是供应侧平台(ssp),从接收方设备170可以是需求侧平台(dsp)。一般而言,ssp是以硬件和/或软件实现的技术平台,其自动化了获取资源和/或应用的数字组件的过程。电子资源(例如,网页)的发行商可以使用ssp来管理获取数字组件以便与其电子资源一起呈现的过程。一般而言,dsp是以硬件和/或软件实现的技术平台,其自动化了分发数字组件以便与资源和/或应用一起呈现的过程。dsp可以代表数字组件提供商与多个供应侧平台ssp进行交互,以提供数字组件,用于与多个不同发行商的资源和/或应
用一起呈现。
29.如贯穿本文档所使用的,短语“数字组件”指的是数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一内容单元)。数字组件可以作为单个文件或文件集合以电子方式存储在物理存储设备中,并且数字组件可以采取视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并且包括广告信息,使得广告是一种数字组件。例如,数字组件可以是旨在补充由应用112呈现的网页或其他资源的内容的内容。更具体地,数字组件可以包括与资源内容相关的数字内容(例如,数字组件可以涉及与网页内容相同的主题,或者相关主题)。因此,数字组件的提供可以补充并且通常增强网页或应用内容。
30.客户端设备110是能够通过网络105进行通信的电子设备。示例客户端设备110包括个人计算机、移动通信设备,例如智能电话,以及可以通过网络105发送和接收数据的其他设备。客户端设备还可以包括通过麦克风接受音频输入并通过扬声器输出音频输出的数字助理设备。当数字助理检测到激活麦克风以接受音频输入的“热门词”或“热门短语”时,数字助理可以被置于收听模式(例如,准备好接受音频输入)。数字助理设备还可以包括照相机和/或显示器,以捕捉图像并可视地呈现信息。数字助理可以在不同形式的硬件设备中实现,包括可穿戴设备(例如,手表或眼镜)、智能电话、扬声器设备、平板设备或另一硬件设备。客户端设备还可以包括数字媒体设备,例如插入电视或其他显示器以将视频流传送到电视的流传送设备。
31.客户端设备110通常包括应用112,例如网络浏览器和/或本地应用,以促进通过网络105发送和接收数据。本地应用是为特定平台或特定设备(例如,具有特定操作系统的移动设备)开发的应用。发行商可以开发并向客户端设备110提供(例如,使其可供下载)本地应用。例如,响应于客户端设备110的用户在web浏览器的地址栏中输入该资源的资源地址或者选择引用该资源地址的链接,web浏览器可以从托管发行商的网站的web服务器请求资源。类似地,本地应用可以从发行商的远程服务器请求应用内容。
32.应用112可生成通信120并将其发送给接收方,例如主接收方设备150。应用112可以与可信程序111交互以生成用于通信120的证明令牌122和附件元素124。可信程序111可以包括来自难以伪造的可靠来源的可信代码。例如,可信程序111可以是操作系统、操作系统的一部分、网络浏览器等。一般而言,可信程序111难以渗透,并且作恶者篡改可信程序111所需花费的时间和精力高得惊人,例如,对作恶者来说在经济上不可行。此外,因为可信程序111是由可靠来源提供和维护的,所以任何出现的漏洞都可以由该来源解决。
33.可信程序111可位于客户端设备110的本地。例如,可信程序111可以是客户端设备110的操作系统的设备驱动程序。在一些实施方式中,可信程序111完全在客户端设备110本地操作,减少了发送用户信息的需要。在一些实施方式中,可信程序111可以在客户端设备110本地并通过网络(例如网络105)操作。例如,可信程序111可以是安装在客户端设备110上并通过网络105发送和接收信息的网络浏览器。
34.应用112可包括软件模块、工具、界面或管理通信生成和传输的其他组件。在这个例子中,应用112包括软件开发工具包(sdk)114和116。也可以使用其他软件组件,例如应用编程接口(api)。
35.应用112包括主接收方sdk 114,其可以由对应于主接收方设备150的主接收方开
发和分发。例如,ssp可以提供包含在应用(例如,本地应用、web应用、web浏览器等)中的sdk。在该示例中,主接收方sdk 114可以生成对来自主接收方设备150的数字组件的请求,作为通信120。
36.应用112还包括具有从接收方设备170的一个或多个从接收方的各自的从接收方sdk 116。从接收方sdk 116可以获得接收方数据,以包含在由主接收方sdk 114发送给主接收方设备150的通信中。如下面更详细描述的,主接收方设备150可以将每个接收方的接收方数据发送到其对应的从接收方设备170。用于生成和发送通信给接收方设备150和170的示例过程在图1中被示为阶段1-5。
37.在阶段1,当应用112或其主接收方sdk 114正生成要发送至主接收方设备150的通信120时,主接收方sdk 114从对应于一个或多个接收方的一个或多个从接收方sdk 116获取接收方数据。每个接收方的接收方数据可以是特定于该接收方的数据,并且可以基于实现而变化。在ssp和dsp示例中,接收方设备的接收方数据可以包括用于选择数字组件的数字组件选择信号和/或欺诈检测信号,接收方可以使用这些信号来确定客户端设备110是作为正常设备还是可信设备进行操作。欺诈检测信号可以包括表示客户端设备的操作特性或度量的数据,该数据可以用于确定客户端设备是否受到危害或者该客户端设备是作为正常客户端设备还是仿真客户端设备来操作。相对于仿真器,真实客户端设备的某些操作特性和度量通常是不同的。在一些实施方式中,欺诈检测信号包括应用层欺诈检测信号,该应用层欺诈检测信号包括应用112的操作特性和度量。
38.每个从接收方sdk 116可收集其接收方数据,并将接收方数据提供给主接收方sdk 114。在一些实施方式中,每个从接收方sdk 116在将接收方数据提供给主接收方sdk 114之前加密其接收方数据。例如,每个从接收方sdk 116可以使用加密算法和公钥来加密其数据,使得其他接收方(例如,主接收方设备150)将不能访问接收方数据的明文值。明文是未经计算标记、特殊格式化或以代码或数据形式编写的文本,包括二进制文件,其形式可以在不需要密钥或其他解密设备或其他解密过程的情况下查看或使用。在其他实现中,例如,如果接收方数据不敏感,则从接收方sdk 116可以将明文接收方数据发送给主接收方sdk 114。在一些实施方式中,可信程序111或主接收方sdk 114可以为每个接收方加密接收方数据。无论是否加密,接收方数据都可以是字节数组的形式。
39.在阶段2,主接收方sdk 114向可信程序111提交请求,以生成通信120的证明令牌122。主接收方sdk 114可以随请求发送从每个从接收方sdk 116接收的接收方数据,以及对于每个接收方,该接收方的资源定位符。资源定位符可以充当接收方数据的密钥(key),并且是接收方的域的etld+1的形式。etld+1是有效的顶级域名(etld)加上比公共后缀多一级的域名。etld+1的一个例子是“example.com”,其中“.com”是顶级域名。
40.该请求还可包括要包含在证明令牌122中的任何有效载荷数据,例如,所有接收方共有的数据、接收方的指令等。主接收方sdk 114可以使用对可信程序111的一个或多个api调用来生成请求。
41.阶段3,可信程序111为接收到接收方数据的每个接收方生成证明令牌122和附件元素124,并将证明令牌122和附件元素124提供给主接收方sdk 114。证明令牌122可包括数据组126和该数据组的数字签名128。
42.数据组126可包括发送请求的客户端设备110的公钥(例如,应用112的公钥)、指示
证明令牌122被创建的时间的令牌创建时间、有效载荷数据和/或由一个或多个完整性系统180提供的一个或多个完整性令牌。该令牌创建时间可以是高分辨率时间戳(例如,精确到秒、毫秒或微秒)。
43.应用112可生成和维护一对或多对相关加密密钥,包括私钥和对应于私钥并在数学上与私钥相关联的公钥。在一些实施方式中,密钥从另一应用或设备被提供给应用112。使用私钥进行数字签名的数据只能使用相应的公钥进行验证。类似地,使用公钥加密的数据只能使用私钥解密。加密密钥可以周期性地、针对每个请求、针对每个应用112等进行循环,以防止公钥被用来跟踪特定的客户端设备110,例如客户端设备110的特定用户。
44.可信程序111使用私钥生成数据组126的数字签名128,以便接收方可验证数据组126在由可信程序生成后未被更改,并证明请求源自客户端设备110。在一些实施方式中,可信程序111使用椭圆曲线数字签名算法(ecdsa)来生成数字签名,但是也可以使用其他签名技术(例如,rsa)。相应的公钥与证明令牌122一起提供,使得证明令牌122的接收方可以使用公钥来验证数据组126的数字签名128。可信程序111可以通过使用私钥签署数据组126来生成数字签名。
45.完整性令牌可包括应用完整性令牌和/或设备完整性令牌。应用完整性令牌指示应用112已经被完整性系统180评估,并且已经被完整性系统180认为是可信的。类似地,设备完整性令牌指示客户端设备110已经被完整性系统180评估并且已经被完整性系统180认为是可信的。完整性系统180可以基于例如由应用内组件从客户端设备110和/或应用112获得的欺诈检测信号来评估应用112和/或客户端设备110。
46.完整性令牌可包括指示完整性令牌创建时间的令牌创建时间、证明令牌122中包括的公钥(例如,客户端设备110的设备公钥)、判决(例如,应用112或客户端设备110是否可信),和/或完整性令牌的其余部分的数字签名(例如,令牌创建时间、设备公钥和/或设备/应用判决)。使用包括公钥的数据的数字签名将完整性令牌绑定到公钥,并因此绑定到客户端设备110和/或应用112。
47.完整性令牌的数字签名可以由完整性系统180拥有并安全存储的私钥生成。该数字签名可由对应于由完整性系统180拥有并安全存储的私钥的公钥公开验证。结合客户端设备110的私钥和公钥,使用完整性系统180的私钥和公钥对完整性令牌进行数字签名并验证这些数字签名,以对证明令牌122进行数字签名并验证证明令牌122的签名,提供了安全的通信信道,并在图1的实体之间建立了信任链。
48.接收方的附件元素124可包括绑定、接收方的接收方数据、接收方的资源定位符(例如,接收方的etld+1,如上所述)、以及基于其他数据(例如,基于绑定、接收方数据和资源定位符)生成的数字签名。该绑定将附件元素124加密地绑定到证明令牌122,使得附件元素124不能与其他证明令牌122一起发送而不被检测到。
49.在一些实施方式中,绑定是证明令牌122的数字签名的加密散列。例如,在为证明令牌122生成数字签名之后,可信程序111可以使用密码函数(例如,sha256)来计算数字签名的加密散列。也就是说,可信程序111可以将密码散列函数应用于证明令牌122的数字签名。可信程序111还可以截断加密散列以进一步减小通信120的数据尺寸,例如,通过将散列截断为16字节。如下所述,在验证证明令牌122和附件元素124期间,接收方可以验证证明令牌122的数字签名,计算包括在接收到的证明令牌中的数字签名的散列,并将该散列与绑定
进行比较。如果数字签名被成功验证并且散列值不匹配,则没有为该证明令牌122生成附件元素124,并且附件元素124的验证失败。
50.在一些实施方式中,绑定可以是证明令牌122本身的加密散列。然而,相对于使用数字签名的加密散列,这可能需要可信程序111的额外处理,因为证明令牌122通常将具有比证明令牌122的数字签名更大的数据尺寸。
51.可使用用于生成证明令牌122的数字签名的相同私钥来生成接收方的附件元素124的数字签名。这样,接收方可以使用公钥来验证附件124的数字签名。在其他实现中,不同的私钥可用于生成附件元素124的数字签名,并且对应的公钥可被包括在证明令牌122中或以其他方式被提供给接收方。
52.在阶段4,主接收方sdk 114生成通信120,并通过网络105将其发送至主接收方设备150。如图1所示,通信120可包括用于所有接收方的一个证明令牌122,以及用于每个单独接收方的附件元素124。通信120可以包括任意数量的附件元素,例如,零个或多个附件元素。
53.在阶段5,主接收方设备150生成单独通信160,并将其发送至通信120所针对的每个从接收方设备170。尽管在图1中未示出,但是单独通信160也可以通过网络105或另一网络被发送。主接收方设备150可以访问接收到的通信120的附件元素124,并识别每个附件元素124的资源定位符。这指示主接收方设备150将附件元素124发送到哪里。
54.对于通信120的每个附件元素124,主接收方设备150可生成包括证明令牌122和附件元素124的单独通信160。例如,从接收方设备170-1的通信160包括对应于附件元素124-1的接收方的证明令牌122和附件元素124-1。主接收方设备150可以通过移除所有其他接收方的附件元素来为给定接收方生成单独通信160。
55.由于证明令牌122的数字签名不是基于附件元素124中的任何一个生成的,所以即使没有接收到其他接收方的其他附件元素,每个接收方也仍然可以验证证明令牌122的数字签名。通过移除不是给定接收方的附件元素124,并在通信160中包括证明令牌122和仅给定接收方的附件元素124,通信160的数据尺寸被大大减小。这减少了带宽消耗,减少了从接收方设备170处的数据存储,并且需要更少的处理来验证证明令牌122和附件元素124。
56.例如,如果通信120与用户隐私设置或控制相关,则可要求接收方将证明令牌122存储特定时间段。如果证明令牌122包括多个接收方的接收方数据,而不是对单个接收方使用附件元素124,则数据存储要求会大得多。对包括多个接收方的接收方数据的这种证明令牌的验证将需要实质上更多的处理来扫描所有接收方数据以验证数字签名。通过为每个接收方使用单独的附件元素,从接收方设备170可以仅扫描该接收方的证明令牌122和单独的附件元素124的其他数据,导致每次通信160的更少的cpu周期。例如,在每天数千或数百万次的通信中,计算和数据存储的节省是巨大的。
57.这也使从接收方设备170能够更快地响应通信160,这在与内容(例如,数字组件)分发相关的实施中至关重要。在这种情况下,通常需要在几毫秒内做出响应。通过减少验证所需的处理,从接收方计算设备170可以验证通信160的完整性,并且仍然在时间要求内提供响应。
58.图2是说明用于生成和发送包括证明令牌和附件元素的通信的示例过程200的流程图。过程200的操作可以例如由图1的客户端设备110来实现。过程200的操作也可以被实
现为存储在一个或多个计算机可读介质上的指令,所述计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程200的操作。
59.获取接收方数据(202)。在客户端设备110上执行的应用112可以获得由应用112生成的通信的每个一个或多个接收方的接收方数据。例如,如上所述,主接收方sdk 114可以从接收方的从接收方sdk 116获得接收方的接收方数据。每个接收方的接收方数据可以不同于每个其他接收方的接收方数据。每个接收方的sdk可以收集其数据并将该数据提供给主接收方sdk 114。
60.生成证明令牌(204)。响应于来自应用112的请求,客户端设备110的可信程序111可以生成证明令牌。该请求可以包括通信的有效载荷数据、每个接收方的接收方数据以及每个接收方的资源定位符(例如,etld+1)。如上所述,证明令牌可以包括一数据组,该数据组包括客户端设备110或应用112的公钥、令牌创建时间、有效载荷数据。证明令牌还可包括基于数据组并使用对应于公钥的私钥生成的数字签名。
61.生成附件元素(206)。可信程序111可以使用在请求中接收的接收方的接收方数据为每个接收方生成附件元素。如上所述,接收方的附件元素可以包括绑定、接收方的接收方数据以及接收方的资源定位符。接收方的附件元素还可以包括基于绑定生成的数字签名、接收方的接收方数据以及接收方的资源定位符。可信程序111可以使用用于签署证明令牌的私钥来为每个附件元素生成数字签名。例如,可信程序111可以通过使用私钥在绑定、接收方数据和资源定位符上签名来生成附件元素的签名。如上所述,每个附件元素的绑定可以是证明令牌的数字签名的加密散列,以将所有附件元素绑定到证明令牌。
62.发送该通信(208)。应用112可以例如通过网络向接收方发送包括证明令牌和附件元素的通信。如上所述,主接收方,例如主接收方或中介,可以接收通信并为通信的每个预期接收方生成单独的通信。各个通信可以各自包括证明令牌和用于各个通信的接收方的单个附件元素。在另一示例中,应用112可以生成并发送单独的通信,每个单独的通信包括该单独的通信的接收方的证明令牌和附件元素。
63.图3是说明用于验证通信的完整性是否有效以及是否响应通信的示例过程300的流程图。过程300的操作可以例如由图1的接收方设备150或170来实现。过程300的操作也可以被实现为存储在一个或多个计算机可读介质上的指令,所述计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程300的操作。
64.接收通信(302)。该通信可以包括证明令牌和附件元素。例如,接收方设备可以从客户端设备110或主接收方设备150接收通信。
65.验证通信的完整性(304)。例如,接收方设备可以基于验证通信的尝试将完整性分类为有效或无效。该验证可以包括验证证明令牌和附件元素。如果在创建证明令牌的时间、令牌创建时间和接收到请求的时间之间的持续时间之间数据组中的任何数据改变超过阈值、完整性令牌无效或者附件元素未绑定到证明令牌,则请求的完整性可能无效。用于验证通信完整性的示例过程在图4中示出并在下面描述。
66.如果通信的完整性被分类为无效,例如验证失败,则接收方设备不对通信做出响应(306)。例如,接收方设备可以忽略该通信、删除该通信或者不采取该通信的所请求的动
作。
67.如果通信的完整性被分类为有效,例如,验证成功,则接收方设备响应通信(308)。例如,如果通信要更新用户隐私设置,则接收方设备可以响应于成功验证通信来更新用户隐私设置。如果该通信是对数字组件的请求,则响应于成功验证该通信,接收方设备可以选择数字组件并为该数字组件提供数据。因此,响应可以基于通信的实现和数据而变化。
68.图4是示出使用证明令牌和附件元素来验证通信的完整性的另一示例过程400的流程图。过程400的操作可以例如由图1的接收方设备150或170来实现。过程400的操作也可以被实现为存储在一个或多个计算机可读介质上的指令,所述计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程400的操作。
69.访问通信的证明令牌和附件元素(402)。接收方设备可以接收该通信并识别该通信中的证明令牌和附件元素。接收方设备可以从通信中提取证明令牌和附件元素。
70.验证证明令牌(404)。接收方设备可以使用包括在证明令牌中的令牌创建时间、数字签名和/或完整性令牌来验证证明令牌。在该实现中,使用组成操作406-410来执行所有三个验证,但是在其他实现中可以执行更少的验证。此外,验证可以不同的顺序或并行执行。
71.验证证明令牌的令牌创建时间(406)。如上所述,证明令牌可以包括指示证明令牌被创建的时间的令牌创建时间戳。令牌创建时间可用于确定包括证明令牌的通信是新的还是最近的请求。例如,接收方设备可以将令牌创建时间与当前时间或接收证明令牌的时间进行比较,以确定令牌创建时间是否在接收通信的时间的阈值持续时间内。如果是,则验证令牌创建时间。如果不是,则证明令牌被认为是陈旧的,并且作为响应,接收方设备可以将通信的完整性分类为无效(414)。阈值持续时间可以是例如一天、三天、一周或其他合适的持续时间。
72.令牌创建时间也可用于检测重放攻击。例如,如果接收到具有包括相同令牌创建时间的相同数据组的多个请求,则接收方可以确定通信是重复的和/或请求是重放攻击的一部分。
73.如果令牌创建时间验证成功,则数字签名被验证(408)。可以验证数字签名以确保证明令牌的数据组自证明令牌被创建以来没有改变。例如,即使对数据组的微小改变也会导致数字签名验证失败。接收方设备可以尝试使用接收到的证明令牌的数据组和证明令牌中包括的公钥来验证数字签名。如果使用公共密钥不能验证数字签名,则可以确定数据组中的数据已经被修改。例如,这样的数据可能已经被拦截请求的实体或中介修改。如果使用公钥验证了数字签名,则可以确定证明令牌的数据组中的数据没有被修改。如果数字签名没有被成功验证,则接收方设备可以将通信的完整性分类为无效(414)。
74.如果数字签名验证成功,则完整性令牌被验证(410)。如上所述,完整性令牌可以包括指示创建完整性令牌的时间的令牌创建时间、请求完整性令牌的客户端设备110的公钥、判决(例如,应用112或客户端设备110是否可信)、和/或完整性令牌的其余部分的数字签名(例如,令牌创建时间、公钥、和/或判决)。完整性令牌的数字签名可以由完整性系统180拥有并安全存储的私钥生成。该数字签名可由对应于由完整性系统180拥有并安全存储的私钥的公钥公开验证。
75.为了验证完整性令牌,接收方设备可以确定完整性令牌的判决是否有效,完整性令牌的公钥是否与证明令牌的公钥匹配,以及完整性令牌的令牌创建时间是否在接收到通信的时间的阈值持续时间内。如果判决指示客户端设备或应用不可信、公钥不匹配、或者完整性令牌的令牌创建时间不在接收到通信的时间的阈值持续时间内,则确定完整性令牌无效,并且请求的完整性被分类为无效(414)。如果判决指示客户端设备或应用是可信的,并且公钥匹配,则可以确定完整性令牌是有效的。
76.该确定还可包括验证完整性令牌的数字签名。如上所述,完整性系统180可以使用完整性系统的私钥对完整性令牌的数据进行数字签名。完整性系统180可向可接收由完整性系统生成的完整性令牌的接收方提供对应于该私钥的公钥。请求的每个接收方可以使用该公钥来验证完整性令牌的数字签名,如果成功,则表明完整性令牌的数据自创建以来未被修改。在该示例中,如果判决可信,公钥匹配,并且完整性令牌的数字签名被成功验证,则可以确定完整性令牌是有效的。如果一个或多个验证失败,则接收方设备可以将完整性令牌的完整性分类为无效。
77.如果令牌创建时间、证明令牌的数字签名以及完整性令牌都被成功验证,则接收方设备可以将证明令牌的完整性分类为有效,并验证附件元素(412)。如果任何验证失败,则接收方设备可以将通信的完整性分类为无效(414)。
78.接收方设备可通过验证附件元素的数字签名、验证绑定以及验证附件元素的资源定位符与接收方的资源定位符匹配来验证附件元素。图5示出了用于验证附件元素的示例过程,并在下面进行了描述。
79.接收方设备可以以任何顺序或并行方式验证证明令牌和附件元素。如果两者都被成功验证,则接收方设备可以将通信分类为有效(416)。反过来,如上所述,接收方设备可以对该通信做出响应。
80.图5是说明验证附件元素完整性的示例过程500的流程图。过程500的操作可以例如由图1的接收方设备150或170来实现。过程500的操作也可以被实现为存储在一个或多个计算机可读介质上的指令,所述计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程500的操作。
81.附件元素被访问(502)。例如,如上所述,接收方设备可以从接收到的包括证明令牌和附件元素的通信中提取附件元素。接收方的附件元素可以包括绑定、接收方的接收方数据、接收方的资源定位符(例如,接收方的etld+1)、以及基于其他数据(例如,基于绑定、接收方数据和资源定位符)生成的数字签名。
82.接收方设备验证数字签名(504)。可以验证数字签名,以确保附件元素的数据自附件元素被创建以来没有改变。例如,即使对附件元素中的数据进行微小的更改,也会导致数字签名验证失败。接收方设备可以尝试使用接收到的附件元素的数据组和证明令牌中包括的公钥来验证附件元素的数字签名。如果使用公钥不能验证数字签名,则可以确定数据组中的数据已经被修改。例如,这样的数据可能已经被拦截请求的实体或中介修改。如果使用公钥验证了数字签名,则可以确定附件元素中的数据没有被修改。如果数字签名没有被成功验证,则接收方设备可以将附件元素分类为无效(510)。
83.如果数字签名验证成功,接收方设备验证绑定(506)。附件元素的绑定可以是使用加密散列函数和证明令牌的数字签名计算的证明令牌的数字签名的散列值。以这种方式,
附件元素必须在包括附件元素所绑定到的证明令牌的通信中被接收,以便该验证成功。
84.为了验证所述绑定,所述接收方设备可使用用于生成所述绑定的相同加密散列函数和包含在所接收的证明令牌中的数字签名来计算验证散列值。然后,接收方设备可以将该验证散列值与该绑定的散列值进行比较。如果这两个散列值不匹配,则接收方设备可以确定所接收的证明令牌中的数字签名不是用于创建绑定的数字签名。接下来,接收方设备可以确定附件元素没有绑定到证明令牌,并将附件元素分类为无效(510)。
85.例如,恶意实体可能试图将附件元素包括在与为其创建附件元素的证明令牌不同的证明令牌中。在该示例中,恶意实体的证明令牌的数字签名将与有效证明令牌的数字签名不匹配,因此,该绑定的验证将失败。这确保了附件元素仅与其正确的证明令牌一起使用。
86.在一些实施方式中,所述绑定是使用加密散列函数和所接收的证明令牌计算的证明令牌的散列值。在该示例中,验证附件元素可以包括使用加密散列函数和证明令牌来计算验证散列值,并确定验证散列值与该绑定的散列值相匹配。
87.在任一示例中,如果该绑定的散列值与验证散列值匹配,则接收方设备可验证附件元素的资源定位符(508)。接收方设备可以确定附件元素的资源定位符是否匹配接收方的资源定位符。也就是说,接收方设备可以基于附件元素中的资源定位符来确保附件元素是针对接收方的。如果附件元素中的资源定位符与接收方的资源定位符不匹配,则接收方设备可以将附件元素分类为无效(510)。
88.如果附件元素的数字签名、附件元素的绑定和附件元素的资源定位符均验证成功,则接收方设备可将附件元素的完整性分类为有效(512)。如果任何验证失败,则接收方设备可以将附件的完整性分类为无效(510)。接收方设备可以以任何顺序或并行地执行验证。
89.图6为可用于执行上述操作的示例计算机系统600的框图。系统600包括处理器610、存储器620、存储设备630和输入/输出设备640。组件610、620、630和640中的每一个都可以例如使用系统总线650来互连。处理器610能够处理在系统600内执行的指令。在一些实施方式中,处理器610是单线程处理器。在另一实现中,处理器610是多线程处理器。处理器610能够处理存储在存储器620或存储设备630上的指令。
90.存储器620存储系统600内的信息。在一种实现方式中,存储器620是计算机可读介质。在一些实施方式中,存储器620是易失性存储单元。在另一实现中,存储器620是非易失性存储单元。
91.存储设备630能够为系统600提供大容量存储。在一些实施方式中,存储设备630是计算机可读介质。在各种不同的实施方式中,存储设备630可以包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)、或一些其他大容量存储设备。
92.输入/输出设备640为系统600提供输入/输出操作。在一些实施方式中,输入/输出设备640可以包括一个或多个网络接口设备,例如以太网卡、例如rs-232端口的串行通信设备、和/或例如802.11卡的无线接口设备。在另一实现中,输入/输出设备可以包括被配置成接收输入数据并将输出数据发送到外部设备660(例如,键盘、打印机和显示设备)的驱动设备。然而,也可以使用其他实现,例如移动计算设备、移动通信设备、机顶盒电视客户端设备
等。
93.虽然图6中描述了示例处理系统,但本说明书中描述的主题和功能操作的实施可在其他类型的数字电子电路中实施,或在包括本说明书中公开的结构及其结构等效物的计算机软件、固件或硬件中实施,或在其一个或多个的组合中实施。
94.本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在包括本说明书中公开的结构及其结构等同物的计算机软件、固件或硬件中实现、或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即一个或多个计算机程序指令模块,其被编码在计算机存储介质(或介质)上,用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息,用于传输到合适的接收器设备,以由数据处理装置执行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个cd、盘或其他存储设备)中。
95.本说明书中描述的操作可实施为数据处理装置对存储在一个或多个计算机可读存储设备上的数据或从其他来源接收的数据执行的操作。
96.术语“数据处理装置”包括所有类型的用于处理数据的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。该装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境可以实现各种不同的计算模型基础设施,例如web服务、分布式计算和网格计算基础设施。
97.计算机程序(也称为程序、软件、软件应用、脚本或代码)可采用任何形式的编程语言编写,包括编译或解释语言、声明或程序语言,并可采用任何形式部署,包括作为独立程序或模块、组件、子程序、对象或适用于计算环境的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一台计算机或位于一个地点或分布在多个地点并通过通信网络互连的多台计算机上执行。
98.本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。
99.适于执行计算机程序的处理器包括,例如,通用和专用微处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指
令执行动作的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传送数据,或两者兼有。然而,计算机不需要有这样的设备。此外,计算机可以嵌入在另一个设备中,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存驱动器)等等,仅举几个例。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;cd-rom和dvd-rom盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
100.为提供与用户的互动,本说明书中所述主题的实施例可在计算机上实施,所述计算机具有用于向用户显示信息的显示设备,例如crt(阴极射线管)或lcd(液晶显示器)监视器,以及用户可向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,向用户的客户端设备上的网络浏览器发送网页。
101.本说明书所述主题的实施例可在计算系统中实施,所述计算系统包括后端组件,例如数据服务器,或包括中间件组件,例如应用服务器,或包括前端组件,例如具有图形用户界面或网页浏览器的客户端计算机,用户可通过所述图形用户界面或网页浏览器与本说明书所述主题的实施例进行互动,或包括一个或多个所述后端、中间件或前端组件的任何组合。该系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网(例如,因特网)和对等网络(例如,自组织对等网络)。
102.计算系统可包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在各自的计算机上运行的计算机程序而产生的,并且彼此具有客户端-服务器关系。在一些实施例中,服务器将数据(例如,html页面)发送到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从其接收用户输入)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
103.虽然本说明书包含许多具体的实施细节,但是这些不应该被解释为对任何发明的范围或可能要求保护的范围的限制,而是对特定发明的特定实施例所特有的特征的描述。本说明书中在独立实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实现。此外,尽管特征可能在上面被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。
104.类似地,虽然图中以特定顺序描绘了操作,但不应理解为要求以所示特定顺序或顺序执行此类操作,或要求执行所有图示操作,以实现所需结果。在某些情况下,多任务和
并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者打包到多个软件产品中。
105.因此,已描述了主题的特定实施例。其他实施例在以下权利要求的范围内。在某些情况下,权利要求中所述的动作可以以不同的顺序执行,并且仍能获得期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1