HTTPS、SSL/TLS,HTTPS运行过程,RSA加密算法,AES加密算法

1、为什么网站要使用安全证书

我们所处的网络环境是复杂多样的,大致分为两类,一类是可信的网络服务商,比如直接连的电信运营商的网络,网线,4G,5G;另一类是不可信的网络,比如WIFI,局域网路由器,网吧,或者使用了网络代理等等,你的数据经过了一个不可控的网络中间节点,而它是可以看到你的所有数据信息,比如网吧网管品行不正,或者你在路边连的免费WIFI设备有恶意程序或中了木马,如果你输了什么用户名密码,如果是HTTP协议,那大概率是会被收集到,因为HTTP是明文传输的。

2、SSL(Secure Socket Layer 安全套接层)

是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(The Internet Engineering Task Force - 互联网工程任务组)标准化后写入(RFCRequest For Comments 请求注释),RFC里包含了很多互联网技术的规范!

起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是介于HTTP和TCP之间的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL+TCP的简称。

3、TLS(Transport Layer Security 安全传输层协议)

由于HTTPS的推出受到了很多人的欢迎,在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3.1,并同时发布“RFC2246-TLS加密协议详解”,如果想更深层次的了解TLS的工作原理可以去RFC的官方网站:www.rfc-editor.org,搜索RFC2246即可找到RFC文档!

SSL 是指安全套接字层,简而言之,它是一项标准技术,可确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。两个系统可能是指服务器和客户端(例如,浏览器和购物网站),或两个服务器之间(例如,含个人身份信息或工资单信息的应用程序)。

4、非对称加密

所谓非对称加密,是指一方使用密钥A加密,另一方却能使用密钥B解密。典型的就是公钥私钥系统。公钥加密的数据可以用私钥解密,私钥加密的数据可以用公钥解密,但是公钥加密的数据不能用公钥解密,私钥加密的数据不能用私钥解密。

公钥是给别人的,私钥是自己留着。比如,甲要给乙传输加密信息,那么甲要先拿到乙的公钥,使用此公钥对数据加密传输到乙,乙使用私钥来解密;同样的,如果乙要回复加密信息给甲,也要先拿到甲的公钥才行,因为如果乙使用的自己的私钥来加密,而此私钥对应的公钥是公开的,所以数据毫无保密可言。

常用的算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。

5、对称加密

使用同一个密钥,加上一对加密解密算法即可。

常用的算法:DES、3DES、AES、Blowfish、IDEA、RC5、RC6

6、HTTPS运行过程

在这里插入图片描述

6.1、服务端准备证书

网站运营方去认证机构申请下载证书,里面包含pem文件和key文件,其中pem文件内容就是CERTIFICATE证书,或者称为公钥;key文件内容就是RSA PRIVATE KEY密钥。在nginx中配置上证书的路径,同时将http的请求重定向到https,即将80端口的重定向到https。

当然,也可以自己使用 openssl 程序生成证书和密钥,通过浏览器访问网站的时候会提示“你的连接不是私密连接”,因为浏览器找不到证书的认证机构,但是还是可以继续访问网站。

如果在图中步骤1被中间人拦截了,他给客户端发了自己的公钥证书,那么客户端的请求就相对于被拦截了,所以,客户端一定要验证是否是权威机构办法的证书,已经验证完全通过。

6.2、客户端发起 HTTPS 请求

用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。

6.3、传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

6.4、客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

地址栏中https左边点击按钮就能看到证书详情。

在这里插入图片描述

如果证书没有问题,那么就生成一个随机值,此随机数其实就是AES密钥,AES是对称加密算法,后面的数据通讯就是使用AES和这个密钥来加密解密的。

使用证书对该随机值进行加密。

6.5、客户端传送数据

客户端使用AES算法对要传递的数据进行加密得到密文,然后使用RSA公钥对AES密钥和密文进行加密。

6.6、服务端返回数据

服务端收到数据后使用RSA私钥解密,得到AES密钥和密文,然后使用AES算法解密数据,得到明文。

服务端将要返回的数据使用AES加密。

7、RSA加密算法

RSA是一种著名的非对称加密解密算法,包括公钥和私钥,公钥用来加密,私钥用来解密,私钥是保存在服务器上的。

RSA加密解密的速度较慢,因此不会用他来加密数据量大的场景。在https过程中也仅仅用来加密AES的密钥。

RSA签名:首先使用哈希算法,比如sha256,对消息字符串进行哈希运算得到长度较短且固定的字符串,使用RSA私钥对此字符串加密,得到签名字符串,将其附加在消息字符串的合适位置后,一并发送。接收方使用对应的公钥对签名字符串解密得到哈希值,同时对原始消息再计算哈希值,二者相比较,假如两者相符的话,则认为发信人持有正确的私钥,并且这个消息在传播路径上没有被篡改过。

