每周五部门内有一个分享会,这周轮到我了,不知道讲些什么东西,因为不全是码农,所以讲写程序讲不了(目前这水平估计也只能讲Hello World),刚好上次回答了一个关于网页嗅探中间人攻击的问题,我自己的回答一般般,但是看到 网页嗅探中间人攻击-cevin的回答 还是有启发的,顺便查了点资料,整理一下。
PS : 估计有不对的地方,看看就可,毕竟菜鸟来着
一.简单加密(对称加密)
就是加密解密用同一个密钥。双方用同一个密钥,如果不知道密钥,是无法获知消息内容的。
但是交换密钥的过程,消息内容一定是明文的。
那么如果处于不安全的网络环境,如果一开始,交换密钥的消息被截获,那么之后的安全也无从谈起了
漏洞:交换密钥的过程不安全
二.非对称加密(非对称加密算法-百度百科)
具体的描述见百度百科,简单的说是:公钥加密的内容,只能私钥解密 / 私钥加密的内容,只能公钥解密
解决 简单加密 中出现的问题:
双方交换公钥,然后通信,分别用对方的公钥加密数据,发送给对方,接收方再用自己的私钥解密。
公钥加密的数据无法再用公钥解密,所以,即时你能监听到密钥的内容,你也不知道消息内容。
因为你并没有解密的钥匙
漏洞:中间人攻击(中间人攻击)
攻击者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中心对证书有法律上的保证安全的责任)。所以,回到二里面,攻击者要想监听你的消息,必须要对证书进行替换或者篡改,但是替换或者篡改过的证书,就通不过验证。
(证书这块写得有点乱,有些我自己还有点迷糊)