HTTPS

1. 加密算法

1.1 对称加密

即加密和解密都是使用同一个密钥,常见的对称加密算法:DES, 3DES 和 AES

优点:

  • 计算量小、加密速度快、加密效率高,适合加密比较大的数据。

缺点:

  • 发送方和接收方都需要知道密钥,因此存在密钥的传输,但传输的过程中,无法保证密钥不被截获。因此安全性得不到保证

  • 每对用户每次使用对称加密算法时,都需要使用别人不知道的唯一密钥,使得收发双方所拥有的钥匙数量急剧增长,密钥管理成为双方的负担

示例: 对称加密

1.2 非对称加密

加密和解密使用不同的密钥,公钥加密之后,只有用私钥才可以解开,私钥加密之后,只有用公钥才可以解开

常用算法: RSA 算法

基本过程:

  1. 甲方生成一对密钥,并将其中一把作为公钥对外公开

  2. 得到该公钥的乙方,将自己的机密信息加密(如客户端的key),再发送给甲方

  3. 甲方再用自己的私钥,对乙方的加密信息解密出来

优点:

  • 加密和解密使用不同的钥匙,私钥不需要通过网络进行传输,安全性很高

  • 加解密速度比对称加密慢

示例: 非对称加密算法 在对称加密中,传递的密钥如果被拦截,就可以用来解析或者伪造双方的信息,安全性不高。 而在非对称加密中:

  1. 第2步中服务器的公钥 key 是公开的,无所谓拦截

  2. 第4步中的加密后的 KEY,必须通过服务端用私钥才能解密,因此拦截了也是无用了。

  3. 第5步中没有密钥key的传输,传输的都是加密后的内容,只有客户端和服务器能使用密钥KEY解析信息

因此,保证了非对称加密的安全性

2. HTTPS 流程

  1. 客户端请求 https 网址,连接到服务器的 443 端口(https的默认端口)

  2. 采用 https 的服务器必须要用一套数字 CA (Certification Authority)证书

    1. 证书是需要申请的,由专门的数字证书认证机构通过严格的审核之后,所颁发的电子证书 (当然了是要钱的,安全级别越高价格越贵)

    2. 颁发证书的同时会产生一个公钥和私钥,私钥由服务器端自己保存,不可泄露

    3. 公钥附带在证书的信息中,可以公开,证书本身也附带一个证书电子签名,这个签名用来验证证书的完整性和真实性,可以防止证书被篡改。

  3. 服务器响应客户端请求,将证书传递给客户端,证书包含公钥和大量其他信息:如证书颁发机构信息,公司信息和证书有效期信息等。(Chorme 浏览器通过点击地址栏的锁标志,再点击证书就能够看到证书详细信息)

  1. 客户端解析证书比对其进行验证,如果证书不是由可信任机构颁发,或者证书中的域名和实际域名不一致,或者证书已经过期,就会向访问者发送警告,由其选择是否需要继续通信

连接不是私密链接
  1. 如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥 A,然后客户端生成一个随机码 KEY,并使用公钥A加密随机码 KEY

  2. 客户端将加密后的随机码 KEY 发送给服务器,作为后面对称加密的密钥

  3. 服务端收到加密后的随机码 KEY 之后,使用服务器自己的私钥B对其进行解密得到随机码KEY

  4. 经历以上的步骤,服务器和客户端终于建立了安全连接,完美解决了对称加密的密钥泄露的问题。后续服务器和客户端均使用随机码 KEY (密钥)对数据进行加密传输通信。

3. HTTP 与 HTTPS

区别:

  1. 最最重要的区别就是安全性,HTTP 明文传输,不对数据进行加密安全性较差(但其实 HTTP 也能够自行加密内容进行传输,比如加密用户的密码,只是... 看参考资料2,用 HTTP 数据加密和 HTTPS 有什么区别)。HTTPS (HTTP + SSL / TLS)的数据传输过程是加密的,安全性较好。

  2. 使用 HTTPS 协议需要申请 CA 证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、DigiCert 和 GlobalSign 等。

  3. HTTP 页面响应速度比 HTTPS 快,这个很好理解,由于加了一层安全层,建立连接的过程更复杂,也要交换更多的数据,难免影响速度。

  4. 由于 HTTPS 是建构在 SSL / TLS 之上的 HTTP 协议,所以,要比 HTTP 更耗费服务器资源。

  5. HTTPS 和 HTTP 使用的是完全不同的连接方式,用的端口也不一样,前者是 443,后者是 80。

HTTPS 的缺点:

  1. 在相同网络环境中,HTTPS 相比 HTTP 无论是响应时间还是耗电量都有大幅度上升。

  2. HTTPS 的安全是有范围的,在黑客攻击、服务器劫持等情况下几乎起不到作用。

  3. 在现有的证书机制下,中间人攻击依然有可能发生。(解决办法,看参考资料3)

参考资料

Last updated