如何防止iBeacon的欺骗攻击?

6
据我所知,没有任何限制开发者使用特定的UUID、major、minor或标识符来编程他们的信标。
如果我创建了一个UUID为“foo”的iBeacon,有什么能够阻止另一个开发者创建一个具有相同ID的信标,并(无论是意外地还是恶意地)导致我的应用程序显示不正确的数据?
我是否误解了iBeacon的工作原理?如果我错了,请纠正我。
2个回答

5
这是绝对真实的。我既模拟了苹果商店的iBeacons(以证明这一点),也曾让Make杂志模拟了我的信标,用于消费电子展的寻宝游戏。
这根本不是缺陷。你只需要设计一个使用iBeacons的应用程序,使欺骗相对不重要。如果您设计您的应用程序,使其不太重要,那么谁会在乎呢?
适用于对抗此类问题的特定安全机制取决于所涉及的应用程序,但有无数种可能性。
例如,对于CES寻宝游戏,我们只需保留带有时间戳的审计日志,以便我们知道是否有人过快地找到了所有目标。最终没有人这样做 - 我们的参与者都是好运动员!

我认为,如果有足够多的人欺骗(spoof)你的信标,那么你的应用程序的质量可能会显得非常糟糕,因为它可能包含错误的信息。实际上,这变成了一个喊叫问题 - 谁喊得更大声就会被人听到 :) (部署更多信标或更强大的发射器的人)。也许你已经想出了对策,但到目前为止,我认为我的解决方案并不“优雅”。我仍然需要测试我的解决方案,看看它们的表现如何。 - Rahul Iyer
解决这个问题的一个方法是在应用程序中使用像我们公司的http://proximitykit.com这样的服务动态配置您的标识符。如果有人激烈地欺骗您的iBeacons,您可以更改标识符而无需重新发布应用程序。如果有人真的想破坏你,这可能会变成来回的过程。但是对服务器进行DDOS攻击要容易得多,因此我怀疑这永远不会超出极其罕见的范围。这对于一个破坏者来说太费力了。 - davidgyoung

1
由于没有发布通用唯一标识符(UUID),中央机构无法防止广告数据包的欺骗。uuid是随意分配给信标的,并不能保证它们实际上是唯一的,因此无法预防欺骗。
但是,一旦您将手持设备与信标配对,情况就有所不同。您可以编程信标(或者更具体地说,类似信标的设备)在配对时生成绝对惟一的信息,例如一次性密码或应用程序和配对信标之间的某些私钥加密握手。
典型的流程如下:
1. 手机检测iBeacon广播,读取UUID + Major/Minor。 2. 手机启动您的应用程序(使用didEnterRegion事件)。 3. 您的应用请求与信标配对,发送命令以生成加密响应。 4. 您的应用解密响应。如果成功,则显示一个笑脸! 如果失败,则显示一个悲伤的脸。 未来,我认为大多数信标系统都将采用这种方式实现。除非并直到iBeacon标准更新以适应加密,否则必须使用ping + pair的混合方法。

RFC 4122中,UUID(通用唯一标识符)的统一资源名称命名空间,也称为GUID(全局唯一标识符)。UUID是128位长,并且可以保证跨越空间和时间的唯一性 - zaph
您可以将相同的UUID分配给所有信标。 - Blisterpeanuts
是的,你可以在每个网站上使用相同的密码。但是,如果你没有特意分配相同的UUID,它们将是不同的。 - zaph
1
@Zaph,我认为你没有理解这里正在回答的问题。问题是如何防止欺骗攻击。答案是,你无法防止欺骗攻击,因为UUID和Mac地址可以任意更改。如果你有一种防止欺骗攻击的方法,请与我们分享,因为这将非常有用! - Blisterpeanuts
但是iBeacons只能发送数据,对吗?它们无法接收数据。因此,我不知道如何实现这种方法。 - scotru
是的,iBeacon是一个只能发射信号的设备。我所说的是一种混合设备(蓝牙智能),它可以在iBeacon模式下广播,但也可以进行双向数据传输和配对。StickNfind就是这样一种设备的例子。 - Blisterpeanuts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接