Пользователь
0,0
рейтинг
4 декабря 2009 в 00:33

Как превратить SIM-карту в Web-сервер

Взаимодействие SIM-карты с внешним миром


Не так давно я начал разбираться в GSM — во-первых тема сама по себе очень интересная, во-вторых это мне полезно по долгу службы. =)

В процессе очередных исканий в интернете наткнулся на интересную статью, описывающую интерфейсы общения мобильного телефона и SIM-карты. Не буду пересказывать статью целиком, лишь отмечу что исходя из нее, эволюция этих интерфейсов включает такие основные стадии: GSM Phase 1, GSM Phase 2 и спецификация JavaCard для специальных SIM-карт, способных выполнять сильно обрезанную Java Virtual Machine. Вконце статьи был следующий текст:

PS А для окончательного расширения горизонтов сознания поищите в Google-е слова «How to turn SIM card into Web Server» :)

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

Описание технологии


Сегодня большая часть волнений по поводу беспроводного Интернета вызвана преимуществами, которые дает доступ к Всемирной Паутине используя мобильные сети. Мини- и WAP-браузеры стремятся превратить мобильный телефон в полноценный портативный компьютер (в то время как последний начинает скромно отступать под натиском мобильных платформ). В то же время, «обратных» мыслей возникает сравнительно мало — что же мобильная сеть может предложить Web.
Для безопасной, надежной аутентификации, которая является основной предпосылкой для биллинга клиентов в больших масштабах, до сих пор нет общепринятого решения. Различные попытки были сделаны, чтобы обеспечить необходимую технологию безопасности в Интернет, но ни одна из них не получила широкого распространения — все подходы на практике признавались либо слишком небезопасными, либо слишком трудными для конечного пользователя. Благодаря сильному сходству с кредитной карточкой, смарт-карта является подходящим вариантом, но необходимая инфраструктура для решений основанных на смарт-картах является слишком сложной и дорогостоящей для установки и настройки.
GSM, в свою очередь, предоставляет широко используемую инфраструктуру безопасности в форме симметричных ключей, распространяемых в SIM. Более 250 миллионов абонентов (думаю данные более чем устарели) не расстаются с этими портативными смарт-картами, храня их в своих мобильных телефонах. Таким образом можно считать мобильный телефон таким-себе «беспроводным кард-ридером» с дополнительной «фичей» в виде канала ввода/вывода для доступа пользователя к приложениям внутри SIM.

Темой этой работы является то, что в то время как Web предоставляет свой контент мобильным телефонам, мобильные телефоны могут принести свою надежность в Web. Идея состоит в предоставлении Web-приложениям аутентификации и авторизации GSM SIM в простой и дружелюбной форме, такой как Web-сервер. Сервера наподобие WebSIM, как и любые другие, используют протокол TCP/IP и доступны из Интернет-хостов посредством HTTP. Конкретные сервисы предоставляемые сервером на базе SIM, такие как аутентификация, могут быть реализованы на SIM используя CGI скрипты.
image
Технически это достигается реализацией веб-сервера в GSM SIM и разрешению HTTP-запросов к SIM и HTTP-ответов от нее. С точки зрения GSM, этот HTTP-сервер предоставляет определенные части существующего программного интерфейса приложений GSM SIM (ETSI GSM 11.11 и GSM 11.14) в Интернет. Это делает общение с SIM в мобильном телефоне идентичным общению с любым другим веб-сервером в Интернет, предоставляя прозрачный доступ к SIM (например, для аутентификации).

Имея HTTP-сервер в SIM, нам необходимо подключить его к Интернет. Элегантным подходом было бы использовать мобильный телефон как маршрутизатор для SIM. Причем если мы не хотим присваивать отдельный IP-адрес SIM, мы можем настроить в SIM-апплете прослушивание порта 80 на мобильном телефоне.
Такой подход, хоть и легко интегрируется с такими технологиями как GPRS, накладывает дополнительные требования на модель мобильного телефона и создание нового стандарта ETSI. Даже если такой стандарт будет согласован вовремя, для выхода на рынок потребуется как минимум 2-3 года. Поэтому был придуман другой подход, который может быть реализован с использованием имеющихся уже сегодня протоколов и оборудования.

