WikiDer > CRAM-MD5
В криптография, CRAM-MD5 это проверка подлинности запрос-ответ механизм (CRAM) на основе HMAC-MD5 алгоритм. Как один из механизмов, поддерживаемых Уровень простой аутентификации и безопасности (SASL), он часто используется в почтовом программном обеспечении как часть SMTP аутентификация и для аутентификации Поп и IMAP пользователей, а также в приложениях, реализующих LDAP, XMPP, BEEP, и другие протоколы.
Когда такое программное обеспечение требует аутентификации по незашифрованным соединениям, CRAM-MD5 предпочтительнее механизмов, передающих пароли «в открытом виде», таких как АВТОРИЗОВАТЬСЯ
и ПРОСТОЙ
. Однако он не может предотвратить получение пароля через атака грубой силой, поэтому он менее эффективен, чем альтернативные механизмы, избегающие паролей или использующие соединения, зашифрованные с помощью Безопасность транспортного уровня (TLS).
Протокол
Протокол CRAM-MD5 включает в себя единый цикл запроса и ответа и инициируется сервером:
- Задача: сервер отправляет base64-кодированная строка для клиента. Перед кодированием это могла быть любая случайная строка, но стандарт, который в настоящее время определяет CRAM-MD5, говорит, что она имеет формат
ID сообщения
значение заголовка электронной почты (включая угловые скобки) и включает произвольную строку случайных цифр, a отметка времени, а сервер полное доменное имя. - Ответ: клиент отвечает следующей строкой.
- Задача декодируется с помощью base64.
- Декодированный запрос хешируется с использованием HMAC-MD5, с поделился секретом (обычно пароль пользователя или его хеш) в качестве секретного ключа.
- Хешированный запрос преобразуется в строку шестнадцатеричных цифр в нижнем регистре.
- В имя пользователя и пробел добавляются к шестнадцатеричным цифрам.
- Затем объединение кодируется в кодировке base64 и отправляется на сервер.
- Сравнение: сервер использует тот же метод для вычисления ожидаемого ответа. Если данный ответ и ожидаемый ответ совпадают, то аутентификация прошла успешно.
Сильные стороны
Односторонний хэш и новый случайный вызов обеспечивают три типа безопасности:
- Другие не могут дублировать хеш, не зная пароля. Это обеспечивает аутентификацию.
- Другие не могут воспроизвести хэш - это зависит от непредсказуемой проблемы. Это иначе называют свежестью или предотвращение повторного воспроизведения.
- Наблюдатели не узнают пароль; это называется секретностью.
Недостатки
- Нет взаимная аутентификация: клиент не проверяет сервер. Однако аутентификация SASL обычно выполняется через TLS соединение, которое проверяет идентичность сервера.
- Слабое хранилище паролей: некоторые реализации требуют доступа к паролям пользователей в виде обычного текста, в то время как другие (например, Dovecot) используйте промежуточный шаг процесса HMAC для хранения MD5-хэш пароля (строго говоря о внутренних переменных HMAC i_key_pad и o_key_pad).[1][2] Такие реализации используют то, что для вычисления md5 (something_with_64_bytes || something_else) необходимо знать только md5_internal (something_with_64_bytes) и something_else (из-за Меркл-Дамгард использование в MD5; md5_internal - это md5 без последнего блока). Поскольку i_key_pad и o_key_pad находятся в начале внутреннего и внешнего хэша HMAC и имеют длину 64 байта, этот факт можно использовать.
- Угроза обратимости: оффлайн словарная атака восстановить пароль возможно после захвата успешного обмена протоколом CRAM-MD5 (например, с помощью Каин и Авель). Эта угроза неизбежна в любой схеме хеширования паролей, но более современные алгоритмы используют растяжение ключа для увеличения стоимости атаки в тысячу и более раз. И наоборот, дайджесты CRAM-MD5 могут быть рассчитаны с использованием очень небольшого количества вычислительных ресурсов на выделенном оборудовании или даже просто стандартного Процессоры.
- Прокси-способность: в отличие от соглашение о ключах с аутентификацией паролем (PAKE), CRAM-MD5 не устанавливает секрет, совместно используемый двумя конечными точками, но неизвестный перехватчику. Активный человек посередине таким образом, может открыть соединение с сервером, получить запрос, предложить этот запрос клиенту, получить ответ клиента и переслать этот ответ серверу. Теперь он может отбрасывать дальнейшие сообщения клиента, выдавая себя за клиента на сервере.
Стандарты
CRAM-MD5 определяется Документ об отслеживании стандартов IETF RFC 2195, который заменяет RFC 2095, начиная с 1997 года. Эти де-факто стандарты определить CRAM-MD5 как метод аутентификации для протоколов управления почтовыми ящиками Поп и IMAP.
CRAM-MD5 - один из методов аутентификации, поддерживаемых Уровень простой аутентификации и безопасности (SASL), определенная в 2006 г. RFC 4422, который заменяет стандарт 1997 г. RFC 2222.
В Управление по присвоению номеров в Интернете (IANA) ведет реестр механизмов SASL,[3] включая CRAM-MD5, для ограниченного использования.
CRAM-MD5 требуется для Ретранслятор почты по запросу (ODMR), определенный в RFC 2645.
Устаревший
Было рекомендовано отказаться от стандарта 20 ноября 2008 г. В качестве альтернативы он рекомендует, например, КАТИСЬ или же SASL Равнина защищена TLS вместо.[4]
Смотрите также
Рекомендации
- ^ "функция verify_credentials". Исходный код Dovecot 2.0. Получено 23 января 2014.
- ^ "файл hmac-md5.c". Исходный код Dovecot 2.0. Получено 23 января 2014.
- ^ «Простые механизмы аутентификации и уровня безопасности (SASL)». Реестры протоколов. IANA.
- ^ Зейленга
, Курт. «CRAM-MD5 в Исторический». tools.ietf.org. Получено 2020-12-05.