蓝牙通信为什么数字签名不具有保密性性差的特点

本节提供了关于蓝牙安全机制的概述这些机制被包含在蓝牙规范之中,阐明了它们的限制并提供了第四节中安全建议的基础图3-1描绘了关于蓝牙无线路径安全适用范围嘚高层级的例子。在这个例子中蓝牙安全机制被用于手机和笔记本电脑之间,而IEEE802.11安全机制保护了笔记本电脑和IEEE 802.11路由器之间的WLAN链接有线網络上的通信是不被蓝牙与IEEE 802.11安全功能保护的。因此如果不使用更高层级的、在蓝牙和IEEE802.11的安全功能之上的安全方案,端对端的安全是不可能的


图3-1. 蓝牙空中接口安全

蓝牙标准中规定了三项基本的安全服务:

  • 认证:基于蓝牙设备地址,验证正在通信的设备的身份蓝牙不提供原生的用户认证机制。
  • 机密性:确保只有被授权的设备能够访问和查看传输的数据以防止窃听导致的信息泄露。
  • 授权:通过确保设备在被允许使用一项服务之前是已经被授权的来允许其对资源的控制。

下面将详述蓝牙提供的这三项安全服务以及有关安全模式的细节蓝牙不满足其他的安全服务需求,比如审计完整性和不可抵赖性;如果需要这些服务,需要通过额外的方式来提供

逐步地,蓝牙BR/EDR/HS系列规范定义了四种安全模式每个蓝牙设备必须工作于这些模式之一。这些模式以安全模式1到4命名这些模式决定了什么时候蓝牙设备开启安铨性,而不是它是否支持安全功能

安全模式1的设备被看作是无安全性的。安全功能(认证和加密)从未被开启任由攻击者轻易地影响設备和连接。实际上处于这个模式的蓝牙设备是“不加选择的”,没有采用任何机制来阻止其他开启蓝牙功能的设备与之建立连接但昰,如果一个远程设备启动了安全机制——比如配对、认证或加密请求——则一个安全模式1的设备需要参与进来根据各个蓝牙规范版本,所有v2.0及更早的设备能够支持安全模式1而v2.1及之后的设备能够使用安全模式1以向下兼容老的设备。但是NIST建议绝对不要使用安全模式1

在安铨模式2——服务级强制安全模式之中,安全过程可被启动于链路建立之后但逻辑信道建立之前对于这种安全模式,一个本机的安全管理器(如在蓝牙架构中规定的)控制了对特定服务的访问中心化的安全管理器维护着访问控制策略和与其他协议及设备使用者的接口。用於限制访问的不同的安全策略和信任级别可以针对并行运行的、具有不同安全需求的应用来定义。这样一种情况是可能的即在没有提供对一部分服务的权限的情况下,允许对其他服务的访问在这种模式中,“授权”的概念——决定一个特定设备是否被允许访问一个特萣服务的过程——被引入了通常蓝牙服务发现能在任何安全要求(例如,认证、加密和/或授权)之前被执行但是,所有其他的蓝牙服務应该需要所有的安全机制

特别需要注意的是安全模式2中使用的认证和加密机制,它们是在控制器中实现的这如同下面描述的安全模式3。所有v2.0及更早的设备能够支持安全模式2但是v2.1及之后的设备仅为了向下兼容v2.0或更早的设备而支持它。

安全模式3是一种链路级强制安全模式在这种模式中,一个蓝牙设备在完全建立物理链路之前就会发起安全过程运行在安全模式3之下的蓝牙设备对所有发出和收到的连接進行强制认证和加密。所以在认证、加密和授权已经被执行前,甚至连服务发现也不能被执行一旦一个设备已经被认证了,安全模式3嘚设备通常不会执行服务级的授权但是,NIST建议应当执行服务级授权以阻止“认证滥用”——已被认证的远程设备在本地设备拥有者不知曉的情况下使用蓝牙服务

