3.分组密码分析

合集下载

分组密码的基本特征

分组密码的基本特征

分组密码的基本特征
分组密码是对明文进行分块处理,然后对每个分组进行加密操作。

以下是分组密码的基本特征:
1. 分组长度:分组密码将明文分成固定长度的分组进行处理。

分组长度可以是固定的,也可以是可变的,但在同一次加密过程中,分组长度保持一致。

2. 加密模式:分组密码使用特定的加密模式对每个分组进行加密。

常见的加密模式包括电子密码本模式(ECB)、密码块链模式(CBC)等。

3. 初始向量:在使用某些加密模式时,分组密码需要使用一个初始向量(IV)来增加加密过程的随机性和安全性。

初始向量通常与第一个分组一起使用,而后的分组则与前一个分组相关。

4. 密钥:分组密码使用一个密钥对每个分组进行加密。

密钥长度可以是固定的或可变的,但对于每个分组来说,密钥长度保持一致。

5. 填充方式:由于分组长度固定,对于最后一个分组可能不足分组长度的明文需要进行填充。

填充方式可以是填充字符、填充比特等。

6. 迭代次数:分组密码通常会对每个分组进行多次迭代加密,以增加安全性。

迭代次数通常由密码算法和加密强度决定。

7. 可逆性:分组密码的加密操作是可逆的,即可以通过相应的解密操作将加密后的分组转换回原始的明文分组。

总体而言,分组密码通过将明文分成固定长度的分组,并使用特定的加密模式、初始向量、密钥和迭代次数对每个分组进行加密,以保护明文的安全性。

分组密码原理

分组密码原理

分组密码原理
分组密码是一种密码算法,它将明文分为固定大小的块(通常为64位或128位),然后通过一系列的加密操作将每个分组
转换为对应的密文分组。

分组密码的核心原理是使用一个密钥来对每个分组进行加密。

加密过程包括多个轮次,每个轮次都涉及到多个步骤,如替代、置换、混淆和线性变换等。

在每个轮次中,明文分组会与密钥的某个子密钥进行混合,生成一个中间结果,然后再进行下一轮的操作。

最后一轮的结果即为该分组的密文。

在解密过程中,密文分组会经过与加密过程相反的操作,使用相同的密钥和子密钥来逐步还原为原始的明文分组。

分组密码的优势在于它可以处理大量的数据,并且能够抵抗多种密码攻击。

同时,通过不同的密钥和轮次数的组合,可以生成不同的密码变种,提供更高的安全性。

然而,分组密码也存在一些限制。

首先,由于每个分组的加密是独立进行的,所以加密过程中的错误可能会影响整个密文分组的完整性。

其次,分组密码的加密速度相对较慢,不适用于一些实时的应用场景。

总的来说,分组密码通过将明文分组成固定大小的块,并使用密钥和一系列的操作对每个分组进行加密,从而保护数据的机密性和完整性。

SM4算法、AES算法、DES算法三种分组密码的基础分析

SM4算法、AES算法、DES算法三种分组密码的基础分析

SM4算法、AES算法、DES算法三种分组密码的基础分析 分组密码当中代表性的SM4算法、AES算法、DES算法在计算机和通信系统中起着重要的实际作用,每一种的算法都会有其独有的一份结构,讲解起来其实每一种都有很大的一个篇幅。

在这里主要是把这几种密码算法放在一起做一个简单的分析,也可以通过了解每一种算法来比较一下三者之间的差别。

那么,我们就通过了解SM4算法、AES算法、DES算法这几种有代表性的近代分组密码来讨论一下分组密码的基本理论及其在计算机和通信系统中的实际应用。

1、SM4算法 SM4密码算法是一个分组算法,其算法设计简沽,结构有特点,安全高效。

数据分组长度为128比特,密钥长度为128比特。

加密算法与密钥扩展算法均采取32轮迭代结构。

SM4密码算法以字节8位和字节32位作为单位进行数据处理。

SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

SM4密码算法结构 SM4算法的基本内容有以下几方面: 基本运算:SM4密码算法使用模2加和循环移位作为基本运算。

基本密码部件:SM4密码算法使用了S盒、非线性变换τ、线性变换部件L、合成变换T基本密码部件。

轮函数:SM4密码算法采用对基本轮函数进行迭代的结构。

利用上述基本密码部件,便可构成轮函数。

SM4密码算法的轮函数是一种以字为处理单位的密码函数。

加密算法:SM4密码算法是一个分组算法。

数据分组长度为128比特,密钥长度为128比特。

加密算法采用32轮迭代结构,每轮使用一个轮密钥。

解密算法:SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密铝的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

密钥扩展算法:SM4密码算法使用128位的加密密钥,并采用32轮法代加密结构,每一轮加密使用一个32位的轮密钥,共使用32个轮密钥。

因此需要使用密钥扩展算法,从加密密钥产生出32个轮密钥。

分组密码的分析和设计

分组密码的分析和设计

二、分组密码实例分组密码(Block Cipher):一次处理一块输入,每个输入块生成一个输出块;将明文消息划分成固定长度的分组,各分组分别在密钥的控制下变换成等长度的密文分组。

数据加密标准DESDES 概述:DES 是分组长度为64bit 的分组加密算法,64bit 的明文分组从算法的一端输入,64bit 的密文分组从算法的另一端输出。

DES 的密钥长度是64bit(8Byte),但是每个字节的第8位都用作奇偶校验位,故实际密钥长度是56bit 。

简单的说,算法只不过是加密的两种基本技术----混乱和扩散的组合。

DES 基本组建分组是这些技术的一个组合(先代替后置换),它基于密钥,作用于明文,这就是众所周知的轮变换(round )。

在DES 中有16轮,这就意味着要在明文上16次实施相同的组合技术。

DES 是对称加密算法,加密和解密用的是同一算法(密钥顺序及应用方向与加密过程相反)。

加密算法m 比特明文x 比特密钥n 比特密文 解密算法x 比特密钥m 比特明文加密过程和解密过程的区别:“方向和过程刚好相反”。

也就是说“解密过程是加密过程的反过程”,DES算法解密过程是加密过程的“逆”运算。

DES加密过程:算法的概要DES对64位的明文分组进行操作。

经过一个初始置换,将明文分组分成左,右两部分,各32位长,然后进行16轮完全相同的运算,也称为"函数f",在运算的过程中数据与密钥结合。

在每一轮中,密钥为移位,然后在从密钥的56位中选出48位,通过一个扩散置换将数据的右半部分扩展成48位,并通过一个异或操作与48位密钥结合,通过8个S-盒将这48位替代为新的32位数据,再将其置换一次,这四步运算构成了f函数。

