Autenticación con contraseña de un solo uso
# Autenticación con contraseña de un solo uso

Una contraseña de un solo uso u OTP (del inglés One-Time Password) es una contraseña que pierde su validez después de su uso, de ahí su denominación. Por lo general, se emplea como parte de una autenticación de doble factor. La OTP soluciona una serie de deficiencias que se asocian con una contraseña tradicional (estática). La deficiencia más importante que se aborda en las OTP es que, en contraste con contraseñas estáticas, no son vulnerables a ataques de replay. También hace al sistema más resistente frente ataques de fuerza bruta, ya que cada vez que cambia la contraseña, los intentos realizados anteriormente para romper la contraseña anterior son inútiles y hay que empezar de nuevo. Esto significa que un posible intruso que logre registrar una OTP que ya se utiliza para iniciar sesión en un servicio o realizar una transacción no será capaz de abusar de ella, puesto que ya no será válida. En el lado negativo, las OTPs son difíciles de utilizar en los seres humanos, debido a que un ser humano no puede memorizar todas. Por lo tanto, se requiere de una tecnología adicional para funcionar.

## Métodos de implementación

Hay distintos métodos para generar este tipo de sistemas:

* Utilizar algoritmos matemáticos para generar la contraseña. Algunos de estos algoritmos usan la contraseña anterior para hallar la siguiente. Por ejemplo el esquema de Lamport se basa en el uso de una función hash OWHF h reiteradamente partiendo de la clave inicial w teniendo la siguiente secuencia: w, h(w), h((h(w)), etc.
* Mediante una sincronización de tiempo entre el servidor autenticador y el cliente. En este sistema las claves son válidas durante un periodo de tiempo corto.
* Mediante el pre-establecimiento entre el usuario y el verificador de una secuencia de contraseñas de un solo uso.
* Una modificación del modelo anterior usa una tabla desafío-respuesta compartida por el usuario y el verificador de tal forma que el verificador hace una pregunta que permite seleccionar una determinada contraseña de dicha tabla. El usuario para ser autenticado debe responder con la contraseña 'seleccionada' por el servidor. Idealmente cada contraseña debe ser usada una sola vez. Este tipo de tablas son muy usadas para la autenticación en la web de algunos bancos (tarjetas de coordenadas)
* Utilizar métodos criptográficos para intercambiarse la nueva clave: En estos sistemas inicialmente sólo hay una clave secreta compartida. Durante la autenticación con esa clave el usuario crea y transmite al verificador la nueva clave cifrada bajo una clave derivada de la clave anterior.
