隐私保护消息盲化

文档序号:1591067 发布日期:2020-01-03 浏览:4次 >En<

阅读说明:本技术 隐私保护消息盲化 (Privacy preserving message blinding ) 是由 约瑟夫·阿方索·克纳普 托马斯·艾里奇 迈克尔·彼得·库珀-哈蒙德 亚历山大·米尔西亚·加拉加 于 2017-10-11 设计创作,主要内容包括:一种用于发送消息帧的方法,包括:通过包括处理器的终端设备生成包括第一明文头的第一消息帧部分;获得设备标识DevEUI和头盲化密钥HdrBKey;使用DevEUI和HdrBKey生成第一头掩码;通过将第一头掩码应用到第一明文头获得第一盲化头;通过使用第一盲化头更新第一消息部分获得第一更新消息帧部分;生成包括第一更新消息帧部分的第一盲化消息帧;以及将第一盲化消息帧发送到网络网关。(A method for transmitting a message frame, comprising: generating, by a terminal device comprising a processor, a first message frame portion comprising a first plaintext header; acquiring a device identifier DevEUI and a head blinding key HdrBKey; generating a first bitmask using DevEUI and HdrBKey; obtaining a first blinded header by applying a first header mask to the first plaintext header; obtaining a first update message frame portion by updating the first message portion using the first blinding header; generating a first blinded message frame comprising a first update message frame portion; and sending the first blinded message frame to a network gateway.)

隐私保护消息盲化

相关申请的交叉引用

本申请涉及2017年2月24日提交的美国临时申请No.62/463,401。上述申请的全部内容作为本PCT申请公开内容的一部分通过引用并入本文。

背景技术

本发明旨在解决诸如低功率广域网(LPWAN)之类的现有无线电结构中的隐私漏洞。因此,本发明的实施例提供了一种基于LoRaWAN协议规范对发送的消息进行加密和解密的装置和方法。

发明内容

一种用于发送消息帧的方法,包括通过包括处理器的终端设备生成包括第一明文头的第一消息帧部分。所述方法获得设备标识符(DevEUI)和头盲化密钥(HdrBKey)。所述方法使用DevEUI和HdrBKey生成第一头掩码,并且通过将第一头掩码应用到第一明文头获得第一盲化头。所述方法通过使用第一盲化头更新第一消息部分获得第一更新消息帧部分,生成包括第一更新消息帧部分的第一盲化消息帧,并且将第一盲化消息帧发送到网络网关。

一种用于发送消息帧的方法,包括:通过网络主机针对设备群(devicepopulation)中的每一终端设备获得设备标识符(DevEUI)、头盲化密钥(HdrBKey)和设备地址(DevAddr)。所述方法通过针对设备群的每一终端设备使用DevEUI和HdrBKey生成第一头掩码获得第一头掩码集合;并且针对设备群的每一终端设备生成包括DevAddr的第一候选明文头(CPH)。所述方法通过针对设备群的每一终端设备将第一头掩码应用到第一CPH,获得第一候选盲化头(CBH)集合,并且从网络网关获得包括第一盲化头的第一消息帧。所述方法将第一盲化头与第一CBH集合中的每一个第一CBH进行比较,并且基于比较所述第一CBH集合中的包括第一固定位集合的第一固定位匹配CBH,所述第一固定位集合与所述第一盲化头中包括的第二固定位集合相匹配。所述方法通过将第一头掩码集合中的一个第一头掩码应用到第一盲化头获得第一明文头,其中所述一个第一头掩码对应于第一固定位匹配CBH。所述方法通过使用第一明文头更新第一消息帧获得第一非盲化消息帧,并将第一非盲化消息帧发送到应用系统。

一种终端设备,包括:通信接口和操作性地连接到通信接口并且在其上执行盲化过滤器的处理器,其中处理器被配置为生成包括第一明文头的第一消息帧部分。处理器被配置为获得设备标识符(DevEUI)和头盲化密钥(HdrBKey)。处理器被配置为通过使用盲化过滤器,使用DevEUI和HdrBKey生成第一头掩码。处理器被配置为通过使用盲化过滤器,通过将第一头掩码应用到第一明文头获得第一盲化头,并且通过使用所述第一盲化头更新所述第一消息部分,获得第一更新消息帧部分,生成包括第一更新消息帧部分的第一盲化消息帧。处理器被配置为使用通信接口将第一盲化消息帧发送到网络网关。

一种包括通信接口的网络主机。它还包括操作性地连接到通信接口并且在其上执行盲化过滤器的处理器,其中处理器被配置针对设备群的每一终端设备获得设备标识符(DevEUI)和头盲化密钥(HdrBKey)以及设备地址(DevAddr)。处理器被配置为通过使用盲化过滤器,通过针对设备群的每一终端设备使用DevEUI和HdrBKey生成第一头掩码获得第一头掩码集合。处理器被配置为针对设备群中的每一终端设备生成包括DevAddr的第一候选明文头(CPH)。处理器被配置为通过使用盲化过滤器,通过针对设备群的每一终端设备将第一头掩码应用到第一CPH获得第一候选盲化头(CBH)集合。处理器被配置为通过使用通信接口,从操作性地连接到网络主机的网络网关获得包括第一盲化头的第一消息帧。处理器被配置为将第一盲化头与第一CBH集合中的每一个第一CBH进行比较,并且基于比较识别所述第一CBH集合中的包括第一固定位集合的第一固定位匹配CBH,所述第一固定位集合与所述第一盲化头中包括的第二固定位集合相匹配。处理器被配置为通过将第一头掩码集合的一个第一头掩码应用到第一盲化头获得第一明文头,其中一个第一头掩码对应于第一固定位匹配CBH。处理器被配置为通过使用第一明文头更新第一消息帧获得第一非盲化消息帧,并通过使用通信接口将第一非盲化消息帧发送到应用系统。

一种包括网络网关和终端设备的系统。所述终端设备包括第一通信接口和第一处理器,在所述第一处理器上执行第一盲化过滤器,其中所述终端设备操作性地连接到网络网关,其中所述第一处理器被配置为生成包括第一明文头的第一消息帧部分。第一处理器还获得设备标识符(DevEUI)和头盲化密钥(HdrBKey),并且通过使用第一盲化过滤器,使用DevEUI和HdrBKey生成第一头掩码。所述第一处理器还通过使用第一盲化过滤器,通过将第一头掩码应用到第一明文头获得第一盲化头,并且通过使用第一盲化头更新第一消息部分获得第一经更新消息帧部分。所述第一处理器生成包括第一更新消息帧部分的第一盲化消息帧,并且通过使用第一通信接口将第一盲化消息帧发送到网络网关。

一种非暂时性计算机可读介质(CRM),包括计算机可读程序代码,当通过处理器执行所述计算机可读程序代码时,使处理器能够生成包括第一明文头的第一消息帧部分,并且获得设备标识符(DevEUI)和头盲化密钥(HdrBKey)。处理器还使用DevEUI和HdrBKey生成第一头掩码,并且通过将第一头掩码应用到第一明文头获得第一盲化头。处理器还通过使用第一盲化头更新第一消息部分获得第一更新消息帧部分,生成包括第一更新消息帧部分的第一盲化消息帧,并且将第一盲化消息帧发送到网络网关。

一种包括计算机可读程序代码的非临时性计算机可读介质(CRM),当通过处理器执行所述计算机可读程序代码时,使处理器能够:针对设备群的每一终端设备获得设备标识符(DevEUI)、头盲化密钥(HdrBKey)和设备地址(DevAddr)。处理器通过针对设备群的每一终端设备使用DevEUI和HdrBKey生成第一头掩码获得第一头掩码集合,并且针对设备群的每一终端设备生成包括DevAddr的第一候选明文头(CPH)。处理器被配置为通过针对设备群的每一终端设备将第一头掩码应用到第一CPH获得第一候选盲化头(CBH)集合,并且从网络网关获得包括第一盲化头的第一消息帧。处理器被配置为将第一盲化头与第一CBH集合中的每一个第一CBH进行比较,并且基于比较识别所述第一CBH集合中的包括第一固定位集合的第一固定位匹配CBH,所述第一固定位集合与所述第二盲化头中包括的第二固定位集合相匹配。处理器被配置为通过将第一头掩码集合的一个第一头掩码应用到第一盲化头获得第一明文头,其中一个第一头掩码对应于第一固定位匹配CBH。处理器被配置为通过使用第一明文头更新第一消息帧获得第一非盲化消息帧,并且将第一非盲化消息帧发送到应用系统。

附图说明

图1A示出根据本文公开的一个或多个实施例的系统。

图1B示出根据本文公开的一个或多个实施例的系统。

图2A示出根据本文公开的一个或多个实施例的终端设备。

图2B示出根据本文公开的一个或多个实施例的网络网关。

图2C示出根据本文公开的一个或多个实施例的网络主机。

图3示出根据本文公开的一个或多个实施例的LoRaWAN消息帧。

图4A示出图示根据本文公开的一个或多个实施例的LoRaWAN安全过程的图。

图4B示出图示根据本文公开的一个或多个实施例的增强的LoRaWAN安全过程的图。

图5A和5B示出描述根据本文公开的一个或多个实施例的用于激活终端设备的方法的流程图。

图6A和6B示出描述根据本文公开的一个或多个实施例的用于对明文头进行盲化的方法的流程图。

图7A和7B示出描述根据本文公开的一个或多个实施例的用于对盲化头进行解盲的方法的流程图。

图8示出描述根据本文公开的一个或多个实施例的用于优化终端设备操作的方法的流程图。

图9示出描述根据本文公开的一个或多个实施例的用于优化网络操作的方法的流程图。

图10A和10B各自示出根据本文公开的一个或多个实施例的计算系统。

图11示出具有本文公开的一个或多个实施例的一般网络架构的高级视图。

图12示出具有本文公开的一个或多个实施例的消息的一些组件。

图13示出利用本文公开的一个或多个实施例的消息盲化过程。

具体实施方式

现在将参照附图详细描述本文公开的具体实施例。在本文公开的实施例的以下详细描述中,阐述了许多具体细节以提供对本文公开的实施例的更透彻理解。然而,对于本领域的普通技术人员来说明显得是,在没有这些具体细节的情况下,也可以实施本文公开的实施例。在其它情况下,没有详细描述公知的特征,以避免不必要地使描述复杂化。

在图1A-10B的以下描述中,在本文公开的各种实施例中,关于附图描述的任何组件可等同于关于任何其它附图描述的一个或多个类似命名的组件。为了简洁,将不针对每一个附图重复这些组件的描述。因此,每一个附图的组件的每一个实施例都通过引用而被结合,并且被假定为可选地存在于具有一个或多个类似命名的组件的每一个其它附图中。另外,根据本文公开的各种实施例,附图的组件的任何描述将被解释为可选实施例,其可以被实现为除了关于任何其它附图中的相应的名称相似的组件描述的实施例之外、与之结合或代替之。

在整个申请中,序数(例如,第一、第二、第三等)可以用作元件(即,申请中的任何名词)的形容词。序数的使用并不一定暗示或生成元件的任何特定顺序,也不一定将任何元件限制为仅是单个元件,除非明确地公开,例如通过使用术语“之前”、“之后”、“单个”和其它这样的术语。相反,序数的使用是为了区分元件。作为示例,第一元素与第二元素不同,并且第一元素可包括多于一个元素并且在元素的排序中在第二元素之后(或之前)。

一般而言,本文公开的实施例涉及隐私保护。具体地,本公开中的一个或多个实施例要求对与无线电传输相关联的头信息进行盲化,这种头信息通常易受窃听和/或拦截的影响。更具体地,使用设备特定的头盲化密钥(HdrBKey)执行头信息的盲化(或加密)以及最终的解盲(或解密),所述设备特定的头盲化密钥仅对于终端设备和管理该终端设备的网络主机是已知的。在本文公开的一个或多个其他实施例中,终端设备(即,网络使能的物理对象)可包括监视和调整其自身参数以优化终端设备操作的能力。类似地,网络主机可包括监视和调整网络范围参数以优化网络操作的能力。

