网络传输中的各种加密算法+SSL+CA证书详解
1. 数据传输分类
在互联网上数据传输有两种:明文传输和加密传输。明文传输的协议有:ftp、http、smtp、telnet。
但是为了数据的完整性和安全性,所以后来引用了加密等相关手段来保证数据的安全和完整性。
2. 案例引入
我在外地出差,因工作需要,公司主管要发给我一份重要资料给我,怎么才能让这个资料顺利的传到我的手上,
而且我怀疑有人会窃取这个重要资料,若是被谁窃取到那公司损失就大了!
3. 安全的特点
我能确定这个资料来来自公司 --- 数据来源认证 我能确保在通过因特网传输时没有被修改过 --- 数据的完整性保护(传输的过程中是否被修改) 确宝没有别人能够看到这份资料 --- 数据私密性 (不能被别看到) 主管不能事后否认他曾经发送过那份资料本给我 ---(不可否认性)
4. 角色说明
互联网 黑客 数据 加密 数据




5. 算法
(1). 密码学算法主要分为两个大类,对称加密算法和非对称加密算法,对称加密算法技术已经存在了很长的时间。最早在埃及使用!
(2). 我们很快就能看到,对称加密算法和非对称加密算法各有所长和弱点,所以现代密码系统都在努力做到适当地使用这两类算法以利用它们的长处,同时又避开它们各自的缺点。
1. 对称加密算法的加密和解密原理
1.对称加密算法概念:使用相同密钥与算法进行加解密运算的算法就叫做对称加密算法
2.具体加密过程如下图:

3.对称加密算法的传输过程:

似乎很完美,但是有个大的Bug?
(1). 主管怎么把他加密使用的密钥交给我呢?
(2). 难道你想说通过互联网发给我?
(3). 有办法了我坐飞机到上海来拿?
(4). 有脑子的人都知道这有个BUG?
下面我们得说一下密钥是如何交换的,
密钥交换(IKE)
密钥交换的算法(IKE)过程如下,
主管和我:p 大素数,g 生成数
主管:x 、我:y
主管:g^x%p --> 我
我:g^y%p -->主管
主管: (g^y%p)^x=g^yx%p
我: (g^x%p)^y=g^xy%p
这个结果就是密钥,在互联网中传输的只有四个数,p g x y,这样就能保证,密钥安全!
4.下面我们总结一下对称加密的优缺点,
优点:
速度快
加密相对安全
加密紧凑(不会发生加密前与加密后文件大小相关太大)
缺点:
随着参与者数量的增加,密钥数量急剧膨胀((n×(n-1))/2)(还说我们的案例,主管传输数据不止发给我一人)
因为密钥数量过多,对密钥的管理和存储是一个很大的问题
不支持数字签名和不可否认性(不能认证数据是否完整,不支持身份认证)
5.主流的对称加密算法有:
DES(56位)
3DES (168位)
AES (128位)
AES 192 AES 256 AES 512Blowfish
由上面可以看出,对称加密能帮我们解决数据加密问题,但对称加密不能帮我解决以上所有问题,那我们便看看非对称加密能否帮我们解决问题?
2.非对称加密算法原理
1.非对称加密算法的概念
非对称加密算法的主流协议为RSA,需要每一个参与者产生一对密钥。共享公钥到服务器,严格保障私钥的安全性。根据这种操作的特点,也被称作公共密钥算法。
密钥对:公钥publickey私钥scritekey,公钥是来自于私钥的。
2.具体过程如下

3.加密原理图如下

4.非对称加密的传输过程

