Beaulieu等人在“ AVR 8位微控制器上的Simon和Speck块密码”中 。研究SIMON和SPECK在低端8位微控制器上的实现,并将其性能与其他密码进行比较。Atmel ATmega128使用128 KB的可编程闪存,4 KB的SRAM和32个8位通用寄存器。
比较了三种加密实现:
- 最小化RAM
这些实现通过在闪存程序存储器中包括预展开的圆形密钥来避免使用RAM存储圆形密钥。不包含用于更新此扩展密钥的密钥时间表,从而使这些实现适用于密钥为静态的应用程序。
- 高通量/低能耗
这些实现包括密钥计划,并在加密例程中展开轮次函数的足够副本,以使吞吐量在完全展开的实现的约3%之内。存储在闪存中的密钥用于生成圆形密钥,随后将其存储在RAM中。
- 减少闪光
关键时间表包含在此处。空间限制意味着我们只能对这些实现进行不完整的描述。但是,应注意,前两种类型的实现方式已经具有非常适中的代码大小。
为了比较不同的密码,使用了性能效率度量(等级)。等级与吞吐量除以内存使用量成正比。
SPECK在其支持的每个块和密钥大小上均排名第一。除了128位的块大小外,SIMON在所有块和密钥大小上均排名第二。
...
毫不奇怪,AES-128在此平台上具有非常好的性能,尽管对于相同的块和密钥大小,SPECK的性能大约是其两倍。对于相同的密钥大小,但具有64位块大小,SIMON和SPECK的总体性能分别比AES高出两倍和四倍。
将SPECK 128/128与AES-128进行比较,作者发现SPECK的内存占用量显着减少(460字节对970字节),而吞吐量仅略有减少(171个周期/字节对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位微控制器上的许多应用程序所期望的那样),则SPECK 64/128是一种更节能的解决方案(使用628字节闪存,108字节RAM)。密钥大小与AES-128相同,加密成本仅为122个周期/字节,
此外,此对话中包含一个Enigma人物,谁能抗拒引用Enigma的密码?