Rsa

2021 年 RSA 填充建議是什麼?

  • June 7, 2021

RSA 的目前 2021 年填充建議是什麼?PCKS1? 7? 11?歐亞普?

RSA 加密填充¹ 的最佳實踐是RSAES-OAEP,使用 SHA-256 或 SHA-512 等雜湊,以及使用相同雜湊的MGF1遮罩生成函式。自 2003 年 2 月的RFC 3447以來,唯一的重大變化是棄用了 SHA-1。

帶有 RSA-2048 和 SHA-256 的 RSAES-OAEP 很常見。使用 RSA-3072 和 SHA-512 是無可非議的,並得到一些 HSM 的支持,可能安全使用幾十年. 這允許每個密碼嵌入多達 3072-2×512-16=2032 位,即在 384 字節的 RSA 密碼中加密多達 254 字節的數據。

除了顯而易見和困難(保持私鑰和未加密數據的機密性)之外,還必須注意旁道。特別是在解密時,不得洩露有關解密過程中哪裡出現錯誤的資訊。實施者有時錯過的一個關鍵點是在 EME-OAEP 解碼中的步驟 3.g的末尾:

如果沒有十六進制值為 0x01 的八位字節將 PS 與 M 分開,如果 lHash 不等於 lHash’,或者如果 Y 不為零,則輸出“解密錯誤”並停止。(見下面的註釋。)

注意。必須注意確保對手無法區分(上述)中的不同錯誤條件,無論是通過錯誤消息還是時間,或者更一般地,了解有關編碼消息 EM 的部分資訊。否則,對手可能能夠獲得有關解密密文 C 的有用資訊,從而導致選擇密文攻擊,例如Manger觀察到的攻擊。

通過在其他兩個條件之前測試 lHash = lHash’,可以避免對三個條件進行恆定時間測試。該測試本身不需要是恆定的時間。

關於RSA死亡的報導被大大夸大了。當加密或簽名驗證必須在資源較少的設備上進行時,或者比私鑰操作更頻繁(例如,對於嵌入在數字證書中的簽名,它只生成一次並可能檢查數十億次),通常使用 RSA由於公鑰操作成本低,是從業者的最佳選擇。


¹ 正如評論中所指出的,另一種安全做法是RSA-KEM,但它不是獨立的 RSA 加密填充:要安全地加密有效負載,它需要經過身份驗證的密碼,例如 AES-GCM。此外,最終的密碼比 RSAES-OAEP 更大,在因式分解方面具有相同的安全性;當使用 RSAES-OAEP 時,明文的確切長度的機密性不受保護。

² 比起可用於密碼分析的假設量子電腦,我更擔心地球上人為的生命條件退化、小行星造成的大規模滅絕以及從我的密碼設備中提取資訊的新量子感測器。

³ 其他都是在實現私鑰 RSA 功能 $ x\mapsto x^d\bmod n $ 本身。

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