Введение
Сетевой протокол
В криптографии CRAM MD5 — это механизм аутентификации «вызов-ответ» (CRAM), основанный на алгоритме HMAC MD5. Являясь одним из механизмов, поддерживаемых простым уровнем аутентификации и безопасности (SASL), он часто используется в почтовом программном обеспечении как часть аутентификации SMTP, а также для аутентификации пользователей POP и IMAP, и в приложениях, реализующих LDAP, XMPP, BEEP и другие протоколы. Когда такому программному обеспечению требуется аутентификация по незашифрованным соединениям, CRAM MD5 предпочтительнее механизмов, передающих пароли в открытом виде, таких как LOGIN и PLAIN. Однако он не предотвращает подбор пароля методом перебора, поэтому менее эффективен, чем альтернативные механизмы, которые избегают использования паролей или применяют соединения, зашифрованные с помощью протокола Transport Layer Security (TLS).
In cryptography, CRAM MD5 is a challenge–response authentication mechanism (CRAM) based on the HMAC MD5 algorithm. As one of the mechanisms supported by the Simple Authentication and Security Layer (SASL), it is often used in email software as part of SMTP Authentication and for the authentication of POP and IMAP users, as well as in applications implementing LDAP, XMPP, BEEP, and other protocols. When such software requires authentication over unencrypted connections, CRAM MD5 is preferred over mechanisms that transmit passwords "in the clear," such as LOGIN and PLAIN. However, it can't prevent derivation of a password through a brute force attack, so it is less effective than alternative mechanisms that avoid passwords or that use connections encrypted with Transport Layer Security (TLS).
Слабые стороны
Нет взаимной аутентификации: клиент не проверяет сервер. Однако аутентификация SASL обычно выполняется через TLS-соединение, которое проверяет подлинность сервера. Слабое хранение паролей: некоторые реализации требуют доступа к паролям пользователей в открытом виде, в то время как другие (например, Dovecot) используют промежуточный этап процесса HMAC для хранения MD5-хеша пароля (в точности говоря, внутренних переменных HMAC – i key pad и o key pad). Такие реализации используют тот факт, что для вычисления md5(64-байтовая строка || другая строка) достаточно знать md5(64-байтовая строка) и другую строку (благодаря использованию схемы Меркла — Дамгарда в MD5; md5 внутреннее – это MD5 без обработки последнего блока). Поскольку i key pad и o key pad находятся в начале внутреннего и внешнего хеша HMAC и имеют длину 64 байта, этот факт может быть использован. Угроза обратимости: после перехвата успешного обмена протокола CRAM MD5 (например, с помощью Cain & Abel) возможна оффлайн-атака по словарю для восстановления пароля. Эта угроза неизбежна для любой схемы хеширования паролей, но более современные алгоритмы используют растяжение ключа для увеличения стоимости атаки в тысячу раз или более. Напротив, CRAM MD5-дайджесты можно вычислить, используя небольшое количество вычислительных ресурсов на специализированном оборудовании или даже на стандартных процессорах. Возможность использования прокси: в отличие от схемы согласования ключей с аутентификацией паролем (PAKE), CRAM MD5 не устанавливает общий секрет между двумя конечными точками, неизвестный перехватчику. Активный злоумышленник, находящийся посередине, может открыть соединение с сервером, получить запрос, передать этот запрос клиенту, получить ответ клиента и переслать этот ответ на сервер. Затем он может игнорировать дальнейшие сообщения клиента, выдавая себя за клиента перед сервером.
Стандарты
CRAM MD5 определен в документе стандарта IETF RFC 2195, который заменяет RFC 2095, выпущенный ранее в 1997 году. Эти фактические стандарты определяют CRAM MD5 как метод аутентификации для протоколов управления почтовыми ящиками POP и IMAP. CRAM MD5 является одним из методов аутентификации, поддерживаемых механизмом Simple Authentication and Security Layer (SASL), определенным в 2006 году в RFC 4422, который заменяет стандарт RFC 2222 1997 года. Internet Assigned Numbers Authority (IANA) поддерживает реестр механизмов SASL, включая CRAM MD5, для ограниченного использования. CRAM MD5 требуется для On Demand Mail Relay (ODMR), определенного в RFC 2645.
Неактуальная
20 ноября 2008 года было рекомендовано прекратить поддержку стандарта. В качестве альтернативы предлагается, например, SCRAM или SASL Plain с защитой TLS.