“签名”这个概念是非对称加密独有的吗?

前言

🍃

你好啊,我是你的人类朋友 ☺️

本篇文章主要来自于我之前在工作中犯的一个对"签名"的概念的误解

问大家一个问题:

"签名"这个概念是非对称加密独有的吗?

先说答案:不是。

虽然【数字签名】确实是非对称加密技术的重要应用,但【"签名"】这个概念在密码学中有着更广泛的含义和应用。

今天就来澄清这个误解,也是我之前在学习信息安全的过程中犯的一个错误 🙀。

正文

一、签名的本质目的

在密码学中,"签名"的核心目的是提供:

  • 身份认证 - 证明消息确实来自声称的发送方
  • 完整性验证 - 确保消息在传输过程中未被篡改
  • 不可否认性 - 发送方事后不能否认自己签署过的消息

二、非对称加密中的签名

在非对称加密体系中,数字签名的实现流程如下:

  1. 发送方使用自己的私钥对消息摘要进行加密
  2. 将原始消息和加密后的摘要一起发送给接收方
  3. 接收方使用发送方的公钥解密签名,得到消息摘要
  4. 接收方对原始消息计算摘要,与解密得到的摘要进行比对

这种机制确实提供了完整的签名三要素:身份认证、完整性验证和不可否认性。

三、对称加密中的"签名"机制

HMAC 我此前写了一篇文章,不了解的小伙伴可以去看看

HMAC(基于哈希的消息认证码)在对称加密环境中实现了类似的签名功能:

  1. 双方共享一个秘密密钥
  2. 发送方使用密钥和哈希函数生成消息认证码
  3. 接收方使用相同密钥验证认证码

HMAC 提供了身份认证和完整性验证,但由于双方共享同一密钥,它无法提供不可否认性。

四、技术对比

特性 数字签名(非对称) HMAC(对称)
身份认证
完整性验证
不可否认性
密钥管理 公钥/私钥对 共享密钥

✍️ 补充知识:关于【签名】与【数字签名】:

签名是一个广义概念,指任何用于验证身份和完整性的标识手段,包括物理签名、电子图章等。

数字签名是【特指】在密码学中,基于【非对称加密技术实】现的一种具体签名形式,它使用私钥签名、公钥验证,能提供完整性、身份认证和不可否认性。

简单说,数字签名是签名的一种具体技术实现,而签名是涵盖范围更广的通用术语。

最后

回到开头的问题:"签名"这个概念是非对称加密独有的吗?

答案是否定的。

"签名"在密码学中是一个【功能概念】,指的是【验证消息来源和完整性】的【机制】。虽然数字签名是非对称加密的典型应用,但对称加密中的 HMAC 同样实现了签名的核心功能------身份认证和完整性验证。

两者的关键区别在于:数字签名额外提供了不可否认性,这是由于非对称加密的公私钥特性决定的;而 HMAC 由于使用共享密钥,无法防止其中一方否认自己的行为。

因此,"签名"是一个跨越多重加密体系的功能概念,而非非对称加密的专属特性。

相关推荐
涡能增压发动积1 天前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
Wenweno0o1 天前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz1 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
swg3213211 天前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
从前慢丶1 天前
前端交互规范(Web 端)
前端
tyung1 天前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald1 天前
SpringBoot - 自动配置原理
java·spring boot·后端
CHU7290351 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing1 天前
Page-agent MCP结构
前端·人工智能