控制器和附件之间的安全无线通信的制作方法

文档序号:11709956阅读:254来源:国知局
控制器和附件之间的安全无线通信的制作方法与工艺

相关申请的交叉引用

本申请要求于2016年1月8日提交的美国临时申请62/276,809和于2016年6月12日提交的美国临时申请62/348,989的权益,其公开内容以引用方式并入本文。

本申请也与以下美国专利申请相关:2015年2月5日提交的申请14/614,914(p22245us1);2015年5月29日提交的申请14/725,891(p23534us1);以及2015年5月29日提交的申请14/725,912(p23535us1)。这些申请的公开内容全文以引用方式并入本文。



背景技术:

本公开整体涉及用于控制附件的遥控系统,并具体地涉及控制器和附件之间的安全无线通信。

电子设备在多种应用中变得越来越普及。移动电话、平板电脑、家庭娱乐系统等仅仅是用户经常与之互动的电子设备中的一些。

正变得越来越流行的另一类电子设备包括各种电子可控“附件”设备,诸如恒温器、照明设备、家用电器等。用户想要使用移动设备等来轻松方便地控制这些设备并使其自动操作。

同时可以理解,用户会对遥控附件设备的安全隐患产生担忧。例如,存在的担心是,未授权控制器设备可能会监控或拦截授权设备和附件(诸如门锁)之间的通信。未授权设备也许能够使用被监控或拦截到的通信来以不期望的方式操作附件。



技术实现要素:

本发明的某些实施方案涉及在控制器设备(或“控制器”)和附件设备(或“附件”)之间提供安全无线通信。在一些实施方案中,附件可以暴露出属性数据库,该属性数据库定义了表示附件功能各个方面的服务和特征,并且控制器设备可通过写入特征来调用附件功能。例如,附件可提供具有锁定状态特征的门锁服务,该锁定状态特征可具有布尔(真/假)值。控制器可通过向附件发送有效指令以将所述值真(或假)写入锁定状态特征来将门锁定(或解锁);附件可通过操作物理锁定机制以将所述门锁定(或解锁),并且更新其数据库中的锁定状态特征的值来响应所述指令。

可实现各种安全措施,以允许附件将来自授权控制器的有效写入指令(这应当导致状态变化)与无效写入指令(这应当被忽略)进行区分。例如,授权控制器可与附件建立配对并且执行相关的配对验证过程,以对在附件与控制器之间交换的消息进行认证和加密,从而允许附件来验证源自授权控制器的特定写入指令。例如,控制器可使用只有所述附件和所述控制器才知道的密码密钥来将待写入特征值加密,并且这可提供一定程度的安全性。

然而,如果属性数据库被暴露,那么未授权设备(本文中称为“中间人”或“mitm”)或许能够确定控制器正在写入具体特征;即使在不知道哪个值正被写入的情况下,mitm也或许能够使用其具有的信息来操作附件。例如,mitm可能会将写入请求重新定向到除授权控制器指定的目标特征之外的一个特征,或者mitm或许能够延迟写入请求的递送。

因此,本发明的一些实施方案提供了可用于针对未授权设备隐藏与属性数据库有关的至少一些信息的技术。例如,数据库中以明文(即,无加密)传送的部分可受到限制,以减少暴露的信息量。在一些实施方案中,属性数据库中以明文传送的部分可限于例如每个服务和特征的“实例标识符”。另外,可将关于所述服务和所述特征的“敏感”信息以加密形式提供到授权控制器。在一些实施方案中,该“敏感”信息可包括一些或全部特征的值以及所选择的特征描述符(例如,可以指示出该特征表示附件状态的哪一方面的类型描述符)。这可使得暴露于未授权控制器的附件相关信息量减少,由此使得未授权控制器更难在附件上执行操作。

一些实施方案可提供呈安全读取步骤和/或写入步骤形式的附加安全性,其中正被读取或写入的“目标”特征的标识符(以及在安全写入步骤情况下的新值)包括在加密并签名的数据块中,并且其中附件返回包括读取数据的加密且签名的数据块(在安全读取步骤的情况下)和可用于确认操作已执行的附加信息。加密和/或签名的数据块可使用只有所述控制器和所述附件才知道的密钥(例如,对验证会话的会话密钥,如下所述)来加密和/或签名。将目标特征的标识符加密可使得未授权设备更难将请求重新导向到一个不同的特征,并且将正被读取或写入的数据加密可防止未授权设备获得关于附件状态的信息。这使得未授权设备更不可能利用它碰巧拦截的任何通信。另外,从附件接收签名确认可允许控制器检测到存在的问题,例如,通信尚未被接收或对应操作未及时执行。这允许控制器采取补救措施,诸如再次尝试通信或将此问题告知用户。

安全写入步骤的一个示例可为“定时”写入步骤。在定时写入步骤中,控制器发送第一指令(例如,“写入数据”指令),该第一指令包括将作为加密有效载荷而写入的数据。可由附件通过向控制器发送第一响应来确定该指令的接收。控制器随后可发送第二指令(例如,“执行写入”指令)以指出附件应当使用先前发送的数据来执行写入操作。在接收到第二指令之前,附件不向目标特征写入任何数据。响应于接收到第二指令,附件可执行写入操作,并向控制器发送第二响应以确认完成操作(或指示出现错误)。在一些实施方案中,控制器可在第一指令中包括“生存时间”参数,该参数可用于定义写入数据存留的时间,或者可利用生存时间参数来对附件进行编程。如果附件未在生存时间截止之前接收到第二指令,则附件可忽略第二指令,并且可用错误消息作出响应。在一些实施方案中,控制器也可能要求附件在控制器超时期限内响应第一指令;如果附件未作出回应,则控制器可不再发送第二指令。

以下具体实施方式将提供对本发明的实质和优点的进一步理解。

附图说明

图1示出了根据本发明的实施方案的家庭环境。

图2示出了根据本发明的实施方案的网络配置。

图3示出了根据本发明的实施方案的gatt数据库的示例。

图4示出了根据本发明的实施方案的用于在控制器与附件之间执行发现和连接操作的过程的流程图。

图5示出了根据本发明的实施方案的用于执行签名读取步骤的过程的流程图。

图6示出了根据本发明的实施方案的用于执行安全写入步骤的过程的流程图。

图7示出了根据本发明的实施方案的用于定时写入步骤的过程的流程图。

图8示出了根据本发明的实施方案,实施用于定时写入步骤的高速缓存数据指令的过程的流程图。

图9示出了根据本发明的实施方案,实施用于定时写入步骤的执行写入指令的过程的流程图。

图10示出了根据本发明的实施方案,实施用于定时写入步骤的高速缓存数据指令的过程的流程图。

图11示出了根据本发明的实施方案,实施用于定时写入步骤的执行写入指令的过程的流程图。

图12a和图12b示出了根据本发明的实施方案的用于经由隧道在控制器与附件之间建立通信的过程的流程图。

图13a和图13b示出了根据本发明的实施方案的配对恢复过程的流程图。

图14示出了根据本发明的实施方案的控制器的简化框图。

图15示出了根据本发明的实施方案的附件的简化框图。

具体实施方式

示例性环境

图1示出了根据本发明的实施方案的家庭环境100。家庭环境100包括控制器102,该控制器可与位于该环境中的各种附件设备(也称为附件)通信。控制器102可包括例如台式计算机、膝上型计算机、平板电脑、智能电话、可穿戴计算设备、个人数字助理,或能够向附件传送命令控制消息(例如,如上文提及的美国申请14/614,914中所描述)并且呈现用户界面以允许用户指示出对附件的期望操作的任何其他计算设备或设备组。在一些实施方案中,控制器102可使用多个分立的设备来实现。例如,可以存在一个基站以及一个或多个移动遥控站(例如,手持式或可穿戴设备诸如移动电话、平板电脑、智能手表、眼镜等),其中基站与附件通信,并且可安装在环境100中的固定位置处,而移动遥控站提供了用户界面,并且与基站通信以实现对附件的控制。在一些实施方案中,基站可如下所述充当协调器或代理。

可对任何类型的附件设备进行控制。附件设备的示例包括门锁104、车库门系统106、灯具108、安保摄像机110和恒温器112。在某些情况下,控制器102可与附件直接通信;例如,图中示出控制器102与门锁104和车库门系统106直接通信。在其他情况下,控制器102可经由中间体进行通信。例如,图中示出控制器102经由无线网络接入点114与位于由接入点114提供的无线网络上的附件108,110,112通信。如上所述,在一些实施方案中,控制器102可包括基站,并且基站功能可集成到接入点114中,或集成到待控制的附件之一(例如,恒温器112)中。另一种类型的中间体可为协调器116,该协调器可将控制器的消息中继到附件,并且还可实现各种控制逻辑,以自动化或优化与附件发生的交互作用;下文描述了多个示例。

可使用各种通信传输手段以及传输手段的组合,并且不同的传输手段可用于不同的设备。例如,一些无线传输手段诸如由蓝牙sig发布的经典或智能(或低功耗)通信协议和标准(本文中称为“蓝牙”和“蓝牙le”)可支持设备之间在有限范围内的点对点直接通信。由wi-fi联盟(wi-fialliance)发布的遵从网络标准和协议的其他无线传输手段,诸如无线网络(本文中称为“wi-fi网络”),可定义具有在网络上的不同设备之间路由通信的中央接入点的无线网络。另外,虽然示出了无线通信传输手段,但也可为一些或所有附件提供有线传输手段。例如,灯泡108可通过有线连接而连接到接入点114,并且控制器102可通过向接入点114无线地发送消息而与灯泡108通信,该接入点可经由有线连接将消息递送到灯泡108。又如,协调器116可如图所示经由有线连接(如果需要,该连接可以是无线的)而连接到接入点114,并且控制器102可经由接入点114通过向协调器116发送消息而与附件诸如灯泡108通信;协调器116可经由接入点114,或经由另一信道诸如蓝牙le信道而与灯泡108通信。有线通信和无线通信的其他组合也是可能的。

另外,虽然示出了一个控制器102,但家庭环境中可存在多个控制器设备。例如,该家庭中所居住的每个人可拥有他或她自己的一个或多个便携式设备,这些便携式设备可充当附件104至112中的一些或全部的控制器。不同的控制器设备可被配置为与附件的不同子集通信;例如,可阻止子女的控制器修改恒温器112上的设置,而允许父母的控制器设备修改该设置。此类许可或特权可使用例如上文引用的美国申请14/725,891中所描述的技术来配置和控制。

在一些实施方案中,统一附件协议(“uap”)可有助于控制器102与一个或多个附件104至112的通信。该协议可提供一种简单且可扩展的框架,该框架可将附件作为服务的集合来建模,其中每个服务被定义为一组特征,每个特征在任何给定时间具有一个定义值。各种特征可表示附件状态的各个方面。例如,就恒温器112而言,特征可包括电力(接通或断开)、当前温度和目标温度。附件的这组服务和特征可表示为附件的属性数据库,并且附件可使属性数据库的全部或一部分受到给定控制器的控制。在一些实施方案中,属性数据库呈现给控制器和/或由控制器访问的格式可取决于传输手段,同时符合相同的基础附件模型。基于服务和特征的附件模型的示例描述于上文引用的美国申请14/614,914中。

协议还可定义控制器102的消息格式,以向附件112(或其他附件)发送命令控制消息(请求),并且可定义附件112的消息格式,以向控制器102发送响应消息。命令控制消息可允许控制器102询问附件特征的当前状态,并且在某些情况下修改该特征(例如,修改电力特征可将附件断开或接通)。因此,不管附件的功能或制造商是怎样的,都可通过发送适当的消息来控制任何类型的附件。附件的消息格式可以是统一的。消息格式的示例描述于上文引用的美国申请14/614,914中。在一些实施方案中,消息格式可取决于传输手段,例如,取决于如何针对特定传输手段来表示属性数据库。例如,在采用蓝牙le传输协议的情况下,属性数据库格式可以利用蓝牙le规范中所定义的通用属性(gatt)简档。在采用基于互联网协议(ip)栈的传输手段(例如,wi-fi传输)的情况下,属性数据库可使用标记诸如json(javascript对象表示法(javascriptobjectnotation))来表示;表示属性数据库中的全部或一部分的json对象可在附件与控制器之间使用基于ip的协议诸如http来通信。

