没有合适的资源?快使用搜索试试~ 我知道了~
基于FPGA的FESH分组密码算法高速实现.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 13 浏览量
2022-06-17
16:12:14
上传
评论
收藏 237KB DOCX 举报
温馨提示
试读
12页
基于FPGA的FESH分组密码算法高速实现.docx
资源推荐
资源详情
资源评论
0 引言
随着科技的不断发展信息的安全性逐渐被人们重视起来为保证信息安全、
避免重要信息被篡改和破坏、避免网络空间的信息危机 各种信息保护方法不断
被提出。密码学技术作为信息保护的有效工具在信息安全上起到了至关重要的
作用
基于密码学原理的信息安全方案在网络空间安全中发挥了重要的作用
。密码学在信息安全应用
、加密保护、保证信息完整性
、数字签名与身
份验证
等方面有着广泛应用不同的密码算法也随之发展起来从不同方面维护
信息安全。
分 组 密 码 算 法 因 其 具 有 较 强 的 适 应 性 一 直 是 人 们 关 注 的 焦 点
如
、
、
等。分组密码算法在
、物联网安全
和车联网安全
方面有着广泛的应用能够很好地满足新时代对信息安全的需
求。
分组密码算法由贾珂婷
等人设计在 年中国密码学会举办的全
国密码算法竞赛中经过评估审议进入了第二轮评选。该算法采用替换 置换网络
()结构构建构造方案简洁、便于实现能够应用于 网络和物联网等场
景。算法兼顾了安全性和软硬件实现性能能够提供高效的密码保护。为了适应
算法对快速高效的要求本文对 分组密码算法进行 !"#$%&' 硬件实现
并在运行效率上进行了优化。
1 FESH 分组密码算法
分组密码算法共有 种形式明文分组长度为 n()密钥长度为 m()
记为 n m 。 种形 式 分 别 为 、 、
、 、 、 其详细信息如表
所示。本文主要实现 型密码算法。
表 1FESH 分组密码算法
算法 分组长度(n)/bit 密钥长度(m)/bit 轮数(N)
新窗口打开|下载 CSV
分组密码算法的加解密都是基于字的操作 从比特串到字的生成规则
为: 个连续的比特串ßb
b
b
b
b
b
b
b
组成一个字节其中 b
为最高有效位b
为
最低 有 效位 。 字节 到 字的 转 换采 用 大端 序 。 %() 分组可 以表示 为 个字。
分组密码算法基于 结构通过多次迭代运算实现包括加解密算法和
密钥生成算法。
*%加密算法
加密算法的输入为 %() 明文和 %() 初始密钥。首先将输入的明文与
初始密钥(RK
)异或得到状态 X+然后进行 轮(轮函数)迭代运算。加密轮
函数包括 S 盒替换(SubNibble)、字混合(MixWord)和轮密钥加其中轮密
钥由密钥生成算法生成。
)S 盒替换
分组密码算法采用 %() 的 S 盒进行设计该 S 盒替换基于半字节的非
线性替换。将 %() 状态 X 划分为 个字,x
-x
-x
-x
.将每个字的第 i() 取出
组合为半字节 s
i/
,x
i
00-x
i
00-x
i
00-x
i
.用该半字节查询 S 盒。将获得的新值替换原
值获得对应的输出状态 Y 即 Y/-SubNibble,X. 状态 Y 与输入的 X 都是
()。该 S 盒也可以使用 () 1#2" 实现。
)字混合
字混合运算是基于字的线性运算。将 S 盒替换后的输出状态 Y 划分为 个
字 ,y
y
y
y
. 每 个 字 % () 然 后 进 行 字 混 合 线 性 运 算 获 得
Z/,z
-z
-z
-z
./-MixWord-,Y.。
)轮密钥加
在第 r(r/3-N)轮加密过程中将字混合运算后的输出状态 Z 与轮密钥
,RK
r
.逐比特异或获得该轮加密结果。第 轮加密完成后输出 %() 密文加
密结束。
*%密钥生成
分组密码算法的密钥生成轮函数与加密轮函数相似 是其简化模式。
对 于 型 密 码 算 法 密 钥 长 度 和 分 组 长 度 相 等 其 轮 密 钥
RK
i
(i/3-N)由密钥生成算法利用 F 函数生成如公式()所示。
RKi=F(RKi−1,Csti−1)4/,451)5.
()
其中i/3-N。F 函数是一个简化的轮函数输入上一轮生成的密钥和本
轮所需常数即可生成该轮所需密钥。 F 函数包括常量加(ARC )、S 盒替换
(SubNibble6K)和密钥字混合(MixWord_K)运算。首先将输入密钥与常数
异或得到异或结果 X
k
+然后进行 S 盒替换获得输出状态 Y
K
+最后进行字混合运算
输出最终密钥 Z
K
。
常量加运算通过异或常数来破坏密钥生成算法的对称特性因此每轮异或的
常数都不同。初始常数 Cst
是一个常数分组长度为 %() 时为 位即 Cst
/
78。其余常数由初始常数 Cst
通过右循环移位生成在密钥生成过程
中第 i 个常数为 Cst
i-/
Cst
999i。
S 盒替换的设计与加密算法中 S 盒设计类似采用 %() 的 S 盒基于半字节
的非线性替换。将每个字的第 i() 取出合并为半字节 s
i/-
,x
i
00-x
i
00-x
i
00-x
i
.用该
半 字 节 查 询 S 盒 。 将 获 得 的 新 值 替 换 原 值 获 得 对 应 的 输 出 状 态
Y
K
/SubNibble6K,X
K
.。该 S 盒同样可以使用 () 1#2" 实现。
字混合运算是基于字的线性运算。密钥生成中字混合运算采用加密轮函数
字 混 合 运 算 的 简 化 版 输 入 Y
K
/,y
y
y
y
. 输 出 % () 的 轮 密 钥
Z
K
/,z
-z
-z
-z
.%/-MixWord6K,Y
K
.。
2 硬件语言实现
在算法设计过程中根据功能将 分组密码算法的数据输入输出和各轮
加密之间的数据交换设计为顶层模块将加密运算模块和密钥生成模块进行元件
例化在顶层模块中直接对其进行调用。将密钥生成模块中的 S 盒替换和加密运
算模块中的 S 盒替换进行元件例化使用时对其进行反复调用。顶层模块与第一
层元件之间、第一层元件与第二层元件之间只需用输入输出端口完成数据传输
即可整体结构如图 。
图
图 1算法整体结构
在实现过程中首先使用有限状态机进行算法实现
在此基础上应用流水
线结构对顶层模块进行速度优化提高数据吞吐量。
*%有限状态机实现
使用有限状态机
实现顶层模块时在输入控制时钟的基础上添加一个输
入判断位来判断是否执行加密操作若判断位输入为 则执行下一步操作每一步
剩余11页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3677
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- mod-ldap-2.4.6-31.el7.centos.1.x86-64.rpm
- mod-ldap-2.4.6-40.el7.centos.x86-64.rpm
- ResNet50模型训练猫狗数据集
- mod-ldap-2.4.6-80.el7.centos.x86-64.rpm
- mod-ldap-2.4.6-88.el7.centos.x86-64.rpm
- mod-ldap-2.4.6-89.el7.centos.1.x86-64.rpm
- mod-ldap-2.4.6-89.el7.centos.x86-64.rpm
- mod-ldap-2.4.6-99.el7.centos.1.x86-64.rpm
- 开源代码分享(31)-计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
- meta-llama-3-8b-instruct 的 model-00002-of-00004.safetensors 的1/3
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功