加密解密那些事之SSL(https)中的对称加密与非对称加密

    今天刚好为站点的后台弄了下https,就来分享我了解的吧。

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

    早期的密码学:

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

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

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

    Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ

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

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

    Enigma Machine

    加密算法

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

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

    加密类型

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

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

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

    对称加密

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

    对称加密可以分为两种:一种是一个一个加密信息,另一种是分块加密信息,通常分为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://)

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

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

    使用公钥加密了一个随机对称密钥,包括加密的URL一起发送到服务器

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

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

    大概就这样,翻译不完整,原文可以看下:http://article.yeeyan.org/view/90729/174903

发表评论

发表评论