【密码学】实现消息认证或数字签名的几种方式

        消息认证的目的是验证消息的完整性和确认消息的来源。数字签名的目的是不仅验证消息的完整性和来源,还提供了不可否认性。此外,数字签名还可以验证消息的创建时间,防止重放攻击。那么具体有哪些实现的方式呢?

一、仅提供消息认证

(1)方式一:通过对称密钥实现

        Alice和Bob进行通信,在通信之前双方共享了对称密钥K

        首先Alice把消息明文进行哈希运算得到哈希值H,将哈希值用对称密钥进行加密的到哈希值的密文E,再将哈希值的密文与消息的明文进行拼接,通过公开信道发送给Bob。

        然后,Bob拿到数据后将加密的哈希值通过对称密钥K进行解密,得到解密后的哈希值D,同时Bob还得把消息M自己做一次哈希运算也得到一个哈希值H。对比这两个哈希值是否相等,就可以判断出消息是否有可信的实体发来,并且判断出消息是否完整。

通过对称密钥实现消息认证

(2)方式二:通过MAC实现

        Alice和Bob进行通信,在通信之前双方共享了一个随机数S(这个随机数可以理解为只有Alice和Bob才知道的一个秘密,也可以理解为一个密钥,但这个密钥不是用来加解密的)

        首先Alice将明文与随机数S拼接起来,对拼接后的信息进行哈希运算得到MAC = H(m||s),然后将MAC与消息的明文M一起发给Bob

        Bob收到后,他也将消息的明文与随机数S拼在一起做哈希运算,得到一个MAC。然后拿他算出的MAC与他从Alice处得到MAC做比较。如果相等就可以认为消息内容是完整的没有被篡改,消息的来源是可信的。

通过MAC实现消息认证

 二、既提供加密又提供消息认证

(1)方式一:通过MDC与对称加密实现

        Alice和Bob进行通信,在通信之前双方共享了对称密钥K

        Alice对消息明文进行哈希运算,得到哈希值H(也就是MDC),在将哈希值与明文拼在一起用对称加密的密钥K进行加密,得到密文。然后Alice将密文通过公开信道传给Bob

        Bob得到了密文后,先拿对称密钥K进行解密,得到拼起来的两部分:一部分是消息明文M,第二部分是个哈希值H(也就是MDC)。此时,Bob他自己对消息明文M进行哈希运算得到哈希值H,然后拿他算出来的哈希值H与解密出来的哈希值H进行对比。

        在这种方式中,公开信道里传递的是密文,保证了消息的机密性。两个哈希值对比相同的话,保证了消息的完整性。而消息来源的真实性是通过对称密钥K只有可信用户才拥有来实现的。

通过MDC与对称加密既提供加密又提供消息认证

(2)方式二:通过MAC与对称加密实现

        Alice和Bob进行通信,在通信之前双方共享了对称密钥K和随机数S

        首先Alice将消息明文M与随机数S拼接后进行哈希运算的到MAC,再将MAC与消息明文M拼接后拿对称密钥K进行加密得到密文。于是Alice就可以把密文通过公开信道发给Bob

        Bob收到密文后,通过手里的对称密钥K进行解密,解密出来的东西是两部分:第一部分是消息明文M,第二部分是MAC。此时,Bob需要把消息明文M与随机数S拼接再进行哈希运算得到MAC,拿着Bob自己算出来的MAC与解密得到的MAC进行对比。

        在这种方式中,公开信道里传递的是密文,保证了消息的机密性。MAC对比相同的话,保证了消息的完整性和消息来源的真实性。此时消息来源的真实性是通过MAC实现的。因为MAC只有拥有S的人才能正确生成。而拥有S的人可以认为是可信任的人。

通过MAC与对称加密既提供加密又提供消息认证

【注】本文中上图的方式是先MAC再加密,也可以先加密再MAC。效果是一样的就不赘述,用一个图来展示一下即可。 

先加密再MAC

三、既提供了消息认证,又提供了数字签名

