我是一个对RSA有一些基本理论知识的学生。我正在研究下一个假设的情况,但我很困惑,我需要一些帮助来解决它。
在我的情况下,我有一个使用RSA加密数据的服务器(据我所知,这是一个签名模式)。这个加密选择的填充是PKCS1_OAEP_SHA1 --这是我第一次怀疑,这种情况正确吗?还是我应该用PKCS1_PSS代替PKCS1_OAEP_SHA1?
然后,服务器将其PublicKey发送到iPhone移动电话,以便解密/验证先前的加密/签名数据。但根据苹果的CryptoCompatiblity清单,http://goo.gl/81Um6Z iOS只支持PKCS1,不支持填充解密。因此,我的第二个问题是如何以iOS支持的格式解密OAEP iOS。如果我首先要与PKCS1_PSS签名(而不是PKCS1_OAEP),我能用iOS验证它吗?
提前谢谢。
发布于 2014-03-30 09:58:16
您不应该使用OAEP填充加密“签名”。签名应该由签名生成算法(如PSS )生成。尽管加密和签名生成算法的模块指数部分是相同的(如标准中所指出的),但填充方法并非如此。
请注意,PSS优于PKCS#1 v1.5签名(可证明安全)。但是,如果在库之间遇到兼容性问题,则可能会退回到PKCS#1 v1.5签名。
对于您的特定情况:您可以使用RSA/NONE解密,然后执行OAEP取消填充。不过,这是很难实现的。
请注意,给定的协议对中间攻击中的人不安全;您如何信任发送的公钥?攻击者可以简单地用自己的密钥替换它。
https://stackoverflow.com/questions/22713347
复制相似问题