每周五部门内有一个分享会,这周轮到我了,不知道讲些什么东西,由于不全是码农,因此讲写程序讲不了(目前这水平估计也只能讲Hello World),恰好上次回答了一个关于网页嗅探中间人攻击的问题,我本身的回答通常般,可是看到 网页嗅探中间人攻击-cevin的回答 仍是有启发的,顺便查了点资料,整理一下。算法
就是加密解密用同一个密钥。双方用同一个密钥,若是不知道密钥,是没法获知消息内容的。
可是交换密钥的过程,消息内容必定是明文的。
那么若是处于不安全的网络环境,若是一开始,交换密钥的消息被截获,那么以后的安全也无从谈起了
漏洞:交换密钥的过程不安全segmentfault
具体的描述见百度百科,简单的说是:公钥加密的内容,只能私钥解密 / 私钥加密的内容,只能公钥解密
解决 简单加密 中出现的问题:安全
双方交换公钥,而后通讯,分别用对方的公钥加密数据,发送给对方,接收方再用本身的私钥解密。 公钥加密的数据没法再用公钥解密,因此,即时你能监听到密钥的内容,你也不知道消息内容。 由于你并无解密的钥匙
漏洞:中间人攻击(中间人攻击)服务器
攻击者C事先生成两对密钥(C1,C2),A 和 B通讯,交换公钥,若是刚好攻击者节点能截获数据报文(广域网并不存在一个固定的链路,可是若是攻击者是你的网关的话,或者局域网有人进行ARP欺骗,数据流经攻击者节点是必然的),那么攻击者能够将报文里的公钥给替换成本身的密钥(此时密钥交换过程,是明文的),而后保存原来的密钥
本身画了个图,不要吐槽。原本正常交换的密钥,而后通过攻击者C的时候,被替换了,而后两边收到的都是C的公钥,A和B密钥交换完成,A向B传输加密报文的时候,报文流经C(此时报文是 用 C2.public 加密的),C用 C2.proteced 解密,获知报文内容,而后用 B.public 加密,再发送给B。
整个过程下来,AB的通讯内容,仍是被泄露了网络
这里问题的根源就在于,你们均可以生成(公钥、私钥)对,没法确认公钥对究竟是谁的。 为了解决这个问题,就有了数字证书这个东西。 数字证书包含如下内容: (1)证书的版本信息 (2)证书的序列号 (3)证书所用的签名算法 (4)证书的发行机构 (5)证书的有效期 (6)证书全部人的名称 (7)证书全部人的公开密钥 (8)证书发行者对证书的签名 HTTPS使用的是SSL证书,是数字证书的一种,还包括了域名等信息,颁发数字证书的过程就是 颁发机构(CA中心)把你提交的 1-7 使用 CA中心的私钥 加密签名 生成8,CA中心的私钥是严格保密的,防止滥用,公钥则是公开的,这样就能够保证除了CA中心,其余人或机构没法颁发证书,而CA机构也有一个证书,CA中心的证书是内置在操做系统里面的,操做系统开发商会根据一些权威安全机构的评估选取一些信誉很好而且经过必定的安全认证的证书发布机构,将他们的证书内置在操做系统里面。 而后当你访问一个HTTPS站点的时候,服务器只须要将证书给你,你用CA中心的证书(证书中包含公钥)来验证站点的证书,而CA中心的证书是安装操做系统中就已经存在的,是可信任的(毕竟攻击者很难物理接触你的机器),由这个证书颁发出来的证书也是可信任的(CA中心对证书有法律上的保证安全的责任)。因此,回到二里面,攻击者要想监听你的消息,必需要对证书进行替换或者篡改,可是替换或者篡改过的证书,就通不过验证。
(证书这块写得有点乱,有些我本身还有点迷糊)加密