针对蓝牙PIN码的最新攻击技术细节分析

注:本文章只是讲解决针对蓝牙PIN码的最新攻击技术,以提醒大家注意防范,并没有其它目的。任何人不得使用本文中所介绍的技术做非法的事。

最近,国内外多家网站纷纷刊登了一则关于针对蓝牙PIN码的最新攻击技术的新闻:通过强制两个正在通讯的蓝牙设备进行重新配对,并监听配对信息,攻击者可以在0.063秒内破解一个4位(十进制)的PIN码。今年6月上旬举办的世界无线技术会议也详细讨论了该攻击方法,securityfocus 甚至说“这种新的攻击技术令很多关注无线技术的信息安全专家非常的震惊,因为以前关于攻击蓝牙PIN码的研究只涉及在不正确的蓝牙配置或特定的环境下,而此次是第一次全面性描述攻击蓝牙的技术”。针对这种蓝牙攻击技术,娱乐与技术并重的WDA进行了跟踪和探讨,并写出以下的攻击细节,希望与关注蓝牙技术的爱好者共同讨论。

一、 概述

蓝牙(bluetooth)是一种实现多种设备之间短距离无线连接的协议,通讯速度快,广泛应用于无线设备、图像处理、安全产品、消费娱乐、汽车产品和家用电器等领域。做为一种无线技术,蓝牙技术提供了诸如密钥管理、认证和保密等安全机制。然而,过去几年,一些针对蓝牙技术的攻击方法被提出,包括信息漏泄、数据窃取、假冒攻击等,蓝牙技术的安全问题主要有以下几点:

1、整个蓝牙系统的安全性依耐于PIN码的保密性。由于安全意识不高,用户所选择的PIN码长度通常较短,导致PIN码被破解的可能性大大增加。

2、 蓝牙协议所使用的密码算法是蓝牙设计者自行发明的,这些密码算法比较简单。从密码分析的角度看,一个成熟的密码算法必须经过长期的实践才会被人们所认可,由于缺乏测试,新的密码算法有可能隐含着某种缺陷。

3 、蓝牙适用于10米以内的短距离通讯,攻击者要想接近攻击目标确实比较困难。但设想在一个步行街上或者在一个堵车的环境中,攻击者通过启动了蓝牙功能的设备,是有可能搜索到周围10米内的蓝牙通讯。而且,最新的IEEE 802.11标准已经可以比较便宜的扩展蓝牙通讯的距离。

4、由于蓝牙技术越来越普及,特别是蓝牙软件可以安装在PDA和便携式电脑上,存放在PDA和便携式电脑上的信息也越来越引起黑客的兴趣。

二、 术语介绍

配对:配对是指两个蓝牙设备首次通讯时,相互确认的过程。两个蓝牙设备之间一经配对之后,随后的通讯连接就不必每次都要做确认,非常的方便。

PIN(Personal Identification Number):个人识别码,蓝牙使用的PIN码长度为1-8个十进制位(8-128比特)。

DB_ADDR:蓝牙设备地址。每个蓝牙收发器被分配了唯一的一个48位的设备地址,类似于PC机网卡的MAC地址。两个蓝牙设备在通讯开始时通过询问的方式获取对方的DB_ADDR地址。 三、 蓝牙配对和认证过程

  蓝牙支持三种安全模式,第一种是设备没有任何安全措施的"无安全操作"模式。第二种是信道建立之前不需启动安全协议的"业务级安全模式"。第三种是要求终端在链路建立前就需启动安全协议的"链路级安全模式"。其中,最后“链路级安全模式”安全级别最高,本文所讨论的就是针对这种级别的攻击技术。

  1、配对和认证

  蓝牙通讯初始化过程需要三个步骤:生成初始密钥(Kinit)、生成链路密钥(Kab)和双方认证。接着,用加密密钥来保护往后的通讯。在配对之前,需要事先将PIN码输入到蓝牙设备中,在某些设备(像无线耳机),PIN是固定不可改变的。必须注意的是,两边的PIN必须匹配,否则不能通讯。下面我们将讨论配对和双方认证的细节。

  .生成初始密钥(Kinit)

  初始密钥Kinit t长度为128位,由E22算法产生,图1描述了生成Kinit密钥的过程。首先提出通信要求的设备称为主设备(Master),用A表示;被动进行通信的设备称为从设备(Slave),用B表示。从图中可以看到,E22算法的输入(明文)由以下三部分组成:

  1)从设备的物理地址:BD_ADDR,在生成Kinit前,主设备通过询问方式获得从设备的地址BD_ADDR。

  2)PIN码及其长度,PIN码是双方设备预先设定的。

  3)一个128位的随机数(IN_RAND)。由主设备产生,并以明文方式传送给从设备。

  由于主、从设备使用了相同的E22算法,如果双方设备以上三部分的值都相等,那么各自算出来的Kinit也应该相同。

