浅浅瞅瞅RSA-PSS 算法

本文介绍了RSASSA-PSS算法,它是RSA数字签名的一种填充方式,特别强调了在TLSv1.3中的应用。文章详细阐述了PSS填充算法的工作原理,以及RSASSA-PSS在签名和验证过程中的步骤。同时提到了其他国家的数字签名算法和RSA与RSASSA的关系。
摘要由CSDN通过智能技术生成

一、前言

按照惯例传统,还是要讲讲为什么来学习这个东西。我的原则学习无非是项目驱动、和知识联系。

学习这个是因为在看代码的时候看到了RSA一个宏定义后面加了一个PSS,我就奇了怪了,这玩意是个啥呢?

咱们得循序渐进哦!!!

  • SSA = Signature Scheme with Appendix
  • PSS = Probabilistic Signature Scheme
  • ES = Encryption Schemes

SSA是填充、封装格式;PSS是私钥签名流程;ES是公钥加密流程。

在这里插入图片描述
即中间人有办法控制m。

二、来讲讲RSASA-PSS

2018年发布的 TLS v1.3(TLS:Transport Layer Security,传输安全层协议,TLS v1.3 对应 RFC
8446)中,其支持的数字签名算法有:RSASSA-PKCS1-v1_5、RSASSA-PSS、ECDSA(Elliptic Curve Digital
Signature Algorithm,椭圆曲线签名算法)、EdDSA(Edwards-Curve Digital Signature
Algorithm,爱德华曲线签名算法)。

这些算法已经是标准(或者是事实上的标准),不过从某种意义上说,这些算法也代表着美国签名算法流派。

除美国外,俄罗斯在1994年发布数字签名算法标准 GOST R 34.10-94,并在2001年发布椭圆曲线数字签名算法标准GOST R34.10-
2001。GOST R34.10-2001在2012年更新为 GOST R34.10-2012。韩国在1998年发表韩国基于证书的数字签名算法 KCDSA
和 EC- KCDA,对应标准发布于[88,89]。德国在 2005 年发布德国椭圆曲线数字签名算法标准 EC- GDSA。中国在 2012 年发布 SM2
椭圆曲线数字签名算法标准,在 2016 年发布 SM9 标识密码数字签名算法标准。

作为重要的国际标准化组织,ISO/IEC 同样也发布了一系列的数字签名算法标准:ISO/IEC 9796、ISO/ IEC 14888、ISO/IEC
20008、ISO/IEC 18370、ISO/IEC 23264 等等。

弱水三千,只取一瓢。由于文章主题和篇幅的关系,本文只介绍 RSASA-PSS 算法。

PSS (Probabilistic Signature Scheme,概率签名方案)是私钥签名的一种填充方式。RSASA(RSA Signature
Algorithm,RSA 数字签名算法)目前支持两种算法:RSASSA-PKCS1-v1_5、RSASSA-PSS。由于安全的原因,RSASSA-
PKCS1-v1_5 现在的使用场景仅仅是为了兼容,当前主流推荐使用 RSASSA-PSS 算法。

PSS 方案首先由 Bellare和Rogaway 首先提出,PSS 与 OAEP(Optimal Asymmetric Encryption
Padding,最优非对称加密填充)非常相像,当然 OAEP也是由这两位大神提出的。

Mihir Bellare是加州大学圣地亚哥分校(UCSD,University of California, San
Diego)计算机科学与工程系的教授。Bellare
于1986年在加州理工学院获得学士学位,1991年在麻省理工学院获得博士学位。1991年至1995年,Bellare 在IBM担任研究员 Bellare
是HMAC、RSA-OAEP、RSA-PSS和OCB的联合开发者。Bellare 是 ACM 和 IACR 的研究员。他曾获得 ACM
巴黎Kanellakis 理论与实践奖,RSA 会议数学奖,David 和 Lucille Packard基金会科学与工程奖学金,以及NSF职业奖( He
has received an ACM Paris Kanellakis Theory and Practice Award, an RSA
Conference Award in Mathematics, a David and Lucille Packard Foundation
Fellowship in Science and Engineering, and an NSF Career award)。

