蓝牙物联网的安全漏洞分析

在当前的网络应用中,物联网具有对物品多样性、低成本、低速率、短距离等特征的泛在需求,这类需求主要通过蓝牙等低速网络协议实现。蓝牙是一种短距离通信开放标准,利用嵌入式芯片实现通讯距离在 10 m100m之间的无线连接。蓝牙的设计目标在于通过统一的近距离无线连接标准使各生产商生产的个人设备都能通过该网络协议更方便地实现低速率数据传输和交叉操作。蓝牙技术具有低成本、低功耗、模块体积小、易于集成等特点,非常适合在新型物联网移动设备中应用。

1 蓝牙技术的安全体系

蓝牙物联网的安全漏洞分析

1.1四级安全模式

1.1.1 安全模式1

安全模式1无任何安全机制,不发起安全程序,无验证、加密等安全功能,该模式下设备运行较快且消耗更小,但数据在传输过程中极易被攻击。蓝牙 V2.0 及之前的版本支持该模。

1.1.2 安全模式2

安全模式2是强制的服务层安全模式,只有在进行信道的逻辑通道建立时才能发起安全程序。该模式下数据传输的鉴权要求、认证要求和加密要求等安全策略决定了是否产生发起安全程序的指令。目前所有的蓝牙版本都支持该模式,其主要目的在于使其可与 V2.0之前的版本兼容。

1.1.3安全模式3

安全模式3为链路层安全机制。在该模式下蓝牙设备必须在信道物理链路建立之前发起安全程序,此模式支持鉴权、加密等功能。只有 V2.0以上的版本支持安全模式3,因此这种机制较之安全模式2缺乏兼容性和灵活度

1.1.4安全模式4

该模式类似于安全模式2,是一种服务级的安全机制,在链路密钥产生环节采用ECDH算法,比之前三种模式的安全性高且设备配对过程有所简化,可以在某种程度上防止中间人攻击和被动窃听。在进行设备连接时,和安全模式 3一样先判定是否发起安全程序,如需要则查看密钥是否可用,密钥若可用则使用 SSP 简单的直接配对方式,通过鉴权和加密过程进行连接。

1.2密管理

1.2.1链路密钥

链路密钥是128b的随机数,由伪随机数 RAND 和个人识别码 PIN、设备地址通过 E21或E22流密码算法启动。其中初始密钥及组合密钥经初始化过程生成后作为临时链路密钥在设备间完成鉴权后就被丢弃。主密钥可以用于设备在微微网内进行加密信息的广播,在发送广播信息时主密钥会替代原来的链路密钥。单元密钥生成后在蓝牙设备中会被保存且会一直应用于链路通信。

1.2.2 加密密钥

完成鉴权的蓝牙设备可以在通信中使用加密密钥来加密传递的数据。该密钥由对称加密算法E3 算法产生,字长为128 b,由伪随机数 RAND、鉴权过程产生的加密偏移数 COF和当前链路密钥K生成。蓝牙采用分组加密的方式,加密密钥和其他参数 (主体设备的设备地址随机数、蓝牙时钟参数)通过 EO算法产生二进制密钥流从而对传输数据进行加密、解密。

1.3 鉴权

鉴权的目的在于设备身份的认证,同时对参数传递是否成功进行反馈,它既可以是单向过程也可以是相互鉴权,但都需要事先产生链路密钥。被鉴权设备的设备地址、鉴权的主体设备立生的随机数以及链路密钥都参与其中,由此产生应答信息和鉴权加密偏移值,前者被传递至主体设备进行验证,若相同则鉴权成功。若鉴权失败则需要经过一定长度的等待时间才能再次进行鉴权。

2已知的蓝牙安全漏洞

蓝牙物联网

2.1跳频时钟

蓝牙传输使用自适应跳频技术作为扩频方式,因此在跳频系统中运行计数器包含28位频率为 3.2 kHz的跳频时钟,使控制指令严格按照时钟同步、信息收发定时和跳频控制从而减少传输干扰和错误。但攻击者往往通过攻击跳频时钟对跳频指令发生器和频率合成器的工作产生干扰,使蓝牙设备之间不能正常通信,并且利用电磁脉冲较强的电波穿透性和传播广度来窃听通信内容和跳频的相关参数。

2.2PIN 码问题

密钥控制图中的个人识别码 (PIN)为四位,是加密密钥和链路密钥的唯一可信生成来源,两个蓝牙设备在连接时需要用户在设备中分别输入相同的 PIN码才能配对。由于 PIN 码较短,使得加密密钥和链路密钥的密钥空间的密钥数限制在 105 数量级内,并且在使用过程中若用户使用过于简单的 PIN码(如连续同一字符)、长期不更换 PIN 码或者使用固定内置 PIN码的蓝牙设备,则更容易受到攻击。因此在 V2.1之后的版本中PIN 码的长度被增加至16位,在增大了密钥空间,提高了蓝牙设备建立连接鉴别过程的安全性的同时,也不会因为使用太长的数据串为通信带来不便。

2.3链路密钥欺骗

通信过程中使用的链路密钥基于设备中固定的单元密钥,而加密过程中其他信息是公开的,因此有较大漏洞。如设备 A 和不同设备进行通信时均使用自身的单元密作为链路密钥,攻击者利用和 A 进行过通信的设备 C 获取这个单元密,便可以通过伪造另一个和A通信过的设备 B 的设备地址计算出链路密,伪装成 B 来通过A的鉴权,B装成C亦然。

