HTTPS与SSL(一)

1.  HTTPS

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL代表它使用了HTTPS,但HTTPS存在不一样于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通信方法,如今它被普遍用于万维网上安全敏感的通信,例如交易支付方面算法

HTTPS和HTTP的区别

  1、https协议须要到ca申请证书,通常免费证书不多,须要交费。数据库

  2、http是超文本传输协议,信息是明文传输,https 则是具备安全性的ssl加密传输协议。浏览器

  3、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。安全

4、http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。服务器

https的实现原理

有两种基本的加解密算法类型

1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;网络

2)非对称加密:密钥成对出现(且根据公钥没法推知私钥,根据私钥也没法推知公钥),加密解密使用不一样密钥(公钥加密须要私钥解密,私钥加密须要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。性能

 

 https的通讯过程

HTTPS与SSL(一) - Magicc - 异次元蓝客
 

图2.1 https的通讯过程网站

 https通讯的优势

 1)客户端产生的密钥只有客户端和服务器端能获得;加密

2)加密的数据只有客户端和服务器端才能获得明文;spa

3)客户端到服务端的通讯是安全的。 

HTTPS解决的问题

1、信任主机的问题.

  采用https的服务器必须从CA (Certificate Authority)申请一个用于证实服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。因此目前全部的银行系统网站,关键部分应用都是https 的。客户经过信任该证书,从而信任了该主机。其实这样作效率很低,可是银行更侧重安全。这一点对咱们没有任何意义,咱们的服务器,采用的证书无论是本身发布的仍是从公众的地方发布的,其客户端都是本身人,因此咱们也就确定信任该服务器。

2、通信过程当中的数据的泄密和被篡改

  1. 通常意义上的https,就是服务器有一个证书。

  a) 主要目的是保证服务器就是他声称的服务器,这个跟第一点同样。

  b) 服务端和客户端之间的全部通信,都是加密的。

  i. 具体讲,是客户端产生一个对称的密钥,经过服务器的证书来交换密钥,即通常意义上的握手过程。

  ii. 接下来全部的信息往来就都是加密的。第三方即便截获,也没有任何意义,由于他没有密钥,固然篡改也就没有什么意义了。

  2. 少量对客户端有要求的状况下,会要求客户端也必须有一个证书。

  a) 这里客户端证书,其实就相似表示我的信息的时候,除了用户名/密码,还有一个CA 认证过的身份。由于我的证书通常来讲是别人没法模拟的,全部这样可以更深的确认本身的身份。

b) 目前少数我的银行的专业版是这种作法,具体证书多是拿U盘(即U盾)做为一个备份的载体

 

理解误区

  它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持.

  一种常见的误解是“银行用户在线使用https:就能充分完全保障他们的银行卡号不被偷窃。”实际上,与服务器的加密链接中能保护银行卡号的部分,只有用户到服务器之间的链接及服务器自身。并不能绝对确保服务器本身是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击。少数罕见攻击在网站传输客户数据时发生,攻击者会尝试窃听传输中的数据。

商业网站被人们指望迅速尽早引入新的特殊处理程序到金融网关,仅保留传输码(transaction number)。不过他们经常存储银行卡号在同一个数据库里。那些数据库和服务器少数状况有可能被未受权用户攻击和损害。

SSL

SSL介绍

  SSL安全套接层协议(Secure Socket Layer)

  为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程当中不会被截取及窃听。目前通常通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之IE或Netscape浏览器便可支持SSL。

  当前版本为3.0。它已被普遍地用于Web浏览器与服务器之间的身份认证和加密数据传输。

SSL协议位于TCP/IP协议与各类应用层协议之间,是一种国际标准的加密及身份认证通讯协议,为TCP提供一个可靠的端到端的安全服务,为两个通信个体之间提供保密性和完整性(身份鉴别)。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它创建在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它创建在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议特色

1)SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telnet的通讯,最多见的是用SSL来保护HTTP的通讯。

  2)SSL协议的优势在于它是与应用层协议无关的。高层的应用协议(如HTTP、FTP、Telnet等)能透明地创建于SSL协议之上。

 3)SSL协议在应用层协议以前就已经完成加密算法、通讯密钥的协商以及服务器的认证工做。在此以后应用层协议所传送的数据都会被加密,从而保证通讯的安全性。

4)SSL协议使用通讯双方的客户证书以及CA根证书,容许客户/服务器应用以一种不能被偷听的方式通讯,在通讯双方间创建起了一条安全的、可信任的通讯通道。

5)该协议使用密钥对传送数据加密,许多网站都是经过这种协议从客户端接收信用卡编号等保密信息。经常使用于交易过程当中。

SSL功能

1)客户对服务器的身份认证:

SSL服务器容许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。

2)服务器对客户的身份认证:

也可经过公钥技术和证书进行认证,也可经过用户名,password来认证。

