HMAC-based One-time Password Algorithm
HOTP is an HMAC-based one-time password (OTP) algorithm. It is a cornerstone of Initiative For Open Authentication (OATH).
HOTP was published as an informational IETF RFC 4226 in December 2005, documenting the algorithm along with a Java implementation. Since then, the algorithm has been adopted by many companies worldwide (see below). The HOTP algorithm is a freely available open standard.
Definition
Let:
- K be a secret key
- C be a counter
- HMAC(K,C) = SHA1(K ⊕ 0x5c5c… ∥ SHA1(K ⊕ 0x3636… ∥ C)) with ⊕ as XOR, ∥ as concatenation, for more details see HMAC (C is the message)
- Truncate be a function that selects 4 bytes from the result of the HMAC in a defined manner
Then HOTP(K,C) is mathematically defined by
- HOTP(K,C) = Truncate(HMAC(K,C)) & 0x7FFFFFFF
The mask 0x7FFFFFFF sets the result's most significant bit to zero. This avoids problems if the result is interpreted as a signed number as some processors do.[1]
For HOTP to be useful for an individual to input to a system, the result must be converted into a HOTP value, a 6–8 digits number that is implementation dependent.
- HOTP-Value = HOTP(K,C) mod 10d, where d is the desired number of digits
—
Applications
HOTP can be used to authenticate a user in a system via an authentication server. Also, if some more steps are carried out (the server calculates subsequent OTP value and sends/displays it to the user who checks it against subsequent OTP value calculated by his token), the user can also authenticate the validation server.
Tokens
Both hardware and software tokens are available from various vendors, for some of them see references below. Hardware tokens implementing OATH HOTP tend to be significantly cheaper than their competitors based on proprietary algorithms.[2] As of 2010, OATH HOTP hardware tokens can be purchased for a marginal price.[3] Some products can be used for strong passwords as well as OATH HOTP.[4]
Software tokens are available for (nearly) all major mobile/smartphone platforms (J2ME,[5] Android,[6][7] iPhone,[8] BlackBerry,[9] Maemo,[10] Mac OS X,[11] Windows Mobile[9]).
Reception
Although the reception from some of the computer press has been negative during 2004 and 2005,[12][13][14] after IETF adopted HOTP as RFC 4226 in December 2005, various vendors started to produce HOTP compatible tokens and/or whole authentication solutions (see above/below).
According to a paper on strong authentication (entitled "Road Map: Replacing Passwords with OTP Authentication") published by Burton Group (a division of Gartner, Inc.) in 2010, "Gartner's expectation is that the hardware OTP form factor will continue to enjoy modest growth while smartphone OTPs will grow and become the default hardware platform over time."[2]
Implementations
- Authy is an Android/iOS app for 2 factor authentication using TOTP.
- Barada Android app for the client side and PAM module for the server side.
- Duo Push is an HOTP based Android/iOS app for 2 factor authentication which utilizes Out-of-band Push technology.
- Google Authenticator open-source client for Android, iOS, and BlackBerry, and also PAM module for the server side.
- LinOTP is an opensource server implementation for HOTP and other tokens.
- multiOTP is an opensource PHP implementation for HOTP, TOTP, mOTP and other tokens. It can be used as a command line tool, integrated in a web site, as a web service, as a radius plugin, etc.
- Oathgen BSD licensed command line HOTP and TOTP client for Windows, Linux, BSD and Macintosh operating systems.
- OATH Toolkit nonGNU library and command line implementation of client for Linux systems, and also PAM module for the server side.
- OpenAM is an open source Java based Single Sign On server that supports various HOTP and TOTP client authenticators.
- privacyIDEA is an authentication backend that supports HOTP, TOTP, OCRA, TiQR, mOTP and other token types like ssh public keys.
- SailOTP, a free software Sailfish OS client.
- SMS2 is a free Windows service supporting HOTP and TOTP client authenticators.
- YubiKey implements both HOTP as well as the OpenPGP card protocol. The hardware devices appear as USB keyboards and "type" the one-time password when their button is pressed.
- Authenticator is an extension for both HOTP and TOTP for Google Chrome and Chrome OS.
- FreeOTP is a free software app that implements HOTP and TOTP for Android and iOS.
- Nitrokey has various USB token models capable of HOTP, TOTP, as well as the OpenPGP card protocol. Further Nitrokey's firmware and hardware are available as open source.
- SmartSign is an access control system that supports HOTP and TOTP tokens and provides complete token lifecycle management.
See also
References
- ↑ https://tools.ietf.org/html/rfc4226#section-5.3
- 1 2 Diodati, Mark (2010). "Road Map: Replacing Passwords with OTP Authentication". Burton Group.
Gartner's expectation is that the hardware OTP form factor will continue to enjoy modest growth while smartphone OTPs will grow and become the default hardware platform over time. ... If the organization does not need the extensive platform support, then OATH-based technology is likely a more cost-effective choice.
- ↑ "Security Authentication Tokens - Entrust". Entrust. 2011.
Priced at $5 per token, the Entrust IdentityGuard Mini Token demonstrates that secure, reliable hardware authentication can be had at an attractive price. ... OATH and DES/3DES algorithm support
- ↑ "Password sCrib Tokens - Smart Crib". Smart Crib. 2013.
You can get a token typing 4 updatable passwords and 8 digit OATH HOTP codes for the price of £35, no strings attached.
- ↑ "DS3 Launches OathToken Midlet Application". Data Security Systems Solutions. 2006-02-24.
Singapore, Friday, 24 February 2006 - Data Security Systems Solutions is pleased to announce the launch of OathToken Midlet application, an extension of DS3 flagship product - Authentication Server.
- ↑ "Android Token". diamondz... AT googlemail.com (not a full address, no better info on author could be found). 2009.
Android Token is a project to create OATH software tokens for the Android platform. Turning a mobile phone into a One Time Password (OTP) generation device which can be used in the place of hardware tokens. ... The project supports both HOTP (Event Tokens) and TOTP (Time Tokens) specifications. ... Code license: GNU GPL v3
- ↑ "StrongAuth". StrongAuth. 2010.
Time-based one-time passcode generator based on HOTP (RFC 4226).
- ↑ Cobbs, Archie L. (2010). "OATH Token". Archie L. Cobbs.
OATH Token is a free and open-source software token for two-factor authentication on the iPhone. OATH Token implements the RFC 4226 HOTP/OATH algorithm standard and is not tied to any proprietary server software.
- 1 2 "ActivIdentity Soft Tokens". ActivIdentity. 2010.
All ActivIdentity Soft Tokens support the Initiative For Open Authentication (OATH) HMAC-Based One-Time Password (HOTP) algorithm. ... ActivIdentity Mobile Soft Tokens are available on leading handset operating systems, including BlackBerry®, Apple® iPhone®, Windows Mobile, and many other Java 2 Platform, Micro Edition (J2ME) enabled devices.
- ↑ Whitbeck, Sean (2011). "OTP Generator for N900". Sean Whitbeck.
OTP Generator for Maemo on the Nokia N900. Supports OATH tokens (HOTP,TOTP) as well as the Mobile-OTP algorithm.
- ↑ "SecuriToken". Feel Good Software. 2011.
SecuriToken is an RFC compliant application to create and manage multiple software tokens for the OS X platform. Turning your Mac into a One Time Password (OTP) generation device which can be used in the place of hardware tokens.
- ↑ Kearns, Dave (2004-12-06). "Digging deeper into OATH doesn't look so good". Network World.
It may be that OATH will amount to something someday, but so far, it appears to be a stalking horse for VeriSign and that's not a bandwagon we should thoughtlessly jump on.
- ↑ Willoughby, Mark (2005-03-21). "No agreement on Oath authentication". Computerworld.
- ↑ Kaliski, Burt (2005-05-19). "Algorithm agility and OATH". Computerworld.
Nevertheless, there is still good reason to question whether HOTP is suitable as a standard algorithm for OTP generation, and, more generally, whether such a standard algorithm is even necessary at all.
External links
- RFC4226: HOTP: An HMAC-Based One-Time Password Algorithm
- RFC 6287: OCRA: An HMAC-Based OATH Challenge-Response Algorithm)
- Initiative For Open Authentication