在“AVR 8 位微控制器上的 Simon 和 Speck 块密码”中, Beaulieu 等人。研究 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 实现更节能。在任何一种情况下,都可以显着减少闪存使用量,这可能与低端微控制器有关。
如果应用程序需要高速,并且内存使用不是优先事项,AES 在所有具有 128 位块和我们知道的密钥的块密码中实现最快(使用 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 个周期/字节,
此外,这个演讲中有一个Enigma人物,谁能抗拒引用Enigma 的密码?