前语

此次不深入源码、不剖析原理、只厘清一些易混淆概念及其相关。
本次将从通讯演化前史的视点出发,一步步阐述概念及其效果。
经过本篇文章,你将了解到:

1、明文通讯
2、密文通讯
3、对称加密
4、非对称加密
5、音讯摘要
6、数字签名
7、CA与数字证书
8、总结

1、明文通讯

大部分时分,咱们沟通都是靠嘴对嘴,信息彻底暴露在他人的耳朵里。

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

拉拉家常无关紧要,但要是涉及重要、私密的信息就不能这姿态了。
此刻或许想到,那咱们就说悄悄话吧。

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

2、密文通讯

悄悄话只能是俩人近距离才干实现,若是天各一方怎样才干将信息安全送给对方呢?
咱们或多或少地看过谍战片,那会儿卧底怎么将信息传给安排呢?答案是经过暗码本。

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

两边约好好用一个暗码本,暗码本其实是个映射联系:

1、发送方经过暗码本将明文信息转为不易被理解的信息,称为密文。
2、接收方接收到密文后,经过暗码本映射联系反推出明文。

此刻两边通讯是经过加密的,咱们称为密文通讯。第三者想要破解信息,就需求拿到暗码本或是破译出暗码本映射联系,从而将密文转为明文。

3、对称加密

跟着科学技术的发展,人们的沟通由信件逐渐过渡为电子通讯。

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

当咱们在键盘上敲击一段文字后,这段信息会经过网络发送给对方,怎样保证这段信息不被他人容易知道呢?
咱们想到了加密,两边在传输信息前商量好一个密钥,发送方用密钥将信息进行加密构成密文后再发送,接收方在收到密文后运用之前洽谈的密钥进行解密。

由于加密明文、解密密文运用同一个密钥,咱们称此种加密方法为对称加密方法。

举个简略比方:

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

小明现在将信息进行对称加密:

1、设定密钥为:X。
2、设定加密算法为:将每个字符+X。
3、假设采用密钥 X=1。

那么将明文hello,每个字符+1,得出如下结果:
hello—>ifmmp

小红拿到密文ifmmp后,她知道密钥X=1,因而她将密文每个字符-1,得出如下结果:
ifmmp—>hello

至此,小明和小红成功进行了沟通。

此刻小刚想知道小明和小红聊了啥,所以截获了信息:

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

可是由于小刚拿到的是密文信息:ifmmp。由于不知道密钥,因而无法反推出明文:hello。因而小明和小红的信息沟通安全得到了保证。

当然对称加密算法没那么简略,常见的对称加密算法有如下几种:

1、DES(Data Encryption Standard) 数据加密规范,强度比较低,简略被破解,目前运用比较少。
2、3DES(TDEA,Triple Data Encryption Algorithm) 三重数据加密算法,是DES的增强版,对一块数据运用3个不同的密钥加密。
3、AES(Advanced Encryption Standard) 高级加密规范,当前干流的对称加密算法。
4、RC4 流加密算法,由Ron Rivest 大神规划的。
5、Blowfish 块加密算法,由Bruce Schneier 大神规划的。
6、SM4 分组暗码算法,由我国规划并由国家暗码管理局发布。

好像运用对称加密就可以解决咱们通讯安全问题,但引进了另一个问题:

小明和小红怎么约好对称加密的密钥呢?\color{Red}{小明和小红怎么约好对称加密的密钥呢?}

4、非对称加密

是否有种方法可以光明磊落地传递信息呢?
答案是:非对称加密。

1、非对称加密有两个密钥,一个是公钥(public key),另一个是私钥(private key)。
2、用公钥加密后的密文只能由私钥来解密。
3、用私钥加密后的密文只能由公钥来解密。
4、公钥可以公布出来供其他人运用,而私钥却是需求保密,不能被他人获取。

因加密与解密运用的不是同一个密钥,故此种公私钥加密方法称为:非对称加密。

接着来看看小明和小红怎么运用非对称加密来实现安全通讯。
小明和小红分别生成自己的公私钥:

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

1、小红将自己的公钥告知小明。
2、小明运用小红的公钥加密后发送给小红。
3、小红运用自己的私钥来解密,得出明文。

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

由上可知,用小红的公钥加密的信息只能由小红的私钥解开,只要小红的私钥没有走漏,那么小明和小红的通讯是安全的。
当然了,真正非对称加密算法并没有那么简略,常见的几种非对称加密算法:

1、DSA(Digital Signature Algorithm)是 Schnorr 和 ElGamal 签名算法的变种。
2、ECC(Elliptic Curves Cryptography),椭圆曲线暗码编码学。
3、DH算法,一般用于密钥交流。
4、RSA(Ron Rives,Adi Shamir,Leonard Adleman)三位大神一同提出的,命名取姓氏最初字母。RSA 既可以交流密钥,也可以用作数字签名,是盛行最广的非对称加密算法。

5、音讯摘要

小明和小红的通讯真是安全的吗?
此刻小刚又来搞事情了:

1、由于小红的公钥是公开的,意味着小刚也能拿到公钥。
2、小刚截获了小明发送给小红的信息,尽管小刚不能解密,可是他可以假造信息。
3、小刚将假造好的信息用小红的公钥发送小红。
4、此进程中,小明和小红都不知道小刚的存在,然而小刚背地里暗戳戳地替换了信息。

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

以上信息标明:

