RSASSA-PSS签名方案的核心部分是PKCS#1的EMSA-PSS编码操作,描述了标准的第9.1节。
这种编码方法使用了一个填充(名为Padding1),它只是8个零字节(0x00)。这个填充的连接、消息的散列和随机选择的salt再一次进行散列,形成最后签名的一部分--参见第39页的ASCII图表。
这就引出了我的问题--这个填充的具体目的是什么?
我能想到的一个效果是,它确保--给定空盐和空消息--哈希函数的输入不会为空。然而,这似乎是可疑的,因为我所知道的所有散列函数都能很好地处理空输入,而散列--无论是空字节字符串还是包含8* 0x00的字节字符串--在这两种情况下都是确定性的。
第二个填充( Padding2 )的目的对我来说是很清楚的,因为它确保签名具有所需的(用户定义的)长度,同时进行结构化,这样就可以检索salt,而不需要事先知道它的长度。
发布于 2020-10-15 10:57:02
我猜想这个salt本质上是未来扩展的版本号,它的任务是确保使用不同salt的每个版本的签名都不是所描述的版本的有效签名。
我可以想象其他两个角色:
https://crypto.stackexchange.com/questions/85573
复制相似问题