Простой метод управления паролями для параноиков

Раз и навсегда решить проблему паролей меня побудила история со взломанным LinkedIn — очень неприятно было увидеть свой пароль в списке самых часто встречающихся. Паролей нынче нужно помнить все больше, требования к ним становятся все жёстче, а на OpenId что-то мало кто переходит.

Поиск решения начнем с анализа угроз паролям, и возможных методов противодействия.

Угроза №1 это сами сайты, на которые надо при регистрации отправить пароль. Администраторы и техподдержка этих сайтов будут иметь возможность увидеть ваш незашифрованный пароль, а значит смогут и попробовать использовать его на других сайтах, где вы, возможно, имеете аккаунты.

Угроза №2 это возможность перехвата вашего пароля в каналах передачи. Очень немногие сайты используют HTTPS, большинство же просто передает все данные из форм в открытом виде. Это значит, что если вы где-то в кофейне решили авторизоваться на форуме, то ваш пароль может увидеть любой, кто там сидит с ноутбуком и слушает сеть, и потом попробовать применить этот пароль где-то еще.

Для нейтрализации этих угроз необходимо обеспечить, чтобы пароли на разных сайтах были разные. Вопрос в том, как их все запомнить, или где хранить?

Один из методов формирования и запоминания разных паролей для разных сайтов был описан в статье «Простой метод хранения паролей в голове». При данном методе необходимо помнить один пароль-маску (например rtYG!), и придумать способ получать вариацию из имени сайта.
Например:

Сайт Вариант пароля 1 Вариант пароля 2
Flickr brtYG!3photo brtYG!3Fr
Linkedin brtYG!3job brtYG!3Ln
Sberbank brtYG!3money brtYG!3Sk


Проблема этого метода, состоит в том, что общая стойкость метода определяется стойкостью вариационной части пароля. Администратор сайта Flickr может догаться, что «photo» или «Fr» — это вариация пароля для его сайта, и тогда ему не составит труда подобрать вариации для других сайтов. Кроме того, при таком способе формирования пароля возникает проблема с сайтами, которые требуют периодической смены пароля.

Поэтому крайне желательно, чтобы все пароли были абсолютно случайными и друг с другом никак не связанными. Но тогда сразу возникает вопрос: где же их хранить?

Скажу сразу, я не доверяю сервисам по хранению паролей так как я не знаю, как они работают. А в случае платного сервиса еще возникает опасность лишиться всех своих паролей изза пропущенного платежа. Поэтому было решено разработать собственное решение, которое удовлетворяло бы следующим требованиям:

  • Решение должно быть бесплатное, и по возможности, вечное
  • Решение должно исключать передачу паролей по сети в незашифрованном виде
  • Не должно быть никакого обмена непонятным трафиком ни с кем
  • Не должно быть никаких инсталляций дополнительного ПО, только браузер
  • Решение должно быть кроссплатформенным


Такое решение удалось найти, оно состоит в следующем:

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

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

3. Все токены храним в онлайн-хранилище (например в почте, или в Google Docs), или локально, в текстовом файле следующего вида:

Сайт Пользователь Зашифрованный токен
youtube.com myytusername U2FsdGVkX1/cCpnVmQ1sz13pqQXJYtQ3bTjcjw/HYak=
livejournal.com myljusername U2FsdGVkX19HWMhtmjfdLagxpBfUcnJmFkezYgdnBrs=


4. Шифрование и дешифрование производим по алгоритму AES-256 + Base64 средствами JavaScript-библиотеки GibberishAES. Все вычисления ведуться в браузере, никакие данные никуда не передаются.

Несколько замечаний по данному методу:

— Вся схема требует запоминания двух паролей: пароля от онлайн-хранилища и мастер-пароля для токенов. Эти пароли должны быть разные.

— При выборе онлайн-хранилища необходимо помнить, что без доступа к хранилищу вы не получите доступ к сайту, поэтому желательно, чтобы хранилище было максимально надёжным и с высоким аптаймом.

— Необходимо делать копии файла с зашифрованными токенами, так как при его утере восстановить пароли будет невозможно.

— Шифровать и дешифровать в браузере можно, например, на этой странице. Будучи параноиком я для себя сделал собственную минималистичную страницу AES-256 Online. Она состоит из 3-х файлов, которые можно сохранить и использовать локально.

— Шифровать или дешифровать токены из страницы при необходимости можно и в командной строке Unix:
openssl enc -a -aes-256-cbc (шифрование STDIN)
openssl enc -d -a -aes-256-cbc (дешифрование STDIN)

— Генерировать случайные токены можно в онлайне (например здесь), оффлайне (скачать index.html и 2 JavaScript файла здесь), или из командной строки Unix:
openssl rand -base64 12

