OTP认证因素#
功能介绍#
基于时间的一次性密码算法(英语:Time-based One-Time Password,简称:TOTP)是一种根据预共享的密钥与当前时间计算一次性密码的算法。它已被互联网工程任务组接纳为RFC 6238标准[1],成为主动开放认证(OATH)的基石,并被用于众多多重要素验证系统当中。
TOTP是散列消息认证码(HMAC)当中的一个例子。它结合一个私钥与当前时间戳,使用一个密码散列函数来生成一次性密码。由于网络延迟与时钟不同步可能导致密码接收者不得不尝试多次遇到正确的时间来进行身份验证,时间戳通常以30秒为间隔,从而避免反复尝试。
在特定的多重因素验证应用中,用户验证步骤如下:一位用户在网站或其他服务器上输入用户名和密码,使用运行在本地的智能手机或其他设备中的TOTP生成一个一次性密码提交给服务器,并同时向服务器输入该一次性密码。服务器随即运行TOTP并验证输入的一次性密码。为此,用户设备与服务器中的时钟必须大致同步(服务器一般会接受客户端时间-1区间(也就是延迟了30秒)的时间戳生成的一次性密码)。在此之前,服务器与用户的设备必须通过一个安全的信道共享一个密钥,用于此后所有的身份验证会话。如需要执行更多步骤,用户也可以用TOTP验证服务器。