1、即使是密文,信息也简略被假造。
2、小刚这种行为是中间人进犯(Man-in-the-MiddleAttack MITM)。

小明和小红一算计,想出来了一个办法:

1、小明运用Hash算法将明文进行哈希,生成音讯摘要。
2、小明将明文用小红的公钥加密并和音讯摘要一同发给小红。
3、小红收到信息后先用私钥解密,解密出来的明文运用Hash算法生成音讯摘要,并与小明发过来的音讯摘要比照,若是共同则标明音讯没被更改。

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

音讯摘要(Message Digest)特色:

1、经过音讯摘要算法,将一组不定长的源信息生成定长的方针信息。
2、不同的源信息生成的方针信息不共同。

常见的音讯摘要算法:MD5、SHA1。

6、数字签名

尽管采用了音讯摘要,可是小刚仍然可以自己假造信息,并生成对应的音讯摘要,小红收到后验证摘要是正确的,便认为是小明发的,这种做法仍是有缝隙。
在前边用到了小红的公钥、私钥,而没用到小明的公钥、私钥。
在音讯摘要的基础上,想办法让小明的公私钥也参加到通讯进程中来:

1、小明将公钥告知小红。
2、小明将音讯摘要运用自己的私钥加密并运用小红的公钥加密明文,两者同时发给小红。
3、小红收到信息后先用自己的私钥解密出明文,然后将加密往后的音讯摘要运用小明的公钥解密。
4、比照音讯摘要是否共同。

与音讯摘要进程比照,此刻多了一个过程:

用小明的私钥加密音讯摘要。

用私钥加密的信息的进程咱们称之为:数字签名
数字签名具有不可狡赖性的特色。依据前面的描绘,用私钥加密的信息,只要对应的公钥才干解开。
因而,若是小红运用了小明的公钥解开了密文,那么阐明该音讯肯定是小明发过来的。反之,小明运用私钥加密后发出去,代表这信息是确认是自己发的,这便是他的签名。

常见的数字签名算法:RSA、DSA、ECDSA。
老规矩,用图来看看小明与小红怎么运用数字签名的。

小明发送信息进程:

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

小红处理信息进程:

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

由上可知:
数字签名有两个效果:

1、证明音讯是某个确定的实体发送的。
2、证明音讯是没有被串改。

整个流程小明的公私钥、小红的公私钥都参加了。
由于小刚没有小明的私钥,所以他无法生成小明的数字签名,最终无法经过小红对数字签名的验证。

7、CA与数字证书

这么看来小刚是无能无能为力了?非也!
回顾一下之前说的对称加密的痛点:怎么传递对称密钥?
实际上非对称加密也存在问题:怎么传递公钥?
可见,无论是对称加密仍是非对称加密都需求解决密钥传递问题。

若是小刚假造了小红的公钥,状况如下:

1、小明在获取小红公钥的时分,被小刚替换为自己的公钥。
2、小明用小刚的公钥(他以为是小明的)对信息进行加密,并用自己的私钥对摘要做数字签名。
3、小刚收到信息后用自己的私钥解密。
4、小刚用小明的公钥加密,并用自己的私钥对摘要进行数字签名。
5、相同的方法,小刚也欺骗了小红。
6、最后,小刚愉快地当着中间人…

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

由于公钥被假造了,所以小刚可以为所欲为。
小明怎么才干知道自己收到的公钥是小红的呢?
这时分就需求引进权威机构:CA(Certificate Authority) 证书授权中心

有了CA,小红发布公钥的流程变了:

1、小红将自己的公钥提交给CA。
2、CA 确认小红的身份信息,比方安排机构、姓名、城市等。
3、将以上信息和小红的公钥用CA的私钥进行签名生成数字证书
4、证书返给小红。

用图表示如下:

数字签名/数字证书/对称/非对称加密/CA 等概念明晰

图上5个过程,有些同学对第4步不太理解:

小明验证小红的证书,由于证书是CA签过名的,那么需求CA的公钥来解密,那么CA 的公钥又是怎么传给小明的?

好像又回到了原点:怎么安全传递公钥的问题。
其实,信赖是有起点的。
CA 不仅为他人生成证书,也生成自己的证书,CA 为自己生成的证书里包含了CA的公钥。
CA 的证书在电脑、手机等设备进场的时分就会预置在体系里、浏览器里。

因而,当小明验证小红的证书时,会在体系里寻觅可以解开小红证书的CA 公钥,若是找到则阐明小明证书的颁发机构是可信赖的,已然信赖了该证书,那么从证书里取出的公钥,小明也认可是小红的。
至此,小红的公钥就安全地传给了小明,后边就可以愉快地通讯了。

体系里找不到对应的证书会有什么影响?咱们还记得12306网站刚开始运转的时分,用浏览器访问时浏览器会提示说该网站不受信赖,12306提示用户装置自己的根证书。
这也从旁边面阐明了,咱们不要容易更改体系里的证书。

8、总结

对称加密存在密钥传送被走漏的危险,非对称加密尽管不需求传递私钥,可是需求传递公钥,也存在被中间人进犯的危险。
为此,引进了CA 生产证书解决了非对称加密公钥传递问题。

然后非对称加密速度慢,合适加密数据量少的信息,对称加密速度快,合适加密数据量大的信息。
怎么将对称加密与非对称加密结合起来打造一个安全的通讯链路,下篇咱们将重点剖析其间的典型:SSL/TLS 的原理与应用。

您若喜爱,请点赞、关注,您的鼓舞是我前进的动力