用于虚拟物联网(IoT)装置和中心的系统和方法与流程

文档序号:13742430阅读:401来源:国知局
用于虚拟物联网(IoT)装置和中心的系统和方法与流程



背景技术:

本发明整体涉及计算机系统领域。更具体地讲,本发明涉及用于虚拟iot装置和中心(hub)的系统和方法。

相关领域说明

“物联网”是指互联网基础架构内可唯一识别的嵌入式装置的互连。最终,iot预计将导致新的种类广泛的应用,在这些应用中,几乎任何类型的物理事物可以提供关于其本身或其周围环境的信息和/或可以通过互联网上的客户端装置受到远程控制。

由于与连接性、功率和标准化缺乏有关的一些问题,物联网的开发和采用一直比较缓慢。例如,iot开发和采用所面临的一个障碍是,没有标准平台允许开发人员设计和提供新的iot装置及服务。为了进入iot市场,开发人员必须从头开始设计整个iot平台,包括支持所需的iot实现需要的网络协议和基础架构、硬件、软件和服务。因此,iot装置的每一家提供商都使用专有技术来设计和连接iot装置,这使得对最终用户而言,采用多种类型的iot装置是一项繁重的工作。iot采用所面临的另一个障碍是与iot装置的连接和供电有关的困难。例如,连接诸如冰箱、车库门开关、环境传感器、家用安防传感器/控制器等的电器需要电源来为每个连接的iot装置供电,并且这个电源通常定位不太方便(例如,冰箱内通常不存在交流电插座)。

附图说明

可结合下列附图从以下具体实施方式更好地理解本发明,其中:

图1a至图1b示出了iot系统架构的不同实施方案;

图2示出了根据本发明的一个实施方案的iot装置;

图3示出了根据本发明的一个实施方案的iot中心;

图4a至图4b示出了本发明用于控制和收集来自iot装置的数据并且生成通知的实施方案;

图5示出了本发明用于收集来自iot装置的数据并且生成来自iot中心和/或iot服务的通知的实施方案;

图6示出了中间移动装置收集来自固定iot装置的数据并将该数据提供给iot中心的系统的一个实施方案;

图7示出了本发明的一个实施方案中实施的中间连接逻辑;

图8示出根据本发明的一个实施方案的方法;

图9a示出了向iot装置提供程序代码和数据更新的实施方案;

图9b示出了向iot装置提供程序代码和数据更新的方法的实施方案;

图10示出了安全架构的一个实施方案的高级视图;

图11示出了其中使用用户身份模块(sim)来在iot装置上存储密钥的架构的一个实施方案;

图12a示出了其中使用条形码或qr代码来注册iot装置的一个实施方案;

图12b示出了其中使用条形码或qr代码进行配对的一个实施方案;

图13示出了用于使用iot中心对sim进行编程的方法的一个实施方案;

图14示出了用于向iot中心和iot服务注册iot装置的方法的一个实施方案;并且

图15示出了用于加密要发送给iot装置的数据的方法的一个实施方案;

图16a至图16b示出了本发明用于在iot服务和iot装置之间加密数据的不同实施方案;

图17示出了本发明用于执行安全密钥交换、生成公共密码、并使用该密码生成密钥流的实施方案;

图18示出根据本发明的一个实施方案的数据包结构;

图19示出了在一个实施方案中所采用的在不与iot装置正式配对的情况下向iot装置写入数据/从iot装置读取数据的技术;

图20示出了在本发明的一个实施方案中采用的一组示例性命令包;

图21示出了使用命令包的交易的示例性序列;

图22示出根据本发明的一个实施方案的方法;并且

图23a至图23c示出了根据本发明的一个实施方案的用于安全配对的方法;

图24示出了用于虚拟iot装置的架构的一个实施方案;

图25示出了在包含真实及虚拟iot装置的图形表示的用户装置上所显示的示例性图形用户界面;

图26示出了用于实施虚拟iot中心的架构的一个实施方案;

图27示出根据本发明的一个实施方案的方法;

图28示出了根据本发明的一个实施方案的用于虚拟装置配对的方法。

具体实施方式

在下面的描述中,出于解释的目的,本文陈述了许多特定细节以便透彻理解下文描述的本发明的实施方案。然而,本领域的技术人员将容易明白,可在没有这些特定细节中的一些的情况下实践本发明的实施方案。在其他情况下,为免模糊本发明的实施方案的基本原理,已熟知的结构和装置以框图形式示出。

本发明的一个实施方案包括一种物联网(iot)平台,开发人员可以利用该平台来设计和构建新的iot装置及应用。具体地讲,一个实施方案包括用于物联网装置的基础硬件/软件平台,该平台包括预定义的网络协议栈和iot中心,iot装置通过该iot中心连接到互联网。此外,一个实施方案包括一项iot服务,可以通过该iot服务如下所述地访问和管理iot中心和连接的iot装置。此外,iot平台的一个实施方案包括用以访问和配置iot服务、中心和连接的装置的iot应用程序或web应用(例如,在客户端装置上执行)。现有的在线零售商和其他网站运营商可以利用本文所述的iot平台容易地为现有用户群提供独特的iot功能。

图1a示出了其上可以实现本发明的实施方案的架构平台的概览。具体地讲,图示实施方案包括多个iot装置101至105,这些iot装置通过本地通信信道130通信地连接到中央iot中心110,该中央iot中心本身通过互联网220通信地联接到iot服务120。iot装置101至105中的每个iot装置最初可以(例如,使用下文描述的配对技术)与iot中心110配对以使得能够实现本地通信信道130中的每个本地通信信道。在一个实施方案中,iot服务120包括最终用户数据库122,用于维护从每个用户的iot装置收集的用户账户信息和数据。例如,如果iot装置包括传感器(例如,温度传感器、加速度计、热传感器、运动检测器等),则数据库122可以不断更新以存储由iot装置101-105收集的数据。存储在数据库122中的数据然后可以经由安装在用户装置135上的iot应用程序或浏览器(或者经由台式计算机或其他客户端计算机系统)使最终用户和网络客户端(例如,订阅了iot服务120的网站130)能够访问到。

iot装置101至105可以配备有各种类型的传感器以收集关于自身及其周围环境的信息,并且经由iot中心110将收集的信息提供给iot服务120、用户装置135和/或外部网站130。iot装置101至105中的一些可以响应于通过iot中心110发送的控制命令来执行指定的功能。下文提供由iot装置101至105收集的信息以及控制命令的多种具体示例。在下文描述的一个实施方案中,iot装置101是被设计为记录用户选择并将用户选择发送到iot服务120和/或网站的用户输入装置。

在一个实施方案中,iot中心110包括蜂窝无线电装置,以经由诸如4g(例如,移动wimax、lte)或5g蜂窝数据服务的蜂窝服务115建立到互联网220的连接。另选地或除此之外,iot中心110可以包括wifi无线电装置,以通过将iot中心110连接到互联网(例如,经由向最终用户提供互联网服务的互联网服务提供商)的wifi接入点或路由器116建立wifi连接。当然,应当注意,本发明的基本原理不限于任何特定类型的通信信道或协议。

在一个实施方案中,iot装置101至105是能够使用电池电量来长时间(例如,数年)运行的超低功率装置。为了节省功率,可以使用低功率无线通信技术诸如蓝牙低功耗(le)来实现本地通信信道130。在该实施方案中,iot装置101至105中的每个iot装置和iot中心110配备有蓝牙le无线电装置和协议栈。

如上所述,在一个实施方案中,该iot平台包括在用户装置135上执行以允许用户访问和配置所连接的iot装置101至105、iot中心110和/或iot服务120的iot应用程序或web应用。在一个实施方案中,该应用程序或web应用可以由网站130的运营者设计为向其用户群提供iot功能。如图所示,该网站可以维护包含与每个用户相关的账户记录的用户数据库131。

图1b示出了用于多个iot中心110至111、190的附加连接选项。在该实施方案中,单个用户可以在单个用户驻地180(例如,用户的家或工作地点)处现场安装有多个中心110至111。可以这样做来(例如)扩展连接所有iot装置101至105所需的无线范围。如图所示,如果用户具有多个中心110、111,则它们可以经由本地通信信道(例如,wifi、以太网、电力线网络等)连接。在一个实施方案中,中心110至111中的每个中心可以通过蜂窝连接115或wifi连接116(图1b中未明确示出)来建立与iot服务120的直接连接。另选地或除此之外,iot中心中的一者诸如iot中心110可以充当“主”中心,其向用户驻地180上的所有其他iot中心诸如iot中心111提供连接性和/或本地服务(如连接iot中心110和iot中心111的虚线所示)。例如,主iot中心110可以是建立与iot服务120的直接连接的唯一iot中心。在一个实施方案中,只有“主”iot中心110配备有蜂窝通信接口以建立与iot服务120的连接。这样,iot服务120和其他iot中心111之间的所有通信将流经主iot中心110。作为这个角色,主iot中心110可以具有附加的程序代码,以对在其他iot中心111和iot服务120之间交换的数据执行过滤操作(例如,在可能时,在本地服务于一些数据请求)。

不管iot中心110至111如何连接,在一个实施方案中,iot服务120将逻辑地将中心与用户相关联,并且将所有附接的iot装置101至105组合在能经由已安装有应用程序135的用户装置访问的单个综合性用户界面(和/或基于浏览器的界面)下。

在该实施方案中,主iot中心110和一个或多个从属iot中心111可以通过本地网络连接,该本地网络可以是wifi网络116、以太网和/或使用电力线通信(plc)网络(例如,其中网络的全部或部分通过用户的电力线运行)。另外,对于iot中心110至111,iot装置101至105中的每个iot装置可以使用诸如wifi、以太网、plc或蓝牙le的任何类型的本地网络信道与iot中心110至111互连。

图1b还示出了安装在第二用户驻地181处的iot中心190。几乎无限数量的此类iot中心190可以被安装和配置,以收集来自世界各地的用户驻地处iot装置191至192的数据。在一个实施方案中,可以为同一用户配置两个用户驻地180至181。例如,一个用户驻地180可以是用户的主要住宅,而另一个用户驻地181可以是用户的度假屋。在这种情况下,iot服务120将逻辑地将iot中心110至111、190与用户相关联,并将所有附接的iot装置101至105、191至192组合在能经由已安装有应用程序135的用户装置访问的单个综合性用户界面(和/或基于浏览器的界面)下。

如图2所示,iot装置101的一个示例性实施方案包括用于存储程序代码和数据201至203的存储器210、以及用于执行程序代码和处理数据的低功率微控制器200。存储器210可以是诸如动态随机存取存储器(dram)的易失性存储器,或者可以是诸如闪存存储器的非易失性存储器。在一个实施方案中,非易失性存储器可用于永久存储,并且易失性存储器可用于在运行时执行程序代码和数据。此外,存储器210可以集成在低功率微控制器200内,或者可以经由总线或通信结构连接到低功率微控制器200。本发明的基本原理不限于存储器210的任何特定实现方式。

如图所示,所述程序代码可以包括定义要由iot装置201执行的一组应用特定的功能的应用程序代码203、以及包括可由iot装置101的应用开发人员利用的一组预定义构建块的库代码202。在一个实施方案中,库代码202包括实现iot装置所需的一组基本功能,诸如用于使得能够实现iot装置101中的每个iot装置和iot中心110之间的通信的通信协议栈201。如上所述,在一个实施方案中,通信协议栈201包括蓝牙le协议栈。在该实施方案中,蓝牙le无线电装置和天线207可以被集成在低功率微控制器200内。然而,本发明的基本原理不限于任何特定的通信协议。

