На прошлой неделе я подумал, что иногда мессенджер Telegram очень полезен для быстрой отправки паролей или любой текстовой информации между вашими устройствами. Но это не всегда безопасно, когда вы сохраняете сырые пароли/текст где-то в мессенджерах. И я решил превратить менеджер паролей в телеграм-бота, сначала то, что я думал, что он должен быть безопасным и зашифрованным, и поэтому я остановился на таком техническом стеке:

  • Фреймворк Golang для Telegram API: github.com/tucnak/telebot
  • XXHash для хеширования нашего ключа в базе данных: github.com/cespare/xxhash
  • SHA256 для хеширования нашего ключа до типа 32b (будет использоваться для шифрования)
  • База данных SQLite: github.com/glebarez/sqlite
  • ORM для нашей внутренней базы данных SQLite: gorm.io/gorm
  • Другие пакеты для ведения журнала и т. д.

Немного об интерфейсе:

Немного о технической реализации:

Ключ регистрации:

  1. Пользователь регистрирует ключ по команде
  2. Ключ хеширован и сохранен
  3. Создан пользователь с user_id из телеграммы и ключевого хэша

Менеджер разблокировки:

  1. Отправить ключ командой разблокировки /unlock
  2. Хэш-ключ и проверьте его в БД
  3. Сохраните ключ в памяти по user_id
  4. Вернуть разблокированный интерфейс

Добавить пароль:

  1. Отправить пароль
  2. Используйте сохраненный ключ из памяти
  3. Зашифровать пароль
  4. Сохранить зашифрованный пароль в БД

Показать пароли:

  1. Рендеринг пользовательского интерфейса с паролями по имени
  2. После нажатия на пароль найдите зашифрованный пароль в БД
  3. Используйте сохраненный ключ из памяти
  4. Расшифровать пароль и вернуть пароль в течение 10 секунд

Вы можете найти предварительную демонстрацию здесь: https://t.me/EncryptedWalletBot

И все исходники находятся в репозитории GitHub: https://github.com/Fuchsoria/Encrypted-Password-Manager