¿Cómo funcionan las claves RSA SecureID ®?

18

He estado usando las claves RSA SecureID ® desde hace bastante tiempo (quizás 10 años), para cosas como la cuenta bancaria de mi hogar en línea o el acceso a la red de computadoras de mi empresa desde casa. Estas claves generan un token numérico de 6 dígitos que está configurado para caducar. Sin embargo, siempre me he preguntado cómo funcionan estas.

En el lado derecho hay un punto (que no se muestra en la imagen) que parpadea una vez por segundo, y a la izquierda hay una pila de seis barras horizontales apiladas verticalmente, cada una de las cuales desaparece una vez cada diez segundos . Cada vez que pasan sesenta segundos, el token se restablece y el token anterior se vuelve inválido.

AFAIK: estos dispositivos no hacen uso de la red, y los números que generan deben ser verificados por el servidor (ya sea que el servidor sea un banco o el servidor de una empresa). Por lo tanto, dentro de este dispositivo debe almacenarse un algoritmo que genere números aleatorios con un mecanismo que incluye un temporizador muy preciso alimentado por una batería pequeña. El temporizador debe ser muy preciso, ya que el servidor debe verificar la validez de los dígitos generados en el mismo intervalo de tiempo. Para cada usuario / empleado, el servidor debe, según tengo entendido, almacenar el mismo algoritmo de generación de números aleatorios, con un algoritmo de este tipo por cliente / empleado. Por supuesto, el chip debe construirse de manera tal que, si es robado, el atacante no pueda acceder al algoritmo de generación de números aleatorios almacenado en él, incluso si el dispositivo no funciona.

¿Así es como funciona?

¡Gracias!

    
pregunta John Sonderson 19.12.2014 - 23:03
fuente

3 respuestas

31

Sí, funciona como dices. El chip es "a prueba de manipulaciones" y borrará la "semilla" (clave secreta) si se intenta atacarlo. Esto se logra a menudo teniendo una batería no reemplazable por el usuario y una "trampa" que interrumpe la alimentación del dispositivo una vez que se abre el dispositivo o se retira la superficie del chip. Luego, la clave se almacena en una SRAM, que requiere energía para mantener la clave.

La clave es una semilla, que combinada con la hora actual en el paso de 60 segundos (efectivamente, la marca de tiempo actual de UNIX / 60), actualiza el código.

No, el dispositivo NO necesita ser preciso. En su lugar, el servidor almacenará la hora del último código aceptado. Luego, el servidor aceptará un código un minuto antes, un minuto antes y en el momento actual, de modo que si la hora actual en el servidor es 23:20, entonces aceptará un código de 23:19, 23:20 y 23: 21.

Después de esto, almacenará la hora del último código aceptado, por ejemplo, si se aceptó un código 23:21, almacenará 23:21 en una base de datos, y se negará a aceptar cualquier código generado a las 23:21 o antes.

Ahora a la parte interesante: para evitar que un token impreciso se desincronice del servidor, el servidor almacenará en su base de datos, si se le exigió que acepte un código 23:19 o un código 23:21 a las 23:20 . Esto asegurará que en el próximo inicio de sesión, el servidor corregirá el código con el número de pasos.

Digamos que en el reloj 23:20 inicia sesión con un código 23:19. El servidor almacena "-1" en su base de datos (y si fuera un código 23:21, almacenaría "+1" en la base de datos). La próxima vez que inicie sesión, el reloj es 23:40. Entonces el servidor aceptará un código 23:38, 23:39 o 23:40. Si se acepta un código 23:38, almacenará "-2" en la base de datos, a las 23:39 mantendrá "-1" en la base de datos, y a las 23:40 almacenará "0" en la base de datos.

Esto asegura efectivamente mantener el servidor sincronizado con su token. Además de esto, el sistema, si un token "corría demasiado lejos" del servidor (debido a que no se usó durante mucho tiempo), permite la resincronización. Esto se logra ya sea por un administrador del sistema, o se presenta un servicio de resincronización de autoservicio donde se le pide al usuario del token que proporcione 2 códigos subsiguientes del token, como 23:20 y 23:21, o 19:10 y 19:11. Tenga en cuenta que el servidor NUNCA aceptará un código de token generado en o antes de la fecha en que se usó el "último código de token usado" (ya que esto permitiría la reutilización de los códigos OTP). Cuando se realiza una resincronización, el token almacenará la diferencia de los 2 códigos de token proporcionados, y la hora actual del servidor y en una resincronización, la ventana de búsqueda podría ser de más / menos 50 pasos (lo que permitiría aproximadamente 0,75 horas de Desincronización en ambas direcciones).

El servidor puede detectar un token desincronizado generando los 50 códigos anteriores y los 50 códigos futuros, y si el código especificado coincide con eso, iniciará el proceso de resincronización automáticamente. Muchas veces, para evitar que un atacante use el proceso de resincronización para encontrar códigos válidos, una vez que una cuenta está en modo de resincronización, no se aceptará el inicio de sesión sin volver a sincronizar, lo que requeriría que el atacante encuentre el código exacto o posterior al código. encontrado.

    
respondido por el sebastian nielsen 19.12.2014 - 23:32
fuente
5

El token de SecurID tiene un valor "semilla" asignado, y está programado con un algoritmo específico que genera números basados en la semilla y su reloj del sistema. El valor de inicialización también se almacena en un archivo que se envía con el token. Al recibir el token, los administradores del sistema importan el archivo semilla al servidor de autenticación. Dado que tanto el dispositivo de token SecurID como el servidor tienen el valor inicial y ambos están usando el algoritmo, el servidor puede determinar cuál debe ser el código de token correcto en cualquier momento.

Ocasionalmente, el reloj del token puede no estar sincronizado con el servidor de autenticación. Si esto sucede, los administradores del sistema u otro personal de soporte autorizado pueden ayudar al usuario realizando un proceso de resincronización en el servidor. Esto configurará el servidor para que reconozca la diferencia de tiempo para ese token, de modo que los futuros intentos de autenticación se manejen con precisión.

Nota: Debido a que el servidor debe poder predecir estos números, según los datos almacenados en el archivo semilla, la hora actual y un algoritmo estándar, un atacante también puede predecirlos con herramientas especiales y acceso a simbólico. (O lo que es peor, el acceso a los archivos semilla en sí mismos, ya que se se sospecha que ocurrió en 2011 .) Dado suficiente consecutivo códigos de token, hay herramientas que pueden determinar el valor semilla y luego generar códigos futuros por su cuenta.

    
respondido por el Iszi 19.12.2014 - 23:21
fuente
2

La respuesta de Sebastian fue estupenda. Repetiré eso en términos sencillos. El token SecureID es simplemente un reloj con un valor semilla en él. En lugar de mostrar el tiempo, muestra un número. El punto que podemos ver en la imagen es en segundos (creo), la barra es cuando el número va a cambiar para que puedas cronometrarlo. Si está llegando al final, está a punto de cambiar y si lo está escribiendo, tendrá que esperar.

La "semilla" también está en el servidor que autentica el dispositivo. Cuando los usuarios de seguridad instalan el servidor RSA, tienen que cargar las mismas semillas en el servidor que recibirá su código PIN.

Entonces ... Básicamente es un cryptoclock. Al igual que los antiguos relojes LCD que mis hijos tienen con dora o princesas. La diferencia es la semilla que proporciona las matemáticas para el número.

    
respondido por el Joe Kocan 20.12.2014 - 05:06
fuente

Lea otras preguntas en las etiquetas