通信安全系统和方法与流程

文档序号:16363585发布日期:2018-12-22 08:18阅读:170来源:国知局
通信安全系统和方法与流程

本申请要求于2016年5月31日递交的美国申请no.15/169,245的优先权权益,其通过引用全部结合于此。

本文描述的示例总体涉及用于无线安全的系统和方法。

背景技术

在无线通信中,期望防止消息被拦截并且期望确保接收到的通信来自目标方。

附图说明

在不一定按比例描绘的附图中,相似的数字可以描述不同视图中的类似组件。具有不同字母后缀的相似数字可以表示类似组件的不同实例。在附图中,通过示例而非限制地示出一些示例,其中:

图1是示出用于到客户端设备的应用级连接的环境的一个示例的示图。

图2是示出移动计算设备的示例架构的框图。

图3是示出可以在图1的环境中执行以实现本文中描述的通信安全的处理流程的一个示例的流程图。

图4是示出可以在图1的环境中执行以生成应用和客户端设备之间的应用信道的处理流程的一个示例的流程图。

图5是示出可以由客户端设备4执行以响应来自计算设备的通信的处理流程的一个示例的流程图。

图6是示出可以在接收到应用会话密钥时在客户端设备处执行的处理流程的另一示例的流程图。

图7至图10是示出同伴应用和客户端设备之间的密钥交换和认证的示例的时序图。

图11是示出用于计算设备的软件架构的一个示例的框图。

图12是示出计算设备硬件架构的框图,其中,指令集或指令序列可以被执行以使机器执行本文中讨论的任意一种方法的示例。

具体实施方式

在下面的描述中,出于说明的目的给出了很多具体细节,以提供对一些示例的透彻理解。但是,对于本领域技术人员易于理解的是,本公开可以在没有这些具体细节的条件下实施。

本文中描述的各种示例涉及用于实现例如,应用级的通信安全的系统和方法。诸如le等的很多设备间通信协议利用无状态连接。例如,计算设备可以创建与客户端设备的系统级连接。系统级连接利用诸如加密之类的安全措施来认证经由该连接发送的消息并防止其他计算设备和/或客户端设备拦截并读取这些消息。但是,一些操作系统允许多个应用利用到客户端设备的系统级连接。因此,即使系统级连接可以提供相对于其他设备的安全性,但是其不能提供相对于在该客户端设备处运行的诸如恶意软件之类的其他应用的安全保护。

在各种示例中,在计算设备处运行的应用可以建立与客户端设备的应用级连接。计算设备(例如,操作系统或其他适当的连接电路)建立与客户端设备的系统级连接。应用在系统级连接上生成与客户端设备的单独应用级连接。例如,应用可以生成应用会话密钥并经由系统级连接向客户端设备提供应用会话密钥。根据应用会话密钥或其衍生物来加密在客户端设备和应用之间发送的消息。客户端设备可以被编码成仅响应于根据应用会话密钥加密的指令。这样,可以防止在计算设备处运行的其他应用访问客户端设备。

图1是示出用于到客户端设备的应用级连接的环境10的一个示例的示图。环境10包括计算设备2和客户端设备4。计算设备2建立与客户端设备4的系统级连接8。例如,系统级连接8可以由计算设备2的操作系统(os)14建立和/或管理。系统级连接8可以在任意合适的有线和/或无线通信介质上做出。在一些示例中,包括利用标准的一些示例在内,系统级连接可以在由计算设备2处的收发信机和客户端设备4处的收发信机之间的直接无线通信生成的无线介质上做出。在计算设备2处运行的同伴应用12利用系统级连接8内的应用级连接6与客户端设备4通信。这样,如本文所述,同伴应用12可以通过对于其他应用(例如,应用11)不可访问的方式与客户端设备4通信。

计算设备2可以是适用于建立与客户端设备4的系统级连接8的任何设备。计算设备2的示例包括智能电话、平板计算机、膝上型计算机、桌上型计算机、可穿戴计算机设备等。计算设备2包括硬件层16。硬件层16包括至少一个处理器和与该处理器通信的适当存储器。硬件层16还可以包括用于实现系统级连接8的一个或多个输入/输出设备,例如,用于无线通信的收发信机和/或用于有线通信的输出端口。参考图2提供了硬件层16的示例配置。

计算设备2执行操作系统14和同伴应用12。同伴应用12可以是被配置为与客户端设备4通信的应用。例如,如果客户端设备4包括计步器,则同伴应用12可以被配置为与客户端设备4通信以接收并跟踪用户的走步。在一些示例中,计算设备2还执行附加应用,例如,应用11。计算设备2可以利用任何适当的操作系统14,该操作系统是例如,操作系统、来自苹果公司的iostm或其他os操作系统、androidtm操作系统、linux操作系统等。应用11、12可以是客户端侧应用和/或网络应用。应用11、12可以通过os14访问硬件层16。例如,os14可以向应用11、12提供对收发信机、输出端口、或者用于经由系统级连接8进行通信的其他硬件的访问。

客户端设备4可以包括客户端硬件层22。客户端硬件层22可以包括至少一个处理器和与该处理器通信的适当存储器。客户端硬件层22还可以包括用于与计算设备2通信以实现系统级连接6和应用级连接8的一个或多个输入/输出设备。在一些示例中,客户端设备4还可以执行客户端os20和客户端应用18。客户端os20可以是任意适当的os。在一些示例中,客户端设备4可以利用优化用于低功率设备(例如,androidweartm)的os和/或实时操作系统(rtos)。

图1还示出了包括示例计算设备32和示例客户端设备34的环境10的示例实施方式30。示例计算设备32是移动电话,示例客户端设备34是可穿戴计算设备(示出为被放置在用户33的手腕上)。客户端设备34可以包括用于检测用户33的运动和/或生物功能(例如,心率、呼吸频率等)的一个或多个传感器。客户端设备34可以与计算设备32处的同伴应用通信,以向用户33提供所捕捉的数据。实施方式30只是用于实现所述的通信安全系统和方法的一个示例。

图2是示出移动计算设备的示例架构200的框图。在一些示例中,计算设备2、32和/或客户端设备4、34可以根据架构200实现。架构200包括处理器单元210。处理器单元210可以包括一个或多个处理器。可以使用各种适用于移动计算设备的不同类型的、商业可得的处理器中的任意一种,这些处理器是例如,xscale架构微处理器、无联锁流水线级的微处理器(mips)架构处理器、或者其他类型的处理器。存储器220(例如,随机存取存储器(ram)、闪存、或者其他类型的存储器或数据存储设备)一般对于处理器而言是可访问的。存储器220可以被适配为存储操作系统(os)230和应用240(例如,上述应用11、12、18)。存储器220还可以包括密钥存储区242。密钥存储区242可以是存储器处对于其他应用而言不可访问的位置或位置集,其中,应用可以将安全数据存储在这些位置或位置集。在一些示例中,密钥存储区242由os230管理。例如,当os230是ios操作系统时,密钥存储区242可以由ios的特征来实现。在os230是androidtm操作系统的示例中,密钥存储区242可以由androidtm的密钥存储区特征来实现。

