После создания своей базовой станции на базе YateBTS я обнаружил серьёзные ограничения с шифрованием радиоканала. Это привело меня к поиску альтернативного решения. В этом материале я расскажу о том, как развернуть сеть на платформе OsmoBTS, как программировать SIM-карты, и какие интересные возможности открываются, когда вы сами являетесь оператором.

Моё увлечение мобильными сетями началось давно. Я интересовался их архитектурой, принципами проектирования и механизмами работы. Однако моя основная профессиональная деятельность не была связана с этой сферой, поэтому я решил самостоятельно углубиться в изучение функционирования мобильных сетей.

Всё началось с предыдущего материала о развёртывании базовой станции GSM с помощью YateBTS. Впоследствии я понял, что YateBTS содержит множество ограничений, которые препятствуют полноценной реализации всех функций современной сотовой сети, особенно в части шифрования. Сегодня я предлагаю познакомиться с платформой OsmoBTS и рассмотреть те функции, которые остались за пределами предыдущего материала.

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

Важно

Материал носит исключительно информационный и образовательный характер и предназначен для специалистов в области информационной безопасности. Авторы и редакция не несут ответственности за любой ущерб, вызванный неправомерным использованием представленной информации. Распространение вредоносного программного обеспечения, нарушение нормального функционирования информационных систем и нарушение конфиденциальности переписки преследуются в соответствии с действующим законодательством. Вся информация в этом материале рассматривается исключительно в теоретическом и историческом контексте и не предназначена для практического применения.

Теоретические основы

Разберёмся в теории, необходимой для понимания принципов работы мобильной сети. Хотя теоретическая часть не является обязательной для запуска испытательного стенда, её понимание крайне полезно. Если вы хотите сразу перейти к практике, вернитесь к этому разделу позже, когда встретите незнакомые термины.

Наша лабораторная установка будет работать в режиме коммутации каналов (CS) с двумя активными абонентами на обычных мобильных телефонах. Для приёма и передачи радиосигнала мы используем устройство USRP N210, а в качестве основного вычислительного ядра — ноутбук ThinkPad E14. Данные в сети будут зашифрованы с использованием алгоритма A5/1, хотя он и считается устаревшим.

Наша цель — создать полностью функциональную сеть для голосовых вызовов и текстовых сообщений без подключения к интернету. Полноценный интернет-доступ требует использования пакетной коммутации (PS) и наличия дополнительных компонентов SGSN и GGSN. Текстовые же сообщения могут работать, используя только канальный режим коммутации.

Мы также проверим возможность установки собственного идентификатора отправителя для СМС и функциональность служб экстренного оповещения.

Архитектура мобильной сети: основные компоненты

Начнём с основных элементов: базовая станция, контроллер базовых станций, ядро коммутации, база абонентов, система маршрутизации сигнализации и медиашлюз. Все эти компоненты необходимы для базового понимания архитектуры сети.

Базовая станция (BS) — это приёмопередающее устройство в сотовой сети, которое служит связующим звеном между мобильным устройством абонента и сетью оператора. Она принимает сигналы от абонентов и передаёт им сигналы из сети. По сути, это относительно простой радиомодем, который не принимает важные решения самостоятельно. В коммерческих сетях базовые станции обычно устанавливают на высоких конструкциях с секторными антеннами для обеспечения широкого покрытия.

Контроллер базовых станций (BSC) — это главный управляющий элемент подсистемы базовых станций. Он координирует работу всех подключённых к нему станций. BSC отвечает за переключение абонентов между базовыми станциями при их перемещении, управляет распределением частот и мощностью передатчиков, а также устанавливает соединения между устройствами и основной сетью, действуя как промежуточное звено между BS и коммутационным ядром.

Коммутационное ядро (MSC) — это центральная система сотовой сети. Оно обеспечивает связь между контроллерами базовых станций и внешними сетями. MSC в совокупности с базой абонентов (HLR) отвечает за проверку подлинности абонентов при подключении к сети.

База абонентов (HLR) — хранилище, в котором содержится вся информация об абонентах, включая уникальный идентификатор IMSI, номер мобильного телефона (MSISDN), криптографические ключи (Ki) и другие необходимые параметры для аутентификации и обслуживания абонента.

