密码学学习笔记(十):Digital Signatures - 数字签名1

news2024/12/27 12:17:42

什么是数字签名?

想象一下一下情景:

  • Alice生成两个密钥:一个公钥𝑃𝐾𝐴 & 对应的密钥𝑆𝐾𝐴, 发布公钥,保留密钥
  • 然后Alice使用𝑆𝐾𝐴 在签名算法中对消息M进行签名,获得签名S,并将(M,S)发送给Bob
  • Bob获得𝑃𝐾𝐴 并在验证算法中使用它来验证消息M上的签名S

  • 只有签名者本人可以对任意消息生成签名
  • 任何人都可以认证签名者对消息的签名
  • 密钥对生成算法:签名者使用该算法生成新的私钥和公钥
  • 签名算法:该算法以私钥和消息为输入,输出消息的签名
  • 验证算法:该算法以公钥、消息以及消息的签名为输入,输出验证结果

数字签名算法具备了 Integrity, Authentication, Non-Repudiation这三个性质。

安全性:对手的能力

默认情况下,对手知道公钥。它是公开的,并且与密钥有关。

  • 窃听者可以发现许多消息签名对:已知消息攻击 Known-Message Attack(KMA)
  • 但对手可能能够获得他们选择的消息的签名:选择消息攻击 Chosen-Message Attack(CMA)
  • 例如,如果对手能够物理访问启用签名的智能卡
  • 例如,能够在其选择的消息上查询安全元素的数字签名的恶意软件

安全性:对手的目标

对手的最终目标是找到秘密密钥:密钥恢复 Key Recovery(KR)攻击

  • 对手会乐于在特定信息上伪造签名:选择性伪造
  • 但对手甚至会乐于在任何信息上伪造签名:存在伪造
  • 在某些应用程序中,任何消息都是有效消息,例如,当一方被要求签署随机数以证明其身份时:在这种情况下,在任何新的随机数上找到签名对对手来说就足够了

UF-CMA

对于通用数字签名:

  • 最高对抗能力:选择消息攻击 Chosen-Message Attack(CMA)。
  • 最容易实现的对手目标:存在伪造
  • 此安全级别被称为选择消息攻击下的(存在)不可扩展性 Existential Unforgeability under Chosen-Message Attack(EUF-CMA或简称为UF-CMA)。
  • UF-KMA是较低级别的安全。

UF-CMA安全

签名方案有3种算法:

对手被给予pK,并且可以使用Verify算法。

对手有权访问签名。

数字签名 VS MACs

MAC需要安全的密钥共享。签名需要公钥基础设施 Public Key Infrastructure(PKI)。

  • 在公钥加密中,密钥管理对各方来说更容易。
  • 两者都提供完整性(integrity)和身份验证(authentication)。
  • MAC只能私下核实。签名可公开核实。
  • MAC不能提供不可否认性。数字签名可以提供。
  • 即使Bob与第三方共享MAC密钥,也无法证明Alice制作了MAC标签,因为Bob本可以自己制作。
  • 签名可以显示给第三方,他们可以验证。

RSA 家族

教科书RSA签名 - Déjà vu

用两个大素数,然后使𝑛 = 𝑝𝑞, 挑选一对𝑒, d

签名:已给出𝑆𝐾 = 𝑑 和一条消息𝑚 在里面𝑍𝑛 计算签名𝜎

 

验证:给定一个消息签名对(𝑚, 𝜎) 和公钥𝑃𝐾 = (𝑛, 𝑒) 检查m是否

运行原理:

教科书式RSA 属于UF-CMA吗?

  • 对手的目标是伪造:一种新的消息签名对
  • 无消息攻击:

对随机消息进行伪造

  • 选择消息攻击:

伪造对手想要的任何信息

签署长消息

我们可以将其分解为多个部分,并分别签署每个部分:但是效率比较低下

  • 首先对消息进行散列,然后对摘要进行签名:散列和签名

  • 哈希不容易反转,对摘要进行验证

