HTTPS 之共享秘钥 公钥 及 私钥
HTTPS 之共享秘钥 公钥 及 私钥
一 共享秘钥
1.1 概念
共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙。
1.2 共享秘钥在HTTP传输中的缺点
以共享密钥方式加密时必须将密钥也发给对方。在互联网上转发密钥时,如果通信被监听,那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。
二 SSL(Secure Socket Layer)公开秘钥加密
2.1 概念
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。
发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
另外,要想根据密文和公开密钥,恢复到信息原文是异常困难。
三 HTTPS的加密机制—混合秘钥(公开秘钥加密技术和共享秘钥加密技术结合)
3.1 原因
HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。公开密钥加密很安全。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
所以应充分利用共享密钥加密和公开密钥加密各自的优势,将共享密钥加密和公开密钥加密组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
四 公钥加密的问题
无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,无法证明收到的公开密钥就是原本服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。
解决办法:第三方可信机构认证,参考:传送门
五 证书的基本原理
1 首先,客户端向服务器发出加密请求
2 服务器将自己的证书发送给请求的客户端,这个证书中包含服务器的公钥,而这个证书本身被颁发证书的可信机构的私钥加密。并且可信机构的公钥一般会存储于请求的客户端电脑上。
3 请求的客户端利用存储于本电脑上的可信机构的公钥,来验证该证书是否正确,这样就验证了服务器身份,同时得到了服务器的公钥
4 客户端利用服务器的公钥加密共享秘钥,服务器收到客户端的共享秘钥后,二者就可以通过共享秘钥完成接下来的加密通信
---------------------
作者:zhiman
来源:CSDN
原文:https://blog.csdn.net/u013241673/article/details/79582872
版权声明:本文为博主原创文章,转载请附上博文链接!
HTTPS 之共享秘钥 公钥 及 私钥的更多相关文章
- https的秘钥公钥以及之间的会话流程
一 共享秘钥 1.1 概念 共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙. 1.2 共享秘钥在HTTP传输中的缺点 以共享密钥方式加密时 ...
- 基于httpClient的https的无秘钥登陆
HttpClient package com.mediaforce.crawl.util; import java.util.ArrayList; import java.util.HashMap; ...
- 探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https它们究竟是什么,它们分别解决了通信过程的哪些问题。
一.准备 1. 角色:小白.美美.小黑. 2. 剧情:小白和美美在谈恋爱:小黑对美美求而不得.心生怨念,所以从中作梗. 3. 需求:小白要与美美需通过网络进行通信,联络感情,所以必须保证通信的安全性. ...
- TLS握手秘钥套件分析
1.为了弄清楚TLS1.3的内部结构,觉得有必要将TLS的整个结构从新整理一遍,方便后续在做握手协议的形式化分析的时候能够不遗漏每个加密和认证的的环节. TLS1.3不论文在协议内容上还是性能上都较之 ...
- 数字签名中公钥和私钥是什么?对称加密与非对称加密,以及RSA的原理
http://baijiahao.baidu.com/s?id=1581684919791448393&wfr=spider&for=pc https://blog.csdn.net/ ...
- git配置ssh秘钥(公钥以及私钥)
桌面版git, 本文以github为例,gitlab等其它托管平台一样操作 当我们将代码托管到远程平台(GitHub.gitlab等)时, 我们需要在本地使用git进行push/pull代码时,需要 ...
- git配置ssh秘钥(公钥以及私钥)linux
本文默认已经安装git,并有github或者gitlab账号 git在linux下安装参考:https://www.cnblogs.com/lz0925/p/10791147.html 在Linux中 ...
- Https之秘钥交换过程分析
一.概念回顾 A <------M------> B场景:A.B两个人之间通讯,A传输信息M给B,假定是在不安全的通路上传输. 1.明文传输 被中间人C拦截下来,可以随意篡改A发送给B的消 ...
- 【转】iOS安全之RSA加密/生成公钥、秘钥 pem文件
在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...
随机推荐
- synchronized同一把锁锁不同代码
对于多线程,如果是计算密集型,多线程不一定优势:但如果是io密集型(因为速度慢),多线程多数情况下就有很大的优势了(但也不全是,因为当io已经满负荷运转下,即100%了,再增加线程,未必就会增加效率) ...
- MySQL5.7配置基于GTID的复制
MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...
- Jmeter测试实践:文件下载接口
一 Jmeter步骤 1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求.根据接口文档进行配置. Basic部分修改如下,Advanced部分保持默 ...
- 5 jmeter性能测试小小的实战
项目描述 被测网址:www.sogou.com指标:相应时间以及错误率场景:线程数 20.Ramp-Up Period(in seconds) 10.循环次数 10 测试步骤 1.打开jmeter工具 ...
- NYOJ 一笔画
# include<iostream> # include<string> # include<string.h> # include<queue> # ...
- shell脚本中 if 判断时候-s是什么意思
-s file 文件大小非0时为真[ -f "somefile" ] :判断是否是一个文件 [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可 ...
- 云计算概述及Centos7下安装kvm虚拟机
云计算(cloud computing)是基于互联网的相关服务的增加.使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源 云计算到底是什么? 按定义:云计算指的是一种使用模式,是基 ...
- 96A
#include <iostream> #include <string> #include <cctype> using namespace std; int m ...
- .Net拾忆:HttpWebRequest/WebClient两种方式模拟Post
一.代码 1.HttpWebRequest public static string DoPost( string target, string content ) { try { string pa ...
- JAVA编程思想学习笔记4-chap10-12-斗之气4段
1.内部类:Iterator 2..this生成对外部类的引用 3..new:通过外部类对象创建内部类对象 package com.chengjie; public class TestInnerCl ...