分享
轻量级序列密码算法lizard的FPGA设计与优化_肖超恩.pdf
下载文档

ID:2581731

大小:918.90KB

页数:10页

格式:PDF

时间:2023-08-01

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
轻量级 序列 密码 算法 lizard FPGA 设计 优化 肖超恩
第 31 卷 第 1 期北京电子科技学院学报2023 年 3 月Vol31 No1Journal of Beijing Electronic Science and Technology InstituteMar2023轻量级序列密码算法 lizard 的 FPGA 设计与优化*肖超恩仓晓彤张磊北京电子科技学院,北京市100070摘要:Lizard 序列密码算法作为类似 eSTEAM 组合中 Grain 的算法,由于较小的内部状态,具有较好的硬件实现优势。为了在硬件层面提高该算法实现的工作频率,同时一定程度上降低资源消耗,本文使用 Verilog 硬件语言对该算法进行 FPGA 实现,并提出两种设计方案。首先,本文基于二段式有限状态机设计了算法实现的基础版本。其次,本文在基础版本设计的基础上通过对密码 Lizard 算法的原理分析,完成了算法 6 比特并行版本的设计,进一步提高了算法运行的吞吐率。最 后,在 Vivado 2019.2.1 环 境 中 采 用 赛 灵 思 公 司 的 Spartan7 系 列 的 硬 件 平 台XC7S50FGGA4841 芯片,使用 Verilog 硬件设计语言对密码 Lizard 算法两种设计版本进行设计、综合和实现,再通过 ModelSim 10.4 进行仿真验证,结果表明两种设计的工程实现结果与标准测试向量相同。性能测试结果显示:在基础版本中,Lizard 序列密码算法实现了最小的面积消耗,最高工作频率达到 221MHz;在并行版本中,Lizard 序列密码算法实现最大的吞吐量可达1254Mbps,提高了数据加密运算的速率。关键词:轻量级;流密码;现场可编程门阵列;并行优化中图分类号:TP393文献标识码:A文章编号:1672464X(2023)10918*基金项目:国家重点研发计划基金资助项目(项目编号:2017YFB0801803);教育部新工科研究与实践项目(项目编号:E-AQ-GABQ20202704);北京高等教育“本科教学改革创新项目”(项目编号:202110018002);北京电子科技学院一流学科建设项目(项目编号: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-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 等三种密码由于硬件效率方面的优势依然保留在 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 Network)或 HTTPS(Hypertext Transfer Protocol Secure)等。密码技术在物联网技术方面应用,受到安全、效率、成本、功耗等方面的相互制约,因此在有限资源环境下实现安全高速地传输是当今研究热点。本文基于 FPGA 设计实现 Lizard 密码算法,旨在减小面积和功耗等硬件指标。并通过并行优化,进一步提高算法吞吐率,与文献 15的对比性能有一定的提升。1密码算法 Lizard 原理Hamann M 等人设计的 Lizard 轻量级密码算法,结构与 Grain 相似,但 Lizard 是基于两个非线性反馈寄存器 NFS1 和 NFS2 设计,密钥长度是 120 bit,初始向量 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)图 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(4)移位寄存器 S 从 130 位左移至 029 位St+1i:=Sti+1,for i 0,29(5)第 30 位更新函数如等式(6)St+130:=ztSt0St2St5St6St15St17St18St20St25St8St18St8St20St12St21St14St19St17St21St20St22St4St12St22St4St19St22St7St20St21 St8St18St22 St8St20St22 St12St19St22 St20St21St22St4St7St12St21St4St7St19St21St4St12St21St22St4St19St21St22St7St8St18St21St7St8St20St21St7St12St19St21St8St18St21St22St8St20St21St22St12St19St21St22(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 位更新函数如等式(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 St20St25St8St18St8St20St12St21St14St19St17St21 St20St22 St4St12St22 St4St19St22 St7St20St21 St8St18St22 St8St20St22 St12St19St22 St20St21St22St4St7St12St21St4St7St19St21St4St12St21St22St4St19St21St22St7St8St18St21St7St8St20St21St7St12St19St21St8St18St21St22St8St20St21St22St12St19St21St22(12)1.2密钥输出阶段原理当 t257 时,开始输出密钥流(原算法中每个时间周期生成一位的密钥),输出函数:zt:=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 的值在每一个时间周期内的运算与初始化最后的 128 步混淆阶段相同,将移位寄存器 B 的高 89 位左移一位如式(9),移位寄存器 S 的高 30 位左移一位如式(11),同时计算两个移位寄存器的更新函数(10)和(12)。2密码算法 Lizard 硬件设计根据 Lizard 算法的原理,本文实现算法的硬件设计结构包括控制模块、初始化模块、最终密钥生成模块和输入输出接口模块,如图 2 所示。为了提高该密码算法的运行效率,本文在基础设计版本的基础上,还优化设计了高吞吐率的 6 比特并行输出版本。这两个设计版本的运行原理整体上相同,生成加密密钥所用的 key(初始密钥流)和 iv(初始化向量)通过输入接口模块由外部输入,由控制单元模块根据时钟选择对应状态进行初始化或者密钥生成运算操作,在两个非线性移位寄存器进行最高位更新和计算最终输出 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

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开