差分密码分析的原理与实践

一、原理分析

差分分析:

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

1.选择明文攻击(chosen-plaintext attack,CPA)

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

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

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

典型的选择明文攻击方法有碰撞攻击和差分攻击等。

2.差分密码分析(differential cryptanalysis)

(1)原理

差分密码分析(Differential Cryptanalysis)是一种密码分析方法,旨在通过观察密码算法在不同输入差分下产生的输出差分,来推断出密码算法的密钥信息。差分密码分析主要用于破解分组加密,但也适用于流加密和加密哈希函数。它是对称密码算法的攻击方法之一,通过对明文差分的追踪来获取密钥。

差分密码分析最早由Eli Biham和Adi Shamir在1990年提出,并成功地对DES(Data Encryption Standard)密码算法进行了攻击。这一研究引起了密码学界的广泛关注。随后,研究者们对差分密码分析进行了进一步的研究和改进。

差分密码分析的基本原理是利用输入差分对输出结果的影响来推断出密钥信息。具体来说,攻击者通过控制明文的差分,观察密文的差分变化,从而得到密钥的一些信息。这种方法的关键在于寻找输入差分和输出差分之间的关联,以便从中提取出有用的信息。

在分组密码中,差分密码分析涉及跟踪变换网络中的差异,以及寻找加密中的非随机行为等。攻击者通过控制明文块之间的关系(例如异或值),观察密文块之间的关系,从而推断出密钥的一些信息。这种方法的关键在于找到明文块之间的关系,以及这种关系如何影响密文块之间的关系。

差分密码分析是一种强大的攻击方法,可以对许多分组密码和流密码进行攻击。然而,它需要大量的统计分析和计算资源,因此在实际应用中可能需要较长的时间才能获得成功。为了提高攻击的效率,研究者们提出了许多改进的差分密码分析方法,例如统计分析差分概率等。

总之,差分密码分析是一种重要的密码分析方法,它可以用来破解分组密码和流密码。随着密码学的发展和新的攻击方法的出现,我们需要不断研究和改进现有的密码分析方法,以确保信息的安全性和保密性。

  1. 过程
  1. S盒差分分布表

来学嘉等人在文献1 中给出了一般意义下的差分概念,即对群( G ,·)中的两个元素X , X*,X和X*的差分定义为ΔX=X·(X*)^(-1)。

Granboulan等人2 研究提出了当分组不是比特串时的通用框架,就像我们使用的是十进制数。使用一个q × q 的矩阵Δ 模拟S盒的差异,Δ 定义如下:

Δ(S)a,a′​=#{x∣S(x+α)−S(x)=β}。

矩阵的最大项D(S)定义为:D ( S ) = max(α,β) ≠ {0,0}Δ(S)α,β则相应的最大差分概率定义为D P ( S ) = D ( s ) / q 。

通过以上定义,我们可以知道q = 10我们计算出S盒的q×q矩阵Δ:                            

最后我们得出S盒的差分分布表:

从表中可以看出,S盒的每一列之和为10,由上述公式所以我们可以得出Δ 矩阵的最大项D ( S ) = 2 ,最大差分概率DP(S) =D(S) /q = 2^−2.3219,最大值差分值越小表明 S 盒的差分均匀性越好,抗差分攻击能力越强。可以看出此S盒的差分分布表相对来说是比较均匀的。

定义PS(α→β) = Δ(S)α,β/ q ,即为输入差分α经过S盒后将以P S ( α → β 的概率得到输出差分β。如果P S ( α → β ) > 0则差分α经S盒可传播至差分β如果P S ( α → β ) = 0 ,则差分α 经S盒不能传播至差分β。知道了S盒的一组输入差分和输出差分( α , β ),我们就可以知道哪些具体的输入值x会导致输入差分α 传播至输出差分β 。S盒的差分分布表实际上是研究满足特定差分的随机输入对经过S盒作用后输出对的差分分布特性。

  1. S盒差分分析

明文为x,密钥为k,密文为y = S ( x + k )。假设攻击者可以选择若干明文x 1 , x 2 , . . . , x t ,但不能获得相应的密文y 1 , y 2 , . . . , y t ,只能观察到某两个密文的差分,即攻击者可以获得若干三元数组( x i , x j , x i + x j ),并期望猜测密钥k 的若干信息。

对S盒的差分攻击主要利用了如下关键的性质:( x + k ) − ( x *+ k ) = x + x*。

观察差分分布表,注意到当输入差分α = 1 时输出差分有8种可能,即

1->2,1->3,1->4,1->5,1->6,1->7,1->8,1->9

所以我们可以给出输入差分α = 1时,输出差分β 的分布:

现在假设机密所采用的密钥是k = 4加密过程如下:

若已知一对明文输入为x 1 = 1和x 1 * = 2 ,则加密流程为

x1=1 , z1= x1+k(mod10 )=5,y1=S(z1)=4

x1* =2,z1* = x 1* + k (mod10 )=6 , y 1 *= S ( z 1* ) = 9

此时输出差分Δy1= 5 。

现假设攻击者获取一对明文输入x 1 = 1 和x 1 ∗ = 2 ,但只能观察到对应的密文对的输出差分Δ y 1 = 5 ,根据输出差分想得到密钥k的消息:首先明文差分Δ x 1 = x 1 − x 1 * = 1 ,则S盒的输入差分Δ z 1 = z 1 + z 1 * = 1 ,根据表中的信息:

1 → 5 当且仅当z 1 = x 1 + k ∈ { 5 },这样就会得到k的一组候选值,即k = z 1 − x 1 ∈ { 4 } ,这样直接把密钥破解出来了。

对于大型的S盒,多选择几对明文对,使用相同的密钥,得出密钥k的另外几组候选值,我们可以知道,正确的密钥一定落在上述几组候选密钥的交集中,这样可以缩小密钥的范围。但如果只采用差分分布表中的某一列的信息,可能不能唯一的确定正确密钥,为了获得唯一的正确密钥,可以选择差分分布表中不同列的消息。

  1. 不足

(4)总结

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

  • 实践(实际应用)

据中国科学院软件研究所官方公众号报道,2023年11月20日,中国科学院软件研究所可信智能系统研究团队在分组加密算法的差分密码分析方面取得一定进展。

据悉,该工作团队设计了一个面向分组加密算法的领域编程语言 EasyBC,在此基础上提出了通用、可扩展的差分密码分析方法,研制了全自动分析工具平台 EasyBC。该研究成果已经以 EasyBC: A Cryptography-Specific Language for Security Analysis of Block Ciphers against Differential Cryptanalysis 为题,被编程语言国际顶级会议 POPL 2024 录用,通讯作者是软件所计算机科学国家重点实验室宋富研究员。当前已有的差分密码分析方法在通用性、自动化程度方面存在一定不足,同时建模过程复杂导致用户需要熟悉大量的建模方法及底层分析工具的应用。

为解决上述不足,研究团队设计了一种分组加密算法的密码学专用高级编程语言 EasyBC,提供了完整的语法、类型和语义的形式定义,为分组加密算法安全性自动分析奠定了良好基础;提出了三种不同分析精度和性能的差分密码分析方法,不仅统一和优化了已有的各类加密操作的建模方法,并提出了多种新的建模方法。

中科院软件研究所表示,该研究对分组加密算法的差分密码分析研究具有重要意义,为后续密码学相关研究者们进行分组加密算法的安全性全自动分析和各类运算操作建模方法性能评估提供了良好的研究基础和平台支撑。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值