Раньше было хорошо, деревья зеленее, девушки красивей… Раньше при выборе менеджера пароля у меня была проблема работы на двух операционных системах на одном компьютере. Сейчас количество устройств на которых требуется доступ к базе паролей выросло, как и увеличилось количество используемых операционных систем. Добавим дурную привычку забывать вносить пароли в базу, а сохранялись текстовых документах, браузерах … в итоге нужный пароль находился труднее. Долго продолжаться так не могло, и настал день когда я решил разобраться с паролями раз и навсегда.
Шаг 1 Единый логин
Везде где только можно использую аутентификацию по OpenID, или авторизацию по OAuth. Кстати, можно потренироваться у меня в коментах :-). Потребуется знать только один пароль, идеально для использования в интернетах. Минус придется доверять доверять издателю. К сожалению пользоваться единым логином не везде возможно, так что переходим к следующему шагу.
Шаг 2 Избавляюсь от лишних паролей
Пароль от интернет банкинга и пароль от форума не равноценны, если первый должен быть как можно надежней то требования к надежности второго минимальны. На этом шаге основная задача избавиться от лишнего, а в идеале получить пароли которые не надо синхронизировать и хранить. Для начала поделим все ресурсы три группы по требованию к надежности паролей.
Первая группа достаточно пароля сложнее 11111. Разного рода ресурсы где потеря пароля или не критична или сам ресурс не вызывает доверия. Тут все просто придумываете один пароль сложнее пяти единиц и пользуйтесь им, иногда меняя на другой подобный.
Вторая группа ресурсов которые вам важны, все что не попадает в первую и третью группы. Для пароля отлично подойдет контекстно зависимая система. Пароль генерируется по определенной маске и каждый раз заходя на ресурс вы просто генерируете его заново.
Пример (взято с хабра), домен twitter.com, пароль: 7rxm!0tW
где:
7 — количество букв в домене
rxm!0 — постоянный пароль
tW — первые две буквы домена, причем вторая в верхнем регистре
Таким образом:
gmail.com — 5rxm!0gM
habrahabr.ru — 9rxm!0hA
Минус метода если злоумышленнику известно хотя бы два пароля, он сможет получить доступ все ваши пароли. Люди генерирую плохие пароли …
Ну а третья соответственно критически важные ресурсы. ИМХО тут потребны уникальные пароли для каждого ресурса и соответственно программа для их хранения. Придется помнить пароль к менеджеру, но это один пароль и он должен быть достаточно сложен.
Шаг 3 Менеджер паролей
Был у меня любимый менеджер паролей — Password Commander, и мне его хватало. Лучший менеджер паролей под Windows (ИМХО). Для Linux’а я экспортировал базу в HTML файл после шифровал. К сожалению Password Commander больше не поддерживается автором.
На был выбран KeePass, второй версии. Программа схожа с Password Comander. В частности возможность задавать дополнительные поля реализована даже лучше. База паролей надежно шифруется, есть возможность многоходового преобразования ключа … короче, все что надо присутствует. Можно использовать составной ключ пароль + файл ключа.
Бесплатен, Open Source. Надежность проверяется, а не гарантируется честным словом производителя. Одно из следствий открытый формат фаз и сторонние программы его поддерживающие. Так что ситуация когда не сможешь прочесть базу паролей маловероятна. В крайнем случае можно попробовать собрать программу самому. Пример хорошей, но пропавшей из-за отсутствия интереса автора программы выше. Впрочем надеюсь что забвение KeePass не грозит.
Кросплатформенность как следствие открытости. Сама программа написана на .NET и рассчитана на работу в Windows. Но работает и на Monо в OS X и Linux (KeePass2 в репозитариях Debian и Ubuntu). К недостаткам Mono версии можно отнести неродной внешний вид и некоторые проблемы с буфером обмена. Кроме того существует множество программ поддерживающие базы KeePass. Можно найти практически под все платформы (iOS, Android, Windows Phone, Blackberry,..). Не полный список можно посмотреть на сайте программы.
Шаг 4 Настраиваю синхронизацию
Мало найти программу для хранения паролей, нужно еще и обеспечить их доступность на разных устройствах. Если для первых двух шагов это не нужно, то для третьего потребуется как-то переносить базу. Для синхронизации я использую Dropbox (подойдет любой облачный сервис). Есть клиенты интегрированные с DropBox (например, KyPass). Там где этого можно воспользоваться функцией «Favorite». Не помешает на DropBox поместить и установочные файлы. Попутно решаются и проблема резервного копирования.
Тут все просто — база с паролями сохраняется в папке на DropBox’е. Для большей безопасности используется ключевой файл, его нужно переносить отдельно от DropBox’а.
Шаг 5 Интеграция с браузером
Неплохо иметь доступ к базе паролей из браузера. И тут тоже поможет KeePass. Доступ обеспечивается плагинами, есть плагины поддерживающие Chrome и Firefox. Имеется и встроенная функция AutoType, но я ей не пользуюсь.
Начну с KeeFox — плагина для работы с Firefox. Работает под Windows, заявлена поддержка Linux, но у меня в Ubuntu плагин ставится отказался. Для Firefox в Windows лучший выбор. Из работающего в Linux плагины ChromeIPass и PassIFox, оба для своей работы требуют установленного плагина KeePass — KeePassHttp. Плагины эти более универсальны, и работают не только под Linux. Но для того чтобы они заработали в Linux потребуется некоторое шаманство (куда без него :-)).
Плагины устанавливаются в каталог /usr/lib/keepass2/, но установленный KeePassHttp.plgx работать отказывается. Исправляется это следующим образом:
sudo apt-add-repository ppa:jtaylor/keepass
sudo apt-get update && sudo apt-get install keepass2 mono-complete
Добавляются какие-то компоненты Mono, без который ничего не работает, заодно можно обновиться до последней версии. Потом делаем так:
git clone https://github.com/pfn/keepasshttp.git /tmp/keepasshttp
cd /tmp/keepasshttp/KeePassHttp
sudo cp KeePassHttp.dll Newtonsoft.Json.dll /usr/lib/keepass2
Или просто копируем KeePassHttp.dll и Newtonsoft.Json.dll с https://github.com/pfn/keepasshttp/ в каталог /usr/lib/keepass2/. Но вариант выше быстрее. Теперь все будет работать.
P.S.
В результате где только возможно я использую технологию единого входа. Для хранения ценных пролей использую KeePass. Синхронизацией занят DropBox. Во всех остальных случаях заменил на сгенерированные по маске.
Что не получилось. Я хотел бы иметь возможность получать доступ к паролям онлайн, на тот редкий случай когда для конкретной системы (например, Haiku) нет программы поддерживающей базы KeePass. Будем искать.
P.P.S.
Более подробно тема использования KeePass под разными платформами раскрыта в отдельно статье KeePass и товарищи.
Ссылки
myOpenID — OpenID провайдер.
Paranotic — интересная программа для хранения паролей с сохранением копии базы в интернете, не использую, но заинтересовала.
1password — программа для хранения паролей, расширения под популярные браузеры (Safari,FF,Chrome), Mac/Win/iOS, поддержка Dropbox … Наверно обеспечивает большую функциональность, это если закрыть глаза на закрытость, но мой подход как минимум экономит 50$.
Полезно для тех, кто генерировал на каждый ресурс длинный уникальный пароль включающий буквы, цифры, символы верхнего регистра цифровой клавиатуры.
В свое время остановил свой выбор на Password Angel — хорошая альтернатива Keepass, на мой взгляд. Остался доволен.
Не соглашусь, альтернативы KeePass есть, но это не она. KeePass гарантированно страхует от ситуации когда есть база паролей, а открыть ее нечем (у меня так почти получилось с Password Commander). Тут KeePass это скорее стандарт базы паролей с которой могут работать множество программ. Ближайший аналог — Password Safe, но он беднее возможностями.