网络安全的核心问题:数据在传输中可以被窃取
HTTP 协议以明文传输数据,任何中间人(ISP、WiFi 提供者、恶意节点)都可以截获并查看传输内容。这就是为什么登录表单、支付信息、API Key 等敏感数据绝对不能通过 HTTP 传输。
解决这个问题的核心手段是加密——将明文数据转换为密文,只有持有密钥的一方能够还原。
对称加密与非对称加密
对称加密
加密和解密使用同一个密钥。优点是速度快,缺点是密钥分发问题——如何安全地将密钥传递给对方?如果密钥在传输中被截获,加密就失去意义了。
常见的对称加密算法:AES、DES、3DES。
非对称加密
使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥加密的数据只能用私钥解密,私钥加密的数据只能用公钥解密。公钥可以公开,私钥必须保密。
常见算法:RSA、ECC(椭圆曲线加密)。
非对称加密解决了密钥分发问题,但计算开销大,速度慢。
TLS/SSL 的工作原理
TLS(Transport Layer Security,传输层安全协议)是 SSL(Secure Sockets Layer)的继任者。目前广泛使用的是 TLS 1.2 和 TLS 1.3。
TLS 握手的核心流程:
客户端 服务端
| |
| 1. ClientHello(支持的加密套件列表) |
|---------------------------------------->|
| |
| 2. ServerHello + 数字证书 + 公钥 |
|<----------------------------------------|
| |
| 3. 验证证书有效性 |
| 4. 生成随机对称密钥,用公钥加密 |
|---------------------------------------->|
| |
| 5. 服务端用私钥解密,获得对称密钥 |
| |
| 6. 双方使用对称密钥加密通信 |
|<=======================================>|
text
TLS 巧妙地结合了两种加密方式:用非对称加密安全地交换对称密钥,然后用对称密钥进行高速的数据加密传输。
HTTPS 的本质
HTTPS = HTTP + TLS。它在 HTTP 和 TCP 之间插入了一个 TLS 层。浏览器地址栏的锁图标表示当前连接使用了 HTTPS。
HTTPS 使用的默认端口是 443(HTTP 是 80)。协议标识符也从 http:// 变为 https://。WebSocket 的安全版本 wss:// 同样建立在 TLS 之上。
SSL 证书的作用
SSL 证书是数字证书的一种,由证书颁发机构(CA,Certificate Authority)签发。它的作用是:
- 身份验证:证明服务器的身份(域名归属)
- 密钥载体:包含服务器的公钥
- 信任链:通过 CA 的信任链建立浏览器对服务器的信任
证书中包含的关键信息:域名、颁发机构、有效期、公钥、数字签名。
证书类型
| 类型 | 验证级别 | 适用场景 | 价格 |
|---|---|---|---|
| DV(Domain Validation) | 域名验证 | 个人网站、测试环境 | 免费(Let's Encrypt) |
| OV(Organization Validation) | 组织验证 | 企业网站 | 付费 |
| EV(Extended Validation) | 扩展验证 | 金融、电商 | 付费,较贵 |
Let's Encrypt 提供免费的 DV 证书,通过 ACME 协议实现自动申请和续签,是目前最流行的免费 SSL 证书方案。
密码学基础概念
| 概念 | 说明 |
|---|---|
| 哈希(Hash) | 单向函数,将任意长度数据映射为固定长度的摘要(如 SHA-256),不可逆 |
| 数字签名 | 用私钥对数据的哈希值加密,验证者用公钥解密后比对哈希值,证明数据未被篡改 |
| 数字证书 | 包含公钥和 CA 签名的文件,用于验证公钥的真实性 |
| CA(证书颁发机构) | 受信任的第三方机构,负责验证申请者身份并签发证书 |
| 证书链 | 根证书 -> 中间证书 -> 服务器证书,浏览器通过验证整条链来确认证书可信 |
↑