理解SSL(https)中的对称加密与非对称加密

密码学最早可以追溯到古希腊罗马时代,那时的加密方法很简单:替换字母。

早期的密码学:

理解SSL(https)中的对称加密与非对称加密_第1张图片

古希腊人用一种叫 Scytale 的工具加密。更快的工具是 transposition cipher—:只是把羊皮纸卷在一根圆木上,写下信息,羊皮纸展开后,这些信息就加密完成了。

虽然很容易被解密,但它确实是第一个在现实中应用加密的例子

Julius Caesar 用了另外一个类似的加密方法:把字母往右或往左移动几位;此法称为Caesar’s cipher. 比如“GEEK” 加密后就是“JHHN”.

Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC

因为只有信息接受者知道如何解密,对其他人来说,那就是一段无意义的信息了。还有像如下图的加密方法:每个字母放在坐标系里

理解SSL(https)中的对称加密与非对称加密_第2张图片

这样 “G”就是 “23”, “GEEK”就是 “23 31 31 43”.

Enigma Machine

加密算法

加密算法有很多种,区别和衡量他们的方法就是看他们是否容易被破解的程度和加密的速度如下图可见AES 是最快的强加密算法

当然有更快或比较慢的算法了,他们都有用处。如果你只是加密一段信息,也不是经常需要,那你可以用最强的加密算法,甚至也可以用不同的算法加密两次。如果想要加密速度快点,那就用AES.

加密类型

之前说过的加密算法绝大部分都属于以下两种加密类型之一:

对称加密:加密解密用的是同样的“钥匙”

非对称加密:加密解密用的是不同的“钥匙”

对称加密

用邮局的例子来解释下对称加密

Alice 在盒子里放有信息,盒子上有挂锁,她有钥匙。通过邮局她把这个盒子寄给Bob。Bob收到盒子后,用相同的钥匙打开盒子(钥匙之前就得到了,可能是Alice面对面给他的)。然后Bob可以用同样的方法回复。

理解SSL(https)中的对称加密与非对称加密_第3张图片

对称加密可以分为两种:一种是一个一个加密信息,另一种是分块加密信息,通常分为64位加密为一块。块Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, RC4, TDES, and IDEA.

非对称加密

Bob和Alice各有自己的盒子。Alice要跟Bob秘密通信,她先让Bob把开着的盒子通过邮局发给她。Alice拿到盒子后放入信息锁上,然后发给Bob。Bob就可以用他自己的钥匙打开了。回复的话就用同样的方法。

此法最大的好处是你不必得到对方的“钥匙”,以防别人在钥匙发送过程中偷偷复制钥匙,进而窃取信息。而且就算Bob的钥匙被窃取复制了,Alice跟别人的通信也是安全的,因为Alice用的是别人的钥匙。

非对称算法在加密和解密时用的是不同的钥匙。信息接受者有两把钥匙:一把“公匙”,一把“私匙”。公匙是给信息发送者用来加密的,私匙是自己用来解密的这样最大的好处是:不必通过不安全的渠道发送私密的东西。公匙本来就是给别人用的,不用藏好。你的私匙在你产生私匙的电脑里保存着。

网站如何通过加密和用户安全通信

SSL (Secure Sockets Layer) 是用来保障你的浏览器和网站服务器之间安全通信,免受网络“中间人”窃取信息。SSL原理很简单。

一、当你的浏览器向服务器请求一个安全的网页(通常是 https://)

理解SSL(https)中的对称加密与非对称加密_第4张图片

二、服务器就把它的证书和公匙发回来

理解SSL(https)中的对称加密与非对称加密_第5张图片

三、浏览器检查证书是不是由可以信赖的机构颁发的,确认证书有效和此证书是此网站的。

理解SSL(https)中的对称加密与非对称加密_第6张图片

四、浏览器中随机生成一对对称秘钥,并使用公钥(服务器端的)加密该对称秘钥,将它和对称加密后的URL一起发送到服务器

理解SSL(https)中的对称加密与非对称加密_第7张图片

五、服务器用自己的私匙解密了你发送的钥匙。然后用这把对称加密的钥匙给你请求的URL链接解密。

理解SSL(https)中的对称加密与非对称加密_第8张图片

六、服务器用你发的对称钥匙给你请求的网页加密。你也有相同的钥匙就可以解密发回来的网页了

理解SSL(https)中的对称加密与非对称加密_第9张图片


本博客上面的内容是从网上转载来的,由于版本太多,出处已不可查,所以我也无法列出此文的作者是谁了。下面的内容是我在学习SSL时的随笔感悟,若不正确,欢迎大家指正。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。


  SSL协议提供的服务主要有:


  1)认证用户和服务器,确保数据发送到正确的客户机和服务器;


  2)加密数据以防止数据中途被窃取;


  3)维护数据的完整性,确保数据在传输过程中不被改变。


数字证书文档中,对于数字证书和公钥、私钥的解释:

数字证书包含以下信息:

  • 使用者的公钥值。
  • 使用者标识信息(如名称和电子邮件地址)。
  • 有效期(证书的有效时间)。
  • 颁发者标识信息。
  • 颁发者的数字签名,用来证明使用者的公钥和使用者的标识符信息之间的绑定的有效性。

数字证书是数据中心使用数据中心本身的私钥,将上面信息加密后的产物。

私钥是只有其所有者知道的密钥,而公钥是网络中的其他实体也可以知道和使用。我的理解是,对于非对称秘钥,谁生成非对称秘钥,谁拥有非对称秘钥的私钥。


下面是我自己的理解,列出来供大家参考。

1、浏览器和服务器之间进行信息交互,为了确保信息的安全和保密性,并尽可能的提高信息交互的性能,所以使用非对称加密对称加密相结合的加密策略。

2、为了确保浏览器和服务器之间信息传递过程中信息被第三方篡改,所以采用摘要的方法,来防止信息传递过程中信息被篡改。

3、为了防止第三方系统假冒正规网站与浏览器进行交互,所以采用数字证书验证的方法。

4、网站服务器和数据中心(CA)都使用非对称加密,但是加密的方式是不同的:

网站服务器是公钥加密,私钥解密;

数据中心是私钥加密,公钥解密。


在上面大牛对SSL过程的叙述中,第三步的描述有点简略,我结合自己的想法,详细的向大家描述一下此过程

三、浏览器检查证书是不是由可以信赖的机构颁发的,确认证书有效和此证书是此网站的。

浏览器在第二步获取到服务器传递给它的公钥和数字证书后,要验证数字证书的合法性。首先,浏览器依次获取合法的数据中心对外公开的公钥,并依次使用此公钥对证书进行解密,若解密成功且证书中的信息和浏览器要访问的网站信息一致(包括网站域名、网站公钥等),浏览器才继续进行下面的步骤。

你可能感兴趣的:(Tomcat服务器)