16 декабря 2015

Как устроены SIM-карты. Часть первая: история вопроса

Новости Технологии

Привычная нам SIM-карта, которую так легко переставить из одного телефона в другой, появилась совсем не одновременно с рождением мобильного телефона как такового. Первые мобильные телефоны работали в «привязанных» стандартах связи: параметры подписки записывались непосредственно в память мобильного терминала. Причем в самых старых аналоговых стандартах вроде NMT-450 — даже без защиты: при желании можно было скопировать запись в другой телефонный аппарат и создать его клон, разговаривать за счет владельца или принимать адресованные ему звонки.

Как устроены SIM-карты. Часть первая: история вопроса

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

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

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

То есть функции авторизации возложили не на сам аппарат, а на внешний процессор, встроенный в смарт-карту, которую назвали SIM (Subscriber Identity Module, «модуль идентификации абонента»). Данные о подписке абонента перестали быть зависимыми от самого аппарата — стало возможным использовать любые устройства, меняя их сколь угодно часто.

SIM-карта является, по сути, смарт-картой стандарта ISO 7816 и не особенно отличается от других контактных чиповых карт — например, банковских или таксофонных. Первые «симки» имели точно такой же размер, о котором и сегодня напоминают стартовые пакеты операторов связи: просто миниатюризация телефонов очень быстро привела к тому, что полноразмерные карты (1FF) перестали помещаться внутрь аппаратов, поэтому придумали легко выламывающийся модуль (mini-SIM или 2FF), в котором содержатся чип и контактные площадки, но гораздо меньше лишнего пластика.

Как устроены SIM-карты. Часть первая: история вопроса

Несмотря на дальнейшую миниатюризацию (micro-SIM — 3FF, а затем и nano-SIM — 4FF), форма и расположение контактных площадок, а также принципы работы встроенных чипов остаются неизменными вот уже почти 25 лет, а большие пластиковые «болванки» до сих пор выпускаются для того, чтобы услугами мог воспользоваться даже абонент с очень старым телефоном, — таков стандарт.

Что характерно, многие старые аппараты при этом не смогут прочитать современную «симку», даже если она будет полноразмерной. Дело в том, что ранее повсеместно для питания процессора SIM-карты использовалось напряжение 5 В, а теперь в ходу 3 В. И ради экономии многие производители выпускают SIM-карты с поддержкой только одного напряжения, а не двух — в старом пятивольтовом сотовом телефоне у SIM-карты просто сработает защита по питанию и процессор работать не станет.

В постоянную память SIM-карты уже на этапе производства записываются IMSI (International Mobile Subscriber Identity, «международный идентификатор мобильного абонента») под конкретного оператора, заказывающего модуль, а также 128-битный ключ Ki (Key Identification, «индивидуальный ключ аутентификации пользователя»). Если говорить грубо, это логин и пароль абонента, намертво зашитые в «железе» SIM-карты.

Соответствие IMSI учетной записи определенного абонента с его телефонным номером хранится в базе данных оператора, именуемой HLR (Home Location Register, «база информации об абоненте»). Эти данные копируются во временную базу данных VLR (Visitor Location Register, «база посещающих абонентов») в каждом конкретном сегменте сети, в котором в определенный момент времени находится абонент.

Авторизация происходит очень просто: при регистрации VLR отправляет на телефон абонента случайное 128-битное число (RAND), из которого на основе ключа Ki процессор SIM-карты вычисляет по алгоритму A3 32-битный ответ SRES, который отправляется обратно в VLR. Если ответ совпадает с ожидаемым, то происходит регистрация в сети.

По другому алгоритму, A8, также на основе RAND и Ki, вычисляется еще один временный ключ — Kc. А уже на основе этого ключа по третьему алгоритму, A5, происходит шифрование данных, передаваемых в эфир.

По умолчанию шифрование включено всегда, однако в ряде случаев (например, по требованию ФСБ во время выполнения спецопераций) оно может отключаться — тогда разговоры происходят без шифрования и легко перехватываются из эфира. На старых телефонах в этот момент на дисплее отображается открытый замочек, на современных смартфонах, кроме BlackBerry, по этому поводу полная тишина.

Кстати, существует атака для прослушивания телефонных разговоров из эфира — с использованием устройства под названием IMSI Catcher. Оно эмулирует базовую станцию, на которой регистрируются телефоны, и ретранслирует все сигналы на настоящую БС.

В этом случае весь процесс авторизации происходит в штатном режиме (взлом ключей не требуется), но «поддельная» базовая станция дает аппарату команду работать без шифрования, соответственно, звонок без шифрования проходит через нее и прослушивается без ведома оператора.

Интересно, что такая уязвимость — это вовсе не «баг» стандарта, а самая что ни на есть «фича», заложенная на этапе разработки по требованию спецслужб, чтобы те могли реализовывать атаки типа Man-In-The-Middle в ходе оперативно-разыскных мероприятий.