网络安全基础—加解密原理与数字证书

目录

[1) 对称加密和非对称加密](#1) 对称加密和非对称加密)

[Ⅰ 对称加密算法](#Ⅰ 对称加密算法)

[Ⅱ 非对称加密算法](#Ⅱ 非对称加密算法)

[Ⅲ 对称和非对称加密比较:](#Ⅲ 对称和非对称加密比较:)

2)数据加密--数字信封

[3)数据验证 - 数字签名](#3)数据验证 - 数字签名)

4)数字证书

[Ⅰ 数字证书格式](#Ⅰ 数字证书格式)

[Ⅱ 证书的颁发](#Ⅱ 证书的颁发)

[Ⅲ 证书验证:](#Ⅲ 证书验证:)

@.验证B的证书的合法性:

[@ 验证为B颁发证书的这个CA的证书真伪](#@ 验证为B颁发证书的这个CA的证书真伪)

[@ 证书验证案列:](#@ 证书验证案列:)

[1. 发起HTTPS请求](#1. 发起HTTPS请求)

[2. 服务器返回证书](#2. 服务器返回证书)

[3. Chrome验证证书有效性](#3. Chrome验证证书有效性)


1) 对称加密和非对称加密

Ⅰ 对称加密算法

甲与乙事先协商好对称密钥,具体加解密过程如下:

  • 甲使用对称密钥对明文加密,并将密文发送给乙

  • 乙接收到密文后,使用对称密钥对密文解密,得到最初的明文

Ⅱ 非对称加密算法

甲事先获得乙的公钥,具体加解密过程如下:

  • 甲使用乙的公钥对明文加密,并将密文发送给乙。

  • 乙收到密文后,使用自己的私钥对密文解密,得到最初的明文。

Ⅲ 对称和非对称加密比较:

|-------|-----------------------------------|--------------------------------------------|-----------------|
| 加密算法 | 优点 | 缺点 | 使用场景 |
| 对称加密 | 加解密速度快,效率高,算法简单,系统开销小,适合加密大量数据。 | 实现困难,扩展性差。 | 对大量数据进行加解密 |
| 非对称加密 | 无法从一个密钥推导出另一个密钥;公钥加密的信息只能用私钥进行解密。 | 算法非常复杂,导致加密大量数据所用的时间较长,而且加密后的报文较长,不利于网络传输。 | 对密钥或身份信息等敏感信息加密 |

对称密钥加密的优点是效率高,算法简单,系统开销小,适合加密大量数据。缺点是实现困难**,扩展性差**。实现困难原因在于进行安全通信前需要以安全方式进行密钥交换;扩展性差表现在每对通信用户之间都需要协商密钥,n个用户的团体就需要协商n*(n-1)/2个不同的密钥

公钥加密的优点是安全性高。无法从一个密钥推导出另一个密钥;公钥加密的信息只能用私钥进行解密。缺点是算法非常复杂,导致加密大量数据所用的时间较长,而且加密后的报文较长,不利于网络传输

基于公钥加密的优缺点,公钥加密适合对密钥或身份信息等敏感信息加密(小数据),从而在安全性上满足用户的需求


2)数据加密--数字信封

数字信封 是指发送方采用接收方的公钥来加密对称密钥后所得的数据。采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥

用公钥加密对称密钥,即密钥打包

甲事先获得乙的公钥,具体加解密过程如下:

  1. 甲使用对称密钥对明文进行加密,生成密文信息
  2. 甲使用乙的公钥加密对称密钥,生成数字信封 ( 图中⑥→⑦ )
  3. 甲将数字信封密文信息一起发送给乙
  4. 乙接收到甲的加密信息后,使用自己的私钥打开数字信封 ,得到对称密钥
  5. 乙使用对称密钥对密文信息进行解密,得到最初的明文

数字信封技术优点: 结合了对称密钥加密和公钥加密的优点,解决了对称密钥的发布和公钥加密速度慢等问题,提高了安全性、扩展性和效率等
数字信封技术存在问题 :如果攻击者拦截甲的信息,用自己的对称密钥加密伪造的信息,并用乙的公钥加密自己的对称密钥,然后发送给乙。乙收到加密信息后,解密得到的明文,而且乙始终认为是甲发送的信息(问题:中间人篡改了信息,如攻击者修改甲的账户,乙发放资金的时候就到了攻击者手里)

此时,需要一种方法确保接收方收到的信息就是指定的发送方发送的(没有修改过) ------ 解决:数字签名


3)数据验证 - 数字签名

说明:HASH算法→完整性校验

  1. 同入同出 --相同输入,相同输出(相同:数据和hash算法相同)
  2. 等长输出 --不管原始数据长度大小,相同hash算法计算出来的hash值长度永远不变,MD5为128位
  3. 不可逆推--不能根据hash值推算出原始数据
  4. 雪崩效应 --在原始数据上加了微妙的改动都会导致hash结果完全不同,二者之间没有任何关系,即随机。

发送方首先使用哈希算法得到明文信息 的数字指纹。然后使用自己的私钥加密数字指纹 ,得到数字签名

数字签名 是指发送方用自己的私钥对数字指纹进行加密后所得的数据。采用数字签名时,接收方需要使用发送方的公钥才能解开数字签名得到数字指纹。

数字签名和数字信封结合使用:

数字签名两大特性不可抵赖性、不可伪造性

数字签名技术存在问题 :如果攻击者更改乙的公钥,甲获得的是攻击者的公钥,攻击者拦截乙发送给甲的信息,用自己的私钥对伪造的信息进行数字签名,然后与使用甲的公钥的加密伪造的信息一起发送给甲。甲收到加密信息后,解密得到的明文,并验证明文没有被篡改,则甲始终认为是乙发送的信息。此时,需要一种方法确保一个特定的公钥属于一个特定的拥有者(公钥的可靠性)------解决:数字证书


4)数字证书

数字证书 = 现实世界的身份证

CA证书机构 = 警察局

Ⅰ 数字证书格式

注:基于X.509标准的格式

  • 版本(Version):即遵循的X.509标准的版本,目前普遍使用的是v3版本。
  • 序列号(Serial Number):颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可与颁发者名称一起作为证书的唯一标识。
  • 签名算法(Signature Algorithm):颁发者颁发证书时使用的哈希算法和签名算法。
  • 颁发者(Issuer):证书颁发者的可识别名称,必须与颁发者颁发证书中的主体名一致。通常为CA服务器的名称。
  • 有效期(Validity):证书的有效时间段,包含有效的起止日期,不在有效期范围内的证书为无效证书。
  • 主体名(Subject Name):证书使用者的可识别名称,通常包括CN、国家/地区、组织名称、地理位置等。如果主体名与颁发者的可识别名称相同,则该证书是一个自签名证书。
  • 公钥信息(Subject Public Key Info):证书使用者的公钥以及公钥算法信息。
  • 扩展信息(Extensions):可选的扩展字段,通常包含授权密钥标识符、CRL分发点、SAN(Subject Alternative Name,使用者可选名称)等
  • 签名(Signature):颁发者使用CA的私钥对证书信息所做的数字签名。

证书签名的形成:

  • 首先,CA使用签名算法中的HASH密码学算法(如SHA1)生成证书的摘要信息,然后使用签名算法中的公钥密码学算法(如RSA),配合CA自己的私钥对摘要信息进行加密,最终形成签名

样例:


Ⅱ 证书的颁发

通常情况下,为网络中的设备(PC、防火墙等)申请证书时,我们先要在设备上生成公私密钥对,然后将公钥以及设备信息提供给CA,CA根据这些信息来生成证书。当然,也可以由CA来帮助设备生成公私密钥对,并为设备生成证书。然后将CA生成的公私密钥对和证书导入到设备中,省去了设备自己生成公私密钥对的过程

防火墙证书的颁发流程简要如下:

  1. 生成证书请求(CSR):防火墙生成私钥和公钥,并创建证书签名请求(CSR),其中包含公钥和设备信息。

  2. 提交CSR给证书颁发机构(CA):将CSR提交给CA,申请证书。

  3. CA验证身份:CA验证防火墙的身份,通常验证域名或企业身份。

  4. CA签发证书:CA使用自己的私钥对CSR进行签名,生成并返回证书。

  5. 安装证书:将CA签发的证书安装在防火墙上,并配置证书使用(如HTTPS、VPN等)。

  6. 配置信任链:在防火墙上安装CA的根证书和中间证书,确保信任链的完整。

  7. 定期续签:证书有效期到期前,申请新证书并替换旧证书。


Ⅲ 证书验证:

@.验证B的证书的合法性:

证书颁发给使用者后,使用者就会拿着证书到处证明自己的身份。如果我们收到了一个这样的证书,怎么才能判断这个证书就是合法的,不是伪造的呢?

  1. A收到了B发过来的证书,想要验证这个证书的真伪,此时A首先需要获取到为B颁发证书的那个CA的公钥,用这个CA的公钥解密证书中的签名,得到摘要信息
  2. 然后A使用证书中签名算法 里面的HASH密码学算法对证书进行HASH计算 ,也得到一个摘要信息。A将两个摘要信息进行对比,如果两者一致,就说明证书确实是由这个CA颁发的(能用CA的公钥解密说明该CA确实持有私钥),并且没有被篡改过,该证书没有问题。当然,也会同时检查证书是否在有效期内

为A颁发证书的那个CA的公钥 又该如何获取呢?答案还是证书,从CA的证书获取。也就是说,CA除了给别人颁发证书外,它本身也有自己的证书,证书中包含CA的公钥。

@ 验证为B颁发证书的这个CA的证书真伪

再进一步,如何判断为B颁发证书的这个CA的证书真伪以及是否被篡改过?

  • 用CA自己的公钥来验证自己的签名,即用CA证书中的公钥解密该证书中的签名,得到摘要信息;然后使用CA证书中签名算法里面的HASH密码学算法对该证书进行HASH计算,得到另一个摘要信息,两者一致,说明该CA证书是真实的,没有被篡改过。

此时有一个新的问题,假设黑客伪造了CA证书,证书中的签名是黑客用自己的私钥来签名,而公钥就是黑客自己的公钥,那么对该CA证书的验证也能通过。所以上述验证过程的前提是CA证书必须是在可信任的机构获取的,保证没有被伪造


@ 证书验证案列:

当你在Chrome浏览器上访问huawei.com网站时,浏览器会自动进行数字证书的验证,以确保你与该网站之间的通信是安全的。以下是简要的数字证书验证过程:

1. 发起HTTPS请求

  • 当你在Chrome地址栏中输入 https://huawei.com 并按下回车时,浏览器会发起一个HTTPS请求,告知服务器希望建立一个加密连接。

2. 服务器返回证书

  • huawei.com 的服务器响应请求,并返回一个包含网站证书的包。该证书包含以下重要信息:
    • 服务器的公钥
    • 证书的颁发机构(CA)
    • 网站域名(如huawei.com
    • 证书的有效期

3. Chrome验证证书有效性

Chrome会进行一系列的检查来验证证书的有效性:

  • 验证证书是否过期:Chrome检查证书的有效期,确保当前日期在证书的有效期范围内。

  • 域名匹配验证:浏览器检查证书中的域名信息,确认证书颁发给的域名是huawei.com或与其相关的域名,确保证书属于你要访问的网站。

  • 验证证书颁发机构(CA):

    • 浏览器检查证书是否由受信任的证书颁发机构(CA)签发。Chrome浏览器中内置了受信任CA的列表。如果证书是由这些可信的CA签发的,浏览器会继续进行验证。
    • 证书链验证:浏览器还会从网站服务器返回的证书中提取证书链(即中间CA证书),并通过验证中间证书直到根证书,确保信任链的完整性。
  • 检查证书吊销状态:

    • Chrome还可能通过CRL(证书吊销列表)OCSP(在线证书状态协议)检查证书是否已被吊销。吊销意味着证书被CA认定为不再有效,可能是因为密钥泄露或域名所有者的更改

如果证书验证通过,浏览器会继续与服务器进行SSL/TLS握手

相关推荐
qq_4165602016 分钟前
fmql之ubuntu添加dhcp服务
网络
go_to_hacker31 分钟前
网络安全中GET和POST区别在哪?
安全·web安全
小狮子安度因1 小时前
边缘智能-大模型架构初探
linux·网络
宇宙第一小趴菜2 小时前
探索网络世界:TCP/IP协议、Python Socket编程及日常生活比喻
网络·python·tcp/ip
新手嵌入式学习2 小时前
Modbus_tcp
网络·网络协议·tcp/ip
九河云2 小时前
确保在AWS上的资源安全:构建坚不可摧的云安全防线
安全·云计算·aws
马剑威(威哥爱编程)2 小时前
好用!推荐一个开源加密库 Bouncy Castle
java·安全·java-ee·bouncy castle
小宋10212 小时前
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
服务器·网络·rabbitmq
hellojackjiang20112 小时前
开源即时通讯IM框架MobileIMSDK的H5端技术概览
网络·开源·即时通讯·im开发
APItesterCris2 小时前
API 接入前的安全防线:注意事项全梳理
大数据·运维·服务器·开发语言·数据仓库·安全