zoukankan      html  css  js  c++  java
  • 网络安全之数字签名

    数字签名定义

    数字签名就是对数字信息进行签名,以防止他人对信息进行伪造和篡改,也可以用于身份识别

    数字签名的特性

    • 签名是可信的
    • 签名的信息是不可篡改的
    • 签名是不可复制的
    • 签名是不可伪造的
    • 签名是不可抵赖的

    简而言之,某人对某信息进行签名可以证明:这个信息是这个人写的,且无其他人进行修改。

    数字签名的原理

    背景环境:小明对信息M进行签名,并发送给小红,小红校验信息以确保该信息是小明发送的,且未被篡改

    小明对信息进行处理

    1. 小明用hash函数对信息 M 进行 hash处理 ,得到信息摘要 M’(hash值)
    2. 小明使用自己的 私钥 对摘要值 M’ 进行加密,得到签名文本 S (签名,证书次hash值由小明创建)
    3. 小明使用小红的 公钥S进行加密,得到加密的签名文本 S’ (加密,防止他人修改hash值)
    4. 小明将M和**S’**发送给小红

    小红收到信息后,验证信息M使用小红发出的和信息M未被篡改

    1. 小红用自己的 私钥S’ 进行解密,得到签名文本 S
    2. 小红用小明的公钥S 进行解密,得到信息摘要 M’
    3. 小红用同样的hash函数对信息 M 进行hash处理,得到信息摘要 M’'
    4. M’M’’ 进行比较,若相同,则信息M由小明撰写发送,且未被篡改

    数字签名原理的论证

    首先,对于任意信息M有且只有一个hash值(对于同一个hash函数),且很难找到2个有相同hash值的 信息M,故信息M与其hash值在很大程度上有这一 一对应的特点。
    其次,小明使用了自己的私钥对信息摘要 M’ 进行加密签名,故他人无法在不破坏签名的基础上对信息摘要M’进行修改,故无法同时随意修改信息M
    再其次,对小明用小红的私钥对签名文本S进行了加密,故他人并不知道真实的hash值,故无法找到拥有相同hash值的另一个信息对信息M做替换篡改。
    综上所述,攻击者既无法将篡改后的信息的hash值替换原hash值,也无法通过已知hash值找到另一个拥有相同hash值的信息对M进行替换,所以在理论上很难伪造数字签名和篡改签名后的信息

    一家之言,请多指教

  • 相关阅读:
    VMware ESXi 和 VMware Server 有区别
    安装源与清除缓存
    pip install --upgrade pip
    Linux/Centos查看进程占用内存大小的几种方法总结
    top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 按 q 退出
    Centos 查看 CPU 核数 和 型号 和 主频
    Docker 运行ELK日志监测系统,汉化Kibana界面
    elasticsearch启动时遇到的错误
    kubernetes 创建超级管理员和密匙
    第七章 AOP(待续)
  • 原文地址:https://www.cnblogs.com/createwell/p/12700872.html
Copyright © 2011-2022 走看看