2010-01-20 2 views
3

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

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

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

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

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

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

#!/bin/bash 

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

лучше использовать sha256, чем md5. некоторые проблемы (выбранные столкновения, IIRC) были продемонстрированы в md5. sha1 находится в подобной лодке. – atk

ответ

0

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

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

+0

Сценарий содержит главный пароль; строка, специфичная для сайта, является параметром $ 1. Например, чтобы сгенерировать мой пароль для Google, я бы назвал 'make-password google'. Требование к основному паролю в качестве пользовательского ввода даст дополнительную защиту (против людей, имеющих доступ к вашей локальной файловой системе) за счет удобства. У сценария должно быть 700 разрешений. – FunctorSalad

+0

Лично я генерирую пароли «вручную», сохраняя их в зашифрованном файле GPG, а закрытый ключ защищен моим «основным паролем». У меня также есть волшебство в моем '.vimrc', чтобы сделать шифрование/дешифрование прозрачным. – Kimvais

1

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

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

Другим ограничением является сайт, который имеет правила составления паролей. Буквенное письмо с верхним и нижним регистром Mixxed, требует использования указаний, минимального количества цифр или букв, которые у вас MD5 для этого конкретного сайта нет. Также у некоторых сайтов максимальная длина пароля, у моего банковского сайта максимальная длина пароля 8, при использовании только 16 возможных charecters вы значительно сократили количество паролей.

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

Я доверяю моему Slashdot, facebook, Flickr и т.д. пароли

Решение я использую Password safe, который рекомендован people I trust Я по электронной почте базу паролей вокруг и установки клиента на каждой машине, которую я использую.

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

+0

Извините, я был расплывчатым об атаках. Я предполагаю, что сам файл сценария безопасен. Я в основном думал о проблеме «с учетом нескольких сгенерированных паролей с известными строками сайта, вывести сгенерированный пароль для новой строки сайта». – FunctorSalad

+0

Хорошо, что может быть сложно вызвать MD5 на ненадежной машине, не оставляя следов. – FunctorSalad

+0

Быстро оглядываясь, кажется, люди верят, что MD% может быть расшифрован QUOTE: Примечание. Если вы хотите, чтобы ваши дайджесты MD5 отличались от других, , тогда раскомментируйте и настройте «функцию безопасности» в подпрограмме Digest ниже. Это полезно, если вы хотите получить недоказуемый дайджест для целей безопасности . Стандартный MD5 может быть декодирован, если * установленный * возможных оригиналов мал и известен (например, последние две цифры номера IP) http://www.equi4.com/md5/doug2md5.pl http: // www .equi4.com/md5/ –

-2

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

+0

Это может быть опасно в некоторых ситуациях. Допустим, у вас есть человек в средней атаке, и они понюхали ваш пароль. Если они видят: stackoverflow290889 facebook290889 Тогда они могли угадать ваш пароль для почти каждого сервиса вы можете использовать: gmail290898 workemail290898 и т.д ... –

+1

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

2

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

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

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