数字签名和数字证书的原理及应用

来源:互联网 发布:js 拖动滑块完成验证 编辑:程序博客网 时间:2024/06/16 03:03

数字签名及其作用: 

        例如,A发送一段信息给B. B怎样才能确认这个信息是A发出并且在接收之前没有被第三方篡改过呢? 这就是数字签名的作用。 A可以用“接要”算法(SHA-1或MD5)对这段信息获取接要,然后再对获得的接要用自己的私钥进行加密。然后将这段消息及加密过的摘要一同发给B.

        B在接到信息及加密过的摘要后,着手进行两件事。一是用A的公钥将加过密的接要进行解密,得到解过密的接要信息,二是再利用与A相同的接要算法对信息再进行一次“求摘要”运算。 然后再将解过密的接要与求得的接要进行对比,如完全一致,则可确信接到的全部信息是由A发出并且没有经过任何篡改。

        所以,A所用私钥对接要经过加密之后的数据,就是A的数字签名。 数字签名有防否认、防篡改的作用。

 

数字证书及其作用:

        生活中还有这样的情形。如果你(B)收到从A处发过来的有数字签名的一份信息,该信息声称A是某银行代理,要求你在该银行的账户及密码来帮助你做一件交易(假设你确实需要这个银行来帮你做这份交易)。然后你验证了A的数字签名,证明这段信息确实是由A发过来的,这个时候你就愿意给A你的银行账户及密码了么?

        回答当然是“不!” 因为你仅仅证明了信息确实是A发过来的没有经过篡改的信息,但是A究竟是不是该银行的代表呢? 这是数字签名不能确认的。 这时候需要有一个权威的、得到你确信的中间人(或机构)M, 这个M向A颁发了一份证书,表示他确实是这个银行的代表。 这份证书里有这个权威机构M的数字签名,以保证这份证书确实是M所发。现实中这些M都是些大公司(如VeriSign/Microsoft等)或高级别的政府(如省级)所创立的CA(证书认定)中心。

        所使用的数字证书也有具体的格式。现在所用的大都是X.509V3格式的。

        我们在电子商务、代码签名中,都大量地使用了数字证书。

 

        使用数字证书的过程如下:

 

 

现有持证人甲向持证人乙传送数字信息,为了保证信息传送的真实性、完整性和不可否认性,需要对要传送的信息进行数字加密和数字签名,其传送过程如下:

(1)甲准备好要传送的数字信息(明文)。

(2)甲对数字信息进行哈希(hash)运算,得到一个信息摘要。

(3)甲用自己的私钥(SK)对信息摘要进行加密得到甲的数字签名,并将其附在数字信息上。

(4)甲随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。

(5)甲用乙的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。

(6)乙收到甲传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。

(7)乙然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。

(8)乙用甲的公钥(PK)对甲的数字签名进行解密,得到信息摘要。 乙用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。

(9)乙将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。

 

            

        

原创粉丝点击