基于FPGA的SMS4算法实现及在线验证基于FPGA的SMS4算法实现及在线验证
SMS4密码算法

无线局域网产品使用的SMS4密码算法本算法是一个分组算法。
该算法的分组长度为128比特,密钥长度为128比特。
加密算法与密钥扩展算法都采用32轮非线性迭代结构。
解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
1. 术语说明1.1 字与字节用表示e -比特的向量集,中的元素称为字,中的元素称为字节。
e Z 2322Z 82Z 1.2 S 盒S 盒为固定的8比特输入8比特输出的置换,记为Sbox (.)。
1.3 基本运算在本算法中采用了以下基本运算:⊕ 32比特异或i 32比特循环左移i 位<<<1.4 密钥及密钥参量加密密钥长度为128比特,表示为MK=(MK 0, MK 1, MK 2, MK 3),其中MK i (i=0,1,2,3)为字。
轮密钥表示为(rk 0, rk 1, …, rk 31),其中rk i (i=0,…,31)为字。
轮密钥由加密密钥生成。
FK=(FK 0, FK 1, FK 2, FK 3)为系统参数,CK=(CK 0, CK 1,…, CK 31)为固定参数,用于密钥扩展算法,其中FK i (i =0,…,3)、CK i (i =0,…,31)为字。
2. 轮函数F本算法采用非线性迭代结构,以字为单位进行加密运算,称一次迭代运算为一轮变换。
设输入为,轮密钥为,则轮函数F 为:43223210)(),,,(Z X X X X ∈322Z rk ∈)(),,,,(32103210rk X X X T X rk X X X X F ⊕⊕⊕⊕=2.1 合成置换TT:,是一个可逆变换,由非线性变换τ和线性变换L 复合而成,即T(.)=L(τ(.))。
322322Z Z →2.1.1 非线性变换ττ由4个并行的S 盒构成。
设输入为, 输出为,则4823210)(),,,(Z a a a a A ∈=4823210)(),,,(Z b b b b B ∈=))(),(),(),(()(),,,(32103210a Sbox a Sbox a Sbox a Sbox A b b b b ==τ2.1.2线性变换L非线性变换τ的输出是线性变换L 的输入。
基于FPGA实现SMS4对称密码算法

则非线性变换 7和线性变换 分别为 : 一
1 算法原理介绍
.
=7 ) (b xa ) b xa ) b xa ) b xa) - =S o (0S o (1S o (2, o (3 , , S )
2轮密钥扩展算法
加解 密算 法中的轮密钥 由加 密密钥通过轮 密钥扩展 算法
z 警表示。算法的加解密变换为:
X| F X| x| ×| X| n×| X| r = 固T “ 2 3k
/01… ,1 _ ,, 3
r /。 k 、
( 1)
生成 ,该算法基本结构与加解 密算 法相 同 ,也是经过3 轮迭 2 代运算后 生成3 个轮 密钥 。 2
换 复合 而成 ,即 ( : (- )。非线性 变换 . 个 并行 . 7( ) ) r由4 的S盒构成 ,.盒为 固定的8 比特输 入8 比特输 出的变换 ,记
收 稿 日期 : 2 0年 8 1 日 09 月 4
r K| F k
责任编辑: 左永君 zo0g n m cmO == > uynj @ bo . =: u n :. . =
F’ 为轮 函数 。 变换与加解密算法 中的 基本相 同 ,仅 是线 性变换 修改 为 。设输入 为 ,输 出为 ,则线 性变换
2
为:
C= ) 0 < < 3 0 < < 3 L = < 1 ) < 2 ) 2 输出 数据
图2 加 解 密 系统 结 构 图
2 技术方案设计及 实现
加解密算法
S 4 MS 是基 于S OX B 的分组 对称 密码 算法 ,它对 一组 比
硬件实现SMS4密码算法的研究

