深入解析 Simon 和 Speck 块密码在 AVR 8 位微控制器上的实现
在当今数字化时代,数据安全至关重要。块密码作为保障数据安全的重要手段,在各种设备上的高效实现一直是研究的热点。本文将详细探讨 Simon 和 Speck 这两种块密码在 AVR 8 位微控制器上的不同实现方式及其性能表现。
Simon 块密码的不同实现
标准实现
Simon 64/128 的标准实现中,加密成本为 253 周期/字节。在代码大小方面,除了加载指令外,每条指令在闪存中存储所需的字节数是其执行周期数的两倍。加载指令需要 8 字节闪存,扩展密钥存储在 44×4 = 176 字节的闪存中,加上计数器、加载明文、存储密文等其他开销,实际使用的闪存总量为 290 字节,且该实现未使用 RAM。
高吞吐量/低能耗实现
这种实现方式适用于加密多个数据块的场景。其加密过程是先将所有轮密钥放入 RAM 中,直到数据流中的所有块都被加密。对于 Simon 64/128,我们将代码展开四轮并迭代 11 次来完成 44 轮加密。由于密钥从 RAM 加载,加载操作仅需 8 周期,而从闪存加载则需要 12 周期。这种实现的成本为 221 周期/字节,加密算法的代码大小约为 68×4 = 272 字节,加上密钥调度和其他开销,共使用 436 字节的闪存,同时需要 44×4 = 176 字节的 RAM 来存储轮密钥。
以下是该实现的流程图:
graph TD;
A[开始] --> B[生成轮密钥并放入 RAM];
B --> C[展开四轮代码
超级会员免费看
订阅专栏 解锁全文
12

被折叠的 条评论
为什么被折叠?