在本文公开的一个或多个实施例中,通过消息盲化保护隐私至少部分地利用了LoRaWAN协议。在日期为2016年7月的标题为“LoRa联盟LoRaWAN规范”的版本1.0.2的文档中定义了LoRaWAN协议的一个版本。LoRaWAN协议在此通过引用整体并入。此外,本文公开的实施例不限于LoRaWAN协议的特殊版本。基于这里讨论的示例性实施例,本领域的普通技术人员将清楚,消息盲化的使用不必限于LoRaWAN协议,并且其他协议也可受益于这里讨论的概念、方法、系统和设备的结合。

在本文公开的一个或多个实施例中,通过消息盲化来保护隐私至少部分地利用了电气和电子工程师协会(IEEE)802.15.4标准,其定义了低速率无线个人区域网(LR-WPAN)的操作。IEEE 802.15.4标准的一个版本是在日期为2011年9月的标题为“用于局域网和城域网的IEEE标准-第15.4部分:低速率无线个人区域网(LR-WPAN)”版本IEEE Std802.15.4-2011的文档中定义。IEEE 802.15.4标准在此通过引用而整体结合。此外,本文公开的实施例不限于IEEE 802.15.4标准的特殊版本。

图1A示出根据本文公开的一个或多个实施例的系统。系统(100A)包括终端设备(102)、网络网关(104A)、网络主机(106)和应用系统(108)。这些组件的每一个在下面描述。

在本文公开的一个或多个实施例中,终端设备(102)可以是包括至少一个传感器的任何网络使能的物理对象(包括软件和/或固件)。在本文公开的一个或多个实施例中,术语“网络使能的”可以指包括通过诸如局域网(LAN)或广域网(WAN)之类的网络以收集和交换信息的功能。在本文公开的一个或多个实施例中,终端设备(102)可以是物联网(IoT)使能的物理对象。终端设备(102)的示例可包括但不限于微尘、电器、车辆、可佩戴或可植入的设备以及城市或乡村建筑。

在本文公开的一个或多个实施例中,终端设备(102)可包括使用一个或多个板载(或操作性地连接的)传感器以收集传感器信息的功能。终端设备(102)可包括将前述传感器信息发送到网络网关(104A)的进一步功能。在本文公开的一个或多个实施例中,终端设备(102)和网络网关(104A)可以通过双向、低功率和长距离无线通信链路操作性地连接。在本文公开的一个或多个实施例中,

Figure BDA0002245627930000061

无线通信链路可以采用用于长距离、低功率和低数据速率应用的无线调制。(LoRa是Semtech公司的注册商标)。在本文公开的一个或多个其他实施例中,终端设备(102)和网络网关(104A)可以通过任何其他现有或未来开发的无线通信链路操作性地连接,诸如,例如Wifi、蓝牙、Zigbee、Z-Wave和蜂窝连接(例如,2G/3G/4G)。尽管下面的实施例一般地描述了终端设备(102)和网络网关(104A)之间的双向通信,但是考虑到这里描述的概念、方法、设备和系统,本领域的普通技术人员将认识到,例如终端设备(102)到网络网关(104A)之间的单向通信也将受益于本文讨论的隐私盲化。

在本文公开的一个或多个实施例中,终端设备(102)可包括进一步功能以生成和发送加入请求消息,并且随后接收加入接受消息(例如,参见图5)。另外,终端设备(102)可包括接收配置更新消息(例如,参见图9)和/或软件和固件更新的功能。在本文公开的一个或多个实施例中,终端设备(102)可包括进一步功能以监视、分析和优化其自身,从而改进操作管理(例如,参见图8)。在本文公开的一个或多个实施例中,终端设备(102)可包括执行盲化和解盲操作的功能(例如,参见图6A-7B)。下面将参考图2A进一步详细描述终端设备(102)。

在本文公开的一个或多个实施例中,网络网关(104A)可以是任何网络互连、物理设备(包括软件和/或固件)。在本文公开的一个或多个实施例中,术语“网络互联”可以指包括将使用不同基本协议的至少两个网络连接在一起的功能。因此,在本文公开的一个实施例中,网络网关(104A)可包括在LoRaWAN协议和传输控制协议/网际协议(TCP/IP)之间进行汇聚/或调解的功能。TCP/IP可以被网络主机(106)和应用系统(108)驻留的回程网络采用。在本文公开的另一实施例中,网络网关(104A)可包括在任何其它现有或未来开发的无线协议和TCP/IP(或任何其它现有或未来开发的网络协议)之间进行汇聚/或调解的功能。网络网关(104A)的示例包括但不限于网桥、协议转换器、路由器、网络交换机、多层交换机、无线接入点、网络集线器和网络转发器。

在本文公开的一个或多个实施例中,上述回程网络可以是网络网关(104A)、网络主机(106)和应用系统(108)通过其操作性地(或通信地)连接的介质。系统(100A)的这些不同组件之间的连接可以是有线的和/或无线的、直接的或间接的、临时的、永久的和/或间断的。此外,回程网络可以使用局域网(LAN)或广域网(WAN),诸如因特网来实现。此外,回程连线网络可采用任何现有或未来开发的有线及/或无线通信协议,其包括促进至少系统(100A)的各种组件之间的信息交换的功能。

在本文公开的一个或多个实施例中,网络网关(104A)可包括进一步功能以获得信息并将信息转发到终端设备(102)和/或网络主机(106)或从终端设备(102)和/或网络主机(106)转发信息。具体地,在本文公开的一个或多个实施例中,网络网关(104A)可包括从终端设备(102)接收LoRaWAN消息帧的功能。在本文公开的一个或多个实施例中,接收的LoRaWAN消息帧可包括盲化头(下面讨论)。随后,网络网关(104A)可包括将接收的LoRaWAN消息帧封装到TCP/IP使用的媒体访问控制(MAC)帧中,并将生成的MAC帧发送到网络主机(106)的功能。在本文公开的一个或多个实施例中,网络网关(104A)还可包括从网络主机(106)接收MAC帧的功能。网络网关(104A)随后可包括对接收的MAC帧进行解封装以获得驻留于其中的有效载荷(即,网络主机(106)可以尝试向终端设备(102)发送的内容)的功能。然后,网络网关(104A)可包括将获得的有效载荷封装到由LoRaWAN协议使用的LoRaWAN消息帧中,并且将生成的LoRaWAN消息帧发送到终端设备(102)的功能。本领域的普通技术人员将理解,在不脱离本文公开的实施例的范围的情况下,网络网关(104A)可包括其他功能。下面将参考图2B进一步详细讨论网络网关(104A)。

在本文公开的一个或多个实施例中,网络主机(106)可以是可以被配置为生成、发送、接收和/或处理MAC帧的任何计算系统(包括软件和/或固件)。在本文公开的一个实施例中,网络主机(106)可以在一个或多个物理服务器(例如,在数据中心中)上实现。在本文公开的另一实施例中,网络主机(106)可以在一个或多个可以是基于云的虚拟服务器上实现。在本文公开的另一实施例中,网络主机(106)可以在一个或多个物理和/或虚拟服务器的组合上实现。在本文公开的另一实施例中,网络主机(106)可以在类似于图10A和10B中所示的示例性计算系统的任何一个或多个计算系统上实现。

在本文公开的一个或多个实施例中,网络主机(106)可包括管理系统(100A)的功能。具体地,为了管理系统(100A),网络主机(106)可包括消除重复的封包(例如,MAC帧和LoRaWAN消息帧)、调度确认和适配数据速率的功能。为了进一步适配数据速率,在本文公开的一个或多个实施例中,网络主机(106)可包括通过采用自适应数据速率(ADR)方案单独地管理每一终端设备(102)的数据速率和射频(RF)输出的进一步功能。网络主机(106)可包括实现封包路由、智能动态网络网关选择(用于优化的流量路由)和设备认证的进一步功能。在本文公开的一个或多个实施例中,网络主机(106)可包括生成和发送配置更新消息的功能(例如,参见图9)。在本文公开的一个或多个实施例中,网络主机(106)可包括向应用系统(108)提供规定(provisioning)、管理(administration)和报告服务的功能。

在本文公开的一个或多个实施例中,网络主机(106)可包括从网络网关(104A)接收MAC帧的功能。如上所述,接收的MAC帧可以对来自终端设备(102)的LoRaWAN消息帧进行封装。在本文公开的一个实施例中,接收的LoRaWAN消息帧可包括盲化头(例如,参见图4B)。在这样的实施例中,接收的LoRaWAN消息帧还可包括例如由起始端设备(102)收集和/或测量的传感器信息。在本文公开的另一实施例中,接收的LoRaWAN消息帧可以是加入请求消息(例如,参见图5)。网络主机(106)可包括通过解封装接收的MAC帧获得LoRaWAN消息帧的进一步功能。在本文公开的一个或多个实施例中,类似于终端设备(102)的网络主机(106)可包括执行盲化和解盲操作的功能(例如,参见图6A-7B)。此外,网络主机(106)可包括将LoRaWAN消息帧(包括解盲头)封装到MAC帧中,并且随后将生成的MAC帧发送到应用系统(108)的功能。

在本文公开的一个或多个实施例中,网络主机(106)可包括为一个或多个终端设备(102)动态分配设备地址(DevAddr)的附加功能。该分配可以响应于从(一个或多个)终端设备(102)(例如,参见图5)接收到加入请求消息来执行。在本文公开的一个或多个实施例中,DevAddr可以是为网络/系统(100A)中的终端设备规定设备地址的唯一32位十六进制数。响应于接收到加入请求消息,网络主机(106)可包括生成加入接受消息并将其发送到终端设备(102)的进一步功能。在本文公开的一个或多个实施例中,加入接受消息可包括激活终端设备(102)并由此使终端设备(102)能够与系统(100A)的各种其他组件安全地通信所必需的相关信息(例如,动态设备地址、会话密钥和头盲化密钥(下面讨论))。

此外,在本文公开的一个或多个实施例中,网络主机(106)可包括从应用系统(108)接收MAC帧的功能。在本文公开的一个实施例中,这些接收的MAC帧可包括控制终端设备(102)的动作或软件和/或固件更新的指令。网络主机(106)随后可包括经由网络网关(104A)向终端设备(102)转发这些接收的MAC帧的功能。此外,网络主机(106)可包括通过监视网络操作参数和调整网络配置参数(例如,参见图9)来评估和优化网络操作的功能。在优化网络操作中,网络主机(106)还可包括通过生成和发送配置更新消息来影响终端设备操作的功能。本领域的普通技术人员现在将理解,在不脱离本文公开的实施例范围的情况下,网络主机(106)可包括其它功能。下面将参考图2C进一步详细讨论网络主机(108)。

在本文公开的一个或多个实施例中,应用系统(108)可以是可被配置为从终端设备(102)获取传感器信息并随后控制终端设备(102)的动作的任何计算系统(例如,参见图10A和10B)。在本文公开的一个实施例中,应用系统(108)可以使用一个或多个物理机器(例如,在数据中心中)实现。在本文公开的另一实施例中,应用系统(108)可以使用一个或多个虚拟机实现,这可以是基于云的。在本文公开的又一实施例中,应用系统(108)可以使用一个或多个物理和虚拟机的组合实现。应用系统(108)的示例包括但不限于台式计算机、笔记本电脑、平板计算机、服务器、智能电话、游戏控制台和工作站。

