Опасность использования мобильного кошелька
Современные мобильные устройства все чаще используются для выхода в Интернет. Экран мобильного телефона существенно отличается по своим возможностям от экрана компьютера, да и скорость мобильного Интернета ограничена. Поэтому для мобильных устройств было разработано специальное средство для доступа к ресурсам Интернет -протокол беспроводного доступа WAP (Wireless Application Protocol), который стал достаточно распространенным.
С появлением новой технологии все большую популярность стали приобретать специальные приложения. К таким приложениям относятся мобильные кошельки. С помощью этого сервиса пользователь может в режиме on-line проверить состояние своего банковского счета. Для этого необходимо запустить на телефоне программу «Мобильный кошелек» и сделать с его помощью соответствующий запрос. Приложение установит безопасное WAP-соединение со шлюзом необходимого банка и обменяется требуемой информацией. В результате пользователь увидит на экране телефона состояние своего банковского счета. Кроме того, с помощью подобных сервисов можно осуществлять платежи, переводить деньги на счет мобильного телефона, оплачивать покупки.
Услуга эта весьма удобная и в настоящее время набирает все большую популярность. Чем шире распространяется данный сервис, тем больше внимания ему уделяют злоумышленники, которые используют в своих атаках не только ошибки банковских программистов, но и ошибки проектировщиков услуг мобильной связи.
К сожалению, в погоне за прибылью банки не всегда задумываются об обеспечении безопасности своих сервисов.
Атака, результатом которой является снятие денег с чужого банковского счета, является следствием уязвимости технологий, лежащих в основе доступа в сеть Интернет с мобильного устройства.
Использование мобильного кошелька для получения информации о вашем счете в банке может привести к тому, что вы лишитесь средств не только на мобильном телефоне, но и на банковской карте.
Разработчики уже упоминавшегося ранее протокола беспроводного доступа WAP старались максимально скопировать хорошо зарекомендовавшую себя технологию World Wide Web. В WAP используется тот же способ адресации ресурсов, что и в WWW, те же обозначения типов данных.
В WAP существуют свои аналоги языка разметки HTML и скриптовых языков. Обычно запрос с мобильного устройства в сеть Интернет посылает либо специальный WAP-браузер, либо специальное приложение. В нашем случае, это мобильный кошелек. Далее запросы поступают на WAP-шлюз. В функции WAP-шлюза входит преобразование запросов из формата WAP-протокола в формат WWW-протокола и обратно. Кроме того, WAP-шлюз преобразует данные с целью оптимизации трафика и уменьшения объема передаваемых по сети данных.
Как и в WWW-протоколе, в WAP существуют свои средства для защищенной передачи данных. Если в WWW-протоколе к таким относится SSL, то в WAP — это WTLS (Wireless Transport Layer Security). Протокол WTLS был разработан и внедрен для обеспечения сохранности персональных данных при передаче информации между беспроводными терминалами, в том числе между сотовыми телефонами. Количество устройств, активно использующих WTLS-протокол, в настоящее время приближается к нескольким десяткам миллионов.
Как уже упоминалось, WTLS-протокол по своей сути очень схож с протоколами SSL и TLS, но все же имеет ряд различий, которые обусловлены следующими причинами:
- низкой скоростью передачи данных между мобильными терминалами;
- невысокой производительностью процессоров большинства мобильных устройств;
- неполной реализацией криптографических преобразований ввиду ограничений архитектуры сотовых телефонов.
Именно на основе приведенных особенностей и был разработан протокол WTLS, лишь частично опирающийся на знакомую архитектуру SSL и TLS.
Внесенные изменения в архитектуру SSL и TLS привели к тому, что в новом протоколе появились существенные уязвимости. Так, попытки снизить нагрузку на центральный процессор мобильных устройств привели к тому, что WTLS-протокол обладает крайне слабой системой шифрования. Объясним это на простом примере. Прежде всего, напомним, что большинство протоколов защищенной передачи данных основаны на использовании понятий закрытого и открытого ключа.
Открытый ключ — ключ, используемый для того, чтобы зашифровать некоторый пакет данных пользователя. После того, как данные зашифрованы, расшифровать их можно, используя закрытый ключ. Открытый ключ не является секретным и может свободно распространяться. Точные копии одного и того же текста, зашифрованные с помощью открытого ключа, имеют одинаковые зашифрованные сообщения.
Закрытый ключ — ключ, известный только своему владельцу. С помощью этого ключа можно расшифровать любые пакеты данных. Знание открытого ключа не дает возможности определить закрытый ключ.
Пусть два абонента — банк и мобильный кошелек пользователя на сотовом телефоне — хотят установить безопасное соединение. Для этого банк вырабатывает открытый ключ Е и отправляет его мобильному кошельку по открытому каналу, то есть по каналу, который может прослушивать злоумышленник.
Закрытый же ключ банк хранит у себя. Это секретный ключ.
Мобильный кошелек вырабатывает некоторую случайную последовательность байт X. Чтобы отправить ее банку, он применяет функцию шифрования, используя для этого открытый ключ. В результате получается зашифрованное сообщение, которое банк расшифровывает, применяя свой закрытый ключ.
Далее начинается защищенный обмен информацией между банком и мобильным кошельком. Банк, зная случайное сообщение X, вырабатывает новое сообщение XN. Делает он это следующим образом:
XN=X XOR N,
где XOR — это логическая операция побитового исключающего ИЛИ, N — это номер передаваемого по защищенному каналу сообщения. Далее происходит шифрование передаваемого сообщения PN:
CN = Е (XN, PN),
где Е — это операция шифрования на ключе XN.
Соответственно, для передачи следующего сообщения будет сначала выработано сообщение XN+1, а потом уже CN+1.
Казалось бы, данная схема позволяет быть уверенным в полной безопасности системы. Но это не так. Дело в том, что мобильные кошельки, как и большинство других приложений, работающих по WAP, передают информацию небольшими пакетами, что связано с характерными особенностями передачи данных по каналам мобильного интернета.
Пусть пользователь вводит свой пароль в мобильном кошельке на своем сотовом телефоне. Каждая буква пароля отправляется в собственном пакете данных, который шифруется отдельно.
Пусть злоумышленник перехватывает эти пакеты. Пакеты зашифрованы, а значит, злоумышленник не может догадаться о содержимом пакета, но он знает, что в его руках оказалась шифровка следующего формата:
CN = Е (X XOR N, PN)
Если злоумышленник прослушивал сеть начиная с того момента, как пользователь открыл приложение мобильного кошелька, то он знает номер N передаваемого сообщения. Этой информации достаточно для того, чтобы узнать пароль пользователя мобильного кошелька.
Ранее мы рассмотрели, как злоумышленник может получить контроль над посторонним сотовым телефоном. В частности, как он может установить вредоносную программу, которая сможет получить доступ к отрытому каналу между банком и мобильным кошельком. После того, как взломщик получит доступ к каналу, ему будет необходимо отправить в сеть якобы от мобильного кошелька следующее сообщение:
Р = N XOR G XOR S,
где G — это предполагаемая злоумышленником буква, которую атакуемый мог ввести в качестве одной из букв пароля, переданной в пакете с номером S, а N — это последовательный номер передаваемого пакета.
Перехватив уже зашифрованный пакет, он может сравнить его с пакетом номер S. Если зашифрованные значения совпали, то догадка мошенника верна и с помощью банального перебора он может получить пароль мобильного кошелька пользователя. А это в свою очередь открывает ему доступ к банковскому счету пострадавшего. Это не единственные недостатки реализации WTLS протокола. Существует еще целый ряд уязвимостей WAP-протокола.
Защититься от подобной атаки можно, если оставаться бдительным и помнить о ряде признаков того, что ваш мобильный кошелек может быть взломан. Прежде всего, с подозрением надо отнестись к тому, что у вас не с первого раза принимают вводимый пароль. Это может быть следствием того, что злоумышленник внедряет свои пакеты в передаваемые данные, тем самым делая перебор вашего пароля описанным выше способом. Конечно самым неприятным доказательством того, что ваш счет взломали, является стремительное уменьшение вашего баланса. Лучшей защитой по-прежнему является отказ от использования уязвимых мобильных кошельков ряда банков.