1. 首页
  2. 生活常识
  3. http与https的区别是什么(HTTP和HTTPS的差距)

http与https的区别是什么(HTTP和HTTPS的差距)

简介:关于http与https的区别是什么(HTTP和HTTPS的差距)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于生活常识技术大全及相关资讯,可以多多关注茶馆百科网。

在本文中,我对第一次和第二次学习HTTP的知识点进行了总结。我用自我回答的形式作为面试回顾的背景,整理了看似“凌乱”的HTTP(方便第二次快速深入)。

1. HTTP和HTTPS的区别是什么?

HTTPS 和 HTTP 的关系

协议明文/安全HTTPS将HTTP下的传输协议从TCP/IP改为SSL/TLS。“HTTP over TCP/IP”改为“HTTP over SSL/TLS”。HTTP运行在安全的SSL/TLS协议上,调用一个特殊的“安全接口”,而不是使用“套接字API”来接收和发送消息。

HTTPS为HTTP增加了“四个安全特性”。作为一个“非常简单”的协议本身,RFC文档很小,只有7页长,其中指定了新的协议名称“https”和默认端口号443。至于其余的请求-应答模式、消息结构、请求方法、URI、报头字段、连接管理等,都遵循HTTP。没什么新鲜的。

HTTPS和HTTP

四大安全特性

“保密性”:指数据的“保密性”,只能由信任的人访问,对他人不可见。简单来说,这意味着不相关的人不应该看到他们不应该看到的东西。

对称加密和非对称加密算法

“完整”:索引数据在传输过程中不被篡改,不增加也不减少,“完整”保持原始状态。

抽象的算法

“身份认证”:指确认对方的真实身份,即“证明你真的是你”,保证消息只能发送给信任的人。

数字签名和CA认证

“不可否认”:也叫不可否认,意思是不能否认已经发生的行为,不能“失信”、“耍花招”。

0

HTTP以明文方式传输,不安全,容易被黑客窃听或篡改。通信安全必须具备保密性、完整性、身份认证和不可抵赖性四个特征。HTTPS的语法和语义仍然是HTTP,但底层协议从TCP/IP更改为SSL/TLS。SSL/TLS是信息安全领域的权威标准,它采用了多种先进的加密技术来保证通信安全。OpenSSL是一个著名的开源加密工具包,它是SSL/TLS加密算法的具体实现(NodeJs也使用OpenSSL实现https安全,使用http - parser实现http)。2. 对称加密和非对称加密的理解是什么?

对称加密:同秘钥(快)非对称加密:公私钥混合(慢)加密:使用的TLS通信方式

提炼

实现机密性最常用的手段是“加密”,将消息以一种没有人能看懂的方式转换成乱码,只有拥有特殊“密钥”的人才能将原始文本再次转换。这里的“密钥”称为“密钥”,加密前的消息称为“明文/明文”,加密后的乱码称为“密文”。使用密钥还原明文的过程称为“解密”,这是加密的逆操作。加解密的操作过程就是“加密算法”。

根据密钥的使用方式,加密可以分为两类:对称加密和非对称加密。

[

加密含义

]“对称加密”很容易理解。这意味着用于加密和解密的密钥是相同的,这是“对称的”。只要密钥是安全的,整个通信过程可以说是保密的。

对称加密

在TLS中有许多对称加密算法可供选择,如RC4、DES、3DES、AES、ChaCha20等,但前三种算法被认为是不安全的,通常被禁止使用。目前常用的只有AES和ChaCha20。

AES代表高级加密标准,密钥长度为128、192或256。它是DES算法的替代品,安全强度高,性能好,而且有些硬件会做特别的优化,所以很受欢迎,是目前使用最广泛的对称加密算法。

ChaCha20是b谷歌设计的另一种加密算法。它具有256位的固定密钥长度,纯软件性能优于AES。chachha20曾经在移动客户机上很流行,但是在ARMv8中添加AES硬件优化后,它不再具有明显的优势。但它仍然是一个很好的算法。

对称加密似乎是完美的机密性,但有一个大问题:“如何安全地将密钥传递给另一方?”(“密钥交换”)

