轻量级流密码算法Trivium
0x0 Trivium算法简介
Trivium算法是由C.D Canniere和B.Preneel共同设计的一套对称加密算法,Trivium密码算法采用了分组密码和非线性反馈移位寄存器的设计思路。该密码算法总共288比特的内部状态,其中有80比特密钥Key和80比特初始向量IV。简单来说Trivium算法主要分为两个阶段,第一阶段称为内部状态初始化阶段,第二阶段称为密钥流生成阶段。
Trivium算法结构图
0x1内部状态初始化阶段
将80比特密钥Key和80比特初始向量Ⅳ一起导入288比特状态串中,其中末尾三位均固定为1,而剩下的125比特均固定为0。然后内部状态执行1152轮更新步骤,但此时不生成密钥流比特。伪代码描述如下:
0x2 密钥流生成阶段
初始化阶段结束后就开始进入密钥流生成阶段,此阶段每迭代一步,便生成一个密钥流比特Zi,之后状态比特旋转,重复执行完整过程,直到所需的N(≤264)密钥流比特生成完才结束。伪代码描述如下:
0x3 Trivium算法总结
尽管Trivium是面向硬件实现而设计的密码算法,可是其软件实现同样非常高效。此外,Trivium算法结构简洁清晰,并且具有明确的设计指导原理。多年来的分析实践和结果表明,Trivium算法是一个非常优秀和成功的密码设计,其算法结构和设计原理对序列密码算法设计具有很强的指导意义和借鉴价值。