图2中所示的具体实施方案还包括用以接收用户输入并向低功率微控制器提供该用户输入的多个输入装置或传感器210,低功率微控制器根据应用程序203和库代码202处理该用户输入。在一个是实施方案中,输入装置中的每个输入装置包括用于向最终用户提供反馈的led209。

另外,图示实施方案包括用于向低功率微控制器供电的电池208。在一个实施方案中,使用不可充电的纽扣电池。然而,在一个另选的实施方案中,可以使用集成的可充电电池(例如,通过将iot装置连接到交流电源(未示出)来充电)。

还提供用于产生音频的扬声器205。在一个实施方案中,低功率微控制器299包括用于解码压缩音频流(例如,诸如mpeg-4/高级音频编码(aac)流)以在扬声器205上产生音频的音频解码逻辑。另选地,低功率微控制器200和/或应用代码/数据203可以包括数字采样的音频片段,以在用户经由输入装置210输入选择时向最终用户提供言语反馈。

在一个实施方案中,基于iot装置101被设计用于的特定应用,可以在iot装置101上包括一个或多个其他/另选的i/o装置或传感器250。例如,可以包括环境传感器以测量温度、压力、湿度等。如果将iot装置用作安防装置,则可以包括安防传感器和/或门锁开启器。当然,这些示例仅仅是为了举例说明的目的而提供的。本发明的基本原理不限于任何特定类型的iot装置。事实上,考虑到配备有库代码202的低功率微控制器200的高可编程性质,应用开发人员可以容易地开发新的应用代码203和新的i/o装置250以对于几乎任何类型的iot应用与低功率微控制器交互。

在一个实施方案中,低功率微控制器200还包括安全密钥存储部,用于存储用于加密通信和/或生成签名的加密密钥。另选地,密钥可以被保护在用户识别模块(sim)中。

在一个实施方案中,包括唤醒接收器207以将iot装置从几乎不消耗功率的超低功率状态中唤醒。在一个实施方案中,唤醒接收器207被配置为响应于从如图3所示的配置在iot中心110上的唤醒发射器307接收到的唤醒信号来使iot装置101退出该低功率状态。具体地讲,在一个实施方案中,发射器307和接收器207一起形成电谐振变压器电路,诸如特斯拉线圈。在操作中,当中心110需要将iot装置101从极低功率状态唤醒时,能量经由射频信号从发射器307发送到接收器207。由于此能量传递,iot装置101可以被配置成在处于低功率状态时几乎不消耗功率,因为它不需要连续地“听取”来自中心的信号(如使用允许装置通过网络信号被唤醒的网络协议的情况那样)。更确切地说,iot装置101的微控制器200可以被配置为通过使用从发射器307以电学方式发送到接收器207的能量而在被有效地掉电之后被唤醒。

如图3所示,iot中心110还包括用于存储程序代码和数据305的存储器317、以及用于执行程序代码和处理数据的硬件逻辑301诸如微控制器。广域网(wan)接口302和天线310将iot中心110连接到蜂窝服务115。另选地,如上所述,iot中心110还可以包括本地网络接口(未示出),诸如wifi接口(和wifi天线)或以太网接口,用于建立局域网通信信道。在一个实施方案中,硬件逻辑301还包括安全密钥存储部,用于存储用于加密通信和生成/验证签名的加密密钥。另选地,密钥可以被保护在用户识别模块(sim)中。

本地通信接口303和天线311建立与iot装置101至105中的每个iot装置的本地通信信道。如上所述,在一个实施方案中,本地通信接口303/天线311实施蓝牙le标准。然而,本发明的基本原理不限于用于建立与iot装置101至105的本地通信信道的任何具体协议。虽然在图3中被示出为单独的单元,但wan接口302和/或本地通信接口303可以嵌入在与硬件逻辑301相同的芯片内。

在一个实施方案中,程序代码和数据包括通信协议栈308,该通信协议栈可以包括分开的堆栈来用于通过本地通信接口303和wan接口302进行通信。此外,可以将装置配对程序代码和数据306存储在存储器中以允许iot中心与新的iot装置配对。在一个实施方案中,为每个新的iot装置101至105分配唯一的代码,在配对过程中将该唯一代码传送到iot中心110。例如,该唯一代码可以嵌入在iot装置上的条形码中,并且可以由条形码读取器106读取,或者可以通过本地通信信道130传送。在一个另选的实施方案中,该唯一id代码被磁性地嵌入在iot装置上,并且iot中心具有磁传感器诸如射频id(rfid)或近场通信(nfc)传感器,以在iot装置101在距离iot中心110几英寸内移动时检测该代码。

在一个实施方案中,一旦已经传送该唯一id,iot中心110就可以通过以下方式来验证该唯一id:查询本地数据库(未示出)、执行散列来验证该代码是否可接受、以及/或者与iot服务120、用户装置135和/或网站130通信来校验该id代码。在一个实施方案中,一旦经校验,iot中心110就和iot装置101配对并且将配对数据存储在存储器317中(如上所述,该存储器可以包括非易失性存储器)。一旦配对完成,iot中心110就可以与iot装置101连接以执行本文所述的各种iot功能。

在一个实施方案中,运行iot服务120的组织可以提供iot中心110和基本硬件/软件平台,以允许开发人员容易地设计新的iot服务。具体地讲,除了iot中心110之外,还可以为开发人员提供软件开发工具包(sdk)来更新在中心110内执行的程序代码和数据305。另外,对于iot装置101,sdk可以包括针对基础iot硬件(例如,图2所示的低功率微控制器200和其他组件)设计的一组广泛的库代码202以有利于设计各种不同类型的应用101。在一个实施方案中,sdk包括开发人员仅需要在其中为iot装置指定输入和输出的图形设计界面。已经为开发人员准备好了所有联网代码,包括允许iot装置101连接到中心110和服务120的通信栈201。此外,在一个实施方案中,sdk还包括用于促进为移动装置(例如,iphone和android装置)设计应用程序的库代码基。

在一个实施方案中,iot中心110管理iot装置101至105和iot服务120之间的连续双向数据流。在需要实时更新到iot装置101至105/从这些iot装置更新的情况下(例如,在用户需要查看安防装置或环境读数的当前状态的情况下),iot中心可以保持打开的tcp套接字以提供对用户装置135和/或外部网站130的定期更新。用于提供更新的具体联网协议可以根据底层应用的需求进行调整。例如,在某些情况下,如果连续双向流可能没有意义,则可以使用简单的请求/响应协议来在需要时收集信息。

在一个实施方案中,iot中心110和iot装置101至105都可以通过网络自动升级。具体地讲,当iot中心110有新的更新可用时,它可以自动地从iot服务120下载并安装此更新。它可以首先将更新的代码复制到本地存储器中,运行并验证此更新,然后替换较旧的程序代码。类似地,当iot装置101至105中的每个iot装置有更新可用时,最初可以由iot中心110下载这些更新并将其推送到iot装置101至105中的每个iot装置。然后,每个iot装置101至105可以采用类似于上述用于iot中心的方式应用更新,并将更新的结果报告回iot中心110。如果更新成功,则iot中心110可以从其存储器中删除此更新,并记录安装在每个iot装置上的最新的代码版本(例如,使得它可以继续检查每个iot装置是否有新的更新)。

在一个实施方案中,iot中心110通过交流电源供电。具体地讲,iot中心110可以包括具有变压器的供电单元390,其中变压器用于将通过交流电源线提供的交流电压转换为较低的直流电压。

图4a示出了本发明使用iot系统执行通用远程控制操作的一个实施方案。具体地讲,在该实施方案中,一组iot装置101-103分别配备有红外(ir)和/或射频(rf)发射器401-403,用于发送远程控制代码以控制各种不同类型的电子设备,包括空调/加热器430、照明系统431和视听设备432(仅举几例)。在图4a所示的实施方案中,iot装置101-103还分别配备有传感器404-406,用于检测它们控制的装置的操作,如下所述。

例如,iot装置101中的传感器404可以是用于感测当前温度/湿度的温度和/或湿度传感器,并且响应地基于当前所需的温度来控制空调/加热器430。在该实施方案中,空调/加热器430是被设计为经由远程控制装置(通常是其本身具有嵌入其中的温度传感器的遥控器)来控制的空调/加热器。在一个实施方案中,用户经由安装在用户装置135上的应用程序或浏览器向iot中心110提供所需的温度。在iot中心110上执行的控制逻辑412接收来自传感器404的当前温度/湿度数据,并且响应地向iot装置101发送命令,以根据所需的温度/湿度来控制ir/rf发射器401。例如,如果温度低于所需温度,则控制逻辑412可以经由ir/rf发射器401向空调/加热器发送命令以升高温度(例如,通过关闭空调或者打开加热器)。该命令可以包括存储在iot中心110上的数据库413中的必要远程控制代码。另选地或除此之外,iot服务120可以实施控制逻辑421,以基于指定的用户偏好和所存储的控制代码422来控制电子设备430-432。

所示示例中的iot装置102被用于控制照明431。具体而言,iot装置102中的传感器405可以是光电传感器或光电检测器,其被配置为检测由灯具431(或其他照明设备)产生的光的当前亮度。用户可以经由用户装置135向iot中心110指定所需的照明水平(包括开或关的指示)。作为响应,控制逻辑412将向ir/rf发射器402发送命令以控制灯431的当前亮度水平(例如,如果当前亮度太低则增加照明,或者如果当前亮度太高则减少照明;或者只是打开灯或关闭灯)。

所示示例中的iot装置103被配置为控制视听设备432(例如,电视机、a/v接收器、有线/卫星接收器、appletvtm等等)。iot装置103中的传感器406可以是用于检测当前环境音量水平的音频传感器(例如,麦克风和相关联的逻辑)和/或基于电视机产生的光来检测电视机的开启关闭情况的光电传感器(例如,通过测量特定光谱内的光)。另选地,传感器406可包括连接到视听设备的温度传感器,以基于所检测到的温度来检测音频设备的开启关闭情况。再次,响应于经由用户装置135的用户输入,控制逻辑412可以经由iot装置103的ir发射器403向视听设备发送命令。

应该指出的是,以上仅是本发明的一个实施方案的例示性示例。本发明的基本原理不限于由iot装置控制的任何特定类型的传感器或设备。

在iot装置101-103经由蓝牙le连接而耦接到iot中心110的实施方案中,传感器数据和命令通过蓝牙le信道发送。然而,本发明的基本原理不限于蓝牙le或任何其他通信标准。

在一个实施方案中,控制每个电子设备所需的控制代码被存储在iot中心110上的数据库413中和/或iot服务120上的数据库422中。如图4b所示,控制代码可以从用于iot服务120上所维护的不同件设备的控制代码422的主数据库被提供给iot中心110。最终用户可以指定要经由在用户装置135上执行的应用程序或浏览器来控制的电子(或其他)设备的类型,并且作为响应,iot中心上的远程控制代码学习模块491可以从iot服务120上的远程控制代码数据库492检索所需的ir/rf代码(例如,用唯一的id来识别每个电子设备)。

另外,在一个实施方案中,iot中心110配备有ir/rf接口490,以允许远程控制代码学习模块491直接从与电子设备一起提供的原始远程控制器495“学习”新的远程控制代码。例如,如果远程控制数据库中不包括用于与空调430一起提供的原始远程控制器的控制代码,则用户可以经由用户装置135上的应用程序/浏览器与iot中心110进行交互,以教导iot中心110由原始远程控制器产生的各种控制代码(例如,增加温度、降低温度等)。一旦学习了远程控制代码,它们就可以存储在iot中心110上的控制代码数据库413中,并且/或者被发送回iot服务120,以便被包括在中央远程控制代码数据库492中(并且随后被具有相同空调单元430的其他用户使用)。

