Один безопасный пароль на все случаи жизни


Спорить не буду, заголовок провокационный. Но и продолжение не лучше…

Доброе утро! Я законченный параноик. Поэтому я люблю сложные пароли. Но хранить их в голове очень хлопотно… Вы же еще помните, что я параноик? И поэтому не пользуюсь менеджерами паролей, кроме тех, что могу поставить на свои сервера и могу контролировать трафик. Но я все-равно физически не смогу проверить на закладки. Не хватит ни времени, ни опыта. Поэтому я боюсь пользоваться чужими менеджерами паролей.

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

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

| ресурс | логин | модификатор |

Например:

habrahabr.ru | acyp | Walhall |

И вести такой список просто в блокноте. Когда понадобилось зайти на ресурс, то простым Ctrl-F нахожу ресурс и вбиваю необходимые данные в форму.

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

Результат ввода ССФ и модификатора из примера (скриншот)


Красным подчеркнут результат работы односторонней функции, причем последние два значения заменены на +F. Это с одной стороны добавляет сложности восстановлению, с другой позволяет зайти на ресурсах где необходимы спец.символы и заглавные буквы.

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

В целом предлагаемый мной подход позволит с одной стороны иметь один пароль на всех ресурсах, с другой — не опасаться компрометации пароля на одном из них, т.к «похищенное знание» не приведет к открытию других ресурсов.

Нижние группы цифр сделал скорее для себя, т.к. так мне удобнее читать их с телефона.

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

Ну и на сладкое — весь обмен в момент генерации пароля.

Логи nginx


и краткая инструкция по использованию:

Инструкция для тех, кому лень писать свое
1. Заводите себе журнал или файл, который может храниться открыто к которому у Вас есть постоянный доступ. И ведете в нем всю открытую информацию. Т.е. даже если на ресурсе Вас заставляют поменять пароль (или возникла такая необходимость), просто меняете модификатор

2. Регистрируетесь на ресурсе, генерируя пароль по ссылке на форму passer'a. При этом заносите все необходимые данные (из поля модификатор) в журнал.

3. При необходимости войти на этот ресурс — берете данные из журнала и так же с помощью passer'a восстанавливаете пароль. Фича: В местах, где я не уверен, я делаю это с телефона, перенося пароль в форму ввода. Потом, находясь в доверенном месте, в журнале меняю модификатор и меняю пароль.

Сказать совсем честно — я поступаю проще: Парольная фраза в голове, в модификаторе ресурс на который я хочу получить доступ. А поскольку я менял пароли на малом числе ресурсов и все их помню, то просто к модификатору на таких ресурсах добавляю vN (N — номер смены пароля). И не веду даже журнала.

Спасибо за внимание. Особое спасибо за комментарии (заранее, надеюсь, что они будут).

UPD: По итогам первого чтения комментариев хотелось бы заострить внимание на нескольких моментах:

  1. Я не прошу пользоваться моим приложением. Более того, я скорее настаиваю на том, что при наличии собственного полностью подконтрольного ресурса (а это важно) написать самостоятельно приложение, которое будет генерировать хэш-пароль по определенным правилам. Я только описал методологию.
  2. В комментарии imageman'а прозвучало приложение на .js (chriszarate.github.io/supergenpass), знай я о существовании которого, то и статьи скорее всего не было бы. Предложенный мной метод совершенно полно им иллюстрируется. Пользоваться им вряд ли в настоящее время буду, т.к. код не понимаю пока. Но если найду время на изучение и анализ, то с удовольствием им воспользуюсь. С функциональной точки зрения мне оно больше понравилось, чем собственное.

UPD2:

Обозначу явным образом плюсы и минусы некоторых подходов к работе с паролями:

Локальный МенеджерПаролей: Плюсы — криптостойкость, минус: возможная утеря устройства.

Облачный МенеджерПаролей (на чужом сервере): Плюсы — криптостойкость, доступность. Минусы: взлом ресурса, злой умысел, сдача контролирующим органам без вашего ведома.

Свой РесурсПоГенерацииПаролей: плюсы — контроль, возможность развернуть хоть на утюге (в моем случае), стойкость за счет отсутствия сохраненных паролей. Минусы (в моем случае): генерация пароля на сервере. Причем это скорее полу-минус, ибо сервер и система полностью мои.




К сожалению, не доступен сервер mySQL