2FASync
Синхронизируйте шифротекст, а не открытые секреты
Сохранить доступ к одному набору TOTP на нескольких устройствах можно без хранения каждого секрета в читаемом виде на сервере. Для этого шифрование выполняется до отправки данных.
Google подтверждает аккаунт, но не открывает записи
Вход через Google OIDC связывает запрос с членской учётной записью. Отдельные ключи хранилища расшифровывают данные локально. Получить шифротекст на новом устройстве недостаточно, если у вас нет предусмотренного способа разблокировки.
Серверу всё же нужны некоторые метаданные
Для согласования изменений могут сохраняться зашифрованные элементы, версии, сведения об устройствах, слотах ключей и сессиях. Удалённые записи могут передаваться через зашифрованные отметки об удалении. Клиентское шифрование не означает полное отсутствие любых следов аккаунта.
Открытый браузер остаётся зоной риска
Вредоносный код внутри уже разблокированной страницы способен попытаться прочитать доступные данные. Поэтому ни шифрование, ни «неэкспортируемый» ключ браузера не дают абсолютной защиты от полностью заражённого устройства.
Почему обновление может появиться на другом устройстве позднее
Допустим, вы переименовали элемент на домашнем ПК, а рабочий ноутбук несколько дней был без подключения. Когда он снова откроет хранилище, приложение должно сопоставить зашифрованные версии и изменения. Если оба устройства независимо изменили одно и то же поле, может потребоваться явное разрешение конфликта. Аналогично, отметка удаления должна дойти до устройств, прежде чем исчезнувший элемент перестанет отображаться везде.
Для таких решений сервер может хранить идентификаторы аккаунта и устройства, сведения о сессии, версии, шифрованные элементы и отметки удаления. Это не раскрывает ему обычным путём сам TOTP-секрет, но не означает абсолютного отсутствия метаданных. Защита содержимого на сервере также не спасает от вредоносного скрипта, который получает доступ к уже открытому хранилищу в браузере.
Зачем серверу номера версий, если содержимое зашифровано?
Они помогают согласовать изменения и удаления между устройствами. Наличие служебных метаданных не означает, что сервер читает сами секреты записей.
