HC - 256流密码的缓存时序分析
1. 流密码HC - 256简介
HC - 256是由Wu提出的流密码,其简化版本HC - 128是eStream组合的一部分。该密码基于两个大型的、基于密钥的表(没有固定的S盒),表的内容会随时间变化。每次调用密钥流生成函数时,密码会更新一个表项并输出一个32位的密钥流字。
-
符号说明 :
- HC - 256需要一个256位的密钥K和一个256位的初始向量IV。
- 使用两个表P和Q,每个表包含1024个32位字,表项用P[i]和Q[i]标识。
- 符号定义:⊕表示异或,||表示连接(最高有效位在前),≫表示循环右移,⊞表示模2³²加法,⊟表示模2¹⁰减法。
- 若X是一个字,X(b..a)表示位b到a(b > a)。
-
辅助函数 :
f1(x) = (x ≫7) ⊕(x ≫18) ⊕(x ≫3)
f2(x) = (x ≫17) ⊕(x ≫19) ⊕(x ≫10)
g1(x, y) = ((x ≫10) ⊕(y ≫23)) ⊞Q[(x ⊕y)(9..0)]
g2(x, y) = ((x ≫10) ⊕(y ≫23)) ⊞P[(x ⊕y)(9..0)]
h1(x) = Q[00||x(7..0)] ⊞Q[01||x(15..8)] ⊞Q[10||x(23..16)] ⊞Q[11||x(3