计算机网络-7-3-数字签名

数字签名

数字签名必须保证能够实现以下3点:

  • 接收者能够核实发送者对报文的签名。也就是所,接收者能够确认该报文的确是发送者发送的。其他人无法伪造对报文的签名。这叫报文鉴别
  • 接收者确信所收到的数据和发送者发送的数据完全一样,没有被篡改过。这叫报文的完整性
  • 发送者事后不能抵赖对报文的签名,这叫不可否认

现在已有多种实现数字签名的方法。但采用公钥算法要比对称密钥算法更容易实现。下面就来介绍这种数字签名。
为了进行签名,A用其私钥SKA对报文X进行D运算(如图7-4),D运算本来叫做解密运算,可是,还没有加密怎么就进行解密呢?这并没有关系。因为D运算只是得到了某种不可读的密文。在图7-4中我们写成”D运算“而不是解密运算,就是为了避免产生这种误解。A把经过D运算得到的密文传给B。B为了核实签名,用A的公钥进行E运算,还原出明文X。请注意,任何人使用A的公钥PKA进行E运算后都可以得出A发送的明文。可见图7-4所示的通信并非为了保密,而是为了进行签名和核实签名,即确认此明文是A发送的。

image

数字签名为什么具有上述的上述的三个功能点?

  • 因为除了A之外没人持有A的私钥SKA。所以除了A外没有别人能产生密文DSKA(X)。这样,B就相信报文X就是A签名发送的,这就是报文鉴别的原理。
  • 同理,其他人如果篡改过报文,但由于无法得到A的私钥SKA来对X进行加密,那么B对篡改过的报文进行解密后,将会得出不可读的明文,就知道收到的报文被篡改过。这样就可以保证报文的完整性。
  • 若A要抵赖曾经发送报文给B,B可以把X以及DSKA(X)出示给进行公证的第三者,第三者很容易的用PKA去证实A确实发送X给B,这就是不可否认的功能。这三项的关键都是没有其他人能够持有A的私钥SKA

但上述的过程仅仅只是对报文进行了签名,对报文X还未保密,因为截获到密文DSXKA(X)并知道发送者身份的任何人,通过查阅手册即可获得发送者的公钥PKA,因而能知道报文的内容,若采用图7-5所示的方法,则可以同时实现秘密通信和数字签名。图中SKASKB分别为A和B的私钥,PKAPKB分别为A和B的公钥。

image

A向B发送时:A使用A的私钥SKA对报文X进行签名,然后使用B的公钥PKB对报文X进行加密。
B接收到后使用B的私钥SKB对报文X进行解密,同时使用A的公钥PKA对签名进行验证。

posted @   LilyFlower  阅读(395)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示