RSA-PSS-Default algorithm

      RSASSA-PSS 将 RSASP1 和 RSAVP1 原语与 EMSA-PSS 编码方法结合起来。
1、签名生成运算:
      输入:      K      签名者的 RSA 私钥
                     M      待签名的消息,是一个八位组串
      输出:      S      签名,是一个长度为 k 的八位组串,这里 k 是 RSA 数模 n 的以八位组为计量单位的长度
      步骤:
            1. EMSA-PSS编码:  EM = EMSA-PSS-ENCODE (M, modBits – 1)。
                  modBits 是 RSA 数模 n 的比特长度
            2. RSA签名
                  a. 将编码消息 EM 转换成一个整数消息代表: m = OS2IP (EM) 。
                  b. 产生一个整数签名代表: s = RSASP1 (K, m) 。
                  c. 将签名代表 s 转换成长度为 k 个八位组的签名: S = I2OSP (s, k) 。
            3. 输出签名代表 S 。

2、签名验证运算:
      输入:      (n, e)   签名者的RSA公钥
                     M         签名待验证的消息,是一个八位组串
                     S         待验证的签名,是一个长度为 k 的八位组串,其中 k 是 RSA 数模 n 的八位组长度
      输出:     “有效的签名”或者“无效的签名”
      步骤:
            1. 长度检查: 如果签名 S 的长度不是 k 个八位组,则输出“无效的签名”然后中止运算。
            2. RSA验证
                  a. 将签名S转换为一个整数签名代表: s = OS2IP (S) 。
                  b. 产生一个整数消息代表: m = RSAVP1 ((n, e), s) 。
                  c. 将消息代表m转换成长度为 emLen = (modBits – 1)/8 个八位组的编码消息: EM = I2OSP (m, emLen) 。
                        其中 modBits 是 RSA 数模 n 的比特长度.
            3. EMSA-PSS验证: Result = EMSA-PSS-VERIFY (M, EM, modBits – 1)。
            4. 如果Result =“consistent”,则输出“有效签名”。否则,输出“无效的签名”。

3、上述涉及到的算法
      a、I2OSP(Integer-to-Octet-String primitive),把一个非负整数转换为一个长度指定的字节串。
      b、OS2IP(Octet-String-to-Integer primitive),将一个八位组串转换成一个非负整数。
      c、RSASP1(RSA signature primitives),签名原语。  s  = RSASP1 (K, m)      =  m^d mod n。
      d、RSAVP1(RSA verification primitives),验证原语。m = RSAVP1 ((n, e), s) =  s^e mod n。
      e、EMSA-PSS-ENCODEEMSA-PSS-VERIFY,(PSS:Probabilistic Signature Scheme),RSASSA-PSS 有四个选项,这四个选项就是用于这个算法。具体描述见《PKCS_#1_v2.1_RSA_算法标准.pdf》p33。
      f、 I2OSP 和 OS2IP 是数据转换原语; RSASP1 和 RSAVP1 是签名和验证原语; EMSA-PSS 是带附属的签名的编码方法。
      g、MGF1SHA1,是一个基于散列函数 SHA1 的掩模生成函数。其主要就是循环的做一些 I2OSP 和 Hash 操作。

4、RSA-PSS-Default
      其是四个选项值取默认值的 RSASSA-PSS 算法。
      RSASSA-PSS-params ::= SEQUENCE {
            hashAlgorithm [0] HashAlgorithm DEFAULT sha1,
            maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1,
            saltLength [2] INTEGER DEFAULT 20,
            trailerField [3] TrailerField DEFAULT trailerFieldBC
      }

5、参考
      本文所有部分都归纳于:《PKCS_#1_v2.1_RSA_算法标准.pdf》,是PKI论坛翻译的,从网上可以搜索得到;
      其他的参考还有《rfc4055.txt.pdf》和《pkcs-1v2-1.pdf》。
      RSASSA-PSS 在 openssl 中的支持,可参考:http://www.pubbs.net/201006/openssl/40713-questions-about-rsassa-pss.html 中六楼 Steve 的发言。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值