qidao123.com技术社区-IT企服评测·应用市场

标题: 网络:HTTPS的加密 [打印本页]

作者: 西河刘卡车医    时间: 2024-6-28 23:47
标题: 网络:HTTPS的加密

   个人主页 : 个人主页
个人专栏 : 《数据结构》 《C语言》《C++》《Linux》
  
  

前言

本文是对于https加密的知识总结

一、前置知识

HTTPS是什么?
HTTPS是一种基于HTTP的加密通讯协议,通过传输加密(密文传输)和身份认证(CA证书)保证传输过程的安全性。它在HTTP的基础上参加SSL/TLS协议,用于对数据进行加密,并保证数据的完整性和安全性。
HTTP与HTTPS的区别


什么是加密
加密:把明文数据进行一系列变更,生成密文的过程。
解密:把密文再进行一些列变更,还原成明文的过程
在这个加密和解密的过程中,往往必要一个或多个中间数据,辅助进行这个过程,这样的数据称为密钥。
如下图所示:
client向server发送一个数据5,但client在发送数据5前,先对数据5(0101)进行 ^ 1(0001)操作得到 4(0100),那么server在接受到数据4(0100),要再次进行 ^ 1(0001)操作得到5(0101)。其中,数据5(0101)就是明文数据,数据4(0100)就是密文数据,而client对数据5(0101) ^ 1(0001)的操作就是加密,server对数据4(0100) ^ 1(0001)的操作就是解密,数据1(0001)就是密钥。我们举得这个列子就是对称加密

常见的加密方式
对称加密:采用单钥密码体系的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
特性:加密和解密所用的密钥是类似的
特点:算法公开,计算量小,加密速率快,加密效率高
常见对称加密算法:DES,3DES,AES,TDEA,Blowfish,RC2等

非对称加密:使用一对密钥来进行加密和解密操作,这对密钥分别是公钥和私钥。公钥是公开的,任何人都可以获取;而私钥是保密的,只有拥有者才知道。
常见非对称加密算法:RSA,DSA,ECDSA

特定:算法强度复杂,安全性依赖于算法与密钥但是由于算法复杂,从而使的加密解密速率没有对称加密解密的速率快。
公钥和私钥是配对的。
如通过公钥对明文加密,变成密文,再用配对的私钥对密文解密,变成明文。也可以通过私钥对明文加密,变成密文,再用配对的公钥对密文解密,变成明文。

