×

蓝牙4.2与隐私保护资料下载

消耗积分:3 | 格式:pdf | 大小:123.96KB | 2021-04-24

张国厚

分享资料个

在本系列文章的,我们讨论了蓝牙低功耗(BLE)4.2的数据长度扩展(DLE)和低功耗。在本文中,我们将讨论蓝牙低功耗的隐私保护功能、蓝牙4.2的新增功能以及为何这些变化能够使BLE设备更加保护隐私和节能。 隐私保护是BLE设备防止被不受信任的设备追踪的能力。BLE设备在广播数据包内使用48比特地址,如果该地址被其他设备解码了,那么根据这个地址就可以跟踪该BLE设备的移动。为了保护BLE设备的隐私,受信任的BLE设备将使用共享密钥“身份解析密钥”(Identity Resolving Key, IRK)的共享密钥。两个具有此共享密钥的BLE设备可以相互识别。一台BLE设备先利用该共享密钥生成一个随机的“可解析私有地址”发送出来,另一台设备则采用同一密钥来解析该私有地址。   蓝牙设备地址   蓝牙设备使用48比特的设备地址。设备地址被分类为:   • 公有设备地址   • 随机设备地址   1. 公有设备地址:公有设备地址由每台设备的公司ID和公司分配ID组成,遵循IEEE 802-2001标准。公司ID和公司分配ID值均为24比特,构成总数为48比特的地址,如图1所示。 图1:公有设备地址  2. 随机设备地址:顾名思义,随机设备地址是随机生成的地址。随机设备地址分为两种类型:   • 静态随机地址   • 私有随机地址   2.1 静态随机地址:静态随机地址可以是出厂前在设备上预先设定好的,也可以在每次开关机循环后更改一个新值。然而,只有设备经过一次完整的开关机循环后才可以更改此地址。如果在运行期间更改了该地址,存储在对端设备中的地址将失效,并且将不可再使用旧地址进行重新连接。静态随机地址有以下要求:   • 两个最高有效位恒为1   • 所有随机位数值都不能为0   • 所有随机位数值都不能为1 图2:静态随机地址    私有随机地址分两种类型 - 不可解析私有地址和可解析私有地址。   2.1.1不可解析的私有地址:不可解析的私有地址随机生成,并且每次连接都会发生变化。不可解析的私有地址有以下要求:   • 两个最高有效位恒为0   • 所有随机位数值都不能为0   • 所有随机位数值都不能为1   该地址不能和静态地址或公有地址相同。   2.1.2可解析私有地址(RPA)   可解析私有地址(RPA)是BLE设备隐私保护的重要支柱。RPA是指使用随机数字和身份解析密钥(IRK)所生成的地址。两个设备在配对期间共享IRK,其存储在设备的内置存储器中。两台配对设备除了共享IRK之外,还共享一个称为身份地址的固定地址。该身份地址可以是公有的或是随机的静态地址类型。因较早进行绑定的设备存有IRK和身份地址,因此能够解析配对设备的私有地址。图3所示为可解析私有地址的格式。   在RPA中,24比特的Hash是IRK和prand的函数。Prand是24比特的数字,它包含22个随机位数值以及2个固定的最高有效位数值;如图3所示。   图3:可解析私有地址 可解析私有地址的生成:可解析私有地址是与IRK和prand共同生成的。   Prand是随机生成的,有以下要求:   • prand的两个最高有效位数值应等于2b01   • prand的所有位元数值都不能为0   • prand的所有位元数值都不能为1   地址中的Hash部分则是利用prand和设备的128位IRK传递到加密函数“e”生成。此加密函数的输出截断为24个最低有效位数值,就是Hash数值。   Hash=e(IRK,prand *),截断为24位   *为了使prand的长度与IRK相同,prand增加了104位数值为0的空白位,确保原有的最低有效位保持不变。   24比特prand和24比特Hash组合生成随机地址。   可解析私有地址的解析: B设备如果具有A设备的IRK,则可以解析该A设备的可解析私有地址。可解析私有地址有24位的prand和24位的Hash。B设备通过A设备的prand和IRK来解析地址。当B设备接收到A设备的可解析私有地址后,会从该地址提取出Hash和prand,利用其生成本地Hash值。本地Hash的生成方式与在地址生成期间的方式完全相同。   本地Hash= e(A设备IRK、prand),截断为24位   如果B设备生成的本地Hash值与从地址中提取的A设备 Hash值匹配,则该地址被成功解析。如果B设备有一个以上对端的IRK,则该设备将为每个存储的IRK重复这一步骤,以确定接收到的可解析私有地址是否与存储的某一个IRK相关,直到IRK中某一个地址匹配成功或者所有地址匹配结束。   B设备在配对过程中收到对端设备的IRK和身份地址后,会将其与本地IRK一起存储在待解析列表中,用于将来解析私有地址。   在蓝牙4.1中,该解析列表保存在主机上,由主机完成地址解析,这意味着在每次收到附有可解析私有地址的广播包时,都需要主机参与解析地址。但在蓝牙4.2中,该解析列表保存在控制器中,由控制器解析私有地址,无需主机干预;而如果主机使用单独的CPU控制,则意味着不需要唤醒设备中的主机,从而降低了整体功耗。即使对于使用相同的CPU执行控制器和主机的设备,因为地址不再需要通过不同的协议层,也可以通过减少解析地址所需的CPU循环次数而降低功耗。此外,在没有主机参与的情况下,地址在链路层解析,可提供更快的连接。当在链路层完成地址解析时,Privacy 1.2也被称为链路层(LL)隐私。 可解析私有地址(RPA)超时   随机私有地址每隔一段时间自动更新,进一步降低了设备被跟踪的可能性。该时间间隔由主机设置,为RPA超时设置计时。当计时过期时,IRK和新的prand将会生成新的RPA。对于Privacy 1.1,RPA的超时时间固定为15分钟。蓝牙4.2中的Privacy 1.2将最小RPA超时时间减少为1秒,而最大超时时间可以为11.5小时。蓝牙4.2中RPA不断变化,私有设备难以被跟踪,从而提高了隐私性。   虽然蓝牙4.1和更旧的版本支持可解析私有地址,但由于对连接时间的影响和功耗的影响限制了可用性。在使用RPA时,不能在Privacy1.1中使用诸如设备过滤和定向连接广播这样的功能。   设备过滤   设备过滤是指减少其需要响应的同类设备数量,有助于减少功耗。设备在过滤功能启用时需要响应的那些同类设备地址和地址类型,存储在白名单中。该白名单由主机配置并保持在链路层。配置完成后,链路层用其来过滤对等设备。由于在蓝牙4.1中使用RPA时地址只能由主机解析,因此链路层不能过滤该设备。因此,对于蓝牙4.1,当使用RPA时不支持设备过滤。由于设备需响应每个对端设备,因此增加了私有蓝牙4.1设备的功耗。   在蓝牙4.2中,由于地址解析在链路层完成,即使使用RPA仍然可以过滤设备。现在,不在白名单上的设备不需要主机干预,因此降低了功耗。   定向连接广播   该定向连接广播PDU包含传播器的RPA,也包括想要连接至的设备RPA。这使得两个设备之间的连接变得更快。此外,辅助设备不需要与不打算连接的对等设备共享设备的具体详细信息。当基于蓝牙4.1的中央设备使用具备过滤隐私功能的设备时,定向连接广播不可用,因为其不能在链路层解析地址。然而,蓝牙4.2支持在链路层解析地址,因此支持定向广播连接。蓝牙4.2包括附加扫描过滤器政策设置,允许带可解析私有地址的定向广播。在辅助设备采用定向连接广播之前,必须检查对等设备的中央地址解析特性。中央地址解析特性告知设备对等设备是否支持地址解析。

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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//m.obk20.com/www/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:'蓝牙4.2与隐私保护资料下载',//标题 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:"https://www.elecfans.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);