然后再通过另一个异或运算,使f函数的输出与左半部分结合,其结果就形成了新的右半部分,原来的右半部分变成新的左半部分,即对于第i次迭代,用L和R表示第(i-1)次迭代后的左右两部分(各32bit),则Li = Ri-1Ri= Li-1⊕f( Ri-1,Ki ) (i=2,3, (16)这里ki是64bit密钥k产生的子密钥,ki是48bit。

分组密码算法和流密码算法的安全性分析

分组密码算法和流密码算法的安全性分析

分组密码算法和流密码算法的安全性分析当今是一个网络时代,人们的生活方式与过去相比发生了很大的变化,足不出户就可以通过网络解决衣食住行中的绝大多数需求,例如,用淘宝网购买所需、用支付宝进行日常支付、用电子银行转账等等。

生活变得快捷而又方便。

然而,事物都有两面性,伴随着生活的便捷而来的是财产安全和个人隐私的保障问题。

这时,密码的使用就是在网络上对我们进行保护的一个关键技术点。

它是类似防火墙似的存在,是一切网络活动的基石。

在网络传输时一般使用的是对称加密算法来进行加密操作,如流密码算法和分组密码算法。

因此,对现有的被广泛重视和使用的分组密码算法和流密码算法的安全性进行研究和分析是非常有必要的。

在本文中,首先,我们针对分组密码算法建立统计积分区分器和多结构体统计积分区分器新模型,并将模型应用于实际算法中;其次,基于MILP方法首次将S盒的差分特征和线性特征考虑进不可能差分路线和零相关路线的自动化搜索中,首次给出ARX算法通用的不可能差分路线和零相关路线的自动化搜索方法,并将该方法应用于实际算法中;最后,在相关密钥场景下利用不可能差分方法给出流密码算法Lizard的安全性分析结果。

具体结果如下。

提出分组密码算法统计积分区分模型,并利用该模型理论破解Skipjack变种算法、给出CAST-256的最优攻击结果和IDEA的最优积分攻击结果:积分攻击是对称密码领域最强大的分析方法之一,被广泛的应用于分组密码算法的安全性分析中。

它是基于概率为1的平衡特性来构建区分器。

攻击者可以通过固定输入的一部分比特而遍历剩下的所有比特的可能取值,观察相应的输出值在某些比特上是否为均匀分布来区分真实算法和随机置换。

为了增加积分区分器的覆盖轮数,攻击者通常会在整个明文空间的限制条件下以特定的结构来遍历更多的明文比特以使得平衡特性依然成立。

然而这一要求限制了积分攻击在很多算法分析中的应用。

在本文中,为降低积分分析中使用的数据复杂度,我们基于超几何分布和多项分布为算法和随机置换构造不同的概率分布来进行区分,从而构建了统计积分这一新模型。

第四章分组密码

第四章分组密码

2
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3
15 12 8 2 4 9 1 7 5 11 2 14 10 0 6 13
扩散和混淆
扩散将明文的统计特性散布到密文中。 实现的方式是使明文的每一位影响密文 中多位的值。
S盒的设计准则
迄今为止,有关方面未曾完全公开有关DES的S盒的设计准 则。Branstead等曾披露过下述准则: P1 S盒的输出都不是其输入的线性或仿射函数。 P2 改变S盒的一个输入比特,其输出至少有两比特产生变 化,即近一半产生变化。 P3 当S盒的任一输入位保持不变,其它5位输入变化时(共 有25 =32种情况),输出数字中的0和1的总数近于相等。 这三点使DES的S盒能够实现较好的混淆。
迭代分组密码
若以一个简单函数f,进行多次迭代,就称其为迭代密码。
每次迭代称作一轮(Round)。相应函数f称作轮函数。
每一轮输出都是前一轮输出的函数,即y(i)=f[y(i-1), k(i)],其 中k(i)是第i轮迭代用的子密钥,由秘密密钥k通过密钥生成 算法产生。
y(0) = x
y(1)
代换网络
密码设计中需要先定义代换集S,而后还需 定义解密变换集,即逆代换网络S-1,它以 密文y作为输入矢量,其输出为恢复的明文 矢量x。
要实现全代换网络并不容易。因此实用中 常常利用一些简单的基本代换,通过组合 实现较复杂的、元素个数较多的代换集。 实用密码体制的集合S中的元素个数都远小 于2n!。
代换盒(S盒)
在密码设计中,可选n=rn0,其中r和n0都为正整数, 将设计n个变量的代换网络化为设计r个较小的子代换 网络,而每个子代换网络只有n0个输入变量。称每个子 代换网络为代换盒(Substitution Box)

分组密码算法

分组密码算法

分组密码算法
分组密码是一种重要的密码技术,它可以将一段乱序数据进行安全加密,使其变得无
法解读和破解。

它一般用于对网络数据进行安全传输和存储,以保护用户和组织信息安全,使数据不会被恶意加密,偷窃或者泄露。

分组密码实质是将明文拆分成小块,在小块的基础上进行数据的加解密,使攻击者解
密时无法拼凑原文,从而达到安全传输的目的。

它基本上可以分为密码分组移位算法、分
组密码替换算法和分组密码衍射算法三种,分组密码替换算法是目前应用最广泛的分组密
码算法。

分组密码替换算法是按照一定的规则将明文数据转换成密文数据,加密过程中利用一
系列替换表(称之为字符映射表),对一组明文字符(一般为8个字节)进行映射,字符
的比特位的增加、减小,两个不同的比特位的交换,以增加密文的复杂性,达到保护信息
安全的目的。

此外,分组密码还需要有一个加盐算法,通过加入一些单独的随机值,而不是使用一
个定值作为秘密密钥,对密文进行加密,使得攻击者更难以破解数据。

当然,这也要求使
用者有一定的数学基础,以及一定的计算机能力,才能正确实现加解密算法。

因此,分组密码是一种安全可靠的信息加解密算法,可以有效保护用户和组织的数据
安全,但可能要求使用者有比较强的数学基础和计算机能力,才能正确使用这一算法。

安全分组密码的工作模式

安全分组密码的工作模式
thatsignup,成员 on
VS

叨 叨 st
a
how 的确 these 在此 st on
01
02
03
!! 巫
掏`` st st above
it onthe`` that that, among this on on on on on, on the on萜!,!the
01
on on, as, among too on the for the for the on on, that on,theonthe too on the on the, that on叨`` has, for the member...
02
on`` for.,还行 全员 stith that st too: the OnWist too st too st too member being for how said too vis a- among,, like taken``!! said indeed), “
03
though the st have said sp and for too! said said has that17... real... for how shows these ... that show how... kind too, among as is...!, like these sm
通信安全
分组密码用于加密通信过程中的数据,确保信息传输的机密性和完整性。
存储安全
在数据存储场景中,分组密码用于加密敏感数据,防止未经授权的访问和数据泄露。
身份认证
分组密码也用于身份认证过程,通过加密和验证加密数据的完整性来确认用户身份。
02
分组密码的基本原理
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“中间相错”是构造不可能差分区分器最基本的 方法。
-- 25 --
-- 26 --
利用中间相错技术,在F函数是双射的条件下构造5轮 Feistel结构的不可能差分区分器。
-- 27 --
不可能差分分析的一般步骤
z 寻找r轮不可能差分a0→ ar ; z 选择满足输入差分为a0的明文对(P,P⊕a0),并进
PS: 一个结构中包含232组明文,每个结构内部能 够生成263对差分对。全部结构能够生成263+N 对 明文。因此可以获得263+N 对密文。
-- 37 --
Step 2. 在Step1生成的263+N个密文对中,保留在第 2,3,5,6,8,9,12,15这8个字节处为0的密文对,并抛弃 其余的密文对。 PS:密文满足Step2条件的概率为(2-8)8=2-64,因此, 经过Step2,剩余2N+63-64=2N-1个明密对被留下。
W 正确密钥: 一定不产生不可能差分
W 错误密钥: 一定的概率产生不可能差分
-- 23 --
加密 解密
差分分析VS不可能差分分析
差分分析: 利用密码算法的高概率差分(差分传递链),通过 统计方法来恢复密钥。
不可能差分分析: 利用概率为0的差分对正确密钥进行区分,如果用 候选密钥对一对明密文进行部分加脱密之后得到概 率为0的差分对应,那么该候选密钥必定是错误密 钥,应予以抛弃。当抛弃完所有的错误密钥之后剩 余的就为正确密钥。
?
0
0
⎟ ⎟
⎜0 0 ? ?⎟ ⎜0 0 ? ?⎟ ⎜? ? 0 0⎟ ⎜? ? 0 0⎟

