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

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

一、仅提供消息认证

(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与混合密码体制实现了消息认证、数字签名和加密

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RTC纽扣电池方案

目录 一、能量消耗因素分析 1.1 单片机的RTC 1.2 二极管漏电流 1.3 锂纽扣电池自放电 1.4 STM32-ADC监测纽扣电池电压 二、不可充电纽扣电池 三、可充电纽扣电池 一、能量消耗因素分析 1.1 单片机的RTC 如上图是STM32H743IIT6的数据手册截取的VBAT消耗的电流说明&#x…

气膜建筑的消防应急门:安全与保障—轻空间

气膜建筑,作为一种现代化的建筑形式,以其独特的结构和多功能用途受到广泛欢迎。然而,消防安全作为任何建筑的核心问题,尤其受到关注。为了确保在紧急情况下的安全疏散,气膜建筑在设计和建设过程中,特别重视…

2024 China Joy 前瞻 | 腾讯网易发新作,网易数智携游戏前沿科技、创新产品以及独家礼盒,精彩不断!

今年上半年,CES、MWC和AWE三大国际科技展轮番轰炸,吸引全球科技爱好者的高度关注,无论是新潮的科技产品,还是对人工智能的探索,每一项展出的技术和产品都引起了市场的热议。而到了下半年,一年一度的China J…

全国大学生数据建模比赛c题——基于蔬菜类商品的自动定价与补货决策的研究分析

基于蔬菜类商品的自动定价与补货决策的研究分析 摘要 商超蔬菜不易保存,其质量会随着销售时间的增加而变差,影响商超收益,因此,基于各蔬菜品类的历史销售数据,制定合理的销售策略和补货决策对商超的营收十分关键。本文…

gin源码分析

一、高性能 使用sync.pool解决频繁创建的context对象,在百万并发的场景下能大大提供访问性能和减少GC // ServeHTTP conforms to the http.Handler interface. // 每次的http请求都会从sync.pool中获取context,用完之后归还到pool中 func (engine *Engin…

2024年公共文化与社会服务国际会议(ICPCSS 2024)

2024年公共文化与社会服务国际会议 2024 International Conference on Public Culture and Social Services 【1】会议简介 2024年公共文化与社会服务国际会议是一个集学术性、实践性和国际性于一体的盛会。我们期待与您共同探讨公共文化与社会服务的未来发展方向,为…

虚幻引擎ue5如何调节物体锚点

当发现锚点不在物体上时,如何调节瞄点在物体上。 步骤1:按住鼠标中键拖动锚点,在透视图中多次调节锚点位置。 步骤2:在物体上点击鼠标右键点击-》锚定--》“设置为枢轴偏移”即可。

【Datawhale AI 夏令营】讯飞“基于术语词典干预的机器翻译挑战赛”

背景 机器翻译具有悠长的发展历史,目前主流的机器翻译方法为神经网络翻译,如LSTM和transformer。在特定领域或行业中,由于机器翻译难以保证术语的一致性,导致翻译效果还不够理想。对于术语名词、人名地名等机器翻译不准确的结果&…

html表格账号密码备忘录:表格内容将通过JavaScript动态生成。点击查看密码10秒关闭

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>账号密码备忘录</title><style>body {background: #2c3e50;text-shadow: 1px 1px 1px #100000;}/* 首页样式开始 */.home_page {color: …

Redis学习笔记(个人向)

Redis学习笔记(个人向) 1. 概述 是一个高性能的 key-value 数据库&#xff1b;其具有以下三个特点&#xff1a; Redis支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据&…

【密码学基础】基于LWE(Learning with Errors)的全同态加密方案

学习资源&#xff1a; 全同态加密I&#xff1a;理论与基础&#xff08;上海交通大学 郁昱老师&#xff09; 全同态加密II&#xff1a;全同态加密的理论与构造&#xff08;Xiang Xie老师&#xff09; 现在第二代&#xff08;如BGV和BFV&#xff09;和第三代全同态加密方案都是基…

基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例

在水利、环境、生态、机械以及航天等领域中&#xff0c;数学模型已经成为一种常用的技术手段。同时&#xff0c;为了提高模型的性能&#xff0c;减小模型误用带来的风险&#xff1b;模型的优化技术也被广泛用于模型的使用过程。模型参数的快速优化技术不但涉及到优化本身而且涉…

单元测试Mockito笔记

文章目录 单元测试Mockito1. 入门1.1 什么是Mockito1.2 优势1.3 原理 2. 使用2.0 环境准备2.1 Mock1) Mock对象创建2) 配置Mock对象的行为(打桩)3) 验证方法调用4) 参数匹配5) 静态方法 2.2 常用注解1) Mock2) BeforeEach 与 BeforeAfter3) InjectMocks4) Spy5) Captor6) RunWi…

window下tqdm进度条

原代码是linux下运行&#xff0c;修改后可在window下运行。 #ifndef TQDM_H #define TQDM_H#include <chrono> #include <ctime> #include <numeric> #include <ios> #include <string> #include <cstdlib> #include <iostream> #i…

MacOS 通过Docker安装宝塔面板搭建PHP开发环境

1、docker拉取ubuntu系统 docker pull ubuntu2、运行容器 docker run -i -t -d --name bt -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -p 3306:3306 -p 6379:6379 --privilegedtrue -v /Users/oi/Sites:/www/wwwroot ubuntu-v 后的 /Users/oi/Sites 代表…

分布式系统—Ceph块存储系统(RBD接口)

目录 一、服务端操作 1 创建一个名为 rbd-xy101 的专门用于 RBD 的存储池 2 将存储池转换为 RBD 模式 3 初始化存储池 4 创建镜像 5 管理镜像 6.Linux客户端使用 在管理节点创建并授权一个用户可访问指定的 RBD 存储池 ​编辑修改RBD镜像特性&#xff0c;CentOS7默认情…

fastadmin 如何通过权限组来控制列的显示与隐藏

方法1 以版本控制&#xff08;application/admin/controller/Version.php&#xff09;为例子 需求 就是在有时候&#xff0c;有些列不想让这个权限组的人看到&#xff0c;只给制定的权限组的人看 1.给权限组创建一个字段 ALTER TABLE lt_auth_group ADD COLUMN isBoothView T…

RMAN备份与还原

进入 rman 工具 rman target / 查看 rman 配置 rman> show all; 修改rman 配置 数据库全备 rman> run {allocate channel c1 type disk;allocate channel c2 type disk;backup incremental level 0 database format /home/oracle/backup/full_%d_%s_%t.bak;sql alte…

连接与隔离:Facebook在全球化背景下的影响力

在当今全球化的背景下&#xff0c;Facebook作为全球最大的社交网络平台&#xff0c;不仅连接了世界各地的人们&#xff0c;还在全球社会、经济和文化中发挥着深远的影响。本文将深入探讨Facebook在全球化进程中的作用&#xff0c;以及其对个体和社会之间连接与隔离的双重影响。…

C/C++ 进阶(7)模拟实现map/set

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 一、简介 map和set都是关联性容器&#xff0c;底层都是用红黑树写的。 特点&#xff1a;存的Key值都是唯一的&#xff0c;不重复。 map存的是键值对&#xff08;Key—Value&#xff09;。 set存的是键…