手机版

深入解释HTTPS的加密算法

时间:2021-09-04 来源:互联网 编辑:宝哥软件园 浏览:

HTTPS简介

实际上,HTTPS由两部分组成:HTTP SSL/TLS,即在HTTP中加入一个处理加密信息的模块。服务器和客户端之间的信息传输将通过TLS加密,因此传输的数据都是加密数据。

目的有二:一是建立信息通道,保证数据传输安全;另一个是确认网站的真实性。任何使用https的网站,都可以通过点击浏览器地址栏中的锁定标记,查看认证后网站的真实信息,也可以通过CA机构颁发的安全印章查询。

密码学在计算机科学中被广泛使用,而HTTPS是一种基于密码学的安全通信协议。HTTPS最早是网景公司在1994年提出的,现在在很多互联网厂商的推动下,HTTPS已经广泛应用于各种网站。在全面了解HTTPS之前,有必要了解一些密码学相关的概念,如明文、密文、密码、密钥、对称加密、非对称加密、抽象、数字签名和数字证书。

密码

密码学中的密码和我们日常生活中的密码不太一样。计算机术语“密码”是一种用于加密或解密的算法,而我们日常生活中使用的“密码”是密码,是一组用于身份验证的文本字符串。这里我们将讨论前者:密码。

钥匙

密钥是在使用密码算法的过程中输入的参数。在相同的密码算法和不同的密钥计算下,相同的明文会产生不同的密文。许多众所周知的密码算法都是开放的,密钥是决定密文是否安全的重要参数。通常钥匙越长越难破解。比如一个8位密钥最多有256种情况,用穷举法很容易破解。众所周知的DES算法使用的是56位密钥,目前还不是一种安全的加密算法,主要是因为56位密钥太短,几个小时就能破解。密钥分为对称密钥和非对称密钥。

明文/密文

明文是加密前的原始数据,密文是密码运算的结果,成为密文

对称密钥

对称密钥算法也称为共享密钥加密。对称密钥在加密和解密过程中使用相同的密钥。常见的对称加密算法有DES、3DES、AES、RC5和RC6。对称密钥的优点是计算速度快,但也有缺点。密钥需要在通信的两端共享,这样对方才能知道密钥是什么,然后对方才能正确解密。如果所有客户端共享同一个密钥,那么这个密钥就像一个主密钥一样,可以用一个密钥破解每个人的密文。如果每个客户端和服务器分别维护一个密钥,那么服务器需要管理成千上万个密钥,这会给服务器带来噩梦。这里有一个简单的对称加密,将明文加密成ASCII。

#加密方式:基于ASCII,键值def encrypt(plain _ text,Key): # encryption cipher _ text=[]为c plain _ text : cipher _ text。追加(字符串(order(c)键))返回“”。join(cipher _ text)def decoder(cipher _ text,Key): # decrypt plain _ text=[]for c cipher _ text . split('): plain _ text . append(chr(int(c)Key))返回' '。join(纯文本)If _ _ name _ _=' _ _ main _ _ ' : print ' cipher _ text 3360 ',encrypt(' abcdef ',0) print' plain _ text3360 ',decrypt(' 97 98 99 100 101 102 ',0

公钥密码系统,也称为公钥密码系统,使服务器能够生成一对密钥,其中一个存储在服务器中,只有它自己知道,另一个是公钥,可以自由发布给任何人使用。用公钥加密的客户端明文的密文需要用私钥解密。非对称密钥是加密和解密过程中的不同密钥。加密和解密是不对称的,所以称为非对称加密。与对称密钥加密相比,非对称加密不需要在客户端和服务器之间共享密钥。只要私钥不发给任何用户,即使公钥在互联网上被截获,也无法解密。只有被盗的公钥没有用。常见的非对称加密是RSA,非对称加密和解密过程:

服务器生成的配对公钥和私钥存储在服务器中,公钥发送给客户端。服务器使用公钥加密明文并将其传输到服务器。服务器使用私钥解密密文以获得明文数字签名

当数据在浏览器和服务器之间传输时,有可能在传输过程中内容会被假冒的小偷所替代。我们如何确保数据是由真实的服务器发送的,而不是交换的?同时,如何确保传输的数据没有被篡改?为了解决这两个问题,我们必须使用数字签名,这就像日常生活中的签名一样。一旦你的名字留在合同上,法律上就认定是你签的字,谁也不能伪造。那么计算机中的数字签名呢?数字签名用于验证传输的内容是否是真实服务器发送的数据,发送的数据是否被篡改。它做这两件事,这是一个非对称加密的应用场景。但是,他使用私钥对其进行加密,并通过将其与公钥进行匹配来解密。

第一步:服务器对消息进行哈希处理,生成摘要信息,并用私钥对摘要信息进行加密,生成签名。服务器将签名和消息一起发送给客户端。

第二步:接收到数据后,客户端提取签名并用公钥解密。如果Digest2可以正常解密,可以确认是对方发送的。

步骤3:客户端提取消息文本并执行相同的哈希处理,并将获得的摘要信息摘要1与先前解密的数字2进行比较。如果两者相等,则表示内容未被篡改,否则表示内容已被修改。因为只要文本内容有任何微小的变化,就会产生完全不同的摘要信息。

数字证书(证书颁发机构)

数字证书简称CA。它是由权威机构向网站颁发的批准证书。这个证书被所有人(浏览器)认可。为什么需要使用数字证书?有数字签名不够安全吗?有这样一种情况,浏览器无法确定所有真实的服务器是否真实。举一个简单的例子:一个制造商在你家里安装锁,同时给你钥匙。只要钥匙能开锁,就可以确定钥匙和锁是配对的。如果有人换了钥匙或锁,你不能开门,所以你知道它们一定是被偷了。但是,如果有人把锁和钥匙换成了另一套表面看起来相似但是质量差很多的,虽然钥匙和锁是匹配的,但是你不确定这是不是A厂家真的给你的,那么这个时候,你可以让质检部门去查一下这一套锁是否真的来自A厂家,质检部门是权威机构,他说的话是可以被大众认可的(呵呵)。

同样,如果有人(张三)用自己的公钥替换真实服务器发送给浏览器的公钥,张三用自己的私钥执行同样的步骤对文本进行Hash和数字签名,最终的结果是没有问题的,但实际上,浏览器看到的不是真实服务器给出的,而是张三从内到外(公钥到私钥)改变的。那么,如何确保您现在使用的公钥是由真正的服务器发送给您的呢?我们使用数字证书来解决这个问题。数字证书通常由数字证书颁发机构颁发。证书包含真实服务器的公钥和网站的一些其他信息。数字证书颁发机构用自己的私钥对其进行加密,并将其发送给浏览器。浏览器用数字证书颁发机构的公钥对其进行解密,并获得真实服务器的公钥。该过程基于由公认的证书颁发机构获得的公钥,因此是一种安全的方法。

摘要

以上就是本文的全部内容。希望本文的内容能给你的学习或工作带来一些帮助。有问题可以留言交流。谢谢你的支持。

参考:

http://www . Ruan Yifeng.com/blog/2011/08/what _ is _ a _ digital _ signature . html

https://zh.wikipedia.org/wiki/公钥加密

https://zh.wikipedia.org/wiki/高级加密标准

https://zh.wikipedia.org/wiki/数据加密标准

https://zh.wikipedia.org/wiki/的数字签名

http://www.guokr.com/post/114121/

版权声明:深入解释HTTPS的加密算法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。