我遇到了mobile,这是“强大移动身份验证的事实上的标准”(http://motp.sourceforge.net)。开发人员声称它非常安全,等等。
通过阅读实现,我注意到该方案要求用户的PIN以可逆的形式存储在服务器端。( sourceforge实现将它们存储为纯文本),我认为这不是一个非常理想的特性。
发布于 2012-02-29 11:46:50
我第一次听说这个,但这并不意味着它不为人所知。
听起来有点像誓言HOTP / TOTP。誓言是建立在RFC 4226的基础上的,至少乍一看似乎更加有力。例如,它使用HMAC而不是简单的散列(motp使用MD5)。“誓言”也被尤比基和最近的谷歌认证器等产品采用。
基于这些非常肤浅的事实,我个人更倾向于宣誓而不是这个看似定制的解决方案。需要进行更深入的分析,才能真正阐明这些计划的利弊。
我希望这能回答你的前两个问题。
至于选择它的原因-一次密码(OTP)不仅可以保护通信线路上的窃听。因此,虽然SSL将确保密码(或一次性密码)安全传输,但OTP确保即使密码丢失/被盗,也不能重复使用。每一节课都是独一无二的。所以,即使有人在你输入密码时回头看你,因为这是一个一次性密码,他们不能再使用它了。
OTP方案还有其他一些优点,在这种情况下,它充当了第二个因素的身份验证。不仅是你知道的,还有你所拥有的。在那些基于移动的OTP方案中,它通常是存储在手机上并用于生成密码的一些秘密密钥。因此,攻击者不仅需要您的密码,还需要您的电话(或您的手机上的密钥),以验证您的身份。
大多数身份验证方案都是SSL的补充,不会替换它。即使身份验证过程是安全的,通常也会交换其他数据,或者建立某种会话。例如,考虑登录到您的银行帐户,然后查看交易或转移资金。仅仅保护身份验证(例如通过OTP)是不够的。仅保护连接(使用SSL而不进行身份验证)也是如此。为了更好地保护它,通常需要将SSL与某种形式的用户身份验证结合起来。
关于以可逆形式存储PIN/key的问题,而不是使用安全散列。我想说,考虑到你所获得的利益,这可能是一个可以接受的权衡。OTP为您提供了很好的保护,防止静态密码可能被泄露(包括钓鱼,过肩,人们写下他们的密码,社交工程等)。即使一个OTP密码被泄露,它也限制了它的用途--它通常只能在有限的时间范围内使用一次。缺点是您必须确保您的身份验证服务器(以及某种程度上的用户设备)受到很好的保护。如果您的服务器是您的弱点,那么,我不确定单独的安全散列是否足以保护您。另外,将其与SSL和标准(散列)密码相结合,可以进一步加强您的保护。
发布于 2012-03-01 03:51:03
该方案具有一定的安全性限制。一次密码对中间人攻击是不安全的,除非有其他防止中间人攻击的外部机制。使用起来也有点不方便。
根据上下文的不同,可能有更好的身份验证方法。例如,如果您要构建一个应用程序,在许多设置中,最好使用SSL与客户端证书(如果您愿意的话,也可以需要一个PIN或密码)。
使用一次性密码很可能比不使用更好。这可能会阻止一些威胁。
底线:这完全取决于你计划用它做什么。根据应用程序域的不同,它可能是一个有用的工具,也可能是次优的。如果您需要更具体的建议,我建议描述需要身份验证的特定应用程序上下文,并可能解释您心目中的风险级别/威胁模型。
发布于 2012-03-01 19:21:55
MOTP是一种身份验证协议。预期的使用场景是希望与服务器进行身份验证的某种移动设备的用户;该设备生成的身份验证代码仅在有限的时间(几分钟)内有效。身份验证基于客户端和服务器端之间的共享秘密。
在客户端,这个秘密被分成两部分:一个64位的秘密保存在设备内部(你拥有什么),另一个是用户每次必须输入的4位PIN (你知道的)。通过这种方式,MOTP提供了双因素身份验证。设备不知道PIN,它每次都会从提供的PIN中盲目地计算身份验证值。
典型的MOTP设备具有能够显示6位数字的键盘和屏幕、性能要求非常低的处理器(必须能够在眨眼之间计算20字节的MD5 )、时钟,可能还有一些防篡改功能来保护秘密。有单一用途的MOTP设备以及在移动电话上的实现。在单用途设备上,该设备显示一个6位身份验证代码,有效期为几分钟(3分钟减去计算客户端身份验证代码到服务器上验证所需的时间,加上或减去时钟漂移的后果)。在移动电话上,身份验证代码可以由客户端应用程序显示或直接使用。
MOTP的优点是非常简单。在服务器端和客户端,各种语言和各种平台上都有很多现有的实现。据我所知,MOTP来自这个行业,几乎没有看到任何独立的审查。
PIN是客户端和服务器之间共享秘密的一部分。服务器需要执行与客户端相同的计算,因此需要PIN。您可以制作一个MOTP的变体,它在某种增强功能下使用一些PIN的图像,而不是PIN本身,但是没有好处,因为搜索空间上仅有10位的散列对于蛮力来说是微不足道的,即使您必须分别处理每个不同的盐度帐户。服务器不存储密码,因为这些密码应该有足够的熵,使得蛮力散列难以逆转,这不适用于4位数字的PIN。
MOTP不能与SSL相媲美;您可以将两者结合使用。这两种方法可以互补使用。SSL由三部分组成:它在双方之间建立一个安全通道,将服务器身份验证到客户端,并可选择地将客户端身份验证到服务器。第三部分经常被忽略,因为大多数客户端没有身份验证数据,这导致许多软件使用SSL不支持客户端身份验证。MOTP可以是在SSL连接上对客户端进行身份验证的一种方法。与SSL客户端证书不同,SSL客户端证书通常对设备或设备组合以及存储在其中的数据进行身份验证,MOTP的目的是对用户进行身份验证;身份验证步骤需要输入PIN (通常不缓存)。
https://security.stackexchange.com/questions/12279
复制相似问题