【技术前沿】戏说SSL安全连接技术原理
作者:研发部 杨盛海
SSL(Secure Socket Layer),中文直译为安全插接层协议层,听不明白?说白了就是在原有的协议上加上一层加密以及认证这类东西,目的是保证信息安全。举个简单的例子我给你发一串数据,不用SSL,被邪恶的第三方将其截获,就能看出我的意图,如果加上不带认证的SSL将数据加密,即使被第三方得到,他拿到的也是无法看懂的数据,一点用都没有。这只是一个比较浅显的比方,可能有人问:我把我要发送的数据写一个加密算法加密后再发出去,这算不算SSL呢?我无法给出正确答案,请直接阅读下面的文字。
SSL有两个最核心的技术,一个是加密,一个是认证。认证是比较深层次的东西(至少我这么认为),暂且不说认证,单说加密。
广义上的SSL是包含只把信息加密的这种作法,只是从字面上来讲。如果严格遵循SSL提出者写的规范,这种加密的作法也有限定,用什么样的加密方法是有规定。那如果有人要问SSL用的是什么加密算法?我会反问你,你知道多少种算法呢?看着他们茫然的眼神,我心里暗暗笑,开个玩笑而已,下面简单介绍一下加密方面的知识。
加密共分为带钥匙加密和不带钥匙加密,这是以我的习惯划分。不带钥匙加密好理解,就是一个算法,不依赖于任何外部数据,这种算法不好的地方是一旦被破解就不能使用,就相当于我知道你是用这种方法加密,那么你的信息也毫无安全可言,也就不好在网络连接这方面使用。
另外一种是带钥匙加密,也就是说破解的人既要知道是什么算法也要知道钥匙是什么,只知道其一不能破解。一旦破解,再换一个钥匙,还可以继续用,这个钥匙就是参与加密算法的外部数据。
那么,带钥匙加密的算法又分为两种,一种是对称加密的算法,另一种是不对称加密的算法。对称是指加密用的什么钥匙,解密也得用这个钥匙。不对称加密是指加密用的是一种钥匙,解密用的是另外一种钥匙。SSL用的就是不对称加密算法。具体用的什么,好像还不止一种,有兴趣的读者可以查询相关资料,这里只是简介,将大概原理介绍一下。
假如通信双方甲和乙,甲给乙发信息,乙给甲发信息,如何确保第三方看不到(或看不懂)他们之间发送的数据呢?采用不对称加密。甲给乙发信,甲要给它加密,用一个钥匙加好了,好比现在发的内容是火星文,谁也看不懂,那么乙接收了,要想知道是什么内容,就得解密。
前面说这是不对称加密:一,乙必然要知道这个算法;二,乙必然要知道解密所需要的钥匙。这个钥匙哪里来的,甲给的?不是。解密的钥匙远比加密的钥匙重要得多,只能自己知道,别人,哪怕是甲方也不行,因为一旦你的解密钥匙让别人知道,加密算法又是公开,那么就等于所有发给你的信息内容也就全部公开了。所以解密密钥只能自己知道。
由于不对称加密的两个密钥是一对,所以用什么钥匙解密,就得用相对应的钥匙加密,这话虽然反过来说比较通顺一点,但都是一个意思。这么说来,先前甲方加密数据所用的钥匙和乙方解密数据所用的钥匙是一对,是由乙方来制作。现在清楚了,乙方产生了一个钥匙对,把其中一个告诉甲方,让他用来加密,另一个放在自家的保险柜里,只有自己知道,用来解密甲方传来的信息。甲给乙发信是这样的,乙给甲发信也一样,用甲给他的钥匙加密,发给甲,甲再用自己的钥匙解密。这就是一个公钥,一个私钥。公钥发布出去,别人用来加密,私钥自己拿着用来解密。
有人问公钥别人知道了,会不会被人推算出私钥,我可以这么回答,会,只是时间的问题。你说,时间不是问题,我可以等。我告诉你,问题是你没那么多时间等。
破解不对称加密,可简可繁,是根据密钥的长短来决定,密钥越短,破解时间越短,密钥越长,破解时间越长。一个足够长的密钥,等破解出来要等到天荒地老,这是现在的情况,也许过些年这种情况会有改观。
说完加密,再说认证,认证相对加密来说会复杂一些,还可能说不太清楚,这里一样只是对原理做一些简单介绍,认证,打个比方说,你如何证明你的身份,用身份证,什么?你用一个假的身份证,那么我再查你的电子身份证等等。我来调查你的身份,这个过程就叫认证。认证是为了防止有人假冐成别人发信息。
再回顾一下,甲和乙发信息,甲先把公钥发给乙,让乙用来加密信息,这时,如果有一个第三方丙,截获到公钥,则他就可以用甲的公钥加密信息,并且假冒成乙给甲发信。如果甲在接收乙的公钥时要求乙提供“身份证”,术语叫证书,那丙就傻眼了。
这种证书是由一些机构签发,这些机构被称为证书颁发机构,这些机构被人信任,证书发给你时,还是经过这机构签名,就像微软颁发给你MVP证书时上面有比尔盖茨的签名一样,不同的是这里是数字签名。关于数字签名,又是一套很复杂的理论,这里暂不表露。有数字签名之后,证书基本上就不能造假。又有人问,如果证书颁发机构发给你一个错误的证书怎么办?这是个很严肃的问题,责任要由证书颁发机构承担。当甲方要求乙出示证书后,乙把证书提交上去,上面有颁发机构的名字和签名,也有乙的名字,这样甲就可以放心地和乙交流,这样第三方就无从插足。
甲和乙互发信息聊得火爆,第三方丙即使截获信息也看不懂,但他不甘寂寞,使出最后一招--篡改。这是个损人不利已的活,对付这种捣蛋的人,可以使用哈希值的办法,俗称电子摘要。固定的内容对应固定的电子摘要,当通信内容被篡改后,接收方再计算一次电子摘要,生成出来的就和原来的对不上了,这不就发现内容被篡改了吗?
总之SSL利用很多对付监听、伪造和篡改等行为的技术,来保障网络双方安全地交流。目前随着监听与反监听、伪造和反伪造、篡改与反篡改技术的不断进步,SSL技术也在不断发展,两方面是一对不可调和的矛盾,却起到互相促进,共同发展的作用。表面上十分平静的互联网,这里的战争悄无声息却异常激烈。