http与https的区别
1.http与https
http的全称是Hypertext Transfer Protocol Vertion (超文本传输协议),说通俗点就是用网络链接传输文本信息的协议
HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议。
它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的 安全版。 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安 全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使 用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
- http与https的区别
HTTPS解决的问题:
1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机。所以目前所有的银行系统网站,关键部分应用都是https 的,客户通过信任该证书,从而信任了该主机,其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的server 采用的证书不管自己issue 还是从公众的地方issue,客户端都是自己人,所以我们也就肯定信任该server。
2 . 通讯过程中的数据的泄密和被窜改
1)一般意义上的https, 就是 server 有一个证书.
a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.
b) 服务端和客户端之间的所有通讯,都是加密的.
i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥,一般意义上的握手过程。
ii. 加下来所有的信息往来就都是加密的,第三方即使截获,也没有任何意义,因为他没有密钥,当然窜改也就没有什么意义了。
2)少许对客户端有要求的情况下,会要求客户端也必须有一个证书。
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份,个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份。
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体。
SSL工作原理
3.1 协议安全机制
SSL协议实现的安全机制包含:
a.传输数据的机密性:利用对称密钥算法对传输的数据进行加密。
b.身份验证机制:基于证书利用数字签名方法对server和client进行身份验证,当中client的身份验证是可选的。
c.消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。
3.2 传输数据的机密性
网络上传输的数据非常easy被非法用户窃取,SSL採用在通信两方之间建立加密通道的方法保证传输数据的机密性。
所谓加密通道,是指发送方在发送数据前,使用加密算法和加密密钥对数据进行加密,然后将数据发送给对方。接收方接收到数据后,利用解密算法和解密密钥从密文中获取明文。没有解密密钥的第三方,无法将密文恢复为明文,从而保证传输数据的机密性。
加解密算法分为两类:
l 对称密钥算法:数据加密和解密时使用同样的密钥。
l 非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。
利用公钥(或私钥)加密的数据仅仅能用对应的私钥(或公钥)才干解密。
与非对称密钥算法相比。对称密钥算法具有计算速度快的长处,通经常使用于对大量信息进行加密(如对全部报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。
SSL加密通道上的数据加解密使用对称密钥算法。眼下主要支持的算法有DES、3DES、AES等,这些算法都能够有效地防止交互数据被窃听。
对称密钥算法要求解密密钥和加密密钥全然一致。因此,利用对称密钥算法加密数据传输之前。须要在通信两端部署同样的密钥。对称密钥的部署方法请參见“2.4 利用非对称密钥算法保证密钥本身的安全”。
3.3 身份验证机制
3.4 消息安整性验证
为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。
MAC算法是在密钥參与下的数据摘要算法,能将密钥和随意长度的数据转换为固定长度的数据。
MAC算法具有例如以下特征,使其可以用来验证消息的完整性:
a.消息的不论什么改变,都会引起输出的固定长度数据产生变化。通过比較MAC值,可以保证接收者可以发现消息的改变。
b.MAC算法须要密钥的參与。因此没有密钥的非法用户在改变消息的内容后,无法加入正确的MAC值。从而保证非法用户无法任意改动消息内容。
3.5 利用非堆场密钥算法保证密钥本身的安全
3.6 利用PKI保证公钥的真实性
PKI通过数字证书来公布用户的公钥,并提供了验证公钥真实性的机制。数字证书(简称证书)是一个包括用户的公钥及其身份信息的文件,证明了用户与公钥的关联。
数字证书由权威机构——CA签发,并由CA保证数字证书的真实性。
- 协议工作流程
SSL位于应用层和传输层之间,它能够为不论什么基于TCP等可靠连接的应用层协议提供安全性保证。SSL协议本身分为两层:
a. 上层为SSL握手协议(SSL handshake protocol)、SSLpassword变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol)。
b. 底层为SSL记录协议(SSL record protocol)。
当中:
SSL握手协议:是SSL协议很重要的组成部分。用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在server和client之间安全地交换密钥、实现server和client的身份验证。
SSLpassword变化协议:client和server端通过password变化协议通知对端。随后的报文都将使用新协商的加密套件和密钥进行保护和传输。
SSL警告协议:用来向通信对端报告告警信息,消息中包括告警的严重级别和描写叙述。
SSL记录协议:主要负责对上层的数据(SSL握手协议、SSLpassword变化协议、SSL警告协议和应用层协议报文)进行分块、计算并加入MAC值、加密。并把处理后的记录块传输给对端。
- 握手过程
SSL通过握手过程在client和server之间协商会话參数,并建立会话。会话包括的主要參数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密算法和MAC算法等)以及主密钥(master secret)。通过SSL会话传输的数据,都将採用该会话的主密钥和加密套件进行加密、计算MAC等处理。
不同情况下,SSL握手过程存在差异。
以下将分别描写叙述以下三种情况下的握手过程:
a. 仅仅验证server的SSL握手过程
b. 验证server和client的SSL握手过程
c. 恢复原有会话的SSL握手过程