行测 测试用例 Mxnet 数据算法 OpenCV4 postgresql web arraylist postman linux内存管理 jquery获取元素宽度 spark文档 wps临时文件 oracle连接字符串 linux获取当前时间 vue使用bootstrap matlab不等于怎么表示 python连接mysql python运行环境 数据库教程 python参数 python等待10秒 python教程推荐 python读取本地文件 java编程环境 java集合 java的map java中string的方法 java文件路径 java网课 java异常 系统集成项目管理工程师教程 数据库系统概论第五版 winhex使用教程 eml文件阅读器下载 整站系统 摩斯密码翻译器 摩斯密码在线翻译 gunzip vue路由跳转
当前位置: 首页 > 学习教程  > 编程语言

HTTPS入门-安全性保证

2021/1/13 20:19:17 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

HTTPS入门-安全性保证基础和假定对称加密算法的问题安全的传输key可信赖的第三方CA基础和假定 中间人:能够在任意两方通信节点上截获并篡改数据的假想敌 对称加密算法:用对称加密的key加密的数据仅能被同样的key解密 此处假定暴力破解无效 非对称加密算…

HTTPS入门-安全性保证

    • 基础和假定
    • 对称加密算法的问题
    • 安全的传输key
    • 可信赖的第三方CA

基础和假定

中间人:能够在任意两方通信节点上截获并篡改数据的假想敌
对称加密算法:用对称加密的key加密的数据仅能被同样的key解密 此处假定暴力破解无效
非对称加密算法有如下特点: 同样假定不能破解
用公钥加密的数据,私钥可以解密,但公钥不行!
用私钥加密的数据,公钥可以解密(用私钥也可以解密,不过这个用不上)
有关加密算法原理可以拜读–结城浩《图解密码技术》

对称加密算法的问题

如果client和server都知道且仅这两方知道一个用于对称加密的key,那么问题解决,两边仅仅用这个key加密传输的数据即可。
但是这个key是需要通过网络传输的,如果这个key在网络上经过明文传播,那么中间人就能窃取到这个key。
这样,不但client-server的所有通信都能被截获,同样也可以被篡改。

安全的传输key

考虑下面的交互流程:
1.client发起请求
2.server返回一个pubkey
3.client用pubkey加密自身选定的对称加密key并放到server
4.server用seckey解密获取client选定的对称加密key
安全且愉快的通信
说明,首先第一点是必须的,不可以从第三点直接开始,因为client无法预存server的pubkey

上述流程是有问题的。问题出在第二步第三步
第二步中,中间人截取了server返回给client的pubkey,并用自己的pubkey2替换。
然后第三步,client用自己收到的pubkey2加密自己选定的对称密码key传递给服务端,此时中间人截获并篡改成key2。
此后:
客户端会以为通信的对称密码为key,实际上它一直在和中间人交互。
服务器会以为通信的对称密钥为key2,实际上它一直在与中间人交互。

所以仅仅两个密码算法是不够的

可信赖的第三方CA

pubkey被篡改是导致上述通信不安全的因素。如何让pubkey绝对安全?——不传输

其实也不是不传输,是传输的对象变了。流程如下:
1.client向server发起https请求
2.server收到请求,选定pubkey,将此pubkey用pubkeyCA加密并发给可信机构CA
3.CA验证server身份,并用自己的privatekeyCA加密pubkey生成证书(证书还有其他信息,忽略),返回证书给server
4.server使用pubkeyCA解密证书,核实证书包含的pubkey是否是自身传给CA的key,如果是则继续
5.server将证书传回到client
6.client通过pubkeyCA解密证书获取server选定的pubkey。
同前

由于第6步client获得的pubkey一定是server选定的,所以后续的通信不会再有任何问题。
问题:如果第2步被中间人窃取,中间人将pubkey替换成pubkey2,不是就出现了同样的问题?实际上中间人无法知道pubkey的内容,因为pubkey是被CA的公钥加密后的

本质上讲,这种方案的可行性依赖于CA机构的pubkeyCA无需传递。既没有出现CA将pubkeyCA传递给服务器,也没有出现CA将pubkeyCA传递给客户端。——也就是不传输
那client如何知道CA的pubkeyCA呢?
顶级的CA公钥在OS中就写死了,,see https://www.zhihu.com/question/47232448

补充:既然可以实现不传递pubkey,为什么不直接客户端预留服务端的pubkey,还搞什么证书?
服务器太多了存不了呗


本文链接: http://www.dtmao.cc/news_show_600275.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?