2015-11-18 3 views
4

Я использую файлы keytab для Linux-систем для аутентификации служб с помощью kerberos. Мне интересно, как этот пароль фактически хранится в этом файле keytab. Как мы знаем в/etc/passwd, пароли сохраняются после применения метода одностороннего хеширования - поэтому невозможно вычислить из него пароль открытого текста.Как пароль зашифрован в файл keytab?

Но как это делается в файле keytab? Процесс с использованием keytab каким-то образом должен знать пароль для аутентификации пользователя ?! Зашифрован ли он мастер-паролем, чтобы его можно было расшифровать?

Я использую это, чтобы создать файл Keytab:

$ ktutil 
ktutil: addent -password -p [email protected] -k 1 -e rc4-hmac 
Password for [email protected]: 
ktutil: wkt my_user.keytab 
ktutil: quit 

С этой Keytab я могу получить KRBTGT без ввода пароля. При создании keytab связь с AD/KDC отсутствует (поэтому нет общего секрета, который можно было бы добавить для подписания или что-то еще).

Так как же пароль зашифрован в keytab? Если это не хэширующий алгоритм - можно ли его расшифровать?

ответ

6

В общем пароле на основе ключ Kerberos, происходит от применения алгоритма конкретных ключевой функции выведения к пользовательскому паролю, и использует пользователь основного имя в виде соли (так что два главных с тот же пароль не будет иметь тот же ключ). Используемые фактические функции деривации ключа определены в RFC 3961 и RFC 3962 , однако профиль RC4 определен в другом месте (от Microsoft).

Ключевой вывод - это односторонняя функция, поэтому невозможно «расшифровать» ключ.

+2

И этот производный ключ хранится (как есть) в этой ключевой строке? И этот производный ключ может использоваться (как есть) для аутентификации пользователя? Я не вижу реального преимущества по сравнению с хранением текстовых паролей в конфигурационных файлах ... Au contraire - я вижу, что люди, думающие, что файлы keytab являются «безопасным» способом хранения паролей, и они используют их без достаточной осторожности ... – slash4

+3

Протокол Kerberos основан на симметричной (общий ключ) криптографии; тот факт, что ключи пользовательских принципов обычно получают из паролей, является деталью реализации. Конечно, вы * можете * просто сохранить пароль, но тогда реализация должна будет извлекать ключ каждый раз, когда он разговаривает с KDC. Keytab только настолько же безопасен, как и элементы управления доступом (такие же, как файл с простым паролем); Я не думаю, что кто-либо когда-либо делал вид, что он обращается иначе. – frasertweedale

+3

@frasertweedale Аргулярная соль всегда пуста. К сожалению, соль для AES, используемая MS, связана с RFC. См. [Здесь] (http://mailman.mit.edu/pipermail/kerberos/2015-July/020908.html). –

 Смежные вопросы

  • Нет связанных вопросов^_^