在本文公开的一个或多个实施例中,应用系统(108)可包括从网络主机(106)接收MAC帧的功能。接收的MAC帧可包括例如来自终端设备(102)的传感器信息。应用系统(108)可包括对从终端设备(102)接收的信息执行分析的进一步功能。在本文公开的一个或多个实施例中,应用系统(108)还可包括生成指令、命令和/或软件/固件更新的功能,这些指令、命令和/或软件/固件更新可以随后被发送到一个或多个终端设备(102)。本领域的普通技术人员现在将理解,应用系统(108)可包括额外的或可替换的功能,而不脱离本文公开的实施例的范围。

虽然图1A示出组件的配置,但是在不背离本文公开的实施例的范围的情况下,可以使用除了图1A中所示的系统配置之外的系统配置。例如,如图1A中可选地示出的,系统(100A)可包括额外的网络网关(104B),其可以作为驻留在网络网关(104A)和网络主机(106)之间的网络转发器而服务。作为另一示例,如图1B所示,系统(100B)可包括多个终端设备(102A-102C、102J-102L、102S-102U),其中,每一个集合操作性地连接到指定的网络网关(104D-104F)。多个网络网关(104D-104F)随后可以操作性地连接到网络主机(106),网络主机(106)又可以操作性地连接到多个应用系统(108X-108Z)。

图2A示出根据本文公开的一个或多个实施例的终端设备。终端设备(200)包括电源(202)、一个或多个传感器(204)、零个或多个致动器(206)、一个或多个处理器(208)以及通信接口(214)。这些组件的每一个在下面描述。

在本文公开的一个或多个实施例中,电源(202)可以是任何电力供应设备。在本文公开的一个或多个实施例中,电源(202)可以是任何电存储设备。在本文公开的一个实施例中,电源(202)可以存储和提供直流(DC)电源。在本文公开的另一实施例中,电源(202)可以存储和提供交流(AC)电源。在本文公开的又一实施例中,电源(202)可以存储并提供DC和AC电源的组合。在本文公开的一个或多个实施例中,电源(202)可包括向终端设备(200)的各种其他组件(例如,传感器(204)、致动器(206)(如果有的话)、处理器(208)和通信接口(214))提供电力的功能。电源(202)可包括另外的可充电功能,诸如,例如电池。在本文公开的一个或多个实施例中,电源(202)可包括集成管理系统,其可监视去往和来自电源(202)的电力的充电和放电。在这样的实施例中,管理系统还可以监视与电源(202)的操作和调节相关的测量。监视的测量或属性可包括但不限于温度、压力、泄漏、电容、电阻、电感和能耗率。在本文公开的一个或多个实施例中,电源(202)可以操作性地连接到外部电源(未示出),电源(202)可以从该外部电源汲取功率以便再充电。本领域普通技术人员现在将理解,电源(202)可包括用于使能前述功能和其他功能的额外的电路或设备(例如,电压调节器、转换器、变压器等),而不脱离本文公开的实施例的范围。

在本文公开的一个或多个实施例中,传感器(204)可以是包括软件的物理设备。在本文公开的一个或多个实施例中,传感器(204)可以是包括固件的物理设备。在上述任一示例中,提供软件或固件以将可测量的物理特性(即,可描述物理系统的状态的特性)转换为电信号或数据。物理特性的示例可包括但不限于电荷、流速、频率、强度、位置、动量、压力、强度、温度、速度和体积。本领域的普通技术人员现在将理解,在不偏离本文公开的实施例的范围的情况下,传感器可以取决于终端设备(200)相关联的应用、环境或两者来检测和测量其它物理特性。传感器(204)的示例可包括但不限于加速度计、全局定位系统(GPS)设备、压力传感器、温度传感器、麦克风、相机、脑电图仪(EEG)(即,生物电传感器)和光致电离检测器(PID)(例如,气体或有机化合物传感器)。在本文公开的一个或多个实施例中,一个或多个传感器(204)可以操作性地连接到电源(202)和一个或多个处理器(208)。

在本文公开的一个或多个实施例中,致动器(206)可以是包括软件的物理设备。在本文公开的一个或多个实施例中,致动器(206)可以是包括固件的物理设备。在上述任一情况下,软件或固件被提供给传感器以使能将电信号或数据转换为激源。在本文公开的一个或多个实施例中,激源的性质可以是动力学的、感觉的、热的、化学的、听觉的、视觉的、任何其它类型的激源,或其组合。致动器(206)的示例可包括但不限于电机、流体泵、压电元件、扬声器和显示器。本领域的普通技术人员现在将理解,在不偏离本文公开的实施例的范围的情况下,致动器可以根据终端设备(200)相关联的应用、环境或两者来生成其它激源。此外,在本文公开的一个或多个实施例中,零个或多个致动器(206)操作性地连接到电源(202)和一个或多个处理器(208)。

在本文公开的一个或多个实施例中,处理器(208)可以是包括软件的用于执行指令的集成电路的集合。在本文公开的一个或多个实施例中,处理器(208)可以是用于执行指令的包括固件的集成电路的集合。上述指令可以对应于计算机可读程序代码,当由一个或多个处理器(208)执行时,其使能一个或多个处理器(208)执行如图5-8所示的本文公开的实施例。本领域的普通技术人员现在将理解,计算机可读程序代码可以使一个或多个处理器(208)能够执行额外的操作,而不脱离本文公开的实施例的范围。处理器(208)的示例可包括但不限于,分立处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、微控制器、图形处理单元(GPU)、现场可编程门阵列(FPGA)、单板计算机、以及它们的任何组合。

在本文公开的一个或多个实施例中,可以在终端设备(200)的一个或多个处理器(208)上执行盲化过滤器(210)。在本文公开的一个实施例中,盲化过滤器(210)可以是计算机程序或计算机可读程序代码集的至少一部分。当由一个或多个处理器(208)执行时,盲化过滤器(210)可以使得一个或多个处理器(208)能够根据本文公开的实施例(例如,参见图6A-7B)执行盲化或解盲操作。

在本文公开的一个或多个实施例中,决策逻辑(212)可以在终端设备(200)的一个或多个处理器(208)上执行。在本文公开的一个实施例中,决策逻辑(212)可以是计算机程序或计算机可读程序代码集的至少一部分。当由一个或多个处理器(208)执行时,决策逻辑(212)可以根据本文公开的实施例(例如,参见图8)向一个或多个处理器(208)提供监视和优化终端设备操作的功能。

在本文公开的一个或多个实施例中,通信接口(214)可以是用于接收和发送LoRaWAN消息帧的包括软件的物理设备。在本文公开的一个或多个实施例中,通信接口(214)可以是用于接收和发送LoRaWAN消息帧的物理设备,包括固件。通信接口(214)可以将终端设备(200)通信地连接到一个或多个网络网关(例如,参见图1A)。在本文公开的至少一个实施例中,通信接口(214)可以采用LoRa无线调制以接收和发送信息。在本文公开的至少一个实施例中,通信接口(214)可以采用LoRaWAN协议以接收和发送信息。在本文公开的另一实施例中,通信接口(214)可以采用任何其他现有的或未来开发的调制、协议或其组合以接收和发送信息。

在本文公开的一个或多个实施例中,通信接口(214)可包括接收加入接受消息(来自网络主机)的功能(例如,参见图5)。通信接口(214)可包括接收配置更新消息(例如,参见图9)和软件/固件更新(来自网络主机)的额外的功能。在本文公开的一个或多个实施例中,通信接口(214)可包括经由网络网关向网络主机发送传感器信息(从一个或多个传感器(204)获得)的进一步功能。通信接口(214)的示例包括但不限于网络接口控制器、网络接口设备、网络套接字和天线。

虽然图2A示出组件的配置,但是在不偏离本文公开的实施例的范围的情况下,可以使用除了图2A中所示的配置之外的终端设备配置。

图2B示出根据本文公开的一个或多个实施例的网络网关。网络网关(220)包括电源(222)、存储器(224)、一个或多个处理器(226)和通信接口(228)。这些组件的每一个在下面描述。

在本文公开的一个或多个实施例中,电源(222)可基本上类似于以上关于图2A中的终端设备描述的电源(202)。在本文公开的一个或多个实施例中,存储器(224)可以是任何非持久型或易失性存储器,诸如,例如随机存取存储器(RAM)和高速缓冲存储器。存储器(224)可以操作性地连接到电源(222)和一个或多个处理器(226)。在本文公开的一个或多个实施例中,一个或多个处理器(226)可以基本上类似于以上在图2A中描述的处理器(208)。

在本文公开的一个或多个实施例中,通信接口(228)可以是用于接收和发送LoRaWAN消息帧、MAC帧或其组合的包括软件的物理设备。在本文公开的一个或多个实施例中,通信接口(228)可以是用于接收和发送LoRaWAN消息帧、MAC帧或其组合的包括固件的物理设备。通信接口(228)可以将网络网关(220)通信地连接到一个或多个终端设备和网络主机(例如,参见图1A)。在本文公开的一个实施例中,通信接口(228)可以采用LoRa无线调制、LoRaWAN协议或其组合以接收和发送信息。通信接口(228)可以额外的地或可替换地采用TCP/IP栈和协议以从/向驻留在回程网络中的系统(如上所述)接收和发送信息。在本文公开的另一实施例中,通信接口(228)可以采用任何其它现有的或未来开发的调制、栈、协议或其组合以接收和发送信息。通信接口(228)的示例包括但不限于网络接口控制器、网络接口设备、网络套接字、以太网端口和天线。

虽然图2B示出组件的配置,但是在不脱离本文公开的实施例的范围的情况下,可以使用不同于图2B所示的网络网关配置。

图2C示出根据本文公开的一个或多个实施例的网络主机。网络主机(240)包括数据存储库(242)、一个或多个处理器(244)和通信接口(250)。这些组件的每一个在下面描述。

在本文公开的一个或多个实施例中,数据存储库(242)可以是任何类型的存储单元、数据结构、设备或其组合(例如,文件系统、数据库、表的集合或任何其他存储机制)。数据存储库(242)可包括合并与本文公开的实施例相关的任何信息的功能,包括但不限于用于跟踪哪个网络网关可以操作性地连接到哪个终端设备的路由表、一个或多个网络会话密钥、一个或多个应用会话密钥、一个或多个头盲化密钥、以及与操作性地连接到网络主机(240)的每一终端设备相关联的监视数据速率和RF输出。在本文公开的一个或多个实施例中,数据存储库(242)可以使用多个存储单元、数据结构或设备被实现,这些存储单元、数据结构或设备可以是相同类型的或可以不是相同类型的或位于相同物理站点处。数据存储库(242)的示例包括但不限于固态驱动器、光盘驱动器、磁存储、基于云的存储系统、以及任何其它持久型和非易失性存储介质。

在本文公开的一个或多个实施例中,网络主机(240)的一个或多个处理器(244)可以基本上类似于分别关于图2A或2B中的终端设备或网络网关描述的处理器。此外,在本文公开的一个或多个实施例中,盲化过滤器(246)可以在网络主机(240)的一个或多个处理器(224)上执行。在本文公开的一个实施例中,盲化过滤器(246)可以是计算机程序或计算机可读程序代码集的至少一部分。当由一个或多个处理器(244)执行时,盲化过滤器(246)可以使能一个或多个处理器(244)根据本文公开的实施例(例如,参见图6A-7B)执行盲化或解盲操作。

在本文公开的一个或多个实施例中,决策逻辑(248)可以在终端设备(240)的一个或多个处理器(244)上执行。在本文公开的一个实施例中,决策逻辑(248)可以是计算机程序或计算机可读程序代码集的至少一部分。当由一个或多个处理器(244)执行时,决策逻辑(248)可以向一个或多个处理器(244)提供根据本文公开的实施例(例如,参见图9)监视和优化网络操作的功能。

