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

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

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

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

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

【问题讨论】:

    标签: android security credit-card keystore


    【解决方案1】:

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

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

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

    【讨论】:

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

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

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

    但还有另一个问题。

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

    【讨论】:

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

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

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

    【讨论】:

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