0


浅浅瞅瞅RSA-PSS 算法

一、前言

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

学习这个是因为在看代码的时候看到了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
    1. 将 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

标签: 安全 RSA PSS

本文转载自: https://blog.csdn.net/weixin_45264425/article/details/128961821
版权归原作者 Hkcoco 所有, 如有侵权,请联系我们删除。

“浅浅瞅瞅RSA-PSS 算法”的评论:

还没有评论