博客
关于我
BLE安全机制从入门到放弃
阅读量:263 次
发布时间:2019-03-01

本文共 1474 字,大约阅读时间需要 4 分钟。

蓝牙低能耗(BLE)安全机制从入门到深入理解

作为一个刚入行的工程师,我对蓝牙低能耗(BLE)安全机制的了解最初是零,但通过深入研究,我逐渐掌握了BLE 4.0和BLE 4.2的核心安全机制。以下是我在学习过程中的思考和总结。

一、信息安全基础

在深入研究BLE安全机制之前,我首先回顾了信息安全的基础知识。信息安全面临的主要威胁包括窃听、篡改和伪装。为了应对这些威胁,信息安全需要具备机密性、一致性和认证性。

密码技术概述
  • 对称密码:使用相同的密钥进行加密和解密,适用于防止窃听,但需解决密钥配送问题。
  • Diffie-Hellman密钥交换算法:通过数学难题协商共享密钥,解决对称密码的密钥配送问题。
  • 椭圆曲线Diffie-Hellman密钥交换算法(ECDH):利用椭圆曲线加密,提升密钥安全性。
  • 消息认证码(MAC):用于信息一致性和身份认证,防止篡改和伪装。
  • 认证加密(CCM):结合加密和认证技术,提供更强的安全性。
  • 二、BLE安全机制入门

    BLE设备在通信过程中分为主机角色(Master)和从机角色(Slave)。通信过程经历连接、配对、明文传输和密文传输等阶段。

    BLE通信阶段
  • 连接阶段:主机发起连接,设备进入扫描或广播状态。
  • 配对阶段:通过配对码(TK)生成会话密钥(sessionKey)和随机数(IV),用于CCM认证加密。
  • 明文传输阶段:使用CCM加密数据包。
  • 密文传输阶段:使用生成的密钥加密数据包。
  • 绑定阶段:通过长期密钥(LTK)优化后续通信。
  • BLE安全机制的关键点
    • 配对码(TK):用于加密和认证,需妥善管理以防泄露。
    • CCM(计数器与CBC-MAC):结合加密和认证,保障数据完整性和来源认证。
    • 配对阶段:输出临时密钥(STK)和长期密钥(LTK),提升后续通信安全性。

    三、BLE 4.0安全机制详解

    BLE 4.0的安全机制
  • 配对阶段:使用STK生成sessionKey和IV,用于CCM认证加密。
  • 绑定阶段:从机发送LTK给主机,优化后续通信。
  • 动态配对码:通过Passkey模式,确保配对码的安全性。
  • BLE 4.0的安全漏洞
    • 静态配对码容易被破解,需谨慎管理。
    • 配对阶段的STK和LTK易被窃听,需加强保护。

    四、BLE 4.2安全机制的改进

    为了解决BLE 4.0的安全漏洞,BLE 4.2引入了动态配对码和ECDH算法。

    BLE 4.2的改进措施
  • 动态配对码:每次配对生成不同的配对码,增强安全性。
  • ECDH算法:通过椭圆曲线加密,增强密钥的安全性。
  • 直接生成LTK:减少对STK的依赖,提升安全性。
  • BLE 4.2的优势
    • 动态配对码避免了静态配对码的安全问题。
    • ECDH加密确保了配对阶段的安全性。
    • 直接生成LTK减少了窃听风险。

    五、实际应用中的注意事项

  • 密钥管理:妥善管理配对码和长期密钥,防止泄露。
  • 认证强度:确保认证密钥的安全性,避免逆向推算。
  • 协议版本选择:根据实际需求选择适合的协议版本(如BLE 4.2)。
  • 六、总结与展望

    通过对BLE 4.0和BLE 4.2的学习,我认识到信息安全是多层次的,需要结合密码技术和协议规范来保障数据传输的安全。未来,我计划深入研究BLE的核心规范和实际应用案例,以提升我的专业能力。

    参考资料

  • 《图解密码技术》
  • BLE配对过程详解
  • BLE核心规范
  • Hash算法总结
  • 穷举法破解BLE的TK值
  • 本文作者:Jayden Huang

    本文链接:https://jaydenh215.github.io/2019/05/14/BLE安全机制从入门到放弃/

    转载地址:http://bpex.baihongyu.com/

    你可能感兴趣的文章
    Python:将列表与范围列表合并
    查看>>
    Python:将列表列表初始化为一定大小,
    查看>>
    Python:带有生成器的给定集合的幂集
    查看>>
    Python:按字符的位置拆分字符串
    查看>>
    Python:替换嵌套字典中的值
    查看>>
    Python:爬取数据出现response.status_code为403解决方法
    查看>>
    Python:爬取数据出现response.status_code为418解决方法
    查看>>
    Python:生成“元组集“;来自“元组列表“;不考虑顺序
    查看>>
    Python:生成具有趋势的随机时间序列数据(例如周期性、指数衰减等)
    查看>>
    Python:用渐进式数字重命名列表中的重复项而不对列表进行排序
    查看>>
    Python:矩形参数无效
    查看>>
    Python:语法进阶
    查看>>
    Python:调用复制函数时调用 Python 对象时超出了最大递归深度
    查看>>
    Python:这两个 import 语句有什么区别?
    查看>>
    Python:通过串口从 Velleman k8090 读取数据
    查看>>
    python:遍历具有列表值的字典
    查看>>
    Python:降低精度 pandas 时间戳数据帧
    查看>>
    python:非阻塞子进程,检查标准输出
    查看>>
    PythonABC多重继承
    查看>>
    Pythonargparse中的多个参数
    查看>>