分组密码算法与DES算法

article/2025/9/25 2:50:11

目录

1 分组密码的含义

1.1 分组密码介绍

1.2 分组密码的含义

1.3 分组密码的要求

2 分组密码的设计思想

2.1 分组密码的设计思想

3 分组密码的基本特点

 3.1 分组密码的基本特点

 3.2 分组密码的迭代结构

3.3 子密钥的生成方法

3.4 轮函数的设计准则 

 3.5 迭代的轮数

4 分组密码的迭代结构

4.1 分组密码迭代结构 

feistel结构:

加密过程中一轮:

 解密过程中一轮:

5 DES分组密码算法 

5.1 DES起源

5.2 DES概述 

5.3 DES加密流程图 

 5.4 DES函数F的实现流程图

 5.5 选择扩展置换E(32位扩展到48位)

5.6 DES子密钥的生成算法

5.7  S盒代替——压缩替代变换

 5.8 置换P盒的构造方法

​ 5.9 轮函数步骤

 5.10 逆初始置换​

 5.10 DES解密流程图

6 DES其他知识

6.1 弱密钥

6.2 半弱密钥

6.3 差分分析

6.4 线性分析

6.5 多重DES


1 分组密码的含义

1.1 分组密码介绍

  •  分组密码(block cipher)是现代密码学中的重要体制之一,也是应用最广泛、影响最大的一种密码体质,其主要任务是提供数据保密性,也可以用到再许多方面,如构造伪随机数生成器、序列密码、认证码和哈希函数等。
  • 由于分组密码加解密速度较快,安全性好,以及得到许多密码芯片的支持,现代分组密码发展非常快,在许多研究和应用领域得到了广泛的应用。

1.2 分组密码的含义

        分组密码,也称块密码,它是将明文消息经编码表示后的二进制序列 p_{0},p_{1},\cdots,p_{i},\cdots划分成若干固定程度(譬如m)的组(或块)p=(p_{0},p_{1},\cdots,p_{m-1}),各组分别在密钥k=(k_{0},k_{1},\cdots,k_{t-1})的控制下转换成长度为n的密文分组c=(c_{0},c_{1},\cdots,c_{n-1})。其本质是从一个明文空间(m长的比特串的集合)P到密文空间(n长的比特串的集合)C的一一映射。(一般而言,m=n,但与t不一定相等)。

1.3 分组密码的要求

  •  分组长度要足够大:当分组长度较小时,攻击过穷举明文空间,得到密码换规律,难于抵御选择明文攻击。
  • 密码量要足够大:如果密钥量小,攻击者可以有效地通过穷举密钥的方法进行破译
  • 密码变换足够复杂:使攻击者除了穷举法攻击以外,找不到其他有效的攻击方法。
  • 加密和解谜运算简单:便于软件和硬件实现,性能好
  • 无数据扩展或压缩

2 分组密码的设计思想

2.1 分组密码的设计思想

  •  扩散

所谓扩散,是指要将算法设计成明文每一比特的变化尽可能多地影响到输出密文序列的变化,以便隐蔽明文的统计特性。形象地称为雪崩效应。 

扩散的另一层意思是密钥每一位的影响尽可能迅速地扩展到较多的密文比特中去。即扩散的目的是希望密文中的任一比特都要尽可能与明文、密钥相关联,或者说,明文和密钥中任何一比特值发生改变,都会在某种程度上影响到密文值得变化,以防止将明文或密钥分解成若干孤立的小部分,然后被逐个击破。

  • 混乱

所谓混乱,指在加解密变换过程中明文、密钥以及密文之间的关系尽可能地复杂化 ,以防密码破译者采用解析法(即通过建立并求解一些方程)进行破译攻击。

混乱可以用“搅拌机”来形象地解释,将一组明文和一组密钥输入到算法中,经过充分混合,最后变成密文。同时要求,执行这种“混乱”作业的每一步必须是可逆的,即明文混乱以后能得到密文,反之,密文经过逆向的混乱操作后能恢复出明文。(按照混乱原则,分组密码算法应有复杂的非线性因素)。

  • 乘积密码

依次使用两个或两个以上的基本密码,所的结果的密码强度将强于所有单个密码的强度。实际上,乘积密码就是扩散和混乱两种基本密码操作的组合变换。 这样能够产生比各自单独使用时更强大的密码系统。选择某个较为简单的密码变换(包含多个基本密码),在密钥控制下以迭代方式多次利用它进行加密变换,就可以达到预期的扩散和混乱效果。乘积密码有助于利用少量的软硬件资源实现较好的扩散和混乱效果,再通过迭代方法,达到预期设计效果,这种思想在现代代码设计中使用非常广泛。