Перечисленные выше трудности можно обойти с помощью решения, которое очень часто встречается в Интернет — прокси-сервера. Установив для SIM прокси в Web, мы сделали возможным доставлять пакеты с помощью SMS прямо в SIM. Таким образом мы не зависим от телефона и используем существующие и широко применяемые протоколы и стандарты.
image
Процесс связи с SIM через прокси и SMS выглядит следующим образом:
  1. Интернет-хост отсылает HTTP-запрос к прокси SIM.
  2. Прокси запаковывает запрос в специально теггизированное SMS и отсылает в SIM.
  3. SIM передает входящее SMS соответствующему обработчику (исходя из тега).
  4. HTTP-пакет извлекается и обрабатывается веб-сервером в SIM.
  5. HTTP-ответ снова упаковывается в SMS и отсылается назад к прокси.
  6. Прокси извлекает HTTP-ответ из СМС и отсылает назад хосту, пославшему запрос.

В результате чего, SIM может быть доступна любому Интернет-хосту и кроме этого появляются дополнительные возможности:
  • реализация файрвола между Интернетом и GSM
  • защита от атак, направленных на отказ от обслуживания
  • NAT между Интернет-адресом SIM и GSM-адресом мобильного телефона, в котором эта SIM находится
  • предоставление биллинга для WebSIM сервисов
  • исключение необходимости реализации TCP/IP стека в SIM.

Итак...


На этом общие описания заканчиваются. В статье также обсуждается реализация базового веб-сервера по описанной схеме и примеры его работы. Описывать их не буду (просто не уверен насколько эта статья вообще будет кому-то интересна, потому не хочу стараться зря), отмечу только что апплет написан на языке Java, имеет размер около 7 кб (при дополнительных ухищрениях может быть ужат до 5 кб) и реализует базовую функциональность HTTP 1.0, что позволяет при желании расширять его функциональность без резкого прироста в размере приложения.

Спасибо за внимание!

Вопрос: Насколько, на ваш взгляд, эта идея актуальна сегодня (ведь сама статья датируется 2000-м годом)? И лично мне не совсем понятно почему не учитывается скорость доставки смс, которая может быть ооочень маленькой (да и вообще доставка не гарантируется)…

P.S.: Эта статья прошла песочницу, так что спасибо неизвестномуmikeSP за инвайт и будьте снисходительны :)

