Как стать автором
Обновить

Комментарии 58

Хе-хе, а потом вы немного подкрутите исходники и начнёте потирая ручками собирать логины и пароли пользователей, да ещё и с заботливо указанным сайтом где их стоит применять. :)
Как вариант можно посоветовать сохранить страницу на локалхост и генерить пароль с неё.
В этом случае рекомендуется использовать часть результативной фразы. Выбирать какую именно следуя своей внутренней логике. А так, Вы правы. Не следует доверять важные пароли кому попало. Лучше в таком случае действительно офлайн-инструмент. Или своя голова…
Поддерживаю! :)
Плюс к этому — в трудную минуту понадобится ввести пароль срочно и важный, а доступа к сайту не будет, головой отвыкли пользоваться, пароль не помнится… — это может быть чревато копейкой! :(
Голова всегда должна быть на плечах, согласен. При отсутствии доступа к сайту можно всегда хранить консольную утилиту на флешке.
Сохраните страничку на диск.
Или, что более вероятно, кто-нибудь подкрутит их за Вас.
НЛО прилетело и опубликовало эту надпись здесь
Вот! В пароль надо добавлять запятые, точки и другие знаки! Опасны простые пароли!
НЛО прилетело и опубликовало эту надпись здесь
Да. Всё верно. Но если учесть, что пользователь использует не всю результирующую строку (будь то хэш или вот такой «алфавит»), а всего лишь 10 первых символов? Тогда «алфавит» выигрывает.

Собственно утилита не для тех, кто генерирует пароли методом хэширования. Утилита для тех, кто хочет помнить один-единственный пароль (мастер-ключ), но быть уверенным, что если один из паролей «уплывёт», все остальные сервисы останутся защищены.

У меня множество таких друзей, у которых один единственный пароль на все сервисы…

Собственно и алгоритм нужно рассматривать более комплексно, не как упрощение хэш-строки, а как усложнение мастер-ключа.
Я думаю LAA имел в виду добавлять в конечный результат. Например по спецсимволу в нулевую, среднюю и последнюю позицию. Алгоритм опять же каждый придумает себе сам. Была строка Оо62*62=3844 варианта, стала .О_о, — ~3844000 вариантов.
Эм… только мне кажется что только что изобрели стул, а потом ещё и стол?
Я обычно храню пароли в блокноте бумажном.
Если хочется и в блокноте хранить их в зашифрованном виде,
нет ничего проще.
Нужно взять готовую или придумать свою систему шифрования,
Например, — такая:

Есть таблица, с определёнными символами, которые будут
использоваться в паролях, например буквы и цифры
(для простоты привёл пример только с буквами)
Заполнена как на картинке.
И у вас есть свой ключик, — это какое-то слово, например «gleb»
И есть пароль, например «pupkin»
Вы шифруете пароль так: ищете в верхней строке очередной символ ключа, например «g»
В той колонке, где вы его нашли спускаетесь вниз до очередного символа из пароля, в данном случае до «p»,
Смотрите, какой символ в левом крайнем столбце в этой строке, — это «j»
Получаете хеш. Обратно расшифровываете так же, только берёте символ ключа «g», ищете пересечение с символом хеша — «j», получаете символ пароля «p»
Если пароль длиннее, чем ключ, то когда кончаются символы ключа, — берёте их заново сначала, например
в пароле «pupkin» символов ключа «gleb» хватит только до «k», значит «i» будет шифроваться опять через «g» и т.д.

Здесь в красном поле — очередной символ ключа, в синем — пароля, в чёрном — хеша.
Не смог почему-то вставить картинку через habrastorage,
и напрямую через img тэг.
вот ссылка edelen.ru/des/shifr.png
Отлично, а вводить 39-значные пароли (у меня такие например) вы будете ручками? Удачи :) По мне так нет ничего лучше KeePassX и похожих программ.
Я всегда ввожу руками.
Странно, что у вас они не 255-ти значные, ну так, на всякий случай.
Хэширование — необратимое преобразование по определению. Ваше преобразование — обратимое, т.е. шифрование. Чёрные символы — шифртекст, а не хэш.
Да, термин перепутал.
Но сути это не меняет.
Не совсем понятно, что делать, если сайт требует регулярной смены пароля и проверяет на совпадения с предыдущим.
Можно, к примеру, к имени сервиса добавлять текущую дату. Что-то типа даты генерации пароля. Алгоритму всё равно, что вводится в полях. Он просто объединяет значения полей в одну строку и из неё уже вычисляет хэш.
я так понимаю, что основная задача расчета — повторяемость, чтобы не запоминать пароль, а генерировать когда он необходим? тогда не получается. каждый день будет новый.
Под текущей датой я имел в виду текущую дату во время смены пароля. Например, мы меняем пароли по понедельникам, вот и добавляем дату последнего понедельника.
Я, конечно, согласен, что прикапываюсь. Но все-таки есть сайты, которые вдруг начинают требовать смены пароля. И происходит это не по понедельникам, и даже не каждую третью пятницу августа. Буквально вчера я менял пароль в кабинете интернет-провайдера, потому что «осталось 3 входа со старым паролем».

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

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

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

Понятно. Эх, как было бы хорошо, если бы все это дело стандартизировать (вот фантазёр). Чтобы любой программой или где-нибудь на сайте можно было бы восстановить свой пароль.
Ребята, всё хорошо, но дело в том, что вы в который раз создаёте криптопротокол «на коленке» без его анализа.
Криптография и безопасность — не то место, где можно каждому встречному создавать велосипеды. Они по определению будут плохими. Используйте SRP-6.
А если захочу поменять пароль?
В таком случае подойдёт вариант предложенный выше.
Хм, тогда дату эту запоминать. Проще уж случайный пароль.
Меняй мастер пароль.
4 random common words -> 550 years at 1000 guesses/sec
Английский словарь такой большой? ;)
Хотя нет, все правильно, при таком подходе цифры еще больше.
НЛО прилетело и опубликовало эту надпись здесь
Думаю изобретать то, над чем годами работают крупные конторы выпуская продукты вроде — LastPass, не имеет смысла. Да идея интересная, но я бы ей не стал пользоваться. Да и опять-же терять время на генерацию и т.п. лишние манипуляции. В общем палка о двух концах! Единственный плюс, который я вижу во всем этом, это то, что информация хранится в голове, а не у третьих лиц.
Для тех, кому понравилась идея, но не устраивает деление по модулю на кол-во символов в алфавите:
thepassword.org
pass=md5(site+'@'+login+master password);
Вычисления на клиенте на JS, но параноикам рекомендуется включать в браузере автономный режим.
Логичнее было бы видеть:
pass=md5(login+':'+master_pass+'@'+site);

Хотя плохо то, что получаем символьную избыточность, ведь используются только 16-чные числа (0-9,a-f), и для многих сайтов придется обрезать пароль по длине, уменьшая его стойкость. Это тот случай, когда простота всё-таки хуже воровства, воруешь у себя безопасность.
Извиняюсь, был невнимателен, когда писал. На самом деле:
pass=md5(login+'@'+site+master_pass);
Но это непринципиально.

А про обрезку — да, Вы правы, стойкость теряется. Хотя с другой стороны, что это за сайт, который устанавливает глупые ограничения на длину пароля, но при этом позволяет перебирать 16^13, 16^10, да даже 16^7 вариантов паролей? И так ли важна учетка на таком сайте? На самом деле для сайтов важно не количество вариантов, а отношение кол-ва вариантов к неправильным попыткам ввода пароля. Вон, у большинства кредиток пин всего 4 цифры, зато всего 3 попытки подобрать.

