论坛首页 综合技术论坛

数字证书的应用和实施机制

浏览 4708 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-02-20   最后修改:2009-10-14

为什么需要数字证书?

1. 标志和证明网络通信双方身份,确保交易实体的真实性或者签名信息的不可否认性。(数字签名和签名验证)

 

2. 对在网络上传输的信息进行加密,确保信息的机密性、完整性。

 

总而言之,我们用数字证书核心的加密功能,提供网络安全。下面,让我们一一分析数字证书在保证网络安全的各方面所采用的方式或实施的机制。    

 

A. 身份认证

 

     情景:A和B双方,A要对B的身份进行验证。

 

      初步实施机制:B用自己的私钥对自己的口令进行数字签名,然后发给A。A用B提供的公钥来来验证B用自己独有的私钥进行的数字签名。

 

      问题:B乐于给A提供公钥,而且他也不担心谁得到了他的公钥,因为本身公钥就是公开的。但是,A却担心他得到的公钥是否真的是B的公钥。假设这时有个黑客H,在B给A传输公钥的过程中截断了信息并用自己的公钥替代B的公钥,H取得了A的信任后就可以侵入A的系统。这个问题即如何安全地发布公钥的问题。

 

      进阶实施机制:其实我们可以看到,公钥发布也是一个认证问题。我们可以通过为B的公钥进行签名,而使H想修改B公钥的企图变得困难。这就是现今很多证书发布机构的作用。他们首先认证了B的身份,为B的公钥用机构的私钥进行签名,这时候得到的数字序列即称为证书。这时候,A首先得用证书机构提供的公钥解密来得到B的公钥。而如果H想篡改B的公钥,他首先得得到机构的私钥。

 

     还有问题:如何保证机构公钥发布的安全性?

 

     其实:没有一种安全认证能去除所有的风险。本质上,我们只是让它更加安全而已。而安全性是一种代价和安全之间的折衷---安全风险越小,安全的代价就越高。

 

B. 数据完整性

 

     情景:A给B传输数据。

 

     问题:B要知道A传送给他的数据是否完整。

 

     初步实施机制:A通过哈希算法生成一个数值跟数据一起传送给B。因为哈希算法的特点是输入数据的任何变化都会引起输出数据的不可预测的极大变化。B接收到数据和哈希数值后,再次对数据进行哈希求值来验证。

 

     问题:如何保证哈希数值是正确的,或者说在传输过程中没有被修改?

 

    进阶实施方案:A用自己的私钥为哈希数值加密。谁都可以利用A的公钥来查看哈希数值,但是因为没有A的私钥,所以无法篡改哈希数值。B在接收到A的数据之后,即可验证数据的完整性。

 

C. 数据保密性

 

    情景:同样是A给B传送数据。我们可以通过哈希算法和私钥来保证数据完整性,但是如果传输的是一些敏感数据,我们不想在传输过程中被其他人”窃看“传输数据。

 

    实施机制:我们采用”数字信封“机制来实施保密性服务。A先产生一个对称性密钥,然后对敏感数据进行加密。同时,A用B的公钥对对称密钥进行加密,像装入一个‘数字信封”中。然后将“数字信封”和被加密的敏感数据一起发送给B。B用自己的私钥拆开“数字信封”,得到对称密钥。然后用对称密钥对敏感数据进行解密。

 

    问题:为什么不直接用B的公钥对数据进行加密?

 

    原因:原因在于速度。对称加密是一种速度极快的加密方法,在数据量较大的时候,优势很明显。   

 

D. 不可否认性

 

    情景:A传送数据给B。B可不想A在某一天否认他曾经给B传送过数据。

 

    实施机制:很简单,即我们在上面很多场景中应用的数字签名。因为A传送的数据用了A的密钥加密,此数据只能用A的公钥解密,所以同时也验证了数据确实来源于A。


     其它场景:接受后的不可否认性,传输的不可否认性,创建的不可否认性,同意的不可否认性等等。
   发表时间:2009-07-27  
讲解的很深入浅出,多谢
0 请登录后投票
   发表时间:2009-07-31  
很好,通俗易懂
0 请登录后投票
   发表时间:2009-09-13  
作者设计的几个问题完全是我一直以来想问的问题,感谢分享。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics