Rsa
RSA-OAEP 與 RSA-PSS 中的零字節標頭
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.
您會看到最左邊(最高有效位)設置為零。