ssl总结(上)

ssl是什么

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。——百度百科

如图,http是明文传输的,在网络传输的过程中如果包被人截获,包内的信息就都被窃取了;加上一层ssl以后,就算包被人截获,没有秘钥信息也不会被窃取;

网络通信加密的发展过程

网络通信加密的发展过程可以看这篇文章

远古时代

远古时代自然是民风淳朴,路不拾遗,夜不闭户。A要发数据给B,根本不用担心窃听和篡改,直接发就好了。

上古时代

随着时代的发展,渐渐的有了一类人—C。C不仅会监听A和B之间的网络数据,还会拦截A和B之间的数据,伪造之后再发给A或者B,进而欺骗A和B。C就是中间人攻击(Man In The Middle Attack)。

为了应对C的攻击,A和B开始对自己的数据进行加密。A和B会使用一个共享的密钥,A在发送数据之前,用这个密钥对数据加密。B在收到数据之后,用这个密钥对数据解密。因为加密解密用的是同一个密钥,所以这里的加密算法称为对称加密算法。

在1981年,DES(Data Encryption Standard)被提出,这是一种对称加密算法。DES使用一个56bit的密钥,来完成数据的加解密。尽管56bit看起来有点短,但时间毕竟是在上古时代,56bit已经够用了。就这样,网络数据的加密开始了。

因为采用了DES,A和B现在不用担心数据被C拦截了。因为就算C拦截了,也只能获取加密之后的数据, 没有密钥就没有办法获取原始数据。

但是A和B之间又有了一个新的问题,他们需要一个共享的56bit密钥,并且这个密钥一定要保持私密,否则被C拿到了,就没有加密的意义了。首先AB不能通过网络来传递密钥,因为密钥确定以前,所有的网络通信都是不安全。如果通过网络传递密钥,密钥有可能被拦截。拦截了就没有加密的意义了。为了安全,A和B只能先见一面,私下商量好密钥,这样C就没办法获取密钥。如果因为任何原因,之前的密钥泄露了,那么AB还得再见一面,重新商量一个密钥。

现在A和B之间,最私密的信息就是这个密钥了,只要保证密钥的安全,那么AB之间整个网络通信都是安全的。

中古时代

A和B小心的保护着密钥,不让C知道。但是道高一尺,魔高一丈。随着技术的发展,计算机速度变得很快,快到可以通过暴力破解的方法来解密经过DES加密的信息。不就是56bit的密钥吗?C找了一个好点的计算机,尝试每一个可能的值,这样总能找到一个密钥破解A和B之间的加密信息。倒不是说DES在提出时没有考虑过这种情况,只是在上古时代,计算机没这么快,破解56bit的密钥需要的时间非常长。但是现在是中古时代,可能只需要几天就可以破解56bit的密钥。

为了应对这个情况,新的协议被提出,例如triple-DES(最长168bit的密钥),AES(最高256bit的密钥)。经过这些改进,至少在可以预见的未来,计算机是没有办法在有限的时间内,暴力破解这个长度的密钥。所以,在中古时代,将对称加密算法的密钥长度变长,来应对中间人攻击。但是A和B还是需要见面商量一个密钥。

现代

非对称加密

时间到了现代。网络通信变得十分发达,A不只与B通信,还同时还跟其他10000个人进行网络通信。A不可能每个人都跑去跟他们见个面,商量一个密钥。

所以一种新的加密算法被提出,这就是非对称加密算法。非对称加密使用两个密钥,一个是public key,一个是private key。通过一个特殊的数学算法,使得数据的加密和解密使用不同的密钥。因为用的是不同的密钥,所以称为非对称加密。非对称加密最著名的是RSA算法,这是以其发明者Rivest, Shamir 和Adleman命名。非对称加密算法里面的public key和private key在数学上是相关的,这样才能用一个加密,用另一个解密。公钥加密的信息只能私钥解开,私钥加密的信息只能公钥解开。

非对称加密的好处在于,现在A可以保留private key,通过网络传递public key。这样,就算public key被C拦截了,因为没有private key,C还是没有办法完成信息的破解。既然不怕C知道public key,那现在A和B不用再见面商量密钥,直接通过网络传递public key就行。

非对称加密的安全隐患

参考的这篇文章
采用这种非对称加密方式至少会存在这两种问题:
在这里插入图片描述

  1. 客户端C和服务器S进行通信,中间节点M截获了二者的通信; 节点M自己计算产生一对公钥pub_M和私钥pri_M; C向S请求公钥时,M把自己的公钥pub_M发给了C; C使用公钥 pub_M加密的数据能够被M解密,因为M掌握对应的私钥pri_M,而 C无法根据公钥信息判断服务器的身份,从而 C和 M之间建立了"可信"加密连接; 中间节点 M和服务器S之间再建立合法的连接,因此 C和 S之间通信被M完全掌握,M可以进行信息的窃听、篡改等操作。
  2. 服务器也可以对自己的发出的信息进行否认,不承认相关信息是自己发出。

