SSHA (o traducido SHA1 con un poco de sal) es el método que utiliza Zimbra para cifrar las contraseñas de usuario.
A cada usuario dentro del árbol LDAP “ou=people,dc=miempresa,dc=com” se le añade un subschema o un objeto llamado “zimbraAccount” este subschema, también conocida como una objectClass, contiene más atributos pertenecientes al usuario. Entre estos atributos está el userPassword.
Veamos esta objectClass:
# cd /opt/zimbra/openldap/bin # ./ldapsearch -H ldap://zimbra.miempresa.com -x -b "uid=amperis,ou=people,dc=miempresa,dc=com" # extended LDIF # # LDAPv3 # base with scope subtree # filter: (objectclass=*) # requesting: ALL # # amperis, people, miempresa.com dn: uid=amperis,ou=people,dc=miempresa,dc=com zimbraMailTransport: lmtp:zimbra.miempresa.com:7025 zimbraMailDeliveryAddress: amperis@miempresa.com sn: Alejandro Moreno zimbraMailStatus: enabled zimbraId: 4ab82437-ff86-45f8-bbd0-76508e7527e4 mail: amperis@miempresa.com displayName: Alejandro Moreno uid: amperis objectClass: organizationalPerson objectClass: zimbraAccount objectClass: amavisAccount cn: Alejandro Moreno zimbraMailHost: zimbra.miempresa.com # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Veamos ahora el contenido de la objectClass para el usuario “amperis@miempresa.com”:
# su - zimbra # zmlocalconfig -s zimbra_ldap_password zimbra_ldap_password = asdfghjklñ # exit # ./ldapsearch -H ldap://zimbra.miempresa.com -w asdfghjklñ -D "uid=zimbra,cn=admins,cn=zimbra" -x "(&(objectClass=zimbraAccount) (mail=amperis@miempresa.com))" # extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (&(objectClass=zimbraAccount)(mail=amperis@miempresa.com)) # requesting: ALL # # amperis, people, miempresa.com dn: uid=amperis,ou=people,dc=miempresa,dc=com zimbraMailTransport: lmtp:zimbra.miempresa.com:7025 zimbraAccountStatus: active zimbraMailDeliveryAddress: amperis@miempresa.com sn: Alejandro Moreno zimbraMailStatus: enabled zimbraId: 4ab82437-ff86-45f8-bbd0-76508e7527e4 mail: amperis@miempresa.com displayName: Alejandro Moreno uid: amperis objectClass: organizationalPerson objectClass: zimbraAccount objectClass: amavisAccount cn: Alejandro Moreno zimbraMailHost: zimbra.miempresa.com zimbraLastLogonTimestamp: 20090126085702Z userPassword:: e1NTSEF9ajJrc3JGUGNkck9ZMVNJUHdQY2pBSXR1REw4aHlSbEE= zimbraPasswordModifiedTime: 20090127170140Z # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Podéis ver el resultado de “userPassword=e1NTSEF9ajJrc3JGUGNkck9ZMVNJUHdQY2pBSXR1REw4aHlSbEE=”. Esto no es la password encriptada, sino la password codificada en Base64.
Si decodificamos la Base64 tenemos:
decodeBase64(e1NTSEF9ajJrc3JGUGNkck9ZMVNJUHdQY2pBSXR1REw4aHlSbEE=) =
{SSHA}j2ksrFPcdrOY1SIPwPcj8ItuDL8hyRlA
Por tanto el userPassword es “j2ksrFPcdrOY1SIPwPcj8ItuDL8hyRlA” y está hasheado con el algoritmo SSHA. OpenLDAP proporciona varios métodos para cifrar la información:
MD5, SHA1, SSHA, CRYPTO, etc.
El algoritmo SSHA (salted-SHA) se basa en SHA1 añadiendo un token o salt al password del usuario.
userPassword = SHA1(password_usuario + token)
¿alguien se anima a bajarse los fuentes de Zimbra y decirme cual es este token?






Ningn usuario enviaron comentarios sobre " sha1 con un poco de sal "
Follow-up comment rss e enví un Trackback