这样总能得到资料了吧,嘿嘿!看似上述的过程没有问题,可是现在的黑客十分“下流”,他可能会先截取主管发的资料(虽然他打不开),然后他会用一个其它文件用我们的公钥加密(因为公钥是公开的任何人都能拿到),来替换主管发的资料,并发给我!由此可看,我们还是没能拿到我们的资料,我们需要通过某种方式来认证资料确实是主管发的,而不是黑客发的!
5.下面总结一下非对称加密的优缺点
优点:
安全,因为不必发送密钥给接受者,所以非对称加密不必担心密钥被中途截获的问题
密钥数目和参与者数目相同,没有复杂的密钥分发问题
在交换公钥之前不需要预先建立某种信任关系
缺点:
加密速度很慢
密文会变长(案例:若1GB大小文件,加密后会变成1.5GB左右)
6.主流的非对称加密算法有:
RSA 加密和签名
DSA 签名
ElGamal
由上面的优缺点分析,我们发现非对称加密,又不适合加密,那有人会问了,那非对称加密不什么用都没有,我想说,不是的。在实际应用中非对称加密是这样应用的,还说我们上面说的那个案例,主管理现在要发一重要资料给我,主管先随机生成一公钥与私钥,主管先把公钥发给我,当然黑客可能也会拿到(毕竟是公开的嘛),然后用私钥加密数据发给我,我用主管理的公钥进行解密,若能看到数据那说明发送者是主管(其实就是进行身份认证)!
3.单向加密算法(散列函数)
1.概述:
散列函数也叫做HASH函数,主流的散列算法有MD5与SHA-1。散列函数的主要任务是验证数据的完整性。通过散列函数计算得到的结果叫做散列值,这个散列值也常常被称为数据的指纹(Fingerprint)也叫数字签名。
2.特点:
输入一样,输出必须相同
雪崩效应:输入的微小改变,将会引起结果的巨大改变
定长输出:无论原始数据是多大,结果大小都相同的
加密过程不可逆,无法根据特征码还原原来的数据
3. 工作原理:

4.主流的单向加密算法:
Md4
Md5
SHA1
SHA192 SHA256 SHA384CRC-32
4.最最理想方案

具过程如下,
(1). 主管的加密过程
主管用散列函数对将要发给我的重要资料进行一次特征码提取,得到时数字签名1 (数字签名也叫特征码,也叫摘要其实就是说法不一样,意思相同,大家理解就行)
主管再用自己的私钥加密数字签名1,此时会得到加密的数字签名1和重要资料
主管随机生成一个对称密钥加密我们的数字签名1和重要资料,但此时只有主管理能解密,所有我们还得在数字签名1和重要资料后面加上主管随机生成的密钥
主管将用我的公钥加密随机生成的对称密钥,会得到加密的随机对称密钥,那最终的数据会有这些,加密的随机密钥、加密的数字签名1和重要资料
(2). 我的解密过程
首先我用自己的私钥解密加密的随机对称密钥,得到随机的对称密钥
用得到的随机对称密钥解密加密的数据签名1和主要资料
用主管的公钥解密数字签名1
用散列函数对重要资料进行一次特征码提取,得到数字签名2
比较数字签名1和数字签名2是否一样
具体分析,经过上述的加密解密过程我们可以看出,数据的加密,身份认证,数据完整性验证,都得到了很好的体现,主管随机生成的对称密钥对数据进行加密,我用主管的公钥进行对主管的身份认证,通过数字签名对数据进行完整性验证,基本达到加密传输的要求,我们可以看到整个过程最核心的是依赖主管的公钥,若黑客替换了主管理的公钥怎么办?
5.PKI (Public Key Infrastructure 公共密钥基础设施)
PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。完整的PKI系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建PKI也将围绕着这五大系统来着手构建,其中最重要的就是CA认证机构!
CA认证标准是X.509标准,CA具体内容包括,
- 公钥和证书的有效期
证书的合法拥有者
证书该如何使用
CA信息
CA签名的检验码
CRL 证书撤销列表
总结,CA证书最主要的功能就是认证我们要访问的服务器公钥有权威性 (在我们的案例中就是认证主管的公钥没有被黑客修改过,嘿嘿)
PKI的两种具休实现
(1). TSL/SSL 都符合 X.509标准(我们这里主要讲SSL(安全的套接字层 Secure Socket Layer))
(2). OpenGPG
6.SSL 详解

通过TCP/IP协议模型我们可以看出,SSL协议处于应用层与传输之间,下面我们主要说明https主要的实现过程,