(1)方式:通过MDC与公钥密码体制实现

        Alice和Bob进行通信,事先他们各自生成公私密钥对,并将各自的公钥公布出来。

        Alice对消息明文M进行哈希运算,得到哈希值H(也就是MDC),再用自己的私钥对哈希值进行签名生成一个密文S,再将S与明文M拼在一起通过公开信道传给Bob

        Bob收到了消息明文M后,自己计算MDC=H(M)。于此同时他还需要在公钥数据库中找到Alice的公钥对签名进行解密,一旦成功解密则可以得到一个MDC,拿解密出来的MDC与他自己算出来的MDC进行比对即可验证消息的完整性。

        这种方式中,消息的完整性是通过MDC实现的,消息来源的真实性是通过公钥密码体制的数字签名实现的。因为是Alice拿自己的私钥签名,所以实现了消息的不可否认性。

通过MDC与公钥密码体制实现消息认证与数字签名

四、既提供了消息认证,又提供了数字签名,还提供了保密性

(1)方式:通过MDC与混合密码体制实现

        Alice和Bob进行通信,事先他们各自生成公私密钥对,并将各自的公钥公布出来。并且他们实现共享了对称密钥K

        Alice首先把明文M进行哈希运算得到MDC,然后利用自己的私钥K_s对MDC进行加密。再将消息明文M与加密后的MDC拼接起来,再用对称密钥K进行加密,得到最终要发送的密文E,并把E通过公开信道发给Bob

        Bob得到密文后,用对称密钥K进行解密,他此时会得到两个部分:第一个部分是消息明文M,第二个部分是一个密文。然后,Bob去公钥数据库中找到Alice的公钥对这个密文进行解密,一旦成功解密就意味着这个消息是Alice发来的,否则就不是。

        此时,通过Alice公钥解密出来的东西是一个MDC,那么接下来,Bob需要自己将消息明文M进行哈希运算得到一个MDC与解密出来的MDC进行比对。如果比对成功,说明消息未被篡改,确保了消息的完整性。

        在这个方式中,消息的完整性通过MDC来确保,消息的不可否认性通过公钥密码体制的数字签名来确保,消息的机密性通过对称密码体制来确保。消息的来源真实性通过数字签名确保。

通过MDC与混合密码体制实现了消息认证、数字签名和加密

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件内容查阅

cat concatenate files and print on the standard output Linux中一个最简单的且最常用的命令是cat命令。其功能是在终端设备上显示文件内容。 cat命令-n选项用于显示行号。 tac concatenate and print files in reverse tac命令的功能是用于反向显示文件内容,即…

计算机网络复习笔记【面向考纲整理】

