3

我已经“保护”了我的 android 应用程序和提供金融交易服务的 tls 服务器之间的通信,目前正在开发中。

安全凭证存储在 Android apk 中包含的 BKS 密钥库中。密钥库的密码在应用程序源中以纯文本形式显示:

keyStore.load(is, "passwd".toCharArray());

我担心如果有人对应用程序进行逆向工程,他们将能够冒充另一个用户并危及服务的安全性。

我想知道我的实现是否存在错误,是否有其他人有这种担忧,以及防止这种可能性的最佳方法是什么。

4

4 回答 4

2

每当您在客户端上存储安全数据时,它都可能受到逆向工程的影响。您可能会尝试在代码中隐藏它,但坚定的黑客无论如何都会发现它。因此,使其更安全的唯一方法是不要在代码中公开密码。也许您可以在应用程序开始时向用户询问一些密码并使用它来解密密码?

于 2011-09-09T16:54:32.790 回答
2

存储在您的应用程序中的凭据是否每个用户都是唯一的,即每个用户都拥有自己的具有唯一凭据的 apk?如果您只有一个具有相同凭据的 apk,那么这与没有安全性一样好。更糟糕的是,它给人一种虚假的安全感。

您(您的雇主)应该真正聘请安全专家从安全角度设计您的系统。

这是我要做的:

  1. 应用程序没有安全凭证。
  2. 每个用户都会在服务器上生成安全凭证。
  3. 每个用户都会获得在安全环境中生成并通过替代渠道交付的秘密激活码。最好通过蜗牛邮件。激活码有时间限制,只能使用一次。
  4. 首次使用时,用户在应用程序中输入激活码,该激活码可通过安全 (https) 通道一次性下载凭据。
  5. 用户提供密码以加密存储在设备上的凭据。
  6. 每次使用该应用程序时,用户都必须提供此密码。如果应用程序在一段时间内未使用,则应用程序必须使会话超时并在用户想要访问时再次要求输入密码。

但不要认为我的话是理所当然的。如果涉及金融交易,您仍然需要安全专家。

于 2011-09-09T17:35:34.127 回答
1

我相信Diffie-Hellman 密钥交换正是我所寻找的。我宁愿不必使用涉及用户的复杂过程重新实现我自己的 DH 版本。

于 2011-11-23T16:24:20.810 回答
0

目前正在为一家加工公司编程-

它们是交易应用程序的一套规则和规定 - 或 - POS APP(销售点应用程序)

这些规则在网上列为 PCI 验证,必须出具一定数量的安全性,否则将是 Visa,inc 或许多其他公司的诉讼。

关于您的问题,它不符合 PCI 合规性,因为这是一个安全问题。

请阅读 PCI 合规性,以便他们全面了解安全性,损害持卡人数据是不好的。

:)

于 2011-09-09T16:42:19.973 回答