【密码分析学 笔记】ch3 3.1 差分分析

news2024/10/23 23:50:32

ch3 分组密码的差分分析和相关分析方法

3.1 差分分析

  • 评估分组密码安全性通用方法
  • 可用于杂凑函数和流密码安全性
预备知识:
  • 迭代性分组密码(分组密码一般结构)
  • 简化版本 mini-AES CipherFour算法
3.1.1 差分分析原理

现象:密钥在异或运算过程中被抵消 → 直接从明文对异或值得到密文对异或值(绕过密钥)【不随机现象】

差分值: X和X’是两个长度为n的二进制比特串, Δ X = X ⊕ X ′ { ΔX=X \oplus X'} ΔX=XX 称为X和X’的差分值

  • 模加运算 模减差分

i轮差分、i轮差分对(differential): P β 0 → i 轮 β i {P \beta_{0} \stackrel{i轮}\to \beta_{i} } Pβ0iβi 差分经过i轮的传播特性

i轮差分概率 D P ( β 0 → i 轮 β i ) {DP(\beta_{0} \stackrel{i轮}\to \beta_{i}) } DP(β0iβi)

理想分组密码 α {\alpha} α 是输入差分, β {\beta} β 是输出差分,n是分组长度,理想分组密码满足随机置换, ∀ β ∈ { 0 , 1 } n , D P ( α → i 轮 β ) = 1 / 2 n { \forall \beta \in \{0,1\} ^{n},DP(\alpha \stackrel{i轮}\to \beta)=1/2^{n} } β{0,1}n,DP(αiβ)=1/2n,构造区分器关键:找到高概率的i轮差分 α → i 轮 β {\alpha \stackrel{i轮}\to \beta} αiβ,满足 D P ( α → i 轮 β ) > 1 / 2 n {DP(\alpha \stackrel{i轮}\to \beta)>1/2^{n}} DP(αiβ)>1/2n

差分分析原理

  1. 发现长轮数、高概率的i轮差分(不随机现象)
  2. 建立与部分密钥有关的带概率的方程,利用正误密钥下,中间状态满足特定差分值的明密文对数服从不同分布,恢复密钥(分割密钥空间,建立方程组/约束条件,进行密钥恢复攻击)

差分分析攻击模型

假设 D P ( α , β ) = p > 1 / 2 n , ∣ K ~ ∣ = k {DP(\alpha , \beta)=p >1/2^{n},|\widetilde{K}|=k} DP(α,β)=p>1/2nK =k,设置 2 k { 2^{k} } 2k 个计数器,初始化为0

  1. 采样:选取满足条件的差分明文对
  2. 去噪:根据β值过滤对应的密文
  3. 恢复密钥:对方程组每个解都设置1个计数器,处理完所有明文对后从大到小排序,前 2 k − a {2^{k-a}} 2ka个作为正确密钥候选值,结合穷举攻击等确定正确密钥
3.1.2 CipherFour 算法差分分析
3.1.2.1 各运算部件差分传播特性

CipherFour算法:

  • 16bit分组长度
  • r轮迭代
  • 密钥长度为16(r+1)bits
  • 假设轮密钥相互独立

算法每一轮(除最后一轮)包含:

  • 16比特的轮密钥异或
  • 4个4比特的S盒
  • 16比特的比特置换

最后一轮包含:

  • 16比特的轮密钥异或
  • 4个4比特的S盒
  • 16比特的白化密钥异或

1.S盒

非线性变换S盒差分传播概率:

  • 输入差分α过S盒后变为输出差分β,记为** α → S β {\alpha \stackrel{S}\to \beta} αSβ**
  • 满足 α → S β {\alpha \stackrel{S}\to \beta} αSβ 的明文对的个数为** N S ( α , β ) {N_{S}(\alpha,\beta)} NS(α,β)**
  • 相应的 α → S β {\alpha \stackrel{S}\to \beta} αSβ 的差分传播概率为** D P ( α → S β ) = P r ( α → S β ) = N S ( α , β ) 2 m {DP(\alpha \stackrel{S}\to \beta)=Pr(\alpha \stackrel{S}\to \beta)=\frac{N_{S}(\alpha,\beta)}{2^{m}} } DP(αSβ)=Pr(αSβ)=2mNS(α,β)**

S盒差分分布表(DDT)

  • 构造:α为行标,β为列标,行列交错处的项为 N S ( α , β ) {N_{S}(\alpha,\beta)} NS(α,β),构造的 2 m × 2 n {2^{m}×2^{n}} 2m×2n的表
  • CipherFour的DDT特性
    • D P ( 0 x 0 → S 0 x 0 ) = 1 {DP(0x0 \stackrel{S}\to 0x0)=1} DP(0x0S0x0)=1
    • D P ( 0 x 0 → S 0 x i ) = 1 , i ≠ 0 {DP(0x0 \stackrel{S}\to 0xi)=1,i\neq0} DP(0x0S0xi)=1,i=0
    • N S ( α , β ) = 0 {N_{S}(\alpha,\beta)=0} NS(α,β)=0,记作 α ↛ β {\alpha \nrightarrow \beta} αβ
      • D P ( 0 x f → S 0 x 1 ) = 0 {DP(0xf \stackrel{S}\to 0x1)=0} DP(0xfS0x1)=0
    • 随机置换RP(Random Permutation)
      • P r ( α → R P β ) = 1 2 4 {Pr(\alpha \stackrel{RP}\to \beta)=\frac{1}{2^{4}}} Pr(αRPβ)=241
    • DDT中的数都是偶数

2.P置换

拉线操作,只改变bit位置,不改变取值

输出差分等于输入差分经过P置换后的结果

P ( X ) ⊕ P ( X ′ ) = P ( X ⊕ X ′ ) {P(X)\oplus P(X')=P(X \oplus X')} P(X)P(X)=P(XX)

3.异或密钥AK

( X ⊕ K ) ⊕ ( X ′ ⊕ K ) = X ⊕ X ′ {(X\oplus K)\oplus (X'\oplus K)=X \oplus X'} XK)(XK)=XX

输出差分等于输入差分

总结可得,差分在各部件的传播特性为:

  1. 过线性变换差分值确定
    1. 异或密钥差分值不变
  2. 过非线性变换差分值不确定,传播概率由S盒DDT决定
3.1.2.2 CipherFour算法的多轮差分路线

i轮差分路线 β 0 → 1 轮 β 1 → 1 轮 β 2 → 1 轮 . . . → 1 轮 β i {\beta_{0}\stackrel{1轮}\to \beta_{1}\stackrel{1轮}\to \beta_{2}\stackrel{1轮}\to... \stackrel{1轮}\to\beta_{i}} β01β11β21...1βi

i轮差分路线概率

  • 分组密码输入X以及轮密钥取值相互独立且均匀分布
  • 等于各轮差分路线概率乘积
  • D P ( β 0 → 1 轮 β 1 → 1 轮 β 2 → 1 轮 . . . → 1 轮 β i ) = ∏ j = 1 i D P ( β j − 1 → 1 轮 β j ) {DP(\beta_{0}\stackrel{1轮}\to \beta_{1}\stackrel{1轮}\to \beta_{2}\stackrel{1轮}\to... \stackrel{1轮}\to\beta_{i})=\prod \limits_{j=1}^iDP(\beta_{j-1}\stackrel{1轮}\to \beta_{j})} DP(β01β11β21...1βi)=j=1iDP(βj11βj)

i轮最优差分路线

  • 所有i轮差分路线中概率最大的(可能不止一条)

活跃S盒

  • 输入差分非零的S盒

影响i轮差分路线概率的主要因素

  • 活跃S盒个数
  • 活跃S盒对应的输出差分

CipherFour 1轮最优差分路线

  • 需要活跃S盒的个数≥1,由DDT表可得,
    • D P ( 0 x F → S 0 x D ) = 10 2 4 = 5 8 {DP(0xF \stackrel{S}\to 0xD)=\frac{10}{2^{4}}=\frac{5}{8}} DP(0xFS0xD)=2410=85

2轮最优差分路线与1轮最优无关

  • 直接以1轮最优差分路线的输出差分为输入差分,得到的DP为 5 8 ⋅ ( 3 5 ) 3 ≈ 0.033 {\frac{5}{8}·(\frac{3}{5})^{3}≈0.033} 85(53)30.033
  • 保持每轮一个S盒,概率为 D P ( 0 x 2 → S 0 x 2 ) = 6 2 4 = ( 3 8 ) 2 {DP(0x2 \stackrel{S}\to 0x2)=\frac{6}{2^{4}}=(\frac{3}{8})^{2}} DP(0x2S0x2)=246=(83)2,更优

差分路线级联

迭代型差分概率

  • 给定概率为 p i {p_{i}} pi的i轮差分路线 β 0 → 1 轮 β 1 → 1 轮 β 2 → 1 轮 . . . → 1 轮 β i {\beta_{0}\stackrel{1轮}\to \beta_{1}\stackrel{1轮}\to \beta_{2}\stackrel{1轮}\to... \stackrel{1轮}\to\beta_{i}} β01β11β21...1βi,若 β 0 = β i {\beta_{0}=\beta_{i}} β0=βi,迭代该路线k次,得到一条ki轮的差分路线 β 0 → 1 轮 β 1 → 1 轮 . . . → 1 轮 β 0 → 1 轮 β 1 → 1 轮 . . . → 1 轮 β 0 {\beta_{0}\stackrel{1轮}\to \beta_{1}\stackrel{1轮}\to ...\stackrel{1轮}\to\beta_{0}\stackrel{1轮}\to \beta_{1} \stackrel{1轮}\to ... \stackrel{1轮}\to\beta_{0}} β01β11...1β01β11...1β0
3.1.2.3 CipherFour算法的多轮差分

实验得到i轮差分概率大于单条差分路线的概率。

没有必要固定中间状态的差分

(基于独立性假设)r轮差分的概率

  • 共s条输入差分为 β 0 {\beta_{0}} β0,输出差分为 β i {\beta_{i }} βi的i轮差分路线

D P ( b e t a 0 → i 轮 β 1 ) = ∑ t = 1 s D P ( β 0 → 1 轮 β 1 t → . . . → β i − 1 t → 1 轮 β i t ) = ∑ t = 1 s ( ∏ j = 1 i D P ( β j − 1 t → 1 轮 β j t ) ) DP(beta_{0}\stackrel{i轮}\to \beta_{1})=\sum\limits_{t=1}^{s}DP(\beta_{0}\stackrel{1轮}\to \beta_{1}^{t}\to ... \to \beta_{i-1}^{t}\stackrel{1轮}\to\beta_{i}^{t}) \\=\sum\limits_{t=1}^{s}\big (\prod\limits_{j=1}^{i}DP(\beta_{j-1}^{t}\stackrel{1轮}\to\beta_{j}^{t}) \big) DP(beta0iβ1)=t=1sDP(β01β1t...βi1t1βit)=t=1s(j=1iDP(βj1t1βjt))

Markov密码算法:满足独立性假设的算法

通过不随机现象区分4轮CipherFour算法和随机置换 0.08>0.000015

3.1.2.4 5轮CipherFour算法的密钥恢复攻击

5轮等于4轮CipherFour算法+1 “4+1”

4轮加密后的输出是 中间变量,猜测 k 5 {k_{5}} k5的取值

  1. 采样
    • 选择m对满足输入差分的输入对,计算5轮加密后的密文对
  2. 去噪
    • 筛选并删除错误对
    • 若四轮加密后中间状态为(0,0,2,0),由DDT得到 ( 0 , 0 , 2 , 0 ) → S ( 0 , 0 , h , 0 ) , h ∈ 1 , 2 , 9 , a {(0,0,2,0) \stackrel{S}\to (0,0,h,0), h∈{1,2,9,a}} (0,0,2,0)S(0,0,h,0),h1,2,9,a
    • 正确对相应的密文差分只有四种可能 (0,0,1,0), (0,0,2,0), (0,0,9,0), (0,0,a,0)
  3. 恢复密钥
    • 解方程 S − 1 ( k 5 , 2 ⊕ c 2 ) ⊕ S − 1 ( k 5 , 2 ⊕ c 2 ′ ) = 2 {S^{-1}(k_{5,2}\oplus c_{2})\oplus S^{-1}(k_{5,2}\oplus c_{2}^{'})=2} S1(k5,2c2)S1(k5,2c2)=2,并对每个解设置计数器
    • 按计数器取值由大到小对去噪的明文对进行排序,前 2 4 − a {2^{4-a}} 24a个作为正确密钥的候选值
    • 恢复4-bit k 5 , 2 {k_{5,2}} k5,2,实现分割
    • 剩余密钥差分或者穷举

正确对:

  • 一定满足区分器的头尾差分
  • 代入S盒有关方程 解一定包括正确密钥

错误对:

  • 一定不满足区分器的头部或尾部差分
  • 代入S盒有关方程 解只包含错误密钥

复杂度:重要的是选择明文的个数

信噪比 S N {S_{N}} SN

  • 正确密钥(信息)的计数/错误密钥(噪声)的平均计数

  • 1 ≤ S N {S_{N}} SN ≤2,需保证有20-40正确对 S N {S_{N}} SN较大

  • S N {S_{N}} SN ≥100时,需保证有3-4个正确对

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件架构的 “4+1” 视图(附视图案例)

简介 Philippe Kruchten 在《IEEE Software》上发表的《The 41 View Model of Architecture》论文中提出了“41”视图方法,该方法被RUP采纳。“41”视图模型通过逻辑视图、进程视图(也称为处理视图)、物理视图、开发视图 和 场景视图 五个视…

YOLOv9改进,YOLOv9引入FLAttention注意力机制(ICCV2023),并二次创新RepNCSPELAN4结构

摘要 自我注意的二次计算复杂度在将 Transformer 模型应用于视觉任务时,这是一个长期存在的问题。除了减少注意力区域外,线性注意力也被认为是避免过多计算成本的有效解决方案。通过使用精心设计的映射函数来逼近 Softmax,线性注意力可以在自注意力操作中切换计算顺序并实现…

HTTP Proxy环境下部署Microsoft Entra Connect和Health Agents

在企业环境中,时常需要通过使用HTTP Proxy访问Internet,在使用HTTP Proxy访问Internet的环境中部署Microsoft Entra Connect和Microsoft Entra Connect Health Agents可能会遇到一些额外的配置步骤,以便这些服务能够正常连接到Internet。 一…

再Android10上实现检测AHD摄像头是否接入

项目有个需要,需要知道tp9951是否接入AHD摄像头 1,驱动层可以通过读取寄存器的值来检测是否接入AHD摄像头 tp9951_write_reg(0x40, 0x00); //select decoder page tp9951_write_reg(0x41, ch); val tp9951_read_reg(TP_INPUT_STATUS_REG);…

vscode默认添加python项目的源目录路径到执行环境(解决ModuleNotFoundError: No module named问题)

0. 问题描述 vscode中编写python脚本,导入工程目录下的其他模块,出现ModuleNotFoundError: No module named 错误 在test2的ccc.py文件中执行print(sys.path) 查看路径 返回结果发现并无’/home/xxx/first_demo’的路径,所以test2下面的文…

Vscode + EIDE +CortexDebug 调试Stm32(记录)

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot…

w~自动驾驶合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12320882 #自动驾驶数据集全面调研 自动驾驶技术在硬件和深度学习方法的最新进展中迅速发展,并展现出令人期待的性能。高质量的数据集对于开发可靠的自动驾驶算法至关重要。先前的数据集调研试图回顾这些数据集&…

Djang学习- URL反转

代码中url书写规范&#xff1a; 、 url反向解析 urls: path(test/url, views.test_url),path(test_result/<int:age>, views.test_result, name"rl") views: def test_url(request):return render(request, test_url.html)def test_result(request,age):re…

Vue3学习:vite项目中图片不能显示,报错 require is not defined

今天做了一个案例“给你喜欢的人送花”&#xff0c;如果喜欢谁&#xff0c;就给谁送花&#xff0c;最多可以送5朵。运行效果如下。 这个项目是使用 npm create vitelatest 命令创建的。 包括2个组件&#xff1a; 根组件App.vue子组件HelloVote.vue。 目录结构如图所示&#x…

资讯 | 财富通科技政务协同办公管理软件通过麒麟软件适配认证

2024年9月25日&#xff0c;财富通科技研发的政务协同办公管理软件成功通过中国国产操作系统麒麟软件的适配认证。本次认证是继公司区块链产品“基于区块链的企业及人员资质数字证书服务平台”认证以后得第二次认证。这一成就标志着财富通科技在推动国产软件生态建设方面迈出了坚…

基于SSM+微信小程序的家庭记账本管理系统(家庭1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 1、管理员端功能有首页、个人中心、用户管理&#xff0c;消费详情管理、收入详情管理、系统管理等。 2、用户端功能有首页、消费详情、收入详情、论坛信息、我的等功能。 2、项目技术 …

数据结构作业day2

作业一&#xff1a;结构体数组存储学生信息&#xff08;姓名&#xff0c;年龄&#xff0c;分数&#xff09;&#xff0c;完成输入学生信息&#xff0c;输出学生信息&#xff0c;求学生成绩之和&#xff0c;求最低学生成绩。 main.c #include "test.h"int main(int …

GitLab 老旧版本如何升级?

极狐GitLab 正式对外推出 GitLab 专业升级服务 https://dl.gitlab.cn/cm33bsfv&#xff01; 专业的技术人员为您的 GitLab 老旧版本实例进行专业升级&#xff01;服务详情可以在官网查看详细解读&#xff01; 那些因为老旧版本而被攻击的例子 话不多说&#xff0c;直接上图&a…

视频转GIF,5个简单好用的转换工具任你选!

GIF&#xff08;Graphics Interchange Format&#xff09;&#xff0c;作为一种轻量级的图像文件格式&#xff0c;因其能够存储多帧图像形成简单动画而广受欢迎。无论是动画影视片段&#xff0c;还是日常生活的小确幸&#xff0c;GIF都能将其定格为生动的视觉语言。当我们想要将…

FileLink跨网文件摆渡系统:重构跨网文件传输新时代

在数字化浪潮的推动下&#xff0c;企业对于数据的高效利用和安全管理提出了前所未有的要求。面对不同网络环境间的文件传输难题&#xff0c;传统方法往往显得力不从心&#xff0c;不仅效率低下&#xff0c;还存在极大的安全隐患。而FileLink跨网文件摆渡系统的出现&#xff0c;…

深信服超融合HCI6.8.0R2滚动热升级至HCI6.9.1

PS&#xff1a;滚动热升级没有业务影响&#xff0c;集群内主机逐台升级&#xff0c;会自动迁移运行中的虚拟机至其他主机&#xff1b; 整体巡检加上升级完成大概要三个小时的时间。如果在升级过程中&#xff0c;有跨集群迁移的任务&#xff0c;需要先停掉&#xff0c;不然无法…

excel将文本型数字转变为数值型数字

问题导入&#xff1a;复制数字到excel表格中&#xff0c;但是表格中数字显示为文本&#xff0c;且无法通过常规方法转变为可进行四则运算的数字。例如&#xff1a;在i3单元格中输入常规的转换方法仍然报错。在j3单元格中输入ISTEXT(H3)显示h3单元格确实为文本。 解决办法&#…

记录:网鼎杯2024赛前热身WEB01

目录扫描&#xff0c;发现上传点&#xff0c;判断可能存在文件上传漏洞&#xff0c;并根据文件后缀判断网站开发语言为php 编写蚁剑一句话木马直接上传 蚁剑连接 这里生成 的flag是随机的&#xff0c;因为烽火台反作弊会随机生成环境&#xff0c;在一顿查找后&#xff0c;在hom…

自动驾驶系列—激光雷达点云数据在自动驾驶场景中的深度应用

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

Leetcode 柱状图中最大的矩形

h 是右边界&#xff0c;连续多个高度递增的柱子&#xff0c;如果遇到下一个 h < 栈顶元素(是最大的元素&#xff0c;单调递增栈)&#xff0c;那么会不断出栈来更新计算最大面积。 并非是一次性计算出最大面积的&#xff0c;很重要的一点是while (!stack.isEmpty()这一部分的…