Система маршрутизации сигнализации (STP) — это узел, который маршрутизирует сигнализационный трафик по протоколам SS7/SIGTRAN. STP соединяет BSC и MSC и обеспечивает обмен служебной информацией между всеми компонентами сети.

Медиашлюз (MGW) — компонент, отвечающий за управление голосовым трафиком между абонентами и элементами сети. MGW взаимодействует с BSC и MSC и обрабатывает потоки голоса в формате RTP. В крупных сетях часто используется несколько шлюзов для распределения нагрузки, но в небольших установках оба компонента могут подключаться к одному MGW.

Различие между коммутацией каналов и пакетами

Коммутация каналов (CS) — это метод связи, при котором для каждого абонента на время сеанса выделяется отдельный коммуникационный канал. В сетях 2G в режиме CS передаются голосовые вызовы, текстовые сообщения и служебная информация.

Коммутация пакетов (PS) — это более современный метод, где информация передаётся отдельными пакетами, и каналы не закреплены за конкретным абонентом. Через PS передаются интернет-данные, услуги GPRS/EDGE и другие пакетные приложения.

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

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

Для лучшего понимания рассмотрим упрощённую схему работы 2G-сети в режиме коммутации каналов, сосредоточившись только на пути данных абонента.

На этой схеме показаны два абонента (MS1 и MS2), подключённые к разным базовым станциям (BS1 и BS2). Все станции управляются одним контроллером базовых станций (BSC), который напрямую обменивается данными с медиашлюзом (MGW) и системой маршрутизации (STP). Коммутационное ядро (MSC) также подключено к MGW для обеспечения голосовой связи. MSC и BSC должны работать согласованно для корректной работы голосовых вызовов. Кроме того, MSC имеет прямой доступ к базе абонентов (HLR).

Процесс подключения нового устройства к сети

Что происходит, когда новое устройство подключается к сети 2G в режиме коммутации каналов?

Процесс начинается с регистрации устройства. Предположим, что HLR и MSC уже располагают информацией об абоненте — в базе имеются ключи авторизации и идентификатор IMSI. После включения мобильного телефона он сканирует доступные в округе сети, обнаруживает их базовые станции и получает от них служебную информацию. Это включает точную синхронизацию частоты с помощью специального канала FCCH (Frequency Correction Channel) и получение параметров базовой станции: кода страны (MCC), кода оператора (MNC), кода локации (LAC) и идентификатора соты (Cell ID). На основе этой информации устройство решает, стоит ли регистрироваться в этой сети.

Когда устройство решает пройти регистрацию, оно запрашивает выделенный коммуникационный канал. Для этого отправляется запрос типа CHANNEL REQUEST, в котором указывается, что канал требуется для Location Update Request (LU) — запроса на обновление местоположения. Сеть отвечает пакетом IMMEDIATE ASSIGNMENT и предоставляет абоненту специальный канал SDCCH (Standalone Dedicated Control Channel). Через этот канал устройство может напрямую отправлять запросы в сеть и получать ответы.

Затем клиент передаёт сам запрос LU, где указывается тип обновления — это может быть смена территориального района обслуживания или активация новой SIM-карты. В запросе может быть указан старый LAI, состоящий из кода страны (MCC), кода оператора (MNC) и кода локации (LAC).

В конце запроса обязательно указывается идентификатор абонента — либо временный идентификатор (TMSI), либо, если он отсутствует, уникальный идентификатор (IMSI). Предпочтительно использовать TMSI, так как это временный идентификатор, что снижает необходимость передачи ценного уникального IMSI по радиоканалу.

После отправки LU базовая станция перенаправляет его в коммутационное ядро, которое проверяет абонента в базе HLR. Если всё в порядке, выполняется проверка подлинности SIM-карты, после чего при необходимости активируется шифрование на радиоинтерфейсе.

Теперь, когда все компоненты системы синхронизированы и абонент проверен, его можно полностью зарегистрировать в сети. Это означает добавление в базу VLR (Visitor Location Register, в архитектуре Osmo встроена в MSC) с актуальной информацией: выданным TMSI, новым LAI, профилями услуг и другими параметрами. После этого сеть отправляет пакет LU ACCEPT, подтверждающий завершение регистрации.

