DIGEST-MD5

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:09, 26 декабря 2017.

DIGEST-MD5 - обязательный механизм идентификации для серверов LDAP v3 RFC 2829). Поскольку использование SASL является частью LDAP v3 (RFC 2251), серверы, поддерживающие только LDAP v2, не поддерживают Digest-MD5. Механизм Digest-MD5 описан в RFC 2831. В Digest-MD5 сервер LDAP отправляет данные, которые включают различные параметры проверки подлинности, которые он готов поддерживать, плюс специальный знак для клиента LDAP. Клиент отвечает путем отправки зашифрованного ответа, который указывает параметры проверки подлинности, которые он выбрал. Ответ зашифровывается таким образом, чтобы было видно, что клиент знает свой пароль. Затем сервер LDAP расшифровывает и проверяет ответ клиента.

Использование

Чтобы использовать механизм проверки Digest-MD5, нужно установить свойства среды проверки подлинности следующим образом.

  • Установить строку «DIGEST-MD5».
  • Установить главное имя.

Это специфичный для сервера формат. Некоторые серверы поддерживают формат идентификатора пользователя входа, например, определенный для экранов входа в систему Unix или Windows. Другие принимают отличительное имя. Другие используют форматы идентификаторов авторизации, определенные в RFC 2829. В этом документе RFC, название должно быть в строке "DN:", за которым следует полное различающееся имя объекта проверки подлинности, либо в строке "у:". Далее нужно ввести код пользователя. Некоторые серверы принимают несколько форматов.

  • Установить основной пароль (например, «mysecret»). Он имеет тип java.lang.String, char array.

[Источник 1]

Принцип работы

Модуль Digest -MD5 позволяет использовать алгоритм из программы Perl. Алгоритм принимает на входе сообщение произвольной длины и производит в качестве вывода 128-битный «отпечаток пальца» или «дайджест сообщения» на входе. Важно отметить, что алгоритм MD5 не такой сильный, как раньше. С 2005 года было просто генерировать различные сообщения, которые производят один и тот же дайджест MD5. Тем не менее, кажется трудным генерировать сообщения, которые производят данный дайджест, но, вероятно, целесообразно будет перейти к более сильным алгоритмам для приложений, которые зависят от дайджеста, чтобы однозначно идентифицировать сообщение. Модуль Digest- MD5 предоставляет процедурный интерфейс для простого использования, а также объектно-ориентированный интерфейс, который может обрабатывать сообщения произвольной длины и которые могут напрямую читать файлы. [Источник 2]

Определение области

Область определяет пространство имен, из которого выбран объект аутентификации (значение свойства Context.SECURITY_PRINCIPAL). Сервер может иметь несколько областей. Например, сервер для университета может быть настроен на наличие двух сфер, один для его учеников, а другой для преподавателей. Конфигурация Realm выполняется администратором каталога. Некоторые каталоги имеют единую область по умолчанию. Например, i-Planet Directory Server, v5, использует полное имя хоста машины как область по умолчанию. В аутентификации Digest-MD5 необходимо пройти аутентификацию в определенной области. Если область не будет указана, то будет использоваться любая из областей, предлагаемых сервером. Пользователь может использовать следующее свойство среды проверки подлинности, чтобы указать область: java.naming.security.sasl.realm. Должна быть установлена главная область. Это строка, зависящая от развертывания и / или учитывающая регистр сервера. Он определяет область или домен, из которого происходит имя участника (SECURITY_PRINCIPAL) должен быть выбран. Если эта область не соответствует одной из областей, предлагаемых сервером, проверка подлинности завершается неудачно.

Проверка подлинности

Механизм SASL Digest-MD5 также поддерживает создание согласованного уровня безопасности после успешной аутентификации. Уровень безопасности может обеспечивать целостность и защиту конфиденциальности. Уровень безопасности определяется качеством защиты (qop), который согласовывается с сервером во время аутентификации. Пользователь указывает качество защиты, с которым может справиться его приложение, сначала перечисляя наиболее желанный уровень безопасности. Например, если приложение предпочитает защиту конфиденциальности, но может жить с защитой целостности, тогда его пользователь должен указать «auth-conf, auth-int» как значение свойства «javax.security.sasl.qop». Если сервер поддерживает только аутентификацию, аутентификация завершится неудачно; в противном случае в зависимости от поддержки сервера будет выбрана конфиденциальность или целостность, причем приоритет отдается конфиденциальности. Digest-MD5 поддерживает пять разных шифров для защиты конфиденциальности. Выбранный шифр согласовывается между клиентом и сервером во время аутентификации. Эти пять шифров отображаются на «высокие», «средние» и «низкие» настройки, определенные для свойства среды «javax.security.sasl.strength»:

  • RC4 (40 bit)

Шифр RC4 с 40-битным ключом.

  • RC4 (56 bit)

Шифр RC4 с 56-битным ключом.

  • RC4 (128 bit)

Шифр RC4 с 128-битным ключом.

  • DES

Шифр стандарта шифрования данных (DES) в режиме цепочки блоков шифрования (CBC) с 56-битным ключом.

  • Triple DES

Шифр «тройной DES» в режиме CBC с EDE с одним и тем же ключом для каждого этапа E (так называемый «режим двух клавиш») для общей длины ключа 112 бит.

В протоколе Digest-MD5 сервер отправляет клиенту список шифров, который он поддерживает. Клиент должен выбрать шифр из этого списка. Выбор определяется настройкой свойства среды javax.security.sasl.strength и шифров, настроенных на платформе клиента. Например, предположим, что сервер предлагает все пять шифров, и клиент не установил свойство «javax.security.sasl.strength». Это фактически означает, что клиент запрашивает сильные стороны в порядке предпочтения «высокий», «средний» и «низкий». Если на клиентской платформе имеется тройной DES или RC4 с 128 битами, то это будет выбранный шифр. В противном случае, если DES или RC4 с 56 битами доступны на платформе клиента, тогда он будет выбран. И так далее. Если клиент не поддерживает ни один из перечисленных шифров, аутентификация SASL не выполняется. Поставщик LDAP использует расширение криптографии Java (JCE) для поддержки шифрования. [Источник 3]

Указание максимального размера буфера приема

При запросе целостности или защиты конфиденциальности пользователь может указать максимальный размер буфера приема для использования с помощью свойства среды javax.security.sasl.maxbuffer. Если максимум не будет указан, по умолчанию используется значение Digest-MD5 по умолчанию 65536 байт.

Источники

  1. Digest-MD5 Authentication Mechanism // dovecot URL:https://wiki.dovecot.org/Authentication/Mechanisms/DigestMD5 (дата обращения 08.12.2017)
  2. Digest::MD5 // perldoc.perl.org URL:http://perldoc.perl.org/Digest/MD5.html (дата обращения 08.12.2017)
  3. Digest-MD5 Authentication // URL:https://docs.oracle.com/javase/jndi/tutorial/ldap/sec.. (дата обращения 08.12.2017)