如果H被建模为随机Oracle,则哈希RSA是UF-CMA。

哈希冲突会中断不可扩展性

如果两个文档具有相同的哈希,它们将根据相同的签名进行验证!

  • 抗冲突是哈希和签名安全所必需的

如果签名是UF-CMA并且H是抗碰撞的,那么Hash和Sign就是UF-CMA。

RSA-PSS

哈希输出(例如256位)比RSA输入(例如2048位)短得多,因此需要将摘要填充到正确的长度
虽然没有已知的攻击,但有一种更强的方案,称为PKCS#1v2.1中标准化的RSA-PSS(概率签名方案)

  • 在应用RSA之前使用编码,RSA迭代使用哈希来获得需要小填充的长随机结果
  • 概率性:每次对消息进行签名时,签名都不同
  • 如果H被建模为随机Oracle,而RSA很难实现,则UF-CMA安全

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

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

相关文章

ARG DEBIAN_FRONTEND=noninteractive作用说明

使用 在Dockerfile中使用ARG指令定义变量并为其指定一个默认值。ARG指令用于在构建过程中传递变量的值。 对于DEBIAN_FRONTENDnoninteractive,它定义了一个名为DEBIAN_FRONTEND的变量,并将其默认值设置为noninteractive。在这个上下文中,no…

【uniapp开发h5】点击复制微信号并自动打开微信应用,类似可以唤起淘宝、知乎应用等

效果展示: 准备工作: 引用jquery.js 和 clipboard.min.js jQuery就不用多说了,而clipboard.min.js 是一个 JavaScript 库,用于实现网页上的复制到剪贴板功能。它提供了一种简单的方式来处理复制操作,无需使用浏览器原…

Ubuntu 包管理的 20 个“apt-get”命令

动动发财的小手,点个赞吧! 在引入 apt 命令之前,apt-get 命令是基于 Debian 的 Linux 发行版中使用的主要包管理命令。 使用 apt-get 命令,您可以在系统上安装、删除、升级、搜索和管理软件包。然而,从 Ubuntu 16.04 和…

22运动估计(matlab程序)

1.简述 实验目的 熟悉运动估计的块匹配(BMA)算法原理,编程实现全搜索算法(三步搜索或钻石搜索算法),了解运动估计在混合编码器中的作用。 实验内容 1)编写全搜索算法函数,将运动矢量…

使用Llama.cpp在CPU上快速的运行LLM

大型语言模型(llm)正变得越来越流行,但是它需要很多的资源,尤其时GPU。在这篇文章中,我们将介绍如何使用Python中的llama.cpp库在高性能的cpu上运行llm。 大型语言模型(llm)正变得越来越流行,但是它们的运行在计算上是非常消耗资源…

MongoDB教程-5

复制是跨多个服务器同步数据的过程。复制在不同的数据库服务器上提供数据的多个副本,从而提供冗余并提高数据可用性。复制可防止数据库丢失单个服务器。复制还允许您从硬件故障和服务中断中恢复。通过增加数据拷贝,您可以将其中一个用于灾难恢复、报告或…

Spring系列4 -- Bean的作用域和生命周期

目录 1. 案例 2. 作用域定义 2.1 Bean的6种作用域 2.2 设置作用域 3. Sring的执行流程 4. Bean的生命周期 思考: 为什么不是先进行初始化然后再进行设置属性呢? 1. 案例 假设现在有⼀个公共的 Bean,提供给 A ⽤户和 B ⽤户使⽤,然⽽在使⽤的途中…

【面试】Hbase

逻辑模型 1 NameSpace 命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。Hbase有两个自带的命名空间,分别是hbase和default, hbase中存放的是HBase内置的表, default表是用户默认使用的命名空间。 2 Region 类似于关系型数据库的表…

综合 案例

案例1:淘宝焦点图布局 基本结构 1.大盒子我们类名为: tb-pro淘宝广告 2.里面先放一张图片 3.左右两个按钮用链接。左箭头prev 右箭头 next 4.底侧小圆点用ul 类名为pro-nav 注意: 1.如果一个盒子既有left属性也有right属性,则默认会执行lef…

