Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Autentificacin
Traducida y comentada por
Eugenia Bahit
Contenido
Introduccin....................................................................................................................................................3
Reglas generales de autentificacin..............................................................................................................3
ID de usuario..............................................................................................................................................3
Direccin de correo electrnico como ID de usuario.........................................................................4
Validacin.........................................................................................................................................5
Normalizacin..................................................................................................................................7
Implementar controles adecuados de fortaleza de contrasea .............................................................7
Advertencia...........................................................................................................................................7
Longitud de la contrasea....................................................................................................................8
Complejidad de la contrasea.............................................................................................................9
Topologas de contrasea..................................................................................................................10
Informacin adicional........................................................................................................................10
Implementar un mecanismo seguro de recuperacin de contrasea .................................................11
Almacenar contraseas de forma segura..............................................................................................12
Transmitir contraseas slo sobre TLS u otro transporte fuerte.........................................................12
Solicitar volver a autentificarse para funciones sensibles....................................................................13
Utilizar la autentificacin por mltiples factores...................................................................................14
Autentificacin TLS.............................................................................................................................14
Autentificacin y mensajes de error.......................................................................................................16
Respuestas de autentificacin......................................................................................................16
Ejemplo de respuestas incorrectas...............................................................................................16
Ejemplo de respuestas correctas..................................................................................................16
Cdigos de error y URLs................................................................................................................17
Prevenir ataques por fuerza bruta.........................................................................................................17
Uso de protocolos de autentificacin que no requieren contrasea ........................................................19
OAuth........................................................................................................................................................19
OpenId......................................................................................................................................................20
SAML.........................................................................................................................................................20
FIDO..........................................................................................................................................................21
Directrices generales para el manejo de sesiones.....................................................................................23
Gestin de contraseas................................................................................................................................23
Recursos adicionales....................................................................................................................................23
Autores y Editores principales.....................................................................................................................24
Introduccin
La autentificacin es el proceso de verificar que un individuo, entidad o sitio Web es
quien dice ser. En el contexto de una aplicacin Web, la autentificacin, comnmente es
realizada mediante el envo de un nombre de usuario o ID y, uno o ms datos de
informacin privada que solo un determinado usuario debe conocer.
Validacin
Muchas aplicaciones Web contienen expresiones regulares informticamente muy
costosas e inexactas para intentar validar las direcciones de correo electrnico.
Cambios recientes generaron que el nmero de falsos negativos se viera incrementado,
particularmente debido a:
El aumento de popularidad de las sub-direcciones de proveedores como Gmail
(comnmente usando + como token en la parte local para afectar la entrega)
Nuevos gTLDs con nombres largos (muchas expresiones regulares comprueban el
nmero y longitud de cada etiqueta en el dominio)
Siguiendo el RFC 5321, las mejores prcticas para la validacin de una direccin de
correo electrnico deberan ser:
Para asegurarse que una direccin de entrega sea verdica, la nica forma es enviar un
correo electrnico al usuario y que ste deba tomar alguna accin para confirmar que lo
ha recibido. Ms all de confirmar que la direccin de correo electrnico es vlida y
reciba los mensajes, esto tambin proporciona una confirmacin positiva de que el
usuario tiene acceso al buzn de correo y es probable que est autorizado a usarlo. Esto
no significa que otros usuarios no tengan acceso al mismo buzn de correo, cuando por
ejemplo el usuario utiliza un servicio que genera una direccin de correo electrnico
desechable.
Las validaciones de correo electrnico pueden llegar a ser muy costosas para la
aplicacin y para el servidor.
Tal y como asegura la gua de OWASP, es necesario asegurarse de que la direccin de
correo exista (sea verdica) y para ello, nunca deber enviarse el correo de
comprobacin SIN ANTES haber validado la entrada del usuario, ya que direcciones de
correo electrnico mal formadas, tales como 'foobar', podran generar extensas colas
de salida en el servidor, que provocasen un consumo innecesario de recursos.
Por otra parte, los correos electrnicos no confirmados, deberan persistir SOLO de
forma temporal en el sistema, para evitar que el colapso de una base de datos genere
la falta de disponibilidad de la aplicacin Web. Esto demanda la toma de medidas de
limpieza automatizada en el sistema.
Un ejemplo de persistencia temporal y acciones de confirmacin, puede obtenerse en
el artculo Emulacin de tokens de seguridad temporales para el registro de
usuarios el cual puede descargarse desde la siguiente URL:
http://library.originalhacker.org/biblioteca/articulo/ver/115
Normalizacin
Como la parte local de las direcciones de correo electrnico son, de hecho, sensibles a
maysculas y minsculas, es importante almacenar y comparar las direcciones de correo
electrnico correctamente. Para normalizar la entrada de una direccin de correo
electrnico, debera convertir la parte del dominio SOLO a minsculas.
Desafortunadamente, esto hace y har a la entrada, ms difcil de normalizar y de
coincidir correctamente con los intentos del usuario.
Advertencia
Las siguientes indicaciones estn disputadas. Por favor, vea la presentacin de OWASP
(en ingls), "Your Password Complexity Requirements are Worthless - OWASP AppSecUSA
Longitud de la contrasea
Las contraseas ms largas proporcionan una mayor combinacin de caracteres y en
consecuencia hacen que sea ms difcil de adivinar para un atacante.
Es muy comprensible que esta seccin haya presentado disputas en el propio seno de
OWASP, ya que la longitud de una contrasea, es un hecho que no influye demasiado
en los intentos de 'adivinacin' manuales.
Las contraseas se obtienen mayormente con mejores resultados, mediante el estudio
y perfilado del sujeto.
Complejidad de la contrasea
Las aplicaciones deberan imponer reglas de complejidad de contraseas para evitar las
contraseas fciles de adivinar. Los mecanismos de contraseas deberan permitir al
usuario, poder tipear casi cualquier caracter como parte de su contrasea, incluyendo el
caracter de espacio. La contraseas deberan, obviamente, ser sensibles a maysculas y
minsculas a fin de incrementar la complejidad de las mismas. Ocasionalmente,
encontramos sistemas donde las contraseas no son sensibles a maysculas y
minsculas, frecuentemente debido a problemas de sistemas heredados como los viejos
ordenadores centrales que no tenan contraseas sensibles a maysculas y minsculas.
Topologas de contrasea
Prohibir topologas de contraseas de uso comn
Forzar a varios usuarios a utilizar diferentes topologas de contrasea
Exigir un cambio mnimo de topologa entre viejas y nuevas contraseas
En lo particular, se debera tener especial cuidado con este aspecto ya que para
ponerlo en prctica, supone el almacenamiento histrico de las contraseas de un
usuario, algo que puede generar desconfianza en los usuarios ya que se encuentran
frente a un sistema informtico que sabe ms sobre ellos que ellos mismos.
Desde mi punto de vista, deberan solo contrastarse la ltima contrasea con la nueva,
para as evitar una excesiva intromisin en la privacidad del usuario. Tngase en
cuenta que el historial de contraseas elegidas por un usuario, en trminos
criminolgicos, puede ser utilizado para complementar el perfil de ste.
Informacin adicional
Asegrese de que todos los caracteres que el usuario escribe estn realmente
incluidos en la contrasea. Hemos visto sistemas que truncan la contrasea a una
longitud inferior de la que el usuario provee (ej., truncada a los 15 caracteres
cuando se han ingresado 20).
Esto es manejado usualmente al establecer la longitud de TODOS los
campos de contrasea exactamente como la longitud mxima de la
contrasea. Esto es particularmente importante si su longitud mxima de
contrasea es corta, como 20-30 caracteres.
Recomendacin:
Lo ideal, sera que la aplicacin indicara al usuario cmo escribir su nueva
contrasea y cunto de la directiva de complejidad de su nueva contrasea
cumple
De hecho, el botn de envo debera verse atenuado hasta que la nueva
contrasea rena los requisitos establecidos en la poltica de complejidad
de contrasea y la segunda copia de la nueva contrasea coincida con la
primera. Esto har que sea mucho ms fcil, para el usuario, entender la
poltica de complejidad y cumplirla.
Si no se utiliza TLS u otro transporte fuerte para la landing page de inicio de sesin, se
permite a un atacante modificar el action del formulario de inicio de sesin, generando
que las credenciales del usuario sean enviadas a una ubicacin arbitraria.
Si no se utiliza TLS u otro transporte fuerte para las pginas autentificadas que se
habilitan luego del inicio de sesin, un atacante puede ver la ID de sesin sin cifrar y
comprometer la sesin autentificada del usuario.
Sin esta contramedida, un atacante puede ser capaz de ejecutar transacciones sensibles
a travs de un ataques CSRF o XSS sin necesidad de conocer las credenciales actuales del
usuario. Adicionalmente, un atacante puede obtener, temporalmente, acceso fsico al
navegador del usuario o robar su ID de sesin para tomar el control de la sesin del
usuario.
A veces lo menos pensado por su simpleza es lo que mayor dao podra causar.
Muchos programadores evitan este tipo de medidas argumentando que solo
'Fulanito' tendr acceso al sistema. Pero 'Fulanito' podr tener acceso como
administrador. Y 'Fulanito' podr acceder desde su ordenador y descuidarlo un solo
minuto. Y en ese minuto, cualquier persona -y no necesariamente mal intencionada,
basta con que sea una persona 'metida' y poco cuidadosa- podra tomar posicin de su
ordenador y 'tocar lo que no debe'. Si es una funcionalidad sensible, no importa quin
har uso de ella. Siempre habr que tomar medidas preventivas.
Los esquemas de autentificacin como las contraseas de un solo uso (OTP por las siglas
en ingls de "One Time Passwords") implementadas utilizando un token fsico (hardware)
tambin pueden ser un factor clave en la lucha contra ataques tales como los ataques
CSRF y malware del lado del cliente. Un considerable nmero de los token de hardware
para MFA disponibles en el mercado, permiten una buena integracin con las
aplicaciones Web. Ver: [2] (en ingls).
Los token de seguridad por hardware no suelen ser tan conocidos en Amrica Latina y
pases subdesarrollados como lo son en pases del primer mundo.
En esta zona del mundo, los dispositivos de seguridad por hardware suelen ser
econmicamente muy costosos y no demasiado simples de conseguir, por lo que su
implementacin debera ser cuidadosamente estudiada antes de tomar desiciones.
Autentificacin TLS
La autentificacin TLS, tambin conocida como autentificacin TLS mutua, consiste en
que ambos, navegador y servidor, enven sus respectivos certificados TLS durante el
proceso de negociacin TLS (handshaking). As como se puede validar la autenticidad de
un servidor mediante el certificado y, preguntar a una Autoridad de Certificacin
conocida (CA, por las siglas en ingls de "Certificate Authority") si la certificacin es
vlida, el servidor puede autentificar al usuario recibiendo un certificado desde el cliente
y validndolo contra una CA o su propia CA. Para hacer esto, el servidor debe proveer al
usuario de un certificado generado especficamente para l, asignando valores que
puedan ser usados para determinar que el usuario debe validar el certificado. El usuario
instala los certificados en el navegador y los usa para el sitio Web.
Por lo general, no es una buena idea utilizar este mtodo para la mayor parte de los
sitios Web de acceso pblico que tendrn un usuario promedio. Por ejemplo, no ser
una buena idea implementar esto en un sitio Web como Facebook. Si bien esta tcnica
puede evitar que el usuario tenga que escribir una contrasea (protegindola as contra
el robo desde un keylogger promedio), an se considera una buena idea emplear el uso
de una contrasea combinada con la autentificacin TLS.
usuarios y desde mi punto de vista, solo debera ser implementado en una Intranet
(donde exista personas de soporte IT que se encargue de la instalacin de los
certificados).
Respuestas de autentificacin
Una aplicacin debera responder mensajes de error genricos independientemente de
si era incorrecto el identificador de usuario o la contrasea. Tampoco debera dar
informacin sobre el estado de una cuenta existente.
Los mecanismos de bloqueo de contrasea deberan ser empleados para bloquear una
cuenta si se realiza ms de un nmero predeterminado de intentos fallidos de
autentificacin.
Los mecanismos de bloqueo de contrasea tienen una debilidad lgica. Un atacante que
emprende un gran nmero de intentos de autentificacin sobre nombres de cuentas
conocidas puede producir como resultado, el bloqueo de bloques enteros de cuentas de
usuario. Teniendo en cuenta que la intencin de un sistema de bloqueo de contrasea es
proteger de ataques por fuerza bruta, una estrategia sensata es bloquear las cuentas por
un perodo de tiempo (ej., 20 minutos). Esto ralentiza considerablemente a los atacantes
mientras que permite automticamente, reabrir las cuentas para los usuarios legtimos.
Adems, la autenticacin de mltiples factores es un muy poderoso elemento de
FUENTE ORIGINAL: https://www.owasp.org/index.php/Gu%C3%ADa_de_Referencias_sobre_Autentificaci%C3%B3n
disuasin cuando se trata de prevenir los ataques de fuerza bruta ya que las credenciales
son un blanco mvil. Cuando la autenticacin de mltiples factores se implementa y
activa, el bloqueo de cuentas ya no es necesario.
OAuth
Open Authorization (OAuth) es un protocolo que permite a una aplicacin autentificar a
un usuario contra un servidor, sin requerir contraseas o algn servidor externo que
acte como proveedor de identidad. Utiliza un token generado por el servidor,
ofreciendo un flujo de autorizacin sostenido, para que un cliente tal como una
aplicacin mvil, pueda llamar al servidor que el usuario est utilizando el servicio.
La recomendacin es usar e implementar OAuth 1.0a o OAuth 2.0, ya que a la primera
versin (OAuth1.0) se la ha encontrado vulnerable a los ataques de fijacin de sesin
(session fixation).
OAuth 2.0 se basa en HTTPS para la seguridad y actualmente es usado e implementado
por las API de empresas como Facebook, Google, Twitter y Microsoft. OAuth1.0a es ms
difcil de usar porque requiere de bibliotecas criptogrficas para las firmas digitales. Sin
embargo, no se basa en HTTPS para la seguridad y, por lo tanto, puede ser ms
adecuado para las transacciones de mayor riesgo.
OpenId
OpenId es un protocolo basado en HTTP que utiliza proveedores de identidad para
validar que un usuario es quien dice ser. Es un protocolo muy simple que permite a un
proveedor de servicios de identidad un camino para el inicio de sesin nico (SSO, por
las siglas en ingls de "single sign-on"). Esto permite a los usuarios reutilizar una sola
identidad dada a un proveedor de identidad OpenId de confianza y ser el mismo usuario
en mltiples sitios web, sin la necesidad de proveer la contrasea a ningn sitio Web,
exceptuando al proveedor de identidad OpenId.
Debido a su simplicidad y a que proporciona proteccin de contraseas, OpenId ha sido
bien aceptado. Algunos de los proveedores de identidad OpenId bien conocidos son
Stack Exchange, Google, Facebook y Yahoo!
Para entornos no empresariales, OpenId es considerado seguro y frecuentemente, la
mejor opcin, siempre y cuando el proveedor de identidad sea de confianza.
SAML
El lenguaje de marcado para confirmaciones de seguridad (SAML, siglas en ingls de
"Security Assertion Markup Language") a menudo se considera la competencia de
OpenId. La versin ms recomendada es la 2.0, ya que posee caractersticas muy
completas y proporciona gran seguridad. Como con OpenId, SAML utiliza proveedores de
identidad, pero a diferencia de ste, est basado en XML y proporciona mayor
flexibilidad. SAML est basado en redirecciones del navegador las cuales envan los datos
en formato XML. A diferencia de SAML, OpenId no solo es iniciado por un proveedor de
servicios, sino que tambin puede ser iniciado desde el proveedor de identidad. Esto
permite al usuario navegar entre diferentes portales mientras que se mantienen
autentificado sin tener que hacer nada, haciendo que el proceso sea transparente.
Mientras que OpenId ha tomado la mayor parte del mercado de consumo, SAML es a
menudo la opcin para aplicaciones empresariales. La razn de esto, frecuentemente, es
que hay pocos proveedores OpenId que son considerados de clase empresarial (lo que
significa que la forma en la que validan la identidad del usuario no tiene los altos
estndares requeridos para la identidad de la empresa). Es ms comn ver SAML siendo
usado dentro de la intranet de un sitio Web, a veces incluso, utilizando un servidor desde
la internet como el proveedor de identidad.
En los ltimos aos, las aplicaciones como SAP ERP y SharePoint (SharePoint utilizando
Active Directory Federation Services 2.0) deciden usar la autentificacin SAML 2.0, a
menudo como un mtodo preferido para las implementaciones de inicios de sesin
nicos siempre que se requiera la federacin empresarial para servicios Web y
aplicaciones.
Ver tambin: SAML Security Cheat Sheet
FIDO
La Fast Identity Online (FIDO) Alliance ha creado dos protocolos para facilitar la
autentificacin online: los protocolos Universal Authentication Framework (UAF) y
sistemas).
Gestin de contraseas
Los gestores de contraseas son programas, complementos para el navegador o
servicios Web que automatizan el manejo de un gran nmero de diferentes credenciales,
incluyendo la memorizacin y rellenado automtico, generando contraseas aleatorias
en diferentes sitios, etc. La aplicacin Web puede ayudar a los administradores de
contraseas:
usando formularios HTML estndar para los campos de ingreso de nombres de
usuario y contraseas,
no deshabilitando el "copy & paste" en los campos de los formularios HTML,
permitiendo contraseas muy largas,
no usando esquemas de inicio de sesin en mltiples etapas (nombre de usuario
en la primera pantalla, luego la contrasea),
no usando esquemas de autentificacin con largos scripts (JavaScript).
Recursos adicionales
Un PDF del Cheatsheet en ingls puede obtenerse aqu:
https://magic.piktochart.com/output/7003174-authentication-cheat-sheet
Sitios Web
Cursos de Programacin a distancia:
www.cursosdeprogramacionadistancia.com
Web personal:
www.eugeniabahit.com
The Original Hacker:
www.originalhacker.org
Twitter:
www.twitter.com/eugeniabahit