安全横切所有层(窃听、伪造、欺骗、入侵),核心四件事:机密性(加密)、完整性(签名)、身份认证(证书)、TLS/HTTPS。
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥 | 一把,双方共享 | 一对(公钥 + 私钥) |
| 速度 | 快 | 慢(数学运算昂贵) |
| 密钥分发 | 难(如何安全共享) | 易(公钥可公开) |
| 典型算法 | AES、ChaCha20 | RSA、ECC(如 ECDSA) |
| 用途 | 加密大量数据 | 密钥交换、数字签名 |
对比:对称加密同一把密钥加解密、快但密钥分发难;非对称用公钥加密私钥解、私钥签名公钥验,解决分发但慢(慢上千倍)。
实践中混合:用非对称安全协商出会话密钥,再用对称加密传大数据——TLS 正是这么干。
数字签名:发送方用私钥对消息哈希加密,接收方用公钥解密验证。提供完整性(没被篡改)和不可否认性(确是私钥持有者发的),不提供机密性。
证书:解决「公钥是谁的」——证书 = 公钥 + 持有者信息 + CA 的签名。浏览器内置受信任 CA 公钥,验证服务器证书签名,信任链成立(CA 签服务器证书,根 CA 自签)。
TLS 在 TCP 之上(见第 4 章)、HTTP 之下,握手协商会话密钥。简化流程(TLS 1.2 RSA):
客户端 服务器
│ ── ClientHello(支持的版本/算法/随机数)──→ │
│ ←─ ServerHello + 证书 + 随机数 ────────── │
│ 验证证书 → 生成 PreMaster,用公钥加密 ────→ │
│ 双方用 随机数+PreMaster 派生会话密钥│
│ ←──────── Finished(对称加密开始)────→ │
| 维度 | HTTP | HTTPS |
|---|---|---|
| 默认端口 | 80 | 443 |
| 加密 | 明文传输 | TLS 加密 |
| 身份认证 | 无 | 服务器证书 |
| 中间人攻击 | 易受 | 可防 |
| 性能 | 略快(无握手开销) | 握手 + 加密有开销(TLS1.3/HTTP2 已大幅缓解) |
| 适用 | 非敏感内容 | 登录、支付等一切敏感内容 |
对比:HTTPS = HTTP + TLS,补上 HTTP 三大短板:机密性(明文变密文)、完整性(防篡改)、身份认证(防中间人)。