La contraseña de un solo uso basada en HMAC ( HOTP ) es un algoritmo de contraseña de un solo uso (OTP) basado en HMAC . Es una piedra angular de la Iniciativa para la Autenticación Abierta (OATH).
HOTP se publicó como un IETF RFC 4226 informativo en diciembre de 2005, documentando el algoritmo junto con una implementación en Java. Desde entonces, muchas empresas de todo el mundo han adoptado el algoritmo (ver a continuación). El algoritmo HOTP es un estándar abierto de libre acceso .
El algoritmo HOTP proporciona un método de autenticación mediante la generación simétrica de contraseñas legibles por humanos, o valores , cada uno de los cuales se utiliza para un solo intento de autenticación. La propiedad de un solo uso deriva directamente del uso único de cada valor del contador.
Las partes que deseen utilizar HOTP deben establecer algunosParámetros ; normalmente, estos son especificados por el autenticador y aceptados o no por el autenticado:
Ambas partes calculan el valor HOTP derivado de la clave secreta K y el contador C. Luego, el autenticador verifica su valor generado localmente con el valor proporcionado por el autenticado.
El autenticador y el autenticado incrementan el contador C independientemente uno del otro, donde el último puede aumentar antes que el primero, por lo que es conveniente un protocolo de resincronización. RFC 4226 en realidad no requiere nada de eso, pero sí hace una recomendación. Esto simplemente hace que el autenticador intente repetidamente la verificación antes de su contador a través de una ventana de tamaño s . El contador del autenticador continúa por delante del valor en el que la verificación tiene éxito y no requiere ninguna acción por parte del autenticado.
Se recomienda que se realice una limitación constante de la verificación de valores HOTP para abordar su tamaño relativamente pequeño y, por lo tanto, su vulnerabilidad a ataques de fuerza bruta. Se sugiere que la verificación se bloquee después de una pequeña cantidad de intentos fallidos o que cada intento fallido genere un retraso adicional (que aumenta linealmente).
Los códigos de 6 dígitos son comúnmente proporcionados por tokens de hardware propietarios de varios proveedores que informan el valor predeterminado de d . El truncamiento extrae 31 bits o dígitos decimales, lo que significa que d puede ser como máximo 10, y el décimo dígito agrega menos variación y toma valores de 0, 1 y 2 (es decir, 0,3 dígitos).
Después de la verificación, el autenticador puede autenticarse simplemente generando el siguiente valor HOTP y devolviéndolo, y luego el autenticado puede generar su propio valor HOTP para verificarlo. Tenga en cuenta que se garantiza que los contadores estén sincronizados en este punto del proceso.
El valor HOTP es la salida de diseño legible para humanos, un número decimal de d dígitos (sin omitir los 0 iniciales):
Es decir, el valor son los dígitos de base 10 menos significativos de HOTP.
HOTP es un truncamiento del HMAC del contador C (bajo la clave K y la función hash H ):
donde el contador C debe usarse big-endian .
El truncamiento primero toma los 4 bits menos significativos del MAC y los utiliza como un desplazamiento de byte i :
donde : se utiliza para extraer bits desde un número de bit inicial hasta un número de bit final inclusive, donde estos números de bit son de origen 0. El uso de "19" en la fórmula anterior se relaciona con el tamaño de la salida de la función hash. Con el valor predeterminado de SHA-1, la salida es20 bytes , por lo que el último byte es el byte 19 (origen 0).
Ese índice i se utiliza para seleccionar 31 bits de MAC , comenzando en el bit i × 8 + 1:
31 bits son un bit menos que una palabra de 4 bytes. Por lo tanto, el valor se puede colocar dentro de una palabra de este tipo sin utilizar el bit de signo (el bit más significativo). Esto se hace para evitar definitivamente realizar aritmética modular con números negativos, ya que esto tiene muchas definiciones e implementaciones diferentes. [1]
Existen varios proveedores que ofrecen tokens de hardware y de software; para algunos de ellos, consulte las referencias a continuación. Los tokens de hardware que implementan OATH HOTP tienden a ser significativamente más económicos que sus competidores basados en algoritmos propietarios. [2] A partir de 2010, los tokens de hardware OATH HOTP se pueden comprar por un precio marginal. [3] Algunos productos se pueden utilizar para contraseñas seguras, así como para OATH HOTP. [4]
Los tokens de software están disponibles para (casi) todas las principales plataformas móviles/ teléfonos inteligentes ( J2ME , [5] Android , [6] iPhone , [7] BlackBerry , [8] Maemo , [9] macOS , [10] y Windows Mobile [8] ).
Aunque la recepción inicial de parte de algunos medios especializados en informática fue negativa durante 2004 y 2005, [11] [12] [13] después de que IETF adoptara HOTP como RFC 4226 en diciembre de 2005, varios proveedores comenzaron a producir tokens compatibles con HOTP y/o soluciones de autenticación completas.
Según el artículo "Road Map: Replacing Passwords with OTP Authentication" [2] sobre autenticación fuerte, publicado por Burton Group (una división de Gartner, Inc. ) en 2010, " la expectativa de Gartner es que el formato OTP de hardware continuará disfrutando de un crecimiento modesto mientras que los OTP de teléfonos inteligentes crecerán y se convertirán en la plataforma de hardware predeterminada con el tiempo".