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

news2024/9/21 21:44:09

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

一、仅提供消息认证

(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.coloradmin.cn/o/1925474.html

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

相关文章

2024年7月13日全国青少年信息素养大赛Python复赛小学高年级组真题

第一题 题目描述 握情况。他决定让每个人输入一个正整数 N (0≤N≤1000),然后计算并输出(5*N)的值。请用 在一个神秘的王国里,国王希望通过一个简单的测试来评估他的子民对基 础数学运算的掌 Python 编写程序,程序执行后要求用户输入一个正…

【山东大学】web数据管理——复习笔记

写在前面 若有图片加载失败,请科学上网 。本文为对软件学院连老师的PPT课件总结所得的复习笔记,仅供参考。不保证对考点的全覆盖,以PPT为主。对往年考过的题相关知识点前面都标注了“考过”,并高亮,供参考。写的比较匆…

代码随想录第51天|单调栈

42. 接雨水 参考 思路1: 暴力解法 找每个柱子的左右高度超时 O(N^2) 思路2: 双指针优化 class Solution { public:int trap(vector<int>& height) {vector<int> lheight(height.size(), 0);vector<int> rheight(height.size(), 0);lheight[0] hei…

【超音速 专利 CN117576413A】基于全连接网络分类模型的AI涂布抓边处理方法及系统

申请号CN202311568976.4公开号&#xff08;公开&#xff09;CN117576413A申请日2023.11.22申请人&#xff08;公开&#xff09;超音速人工智能科技股份有限公司发明人&#xff08;公开&#xff09;张俊峰&#xff08;总&#xff09;; 杨培文&#xff08;总&#xff09;; 沈俊羽…

Python酷库之旅-第三方库Pandas(021)

目录 一、用法精讲 52、pandas.from_dummies函数 52-1、语法 52-2、参数 52-3、功能 52-4、返回值 52-5、说明 52-6、用法 52-6-1、数据准备 52-6-2、代码示例 52-6-3、结果输出 53、pandas.factorize函数 53-1、语法 53-2、参数 53-3、功能 53-4、返回值 53-…

网络割接方案通用模板

第一章 项目概述 1.1 编写目的 为规范“十三五”以来&#xff0c;随着移动互联新技术的发展以及我国政府职能的不断转变&#xff0c; 我国的政法网络进入新的发展阶段&#xff0c;跨地域、跨部门、跨系统的信息共享、业务 协同以及智慧政务等成为了各地电子政务的重点建设内容。…

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

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

自动化故障排查与运维团队建设策略

在当前的运维领域&#xff0c;自动化故障排查已成为提高运维效率、保障系统稳定性的关键手段。为了进一步提升故障排查能力&#xff0c;并建立高效的运维团队&#xff0c;以下策略值得深入考虑和实施。 一、自动化故障排查流程与工具 标准化故障排查流程 建立一套标准化的故…

121. 小红的区间翻转(卡码网周赛第二十五期(23年B站笔试真题))

题目链接 121. 小红的区间翻转&#xff08;卡码网周赛第二十五期&#xff08;23年B站笔试真题&#xff09;&#xff09; 题目描述 小红拿到了两个长度为 n 的数组 a 和 b&#xff0c;她仅可以执行一次以下翻转操作&#xff1a;选择a数组中的一个区间[i, j]&#xff0c;&#x…

Nginx入门到精通五(动静分离)

下面内容整理自bilibili-尚硅谷-Nginx青铜到王者视频教程 Nginx相关文章 Nginx入门到精通一&#xff08;基本概念介绍&#xff09;-CSDN博客 Nginx入门到精通二&#xff08;安装配置&#xff09;-CSDN博客 Nginx入门到精通三&#xff08;Nginx实例1&#xff1a;反向代理&a…

全球生成式AI 产品分析报告

全球生成式AI 产品研究报告 时代背景 全球进入AI驱动的生产革命&#xff0c;生成式技术是时代际遇。中美在生成式AI产业展开科技竞争&#xff0c;全栈组合拳拉锯发展。‍ 技术变革 Transformer架构优化模型泛化的训推能力与理解生成的内容能力。文本模态达高应用成熟度&…

OpenCV图像处理——获取穿过圆的直线与圆相交的两个点

在OpenCV中&#xff0c;没有直接的函数来计算直线与圆的交点&#xff0c;但可以通过数学方法来实现这一功能。以下是计算直线与圆交点的步骤&#xff0c;以及相应的C代码示例&#xff1a; 确定直线方程&#xff1a;使用直线上的两个点 P 1 ( x 1 , y 1 ) P1(x1, y1) P1(x1,y1)和…

旷野之间17 - 适合所有人的 Transformer

最初出现在著名论文《Attention is all your need》中&#xff0c;基于Transformer的架构已成为大多数成功的人工智能模型中必不可少的。 然而&#xff0c;许多用户甚至基于人工智能的产品的创造者可能不了解Transformer是什么或它是如何工作的。 嗯&#xff0c;阅读研究论文…

MVC之 IHttpModule管道模型《二》

》》》注意&#xff1a;在http请求的处理过程中&#xff0c;只能调用一个HttpHandler&#xff0c;但可以调用多个HttpModule。 HTTP Modules ASP.NET请求处理过程是基于管道模型的&#xff0c;这个管道模型是由多个HttpModule和HttpHandler组成&#xff0c;当请求到达HttpMod…

Linux 扩展硬盘容量

根分区的硬盘容量不够了需要添加容量 扩展硬盘容量前提是需要虚拟机关机才能进行以下操作 在虚拟中找到虚拟机设置 >> 点击硬盘 >> 选择扩展 >> 输入自已要扩展的大小 >> 确定 这些设置好之后&#xff0c;启动虚拟机 fdisk /dev/sda n p 三个回车…

Nginx入门到精通七(Nginx原理)

下面内容整理自bilibili-尚硅谷-Nginx青铜到王者视频教程 Nginx相关文章 Nginx入门到精通一&#xff08;基本概念介绍&#xff09;-CSDN博客 Nginx入门到精通二&#xff08;安装配置&#xff09;-CSDN博客 Nginx入门到精通三&#xff08;Nginx实例1&#xff1a;反向代理&a…

基于matlab的SVR回归模型

1 原理 SVR&#xff08;Support Vector Regression&#xff09;回归预测原理&#xff0c;基于支持向量机&#xff08;SVM&#xff09;的回归分支&#xff0c;其核心思想是通过寻找一个最优的超平面来进行回归预测&#xff0c;并处理非线性回归问题。以下是SVR回归预测原理的系统…

猴子吃桃(迭代算法)

猴子与桃纠缠 传说很久很久以前&#xff0c;一只小猴子听妈妈的话&#xff0c;不远万里&#xff0c;爬山涉水专门跑到王母娘娘的蟠桃园里偷桃子吃&#xff0c;小猴子趁王母娘娘闭关修炼&#xff0c;偷了许多桃子&#xff0c;直到被蟠桃园的守卫发现&#xff0c;才恋恋不舍的逃走…

AWS-S3实现Minio分片上传、断点续传、秒传、分片下载、暂停下载

文章目录 前言一、功能展示上传功能点下载功能点效果展示 二、思路流程上传流程下载流程 三、代码示例四、疑问 前言 Amazon Simple Storage Service&#xff08;S3&#xff09;&#xff0c;简单存储服务&#xff0c;是一个公开的云存储服务。Web应用程序开发人员可以使用它存…

oracle数据库的plsql免安装版安装

这个是连接oracle数据库的&#xff0c;注意安装不能有中文路径。以下只是示例。 1、打开D:\ruanjian\plsql\plsql\plsql&#xff0c;发送plsqldev.exe快捷方式到桌面。 2、新弹出的页面填写cancel,什么也不写。 3、将instanceclient解压&#xff0c;并复制文件路径。 修改tool…