Rsa

RSA-OAEP 與 RSA-PSS 中的零字節標頭

  • April 11, 2017

PKCS#1 v2.1/ RFC3437定義了用於加密的 OAEP 填充模式和用於簽名填充的 PSS。這兩種方案都基於 Rogaway & Bellare 沒有專門為 RSA 定制的通用結構。

對 RSA-OAEP 所做的更改之一是,實際填充只進行到 $ n-1 $ (其中是模數的八位字節長度)並且單個零字節被附加到整個字元串。這是完成的,因為一條消息填充到 $ n $ 字節可能大於模數,因此在解密時會產生歧義。

我的問題是:對於 RSA-PSS 可以提出相同的論點,但是這裡沒有零字節被添加到填充的散列中。為什麼不需要簽名?

我認為確實如此,讓我們閱讀第 8.1.1 章簽名生成操作:

EMSA-PSS encoding: Apply the EMSA-PSS encoding operation (Section
9.1.1) to the message M to produce an encoded message EM of length
\ceil ((modBits - 1)/8) octets such that the bit length of the
integer OS2IP (EM) (see Section 4.2) is at most modBits - 1, where
modBits is the length in bits of the RSA modulus n:  

    EM = EMSA-PSS-ENCODE (M, modBits - 1).

Note that the octet length of EM will be one less than k if
modBits - 1 is divisible by 8 and equal to k otherwise.  If the
encoding operation outputs "message too long," output "message too
long" and stop.  If the encoding operation outputs "encoding
error," output "encoding error" and stop.

現在句子*“請注意,如果 modBits - 1 可被 8 整除,否則 EM 的八位字節長度將比 k 小 1,否則等於 k。”* 清楚地表明這類似於 OAEP 加密。

此外,如果您查看 9.1.1 中的編碼操作:

11. Set the leftmost 8emLen - emBits bits of the leftmost octet in
maskedDB to zero.

12. Let EM = maskedDB || H || 0xbc.

您會看到最左邊(最高有效位)設置為零。

引用自:https://crypto.stackexchange.com/questions/46503