La contraseña de un solo uso (HOTP) basada en HMAC es un algoritmo de contraseña de un solo uso (OTP) basado en códigos de autenticación de mensajes basados en hash (HMAC). Es una piedra angular de la Iniciativa de Autenticación Abierta (OATH).
HOTP se publicó como un IETF RFC 4226 informativo en diciembre de 2005, que documenta el algoritmo junto con una implementación de Java. Desde entonces, el algoritmo ha sido adoptado por muchas empresas en todo el mundo (ver más abajo). El algoritmo HOTP es un estándar abierto disponible gratuitamente .
Algoritmo
El algoritmo HOTP proporciona un método de autenticación mediante la generación simétrica de contraseñas o valores legibles por humanos , cada uno de los cuales se utiliza para un solo intento de autenticación. La propiedad única deriva directamente del uso único de cada valor de contador.
Las partes que tengan la intención de utilizar HOTP deben establecer parámetros ; normalmente, estos son especificados por el autenticador, y los autenticados los aceptan o no:
- Un método hash criptográfico , H (el predeterminado es SHA-1 )
- Una clave secreta , K , que es una cadena de bytes arbitraria y debe permanecer privada
- Un contador , C , que cuenta el número de iteraciones.
- Una longitud de valor HOTP, d (6–10, el valor predeterminado es 6 y se recomienda 6–8)
Ambas partes calcular el valor HOTP derivada 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 el uno del otro, donde el último puede aumentar por delante del primero, por lo que un protocolo de resincronización es prudente. RFC 4226 en realidad no lo requiere, 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 adelante del valor en el que la verificación tiene éxito y no requiere ninguna acción por parte del autenticado.
Se hace la recomendación de que se produzca una limitación persistente de la verificación del valor HOTP, para abordar su tamaño relativamente pequeño y, por lo tanto, la vulnerabilidad a los 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 atraiga un retraso adicional (que aumenta linealmente).
Los códigos de 6 dígitos son comúnmente proporcionados por tokens de hardware patentados de varios proveedores que informan el valor predeterminado de d . El truncamiento extrae 31 bits o≈ 9.3 dígitos decimales, lo que significa que, como máximo, d puede ser 10, y el décimo dígito proporciona menos variación adicional, tomando valores de 0, 1 y 2 (es decir, 0.3 dígitos).
Después de la verificación, el autenticador puede autenticarse a sí mismo simplemente generando el siguiente valor HOTP, devolviéndolo, y luego el autenticado puede generar su propio valor HOTP para verificarlo. Tenga en cuenta que se garantiza que los contadores se sincronizarán en este punto del proceso.
El valor HOTP es la salida de diseño legible por humanos, un número decimal de d dígitos (sin omitir los ceros iniciales):
- Valor HOTP = HOTP ( K , C ) mod 10 d
Es decir, el valor son los d dígitos de base 10 menos significativos de HOTP.
HOTP es un truncamiento del código de autenticación de mensajes basado en hash (HMAC) del contador, C (debajo de la clave, K , y la función hash, H).
- HOTP ( K , C ) = truncar (HMAC H ( K , C ))
El truncamiento primero toma los 4 bits menos significativos del MAC y los usa como un desplazamiento de bytes, i .
- truncar ( MAC ) = extraer31 ( MAC , MAC [(19 × 8) + 4: (19 × 8) + 7] × 8)
Ese índice i se usa para seleccionar 31 bits de MAC , comenzando en el bit i * 8 + 1 .
- extracto31 ( MAC , i ) = MAC [ i × 8 + 1: i × 8 + (4 × 8) - 1]
31 bits es un bit menos que una palabra de 4 bytes. Por lo tanto, el valor se puede colocar dentro de dicha palabra sin usar el bit de signo (el bit más significativo). Esto se hace para evitar definitivamente la aritmética modular en números negativos, ya que tiene muchas definiciones e implementaciones diferentes. [1]
Tokens
Los tokens de hardware y software están disponibles de varios proveedores; para algunos de ellos, consulte las referencias a continuación. Los tokens de hardware que implementan OATH HOTP tienden a ser significativamente más baratos 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 ] ).
Recepción
Aunque la recepción de parte de la prensa informática ha sido negativa durante 2004 y 2005, [11] [12] [13] después de que IETF adoptó HOTP como RFC 4226 en diciembre de 2005, varios proveedores comenzaron a producir tokens compatibles con HOTP y / o autenticación completa. soluciones.
Según un documento sobre autenticación fuerte (titulado "Hoja de ruta: reemplazo de contraseñas con autenticación OTP") publicado por Burton Group (una división de Gartner, Inc. ) en 2010, " la expectativa de Gartner es que el factor de forma OTP de hardware continúe para disfrutar de un crecimiento modesto, mientras que las OTP de teléfonos inteligentes crecerán y se convertirán en la plataforma de hardware predeterminada con el tiempo ". [2]
Ver también
Referencias
- ^ Frank, Hoornaert; David, Naccache; Mihir, Bellare; Ohad, Ranen. "HOTP: un algoritmo de contraseña de un solo uso basado en HMAC" . tools.ietf.org .
- ^ a b Diodati, Mark (2010). "Hoja de ruta: sustitución de contraseñas con autenticación OTP" . Grupo Burton .
- ^ "Tokens de autenticación de seguridad - Entrust" . Confiar . 2011.
- ^ "Tokens de contraseña sCrib - Smart Crib" . Cuna inteligente . 2013. Archivado desde el original el 20 de marzo de 2013 .
- ^ "DS3 lanza la aplicación OathToken Midlet" . Soluciones de sistemas de seguridad de datos . 2006-02-24. Archivado desde el original el 29 de diciembre de 2013.
- ^ "StrongAuth" . 2010. Archivado desde el original el 18 de mayo de 2010 .
- ^ Cobbs, Archie L. (2010). "Token OATH" . Archie L. Cobbs .
- ^ a b "Fichas de software de ActivIdentity" . ActivIdentity . 2010. Archivado desde el original el 17 de septiembre de 2010 .
- ^ Whitbeck, Sean (2011). "Generador OTP para N900" . Sean Whitbeck .
- ^ "SecuriToken" . Software para sentirse bien . 2011. Archivado desde el original el 25 de abril de 2012.
- ^ Kearns, Dave (6 de diciembre de 2004). "Profundizar en OATH no parece tan bueno" . Mundo de la red .
- ^ Willoughby, Mark (21 de marzo de 2005). "No hay acuerdo sobre la autenticación Oath" . Computerworld .
- ^ Kaliski, Burt (19 de mayo de 2005). "Algoritmo de agilidad y OATH" . Computerworld .
enlaces externos
- RFC4226: HOTP: un algoritmo de contraseña de un solo uso basado en HMAC
- RFC 6287: OCRA: un algoritmo de desafío-respuesta OATH basado en HMAC
- Iniciativa para la autenticación abierta
- Implementación de Python paso a paso en un Jupyter Notebook