首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSA-PSS参数标准化吗?

RSA-PSS参数标准化吗?
EN

Cryptography用户
提问于 2020-02-27 09:46:19
回答 1查看 1.2K关注 0票数 4

我同意第三方使用RSA-PSS算法来实现数字签名方案。我希望避免在我身边选择RSA参数,如salt长度、哈希算法等,并共享所需的配置参数。

相反,我想提到一个标准,在这个标准中,所有的参数都已经标准化了,这样我们两个人通常都可以引用相同的标准。我们将在他这边进行签字,在我这边进行核查。

这些参数是由FIPS、IETF或ISO/IEC启动的,这样我们才能避免大量开销吗?如果是的话,哪个标准处理这个问题?

EN

回答 1

Cryptography用户

发布于 2020-02-27 11:00:48

让我们首先去除只有一个选项的两个参数:蒙克生成函数(MGF)和预告片字段。在指定RSA的RFC 3447中,这些只能分别配置为MGF1和1。

您将找不到一个为MGF1选择一个哈希而另一个哈希的通用标准,因为任何哈希都将被认为是安全的,包括默认值(SHA-1)。另一方面,将有许多更高级别的协议或应用程序选择了一组特定的配置参数。

如果我们查看RFC 4055,其中PSS用于X.509v3证书(您将在例如浏览器中找到用于TLS的证书),我们将发现可以为证书中的特定公钥指定配置选项:

代码语言:javascript
复制
RSASSA-PSS-params  ::=  SEQUENCE  {
     hashAlgorithm      [0] HashAlgorithm DEFAULT
                               sha1Identifier,
     maskGenAlgorithm   [1] MaskGenAlgorithm DEFAULT
                               mgf1SHA1Identifier,
     saltLength         [2] INTEGER DEFAULT 20,
     trailerField       [3] INTEGER DEFAULT 1  }

正如您所看到的,所有值都有其缺省值,因此这将是一组易于遵守的规则。在证书中,公钥及其参数被签名,因此应该保证参数的安全性。

然而,还有一个额外的细节:

maskGenAlgorithm字段标识掩码生成函数。默认的掩码生成函数是带有SHA-1的MGF1。对于MGF1,强烈建议底层哈希函数与hashAlgorithm__标识的哈希函数相同。

当然,这意味着通过指定字段MaskGenAlgorithmmgf1SHA1Identifier ( 1:maskGenAlgorithm )来更改默认设置。由于SHA-1被认为是坏的,因此不是hashAlgorithm的一个选项,这意味着应该选择另一个哈希算法。

当所有其他参数都被设置时,这意味着哈希函数成为唯一的配置参数。

现在,由于SHA-2是常用的,它可能是最好的哈希算法家族选择。SHA-224和SHA-384只是SHA-256和SHA-512的较短的输出函数,它们对签名没有多大意义。这就剩下两个选择之一了。沙256是使用最多的,并在许多芯片上有硬件支持。沙512使用64位操作,在64位芯片上既快速又安全。

由于兼容性和硬件支持,我可能会稍微倾向于SHA-256。它仍然有大量的安全性和哈希数据的两倍以上的速度使用硬件支持。

所以我们有: SHA-256,MGF-1,SHA-256,20字节的salt和一个设置为1的预告片字段。只要通过在协议中显式地描述它来与你的朋友沟通,当涉及到PSS的时候,你就都设置好了。

只需要处理PSS参数。您还需要指定如何信任公钥(哦,亲爱的,我提到了X.509证书吗?),以及要使用的最小密钥大小。任何3072位或以上的密钥大小都可以,但是我会坚持3072位,它的安全级别与SHA-256's在大约128位的安全性上具有相同的安全级别。

票数 5
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/77881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档