处理器单元210可以直接或经由适当的中间硬件耦合到显示器250并耦合到一个或多个输入/输出(i/o)设备260(例如,键区、触摸面板传感器、麦克风等)。类似地,在一些示例中,处理器210可以耦合到与天线290接口的收发信机270。收发信机270可以被配置为根据由架构200实现的移动计算设备的特性,经由天线290发送和接收蜂窝网络信号、无线数据信号、或者其他类型的信号。尽管示出了一个收发信机270,但是在一些示例中,架构200包括附加的收发信机。例如,无线收发信机可以被用来根据ieee802.11规范(例如,wi-fi)和/或短距离通信介质(例如,近场通信(nfc)等)进行通信。一些短距离通信介质(例如,nfc)可以利用单独的专用收发信机。另外,在一些配置中,可选的gps接收机280利用天线290来接收gps信号。

图3是示出可以在环境10中执行以实现本文中描述的通信安全的处理流程300的一个示例的流程图。结合图1的示例环境10(包括计算设备2和客户端设备4)描述处理流程300。但是,可以执行处理流程300来实现任意两个适当的设备和/或应用之间的通信安全。

可选地,在动作302,计算设备2(例如,操作系统14)可以与客户端设备配对。例如,一些通信介质(例如,)利用二阶段协议。在第一阶段,在建立安全连接之前,计算设备2和客户端设备4可以在有时被称为配对的处理中相互认证。在一些示例中,计算设备2向客户端设备4提供密码(例如,字母数字代码)。客户端设备4将字母数字代码与本地存储的参考代码进行比较。如果这两个代码匹配,则客户端设备2可以接受配对。在一些示例中,用户手动(例如,通过计算设备2的i/o设备)向计算设备提供密码。可以使用任何其他适当的认证来实现配对。另外,在利用不包括二阶段协议的通信的示例中可以省略动作302。

在动作304,计算设备2和/或客户端设备4可以生成系统级连接8。例如,计算设备2的os14可以与客户端设备4(例如,其客户端os20和/或客户端应用18)协商一个或多个加密密钥。可以使用包括,diffie-hellman、安全简单配对(securesimpleparing)模型、justworks、密码输入(passkeyentry)等在内的任何适当的密钥交换协议。在连接处理结束时,计算设备2(例如,os14)和客户端设备4可以分别处理系统加密密钥。系统加密密钥可以是对称密钥并且可以被用来相互认证和/或加密消息。在实施方式中,例如,系统加密密钥可以被称为链路密钥。在计算设备2和客户端设备4之间经由系统级连接发送的消息可以利用系统加密密钥来进行加密。

一旦建立了系统级连接,os14可以向在计算设备2处运行的应用11、12提供对于系统级连接8的访问。例如,应用可以查询os14,以提供与计算设备2配对和/或连接到计算设备2的客户端设备(例如,客户端4)的名称。os14可以返回所配对和/或所连接的设备的列表。应用可以请求消息被发送到客户端设备4(例如,用系统加密密钥加密)。在一些示例中,应用还可以请求os14发起上述配对处理。

在动作306,同伴应用12和客户端设备4可以生成与客户端设备4的应用级连接6。例如,同伴应用12可以生成应用会话密钥并向客户端设备4提供应用会话密钥。客户端设备4和同伴应用12可以利用本文中描述的应用会话密钥来相互认证并加密在同伴应用12和客户端设备4之间传输的消息。

在动作308,同伴应用12和客户端设备4可以经由应用级连接6交换消息。例如,同伴应用12可以至少部分地基于应用会话密钥对第一消息执行第一密码运算(cryptographicoperation)以生成第一密码结果,并向客户端设备4发送该密码结果。客户端设备4可以执行第二密码运算以认证第一消息。

在一些示例中,密码运算是加密和解密。例如,第一密码运算可以包括同伴应用12利用应用会话密钥加密第一消息。第一密码结果可以是第一消息的加密形式。第二密码运算可以包括客户端设备4解密第一密码结果以产生第一消息。类似地,在一些示例中,客户端设备4可以加密第二消息并向同伴应用12发送经加密的第二消息。同伴应用12可以解密经加密的第二消息以生成第二消息。

在一些示例中,除了或者代替对消息进行加密,同伴应用12和客户端设备4可以利用基于哈希的消息认证代码(hmac)。例如,第一密码运算可以包括使用应用会话密钥对第一消息应用哈希(hash)函数。可以使用包括,例如,本文中所述的哈希函数的任意合适的哈希函数。第一密码结果可以是哈希值(这里也称为消息认证代码(mac)或hmac)。同伴应用12可以向客户端设备4发送第一消息和第一密码结果(或者hmac)二者。在一些示例中,第一消息针对应用级连接可以在未加密或“不受阻碍(in-the-clear)”的条件下被发送,但是其可以根据系统级连接被加密。

在接收到第一消息和hmac时,客户端设备4可以使用客户端设备4处存储的应用会话密码的副本对第一消息应用哈希函数来生成第二哈希值。对第一消息应用哈希函数可以是第二密码运算。客户端设备4可以比较第二哈希值与hmac。如果第二哈希值与hmac匹配,则这可以指示该消息来自具有应用会话密钥(例如,以生成hmac)的一方,因此有可能是作为应用级连接的相对方的同伴应用12。客户端设备4可以类似地使用hmac结合消息来向同伴应用12认证其自身。类似地,客户端设备4可以生成第二消息的hmac并向同伴应用12发送第二消息和hmac。同伴应用12可以利用应用会话密钥对第二消息应用哈希函数来生成第二密码结果,并且可以比较第二密码结果和hmac。

在一些示例中,客户端设备4可以被配置为避免在不使用应用会话密钥的情况下与计算设备2通信。这样,同伴应用12可以是在计算设备2处运行的、被配置为与客户端设备4通信的唯一应用。在一些示例中,计算设备2可以具有与客户端设备4的多个应用级连接。例如,同伴应用12和应用11可以具有不同连接,这些连接具有不同的加密密钥。客户端设备4可以被配置为经由第一连接(例如,向同伴应用12)提供一些数据或数据类型,并经由第二连接(例如,向应用11)提供其他数据或数据类型。

图4是示出可以在图1的环境10中执行以生成应用和客户端设备之间的应用级连接6的处理流程400的一个示例的流程图。结合包括计算设备2和客户端设备4的图1的示例10描述处理流程400。但是,处理流程400可以被执行来实现任意两个适当设备和/或应用之间的通信安全。另外,处理流程400可以例如,在已经建立计算设备2和客户端设备4之间的系统级连接8之后被执行。

处理流程400包括两列。第一列401包括由在计算设备2处运行的同伴应用12执行的动作。第二列403包括由客户端设备4(例如,客户端os20和/或客户端应用18)执行的动作。在动作402,同伴应用12可以识别客户端设备4。在一些示例中,同伴应用12查询os14,以提供所配对和/或所连接的设备的列表。同伴应用12可以确定客户端设备4是否被包括在接收到的列表中。

