蓝牙协议分析(11)_BLE安全机制之SM

作者:wowo 发布于:2017-9-7 19:49 分类:蓝牙

注1:此SM是Security Manager的缩写,非彼SM,大家不要理解歪了!

书接上文,我们在“蓝牙协议分析(10)_BLE安全机制之LE Encryption”中介绍了BLE安全机制中的终极武器----数据加密。不过使用这把武器有个前提,那就是双方要共同拥有一个加密key(LTK,Long Term Key)。这个key至关重要,怎么生成、怎么由通信的双方共享,关系到加密的成败。因此蓝牙协议定义了一系列的复杂机制,用于处理和加密key有关的操作,这就是SM(Security Manager)。

另外,在加密链路建立之后,通信的双方可以在该链路上共享其它的key(例如在“蓝牙协议分析(9)_BLE安全机制之LL Privacy”中提到的IRK),SM也顺便定义了相应的规范。

阅读全文>>

标签: 蓝牙 Bluetooth BLE SMP 配对 pairing 鉴权 authentication security

评论(7) 浏览(883)

蓝牙协议分析(10)_BLE安全机制之LE Encryption

作者:wowo 发布于:2017-3-28 11:52 分类:蓝牙

前面文章介绍了两种BLE的安全机制:白名单[4]和LL privacy[3]。说实话,在这危机四伏的年代,这两种“捂着脸讲话(其它人不知道是谁在讲话,因而不能插话、不能假传圣旨,但讲话的内容却听得一清二楚)”的方法,实在是小儿科。对于物联网的应用场景来说,要做到安全,就必须对传输的数据进行加密,这就是LE Encryption要完成的事情(当然,只针对面向连接的数据),具体请参考本文的介绍。

阅读全文>>

标签: 蓝牙 Bluetooth BLE 安全 Encryption

评论(13) 浏览(2894)

玩转BLE(3)_使用微信蓝牙精简协议伪造记步数据

作者:wowo 发布于:2017-3-11 11:42 分类:蓝牙

在物联网时代,有一个问题肯定会让人头疼(现在已经初露端倪了):

物联网中的IOT设备有两个主要特点:
1)简单小巧(不具备复杂的人机交互接口,需要手机等终端设备辅助完成配置、控制等功能)。
2)数量和种类繁多(消费者面对的可是数量众多的不同厂家、不同类型的设备)。

基于这两个特点,手机等终端设备一般通过APP(或APK)对IOT设备进行控制,不同厂家的不同设备,通常需要不同的APP/APK。于是出现了这样的结果:
如果你家里有一个小米yeelight的床头灯,你需要安装一个yeelight的APP/APK;
如果你手上戴一个百度智能手环,你需要安装一个百度智能手环APP/APK;
如果你跑步时戴一个xxx运动蓝牙耳机,你需要安装一个xxx运动蓝牙耳机APP/APK;
如果你要骑摩拜单车,你需要安装一个摩拜单车APP/APK;
如果你也行骑一下优拜单车,你需要安装一个优拜单车APP/APK;
……(要列的话,我觉得永远都列不完,大家可以想象一下,这是不是一个灾难??)

既然有问题,肯定就有人试图解决,于是微信IoT、阿里小智、亚马逊IoT等等,互联网大佬们就各显神通了。最终谁能称霸天下,现在还不得而知,本文也不去讨论这些。

作为蓝牙BLE的介绍文章,本文将以微信IoT的“微信蓝牙精简协议”为例,通过“把一个蓝牙适配器模拟成微信计步器”,分别从BLE技术(怎样注册一个GATT service)和微信IoT(微信物联网平台的思路和想法)两个角度,窥一窥IoT江湖的冰山一角(权当开阔眼界了)。

阅读全文>>

标签: 蓝牙 Bluetooth BLE golang 微信 airsync iot

评论(16) 浏览(3586)

蓝牙协议分析(9)_BLE安全机制之LL Privacy

作者:wowo 发布于:2016-11-25 16:28 分类:蓝牙

在上一篇文章[1]中,我们介绍了BLE的白名单机制,这是一种通过地址进行简单的访问控制的安全机制。同时我们也提到了,这种安全机制只防君子,不防小人,试想这样一种场景:

