密码学——网间数据加密传输全流程(SSL加密原理)

0.导言


  昨天写了一篇关于《秘钥与公钥》的文章,写的比较简单好理解,有点儿像过家家,如果详细探究起来会有不少出入,今天就来详细的说明一下数据加密的原理和过程。这个原理就是大名鼎鼎SSL的加密原理,哦,对了,有人说上个月SSL刚爆出本年度最轰动的漏洞“心脏滴血”,可能危及全球好多互联网企业,那这个东西靠谱吗?其实,爆出漏洞的是SSL的一款产品openssl,是程序员编码时候的失误,是程序上的漏洞,而非SSL原理上出现了问题,所以SSL还是靠谱的,HTTP协议还是需要它来保护,我们不应该因为一个个人的失误,而否定一项很犀利的技术。好啦,我们开始吧,先看看下面的图:

情景假设

发送方:李雷

接收方:韩梅梅

发送内容:一封很长很长的信。

1.准备阶段

  首先,李雷想发邮件给韩梅梅先要经过韩梅梅的授权,韩梅梅要事先把含有自己公钥的数字证书发送给李雷。这就引出了数字证书的概念。

1.1数字证书:

  数字证书简称CA,又叫公钥证书(对公钥和私钥概念不清楚的可以参考这篇文章。《公钥与私钥》),是由权威机构颁发的一种电子证书,这里的权威机构一般都是官方认证的机构,里面包含了使用者的公钥和一些其他的信息。当然,windows系统里也自带证书服务器,也就是说,如果你自己想给别人颁发证书的话也可以,但因为你并不具有权威,所以不会有人用你颁发的证书,除非你想自己建一个网站(例如电商网站),需要安全数据传输,如果别人使用你的网站,需要在你这里注册证书,但你的证书还是不会被操作系统信任,一般都要去官方的机构注册还能有效。

  注意,证书的颁发机构,使用者和拥有者是不同的三个人。

  颁发机构是第三方官方认证机构,保证证书的权威性。

  使用者是颁发给的那个人,是真正的证书持有者,数字证书就相当于该人的身份证,里面记录了他的公钥。

  拥有者可以是很多人,证书的使用者可以把自己的证书发送给他人,用来和他人发生安全的通信。

  数字证书里面含有身份认证的相关信息:持有者的公钥、证书指纹、加密所有算法,证书有效期等等。下图为我电脑windows系统下的一个微软颁发的证书。我们在图中可以看到上述所说的信息,这里的颁发机构是 Microsoft
Windows Hardware Compatibility PCA,使用者是 Microsoft Windows Hardware
Compatibility Publisher,拥有者当然是我啦。所以,一个人如果拥有了对方的数字证书,也就拥有了对方的公钥。

1.2 获取接收方证书

  所以,在发送方想发送加密信息之前,要先从接收方那里获得数字证书。这里的情景也就是韩梅梅要事先把自己的证书发送给李雷。

2.加密阶段

2.1 制作信息摘要

  如上图(可以参考文章最开始大图),加密的第一步就是将原文的明文信息利用Hash函数制作出一个加密的信息摘要,这个信息要比原文小的多,因为Hash函数式不可逆的,所以无法从加密的摘要信息反推回原文。这个信息将作为解密时的校验信息。

2.2 制作数字签名

  将上一步得到的信息用发送方李雷的私钥加密,制作出数字签名。数字签名就是最后解密是接收方韩梅梅校验发送方身份的所利用的信息。

2.3 制作正文密文。

  将信件明文,上一步得到的数字签名,和发送方李雷自己的数字证书方在一起进行对称加密。这里介绍下对称加密的概念,首先说公钥和私钥的加密形式叫做非对称加密,是两把不同的秘钥不想加锁和开锁,自己不能开自己。而对称加密就是只有一个秘钥,用它来枷锁也用它来解锁。对称加密存在安全隐含,因为你必须让发送方和接收方都知道这个秘钥,这就必然要把这个秘钥在网络上传输,这就存在风险。但对称加密也有优点,就是算法是时间复杂度底,加密过程快,而非对称加密的时间复杂度很高,如果对一段很长的全文都进行非对称加密显然是不现实的。所以聪明的人们相出了用非对称加密算法加密对称加密秘钥的方法,就可以做到两者兼得,在下一步中,就可以看到这个奇迹发生。