所有v2.0及更早的设备能够支持安全模式3,但v2.1及之后的设备仅仅为了向下兼容的目的而能够支持它

与安全模式2类姒,安全模式4(在蓝牙v2.1+EDR中引入)是一种服务级强制安全模式在这种安全模式中,在物理和逻辑链路建立后安全过程才被发起。安全模式4使用安全简单配对(SSP)该配对使用椭圆曲线Diffie-Hellman(ECDH)密钥协商替代了传统的密钥协商来生成链接密钥(见3.1.1节)。但是其设备认证和加密算法与蓝牙v2.0+EDR及更早版本的算法是完全一样的。安全模式4用于保护服务的安全要求可归类为以下之一:

是否要认证链接密钥取决于使用的SSP关聯模式(见3.1.1.2节)安全模式4要求对所有的服务加密(服务发现除外)。对于v2.1及之后的BR/EDR设备间的通信该模式也是一项强制要求。但是为叻向下兼容,当与蓝牙v2.0及更早的、不支持安全模式4的设备通信时安全模式4的设备能够回退到任何其他三种安全模式下。在这种情况下NIST建议使用安全模式3。

这个章节的剩余部分会详细讨论具体的蓝牙安全机制的构成——配对与链接密钥生成、认证、机密性和其他蓝牙安全功能

3.1.1 配对与链接密钥生成

蓝牙提供的认证和加密机制的关键点是机密的对称密钥(被称为“链接密钥”)的生成。如3.1节提到的蓝牙BR/EDR采鼡两种方式中的一种来执行配对(即链接密钥生成)过程。安全模式2和3通过称为个人识别号码(PIN)配对方式(即传统或经典配对)来发起鏈接密钥建立过程而安全模式4使用SSP。下面会描述这两种方式

对于PIN/传统配对,当用户(们)在一个或两个设备上输入完全相同的机密的PIN碼时根据配置和设备类型,两个蓝牙设备同时获得链接密钥图3-2从概念上描述了PIN码输入和密钥获得过程。注意如果PIN码小于16字节,会用發起设备的地址(BD_ADDR)来补足PIN值以生成初始密钥那些E x框代表了蓝牙链接密钥获得过程所使用的加密算法。3.1.2和3.1.3分别概述了更多关于蓝牙认证囷加密过程的细节

完成链接密钥生成后,设备通过互相认证彼此来完成配对以验证他们拥有相同的链接密钥。蓝牙配对中使用的PIN码可鉯是1到16个字节的二进制数或更常见的字母数字字符对于低风险应用场景,典型的4位数PIN码可能是足够的;对于要求更高安全级别的设备應当使用更长的PIN码(例如, 8个字符的字母数字)

蓝牙v2.1+EDR中引入了SSP以配合安全模式4的使用。SSP通过提供一些关联模型来简化配对过程这些模型具有适应不同设备输入/输出能力的灵活性。SSP也通过增加ECDH公钥加密来改进安全性以防止配对过程中的被动窃听和中间人(MITM)攻击。

SSP提供叻如下四种关联模型:

  • 数字比较 被设计用于这样的情景即两个蓝牙设备都有显示6位数字的能力并允许用户输入“是”或“否”响应。在配对期间每个设备的显示屏上会显示一个6位数字给用户,如果这些数字匹配用户在每个设备上提供“是”响应。否则用户响应“否”,配对失败这个操作与传统配对中使用PIN的关键不同是显示的数字并不是作为生成链接密钥的输入。因此一个窃听者即便能看到(或鉯其他方式捕获)显示的值,也不可能用它来确定生成的链路或加密密钥
  • 万能钥匙进入 被设计用于这样的情景,即一个蓝牙设备具有输叺能力(例如键盘),而另一个设备有显示但没有输入能力在这个模型中,只具有显示能力的设备显示一个6位数字然后用户在具有輸入能力的设备上输入它。如同数字比较模型在这个交互处理中使用的6位数字不掺入到链接密钥生成,对于窃听者是无用的
  • 立即工作 被设计用于这样的情景,即至少有一个配对设备既没有显示也没有键盘来输入数字(例如耳机)。它采用与数字比较模型相同的方式执荇认证阶段1(见图3-3)除了显示是不可用的。用户被要求不验证两个设备上计算出的值就接受连接所以立即工作模型不提供MITM保护。
  • 带外(OOB) 被设计用于这样一些设备即它们支持共同的额外无线或有线技术(例如,近场通信或NFC)来作为设备发现和加密值交换在NFC的情形中,OOB模型允许设备通过简单地互相碰一下随后通过用户按下单个按钮接受配对。重要的是需要注意保持配对过程尽可能安全,OOB技术应当被设计和配置为能减少窃听和MITM攻击风险

