对于某些物联网设备,需要发送的数据是机密的,因此以纯文本格式发送数据是不可接受的。因此,我一直在考虑如何加密在IoT设备之间发送的数据。我最近在RFID Journal网站上阅读的一篇文章提到了NSA开发的SPECK和SIMON密码特别适合于IoT应用:


NSA正在使密码公开可用。为确保物联网(IOT)的安全性而付出的努力,其中设备正在与Internet上的其他人共享数据。

[...]

NSA研究人员开发了SIMON和SPECK,以改进已使用的分组密码算法,该算法在大多数情况下是为台式计算机或非常专业的系统设计的。


为什么我应该为我的物联网设备选择较新的算法,例如SIMON或SPECK,尤其是在功率受限的应用中(例如仅电池供电)?与其他加密系统(例如AES)相比有什么好处?

#1 楼

Beaulieu等人在“ AVR 8位微控制器上的Simon和Speck块密码”中。研究SIMON和SPECK在低端8位微控制器上的实现,并将其性能与其他密码进行比较。 Atmel ATmega128使用128 KB的可编程闪存,4 KB的SRAM和32个8位通用寄存器。

比较了三种加密实现:



RAM最小化


这些实现通过包含预展开的圆形密钥来避免
使用RAM存储圆形密钥。 >在闪存程序存储器中。没有包含用于更新此扩展密钥的密钥时间表,因此这些实现适用于密钥为静态的应用程序。




高吞吐量/ low-energy


这些实现
包括密钥调度,并在加密例程中展开足够的round函数副本
以实现大约3%的吞吐量完全展开的实施。存储在闪存中的密钥用于生成
轮密钥,随后将其存储在RAM中。



最小化闪存


这里包含了关键的时间表。
空间限制意味着我们只能对这些实现提供不完整的描述。但是,应该注意的是,前两种
实现类型已经具有非常适中的代码大小。





比较不同密码的性能使用效率度量-等级-。该等级与吞吐量除以内存使用量成正比。

SPECK在它支持的每个块和密钥大小上均排在首位。除128位块大小外,SIMON
在所有块和密钥大小中均排名第二。

...

毫不奇怪,AES-128在此平台上具有非常好的性能,尽管对于相同的块和密钥大小,SPECK的性能大约是其两倍。对于相同的密钥大小,但具有64位块大小,
SIMON和SPECK的整体性能分别是AES的两倍和四倍。


将SPECK 128/128与AES-128进行比较,作者发现SPECK的内存占用量显着减少(460字节对970字节),而吞吐量仅略有减少(171个周期) / byte与146个周期/字节)。
因此,SPECK的性能(在所选指标中)高于AES。考虑到速度与能耗有关,作者得出结论:“在能源关键型应用中,AES-128可能比该平台上的SPECK 128/128更好。”然而,作者不确定是否大量使用RAM访问(高速AES实现)是否比基于寄存器的SPECK实现更节能。无论哪种情况,都可以显着减少闪存的使用,这可能与低端微控制器有关。


如果应用程序需要高速,并且内存使用不是优先事项在具有我们所知道的128位块和密钥的所有块密码中,AES具有最快的实现(使用1912字节的闪存,432字节的RAM),成本仅为125个周期/字节。最接近AES的竞争对手是SPECK 128/128,完全展开的实施成本为138个周期/字节。由于速度与能源消耗相关,因此在能源关键型应用中,AES-128可能比该平台上的SPECK 128/128更好。但是,如果不需要128位块,正如我们可能希望在
上使用许多应用程序8位微控制器,然后是更节能的解决方案(使用628字节的闪存,108字节的RAM)是SPECK 64/128,其密钥大小与AES-128相同,加密成本仅为122个周期/字节,即SPECK
64/96的成本为118个周期/字节。



此外,此演讲中有一个Enigma人物,他可以抵抗引用该密码的密码谜?