RFC: 2865
Оригинал: Remote Authentication Dial In User Service (RADIUS)
Предыдущие версии: RFC 2058, RFC 2138
Категория: Проект стандарта
Дата публикации:
Авторы: , , ,
Перевод: Николай Малых

5.2. User-Password

Этот атрибут показывает пароль идентифицируемого пользователя или данные, введенные пользователем в ответ на пакет Access-Challenge. Пароль может передаваться только в пакетах Access-Request.

При передаче пакетов используется сокрытия паролей. Сначала к паролю добавляются NUL-символы до значения, кратного 16 октетам. Далее вычисляется необратимая хэш-функция MD5 для потока октетов разделяемого ключа и значения Request Authenticator. Полученное значение объединяется (логическая операция XOR) с первыми 16 октетами пароля и помещается в первые 16 октетов поля String в атрибуте User-Password.

Если размер пароля превышает 16, вычисляется вторая необратимая хэш-последовательность MD5 для потока октетов, состоящего из разделяемого ключа и результата шифрования первых 16 октетов пароля. Полученный результат объединяется (операция XOR) со вторым 16-октетным сегментом пароля и помещается в следующие 16 октетов поля String в атрибуте User-Password.

При необходимости эта операция повторяется для каждого 16-октетного сегмента пароля с использованием разделяемого ключа и результата предыдущей операции. Размер пароля не может превышать 128 символов.

Этот метод шифрования взят из книги "Network Security" (Kaufman, Perlman и Speciner) [9], стр. 109-110. Ниже приведено более детальное описание метода:

Вызывается функция MD5 с разделяемым ключом S 128-битовым псевдослучайным значением Request Authenticator (RA). Пароль делится на 16-октетные сегменты p1, p2 и т. д. с дополнением последнего сегмента NUL-символами для выравнивания по 16-октетной границе. Используется операция XOR (исключающее или) для хэш-функции и соответствующего сегмента пароля. Для второго и последующих сегментов вместо RA используется хэш-функция, полученная на предыдущем этапе. Зашифрованный пароль сохраняется как конкатенация промежуточных результатов c(1), c(2) и т. д. в поле String атрибута User-Password.

b1 = MD5(S + RA)       c(1) = p1 xor b1
b2 = MD5(S + c(1))     c(2) = p2 xor b2
       .                       .
       .                       .
       .                       .
bi = MD5(S + c(i-1))   c(i) = pi xor bi

На приемной стороне процесс выполняется в обратном порядке для получения исходного пароля.

Процесс восстановления пароля является корректным, несмотря на использование при его шифровании необратимых хеш- функций MD5. Прим. перев.

Формат полей атрибута User-Password показан ниже. Поля передаются слева направо.

 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
|     Type      |    Length     |  String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  • Type

    2

  • Length

    От 18 до 130.

  • String

    Строка типа String размером от 16 до 128 октетов (кратные 16 значения), содержащая зашифрованный пароль.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.