在动作404,同伴应用12可以生成应用会话密钥。例如,同伴应用12可以随机生成将用作应用会话密钥的数字。同伴应用12或其他组件可以例如,利用任意随机或伪随机数生成器设备和/或算法来随机生成数字。在一些示例中,在计算设备2执行androidtm操作系统的情况下,随机生成数字可以包括调用securerandom()类。在一些示例中,在计算设备2执行iostm操作系统的情况下,随机生成数字可以包括调用srandom()函数。在一些示例中,同伴应用12可以在安全存储器位置(例如,本文中描述的密钥存储位置242)存储应用会话密钥。

在动作406,同伴应用12可以向客户端设备4发送包括应用会话密钥的应用会话密钥消息405。应用会话密钥消息405可以经由系统级连接8发送。例如,同伴应用12可以利用要发送给客户端设备4的请求来向os14发送应用会话密钥。os14可以利用系统级连接密钥加密应用会话密钥来生成应用会话密钥消息405,os14可以将会话密钥消息405定向到客户端设备4。客户端设备4可以在动作408接收应用会话密钥消息405。由于客户端设备4也具有系统级连接密钥,所以其可以解密应用会话密钥消息405并提取应用会话密钥。

在动作410和412,同伴应用12和客户端设备4可以参与应用会话密钥测试407。根据应用会话密钥测试407,同伴应用12和客户端设备4可以交换各种消息来相互认证和/或确保双方具有相同的应用会话密钥。这里,例如,参考图7至图9提供了示例应用会话密钥测试407。

如果应用会话密钥测试407成功(例如,双方具有相同的应用会话密钥的副本),则可以在同伴应用12和客户端设备4之间创建应用级连接6。例如,同伴应用12可以创建第一消息并利用应用会话密钥加密第一消息。经过应用加密的第一消息可以被提供给os14,该os可以利用系统级连接密钥加密经过应用加密的第一消息来生成经过系统加密的第一消息。经过系统加密的第一消息随后被发送给客户端设备4。客户端设备4可以利用系统级连接密钥解密经过系统加密的第一消息来生成经过应用加密的第一消息。客户端设备4还可以解密经过应用加密的第一消息来生成不受阻碍的第一消息。

类似地,客户端设备4可以创建第二消息,并用应用会话密钥加密第二消息来生成经过应用加密的第二消息。客户端设备4还可以利用系统级连接密钥加密经过应用加密的第二消息来生成经过系统加密的第二消息,该经过系统加密的第二消息可以被发送给计算设备2。在计算设备2处,os14可以利用系统级连接密钥解密经过系统加密的第二消息来生成经过应用加密的消息。os14可以向同伴应用返回经过应用加密的消息。同伴应用12可以提取与客户端设备4相关联的应用会话密钥并解密经过应用加密的消息来生成不受阻碍的第二消息。

返回参考图4,处理流程400还示出了例如,当同伴应用12从客户端设备4订阅一种类型的数据时可以被执行的可选动作414、416、418、420。例如,客户端设备4可以是收集有关用户的活动数据(例如,用户活动数据,例如,所走的步数、心率、消耗掉的卡路里、睡眠模式等)或有关用户的其他数据的可穿戴设备。同伴应用12可以订阅一些或所有捕捉到的活动数据。在另一示例中,当社交媒体或其他类似事件被定向到计算设备2的用户时,客户端设备4可以接收到通知。同伴应用12可以在发生这些事件中的一个或多个事件时随订即接消息。

在动作414,同伴应用12还可以订阅客户端内容,例如,上述生物数据。同伴应用12可以向客户端设备4发送订阅消息409或其他适当的数据请求。订阅消息409可以包括描述同伴应用12将接收的客户端设备数据的类型的数据。订阅消息409可以经由系统级连接8和应用级连接6被发送。例如,可以利用应用会话密钥和系统级连接密钥来加密订阅消息409。客户端设备4可以在动作416接收订阅消息并执行适当的解密。

在418,客户端设备4可以例如,经由系统级连接8和应用级连接6向同伴应用12发送订阅数据411。订阅数据411可以包括订阅消息409中提到的类型的数据。订阅数据411可以在接收到订阅消息409时已经被存储在客户端设备4的存储器中和/或可以随后被客户端设备4捕捉或以其他方式接收。在一些示例中,客户端设备4可以被配置为例如在接收到订阅数据时或者周期性地向同伴应用发送新接收的订阅数据。同伴应用可以在420接收订阅数据。同伴应用12可以利用应用会话密钥解密订阅数据411(例如,同伴应用12可以在os利用系统级连接密钥解密了订阅数据411之后接收该订阅数据411)。

在一些示例中,客户端设备4可以被编程为按照维护应用级连接的安全的方式响应来自计算设备的通信。例如,图5是示出可以由客户端设备4执行以响应于来自计算设备2的通信的处理流程500的一个示例的流程图。处理流程500的动作可以由客户端设备4的包括,例如,客户端os20和/或客户端应用18的任意合适组件执行。另外,结合包括计算设备2和客户端设备4的图1的示例环境10描述处理流程500。但是,处理流程500可以被执行以实现任何两个适当设备和/或应用之间的通信安全。

在动作502,客户端设备4可以从计算设备2(例如,从在计算设备2处运行的应用11、12)接收通信请求。在动作504,客户端设备4可以确定计算设备2是否具有与通信请求的发送方的应用级连接6。客户端设备4可以通过任何适当方式确定其是否具有与发送方的应用级连接6。例如,客户端设备4可以利用系统级连接密钥解密通信请求,然后确定其是否具有可以解密结果的应用会话密钥。如果客户端设备4具有一个以上有效的应用会话密钥,则其可以尝试使用其拥有的所有有效会话密钥。在一些示例中,通信请求可以包括指示进行发送的应用的标识数据。因此,确定客户端设备4是否具有与发送方的应用级连接6可以包括确定客户端设备4是否具有与发送方相关联的应用会话密钥并确定与发送方相关联的应用会话密钥是否能够解密通信请求。

如果客户端设备4在动作504确定其具有与通信请求的发送方的应用级连接,则其可以在动作506接收和/或响应通信请求。如果客户端设备4在动作504确定其不具有与通信请求的发送方的应用级连接,则其可以在动作508拒绝通信请求。拒绝通信请求可以包括简单地不响应通信请求,向计算设备2发送拒绝消息,或者指示客户端设备4拒绝了通信请求的任何其他适当动作。

图6是示出可以在(例如,以上针对动作408描述的)接收到应用会话密钥时在客户端设备4处执行的处理流程600的另一示例的流程图。处理流程600的动作可以由客户端设备4的包括,例如,客户端os20和/或客户端应用18的任何适当组件执行。另外,结合包括计算设备2和客户端设备4的图1的示例环境10描述处理流程600。但是,处理流程600可以被执行以实现任意两个适当设备和/或应用之间的通信安全。

在动作602,客户端设备4可以接收应用会话密钥。在动作604,客户端设备4可以确定其是否存储有在先应用会话密钥。如果客户端设备4被编程为维护多个应用级连接,则其可以例如,通过比较接收到的应用会话密钥和一个或多个存储的应用会话密钥来确定其是否具有对应于应用会话密钥的发送方的应用会话密钥。如果未存储有在先应用会话密钥,则客户端设备4可以在动作608使用新接收到的应用会话密钥来继续应用级连接。如果存储有在先应用会话密钥,则客户端设备4可以在动作606利用在先应用会话密钥继续。如本文中描述的,这可能降低客户端设备4对私下的应用级连接的敏感性。

