재밍 공격은 GNSS와 동일한 주파수 범위에서 강력한 무선 신호를 브로드캐스트하여 GNSS 위성에서 브로드캐스트되는 상대적으로 약한 신호를 압도하는 방식으로 이루어집니다. 이로 인해 휴대전화를 비롯한 GNSS 수신기가 위치를 계산하지 못할 수 있습니다.
스푸핑은 실제 GNSS 신호인 척하는 가짜 신호가 브로드캐스트되는 보다 정교한 공격입니다. 이러한 가짜 신호는 GNSS 수신기가 실제와 매우 다른 위치나 시간을 계산하도록 속일 수 있으며, 이는 매핑 및 탐색 앱이 사용자에게 잘못된 정보를 제공하도록 혼동하기에 충분합니다.
GNSS 스푸핑 또는 재밍 정보
신호의 신호 강도 또는 반송파 대 잡음비 (C/N0)와 휴대전화의 GNSS 무선의 자동 게인 제어 (AGC)는 간섭을 나타내는 좋은 지표가 될 수 있습니다.
스푸핑이나 재밍이 관찰되면 AGC가 감소하는 경향이 있습니다. 무선 통신 장치가 강한 전파를 수신하면 수신된 신호의 전력을 조정하기 위해 증폭기의 게인 (AGC)을 낮춥니다.
그림 1. AGC는 간섭이 있는 동안 (빨간색 영역) 떨어지고 간섭이 제거되면 (녹색 영역) 정상 수준으로 다시 증가합니다.
(이미지 출처: https://doi.org/10.33012/navi.537)
하지만 C/N0의 동작은 재밍 이벤트와 스푸핑 이벤트 간에 달라집니다. 재밍 이벤트의 경우 라디오에서 관찰되는 노이즈가 평소보다 훨씬 강하므로 캐리어 대 노이즈 비율의 분모가 증가하고 C/N0 값이 떨어집니다. 스푸핑의 경우 위성에서 나오는 실제 신호를 압도할 만큼 큰 가짜 신호가 브로드캐스트되므로 전체 신호 강도가 강해져 C/N0가 증가합니다.
GNSS 스푸핑 또는 재밍 확인
GnssLogger 앱의 스푸핑/재밍 탭을 사용하여 환경이 C/N0 및 AGC에 미치는 영향을 실시간으로 살펴볼 수 있습니다.
실시간 AGC 및 C/N0 플롯
스푸핑/재밍 탭에는 각 GNSS 별자리 및 대역 (예: 'GPS L1' 또는 'G:L1:", 'Galileo E5a' 또는 'E:E5A:").
그림 2. 휴대전화를 Wi-Fi 라우터 옆에 두면 AGC와 C/N0가 모두 떨어집니다 (빨간색 타원).
각 별자리와 대역의 상위 3개 신호의 평균이 점선으로 표시됩니다. 각 컨스텔레이션과 대역의 AGC는 단일 값으로 실선으로 표시됩니다. 플롯의 빨간색 원으로 표시된 섹션은 휴대전화를 Wi-Fi 라우터 옆에 두면 AGC와 C/N0가 모두 떨어져 간섭이 관찰되는 방식을 보여줍니다.
스푸핑 및 재밍에 대한 실시간 검사
AGC 및 C/N0의 실시간 플롯 아래에 앱은 GNSS 간섭과 관련된 조건을 식별하는 일련의 자동 데이터 확인을 표시합니다.
그림 3. 자동 검사를 통해 스푸핑 및 재밍으로 인해 발생할 수 있는 조건을 식별할 수 있습니다.
재밍 확인 섹션에서 앱은 최근 10개 에포크의 C/N0 및 AGC 평균이 이전 50개 에포크와 비교하여 변경되었는지 확인합니다. C/N0와 AGC가 동시에 감소하면 GNSS 재밍의 증상일 수 있습니다. 이 상황이 감지되면 카드에 실패 메시지와 함께 자세한 정보가 표시됩니다.
그림 4. GNSS 간섭으로 인해 발생했을 수 있는 조건이 감지되었음을 나타내는 실패입니다.
스푸핑 확인 섹션의 첫 번째 카드도 C/N0 및 AGC를 확인하지만 C/N0의 증가와 AGC의 감소를 동시에 찾습니다.
두 번째 스푸핑 관련 검사는 기기에서 계산된 GNSS 시간과 인터넷을 통해 네트워크 시간 프로토콜 (NTP) 서버에서 가져온 시간 (네트워크 시간 - GNSS 시간) 간의 1초 이상 차이를 찾습니다. 큰 차이는 계산된 GNSS 시간이 유효하지 않음을 나타낼 수 있습니다.
도움말, 유용한 정보, 주의사항
GnssLogger의 스푸핑/재밍 기능을 사용할 때 유의해야 할 사항은 다음과 같습니다.
이 기능은 실험 단계에 있습니다. 다양한 Android 기기에서 AGC 특성을 자세히 알아볼수록 스푸핑 및 재밍 변경에 사용되는 정확한 알고리즘이 업데이트될 수 있습니다.
이 기능은 모든 스푸핑 및 재밍을 포착하지 않습니다. 실시간 그래프와 데이터 검사를 통해 실시간으로 데이터 속성을 더 쉽게 파악할 수 있지만 모든 스푸핑 또는 재밍 사례를 감지할 만큼 강력하지는 않습니다.
이 기능은 C/N0 및 AGC의 변경사항을 감지하도록 설계되었습니다. 스푸핑 또는 재밍이 있는 상태에서 앱을 열고 C/N0 및 AGC가 일정하게 유지되면 스푸핑 및 재밍이 감지되지 않습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-08-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-08-27(UTC)"],[],[],null,["GNSS interference can be broken down into the following two categories:\n\n- Jamming\n- Spoofing\n\n*Jamming* attacks involve broadcasting strong radio signals in the same\nfrequency range as GNSS, which can drown out the relatively weaker signals\nbroadcast from the GNSS satellites. This can prevent GNSS receivers, including\nphones, from computing their location.\n\n*Spoofing* is a more sophisticated attack during which fake signals that pretend\nto be real GNSS signals are broadcast. These fake signals can fool a GNSS\nreceiver into computing a position or time that is very different from\nreality, which is enough to confuse mapping and navigation apps into giving\nusers wrong information.\n\nAbout GNSS spoofing or jamming\n\nSignal strength, or carrier-to-noise ratio (C/N0), of the signal as well as the\n[automatic gain control (AGC)](/reference/android/location/GnssAutomaticGainControl) of the GNSS radio in the phone can be a good\nindicator of interference.\n\nThe AGC tends to dip when spoofing or jamming is observed. When the radio\nreceives strong radio waves, it turns down the gain of the amplifier (AGC) to\nadjust the power of the received signal.\n**Figure 1.** AGC drops during interference (red area), and increases back to normal levels when interference is removed (green area). (Image source: https://doi.org/10.33012/navi.537)\n\nHowever, the behavior of C/N0 changes between jamming and spoofing events. For\njamming events, the noise observed by the radio is much stronger than normal ---\ntherefore, the denominator of the carrier-to-noise ratio increases, and the C/N0\nvalue drops. For spoofing, the reverse happens --- because a fake signal is being\nbroadcast that is loud enough to drown out the real signal from the satellite,\nthe overall signal strength is strong, and therefore the C/N0 increases.\n\nCheck for GNSS spoofing or jamming\n\nYou can use the **Spoof/Jam** tab in the [GnssLogger](https://play.google.com/store/apps/details?id=com.google.android.apps.location.gps.gnsslogger) app to\nexplore the impact of their environment on C/N0 and AGC in real-time.\n\nReal-time AGC and C/N0 plot\n\nThe **Spoof/Jam** tab displays a real-time graph of AGC and C/N0 for each GNSS\nconstellation and band (e.g., \"GPS L1\" or \"G:L1:\", \"Galileo E5a\" or \"E:E5A:\").\n**Figure 2.** AGC and C/N0 both drop when a phone is held next to a Wi-Fi router (red oval). The average top 3 signals for each constellation and band are shown as dashed lines. The AGC for each constellation and band, which is a single value, is shown as a solid line. The red circled section on the plot shows how both the AGC and C/N0 drop when the phone is held next to a Wi-Fi router, and therefore interference is observed.\n\nReal-time checks for spoofing and jamming\n\nBelow the real-time plot of AGC and [C/N0](http://c/N0), the app displays a\nseries of automated data checks that identify conditions related to GNSS\ninterference.\n**Figure 3.** Automated checks can identify conditions potentially caused by spoofing and jamming.\n\nIn the **Jamming checks** section, the app checks to see if the average of the\nmost recent 10 epochs of C/N0 and AGC have changed when compared to the previous\n50 epochs. If C/N0 and AGC decrease simultaneously, this can be a symptom of\nGNSS jamming. If this situation is detected, the card shows a FAIL message along\nwith more information:\n**Figure 4.** A failure indicating that conditions potentially caused by GNSS interference have been detected.\n\nThe first card in the **Spoofing checks** section also checks C/N0 and AGC, but\nlooks for a simultaneous **increase** in C/N0 and drop in AGC.\n\nThe second spoofing-related check looks for a difference over one second between\nthe GNSS time computed on the device and time retrieved over the Internet from a\nNetwork Time Protocol (NTP) server (network time - GNSS time). A large\ndifference can indicate that the computed GNSS time is not valid.\n\nTips, tricks, and caveats\n\nHere are some things to keep in mind when using the **Spoof/Jam** feature of\nGnssLogger:\n\n- This is an experimental feature --- as we learn more about the AGC characteristics on various Android devices, the exact algorithms used for spoofing and jamming changes may be updated.\n- This feature does not catch all spoofing and jamming --- The real-time graph and data checks make it easier to discover data properties in real-time, but aren't robust enough to detect every example of spoofing or jamming.\n- This feature is designed to detect a change in C/N0 and AGC --- if you open the app in the presence of spoofing or jamming and C/N0 and AGC remain constant, spoofing and jamming are not detected.\n- NTP servers are not necessarily secure --- Network time can be spoofed as well.\n\nProvide feedback on the **Spoof/Jam** feature using our [public issue\ntracker](https://issuetracker.google.com/issues/new?component=313183&template=0)."]]