密码学_加密

目录

密码学

[01 密码基础进制与计量](#01 密码基础进制与计量)

[02 加解密基操 替换 移位 编码](#02 加解密基操 替换 移位 编码)

编码

置换

移位

加解密强度

[03 对称加密算法(私钥)](#03 对称加密算法(私钥))

工作过程

缺陷

对称加密算法列举?

DES

DES算法架构

DES分组加密公式

DES中ECB-CBC两种加密方式

3DES

由于DES密钥太短,后来就有了3DES

缺点:3des很安全,加密效率不高,语言视频加密不适用

AES

非常大特点:扩展性

[优点:替代3des ,加密效率高,合适语音视频](#优点:替代3des ,加密效率高,合适语音视频)

RC系列

[用的比较广的RC4 流加密算法](#用的比较广的RC4 流加密算法)

轻量级算法

IDEA

软件实现的效率快des2倍

Blowfish

也是一个轻量级算法

国密算法

[04 非对称加密算法(公钥)](#04 非对称加密算法(公钥))

公钥私钥一起用才能实现加解密功能

工作过程

公钥密码系统应用

RSA全能,DH交换,DSA只能签名。

DH

DH会话:解决前面这么把密钥给你问题

工作过程

RSA

慢(加密一般不用RSA)

其它公钥算法

[05 数字签名(私钥签名)](#05 数字签名(私钥签名))

[06 数字证书与CA](#06 数字证书与CA)

作用:证明公钥是你的

[07 哈希Hash与HMAC](#07 哈希Hash与HMAC)

哈希核对文件有没有被修改

HMAC(加盐)

在原文基础是加一个key

[08 对称与非对称加密算法的完美融合](#08 对称与非对称加密算法的完美融合)

项目案例

[09 密码学原理总结](#09 密码学原理总结)


密码学

01 密码基础进制与计量

ipv4 点分十进制

ipv6 十六进制

最小单位 0101比特流

存储最小单位 字节

02 加解密基操 替换 移位 编码

加密 = 加密算法+密钥

置换=替换

移位=移位

编码

编码规则

128个字符 2^7 = 我们可以把7个二进制数编码成一个ASCII码的这样一个编码

64个字符 2^5 = 我们可以把7个二进制数编码成一个BASE64的这样一个编码

base64编码问题:歧义 太相近混淆去掉6个字符

base58编码

------------------------------------------------加解密基本思想------------------------------------

置换

置换=双方先约定(对照规则) 具有规律性容易破解

移位

移位=不改变内容改变顺序 具有规律性容易破解

现代密码学设计基本原理:算法公开 + 关注密钥解决安全性保密性。

加解密强度

常识上:密钥越短加解密越快

03 对称加密算法(私钥)

工作过程

缺陷

对称加密非常大的一个缺陷:怎么去把你的密钥告诉给对方? 防止窃听 10W个人呢?

对称加密算法列举?

DES

des=块加密算法 ------>1G 拆分成几块加密

密钥56位太短很容易被当今电脑破解

DES算法架构

置换=替换(A改成G)

交换=移位(打乱顺序ABC CBA)

我们只需要知道

输入64位明文信息 块加密

中间运用到了置换和移位的操作 重复16轮

DES分组加密公式

左边32位

48位 (经过一个Expand函数扩展到)

密钥 +(经过一个S-Box函数移位)

32密文 (经过一个P-Box函数压缩32)

DES中ECB-CBC两种加密方式

EBC方式容易被攻击

统计学攻击(猜): 英文出现最多字母是E 汉语出现最多字母是的。我发送一堆信息统计密文出现最多的字母是x,就能知道x是E或者是的。 根据频率第二多的是什么统计就能分析出明文密文对应关系

尝试攻击(猜):我发送一堆东西,123 用此算法 得到M

456 用此算法 得到N

以后我看到M就知道密码是123

部分解密:解密其中某一个块。相同的块都知道了。

EBC方式安全一点

首先:加了个生成初始随机向量 IV ,我们的块+由这个生成随机的IV= 一个密文

安全?:由于这个随机值每次都不一样。

123(即使你是)(由于随机值是1)

M (输出)

下次再加密

123 (随机值是2)

N (输出)

此时 统计学攻击 尝试攻击都没有用了

由于明文+随机向量IV=密文,又作为下次的随机向量。链式结构。

下次:上次密文+下一个明文=密文 #保障了加密的安全 现在用的是CBC ECB几乎不用

DES是56位密钥,密钥太短不安全,要用的话得经常去修改密码,防止被暴力破解

DES的算法底层是比较安全的现在已经用了几十年了 只能够被暴力破解,if你要破解这个算法的话最少要进行2^55次方暴力破解次数(因为一共有2^56次方种密钥按照暴力破解运气有50%(相当于除以2)------>2^56 / 2 = 2^55

这个DES(CBC)算法本身是比较安全的,有比DES密钥更长的比如不对称加密算法中WEP108但这个算法本身有漏洞所以破解起来比DES56还要快。

所以DES算法肯定是安全的。

但是DES有一个问题。DES算法因为有一个密钥。我们要提供一个安全的信道给别人密钥。

困难:我有密钥,我加完密之后,怎么把密钥给你。

3DES

由于DES密钥太短,后来就有了3DES

密钥长度放大3倍

56x3=168位

缺点:3des很安全,加密效率不高,语言视频加密不适用

AES

1997发布用来替代DES的算法,DES56太短,随着计算机发展早期56不安全。开始寻找新的算法

为了解决3des的效率问题。

AES(高级加密算法),合适用户高速的网络并且适合在硬件上去实现加密。

非常大特点:扩展性

aes密钥是可以变的既可以是128(4倍)也可以是192(6倍)256位(8倍)(并且还能以32位区间去扩展:32的倍数)。我们的des56 3des168。

即使将来量子力学出现了,我的密码可以给你扩展成2^10 2^20....这样子计算机破解太困难了

作为替代3des加密技术,软硬件运行效率比较高。

优点:替代3des ,加密效率高,合适语音视频

aes用的非常多。要了解。特别是aes加密算法的应用。无线和语音视频加密。

RC系列

后来又有了RC系列

用的比较广的RC4 流加密算法

它不是基于块的,是基于比特流的。

des 1G分块 64 64 64 64

rc 1G基于流 010101整个加密

无线里面WEP WPA认证都是用的RC4 WPA2-AES

轻量级算法

RC算法对硬件的要求特别低,相当于是一个轻量级加密算法,出现时间晚,运行速度快des

#速度快,对硬件要求低(物联网:芯片内存CPU耗电比较低合适这种轻量级加密算法)

IDEA

用的比较少,听的比较少。

分组长度也是64 64 64 64

密钥长度128

软件实现的效率快des2倍

Blowfish

也是一个轻量级算法

合适小芯片这类空间小的

特别是在以后互联网普及之后,前端一些传感器一些很小的嵌入式芯片空间内存电量比较少更合适

这种轻量级加密算法。

需要的空间不到5kb

des aes加密算法比较耗内存。更合适在电脑手机上去跑。不合适在轻量级终端去跑。

国密算法

国内加密算法

SM1 SM2(这些加密的产品不允许被出口)

04 非对称加密算法(公钥)

私钥加密公钥解,公钥加密私钥解

公钥私钥一起用才能实现加解密功能

工作过程

我:用你的公钥加密 你:私钥解密

应用:用户私钥"数字签名",我确定是不是他签的"用他的公钥去解一下"能解开就是他签的。

单向过程

私钥可以推出公钥,公钥不能推回私钥

公钥密码系统应用

RSA全能,DH交换,DSA只能签名。

DH

DH会话:解决前面这么把密钥给你问题

不会被中间人截获,或者截获了也看不懂。

工作过程

分成两步

第一步(上):算法生成一对密钥 4个密钥。把公钥发给对方 私钥自己保存

第二步(下):自己私钥 对方发过来的公钥 生成一个key

底层数学保证两边key相同

这样Bob发送密文,Alice这边通过DH算法就能知道使用什么key。这样就实现了密钥交换

也就是通过交互公钥就实现了密钥的交换

底层数学:作用保证key相等

可行之处:在两端产生相同的密钥, 外人是抓不到的

RSA

使用非常多

慢(加密一般不用RSA)

主要用于:数字签名和密钥交换 (加密散列、密钥)

私钥都存在本地的话 没有通过网络传送 过程安全

公钥加密密文

私钥加密数字签名(可以理解为 证明私人签名 私钥)

密码学的最底层都是数学问题

其它公钥算法

ECC比特币加密算法就是这个

05 数字签名(私钥签名)

底层还是基于公钥密码学算法

认证:对方私钥加密 对方公钥解密成功 则证明是对方发的

抗抵赖:用你公钥解开,肯定用你私钥加密的。你发过这个消息不能否认。

数字签名类比RSA这个原理

数字签名

哈希算法是无论明文多大都能生成定长的摘要 对这个摘要进行签名(密文加本人签名一并发送)

核心:你私钥签名,你公钥解开签名 证明就是你发的。

为什么用哈希对摘要签名? 不对明文签名? 明文太大非常慢

这个图其实有点问题,明文加密用的不是对方公钥(用的不是非对称加密算法)(用的是对称加密算法key),真实项目是对称非对称一起来用。

06 数字证书与CA

问题:确定是对方的公钥?假如发过来公钥是冒充的客户。

作用:证明公钥是你的

怎么证明你是你

权威机构颁发一个证书 CA #私钥签名

公安局颁发一个证书 身份证 #公安局印章

数字证书格式

07 哈希Hash与HMAC

什么是哈希? 就是将一段数据转化成一段定长的数据

不可逆性(单向): 1比特 ----> 128 但不可能128 ------>1比特

无碰撞性 :哈希值几乎唯一

雪崩效应:123明文改一个 哈希后全部变没有规律可言

应用:下载软件。验证哈希值 软件完整性

密码保存。哈希后保存在系统中(MD5)

单向,不能通过哈希值推出密码。

彩虹表 既MD5数据库也就是MD5破解网站(其实就是123哈希后记住生成一堆常见密码对照表形成数据库 猜出来的) 而不是通过逆向算法找出来的

存哈希密码也有一定风险,密码强度不够高还是彩虹得到。

怎么复杂一点: 创建时间 密码 一起哈希存

哈希核对文件有没有被修改

HMAC(加盐)

hmac=盐+哈希 类比

在原文基础是加一个key

也就是不是纯粹的哈希 而是在哈希前面加一个key

123+X 生成一个HMAC

为什么两边不用123哈希验证? 假如我在中间截获哈希码(拿去彩虹表攻击)#也就是网站破解

#碰撞破解

密码+加一个随机数哈希的话 没有这个随机数算不出来。

哈希hash和hmac一定要理解非常非常重要

08 对称与非对称加密算法的完美融合

对称加密算法有几个问题 密钥怎么安全传递对端(分发),10W人怎么做密钥存储管理,对称加密算法不支持数字签名。

对称加密算法缺点 加密速度太慢

项目案例

发送方 3步操作

1 明文哈希摘要签名

2 明文/签名/公钥key(或者数字签名)/ 大数据打包后随机数密钥KEY加密

3 KEY加密传输 #过程安全私钥是存人家本地的

数字证书存的就是公钥,私钥是签名。

接收方 3步操作

1

2

3

09 密码学原理总结

私钥不需要在网络上传输。传输的是公钥。

验证对方发的 数字签名

验证篡改 比对哈希

可以理解为,签名就是一个加密的过程 。也密钥问题

验证签名就是解密

数字签名引发一个非常重要的概念 证书 CA

怎么证明公钥是你的 数字证书

PKI公钥管理体现 生成 颁发等等

相关推荐
电院工程师4 天前
轻量级密码算法PRESENT的C语言实现(无第三方库)
c语言·算法·安全·密码学
电院工程师4 天前
轻量级密码算法CHAM的python实现
python·嵌入式硬件·算法·安全·密码学
电院工程师5 天前
SM3算法Python实现(无第三方库)
开发语言·python·算法·安全·密码学
网安INF5 天前
SHA-1算法详解:原理、特点与应用
java·算法·密码学
渗透好难8 天前
CTF show 数学不及格
安全·系统安全·密码学
网安INF10 天前
ElGamal加密算法:离散对数难题的安全基石
java·网络安全·密码学
lubiii_10 天前
墨者学院-密码学实训隐写术第二题
web安全·网络安全·密码学
网安INF10 天前
RSA加密算法:非对称密码学的基石
java·开发语言·密码学
曼岛_12 天前
[密码学实战]彻底理解位(bit)与字节(byte)在十六进制处理中的区别
密码学
apcipot_rain12 天前
【应用密码学】实验八 数字签名——SM2
密码学