签名是用来确定私钥的持有者身份以及判断内容是否被中间人篡改。比如在支付宝的支付签名中,就用到了两对公钥私钥,客户持有自己的私钥和支付宝的公钥,支付宝持有自己的私钥和客户的公钥,双方相互签名和验签。

8、RSA算法原理

RSA是一种非对称加密算法,是由Rivest、Shamir、Adleman三位数学家的缩写,RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。目前1024位和2048位的长度基本上够用了。

RSA算法基于一个十分简单的数论事实:将两个大质数(质数又称素数,就是除了1和本身以外,不会再有别的因数)相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为公钥。

8.1、公钥私钥生成过程
  • 随意选择两个大的质数p和q,p不等于q,计算 n = p * q,这两个数是通过伪随机数生成器生成的。伪随机数生成器不能直接生成质数,它是通过不断的重试得到的。

    n 转换成二进制后的长度,就是密钥长度,比如 1024bit, 2048bit。

  • m = (p-1) * (q-1)

  • 随机选择一个小的奇数 e,要求 e与 m 互质,并且 e 小于 m ,比如 e = 65537

  • 接下来计算 d :(d * e) % m = 1,这里 d 和 e 是模乘法逆元的关系。可以利用欧几里德算法来计算模乘法逆元。

  • (n,e)为公钥,(n,d)为私钥。

8.2、RSA加密解密

密文 = (明文^e) % n

明文 = (密文^d) % n

8.3、模幂运算

形如 c = (a^b) % p,其中 a, b, p 均为整形。

想要计算出结果,先要解决几个问题,首先a , b, p 可能是非常大的整数,会导致内存溢出,该如何声明。其次就是 a 与 b 的幂运算,如果参数太大也无法直接运算。

对于大整数,比如 9999...999,有100个9,可以使用数组来存储每一个数字,[9, 9, 9,...]

对于幂运算,可以拆解,a^1234 = a^1000 * a^200 * a^30 * a^4,实际会将指数部分表示成二进制的形式

对于模运算,可以根据公式,(a * b) % p = (a % p) * (b % p) % p,证明如下:

假设:
a = Ap +B;b = Cp + D其中 A,B,C,D 是任意常数,那么:
ab = ACp^2 + ADp + BCk +BDab % p = BD % p又因为:
a % p = B;b % p = D所以:
(a % p)(b % p) % p = BD % p

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux笔记之diff工具软件P4merge的使用

Linux笔记之diff工具软件P4merge的使用 code review! 文章目录 Linux笔记之diff工具软件P4merge的使用1.安装和配置2.使用:p4merge a.cc b.cc3.配置git 参考博文: Ubuntu Git可视化比较工具 P4Merge 的安装/配置及使用 1.安装和配置 $ wget https://cdist2.per…

仿CSGO盲盒开箱源码 盲盒商城源码 盲盒开箱源码 潮物盲盒商城源码

仿CSGO盲盒开箱源码 盲盒商城源码 盲盒开箱源码 潮物盲盒商城源码 测试环境:宝塔、Linux、PHP7.2、MySQL5.6 根目录 public,伪静态 thinkphp,php需要Redis扩展 后台:/stf 账号:admin 密码:123123 *后台…

数据结构: map与set的简单实现

目录 map与set的模拟实现 1.基本框架 2.模拟实现map与set所需要做的事 1.使用模板 , 达到泛性编程 2.比较问题 3.迭代器 RBTree中: operator operator-- 4.map [ ] 的实现 5.使用普通迭代器构造const迭代器 效果 map与set的模拟实现 1.基本框架 map set 2.模拟实…

【iOS】MVC模式

MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,ta最早出现在SmallTalk语言中。现在,很多计算机语言和架构都采用了MVC模式。 MVC模式概述 MVC模式是一种设计模式,由3部分组成…

【Spring Cloud】如何确定微服务项目的Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本

文章目录 1. 版本选择2. 用脚手架快速生成微服务的pom.xml3. 创建一个父工程4. 代码地址 本文描述如何确定微服务项目的Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本。 1. 版本选择 我们知道Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本选择一致性非常重…

【ML】cheatsheet

LR 原理与面试题目DT, Adaboost, GBDT, xgboost 原理 细节 与 例子 https://www.cnblogs.com/createMoMo/p/12635709.html xgboost挺详细的算法原理与例子 https://zhuanlan.zhihu.com/p/660468945 着重lightgbm就xgboost的改善方向 https://zhuanlan.zhihu.com/p/366952043机器…

《计算机视觉中的多视图几何》笔记(14)

14 Affine Epipolar Geometry 本章主要是在仿射摄像机的情况下重新考虑对极几何,也就是仿射对极几何。 仿射摄像机的优点是它是线性的,所以很多最优化算法可以用线性代数的知识解决。如果是一般的投影摄像机,很多算法就不是线性的了&#x…

IDEA 新版本设置菜单展开

使用了新版本的IDEA 新UI后,常用的file,view,菜单看不见了,不太适应,找了一下,有个配置可以修改。 打开settings里面把show main menu in a separate toolbar勾选上,应用保存就可以了

CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属性 渐变 前端开发入门笔记(七)

CSS3是用于为HTML文档添加样式和布局的最新版本的层叠样式表(Cascading Style Sheets)。下面是一些常用的CSS3属性及其详细解释: border-radius:设置元素的边框圆角的半径。可以使用四个值设置四个不同的圆角半径,也可…

flink中使用GenericWriteAheadSink的优缺点

背景 GenericWriteAheadSink是flink中提供的实现几乎精确一次输出的数据汇抽象类,本文就来看一下使用GenericWriteAheadSink的优缺点 GenericWriteAheadSink的优缺点 先看一下GenericWriteAheadSink的原理图 优点: 几乎可以精确一次的输出&#xf…

在Word中,图片显示不全

在今天交作业的时候,发现了一个非常SB的事情,把图片复制过去显示不完全: 使用文心一言查看搜索了一下,发现可能是以下几种原因: 图片所在行的行高设置不正确。可以重新设置行高,具体步骤包括打开图片显示…

【网络编程】基于epoll的ET模式下的Reactor

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Reactor介绍 二、基于epoll的ET模式下的Reactor计算器代码 1、Tcp…

[计算机入门] 应用软件介绍(娱乐类)

3.21 应用软件介绍(娱乐类) 3.21.1 音乐&#xff1a;酷狗 音乐软件是一类可以帮助人们播放、管理和发现音乐的应用程序。它们提供了丰富的音乐内容&#xff0c;用户可以通过搜索、分类浏览或个性化推荐等方式找到自己喜欢的歌曲、专辑或艺术家。音乐软件还通常支持创建和管理…

Python基础入门例程1-NP1 Hello World!

描述 将字符串 Hello World! 存储到变量str中&#xff0c;再使用print语句将其打印出来。 输入描述&#xff1a; 无 输出描述&#xff1a; 一行输出字符串Hello World! 解答&#xff1a; str "Hello World!" print(str) 解释说明&#xff1a; 赋值变量&…

Metabase:简单快捷的商业智能与数据分析工具 | 开源日报 No.61

moby/moby Stars: 66.8k License: Apache-2.0 Moby 是一个由 Docker 创建的开源项目&#xff0c;旨在实现和加速软件容器化。它提供了工具包组件的“乐高集”&#xff0c;可以将它们组装成基于容器的自定义系统的框架。组件包括容器生成工具、容器注册表、业务流程工具、运行时…

互联网Java工程师面试题·Java 面试篇·第四弹

目录 59、我们能自己写一个容器类&#xff0c;然后使用 for-each 循环码&#xff1f; 60、ArrayList 和 HashMap 的默认大小是多数&#xff1f; 61、有没有可能两个不相等的对象有有相同的 hashcode&#xff1f; 62、两个相同的对象会有不同的的 hash code 吗&#xff1f; …

[AUTOSAR][诊断管理][ECU][$14] 清除诊断相关信息

文章目录 一、简介(1)应用场景(2)清除DTC原理(3) 请求格式二、示例代码(1) 14_cls_dtc_info.c三、 常见bug大揭秘一、简介 根据ISO14119-1标准中所述,诊断服务14主要用于Client向Server(ECU)请求清除诊断相关信息。 (1)应用场景 一般而言,14诊断服务,主要应用场景…

Kubernetes 通过 Deployment 部署Jupyterlab

概要 在Kubernetes上部署jupyterlab服务&#xff0c;链接Kubernetes集群内的MySQL&#xff0c;实现简单的数据开发功能。 前置条件 镜像准备&#xff1a;自定义Docker镜像--Jupyterlab-CSDN博客 MySQL-Statefulset准备&#xff1a;StatefulSet 简单实践 Kubernetes-CSDN博客…

​​​​​​​2022年上半年 软件设计师 上午试卷(1-32)

以下关于冯诺依曼计算机的叙述中&#xff0c;不正确的是 &#xff08;1&#xff09; 。 &#xff08;1&#xff09; A. 程序指令和数据都采用二进制表示 B. 程序指令总是存储在主存中&#xff0c;而数据则存储在高速缓存中 C. 程序的功能都由中央处理器&#xff08;CPU&…

5、k8s部署Nginx Proxy Manager

前言 Nginx-Proxy-Manager 是一个基于 Web 的 Nginx 服务器管理工具&#xff0c;它允许用户通过浏览器界面轻松地管理和监控 Nginx 服务器。通过 Nginx-Proxy-Manager&#xff0c;可以获得受信任的 SSL 证书&#xff0c;并通过单独的配置、自定义和入侵保护来管理多个代理。用…