Rsa

RSA-OAEP 輸入參數

  • September 23, 2020

使用 OAEP 為 RSA 創建填充時,會準備如下消息:

Hash(Input Parameter) || Zeros || 1 || Message

我的問題是,輸入參數應該是什麼?它必須是雙方都知道的,我知道它可以是一個空數組(字元串,無論如何)。在這種情況下,不需要計算雜湊,對空輸入進行雜湊處理總是會產生相同的結果。

是否有關於使用什麼作為輸入參數的建議?

我正在考慮散列所有各方都知道的公共模數 n。我認為這沒有必要,因為來自 OAEP 程序另一部分的隨機種子無論如何都會改變最終值,但我仍然很好奇什麼被認為是“最佳實踐”,或者我錯過了一些要求。

問題中的輸入參數PKCS#1v2.1中稱為標籤;該標準規定它可能是空的,或者以某些指定的語法表示。我從本文的備註 3 中藉用 Victor Shoup 的解釋:

標籤是一個字節串,它以不可延展的方式有效地綁定到密文。它可能包含從上下文中隱含的數據,不需要加密,但仍應綁定到密文。我們將標籤視為對使用加密方案的應用程序有意義的字節字元串,並且獨立於加密方案的實現。例如,有一些密鑰交換協議,其中一方(比如A )在另一方(比如**B)的公鑰下加密會話密鑰K。為了協議安全,甲方的身份(或公鑰或證書)必須不可延展地綁定到密文。一種方法是簡單地將這個身份附加到明文中。但是,這會產生不必要的大密文,因為在這種協議的上下文中,B通常已經知道A的身份。標記機制的良好實現可以達到相同的效果,而不會增加密文的大小。標籤也可以是任意和可變長度的,但我們不強加加密和解密算法應該能夠將標籤作為流處理的限制。ECIES 和 RSA-OAEP 送出都包含標籤的概念(稱為編碼參數),儘管絕對沒有說明標籤的作用或功能。儘管如此,它似乎是一個潛在有用的功能(..)

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