硬件实现SMS4密码算法的研究随着现代信息技术的快速发展,信息安全已经成为信息化社会最重要、最关键的问题之一。
SMS4密码算法是我国自主研发的商用密码,是我国官方公布的第一个商用加密算法,使用软件对传输的信息进行加密,容易给攻击者采用分析程序、跟踪、反编译等手段进行攻击,而硬件加密算法比软件实现更快捷、更安全,文章提出了一种利用FPGA实现分组加密算法SMS4的硬件实现方法,通过ISE仿真验证了其正确性。
标签:SMS4;FPGA;硬件加密引言SMS4[1]密码算法是国内公布的第一个用于无线局域网产品的商用密码算法,无线局域网具有工作效率高、轻巧灵活、安装成本低等特点,但是无线局域网是开放性的,其安全性令人担忧。
文章通过分析SMS4[2]密码算法的过程,采用C语言和Verilog HDL语言编程,使用VC6.0和ISE 14.2仿真,将其结果进行对比验证。
证明硬件加密具有较高的加解密速度、将密码算法固化在硬件中,算法不容易被修改,提高了系统的安全性等特点。
1 SMS4加密算法SMS4[3]是国家密码管理办公室2006年公布的应用于无线局域网产品的分组密码算法、分组长度为128比特,密钥长度为128比特、是使用典型的Feistel 网络结构的分组密码算法,密码算法主要包含轮密钥算法、加密算法和解密算法[3]。
Feistel网络在1973年首次踏上历史舞台,Feistel网络结构中,加密算法输入的数据是一个长度为2?棕比特的明文分组和秘钥K,明文被分成L0和R0。
L0和R0经过n轮的处理后组合起来产生密文。
Feistel网络结构对左边一半进行替换操作,即对数据右边一半应用Round函数F,将此函数的输出与左边一半数据进行异或。
每一轮Round函数都相同,只是每一轮的子密钥Ki不相同,(FK0,FK1,FK2,FK3,CKi,sbox中的数据都是常数)。
1.1 轮密钥算法RKi即为第i轮加密的密钥。
SMS4密码算法中主要包括异或、移位、查表等基本的运算。
SMS4密码的集成电路实现方法

b u i l d i n g RTL mo d e l ,f u n c t i o n s i mu l a t i o n, s y n t h e s i z i n g a n d o p t i mi z a t i o n,p l a c i n g a n d
随着无 线局 域 网 的快 速 发展 和 广泛 应 用 , 使 用 者 面临一 系列 的安 全 问 题 , 例 如 在公 共 场合 使 用无 线 局域 网来 接 入 网络 的 用 户 , 会 担 心 临 近 的 其 他用 户 获 取 到 自己所 发 送 或 接 收 到 的 各 种 数 据; 而在 公 司 内部 安装 无 线 局 域 网的企 业 也 会 担 心 无线 电波会 穿 透 外 墙 , 将 公 司 的 敏感 数据 泄 漏 出去 。这就使 得 各种类 型的用 户在 安装 以及 使用 无 线局 域 网之前 , 都 会 多 一 层 对 于 数据 安全 方 面
( Co l l e g e o f I n f o r ma t i o n Sc i e n c e a n d Te c h n o l o g y,Qi n g d a o Un i v e r s i t y o f Sc i e n c e a n d Te c h n o l o gy ,Qi n g d a o 2 66 0 61 , Chi n a)
一种新型的基于FPGA的SMS4密码算法电路设计

一种新型的基于FPGA的SMS4密码算法电路设计
倪奎;王安文;旷捷;罗军
【期刊名称】《电子技术应用》
【年(卷),期】2009(035)006
【摘要】提出一种新型的基于FPGA硬件实现的SMS4分组密码算法电路设计.相对于常用的流水线设计方法和迭代设计方法,此设计将流水线和迭代运算相结合,结合了前者较高处理速度和后者较小实现面积的优点,达到了较好的性能,对WLAN 商用密码算法的FPGA硬件实现有参考意义.通过Quartus Ⅱ 8.0软件时序仿真验证了此设计的正确性,并使用以Cyclone Ⅱ FPGA芯片为核心的DE2开发板验证了此设计的可实现性.
【总页数】5页(P26-29,33)
【作者】倪奎;王安文;旷捷;罗军
【作者单位】武汉大学,物理科学与技术学院电子科技系,湖北,武汉,430072;武汉大学,物理科学与技术学院电子科技系,湖北,武汉,430072;武汉大学,物理科学与技术学院电子科技系,湖北,武汉,430072;武汉大学,物理科学与技术学院电子科技系,湖北,武汉,430072
【正文语种】中文
【中图分类】TN925.93;TP309.7
【相关文献】
1.基于SMS4密码算法的面积与速度均衡的设计 [J], 江依妹
2.一种基于FPGA控制的新型CCD驱动电路设计 [J], 王锦毅
3.基于FPGA实现SMS4对称密码算法 [J], 赵轩;张永强;尹俊勋
4.基于FPGA的SMS4密码算法的高速实现 [J], 冯春雨;胡波;刘会忠
5.基于FPGA的新型强弱混合型PUF电路设计 [J], 连佳娜;汪鹏君;李刚;马雪娇;翟官宝
因版权原因,仅展示原文概要,查看原文内容请购买。
SMS4算法原理及C语言实现

