18.对称加密_非对称加密_数字签名_证书

如何加密解密?

当我们拿到加密数据后,肯定希望能够解密,因为我们需要当中的数据,跟前面不可逆的加密是不一样的,本篇文章学的是对我们需要的数据进行加密

在这里插入图片描述

通常密钥是一串数字或者字符串,类似于规则,告诉明文该如何加密

不同的密钥加密完肯定是不一样的

对称加密(对称密码)

在这里插入图片描述

加密用的密钥跟解密用的密钥是同一把

非对称加密(公钥密码)

在这里插入图片描述

加密用的密钥跟解密用的密钥不是同一把

对称加密(Symmetric Cryptography)

◼ 在对称加密中,加密、解密时使用的是同一个密钥

◼ 常见的对称加密算法有

DES

3DES

AES

在这里插入图片描述

对称加密和非对称加密方法由两部分组成:密钥+加密算法

DES(Data Emcryption Standard)

在这里插入图片描述

在这里插入图片描述

◼ DES是一种将64bit明文加密成 64bit密文的对称加密算法,密钥长度是56bit

如果加密的数据比较长,它要一段一段来,加密完,再整合拼接在一起

◼ 规格上来说,密钥长度是64bit ,但每隔7bit会设置一个用于错误检查的bit,因此密钥长度实质上是56bit

但加上错误检查的bit,是64bit,总共有8组

◼ 由于DES 每次只能加密64bit的数据,遇到比较大的数据,需要对 DES加密进行迭代(反复)

◼ 目前已经可以在短时间内被破解,所以不建议使用

3DES(Triple Data Encryption Algorithm)

◼ 3DES,将DES重复3次所得到的一种密码算法,也叫做3重DES

三重DES并不是进行三次DES加密(加密 —>加密 —>加密)

而是加密( Encryption) —>解密(Dencryption )—>加密(Encryption )的过程

◼ 目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题

3DES

在这里插入图片描述

◼ 3个密钥都是不同的,也称为DES-EDE3

◼ 如果所有密钥都使用同一个,则结果与普通的DES是等价的

在这里插入图片描述

在这里插入图片描述

◼ 如果密钥1、密钥3相同,密钥2不同,称为DES-EDE2

AES(Advanced Encryption Standard)

比BASE64少了一个等号

可以先去解密BASE64,发现是乱码,这个时候就可以判定他是AES加密

◼ 取代DES成为新标准的一种对称加密算法,又称 Rijndael加密法

◼ AES的密钥长度有128、192、256bit三种

密钥越长,破解难度越大

◼ 目前AES,已经逐步取代DES、3DES,成为首选的对称加密算法

◼ 一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用AES

它经过了全世界密码学家所进行的高品质验证工作

这个加密算法是没有问题的,但是跟非对称加密相比,它还是差了点,因为对称加密无法保证密钥在网络传输过程当中不被窃取

在这里插入图片描述

先协商好用什么算法,然后再把我的密钥给你,让你对拿到的数据进行解密

接收方只有拿到密钥,才可以对加密的数据进行解密

密钥配送问题

◼ 在使用对称加密时,一定会遇到密钥配送问题

◼ 如果Alice将使用对称加密过的消息发给了Bob

只有将密钥发送给Bob , Bob才能完成解密

在发送密钥过程中

✓ 可能会被Eve窃取密钥

✓ 最后Eve也能完成解密

在这里插入图片描述

因为是在网络当中传输的,密钥有被窃取的风险

如何解决密钥配送问题

◼ 有以下几种解决密钥配送的方法

事先共享密钥(比如私下共享)

密钥分配中心( Key Distribution Center,简称 KDG)

 Diffie-Hellman密钥交换

非对称加密

非对称加密(Asymmetric Cryptography)

A取反,非对称加密

◼ 在非对称加密中,密钥分为加密密钥、解密密钥2种,它们并不是同一个密钥

◼ 加密密钥:一般是公开的,因此该密钥称为公钥( public key)

