HTTP和HTTPS的区别及HTTPS加密算法

1 .HTTP和HTTPS的概念      

  HTTP:是互联网上应用最为普遍的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可使浏     览器更加高效,使网络传输减小。http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通讯双方也没有进行任何认证,通讯过程很是容易遭遇劫持、监听、篡改,严重状况下,会形成恶意的流量劫持等问题,甚至形成我的隐私泄露(好比银行卡卡号和密码泄露)等严重的安全问题。html

  HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。算法

  HTTPS协议的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性。浏览器

2. HTTP和HTTPS的工做原理:

  HTTP当用户在浏览器的地址栏中输入所要访问Web的URI之后,HTTP的处理过程即会开始,HTTP中默认的端口是80端口,它的工做机制,首先是客户端向服务器的80端口创建一个TCP链接,赞后而后再这个链接上进行请求和应答以及数据报文的发送。具体过程成以下:安全

  一次HTTP操做称为一个事务,其工做整个过程以下:
(1)、地址解析
  如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm
  从中分解出协议名、主机名、端口、对象路径等部分,对于咱们的这个地址,解析获得的结果以下:
  协议名:http
  主机名:localhost.com
  端口:8080
  对象路径:/index.html
  在这一步,须要域名系统DNS解析域名localhost.com,得主机的IP地址。服务器

(2) 封装HTTP请求数据包
  把以上部分结合本机本身的信息,封装成一个HTTP请求数据包微信

(3) 封装成TCP包,创建TCP链接(TCP的三次握手)
  在HTTP工做开始以前,客户机(Web浏览器)首先要经过网络与服务器创建链接,该链接是经过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,所以Internet又被称做是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议创建以后才能,才能进行高层协议的链接,所以,首先要创建TCP链接,通常TCP链接的端口号是80。这里是8080端口网络

(4)客户机发送请求命令
       创建链接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。并发

(5)服务器响应
  服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据学习

(6)服务器关闭TCP链接
  通常状况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP链接,而后若是浏览器或者服务器在其头信息加入了这行代码
  Connection:keep-alive
  TCP链接在发送后将仍然保持打开状态,因而,浏览器能够继续经过相同的链接发送请求。保持链接节省了为每一个请求创建新链接所需的时间,还节约了网络带宽。
服务器将响应信息传给客户端,响应体中的内容多是一个html页面,也多是一张图片,经过输入流将其读出,并写回到显示器上。网站

  HTTPSHTTPS实际上是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会经过TLS进行加密,因此传输的数据都是加密后的数据。服务器在给客户端发送的数据是加密的,只有服务器和客户端才能读懂,并且在进行数据交互的时,还须要用对称秘钥(下面有概念)进行验证,可是服务器又是如何将对称秘钥发送给客户端?(下面将会讲到)

3. HTTP和HTTPS的区别:

  (1)HTTPS 协议须要到CA(电子商务认证机构)申请证书,通常免费证书不多,须要交费。

  (2)HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具备安全性的ssl加密传输协议

  (3)HTTP 和 HTTPS 使用的是彻底不一样的链接方式用的端口也不同,前者是80,后者是443。

  (4)HTTP 的链接很简单,是无状态的

  (5)HTTPS 协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比 HTTP 协议安全

  (6)HTTPS 内容传输通过完整性校验

  (7)HTTPS 内容通过对称加密,每一个链接生成一个惟一的加密密钥

  (8)HTTPS 第三方没法伪造服务端(客户端)身份 

4.HTTPS的加密算法

  首先介绍两个概念:

  对称秘钥:对称密钥加密又叫专用密钥加密,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。一般有两种模式:流加密和分组加密。

  非对称秘钥:非对称加密算法须要两个密钥:公开秘钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,若是用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;若是用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。由于加密和解密使用的是两个不一样的密钥,因此这种算法叫做非对称加密算法。

4.1 HTTPS保证数据安全的机制:

  在HTTP的概念中介绍了HTTP是很是不安全的,那么在服务器与客户端传递数据的过程当中HTTPS是如何保证数据的安全呢?

  1.客户端向服务器端发起SSL链接请求;(在此过程当中依然存在数据被中间方盗取的可能,下面将会说明如何保证此过程的安全)

  2 服务器把公钥发送给客户端,而且服务器端保存着惟一的私钥;

  3.客户端用公钥对双方通讯的对称秘钥进行加密,并发送给服务器端;

  4.服务器利用本身惟一的私钥对客户端发来的对称秘钥进行解密,在此过程当中,中间方没法对其解密(即便是客户端也没法解密,由于只有服务器端拥有惟一的私钥),这样保证了对称秘钥在收发过程当中的安全,此时,服务器端和客户端拥有了一套彻底相同的对称秘钥。

  5.进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,能够保证在数据收发过程当中的安全,便是第三方得到数据包,也没法对其进行加密,解密和篡改。

4.2 CA(电子商务认证机构)认证做用: 

  在上面提到的 客户端向服务器端发起请求时存在数据被盗取的过程:  假如服务器端经由中间方向客户端发送公钥的时候,中间方没有将公钥发送给客户端,而是伪造了一对公钥,并将伪造的公钥发送给客户端,此时客户端用中间方伪造的公钥对本身正确的对称秘钥加密并由中间方发送给服务器端,而中间方将用本身伪造的公钥的私钥对其进行解密,获得正确的对称秘钥,并将获得的正确的对称秘钥用服务器端发过来的公钥进行加密发给服务器端,服务器daunt再用正确的私钥进行解密,也获得正确的对称秘钥,此时客户端,服务器端,中间方三者都拥有一套正确的对称秘钥,能够对传送的数据进行加密,解密。
  为了解决上述问题,通常状况下,服务器端会向CA申请认证书,此证书包含了CA及服务器端的一些信息(能够理解为相似公章),这样,服务器端将证书发给客户端的过程当中,中间方是没法伪造的,保证了,发给客户端的公钥是服务器端发送的。

         欢迎扫码关注个人微信公众号,或者微信公众号直接搜索Java传奇,不定时更新一些学习笔记!

                                                                 

相关文章
相关标签/搜索