密码分析(一):差分密码分析

article/2025/10/4 0:58:51

文章目录

  • 一、选择明文攻击(chosen-plaintext attack, CPA)
  • 二、差分密码分析(differential cryptanalysis)
    • 1.原理
    • 2.过程
      • 2.1 S盒差分分布表
      • 2.2 S盒的差分分析
  • 总结
  • 参考文献

差分分析是一种选择明文攻击,其基本思想是:通过分析特定明文差分对相对应密文差分影响来获得尽可能大的密钥。它可以用来攻击任何由迭代一个固定的轮函数的结构的密码以及很多分组密码(包括DES),它是由Biham和Shamir于1991年提出的选择明文攻击。


一、选择明文攻击(chosen-plaintext attack, CPA)

通过选择对攻击有利的特定明文及对应的密文,求解密钥或从截获的密文求解相应明文的密码分析方法。

在选择明文攻击时,密码分析者对明文有选择或控制的能力,可选择他认为有利于攻击的任何明文及其对应的密文,是一种比已知明文攻击更强的攻击方式。如果一个密码系统能够抵抗选择明文攻击,那么必然能够抵抗唯密文攻击和已知明文攻击。

选择明文攻击较难实现。一种情形是假设密码分析者临时获得加密机器的访问权,但加密密钥被安全嵌入在设备中,分析者得不到密钥,此时可通过加密大量选择的明文,然后利用产生的密文来推测密钥。

已知: P 1 , C 1 = E k ( P 1 ) , P 2 , C 2 = E k ( P 2 ) , . . . , P i , C i = E k ( P i ) P_1,C_1=E_k(P_1),P_2,C_2=E_k(P_2),...,P_i,C_i=E_k(P_i) P1,C1=Ek(P1),P2,C2=Ek(P2),...,Pi,Ci=Ek(Pi),其中, P 1 , P 2 , . . . , P i P_1,P_2,...,P_i P1,P2,...,Pi可由密码分析者选择。
推导出:密钥K,或从 C i + 1 = E k ( P i + 1 ) C_{i+1}=E_k(P_{i+1}) Ci+1=Ek(Pi+1) 推导出 P i + 1 P_{i+1} Pi+1的算法。

典型的选择明文攻击方法有碰撞攻击和差分攻击等。本篇主要讲解差分攻击的原理,过程以及实例。

二、差分密码分析(differential cryptanalysis)

1.原理

差分分析的目标是获得加密的子密钥。
差分分析最早由Murphy于1990年提出,随后 Biham 和 Shamir 又在一系列研究里对该技术进行了发展,适用于过度使用异或操作的分组密码算法。

所谓差分分析,是指追踪明文对的“差异”的传播。这里的“差异”由我们根据目标进行定义,可以是异或值,也可以是其它。针对DES,使用的就是异或值定义“差异”,或者称之为“距离”,有些地方也称为“特征”(characteristic)。

比如说,选定明文 P 1 P_1 P1,明文之间的“差值”(differential)为 δ \delta δ,于是另一个明文就是 P 1 + δ P_1+\delta P1+δ,明文 P 1 P_1 P1对应的密文为 C 1 C_1 C1,明文 P 1 + δ P_1+\delta P1+δ对应的密文与 C 1 C_1 C1的“距离”是 ε \varepsilon ε
P 1 → C 1 P 1 + δ → C 1 + ε P_1 \rarr C_1 \newline P_1+\delta \rarr C_1+\varepsilon P1C1P1+δC1+ε
如果 δ \delta δ 以一定的概率对应着 ε \varepsilon ε,就称 δ \delta δ 是一个差分特征。其实这个过程主要关注的是非线性函数,AES中主要是S盒非线性,DES是Feistel结构中的F函数。

2.过程

一般的S盒是以2进制进行表示的,即 π s : { 0 , 1 } m → π s : { 0 , 1 } n \pi_s:{\{0,1\}}^m \rarr \pi_s:{\{0,1\}}^n πs:{0,1}mπs:{0,1}n是一个S盒,对二进制的S盒的攻击很多文献都有给出,也可参考《密码学原理与实践(第三版)》3.4 差分密码分析。本文以下面10进制内的S盒为例,讲解差分攻击的主要过程。

