我在应用的文档目录中保存了一个重要文件。我不允许其他人查看其内容,因此我使用自动生成的AES密钥加密文件,并使用RSA公钥加密此AES密钥,然后将加密的AES密钥保存到NSUserDefaults。
使用重要文件时,我将获取加密的AES密钥并使用RSA公钥解密AES密钥,然后解密该文件。
但是我不知道在哪里存储RSA私钥,在我的代码NSString *rsaPrivateKey = @"%^^&*(())";
中编写它是否安全,如果没有,是否有更安全的解决方案?
我知道如何使用openssl(This link helps me)
生成RSA公钥和私钥编辑:
重要文件仅向用户自己开放,您可以将其视为包含某些敏感内容的照片,并且照片会由用户保存。
答案 0 :(得分:1)
原则上,您正在尝试解决DRM问题。只要您不能信任运行时系统,就没有完整的解决方案。您最好的办法是将密钥存储在系统提供的容器中,并希望这些密钥得到很好的保护(即已经提到过的iOS链接链)。
如果失败,您可以使用设备中某些静态信息生成的AES密钥加密RSA密钥。这应该被认为是混淆而不是加密,因为密钥并不是真正的秘密。您可能应该尝试使用标准容器格式(如PKCS#8)来加密密钥。
可以从静态数据集生成RSA密钥(使用PRNG在RSA密钥对生成器中提供此数据),但这些方案不是标准化的,非常脆弱并且需要不明确的CPU时间,所以我强烈建议不要走那条路。