在iOS中使用公钥解密OAEP

在iOS中使用公钥解密OAEP,ios,cryptography,digital-signature,public-key-encryption,pkcs#1,Ios,Cryptography,Digital Signature,Public Key Encryption,Pkcs#1,我是一名学生,对RSA有一些非常基本的理论知识。我正在研究下一个假设情况,但我很困惑,我需要一些帮助来解决它 在我的情况下,我有一个服务器,它使用RSA的私钥加密数据(据我所知,这是一个签名模式)。选择的加密填充是PKCS1_OAEP_SHA1这是我的第一个疑问,这种情况正确吗?或者我应该使用PKCS1_PSS而不是PKCS1_OAEP_SHA1 然后服务器将其公钥发送到iPhone手机,以解密/验证先前加密/签名的数据。但根据苹果的加密兼容性清单,iOS只支持PKCS1,不支持填充解密。 所以

我是一名学生,对RSA有一些非常基本的理论知识。我正在研究下一个假设情况,但我很困惑,我需要一些帮助来解决它

在我的情况下,我有一个服务器,它使用RSA的私钥加密数据(据我所知,这是一个签名模式)。选择的加密填充是PKCS1_OAEP_SHA1这是我的第一个疑问,这种情况正确吗?或者我应该使用PKCS1_PSS而不是PKCS1_OAEP_SHA1

然后服务器将其公钥发送到iPhone手机,以解密/验证先前加密/签名的数据。但根据苹果的加密兼容性清单,iOS只支持PKCS1,不支持填充解密。 所以我的第二个问题是如何在iOS中以支持的格式解密OAEP公钥。如果我本来应该先与PKCS1_PSS(而不是PKCS1_OAEP)签署,我可以在iOS中验证它吗


提前感谢。

您不应该使用OAEP填充来加密“签名”。签名应通过签名生成算法生成,如。尽管加密和签名生成算法的模幂部分是相同的(如标准中所述),但填充方法却不同

请注意,PSS比PKCS#1 v1.5签名(可证明安全)更好。但是,如果遇到库之间的兼容性问题,您可能会求助于签名

针对您的具体情况:您可以使用RSA/NONE进行解密,然后自己执行OAEP。不过,这很难实现


注意,在中间攻击中,给定的协议是不安全的;您如何信任发送的公钥?攻击者只需用自己的密钥替换即可。

OEAP(PKCS#1 v2.0)比PKCS#1 v1.5好,但如果不支持OAEP,则必须使用后者。但我无法控制服务器端。公钥是OAEP格式的。因此,我必须找到在iOS(PKCS#1或无填充格式)中验证它的方法(PublicKey OAEP)。。。