在安卓上存储信用卡信息是不是安全?

Posted

技术标签:

【中文标题】在安卓上存储信用卡信息是不是安全?【英文标题】:Is it secure that store creadit card info on android?在安卓上存储信用卡信息是否安全? 【发布时间】:2012-10-14 09:22:10 【问题描述】:

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

支付成功后,我生成一个随机密钥,打包成keystore,最后将keystore文件存储在内部存储中,这个keystore文件被用户的登录密码锁定。另一方面,信用卡信息会被这个key加密,变成Base64编码的字符串,最后写入到内部存储的文件中。

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

以上是我保护存储在设备上的信用卡信息的方法,它安全吗?

【问题讨论】:

【参考方案1】:

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

PCI 要求您的加密元素每季度更改一次密钥 - 那么您将如何实现呢?强制用户每 3 个月更改一次密码?如果他们从不登录来更改它怎么办?

您的方法极易受到攻击者成为“客户”以尝试破坏您的系统的攻击 - 他将能够在自己的设备上直接完成此操作,而不会检测到或抵抗他的攻击。然后他可以使用他学到的东西来攻击你其他客户的帐户。请告诉我们您正在开发的网站 - 如果您遵循这种设计方法,我想在您完成后远离它。

【讨论】:

“季度密钥更改”是否意味着密钥库中的密钥应该经常更改? “季度密钥更改”是否意味着密钥库中的密钥应该经常更改?也许可以通过每次用户登录或完成支付后更改密钥来实现(用户在使用信用卡支付之前总是需要重新输入密码)。另一方面...密钥库存储在受android操作系统保护的内部存储中,您的意思是我不应该信任操作系统提供的安全机制吗?【参考方案2】:

看来我在帖子中的方法终于是我的答案了。

因为安卓提供对内部存储的访问限制(see this link) ,即使设备丢失或被盗,黑客仍然无法访问密钥库并通过暴力破解方法。

但还有另一个问题。

在root手机中,“坏程序”可能会听软键盘,我应该做一些其他的学习工作。

【讨论】:

你无法防范一切。例如,用户可以安装自己的键盘应用程序(例如 Swype),该应用程序始终可以在输入时记录此类信息。我认为重要的部分是采取所有合理的步骤来防止您的应用程序泄漏,包括允许用户选择根本不存储这些数据。【参考方案3】:

请勿在设备上保存用户信用卡数据!只是没有办法让它安全。植根手机可以让应用程序更轻松地访问敏感数据。设备可能会丢失或被盗。您必须实现对服务器的安全用户登录,并将 CC 数据存储在那里。

试试这个http://developer.authorize.net/downloads/

【讨论】:

-1 因为从技术上讲,我认为你有点过时了,因为我有几个当前(最多 2 年)的设备,这些设备为此内置了安全元件确切用途。 我想你也会明白,随着时间的推移,安全性也变得很容易被破坏。 在 android 开发者网站中,this link 表示如果我将密钥库文件放在内部存储中,则该文件只能由我的应用程序访问。是否足以保护我的密钥库文件并防止被暴力攻击? 好吧,我浏览了链接,看起来有很好的保护级别!所以你可以继续尝试这个:)

以上是关于在安卓上存储信用卡信息是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

关于存储信用卡详细信息的安全模型的思考

安全审查:客户端信用卡# 存储在服务器上,但一次性加密存储在客户端 cookie 中

拥有信用卡模型是不是安全?

使用 PayPal 的“Website Payments Pro”存储信用卡信息?

应用程序功能要求保存信用卡详细信息以备将来使用。需要调查是不是存在任何特定的安全设计

将信用卡详细信息存储到mysql数据库中[重复]