目录

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 分组密码的含义

分组密码,也称块密码,它是将明文消息经编码表示后的二进制序列 划分成若干固定程度(譬如m)的组(或块),各组分别在密钥的控制下转换成长度为的密文分组。其本质是从一个明文空间(m长的比特串的集合)P到密文空间(n长的比特串的集合)C的一一映射。(一般而言,,但与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:

将明文中第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:

  • 总流程图

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 逆初始置换

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

5.10 DES解密流程图

6 DES其他知识

6.1 弱密钥

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

6.2 半弱密钥

  • 若给定初始密钥k,产生的16个子密钥只有两种,且每种都出现8次,则k称为半弱密钥。
  • 半弱密钥的特点是成对出现,且具有下述性质:若为一对半弱密钥,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

分组密码算法与DES算法相关推荐

  1. 密码学之分组密码设计及DES算法设计

    分组密码:对明文加密时,首先要对明文进行分组,每组的长度相同,然后对每组明文分别加密,得到等长的密文. 特点:速度快.易于标准化.便于软硬件实现 设计要求: 分组长度n要足够大 秘钥空间要足够大 密码 ...

  2. 奇妙的安全旅行之DES算法(一)

    hi,大家好,从今天开始我们介绍加密算法中的对称加密算法.相信大家看了前几篇文章,已经对摘要算法的使用已经有了比较深的认识,摘要算法由于其算法特性,只能单向加密,无法对数据反向解密,这时对称加密算法就 ...

  3. 分组密码算法与AES算法

    目录 1 关于AES算法的数学基础 2 主要内容 2.1 AES形成过程 2.2 分组密码的要求 2.3 AES分组长度.密钥长度.轮数的关系 2.4 AES算法加解密框架 ​ 2.5 AES的分组 ...

  4. des算法s盒java实现_DES算法详解

    本文主要介绍了DES算法的步骤,包括IP置换.密钥置换.E扩展置换.S盒代替.P盒置换和末置换. 1.DES算法简介 DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准. DES是一个分组 ...

  5. 第二十讲 DES算法简介

    1 美国制定数据加密标准简况 目的:通信与计算机相结合是人类步入信息社会的一个阶梯, 它始于六十年代末,完成于90年代初.计算机通信网的形成与发 展,要求信息作业标准化,安全保密亦不例外.只有标准化, ...

  6. 使用DES算法实现加密解密

    使用DES算法实现加密解密 我们常见的加密算法有DES.MD5.IDEA.AES等等,这篇随笔介绍使用DES算法实现加密解密 首先介绍一下DES算法: DES算法为密码体制中的对称密码体制,又被称为美 ...

  7. 【安全算法之DES】DES算法(支持ECB/CBC模式)的C语言源码实现

    [安全算法之DES]DES算法(支持ECB/CBC模式)的C语言源码实现 概述 头文件定义 C语言版本的实现源码 数据分组模式:ECB模式和CBC模式 测试用例 github仓库 更多参考链接 概述 ...

  8. DES算法实现(C++版)

    文章目录 一.DES算法原理 二.相关说明 1.初始置换IP 2.子密钥 Ki 的获取 3.密码函数 f 4.尾置换IP-1 三.DES算法具体实现(C++) 一.DES算法原理 DES算法是一种最通 ...

  9. 什么是DES算法,详解DES算法的基本原理

    DES算法是应用最为广泛的对称加密算法.它主要应用在计算机网络通信.电子资金传送系统.保护用户文件,此外,DES还可用于计算机用户识别系统中.那么,具体什么是DES算法,DES算法的基本原理是什么,本 ...

最新文章

  1. docker修改默认存储位置
  2. jvm性能调优实战 -57数据日志分析系统的OOM问题排查
  3. Linux 文件相关的常用命令
  4. r求矩阵某一列的标准偏差_如何在R中找到标准偏差?
  5. JavaScript开发者的工具箱
  6. 解决tomcat中文乱码问题的方案
  7. PC式硬盘录像机常见故障剖析,监控卡常见问题(一)
  8. 【预测模型】预测某地区未来 10-20 年按年龄划分的人口结构(PDE模型)
  9. 2020年最快的dns_2020年四川第份赏雪指南,最快当天就能打来回!
  10. 资格考试_第三章_证券投资基金的类型
  11. 储氢合金/金属氢化物吸放氢动力学模型——Chou模型
  12. ABeam Insight | 女性科技系列(3):国内外女性科技(FemTech)企业介绍
  13. jBPM4的运行期环境
  14. android开发相册代码,Android开发之简单的电子相册实现
  15. 安装pandas-profiling错误:Could not build wheels for _ which use PEP 517 and cannot be installed directly
  16. Android 是Google开发的基于Linux平台的开源手机操作系统
  17. 王者荣耀角色注销后我的服务器列表怎么删除,王者荣耀账号怎么注销 角色删除流程要求...
  18. 10进制转换成2进制,新手制作,欢迎点评。
  19. Java 日期转ISO8601标准时间
  20. Mac窗口管理软件合集|告别混乱屏幕,一切井井有条。

热门文章

  1. 波波:App Store改版深入测评,生态改变,行业大洗牌
  2. java毕业设计——基于java+J2ME+sqlserver的打飞机游戏设计与实现(毕业论文+程序源码)——打飞机游戏
  3. sm4加密算法C/C++源码
  4. NVIDA CUDA和cuDNN安装教程
  5. 全局gin对象如何在子模块中修改Logger
  6. 【MATLAB图像处理实用案例详解(1)】—— 基于直方图优化的图像去雾技术
  7. 数据结构与算法-最小生成树之克鲁斯卡尔(Kruskal)算法
  8. 微信小程序 给数字或文字加横线,比如原价、已完成任务
  9. 获取图像的Hu不变矩
  10. 网络基础之网络协议,OSI,TCP/IP介绍