A设备表示只信任B、C、D设备,因此就把它们的地址加入到了自己的白名单中,表示只愿意和它们沟通。与此同时,E设备对它们的沟通非常感兴趣,但A对自己不信任啊,肿么办?

E眼珠子一转,想出一个坏主意:把自己的地址伪装成成B、C、D中任意一个(这个还是很容易办到的,随便扫描一下就得它们的地址了)就行了,嘿嘿嘿!

那么问题来了,怎么摆脱“小人E“的偷听呢?不着急,我们还有手段:“链路层的Privacy(隐私)机制”。

阅读全文>>

标签: 蓝牙 BLE resolvable privacy 安全

评论(23) 浏览(3356)

蓝牙协议分析(8)_BLE安全机制之白名单

作者:wowo 发布于:2016-11-10 14:20 分类:蓝牙

在万物联网的时代,安全问题将会受到非常严峻的挑战(相应地,也会获得最大的关注度),因为我们身边的每一个IOT设备,都是一个处于封印状态的天眼,随时都有被开启的危险。想想下面的场景吧:

凌晨2点,x米手环的闹钟意外启动,将你从睡梦中惊醒,然后床头的灯光忽明忽暗……

你的心率、血压、睡眠质量等信息,默默地被竞争对手收集着,并通过大数据分析你的情绪、健康等,随时准备给你致命一击……

我知道你家里有几盏灯、几台电器、几个人,知道你几点睡觉几时醒来,知道你一周做过几顿饭,甚至知道你有一个xx棒、一周使用几次、每次使用多久……

……

算了,不罗列了,有时间的话可以建个iot eyes的站点,专门收集、整理物联网安全有关的内容。这里就先言归正传。

经过前面几篇的蓝牙协议分析,我们对蓝牙(特别是蓝牙低功耗)已经有了一个比较全面的了解。随后几篇文章,我会focus在BLE的安全机制上。毕竟,知己知彼,才能攻防有度。

话说,蓝牙SIG深知物联网安全的水有多深,因此使用了大量的篇幅,定义BLE安全有关的机制,甚至可以不夸张的说,BLE协议中内容最多、最难理解的部分,非安全机制莫属。本文先从介绍最简单的----白名单机制(White list)。

阅读全文>>

标签: 蓝牙 Bluetooth BLE 白名单 white_list

评论(8) 浏览(4432)

蓝牙协议分析(7)_BLE连接有关的技术分析

作者:wowo 发布于:2016-7-1 17:17 分类:蓝牙

了解蓝牙的人都知道,在经典蓝牙中,保持连接(Connection)是一个相当消耗资源(power和带宽)的过程。特别是当没有数据传输的时候,所消耗的资源完全被浪费了。因而,对很多蓝牙设备来说(特别是功耗敏感的设备),希望在无数可传的时候,能够断开连接。但是,由于跳频(hopping)以及物理通道(Physical Channel)划分的缘故,经典蓝牙连接建立的速度实在难以忍受(要好几秒)。对那些突发的数据传输来说,几秒钟的连接延迟,简直是灾难。

因此,蓝牙SIG制订BLE规范的时候,充分考虑了这方面的需求,极大的简化了连接的建立过程,使连接速度可以达到毫秒级(最快3.75ms就可以搞定)。与此同时,为了节省功耗,也调整了跳频的策略。至此,相比广播通信而言,BLE面向连接的通信,几乎没有额外的代价。

在“蓝牙协议分析(5)_BLE广播通信相关的技术分析”中,我们对BLE的广播通信有了比较全面的了解,本文将接着分析和面向连接的通信有关的技术,包括连接的建立和断开、BLE跳频(Hopping)技术、Link Layer的应答、重传、流控、等等。

阅读全文>>

标签: 蓝牙 BLE connection 跳频 流控 hopping flow_control

评论(90) 浏览(12520)

蓝牙协议分析(6)_BLE地址类型

作者:wowo 发布于:2016-6-7 11:40 分类:蓝牙

