1.网络安全
2.加密原理
3.证书
1.网络安全
csharp
复制代码
a.机密性: 只有发送方和预订的接收方能理解传输的报文内容
- 发送方加密报文
- 接收方解密报文
b.认证: 发送方, 接收方需要确认对方的身份
c.报文完整性: 发送方, 接收方需要确认报文在传输的过程中有没有被改变
d.访问控制和服务的可用性: 对于正常的用户提供服务, 对于非正常的用户(比如: 攻击服务器)拒绝访问
2.加密原理
csharp
复制代码
加密分为: 对称加密和非对称加密(公开密钥)
csharp
复制代码
1).对称加密 - 用同一把密钥
a.核心思想: 加密和解密使用同一把密钥
b.比喻: 你打造了一个带锁的盒子(加密算法), 和一把唯一的钥匙(密钥); 你把信放进盒子锁上(加密),然后把盒子寄给朋友
你的朋友必须用同一把钥匙的副本才能打开盒子读信(解密)
c.工作流程
- 你和对方事先约定好使用哪把钥匙(密钥协商)
- 通过加密算法将钥匙和明文变成密文(加密数据)
- 发送密文
- 对方用同样的钥匙打开盒子, 取出明文
d.代表算法: DES, AES
e.优点: 速度快, 效率快, 适合加密大量数据
f.缺点: 钥匙怎么安全地交给对方, 如果钥匙在传递过程中被坏人截获, 整个通信就不再安全
csharp
复制代码
2).非对称加密
a.核心思想: 一个公钥, 一个私钥
b.比喻:
- 公钥是锁头, 可以公开给全世界
- 私钥是唯一钥匙, 必须自己严格保密
c.加密通信("用公钥加密, 私钥解密")
- 场景: 你的网友bob想给你发秘密消息
- 过程: Bob拿到你公开的公钥, 把消息锁进盒子, 寄给你; 只有私钥才能打开; 即时盒子被截断, 别人也打不开
d.数字签名("用私钥签名, 公钥验证")
- 场景: 你想发布一个公告, 并让大家相信这确实是你发的
- 过程: 你用你的"唯一钥匙"(私钥)对公告内容做一个独特的"魔法印记"(签名), 然后连同公告一起发出; 任何人都可以用
你公开的"锁头"(公钥)来验证这个印记; 如果验证通过, 就证明这条消息一定是你发的, 且中途没有被篡改
e.代表算法: RSA
f.优点: 完美解决了密钥分发问题, 身份验证能力超强
g.缺点: 速度非常慢, 比对称加密慢成百上千倍
3.证书
csharp
复制代码
如果没有证书, 客户端无法确定收到的公钥是否真的来自它想要通信的服务器; 证书的出现就是为了解决这个问题的, 证书是
由受信任的第三方(Certificate Authority, CA)颁发的, 它用CA的私钥对服务器的公钥和一些相关信息进行签名, 从而证明
这个公钥属于这个服务器
csharp
复制代码
1).根证书通常包含以下部分
a.证书持有者的信息
这个证书是属于谁的? (例如, 网站域名www.example.com, 公司名称等)
b.证书颁发者(CA)的信息
这个身份证是哪个"公安局"发的?(例如, DigiCert, Let's Encrypt, Globalsign 等)
c.证书的有效期
身份证的"签发日期"和"过期日期", 过期了就无效了
d.核心部分: 证书持有者的公钥
e.核心部分: 证书颁发者(CA)的数字签名
这是证书防伪的关键, CA机构会用它们自己的私钥, 对整个证书的内容(包括你的公钥、你的信息等)计算一个数字签名, 并
把这个签名也放在证书里
csharp
复制代码
2).证书是如何工作的? (身份认证流程)
当你的浏览器(客户端)访问一个HTTPS网站(如: https://www.example.com)时, 会发生以下事情:
a.服务器发送证书
网站服务器会把它的"数字证书"发送给你的浏览器
b.浏览器验证证书, 你的浏览器会做一系列严格的检查
- 检查颁发者: 颁发这个证书的CA机构是否是我信任的? 浏览器和操作系统内部都预装了一个受信任的根证书列表
- 检查有效期: 证书在有效期内吗
- 检查域名: 证书上写的域名和你正在访问的域名一致吗
- 最关键的一步 "验证签名"
浏览器用CA机构的公钥(这个公钥已经在浏览器预装的信任列表里了)去解密证书里的那个数字签名, 得到一份"摘要A"; 浏览
器自己再用同样的算法, 对证书的明文内容, 包括网站的公钥、信息等计算一次"摘要B", 如果摘要A和摘要B完全一致, 就证
明了两件事:
这个证书的内容是完整的, 没有被篡改过; 这个证书确实是由那个可信的CA机构颁发的, 里面的公钥是真实有效的
c.建立信任: 只有以上所有检查都通过了, 浏览器才会确信: 这个www.example.com不是假冒的, 它给我的这个公钥确实
是它的, 我可以放心地用这个公钥来加密信息了