Rsa

PKCS RSA - 為什麼我們需要編碼

  • January 17, 2021

在 RSASSA-PKCS-v1_5 簽名方案中,第一步是對散列數據執行編碼。(0x00||0x01||PS||0x00||T)。

這種編碼對安全性重要嗎?如果雜湊直接加密而不編碼會發生什麼?

根據論文的第 9 節,所使用的編碼是該方案的安全性所必需的。

編碼操作可能會引入一些隨機性,使得編碼操作對同一消息的不同應用會產生不同的編碼消息,這有利於可證明的安全性。對於這樣的編碼方法,編碼和驗證操作都需要,除非驗證者可以再現隨機性(例如,通過從簽名者獲得鹽值)。對於確定性編碼方法,只需要一個編碼操作。

簽名方案中使用了兩種帶附件簽名的編碼方法,並在此處指定:EMSA-PSS 和 EMSA-PKCS1-v1_5。

然後,本文進一步詳細介紹了這兩種編碼方法。

如果您不使用編碼,您將損害方案的安全性證明,但是您可以在對消息進行散列後應用編碼。根據論文:

在不損害 RSASSA-PSS 的安全證明的情況下,可以在計算簽名的其餘部分的模組之外執行 EMSA-PSS-ENCODE 和 EMSA-PSS-VERIFY(將散列函式應用於消息)的步驟 1 和 2操作,以便將 mHash 而不是消息 M 本身輸入到模組中。換句話說,即使對手可以控制 mHash 的值,RSASSA-PSS 的安全證明仍然成立。

這裡的絕妙答案詳細介紹了編碼所阻止的一種攻擊,並提供了指向其他針對廣泛確定性 RSA 簽名簽名方案的攻擊的連結。

Bellare & Rogaway的原始論文的第 2 節概述了編碼方案的幾個優點。

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