Encryption iBeacon数据加密(广告模式)

Encryption iBeacon数据加密(广告模式),encryption,bluetooth-lowenergy,ibeacon,ads,Encryption,Bluetooth Lowenergy,Ibeacon,Ads,我的目标是加密iBeacon数据(UUID+MajorID+MinorID:20字节),最好包含一个时间戳(加密和普通),因此总计约31/32字节。 正如您已经发现的,这超过了允许的最大iBeacon数据(31字节,包括iBeacon前缀和发送功率)。 因此,加密只能通过创建自定义信标格式而不是iBeacon格式来工作? 谈到加密:我会考虑使用CBC操作模式使用对称密码(避免由于重复而进行解密,最重要的是避免密码文本调整导致UUID、MARGER-/MinorID发生变化)。将IV(初始化向量)

我的目标是加密iBeacon数据(UUID+MajorID+MinorID:20字节),最好包含一个时间戳(加密和普通),因此总计约31/32字节。 正如您已经发现的,这超过了允许的最大iBeacon数据(31字节,包括iBeacon前缀和发送功率)。 因此,加密只能通过创建自定义信标格式而不是iBeacon格式来工作? 谈到加密:我会考虑使用CBC操作模式使用对称密码(避免由于重复而进行解密,最重要的是避免密码文本调整导致UUID、MARGER-/MinorID发生变化)。将IV(初始化向量)公开(未加密)不是问题,对吗? 请记住,iBeacons在广告模式下工作(仅传输),没有事先连接到,因此在发送任何数据之前,我无法交换初始化向量(IV)。 使用最合适的密码算法应考虑哪些因素?AES-128可以吗?有无填充方案?我还考虑了AES-GCM星座,但我不认为这是真正必要的/适用的,因为使用了广告模式。我应该如何交换会话令牌?此外,在我的例子中没有真正的会话,iBeacons 24/7开放式发送数据,没有连接的真正初始化。 假设一个系统包含100个iBeacon、20个设备和一个应用程序。每个iBeacon定期(即500毫秒)发送数据,由附近的设备通过BLE接收,这些设备通过udp将数据转发给应用程序。 因此,系统概述关系为:

n iBeacons-(ble)-k设备-(udp)-1应用程序

在每个iBeacon上使用相同的加密密钥是否可以接受?如果我使用元组(iBeacon Id/加密密钥),我还必须将iBeacon Id添加到每个数据包中,从而能够在字典中查找密钥。 数据应该在设备上解密还是只在应用程序中解密

你可以看看谷歌是如何解决类似问题的

我不是你提出的所有问题的专家,但我认为谷歌为你的第一个问题提供了一个很好的解决方案:你如何让加密的有效负载适应信标数据包可用的少量字节?

他们的答案是:你没有。他们通过截断加密的有效负载来生成哈希,然后使用在线服务来“解析”此哈希,并查看它是否与你的任何信标匹配来解决此问题。在线服务只是对您注册的每个信标执行相同的哈希算法,并查看它在该时间段内是否得到相同的值。如果是这样,它可以将加密的哈希标识符转换为有用的哈希标识符


在使用这种方法之前,请务必考虑@ PALW11在IOS设备上的点,您必须知道前面的16字节iBeaCon uuID或操作系统阻止您读取其余的数据包。因此,如果使用iBeacon,您可能必须坚持使用Android平台,或者切换到在iOS上没有此限制的类似格式。

感谢您的精彩帖子,我以前没有听说过Eddystone规范,它确实值得研究,最大有效负载长度为31字节,就像iBeacon一样。本文中写到,一般来说,它是时间戳值的加密(从预定义的历元开始)。我的处理步骤正确吗

  • 为每个信标定义密钥(EIK),并与另一个解析器或服务器共享这些密钥(如果存在没有在线资源的星座)
  • 使用PRF(如AES CTR)在服务器上创建查找表
  • 使用PRF(即AES CTR?)加密信标上的时间戳,并以Eddystone格式向解析器/服务器发送数据
  • 服务器将收到的密文与查找表中的条目进行比较,从而了解信标id,因为每个信标都有一个唯一的密钥,这将导致不同的密文
  • 与AES-EAX的工作方式相同吗?我只需要在算法中输入一个IV(nonce值)以及密钥和消息?另一端将构建相同的元组来比较密文和标记'
  • 问题:IRK(身份解析密钥)是什么?AES CTR将使用哪个临时值?每个信标会使用相同的时值吗?解析程序/服务器也必须知道它。
    时间同步呢?信标和解析器/服务器之间没有真正的连接,但是否假定两端都与同一时间服务器同步?或者,如果一个终端在2011年工作,而解析器在2017年到达,那么beacon和resolver/server应该如何获得相同的密文?

    您能否澄清您的最大数据长度?只允许31个字节,或者?@Luke:iBeacon允许31个字节的数据,而通常使用30个字节(9(iBeacon前缀)/16(UUID)/2(MajorId)/2(MinorId)/1(TX-Power))。如果你想要完全的安全性,31个字节不太好用。考虑CTR模式,而不是CBC。你不说你的目标是什么平台来接收信息,但是在IOS上,你要寻找的iBiac的UUID必须被提供;您不能随意扫描iBeacons。这意味着你只有64位来编码你的数据(大调和小调)。@Luke:谢谢你的提示。