Как работают GPS чипы?
Изначально статья задумывалась как поднятие проблемы определения геолокации, но вообще и для опсека полезно знать как работает наше привычное оборудование. В большинстве курсов, к сожалению, такое опускается и очень зря, имхо.
Про безопасность чипов будет сказано в самом конце.
Возможно, я плохо искала, но особо не нашла информации про реверс самих чипов или про реверс геоAPI. Если вы видели такие исследования, скиньте, пожалуйста, в комментарии.
Также мне стало интересно как решают проблему контроля GPS-чипов в защищенных вариантах смартфонов, поэтому я спросила у знающего человека по мобилкам, на что мне ответили, что такое можно решить только на уровне железа и обычно используется смартфон без радиомодуля, а для звонков используется внешний модуль.
Архитектура и структура GPS-чипа
Какова т̶в̶о̶я̶ ̶п̶р̶о̶ф̶е̶с̶с̶и̶я̶ твоя архитектура?
RF-приемник (Radio Frequency Receiver)
RF-приемник отвечает за улавливание радиосигналов, поступающих от спутников. GPS-спутники транслируют сигналы на фиксированных частотах, обычно L1 (1575.42 MHz) и L2 (1227.60 MHz), для них есть же усилители. В сам приемник входит:
- антенна: в GPS-чипах чаще используется внешняя антенна, встроенная в корпус телефона
- фильтры и усилители (думаю, их назначение и так понятно)
- конвертер частоты
Наиболее распространенные фильтры:
- SAW-фильтры (Surface Acoustic Wave): фильтруют высокочастотные сигналы (около 1.5 ГГц) и удаляют нежелательный частотный мусор.
- Керамические фильтры: фильтруют сигналы от внешних источников, таких как Wi-Fi и сотовая связь, и уменьшают их влияние на GPS-приемник.
- Полосовые фильтры (Bandpass Filters): пропускают сигналы только в пределах заданного частотного диапазона (например, частоту L1 в 1575.42 МГц для GPS) и блокируют частоты вне этого диапазона. Это помогает исключить интерференцию от других сигналов, лежащих близко к диапазону GPS.
- Фильтры нижних частот (Low Pass Filters): отсекают высокочастотные шумы.
Естественно, часто эти фильтры комбинируют.
Наиболее распространенные усилители:
- LNA (Low Noise Amplifier) — малошумящий усилитель: усиливает слабые сигналы от спутников с минимальным добавлением собственного шума. Обычно размещен близко к антенне, чтобы свести к минимуму потери и помехи на этапе усиления.
- AGC (Automatic Gain Control) — усилитель с автоматической регулировкой усиления: регулирует усиление сигнала в зависимости от его уровня. Подобная адаптивность позволяет поддерживать постоянный уровень сигнала.
- PGA (Programmable Gain Amplifier) — программируемый усилитель: позволяет вручную настраивать уровень усиления в зависимости от ситуации.
Сигнальный процессор (DSP — Digital Signal Processor)
После приема и первичной обработки сигнал передается в цифровой сигнальный процессор (DSP), который является ключевым компонентом GPS-чипа, это станет понятно по тем функциям, которые он выполняет
- кодирование и декодирование сигнала: так как спутники передают зашифрованные сигналы, содержащие координаты спутника и временные метки, DSP должен эти сигналы декодировать, а при отправке наоборот кодировать.
- кросс-корреляция: по сути, это сопоставление сигналов от разных спутников и их синхронизация. Это помогает определить задержку сигнала и расстояние до спутника.
- обработка ошибки: DSP проверяет данных на наличие ошибок, вызванных шумами или отражениями сигнала (например, от зданий или других объектов), и корректирует их.
Навигационный процессор (Navigation Processor)
Навигационный процессор отвечает за вычисление местоположения на основе данных, полученных от DSP.
Как происходит расчет времени и расстояния? Об этом мы уже косвенно упоминали выше
Все просто — используются данные о временных метках, которые приходят от спутников, а процессор навигации вычисляет расстояние до каждого из них. Данные временных меток, исходящих от нескольких спутников, обрабатываются для определения позиции.
Еще очень помогает многоканальный режим, так как современные GPS-чипы могут одновременно отслеживать сигналы с множества спутников, что увеличивает точность и надежность системы, так как появляется возможность принимать сигналы с разных направлений и исключать слабые или ошибочные.
Память и микроконтроллер
В структуре GPS-чипа также предусмотрены встроенные модули памяти и микроконтроллер
Память реализуется в формате ROM и RAM и используется для хранения прошивки чипа, таблиц эфемерид (данных о положении спутников) и других доп данных. RAM, в свою очередь, задействуется для временного хранения промежуточных данных во время вычислений.
Микроконтроллер управляет процессом приема данных, настройкой режима работы и взаимодействием с операционной системой телефона. Он контролирует активность различных компонентов, чтобы оптимизировать энергопотребление. Об этом как раз будет дальше
Интерфейс для связи с ОС
Для передачи данных в ОС GPS-чипы используют интерфейсы вроде I²C, SPI или UART, через которые они передают информацию о местоположении или статусе работы.
Эти интерфейсы и будут своеобразными мостами между ОС телефона и чипом.
Есть несколько хороших статей о подключении к UART (это можно сделать даже с помощью флиппера) в контексте аппаратного взлома: https://www.secureideas.com/blog/author/travis-phillips
Связь GPS-чипа со спутниками
Когда GPS-чип активируется, он начинает поиск видимых спутников, определяя их положения.
Сначала он осуществляет «холодный старт» — процесс, при котором устройство, не имея никаких предварительных данных о спутниках, ищет сигналы с нуля. После того как координаты первых спутников установлены, начинается отслеживание спутников для постоянного обновления данных.
Мы говорили выше, что спутник передает чипу временные метки и координаты, но это не все.
Во-первых, передается псевдослучайный код, который служит для идентификации спутника.
Во-вторых, передаются эфемериды, которые содержат информацию для вычисления отклонения орбит, коэффициентов возмущений и т.д.
В-третьих, это альманах — это параметры орбиты, с помощью которых можно вычислить примерное местоположение спутников.
Все эти данные обновляются обычно несколько раз в сутки.
Модели связи со спутниками
Уже упомянутый холодный старт — это когда ничего не известно
Есть теплый старт — позиция и эфемериды неизвестны, время и альманах известны
Ну и горячий старт — альманах, эфемериды известны, время и позиция известны с некоторой ошибкой.
Важно упомянуть еще об A-GPS, которые позволяет устройству быстро получать данные о положении спутников от сотовой сети с помощью более быстрых каналов связи типа wi-fi.
Энергопотребление и оптимизация
GPS-чипы разработаны с учетом минимального потребления энергии. Например, в некоторых чипах применяются адаптивные режимы работы, где приемник активен только часть времени, что снижает нагрузку на батарею. Драйверы чипа контролируют эти режимы и могут отключить неактивные элементы, когда определение местоположения не используется, или снизить частоту обновлений для приложений, которым не требуется высокая точность.
Драйверы для GPS-чипов
Драйверы обеспечивают взаимодействие операционной системы с GPS-чипом, предоставляя программный интерфейс для управления аппаратными функциями и обмена данными между устройством и системой.
Драйверы обычно включают в себя функции для инициализации, настройки частоты обновления данных, активации и деактивации GPS-чипа, управления состоянием и сбора данных.
Например, ОС может включать и выключать GPS-чип по запросу, что помогает экономить батарею. Например, когда приложение закрыто или в режиме ожидания, ОС может отключить GPS-чип или перевести его в энергосберегающий режим, периодически обновляя координаты, чтобы поддерживать низкий уровень потребления энергии.
Локальные службы определения местоположения
Каждая ОС имеет встроенные службы для управления доступом к геолокации
На Android — это Google Location Services, обеспечивающая доступ к GPS, Wi-Fi и сотовой сети для определения местоположения и собирая данные от различных источников.
На iOS — это служба Core Location, работающая аналогичным образом, то есть, использует GPS, Wi-Fi и данные сотовой сети для определения координат. Core Location может включать поддержку A-GPS, ускоряя получение данных от спутников с помощью базовых станций.
Управление GPS-чипом
Когда пользователь выключает геолокацию в настройках, операционная система отправляет команду GPS-чипу прекратить работу, и он переходит в неактивное состояние или режим ожидания. При этом, если функция геолокации активирована, но включен режим энергосбережения, ОС может снижать частоту обновления данных о местоположении
В таком режиме чип прекращает приём и обработку сигналов от спутников, что значительно снижает энергопотребление. Это реализовано через контроллер питания, который управляет состоянием GPS-чипа, снижая нагрузку на батарею.
На уровне операционной системы функция отключения геолокации реализована через настройку разрешений и контроль доступа для приложений.
Qualcomm Snapdragon X55
Один из наиболее распространенных чипов.
RF-приемник (RF Receiver)
Частотные диапазоны: Snapdragon X55 поддерживает основные навигационные частоты, включая L1 (1575.42 МГц), L2 (1227.60 МГц) и L5 (1176.45 МГц), что позволяет принимать сигналы от различных глобальных навигационных систем (GPS, ГЛОНАСС, Galileo, BeiDou).
Содержит полосовые фильтры и SAW фильтры(SAW-фильтры Qualcomm имеют избирательность примерно 50 дБ) + малошумящий усилитель с минимальным коэффициентом шума, который обычно составляет около 0.5 дБ
В Snapdragon X55 используется многодиапазонная керамическая антенна или PCB-антенна (антенна, встроенная в печатную плату), которая может работать на частотах L1, L2 и L5.
В GPS-антеннах также часто используется круговая поляризация, что позволяет улучшить прием сигнала от спутников независимо от ориентации устройства.
Коэффициент усиления может достигать 20–30 дБ.
DSP
Qualcomm использует 32-битный сигнальный процессор, специально разработанный для работы с высокочастотными сигналами и алгоритмами навигации, работающий на частотах 600 МГц и выше.
Может одновременно обрабатывать до 32 каналов для приема спутниковых сигналов для улучшения точности.
DSP может применять разные алгоритмы кросс-корреляции для определения времени задержки сигналов от каждого спутника.
- Алгоритм Пирсона определяет степень корреляции между шаблонным сигналом и принимаемым сигналом, сравнивая их формы.
- Дискретная перекрестная корреляция помогает определить сдвиг временной метки спутникового сигнала относительно шаблона, что позволяет более точно рассчитать расстояние.
- Алгоритмы Шеннона используются, чтобы анализировать получаемые сигналы и исключать влияние шумов и интерференции.
Дополнительно Snapdragon X55 включает в себя алгоритмы для устранения эффектов многолучевости (отражение сигнала) для улучшения точности в условиях городской застройки. Это может быть метод статистического порогового отсечения, RAIM или алгоритмы на основе фазовой обработки.
Навигационный процессор
В Snapdragon X55 используется навигационный процессор, работающий на частоте до 800 МГц, он также способен принимать и обрабатывать сигналы на частотах L1, L2 и L5
Процессор уже содержит предзагруженные таблицы эфемерид и альманах, которые обновляются автоматически
Чип поддерживает все основные частоты 5G (Sub-6 и mmWave), LTE и A-GPS.
X55 поддерживает функцию управления питанием, которая динамически регулирует тактовые частоты и активность модулей в зависимости от интенсивности использования.
Есть несколько режимов:
- Режим дежурного ожидания (Standby Mode): когда GPS не используется, чип переходит в режим дежурного ожидания, при котором GPS-чип остается подключен, но не активен.
- Адаптивное обновление частоты (Adaptive Update Rate): в зависимости от режима активности GPS автоматически регулирует частоту обновления координат.
- Точечное обновление (Spot Update): этот режим позволяет устройству обновлять координаты только при значительном изменении положения, например, при перемещении на несколько сотен метров.
Память и кэш
Qualcomm Snapdragon X55 содержит выделенную область памяти для хранения эфемерид и альманаха. Объем встроенной памяти для эфемерид может достигать нескольких сотен килобайт, позволяя хранить данные для десятков спутников.
Чип также оснащен кэш-памятью объемом до 1 МБ, что позволяет сохранять промежуточные данные и быстро передавать их между компонентами DSP и процессором навигации.
Для хранения данных от антенны и RF-приемника используются небольшие буферы.
Интерфейсы и API
Snapdragon X55 поддерживает несколько стандартных интерфейсов для обмена данными с ОС — I²C, SPI и UART.
Безопасность
- GPS-чипы в современных телефонах часто интегрированы в SoC, которая объединяет на одном кристалле процессор, модем и другие функциональные блоки. Это значит, что GPS-чип взаимодействует с другими компонентами напрямую через внутренние шины данных и интерфейсы, которые недоступны снаружи.
- GPS-чипы используют защищенные прошивки, в которых применяются разные алгоритмы шифрования для защиты от модификации и декомпиляции. Например, прошивки могут быть зашифрованы на уровне загрузки, а алгоритмы могут использовать криптографические ключи, встроенные непосредственно в микросхему. При каждом обновлении или загрузке прошивка проверяет целостность и подлинность кода. Это предотвращает запуск неавторизованного кода.
- Некоторые GPS-чипы используют методы защиты на аппаратном уровне, например, аппаратный корень доверия (Hardware Root of Trust), который хранит ключи, управляет безопасностью запуска, обеспечивает защищенные области памяти и контроллеры безопасности. Это значит, что доступ к микрокодам и элементам прошивки может быть ограничен на аппаратном уровне, защищая чип от модификации. Про корень доверия неплохо написано здесь: https://www.rambus.com/blogs/hardware-root-of-trust/
- Для взаимодействия с процессором GPS-чип использует низкоуровневые протоколы связи, такие как I²C, SPI или собственные шины данных, которые могут быть недоступны для прямого подключения и зашифрованы.
- На аппаратном уровне чипы часто защищены от физического вмешательства: любые попытки пробить кристалл, перепаять выводы или извлечь информацию с помощью методов химического или лазерного вскрытия могут привести к автоматическому повреждению данных. Это реализовано через слои защиты в виде пассивных и активных защитных решеток, встроенных в микросхему, которые могут быть настроены на разрушение кристалла при попытке физического вмешательства.
Программная защита GPS-чипов
- Прошивка чипа содержит код с цифровой подписью, который загружается только после проверки подлинности, предотвращая запуск измененного кода.
- Secure Boot проверяет криптографическую подпись прошивки и всех загружаемых модулей.
- Аппаратный Hypervisor и защищенная среда исполнения (Trusted Execution Environment, TEE), которые используются, например, в современных чипах Qualcomm . Это изолированная среда, где хранится чувствительная информация и выполняются критически важные процессы.