好记性不如铅笔头

Bluetooth, 安全, 操作系统, 网络通讯

【转】GAP Bond管理和LE安全连接简单介绍

本文转自【 http://leconiot.com/download/cc2640r2f/ble_stack_app/stack/gap_bond_manager_and_le_secure_connections/bond.html 】,有大量删改。
GAP Bond Manager是一个可配置的模块,使用Bond manager后应用程序可以减少大部分安全机制。下表列出了术语。

术语 描述
配对(Pairing) 交换密钥的过程
加密(Encryption)  
认证(Authentication) 使用中间人(MITM)保护完成的配对
Bonding 将密钥存储在非易失性存储器中
授权(Authorization) 除了认证之外,还需要额外的应用级密钥交换
OOB(Out of band) 密钥不是通过空中交换,而是通过串行端口或NFC等其他来源进行交换。这也提供了MITM保护。
MITM(Man in the Middle protection) 防止中间人攻击
只是工作(Just work) 配对方法,其中密钥在没有MITM的情况下通过空中传送

于蓝牙是无线空中传输,所以数据很容易被窃听,于是蓝牙在数据发送和接收过程中使用了AES加密,然后接收方和发送方都使用这个密钥对数据进行加密和解密,传输在空中的数据都是经过加密了的数据,这样安全性就大大提高。AES算法虽然目前没有暴力破解的方法,但是攻击者一旦知道了该密钥就能轻松获取数据,所以密钥的交换一般不通过空中传输,所以蓝牙设计者设计了两个解决方案:OOB和MITM,MITM其实就是在一端生成密钥并显示出来,另一端手动的输入密钥,这样完成密钥交换。OOB和MITM类似,但是密钥的交换通过NFC或串口等形式进行交换。这样攻击者就很难获取密钥进行破解了。当密钥完成交换之后会有Bonding过程,主要目的是保存密钥,下次连接的时候就不需要输入密钥从而直接连接。

所以在程序中使用GAPBondMgr实现,过程如下:
1 配对过程通过选择配对模式中描述的以下方法交换密钥。
2 使用步骤1的密钥加密链接。
3 绑定过程将密钥存储在安全闪存(SNV)中。
4重新连接时,使用存储在SNV中的密钥来加密链接。
执行所有这些步骤是不必要的。例如,两个设备可以选择配对而不绑定(Bond)。

配对模式
有四种类型的配对模型,每种模型都在GAPBondMgr中详细描述,用于不同配对模式:
Just Work(安全连接或LE遗留)
PassKey Entry(安全连接或LE遗留)
Numeric Comparison(安全连接)
OOB (Out of Band)(安全连接或LE遗留)
其中Just Work 不能防止攻击者攻击,用于配对没有显示没有输入的设备,主动发起连接即可配对,用户看不到配对过程,例如连接蓝牙耳机。
PassKey Enter 配对目标输入一个在本地设备上显示的6位数字,输入正确即可配对,并可以防止攻击。使用场景:一端设备可以显示,另一端设备可以输入。
Numeric Comparison 配对双方都显示一个6位的数字,由用户来核对数字是否一致,并输入Yes/No,两端Yes表示一致即可配对,可以防止中间人攻击。使用场景:两端设备可以弹出6位十进制数,并且有yes和no按钮。
Out of Band 一般很少使用,通过串口或NFC交换密钥,例如NFC蓝牙音箱。

1. 即刻运行(Just works):正如其字面含义,这一方法可直接运行,无需用户互动。但是设备也许会提示用户确认配对过程。此方法的典型应用见于输入输出功能受限的耳机,且较固定PIN机制更为安全。此方法不提供中间人(MITM)保护
2. 万能钥匙进入(Passkey Entry):此方法可用于一个有显示屏的设备和一个有数字键盘输入的设备(如计算机键盘),或两个有数字键盘输入的设备
1) 第一种情况下,显示屏上显示6位数字代码,用户可在另一设备的键盘上输入该代码
2) 第二种情况下,两个设备需同时在键盘上输入相同的6位数字代码。两种方式都能提供中间人(MITM)保护
3. 数值比较(Numeric comparison):如果两个设备都有显示屏,且至少一个能接受二进制的”是/否”用户输入,他们就能使用数值比较。此方法可在双方设备上显示6位数的数字代码,用户需比较并确认数字的一致性。如果比较成功,用户应在可接受输入的设备上确认配对。此方法可提供中间人(MITM)保护,但需要用户在两个设备上都确认,并正确的完成比较
4. 非蓝牙传输方式(OOB):此方法使用外部通信方式,如近场通信(NFC),交换在配对过程中使用的一些信息。配对通过蓝牙射频完成,但是还要求非蓝牙传输机制提供信息。这种方式仅提供OOB机制中所体现的MITM保护水平。

开发者需要根据自己设备IO输入输出能力选择合适的配对模式。

发表评论

17 + 10 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据