Autentificación Hay cada vez más situaciones en que uno tiene que identificarse para obtener algún servicio: Password (contraseña) para acceder al correo electrónico PIN (Personal Identification Number o “clave”) de la tarjeta bancaria Cédula Carnet . . . y un sin fin de sitios Web que requieren que el usuario se registre En el último caso, la tentación es usar el mismo “apodo” y password en todos, por lo que la mala seguridad en un sitio puede afectar a muchos más. Hay una creciente industria de “robo de identidad” por esta razón. 12 de junio de 2002 Autentificación-1 ¿Cómo hace Alicia para identificarse a su sistema local? Es decir, ¿cómo autentifica su identidad? Tradicionalmente, todo sistema de autentificación utiliza uno o más de los siguientes atributos: Algo que eres – ej. biometría (huella dactilar, patrón de colores en el iris, perfil de ADN . . . ). Tiende a ser costoso implementar y causa malestar entre los usuarios. Algo que posees – ej. una tarjeta de acceso. Puede ser robada o perdida, pero tiene la ventaja de ser física, como una llave. Algo que sabes – ej. una contraseña, tambien conocida como un secreto compartido. La lógica dice: si Alicia sabe que sólo ella y Bob conocen un secreto, y la persona remota le satisface a ella que conoce el secreto, esa persona debe ser Bob. Las autoridades en sistemas seguros recomiendan que un buen sistema de autentificación debe utilizar al menos dos elementos, por ejemplo una tarjeta más un PIN. 12 de junio de 2002 Autentificación-2 Psicología Aplicada Un password es un componente de seguridad que el usuario maneja directamente. Esto da lugar a varios problema potenciales: ¿Puede el usuario revelar el password por decepción? Las técnicas de ingeniería social tienen bastante éxito. Por ejemplo: Manuel llama a los operadores por teléfono diciendo que es el asistente del Gerente General, y pide algo trivial. Hace esto varias veces hasta que los operadores confien en él. Luego llama para insistir que hay que cambiar el password del Gerente, y que es muy urgente. Se envia correo electrónico a un grupo grande, diciendo que es importante que confirmen sus passwords “por una auditoría que estamos haciendo”. Muchos se caen. La prevención de este tipo de ataques requiere la definición de estándares estrictos (“los passwords no se cambian por solicitud telefónica, bajo ninguna circunstancia”) y su implementación. 12 de junio de 2002 Autentificación-3 ¿Puede el usuario ingresar el password fácilmente? Un password largo y aleatorio puede ser dificil teclear sin equivocación. Algunos sistemas le dan al usuario hasta tres intentos y luego se bloquean. Una opción interesante es usar palabras cortas, sin significado, para representar pares de dígitos, por ejemplo: papa mima memo poma mapa lema 1212 3435 3637 5135 3512 6235 ¿Puede el usuario recordar el password? Hay dos clases de problemas: Errores de diseño: Para que el password sea memorable, algunos sistemas usan un dato conocido por el usuario, ej. el segundo apellido o fecha de nacimiento. Estos datos no son muy secretos, y además son dificiles de cambiar si hace falta. Alternativamente, el sistema le solicita al usuario que cree su propio password, pero 1) no es muy aleatorio tampoco, y 2) el usuario tiende a usar el mismo password en muchos sitios distintos. Fallas operacionales: Hay muchas instancias. Por ejemplo, algunos sistemas vienen “de fábrica” con passwords de administración conocidos, pero el administrador no se cuida de cambiarlos. 12 de junio de 2002 Autentificación-4 Vulnerabilidades ¿Cuales son los tipos de ataque que tenemos que prevenir a los sistemas de password? Ataques a un usuario específico: queremos entrar en la cuenta de Bill Gates. Ataques a cualquier cuenta en el sistema: queremos usar una tarjeta de teléfono prepago. Ataques a cualquier cuenta en cualquier sistema: queremos penetrar a la intranet de Microsoft. Ataques de “bloque de servicio” (DOS): queremos bloquear acceso por parte de otro usuario, o de todos los usuarios. Es importante plantear esta pregunta antes de diseñar el sistema de passwords. 12 de junio de 2002 Autentificación-5 Fisgoneo Quizás Manuel puede copiar el password cuando Alicia lo introduce: A menudo la interfaz al usuario está mal diseñado. Por ejemplo, el teclado de un cajero automático puede ser visible desde lejos, incluso con una cámera de video con lente telescópico. En un hotel, el personal puede escuchar las señales de modem desde las habitaciones. En una red local, es relativamente fácil hacer sniffing (“olfateo”) de passwords. Los sistemas modernos usan protocolos que evitan la transmisión del password sobre la línea, ej. SSH (Secure SHell) o Kerberos. 12 de junio de 2002 Autentificación-6 Spoofing ¿Cómo sabe Alicia que el programa que le pide el password no es de Manuel? Es importante contar con un trusted path (“vía de confianza”) entre el usuario y el sistema: En Windows, la secuencia Ctrl-Alt-Del no puede ser interceptado en el sistema local. En SSH, el servidor remoto tiene que autenticarse. Sin embargo, de nada sirve esto si el terminal local está intervenido, ej. se ha colocado un transmisor de radio dentro del teclado . . . 12 de junio de 2002 Autentificación-7 Otros Ataques En un sistema, un error de programación dejaba entrar a cualquier usuario con el password “Carriage Return”. Cuando se corrigió, muchos usuarios de copias sin licencia no se enteraron. Un banco envió tarjetas nuevas a todos sus clientes, todas con el mismo PIN. Era dificil detectar porque el personal no tenía acceso a los PINs de los clientes. A veces el usuario y el sistema se defasen, y la bitacora de intentos de login contiene copias de passwords, o sea la bitacora debe ser bien protegida. 12 de junio de 2002 Autentificación-8 Implementación de Contraseñas El método clásico de las contraseñas fue inventado por Needham y Guy para el sistema Titan de la Universidad de Cambridge a principios de los años 70. Entendieron que el sistema no necesita conocer los passwords; es suficiente que pueda determinar si el password es válido o no. Es por eso que es importante diferenciar entre los términos clave y contraseña. Su método utiliza una función unidireccional de hashing (una función dificil de invertir, que produce una salida de tamaño constante). Se guarda el resultado de la función en el sistema, y la función se recalcula cada vez que el usuario se presenta. (Nótese que estrictamente los passwords no son “encriptados” aunque algunos algoritmos criptográficos pueden ser adaptados para usarlos como funciones de hashing). 12 de junio de 2002 Autentificación-9 Ataques por Diccionario Un error en el diseño original de Unix significa que el archivo de passwords en legible por todo el mundo (versiones modernas corrigen esto). Manuel aplica la función de hashing a una gran variedad de posibles passwords y guarda los resultados. (¿Cuántos passwords distintos reconoce el sistema? ¿Son todos igualmente probables?). Si él tiene una cuenta en el sistema a ser atacado, puede simplemente comparar los valores de hash del sistema con su lista precalculada. Esto es un ataque por diccionario. Notése que Manuel no está atacando a un usuario en particular, sino a cualquiera que caiga. Un ataque por diccionario (también conocido como cracking) tiene alta probabilidad de funcionar porque los passwords no son aleatorios. 12 de junio de 2002 Autentificación-10 Se han intentado varios mecanismos para frustar estos ataques: Obligar a los usuarios cambiar sus passwords cada N días: cambian de fulano a mengano e inmediatamente a fulano de nuevo. Prohibir que se cambie más de una vez por mes: si se roba el password, requiere un mecanismo especial para cambiarlo. Además, usan fulano01 en enero, fulano02 en febrero, etc. Obligarlos a usar letras y números: usan 7ulan0, p3p3, etc. Sugerirles que combinen palabras: arbol#blue; o que usen iniciales de una frase: euldlMdcNnqr (en un lugar de la Mancha ...) Algunos sistemas concatenan el password con un número aleatorio (la sal) antes de calcular el hash. La sal se guarda junto con el valor de hash (o sea, no es secreto). Si la sal tiene 12 bits, como en Unix, el esfuerzo de Manuel para construir su diccionario será 212 veces mayor. También se esconden los valores de hash en un archivo paralelo (el “archivo sombra”). 12 de junio de 2002 Autentificación-11 Contraseñas Desechables Sería más seguro si cada contraseña sólo se usara una vez. Un método interesante para lograr esto se llama S/KEY: Alicia escoge un número aleatorio R, y calcula x1 = f (R), x2 = f (f (R)), x3 = f (f (f (R))), etc. hasta x100 = f 100(R), donde f () es una función unidireccional. Guarda los xi. El sistema guarda x101. (Ojo: xi = f (xi−1)). Cuando Alicia quiere conectarse por primera vez, presenta su nombre y x100. El sistema calcula f (x100) y compara con su copia de x101. Si son iguales, Alicia es auténtica. El sistema reemplaza x101 por x100 en su base de datos. La próxima vez, Alicia presenta x99 . . . 12 de junio de 2002 Autentificación-12 Autentificación con Criptografía Asimétrica El problema con S/KEY es que después de 100 accesos, hay que reinicializarlo con 100 xi nuevos. Una alternativa es usar un protocolo tipo desafio-respuesta: 1. Héctor (un “host”) envia un nonce N a Alicia. 2. Alicia manda {{N }KApriv , A}KH a Hector, usando su clave pub privada KApriv y la clave pública de Héctor, KHpub . Se asume que KHpub es bien conocida. 3. Héctor decripta la respuesta con su clave privada, consulta su base de datos y decripta {N }KApriv con la clave pública de Alicia; si corresponde, Alicia es auténtica. Importante: esto requiere que Alicia tenga un PC o terminal inteligente en que confia . . . ¿Cómo sabe Alicia que está hablando con Héctor y no con Manuel? No lo sabe. Sólo Héctor puede entender su respuesta, pero eso no importa: Manuel puede decir “OK” y simular una sesión con Héctor. En la vida real, los protocolos de autenticación tienen que ser más complejos. 12 de junio de 2002 Autentificación-13 Zero-Knowledge Proof ¿Es estrictamente necesario que Alicia y Bob compartan un secreto? Si Alica puede demostrarle a Bob que tiene cierta información secreta, sin revelarla, sería suficiente: B A Z X Y puerta cerrada 1. Bob se queda afuera y Alicia llega al azar a X o a Y. 2. Bob entra al punto Z, escoge un tunel al azar y le pide a Alicia que salga por el mismo. Alicia obedece. 3. Bob vuelve a la entrada y todo se repite. Después de suficientes repeticiones, Bob se convence que Alicia tiene la llave de la puerta. Nótese que la prueba le sirve a Bob pero que él no puede convencer a un tercero (cualquier prueba que ofrece podría ser falsificada, por ejemplo una grabación en video). 12 de junio de 2002 Autentificación-14