我正在使用iOS应用,我需要在我的服务器上存储第三方服务的用户凭据。 (例如,存储IMAP登录名/密码,以便当他们登录我的应用程序时,从他们的IMAP服务器获取,因此我的服务器不会存储他们的电子邮件)
我不考虑OAuth,因为并非每个电子邮件服务都提供OAuth。为此,我考虑以下选项:
我是加密新手,所以不确定这是否是一个安全(甚至可能)的选项。有人可以帮忙吗?谢谢。
[更新]更新以澄清概念并更改"编码"加密"
答案 0 :(得分:-1)
你应该说“加密”,而不是“编码”。编码是一种使用一组固定规则(算法)转换数据的机制。 Base64是一种编码,urlencoding也是。编码不提供任何安全性。 然而,加密使用使用加密密钥的算法将明文转换为密文。在不知道密钥的情况下,密文的回归非常困难。 (永远不可能) 好的,关于你的例子: 这是可行的,但即使有一些攻击机会。
在运行时的某个时刻,MyApp知道明文密码。当它被解密。然后,明文密码位于RAM中,并且可能被具有相应权限的恶意软件读出(例如,根恶意软件) 此外,您需要确保在正确的模式下使用合适的算法。 CBC中的AES-256比ECB模式更安全。然后,您还必须考虑如何将密码转换为加密密钥。如果您只是使用密码,那就太安全了。那么你也应该使用一个值得信赖的图书馆,没有来自不知名的人的图书馆
嗯,这些只是一些想法。在加密加密之前,您应该先了解一些背景知识。有很多选择,你应该知道,你做了什么。