Про GSM из первых рук

Взаимодействие SIM-карты с внешним миром (SIM-ME interface, SIM-Toolkit API, JavaCard API)

Создано: 2007-09-03

Вопрос:

  • Сим-карта может содержать какую-то програмку, которая появляется в меню моего телефона и может выполняться, если я с бодуна в нее ткну. Меню развлечений какое-то или еще что-то в этом роде. Так вот вопрос. В каких кодах разработана эта програмка, что она спокойно готова выполняться как на смартфоне нокия под SymbianOS, так и под тупой мабилой от мотороллы на совсем другом процессоре, например? Я подозреваю что там какой то аналог RPC – команда с параметами скармливается по шине, и получается результат, нет?

ОК, углубимся в детали того, что бывает в потрохах SIM-карты и как она взаимодействует с телефоном.

Как я уже говорил, SIM-карта представляет собой мелкий компьютер с ограниченой функциональностью и строго специфицированным внешним интерфейсом. Через этот интерфейс SIM-карту “дергает” телефон, который является для SIM-карты единственным окном во внешний мир.

Интерфейс между телефоном (ME) и SIM-картой действительно представляет собой что-то вроде RPC с ограниченым набором функций. Если быть точным, то в базовом API SIM-карты GSM Phase 1 их (функций) всего 17 штук (раздел 8 стандарта GSM 11.11). Большая их часть отвечает за навигацию по памяти SIM-карты и модификацию значений EF (elementary files). Кроме этого есть еще функция “RUN GSM ALGORITHM” (выполнение пресловутых алгоритмов A3/A8) и функция “SLEEP”, которая не используется в GSM Phase 2 :)

Естественно, что GSM-операторы очень быстро сообразили, что было бы очень неплохо иметь SIM-карты “не такие, как у всех”. Это, типа, дает конкурентное преимущество и все такое. Опять же, таким образом можно облегчать глупым пользователям доступ к value-added сервисам. Теперь не прийдется запоминать, что секс по телефону живет по номеру XYZ - в меню телефона будет пункт “секс по телефону”, который будет инициировать дозвон “куда надо”.

И вот где-то в начале девяностых спецификация на интерфейс между SIM и ME была расширена и туда были добавлены функции, обеспечивающие работу того, что обычно называют термином “SIM Toolkit”.

По-просту говоря, SIM Toolkit - это приложение (-ия), работающее на SIM-карте и взаимодействующие с ME по интерфейсу, описанному в GSM 11.14.

Такие приложения могут:

  • показывать текст на экране ME
  • инициировать посылку SMS/звонок/USSD-посылку на номер телефона, хранящийся на SIM-карте
  • пискнуть в динамик
  • вести диалог с пользователем (“Are you sure (Y/N)?”)
  • получать информацию извне с помощью SMS или Cell Broadcast и сохранять ее на SIM-карте
  • предоставлять дополнительные меню, отображаемые ME
  • модифицировать номера исходящих звонков или запрещать определенные звонки.

Учитывая, что специфицирован и стандартизирован только интерфейс SIM-ME, а сами приложения выполняются внутри SIM-карты, не имеет никакого значения, как именно и на чем они написаны.

Первые SIM-карты с STK содержали “статический” набор приложений, изменить которые можно было только поменяв саму SIM-карту. Понятное дело, что аппетит приходит во время еды, и очень скоро операторы поняли, что возможность менять STK “на ходу” - это наше всё. Но для реализации этой возможности надо было “открыть” процесс написания софта для SIM-карт и дать возможность независимым поставщикам писать приложения для SIM-карт, что явно было не по нраву производителям SIMок.

Решением стало появление SIM-карт, способных выполнять сильно обрезанную JVM (Java Virtual Machine) и создание спецификации JavaCard, позволившее третьим фирмам писать applet-ы для таких SIM-карт. В настоящий момент на рынке уже существует несколько моделей SIM-карт с немерянными объемами свободнй памяти - 32K или 64К, что позволяет разместить на них 2-3-4-5 апплетов.

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

Литература:

Комментировать в LiveJournal

blog comments powered by Disqus