HTTP 已普及,为何仍需 HTTPS?
HTTPS 是 HTTP 协议基础上引入的加密层。由于 HTTP 内容按文本明文传输,传输过程中可能被篡改。
一、什么是加密和解密
加密是将明文(要传输的信息)进行变换生成密文;解密是将密文还原为明文。此过程需要密钥辅助。
案例:古代奏折中夹带挖洞的纸作为密钥,可隐藏关键字信息。
现代密码学已成为独立学科,奠基人包括艾伦·麦席森·图灵和冯·诺依曼。图灵在二战中破解德军 Enigma 机,奠定了计算机、人工智能及密码学基础,其名字被用于计算机领域最高荣誉'图灵奖'。
二、为什么需要加密
技术往往在实践中暴露问题并寻求新方案。
运营商劫持示例: 下载应用时,若未被劫持,点击按钮弹出正确下载链接;若被劫持,则弹出其他软件(如浏览器)的下载链接。
原因: 数据包经过运营商网络设备(路由器、交换机等),设备可解析并篡改数据内容。客户端向服务端发送请求,服务端响应被截取后,攻击者将目标替换为恶意地址。
风险:
- 隐私信息暴露。
- 响应被篡改。
- 中间人攻击(监视和攻击)。因此 HTTP 需通过 SSL/TLS 加密方案解决,统称为 HTTPS。
注:大多数截获旨在获利,若成本高于收益通常不会发生。但黑客也可利用类似方法(如钓鱼 WiFi)窃取支付密码等敏感信息,明文传输非常危险。
SSL 安全性: SSL 并非绝对安全。随着算力增强,攻破难度降低,需持续维护更新。自行编写加密协议风险更高。
三、常见的加密方式
3.1 对称加密
采用单钥密码系统,同一密钥同时用于加密和解密。
- 特征: 加解密密钥相同。
- 常见算法: DES、3DES、AES、Blowfish 等。
- 特点: 算法公开、计算量小、速度快、效率高。
- 示例: 按位异或运算。明文 a=1234,密钥 key=8888,密文 b=a^key=9834;再次运算 b^key 还原明文。
3.2 非对称加密
需要两个密钥:公钥(public key)和私钥(private key)。
- 特点: 算法复杂、安全性高,但速度慢于对称加密。
- 常见算法: RSA、DSA、ECDSA。
- 配对关系: 公钥给谁都行,私钥仅持有者可用。
- 场景:
- 公钥加密,私钥解密(保密通信)。
- 私钥加密,公钥解密(数字签名/验证身份)。
- 生活示例: A 给 B 送文件,B 提供锁(公钥)和钥匙(私钥)。A 用锁锁住盒子,B 用钥匙打开。
四、加密过程中用到的技术
4.1 数据摘要与指纹
利用单向散列函数(Hash 函数)生成固定长度的数字摘要,用于判断数据是否被篡改。
- 常见算法: MD5、SHA1、SHA256 等。
- 特征: 不可逆,无法从摘要反推原信息,用于数据对比。
- 应用场景:
- Session ID:将用户名和密码转化为唯一标识存储,登录时比对摘要确认合法性。
- 资源上传:生成文件摘要,服务端查重,避免重复上传相同文件。
4.2 数字签名
将数字摘要进行加密即为数字签名,用于后期证书验证。
五、HTTPS 方案探究
5.1 方案 1:只使用对称加密
双方持有同一密钥 X。即使数据被截获,黑客无密钥无法解密。
- 问题: 服务器需为每个客户端维护不同密钥,管理麻烦;修改密钥需强制客户端同步;密钥协商过程若明文传输会被窃听。
5.2 方案 2:只使用非对称加密
服务器发送公钥给浏览器,浏览器用公钥加密数据。
- 问题: 服务器到浏览器的路径若未加密,且公钥被中间人劫持,则不安全。
5.3 方案 3:双方都使用非对称加密
交换公钥,各自保留私钥。中间人无法解析信息。
- 问题: 效率太低。
5.4 方案 4:非对称加密 + 对称加密
结合两者优势。
- 服务端拥有非对称公钥 S 和私钥 S'。
- 客户端发起请求获取公钥 S。
- 客户端本地生成对称密钥 C,用公钥 S 加密后发送。
- 服务器用私钥 S' 解密得到 C。
- 后续通信均使用对称密钥 C。
- 优点: 初始密钥协商用非对称加密保证安全,后续传输用对称加密保证效率。
5.5 中间人攻击 (MITM)
上述方案若在握手阶段被攻击则无效。
- 攻击流程: 中间人劫持服务器公钥,替换为自己的公钥 M。客户端用 M 加密密钥发送给中间人,中间人解密后再用真实服务器公钥转发。双方以为安全,实则通信被监听。
- 核心问题: 客户端无法确认收到的公钥确实来自目标服务器。需保证公钥合法性。
5.6 引入 CA 证书
CA(Certificate Authority)作为第三方机构颁发数字证书,证明服务端公钥的权威性。
- 申请流程: 确认域名、主体等信息,生成公私钥对及 CSR 请求文件,向 CA 申请审核。通过后颁发证书。
- 证书构成: 包含认证信息和数字签名。CA 对证书明文 Hash 形成摘要,再用 CA 私钥加密形成签名。签名与认证信息组成证书。
- 验证流程:
- 客户端内置受信任 CA 公钥。
- 用 CA 公钥解密签名,得到摘要 hash1。
- 计算证书明文 hash2。
- 对比 hash1 和 hash2,相等则证书未被篡改。
- 防篡改能力: 中间人无 CA 私钥,无法伪造有效签名。
5.7 最终方案:非对称加密 + 对称加密 + 证书认证
- 客户端校验证书有效期、发布机构可信度、是否被篡改。
- 浏览器设置中可查看受信任证书发布机构。
5.8 基于 HTTPS 的思考
- 中间人攻击方式: ARP 欺骗、ICMP 重定向、假 WiFi 等。
- 密钥总结:
- 第一组(非对称):校验证书合法性,服务器持私钥,客户端持 CA 公钥。
- 第二组(非对称):协商生成对称密钥,客户端用证书公钥加密,服务器用私钥解密。
- 第三组(对称):后续数据传输加密。
- 安全性思考: HTTPS 防止了中间人攻击,但客户端仍可能成为攻击入口,服务端需二次加密防护。
- 应用层实现: 应用层涉及序列化、协议、加密等定制需求,难以在内核统一实现,故置于用户层。

