Http和Https的区别

作者: chmizh 分类: 个人生活 发布时间: 2018-08-12 19:03

一.HTTP

Http中文叫做超文本传输协议它完成客户端到服务端等一系列运作流程

http关系密切的协议: IP, TCPDNS

1.负责传输的IP协议

IP协议数据网络层, IP协议的作用是把各类数据包传送给对方而要确保确实传送到对方那里则需要满足各类条件其中两个重要的条件是IP地址和MAC地址.

IP地址指明了节点被分配到的地址, MAC地址是指网卡所指的固定地址.IP地址和MAC地址进行配对, IP地址可以变换但是MAC地址基本不会更改.

确保可靠性的TCP协议

2.TCP位于传输层提供可靠的字节流服务

字节流服务为了方便传输将大块数据分割成以报文段为单位的数据包进行管理.

为了确保无误将数据送达目标处, TCP协议采用了三次握手策略.当然除了三次握手策略还有很多其他的手段保证通讯的可靠性

3.负责域名解析的DNS服务

DNS服务是和HTTP协议一样位于应用层的协议.他提供域名与IP地址之间的解析服务.

因为记住一组纯数字太难了而字母加数字才是人类习惯的方式,为了解决这个问题, DNS服务营运而生.

.HTTPS

HTTP的缺点

1.通信使用明文(不加密), 内容可能会被窃听

2.不验证通信方的身份因此有可能遭遇伪装

3.无法证明报文的完整性所有有可能已遭篡改

HTTP+加密+认证+完整性保护 = HTTPS

HTTPS并非是应用层的一种新协议只是HTTP通信接口部分用SLL(SecureSocket Layer)TLS (Transport Layer Security) 协议替代而已.

通常, HTTP直接和TCP通信当使用SSL演变成了先和SSL通信再由SSLTCP通信了简而言之所谓HTTPS, 其实就是身披SSL协议的这层外壳的HTTP.在采用SSL, HTTP就拥有了HTTPS的加密证书和完整性的保护这些功能.SSL是独立于HTTP的协议所有不光是HTTP协议其他运行在应用层的SMTP(邮件协议)Telnet等协议均可配合SSL协议使用可以说SSL是当今世界上应用最广泛的网络安全技术.

.SSL是如何加密的

SSL采用一种叫做公开密钥加密(Public-keycryptography)的加密方式.

近代的加密方法中加密算法是公开的而秘钥是保密的通过这种方式得以保持加密方法的安全性.

.共享密钥加密的困境

加密和解密同用一个密钥的方式称为共享密钥加密也被叫做对称密钥加密.

共享加密方式加密时必须将密钥也发给对方在互联网上转发密钥时如果通信被监听那么密钥就会落入攻击者之手同事也就失去了加密的意义,

怎么才能安全的转交?

使用两把密钥的公开密钥加密

公开密钥加密方式很好地解决了共享密钥加密的困难

公开密钥加密使用一对非对称的密钥一把叫做私有密钥另一把叫做公开密钥

使用公开密钥加密方式发送密文的一方使用对方的公开密钥进行加密处理对方收到被加密的信息后在使用自己的私有密钥进行解密利用这种方式不需要发送用来解密的私有密钥也不用担心密钥被攻击者窃听而盗走.

另外要想根据密文和公开密钥恢复到信息原文是异常困难的因为解密过程就是在对离散对数进行求值这并非轻而易举就能办到的退一步讲如果能对一个非常大的整数做到快速地因式分解那么密码还是在存在希望的但就目前的技术来看是不太现实的.

HTTPS采用混合加密机制

HTTPS采用共享秘钥加密 和 公开秘钥加密两者并用的混合加密机制若密钥能够实现安全交换那么有可能会考虑仅适用公开密钥加密来通信但是公开密钥加密和共享密钥加密相比其处理速度要慢.

所以应充分利用两者各自优势将多种方法组合起来用于通信在交换密钥环节适用公开密钥加密方式之后的建立通信交换报文阶段则使用共享密钥加密方式.

.证明公开密钥的正确性的证书

遗憾的是公开密钥加密方式还是存在一些问题的那就是无法证明公开密钥本身就是货真价实的公开密钥比如正准备和某台服务器建立公开密钥加密方式下的通信时如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥或许在公开密钥传输途中真正的公开密钥已经被攻击者替换了.

为了解决上述问题可以使用有数字证书认证机构和其他相关机关颁发的公开密钥证书

基本流程为:

1.服务器把自己的公开密钥登录至数字证书认证机构

2.数字证书认证机构用自己的私有密钥向服务器的公开密钥署数字签名并颁发公钥证书

3.客户端拿到服务器的公钥证书后使用数字证书认证机构的公开密钥向数字证书认证机构验证公钥证书上的数字签名以确认服务器的公开密钥的真实性

4.使用服务器的公开密钥对报文加密后发送

5.服务器用私有密钥对报文解密

.SSL速度慢吗?

由于HTTPS还需要做服务器,客户端双方加密及解密处理因此会消耗CPU和内存等硬件资源HTTP通信相比, SSL通信部分消耗网络资源SSL通信部分有因为要对通信进行处理所有时间上又延长了.

针对速度慢这样一个问题并没有根本性的解决方案我们会使用SSL加速器这种(专用服务器)硬件来改善该问题相对软件来讲能够提高数倍SSL计算速度.

.为什么不一直使用HTTPS

既然HTTPS那么的可靠安全那为何不所有的Web网站不一直使用HTTPS?

其中的一个原因是因为与纯文本通信相比加密通信会消耗更多的CPU资源以及内存资源如果每次通信都加密会消耗相当多的资源平摊到一台计算机上时能够处理的请求数量必定会随之减少.

因此如果是非敏感信息则使用HTTP通信只有在包括个人信息等敏感数据时才利用HTTPS加密通信以节省资源除此之外想要节约购买证书的开销也原因之一.

发表评论

电子邮件地址不会被公开。