说到加密算法,分组密码算法总是更受人关注的,比如AES、DES等等,但是流密码算法也是不能被忽视的。今天我们就一起来了解一种流密码算法——Trivium加密算法。
Trivium算法简介
Trivium算法由其Christophe De Canniere和Bart Preneel提交给eSTREAM竞赛的Profile II(硬件),并被eSTREAM项目选为低面积硬件密码组合(Profile 2)的一部分。是一种同步流密码,旨在提供硬件速度和门数之间的灵活权衡,以及合理有效的软件实现。
Trivium算法加密原理
Trivium算法的密钥和初始化向量(Initialize Vector,IV)长度均为80位,能提供等同于AES128的安全性。
Trivium的288位内部状态由三个不同长度的移位寄存器组成。 在每一轮中,使用来自该寄存器和另一个寄存器的抽头的非线性组合将一个位移入三个移位寄存器中的每一个; 产生一位输出。 为了初始化密码,密钥和IV被写入两个移位寄存器,其余的位以固定模式开始; 然后,密码状态被更新4×288 = 1152次,因此内部状态的每个位都以复杂的非线性方式依赖于密钥和IV的每个位。
每个移位寄存器的前65位都不会出现抽头,因此每个新的状态位在生成后至少65个轮次才会被使用。 这是Trivium软件性能和硬件灵活性的关键。
Trivium算法的性能
Trivium算法的简单硬件实现将使用3488逻辑门,并在每个时钟周期产生一位。 但是,因为每个状态位不用于至少64个回合,所以可以并行生成64个状态位,其硬件成本略高于5504个门。 速度和面积之间的不同权衡也是可能的。
相同的属性允许在软件中实现有效的位片实现;eSTREAM的性能测试在某些x86平台上提供了大约4个周期/字节的批量加密速度,这与同一平台上AES参考实现的19个周期/字节相当。
Trivium算法在设计之初就是完全出于硬件效率考虑。由于采用了线性反馈移位寄存器和简单的AND函数,其结构和实现极为简单,且硬件消耗小,内部仅维护36字节状态,所以其硬件实现效率很高。
免责声明:素材源于网络,如有侵权,请联系删稿。