GPS, спуфинг и электронные подписи

(Вынесу сюда из комментов.) Как, в общих чертах, работает спуфинг для GPS? Чтобы разобраться, нужно вспомнить, что такое сама эта GPS в генеральном, так сказать, смысле. GPS позволяет приёмнику определить с высокой точностью расстояние до нескольких спутников, входящих в состав системы. Расстояние вычисляется на основе принимаемых со спутников радиосигналов, ключевыми моментами является знание точного времени, действующего во всей системе (приёмник + спутники), и информация о точном местоположении спутников в каждый момент времени. Дальше – чистая геометрия. Понятно, что для практической работы простого приёмника потребуется четыре спутника (почему, кстати, не три?), до которых известно расстояние, и так далее, и тому подобное.

Спуфинг основан на нескольких особенностях системы (речь о гражданском канале GPS). Во-первых, сигналы и информация об астрономическом движении – открытые, поэтому, используя приёмник, находящийся в какой-то точке Земли, можно точно вычислить сигнальную обстановку GPS в любой другой точке в заданный момент времени (ну, если владельцы системы не внесли специальных помех, да). Вычислить эту обстановку можно с упреждением по времени. Во-вторых, опять же из-за того, что сигналы открытые и незащищённые, а к тому же слабые, требующие накопления для детектирования навигационной информации, можно сгенерировать поддельный сигнал GPS, который будет близок к реальному. Передатчик этого сигнала может находиться на земле, где-то неподалёку от того приёмника, который спуфят – задавить реальный сигнал по мощности несложно. В-третьих, активная помеха должна изменяться, имитируя движение атакуемого приёмника. Соответствующие параметры помехи вычисляются либо заранее, либо в режиме онлайн.

Дальнейшее развитие ситуации, думаю, особых пояснений не требует: приёмник передаёт в систему управления новые координаты, изменяющиеся, система управления старается компенсировать “дрейф” – и беспилотник, который должен был висеть на одном месте, начинает снижаться и, скажем, падает.

Теперь предположим, что навигационная система использует несколько “внешних” источников навигационной информации. Например, GPS + ГЛОНАСС. С одной стороны, такая система может обнаружить расхождение между показаниями, если GPS “подспуфили”. Но не ясно, что в таком случае этой системе делать? Она не может определить, происходит ли спуфинг GPS или, наоборот, ГЛОНАСС. И почему, кстати, GPS заслуживает меньшего доверия, чем ГЛОНАСС? Если отключать навигацию при каждом расхождении показаний, то возникают новые требования к синхронности двух независимых навигационных источников. То есть, дополнительный риск отказа без всякого спуфинга.

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

Теоретически, побороться с такой неприятной проблемой можно при помощи криптографии. Допустим, навигационные сигналы подписаны, открытый ключ для проверки зашивается в приёмник (в навигатор, хорошо), вместе с картами. Ключ можно обновлять и менять. Схемы отработаны. Теперь приёмник может определить, что он принимает поддельный сигнал. Это, правда, никак не помогает бороться с глушением сигнала полностью, но исключает проблему с “перехватом” управления тем или иным устройством, которое полагается только на спутниковую навигацию. Впрочем, в случае с криптографией, наложенной на слабые сигналы, возникает целый ряд новых проблем: как быстро проверять подпись? какой временной “фрейм” подписывать (понятно, что нельзя удостоверять каждую микросекунду сигнала)? и так далее. Поэтому, автономная инерциальная навигационная система, в качестве опорной, всё равно не помещает. Тем более, что спуфинг можно обнаруживать даже простым акселерометром.

()

Похожие записки:



Далее - мнения и дискуссии

(Сообщения ниже добавляются читателями сайта, через форму, расположенную в конце страницы.)