因为在对称加密算法中,只要你有密钥,你就可以解密。如果你与网站约定的密钥在传输方式上被盗,他以后可以随意解密发送和接收的数据,通信过程完全不会保密。

你不能有鸡有蛋,因此有了非对称加密算法

当前位置有两个密钥,一个是公钥,一个是私钥。这两把钥匙是“不对称的”;公钥可以公开,任何人都可以使用,而私钥必须严格保密。

公钥和私钥具有特殊的“单向”性质。虽然两者都可以用于加密和解密,但是公钥只能使用私钥解密,反之亦然。

非对称加密可以解决“密钥交换”问题。该网站将私钥保密,并在互联网上随机分发公钥。如果您想登录网站,只需要使用公钥加密即可。密文只能由私钥持有者解密。黑客无法解锁密文,因为他没有私钥。

遗憾的是,非对称加密虽然不存在“密钥交换”的问题,但由于它们都是基于复杂的数学问题,运算速度非常慢。如果只采用非对称加密,虽然安全性得到保证,但“通信速度如龟”,实用性变为零。

RSA:非对称加密的同义词,一个基于大数分解的数学问题;ECDHE:椭圆曲线加密算法,比RSA算法更安全,TLS1.3握手算法是基于ECDHE算法,TLS1.2可选算法作为加密套件

对称加密只使用一个密钥,速度快,而且密钥必须保密。无法实现安全密钥交换。常用的是AES和ChaCha20。非对称加密使用两个密钥:公钥和私钥。公钥可以任意分发,私钥保密,解决了密钥交换的问题,但速度较慢。RSA和ECHDE是常用的。结合对称和非对称加密提供了TLS中使用的“又好又快”的混合加密。3.摘要算法?数据签名呢?

哈希函数(哈希碰撞)抽象算法:SHA2抽象算法数字签名:抽象算法+私钥实现:完整性、不可否认性、身份确定性

对称加密算法

实现完整性的主要手段是摘要算法,也就是通常所说的哈希函数和哈希函数。

您几乎可以将摘要算法视为一种特殊的压缩算法,它可以将任何长度的数据“压缩”为固定长度、唯一的“摘要字符串”,就像生成数据的数字“指纹”一样。

它只有算法,没有密钥,加密后的数据不能解密,也不能从抽象文本中反向导出。因此,我们只能通过比较两个摘要是否相同来判断是否存在篡改

摘要算法实际上是将数据从一个“大空间”映射到一个“小空间”,因此存在“碰撞”(也称碰撞)的可能性,“就像一个真实的指纹一样,同一摘要对应的可能是原文的两个不同副本”。一个好的摘要算法必须是“抗碰撞”的,以使这种情况尽可能不发生。

抽象算法也被用来为TLS生成伪随机数,因为它们对输入具有“单向”和“雪崩效应”,输入的微小差异会导致输出的剧烈变化

您在日常工作中一定听说过或使用过MD5 (Message-Digest 5)和SHA-1 (Secure Hash Algorithm 1)。它们是可以生成16字节和20字节摘要的两种最常用的摘要算法。但这两种算法的安全强度都比较低,安全性不够,“TLS的使用已经被禁止”。SHA-1的后继者SHA-2目前被推荐用于TLS。

SHA-2实际上是一系列摘要算法的总称。总共有六个。常用的是SHA224、SHA256和SHA384,分别可以生成28字节、32字节和48字节的摘要。

“摘要算法保证了‘数字摘要’完全等同于原文,所以我们只要把摘要附在原文上,就可以保证数据的完整性。”

然而,摘要算法并不是保密的。如果消息以明文形式传输,那么黑客可以修改消息并随之更改摘要,而网站仍然不会识别其完整性。

因此,真正的完整性必须基于机密性,在混合加密系统中使用会话密钥加密消息和提要。

非对称加密算法

加密算法与抽象算法相结合,我们的通信过程可以说是比较安全的。但这里有一个漏洞,即通信的“两个端点”。

TLS中有什么东西,比如真正的签名或印章,只能由这个人持有,而不能由其他人持有?有了这个,你可以在数字世界证明你的身份。

