什么是数字签名?数字证书?

谈一下对数字签名和数字证书的理解。先来看看双钥加密算法RSA( Rivest-Shamir-Adleman)

在双钥加密的情况下,密钥有两把,一把是公开的公钥,还有一把是不公开的私钥。

双钥加密的原理如下:

  • 公钥和私钥是一一对应的关系,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立。
  •  所有的(公钥, 私钥)对都是不同的。
  • 用公钥可以解开私钥加密的信息,反之亦成立。
  •  同时生成公钥和私钥应该相对比较容易,但是从公钥推算出私钥,应该是很困难或者是不可能的

因为任何人都可以生成自己的(公钥,私钥)对,私钥自己保存,公开公钥。

假设A生成私钥公钥对,私钥自己保存。B拿到A的公钥。

    B要给A发数据,用公钥加密数据发送给A,A接受用私钥解密,反之成立。

    A想要通过数字签名的方式,给B发送数据,

    a) 用Hash函数生成数据的摘要(digest)

    b)用私钥加密digest生成数字签名(digital signature),发送给B

    c)如果B可以用公钥成功解密signature得到digest,则证明数据是A发出的(抗否认性)

    d)将数据通过Hash生成新的digest,若新的digest和上步解密得到的digest相同则证明数据是完整的(完整性)

加密是用来对数据加密保证传输过程中,数据内容不被别人获取;数字签名保证数据的完整性,但不保证数据加密,不能保证数据传输途中无人嗅探窃听。将加密和数字签名结合可以很好的保证数据传输的安全性。

因为任何人都可以生成自己的(公钥,私钥)对,所以为了防止有人散布伪造的公钥骗取信任,就需要一个可靠的第三方机构来生成经过认证的(公钥,私钥)对。第三方机构即证书中心(CA),认证的方式为:A的信息+A的公钥+证书的信息 通过CA私钥进行加密即可得到数字证书,A要给B发送数据:

    a) 在有数字签名(signature)的同时加上数字证书(digital certificate)发送过去

    b) B用CA的公钥解密数字证书得到A的公钥,用A的公钥完成抗否认性以及数据完整性的验证。

CA的公钥可以在网上取到,浏览器中也会有预存,证书必须使用CA的私钥加密,如果CA的公钥能打开,就证明该证书是CA颁发的。

https协议就是数字证书的实例,这个协议主要是用来对网页加密。通常公开钥算法用于相互验证,之后会建立session key(比如128位AES key)。后续交互的信息都是用session key和对称加密算法(比如AES)来加解密的,已经与证书本身和公钥密钥无关。因为公开密钥算法比对称密钥算法开销大很多,为了速度起见,https 连接只在建立连接时,使用服务器的公钥加密,这个阶段是为了交换一个共享密钥,接下来的过程使用的是对称算法。

参考自:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html 

猜你喜欢

转载自blog.csdn.net/w18306890492/article/details/85082182