完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
近年来出现的新的应用例如共享单车,蓝牙开锁,酒店智能锁,巡检锁,蓝牙充值支付的出现,对蓝牙的安全性能提出了更高的要求,如何保证蓝牙的安全性,我们从几个方面来进行分析。
数据安全关乎两个层面,传输层-蓝牙,服务器网络层连接层。 网络连接层不是本文讨论的重点,有很多的方式在服务器端进行认证和网络数据安全传输方式(TLS/SSL),在此不熬述。 今天的重点在于蓝牙传送层的安全剖析。 下图简单明了的介绍蓝牙从建立连接到断开连接的一个全过程,主设备监听周围的从设备广播,针对特定的设备请求连接,建立连接,传输数据。那么问题就出现了,是否需要加密,如何加密? 首先看看黑客破解得到传输数据的方法: 被动窃听: 市面上面有非常多的蓝牙数据监听器(比如TI非常经典的产品CC2540 BLE Sniffer),如果主从设备的数据未开启加密功能,被动窃听设备偷偷地窃听两个设备之间的私有通信。对于支付解决方案这样的信息保密性(比如密码)极其重要的应用来说,防止被动窃听是非常重要的。 中间人(Man in the middle): MITM是指当两个设备尝试彼此通信时,第三设备插入到两者之间并伪装成对方设备(参见图1)。通过认证可以确保系统所通信的设备是其实际预期的设备,而不是伪装的非授权设备。 在蓝牙通信中,两台设备使用关联模型实现相互验证,然后安全地交换数据。蓝牙配对是一个密钥交换的过程;但是,交换密钥之前,这两个设备必须共享包括认证要求在内的配对参数。而为了实现认证,两台设备必须使用某种关联模型进行相互验证,蓝牙4.2之前,几种认证的算法存在致命缺陷,黑客可以利用MITM的漏洞,伪装从端设备和主端建立连接,拿到传输数据,通过暴力破解应用层传送协议,轻而易举的控制你的设备。 |
|
|
|
BLE蓝牙配对过程
配对指的是两个 BLE 设备间认证和密钥的交换的过程。该配对过程包括三个阶段,LE 安全连接指的是 蓝牙 4.2 规范中介绍的一个加强的安全功能。它使用了一个用于生成密钥的符合联邦信息处理标准(FIPS)算法(也 称 Elliptic Curve Diffie-Hellman(ECDH))以及用于密钥交换的新程序。BLE 应用中的关联模型指的是根据两个 BLE 设备的输入和输出功能来确定配对方法的模型。并且蓝牙 4.2 规范介绍了一个新的关联模型,即数字比较(NC)。 蓝牙配对分为三个阶段,参数设置,授权和密钥生成,密钥交互。 参数设置 初始化设备和响应设备进行交换配对参数(如输入/输出功能、认证要求标志、加密密钥大小 以及频带外(OOB)数据的可用性)。LE 传统配对和 LE 安全连接的第一个配对阶段是相同的。 初始化设备(如链路层主设备)通过配对请求命令进行参数交换。响应设备(如链路层从设备)将通过配对响应命令做 出响应。该响应设备还可以通过安全请求命令来初始化配对过程。 认证要求标志是配对参数的一部分。在蓝牙 4.2 设备中,更新这些标志可以添加两个新的字段,即安全连接(SC)和 按键。 |
|
|
|
参数设置中BLE设备四个配对关联模型:
数值比较(Numeric Comparison )-两台待匹配设备均显示六位数字,如果两个数字相同,那么用户在设备上选择“是”即可通过验证。蓝牙4.2 低功耗安全连接引入了这种关联模型。在传统配对(蓝牙低功耗4.1或更老的版本)中,这些IO功能实现的是“即刻运行”关联模型(无验证),这种方式可以防止中间人攻击。 密钥输入(Passkey Entry )-用户在两台设备中输入相同的密钥,或其中一台设备显示密钥,用户在另一台设备输入相同的密钥。在传统密钥输入(蓝牙4.1或更老的版本)中,整个密钥以简单的单次确认即可进入交换;而蓝牙4.2中,一次交换一位密钥,安全性有了很大提高。这种逐位公布保证了在协议的配对程序失败之前,未猜测到的密钥泄露不超过2位,这种方式也可以防止中间人攻击。 非蓝牙传输(OOB)-OOB关联模型适用于双方设备中至少有一个具有OOB能力、能够加密信息进行频带外交换的情况。此时,MITM防护取决于用于共享信息的OOB协议对MITM的抵抗力。在传统配对(BLE 4.1或更老的版本)中,两个设备都需要具有OOB能力才能使用OOB关联模型,例如一些NFC蓝牙音箱之间的配对,这种方式也可以防止中间人攻击。 直接配对方式(Just Work) - 不会进行鉴权,不能防止中间人攻击用于配对没有显示没有输入的设备,主动发起连接即可配对,用户看不到配对过程,不可以防止中间人攻击,例如连接蓝牙耳机。 授权和密钥生成: 第二个配对阶段包括用于防止中间人(MITM)攻击的认证以及用于加密 BLE 链接的密钥生成。 在 LE 的传统配对中,可以使用一个临时密钥(0:Just Works 模型、6 数字或 20 位:Passkey Entry 模型、128 位: OOB 模型)来获得可加密 BLE 链接的密钥。该临时密钥是未通过 BLE 链接交换的随机数据。LE 安全连接中的第二个配对阶段包括三个小阶段,如下图所示。 在公有密钥交换阶段中,初始化设备和响应设备将互换它们的公有密钥,并开始计算 Diffie-Hellman 密钥。可以使用 Elliptic-Curve Diffie-Hellman 功能(P256)来生成 Diffie-Hellman 密钥。该 P256 将对等设备的特定密钥和公有密钥 作为输入。Diffie-Hellman 密钥始终不被交换,它能够提供随机的 256 位数据。在认证阶段 1 中,各 BLE 设备将进行互相认证,以防止中间人(MITM)攻击(BLE4.2特有)。每个关联模型的认证阶段 1 各不相同。 认证阶段 1 中发生的任何故障都会终止配对过程。 在认证阶段 2 中,各 BLE 设备将计算 Long Term Key(长期密钥,LTK),用于加密链接。可以使用认证阶段 1 中所 生成的 Diffie-Hellman 密钥、蓝牙设备地址和 128 位随机数值并通过这些设备的 I/O 功能来生成 LTK。 密钥交互: 在密钥交互阶段中,可以使用授权和密钥生成阶段所生成的 STK(如果使用 LE 传统配对)或 LTK(如果使用 LE 安全连接配对) 来加密 BLE 链接。然后,加密链接上将提供以下密钥: Identity Resolving Key(识别解析密钥,IRK) — 指的是一个用于生成和解析随机地址的 128 位密钥。 Connection Signature Resolving Key(连接签名解析密钥,CSRK) — 指的是一个用于进行数据签名和验证接收 设备上签名的 128 位的密钥。 Long Term Key(长期密钥,LTK) — 指的是一个用于为某个加密连接生成共同会话密钥的 128 位的密钥。更多有关信息,请参考 蓝牙内核规范版本 4.2 第 6 卷 B 部分中第 5.1.3 章节的内容。 Encrypted Diversifier(加密的变化符,EDIV) — 指的是一个用于识别 LE 传统配对过程中所提供 LTK 的 16 位存 储值。每当提供一个唯一的 LTK, 都会生成新的 EDIV。 Random Number(随机数值,Rand)— 指的是一个用于识别 LE 传统配对过程中所提供 LTK 的 64 位存储值。每 当提供一个唯一的 LTK, 都会生成新的 Rand。 仅在使用 LE 传统配对的情况下提供 LTK、EDIV 和 Rand。 |
|
|
|
1.为了防止MITM的破解,你是否适当的利用了蓝牙PAIRING的方式来完成配对?大多时候我们都简单的设置了蓝牙PAIRING方式为ON INPUT NO OUTPUT,如果只是这样简单的配置是无法完全保证蓝牙数据不被人破解。
2.只有蓝牙4.2配对过程中引入的Elliptic-Curve Diffie-Hellman算法才真正解决了Man in the middle安全隐患问题。 3.合理的利用AES128对应用层数据进行加密,前提是保管好你的私钥。 如果大家对Elliptic-Curve Diffie-Hellman如何解决MITM问题感兴趣,可以参考下图说明,前提是数学功底要好,因为是算法玩到底是在玩数学: |
|
|
|
只有小组成员才能发言,加入小组>>
961 浏览 1 评论
12417 浏览 0 评论
5876 浏览 3 评论
17665 浏览 6 评论
2693 浏览 1 评论
993浏览 1评论
962浏览 1评论
3635浏览 1评论
966浏览 1评论
1343浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 17:30 , Processed in 1.060672 second(s), Total 87, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号