网安笔记03 DES概述

news2024/9/23 9:26:35

DES 概述

  • 分组加密算法 : 明文、密文64位分组长度
  • 对称算法 : 加密和解密密钥编排不同,但使用同一算法
  • 密钥长度:56位 —— 每个第8位为奇偶校验位
  • 密钥为任意的56位数,存在 弱密钥, 容易避开
  • 混乱与扩散的组合,每个组合先代替后替换,16轮
  • 只使用标准的算数和逻辑运算、易于时间

其他加密算法

Triple DES Triple DES
IDEA
RC5
RC6
AES
其他一些较实用的算法,如Blowfish,CAST,以及RC2等

加密过程

  1. 输入64bit明文数据
  2. 初始置换 I P IP IP
  3. 密钥控制下 16 轮迭代
  4. 交换左右32bit
  5. 初始逆置换 I P − 1 IP^{-1} IP1

L 0 R 0 ← I P ( 64 b i t 输入法 ) L_0R_0\leftarrow IP(64bit输入法) L0R0IP(64bit输入法)
L i ← R i − 1 L_i \leftarrow R_{i-1} LiRi1
L i ← L i ⊕ f ( R i − 1 , k 1 ) L_i\leftarrow L_i \oplus f(R_{i-1}, k_1) LiLif(Ri1,k1)
64 b i t 密文 ← I P − 1 ( R 16 L 16 ) 64bit密文 \leftarrow IP^{-1}(R_{16}L_{16}) 64bit密文IP1(R16L16)

i为迭代次数, ⊕ \oplus 为逐位mod2求和,f是加密函数

以此推出解密过程

( R 16 L 16 ) ← I P ( 64 b i t 密文 ) (R_{16}L_{16})\leftarrow IP(64bit密文) (R16L16)IP(64bit密文)
R i − 1 ← L i R_{i-1} \leftarrow L_i Ri1Li
L i ← R i − 1 ⊕ f ( L i − 1 , k 1 ) L_i\leftarrow R_{i-1} \oplus f(L_{i-1}, k_1) LiRi1f(Li1,k1)
64 b i t 明文 ← I P − 1 ( L 0 R 0 ) 64bit明文 \leftarrow IP^{-1}(L_0R_0) 64bit明文IP1(L0R0)

置换、拓展、代替

初始置换 I P IP IP和初始逆置换 I P − 1 IP^{-1} IP1
在这里插入图片描述

初始置换IP表示,原来在第58位(8行2列)的数据放到第1行第1位

在这里插入图片描述

拓展置换E合 —— 32 扩展到48位

把32位分为4列

  1. 原来的第一列 --> 第2列和第6列
  2. 原来的第4列 --> 新第5列和第一列,注意他们相对于 行往前挪了一位

在这里插入图片描述

压缩替代S-盒-48位压缩到32位

找出一个4行16列的盒子

48位变为6位二进制
a 1 a 2 a 3 a 4 a 5 a 6 a_1a_2a_3a_4a_5a_6 a1a2a3a4a5a6
拿出首位和最后一位组成
a 1 a 6 a_1a_6 a1a6作为,剩余为 a 2 a 3 a 4 a 5 a_2a_3a_4a_5 a2a3a4a5作为选择,得到对应的32位

在这里插入图片描述

安全性分析

  1. DES其他算法线性,S-盒 非线性
  2. S- 盒不易于分析,提供更好安全性
  3. S-盒是关键

如何构造S盒

  1. 密码算法的 唯一非线性部件,决定算法安全强度
  2. 密码算法必须的混乱作用
  3. S-和密码强度,S-盒分组设计
  4. 非线性度、差分均匀、严格雪崩、可逆、无陷门

置换p-盒的构造

提供雪崩效应
明文、密钥变动引起密文变化

密钥

在这里插入图片描述

密钥置换算法准则

  1. 子密钥统计独立性、灵活性
  2. 简单
  3. 速度
  4. 但没有简单关系(给定两个有某种关系的种子密钥,可以预测他们轮子密钥的关系)
  5. 种子密钥对所有子密钥影响一致
  6. 子密钥获取其他子密钥比特比较困难
  7. 无弱密钥

工作模式

  1. 电子密码本 ECB (electronic codebook mode) ECB (electronic codebook mode)
  2. 密码分组链接 CBC (cipher block chaining)
  3. 密码反馈 CFB (cipher feedback)
  4. 输出反馈 OFB (output feedback)

ECB

每段明文单独加密

