Как работает проверка подлинности Whatsapp?

Я хочу разработать мобильное приложение и использовать whatsapp как регистрацию пользователя. Теперь я вспоминаю проблемы безопасности, которые обсуждались несколько лет назад. Whatsapp используется для аутентификации пользователей просто по их номеру телефона и IMEI. Теперь, конечно, это не очень безопасно, но я действительно не знаю, как сделать это более безопасным.

Теперь я больше ничего не слышал о проблемах проверки подлинности Whatsapp в течение длительного времени, поэтому я думаю, что теперь у них есть безопасный метод. Вы знаете, как Whatsapp делает это сегодня?

Ответ 1

Я возьму удар по этому вопросу.

Насколько я знаю, Whatsapp по-прежнему использует ваш номер телефона в качестве основного уникального идентификатора. При первом входе в систему Whatsapp вы подтверждаете, что номер телефона является вашим собственным.

Однако во второй раз Whatsapp предоставляет секретный ключ при входе в систему. Это помогает избежать некоторых из служб атак, таких как Telegram, где SMS можно вызвать и перехватить в любой момент для доступа к учетной записи (посмотрите, как работает их веб-вход).

В самом деле, этот секретный ключ, который они предоставляют, является вашим идентификатором, который хранится безопасно локально, который должен использоваться во всех последующих запросах. Конечно, пользователи переключают телефоны. В таком случае учетная запись должна быть повторно активирована через SMS, где будет создан новый секретный идентификатор, недействительный предыдущий.

Следовательно, злоумышленник может попытаться использовать протокол перехвата SMS, о котором я говорил, посредством повторной активации. Проблема заключается в том, что вы поймете, что кто-то перехватывает ваш трафик сразу, потому что Whatsapp будет отключен на вашем собственном устройстве. Поэтому это может быть успешным только в том случае, если вы не проверили Whatsapp на некоторое время или были в разгаре интернет-простоя. В целом, это делает их метод безопасным.

@Srinivas То, что вы заметили, - это не что иное, как Whatsapp, сохраняющий, что конкретный номер телефона не может быть проверен в течение следующих двух часов, независимо от происхождения запроса, на их сервере проверки.


EDIT: В ответ на комментарий @Srinivas:

Последняя часть вашего ответа абсолютно правильная. Я сделал несколько тестов, и он работает, как вы сказали. Благодарю. Но я не понимаю, в первый раз логин и второй раз.

Я извиняюсь за то, что не был тщательным. Я попытаюсь объяснить.

Как я вижу whatsapp, начальный экран регистрируется (см. экран запроса sms), а второй логин - это код проверки (проверьте смс-код). Можете ли вы предоставить дополнительную информацию для моего понимания, пожалуйста?

То, что я имел в виду при первом входе в систему, - это весь процесс проверки SMS. Следовательно, я разделим его на два сегмента:

  • Вход в первый раз: пользователь запрашивает код подтверждения SMS. Они должны правильно вводить код, если с другого устройства, или, в качестве альтернативы, Whatsapp распознает SIM-карту и завершает проверку автоматически. Затем они регистрируются и имеют доступ к своим недополненным или резервным сообщениям, если это ранее существовавшая учетная запись.

  • Вторичный вход: сразу же после этого процесса проверки Whatsapp поставляет секретный токен доступа, который хранится локально на устройстве. Таким образом, в любое время, когда они открывают приложение и пытаются подключиться к серверу, они должны использовать этот ключ доступа. Как я уже объяснил, если они захотят повторно активировать свою учетную запись на другом устройстве, им придется снова выполнить шаг 1 с нового устройства, которое затем сгенерирует новый секретный ключ - аннулирует предыдущий и делает его только для входа в систему с помощью нового устройства.

Вот некоторая документация, которую я нашел, кто создал аналогичный api: github.com/mgp25/Chat-API/wiki/WhatsApp-Registration-Flow. пожалуйста, предоставьте свой ценный ввод

Я просмотрел документацию, и они точно соответствуют тому же шаблону. Что может вас смутить, это начальный "токен запроса кода". Это просто ключ, который проверяет действительность устройства, которое делает запрос для завершения шага 1. Это обеспечивает легитимность происхождения пользователя, который пытается зарегистрировать свое устройство.

Вот как это работает:

Пользователь хотел бы выполнить первый шаг. Поэтому они отправляют маркер запроса на сервер вместе со своей личностью (номер телефона). Это код, который был доставлен при загрузке приложения.

Этого еще недостаточно для остановки перехвата SMS во время шага 1. Учитывая, что происхождение запроса является законной установкой Whatsapp, код подтверждения SMS может дать злоумышленнику доступ к учетной записи пользователя. Однако, как я уже отмечал ранее, это делает недействительным ранее сгенерированный секретный ключ с шага 2. Таким образом, пользователь заметит, что они были локально локализованы, если они активно используют Whatsapp и подключены к Интернету.

Дайте мне знать, если будет больше путаницы.

Ответ 2

В настоящее время Whatsapp разрешает вам использовать приложение, просто отправив вашему телефону текстовое сообщение. Если ваша SIM-карта вашего телефона имеет тот же номер, который вы ввели, Whatsapp автоматически берет код из текстового сообщения и разрешает ваш телефон. Если нет, вам все равно придется обратиться к телефону, который использует этот номер телефона, и ввести код подтверждения.