3 votes

Authentification avec Dovecot, SHA512, et sels

J'ai une base de données qui contient un nom d'utilisateur, un mot de passe et un sel de mot de passe. Le mot de passe est haché en utilisant SHA512.

Les données de ma base de données des utilisateurs ressemblent à ceci :

utilisateur = testuser

password_hash = 4acf9dc364843d1adfadfadf42de7d5707b791cc3ee8a2013f15efa8bdb

mot de passe_salt = QYhZ47zsQA=

J'essaie de m'authentifier sur cette base de données en utilisant Dovecot l'authentification sql et SSHA512. J'ai activé les débogages d'authentification et je vois ceci dans mail.log :

dovecot: auth-worker(8603): Debug: sql(testuser,22.22.22.22): query: SELECT username as user, password_hash as password, password_salt as salt FROM users WHERE username='testuser';
dovecot: auth-worker(8603): sql(testuser,22.22.22.22): Password mismatch
dovecot: auth-worker(8603): Debug: sql(testuser,22.22.22.22): SSHA512(testpassword) != '4acf9dc364843d1adfadfadf42de7d5707b791cc3ee8a2013f15efa8bdb'
dovecot: auth: Debug: client passdb out: FAIL#0111#011user=testuser#011salt=QYhZ47zsQA=
dovecot: auth: Debug: client in:   AUTH#0112#011PLAIN#011service=imap#011secured#011session=rZmPoRYOagBJ3Ukh#011lip=33.33.33.33#01    1rip=22.22.22.22#011lport=993#011rport=53098#011resp=AHJpY2hlZQBjY2NwdGFtdDNtcA== (previous base64 data may contain sensitive data)
dovecot: imap-login: Disconnected (auth failed, 2 attempts in 8 secs): user=<testuser>, method=PLAIN, rip=22.22.22.22, lip=33.33.33.33, TLS, session=<rZmPoRYOagBJ3Ukh>

J'ai également essayé de faire un test d'authentification qui échoue également :

$ sudo doveadm auth test testuser testpassword
passdb: richee auth failed
extra fields:
  user=testuser
  salt=QYhZ47zsQA=

Malheureusement, le Dovecot documentation ne couvre pas exactement la manière d'authentifier contre des hachages salés. J'ai l'impression que je dois dire à Dovecot que mon hachage de mot de passe est hex salé SHA512 et que mon sel est 8 octets base64. Cependant je n'ai aucune idée de comment dire à Dovecot d'utiliser le sel. Comment puis-je utiliser les sels lors de l'authentification de Dovecot ?

2voto

masegaloeh Points 17760

Pour le mot de passe SQL-lookup, Dovecot a une documentation supplémentaire ici . Pour plus d'informations, vous pouvez lire un fil de discussion sur SO : Comment générer de manière sécurisée des hachages SSHA256 ou SSHA512 en PHP ? . Dans cette réponse, je suppose que vous utilisez MySQL comme base de données.

Pour faire correspondre le schéma d'authentification de Dovecot et votre schéma d'authentification personnalisé, l'une des méthodes de votre requête doit être retournée. password qui contiennent

{SSHA512.HEX} HashofPasswordetSaltinHEXformat SaltinHEXformattoo

Avec la manipulation des chaînes de caractères de SQL, nous pouvons construire une requête comme celle-ci

SELECT CONCAT("{SSHA512.HEX}", `hex_password`, HEX(FROM_BASE64(`salt`))) AS password FROM mytable WHERE userid = '%u'

Mettez la requête ci-dessus dans password_query dans le fichier de configuration Dovecot-sql.

Dans la requête ci-dessus, nous construisons la chaîne spéciale via SQL concat . Bien sûr, parce que vous avez un format différent pour le sel et le hachage, nous devons le convertir en décodage en base-64 entonces Codage hexagonal .


Il semble que la discussion ici a été rebloguée sur cette page avec des informations plus complètes et plus détaillées.

0 votes

Cela aide beaucoup mais ça ne marche toujours pas. J'ai changé mon mot de passe et mon sel en hexadécimal. Mes erreurs ressemblent à ceci : pastebin.com/g9BumKDj

0 votes

Bonjour @TomFreezers, merci de clarifier la réponse. De la pastebin j'ai : (1) votre password était de 128 octets, (2) le hachage SHA512 est toujours de 64 octets, donc (3) votre sel a une longueur de 64 octets. Est-ce vrai ?

0 votes

Oui, dans ce cas, mon sel est "5db034e27bda3045ef9e6057eb4799ea9c05d35c6a3b361697b20689ce44b16d". J'utilise ruby pour créer le hachage du mot de passe et cette fonction ressemble à ceci : salt = SecureRandom.hex(32) hash = Digest::SHA512.hexdigest(password+salt) J'ai également confirmé que mon authentification fonctionne si j'utilise SHA512 sans sel en modifiant à la fois la façon dont le mot de passe est haché et la façon dont Dovecot s'attend à ce qu'il le soit.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X