2.4制作数字信封

  用接收方韩梅梅数字证书中的公钥对这把对称加密的秘钥进行加密,形成数字信封,这样在传输过程中,黑客就无法截取到加密正文所用的对称秘钥,达到了效率和安全性上的兼顾。

2.5 打包数据,可以上路了!

  将第3步制作的密文和第4步制作的数字信封打包在一起,发送出去。这样固若金汤的加密过程就结束了!

3.解密阶段

  韩梅梅这时候已经收到了李雷发来的信件。解密阶段基本是加密阶段的反过程。

3.1 解密数字信封

  韩梅梅利用自己的私钥解开数字信封,数字信封是用韩梅梅的公钥加密的,得到对称秘钥。

3.2
解密正文、数字签名、发送方数字证书。

  利用上一步解密得到的对称秘钥,解开密文。得到明文、数字签名、含有李雷公钥的数字证书。

3.3 解密数字签名

  利用上一步得到的发送方李雷的公钥解密数字签名,数字签名是用李雷的私钥加密的,得到发送方李雷利用Hash函数制作的信息摘要。

3.4 接收方制作信息摘要

  接收方韩梅梅利用第二步解密得到的信件明文利用Hash函数再次制作信息摘要。

3.5 校验原文

  将第3步和第4步得到的两份信息摘要进行对比,如果一样,说明接收数据正确且完整。至此,一套完整的加密传输流程结束了!

4.总结


  如果你细细体味,会发现这里有很多巧妙的地方。

  1、利用非对称加密确保了数据的绝对安全性。

  2、利用对称加密加密原文,简化了时间复杂度,同时有用非对称加密加密对称秘钥,让对称秘钥的传输绝对安全。也许你会想,原文最终还是只用对称加密算法加的密,我们只需要暴力破解这个对称密码就可以了。这里要说明的是,这个对称秘钥是随机生成的,对用户透明,一般应该也会很长,要破解这个基本上也是不现实的。

  3、利用Hash函数的不可逆性、结果唯一性对数据进行校验,有效的保证了数据的完整性。

密码学——网间数据加密传输全流程(SSL加密原理),布布扣,bubuko.com

时间: 2024-08-09 02:08:21

密码学——网间数据加密传输全流程(SSL加密原理)的相关文章

SSL工作原理,SSL加密原理,SSL证书怎么加密

SSL是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性.因特网的 超文本传输协议(HTTP)使用 SSL 来实现安全的通信. 在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的.公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥.有了服务器的SSL数字证书,客户端也可以验证服务器的身份.SSL 协议的版本 1 和 2 只提供服务器认证.版本 3 添加了客户端认证,此认证同时需要客户

SSL加密编程(1) 概述

SSL是TCP/IP环境上的标准的安全加密传输协议.SSL的全称是安全的Socket层,它具有与Socket类似的客户端/服务器体制.常见的https即http+ssl,从安全的角度看,https的安全技术就是SSL加密.从建立服务的角度,配置一个web服务器提供https服务,其关键就是获取和设置所需的SSL服务器证书.SSL基本的安全约束是对服务器的验证,这一安全约束被用来防止钓鱼网站仿冒合法的网站,从而防止客户端向假的服务器,如仿冒电子邮件或者网银外观的网站,提供登录口令等敏感数据.注册一

IIS网站设置SSL加密机制

很多朋友都喜欢使用Windows自带的组件IIS来架设自己的Web服务器,然而IIS在默认情况下使用的是HTTP协议,这种协议是以明文形式来传输数据的,这样黑客很容易窃取你或朋友在信息传输过程中的一些重要信息,为了避免信息遭受他人的非法窃取,因此非常有必要给你的IIS网站设置SSL加密机制. SSL加密原理 SSL(Security Socket Layer)的中文意思是"安全套接层协议",它是由Netscape公司推出的一种安全通信,SSL可以让客户机和服务器之间建立一条加密的安全通