图7是示出同伴应用12和客户端设备4之间的密钥交换和认证的一个示例的时序图700。结合包括计算设备2和客户端设备4的图1的示例环境10描述时序图700。但是,时序图700可以被执行以实现任何两个适当设备和/或应用之间的通信安全。可以例如,基于系统级连接8来发送根据时序图700所发送的各种消息(例如,当完成系统级连接8时)。时序图700的部分或所有可以是本文针对处理流程400描述的应用会话密钥测试407的示例。例如,从在动作712生成应用会话密钥k到消息740可以表示应用会话密钥测试407的一个示例。

在消息702,计算设备2可以与客户端设备4配对。在消息704,客户端设备4可以指示配对成功。在消息706,计算设备2可以建立与客户端设备4的系统级连接。在消息708,客户端设备4可以指示系统级连接成功完成。如本文中描述的,消息702和706可以由同伴应用12和/或os14,例如,响应于来自同伴应用12的请求而发送。

在动作710,同伴应用12可以检测到新客户端设备(例如,客户端设备4)已经配对并连接到计算设备。例如,同伴应用12可以向os14查询新客户端设备和/或os14可以被配置为向同伴应用12通知新客户端设备已经连接。在动作712,同伴应用可以生成用于客户端设备4的应用会话密钥k。在消息714,同伴应用12可以经由系统级连接向客户端设备4发送应用会话密钥k。可选地,客户端设备4可以发送指示应用会话密钥k被接收到的应答消息716。在一些示例中,客户端设备4可以执行处理流程600(如本文中描述的)来确定其是否拥有以前从同伴应用12接收到的应用会话密钥。在图7示出的示例中,客户端设备4已经确定其不具有以前从同伴应用接收到的应用会话密钥,所以其利用新接收到的应用会话密钥k继续处理。

在动作718,同伴应用12可以随机生成数字v,例如,如本文中描述的,并且可以在消息720向客户端设备4发送随机生成的数字v。在动作722,客户端设备4可以对应用会话密钥k和随机生成的数字v应用哈希函数来生成哈希值x。可以使用包括例如,nist哈希函数、bernstein哈希函数、fowler-noll-vo哈希函数等的任何适当的哈希函数。客户端设备4还可以在动作724随机生成第二数字v1。客户端设备4可以在消息726向同伴应用12发送哈希值x和第二数字v1。

同伴应用12可以在动作728使用在计算设备2处存储的应用会话密钥k的副本对数字v应用哈希函数来生成哈希值y。同伴应用12可以被编程为应用客户端设备4在动作722所应用的相同的哈希函数。相应地,如果在计算设备2处存储的应用会话密钥k的副本与在客户端设备4存储的应用会话密钥k的副本匹配,则哈希值x应该等于哈希值y。同伴应用在动作730可以比较x和y。在示例时序图700中,x和y可以相等。因为x和y相等,所以同伴应用12可以确定客户端设备4正在使用在计算设备2处存储的应用会话密钥k的相同版本。

同伴应用12还可以在动作732对数字v1和应用会话密钥k(例如,在计算设备2处存储的应用会话密钥的副本)应用哈希函数。这可以生成哈希值y1。同伴应用12可以向客户端设备4发送包括哈希值y1的消息734。可选地,消息734还可以指示同伴应用12成功核实了数字v和应用会话密钥k的哈希(例如,通过成功重新创建哈希)。

在动作736,客户端设备4可以对数字v1和应用会话密钥k(例如,在客户端设备4处存储的应用会话密钥k的版本)应用哈希函数。在动作738,客户端设备4可以比较哈希值x1和y1。因为在示例时序图700中客户端设备4和同伴应用12具有相同的应用会话密钥,所以x1可以等于y1。客户端设备4可以向同伴应用发送指示客户端设备4(例如,通过成功地重新创建哈希)成功核实了数字v1和应用会话密钥k的哈希的消息740。

图8是示出同伴应用12和客户端设备4之间的密钥交换和认证的一个示例的时序图800。例如,时序图800可以示出当客户端设备4和同伴应用12以前已经连接并且已经交换应用会话密钥k时由客户端设备4和同伴应用12执行的处理。另外,结合包括计算设备2和客户端设备4的图1的示例环境10描述时序图800。但是,时序图800可以被执行以实现任何两个适当设备和/或应用之间的通信安全。可以例如,基于系统级连接8来发送根据时序图800所发送的各种消息(例如,当系统级连接8完成时)。

时序图800开始于计算设备2(例如,其os14)和客户端设备4之间的连接,包括来自计算设备2的连接消息802和从客户端设备4到计算设备2的连接成功消息804。在各种示例中,这可以建立系统级连接8,同伴应用12和客户端设备4之间的后续通信可以在该系统级连接上发送。

在动作806,同伴应用12可以从计算设备2的存储器提取应用会话密钥k。例如,同伴应用12可以将请求定向到os14来提取密钥存储区存储器位置处的应用会话密钥k,如本文中所描述的。同伴应用12可以可选地在消息808中向客户端设备4发送应用会话密钥k(例如,在计算设备2处存储的应用会话密钥k的副本)。在一些示例中,客户端设备4可以向同伴应用12发送指示密钥被接收到的消息810。如以上针对处理流程600描述的,客户端设备4在接收到应用会话密钥k时,可以确定其具有存储用于同伴应用12的在先密钥,因此可以利用其所存储的应用会话密钥k的版本(这里称为在客户端设备4处存储的应用会话密钥k的副本)来继续进行时序图800。

在动作812,同伴应用12可以随机生成数字v,例如,如本文中描述的。同伴应用可以向客户端设备4发送包括数字v的消息814。客户端设备4在动作816可以对接收到的数字v和在客户端设备4处存储的应用会话密钥k的副本应用哈希函数来生成哈希值x。在动作818,客户端设备4可以随机生成另一数字v1。客户端设备可以在消息819向同伴应用发送哈希值x和数字v1。

在接收到消息819时,同伴应用12可以在动作820对数字v和在计算设备2处存储的应用会话密钥k的副本应用哈希函数来生成另一哈希值y。在动作822,同伴应用12可以比较x和y。如果同伴应用12例如,在密钥存储区存储的应用会话密钥k的副本与在客户端设备4处存储的应用会话密钥k的副本匹配,则x可以等于y。在示例时序图800中,同伴应用12和客户端设备4存储的应用会话密钥k的副本可以匹配,因此同伴x和y可以匹配。

同伴应用12可以在动作824对数字v1和应用会话密钥k的副本应用哈希函数来生成哈希值y1,并且可以发送包括哈希值y1和关于x与y比较成功的指示的消息826。客户端设备可以接收消息826,并且在动作828可以对哈希值v1和在客户端设备4处存储的应用会话密钥k的副本应用哈希函数。客户端设备4可以在动作832比较x1和y1。因为同伴应用12和客户端设备4存储的应用会话密钥的副本在示例时序图800中匹配,所以x1和x2可以匹配。因此,客户端设备4可以发送指示x1和y1比较成功的消息832。可选地,消息832还可以包括在动作828计算出的哈希值x1。