SMS4算法原理及C语言实现
王启武
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2017(000)012
【摘要】SMS4算法是我国首个公布的商用分组加密算法.介绍了SMS4算法的基本理论,深入剖析了SMS4算法加密原理及运算过程,并给出了该算法的C语言实现和C语言实现程序,简要叙述了SMS4算法的安全性.
【总页数】4页(P30-32,55)
【作者】王启武
【作者单位】武汉理工大学理学院数学JD,武汉430070
【正文语种】中文
【相关文献】
1.基于单轮循环结构的SMS4加密芯片的研究与设计 [J], 蔡玉莹;曲英杰
2.对SMS4密码算法改进的差分攻击 [J], 赵艳敏;刘瑜;王美琴
3.SMS4分组密码算法的安全性研究与改进 [J], 王子龙
4.基于FPGA的SMS4算法实现及在线验证 [J], 张利华;吴松;蒋腾飞;姜攀攀
5.类SMS4型密码结构抵抗线性密码分析能力评估 [J], 洪礼荣; 王念平; 黄奇; 张渑春
因版权原因,仅展示原文概要,查看原文内容请购买。
基于FPGA的SM4算法高效实现方案

基于FPGA的SM4算法高效实现方案
张宏科;袁浩楠;丁文秀;闫峥;李斌;梁栋
【期刊名称】《通信学报》
【年(卷),期】2024(45)5
【摘要】针对SM4算法的FPGA实现方案存在数据处理速度不够高和逻辑资源占用过高的问题,提出了基于现场可编程门阵列(FPGA)的高性能、低资源消耗的SM4算法实现方案。
所提方案采用循环密钥扩展与32级流水线加解密相结合的架构,循环密钥扩展的方式降低了逻辑资源消耗,32级流水线加解密的方式提高了数据吞吐率。
同时,所提方案采用代数式S盒并通过合并线性运算以及在不可约多项式的合并矩阵中筛选最优矩阵运算的方式进一步减少S盒变换的运算量,从而达到降低逻辑资源占用与提高工程数据吞吐率的目的。
测试结果显示,该方案比现有最佳方案在数据吞吐率上提升了43%,且资源占用率降低了10%。
【总页数】11页(P140-150)
【作者】张宏科;袁浩楠;丁文秀;闫峥;李斌;梁栋
【作者单位】西安电子科技大学网络与信息安全学院;中国电子科技集团公司第五十四研究所;西安电子科技大学空天地一体化综合业务网全国重点实验室;西安电子科技大学杭州研究院
【正文语种】中文
【中图分类】TN92
【相关文献】
1.一种基于门限实现的SM4算法S盒实现方案
2.基于秘密共享的SM4算法S盒实现方案
3.基于复合域的SM4算法FPGA设计与实现
4.基于Winograd算法的高效神经网络加速器及FPGA实现
5.基于复合域的SM4两方协同加密算法的FPGA实现
因版权原因,仅展示原文概要,查看原文内容请购买。
基于SMS4的加密通信可编程片上系统设计实现

基于SMS4的加密通信可编程片上系统设计实现
朱勇;崔强强
【期刊名称】《电子科技》
【年(卷),期】2014(027)004
【摘要】针对面向工业用、商用以及民用电子设备加密串行通信需求,通过基于SMS4的加密通信SOPC软硬件架构、SMS4加密通信控制器IP技术、SMS4加密通信软件技术等内容的研究,实现了基于SMS4加密算法的串行通信技术,并在非128位明文的加密传输数据控制和基于8位异步模式的128位数据串行收发上效率明显提升.基于SMS4的加密通信SOPC提高了系统的加密通信功能可定制能力,且使加密通信核心算法自主可控.
【总页数】5页(P138-142)
【作者】朱勇;崔强强
【作者单位】江苏自动化研究所计算机事业部,江苏连云港222000;江苏自动化研究所计算机事业部,江苏连云港222000
【正文语种】中文
【中图分类】TN919
【相关文献】
1.基于SMS4分组密码的彩色图像加密方法 [J], 吴成茂;侯文滨
2.基于单轮循环结构的SMS4加密芯片的研究与设计 [J], 蔡玉莹;曲英杰
3.基于混沌映射的彩色图像加密算法设计实现 [J], 赵方舟;赵怀勋;李双;刘佳馨
4.基于Logistic映射的彩色图像加密算法设计实现 [J], 赵方舟;赵怀勋;刘佳馨;李双
5.计算机网络通信安全中数据加密技术的应用——评《基于硬件逻辑加密的保密通信系统》 [J], 周毅
因版权原因,仅展示原文概要,查看原文内容请购买。
基于FPGA的SMS4密码算法的高速实现

基于FPGA的SMS4密码算法的高速实现
冯春雨;胡波;刘会忠
【期刊名称】《河北省科学院学报》
【年(卷),期】2010(027)002
【摘要】在传统的SMS4密码算法中,加解密算法和密钥扩展算法都是采用32轮非线性迭代结构,笔者提出了一种流水线结构实现SMS4加解密算法,但是32个轮密钥只能通过迭代产生.在FPGA实现上,此方法牺牲了一定的面积,但速度却有显著提高.最后还对两种方法作了比较,通过时间的对比可以发现流水线方法确实能获得更快的加解密速度.
【总页数】4页(P8-11)
【作者】冯春雨;胡波;刘会忠
【作者单位】河北省科学院应用数学研究所,河北,石家庄,050081;河北省数学研究中心,河北,石家庄,050000;石家庄开发区冀科双实科技有限公司,河北,石家
庄,050081;河北省科学院应用数学研究所,河北,石家庄,050081;河北省数学研究中心,河北,石家庄,050000;河北省科学院应用数学研究所,河北,石家庄,050081
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.一种新型的基于FPGA的SMS4密码算法电路设计 [J], 倪奎;王安文;旷捷;罗军
2.SMS4密码算法的高速流水线实现 [J], 李大为;赵旭鑫;武萌
3.SMS4密码算法高速引擎实现 [J], 周洲;何一凡;沈海斌;赵旭鑫
4.基于FPGA实现SMS4对称密码算法 [J], 赵轩;张永强;尹俊勋
5.基于FPGA的FESH分组密码算法高速实现 [J], 王建新;周世强;肖超恩;张磊因版权原因,仅展示原文概要,查看原文内容请购买。
SMS4密码算法高速引擎实现

SMS4密码算法高速引擎实现
周洲;何一凡;沈海斌;赵旭鑫
【期刊名称】《电子器件》
【年(卷),期】2007(030)004
【摘要】SMS4是国内公布的无线局域网分组密码算法,文章在分析该算法特点的基础上,介绍了一种单轮内流水的高速引擎实现结构.通过配置多个引擎进行二次流水或并行处理,可以灵活调整输出性能和硬件开销,以适应不同应用的需求.在FPGA 的对比测试中,相同输出性能下,具有比32轮流水线结构更小的硬件开销.而且在单引擎应用时,SMS4加/解密系统可以非常容易的在低端的Spartan Ⅱ XC2S50 FPGA上实现.
【总页数】4页(P1469-1471,1480)
【作者】周洲;何一凡;沈海斌;赵旭鑫
【作者单位】浙江大学超大规模集成电路设计研究所,杭州,310027;浙江大学超大规模集成电路设计研究所,杭州,310027;浙江大学超大规模集成电路设计研究所,杭州,310027;浙江大学超大规模集成电路设计研究所,杭州,310027
【正文语种】中文
【中图分类】TP393
【相关文献】
1.硬件实现SMS4密码算法的研究 [J], 王艳红;付世冲
2.SMS4密码算法的高速流水线实现 [J], 李大为;赵旭鑫;武萌
3.AES和SMS4密码算法的高效可重构实现 [J], 李文君;桑振夏;张亚秒;高留洋
4.SMS4密码算法的低功耗实现 [J], 李刚;方东博;沈海斌
5.基于FPGA的SMS4密码算法的高速实现 [J], 冯春雨;胡波;刘会忠
因版权原因,仅展示原文概要,查看原文内容请购买。
一文带你学会国产加密算法SM4的vue实现方案

⼀⽂带你学会国产加密算法SM4的vue实现⽅案前⾔国产SM4加密解密算法概念介绍SMS4算法是在国内⼴泛使⽤的WAPI⽆线⽹络标准中使⽤的加密算法,是⼀种32轮的迭代⾮平衡Feistel结构的分组加密算法,其密钥长度和分组长度均为128。
SMS4算法的加解密过程中使⽤的算法是完全相同的,唯⼀不同点在于该算法的解密密钥是由它的加密密钥进⾏逆序变换后得到的。
SMS4分组加密算法是中国⽆线标准中使⽤的分组加密算法,在2012年已经被国家商⽤密码管理局确定为国家密码⾏业标准,标准编号GM/T 0002-2012并且改名为SM4算法,与SM2椭圆曲线公钥密码算法,SM3密码杂凑算法共同作为国家密码的⾏业标准,在我国密码⾏业中有着极其重要的位置。
SMS4算法的分组长度为128bit,密钥长度也是128bit。
加解密算法均采⽤32轮⾮平衡Feistel迭代结构,该结构最先出现在分组密码LOKI的密钥扩展算法中。
SMS4通过32轮⾮线性迭代后加上⼀个反序变换,这样只需要解密密钥是加密密钥的逆序,就能使得解密算法与加密算法保持⼀致。
SMS4加解密算法的结构完全相同,只是在使⽤轮密钥时解密密钥是加密密钥的逆序。
S盒是⼀种利⽤⾮线性变换构造的分组密码的⼀个组件,主要是为了实现分组密码过程中的混淆的特性和设计的。
SMS4算法中的S盒在设计之初完全按照欧美分组密码的设计标准进⾏,它采⽤的⽅法是能够很好抵抗差值攻击的仿射函数逆映射复合法。
SM4加密算法应⽤场景SM4常⽤于政府系统的数据传输加密,⽐如当我们前端向后台传参数的时候,可以使⽤此算法。
对参数的数据进⾏加密,然后后台对加密的数据进⾏解密再存储到数据库中,保证数据传输过程中,不受泄露。
本次提供的⽅案不仅提供sm4的加密解密,还提供了md5算法的完整性防篡改校验。
vue的加密⽅案实现流程针对于我们的前端vue来说,我们通过axios来进⾏请求和响应,在我们vue的项⽬中,必然有⼀个request.js⽂件,⽤于封装request和respone。
基于FPGA的高性能可扩展SM4-GCM算法实现

基于FPGA的高性能可扩展SM4-GCM算法实现
翟嘉琪;李斌;周清雷;陈晓杰
【期刊名称】《计算机科学》
【年(卷),期】2022(49)10
【摘要】在大数据和5G技术蓬勃发展的背景下,高速通信系统中的信息加密成为了新的研究热点,如何在保证数据高安全性的同时,提高数据吞吐率,降低加密算法适配不同应用场景的难度成为了重要的研究课题。
针对传统软件实现的SM4-GCM 算法吞吐率小、难以在多变的5G及大数据场景下应用的问题,文中基于FPGA可重构的特点,深入剖析SM4-GCM算法的特征,利用Mastrovito算法、Karatsuba 算法、快速求余算法,设计了两种高性能、数控分离、可扩展的电路结构,分别采用全流水线技术和四度并行技术对SM4-GCM算法进行加速优化,在保证高安全性的同时,达到了较高吞吐率,并且可灵活移植于各种应用场景。
实验结果表明,所提出的两种方案中的单个SM4-GCM模块的吞吐率分别达到了28.16 Gbps和28.8 Gbps,在性能、可扩展性等方面均优于同类已发表的设计。
【总页数】9页(P74-82)
【作者】翟嘉琪;李斌;周清雷;陈晓杰
【作者单位】郑州大学信息工程学院;数学工程与先进计算国家重点实验室
【正文语种】中文
【中图分类】TP309
【相关文献】
1.基于FPGA的可扩展多通道数据采集系统设计
2.基于FPGA的PCI/PCI-E可扩展网络分组处理系统设计
3.基于FPGA的多核可扩展卷积加速器设计
4.基于FPGA的高性能3DES算法实现
5.基于STM32和FPGA的可扩展校园储物柜设计
因版权原因,仅展示原文概要,查看原文内容请购买。
SMS4密码算法

无线局域网产品使用的SMS4密码算法本算法是一个分组算法。
该算法的分组长度为128比特,密钥长度为128比特。
加密算法与密钥扩展算法都采用32轮非线性迭代结构。
解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
1. 术语说明1.1 字与字节用表示e -比特的向量集,中的元素称为字,中的元素称为字节。
e Z 2322Z 82Z 1.2 S 盒S 盒为固定的8比特输入8比特输出的置换,记为Sbox (.)。
1.3 基本运算在本算法中采用了以下基本运算:⊕ 32比特异或i 32比特循环左移i 位<<<1.4 密钥及密钥参量加密密钥长度为128比特,表示为MK=(MK 0, MK 1, MK 2, MK 3),其中MK i (i=0,1,2,3)为字。
轮密钥表示为(rk 0, rk 1, …, rk 31),其中rk i (i=0,…,31)为字。
轮密钥由加密密钥生成。
FK=(FK 0, FK 1, FK 2, FK 3)为系统参数,CK=(CK 0, CK 1,…, CK 31)为固定参数,用于密钥扩展算法,其中FK i (i =0,…,3)、CK i (i =0,…,31)为字。
2. 轮函数F本算法采用非线性迭代结构,以字为单位进行加密运算,称一次迭代运算为一轮变换。
设输入为,轮密钥为,则轮函数F 为:43223210)(),,,(Z X X X X ∈322Z rk ∈)(),,,,(32103210rk X X X T X rk X X X X F ⊕⊕⊕⊕=2.1 合成置换TT:,是一个可逆变换,由非线性变换τ和线性变换L 复合而成,即T(.)=L(τ(.))。
322322Z Z →2.1.1 非线性变换ττ由4个并行的S 盒构成。
设输入为, 输出为,则4823210)(),,,(Z a a a a A ∈=4823210)(),,,(Z b b b b B ∈=))(),(),(),(()(),,,(32103210a Sbox a Sbox a Sbox a Sbox A b b b b ==τ2.1.2线性变换L非线性变换τ的输出是线性变换L 的输入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编号:1005-0523(2018)05-0111-06收稿日期:2018-04-10作者简介:张利华(1972—),男,副教授,博士,主要研究方向为无线与移动通信网络安全,工业控制网络安全。
基于FPGA 的SMS4算法实现及在线验证张利华1,吴松2,蒋腾飞2,姜攀攀2(华东交通大学1.软件学院;2.电气与自动化工程学院,江西南昌330013)摘要:针对软件实现加解密算法占用主机系统资源较多、数据处理复杂、加密速度较慢的不足,提出一种硬件实现算法加密的方法。
硬件加密具有成本低、加密速度快等优势,可以减轻CPU 的负担以及提高服务性能。
利用Vivado 2016.3开发工具和Verilog HDL 硬件描述语言完成对SMS4算法的设计输入、功能测试、时序仿真,并封装为独立的IP 核。
在ZYNQ 芯片上设计测试系统,通过ARM 处理器调用自定义IP ,完成算法在实际应用中的验证。
结果表明:软件仿真验证,设计的算法功能正确,性能良好。
在硬件实际测试过程中,算法运行正确,其工作最大频率为200MHz ,数据吞吐率达到800Mbps 。
关键词:SMS4;硬件加密;ZYNQ ;FPGA 中图分类号:TP307文献标志码:A第35卷第5期2018年10月华东交通大学学报Journal of East China Jiaotong UniversityVol.35No.5Oct.,2018分组密码算法是对称密码算法中的一种,效率高、易于实现是其显著的优点,在各个领域应用非常广泛。
SMS4算法在2016年8月正式发布成为国家标准,它是国内首个用于无线局域网产品的商用密码算法[1]。
伴随着物联网的快速发展,分组密码算法在智能终端、无线传感网络以及射频识别等资源有限的设备中应用日益明显。
因而对以SMS4算法为代表的轻量级算法的实现的研究具有重要的实际意义[2]。
当前实现算法主要是通过硬件和软件两种方式实现,软件实现的运行方式是顺序执行,它不仅限制了算法运行速度的提升空间,而且功耗和安全性也制约了它的应用领域;而使用硬件FPGA (可编程逻辑器件)实现采用并行处理的方式,既能够提高加密的速度,也便于设备小型化和提高安全性[3-5]。
为了加快算法的执行速度,很多学者在算法的实现结构以及执行方式上做了很多研究。
文献[6]提出一种单轮循环结构的SMS4方案,减少了硬件资源的利用,提高了算法的加解密速度。
文献[7]通过对硬件实现SMS4算法加快运行速度,但仅限于软件仿真,在硬件平台上验证不明确。
文献[8]提出利用FPGA 实现SMS4加解密算法,实现最大工作频率139MHz 时,数据吞吐率达到539Mbps 。
文献[9]提出利用迭代体系结构以及加密和密钥扩展的相似性来缩小面积,但以牺牲吞吐量缩小占用面积。
文献[10]中在实现SMS4算法时,采用每轮加密前都需要先计算子密钥的方式进行工作,线性变换的单元没有实现复用,增加了硬件的开销。
为了实现SMS4算法更快的加解密速度和更高的数据吞吐率,同时能够在实际硬件平台上验证算法的正确性。
提出一种在FPGA 中采用循环结构完成密钥扩展以及加解密算法的硬件实现方法,提高算法的运算速度。
通过软件仿真验证了算法的正确性,并将完成的SMS4算法IP 核封装,通过软件调用在实际硬件ZYNQ 器件上测试了算法的正确性,数据吞吐率以及最大工作频率有较好的提高。
1SMS4算法SMS4分组算法是一种对称密码,属于典型的Feistel 结构,分组长度和密钥长度均为128bit ,密钥算法和密钥扩展算法采用32轮非线性迭代结构。
华东交通大学学报2018年1.1相关参量表示字与字节:用Ze表示e比特的元素集合,Z32中元素为字,Z8中元素为字节。
运算:堠表示32位异或运算;<<<i表示循环左移i位。
S盒是一个8比特输入8比特输出的置换,记作sbox(·)。
SMS4密码算法加密密钥长度为128bit,表示为MK=(MK0,MK1,MK2,MK3),其中MKi(i=0,1,…,31)为32bit。
轮密钥表示为(rk0,rk1,…,rk31),其中rk i(i=0,1,…,31)为32bit。
轮密钥由加密密钥生成。
FK为系统参数。
CK=(CK0,CK1,…,CK31)为固定参数,用于密钥扩展算法,其中FKi(i=0,1,…,31),CKi(i=0,1,…,31)均为32bit。
1.2SMS4加解密算法SMS4加密过程经过32次迭代运算和1次反序变换R组成。
明文X和密文Y各分为4组,明文X=(X0,X1,X2,X3),密文Y=(Y0,Y1,Y2,Y3)。
加密算法变换公式如式(1)所示,其中i=0,1,…,31。
Xi+4=Xi堠T(Xi+1堠Xi+2堠Xi+3堠rk i)(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)(1)其中T(·)=L(τ(·))。
τ由4个并行的S盒构成,输入明文A=(a0,a1,a2,a3),输出密文B=(b0,b1,b2,b3),则B 计算如式(2)所示B=τ(A)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3))(2)线性变换L(B),如式(3)所示L(B)=B堠(B<<<2)堠(B<<<10)堠(B<<<18)堠(B<<<24)(3)1.3密钥扩展算法轮密钥由加密密钥通过密钥扩展算法生成。
对应的计算公式如式(4),式(5)所示rk i=K i+4=K i堠T′(K i+1堠K i+2堠K i+3堠K i)(4)K0=MK0堠FK0;K1=MK1堠FK1;K2=MK2堠FK2;K3=MK3堠FK3(5)其中:T′表示合成置换T的线性变换L替换成L′:L′(B)=B堠(B<<<13)堠(B<<<23);K i为轮密钥生成过程中的中间变量;固定参数CK,系统参数CK根据《无线局域网产品使用的SMS4密码算法》来取值[11]。
2SMS4算法硬件实现及IP封装算法SMS4中固定参数CK、FK存储空间为32×32bit,在使用硬件描述语言设计的时候,将参数固定存储在FPGA的RAM中,不占用逻辑资源,采用LUT方式求值增加运算速度。
在FPGA中采用循环结构实现SMS4算法。
扩展密钥电路以及轮函数电路循环使用计算得到加解密的数据。
SMS4算法在文中采用循环结构实现密钥扩展以及加解密算法,结构如图1所示。
2.1密钥扩展密钥扩展运算在设计过程中,采用状态机方式进行运算,包括4个状态Idle,Setkey1,Setkey2,Ready。
空闲状态为Idle,当检查到新数据信号时候,跳转到Setkey1状态,进行公式(5)运算,计算K i(i=1,2,3,4),然后转移到Setkey2状态按照公式(4)计算每一轮的轮密钥rk i,直到计算32次跳转到Ready状态,此时轮密钥准备完成,密钥扩展进入Idle状态。
密钥扩展状态转移图如图2所示。
其中,new_key表示密钥更新状态信号、key_cnt表示计算轮密钥计数信号、da鄄ta_ready表示允许修改密钥信号。
2.2加密在加密过程中,同样采用状态机方法设计,图1SMS4在FPGA中的循环结构Fig.1The circular structure of SMS4in FPGA112第5期图3加密流程状态转移图Fig.3State transfer diagram of encryptionprocess包括4个状态Idle ,ECB1,ECB2,READY 状态。
当检查到新的数据状态状态进入ECB1状态,对输入的128位数据进行分组。
当扩展密钥rk i 准备就绪,进入状态ECB2,按照式(1)~式(4)进行每一轮轮函数值的计算。
直到计算32次之后,进入Ready 状态。
最后通过在Ready 状态进行一次逆序变换R ,得到加密后的数据。
加密流程状态转移图如图3所示,其中,new_data 表示待操作数据更新信号,key_ready 表示轮密钥准备就绪信号,ECB_cnt 表示加密轮数计数信号。
解密过程类似加密。
2.3软件仿真验证采用Verilog HDL 硬件描述语言编写测试程序Testbench 文件,并在仿真软件modelsim 10.0c 集成环境中进行功能仿真。
加密运算仿真波形如图4所示。
初始密钥为:AD92EF2191AE2C4D23DA8167FA45C593;待加密的明文序列为:ABEF12EDAFC2B3163719AD23AE346712;经过32轮加密运算得到的密文为:C8D464FB462B65047D713C9756B10EA7。
在加密运算过程中,输入待加密数据data_i 、密钥key ,通过密钥扩展函数生成轮密钥,当key_ready_o 变为高电平后,进行32次迭代运算和1次反序变换得到输出数据,并且操作完成后信号data_ready_o 变为高电平,此时加密完成。
同理,解密运算和加密操作运算结构相同,只是轮密钥使用顺序相反,可以软件验证解密算法正确。
图4SMS4加密运算仿真波形Fig.4Simulation waveform of SMS4encryptionoperation2.4IP 核封装生成SMS4算法IP 核如图5所示。
生成的SMS4算法集成IP 核,各引脚功能如表1所示。
图2密钥扩展状态转移图Fig.2Transfer diagram of key extended state Setkey1状态(计算K 1,K 2,K 3,K 4)Ready 状态(轮密钥准备就绪)Setkey2状态(计算轮密钥)Idle 状态(空闲)key_cnt!=31n e w _k ey =无条件转移k e y _c n t =31(循环计算32次)n e w _k e y =1(检查到新的密钥)d a t a _re a d y =1(加密完成后才能修改密钥)ECB_cnt!=31ECB2状态(计算每一轮输出)k e y _r e a d y =1(轮密钥准备就绪)无条件结束转移Ready 状态(输出就绪)Idle 状态(空闲)E C B _c n t =31(循环计算32次)n e w _d a t a =1(检查到新的数据)new_key=0ECB1状态(对输入的数据分成四组输入)n e w _d a t a =0张利华,等:基于FPGA 的SMS4算法实现及在线验证113华东交通大学学报2018年3SMS4算法在线平台验证SMS4算法在可扩展处理平台ZYNQ 的可编程逻辑PL 实现,与PS (processing system )通过AXI 总线进行数据交互[12]。