在本文公开的一个或多个实施例中,通信接口(250)可以是用于接收和发送MAC帧的包括软件的物理设备。在本文公开的一个或多个实施例中,通信接口(250)可以是用于接收和发送MAC帧的包括固件的物理设备。通信接口(250)可以将网络主机(240)通信地连接到一个或多个网络网关和一个或多个应用系统(例如,参见图1B)。在本文公开的一个实施例中,通信接口(250)可以采用TCP/IP栈和协议以接收和发送信息。在本文公开的另一实施例中,通信接口(250)可以采用任何其它现有的或未来开发的联网栈、协议或其组合以接收和发送信息。通信接口(250)的示例包括但不限于以太网端口、网络接口控制器、网络接口设备、网络套接字和天线。

虽然图2C示出组件的配置,但是在不脱离本文公开的实施例的范围的情况下,可以使用不同于图2C所示的网络主机配置。

图3示出根据本文公开的一个或多个实施例的LoRaWAN消息帧。LoRaWAN消息帧(300)包括前导码(302)、物理头(PHDR)(304)、PHDR循环冗余校验(CRC)(306)和物理(PHY)有效载荷(308)。这些前述组件可以存在于上行链路消息帧中,该上行链路消息帧可以由终端设备发送到网络主机。在本文公开的一个实施例中,当考虑可以由网络主机向终端设备发送的下行链路消息帧时,LoRaWAN消息帧(300)还可包括CRC(310)。这些组件的每一个在下面描述。

在本文公开的一个或多个实施例中,前导码(302)、PHDR(304)、PHDR CRC(306)、PHY有效载荷(308)和CRC(310)可以由

Figure BDA0002245627930000141

协议栈物理层生成。物理层可以配置LoRaWAN消息帧(300),以便通过射频(RF)传输发送PHY有效载荷(308)。作为示例,物理层可以是终端设备或网络主机上的无线电硬件(即,通信接口)。在本文公开的一个或多个实施例中,PHDR(304)和PHY有效载荷(308)的完整性分别由PHDR CRC(306)和CRC(310)维护。

在本文公开的一个或多个实施例中,PHY有效载荷(308)可以是包括媒体访问控制(MAC)头(MHDR)(320)的数据结构。MHDR(320)可以指定包括但不限于LoRaWAN消息帧(300)的消息类型和LoRaWAN层规范的消息帧格式的版本的信息,其中LoRaWAN消息帧(300)利用LoRaWAN层规范进行编码。PHY有效载荷(308)还可包括MAC有效载荷(322)(下面描述)和消息完整性代码(MIC)(324)。在本文公开的一个或多个实施例中,MIC(324)可以是在LoRaWAN消息帧(300)(参见例如图4A和4B)的若干组件上计算和验证的十六进制数,以确保MAC有效载荷(322)的数据完整性。

在本文公开的一个或多个实施例中,MAC有效载荷(322)可以是包括帧头(FHDR)(340)的数据结构。FHDR(340)可以进一步分解,因此包括设备地址(DevAddr)(360)、帧控制(FCtrl)(362)、帧计数(FCnt)(364)和帧选项(FOpts)(366)。DevAddr(360)可以表示终端设备的网络地址,其可以在终端设备的激活期间由网络主机动态地分配(例如,参见图5)。FCtrl(362)可以包括信息,该信息包括但不限于无线电收发机(即,通信接口)的设置数据速率、传输功率、重复率和频率信道。FCnt(364)可以跟踪已经交换的上行链路消息和下行链路消息的数量。此外,FOpts(366)可以用于传输MAC命令,该命令使得网络主机能够向终端设备发出指令。发出的指令可以例如指示终端设备以调整一个或多个终端设备配置参数(参见例如图9)。

在本文公开的一个或多个实施例中,MAC有效载荷(322)还可包括帧端口(FPort)(342)和帧有效载荷(344)。FPort(342)可以指示使用哪个会话密钥(例如,网络会话密钥(NwkSKey)或应用会话密钥(AppSKey))来对帧有效载荷(344)进行加密。最后,帧有效载荷(344)可以表示终端设备或网络主机可能试图向彼此发送的内容。本领域普通技术人员现在将理解,LoRaWAN消息帧(300)可包括其他组件,而不脱离本文公开的实施例。

虽然图3示出组件的配置,但是在不背离本文公开的实施例的范围的情况下,可以使用与LoRaWAN规范相关的、不同于图3中所示的消息帧配置。例如,可以替代地采用遵循IEEE802.15.4标准的消息帧(例如,媒体访问控制(MAC)帧)。

图4A示出图示根据本文公开的一个或多个实施例的LoRaWAN安全过程的图。该过程(400A)可以通过获得帧有效载荷(402)开始,该帧有效载荷可以表示源设备可能尝试向目的地设备发送的内容。从这里开始,可以使用至少一个应用会话密钥(AppSKey)(404)将密码运算(406)应用于帧有效载荷(402)。在本文公开的一个或多个实施例中,AppSKey(404)可以是唯一的十六进制数,其对于终端设备是特定的,并且仅对于终端设备和应用系统是已知的。在本文公开的一个或多个实施例中,终端设备和应用系统可以使用AppSKey来加密和解密帧有效载荷(402)。在本文公开的一个实施例中,执行的密码运算(406)可以需要高级加密标准(AES)算法。在本文公开的另一实施例中,密码运算(406)可以需要任何其它现有的或未来开发的对称密码。上述密码运算(406)的结果可以生成加密帧有效载荷(414)。

在本文公开的一个或多个实施例中,对称密码可以是使用相同的密码密钥来加密未加密信息和解密已加密信息的密码算法。在本公开中,例如,密码密钥可以是头盲化密钥(HdrBKey),其可以用于盲化(或加密)明文头(即,未加密的信息)和解盲(或解密)盲化头(即,加密的信息)。除了上述AES算法之外,可用于本文公开的一个或多个实施例中的其它对称密码的示例包括但不限于Twofish算法、Serpent算法、Blowfish算法、CAST5算法、Kuznyechik算法、Rivest密码(RC)4算法、三重数据加密标准(3DES)算法、Skipjack算法和国际数据加密算法(IDEA)。

在本文公开的一个或多个实施例中,该过程(400A)可以通过MAC有效载荷(408)的生成来进行。MAC有效载荷(408)可以通过连接帧头(FHDR)(410)、帧端口(FPort)(412)和加密帧有效载荷(414)获得。FHDR(410)可包括设备地址(418)、帧控制(FCtrl)(420)、帧计数(FCnt)(422)和帧选项(FOpts)(424)。在本文公开的一个实施例中,FHDR(410)连同MAC头(MHDR)(416)和FPort(412)一起可以统称为明文头(428)。在本文公开的另一实施例中,明文头(428)可以至少包括设备地址(418)和FCnt(422)。在本文公开的一个或多个实施例中,术语“明文”可以指展现出暴露的、未加密的或易受攻击的状态,其可能易于被窃听或截取。

继续进行过程(400A),该明文头(428)随后可以附加有加密帧有效载荷(414)和消息完整性代码(MIC)(430),以获得物理(PHY)有效载荷(426)。MIC(430)可以通过以下方式来生成:使用至少网络会话密钥(NwkSKey)(432),将另一密码运算(434)共同地应用于明文头(428)和加密帧有效载荷(414)。在本文公开的一个或多个实施例中,NwkSKey(432)可以是特定于终端设备的唯一十六进制数,并且仅对于终端设备和网络主机是已知的。在本文公开的一个或多个实施例中,NwkSKey(432)可以由终端设备和网络主机用以计算和验证MIC(430)以确保数据完整性。在本文公开的一个实施例中,执行的密码运算(434)可以需要AES算法。在本文公开的另一实施例中,执行的密码运算(434)可以需要任何其它现有的或未来开发的对称密码。

图4B示出图示根据本文公开的一个或多个实施例的增强的LoRaWAN安全过程的图。除了盲化操作(442)之外,增强的过程(400B)基本上类似于图4A中描绘的过程(400A)。在本文公开的一个或多个实施例中,该盲化操作(442)的引入可以将窃听或截取在LoRaWAN消息帧内寄送的头信息的可能性最小化(如果不是消除的话)。此外,可以使用至少一个头盲化密钥(HdrBKey)(440)将盲化操作(442)应用于明文头(428)。如上所述,明文头(428)可以指可能易于被窃听或截取的未加密头(包括MHDR(416)、设备地址(DevAddr)(418)、FCtrl(420)、FCnt(422)、FOpts(424)和FPort(412))。在本文公开的一个或多个实施例中,增强的过程(400B)通过生成盲化的(或以其他方式加密的)头(444)来解决该弱点。在本文公开的一个或多个实施例中,HdrBKey(440)可以是特定于终端设备的唯一十六进制数,并且仅对于终端设备和网络主机是已知的。在本文公开的一个或多个实施例中,终端设备和网络主机可以使用HdrBKey(440)来对明文头进行盲化/加密,以及对盲化头进行解盲/解密。在本文公开的一个实施例中,执行的盲化操作(434)可以需要AES算法。在本文公开的另一实施例中,执行的盲化操作(434)可以需要任何其它现有的或未来开发的对称密码。

图5-9示出根据本文公开的一个或多个实施例的流程图。尽管顺序地呈现和描述了流程图中的各个步骤,但是本领域技术人员将理解,可以以不同的顺序执行这些步骤中的一些或全部,可以组合或省略这些步骤中的一些或全部,以及可以并行地执行这些步骤中的一些或全部。在本文公开的一个实施例中,图5-9中所示的步骤可以与图5-9中所示的任何其它步骤并行执行,而不脱离本文公开的实施例的范围。

图5A和5B示出描述根据本文公开的一个或多个实施例的用于激活终端设备的方法的流程图。具体地,图5A和5B描述了空中激活(OTAA)的方法。OTAA可以是使终端设备能够加入网络并参与与网络主机的安全信息交换的一种方式。此外,当初始部署终端设备时或者每当终端设备重置时,可以执行以下描述的OTAA过程。

在步骤500中,终端设备生成加入请求消息。在本文公开的一个或多个实施例中,加入请求消息可以是包括唯一标识符作为媒体访问控制(MAC)头(MHDR)的LoRaWAN消息帧(参见例如图3),由此使LoRaWAN消息帧属于加入请求消息类型。在本文公开的一个或多个实施例中,加入请求消息还可包括应用标识符(AppEUI)、设备标识符(DevEUI)和应用密钥(AppKey)。AppEUI可以是唯一标识特定应用系统(即,拥有或控制终端设备的应用系统)的全局唯一十六进制数。此外,DevEUI可以是唯一标识特定终端设备(即,生成加入请求消息的终端设备)的全局唯一十六进制数。此外,AppKey可以是特定于终端设备的唯一十六进制数。终端设备可以使用AppKey导出会话密钥和盲化密钥(参见例如步骤526),这对于使终端设备能够参与与网络主机的安全信息交换是必要的。AppKey可以在制造过程期间被预先规定(或存储)到终端设备。在本文公开的一个或多个实施例中,可以在制造过程期间将AppEUI、DevEUI和AppKey预先规定(或存储)到终端设备。本领域的普通技术人员将理解,加入请求消息可包括额外的组成部分,而不脱离本文公开的实施例的范围。

在步骤502中,终端设备向网络主机发送(在步骤500中生成的)加入请求消息。在步骤504中,网络主机接收(由终端设备在步骤502中发送的)加入请求消息。具体地,在本文公开的一个或多个实施例中,网络主机可以接收封装有加入请求消息的MAC帧。接收的MAC帧可以是由网络网关在从终端设备接收到加入请求消息时生成的。网络主机随后可以解封装该MAC帧以访问加入请求消息的各种组成部分(例如,AppEUI、DevEUI和AppKey)。

