【区块链与密码学】第6-2讲:经典数字签名算法—RSA数字签名算法

通过RSA实现数字签名 一 用RSA生成签名 在RSA中,被签名的消息、密钥以及最终生成的签名都是以数字形式表示的。在对文本进行签名时,需要事先对文本编码成数字。用RSA生成签名的过程可用下列公式来表述: 这里所使用的D和N就是签名者的私钥。签名就是对消息的D次方求mod N的结果,也就是说将消息和自己相乘D次,然后再除以N求余数,最后求得的余数就是签名。 生成签名后,发送者就可以将消息和签名发送给接收者了。 ... 阅读详情

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

6.2 RSA数字签名法

数字签名一般利用公钥密码技术来实现,其中私钥用来签名,公钥用来验证签名。比较典型的数字签名方案有:

RSA签名算法(R. L. Rivest, A. Shamir, and L. M. Adleman, 1978) 

ElGamal 签名算法(T. ElGamal, 1985) 

Schnorr签名算法(C. P. Schnorr, 1989) 

DSS签名算法(NIST, 1991)

基于RSA公钥体制的签名方案通常称为RSA数字签名方案。RSA签名体制的基本算法如下:

密钥的生成(与加密系统一样):

公钥Pk={e,n};私钥Sk={d}

签名过程(d,n):

用户A对消息M∈Zn进行签名,计算:

并将S附在消息M后

验证过程(e,n):

给定(M,S),Ver(M,S)为真,则H(M)=Se(mod n)成立

RSA数字签名算法工作流程

假设RSA直接对消息进行签名

一般攻击:攻击者任选一个数据Y,用A的公钥计算X=Yemodn,于是便可以用Y伪造A对消息X的签名,因为:

实际意义不大:伪造的消息X具有实际意义的概率很小

Hash函数可以抵御这种攻击

利用已有签名进行攻击:如果消息M1、M2的签名分别是S1和S2,则任何知道M1,S1,M2,S2的人可以伪造对消息M1M2的签名S1S2因为

用户不要轻易对其他用户提供的随机数据进行签名

更有效的方法:对数据的Hash值签名

利用签名获得明文:攻击者截获密文C=Memod n,选择随机数r,并计算:

然后攻击者设法让发送者对y签名,获得:

攻击者计算:

用户不要轻易对其他用户提供的随机数据进行签名

更有效的方法:对数据的Hash值签名

H(M)的另一个作用一加快签名速度

对整个消息签名,由于公钥体制速度比较慢,当消息比较长时,签名与验证过程都会相当慢

对消息的Hash值签名,则无论消息多长,签名都只与Hash值的长度有关

RSA算法比较慢,用私钥进行签名和公钥进行验证。因上述RSA签名算法沒有加入随机数,当出现重复性的原始资料,攻击者会通过相同签名信息而猜测出原文。应该怎么办呢?

PSS (Probabilistic Signature Scheme)私钥签名流程的一种填充模式。

目前主流的RSA签名包括RSA-PSS和RSA-PKCS#1 V1.5。

后者相对应PKCS (Public Key Cryptography Standards)是一种能够自我恢复签名,而PSS无法从签名中恢复原来的签名。

OpenSSL-1.1.x以后默认使用更安全的PSS的RSA签名模式。

 PSS算法的编码操作过程

RSA-PSS数字签名算法

密钥生成

生成一个模数n,一个公钥e和一个私钥d。

假设安全参数为k(n是k比特的数),我们定义两个整数k0和k1并且满足:k0+k1≤k-1

然后我们定义两个哈希函数:一个扩展数据

 

,一个压缩数据

签名算法

为了对一个消息m进行签名,签名者执行以下步骤:

① 生成一个随机数

② 计算w=H(m||r)

③ 设置y=0||w||(G1(w)⊕r)||G2(w)

④ 计算s=ydmod n

⑤ 消息m的签名为s

验证算法

为了对一个消息m进行的签名s进行验证,验证者执行以下步骤:

① 计算y=semod n

② 将y分解成:

 ,其中b的长度为1比特,w的长度为k1比特,a的长度为k0比特,γ的长度为k-k0-k1-1比特

③ 计算r=a⊕G1(w)

④ 当且仅当下列等式成立时,接受该签名:

 

今天的课程就到这里啦,下一堂课我们将介绍经典的数字签名算法—ElGamal数字签名算法,带大家继续了解数字签名,敬请期待!

-- 完 --

关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。我们下节课见啦。

【区块链与密码学】课堂回顾:

区块链与密码学系列文章合集

