低功耗蓝牙开发权威指南 之 安全
2017-04-21 16:02
225 查看
一、安全概念
1、认证
认证是一种证明身份的方式,用来证实所连接的设备是其声称的设备,而非第三方攻击者。
认证有两种基本方法:
a、初始认证和密码共享。(如去银行开户必须出示本人身份证认证)
b、使用预先共享的密码重新认证。(如取款必须要银行卡和密码认证,证明是账户持有者就可以取款,无论是谁)
执行认证有三种不同方式:
a、在初始配对时,设备使用一个认证算法来验证连接的对端设备。该过程可能设计向一个或两个设备键入秘钥。输入的秘钥用来支持链路加密,继而可以分配那些日后使用的共享机密。只要设备保存了共享机密,即称之为“已绑定”。
b、当重新连接到以前绑定过的设备时,其中的任一设备可以向对端设备发送一个签名的命令来进行身份验证,表明它知道先前分配的共享机密。签名使用了上次绑定是彼此交换的共享机密来创建,因此不能被第三方伪造。该签名的命令含有一个计数器部分,每个消息发送时递增,以防重放攻击。
c、当重新连接到以前绑定过的设备时,二者之中任一设备都可以启动加密。以后传输的每个数据包将包含消息完整性检查(MIC)值,接收设备使用先前分配的共享机密验证消息的发送方。
2、授权
授权是指分配权限做某事,如某设备与你的设备建立连接时,你可以授权它来访问你的设备的某些部分。 通常包括两种方式:
a、文档提供授权。
b、直接进行授权。
3、完整性
完整性的定义是指数据的内容一致性和无讹化性。无论使用有线还是无线通讯协议,数据从一个设备传送到另一个设备时都容易产生各种错误,也可能是第三方攻击。因此,错误检测和防范非常重要。为了确保完整性,需要一个更强大的消息认证机制,能够同时检测原始消息的完整性。循环冗余校验(CRC)可以用来防止位元的变化,但其功能较弱,不能视作一种安全措施。
4、机密性
机密性是指将事物保持机密的意图。在BLE中,机密性意味着即使一个第三方窃听者接收到一个消息,她也无法解密。
5、隐私
防止他人根据你的设备认出你。
6、加密引擎
BLE有一个加密块,实际上是一个单向函数,用于产生秘钥、机密和提供完整性检查。用的是先进加密系统(AES)。
7、共享机密
几乎所有的安全性都是基于共享机密。你的银行卡密码是一个机密,由你和你的银行之间共享;你的电脑密码是一个机密,由你和你的计算机之间共享;还有,你家的钥匙是握在你手上的金属与门锁内的金属之间的共享机密。
在BLE里也有许多共享机密,称之为秘钥。一个秘钥是一个“共享机密”的速记方式。可以有很多秘钥,就如同你有汽车钥匙,门钥匙,自行车锁钥匙等。
BLE主要有五个秘钥:
a、临时秘钥(TK)
b、短期秘钥(STK)
c、长期秘钥(LTK)
d、身份解析秘钥(IRK)
e、连接签名解析秘钥(CSRK)
长期秘钥(LTK):
一旦初始配对过程完成了连接加密,设备将会分配长期秘钥(LTK)。LTK可以是存储在安全数据库中的一个随机数。在从设备上也能生成LTK。
在设计上,从设备的资源通常较为有限,所以要让其维护一个安全数据库可能只是一种奢望。为了解决这个问题,从设备向主设备分配两个值:EDIV和Rand。这两个值存储在主设备上,当与从设备重新连接时再发回给对方。从设备随后可以计算要使用的LTK,或者更准确地说,计算它先前给过主设备的LTK值。
在重新连接到之前配对并绑定过的设备时,用LTK加密连接。这意味着不需要为每次的设备连接执行完整的配对。
1、认证
认证是一种证明身份的方式,用来证实所连接的设备是其声称的设备,而非第三方攻击者。
认证有两种基本方法:
a、初始认证和密码共享。(如去银行开户必须出示本人身份证认证)
b、使用预先共享的密码重新认证。(如取款必须要银行卡和密码认证,证明是账户持有者就可以取款,无论是谁)
执行认证有三种不同方式:
a、在初始配对时,设备使用一个认证算法来验证连接的对端设备。该过程可能设计向一个或两个设备键入秘钥。输入的秘钥用来支持链路加密,继而可以分配那些日后使用的共享机密。只要设备保存了共享机密,即称之为“已绑定”。
b、当重新连接到以前绑定过的设备时,其中的任一设备可以向对端设备发送一个签名的命令来进行身份验证,表明它知道先前分配的共享机密。签名使用了上次绑定是彼此交换的共享机密来创建,因此不能被第三方伪造。该签名的命令含有一个计数器部分,每个消息发送时递增,以防重放攻击。
c、当重新连接到以前绑定过的设备时,二者之中任一设备都可以启动加密。以后传输的每个数据包将包含消息完整性检查(MIC)值,接收设备使用先前分配的共享机密验证消息的发送方。
2、授权
授权是指分配权限做某事,如某设备与你的设备建立连接时,你可以授权它来访问你的设备的某些部分。 通常包括两种方式:
a、文档提供授权。
b、直接进行授权。
3、完整性
完整性的定义是指数据的内容一致性和无讹化性。无论使用有线还是无线通讯协议,数据从一个设备传送到另一个设备时都容易产生各种错误,也可能是第三方攻击。因此,错误检测和防范非常重要。为了确保完整性,需要一个更强大的消息认证机制,能够同时检测原始消息的完整性。循环冗余校验(CRC)可以用来防止位元的变化,但其功能较弱,不能视作一种安全措施。
4、机密性
机密性是指将事物保持机密的意图。在BLE中,机密性意味着即使一个第三方窃听者接收到一个消息,她也无法解密。
5、隐私
防止他人根据你的设备认出你。
6、加密引擎
BLE有一个加密块,实际上是一个单向函数,用于产生秘钥、机密和提供完整性检查。用的是先进加密系统(AES)。
7、共享机密
几乎所有的安全性都是基于共享机密。你的银行卡密码是一个机密,由你和你的银行之间共享;你的电脑密码是一个机密,由你和你的计算机之间共享;还有,你家的钥匙是握在你手上的金属与门锁内的金属之间的共享机密。
在BLE里也有许多共享机密,称之为秘钥。一个秘钥是一个“共享机密”的速记方式。可以有很多秘钥,就如同你有汽车钥匙,门钥匙,自行车锁钥匙等。
BLE主要有五个秘钥:
a、临时秘钥(TK)
b、短期秘钥(STK)
c、长期秘钥(LTK)
d、身份解析秘钥(IRK)
e、连接签名解析秘钥(CSRK)
长期秘钥(LTK):
一旦初始配对过程完成了连接加密,设备将会分配长期秘钥(LTK)。LTK可以是存储在安全数据库中的一个随机数。在从设备上也能生成LTK。
在设计上,从设备的资源通常较为有限,所以要让其维护一个安全数据库可能只是一种奢望。为了解决这个问题,从设备向主设备分配两个值:EDIV和Rand。这两个值存储在主设备上,当与从设备重新连接时再发回给对方。从设备随后可以计算要使用的LTK,或者更准确地说,计算它先前给过主设备的LTK值。
在重新连接到之前配对并绑定过的设备时,用LTK加密连接。这意味着不需要为每次的设备连接执行完整的配对。
相关文章推荐
- 低功耗蓝牙开发权威指南第二部分-控制器
- 低功耗蓝牙开发权威指南第四部分-应用
- 低功耗蓝牙开发权威指南第一部分-综述
- 低功耗蓝牙开发权威指南第三部分-主机
- Android开发指南-框架主题-安全和许可
- 《移动微技(Mobile Widget)应用开发权威指南》正式出版
- Spring高级程序设计(Spring框架创始人倾情推荐的权威开发指南)
- Android开发指南-框架主题-安全和许可
- Windows2000 服务器端应用程序开发设计指南-安全连接
- Android学习指南之四十一:Android蓝牙开发详解
- Eclipse 权威开发指南 ---- 目录
- 转 [Struts2 权威指南.基于WebWork核心的MVC开发] struts.properties 配置文件
- struts2 权威指南 struts2的开发规范与技巧
- 《Windows 8应用开发权威指南》图书开始在网络上预售
- 支付宝安全支付服务Android应用开发指南(摘取官方文档)
- Android开发指南-框架主题-安全和许可
- Struts 2权威指南:基于WebWork核心的MVC开发
- EJB3.0开发指南:事务与安全
- 移动微技(Mobile Widget)应用开发权威指南
- Struts 2权威指南:基于WebWork核心的MVC开发