数据摘要 && 数据指纹
数据指纹(数据摘要),其基本原理是使用单向散列函数(hash函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用了判断数据有没有被篡改。

摘要常见算法:有MD5,SHA1,SHA256,SHA512等,算法把无穷的映射成有限,因此可能会有碰撞(两个不同的信息,算出摘要类似,非常低概率)
摘要特性:和加密算法的区别是,摘要严酷意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比
两个应用场景:
以上内容大部分都是总结书上的知识。
二、加密方案

要保证网络传输过程中数据的安全,那么就要对数据进行加密,网络传输过程中使用加密后的密文。加密的方式有许多,但是团体可以分为两大类:对称加密和非对称加密
加密方案一:只使用对称加密

只使用对称加密,就代表client和server各自持有类似的一个密钥X,且该密钥X没有被别的人知道,这样双方通讯就是安全的。但这可以做到吗?

中间人不知道密钥X,就不能对密文解密。
这里有两个问题(其实有三个问题,下面几个方案都有这一问题。但第三个问题,在数字签名时再说)。

所以综上所述,只使用对称加密的方法是不可的。
加密方案二:只使用非对称加密

由于方案一的其中一个问题是如何传递密钥,那我们就使用非对称加密看看吧。
由server老师成一对密钥(公钥S,私钥S’),server先把S明文传输给client,client接受到S后,传输密文(数据 + S),此时中间人并不知道私有S’,不能对该密文解密。看来这次是乐成了吧?我们再来看server接受到密文后,用私钥S’解密等到数据,server不就要给client相应,此时server传输密文(相应 + 私有S’),client接受到密文,用公钥S解密得到相应,与此同时中间人也用公用S解密得到相应。看来这个方案也是不可的,它只保证由client到server的安全,server到client的安全缺不能保证。

加密方案三:双方都是以非对称加密

由于方案二的问题是主要是中间人可以用server的公钥S对从server到client的密文解密,那如果client和server各自都生成一对配对的密钥那(公钥C,私钥C’,公钥S,私钥S’)。


加密方案四:非对称加密 + 对称加密

由于方案三的一个问题就是效率问题,那我们就用对称加密的方式来解决效率问题。


这一方案看着非常可以,但其实以上四种方案都有一个共同的问题,就是client如何判断密文和数据的正确性,也就是说像这次的方案,如果中间人(已经生成一对配对的公钥M,私钥M’)在client申请公钥S时,中间人将公钥S替换为公钥M,发给client,client如何辨别这个公钥的安全性,如果client使用公钥M,那么中间人就会得到对称密钥C,从而使client与server的通讯不安全。

这也就是Man-in-the-MiddleAttack,简称“MITM攻击”(一种网络入侵本领,攻击者作为中间人,挟制通讯双方会话并使用通讯过程,而通讯双方并不知情,从而到达窃取信息或假冒访问的目的。)。要解决这一问题,就必要client可以辨认从server发送数据的正确性,而单一密文或者公钥并不能自我证明自己的正确性,必要引入别的数据。而这就是数字签名和CA证书的意义。
CA证书 和 数字签名

CA证书:全称Certificate Authority证书,是由认证机构服务者签发的一种数字证书,是数字签名的技术基础保障,也是网上实体身份的证明。它主要用来证明某一实体的身份及其公钥的合法性,同时证明该实体与公钥二者之间的匹配关系。在电子商务体系中,全部实体的证书都是由证书授权中心即CA中心颁发并签名的。
该证书有什么内容呢?

其中除了数字签名是密文的,别的信息都是明文传输的,那它是如何保证通讯的安全性呢?

CA认证:即证书颁发机构(Certificate Authority,简称CA)认证,是一种由可信任的第三方机构负责发放和管理数字证书的过程。这种数字证书通常用于在公钥基础办法(PKI)中验证公钥的持有者身份。CA认证的目的是确保电子买卖业务和通讯的安全性、真实性和完整性
也就是服务端在使用HTTPS前,必要向CA机构申请一份数字证书,数字证书内里含有申请者信息,公钥信息等。服务器把证书传输给欣赏器,欣赏器从证书中获取公钥。证书就如身份证,证明服务端公钥的权势巨子性。
我们可以在欣赏器上,检察到授信任的证书发布机构。


数字签名(又称公钥数字签名)是只有信息的发送者才能产生的、别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的平凡的物理签名,但在实现上使用了公钥加密领域的技术,用于辨别数字信息。
数字签名的工作原理是:数据发送方使用自己的私钥对数据及与数据有关的变量进行运算,将合法的数字签名与数据原文一起传送给吸收方。数据到达吸收方后,吸收方使用发送方的公钥对收到的数字签名进行运算,将得到的结果与发送方发送过来的签名做比力。如果类似,则说明收到的数据是完整的,在传输过程中没有被修改;反之说明数据被修改过,以此对数据完整性做查验,以确认签名的真实性和合法性。
签名的过程

验证的过程:

这里我们先对数据形成数据指纹在加密,是为了提高效率

现在我们将上面的数据给为CA证书,那以后server向client发送数据时一并发送CA证书,是不是就可以保证通讯过程中数据的安全性了。
这里可能还会有几个疑惑?

现在看来我们只要server向client发送数据时一并发送CA证书,就可以保证通讯过程中数据的安全性了。

如何形成csr?
我们可以使用CSR在线生成工具来看看。
CSR在线生成工具

完整流畅:非对称加密 + 对称加密 + 证书认证

只是在方案4的基础上添加证书,来保证client可以验证数据的安全性



总结

以上就是我对于HTTPS的知识总结


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4