Аппаратный менеджер паролей PSD: безопасность и удобство без ввода паролей вручную

Краткий обзор: система использует специальное устройство (PSD), которое подключается к компьютеру через USB и эмулирует клавиатуру. Управление осуществляется со смартфона через Bluetooth-соединение. Ключевая особенность — высокая безопасность: потеря как самого устройства PSD, так и телефона не приведет к компрометации паролей. Более того, даже утечка мастер-пароля не позволит злоумышленнику получить доступ к данным, если у него нет всех компонентов системы. Как же это работает?

Какую проблему решает аппаратный менеджер паролей?

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

Главная задача PSD — решить проблему удобства ввода сложных паролей. Это важнее, чем может показаться. Когда пользователь придумывает пароль, он невольно учитывает, что его потом придётся вводить вручную — на загрузочном экране зашифрованного диска, при входе в операционную систему или даже в мобильном приложении. Ввод длинного 16-символьного пароля с использованием разных регистров и специальных символов — это мучительный процесс, который часто приводит к упрощению паролей и, как следствие, снижению уровня безопасности.

Ограничения программных менеджеров паролей

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

Среди таких сценариев:

  • Момент до загрузки операционной системы.
  • Работа с зашифрованными дисками или разделами.
  • Экран входа в операционную систему.
  • Системы с жёсткой корпоративной политикой, запрещающей использование запоминающих устройств или выполнение пользовательского кода.
  • Экзотические, специализированные или устаревшие операционные системы, не поддерживаемые менеджерами паролей.

Принцип работы PSD для пользователя

Аппаратный менеджер паролей (PSD) — это физическое устройство, способное хранить и автоматически вводить пароли длиной до 128 символов. Если не углубляться в технические детали, то с точки зрения пользователя всё просто: PSD подключается к целевому компьютеру как USB-клавиатура. Пользователь выбирает нужный пароль в приложении на своём смартфоне, и PSD вводит его. Связь между телефоном и PSD осуществляется по защищённому Bluetooth-каналу.

Архитектура системы

Вся экосистема состоит из трёх ключевых компонентов:

1. Домашний компьютер (MAIN_PC) со специальным программным обеспечением для первоначальной настройки и управления базой паролей.

2. Смартфон (PHONE) с Bluetooth и управляющим приложением.

3. Устройство PSD (Paranoia Satisfaction Device) — сам аппаратный менеджер.

PSD можно перевести как «Устройство для Удовлетворения Паранойи».

Начальная настройка и внесение паролей

  1. Подключите PSD и телефон к основному компьютеру (MAIN_PC).
  2. С помощью программы на компьютере внесите все ваши пароли в систему.
  3. Перенесите одну из созданных копий базы данных на ваш смартфон.

При этом создаются три копии базы: одна остаётся на MAIN_PC в качестве резервной, вторая записывается в память PSD, а третью необходимо установить на телефон. Такое дублирование защищает от потери данных.

Ежедневное использование

  1. Подключите устройство PSD через USB к любому компьютеру, на котором нужно ввести пароль (FOREIGN_PC).
  2. В приложении на телефоне выберите из списка нужную учётную запись или сервис.

PSD эмулирует нажатия клавиш, и компьютер воспринимает ввод так, будто пароль набирается с физической клавиатуры.

Безопасность системы PSD

Основная задача — создать максимально защищённую систему, минимизировав возможные векторы атак. Абсолютной защиты не существует, но можно сделать взлом чрезвычайно сложным.

Ключевые цели безопасности:

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

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

Принцип хранения паролей

Резервная копия на основном компьютере (MAIN_PC) — это просто зашифрованный JSON-файл с использованием алгоритма AES-256.

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

Обратите внимание: Четыре зоны роста менеджеров по продажам.

Поэтому в PSD используется принципиально иной подход: полные пароли нигде не хранятся (кроме зашифрованной резервной копии на MAIN_PC).

Алгоритм раздельного хранения:

  1. Для каждого пароля генерируется случайная последовательность байт фиксированной длины (часть 1).
  2. Исходный пароль комбинируется с этой случайной последовательностью с помощью операции XOR, в результате чего получается часть 2.

Таким образом, пароль можно восстановить, только выполнив операцию XOR между частью 1 и частью 2. Эти части хранятся раздельно: часть 1 — на телефоне пользователя, часть 2 — в памяти устройства PSD. Для ввода пароля телефон отправляет свою часть (по индексу) на PSD, где происходит мгновенное восстановление исходного пароля и его ввод. Формула: password_part_1[i] ⊕ password_part_2[i] = исходный_пароль[i].

Шифрование передаваемых данных

Но что, если злоумышленник перехватит Bluetooth-трафик и одновременно получит физический доступ к PSD? Теоретически, он сможет извлечь из памяти PSD вторые части паролей и, скомбинировав их с перехваченными первыми частями, восстановить пароли. Чтобы исключить этот сценарий, весь трафик между телефоном и PSD шифруется.

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

Изначальные ключи (BtKey для шифрования и HBtKey для проверки целостности) задаются на основном компьютере при первоначальной настройке. Каждый пакет содержит зашифрованные данные (индекс пароля и его первую часть), а также новые ключи для следующей сессии.

Последовательность работы протокола:

  1. Телефон генерирует новые ключи для следующего сеанса (BtKey[i+1], HBtKey[i+1]).
  2. Формирует полезную нагрузку: индекс пароля (PassId), первую часть пароля и новые ключи.
  3. Шифрует эту нагрузку с использованием текущего ключа BtKey[i] и добавляет код целостности HMAC, вычисленный с помощью HBtKey[i].
  4. Отправляет зашифрованный пакет на PSD.
  5. PSD расшифровывает пакет, проверяет его целостность и извлекает новые ключи.
  6. PSD немедленно генерирует ответ для телефона (хеш от текущего ключа HBtKey[i]), но пока не отправляет его.
  7. PSD удаляет старые ключи и заменяет их на новые, только что полученные.
  8. Восстанавливает полный пароль, выполняя XOR между полученной первой частью и второй частью из своей памяти.
  9. Вводит пароль на целевом компьютере, эмулируя клавиатуру.
  10. Отправляет заранее подготовленный ответ (хеш) на телефон.
  11. Телефон, получив и проверив ответ, также заменяет свои старые ключи на новые.

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

Заключение и дополнительные возможности

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

Мобильное приложение также имеет ряд продуманных функций для баланса между безопасностью и удобством. Например, доступ к зашифрованной базе имеет только фоновый сервис, что позволяет ввести мастер-пароль один раз и установить политику его автоматического сброса (скажем, через 30 минут бездействия).

Устройство PSD поддерживает возможность загрузки пользовательских прошивок, что открывает простор для реализации дополнительного функционала (например, использование его как обычной Bluetooth-клавиатуры).

Программное обеспечение для компьютера написано на .NET и хорошо работает под Mono. Однако под Linux существуют ограничения, связанные с поддержкой библиотеки для связи с PSD.

Весь исходный код для телефона и компьютера является открытым и доступен на GitHub.

Читайте Самые полезные и интересные материалы про Безопасность на Канале! 😎

#безопасность и мир #безопасность #интернет #шифрование #компьютер #телефон #пароль и защита #взлом

Больше интересных статей здесь: Гаджеты.

Источник статьи: Аппаратный менеджер паролей или как перестать вводить пароли!.