基础知识梳理(2)数字签名,很简单
网络通信过程,通常都存在一些安全隐患,而且这些隐患根除不掉,只能通过一系列的措施来防范。
以一次通信过程为例,我在郑州通过向北京的你发送了一条消息,消息内容很简单:你好!
从郑州发送到北京的消息是你好!结果却由于消息在网络上传输时被人抓包篡改了,到北京变成了“你坏!”,后果就很严重了,对吧,你懂的。
怎么防止这种情况的出现呢?(这时我突然想到日本偷袭珍珠港时的电报破解)
保证消息在传输过程中不被篡改从理论上来讲是不可能的,但是我们可以在北京接收到这条消息时判断出消息是不是经过修改了,不接收被修改过的消息。
方法是这样的:
1,在郑州发送“你好!”时,使用一种规则,为“你好!”这条消息做一个摘要,举个简单例子:比如“好!”这两个字符是最后两个字符,我们为这个摘要按照ASCII表生成一个数字码:1234
2,在郑州这边将1234这个数字码按照加密规则加密,并附加到“你好!”消息包上进行传输。
3,北京收到消息包后,按照约定规则解密1234这个摘要,看看是不是消息的结尾两个字符,若是,则传输过程没被篡改,若不是,则传输过程中有篡改。
在百度中搜到一张图可以很好的描述这个过程:
这个就是数字签名的雏形了,给消息包加摘要加密,传输的两端使用各自的密钥解密后即可比对消息是否正确传输,这个模式通常也用来对WCF的服务进行验证。
下一篇将会学习一下X509的验证过程。