密码编码学之数字签名
目录
- 一、数字签名
- 1、 数字签名关键部分的描述
- 2、 数字签名的要求
- 3、 DSA数字签名算法
- 4、 椭圆曲线数字签名算法(ECDSA)
- 5、 RSA-PSS数字签名算法
原创不易,转载请帮注明出处: https://blog.csdn.net/jackone12347/article/details/122882686
一、数字签名
1、 数字签名关键部分的描述
数字签名具有认证功能,下面是数字签名关键部分的描述:
Bob:
对消息M使用Hash函数计算得到hash值h;
使用Bob的私钥,对h使用数字签名生成算法生成签名S;
将S附在消息M的后面。Alice:
使用Hash函数,计算消息M的hash值h,hash函数对通讯双方是已知的;
使用Bob提供的公钥,对签名进行解密,如果计算出来的hash值,与h相同,则签名验证通过。
2、 数字签名的要求
数据签名需要满足一些条件和基本特征:
1、签名必须是与消息相关的二进制位串 (一般签名文件直接打开是乱码)
2、签名必须使用发送方独有的信息,以防止伪造和否认 (一般添加公司或者企业的独有信息 如公司的名称、地址、邮箱等)
3、产生数据签名要非常容易
4、识别和验证签名也要非常容易
5、伪造数据签名在计算上不可行
3、 DSA数字签名算法
下面是归纳的DSA算法:
下面是RSA和DSA方法的比较:
DSA的签名和验签函数如下:
DSA算法特点:
DSA与RSA不同,DSA只能提供数字签名,但不能用于加密。
DSA算法产生签名,不依赖于被签名的消息,所以可以预先计算。
4、 椭圆曲线数字签名算法(ECDSA)
椭圆曲线密码有效率方面的优势,尤其是在需在短密钥长度的应用中,RSA密码的位数越来越长。
ECDSA的处理过程简述:
1. 参与数字签名的双方都使用相同的全局域参数,用于定义椭圆曲线及曲线上的基点。
2. 签名方需要生成私钥和公钥。 对于私钥,签名方选择使用随机数或者伪随机数。使用随机数和基点,签名方计算出椭圆曲线上的另一个解点,作为签名的公钥。
3. 对待签名的消息进行hash计算。使用私钥、全局域参数、hash值,来产生签名。签名包括两个整数:r和s
4. 验证签名:使用签名方提供的公钥、全局域参数、整数s作为输入,并将计算得到的v,与r进行比较。如果v=r,则签名通过验证。
下面是ECDSA签名和验签流程:
5、 RSA-PSS数字签名算法
RSA-PSS(RSA概率签名)方案,被RSA实验室推荐为RSA方案中最安全的一种。被广泛应用于包括金融等领域,安全性足以说明。
MGF掩码函数
基于SHA安全hash构建,输入长度不固定的任意消息或者hash值,输出为固定长度的值。
签名操作
对以上的签名过程说明:
1. 生成消息M的hash值mHash
2. 使用伪随机数作为盐(salt),得到M‘=padding1||mhash||盐
3. 重新生成hash值H, H=Hash(M')
4. 计算H的MGF值,dbmask=MGF(H, emLen-hLen-1)
5. 构造数据的DB,DB=padding2||盐
6. 计算maskedDB, maskedDB=DB异或dbmask
7. 将maskedDB的最左字节中的8emLen-emBits位置为0
8. 计算EM=maskedDB||H||bc
9. EM为二进制,将EM设为m,则签名s=m^d mod n, d为私钥
验签操作
对以上的验签过程说明:
1. 计算消息M的hash值mHash
2. dbMask=MGF(H,emLen-hLen-1)
3. 计算DB,DB=maskedDB 异或 dbMask
4. 将DB的最后sLen字节设为盐值
5. 构造M‘=padding1 || mHash || 盐
6. 生成M'的hash值H‘,H’=Hash(M')
7. 如果H’=H,验证通过
注:
sLen为盐的长度,emBits为输入参数(比RSA模数n位长度小的值),emLen=emBits/8
padding1,十六进制00 00 00 00 00 00 00 00,即64位的0
padding2,十六进制若干位00后跟着01,其长度为(emLen-sLen-hLen-2)字节
密码编码学之数字签名相关推荐
- 《密码编码学与网络安全》William Stalling著---学习笔记(二)【知识点速过】【数字签名+密钥管理分发+用户认证】
提示:博文有点长,请保持耐心哦~ 前一篇文章: <密码编码学与网络安全>William Stalling著-学习笔记(一)[知识点速过][传统密码+经典对称加密算法+经典公钥密码算法+密码 ...
- 《密码编码学与网络安全》William Stalling著---学习笔记(三)【知识点速过】【网络安全与Internet安全概览】
提示:博文有点长,请保持耐心哦~ 前两篇文章: <密码编码学与网络安全>William Stalling著-学习笔记(一)[知识点速过][传统密码+经典对称加密算法+经典公钥密码算法+密码 ...
- 密码编码学与网络安全———原理与实践(第八版)第三章笔记
第3章 传统加密技术 学习目标 简要介绍对称密码的主要概念. 解释密码分析和穷举攻击的差异. 理解单表代替密码的操作. 理解多表代替密码的操作. 简要介绍Hill密码. 目录 第3章 传统加密技术 3 ...
- ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学
ECC ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制.在软件注册保护方面起到很大的作用,一般的序列 ...
- ECC(椭圆曲线密码编码学)简介
参考:ECC加密算法入门介绍 ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)属于公开密钥算法. 一.平行线 假设平行线相交于无穷远点P∞,那么所有直线都相交,且 ...
- 【密码学Sage代码】椭圆曲线加密/解密(基于《密码编码学与网络安全——原理与实践(第七版)》)
[密码学Sage代码]椭圆曲线加密/解密(基于<密码编码学与网络安全--原理与实践(第七版)>) 教材内容: 实践的Sage代码: #[静水流深Sage代码]使用椭圆曲线密码体制进行加密/ ...
- 密码编码学与网络安全(2):对称密码之传统加密技术
对称密码之传统加密技术 关于对称加密 对称密码模型 密码编码学 密码分析学与穷举攻击 古典加密算法 代替技术 置换技术 转轮机 隐写术 关于对称加密 对称加密,也称为传统加密或单密钥加密,是20世纪7 ...
- 密码编码学与网络安全——原理与实践(第八版)——第一章:信息与网络安全概念
密码编码学与网络安全--原理与实践(第八版) 第一章:信息与网络安全概念 1.1网络空间安全.信息安全和网络安全 1.2OSI安全架构 1.3安全攻击 1.4安全服务 1.5安全机制 1.6密码学 1 ...
- 密码编码学与网络安全----原理与实践(第八版)---第9章笔记
第九章 公钥密码学与RSA 学习目标: 概述公钥密码体制的基本原理. 阐述公钥密码体制的两个不同应用. 列举和解释公钥密码体制的要求. 概述RSA算法. 理解计时攻击. 总结算法复杂性的相关问题. 公 ...
最新文章
- vue 点击事件执行多次
- php 降序 保留索引,PHP asort():对数组排序(升序),并保持索引关系
- Windows 中的磁盘阵列
- thinkphp5中资源文件路径的使用
- Python模块: 文件和目录os+shutil
- STM32开发板入门教程(十三) - SPI模式读写SD卡
- 计算mView在view周围的位置
- docker 安装部署nacos
- 机器学习--支持向量机(一)什么是支持向量机
- 使用iframe的一些经验
- 判断拐点的条件_拐点的定义
- 从定制 Ghost 镜像聊聊优化 Dockerfile
- CentOS 、Linux 配置国内阿里源、yum源镜像
- for(in/of)/forEarch的区别和使用
- Android 手机设置中铃声设置里的通知音量与铃声音量的分离
- subplots与figure函数参数解释说明以及简单的使用脚本实例
- php抓取图片curl,php获取远程图片的两种 CURL方式和sockets方式获取远程图片
- Windows+R命令大全
- 《怒海营救》,招招真实的动作电影
- 【前端】汉字转拼音首字母