协议还可提供通知机制,该通知机制允许附件112(或其他附件)在发生状态变化的情况下选择性地通知控制器102。可实现多个机制,并且控制器102可针对给定目的,对最适当的通知机制进行注册或订阅。通知机制的示例描述于上文引用的美国申请14/614,914中。

在一些实施方案中,与给定附件的通信可限于授权控制器。在用户希望控制器102能够控制附件104这一事件具有较高置信度的情况下,统一附件协议可指定用于在控制器102与给定附件(例如,门锁附件104)之间建立“配对”的一个或多个机制(包括本文中称为“配对设置”和“配对添加”的机制)。配对设置可包括带外信息交换(例如,用户可将附件104提供的数字或字母数字pin或密码输入由控制器102提供的界面中)以建立共享秘密。这个共享秘密可用于支持“长期”公共密钥在控制器102和附件104之间的安全交换,并且每个设备可存储从另一个设备接收的长期公共密钥,以使得所建立的配对可以是持久性的。(本文中,标记“ltpka”和“ltpkc”可分别用于代表附件和控制器的长期公共密钥)。在建立了配对后,则认为控制器102已被授权,随后,控制器102和附件104可根据需要进入和退出通信,而不会失去所建立的配对。当控制器102尝试与附件104通信或控制该附件时,可首先执行“配对验证”过程,以验证存在已建立的配对(例如,控制器102先前已完成与附件104的配对设置的情况也是如此)。配对验证过程可包括让每个设备证实其拥有长期私有密钥,该长期私有密钥与在配对设置期间交换的长期公共密钥相对应。(本文中,标记“ltska”和“ltskc”可分别用于代表附件和控制器的长期私人密钥或秘密密钥)。配对验证过程还可包括建立新的共享秘密或会话密钥,以将“配对验证”会话(本文中也称为已验证会话)期间的所有通信加密。在配对验证会话期间,具有适当特权的控制器可执行“配对添加”过程,以便代表另一个控制器与附件建立另一个配对。任一设备均可仅通过使会话密钥的副本破坏或无效而在任何时间结束配对验证会话。

在一些实施方案中,多个控制器可与同一附件建立配对(例如,通过与附件执行对设置,或通过由先前已与附件建立配对设置的控制器添加配对),并且附件可接受并响应来自其配对控制器中的任一者的通信,同时拒绝或忽略来自未配对控制器的通信。配对设置、配对添加和对验证过程的示例以及安全相关操作的其他示例描述于上文引用的美国申请14/614,914中。

应当理解,家庭环境100是例示性的,并且变型形式和修改形式是可能的。本发明的实施方案可在用户希望使用控制器设备来控制一个或多个附件设备的任何环境中实现,包括但不限于住房、汽车或其他车辆、办公大楼、具有多栋建筑的校园(例如,大学校园或企业)等。可对任何类型的附件设备进行控制,包括但不限于门锁、开门器、照明器材或照明系统、开关、电源插座、摄像机、环境控制系统(例如,恒温器和hvac系统)、厨房电器(例如,冰箱、微波炉、炉、洗碗机)、其他家用电器(例如,洗衣机、干衣机、吸尘器)、娱乐系统(例如,tv、立体音响系统)、窗户、百叶窗、安全系统(例如,报警器)、传感器系统等。单个控制器可与任何数量的附件建立配对,并且可与不同的附件在不同时间选择性地通信。类似地,单个附件可由已与其建立配对的多个控制器控制。可通过将功能建模为具有一个或多个特征的服务,并且允许控制器与该服务和/或其特征发生交互作用(例如,读取、修改、接收更新)来控制附件的任何功能。因此,不管附件功能或控制器形状因数或具体界面如何,本发明的实施方案中所使用的协议和通信均可在任何情况下统一地用于一个或多个控制器和一个或多个附件。

图2示出了根据本发明的实施方案的网络配置200。配置200允许控制器202与位于本地环境206(例如,家庭环境)中的附件204通信。各个控制器202可以是经常出入于环境206的用户(例如,家庭住户或家庭固定访问者)所拥有和/或操作的电子设备。各个控制器202可类似于图1所示控制器102,附件204可类似于图1所示的各种附件。

在某些情况下,控制器202可与附件204直接通信;例如,图中示出控制器202(4)与附件204(2)直接通信。此类通信可使用统一附件协议而在控制器202(4)和附件204(2)共同支持的任何传输手段(诸如蓝牙le传输手段或wi-fi传输手段等)上发生。

在某些情况下,控制器202可与附件204间接通信。例如,附件204(1)和204(2)可各自与可定位在本地环境206中的协调器设备(或“协调器”)210通信。如本文所使用,“协调器”可以是能够作为附件204的控制器来操作、并将其他控制器(例如,控制器202)的消息中继到附件204的电子设备。在一些实施方案中,协调器210可以是可在多个控制器和/或附件间协调操作、并且不限于被动地中继消息的“智能”设备。协调器210可包括能够将其自身作为控制器呈现给附件204、并且能够与控制器202安全地通信的任何设备。在一些实施方案中,协调器210可将其自身作为控制器呈现给附件204,或作为附件(所述附件提供了用于与其他附件,例如附件204进行通信的服务)呈现给控制器202;其示例在上文引用的美国申请14/725,891中有所描述。在一些实施方案中,协调器210可以是预期留在本地环境206中,并且预期在大部分或所有时间被接通且可用于通信的设备。(应当理解,协调器210可能会偶尔不可用,例如,在软件或固件升级、电力中断或出现其他间歇时)。例如,协调器210可实现于以下各项设备中:台式计算机、wi-fi或接入点单元、专用附件控制基站、电视或其他器具的机顶盒(除了与电视或其他电器发生交互作用外,还可实现协调器功能),或根据需要任何其他电子设备。

在一些实施方案中,协调器210和附件204可使用局域网(lan)诸如wi-fi网络和/或点对点通信媒介诸如蓝牙le来通信。应当理解,可使用其他通信协议。在一些实施方案中,控制器202、附件204和协调器210可如上所述支持统一附件协议,该统一附件协议可使用wi-fi和蓝牙le两者作为传输手段来支持。

在图2的示例中,控制器202(1)和202(4)当前与附件204和协调器210一起位于本地环境206中。例如,控制器202(1)可与附件204和协调器210位于同一lan上。控制器202(2)当前位于本地环境206外部,但连接到通信网络208(例如,互联网);据称这种控制器“远离”附件204和协调器210。应当理解,控制器202中的任一者或全部可以是有时位于本地环境206内、而有时位于本地环境206外的移动设备。附件204无需是移动的,并且不需要连接到通信网络208。在一些实施方案中,协调器210可连接到通信网络208,并且可便于通过远程控制器202(2)访问附件204。

在所示示例中,控制器202可经由协调器210与附件204通信,并且协调器210据称可充当附件204的“代理”。协调器210可与附件204(1)和204(2)直接通信。就附件204(3)的情况而言,协调器210可经由“隧道”212来通信。可操作道212来在控制器(包括协调器210)与附件之间中继命令;在一些实施方案中,隧道212和/或协调器210还可将控制器202和附件204(3)所使用的不同通信协议进行转换。在一些实施方案中,隧道212可在协调器210与附件204(3)之间提供或支持安全的端对端通信。代理、隧道和桥接器的示例描述于上文引用的美国申请14/725,891中。

在某些情况下,控制器202可使用隧道212与附件204通信,而无需协调器210的干预。例如,如图所示,控制器202(3)可经由隧道212与附件204(3)通信。控制器202(3)与隧道212之间的通信可使用与隧道212与附件204(3)之间的通信相同或不同的传输手段。在使用了不同传输手段的情况下,隧道212可将统一附件协议命令在控制器202(3)与隧道212间所用的第一传输协议(例如,wi-fi或其他基于ip的传输协议)和隧道212与附件204(3)间所用的第二传输协议(例如,蓝牙le传输协议)之间进行转换。在一些实施方案中,协调器210还可向一些或全部附件204提供隧穿功能。

应当理解,网络配置200是例示性的,并且变型形式和修改形式是可能的。可将任何数量的控制器和任何数量的附件纳入在网络配置中。在一些实施方案中,协调器210可以替换为代理,该代理无需读取消息内容即可在控制器与附件之间中继消息。在一些实施方案中,可完全省去协调器210。一些或全部附件204可能仅在本地环境内可访问。另外,如下所述,不同的控制器202可具有不同水平的附件204访问权限;例如,对于某些控制器202来说,经由网络208进行远程访问可得到允许,而对于其他控制器202来说不被允许。阅读了本公开的本领域技术人员应当理解,本文所述的技术可用于在控制器与附件之间根据需要使用直接和/或间接通信路径(包括隧道或协调器可充当中间体的路径)来进行安全通信。

示例性属性数据库

如上所述,附件可利用属性数据库来提供关于其可控功能的信息。例如,附件可定义服务的集合,其中每个服务均以一组特征来定义,每个特征均可表示附件状态的一个方面并且可具有一个定义值。控制器可通过读取特征值来确定附件状态,并且/或者通过向特征写入值来修改附件状态。属性数据库可用各种格式表示;如上所述,用于表示属性数据库的格式可取决于附件所支持的通信传输手段。

例如,一些附件可使用蓝牙或蓝牙le协议来通信。蓝牙le标准定义了通用属性(“gatt”)简档,其中特征和服务可使用通用唯一标识符(“uuid”)系统来识别。每个特征或服务可具有各种相关描述符,并且这组特征、服务和描述符可定义附件的gatt数据库。具有gatt数据库的附件可将其gatt数据库提供给请求该gatt数据库的任何控制器。此类传输可在uap配对验证会话之外的情况下发生(如上所述)。因此,gatt数据库可变得对未授权设备可见。

根据本发明的一些实施方案,附件的gatt数据库可被构造成使得未授权控制器有限地(或不能)使用以明文发送的信息。可从以明文发送的信息中去除“敏感”信息(例如,将特征uuid映射到附件状态或功能的具体方面的信息(诸如门锁机制)以及各个特征的值);可将敏感信息经由安全读取过程(例如,签名读取过程)提供到授权控制器,下文描述了这两种情况的示例。

图3示出了根据本发明的实施方案的gatt数据库300的示例。gatt数据库300可定义附件(例如,图1所示附件104至112或图2所示附件204中的任一者)的各种服务和特征。在图3的表示中,每行对应于一个特征(列302)。服务(列304)可定义为一组特征。虽然在图3中未明确示出,但应当理解,每个服务和特征均可分配一个uuid。

每个特征均分配一个“实例标识符”(也称为“实例id”或“iid”),如图所示(列306)。实例标识符的分配可根据需要进行,前提条件是给定附件的gatt数据库300中的每个特征均具有唯一的实例标识符。应当指出的是,实例标识符无需与uuid关联。在该示例中,每个服务均具有标记为“服务iid”的一个特征;这可便于向服务分配实例标识符。

每个特征还可具有一个值(列308)。在一些实施方案中,附件仅在统一附件协议的配对验证通信会话内发送特征值。示例在下文进行了描述。

在该示例中,附件可对应于具有相关联的灯(例如,用于照亮门周围的区域)的门锁。门锁可使用锁定机制服务310来控制。“当前状态”特征可由控制器读取以确定门当前是锁定的还是解锁的,并且可在锁定机制状态变化时由附件更新。“目标状态”特征可由控制器写入以指示附件将门锁定或解锁。在一些实施方案中,在配对验证会话内仅限授权控制器可读取和/或写入这些特征。另外,安全读取和/或写入操作(其示例在下文进行描述)可用于增加安全性。“名称”特征可用于为锁定机制服务的这个实例提供人性化的名称。

相关联的灯可使用灯泡服务312来控制。例如,可通过向“接通”特征进行写入来接通或断开灯,并且可通过向“明度”特征进行写入来调节灯明度。这些特征还可被读取以确定灯的当前状态。在一些实施方案中,在配对验证会话内仅限授权控制器可读取和/或写入这些特征。另外,安全读取和/或写入操作(其示例在下文进行描述)可用于增加安全性。“名称”特征可用于为灯泡服务的这个实例提供人性化的名称。

