总结数字签名实现身份验证

article/2025/9/18 18:18:45

消息篡改和不可抵赖性

TCP协议确保数据能够正确发送到通信双方,加上数据加密算法保证数据安全传输,但是在HTTP应用中通信双方通常不清楚发送方的身份,尤其在客户端服务器通信下,通常一个服务器会处理多个客户端连接,结合前一篇日志讲到的密钥协商,对于服务器来说,它不需要知道客户端是谁,在建立连接,协商好密钥后,只要接收到的HTTP请求格式正确,数据解密无误后便会发送相应信息,对于客户端来说也是一样。表面上来看,客户端和服务器端只要数据能对应加密解密,正确,安全地发送到对方处,似乎就没什么问题。没错,数据加密保证了数据的机密性,消息验证码MAC算法保证了数据的完整性,接收方能够确保接收到的数据是发送方的原始数据,没有被篡改过,但是没有解决的问题是身份验证问题,无法确保和你通信的,发送数据的对方,是你正确的通信对象,这会出现的一个问题就是,第三方可以冒充你的通信方,给你发送消息。

在对称加密中,如果密钥泄露了,那么别人就可以使用你们的密钥进行加密解密,或者冒充通信方给你发消息,当你收到一条消息后,使用密钥解密,解出可读可理解的明文时,你可能就会误认为这条消息就是你的目标通信方发来的。在公开密钥算法下,公钥参数甚至可以是公开的,不需要对其做任何保护,在使用如DH密钥协商算法时,目的是协商出解密私钥,即使公钥,p,g等参数泄露了也没关系。公钥只是加密时采用到,这就导致了由于公钥公开,任何人都可以使用它来进行加密,并给你发送消息。

总的来说,如果不去验证消息发送方的身份,会出现两个问题:消息篡改和消息抵赖。消息篡改,假设A和B共享密钥进行通信,过程中由于密钥泄露,被C截获了,C就可以使用密钥进行加密解密,给A和B发送消息,无论是A和B,只要收到消息,就进行解密,如果解密出可读可理解的明文,就容易误认为该消息就是对方发来的,殊不知这条消息其实是经过C篡改过,甚至是C无中生有捏造的。

消息抵赖问题,即无论假设A,B和C三方进行共同通信,共享相同的密钥,A给C发送了一条消息后,A可以抵赖说这条消息不是他发送的,因为B也有共同的密钥,B也可以给C发送消息。对于C来说,他确实无法确认该加密数据是来自A还是来自B,因为他们都共同拥有密钥。相似的情况还有,假如A给C发送了一条消息,但是C无法向B证明这条消息是来自于A的,对于B来说,由于C也拥有密钥,该消息可能是C自己使用密钥加密来的,C无法像B证明消息的来源。

出现上述的消息篡改和消息抵赖性问题,原因都在于通信的一方无法确定消息发送方的身份,所以除了进行消息加密,消息验证外,还需要解决的问题,是身份验证。

 

数字签名-验证过程

数字签名算法和消息验证码类似,消息验证码完成消息验证,数字签名完成身份验证。在消息验证码MAC算法中,通信双方使用共同的密钥对消息进行MAC运算生成唯一的摘要值,然后与消息一起发送,接收方接收到数据后,先使用相同的密钥对消息进行MAC运算得到摘要值,然后与一同发送来的摘要值比较,相同则表示MAC验证正确。数字签名类似,拿公开密钥RSA算法来举例,客户端拥有自己的私钥和服务器端的公钥,服务器端拥有自己的私钥和客户端的公钥,那么对于双方来说,什么东西可以唯一标识自己?就是他们各自持有的私钥,客户端可以用自己的私钥“签名”一条消息,然后发送给服务器端,服务器端拥有客户端的公钥,可以反解出该消息,由于这条消息是使用服务器端的私钥“签名“的,服务器端的私钥从来没有公开过,发送过出去,所以服务器端无法抵赖说这条消息不是来自他的。

生成签名

拿公开密钥RSA算法举例,生成签名的过程总结如下:

  1. 对消息进行Hash运算(如SHA-256)得到摘要值。
  2. 发送方使用自己的私钥对摘要值进行“签名“运算,得到签名值。
  3. 将原始信息和签名值一起发送给接收者。

