SSL加密的通俗理解

SSL加密的通俗理解

SSL(Secure Sockets Layer安全套接层加密)加密广泛应用在https上,不是新颖的技术,这篇笔记就当是我的复习笔记,用最通俗的语言记录下来,抛砖引玉。

从http和https的区别说起

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca(Certificate Authority)申请证书,一般免费证书较少,因而需要一定费用。(证书签发机构有很多家,比如DigiCert)。

2、http信息是明文传输,https是ssl加密传输。

3、用的端口不一样,前者是80,后者是443。

4、http是无状态的;

https中的“s”指的就是ssl加密,大致上,https = http + ssl。

https传输的基本原理

打个比方,我们使用拼多多时。如果一开始建立连接的是高仿的并夕夕服务器,那么即使使用加密传输也没有意义,因为一开始的“接头人”就错了。

因此,在https中,当服务器受到客户端建立链接的请求,服务器首先要证明的是”自己是正版服务器”。

https使用非对称加密巧妙实现这一点。

非对称加密的密码是一对,即公钥和私钥,并遵循:

1.由公钥加密的数据只能由私钥解密;

2.由私钥加密的数据只能由公钥解密;

3.公钥是全网公开的;

4.私钥只有证书颁发机构和服务器方掌握;

用对话模拟https的非对称加密部分

客户端:拼多多服务器你好,我想和你建立链接,但你必须首先证明你是真正的拼多多服务器,这样我才能放心传输敏感数据。

服务器:这好办,世界上‘真拼多多服务器的【私钥】’只有两个人知道,一是证书签发机构,另一个就是【真拼多多服务器自己】,只要我能证明我手中有‘拼多多服务器的私钥’,那么我就是‘真拼多多服务器’。

客户端:那你如何证明你拥有‘拼多多服务器的私钥’呢?

服务器:你首先发送一段随机数给我,我用私钥进行加密,然后返还给你。并且我还会把我的证书包括公钥发送给你。你知道的,服务器的公钥只能解密出对应私钥加密的数据;如果你解密成功,就说明我发给你的数据是由【私钥】加密的,换句话说我手里确实有【私钥】,那么我就是真服务器了。

客户端:万一你发给我的证书是假的,公钥也是你私自生成的呢?

服务器:公钥和证书是全网公开的,你可以去验证,看是不是真的。

客户端:我查过了,你的证书和公钥是真的,密文也能正确解析,你确实是【真服务器】,我们就按照这种非对称加密方式传输数据吧。

服务器:这种非对称加密虽然安全,但是次次都这么做太麻烦了,接下来你可以生成一个【随机密钥】,由它加密的数据也只能由它解密,然后你用公钥加密【随机密钥】发送给我。

客户端:懂了,公钥加密的数据只能由你的私钥解密,就算有别人拿到了的【随机密钥】也无法解析,所以这个【随机密钥】世界上只有我们两个知道。我们后续的数据传输就全通过它来加密解密。

服务器:对,这就是ssl加密的【对称加密】部分了。

ssl加密 由 非对称加密 和对称加密两部分组成,所以称为【混合加密】,兼顾了安全和效率。

以上部分的内容虽然足够通俗,但不免有些啰嗦,下面将ssl加密过程简化为四个步骤:

1.client_hello:客户端发送 随机数A 和 自己支持的几种加密算法给服务器;

2.sever_hello:服务器生成随机数B,用客户端提供的一种加密算法加密,连同自己的证书发给客户端;

3.客服端验证证书真实有效,生产随机数C,用证书附带的公钥加密,发给服务器,此后的通信,由随机数C作为临时密钥,对称加密通信。

4.安全数据传输

那么有几个问题值得思考:

1.前两步生成的随机数A、B似乎没什么用?

答:其实是有用,随机数C的生成使用了随机数A、B,至于为什么要这样,这里不做讨论(我也不会)。

2.ssl加密发生在什么位置?什么时候?

答:发生在应用层和传输层之间,TCP三次握手完成之后。

这么说是有理由的,http是应用层协议,https是http外套了一层ssl,那么ssl肯定在应用层之下。TCP协议是传输层协议,负责保障传输的稳定性。试想,如果没有TCP三次握手作为前提,ssl的每一次通信如何能确保畅通呢。所以ssl必定发生在三次握手之后,传输层之上。但它又不是应用层协议,所以正如他的名字-安全套阶层通信,是一个套接上去的新的层。

3.TLS(Transport Layer Security)和SSL的关系

SSL是TLS的前身,两者加密原理大致相同,但TLS支持更多种加密算法,安全性更好,现在说的SSL实际上都是TLS。

一件有趣的事

有一次做项目,需要申请ssl证书,是收费的。也需要发邮件把公司的营业执照,地址,电话等信息发给证书颁发机构。并说明你做网站的目的,如果是教育,慈善之类的网站,那家证书颁发机构将会给打折。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值