Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146295
  • 博文数量: 39
  • 博客积分: 993
  • 博客等级: 准尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-14 16:36
个人简介

https://github.com/dengdaiyemanren

文章分类

全部博文(39)

文章存档

2015年(1)

2012年(3)

2011年(27)

2010年(4)

2008年(4)

分类: 网络与安全

2011-01-14 15:24:25

数字证书是一个经证书认证中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的数据文件。认证中心的数字签名可以确保证书信息的真实性,用户公钥信息可以保证数字信息传输的完整性,用户的数字签名可以保证数字信息的不可否认性。   

数字证书是各类终端实体和最终用户在网上进行信息交流及商务活动的身份证明,在电子交易的各个环节,交易的各方都需验证对方数字证书的有效性,从而解决相互间的信任问题。   

认证中心(CA)作为权威的、可信赖的、公正的第三方机构,专门负责为各种认证需求提供数字证书服务。认证中心颁发的数字证书均遵循X.509 V3标准。X.509标准在编排公共密钥密码格式方面已被广为接受。   

数字证书的功能主要包括:身份验证、信息传输安全、信息保密性(存储与交易)、信息完整性、交易的不可否认性。   

数字安全证书的工作流程   

如果客户A想和银行B通信,他首先必须从数据库中取得银行B的证书,然后对它进行验证。如果他们使用相同的CA(证书认证中心),事情就很简单,客户A 只需验证银行B证书上CA的签名。如果他们使用不同的CA,问题就较为复杂。客户A必须从CA的树形结构底部开始,从底层CA往上层CA查询,一直追踪到 同一个CA为止,找出共同的信任CA。目前个人获取网上银行安全证书的途径都是通过银行申请,所以双方肯定采用同一证书认证中心颁发的证书。   

现在假设客户A向银行B传送数字信息,为了保证信息传送的真实性、完整性和不可否认性,需要对要传送的信息进行数字加密和数字签名,其传送过程如下: 
1)客户A准备好要传送的数字信息(明文)。   
2)客户A对数字信息进行哈希(hash)运算,得到一个信息摘要。 
3)客户A用自己的私钥(SK)对信息摘要进行加密得到客户A的数字签名,并将其附在数字信息上。   
4)客户A随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。 
5)客户A用双方共有的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。   
6)银行B收到客户A传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。   
7)银行B然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。   
8)银行B用双方共有的公钥(PK)对客户A的数字签名进行解密,得到信息摘要。银行B用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。  
9)银行B将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。

数字证书原理
  数字证书是网络通讯中标志通讯各方身份信息的一系列数据,它提供了在互联网上验证通信各方身份的方法,它是权威机构-CA认证机构,又称为证书授权(Certificate   Authority)中心发行。

  数字证书是经证书管理中心数字签名的包含公开密钥、拥有者信息以及公开密钥的文件。证书的格式遵循ITUTX.509国际标准。X.509数字证书通常包含以下内容:
  1.证书的版本信息。
  2.证书的序列号,每个证书都有唯一的证书序列号。
  3.证书所使用的签名算法。
  4.证书的发行机构名称,命名规则一般采用X.500格式。
  5.证书的有效期,通用的证书一般采用UTC时间格式,它的计时范围为1950-2049。
  6.证书所有人的名称,命名规则一般采用X.500格式。
  7.证书所有人的公开密钥。
  8.证书发行者对证书的签名。

  数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个客户可以设定特定的仅为本人所知的私有密钥(私钥),用它进行数据解密和签名;同时设定一把公共密钥(公钥)并由本人公开,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的地了。

  数字加密是一个不可逆过程,即只有使用私有密钥才能解密。在公开密钥密码体制中,常用的是RSA体制。其数学原理是将一个大数分解成两个质数的乘积,加密和解密用的是两个不同的密钥。即使已知明文、密文和加密密钥(公开密钥),在计算上想要推导出解密密钥(私密密钥)是不可能的。按现在的计算机技术水平,要破解目前采用的1024位RSA密钥,需要上千年的计算时间。

  公开密钥体系解决了密钥发布的管理问题,客户可以公开公开密钥,而保留私有密钥。使用者可以使用接收方的公开密钥对发送的信息进行加密,安全地传送到对方,然后由接收方使用自己的私有密钥进行解密。

  客户可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:
  (1)保证信息是由签名者自己签名发送的,签名者不能否认或难以否认。
  (2)保证信息自签发后到收到为止未曾做过任何修改,签发的文件是真实文件。

  数字签名具体做法如下:
  1)将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证,只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。

  2)将该报文摘要值发送者的私人密钥加密,然后连同原报文一起发送给接收者,产生的报文称数字签名。

  3)接收方收到数字签名后,用同样的HASH算法对报文计算摘要值,然后与用发送者公开密钥进行解密解开的报文摘要值相比较,如果相等则说明报文确实来自所谓的发送者。

  如果所有用户都由同一CA为其签署证书,则这一CA就必须取得所有用户的信任。用户证书除了能放在目录中供他人访问外,还可以由用户直接把证书发给其他用户。用户B得到用户A的证书后,可相信用户A的公钥加密的消息不会被他人获悉,还相信用户A的私钥签署的消息是不可全国伪造的。

 

非对称加密最初可能是为了解决密匙保管与交换难题. 非对称加密过程中用一个密匙加密只能用另一个密匙解密. 由此解决了密匙交换难题: 公匙随意发放; 保管也大为简化: 保护好私匙就可以了. PKI 之所以成为或 "称为" 体系, 是包括了实施中所必需的公匙管理: 认证, 发放, 收回, 查询等.

现在看加密过程. 以加密邮件为例. Alice 发加密邮件给 Bob.
1a. Alice 从 Bob那里或从PKI服务器得到 Bob的公匙
2a. Alice 用 Bob的公匙加密邮件, 发送给 Bob
3a. Bob 受到加密邮件, 用自己的私匙解密.
其他人如果截获加密邮件, 由于没有 Bob的私匙, 无法解密邮件.

签名过程则是非对称加密的另一用法
1b. Alice 在用 Bob的公匙加密邮件前先对邮件产生摘要Ha.
2b. Alice 用自己的私匙加密邮件摘要, 连同加密邮件(2a)发送给 Bob
3b. Bob 将加密邮件摘要用Alice的公匙解密得到解密的邮件摘要Ha. (公匙可以从 Aliceb那里或从PKI服务器得到), 并用自己的私匙解密邮件(3a).
4b. Bob 对解密的邮件产生摘要Hb, 与(3b)解密的邮件摘要Ha比较.
如果无误, 则可确认: 1) 该邮件由Alice 发出, 因为只有Alice 有自己的私匙; 2)邮件在传递过程中未遭篡改, 因为邮件摘要比较结果一致.
另外, 因为只有Alice 有自己的私匙, Alice 无法否认该邮件由自己发出.

如果 PKI Service Provider 用 RootCA 对 Alice 的公匙做签名操作, 由于RootCA的公匙可以公开获得, 对 Alice 的公匙进行核实(4b)即可确认该公匙为 Alice 所有. 在解密的邮件中看到对方的证书信息是因为对方对邮件不但加密并且签名, 对方的公匙已经含有有关信息. 既是签名, 当然要你看到才对.

总结:
用对方的公匙加密, 用自己的私匙解密
用自己的私匙签名, 用对方的公匙核实

阅读(1801) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~