验证签名

接收方收到信息后,首先验证签名:

  1. 对数据拆分出原始消息和签名值。
  2. 接收方使用自己的公钥对签名值进行签名算法运算,得到摘要值。
  3. 再对原始消息进行Hash运算得到另一个摘要值。
  4. 最后比较两个摘要值是否相等,相等则表明信息来自对方,无法抵赖。

 

RSA数字签名

RSA公开密钥在密钥协商完成后,使用公钥进行加密,私钥进行解密。而上面的流程图可以看到,在数字签名里,私钥用来签名消息,公钥用来验证签名。虽然这样做任何拥有公钥的人都可以验证这个消息,但是没关系,数字签名是用来做身份验证的,防抵赖,目的是验证发送方的身份,防止其发送了消息后又抵赖这消息不是他发出的,所以,任何人可以验证消息签名也不会造成什么影响。

示例首先使用RSA算法生成密钥长度为1024比特的密钥对,然后分理处公钥做验证签名用。对message.txt文件使用Hash算法sha256生成摘要值并用签名算法生成签名文件signature.txt。最后使用分离出的公钥rsapublickey.pem验证签名。

 

DSA数字签名

DSA则是数字签名算法里的一个标准算法,就像对称加密有标准算法AES一样。DSA算法在数字签名实现过程和RSA一样,都是生成密钥对后,使用私钥进行签名,公钥进行验证,可以从DSA生成的参数文件里看出:

参数文件

首先生成参数文件,然后通过参数文件生成密钥对dsaprivatekey.pem,接着分离出公钥用来做验证。

 

示例命令已上传:

https://github.com/justinzengtm/Network-Engineering


http://chatgpt.dhexx.cn/article/pe52OTXG.shtml

相关文章

rsa签名算法c语言,数字签名算法rsa

数字签名算法消息传递模型 由消息发送方构建密钥对,这里由甲方完成。 由消息发送方公布公钥至消息接收方,这里由甲方将公钥公布给乙方。 注意如加密算法区别,这里甲方使用私钥对数据签名,数据与签名形成一则消息发送给乙方,私钥仅用于签名,公钥仅用于验证。 RSA RSA数字签…

数字签名原理简述

本文结合下面两个问题来讲解数字签名的基本原理。结合图片希望能给大家一个清晰简单明了的分析和讲解。 1. 问题描述: (1)用户A向远方的用户B发送一个消息,用户B如何确认所收到的消息在传输的过程中没被篡改过? (2)用户B收到了消息之后,如何防止A随之否认这个消息是…

密码学系列之七:数字签名

数字签名 1. 概述1.1 基本概念1.2 签名原理1.2.1 形式化定义1.2.2 签名过程 2 基于RSA的签名方案2.1 实现过程2.2 安全性分析 3 基于离散对数的签名方案3.1 ElGamal签名体制3.1.1 实现过程3.1.2 安全性分析 3.2 Schnorr签名体制3.2.1 实现过程3.2.2 安全性分析 3.3 DSA签名体制…

数字签名算法类别及用途

0x01 数字签名算法的类别 数字签名(digital signature)是一种电子签名,也可以表示为一种数学算法,通常用于验证消息(例如,电子邮件、信用卡交易或数字文档)的真实性和完整性。 在“数字签名论述…

数字签名-原理

数字签名 1. 从消息认证到数字签名1.1. 消息认证码的局限性1.2. 通过数字签名解决问题 2. 签名的生成和验证3. 数字签名的方法3.1 签名步骤3.2 过程图解 4. 数字签名无法解决的问题 “数字签名 — 消息到底是谁写的” 数字签名是一种将相当于现实世界中的盖章、签字的功能在计算…

什么是数字签名?

数字签名 数字签名 数字签名一、介绍二、功能三、流程四、数字证书 一、介绍 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名通…

一文彻底搞懂加密、数字签名和数字证书,看不懂你打我!

前言 这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视频。 在一旁玩手机的女朋友突然问”你知道数字证书是来干啥的不,为啥浏览器提示证书不可信?” 你要说这个,那我可来劲了&#xff0c…

cisco 路由器 无线配置