3 分组密码的基本特点

 3.1 分组密码的基本特点

  • 分组长度:能够抵御选择明文攻击
  • 密钥长度:能够抵御穷举攻击
  • 子密钥
  • 轮函数F
  • 迭代 

 3.2 分组密码的迭代结构

 

3.3 子密钥的生成方法

子密钥的生成是迭代分组算法的一个重要组成部分,是从初始(种子)密钥产生各迭代要是用的子密钥的算法。 也就是说,轮函数F的功能是在子密钥的参与和控制下实现的,子密钥的生成很重要,其评价指标:

  • 实现简单、速度,满足轮函数F的要求;
  • 种子密钥的所有比特对每个子密钥比特的影响大致相同;
  • 没有弱密钥或弱密钥容易确定

3.4 轮函数的设计准则 

轮函数F是分组密码的核心,是分组密码中单轮加解密函数,其基本准则:

  • 非线性
  • 可逆性
  • 雪崩效应 

其主要的性能指标是安全性、速度、灵活性。 

 3.5 迭代的轮数

分组密码一般采用简单的、。安全性弱的密码函数进行多轮迭代运算,使得安全性增强。一般来说,分组密码迭代轮数越多,密码分析越困难,但也不是追求迭代轮数越多越好,过多的迭代轮数会使加解密算法的性能下降,而实际的安全性增强不明显。决定迭代轮数的准则:密码算法分析的难度大于简单穷举搜索攻击的难度。分组密码迭代轮数一般采用8、10、12、16、20的居多。

在密码学的学术理论中,任何攻击方式,其计算复杂度若少于暴力搜寻法所需要计算复杂度,就能被视为针对该密码系统的一种破解法;但这并不表示该破解法已经进入可以实际应用的阶段。 

4 分组密码的迭代结构

4.1 分组密码迭代结构 

feistel结构:

 

加密过程中一轮:

  • Feistel加密一轮的迭代过程
  • 明文被分为等长的两部分
  • 第i轮子密钥由初始密钥k推导出的
  • 一般来说,每轮子密钥与k不同,也互不相同
  • F称为轮函数

 

 解密过程中一轮:

 

  • Feistel解密一轮迭代过程
  • 被解密的数据左右互换
  • 解密过程按照与加密过程相反顺序使用密钥

 

 解密同加密一样,也需要进行左右消息分组的运算,并且要将运算结果传递给下一轮。通过feistel结构的加密和解密,我们可以发现在明文消息在经过加密以后的密文,可以通过解密算法将其还原为原始的明文,也就是说该加密算法是可逆的。 

5 DES分组密码算法 

5.1 DES起源

1973年,美国的国家标准局认识到建立数据加密标准的迫切性,开始在全国征集国家数据加密标准。有很多公司着手这项工作并提交了一些建议,经历了海选、初选、决赛,最后IBM公司的Lucifer加密系统获得了胜利。经过两年多的公开讨论之后,1997年1月15日NBS决定利用这个算法,并将其更名为数据加密标准(Data Encryption Stand-ards,DES)。不久,其他组织也认可和采用DES作为加密算法,供商业和非国防行政府部门使用。当时,确定有效期为5年,随后在1983年、1988年、1993年三次再次授权该算法续用五年,1997年开始征集AES(高级机密标准),2000年选定比利时人设计的Rijndael算法作为新标准(AES)。

5.2 DES概述 

  • 分组加密算法:明文和密文为64位分组长度。
  • 密码算法:加密和解密除密钥编排不同外,使用同一算法。
  • 密钥长度:56位,但存在弱密钥,容易避开。
  • 采用混乱和扩散的组合,每个组合先代换后置换,共16轮。
  • 只使用了简单的逻辑运算,易于实现,速度快。
  • 现代密码学诞生的标志之一,揭开了商用密码研究的序幕。 

5.3 DES加密流程图 

初始置换:

 在这里插入图片描述

 ·在这里插入图片描述