这个东西就是非对称加密中的“私钥”,利用“私钥和摘要算法”,可以实现“数字签名”、“身份认证”和“不可否认”。

数字签名的原理其实很简单,就是把公钥和私钥的使用反过来,公钥加密,私钥解密,现在是私钥加密,公钥解密。

但由于非对称加密效率太低,“私钥只对原始文本的摘要进行加密”,因此计算量要小得多,获得的数字签名也小,便于存储和传输。

签名就像公钥一样,是完全公开的,任何人都可以使用。但是这个签名只能使用与私钥对应的公钥来解锁,一旦你得到了摘要,你就可以通过与原始文本的比较来验证文本的完整性,就像在一个文档上签名来证明你确实发送了消息一样。这两种行为也有术语,称为“签名”和“检查”。

4. 跟我说说TLS握手吧?

握手目的:用于对称加密安全交换秘钥RSA经典握手ECHDE握手:ECDHE算法参数交换,跳起TLS1.3握手:必须采用ECHDE算法,压缩为1RTT

提炼

“实现HTTPS通信的保密性”,在通信开始时采用RSA、ECDHE等非对称算法,先解决密钥交换问题。然后使用随机数生成对称算法使用的“会话密钥”,然后使用公钥对其进行加密。对方得到密文后,用私钥解密,取出会话密钥。这样,双方就实现了对称密钥的安全交换,后续不使用非对称加密,而是使用对称加密。

RSA大概是最著名的加密算法了,几乎可以说是非对称加密的代名词,它的安全性是建立在“整数分解”的数学问题基础上的,用两个非常大的素数的乘积作为材料来生成密钥,想要从公钥中推导出私钥是非常困难的。

RSA握手

有三个阶段:明文共享阶段、CA认证阶段和主密钥生成阶段。

阶段1:明文共享阶段

TCP连接建立后,浏览器将首先发送一个“Client Hello”消息,其中包含Client的版本号、支持的密码套件和一个用于后续生成会话密钥的Client随机数。接收到Client Hello后,服务器返回一个Server Hello消息。匹配版本号并给出服务器随机数。然后从客户端列表中选择一个作为此通信中要使用的密码套件和公钥。为了证明其身份,服务器向客户端发送证书。这完成了第一个往返(两个TCP数据包),结果客户机和服务器通过明文共享三条信息:客户机随机、服务器随机和公钥。

阶段2:证书验证

客户端也获得服务器的证书。证书是否真实有效?这就要用到第25讲的知识了,开始走证书链逐级验证,确认证书的真实性,然后用证书公钥验证签名,确认服务器的身份:“刚才问候我不是骗子,你可以继续往下走。”

第三阶段:生成主密钥

客户端使用RSA公钥对pre-master进行加密后发送给服务器。客户端和服务器现在有三个随机数在他们的手中:客户端随机,服务器随机和预大师。使用这三个作为原始材料,您可以生成一个用于加密会话的主密钥,称为“主密钥”。使用主密钥和派生的会话密钥,客户端发送“Change Cipher Spec”消息和“Finished”消息,汇总之前发送的所有数据,对其进行加密,并请求服务器验证。服务器还发送Change Cipher Spec和Finished消息来验证加密和解密。握手完成后,双方发送和接收加密的HTTP请求和响应

摘要算法

阶段1:明文共享阶段(C/S双方共享随机数和服务器的椭圆曲线加密参数)

TCP连接建立后,浏览器将首先发送一个“Client Hello”消息,其中包含Client的版本号、支持的密码套件和一个用于后续生成会话密钥的Client随机数。接收到Client Hello后,服务器返回一个Server Hello消息。匹配版本号并给出一个服务器随机数,然后从客户机列表中选择一个作为要用于此通信的密码套件。下一个密钥操作是,由于服务器选择了ECDHE算法,因此在证书生成后发送“服务器密钥交换”消息。内部是用于实现密钥交换算法的Server Params,以及它自己的私钥签名身份验证。为了证明其身份,服务器向客户端发送证书。这完成了第一次往返(两个TCP数据包),结果客户机和服务器以明文形式共享三条信息:客户机随机、服务器随机和服务器参数。