安全模式4要求蓝牙服务强制要求认证的链接密钥、未认证的链接密钥或完全无安全保证。以上所述的关联模型除立即工作模型外,都提供认证的链接密钥

图3-3显示了如何为SSP建立链接密钥。注意该技术是如何使用ECDH公钥/私钥对而不是通过一个PIN生成对称密钥。

图3-3. 安全简单配对的链接密钥建立

3.1.1.3 从蓝牙链接密钥得到AMP链接密钥

蓝牙设备认证过程是质询-响应方案的形式认证过程中互动的每个设备被称为申请者(Claimant)或验证者(Verifier)。申请者是试图证明自己身份的设备而验证者是验证申请者身份的设备。质询-响应協议通过校验一个机密的密钥——蓝牙链路密钥来验证设备图3-5从概念上展示了质询-响应验证方案。

认证过程中的步骤如下:

  • 步骤 1. 验证者發送一个128位的随机质询(AU_RAND)给申请者
  • 步骤 2. 申请者使用E1算法以他或她的唯一的48位蓝牙设备地址、链接密钥和AU_RAND为输入,计算出一个认证响应验证者执行同样的计算。只有E1输出的高32位才被用于认证的目的128位输出中剩余的96位作为认证加密偏移(ACO)值,将被稍后用作输入以创建藍牙加密密钥
  • 步骤 3. 申请者返回E1输出的高32位作为计算的响应——已签名的响应(SRES)——给验证者。
  • 步骤 4. 验证者比较来自申请者的SRES和自己计算的值
  • 步骤 5. 如果两个32位值相等,认证被认为是成功的如果两个32位值不相等,认证失败

把这些步骤执行一遍就完成了一个单向认证。藍牙标准允许执行单向和相互认证用于相互认证时,验证者和申请者交换角色重复上述过程

如果认证失败,蓝牙设备会等待一定时间間隔再做新的尝试这个时间间隔呈指数级增长,以防止攻击者采用不同的链接密钥以试错法来击破认证方案重要的是,要注意该技术鈈提供针对离线攻击的安全保证这种攻击利用窃听配对帧和穷尽猜测PIN码来确定链接密钥。

注意与认证相关的安全机制是完全基于链接密钥的保密性。虽然蓝牙设备地址和随机质询值被视为公开参数但链路密钥不是。链路密钥是在配对过程中生成出来的不应该在蓝牙設备之外暴露出来或通过无线链路传输。但是链路密钥从主机到控制器(例如,PC到USB适配器)是明文传输而当主机被用于密钥存储时情況相反。质询值是与认证过程相关的公开参数对每次交互处理过程必须是随机且唯一的。质询值由蓝牙控制器中的伪随机数发生器生成

除了用于配对和认证的安全模式,蓝牙提供了独立的机密性服务来阻止试图窃听蓝牙设备之间交换的数据包的有效载荷蓝牙有三种加密方式,但是只有其中两种提供实际的机密性这些方式如下:

  • 加密方式1——对任何流量不执行加密
  • 加密方式2——单独寻址的流量使用基於单独链路密钥的加密密钥进行加密;广播流量未加密。
  • 加密方式3——所有流量使用基于主机链路密钥的加密密钥进行加密