Nvidia Jetson Orin系列配置教程

Nvidia Jetson Orin系列配置教程包含Orin系列的安装及配置办法,目前最为推荐的办法是通过Nvidia SDK Manager进行安装,详细内容如下: 法1:通过Nvidia SDK Manager进行安装 1.下载工具 前往Nvidia SDK Manager下载工具 2.安装工…

Lesson3-3:OpenCV图像处理---图像平滑

图像平滑 学习目标 了解图像中的噪声类型了解平均滤波,高斯滤波,中值滤波等的内容能够使用滤波器对图像进行处理 1 图像噪声 由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高…

MySQL之CRUD及常见面试题讲解

目录 一、CRUD是什么 二、什么是SQL注入 三、行转列的使用 四、CRUD中常用关键词 关键词: GROUP BY HAVING ORDER BY 五、聚合函数和连表查询 聚合函数 连表查询 六、DELETE、TRUNCATE、DROP的区别 七、MySQL常见面试题讲解 一、CRUD是什么 CRUD是一个常…

ARMv8的异常等级(Exception Level)以及执行状态(AArch64/AArch32)

目录 1&#xff0c;异常等级&#xff08;Exception Level&#xff09; 2&#xff0c;Execution states&#xff0c;执行状态 AArch64的异常等级 AArch32的异常等级 3&#xff0c;异常等级切换 4&#xff0c;执行状态切换&#xff08;AArch64 <> AArch32&#xff09;…

文件下载功能(简单粗暴)

文件下载功能 // 模板下载 export const modelLoadInterface (data: any) > {return get<Response>(tsureexapp-exchange/config/points/grant/export.json, data, {skipErrorHandler: true,}); };import {modelLoadInterface} from "/services/CommunicationF…

山西电力市场日前价格预测【2023-07-11】

日前价格预测 预测明日&#xff08;2023-07-11&#xff09;山西电力市场全天平均日前电价为419.66元/MWh。其中&#xff0c;最高日前价格为490.80元/MWh&#xff0c;预计出现在11: 45。最低日前电价为365.06元/MWh&#xff0c;预计出现在24: 00。 价差方向预测 1&#xff1a;实…

关于Xxl-job执行器自动注册不了的问题

最近项目里面用到了xxljob&#xff0c;然后按照官方文档自己搭建了一个&#xff0c;发现一个问题&#xff0c;就是执行器自动注册不了&#xff0c;然后一顿百度&#xff0c;发现是这个配置的问题&#xff1a; 这个 xxl.job.executor.appname 是执行器的名称&#xff0c;是要和页…

Jenkisn远程执行Shell命令

Jenkisn远程执行gating 1、安装插件 SSH plugin** 系统管理Manage Jenkins->管理插件Plugin Manager->搜索SSH plugin并安装 2、配置 Credentials凭据 系统管理Manage Jenkins->凭据插件Manage Credentials-> 凭据的类型有很多&#xff0c;本次学习用户名与密…

关于Arduino UNO R3主控板(CH340)驱动问题

网上买了一个Arduino UNO R3的标准版产品&#xff0c;开始学习智能编程工具。主要是给小孩子提高一点兴趣爱好&#xff0c;还有就是想在创客实验方面找点素材。 问题&#xff1a; 刚拆包安装驱动遇到一个问题&#xff0c;按说明装了Arduino UNO R3主控板驱动&#xff0c;但就是…

这所院校学硕年年国家线,8人过线,全部录取!保护一志愿!

一、学校及专业介绍 山东科技大学&#xff0c;简称“山科大&#xff0c;SDUST”&#xff0c;山东省重点建设应用基础型人才培养特色名校和高水平大学“冲一流”建设高校。&#xff08;我也第一次听说冲一流这个概念图片&#xff09; 1.1 招生情况 山东科技大学通信2023年一共…

【正点原子STM32连载】第五十三章 照相机实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第五…