Para una breve descripción, consulte Wikipedia . Básicamente, se trata de un sistema contraseña de un solo uso : el usuario no tiene una sola contraseña, sino una larga cadena de contraseñas, cada contraseña se puede utilizar una sola vez. El punto es que si un registrador de claves toma una contraseña usada, entonces el atacante no gana nada porque una vez que se ha utilizado una contraseña, ya no otorga más acceso.
El sistema es bastante ingenioso: hay un secreto inicial ( W ) que no se almacena en ninguna parte. Desde W se produce una cadena de contraseñas, con una función de hash h : h (W) , luego h (h (W )) , luego h (h (h (W))) , y así sucesivamente. Las contraseñas se usan en orden inverso y, en cualquier momento, el servidor almacena la última contraseña utilizada y otorga acceso si el usuario presenta una contraseña que, cuando está en hash, produce la contraseña almacenada actualmente.
En el lado del usuario, esto requiere que la lista de contraseñas esté impresa en papel, o que el usuario posea algún tipo de dispositivo que contenga la lista de contraseñas o que pueda regenerarla a pedido (el dispositivo almacenaría W ).
Todas estas contraseñas no son realmente "contraseñas" porque el usuario humano no elige sus contenidos y no los recuerda. Son "teclas" que el usuario escribe con los dedos en un teclado. A los usuarios humanos rara vez les gusta el uso de contraseñas de un solo uso.
Un problema genérico con contraseñas de un solo uso es que tienden a no funcionar con sistemas que realizan el cifrado basado en contraseña de otros elementos de datos (típico de los sistemas Windows).