附件信息服务314和协议信息服务316可包括向控制器提供关于附件的附加信息的只读特征。例如,附件信息服务314可包括对应于附件制造商名称、附件模型、附件序列号和附件名称的特征。协议信息服务316可指示由附件执行的统一附件协议的版本和统一附件协议的最小兼容版本。控制器可读取协议信息服务316的特征以确定其是否可与附件互操作。在一些实施方案中,要提供附件信息服务314和/或协议信息服务316,可能需要使用了统一附件协议与蓝牙le传输手段来进行通信的所有附件。服务314和316是可被定义为促进控制器与附件之间通信的“辅助”服务的示例。其他辅助服务可包括,例如可用于执行配对设置和配对验证过程的“配对”服务。

gatt数据库300中的特征还可具有定义或描述了特征的各种性质的其他相关描述符。例如,特征描述符可包括用户可读描述、展示格式、有效值范围、步长大小等。在一些实施方案中,特征还可具有相关“uap性质”描述符,该描述符可指定使用统一附件协议来访问所述特征的方式。例如,uap性质描述符可包括位屏蔽,其中各个位被分配以指示多个性质诸如:特征是否支持读取和/或写入访问;特征是否可(必须)使用安全读取和/或写入步骤来读取和/或写入(例如,如下所述);当写入特征时,是否需要定时写入步骤(例如,如下所述);在附件未连接到控制器时,特征是否提供状态更新的通知;等等。在一些实施方案中,特征的一些或全部相关描述符可在配对验证会话之外例如使用常规蓝牙legatt数据库读取请求来传送。

在一些实施方案中,可将一些或全部特征描述符指定为“敏感”。例如,可以向特征分配类型、格式等,从中可以推断出特定特征的目的或功能(例如,该特征涉及锁定机制的状态)。在一些实施方案中,由附件将敏感描述符传送到控制器的过程可受限,使得控制器可仅使用签名读取步骤来访问敏感描述符,其示例在下文进行描述。因此,未授权控制器或许能够确定附件的服务和/或特征的数量,但可能无法确定服务和/或特征如何映射到附件功能。

应当理解,本文所述的属性数据库和描述符是例示性的,并且变型形式和修改是可能的。附件的属性数据库可包括任何数量的服务,并且服务可具有任何数量的特征。与给定特征相关的这组描述符可根据需要进行修改,并且特征相关描述符中的任一者或全部可被视为敏感的。在一些实施方案中,可基于每个特征来将特定特征指定为敏感的。如果需要,可为每个特征提供非敏感描述符,以指出该特征是否存在敏感描述符;这可以在不指出敏感描述符是什么的情况下完成。

示例性安全读取过程

可能期望通过限制授权控制器的访问来保护敏感描述符和/或附件属性数据库的其他内容。uap通信所用的一些传输手段可提供固有的安全性。例如,在属性使用json对象来表示的情况下,json对象可在发送端点加密并数字地签名,并且在接收端点解密并验证(例如,使用上述配对验证会话的会话密钥),其中该json对象使用http请求(例如,get和post)和响应来传送。

不是所有的传输手段都提供这种安全性,因此,本发明的一些实施方案提供了具有安全读取步骤的统一附件协议,该安全读取步骤可由控制器使用,以便经由传输协议诸如蓝牙le安全地读取附件属性数据库的敏感部分。安全读取步骤可允许控制器读取目标特征的特征值和敏感描述符。该读取请求可格式化,以使得附件可验证其源自授权控制器,并且作为响应而发送的数据可在uap层上加密并数字地签名,从而提供额外保护以对抗窃听者。

在一些实施方案中,一个安全读取步骤可以是“签名读取”步骤,其可用于例如在设备发现和初始连接期间读取属性数据库的敏感描述符。图4示出了根据本发明的实施方案的用于在控制器与附件之间执行发现和连接操作的过程400的流程图。过程400的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程400的其他部分可由附件(如,图2的附件204中的任何一个)执行。在一些实施方案中,控制器和附件可使用蓝牙le作为传输手段;而其他传输协议可被替换。

出于描述的目的,假设附件204和控制器202先前未通信。在框410处,过程204可广播通告。在一些实施方案中,该通告可与蓝牙le协议相符并可包括与附件204有关的信息,如,附件204的gatt数据库中所包括的服务中的一个的标识符。在框412处,控制器202可检测该通告并确定应当建立与附件的连接。例如,控制器202可以将检测到的通告所具有的信息呈现给用户,并获得指示应当建立连接的用户输入。在框414和416处,可建立连接(例如,蓝牙连接);在该阶段,可使用常规技术。

在框418处,控制器202可例如使用一个或多个常规蓝牙legatt读取请求,来从附件204请求gatt数据库。在框420处,附件204可例如通过向控制器202发送所选择的gatt数据库信息,而响应所述请求。所选择的信息可包括,例如各个服务和特征的实例id和uuid以及所选择的描述符,包括例如uap性质描述符。在一些实施方案中,所选择的信息可排除敏感信息(例如,类型描述符、其他敏感描述符,和/或一些或全部特征的值)。

在框422处,控制器202可接收并读取所选择的由附件提供的gatt数据库信息。基于该信息,控制器202可确定是否与附件204建立统一附件协议配对。例如,在框420处提供的所选择的gatt数据库信息可包括与附件配对状态有关的信息(例如,该附件是否已与另一控制器具有统一附件协议配对),并且该信息可用于进行确定。

假设控制器202确定了应当建立统一附件协议配对,则在框424和426处,控制器202和附件204可例如使用上述配对设置过程来建立统一附件协议配对。如上所述,配对设置可包括与控制器202安全地交换可用于验证附件204的长期公共密钥,并且在随后重新连接时,与附件安全地交换可用于验证控制器的长期公共密钥。假设成功建立了配对,则在框428和430处,控制器202和附件204可例如使用上述配对验证过程来建立统一附件协议配对验证会话。如上所述,对验证可包括相互认证并且建立可从中生成会话密钥的短期共享秘密。在配对验证会话期间,会话密钥可用于将控制器202与附件204之间的通信加密,从而提供对于通信源以及未对原始消息进行任何篡改这一事实的信任。应当理解,在初始连接和配对设置后,一旦随后重新连接即可执行配对验证过程,而无需重复进行配对设置过程。

一旦已建立配对验证会话,控制器202就可从附件204安全地获得属性数据库信息的剩余部分。例如,在框432处,控制器202可使用gatt数据库中的每个实例id生成并向附件204发送“签名读取”指令。(假设实例id处于gatt数据库中由附件204在框420处发送的部分中,并且因此在任何签名服务请求之前为控制器202所知)。签名读取指令可包括,由控制器202使用uap配对验证会话的会话密钥来加密并签名的数据块。这可允许附件204验证所述请求源自控制器202。在框434处,附件204可生成并发送对签名读取指令的响应。在一些实施方案中,所述响应可包括数据块,该数据块表示所请求的关于特征的信息和附加信息,这些信息可由控制器202使用来验证所述响应是对具体签名读取指令作出的响应。该数据块可由附件204使用uap配对验证会话的会话密钥来加密并签名。这可允许控制器202验证所述响应源自附件204并且所述数据尚未修改。下文描述了使用蓝牙le传输手段进行的签名读取步骤的一个示例性具体实施。

在框436处,控制器202可存储附件属性数据库的内部表示。这个表示可包括在框422处获得的gatt数据库信息,以及在框434处从签名读去取响应中获得的附加信息。

在一些实施方案中,签名读取步骤可使用特殊格式的gatt写入和读出请求和响应来实现。图5示出了根据本发明的实施方案的用于执行签名读取步骤的过程500的流程图。例如,可在上述过程400的框432和434处使用过程500。

在框510处,控制器202可确定需要签名读取步骤的特征的实例id。应当理解,签名读取步骤可能不可用于全部特征和/或服务。例如,参考图3,附件信息服务314和/或协议信息服务316可被构造成使得与其特征有关的完整信息在初始gatt数据库读取期间(例如,在过程400的框418至422处)得到提供,在这种情况下,随后的签名读取步骤不会产生任何附加信息。服务诸如灯泡服务312和/或锁定机制服务310可包括一项或多项敏感信息,签名读取可以为这些敏感信息项提供附加信息。

在框512处,控制器202可向附件204发送gatt写入请求。在一些实施方案中,gatt写入请求可格式化为符合蓝牙le标准,包括目标特征的特征uuid。有效载荷并未包括待写入目标特征的数据,而是可包括加密并签名的数据包,该数据包带有可由附件用来处理签名读取的信息。例如,加密数据包可包括:(1)操作码符号,该操作码符号将请求识别为签名读取请求;(2)事务标识符(id),该事务标识符可以是控制器202为该事务分配的随机数;以及(3)目标特征的实例id。可以用控制器202与附件204之间的配对验证会话的会话密钥对数据包进行加密和签名。因为蓝牙le标准规定gatt读取请求具有空的有效载荷,所以使用gatt写入请求来实现签名读取指令。在框514处,附件204可接收gatt写入请求。

在框516处,附件204可提取并验证有效载荷。例如,附件可将加密后的数据包解密并解析其内容,例如,提取签名读取操作码符号、事务id和目标特征(其应当对应于gatt写入请求中的目标特征uuid)的实例id。

假设有效载荷被正确地解密并解析,则在框518处,附件204可使数据包准备发送到控制器402以完成签名读取步骤。数据包可包括,例如:(1)事务id,该事务id可与gatt写入有效载荷中已包括的事务id相同;(2)目标特征的实例id;(3)一个或多个tlv(类型-长度-值),其为目标特征提供当前值和附加描述符(例如,类型);和/或(4)所述请求的状态指示符(例如,指示成功或错误)。

在框520处,附件204可向控制器202发送gatt写入响应。在一些实施方案中,gatt写入响应可仅包括状态指示器(如,指示附件204是否能够返回数据)。gatt写入响应并不包括在框518处准备的数据包。在框522处,控制器202可接收gatt写入响应。

在框524处,响应于接收gatt写入响应,控制器202可向同一目标特征uuid发送gatt读取请求。和标准蓝牙legatt读取请求一样,该请求可具有空的有效载荷。在框526处,附件204可接收gatt读取请求。假定正在针对目标特征执行签名读取步骤,则附件204可将gatt读取请求解译为接收目标特征的数据包的请求。

在框528处,附件204可使用配对验证会话的会话密钥将框518中生成的数据包解密。在框530处,附件204可向控制器202发送gatt读取响应,该gatt读取响应具有作为有效载荷的加密数据包。

在框532处,控制器202可接收gatt读取响应。在框534处,控制器204可将数据包解密、提取信息并将所提取的信息存储在附件的属性数据库的本地表示中。过程500可针对需要签名读取步骤的每个实例id重复进行。

签名读取步骤诸如过程500可相对于常规蓝牙legatt读取操作提供各方面的安全性增强效果。例如,如上所述,给目标特征的相关信息加密可阻止窃听者获悉哪些特征对应于附件状态的哪些方面。另外,过程500包括由控制器202向附件204发送数据包,该数据包使用附件204和控制器202才知道的会话密钥来加密并签名。这可允许附件204验证签名读取指令源自控制器202。又如,由附件204响应于签名读取指令而发送的信息可使用只有控制器202和附件204才知道的会话密钥来加密并签名,这使得该信息不太可能被任何窃听者使用。另外,由附件204使用会话密钥来进行签名向控制器202提供了这样的保证:该信息源自附件204而非冒名顶替者。另外,将由控制器选择并由附件返回的事务id包括在内这一操作,可进一步确认附件已被接收并且正对特定请求作出响应。也可以实施其他安全措施。例如,在一些实施方案中,如果gatt读取请求在附件204发送gatt写入响应后(框520)的指定超时期限内未被接收(框526),则附件204可拒绝发送加密后的数据包,并且/或者如果gatt写入响应在控制器202发送gatt写入请求后的指定超时期间内未被接收(框522),则控制器202可拒绝发送gatt读取请求(框524)。此类定时限制可减少入侵者干预请求和/或响应的机会。

还应当指出的是,在已执行过程400后,控制器202可使用与过程500类似的安全读取步骤来仅读取特征的当前值。在安全读取的情况下,附件204可返回较少信息(例如,仅目标特征的当前值,而不包括任何其他描述符)。对于由控制器生成的gatt写入请求来说,可例如通过将一个不同的操作码符号包括在加密的数据包中,来使安全读取与签名读取区分开来。

