Как WhatsApp обеспечил безопас... Заметка

Как WhatsApp обеспечил безопасный и бесшовный вход для 1 миллиарда пользователей с помощью парольных ключей

WhatsApp, крупнейшая в мире платформа обмена сообщениями, в 2023 году внедрила парольные ключи, повысив безопасность и удобство для пользователей. Эта инициатива была направлена на предоставление быстрого, устойчивого к фишингу метода аутентификации, который снижает трение для пользователей и защищает от захвата учетных записей. Майанк Мануджа, инженер Android в команде WhatsApp Registration and Access, руководил разработкой и внедрением. Работа для миллиардов пользователей потребовала учета различных сетевых условий, возможностей устройств и уровней цифровой грамотности. Парольные ключи предлагают упрощенный процесс входа в одно касание, используя криптографию с открытым и закрытым ключами с биометрической аутентификацией или блокировкой экрана. Это значительно ускоряет вход и надежно работает даже там, где традиционная доставка SMS OTP непостоянна.С точки зрения разработчика, API Credential Manager предоставил унифицированный интерфейс, упростив интеграцию, несмотря на многочисленные крайние случаи в различных версиях Android и конфигурациях устройств. WhatsApp и Google сотрудничали для оптимизации потока поиска учетных данных, улучшив задержку для новых пользователей парольных ключей. Они также создали комплексный слой обработки ошибок для управления специфическими для устройства препятствиями и обеспечения плавного снижения производительности, когда потоки парольных ключей не могли завершиться. Кроме того, они решали специфические для ОС исключения, внедряя улучшения на уровне платформы для более плавных потоков создания парольных ключей.WhatsApp усовершенствовал пользовательский опыт посредством обширного A/B-тестирования, разработав контекстную систему для запроса создания парольных ключей. На стороне сервера WhatsApp реализует стандартные церемонии WebAuthn/FIDO2, используя Erlang и библиотеку Rust webauthn-rs для проверки подписи. Архитектура сервера оркестрирует регистрацию парольных ключей, генерируя параметры для клиента, проверяя аттестацию и безопасно сохраняя учетные данные. Для аутентификации он извлекает действительные учетные данные, генерирует серверный вызов и проверяет утверждение клиента.Расширенные архитектурные соображения включали переход к системе с несколькими парольными ключами на учетную запись, что потребовало разработки системы с ограниченным списком для удаления старых учетных данных после достижения лимита. Этот значительный структурный сдвиг внедрялся постепенно посредством тщательного экспериментирования для обеспечения стабильности. Балансировка жизненного цикла учетных данных также потребовала тщательного управления сроком действия учетных данных.