在一个实施方案中,iot装置101-103中的每个iot装置具有非常小的外形因数,并且可以使用双面胶带、小钉子、磁性附件等附接在它们各自的电子设备430-432上或附近。为了控制某件设备(诸如空调430),需将iot装置101放置得足够远以使得传感器404能够准确地测量家中的环境温度(例如,若将iot装置直接放置在空调上,则当空调运行时温度测量值会太低,而当加热器运行时温度测量值会太高)。相比之下,用于控制照明的iot装置102可以放置在照明器具431上或其附近,以便传感器405检测当前照明水平。

除了提供所述的总体控制功能之外,iot中心110和/或iot服务120的一个实施方案向终端用户发送与每个电子设备的当前状态相关的通知。该通知可以是文本消息和/或特定于应用程序的通知,其继而可以被显示在用户的移动装置135的显示器上。例如,如果用户的空调已经打开了一段较长时间但是温度没有发生变化,则iot中心110和/或iot服务120可以向用户发送空调未正常工作的通知。如果用户不在家(这可以通过运动传感器来检测,或基于当前检测到的用户位置来检测),并且传感器406指示视听设备430开启或者传感器405指示灯开启,则可向用户发送通知,询问用户是否想要关闭视听设备432和/或灯431。针对任何设备类型都可以发送相同类型的通知。

一旦用户接收到通知,他/她就可以通过用户装置135上的应用程序或浏览器来远程地控制电子设备430-432。在一个实施方案中,用户装置135是触摸屏装置,并且应用程序或浏览器显示出带有用于控制设备430-432的用户可选按钮的远程控制器图像。用户收到通知后,可以打开图形远程控制器,关闭或调整各种不同的设备。如果经由iot服务120连接,则用户的选择可以从iot服务120转发到iot中心110,然后将通过控制逻辑412来控制设备。另选地,用户输入可以从用户装置135直接发送到iot中心110。

在一个实施方案中,用户可以对iot中心110上的控制逻辑412进行编程,以对电子设备430-432执行各种自动控制功能。除了如上所述保持所需的温度、亮度水平和音量水平之外,如果检测到某些条件,则控制逻辑412可以自动关闭电子设备。例如,如果控制逻辑412检测到用户不在家并且空调未工作,则可以自动关闭空调。类似地,如果用户不在家,并且传感器406指示视听设备430开启或者传感器405指示灯开启,则控制逻辑412可以经由ir/rf发射器403和402分别自动发送命令,以关闭视听设备和灯。

图5示出了配备有用于监视电子设备530-531的传感器503-504的iot装置104-105的另外的实施方案。具体地讲,本实施方案的iot装置104包括温度传感器503,其可以放置在炉灶530上或该炉灶附近,以检测炉灶何时仍然开着。在一个实施方案中,iot装置104将由温度传感器503测量的当前温度发送到iot中心110和/或iot服务120。如果检测到炉灶打开超过阈值时间段(例如,基于所测量的温度),则控制逻辑512可以向最终用户的装置135发送通知,告知用户炉灶530处于开启状态。另外,在一个实施方案中,iot装置104可以包括控制模块501,以响应于接收到来自用户的指令而关闭炉灶或自动地(如果控制逻辑512被用户编程为这样做)关闭炉灶。在一个实施方案中,控制逻辑501包括切断炉灶530的电力或供气的开关。然而,在其他实施方案中,控制逻辑501可被集成在炉灶内。

图5还示出了具有运动传感器504的iot装置105,用于检测某些类型的电子设备(诸如,洗衣机和/或烘干机)的运动。可用到的另一种传感器是用于检测环境音量水平的音频传感器(例如,麦克风和逻辑)。如同上述其他实施方案一样,如果满足某些指定的条件(例如,如果检测到运动进行了一段较长时间,则指示洗衣机/烘干机未关闭),则该实施方案可以向最终用户发送通知。虽然未在图5中示出,iot装置105还可以配备有控制模块,以自动地和/或响应于用户输入来关闭洗衣机/烘干机531(例如,通过关断电/气)。

在一个实施方案中,具有控制逻辑和开关的第一iot装置可以被配置为关闭用户家中的所有电力,而具有控制逻辑和开关的第二iot装置可以被配置为关闭用户家中的所有供气。然后可以将具有传感器的iot装置设置在用户家中的电子设备或供气驱动的设备之上或附近。如果用户被通知存在特定的设备(例如,炉灶530)未关断,则用户随后可以发送关断家中所有电力或供气的命令,以防止造成损坏。另选地,iot中心110和/或iot服务120中的控制逻辑512可以被配置为在这种情况下自动关断电力或供气。

在一个实施方案中,iot中心110和iot服务120以周期性的间隔进行通信。如果iot服务120检测到与iot中心110的连接已丢失(例如,在指定的持续时间内未能从iot中心接收到请求或响应),则其将该信息传送给最终用户的设备135(例如通过发送文本消息或特定于应用程序的通知)。

用于通过中间装置传送数据的设备和方法

如上所述,因为用于互连iot装置的无线技术(诸如蓝牙le)通常是短程技术,所以如果用于实施iot的中心处于iot装置的范围之外,则iot装置将无法将数据传输到iot中心(反之亦然)。

为了克服这项缺陷,本发明的一个实施方案提供了一种用于iot装置的机构,其处于iot中心的无线范围之外,以便当一个或多个移动装置在范围内时周期性地与所述一个或多个移动装置连接。一旦建立连接,iot装置就可以将需要提供给iot中心的任何数据传输到移动装置,该移动装置然后将数据转发到iot中心。

如图6所示,一个实施方案包括iot中心110、超出iot中心110的范围的iot装置601,以及移动装置611。超出范围的iot装置601可以包括能够收集和传送数据的任何形式的iot装置。例如,iot装置601可以包括被配置在冰箱内的数据收集装置,以监视冰箱中可食用的食品、食用这些食品的用户以及当前温度。当然,本发明的基本原理不限于任何特定类型的iot装置。本文所述的技术可以使用任何类型的iot装置来实施,包括那些用于收集和传输用于以下家电的数据的装置:智能仪表、炉灶、洗衣机、烘干机、照明系统、hvac系统和视听设备(仅举几例)。

此外,在操作中的移动装置、图6所示的iot装置611可以是能够传送数据和存储数据的任何形式的移动装置。例如,在一个实施方案中,移动装置611是其上安装有应用程序的智能手机,以有利于本文所述的技术。在另一个实施方案中,移动装置611包括可穿戴设备,诸如附连到项链或手镯上的通信令牌、智能手表或健身装置。可穿戴令牌对于老年用户或未拥有智能手机装置的其他用户可能特别有用。

在操作中,超出范围的iot装置601可以周期性地或连续地检查与移动装置611的连接性。在建立起连接时(例如,作为用户在冰箱附近移动的结果),iot装置601上所收集的任何数据605被自动发送到移动装置611上的临时数据储存库615。在一个实施方案中,iot装置601和移动装置611使用低功率无线标准(诸如btle)来建立本地无线通信信道。在这样的情况下,最初可以使用已知的配对技术将移动装置611与iot装置601配对。

一旦已将数据传输到临时数据储存库,移动装置611就将在与iot中心110建立起通信时(例如,当用户在iot中心110的范围内走动时)传输数据。iot中心然后可以将数据存储在中央数据储存库413中,并且/或者通过因特网将数据发送到一个或多个服务和/或其他用户装置。在一个实施方案中,移动装置611可以使用不同类型的通信信道来将数据提供给iot中心110(可能是更高功率的通信信道,诸如wifi)。

超出范围的iot装置601、移动装置611和iot中心都可以用程序代码和/或逻辑来配置,以实施本文所述的技术。如图7所示,例如,iot装置601可以被配置有中间连接逻辑和/或应用,移动装置611可以被配置有中间连接逻辑/应用,并且iot中心110可以被配置有中间连接逻辑/应用721,以执行本文所述的操作。每个装置上的中间连接逻辑/应用可以用硬件、软件或其任何组合来实现。在一个实施方案中,iot装置601的中间连接逻辑/应用701搜索并建立与移动装置上的中间连接逻辑/应用711(其可以被实施为装置应用程序)的连接,以将数据传输到临时数据储存库615。移动装置611上的中间连接逻辑/应用701然后将数据转发到iot中心上的中间连接逻辑/应用,后者将数据存储在中央数据储存库413中。

如图7所示,每个装置上的中间连接逻辑/应用701、711、721可以基于当前应用来配置。例如,对于冰箱而言,连接逻辑/应用701可能仅需要周期性地发送几个数据包。对于其他应用(例如,温度传感器),连接逻辑/应用701可能需要传送更频繁的更新。

在一个实施方案中,iot装置601(而非移动装置611)可以被配置为建立与位于iot中心110的范围内的一个或多个中间iot装置的无线连接。在该实施方案中,iot中心范围之外的任何iot装置601可以通过使用其他iot装置形成“链”而链接到该中心。

另外,尽管为了简单起见,图6至图7仅示出了单个移动装置611,然而在一个实施方案中,不同用户的多个此类移动装置可以被配置为与iot装置601进行通信。而且,可以对多个其他iot装置实施相同的技术,从而在整个家中形成中间装置数据收集系统。

此外,在一个实施方案中,本文所述的技术可以用于收集各种不同类型的相关数据。例如,在一个实施方案中,每当移动装置611与iot装置601连接时,所收集的数据605就可包括用户的身份。这样,iot系统可以被用来跟踪家中不同用户的行为。例如,如果在冰箱内使用该系统,则所收集的数据605可包括经过冰箱的每个用户的身份、打开冰箱的每个用户的身份,以及每个用户所食用的特定食物。可以从其他类型的iot装置收集不同类型的数据。通过使用该数据,系统能够确定例如哪个用户洗了衣服、哪个用户在给定的日子看了电视、每个用户入眠和醒来的时间等等。所有这些来源于人群的数据然后可以在iot中心的数据储存库413内得到编译和/或被转发到外部服务或用户。

本文所述的技术的另一有益应用为用于监视可能需要帮助的老年用户。对于该应用,移动装置611可以是由老年用户佩戴的非常小的令牌,以收集用户家中不同房间里的信息。例如,每当用户打开冰箱时,该数据将与所收集的数据605会一起得以包括,并且经由令牌传输到iot中心110。然后,iot中心可以将数据提供给一个或多个外部用户(例如,照顾老年用户的儿童或其他个人)。如果在指定的时间段内(例如12小时)没有收集到数据,那么这意味着老年用户没有在家中移动和/或没有打开冰箱。然后,iot中心110或连接到iot中心的外部服务可以向这些其他个人发送警报通知,通知他们应该查看老年用户的情况。另外,所收集的数据605可以包括其他相关信息,诸如用户正在食用的食物、以及是否需要去一趟杂货店、老年用户是否正在看电视以及老年用户看电视的频率、老年人用户洗衣服的频率等。

在另一个具体实施中,如果洗衣机、冰箱、hvac系统等电子设备存在问题,则所收集的数据可以包括对需要更换的部件的指示。在这种情况下,可能会向技术人员发送通知,请求解决问题。技术人员然后带着所需的更换部件去往这户人家。

图8中示出根据本发明的一个实施方案的方法。该方法可在上述架构的环境内实施,但不限于任何具体架构。

在801处,在超出iot中心的范围的iot装置处周期性地收集数据(例如,打开冰箱门、食用的食品等)。在802处,iot装置周期性地或连续地检查与移动装置的连接性(例如,使用标准本地无线技术来建立连接,诸如btle标准所指定的连接)。如果建立了与移动装置的连接,则在802处确定该连接,然后在803处将所收集的数据传输到移动装置。在804处,移动装置将数据传输到iot中心、外部服务和/或用户。如上所述,如果移动装置已经连接(例如,经由wifi链路),则可以立即传输数据。

