什么是数字签名?
出自原文,by David Youd
鲍勃有两把钥匙,一把是公钥,另一把是私钥。
鲍勃的公钥可供任何需要它的人使用,但他将私钥留给自己。密钥用于加密信息。加密信息意味着“将其置乱”,这样只有拥有适当密钥的人才能使其再次可读。鲍勃的两个密钥之一可以加密数据,另一个密钥可以解密该数据。
苏珊(如下所示)可以使用鲍勃的公钥加密消息。鲍勃使用他的私钥解密消息。鲍勃的任何同事都可以访问苏珊加密的消息,但如果没有鲍勃的私钥,这些数据将一文不值。
有了他的私钥和合适的软件,鲍勃可以在文档和其他数据上进行数字签名。数字签名是鲍勃在数据上加上的“戳”,是鲍勃独有的,很难伪造。此外,签名确保对已签名的数据所做的任何更改都不会被检测不到。
为了签署一份文件,鲍勃的软件将通过一个称为“哈希”(Hash函数)的过程将数据压缩成几行。这几行被称为消息摘要(Digest)。(无法将消息摘要更改回创建它的原始数据)
鲍勃的软件然后用他的私钥对消息摘要进行加密。结果就是数字签名(Signature)。
最后,鲍勃的软件将数字签名附加到文档中。散列的所有数据都已签名。
鲍勃现在把文件传给帕蒂:
首先,帕蒂的软件对签名进行解密(使用鲍勃的公钥),将其重新转换为消息摘要。如果这样做有效,那么证明鲍勃签署了文档,因为只有鲍勃拥有他的私钥。帕蒂的软件然后将文档数据散列成消息摘要。如果消息摘要与签名解密时创建的消息摘要相同,则帕蒂知道签名数据没有更改。
道格(我们不满的员工)想欺骗帕蒂。道格确保帕蒂收到一条签名消息和一个似乎属于鲍勃的公钥。帕蒂不知道,道格欺骗地发送了一对他用鲍勃的名字创建的钥匙。除了亲自收到鲍勃的公钥外,帕蒂如何确保鲍勃的公钥是真实的?
碰巧苏珊在公司的证书颁发中心工作。苏珊只需签署鲍勃的公钥以及有关鲍勃的一些信息,就可以为鲍勃创建数字证书。
现在,鲍勃的同事可以检查鲍勃的可信证书,以确保他的公钥确实属于他。事实上,鲍勃的公司没有人接受不存在苏珊生成的证书的签名。这使苏珊有权在私钥泄露或不再需要时撤销签名。还有更为广泛接受的认证机构认证苏珊。
假设鲍勃向帕蒂发送了一份签名文件。为了验证文档上的签名,帕蒂的软件首先使用苏珊(证书颁发机构)的公钥检查鲍勃证书上的签名。证书的成功反加密证明是苏珊创建的。证书解除加密后,帕蒂的软件可以检查鲍勃是否与证书颁发机构保持良好关系,以及所有关于鲍勃身份的证书信息是否未被更改。
帕蒂的软件然后从证书中获取鲍勃的公钥,并使用它检查鲍勃的签名。如果鲍勃的公钥成功地对签名进行了反加密,则帕蒂可以确信签名是使用鲍勃的私钥创建的,因为苏珊已经验证了匹配的公钥。当然,如果签名是有效的,那么我们知道道格没有试图更改签名的内容。