Articulo de referencia

S/CLAVE

S/KEY es un sistema de contraseñas de un solo uso desarrollado para la autenticación en sistemas operativos tipo Unix , especialmente desde terminales tontas o computadoras públ...

S/KEY es un sistema de contraseñas de un solo uso desarrollado para la autenticación en sistemas operativos tipo Unix , especialmente desde terminales tontas o computadoras públicas no confiables en las que uno no desea escribir una contraseña de largo plazo. La contraseña real de un usuario se combina en un dispositivo fuera de línea con un conjunto corto de caracteres y un contador decreciente para formar una contraseña de un solo uso. Debido a que cada contraseña solo se usa una vez, son inútiles para los rastreadores de contraseñas .

Como el conjunto corto de caracteres no cambia hasta que el contador llega a cero, es posible preparar una lista de contraseñas de un solo uso, en orden, que el usuario puede llevar consigo. Alternativamente, el usuario puede presentar la contraseña, los caracteres y el valor del contador deseado a una calculadora local para generar la contraseña de un solo uso adecuada que luego puede transmitirse a través de la red sin cifrar. La última forma es más común y prácticamente equivale a una autenticación de desafío-respuesta .

S/KEY es compatible con Linux (mediante módulos de autenticación conectables ), OpenBSD , NetBSD y FreeBSD , y se puede utilizar una implementación genérica de código abierto para habilitar su uso en otros sistemas. OpenSSH también implementa S/KEY desde que se lanzó la versión OpenSSH 1.2.2 el 1 de diciembre de 1999. [1] Una implementación común se llama OPIE . S/KEY es una marca registrada de Telcordia Technologies , anteriormente conocida como Bell Communications Research (Bellcore).

S/KEY también se conoce a veces como el esquema de Lamport , en honor a su autor, Leslie Lamport . Fue desarrollado por Neil Haller, Phil Karn y John Walden en Bellcore a fines de la década de 1980. Con la expiración de las patentes básicas sobre criptografía de clave pública y el uso generalizado de computadoras portátiles que ejecutan SSH y otros protocolos criptográficos que pueden proteger una sesión completa, no solo la contraseña, S/KEY está cayendo en desuso. [ cita requerida ] Los esquemas que implementan autenticación de dos factores , en comparación, están creciendo en uso. [2]

Generación de contraseña

El servidor es el ordenador que realizará la autenticación.

Generación de contraseñas S/KEY
  1. Este paso comienza con una clave secreta W. Esta clave secreta puede ser proporcionada por el usuario o puede ser generada por una computadora. De cualquier manera, si se divulga esta clave secreta, la seguridad de S/KEY se ve comprometida.
  2. Se aplica una función hash criptográfica H n veces a W , lo que produce una cadena hash de n contraseñas de un solo uso. Las contraseñas son el resultado de la aplicación de la función hash criptográfica:
    Alto ( Ancho ), Alto ( Alto ( Ancho )), ..., Alto ( Ancho ) .
  3. El secreto inicial W se descarta.
  4. Al usuario se le proporcionan las n contraseñas, impresas en orden inverso:
    H n ( W ), H n −1 ( W ), ..., H ( H ( W )), H ( W ).
  5. Las contraseñas H ( W ), H ( H ( W )), ..., H n −1 ( W ) se descartan del servidor. Solo la contraseña H n ( W ), que se encuentra en la parte superior de la lista de usuarios, se almacena en el servidor.

Autenticación

Autenticación S/KEY

Después de generar la contraseña, el usuario tiene una hoja de papel con n contraseñas. Si n es muy grande, almacenar todas las n contraseñas o calcular la contraseña dada a partir de H ( W ) se vuelve ineficiente. Existen métodos para calcular eficientemente las contraseñas en el orden requerido, utilizando solo cálculos de hash por paso y almacenando las contraseñas. [3] registro norte 2 {\displaystyle \left\lceil {\frac {\log n}{2}}\right\rceil } registro norte {\displaystyle \lceil \log n\rceil }

Lo más ideal, aunque quizás menos común en la práctica, es que el usuario lleve consigo un dispositivo informático pequeño, portátil, seguro y sin red, capaz de regenerar cualquier contraseña necesaria dada la frase de contraseña secreta, la sal y la cantidad de iteraciones del hash requerido, siendo los dos últimos proporcionados convenientemente por el servidor que solicita la autenticación para iniciar sesión.

En cualquier caso, la primera contraseña será la misma que tenga almacenada el servidor. Esta primera contraseña no se utilizará para la autenticación (el usuario deberá rayarla en la hoja de papel), sino que se utilizará la segunda:

  • El usuario proporciona al servidor la segunda contraseña pwdde la lista y borra esa contraseña.
  • El servidor intenta calcular H ( pwd ), donde pwd es la contraseña suministrada. Si H ( pwd ) produce la contraseña que el servidor ha almacenado, la autenticación es exitosa. El servidor almacenará entonces pwd como la referencia actual.

