作者:费晓强,邵佳炜,殷义勋
1. 引言
蓝牙低功耗(BLE)正迅速成为当今最常用的无线标准之一。 它用于在小于约10米的短距离设备之间传输数据/信息。 参与BLE通信的两个设备之一称为Master或Central,另一个称为Slave或Peripheral。 通常,在Master和Slave可以进行BLE通信之前,有2个强制进程和另一个可选进程。 这些过程是:
✓ 广播过程
✓ 配对过程
✓ 绑定过程,这是可选的
1.1 广播过程
在广播过程中,Master也被称为Observer,它监听来自Slave设备的可连接广播包,Slave设备在此过程中也称为Advertiser。 通过广播过程,Observer可以发现Advertiser, 以获得Advertiser的MAC地址、名称和其他定制数据。 例如,在Android或IOS手机的蓝牙系统设置中,您可能会找到手机附近的蓝牙设备列表。 该列表是由手机作为Observer,成功处理来自附近的Advertiser的广播包。
图1:设备广告和发现
广播包具有以下格式:
✓ 广播包包含许多广播结构,其总长度固定为31个字节(0可用于填充非重要数据)
✓ 广播结构包含3个部分:长度,类型和数据
✓ 至少,数据包中应包含以下信息:
· 设备标志:类型0x01
· 设备名称:类型0x08或0x09
✓ 如果仅包含这两个结构,则设备名称应<= 26个字节
✓ 自定义数据可以包含在类型为0xFF的结构中
1.2 配对和绑定过程
在Observer发现Advertiser后,它们就可以直接建立未加密的连接,然后通过此连接进行配对过程。 在此过程中,两个BLE设备交换其配置并确定他们将如何设置安全连接设备信息,以便建立安全链接。
因此配对可以创建一个仅在连接的生命周期内持续的安全链接,而绑定实际上以共享安全密钥的形式创建永久关联(也称为绑定),将在以后的连接中使用,直到任何一方决定删除它们。 但只有在配对过程中交换绑定需要求时,在会在配对过程后,进行绑定。
在配对和绑定过程中,Master也称为Initiator, Slave称为Responder。
Figure 2: Pairing and Bonding
蓝牙设备执行配对有以下四种方法:
✓ Just Works
✓ Numeric Comparison
✓ Passkey Entry
✓ Out of Band (OOB)
使用哪种方法取决于配对前交换配置信息来决定。
1.3 通讯
配对成功后,安全链接已建立,主服务器和从服务器可以正常交换数据/信息:
Figure 3: 链接和通讯
2. 自动配对概述
如上所述,在两个BLE设备成功能进行通信的典型和传统场景中,BLE面临一些缺点,例如:
✓ 需要用户从列表中选择所需的从设备,有时列表可能有点长;
✓ 需要用户输入PIN码才能完成BLE配对
为了改善用户体验,有必要消除用户干预以加速BLE连接建立。 在本文中,我们提出了一些辅助技术手段来加速BLE连接。我们在本文中称这种使用特定的辅助技术/方法来完成BLE配对并建立连接的过程,为自动配对或自动BLE配对过程。
在本文中,我们还限制了用户场景的讨论,其中支持蓝牙的智能手机(IOS / Android)作为Master,其他定制开发的BLE设备作为Slave。 在后文,此场景称为MDS,即Mobile-Device Scenario。
在某个MDS中,我们定义自动配对以满足以下要求:
✓ 通过手机/应用程序能自动精准选择所需要连接的蓝牙设备,
✓ 自动执行手机/应用程序和蓝牙设备的BLE配对过程,以及
✓ 最好能在手机上自动启动相应的应用程序。
2.1 自动选择设备
在一般的MDS中,手机端通常使用BLE广播过程来发现附近的其他所有BLE设备,并且需要用户选择需要连接的设备。
自动配对将通过BLE广播过程或辅助方法获取设备的MAC地址和名称,然后如果可能,根据设计规则检查名称以自动确定设备是否有效。 这消除了用户从(可能很长)列表中选择正确的设备的过程。 结果是无缝的无线用户体验。
2.2 自动BLE配对
在MDS中,自动配对将通过在特定辅助方法上交换认证信息或自动计算认证信息来简化手机和蓝牙设备之间的认证配对过程。 消除了用户输入PIN码的需要。
2.3 自动启动应用程序
自动配对最好能手机上启动相应的应用程序以提供良好的用户体验。 例如,用户拿电话扫描或触摸设备以交换信息,对应的应用程序能自动启动。
Figure 4: Automatic Pairing Flow
3. 常见的自动配对方法
根据自动配对定义和要求,有一些常用的方法来实现自动配对,例如:
✓ 唯一设备名称过滤法
✓ 特殊设备名称编码过滤法
✓ 设备名称校验和过滤法
3.1 唯一设备名称过滤法
在某些项目中,每个BLE设备应具有唯一的BLE设备名称,并且名称的长度小于26个字符。在这种情况下,可以使用唯一设备名称过滤方法来实现自动配对。
设备的唯一名称可以用文本或QR码的形式打印在设备的表面或包装盒上。每次,当用户获得此中设备并且应用程序自动或手动启动时,用户可以通过键盘输入设备名称或应用程序扫描QR码,以事先获取可进行合法连接的设备的名称。
当设备开机时,它将广播具有唯一名称的广告包。如果名称与App已经获得并保存的名称之一匹配,则App将与设备建立未加密的连接。因此,用户可以通过唯一名称过滤器自动选择设备。
建立连接后,App将采用特殊的函数,根据设备名称计算PIN码,并通过连接将PIN码发送给设备,当设备收到PIN码时,它使用App相同的函数,基于自己的名称计算对应的PIN码。然后设备检查这两个PIN码。如果这两个PIN码相同,则设备和应用程序将使用此PIN码加密连接,否则设备将拒绝连接。因此,无需手动输入PIN码即可自动建立安全链接。
Figure 5: Unique Name Filter Flow
自动成功配对后,手机和设备将在后台执行绑定过程,以便下次使用时保存链接密钥。
3.2 特殊设备名称编码过滤法
在某些项目中,每个BLE设备应具有唯一的设备名称,该名称具有特殊的名称编码方案,并且名称的长度也小于26个字符。例如,每个名称由固定前缀和序列号组成,例如“JBLTest_001”,其中“JBLTest_”是每个名称的固定前缀。 应用程序仅允许与这些设备建立BLE连接,这些设备将在BLE通告数据包中广播其名称。 在这种情况下,特殊设备名称编码方案也事先在App中实现。 当App启动时,它将扫描BLE广告包并自动通过特殊名称编码方案过滤设备。
在应用程序扫描设备并且其设备名称符合特殊名称编码方案后,自动配对的剩余过程就像在 3.1 唯一设备名称过滤法
Figure 6: Special Name Coding Filter Flow
3.3 设备名称校验和过滤法
在某些项目中,每个BLE设备应具有唯一的设备名称,并使用其名称和名称的校验组成广播数据包。 应用程序仅允许与这些设备建立BLE连接,这些设备将在BLE广播数据包中广播其名称和名称对应的校验码。 在这种情况下,计算名称校验码的算法是固定的,并在App中预先构建。 当App启动时,它将扫描BLE广告包并提取设备名称及其校验码,然后App本身将根据提取的名称计算校验和,并自动通过这两个校验和过滤设备。
扫描设备并且其名称校验码正确后,自动配对的剩余过程就像上面描述的过程一样
3.1 唯一设备名称过滤法.
Figure 7: Name Checksum Filter Flow
计算名称校验码所使用的特定方法取决于项目的具体情况。该方法需要注意的一点是,校验和的长度必须足够短,例如小于4个字节。可以考虑以下简单方法:
ü Parity
ü CRC
ü Byte XOR
4. BLE App开发
在MDS中,App可以在IOS或Android上运行,因此很多BLE项目都需要开发IOS BLE App和Android BLE App。 从App开发的角度来看,IOS App开发和Android App开发之间存在很大差异。 在本节中,我们仅解决与自动配对的实现相关的差异。
4.1 开始BLE扫描
为了发现BLE设备,应用程序需要启动广播包的BLE扫描。
在IOS上启动BLE扫描:
1) 如何初始化BLE扫描过程;
2) 要调用哪个API;
3) 如何监控程序;
4) 如何停止
5) 该操作系统的API和扫描机制的考虑/限制是什么?
6) 演示代码
在Android上启动BLE 扫描:
4.2 从广播包中直接提取数据
App从BLE广播包中直接提取设备名称和自定义数据以实现自动配非常重要。
从IOS上的广告包中提取数据:
1) 接收和处理广告包的整体流程/过程
2) 如何从广告包中提取不同的结构/数据
3) 要调用哪个API
4) 该操作系统的API和扫描机制的考虑/限制是什么?
5) 演示代码
从Android上的广播数据包中提取数据:
4.3 发送 PIN 码
为了执行BLE配对,App需要向设备发送PIN码以开始配对过程.
在iOS上发送 PIN 码:
1) BLE配对流程
2) 哪个API发送PIN码
3) 配对结果/状态
4) 还有什么可以发送PIN码来考虑
5) 演示代码
在Android上发送 PIN 码:
4.4 选择配对类型
在标准BLE配对过程中,首先两个BLE设备需要交换IO功能和认证要求,以确定以下哪种方法用于配对:
✓ Just Work
✓ Passkey
✓ Number Comparison
✓ OOB
IOS上的配对方法选择:
1) 是否可以通过App选择配对方法
2) 如何选择
3) 考虑/限制因素
4) 演示代码
Android上的配对方法选择:
4.5 自动启动 App
如果在特定BLE设备启动时可以自动启动BLE应用程序,将获得良好的用户体验.
在iOS上自动启动App:
1) 可行性
2) 如何操作
3) 局限性
4) 演示代码
在Android上自动启动App:
5. 使用NFC标签自动配对
NFC(近场通信)技术是飞利浦和索尼为非触摸识别开发的互连技术。 作为标准化的短程和高频无线通信技术,NFC技术的工作频率为13.56MHz,通信距离小于10cm。 与其他射频识别(RFID)技术相比,NFC具有读写距离非常短的特点。 然而,这种看似不利的局面本身限制了潜在黑客的监控和攻击,并具有更高的安全性。
NFC技术可以用作实现自动配对的辅助方法,以增强MDS中的用户体验。 用户可以通过手机触摸配备NFC标签的BLE设备,方便快捷地选择该设备,可以通过NFC手机读取MAC地址,设备名称等参数,然后应用程序直接与设备建立BLE连接以自动执行配对.
Figure 8: Automatic Pairing using NFC
使用NFC自动配对的过程:
✓ 选择所需的蓝牙设备
✓ 安全地连接到蓝牙设备
✓ 在电话上启动相应的应用程序
5.1 设备选择
发现BLE设备通常在广播过程中使用广播包来发现电话附近的设备。NFC可以通过提供与特定蓝牙设备相关的BLE地址和其他可选参数来消除广播过程,从而简化发现过程。 这消除了用户从(可能很长)列表中选择适当设备的需要。 结果是更无缝的无线用户体验.
5.2 快速安全地连接
NFC可以通过在NFC链路上交换认证信息来简化两个蓝牙设备之间的认证配对的过程。
可以通过NFC链路交换信息(PIN码或TK值)以直接用作OOB配对过程的一部分。这消除了等待广告包建立LL连接然后交换能力的需要。 结果是配对过程快速而安全.
5.3 启动应用程序
NFC可用于在手机上启动应用程序。 例如,用户将他们的NFC手机扫描到另一个NFC设备以交换联系信息。 在NFC扫描操作时启动应用程序是基于不同的手机平台,有不同的实现方式。 在某些情况下,“触摸”甚至可以允许用户选择要执行的应用程序.
5.4 用于自动配对的NDEF消息
NDEF(NFC数据交换格式)消息是二进制格式,用于包含在NFC设备/标签之间交换的数据。 NDEF消息由一个或多个NDEF记录组成,每个NDEF记录包含Flag,Lengths,Type,ID和Payload。 NFC读取器可以从另一个NFC标签整体读取DNEF消息。
NDEF消息结构:
NDEF记录布局:
5.4.1 自动配对的NDEF记录格式
对于BLE设备,带外数据格式用于OOB配对。 如果OOB数据保存为NDEF记录的有效负载,并且当手机触摸设备/标签时,嵌入在NDEF记录中的OOB数据将通过NFC链接读取,然后它们将直接执行OOB配对.
在NFC标签中,用于BLE OOB数据交换的有效载荷格式可以是广播广告包的格式,其在1.1广播处理中描述。 在本节中,将此广告数据包简称为AD.
在该广告包格式的OOB有效载荷中,每个AD结构包括1字节的AD长度字段,AD类型字段和AD数据字段。 Length值是AD Type和AD Data字段中的总字节数。 总OOB数据长度由记录有效负载长度定义。
保存BLE自动配对的OOB有效负载的NDEF记录具有以下布局:
标签的NDEF记录示例:
5.4.2 应用记录在NDEF消息中
在Android 4.0中,Android手机可以在触摸NFC标签时自动启动应用程序以获取包含Android应用程序记录(AAR)的NDEF消息。 AAR记录必须满足以下属性:
✓ TNF应该是100b,这是外部类型,
✓ 类型应该是“android.com:pkg”,和
✓ Payload应该是应用程序包名称
在iPhone X中,手机在后台标签读取模式下扫描NFC标签后,系统会通过查找具有以下属性值的NFC NDEF Payload对象来检查标签的NDEF消息以获取URI记录:
✓ TNF应该是001b,这是众所周知的类型
✓ 类型等于“U”
✓ Payload应该是应用程序的通用链接或支持的URL方案.
因此,建议自动配对的最小NDEF消息符合以下布局,以便与IOS和Android兼容:
5.5 IOS上的NFC自动配对
iPhone上的NFC具有以下限制:
✓ iPhone NFC仅适用于NFC读取模式;
✓ 只有iPhone7,iPhone 8,iPhone X或更高版本支持NFC;
✓ iPhone X及更早版本的设备不支持背景NFC标签读取;
启动 App,通过MAC地址连接BLE设备。
5.5 Android上的NFC自动配对
启动 App,通过MAC地址连接BLE设备。
6. 结论
根据以上对自动配对的不同方法的分析,我们可以总结下表中每种方法的优缺点:
因为如今NFC手机越来越流行,NFC标签非常便宜,强烈建议使用NFC标签方法实现自动配对以改善用户体验。
7.公司介绍
捷普科技(上海)有限公司(www.jabil.com)成立于2002年9月。在不到四年的发展中,公司员工总数由最初的400多人迅速扩充到现在的3000多人,生产线也从最初的2条增设到现在的15条。公司客户从最初的一个增加到十几个,而且还在不断增加。
是一家提供电子技术解决方案的公司,为全球的电子和技术公司提供综合的电子设计,生产和产品管理服务。作为美国500强企业之一,我们通过提供完整的全球性电子产品供应链管理,帮助客户把电子产品更快地带入市场,使其成本效率更高。
成立于2002年9月2日,是世界著名的捷普公司在上海漕河泾开发区新成立的一家独资子公司,是目前上海最大的EMS(电子制造服务)企业之一。公司总部位于美国,全球共有40家 facilities,拥有员工41,000名。Jabil在全球20多个国家设立工厂,在范围广泛的工业界为顾客提供综合的,个性化的,重点突出的解决方案。多年来捷普公司本着不断改革创新的科研精神,致力于电子产品的设计开发,并凭借其先进的生产技术背景及生产管理理念,为全世界多家著名的电子公司提供电子电路板部件及系统的加工及开发、开发、设计等服务。
业务联系:https://mp.weixin.qq.com/s/B_TQsF9CgX5LUkvpwPDalA