文章阅读页通栏

【SCRY知识课堂】什么是数字签名?

来源: SCRYINFO 作者:SCRY知识课堂
上周我们讲到了公钥、私钥,今天要讲的数字签名,刚好也会用到它们。小狐狸有两个密钥,一个叫公钥Public Key,一个叫私钥Private Key。 小狐......

上周我们讲到了公钥、私钥,今天要讲的数字签名,刚好也会用到它们。小狐狸有两个密钥,一个叫公钥Public Key,一个叫私钥Private Key。

小狐狸的公钥大家都能获得,不管是二哈、柴柴还是小短腿,不过私钥是自己私有的。但不管是私钥还是公钥,都可以用来加密信息,将一段可以理解阅读的明文信息进行加密后,变成一段‘乱码。因此,只有持有正确密钥,才能重新将这段加密后的信息恢复成可以理解阅读的真实信息。

有一天,二哈要发一个重要的消息给好朋友小狐狸。他把“明天中午,老地方见”这句话,用小狐狸的公钥进行了加密。小狐狸收到后,就可以用自己的私钥进行解密。就算后来有人窃取了二哈传给小狐狸的信息,但是由于没有小狐狸的私钥,无法对信息进行解码,所以即使窃取了信息,也无法阅读理解。

这时候,柴柴发现了二哈发送的这段信息,可自己又没有私钥无法看到信息原本内容。却可以对信息进行篡改,破坏原有的信息,这样小狐狸收到被篡改的信息之后,再用自己的私钥进行解码,就会与二哈本来想要传达的信息出现不一致。

这时心里就想:“嘿嘿嘿,得想办法捉弄一下小狐狸”。可是柴柴真的能如尝所愿吗?

所以,我们现在的问题就是,我们要保证信息的完整性,也就是保证信息不被破坏,或者说,当信息被破坏之后,接收方可以识别出,这个时候的信息是被破坏过的,就将其丢弃。

数字签名就可以解决这样的问题。根据数字签名,接收方接收到信息之后,可以判断信息是否被破坏过,如果没有被破坏,就可以正确的解码,如果被破坏,就直接丢弃。

数字签名可以保证对信息的任何篡改都可以被发现,从而保证信息传输过程中的完整性。

那么,数字签名是如何实现对完整性保证的呢?

这里有一个关键技术:Hash,也就是哈希技术。

首先,二哈先对将要传输的信息(原文信息)进行Hash,得到一串独一无二的字符,这就是——信息摘要Message Digest。

这段字符有多么独一无二呢?我们要知道,Hash往往是不可逆的。而且,不同的原文,Hash过后,结果是不一样的。比如下面的”bitcoin”和”bit.coin”, 只多了一个“.”,结果就大相径庭。

这样就保证了柴柴对原文的任何修改都会被发现。

这时候,二哈还要将Hash后得到的信息摘要,用自己的私钥进行加密,以此保证只有二哈的公钥才能对信息摘要进行正确的解码。这样一来,就保证了信息摘要一定是来自二哈的,也就是起到了一个独一无二的签名的作用。

下面是重点:
加密后的信息摘要实际就是数字签名的内容。

其实到这里,我已经回答了一个问题——“什么是数字签名?”

那么,数字签名的作用是如何体现的呢?我们继续往下看。

在得到数字签名后,二哈还需要把数字签名附加在原文信息后面,这样就形成了一个完整的带数字签名的信息报文。

二哈现在把这个数字签名附加在信件原文下面,一起发给了小狐狸。

小狐狸收到来信后,取下数字签名,用二哈的公钥解密,这时候就得到了信件的摘要。既然能用二哈的公钥进行解密,那就说明了这个信件确实是二哈发出的。

这时,小狐狸还需要确认一个问题,那就是这封信有没有被别人(柴柴)修改过?

小狐狸应该做呢?大家思考一下。

回答这个问题,我们需要先理清小狐狸现在有什么?
小狐狸有:1、来自二哈的带有数字签名的信件;2、已经通过二哈的公钥解密出的信息摘要。

在最前面跟大家说过,由信件原文,通过Hash运算也可以得到信息摘要。

因为Hash过后的信息,都是独一无二的,小狐狸只需要将两个信息摘要进行比较,就可以知道信件原文到底有没有被修改过。

从上图中,我们可以看到两个信息摘要是相同的,这说明了信件原文未被修改过。

以上,就是今天所讲数字签名的全部内容。

关键词: 数字签名  SCRY  
0/300