HTTPS与HTTP以及HTTPS的SSL/TLS
内容整理自网络,详见参考内容
1.什么是密钥
密钥是一种参数,是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。
2.私钥加密算法
也称对称加密算法,算法解密与加密的密钥是相同的,所以必须特别注意密钥的保存。。私钥加密算法相较于公钥加密算法非常快,特别适用于较大数据流执行加密转换。
3.公钥加密算法
也就是非对称加密算法,算法产生一个密钥对,用于加密解密。私钥与密钥是相对的,密钥对中谁公开,谁就叫公钥,不公开的部分叫私钥。密钥对具有唯一性, !用公钥加密的数据只有对应的私钥才能解密; !用私钥加密的数据只用公钥能解密; !如果公钥能解密,则必是对应的私钥加密; !如果私钥能解密,则必是对应的公钥加密; 如在一次加密通信过程中,客户方通过服务方公开的密钥对中的公钥,对需要传输数据进行加密,发送给对方。服务方在接收到客户方的加密数据时,通过私钥解密,获取数据。服务方也可以用私钥加密需要响应的通信数据,发送给客户方,客户方通过公钥解密,还原数据。 公钥算法效率非常低,不适合为大量的原始信息进行加密,通常结合使用公钥算法和私钥算法: 1.首先,发送方使用对称算法对原始信息进行加密。 2.接收方通过公钥机制生成一对密钥,一个公钥,一个私钥。 3.接收方 将公钥发送给 发送方。 4.发送方用公钥对对称算法的密钥进行加密,并发送给接收方。 5.接收方用私钥进行解密得到对称算法的密钥。 6.发送方再把已加密的原始信息发送给接收方。 7.接收方使用对称算法的密钥进行解密。
参考内容:公钥与私钥原理
4.数据加密与身份认证
数据加密是指密钥对的公钥方对数据进行加密传输给密钥对的私钥方,侧重于数据的安全与完整性 身份认证是指密钥对的私钥方对数据进行加密传输给密钥对的公钥方,侧重于数据来源方的确定性 理解在于,私钥是独占的,公钥是公开的。私钥方产生的加密文件是独有的,相当于形成了一个数字签名。
5.数字证书
数字证书是一个经权威证书授权中心(CA)的数字签名,其中包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。 权威证书授权中心是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证的伪造,认证中心的公共密钥必须是可靠的,认证中心必须公布其公共密钥或由更高级别的认证中心提供一个电子凭证来证明其公共密钥的有效性,后一种方法导致了多级别认证中心的出现。 数字证书颁发过程: 数字证书颁发过程如下:用户产生了自己的密钥对,并将公共密钥及部分个人身份信息传送给一家认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内附了用户和他的密钥等信息,同时还附有对认证中心公共密钥加以确认的数字证书。当用户想证明其公开密钥的合法性时,就可以提供这一数字证书。 内容: 数字证书的格式普遍采用的是X.509V3国际标准,一个标准的X.509数字证书包含以下一些内容: 1、证书的版本信息; 2、证书的序列号,每个证书都有一个唯一的证书序列号; 3、证书所使用的签名算法; 4、证书的发行机构名称,命名规则一般采用X.500格式; 5、证书的有效期,通用的证书一般采用UTC时间格式; 6、证书所有人的名称,命名规则一般采用X.500格式; 7、证书所有人的公开密钥; 8、证书发行者对证书的签名。
参考内容:数字证书是什么,里面都包含那些内容、数字证书是什么原理,有什么作用?
举个例子:比如公安局是国家权威机构,它经过特制(经过私钥加密)发布的身份证就是一个数字证书,身份证的真假可由公安部门公开的查询系统进行查验(公安部门的公钥),而这个查询系统是不是真的,就会有上一级权威部门(私钥加密)发布数字证书给它作为一个身份证明,并提供查验方式(颁发机构的公钥)。 身份证是个人从权威机构获取的一个数字证书(这里不考虑身份证号等隐私信息),它具有时间有效期限,姓名便是个人的(公钥)。你向一个公司发简历应聘并被录用,公司在你报到时需要你证明是投简历的那个人,于是你说出自己的姓名,并展示自己的身份证(数字证书),公司对身份证进行查验得到记录的名字(证书内记录的公钥)和你的说的名字(你所公开的密钥)一致,确认你是对应的人。在网络加密通信认证过程中,客户端想要确认服务端的合法性,要求查看服务端的数字证书,服务端便向客户端传输一个数字证书和自己的公钥,客户端拿到服务端的数字证书后,通过其相应权威机构的公钥,解密获取到证书内的公钥。如何保证传输过程中,数字证书没有被破坏呢?证书还附带权威机构的数字签名,以保证证书的完整性和真实性!(理解密钥对的唯一性)
6.HTTP与HTTPS
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。 HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。 HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。 HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式: 1、TCP 三次同步握手 2、客户端验证服务器数字证书 3、DH 算法协商对称加密算法的密钥、hash 算法的密钥 4、SSL 安全加密隧道协商完成 5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
HTTP 与 HTTPS 区别 1、HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。 2、使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。 3、HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个添加链接描述包,所以一共是 12 个包。 4、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。 HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源 TCP 三次握手 在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接。 1、第一次握手:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认 2、第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态 3、第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
参考内容:HTTP 与 HTTPS 的区别
7.SSL/TLS
SSL介于HTTP协议与TCP协议之间的可选层,在五层网络体系结构里就是应用层与运输层之间。
SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。 TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。
SSL/TLS协议提供的服务主要有: 1.认证用户和服务器,确保数据发送到正确的客户机和服务器; 2.加密数据以防止数据中途被窃取; 3.维护数据的完整性,确保数据在传输过程中不被改变。
在HTTPS的数据传输过程中通过非对称加密算法方式进行对称加密算法的密钥商议,确定好密钥之后,通过对称加密算法进行通信。
下面是TLS的密钥协商过程: 1、客户发送请求 告知对方自己支持的加密算法、支持的压缩方式、支持的协议版本、一个客户端生成的随机数,用于生成‘对话密钥’ 2、服务器回应 保存传过来的随机数字,回应数字证书(如果是自加密的证书,非权威认证的,还要传输一个证书公钥解密)验证合法性,一个服务端的随机数,用于生成对话密钥、确认的加密方式、确认的协议版本(如果双方支持的协议版本不一致,服务器取消加密通信。在SSL协议中缺省了对客户端的验证) 3、客户端回应 保存传过来的随机数字、如果服务端要求对客户端进行验证,需要发送客户端的数字证书。接收到服务端的数字证书,进行验证,如果出现问题,向访问用户显示一个警告,告知是否继续通信。反应一个随机数,通过服务器公钥加密(PreMaster Secret)、编码改变通知表示随后的信息使用双方商定加密算法和密钥发送、客户端握手结束通知,表示客户端握手结束,同时对前面的内容进行HASH的值,供服务端校验信息。这一次生成的随机数,是整个握手阶段出现的第三个随机数,它是客户端使用一些加密算法(例如:RSA, Diffie-Hellman)产生一个48个字节的Key,这个Key叫PreMaster Secret ,很多材料上也被称作 PreMaster Key。客户端会使用之前协商好的加密套件和Session Secret加密一段 Finish 的数据传送给服务端,此数据是为了在正式传输应用数据之前对刚刚握手建立起来的加解密通道进行验证。 4、服务器最后回应 对客户端传来的加密信息进行解密,并进行数据验证,验证完成后。也会使用跟客户端同样的方式生成 Session Secret,一切准备好之后,会给客户端发送一个 ChangeCipherSpec,告知客户端已经切换到协商过的加密套件状态,准备使用加密套件和 Session Secret加密数据了。之后,服务端也会使用 Session Secret 加密一段 Finish 消息发送给客户端,以验证之前通过握手建立起来的加解密通道是否成功。如果客户端和服务端都能对Finish信息进行正常加解密且消息正确的被验证,则说明握手通道已经建立成功,接下来,双方可以使用上面产生的Session Secret对数据进行加密传输了。
由于服务端和客户端都有一份相同的PreMaster secret和随机数,这个随机数将作为后面产生Master secret的种子,结合PreMaster secret,客户端和服务端将计算出同样的Master secret。通过主密钥进行数据通信。
原文链接:SSL/TLS原理详解 参考内容:SSL/TLS原理详解
|