【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

这篇具有很好参考价值的文章主要介绍了【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 分组密码

将被加密明文划分成一个一个的分组,输入n比特明文分组,输出n比特密文分组。

若映射可逆,具有 x n ! x^n! xn! 种替换可能性。

如以下示例,每个4比特输入唯一映射为另一个4比特输出。

【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

2 Feistel密码结构

2.1 什么是Feistel密码结构

1973年由IBM的Horst Feistel首次提出,通过将明文分组分成左右两半部分

  • 左半部分:采用替换操作,
  • 右半部分:采用基于子密钥的轮函数(包括替换和置换组合操作)进行混淆,

如此经过n轮迭代处理后再重新合并组成密文分组

2.2 Feistel密码结构流程图

将Feistel公式化,首先来看加密过程,

  • 每一轮的左半部分是上一轮的右半部分
  • 每一轮的右半部分是 (上一轮的右半部分进入一个F操作,且要输入这一轮的密钥 K i K_i Ki ),然后产生的解再与上一轮的左半部分进行异或操作

那清楚了加密的过程,能不能反推解密的公式呢?答案是可以的,由于 R E i − 1 RE_ {i-1} REi1等于 L E i LE_i LEi,所以解密公式的各个变量都是已知的。所以分组密码是可逆的。

【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

用流程图画出来就是这样的:

【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

那F操作(F函数)是不是可逆的吗?但其实F操作没有要求,可逆也可以 ,不可逆也可以。因为加密的时候用的是F操作,解密的时候也是用的F操作,所以在加密解密的F操作都是正操作,也就都没有用到F操作的逆操作。这里面很大的原因还是Feistel的巧妙结构,分为左右两个部分才能使得F操作可以不可逆,如果只有一个部分那就要求F操作必须可逆。右半部分其实是已知继承下来的,可以保留上一轮的特性。

2.3 Feistel密码设计要素

  • 分组大小:越大的分组越安全,但减小了加密/解密速率
  • 密钥大小 :越长的密钥越安全
  • 迭代轮数:越多轮越安全。经典是16轮
  • 子密钥生成算法:越复杂越难破解
  • 论函数:越复杂越难破解
  • 快速软件加密/解密:嵌入式实现,要求快速执行速度
  • 容易分析:如果算法能被简明清楚地解释,则容易分析该算法的弱点并因此给出对其强度更高级别的保障。例如,DES 不具有容易分析的性质

3 数据加密标准(DES)

3.1 什么是数据加密标准(DES)

DES是最广泛使用的对称加密方案,由原美国国家标准局 (现在是美国国家标准与技术研究所)于1977年采用。

明文分组长度为 64-bit ,密钥有效长度为56-bit,在基于Feistel网络的基础上,采用16轮迭代,从原始56-bit密钥产生16组子密钥,每一轮迭代使用一个子密钥。

3.2 DES介绍

DES 涉及以下操作:

  1. 初始置换(通过置换矩阵,输入64bit,输出64bit)

  2. 轮函数操作(F操作)

    • 先将输入的64bit分为左右两半部分,每个部分32bit,下面只对右半部分进行操作
    • 扩展运算 E E E (输入32bit,输出48bit)
    • 与子密钥进行异或操作(输入48bit,子密钥也是48bit,输出48bit)
    • 压缩运算 S S S(输入48bit,输出32bit)(唯一不可逆的操作)
    • 置换运算 P P P (输入32bit,输出32bit)
    • 与上一轮的左半部分进行异或运算(输入32bit,输出32bit),得到这一轮的右半部分
    • 这一轮的左半部分等于上一轮的左半部分(32bit)。这一轮的右半部分(32bit)通过上面的操作已经得到了。
  3. 子密钥产生算法

    • 置换选择1(输入64bit,输出56比特)
    • 将56bit分为2个28bit的部分(输入56bit,输出2*28bit)
    • 对2个28bit的部分进行循环左移操作(输入2*28bit,输出 2 * 28bit)
    • 将2个28bit部分合并成一个56bit(输入2*28bit,输出56bit)
    • 置换选择2(输入56bit,输出48bit),得到这一轮的子密钥
    • (利用这个子密钥跟轮函数扩展运算后的的48bit进行异或操作)
  4. 逆初始操作(通过逆置换矩阵,输入64bit,输出64bit)

接下来介绍每一个操作的具体实现

初始置换

DES会有标准的置换矩阵,在实现算法的时候不要改动这些标准的矩阵,虽然改动了也可以完成加解密,但是与其他人通信的时候别人使用标准的置换矩阵就解密不出来了。