网间数据摆渡需要确保数据可追溯

很多企业为了保证内部信息的安全,都会建立一个专用的内部网络,通过物理隔离的方式,和外部的网络相隔绝.这样,对于内部网络的安全保障有了很大的提高,但是对于内外网的信息交互带来了很大的不便. 比如网闸就是一种很常见的物理隔离方式,多数情况下,这种网间数据摆渡的目的是确保网络隔离的前提下实现适度的数据交换,网闸就是使用数据“摆渡”的方式实现两个网络之间的数据交换.虽然网闸对保护内部数据的安全性有一定的帮助,但是在公司运转过程中,还是会遇到一些影响业务发展的问题. 1.网闸没有审批审核功能,也不能检测到

接口测试全流程扫盲

扫盲内容: 1.什么是接口? 2.接口都有哪些类型? 3.接口的本质是什么? 4.什么是接口测试? 5.问什么要做接口测试? 6.怎样做接口测试? 7.接口测测试点是什么? 8.接口测试都要掌握哪些知识? 9.其他相关知识? 1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? 接口一般分为两种:1.程序内部的接口 2.系统对外的接口 系统对外的接口

CentOS6.6服务器系统配置(LAMP+phpMyAdmin)全流程

CentOS6.6服务器系统配置(LAMP+phpMyAdmin)全流程 昨天在腾讯云上买了个服务器,是CentOS6.6操作系统的裸机,里面什么都没,然后开始了一天一夜的LAMP(Apache+MySql+PHP)的环境配置.借鉴了很多人的做法,花了很多时间,流了很多的汗水,虽然成功了,但是考虑到以后可能还有用,或者能给别人做做参考,于是写下这篇博客.(这篇博客借鉴了其他很多博客,借鉴最多的就是osyunwei的这篇博客,但是那些博客都是配置低版本的php和mysql,不便现在我们使用,我整合

快速了解fcpx剪辑全流程,新手小白快速上手Final cut

Final Cut Pro X 是Mac OS平台上最好的视频剪辑软件,使用起来也非常方便.那么如何快速了解Final Cut 剪辑全流程?今天小编整理了新手快速上手Final cut的操作流程,让新手也能以最快的速度上手做剪辑,需要的朋友赶快来了解下吧!一 导入素材 1 .打开Final cut 后 我们进入界面: 2. 导入素材:在导入素材位置点击小箭头,也可以在左侧最上角,如下图所示. 3 .这时候弹出素材管理界面: 4 .在上方选择我们媒体存储的磁盘,文件夹. 5 .进入文件夹后选择想要

cts全流程自动化方案讨论

CTS全流程自动化方案讨论 功能愿景 cts全流程自动化.大致包括以下模块: 版本构建 强制OTA升级 自动retry 报告+日志备份并解析 邮件发送 方案痛点 目标 方案 问题等级&痛点 版本构建 目前方案:python库paramiko远程ssh登录详细:win端python脚本paramiko库远程ssh登录Linux编译服务器,将一键编译命令写入一个python文件,然后执行该"一键编译命令"py文件 问题等级:低版本有时候会下载不下来,需要人工干预.自动构建不是问题,

gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程

什么是插件 Gitbook 插件是扩展 GitBook 功能(电子书和网站)的最佳方式. 只要是 Gitbook 默认没有提供的功能,基于插件机制都可以自行扩展,是插件让 Gitbook 变得更加强大. 本文将全面介绍插件的相关知识并重点介绍插件开发的全流程,只有熟悉插件开发流程才能做到有的放矢,心中有数,进而开发出自己的插件. 关于插件请参考 Gitbook 入门教程高级进阶系列文章,本文重点讲解开发 Gitbook 的基本流程. gitbook 入门教程之插件介绍 gitbook 入门教程之