阶段2:证书验证同上

第三阶段:生成主密钥

0

当发送Server Hello时,服务器发送带有加密算法参数的Server Key Exchange消息。由于使用了ECDHE,客户机立即发送HTTP数据包,而无需等待服务器发送Finished消息来确认握手,“节省了一个往返消息”。这被称为“jump start”,类似于“TCP Fast Open”,即在连接完全建立之前发送应用数据,提高传输效率。在建立HTTPS连接时,除了TCP握手之外,还需要进行TLS握手。在1.2中,需要两个消息进行往返(2-RTT),这可能导致数十甚至数百毫秒的延迟。在移动网络中,延迟甚至更糟。

既然TLS1.3密码套件已经得到了极大的简化,就不需要经历“强制使用椭圆曲线算法”的复杂协商过程。TLS1.3压缩了之前的“Hello”协商过程,去掉了“Key Exchange”消息,将握手时间缩短为“1-RTT”,效率提高了一倍。

TLS1.3握手

5. 您了解HTTPS优化策略吗?

慢握手阶段硬件优化软件优化协议优化会话复用:会话ID

数据签名

HTTPS连接慢指连接刚建立的时间。TCP连接建立后,HTTPS在正式数据传输之前,在HTTP上增加了一个TLS握手步骤。此步骤最多可以进行两次消息往返,即2-RTT。除了抖动消息所花费的网络时间外,还有其他“隐藏”成本,例如生成用于密钥交换的临时公私密钥对(ECDHE);在证书验证过程中,需要访问CA获取CRL或OCSP。非对称加密和解密处理“Pre-Master”。

握手目的

HTTPS连接是计算密集型连接,而不是I/O密集型连接。

您可以选择更快的CPU,最好内置AES优化,以加快握手和传输速度。可以选择SSL加速卡,在加解密过程中调用其API,使专用硬件进行非对称加解密,分担CPU的计算压力。第三种硬件加速方式:“SSL加速服务器”,用专用的服务器集群完全“卸载”TLS握手加解密计算,性能自然比纯“加速卡”更强大。

RSA 握手过程

软件升级的实现相对简单。将当前使用的软件尽可能升级到最新版本,如Linux内核从2升级到最新版本。X到4。将OpenSSL从1.0.1升级到1.0/1.1.1。因为这些软件在更新版本时会做性能优化和修复错误,只要运维能够积极配合,这种软件优化是最容易做到的,也是最容易达到优化效果的。

如果可能的话,尝试TLS1.3,它极大地简化了握手过程。一次完整的握手只有1/rtt,而且要安全得多。

如果暂时无法升级到1.3,只能使用1.2,那么握手中使用的密钥交换协议应尽量使用椭圆曲线的ECDHE算法。它不仅具有高计算速度和高安全性,而且支持“False Start”,可以将往返握手消息从2-RTT减少到1-RTT,达到与TLS1.3相同的效果。

ECDHE 握手过程

HTTPS连接建立过程:TCP三次握手+ TLS单向握手。这次握手的重点是计算主密钥的“主秘钥”,而每次主密钥连接都要重新计算,那就有点太浪费了,如果能把“辛苦工作”从主密钥缓存中取出来“重用”,就不能免去握手和计算的代价吗?

这被称为TLS会话恢复,和HTTP缓存一样,是HTTPS性能的“大爆炸”,被浏览器和服务器广泛使用。

会话复用分为两种类型。第一种称为“会话ID”,它是客户端和服务器在第一次连接后存储的一个会话的ID号,主密钥等相关信息存储在内存中。当客户端再次连接时,它发送一个ID,服务器在内存中查找它。当它找到它时,它直接使用主密钥恢复会话状态,跳过证书验证和密钥交换,并仅使用一个往返消息建立安全通信。

会话多路握手

本文主要介绍了关于http与https的区别是什么(HTTP和HTTPS的差距)的相关养殖或种植技术,生活常识栏目还介绍了该行业生产经营方式及经营管理,关注生活常识发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解生活常识技术怎么管理的要点,是您生活常识致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1478003.html