C i = E K ( P i ) P i = D K ( C i ) C_i = E_K (P_i)\quad P_i = D_K (C_i) Ci=EK(Pi)Pi=DK(Ci)

  1. 简单有效
  2. 可并行
  3. 不能隐藏明文的 模式信息
  4. 相同明文生成相同密文,同样信息多次出现造成泄漏
  5. 对明文可主动攻击 —— 替换、重拍、删除、重放
  6. 误差传递 : 密文坏-> 对应明文损坏
  7. 传输短信息

CBC

C i = E K ( P i ⊕ C i − 1 ) P i = D K ( C i ) ⊕ C i − 1 C_i = E_K (P_i\oplus C_{i-1})\quad P_i = D_K (C_i)\oplus C_{i-1} Ci=EK(PiCi1)Pi=DK(Ci)Ci1

在这里插入图片描述

  1. 没有已知的并行实现算法
  2. 可隐藏模式信息
  • 共同初始化向量 I V IV IV
  • 相同明文生成不同密文
  • 初始化向量IV可以用来改变第一块
  1. 难主动攻击明文
  • 信息块不容易被替换、重排、删除、重传
  • 误差传递: 密文坏 -> 两块文件坏
  1. 安全性好于ECB
  2. 适合于传输长度大于64位的报文,还可以进行用户鉴别 – SSL 或 IPSec

CFB

分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码流密码

假定

  1. S i S_i Si是移位寄存器,传输jbit
  2. 加密 C i = P i ⊕ E k ( S i ) 的高 j 位 C_i = P_i\oplus E_k(S_i)的高j位 Ci=PiEk(Si)的高j
    S i + 1 = ( S i < < j ) ∣ C i S_{i+1}=(S_i << j) | C_i Si+1=(Si<<j)Ci
  3. 解密 P i = C i ⊕ E k ( S i ) 的高 j 位 P_i = C_i\oplus E_k(S_i)的高j位 Pi=CiEk(Si)的高j
    S i + 1 = ( S i < < j ) ∣ C i S_{i+1}=(S_i << j) | C_i Si+1=(Si<<j)Ci

在这里插入图片描述
在这里插入图片描述

特点

  1. 分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码流密码
  2. 无并行实现算法
  3. 隐藏明文
  4. 共同的移位寄存器初始值 I V IV IV —— 不同信息,IV唯一
  5. 误差传递: 一个单元损坏影响多个单元

OFB

分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码流密码

假定与CFB一样
但是加密如下
C i = P i ⊕ E k ( S i ) 的高 j 位 C_i = P_i\oplus E_k(S_i)的高j位 Ci=PiEk(Si)的高j
S i + 1 = ( S i < < j ) ∣ ( E k ( S i ) 的高 j 位 ) S_{i+1}=(S_i << j) | (E_k(S_i)的高j位) Si+1=(Si<<j)(Ek(Si)的高j)
(S的变化有别于CFB)

解密
P i = C i ⊕ E k ( S i ) 的高 j 位 P_i = C_i\oplus E_k(S_i)的高j位 Pi=CiEk(Si)的高j
S i + 1 = ( S i < < j ) ∣ ( E k ( S i ) 的高 j 位 ) S_{i+1}=(S_i << j) | (E_k(S_i)的高j位) Si+1=(Si<<j)(Ek(Si)的高j)

在这里插入图片描述
在这里插入图片描述

特点
前四点和CFB一样

  1. 分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码流密码
  2. 无并行实现算法
  3. 隐藏明文
  4. 共同的移位寄存器初始值 I V IV IV —— 不同信息,IV唯一

第五点开始

  1. 误差传递:一个单元损坏只影响对应单元
  2. 对明文的主动攻击是可能的 – 被替换、重排、删除、重放
  3. 安全性不如CFB

多重DES

安全性

  1. F函数(S-Box)设计原理未知
  2. 密钥长度的争论
  3. DES的破译
  4. 弱密钥与半弱密钥

长度问题
2 56 ≈ 1 0 17 2^{56} \approx 10^{17} 2561017

现在可以一天内破解密钥

弱密钥、半弱密钥

弱密钥:
E K ⋅ E K = I E_K \cdot E_K= I EKEK=I
DES存在4个弱密钥
p = E k ( E k ( P ) ) p = E_k(E_k(P)) p=Ek(Ek(P))

半弱密钥:
E K 1 = E K 2 E_{K1} = E_{K2} EK1=EK2
至少有12个半弱密钥
C = E k 1 ( P ) = E k 2 ( P ) C = Ek_1(P) = E_{k2}(P) C=Ek1(P)=Ek2(P)

使用常规加密进行保密通信

