我报名参与金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击检查活动概况

什么是加密

考虑以下哪些属于加密办法:AES、RSA、MD5、BASE64、SM4

这几种都是日常开发中常用的数据编码技能,可是只要 AES、RSA、SM4 才干算是加密办法。为什么呢?

一个区分的简略办法便是看编码后的数据是否还能复原,能复原的是加密,由于具有不可逆性、单向恒定性(相同的数据多次核算值不变)的算法一般被应用于文件完好性验证、口令加密以及接下来会讲到的数字签名中。

对称加密

咱们平时碰到的绝大多数加密便是对称加密,比如:指纹解锁,PIN 码锁,保险箱暗码锁,账号暗码等都是运用了对称加密。

  • 对称加密:加密和解密用的是同一个暗码或者同一套逻辑的加密方法。

这个暗码也叫对称秘钥,其实这个对称和不对称指的便是加密和解密用的秘钥是不是同一个。其特点是加密速度快,可是秘钥容易被黑客截获,所以安全性不高。常见的有AES、DES算法。

非对称加密

目前最常见且广泛运用的非对称加密算法是 RSA 算法, 在非对称加密中,密钥一般由供给服务的一方创立。每次创立是一对公钥(public key)和私钥(private key),然后供给者将公钥给用户,自己保留私钥。非对称加密的特点是安全性高,缺陷是加密速度慢。

  • 假设只知道其中一个秘钥是无法推导出别的一个秘钥的

用公钥加密的内容需求用私钥才干解密,用私钥加密的内容需求用公钥才干解密,一般咱们运用公钥加密,用私钥解密

完好比如

举个比如: 现在 Alice 和 Bob 签合同。Alice 首先用 SHA 算法核算合同的【摘要】,然后用自己私钥将摘要加密,得到【数字签名】。Alice 将合同原文、签名,以及公钥三者都交给 Bob。如下图所示:

Bob 假设想证明合同是 Alice 的

  1. 用 Alice 的公钥,将签名解密得到摘要 X。
  2. 然后,Bob 核算原文的 SHA 摘要 Y。Bob 比照 X 和 Y,假设 X = Y 则说明数据没有被篡改过。

在这样的一个进程当中,Bob 不能篡改 Alice 合同。由于篡改合同不但要改原文还要改数字签名,而签名是摘要被加密得到的,假设要从头核算签名,就必须供给 Alice 的私钥。

摘要

一般而言,咱们不会直接对数据自身直接核算数字签名,为什么呢?

由于数字签名属于非对称加密,非对称加密依赖于杂乱的数学运算,包含大数乘法、大数模等等,耗时比较久。

所以一般做法是先将原数据进行 Hash 运算,得到的 Hash 值就叫做「摘要」。

摘要是对原文的证明,避免原文被篡改,从原文到摘要是一个不可逆的进程,也便是无法从摘要反推出原文,一同到达保密的效果。

  • 很少概率磕碰:不同的内容极大概率(绝大多数接近 100%)会生成不同的摘要。

数字签名

数字签名是对摘要的加密,一般在数字签名中,咱们运用私钥加密(相当于生成签名),公钥解密(相当于验证签名),「签名」的效果自身也不是用来确保数据的机密性,而是用于验证数据来源的,避免数据被篡改的,也便是承认发送者的身份。

举个比如,Alice 和 Bob 签署一份合同,假设 Alice 将合同生成摘要,再用自己的私钥加密摘要,得到一个密文串,那么这个串便是 Alice 对合同的数字签名(DIgital Sign)

假设原文没有被修改,那么下面的条件会满足:

签订合一同的原文摘要 = 数字签名 + 公钥解密
签订合一同的原文摘要 == 摘要算法算出的当前原文摘要

进程:

  1. 接受者 Alice 收到后,取下数字签名,一同用 Bob 的公钥解密,得到「摘要1」,证明确实是 Bob 发的
    1. 假设运用 Bob 的公钥验证签名犯错,那么签名必定不是 Bob 的私钥生成的
    2. 运用数字签名,咱们可以鉴别消息的发送者,也便是说 黑客无法伪装发送者进行发送数据(并不必定) ,也无法篡改。
  1. 再对邮件内容运用相同的散列函数核算「摘要2」,与上面得到的「摘要1」进行比照,两者一致就说明信息未被篡改。

这样两步分证明发送者身份和确保数据未被篡改。

数字证书

数字证书叫做「公钥的数字签名」, 引用百度百科解释:数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来辨认对方的身份。

冒充危险

可是在上面描绘的进程当中,仍然存在着一个十分显着的信赖危险。无法消除冒充危险

考虑如下场景:

  1. 进犯者把服务端的公钥阻拦,并保存下来。
  2. 进犯者假形成服务端,把自己的公钥发送给客户端。
  3. 进犯者阻拦运用不合法公钥加密后的对称密钥,解密后得到对称密钥明文,并保存下来
  4. 进犯者运用服务端公钥从头加密对称密钥,假形成客户端发送给服务端。

这番操作后,进犯者就能在客户端和服务端都不知情的状况下,得到了对称密钥。在这种场景下,进犯者从被动进犯的偷听,转为主动进犯的冒充,让客户端和服务端都误以为一向在跟对方通讯。

