【发布时间】:2017-01-07 21:41:02
【问题描述】:
我的目标是加密 iBeacon 数据(UUID+MajorID+MinorID:20 字节),最好包含时间戳(加密和明文),因此总计约为 31/32 字节。 正如您已经发现的那样,这超出了允许的最大 iBeacon 数据(31 个字节,包括 iBeacon 前缀和 tx 功率)。 因此,加密只能通过创建自定义信标格式而不是 iBeacon 格式来工作? 谈论加密:我会考虑使用使用 CBC 操作模式的对称密码(以避免由于重复而导致解密,最重要的是避免密文调整导致 UUID 更改,Major-/MinorID)。将IV(初始化向量)公开(未加密)不是问题,对吧? 请记住,iBeacons 在广告模式下工作(仅传输),无需事先连接,因此我无法在发送任何数据之前交换初始化向量 (IV)。 使用最合适的密码算法应该考虑哪些因素? AES-128 可以吗?有或没有填充方案?我也考虑过 AES-GCM 星座,但由于使用的广告模式,我不认为它真的有必要/适用。我应该如何交换会话令牌?此外,在我的情况下没有真正的会话,iBeacons 24/7 全天候发送数据,开放式,没有真正的连接初始化。 假设一个系统包含 100 个 iBeacon、20 个设备和 1 个应用程序。每个 iBeacon 定期(即 500 毫秒)发送数据,由附近的设备通过 BLE 接收,然后通过 udp 将数据转发给应用程序。 所以系统总览关系为:
n 个 iBeacons -(ble)- k 个设备 -(udp)- 1 个应用程序
是否可以在每个 iBeacon 上使用相同的加密密钥?如果我要使用元组(iBeacon Id / 加密密钥),我还必须将 iBeacon Id 添加到每个数据包中,从而能够在字典中查找密钥。 数据应该在设备上解密还是只在应用程序的后期才解密?
【问题讨论】:
-
你能说明你的最大数据长度吗?只允许 31 个字节,或者?
-
@Luke:iBeacon允许31字节的数据,而一般使用30字节(9(iBeacon前缀)/16(UUID)/2(MajorId)/2(MinorId)/1(TX Power ))。
-
如果您想要完全的安全性,31 个字节的使用并不多。考虑 CTR 模式而不是 CBC。
-
您没有说明接收信息的目标平台,但在 iOS 上必须提供您正在寻找的 iBeacons 的 UUID;您不能随意扫描 iBeacons。这意味着您只有 64 位来编码您的数据(主要和次要)。
-
@Luke:谢谢你的提示。
标签: encryption bluetooth-lowenergy ibeacon ads