Как устроены SIM-карты и как их программируют
easy

Как устроены SIM-карты и как их программируют

Они умеют гораздо больше, чем кажется

С бытовой точки зрения сим-карта — это просто карточка со вшитым номером телефона, но для программиста всё гораздо интереснее. Дело в том, что сим-карта — это на самом деле мини-компьютер со своим процессором и памятью, а значит, его можно запрограммировать. 

Сим-карта — это компьютер

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

  • процессор примерно на 10 мегагерц — по мощности это примерно так же, как у процессора Intel 80286, который стоял в системных блоках в 80-х;
  • 256 килобайт памяти;
  • несколько килобайт оперативной памяти;
  • блок с энергонезависимой памятью для хранения настроек;
  • криптографические модули.

Вот как это выглядит изнутри:

Как устроены SIM-карты и как их программируют

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

Мощность такого компьютера не зависит от размера пластиковой части сим-карты. Чтобы компьютер работал, достаточно соблюдать размеры и форму контактов, а сам компьютер намного меньше этой контактной пластины.

Как устроены SIM-карты и как их программируют
Размеры сим-карт для разных устройств разные, но контакты всегда одинаковые, иначе сломается совместимость

На чём пишут софт для сим-карт

Так как возможности железа сильно ограничены, то программы для сим-карт пишут на языке, который использует все ресурсы по максимуму — это C. Технически можно было бы ещё писать на С++, но поддержка ООП съест часть памяти, а это уже критично. Такой подход позволяет вместить всю операционную систему карты в 15–20 килобайт.

С другой стороны, иногда ОС для карт пишут на ассемблере, но по объёму он почти такой же, как оптимизированный код на С. 

На сим-карте, кроме ОС, есть ещё свои приложения, например «Меню сим-карты». Многие думают, что это встроенные возможности телефона, но на самом деле меню обрабатывается на сим-карте. Так как железо в симке гораздо медленнее того, что стоит в телефонах, меню сим-карты отображается медленнее, чем все остальные настройки.

Кроме меню и ОС, на сим-карту можно записать любое приложение, которое может делать что угодно в рамках доступных ресурсов. Например, некоторые сим-карты несут в себе приложения Visa или Mastercard — это позволяет пользоваться симкой как банковской картой. 

Как карты регистрируются в сети

За регистрацию в сети отвечают два компонента: уникальный идентификатор карты (IMSI) и ключ шифрования (Ki). 

IMSI отвечает за регистрацию карты в сети — по нему оператор связи понимает, какая именно это сим-карта. Дальше оператор смотрит в базу данных и определяет, какой номер к ней привязан.

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

Что можно хранить на сим-карте

В сим-карте есть своя файловая система, но в упрощённом варианте. Всё, что хранится на карте — это файлы: 

  • настройки, 
  • адресная книга, 
  • СМС-сообщения, 
  • данные оператора. 

При этом для удобства файлы можно хранить в папках, например сообщения или телефоны друзей. Но даже папка здесь — это тоже файл, просто с другой пометкой внутри файловой системы.

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

Электронные сим-карты

В современных телефонах появились электронные сим-карты — e-sim. Вместо пластиковой карточки используется файл с прошивкой — он загружается в специальный чип на телефоне и после этого работает как обычная сим-карта. Такая прошивка приходит от оператора связи по интернету — самому прошить такое не получится.

Так как e-sim — это просто файл на телефоне, то работа с такой симкой происходит гораздо быстрее, чем с обычной. С другой стороны, на такой симке уже не получится сохранить контакты, чтобы потом переставить её в другой телефон.

Можно ли скопировать сим-карту

Технически да, но пользоваться клонированной сим-картой — незаконно. У операторов сотовой связи есть свои алгоритмы выявления и блокировки таких клонов. Самый простой из них — привязка к последней геолокации. Если сим-карта появляется в сети очень далеко от места последней регистрации, оператор может заблокировать такую карту. 

Ещё один способ защиты карт — сложный подбор Ki-ключа. Этот ключ нельзя считать напрямую из карты, его можно подобрать только перебором. Но после определённого количества неудачных регистраций операторы навсегда блокируют сим-карту.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy