首页 > 编程知识 正文

经典加密算法,量子加密原理

时间:2023-05-06 15:19:06 阅读:53431 作者:491

HTTP、HTTPS在我们的日常开发中经常接触。

在典型的安卓APP开发中,众所周知在请求API网络接口时很多人使用HTTP协议; 使用浏览器打开网页也是利用HTTP协议。 看来HTTP真的被广泛使用了呢。 但是,HTTP不安全。 使用网络清理工具,可以了解正在传输的内容,并查看列表。 例如,我经常使用Fiddler抓住包,收集有趣的API界面。

那么,如何确保HTTP的安全性呢? 几乎所有人都在脱口而出。 使用HTTPS协议。 99.9%的人知道HTTPS会加密传输的内容,但接下来询问具体的加密过程和步骤,很多人会变得哑口无言。

为了防止这种尴尬的情况,今天请仔细看看这个内容。 以后你可以强迫我,哈哈!

实体

加密类型

从科普角度看,加密算法的类型基本分为两种:

对称加密,代表性的是AES加密算法;

不对称加密,常用的RSA加密算法是不对称加密;

对称加密是指双方都有共同的密钥,用该密钥完成加密和解密。 这种加密方式速度很快,但比不对称加密更安全。

例如,我现在正在学习tmdct。 这里有数学题的答案。 123。 他想把答案告诉一直暗恋着的swdds。 所以,他们双方在考试开始前,约定了456这个钥匙。 那么,tmdct将回答内容设为密钥加密,即123 456=579,并将579写在小笔记中并扔给swdds。 这个时候,别人捡到一个小纸条,不知道他们是加密传输的,就看上面的579,误以为答案是579; swdds捡到的情况下,她取出密钥解密,用579 - 456=123得到正确的答案。

这被称为对称加密,加密和解密效率高,速度快,但如果双方任何一方不小心泄露了密钥,任何人都可以知道传输内容。

在介绍对称加密之后,让我们看看什么是非对称加密。

不对称加密是指有两个密钥、公钥和私钥。 秘钥自己藏着,不告诉任何人; 公钥可以向他人公开。

经过上次的篡改,swdds发现对称加密如果密钥泄露了就太可怕了。 所以她和tmdct决定使用不对称加密。 swdds生成公钥和私钥对,公开公钥后,tmdct得到公钥。 tmdct获得公钥后,将答案用公钥加密传输给swdds,swdds用自己的私钥解密,得到答案结果。 在此过程中,如果其他人获得了传输的内容,则无法解密,因为他们只有swdds公钥。 因此,也得不到答案。 只有swdds才能解密。

因此,非对称密码与对称密码相比安全性高,但加密和解密所需时间长,速度慢。

对称加密和不对称加密的具体应用还很清楚。 因为所属的公司在进行金融支付,所以加密和解密基本上每天都见面。

HTTPS

加密类型结束后,看看HTTPS。

我们先来看看公式:

HTTPS=HTTP SSL

从这个公式可以看出,HTTPS和HTTP不如SSL。 因此,可以推测HTTPS的加密是在SSL中进行的。

所以我们的目的是知道我们在SSL上做了什么吗?

这从CA证书开始。 CA证书其实是数字证书,是CA机构颁发的。 关于CA机构的权威性,当然所有人都信任它。 CA证书通常包括:

的发行机构,版本

证书用户

证书的公钥

证书有效期

证书的数字签名散列值和签名散列算法

.

正好说说客户端如何验证CA证书的步骤吧。

CA证书的哈希值实际上是用证书的密钥加密的值(证书的密钥在CA证书中没有)。 然后,客户端在得到证书后,用证书的公钥对其散列值进行解密,得到散列- a,然后用证书内的签名散列算法生成散列- b。 最后比较混列- a和混列- b两个值。 如果等于,则证明证书正确;如果服务端不可信,则该证书可能是错误的,并且可能已被篡改,浏览器会提示您,无法建立HTTPS连接。 此外,还将检查CA证书的有效时间和域名是否匹配等。

现在,我们将详细介绍在HTTPS中建立SSL握手的过程,假设您有客户端a和服务器b。

首先,客户端a访问服务器b。 例如,在浏览器中打开网页https://www.baidu.com。 此时,浏览器为客户端a,百度的服务器为服务器b。 此时,客户端a生成随机数1,并将随机数1、自己支持的SSL版本号、加密算法等信息传递给服务器b。

服务器b知道这些信息后,检查这两种加密算法,服务端也生成随机数b,并将随机数b和CA颁发给自己的证书一起返回给客户端a。

客户端a得到c

A 证书后,会去校验该 CA 证书的有效性,校验方法在上面已经说过了。校验通过后,客户端生成一个随机数3 ,然后用证书中的公钥加密随机数3 并传输给服务端 B 。

服务端 B 得到加密后的随机数3,然后利用私钥进行解密,得到真正的随机数3。

最后,客户端 A 和服务端 B 都有随机数1、随机数2、随机数3,然后双方利用这三个随机数生成一个对话密钥。之后传输内容就是利用对话密钥来进行加解密了。这时就是利用了对称加密,一般用的都是 AES 算法。

客户端 A 通知服务端 B ,指明后面的通讯用对话密钥来完成,同时通知服务器 B 客户端 A 的握手过程结束。

服务端 B 通知客户端 A,指明后面的通讯用对话密钥来完成,同时通知客户端 A 服务器 B 的握手过程结束。

SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户端 A 和服务器 B 开始使用相同的对话密钥进行数据通讯。

到此,SSL 握手过程就讲完了。可能上面的流程太过于复杂,我们简单地来讲:

客户端和服务端建立 SSL 握手,客户端通过 CA 证书来确认服务端的身份;

互相传递三个随机数,之后通过这随机数来生成一个密钥;

互相确认密钥,然后握手结束;

数据通讯开始,都使用同一个对话密钥来加解密;

我们可以发现,在 HTTPS 加密原理的过程中把对称加密和非对称加密都利用了起来。即利用了非对称加密安全性高的特点,又利用了对称加密速度快,效率高的好处。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。