在步骤506中,网络主机确定是否允许终端设备加入或参与网络。在本文公开的一个或多个实施例中,该确定可能需要对加入请求消息进行认证,或者更具体地说,使用至少AppEUI、DevEUI和AppKey对加入请求消息的消息完整性代码(MIC)(参见例如图3)进行认证。如果允许终端设备加入或参与网络(即MIC认证成功),则处理进行到步骤508。另一方面,如果不允许终端设备加入或参与网络(例如,MIC认证失败),则处理结束。

在步骤508中,在确定允许终端设备加入或参与网络时,网络主机生成加入接受消息。在本文公开的一个或多个实施例中,加入接受消息可以是LoRaWAN消息帧(参见例如图3),其包括唯一标识符作为MHDR,从而使LoRaWAN消息帧属于加入接受类型。在本文公开的一个或多个实施例中,加入接受消息还可包括设备地址(DevAddr)和网络标识符(NetID)。DevAddr可以是唯一地标识网络中的终端设备的网络地址的唯一十六进制数。DevAddr可由网络主机响应于接收和认证加入请求消息而动态地分配。此外,NetID可以是唯一地标识特定网络(即,至少网络主机驻留于其中的网络)的全局唯一十六进制数。本领域的普通技术人员现在将理解,加入接受消息可包括额外的组成部分,而不脱离本文公开的实施例的范围。

转到图5B,在步骤520中,网络主机向终端设备发送加入接受消息。具体地,在本文公开的一个或多个实施例中,在生成加入接受消息之后,网络主机可以使用AppKey,结合例如高级加密标准(AES)加密算法,对加入接受消息进行加密。可替换地,网络主机可以使用AppKey,结合任何其它现有的或未来开发的对称密码,对加入接受消息进行加密。随后,网络主机可以将加密的加入接受消息封装在MAC帧内,其中MAC帧被发送到终端设备。在本文公开的一个或多个实施例中,一旦到达网络网关,该网络网关可能是远离终端设备的单跳(single-hop),则该网络网关可以在将加密的加入接受消息发送到终端设备之前对MAC帧解封装。

在步骤522,终端设备接收(在步骤520由网络主机发送的)加入接受消息。如上所述,在本文公开的一个或多个实施例中,可以对接收的加入接受消息进行加密。在步骤524中,终端设备随后对(在步骤522中接收的)加入接受消息进行解密。在本文公开的一个或多个实施例中,终端设备可以使用AppKey对加入接受消息进行解密,以访问加入接受消息的各种组成部分(例如,DevAddr和NetID)。

在步骤526中,终端设备导出网络会话密钥(NwkSKey)、应用会话密钥(AppSKey)和头盲化密钥(HdrBKey)。在本文公开的一个或多个实施例中,上述密钥中的每一个可以使用至少AppKey和NetID导出。本领域的普通技术人员现在将理解,终端设备可以使用额外的或可替换的组成部分导出上述密钥。NwkSKey可以是唯一的十六进制数,其对于终端设备是特定的,并且仅对于终端设备和网络主机是已知的。在本文公开的一个或多个实施例中,NwkSKey可以由终端设备和网络主机用来计算和验证所有LoRaWAN消息帧的MIC,以确保数据完整性(例如,参见图3、4A和4B)。此外,AppSKey可以是特定于终端设备的唯一十六进制数,并且仅对于终端设备和应用系统是已知的。在本文公开的一个或多个实施例中,AppSKey可以由终端设备和应用系统用来对LoRaWAN消息帧的帧有效载荷(例如,参见图3、4A和4B)进行加密和解密。此外,HdrBKey可以是特定于终端设备的唯一十六进制数,并且仅对于终端设备和网络主机是已知的。在本文公开的一个或多个实施例中,HdrBKey可以由终端设备和网络主机用来对LoRaWAN消息帧的明文头进行盲化/加密,以及对盲化头(参见例如图4B和6A-7B)进行解盲/解密。

虽然图5A和5B描述了一种用于激活终端设备的方法,但是在不背离本文公开的实施例的范围的情况下,可以使用不同于图5A和5B中所示的激活方法。例如,可以使用个性化激活(ABP)方法。在ABP中,在制造过程期间,并不执行上述的过程,而是将DevAddr、NwkSKey、AppSKey和HdrBKey预先规定(或硬编码)到终端设备。在本文所述的设备、系统和方法的一个或多个实施例中,可对单个部分进行硬编码。例如,在一个或多个实施例中,可以在制造期间将DevAddr提供给终端设备。在另一实施例中,可以在制造期间将NwkSKey提供给终端设备。在另一实施例中,可以在制造期间将AppSKey提供给终端设备。在另一实施例中,可以在制造期间将HdrBKey提供给终端设备。随后,使用这些预先规定的组件,在部署或重置终端设备时,终端设备可以立即开始参与与网络主机的安全信息交换。

图6A和6B示出描述根据本文公开的一个或多个实施例的用于盲化明文头的方法的流程图。具体地,图6A描述了一种用于对在终端设备和网络主机之间交换的任何第一LoRaWAN消息帧的明文头进行盲化的方法。图6B描述了用于对在终端设备和网络主机之间交换的任何后续(即,第二或更后的)LoRaWAN消息帧的明文头进行盲化的方法。

转到图6A,在步骤600中,生成第一LoRaWAN消息帧的一部分。在本文公开的一个或多个实施例中,该部分可包括第一明文头和第一加密帧有效载荷。如上参考图3所述,明文头可包括以下组成部分:MAC头(MHDR)、设备地址(DevAddr)、帧控制(FCtrl)、帧计数(FCnt)、帧选项(FOpts)和帧端口(FPort)。在本文公开的一个或多个实施例中,第一明文头和第一加密帧有效载荷可以合起来表示第一LoRaWAN消息帧的物理(PHY)有效载荷的一部分。在本文公开的一个实施例中,步骤600可以由终端设备执行,其中第一LoRaWAN消息帧可以是上行链路消息。在本文公开的另一实施例中,步骤600可以由网络主机执行,其中第一LoRaWAN消息帧可以是下行链路消息。

步骤602中,获得设备标识符(DevEUI)和头盲化密钥(HdrBKey)。在本文公开的一个或多个实施例中,可以从驻留在终端设备或网络主机上的本地存储或存储器中检索DevEUI和HdrBKey。此外,在本文公开的一个实施例中,DevEUI和HdrBKey可以通过预先规定(即,以个性化激活(ABP)的方式)(如上所述)本地存储在终端设备或网络主机上。在本文公开的另一实施例中,在执行了上面关于图5A和5B描述的方法之后,DevEUI和HdrBKey可以被本地存储在终端设备或网络主机上。

在步骤604中,生成第一头掩码。在本文公开的一个或多个实施例中,可以通过使用HdrBKey对DevEUI执行密码运算来生成第一头掩码。此外,密码运算可能需要任何现有的或未来开发的对称密码。作为示例,在本文公开的一个实施例中,密码运算可以采用AES加密算法。

在步骤606中,将(在步骤604中生成的)第一头掩码应用于第一明文头。在本文公开的一个或多个实施例中,将第一头掩码应用于第一明文头可能需要执行涉及第一头掩码和第一明文头的逐位异或(即,XOR)运算。在本文公开的一个或多个实施例中,可以通过上述逐位XOR运算生成第一盲化头。

在步骤608中,更新第一LoRaWAN消息帧的(在步骤600中生成的)的所述部分。在本文公开的一个或多个实施例中,该更新可能需要用(在步骤606中获得的)第一盲化头替代第一明文头。在步骤610中,可以根据LoRaWAN规定生成第一LoRaWAN消息帧的剩余部分,以生成第一盲化LoRaWAN消息帧。在本文公开的一个或多个实施例中,第一盲化LoRaWAN消息帧包括至少(在步骤608中获得的)第一盲化头。在步骤612中,随后发送(在步骤610中生成的)第一盲化LoRaWAN消息帧。在本文公开的一个或多个实施例中,无论发送实体是终端设备还是网络主机,第一盲化LoRaWAN消息帧都可以被发送到网络网关。

转到图6B,在步骤620中,生成第二(或后续)LoRaWAN消息帧的一部分。在本文公开的一个或多个实施例中,第二(或后续)LoRaWAN消息帧的所述部分可包括第二(或后续)明文头和第二(或后续)加密帧有效载荷。

在步骤622中,生成第二(或后续)头掩码。在本文公开的一个或多个实施例中,可以通过使用HdrBKey对第一(或先前生成的)头掩码执行密码运算来生成第二(或后续)头掩码。此外,密码运算可以需要任何现有的或未来开发的对称密码。作为示例,在本文公开的一个实施例中,密码运算可以采用AES加密算法。

在步骤624中,将(在步骤622中生成的)第二(或后续)头掩码应用于第二(或后续)明文头。在本文公开的一个或多个实施例中,将第二(或后续)头掩码应用于第二(或后续)明文头可能需要执行涉及第二(或后续)头掩码和第二(或后续)明文头的逐位异或(即,XOR)运算。在本文公开的一个或多个实施例中,可以通过上述逐位XOR运算生成第二(或后续)盲化头。

在步骤626中,更新(在步骤620中生成的)第二(或后续)LoRaWAN消息帧的所述部分。在本文公开的一个或多个实施例中,该更新可能需要使用(在步骤624中获得的)第二(或后续)盲化头替代第二(或后续)明文头。从这里,第二(或后续)LoRaWAN消息帧的剩余部分可以根据LoRaWAN规范生成。结果获得第二(或随后)盲化的LoRaWAN消息帧。在步骤628中,随后发送第二(或后续)盲化的LoRaWAN消息帧。在本文公开的一个或多个实施例中,无论发送实体是终端设备还是网络主机,第二(或后续)盲化的LoRaWAN消息帧都可以被发送到网络网关。

图7A和7B示出描述根据本文公开的一个或多个实施例的用于对盲化头进行解盲的方法的流程图。在本文公开的一个实施例中,以下解盲方法可以由网络主机独占地执行。在本文公开的另一实施例中,以下解盲方法(或者更准确地说,步骤700到步骤724)可以附加地在终端设备上执行。在后一实施例中,涉及“对于设备群中的每一终端设备”的术语(在下文中从网络主机执行该方法的角度进行介绍)可以被替换以反映涉及“对于终端设备”的术语(即,终端设备执行解盲方法)。

在步骤700中,对于设备群中的每一终端设备,获得设备标识符(DevEUI)、头盲化密钥(HdrBKey)和设备地址(DevAddr)。在本文公开的一个或多个实施例中,设备群可以指网络主机操作性地(或通信地)与之连接的终端设备的集合。参考图1B,由网络主机(106)管理的设备群可包括终端设备A-C(102A-102C)、J-L(102J-102L)和S-U(102S-102U)。此外,如上所述,DevEUI、HdrBKey和DevAddr每一个都是对于一终端设备特定的。因此,在本文公开的一个或多个实施例中,对于该设备群,可以获得唯一的DevEUI集合、唯一的HdrBKey集合和DevAddr集合。此外,在本文公开的一个或多个实施例中,DevEUI集合、HdrBKey集合和DevAddr集合可以从驻留在网络主机上的本地存储或存储器中检索。在本文公开的一个实施例中,可以通过Preprovisioning(预先规定)(即,以个性化激活(ABP)的方式)(如上所述),将上述信息集合本地存储在网络主机上。在本文公开的另一实施例中,可以在执行上面关于图5A和5B描述的方法之后,将上述信息集合本地存储在网络主机上。

在步骤702中,对于设备群中的每一终端设备,生成头掩码,从而获得头掩码集合。在本文公开的一个实施例中,当预期第一LoRaWAN消息帧时,可以通过使用HdrBKey对DevEUI执行密码运算生成第一头掩码。在本文公开的其他实施例中,当预期第二(或后续)LoRaWAN消息帧时,可以通过使用HdrBKey对第一(或先前生成的)头掩码执行密码运算生成第二(或后续)头掩码。此外,密码运算可能需要任何现有的或未来开发的对称密码。作为示例,在本文公开的一个实施例中,密码运算可以采用AES加密算法。