3)创建服务器与客户之间安全的数据通道:

SSL要求客户与服务器之间的全部发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性。

SSL协议工做的基本流程

1)接通阶段:客户机经过网络向服务器打招呼,服务器回应

2)密码交换阶段:客户机与服务器之间交换双方承认的密码,通常选用RSA密码算法

3)会谈密码阶段:客户机器与服务器间产生彼此交谈的会谈密码

4)检验阶段:客户机检验服务器取得的密码

5)客户认证阶段:服务器验证客户机的可信度

6)结束阶段:客户机与服务器之间相互交换结束的信息

SSL安全实现原理

SSL 提供了用于启动 TCP/IP 链接的安全性“信号交换”:

1.  这种信号交换致使客户和服务器赞成将使用的安全性级别,并履行链接的任何身份验证要求.

2.  经过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证。

3.在用数字证书对双方的身份验证后,双方就能够用保密密钥进行安全的会话了。

 

SSL协议说明

SSL协议具备两层结构:

1)其底层是SSL记录协议层(SSL Record Protocol Layer)

2)其高层是SSL握手协议层(SSL Handshake Protocol Layer), 主要用来让客户端及服务器确认彼此的身分,为了保护SSL记录封包中传送的数据,Handshake协议还能协助双方选择链接时所会使用的加密算法、MAC算法、及相关密钥。

 

HTTPS与SSL(一) - Magicc - 异次元蓝客
 

SSL协议定义了两个通讯主体:客户(client)和服务器(server)。其中,客户是协议的发起者

在客户/服务器结构中,应用层从请求服务和提供服务的角度定义客户和服务器,而SSL协议则从创建加密参数的过程当中所扮演的角色来定义客户和服务器。 

SSL握手协议包含四个阶段:第一个阶段创建安全能力;第二个阶段服务器鉴别和密钥交换;第三个阶段客户鉴别(可选的)和密钥交换;第四个阶段完成握手协议。

SSL协议工做的基本流程

  服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话链接;2)服务器根据客户的信息肯定是否须要生成新的主密钥,如须要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段:

  在此以前,服务器已经经过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

  

SSL流程

  HTTPS与SSL(一) - Magicc - 异次元蓝客

 

第一步:身份验证

HTTPS与SSL(一) - Magicc - 异次元蓝客
 

第二步:发明密语规则

HTTPS与SSL(一) - Magicc - 异次元蓝客
 

第三步:密语规则共享

HTTPS与SSL(一) - Magicc - 异次元蓝客
 

第四步:进行安全通讯

HTTPS与SSL(一) - Magicc - 异次元蓝客
 

简要描述

1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话链接

2)服务器根据客户的信息肯定是否须要生成新的主密钥,如须要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息

3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器

4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。(以上为服务端认证)

5)服务器已经经过了客户认证,这一阶段主要完成对客户对服务端的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。(客户端认证)

详细描述

SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,但是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议很是有效的让客户和服务器之间完成相互之间的身份认证,其主要过程以下:

  1)客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其余服务器和客户端之间通信所须要的各类信息。

  2)服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其余相关信息,同时服务器还将向客户端传送本身的证书。

  3)客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过时,发行服务器证书的CA 是否可靠,发行者证书的公钥可否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。若是合法性验证没有经过,通信将断开;若是合法性验证经过,将继续进行第四步。

  4)用户端随机产生一个用于后面通信的“对称密码”,而后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中得到)对其加密,而后将加密后的“预主密码”传给服务器。 (服务端验证成功)

  5)若是服务器要求客户的身份认证(在握手过程当中为可选),用户能够创建一个随机数而后对其进行数据签名,将这个含有签名的随机数和客户本身的证书以及加密过的“预主密码”一块儿传给服务器。

  6)若是服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥可否正确解开客户证书的发行CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验若是没有经过,通信马上中断;若是验证经过,服务器将用本身的私钥解开加密的“预主密码”,而后执行一系列步骤来产生主通信密码(客户端也将经过一样的方法产生相同的主通信密码)。

  7)服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通信的加解密通信。同时在SSL 通信过程当中还要完成数据通信的完整性,防止数据通信中的任何变化。

  8)客户端向服务器端发出信息,指明后面的数据通信将使用的步骤7中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

  9)服务器向客户端发出信息,指明后面的数据通信将使用的步骤7中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

10)SSL 的握手部分结束,SSL 安全通道的数据通信开始,客户和服务器开始使用相同的对称密钥进行数据通信,同时进行通信完整性的检验。

SSL缺点

1)SSL协议须要在握手以前创建TCP链接,所以不能对UDP应用进行保护。

2)为了避免致于因为安全协议的使用而致使网络性能大幅降低SSL协议并非默认地要求进行客户鉴别

相关文章
相关标签/搜索