要实现数字签名,可以使用公钥密码机制。
公钥密码包括一个由公钥和私钥组成的密钥对,其中公钥用于加密,私钥用于解密。
整个过程如下图:
数字签名也同样会使用公钥和私钥组成的密钥对,不过这两个密钥的用法和公钥密码是相反的,即用私钥加密相对于生成签名,而用公钥解密则相对于验证签名。
整个过程如下图:
用公钥加密后所得到的密文,只能用与该公钥配对的私钥才能解密;同样地 ,用私钥加密所得到的密文,也只能用于该密钥配对的公钥才能解密。也就是说,如果用某个公钥成功解密了密文,那么就能证明这段密文是用于该公钥配对的私钥进行加密所得到的。
用私钥进行加密这一行为只能由持有私钥的人完成,正是基于这一事实,我们才可以将用私钥加密的密文作为签名来对待。
由于公钥是对外公开的,因此任何人都能够用公钥进行解密,这就产生了一个很大的好处,即任何人都能够对签名进行验证。
在公钥密码中,任何人都能够进行加密
在数字签名中,任何人都能够验证签名