针对 易受攻击的位置
有 链路加密和端到端加密

链路层加密

针对某一次通信链路

消息在被传输之前进行加密,在每一个节点对接收到的消息进行解密,然后先使用下 个链路的密钥对消 一个链路的密钥对消
进行加密,再进行传输

优点

  • 中间传输节点消息均被解密后重新进行加密
  • 链路上数据以密文形式出现
  • 掩盖消息源点终点
  • 填充技术的使用 -》 消息频率、长度被掩盖,防止通信业务的分析

缺点

  • 要对链路两端加密设备进行同步, 给网络性能、可管理性带来副作用
  • 网络节点中,链路加密只在通信链路上提供安全性,节点上是明文 —— 需要节点的物理安全
  • 对称加密系统,要建立专用网络措施,但网络节点分布宽阔,且密钥连续分配较难

节点加密

类似链路加密。 中间节点解密再加密

差异:不允许消息在节点以明文方式存在,解密后用另一个密钥加密 —— 在节点的另一个安全模块进行

安全性: 报头和路由信息以明文传输,对攻击者分析通信业务无能为力

端到端加密

从源点到终点的传输过程中始终以密文形式存在

又叫脱线加密 包加密,到底终点前不解密。节点损坏不会导致消息泄露

优点

  • 便宜,更可靠,容易设计、实现、维护
  • 避免同步问题 ——报文包是独立加密的,报文包传输错误不影响后续
  • 端到端加密更自然,不影响网络其他用户

缺点

  1. 不允许对目的地址加密
  2. 不掩盖消息源、目的地,对攻击者分析通信业务无能为力

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

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

相关文章

初学者自学Web安全的三个必经阶段(含系统路线脑图+工具笔记)

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入…

React学习1

JSX使得创建虚拟DOM更便捷&#xff0c;纯JS创建虚拟DOM太过繁琐 JSX语法规范&#xff1a; JSX的{}&#xff0c;读变量的时候只能存放表达式&#xff0c;不能写语句&#xff08;代码&#xff09; react可以遍历数组&#xff0c;但是无法遍历对象 react是面向组件编程 函数式…

5月10号软件资讯更新合集....

elementary OS 图像注释工具 Annotator 1.2 发布 Annotator 是一个免费开源图像注释工具&#xff0c;最初是为 elementary OS 设计&#xff0c;但也可用于其他 Linux。近日该工具发布了 1.2 版本&#xff0c;新版本增加了对全屏、当前窗口和选择区域进行截图等功能。 新版本还…

Dcoker高级篇

一、复杂安装详细说明 &#xff08;一&#xff09;安装mysql主从复制 主从复制原理 原理&#xff1a; &#xff08;1&#xff09;master服务器将数据的改变记录二进制binlog日志&#xff0c;当master上的数据发生改变时&#xff0c;则将其改变写入二进制日志中&#xff1b;&…

quill编辑器自定义音频、视频、行内style样式(字符边框、首行缩进)

文章目录 一、音频1、自定义内容2、引入使用 二、视频1、自定义内容2、引入使用 三、文本添加行内style样式&#xff08;文本边框&#xff09;1、不带有下拉框&#xff08;1&#xff09;自定义内容&#xff08;2&#xff09;引入使用 2、带有下拉框&#xff08;1&#xff09;自…

【SpringCloud】Nacos安装与入门

目录 一、认识与安装 1、访问 2、下载 3、解压 4、启动 5、访问 二、基本使用 1、搭建服务 2、服务注册 3、服务发现 一、认识与安装 他是阿里巴巴的产品&#xff0c;也是SpringCloud中的一个注册中心组件&#xff0c;其功能相比Eureka更丰富&#xff0c;在国内更受欢…

设计师常用的7款界面设计工具!

不同的界面设计工具都有其独特的优点和不足之处。本文为大家介绍设计师常用的7款界面设计工具&#xff1a;即时设计是一款在线UI界面设计工具&#xff0c;拥有中文界面和丰富的社区资源&#xff0c;适合初学者和专业设计师使用。Sketch具有直观的矢量编辑工具和可重复使用的符号…

Prometheus原理与二次开发

Prometheus的功能、架构、组件、配置 1 介绍 1.1 简介 Promethues是一套开源系统监控及报警框架&#xff0c;启发于Google的borgmon, 由SoundCoud员工于2012年创建&#xff0c;并于2015年正式发布,2016年正式加入Cloud Native Computing Fundation 1.2 监控目的 趋势分析&…

用递归算法删除不带头结点的单链表中值为x的值