图9是示出同伴应用12和客户端设备4之间的密钥交换和认证的一个示例的时序图900。例如,时序图900可以示出在当客户端设备4具有以前存储的应用会话密钥k时同伴应用12尝试生成新应用会话密钥k的情形下,由客户端设备4和同伴应用12执行的处理。例如,在同伴应用12被重新安装在计算设备2上的情况下,在计算设备2和客户端设备4之间的系统级连接8被重置的情况下,或者由于任何其他适当原因会发生这种情况。

时序图900开始于计算设备2(例如,其os14)和客户端设备4之间的连接,包括来自计算设备2的连接消息902和从客户端设备4到计算设备2的连接成功消息904。在各种示例中,这可以建立系统级连接8,同伴应用12和客户端设备4之间的后续通信可以在该系统级连接上发送。

在动作906,同伴应用12可以生成用于客户端设备4的应用会话密钥k(在时序图900的描述中被称为新密钥)。在消息908,同伴应用12可以经由系统级连接8向客户端设备4发送新密钥k。可选地,客户端设备4可以发送指示新密钥k被接收到的应答消息910。客户端设备4可以执行如以上在本文中描述的处理流程600。客户端设备4可以确定其具有与同伴应用12相关联的以前接收到的应用会话密钥k(在时序图900的描述中被称为客户端存储的密钥)。因此,客户端设备4可以利用客户端存储的密钥来完成时序图900的剩余处理。

在动作912,同伴应用12可以随机生成数字v,例如,如本文中描述的,并且可以在消息914向客户端设备4发送随机生成的数字v。客户端设备4在动作916可以对随机生成的数字v和客户端存储的密钥应用哈希函数。客户端设备4还可以在动作918随机生成第二数字v1。客户端设备4可以在消息920向同伴应用12发送哈希值x和第二数字v1。

同伴应用12可以在动作922使用新密钥对数字v应用哈希函数来找出哈希值y。在动作924,同伴应用12可以比较x和y。因为哈希值x是通过利用客户端存储的密钥应用哈希函数找出的并且哈希值y是通过利用新密钥应用哈希函数找出的,所以x和y可以不相等。同伴应用12可以在动作926确定x和y的匹配失败并且在动作928可以提示客户端设备4的重置。例如,同伴应用12可以向客户端设备4发送请求其重置的消息。在一些示例中,同伴应用12可以在计算设备2的输出设备上显示用户手动重置客户端设备4的请求。

图10是示出应用11和客户端设备4之间的密钥交换和认证的一个示例的时序图1000。例如,时序图1000可以示出在同伴应用12已经生成与客户端设备的应用级连接6之后应用11尝试访问客户端设备4时由客户端设备4和第二应用11执行的处理。因此,在时序图1000开始时,客户端设备4具有存储的应用会话密钥(在时序图1000的讨论中被称为客户端存储的密钥)。

时序图1000开始于计算设备2(例如,其os14)和客户端设备4之间的连接,包括来自计算设备2的连接消息1002和从客户端设备4到计算设备2的连接成功消息1004。在各种示例中,这可以建立系统级连接8,应用11和客户端设备4之间的后续通信可以在该系统级连接上发送。

在动作1006,应用11可以生成用于客户端设备4的应用会话密钥k和/或从其密钥存储区提取以前生成的应用会话密钥。由应用11生成和/或提取的应用会话密钥被称为非匹配密钥,因为其与客户端存储的密钥不匹配。在消息1008,应用11可以经由系统级连接8向客户端设备4发送非匹配密钥k。可选地,客户端设备4可以发送指示非匹配密钥k被接收到的应答消息1010。客户端设备4可以执行如本文中以上描述的处理流程600。客户端设备4可以确定其具有客户端存储的密钥的副本。因此,客户端设备4可以利用客户端存储的密钥来完成时序图1000的剩余处理。

在动作1012,应用11可以随机生成数字v,例如,如本文中描述的,并且可以在消息1014向客户端设备4发送随机生成的数字v。客户端设备4在动作1016可以对随机生成的数字v和客户端存储的密钥应用哈希函数。客户端设备4还可以在动作1018随机生成第二数字v1。客户端设备4可以在消息1020向应用11发送哈希值x和第二数字v1。

应用11可以在动作1022使用非匹配密钥对数字v应用哈希函数来找出哈希值y。在动作1024,应用11可以比较x和y。因为哈希值x是通过利用客户端存储的密钥应用哈希函数找出的并且哈希值y是通过利用非匹配密钥应用哈希函数找出的,所以x和y可以不相等。应用11可以在动作1026确定x和y的匹配失败并在动作1028可以提示客户端设备4的重置。例如,应用11可以向客户端设备4发送请求其重置的消息。在一些示例中,应用11可以在计算设备2的输出设备上显示用户手动重置客户端设备4的请求。在一些示例中,重置提示可以指示应用11请求重置。如果用户没有辨认出应用11正好与客户端设备4相关联,则其可以拒绝重置,这可以防止应用11与客户端设备4通信。

图11是示出计算设备的软件架构1102的一个示例的框图1100。可以结合例如,本文中描述的各种硬件架构来使用架构1102。图11仅是软件架构的非限制性示例,并且可以实现很多其他架构来帮助本文中描述的功能。软件架构1102可以在诸如,计算设备2、32和/或客户端设备4、34之类的硬件上运行。代表性的硬件层1104被示出,并且可以表示例如,以上提到的计算设备中的任意计算设备。在一些示例中,可以根据图2的架构200和/或图12的架构1200实现硬件层1104。

代表性的硬件层1104包括具有相关联的可执行指令1108的一个或多个处理单元1106。可执行指令1108表示软件架构1102(包括图1和图3至图10的方法、模块、组件等的实施方式)的可执行指令。硬件层1104还包括存储器和/或存储模块1110,该存储器和/或存储模块还具有可执行指令1108。硬件层104还可以包括1112指示的、表示硬件层1104的任意其他硬件的其他硬件(例如,示出为硬件架构1200的部分的其他硬件)。

在图11的示例架构中,软件1102可以被概念化为层的堆叠,每个层提供特定功能。例如,软件1102可以包括诸如,操作系统1114、库1116、框架/中间件1118、应用1120、和表示层1144之类的层。可操作地,应用1120和/或层中的其他组件可以通过软件栈请求应用编程接口(api)调用,并响应于api调用1124接收如消息1126所示的响应、返回值等。所示出的层在性质上是说明性的,并不是所有软件架构都具有所有层。例如,一些移动或专用操作系统可以不提供框架/中间件层1118,同时其他操作系统可以提供这样的层。其他软件架构可以包括附加或不同的层。

操作系统1114可以管理硬件资源并提供公共服务。操作系统1114可以包括例如,内核1128、服务1130、以及驱动器1132。内核1128可以用作硬件和其他软件层之间的抽象层。例如,内核1128可以负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全设置等。服务1130可以为其他软件层提供其他公共服务。驱动器1132可以负责控制下层硬件或与下层硬件接口。例如,驱动器1132可以根据硬件配置包括显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、nfc驱动器、音频驱动器、功率管理驱动器等。

