昨天写了一篇关于《秘钥与公钥》的文章,写的比较简单好理解,有点儿像过家家,如果详细探究起来会有不少出入,今天就来详细的说明一下数据加密的原理和过程。这个原理就是大名鼎鼎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 制作正文密文。