这两个问题的核心是:1. 在传输公钥时没有加密措施;2. 公钥不带有服务器信息。

面对这些问题,大佬们创建了PKI(Public Key Infrastructure,公钥基础设施)

PKI

PKI 采用证书进行公钥管理,通过第三方的可信任机构(认证中心,即CA),把用户的公钥和用户的其他标识信息捆绑在一起,其中包括用户名和电子邮件地址等信息,以在Internet网上验证用户的身份。

从上文可以知道,现在网络加密通信一个很大的问题在于公钥的传输。一方面,加密的网络传输就需要客户端拿到公钥;另一方面,没有加密,公钥在传输的过程中就可能会被中间人攻击。在这种情况下一个能够将公钥加密且能够将公钥和域名等信息绑定在一起的认证机构CA就产生了。

如果一个网站需要使用加密的网络传输,那么网站的工作人员就需要上传自己的(网站)公钥、域名等信息给CA认证中心,CA会使用它的(CA)私钥,将网站上传的信息加密成一个签名(带有签名的网站信息叫证书),同时将证书返回给申请网站的工作人员;工作人员会将证书放在服务器上,当每次有客户端想要和网站建立加密链接时,服务器会将证书给客户端,客户端通过操作系统或浏览器中预留的ca证书,将网站证书中的签名解密,如果解密后的签名和证书中的信息一致的话那就说明这个证书中的公钥是可用的。通过以上的方式就将公钥安全地传给了客户端。

上面的描述里还有一个问题:ca证书的安全性。
这就涉及到了证书链的概念:
如 CA根证书和服务器证书中间增加一级证书机构,即中间证书,证书的产生和验证原理不变,只是增加一层验证,只要最后能够被任何信任的CA根证书验证合法即可。
a.服务器证书 server.pem 的签发者为中间证书机构 inter,inter 根据证书 inter.pem 验证 server.pem 确实为自己签发的有效证书;
b.中间证书 inter.pem 的签发 CA 为 root,root 根据证书 root.pem 验证 inter.pem 为自己签发的合法证书;
c.客户端内置信任 CA 的 root.pem 证书,因此服务器证书 server.pem 的被信任。

在这里插入图片描述

服务器证书、中间证书与根证书在一起组合成一条合法的证书链,证书链的验证是自下而上的信任传递的过程。
二级证书结构存在的优势:
a.减少根证书结构的管理工作量,可以更高效的进行证书的审核与签发;
b.根证书一般内置在客户端中,私钥一般离线存储,一旦私钥泄露,则吊销过程非常困难,无法及时补救;
c.中间证书结构的私钥泄露,则可以快速在线吊销,并重新为用户签发新的证书;
d.证书链四级以内一般不会对 HTTPS 的性能造成明显影响。
在这里插入图片描述

证书链有以下特点:
a.同一本服务器证书可能存在多条合法的证书链。
因为证书的生成和验证基础是公钥和私钥对,如果采用相同的公钥和私钥生成不同的中间证书,针对被签发者而言,该签发机构都是合法的 CA,不同的是中间证书的签发机构不同;
b.不同证书链的层级不一定相同,可能二级、三级或四级证书链。
中间证书的签发机构可能是根证书机构也可能是另一个中间证书机构,所以证书链层级不一定相同。

ssl的基本原理差不多就是这样了,下一篇总结下实际使用过程中ssl是如何工作的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pip ssl 模块是一个用于处理 Python 中 SSL(Secure Sockets Layer)协议相关功能的模块。SSL 是一种用于保护网络通信安全的加密协议,能够在公共网络上建立安全连接,确保数据传输的机密性和完整性。 pip ssl 模块的主要作用是提供对 SSL 功能的支持,使得通过 pip 进行网络资源下载和安装时,能够建立安全的连接。这在保护用户隐私和防范网络攻击方面非常重要。 具体而言,pip ssl 模块提供了以下功能: 1. SSL 证书验证:pip ssl 模块能够验证远程服务器的 SSL 证书,确保连接的安全性。它能够检查证书的有效性、过期时间以及与实际使用环境的匹配程度,以防止中间人攻击或欺骗。 2. SSL 协议版本设置:pip ssl 模块允许用户指定 SSL 协议的版本,以满足不同的安全需求。根据实际情况,可以选择支持的协议版本,从而提高通信的安全性和性能。 3. SSL 加密算法配置:pip ssl 模块支持用户配置 SSL 加密算法的使用方式。可以根据需求启用或禁用某些具体的加密算法,以满足安全策略的要求。 总结起来,pip ssl 模块提供了 SSL 相关功能的封装和配置选项,使得通过 pip 下载和安装 Python 包时能够建立安全的连接。这是保护用户隐私和数据安全的重要一环,也有助于防御网络攻击。用户可以根据自己的需求,配置和使用 pip ssl 模块,以确保安全连接的建立和数据传输的保护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值