库1116可以提供可以由应用1120和/或其他组件和/或层利用的通用架构。库1116一般提供允许其他软件模块通过比直接与下层操作系统1114功能(例如,内核1128、服务1130、和/或驱动器1132)接口更简单的方式执行任务。库1116可以包括可以提供诸如,存储器分配功能、字符串操作功能、数学功能等的功能。另外,库1116可以包括api库1136,例如,媒体库(例如,支持诸如,mpeg4、h.264、mp3、aac、amr、jpg、png的各种媒体格式的呈现和操控的库)、图形库(例如,可以用于在显示器上渲染图形内容中的2d和9d的opengl框架)、数据库库(例如,可以提供各种关联数据库功能的sqlite)、web库(例如,可以提供网络浏览功能的webkit)等。库1116还可以包括各种其他库1138来提供到应用1120和其他软件组件/模块的很多api。

框架1118(有时候也称为中间件)可以提供可以由应用1120和/或其他软件组件/模块利用的高层通用框架。例如,框架1118可以提供各种图形用户接口(gui)功能、高级资源管理、高级位置服务等。框架1118可以提供可以由应用1120和/或其他软件组件/模块利用的广谱的其他api,其中的一些可以是特定操作系统或平台专用的。

应用1120包括内置应用1140和/或第三方应用1142。代表性的内置应用1140的示例可以包括但不限于,接触应用(contactsapplication)、浏览器应用、读书器应用、位置应用、媒体应用、消息应用、和/或游戏应用。第三方应用1142可以包括内置应用和广泛搭配的其他应用中的任意应用。在特定示例中,第三方应用1142(例如,由特定平台的供应商以外的实体使用androidtm或iostm软件开发工具开发的应用)可以是在移动操作系统(例如,iostm、androidtm电话、或其他移动操作系统)上运行的移动软件。在该示例中,第三方应用1142可以请求由诸如操作系统1114的移动操作系统提供的api调用1124来帮助本文中描述的功能。

应用1120可以利用内置的操作系统功能(例如,内核1128、服务1130、和/或驱动器1132)、库(例如,系统1134、api1136、以及其他库1138)、框架/中间件1118来创建与系统的用户交互的用户接口。替代地或者另外,在一些系统中,与用户的交互可以通过表示层(例如,表示层1144)进行。在这些系统中,应用/模块“逻辑”可以不同于与用户交互的应用/模块方面。

一些软件架构利用虚拟机。在图11的示例中,这由虚拟机1148示出。虚拟机创建软件环境,在该软件环境中应用/模块可以如同它们在硬件计算设备上运行一样运行。虚拟机由主机操作系统(操作系统1114)管理,并且一般尽管不是总是具有虚拟机监视器1146,该虚拟机监视器管理虚拟机的操作以及与主机操作系统(即,操作系统114)的接口。软件架构在诸如操作系统1150、库1152、框架/中间件1154、应用1156、和/或表示层1158的虚拟机中执行。软件架构在虚拟机1148中执行的这些层可以与以前描述的层相同也可以不同。

图12是示出计算设备硬件架构1200的框图,在该计算设备硬件架构中指令集或指令序列可以被执行以使机器执行本文中讨论的任意方法的示例。例如,架构1200可以运行针对图11描述的软件架构1102。架构1200可以作为单独设备操作或者可以连接到(例如,联网到)其他机器。在联网部署中,架构1200可以服务器-客户端网络环境中的服务器或客户端机器的身份进行操作,或者其可以用作对等(或分布式)网络环境中的对等机器。架构1200可以被实现在个人计算机(pc)、平板pc、混合平板、机顶盒(stb)、个人数字助理(pda)、移动电话、网络设备、网络路由器、交换机或桥接器、或者能够(顺序地或以其他方式)执行指定该机器将采取的动作的指令的任意机器中。

示例架构1200包括处理器单元1202,该处理器单元包括至少一个处理器(例如,中央处理单元(cpu)、图形处理单元(gpu)、或它们二者、处理器核、计算节点等)。架构1200还可以包括主存储器1204和静态存储器1206,它们经由链路1208(例如,总线)相互通信。架构1200还可以包括视频显示单元1210、字母数字输入设备1212(例如,键盘)、以及用户界面(ui)导航设备1214(例如,鼠标)。在一些示例中,视频显示单元1210、输入设备1212、以及ui导航设备1214被合并到触摸屏显示器中。架构1200可以另外包括存储设备1216(例如,驱动单元)、信号生成设备1218(例如,扬声器)、网络接口设备1220、以及诸如,全球定位系统(gps)传感器、指南针、加速计、或其他传感器之类的一个或多个传感器(未示出)。

存储设备1216包括机器可读介质1222,该机器可读介质上存储有体现本文中描述的一种或多种方法或功能或者由本文中描述的一种或多种方法或功能利用的一组或多组数据结构和指令1224(例如,软件)。指令1224还可以完全或至少部分地驻留在主存储器1204、静态存储器1206、和/或在由架构1200对其执行期间完全或至少部分地驻留在处理器1202中,其中,主存储器1204、静态存储器1206、以及处理器1202也构成机器可读介质。存储在机器可读介质1222处的指令可以包括例如,用于实现软件架构1102的指令、用于执行本文中描述的任意特征的指令等。

尽管机器可读介质1222在示例中被示出为单独介质,但是术语“机器可读介质”可以包括存储一个或多个指令1224的单个介质或多个介质(例如,中央或分布式数据库和/或相关联的高速缓存和服务器)。术语“机器可读介质”还应该被理解为包括能够存储、编码、或者承载供机器执行并使机器执行本公开的一种或多种方法的指令、或能够、编码、或者承载与这些指令相关联或被这些指令利用的数据结构的任意有形介质。术语“机器可读介质”应该相应地被理解为包括但不限于,固态存储器和光和磁介质。机器可读介质的具体示例包括非易失性存储器,例如但不限于,半导体存储器设备(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)以及闪存设备),诸如内置硬盘和可移除盘的磁盘,磁光盘、以及cd-rom和dvd-rom盘。

还可以利用多种公知传输协议(例如,http)中的任意一种传输协议,使用传输介质经由网络接口设备1220在通信网络1226上发送或接收指令1224。通信网络的示例包括局域网(lan)、广域网(wan)、互联网、移动电话网、普通老式电话(pots)网、以及无线数据网(例如,wi-fi、3g、以及6glte/lte-a或wimax网)。术语“传输介质”应该被理解为包括能够存储、编码、或携带供机器执行的指令的任意非有形介质,并且包括帮助这种软件的传送的数字或模拟通信信号或其他非有形介质。

如本文中描述的示例可以包括逻辑或多个组件、引擎、或模块、电路(为了一致称为电路)或者在它们上操作,尽管这些术语可以交换使用。电路可以是通信地耦合到一个或多个处理器以执行本文中描述的操作的硬件、软件、或固件。电路可以是硬件电路,并且这样的电路可以被认为是执行指定操作的有形实体并且可以按照某种方式进行配置或布置。在一个示例中,电路可以按照指定方式布置为电路(例如,在内部或者针对诸如其他电路的外部实体)。在一个示例中,一个或多个计算平台(例如,单独的客户端或服务器计算平台)或者一个或多个硬件处理器的整体或部分可以被固件或软件(例如,指令、应用部分、或应用)配置为操作以执行指定操作的电路。在一个示例中,软件可以驻留在机器可读介质上。在一个示例中,软件在被电路的下层硬件执行时使得硬件执行指定操作。因此,术语“硬件电路”被理解为覆盖有形实体,为物理构建、专门配置(例如,硬连线)、或者临时(例如,瞬态地)配置(例如,编程)为按照指定方式操作或执行本文中描述的任意操作的部分或所有的实体。