除了收集来自iot装置的数据之外,在一个实施方案中,本文所述的技术可以用于更新或以其他方式向iot装置提供数据。一个示例示于图9a中,其示出了具有需要安装在iot装置601(或一组这样的iot装置)上的程序代码更新901的iot中心110。程序代码更新可以包括系统更新、补丁、配置数据以及iot装置按用户需要进行操作所需的任何其他数据。在一个实施方案中,用户可以经由移动装置或计算机为iot装置601指定配置选项,然后将这些配置选项存储在iot中心110上,并使用本文所述的技术提供给iot装置。具体而言,在一个实施方案中,iot中心110上的中间连接逻辑/应用721与移动装置611上的中间连接逻辑/应用711进行通信,以将程序代码更新存储在临时存储装置615内。当移动装置611进入iot装置601的范围时,移动装置611上的中间连接逻辑/应用711与iot装置601上的中间连接逻辑/应用701相连接,以将程序代码更新提供给装置。在一个实施方案中,iot装置601然后可以进入自动更新过程,以安装新的程序代码更新和/或数据。

更新iot装置的方法示于图9b中。该方法可在上述系统架构的环境内实施,但不限于任何具体系统架构。

在900处,在iot中心和/或外部服务(例如,通过互联网联接到移动装置)上提供新的程序代码或数据更新。在901处,移动装置代表iot装置接收并存储程序代码或数据更新。在902处,iot装置和/或移动装置周期性地进行检查,以确定是否已经建立连接。如果在903处确定建立了连接,则在904处,将更新传输到iot装置并进行安装。

提高安全性的实施方案

在一个实施方案中,每个iot装置101的低功率微控制器200和iot中心110的低功率逻辑/微控制器301包括安全密钥存储器,用于存储由下述实施方案使用的加密密钥(参见,例如图10至图15和相关文字)。另选地,密钥可以被保护在如下所述的用户身份模块(sim)中。

图10示出了一种高级架构,使用公共密钥基础结构(pki)技术和/或对称密钥交换/加密技术来加密iot服务120、iot中心110和iot装置101-102之间的通信。

现将首先描述使用公共密钥/私钥对的实施方案,随后描述使用对称密钥交换/加密技术的实施方案。具体而言,在使用pki的实施方案中,唯一的公共密钥/私钥对与每个iot装置101-102、每个iot中心110和iot服务120相关联。在一个实施方案中,当建立新的iot中心110时,其公共密钥被提供给iot服务120,并且当建立新的iot装置101时,其公共密钥被提供给iot中心110和iot服务120。下文描述了用于在装置之间安全地交换公共密钥的各种技术。在一个实施方案中,所有公共密钥由所有接收装置已知的主密钥签名(即,证书的一种形式),使得任何接收装置都可以通过验证签名来验证公共密钥的有效性。因此,这些证书将被交换,而不仅仅是交换原始公共密钥。

如图所示,在一个实施方案中,每个iot装置101、102分别包括安全密钥存储装置1001、1003,用于安全存储每个设备的私钥。然后安全逻辑1002、1304利用安全存储的私钥来执行本文描述的加密/解密操作。类似地,iot中心110包括安全存储装置1011,用于存储iot中心私钥以及iot装置101-102和iot服务120的公共密钥;以及安全逻辑1012,用于使用密钥执行加密/解密操作。最后,iot服务120可以包括安全存储装置1021,用于安全存储其自身的私钥、各种iot装置和iot中心的公共密钥;以及安全逻辑1013,用于使用密钥加密/解密与iot中心和设备的通信。在一个实施方案中,当iot中心110接收到来自iot装置的公共密钥证书时,iot中心可以验证该证书(例如,通过如上所述使用主密钥验证签名),然后从其中提取公共密钥,并将公共密钥存储于其安全密钥存储器1011中。

举例来说,在一个实施方案中,当iot服务120需要向iot装置101传输命令或数据时(例如,解锁门的命令、读取传感器的请求、iot装置待处理/显示的数据等),安全逻辑1013使用iot装置101的公共密钥对该数据/命令进行加密以生成加密的iot装置数据包。在一个实施方案中,然后该安全逻辑使用iot中心110的公共密钥对iot装置数据包进行加密以生成iot中心数据包,并且将iot中心数据包传输到iot中心110。在一个实施方案中,服务120用上述的私有密钥或主密钥签署该加密消息,使得装置101可以验证它是否正从可信来源接收未更改的消息。装置101然后可以使用对应于私有密钥和/或主密钥的公共密钥来验证该签名。如上所述,可使用对称密钥交换/加密技术来代替公共/私有密钥加密。在这些实施方案中,可以为每个装置提供相同的对称密钥的副本以用于对签名进行加密和验证,而不是私密地存储密钥以及向其他装置提供对应的公共密钥。对称密钥算法的一个示例是高级加密标准(aes),但是本发明的基本原理不限于任何特定类型的对称密钥。

使用对称密钥实现方式,每个装置101进入安全密钥交换协议以与iot中心110交换对称密钥。安全密钥预置协议(诸如动态对称密钥预置协议(dskpp))可用于通过安全通信信道交换密匙(例如,见意见征求稿(rfc)6063)。然而,本发明的基本原理不限于任何特定密钥预置协议。

一旦对称密钥已被交换,它们可被每个装置101和iot中心110用来对通信进行加密。类似地,iot中心110和iot服务120可以执行安全对称密钥交换,然后使用交换的对称密钥对通信进行加密。在一个实施方案中,在装置101和中心110之间以及中心110和iot服务120之间周期性地交换新的对称密钥。在一个实施方案中,新的对称密钥随着装置101、中心110和服务120之间的每个新的通信会话而交换(例如,为每个通信会话生成并安全地交换新的密钥)。在一个实施方案中,如果iot中心中的安全模块1012是可信的,则服务120可以与中心安全模块1312协商会话密钥,然后安全模块1012将与每个装置120协商会话密钥。然后在被重新加密以传输到装置101之前,来自服务120的消息将在中心安全模块1012中被解密和验证。

在一个实施方案中,为了防止中心安全模块1012上的泄密,可以在安装时在装置101和服务120之间协商一次性(永久)安装密钥。当向装置101发送消息时,服务120可以首先用该装置安装密钥来加密/mac,然后使用该中心的会话密钥加密/mac。然后中心110将验证并提取被加密的装置模糊点并将其发送到装置。

在本发明的一个实施方案中,采用计数器机制来防止重放攻击。例如,可以为从装置101到中心110(或反之亦然)的每个连续通信分配持续增加的计数器值。中心110和装置101都将跟踪该值并且验证该值在装置之间的每个连续通信中是正确的。在中心110和服务120之间可以实现相同的技术。以这种方式使用计数器将使得更难以欺骗每个装置之间的通信(因为计数器值将是不正确的)。但是,即使没有该计数器机制,服务和装置之间的共享安装密钥也将防止对所有装置的网络(中心)广泛的攻击。

在一个实施方案中,当使用公共/私有密钥加密时,iot中心110使用其私有密钥对iot中心数据包进行解密并且生成加密的iot装置数据包,然后将其传输到相关联的iot装置101。iot装置101然后使用其私有密钥对iot装置数据包进行解密以生成源自iot服务120的命令/数据。然后它可以处理该数据和/或执行该命令。使用对称加密,每个装置将使用共享的对称密钥进行加密和解密。在任一种情况下,每个传输装置也可以使用其私有密钥签署消息,使得接收装置可以验证其真实性。

可以使用不同组的密钥对从iot装置101到iot中心110和iot服务120的通信进行加密。例如,在一个实施方案中,使用公共/私有密钥布置,iot装置101上的安全逻辑1002使用iot中心110的公共密钥对发送到iot中心110的数据包进行加密。然后iot中心110上的安全逻辑1012可以使用iot中心的私有密钥对数据包进行解密。类似地,iot装置101上的安全逻辑1002和/或iot中心110上的安全逻辑1012可以使用iot服务120的公共密钥对发送到iot服务120的数据包进行加密(然后其可由iot服务120上的安全逻辑1013使用服务的私有密钥进行解密)。使用对称密钥,装置101和中心110可以共享对称密钥,而中心和服务120可以共享不同的对称密钥。

虽然上文在以上说明中陈述了某些具体细节,但应该注意,本发明的基本原理可以使用各种不同的加密技术来实现。例如,虽然上述一些实施方案使用非对称公共/私有密钥对,但另选的实施方案可以使用在各种iot装置101-102、iot中心110和iot服务120之间安全交换的对称密钥。此外,在一些实施方案中,数据/命令本身不被加密,而是使用密钥在该数据/命令(或其他数据结构)上生成签名。然后接受方可以使用其密钥来验证签名。

如图11所示,在一个实施方案中,使用可编程用户识别模块(sim)1101来实现每个iot装置101上的安全密钥存储装置。在该实施方案中,最初可通过安置在iot装置101上的sim接口1100内的未编程的sim卡1101将iot装置101提供给最终用户。为了用一组一个或多个加密密钥对sim进行编程,用户将可编程sim卡1101从sim接口500取出并将其插入到iot中心110上的sim编程接口1102中。然后iot中心上的编程逻辑1125对sim卡1101进行安全地编程以将iot装置101与iot中心110和iot服务120进行注册/配对。在一个实施方案中,可以由编程逻辑1125随机地生成公共/私有密钥对,然后可以将该密钥对中的公共密钥存储在iot中心的安全存储装置411中,而将该密钥对中的私有密钥存储在可编程sim1101内。另外,编程逻辑525可以将iot中心110、iot服务120和/或任何其他iot装置101的公共密钥存储在sim卡1401上(待由iot装置101上的安全逻辑1302用来对传出数据进行加密)。一旦sim1101被编程,使用sim作为安全标识符(例如,使用用于使用sim注册装置的现有技术),新的iot装置101可以预置有iot服务120。在预置之后,iot中心110和iot服务120均将安全地存储在对与iot装置101的通信进行加密时要使用的iot装置的公共密钥的副本。

上文结合图11所述的技术为向最终用户提供新的iot装置提供了巨大的灵活性。sim卡可以由最终用户通过iot中心110直接编程并且编程的结果可被安全地传送到iot服务120,而不需要用户在销售/购买时将每个sim直接注册到特定的服务提供商(如当前所做的那样)。因此,新的iot装置101可以由在线或本地零售商出售给最终用户,并且随后被安全地预置有iot服务120。

尽管上文在sim(用户识别模块)的特定上下文中描述了注册和加密技术,但是本发明的基本原理不限于“sim”装置。相反,可以使用任何类型的用于存储一组加密密钥的具有安全存储的装置来实现本发明的基本原理。而且,尽管上述实施方案包括可移除的sim装置,但是在一个实施方案中,sim装置不可移除,但是iot装置本身可以插入到iot中心110的编程接口1102内。

在一个实施方案中,在分发到最终用户之前将sim预编程到iot装置101中,而不是要求用户对sim(或其他装置)进行编程。在该实施方案中,当用户设置iot装置101时,可以使用本文所述的各种技术来安全地交换iot中心110/iot服务120和新iot装置101之间的加密密钥。

例如,如图12a所示,每个iot装置101或sim401可以与唯一识别iot装置101和/或sim1001的条形码或qr码1501封装在一起。在一个实施方案中,条形码或qr码1201包含用于iot装置101或sim1001的公共密钥的编码表示。另选地,条形码或qr码1201可以由iot中心110和/或iot服务120用来识别或生成公共密钥(例如,用作指向已存储在安全存储装置中的公共密钥)。条形码或qr码601可印刷在单独的卡上(如图12a所示)或者可直接印刷在iot装置本身上。无论条形码印刷在何处,在一个实施方案中,iot中心110配备有条形码读取器206,用于读取条形码并将结果数据提供给iot中心110上的安全逻辑1012和/或iot服务120上的安全逻辑1013。然后iot中心110上的安全逻辑1012可以将iot装置的公共密钥存储在其安全密钥存储装置1011内,并且iot服务120上的安全逻辑1013可以将公共密钥存储在其安全存储装置1021内(以用于随后的加密通信)。

在一个实施方案中,包含在条形码或qr码1201中的数据也可以通过安装有iot服务提供商设计的iot应用程序或基于浏览器的小程序的用户装置135(例如,诸如iphone或android装置)来捕获。一旦被捕获,则条形码数据可以通过安全连接(例如,诸如安全套接字层(ssl)连接)被安全地传送到iot服务120。条形码数据也可以通过安全的本地连接(例如,通过本地wifi或蓝牙le连接)从客户端装置135提供给iot中心110。

iot装置101上的安全逻辑1002和iot中心110上的安全逻辑1012可以使用硬件、软件、固件或其任何组合来实现。例如,在一个实施方案中,安全逻辑1002、1012被实现在用于在iot装置101和iot中心110之间建立本地通信信道130的芯片内(例如,蓝牙le芯片,如果本地信道130是蓝牙le)。无论安全逻辑1002、1012的具体位置如何,在一个实施方案中,安全逻辑1002、1012被设计为建立用于执行某些类型的程序代码的安全执行环境。例如,这可以通过使用trustzone技术(在某些arm处理器上可用)和/或可信执行技术(由intel设计)来实现。当然,本发明的基本原理不限于任何特定类型的安全执行技术。

在一个实施方案中,条形码或qr码1501可用于将每个iot装置101与iot中心110配对。例如,可以将嵌入在条形码或qr码1501内的配对代码提供给iot中心110,以将iot中心与对应的iot装置配对,而不是使用当前用于配对蓝牙le装置的标准无线配对过程。

图12b示出了其中iot中心110上的条形码读取器206捕获与iot装置101相关联的条形码/qr码1201的一个实施方案。如上所述,条形码/qr码1201可以直接印刷在iot装置101上,或者可以印刷在设置有iot装置101的单独的卡上。在任一种情况下,条形码读取器206从条形码/qr码1201中读取配对代码,并将配对代码提供给本地通信模块1280。在一个实施方案中,本地通信模块1280是蓝牙le芯片和相关软件,但是本发明的基本原理不限于任何特定的协议标准。一旦接收到配对代码,其就被存储在包含配对数据1285的安全存储装置中,并且iot装置101和iot中心110被自动配对。每当iot中心以这种方式与新的iot装置配对时,用于该配对的配对数据就被存储在安全存储装置685内。在一个实施方案中,一旦iot中心110的本地通信模块1280接收到配对代码,则其可以使用该代码作为密钥对iot装置101的本地无线信道上的通信进行加密。

类似地,在iot装置101方面,本地通信模块1590将配对数据存储在指示与iot中心配对的本地安全存储装置1595内。配对数据1295可以包括在条形码/qr码1201中识别的预编程的配对代码。配对数据1295还可以包括建立安全本地通信信道所需的从iot中心110上的本地通信模块1280接收的配对数据(例如,用于对与iot中心110的通信进行加密的附加密钥)。

因为配对代码不通过空中传输,因此条形码/qr码1201可用于以比当前无线配对协议更安全的方式执行本地配对。另外,在一个实施方案中,可以使用用于配对的相同的条形码/qr码1201来识别加密密钥以建立从iot装置101到iot中心110以及从iot中心110到iot服务120的安全连接。

图13示出了根据本发明的一个实施方案的用于编程sim卡的方法。该方法可在上述的系统架构内实施,但不限于任何特定系统架构。

在1301处,用户接收具有空白sim卡的新iot装置,并且在1602处,用户将空白sim卡插入到iot中心中。在1303处,用户用一组一个或多个加密密钥对空白sim卡进行编程。例如,如上所述,在一个实施方案中,iot中心可以随机生成公共/私有密钥对,并且将私有密钥存储在sim卡上,将公共密钥存储在其本地安全存储装置中。另外,在1304处,至少公共密钥被传输到iot服务,以便其可以用于识别iot装置并且建立与iot装置的加密通信。如上所述,在一个实施方案中,在图13所示的方法中可使用除了“sim”卡之外的可编程装置来执行与sim卡相同的功能。

图14示出了用于将新的iot装置集成到网络中的方法。该方法可在上述的系统架构内实施,但不限于任何特定系统架构。

在1401处,用户接收已预分配了加密密钥的新的iot装置。在1402处,密钥被安全地提供给iot中心。如上所述,在一个实施方案中,这涉及读取与iot装置相关联的条形码以识别分配给该装置的公共/私有密钥对的公共密钥。条形码可以由iot中心直接读取,也可以通过移动装置经由应用程序或浏览器来捕获。在另选的实施方案中,可以在iot装置和iot中心之间建立安全通信信道诸如蓝牙le信道、近场通信(nfc)信道或安全wifi信道以交换密钥。无论密钥是如何传输的,一旦被接收到,其就被存储在iot中心装置的安全密钥库中。如上所述,在iot中心上可以使用各种安全执行技术来存储和保护密钥,诸如安全区域、可信执行技术(txt)和/或trustzone。另外,在803处,密钥被安全地传输到iot服务,该iot服务将密钥存储在其自己的安全密钥库中。然后其可以使用该密钥对与iot装置的通信进行加密。再次,可以使用证书/签署的密钥来实现交换。在中心110内,防止修改/添加/移除所存储的密钥是特别重要的。

图15示出了用于使用公共/私有密钥将命令/数据安全地传送到iot装置的方法。该方法可在上述的系统架构内实施,但不限于任何特定系统架构。

在1501处,iot服务使用iot装置公共密钥对数据/命令进行加密以创建iot装置数据包。然后使用iot中心的公共密钥对该iot装置数据包进行加密以创建iot中心数据包(例如,在iot装置数据包周围创建iot中心包装)。在1502处,iot服务将iot中心数据包传输到iot中心。在1503处,iot中心使用iot中心的私有密钥对iot中心数据包进行解密以生成iot装置数据包。然后在1504处,其将iot装置数据包传输到iot装置,在1505处,使用iot装置私有密钥对iot装置数据包进行解密以生成数据/命令。在1506处,iot装置处理数据/命令。

在使用对称密钥的实施方案中,可以在每个装置之间(例如,每个装置和中心之间以及中心和服务之间)协商对称密钥交换。一旦完成密钥交换,每个传输装置在将数据传输到接收装置之前使用对称密钥对每次传输进行加密和/或签署。

用于在物联网(iot)系统中建立安全通信信道的设备和方法

在本发明的一个实施方案中,无论用于支持通信信道的中间装置如何(例如,诸如用户的移动装置611和/或iot中心110),都要在iot服务120和每个iot装置101之间执行数据的加密和解密。图16a示出了通过iot中心110进行通信的一个实施方案,图16b示出了不需要iot中心的另一个实施方案。

首先转到图16a,iot服务120包括管理一组“服务会话密钥”1650的加密引擎1660,并且每个iot装置101包括管理用于对iot装置101和iot服务120之间的通信进行加密/解密的一组“装置会话密钥”1651的加密引擎1661。当执行本文所述的安全/加密技术时,加密引擎可以依赖于不同的硬件模块,该硬件模块包括用于(除别的以外)生成会话公共/私有密钥对并且防止对该密钥对中的私有会话密钥进行访问的硬件安全模块1630-1631,以及用于使用得出的密码生成密钥流的密钥流生成模块1640-1641。在一个实施方案中,服务会话密钥1650和装置会话密钥1651包括相关的公共/私有密钥对。例如,在一个实施方案中,iot装置101上的装置会话密钥1651包括iot服务120的公共密钥和iot装置101的私有密钥。如下文详细讨论的,在一个实施方案中,为了建立安全通信会话,每个加密引擎1660和1661分别使用公共/私有会话密钥对1650和1651来生成相同的密码,然后该密码被skgm1640-1641用来生成密钥流以对iot服务120与iot装置101之间的通信进行加密和解密。下文提供了根据本发明的一个实施方案的与密码的生成和使用相关联的附加细节。

在图16a中,一旦使用密钥1650-1651生成了密码,则客户端将总是通过iot服务120向iot装置101发送消息,如清除事务1611所示。本文所用的“清除”意指表示底层消息没有使用本文所述的加密技术进行加密。然而,如图所示,在一个实施方案中,在客户端装置611和iot服务120之间建立安全套接字层(ssl)信道或其他安全信道(例如,互联网协议安全(ipsec)信道)以保护通信。然后iot服务120上的加密引擎1660使用所生成的密码对消息进行加密,并且在1602处将加密的消息传输到iot中心110。在一个实施方案中,使用密码和计数器值来生成用于对每个消息数据包进行加密的密钥流,而不是使用密码直接对消息进行加密。下文结合图17描述了该实施方案的细节。

如图所示,可以在iot服务120和iot中心110之间建立ssl连接或其他安全信道。iot中心110(其在一个实施方案中不具有对消息进行解密的能力)在1603处(例如,通过蓝牙低功耗(btle)通信信道)将加密的消息传输到iot装置。然后iot装置101上的加密引擎1661可以使用密码对消息进行解密并且处理消息内容。在使用密码来生成密钥流的实施方案中,加密引擎1661可以使用密码和计数器值来生成密钥流,然后使用密钥流对消息数据包进行解密。

消息本身可以包括iot服务120和iot装置101之间的任何形式的通信。例如,消息可以包括指示iot装置101执行特定功能诸如进行测量并将结果报告回客户端装置611的命令数据包,或者可以包括用于配置iot装置101的操作的配置数据。

如果需要响应,那么在1604处,iot装置101上的加密引擎1661使用密码或得出的密钥流对响应进行加密并且将加密的响应传输到iot中心110,该iot中心在1605处将响应转发到iot服务120。然后在1606处(例如,通过ssl或其他安全通信信道),iot服务120上的加密引擎1660使用密码或得出的密钥流对响应进行解密并且将解密的响应传输到客户端装置611。

图16b示出了不需要iot中心的实施方案。相反地,在该实施方案中,iot装置101和iot服务120之间的通信通过客户端装置611发生(例如,如上文结合图6至图9b所述)。在该实施方案中,为了向iot装置101传输消息,客户端装置611在1611处将消息的未加密版本传输到iot服务120。在1612处,加密引擎1660使用密码或得出的密钥流对消息进行加密,并且将加密的消息传输回客户端装置611。然后客户端装置611在1613处将加密的消息转发到iot装置101,并且加密引擎1661使用密码或得出的密钥流对消息进行解密。然后iot装置101可以如本文所述处理消息。如果需要响应,那么在1614处加密引擎1661使用密码对响应进行加密并且将加密的响应传输到客户端装置611,该客户端装置在1615处将加密的响应转发到iot服务120。然后在1616处,加密引擎1660对该响应进行解密并且将解密的响应传输到客户端装置611。

图17示出了可最初在iot服务120和iot装置101之间执行的密钥交换和密钥流生成。在一个实施方案中,每当iot服务120和iot装置101建立新的通信会话时可执行该密钥交换。另选地,可以执行密钥交换,并且所交换的会话密钥可以使用指定的时间段(例如,一天、一周等)。虽然为简单起见在图17没有示出中间装置,但通信可以通过iot中心110和/或客户端装置611发生。

在一个实施方案中,iot服务120的加密引擎1660向hsm1630(例如,其可以是诸如由amazon提供的cloudhsm)发送命令以生成会话公共/私有密钥对。随后,hsm1630可以防止对该密匙对中的私有会话密钥进行访问。类似地,iot装置101上的加密引擎可以向hsm1631(例如,得自atmel的atecc508hsm)传输命令,hsm1631生成会话公共/私有密钥对并且防止对该密匙对中的会话私有密钥进行访问。当然,本发明的基本原理不限于任何特定类型的加密引擎或制造商。

