蓝牙 - BLE安全连接中的数字比较法
LE模式下,传统的配对方式是使用passkey的。除了这种方法,还有一种LE Secure Connections的配对方法。这种LE安全连接是蓝牙v4.2版本中引入的一个增强的安全功能。它生成密钥的方式,是一种兼容 Federal Information Processing Standards (FIPS)的算法,叫做Elliptic Curve Diffie Hellman (ECDH)。
两个蓝牙设备连接前要进行配对,或者叫做把两个蓝牙设备关联起来,所以配对方法可以叫做association model。
BLE的蓝牙配对支持四种模式:
* Just Works // 直接可用
* Numeric Comparison (Only for LE Secure Connections) // 数字比较
* Passkey Entry // 密钥输入的传统模式
* Out of Band (OOB) // 使用NFC等读取连接数据
在LE安全连接中才使用数字比较,其他传统的配对模式不使用。这是一种相对较新的配对模式。下面我们将详细介绍这种方法。
1. Phase 1 – Pairing Feature Exchange // 第一阶段,配对设置信息交换
表1是配对的请求/响应包的定义。在 "AuthReq "字段中,有一个名为 "SC "的位。如果设备支持LE安全连接配对,那么SC字段应设置为1,否则应设置为0。如果两个设备都支持LE安全连接配对,那么应使用LE安全连接配对,否则应使用LE传统配对。
因此,如果两个设备想通过LE安全连接进行配对,他们必须将 "SC "位设置为1,以指示对端设备(peer device) "我有安全连接的能力"。
2. Phase 2 – Key Generation Method Selection // 第二阶段,选择密钥生成方法
在配对设置信息交换后,发起方和响应方应确定要使用何种密钥生成方法。下面是密钥生成方法的C语言语法编码例子:
表2列出了使用数字比较法的发起设备和响应设备的IO能力。当发起设备和响应设备都有Display and Yes/No或Display and Keyboard的I/O能力,将使用数字比较配对模式。
3. Phase 2 – Authentication // 第二阶段,进行认证
密钥生成后,配对将进入第二阶段,即认证阶段。其目的是防止中间人(Man-In-The-Middle, MITM)攻击,并生成将用于加密数据链接的密钥。
在公钥交换中,每个设备生成自己的Elliptic Curve Diffie-Hellman(ECDH)公钥-私钥对。公钥-私钥对包含一个私钥和公钥。
SKa, 发起设备的私钥
PKa, 发起设备的公钥
SKb, 响应设备的私钥
PKb,应答设备的公钥
图1,数字对比(Numeric Comparison)的认证过程
配对是由发起设备向响应设备发送其PKa开始的。响应设备用它自己的PKb进行回复。公钥交换后,设备可以开始计算Diffie-Hellman密钥;你可以看到它从图1中1b结束时开始。
之后,每个设备选择一个随机的128位随机数。这个值是用来防止重放攻击(replay attack)的。
- Na, 发起设备的128位随机数。
- Nb, 响应设备的128位随机数。
在这之后,应答设备会计算出一个应答值(commitment),Cb,它是用Nb、PKa、PKb和0计算出来的,如图1所示的步骤3。
第4步,响应设备必须在收到发起设备的Na之前分享Cb。
第5步,发起设备必须在收到响应设备的Nb之前分享其Na。
第6步,发起设备必须在收到应答设备的Nb后检查来自应答设备的Cb。
此时,发起设备或响应设备已经知道对端设备的公钥和随机数。发起设备可以确认来自应答设备的应答值(Cb)。这时如果失败则表明存在攻击者或其他传输错误,应导致配对过程中止,步骤6.a。
假设应答值检查成功,两个设备各自计算出6个数字的确认值(confirmation values),在各自的设备上显示给用户。用户应检查两边的6位数的数字是否匹配,并确认是否匹配。如果不匹配,则配对中止。
4. Phase 3 – Long Term Key, LTK // 第三阶段 - 长期密钥,LTK
当认证成功后,两个设备开始计算LTK,这将用于链接加密。 这是配对和以后再重新连接的最后一块拼图:在不同的配对模式中,认证对端设备并防止中间人(MITM)攻击。而LTK的计算在LE的任何配对模式中都是通用的,这里暂不做介绍。
5. Conclusion // 总结
根据用户体验和便利性,相比于传统配对模式 "密钥输入"(Passkey Entry),"数字比较"(Numeric Comparison)只需要两个按钮,YES和NO,来表示这两个设备之间的6位数确认值是否匹配,它不需要一个从 "0 "到 "9"的数字键盘来输入密钥(passkey),所以这是一个简化硬件I/O能力的改进。同时,由于在于LE安全连接中使用了数字比较方法,它提供了更强的保护,避免了窃听和MITM等威胁。所以,伙计们,如果你开始开发一个对隐私敏感的产品,并且需要对蓝牙LE链接进行高度保护,这种数值匹配方法是你的一个好选择。
如果你平时多加注意,有时会发现,两个蓝牙设备连接时,是在各自设备上显示一串数字,如果两边数字一样,点击确认,这两个设备就连接到一起了。
参考:
相关文章
- 第二章 线程安全
- android https安全连接
- 从零开始入门 K8s | Kata Containers 创始人带你入门安全容器技术
- spring boot:用spring security加强druid的安全(druid 1.1.22 / spring boot 2.3.3)
- 通用 CentOS 6 服务器安全配置指南
- 【云栖大会】业务和安全的融合实践详解
- 搭建Jasig CAS中央认证服务实现单点登录——搭建Tomcat并实现SSL安全连接
- 公共云急需大量的安全运维人才
- Atitit webdav 原理详细 概念补充 2.WebDAV的优势: 一套自己定义的安全完善的身份验证机制。 穿墙 HTTPS传送数据 使用一个TCP连接传送所有文件 方便的客户端工
- Redis的那些事儿:关系型和非关系型数据库,非关系型数据库的类型,redis数据类型、编码格式、高性能、可以做什么、分布式锁失效的原因,string为采用sds数据类型,为什么是二进制安全的,
- jdbc连接警告不安全
- 2020年“磐云杯”网络空间安全技能竞赛全国拉练赛
- 68:内网安全-域横向PTH&PTK&PTT哈希票据传递
- 安全知识图谱——资产(Assets)、漏洞(Vulnerability)和攻击(Attack)。图3表示网络安全本体,其中包含五个实体类型:漏洞、资产、软件、操作系统、攻击。
- 主机安全——主机上的病毒检测、漏洞防护,权限管理。目标是保护主机的数据存储和计算安全
- 企业级代码静态测试工具Helix QAC——从应用层级保证代码质量和安全
- PowerShell 如何以安全的方式使用密码,运行需要管理员权限的软件