配置环境:Cisco Packet Tracer 6.0 AP设备型号:1841 PC设备:Linksys-WPC300N模块的虚拟pc 第一步:配置接口ip R3(config)#interface Dot11Radio0/1/0 R3(config-if)#ip address 172.16.10.1 255.255.255.0 第二步:配置…

实验一 CISCO路由器的基本配置

要求: 1. 初始化配置; 2. 设置接口IP地址; ( F0/0 S1/0 ) 3. 测试; ( ping 、 telnet ) 4. 设置密码; ( console口、VTY接口和特权 ) 5. 查看。 &…

CISCO路由器基础配置和静态路由配置

学习Cisco的基础网络配置下载可以用Cisco公司开发的模拟器:Cisco packet tracer。本文的配置也都是用此模拟器配置的。 路由器 路由器的功能主要有以下几点: 1.实现网络互连,路由器支持各种局域网和广域网接口,主要用于互连局域…

cisco交换机配置方法

PS: 1.如代码能缩写尽量缩写节省时间 命令唯一才可以使用缩写方式 比如:config terminal 缩写为 conf t 即可 2.查看配置信息,只能在特权模式下查看 3.如果代码只记得前几位,直接按tab键补全,或者?查找一下 4…

一、思科路由器的基本配置

实验项目:路由器的基本配置 实验器材:Router2621XM一台、PC两台、交叉线两根。 实验目的:学习思科路由器的直连路由配置。 实验拓扑: 实验步骤: PC的配置 1.PC0配置IP、网关 IP:192.168.6.2 网关&am…

Cisco路由器配置命令

伟人对我毫无意义,我只欣赏自己理想中的明星。——尼采《善恶的彼岸》 Cisco工作模式 思科的工作模式有四种 用户模式:这一级别权限很低,只能查看路由器的基本状态,无法进行设置。 一般是Router> 特权模式:这一…

Cisco 路由器SSH配置

SSH1又分为1.3和 1.5两个版本。SSH1采用DES、3DES、Blowfish和RC4等对称加密算法保护数据安全传输,而对称加密算法的密钥是通过非对称加密算法(RSA)来完成交换的。SSH1使用循环冗余校验码(CRC)来保证数据的完整性&…

Cisco 路由器配置管理

大多数网络中断的最常见原因是错误的配置更改。对网络设备配置的每一次更改都伴随着造成网络中断、安全问题甚至性能下降的风险。计划外更改使网络容易受到意外中断的影响。 Network Configuration Manager 网络更改和配置管理 (NCCM)解决方案&#xff…

CISCO路由基本配置命令

进入EXEC特权模式:enable 进入全局配置模式:config terminal (confTab键回车回车) 修改设备名称:hostname (设备名) 禁用DNS查找:no ip domain-lookup 特权模式加密密码:enable secret (密码…

CISCO路由器基础配置及配置静态路由

学习Cisco的基础网络配置下载可以用Cisco公司开发的模拟器:Cisco packet tracer。本文的配置也都是用此模拟器配置的。 路由器 路由器的功能主要有以下几点: 1.实现网络互连,路由器支持各种局域网和广域网接口,主要用于互连局域…

Cisco(思科)路由器端口的配置

Cisco(思科)路由器端口的配置 小编都是喜欢借助实验写博客 一、拓扑图 结合图可以知道我们一共有四个网段(四个vlan) 1.vlan 1 ip:192.168.1.0网段 自带的vlan不需要在交换机添加的 2.vlan 2 ip:192.168.…

路由交换实验一——CISCO路由器的基本配置

CISCO路由器的基本配置 实验要求开始实验1.初始化配置:2.搭建网络:3.测试网络:4.配置密码:5.查看信息: 实验要求 初始化相关配置;设置接口IP地址; ( F0/0 S1/0 )测试&…

路由器的基本配置(Cisco Packet Tracer )

路由器的基本配置 1.路由器的基本命令 2.路由器的常用查询命令 3.直连路由和静态路由 ​ 直接连到路由器接口的子网被称为直连网络(Directly-Connected Network)。当接口开始工作并配置了IP地址和子网掩码时,路由器自动地将它们的路由加入路由表,被称为直连路由(Directly-Con…