Feistel结构:feistel结构把任何函数(一般称为F函数,又称轮函数)转化为一个置换。
子密钥的生成:子密钥K的生成大致分成三个过程:置换选择PC1,循环左移,置换选择PC2。
Ln = R(n - 1);
Rn = L(n - 1)⊕f(Rn-1,kn-1)

 5.4 DES函数F的实现流程图

 

 5.5 选择扩展置换E(32位扩展到48位)

 E盒扩展的作用是把32比特的输入扩展成48比特,扩展的方式如下图所示,把输入的32比特从左到右编号为1,2,3.。。。32,并把 这32比特写成每行4个,共8行的形式。然后把第i-1行最右比特和第i+1行最左比特添加到第i行的左边和右边,这样就得到了48bit的输出。(即c1c2c3c4c5c6 = m32m1m2m3m4m5 .... 以此类推)。

 

5.6 DES子密钥的生成算法

 

  • 初始密钥也称种子密钥,64位,经过子密钥换位表PC-1的变换后,由64位变成56位(因为只有56位是有用的位数,有八位为奇偶校验位),这56位分为两组C0和D0; 子密钥换位表PC-1:

https://pic-1259640338.cos.ap-shanghai.myqcloud.com/img/PC1.png

 将明文中第57位数据放在转换后生成表的第一位,第49位放在生成表的第2位……

  • C0和D0作一次循环左移得到C1和D2;循环左移的规则为:16次循环,每次左移 1 1 2 2, 2 2 2 2, 1 2 2 2, 2 2 2 1。
  • C1和D2合并为56位,再经过子密钥换位表PC-2的变换后,由56位变成48位,即得到第一个子密钥K1 子密钥换位表PC-2:

https://pic-1259640338.cos.ap-shanghai.myqcloud.com/img/PC2.png

  •  总流程图

5.7  S盒代替——压缩替代变换

 S盒的作用是将输入的48比特数据压缩为32比特。

 

8个6进4出的S盒如下图所示,每个S盒有4行,记为第0,1,2,3行,有16列,记为第0,1,2,3.。。。,15列。

以s6为例解释s盒的使用方法:

对于6位输入b1b2b3b4b5b6,用b1b6组成的二进制数表示行标,b2b3b4b5组成的二进制数表示列标,查s盒的表,表中的十进制数字转为4位二进制即为输出

 

 5.8 置换P盒的构造方法

 5.9 轮函数步骤

 令+表示XOR加法 (模2诸位加法) ,对于第n轮有:

在这里插入图片描述

 5.10 逆初始置换IP^{-1}

 轮函数最后一步的左边32 bit和右边32 bit合成64 bit,再进行逆初始置换,得到最终密文。

在这里插入图片描述

 5.10 DES解密流程图

6 DES其他知识

6.1 弱密钥

  • 如果给定初始密钥k,经子密钥产生器产生的各个子密钥都相同,即有k_{1} = k_{2} = \cdots = k_{16},则称给定的初始密钥k为弱密钥
  • 若k为弱密钥,则对任意的64bit信息有:E_{k}(E_{k}(m)) = mD_{k}(D_{k}(m)) = m
  • 弱密钥的构造由子密钥产生器中寄存器C和D中的存数在循环移位下出现重复图样决定的(C和D中的存数为全0或全1)。共有四个(十六进制):

 

6.2 半弱密钥

  •  若给定初始密钥k,产生的16个子密钥只有两种,且每种都出现8次,则k称为半弱密钥。
  • 半弱密钥的特点是成对出现,且具有下述性质:若k_{1}k_{2}为一对半弱密钥,m为明文组,则有:E_{k2}(E_{k1}(m)) = E_{k1}(E_{k2}(m)) = m
  • 此外,还有四分之一弱密钥和八分之一弱密钥。
  • 在DES的256(72057594037927936)个密钥中,弱密钥(256)所占 的比例是非常小的,而且极易避开,因此,弱密钥的存在对DES的安全性威胁不大

6.3 差分分析

 差分分析是一种攻击迭代密码体制的选择明文攻击方法, 与一般统计分析法的不同之处是,它不是直接分析密文或密 钥和明文的统计相关性,而是分析一对给定明文的异或(对 应位不同的个数称为差分)与对应密文对的异或之间的统计 相关性。差分分析的基本思想是在攻击的迭代密码系统中找 出某些高概率的明文差分和密文差分对来推算密钥。利用此 法攻击DES,需要用247个选择明文和247次加密运算,比穷举 搜索的工作量大大减少。然而找到247个选择明文的要求使这
种攻击只有理论上的意义。

6.4 线性分析

该方法是日本密码学家松井充(Mitsuru Matsui)于1993年公 开的另一种对分组密码进行分析攻击的方法,这种方法试图 通过大量的“明-密文对”找出分组密码算法中与密钥有关的 线性方程,然后试着得到大量的这类关系从而确定密钥。其 基本思想是以最佳的线性函数逼近DES的非线性变换S盒,这 是一种已知明文攻击方法,可以在有243个已知明-密文对的情 况下破译DES。虽然获得已知明文比选择明文更容易,但线性分析作为一种攻击手段针对DES在实际上仍然不可行。