初始置换其实是一个矩阵置换(不是映射,这里只是改变了位置)的过程,这里左边是64比特明文输入,下边是标准的置换矩阵,我们需要对明文通过置换矩阵进行初始置换得到右边的矩阵(这里先称为密文矩阵,但其实不是最终的密文矩阵,只是第一步加密得到的)。

比如,置换矩阵的第一行第一列是58,我们在明文矩阵中找到第58个比特,然后放到密文矩阵的第一行第一列;置换矩阵的第一行第二列是50,所以在明文矩阵中找到第50个比特,然后放到密文矩阵的第一行第二列。按照这种方式,一一置换,得到第一次置换的矩阵。

【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

轮函数

轮函数也就是前面Feistel网络的F操作(round function)。将输入的64比特分为左右两半部分,每个部分32比特。

对右半部分数据 R i − 1 R_{i-1} Ri1 进行如下操作:

  1. R i − 1 R_{i-1} Ri1通过选择扩展运算 E E E 扩展成48-bit数据
  2. 与子密钥 K i K_i Ki异或生成新的48-bit数据
  3. 经过压缩运算 S S S 变成32-bit数据
  4. 进行置换运算 P P P (可逆的,跟之前的置换操作原理是一致的)
  5. 与左半部分数据 L i − 1 L_{i-1} Li1进行异或

这一步完成之后,得到的就是下一轮的右半部分,而下一轮的左半部分就从上一轮的右半部分直接继承下来。如此循环。

扩展运算

我们说整个加密过程会先分组为64比特明文的输入,每个64比特再分为左右两部分,每个部分32比特,在论函数的第一步是对32比特进行扩展运行 E E E,将32比特通过扩展矩阵变为48比特。

具体过程如下图所示,其实就是添加冗余。可以看到生成的扩展矩阵(48比特)第2列到第5列的值是原封不动加入进来的,第1列和第6列再从原来的32比特矩阵对应取出。(跟前面讲过的初始置换矩阵原理是一致的)

这里需要思考从48比特置换回32比特的操作(多到1)是可逆的吗?其实是可逆的,只需要将冗余去掉就得到原来的矩阵了。

压缩运算

DES中压缩运算S则是非线性的(意思就是不可逆的),而其它运算都是线性的(可逆的)。 压缩运算S不易于分析,提供了更好的安全性。

压缩的总体操作:是将扩展运算后产生的48比特,与子密钥异或操作后还是48比特,再将这48比特分为8个6比特的小组,再通过映射规则(跟之前的置换运算不一样,映射操作是不可逆的)将每个6比特压缩成4比特,这样就变成整体 8*4比特 = 32比特了。

那具体的映射规则是怎么样呢?

前面说的分成8个6比特的小组,我们称为S_1 . . . ... ...S_8$一共8个S-BOX,每个S-BOX之下都有一张标准化的表(做算法的时候不要改动这些表,表中最大的值是15,因为最后要转化为4比特),且每个S-BOX的表都是不一样的。这里的规则是这样的:

  • 输入的是6比特: b 1 b 2 b 3 b 4 b 5 b 6 b_1b_2b_3b_4b_5b_6 b1b2b3b4b5b6,比如这里输入110011
  • b 1 b 6 b_1b_6 b1b6提取出来当作行,将 b 2 b 3 b 4 b 5 b_2b_3b_4b_5 b2b3b4b5提取出来当作列,那么提取出来的行是11(转为十进制是3),列是1001(十进制是9)
  • 根据十进制的行是3,列是9,在S-BOX中找到第3行第9列的数字是14
  • 再将14转化为二进制,是1100,这个1110就是压缩后的4比特。

如此,将全部8个6比特的小组都转化4比特。这里因为S-BOX表中有重复的值,所以逆操作是不唯一的,所以是压缩操作是不可逆的运算。

【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

子密钥生成算法

输入的是64比特的密钥,通过置换选择1(PC-1是87=56比特)变成56比特,再将56比特分为228比特,分为是C和D两部分,每部分再根据密钥表的计算逻辑循环左移,再将左移后的两部分C和D合并成56比特做一次置换运算2(PC-2是8 * 6= 48比特),变成48比特,这就是每一轮的子密钥,用这个子密钥去跟轮函数中扩展运行后的48比特寄存器做异或运算。

循环左移的逻辑这里解释一下,以4比特的0010为例,根据密钥表的计算逻辑,第一轮左移1位,第二轮左移1位,第三轮左移2位,分别变成0010 -> 0100 -> 1000 -> 0010,如此循环,移动16轮,移动一轮置换一轮,生成这一轮的子密钥。

【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

逆初始置换

