Autentificación

Anuncio
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
Descargar