如何在移动应用程序中实现高安全性?

时间:2011-10-25 08:35:11

标签: android ios security mobile

自从开始了解移动计算以来,我经常错过有关安全性的讨论。但是,在我看来,这是移动计算的一个主要话题。开发安全的移动应用程序有某些方面:

  1. 如何在设备和服务器之间创建保存通信
  2. 如何识别设备以及如何在移动设备上验证用户?
  3. 如何处理设备被盗的可能性以及导致设备上存储的数据被误用以及授予设备的权限?
  4. 可能还有更多,但我认为这些是关键问题。到目前为止,我已经提出了这个解决方案:

    1. SSL
    2. 使用 OAuth 授予对设备的访问权限,然后存储访问令牌 AES加密。在允许用户通过请求解密密钥访问应用程序之前检查用户的身份(很可能是PIN,因为那些更容易在移动设备上输入)。
    3. 如果无法避免存储数据,请使用 AES加密。要么使用2中提到的密钥,要么将解密密钥存储在服务器上,并让应用程序每次都从那里请求它。如果被盗,则撤销OAuth密钥。 (这也可以防止窃贼从服务器检索解密密钥。)
    4. 您是否看到此方法存在任何缺陷或看到可以改进策略的任何要点?我试图在可用性和安全性之间找到平衡,因为它似乎是对立的概念。

      注意:这是一般概念,不是专为一个操作系统设计的。

1 个答案:

答案 0 :(得分:3)

这是开放式的,非常一般,所以SO可能不是最好的地方。你真的认为你可以在3个要点中总结一下吗?如果不指定具体的指导方针,参数和实践,您甚至无法尝试承诺安全性。

  1. '使用SSL'本身并不意味着什么。滥用SSL有一百种方法:信任每个证书,使用弱密码,使用易受攻击的协议版本(SSLv2等),不检查撤销等等。
  2. 使用AES也不能保证:如果你使用ECB模式,你可能会受到攻击,或者在CBC模式下重复使用相同的IV,或者你的IV不是真正随机的(真实例子:TLS试图削减与此角落等角落等。
  3. 如果你在服务器上存储加密密钥,那只是另一个攻击媒介:你真的相信服务器(你如何确定它是你自己的?)来存储/管理密钥?
  4. 所以,是的,很多潜在的缺陷,答案很简单:它不是那么简单。