HTTPS涉及的加密算法讲解
前言
从2015年左右开始,Google、Baidu、Facebook 等互联网巨头,不谋而合地开始大力推行 HTTPS, 国内外的大型互联网公司很多也都已经启用了全站 HTTPS
为鼓励全球网站的 HTTPS 实现,一些互联网公司都提出了自己的要求:
1)Google 已调整搜索引擎算法,让采用 HTTPS 的网站在搜索中排名更靠前;
2)从 2017 年开始,Chrome 浏览器已把采用 HTTP 协议的网站标记为不安全网站;
3)苹果App Store 中的所有应用都必须使用 HTTPS 加密连接;
4)微信小程序也要求必须使用 HTTPS 协议;
5)HTTP/2和HTTP/3 协议的支持需以 HTTPS 为基础。
因此学习HTTPS的是一件很必要的事情
https概述
超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。HTTPS是并非应用层的新协议。只是HTTP通信接口用SSL或TLS协议代替而已。
HTTP直接和TCP通信。当使用ssl时,则演变为跟ssl通信,然后再由ssl与tcp进行通信。简单的讲就是http的plus版。
在采用ssl后,http就拥有了加密、证书、完整性保护这些功能。
在讲解ssl时,先讲解下几个关键的知识点。
加密方法
对称密钥加密
又称私钥加密、共享密钥加密。需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。
优点:性能高
缺点:密钥泄露风险高,因为大家共享一个密钥,假如一方泄露这个密码,就没有安全可言。比如:在前后端调用的过程中使用此种算法,如果前端js中存放密钥,那么就会被窃取,app端也有可能反编译获取。
常用的算法:DES、3DES、AES、Blowfish、IDEA、RC5、RC6
公开密钥加密
(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。
优点:知道了公钥,也无法计算出来密钥。例如:在开发项目时,一般私钥是保存在服务端,公钥保存在前端,只要服务端安全,那么私钥就不会被窃取。
缺点:计算量大,需要消耗大量的系统资源,性能低。
常用的算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
数字签名
数字签名主要是有两个作用
身份证明
验证信息的内容是否被篡改。
而数字签名因为采用公钥加密技术实现,又叫公钥数字签名。
示例:taker给maker给了自己的公钥,说以后通过此公钥可以验证自己的身份和信息是否篡改。
有一天,taker在外遇到了点困难需要钱,想要朝maker借点钱,但是又怕无法证明自己,所以采用数字签名。
首先他把消息内容,通过hash算法计算出一个摘要,然后在采用自己私钥对摘要进行加密
然后在把这个加密信息添加到邮件附件中,一同发给maker。
maker收到邮件后,用公钥对加密信息进行解密得到了摘要。
然后在用邮件内容进行hash,生成摘要与公钥解密出来的摘要进行比对,就可以确保此邮件是taker所发,并且内容未被篡改,然后在给taker打钱。
HTTPS涉及的加密算法讲解的更多相关文章
- SSL证书(HTTPS)背后的加密算法
SSL证书(HTTPS)背后的加密算法 之前我们介绍SSL工作原理了解到当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信.这些复杂的步骤的第一步 ...
- HTTPS背后的加密算法
当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信.InfoQ的这篇文章对此有非常详细的描述.这些复杂的步骤的第一步,就是浏览器与服务器之间协商一 ...
- HTTPS背后的加密算法(转)
当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信.InfoQ的这篇文章对此有非常详细的描述.这些复杂的步骤的第一步,就是浏览器与服务器之间协商一 ...
- 手摸手带你认识https涉及的知识,并实现https加密解密,加签解签
目录 http访问流程 https访问流程 证书 加密/解密 加签/验签 Java实现https 拓展 @ 看完整的代码,直接去完整代码实现,看实现完后会遇到的坑,直接去测试过程中的问题,包括经过代理 ...
- 自制Https证书并在Spring Boot和Nginx中使用
白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环 ...
- 深入揭秘HTTPS安全问题&连接建立全过程
作者:[已重置]链接:https://zhuanlan.zhihu.com/p/22142170来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作为开发者必备的网络安全 ...
- 自制Https证书并在Spring Boot和Nginx中使用(转)
白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环 ...
- 通过一个小故事,理解 HTTPS 工作原理
本文摘录参考: 细说 CA 和证书(主要讲解 CA 的使用) 数字签名是什么?(简单理解原理) 深入浅出 HTTPS 工作原理(深入理解原理) HTTP 协议由于是明文传送,所以存在三大风险: 1.被 ...
- HTTPS原理和CA证书申请(转)
原文地址:http://blog.51cto.com/11883699/2160032 众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的 ...
随机推荐
- Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_152 短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务 ...
- odoo14 button 事件调用python方法如何传递参数
1 <field name="user_ids" 2 mode="kanban" 3 nolabel="1" 4 options=&q ...
- 【原创】Selenium获取请求头、响应头
本文仅供学习交流使用,如侵立删! Selenium获取请求头.响应头 操作环境 win10 . mac Python3.9 selenium.seleniumwire selenium是没有办法直接获 ...
- 多环境配置 - SpringBoot 2.7.2 实战基础
优雅哥 SpringBoot 2.7.2 实战基础 - 06 -多环境配置 在一个项目的开发过程中,通常伴随着多套环境:本地环境 local.开发环境 dev.集成测试环境 test.用户接受测试环境 ...
- Luogu1382 楼房 (线段树 扫描线)
各种低级错误.jpg,数组开大就过.jpg 线段树离散化扫描线 #include <iostream> #include <cstdio> #include <cstri ...
- 慢SQL,压垮团队的最后一根稻草!
一.什么是慢 SQL 什么是慢SQL?顾名思义,运行时间较长的 SQL 语句即为慢 SQL! 那问题来了,多久才算慢呢? 这个慢其实是一个相对值,不同的业务场景下,标准要求是不一样的. 我们都知道,我 ...
- 完整实现-通过DelayQueue实现延时任务
实现延时任务有很多的方法,网上关于延时任务的实现的文章已经不少了.比如:实现延时任务的10种方法等等.但是这些文章基本上都是将方法大概的列举一下,给出部分示例代码,对于有经验的老程序员可能一看就知道该 ...
- 888. 公平的糖果交换--LeetCode
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/fair-candy-swap 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 假 ...
- 如何使用.NET 6的IHostedService和BackgroundService?
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本章是<定制ASP NET 6.0框架系列文章>的第七篇.本文内容和定 ...
- JavaScript基础回顾知识点记录2
js 使用嵌套for循环输出三角形 for(var i=0; i<5; i++){ //正三角 // for(var j=0; j<i+1; j++){ // document.write ...