在安卓设备上存储信用卡信息是否安全?

5

在我的方案中,当用户第一次想要用信用卡付款时,他必须重新输入登录密码和完整的信用卡信息。

支付成功后,我会生成一个随机密钥,并将其打包成密钥库。最后将密钥库文件存储在内部存储器中,这个密钥库文件受到用户登录密码的保护。另一方面,信用卡信息将被该密钥加密并转换为Base64编码字符串,最终写入内部存储器中的文件。

在下一次使用信用卡付款时,用户也必须重新输入登录密码,这样我就可以使用它来解锁密钥库文件并提取密钥。此时,我有能力解密用户的信用卡信息。

以上是我保护设备上存储的信用卡信息的方法,这是否安全呢?

3个回答

2

不要在设备上保存用户信用卡数据!这样做无法确保安全。已取得 root 权限的手机可以更轻松地让应用程序访问敏感数据。设备可能会丢失或被盗。您需要实现安全的用户登录到服务器并将信用卡数据存储在那里。

尝试使用此链接:http://developer.authorize.net/downloads/


-1 因为从技术上讲,我认为你有点过时了,因为我身边有几个当前(甚至是两年前)内置安全元件的设备,可以用于这个确切的用途。 - paulkayuk
1
我想你也应该能够理解,随着时间的推移,安全性也变得更容易被妥协。 - Royston Pinto
在Android开发者网站上,这个链接说如果我把我的密钥库文件放在内部存储中,该文件只能被我的应用程序访问。这样做足以保护我的密钥库文件并防止遭受暴力攻击吗? - Lin Yu Cheng
我看了一下链接,看起来有很好的保护级别!所以你可以尝试一下这个 :) - Royston Pinto

2
似乎我的帖子中的方法最终成为了我的答案。
因为Andriod在内部存储设备上提供了访问限制(请参考此链接),即使设备丢失或被盗,黑客仍然无法访问密钥库并通过暴力破解方式破解它。
但是还有另一个问题。
在root过的手机中,“恶意程序”有可能窃听软键盘,我需要做一些其他研究工作。

你无法防范所有的事情。例如,用户可以安装自己的键盘应用程序(如Swype),它可以始终记录输入的信息。我认为重要的部分是采取所有合理的措施来防止应用程序泄漏,包括允许用户选择完全不存储这些数据的选项。 - Vala

0

您不应该在用户设备上存储信用卡号码。

PCI要求对加密元素进行季度密钥更改 - 那么您将如何实现呢?强制用户每3个月更改密码吗?如果他们从未登录更改密码怎么办?

您的方法极易受到攻击者成为“客户”以尝试破坏您的系统的影响 - 他将能够在自己的设备上轻松完成攻击而不被检测或抵抗。然后,他可以利用所学攻击其他客户的账户。请告诉我们您正在处理的网站 - 如果您遵循这种设计方法,我想在您完成后远离它。


“Quarterly key change” 意味着 keystore 中的密钥应该经常更换吗? - Lin Yu Cheng
"季度密钥更换"是否意味着应经常更改密钥库中的密钥?也许可以通过在用户登录或完成付款后每次更改秘密密钥来实现此目标(用户在使用信用卡付款之前始终需要重新输入密码)。另一方面,密钥库存储在由Android操作系统保护的内部存储器中,您是否意味着我不应信任操作系统提供的安全机制?" - Lin Yu Cheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接