首页 / 专利库 / 电脑编程 / 临时别名 / 用于控制器与附件之间的通信的中继服务

用于控制器与附件之间的通信的中继服务

阅读:261发布:2020-05-14

专利汇可以提供用于控制器与附件之间的通信的中继服务专利检索,专利查询,专利分析的服务。并且中继服务(220)可在 控制器 (202)和可被 定位 成远离控制器的 电子 可控附件设备(204)之间中继消息。由中继服务来中继消息可与附件的功能或消息的内容的知识无关。可使用仅对中继服务和端点设备(控制器和附件)有意义的“中继 别名 ”来管理设备识别和对消息的中继。该端点设备可实现由中继服务传输的消息的端到端安全性。控制器和附件设备 配对 并且 访问 令牌经由中继服务建立。该访问令牌用于控制器和附件设备之间的消息的后续认证。,下面是用于控制器与附件之间的通信的中继服务专利的具体信息内容。

1.一种用于经由中继服务在第一控制器和附件之间进行通信的方法,所述方法包括:
由所述中继服务为所述第一控制器分配第一操作者中继别名,所述第一操作者中继别名能够由所述中继服务用于将消息发送至所述第一控制器;
由所述中继服务为所述附件分配附件中继别名,其中所述附件中继别名与任何其他附件识别信息不相关;
由所述中继服务接收用于建立所述第一操作者中继别名和所述附件中继别名之间的中继配对请求
响应于用于建立中继配对的所述请求,由所述中继服务生成并存储与所述第一操作者中继别名和所述附件中继别名相关联的第一有效访问令牌;
在所述中继服务处,在套接字上建立持久附件连接,所述持久附件连接利用所述附件中继别名和所述访问令牌而被识别;
由所述中继服务从所述第一控制器接收用于将消息中继到所述附件的中继请求,所述中继请求包括所述第一操作者中继别名、所述附件中继别名、访问令牌和消息内容;以及响应于确定与来自所述控制器的所述中继请求一起被接收的所述访问令牌对应于所述第一有效访问令牌,经由所述套接字来将所述消息内容发送至所述附件。
2.根据权利要求1所述的方法,其中使用所述中继服务不知道的密钥来对所述消息内容的至少一部分进行加密。
3.根据权利要求1所述的方法,还包括在分配所述附件中继别名之前:
在所述中继服务的证书服务器处代表所述附件接收来自所述第一控制器的激活请求;
由所述证书服务器代表所述附件执行对所述第一控制器的认证操作,其中所述认证操作使用由所述附件的制造商提供给所述附件的数字安全证书;
在所述认证操作成功的情况下,由所述证书服务器生成用于所述附件的PKI证书和设备身份令牌,其中所述设备身份令牌与所述PKI证书无关;以及
由所述证书服务器将所述PKI证书和所述设备身份令牌提供至所述第一控制器以用于递送到所述附件。
4.根据权利要求3所述的方法,其中为所述附件分配所述附件中继别名包括:
在所述中继服务的附件信使服务器处接收来自所述附件的对附件中继别名的请求;以及
由所述附件信使服务执行对所述附件的认证操作,其中所述认证操作使用由所述证书服务器生成的所述PKI证书和所述设备身份令牌,
其中在对所述附件的认证操作成功的情况下,分配所述附件中继别名。
5.根据权利要求1所述的方法,还包括:
由所述中继服务经由所述套接字接收来自所述附件的将消息中继到所述第一控制器的中继请求,所述中继请求包括所述附件中继别名、所述第一操作者中继别名、访问令牌和消息内容;以及
响应于确定与来自所述附件的所述中继请求一起被接收的所述访问令牌对应于所述第一有效访问令牌,基于所述第一操作者中继别名来将所述消息内容发送至所述第一控制器。
6.根据权利要求1所述的方法,还包括:
由所述中继服务接收来自第二控制器的对许可令牌的请求,所述请求包括由所述中继服务为所述第二控制器分配的第二操作者中继别名,对许可令牌的所述请求包括所述附件中继别名;
响应于所述请求来生成许可令牌;
将所述许可令牌发送至所述第二控制器;之后
从所述第一控制器接收用于添加与所述第二控制器的中继配对的请求,所述请求包括所述许可令牌和所述附件中继别名;
由所述中继服务生成并存储与所述附件中继别名和所述第二控制器的所述操作者中继别名相关联的第二有效访问令牌;以及
将所述第二有效访问令牌提供至所述第一控制器,其中所述第一控制器将所述第二有效访问令牌传送至所述附件和所述第二控制器。
7.根据权利要求1所述的方法,其中建立所述持久附件连接包括:
在所述中继服务的通行证服务器处接收来自所述附件的对通行证的请求,其中对通行证的所述请求包括所述附件的附件识别信息,但不包括所述附件中继别名;
由所述通行证服务器基于所述附件识别信息来确定是否应当生成通行证;
响应于确定应当生成通行证,由所述通行证服务器生成用于所述附件的通行证,其中所述通行证不包括任何附件识别信息或任何特定于事务的信息;以及
由所述通行证服务器将所述通行证提供至所述附件;之后
在所述中继服务的附件信使服务器处接收来自所述附件的连接请求,所述连接请求包括所述通行证和所述附件中继别名;以及
响应于确定所述通行证有效而由所述附件信使服务器建立所述持久附件连接。
8.一种服务器系统,包括:
网络接口,所述网络接口用于经由网络与包括控制器和附件的电子设备进行通信;
处理子系统,所述处理子系统耦接至所述网络接口;和
存储子系统,所述存储子系统耦接至所述处理子系统,所述存储子系统存储程序代码指令,所述程序代码指令当由所述处理子系统执行时使得所述处理子系统执行根据权利要求1至7中任一项所述的方法。
9.一种在其上存储有程序代码指令的计算机可读存储介质,所述程序代码指令当由服务器系统的处理子系统执行时使得所述处理子系统执行根据权利要求1至7中任一项所述的方法。
10.一种方法,包括:
由控制器经由本地信道来与附件建立通信;
由所述控制器经由所述本地信道来将用于所述控制器的操作者中继别名发送至所述附件,所述操作者中继别名由中继服务分配至所述控制器;
由所述控制器经由所述本地信道从所述附件接收由所述中继服务分配至所述附件的附件中继别名;
由所述控制器经由所述本地信道从所述附件接收由所述附件从所述中继服务获取的临时配对令牌;
由所述控制器将对访问令牌的请求发送至所述中继服务,所述请求包括所述临时配对令牌、所述附件中继别名、以及所述控制器的操作者中继别名;
由所述控制器从所述中继服务接收由所述中继服务生成的访问令牌;
由所述控制器存储与所述附件中继别名相关联的所述访问令牌;
由所述控制器经由所述本地信道来将所述访问令牌发送至所述附件;以及由所述控制器使用所述访问令牌、所述操作者中继别名、以及所述附件中继别名经由所述中继服务器来与所述附件进行通信。
11.根据权利要求10所述的方法,其中使用所述访问令牌、所述操作者中继别名、以及所述附件中继别名经由所述中继服务来与所述附件进行通信包括:
由所述控制器生成用于所述附件的请求消息;以及
由所述控制器将用于将所述请求消息中继到所述附件的中继请求发送至所述中继服务的控制器信使服务器,所述中继请求消息包括所述访问令牌、所述操作者中继别名、以及所述附件中继别名。
12.根据权利要求11所述的方法,其中经由所述本地信道来与附件建立通信包括与所述附件建立本地配对,并且其中所述请求消息包括用于建立配对验证会话的请求,所述配对验证会话实现随后经由所述中继服务发送的消息的端到端消息安全性。
13.根据权利要求10所述的方法,其中所述控制器在所述控制器不具有经由所述本地信道对所述附件的访问权限的时间期间经由所述中继服务来与所述附件进行通信。
14.根据权利要求10所述的方法,还包括在接收到所述附件中继别名之前:
由所述控制器代表所述附件来将激活请求发送至所述中继服务的证书服务器;
由所述控制器从所述证书服务器接收用于所述附件的PKI证书和设备身份令牌,其中所述设备身份令牌与所述PKI证书无关;以及
由所述控制器经由所述本地信道将所述PKI证书和所述设备身份令牌发送至所述附件,其中所述附件使用所述PKI证书和所述设备身份令牌从所述中继服务获取所述附件中继别名。
15.一种控制器设备,包括:
用户界面
网络接口,所述网络接口用于经由本地信道进行通信并且用于与网络上的中继服务进行通信;
处理子系统,所述处理子系统耦接至所述用户界面和所述网络接口;和
存储设备,所述存储设备耦接至所述处理子系统,所述存储设备存储程序代码指令,所述程序代码指令当由所述处理子系统执行时使得所述处理子系统执行根据权利要求10至
14中任一项所述的方法。
16.一种在其上存储有程序代码指令的计算机可读存储介质,所述程序代码指令当由控制器设备的处理子系统执行时使得所述控制器设备执行根据权利要求10至14中任一项所述的方法。
17.一种方法,包括:
由附件经由本地信道与控制器建立通信;
由所述附件经由所述本地信道从所述控制器接收用于所述控制器的操作者中继地址,所述操作者中继别名由中继服务分配至所述控制器;
由所述附件经由所述本地信道来将由所述中继服务分配至所述附件的附件中继别名发送至所述控制器;
由所述附件将对临时配对令牌的请求发送至所述中继服务,所述请求包括所述附件中继别名、以及所述控制器的所述操作者中继别名;
由所述附件从所述中继服务接收由所述中继服务生成的临时配对令牌;
由所述附件经由所述本地信道来将所述临时配对令牌发送至所述控制器;
由所述附件从所述控制器接收由所述控制器从所述中继服务获取的访问令牌;
由所述附件存储与所述操作者中继别名相关联的所述访问令牌;
由所述附件使用所述访问令牌、所述操作者中继别名、以及所述附件中继别名经由所述中继服务器来与所述控制器进行通信。
18.根据权利要求17所述的方法,其中使用所述访问令牌、所述操作者中继别名、以及所述附件中继别名经由所述中继服务器来与所述控制器进行通信包括:
由所述附件将用于建立套接字的请求发送至所述中继服务的附件信使服务器,用于建立套接字的所述请求包括所述访问令牌、所述操作者中继别名、以及所述附件中继别名;以及
由所述附件经由所述套接字接收来自所述控制器的请求消息。
19.根据权利要求18所述的方法,还包括在由所述附件将用于建立所述套接字的请求发送至所述中继服务的附件信使服务器之前:
由所述附件将通行证请求发送至所述中继服务的通行证服务器,其中所述通行证请求包括用于所述附件的附件识别信息,但不包括所述附件中继别名;
由所述附件从所述通行证服务器接收用于所述附件的通行证,其中所述通行证不包括任何附件识别信息或任何特定于事务的信息;以及
由所述附件将所述通行证包括在用于建立套接字的所述请求中。
20.根据权利要求18所述的方法,还包括:
由所述附件来处理所述请求消息以生成响应消息;以及
由所述附件将用于将所述响应消息中继到所述控制器的中继请求发送至所述附件信使服务器,所述中继请求包括所述响应消息、所述访问令牌、所述操作者中继别名、以及所述附件中继别名。
21.根据权利要求18所述的方法,其中经由所述本地信道与控制器建立通信包括与所述控制器建立本地配对,并且其中所述请求消息包括用于建立配对验证会话的请求,所述配对验证会话实现随后经由所述中继服务发送的消息的端到端消息安全性。
22.根据权利要求17所述的方法,其中使用所述访问令牌、所述操作者中继别名、以及所述附件中继别名经由所述中继服务器来与所述控制器进行通信包括:
由所述附件来检测状态变化;
由所述附件来确定应当通知所述控制器;
生成用于所述控制器的通知消息,所述通知消息指示状态改变已发生;以及由所述附件将用于将所述通知消息中继到所述控制器的中继请求发送至所述附件信使服务器,所述中继请求包括所述通知消息、所述访问令牌、所述操作者中继别名、以及所述附件中继别名。
23.根据权利要求22所述的方法,其中所述通知消息仅指示状态改变已发生。
24.根据权利要求22所述的方法,其中所述附件在所述附件不具有经由所述本地信道对所述控制器的访问权限的时间期间发送用于中继所述通知消息的所述中继请求。
25.一种附件设备,包括:
通信接口,所述通信接口用于经由本地信道进行通信并且用于与网络上的中继服务进行通信;
处理子系统,所述处理子系统耦接至所述通信接口;和
存储设备,所述存储设备耦接至所述处理子系统,所述存储设备存储程序代码指令,所述程序代码指令当由所述处理子系统执行时使得所述处理子系统执行根据权利要求17至
24中任一项所述的方法。
26.一种在其上存储有程序代码指令的计算机可读存储介质,所述程序代码指令当由附件设备的处理子系统执行时使得所述附件设备执行根据权利要求17至24中任一项所述的方法。

说明书全文

用于控制器与附件之间的通信的中继服务

[0001] 相关专利申请的交叉引用
[0002] 本专利申请要求于2015年6月5日提交的美国临时专利申请62/171,995和于2016年3月8日提交的美国专利申请15/064,406的优先权,上述专利申请据此全文以引用方式并入本文。
[0003] 本专利申请与以下美国专利申请相关:于2015年2月5日提交的美国专利申请14/614,914(作为美国专利申请公布2015/0222517 A1而公布);于2015年5月29日提交的美国专利申请14/725,891(作为美国专利申请公布2015/0351145 A1而公布);以及于2015年5月
29日提交的美国专利申请14/725,912(作为美国专利申请公布2015/0350031 A1而公布)。
这些专利申请的公开内容全文以引用方式并入本文。

背景技术

[0004] 本公开整体涉及对附件设备的远程控制,并且具体地涉及经由公共网络在控制器设备和附件之间提供安全通信的中继服务。
[0005] 电子设备在多种应用中变得越来越普及。移动电话平板电脑、家庭娱乐系统等仅为用户经常与其进行交互的电子设备中的一些电子设备。
[0006] 正变得越来越流行的另一类电子设备包括各种电子可控“附件”设备,诸如恒温器、照明设备、家用电器等。
[0007] 许多用户希望能够与可控设备进行远程交互。例如,一些人向往不用回家检查就能验证烤箱关闭或前上。为了满足这种需求,一些制造商已开始提供具有连接到用户的无线局域网(例如,Wi-Fi网络)的能并且因此变成可经由互联网访问的“具有互联网功能”的电器。然而,这种便利性并不是没有问题。例如,有报道说,具有互联网功能的婴儿监视器被喜欢打扰睡眠中的婴儿的爱开玩笑的人入侵。这些事情可能使用户不愿意将具有互联网功能的电器引入其家中。发明内容
[0008] 本发明的某些实施方案涉及可为用户提供对电子可控设备(例如,室内设备,诸如恒温器、照明系统、家庭安全系统等)的远程访问的中继服务。该中继服务可用于在“控制器设备”和各种其他电子可控设备(在本文中被称为“附件设备”或被简称为“附件”)之间交换消息。该控制器可通过提供具有适当的可执行程序代码的通用计算设备诸如台式计算机、膝上型计算机、平板电脑、智能电话、其他移动电话、其他手持设备或可穿戴式计算设备而在这些通用计算设备上实现;另选地,控制器可为专用计算设备。附件可包括可由控制器控制的任何设备。附件的示例包括灯具、恒温器、门锁、自动开门器(例如,车库开门器)、静物相机或摄像机、厨房电器等。该中继服务可使用公共的不安全的通信介质(例如,互联网)来从控制器设备接收消息并将其转发到附件,并且反之亦然。
[0009] 在各种实施方案中,该中继服务可实现可有助于保护用户隐私的特征。例如,对控制器和附件之间的消息的中继可与附件的功能或消息的内容的任何知识无关。此外,可使用仅对中继服务和端点设备(控制器和附件)有意义的“中继别名”来管理对设备的识别。在一些实施方案中,该中继服务可在保持不知道任何附件的身份(例如,制造商、型号等)、功能或当前状态时操作。因此,即使该中继服务与端点之间(或甚至在中继服务内)的通信被拦截,也可能无法提取关于任何附件的性质或状态的信息,或者可能无法确定如何与任何附件进行通信。
[0010] 此外,在一些实施方案中,该中继服务可被控制器和附件用作传输机,以传输根据提供端到端通信安全性的协议(例如,如下所述的统一附件协议)格式化的消息。在一些情况下,该统一附件协议可首先需要在附件和控制器彼此进行“本地通信”(即,不借助于中继服务进行通信,例如不经由无线局域网或个人区域网)时执行“本地”设置过程,并且该中继服务只有在执行该本地设置之后才可用于与特定附件进行通信。在为用户提供从世界上的任何地方访问其附件设备(例如,家里的设备)的便利性时,此类措施可进一步增强中继服务的安全性。
[0011] 在一些实施方案中,该中继服务可包括能够匿名收集与由该中继服务检测到的异常附件消息收发行为有关的数据的报告设备。这可允许识别和修复某些类型的附件失灵或故障(例如,有缺陷固件),而无需记录将指示哪些用户拥有或使用什么附件的数据。在某些情况下,补救措施可包括暂时(或永久性地)阻止某些附件连接到该中继服务。
[0012] 以下具体实施方式连同附图将提供对本发明的实质和优点的更好的理解。

附图说明

