1

我是一名學生,他對RSA有一些非常基本的理論知識。我正在研究下一個假設情況,但我很困惑,我需要一些幫助來解決它。在iOS中使用公鑰解密OAEP中的OAEP

在我的情況下,我有一個服務器使用其私鑰加密數據與RSA(所以我知道這是一個簽名架構)。這種加密選擇的填充是PKCS1_OAEP_SHA1這是我第一個懷疑,這種情況是否正確?或者我應該使用PKCS1_PSS而不是PKCS1_OAEP_SHA1?

然後,服務器將其公鑰發送到iPhone手機以解密/驗證以前的加密/簽名數據。但根據Apple的CryptoCompatiblity清單http://goo.gl/81Um6Z iOS僅支持PKCS1和無填充解密。 所以我的第二個問題是如何在iOS中以支持的格式解密OAEP PublicKey。並且,如果我將首先使用PKCS1_PSS進行簽名(而不是PKCS1_OAEP),我可以在iOS中進行驗證嗎?

在此先感謝。

+0

OEAP(PKCS#1 v2.0)優於PKCS#1 v1.5,但如果不支持OAEP,則必須使用後者。 – ntoskrnl

+0

但我無法控制服務器端。 PublicKey採用OAEP格式。所以我必須找到在iOS(PKCS#1或無填充格式)中驗證它的方式(PublicKey OAEP)... – peskarolo

回答

0

您不應該使用OAEP填充來加密「簽名」。簽名應該由簽名生成算法生成,例如PSS。雖然加密和簽名生成算法的模冪運算部分是相同的(如標準中所述),但填充方法不是。

請注意,PSS優於PKCS#1 v1.5簽名(可證明安全)。如果遇到庫之間的兼容性問題,您可能會回退到PKCS#1 v1.5簽名。

對於您的具體情況:您可以使用RSA/NONE解密,然後自己執行OAEP解除壓縮。雖然這很難實施。

請注意,給定的協議是不安全針對中間人的攻擊;你如何相信發送的公鑰?攻擊者可以簡單地用自己的密鑰替換它。

相關問題