在一个实施方案中,在1701处,iot服务120将使用hsm1630生成的会话公共密钥传输到iot装置101。iot装置使用其hsm1631来生成其自己的会话公共/私有密钥对,并且在1702处将其密匙对中的公共密钥传输到iot服务120。在一个实施方案中,加密引擎1660-1661使用椭圆曲线diffie-hellman(ecdh)协议来建立共享密码,该协议是允许双方具有椭圆曲线公共-私有密匙对的匿名密钥协定。在一个实施方案中,使用这些技术,在1703处,iot服务120的加密引擎1660使用iot装置会话公共密钥和其自己的会话私有密钥生成密码。类似地,在1704处,iot装置101的加密引擎1661使用iot服务120会话公共密钥和其自己的会话私有密钥单独地生成相同的密码。更具体地讲,在一个实施方案中,iot服务120上的加密引擎1660根据以下公式生成密码:密码=iot装置会话公共密钥*iot服务会话私钥,其中'*'表示iot装置会话公共密钥以点对点的方式乘以iot服务会话私钥。iot装置101上的加密引擎1661根据以下公式生成密码:密码=iot服务会话公共密钥*iot装置会话私有密钥,其中iot服务会话公共密钥以点对点的方式乘以iot装置会话私有密钥。最后,如下所述,iot服务120和iot装置101都已生成了用于对通信进行加密的相同的密码。在一个实施方案中,加密引擎1660-1661分别依赖于硬件模块诸如ksgm1640-1641来执行上述用于生成密码的操作。

一旦秘密已被确定,其可被加密引擎1660和1661用来直接对数据进行加密和解密。或者,在一个实施方案中,加密引擎1660-1661向ksgm1640-1641发送使用密码生成新的密钥流的命令以对每个数据包进行加密/解密(即,为每个数据包生成新的密钥流数据结构)。具体地讲,密钥流生成模块1640-1641的一个实施方案实施galois/计数器模式(gcm),其中计数器值针对每个数据包递增,并且与密钥组合使用以生成密钥流。因此,为了将数据包传输到iot服务120,iot装置101的加密引擎1661使用密码和当前计数器值来使ksgm1640-1641生成新的密钥流并且使计数器值递增以生成下一个密钥流。然后,在传输到iot服务120之前,新生成的密钥流被用于对数据包进行加密。在一个实施方案中,密钥流与数据进行异或(xor)以生成加密的数据包。在一个实施方案中,iot装置101将具有加密的数据包的计数器值传输到iot服务120。然后iot服务上的加密引擎1660与ksgm1640通信,ksgm1640使用所接收的计数器值和密码生成密钥流(由于使用的是相同的密码和计数器值,其应该是相同的密钥流)并且使用所生成的密钥流对数据包进行解密。

在一个实施方案中,从iot服务120传输到iot装置101的数据包以相同的方式被加密。具体地讲,计数器对于每个数据包递增,并且与密码一起使用以生成新的密钥流。然后该密钥流被用来对数据进行加密(例如,执行数据和密钥流的xor运算),并且加密的数据包与计数器值一起被传输到iot装置101。然后iot装置101上的加密引擎1661与ksgm1641通信,ksgm1641使用计数器值和密码生成用于对数据包进行解密的相同的密钥流。因此,在该实施方案中,加密引擎1660-1661使用它们自己的计数器值生成用于对数据进行加密的密钥流,并且使用与加密的数据包一起被接收的计数器值生成用于对数据进行解密的密钥流。

在一个实施方案中,每个加密引擎1660-1661跟踪其从另一个加密引擎接收到的最后的计数器值,并且包括用于检测计数器值是否不按顺序接收或者是否多次接收到相同的计数器值的排序逻辑。如果一个计数器值不按顺序接收,或者如果多次收到相同的计数器值,这可能指示正在尝试重放攻击。作为响应,加密引擎1660-1661可以从通信信道断开和/或可以生成安全警报。

图18示出了本发明的一个实施方案中所采用的包括4字节计数器值1800、可变大小的加密数据字段1801和6字节标签1802的示例性加密数据包。在一个实施方案中,标签1802包括校验和值以验证解密的数据(一旦该数据被解密)。

如上所述,在一个实施方案中,可以周期性地和/或响应于每个新的通信会话的发起来生成在iot服务120和iot装置101之间交换的会话公共/私有密钥对1650-1651。

本发明的一个实施方案实现用于验证iot服务120和iot装置101之间的会话的附加技术。具体地讲,在一个实施方案中,使用公共/私有密钥对的分级结构,包括主密钥对、一组工厂密钥对和一组iot服务密钥对,以及一组iot装置密钥对。在一个实施方案中,主密钥对包括所有其他密钥对的信任根,并且被保持在单个高度安全的位置(例如,在实现本文所述的iot系统的组织的控制下)。主私有密钥可用于对各种其他密钥对诸如工厂密钥对生成签名(并由此进行验证)。然后可使用主公共密钥来核验签名。在一个实施方案中,制造iot装置的每个工厂被分配其自己的工厂密钥对,然后可以用它来验证iot服务密钥和iot装置密钥。例如,在一个实施方案中,使用工厂私有密钥来生成对iot服务公共密钥和iot装置公共密钥的签名。然后可使用对应的工厂公共密钥来核验这些签名。请注意,这些iot服务/装置公共密钥与上文结合图16a至图16b所述的“会话”公共密钥/私有密钥不同。上述会话公共密钥/私有密钥是临时的(即,针对服务/装置会话生成),而iot服务/装置密钥对是永久的(即,在工厂生成)。

考虑到主密钥、工厂密钥、服务/装置密钥之间的上述关系,本发明的一个实施方案执行以下操作以在iot服务120和iot装置101之间提供附加的验证和安全层:

a.在一个实施方案中,iot服务120初始生成包含以下内容的消息:

1.iot服务的唯一id:

·iot服务的序列号;

·时戳;

·用于签署此唯一id的工厂密钥的id;

·唯一id的类别(即,服务);

·iot服务的公共密钥

·对该唯一id的签名。

2.工厂证书包括:

·时戳

·用于签署该证书的主密钥的id

·工厂的公共密钥

·工厂证书的签名

3.iot服务会话公共密钥(如上文结合图16a至图16b所述)

4.iot服务会话公共密钥签名(例如,使用iot服务的私有密钥签署)

b.在一个实施方案中,消息在协商信道上被发送给iot装置(如下所述)。iot装置解析消息并:

1.核验工厂证书的签名(仅当其存在于消息有效负载中时)

2.使用由唯一id标识的密钥来核验唯一id的签名

3.使用来自唯一id的iot服务的公共密钥核验iot服务会话公共密钥签名

4.保存iot服务的公共密钥以及iot服务的会话公共密钥

5.生成iot装置会话密钥对

c.iot装置然后生成包含以下内容的消息:

1.iot装置的唯一id

·iot装置序列号

·时戳

·用于签署此唯一id的工厂密钥的id

·唯一id的类别(即,iot装置)

·iot装置的公共密钥

·唯一id的签名

2.iot装置的会话公共密钥

3.使用iot装置的密钥签署(iot装置会话公共密钥+iot服务会话公共密钥)的签名

d.该消息被发送回iot服务。iot服务解析消息并:

1.使用工厂公共密钥来核验唯一id的签名

2.使用iot装置的公共密钥来核验会话公共密钥的签名

3.保存iot装置的会话公共密钥

e.iot服务随后生成包含用iot服务的密钥签署(iot装置会话公共密钥+iot服务会话公共密钥)的签名的消息。

f.iot装置解析消息并:

1.使用iot服务的公共密钥来核验会话公共密钥的签名

2.由iot装置会话私有密钥和iot服务会话公共密钥生成密钥流

3.iot装置然后发送“消息传送可用”消息。

g.iot服务然后执行以下操作:

1.由iot装置会话私有密钥和iot装置的会话公共密钥生成密钥流

2.在消息传送信道上创建包含以下内容的新消息:

·生成并存储随机的2字节值

·用回旋镖(boomerang)属性id(如下所述)和随机值设置属性消息

h.iot装置收到该消息并:

1.尝试解密该消息

2.在指定的属性id上使用相同的值发出更新

i.iot服务识别包含回旋镖属性更新的消息有效负载并:

1.将其配对状态设置为真

2.在协商信道上发送配对完成消息

j.iot装置接收该消息并将其配对状态设置为真

尽管关于“iot服务”和“iot装置”描述了上述技术,但是本发明的基本原理可以被实现为在包括用户客户端装置、服务器和互联网服务的任何两个装置之间建立安全通信信道。

上述技术是高度安全的,因为私有密钥永远不会被空中共享(相比之下,在当前的蓝牙配对技术中密码从一方传输到另一方)。窃听整个对话的攻击者只有公共密钥,而这些公共密钥不足以生成共享密码。这些技术还通过交换已签署的公共密钥来防止中间人攻击。另外,由于在每个设备上都使用gcm和单独的计数器,因此可以防止任何类型的“重放攻击”(在这种情况下,中间人捕获数据并再次发送)。一些实施方案还通过使用不对称计数器来防止重放攻击。

在没有正式配对装置的情况下交换数据和命令的技术

gatt是通用属性配置文件的首字母缩写,它定义了两个蓝牙低功耗(btle)装置来回传送数据的方式。它利用称为属性协议(att)的通用数据协议,该协议用于将服务、特征和相关数据存储在简单的查找表中,对于表中的每个条目使用16位特征id。请注意,,然而“特征”有时被称为“属性”。

在蓝牙装置上,最常用的特征是装置“名称”(具有特征id10752(0×2a00))。例如,蓝牙装置可通过使用gatt读取由那些其他蓝牙装置发布的“名称”特征来标识其附近的其他蓝牙装置。因此,蓝牙装置具有交换数据的固有能力,而无需正式配对/绑定装置(注意,“配对”和“绑定”有时可以互换使用;本讨论的其余部分将使用术语“配对”)。

本发明的一个实施方案利用这种能力与已启用btle的iot装置进行通信,而无需与这些装置正式配对。由于与每个装置配对所需的时间量,并且一次只可建立一个配对连接,所以与每个单独的iot装置配对将非常低效。

图19示出了其中蓝牙(bt)装置1910与iot装置101的bt通信模块1901建立网络套接字抽象而不正式建立配对的bt连接的一个特定实施方案。bt装置1910可被包括在如图16a所示的iot中心110和/或客户端装置611中。如图所示,bt通信模块1901维护包含以下的列表的数据结构:特征id、与这些特征id相关联的名称,以及这些特征id的值。根据当前的bt标准,每个特征的值可存储在由特征id标识的20字节缓冲区内。然而,本发明的基本原理不限于任何特定的缓冲区大小。

在图19的示例中,“名称”特征是被分配给“iot装置14”的特定值的bt定义的特征。本发明的一个实施方案指定要用于与bt装置1910协商安全通信信道的第一组附加特征和要用于与bt装置1910的加密通信的第二组附加特征。具体地讲,在例示的示例中由特征id<65532>标识的“协商写入”特征可用于传输传出协商消息,并且由特征id<65533>标识的“协商读取”特征可用于接收传入协商消息。“协商消息”可包括由bt装置1910和bt通信模块1901用来建立如本文所述的安全通信信道的消息。举例来说,在图17中,iot装置101可经由“协商读取”特征<65533>来接收iot服务会话公共密钥1701。密钥1701可从iot服务120传输到已启用btle的iot中心110或客户端装置611,然后可使用gatt将密钥1701写入由特征id<65533>标识的协商读取值缓冲区。然后,iot装置应用逻辑1902可从由特征id<65533>标识的值缓冲区中读取密钥1701并且如上所述处理它(例如,使用它来生成密码并且使用该密码来生成密钥流等)。