Так как в ответе новому абоненту выдан новый TMSI, устройство должно подтвердить получение этого идентификатора пакетом TMSI REALLOCATION COMPLETE. В противном случае сеть впоследствии не сможет распознать абонента по старому TMSI.

После завершения регистрации выделенный канал больше не требуется, соединение разрывается, и устройство возвращается в режим ожидания. Выделенный канал SDCCH используется только временно для процедур наподобие обновления местоположения, отправки текстовых сообщений или инициирования голосового вызова.

Текстовые сообщения в сетях 2G с коммутацией каналов

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

Предположим, оба абонента уже прошли регистрацию, и сеть их узнаёт. Для отправки текстового сообщения устройству отправителя нужно каким-то образом доставить его в сеть. Для этого запрашивается коммуникационный канал SDCCH, используя процедуру, которую мы подробно описали выше.

После установления канала устройство передаёт текстовое сообщение в сеть, используя служебное сообщение SMS-SUBMIT. Оно проходит через OsmoBTS, затем через OsmoBSC и поступает в OsmoMSC. Центр обработки текстовых сообщений принимает сообщение и помещает его в очередь для доставки, откуда MSC будет пытаться доставить его получателю.

Начинается процесс поиска адресата. Нужно определить, находится ли получатель в сети и через какой MSC/VLR можно с ним связаться. В архитектуре Osmocom используются два подхода: встроенный центр обработки текстовых сообщений в MSC (в нашем случае) или доставка через протокол GSUP. В обоих случаях сеть ожидает активности абонента-получателя, а затем устанавливает с ним соединение и после выделения канала доставляет сообщение MT SMS (Mobile Terminated SMS).

Основные компоненты сетевого ядра Osmocom

Мы рассмотрели функции каждого компонента сети. Однако в архитектуре Osmocom некоторые компоненты объединены в один, а другие могут иметь названия, отличающиеся от стандартной терминологии. Исторически все эти блоки были интегрированы в один проект под названием OsmoNITB (Network In The Box), но разработчики впоследствии переработали архитектуру, разделив её на отдельные модули, которые можно изучать относительно независимо.

Этот материал дополняет, но не заменяет официальную документацию. Многие технические детали намеренно упрощены. Полную документацию по каждому компоненту можно найти на официальном веб-сайте проекта Osmocom.

OsmoHLR

OsmoHLR (Home Location Register) хранит всю информацию об абонентах. Он содержит данные о регистрации абонентов в сетях 2G/3G: уникальный идентификатор (IMSI), номер мобильного телефона (MSISDN) и криптографические ключи для генерации идентификационных векторов, о которых мы поговорим позже.

Внутри OsmoHLR используется встроенный протокол GSUP (Generic Subscriber Update Protocol), база данных SQLite для хранения информации об абонентах и два интерфейса управления: интерфейс CTRL (Control Interface), обычно используемый для автоматизации и сбора метрик, и интерфейс VTY (Virtual Teletype), применяемый для настройки компонента, изменения конфигурации и добавления новых абонентов.

OsmoMSC

OsmoMSC (Mobile Switching Center) — ключевой элемент архитектуры сети, отвечающий за маршрутизацию практически всего трафика в сети, проверку подлинности абонентов и установку соединений с внешними сетями.

MSC напрямую взаимодействует с HLR и MGW для обеспечения связи между абонентами. Из HLR, как упоминалось ранее, извлекается вся информация о криптографических ключах и основные параметры регистрации, включая IMSI.

OsmoMSC поддерживает множество протоколов, но самый важный в контексте этого материала — это MGCP (Media Gateway Control Protocol). MGCP используется для управления медиашлюзом (MGW). Сам MSC не занимается коммутацией потоков RTP на низком уровне, а управляет MGW через MGCP.

На схеме показана внутренняя архитектура MSC. Из неё видно, что компонент VLR (Visitor Location Register) встроен непосредственно в OsmoMSC.

OsmoBSC

OsmoBSC — это контроллер базовых станций в архитектуре Osmocom. Он поддерживает множество различных реализаций базовых станций. На схеме красным цветом выделены компоненты, которые мы будем использовать в этом материале.