На прошлой неделе я подумал, что иногда мессенджер 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
- Другие пакеты для ведения журнала и т. д.
Немного об интерфейсе:
Немного о технической реализации:
Ключ регистрации:
- Пользователь регистрирует ключ по команде
- Ключ хеширован и сохранен
- Создан пользователь с user_id из телеграммы и ключевого хэша
Менеджер разблокировки:
- Отправить ключ командой разблокировки /unlock
- Хэш-ключ и проверьте его в БД
- Сохраните ключ в памяти по user_id
- Вернуть разблокированный интерфейс
Добавить пароль:
- Отправить пароль
- Используйте сохраненный ключ из памяти
- Зашифровать пароль
- Сохранить зашифрованный пароль в БД
Показать пароли:
- Рендеринг пользовательского интерфейса с паролями по имени
- После нажатия на пароль найдите зашифрованный пароль в БД
- Используйте сохраненный ключ из памяти
- Расшифровать пароль и вернуть пароль в течение 10 секунд
Вы можете найти предварительную демонстрацию здесь: https://t.me/EncryptedWalletBot
И все исходники находятся в репозитории GitHub: https://github.com/Fuchsoria/Encrypted-Password-Manager