Compartir Login SAML y LDAP
Introducción
El almacenamiento de las claves de forma segura es uno de los pilares de cualquier mecanismo de autenticación, ya que incluso ante una filtración de datos debería resultar imposible para el atacante poder determinar las claves originales de los usuarios.
SimpleSAMLPhp delega el tratamiento de la clave en el módulo que realiza la autenticación, en nuestro caso particular buscamos darle la mayor seguridad posible a las mismas, tomando como punto de partida los algoritmos que vienen usando el resto de nuestras aplicaciones.
El default para LDAP establecido por el estandar para el almacenamiento de claves, se encuentra en SSHA (Salted SHA-1).
Passwords bcrypt y sha
De mas esta decir que al tratarse de diferentes algoritmos de hasheo, los resultados no son comparables entre si.
- SHA (Secure Hash Algoritm) es una familia de funciones de hasheo, que se crearon para ser utilizadas como estandar en la creación de huellas digitales y en su versión salteada (SSHA o Secure SHA-1) se utiliza por LDAP como defecto en la operacion
Bind
.
Dados los avances en criptografía el uso de SHA-1 ha sido deprecado hace unos años y aunque su version salteada es mas segura, el incremento de la capacidad de calculo augura un periodo breve por el cual los hashes no sean revertidos en su totalidad, tal como sucedio con SMD5.
- Bcrypt es parte de una serie de algoritmos que ya incorpora el concepto de salt desde su concepcion, con cantidad de iteraciones variable para adaptarse al creciente poder de calculo y hasta el momento no ha sido encontrada vulnerabilidad para el mismo.
Por estas ultimas razones, es que hace años las aplicaciones SIU traen como default este algoritmo para el almacenamiento de claves.
Pasaje de password existentes
Durante la importación de usuarios (guia-importacion-usuarios-cuentas.md) a medida que se van creando los mismos se almacenan sus claves, las cuales:
- Serán las que provengan de la aplicación origen junto con su algoritmo especifico
- Serán autogeneradas en caso de no ser provistas y hasheado con el algoritmo especificado en la configuración (parametro
password_algoritmo
)
Usando LDAP Bind
Para aquellos usuarios que necesiten autenticarse contra el LDAP vía Bind, se deberá asegurar que al momento de la importación de usuarios se incluya el password y algoritmo en el JSON requerido.
Sin embargo, en caso de suceder un cambio de clave para estos usuarios es probable que el mecanismo Bind devuelva un error authMethodNotSupported
debido a que la nueva clave será hasheada con Bcrypt.
Si se cuenta con acceso a los fuentes de la aplicación y la posibilidad de utilizar la funcion ldap_bind_s
, sería recomendable incorporar el cambio para transicionar hacia un almacenamiento de claves mas seguro.
También, existen tutoriales en internet para configurar el soporte BCrypt en OpenLdap (aquí y aquí). Lo que haría que la integración con usuarios/claves de SIU-Araí: Usuarios y el acceso vía bind de LDAP sean compatibles.