在步骤704中,对于设备群中的每一终端设备,生成用于下一预期的LoRaWAN消息帧的候选明文头(CPH),从而获得CPH集合。在本文公开的一个或多个实施例中,CPH的生成可能需要实例化(或初始化)随机十六进制数,其中该随机十六进制数的长度等于明文头的长度。随后,在明文头的为DevAddr(例如,参见图3、4A和4B)和其它固定数据指定的已知位位置(bit location)处,DevAddr和其它固定数据可以被替换到随机十六进制数的对应的位位置中。上述替换结果产生一CPH,该CPH可包括(由DevAddr和其它固定数据在它们的指定位位置处描绘的)有效位的一部分和非有效(或不关心)位的一部分。

在步骤706中,对于设备群中的每一终端设备,将头掩码应用于下一预期的LoRaWAN消息帧的CPH。因此,作为结果,对于设备群中的每一终端设备,获得候选盲化头(CBH),从而获得CBH集合。在本文公开的一个或多个实施例中,将头掩码应用于CPH可能需要执行涉及头掩码和CPH的逐位异或(即,XOR)运算。

在步骤708中,接收LoRaWAN消息帧。在本文公开的一个或多个实施例中,接收的LoRaWAN消息帧可包括盲化头(即,加密的明文头)(参见例如图4B)。此外,接收的LoRaWAN消息帧可以是由网络网关发送的。在本文公开的一个实施例中,当考虑到网络主机正在执行该解盲方法时,接收的LoRaWAN消息帧可以作为封装了LoRaWAN消息帧的媒体访问控制(MAC)帧而到达。在本文公开的另一实施例中,当考虑到终端设备正在执行该解盲方法时,接收的LoRaWAN消息帧可以作为其自身(即,没有MAC封装)而到达。

转向图7B,在步骤720中,(在步骤708中接收的LoRaWAN消息帧的)盲化头的固定(或有效)位,与CBH集合中的每一CBH的固定(或有效)位(在步骤706中获得)进行比较。在本文公开的一个或多个实施例中,基于该比较,识别至少一个固定位匹配CBH。在本文公开的一个或多个实施例中,该固定位匹配CBH指的是CBH集合中的包括与前述盲化头中包括的固定(或有效)位精确匹配的固定(或有效)位的CBH。尽管存在识别多个固定位匹配的CBH的可能性,但是该概率被认为是无穷小。随后,在所有可能性中,作为上述比较的结果,仅可以识别单个固定位匹配CBH。

在步骤722中,将识别的头掩码应用于(在步骤708中接收的LoRaWAN消息帧的)盲化头。在本文公开的一个或多个实施例中,识别的头掩码可以是(在步骤702中生成的)头掩码集合中的与(在步骤720中识别的)固定位匹配CBH相对应的一个头掩码。如上关于步骤706所述,(用于特定终端设备的)CBH可以通过将(用于特定终端设备的)头掩码应用到用于下一预期的LoRaWAN消息帧的(用于特定终端设备的)CPH来获得。因此,在本文公开的一个或多个实施例中,识别的头掩码可以是被应用到(用于特定终端设备的)CPH以获得(与特定终端设备相关联的)固定位匹配CBH的(用于特定终端设备的)头掩码。此外,在本文公开的一个或多个实施例中,在将识别的头掩码应用于盲化头时,获得明文(即,解密的/未加密的)头。在本文公开的一个或多个实施例中,将识别的头掩码应用于盲化头,结果得到明文头,这可能需要执行涉及识别的头掩码和盲化头的逐位异或(即,XOR)运算。

在步骤724中,使用(在步骤722中获得的)明文头更新(在步骤708中接收的)LoRaWAN消息帧。具体地,在本文公开的一个或多个实施例中,可以利用(在步骤722中获得)明文头来代替在接收的LoRaWAN消息帧中驻留的盲化头。结果是获得解盲的LoRaWAN消息帧。

在步骤726中,识别与固定位匹配CBH相对应的(设备群中的)发送端设备。在本文公开的一个或多个实施例中,因为头掩码、CPH和CBH是终端设备特定的(如上所述),所以一个或多个前述信息可以被追踪回到发送端设备。在本文公开的一个实施例中,可以在网络主机上本地跟踪或巩固(consolidate)终端设备和前述信息之间的关联。在这样的实施例中,发送端设备的识别可能需要找到包括固定位匹配CBH的本地存储的记录或条目。在识别特定的记录或条目时,可以找到与该特定的记录或条目相关联的发送端设备。

在步骤728中,识别(在步骤726中识别的)发送终端设备所注册到的应用系统。在本文公开的一个或多个实施例中,网络主机可包括跟踪或巩固下述关联性的功能:所述关联性详述了哪个终端设备集合可能由哪个应用系统拥有/控制。随后,使用这些关联性,可以识别拥有或控制(在步骤726中识别的)发送端设备的应用系统。在步骤730中,将(在步骤724中获得的)解盲的LoRaWAN消息帧发送到(在步骤728中识别的)应用系统。在本文公开的一个或多个实施例中,作为网络主机和应用系统所驻留的回程网络,可以采用TCP/IP,在发送之前可以将解盲的LoRaWAN消息帧封装在MAC帧中。

图8示出描述根据本文公开的一个或多个实施例的用于优化终端设备操作管理的方法的流程图。在本文公开的一个或多个实施例中,以下方法可以由终端设备独占地执行。

在步骤800中,监视一个或多个终端设备操作参数。在本文公开的一个实施例中,终端设备操作参数可以是任何可观察的物理特性、可测量的物理特性或其组合。在这样的实施例中,上述特性中的一个或多个可以由驻留在(或操作性地连接到)终端设备上的一个或多个传感器来估计。作为可观察和可测量的物理特性的终端设备操作参数的示例包括但不限于电特性(例如,电荷、电容、电场、电阻抗、功率、磁通量)、温度、位置、放射性质量、强度、频率、压力和速度。在本文公开的另一实施例中,终端设备操作参数可以是从一个或多个可观察/可测量物理特性导出的度量。度量可以描述定性信息诸如,例如阈值、约束、范围、持续时间、最大值、最小值和平均值。作为度量的终端设备操作参数的示例包括但不限于数据速率、处理器使用、硬件温度、传感器容限、等待时间、消息帧丢失、事故响应和脆弱性缓解。

在步骤802中,对照设定标准检查(在步骤800中监视的)一个或多个终端设备操作参数。在本文公开的一个实施例中,设定标准可包括静态条件或规范,其可以在制造过程期间提供。在本文公开的另一实施例中,设定标准可包括动态条件或规范,其可以随着例如软件/固件更新、配置更新消息(例如,参见图9)和自我改进/学习方案而改变。作为示例,用于位置的可观察/可测量物理特性(作为终端设备操作参数)的动态设定标准可以是由地理围栏(geofence)(即,当终端设备进入或离开特定区域、或者在距参考的指定范围内或超出该范围时可以触发响应的虚拟地理边界)提供的约束。作为另一示例,用于电源的寿命能量吞吐量的度量的静态设定标准(作为终端设备操作参数)可以是规定在其寿命的所有周期上可以被充电到电源中和从电源排出的能量的总量(以瓦特-小时为单位)的预设的硬顶或最大值。在本文公开的一个或多个实施例中,设定标准可以与全局终端设备目标一致,例如,能量节约、消息帧发送成功、持续的隐私和安全、以及其它性能相关目标。

在步骤804中,确定是否满足设定标准(对照该设定标准检查一个或多个终端设备操作参数)。如果满足设定标准,则处理进行到步骤806。另一方面,如果不满足设定标准,则处理结束。

在步骤806中,当(在步骤804中)确定一个或多个终端设备操作参数满足设定标准时,调整一个或多个终端设备配置参数。在本文公开的一个或多个实施例中,终端设备配置参数可以是可以影响终端设备的操作的控制变量。此外,在本文公开的一个或多个实施例中,可以调整一个或多个配置参数以保持终端设备操作与全局终端设备目标(如上所述)一致。终端设备配置参数的示例包括但不限于射频信道和数据速率(其可能影响通信范围、消息持续时间和电池寿命)。在本文公开的一个或多个其它实施例中,响应于(步骤804的)确定,可以调整一个或多个动态的设定标准。上述对配置参数或设定标准的调整可用于优化终端设备操作。

图9示出描述根据本文公开的一个或多个实施例的用于优化网络运行管理的方法的流程图。在本文公开的一个或多个实施例中,以下方法可以由网络主机独占地执行。

在步骤900中,监视一个或多个网络操作参数。在本文公开的一个实施例中,网络操作参数可以是从一个或多个可观察/可测量物理特性(如上所述)导出的任何性能度量。度量可以描述定性信息,例如阈值、约束、范围、持续时间、最大值、最小值和平均值。作为性能度量的网络操作参数的示例包括但不限于带宽可用性、业务水平、封包丢失、相对链路负载、等待时间、吞吐量、端到端延迟、抖动和其它现有网络性能测量/度量。

在步骤902中,对照设定标准检查(在步骤900中监视的)一个或多个网络操作参数。在本文公开的一个实施例中,设定标准可包括在网络的初始部署期间可能已经提供的静态条件或规范。在本文公开的另一实施例中,设定标准可包括动态的条件或标准,其可以随着例如软件/固件更新、以及自我改进/学习方案而改变。在本文公开的一个或多个实施例中,设定标准可以与全局网络目标一致,例如最大化运行时间和吞吐量、最小化等待时间和错误率、以及其它网络性能有关目标。

在步骤904中,确定是否满足(被对照以检查一个或多个网络操作参数的)设定标准。如果满足该设定标准,则处理进行到步骤906。另一方面,如果不满足设定标准,则处理结束。

在步骤906中,当(在步骤904中)确定一个或多个网络操作参数满足设定标准时,调整一个或多个网络配置参数。在本文公开的一个或多个实施例中,网络配置参数可以是可影响网络操作的控制变量。此外,在本文公开的一个或多个实施例中,可以调整一个或多个网络配置参数以保持网络操作与全局网络目标(如上所述)一致。在本文公开的一个或多个其它实施例中,响应于(步骤904的)确定,可以调整一个或多个动态的设定标准。上述对网络配置参数或设定标准的调整可用于优化网络操作。

在步骤908中,对网络配置参数或设定标准的调整可被翻译为要求终端设备遵从的指令/命令。例如,网络主机可以调整某一网络配置参数集合或设定标准,以对网络在任何给定时间可能经历的负载量设置上限。在本文公开的一个实施例中,可以执行调整以防止网络容量过载,这可能导致数据冲突和帧丢失。随后,在应用这些对策时,网络主机可以制定要求终端设备遵守的指令,以便将网络上的载荷维持在容限内。在示例中,指令可包括命令终端设备调整它们的数据速率、发送功率、重复率、射频信道或其组合。

在进行步骤908时,生成一个或多个配置更新消息。在本文公开的一个或多个实施例中,配置更新消息可以是可由终端设备执行的指令集或计算机可读程序代码的至少一部分。在本文公开的一个实施例中,配置更新消息可以以设备群的子集(即,操作性地(或通信地)连接到网络主机的终端设备集合)为目标。在本文公开的另一实施例中,配置更新消息可以以整个设备群为目标。此外,在本文公开的一个实施例中,配置更新消息可以各自包括相同的全局指令。在本文公开的另一实施例中,配置更新消息可以各自包括特定于以下终端设备的唯一指令:所述配置更新消息正在以该终端设备为目标。此外,在本文公开的一个或多个实施例中,配置更新消息可包括用于一个或多个终端设备配置参数的标识符、以及与终端设备配置参数相关联的一个或多个对应的设定值。