具体说明:
Client 能互联网下载CA的公钥,用于验证Server身份
Server 通过加密算法生成一对密钥,将公钥发给CA认证机构,做数字证书
CA 通过自己的私钥加密 Server 公钥并加上自己的数字签名后,将生成的数字证书发给Server
Client 与 Server 通TCP的三次握手建立连接
Client 发出HTTP的报文请求,并和Server协商使用哪种算法加密
Server 响应报文并将公钥(CA证书)发送给客户端
Client 能通过CA的公钥解密CA证书,得到Server的公钥和数字签名,Client 通过散列函数算出Server公钥的数字签名与得到的数字签名对比,来验证Server身份,验证成功并发送数据请求
Server 处理请求,并根据Client请求的资源类型,来访问相关资源做出响应报文,并记录日志
Client 与 Server 通过TCP的四次挥手断开连接,通信完成
原文:https://my.oschina.net/liting/blog/372488
网络传输中的各种加密算法+SSL+CA证书详解的更多相关文章
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完毕測试代码)
MD5和RSA是网络传输中最经常使用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,仅仅能加密而不能解密. ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- [转载]详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
[转载]详解网络传输中的三张表,MAC地址表.ARP缓存表以及路由表 虽然学过了计算机网络,但是这部分还是有点乱.正好在网上看到了一篇文章,讲的很透彻,转载过来康康. 本文出自 "邓奇的Bl ...
- [No0000126]SSL/TLS原理详解与WCF中的WS-Security
SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket La ...
- SSL/TLS协议详解(中)——证书颁发机构
本文转载自SSL/TLS协议详解(中)--证书颁发机构 导语 上一篇中,我们讨论了关于Diffie Hellman算法的SSL/TLS密钥交换.我们最终认为需要第三方来验证服务器的真实性,并提出了证书 ...
- 腾讯云TrustAsia DV SSL CA证书的申请及使用
1.证书申请及管理 对于已经拥有域名及公网服务器的用户,可以通过腾讯云申请TrustAsia DV SSL CA证书,证书申请流程包含填写基本信息和域名认证两步,非常清晰和简单,没有什么需要过 ...
- PHP 配置默认SSL CA证书
1.从CURL 官网下载CA 证书(当然也可以选择自己创建SSL CA证书,详情参考 https://blog.csdn.net/scuyxi/article/details/54898870 ,或自 ...
- SSL/TLS 原理详解
本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1 ...
随机推荐
- Solution -「SP 6779」GSS7
\(\mathcal{Description}\) 给定一棵 \(n\) 个点的带点权树,\(q\) 次操作: 路径点权赋值. 询问路径最大子段和(可以为空). \(n,q\le10^5\). ...
- Diary -「PKUSC 2021」游记
出游回来自然而然(?)地进入生产低谷的兔子只能写写游记了 qwq. Day -1 实时反馈赛制不是为防止你被数据调戏,而是给你调戏数据的机会. --鲁迅 PKU 一贯的 \(32\) 发提交实 ...
- 我的平安夜-Merry Christmas
我的平安夜-Merry Christmas 平安夜给自己买的第一个"苹果",嘻嘻. 今夜,不想去学习技术知识点什么的, 我们就想到哪里写哪里,就简单聊聊思维方式吧. 其实我不想做今 ...
- Understanding JSON Schema
json schema 在线校验器 译自:Understanding JSON Schema { "type": "object", "propert ...
- windows系统如何远程桌面连接
转至:https://jingyan.baidu.com/article/67662997adb46a54d51b84bd.html 远程桌面连接是一种通过网络技术,远程操作另一台电脑的过程,随着wi ...
- 60天shell脚本计划-12/12-渐入佳境
--作者:飞翔的小胖猪 --创建时间:2021年3月23日 --修改时间:2021年3月27日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...
- mapreduce类型对应
public class OrderBean implements WritableComparable<OrderBean> { private Integer order_id; // ...
- omnet++:官方文档翻译总结(五)
Part 6 - 用IDE将结果可视化 学习翻译自:Visualizing the Results - OMNeT++ Technical Articles ①将输出的数值和向量数据可视化(用tict ...
- JZ-060-把二叉树打印成多行
把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目链接: 把二叉树打印成多行 代码 import java.util.ArrayList; impor ...
- aria2 源码解析专题 —— (二) Exception 部分
首先声明 Exception 部分的几个异常类的继承关系,如下: 这一版的 Exception 部分只有头文件,没有源文件,所以涉及到的更多的只是定义而已,没有太多实现,所以这一部分也简单说说每个类的 ...