我已经继承了一个移动应用程序,它在明文中发送授权凭证(用户标识/密码)。正在寻找一种安全的方式来通过移动应用程序进行身份验证
我想象我有2个选择: a)使用TLS。 b)编写我自己的认证协议。
如果我选择(b)为确保安全,我必须遵循哪些关键指导原则。 例如如何避免重播攻击,加密策略。
我已经继承了一个移动应用程序,它在明文中发送授权凭证(用户标识/密码)。正在寻找一种安全的方式来通过移动应用程序进行身份验证
我想象我有2个选择: a)使用TLS。 b)编写我自己的认证协议。
如果我选择(b)为确保安全,我必须遵循哪些关键指导原则。 例如如何避免重播攻击,加密策略。
对于这两个“你不能得到起诉为”和“合理保护”“安全”的定义为移动应用程序,你可以假设该行是安全的VS人在这方面的中级攻击和广泛的窃听。 SSL/TLS听起来是最简单的方法,但这可能取决于您的运营商和目标手机。
如果你不能让TLS的工作,你需要推出自己的,使用Diffie-Hellman密钥交换和建立密码库(Legion of the Bouncy Castle有jightweight实现,它是J2ME标准。)
如果您使用b),关键指导原则是:不要。如果你想要它是安全的,那就是。
尽量坚持a)。
我还没有看过新手机,但之前安装的SSL证书有问题。 – 2008-10-13 07:04:06
对于(b)我想你做了一个挑战性的回应。
服务器生成一个随机字符串,并将其发送给客户端。客户端将其附加到密码并散列整个事情,将散列发送回服务器。服务器执行相同的计算,将结果与从客户端获得的结果进行比较。如果它们匹配,则客户端发送正确的密码。
最明显的漏洞是,如果有人窥探交换双方,他们可以对密码运行离线字典攻击。
编写自己的安全协议是没有必要,也是一个坏主意。它几乎肯定会有可利用的缺陷。如果您只需要保护登录凭据的机密性,那么您应该使用SSL/TLS。它还使您可以在将来更轻松地升级到基于客户端证书的身份验证。
是的我的手机应用程序是J2ME。是的,我之前遇到过SSL问题。谢谢。 – 2008-10-13 08:56:48