Trivium是一种同步流密码,旨在提供硬件速度和门数之间的灵活权衡,以及合理有效的软件实现。
Trivium由其作者ChristopheDeCannière和Bart Preneel提交给eSTREAM竞赛的Profile II(硬件),并被eSTREAM项目选为低面积硬件密码组合(Profile 2)的一部分。 它未获得专利,已被ISO / IEC 29192-3规定为国际标准。
描述Trivium的288位内部状态由三个不同长度的移位寄存器组成。 在每一轮中,使用来自该寄存器和另一个寄存器的抽头的非线性组合将一个位移入三个移位寄存器中的每一个; 产生一位输出。 为了初始化密码,密钥和IV被写入两个移位寄存器,其余的位以固定模式开始; 然后,密码状态被更新4×288 = 1152次,因此内部状态的每个位都以复杂的非线性方式依赖于密钥和IV的每个位。
每个移位寄存器的前65位都不会出现抽头,因此每个新的状态位在生成后至少65个轮次才会被使用。 这是Trivium软件性能和硬件灵活性的关键。
性能Trivium的简单硬件实现将使用3488逻辑门,并在每个时钟周期产生一位。 但是,因为每个状态位不用于至少64个回合,所以可以并行生成64个状态位,其硬件成本略高于5504个门。 速度和面积之间的不同权衡也是可能的。
相同的属性允许在软件中实现有效的位片实现; eSTREAM的性能测试在某些x86平台上提供了大约4个周期/字节的批量加密速度,这与同一平台上AES参考实现的19个周期/字节相当。
安全截至2015年4月,没有比蛮力攻击更好的密码分析攻击,但有几次攻击接近。立方体攻击需要268个步骤来打破Trivium的变体,其中初始化轮数减少到799。此前其他作者推测,这些技术可能导致1100次初始化轮次中断,或“甚至可能是原始密码”。这是建立在迈克尔·维尔哈伯(Michael Vielhaber)攻击的基础上的,该攻击仅以212.3步骤打破了576个初始化轮次1。
另一次攻击以大约289.5步骤恢复完整密码的内部状态(以及密钥)(其中每一步大致是穷举搜索中单个试验的成本)。使用相同的设计原理减少了Trivium的变体已经使用方程求解技术打破了。这些攻击改进了对流密码的众所周知的时空权衡攻击,其中Trivium的288位内部状态将需要2144步,并且显示Trivium上的变体除了将密钥长度增加到超过80之外没有任何变化eSTREAM Profile 2强制要求的位不安全。使用优化的求解策略,还可以将状态恢复复杂度降低到2132步。
本词条内容贡献者为:
王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所