⎟⎜
⎟⎜
⎟⎜

⎝? 0 0 ?⎠ ⎝? 0 0 ?⎠ ⎝? ? 0 0⎠ ⎝? ? 0 0⎠
4-R
⎛? ? 0 0⎞ ⎛? ? 0 0⎞ ⎛? ? 0 0⎞ ⎛? ? 0 0⎞
⎜ ⎜
?
?
0
0
⎟ ⎟
SB−1

⎜ ⎜
行r+1轮加密,将求得的密文记作C和C*; z 猜测第r+1轮的密钥Kr+1的可能值,用每次猜测
的密钥对C和C*进行一轮脱密,得到r轮输出值 D和D*,判断D⊕D* = ar 是否成立,若成立, 则所猜测的Kr+1一定是错误密钥; z 重复上述过程,直至密钥唯一确定。
-- 28 --
复杂度分析
z 假设:
?
?
0
0
⎟ ⎟
⎜? ? 0 0⎟
⎜ ⎝
?
0
0
0
⎟ ⎠
⎛δ 0 0 0⎞ ⎛δ 0 0 0⎞
⎜ ⎜
0
0
0
⎜ ⎜
0
0
0
0
⎟ ⎟
⎜0 0 0 0⎟ ⎜0 0 0 0⎟
⎜ ⎝
0
0
0
0
⎟ ⎠
⎜ ⎝
0
0
0
0
⎟ ⎠
⎛? ? 0 0⎞ ⎛? ? 0 0⎞ ⎛? ? 0 0⎞ ⎛? ? 0 0⎞
⎜ ⎜

