文档章节

基于HTTPS的安全机制的研究(一)

算法与编程之美
 算法与编程之美
发布于 2016/12/09 09:40
字数 1167
阅读 1053
收藏 33

##1 问题提出

现在广泛使用的HTTP协议采用的是一种明文传输的方式,因此通信双方的数据在网络上传输是十分不安全的。

##2 解决方案

一种简单的解决方案就是对传输的数据进行加密处理。

目前流行的加密方式有两种:对称加密和非对称加密。

###2.1 对称加密

首先讨论对称加密方式。

对称加密指的是通信双方使用同一套密钥对数据进行加密和解密。

如果使用对称加密就意味着通信的双方必须都知道密钥,才能完成加密和解密操作。

一种典型的场景是:客户端发送密钥至服务器,服务器接受该密钥,之后所有的数据传输都采用该密钥进行加密和解密;

该方法虽然可以解决明文传输的问题,却存在安全隐患。在密钥协商阶段,客户端需要发送密钥给服务器,此时如果攻击者监测到该密钥,就可以使用该密钥来解密之后所有的数据,那么本次经对称加密后的数据传输也就变为明文传输。

因此,如何确保对称加密方式中密钥的安全是此方式中最为核心的问题。

###2.2 非对称加密

接下来我们讨论非对称加密方式。 非对称加密的密钥有公钥和私钥之分,使用公钥加密的数据只有私钥才能解密,同理使用私钥加密的数据只有公钥才能解密。

那么对传输数据进行非对称加密是不是就是安全的呢?

非对称加密一种典型的场景是: 由服务器生成公钥和私钥,并将公钥发送给客户端,之后服务器和客户端之间所有的数据都采用公钥和私钥加密。

接下来我们分析下这种场景。 客户端接受到服务器发来的公钥,然后使用公钥对数据进行加密,根据非对称加密的原理,我们了解这种加密数据只有服务器使用私钥才能解密,因此任何攻击者截取到该信息都无法完成解密,所以任何由客户端向服务器发送的数据都是安全的。

但是,在开始阶段,服务器需要将公钥发送给客户端,在这个过程中,攻击者就有可能会拿到公钥,这就意味之后所有由服务器发给客户端的,经私钥加密的数据,攻击者同样可以用截取到的公钥对其进行解密。

综上,我们得出,采用非对称加密的方式只能保证客户端到服务器的数据是安全的,并不能保证服务器到客户端也是安全的,因此只是一种单向安全的加密方式。

###2.3 混合加密方式

接下来我们探讨采用对称加密+非对称加密混合加密方式。

通过2.1 对称加密方式 一节的分析,我们知道,此种方式最大的问题在于密钥的安全性,一旦密钥被攻击者获取,那么本次传输将变为明文传输。通过2.2 非对称加密方式 我们了解非对称加密只是单向安全的数据传输,即只有客户端到服务器的传输才是安全的。

结合二者的特点,我们提出,通信双方所有的数据传输采用对称加密方式,密钥的传输采用非对称加密方式。

一种典型的场景是:

  • 服务器生成公钥和私钥,并将公钥发给客户端;
  • 客户端生成对称加密的密钥,用公钥对该密钥进行加密,并发给服务器,之后所有的数据传输都使用该密钥进行加密;
  • 服务器收到该客户端发过来的经公钥加密的数据,使用私钥对其解密,从而得到客户端的密钥,之后所有来自该客户端的数据,都使用该密钥解密。

这种混合加密的方式在一定程度上确实能提高数据传输的安全性,但是它就一定安全吗?欲知后事如何,且听下回分解。

输入图片说明

© 著作权归作者所有

共有 人打赏支持
算法与编程之美
粉丝 290
博文 91
码字总数 100037
作品 0
成都
程序员
加载中

评论(4)

算法与编程之美
算法与编程之美

引用来自“Kylor”的评论

好章,谢谢。 如果有图会更好。

@Kylor 谢谢,时间仓促,后期会加上
K
Kylor
好章,谢谢。 如果有图会更好。
算法与编程之美
算法与编程之美

引用来自“vingzhang”的评论

只能防窥视,不能防篡改/伪造;
而且传输公钥的过程可以被中间人攻击,然后中间人介入后续的交互密钥过程,进而获取密钥
谢谢。
vingzhang
vingzhang
只能防窥视,不能防篡改/伪造;
而且传输公钥的过程可以被中间人攻击,然后中间人介入后续的交互密钥过程,进而获取密钥
小米和西工大联手,三篇论文被Interspeech接收

翻译 | 林椿眄 编辑 | 阿司匹林 出品 | 人工智能头条(公众号ID:AI_Thinker) 小米和西北工业大学的“交情”不浅。 去年 7 月,小米和西工大计算机学院的谢磊教授合作,在 arXiv 上提交了一...

AI科技大本营
06/19
0
0
ECCV 2018 德国慕尼黑召开,看看 tutorial 预热吧

雷锋网 AI 科技评论消息,计算机视觉欧洲大会(European Conference on Computer Vision,ECCV)于 9 月 8 -14 日在德国慕尼黑召开,今天已进入会议第二日。会议前两日为 workshop 和 tutori...

MrBear
09/09
0
0
开源中国参与科技部《云计算与大数据》重点项目建设

码云参与科技部《云计算与大数据开源社区生态系统》重点研发项目建设 2018 科技部国家重点研发项目《云计算与大数据开源社区生态系统》(项目编号:2018YFB1004200)下的子课题《安全可控开源...

oschina
07/02
0
3
【政策】北京市科委发布最新征集新一代人工智能、脑认知与类脑技术等六大领域储备课题

去年,在国家层面频频出台一系列人工智能发展规划政策后,2018年地方进入政策落地实施阶段。 11日,北京市科委发布六份通知,征集2018年六大技术领域储备课题,这六大领域分别为: ①认知与类...

技术小能手
01/12
0
0
java程序猿技术栈

一、java 基础知识 1.1 java基础集合类 1.2 jdk1.5、1.6、1.7、1.8 特效比较 1.3 java异常处理 1.4 jvm原理及常见问题 1.5 log4j等日志收集 1.6 jdbc驱动 1.7 jdk反射机制使用和原理 1.8 ja...

南寒之星
2016/11/30
17
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
39分钟前
1
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0
学习设计模式——生成器模式

1. 认识生成器模式 1. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2. 组成: Builder:生成器接口,定义创建一个Product对象所需要的各个组件的操作,...

江左煤郎
昨天
0
0
C语言精要(第二章:基本数据类型)

2.1 C语言基本数据类型 在计算机术语中,把⼆进制数中的某⼀位数又称为⼀个⽐特(bit)。⽐特这个单位对于计算机⽽⾔,在度量上是最⼩的单位。除了⽐特之外,还有字节(byte)这个术语。⼀个...

ryanliue
昨天
0
0
实现下拉菜单多选框效果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><li>工作意愿地:<%-- <c:forEach items="${list}" var="list"><input type="checkbox" value="${list......

lanjian28
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部