对称加密算法(三)(DES)

news2024/11/26 8:25:33

文章目录

  • DES Encryption
  • DES Decryption
  • Example
    • The Avalanche Effect
  • The Strength of DES
    • The Use of 56-Bit Keys
    • The Nature of the DES Algorithm
  • References


在 2001 年引入 AEC(Advanced Encryption Standard)之前,最为普遍使用的加密机制就是 DES(Data Encryption Standard)。DES 使用的就是我们在《对称加密算法(二)(分组密码,Feistel Cipher)》中所介绍的费斯妥密码结构(Feistel cipher),其中,输入数据会被分组为 64 比特大小的块且密钥长度为 56 比特。

DES Encryption

DES 的加密过程如下图所示:

在这里插入图片描述

虽然算法的输入是一个 64 比特的密钥,但实际上我们只会使用到 56 比特,剩下的 8 比特可以是奇偶校验位或者随便设置成啥都行。

首先,64 比特的明文输入会经过一个初始置换Initial permutation)来将比特位置打乱。这个初始置换的规则如下表所示:

在这里插入图片描述

即输入的第 58 位换到第一位,第 50 位换到第 2 位……依此类推,最后一位是原来的第 7 位。

接下来就是 16 轮的运算,会包含位置换(permutation)以及替换(substitution)等一系列操作。最后一轮(16)的输出首先会经过一个 32-bit swap 来将其左半边的 32 比特和右半边的 32 比特互换。互换之后的输出经过初始排列(initial permutation)的逆函数,就得到了最终的 64 比特输出密文。

再来看图中的右半边部分。最初,密钥被传递到一个置换函数(permuted choice 1)中。然后,对于 16 轮中的每一轮,会产生一个子密钥( K i K_i Ki),它由一个左循环移位Left circular shift)和一个置换(permuted choice i)的组合产生。每一轮的置换函数都是相同的,但由于我们不断的在进行循环移位,所以会产生不同的子密钥。


DES Decryption

和费斯妥密码完全一样,DES 的解密过程和加密过程算法相同,除了子密钥的使用顺序颠倒了。且 Inverse initial permutationInitial permutation 的顺序也要颠倒一下。


Example

我们下面通过一个具体例子来说明 DES 的算法流程。

我们的明文、密钥和密文如下(16 进制形式):

在这里插入图片描述

加密的具体过程如下图所示。其中第一行表示经过初始置换(Initial permutation)后的明文的左右半边部分。剩下的 16 行就是 16 轮各自的输出结果以及该轮使用的 48 比特子密钥。从表中我们不难看出下面的关系:
L i = R i − 1 L_i=R_{i-1} Li=Ri1

在这里插入图片描述

The Avalanche Effect

雪崩效应(avalanche effect),指加密算法(尤其是块密码和加密散列函数)的一种理想属性。雪崩效应是指当输入发生最微小的改变(例如,反转一个二进制位)时,也会导致输出的不可区分性改变(密文可以产生巨大变化)。

百度百科

我们假设明文的第四个比特改变,对应的 16 进制形式变为 12468aceeca86420。下图中,第二列为原来的每轮输出以及改变明文后的每轮输出的对比,第三列帮我们统计了改变的比特数量,可以看到,仅仅 3 轮过后,就有 18 比特发生了变换。最终的密文会产生 32 比特的变化。

在这里插入图片描述

同理,当密钥的第 4 比特改变时,密钥变为 1f1571c947d9e859,每轮的比特变化数量如下:

在这里插入图片描述
最终也会有将近一半的比特数量发生改变。


The Strength of DES

The Use of 56-Bit Keys

56 比特的密钥意味着我们会有 2 56 2^{56} 256 个可能的密钥,即大约 7.2 × 1 0 16 7.2\times 10^{16} 7.2×1016 个。因此暴力破解法似乎是很难进行解密了。

假设平均需要搜索一半的密钥空间,那么一台机器每微秒进行一次 DES 加密,就需要超过一千年的时间来破解密码。

然而,每微秒进行一次加密的假设过于保守。 早在 1977 年,Diffie 和 Hellman 就推测,以当时现有的技术可以建立一个拥有 100 万个加密设备的并行机器,每个设备可以每微秒进行一次加密。这将使平均搜索时间降至约 10 小时。他们估计,以 1977 年的美元计算,成本约为 2000 万美元。

以目前的技术,甚至没有必要使用特殊的、专门的硬件。相反,商业的、现成的(非特别定制)处理器的速度就可以威胁到 DES 的安全性。希捷科技公司(Seagate Technology)最近的一篇论文表明,对于今天的多核计算机来说,每秒 10 亿( 1 0 9 10^9 109)次的加密是完全可行的。且以当代超级计算机技术,甚至可以达到每秒 1 0 13 10^{13} 1013 次的加密率。下图展示了使用这些方法时暴力破解所需要的时间:

在这里插入图片描述

可以看出,一台个人电脑可以在一年左右的时间内破解 DES;如果多台个人电脑并行工作,时间会大大缩短。而今天的超级计算机应该能够在大约一个小时内找到一个密钥。128 位或更大的密钥大小实际上是无法通过简单的暴力方法来破解的。表中提到的 AES 我们也会在后面的文章中进行介绍。

The Nature of the DES Algorithm

我们还需考虑的问题是,密码分析是否能通过 DES 的一些性质来做出破解。

人们关注的焦点是每个迭代中使用的八个替换表(substitution tables),即所谓的 S-boxes

S 盒 (Substitution-box) 是对称密钥算法执行置换计算的基本结构。S 盒用在分组密码算法中,是唯一的非线性结构,其 S 盒的指标的好坏直接决定了密码算法的好坏。

百度百科

由于这些 S 盒的设计标准,甚至整个算法的设计标准都没有公开,人们怀疑对于 S 盒的弱点了解的攻击者可能通过密码分析破译 DES。但目前为止,并没有人发现 S 盒的致命弱点。


References

Cryptography and Network Security: Principles and Practice, 7th Edition, ISBN 978-0-13-444428-4, by William Stallings, published by Pearson Education.

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

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

相关文章

Python里面的xlrd模块详解

那我就一下面积个问题对xlrd模块进行学习一下: 1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模块? ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel&…

SQL 入门篇之什么是别名?

SQL 入门篇之什么是别名? 📒博客主页: ​​开心档博客主页​​ 🎉欢迎关注🔎点赞👍收藏⭐留言📝 📌本文由开心档原创! 📆51CTO首发时间:&#x1…

计算机研究生就业方向之考公

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

一篇文章带你了解Linux内核进程上下文切换

1.进程上下文的概念 进程上下文是进程执行活动全过程的静态描述。我们把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为进程上文,把正在执行的指令和数据在寄存器与堆栈中的内容称为进程正文,把待执行的指令和数据在寄…

【SpringMVC】HiddenHttpMethodFilter 转换请求方式

由于浏览器只支持发送get和post方式的请求,那么该如何发送put和delete请求呢? SpringMVC 提供了 HiddenHttpMethodFilter 帮助我们将 POST 请求转换为 DELETE 或 PUT 请求 HiddenHttpMethodFilter 处理put和delete请求的条件: 当前请求的请求…

软考《系统集成项目管理工程师》必备100题(1)

新一轮软考备考来啦~为了帮助大家提高备考效率,将2023上半年软考《系统集成项目管理工程师》必备100题,分享给大家,快来跟着一起打卡学习吧! 有电子版的,可以打印下来背诵~ 1.项目管理过程组有哪些? 启动过程组:定…

aspose win/linux WORD转PDF(及其解决乱码方式)

aspose win/linux WORD转PDF(及其解决乱码方式)1.工具类2.控制台3.解决乱码4.JAR包之前自己用的docm4j 本地进行转换是ok 在服务器中就异常了; 后来在网上查询之后 do4j无法支持liunx系统; 1.工具类 package com.aostar.ida.fra…

LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计2

LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计2 这部分是< LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计1>的下半部分。 一体化项目 因此&#xff0c;部署为打包库&#xff0c;实际上有多种方法来开发代码:首先&#xff0c;将查看all-in-one项目方法。父类和子…

python numpy 的输出控制

示例代码&#xff1a; import numpy as np #precision: xnp.array([3.1415926]) print(x) np.set_printoptions(precision4) print(x)#threshold: xnp.arange(0,12,1) print(x) np.set_printoptions(threshold7) print(x)#edgeitems: xnp.arange(0,12,1) print(x) np.set_prin…

