浅浅瞅瞅RSA-PSS 算法
按照惯例传统,还是要讲讲为什么来学习这个东西。我的原则学习无非是项目驱动、和知识联系。学习这个是因为在看代码的时候看到了RSA一个宏定义后面加了一个PSS,我就奇了怪了,这玩意是个啥呢?咱们得循序渐进哦!!!SSA是填充、封装格式;PSS是私钥签名流程;ES是公钥加密流程。即中间人有办法控制m。
一、前言
按照惯例传统,还是要讲讲为什么来学习这个东西。我的原则学习无非是项目驱动、和知识联系。
学习这个是因为在看代码的时候看到了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
网络安全工程师(白帽子)企业级学习路线
第一阶段:安全基础(入门)

第二阶段:Web渗透(初级网安工程师)

第三阶段:进阶部分(中级网络安全工程师)

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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)