部分文字来自: http://finance.qq.com/a/20140311/014852.htm
“卖酒小店NE向您告知,今天的葡萄酒有优惠奥。请来逛逛吧。”
一走进购物中心,iPhone就收到了这家购物中心里一家卖酒店铺的特价信息。
来到这家店的葡萄酒货架前,智能手机的屏幕上又蹦出了“推荐智利产葡萄酒”的字样。把手伸向推荐的葡萄酒,iPhone上又收到了这瓶酒的详细信息。
如今,走在时代前沿的店铺已经推出了这样的服务,苹果设在美国的直营店“Apple Store”就是其中之一。当顾客靠近iPhone的展台时,终端的屏幕上将会显示消息,引导顾客听取新款iPhone的介绍。日本的涩谷PARCO也推出了在顾客进门时,向iPhone的App推送优惠券的服务。
这些服务的相同之处是都利用了“iBeacon”,能以高精度确定用户位置,发送特定信息。iBeacon是苹果2013年9月发布的移动产品OS“iOS7”配备的新功能。
活用BLE
图1:向周围通知ID iBeacon采用的模式是利用可发送BLE通告数据包的设备,发送独特的ID,智能手机的App在接收到ID后进行相应的操作(a)。用途主要是在商店等场所用发放优惠券,嵌入家电后还可以发送错误信息(b)。 |
iBeacon的核心,是配备“低功耗蓝牙(BLE)”通信功能的装置。该装置利用BLE向周围发送ID,接收到ID的App会根据ID做出反应。例如,在店内设置用来发送iBeacon的ID的通信模块(以下称作“Beacon模块”)后,iPhone和iPad就会收到ID信息,在ID的触发下,与ID挂钩的App就会接收到来自服务器的信息(图1(a))。前面提到的Apple Store和涩谷PARCO也是利用这个原理推送信息和优惠券的。
除了按照位置提供服务之外,在家电发生故障或停止运转时,也可以通过发送iBeacon信息,向App通知家电出现了故障(注1)。日本Aplix IP Holdings公司就试制了在市售的加湿器中嵌入了支持iBeacon的模块、在水量耗尽后使用iBeacon发出通知的系统,并在“TFM&A 2014”(东京有明国际会展中心,2014年1月29~30日)上进行了展示(图1(b))。
用苹果的自主标准实现
iBeacon利用的是BLE的广播帧“通告帧”(Advertising)。通告帧由配备BLE的设备定期发出,只要是支持BLE的终端,都可以接收到信号。通告帧的有效载荷部分,写入了由苹果定义的数据。
iBeacon的数据大致由四部分信息组成:(1)UUID(universally unique identifier)、(2)Major、(3)Minor,以及(4)Measured Power(图2)。
图2:iBeacon是UUID与Major、Minor的组合 iBeacon的帧由显示企业和组织的UUID与Major、Minor组合而成(a,b)。1米处的信号强度也包含在iBeacon中发送,可用来计算位置信息。 |
(1)UUID是用来识别设置Beacon模块的企业的128位识别码。识别码并非由苹果定义,而是直接采用“ISO/IEC11578:1996”的标准。UUID包括Version 1~5五种。
Version 1由MAC地址、UUID生成的日期等组成。因为MAC地址唯一,所以可以确保UUID的独特性。
Version 2是以MAC地址和生成时间为基础,利用POSIX*的UID*和GID*等生成的数据。
*POSIX:portable operating system interface(可移植操作系统接口)。为了在不同的OS上设置相同的API、方便开发可移植性强的App软件而制定的App接口标准。国际标准的名称为ISO/IEC 9945。
*GID:group identifier,组标识。用来区分用户群组的识别码。
Version 3的基础是通过MD5函数输出的哈希值,表示URL和邮件地址等唯一命名空间。Version 4是随机数。Version 5与Version 3基本相同,使用的是SHA-1的散列函数。
(2)Major与(3)Minor由iBeacon的发送者自由设置,均为16位识别码。(4)Measured Power是iBeacon的发送模块与接收器之间距离为1米时信号强度(RSSI:received signal strength indicator)的参照值。接收器根据作为参照的RSSI和接收信号的强度,推测发送模块与接收器之间的距离。
UUID决定对应哪款App
使用iBeacon的前提条件,是用户开启支持BLE的iOS终端的蓝牙功能,并开启位置信息服务(注1)、(注2)。而且,接收UUID的App如果不在后台运行,就接收不到UUID。iOS在接收到iBeacon后,会将UUID告知使用iBeacon的App。在UUID的触发下,App会进入下一步处理(注3)。
(注1)支持BLE的iOS终端包括iPhone 4s之后的iPhone以及2012年3月上市的第三代iPad之后的iPad。
(注2)iBeacon虽然由苹果制定,但数据格式和工作原理已经公开,支持BLE的Android终端只要能够解读iBeacon,也可以实现相同的功能。现在已经有多家公司免费提供帮助Android接收iBeacon的帧数据、并进行解读的软件库。
(注3)因为是UUID服务的识别码,所以必须具备独特性。但也存在服务提供者不使用随机数产生程序和散列函数,随意设置“000000……”的情况。在这样的情况下,即使服务不同,UUID也有可能一致,无法对服务进行准确判断。
Major与Minor是App内部使用的数值。举例来说,连锁店使用iBeacon时,可以在Major中输入区域信息,在Minor中输入门店的ID等。在家电产品中嵌入Beacon模块时,如果把Major作为与产品型号挂钩的序号,把Minor作为错误代码,就可以向外部通知故障情况。
将距离分为三级
至于剩下的Measured Power,则是iOS用来向App传送距离的。有意思的是,向iOS发送的距离并不是精密推算的,而是将其分为约10厘米(immediate)、1米以内(near)、1米以外(far)的三级(图3)。这是因为,发送与接受设备之间的距离在1米之内时,RSSI值基本是按照理论值减少的,而在1米以外,受到反射波的影响,RSSI不会减少,而是会上下波动。也就是说,1米以外的距离无法推测,只能用“far”来概括。
图3:距离模块越远,误差越大 当距离约为1米时,根据实测值推测的模块距离与理论值基本一致,距离增大后误差变大,无法定位。因此,iOS把1米以内叫作near,1米以外叫作far,以此来区分距离,并且把10厘米以内定义为immediate。(图:《日经电子》根据Aplix的数据制作) |
即使较为粗略,也大致可以判断当immediate时代表商品就在眼前,near代表身处货架附近,far代表在店门附近或是在外面等。
未考虑安全问题
从上述原理可知,iBeacon其实没有考虑安全性。iBeacon的格式基本是公开的,得到实际发送的iBeacon中包含的数据也轻而易举。也就是说,很简单就能制作出与正规模块发送相同信息的假冒Beacon模块(图4)。而且,接收到假冒Beacon模块发送的iBeacon信息的iOS终端无法判断真伪。
图4:iBeacon存在隐患 iBeacon几乎没有考虑安全性。比如,作为通告帧发送的iBeacon的内容可能直接被复制,从其他设备原封不动地发出。 |
因此,不法分子有可能钻商店积分服务的空子,利用假冒模块,发送与积分服务相同的信标,在不用到商店去的情况下,无限制地获得来店积分。
因此,现在已经出现了填补iBeacon安全漏洞的服务,采用的方式包括,在iBeacon以外的通告帧中添加iBeacon的认证信息并发送、利用信息进行认证的方式,利用接收到的iBeacon的位置信息进行认证的方式,以及直接向发送iBeacon的设备传输验证数据包进行认证的方式。
支付需要用其他手段
顺便一提,虽说现在能看到“可以使用iBeacon支付”的字样,但从前面介绍的原理可以看出,单靠iBeacon其实是不能支付的。iBeacon能够做到的,只是根据UUID、Major、Minor等信息,判断支付对象是哪家商店,并当场显示出准确的支付画面。实际支付还需使用NFC、贝宝等其他手段。(作者:中道 理,日经技术在线!供稿)
如果需要iBeacon基站开发, 这里有或很快就有 http://amomcu.taobao.com/ , 这里能提供基于 cc2540 或 cc2541 基站开发的详细硬件和软件资料, QQ2045315160