[0013] 图1示出了根据本发明的实施方案的家庭环境。
[0014] 图2示出了根据本发明的实施方案的网络配置。
[0015] 图3示出了根据本发明的实施方案的中继服务的简化框图
[0016] 图4示出了根据本发明的实施方案的附件激活过程的简化流程图
[0017] 图5示出了根据本发明的实施方案的控制器可用于获取操作者中继别名的过程的简化流程图。
[0018] 图6示出了根据本发明的实施方案的用于交换操作者中继别名和附件中继别名的过程的简化流程图。
[0019] 图7示出了根据本发明的实施方案的用于中继配对的过程的简化流程图。
[0020] 图8A和图8B示出了根据本发明的实施方案的过程的简化流程图,该过程用于经由中继服务在控制器与附件之间传送请求消息和响应消息。
[0021] 图9示出了根据本发明的实施方案的用于将通知经由中继服务从附件中继到控制器的过程的简化流程图。
[0022] 图10A和图10B示出了根据本发明的实施方案的用于为另一个用户添加中继配对的过程的简化流程图。
[0023] 图11示出了根据本发明的实施方案的用于移除中继配对的过程的简化流程图。
[0024] 图12示出了根据本发明的实施方案的用于在附件与附件信使服务器之间建立连接的过程的简化流程图。
[0025] 图13示出了根据本发明的实施方案的诊断过程的简化流程图。
[0026] 图14示出了根据本发明的实施方案的调查过程的简化流程图。
[0027] 图15示出了根据本发明的实施方案的计算机系统的简化框图。
[0028] 图16示出了根据本发明的实施方案的控制器的简化框图。
[0029] 图17示出了根据本发明的实施方案的附件的简化框图。

具体实施方式

