数据加密及认证过程详解

 
  随着互联网的不断发展,人们不仅仅是依靠它来获取资讯,而且越来越多的人依靠互联网进行通讯和交易。那么在通讯和交易的过程中我们是如何来确保和自己通讯的对方就是我们想要通讯的那个人,而不是另外的一些有恶意的并试图篡改我们通讯信息的人呢?
  这样问题就来了:1、我们如何确保我们在信息交换的过程中不被他人获取而保证信息数据的机密性呢?2、在信息的交换过程中我们如何确保自己的数据是完整的,而不是被人恶意的篡改过的?3、最最前提的条件就是我们如何去确定我们要通讯的人就是我们想要联系的那个人,而不是有他人来冒名顶替的呢?
  如何解决这三个问题就是我们本章讲解的主要内容。
  从TCP/IP协议建立开始,人们能够在互联网中相互通讯就已经是通讯世界的重大突破,此时的人们并没有意识到网络通讯会在今后的生活中处于什么样的地位。因此也就没有过多的去关注到对于数据安全的一些应对措施。这时我们就急需一种方法能够将我们在传输协议中明文传送的数据通过一种转换规则加密起来,使得除了我们想要发送的对象能够解读这些内容,即使其他人获取到这些信息也不能得知我们所交流的是什么内容。因此也就诞生了一种加密算法——对称加密。
  我们通过双方共知的一份密钥来加密和解密数据,这样就能够使得只有我们通讯双方能够获知信息的内容。可是这样一来就产生了一个问题,当A与B通讯的时候可以使用一种密钥,那当A与C通讯的时候是否也使用这样一个密钥呢?那假如说A与D、A与E也要通讯的时候使用同一个密钥合适么?那要是不使用同一个密钥的话A就要同时记忆多组的密钥,这样一来就容易混乱,增加负担。同时还有一个问题就是我们如何来确定正在和A通讯的就是A想要通讯的B?
  假如说X获取到了A、B通讯时使用的密钥,从而拦截了A传送给B的数据,自己在其中恶意的添加了一些内容之后也使用了这个密钥进行了加密,那B有如何得知这组数据是否是真实的呢?
  如此一来就催生了单向加密算法的产生,单向加密算法能够将一组数据提取出数据的特征码,就如同是我们的指纹一般,具有唯一性。同时单向加密的雪崩效应也能够让微小的改变引起结果的巨大改变,从而让他人的修改无法重新加密,除此之外单向加密还可定长输出,即无论原始数据的大小,其结果的大小都是相同的,这样就无从解密,从而就实现了数据的不可逆。
  这样就解决了我们无法判定数据是否被人做过手脚了,但身份验证的问题还是无法得到解决。这时非对称加密算法出现了。
  非对称加密算法会生成一对密钥:公钥和私钥。对方使用自己的私钥加密数据,那么我们就只能够使用对方的公钥进行解密,这样就可以实现身份的验证;对方使用我们的的公钥加密数据,那我们就可以使用自己的私钥来解密,这样即可实现数据的机密性,不过公钥加密的速度太过缓慢,一般我们只是使用非对称加密来实现通讯双方的身份验证。
  不过这样一来我们通讯双方如何去获取对方的公钥就成了一个问题,我们没有办法去确认对方就是我们想要通讯的一方,并且无法确认这些互传的数据是否被人截取和篡改过。这时我们就不得不引入一个第三方的概念。
  我们通过一个我们共同信赖的第三方来验证我们各自的身份,由第三方来给我们证明各自的身份,这种证明我们称之为CA Certificate Authority,而维护这些公钥信息的组织则称之为PKI Pubic Key Infrastructure。
  此时我们就可以各自在信赖的CA机构中申请各自的认证证书,来标明各自的身份。然后使用自己的私钥加密数据,然后随机数生成对称密码加密加密后的数据,再然后将对称密码使用对方公钥加密,这样既可以保证自身的身份能够得到验证、和数据的完整性,并且能够保证数据的机密性不会被随意窃取。
  这样,一个基本完整的数据加密和解密过程就已经能够实现了,我们不仅仅解决了数据的机密性问题和数据完整性问题,同时也能够确保和对方的通讯确实就是对方而不是被人冒名顶替的。
  不过这样一来维护一个庞大的证书数据,保持其公信力都是一笔庞大的费用,因此来说一个拥有很高公信力认证的CA认证是会收取很高费用的。那么一些中小型企业既想使用认证,同时也不想付出这么多的认证代价,那么该如何解决呢?
  咳咳,一口气写了这么多,实在是太不容易了。想当年LZ还是一懵懂少年的时候,写一篇五百字的作文都困难;看看现在,岁月的杀猪刀已经无情的驱赶着LZ行走了这么多年,当真是岁月如梭、光阴似箭啊!好了,闲话少说,欲知后事如何,且听下回分解!