本文转自【 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输入输出能力选择合适的配对模式。
发表评论