考虑电路被临时配置的示例,这些电路中的每个电路不需要在任意时刻被实例化。例如,在电路包括使用软件配置的通用硬件处理器的情况下,该通用硬件处理器可以在不同时间被配置为相应的不同电路。软件可以相应地配置硬件处理器,例如,以在一个时刻构建特定电路并在另一时刻构建不同电路。

附加注解和示例

示例1是一种系统,包括:计算设备,包括至少一个处理器和与至少一个处理器通信的存储器,该至少一个处理器包括:连接电路,该连接电路生成计算设备和客户端设备之间的连接;在计算设备处运行的第一应用:经由连接向客户端设备发送第一应用会话密钥;至少部分地基于第一应用会话密钥对第一消息执行密码运算以生成第一密码结果;经由连接向客户端设备发送第一密码结果;经由连接从客户端设备接收第二密码结果;以及确定第二密码结果是利用第一应用会话密钥获取的。

在示例2中,示例1的主题可选地包括:在计算设备处运行的操作系统:从第一应用接收存储第一应用会话密钥的请求;以及在存储器的与第一应用相关联的位置存储第一应用会话密钥。

在示例3中,示例1至2中任一项或多项的主题可选地包括:其中,第一应用还:随机生成第一数字;经由连接向客户端设备发送第一数字;经由连接从客户端设备接收第一值;至少部分地基于第一应用会话密钥向第一数字应用哈希函数以生成第二值;以及确定第一值等于第二值。

在示例4中,示例3的主题可选地包括:其中,第一应用还:经由连接从客户端设备接收第二数字;至少部分地基于第一应用会话向第二数字应用哈希函数以生成第三值;经由连接向客户端设备发送第三值;以及经由连接从客户端设备接收成功消息,其中,该成功消息指示客户端设备对第三值进行了核实。

在示例5中,示例1至4中任一项或多项的主题可选地包括:其中,第一应用还:确定客户端设备不具有第一应用会话密钥;以及提示客户端设备的重置。

在示例6中,示例1至5中任一项或多项的主题可选地包括:其中,第一应用:生成第二应用会话密钥;向客户端设备发送第二应用会话密钥;随机生成第一数字;向客户端设备发送第一数字;从客户端设备接收第一值;至少部分地基于第一应用会话密钥向第一数字应用哈希函数以生成第二值;确定第二值不等于第一值;以及提示客户端设备的重置。

在示例7中,示例1至6中任一项的主题可选地包括在计算设备处运行的第二应用,该第二应用:向客户端设备发送第三消息,其中,第三消息从客户端设备请求数据;以及从客户端设备接收拒绝消息。

在示例8中,示例1至7中任一项或多项的主题可选地包括:其中,第一消息描述第一应用请求的第一数据类型。

在示例9中,示例1至8中任一项或多项的主题可选地包括:其中,对第一消息执行密码运算是利用第一应用密钥加密第一消息,并且其中,确定第二密码结果是利用第一应用会话密钥获取的是利用第一应用会话密钥解密第二密码结果以生成第二消息。

在示例10中,示例1至9中任一项或多项的主题可选地包括:其中,确定第二密码结果是利用第一应用会话密钥获取的是:至少部分地基于第一应用会话密钥对从客户端设备接收的第二消息应用哈希函数以生成第三密码结果;以及确定第三密码结果等于第二密码结果。

在示例11中,示例1至10中任一项或多项的主题可选地包括客户端设备:经由连接从在计算设备处运行的第二应用接收数据请求;确定客户端设备不具有来自第二应用的第二应用会话密钥;以及拒绝数据请求。

在示例12中,示例1至11中任一项或多项的主题可选地包括客户端设备:经由连接接收第二应用会话密钥;经由连接接收数字;至少部分地基于第一应用会话密钥向数字应用哈希函数以生成第一值;以及向计算设备发送第一值。

在示例13中,示例1至12中任一项或多项的主题可选地包括:其中,第一应用还生成第一应用会话密钥。

示例14是一种方法,包括:生成计算设备和客户端设备之间的连接;由在计算设备处运行的第一应用经由连接向客户端设备发送第一应用会话密钥;由第一应用至少部分地基于第一应用会话密钥对第一消息执行密码运算以生成第一密码结果;由第一应用经由连接向客户端设备发送第一密码结果;由第一应用经由连接从客户端设备接收第二密码结果;以及由第一应用确定第二密码结果是利用第一应用会话密钥获取的。

在示例15中,示例14的主题可选地包括:由在计算设备处运行的操作系统从第一应用接收存储第一应用会话密钥的请求;以及由操作系统在存储器的与第一应用相关联的位置存储第一应用会话密钥。

在示例16中,示例14至15中任一项或多项的主题可选地包括:由第一应用随机生成第一数字;由第一应用经由连接向客户端设备发送第一数字;由第一应用经由连接从客户端设备接收第一值;由第一应用至少部分地基于第一应用会话密钥向第一数字应用哈希函数以生成第二值;以及由第一应用确定第一值等于第二值。

在示例17中,示例16的主题可选地包括:由第一应用经由连接从客户端设备接收第二数字;由第一应用至少部分地基于第一应用会话密钥向第二数字应用哈希函数以生成第三值;由第一应用经由连接向客户端设备发送第三值;以及由第一应用经由连接从客户端设备接收成功消息,其中,该成功消息指示客户端设备核实了第三值。

在示例18中,示例14至17中任一项或多项的主题可选地包括:由第一应用确定客户端设备不具有第一应用会话密钥;以及由第一应用提示客户端设备的重置。

在示例19中,示例14至18中任一项或多项的主题可选地包括:由第一应用生成第二应用会话密钥;由第一应用向客户端设备发送第二应用会话密钥;由第一应用随机生成第一数字;由第一应用向客户端设备发送第一数字;由第一应用从客户端设备接收第一值;由第一应用至少部分地基于第一应用会话密钥向第一数字应用哈希函数以生成第二值;由第一应用确定第二值不等于第一值;以及由第一应用提示客户端设备的重置。

在示例20中,示例14至19中任一项或多项的主题可选地包括:由在计算设备处运行的第二应用向客户端设备发送第三消息,其中,该第三消息从客户端设备请求数据;以及由第二应用从客户端设备接收拒绝消息。

在示例21中,示例14至20中任一项或多项的主题可选地包括:其中,第一消息描述第一应用请求的第一数据类型。

在示例22中,示例14至21中任一项或多项的主题可选地包括:其中,对第一消息执行密码运算包括利用第一应用会话密钥加密第一消息,并且其中,确定第二密码结果是利用第一应用会话密钥获取的包括利用第一应用会话密钥解密第二密码结果以生成第二消息。