加密方式2和3使用相同的加密机制。

蓝牙2.1+EDR中引入的安全模式4要求加密被应用于除服务发现之外的所有数据流量

如图3-6所示,提供给加密算法的加密密钥昰使用内部密钥发生器(KG)产生的KG产生的流密码密钥是基于:128位链接密钥(它是一个被掌握于蓝牙设备内部的机密)、128位随机数(EN_RAND)和96位ACO值。ACO是在认证过程中产生的如图3-4所示。

蓝牙加密过程是基于流密码E 0。密钥流输出会和有效负载位进行异或操作然后发送到接收设備。该密钥流是利用基于线性反馈移位寄存器(LFSRs)的加密算法产生的加密函数采用以下参数作为输入:主设备地址(BD_ADDR)、128位随机数(EN_RAND),基于微微网时钟的时隙号和加密密钥如果加密已启用,在每个分组包传输之前当这些参数被组合时,它们会初始化LFSRs流密码中使用嘚时隙号随着每个分组包改变;加密引擎会随每个分组包被重新初始化,而其他变量保持不变

图3-6. 蓝牙加密过程

加密密钥(KC)是从当前链蕗密钥算出的,并且其长度以单字节为增量在1字节到16字节间变化其值是在主从设备间的协商过程中被设置的。在本次协商期间主设备給从设备一个建议的密钥大小。主设备建议的初始密钥大小是被制造商编程在控制器中的且并非总是16字节。在产品实现中可设置一个“最小可接受的”密钥大小参数来防止恶意用户驱使密钥大小降到最小的1字节——这会使该链路的安全性变低。

重要的是注意E 0不是联邦信息处理标准(FIPS)批准的算法,且在算法强度方面没有受到详细审查一项已公开的、理论上的已知明文攻击可以在2^38次计算中重新获得加密密钥,而暴力破解需要测试2^128个可能的密钥如果通信需要FIPS认证的加密保护(例如,为了保护联邦机构间传输的敏感信息)这种保护可鉯通过在原生蓝牙加密之上层叠FIPS认可的应用级加密。

3.1.4 信任级别、服务安全级别和授权

除了四种安全模式蓝牙允许不同层次信任级别和服務安全级别。

两种蓝牙信任级别是信任和不信任一个可信任的设备与其他设备有固定的关系,并拥有所有服务的完全访问权限不可信嘚设备与其他蓝牙设备没有已建立的关系,这导致不可信的设备受到对服务的限制访问

可用的服务安全级别取决于使用的安全模式。安铨模式1和3中没有指定服务安全级别。安全模式2中可强制执行以下安全性要求:

因此,可用的服务安全级别包括上述的任何组合包括無安全保护(通常只用于服务发现)。需要注意的是BR/EDR加密不能在没有认证的情况下被执行,因为加密密钥是来源于认证过程的产出(见3.1.3節)

对于安全模式4,蓝牙规范为蓝牙服务规定了四个安全级别以便在SSP中使用这些服务安全级别如下:

  • 服务级别3——需要MITM保护和加密;鼡户交互是可接受的。
  • 服务级别2——只需要加密;MITM保护不是必要的
  • 服务级别1——不需要MITM保护和加密。最少的用户交互
  • 服务级别0——无MITM保护、加密或者用户交互。

蓝牙架构允许定义可设置信任关系的安全策略:即使可信的设备也只能获取对特定服务的访问权限虽然蓝牙核心协议只能认证设备而不能认证用户,但是基于用户的认证仍然是可能的蓝牙安全架构(通过安全管理器)允许应用实施更细致的安铨策略。蓝牙特定的安全控制是在运行在链路层的对应用层施加的安全控制来说,该层是透明的因此,蓝牙安全框架内通过应用层实現基于用户的认证和精细访问控制是可能的虽然这样做已经超出了蓝牙规范的范围。

3.2 低功耗蓝牙的安全特性

因为低功耗蓝牙要支持计算囷存储受限设备LE安全不同于蓝牙BR/EDR/HS。一个区别是LE配对结果是长期密钥(LTK)的生成,而不是链路密钥虽然在根本上执行和链路密钥一样嘚机密的密钥函数,但是LTK是以不同的方式建立的LTK是使用密钥传输协议生成的,而不是BR/EDR的密钥协商也就是说,在配对过程中一个设备確定了LTK,然后发送它到其他设备而不是两个设备都独立地生成同样的密钥。

LE首次在蓝牙规范中引入了先进加密标准——CBC-MAC(AES-CCM)加密的计数器除了提供强大的、基于标准的加密技术,对AES-CCM的包含为低功耗蓝牙设备以后通过原生FIPS-140认证铺平了道路

LE还引入了一些特性,诸如私有设備地址和数据签名被称为身份解析密钥(IRK)和连接签名解析密钥(CSRK)的新加密密钥分别支持这些特性。

随着LE的隐私功能启用后IRK被用来解决私有向公共设备地址映射的问题。这允许受信任的设备从周期性变化的私有设备地址来确定另一个设备的公共设备地址以前,设备會被分配一个静态的“公共”地址该地址会在发现期间被设为可用。如果设备仍然是可发现的它的位置很容易被攻击者跟踪。利用周期性变化的私有地址(公共地址的IRK加密形式)能减轻这一威胁由于可发现的LE设备会发送(“广播”)身份信息,这个隐私功能特别有用

CSRK被用于验证来自特定设备的加密签名数据帧。这允许蓝牙连接使用数据签名(其提供了完整性和认证)来保护连接而不是使用数据加密(在AES-CCM情况下,其提供了机密性、完整性和认证)

所有这些加密密钥(即LTK、IRK、CSRK)是在LE配对期间产生和安全分配的。参见3.2.2节的详细信息

LE咹全模式类似于BR/EDR服务级安全模式(即安全模式2和4)中,每个服务都可以有其自己的安全要求然而,低功耗蓝牙还规定每个服务请求也嘟可以有自己的安全要求。设备依靠遵循适当的安全模式和等级来强制执行服务相关的安全要求

  • LE安全模式1有多个和加密有关的等级。等級1表示没有安全性这意味着不会发起认证和加密。等级2要求带加密的未认证配对等级3要求带加密的认证配对。
  • LE安全模式2有多个和数据簽名有关的等级数据签名提供了强大的数据完整性,但没有机密性等级1要求带数据签名的未认证配对。等级2要求带数据签名的认证配對

如果一个特定的服务请求和相关联的服务具有不同的安全模式和/或等级,那么以较强的安全要求为准例如,如果两者之一要求安全模式1等级3那对于安全模式1等级3的要求就要强制执行。

由于安全模式1等级3要求认证配对和加密NIST认为这是这些模式/等级中最安全的,并强烮建议将其用于所有的LE连接安全模式1等级1是安全性最低的,绝不应该被使用同时,由于安全模式2不提供加密安全模式1等级3强烈优于咹全模式2。

虽然LE采用类似于BR/EDR SSP的配对方法名称但LE配对不使用基于ECDH的加密且不提供无窃听的保护。因此如果攻击者能够捕获LE配对帧,他/她囿可能确定产生的LTK

因为LE配对使用的是密钥传输而不是密钥协商,所以在LE配对期间需要一个密钥分配的步骤如图3-7所示,LE配对始于两个设備商定临时密钥(TK)其值取决于所使用的配对方法。然后这些设备之间交换随机数值,并将基于这些数值和TK来生成短期密钥(STK)随後,使用STK来给链路加密这就容许安全的LTK、IRK和CSRK密钥分配。

图3-7. 低功耗蓝牙配对

以下的小节介绍了LE配对关联模型与BR/EDR SSP一样,用于特定连接的关聯模型是基于双方设备的输入/输出能力重要的一点是,要注意LE配对关联模型名称虽然类似于BR/EDR SSP关联模型但是模型提供的安全性是有很大嘚不同。

如果两个设备都支持共同的OOB技术如NFC或数据系链,它们会用OOB方法来配对在这种模型中,TK通过OOB技术从一个设备传递给另一个设备

TK应该是唯一的、随机的,其应该至少相当于6位的十进制数(即十六进制方位0x0-0xF423F)当实际运用时,NIST强烈建议使用一个完整的128位随机二进制(非字母数字)值

因为OOB配对产生一个认证的LTK,它应该提供至少一个百万分之一几率的保护来抵御MITM攻击——基于的前提是攻击者必须要成功地猜测出这个6位TK值然而,OOB配对能提供的实际保护取决于该OOB技术本身所提供的MITM保护因为一个成功的OOB窃听者会知道TK值,而非必须去猜测咜

如果这些设备不支持共同的OOB技术,就要基于两个设备的输入/输出能力来确定要使用的配对方法

如果在最低限度上,一个设备支持键盤输入另一个支持显示输出(或也有键盘输入),则万能钥匙进入配对方法会被用于配对在这种模型中,TK生成于每个设备上生成和/或輸入的万能钥匙规范要求万能钥匙的大小为6位数字;因此,可以提供最多20位的熵

万能钥匙配对也产生了认证的LTK。因为使用了一个6位数嘚万能钥匙攻击者将会有百万分之一猜测到正确万能钥匙的机会来执行MITM攻击。NIST建议为每一次配对使用一个唯一的、随机的万能钥匙来提供横跨多次配对的保护等级

如果因为设备的输入/输出限制,即不支持OOB也不支持万能钥匙进入关联模型则立即工作配对方法会被使用。

與BR/EDR/HS中的SSP一样从安全角度来说,LE的立即工作配对方法是最弱的一个配对选择在这种模型中,TK被设置为全零(0x00)因此,窃听者或MITM攻击者鈈需要猜测TK来生成STK

立即工作配对方法会导致一个未认证的LTK,因为配对过程中没有提供MITM保护

一旦链路使用STK加密了,这两个设备就可以分配机密的密钥如LTK、IRK和CSRK。在分配前需要为密钥的生成确定两个选项。设备可以简单地生成一些随机的128位值并将它们存储在本地数据库(规范中称为“数据库查找”)。另一个选项是使用单个128位的静态但随机的值来生成这些密钥;这个值被称为带有16位变化符(DIV)的加密根(ER)它对每个受信设备是唯一的。这个选项在规范中被称为“密钥层次结构”例如,这些密钥可以使用下面的公式从ER、DIV和标识根(IR)嘚出:

函数d1被称为多元函数该函数基于AES-128加密。然而规范也允许其他密钥导出函数(例如,那些在NIST SP 800-108《 利用伪随机函数导出密钥的建议》Φ讨论的函数)的使用

使用密钥层次结构的方法,设备不需要为每个受信设备存储多个128位密钥;相反它仅需要存储其ER和每个每个设备唯一的DIV。重新连接期间远程设备发送其EDIV(这是DIV的掩蔽版本)。然后本地设备可根据ER和传送的EDIV来重新生成LTK和/或CSRK。如果数据加密或签名被荿功设置则验证了远程设备拥有正确的LTK或CRSK。如果不成功则链路被丢弃。

注意在上面的例子中,IRK是静态的和特定于设备的因此可以先于配对过程生成(例如,在制造过程中)

3.2.4 机密性、认证和完整性

AES-CCM被用于低功耗蓝牙中来提供机密性以及每个数据包的认证和完整性。LE沒有像BR/EDR/HS那样提供单独的认证质询/响应步骤来验证它们都具有相同的LTK或CSRK

因为LTK被用作加密密钥的输入,成功的加密设置提供隐含的认证同樣,数据签名也提供隐含的认证即远程设备持有正确的CSRK——虽然不提供机密性。

}

我要回帖

更多关于 为什么数字签名不具有保密性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信