计算机网络知识--对称加密、非对称加密和数字证书详解
前言:SSL/TLS 与加密
HTTP:明文传输,不安全
HTTPS:HTTP + SSL/TLS → 安全传输
1️⃣ SSL/TLS 是什么
SSL(Secure Sockets Layer) 和 TLS(Transport Layer Security) 是网络安全协议。
作用:在客户端和服务器之间建立 安全通道,保证:
数据机密性(别人看不到传输内容)
数据完整性(防止篡改)
身份验证(确认服务器真实可信)
2️⃣ 使用的加密技术
技术 用途 说明 非对称加密(公钥/私钥) 握手阶段 用服务器公钥加密对称密钥,服务器用私钥解密 → 安全传输对称密钥 对称加密 数据传输阶段 用协商好的对称密钥加密数据 → 高效传输大量数据 数字证书 身份验证 服务器提供证书,浏览器验证合法性 → 确保公钥可信、防止冒充
3️⃣ HTTPS 通信流程概览
浏览器发起 HTTPS 请求 → 请求服务器证书
服务器返回证书(包含公钥 + 域名 + CA 签名)
浏览器验证证书合法性
浏览器生成 对称密钥,用服务器公钥加密发给服务器
服务器用私钥解密得到对称密钥 → 握手完成
双方使用对称密钥加密通信内容
4️⃣ 核心理解
HTTP:明文传输,不安全
HTTPS:HTTP + SSL/TLS → 安全传输
SSL/TLS 本身是 协议,不是单一加密算法
SSL/TLS 结合了非对称加密、对称加密和证书,形成完整安全方案
💡 记忆小技巧:
握手阶段 → 非对称加密 + 证书(安全交换对称密钥)
数据传输 → 对称加密(高速加密)
总体 → HTTPS = HTTP + SSL/TLS(安全可靠)
一、什么是加密
加密就是把 明文(可读的内容,比如“你好小明”)转换成 密文(一堆人看不懂的字符串)。
只有拥有对应密钥的人才能解密恢复原文。
二、对称加密(解决传输内容问题)
1. 定义
加密和解密用 同一个密钥。
你和小明共享一个密钥,谁拿到这个密钥都能加密也能解密。
2. 举例
假设密钥是
12345
,
你用它把“你好小明”加密 → 得到密文。
小明收到后用同样的
12345
解密 → 得到明文。3. 优缺点
✅ 优点:加密解密速度快,适合大量数据(如文件、视频)。
❌ 缺点:密钥分发困难。传输密钥时如果被别人截获,所有通信都会被破解。
三、非对称加密(解决传输内容问题)
1. 定义
使用 一对密钥:
公钥(public key):可以公开给别人。
私钥(private key):自己保密,不能泄露。
2. 工作方式
用 公钥加密 → 私钥解密
用 私钥加密 → 公钥解密(可能混淆,最准确的说法是私钥签名 → 公钥验签)
3. 举例
参与者:
小明、程程 两个用户
目标:
小明 给 程程 发送文件,确保 只有 程程 能解密 → 保密性
程程 能确认文件确实是小明发的 → 身份验证(防止伪造)
1️⃣ 传输前准备
小明 拿到 程程 的 公钥
程程 拿到 小明 的 公钥
小明、程程 各自保管自己的 私钥(绝对不能泄露)
2️⃣ 文件加密与发送(保密 + 签名)
假设 小明 要给 程程 发文件
file.txt
:步骤:
(1)小明 对文件生成摘要(哈希)
小明 先对
file.txt
计算哈希值(比如 SHA-256),得到一个固定长度的摘要hashA
哈希值可以唯一代表文件内容,且长度短 → 提高签名效率
(2)小明 用 自己的私钥对摘要签名(这个就是上面的说的私钥签名 → 公钥验签)
signature = 私钥(
小明).加密(hashA)
这样 程程 拿到签名后可以验证文件确实是 小明 发的
(3)小明 用 程程的公钥加密文件(这个就是上面的说的公钥加密 → 私钥解密)
encryptedFile = 公钥(
程程).加密(file.txt)
这样即使其他人截获文件,也没法解密,因为 只有 程程 的私钥能解密
(4)小明 发送给 程程
发送内容包括:
加密后的文件
encryptedFile
小明 的签名
signature
3️⃣ 程程 接收文件并处理
(1)程程 用自己的私钥解密文件
file.txt = 私钥(
程程).解密(encryptedFile)
这样确保只有 程程 能看到文件内容 → 保密性实现
(2)程程 验证文件来源(签名验证)
程程 用 小明 的公钥解密签名:
hashFromSignature = 公钥(
小明).解密(signature)
程程 计算刚解密的文件的哈希
hashB = SHA-256(file.txt)
比较
hashFromSignature
和hashB
是否一致
一致 → 文件确实是 小明发的,未被篡改
不一致 → 文件可能被篡改或不是 小明 发的
4️⃣ 流程总结
步骤 小明 的操作 程程 的操作 用到的密钥 文件加密 用 程程 公钥 加密文件 用 程程 私钥 解密文件 保密性 签名 用 小明 私钥 对摘要签名 用 小明公钥 验证签名 身份验证 发送文件 发送 encryptedFile + signature
接收并解密验证 同上 4. 优缺点
✅ 优点:解决了密钥分发问题,不用担心公钥被别人拿到。
❌ 缺点:加密解密速度比对称加密慢很多,不适合大量数据。四、数字证书(解决公钥问题)
1. 为什么需要证书?
有人可能伪造小明的公钥,冒充小明。
为了确认公钥是真的属于小明,就需要一个“权威机构”来担保,这就是 证书。
2. 数字证书内容
你在浏览器里访问
https://www.xiaoming.com
时:
小明的服务器会把证书文件发给你(zhe)。
证书由 CA(证书颁发机构) 签发。
里面包含:
网站/用户的公钥
网站/用户的身份信息(域名、公司名)
CA 用私钥对这些信息的签名
3. 工作原理
你访问一个网站(比如
https://www.bank.com
)。网站会把证书发给你。
你的浏览器会检查:
证书是不是由可信的 CA 签发?
证书中的公钥是否匹配网站?
验证通过 → 说明公钥可靠,可以安全通信。
五、CA(Certificate Authority,证书颁发机构)(解决公钥问题)
1、CA 是什么
CA(Certificate Authority,证书颁发机构)
它就像是网络世界里的“权威公证处”,专门负责发放和验证“身份证”(数字证书)。有了 CA 签发的证书,大家才能确信你拿到的某个人的 公钥是真的属于那个人的,而不是冒充的。
2、CA 也有公钥和私钥
CA 私钥:非常非常机密,只能 CA 自己保存。它用来给数字证书“盖章签名”。
保存在 CA 机构内部,严格保密,CA机构通过私钥来给别人签名产生证书
CA 公钥:是公开的,全世界的操作系统、浏览器都会内置这份公钥(就像内置了很多权威机构的印章)。
内置在全世界的操作系统、浏览器中,我们通过CA公钥来验签这个证书是否由CA机构发布
这样,任何人都可以用 CA 的公钥去验证证书上的签名,确保它是真的 CA 签发的,而不是别人伪造的。
3、数字证书是什么
证书是明文传输,不加密
数字证书其实就是一个“文件”,它包含了:
网站/个人的公钥(比如小明的公钥)
网站/个人的信息(域名、组织名等)
CA 对这些内容的签名(用 CA 私钥签的)
所以证书就像一张带公章的身份证:
公钥 = 身份证号码
网站信息 = 姓名、住址
CA 签名 = 公安局的盖章
4、为什么有 CA 就能保证小明的公钥正确?
举个例子:
👉 没有 CA 的情况
小明说:“这是我的公钥。”
你收到以后,根本不知道是不是黑客伪造的。
👉 有 CA 的情况(重点!!!!!!!!!!!!)
小明去找 CA,说:“帮我证明一下,这个公钥是我的。”
CA 审核小明身份(比如验证域名所有权、公司注册信息)。
CA 用 自己的私钥 对小明的公钥和信息做签名,生成一份 数字证书。
小明把这个证书发给你。
你用自己电脑里内置的 CA 公钥 验证这个证书的签名。
如果验证成功:说明证书确实是 CA 签发的,公钥就是小明的。
如果验证失败:说明证书是伪造的,不能信任。
所以:CA = 值得信任的第三方,帮你确认公钥确实属于小明。
六、对称加密 + 非对称加密的结合
实际应用中(比如 HTTPS 网站访问):
双方先用 非对称加密 传输对称密钥(解决安全传输问题)。
然后再用 对称加密 进行数据传输(保证效率)。
👉 这样既安全又高效。
1、为什么要结合?
非对称加密:安全,但速度慢(比如 RSA 加密一个 1MB 的文件就要很久)。
对称加密:速度快,但密钥不好传(得先安全地把密钥送过去)。
👉 所以 HTTPS 里就用 非对称加密来传密钥,再用 对称加密来传数据。
2、实际例子:小明和小红通信
假设小明是服务器(网站),小红是用户(浏览器)。
①. 小红访问小明的网站
小红输入网址,比如
https://xiaoming.com
。浏览器会先去拿到小明网站的 数字证书(里面有小明的 公钥,并且证书是由 CA 签过名的,所以能确认公钥是真的小明的)。
②. 小红生成“对称密钥”
小红浏览器随机生成一个临时的 对称密钥(比如 AES 密钥,随机字符串)。
这个密钥将用来加密之后的所有数据传输。
③. 用小明的公钥加密对称密钥
小红拿到小明的 公钥(在证书里),
用这个公钥把刚生成的“对称密钥”加密,发给小明。
④. 小明用自己的私钥解密
小明收到加密过的“对称密钥”,
用自己的 私钥 解密,得到真实的“对称密钥”。
⑤. 后续通信:对称加密
现在,小明和小红都知道这个“对称密钥”了(别人不知道)。
接下来,小明和小红之间的所有数据通信(网页内容、登录信息、图片等等),都用 对称加密(AES 之类的) 来处理。
3、具体流程总结
浏览器访问网站,拿到网站的证书(里面有公钥,且经 CA 认证是真的)。
浏览器生成随机对称密钥。
浏览器用网站公钥加密对称密钥 → 发送给服务器。
服务器用私钥解密 → 得到对称密钥。
之后双方都用这个对称密钥进行数据加密解密 → 安全又高效。
七、关系总结
对称加密:快,但要解决密钥传输问题。
非对称加密:解决了密钥传输问题,但速度慢。
数字证书:保证“公钥的真实性”,防止中间人冒充。
综合应用(比如 HTTPS):
用证书确认网站身份 + 获取公钥;
用非对称加密安全传输对称密钥;
最终用对称加密进行大规模数据传输。
📌 一句话总结:
对称加密 → “同一把钥匙,快但不安全”
非对称加密 → “两把钥匙,安全但慢”
证书 → “公钥身份证,防伪造”
HTTPS → 三者结合,既安全又高效。