Para autenticaciones posteriores, el usuario proporcionará i . (La última contraseña en la lista impresa, contraseña n , es la primera contraseña generada por el servidor, H ( W ), donde W es el secreto inicial). El servidor calculará H ( contraseña i ) y comparará el resultado con la contraseña i −1 , que está almacenada como referencia en el servidor. password

Seguridad

La seguridad de S/KEY se basa en la dificultad de invertir las funciones hash criptográficas . Supongamos que un atacante consigue hacerse con una contraseña que se ha utilizado para una autenticación exitosa. Suponiendo que se trata de la contraseña i , esta contraseña ya es inútil para las autenticaciones posteriores, porque cada contraseña sólo se puede utilizar una vez. Sería interesante para el atacante averiguar la contraseña i −1 , porque esta contraseña es la que se utilizará para la próxima autenticación.

Sin embargo, esto requeriría invertir la función hash que produjo la contraseña i −1 utilizando la contraseña i ( H ( contraseña i −1 ) = contraseña i ), lo cual es extremadamente difícil de hacer con las funciones hash criptográficas actuales .

Sin embargo, S/KEY es vulnerable a un ataque de intermediario si se utiliza por sí solo. También es vulnerable a ciertas condiciones de carrera , como cuando el software de un atacante rastrea la red para aprender los primeros N − 1 caracteres de la contraseña (donde N es igual a la longitud de la contraseña), establece su propia sesión TCP con el servidor y, en rápida sucesión, prueba todos los caracteres válidos en la posición N hasta que uno lo logra. Este tipo de vulnerabilidades se pueden evitar utilizando ssh , SSL , SPKM u otra capa de transporte cifrada.

Dado que cada iteración de S/KEY no incluye la sal ni el recuento, es posible encontrar colisiones directamente sin romper la contraseña inicial. Esto tiene una complejidad de 2 64 , que se puede calcular previamente con la misma cantidad de espacio. La complejidad del espacio se puede optimizar almacenando cadenas de valores, aunque las colisiones pueden reducir la cobertura de este método, especialmente para cadenas largas. [4]

Alguien con acceso a una base de datos S/KEY puede descifrarlas todas en paralelo con una complejidad de 2 64 . Si bien no obtendría la contraseña original, podría encontrar credenciales válidas para cada usuario. En este sentido, es similar a almacenar hashes de 64 bits sin sal de contraseñas seguras y únicas.

El protocolo S/KEY puede generar bucles. Si se creara un bucle de este tipo en la cadena S/KEY, un atacante podría usar la clave del usuario sin encontrar el valor original y posiblemente sin avisar al usuario válido. El caso patológico de esto sería un OTP que se codifica a sí mismo.

Usabilidad

Internamente, S/KEY utiliza números de 64 bits . Para facilitar su uso , cada número se asigna a seis palabras cortas, de uno a cuatro caracteres cada una, de un diccionario de 2048 palabras de acceso público. Por ejemplo, un número de 64 bits se asigna a "ROY HURT SKI FAIL GRIM KNEE". [5]

Véase también

Referencias

  1. ^ "Historial del proyecto OpenSSH". OpenSSH . Consultado el 5 de diciembre de 2019 .
  2. ^ "Mercado global de autenticación multifactor 2017-2021" . TechNavio. Agosto de 2017. Consultado el 5 de diciembre de 2019 .
  3. ^ D. Yum, J. Seo, S. Eom y P. Lee, “Recorrido de cadena hash fractal de una sola capa con complejidad casi óptima”, Topics in Cryptology–CT-RSA 2009, págs. 325–339, 2009. [1]
  4. ^ Samuel, Michael (1 de julio de 2011). "Ataque de mazmorra con clave S" . Consultado el 5 de diciembre de 2019 .
  5. ^ Haller, Neil; Metz, Craig; Nesser II, Philip J.; Straw, Mike (1998). "Apéndice D: Diccionario para la conversión entre formatos binarios y de 6 palabras". Un sistema de contraseñas de un solo uso . IETF . doi : 10.17487/RFC2289 .
  • El sistema de contraseñas de un solo uso S/KEY (RFC 1760)
  • Un sistema de contraseñas de un solo uso (RFC 2289)
  • jsotp: Calculadora de OTP y S/Key de JavaScript
  • Introducción al sistema
Obtenido de "https://es.wikipedia.org/w/index.php?title=S/CLAVE&oldid=1261924856"