[0030] 示例性环境
[0031] 图1示出了根据本发明的实施方案的家庭环境100。家庭环境100包括可与位于该环境中的各种附件设备(也被称为附件)进行通信的控制器102。该控制器102可包括例如台式计算机、膝上型计算机、平板电脑、智能电话、可穿戴计算设备、个人数字助理、或能够向附件传送命令控制消息(例如,如上文提及的美国申请14/614,914中所述的)并且呈现用户界面以允许用户指示对附件的期望操作的任何其他计算设备或设备组。在一些实施方案中,控制器102可使用多个分立的设备来实现。例如,可存在一个基站以及一个或多个移动遥控站(例如,手持式或可穿戴设备诸如移动电话、平板电脑、智能手表、眼镜等),该基站与附件进行通信并且可被安装在环境100中的固定位置中,该移动遥控站提供用户界面并且与基站进行通信以实现对附件的控制。在一些实施方案中,该基站可如上文引用的美国专利申请14/725,891中所述那样充当协调器或代理。
[0032] 可对任何类型的附件设备进行控制。附件设备的示例包括门锁104、车库门系统106、灯具108、安保相机110、和恒温器112。在某些情况下,控制器102可直接与附件进行通信;例如,控制器102被示出为直接与门锁104和车库门系统106进行通信。在其他情况下,控制器102可经由中间体来进行通信。例如,控制器102被示出为经由无线网络接入点114与位于由接入点114提供的无线网络上的附件108,110,112进行通信。如上所述,在一些实施方案中,控制器102可包括基站,并且基站功能可集成到接入点114中或集成到待被控制的附件中的一个附件(例如,恒温器112)中。在一些实施方案中,中间体可如上文引用的美国专利申请14/725,891中所述那样充当代理或协调器。
[0033] 可使用各种通信传输手段以及传输手段的组合,并且不同的传输手段可用于不同的设备。例如,一些无线传输手段诸如由Bluetooth SIG发布的 经典或智能通信协议和标准(在本文中被称为“蓝牙”和“蓝牙LE”)可支持设备之间的在有限范围内的直接点对点通信。由Wi-Fi联盟发布的遵从 网络标准和协议的其他无线传输手段诸如无线网络(在本文中被称为“Wi-Fi网络”)可限定具有促进在网络上的不同设备之间进行通信的中央接入点的无线网络。另外,虽然示出了无线通信传输手段,但也可为一些或所有附件提供有线传输手段。例如,灯泡108可通过有线连接而被连接到接入点
114,并且控制器102可通过将消息无线地发送至接入点114而与灯泡108进行通信,该接入点可经由有线连接而将消息递送到灯泡108。有线通信和无线通信的其他组合也为可能的。
[0034] 另外,虽然示出了一个控制器102,但家庭(或其他)环境中可存在多个相关联的控制器设备。例如,该家庭中所居住的每个人可拥有其自身的可充当附件104-112中的一些或全部附件的控制器的一个或多个便携式设备。不同的控制器设备可被配置为与附件的不同子集进行通信;例如,可阻止子女的控制器修改恒温器112上的设置,而允许父母的控制器设备修改该设置。此类许可或特权可使用例如上文引用的美国专利申请14/725,891和美国专利申请14/725,912中所述的技术来配置和控制。
[0035] 在一些实施方案中,统一附件协议可有助于控制器102与一个或多个附件104-112的通信。该统一附件协议可提供一种可将附件作为服务的集合来建模的简单并且可扩展的框架,其中每个服务被定义为一组特征,每个特征在任何给定时间具有定义值。各种特征可表示附件状态的各个方面。例如,就恒温器112而言,特征可包括电力(接通或断开)、当前温度、和目标温度。在一些实施方案中,在符合相同的附件模型时,消息格式可依赖于传输。附件可提供一个“属性数据库”识别将附件暴露至控制器的服务和特征。控制器可从附件读取属性数据库(或其一部分),并使用该属性数据库来确定如何与附件进行交互。基于服务和特征的附件模型的示例在上文引用的美国专利申请14/614,914中有所描述。
[0036] 该统一附件协议还限定控制器102的消息格式,以将命令控制消息(请求)发送至附件112(或其他附件),并且可限定附件112的消息格式,以将响应消息发送至控制器102。该命令控制消息可允许控制器102询问附件特征的当前状态(例如,通过发送读取请求),并且在某些情况下修改特征(例如,发送用于写入电力特征的请求可导致将附件断开或接通)。因此,不管附件的功能或制造商如何,均可通过发送适当的消息来控制任何类型的附件。该消息格式在不同类型的附件中可相同。该消息格式的示例在上文引用的美国申请14/
614,914中有所描述。
[0037] 该统一附件协议还可提供用于允许附件112(或其他附件)在发生状态变化的情况下选择性地通知控制器102的通知机制。可实现多个机制,并且控制器102可针对给定目的对最适当的通知机制进行注册或订阅。通知机制的示例在上文引用的美国申请14/614,914中有所描述。
[0038] 在一些实施方案中,与给定附件的通信可限于已接收授权的控制器。例如,在用户希望控制器102能够控制附件104这一事件具有较高置信度的情况下,该统一附件协议可指定用于在控制器102与给定附件(例如,门锁附件104)之间建立“配对”(在本文中也被称为“本地配对”)的一个或多个机制(包括在本文中被称为“配对设置”和“配对添加”的机制)。配对设置可包括带外信息交换(例如,用户可将由附件104提供的数字或字母数字PIN或密码输入到由控制器102提供的界面中),以建立共享秘密。该共享秘密可用于支持控制器102和附件104之间的“长期”公共密钥的安全交换,并且每个设备可存储从另一个设备接收的长期公共密钥,使得所建立的配对可为持久性的。在建立本地配对之后,则认为控制器102已被授权,并且随后控制器102和附件104可根据需要进入和退出通信,而不会失去所建立的配对。当控制器102尝试与附件104进行通信或控制该附件时,可首先执行由统一附件协议指定的“配对验证”过程,以验证存在所建立的本地配对(例如,其中控制器102先前已完成与附件104的配对设置的情况也是如此)。该配对验证过程可包括每个设备展示其拥有与在配对设置期间交换的长期公钥对应的长期私钥,并且还可包括建立新的共享秘密或会话密钥来对“配对验证”会话(在本文中也被称为验证会话)期间的所有通信进行加密。在配对验证会话期间,具有适当特权的控制器可执行“配对添加”过程,以代表另一个控制器与附件建立另一个配对。任一设备均可仅通过使会话密钥的副本破坏或无效而在任何时间结束配对验证会话。
[0039] 在一些实施方案中,多个控制器可与相同附件建立本地配对(例如,通过执行对设置,或通过具有由先前已执行配对设置的控制器添加的配对),并且在拒绝或忽略来自未配对控制器的通信时,附件可接受来自其配对控制器中的任一配对控制器的通信并对其响应。配对设置、配对添加和对验证过程的示例以及安全相关操作的其他示例在上文引用的美国申请14/614,914中有所描述。在本发明的一些实施方案中,可限定并使用附加“中继配对”过程,以允许控制器经由本地环境外部的中继服务来与附件进行通信。示例在下文进行了描述。
[0040] 在一些实施方案中,控制器可与多个附件建立配对并且可限定用于表示附件的相互关系的“环境模型”。该模型可像环境中的附件(例如,用户家中存在的所有附件)的列表那样简单。其他具体实施可允许用户基于位置(例如,家中的特定房间中的附件,或某个“区域”中的附件,其可被定义为房间分组,诸如所有卧室或楼上的所有房间)、根据用途(例如,用户想要一起使用的附件的“服务组”或者可响应于所检测到的事件或条件而自动触发某些附件操作的“动作集”)等来限定对附件的分组。该环境模型还可表示被授权(或具有“许可”)访问各种附件的各种控制器和/或用户。在多个控制器共享对相同环境的访问权限的情况下,可使用同步操作在控制器间共享环境模型。该环境模型和同步操作的示例在上文引用的美国专利申请14/725,912中有所描述。
[0041] 应当理解,家庭环境100为示例性的,并且变型形式和修改形式为可能的。本发明的实施方案可在用户希望使用控制器设备来控制一个或多个附件设备的任何环境中实现,包括但不限于住房、汽车或其他车辆、办公大楼、具有多栋建筑的校园(例如,大学校园或企业)等。单个控制器可与任何数量的附件建立配对并且可在不同的时间选择性地与不同的附件进行通信。类似地,单个附件可由已与其建立配对的多个控制器来控制。可通过将功能建模为具有一个或多个特征的服务并且允许控制器与该服务和/或其特征进行交互(例如,读取、修改、接收更新)来控制附件的任何功能。因此,不管附件功能或控制器形状因数或具体界面如何,本发明的实施方案中所使用的协议和通信均可在任何情况下统一地用于一个或多个控制器和一个或多个附件。
[0042] 在一些实施方案中,一个或多个控制器可建立对附件的特权的级别(在本文中被称为“管理员”(“administrator”或“admin”)特权),该附件允许具有管理员特权的控制器来确定是否应授予其他控制器许可来将命令控制消息传送至该附件。例如,附件可将上述配对设置操作限制在其与任何控制器都没有建立配对的情况下;执行(本地)配对设置的第一控制器将被自动授予管理员特权。此后,除了具有管理员特权的控制器(此类控制器也具有已建立的配对)之外,附件可拒绝允许将建立附加配对。管理员控制器可以例如使用配对添加过程将其他控制器添加为被授权使用附件。例如,独立于与附件的任何通信,管理员控制器可以获取用于第二控制器的长期公钥。管理员控制器可使用在配对设置期间交换的长期公钥来建立与附件的验证会话(也被称为“配对验证会话”)。该验证会话可具有会话密钥并且可使用该会话密钥来对验证会话内的所有通信进行加密。在验证会话内,该管理员控制器可执行与附件的配对添加操作,以在附件和第二控制器之间建立配对。该配对添加操作可包括向附件提供用于第二控制器的长期公钥,并且作为交换,接收用于附件的第二长期公钥(其可能是或可能不是在第一控制器建立其配对时接收的相同密钥)。该管理员控制器可将用于附件的第二长期公钥传送至第二控制器。该过程可在第二控制器和附件之间建立本地配对;此后,该第二控制器可建立其自身的验证会话,以将命令控制消息发送至附件。该第一控制器可重复配对添加过程,以在附件和任意数量的控制器之间建立本地配对。如下所述,该管理员控制器可使用单独的处理器代表另一控制器来建立中继配对。
[0043] 在一些情况下,例如在配对添加过程期间,要配对的第一控制器可指示附件向第二控制器授予管理员(“administrator”或“admin”)特权。授予管理员特权可允许第二控制器执行配对添加操作,以在需要时添加附加控制器,并且根据具体实施,该第二控制器可能或可能无法向该附加控制器授予管理员特权。该管理员特权可被自动分配至与全新附件(或与未建立配对的附件)建立配对的第一控制器。使用管理员特权可帮助设备所有者管控哪些控制器可获取对特定附件的访问权限。
[0044] 图2示出了根据本发明的实施方案的网络配置200。配置200允许控制器202与位于本地环境206(例如,家庭环境,诸如上述环境100)中的附件204进行通信。各个控制器202可为经常出入于环境206的由用户(例如,家庭住户或家庭固定访问者)所拥有和/或操作的电子设备。控制器202可各自类似于图1所示控制器102,并且附件204可类似于图1所示的各种附件。
[0045] 附件204可各自与可位于本地环境206中的接入点210进行通信。接入点210可提供附件204和控制器202(当存在于本地环境206中时)可连接到的局域网(LAN)。可使用任何类型的LAN技术,包括Wi-Fi网络或其他无线LAN技术。因此,接入点210可促进本地环境206内的附件204和控制器202之间的通信。在一些实施方案中,存在于本地环境206中的控制器(例如,控制器202(1))可直接与附件(例如,附件204(1))进行通信。可根据需要使用蓝牙通信、自组织无线联网或其他点对点通信技术。
[0046] 在一些情况下,附件可能不直接与接入点210或与控制器202进行通信。例如,附件204(3)可连接到代理212,并且控制器202和/或接入点210可经由代理212来与附件204(3)进行通信。在各种实施方案中,代理212可提供对往返于附件204(3)的消息的中继。代理212可实现通信安全措施和/或协议转换,并且单个代理212可与一个或多个附件204接口连接。
在一些实施方案中,代理212可为可在多个控制器和/或附件间协调操作并且不限于被动地中继消息的“智能”设备。可被实现为代理212的代理设备(包括不同地被称为桥接器、隧道和协调器的设备)的具体示例在上文引用的美国专利申请14/725,891中有所描述。
[0047] 在一些实施方案中,附件204和存在于本地环境206中的控制器202可使用局域网(LAN)诸如Wi-Fi网络和/或点对点通信介质诸如蓝牙LE来进行通信。应当理解,可使用其他通信传输手段和协议。在一些实施方案中,控制器202和附件204(以及代理212,如果存在)可如上所述支持可使用Wi-Fi和蓝牙LE两者作为传输手段来实现的统一附件协议。
[0048] 在图2的示例中,控制器202(1)当前与附件204和协调器210一起位于本地环境206中。例如,控制器202(1)可与附件204位于相同LAN上。控制器202(2)和202(3)当前位于本地环境206外部,但连接到通信网络208(例如,互联网);这些控制器被认为“远离”附件204。应当理解,控制器202可为有时位于本地环境206内而有时位于本地环境206外的移动设备。附件204无需为移动的并且不需要连接到通信网络208。在一些实施方案中,接入点210可连接到通信网络208(例如,接入点210可被实现为传统Wi-Fi接入点或基站)并且可允许远程控制器202(2)和202(3)远程访问附件204。
[0049] 然而,可能不希望将附件204中的每个附件配置为可被能够连接到通信网络208的任何设备找到并与其进行通信的广域网设备。例如,如果通信网络208为互联网,则包括世界上的任何地方的任何人拥有的设备的大量设备可能够定位附件204并且尝试未被授权的操作。因此,为了更有选择地允许控制器202经由网络208与附件204进行通信,采用中继服务220可能为有用的。
[0050] 根据本发明的各种实施方案,中继服务220可促进经由通信网络208的控制器202(特别是远程控制器202(2),202(3))与附件204之间的通信。例如,中继服务220可建立与附件204(1)的持久连接,其中附件204(1)由持久附件别名(也被称为“附件中继别名”或“附件RA”)识别,该持久附件别名由中继服务220分配并且被控制器202知道(但是其他未被授权访问附件204的设备可能不知道)。控制器202(2)可将用于向附件204(1)递送消息的请求发送至中继服务220;该请求可包括消息内容、由中继服务220分配至附件204(1)的附件别名、以及中继服务220可用于验证控制器202(2)是否被授权与附件204(1)进行通信的附加信息(例如,如下所述的访问令牌)。中继服务220可将该消息递送到附件204(1)。来自附件204(1)的响应消息可以类似的方式使用由中继服务220分配至控制器202(2)并且对于附件204(1)已知但对于未被授权使用中继服务220来与控制器202(2)进行通信的设备并非已知的持久操作者别名(也被称为“操作者中继别名”或“操作者RA”)而被被递送到控制器202(2)。经由中继服务220在控制器202(2)和附件204(1)之间交换的消息内容可符合如上所述的统一附件协议,并且消息内容对于中继服务220可为不透明的。因此,控制器202(2)和附件204(1)可经由中继服务220来进行通信,以建立配对验证会话(如上所述),并且可对消息内容进行加密,使得消息内容不能被中继服务220或消息内容可从中通过的任何其他中间体读取。这样,中继服务220可在控制器202(2)和附件204(1)之间(或任何控制器202和任何附件
204之间)提供安全的端到端通信路径(由虚线222表示)。
[0051] 在一些实施方案中,控制器202可被配置为在可能时无需使用中继服务器220来与附件204进行通信。例如,当控制器202(2)(例如,基于用户输入或如下所述的接收到的通知)确定其应该将消息发送至附件204(1)时,在控制器202(2)中执行的通信守护进程或其他进程可确定对附件204(1)的“本地访问”(或“本地通道”)当前是否可用。例如,控制器202(2)可主动地或被动地扫描本地网络上或点对点通信技术方面的附件204(1)的存在;如果检测到附件204(1),则可进行本地访问。如果未检测到附件204(1),则本地访问不可用,并且控制器202(2)可转而与中继服务220进行通信。关于是使用本地访问还是中继服务220的确定对于用户来说可为透明的,并且可在每次要建立到附件的通信信道时进行。因此,想要使用控制器202(2)与附件204(1)进行交互的用户可简单地这样做,而不用担心是使用本地访问或还是经由中继服务220远程访问。
[0052] 应当理解,网络配置200为示例性的,并且变型形式和修改形式为可能的。可将任何数量的控制器和任何数量的附件包括在网络配置中。在一些实施方案中,该网络配置可包括一个或多个代理(例如,桥接器、隧道、协调器,如上文引用的美国专利申请14/725,912中所述的)。附件204中的一些或全部附件可能仅在本地环境内可访问。另外,如下所述,不同的控制器202相对于访问附件204可具有不同的访问权限;例如,对于某些控制器202来说,经由网络208进行远程访问可得到允许,而对于其他控制器202来说不被允许。
[0053] 示例性中继服务
[0054] 图3示出了根据本发明的实施方案的中继服务300的简化框图。中继服务300可为图2的中继服务220的具体实施并且可在控制器302(例如,图2的控制器202中的任一控制器)和附件304(例如,图2的附件204中的任一附件)之间中继消息。
[0055] 中继服务300可包括证书服务器310、身份服务器320、附件信使服务器330、控制器信使服务器340、消息传送服务器350、通行证服务器360、报告服务器370、和包服务器380。每个服务器可使用传统的服务器硬件(例如,互连的刀片服务器)而被实现为单个服务器或服务器场,并且可使用相同或不同的服务器硬件来实现不同的服务器。
[0056] 证书服务器310可用于为使用中继服务300的端点设备(包括附件304和/或控制器302)生成身份令牌和公钥基础结构(PKI)证书。在操作中,证书服务器310可实现能够根据请求(例如,使用标准证书生成算法)来生成PKI证书并且根据请求来验证PKI证书的证书管理机构。证书服务器310还可以为端点设备生成设备身份令牌并使设备身份令牌与PKI证书相关联。该设备身份令牌可为例如随机生成的通用唯一标识符(UUID)。在一些实施方案中,根据确保设备身份令牌不提供关于该设备身份令牌被分配到的设备的性质、能力和/或物理位置的信息的方案来生成设备身份令牌。一旦将设备身份令牌和PKI证书分配至端点设备,该端点设备便被认为“已激活”。经激活的设备随后可通过呈现其设备身份令牌和PKI证书来将其自身认证到中继服务300。证书服务器310可存储包括有效UUID和相关联的PKI证书的证书储存库312,并且可使用证书储存库312来促进对端点设备的认证。下面描述证书服务器310的操作的示例。
[0057] 身份服务器320可用于生成允许特定控制器与特定附件进行通信的“访问”令牌。如下所述,当控制器(例如,控制器302)和附件(例如,附件304)在中继服务300的上下文中互相请求配对时(被称为建立“中继配对”,其可不同于本地配对),该身份服务器320可生成与控制器302的“操作者中继别名”(也被称为“操作者别名”或“操作者RA”)相关联并且与附件304的“附件中继别名”(也被称为“附件别名”或“附件RA”)相关联的唯一访问令牌。操作者RA和附件RA可为由中继服务300任意分配的别名;示例如下所述。由身份服务器320生成的访问令牌可被安全地递送到请求中继配对的特定附件304和控制器302。此后,当控制器
302将将消息中继到附件304的中继请求发送至中继服务300(或反之亦然)时,控制器302(或附件304)可将对应的访问令牌与消息内容、操作者RA、和附件RA一起提供至中继服务
300。该身份服务器320可维护使附件RA和操作者RA的组合与访问令牌相关联的令牌存储库
322,从而允许身份服务器320验证访问令牌。如果没有提供有效的访问令牌,则中继服务
300可拒绝中继消息。下面描述身份服务器320的操作的示例。
[0058] 附件信使服务器330可维持到(例如,经由如下所述的证书服务器310)已注册到中继服务300的端点附件设备(例如,附件304)的持久连接(例如,套接字)。通过此连接,附件信使服务器330可将由中继服务300从控制器(例如,控制器302)接收的消息递送到附件304,并且可从附件304接收包括要递送到控制器302(或如由附件304指定的另一控制器)的消息的中继请求。例如,附件信使服务330可维护附件RA到活动套接字的映射332,并且可基于与消息一起被包括的附件RA来将消息递送至附件304或传送从附件304接收的消息。下面描述附件信使服务器330的操作的示例。显而易见的是,附件信使服务器330可不知道附件
304正在以什么类型(例如,制造商和/或功能)进行通信、附件304在物理上位于何处、哪个控制器302(或用户)正在与附件304进行通信、或者在附件304和控制器302之间正在传送什么信息。
[0059] 控制器信使服务器340可建立到已注册到中继服务300的端点控制器设备(例如,控制器302)的持久连接。在一些实施方案中,控制器信使服务器340可利用用于在不同用户的移动设备之间传送消息和/或将通知推送到用户的一个或多个移动设备的现有基础结构,诸如支持 服务和/或面向由本专利申请的受让人Apple Inc.提供的移动设备的推送通知服务的基础结构。在一些实施方案中,控制器信使服务器340可维护与特定用户相关联的操作者RA到可与由用户拥有或操作的特定控制器设备相关联的设备ID的映射342。下面描述控制器信使服务器340的操作的示例。显而易见的是,控制器信使服务器340可不知道控制器302正在与其进行通信的附件304的身份或功能,或者在控制器302和附件
304之间正在传送什么信息。
[0060] 消息传送服务器350可使用各种网关等来实现,并且可操作以在附件信使服务器330和控制器信使服务器340之间引导消息。例如,消息传送服务器350可经由控制器信使服务器340来将从控制器302接收到的消息引导到附件信使服务器330,以递送到附件304;也可支持在相反的方向上传送消息。在一些实施方案中,消息传送服务器350还可促进在中继服务300中包括的任何服务器之间(例如,在附件信使服务器330和证书服务器310之间等)传送消息。下面描述消息传送服务器350的操作的示例。
[0061] 通行证服务器360可用于支持允许中继服务300阻止由异常或可疑附件进行的访问的“通行证”服务。例如,为了与附件信使服务器330建立连接,附件304(或任何附件)可被要求呈现从通行证服务器360获取的通行证。在一些实施方案中,附件304可通过向通行证服务器360提供附件识别信息(例如,制造商和型号信息)来请求通行证。通行证服务器360可确定附件识别信息是否被包括在已被临时或永久阻止使用中继服务300的异常附件的当前“黑名单”362中;下面描述创建和更新黑名单362的示例。如果附件304未被包括在黑名单362中,则通行证服务器360可生成用于附件304的通行证。该通行证可包括时间戳(例如,具有五或十分钟的粒度等)以及可由附件信使服务器306用于验证该通行证是由通行证服务器360发布的代码。该通行证不需要包括特定于附件304的任何信息,并且通行证服务器360可响应于来自不同附件的多个请求而生成相同的通行证。该附件可将通行证呈现给附件信使服务器330。在该示例中,通行证服务器360可接收关于附件的识别信息(例如,制造商和型号信息可指示它是什么类型的附件),但不需要保留识别信息或者使其与在中继服务300内的其他地方使用的附件RA相关联,并且由通行证服务器360生成的通行证不需要包含任何附件识别信息。在一些实施方案中,通行证服务器360可与附件信使服务器330进行通信,例如以提供当前有效的时间戳。下面描述通行证服务器360的操作的示例。
[0062] 报告服务器370可管理用于允许对关于可能存在异常行为(例如,在中继服务300上生成过多流量)的附件的信息进行隐私受保护的收集的报告和诊断过程。例如,如下所述,在调查异常活动时,报告服务器370可从控制器设备接收用于提供与由中继服务300的操作者分配的调查标识符(或“调查ID”)相关联的附件识别信息的报告。该报告可为匿名的,因为不提供特定操作者RA和/或附件RA。基于所接收的报告,报告服务器370可识别与异常行为相关的附件类型(例如,由特定制造商制造的车库开门器),并且可启动后续动作,诸如提示制造商该异常行为和/或将该异常附件类型添加到黑名单362,直到可解决基本问题。下面描述报告服务器370的操作的示例。
[0063] 包服务器380可用于为附件304和控制器302提供可用于实现与中继服务300的各种服务器(例如,控制器信使服务器340和/或附件信使服务器330)进行通信的寻址信息。该寻址信息可包括例如统一资源定位符(“URL”)或可用于构建中继服务300的各种服务器的URL的信息。例如,可使用基本主机名和主机实例标识符来构建URL,基本主机名和主机实例标识符中的一者或两者可由包服务器380提供。该寻址信息可由包服务器380响应于例如来自控制器302(其可接收如图3所示的“包-c”)或附件304(其可接收如图3所示的“包-a”)的请求以“包”(例如,包含用于中继服务300的一个或多个服务器的寻址信息的各种字段的数据结构)的形式被提供。在一些实施方案中,控制器302或附件304可对所接收到的包进行高速缓存并且在至服务器的多个连接间继续使用包信息。在一些实施方案中,该包可包括到期信息(例如,生存时间),并且在包到期之后,控制器或附件可从包服务器380检索新的包。新的包可包含相同的信息或不同的信息。虽然不需要包服务器380和使用包来提供寻址信息,但是使用包或类似的机构来为中继服务300的各种服务器提供寻址信息可允许中继服务300的操作者动态地重新分配资源(例如,用于附件信使服务器330或控制器信使服务器
340的多个实例之间的负载平衡和/或出于安全目的)。
[0064] 在操作中,中继服务300的各种服务器可使用用于提供传输层安全性的传输协议彼此进行通信,并且与控制器和附件进行通信。例如,可使用HTTPS/IP(在互联网协议栈上实现的具有安全套接字层(SSL)的超文本传输协议,其为一种熟知的传输协议)或具有传输层安全性(TLS)的HTTP2来实现通信。在中继服务300的服务器之间交换的任何或所有消息可由发送服务器进行数字签名并由接收服务器进行验证。在附件304和控制器302之间经由中继服务300交换的消息可在消息级别处具有附加安全性。例如,如上所述,附件和控制器可使用通过具有相关联的会话密钥的配对验证会话提供安全性的统一附件协议来进行通信。经由中继服务300,控制器302和附件304可根据统一附件协议来建立配对验证会话,从而建立仅控制器302和附件304知道的会话密钥。可利用该会话密钥来对配对验证会话内的消息内容进行加密,从而使消息内容对于中继服务300(以及消息内容可通过的任何其他中间体,诸如各种互联网网关、路由器等)不透明。这可为用户提供可靠平的隐私保护。
[0065] 附件304和附件信使服务器330之间的通信可使用与控制器302和控制器信使服务器340之间的通信的不同的协议。例如,附件304可将通信作为HTTP请求(例如,对在附件信使服务器340处定义的适当URL的POST或GET请求)发送至附件信使服务器330,并且可接收作为HTTP响应的通信。同时,控制器信使服务器340可使用消息收发协议(例如,类似于SMTP或其他电子邮件协议),该消息收发协议具有识别消息发送者和预期接收者的标头字段、以及包含要递送到预期接收者的内容的消息正文。在一些实施方案中,消息传送服务器350可将附件信使服务器330和控制器信使服务器340之间的通信转换为适当的格式。
[0066] 还应当注意,可实现中继服务300,以限制设备识别信息的分发或可访问性。例如,如下所述,中继服务300不需要保留用于识别附件304的附件类型或能力的任何信息;相反,中继服务300可简单地保留足够的信息来验证附件304为经授权的端点设备。可在附件304上放置负担以保持与中继服务300的连接,并且除特定连接之外,中继服务300不需要知道如何向附件304递送通信。可使用随机过程或其他过程来分配由中继服务300所使用的操作者中继别名和附件中继别名,使得这些别名不能被第三方用于使通过中继服务300交换的消息与特定的真实世界控制器或附件相关联。即使在中继服务300内,也可能不可靠地进行此类关联。因此,可在仍然提供能够与世界上的任何地方的附件进行通信的便利性的同时尊重用户隐私。
[0067] 应当理解,中继服务300为示例性的,并且变型形式和修改形式为可能的。可使用任何数量和组合的服务器来实现本文描述为由中继服务300或其部件执行的各种操作。在一些实施方案中,被描述为由不同服务器执行的操作可使用在相同服务器硬件上执行的不同软件来实现。此外,本文描述的服务器和操作并不是全部都需要;例如,可省略通行证服务器360、报告服务器370、和/或包服务器380。可通过在仍然保留服务器在授权设备之间递送通信以及识别并阻止未经授权的通信的能力的同时限制可提供至各种服务器的信息来保护用户隐私。
[0068] 中继设置示例
[0069] 在一些实施方案中,仅在控制器302和附件304被建立作为被授权彼此进行通信的端点设备之后中继服务300才能用于在控制器302和附件304之间中继消息。该过程可被称为设置中继配对并且可包括多个阶段。在第一阶段中,附件304可被“激活”(例如,获取将允许附件304访问中继服务300的授权凭据)。在第二阶段中,附件304和控制器302可获取并交换由中继服务300分配的别名(也被称为“中继别名”),以用于在它们之间中继消息。在第三阶段中,附件304和控制器302可建立“中继配对”。这可不同于根据统一附件协议来建立本地配对(例如,使用上述本地配对设置和配对添加过程)。现在将描述中继设置过程的示例。
[0070] 图4示出了根据本发明的实施方案的附件激活过程400的简化流程图。可例如使用图3的中继服务300来执行过程400。在该示例中,假设过程400是在控制器302具有对附件304的本地访问权限(例如,如上文参考图2所述的)时执行的。还假设控制器302已根据如上所述的统一附件协议建立了关于附件304的本地配对。(在一些实施方案中,不需要本地配对,但需要本地配对作为附件激活的前提条件为附件提供有用的安全特性。)[0071] 在框402和404处,附件304和控制器302可经由本地信道来建立通信。可根据如上所述的统一附件协议来建立通信。例如,在框402和404处建立通信可包括在附件304和控制器302之间建立配对验证会话。
[0072] 在框406处,控制器302可确定附件304应在中继服务上被激活。例如,如上所述,附件304可向控制器302呈现包括服务的集合的附件模型。在一些实施方案中,这些服务中的一种服务可为“远程中继访问”服务。该远程中继访问服务在附件模型中的存在可向控制器302指示该附件支持经由中继服务300的远程访问。(不需要给定环境中的所有附件均支持经由中继服务300进行远程访问或任何其他形式的远程访问。)该远程中继访问服务可包括各种特征,这些服务中的一种服务可具有指示附件是否已被激活的布尔值,并且框406可包括读取该特征。在一些实施方案中,框406处的确定还可基于用户输入。例如,在与附件304建立配对之后,控制器302可向用户呈现提示,以指示附件304是否应被配置用于经由中继服务300的远程访问;根据用户的响应,控制器302可继续或终止过程400。也可使用其他决定标准;
[0073] 在框407处,控制器302可从包服务器380获取控制器包。在一些实施方案中,该控制器包可包括用于中继服务300的一些或全部服务器的寻址信息。例如,该控制器包可包括用于证书服务器310、身份服务器320、控制器信使服务器340和报告服务器370中的任一者或全部的寻址信息。在一些实施方案中,该控制器包还可包括要由附件304用于从包服务器380获取其自身的包的URL。在一些实施方案中,控制器302可在初始配置过程期间或者第一次确定应在中继服务300上激活附件时获取控制器包;此后,控制器302可基于先前获取的控制器包中的到期信息来确定是否以及何时获取新的控制器包。
[0074] 在框408和410处,控制器302可将其自身认证到证书服务器310。假设控制器302已与证书服务器310建立一致性;例如,作为控制器302的初始配置的一部分,控制器302可已从证书服务器310(或从另一个源)获取自身的PKI证书和设备身份令牌(例如,如上所述的UUID)。在一些实施方案中,可在制造期间为控制器302配置PKI证书和/或设备身份令牌。在一些实施方案中,控制器302可在与证书服务器310建立一致性之前从包服务器380获取初始控制器包,并且控制器302可基于控制器包中的寻址信息来确定证书服务器310的URL。证书服务器310可执行标准证书验证技术,诸如接收和验证来自控制器302的PKI证书,然后从控制器302获取经签名的数字质疑,并使用经验证的PKI证书来验证签名。也可使用其他认证技术。在一些实施方案中,框408,410处的认证可为双向的;即,控制器302还可在继续进行以下操作之前认证证书服务器310。
[0075] 在认证控制器302之后,在框412,414和416处,控制器302可代表附件304来执行证书服务器310的第二认证操作。例如,附件304可在制造过程中配置有数字安全证书(该证书可例如通过由中继服务300的提供商提供的许可程序(诸如由Apple Inc提供的Made for iPhone(MFi)许可程序)发布)。框412,414和416可包括控制器302(经由本地信道)从附件304检索数字安全证书,将数字安全证书转发到证书服务器310进行验证,从证书服务器310接收数字质疑,将数字质疑(经由本地信道)转发到附件304进行签名,(经由本地信道)从附件304接收响应,并将响应转发到证书服务器310。在一些实施方案中,附件304和控制器302之间的通信可通过对附件的远程中继访问服务(或根据具体实施的另一种附件服务)的特征进行读取和/或写入来执行。证书服务器310可验证数字安全证书(例如,通过与发布该证书的证书管理机构进行通信或通过使用已建立的信任链),并使用经验证的证书来验证由附件304生成的已签名的数字质疑。
[0076] 假设附件304认证成功,则在框420处,证书服务器310可为附件304生成新的PKI证书和相关联的设备身份令牌(例如,UUID)。可使用随机或伪随机过程等来生成新的PKI证书和/或设备身份令牌,使得该PKI证书和/或设备身份令牌不可用于重建可被包括(明确地或隐含地)在附件304制造期间配置有的原始数字安全证书中的任何附件识别信息(例如,制造商、附件类型、附件功能、或附件位置)。例如,用于在框412,414,416处认证附件的数字安全证书可用于确定制造商、附件类型或关于附件304是什么和/或其可做什么的其他信息。由证书服务器310发布的PKI证书和设备身份令牌(例如,UUID)不需要与任何附件属性具有任何相关性。在一些实施方案中,证书服务器310可持久地存储PKI证书和UUID(或其他设备身份令牌),而不保留附件的数字安全证书或从其获取的任何信息。在一些实施方案中,由证书服务器310生成的PKI证书可包括从附件的数字安全证书提取的辅件识别信息的编码表示(例如,制造商和型号的散列)。此类信息可以使第三方难以或不可能对其进行解码的方式被编码,例如使用散列函数等。该设备身份令牌可为早证书服务器310的命名空间中唯一的任何标识符,并且可与任何附件识别信息(例如,制造商或型号)不相关。
[0077] 在框422处,证书服务器310可将所述新的PKI证书和UUID(或其他设备身份令牌)发送至控制器302。控制器302可在框424处接收新的PKI证书和UUID,并且在框426处例如通过写入附件的远程中继访问服务的适当特征来将其提供至附件304。在框428处,附件304可接收并持久地存储其新的PKI证书和UUID。如下所述,该信息可用于当附件304随后连接到中继服务300时进行认证。控制器302不需要存储该PKI证书或UUID。
[0078] 应当理解,过程400为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤的顺序,并且可修改、合并、添加或省略步骤。例如,将控制器和附件认证到证书服务器310可并行地或以不同的顺序发生。在一些实施方案中,在过程400期间生成的PKI证书可具有到期日期,并且可根据需要短暂存在或长期存在。此外,不需要证书服务器310维护证书储存库,因为其他服务器可验证该证书服务器310的签名。除了证书和签名验证之外或作为其替代,可使用不同的认证技术,并且证书服务器310为附件
304生成的认证信息不限于PKI证书和UUID(或其他设备识别令牌)。
[0079] 在过程400完成时,附件304可被认为“已激活”,即附件304具有可用于连接到中继服务300的已建立的身份(例如,PKI证书和UUID)。因此,中继配对设置可进行到下一个阶段,其中附件304和控制器302可获取并交换由中继服务300分配的标识符,以用于在它们之间中继消息。
[0080] 图5示出了过程500的简化流程图,该控制器(例如,控制器302)可根据该流程图来获取操作者中继别名,该操作者中继别名可用于根据本发明的实施方案来将消息中继到附件以及从附件中继消息。在本文描述的实施方案中,该中继别名与控制器302的“操作者”相关联,该操作者可为控制器302所属的用户,而不是特定的控制器设备。这允许属于相同用户的多个控制器设备具有经由中继服务器300的相同附件访问权限,而不必为每个控制器设备建立单独的中继配对。在其他实施方案中,可将中继别名分配至特定的控制器设备而不是操作者。
[0081] 在过程500的框502处,控制器302可将用于建立操作者中继别名(或“操作者RA”)的请求发送至身份服务器320。该操作者RA可与控制器302的用户相关联。例如,控制器302的用户可具有与中继服务300的服务提供商的账户,其可用于不仅访问中继服务300,而且可用于访问来自相同服务提供商的其他基于网络的服务,诸如数据存储和/或流服务、设备间通信服务、软件和/或固件管理服务等。用户账户的一个示例可为使用Apple Inc.的iCloud服务的用户账户。用户可将控制器302链接到用户的账户,例如通过向可在框502处向中继服务300(例如,向身份服务器320)呈现凭据的控制器302提供用户名和密码(或其他访问凭据)。
[0082] 在框504处,身份服务器320可接收对操作者RA的请求。在一些实施方案中,身份服务器320可执行各种验证操作来验证该请求,例如验证由控制器302提供的用户账户凭据,利用控制器302(例如,使用证书服务器310)来进行基于证书的认证操作等。假设该请求有效,则在框506处,身份服务器320可生成或检索用于控制器302的操作者RA。例如,如果用户是第一次将控制器连接到中继服务300,则身份服务器320可生成新的操作者RA并使该操作者RA与用户账户相关联。如果用户先前已将另一个控制器连接到中继服务300,则用户账户可能已与操作者RA相关联,并且框506处的处理可包括检索操作者RA(例如,通过查找操作、查询数据库等)。应当注意,操作者RA可专门用于在用户的一个或多个控制器和各种附件之间中继消息;如果需要,可为可能与用户账户相关联的其他活动和操作独立生成其他别名。此外,可使用随机或伪随机过程等来生成操作者RA,使得操作者RA与账户凭据或关于用户、账户或用于生成操作者RA的特定控制器的任何其他识别信息不相关。在一些实施方案中,中继服务300可在内部能够使操作者RA与用户账户或控制器设备相关联(例如,使用由身份服务器320维护的表或通过使用可逆的散列算法等来生成操作者RA),但是该关联在无需附加信息的情况下不需要得自操作者RA。
[0083] 在框508处,身份服务器320可将已生成或检索的操作者RA发送至控制器302。在框510处,控制器302可接收并持久地存储该操作者RA。在一些实施方案中,控制器可针对如下所述的所有中继服务事务使用相同的操作者RA,并且给定的控制器可执行一次过程500并无限期地存储所得到的操作者RA。
[0084] 应当理解,过程500为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤的顺序,并且可修改、合并、添加或省略步骤。过程500可以在任何时候执行,而与本文所述的其他过程在何时执行无关。例如,在一些实施方案中,每当用户建立与相关服务提供商的账户并且可将其自动递送至用户使其与该账户相关联的每个控制器时,可生成用于中继服务300的操作者RA。因此,例如可在上述过程400之前或之后执行过程500。此外,在一些实施方案中,操作者RA可与特定控制器相关联,而不仅与用户账户相关联,因此属于相同用户的不同控制器可具有不同的操作者RA。
[0085] 为了使中继服务300能够在控制器302和附件304之间操作,控制器302需要向附件304提供其操作者RA并获取用于附件304的附件中继别名(或“附件RA”)。图6示出了根据本发明的实施方案的用于交换操作者RA和附件RA的过程600的简化流程图。过程600可以一部分例如由与附件304进行交互的控制器302执行,并且一部分例如由与附件信使服务器330进行交互的附件304来执行。假设过程600在控制器302具有对附件304的本地访问权限时被执行,这样控制器302和附件304之间的通信可经由本地信道发生而无需使用中继服务300。
[0086] 过程600可在控制器302具有操作者RA(例如,作为过程500的结果)并且附件304具有PKI证书和UUID(例如,作为过程400的结果)时开始。在框602处,控制器302可通过写入远程中继访问服务的适当特征(或多个特征)来提供其操作者RA。在一些实施方案中,控制器302还可提供附件可用于从包服务器380获取附件包的“包URL”,例如通过写入远程中继访问服务的适当特征(或多个特征)。在一些实施方案中,用于包服务器380的URL可根据控制器302所持有的控制器包中的信息来确定。在框604处,附件304可接收并持久地存储操作者RA(以及包URL,如果提供包URL)。假设经由本地信道上的配对验证会话接收到操作者RA,附件304可使该操作者RA与用于在本地信道上建立配对验证会话的控制器标识符相关联。尽管不要求此类关联,但是这样做可允许针对其与附件304的本地配对具有已建立的管理员特权的控制器在经由中继服务300进行通信时具有相同的管理员特权。此外,使操作者RA与本地配对相关联可允许附件304将中继访问限制到已建立本地配对的控制器。
[0087] 在框605处,附件304可从包服务器380获取附件包,例如通过将GET请求发送至由控制器302提供的包URL。在一些实施方案中,该附件包可包括用于中继服务300的各种服务器(例如,附件信使服务器330和/或通行证服务器360中的任一者或全部)的寻址信息。在一些实施方案中,该附件包可包括到期信息;在过程600之后,附件302可基于先前获取的附件包中的到期信息来确定是否以及何时获取新的附件包。
[0088] 在接收到操作者RA之后,附件304可继续获取附件RA。例如,在框606处,附件304可将附件对附件RA的请求发送至信使服务器330。在一些实施方案中,该请求可包括经由上述过程400获取的PKI证书和UUID(或其他设备识别令牌);作为另外一种选择,可在单独的事务中发送PKI证书和UUID。在一些实施方案中,附件304可被要求向附件信使服务器330呈现与该请求有关联的通行证。附件304可从通行证服务器360获取通行证,例如如下面参考图12所述。
[0089] 在框608处,附件信使服务器330可接收该请求。在框610处,附件信使服务器330可验证附件的PKI证书。在一些实施方案中,附件信使服务器330可与证书服务器310进行通信以验证附件的PKI证书;在其他实施方案中,信使服务器330可基于附件的PKI证书上的签名来进行验证。在框612处,假设PKI证书被验证,附件信使服务器330可生成用于附件304的附件RA。在一些实施方案中,可使用随机或伪随机过程等来生成附件RA,使得附件RA与关于附件的任何识别信息不相关。在一些实施方案中,附件RA可例如在经加密的数据块中结合UUID,以允许中继服务300将附件RA与UUID连接在一起,而无需第三方这样做。可生成附件RA,使得其在所有当前有效的附件RA中是唯一的。在框614处,附件信使服务器330可将附件RA发送至附件,例如作为对在框608处接收到的请求的响应。
[0090] 在框616处,附件304可从附件信使服务器330接收附件RA。附件304可持久地存储附件RA并将其用于与附件信使服务器330的将来的连接。在框618处,附件304可将其附件RA发送至控制器302。例如,当控制器302将其操作者RA发送至附件304时,该控制器可在框602处包括对附件RA的请求,并且附件304可在框618处发送对该请求的响应。也可使用其他技术。
[0091] 在框620处,控制器302可接收并存储附件RA。在一些实施方案中,控制器302可将附件RA与用于在本地信道上建立配对验证会话的附件标识符相关联地存储,该附件RA经由该本地信道被接收。这可允许控制器302可互换地经由本地信道或中继服务300来访问附件304。
[0092] 应当理解,过程600为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤的顺序,并且可修改、合并、添加或省略步骤。控制器和附件可在任何时间以及以任何顺序获取并交换操作者RA和附件RA。例如,应当注意,在过程600期间,附件304不使用操作者RA来获取其附件RA。因此,附件304可在接收到PKI证书和UUID之后的任何时间获取附件RA。在从控制器接收操作者RA时触发附件的对附件信使服务器330的请求可以允许控制器302对附件何时或是否请求附件RA施加更多的控制。在一些实施方案中,附件304可使用相同附件RA以用于与不同的控制器进行配对,并且已具有附件RA的附件在过程600期间不需要请求另一附件RA。
[0093] 在过程600完成时,附件304和控制器302各自拥有一个(附件RA,操作者RA)配对。中继服务300已使附件RA与附件304相关联,至少使附件信使服务器330可基于附件RA来将消息传送至附件304,并且已使操作者RA与控制器302相关联,至少使控制器信使服务器340可基于操作者RA来将消息传送至控制器302。
[0094] 此时,可在中继服务300内建立附件RA和操作者RA之间的关联,使得中继服务300可开始允许在附件304和控制器302之间中继消息。该关联在本文中被称为“中继配对”并且被理解为不同于通过诸如上述配对设置和配对添加的操作所建立的本地配对。
[0095] 图7示出了根据本发明的实施方案的用于建立中继配对的过程700的简化流程图。过程700可一部分由与身份服务器320进行通信的控制器302执行,一部分由经由本地信道与附件304进行通信的控制器302执行,并且一部分由与身份服务器320进行通信(这可经由附件信使服务器330发生)的附件304执行。假设控制器302和附件304各自具有与这两个设备对应的(附件RA,操作者RA)配对,例如作为执行过程400,500和600的结果。
[0096] 在该示例中,在框702处,附件304可(例如,经由附件信使服务330,未示出)将配对请求发送至身份服务器320。该配对请求可包括(附件RA,操作者RA)配对。在框704处,身份服务器320可接收该请求。在一些实施方案中,控制器302可指示附件304响应于在上述过程600的框620处接收到附件RA来发送配对请求。在框706处,身份服务器320可生成要与配对请求相关联的临时配对令牌。该临时配对令牌可包括例如操作者RA、附件RA、指示临时配对令牌何时被生成的时间戳,以及到期时间(例如,其可为例如生成时间之后的10分钟或1小时等)。在一些实施方案中,可使用只有身份服务器320知道的密钥来对临时配对令牌进行加密或数字签名。身份服务器320还可生成可为例如令牌储存库322中的包括附件RA、操作者RA和临时配对令牌的条目的配对请求条目;该配对请求条目可为在没有完成中继配对过程的情况下到达到期时间而被移除的临时条目。在框708处,身份服务器320可将临时配对令牌发送至附件304(例如,经由附件信使服务330)。在框710处,附件304可接收临时配对令牌。
[0097] 在框712处,附件304可经由本地信道来将临时配对令牌提供至控制器302。例如,附件304可更新远程中继访问服务的适当特征,并且控制器302可接收更新通知。又如,附件304可响应于来自控制器302的请求来发起框702,并且可在块712处响应于该请求来发送临时配对令牌。在框714处,控制器302可接收临时配对令牌。
[0098] 在框716处,控制器302可将对访问令牌(其可为与临时配对令牌不同的持久配对令牌)的请求发送至身份服务器320。该请求可包括操作者RA、附件RA、和临时配对令牌。在一些实施方案中,框714处的请求还可包括其他信息,例如可用于利用证书服务器310(或另一个证书服务器,诸如专用于验证控制器的身份的服务器)来验证控制器302的身份的信息。
[0099] 在框718处,身份服务器320可基于来自控制器302的请求来生成访问令牌。在一些实施方案中,框718处的处理可包括验证控制器302的身份和/或验证被包括在该请求(包括临时配对令牌)中的信息是否匹配在框706处创建的配对请求条目。假设所有验证都成功,则身份服务器320可生成访问令牌(其可为与临时配对令牌不同的持久配对令牌)。该访问令牌可包括例如指示其何时生成的时间戳、到期时间戳(如果需要)、操作者RA、附件RA、指示操作者RA是否被授予对附件的管理员特权的标记(其在这种情况下可被设置为真)、以及其他信息。在一些实施方案中,该访问令牌可包括由身份服务器320进行数字签名的信息的版本,从而提供不容易伪造的访问令牌。在框720处,交互服务器320可将访问令牌发送至控制器302。
[0100] 在框722处,控制器302可接收访问令牌并可将访问令牌与附件304的附件RA相关联地持久存储。在一些实施方案中,控制器302可使访问令牌和附件RA与用于本地访问的(可能不同的)附件标识符和附件长期公钥相关联,使得控制器302知道本地标识符和附件中继别名均指相同附件。在框724处,控制器302可经由本地信道来向附件304提供访问令牌。在框726处,附件304可接收访问令牌并且可将访问令牌与控制器302的操作者RA相关联地持久存储;如上所述,控制器302的操作者RA可与用于本地访问的(可能不同的)控制器标识符和控制器长期公钥相关联,使得附件304知道本地控制器标识符和操作者中继别名均指相同控制器。
[0101] 应当理解,过程700为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤顺序,并且可修改、合并、添加或省略步骤。在一些实施方案中,可根据控制器设备的请求来发起过程700。
[0102] 此外,过程400,500,600和700(或其一些部分)可采用与所描述的顺序不同的顺序来执行。如上所述,这些过程内的某些操作可能需要本地信道上的控制器302和附件304之间的通信;然而,不需要在建立中继配对所涉及的各种过程的执行过程中能够持续地维护该本地信道。例如,控制器可当处于附件的本地环境中时开始该过程,然后离开本地环境并在以后返回以结束。此外,在基于用户标识符而不是特定设备标识符授予对附件的本地访问的实施方案中,可使用一个控制器设备来开始中继配对设置,并使用由相同用户操作的不同控制器设备来结束。
[0103] 访问令牌可被持久地存储并无限期地使用。在一些实施方案中,访问令牌可具有由生成其的服务器设置的到期日期,该到期日期可为默认值或基于来自控制器的指令。因此,例如可提供访问令牌以允许控制器临时具有对附件的中继访问权限(例如,控制器可能属于房屋代管人等)。
[0104] 在一些实施方案中,上述中继配对设置过程可用于在具有管理员特权(通过本地配对建立)的控制器与附件之间建立中继配对。可重复这些过程以在控制器和任何数量的附件之间建立中继配对,前提是控制器对每个附件均具有管理员特权。对于没有管理员特权的控制器(或操作者),可使用不同的过程来添加中继配对;下面描述一个示例。
[0105] 中继使用示例
[0106] 一旦建立了中继配对,便可随时被用于在控制器和附件之间中继消息。如上所述,消息可符合统一附件协议,该统一附件协议可支持请求/响应模型,以用于允许控制器询问(例如,经由读取请求)或修改(例如,经由写入请求)附件状态的各个方面(已建模的,例如,作为可由控制器读取和/或写入的特征)。另外,该统一附件协议可支持当附件状态的某些方面发生变化时由附件向一个或多个控制器发出的通知。根据本发明的一些实施方案,可经由中继服务300来交换统一附件协议消息。
[0107] 在一些实施方案中,中继服务300可限制中继请求的大小;例如,单个中继请求有效载荷可被限制为不超过4kB(千字节)、16kB等。一些统一附件协议消息可能超过该限制(例如,500kB,以读取附件属性数据库)。在这种情况下,消息可由发送者(例如,控制器302或附件304)分段成多个中继请求有效载荷。每个消息片段可包括消息的一部分、以及分段标头信息,以促进片段的重组。该分段标头信息可包括例如消息的所有片段共同的并将不同消息彼此区分开的事务标识符(例如,16位单调递增的整数);事务长度指示符(例如,完整消息中的字节数)以及索引(例如,指示该片段的第一个字节在完整消息内的位置的字节索引)。分段消息的接收者(例如,附件304或控制器302)可使用事务长度指示符来为消息分配缓冲器空间,并且可通过基于索引将每个消息片段写入到经分配的缓冲器空间来组合该消息。接收者可使用事务长度指示符来确定何时已接收到所有字节。因此,消息的片段可乱序地被接收并且被接收者按原顺序重新排列。
[0108] 图8A和8B示出了根据本发明的实施方案的过程800a,800b的简化流程图,这两个过程用于经由中继服务(例如,中继服务300)来在控制器(例如,控制器302)和附件(例如,附件304)之间传送请求(过程800a)和响应(过程800b)。在该示例中,假设已建立中继配对(例如,如上参考图4至图7所述),使得身份服务器320在令牌储存库322中具有配对记录,该配对记录使控制器302的操作者RA、附件304的附件RA和配对令牌相关联。
[0109] 图8A示出了用于将来自控制器302的请求传送至附件304的过程800a。在框802和804处,附件304可与附件信使服务器330建立(持久)连接。例如,附件304可与附件信使服务器330建立套接字;该套接字可被映射到附件304的附件RA(例如,在映射332中)。为了保持该套接字打开,附件304可将请求(例如,HTTP中的长轮询)发送至附件信使服务器330;该请求可包括用于附件304已中继配对的任何控制器的访问令牌。在某些情况下,附件可与多个控制器具有中继配对并且该请求可包括多个访问令牌,前提是这些访问令牌与相同附件RA相关联。
[0110] 在框808处,控制器302可生成要发送至附件304的消息。该消息可包括例如符合统一附件协议的读取或写入请求消息。框808可在每当控制器302确定该消息应被传送至附件304时发生。例如,用户可操作控制器302,以请求关于附件304的信息(例如,“前门锁定了?”)或改变附件304的状态(例如,“锁定前门”)。作为另外一种选择,控制器302可主动确定将消息(例如,作为自动化过程的结果)发送至附件304。
[0111] 在框810处,控制器302可将一个或多个中继请求发送至控制器信使服务340。该一个或多个中继请求可包括在框808处生成的消息内容。在一些实施方案中,消息可被分段成多个中继请求,例如如上所述,并且每个中继请求可包括消息内容的片段、以及分段标头。与消息内容(或其片段)一起,该一个或多个中继请求可包括表明该请求为中继请求的指示符、用于附件304的附件RA,用于控制器302的操作者RA,以及用于控制器302与附件304之间的中继配对的访问令牌。框810可在每当控制器302确定在框808处生成的消息应经由中继服务300被中继到附件304时发生。例如,在已确定该消息应被发送的情况下,控制器302可进一步确定对附件304的本地访问当前不可用,并且已与附件304建立中继配对,使得经由中继服务300的访问为一个选项。在此类情况下,控制器302可前进到在框810处生成请求。
[0112] 在框812处,控制器信使服务器340可从控制器302接收一个或多个中继请求。在一些实施方案中,除了本文描述的中继服务之外,控制器信使服务器340还可针对控制器和/或其他用户设备实施或支持许多不同的消息收发服务(例如,控制器到控制器消息收发服务),并且接收每个中继请求可包括确定(例如,基于该请求中包括的指示符)该请求为将消息中继到附件。
[0113] 在框814处,控制器信使服务器340可验证访问令牌(例如,通过与身份服务器320进行通信,该身份服务器可验证其对访问令牌的数字签名,并确认访问令牌与被包括在中继请求中的操作者RA和附件RA相关联)。还可执行其他验证操作,例如验证控制器302的身份。可对每个中继请求独立地执行验证;控制器信使服务器340可不知道消息分段。假设验证操作成功,则在框816处,控制器信使服务器340可将每个中继请求传送至附件信使服务器330。在一些实施方案中,控制器信使服务器340可向请求添加特定于设备的标识符(DSID),该特定于设备的标识符可为可由控制器信使服务器340用于识别从其接收到中继请求的特定控制器设备302的任何标识符。这可允许对中继请求的任何响应被选择性地递送到发出该请求的控制器设备,而不是如下所述递送到与特定操作者RA相关联的所有控制器设备。对该一个或多个中继请求的传送可由消息传送服务器350促进并且可包括重新格式化一个或多个中继请求等。
[0114] 在框820处,附件信使服务器330可接收一个或多个中继请求。在框822处,附件信使服务器330可将该一个或多个中继请求发送至附件304,例如,作为对来自附件304的先前长轮询请求的响应(如上所述)。附件信使服务器330可不知道该一个或多个请求的内容。被发送至附件304的一个或多个中继请求可包括由控制器302提供的消息内容(和分段标头,如果适用)、附件RA、操作者RA、和由控制器信使服务器340添加的DSID。该访问令牌可被省略;附件304可能已具有访问令牌的副本。在一些实施方案中,如果附件304在接收到中继请求时未连接到附件信使服务器340,则可丢弃该请求,并且附件信使服务器340可向控制器信使服务器330报告错误。
[0115] 在框824处,附件304可接收包括由控制器302提供的消息内容的一个或多个中继请求。如果消息在多个中继请求之间被分段,则附件304可解析分段标头并例如在缓冲器或其他短期存储器中重新组合完整消息。在框826处,附件304可处理该消息。应当注意,该消息内容可完全按照接收的方式进行中继,使得附件304可采用与其处理经由本地信道发送的消息相同的方式来处理该消息。
[0116] 图8B示出了用于将来自附件304的响应传送至控制器302的过程800b。可例如每当附件304确定响应应被发送至控制器302时使用过程800b。在一些实施方案中,过程800a的框826处的处理消息内容可导致附件304生成要被发送至控制器302的响应消息。例如,在读取请求消息的情况下,该响应消息可包括请求被读取的一个或多个特征的值;在写入请求消息的情况下,该响应消息可指示成功或失败。应当理解,并不是每个请求消息都需要单独的响应;在一些情况下,附件304可合并对多个请求的响应。此外,一些请求消息可生成多个响应消息。例如,在请求可能需要一些时间才能完成(例如,打开车库门)的情况下,附件可发送用于确认接收到请求的第一响应和指示请求完成的第二响应,或者附件可等待并在请求完成时发送单个响应。在一些实施方案中,可处理一些请求而不发送响应。
[0117] 当要发送响应消息时,附件304可在框828处生成要发送至控制器302的响应消息内容。在框830处,附件304可将一个或多个中继请求发送至附件信使服务器330,以将响应消息中继到控制器302。该一个或多个中继请求可为例如包括预期用于控制器302的响应消息内容(例如,由统一附件协议支持的消息)的一个或多个HTTP或HTTPS请求。在一些实施方案中,响应消息可被分段成多个中继请求,例如如上所述,并且每个中继请求可包括响应消息内容的片段、以及分段标头。与响应消息内容(或其片段)一起,对附件信使服务器330的一个或多个中继请求可包括表明该请求为中继请求的指示符、用于控制器302的操作者RA、用于附件304的附件RA、以及用于控制器302与附件304之间的中继配对的访问令牌。可包括其他信息诸如用于控制器302的DSID。该一个或多个中继请求不需要被识别为对从控制器302中继的先前中继请求进行响应。
[0118] 在框832处,附件信使服务器330可从附件304接收一个或多个中继请求,并且可确定其为中继请求。在框834处,附件信使服务330可验证访问令牌(例如,通过与身份服务器320进行通信,该身份服务器可验证其对访问令牌的数字签名,并确认访问令牌与被包括在中继请求中的附件RA和操作者RA相关联)。也可执行其他验证操作。可对每个中继请求独立地执行令牌验证(和任何其他验证操作);附件信使服务器330可不知道消息分段。假设令牌验证(和任何其他验证操作)成功,则在框836处,附件信使服务器330可将每个中继请求传送至控制器信使服务器340。对该一个或多个中继请求的传送可由消息传送服务器350促进并且可包括重新格式化请求等。
[0119] 在框840处,控制器信使服务器340可接收一个或多个中继请求。在框842处,控制器信使服务器340可将一个或多个中继请求发送至控制器302。在一些实施方案中,控制器信使服务器340可使用被包括在一个或多个中继请求中的DSID来将一个或多个中继请求引导到由该DSID识别的特定控制器设备;控制器信使服务器340可不知道该一个或多个中继请求的内容。假设控制器302处于在线状态,则控制器302可在框850处接收该一个或多个中继请求。在一些实施方案中,包含来自附件的响应消息的中继请求不由控制器信使服务器340排队;如果控制器302离线,则响应消息可被丢弃。
[0120] 在框850处由控制器302接收的一个或多个中继请求可包括由控制器302提供的消息内容(和分段标头,如果适用)。如果该消息在多个中继请求之间被分段,则控制器302可解析分段标头,并例如在缓冲器或其他短期存储器中重新组合完整消息。在框852处,控制器302可处理响应消息内容。与由控制器302发送的请求消息一样,来自附件304的响应消息内容可完全按照发送时那样被中继,使得控制器302可采用与其处理经由本地信道发送的响应消息相同的方式来处理该响应消息。对该响应消息的处理可能或可能不会导致进一步的请求消息。
[0121] 以这种方式继续,控制器302和附件304可交换受到统一附件协议支持的任何消息。例如,通过经由中继服务300交换消息,控制器302和附件304可建立配对验证会话(基于它们先前建立的本地配对),并且可使用与配对验证会话相关联的会话密钥来对后续消息进行加密。在一些实施方案中,附件304可拒绝用于读取或写入在配对验证会话的上下文中未被接收的各种特征的任何请求。因此,可提供控制器302和附件304之间的端到端安全性。
[0122] 另一种类型的消息交换可为附件通知。在一些实施方案中,通知可包括由附件发送的不响应于来自控制器的请求消息的任何消息。例如,该统一附件协议可规定控制器(例如,控制器302)可订阅在附件304处发生的状态改变的通知。该订阅可在全局级别(例如,通知控制器302该任何状态改变)下或特定于特定特征(或多个特征)。当一个或多个控制器已为其订阅通知的特征发生状态改变时,附件304可向每个订阅控制器生成通知。可发送通知的另一种情况可包括对附件的配置更改,诸如当将新附件添加到桥接器时。如果控制器已要求对附件的状态(例如,每小时的温度读数)进行周期性更新,则可能还会发生另一种情况。根据具体实施,这些或其他情况中的任一种情况可能导致附件向一个或多个控制器生成通知。通知消息的具体内容可取决于控制器和/或传输手段;上文引用的美国专利申请14/614,914和美国专利申请14/725,891中描述了示例。
[0123] 在本发明的一些实施方案中,中继服务300可用于将来自附件的通知中继到订阅控制器。图9示出了根据本发明的实施方案的用于将通知经由中继服务(例如,中继服务300)从附件(例如,附件304)中继到控制器(例如,控制器302)的过程900的简化流程图。与图8A和图8B一样,在该示例中,假设已建立中继配对(例如,如上参考图4至图7所述的),使得身份服务器320在令牌储存库322中具有配对记录,该配对记录使控制器302的操作者RA、附件304的附件RA和配对令牌相关联。
[0124] 在框902处,附件304可确定应发送通知。例如如果附件304实现门锁,则状态改变可为从锁定状态改变为解锁状态(或者反之亦然)。还可检测附件状态的可改变的任何其他方面。在一些实施方案中,该附件可更新其附件模型的特征中的一个特征的值,以表示状态改变。如上所述,除了状态改变之外的事件或情况也可导致生成通知,并且过程900可在每当要发送通知时被执行。
[0125] 在框904处,附件304可识别应经由中继服务300被通知状态改变的一个或多个控制器(例如,控制器302)。例如,在一些实施方案中,控制器可写入附件模型的“订阅”特征,以建立(或终止)要在状态改变的情况下通知的订阅,该特征可为全局性的或为特征的特定子集。基于其附件模型中的一个或多个订阅特征,附件304可确定是否要通知任何控制器。(如果不通知任何控制器,则过程900可在框904处结束。)在一些实施方案中,如果已确定要通知一个或多个控制器(例如,控制器302),则附件304还可确定对控制器302的本地访问当前不可用,并且已与控制器302创建中继配对,使得经由中继服务300的访问为一个选项。在此类情况下,附件304可前进到在框906处向控制器302发布通知。在一些实施方案中,所发布的通知可例如作为HTTP或HTTPS POST请求而被发送至附件信使服务器330处的指定URL。
所发布的通知可包括通常指示发生的情况的类型(例如,状态改变、配置更改、有新的传感器读数可用)的指示器,而不提供任何进一步的信息(例如,是什么发生了改变或新的读数是什么)。所发布的通知还可包括附件RA以及应向其中继通知的控制器的操作者RA和相关联的访问令牌的列表。可针对任何数量的控制器发布单个通知。
[0126] 在框910处,附件信使服务器330可接收所发布的通知。在一些实施方案中,附件信使服务器340可将所发布的通知与中继请求区分开(例如,它们可被发布到不同的URL)。在框912处,附件信使服务器330可验证一个或等多个访问令牌(例如,通过与身份服务器320进行通信,该身份服务器可验证其对每个访问令牌的数字签名,并确认每个访问令牌与由附件304指定的附件RA和操作者RA正确地相关联)。假设用于特定操作者RA的访问令牌有效,则在框914处,附件信使服务器330可将用于该操作者RA的通知消息传送至控制器信使服务器340。对通知消息的传送可由消息传送服务器350促进,并且可包括重新格式化该通知消息等。
[0127] 在框920处,控制器信使服务器340可接收通知消息(或多条消息,视具体情况而定)。在框922处,控制器信使服务可基于操作者RA将每个接收到的通知消息发送至适当的控制器(例如,控制器302)。在操作者RA映射到用户账户而不是特定的控制器设备的情况下,这可能导致将通知发送至与相同用户账户相关联的多个控制器设备。在一些实施方案中,如果控制器302离线,则通知消息可由控制器信使服务器340排队,以供稍后递送。经排队的通知消息可在被丢弃之前保持尽可能长的时间(例如,7天、30天、或某个其他时间段)。对通知的排队可独立于其他附件发起的中继请求是否排队。
[0128] 在框930处,控制器302可从控制器信使服务器340接收通知消息。如上所述,该通知消息可通常指示所发生的情况的类型(例如,状态改变、配置更改、有新的传感器读数可用)的指示器,而不提供任何进一步的信息(例如,是什么发生了改变或新的读数是什么)。如果需要,控制器302可通过在框932处向附件304发起消息来获取关于状态改变的性质的信息。该消息可为例如用于读取感兴趣的特征以确定关于状态改变的进一步的信息的读取请求。可采用与任何其他读取请求(或写入请求)相同的方式来将消息发送至附件304,例如使用上述过程800a经由中继服务300来中继该消息。
[0129] 应当理解,过程800a,800b和900为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤顺序,并且可修改、合并、添加或省略步骤。例如,附件可使用过程800b来将不对来自该设备的请求消息进行响应的消息发送至特定控制器设备;假若附件具有控制器的特定于设备标识符,该消息便不需要对请求消息进行响应。
又如,如果附件具有用于特定控制器设备的特定于设备的标识符,则使用过程900发送的通知可被引导到特定控制器设备。
[0130] 在中继服务300内使用的消息格式可使得中继服务300不知道源自附件304的特定消息是对控制器消息或对任何特定的控制器消息的响应。消息内容可由发起端点设备(控制器302或附件304,视具体情况而定)生成,并且对于中继服务300可为不透明的。因此,例如控制器302和附件304可交换符合统一附件协议的消息以建立与彼此的配对验证会话,并且在配对验证会话内传送经加密的信息。在一些实施方案中,消息标识符(消息ID)可由发起端点(控制器302或附件304)或由中继服务300分配至每条消息。消息ID可被递送至接收者并且可由接收者用于例如使响应消息与响应对其进行响应的请求消息(或多个请求消息)相关联。
[0131] 如果尝试中继消息的操作在任何时候失败,则可生成失败响应并将其递送到发送中继请求的端点设备。接收失败响应的端点设备可确定是重试、提示用户、采取其他措施、还是不采取任何措施。
[0132] 附件304可维持至附件信使服务330的持久连接(例如,套接字)。例如,如上所述,附件304可将HTTP长轮询请求发送至附件信使服务器330,以便保持连接打开,并且附件信使服务器330可递送已中继的消息作为对该长轮询请求的响应。在任何时候附件304接收到对长轮询请求的响应,其均可生成并发送另一个长轮询请求,从而允许连接无限期地持续。在本文描述的示例中,基于在附件信使服务器330处从附件304接收到的请求(例如,长轮询)来建立与附件信使服务器330的连接,该请求包括附件RA(以及用于附件304能够从其接收消息的每个控制器302的访问令牌)。附件信使服务器330,以及更一般地讲中继服务300不需要提供用于将请求递送到当前未连接的附件的机制。因此,附件信使服务器330不需要保留关于在何处或如何定位附件304的任何信息;只要附件304保持与附件信使服务器330的连接(例如,套接字),则该套接字的存在便足以允许附件信使服务器330递送请求。应当注意,考虑到该具体实施,如果附件304不保持与附件信使服务器330的连接,则中继服务
300可能不能完成来自控制器302的中继请求。
[0133] 在一些实施方案中,中继服务300可在各种服务器上保持活动的日志。例如,当控制器信使服务器340(和/或附件信使服务器330)中继消息时,可记录附件RA、操作者RA和消息的方向(控制器到附件或附件到控制器);不需要记录消息内容。这可允许中继服务300监视活动级别并检测模式(例如,使用趋势,如下所述的异常),而无需记录什么信息被发送。保留任何日志或活动记录为可选的。
[0134] 添加和移除用户
[0135] 在一些实施方案中,可能希望允许多个用户(或多个控制器)经由本地访问和/或经由中继服务300来与附件进行交互。在本地访问的上下文中,具有特定附件的管理员特权的控制器可使用统一附件协议的配对添加过程来添加其他控制器。在中继服务300的上下文中,具有特定附件的管理员特权的控制器可利用其他操作者RA(例如,属于不同用户的操作者RA)来添加中继配对。
[0136] 图10A和图10B示出了根据本发明的实施方案的过程1000的简化流程图,该过程用于为用户添加中继配对。过程1000可例如在与身份服务器320并且与“新”控制器1004进行交互的“管理员”控制器1002(例如,诸如上述控制器302的控制器,其已使用图4至图7的过程而与至少一个附件建立中继配对)中实现,该“新”控制器可为属于与管理员控制器1002的用户不同的用户的控制器。在该示例中,假设控制器信使服务器340实现控制器到控制器消息收发服务(例如,类似于Apple Inc.的 服务),并且管理员控制器1002和新控制器1004可经由控制器信使服务340进行通信。其他具体实施为可能的,前提是在管理员控制器1002和新控制器1004之间存在某种通信信道。
[0137] 首先参考图10A,过程1000可在管理员控制器1002确定应添加新控制器1004与一个或多个附件的中继配对时开始。在这种情况下,管理员控制器1002已具有与所讨论的每个附件的中继配对。例如,管理员控制器1002可用于管理员家中的附件,并且新的控制器1004可属于正在移动到家中的用户(例如,室友),或者尚未被添加作为中继服务300的操作者的用户。在一些实施方案中,管理员控制器1002的用户界面可允许管理员用户识别将要添加的用户。例如通过引用电话号码、电子邮件地址、或可将它们链接到一个或多个控制器设备和/或具有中继服务300的用户账户的其他信息项,可在此上下文中识别用户。在一些实施方案中,该管理员控制器的用户界面可允许管理用户从联系人列表选择要添加的用户,在该联系人列表中存储管理用户知道的各种个人的个人信息。其他具体实施为可能的。
[0138] 在框1010处,管理员控制器1002可将用于请求同意将新控制器1004的用户添加为中继服务300上的操作者的消息发送至新控制器1004(也被标记为“C2”)。该消息可包括用于建议为其建立中继配对的附件的附件RA的列表(其可包括管理员控制器1002具有与其的中继配对的任何或所有附件)、管理员控制器1002的操作者RA和邀请码(其可为管理员控制器1002可识别的可用于与许可请求相关的统计的代码)。如上所述,可使用经由控制器信使服务器340的控制器到控制器消息收发。在框1012处,新控制器1004可接收该消息。
[0139] 在框1014处,新控制器1004可确定是否应授予许可。例如,新控制器1004可提示其用户进行确认。也可使用其他技术。在一些实施方案中,如果新控制器1004确定不应授予许可,则过程1000可结束。
[0140] 假设应授予许可,则在框1016处,新控制器1004可获取用于访问中继服务300的操作者RA。新控制器1004可以与上述用于控制器302的相同方式来获取操作者RA,例如通过执行过程500。在框1018处,新控制器1004可将对许可令牌的请求发送至身份服务器320。该请求可包括例如新控制器1004的操作者RA、可用于通过证书服务器310(或另一证书服务器,例如专用于验证控制器的身份的服务器)来验证新控制器1004的身份的其他信息、管理员控制器1002的操作者RA、从管理员控制器1002接收到的附件RA的列表,以及(如果需要)到期时间。
[0141] 在框1020处,身份服务器320可接收对许可令牌的请求。在框1022处,身份服务器320可生成一组许可令牌,每个附件RA对应一个许可令牌。用于给定附件RA的许可令牌可包括例如附件RA、管理员控制器1002的操作者RA、新控制器1004的操作者RA、指示何时生成许可令牌的时间戳、以及到期时间(其可为例如生成时间之后1天、7天等;可使用在框1018处的请求中指定的到期时间)。在框1022处,身份服务器320可将一个或多个许可令牌发送至新控制器1004;每个许可令牌可与对应附件RA相关联。类似于上述临时配对令牌,身份服务器320可针对每个许可令牌存储临时令牌记录。在框1026处,新控制器1004可接收一个或多个许可令牌。
[0142] 如图10B所示,在接收到许可令牌后,在框1028处,新控制器1004可响应于对许可的请求来将消息发送至一个或多个管理员控制器1002。该消息可包括在框1026处从身份服务器320接收到的一个或多个许可令牌,其中每个许可令牌与对应附件RA、以及在框1010处被包括在来自管理员控制器1002的消息中的邀请码相关联。如上所述,可使用经由控制器信使服务器340的控制器到控制器消息收发。在框1030处,管理员控制器1002可接收该消息。
[0143] 在框1032处,管理员控制器1002可将用于检索用于新控制器1004和针对其接收到许可令牌的每个附件RA之间的中继配对的访问令牌的请求发送至身份服务器320。该请求可包括例如一个或多个附件RA、与每个附件RA对应的许可令牌、管理员控制器1002的操作者RA、以及用于管理员控制器1002和附件RA中的一个或多个附件RA之间的已建立的中继配对的访问令牌。还可包括其他信息,诸如可能够用于利用证书服务器310(或另一证书服务器,诸如专用于验证控制器的身份的服务器)来验证新控制器1004的身份的信息、新用户的标识符(例如,电子邮件地址或账户标识符)等。
[0144] 在框1034处,身份服务器320可从管理员控制器1002接收该请求。在框1036处,身份服务器320可基于该请求来生成用于新控制器1004的一个或多个访问令牌。在一些实施方案中,框1036处的处理可包括验证管理员控制器1002的身份和/或验证被包括在请求中的信息是否匹配临时存储的许可令牌。假设所有验证都成功,则交互服务器320可针对新控制器1004的操作者RA和每个附件RA生成访问令牌。每个访问令牌可具有与在上述过程700的框718处生成的访问令牌相同的结构。在一些实施方案中,使用许可令牌建立的访问令牌可将管理员标志设置为假的。在其他实施方案中,在框1032处发送的来自管理员控制器1002的请求可指定对于特定的新控制器的操作者RA,管理员标志应为真的还是假的。在框
1038处,交互服务器320可将一个或多个新的访问令牌发送至管理员控制器1002。每个访问令牌可与针对其有效的附件RA相关联。
[0145] 在框1040处,管理员控制器1002可接收一个或多个访问令牌。在框1042处,管理员控制器1002可基于附件RA来向每个附件提供新的访问令牌、以及新控制器1004的操作者RA。在一些实施方案中,可以使用符合统一附件协议的消息来提供新的访问令牌,例如通过写入附件的远程中继访问服务的适当特征。可使用本地信道和/或中继服务300来传送消息(例如,具体取决于管理员控制器1002在相关时刻所处的位置)。
[0146] 在框1044处,管理员控制器1002可将包括与每个附件RA相关联的新配对令牌的消息发送至新的控制器1004。在框1046处,新控制器1004可从管理员控制器1002接收该消息,并且可使附件RA与访问令牌相关联地持久存储。在一些实施方案中,框1044处的消息未被发送,直到在附件已接收到新的配对令牌,使用新的配对令牌与附件信使服务器340建立新的连接以用于与新控制器1004进行通信并确认与管理员控制器1002的连接之后。这允许新控制器1004在框1046处接收到消息之后立即开始经由中继服务300与附件进行交互。
[0147] 应当理解,过程1000为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤的顺序,并且可修改、合并、添加或省略步骤。在该示例中,当执行过程1000时,新控制器1004可能或可能不具有与给定附件建立的本地配对,并且新控制器1004可能或可能不能够确定给定附件RA和与特定本地配对对应的中继配对令牌。在一些实施方式中,管理员控制器1002可向新附件1004提供对应信息,以促进将中继配对附件和本地配对附件识别为相同的附件。例如,如上所述,管理员控制器1002可维护用于附件所在的环境的环境模型。该环境模型可使本地附件标识符与对应附件RA相关联。该环境模型可与新的控制器1004同步,例如如上述引用的美国专利申请14/725,912中所述的。在一些实施方案中,新控制器1004可基于其与各种附件的通信来推断对应关系。类似地,新控制器1004经由过程1000获取与其的中继配对的附件可能或可能使中继配对与本地配对关联到相同的控制器。例如,管理员控制器1002可将对应的本地控制器ID与操作者RA一起提供至附件。
[0148] 在一些实施方案中,具有管理员特权的控制器可能够移除用于另一控制器的已建立的中继配对。例如,图10的新控制器1004可将用于请求移除其中继配对的消息发送至管理员控制器1002,或者管理员控制器1002可确定新控制器1004应移除其中继配对(例如,基于来自管理员用户的输入)。
[0149] 图11示出了根据本发明的实施方案的用于移除中继配对的过程1100的简化流程图。过程1100可例如通过管理员控制器1002(如上参考图10所述)与附件304(或单独地与多个附件中的每个附件,未示出)进行通信,以及与要被移除的另一个控制器1104进行通信来实现。在一些实施方案中,控制器1104可为使用过程1000作为新控制器1004被添加的控制器。管理员控制器1002和其他控制器1104之间的通信可如上所述经由控制器信使服务器340使用控制器到控制器的消息收发;管理员控制器1002和附件304之间的通信可使用本地信道或中继服务300(例如,取决于管理员控制器1002在相关时间所处的位置)。
[0150] 当管理员控制器1002确定应移除其他控制器1104与附件304的中继配对时,过程1100可在块1110处开始。这可为移除来自其他控制器1002的对附件304(以及给定环境中的其他附件)的所有访问权限的一部分,或者移除该决定可更具选择性(例如,每个附件)。在一些实施方案中,可移除中继配对,而无需移除本地配对;在其他实施方案中,移除一种类型的配对可导致移除两者。在一些实施方案中,其他控制器1104可将用于请求移除的消息发送至管理员控制器1002。在其他实施方案中,管理员控制器可经由用户界面来接收指令,以移除另一个用户(或特定控制器)。也可使用其他确定逻辑。
[0151] 在框1112处,管理员控制器1002可将请求发送至附件304,以移除其他控制器1104。该请求可例如作为对附件304的远程中继访问服务的适当特征的写入请求来实现。该请求可包括其他控制器1104的操作者RA。来可根据给定时间的可用通信信道经由本地信道或经由中继服务300来发送该请求。
[0152] 在框1114处,附件304可接收该请求。在框1116处,附件304可将其他控制器1104的操作者RA和相关联的访问令牌从其已建立的中继配对的列表移除。此后,附件304不尝试经由中继服务300与控制器1104进行通信。在一些实施方案中,与其他控制器1104的本地配对可保持,直到经由单独的请求被移除。在其他实施方案中,用于移除与特定控制器的中继器配对的请求还可导致移除与相同控制器相关联的本地配对。例如,管理员控制器1002还可向附件304发出请求以移除与其他控制器1004的本地配对作为过程1100的一部分。在框1117处,附件304可将用于确认该移除的响应发送至管理员控制器1002。在一些实施方案中,如果管理员控制器1002没有接收到响应,则管理员控制器1002可发起不同的动作,以移除中继配对(例如,重置附件或提示用户重置附件)。
[0153] 在框1118处,管理员控制器1002可将用于指示控制器1104移除其一个或多个中继配对的消息发送至其他控制器1104。该消息可包括将要被移除的中继配对所针对的附件RA的列表。在一些实施方案中,可将要被移除的中继配对所针对的附件识别为一个组。例如,如果附件RA与附件物理上驻留的本地环境的环境模型相关联,则该环境模型可具有标识符,并且管理员控制器1002可指示其他控制器1104移除与环境模型相关联的所有附件RA的中继配对。如上所述,可使用经由控制器信使服务器340的控制器到控制器消息收发。
[0154] 在框1120处,其他控制器1104可接收该消息。在框1122处,其他控制器1104可按照指示来移除附件RA和相关联的访问令牌。移除过程可导致从其他控制器1104移除有关附件的任何信息(在一些实施方案中包括本地配对)。在一些实施方案中,框1120和1122可在控制器1104中的通信守护进程中实现,使得当在框1120处接收到消息时,其自动(并且可选地对于用户透明地)发生。如果基于来自其他控制器1104的用于请求移除的消息来发起过程1100,则可省略框1118和框1120,并且控制器1104可主动移除附件RA。
[0155] 应当理解,过程1100为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤的顺序,并且可修改、合并、添加或省略步骤。在该示例中,控制器均不向身份服务器320通知该移除。由于在端点处移除了访问令牌,因此在过程1100已被执行之后,身份服务器320的存储库322中的访问令牌的记录的持续存在不能实现控制器1104和附件304之间的任何通信。在一些实施方案中,管理员控制器1002可将清理请求发送至身份服务器320,以例如通过从令牌储存库322移除令牌记录来撤销用于访问令牌的令牌记录。在一些实施方案中,例如基于被包括在如上所述的访问令牌中的截止时间戳,令牌记录可从存储库322截止,并且身份服务器320可周期性地移除其中访问令牌已截止的记录。也可使用其他技术。
[0156] 通行证服务器示例
[0157] 如上所述,中继服务300可知道通信在控制器和附件之间发生,但是可能不知道此类通信的内容。中继服务300还可具有关于与特定附件RA或附件类型相关联的流量的一些信息,例如通过如下所述来实现报告服务。在一些实施方案中,中继服务300可阻止已知或怀疑生成过多流量(或相对于中继服务300表现出其他异常或不期望的行为)的附件连接到附件信使服务器330。这可在没有中继服务300的情况下进行,该中继服务存储使附件RA与附件类型或其他附件识别信息相关联的信息。
[0158] 在一些实施方案中,通行证服务器360可用于阻止与异常行为相关联的附件。例如,当附件304请求与附件信使服务器330的连接时,附件信使服务器330可要求附件304呈现有效的通行证。附件304可从通行证服务器360获取通行证,并且将该通行证呈现给附件信使服务器330。
[0159] 图12示出了根据本发明的实施方案的用于在附件(例如,附件304)和附件信使服务器(例如,附件信使服务器330)之间建立连接的过程1200的简化流程图。过程1200的部分可由与通行证服务器360进行交互的附件304来执行,并且过程1200的部分可由与附件信使服务器330进行交互的附件304来执行。
[0160] 当附件304确定应建立与附件信使服务器330的连接时,任何时刻均可开始过程1200。在框1202处,附件304可将对通行证的请求发送至通行证服务器360。该请求可包括附件304的附件识别信息,诸如制造商、型号、固件版本等。在该示例中,该通行证请求不包括附件RA或任何操作者RA。
[0161] 在框1204处,通行证服务器360可接收该请求,并且在框1206处,通行证服务器360可确定是否允许由附件304进行访问。例如,通行证服务器360可确定附件识别信息是否对应于黑名单362中的条目(下面描述黑名单362的创建和更新)。在一些实施方案中,允许进行访问,除非附件304在黑名单362上。还可支持其他决定标准。如果在框1206处确定不允许进行访问,则可在框1208处拒绝该请求并且可结束过程1200。
[0162] 如果在框1206处确定允许进行访问,则在框1210处通行证服务器360可生成通行证。该通行证可包括当通行证被生成时的时间戳、由通行证服务器所生成的代码(例如,数字签名)、和/或所需的其他数据。在一些实施方案中,该通行证不包含特定于附件304或特定于与通行证服务器360的特定交易的任何信息。例如,可实现通行证生成过程,使得在特定时间段(例如,5分钟的粒度)内所生成的所有通行证为相同的,使得通行证不能由中继服务300链接到通行证服务器360处的特定交易。
[0163] 在框1212处,附件304可从通行证服务器360接收通行证。在框1214处,附件304可将连接请求发送至附件信使服务器330。该连接请求可包括用于附件304的附件RA和用于每个控制器的访问令牌和操作者RA,附件304将利用该令牌和操作者RA使用中继服务300来交换消息。该连接请求还可包括从通行证服务器360接收的通行证。
[0164] 在框1216处,附件信使服务330可从附件304接收连接请求。在框1218处,附件信使服务330可确定被包括在请求中的通行证是否有效。例如,附件信使服务330可将通行证发送至通行证服务器360以用于验证,或者附件信使服务330可从通行证服务器360接收可用于验证通行证的信息(例如,时间戳列表和相关联的代码)。如果在框1218处通行证无效,则附件信使服务器330可在框1220处拒绝请求,并且可结束过程1200。
[0165] 如果在框1218处通行证有效,则在框1222处,附件信使服务器330可继续建立连接。例如,附件304可能需要使用其如上所述的PKI证书和UUID来进行认证,并且由附件304在连接请求中呈现的访问令牌可由附件信使服务器330验证。假设此类操作成功完成,则可建立连接。
[0166] 应当理解,过程1200为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤的顺序,并且可修改、合并、添加或省略步骤。在一些实施方案中,例如通过经由开放连接来将对新通行证的请求发送至附件,必要的信使服务器340可要求保持连接的附件周期性地更新其通行证。该更新周期可为例如每24小时或48小时。对通行证服务器360的使用可允许排除其存在可能(例如,通过生成过多流量)损害中继服务300的功能的附件,同时避免需要具有中继服务300保留用于特定附件的附件识别信息(例如,制造商、型号等)。例如,通行证服务器360可在生成通行证(或拒绝通行证请求)时立即丢弃其所接收的任何附件识别信息。在该示例中,通行证服务器360不接收附件RA,因此附件RA不会变得与在通行证请求中提供的任何附件识别信息(甚至临时地)相关联。此外,通行证服务器360可以不将通行证与特定交易连接的方式来生成通行证(例如,多个附件可接收相同的通行证),因此中继服务器330不能将与附件信使服务器330的特定连接绑定到特定附件或附件类型。这可有助于保护用户隐私。
[0167] 报告示例
[0168] 在一些实施方案中,通行证服务器360可使用黑名单362来作出有关响应于来自附件的通行证请求是否发布通行证的决定。黑名单362可基于在中继服务300处检测到的异常活动而被动态填充。如本文所用,由附件进行的“异常活动”可包括可能对中继服务300的操作具有不利影响的任何类型的异常或不期望的活动。例如,特定附件或具有类似类型的许多附件可以非常高的速率开始发送状态改变通知,或者附件连接可变得不稳定,从而导致附件信使服务器330处的高速率的断开连接事件和重新连接事件。此类事件可为固件更改的结果,该固件更改包含在附件的特定实现中可能出现的漏洞或其他问题。
[0169] 如上所述,中继服务300的一些实施方案避免保留可由第三方使用以将特定附件识别为具有特定类型的信息。例如,如上所述,附件RA可与此类附件识别信息如制造商、型号附件位置等脱离。在一个具体示例中,证书服务器310可从附件接收数字安全证书,并且该证书可与特定制造商、型号或附件类别连接在一起。因此,该数字安全证书可能揭示有关附件的身份和/或功能的信息。然而,如上所述,证书服务器310可验证数字安全证书,然后生成不需要以任何方式与数字安全证书中的信息相关联的PKI证书和设备身份令牌(例如,UUID),或者任何相关性以此类方式进行编码,使得仅证书服务器310可对其进行解密。证书服务器310可仅保留PKI证书和UUID,以用于将来的认证操作。随后,该附件可使用PKI证书和UUID来从附件信使服务器330获取附件RA。附件RA可随机地或伪随机分配,并且可与PKI证书和相关联的UUID不相关。因此,附件的身份和/或功能可与对中继服务300内的附件的识别脱离,使得第三方不能基于与中继服务300交换的消息来推断附件识别或功能。
[0170] 尽管有这些隐私保护,但是可能需要提供一些诊断能力来跟踪针对源(例如,特定类型的附件)的异常附件行为。在一些实施方案中,图3的报告服务器370可支持诊断过程。
[0171] 图13示出了根据本发明的实施方案的诊断过程1300的简化流程图。过程1300的部分可例如在报告服务器370中实现。
[0172] 在框1302处,过程1300可检测异常活动。在一些实施方案中,可基于对中继服务日志的分析来检测异常活动。例如,当发送中继消息时,该日志可记录操作者RA和附件RA、中继消息的方向、以及消息大小。还可记录其他事件,诸如附件RA连接到附件信使服务器330时或附件RA与附件信使服务器330断开连接时,或者不成功的连接尝试。该日志不需要记录消息内容、访问令牌、或任何其他信息。框1302处的分析可包括应用统计算法来限定附件行为的基线模式,并且可将开始显著偏离基线的附件RA识别为具有异常活动。还可使用其他信息源来检测异常,诸如网络流量模式、与中继服务300中的各种服务器相关联的性能度量等。框1302处的分析可例如使用人类分析和/或在报告服务器370中实现的自动处理来执行。
[0173] 在框1304处,可识别涉及与不同操作者RA相关联的大量附件的异常活动的模式。可限定在此上下文中的“大”数量,例如至少100个不同的操作者RA与附件RA相关联的足够的附件。可基于识别相对广泛的异常的目的来选择“大”数量的准确阈值,并且还可在整个诊断过程中保护用户隐私(例如,如下所述)。对异常模式的检测可基于在报告服务器370中实现的自动化过程。在一些实施方案中,人类审查者可参与检测和/或确认异常模式。如果没有检测到异常模式或者如果检测到涉及小于阈值数量的操作者RA的异常模式,则不进行进一步的调查。
[0174] 假设要执行进一步的调查,则在框1306处,可将调查ID分配至所识别模式的异常活动。调查ID可为顺序分配或随机分配的号码等。如下所述,调查ID用于采集对针对与调查相关联的信息的请求的响应。在一些实施方案中,报告服务器370可分配调查ID。
[0175] 在框1308处,可生成调查请求消息并将其发送至与异常活动相关联的操作者RA。如上所述,在一些实施方案中,仅当操作者RA的数量超过被认为是大(例如,100个或更多)的阈值时才发起调查。该调查请求消息可使用控制器信使服务器340而被发送。该调查请求消息可包括对涉及异常模式的附件RA的附件识别信息的请求。该调查信息也可包括调查ID。在框1310处,可接收对调查请求消息的响应。下面描述用于发送调查请求消息并接收响应的具体示例。
[0176] 在一些实施方案中,在框1310处接收到的响应可仅包括调查ID和附件识别信息(例如,制造和型号、固件版本等)。附件RA和/或操作者RA不需要被包括,使得报告服务器370不使附件识别信息与附件RA或操作者RA相关联。相反,附件识别信息仅与调查ID相关联。
[0177] 在框1312处,报告服务器370(或人类审查者)可分析与特定调查ID相关联的响应,以尝试跟踪特定附件类型的异常活动(例如,特定型号的车库门开门器或运行特定固件版本的附件)。
[0178] 在框1314处,可基于框1312处的分析结果来发起后续动作。可根据特定于事件的细节诸如异常的严重程度、与特定附件类型的相关性强度等来采取各种具体的后续动作。例如,附件类型可被添加到黑名单362。除此之外或代替地,可通知跟踪异常活动的附件的制造商,这可允许制造商调查并(例如,通过固件升级)解决问题。
[0179] 图14示出了根据本发明的实施方案的调查过程1400的简化流程图。可与过程1300一起使用的过程1400可包括向控制器生成调查请求消息并接收响应。
[0180] 当报告服务器370确定调查合适时,例如作为执行上述过程1300的框1304的结果,程序1400可在框1402处开始。在框1402处,报告服务器370可选择一组操作者RA来接收调查请求消息,并且可向调查分配调查ID。该组操作者RA可为一大组(例如,如上所述的至少100个不同的操作者RA)。在一些实施方案中,可选择与异常活动模式相关联的所有操作者RA;另选地,可随机地选择操作者RA的子集。在框1404处,报告服务器370可向所选择的操作者RA发起调查请求消息。例如,报告服务器370可向每个操作者RA生成请求消息,该请求消息包括调查ID以及与操作者RA和异常活动两者相关联的一个或多个附件RA的列表。报告服务器370可向控制器信使服务器340提供请求消息。
[0181] 在框1406处,控制器信使服务器340可从报告服务器370接收用于特定操作者RA的调查请求消息。控制器信使服务器340可向与每个操作者RA相关联的一个或多个控制器(例如,控制器302)生成调查查询。对控制器302的调查查询可包括调查ID和附件RA的列表,该附件RA列表与控制器302的操作者RA、以及异常活动相关联。控制器信使服务器340可将调查查询发送至控制器302。
[0182] 在框1408处,控制器302可接收调查查询。在框1410处,控制器302可基于所接收的附件RA来识别相关附件。例如,如上所述,控制器302可存储使由中继服务300分配的附件RA与特定附件的能力和功能的模型相关联的附件模型或环境模型;该附件模型或环境模型可包括附件识别信息诸如制造商、型号、序列号、固件版本等。在框1410处,控制器302可访问与附件RA相关联的附件的所存储的信息并且检索附件识别信息。
[0183] 在框1412处,控制器302可获取用于对调查查询进行响应的用户批准。例如,控制器302可向用户呈现提示。该提示可指示中继服务300正在调查异常活动并且将希望接收关于与异常活动相关联的附件(或多个附件)的信息。该提示可(例如,基于框1410处的确定)识别所讨论的附件。如果用户拒绝,则过程1400可结束而无需将报告发送回到报告服务器370。在一些实施方案中,如果用户拒绝,则控制器302可简单地不对调查查询进行响应。
[0184] 假设用户批准,则在框1414处,控制器302可响应于调查查询来生成报告消息。该报告消息可包括在框1410处检索到的附件识别信息中的一些或全部、被包括在以及调查查询中的调查ID。该报告消息不需要包括附件RA或操作者RA。在框1416处,控制器302可将报告消息发送至控制器信使服务器340。
[0185] 在框1418处,控制器信使服务器340可从控制器302接收报告消息并可将来自报告消息的所选择的信息转发到报告服务器370。例如,控制器信使服务器340可转发调查ID和附件识别信息,但不转发用于识别控制器或操作者的任何信息。
[0186] 在框1420处,报告服务器370可收集由控制器信使服务器340转发的信息,并且可例如根据过程1300的框1310,1312,1314来执行进一步的分析和操作。应当注意,经由过程1400,报告服务器370不需要获取用于使特定附件与特定附件RA或特定控制器或操作者RA相关联的任何信息。相反,基于由控制器信使服务器340转发的信息,报告服务器370可(基于调查ID)来组合用于与异常活动相关联的附件的附件识别信息的列表,而不能够使附件识别信息的特定项目与任何控制器或操作者相关联。报告服务器370仅在涉及大量操作者RA的情况下才发起调查,这有助于防止报告服务器370在框1404处使所接收的信息与来自原始请求集的任何特定操作者RA相关联。事实上,报告服务器370不需要知道哪些操作者RA进行了响应。
[0187] 应当理解,过程1300和过程1400为示例性的,并且变型形式和修改形式为可能的。可并行执行按顺序描述的步骤,可改变步骤顺序,并且可修改、合并、添加或省略步骤。调查可按所需(例如,一天、一周、十天、一个月)时间保持开放从而等待控制器响应,并且调查ID可用于追踪哪些调查仍在开放。如果在调查关闭之后接收到对调查查询的响应,则可基于调查ID来丢弃响应。因此,在发送响应之前,控制器不需要确定调查是否仍然为开放的。此外,使用调查ID可允许同时进行不同异常模式的多次调查。在某些情况下,调查不需要采取进一步的行动。例如,报告服务器370可能没有收到足够的信息来可靠地将异常跟踪到特定类型的附件,或者甚至大量的所接收到的信息可能不会揭示与特定类型的附件的相关性。
[0188] 示例性设备架构
[0189] 图15示出了根据本发明的实施方案的计算机系统1500的简化框图。在一些实施方案中,计算机系统1500可实现本文所述的由服务器(例如,图3的中继服务300的任何服务器)正在执行的任何或所有功能、行为和能力、以及其他没有明确描述的功能、行为和能力。在一些实施方案中,计算机系统1500的其他物理实例可实现本文所述的由控制器(例如,图
3的控制器302)或附件(例如,图3的附件304)正在执行的功能、行为和能力中的任何或全部功能、行为和能力;下面描述控制器和附件具体实施的进一步的示例。
[0190] 计算机系统1500可包括处理子系统1502、存储子系统1504、用户界面1506、和网络接口1508。计算机系统1500还可包括其他部件(未明确示出),诸如电池、电力控制器、和可操作以提供各种增强能力的其他部件。在一些(例如,针对控制器的)实施方案中,计算机系统1500可在消费电子设备,诸如台式或膝上型计算机、平板电脑、智能电话、其他移动电话、可穿戴设备、媒体设备、家用电器等中实现。计算机系统1500还可在大型架构诸如可扩展服务器系统或服务器场中实现(例如,用于中继服务300),该大型架构可包括能够处理来自客户端设备(包括控制器和/或附件)的大量请求并对其进行响应的许多互连处理器、存储系统和接口。
[0191] 存储子系统1504可例如使用磁盘、闪存存储器或任何其他非暂态存储介质或介质的组合来实现,并且可包括易失性和/或非易失性存储介质。在一些实施方案中,存储子系统1504可存储要由处理子系统1502执行的一个或多个应用程序和/或操作系统程序,包括用于实现本文描述为由中继服务300的任何服务器执行的任何或所有操作的程序,以及与此类操作相关联的数据(例如,令牌存储库322和其他所存储的数据集)。在计算机系统1500实现服务器的情况下,存储子系统1504可使用可管理大容量数据访问请求的网络存储技术和/或其他技术来实现。
[0192] 用户界面1506可包括输入设备,诸如触摸板触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克等;以及输出设备诸如视频屏幕、指示灯、扬声器、机接口等,连同支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)。在一些实施方案中,用户可操作用户界面1506的输入设备以调用计算机系统1500的功能,并且可经由用户界面1506的输出设备来查看和/或收听来自计算机系统1500的输出。在计算机系统1500实现服务器的情况下,用户接口1506可相对于处理子系统1502和/或存储子系统1504远程定位。
[0193] 可使用一个或多个集成电路来实现处理子系统1502,例如一个或多个单核或多核微处理器微控制器,这些微处理器或微控制器的示例在本领域中是已知的。在操作中,处理子系统1502可控制处理子系统1500的操作。在各种实施方案中,处理子系统1502可响应于程序代码来执行各种程序,并且可维护多个同时执行的程序或过程。在任何给定时间,待执行的一些或全部程序代码可驻留在处理子系统1502和/或存储介质诸如存储子系统1504中。
[0194] 通过合适的编程,处理子系统1502可为计算机系统1500提供各种功能。例如,在计算机系统1500实现中继服务300的服务器的情况下,处理子系统1502可实现上文所述的由证书服务器310、身份服务器320、附件信使服务器330、控制器信使服务340、一个或多个消息传送服务器350、通行证服务器360和/或报告服务器370中的任一者或全部实现的各种过程(或其部分)。处理子系统1502还可执行其他程序来控制计算机系统1500的其他功能,包括可被存储在存储子系统1504中的程序。
[0195] 网络通信接口1508可为计算机系统1500提供语音和/或数据通信能力。在一些实施方案中,网络通信接口1508可包括用于(例如,使用数据网络技术诸如3G、4G/LTE、IEEE 802.11系列标准(例如,Wi-Fi网络技术)、或其他移动通信技术或者其任何组合)访问无线数据网络的射频(RF)收发器部件,或者用于(例如,使用蓝牙和/或蓝牙LE标准、NFC等)短距离无线通信的部件、和/或其他部件。在一些实施方案中,除了或代替无线接口,网络通信接口1508可提供有线网络连接性(例如,以太网)。网络通信接口1508可使用硬件部件(例如,驱动电路、天线、调制器/解调器、编码器/解码器、以及其他模拟信号处理电路和/或数字信号处理电路)与软件组建的组合来实现。在一些实施方案中,网络通信接口1508可使用相同的传输手段或不同的传输手段同时支持多个通信信道。
[0196] 应当理解,计算机系统1500为示例性的,并且变型形式和修改形式为可能的。包括服务器、控制器设备和/或附件的计算机系统可具有本文中未描述的功能(例如,控制器设备还可经由蜂窝电话网络来提供语音通信;与用户进行交互以经由无线网络和/或本地存储的内容提供个人信息、玩游戏、访问内容的能力;等等),并且这些设备和服务器的具体实施可包括适合于此类功能的部件。
[0197] 此外,尽管本文参考特定块描述了计算机系统,但应当理解,定义这些块是为了描述的方便,而并非旨在暗示部件的特定物理布置。此外,块不必对应于物理上不同的部件。例如通过对处理器进行编程或提供适当的控制电路并且各个块根据获取初始配置的方式可为可重新配置的或不可重新配置的,块可被配置为执行各种操作。可在包括使用电路和软件的任何组合实现的电子设备的各种装置中实现本发明的实施方案。
[0198] 本文所述的控制器和附件可在可具有通常的常规设计的电子设备中实现。此类设备可适于使用支持命令控制操作的统一附件协议进行通信,通过这个协议,控制器(第一电子设备)可控制附件(第二电子设备)的操作。在一些情况下,例如在如上所述的代理的情况下,设备可将控制器和附件的各个特征或方面组合。
[0199] 图16示出了根据本发明的实施方案的控制器1600的简化框图。控制器1600可实现本文所述的控制器功能、行为和能力中的任何或全部、以及未明确描述的其他功能、行为和能力。控制器1600可包括处理子系统1610、存储设备1612、用户界面1614、通信接口1616、安全存储模块1618、和密码逻辑模块1620。控制器1600还可包括其他部件(未明确示出),诸如电池、电力控制器、和可操作以提供各种增强能力的其他部件。在各种实施方案中,控制器1600可在台式计算机、膝上型计算机、平板电脑、智能电话、其他移动电话、可穿戴计算设备、或具有任何期望形状因数的其他系统中实现。此外,如上所述,控制器1600可部分地在基站中实现,并部分地在与基站通信并提供用户接口的移动单元中实现。
[0200] 存储设备1612可例如使用磁盘、闪存存储器或任何其他非暂态存储介质或介质的组合来实现,并且可包括易失性和/或非易失性介质。在一些实施方案中,存储设备1612可存储将由处理子系统1610执行的一个或多个应用程序和/或操作系统程序,包括用于实现如由控制器执行的上述各种操作的程序。例如,存储设备1612可存储可读取附件描述记录并基于其中的信息来生成用于控制该附件的图形用户界面的统一控制器应用程序(例如,如上文引用的美国申请14/614,914中所述的)。存储设备1612还可存储可执行以与中继服务进行通信的程序代码,例如如上所述。在一些实施方案中,本文所述的控制器功能的部分(或全部)可在操作系统程序而非应用程序中实现。在一些实施方案中,存储设备1612还可存储针对特定附件或特定类别的附件(例如,用于管理IP相机附件的IP相机应用程序或用于与门锁附件进行交互的安全应用程序)设计的应用程序。
[0201] 用户界面1614可包括输入设备,诸如触摸板、触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克风等;以及输出设备诸如视频屏幕、指示灯、扬声器、耳机接口等,连同支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)。用户可操作用户界面1614的输入设备以调用控制器1600的功能,并可经由用户界面1614的输出设备来查看和/或收听来自控制器1600的输出。
[0202] 处理子系统1610可被实现为一个或多个集成电路,例如一个或多个单核或多核微处理器或微控制器,其示例在本领域中为已知的。在操作中,处理系统1610可控制控制器1600的操作。在各种实施方案中,处理子系统1610可响应于程序代码来执行各种程序,并且可维护多个同时执行的程序或过程。在任何给定时间,待执行的一些或全部程序代码可驻留在处理子系统1610和/或存储介质诸如存储设备1612中。
[0203] 通过合适的编程,处理子系统1610可为控制器1600提供各种功能。例如,在一些实施方案中,处理子系统1610可实现如由控制器实现的上述各种过程(或其部分)。处理子系统1610还可执行其他程序来控制控制器1600的其他功能,包括可被存储在存储设备1612中的应用程序。在一些实施方案中,这些应用程序可例如通过生成待发送至附件的消息和/或通过从附件接收响应与附件进行交互。此类交互可由附件管理守护进程和/或其他操作系统进程来促进,例如如上所述,并且可包括经由如上所述的中继服务来与附件进行通信。
[0204] 通信接口1616可为控制器1600提供语音和/或数据通信能力。在一些实施方案中,通信接口1616可包括用于访问无线语音和/或数据网络(例如,使用蜂窝电话技术、数据网络技术诸如3G、4G/LTE、Wi-Fi、其他IEEE 802.11系列标准)、或其他移动通信技术、或它们的任何组合)的射频(RF)收发器部件、用于短范围无线通信(例如,使用蓝牙标准和/或蓝牙LE标准、NFC等)的部件、和/或其他部件。在一些实施方案中,除了或代替无线接口,通信接口1616可提供有线网络连接性(例如,以太网)。通信接口1616可使用硬件部件(例如,驱动电路、天线、调制器/解调器、编码器/解码器、以及其他模拟信号处理电路和/或数字信号处理电路)与软件组建的组合来实现。在一些实施方案中,通信接口1616可使用相同的传输手段或不同的传输手段同时或在不同时间支持多个通信信道。因此,例如控制器1600可在某些时间经由本地信道来与附件进行通信,并且在其他时间经由中继服务来与附件进行通信。
[0205] 安全存储模块1618可为可安全地存储用于控制器1600的密码信息的集成电路等等。可被存储在安全存储模块1618内的信息的示例包括控制器的长期公钥和密钥1622(LTPKC,LTSKC)、本地配对的列表1624(例如,查找表,其将本地附件标识符映射到用于已完成与控制器1600的本地配对设置或配对添加过程的附件的附件长期公钥(LTPKA),例如如上所述)、以及中继配对的列表1626(例如,用于已与控制器1600建立中继配对的附件的附件RA和相关联的访问令牌,例如如上所述)。在一些实施方案中,可存储配对信息,使得在已建立与附件的本地配对和中继配对两者的情况下,本地配对1624被映射到对应的中继配对1626。
[0206] 在一些实施方案中,密码操作可已在与安全存储模块1618进行通信的密码逻辑模块1620中实现。在物理上,密码逻辑模块1620可根据需要在具有安全存储模块1618的相同集成电路或不同集成电路(例如,处理子系统1610中的处理器)中实现。密码逻辑模块1620可包括实现或支持控制器1600的密码操作的各种逻辑电路(根据需要为固定的或可编程的),包括上述任何或所有的密码操作。安全存储模块1618和/或密码逻辑模块1620对于控制器1600的其余部分可表现为“黑盒”。因此,例如通信接口1616可以加密形式接收其不能解密的消息,并且可简单地将消息传送至处理子系统1610。处理子系统1610也可能无法对消息进行解密,但其可将消息识别为经加密的并将其传送至密码逻辑模块1620。密码逻辑模块1620可对消息进行解密(例如,使用从安全存储模块1618提取的信息)并确定哪些信息要返回到处理子系统1610。因此,某些信息可仅在安全存储模块1618和密码逻辑模块1620内可用。如果安全存储模块1618和密码逻辑模块1620在仅从内部安全储存库执行代码的单个集成电路上实现,则这可能使对信息的提取非常困难,从而可提供高度的安全性。其他具体实施也为可能的。
[0207] 图17示出了根据本发明的实施方案的附件1700的简化框图。附件1700可实现本文所述的附件功能、行为和能力中的任何或全部、以及未明确描述的其他功能、行为和能力。附件1700可包括存储设备1728、处理子系统1730、用户界面1732、特定于附件的硬件1734、通信接口1736、安全存储模块1738、和密码逻辑模块1740。附件1700还可包括其他部件(未明确示出),诸如电池、电力控制器、和可操作以提供各种增强能力的其他部件。
[0208] 附件1700表示可由控制器诸如控制器1600操作的一大类附件,并且此类附件在能力、复杂性和形状因数方面可能有很大不同。各种附件可包括图17中未明确示出的部件,包括但不限于具有固定或可移除存储介质的存储设备(磁盘、闪存存储器等);视频屏幕、扬声器、或用于连接到外部音频/视频设备的端口;相机部件,诸如镜头、图像传感器、和用于该图像传感器的控件(例如,孔径,缩放,曝光时间、速率等);用于记录音频的麦克风(单独地或与视频录制结合)等。
[0209] 存储设备1728可例如使用磁盘、闪存存储器或任何其他非暂态存储介质或介质的组合来实现,并且可包括易失性和/或非易失性介质。在一些实施方案中,存储设备1728可存储将由处理子系统1730执行的一个或多个程序(例如,固件)该一个或多个程序包括用于实现如由附件执行的上文所述的各种操作以及与特定附件行为相关的操作的程序。存储设备1728还可存储可例如在设备发现期间被提供至控制器设备的附件对象或附件定义记录,如上文引用的美国专利申请14/614,914中所述的。存储设备1728还可存储附件状态信息和可在附件1700的操作期间使用的任何其他数据。存储设备1728还可存储可执行以与中继服务进行通信的程序代码,例如如上所述。
[0210] 处理子系统1730可包括例如执行程序代码以执行与附件1700相关联的各种功能的一个或多个单核或多核微处理器和/或微控制器。例如,处理子系统1730可实现如由附件实现的上述各种过程(或其部分),例如通过执行被存储在存储设备1728中的程序代码来实现。处理子系统1730还可执行其他程序,以控制附件1730的其他功能。在一些情况下,由处理子系统1730执行的程序可例如通过生成要发送至控制器的消息和/或从控制器接收消息来与控制器(例如,控制器1600)进行交互。一些情况下,可使用如上所述的中继服务来发送和/或接收消息。
[0211] 用户界面1732可包括用户可操作输入设备,诸如触摸板、触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克风等;以及输出设备诸如视频屏幕、指示灯、扬声器、耳机接口等,连同支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)根据特定附件1700的具体实施,用户可操作用户界面1732的输入设备以调用附件1700的功能,并且可经由用户界面1732的输出设备来查看和/或收听来自附件1700的输出。一些附件可仅提供最小用户界面或根本不提供用户界面。在附件不具有用户界面的情况下,用户仍可使用控制器(例如,控制器1600)与附件交互。
[0212] 特定于附件的硬件1734可包括可存在于附件1700中以启用其功能的任何其他部件。例如,在各种实施方案中,特定于附件的硬件1734可包括使用固定或可移除存储介质的一个或多个存储设备;GPS接收机;电源和/或电源管理电路;相机;麦克风;一个或多个致动器;控制开关;环境传感器(例如,温度传感器、压力传感器加速度计、化学传感器等)等等。应当理解,可通过提供适当的特定于附件的硬件1734来支持任何类型的附件功能,并且特定于附件的硬件可包括机械部件以及电部件或电子部件。
[0213] 通信接口1736可为附件1700提供语音和/或数据通信能力。在一些实施方案中,通信接口1736可包括用于访问无线语音和/或数据网络(例如,使用蜂窝电话技术、数据网络技术诸如3G、4G/LTE、Wi-Fi、其他IEEE 802.11系列标准)、或其他移动通信技术、或它们的任何组合)的射频(RF)收发器部件、用于短范围无线通信(例如,使用蓝牙标准和/或蓝牙LE标准、NFC等)的部件、和/或其他部件。在一些实施方案中,除了或代替无线接口,通信接口1736可提供有线网络连接性(例如,以太网)。通信接口1736可使用硬件部件(例如,驱动电路、天线、调制器/解调器、编码器/解码器、以及其他模拟信号处理电路和/或数字信号处理电路)与软件部件的组合来实现。在一些实施方案中,通信接口1736可使用相同的传输手段或不同的传输手段同时或在不同的时间支持多个通信信道。因此,例如附件1700可在某些时间经由本地信道与控制器进行通信,并且在其他时间经由中继服务来与控制器进行通信。
[0214] 安全存储模块1738可为可安全地存储用于附件1700的密码信息的集成电路等等。可被存储在安全存储模块1738内的信息的示例包括附件的长期公钥和密钥1742(LTPKA,LTSKA)、本地配对的列表1744(例如,查找表将本地控制器标识符映射到用于已完成与附件
1700的本地配对设置或配对添加过程的控制器的控制器长期公钥(LTPKC),例如如上所述)、以及中继配对的列表1746(例如,用于已与附件1700建立中继配对的控制器的控制器RA和相关联的访问令牌,例如如上所述)。在一些实施方案中,可存储配对信息,使得在已建立与控制器的本地配对和中继配对两者的情况下,本地配对1744被映射到对应中继配对
1746。在一些实施方案中,可将安全存储模块4038省略;可将密钥和配对的控制器的列表存储在存储设备1728中。
[0215] 在一些实施方案中,密码操作可在与安全存储模块1738进行通信的密码逻辑模块1740中实现。在物理上,密码逻辑模块1740可根据需要在不同集成电路(例如,处理子系统
1730中的处理器)或具有安全存储模块1738的相同集成电路中实现。密码逻辑模块1740可包括实现或支持附件1700的密码操作的各种逻辑电路(根据需要为固定的或可编程的),包括上述任何或所有密码操作。安全存储模块1738和/或密码逻辑模块1740对于附件1700的其余部分可表现为“黑盒”。因此,例如通信接口1736可以加密形式接收其不能解密的消息,并且可简单地将消息传送至处理子系统1730。处理子系统1730也可能无法对消息进行解密,但其可将消息识别为经加密的并将其传送至密码逻辑模块1740。密码逻辑模块1740可对消息进行解密(例如,使用从安全存储模块1738提取的信息)并确定哪些信息要返回到处理子系统1730。因此,某些信息可仅在安全存储模块1738和密码逻辑模块1740内可用。如果安全存储模块1738和密码逻辑模块1740在仅从内部安全储存库执行代码的单个集成电路上实现,则这可能使对信息的提取非常困难,从而可提供高度的安全性。其他具体实施也为可能的。
[0216] 附件1700可为与控制器1600进行交互的任何电子装置。在一些实施方案中,控制器1600可通过如上所述的附件1700的操作来提供远程控制。例如,控制器1600可为附件1700提供远程用户界面,该远程用户界面可包括输入和输出控件(例如,用于显示从附件
1700获取的当前状态信息的显示屏和用于允许状态信息的改变的输入控件诸如触摸屏覆盖件)。在各种实施方案中,控制器1600可控制附件1700的任何功能并且还可经由本地信道或中继服务来从附件1700接收数据。
[0217] 应当理解,本文所述的系统配置和部件为示例性的,并且变型形式和修改形式为可能的。应当理解,控制器1600的具体实施可执行上文所述的由控制器执行的所有操作,并且附件1700的具体实施可执行上文所述的由附件执行的任何或所有操作。代理、网桥、隧道、或协调器可按需要使用相同的硬件或不同的硬件来组合控制器1600和附件1700的部件。控制器和/或附件可能具有本文并未明确描述的其他能力(例如,移动电话、全球定位系统(GPS)、宽带数据通信、互联网连接等)。根据具体实施,这些设备可进行互操作,以提供由任一(或两个)设备支持的任何功能性或提供在每个设备中部分地实现的功能性。在一些实施方案中,特定附件可具有无法经由特定控制器而访问或调用但可经由另一控制器或通过直接与附件进行交互而访问的一些功能。
[0218] 此外,尽管本文参考特定块描述了控制器和附件,但应当理解,定义这些块是为了描述的方便,而并非旨在暗示部件的特定物理布置。此外,块不必对应于物理上不同的部件。例如通过对处理器进行编程或提供适当的控制电路并且各个块根据获取初始配置的方式可为可重新配置的或不可重新配置的,块可被配置为执行各种操作。可在包括使用电路和软件的任何组合实现的电子设备的各种装置中实现本发明的实施方案。
[0219] 另外的实施方案
[0220] 虽然已结合具体实施方案对本发明进行了描述,但本领域的技术人员将认识到,许多修改形式为可能的。如本文所述的中继服务可允许任何数量的控制器(属于任何数量的用户)与任何数量的附件进行通信。在一些实施方案中,控制器可访问环境模型,该环境模型包含关于控制器经常存在的环境(例如,用户的家)内的一组附件的信息。当用户添加附件时,该环境模型可由例如管理员控制器构建。在一些实施方案中,该环境模型可使附件RA和本地附件标识符与用于存在于该环境中的特定附件的识别信息(例如,制造商、型号、序列号、固件版本、用户易懂的名称等)相关联。该控制器可使用该模型来向环境中的各种附件呈现直观的界面,从而使用户不需要知道关于附件RA或本地附件标识符的任何内容。该界面还可与控制器当前是存在于本地环境中还是不在本地环境中无关,或者与是经由本地信道还是中继服务与特定附件进行通信无关。为了促进操作诸如添加和移除中继配对(或本地配对),控制器可呈现用于允许用户与环境模型作为整体进行交互的界面。例如,用户可指示控制器在另一控制器(或另一个用户账户)与环境模型或环境模型的某些部分(例如,由该模型定义的特定房间中的附件)之间添加中继配对。该控制器可将其解释为在用户账户与在环境模型(或其一部分)中表示的每个附件之间添加中继配对的指令。因此,结合上述过程1000,该控制器可自动生成对新控制器的同意用于该环境模型(或其一部分)中的每个附件RA的中继配对的请求。应当注意,与中继服务300的通信可仅包括附件RA的列表,并且中继服务300不需要具有对可被包括在环境模型中的任何其他信息的访问权限。中继服务300也不需要知道其接收到的附件RA的列表是否完全列出特定环境中的所有附件。在一些实施方案中,可在被授权访问环境模型的控制器之间共享该环境模型,例如使用上文引用的美国专利申请14/725,912中描述的同步操作,并且经由管理员控制器(例如,经由上述过程1000)获取中继配对的控制器可使用共享环境模型来使附件RA与环境中的特定附件相关联。
[0221] 上述实施方案允许中继服务在不保留关于可由特定控制器控制的附件的类型和/或功能的任何信息的情况下进行操作。如上所述,该中继服务可以某方式向每个附件分配中继别名,使得中继别名不揭示关于附件的身份(例如,制造、制造商)、功能(例如,门锁、灯泡、箱等)、或物理位置(包括环境内的相对位置,诸如特定房间、以及绝对地理位置)的信息。因此,即使在未授权方成功从上述中继服务300获取信息的情况下,该信息也将受限。例如,可能从令牌储存库322确定特定操作者RA可控制多少附件,但不确定这些附件中的任一附件实际做什么或者可能在哪里找到它们。提供了进一步的安全性,因为在将消息发送至附件之前,控制器可能需要利用中继服务300进行认证,因为控制器仅在具有用于附件RA的有效访问令牌的情况下才能将消息发送至附件(并且反之亦然),并且因为控制器和附件可独立于中继服务300来建立端到端加密。
[0222] 从中继服务的度看被视为“端点附件”的附件可在某些情况下为能够将消息中继到本地环境中的其他附件的代理,例如如上文引用的美国专利申请14/725,891中所述的。因此,例如低功率附件不需要维持与附件信使服务器的连接;本地环境中的具有低功率附件的代理可维持与中继服务的连接,并且可根据需要本地连接到低功率附件以传送从中继服务接收的任何消息。
[0223] 如上所述,访问令牌可在其被创建时设置到期日期。在一些实施方案中,该到期日期可默认为标准值(例如,创建之后的1周或1个月)。在一些实施方案中,创建访问令牌的用户(例如,管理员用户)可为令牌指定到期日期(例如,向代管房屋的人授予时间有限的访问权限等)。验证该访问令牌可包括检查到期日期,并且如果该日期已过去,则使该令牌无效。
[0224] 在一些实施方案中,由中继服务提供的各种服务器和操作可通过公共寻址方案来访问。例如,来自附件的所有通信可作为寻址到单个互联网域名(例如,relay-service.service-provider-name.com)的HTTP请求而被发送;该消息可为适当的服务器指定相对URL(例如,可使用对相对URL“/id”的GET请求来获取附件RA,可使用对相对URL“/connect”的POST请求来建立与附件信使服务器的连接,等等)。
[0225] 可使用专用部件和/或可编程处理器和/或其他可编程设备的任意组合来实现本文所述的各种特征,例如方法、装置、计算机可读介质等。本文所述的各种过程可以任何组合方式在相同的处理器或不同的处理器上实现。在部件被描述为被配置为执行某些操作的情况下,可例如通过设计电子电路以执行操作、通过对可编程电子电路(诸如微处理器)进行编程以执行操作、或它们的任何组合来实现此类配置。另外,尽管上述实施方案可能参考具体硬件部件和软件部件,但本领域的技术人员应当理解,也可使用硬件部件和/或软件部件的不同组合,并且被描述为在硬件中实现的特定操作也可能在软件中被实现,或者或反之亦然。
[0226] 结合本文所述的各种特征的计算机程序可被编码并被存储在各种计算机可读存储介质上;合适的介质包括磁盘或磁带、光学存储介质(诸如光盘(CD)或DVD(数字多功能光盘))、闪存存储器、以及其他非暂态介质。可将利用程序代码编码的计算机可读介质与兼容的电子设备封装在一起,或者该程序代码可与电子设备分开提供(例如,经由互联网下载或作为单独封装的计算机可读存储介质)。
[0227] 因此,尽管已结合具体实施方案描述了本发明,但应当理解,本发明旨在覆盖以下权利要求范围内的所有修改形式和等同形式。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