赞
踩
本文是对于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证书:全称Certificate Authority证书,是由认证机构服务者签发的一种数字证书,是数字签名的技术基础保障,也是网上实体身份的证明。它主要用来证明某一实体的身份及其公钥的合法性,同时证明该实体与公钥二者之间的匹配关系。在电子商务系统中,所有实体的证书都是由证书授权中心即CA中心颁发并签名的。
该证书有什么内容呢?
其中除了数字签名是密文的,其它信息都是明文传输的,那它是如何保证通信的安全性呢?
CA认证:即证书颁发机构(Certificate Authority,简称CA)认证,是一种由可信任的第三方机构负责发放和管理数字证书的过程。这种数字证书通常用于在公钥基础设施(PKI)中验证公钥的持有者身份。CA认证的目的是确保电子交易和通信的安全性、真实性和完整性
也就是服务端在使用HTTPS前,需要向CA机构申请一份数字证书,数字证书里面含有申请者信息,公钥信息等。服务器把证书传输给浏览器,浏览器从证书中获取公钥。证书就如身份证,证明服务端公钥的权威性。
我们可以在浏览器上,查看到授信任的证书发布机构。
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的、别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但在实现上使用了公钥加密领域的技术,用于鉴别数字信息。
数字签名的工作原理是:数据发送方使用自己的私钥对数据及与数据有关的变量进行运算,将合法的数字签名与数据原文一起传送给接收方。数据到达接收方后,接收方利用发送方的公钥对收到的数字签名进行运算,将得到的结果与发送方发送过来的签名做比较。如果相同,则说明收到的数据是完整的,在传输过程中没有被修改;反之说明数据被修改过,以此对数据完整性做检验,以确认签名的真实性和合法性。
签名的过程
验证的过程:
这里我们先对数据形成数据指纹在加密,是为了提高效率
现在我们将上面的数据给为CA证书,那以后server向client发送数据时一并发送CA证书,是不是就可以保证通信过程中数据的安全性了。
这里可能还会有几个疑惑?
现在看来我们只要server向client发送数据时一并发送CA证书,就可以保证通信过程中数据的安全性了。
如何形成csr?
我们可以使用CSR在线生成工具来看看。
CSR在线生成工具
只是在方案4的基础上添加证书,来保证client可以验证数据的安全性
以上就是我对于HTTPS的知识总结
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。