TOTP:更改每个会话的秘密
我有这样的要求,关于更改每个会话的用户密码以生成OTP。我们决定使用TOTP作为我们的算法。我们将短信中的OTP发送给用户进行授权验证(无需在客户端生成OTP)。TOTP:更改每个会话的秘密
TOTP = HOTP(WhereSessionCalculate(SecretKey), TC)
那么,是不是很好的做法来改变用户会话的秘密。如果不是,那么可能会出现什么后果。请解释并让我知道是否需要更多信息。
两个因素的基本前提(或多方因素,更准确)认证是补充正常的用户名/密码组合 - 这些都是你们知道的事情 - 用不同类型的一个或多个其他因素。最常用的是你拥有的东西(例如你的手机,带有谷歌身份验证器应用程序或RSA,金雅拓等令牌)或关于你是什么(生物识别数据,如虹膜,指纹等)
有人可以学习(如果密码很短,很容易),甚至可以从不安全的网络连接中嗅探它(希望你使用AES256的SSL或某些加密技术来将会话加密到你的应用程序!),但是添加2FA停止这一点。
因此,让我回去给你的问题,是否你的方法是增生的验证用户的安全性。一旦用户的OTP密钥被设置并存储在数据库中的用户记录中,并且该密钥用于为TOTP生成器播种,那么用户将使用新的密钥重新播种什么?是的,生成一个OTP代码并通过短信发送验证登录的人在那个时刻有他们的电话,但如果使用Google Authenticator,也是如此;此外,我背叛了我的苹果fanboi偏见(!)传入的短信显示在我的iPhone的锁定屏幕上,因此也会显示您的OTP,而要访问Google身份验证器应用程序,我必须使用我的PIN解锁我的手机。
另外请记住,大多数系统在网络或系统级别被盗用,并且整个数据库的用户名和密码被窃取被破解 - 损害单个用户的访问通常不值得麻烦,除非你有很高的吸引国家参与者的重视!
已经探讨了我自己的应用程序的问题我已经用户名和密码初始登录(最小长度为20个字符困扰彩虹表,但没有复杂性或频繁更改的规定),最大尝试次数锁定失败登录的时间越来越长,以及使用Google Authenticator进行二级登录(因为它是免费的,可在iOS,Android和BB10上运行,而且使用起来非常简单)。为了改善这一点,我会考虑生物识别技术,但我的应用程序是商业而非军事等,所以我对我的风险评估已经足够了。
我希望帮助你找出最好的方法为您的应用。
感谢您的分享体验。我们通过替换简单的用户名和密码认证以及使用硬件令牌来完成用户登录过程来解决客户端问题而对于第二因素认证,我们使用Google Authenticator。再次感谢您的建议。 – Shashank 2014-09-19 05:50:09