也许关注BLE的同学都注意到了,BLE设备有多种类型的设备地址,如Public Device Address、Random Device Address、Static Device Address、Private Device Address等等。如果不了解内情,大家肯定会被它们绕晕。不过存在即合理,这样看似奇怪的设计,实际上反映了BLE的设计思路以及所针对的应用场景。让我们通过本文一窥究竟。

阅读全文>>

标签: 蓝牙 BLE public random static private resolvable address

评论(27) 浏览(10074)

蓝牙协议分析(5)_BLE广播通信相关的技术分析

作者:wowo 发布于:2016-5-27 16:15 分类:蓝牙

大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广播通信(Advertising)的支持和利用。关于广播通信,通过“玩转BLE(1)_Eddystone beacon”和“玩转BLE(2)_使用bluepy扫描BLE的广播数据”两篇文章的介绍,我们已经有了一个整体的认识。本文将依此为基础,从技术的角度,分析和理解BLE协议中有关广播通信的定义和实现。

注1:之前的蓝牙协议分析文章(如“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍”),偏向于从横向、从大而全的角度,介绍蓝牙协议,以便让大家有一个整体的认识。而从本文开始,我们会收敛到一个个的功能点上,以功能为出发点,从纵向的角度,游走于蓝牙协议的各个层次中,以加深对蓝牙协议的理解,进而达到融会贯通的目的。

阅读全文>>

标签: 蓝牙 BLE scan advertising 广播 discover connect

评论(20) 浏览(11136)

玩转BLE(2)_使用bluepy扫描BLE的广播数据

作者:wowo 发布于:2016-5-19 15:17 分类:蓝牙

在linux平台下,bluez是一个很不错的软件,提供了很多基于命令行的测试工具,如hciconfig、hcitool、hcidump、bluetoothctl等。利用这些工具,我们可以方便的测试、demo各种蓝牙功能。例如,在“玩转BLE(1)_Eddystone beacon”中,我们利用hcitool命令,演示了将手机变成一个Beacon设备的神奇效果。

Beacon的演示,从本质上看,是BLE Advertising(广播)功能的测试和验证。自然而然的,我们会好奇:怎么接收这些广播数据呢(其实就是BLE Scanning功能)?这就是本文要介绍的内容。

虽然hcitool(以及后来的bluetoothctl)可以进行简单的LE scan操作,但返回的结果仅包括简单的地址和名称,显然无法满足我们的需求(要知道,BLE的广播数据可能包含其它内容哦,如我们的Beacon演示)。怎么办呢?不着急,强大的python出马了。

阅读全文>>

标签: 蓝牙 Bluetooth BLE scan bluepy advertising

评论(5) 浏览(6923)

玩转BLE(1)_Eddystone beacon

作者:wowo 发布于:2016-4-29 22:50 分类:蓝牙

你相信两条命令就可以把自己的破手机变成一个Beacon节点吗?不相信的话就接着往下看吧。

通过前几篇“蓝牙协议分析”相关的文章,特别是“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍”,相信大家对BLE协议栈已经有了基本的认识。在继续后续的分析之前,我们有必要换个视角,从应用的角度,以“玩”的心态,学习并理解BLE的工作原理,并作为后续分析文章的引子和入口。这就是撰写“玩转BLE”系列文章的缘由。

之所以起名为“玩转”,是因为我不会在这些文章中涉及任何的技术细节,仅仅是描述一些操作步骤,普及一些蓝牙BLE有关的使用场景。

另外,由于Linux平台使用的蓝牙协议栈是Bluez[1],Bluez协议栈提供了很多方便、灵活又强大的测试工具(如hcitool、gatttool等)。因此,简单起见,在写“玩转”系列文章的时候,我会尽可能的使用这些测试工具,而不引入复杂的编程手段。从另一个角度看,“玩转”系列文章也是BLE测试的一些步骤总结,方便自己和他人查阅。

本文是“玩转”系列文章的第一篇,以简单的两条hcitool命令,将自己的手机或者开发板变成一个BLE Beacon节点,进而体会BLE技术的简洁和神奇。

阅读全文>>

标签: BLE eddystone beacon hcitool

评论(6) 浏览(6256)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog