Як знайти алгоритм хешування, який використовується для хеш-паролів?


11

У мене є робочий пароль і я бачу хеш (/ etc / passwd). Як знайти алгоритм хешування, який використовується для хешування пароля, не намагаючись вручну застосовувати різні алгоритми, поки я не знайду відповідність?


1
Який варіант Unix ви використовуєте?
Kusalananda

3
Я дуже здивований, що ви можете побачити хеш /etc/passwd. Я думав, що всі варіанти Unix / Linux перейшли до розколу з /etc/shadowроками тому. (Я знаю, що такі системи досі підтримують хеші, passwdале я не знаю жодної утиліти, яка б їх більше не розміщувала. Можливо, вбудована система?
roaima

Це OpenWrt Backfire 10.03. Хеші все ще зберігаються /etc/passwdтут. Це, однак, не змінює суть питання. Робить це?
Дорін Ботан

1
Тільки для запису: BSD мають два файли DB Berkeley, roaima. Він все ще розділений, але це не так, /etc/shadowі вони не мають файлу під таким ім'ям.
JdeBP

Відповіді:


27

Це задокументовано на сторінці crypt(3)"s man manpage" , яку ви можете знайти через shadow(5)manpage , або passwd(5)s . Ці посилання підходять для сучасних систем на базі Linux; опис є:

Якщо сіль - це символьна рядок, що починається з символів "$ id $", після чого рядок, необов'язково закінчується символом "$", то результат має вигляд:

$id$salt$encrypted

id ідентифікує метод шифрування, який використовується замість DES, і потім визначає, як інтерпретується решта рядка пароля. Наступні значення id підтримуються:

ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)

Blowfish, також відомий як bcrypt, також визначено префіксами 2, 2b, 2xі 2y(див документації PassLib в ).

Отже, якщо хешований пароль зберігається у наведеному вище форматі, ви можете знайти алгоритм, який використовується, переглянувши ідентифікатор ; в іншому випадку це cryptалгоритм DES за замовчуванням (з 13-символьним хешем), або "великий" cryptDES (розширений для підтримки паролів 128 символів, хешами довжиною до 178 символів), або розширений BSDI DES (з _префіксом після цього хеш з 19 символами).

У деяких дистрибутивах використовується libxcrypt, який підтримує та документує ще кілька методів:

  • y: yescrypt
  • gy: gost-yescrypt
  • 7: скрипт
  • sha1: sha1crypt
  • md5: SunMD5

Інші платформи підтримують інші алгоритми, тому перевірте cryptтам сторінку. Наприклад, OpenBSDcrypt(3) підтримує лише Blowfish, який він ідентифікує за допомогою ідентифікатора “2b”.


2
Паролі на базі DES - це BTW завжди 13 символів і складаються з буквено-цифрових символів, а також .і /. Перші 2 символи - сіль, а інші 11 - хеш-значення (сорт). І це єдиний із підтримуваних алгоритмів, cryptякий настільки слабкий, що ви не можете компенсувати це, вибравши більш міцний пароль.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.