在示例23中,示例14至22中任一项或多项的主题可选地包括:其中,确定第二密码结果是利用第一应用会话密钥获取的包括:至少部分地基于第一应用会话密钥对从客户端设备接收的第二消息应用哈希函数以生成第三密码结果;以及确定第三密码结果等于第二密码结果。

在示例24中,示例14至23中任一项或多项的主题可选地包括:由在计算设备处运行的第二应用经由连接发送数据请求;以及由第二应用接收拒绝数据请求的拒绝消息。

在示例25中,示例14至24中任一项或多项的主题可选地包括:由在计算设备处运行的第二应用经由连接向客户端设备发送第二应用会话密钥;至少部分地基于第二应用会话密钥确定数字的哈希值;由第二应用经由连接向客户端设备发送数字和哈希值;由第二应用从客户端设备接收拒绝消息。

在示例26中,示例14至25中任一项或多项的主题可选地包括:由第一应用生成第一应用会话密钥。

示例27是至少一个计算机可读介质,其上包括执行示例1至26的任意方法的指令。

示例28是一种装置,包括用于执行示例1至26的任意方法的部件。

示例29是一种装置,包括:用于生成计算设备和客户端设备之间的连接的部件;用于由在计算设备处运行的第一应用经由连接向客户端设备发送第一应用会话密钥的部件;用于由第一应用至少部分地基于第一应用会话密钥对第一消息执行密码运算以生成第一密码结果的部件;用于由第一应用经由连接向客户端设备发送第一密码结果的部件;用于由第一应用经由连接从客户端设备接收第二密码结果的部件;以及用于由第一应用确定第二密码结果是利用第一应用会话密钥获取的部件。

在示例30中,示例29的主题可选地包括:用于由在计算设备处运行的操作系统从第一应用接收存储第一应用会话密钥的请求的部件;以及用于由操作系统在存储器的与第一应用相关联的位置存储第一应用会话密钥的部件。

在示例31中,示例29至30中任一项或多项的主题可选地包括:用于由第一应用随机生成第一数字的部件;用于由第一应用经由连接向客户端设备发送第一数字的部件;用于由第一应用经由连接从客户端设备接收第一值的部件;用于由第一应用至少部分地基于第一应用会话密钥对第一数字应用哈希函数以生成第二值的部件;以及用于由第一应用确定第一值等于第二值的部件。

在示例32中,示例31的主题可选地包括:用于由第一应用经由连接从客户端设备接收第二数字的部件;用于由第一应用至少部分地基于第一应用会话密钥对第二数字应用哈希函数以生成第三数字的部件;用于由第一应用经由连接向客户端设备发送第三值的部件;以及用于由第一应用经由连接从客户端设备接收成功消息的部件,其中,该成功消息指示客户端核实了第三值。

在示例33中,示例29至32中任一项或多项的主题可选地包括:用于由第一应用确定客户端设备不具有第一应用会话密钥的部件;以及用于由第一应用提示客户端设备的重置的部件。

在示例34中,示例29至33中任一项或多项的主题可选地包括:用于由第一应用生成第二应用会话密钥的部件;用于由第一应用向客户端设备发送第二应用会话密钥的部件;用于由第一应用随机生成第一数字的部件;用于由第一应用向客户端设备发送第一数字的部件;用于由第一应用从客户端设备接收第一值的部件;用于由第一应用至少部分地基于第一应用会话密钥对第一数字应用哈希函数以生辰第二值的部件;用于由第一应用确定第二值不等于第一值的部件;以及用于由第一应用提示客户端设备的重置的部件。

在示例35中,示例29至34中任一项或多项的主题可选地包括:用于由在计算设备处运行的第二应用向客户端设备发送第三消息的部件,其中,该第三消息从客户端设备请求数据;以及用于由第二应用从客户端设备接收拒绝消息的部件。

在示例36中,示例29至35中任一项或多项的主题可选地包括:其中,第一消息描述第一应用请求的第一数据类型。

在示例37中,示例29至36中任一项或多项的主题可选地包括:其中,用于对第一消息执行密码运算的部件包括用于利用第一应用会话密钥加密第一消息的部件,并且其中,确定第二密码结果是利用第一应用会话密钥获取的包括利用第一应用会话密钥解密第二密码结果以生成第二消息。

在示例38中,示例29至37中任一项或多项的主题可选地包括:其中,用于确定第二密码结果是利用第一应用会话密钥获取的部件包括:用于至少部分地基于第一应用会话密钥对从客户端设备接收的第二消息应用哈希函数以生成第三密码结果的部件;以及用于确定第三密码结果等于第二密码结果的部件。

在示例39中,示例29至38中任一项或多项的主题可选地包括:用于由在计算设备处运行的第二应用经由连接发送数据请求的部件;以及用于由第二应用接收拒绝数据请求的拒绝消息的部件。

在示例40中,示例29至30中任一项或多项的主题可选地包括:用于由在计算设备处运行的第二应用经由连接向客户端设备发送第二应用会话密钥的部件;用于至少部分地基于第二应用会话密钥确定数字的哈希值的部件;用于由第二应用经由连接向客户端设备发送数字和哈希值的部件;用于由第二应用从客户端设备接收拒绝消息的部件。

在示例41中,示例29至40中任一项或多项的主题可选地包括:用于由第一应用生成第一应用会话密钥的部件。

以上的详细描述包括对形成该详细描述的一部分的附图的引用。附图通过说明的方式示出了可以实施的具体示例。这些示例在本文中也被称为“示例”。这些示例可以包括示出或描述的元件以外的元件。但是还可以预见到包括示出或描述的元件的示例。另外,还可以预见到使用参考本文示出或描述的特定示例(或其一个或多个方面)或其他示例(或其一个或多个方面)示出或描述的这些元件(或其一个或多个方面)的任意组合或排列的示例。

在本文档中,如专利文档中通常使用的术语“一个”或“一”包括一个或者一个以上,独立于“至少一个”或“一个或多个”的任何其他实例或用例。在本文档中,使用术语“或”来指代非排他性的含义,以使得“a或b”包括“a而不是b”、“b而不是a”、以及“a和b”,除非有相反的指示。在所附权利要求中,使用术语“包括”和“其中”作为响应术语“包含”和“其中”的普通英语等同。另外,在所附权利要求中,术语“包括”和“包含”是开放性的,即,权利要求中包括这样的术语后面列出的元件以外的元件的系统、设备、物品、或过程仍然被认为落入该权利要求的范围。另外,在所附权利要求中,术语“第一”、“第二”、以及“第三”等仅被用作标记,而不用于暗示这些对象的数字顺序。

以上描述用于说明性而非限制性。例如,上述示例(或其一个或多个方面)可以接合其他示例使用。本领域普通技术人员在阅读上述描述后可以使用其他示例。摘要使得阅读者能够快速理解技术公开的本质。应该理解,其不用于解释或者限制权利要求的范围或含义。另外,在以上具体实施方式中,各种特征可以被组合在一起以简化本公开。但是,权利要求可以不给出本文中公开的每个特征,因为示例可以以所述特征的子集为特征。另外,示例可以包括比在特定示例中公开的特征更少的特征。因此,所附权利要求被合并到具体实施方式中,权利要求本身作为单独示例。参考附图和这些权利要求覆盖的全部等同范围来确定这里公开的示例的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1