在步骤910中,向一个或多个终端设备发送(在步骤908中生成的)配置更新消息。在本文公开的一个实施例中,可以向必要的一个或多个终端设备发送配置更新消息以实现网络操作的优化。网络主机可包括以下功能:基于能够跟踪或巩固设备群中的每一终端设备的当前状态来确定以哪些终端设备为目标。

本公开的实施例可以在计算系统上实现。可以使用移动设备、台式机、服务器、路由器、交换机、嵌入式设备或其它类型的硬件的任意组合。例如,如图10A所示,计算系统(1000)可包括一个或多个计算机处理器(1002)、非持久型存储器(1004)(例如,易失性存储器,诸如随机存取存储器(RAM)、高速缓冲存储器)、持久型存储器(1006)(例如,硬盘、诸如光盘(CD)驱动器或数字多功能盘(DVD)驱动器的光学驱动器、闪存等)、通信接口(1012)(例如,蓝牙接口、红外接口、网络接口、光学接口等)以及许多其它元件和功能。

计算机处理器(1002)可以是用于处理指令的集合成电路。例如,计算机处理器可以是处理器的一个或多个核或微核。计算系统4)还可包括一个或多个输入设备(1010),诸如触摸屏、键盘、鼠标、麦克风、触摸板、电子笔或任何其他类型的输入设备。

通信接口(1012)可包括用于将计算系统(1000)连接到网络(未示出)(例如,局域网(LAN)、诸如因特网的广域网(WAN)、移动网络或任何其他类型的网络)或另一设备(诸如另一计算设备)的集合成电路。

此外,计算系统(1000)可包括一个或多个输出设备(1008),诸如屏幕(例如,液晶显示器(LCD)、等离子显示器、触摸屏、阴极射线管(CRT)监视器、投影仪或其他显示设备)、打印机、外部存储设备或任何其他输出设备。一个或多个输出设备可以与输入设备相同或不同。输入和输出设备可以本地或远程地连接到计算机处理器(1002)、非持久型存储器(1004)和持久型存储器(1006)。存在许多不同类型的计算系统,并且前述输入和输出设备可以采取其它形式。

用于执行本公开的实施例的计算机可读程序代码形式的软件指令可以全部或部分地临时或永久地存储在非瞬时计算机可读介质上,诸如CD、DVD、存储设备、磁盘、磁带、闪存、物理存储器或任何其他计算机可读存储介质。具体地,软件指令可以对应于计算机可读程序代码,当由处理器执行时,该计算机可读程序代码被配置为执行本公开的一个或多个实施例。

图10A中的计算系统(1000)可以连接到网络或者作为网络的一部分。例如,如图10B所示,网络(1020)可包括多个节点(例如,节点X(1022)、节点Y(1024))。每一个节点可以对应于诸如图10A所示的计算系统,或者组合的一组节点可以对应于图10A所示的计算系统。作为示例,本公开的实施例可以在连接到其他节点的分布式系统的节点上实现。作为另一示例,本公开的实施例可以在具有多个节点的分布式计算系统上实现,其中本公开的每一个部分可以位于分布式计算系统内的不同节点上。此外,上述计算系统(1000)的一个或多个元件可以位于远程位置并且通过网络连接到其它元件。

尽管在图10B中未示出,但是节点可以对应于服务器机架中的刀片,刀片经由底板连接到其它节点。作为另一示例,节点可以对应于数据中心中的服务器。作为另一示例,节点可以对应于具有共享存储器或资源的计算机处理器或计算机处理器的微核心。

网络(1020)中的节点(例如,节点X(1022)、节点Y(1024))可以被配置为向客户端设备(1026)提供服务。例如,节点可以是云计算系统的一部分。节点可包括从客户端设备(1026)接收请求并向客户端设备(1026)发送响应的功能。客户端设备(1026)可以是计算系统,诸如图10A所示的计算系统。此外,客户端设备(1026)可包括或执行本公开的一个或多个实施例的全部或一部分。

图10A和10B中描述的计算系统或计算系统组可包括执行本文公开的各种操作的功能。例如,计算系统(多个)可以执行相同或不同系统上的进程之间的通信。采用某种形式的主动或被动通信的各种机制可便于在同一设备上的进程之间交换数据。代表这些进程间通信的示例包括但不限于文件、信号、套接字、消息队列、流水线、信号量、共享存储器、消息传递和存储器映射文件的实现。下面提供了关于这些非限制性示例中的几个的进一步细节。

基于客户端-服务器联网模型,套接字可以用作使能在同一设备上的进程之间进行双向数据传输的接口或通信信道端点。首先,在客户端-服务器联网模型之后,服务器进程(例如,提供数据的进程)可以创建第一套接字对象。接着,服务器进程绑定第一套接字对象,从而将第一套接字对象与唯一名称或地址相关联。在创建和绑定第一套接字对象之后,服务器进程随后等待并监听来自一个或多个客户机进程(例如,查找数据的进程)的传入连接请求。此时,当客户机进程希望从服务器进程获得数据时,客户机进程通过创建第二套接字对象开始。然后,客户机进程继续生成连接请求,连接请求包括至少第二套接字对象和与第一套接字对象相关联的唯一名称或地址。客户端进程接着将连接请求传输到服务器进程。取决于可用性,服务器进程可接受连接请求,从而与客户端进程建立通信信道,或服务器进程忙于处置其它操作,可在缓冲器中使连接请求排队,直到服务器进程准备好为止。已建立的连接通知客户端进程通信可以开始。作为响应,客户端进程可生成指定客户端进程希望获得的数据请求。随后将数据请求传输到服务器进程。在接收到数据请求时,服务器进程分析请求并收集合请求的数据。最后,服务器进程随后生成至少包括请求的数据的回复,并将回复发送到客户机进程。更普遍地,数据可以作为数据报或字符流(例如,字节)来传送。

共享存储器是指虚拟存储器空间的分配以便证实多个进程可传送或存取数据的机制。在实现共享存储器时,初始化处理首先在持久型或非持久型存储器中创建可共享段。创建之后,初始化处理然后安装可共享段,随后将可共享段映射到与初始化处理相关联的地址空间中。在安装之后,初始化处理继续识别并授予对一个或多个授权处理的访问许可,所述授权处理也可以向可共享段写入数据和从可共享段读取数据。一个进程对可共享段中的数据所做的改变可立即影响也链接到可共享段的其它进程。此外,当授权进程之一访问可共享段时,可共享段映射到授权进程的地址空间。通常,在任何给定时间,除了初始化处理之外,仅一个授权处理可以安装可共享段。

在不脱离本公开的范围的情况下,可以使用其他技术在进程之间共享数据,诸如在本申请中描述的各种数据。这些进程可以是相同或不同应用程序的一部分,并且可以在相同或不同计算系统上执行。

除了在进程之间共享数据之外,或者作为在进程之间共享数据的替代,执行本公开的一个或多个实施例的计算系统可包括从用户接收数据的功能。例如,在一个或多个实施例中,用户可以经由用户设备上的图形用户界面(GUI)提交数据。数据可以通过用户使用触摸板、键盘、鼠标或任何其他输入设备选择一个或多个GUI挂件或将文本和其他数据***到GUI挂件中来经由GUI提交。响应于选择特定项目,关于特定项目的信息可由计算机处理器从持久型或非持久型存储器获得。在用户选择了项目之后,响应于用户的选择,可以在用户设备上显示所获得的关于特定项目的数据的内容。

作为另一示例,获得关于特定项目的数据的请求可被发送到通过网络操作性地连接到用户设备的服务器。例如,用户可以在用户设备的web客户端内选择统一资源定位符(URL)链接,从而发起超文本传输协议(HTTP)或其他协议请求,超文本传输协议或其他协议请求被发送给与URL相关联的网络主机。响应于请求,服务器可以提取关于特定所选项目的数据,并将数据发送到发起请求的设备。一旦用户设备已经接收到关于特定项目的数据,则可以响应于用户的选择在用户设备上显示所接收的关于特定项目的数据的内容。对于以上实例进一步来说,在选择URL链接之后从服务器接收的数据可提供超文本标记语言(HTML)形式的网页,所述网页可由web客户端渲染并显示在用户设备上。

一旦诸如通过使用上述技术或从存储设备获得数据,计算系统在执行本公开的一个或多个实施例时可以从所获得的数据中提取一个或多个数据项。例如,提取可以由图10A中的计算系统如下执行。首先,确定数据的组织模式(例如,语法、模式、布局),其可基于以下中的一个或多个:位置(例如,位或列位置、数据流中的第N个令牌等)、属性(其中属性与一个或多个值相关联)或分层/树结构(由不同细节级别的节点层组成,诸如在嵌套的封包头或嵌套的文档部分中)。然后,在组织模式的上下文中,将原始的、未处理的数据符号流解析为令牌流(或分层结构)(其中,每一个令牌可以具有相关联的令牌“类型”)。

接下来,使用提取准则来从令牌流或结构中提取一个或多个数据项,其中根据组织模式来处理提取准则以提取一个或多个令牌(或来自分层结构的节点)。对于基于位置的数据,提取由提取标准标识的位置处的令牌。对于基于属性/值的数据,提取与满足提取标准的属性相关联的令牌或节点。对于分层/分层数据,提取与匹配提取标准的节点相关联的令牌。提取标准可以简单到标识符串,或者可以是呈现给结构化数据仓库的查询(其中数据仓库可以根据数据库模式或数据格式,诸如XML来组织)。

所提取的数据可用于由计算系统进一步处理。例如,图10A的计算系统在执行本公开的一个或多个实施例的同时,可以执行数据比较。数据比较可用于比较两个或两个以上数据值(例如,A、B)。例如,一个或多个实施例可以确定A>B、A=B、A!=B,A<B等。可通过将A、B、以及规定与所述比较相关的运算的操作码提交到算术逻辑单元(ALU)(即,对所述两个数据值执行算术或逐位逻辑运算的电路)中来执行所述比较。ALU输出运算的数值结果或与数值结果相关的一个或多个状态标志。例如,状态标志可以指示数值结果是否是正数、负数、零等。通过选择适当的操作码,然后读取数值结果或状态标志,可以执行比较。例如,为了确定A>B,可以从A中减去B(即,A-B),并且可以读取状态标志以确定结果是否为肯定的(即,如果A>B,则A-B>0)。在一个或一个以上实施例中,B可被视为阈值,且如果A=B或如果A>B,则认为A满足所述阈值,如使用ALU确定。在本公开的一个或多个实施例中,A和B可以是向量,并且将A与B进行比较需要将向量A的第一元素与向量B的第一元素进行比较,将向量A的第二元素与向量B的第二元素进行比较,等等。在一个或多个实施例中,如果A和B是串,则可以比较串的二进制值。

图10A中的计算系统可以实现或连接到数据存储库。例如,一种类型的数据存储库是数据库。数据库是被配置为便于数据检索、修改、重新组织和删除的信息集合。数据库管理系统(DBMS)是为用户提供定义、创建、查询、更新或管理数据库的接口的软件应用。

用户或软件应用程序可以将语句或查询提交到DBMS中。然后DBMS解释语句。语句可以是请求信息的选择语句、更新语句、创建语句、删除语句等。此外,语句可包括指定数据或数据容器(数据库、表、记录、列、视图等)、标识符、条件(比较运算符)、函数(例如,联接、全联接、计数、平均等)、排序(例如,上升、下降)或其他的参数。DBMS可以执行语句。例如,DBMS可访问存储器缓冲区、用于读、写、删除或其任何组合的文件的引用或索引,以响应语句。DBMS可从持久型或非持久型存储器加载数据,并执行计算以响应查询。DBMS可将结果返回给用户或软件应用。

