day10(http和https) | 青训营笔记

61 阅读5分钟

这是我参加青训营笔记活动的第10天

HTTP

  • HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范

  • 传输的数据不是计算机底层的二进制包,而是完整的、有意义的数据,如HTML,图片文件,查询结果等超文本,能够被上层识别

  • 在实际应用中,http常用语web浏览器和网站服务器之间传递信息,以明文方式发送内容,不提供任何方式的数据加密

    • 支持客户/服务器模式
    • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
    • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
    • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
    • 无状态:HTTP协议无法根据之前的状态进行本次的请求处理

HTTPS

  • 解决http不安全的特性

  • HTTP运行安全的SSL/TLS协议上,即 HTTPS = HTTP + SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密

  • 流程图如下所示:

    img

    • 首先客户端通过URL访问服务器建立SSL连接
    • 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端
    • 客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级
    • 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站
    • 服务器利用自己的私钥解密出会话密钥
    • 服务器利用会话密钥加密与客户端之间的通信

区别

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全
  • HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443
  • HTTPS 由于需要设计加密以及多次握手,性能方面不如 HTTP
  • HTTPS需要SSL,SSL 证书需要钱,功能越强大的证书费用越高

安全性

http存在的安全问题

  • 通信使用明文(不加密),内容可能被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装

SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议

img

ssl加密

SSL的实现这些功能主要依赖于三种手段:

  • 对称加密:采用协商的密钥对数据加密

    • (对称加密指的是加密和解密使用的秘钥都是同一个,是对称的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性)
  • 非对称加密:实现身份认证和密钥协商

    • 非对称加密,存在两个秘钥,一个叫公钥,一个叫私钥。两个秘钥是不同的,公钥可以公开给任何人使用,私钥则需要保密

      公钥和私钥都可以用来加密解密,但公钥加密后只能用私钥解 密,反过来,私钥加密后也只能用公钥解密

  • 混合加密

    • 发送密文的一方使用对方的公钥进行加密处理“对称的密钥”,然后对方用自己的私钥解密拿到“对称的密钥

这样可以确保交换的密钥是安全的前提下,使用对称加密方式进行通信

#举个例子:

网站秘密保管私钥,在网上任意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。而黑客因为没有私钥,所以就无法破解密文

上述的方法解决了数据加密,在网络传输过程中,数据有可能被篡改,并且黑客可以伪造身份发布公钥,如果你获取到假的公钥,那么混合加密也并无多大用处,你的数据扔被黑客解决

因此,在上述加密的基础上仍需加上完整性、身份验证的特性,来实现真正的安全,实现这一功能则是摘要算法

  • 摘要算法:验证信息的完整性

  • 数字签名:身份验证

CA验证机构

验证服务器的公钥是可值得信赖的

img

总结

可以看到,HTTPSHTTP虽然只差一个SSL,但是通信安全得到了大大的保障,通信的四大特性都以解决,解决方式如下:

  • 机密性:混合算法
  • 完整性:摘要算法
  • 身份认证:数字签名
  • 不可否定:数字签名

同时引入第三方证书机构,确保公开秘钥的安全性