x x x0123456789
S [ x ] S[x] S[x]2687149530

2.1 S盒差分分布表

来学嘉等人在文献1 中给出了一般意义下的差分概念,即对群 ( G , ⋅ ) (G,\cdot) (G,)中的两个元素 X , X ∗ X,X^* X,X, X X X X ∗ X^* X的差分定义为 Δ X = X ⋅ ( X ∗ ) − 1 \Delta X = X \cdot (X^*)^{-1} ΔX=X(X)1
Granboulan等人2 研究提出了当分组不是比特串时的通用框架,就像我们使用的是十进制数。使用一个 q × q q \times q q×q的矩阵 Δ \Delta Δ模拟S盒的差异, Δ \Delta Δ定义如下:
Δ ( S ) a , a ′ = # { x ∣ S ( x + α ) − S ( x ) = β } \Delta(S)_{a,a'} =\# \{x|S(x+\alpha)-S(x) = \beta\} Δ(S)a,a=#{xS(x+α)S(x)=β}
矩阵的最大项 D ( S ) D(S) D(S)定义为: D ( S ) = m a x ( α , β ) ≠ { 0 , 0 } Δ ( S ) α , β D(S) = max_{(\alpha,\beta)\neq\{0,0\}} \Delta(S)_{\alpha,\beta} D(S)=max(α,β)={0,0}Δ(S)α,β,则相应的最大差分概率定义为 D P ( S ) = D ( s ) / q DP(S)=D(s)/q DP(S)=D(s)/q
通过以上定义,我们可以知道 q = 10 q=10 q=10我们计算出S盒的 q × q q \times q q×q矩阵 Δ \Delta Δ

% MATLAB  
S = [2 6 8 7 1 4 9 5 3 0];        %S盒for i = 1:10         					 %行for j = 1:10						 %列n = 0;							 %前面公式中的#表示符合条件的x的个数for x = 1:10					 %遍历x% S(x+a)-S(x) = a'if mod(S(mod(x+j-2,10)+1)-S(x),10) == i-1n = n + 1;endendN(i,j) = n; end
end

最后我们得出S盒的差分分布表:
在这里插入图片描述
从表中可以看出,S盒的每一列之和为10,由上述公式所以我们可以得出 Δ \Delta Δ矩阵的最大项 D ( S ) = 2 D(S) = 2 D(S)=2,最大差分概率 D P ( S ) = D ( S ) / q = 2 − 2.3219 DP(S) = D(S)/q = 2^{-2.3219} DP(S)=D(S)/q=22.3219,最大值差分值越小表明 S 盒的差分均匀性越好,抗差分攻击能力越强。可以看出此S盒的差分分布表相对来说是比较均匀的。
定义 P S ( α → β ) = Δ ( S ) α , β / q P_S(\alpha \rarr \beta)=\Delta(S)_{\alpha, \beta}/q PS(αβ)=Δ(S)α,β/q,即为输入差分 α \alpha α经过S盒后将以 P S ( α → β ) P_S(\alpha \rarr \beta) PS(αβ)的概率得到输出差分 β \beta β。如果 P S ( α → β ) > 0 P_S(\alpha \rarr \beta)>0 PS(αβ)>0,则差分 α \alpha α经S盒可传播至差分 β \beta β,如果 P S ( α → β ) = 0 P_S(\alpha \rarr \beta)=0 PS(αβ)=0,则差分 α \alpha α经S盒不能传播至差分 β \beta β

知道了S盒的一组输入差分和输出差分 ( α , β ) (\alpha ,\beta) (α,β),我们就可以知道哪些具体的输入值 x x x会导致输入差分 α \alpha α传播至输出差分 β \beta β

S盒的差分分布表实际上是研究满足特定差分的随机输入对经过S盒作用后输出对的差分分布特性。

2.2 S盒的差分分析