⎝0 0 0 0⎠ ⎝0 0 0 0⎠
⎛? ? 0 0⎞ ⎛? ? 0 0⎞ ⎛? ? 0 0⎞ ⎛? ? 0 0⎞
⎜ ⎜
?
?
0
0
⎟ ⎟
SB −1

⎜ ⎜
?
?
0
0
⎟ ⎟
SR−1

⎜ ⎜
?
0
0
?
⎟ ⎟
ARK6−1

⎜ ⎜
?
0
0
?
⎟ ⎟
分组密码的设计(结构设计)
Feistel结构
• DES • Camellia • FEAL • Blowfish • Mars • CAST-256 • SMS4 •…
SP结构
• Rijndael • ARIA • Shark • Square • Serpent •…
Lai-Massey结构
• IDEA • FOX •…
-- 18 --
3
本章内容
1. 分组密码设计概况 2. 分组密码分析概况 3. AES-128算法的不可能差分分析 4. AES-128算法的低数据Biclique分析 5. GOST算法全轮3-子集中间相遇攻击 6. 约束规划和自动化搜索
-- 19 --
AES-128不可能差分分析
z 基本概念 z 不可能差分分析方法原理 z AES算法及其不可能差分分析 z AES算法结构的不可能差分区分器 z SPN结构不可能差分的刻画
W 第r+1轮涉及的密钥长度为|K|-bit。 W 每个明密对能够淘汰2-t的密钥。
z 在所有的2|K|密钥中,正确密钥为1个,错误密钥 为2|K| -1个。为了保证正确密钥唯一确定,所需要 的明文数量N必须满足,使剩余错误密钥数量小 于1,也即 (2|K| -1) (1-2-t)N<1 近似等价于N > 2t-0.53|K|。
-- 24 --
4
不可能差分分析的一般方法
不可能差分区分器的构造阶段 ——选出概率为0的差分(不可能差分区分器)。
密钥筛选阶段 ——利用概率为0的差分恢复密钥的阶段。
不可能差分区分器的构造
直接搜索——Shrinking[Biham 99]、Wu[ 12]
中间相错——U方法[Kim 03],UID方法[Luo 09]。
分组密码的分析方法
代数攻击和插值攻击是两种最有潜力的攻击方法:
W插值攻击: z 拉格朗日插值公式 z 傅里叶变换。
W代数攻击: z S盒满足的代数方程 z 超定方程的求解。
分组密码的分析方法
代数攻击和插值攻击攻击的基本思想:
W列方程: 建立密钥、明文、密文三者相关的方程组
W解方程 求解代数方程组
-- 17 --
(2)基于物理实现的分析方法 计时攻击、能量攻击、电磁攻击、故障攻击、
缓存攻击
-- 11 --
分组密码的分析方法
根据攻击条件的不同,密码分析可分为如下五种类型: ¾ 唯密文攻击 ¾ 已知明文攻击 ¾ 选择明文攻击 ¾ 选择密文攻击 ¾ 相关密钥攻击
-- 12 --
2
分组密码的分析方法
根据攻击手段不同,密码分析可以分为如下四种类型: ¾ 朴素攻击方法:暴力破解、查表攻击、字典攻击、 时空权衡
?
?
0
0
⎟ ⎟
SB−1

