网站导航:首页-计算机网络知识-什么是数字证书

什么是数字证书

  数字证书是互联网通讯中由权威的证书颁发机构(Certificate Authority,CA)颁发的,在互联网通信中标志通信各方身份信息的电子文档。它提供了在Internet上验证通信实体身份的方式。数字证书并不是“数字身份证”,而是“身份认证机构”盖在“数字身份证”上的一个印章(即CA机构在“数字身份证”上的一个电子签名)。人们可以利用它在网络中识别对方身份。接下来,将通过举例的方法对数字证书的工作原理进行简要说明。

  两台计算机之间互相通信时,大多数情况并不是由中间介质(如网线)直接连接的,而要经过若干个中间设备(比如路由),通信过程如图1所示。

设备之间的通信经过中间设备
图1 设备之间的通信经过中间设备(点击图片可放大显示)

  在这个过程中,有如下两个问题需要解决:

  问题1:除了设备A与设备B外,中间设备也能得到数据的内容,不利于机密数据的传输。

  问题2:设备A的信息发送到中间设备后可能存在被别有用心的人修改后再传输给设备B,换句话说,设备B无法验证所收到的消息就是来自设备A的。

  为了解决问题1,人们采用把信息加密的方法来保证数据传输过程中不被中间设备得知传输数据的内容。加密就是通过某种特殊的算法,改变原有的信息数据,将明文信息隐匿起来,使之在缺少特殊信息时不可读,而使未经授权的用户即使获得已加密的信息,但因不知解密的方法,仍然无法得知信息的内容的一种手段。

  将所通信的内容加密后再进行传输,其过程如图2所示。

加密传输通信数据
图2 加密传输通信数据(点击图片可放大显示)

  图2所描述的这种方法看上去保证了所传输的信息即使被中间设备获得,也无法了解数据的真实内容,但其中存在着一个问题。要知道,加密之所以安全,是因为加密的密钥(即图2中的通信密码)是绝对隐藏的。设备A与设备B之间的通信密码又该如何传输呢?如果采用图1的明文传送的方法,即中间设备是有可能获取这次通信的通信密码的,如果通信密码泄露,那么设备A与设备B之间的加密便毫无意义了。

  为了解决这个问题,人们采用了一种不对称加密的方案。图2中所所采用的加密方式,其加密与解密用的是同一个密码,这种方式成为对称加密。而不对称加密是使用两个密钥(后文中可能也成为密码)的一种加密方法,由密钥1加密的信息,密钥1本身不能解密,需由密钥2解密,而由密钥2加密的信息,密钥2本身也不能解密,需要有密钥1来解密。

  通过这种不对称的加密方案来传输图2中的通信密码的过程如图3所示。

不对称加密方式传输通信密码
图3 不对称加密方式传输通信密码(点击图片可放大显示)

  图3中所描述的通信过程如下:设备A自己生成一对密码分别为密码1与密码2,并将密码1明文传送给设备B。当然在此过程中中间设备有可能知晓密码1。随后设备B自己生成一个通信密码,并用刚得到的密码1加密,最后把加密的通信密码传送给设备A。在此过程中,中间设备也有可能得到加密的通信密码,但中间设备所拥有的密码1无法为加密的通信密码解密,所以通信密码仍然是安全的。设备A将得到的加密的通信密码用自己的密码2解密后得到通信密码。这样就产生了一个仅有设备A与设备B知晓的通信密码,随后就可以采用图2所示的方法继续信息传输了。

  在网络中一台设备可能需要与多台其他设备进行通信,这样只要把我们的密码1发送给各个需要与我们通信的设备,而密码2始终由我们自己保留,这时只要我们的密码2不泄露,就可以保证我们我们的通信内容不被第三方所获取。我们把发送给其他设备的密码(即上述密码1)成为公钥,把自己保留的密码(即上述密码2)成为私钥。

  为了解决问题2,人们采用数字签名的方法来验证消息的来源。整个过程如图4所示。

数字签名
图4 数字签名(点击图片可放大显示)

  在设备A传输信息之前,首先通过某函数对要传输的的信息计算出来一串对应的字符串,该函数所产生的字符串是由所传输的文本唯一确定的,换句话说,如果传输的信息发生变化,则该函数的结果一定有变化。在通过该函数产生字符串后,由私钥加密。这个由私钥加密后的这个字符串就是数字签名。设备A在传送信息的同时将数字签名与所传送的信息一起传输给设备B。当设备B收到信息后,首先利用公钥为数字签名解密,然后在通过相同的函数对传输的信息计算出一串对应的字符串,并将新产生的字符串与解密数字签名得到的字符串相对比是否相等。若相等则认为该信息室友设备A所发送来的,若不相等,则该信息可能经过中间设备修改过。由于设备B是通过设备A发送来的公钥来解密的,所以可以肯定所解密的数据一定是由设备A的私钥加密的,而设备A的私钥是仅有设备A自己持有的,所以可以确定该签名一定是设备A的签名。而解密后的内容,与传输来的信息的某函数的结果是相同的,故也可以说明该传输来的信息在设备A发送出来后没有被中间设备修改过。

  其实利用图3方法还存在一个问题:当设备A向设备B传送公钥时,被别有用心的人在中间设备处修改为了第三方C的公钥,并传送给了设备B。当设备B接受到这个公钥后,并不知道这个公钥是第三方C的,而将自己随机产生的密码通过此公钥加密后,又向设备A传送,当此信息经过中间设备时再一次被中间设备得到,因为此通信密码就是用第三方C的公钥加密的,所以第三方C可以轻易的通过自己的私钥解密,解密后得到本次通信的通信密码,接下来第三方C便可以冒充设备A与设备B进行通信。

  上述问题发生的关键在于设备B收到公钥的时候,并不知道这个公钥是哪个设备的公钥。为了解决此问题,人们将自己的公钥在权威的数字证书颁发机构(CA)进行认证,将自己的公钥与公钥所有者的相关信息放在一起,并利用CA机构自己的私钥进行数字签名,这些由CA机构签名并颁发的公钥和公钥所有者信息就是数字证书,也叫公钥证书(如图5所示)。这些权威的CA机构是被各版本的操作系统和浏览器信任的,各版本浏览器中都存储着这些权威CA机构的公钥。而当设备间在传输信息的时候也不再直接传输公钥,而是传输数字证书。

数字证书的组成
图5 数字证书的组成

  当接受信息一端接受的对端传输来的数字证书后,首先验证这个证书的颁发机构是不是所信任的颁发机构,若不是,会弹出警告信息提醒用户,若是,则继续用浏览器自带的公钥验证CA机构的数字签名,若验证失败,也会弹出警告信息提醒用户,若验证成功,则会提取其中的公钥与公钥所有者信息,据此就能得知证书中所包含的公钥的所有者信息了。从而解决了因不知公钥所有者而导致信息无法加密传输的情况。整个过程如图6所示。

利用数字证书加密的过程
图6 利用数字证书加密的过程(点击图片可放大显示)

已经到本页底线啦,您可以:返回目录页|返回首页