6.5 多重DES

  • 为了提高DES的安全性能,并充分利用已有DES的软件 和硬件资源,可以使用多重DES。多重DES就是使用多个密 钥利用DES对明文进行多次加解密,使用多重DES可以增加密钥量,从而大大提高抵抗对密钥的穷举搜索攻击的能力。
  • 已经证明多重DES并不等价于使用一个56位密钥的单重DES:Ø 二重DES Ø 三重DES。
    所有可能的64位明文分组映射到所有可能的64位密文分 组共有264!(>101020)种不同的方法,56位密钥的DES算 法,提供了256(<1017)个这种映射关系,所以,多重 DES所对应的映射不同于单DES所定义的映射。以双重 DES为例,对于消息m1,能够找到一个k3满足: Ek2(Ek1(m1))=Ek3(m1);对于消息m2,能够找到一个k4 满足:Ek2(Ek1(m2))=Ek4(m2) ;但k3和k4相同的概率只 有1/264。也就是说,针对任意消息m不存在k3满足
    Ek2(Ek1(m))=Ek3(m)。
  • 二重DES
  • 三重DES


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

相关文章

11、国产密码算法

参考推荐&#xff1a; 国密SM1\ SM2\ SM3\ SM4\ SSF33算法和国际RSA算法的对应关系_小明做IT的博客-CSDN博客_ssf33算法 国密算法SM1/SM2/SM3/SM4_fengwang0301的博客-CSDN博客_sm2/sm3/sm4 国产密码算法 国产密码算法是指由国家密码研究相关机构自主研发&#xff0c;具有相…

密码算法应用规范

术语解释 对称算法&#xff08;Symmetric key algorithm&#xff09;&#xff1a;采用相同的密钥执行加密或解密。 非对称算法&#xff08;Asymmertric key algorithm&#xff0c;公开密钥算法&#xff09;&#xff1a;用作加密的密钥不同于用作解密的密钥&#xff0c;而且解密…

古典密码算法(移位密码算法、维吉尼亚算法)

古典密码算法(凯撒、维吉尼亚) A. 1-1.移位密码算法 【实验目的】 1&#xff09; 学习移位密码的原理 2&#xff09; 学习移密码的实现 【实验原理】 算法原理 a) 移位密码就是对26个字母进行移位操作&#xff0c;可以移动任意位数&#xff0c;这样就实现了对明文的加密…

换位密码算法

换位密码算法基本原理&#xff1a;先把明文按固定长度进行分组&#xff0c;然后对每一组的字符进行换位操作&#xff0c;从而实现加密。为加强安全性&#xff0c;可进行多次换位密码算法运算。 import random def encrypt(plainText,t):result[]lengthlen(t)temp[plainText[i:…

常见密码学算法

学习笔记 分类 密码学用于解决信息安全中的保密性&#xff0c;完整性&#xff0c;认证和不可否认性等问题。最初主要用于解决保密性。随着密码学技术的发展&#xff0c;逐渐应用到其它领域。 常见密码学算法&#xff1a;DES,AES; RSA, ECC; Hash; Signature等。 分类 对称密…

密码学基础(一)常见密码算法分类

一、密码算法分类&#xff1a; 密码算法主要分为三类&#xff1a;对称密码算法、 非对称密码算法、摘要算法。 二、对称密码算法&#xff08;Symmetric-key Algorithm&#xff09; 1、概念 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算…

常用的密码算法汇总分析(动态更新ing)

常用密码算法整理汇总 常用对称加密算法常用非对称加密算法常用Hash算法国产密码关于密码算法会持续更新.... 常用对称加密算法 对称加密算法(分组加密)描述DES将明文分为64位一组、密钥64位&#xff0c;实际56位&#xff08;64位中8位奇偶校验位&#xff09;3DES执行了3次DES&…

【密码学】常见密码算法分类和运用

一、摘要算法&#xff08;Digest Algorithm&#xff09; 摘要算法 是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法&#xff0c;又称为 散列函数 、 哈希函数 、 杂凑函数 、单向函数 等&#xff0c;通常用来做数据完整性的判定&#xff0c;即对数据进行…

常用密码算法介绍

