Тред вы не дочитали, они там разобрались.
Попробуем уйти в детали.
CRAM-MD5 работает так:
- сервер передает в открытом виде параметр m
- клиент вычисляет такую вот штуку
HMAC(K,m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m)), где K - это пароль (на самом деле там есть еще детали, но несущественные для нас) и передает серверу. H - это MD5, а opad и ipad - известные константы, ∥ - просто присоединение, а ⊕ - XOR.
- сервер делает то же самое, только с паролем клиента, который хранится на сервере
- сервер сравнивает то, что вычислил и то, что получил от клиентаТак вот, на сервере должен хранится пароль в открытом виде, иначе эту HMAC не вычислить.
Довекот делает хитрее, он заранее выполняет некоторую часть вычислений, которая не зависит от меняющегося в каждой сессии параметра m. Но если злоумышленник украдет этот довекотовский хеш, то, получив от сервера число m, он проделает оставшуюся часть вычислений и успешно авторизуется, без всякого брутфорса. Если же он украдет файл юниксовых паролей (MD5 с солью), то ему придется делать брутфорс, чтобы определить пароль. Видите разницу?
> схему в студию как вы будете зная хеш на стороне сервера проходить авторизацию
конкретную схему я описать не могу, нужно разбираться, что именно dovecot вычисляет, но поверьте, имея на руках файл с хешами, злоумышленник разберется
Если вас все это не убеждает, то у меня больше нет аргументов, спросите у кого-нибудь еще. Все уже разжевал.