Одного жовтневого ранку в Києві телефон у нашому тестовому авто цілком упевнено заявив, що він у Перу — за 13 600 км. Мапа не блимнула, коло точності — акуратні кілька метрів. Саме це робить підміну небезпечною: фальшива позиція виглядає точнісінько як справжня.
KeepNav лишив авто в Києві. Ось як.
Супутники тихі, підробники гучні
Супутник GPS — за 20 000 км, і його сигнал приходить слабшим за фоновий шум. Передавач на узбіччі легко його перекриває. Цивільні сигнали GPS нічим не підписані, тож приймач у телефоні не відрізняє чесний супутник від коробки на стовпі — він просто чіпляється за найсильніший і найузгодженіший сигнал.
З Android 7 застосунки можуть читати сирі вимірювання: для кожного супутника — псевдовідстань, доплерівський зсув, рівень сигналу й час, який він нібито несе. З цими доказами ми й працюємо.
П'ять питань до кожного супутника
- Чи має він бути видимим? З офіційних файлів орбіт (IGS) ми знаємо, де кожен супутник. Підробник, що «програє» небо іншого місця, часто показує супутники, які в нас під горизонтом. Того ранку з Перу таких було кілька.
- Чи збігається Доплер зі справжнім небом? Зсув частоти справжнього супутника відповідає його руху відносно нас. Змодельоване небо рухається інакше.
- Чи правильний час? Час у сигналі має збігатися з годинником мережі. Підробники, що «переносять» вас, зсувають і час.
- Чи погоджуються групи? Ми окремо розв'язуємо позицію за GPS, Galileo, діапазонами L1 і L5. Підробка рідко узгоджено покриває все.
- Чи не надто добрий сигнал? Рівно сильні сигнали і приймач, що знижує підсилення, поки сила сигналу росте, — типові ознаки близького передавача.
Жодна перевірка сама не вирішує. Кожна додає зважений доказ; їх поєднання дає статус, який ви бачите на мапі.
Коли фальшива лише частина супутників
Частіше на дорозі — часткова атака: частина сигналів фальшиві, частина справжні. В одній записаній поїздці з приблизно шістдесяти сигналів справжніми були лише 7–14. KeepNav відкидає тих, хто не пройшов перевірок, і розв'язує за рештою. Статус стає помаранчевим — «Атака на GPS · позицію перевірено», а позиція лишається в межах 4 м (медіана) від реальності. Фарбувати тут усе червоним було б неправильно: позиція в порядку.
«Отруєна» секунда переходу
Наша улюблена знахідка. Час GPS і UTC відрізняються на ціле число «секунд переходу» — сьогодні 18. Підробник передав 19. GNSS-чип телефона повірив і тримав хибне значення понад добу після атаки, що непомітно ламало ГЛОНАСС і нашу перевірку часу. Тепер KeepNav бере кількість секунд переходу з файлів орбіт, а не з чипа.
Чого ми не робимо
Ми не публікуємо, де працюють перешкоди. Застосунок розповідає вам про вашу поїздку; публічна мапа зон перешкод допомогла б не тим людям більше, ніж водіям.
Далі: що робить KeepNav, коли вирішив, що супутникам вірити не можна.