逆初始置换的概念其实跟前面讲过的初始置换是有联系的,我们前面通过置换矩阵将M1…M64的明文矩阵打乱为密文矩阵,这里的逆初始置换操作跟初始置换是一样的,只是使用的是的逆置换矩阵。

【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)文章来源地址https://www.toymoban.com/news/detail-402564.html

到了这里,关于【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [XJTU计算机网络安全与管理]——第五讲公钥加密算法

    素数 素数是除了1与自身无其他因子的数;它们无法被写为数字的乘积;1一般不再考虑之内 例如:2,3,5,7是素数,4,6,8,9不是 素数是数论研究的中心 200以内的素数有:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173

    2023年04月27日
    浏览(45)
  • 深入理解Triple DES算法:安全加密的基础与应用

    title: 深入理解Triple DES算法:安全加密的基础与应用 date: 2024/4/13 19:56:05 updated: 2024/4/13 19:56:05 tags: 数据安全 隐私保护 加密技术 Triple DES DES算法 对称加密 密钥管理 引言 DES算法原理和工作方式 Triple DES(3DES)的介绍 背景 : 原理 : 优势 : 为什么需要对DES进行三次加密以增强

    2024年04月13日
    浏览(41)
  • DES加密解密 Feistel算法网络结构 详讲

    DES算法是属于对称密码算法中的分组加算法。 分组加密 和 流密码 加密是相对应的。 流密码 是逐字节进行加密,即一个字节一个字节进行加密 分组加密 算法也叫 块加密 ,将明文分成固定字节块,对每个字节块分别进行加密,最后拼接在一起得到密文 密钥长64位,56位参与运

    2024年02月16日
    浏览(31)
  • DES算法揭秘:数据加密的前沿技术

    DES(Data Encryption Standard)算法是一种对称密钥加密算法,由IBM的Horst Feistel设计,于1977年被美国国家标准局(NBS)确定为数据加密标准。DES算法基于分组密码,采用置换、替换和迭代运算,用于保护数据的机密性。 DES加密解密 | 一个覆盖广泛主题工具的高效在线平台(amd794.c

    2024年03月17日
    浏览(37)
  • 【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】

    1. 通过对DES算法的代码编写,了解分组密码算法的设计思想和分组密码算法工作模式; 2. 掌握RSA算法的基本原理以及素数判定中的Rabin-Miller测试原理、Montgomery快速模乘(模幂)算法,了解公钥加密体制的优缺点及其常见应用方式; 3. 掌握MD5算法的基本原理,了解其主要应用

    2024年02月19日
    浏览(39)
  • 【网络安全】4.2 网络安全的标准和规范

    网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。 ISO/IEC 27000系列标准是

    2024年02月08日
    浏览(31)
  • <网络安全>《30 常用安全标准》

    o《信息安全技术 个人信息安全规范》(GB/T35273-2017) o《信息安全技术 个人信息去标识化指南》(GB/T37964-2019) o《信息安全技术 工业控制系统安全检查指南》(GB/T 37980-2019) o《信息安全技术 工业空制系统产品信息安全通用评估准则》(GB/T37962-2019) o《信息安全技术 工业控制系

    2024年02月20日
    浏览(37)
  • 基于des双重加密算法的安全web电子邮件系统的设计与实现(论文+源码)_java_285

    摘要 本文首先研究并介绍国内外目前的背景和现状,在此基础上给出论文的主要研究内容,其次,对双重加密算法的电子邮件系统的需求进行了分析。再次,对双重加密算法的电子邮件系统进行了总体设计,根据其总体设计、软件架构和总体功能模块进行了详细设计,作出了

    2024年02月04日
    浏览(49)
  • C#集成数据加密算法,包含DES、RSA、Base64、SHA、MD5算法,轻松实现数据加密解密需求

    在需要使用配置文件的工控软件中,往往需要在配置文件和数据库中对一些数据加密,即对一串数据进行加密算法后输出复杂符号和字符的形式,让非相关人员无法识别原有数据,从而对数据或数据库进行相应的保护,这往往也是公司安全部门的基本要求。 网上写加密算法的

    2024年02月03日
    浏览(67)
  • 网络安全标准.

    1.1《计算机信息系统安全等级保护划分准则》GB 17859- 1999.pdf 1.2《信息安全技术 网络安全等级保护基本要求》 GB T 22239-2019 .pdf 1.3《信息安全技术 网络安全等级保护安全设计技术要求》GB_ T 25070 2019.pdf 1.4《信息安全技术 网络安全等级保护测评要求》GB T 28448- 2019.pdf 1.5《信息安

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包