概述
BLE蓝牙协议栈杂谈
- 蓝牙协议栈移植:
- 关于OOB:
- 关于攻击:
想写这篇文章是源于领导对我提出的一个疑问,而我从未在她想的层面上去思考蓝牙协议栈。
蓝牙协议栈移植:
问题1:你这个蓝牙协议栈是什么驱动的咧?像我们串口、can、spi、iic它们都是mcu的一种外设,相关的驱动也非常成熟,你这蓝牙BLE是什么驱动的咧?
我的第一反应是领导应该是需要通过串口或者can这些外设来驱动我这个蓝牙芯片完成空中数据收发,简单来说蓝牙类似于当个AT指令的外设。经过我几番说明:串口和can以及其他的接口都可以驱动我来完成你想要的功能啊!当然领导知道这些个方式。她明白我没明白,而我不明白她的明白。慢慢的我才知道,她想要的答案是:蓝牙协议栈就是BLE的驱动。这不是最基本的常识吗?【黑人问号脸】,我没考虑到的是她没怎么接触,也没有想过,她认为BLE就是MCU的一个外设,需要一个驱动软件驱动。当然她想的也没错,事实确实这样。我从接触蓝牙到她提出这个问题之前,也没有将BLE当作mcu的外设来思考,至今也没有这么大的想法。
问题2:供应商提供的demo里的协议栈可能不会很稳定,那只是一个demo,能用的一个状态,那咱能不能做这个驱动呢?或者说将demo里的协议栈剥离出来调试更稳定,打包成为公司的财产呢?以后无论换什么平台,咱们都用我们自己的协议栈去设配移植到其他的蓝牙芯片平台!
我…,我当时也没敢说话,我也不知道要怎么回答,我知道蓝牙射频类的上游芯片公司花几十上百w去找大佬团队设计蓝牙协议栈,我也没有证据说别人的协议栈稳定不稳定,其二对于我们这些几k月薪的软件工程师了解蓝牙核心规范所有的内容都很难,对于只有我一个做蓝牙相关的科室来说,做是肯定不可能的?但剥离出来移植是不是一个方法呢?如果拿到别人开源(拿到源码)的协议栈,我们能不能够根据物理层修改适配不同芯片平台,而上层的HCI、L2cap、GAP、GATT等无非就是软件逻辑嘛,我们都可以不用变,那是不是就是移植的一个方法呢?我还没有接触过,也没有见过类似的骚操作。这里打个问号。
有以下的思考:1. 是否各个厂家都会将芯片射频相关的硬件寄存器都开放在datasheet里面呢? 2. 是否有开源的蓝牙协议栈呢?像nxp这样的厂商会将协议栈打包成一个lib库,不开放的。 3. 移植后,适配效果如何呢? 4. 如果要做,给我搭配一个做驱动的大佬(没做过蓝牙方面的驱动软件工程师)我需要花多长时间做出来呢? 以上这些我都没有办法量化回答领导。如果领导坚持说移植这个方法是绝对可行的,我也没有很好的理由来说服领导!
各位有什么想法和建议可以大家一起讨论哦。
关于OOB:
oob对于玩蓝牙协议栈的伙伴应该都不陌生,全称是Out Of Band,中文习惯性称为:带外。
问题1:OOB一定要使用蓝牙以外的方式传输(Address、ra、Ca)吗?
一说起OOB我第一时间想到的是NFC、红外、uart、spi这些非蓝牙方式的近场传输方式,这从一定程度上增加了系统的额外成本。OOB无非就是传输三个参数嘛,我能不能直接用蓝牙传输,而这三个函数只能是对端接受的呢?事实上是很难做到的,因为蓝牙的数据是以辐射的形式发送到空中的,任何物理介质都可以捕获这个辐射,然后解码出来。也就是说一定是有第三方窃取你发射出去的oob数据。但是,如果我的oob数据是经过md5、aes或者其他的加密算法加密后发送到空中,对端用同样的加密算法以及秘钥解密出oob数据,这样就算是第三方窃取到我的密文,但没有密钥也不知道我们的加密方法,自然解密不了我的oob数据,而对端能够解密并获取oob数据,建立安全连接。那是不是既符合安全连接oob要求又降低了成本呢。非常的nice,又长见识了。
关于攻击:
关于蓝牙安全,我一直以为蓝牙协议栈已经做到很好了,比如MITM、SC、以及协商差生长期秘钥那套理论,似乎都在全方位的做了很好的安全性能,但今天我又听到了一个新名词:中继攻击。
说中继攻击针对蓝牙的,似乎不太正确,这是使用中低频的传统车钥匙的一种非常有效的攻击手法,就是当你的车是传统的中低频钥匙,并且具有无感进入功能,现在绝大多数车都具备了无感进入功能了吧,无感进入主要是检测钥匙到车段,或者车段到钥匙的中低频信号强度来进行模糊定位的,当接收到的信号强度越高就证明钥匙离车越近,当信号强度达到一定程度就认为车主就在车旁,这时车辆就要做出自动开门的策略并且一键启动少不了了,那么我说一个虚拟的案例:当你的车在你楼下,车端发出广播,你和你的钥匙在楼上22楼,我是攻击者,我站在你家楼下车旁边,我手里拿了一个信号放大器,将你的车的广播信号强度放大若干倍,让你的钥匙接受到非常强信号的广播,这是你的钥匙和你的车都会认为车主和车就是挨着的,达到了无感进入条件,那么你的车将会被盗取(当然这个虚拟案件比较笼统,但大概是这个意思)。这就是中继攻击的NB之处,只是做了一个中继器,你的车就不见了,比起传统的嗅探、伪装和篡改似乎要简单一些。
今天准甲方粑粑问了我们的蓝牙方案有没有具备了防中继攻击功能,我。。。误认为是嗅探、伪装或者篡改了。因为在此之前我真的想不到还有什么手段可以攻击的了。结果还要甲方粑粑帮着解析了一把,我可能把我们在甲方粑粑的评分成功的拉低了。但幸好的是我、我们的大佬和甲方粑粑都还没见过有蓝牙中继攻击的案例,可能也是甲方粑粑由传统钥匙展开来想到的,不过确实也是个好问题。认真的说,现在有的车厂策略会利用蓝牙广播的强度或者相位做模糊定位,或者单用蓝牙信号强度做模糊定位,采用这样的方式定位的话,面对中继攻击将会是无力回天,和传统钥匙一样的沦陷的。没有办法,蓝牙轻度它又不能加密。
最后
以上就是贪玩黑夜为你收集整理的BLE蓝牙协议栈杂谈的全部内容,希望文章能够帮你解决BLE蓝牙协议栈杂谈所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复