明文为 x x x,密钥为 k k k,密文为 y = S ( x + k ) y = S(x+k) y=S(x+k)。假设攻击者可以选择若干明文 x 1 , x 2 , . . . , x t x_1,x_2,... ,x_t x1,x2,...,xt,但不能获得相应的密文 y 1 , y 2 , . . . , y t y_1,y_2,... ,y_t y1,y2,...,yt,只能观察到某两个密文的差分,即攻击者可以获得若干三元数组 ( x i , x j , x i + x j ) (x_i,x_j,x_i+x_j) (xi,xj,xi+xj),并期望猜测密钥 k k k的若干信息。

对S盒的差分攻击主要利用了如下关键的性质: ( x + k ) − ( x ∗ + k ) = x + x ∗ (x+k) - (x^*+k) = x+x^* (x+k)(x+k)=x+x,在这种攻击模型下面,要恢复密钥就要用到上面提到的

知道了S盒的一组输入差分和输出差分 ( α , β ) (\alpha ,\beta) (α,β),我们就可以知道哪些具体的输入值 x x x会导致输入差分 α \alpha α传播至输出差分 β \beta β

下面详细的讲解这个攻击。
观察差分分布表,注意到当输入差分 α = 1 \alpha=1 α=1时输出差分有8种可能,即
1 → 2 , 1 → 3 , 1 → 4 , 1 → 5 , 1 → 6 , 1 → 7 , 1 → 8 , 1 → 9 1 \rarr 2,1 \rarr 3,1 \rarr 4, 1 \rarr 5, \newline 1 \rarr 6, 1 \rarr 7, 1 \rarr 8, 1 \rarr 9 12,13,14,15,16,17,18,19
所以我们可以给出输入差分 α = 1 \alpha=1 α=1时,输出差分 β \beta β的分布

输出差分 β \beta β关于 ( α , β ) 的 明 文 对 (\alpha,\beta)的明文对 (α,β) Δ ( S ) α , β \Delta(S)_{\alpha, \beta} Δ(S)α,β
21, 92
341
40,32
551
661
781
871
921
其他 ∅ \varnothing 0

现在假设机密所采用的密钥是 k = 4 k=4 k=4,加密过程如下:
若已知一对明文输入为 x 1 = 1 x_1 = 1 x1=1 x 1 ∗ = 2 x_1^* = 2 x1=2,则加密流程为
x 1 = 1 , z 1 = x 1 + k ( m o d 10 ) = 5 , y 1 = S ( z 1 ) = 4 x_1 = 1, z_1 = x_1 +k \pmod {10}=5,y_1=S(z_1)=4 x1=1,z1=x1+k(mod10)=5,y1=S(z1)=4
x 1 ∗ = 2 , z 1 ∗ = x 1 ∗ + k ( m o d 10 ) = 6 , y 1 ∗ = S ( z 1 ∗ ) = 9 x_1^* = 2, z_1^* = x_1^* +k \pmod {10}=6,y_1^*=S(z_1^*)=9 x1=2,z1=x1+k(mod10)=6,y1=S(z1)=9
此时输出差分 Δ y 1 = 5 \Delta y_1=5 Δy1=5

现假设攻击者获取一对明文输入 x 1 = 1 x_1 = 1 x1=1 x 1 ∗ = 2 x_1^* = 2 x1=2,但只能观察到对应的密文对的输出差分 Δ y 1 = 5 \Delta y_1=5 Δy1=5,根据输出差分想得到密钥 k k k的消息:首先明文差分 Δ x 1 = x 1 − x 1 ∗ = 1 \Delta x_1=x_1-x_1^*=1 Δx1=x1x1=1,则S盒的输入差分 Δ z 1 = z 1 + z 1 ∗ = 1 \Delta z_1=z_1+z_1^* = 1 Δz1=z1+z1=1,根据表中的信息:
1 → 5 1 \rarr 5 15当且仅当 z 1 = x 1 + k ∈ { 5 } z_1 = x_1 +k \in \{5\} z1=x1+k{5},这样就会得到 k k k的一组候选值,即 k = z 1 − x 1 ∈ { 4 } k=z_1-x_1\in \{4\} k=z1x1{4},这样直接把密钥破解出来了。
对于大型的S盒,多选择几对明文对,使用相同的密钥,得出密钥 k k k的另外几组候选值,我们可以知道,正确的密钥一定落在上述几组候选密钥的交集中,这样可以缩小密钥的范围。但如果只采用差分分布表中的某一列的信息,可能不能唯一的确定正确密钥,为了获得唯一的正确密钥,可以选择差分分布表中不同列的消息。

