E2EAuth
Ваши ключи. Ваши устройства. Полная защита.
Обзор
E2EAuth — это открытая кроссплатформенная спецификация аутентификатора, предназначенная для обеспечения безопасного, приватного и надёжного управления учётными данными многофакторной аутентификации на настольных и мобильных устройствах. Она поддерживает одноразовые пароли на основе времени (TOTP) и одноразовые пароли на основе HMAC (HOTP), со сквозным шифрованием синхронизации, локальным хранением в первую очередь и социальным восстановлением через доверенных контактов.
E2EAuth построен вокруг принципов владения пользователем, архитектуры с нулевым разглашением, совместимости, прозрачных практик безопасности и свободы от привязки к поставщику. Секреты аутентификации остаются под контролем пользователя, а службы синхронизации или восстановления не должны получать независимый доступ к хранилищу учётных данных пользователя.
Основные принципы
- Безопасность прежде всего: защита секретов аутентификации на всех этапах хранения, синхронизации, восстановления и использования.
- Сквозное шифрование: гарантия того, что только авторизованные устройства пользователя могут расшифровать хранилище учётных данных.
- Локальная работа в первую очередь: возможность генерации кодов аутентификации без подключения к интернету.
- Владение пользователем: предоставление пользователям контроля над учётными данными, устройствами, ключами шифрования, резервными копиями и схемами восстановления.
- Кроссплатформенная совместимость: поддержка безопасного доступа в настольных и мобильных средах.
- Архитектура с нулевым разглашением: предотвращение независимого чтения содержимого хранилища серверами, операторами служб и контактами для восстановления.
- Прозрачность открытого исходного кода: обеспечение публичного анализа спецификации, реализации, средств защиты и изменений.
- Совместимость: поддержка устоявшихся стандартов аутентификации и переносимой миграции учётных данных.
- Устойчивое восстановление: предоставление безопасных вариантов восстановления без создания несанкционированного доступа или централизованных бэкдоров восстановления.
- Аудируемые операции: ведение прозрачных записей о действиях, значимых для безопасности, без излишнего раскрытия секретов аутентификации.
Основные модули
Управление учётными данными аутентификации
- Поддержка учётных данных TOTP в соответствии с RFC 6238.
- Поддержка учётных данных HOTP в соответствии с RFC 4226.
- Возможность добавления учётных данных путём сканирования совместимых QR-кодов.
- Поддержка ручного ввода имён издателей, идентификаторов учётных записей, общих секретов, алгоритмов, длины кода и других необходимых параметров.
- Проверка импортированных параметров учётных данных и выявление неподдерживаемых конфигураций.
- Генерация кодов аутентификации локально с использованием соответствующего алгоритма и параметров учётных данных.
- Отображение индикаторов обратного отсчёта для кодов на основе времени.
- Отслеживание состояния счётчика HOTP и безопасная синхронизация обновлений счётчика между авторизованными устройствами.
- Поддержка имён учётных данных, информации об издателе, меток учётных записей, значков, категорий, тегов и заметок.
- Обеспечение поиска, сортировки, фильтрации и избранного.
- Чёткое отображение статуса истечения и регенерации кодов.
- Поддержка безопасного копирования кодов аутентификации с настраиваемым поведением очистки буфера обмена.
- Минимизация раскрытия секретов и кодов в журналах приложений, уведомлениях, отчётах о сбоях и диагностических данных.
- Чёткое выявление недействительных, просроченных, неподдерживаемых или потенциально конфликтующих учётных данных.
- Сохранение работоспособности учётных данных при отсутствии подключения устройства к сети.
Безопасное хранилище и локальное хранение
- Хранить учётные данные аутентификации в защищённом локальном хранилище.
- Шифровать конфиденциальные данные учётных данных при хранении.
- Отделять ключи шифрования хранилища от хранимых данных учётных данных.
- Использовать безопасные платформенные механизмы для защиты ключевого материала, специфичного для устройства, когда они доступны.
- Поддерживать управляемый пользователем механизм разблокировки хранилища.
- Поддерживать надёжное формирование ключей на основе пароля там, где используются пароли.
- Обеспечивать опциональную биометрическую разблокировку через поддерживаемые средства безопасности операционной системы.
- Применять настраиваемую автоматическую блокировку после бездействия или ухода приложения в фон.
- Требовать повторную аутентификацию для чувствительных операций в соответствии с определяемыми пользователем политиками безопасности.
- Защищать от случайного раскрытия через превью приложений, скриншоты (где поддерживается), историю буфера обмена и содержимое уведомлений.
- Обеспечивать безопасную блокировку хранилища и завершение сеанса.
- Избегать хранения секретов аутентификации в открытом виде в журналах, временных файлах или незащищённых резервных копиях.
- Сообщать об ограничениях защиты на уровне устройства и рисках скомпрометированных операционных систем.
Сквозное шифрование и управление ключами
- Шифровать содержимое хранилища до того, как оно покинет исходное устройство.
- Обеспечивать невозможность независимой расшифровки данных учётных данных поставщиками синхронизации.
- Использовать устоявшиеся, независимо проверенные криптографические алгоритмы и протоколы.
- Определять требования к аутентифицированному шифрованию, безопасному формированию ключей, обработке nonce и ротации ключей.
- Устанавливать аутентифицированные идентификаторы устройств и безопасный обмен ключами для сопряжения устройств.
- Предотвращать присоединение неавторизованных устройств к сети синхронизации пользователя.
- Защищать синхронизируемые данные от подмены, повторного воспроизведения и несанкционированного изменения.
- Привязывать зашифрованные записи к соответствующим контекстным метаданным, чтобы предотвратить непреднамеренную подмену между хранилищами или записями.
- Разделять обязанности аутентификации, шифрования, идентификации устройств и восстановления.
- Не допускать появления паролей, ключей шифрования, долей восстановления и секретов аутентификации в телеметрии или диагностическом выводе.
- Поддерживать отзыв доступа устройства и ротацию соответствующих ключей шифрования.
- Чётко сообщать, что ранее авторизованные или скомпрометированные устройства могут сохранять информацию, которую они уже расшифровали.
- Документировать криптографические допущения, модели угроз, жизненные циклы ключей и ограничения восстановления.
Синхронизация между устройствами