一些实施方案可支持“不安全”的签名读取步骤,所述“不安全”的签名读取步骤允许附件在未首先建立uap对验证会话的情况下发送信息。例如,附件和控制器可使用某种其他技术来建立可用于将请求和/或响应的有效载荷加密并签名的共享秘密。该共享秘密可包括作为蓝牙le连接过程的一部分而建立的共享秘密,或从中得出的某个其他共享秘密。不安全的签名读取可例如由隧道设备使用;其示例在下文有所描述。在一些实施方案中,附件可被配置为接受或拒绝不安全的签名读取请求,并且是接受还是拒绝不安全的签名读取请求,可以基于请求设备(例如,控制器或隧道)所提供的信息来确定。

本领域的技术人员将会理解,过程400和过程500为示例性的,并且其他变型形式和修改形式也是可能的。数据包的具体内容和格式可根据需要来修改。

示例性安全写入过程

如上所述,控制器可通过向附件属性数据库中的特征写入新的值来改变附件的状态。应当理解,并非附件属性数据库中的所有特征都需要是可由控制器写入的;在一些实施方案中,只有与状态中允许由授权控制器改变的那些方面相对应的特征是可写入的,而其他特征可为只读的。(当然,期望阻止未授权控制器写入任何特征)。

在一些实施方案中,可使用安全写入步骤来在控制器写入附件特征时增强安全性。图6示出了根据本发明的实施方案的用于执行安全写入步骤的过程600的流程图。每当控制器(如,图2的控制器202中的任何一个)确定了应将值写入附件(如,图2的附件204中的任何一个)的特征中时,就可使用过程600。过程600的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程600的其他部分可由附件(如,图2的附件204中的任何一个)执行。在一些实施方案中,控制器和附件可使用蓝牙le作为传输手段;而其他传输协议可被替换。假设在控制器202和附件204已建立配对验证会话时执行过程600。

在框610处,控制器202可确定写入具体特征的值。例如,参考图3,控制器202可接收表明门将要被锁定的用户输入,并且可确定将门锁定的这一操作可通过向锁定机制服务310的目标状态特征写入值“真”来实现。(应当理解,本文所述的全部写入过程通常适用于向控制器202具有写入权限的任何特征写入值)。

在框612处,控制器202可向附件204生成gatt写入请求。在一些实施方案中,gatt写入请求可格式化为符合蓝牙le标准,包括目标特征的特征uuid。有效载荷可包括加密数据包,该数据包包括待写入目标特征的值(也称为“写入数据”),以及可由附件使用来验证写入数据源的信息。例如,加密数据包可包括:(1)操作码符号,该操作码符号将请求识别为安全写入请求;(2)事务id,该事务id可以是控制器202为该事务分配的随机数;(3)目标特征的实例id;以及(4)写入数据。可以用控制器202与附件204之间的配对验证会话的会话密钥对数据包进行加密。在框614处,控制器202可向附件204发送gatt写入请求。

在框616处,附件204可接收gatt写入请求。在框618处,附件204可将数据包解密、提取值并且将所提取的值写入目标特征。在框620处,附件204可执行基于目标特征的新值而更新附件状态的任何所需动作。例如,如果请求是向锁定机制服务310的目标状态特征写入值“真”的请求,那么附件204可引发锁定门的物理动作(例如,操作致动器以转动机械锁、启用磁锁等)。

在框622处,附件204向gatt写入请求发送响应。在一些实施方案中,该响应可包括状态指示器(如,指示附件204是否成功写入了数据)。在框624处,控制器202可接收gatt写入响应。

在一些实施方案中,安全写入步骤可包括来自附件204的签名确认。例如,在框626处,响应于接收gatt写入响应,控制器202可向同一目标特征uuid发送gatt读取请求。和标准蓝牙legatt读取请求一样,该请求可具有空的有效载荷。在框628处,附件204可接收gatt读取请求。假定正在针对目标特征执行安全写入步骤,则附件204可将gatt读取请求解译为对写入操作的签名确认的请求。

在框630处,附件204可确认安全写入请求的状态。在框632处,附件204可准备用于响应于gatt写入请求的有效载荷。该有效载荷可包括,例如,用配对验证会话的会话密钥加密的数据包。该数据包可包括,例如:(1)gatt写入请求中接收到的交易id;和(2)指示该请求成功完成的状态信息。在框634处,附件204可发送具有作为有效载荷的加密数据包的gatt读取响应。在框636处,控制器202可接收gatt读取响应。控制器202可将加密后的数据包解密,并验证附件204已接收并完成写入请求。在gatt写入请求后使用gatt读取请求,这允许了附件发送其已接收并执行写入请求的签名确认。将由控制器选择并由附件返回的事务id包括在内这一操作,确保了附件已接收并响应正确的请求。也可以实施另外的安全措施。

在一些实施方案中,可使用定时写入步骤(这可以是安全写入步骤的一个示例)来提供额外的安全性。定时写入步骤(也称为“准备写入”步骤)可施加时间限制,在该时间限制内,需要完成写入操作。例如,控制器可向附件发送包括待写入数据的第一指令、接收附件关于第一指令已被接收的签名确认,随后向附件发送写入先前发送数据的第二指令。响应于第一指令,附件可缓存(暂时存储)待写入的数据,而无需向目标特征写入数据,并且响应于第二指令,附件可向目标特征写入已缓存的数据。附件和/或控制器可对何时需要相对于彼此接收各种指令和/或响应施加时间限制。定时写入步骤可与任何传输手段一起使用。

图7示出了根据本发明的实施方案的用于定时写入步骤的过程的流程图700。每当控制器(如,图2的控制器202中的任何一个)确定了应将值写入附件(如,图2的附件204中的任何一个)的特征中时,就可使用过程700。过程700的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程700的其他部分可由附件(如,图2的附件204中的任何一个)执行。在一些实施方案中,控制器和附件可使用蓝牙le作为传输手段;而其他传输协议可被替换。假设在控制器202和附件204已建立配对验证会话时执行过程700。

在框710处,控制器202可确定写入具体特征的值。例如,参考图3,控制器202可接收表明门将要被锁定的用户输入,并且可确定将门锁定的这一操作可通过向锁定机制服务310的目标状态特征写入值“真”来实现。

在框712处,控制器202可向附件204生成用于“高速缓存数据”指令的uap有效载荷。在一些实施方案中,高速缓存数据指令可使用gatt写入请求来发送;下文描述了一个示例。在其他实施方案中,可通过向附件204处所定义的适当的url发送httppost请求来发送高速缓存数据指令;下文描述了一个示例。uap有效载荷可包括加密并签名的数据包,该数据包包括待写入值(也称为写入数据),以及可由附件使用来验证写入数据源的信息。例如,加密数据包可包括:(1)操作码符号,该操作码符号将请求识别为高速缓存数据指令;(2)事务id,该事务id可以是控制器202为该事务分配的随机数;(3)目标特征的实例id;(4)写入数据;以及(5)“生存时间”(或“ttl”)参数。然而,在一些示例中,该数据包可不包括写入数据。相反,如下所述,可在该过程的稍后时候提供写入数据。可以用控制器202与附件204之间的配对验证会话的会话密钥对数据包进行加密和签名。在框714处,控制器202可向附件204发送高速缓存数据指令。

在框716处,附件204可接收高速缓存数据指令。在框718处,附件204可将数据包解密、提取写入数据并且缓存写入数据。在该实施方案中,附件204实际上并未响应于缓存数据指令而向任何特征写入任何数据。相反,附件204可将写入数据作为“待审的”写入数据,与目标特征的标识符一起存储在缓冲器或其他暂时存储器中。特征的实际写入可稍后发生,如下所述。附件204还可提取ttl参数。另选地,如上所述,写入数据可能不是数据包的一部分。在这种情况下,由于数据尚未被接收,附件204不能向任何特征写入任何数据。相反,数据包的其他部分可以是已缓存的,并且附件204将被告知数据将在稍后提供。

在框720处,附件204可向控制器204发送对于高速缓存数据指令的响应。在一些实施方案中,发送该响应可使用gatt读取请求和响应来实现;其示例在下文有所描述。在一些实施方案中,发送该响应可使用http响应消息来实现;其示例在下文有所描述。在一些实施方案中,附件204可在发送对缓存数据指令的响应时,起动ttl定时器。

在框722处,控制器202可接收对于高速缓存数据指令的响应。在一些实施方案中,该响应可包括来自附件的关于写入数据已接收的签名验证(如果所述写入数据包括在数据包中);其示例在下文有所描述。在框724处,响应于接收到附件的响应,控制器202可生成并向附件发送“执行写入”指令。作为有效载荷,该执行写入指令可包括由附件用来验证执行写入指令的加密并签名的数据包。例如,加密且签名的数据包可包括:(1)操作码符号,该操作码符号将请求识别为执行写入请求;(2)事务id,该事务id可以是控制器202分配到该事务的随机数,并且可与前一个高速缓存数据指令的事务id相同或不同;以及(3)目标特征的实例id。在该实施方案中,执行写入指令的数据包并不包括待写入的数据。然而,在以上示例中,其中待写入的数据并不包括在附件204于框716处所接收的原始数据包中,相反,该数据可包括在由附件204于框726处所接收的数据包中(例如,与执行写入指令一起)。可以用控制器202与附件204之间的配对验证会话的会话密钥对数据包进行加密。在一些实施方案中,执行写入指令可使用gatt写入请求来发送;其示例在下文有所描述。在其他实施方案中,可使用httppost请求将执行写入指令发送到附件204处所定义的适当url;其示例在下文有所描述。

在框726处,附件204可接收执行写入指令。在框728处,附件204可确定是否在框720处开启的ttl定时器超时之前接收到执行写入指令。在一些实施方案中,可基于附件204在缓存数据指令中所接收的ttl参数来作出所述确定。例如,ttl参数可以秒为单位指定生存时间(例如,0.5秒、1秒、2.5秒、5秒等),并且附件204可根据ttl定时器确定指定生存时间是否已过。如果指定的生存时间已过,则未在定时器生存时间内接收到执行写入指令,过程700可在框730处因错误而结束。在一些实施方案中,附件204可向控制器202发送错误消息。

如果在框728处、在生存时间内接收到执行写入指令(例如,在ttl定时器截止之前),那么附件204可执行写入操作。例如,在框732处,附件204可向目标特征写入先前缓存的数据值(来自框718)。在框734处,附件204可执行基于目标特征的新值而更新附件状态的任何所需动作;这可与上述过程600的框620类似。在一些实施方案中,写入操作的执行可取决于附加验证操作。例如,附件204可验证控制器202的签名,并且确认从执行写入指令的有效负载所提取的目标特征标识符对应于缓存数据指令的目标特征标识符。

在框736处,附件204可向控制器204发送对于执行写入指令的响应。在一些实施方案中,发送该响应可使用gatt读取请求和响应来实现;其示例在下文有所描述。在其他实施方案中,该响应可作为对于post请求的http响应而发送;其示例在下文有所描述。在框738处,控制器202可接收对于执行写入指令的响应。在一些实施方案中,控制器202可使用包括在该响应中的信息,以验证附件已成功执行写入操作。

应当指出的是,也可在定时写入步骤期间施加其他超时。例如,控制器204可能要求在发送缓存数据指令(框714)后在指定超时期限内接收对缓存数据指令的响应(框722)。该超时可以是例如2秒、5秒、10秒或某个其他时段。另外地或替代地,控制器204可要求在发送执行写入指令(框724)后在指定超时期限内接收对执行写入指令的响应(框738)。该超时可以是例如2秒、5秒、10秒或某个其他时段;定时写入步骤的不同超时期限区段可以根据需要相同或不同。使用超时期限可有助于基于消息从控制器到附件的延迟传输,或者基于消息从附件到控制器的延迟传输而防止漏洞被利用。在一些实施方案中,对于某些特征来说,附件可能选择性地要求使用定时写入步骤。例如,参考图3,当写入锁定机制服务310的目标状态特征时,可能需要定时写入步骤,但当写入灯泡服务312的接通或明度特征时,可能不需要定时写入步骤。在一些实施方案中,附件可例如通过如上所述在uap性质描述符位掩码中设置适当的位,来指定需要定时写入步骤的特征。在特征需要定时写入步骤的情况下,附件可忽略不符合定时写入步骤的任何写入请求或指令。