【大数据】clickhouse 常用语法规则优化策略详解

一、前言 在之前的文章中&#xff0c;我们了解到clickhouse作为一款列式存储数据库 &#xff0c;查询性能非常高效&#xff0c;一方面与其自身的存储引擎设计有关&#xff0c;另一方面&#xff0c;在执行查询语句时&#xff0c;底层做了大量的语法规则的优化&#xff0c;本文将…

一体化闸门控制机如何使用

一体化闸门控制机是一款集水位采集、流量计算、图片视频采集、远程通讯、远程控制、本地控制于一体的闸门自动化、信息化测控设备&#xff0c;能够在监控中心远程启闭以及闸门手/自动控制;并通过实时图像监控可以直观了解闸门的运行工况以及周边环境。 1、设备介绍 闸门自动化…

Windows11 Docker镜像存储路径更改(非C盘路径)

Windows11 Docker镜像存储路径更改&#xff08;非C盘路径&#xff09; 基于WSL2安装docker后&#xff0c;在使用过程中会发现大量的docker镜像文件&#xff0c;使系统C盘容量激增&#xff0c;对电脑后续使用造成不便&#xff0c;所以需要在安装的时候&#xff0c;手动修改dock…

已开发多款原型,或明年发布新品,三星XR专利布局大揭秘

近期据韩媒Naver新闻爆料&#xff0c;三星电子或将于明年面向开发者推出XR头显&#xff0c;以构建XR生态系统。据悉&#xff0c;三星计划通过打造XR生态系统&#xff0c;来整合元宇宙、软件、内容、元件开发和科研等上下游领域。据称&#xff0c;为了开发XR设备&#xff0c;三星…

数据仓库电商业务简介完整使用 (第二章)

电商业务简介一、电商业务简介1、电商业务流程2、电商常识1&#xff09;SKU和SPU2&#xff09;平台属性和销售属性1&#xff09;平台属性2&#xff09;销售属性二、业务数据介绍1、电商系统表结构1、活动信息表&#xff08;activity_info&#xff09;2、动规则表&#xff08;ac…

【Docker】解决Docker创建Tomcat容器实例后访问Tomcat主页时报HTTP状态404-未找到的错误

专栏精选文章 《Docker是什么&#xff1f;Docker从介绍到Linux安装图文详细教程》《30条Docker常用命令图文举例总结》《Docker如何构建自己的镜像&#xff1f;从镜像构建到推送远程镜像仓库图文教程》《Docker多个容器和宿主机之间如何进行数据同步和数据共享&#xff1f;容器…

LeetCode HOT 100 —— 215.数组中的第K个最大元素

题目 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 思路 一.暴力法&#xff1a; cla…

计算机研究生就业方向之去大厂做人工智能

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么&#xff0c;如果你只是转码&#xff0c;那么你不一定要考研&#xff0c;至少以下几个职位研究生是没有啥优势的&#xff1a; 1&#xff0c;软件测试工程师&#xff08;培训一下就行&#xff09; 2&#xff0c;前…

ARM32汇编逆向分析基础

寄存器和指令基本格式 寄存器 寄存器名称寄存器描述R0函数的第1个参数, 以及保存函数返回的结果R1 - R3保存函数的第2~4个参数R4 – R8通用寄存器&#xff0c;其中R7在系统调用时存储调用号R9平台相关R10通用寄存器, 可用于保存局部变量R11/FP栈帧指针, 用于记录栈帧R12过程间…

欣奥诚分享:企业最应避讳这八类广告宣传词汇

广告宣传中&#xff0c;企业最应避讳这八类词汇 众所周知&#xff0c;拥有一个朗朗上口、脍炙人口的广告标语、广告口号&#xff0c;对于企业战略部署、发展壮大具有最要作用。一个好的广告标语&#xff0c;不仅可以传达产品买点、展现品牌魅力&#xff0c;激发购买欲望&#…

安装多版本node

一、安装多版本node的原因&#xff1a; 在项目开发过程中&#xff0c;不同项目使用的nodejs版本不同&#xff0c;有时会因为node版本过高或太低&#xff0c;导致报错&#xff1b; 解决方式 利用nvm进行管理&#xff08;本文使用此种方式&#xff09;配置环境变量&#xff08;如…