Phillip Rogaway 是美国加州大学戴维斯分校(UCD,University of California,
Davis)计算机科学系的教授。Rogaway 本科毕业于加州大学伯克利分校(UCB,University of California,
Berkeley),并于1991年到麻省理工计算理论小组攻读博士学位(MIT s Theory of Computation group
)。博士毕业之后,Rogaway 到 IBM 担任安全架构师,然后于1994年到 UCD 工作。Rogaway 获得过 Levchin
奖(2016),PET 奖(2015),IACR 研究员(2012),ACM巴黎 Kanellakis 奖(2009),RSA
数学奖(2003)(Levchin prize (2016), PET Award (2015), IACR Fellow (2012), ACM
Paris Kanellakis Award (2009), RSA Award in Mathematics (2003))。
在这里插入图片描述

1-那RSA和RSASSA是个什么关系

RSA 数字签名算法(RSASA)的本质,仍然是 RSA 加密/解密算法,如图2所示。

在这里插入图片描述
从图中可以看到,RSSSA 分为两步。

  • 1. 将待签名的 M 进行 Hash,从而得到 H
    
  • 2. 将 H 进行 RSA 私钥加密
    

既然是 RSA 加密,就绕不开 RSA 那个致命问题——能够非常简单地被选择密文攻击所破解,于是也就引发了 RSA 填充算法。

RSASSA-PKCS1-v1_5 采用的就是 RSA_PKCS1_PADDING_v1_5 填充算法 ,而 RSASSA-PSS 的填充算法则与
RSA_PKCS1_OAEP_PADDING 填充算法比较相像。下面我们就介绍 RSASSA-PSS 算法(一个填充算法)。

2-RSASSA-PSS 的填充算法

RSASSA-PSS 算法本质就是在 RSA 算法的基础上叠加上一种填充算法 (为了便于表述,这种填充算法也可以称为 RSA-PSS 填充算法,或者
RSA-PSS 编码),如图3所示。

在这里插入图片描述
在 Hash 之后,在 RSA 之前,RSASA-PSS 算法插入了一个 RSA-PSS 填充算法。RSA-PSS 的具体算法,如图所示:
在这里插入图片描述
图中,RSA-PSS 填充算法,分为四步。下面我们分别讲述这四步。

1 M 转换成 M1

在这里插入图片描述

2 构建 DB

在这里插入图片描述

3 MGF

在这里插入图片描述

4 构建 EM

在这里插入图片描述

2-RSASA-PSS 的签名算法

经过 RSA-PSS 填充以后,接下来的签名算法,就比较简单了,

在这里插入图片描述

EM = RSA-PSS(M)

S = RSAEP(EM)

3-RSASA-PSS 的签名验证

RSASA-PSS 签名验证,分为如下几个步骤。

1 解密

在这里插入图片描述

2 分割 EM

在这里插入图片描述

3 计算 salt

在这里插入图片描述

4 校验 Hash

在这里插入图片描述

4-RSAES-PKCS1-v1_5 加密流程

作⽤:RSA公钥加密

常见于使⽤RSA算法的TLS握⼿,例如客户端拿到服务端的公钥后,对⾃⼰⽣成的key进⾏加密。

在这里插入图片描述

5-RSASSA-PKCS1-V1_5-SIGN 签名流程

该签名流程,使⽤了EMSA-PKCS1-v1_5 封装格式

就是RSA签名,常见于 数字证书的签名,例如CA证书是RSA证书,那么由他⽣成的下级证书,就会⽤CA证书的私钥进⾏签名,获得⼀个值插在下级证书⾥⾯。

感谢前辈的文章

参考链接:
https://www.51cto.com/article/663141.html
https://wenku.baidu.com/view/1367392cf48a6529647d27284b73f242336c3192.html?
wkts =1675347108003&bdQuery=PKCS1_PSS

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值