Time-based one-time password
Time-based one-time password is a computer algorithm that generates a one-time password using the current time as a source of uniqueness. As an extension of the HMAC-based one-time password algorithm, it has been adopted as Internet Engineering Task Force standard.
TOTP is a cornerstone of the Initiative for Open Authentication and is used in a number of two-factor authentication systems.
History
Through the collaboration of several OATH members, a TOTP draft was developed in order to create an industry-backed standard. It complements the event-based one-time standard HOTP, and it offers end user organizations and enterprises more choice in selecting technologies that best fit their application requirements and security guidelines. In 2008, OATH submitted a draft version of the specification to the IETF. This version incorporates all the feedback and commentary that the authors received from the technical community based on the prior versions submitted to the IETF. In May 2011, TOTP officially became RFC 6238.Algorithm
To establish TOTP authentication, the authenticatee and authenticator must pre-establish both the HOTP parameters and the following TOTP parameters:- T, the Unix time from which to start counting time steps,
- T, an interval which will be used to calculate the value of the counter C.
TOTP uses the HOTP algorithm, replacing the counter with a non-decreasing value based on the current time:
TOTP value = HOTP value,
calculating counter valuewhere
- C is the count of the number of durations T between T and T,
- T is the current time in seconds since a particular epoch,
- T is the epoch as specified in seconds since the Unix epoch,
- T is the length of one-time duration.
Security
TOTP credentials are also based on a shared secret known to both the client and the server, creating multiple locations from which a secret can be stolen. An attacker with access to this shared secret could generate new, valid TOTP codes at will. This can be a particular problem if the attacker breaches a large authentication database.