根据以上我们可以看出,S盒越大越好,小的S盒很容易被破解。


总结

差分密码分析是方法是攻击迭代型分组密码的最有效的方式之一,也是最基础的一种密码分析手段,同时也是衡量一个分组密码安全性的重要指标之一。差分密码分析的原理比较简单,发展至今,该方法出现了很多的变种,但万变不离其宗,本质上就是研究差分在加解密过程中的概率传播特性。

本文仅仅列出了破解简单S盒的一个实例,而且S盒只有一轮,如果有时间,会更新!!!!!
希望对阅读本文的小伙伴们有帮助,如果有什么错误或者问题,欢迎大家评论转发!!!!!!

参考文献


  1. Lai X . Markov Ciphers and Differential Cryptanalysis[J]. Advances in Cryptography-EUROCRYPTO '91, 1992. ↩︎

  2. Granboulan L, Levieil E´, Piret G (2006) Pseudorandom per-mutation families over Abelian groups. In: Robshaw MJB (ed)Fast software encryption, 13th international workshop, FSE 2006,Graz, Austria, March 15–17, 2006, Revised Selected Papers, Lecture Notes in Computer Science, vol 4047. Springer, pp 57–77 ↩︎


http://chatgpt.dhexx.cn/article/HGwOKpPi.shtml

相关文章

密码分析(二):线性密码分析

​ 线性密码分析 一、已知明文攻击(known-plaintext attack)二、线性密码分析基本原理三、实例3.1 S盒线性逼近表3.2 例题分析3.2.1 分析算法的过程3.2.2 攻击过程加密攻击分析 具体过程 总结参考文献 在1993年欧洲密码年会上,日本学者Matsu…

Bluehost注册流程与问题

Bluehost注册流程与问题 第一步 进入Bluehost官方网站,点击下图中粉色的 Sign Up Now 进行注册 第二步 进入下一个界面后,你可以免费获得一个新的域名,BlueHost 对第一年是免费赠送一个域名,所以输入你想要的域名,然后…

BlueHost主机从零开始使用笔记,我踩过的坑你就不要踩了.

一:购买时,使用官方优惠码BH可以优惠30% 二:登陆后:点击可以显示你购买的主机,点击列表中的域名即可进入管理界面! 三:特别提醒!面板中的部分功能"比如在线文件 管理上传文件",只有使用chrome浏览器才可以,使用360浏览器的时候会出现上传不了的情况. 这里就是坑1 …

hosts文件 (屏蔽网站)

hosts文件 hosts文件是什么 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开。它是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应…

2018年最新bluehost主机(中文站)购买教程,送30%优惠码!

Bluehost是一家老牌的美国主机商,行业经验达18年,以稳定性强,速度快著称,是国内使用较多主机之一,在个人站长中的口碑、使用流行度都很高。作为电子商务首选主机的BlueHost主机也深受国内外贸网站、仿牌产品等公司的喜…

bluehost虚拟主机有什么用?适合做什么网站呢?

bluehost作为比较知名的美国主机商,在国内也是非常的受欢迎,并且为了更好的服务国内用户,更是推出了中文站以及中文客服,为 国内用户提供更加本土化以及更加完善的服务,而且而且其机房专门对国内线路进行了优化&#x…

siteground主机和Bluehost主机哪个好,看完这篇你就有自己确定的答案

Siteground主机和Bluehost主机,哪个更好?哪个更适合外贸建站?读完这篇,你就有答案! 说实话......我花了太多的时间来做决定。在决定买什么相机、加入什么健身房、甚至选择什么衣服时,都是如此。我花了一下…

linux虚拟主机建站程序,bluehost中国Linux虚拟主机建站过程

无论是我们初次接触海外主机服务商的,还是已经有过使用国内主机商建站经验的,可能初次接触BlueHost(无论是英文或者是中文官方网站产品)可能在应用上稍微有一些困惑。 因为大部分海外主机都使用的cPanel面板(Linux系统主机),普通的用户肯定是…

蓝色主机 bluehost主机 启用CloudFlare的cdn加速服务