如果密钥1701大于20字节(在一些当前具体实施中为最大缓冲区大小),则该密钥可以20字节部分来写入。例如,可通过bt通信模块1903将前20个字节写入特征id<65533>,并由iot装置应用逻辑1902读取,该iot装置应用逻辑然后可将确认消息写入由特征id<65532>标识的协商写入值缓冲区。使用gatt,bt通信模块1903可从特征id<65532>读取该确认,并且响应地将密钥1701的接下来的20个字节写入由特征id<65533>标识的协商读取值缓冲区。以这种方式,建立由特征id<65532>和<65533>定义的网络套接字抽象,以交换用于建立安全通信信道的协商消息。

在一个实施方案中,一旦建立安全通信信道,就使用特征id<65534>(用于从iot装置101传输加密的数据包)和特征id<65533>(用于通过iot装置接收加密的数据包)建立第二网络套接字抽象。也就是说,当bt通信模块1903具有用于传输的加密数据包(例如,诸如图16a的加密消息1603)时,它使用由特征id<65533>标识的消息读取值缓冲区开始写入加密数据包,每次20个字节。iot装置应用逻辑1902随后将从读取值缓冲区中读取加密数据包,每次20个字节,根据需要经由特征id<65532>所标识的写入值缓冲区向bt通信模块1903发送确认消息。

在一个实施方案中,下文所述的get、set和update的命令用于在两个bt通信模块1901和1903之间交换数据和命令。例如,bt通信模块1903可发送标识特征id<65533>并且包含set命令的数据包以写入由特征id<65533>标识的值字段/缓冲区,该数据包然后可由iot装置应用逻辑1902读取。为了从iot装置101检索数据,bt通信模块1903可传输被指向由特征id<65534>标识的值字段/缓冲区的get命令。响应于get命令,bt通信模块1901可向包含来自由特征id<65534>标识的值字段/缓冲区的数据的bt通信模块1903传输update数据包。另外,响应于iot装置101上的特定属性的改变,可以自动传输update数据包。例如,如果iot装置与照明系统相关联并且用户打开灯,则可以发送update数据包以反映与照明应用相关联的开/关属性的改变。

图20示出了根据本发明的一个实施方案的用于get、set和update的示例性数据包格式。在一个实施方案中,这些数据包在协商之后通过消息写入<65534>信道和消息读取<65533>信道传输。在get数据包2001中,第一个1字节的字段包括将该数据包标识为get数据包的值(0×10)。第二个1字节的字段包括请求id,它唯一地标识当前的get命令(即,标识get命令与之关联的当前交易)。例如,从服务或装置传输的get命令的每个示例均可被分配不同的请求id。这可以通过例如递增计数器并使用计数器值作为请求id来完成。然而,本发明的基本原理不限于设置请求id的任何特定方式。

2字节的属性id标识数据包所指向的特定于应用的属性。例如,如果get命令正被发送到图19中所示的iot装置101,则属性id可用于标识被请求的具体的特定于应用的值。回到上面的示例,get命令可被指向特定于应用的属性id诸如照明系统的电力状态,其包括标识灯是开启还是关闭的值(例如,1=开启,0=关闭)。如果iot装置101是与门相关联的安全设备,则值字段可标识门的当前状态(例如,1=打开,0=关闭)。响应于get命令,可发送包含由属性id标识的当前值的响应。

如图20所示的set数据包2002和update数据包2003还包括标识数据包类型(即,set和update)的第一个1字节字段、包含请求id的第二个1字节字段和标识应用定义属性的2字节属性id字段。另外,set数据包包括标识包含在n字节值数据字段中的数据长度的2字节长度值。值数据字段可包括要在iot装置上执行的命令和/或用于以某种方式配置iot装置的操作(例如,设置期望参数、关闭iot装置等)的配置数据。例如,如果iot装置101控制风扇的速度,则值字段可反映当前的风扇速度。

update数据包2003可被传输以提供set命令的结果的更新。update数据包2003包括2字节长度值字段,以标识可包括与set命令的结果有关的数据的n字节值数据字段的长度。另外,1字节的更新状态字段可标识正在更新的变量的当前状态。例如,如果set命令试图关闭由iot装置控制的光,则更新状态字段可指示光是否被成功关闭。

图21示出了iot服务120和涉及set命令和update命令的iot装置101之间的交易的示例性序列。未示出中介装置诸如iot中心和用户的移动装置,以避免模糊本发明的基本原理。在2101处,set命令2101从iot服务传输到iot装置101,并且由bt通信模块1901接收,该set命令响应地在2102更新由特征id标识的gatt值缓冲区。在2103处,通过低功率微控制器(mcu)200(或者通过在低功率mcu上执行的程序代码,诸如图19中所示的iot装置应用逻辑1902)从值缓冲区读取该set命令。在2104处,mcu200或程序代码响应于该set命令而执行操作。例如,set命令可包括指定新配置参数诸如新温度的属性id,或者可包括状态值诸如开/关(以使iot装置进入“开”或者低功率状态)。因此,在2104处在iot装置中设置新值,并且在2105处返回update命令,在2106处在gatt值字段中更新实际值。在某些情况下,实际值将等于期望值。在其他情况下,更新的值可能不同(即,因为iot装置101可能需要时间来更新某些类型的值)。最后,在2107处,update命令被传输回包含来自gatt值字段的实际值的iot服务120。

图22示出了根据本发明的一个实施方案的用于实现iot服务和iot装置之间的安全通信信道的方法。该方法可在上述网络架构的环境内实施,但不限于任何特定架构。

在2201处,iot服务使用椭圆曲线数字签名算法(ecdsa)证书创建用于与iot中心通信的加密信道。在2202处,iot服务使用会话密码加密iot装置数据包中的数据/命令以创建加密的装置数据包。如上所述,会话密码可由iot装置和iot服务独立生成。在2203处,iot服务通过加密信道将加密的装置数据包传输到iot中心。在2204处,在不解密的情况下,iot中心将加密的装置数据包传递给iot装置。在2205处,iot装置使用会话密码来解密加密的装置数据包。如上所述,在一个实施方案中,这可通过如下方式来完成:使用密码和计数器值(与加密的装置数据包一起提供)来生成密钥流,然后使用该密钥流来解密数据包。在2206处,iot装置然后提取并处理包含在装置数据包内的数据和/或命令。

因此,使用上述技术,可以在两个已启用bt的装置之间建立双向、安全的网络套接字抽象,而无需使用标准配对技术正式地配对bt装置。虽然上面关于与iot服务120通信的iot装置101描述了这些技术,但是本发明的基本原理可以被实现为在任何两个已启用bt的装置之间协商并建立安全通信信道。

图23a至图23c示出了根据本发明的一个实施方案的用于配对装置的详细方法。该方法可在上述系统架构的环境内实施,但不限于任何特定系统架构。

在2301处,iot服务创建包含iot服务的序列号和公共密钥的数据包。在2302处,iot服务使用工厂私有密钥签署数据包。在2303处,iot服务通过加密信道将该数据包发送到iot中心,并且在2304处,iot中心通过未加密信道将该数据包转发到iot装置。在2305处,iot装置核验该数据包的签名,并且在2306处,iot装置生成包含iot装置的序列号和公共密钥的数据包。在2307处,iot装置使用工厂私有密钥签署该数据包,并且在2308处,iot装置通过未加密信道将该数据包发送到iot中心。

在2309处,iot中心通过加密信道将该数据包转发到iot服务,并且在2310处,iot服务核验该数据包的签名。在2311处,iot服务生成会话密钥对,并且在2312处,iot服务生成包含会话公共密钥的数据包。iot服务然后在2313处利用iot服务私有密钥签署该数据包,并且在2314处iot服务通过加密通道将该数据包发送到iot中心。

转到图23b,iot中心在2315处通过未加密信道将该数据包转发到iot装置,并且在2316处,iot装置核验数据包的签名。在2317处,iot装置(例如,使用上述技术)生成会话密钥对,并且在2318处,生成包含iot装置会话公共密钥的iot装置数据包。在2319处,iot装置使用iot装置私有密钥签署iot装置数据包。在2320处,iot装置通过未加密信道将该数据包发送到iot中心,并且在2321处,iot中心通过加密信道将该数据包转发到iot服务。

在2322处,iot服务核验该数据包的签名(例如,使用iot装置公共密钥),并且在2323处,iot服务使用iot服务私有密钥和iot装置公共密钥来生成会话密码(如上文所详细描述的)。在2324处,iot装置使用iot装置私有密钥和iot服务公共密钥来生成会话密码(再次如上所述),并且在2325处,iot装置生成随机数字并使用会话密码对其进行加密。在2326处,iot服务通过加密信道将加密的数据包发送到iot中心。在2327处,iot中心通过未加密信道将加密的数据包转发到iot装置。在2328处,iot装置使用会话密码解密该数据包。

转到图23c,在2329处,iot装置使用会话密码重新加密该数据包,并且在2330处,iot装置通过未加密信道将加密的数据包发送到iot中心。在2331处,iot中心通过加密信道将加密的数据包转发到iot服务。在2332处,iot服务使用会话密码解密该数据包。在2333处,iot服务核验该随机数字是否与其发送的随机数字匹配。iot服务随后在2334处发送指示配对已完成的数据包,并且在2335处使用会话密码加密所有后续消息。

用于虚拟物联网(iot)装置和中心的系统和方法

在一个实施方案中,iot系统支持不同iot服务的iot装置的虚拟化,并集成与这些“外部”iot装置相关的信息,从而向最终用户提供访问所有iot装置信息的单个位置。举例来说,用户可具有先前安装的智能恒温器,例如恒温器,其被设计为与不同的iot系统通信,潜在地使用另一组协议。在本发明的一个实施方案中,iot服务向用户提供对被设计为(例如,经由如上所述的iot中心)与iot服务通信的iot装置以及被设计为与其他iot服务通信的iot装置二者的访问。这可通过访问由外部云服务暴露的应用编程接口(api)来完成,以控制外部iot装置并收集由iot装置生成的数据。此外,一个实施方案将外部iot装置虚拟化,使得它们出现在用户的移动装置或计算机上的单个集成图形用户界面内(例如,经由单个移动应用程序,在其中将所有装置、虚拟和非虚拟的都布置在一起)。然后用户可按照与他们控制和检索来自非虚拟iot装置的数据相同的方式来控制和检索来自iot装置的数据。

此外,本发明的一个实施方案向用户提供了在不使用iot中心或者使用如本文所述的“虚拟”iot中心的情况下配置iot系统的能力。这在一个实施方案中通过经由用户的移动装置或其他计算装置向iot服务提供iot装置访问来完成。例如,用户的移动装置可经由如前所述的蜂窝或wifi连接与iot服务建立连接,并且还可与iot装置中的每个iot装置建立蓝牙或wifi连接。在一个实施方案中,iot装置可以周期性地与用户的移动装置连接并且/或者可以仅在它们具有要传输的数据时连接。在这个实施方案中,iot装置可以建立连接,从用户的移动装置接收命令,将数据传输到用户的移动装置,然后断开连接。因此用户的移动装置充当在iot服务和iot装置之间传输的命令和数据的临时存储库。

