×

如何保证蓝牙锁的安全

消耗积分:1 | 格式:pdf | 大小:0.68 MB | 2019-03-05

guoxiansheng

分享资料个

  随着物联网科技的飞速发展,各类 IOT 设备都通过使用无线技术 BTLE; ZigBee;WIFI; 6LoWPAN 等来实现万物互联。但随之而来的安全及个人用户隐私问题也越来越敏感。所以,在这篇文章中分享一个低功耗蓝牙。智能锁的分析案例, 希望能对 IOT 安全研究起到抛砖引玉作用。

  BTLE 俗称低功耗蓝牙,比传统的蓝牙更能控制功耗和成本。因此成为当下 IOT 产品中使用非常频繁的技术。比如小米智能手环; 飞利浦的 HUE 智能灯,甚至还有羞羞的蛋蛋系列都是通过 BTLE 来完成联接的。据说 BTLE 设备的年出货量在过去15 年内增加了 1000 倍,已经达到了 30 亿的水平,在未来的 4—5 年内还将增加到 50 亿。

  不过越是流行的东西。黑客对其也越是有兴趣,通过简单的搜索便可发现不少关于 BTLE 设备安全隐患的文章,其中编号为 CVE-2013-4866 的硬编码 PIN 漏洞堪称一绝,因为它是第一个关于智能马桶的漏洞。 感兴趣的朋友可以自行了解相关信息。

  有些朋友可能会觉得仅仅是家里的智能灯或者手环被黑了,并不会造成什么特别的影响。可是有一类蓝牙智能设备的安全问题可就没这么简单了,不过在进入主题之前大家先来了解一下 BTLE 吧

  其实关于 BTLE 的基础介绍网上已经有很多了,这里只是简单介绍下想要进行测试的必备知识。BTLE 设备运行在 2.4ghz. 分为 40 个频道,每个频道 2Mhz 带宽。其中频道 37;38; 39 为广播频道,剩余的 37 个频道为数据频道。

  BTLE 定义使用了 3 种匹配模式,JustWorks;6-digit PIN **和 **Out of band。其中 JustWorks 默认使用 000000 作为 PIN 来完成匹配。这样的设计给本身不带输入方式的设备提供了便利。但同时让所有人都可以轻易以其匹配,我们的目标 DOG&BONE 智能锁使用的正是此方式。

  在匹配成功后,我们便可以通过一个独特的 UUID 对 Characteristics 进行读写操作。 从而实现不同的功能, 比如开灯/关灯等。 在格式上 UUID 又分为 Bluetooth Special Interest Group (SIG) 规范的 16bit 公有 UUID (e.g. 0000180F-0000-1000-8000-00805F9B34FB) 和厂商自定义的 128 bit 私有 UUID (e.g. 00001524-1212-EFDE-1523-785FEABCD123.

  在与 BTLE 交互的硬件方面可以说非常简单。 仅仅一个便宜的 BTLE 蓝牙 Dongle 即可。 同时大部分的手机比如 IPHONE 自带 BTLE 功能。 如果想增加收发信号范围的话还可以通过外接天线的方式达到目的。

  软件方面的选择也非常之多。 如果是 IPHONE 用户的话, 个人推荐 LightBlue. 当然想要深入的话, 则必须使用 Linux 下的开源软件, 比如 hcitool or Gatttool. 尤其是 gatttool 提供了一个非常好的交互界面。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'如何保证蓝牙锁的安全',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);