没有合适的资源?快使用搜索试试~ 我知道了~
基于混沌的双模块Feistel结构高安全性高速分组密码算法安全性分析.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 169 浏览量
2023-02-23
20:12:19
上传
评论
收藏 678KB DOCX 举报
温馨提示
试读
17页
基于混沌的双模块Feistel结构高安全性高速分组密码算法安全性分析.docx
资源推荐
资源详情
资源评论
1. 引言
分组密码是密码学的一个重要分支,在保护数据安全方面有着重要的地位,随着 1977
年 DES 分组密码算法的公开,开启了分组密码分析的新时代。影响分组密码方案的安全因
素有多种,如分组长度以及密钥长度等。分析密码安全性主要包括分析算法的部件性质和
分析算法的安全性。算法的部件性质分析主要包括分析算法的结构、S 盒、线性层和密钥
扩展方案。对于算法的安全性分析主要包括 1990 年文献[1]针对 DES 提出的差分攻击,
1993 年 Matsui 针对 DES 提出的线性攻击,计算活性 S 盒个数的下界是另外一种评估分组
密码抵抗差分和线性分析的方法,此外还有不可能差分分析、零相关线性分析、积分攻
击、中间相遇攻击、插值攻击、相关密钥攻击、循环移位攻击和不变量攻击等多种攻击方
法。
2019 年 2 月中国密码学会启动了分组密码算法设计竞赛活动
(http://www.icaisconf.com/)。基于混沌的双模块 Feistel 结构高安全性高速(high security and
high speed block cipher algorithm of two-module FEistel structure based on Chaos, CFE)分组密
码算法是参加竞赛的 29 个分组密码算法之一。该分组密码算法的明文分组支持 128 位和
256 位两种模式,加密轮数为 5 轮。算法使用密钥生成非线性组件 S 盒,利用明文参与非
线性部件的选择,线性变换选用滚动正向加和逆向加策略实现信息扩散。算法设计中先随
机选取种子密钥,将其通过混沌迭代系统生成序列,再利用序列构造密码算法的非线性 S
盒,此设计使得分析者进行密码攻击时,不能将编码环节作为已知因素来构造基于已知 S
盒的差分和线性分析;非线性 S 盒受 1 bit 轮输入因素控制,动态可变,使得分析者不能基
于传统的固定编码环节分析方法进行密码攻击。
CFE 设计文档给出了 5 轮差分密码分析活性 S 盒个数的下界为 14,并指出不存在弱
密钥。本文针对候选算法 CFE 的密码部件的性质进行了分析,并研究了算法的安全性,给
出了 1 到 5 轮最小活性 S 盒的个数以及概率,构造了 5 轮不可能差分特征链并利用其进行
了区分攻击并讨论了算法 5 轮零相关线性特征。
本文结构如下,第 2 节对密码算法进行描述,第 3 节讨论密码结构和部件的安全性,
第 4 节对密码算法安全性进行分析,第 5 节总结全文。
2. CFE 分组密码算法概述
算法中使用的是一类时空混沌系统,其定义为
$$ {x_{n + 1}}{{(}}i{{) = (}}1 - arepsilon {{)}}\;f({x_n}(i)) + arepsilon f({x_n}(i - 1)) $$
(1)
式中,$n{{ = 0,}}\;1,\; ···,\;N$为离散时间坐标,${x_n}(i)$表示第$i$个格点在时刻
$n$的状态值,$i{{ = 0,}}\;1, ··· ,L - 1$,其中 L 表示格子的数目,$\varepsilon $为耦合强
度,且式(1)的边界条件为${x_n}{{(}}i + L{{)}}\;{{ = }}{x_n}(i)$,子系统$f$采用 Logistic
映射,即
$$ f({x_n}(i)) = 4{x_n}(i)(1 - {x_n}(i)) $$
(2)
(1) 首先利用时空混沌系统产生序列
(a)将密钥 K 转为混沌初始值${x_0} = ({x_0}(0),{x_0}(1), $$ ··· , {x_0}(7))$, ${x_0}$为
双精度浮点数。转化规则为
$$ \left. \begin{aligned} & {{x_0}(i) = \frac{{K(i) + 1}}{{{2^{48}} + 21}} \times \frac{1}{2},}\;\;{i = 0} \\ &
{{x_0}(i) = \frac{{K(i) + 1}}{{{2^{48}} + 1}} \times \frac{1}{2},}\;\;{i = 1,2, ··· ,7} \end{aligned} \right\} $$
(3)
(b) 将步骤(a)得到的${x_0}$作为初始值,代入式(1)迭代${n_0} + n$次,其中系统参
数$\varepsilon = 0.2$, $L = 8$;
(c) 抛弃前${n_0}$次的状态值,保存后$n$次的状态值并记为 SeqM,其大小为$n
\times 8$。
(2) 其次生成密钥流和子密钥
(a) SeqM 转为向量 SeqV,其大小为$8n$;
(b) 将 SeqV 转为 8 bit 的密钥流序列的规则为
$$ {\rm{KS}} = {\rm{floor}}({\bf{SeqV}} \times {10^{15}})\;od \;\;256 $$
(4)
(c) 取 SeqV 的前${n_{{\rm{ks}}}}$个元素作为子密钥,${\bf{SK}} =
$$ {\bf{SeqV}}(0:{n_{{\rm{ks}}}} - 1)$。
(3) 最后生成 S 盒
(a) 初始化:S1 和 S2 按行赋值$(0,1, ··· ,255)$;
(b) 构造两个$16 \times 16$的随机矩阵 RM1 和 RM2:分别取 KS 连续的 256 个元
素,令${\rm{RV}}1 = {\rm{KS}}({n_{{\rm{ks}}}}$, ${n_{{\rm{ks}}}} + 255);\;
{\rm{RV}}2 = {\rm{KS}}({n_{{\rm{ks}}}} + 256,{n_{{\rm{ks}}}} + 511)$,将两者逐行扫
描转为$16 \times 16$的随机矩阵 RM1 和 RM2;
(c) 利用 RM1 和 RM2 随机化初始的 S1 和 S2:为了达到这一目标,依次取
RM1(RM2)的每一个位置$(k,l)$上的元素的最高 4 位和最低 4 位表示为另一个位置$(i,j)$,
其中$k = 0,1, ··· ,F;\;l = 0,1, ··· ,F$,然后对应的将 S1(S2)位置$(k,l)$上的数和$(i,j)$上的数进
行交换,按顺序进行 256 次交换即可。
剩余16页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3652
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功