stringtranslate.com

Contraseña de un solo uso basada en HMAC

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 .

Algoritmo

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):

Valor HOTP = HOTP ( K , C ) mod 10 d .

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 ):

HOTP ( K , C ) = truncar(HMAC H ( K , C )),

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 :

truncar( MAC ) = extraer31( MAC , MAC [(19 × 8 + 4):(19 × 8 + 7)]),

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:

extract31( MAC , i ) = MAC [( i × 8 + 1 ):( i × 8 + 4 × 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]

Fichas

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] ).

Recepción

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".

Véase también

Referencias

  1. ^ Frank, Hoornaert; David, Naccache; Mihir, Bellaré; Ohad, Ranen (diciembre de 2005). "HOTP: un algoritmo de contraseña de un solo uso basado en HMAC". herramientas.ietf.org . doi :10.17487/RFC4226.
  2. ^ ab Diodati, Mark (2010). "Hoja de ruta: sustitución de contraseñas por autenticación OTP". Burton Group . Archivado desde el original el 21 de julio de 2011. Consultado el 10 de febrero de 2011 .
  3. ^ "Tokens de autenticación de seguridad: Entrust". Entrust . 2011. Archivado desde el original el 2013-04-05 . Consultado el 2010-03-05 .
  4. ^ "Tokens de contraseñas de sCrib: Smart Crib". Smart Crib . 2013. Archivado desde el original el 20 de marzo de 2013.
  5. ^ "DS3 lanza la aplicación OathToken Midlet". Soluciones para sistemas de seguridad de datos . 24 de febrero de 2006. Archivado desde el original el 29 de diciembre de 2013.
  6. ^ "StrongAuth". 2010. Archivado desde el original el 18 de mayo de 2010.
  7. ^ Cobbs, Archie L. (2010). "Ficha OATH". Archie L. Cobbs .
  8. ^ ab "ActivIdentity Soft Tokens". ActivIdentity . 2010. Archivado desde el original el 17 de septiembre de 2010.
  9. ^ Whitbeck, Sean (2011). "Generador OTP para N900". Sean Whitbeck .
  10. ^ "SecuriToken". Feel Good Software . 2011. Archivado desde el original el 25 de abril de 2012.
  11. ^ Kearns, Dave (6 de diciembre de 2004). "Profundizar en OATH no tiene muy buena pinta". Network World .
  12. ^ Willoughby, Mark (21 de marzo de 2005). «No hay acuerdo sobre la autenticación Oath». Computerworld . Archivado desde el original el 11 de octubre de 2012. Consultado el 7 de octubre de 2010 .
  13. ^ Kaliski, Burt (19 de mayo de 2005). "Agilidad de algoritmos y OATH". Computerworld . Archivado desde el original el 11 de octubre de 2012. Consultado el 7 de octubre de 2010 .

Enlaces externos