搜索从移动应用程序进行身份验证的安全方法

时间:2008-10-13 06:30:02

标签: java security mobile

我继承了一个移动应用程序,它以明文形式发送身份验证凭据(用户ID /密码)。

我想我有两个选择: a)使用TLS。 b)编写我自己的auth协议。

如果我选择(b)我必须遵循哪些关键指导方针才能使其安全。 例如如何避免重放攻击,加密策略。

4 个答案:

答案 0 :(得分:3)

如果您使用b),关键指导原则是:不要。如果你想要它是安全的,那就是。

尝试坚持a)。

答案 1 :(得分:1)

编写自己的安全协议不是必需的,也是一个坏主意。它几乎肯定会有可利用的缺陷。如果您只需要保护登录凭据的机密性,那么您应该使用SSL / TLS。它还允许您以后更轻松地升级到基于客户端证书的身份验证。

答案 2 :(得分:0)

对于(b)我猜你做了一个挑战 - 回应的事情。

服务器生成随机字符串,将其发送到客户端。客户端将其附加到密码并散列整个内容,将散列发送回服务器。服务器执行相同的计算,将结果与客户端的结果进行比较。如果匹配则客户端发送了正确的密码。

最明显的漏洞是,如果有人窥探交换双方,他们就可以对密码进行离线词典攻击。

答案 3 :(得分:-1)

对于“你不能被起诉”“合理保护”“安全”的定义,对于移动应用程序,你可以假设对于中间人攻击而言,线路是安全的,并且可以广泛地进行窃听。 SSL / TLS听起来是最简单的方法,但这可能取决于您的运营商和目标手机。

如果你不能使TLS工作而你需要自己动手,请使用Diffie-Hellman密钥交换和已建立的加密库(Legion of the Bouncy Castle有一个符合J2ME标准的jightweight实现。)