Комментарии читателей блога: 19

  • 1. 16th July 2012, 17:17 // Читатель зашел в гости написал:

    “Схемы отработаны.”

    SAASM? на какой стадии развития находится эта технология? вооруженные силы, вроде бы, должны были давно на нее переключиться, и проблема спуфинга по идее должна остаться чисто гражданской проблемой…

  • 2. 16th July 2012, 17:44 // Читатель зашел в гости написал:

    “какой временной “фрейм” подписывать (понятно, что нельзя удостоверять каждую микросекунду сигнала)?”

    кстати, почему нет? неужели процессор не справится?

  • 3. 16th July 2012, 19:20 // Читатель Jeff Zanooda написал:

    > четыре спутника (почему, кстати, не три?)

    Как почему – потому что четыре неизвестных (три координаты и время), так что нужно четыре независимых уравнения. От каждого спутника получаем одно уравнение. А время неизвестно, потому что точности внутренних часов приемника недостаточно.

  • 4. 16th July 2012, 19:43 // Читатель зашел в гости написал:

    “потому что четыре неизвестных”

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

  • 5. 16th July 2012, 22:29 // Читатель Jeff Zanooda написал:

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

    Представьте себе упрощенный случай – двумерную задачу. На плоскости в заранее известных местах стоят два метронома. Метрономы щелкают по известному расписанию. Часов у вас нет, но на слух вы можете определить разницу во времени между щелчками метрономов.

    Допустим для определенности, что щелчки приходят одновременно. Из этой информации однозначно определить свое местоположение нельзя, можно лишь сказать, что вы находитесь в каком-то месте на линии, проходящей точно межу метрономами. Чтобы убрать эту неоднозначность, нужен третий метроном. А в трехмерном пространстве – четвертый.

  • 6. 16th July 2012, 22:33 // Читатель Alatar написал:

    >> (почему, кстати, не три?)
    Вроде, теоретически и трёх достаточно, но только для определения трёх координат (в навигаторах обычно это называют 2D привязка). Четвёртый нужен для определения высоты.

    >> какой временной “фрейм” подписывать (понятно, что нельзя удостоверять каждую микросекунду сигнала)?

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

    >> Т.е. коррекции времени и не нужно вовсе, а лишь необходимы три сигнала для триангуляции.

    Ну да, конечно… И сигнал у нас в ионосфере распространяется с постоянной скоростью и приёмник у нас сферический и в вакууме…

  • 7. 16th July 2012, 22:49 // Читатель Alatar написал:

    >> Представьте себе упрощенный случай – двумерную задачу.

    На самом деле, проще представить одномерную задачу – мы находимся где-то на числовой оси, в начале координат стоит передатчик и шлёт сигналы точного времени, мы эти сигналы принимаем. Задача – зная параметры распространения сигнала, но не зная, сколько сейчас времени, определить на каком мы расстоянии от начала координат. =)

  • 8. 16th July 2012, 23:17 // Читатель зашел в гости написал:

    “А в трехмерном пространстве – четвертый.”

    сигнал с 3-х спутников – это три пересекающиеся сферы, т.е. 2 точки. 4-я “сфера” – земная поверхность. вычислить, какая из двух вычисленных координат ближе к земной поверхности нетрудно, и эта точка – месторасположение приемника. нет? я что-то путаю?

    “приёмник у нас сферический и в вакууме…”

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

  • 9. 16th July 2012, 23:35 // Читатель Alatar написал:

    >> нет? я что-то путаю?

    Всё верно – это и есть 2D навигация. Третий спутник нужен для определения высоты над (под) опорной сферой.

    >> обьяснить как конкретно вы собираетесь вычислять погрешность связанную с прохождением радиосигнала через ионосферу, и как вам в этом поможет 4-й спутник?

    Прошу прощения, тут погорячился – это из другой оперы. Конечно, это тут не причём и для этого используется не четвёртый спутник, а пятый, шестой и тд. Вычисляется накоплением и корреляционным анализом.

  • 10. 17th July 2012, 00:09 // Читатель Jeff Zanooda написал:

    Можно посчитать широту и долготу по трем спутникам, если высоту волюнтаристски считать нулем. Чем сильнее отличается реальная высота от нуля, тем больше будет внесенная ошибка. Поэтому многие GPS навигаторы даже не пытаются маршрут считать по 2D фиксу, говорят “Awaiting better accuracy”.

  • 11. 17th July 2012, 00:17 // Читатель Jeff Zanooda написал:

    > сигнал с 3-х спутников – это три пересекающиеся сферы

    …неизвестного радиуса. Поскольку точного времени на приемнике нет, он не может посчитать время сигнала в пути. Известны только разности между радиусами сфер.

  • 12. 17th July 2012, 00:32 // Читатель зашел в гости написал:

    “Известны только разности между радиусами сфер.”

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

  • 13. 17th July 2012, 00:49 // Читатель jno написал:

    > …неизвестного радиуса.

    эхх, позанудствую!
    несовсем “неизвестного”.
    есть альманах, где, грубо говоря, прописаны элементы орбит.

    один хрен, четыре надо – принципиально (хотя всякие иГО стартуют гораздо быстрее, полагая, что объект НА ДОРОГЕ)

  • 14. 17th July 2012, 00:52 // Читатель Alatar написал:

    >> вычислить, какая из двух вычисленных координат ближе к земной поверхности нетрудно, и эта точка

    Так… Понедельник день тяжёлый… Что-то я всё не в тему. Вы, всё-таки, не о 2D привязке, а о 3D по трём спутникам. Тогда давайте по порядку, если не хотите упрощать до одно- и двух-мерного случая.
    Есть три спутника и опорная сфера. Как Вы верно заметили, если построить из точек расположения спутников три сферы радиусами, равными расстояниям от нас до соответствующего спутника, то пересечения этих сфер дадут нам координаты на опорной сфере и высоту над ней. Предположим, что спутники расположены идеально, то есть составляют равносторонний треугольник, примерно в центре которого находимся мы. Спутники обладают единой временной шкалой t_gnss. Предположим для простоты, что все спутника испускают сигнал в момент t0_gnss и эта временная метка содержится в сигнале. Мы принимаем три сигнала в разные моменты времени – сигнал 1 в момент t1_local=t0_local+delta1, сигнал 2 в момент t2_local=t0_local+delta2, сигнал 3 в момент t3_local=t0_local+delta3. Пусть скорость распространения сигнала постоянная и равна V, тогда расстояния до спутников (радиусы искомых трёх сфер) будут S1=delta1*V, S2=delta2*V, S3=delta3*V. Собственно вопрос ребром – как узнать величины delta1, delta2, delta3 с учётом того, что мы знаем что сигналы были переданы в момент t0_gnss = t0_local + local_to_gnss_delta, где local_to_gnss_delta нам заранее неизвестен? Получаем систему из трёх уравнений с четырьмя неизвестными:
    t1_local=t0_gnss+local_to_gnss_delta+delta1
    t2_local=t0_gnss+local_to_gnss_delta+delta3
    t3_local=t0_gnss+local_to_gnss_delta+delta3

  • 15. 17th July 2012, 01:22 // Читатель Alatar написал:

    Так вот, ответ на вопрос ребром: вспоминаем, что у нас есть четвёртая сфера – опорная. Предположив, что мы находимся на земле, то есть координата h нам известна, мы можем добавить четвёртое уравнение, в котором нам известны все параметры. Таким образом получается 2D-fix про точность которого см. выше.

  • 16. 18th July 2012, 21:13 // Читатель Alatar написал:

    На тему сообщений, передаваемых спутниками сам себе отвечу, если вдруг кому-то ещё это интересно.

    Состав и структура навигационных сообщений спутников системы GPS

    Структурное деление навигационной информации спутников системы GPS осуществляется на суперкадры, кадры, подкадры и слова. Суперкадр образуется из 25 кадров и занимает 750 с (12,5 мин). Один кадр передаётся в течение 30 с и имеет размер 1500 бит. Кадр разделён на 5 подкадров по 300 бит и передаётся в течение интервала 6 с. Начало каждого подкадра обозначает метку времени, соответствующую началу/окончанию очередного 6-с интервала системного времени GPS. Подкадр состоит из 10 30-бит слов. В каждом слове 6 младших разрядов являются проверочными битами.

    В 1-, 2- и 3-м подкадрах передаются данные о параметрах коррекции часов и данные эфемерид КА, с которым установлена связь. Содержание и структура этих подкадров остаются неизменными на всех страницах суперкадра. В 4- и 5-м подкадрах содержится информация о конфигурации и состоянии всех КА системы, альманахи КА, специальные сообщения, параметры, описывающие связь времени GPS с UTC, и прочее.

    http://www.chipinfo.ru/literature/chipnews/200110/9.html

    Таким образом, подписывать имеет смысл 6-ти, или даже 30-ти секундные интервалы (каждое слово подписывать великоват оверхеад).

  • 17. 19th July 2012, 15:47 // Читатель arcman написал:

    Размер подписи: два числа по 160 бит.

    http://ru.wikipedia.org/wiki/Digital_Signature_Standard

  • 18. 19th July 2012, 17:33 // Читатель jno написал:

    2×160=320 ~21% 1500-битного 30-секундного кадра!

  • 19. 19th July 2012, 17:40 // Читатель jno написал:

    а в http://ru.wikipedia.org/wiki/Digital_Signature_Standard была ошибка в определении XOR :)