Для меня надежность паролей — это не только гарантия, что их не узнает злоумышленник, но и гарантия, что я смогу воспользоваться любым из своих паролей всегда и при любых условиях, и что никакой пароль никогда не будет утерян. Усложнение же алгоритма наложит дополнительные ограничения на инструменты, с помощью которых можно посчитать пароль. Это меня не устраивает.
Вы не правы насчет нужно ли регистрироваться на сайте, не принимающим мой пароль, наша цель это получение информации с сайта, и если она закрыта регистрацией, то тут решаешь, нужна ли эта информация действительно, если нужна, то пройдешь и препятствия в виде ограниченной длины пароля.
И тогда попадаем в ситуацию, когда какой-то сайт не принимает 32-символьные пароли, делаем 10-символьный, а потом забываем, и не можем войти на этот сайт, начинается чехарда с восстановлением пароля, а это потеря нашего времени.
Лучше уж усложнить алгоритм, сделать его легкодоступным везде, и сразу генерить надежные пароли той длины, которую примут везде.
Если не подходит 32-символьный, значит обрезали до 13/10/7. Быстрее подобрать длину нежели восстанавливать пароль.

Проблема в том, что пароль, который примут везде — это что-то вроде 7 символов длины (а вдруг сайт больше не примет) и 62 символа алфавита a-Z0-9 (на маках нельзя в поле пароля вводить кириллицу, спецсимволы сложно вводить на телефоне и т.п.). Получается, что максимальная сложность — 62^7, а её может не хватить для действительно важных оффлайн ресурсов (для которых доступен быстрый перебор, не по HTTP), и для них нужен будет другой алгоритм, что не универсально. Плюс BASE62 так просто в одной php-строчке или в консоле линукса не посчитаешь, получается, приобретаем зависимость от инструмента для вычислений, а это минус.

Впрочем, я не агитирую. Просто поделился инструментом и способом, который лично меня полностью устраивает уже много лет.
Использую keepass + dropbox. Мне удобно.
А чем не вариант использовать такой способ:
md5( Логин + адрес сайта + ключевое слово )

а он-лайн md5 сервисов тучи + можно хоть на том же php в 1 строчку реализовать такой генератор/
или на javascript

гораздо безопаснее, чем пользоваться сомнительным сервисом
Каждый волен выбрать любой подходящий и устраивающий только его способ. Мой сервис всего лишь один из многих вариантов решения проблемы, возникающей с необходимостью хранить пароли.
Согласен! Дело лишь привычки, возможно в будущем я переду на ваш способ!
Посоветуйте способ, как забыть старые пароли… За 15 лет администрирования в голове уже каша — сотни уже давно ненужных.
крепко нажраться коньяком, водкой, лучше на дискотеке, авось прокатит… а если информация в моторную память просочилась, в «незатираемую» — тут… использовать их куда-нибудь :)
Если стирать водкой на дискотеке, то обязательно нужно цеплять дискотечную жрицу и жарить её в клубном туалете. Без этого не сотрется!

О результатах пиши сюда. Ждем!
Было бы круто если бы md5 или что там еще мог бы вычислить человек у себя в голове не используя какие-то средства расчета пароля и даже не используя бумагу.
Прокачай свой мозг, получишь бесплатный билет в дурку.
Идея появилась в сентябре 2004го, первая реализация под IE где-то через полгода, в 2007 перешел на pwdhash.com. Есть реализации для Firefox, Chrome и Opera. Всё вычисляется локально. При необходимости получить пароль на чужом компьютере всегда можно зайти (по https!) на pwdhash.com

В общем — удобно.
На первый взгляд заметны минусы: длина результата зависит от длины мастер пароля; и в полученном хэше используется знак +, некоторые сайты не примут такой пароль.
Сделал приложение для телефона специально для тех, кто не хочет доверять онлайн-сервису.
Добавил в статью QR-коды.
SuperGenPass.com

Можно добавить в закладки специальную ссылку из JavaScript кода (и тогда будет работать везде), можно воспользоваться онлайн формой (например, если за чужим компьютером), либо поставить плагин для браузера. По-умолчанию формирует 10-символьный пароль из цифр, строчных и прописных латинских букв.

У вас же явно лишнee полe — user id, хотя конечно его можно и не использовать ведь.
Поле userid скорее для тех, кто имеет на одном сервисе несколько учётных записей. Несколько номеров аськи, к примеру.
Так же добавил приложение для Андроида. Пометил бетой, т.к. пробовал запускать исключительно в эмуляторе. Отчёты бета-тестеров принимаются.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации