数字签名介绍

        数字签名的意义:防止抵赖、保证信息没有被更改过。

        

假如A公司要发一份合同给B公司,过程如下:

        1 A公司使用一个单向散列函数算法(比如使用MD5)对合同计算一个摘要,得到摘要S(A),再使用A的私钥对摘要S(A)加密得到PS(A)(即为合同的签名),此时A将合同、摘要S(A)、数字签名PS(A)一起发送给B。

        2 B收到上述信息后如何判断合同是否就是A发送的呢?

        B也使用一个单向散列函数算法(比如使用MD5)对合同计算得到一个摘要S(B),再用A的公钥解密PS(A)得到PS(B),如果S(B)与PS(B)相同则判定合同没有被改过,如果不相同,则合同被改过。

        以上过程A无法抵赖合同是他发送的,因为根据非对称加密的性质,B能用A的公钥解密PS(A),则说明签名是属于A的,只有A才有私钥,别人无法伪造,所以合同肯定是A发送的。

        以上过程中的安全机制依赖于A的公钥是否是可信的,如果公钥不可信则后面的安全都无法保证,此时B拿到A发过来的合同时,首先要验证的是A的公钥的可信度,如果证书验证不通过,则说明A不可信;若验证通过才能进行后面的签名验证。

        同时由摘要算法的性质,我们指定如果S(B)与PS(B)相同则合同没有被更改过,也就是保证了信息的完整性。

        那想一想如果合同被更改过会发生什么呢?假如只有合同被更改,则在对比摘要的时候S(B)与PS(B)会不相同,则验证不通过;那假如连摘要S(A),数字签名PS(A)也一起更改呢?要修改数字签名,那Hacker只能连证书一起也替换了,那么在B进行证书验证的时候将验证失败,也不会通过。所以也就能保证信息的完整性。

相关推荐

  1. 数字签名介绍

    2023-12-17 22:04:02       40 阅读
  2. 【ARM 安全系列介绍 3.1 -- 数字签名算法 ECDSA】

    2023-12-17 22:04:02       34 阅读
  3. 密码学 | 数字签名方法:Schnorr 签名

    2023-12-17 22:04:02       13 阅读
  4. 密码学——数字签名

    2023-12-17 22:04:02       20 阅读
  5. Excel数字签名技术总结

    2023-12-17 22:04:02       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 22:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 22:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 22:04:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 22:04:02       20 阅读

热门阅读

  1. 一文打通RLHF的来龙去脉

    2023-12-17 22:04:02       42 阅读
  2. Android View绘制流程详解

    2023-12-17 22:04:02       36 阅读
  3. Unity有限状态机

    2023-12-17 22:04:02       43 阅读
  4. 设计模式模板方法模式讲解和代码示例

    2023-12-17 22:04:02       39 阅读
  5. c#的event使用(1)

    2023-12-17 22:04:02       43 阅读
  6. layui的upload动态数据事件绑定方法非动态渲染

    2023-12-17 22:04:02       39 阅读
  7. 二叉搜索树的简单C++类实现

    2023-12-17 22:04:02       37 阅读