保护Android应用程序

时间:2011-09-09 16:37:07

标签: android ssl diffie-hellman

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

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

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

我担心如果有人要对应用程序进行逆向工程,他们就可以冒充其他用户并破坏服务的安全性。

我想知道我的实施是否有问题,如果有其他人有此问题,以及防止这种可能性的最佳方法是什么。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

这就是我要做的事情:

  1. 应用程序没有安全凭据。
  2. 每个用户都在服务器上生成安全凭据。
  3. 每个用户都会获得在安全环境中生成并通过备用渠道提供的秘密激活码。最好通过蜗牛邮件。激活码有时间限制,只能使用一次。
  4. 首先在app中使用用户类型激活码,该激活码允许通过安全(https)频道一次性下载凭据。
  5. 用户提供密码以在存储在设备上时加密凭据。
  6. 每次使用该应用时,用户都必须提供此密码。如果应用程序未使用一段时间,应用程序必须超时会话并在用户想要访问时再次请求密码。
  7. 但不要把我的话视为理所当然。如果涉及金融交易,您仍需要安全专家。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

目前为加工公司编程 -

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

规则在线列为PCI验证,必须签发一定数量的担保,或者是Visa,inc或许多其他公司的法律诉讼。

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

请阅读PCI合规性,以便他们完全了解安全性,不利于持卡人数据。

:)