在一些实施方案中,高速缓存数据指令和执行写入指令可以用蓝牙legatt读取和写入请求来实施。图8示出了根据本发明的实施方案,实施用于定时写入步骤的高速缓存数据指令的过程800的流程图。过程800的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程800的其他部分可由附件(如,图2的附件204中的任何一个)执行。假设在控制器202和附件204已建立配对验证会话时执行过程800。在蓝牙le为传输手段的实施方案中,可将过程800理解为实施过程700的框710-722的具体示例;然而,过程800还可以与其他传输手段一起使用。

在框810处,控制器202可确定写入具体特征的值。这可类似于上文所述的过程700的框710。在框812处,控制器202可生成包括uap有效载荷(如,加密的数据包)的gatt写入请求。gat写入请求可识别目标特征的uuid。uap有效载荷可包括待写入值(也称为写入数据)和ttl参数,以及可由附件使用来验证写入数据源的信息。例如,可包括上文针对过程700的框712所述信息中的任何一种或全部。可以用控制器202与附件204之间的配对验证会话的会话密钥对uap有效载荷进行加密和签名。在框814处,控制器202可向附件204发送gatt写入请求。

在框816处,附件204可接收gatt写入请求。在框818处,附件204可将uap有效载荷解密、从操作码确定消息为高速缓存数据指令、提取写入数据、缓存写入数据和目标特征的标识符(例如,uuid和实例id的任一者或两者)并且提取ttl参数。应当指出的是,在该实施方案中,附件204实际上并未响应于高速缓存数据指令而将数据写入任何特征;这可类似于过程700的框718。

在框820处,附件204可向控制器202发送gatt写入响应。在一些实施方案中,该响应可包括状态指示器(如,指示附件204是否成功解析了uap有效载荷)。在框822处,控制器202可接收gatt写入响应。

在框824处,响应于接收gatt写入响应,控制器202可向同一目标特征uuid发送gatt读取请求。和标准蓝牙legatt读取请求一样,该请求可具有空的有效载荷。在框826处,附件204可接收gatt读取请求。假定对于该特征而言定时写入过程的高速缓存数据指令是最后接收到的,则附件204可将gatt读取请求解译为响应于该高速缓存数据指令的对签名确认的请求。

在框830处,附件204可生成用于响应于gatt读取请求的uap有效载荷。uap有效载荷可包括,例如,用配对验证会话的会话密钥加密和签名的数据包。该数据包可包括,例如:(1)gatt写入请求中接收到的事务id;和(2)指示附件204是否成功处理了高速缓存数据指令的状态信息(在本文的上下文中并不意味着数据被写入特征中)。在框830处,附件204可发送gatt读取响应,该gatt读取响应具有作为有效载荷的加密且签名的数据包。此时,附件204可起动ttl定时器,这类似于上述过程700的框720。在框832处,控制器202可接收gatt读取响应。在一些实施方案中,控制器202可使用gatt读取响应的有效载荷来验证从附件发出的响应并验证已进行执行高速缓存数据指令。

过程800完成时,附件204已接收并缓存写入数据,并且已确认该写入数据的接收,但仍未执行该写入。如上所述,控制器202可发送单独的执行写入指令,以指示附件204执行该写入。

图9示出了根据本发明的实施方案,实施用于定时写入步骤的执行写入指令的过程900的流程图。过程900的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程900的其他部分可由附件(如,图2的附件204中的任何一个)执行。在控制器202和附件204具有配对验证会话时,可响应于过程800的完成执行过程900。在蓝牙le为传输手段的实施方案中,可将过程900理解为实施过程700的框724-738的具体示例;然而,过程900还可以与其他传输手段一起使用。

当控制器202已确认附件204(如,使用过程800)接收并处理了高速缓存数据指令时,过程900可以开始。在框910处,控制器202可生成包括uap有效载荷(如,加密的数据包)的gatt写入请求。uap有效载荷可包括,例如,上文针对过程700的框724所述信息中的任何一种或全部。可以用控制器202与附件204之间的配对验证会话的会话密钥对uap有效载荷进行加密。在框912处,控制器202可向附件204发送gatt写入请求。

在框916处,附件204可接收gatt写入请求。在框918处,附件204可对uap有效载荷进行解密和验证,并可通过操作码符号确定gatt写入请求对应于执行写入指令。在框920处,附件204可确定是否在响应于先前的高速缓存数据指令(如,在过程800的框830处)启动的ttl定时器到期之前接收到执行写入指令。该确定可类似于上文所述的过程700的框728。如果未在定时器生存时间内接收到执行写入指令,过程900会在框922处因错误而结束。在一些实施方案中,附件204可向控制器202发送错误消息。

如果,在框920处,在ttl定时器到期之前接收到执行写入请求,那么在框924处,附件204可执行写入并执行任何相关的状态改变。这可类似于上文所述的过程700的框732和734。

在框926处,附件204可向控制器202发送gatt写入响应。在一些实施方案中,gatt写入响应可包括状态指示器(如,指示附件204是否成功写入了数据和/或更新了状态)。在框928处,控制器202可接收gatt写入响应。

在框930处,响应于接收gatt写入响应,控制器202可向同一特征uuid发送gatt读取请求。和标准蓝牙legatt读取请求一样,该请求可具有空的有效载荷。在框932处,附件204可接收gatt读取请求。假定对于该特征而言定时写入过程的执行写入指令是最后接收到的,则附件204可将gatt读取请求解译为响应于该执行写入指令的对签名确认的请求。

在框934处,附件204可生成用于响应于gatt读取请求的uap有效载荷。uap有效载荷可包括,例如,用配对验证会话的会话密钥加密和签名的数据包。uap有效载荷可包括,例如:(1)gatt写入请求中接收到的事务id;和(2)指示附件204是否成功处理了高速缓存数据指令的状态信息。在框936处,附件204可发送具有作为有效载荷的加密数据包的gatt读取响应。在框938处,控制器202可接收gatt读取响应。在一些实施方案中,控制器202可使用gatt读取响应的有效载荷来验证从附件发出的响应并验证已进行执行写入指令。

在其他实施方案中,高速缓存数据指令和执行写入指令可以用httppost请求来实施。图10示出了根据本发明的实施方案,实施用于定时写入步骤的高速缓存数据指令的过程1000的流程图。过程1000的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程1000的其他部分可由附件(如,图2的附件204中的任何一个)执行。假设在控制器202和附件204已建立配对验证会话时执行过程1000。在http/ip为传输手段的实施方案中,可将过程1000理解为实施过程700的框710-722的具体示例;然而,过程1000还可以与其他传输手段一起使用。

在框1010处,控制器202可确定写入到特定特征或一个或多个特定特征的值(如,使用httppost请求,可将多个特征写入到单个指令/请求中)。这可类似于上文所述的过程700的框710。在一些实施方案中,单个http写入请求可包括(如,使用json对象或支持结构数据对象的其他符号约定)写入到多个特征的值,这可被理解为只要该传输手段支持用单个请求修改多个特征,就可以用单个定时写入步骤修改多个特征。在框1012处,控制器202可生成json有效载荷并对其进行编码。json有效载荷可包括,例如,作为标识一个或多个要写入的特征(可使用特征实例标识符)的数据结构的写入数据,以及要连同ttl参数一起写入每个特征的值。对json有效载荷进行编码可包括,例如,使用配对验证会话的会话密钥对json有效载荷进行加密和/或数字签名。在框1014处,控制器202可为准备阶段启动定时器;如上所述,该定时器可用于在超时时段(如,2秒、5秒、10秒)内强制执行附件204响应高速缓存数据指令的要求。在框1016处,控制器202可向附件204的url发送httppost请求,该url已被指定为接收与定时写入步骤结合的高速缓存数据指令。(该url可为,例如,名为/cachewritedata的相关url;也可用其他名字代替。)httppost请求可包括编码的json有效载荷。

在框1018处,附件204可接收httppost请求。基于请求所指向的url,附件204可确定该请求包括用于定时写入步骤的写入数据。在框1020处,附件204可提取和验证json有效载荷,这可包括,例如,验证数字签名。(如果验证失败,则附件204可因错误响应而退出)。在框1022处,附件204可高速缓存从json有效载荷提取的写入数据。在框1024处,附件204可向控制器202发送http响应;假定没有错误发生,则响应可包括指示成功执行post请求的状况码。在一些实施方案中,该响应可由附件204(如,使用配对验证会话的会话密钥)进行数字签名。

在框1026处,控制器202可接收来自附件204的响应。如果响应被数字签名,则控制器202可使用该签名验证该响应是从附件204发出的。在框1028处,控制器202可基于在框1014处启动的定时器确定该响应是否是在超时时段内接收到的。如果不是,那么控制器202可在框1030处退出定时写入过程,无需发送执行写入指令。如果响应是及时的,可在框1032处继续定时写入过程。

过程1000完成时,附件204已接收并缓存写入数据,并且已确认该写入数据的接收,但仍未执行该写入。如上所述,控制器202可发送单独的执行写入指令,以指示附件204执行该写入。

图11示出了根据本发明的实施方案,实施用于定时写入步骤的执行写入指令的过程1100的流程图。过程1100的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程1100的其他部分可由附件(如,图2的附件204中的任何一个)执行。在控制器202和附件204具有配对验证会话时,可响应于过程1000的完成执行过程1100。在http/ip为传输手段的实施方案中,可将过程1100理解为实施过程700的框724-738的具体示例;然而,过程900还可以与其他传输手段一起使用。

当控制器202已确认附件204(如,使用过程1000)接收并处理了高速缓存数据指令时,过程1100可以开始。在框1110处,控制器202可生成json有效载荷并对其进行编码,json有效载荷可包括与正被写入的特征的实例标识符匹配的特征实例标识符。如果要写入多个特征,所有特征的实例标识符都可包括在内。对json有效载荷进行编码可包括,例如,使用配对验证会话的会话密钥对json有效载荷进行加密和/或数字签名。在框1112处,控制器202可向附件204的url发送httppost请求,该url已被指定为接收与定时写入结合的执行写入指令。(该url可为,例如,名为/executewritedata的相关url;也可用其他名字代替。)httppost请求可包括编码的json有效载荷。

在框1114处,附件204可接收httppost请求。基于请求所指向的url,附件204可确定该请求表示用于定时写入步骤的执行写入指令。在框1116处,附件204可确定是否在响应于先前的高速缓存数据指令(如,在过程1000的框1024处)启动的ttl定时器到期之前接收到执行写入指令。该确定可类似于上文所述的过程700的框728。如果未在定时器生存时间内接收到执行写入指令,过程1100会在框1118处因错误而结束。在一些实施方案中,附件204可向控制器202发送错误消息。

如果在框1116处,在ttl定时器到期之前接收到执行写入请求,那么在框1120处,附件204可提取和验证json有效载荷,这可包括,例如,验证数字签名。(如果验证失败,则附件204可因错误响应而退出)。在框1122处,附件204可执行写入并执行任何相关的状态改变。这可类似于上文所述的过程700的框732和734。在框1124处,附件204可向控制器202发送http响应;假定没有错误发生,则响应可包括指示成功执行post请求的状况码。在一些实施方案中,该响应可由附件204(如,使用配对验证会话的会话密钥)进行数字签名。在框1126处,控制器202可接收来自附件204的响应。如果响应被数字签名,则控制器202可使用该签名验证该响应是从附件204发出的。如果检测到任何问题,控制器202会通知用户和/或根据需要采取其他保护性措施。

应当理解,上文所述的各种安全的读取和写入步骤是例示性的,并且可以改变和修改。例如,可以改变有效载荷的特定内容。还可以修改与各种指令或响应相关联的超时时段。在一些实施方案中,不是由控制器,而是由附件确立定时写入步骤的生存时间参数。较短的生存时间可降低侵入者有意引入延迟的风险;然而,它还会增加合法请求因在生存时间内未被接收到而被拒绝的可能性。可将超时时段应用于请求和/或响应的任何集合。如果发生超时或任何其他错误(如,对有效载荷解密或验证签名失败,无效操作码符号,包含不对应于gatt写入请求的目标特征uuid的特征实例id的有效载荷),控制器或附件可检测到错误并采取纠正措施。例如,响应于错误,控制器或附件会重试该请求,通知其他设备,终止配对验证会话,和/或生成针对用户的警报。在一些实施方案中,纠正措施可取决于错误的特定类型。

