数字证书原理

概念介绍

    对称加密算法:加密和解密使用同一个密钥。

    非对称加密算法:加密和解密使用的密钥不是同一个。典型的如RSA

    公钥加密算法:拥有一对密钥,公钥和私钥,用私钥进行解密和数字签名,用公钥来进行加密及验证签名。

    encryption :加密

    decryption:解密

    asymmetric :非对称

    public key: 公钥

    private key: 私钥

    message digest:消息摘要

一 数字证书原理介绍       数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用 自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段保证加 密过程是一个不可逆过程,即只有用私有密钥才能解密。在公开密钥密码体制中,常用的一种是RSA体制。其数学原理是将一个大数分解成两个质数的乘积,加密和解密用的是两个不同的密钥。即使已知明文、密文和加密密钥(公开密钥),想要推导出解密密钥(私密密钥),在计算上是不可能的。按现在的计算机技术水平,要破解目前采用的1024位RSA密钥,需要上千年的计算时间。公开密钥技术解决了密钥发布的管理问题,商户可以公开其公开密钥,而保留其私有密钥。购物者可以用人人皆知的公开密钥对发送的信息进行加密,安全地传送给商户,然后由商户用自己的私有密钥 进行解密。

二 数字签名

用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:

(1)保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;

(2)保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。

数字签名具体做法是:

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

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

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

      在具体过程中,有2种操作:1.签名操作 2.解密操作

     签名操作:是发送方用私钥进行签名,接受方用发送方证书(即公钥)来验证签名;

     加密操作:则是用接受方的证书(即公钥)进行加密,接受方用自己的私钥进行解密。

 因此,如果说数字证书是电子商务应用者的网上数字身份证话,那么证书相应的私钥则可以说是用户的私章或公章。

本人有幸负责过邮政网关与邮政ca服务器的通讯工作,对数字证书有自己的经历,谈谈双方验证的过程。

1.首先生成原始信息,也就是原始报文,是双方约定的一个格式。

2.对信息进行hash算法(附录1),用的是md5算法,这个是公开的一个算法。目的是为了生成一个摘要值,即hash值,这里简称为数字指纹。

3.用私钥对数字指纹进行签名,然后连同原报文一起发送给ca服务器,这个原串+签名串合起来的数据,为整个发送数据。

4.验证签名,先得到原串和签名串,用证书的公钥对签名串进行解密,即得到数字指纹,再对原串进行相同的hash算法,比较2个指纹,即验签。该验证过程包括2个,首先还原数字指纹,如果私钥不正确,或者原信息在传输过程中被篡改,则还原出来的数字指纹不能和新生成的数字指纹相匹配,从而保证了传输过程的安全性。

5.ca服务器回应网关的时候,也是拿自己的私钥签名,网关用公钥验签。

附录1:在数字签名中有重要作用的数字指纹是通过一类特殊的散列函数(HASH函数)生成的。对这些HASH函数的特殊要求是:

1.接受的输入报文数据没有长度限制;

2.对任何输入报文数据生成固定长度的摘要(数字指纹)输出;

3.从报文能方便地算出摘要;

4.难以对指定的摘要生成一个报文,而由该报文可以算出该指定的摘要;

5.难以生成两个不同的报文具有相同的摘要

相关推荐