算法种类 根据技术特征&#xff0c;现代密码学可分为三类&#xff1a; 对称算法 说明&#xff1a;加密密钥和解密密钥相同&#xff0c;对明文、密文长度没有限制 子算法&#xff1a; 流密码算法&#xff1a;每次加密或解密一位或一字节的明文或密文 分组密码算法&#xff…

2020 shodan 配置详解

需要先注册一个号>然后才能在kali里安装并认证 官网&#xff1a;https://www.shodan.io 安装命令&#xff1a; git clone https://github.com/achillean/shodan-python.git cd shodan-python python setup.py installshodan -h 查看使用&#xff1a; 这个。。土味英语&am…

Python中shodan模块的使用

关于shodan的安装和使用&#xff0c;传送门——> 渗透测试之Shodan的安装和使用 常用 Shodan 库函数 shodan.Shodan(key) &#xff1a;初始化连接APIShodan.count(query, facetsNone)&#xff1a;返回查询结果数量Shodan.host(ip, historyFalse)&#xff1a;返回一个IP的详细…

暗黑引擎 -- Shodan常用搜索语法

fofa&#xff0c;钟馗之眼&#xff0c;shodan等等一系列的公网设备搜索引擎&#xff0c;其中fofa和shodan使用的最多&#xff0c;本文就来整理一些shodan的搜索语法 Shodan&#xff1a;www.shodan.io Ps&#xff1a;均来自互联网搜集整理 工业控制系统 三星电子广告牌 &quo…

shodan的使用及maltego的注册

渗透学习 信息收集工具指南1 文章目录 渗透学习前言*本文只做学习用途&#xff0c;严禁利用本文提到的技术进行非法攻击&#xff0c;否则后果自负&#xff0c;本人不承担任何责任。* 一、shodan1.网络空间搜索引擎2.shodan3.命令行shodan 二、maltego1.情报分析2.maltego 总结…

shodan命令行

shodan获取IP信息 kali中命令行输入 shodan host ip 可以看到好多&#xff0c;比如可能漏洞&#xff0c;开放端口&#xff0c;运行的服务 shodan info 查询账户信息 Shodan获取自身外部IP shodan myip shodan检测是否有蜜罐保护 shodan honeyscore ip 蜜罐好比是情报收…

使用shodan/censys API搜索免费的elasticsearch/kibana资源

文章目录 注册shodan并获取API安装shodan注册censys并获取API安装censys用censys查询可用elasticsearch资源 记得以前我在elastic社区分享过一个主题《ITDS如何玩转elastic》(这里的ITDS是IT屌丝的意思)&#xff0c;里面提到过如何用elasticsearch做数字货币的交易数据分析&…

探究Shodan之旅之Shodan Hacking

下面让我们继续浅析一下国外专注于物联设备扫描的Shodan引擎~~ ExploreSearch Engine for the Internet of Thingshttps://www.shodan.io/explore Shodan除了能搜索Web服务器&#xff0c;还能扫描防火墙、路由器、交换机等一切 联网设备且支持Chrome和Firefox拓展插件 Shodan…

信息搜集:网络空间搜索引擎(Shodan)语法及API应用案例

信息搜集&#xff1a;网络空间搜索引擎&#xff08;Shodan)语法及API应用案例 使用Python去调用Shodan的API接口可以实现自动化信息搜集&#xff0c;首先需要注册用户&#xff0c;在My Account中可以看到API Key。本例如下图&#xff1a; 初始化API&#xff1a; import shodan…

shodan常用命令

简介 虽然目前人们都认为谷歌是最强劲的搜索引擎&#xff0c;但Shodan才是互联网上最可怕的搜索引擎。与谷歌不同的是&#xff0c;Shodan不是在网上搜索网址&#xff0c;而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”谷歌&#xff0c;一刻不停的在寻找着所有和互联…

Shodan搜索信息的方法

Shodan 是一种搜索引擎&#xff0c;但它与百度等搜索网址的搜索引擎不同&#xff0c;Shodan 可以用来搜索网络空间中在线设备的&#xff0c;包括一些物联网&#xff0c;工控设备等。你可以通过 Shodan 搜索指定的设备&#xff0c;或者搜索特定类型的设备&#xff0c;其中 Shoda…

信息搜集:SHODAN API 参考

信息搜集&#xff1a;SHODAN API 参考 Shodan是全球开放最早的网络空间搜索引擎&#xff0c;也是目前全球最为之名的搜索引擎。Shodan每月中会在全球5亿左右的设备上进行信息搜集&#xff0c;主要针对服务器、网络设备、摄像设备、工控设备等基础设备进行扫描。Shodan为用户提供…