Что сервис видит, а чего не видит
Сервис синхронизации хранит шифротекст. Каждое поле содержимого в контракте API типизировано как непрозрачный шифротекст и сохраняется, подсчитывается, измеряется и возвращается, ни разу не будучи разобранным. Ключи содержимого существуют только на авторизованных клиентских устройствах, поэтому выдача членства на сервере не даёт возможности расшифровать.
Утечка метаданных документируется, а не отрицается. Злоумышленник, получивший базу, узнаёт идентификатор учётной записи, идентификаторы и открытые ключи устройств, членство в организациях и группах, идентификаторы областей безопасности, эпохи ключей, идентификаторы и типы объектов, ревизии, размеры и отметки времени — этого достаточно, чтобы понять, сколько у вас хостов и когда вы работаете, но не что в них написано.
Четыре потока, которые остаются раздельными
Аутентификация учётной записи, разблокировка хранилища, подтверждение устройства и аутентификация на хосте — четыре независимых потока. Вход в учётную запись не разблокирует хранилище; разблокировка хранилища не аутентифицирует вас на хосте; подтверждение устройства — это подписанное действие, выполняемое другим устройством.
Нет универсального ключа восстановления, нет обхода для разработчика, нет фиксированного ключа шифрования, нет тихого перехода на незашифрованное хранение и нет чёрного хода для расшифровки через сброс пароля. Сброс пароля прямо сообщает, что хранилище не затронуто, потому что так и есть.
Ограничения, которые не смягчаются
Скомпрометированное разблокированное устройство может прочитать и использовать доступные ему секреты. Шифрование защищает данные при хранении и передаче от третьих лиц; оно не защитит вас от вашего же скомпрометированного компьютера.
Авторизованные получатели сохраняют то, что уже расшифровали. Исключение участника или смена ключа защищают только будущее содержимое; отозвать выданное нельзя. Кроме того, совершенно новое устройство не может доказать, что сервер отдал ему самое свежее состояние: обнаружение отката сравнивает с локально закреплённой контрольной точкой, которой при первой синхронизации ещё нет.
Протокол не проходил независимую экспертизу. Эта экспертиза — условие выпуска, и её нельзя удостоверить самостоятельно. Пока она не пройдена, ничто здесь не описывается как готовое к промышленной эксплуатации, а «использует шифрование» не значит «прошло аудит».
Исходные документы
Эта страница кратко излагает файлы ниже. Полный и авторитетный текст — в них.
docs/security/THREAT_MODEL.md
Путь в репозиторииdocs/security/CRYPTO_PROTOCOL.md
Путь в репозиторииSECURITY.md
Путь в репозитории