谁拿到我的公钥都可以,不存在泄密,就算拿到我的密文我也无所谓

因此,非对称加密也被称为公钥密码( Public-key Cryptography)

◼ 解密密钥:由消息接收者自己保管的,不能公开,因此也称为私钥( private key)

在这里插入图片描述

谁是接收方谁就生成密钥对,接收方用自己的私钥对密文进行解密

在这里插入图片描述

公钥、私钥

◼ 公钥和私钥是一一对应的,不能单独生成

一对公钥和私钥统称为密钥对( key pair)

◼ 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密

◼ 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密

非对称加密反过来也是可以的,从安全的角度来看,这会导致数据被泄露,因为私钥加密的数据谁都可以解密(公钥是公开的);从数字签名的角度来看,他是有意义的

在这里插入图片描述

从很大的随机数当中挑出一些来,生成一对密钥

在这里插入图片描述

A要有B的公钥,B要有A的公钥,双方之间才可以进行加密和解密

在这里插入图片描述

解决密钥配送问题

非对称加密,决定了你没有私钥,就是解不了密

◼ 由消息的接收者,生成一对公钥、私钥

◼ 将公钥发给消息的发送者

◼ 消息的发送者使用公钥加密消息

非对称加密的加密解密速度比对称加密要慢

在这里插入图片描述

RSA

◼ 目前使用最广泛的非对称加密算法是RSA

◼ RSA的名字,由它的3位开发者,即 Ron Rivest、 Adi Shamir、 Leonard Adleman的姓氏首字母组成

混合密码系统(Hybrid Cryptosystem)

对称加密的缺点

不能很好地解决密钥配送问题(密钥会被窃听)

非对称加密的缺点

加密解密速度比较慢

◼ 混合密码系统:是将对称加密非对称加密的优势相结合的方法

解决了非对称加密速度慢的问题

并通过非对称加密解决了对称加密的密钥配送问题

◼ 网络上的密码通信所用的SSL/TLS都运用了混合密码系统

混合密码— 加密

◼ 会话密钥(session key)

为本次通信随机生成的临时密钥

作为对称加密的密钥,用于加密消息,提高速度

传输的数据量大,一定是对称加密,非对称加密太复杂了,不适合大数据的加密

◼ 加密步骤(发送消息)

① 首先,消息发送者要拥有消息接收者的公钥

② 生成会话密钥,作为对称加密的密钥,加密消息

③ 用消息接收者的公钥,加密会话密钥

④ 将前2步生成的加密结果,一并发给消息接收者

◼ 发送出去的内容包括

用会话密钥加密的消息(加密方法:对称加密

用公钥加密的会话密钥(加密方法:非对称加密

在这里插入图片描述

混合密码—解密

◼ 解密步骤(收到消息)

① 消息接收者用自己的私钥解密出会话密钥

② 再用第①步解密出来的会话密钥,解密消息

在这里插入图片描述

混合密码—加密解密流程

◼Alice >>>>>>>>Bob

发送过程(加密过程)

① Bob先生成一对公钥、私钥

② Bob把公钥共享给Alice

③ Alice随机生成一个会话密钥(临时密钥)

④ Alice用会话密钥加密需要发送的消息(使用的是对称加密

⑤ Alice用 Bob的公钥加密会话密钥(使用的是非对称加密

⑥ Alice把第④、⑤步的加密结果,一并发送给Bob

接收过程(解密过程)

① Bob利用自己的私钥解密会话密钥(使用的是非对称加密算法进行解密

② Bob利用会话密钥解密发送过来的消息(使用的是对称加密算法进行解密)

想象以下场景

在这里插入图片描述

◼ Alice发的内容有可能是被篡改的,或者有人伪装成

Alice发消息,或者就是Alice发的,但她可以否认

◼ 问题来了: Bob如何确定这段消息的真实性?如何识别篡改、伪装、否认?

◼ 解决方案

数字签名

明文传输:数据不敏感的时候,我们用明文传输

数字签名:用来保证可靠性的,不是用来加密的

以下的数字签名讨论建立在明文传输,只想要讨论是谁发的基础上

数字签名

◼ 在数字签名技术中,有以下2种行为

生成签名

✓ 由消息的发送者完成,通过“签名密钥”生成

验证签名

✓ 由消息的接收者完成,通过“验证密钥”验证

◼ 如何能保证这个签名是消息发送者自己签的?

用消息发送者的私钥进行签名

私钥是不公开的,个人持有

数字签名—过程

在这里插入图片描述

加密:把一串你看得懂的东西,变成你看不懂的乱七八糟的东西
存在非对称加密的缺点,速度慢(特别是数据大的时候)

数字签名—过程改进

在这里插入图片描述

散列值是固定的,而且很短,是消息的唯一标识(相当于ID),所以对散列值加密,跟对消息加密是一样的(可以解决非对称加密慢的问题)

在这里插入图片描述

消息生成散列值,签名解密成散列值,然后进行比对,查看数据是否被篡改

数字签名—疑惑

◼ 如果有人篡改了消息内容或签名内容,会是什么结果?

签名验证失败,证明内容被篡改了

◼ 数字签名不能保证机密性?

数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改

◼ 数字签名的作用

确认消息的完整性

识别消息是否被篡改

防止消息发送人否认

用你的公钥解密的,跟你发送过来的数据单向散列函数加密一模一样,你是无法否认的

非对称加密—公钥、私钥再总结

在这里插入图片描述

非对称加密中,任何人都可以使用公钥进行加密

在这里插入图片描述

数字签名中,任何人都可以使用公钥验证签名

非对称加密—公钥、私钥再总结

数字签名,其实就是将非对称加密反过来使用

在这里插入图片描述

◼ 既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密

公钥负责加密,私钥负责解密

◼ 既然是签名,那肯定是不希望有人冒充我发消息,所以只有我才能签名

私钥负责签名,公钥负责验签

公钥的合法性

(从消息加密的角度来看)

◼ 如果遭遇了中间人攻击,那么

公钥将可能是伪造的

签名将可能是伪造的(可以用中间人的私钥进行签名,说成是发送方的)

◼ 如何验证公钥的合法性?

证书

用签名无法解决中间人攻击

归根到底是公钥在互联网中传输造成的问题

在这里插入图片描述

证书(Certificate)

◼ 说到证书

首先联想到的是驾驶证、毕业证、英语四六级证等等,都是由权威机构认证的

◼ 密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似

里面有姓名、邮箱等个人信息,以及此人的公钥

并由认证机构(Certificate Authority,CA)施加数字签名

私钥在CA手上

◼ CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织

在这里插入图片描述

公钥证书:认证这个公钥是属于你的,防止被别人假冒

有国际性组织、政府设立的组织

有通过提供认证服务来盈利的企业

个人也可以成立认证机构
自己做的证书,一般是没有人会去认的

证书—使用

帮助我们解决中间人攻击的问题

在这里插入图片描述

跟CA的网络通道是安全的

能够用CA的公钥来解签,说明这个数字签名是正确的

CA相当于担保

◼ 各大CA的公钥,默认已经内置在浏览器和操作系统中
在安装完浏览器的时候,就已经帮我们弄好了

证书—注册和下载

在这里插入图片描述

证书—查看windows已经信任的证书

① Windows键 + R >>> 输入mmc

② 文件 >>> 添加/删除管理单元
在这里插入图片描述

③ 证书 >>> 添加 >>> 我的用户账户 >>> 完成 >>> 确定

在这里插入图片描述

在其中选择一个证书点进去>>>详细信息,便可以仔细查看

在这里插入图片描述

在出现HTTPS之前就有对请求参数进行加密

在这里插入图片描述

HTTPS是在传输过程当中进行加密

建立通道,在传输过程当中肯定是安全的,保证传输当中不被人篡改

おすすめ

転載: blog.csdn.net/m0_53008479/article/details/121127758