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

前言

🍃

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

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

问大家一个问题:

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

先说答案:不是。

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

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

正文

一、签名的本质目的

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

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

二、非对称加密中的签名

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

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

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

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

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

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

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

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

四、技术对比

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

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

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

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

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

最后

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

答案是否定的。

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

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

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

相关推荐
ℋᙚᵐⁱᒻᵉ鲸落6 小时前
移动端滑动手势冲突:overflow: auto导致外层横向滑动失效
前端·javascript·css·vue.js·html
学长毕业设计6 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西6 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西6 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
BullSmall6 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
默_笙7 小时前
🎃 前端学了 Next.js,后端该学啥?NestJS 就是 Node 版的蜜雪冰城
前端·javascript
阿kun要赚马内7 小时前
MySQL 索引基础
后端·mysql
AImatters7 小时前
国产算力底座,支撑油气储运数字化迈过关键分水岭
安全·cpu·算力·海光·油气储运
码事漫谈7 小时前
我啥都能做,却不知道做什么了
后端
geovindu7 小时前
CSharp: 万年历
开发语言·后端·c#·.net