Надеюсь данный способ управления паролями будет полезен читателям.
Поделиться публикацией

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

    –1
    Если уж впадать во все тяжкие можно хранить пароли в locale storage или web sql db (где именем бд будет так же заранее придуманный пароль)
      +1
      Я себе как то сваял приложение для телефона, менеджер паролей, там все дико, через security through obscurity, бекапится на свой же фтп. Но так-как прога стоит у меня в одном экземпляре, сырцов в окружающую среду не попадало, а специально меня ломать и тратить килочасы ресурсов врядли кому-то понадобится, считаю вполне разумным ей пользоваться.
        +3
        Если б я так делал, я бы как минимум не писал об этом на хабре.
          +1
          до кучи тогда уж SSL, а не стоковый FTP
            0
            Это верно, но как я уже сказал, наврядли я кому то понадоблюсь чтобы ломать специально, бекапится только ради сохранности самих паролей, а то вдруг телефон пролюблю.
          +6
          Так и не понял, чем же этот метод лучше менеджеров паролей?
            0
            Менеджеры паролей надо устанавливать и запускать локально, что не всегда возможно (например у меня на работе сразу начнут вопросы задавать). В предлагаемом варианте достаточно браузера с поддержкой javascript, а значит будет работать на почти любом устройстве.
              0
              Не все обязательно устанавливать!
                0
                Запускать ведь все? :)
                  0
                  Только не все сразу :)
                  Если работа не связана с повышенными мерами безопасности и подключённый USB накопитель не будет причиной выговора/увольнения/заключения под стражу/расстрела на месте внезапных проблем, то вполне пригодный софт.
                0
                1Password — десктопное приложение, у которого есть режим web application. И никаких проблем.
              +2
              Неделя нравоучений о пароле на хабре :)
                +7
                Не понимаю для чего изобретать велосипед? Чем вам менеджеры паролей не нравятся? Я для себя с выбором уже давно определился: KeePass + KeeFox — удобно быстро и запомнить нужно всего 1 пароль для доступа к БД KeePass.
                  +2
                  Ответил выше: Менеджеры паролей надо устанавливать и запускать локально, что не всегда возможно (например у меня на работе сразу начнут вопросы задавать). В предлагаемом варианте достаточно браузера с поддержкой javascript, а значит будет работать на почти любом устройстве.
                    0
                    Еще один менеджер паролей, только браузерный.
                    Что будет следующим?
                    0
                    — хранить пароли локально, значит остаться без паролей, если к локальному хранилищу доступа нет (на работе, в гостях, инет-кафе и т. п.) или оно «внезапно» утрачено (украдено, сломано, сгорело и т. д.)

                    — хранить пароли в онлайне, значит остаться без паролей, если онлайн хранилище упало или вообще закрылось

                    — хранить пароли на каком-то девайсе как бы постоянно носимым с собой (флэшка, телефон, ноубук, спецтокены, бумажка в конце-концов), значит остаться без паролей если девайс всё-таки забыт, утрачен (потерян, украден, сломан) или нет возможности с него прочитать (политики безопасности, севшие батареи, отсутствие нужного разъёма/переходника)

                    — комбинировать способы, значит остаться без части паролей если забыл или не имел возможности синхронизировать разные хранилища, или не столь уж маловероятных совпадений фэйлов каждого из способов (украсть носимый девайс и домашний ноутбук могут вполне одновременно).

                    И это только очевидные риски ошибок первого рода (я имею право получить доступ к аккаунту, но не могу). Но лично для меня они более значимы для большинства сервисов, чем второго (кто-то другой получит доступ к моим аккаунтам, не имея на это права).
                      +1
                      Для этих целей у меня база и portable версия KeePass располагается на DropBox

                      Это позволяет мне:
                      1. В случае острой необходимости (я имею ввиду в гостях или еще где то) получить доступ к БД через DropBox
                      2. Всегда иметь доступ к актуальной версии БД и KeePass (DropBox синхронизирует мою БД, а так же актуальную версию KeePass на разных машинах на которых я работаю (на рабочем компьютере в офисе и на 2-х домашних))
                      3. Защититься от утраты БД т.к. DropBox является по сути является еще и резервным хранилищем моей БД


                      Так что тут я не вижу ни каких неудобств, а даже появилось ряд преимуществ.
                        0
                        А как вы в случае острой необходимости будете расшифровывать базу, если portable версию запустить у вас прав не будет?
                          0
                          В этой ситуации это не поможет это верно, но у меня таких ситуаций не возникает т.к. моя специфика работы не подразумевает работу под пользователями с урезанными правами.
                            0
                            Работы моя тоже не подразумевает, а вот в инет-кафе вполне могут быть права урезаны.
                          0
                          А если dropbox заблочен (например как у нас на работе..)?
                      +1
                      я правильно понял, если шифрующий/дешифрующий js файлик хранится в онлайн-хранилище, то хозяин этого хранилища может вытащить ваши пароли, модифицировав этот файлик?
                        0
                        Точно подмечено
                          0
                          js-файлы это 2 библиотеки (jQuery и GibberishAES), которые можно взять в интернете, и сохранить и запускать локально.
                          +1
                          По поводу вашего недоверия менеджерам паролей, но вполне неоправданного доверия почте или гугладокам:

                          Во первых, мне кажется, идея хранить все пароли локально реализуема только если вы всегда носите с собой это локальное хранилище. Судя по степени вашей паранои, флешкам вы тоже не доверяете. То есть любой внешний носитель отпадает. Итого, чтобы зайти в свой аккаунт на любом сайте вам всегда нужен один и тот же ноут. Если это так и есть, то ваш метод конечно же будет прекрасно работать, но, к сожалению, только для вас.

                          Если же вы храните все ваши токены в облаке, хотя бы в гуглодоках, то похоже, что паролю от аккаунта в гугле вы доверяете более легкомысленно, чем это делают среднестатистические параноики следует.

                          Я вполне доверяю хранение своих личных паролей такому сервису как lastpass, но применительно к вашей задаче появилась такая идея — используйте lastpass (или любой другой менеджер паролей) для хранения токенов. Доступ к хранилищу будет защищен мастер-паролем, который отличен от вашей почты и пароля к гуглодокам. При этом в хранилище хранятся шифрованные значения токенов, зашифрованных вашим алгоритмом, а значит процесс декодирования хотя бы не проще, чем если бы токены хранились явно в вашей почте.
                          Получив токен вы знаете что с ним делать.
                            +1
                            Я не то что бы не доверяю флешкам и другим локальным носителям. Просто они могут банально перестать читаться, что у меня бывало не раз и с флешками, и с харддрайвами. Поэтому хранить то на них можно, но должны быть копии в других местах. Кроме того, флешки не всегда возможно прочитать на других, неподконтрольных вам компьютерах (например у меня на работе нельзя). А браузер и почта доступны практически всегда.
                            +14
                            > очень неприятно было увидеть свой пароль в списке самых часто встречающихся.

                            Честно говоря, после такого признания воспринимать вас в качестве специалиста по теме управления паролями, тем более для параноиков, невозможно. :)
                              +1
                              Я просто не считал LinkedIn достойным нормального пароля, поэтому обошелся минимумом. Но это в прошлом. Сейчас все пароли поменяны, и главное, перед регистрацией на очередном ресурсе нет никаких раздумий над паролем: сгенерировал, зашифровал и порядок.
                              +2
                              1Password, точка.
                                0
                                50$ только за Win версию? А есть iOS, Android и т.д. Не многовато ли?
                                  0
                                  Нет =) Более, чем приемлемо за разгруженную голову, избавление от извращений, вроде тех, что описаны в статье, генерацию сложных паролей и возможность удобной организации/управления, безопасного хранения, при условии, что всегда можно доступиться к данным, из любого места.
                                    0
                                    Есть ведь бесплатные аналоги, например LastPass. В чем преимущество платного?
                                      0
                                      Я не готов хранить свои пароли где-то там, у кого-то там и зависеть на 100% от интернета, как в случае с LastPass. Я не хочу просто кучу плагинов для браузеров, которые просто ходят в какой-то сервис и хранят пароли там, я хочу отдельное приложение и базу паролей, хорошо закриптованную, там, где мне это будет удобно.
                                      1Password использую с конца 2008-го года, тогда версии по Win и не было даже, где был в тот момент LastPass и в каком виде — без понятия.
                                      Кому-то, возможно, это будет удобнее, по каким-то причинам, но мне нет.
                                        0
                                        А с чего вы взяли что используя LastPass я завишу на 100% от интернета. Облако используется только для синхронизации защищенного хранилища. В итоге вы можете поставить на одном компе только LastPass и пользоваться им локально.
                                        Я не пытаюсь защитить именно LastPass, я просто говорю о том что мне платить за 1Password деньги не стоит, если есть бесплатный аналог.
                                        Вам то уже деваться некуда, вы купили.
                                          0
                                          Вот выдержка из их руководства:
                                          All sensitive data is encrypted locally
                                          All encryption/decryption occurs on your computer, not on our servers. This means that your sensitive data does not travel over the Internet and it never touches our servers, only the encrypted data does.
                                          helpdesk.lastpass.com/introduction/why-is-lastpass-safe/
                                            0
                                            В любом случае, оно хранится где-то у них, дублируясь в хранилищах расширений, а не в том единственном месте, где мне нужно. Мне такого не надо. А расширенные возможности с Premium-подпиской стоят $1/мес., интересно, почему =)
                                            Деваться есть куда, в любой момент, но вот желания нет никакого. И, опять же, где был LastPass в 2008-ом году? Вроде только для ОгнеЛиса. Я просто выбрал лучшее для себя, мне не жалко заплатить разработчикам за хороший продукт, которым я пользуюсь каждые несколько минут. Убеждать кого-то делать тоже самое мне не нужно совсем =)
                                              0
                                              Неужели у вас пароли хранятся только в одном месте? И вы всегда это таскаете с собой? Вам это действительно удобно?

                                              У LastPass хранится у них на сервере зашифрованное хранилище, без моего ключа оно бесполезно.
                                                0
                                                Да, называется Dropbox и все клиенты обновляют локальные базы оттуда, могу отключить Dropbox, хранить просто на диске, и обновлять только по Wi-Fi свои гаджеты с клиентами. Могу на флешке хранить, если паранойя в безумие превратиться. Могу даже на своих серверах разместить его, хоть и не без граблей, но если уж припрёт, то… Как итог — удобно, когда база паролей принадлежит только и всецело мне, и распоряжаюсь ей я по своему усмотрению.

                                                LastPass — это сервис и законам он подчиняется, нет никаких гарантий ни на ваш ключ, ни на что-либо ещё.

                                                Ещё раз — это всего-лишь мой выбор, исходя из моих потребностей и взглядов.
                                  +7
                                  > Администратор сайта Flickr может догаться, что «photo» или «Fr» — это вариация пароля для его сайта

                                  Ребята, вы что, все тронулись? Как будто админам популярных сайтов делать больше нечего, как пробовать, а не подойдет ли ваш пароль на других сайтах.
                                    0
                                    Под ребятами я имел в виду авторов статей по теме :)
                                      +2
                                      Не обязательно админам это нужно. В случае с LinkedIn-а хакеры по всему интернету теперь ломают миллионы паролей. Вопрос в том, чтобы ваш взломанный пароль с LinkedIn не позволил бы поломать ваши остальные, более важные пароли.
                                        0
                                        Более того, ни один нормальный администратор не станет хранить пароли в открытом виде. А даже в случае перехвата, пароли рядовых пользователей никто не анализирует таким образом вручную.
                                        +2
                                        А что мешает просто делать md5 от «мастер-пароль + что-то, связанное с ресурсом»? В качестве пароля он будет достаточно уникальным, чтобы не быть в словаре, и если «что-то, связанное с ресурсом» не есть быть имя сайта, а мастер-пароль таки пароль, то получившаяся комбинация будет довольно устойчивой. Для фанатов можно брать первые 10-15 символов из md5.

                                        Это будет простенькая security though obscurity, которую спасает трудность опознания алгоритма и малую вероятность персональной атаки при утечке базы хэшей.
                                          0
                                          Есть такой проект: Stanford PwdHash. Один из авторов — Dan Boneh — также автор стэнфордского курса по криптографии и уважаемый криптограф. Лично для 90% паролей использую именно этот проект. Очень просто и достаточно безопасно.
                                            +1
                                            Уже реализовано давно на keymemo.com и не надо изобретать велосипед.
                                              –1
                                              Спасибо за ссылку, хороший сайт, и делает все что надо. Но он относительно новый, малопосещаемый и репутации надежного ресурса еще не набрал, для этого нужно лет десять, или мощь компании типа гугля за плечами. Гарантии того, что он будет работать вечно, нет. Значит опять надо самому заботится о бекапе хэшей, и что не менее важно, кода, который их может расшифровать. Даже для простого шифрования-дешифрования AES256 удалось найти не так много страниц в интернете, и не все из них работают (потому и пришлось сделать свою собственную страницу, и разбираться с командной строкой). А для двойного дешифрования ее найти будет еще сложнее, и расшифровка станет проблемой.
                                                +1
                                                Во-первых он не новый, его анонсировали на хабре несколько лет назад, во-вторых проблемы хранения хешей нет, поскольку после каждого дополнения парольной базы сайт высылает на ваш мэйл зашифрованную html страницу с паролями и необходимым для расшифровки кодом, которую можно открыть локально, ввести мастер пароль и получить все пароли. А уже электронная почта может быть и от проверенного гугла и от эверноута и даже в дропбокс можно для надежности базу скинуть.
                                              0

                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                              Самое читаемое