Las contraseñas continúan siendo las formas primarias de verificación de usuarios/as en la red y deben ser protegidas correctamente cuando se almacenan en un server.
En el pasado las contraseñas se guardaban en formato Plain Text por lo cual cualquier persona con acceso a la lista de passwords podría vulnerar cualquier cuenta de usuario.
En la actualidad los passwords se encriptan. Es una opción razonable, pero también posee sus puntos debiles, por que el server que verifica el password del cliente tiene que tener la llave para desencriptarlo. Una persona que logre acceder de manera ilegitima al servidor y se roba el archivo de passwords encriptados, puede tranquilamente también robarse el archivo de llaves.
Hashing es la mejor opción, y no lo digo yo. El matemático Andrew Regenscheid y el analista de ciencias de la información, John Kelsey, del Instituto Nacional de Standards y Tecnología, división de Seguridad Informática de los EE.UU, coinciden que utilizar hashing para las contraseñas es lo correcto.
El proceso de encriptado es una función doble, per se. Por un lado, lo que se encripta, necesita ser desencriptado con la llave correcta, pero en el caso del hashing, la función es una sola.
Hashing posee un algoritmo diseñado específicamente para este fin y no hay manera de realizar el proceso de hashing en reversa para revelar el password original. Aún si alguien lograra entrar de manera ilegitima en el servidor que monitoreamos y se robara el archivo de passwords hasheados, no le serviría de nada. No podría nunca obtener los passwords de allí.
El método funciona de la siguiente manera:
Un usuario introduce su ID y su password en un formulario en su browser de preferencia, digamos Firefox, por ejemplo. Y el sitio (preferentemente) utiliza protocolo seguro (HTTPS). Esa información va hacia el server a través del protocolo SSL (secure socket layer) El server usa la ID para buscar el digest asociado. El password enviado por el usuario se hashea con el mismo algoritmo y si el digest es identico al guardado en el servidor, el usuario es validado en su acceso.
Pero aquí hay un punto donde debo hacer una salvedad:
No siempre las personas utilizan passwords completamente random, es por ello que los crackers tienen todavía una pequeña chance de vulnerar hashes. Supongamos que un atacante puede hacer correr una colección de millones de passwords utilizados comunmente a través de un algoritmo hasheado y obtener una lista (llamada comunmente tabla arcoiris o rainbow table) A una computadora no le toma mucho tiempo comparar una lista de passwords hasheados contra una tabla arcoiris. Por cada acierto, revelara el password para dicho hash.
La protección para esta mecánica es recurrir a saltear el hash: Se agrega un número random a cada contraseña antes de ser hasheada. El mensaje resultante del digest es el password con el valor salt y nunca podrá coincidir con una tabla arcoiris.
Claro que un hacker puede intentar agregar valores random a passwords comunes para intentar encontrar un hash que matchea, pero es virtualmente imposible que en una vida humana logre dar con aunque sea una sola coincidencia.
0 comentarios:
Publicar un comentario