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

в 21:16, , рубрики: информационная безопасность, метки: , , ,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Логи nginx

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

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

Инструкция для тех, кому лень писать свое

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

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

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

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

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

Автор: Командир судна

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js