?

Log in

No account? Create an account
Про пароли - Олег Етеревский [entries|archive|friends|userinfo]
Oleg Eterevsky

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Про пароли [13 September 2013|16:53]
Oleg Eterevsky
К вопросу о безопасности... Меня очень раздражает, когда меня раз в год просят поменять пароль. И когда не принимают мой пароль потому что в нём, дескать, нет цифр. У меня отличные пароли. Случайные, с достаточным количеством битов энтропии. А вот нет же, какая-нибудь служба доставки пиццы лучше меня знает, стойкий мой пароль или нет.

Кстати, пару слов о том, как я храню (точнее, не храню) пароли. У меня для каждого вебсайта генерируется свой уникальный пароль. Делается это так. Я помню один случайный достаточно длинный пароль P. Все остальные пароли я генерирую по формуле SHA256("website-url.com" + P). Для тех, кто не знает, что такое SHA256 — это такая специальная функция, у которой по значению трудно (на практике — невозможно) определить аргумент. То есть если я вам говорю, что SHA256(x) = 27365..., вы мне не сможете в ответ сказать x. В результате разные сайты получают разные пароли и ни один из них не может определить по своему паролю ни мой основной пароль, ни пароли к другим сайтам.

Раньше для этого я пользовался расширениями PasswordMaker (собственно, оттуда я узнал про этот подход), но в конце концов не выдержал и написал своё собственное расширение для Хрома под названием Password Generator. Выглядит примерно так. Сначала вы настраиваете длину паролей и то, из каких символов вы их хотите составлять:

А потом, на сайте кликаете на иконку, вводите свой основной пароль (его можно запоминать), и можете скопировать или прямо вставить пароль от этого сайта:

Вот так вот, это была бы почти реклама, если бы я с этого что-то имел. :)

Кстати, исходники расширения есть на ГитХабе.

LinkReply

Comments:
[User Picture]From: dedpihto
2013-09-13 01:06 pm (UTC)
Так а как поступаешь для сайтов, которые все-таки просят сменить пароль? И если на домене несколько аккаунтов?
(Reply) (Thread)
[User Picture]From: eterevsky
2013-09-13 01:08 pm (UTC)
В оригинальном PasswordMaker для таких случаев есть отдельное поле — модификатор, которое обычно пусто, но в которое в таких случаях что-то можно вписать. Я его пока не делал, но собираюсь. Если просят сменить пароль, туда можно вписать текущий год, если несколько аккаунтов — имя аккаунта.
(Reply) (Parent) (Thread)
[User Picture]From: vse_budet
2013-09-13 02:21 pm (UTC)
О, здорово. А то я тоже самое руками на http://www.md5.cz/ каждый раз делал.
(Reply) (Thread)
[User Picture]From: eterevsky
2013-09-13 02:22 pm (UTC)
Рад, что это кому-то будет полезно. :)
(Reply) (Parent) (Thread)
[User Picture]From: trisch
2013-09-13 02:27 pm (UTC)
хорошее дело.
только во всех этих one pass generator есть причина, по которой я никогда ими не пользовалась. первое - один мастер пароль управляет всем. второе - что делать, если необходимо зайти на сайт с другого компьютера?

а по сути, нигде еще не встречала сайта, на котором просят сменить пароль. единственное, где это просят, и где это тоже достает - корпоративный компьютер. но на сайте, к тому же по доставке пиццы - ни разу пока не встречалось :)

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

Edited at 2013-09-13 02:29 pm (UTC)
(Reply) (Thread)
[User Picture]From: eterevsky
2013-09-13 02:32 pm (UTC)
Мастер пароль никуда не пересылается, так что его редко нужно менять. Но для того случая когда нужно, я сделал поддержку профайлов с разными паролями и настройками. Меня как раз PasswordMaker достал тем, что там невозможно было в течение сессии хранить два пароля для разных профайлов.

Для другого компьютера можно генерировать его в приложении на телефоне, если не доверяешь тому компьютеру, или на веб-странице online. Я правда ни того, ни другого не делал. Страничку, кстати, сделать надо было бы.

Мне приходится менять рабочий пароль и пароль в банке.
(Reply) (Parent) (Thread)
[User Picture]From: eterevsky
2013-09-13 02:33 pm (UTC)
В некоторых местах пароль нужно раз в год менять без вариантов.
(Reply) (Parent) (Thread)
[User Picture]From: bik_top
2013-09-13 02:55 pm (UTC)
Я правильно понимаю, что в случае компрометации мастер-пароля, нужно:
1) придумать новый мастер-пароль,
2) побывать на всех сайтах (где-то должен вестись их список?), где ты зарегистрирован, и сменить там credentials с учётом нового мастер-пароля?
(Reply) (Thread)
[User Picture]From: eterevsky
2013-09-13 09:20 pm (UTC)
Если честно, в п. 2, я бы лично стал менять пароли только на критичных сайтах: на email-сервисах + соц. сетях + может что-то специфичное. Их я помню без списка. Но вообще список есть, я просто не видел смысла его показывать.
(Reply) (Parent) (Thread)
[User Picture]From: bik_top
2013-09-13 09:32 pm (UTC)
> Если честно, в п. 2, я бы лично стал менять пароли только на критичных сайтах...

Но тогда приходится помнить уже два мастер-пароля — старый и новый. А ещё для каждого сайта помнить, используется ли для генерации пароля старый или новый мастер-пароль. Т.е. вести два списка: на этих сайтах я зарегистрирован с помощью старого скомпрометированного мастер-пароля, а на этих — с помощью нового.
(Reply) (Parent) (Thread)
[User Picture]From: eterevsky
2013-09-13 09:43 pm (UTC)
Старые пароли, мне кажется, нормально помнятся, если ими пользуешься.