密码学-2-RSA签名验签方案 重温上节所述的签名流程,其中散列值==>>签名(签名 ==>> 散列值)的过程中,使用私钥签名(公钥验签),这个地方涉及到了非对称加密算法,这也是非对称算法的用途之一,即数字签名。 常见用作数字签名的非对称算法:SM2(国密) 、 RSA、DSA、ECDSA(国际算法)。本文对常见的几种签名算法进行分析,内容深度只会涉及到签名流程,对于算法的具体原理实现,将会一带而过,如对算法原理有兴趣,可以私聊。 由于RSA加密算法,相对于对称加密算法来说效率较低,目前RSA常用来加密小数据, 阅读详情

相关推荐

RSA算法原理及数字签名技术

1.前言: 非对称加密算法的经典算法———RSA算法的应用如今在互联网上的传播已经十分广泛了,RSA公钥加密算法是1977年由RonRivest、AdiShamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。但是对于量

xiaoka__的博客 4515

数字签名算法RSA

数字签名算法RSA

qq_41483419的博客 6017

【区块链】深入理解椭圆曲线密码学(ECC)

椭圆曲线密码学(Elliptic Curve Cryptography,简称ECC)是现代公钥密码学的基石之一。它以其高效的计算性能和较短的密钥长度,在区块链、数字货币和信息安全领域扮演着关键角色。本文将深入探讨ECC的原理、应用及其在区块链中的重要性。a和b为常数判别式Δ = 4a³ + 27b² ≠ 0(确保曲线光滑)椭圆曲线密码学是现代密码学和区块链技术的核心支柱。它完美地平衡了安全性和效率,为数字世界提供了坚实的密码学基础。随着技术的发展,ECC将继续演进,在更多领域发挥重要作用。

鑫宝的博客 1万+

RSA签名算法

文章目录RSA签名算法简介RSA签名的过程全部代码运行结果 RSA签名算法简介 签名就是在这份资料后面增加一段强而有力的证明,以此证明这段信息的发布者和这段信息的有效性完整性。 RSA签名常用的就是将这份信息进行hash,得到一个hash值,再将hash值加密作为签名,后缀在信息的末尾。 哈希的好处:更安全,签名更快,解除了签名长度的限制。 RSA签名的过程 A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。 A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本

weixin_45728231的博客 6344

区块链技术系列(1) - 数字签名

导读 在现实社会中,签名作为签名者身份的一种证明,签名代表对签名文件的认可,不可抵赖。理论上签名是可信、不可伪造的。现在网络环境越来越广泛,有大量的信息通过网络传播,并且会保存在上面。这些电子数据显然无法人工签名,数字签名就孕育而生。本文将介绍什么是数字签名、数字签名的特性与相关技术。 对于区块链方面多技术,我还是建议大家多看英文文档,多利用Google来搜索技术文章。 怎么搭建自...

iamhuihua的博客 7107

深入浅出 区块链密码学(学习笔记4.0)——数字签名

数字签名(Digital Signature),也称电子签名,是指附加在某一电子文档中的一组特定的符号或代码。它利用密码技术对该电子文档进行关信息提取并进行认证形成,用于标识签发者的身份以及签发者对电子文档的认可,并能被接收者用来验证该电子文档在传输过程中是否被篡改或伪造。为了满足在网络环境中身份认证数据完整性和不可否认性可信性信:签名使文件的接收者相信是签名者在文件上签名的。不可重用性:签名不可重用,即同一消息在不同时刻的签名是有区别的。不可改变性:在文件签名后,文件不能改变。

m0_62829674的博客 2499

【区块链与密码学】第6-7讲:SM9数字签名算法

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 6.7SM9数字签名算法 为了降低公开密钥系统中密钥和证书管理的复杂性,以色列科学家、RSA算法发明人之一Adi Shamir在1984年提出了标识密码(Identity-Based Cryptography)的理念。 标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公...

Digquant的博客 2万+

RSA算法和RSA数字签名算法的实现

RSA算法和RSA数字签名算法的实现,RSA算法和RSA数字签名算法的实现,RSA算法和RSA数字签名算法的实现

【区块链与密码学】第6-5讲:SM2数字签名算法

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 6.5SM2数字签名算法 在政府高度重视和市场迫切需求的双向驱动下,国密算法SM1—SM9应时而生。其中,SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,包含5个部分: 总则 数字签名算法 密钥交换协议 公钥加密算法 参数定义 曲线参...

Digquant的博客 6973

kaggle——销量预测的baseline(M5 Forecasting - Accuracy)

