什么是数字签名【翻译】

原文地址:What is a Digital Signature?
1)如下图所示,小明有两把钥匙,一把是公钥(Public Key),另一把是私钥(Private Key)

什么是数字签名【翻译】_第1张图片
TIM20170530183723.jpg

2)任何人都可以拿到小明的公钥,但他的私钥只有他自己知道: 


什么是数字签名【翻译】_第2张图片
TIM20170530183739.jpg

密钥用于加密信息。加密信息意味着把信息打乱,只有拥有正确的秘钥的人才能使其重新变为可读的。小明的两个密钥中的任意一个都能加密数据,并且另一个可以解密数据。

3)如下图所示,张三可以使用小明的公钥加密数据,小明可以使用自己的私钥解开密文:  


什么是数字签名【翻译】_第3张图片
TIM20170530183810.jpg

小明的同事们都可能拿到张三加密的消息,但没有小明的私钥的话,这些数据对于他们来说也没什么用。

4)使用自己的私钥及相应的软件,小明可以把数字签名(digital signature)及一些其他信息写入文档中。数字签名是小明在自己的数据上加盖的印戳(这个印戳和小明唯一对应起来)并且这个印戳很难伪造。另外,签名也保证了对已签名数据的任何修改都可以被发觉。

为了对文档进行签名,小明的软件使用算法将数据浓缩为几行信息,这个过程称为“哈希”。这几行信息就是消息摘要(message digest)(几乎无法从消息摘要推断出相应的原始数据):    

什么是数字签名【翻译】_第4张图片
TIM20170530183824.jpg

5)小明的软件对消息摘要进行加密,得到了数字签名(digital signature):  

TIM20170530183844.jpg

6)最后,小明的软件把数字签名追加到文档中,原始数据就被签名了:


什么是数字签名【翻译】_第5张图片
TIM20170530183922.jpg

接下来,小明把文档发送给张三。

7)张三首先使用小明的公钥把签名解密为消息摘要。如果成功,则证明文档确实是由小明签名的,因为只有小明拥有私钥。接着,张三的软件将文档数据哈希成消息摘要,如果此消息摘要与签名解密得到的消息摘要是一模一样的,则说明已签名的数据并未发生改变。


什么是数字签名【翻译】_第6张图片
TIM20170530183935.jpg

接下来,看个更复杂的场景。

8)李四(一位心怀不轨的雇员)想要欺骗张三。李四知道张三电脑上有小明的公钥,于是使用小明的名字创建了一个密钥对(为了描述方便,这里称为“假私钥”和“假公钥”),然后偷偷地使用假公钥替换了张三电脑中的公钥(小明真正的公钥)。接下来,李四用假私钥对数据进行签名,张三使用假公钥(他不知道自己电脑上小明的公钥已经被替换)解密了签名并验证了摘要信息,他会误认为消息确实是小明发送的。除了亲自拿到小明的公钥外,张三怎样知道小明的公钥是可信的?

9)王五在公司的证书授权中心(certificate authority,简称“CA”)工作,他用小明的公钥及一些其他信息给小明签发了一张数字证书(digital certificate)

什么是数字签名【翻译】_第7张图片
TIM20170530194559.jpg

现在,小明的同事可以通过校验证书来确认小明的公钥是否可信。实际上,小明公司中没人会承认不带证书的签名。此外,如果小明的私钥丢失了或者证书不在需要了,王五也可以撤销(revoke)证书。

10)现在,小明发送了一个已签名的文档给张三。为了校验文档上的签名,张三的软件首先使用王五(本例中就是“证书授权中心”)的公钥来验证小明证书上的签名。成功解密证书就表明证书确实是王五签发的。

接下来,张三的软件从证书中提取出小明的公钥并使用它校验小明的签名。如果小明的公钥成功了解密了签名,张三就确信签名是由小明的私钥创建的,因为王五已经对这个公钥进行了认证。当然,如果签名是合法的,我们也知道李四(那个坏家伙)并未修改过已签名内容。

你可能感兴趣的:(什么是数字签名【翻译】)