加密我的传感器流量有何影响?


13

考虑到典型的应用类型,即由电池供电的传感器每10分钟读取一次读数(32位值),与加密传输相比,如果我选择简单的未加密的空中协议,可能会对电池寿命产生什么影响?

假设我的数据不是特别机密,但是根据这个问题,只要实际上没有很大的设计成本,我可能就需要考虑对其进行加密。

为了简单起见,假设我使用的是nRF51822 SoC,该芯片还支持BLE堆栈和更简单的2.4 GHz协议。

由于我考虑的是商业产品应用程序,而不是一次性安装,因此加密需要大量的计算才能破解(例如,2016年云计算至少要花费500美元),而不是简单的混淆。即使访问设备固件也可以保持安全。


2
“即使访问设备固件也可以保持安全。” 意味着您要么需要使用非对称密码来进行反向计算就非常昂贵,要么需要在无法检索或无法对其进行恢复(已知的明文攻击等)的地方存储对称密钥。通常,在后一种情况下,产品的每个副本都具有唯一的密钥,因此从一个样本中进行恢复不会破坏整个系统。但这意味着您的接收器需要存储所有这些密钥。
克里斯·斯特拉顿

Answers:


8

您的大部分精力可能会花费在RF传输上,而不是花费在加密例程中的CPU周期。传输的每增加一位将比您提议的加密花费更多的功率。这意味着,如果您采取幼稚的方法(例如在CBC模式下使用AES),则可能会增加消息大小,以在每个块中携带额外的比特位。

如果确定您的企业需要对数据进行加密,请考虑在CTR模式下使用AES 生成流密码位。计数器模式适用于处理接收不可靠且数据包可能丢失的情况。您必须保持计数器同步,因此请注意,定期传输计数器的值会增加开销。而且,您必须保留一些状态字节来保存计数器,因为重复使用加密的位流可以直接导致数据恢复。


听起来很有说服力,并且对该问题采取了完全不同的解决方案,我这次对此并没有考虑太多。
肖恩·霍利哈内

2
请注意,CTR不提供数据真实性。除非您了解为什么应用程序中不考虑真实性,否则应使用经过身份验证的加密模式。
吉尔斯(Gilles)'所以

10

您可以使用多种加密方法来保护流量,每种加密方法的电源使用情况都略有不同,因此,我将选择几种流行的选择。我用来评估每种方法的方法应适用于您发现并希望进行比较的任何其他密码。

AES

AES是最流行的对称密钥加密算法之一(这意味着您使用相同的密钥进行加密和解密)。在安全性方面,AES是一个安全的选择:

最佳公开密码分析

尽管在2013年之前还没有一种算术可行的,但已公布的算术比全蛮力攻击要快。

- 维基百科

完整AES的Biclique密码分析文章描述了AES-128需要2 126.1个操作,AES-192需要2 189.7个操作,而AES-256需要2 254.4个操作才能中断。在2.9 GHz处理器上,假设每个“操作”为1个CPU周期(可能不正确),则破坏AES-128将花费很长时间。如果其中有10000个运行,它将仍然需要几乎永远的时间。因此,在这里安全性不是问题。让我们考虑一下电源方面。

本文显示(第15页),使用AES加密的块使用351 pJ。在讨论其他一些常用算法之后,我将对此进行比较。

西蒙

我之前曾问过一个有关SIMON和SPECK的问题,值得一读。SIMON擅长的地方是需要经常加密一点数据的情况。我之前链接的论文指出,SIMON 64/96对于64位使用213 pJ,当您只需要发送32位有效负载时,这非常实用。

不过,SIMON 64/96 比AES 容易破解。我链接的论文建议执行2 63.9次操作,因此我们的1万个CPU设置仅在数年内即可破解加密,而不是数百万年。

真的有关系吗?

按照您计划传输的速度,答案几乎肯定是“ 否”;加密的能耗将完全可以忽略。对于AES,您每天将使用50544 pJ,因此,便宜的,能量为2340 J的碳锌AA电池的使用寿命远远超出设备的使用寿命。如果使用SIMON重新评估计算,您会发现它的使用寿命

简而言之,除非您非常频繁地发送信号,否则收音机将不再是电源问题维基语录用电量0.01和W.如果您发送0.5 在为0.01W1秒您已经使用了更多的权力比AES整天做了

但是,对于BLE,仅依靠默认安全性就可以了。BLE默认使用AES-CCM来实现链路层安全性

低功耗蓝牙中的加密使用AES-CCM加密技术。像BR / EDR一样,LE控制器将执行加密功能。此功能使用FIPS-1971中定义的AES-128位块密码,从128位密钥和128位明文数据生成128位加密数据。

一些担心,有与BLE的实现链路层的安全性,虽然的安全漏洞; 这不是AES的缺陷;蓝牙SIG决定在4.0和4.1中推出自己的密钥交换机制。该问题现已在4.2中解决,因为现在支持椭圆曲线Hellman-Diffie。


1
“在2.9 GHz处理器上,假设每个'操作'是1个CPU周期(可能不正确)”-可能由并行处理器(如GPU)以较低的速度运行,但每个周期产生多个结果进行补偿(甚至在CPU IIRC上,您也可以在单核上实现接近1的操作/时钟]。它不会太大地改变数量级。
Maciej Piechotka '17

@MaciejPiechotka很好。正如您建议的那样,数量级不应受到太大影响,在我们正在研究的范围内,因子10仍然是微不足道的(10 ^ 33天与10 ^ 32天无关紧要很多!)。
Aurora0001

1
除非每个设备都具有唯一的密钥,否则像AES这样的对称系统会出现问题-否则,仅从一个解剖样本中获取密钥就会破坏整个系统。
克里斯·斯特拉顿

4

除非您使用硬件加速加密,否则当您拥有一个基本满足基本需求(而非加密)需求的处理器时,功耗可能会很高。但是,在大多数情况下,无论如何,使用无线电消耗的功率最多。

由于您正在专门研究蓝牙SOC,因此请考虑BGM-111,该芯片上具有硬件加速的加密功能。我玩过这款芯片,而且看起来不错,尽管我没有专门研究加密功能。

如果您要确保即使拆卸设备,也没有人能得到您的钥匙,那么这是另一条路线,也可能是“最佳”路线。它包含一个TPM芯片,例如OPTIGA TPM,它具有Linux内核支持的I2C和SPI TPM芯片。

简而言之,您将在没有特定硬件加密的情况下烧毁电池。要么用TPM芯片构建电路板,要么选择已经内置了硬件加密功能的更现代的SoC。


2
问题是建议使用2.5 GHz SoC,并每10分钟发送32位值。加密所需的计算量完全可以忽略不计。诚然,SoC似乎确实无法胜任这项任务。但是对于每10分钟32位的内存,您可以找到的最便宜的基本处理器将绰绰有余。
吉尔斯(Gillles)“所以-别再邪恶了”

3
每隔10分钟,加密所需的时间并不重要,而能量的大小却很重要。您必须查看诸如寄生负载之类的实现细节,以找出在1毫秒内完成工作的快速芯片或在500毫秒内完成工作的慢速芯片是否会在功耗上获胜,假设这两种芯片在不忙时都可以有效睡眠。硬件引擎可能比软件更好,但是为了提高能源效率-更快地完成工作是无关紧要的。
克里斯·斯特拉顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.