Экстеншн сам помнит, на каком сайте какой профайл ты используешь. Это была одна из фич, ради которых я стал писать собственную реализацию -- другие экстеншны плохо работают с несколькими паролями.
(Reply) (Parent) (Thread)
[User Picture]From: youngracoon
2013-09-13 05:11 pm (UTC)
Прошу прощения за оффтоп: я правильно понимаю, что это расширение не установить на Chrome в Android, равно как и другие расширения?
(Reply) (Thread)
[User Picture]From: eterevsky
2013-09-13 09:21 pm (UTC)
Увы, в Хроме под Андроид расширения пока не работают. Когда будут -- точно не знаю.
(Reply) (Parent) (Thread)
[User Picture]From: yakov_sirotkin
2013-09-13 08:14 pm (UTC)
Если хранилку паролей такого типа станет популярной, не начнут ли её ломать целенаправленно?
(Reply) (Thread)
[User Picture]From: eterevsky
2013-09-13 09:35 pm (UTC)
Давай проанализируем, как её можно ломать.

1. Атака на машину юзера. Тогда с большой вероятностью может быть просто установлен кейлоггер и никакая защита не поможет.

2. Слабый мастер-пароль. Это серьёзная проблема -- криптографические хэши считаются быстро и вполне можно за обозримое время перебрать 2^60 вариантов. Впрочем, если ты думаешь, что кто-то готов потратить на взлом твоего пароля столько ресурсов, то ты можешь позволить себе достаточно длинный пароль. У меня в мастер-пароле 80 бит.

Кстати, с проблемой слабого мастер-пароля можно до некоторой степени бороться используя медленную хэш-функцию. Например, миллионкратный SHA256 вместо однократного. Могу, в принципе, сделать -- это легко.

3. Используется хэш от конкатенации, а не HMAC (для совместимости со старыми версиями PasswordMaker и из желания оставить минимум опций). По-моему, атаки, в которых это может играть роль, в нашем случае неприменимы.

Всё остальное -- традиционная криптография, которая должна быть стойкой.
(Reply) (Parent) (Thread)
[User Picture]From: lumag
2013-09-17 03:25 am (UTC)
2. Несколько вызовов хэш-функции подряд - это, конечно, усложнение задачи. Обратите внимание на статью https://en.wikipedia.org/wiki/Key_stretching.

Кстати, а почему бы не использовать какой-нибудь PBKDF2 ?
(Reply) (Parent) (Thread)
[User Picture]From: eterevsky
2013-09-17 07:40 am (UTC)
За совет про PBKDF2 — спасибо, я про него был не в курсе. Я, пожалуй, через месяц послушаю Crypto 2 на Корсере, а там решу, что лучше.
(Reply) (Parent) (Thread)
[User Picture]From: lumag
2013-09-18 01:12 pm (UTC)
Я не помню, будет ли key derivation в crypto2. В любом случае там довольно теортизированный курс по крипто. Даже не знаю куда направить. Applied cryptography эту тему, по-моему, не покрывает. Может быть в HAC тема раскрыта.
(Reply) (Parent) (Thread)
[User Picture]From: eterevsky
2013-09-18 01:19 pm (UTC)
По-моему, криптография и должна быть в достаточной степени теоретической. Я недавно читал интересный блог-пост на эту тему, но найти его сейчас не могу. Идея в том, что формальные доказательства дают нам гораздо больше веры в криптографическую стойкость, чем опыт. Мы знаем много примеров принятых стандартов, которые со временем оказывались дырявыми. С другой стороны, коль скоро что-то один раз доказано, на это можно положиться.

Одна оговорка — side channel attacks. Их, к сожалению, сложно теоретически описать, и приходится полагаться на опыт.
(Reply) (Parent) (Thread)
[User Picture]From: lumag
2013-09-18 07:40 pm (UTC)
У меня ощущение, что формально доказать в криптографии можно довольно ограниченное количество утверждений. В основном из серии "если это надежно, то...". Надежность того же AES именно доказать нельзя. Только показать, что он надежен против известных методов анализа.
С другой стороны, всякие протокольные вещи как раз доказываются. Так что может быть упомянутый пост в чем-то прав.
(Reply) (Parent) (Thread)
[User Picture]From: eterevsky
2013-09-18 08:34 pm (UTC)
Доказать совсем без предположений, конечно, ничего не получится. Начать с того, что большая часть криптографии основана на том, что P != NP.

Что касается криптографических примитивов, типа AES или SHA3, то для них нередко доказщывается устойчивость к какому-то классу атак, либо к ним сводится другая сложная задача (например, факторизация или дискретный логарифм для DSA и RSA).

И самое главное доказательная криптография позволяет безопасно применять имеющиеся средства, да-да, "протокольные вещи". В том же стэнфордском курсе приводится миллион примеров, как безопасное на первый взгляд решение оборачивалось критическими уязвимостями.
(Reply) (Parent) (Thread)
[User Picture]From: imageman72
2013-09-18 08:59 am (UTC)

http://supergenpass.com/

Существует букмарклет (+ отдельный html тоже есть) http://supergenpass.com/

Идея та же - мастер пароль+адрес сайта = пароль к сайту
Из хороших вещей: работает везде, где работают букмарлеты, сгенерированный пароль сразу вставляется в поля password (т.е. не нужно никаких copy-paste, и сгенерированный пароль не светится), так же есть возможность проверять мастер пароль по хеш-отпечатку.
(Reply) (Thread)
[User Picture]From: eterevsky
2013-09-18 11:59 am (UTC)
Спасибо за ссылку. Похожая идея. Но мне нужны были некоторые фичи, которых тут нет.
(Reply) (Parent) (Thread)