#include<stdio.h> #include<stdlib.h> typedef struct Lnode{int data;//数据域 struct Lnode *next;//指针域 }Lnode,*LinkList; int a[5]{1,2,3,3,4}; int n5; //这里使用尾插法&#xff0c;把数据放在L中 void InitList(Lnode *L){int i;Lnode *s,*rL;//r为尾…

深度学习技巧应用14-深度学习跨框架应用,ONNX实现模型互操作性

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下&#xff0c;深度学习技巧应用14-深度学习跨框架应用&#xff0c;ONNX实现模型互操作性&#xff0c;在深度学习领域&#xff0c;有很多优秀的框架可以使用&#xff0c;例如TensorFlow、PyTorch、Caffe等。但是&…

在Qt中设置程序图标的方法介绍

在Qt中设置程序图标的方法介绍 [1] 在Qt中设置程序图标的方法介绍1 概述1&#xff09;可执行程序&#xff08;以及对应的快捷方式&#xff09;的图标2&#xff09;程序界面标题栏图标3&#xff09;程序在任务栏中的图标 2 方法2.1 创建资源文件2.2 设置标题栏图标2.3 设置可执行…

配置文件Application.properties

配置文件Application.properties 属性配置配置文件的多种格式yaml的数据格式读取yaml文件中的属性值读取yaml文件中的全部属性yaml文件 数据库的属性 属性配置 在application.properties中添加server.port端口号即可 # 服务器端口配置 server.port80# 修改banner 关闭banner …

SpringBoot项目----图书管理系统(详解)

目录 项目业务 技术栈 数据库表的设计 数据库表关系图 关于字典表 前后端接口实现 1.初始化数据库、表、数据 2.数据库连接池配置 3.统一响应封装 4.统一异常处理 5.实现统一会话管理&#xff08;登录&#xff09; 5.通过Mybatis生成工具&#xff0c;生成mapper接…

【大数据之Hadoop】二十九、HDFS存储优化

纠删码和异构存储测试需要5台虚拟机。准备另外一套5台服务器集群。 环境准备&#xff1a; &#xff08;1&#xff09;克隆hadoop105为hadoop106&#xff0c;修改ip地址和hostname&#xff0c;然后重启。 vim /etc/sysconfig/network-scripts/ifcfg-ens33 vim /etc/hostname r…

JVET-AD0081:一种基于外推滤波器的帧内预测模式

本提案提出了一种基于外推滤波器的帧内预测&#xff08;extrapolation filter-based Intra Prediction&#xff0c;EIP&#xff09;模式。首先&#xff0c;利用预定模板从当前块的相邻重建像素获得外推滤波器系数。然后&#xff0c;在当前块内从左上到右下逐位置地处理外推&…

Linux常用命令(3)

文章目录 Linux常用命令&#xff08;3&#xff09;显示文件显示文件内容分屏显示文件内容显示文件前n行&#xff08;默认缺省10行&#xff09;内容显示文件后n行&#xff08;默认缺省10行&#xff09;内容随文件的增长而显示 Linux常用命令&#xff08;3&#xff09; 按ctrlsh…

open3d教程(一):open3d的安装和测试

1 介绍 Open3d&#xff1a;用于3D数据处理的现代库。 Open3D 是一个开源库&#xff0c;支持快速开发处理 3D 数据的软件。 Open3D 前端在 C 和 Python 中公开了一组精心挑选的数据结构和算法。后端经过高度优化&#xff0c;并设置为并行化。我们欢迎来自开源社区的贡献。 2 …

【零基础学机器学习 1】什么是机器学习?

机器学习的社会应用 1. 金融风控 机器学习在金融风控方面的应用非常广泛&#xff0c;可以用于预测借款人的信用风险、欺诈行为等。通过收集大量的历史数据&#xff0c;构建机器学习模型&#xff0c;可以对借款人的信用风险进行预测&#xff0c;从而帮助金融机构降低风险。 2…

关于ADC的笔记1

ADC&#xff0c;全称Anlog-to-Digital Converter&#xff0c;模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件&#xff0c;我们能通过ADC将外界的电压值读入我们的单片机中. 常见的ADC有两种 1.并联比较型&#xff1a; 它的优点是转换速度最快&#x…

[MYSQL / Mariadb]数据库学习-数据类型

数据库学习-数据类型 数据类型字符类型定长char例&#xff1a;定义表结构的定长&#xff1a; 变长 varchar例&#xff1a;创建表&#xff0c;定义变长练习字符类型 数值类型整数(tinyint, smallint, mediumint, int, bigint, unsigned)以mysql> desc mysql.user; 为例例&…