|
Персональные инструменты |
![]() |
||
|
![]() |
![]() SuperGenPassМатериал из CustisWikiВерсия от 12:46, 2 октября 2011; StasFomin (обсуждение | вклад) (→Какие есть проблемы с SuperGenPass?) Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений. «Полное и окончательное решение проблемы паролей в Интернет» Содержание[убрать]ПроблемаВсе пользователи интернета ежедневно сталкиваются с сервисами, требующими авторизации, скажем даже прямей — среднестатический интернет-пользователь пользуется сотнями и более сайтов-сервисов, совершенно разной функциональностью — интернет-магазины, банкинг, рабочая groupware, развлекательные блоги-социальные сети, сайты знакомств, обмен знаниями в форумах и вики-системах…
Возникает первая проблема — как выбрать пароль, чтобы он,
Тут конфликт — трудноподбираемые пароли сложно запомнить, а легкозапоминаемые — уязвимы для подбора. Да, многие придумывают свои собственные эвристики для «статистически невычислимых» паролей, используют безумные словосочетания, построенные на личных ассоциативных рядах, комбинируя с отражениями раскладок с русской на английскую, вставку цифр, любимые опечатки и т.п. Но проблема усложняется тем, что нет никакой единой авторизации — каждый интернет-сервис ведет свой собственный учет аккаунтов. И в большинстве случаев, они хранят пароли в исходном виде (по крайней мере, невозможно проверить, что это не так), так что доверяя им пароль, нужно быть готовым к тому, что произойдет его утечка[1]. Наверное читатель помнит недавно прошедшие громкие утечки паролей из vkontakte или из PHPBB.com. И даже если потеря аккаунта в самом сервисе не видится пользователю проблемой — подумаешь, маловажный интернет-магазин, и полумертвый стартап, проблема будет в том, что грамотный dataminer может легко вычислить («Google-Yandex-Radarix—…») остальные аккаунты пользователя, которых принято привязывать к уникальному нику или emailу, и атаковать их, а это уже и приведет к существенным потерям — денег, репутации, информации или всего вместе взятого.
Да, возникают очевидные идеи защиты. Например, разделять в интернете общественно-одобряемую деятельность («AlexanderIvanov@mycompany.ru»), от, скажем, репутационно-сомнительной («BiBigOneMacho@gmail.com»), и от строго секретной (руление деньгами и собственностью). Но проблема в том, что таких кластеров не может быть много, ведь голова-то не резиновая, а внутри такого кластера сохраняется уязвимость из-за утечки. Некоторые пытаются строить уникальные пароли, основываясь на URLе интернет-ресурса, добавляя в пароль доменное имя или вычислимую от него в уме функцию, liveinternet.ru → l10t.ру livejournal.com → kbdt;jehyfk/rjv livejournal.ru ➨ru-l09l yandex.ru ➨ru-y04x gmail.com ➨com-g03l Можно в функцию вводить и human-based эвристики, например, любимые опечатки («атнакласнеги»). Но в любом случае, о легко вычислимой в уме функции, как вы видите, легко догадаться. И ведь злоумышленник, если пароль не подойдет, сможет использовать полученные данные как наводку для угадывания других паролей, и пароли типа «ливжурналсолнце91» и «яндекссолнце91» прекрасно подскажут ему пароль в Google-сервисах. А вдруг вы подозреваете компрометацию всех паролей? Нашли троян на компьютере, а в вашем броузере все пароли хранятся? Их надо менять, но как придумать разом новые пароли для всех ресурсов? Опять придется расходовать самый критичный ресурс — собственные нейроны. Решение
Итак, очевидны следующие требования:
Из требований очевидно, что нужно призывать одностороннюю функцию, т.е. функцию от URL-а сайта (или его доменной части) и некоторого истинного секретного пароля, известного только пользователю, причем функция должна легко вычисляться компьютером (увы, человеку в уме это не под силу), но в обратную сторону даже компьютер не смог бы вычислить в обозримое время. Что же вычислять? А главное как, чтобы вычислитель был всегда под рукой?
Итак, встречайте — http://supergenpass.com !
ИнсталляцияИспользованиеЭлементарно. Обратите внимание, что вам даже не нужно «проявлять» сгенерированный пароль и копипейстить его — просто нанесите «двойной удар по почкам мыши» в поле для пароля, и сгенерированный пароль сам скопируется туда.
Ответы на вопросыФиг разберешься в коде этого букмарклета …
def MD5(password): s=base64.encodestring(md5.new(password).digest()) s=s.replace("+","9") s=s.replace("/","8") s=s.replace("=","A") s=s.replace("\n","") return s def supergenpass(domain,masterpass,length): def goodPassword(password): password=password[:length] PasswordOk=re.search("^[a-z]",password) and re.search("[A-Z]",password) and re.search("[0-9]",password) return PasswordOk passwd=masterpass+':'+domain for i in xrange(10): passwd=MD5(passwd) while not goodPassword(passwd): passwd=MD5(passwd) return passwd[:length] Вы всегда сможете вычислить свои SuperGenPass-пароли через Python (или что вы там любите). А точно проверяли эквивалентность Python/Javascript?
А вдруг генеримый пароль будет тупым?
А как ломают MD5? Как могут взломать мой SUPERGENPASS-пароль?
Misc
Какие есть проблемы с SuperGenPass?
Вообще, возможна специализированная атака на SuperGenPass — Javascript-кейлоггер на сайте, считывающий поля из DOM-структуры или просто записывающий все нажатия клавиш. Вот обсуждение. Пока это маловероятно (специальный сайт, чтобы поймать SGP-пользователей, которых копейки), но если вы настолько ценная цель, и известно, что вы используете SGP, то возможно будет фишинг, подмена DNS, и специальный сайт с таким перехватчиком. Тогда надо
МайндмапЕсли захотите сделать презентацию, убедить знакомых использовать — вот конспект-майндмап по теме. Примечания
ЮморНе забывайте и про терморектальный криптоанализ:
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».
|
![]() |
![]() |
![]() |