.生成链路密钥Kab 见图2,首先主设备A产生128位的随机数LK_RANDA,从设备B也产生128位的随机数LK_RANDB。在主设备A中,Kinit与LK_RANDA进行位比特逻辑异或运算,异或结果发送给B设备;同样的,在B设备中,Kinit和LK_RANDB进行位比特逻辑异或运算,结果发送给A设备。通过这些交换后,A和B设备都具有相同的Kinit、LK_RANDA和LK_RANDB。按照图2,设备A和B分别用E21算法将LK_RANDA和BD_ADDRA、LK_RANDB和BD_RANDRB加密,并将结果进行异或得到Kab。图2

(0)

相关推荐

  • 客户端实现蓝牙接收(C#)知识总结

    在实现蓝牙接收时,网上的资料很多,使用起来也很简单,但是我觉得还是有必要把这些知识总结下来.蓝牙开发需要用到一个第三方的库InTheHand.Net.Personal.dll,其中关键的两个类是 BluetoothClient 和 BluetoothListener,首先开启一个子线程来不断的接收数据,使用很简单,直接上代码: 复制代码 代码如下: using InTheHand.Net.Sockets; using System.Threading; public MainWindow() {

  • 针对蓝牙PIN码的最新攻击技术细节分析

    注:本文章只是讲解决针对蓝牙PIN码的最新攻击技术,以提醒大家注意防范,并没有其它目的.任何人不得使用本文中所介绍的技术做非法的事. 最近,国内外多家网站纷纷刊登了一则关于针对蓝牙PIN码的最新攻击技术的新闻:通过强制两个正在通讯的蓝牙设备进行重新配对,并监听配对信息,攻击者可以在0.063秒内破解一个4位(十进制)的PIN码.今年6月上旬举办的世界无线技术会议也详细讨论了该攻击方法,securityfocus 甚至说"这种新的攻击技术令很多关注无线技术的信息安全专家非常的震惊,因为以前关于攻击

  • Android 蓝牙自动匹配PIN码跳过用户交互示例

    近期项目中需要连接蓝牙设备,起初只是设置蓝牙列表界面让用户点击然后输入默认PIN码,后来改需求了 = = ,要求自动连接指定设备并不需要用户手动输入PIN码,作为Android 小白的我是拒绝的,但是拒绝有什么用~ 首先说一下之后会用到的关于蓝牙方面的东西: 断开蓝牙已配对的设备 搜索附近蓝牙设备 拦截用户交互页面,使用代码输入 由于在最后连接的时候使用的是设备的SDK所以在这里就不介绍了 1.断开已配对设备 最后在项目中发现没有用.这里就先记录一下. //得到配对的设备列表,清除已配对的设备

  • Android 连接蓝牙扫码器无输入框的实现

    Android 的APP 需要集成一个蓝牙扫码器, 特别的是,需要扫码的地方是没有输入框的(EditText),不能通过直觉上理解的通过对EditText输入事件进行监听处理,取得扫码结果.并且设备也没有提供SDK. 细想了一下, 蓝牙扫码器本质应该是个HID设备,相当于蓝牙键盘.而后豁然开朗. 每一次扫码应该会触发按键事件,通过监听当前Activity的按键事件,应该可以实现,无输入框的情况下取得扫码结果. 重载Activity中的dispatchKeyEvent实现按键监听. @Overri

  • redis调用二维码时的不断刷新排查分析

    目录 一.背景和现象 二.分析 三.排查 一.背景和现象 项目是PHP开发的,点击登录的时候就根据随机数生成了二维码,缓存在了redis.用户用微信扫描了二维码分析出需要请求的链接,然后微信浏览器就请求了服务器,服务器通过了随机数认证.正当请求了之后,服务器就拿服务器找出来的的APPID去微信服务器请求.微信准许登陆,服务器修改状态.这个时候websocket服务器修改了状态,把修改状态的事告诉浏览器,浏览器变更状态.如果没有websocket的情况下,浏览器不断的询问服务器是否修改了状态,不能

  • YOLOv5中SPP/SPPF结构源码详析(内含注释分析)

    目录 一.SPP的应用的背景 二.SPP结构分析 三.SPPF结构分析 四.YOLOv5中SPP/SPPF结构源码解析(内含注释分析) 总结 一.SPP的应用的背景 在卷积神经网络中我们经常看到固定输入的设计,但是如果我们输入的不能是固定尺寸的该怎么办呢? 通常来说,我们有以下几种方法: (1)对输入进行resize操作,让他们统统变成你设计的层的输入规格那样.但是这样过于暴力直接,可能会丢失很多信息或者多出很多不该有的信息(图片变形等),影响最终的结果. (2)替换网络中的全连接层,对最后的卷

  • pycharm激活码2020最新分享适用pycharm2020最新版亲测可用

    2020年11月22日最新分享pycharm激活码,这次分享的pycharm激活码适用pycharm2020最新版及pycharm2019.pycharm2018版本,同时也适用Intellij IDEA激活码,PHPstorm激活码大家可以放心使用. 使用pycharm激活码成功激活如下图 pycharm激活码成功激活 pycharm激活码适用pycharm2020最新版 UNPIKS0FCK-eyJsaWNlbnNlSWQiOiJVTlBJS1MwRkNLIiwibGljZW5zZWVOYW

  • IIS&Apache 攻击记录分析篇

    在这里,我为大家介绍一下两种常见的网页服务器中最重要的记录文件,分析服务器遭到攻击后,黑客在记录文件中会留下什么记录.目前最常见的网页服务器有两种:Apache和微软的Internet Information Server(简称IIS),这两种服务器都有一般版本和SSL认证版本.本文将使用和现实黑客的攻击手段类似的攻击方法去测试服务器并分析相关文件,有条件的朋友可在自己的机器上测试. IIS的预设记录文件地址在C:\winnt\system32\logfiles\w3svc1目录下,文件名是当天

  • 黑客攻击揭密--分析选定的网络攻击

    由于黑客攻击最近在新闻中屡有报导,我们都知道需要认真地对待计算机安全问题.尽管有许多出版物介绍可以用来确保计算机环境安全的软件,但很少有出版物说明黑客攻击实际上是如何执行的.如果您负责确保公司的计算机环境的安全,那么,理解黑客攻击的工作原理对您就很重要了.在本文中,Michael Pichler 分析了一些有趣的网络攻击并说明了它们是如何工作的.您将看到黑客是多么富于创造性,并将了解自己的软件中所包含的一些特性是如何被利用来对付您的.本文适合于对网络有一定理解,但不一定从事网络领域日常工作的读者

  • 跨站式脚本(Cross-SiteScripting)XSS攻击原理分析第1/4页

    使用过ASP的同学一定见过这样的代码:  Hello, 复制代码 代码如下: <% Response.Write(Request.Querystring("name")) %> 假如我传入的name的值为:  x=document.cookie;alert(x); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这样就可以直接盗取用户的cookie.所以我就可以发送一条链接地址让别人去点: 复制代码 代码如下: http://www.xxx.com/reg.as

  • 微信 小程序前端源码详解及实例分析

    微信小程序前端源码逻辑和工作流 看完微信小程序的前端代码真的让我热血沸腾啊,代码逻辑和设计一目了然,没有多余的东西,真的是大道至简. 废话不多说,直接分析前端代码.个人观点,难免有疏漏,仅供参考. 文件基本结构: 先看入口app.js,app(obj)注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等.其他文件可以通过全局方法getApp()获取app实例,进而直接调用它的属性或方法,例如(getApp().globalData) //app.js App({ onLau

随机推荐