此外在使用蓝牙le的安全读取和写入步骤的上述示例中,假定单个gatt请求或响应可包括要发送的整个uap有效载荷。然而,很有可能一些uap有效载荷会大于gatt请求或响应的最大有效载荷大小。在这种情况下,可以用多个gatt请求或响应对uap有效载荷进行分段传递,可对uap有效载荷的每个片段独立进行加密。每个片段还可包括允许接收方设备在对每个片段进行独立解密之后重组整个uap有效载荷的分段信息。

如上所述的安全读取和写入步骤可以任何组合结合任何传输手段一起使用。与常规的读取或写入过程相比,该安全读取和写入步骤可提供各种安全性增强。例如,控制器可向附件发送加密和/或签名的有效载荷,从而允许附件验证所述请求是从被授权的控制器发出的。另外,在蓝牙le作为传输手段的情况下,如果加密的uap有效载荷包括目标特征的标识符(如,它的实例id),可以阻挡基于将gatt请求重新定向不同特征的攻击,因为附件可检测到在gatt请求中标识的目标特征与在加密的uap有效载荷中标识的目标特征之间的不匹配。此外,如上所述,附件可向每个请求发送加密的和/或签名的响应,从而允许控制器验证所述请求被预期的附件接收并处理(并检测到未发生这种现象的情况)。在使用超时时段的情况下,控制器和附件能够检测并防止目的在于拦截和延迟合法通信的攻击。

安全隧道通信

如上文参考图2所述,控制器(如,控制器202(3))能够经由隧道212与附件(如,附件204(3))通信,其可转换用于控制器202(3)与隧道212之间的第一传输手段(如,用wi-fi或其他基于ip的传输手段发送的http消息)与用于隧道212与附件204(3)之间的第二传输手段(如,蓝牙le传输手段)之间统一的附件协议命令。

为了促进隧道通信,隧道212可与附件204(3)建立蓝牙配对和任选的uap配对。通过这些配对,隧道212可,例如,使用类似于上文所述的过程400和500的签名读取步骤获得用于附件204(3)的附件属性数据库。(如果未建立uap配对,隧道212会使用不安全的签名读取步骤。)隧道212可生成属性数据库的ip兼容的表示并将该表示提供给控制器202(3)。在一些实施方案中,控制器202(3)可使用由隧道210提供的属性数据库的表示。

然而,对于控制器202(3)而言,相信隧道212正提供属性数据库的正确表示可能是不可取的。因此,控制器202(3)可用附件204(3)经由隧道212执行(安全的)签名读取步骤,以直接从附件204(3)获得属性数据库信息。如果使用只有端点(即,控制器202(3)和附件204(3))已知的密钥对在签名读取步骤中交换的信息进行加密,那么可使得隧道212无法改变该信息。在一些实施方案中,控制器202(3)可将经由签名读取步骤从附件204(3)获得的属性数据库信息与隧道212提供的属性数据库的表示进行比较;如果有差异,控制器202(3)可推断隧道212不受信任。在一些实施方案中,控制器202(3)可确定不通过不受信任的隧道进行通信并可通知用户存在问题。在其他实施方案中,依靠加密和签名的有效载荷的固有安全性,可通过不受信任的隧道使用安全的读取和写入步骤(例如,如上文所述)进行通信。

图12a和图12b示出了根据本发明的实施方案的过程1200的流程图,该过程用于经由隧道在控制器与附件之间建立通信。过程1200的某些部分可由控制器(如,控制器202(3)或图2的任何其他控制器202)执行,其他部分可由附件(如,附件204(3)或图2的任何其他附件204)执行,并且其他部分还可由隧道(如,图2的隧道212)执行。在一些实施方案中,当可在隧道212与控制器202之间使用基于ip的传输手段(如,wi-fi传输手段)时,蓝牙le可用作附件204与隧道212之间的传输手段。

出于描述的目的,假设隧道212和附件204先前未通信。首先参见图12a,在框1210处,附件204可广播通告。在一些实施方案中,该通告可与蓝牙le协议相符并可包括与附件204有关的信息,如,附件204的gatt数据库中所包括的服务中的一个的标识符。在框1212处,隧道212可检测该通告并确定应当建立与附件的连接。在一些实施方案中,控制器202可参与在隧道212与附件204之间建立连接的初始确定。

在框1214和1216处,隧道212和附件204可建立蓝牙连接。这可类似于上文所述的过程400的框414-426;例如,框214和216可包括隧道212从附件204请求并获得gatt数据库。如上所述,附件204提供的gatt数据库可包括所选择的信息,如各种服务和特征的实例id和uuid,以及所选择的描述符(包括,如,uap特性描述符),并可以排除某些其他信息(如,敏感描述符,如一些或所有特征的类型描述符和/或值)。在一些实施方案中,控制器202可参与是否建立蓝牙连接的确定。

在框1218和1220处,隧道212可执行对附件204的签名读取步骤,以从附件204安全获得属性数据库信息的其余部分。该签名读取步骤可与上文参考图4和图5所述的步骤相似或相同。在一些实施方案中,该签名读取步骤可为如上所述的不安全的签名读取步骤,并且对于隧道212而言,没有必要与附件204建立uap配对。

在其他实施方案中,隧道212可与附件204建立uap配对和uap配对验证会话,并且可执行安全的签名读取步骤(即,使用配对验证会话的会话密钥对有效载荷进行加密和签名的签名读取步骤)。例如,如上所述,在框1214和1216处建立蓝牙连接可包括隧道212从附件204的gatt数据库读取所选择的信息。建立uap配对的决定可至少部分地基于附件所提供的选择信息。在一些实施方案中,控制器202可参与建立蓝牙连接和uap配对中的任一者或两者的确定。

在框1222处,隧道212可构造适合于与控制器202通信的属性数据库的表示。例如,如果与控制器202的通信使用基于ip的传输手段,那么就可使用json(javascript对象表示法)等等将属性数据库表示为结构化数据对象。在框1222处构造的表示可包括初始在gatt数据库中提供的信息以及使用签名读取步骤而获得的附加信息。

现在参见图12b,在框1224处,隧道212可向附件204通告(例如,经由基于ip的传输上的广播)其作为隧道的可用性。通告可包括来自附件属性数据库的所选择的信息。

在框1226处,控制器202可检测通告并确定控制器202应当使用隧道212来与附件204通信。在框1228和1230处,控制器202可例如使用如上所述的配对设置和配对验证过程来建立与隧道212的uap配对验证会话。(在一些实施方案中,在执行过程1200前,控制器202和隧道212可能已建立了uap配对,在这种情况下,就可建立新的配对验证会话)。一旦建立uap配对,那么在框1232处,控制器202可从隧道212获得附件属性数据库的表示。这可以是在框1222处由隧道212构造的表示。该表示可提供在控制器202与隧道212之间的配对验证会话内,从而提供数据的安全性。

此后,控制器202就可访问隧道212的“隧道”服务,其可用于提供隧道应中继至附件204上的消息。在一些实施方案中,这些消息可包括隧道212可并入到(而不解密它们)中继至附件204的消息中的加密有效载荷。以类似的方式,附件204可访问隧道212的隧道服务以提供隧道应中继至控制器202的消息。隧道服务和经由隧道来进行的消息交换的示例描述于上文所引用的美国申请14/725,891中。

使用隧道服务,在框1234和1236处,控制器202和附件204就可建立uap配对验证会话。(隧道操作在图12b中由菱形1238指示。)在该实施例中,假设控制器202和附件204先前已通过直接蓝牙le连接建立了uap配对;在一些实施方案中,框1234和1236可包括经由隧道212来建立uap配对。

在框1240和1242处,控制器202可经由隧道212来执行对附件204的签名读取步骤,以从附件204安全获得属性数据库信息的其余部分。(隧道操作在图12b中由菱形1244指示。)该签名读取步骤可与上文参考图4和图5所述的步骤相似或相同。该签名读取步骤可为安全签名读取步骤(在控制器202和附件204之间的uap配对验证会话内执行),并且可使用控制器202和附件204已知而隧道212未知的会话密钥来加密有效载荷。因此,控制器202可验证在框1240和1242处的签名读取步骤期间获得的数据是由附件204提供并且未被隧道212修改。这可帮助确保控制器202具有附件204的属性数据库的正确表示,因而减少对信任隧道212的需要。

在一些实施方案中,控制器202可以将经由签名读取步骤从附件204获得的附件属性数据库信息(框1240)与从隧道212获得的表示(框1232)进行比较。如果检测到了差异,那么控制器202就可确定隧道212不可信,并且停止经由隧道212与附件204的通信;在这种情况下,控制器202可提示用户检查隧道212的状态。另外或替代地,控制器202还可阻止与附件204的所有另外通信(包括直接通信)和/或提示用户检查附件204的状态。在用户确认状态后,就可恢复通信。

或者,即使隧道212不可信,控制器202也可使用上述安全读取和写入步骤来与附件204通信,从而依赖在框1240处获得的属性数据库信息并且忽略由隧道212提供的任何对立信息。如上所述,安全读取和写入步骤可允许控制器202和/或附件204检测对它们之间通信的试图干扰;因此,控制器202和/或附件204可例如通过将请求重新定向到不同目标特征和/或延迟请求和/或响应的传递来检测隧道212是否正在试图进行干扰。

额外优化

如本文所述的安全读取和写入步骤可有助于减少各种攻击成功的可能性,诸如中间的人将写入或读取重定向到除了控制器的预期目标之外的特征,或拦截和延迟写入请求。然而,增强的安全性可能以额外事务和/或额外计算为代价。在一些实施方案中,可以使用额外优化来降低这些成本,而不失安全性。

例如,在一些实施方案中,控制器(或隧道)在每次其连接到附件时不必执行签名读取步骤。控制器(或隧道)可以高速缓存在签名读取步骤期间获得的信息,并在随后连接期间使用已缓存的信息,而不是在每次连接期间再次执行签名读取步骤。在一些实施方案中,附件可使用其蓝牙le通告来指示何时已发生了状态改变,并且重连接到附件的控制器可基于通告来确定是否执行签名读取步骤。在一些实施方案中,一些而非所有特征会选择性地要求签名读取步骤;可仅使用蓝牙le(或其他传输手段)的安全特征提供有关于其他特征的信息。在一些实施方案中,附件制造商可通过要求签名读取来确定要保护的特征;这种选择可取决于特定附件或特征的性质。例如,比起灯泡,门锁可更多受益于增强的安全性。

如上所述,安全读取和写入操作可具有的先决条件可为控制器和附件已建立了提供可用于对消息有效载荷进行加密和签名的一个或多个会话密钥的配对验证会话。建立配对验证会话可涉及附件和控制器各自使用椭圆曲线计算等等来生成临时的密钥对。此类计算可为耗时且资源密集型的,特别是在所讨论的设备被设计为低功耗的情况下(这可能是针对某些附件的情况)。因此,为了减少对此类计算的需要,一些实施方案除了配对验证过程之外还可支持uap“配对恢复”过程。在配对恢复过程中,先前已建立配对验证会话(例如,使用配对验证或配对恢复的先前迭代)的控制器和附件可在会话结束之后存储来自该会话的会话信息。可通过使用所存储的会话信息生成新的会话密钥来恢复会话。

图13a和图13b示出根据本发明实施方案的配对恢复过程1300的流程图。过程1300的一些部分可由控制器(如,图2的控制器202中的任何一个)执行,过程1300的其他部分可由附件(如,图2的附件204中的任何一个)执行。在一些实施方案中,控制器和附件可使用蓝牙le作为传输手段;在其他实施方案中,也可用http/ip或其他传输手段来代替。假设控制器和附件先前已建立了uap配对和uap配对验证会话,例如,使用上文引用的申请14/614,914中所述的过程进行。

