4 December 2009

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

System administrationNetwork technologiesCellular communication

Взаимодействие 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.: Да, и готов выслушать замечания/предложения!
Tags:sim-картаsmart cardweb-сервер
Hubs: System administration Network technologies Cellular communication
+99
8.9k 79
Comments 25
Popular right now
Senior Software Engineer - BrightScript (Roku)
from 3,000 to 4,500 $UscreenRemote job
Wireless Systems Engineer
from 100,000 to 200,000 ₽ON SemiconductorСанкт-Петербург
Tech Lead DevOps Engineer
from 5,000 to 5,600 $Atto Trading Technologies LLCКиев
Разработчик systemverilog/verilog
from 150,000 to 200,000 ₽KraftwayМосква
Art Director/Head of Design Department
from 240,000 ₽Direct Line DevelopmentМосква
Top of the last 24 hours