启用CloudFlare的cdn加速服务 1.到CDN官网(www.cloudflare.com),注册账号并登陆进入。 2.点击页面右上角 Add Site,输入您的域名。 3.选择CDN套餐,一般用户选择FREE版本的 4.修改DNS记录,选择之后会自动扫描域名的DNS…

Siteground和Bluehost对比,我花了7天时间研究出了结果

Siteground主机和Bluehost主机,哪个更好?哪个更适合外贸建站?读完这篇,你就有答案! 说实话......我花了太多的时间来做决定。在决定买什么相机、加入什么健身房、甚至选择什么衣服时,都是如此。我花了一下…

美国主机BlueHost vs HostEase

网站备案对于大部分个人站长而言,花费成本高、程序复杂,因此在挑选主机时,常选择免备案IDC服务商,如美国、香港主机,且前几日国内某免备案机房因个别网站涉及非法言论而配合相关部门采取停网整顿等,为此站长…

BlueHost主机建站教程

BlueHost主机支持一键安装WordPress程序与Discuz程序,下面就给大家演示一下如何一键安装WordPress程序和Discuz程序建站教程,希望对使用BlueHost主机用户有所帮助! 腾讯云最新服务器活动--云服务器免费送。 试用领取有人能领到180天。 腾讯…

Bluehost主机安装WordPress步骤

教你一个使用Bluehost主机安装WordPress步骤 使用bluehost主机创建wordpress网站非常简单,但是首先需要先注册bluehost账户。 作为优秀wordpress主机之一的bluehost主机,性价比是很不错的,价格几乎接近免费了,它有很多出色的功能…

bluehost虚拟主机速度快吗?bluehost主机评测!

bluehost虚拟主机速度快吗?众所周知,美国主机访问一般都是有延迟的,理论上是220ms,主机的访问速度与机房位置,连接线路等都有很大关系。 优越的机房硬件加上软件加速的实力,使bluehost虚拟主机的速度在海外…

Bluehost中国的主机产品和美国那边的主机有什么差别吗?

bluehost作为著名的美国主机商,为了更好的服务国内用户,与2014年推出了bluehost中文站,bluehost中国作为bluehost美国主机商在国内的独立运营部分,主要是为国内用户提供域名、虚拟主机、分销主机、VPS主机、独立服务器和网站建设等。bluehost…

bluehost中国和bluehost美国是不是一家?应该选择哪个

bluehost作为著名的美国主机商,为了更好的服务国内用户,与2014年推出了bluehost中文站,bluehost中国作为bluehost美国主机商在国内的独立运营部分,主要是为国内用户提供域名、虚拟主机、分销主机、VPS主机、独立服务器和网站建设等。bluehost…

美国bluehost虚拟主机怎么样?bluehost主机详细评测!

Bluehost公司成立于1996年,绝对是主机行业中的老牌子了。这么多年来,他一直以高性能主机产品以及优良的服务服务用户,知名度和口碑都一直保持在高水准,确实不容易。现在托管的网站数量已经超过400万了,而且仍然以每个月…

Bluehost美国站和Bluehost中国站的区别!

bluehost作为著名的美国主机商,为了更好的服务国内用户,与2014年推出了bluehost中文站,bluehost中国作为bluehost美国主机商在国内的独立运营部分,主要是为国内用户提供域名、虚拟主机、分销主机、VPS主机、独立服务器和网站建设等。bluehost…

bluehost中国和bluehost美国的区别?应该选择哪个?

bluehost作为著名的美国主机商,为了更好的服务国内用户,与2014年推出了bluehost中文站,bluehost中国作为bluehost美国主机商在国内的独立运营部分,主要是为国内用户提供域名、虚拟主机、分销主机、VPS主机、独立服务器和网站建设等。bluehost…

bluehost中国主机评测:bluehost香港主机怎么样?

Bluehost创建于1996年,总部和机房都在美国犹他州奥勒姆市。作为最受欢迎的美国主机商之一,Bluehost目前为2百多万的站长提供网站托管服务,全球排名前20,全美排名第6。Bluehost在美国、香港、印度和欧洲等地提供各个等级的主机产品…