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

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

一、仅提供消息认证

(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.rhkb.cn/news/376563.html

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

相关文章

YOLOv10改进 | 损失函数篇 | SlideLoss、FocalLoss、VFLoss分类损失函数助力细节涨点(全网最全)

一、本文介绍 本文给大家带来的是分类损失 SlideLoss、VFLoss、FocalLoss损失函数,我们之前看那的那些IoU都是边界框回归损失,和本文的修改内容并不冲突,所以大家可以知道损失函数分为两种一种是分类损失另一种是边界框回归损失,…

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围 在这篇博客中&#xff0c;我将介绍如何使用HTML和JavaScript读取文件夹中的所有图片&#xff0c;并显示这些图片以及它们的RGB范围。这个项目使用现代浏览器提供的<input type"file" webkitdirecto…

k8s字段选择器

文章目录 一、概述二、基本语法三、支持的字段1、错误示例2、支持的字段列表 四、支持的操作符1、示例 五、跨多种资源类型使用字段选择器 一、概述 在Kubernetes中&#xff0c;字段选择器&#xff08;Field Selectors&#xff09;和标签选择器&#xff08;Label Selectors&am…

【目标检测】使用自己的数据集训练并预测yolov8模型

1、下载yolov8的官方代码 地址&#xff1a; GitHub - ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONNX > OpenVINO > CoreML > TFLite 2、下载目标检测的训练权重 yolov8n.pt 将 yolov8n.pt 放在ultralytics文件夹下 3、数据集分布 注…

如何在Linux上如何配置虚拟主机

在Linux上配置虚拟主机可以通过使用Apache HTTP服务器来实现。Apache是一个开源的跨平台的Web服务器软件&#xff0c;可以在多种操作系统上运行并支持虚拟主机的配置。 以下是在Linux上配置虚拟主机的步骤&#xff1a; 安装Apache HTTP服务器 在终端中运行以下命令来安装Apache…

科普文:深入理解Mybatis

概叙 (1) JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 优点…

怎么用PPT录制微课?详细步骤解析!

随着信息技术的不断发展&#xff0c;微课作为一种新型的教学形式&#xff0c;因其短小精悍、针对性强等特点&#xff0c;在教育领域得到了广泛的应用。而PPT作为一款常用的演示工具&#xff0c;不仅可以用来制作课件&#xff0c;还可以利用其内置的录屏功能或结合专业的录屏软件…

C++:类与对象(上)

目录 一、类的定义 1.1类的定义格式 1.2访问限定符 1.3类域 二、实例化 2.1实体化的概念 2.2类对象的大小 三、this指针 前言&#xff1a; 这篇文章是对类和对象的初步介绍&#xff0c;我将用三篇文章描述类和对象&#xff0c;希望对大家有所帮助 一、类的定义 什么是…

jenkins打包java项目报错Error: Unable to access jarfile tlm-admin.jar

jenkins打包boot项目 自动重启脚本失败 查看了一下项目日志报错&#xff1a; Error: Unable to access jarfile tlm-admin.jar我检查了一下这个配置&#xff0c;感觉没有问题&#xff0c;包可以正常打&#xff0c; cd 到项目目录下面&#xff0c;手动执行这个sh脚本也是能正常…

这可能是最详细的 Dagger2 使用教程 二(限定注解 @Named、@Qulifier 和 范围注解 @Singleton、@Scope)

通过上一篇文章我们知道了 Dagger2 的基本使用&#xff0c;在这篇文章中&#xff0c;我们将讲解 Dagger 中的两个重要概念以及相关注解。 这可能是最详细的 Dagger2 使用教程 一&#xff08;基本使用&#xff09; 类型上再加限定&#xff1a;Named 和 Qulifier 注解的使用 通…

罗技K380无线键盘及鼠标:智慧互联,一触即通

目录 1. 背景2. K380无线键盘连接电脑2.1 键盘准备工作2.2 电脑配置键盘的连接 3. 无线鼠标的连接3.1 鼠标准备工作3.2 电脑配置鼠标的连接 1. 背景 有一阵子经常使用 ipad&#xff0c;但是对于我这个习惯于键盘打字的人来说&#xff0c;慢慢在 ipad 上打字&#xff0c;实在是…

北摩高科应邀参加空客供应商大会

民航市场一直以来都是北摩高科重要的战略发展方向&#xff0c;进入国际航空巨头供应链体系也是公司的长期愿景。7月9日至10日&#xff0c;北摩高科公司应邀参与空客集团在天津举办的供应商大会及晚宴。 图1&#xff1a;空客集团采购总监Juergen Westermeier与北摩高科领导 会上…

基于Java+SpringMvc+Vue技术的药品进销存仓库管理系统设计与实现系统(源码+LW+部署讲解)

注&#xff1a;每个学校每个老师对论文的格式要求不一样&#xff0c;故本论文只供参考&#xff0c;本论文页数达到60页以上&#xff0c;字数在6000及以上。 基于JavaSpringMvcVue技术的在线学习交流平台设计与实现 目录 第一章 绪论 1.1 研究背景 1.2 研究现状 1.3 研究内容…

Linux权限相关

目录 Linux中的用户 Linux权限管理 Linux的文件访问者分类 Linux的文件类型和访问权限 文件类型 文件权限 文件权限的修改 文件所有者修改 文件所有者所在组修改 目录权限 粘滞位 文件掩码 在Linux中&#xff0c;权限包括用户的权限和文件的权限 Linux中的用户 在…

jenkins系列-06.harbor

https://github.com/goharbor/harbor/releases?page2 https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz harbor官网&#xff1a;https://goharbor.io/ 点击 Download now 链接&#xff0c;会自动跳转到上述github页面&am…

t-SNE降维可视化并生成excel文件使用其他画图软件美化

t-sne t-SNE&#xff08;t-分布随机邻域嵌入&#xff0c;t-distributed Stochastic Neighbor Embedding&#xff09;是由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出的一种非线性降维技术。它特别适合用于高维数据的可视化。t-SNE 的主要目标是将高维数据映射…

Milvus核心设计(2)-----TSO机制详解

目录 背景 动机 Timestamp种类及使用场景 Guarantee timestamp Service timestamp Graceful time Timestamp同步机制 主流程 时间戳同步流程 背景 Milvus 在设计上突出了分布式的设计,虽然Chroma 也支持分布式的store 与 query。但是相对Milvus来说,不算非常突出。…

LabVIEW心电信号自动测试系统

开发了一种基于LabVIEW的心电信号自动测试系统&#xff0c;通过LabVIEW开发的上位机软件&#xff0c;实现对心电信号的实时采集、分析和自动化测试。系统包括心电信号采集模块、信号处理模块和自动化测试模块&#xff0c;能够高效、准确地完成心电信号的测量与分析。 硬件系统…

Vue3 markRaw的使用

markRaw 作用:将一个对象标记为不可以被转化为代理对象。返回该对象本身。 应用场景: 1.有些值不应被设置成响应式时,例如复杂的第三方类库等 2.当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能 3.在动态渲染组件的时候我们就可以使用 markRaw 包裹。markRaw 的…

秋招突击——7/9——MySQL索引的使用

文章目录 引言正文B站网课索引基础创建索引如何在一个表中查看索引为字符串建立索引全文索引复合索引复合索引中的排序问题索引失效的情况使用索引进行排序覆盖索引维护索引 数据库基础——文档资料学习整理创建索引删除索引创建唯一索引索引提示复合索引聚集索引索引基数字符串…