前言 在刚刚结束的kaggle比赛M5 Forecasting - Accuracy中,因为是第一次参加,笔者也是花了大量的时间和精力在上面,最终拿到一块银牌(所以我拿到了大学第一个考试挂科。。。求求电磁场老师高抬贵手给点平时分放我一马吧。。。早上看到kaggle成绩异常兴奋,中午考完直接爆炸=。=),当然运气占了很大因素,这次比赛private leadboard的shake up非常大,排名波动几千名都存在的。笔者运气不错,是向上的shake:)。这里总结一下销量预测的基本流程。 从下图可以看到这次比

weixin_43901221的博客 5431

(2024,DDPM,DDIM,流匹配,SDE,ODE)扩散:基础教程

本文的目标是尽可能简单地教授扩散。第一节介绍扩散的基本原理。第二节和第三节展示如何构建随机和确定性扩散采样器。第四部分介绍了密切相关的流匹配,可看作是扩散的推广。​第五节,强调实践中最重要的一些设计选择,包括采样器、噪声时间表和参数化方法。

qq_44681809的博客 1万+

【区块链与密码学】第6-6讲:基于身份的数字签名算法

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 6.6基于身份的数字签名算法 PKI是指由数字证书、证书颁发机构 (CA) 和证书注册机构(RA)组成的一套系统: 数字证书公钥和私钥 加密算法和摘要算法 证书链 受信任的根证书颁发机构——中级根证书颁发机构——用户证书 证书管理:申请、颁发、吊销、重新颁发、续期等 数字证书...

Digquant的博客 2236

FPGA上跑100G网卡?手把手教你用Xilinx IP核配置RDMA(附避坑指南)

本文详细介绍了如何在Xilinx UltraScale+ FPGA平台上配置100G RDMA网络加速方案,涵盖CMAC和ERNIC IP核的深度配置技巧、硬件架构设计及系统集成。通过实战指南和避坑建议,帮助开发者实现超低延迟、零拷贝的数据传输,显著提升数据中心和高性能计算的网络性能。

weixin_33734785的博客 674

区块链的数学基础:核心原理与应用解析

区块链技术作为分布式账本系统,成功地解决了传统中心化系统中的信任问题。其背后隐藏着复杂而精妙的数学原理,包括密码学、哈希函数、数字签名、椭圆曲线、零知识证明等。这些数学工具不仅为区块链提供了安全保障,也为智能合约和去中心化应用(DApps)的开发奠定了基础。本文将深入剖析区块链中的核心数学基础,帮助读者理解其工作原理与实际应用。

fudaihb的博客 3590

STC51单片机串口多字节数据接收的优化策略

本文深入探讨了STC51单片机串口多字节数据接收的优化策略。针对数据丢包、粘包等常见痛点,核心思路是采用“缓冲队列+定时器超时”模式,将实时处理转变为“先收纳,后处理”。文章详细讲解了硬件初始化、中断服务程序优化(快速入队与激活超时裁判)以及主循环的非阻塞设计,并进阶介绍了环形缓冲区实现与错误处理,旨在构建稳定可靠的串口通信系统。

weixin_29264201的博客 374

NXP S32K1 SPI驱动实战:从配置到DMA传输的完整流程解析

本文深入解析了NXP S32K1系列MCU的SPI驱动开发全流程。基于S32 Design Studio环境,详细阐述了从引脚配置、LPSPI模块初始化,到实现阻塞、中断及DMA三种传输模式的实战代码与配置要点。文章重点剖析了DMA传输的配置细节与性能优化,旨在帮助开发者构建高效、稳定的嵌入式SPI通信,并提供了SPI Flash驱动的综合案例。

blue42的博客 713

密码学简史(二)--- 区块链中的现代密码学

从计算机时代开始,字母作为操作的最小单位的概念就消失了。在计算机里,所有的数据都被表示成0和1的数字组合(二进制),字母也不例外,把字母数字化得有个标准,现在这个标准就叫做ASCII。字母一旦变成数字,在计算机中字母的符号属性、发音属性等语言规律就完全消失了,它只是一个二进制数字,我们可以随意对它做改变,且这种改变发生在字母内部。所以说,数字化使加密法步入一个新的世代。 5. 对称钥匙:魔王加...

流云 3312

【keil5和STC-ISP】保姆级下载安装教程

点击下载中的产品下载。然后就会看到如下界面:可以看到,提供了针对不同芯片架构的四套独立开发工具。:你使用的51单片机,其核心就是。C51套件里的编译器是专门为这个架构优化的。:如果安装了MDK-Arm,你在创建新项目时将像“AT89C51”这样的51系列芯片型号,无法进行开发。进入如下界面:双击下载 → 双击运行安装 → 同意协议并下一步 → 使用默认安装路径 → 完成安装。

