1、第 31 卷 第 1 期北京电子科技学院学报2023 年 3 月Vol31 No1Journal of Beijing Electronic Science and Technology InstituteMar2023轻量级序列密码算法 lizard 的 FPGA 设计与优化*肖超恩仓晓彤张磊北京电子科技学院,北京市100070摘要:Lizard 序列密码算法作为类似 eSTEAM 组合中 Grain 的算法,由于较小的内部状态,具有较好的硬件实现优势。为了在硬件层面提高该算法实现的工作频率,同时一定程度上降低资源消耗,本文使用 Verilog 硬件语言对该算法进行 FPGA 实现,并提出两
2、种设计方案。首先,本文基于二段式有限状态机设计了算法实现的基础版本。其次,本文在基础版本设计的基础上通过对密码 Lizard 算法的原理分析,完成了算法 6 比特并行版本的设计,进一步提高了算法运行的吞吐率。最 后,在 Vivado 2019.2.1 环 境 中 采 用 赛 灵 思 公 司 的 Spartan7 系 列 的 硬 件 平 台XC7S50FGGA4841 芯片,使用 Verilog 硬件设计语言对密码 Lizard 算法两种设计版本进行设计、综合和实现,再通过 ModelSim 10.4 进行仿真验证,结果表明两种设计的工程实现结果与标准测试向量相同。性能测试结果显示:在基础版本中
3、,Lizard 序列密码算法实现了最小的面积消耗,最高工作频率达到 221MHz;在并行版本中,Lizard 序列密码算法实现最大的吞吐量可达1254Mbps,提高了数据加密运算的速率。关键词:轻量级;流密码;现场可编程门阵列;并行优化中图分类号:TP393文献标识码:A文章编号:1672464X(2023)10918*基金项目:国家重点研发计划基金资助项目(项目编号:2017YFB0801803);教育部新工科研究与实践项目(项目编号:E-AQ-GABQ20202704);北京高等教育“本科教学改革创新项目”(项目编号:202110018002);北京电子科技学院一流学科建设项目(项目编号:
4、20210064Z0401、20210056Z0402)作者简介:肖超恩(1982),男,湖南人,讲师,博士,主要研究方向为嵌入式系统及网络空间安全。仓晓彤(1999),男,大学本科。张磊(1979),男,河北人,正高级工程师,博士,主要研究方向为芯片安全。0引言在保护数字通信方面,流密码有很长的应用历史。1987 年,onald L ivest 设计了 C41(ivest Cipher 4),后 来 被 用 于 SSL(SecureSockets Layer)/TLS(Transport Layer Security)、无线网络安全协议 WEP(Wired Equivalent Priva-
5、cy)和 TKIP(Temporal Key Integrity Protocol)。另外,还 有 蓝 牙 标 准 的 E0 和 GSM(GlobalSystem for Mobile communication)的 A5/1 等著名的流密码2。然而,E0 和 A5/1 已经被证明是非常不安全的,C4 也显示出严重的漏洞,这导致它从 TLS 协议中被删除,并使其他协议如WEP 变得不安全。2004 年,eSTEAM 项目启动,以便为不同的应用场景确定新的流密码。2012 年 STEAM 项 目 进 行 修 订,Grain v1、MICKEY 2.0 和 Trivium 等三种密码由于硬件效率方
6、面的优势依然保留在 eSTEAM 项目中。尤其 Grain v1 被证明是 eSTEAM 组合中硬件效率最高的成员3,因此可被视为面向硬件的新北京电子科技学院学报2023 年设计的基准4,5。2017 年 Hamann M 等人将Grain 的设计与 FP(1)模式相结合,设计了轻量级序列密码 Lizard69,其中 FP(1)模式是被提出用于流密码状态初始化的构造原则,它提供了可证明的安全1012,可以对抗旨在恢复密钥的TMD(Time-Memory-Data)权衡攻击13,14。此轻量级序列密码可以面向许多现有的通信场景使用,如蓝牙、WLAN(Wireless Local-Area Net
7、work)或 HTTPS(Hypertext Transfer Protocol Secure)等。密码技术在物联网技术方面应用,受到安全、效率、成本、功耗等方面的相互制约,因此在有限资源环境下实现安全高速地传输是当今研究热点。本文基于 FPGA 设计实现 Lizard 密码算法,旨在减小面积和功耗等硬件指标。并通过并行优化,进一步提高算法吞吐率,与文献 15的对比性能有一定的提升。1密码算法 Lizard 原理Hamann M 等人设计的 Lizard 轻量级密码算法,结构与 Grain 相似,但 Lizard 是基于两个非线性反馈寄存器 NFS1 和 NFS2 设计,密钥长度是 120 b
8、it,初始向量 64 bit,内 部 状 态 是121bit,提供 80 bit 安 全 强 度,如 图 1 所 示。Lizard 主要有五个操作阶段,前四个阶段属于初始化阶段,共 256 轮。初始化阶段包括密钥和IV 的加载阶段,128 轮的类 Grain 混合,第二个密钥添加阶段和最后的 128 轮混淆阶段。然后第五个阶段是密钥流生成,由一个输出函数来生成密钥流,每次仅生成一个比特密钥,最多生成218比特6。1.1初始化阶段原理第一阶段,key 和 iv 加载阶段,对 B、S 两个非线性反馈移位寄存器进行初始填充:B0j:=Kj IVj,for j 0,63Kj,for j 64,89(1
9、)图 1Lizard 序列算法原理图S0i:=Ki+90,for i 0,28K119 1,for i=291,for i=30(2)第二阶段,128 步的类 Grain 混合,0 t 129 时:移位寄存器 B 从 189 位左移至 088 位Bt+1j:=Btj+1,for j 0,88(3)第 89 位更新函数如等式(4)Bt+189:=ztSt0Bt0Bt24Bt49Bt79Bt84 Bt3Bt59 Bt10Bt12 Bt15Bt16 Bt25Bt53 Bt35Bt42Bt55Bt58 Bt60Bt74 Bt20Bt22Bt23 Bt62Bt68Bt72Bt77Bt80Bt81Bt83
10、(4)移位寄存器 S 从 130 位左移至 029 位St+1i:=Sti+1,for i 0,29(5)第 30 位更新函数如等式(6)St+130:=ztSt0St2St5St6St15St17St18St20St25St8St18St8St20St12St21St14St19St17St21St20St22St4St12St22St4St19St22St7St20St21 St8St18St22 St8St20St22 St12St19St22 St20St21St22St4St7St12St21St4St7St19St21St4St12St21St22St4St19St21St22St
11、7St8St18St21St7St8St20St21St7St12St19St21St8St18St21St22St8St20St21St22St12St19St21St22(6)第三阶段,第二次密钥添加阶段,t=129 时:B129j:=B128j Kj,for j 0,89(7)S129i:=S128i Ki+90,for i 0,291,for i=30(8)01第 31 卷轻量级序列密码算法 lizard 的 FPGA 设计与优化第四阶段,128 步混淆阶段,即 129 t 258 时:移位寄存器 B 从 189 位左移一位Bt+1j:=Btj+1,for j 0,88(9)第 89
12、位更新函数如等式(10)Bt+189:=St0 Bt0 Bt24 Bt49 Bt79 Bt84Bt3Bt59 Bt10Bt12 Bt15Bt16 Bt25Bt53 Bt35Bt42Bt55Bt58 Bt60Bt74 Bt20Bt22Bt23 Bt62Bt68Bt72Bt77Bt80Bt81Bt83(10)移位寄存器 S 从 130 位左移一位St+1i:=Sti+1,for i 0,29(11)第 30 位更新函数如等式(12)St+130:=St0 St2 St5 St6 St15 St17 St18 St20St25St8St18St8St20St12St21St14St19St17St2
13、1 St20St22 St4St12St22 St4St19St22 St7St20St21 St8St18St22 St8St20St22 St12St19St22 St20St21St22St4St7St12St21St4St7St19St21St4St12St21St22St4St19St21St22St7St8St18St21St7St8St20St21St7St12St19St21St8St18St21St22St8St20St21St22St12St19St21St22(12)1.2密钥输出阶段原理当 t257 时,开始输出密钥流(原算法中每个时间周期生成一位的密钥),输出函数:z
14、t:=Lt Qt Tt Tt?(13)Lt:=Bt7 Bt11 Bt30 Bt40 Bt45 Bt54Bt71(14)Qt:=Bt4Bt21 Bt9Bt52 Bt18Bt37 Bt44Bt76(15)Tt:=Bt5Bt8Bt82Bt34Bt67Bt73Bt2Bt28Bt41Bt65Bt13Bt29Bt50Bt64Bt75Bt6Bt14Bt26Bt32Bt47Bt61Bt1Bt19Bt27Bt43Bt57Bt66Bt78(16)Tt?:=St23 St3St16 St9St13Bt48 St1St24Bt38Bt63(17)两个非线性移位寄存器 B 和 S 的值在每一个时间周期内的运算与初始化最
15、后的 128 步混淆阶段相同,将移位寄存器 B 的高 89 位左移一位如式(9),移位寄存器 S 的高 30 位左移一位如式(11),同时计算两个移位寄存器的更新函数(10)和(12)。2密码算法 Lizard 硬件设计根据 Lizard 算法的原理,本文实现算法的硬件设计结构包括控制模块、初始化模块、最终密钥生成模块和输入输出接口模块,如图 2 所示。为了提高该密码算法的运行效率,本文在基础设计版本的基础上,还优化设计了高吞吐率的 6 比特并行输出版本。这两个设计版本的运行原理整体上相同,生成加密密钥所用的 key(初始密钥流)和 iv(初始化向量)通过输入接口模块由外部输入,由控制单元模块
16、根据时钟选择对应状态进行初始化或者密钥生成运算操作,在两个非线性移位寄存器进行最高位更新和计算最终输出 Z 时需要用到子函数模块,最终运算结果由输出接口模块输出。图 2Lizard 算法 FPGA 设计结构图2.1基础版本 FPGA 设计Lizard 算法 FPGA 设计的基础版本整体是由一个二段式状态机和子函数模块构成,子函数在状态机中调用,算法实现的全部流程都由状态机控制完成。子函数模块包含三个子函数,分别是用来计算密钥输出函数 a(B,S)、非线性移位寄存器 S 最高位的更新函数 f1(S)、非线性移位寄存器 B 最高位的更新函数 f2(B,S)。2.1.1基础版本状态机设计Lizard 算法基础版本设计的状态机包括 S0、S1、S2、S3 等 4 个状态机,如图 3 所示。S0 状态:对应 key-iv 加载阶段,用 key 和 iv11北京电子科技学院学报2023 年图 3基础版状态机设计图的 063 按位异或的结果给非线性移位寄存器B 的 063 位赋值,而非线性移位寄存器 B 的 6489 位由初始密钥寄存器 key 的 64 89 位赋值。非线性移位寄存器 S 的 02