Очень простая схема генерации пароля; это безопасно? - PullRequest
3 голосов
/ 20 января 2010

Редактирование / уточнение: я имею в виду генерацию пароля, как в «детерминистически генерируйте пароли для вашего собственного использования (например, для регистрации в веб-сервисах), основываясь на некоторых секретных данных и некоторых специфичных для сайта данных»

Я беру дайджест MD5 о конкатенации моего мастер-пароля и (не секретной) специфичной для сайта строки. Затем я беру первые 16 цифр шестнадцатеричного представления.

Преимущества такой упрощенной схемы:

  • Используется везде, где доступен MD5
  • Не нужно доверять расширению Firefox или чему-либо еще, чтобы сгенерировать пароль для вас

Есть ли у него какие-то скрытые уязвимости? Очевидно, что если мастер скомпрометирован, мне не повезло.

(Примечание: Конечно, использование шестнадцатеричных цифр является субоптимальной энтропией на символ, но кого это волнует, если пароль будет длиннее, чтобы его компенсировать?)

#!/bin/bash

master=myMasterPassword
echo "$master$1" | md5sum | head -c16

Ответы [ 4 ]

2 голосов
/ 21 января 2010

Уже есть системы, которые используют это, такие как SuperGenPass . В общем, если ваша хеш-функция защищена от атак с прообразом (для этой цели я бы предложил использовать что-то другое , чем MD5), вы, вероятно, в порядке.

Однако для этой цели существует лучшая конструкция: HMAC . Он построен на основе обычной хеш-функции, но имеет доказательства своей защиты от различных атак, даже ограниченных атак с прообразом. В RFC также есть раздел, явно посвященный использованию усеченного HMAC.

1 голос
/ 20 января 2010

От кого вы защищаетесь? Каково влияние компромисса? Как вы защищаете свой masterPassword, особенно если он введен в этот скрипт.

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

Еще одним ограничением этого является сайт, на котором есть правила составления пароля. Смешанные буквы верхнего и нижнего регистра, требуют использования знаков препинания, минимального количества цифр или букв, которых у вас нет в MD5 для этого конкретного сайта. Также некоторые сайты имеют максимальную длину пароля, мой банковский сайт имеет максимальную длину пароля 8, при использовании только 16 возможных символов вы значительно сократили возможное количество паролей.

Мне кажется, что это нормально для сайтов с низким уровнем безопасности, где компромисс не так уж и плох. Я бы не стал доверять этому из-за доступа к моему банковскому сайту или доступа к моим рабочим сайтам. Вещи, которые меня волнуют.

Я бы доверял своим паролям slashdot, facebook, flickr и т. Д.

Я использую решение: Безопасный пароль , которое рекомендуют доверенных лиц Я посылаю свою базу паролей по электронной почте и устанавливаю клиент на каждую машину, которую я использую.

Люди много думают о том, как защитить пароли, и пароль является одним из решений.

0 голосов
/ 20 января 2010

Итак, ваш алгоритм основан на секрете, а именно на вашем мастер-пароле, так почему бы просто не сделать секретом фразу «имя сайта с добавленным к нему моим DOB». Так же безопасно, и нет необходимости хранить алгоритм где-либо, кроме вашей головы. Пока вы нигде не записываете свои пароли, вряд ли кто-то угадает ваш «секрет»

0 голосов
/ 20 января 2010

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

Также обратите внимание, что 16 символов MD5 имеют только 64 бита энтропии - например, uuencode может обеспечить намного более надежные 16-символьные пароли.

...