⎜ ⎜
?
?
0
0
⎟ ⎟
SR−1

⎜ ⎜
?
0
0
?
⎟ ⎟
ARK6−1

⎜ ⎜
?
0
0
?
⎟ ⎟
⎜? ? 0 0⎟ ⎜? ? 0 0⎟ ⎜0 0 ? ?⎟ ⎜0 0 ? ?⎟

⎟⎜
⎟⎜
⎟⎜

⎝? ? 0 0⎠ ⎝? ? 0 0⎠ ⎝0 ? ? 0⎠ ⎝0 ? ? 0⎠
Step 1. 选择2N组明文结构:每一组在0,5,10,15字 节处遍历{0,1}8,其余12个字节取常值。对这些明 文加密,得到相应的密文。
-- 20 --
基本概念
多数分组密码算法通常 设计成迭代型。即:在 密钥参数控制下,利用 固定结构的轮函数串联 形成密码算法。
-- 21 --
差分分析
r1 加密
r
22 r2 解密
-- 22 --
不可能差分分析
概率为0的差分路线 中间不可能相遇(Miss in the middle) 尽可能多的头、尾加一些轮数,猜测对应 的密钥:
⎜ ⎜
0
α2
0
0
⎟ ⎟
ARK0

⎜ ⎜
0
α2
0
0
⎟⎜

SB


0
β2
0
0
⎟ ⎟
SR

⎜ ⎜
β
2
0
0
0
⎟ ⎟
⎜0 ⎜ ⎝0
0 0
α3 0
0⎟
α
4
⎟ ⎠
⎜0 ⎜ ⎝0
0 0
α3 0
0⎟
α
4
⎟ ⎠
⎜0 ⎜ ⎝0
0 0
β3 0
0⎟
β
4
⎟ ⎠
⎜ ⎜ ⎝
β3 β4
0 0
0 0
0⎟ ⎟
0⎠
⎛0 ? 0 0⎞
⎜ ⎜
-- 3 --
分组密码的设计(安全性原则)
z 安全性原则主要考虑三个方面:
¾ 混乱原则 应使得明文、密文和密钥三者间的依赖关系相当复杂。
¾ 扩散原则 应使得明文(密钥)的每一位数字影响密文的许多位数 字。
¾ 抗现有攻击原则 应能抵抗所有已知的攻击。
-- 4 --
分组密码的设计(结构设计)
z 分组密码的结构特征 ¾ SP结构 ¾ Feistel结构 ¾ Lai-Massey结构
⎜0 ⎜ ⎝0
0 0
β3 0
0⎟
β
4
⎟ ⎠
⎜ ⎜ ⎝
β3 β4
0 0
0 0
0⎟ ⎟
0⎠
⎛0 ? 0 0⎞
⎜ ⎜
?
?
0
0
⎟ ⎟
⎜? ? 0 0⎟
⎜ ⎝
?
0
0
0
⎟ ⎠
⎛δ 0 0 0⎞ ⎛δ 0 0 0⎞
4-R
⎜ ⎜
0
0
0
0
⎟ ⎟
ARK1

⎜ ⎜
0
0
0
0
⎟ ⎟
⎜0 0 0 0⎟ ⎜0 0 0 0⎟
相关文档
最新文档