P.P.S.: Да, и готов выслушать замечания/предложения!
Степанов Игорь @stepio
карма
22,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (25)

  • НЛО прилетело и опубликовало эту надпись здесь
    • +3
      Вообще логично, но есть пару замечаний:
      1) По-моему в SIM старого образца не было встроенной JVM, так что там эту идею реализовать было бы крайне проблематично. Кстати, кто знает, как часто сейчас вообще используют Java Card в обычных SIM?
      2) Про дифф анализ питания карты — для меня тоже новость. Я читал что интерфейса для чтения KI у SIM нет, а потому копировать ее крайне проблематично — можно попробовать вычислить KI брутфорсом, но число выполнений криптоалогоритма в течении короткого интервала времени ограничено — если что не так, SIM заблокируется.
      3) Не знал про ограниченность числа выполнений криптоалгоритма (защита от брутфорса, которую упомянул выше, не в счет)… Насколько информация достоверна?

      А вот операторы — это да… довольно печально… В этом плане идея хороша только для случая «идеальных операторов», от которых не хочется свалить после очередной «акции» :)
      • 0
        По третьему пункту:
        Количество запросов к симке ограничивается на уровне 64К в большинстве случаев. Об этом пишут почти везде, где идет обсуждение копирования симок. Почитайте еще про «COMP128v1», «COMP128v2»
        KI вытаскивается достаточно долго, и то — со старых симок 2000-2002 годов выпуска.
        У меня получилось вытащить их всего из двух симок, и то — уже заблокированных оператором.
        • +1
          Я ничего не понял из вашей беседы. Можете объяснить по-русски, чего бояться?
          • +1
            Суть в том, что в каждой SIM зашито несколько ключей (чисел), на основе которых и производится аутентификация абонента у оператора.

            Исходя из этого, обсуждалось, что теоретически эти ключи можно определить путем различных манипуляций с SIM, например брутфорс — передавать в нее сигналы аналогичные сигналам оператора (которые он использует, чтоб определить какая симка к нему обращается) и анализировать ее ответы.
            Но количество таких запросов ограничено до примерно 65000 (после этого симка «погибает»), потому реально после такого брутфорса симка становится неработоспособной, а значит, такие действия бесполезны.

            Так что лично я сделал 2 вывода:
            1) Использования симки для авторизации «везде где попало» значительно сократит ее срок жизни.
            2) Можно боятся операторов — у них есть все эти ключи безо всякой мороки :)
          • 0
            Коротко:
            Симка перестает работать после того, как наберется это количество обращений к ней.
            Новые алгоритмы защиты сводят эффективность брутфорса к нулю.
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    а ещё бы смс дешёвые…
  • +2
    Вопрос: Насколько, на ваш взгляд, эта идея актуальна сегодня (ведь сама статья датируется 2000-м годом)?

    На то время, возможна статья и была актуальна. Когда возможности мобильных телефонов были не столь широки, говорили даже о том, что возможно встроить веб браузер в сим карту (да да, «коннект» осуществлялся бы через смс).
    Сейчас же, нет смысла использовать процессор сим карты, когда на телефонах есть все необходимое.
    Хотя эти технологии все же используются, хотя несколько иначе. Посмотрите на сим меню вашего телефона. Оператор, кстати может его обновлять без вашего ведома :)
  • 0
    Спасибо всем за карму, перенес топик в Телекомы (по идее это ближе всего по теме)
  • +3
    Еще в SIM надо внедрить файл-сервер и желательно файрвол :)
    Ну и желательно свою батарею и зарядник.
    • +4
      А еще ЖК-дисплей, клавиатуру, микрофон и динамик.
      • 0
        Угу. Также HDMI, eSata, и мышку на PS/2 обязательно.
        • НЛО прилетело и опубликовало эту надпись здесь
          • +14
            И вставить в него сим-карту, в которую неплохо было бы встроить…
    • –1
      И выпустить свой дистрибутив линукса SIM/KSIM OS.
      Специально для SIM карт. Сейчас это модно :)
  • 0
    «всередине» подправьте, плиз.
    • 0
      Сенкс)
  • 0
    «в виде конала ввода/вывода»
    • 0
      Спасибо, поправил
  • 0
    Хм, надеялся на листинги или что-то подобное. Но все равно хорошо
  • 0
    Вообще вопрос ипользования SIM для аутентификации и ко не нов, но в виду разрозненности операторов, их политик и технической ограниченности карт (по сегодняшним меркам они предоставляют весьма скромные ресурсы) эта идея не получила особого распостранения. А вот поднимать ещё и вебсервер над нужными протоколами имхо совершенно излишне, создаёт лишь потенциальные проблемы, инкапсуляция запросов и ответов в SMS тоже не блещет. В 2000г может казалось и интересным запускать какой-то софт на карте, на сегодня любой телефон предоставляет много более интересную платформу, и аутентифицируется достаточно просто по номеру, тогда как работа в IP сетях требует дополнительных слоёв безопасности и по сей день весьма ограничена, лишь каждый сотый телефон в мире в лучшем случае настроен выходить в нет по GPRS, зато практически каждый может запустить сложное Java приложение и проводить любые аутентификации посредством получения и отправки SMS, совершения звонков итд итп. Тут конечно свои проблемы, но имхо будущее аутентификации на SIM вне мобильных операторов весьма призрачное
  • 0
    1. отличные буду пинги ))) прямо как до Марса
    2. сколько байт влезет в ответный смс серверу? ) разве что "" )))
    3. коротко — укуренный бред. )
    • 0
      2. * зараза съела теги… сколько байт влезет в ответный смс серверу? ) разве что "(html)(head)(/head)(body)(/body)(/html)" )))
      • 0
        1. Это меня и самого волнует, надеялся на мысли «местных»:)
        2. Ну… Вы написали всего 39 символов, одно смс без кириллицы — 160 символов, плюс SMS может быть из нескольких частей. Да и в конце-концов не будут же прокси и SIM обменивать вольными сочинениями — вполне логично разработать компактный формат сообщений вида «атрибут-значение».
        3. Неконструктивно :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.