2.4 加密密销流重复

加密密钥流由 EO算法产生,生成来源包括主体设备时钟、链路密钥等。在一个特定的加密连接中,只有主设备时钟会发生改变。如果设备持续使用时间超过 23.3 小时,时钟值将开始重复,从而产生一个与之前连接中使用的相同的密钥流。密钥流重复则易被攻击者作为漏洞利用,从而得到传输内容的初始明文。

2.5鉴权过程/简单安全配对中的口令

除使用个人识别码PIN进行配对以外,蓝牙标准从 V2.1 版本开始,增加了简单安全配对SSP(Secure Simple Pairing,SSP) 方式。SSP方式比之前的 PIN码配对更方便,不像 PIN码配对那样需要两个有输入模块的配对设备同时输入配对密码,而SSP只需要有输出模块的两个配对设备确认屏幕上显示的是否是同一个随机数即可。通过设备搜索建立蓝牙物理连接,产生静态 SSP口令,鉴权这四步即可建立连接,但是这种关联模型没有提供中间人攻击保护,静态SSP口令很容易被中间人攻击攻破。

出处 物联网技术

原标题 蓝牙技术的安全漏洞及攻击方法分析

作者 杨宏立 徐嘉莹 周新丽

参考资料

https://www.hooketech.com/bluetooth-iot-security-vulnerabilities.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316387.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程语言的未来:飞速发展的时代里有不可或缺的你

随着科技的飞速发展,编程语言在计算机领域中扮演着至关重要的角色。它们是软件开发的核心,为程序员提供了与机器沟通的桥梁。那么,在技术不断进步的未来,编程语言的走向又将如何呢? 编程语言的发展趋势 人工智能和机器…

Vue实现JSON字符串格式化编辑器组件

相信很多同学都用过网上的在线JSON格式化工具来将杂乱的JSON数据转换成易于我们阅读和编辑的格式。那么,你有没有想过自己动手实现一个这样的工具呢?今天,我将介绍如何使用Vue.js来构建一个简单的JSON格式化工具。 功能简述 支持格式化JSON字…

2023 年中国高校大数据挑战赛赛题B DNA 存储中的序列聚类与比对-解析与参考代码

题目背景:目前往往需要对测序后的序列进行聚类与比对。其中聚类指的是将测序序列聚类以判断原始序列有多少条,聚类后相同类的序列定义为一个簇。比对则是指在聚类基础上对一个簇内的序列进行比对进而输出一条最有 可能的正确序列。通过聚类与比对将会极大…

从0搭建github.io网页

点击跳转到🔗我的博客文章目录 从0搭建github.io网页 文章目录 从0搭建github.io网页1.成果展示1.1 网址和源码1.2 页面展示 2.new对象2.1 创建仓库 3.github.io仓库的初始化3.1 千里之行,始于足下3.2 _config.yml3.3 一点杂活 4.PerCheung.github.io.p…

Nginx多域名部署多站点

目录 1.修改配置文件nginx.conf 2. 修改hosts文件 1.修改配置文件nginx.conf 在配置文件的 server_name 处修改成自己需要的域名,然后保存退出 j 查看语法是否错误,然后重启nginx nginx -t # 查看语法是否正确 systemctl restart nginx # 重启nginx …

ansible 配置jspgou商城上线(MySQL版)

准备环境 准备两台纯净的服务器进行,在实验之前我们关闭防火墙和selinux systemctl stop firewalld #关闭防火墙 setenforce 0 #临时关闭selinux hosts解析(两台服务器都要去做) [rootansible-server ~]# vim /etc/hosts 10.31.162.24 ansible-ser…

【算法】利用分治思想解算法题:快排、归并、快速选择实战(C++)

1. 分治思想 介绍 分治法将问题划分成多个相互独立且相同或类似的子问题,然后递归地解决每个子问题,并将结果合并以得到原始问题的解。 分治思想通常包含以下三个步骤: 分解:将原始问题划分成多个规模较小、相互独立且类似的子…

Gradle系列之大锅菜汇总

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…

【程序员的自我修养08】精华!!!动态库的由来及其实现原理

绪论 大家好,欢迎来到【程序员的自我修养】专栏。正如其专栏名,本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度,我会尽自己最大的努力,争…

opencv003图像裁剪(应用NumPy矩阵的切片)

这一部分相对于马上要学习的二值化是要更更更简单一些的,只需三行,便能在opencv上裁剪图像啦(顺便云吸猫,太可爱了!) 出处见水印! 1、复习图像的显示 前几天期末考试,太久没有看…

QML 中自定义虚拟键盘

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 我们知道 Qt 中虚拟键盘模块遵循的是 GPL 协议,是不可用于商业发布的。如果项目中使用了 Qt 自带的虚拟键盘&#xff…

maven、springboot项目编译打包本地jar、第三方jar包

0. 引言 一般我们在maven项目中都是通过引入pom坐标的形式来引入第三方jar包,但某些场景下,第三方是直接提供的jar包文件,这就需要我们从本地引入第三方包并进行打包。所以我们今天来看下如何进行本地引入第三方包操作 1. 步骤 1、在项目下…