基于LFSR和NFSR的密码杂凑算法QUARK
在2010年CHES会议上,Aumasson等提出了一个轻量级杂凑函数族算法QUARK。QUARK算法的形成受到了eSTREAM流密码算法Grain和分组密码算法KATAN设计的启发。在最初的设计文档中,QUARK包含了三个版本:U-QUARK、D—QUARK和S-QUARK。对这三个版本,设计者选择的消息摘要长度n分别为136、176和256比特。QUARK算法的整体设计采用了一个海绵结构,可以被用来实现消息认证、流密码加密或者认证加密功能。在2012年,为了满足256比特安全性的需要,Aumasson等提出了一个新版本的设计C-QUARK,使其内部状态达到384比特。
对于QUARK的海绵结构,上图展示了一个己完成消息填充的具有4个消息分块的实例。在这个海绵结构中,设计者使用了一个b比特的P置换。参数化一个QUARK实例需要指定输出长度n、分组长度r和容量c。一个海绵结构的宽度b=r+c是其内部状态的大小。我们把这个内部状态记为s=(s0,…,sb-1), 这里s0指的是状态的第一个比特。