过程1300可在配对验证会话未在控制器202与附件204之间进行的时间开始。例如,在控制器202和附件204将蓝牙le用作传输手段进行通信的一些实施方案中,蓝牙le连接的任何丢失或终止都会造成配对验证会话的结束。在一些实施方案中,控制器202和附件204可以各自保存分配给配对验证会话的会话标识符(“会话id”)和用于为配对验证会话建立会话密钥的共享秘密。即使在配对验证会话结束后,也可保存会话信息。使用过程1300,可使用所保存的会话信息来建立新的配对验证会话。

首先参见图13a,过程1300可以在控制器202确定建立与附件204的新的配对验证会话时开始。这可例如响应于用户输入或造成控制器202确定其需要在配对验证会话未进行时与附件204通信的任何其他事件而发生。

在框1310处,控制器202可从先前与附件204的配对验证会话检索会话信息,所述会话信息包括存储的会话id和会话专用共享秘密。(对会话id的存储如下所述。)如果并不存在存储的会话id和共享秘密,那么控制器202就可退出过程1300并替代地发起配对验证过程。该配对验证过程可包括生成可在执行过程1300的未来实例中存储和使用的新的共享秘密和会话id。

假设控制器202能够检索存储的会话id和共享秘密,那么在框1312处,控制器202可例如使用curve22519或其他椭圆曲线算法来生成新的随机公共/私人密钥对。在框1314处,控制器202可以导出请求加密密钥。例如,可以使用安全散列函数诸如hkdf-sha-512。输入可包括在框1310处检索的存储的共享秘密和会话id、在框1312处生成的新的公共密钥、以及控制器和附件已知的额外的字符串。在框1316处,控制器202可使用在框1314处导出的请求加密密钥来对空的请求消息进行加密和签名。可以使用标准加密算法诸如chacha20-poly1305,并且加密算法还可针对请求生成认证标签(“authtag”)。在框1318处,控制器202可向附件204发送配对恢复请求(例如,使用对附件204的配对服务的适当特征的gatt写入请求或定向至在附件204处定义的适当配对服务url的httppost请求)。该配对恢复请求可包括将请求标识为配对恢复请求的方法标识符、在框1312处生成的新的公共密钥、在框1310处检索的会话id、以及在框1316处生成的authtag。

在框1320处,附件204可接收配对恢复请求。在框1322处,附件204可确定其是否已保存了与包括在配对恢复请求中的会话id对应的会话信息。如果不是,那么在框1324处,附件204可退出过程1300并继续处理作为配对验证过程的第一请求的请求(例如,如上文引用的申请14/614,914中所描述的)。出于配对验证过程的目的,由控制器202生成的公共/私人密钥对可用作其短期公共密钥。在附件不具有对应于接收到的会话id的所保存会话数据的情况下,该回退机制可避免额外通信开销,在额外通信中,附件将指示配对恢复的失败并且控制器接着将替代地发起配对验证过程。

如果在框1322处,附件204已保存了会话信息,那么在框1326处,附件204可使所保存的会话id无效,由此防止相同配对验证会话被重复用于使用配对恢复发起新的会话。在框1328处,附件204可例如使用在框1314处由控制器202使用的相同算法和输入来导出请求加密密钥。附件204可从其自己的所保存会话信息的存储器中获得共享秘密。

在框1330处,附件204可使用其请求加密密钥来验证所接收到的请求的authtag。由于来自先前配对验证会话的所保存的共享秘密是用于生成该加密密钥的输入之一,因此这允许了附件204验证控制器202是否拥有来自先前配对验证会话的共享秘密。虽然未明确地示出,但应理解,如果authtag未被验证,那么附件204可向控制器202发送错误消息,并且过程1300可结束。

现在参见图13b,在框1332处,附件204可为新的配对验证会话生成新的会话id。可使用随机数生成算法(包括伪随机数生成器)或具有不易从先前会话id猜测新的会话id的属性的其他算法来生成新的会话id。在框1334处,附件204可以生成响应加密密钥。例如,可以使用安全散列函数诸如hkdf-sha-512。输入可包括来自先前会话的共享秘密、在框1332处生成的新的会话id、控制器的公共密钥、以及控制器和附件已知的额外的字符串(它们可不同于在框1314处使用的字符串)。应当注意,附件204无需生成其自己的公共/私人密钥对,这允许了附件204避免椭圆曲线计算开销。在框1336处,附件204可使用在框1334处导出的响应加密密钥来对空的响应消息进行加密和签名。可以使用标准加密算法诸如chacha20-poly1305,并且加密算法还可针对响应生成认证标签(“authtag”)。在框1338处,附件204可向控制器202发送配对恢复响应。(例如,附件可发送gatt写入响应以指示其配对恢复响应已准备好发送,并且控制器可通过将gatt读取请求发送到附件204的配对服务的适当特征来检索配对恢复响应。对于http/ip,附件可发送对从控制器接收的post请求的响应以指示其配对恢复响应已准备好发送,并且控制器可发送对在附件处定义的适当url的get请求以检索配对恢复响应。)该配对恢复响应可包括将请求标识为配对恢复响应的方法标识符、在框1332处生成的新的会话id、以及在框1336处生成的authtag。

在框1340处,控制器202可从附件204接收配对恢复响应。在框1342处,控制器202可例如使用在框1334处由附件204使用的相同算法和输入来导出响应加密密钥。在框1344处,控制器可使用其响应加密密钥来验证所接收的响应的authtag。由于来自先前配对验证会话的所保存的共享秘密是用于生成该加密密钥的输入之一,因此这允许了控制器202验证附件204是否拥有来自先前配对验证会话的共享秘密。

在框1346和1348处,控制器202和附件204可各自使用来自先前会话的共享秘密来生成新的共享秘密。例如,可以使用安全散列函数诸如hkdf-sha-512。输入可包括来自先前会话的共享秘密、在框1312处由控制器202生成的公共密钥、在框1332处由附件204生成的新的会话id、以及控制器202和附件204已知的额外的字符串(它们可不同于在框1314和1334处使用的字符串)。在框1350和1352处,控制器202和附件204可各自使用新的共享秘密来生成用于新的配对验证会话的一个或多个会话密钥。可应用在配对验证过程中使用的相同算法和输入。例如,可以生成两个会话密钥,一个用于从控制器发送到附件的消息,一个用于从附件发送到控制器的消息。此时,建立新的配对验证会话,并且控制器202和204可开始在会话内通信,例如,交换利用在框1350和1352处导出的会话密钥加密和签名的消息有效载荷。

在框1354和1356处,控制器202和附件204可以各自存储会话信息,包括新的会话id(在框1332处由附件204生成)和新的共享秘密(在框1346处由控制器202生成,并分开地在框1348处由附件204生成)。在一些实施方案中,该会话信息可存储在安全存储元件中。以此方式,所存储的会话信息可用于过程1300的未来迭代。

应当理解,过程1300是示例性的,并且变型形式和修改形式是可能的。可根据需要来改变特定算法、输入和消息内容。使用过程1300,已建立一个配对验证会话的附件和控制器可使用该会话来“引导”下一配对验证会话(基于每个设备拥有来自先前配对验证会话的共享秘密的事实)而附件不必生成新密码密钥对。这可减少附件上的计算负担并加速新的配对验证会话的建立。另外,在一些实施方案中,配对验证可需要将在控制器和附件之间交换的多个请求和响应(例如,在上文引用的申请14/614,914中描述的一个过程中的两个请求-响应交换),而配对恢复可使用一个请求-响应交换来完成。这可减少与消息传播时间相关的带宽要求、功耗和延迟。

附件和控制器可各自独立地确定是否允许配对恢复。例如,任一设备可向其存储的会话信息应用超时时段。如果结束所存储的会话信息所属于的配对验证会话,并且随后在超时时段内未启动配对恢复,那么可使所存储的会话信息无效(例如,通过删除它或将其标记为无效而实际未将其删除),由此防止未来配对恢复操作的成功。每个设备可选择自己的超时时段。

在一些实施方案中,附件或控制器可响应于各种事件来使所存储的会话信息无效。例如,重新启动或电力重启设备可造成设备使其存储的会话信息无效。在一些实施方案中,设备可限制其存储会话信息的会话的数量。例如,附件可保存仅最近配对验证会话的会话信息;相同的控制器可使用配对恢复创建新的配对验证会话,但是不同的控制器将需要使用配对验证。或者,附件可为多个不同的控制器中的每个保存最近会话信息。应当注意,在使先前会话信息在配对恢复期间无效的情况下,附件无需针对每一个控制器存储多于一个会话的信息。类似考虑适用于控制器,其可保存每附件的会话信息,或仅最近会话的信息而不管附件如何。

在一些实施方案中,控制器或附件可限制对应设备(附件或控制器)可使用配对恢复的次数。例如,由控制器或附件存储的所存储的会话信息可包括每次发生配对恢复时递增的计数;当计数达到最大值时,控制器或附件可使会话信息无效,并且将需要配对验证建立任何另外的会话。

在考虑到不同选择的成本和益处的情况下,可以在每个设备基础上建立关于会话信息的存储和无效的策略(包括是否允许配对恢复)。

示例性设备

本文所述的实施方案可实现在可具有一般常规设计的电子设备中。此类设备可适于符合支持命令与控制操作的统一附件协议,通过这个协议,控制器(第一电子设备)可控制附件(第二电子设备)的操作。在一些情况下,例如在如上所述的协调器或隧道的情况下,设备可将控制器和附件的各个特征或方面组合。

图14示出根据本发明的实施方案的控制器1400的简化框图。控制器1400可实现本文所述的控制器功能、行为和能力中的任何或全部,以及未明确描述的其他功能、行为和能力。控制器1400可包括处理子系统1410、存储设备1412、用户界面1414、通信接口1416、安全存储模块1418和密码逻辑模块1420。控制器1400还可包括其他部件(未明确示出),诸如电池、电力控制器和可操作以提供各种增强能力的其他部件。在各种实施方案中,控制器1400可在台式计算机、膝上型计算机、平板电脑、智能电话、其他移动电话、可穿戴计算设备或具有任何期望形状因数的其他系统中实现。此外,如上所述,控制器1400可部分地在基站中实现,并部分地在与基站通信并提供用户接口的移动单元中实现。

存储设备1412可以例如使用磁盘、闪存存储器或任何其他非暂时性存储介质或介质组合来实现,并且可以包括易失性和/或非易失性介质。在一些实施方案中,存储设备1412可存储将由处理子系统1410执行的一个或多个应用程序和/或操作系统程序,包括用于实现如由控制器执行的上述各种操作的程序。例如,存储设备1412可存储统一的控制器应用程序,其可读取附件描述记录并基于其中信息来生成用于控制该附件的图形用户界面(例如,如上文引用的美国申请14/614,914中所述的)。在一些实施方案中,本文所述的控制器功能的部分(或全部)可在操作系统程序而非应用程序中实现。在一些实施方案中,存储设备1412还可存储为特定附件或特定类别的附件(例如,用于管理ip相机附件的ip相机应用程序或用于与门锁附件交互的安全应用程序)设计的应用程序。存储设备1412还可存储由控制器1400在其操作过程中产生或使用的其他数据,包括用于一个或多个附件的附件属性数据库的表示。

用户界面1414可包括输入设备诸如触末板、触摸屏、滚轮、点击式转盘、拨号盘、按钮、开关、小键盘、麦克风等;以及输出设备诸如视频屏幕、指示灯、扬声器、耳机接口等,连同支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)。用户可操作用户界面1414的输入设备以调用控制器1400的功能,并且可经由用户界面1414的输出设备来查看和/或收听来自控制器1400的输出。

处理子系统1410可被实现为一个或多个集成电路,例如一个或多个单核或多核微处理器或微控制器,这些微处理器或微控制器的示例在本领域中是已知的。在操作中,处理系统1410可控制控制器1400的操作。在各种实施方案中,处理子系统1410可响应于程序代码来执行各种程序,并且可维护多个同时执行的程序或过程。在任何给定时间,待执行的一些或全部程序代码可以驻留在处理子系统1410和/或诸如存储设备1412的存储介质中。

通过合适的编程,处理子系统1410可为控制器1400提供各种功能。例如,在一些实施方案中,处理子系统1410可实现如由控制器实现的上述各种过程(或其部分)。处理子系统1410还可以执行其他程序来控制控制器1400的其他功能,包括可存储在存储设备1412中的应用程序。在一些实施方案中,这些应用程序可例如通过生成待发送至附件的消息和/或通过从附件接收响应与附件进行交互。这种交互可由附件管理守护进程和/或例如如上所述其他操作系统进程促成。