CA证书

国际上有一个奥秘的安排:CA组织 。便是它会给网站颁布身份证。当某个网站想要启用HTTPS协议的时分,需求向CA组织恳求一份证书,这个证书便是数字证书。

数字证书 包含了证书持有者信息、网站公钥和有效期等等等信息。

  • CA 颁布的数字证书咱们一般称作 CA 证书

如上图所示:

  1. Alice 将自己的恳求提交给CA组织,产生证书的原文。
  2. CA组织用自己的私钥签名 Alice 的恳求原文,得到带有签名信息的证书。
  3. Bob 拿到带签名信息的证书,经过预存的CA组织的公钥进行解密,获得 Alice 证书的摘要。

CA证书-验证签名

如下图,假想服务器为Alice,浏览器为Bob

Bob 进行验签。

  • 用 CA 公布的公钥对证书签名进行解密,得到数字摘要T。再运用同样的算法对证书明文信息核算得出数字摘要S。比照数字摘要T和数字摘要S是否持平。

验签经过,Bob 就可以承认 Alice 的证书的确是CA组织签发的,假设 Bob 也信赖这个CA公证组织,信赖关系和签约就成立。

CA证书-通讯进程

总结上述进程如下:

双向认证

非对称加密常用应用场景便是双向认证。所谓的双向认证便是不仅服务端要验证客户端的身份,客户端也要验证服务端的身份。说白了便是客户端和服务端各自生成一个密钥对,私钥自己保存,公钥发给对方。这种状况一般用在体系与体系的对接上。

两者比照

  1. 非对称加密中公私钥都可以加密,那么什么时分用公钥加密,什么时分用私钥“加密” ?

    • 加密场景,那么必定希望只要我才干解密,他人只能加密。即私钥解密,公钥加密。
    • 签名场景,既然是签名,就希望只能我才干签名,他人只能验证。即私钥签名,公钥验签
  2. 什么是数字签名,数字签名的效果是什么?

    • 数字签名便是运用私钥对数据摘要进行签名,并顺便和数据一同发送。
    • 可以起到防篡改、防伪装、防否认的效果
  3. 为什么要对数据的摘要进行签名,而不是直接核算原始数据的数字签名?

    • 数据或许比较大,签名是运用非对称加密算法,比较耗时
    • 避免第三方运用公钥解开签名后,拿到原始数据
  4. 什么是数字证书,数字证书存在处理了什么问题?

    • 数字证书便是由 CA 组织运用自己私钥,对证书恳求者的公钥进行签名认证。
    • 数字证书处理了怎么安全分发公钥的问题,也奠定了信赖链的基础。

HTTPS协议

HTTPS中传输数据时不会运用非对称加密加密传输数据,传输数据时有或许数据自身很大,那样的话非对称加密更耗时了,所以传输数据时不会运用非对称加密的方法加密。

加密扩展

HTTPS的加密中,加密传输的数据自身运用的是对称加密,加密对称秘钥时运用的非对称加密。

一般状况,非对称加密需求更多的运算资源。因此很多协议运用非对称加密处理最中心的安全问题,再用对称加密处理其他问题,最典型的事例便是HTTPS协议。

非对称加密+对称加密 = 雏形

假定服务器预存了一套 公钥(假定叫 A+ ) 和 私钥(假定叫 A- )

1、浏览器向服务器发起恳求;

2、服务器将自己的公钥A+ 回来给浏览器;

3、浏览器在本地生成一个密钥B,然后使用公钥A+ 对密钥B进行加密,加密之后传输给服务器;

4、服务器收到数据,使用私钥A-对数据进行解密,拿到浏览器生成的密钥B;

5、之后两边的通讯,都用密钥B进行。

完好版通讯进程

经过证书来确保互相的真实性,详细请看上述【CA证书-通讯进程

为什么可以相信一个 HTTPS 网站?

当用户用浏览器翻开一个 HTTPS 网站时,会到方针网站下载方针网站的证书。

接下来,浏览器会去验证证书上的签名,一向验证到根证书,假设根证书被预装,那么就会信赖这个网站。

也便是说,网站的信用是由操作体系的供给商、根证书组织、中心证书组织一同在担保。

特别注意的是,假设犯罪分子设法在你的个人电脑上安装了它的根证书,那后果就严峻了,它可以冒充成任何网站。

为什么浏览器中我按个F12仍是能看到明文?

所谓的HTTPS,其实便是HTTP + SSL/TLS两种协议的合体,一同,HTTP协议是应用层协议,而SSL/TLS是传输层协议。

那问题的答案就很清晰了,在你可以在浏览器上面检查网页之前,报文经过了你的传输层,SSL/TLS现已对报文进行了解密处理(快递现已开包)。之后所以不管是在浏览器上出现,仍是你按F12检查源码,都是HTTP协议的工作(快递里边的东西都现已到你手上了,对你而言不会再有啥秘密)

参考

本文图中部分内容和图总结自

  • 《假设让你来设计SSL/TLS协议》,作者:元闰子
  • 《核算机网络通关 29 讲》,作者:林䭽