如图24所示,其上可以实现本发明的实施方案的架构可包括通信地耦接到多个iot装置101-103并且还经由互联网2422通信地耦接到iot云服务2420(例如,以如上所述的类似方式)的iot中心2405。用户可经由其上安装了iot应用程序或应用(例如,由iot云服务2420设计的应用程序或应用)的用户装置2410来控制和访问来自iot装置101-103的信息。在一个实施方案中,经由iot云服务2420提供对iot装置101-103的访问。例如,为了检索信息或控制iot装置中的一个iot装置,用户在将用户连接到iot云服务2420的iot装置2410上打开应用程序。如果用户用iot云服务2420成功验证(例如,经由用户名或密码),则iot云服务2420经由iot中心2405建立与一个或多个iot装置101-103的连接。可采用诸如上述的各种不同的安全技术(例如使用数字签名、加密等)来保护iot装置101-103、iot云服务2420和用户装置2410之间的通信。

在一个实施方案中,iot服务2420上的iot装置管理逻辑2415从iot装置101-103收集数据并且在iot装置数据库2430内编译数据。例如,iot装置管理逻辑2415可以周期性地查询iot装置101-103中的每个iot装置以确认每个iot装置都是可操作的,并且检索已由iot装置101-103生成的任何数据。例如,如果iot装置101是智能恒温器,则iot装置管理逻辑2415可收集最新的温度读数和任何其他相关数据(例如,运动传感器数据、湿度数据等)。另外,一些iot装置101-103可主动将数据推送到iot装置管理逻辑2415(例如,当达到阈值时,当安全警报被触发时等),该iot装置管理逻辑随后将数据存储在iot装置数据库2430内。

另外,iot装置管理逻辑2415可以自动地或响应于来自用户的经由移动装置2410上的iot应用程序的输入而将命令传输到iot装置101-103中的每个iot装置。例如,如果iot装置101是恒温器,则用户可以经由用户装置2410上的iot应用程序控制温度,该iot应用程序将向iot服务2420传输新的温度读数。iot服务2420上的iot装置管理逻辑2415然后将向iot装置101发送改变温度的命令,并且还可以更新iot装置数据库2430以反映新的温度。以这种方式,iot装置数据库2430可包含可以根据请求容易地提供给用户的移动装置2410的各种iot装置101-103的当前状态。当然,上述示例仅仅是出于解释的目的而提供的。本发明的基本原理不限于任何特定类型的iot装置。

在一个实施方案中,除了收集数据并向由iot服务2420(或iot服务2420的合作伙伴)提供的iot装置101-103发送命令之外,iot装置管理逻辑2415建立与一个或多个外部iot云服务2440的连接。这可例如通过访问由iot云服务2440暴露的公开或私有应用编程接口(api)2445来实现。在一个实施方案中,api2445包括用于验证通过互联网2422建立的与远程主机诸如iot装置管理逻辑2415的连接的逻辑。一旦通过验证,api2445就提供对一组功能的访问,该组功能用于将命令传输到由iot装置管理逻辑2415作为“虚拟”iot装置管理的一个或多个外部iot装置2401-2402。在一个实施方案中,api2445经由外部iot云服务2440所执行的iot装置管理逻辑2450提供访问,该外部iot云服务可以使用其自身的一组命令和数据结构来管理其自身的一组iot装置2401-2402,并在其自身的iot装置数据库2455内存储与其iot装置2401-2402相关的数据。在一个实施方案中,api2445包括用于在外部iot云服务2440上的iot装置管理逻辑2450和iot云服务上的iot装置管理逻辑2415所使用的命令格式和数据格式之间进行转换的逻辑。当然,如果iot云服务2420上的iot装置管理逻辑2415使用的命令格式和数据格式与外部iot云服务上的iot装置管理逻辑2450使用的命令格式和数据格式相同,则不需要转换。

不管如何实现api,在一个实施方案中,iot装置管理逻辑2415利用api2445来检索从外部iot装置2401-2402提供的信息并发送命令来控制外部iot装置2401-2402。在一个实施方案中,iot装置管理逻辑2415为外部iot装置2401-2402中的每个外部iot装置在iot装置数据库2430中创建和管理记录(例如,包含从外部iot装置2401-2402接收的或与其相关的信息)。以这种方式,iot装置管理逻辑2415“虚拟化”外部iot装置2401-2402,使得它们可被安装在用户的移动装置2410上的相同应用程序或应用访问。

图25示出了其中虚拟iot装置图形2502与其他非虚拟iot装置图形2501、2503-2504一起显示的示例性gui。虚拟iot装置图形2502例如可代表外部iot装置2401-2402中的一个外部iot装置,而非虚拟iot装置图形2501、2503-2504可代表图24中的iot装置101-103。如图所示,可以使可用于虚拟iot装置2502的同一组装置状态信息、数据和/或控制功能(或者取决于经由api2445提供的功能的功能子组)可用于非虚拟iot装置2501、2503-2504。可从iot装置数据库2430中的记录读取该状态信息、数据和/或控制功能。

在一个实施方案中,用户装置2410建立与iot云服务2420的连接,并且iot装置管理逻辑2415经由api2445建立与外部iot云服务的连接。用户最初可向iot装置管理逻辑2415提供建立与api2445的连接所需的证书(例如,用户名和密码)。一旦建立了连接,用户可以控制或检索来自由外部iot云服务2440直接管理的iot装置2401-2402中任一者的信息。

在本发明的一个实施方案中,最终用户被提供以下能力:通过用户设备2410捕获与外部iot装置2401-2402相关联的条形码或qr代码的照片,以将系统中的外部iot装置2401-2402虚拟化(例如,如上文结合主要iot装置101-103所述的)。条形码可印刷在装置本身上,也可印刷在文书上或与装置一起提供的容器上。在一个实施方案中,当捕获条形码/qr代码时,用户装置2410将条形码/qr代码数据传输到iot云服务2420,并且iot装置管理将iot装置2401-2402注册在iot装置数据库2430中并且与api2445通信以建立与如上所述的iot装置2401-2402的连接。以这种方式,用户可以容易地将iot装置2401-2402集成到系统中,包括来自外部iot云服务2440的那些装置。一旦以这种方式注册,虚拟iot装置将出现在如上所述的用户装置2410的gui内(参见,例如图25和相关文本)。

图26示出了与“虚拟”iot中心一起操作的本发明的实施方案。例如,用户可能不具有物理iot中心,但是可以实现本文所述的技术以通过“虚拟化”iot云服务2420中的iot中心2600来复制iot中心的功能。在这个示例中,用户的移动装置2410通过例如蓝牙(如,btle)、wifi或其他本地无线连接直接与iot装置101-103通信。在一个实施方案中,可以使用上述相同的技术(例如,扫描条形码或qr代码以向系统注册装置)将新的iot装置101-103添加到系统。在这种情况下,用户装置2410从新的iot装置101接收qr代码或条形码数据,并将该数据传递到iot云服务2420。然后,iot云服务2420使用qr代码数据(如上所述)生成加密的消息,并将加密的消息发送回用户的装置2410,该用户装置又将加密的消息转发到iot装置101。上文所述的所有相同类型的消息可使用用户装置2410作为中介在iot云服务2420和iot装置101-103之间传递(例如,安全性、ota支持、诊断、装置遥测等)。因此,只要用户在家或在办公室(或者在iot装置101-103所在的任何位置),用户仍然可以控制iot装置101-103,并且设置、安全性和装置更新仍然以相同方式进行。

在一个实施方案中,用户装置2410不保持与iot装置101-103中的每个iot装置的连续连接。相反,它可以周期性地连接、交换数据,然后从每个iot装置101-103断开连接。以这种方式,用户装置2410可充当用于iot云服务2420与各种不同的iot装置之间的所有通信的中央中心。另外,它允许多个不同的用户装置2410访问iot装置101-103中的每个iot装置。例如,如果在用户家中有两个或更多个个体持有该装置,则这些装置中的每个装置可以在不同的时间访问iot装置101-103以提供与iot服务2420的通信。请注意,这与标准的蓝牙配对模式是有区别的,在蓝牙配对模式下,手机会保持连接打开并使其他装置无法连接。

图27中示出根据本发明的一个实施方案的方法。该方法可在上述系统架构的环境内实施,但不限于任何具体系统架构。

在2701处,用户发起对新的外部iot装置的注册。举例来说,用户可能已经从除了用户的正常iot服务之外的服务购买了iot装置(例如,诸如智能恒温器)。如上所述,用户的移动装置上的应用程序可指示用户拍摄与新装置相关联的由用户装置传输到iot服务的条形码/qr代码的照片。作为响应,在2702处,iot服务验证和/或建立与外部iot云服务的通信信道。如上所述,通信可经由通过外部iot云服务暴露的api来完成。一旦外部iot装置已被注册,则在2703处,其可被显示在用户应用程序的gui中,并且新的iot装置的记录可被存储在iot云服务的iot装置数据库内。

在2704处,用户可生成命令以经由用户应用程序来控制外部iot装置。这些命令经由iot云服务传递到外部iot云服务api。如上所述,在一些实施方案中,api可将命令转换为可由外部iot装置直接解释的本地命令。另外,在2705处,由iot装置生成的任何信息可以经由api从外部iot云服务发送到iot云服务。再次,api可以根据需要转换信息以供iot云服务使用。iot云服务随后将该信息传输到其中可在用户装置上显示该信息的应用程序。

图28示出了根据本发明的一个实施方案的用于虚拟装置配对的另一个方法。该方法可在上述系统架构的环境内实施,但不限于任何具体系统架构。

在2801处,用户捕获与新的iot装置相关联的新qr代码或条形码。在一个实施方案中,新的iot装置是由外部iot云服务2440的运营商设计的装置。在2802处,用户被提示输入虚拟装置账户的凭据(例如,用于外部iot云服务2440的用户名和密码)。在2803处,iot云服务2420使用所提供的凭据向虚拟装置账户验证。最后,在2804处,iot云服务2440创建出现在用户的gui内的虚拟装置表示(例如,如图25所示)。

本发明的实施方案可包括上文所述的各种步骤。这些步骤可体现为可用于致使通用处理器或专用处理器执行这些步骤的机器可执行指令。或者,这些步骤可由包含用于执行这些步骤的硬连线逻辑的特定硬件组件执行,或由编程的计算机组件和定制硬件组件的任何组合执行。

如本文所述,指令可指代特定硬件配置,诸如专用集成电路(asic),其被配置为执行某些特定操作或具有体现在非暂态计算机可读介质中的存储器中所存储的预定功能或软件指令。因此,可以使用在一个或多个电子装置(例如,终端站、网络元件等)上存储和执行的代码和数据来实现附图中所示的技术。此类电子装置使用计算机机器可读介质存储和传送(在内部和/或与网络上的其他电子装置)代码和数据,计算机机器可读介质诸如是非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存存储装置;相变存储器)和暂态计算机机器可读通信介质(例如,电学、光学、声学或其他形式的传播信号—诸如载波、红外信号、数字信号等)。此外,这类电子装置通常包括连接到一个或多个其他组件的一个或多个处理器的集合,所述其他组件诸如一个或多个存储装置(非暂态机器可读存储介质)、用户输入/输出装置(例如,键盘、触摸屏和/或显示器)以及网络连接。所述处理器集合和其他组件的耦接通常通过一个或多个总线和桥接器(也称为总线控制器)进行。存储装置和承载网络通信量的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子装置的存储装置通常将用于执行的代码和/或数据存储在该电子装置的一个或多个处理器的集合上。当然,可以使用软件、固件和/或硬件的不同组合来实现本发明的是实施方案的一个或多个部分。

在整个具体实施方式中,出于解释的目的,陈述了许多特定细节以便透彻理解本发明。然而,本领域的技术人员将容易明白,可在没有这些特定细节中的一些的情况下实践本发明。在某些情况下,为免模糊本发明的主题,未详细描述众所周知的结构和功能。因此,应依据所附权利要求书确定本发明的范围和实质。

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