Хранение паролей: работа над ошибками

Автор темы
586
4
Сложная система - не сложная, а просто так описана

В предыдущей статье, я описал свой сетап хранения авторотационных данных (паролей). Многие эксперты изучили её и дали свои комментарии, - о том, где могут быть проблемы, о том, что можно упростить, и о том, что можно делать по другому.
Но начнём мы с небольшого объяснения, почему система такая сложная. Вспомним суть:
1) Для логина на "не значимые" сайты (например в аккаунт очередного AI-продукта) мы используем уникальный пароль, который храним в программе хранения паролей (парольном менеджере)
2) Для логина на "более важные ресурсы" (например в аккаунт на github), мы используем уникальный пароль, который храним в парольном менеджере, плюс одноразовый пароль (TOTP - Time-based One-Time Password) который нам покажет специальное приложение на телефоне.
Вот и всё. Это вся суть повседневного использования всей системы. Но почему она тогда казалась такой сложной? Вероятно из-за дополнительных слоёв защиты от самого себя или любых непредвиденных факторов. А именно:
  1. Защита от того, что мы потеряем телефон. Создание и хранение копии настроек приложения с одноразовыми паролями, что бы можно было его настроить на новом телефоне.
  2. Защите от того, что менеджер паролей перестанет работать. Создание и хранение копии всех паролей в отдельном файлике.
  3. Защита от того, что мы забудем главный пароль от менеджера паролей. Создание и хранение распечатанной копия главных паролей.
Поскольку эти меры предосторожности создают новую дыру в безопасности, нам приходится усложнять систему, и шифровать запасные копии:
  1. Шифруем копию настроек TOTP (паролем от приложения одноразовых паролей)
  2. Шифруем копию всех паролей из менеджера (паролем от парольного менеджера)
  3. Режем копию паролей на листике на 3 части по схеме Шамира и прячем в разных местах.
  • В качестве парольного менеджера используем Bitwarden.
  • В качестве TOTP используем Aegis.
  • В качестве инструмента деления записки с паролями используем Bananasplit.
  • В качестве шифратора используем Picocrypt.
Почему нельзя использовать 1 пароль по всюду

Использовать один пароль везде - это очень популярная схема. Она удобна и естественна. Как только вы впервые в жизни сталкиваетесь с регистрацией, вы придумываете пароль. На второй регистрации вы не тратите время и используете уже придуманный пароль. И так далее.
Так длится до тех пор, пока один из сайтов не откажется принимать ваш пароль, сославшись на плохую сложность пароля. Дальше есть 2 варианта: вы придумываете более сложный пароль, либо вы модифицируете первый пароль, добавляя в него дополнительные цифры и символы.
У такого подхода есть 2 проблемы:
  1. В какой-то момент вы начнёте путаться, где какая версия пароля: где просто пароль, где с цифрами, где с символами.
  2. Рано или поздно, один из "незначимых" сайтов взломают хакеры и узнают ваш пароль. Это может быть какой-то старый форум, на котором вы по быстрому зарегистрировались, что бы всего 1 раз получить какую, то информацию. А в итоге хакер получит тот же пароль, который вы используете на своей почте.
Проблема хитрых алгоритмов вместо парольных менеджеров

Есть хитрый способ использовать везде разные пароли и всё помнить без менеджера паролей. Нужно просто придумать собственный алгоритм генерации паролей.
Например:
  • для пароля от google.com: goo-bob-com
  • для пароля от wikipedia.org: wik-bob-org
  • для пароля от habr.ru: hab-bob-ruДумаю суть понятна.Проблемы начинаются, когда:
  • вам надо сменить пароль на новый
  • twitter.com переименовался в x.com, а пароль x-bob-com слишком короткий для системы
  • какая-то система просит, что бы были цифры
  • какая-то система не поддерживает символ "-"Даже, если вы придумаете как решить все эти проблемы в самом начале, в процессе эксплуатации всплывут новые проблемы, которые заставят вас вводить версии и путаться, на каком ресурсе какая версия.А при раскрытии вашего алгоритма (если кто-то увидит ваш пароль и разгадает алгоритм генерации), вам придётся вспоминать все места, где вы зарегистрированы, идти туда и менять пароли на какой-то более новый алгоритм.
Были ещё варианты оборачивать эти пароли хэш функциями. Будь то обычный sha1 или более продвинутый само-писаный скрипт.
Не знаю, как у остальных, но мне часто приходится вводить пароли в присутствии других людей. Это может быть собрание, презентация или просто коллега подошёл к моему рабочему месту и попросил меня что-то посмотреть, а я оказался не авторизирован. Получается я при нём должен открыть sha1-генератор онлайн, вписать туда пароль в открытом виде (или пусть даже в закрытом), скопировать результат и вставить в поле с паролем? Вам не кажется, что стоящий рядом человек сразу поймёт вашу систему?
Что мы пытаемся защитить

Многие удивлялись, зачем вообще нужна такая "сложная" и надёжная система для простых людей. Что именно защищать? Ведь у обычного человека нет секретов, достойных такой надёжной системы.
С этим я соглашусь. У меня тоже нет ничего настолько ценного, что бы закрывать это настолько, что сам google со всеми его мощностями не сможет это открыть.
Но у меня, как и у каждого из вас есть кое-что другое. Это ваша личность.
Очень редко, когда кто-то пытается вас взломать ради получения секретов. Зато намного чаще это делают, чтобы:
  1. Вести DDoS-атаки с вашего IP на мощностях вашего компьютера
  2. Рассылать с вашего почтового ящика спам и фишинговые письма
  3. Писать от вашего имени вашим контактам в мессенджерах с просьбой одолжить денег
  4. Брать на ваше имя кредит
  5. Покупать через ваш аккаунт с привязанной карточкой товары в интернете
  6. Любая прочая преступная деятельность, которая будет скрывать реальную личность злодея вашим именем.
Веб менее надёжен, но более удобен

Многие сочли bitwarden менее надёжным, чем keypass.
Это парольные менеджеры. Разница в том, что база паролей от bitwarden хранится в облаке у дяди, а база от keypass находится локально на вашем устройстве без вмешательства третьих лиц.
В случае с keypass, пользователи закидывают копию базы на dropbox или аналогичное файловое хранилище третьего лица, для удобства доступности базы и автоматического резервного копирования.
Оба менеджера шифруют и расшифровывают хранилище паролей локально, по мере необходимости, и третья сторона не может видеть сами пароли.
Оба менеджера имеют открытый исходный код, и могут быть проверены на наличие дыр на стороне клиента.
В bitwarden нормальным кейсом использования может считаться web-клиент, который находится на серверах третьего лица. Из-за этого клиент может быть тихо подменён на тот, который подсмотрит ваши пароли. Тут keypass действительно оказывается в лидерах по безопасности. Зато bitwarden вырывается вперёд в плане удобства, - вам не надо устанавливать клиент, он всегда под рукой на любом устройстве мира.
Насколько вероятно, что bitwarden на своих серверах разместит поддельный клиент? Думаю, это возможно только в том случае, если вы храните секрет, который стоит дороже всей компании, когда сам bitwarden готов пожертвовать репутацией и угробить своё творение и свой бизнес ради вашего секрета. Так что, если вы не собираетесь хранить пароль от bitcoin кошелька с миллиардом долларов, спокойно можете использовать bitwarden.