Синхронизация NTP не происходит постоянно

Я думаю, что это невозможно.

Как говорит @Eir Nym, вы совершенно очевидно не можете перевести, например, хэш MD5 -пароля в хэш SHA -256, не зная пароль.

Однако вы думаете, что сможете перевести SHA -256 хеш (согласно crypt (3 ))в SHA -256 хэш (согласно OpenLDAP ):, безусловно, это просто вопрос идентификации соли и хеша. в одном формате и переупорядочивая их в формат, ожидаемый другим. Нет? Что, не так?!

В OpenLDAP формат атрибута userPassword, хотя и не вполне задокументирован, относительно прост :это фиксированная -длина хэш пароля, за которым следует соль (, см., например, contrib/slapd-modules/passwd/sha2в OpenLDAP источники). Это также очевидно в примечаниях, таких как этот OpenLDAP FAQ -o -matic статья , в которой показано, как сгенерировать {SSHA}хэш из пароля + соли.

Однако для систем, использующих шифрование (3 ), вы увидите «хэши паролей». формы

$id$salt$hash

, где $5$указывает SHA -256, $6$указывает SHA -512 и так далее. То hashэлемент, который является закодированной в base64 формой некоторого функция ключа, соли и (в некоторых вариантах )номер шифрования раундов, но фактическая функция... не задокументирована.

  • Страница Википедии о склепе (3)упоминает, что «со временем были введены различные алгоритмы»
  • .
  • Указывает на «Хеширование паролей». Конкурс» спецификация (PHC ), которая сужает общий формат «хэша». строка, но не так много, как вы надеетесь. Это даже не окончательно определить, какой вариант base64 использует строка (кажется, но признает, что символы [.-]могут появляться в строка base64 без указания, что это такое ).
  • Библиотека библиотека признает некоторую неразбериху ('Все вышеперечисленное является догадками на основе изучения существующих хэшей и реализаций ОС» )и рекомендует формат PHC.
  • A linuxquestions.org вопрос указывает, что соответствующая кодировка base64 является своеобразной.

Итак, мы можем посмотреть на исходники glibc для склепа. Там мы обнаруживаем (в crypt_util.c), что base64 алфавит действительно нечетный, используя "./0-9A-Za-b", а не более обычный (и PHC -указанный)"A-Za-z0-9+/"(с редкими вариантами в последние два символа ). Бесполезно, но мы могли бы справиться, если бы это было единственная разница.

Однако функция sha256-crypt.cв этой библиотеке (, например )берет ключ и соль и делает что-то очень странное и длинное -запутанное с ними для получения значения hash. я бы не стал рисковать мнение о том, разумно ли то, что он делает,но это точно не простой.

Это означает, что хотя crypt (3)$5$и OpenLDAP ‘SHA -256’ хэши на первый взгляд с использованием одного и того же криптографического примитива, на самом деле они используют его настолько по-разному, что они составляют разные хэш-функции , так что, как и в случае с точкой в наверху, вы не можете перевести одно в другое, не зная пароль. То же самое можно сказать и о паролях $6$/SHA -512.

Это очень раздражает.


Примечание в скобках:Как оказалось, можно преобразовать «хэши» $1$/SMD5 между форматом crypt (3 )и форматом OpenLDAP :

.

$1$salt$hash

соответствует

'{SMD5}' + hash + salt

где +— простая конкатенация строк. Но мы, вероятно, не должны использовать Хэши MD5 больше не используются, так что это не очень помогает.

Также обратите внимание, что вы можете перенести свои крипто-(3 )хэша в OpenLDAP без изменений, используя

{CRYPT}$1$salt$hash

если ваша libc совместима(что обычно бывает, если OpenLDAP работает в Linux ), но OpenLDAP не будет генерировать новые пароли таким образом, так что это -улица с односторонним движением.

0
16.04.2021, 12:24
0 ответов

Теги

Похожие вопросы