计算机网络复习笔记 一、计算机网络体系结构(一)计算机网络的概念、分类、组成与功能1.计算机网络的概念、组成与功能1.1计算机网络的概念1.2计算机网络的组成1.3计算机网络的功能 2.计算机网络的分类3.计算机网络的标准化工作及相关知识 (二…

MT6816磁编码IC在工控机器人中的应用

在现代工业自动化领域,高精度的位置检测和控制技术对于机器人系统的稳定运行至关重要。MT6816磁编码IC作为一款先进的磁传感器解决方案,以其卓越的性能和稳定性,在工控机器人中得到了广泛的应用。本文将详细探讨MT6816磁编码IC在工控机器人中…

azure学习在日本IT工作的重要性

在日本数字化转型的浪潮中,微软Azure已经成为众多企业的首选云平台。作为全球第二大云服务提供商,Azure在日本市场的重要性与日俱增。本文将探讨为什么学习Azure对日本IT专业人士至关重要,以及如何通过lalapodo云原生技术的培训课程,快速掌握这一关键技能。 Azure在日本的战略地…

【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块

文章目录 前言一、导航功能实现a.效果图:b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…

element UI时间组件两种使用方式

加油&#xff0c;新时代打工&#xff01; 组件官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/date-picker 先上效果图&#xff0c;如下&#xff1a; 第一种实现方式 <div class"app-container"><el-formref"submitForm":model&q…

探索 Prompt 的世界:让你的 AI 更智能

探索 Prompt 的世界&#xff1a;让你的 AI 更智能 引言什么是 Prompt&#xff1f;Prompt 的重要性如何编写有效的 Prompt1. 清晰明确2. 包含关键细节3. 提供上下文 实践中的 Prompt 技巧1. 多次迭代2. 实验不同风格3. 结合实际应用 总结 引言 随着人工智能&#xff08;AI&…

数据恢复篇:适用于 Android 的恢复工具

正在摆弄 Android 设备。突然&#xff0c;您意外删除了一张或多张图片。不用担心&#xff0c;您总能找到一款价格实惠的照片恢复应用。这款先进的软件可帮助 Android 用户从硬盘、安全数字 (SD) 或存储卡以及数码相机中恢复已删除的图片。 Android 上文件被删除的主要原因 在获…

采用自动微分进行模型的训练

自动微分训练模型 简单代码实现&#xff1a; import torch import torch.nn as nn import torch.optim as optim# 定义一个简单的线性回归模型 class LinearRegression(nn.Module):def __init__(self):super(LinearRegression, self).__init__()self.linear nn.Linear(1, 1) …

【Linux】数据流重定向

数据流重定向&#xff08;redirect&#xff09;由字面上的意思来看&#xff0c;好像就是将【数据给它定向到其他地方去】的样子&#xff1f; 没错&#xff0c;数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据&#xff0c;给它传输到其他的地方&#xff0c;例如文件或…

[图解]企业应用架构模式2024新译本讲解26-层超类型2

1 00:00:00,510 --> 00:00:03,030 这个时候&#xff0c;如果再次查找所有人员 2 00:00:03,040 --> 00:00:03,750 我们会发现 3 00:00:05,010 --> 00:00:06,370 这一次所有的对象 4 00:00:06,740 --> 00:00:08,690 都是来自标识映射的 5 00:00:10,540 --> 00…

2024辽宁省数学建模C题【改性生物碳对水中洛克沙胂和砷离子的吸附】原创论文分享

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024 年辽宁省大学数学建模竞赛C题改性生物碳对水中洛克沙胂和砷离子的吸附完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃…

【JavaScript】解决 JavaScript 语言报错:Uncaught SyntaxError: Unexpected identifier

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 缺少必要的标点符号2. 使用了不正确的标识符3. 关键词拼写错误4. 变量名与保留字冲突 四、解决方案与预防措施1. 检查和添加必要的标点符号2. 使用正确的标识符3. 检查关键词拼写4. 避免使用保留字作为变量名…

全栈 Discord 克隆:Next.js 13、React、Socket.io、Prisma、Tailwind、MySQL笔记(一)

前言 阅读本文你需要有 Next.js 基础 React 基础 Prisma 基础 tailwind 基础 MySql基础 准备工作 打开网站 https://ui.shadcn.com/docs 这不是一个组件库。它是可重用组件的集合&#xff0c;您可以将其复制并粘贴到应用中。 打开installation 选择Next.js 也就是此页面…

智慧校园服务监控功能

智慧校园系统中的服务监控功能&#xff0c;扮演着维护整个校园数字化生态系统稳定与高效运作的重要角色。它如同一位全天候的守护者&#xff0c;通过实时跟踪、分析并响应系统各层面的运行状况&#xff0c;确保教学、管理等核心业务流程的顺畅进行。 服务监控功能覆盖了智慧校园…

开发个人Ollama-Chat--6 OpenUI

开发个人Ollama-Chat–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI&#xff0c;旨在完全离线运行。它支持各种 LLM 运行器&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由&#xff0c;OpenAI 的接口需要密钥才…

知识图谱与 LLM:微调与检索增强生成

Midjourney 的知识图谱聊天机器人的想法。 大型语言模型 (LLM) 的第一波炒作来自 ChatGPT 和类似的基于网络的聊天机器人&#xff0c;这些模型在理解和生成文本方面非常出色&#xff0c;这让人们&#xff08;包括我自己&#xff09;感到震惊。 我们中的许多人登录并测试了它写…

微信视频号的视频怎么下载到本地?快速教你下载视频号视频

天来说说市面上常见的微信视频号视频下载工具&#xff0c;教大家快速下载视频号视频&#xff01; 方法一&#xff1a;缓存方法 该方法来源早期视频技术&#xff0c;因早期无法将大量视频通过网络存储&#xff0c;故而会有缓存视频文件到手机&#xff0c;其目的为了提高用户体验…

尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程

Vue3 编码规范 创建vue3工程 基于vite创建 快速上手 | Vue.js (vuejs.org) npm create vuelatest 在nodejs环境下运行进行创建 按提示进行创建 用vscode打开项目 安装依赖 源文件有src 内有main.ts App.vue 简单分析 编写src vue2语法在三中适用 vue2中的date metho…

【深度学习入门篇 ⑤ 】PyTorch网络模型创建

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…