通信接口1416可为控制器1400提供语音和/或数据通信能力。在一些实施方案中,通信接口1416可以包括:用于访问无线语音和/或数据网络(例如,使用蜂窝电话技术、数据网络技术诸如3g、4g/lte、wi-fi、其他ieee802.11系列标准)或其他移动通信技术,或它们的任何组合)的射频(rf)收发器部件、用于短范围无线通信(例如,使用蓝牙标准和/或蓝牙le标准、nfc等)的部件和/或其他部件。在一些实施方案中,除了或代替无线接口,通信接口1416可以提供有线网络连接性(例如以太网)。通信接口1416可使用硬件部件(例如,驱动电路、天线、调制器/解调器、编码器/解码器,以及其他模拟信号处理电路和/或数字信号处理电路)与软件部件的组合来实现。在一些实施方案中,通信接口1416可使用相同传输手段或不同传输手段同时或在不同时间支持多个通信信道。

安全存储模块1418可为可安全地存储用于控制器1400的密码信息的集成电路等等。可存储在安全存储模块1418内的信息的示例包括控制器的长期公共密钥和私人密钥1422(如上所述的ltpkc、ltskc)以及配对附件1424列表(例如,将附件id映射到如上所述已完成配对设置或配对添加过程的附件的附件长期公共密钥ltpka的查找表)。

在一些实施方案中,密码操作可已在与安全存储模块1418通信的密码逻辑模块1420中实现。在物理上,密码逻辑模块1420可根据需要在具有安全存储模块1418的相同集成电路或不同集成电路(例如,处理子系统1410中的处理器)中实现。密码逻辑模块1420可包括实现或支持控制器1400的密码操作的各种逻辑电路(根据需要是固定的或可编程的),包括上述任何或所有的密码操作。安全存储模块1418和/或密码逻辑模块1420可对控制器1400的其余部分表现为“黑盒”。因此,例如,通信接口1416可以加密形式接收它不能解密的消息,并且可简单地将消息传递到处理子系统1410。处理子系统1410也有可能无法解密消息,但其可将消息识别为加密的并将其传递到密码逻辑模块1420。密码逻辑模块1420可解密消息(例如,使用从安全存储模块1418提取的信息)并确定哪些信息要返回到处理子系统1410。因此,某些信息可仅在安全存储模块1418和密码逻辑模块1420内可用。如果安全存储模块1418和密码逻辑模块1420在仅从内部安全储存库执行代码的单个集成电路上实现,则这可能使信息提取非常困难,从而可提供高度的安全性。其他具体实施也是可能的。

图15示出根据本发明的实施方案的附件1500的简化框图。附件1500可实现本文所述的附件功能、行为和能力中的任何或全部,以及未明确描述的其他功能、行为和能力。附件1500可包括存储设备1528、处理子系统1530、用户界面1532、附件专用硬件1534、通信接口1536、安全存储模块1538和密码逻辑模块1540。附件1500还可包括其他部件(未明确示出),诸如电池、电力控制器和可操作以提供各种增强能力的其他部件。

附件1500表示可由控制器诸如控制器1400操作的一大类附件,并且此类附件在能力、复杂性和形状因数方面可能有很大不同。各种附件可包括图15中未明确示出的部件,包括但不限于具有固定或可移除存储介质的存储设备(磁盘、闪存存储器等);视频屏幕、扬声器或用于连接到外部音频/视频设备的端口;相机部件,诸如镜头、图像传感器和用于该图像传感器的控件(例如,孔径,缩放,曝光时间、帧速率等);用于记录音频的麦克风(单独地或与视频录制结合)等。

存储设备1528可以例如使用磁盘、闪存存储器或任何其他非暂时性存储介质或介质组合来实现,并且可以包括易失性和/或非易失性介质。在一些实施方案中,存储设备1528可存储将由处理子系统1530执行的一个或多个程序(例如,固件)以及与特定附件行为相关的操作,所述一个或多个程序包括用于实现如由附件执行的上述各种操作的程序。存储设备1528还可存储可提供给控制器设备(例如,如上所述)的属性数据库或附件定义记录。存储设备1528还可存储附件状态信息和可在附件1500的操作期间使用的任何其他数据。

处理子系统1530可包括例如执行程序代码以便执行与附件1500相关联的各种功能的一个或多个单核或多核微处理器和/或微控制器。例如,处理子系统1530可实现如由附件实现的上述各种过程(或其部分),例如通过执行存储在存储设备1528中的程序代码实现。处理子系统1530还可执行其他程序以控制附件1530的其他功能。在一些情况下,由处理子系统1530执行的程序可以例如通过生成要发送到控制器的消息和/或从控制器接收消息来与控制器(例如,控制器1400)交互。

用户界面1532可包括用户可操作输入设备诸如触摸板、触摸屏、滚轮、点击式转盘、拨号盘、按钮、开关、小键盘、麦克风等;以及输出设备诸如视频屏幕、指示灯、扬声器、耳机插孔等,连同支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)。根据特定附件1500的具体实施,用户可操作用户界面1532的输入设备以调用附件1500的功能,并且可经由用户界面1532的输出设备来查看和/或收听来自附件1500的输出。一些附件可仅提供最小用户界面或根本不提供用户界面。在附件不具有用户界面的情况下,用户仍可使用控制器(例如,控制器1400)与附件交互。

附件专用硬件1534可包括可存在于附件1500中以启用其功能的任何其他部件。例如,在各种实施方案中,附件专用硬件1534可包括使用固定或可移除存储介质的一个或多个存储设备;gps接收机;电源和/或电源管理电路;相机;麦克风;一个或多个致动器;控制开关;环境传感器(例如,温度传感器、压力传感器、加速度计、化学传感器等)等等。应当理解,可通过提供适当附件专用硬件1534来支持任何类型附件功能,并且附件专用硬件可包括机械以及电或电子部件。

通信接口1536可为附件1500提供语音和/或数据通信能力。在一些实施方案中,通信接口1536可以包括:用于访问无线语音和/或数据网络(例如,使用蜂窝电话技术、数据网络技术诸如3g、4g/lte、wi-fi、其他ieee802.11系列标准)或其他移动通信技术,或它们的任何组合)的射频(rf)收发器部件、用于短范围无线通信(例如,使用蓝牙标准和/或蓝牙le标准、nfc等)的部件和/或其他部件。在一些实施方案中,除了或代替无线接口,通信接口1536可以提供有线网络连接性(例如以太网)。通信接口1536可使用硬件部件(例如,驱动电路、天线、调制器/解调器、编码器/解码器,以及其他模拟信号处理电路和/或数字信号处理电路)与软件部件的组合来实现。在一些实施方案中,通信接口1536可使用相同传输手段或不同传输手段同时或在不同时间支持多个通信信道。

安全存储模块1538可为可安全地存储用于附件1500的密码信息的集成电路等等。可存储在安全存储模块1538内的信息的示例包括附件的长期公共密钥和私人密钥1542(如上所述的ltpka、ltska)以及配对的控制器1544列表(例如,将控制器id映射到如上所述已完成配对设置或配对添加过程的控制器的控制器长期公共密钥ltpkc的查找表)。在一些实施方案中,可将安全存储模块1538省略;可将密钥和配对的控制器列表存储在存储设备1528中。

在一些实施方案中,密码操作可已在与安全存储模块1538通信的密码逻辑模块1540中实现。在物理上,密码逻辑模块1540可根据需要在具有安全存储模块1538的相同集成电路或不同集成电路(例如,处理子系统1530中的处理器)中实现。密码逻辑模块1540可包括实现或支持附件1500的密码操作的各种逻辑电路(根据需要是固定的或可编程的),包括上述任何或所有的密码操作。安全存储模块1538和/或密码逻辑模块1540可对附件1500的其余部分表现为“黑盒”。因此,例如,通信接口1536可以加密形式接收它不能解密的消息,并且可简单地将消息传递到处理子系统1530。处理子系统1530也有可能无法解密消息,但其可将消息识别为加密的并将其传递到密码逻辑模块1540。密码逻辑模块1540可解密消息(例如,使用从安全存储模块1538提取的信息)并确定哪些信息要返回到处理子系统1530。因此,某些信息可仅在安全存储模块1538和密码逻辑模块1540内可用。如果安全存储模块1538和密码逻辑模块1540在仅从内部安全储存库执行代码的单个集成电路上实现,则这可能使信息提取非常困难,从而可提供高度的安全性。其他具体实施也是可能的。

附件1500可为与控制器1400进行交互的任何电子装置。在一些实施方案中,控制器1400可通过如上所述的附件1500的操作来提供远程控制。例如,控制器1400可为附件1500提供远程用户界面,所述界面可包括输入和输出控件(例如,用于显示从附件1500获得的当前状态信息的显示屏和用于允许状态信息的改变的输入控件诸如触摸屏覆盖)。在各种实施方案中,控制器1400可以控制附件1500的任何功能并且还可从附件1500接收数据。

应当理解,本文所述的系统配置和部件是示例性的,并且变型和修改是可能的。应当理解,控制器1400的具体实施可执行上文所述的由控制器执行的所有操作,并且附件1500的具体实施可执行上文所述的由附件执行的任何或所有操作。代理、网桥、隧道或协调器可按需要使用相同硬件或不同硬件来组合控制器1400和附件1500的部件。控制器和/或附件可能具有本文并未明确描述的其他能力(例如,移动电话、全球定位系统(gps)、宽带数据通信、互联网连接等)。根据具体实施,这些设备可以进行互操作,以便提供由任一(或两个)设备支持的任何功能性或提供在每个设备中部分地实现的功能性。在一些实施方案中,特定附件可具有无法经由特定控制器访问或调用但可经由另一控制器或通过直接与附件交互访问的某些功能。

此外,尽管本文参考特定块描述了控制器和附件,但应当理解,定义这些块是为了描述的方便,而并非旨在暗示部件部分的特定物理布置。此外,块不必对应于物理上不同的部件。例如通过对处理器进行编程或提供适当的控制电路并且各个块根据获得初始配置的方式可为可重新配置的或不可重新配置的,块可被配置为执行各种操作。可在包括使用电路和软件的任何组合实现的电子设备在内的各种设备中实现本发明的实施方案。

另外的实施方案

虽然已结合具体实施方案对本发明进行了描述,但本领域的技术人员将认识到,许多修改形式是可能的。控制器和附件可使用各种传输手段来通信,并且本文参考作为传输的蓝牙le和/或http/ip描述的技术可适用于其他传输。可根据需要来修改用于建立配对、配对验证会话、以及加密请求和响应的有效载荷的特定过程。附件属性数据库的结构也可被修改,并且属性数据库可包括各种辅助服务以促进与控制器的通信。在附件或控制器之间的连接可以是直接的,或者经由如上所述的隧道或代理实现。

可使用专用部件和/或可编程处理器和/或其他可编程设备的任意组合来实现本发明的实施例。本文所述的各种过程可以任何组合方式在同一处理器或不同处理器上实现。在部件被描述为被配置为执行某些操作的情况下,可例如通过设计电子电路以执行操作、通过对可编程电子电路(诸如微处理器)进行编程以执行操作或它们的任何组合来实现此类配置。另外,尽管上述实施方案可能参考了具体硬件部件和软件部件,但本领域的技术人员应当理解,也可使用硬件部件和/或软件部件的不同组合,并且被描述为在硬件中实现的特定操作也可能在软件中被实现,或反之亦然。

结合本发明的各种特征的计算机程序可被编码并存储在各种计算机可读存储介质上;合适的介质包括磁盘或磁带、诸如光盘(cd)或dvd(数字多功能光盘)的光学存储介质、闪存存储器以及其他非暂态介质。(应当理解,数据的“存储”不同于使用暂态介质诸如载波的数据传播。)可将利用程序代码就编码的计算机可读介质与兼容的电子设备封装在一起,或者该程序代码可独立于电子设备提供(例如,经由互联网下载或作为单独封装的计算机可读存储介质)。

因此,尽管已相对于具体实施例描述了本发明,但应当理解,本发明旨在覆盖以下权利要求范围内的所有修改形式和等同形式。

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