深耕CV 1641

【区块链与密码学】第6-3讲:数字签名算法大合集

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 6.3其他数字签名算法 EIGamal算法 数字签名一般利用公钥密码技术来实现,其中私钥用来签名,公钥用来验证签名。ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,其安全性是基于有限域上离散对数学问题的难解性。它至今仍是一个安全性良好的公钥密码算法。它既可用...

Digquant的博客 789

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案

本文主要介绍了safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 Windows 2.2 Linux

weixin_43178406的博客 15万+

C 语言多文件编程 : 大型程序的组织与管理

本文介绍了C语言多文件编程的核心概念与实践方法。主要内容包括:1. 多文件编程的必要性:解决单文件编程在大型项目中的维护和协作问题;2. 文件组织方式:头文件(.h)负责声明接口,源文件(.c)实现具体功能;3. 编译链接过程:分阶段编译和链接多个源文件;4. 头文件设计原则:包含接口声明、使用保护机制、保持自包含性;5. 模块化实践:通过示例展示学生信息管理系统的模块划分;6. 构建工具:介绍Makefile的编写和使用方法。文章还提供了创建静态库和动态库的指导,并强调了模块化设计、信息隐藏等软件工程原则

2503_91057718的博客 1946

【区块链与密码学】第2-4讲:区块链基础技术大剖析之数字签名

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 2.4.2 数字签名 昨天我们讲到区块链基础技术之一的哈希函数,今天这一讲我们来认识另一个区块链的基础技术——数字签名。 数字签名从字面上理解,是数字化签名。签名由来已久,用途极广。早在中国古代签名便已经广泛应用。我们最熟悉的可能是电视剧中,官老爷升堂断案,对堂下贫民,私用大刑

Digquant的博客 1350

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

区块链中的密码学

本文介绍了区块链中的核心密码学技术:1)哈希算法是一种单向加密算法,具有输入唯一性、输出定长等特点,常用于数据校验;2)哈希树(默克树)具备根节点稳定、高效校验等优势,能优化区块链数据存储;3)公钥密码学采用非对称加密,通过公钥加密/私钥解密实现安全通信,或私钥签名/公钥验签确保数据真实性与不可抵赖性。文章详细阐述了密钥生成关系、功能对比及典型应用场景,包括加密通信流程和数字签名验证机制,凸显了密码学在保障区块链安全性中的关键作用。

杨杨杨~~的博客 1681

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

密码学基础-公钥密码与RSA、SM2算法设计原理

公钥密码学是数字信任的基石,而RSA与SM2分别代表了经典与创新的技术路线。RSA的广泛应用验证了其可靠性,而SM2作为中国密码技术的突破,正以更高的效率和安全性引领国产化替代浪潮。在技术自主与全球化并行的今天,深入理解这两大算法,不仅是技术人员的必修课,更是守护数字主权的重要一环。

Sensitive_web_chaser的博客 1068

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

密码学与块链技术:区块链的加密基础

1.背景介绍 区块链技术是一种分布式、去中心化的数据存储和传输方式,它的核心概念是将数据以一种链式结构存储在区块中,每个区块都包含一定数量的交易数据,并通过一种称为“密码学”的技术来确保数据的安全性和完整性。在本文中,我们将深入探讨区块链技术与密码学之间的关系,并揭示其核心概念、算法原理、实例代码和未来发展趋势。 2.核心概念与联系 2.1 密码学 密码学是一门研究加密技术的学科,其主要目...

AI天才研究院 2579

带你揭开区块链中密码学的神秘面纱

       咱们IT圈里的人,不论跟朋友吃饭也罢,喝咖啡也罢,你会发现大家都在谈论区块链,如果自己不发表一番看法,就会深感已经OUT了。可是区块链到底是什么技术?区块链就是比特币吗?区块链是泡沫吗?区块链的不可篡改真的就无懈可击吗?我看过很多国内的区块链分析文章,也看了很多专业咨询机构和科技公司的白皮书,感悟较深的是大家似乎都在探讨All in Blockchain,以及怎么来实现互联网+ 的B...

zhaowulingwang的博客 9597
上一篇: 【区块链与密码学】第6-1讲:什么是数字签名?
下一篇: 【区块链与密码学】第6-3讲:数字签名算法大合集
Dig Quant
博客等级 码龄7年 124粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值