网络传输中的各种加密算法+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 ...
随机推荐
- Spring-BeanFactory体系介绍
1 BeanFactory介绍 BeanFactory是Spring中的根容器接口,所有的容器都从从它继承而来,ApplicationContext中对于BeanDefinition的注册,bean实 ...
- Spring中的属性注入注解
@Inject使用 JSR330规范实现的 默认按照类型注入 如果需要按照名称注入,@Inject需要和@Name一起使用 @Resource JSR250规范实现的,需要导入不同的包 @Resour ...
- HMS Core携手厦门大学打造AR增强现实技术
HMS Core AR Engine团队联手厦门大学信息学院,与专业学生面对面深度交流行业发展与前沿成果.双方共同编写行业知识教材,引导学生开发AR游戏实践,为未来AR.VR人才培养培育可复制的教学模 ...
- 非极大值抑制算法(Python实现)
date: 2017-07-21 16:48:02 非极大值抑制算法(Non-maximum suppression, NMS) 算法原理 非极大值抑制算法的本质是搜索局部极大值,抑制非极大值元素. ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...
- Redis 中常见的集群部署方案
Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...
- CTO(技术总监)平时都在做些什么?
目前创业,最后一家公司任职医疗科技公司的研发中心总经理,之前也在几家公司的任职研发/技术总监岗位,在我理解的范围,目前国内中小企业对于CTO/技术总监的岗位区别没有那么明确的职能区分. 1. 先总结 ...
- [Matlab]二维隐函数绘图
MATLAB提供了一个ezplot函数绘制隐函数图形,有三种调用方式: 对于函数f=f(x),ezplot函数的调用格式为: ezplot(f):在默认区间-2pi<=x<=2pi内绘制f ...
- HDFS的优缺点
HDFS是一个分布式文件存储系统,前身来自于Google发布的大数据三驾马车之一GFS (Google File System). HDFS的优点: 1.高容错 hdfs具有很高的容错性,数据自动保存 ...
- Thread、ThreadPool 和 Task
对 C# 开发者来说,不可不理解清楚 Thread.ThreadPool 和 Task 这三个概念.这也是面试频率很高的话题,在 StackOverflow 可以找到有很多不错的回答,我总结整理了一下 ...