图10A的计算系统可包括呈现原始或处理的数据的功能,诸如比较和其他处理的结果。例如,呈现数据可以通过各种呈现方法来完成。具体地,可以通过由计算设备提供的用户界面来呈现数据。用户界面可包括在显示设备上显示信息的GUI,所述显示设备例如是计算机监视器或手持计算机设备上的触摸屏。GUI可包括各种GUI挂件,其组织示出什么数据以及如何向用户呈现数据。此外,GUI可以直接向用户呈现数据,例如,通过文本作为实际数据值呈现的数据,或者由计算设备例如通过可视化数据模型将数据呈现为数据的视觉表示。

例如,GUI可以首先从软件应用获得请求在GUI内呈现特定数据对象的通知。接下来,GUI可以例如通过从数据对象内的标识数据对象类型的数据属性中获取数据确定与特定数据对象相关联的数据对象类型。然后,GUI可以确定指定用于显示数据对象类型的任何规则,例如,由软件框架为数据对象类指定的规则,或者根据由GUI定义的用于呈现数据对象类型的任何本地参数指定的规则。最后,GUI可以从特定数据对象获得数据值,并且根据用于数据对象类型的指定规则在显示设备内呈现数据值的视觉表示。

数据也可以通过各种音频方法来呈现。具体地,数据可被呈现为音频格式,并通过操作性地连接到计算设备的一个或多个扬声器呈现为声音。

数据也可以通过触觉方法呈现给用户。例如,触觉方法可包括由计算系统生成的振动或其他物理信号。例如,可以使用由手持计算机设备生成的具有预定义的振动持续时间和强度的振动来向用户呈现数据,以便传送数据。

以上对功能的描述仅呈现了由图10A的计算系统以及图10B中的节点和/或客户端设备执行的功能的几个示例。可以使用本公开的一个或多个实施例来执行其他功能。

尽管已经关于有限数量的实施例描述了本公开,但是受益于本公开的本领域技术人员现在将理解,可以设计出不偏离如本文公开的本公开的范围的其它实施例。因此,本公开的范围应当仅由所附权利要求来限定。

具有无线电通信的移动设备通常定期和不定期地向上游发送消息,以便使用由某个网络运营商操作的用于消息转发的某个网络基础设施(简称网络)向某个应用后端服务发送数据(参见例如图11)。在一些情况下,通信是单向的,即,设备从不从应用程序后端服务向下游接收消息,而仅向上游发送不同类型的数据到应用程序后端服务。在其它情况下,设备和应用程序后端交换上行和下行消息。因此,上游发送的数据可以是例如传感器读数,如温度、湿度、加速度或GPS位置。下游数据可以是致动器命令或设备设置。

为了使后端应用程序正确地将设备关联为接收的数据的源,上游消息通常(紧邻着实际的应用程序有效载荷)可能与某个唯一网络地址和元数据(例如,序列计数器和标志)相结合地包含某个唯一设备地址,通常称为头。应当注意的是,头的某些字段的值是固定的,而其它字段的值可能根据某些算法(例如,简单递增)或基于某些设备或环境状态而变化。对于完整性检查,消息还可以包括一些密码消息完整性代码(MIC),通常称为尾。

在无线电基础设施中,例如基于LoRaWAN协议规范的低功率广域网(LPWAN),头和尾部通常是明文发送的(未加密),使得无线电基础设施可以基于唯一的设备地址以及在设备和在设备的规定期间阐述的某些应用程序后端之间的某些拥有者关系来将上行消息转发到预期的接收器。应当注意的是,控制网络基础设施的网络运营商因此可以是不同于应用所有者的实体,因为对于由单个网络运营商运行并由许多应用所有者使用的大规模多租户无线电基础设施来说,情况通常是这样。

例如,在LoRaWAN中,设备发送其大部分编码如下的上行消息(参见图12):

整个消息头和有效载荷的完整性由MIC作为尾来保护,但是仅对帧有效载荷进行加密。MIC由发送设备以密码方式计算,并由网络用仅对于设备和网络是已知的设备特定的网络密钥来验证。帧有效载荷由设备利用仅对于设备和应用所有者是已知的设备特定的应用密钥来加密,即,仅应用所有者可以解密从设备接收的应用数据。

现在,由于无线电传输通常可以由窃听者在空中时监听,所以未加密的头和尾必须被认为是公共信息。因此,通过仅仅收听其上游消息并检查传输元数据,例如所发送消息的无线信号强度指示符(RSSI)或信噪比(SNR),可以以一定的精度来跟踪和地理定位移动设备。如果设备被附着到人或某些物品,则人或物品可以被某第三方不知不觉地跟踪。

注意:本公开使用LoRaWAN协议仅用于说明和澄清所解决的问题和所提出的解决方案。本公开本身决不限于LoRaWAN协议或LoRaWAN LPWAN基础结构。

作为对策,必须用经常变化的伪随机掩蔽的头来替换头,头只能由网络基础设施与实际设备相关联,而不能与任何窃听者相关联。如果尾部仅包括类似MIC的伪随机数据,则它可能不需要进一步伪随机化;否则,与下面针对头描述的相同方案也可以应用于尾。

对于头伪随机化,在生产期间利用附加设备特定盲化密钥对设备进行个性化,所述附加设备特定盲化密钥也可设为与设备地址和设备特定网络密钥一起对于网络是已知的。现在,代替以明文方式发送头,设备通过使用盲化密钥对Mask/i-i使用密码运算来为每一个消息i计算伪随机盲化掩码Mask/i,由此Mask/o是设备的初始头。因此,盲化掩码的最小长度等于头的长度。然后,消息i的头与Mask/i进行异或运算,并且该当前已掩码的头替代消息的头(参见图13)。作为具体示例,盲化密钥可以是AES密钥,并且通过使用利用盲化密钥对Mask/i-i执行的AES密码运算来导出Mask/i。

为了正确地识别发送具有掩码的头的上行消息的设备,网络进行相同的操作,并且为其总设备群预先计算下一预期消息的候选头。如果冲突的改变对于所有实际目的都是可忽略的,则网络可以通过将接收的掩码的头的固定字段与预先计算的候选头的固定字段进行比较来识别发送设备。在将消息转发到应用所有者之前,网络然后通过再次将掩码的头与正确识别的候选头的掩码进行异或,用未掩码的头替换掩码的头。这样,盲化对于应用所有者是透明的。

通常,以非常低的概率,可能发生掩码的头的固定字段等于多个设备的候选头的固定字段。在这种情况下,必须为所有那些设备逐一地去掩码的头,并且要验证MIC。如果一个且仅一个MIC得到验证,则唯一地识别所述设备。如果超过MIC验证,这是极低的概率,则消息不能被重构并且将被丢弃。由于无线电方案已经在假设零星的消息丢失的情况下操作,所以如果单个消息被限制在非常罕见的场合,则丢弃单个消息没有实际的暗示。还应注意的是,MIC必须总是被验证以确保消息的完整性,即使仅识别了单个候选头。

对于一些应用,设备还可以选择多次发送任何上行消息,甚至可能在不同的信道上,以增加至少一次发送成功的可能性。在这种情况下,对于每次重传,也推动盲化掩码,这再次显著地降低了由于盲化密钥而不可恢复的上行消息的概率。

如上所述,由于无线电频谱中的干扰或冲突,无线电通信易于发生消息丢失。虽然一些网络基础设施通过使用确认和重传来确保消息递送,但是这对于诸如LoRaWAN的大多数LPWAN环境是不实际的。为了补偿丢失的上行消息,网络将不仅预先计算下一个盲化的头,而且预先计算n个下一个盲化的头候选的范围。由此,它可以处理连续丢失的多达n-1个消息。即使在此之后,它仍可以通过考虑大多数设备周期性地发送而基于历史消息上行流模式识别最可能的设备来计算额外的掩码的头候选,从而尝试重新同步,尽管该操作可能变得非常昂贵并且该设备然后将被认为丢失。

为了防止设备在n+m(m≥0)个连续丢失的消息的情况下丢失,网络可以周期性地将其盲化状态重新同步到设备的盲化状态。为此,设备将必须周期性地发送具有未掩码的头的单独消息。当网络接收到这种未掩码的头时,它可以将其状态与设备盲化状态重新同步,并且再次对未来的头进行掩码。因此,理想地,应以使窃听者极不可能每一个设备接收多个未掩码的头的间隔发送未掩码的头。

注意:不可能简单地加密消息头,因为它通常包括一些可变字段,尽管这些字段正在改变或仅被偶尔包括,但它们仍可允许窃听者推断发送设备的身份。通常,对于加密,明文中的单个翻转的位趋向于翻转作为整体在加密文本上展开的加密文本中的位的大约50%。这样,作为头一部分的掩码的设备地址不能再由网络预先计算,因为网络通常不能预测可变字段的值。

虽然前面导出的方案对仅上游的设备起作用,但是它可以应用于能够双向通信的设备和同样具有一些预留的下游消息。

首先,如果设备请求网络基础设施确认接收到上行消息,则这种确认仅可以在MIC已被成功验证之后发送。否则,在极少情况下,即使消息由于掩码而不可恢复,也将发送确认。重传再次推动掩码。

第二,方案还可以被应用于使用相同或第二盲化密钥的下行消息。尽管由于两个原因,设备上的计算量要高一点:(1)设备必须尝试潜在的候选头集合用于去掩码和验证MIC;(2)设备仅在尝试所有候选之后才能丢弃其它设备的消息。在LoRaWAN的情况下,原因(2)不会经常发生,因为设备仅非常零星地监听下行消息,但是,取决于所使用的无线电方案和特定的应用约束(例如,电池寿命),这可能是个问题。

第三,取决于上游消息的数量,不时地替换盲化密钥可能是明智的。这可以在设备和/或网络决定重新协商其设备特定会话密钥时完成,或者独立地完成。如果以在设备特定会话密钥之后还重新协商设备的屏蔽状态的方式进行重新协商,则这也将防止设备由于n+m个连续丢失的上行消息而丢失。在LoRaWAN中,设备可以简单地通过空中重新加入网络。

如上所述,为了正确地去屏蔽上游消息,原则上网络必须为其整个设备群预先计算每一个设备可能的多个候选头。对于以某种可预测模式发送的设备,并且随着这些模式或者被提前使网络知道或者被网络本身随时间学习,网络可以将其对发送设备的搜索限制到可能的候选组。如果在候选组内没有设备可以被识别,或者MIC没有验证识别的候选(可能是由于如前所述的非常不可能但是仍然可能的冲突),则网络必须拓宽其搜索。

完全盲化头明显地防止设备漫游,除非设备的盲化状态将与漫游网络基础设施共享。或者,如果如在LoRaWAN中的头包括归属网络的网络标识符,则网络标识符可以保持明文(不盲化),使得漫游网络可以简单地基于网络标识符将消息转发到归属网络。除非来自相同网络的漫游设备的数量很小,否则仍然会保持隐私。

虽然盲化头消除了用于识别由相同设备发送的消息的最明显的源,但是由于设备通信中的其他(几乎)唯一模式,设备的发送行为仍然可能以某种概率揭示其身份。可以在相同的无线电信道内以相同的数据速率、以相同的发射功率、以始终相同的长度严格地周期性地发送消息。为了进一步增加保密性,设备可以通过将发送时间改变某个伪随机正或负延迟、添加伪随机长度的一些有效载荷填充、伪随机跳跃信道、改变数据速率和调整发射功率,来伪随机地妥协所有这些参数。设备甚至可以散布要在应用级过滤的纯粹随机化的消息,尽管是以减少电池寿命为代价的。

最后,除了保护隐私之外,盲化头具有盲化网络中或给定区域内的实际设备群的优点,因为每一个设备有效地对每一个上行消息扮演不同的设备。这对于由于各种原因不想向其竞争揭示其网络内的设备数量的网络运营商来说可能是重要的附带作用。

53页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:芯片的访问方法、微芯片、智能卡以及调试设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!