HTTP和HTTPS的区别【面试常考】

HTTP和HTTPS是计算机网络中很重要的知…

HTTP和HTTPS是计算机网络中很重要的知识点,面试的时候很容易被问他们的区别,可能每个人都会有自己理解;

HTTP是明文传输的,传输过程中容易被拦截、修改或者伪造请求;HTTPS则是在HTTP基础上进行进行了一些信息保护,相比HTTP来说更为安全。

这是一个简单的回答,但是比较笼统,如果想要找到好的工作,中间的很多细节还是需要我们去仔细研究的。

HTTPS和HTTP

HTTP是什么:HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol) 协议,它是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

HTTP的原理:

HTTP的缺点:

HTTPS如何解决HTTP的问题:

  • HTTPS 只是在 HTTP 的基础之上增加了加密处理、认证机制和完整性保护,即 HTTPS = HTTP + 加密 + 认证 + 完整性保护
    • 加密,HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。
    • 数据一致性,数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的就是什么。
    • 身份认证,是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。
  • HTTPS 不是应用层的一种新协议,只是 HTTP 协议的改进(HTTP协议中的部分通信接口被ssl/tls协议代替),通常 HTTP 直接与 TCP 进行通信,当使用 ssl 协议时则先与 ssl 通信,再由 ssl 和 tcp 通信,
  • 通过上面的分析可以看出来,HTTPS 只是在 HTTP 的基础上增加了 ssl 协议;

HTTPS的原理:

区别:

SSL和TSL

SSL是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”,其出现就是为了解决HTTP传输不安全的问题;到了1999年,SSL被标准化,标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”,所以这两者其实就是同一种协议,只不过是在不同阶段的不同称呼。

SSL协议是位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持,可分为两层:

  • SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

所以,SSL协议提供的服务有:

细心的同学可能会发现,这不还是HTTPS解决HTTP的那几个问题吗?对,还是实现加密处理、认证机制和完整性保护这三点,由此也可以看出SSL协议的重要性,这也是HTTP和HTTPS之间的主要区别。

加密

在上面HTTPS的原理部分也提到了加密, 这里我们就来说一下加密,通常加密分为对称加密、非对称加密和混合加密

  • 对称加密,又被成为私钥加密,即信息的发送方和接收方使用同一个秘钥去加密和解密信息,它采用了对称密码编码技术;
  • 对称加密算法密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高。

优点:

算法公开、计算量小、加密速度快、加密效率高

缺点:

常见的对称加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES

与对称加密算法不同,非对称加密算法需要使用两个秘钥:公开秘钥、私有秘钥;

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是:

甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

优点:安全

缺点:速度比较慢

常见的非对称加密算法有: RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

结合对称加密和非对称加密的优缺点,混合使用两种加密算法而产生混合加密,TLS中也是使用的这种加密方式;

实现过程:

首先,使用非对称加密,用来传输对称加密的秘钥,以此可解决对称加密传输过程不安全的问题;然后用随机数产生对称算法使用的,再用公钥加密。对方拿到密文后用私钥解密,取出会话密钥。这样,双方就实现了对称密钥的安全交换。

摘要算法(Hash算法)

Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

可能有人会疑惑为什么要用单向的?因为双向的话也存在安全问题,比如说我们常用的支付宝,我们支付宝的密码和支付密码在数据库存储之前的加密算法一定是单向不可逆的,否则可能会出现程序员拿到加密后的密码把他们再进行还原,如果是这样的你还能放心使用支付宝吗。

其实我们可以把Hash算法理解成一种特殊的压缩算法,它能够把任意长度的数据压缩成一种固定长度的字符串,这就好像是给数据加了一把锁。

常见的摘要算法有: MD2、MD4、MD5、HAVAL、SHA

有人可能会对MD5产生疑惑,因为网上有些网站中可以将MD5加密后的密码还原,其实,这是因为MD5这种加密算法用的比较多,一些网站就把一些常用的MD5原文和密文进行了保存,它的还原只是在数据库中查找出来的,对于比较麻烦的密码采用MD5加密后去网站还原是还原不出来的。

如何确定你自己的唯一性呢?我们在上面的叙述过程中出现过公钥加密,私钥解密的这个概念。提到的私钥只有你一个人所有,能够辨别唯一性,所以我们可以把顺序调换一下,变成私钥加密,公钥解密。使用私钥再加上摘要算法,就能够实现数字签名,从而实现认证。

到现在,综合使用对称加密、非对称加密和摘要算法,我们已经实现了加密、数据认证、认证,那么是不是就安全了呢?非也,这里还存在一个数字签名的认证问题。因为私钥是是自己的,公钥是谁都可以发布,所以必须发布经过认证的公钥,才能解决公钥的信任问题。

发布的公钥必须是让 CA(Certificate Authority,证书认证机构) 颁布具有认证过的公钥,才能解决公钥的信任问题。

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/1120.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部