前几天,Google通知我,我的Gmail帐户可能已被盗用,因为它已经被来自不寻常位置的两个IP地址访问。由于我通常(并且愚蠢地)为每个网站使用相同的密码,因此我决定更改并使用不同的密码。
作为Android开发人员,我决定开始开发一个密码管理器应用程序,我可以存储我的用户名和密码,因为很难记住不同的密码。我不想采用简单的路线并下载现有的第三方密码管理器应用程序。
这让我想到,在我的应用程序中保护用户名和密码的最佳方法是什么?目前,我需要密码才能查看可添加的帐户列表。我还将用户名和密码存储到数据库中。但是,似乎Android无法对数据库进行本机加密。我可以加密我存储在数据库中的值,但如果有人拿起我的手机,他们可以找到加密,如果他们真的想要。或者,我可以使用服务器进行加密/解密,但是您必须维护一台服务器并且可能会受到攻击。
我很想就这个话题得到一些意见。虽然我知道无法实现完美,但对于我的Android应用程序来说,这是一个很好的实现方法吗?
答案 0 :(得分:2)
每次他们想要添加/查看密码列表时,您肯定会要求用户提供PIN或密码,对吧?为什么不将它用作加密密钥,这意味着如果有人拿到手机,他们仍然无法在不知道用户定义密钥的情况下访问或解密密码。
答案 1 :(得分:2)
看一下应用程序1password,它们可能是市场上最好的密码管理器应用程序。他们的理念是将所有密码存储在128bit加密版本中,您可以使用1password进入。除此之外,所有网站密码都是随机生成的字母数字字符串。所以没有碰撞的机会,你在任何地方浏览都是安全的。
您不应该使用只是意味着人们可以假设他们的密码位于某处的服务器,如果您是一名优秀的应用程序开发人员,服务器上的密码就像您将其存储在客户端一样安全。
至于找到加密,如果他们“真的想要”这真的取决于用户选择一个密码,他们将所有信息都用。是的,可以用强力破解加密,但如果用户选择非字典字母数字字符串,则通过概率几乎是不可能的。此外,如果您正确加密所有内容,它们不能只是“破坏”加密。
最后因为我可以
积分XKCD