Какова максимальная длина пароля в системе Unix / Linux?
SHA-512 — лучший из доступных хэшей для использования, который предлагает glibc. Я не знаю, насколько сильна blowfish, но она не является частью glibc и поэтому доступна только в определенных дистрибутивах, которые ее добавили. SHA-512 производит 512-битные ключи или 2 ^ 512 возможных комбинаций, прежде чем можно будет ожидать коллизию, и с достаточно сложным паролем, кластеру компьютеров потребуется очень очень много времени, чтобы найти либо действительный пароль, либо коллизию в хэше. ,
Кроме того, если у вас есть хеш, который не начинается с $num$ тогда вы используете DES, и его длина не должна превышать 8 символов. Я считаю, что старые системы, которые используют DES, или, по крайней мере, некоторые из них, будут принимать пароль любого размера, но использовать только первые 8 символов. Это означает, что если вы установите пароль mybigbigapple а кто-то использует пароль mybigbigcity то он будет допущен, потому что DES будет использовать только mybigbig и все, что после этого будет удалено .
Итак, вы знаете, что Ubuntu 8.04, выпущенная в апреле 2008 года, использовала хеши MD5. Ubuntu от 8.10, выпущенный в октябре 2008 года, и все версии с тех пор используют хэши SHA-512. Я не знаю, как далеко до апреля 2008 года, но я считаю, что в течение нескольких лет, если не больше, в большинстве дистрибутивов использовались хэши.
Текущие версии Ubuntu 12.04 и 14.04 LTS (долгосрочные выпуски поддержки), по-видимому, используют SHA-512 по умолчанию, что видно из $6$ добавленного к хешу в файле /etc /shadow:
Теперь длина ключа или пароля, разрешенная для любого алгоритма хеширования, не единственная, чтобы определить, какой размер пароля вам разрешено иметь. Другой интересный вопрос — как пишется программа и какую длину программа будет поддерживать сама. Все современные программы passwd и, вероятно, большинство функций crypt(3) в Linux. crypt for long long (поскольку по крайней мере MD5 использовался и, возможно, до этого) позволял указатели символов для фактического ключа. Это означает, что единственное ограничение на то, как долго ключ будет приниматься, основано на том, сколько оперативной памяти эта программа имеет для него, но, по всей вероятности, это, вероятно, намного дольше, чем любой пароль, который любой человек сможет запомнить (миллионы символов?).
Это должно ответить на ваш вопрос о том, как долго может быть пароль. Надеюсь, я помог.
- Страница справочника crypt(3) (Ubuntu 14.04)
- Страница руководства SHADOW (5) (Ubuntu 14.04)
- en.wikipedia.org/wiki/Crypt_(Unix)
- en.wikipedia.org/wiki/Password_strength
- en.wikipedia.org/wiki/Md5
- en.wikipedia.org/wiki/Blowfish_(cipher)
- en.wikipedia.org/wiki/SHA-1
Какова максимальная длина пароля в системе Unix / Linux?
Какова максимально допустимая длина пароля в системе Unix / Linux?
лучший вопрос может быть: что я могу разумно ожидать, чтобы кто-то печатал? Если лимит составляет 40, и вы превышаете его, вы делаете что-то не так. msw 13 лет назад 0
4 ответа на вопрос
Если ваша система использует криптографический хеш для хранения паролей, например, MD5, SHA1 и т. Д., То сама длина пароля не ограничена, поскольку эти хеш-коды могут быть созданы с любым количеством данных. Хеш MD5 или SHA1 может быть создан для всего жесткого диска, и это обычно делается для криминалистических целей, потому что, если хотя бы один бит будет слегка изменен, у вас будет совсем другой хеш, и, следовательно, вы сможете проверить, изменились ли данные. Это означает, что вы можете использовать те же самые алгоритмы, чтобы проверить, были ли данные подделаны. Linux (по крайней мере, текущий Linux) использует те же хеш-функции. Он запросит у вас пароль, а затем создаст криптографический хэш пароля, который вы дали, и проверите, соответствует ли этот хэш сохраненному паролю.
Есть небольшой недостаток в использовании этих хешей, который заключается в том, что хеш имеет конечный размер, например, хеш MD5 равен 128 битам. Это означает, что хеш MD5 имеет только 2^128 или 340,282,366,920,938,463,463,374,607,431,768,211,456 возможные комбинации. Теперь, когда это большое число, это означает, что вы можете иметь то, что они называют коллизией хешей, когда у вас есть два разных элемента или ключа, которые производят один и тот же хеш. Теоретически, чем больше размер ключа, тем ниже вероятность коллизии и тем больше времени требуется для перебора пароля, но это строго оценивает энтропию и продолжительность ее действия. МОЖЕТпринять, но есть также шанс, что первая попытка записи может быть той, которая соответствует, даже если это коллизия хешей. Вообще говоря, вам действительно безопаснее использовать хеш, который имеет больший размер ключа, потому что, предположим, что это MD5, шансы на совпадение первого пароля из 340,282,366,920,938,463,463,374,607,431,768,211,456 возможных совпадений крайне маловероятны. Также выберите хороший пароль, потому что многие взломщики будут пытаться использовать списки слов, списки имен и мутации этого списка (то есть, если слово «рыба», то они будут пытаться fish1234 и fish!@#$ т. Д.), Прежде чем они будут полагаться на взлом пароля.
Чтобы определить, использует ли ваша система криптографические хеши для хранения паролей, посмотрите на /etc/shadow файл (при условии, что у вас есть root-доступ). Каждая строка отформатирована как user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved . Поле пароля может начинаться с $num$ (т. Е. Хэш md5 в поле пароля выглядит так, как $1$01234567$b5lh2mHyD2PdJjFfALlEz1 он начинается $1$ ). Если это начинается с этого, то это означает, что ваша система использует криптографический хеш. Формат поля пароля во всех современных системах заключается в том, что вы используете криптографические хеши. $id$salt$hash . Идентификатор указывает, какой тип криптографического хэша вы используете. Соль — это случайно сгенерированная строка, которая соединяется с ключом (простым текстовым паролем) для защиты от предварительно вычисленных таблиц известных хэшей. Хеш — это криптографический хеш, созданный из соли и ключа / пароля. Если ваше поле пароля начинается с $num$
Итак, вы знаете, цифры означают это:
- $1$ означает, что вы используете MD5
- $2$ или $2a$ означает, что вы используете blowfish
- $5$ означает, что вы используете SHA-256
- $6$ означает, что вы используете SHA-512
SHA-512 — лучший из доступных хэшей для использования, который предлагает glibc. Я не знаю, насколько сильна blowfish, но она не является частью glibc и поэтому доступна только в определенных дистрибутивах, которые ее добавили. SHA-512 производит 512-битные ключи или 2 ^ 512 возможных комбинаций, прежде чем можно будет ожидать коллизию, и с достаточно сложным паролем, кластеру компьютеров потребуется очень очень много времени, чтобы найти либо действительный пароль, либо коллизию в хэше. ,
Кроме того, если у вас есть хеш, который не начинается с, $num$ то вы используете DES, и его длина не должна превышать 8 символов. Я считаю, что старые системы, которые используют DES, или, по крайней мере, некоторые из них, будут принимать пароль любого размера, но использовать только первые 8 символов. Это означает, что если вы установите свой пароль, mybigbigapple и кто-то использует пароль, mybigbigcity то он будет разрешен, потому что DES будет использовать только mybigbig и все, что после этого будет отброшено.
Итак, вы знаете, что Ubuntu 8.04, выпущенная в апреле 2008 года, использовала хеши MD5. Ubuntu от 8.10, выпущенный в октябре 2008 года, и все версии с тех пор используют хэши SHA-512. Я не знаю, как далеко до апреля 2008 года, но я считаю, что в течение нескольких лет, если не больше, в большинстве дистрибутивов использовались хэши.
Текущие версии Ubuntu 12.04 и 14.04 LTS (долгосрочные выпуски поддержки), по-видимому, используют SHA-512 по умолчанию, что видно по $6$ префиксу к хешу в файле / etc / shadow:
Теперь длина ключа или пароля, разрешенная для любого алгоритма хеширования, не единственная, чтобы определить, какой размер пароля вам разрешено иметь. Другой интересный вопрос — как пишется программа и какую длину программа будет поддерживать сама. Все современные программы passwd и, вероятно, большинство crypt(3) функций в Linux. crypt for long long (поскольку по крайней мере MD5 использовался и, возможно, до этого) позволял указатели символов для фактического ключа. Это означает, что единственное ограничение на то, как долго ключ будет приниматься, основано на том, сколько оперативной памяти эта программа имеет в своем распоряжении, но, по всей вероятности, это, вероятно, намного дольше, чем любой пароль, который любой человек мог бы запомнить (миллионы символов?).
Это должно ответить на ваш вопрос о том, как долго может быть пароль. Надеюсь, я помог.
- Страница справочника crypt (3) (Ubuntu 14.04)
- Страница руководства SHADOW (5) (Ubuntu 14.04)
- en.wikipedia.org/wiki/Crypt_(Unix)
- en.wikipedia.org/wiki/Password_strength
- en.wikipedia.org/wiki/Md5
- en.wikipedia.org/wiki/Blowfish_(cipher)
- en.wikipedia.org/wiki/SHA-1
Следует отметить, что алгоритм crypt () устарел уже более десяти лет. Независимо от длины пароля crypt () он усекается до 8 символов. В сочетании с очень маленьким пространством клавиш 12-битной соли функция crypt () стала совершенно небезопасной. В качестве ссылки, вот статья о том, как 1 миллион паролей Gawker был раскрыт из-за использования crypt () в 2010 году: [https://www.lightbluetouchpaper.org/2010/12/15/the-gawker-hack -Как на миллион-пароли-были потерянными /] (https://www.lightbluetouchpaper.org/2010/12/15/the-gawker-hack-how-a-million-passwords-were-lost/) cremefraiche 7 лет назад 1
Это зависит от того, какой модуль аутентификации используется. В современных системах Linux нет максимального ограничения на длину пароля. Некоторые устаревшие системы могут иметь ограничения, налагаемые их системой хранения паролей — популярными максимумами являются 8, 40 и 255.