×

蓝牙低功耗4.2的新功能资料下载

消耗积分:2 | 格式:pdf | 大小:305.21KB | 2021-04-11

李艳

分享资料个

By Sachin Gupta & Richa Dham, Cypress Semiconductor 对于任何一个无线设备,无论是健康监测器还是付款系统,保护用户的隐私信息都是非常重要的。隐私机制可防止设备受到不可信的设备追踪。安全的通信保证了数据安全,防止未经授权的设备侵入数据导致触发系统意外操作。BLE 4.2的新功能加强了隐私和安全,解决了早期BLE的缺陷并且提高了能效。 隐私 为了保护BLE设备的隐私,受信任的BLE设备使用共享的身份解析密钥(IRK,Identity Resolving Key)生成和解析随机的可解析私有地址(RPA,Resolvable Private Address)。只有一台设备拥有另一台广播设备的IRK时,才能跟踪该广播设备的活动。 蓝牙设备在配对期间共享IRK,并将其存储在设备内置存储器中的解析列表中。因此,早前绑定的设备依然可以解析对方设备的私有地址。 蓝牙4.1中,该解析列表保存于主机并且由主机完成地址解析,也就是说每次收到RPA的广告包时,都需要主机进行干预。在蓝牙4.2中,该解析列表保存在控制器中,由控制器解析私有地址。如果设备主机使用单独的CPU,则主机不需要被唤醒即可进行蓝牙配对,从而降低了整体功耗。即使设备使用相同的CPU执行控制器和主机,因为地址不需要通过不同的协议层,减少了解析地址所需的CPU循环次数,也可降低功耗。 RPA会时刻变化,因此第三方更难以跟踪私有设备。在Privacy 1.1(蓝牙4.1)中,建议的RPA超时时间为15分钟。然而,由于Privacy1.1对连接和功耗有一定影响,因此它的使用非常有限。此外,由于Privacy 1.1不支持地址在链路层解析,因此在使用RPA时不能实现设备过滤和定向连接广播(DCA)之类的功能。 蓝牙4.2中Privacy 1.2允许的RPA超时时间可以为1秒到11.5小时。因为BLE 4.2支持在链路层解析地址,故可使用DCA加速设备之间的连接并降低功耗。 被动窃听 为了防止未经授权访问通信,无线系统必须防止被动窃听和中间人(MITM)攻击。被动窃听是指第三台设备偷偷地窃听两个设备(见图2)之间的私有通信。对于支付解决方案这样的信息保密性(比如密码)极其重要的应用来说,防止被动窃听是非常重要的。 图1:在被动窃听攻击中,第三台设备偷偷窃听两个设备之间的通信。 通过使用密钥对数据进行加密,系统可以防止被动窃听。蓝牙低功耗4.2引入LE安全连接,采用符合联邦信息处理标准(FIPS)的DCTH (Elliptic Curve Diffie-Hellman)算法生成密钥。该密钥用于生成其它密钥,如长期密钥和DH密钥,但其本身从不通过无线电共享。由于DH密钥从不通过无线电交换,因此第三方设备很难猜出加密密钥。在蓝牙低功耗早期版本(蓝牙4.1或更老版本)中,设备采用的是非常容易猜测到的临时密钥(TK)对连接进行首次加密,此后的长期密钥和其他密钥都会在这个不太安全的连接上进行。 中间人 MITM是指当两个设备尝试彼此通信时,第三设备插入到两者之间并伪装成对方设备(参见图1)。通过认证可以确保系统所通信的设备是其实际预期的设备,而不是伪装的非授权设备。 图2:在中间人攻击中,第三台设备插入两台设备的连接之中,并且使通讯的两端认为他们是在与对方直接对话。 在蓝牙通信中,两台设备使用关联模型实现相互验证,然后安全地交换数据。蓝牙配对是一个密钥交换的过程;但是,交换密钥之前,这两个设备必须共享包括认证要求在内的配对参数。而为了实现认证,两台设备必须使用某种关联模型进行相互验证。模型的选择基于三个参数: a. 是否需要MITM防护 b. 该设备是否可以从用户接收数据(例如按钮或键盘输入)或是否可以向用户输出数据(例如LCD显示6位十进制数)。将用户纳入到配对处理是数据安全传输的一个重要因素 c. 该设备是否能够进行频带外(OOB)通信。例如,如果部分安全密钥可以在两个设备之间通过近场通讯(NFC)沟通,那么窃听者就无法理解最终的数据意义。 BLE 4.2有四个关联模型可供选择: 数值比较-两台待匹配设备均显示六位数字,如果两个数字相同,那么用户在设备上选择“是”即可通过验证。蓝牙4.2 低功耗安全连接引入了这种关联模型。在传统配对(蓝牙低功耗4.1或更老的版本)中,这些IO功能实现的是“即刻运行”关联模型(无验证)。 密钥输入-用户在两台设备中输入相同的密钥,或其中一台设备显示密钥,用户在另一台设备输入相同的密钥。在传统密钥输入(蓝牙4.1或更老的版本)中,整个密钥以简单的单次确认即可进入交换;而蓝牙4.2中,一次交换一位密钥,安全性有了很大提高。这种逐位公布保证了在协议的配对程序失败之前,未猜测到的密钥泄露不超过2位。 非蓝牙传输(OOB)-OOB关联模型适用于双方设备中至少有一个具有OOB能力、能够加密信息进行频带外交换的情况。此时,MITM防护取决于用于共享信息的OOB协议对MITM的抵抗力。在传统配对(BLE 4.1或更老的版本)中,两个设备都需要具有OOB能力才能使用OOB关联模型。 即刻运行-在不需要MITM保护或者设备具有表1中提到的IO能力的时候,采用这种关联模型。 表1显示了不同IO情况下在LE安全连接配对时能够使用的关联模型。但是,如果不需要MITM保护或其中某台BLE设备具有OOB功能时, 可以忽略IO。 表1:关联模型的选择取决于设备的I/O支持如何。 蓝牙低功耗4.2提供三个支持MITM防护的关联模型以及一个针对无需MITM防护应用的模型。4.1以及更老的BLE版本不支持数值关联模型;如果OOB数据也不可用,则只能使用密钥输入关联模型进行验证配对。而密钥关联模型需要键盘实现密钥输入,这一点在许多系统中无法实现,限制了MITM防护的应用。但是,只要显示能够实现是/否选项时,可以使用数值比较模型,为更多的应用提供MITM保护。 配对 配对是密钥交换和认证的过程。根据不同的蓝牙低功耗版本,有两种取决于的配对类型:LE安全连接(蓝牙4.2新增)和LE传统配对(蓝牙4.0以后的版本支持)。与之前的版本相比,LE安全连接提供了显著的改善。 蓝牙低功耗的配对分为三个阶段。在第一阶段,设备交换其配对参数,其是能够确定合适关联模型的能力和安全要求。配对参数包括各种字段,如图3。 图3:BLE 4.2配对第一阶段交换的配对参数 LE安全连接采用符合联邦信息处理标准(FIPS)的ECDH算法,能够在没有防护的信道中建立安全的共享密钥。使用ECDH形式是P-256,这意味着设备生成的私有密钥长度为256位(或32字节)。 执行ECDH算法之前,两个设备必须确定一组特定的域参数。在LE安全连接中,因为两台待连接设备都FIP的SP-256 ECDH机制,因此都知道一个默认的参数。随后,两台设备各生成一对密钥,一个称为私有密钥,该设备不会通过无线电进行共享或发送;另一个称为公共密钥,由设备密钥和一个发生器函数(域参数的一部分)产生。 随后,两台设备都将自己的公共密钥发送给对方设备。使用这个接收到的公共密钥、自己的公共密钥以及自己的私有密钥,两台设备都能够生成一个共享密钥。注意,被动窃听者只能获取设备之间交换的公共密钥,但没有双方的私有密钥,因此不能产生用于进一步加密的共享密钥。通过这种方式,ECDH能够在不安全的通道上生成共享密钥并对连接进行加密。 图4显示了在有第三设备窃听的情况下,两台设备是如何建立共享密钥的。 图4:当有第三设备窃听时,两台设备正在建立共享密钥 在第2阶段中,ECDH密钥生成后将公共密钥分享给可信的设备并建立加密连接。为确保与设备进行通信的设备是预期的设备,需要使用关联模型进行认证。该设备根据ECDH算法的共享密钥生成一个长期密钥(LTK)并继续进行第二阶段的认证检查,包括检查DH密钥。 在第3阶段,使用长期密钥来对连接进行加密。一旦连接被加密,密钥就可以通过配对参数中的启动器密钥分配/应答器密钥分配标志进行共享(例如,如果采用RPA,则需要IRK)。 数据签名 数据签名是另一个能够帮助增加安全级别的BLE功能。在没有使用加密时,BLE可以使用连接签名解析密钥(CSRK,Connection Signature Resolving Key)对数据进行认证。签名是由签名算法和计数器产生的。计数器随各数据PDU递增,以避免任何重放攻击。请注意,数据签名并非用来防护被动窃听,而是为接收设备验证数据源的真实性。 蓝牙低功耗4.2提供了强大的安全机制以确保安全的无线连接系统。尽管BLE 4.1和4.2都提供了MITM防护功能,但只有蓝牙4.2能够实现真正安全的BLE系统。当使用蓝牙4.1 的LE传统配对时,只有OOB关联模型提供了被动窃听的防护;而蓝牙4.2还提供数值比较关联模型和ECDH算法以确保隐私和数据安全。  (mbbeetchina)

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

评论(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);