1. 原理部分:
1)了解加密算法:
加密算法的分类: 对称加密和非对称加密
a. 对称加密: 加密和解密使用同一个密钥, 优点是速度快, 缺点是密钥的共享困难. 典型的对称加密算法有
DES/AES/RC5/3DES 等.
b. 非对称加密: 生成一个秘密对(公钥和私钥), 加密过程中可以是私钥加密公钥解密; 也可以是公钥加密私钥解密; 一般
情况下私钥由服务器保存, 公钥共享给客户端, 采用公加私解的方式. 它的特征是不论你得到公钥还是私钥都是无法逆推密
钥对的另一半, 这保证了密钥的安全性. 缺点是加密速度极慢, 不适合加密数据量大的流量. 典型的非对称加密算法有
RSA/DSA.
如何选择加密算法?
如果选择对称加密, 密码的共享 (传输) 过程不安全; 如果选择非对称加密, 加密速度慢.
一个完美的解决方案:
用对称加密的密钥用于加密数据, 用户非对称加密来保护对称加密的密钥, 实现又快又安全的数据加密. 保证了数据的私密
性.
2)证书服务器: CA
在上述方案中还存在这样一个问题: 如何确认公钥是由真正的密钥对拥有者所共享 (传输) 的. 解决该问题的方案是证书认
证, CA 服务器提供证书认证服务.
证书认证的过程:
a. 服务器生成密钥对 (公钥和私钥) 和认证请求,
b.CA 服务器根据认证请求为服务器颁发根证书,
c. 服务器获取根证书并共享给客户机, 客户导入根证书.
d. 通讯过程中, 客户机依据根证书确认公钥的合法性.
证书服务器分为: 公共证书服务器 (如微软, google 等) 和企业自建的私有证书服务器(openssl 实现). 证书认证服务器提
供了数据的不和否认性.
3)数字签名: HASH
在上述的方案中, 依然还存在一个问题: 无法判断数据在传输过程中的完整性(是否被篡改过).
典型的 HASH 算法: MD5,SHA1,SHA256,SHA512 等.
服务器使用 HASH 算法对所需传输的数据进行 hash 计算的出一串数字, 并将这串数字公布, 数据从服务器上传输到客户机后,
客户机使用相同的 hash 算法计算 hash 值, 如果和服务器公布的数字签名一致, 则数据没有被篡改, 反之亦然. 这样就保证了
数据的完整性.
4)了解 https 的工作原理:
https(Hypertext Transfer Protocol over Secure Socket Layer), 即 http 下加入了 SSL, 端口默认为 443.
SSL: 安全套接字层, 是 netscape 公司设计的主要用于安全传输.
https 通讯过程:
a. 客户端请求 https 链接 (通过 https:// 实现), 服务端返回证书(携带了公钥, 证书的颁发机构, 选择一组加密算法和 HASH 算法等信息) 给客户端.
b. 客户端收到证书后: 验证证书的合法性, 生成随机密码 (使用协商好的对称加密算法) 并使用公钥加密, 使用约定的 HASH 计算握手消息并使用随机密码对消息进行加密.
c. 客户端将由公钥加密的随机密码和由随机密码加密过的 HASH 数字签名发给服务器.
d. 服务器 (网站) 收到随机密码和数字签名后: 用私钥解密得到随机密码, 用随机密码解密得到数字签名, 用数字签名验证握手消息的完整性. 并使用随机密码加密一段握手消息发给客户端(浏览器).
e. 浏览器解密握手并计算握手 hash, 确保数据的完整性. 之后的通信数据使用随机密码进行加密(对称算法).
来源: http://www.bubuko.com/infodetail-3087894.html