위성 항법 시스템에서 데이터 보안은 매우 중요한 요소이다. 특히 GNSS(Global Navigation Satellite System) 데이터는 다양한 분야에서 사용되므로 데이터의 신뢰성과 무결성을 보장하기 위한 국제적인 보안 표준이 필요하다. GNSS 데이터 보안 표준은 GNSS 신호가 악의적인 공격에 의해 왜곡되거나 조작되지 않도록 보호하는 데 초점을 맞추고 있다.

GNSS 데이터의 주요 보안 위협

GNSS 데이터는 다양한 형태의 보안 위협에 노출될 수 있다. 대표적인 보안 위협은 다음과 같다:

GNSS 데이터 보안 표준의 필요성

GNSS 데이터가 중요한 시스템에 사용될 때, 이러한 보안 위협은 시스템의 신뢰성을 떨어뜨리고 심각한 문제를 일으킬 수 있다. 예를 들어, 항공, 해상, 국방, 금융 등 여러 분야에서 GNSS 데이터의 보안은 필수적이다. 이를 위해 다음과 같은 보안 표준이 마련되어 있다:

GNSS 데이터 인증

GNSS 데이터의 인증은 매우 중요한 보안 요소 중 하나이다. 이는 수신기가 신호의 출처를 신뢰할 수 있도록 보장하는 역할을 한다. GNSS 데이터 인증을 위해 다양한 암호화 기술과 알고리즘이 사용된다. 특히, 신호 기반의 인증 기법이 많이 사용되며, 이는 GNSS 신호에 암호화된 서명(signature)을 포함하여 신호의 출처를 확인할 수 있도록 한다.

데이터 인증 과정

GNSS 데이터 인증은 일반적으로 다음과 같은 과정으로 이루어진다:

  1. 서명 생성: GNSS 송신기는 데이터를 전송하기 전에 해당 데이터에 대한 암호화 서명을 생성한다. 이 서명은 암호화 알고리즘을 통해 생성되며, 오직 인증된 송신기만이 생성할 수 있다.

  2. 서명 전송: 생성된 서명은 GNSS 신호와 함께 수신기에게 전송된다. 수신기는 이를 통해 신호의 출처를 확인할 수 있다.

  3. 서명 검증: 수신기는 송신된 서명을 수신 후, 자신의 비밀키(private key)를 사용하여 서명을 검증한다. 검증이 성공하면 신호의 출처가 신뢰할 수 있음을 확인할 수 있다.

이 과정에서 사용되는 수식은 다음과 같다:

\text{Signed Data} = \mathcal{E}( \mathbf{data}, \mathbf{key} )

여기서 \mathcal{E}는 암호화 함수, \mathbf{data}는 전송될 데이터, \mathbf{key}는 송신기가 사용하는 비밀키이다. 수신기가 수신한 후, 복호화 과정에서 다음과 같은 수식을 사용하여 서명을 검증한다:

\mathbf{data} = \mathcal{D}(\text{Signed Data}, \mathbf{key})

\mathcal{D}는 복호화 함수이다. 이 과정을 통해 데이터의 무결성과 출처를 확인할 수 있다.

GNSS 데이터 무결성 보장

데이터 무결성은 전송된 데이터가 변조되지 않았음을 보장하는 보안 요소이다. GNSS 데이터 무결성을 보장하기 위해서는 해시 함수(hash function)와 같은 기법이 사용된다. 해시 함수는 데이터를 고유한 크기의 값으로 변환하여 데이터가 변조되지 않았는지 확인할 수 있다.

해시 기반 무결성 검증 과정

  1. 해시 생성: GNSS 송신기는 데이터를 전송하기 전에 해시 함수 H(\cdot)를 사용하여 해시 값을 생성한다:
\mathbf{hash} = H(\mathbf{data})
  1. 해시 전송: 생성된 해시 값은 GNSS 신호와 함께 전송된다.

  2. 해시 검증: 수신기는 수신한 데이터를 같은 해시 함수 H(\cdot)로 처리하여 송신된 해시 값과 비교한다:

\mathbf{hash}_{\text{received}} = H(\mathbf{data}_{\text{received}})

해시 값이 일치하면 데이터가 변조되지 않았음을 확인할 수 있다.

GNSS 시스템에서 이러한 무결성 검증 기법은 매우 중요한 보안 표준 중 하나이다. 특히 항공기나 군사용 장비와 같은 중요한 시스템에서는 GNSS 데이터의 무결성을 보장하는 것이 필수적이다.

GNSS 데이터 기밀성

GNSS 데이터의 기밀성은 데이터가 외부로 유출되거나 불법적으로 열람되지 않도록 보호하는 데 중점을 둔다. 특히 민감한 위치 정보나 고정밀 데이터가 외부 공격자에 의해 노출될 경우 보안 문제를 일으킬 수 있으므로, 기밀성을 보장하는 것이 중요하다. 이를 위해 데이터 암호화 기술이 사용되며, 암호화된 데이터를 해독하려면 정당한 권한을 가진 수신자만이 접근할 수 있다.

대칭 암호화 방식

대칭 암호화 방식은 송신자와 수신자가 동일한 암호화 키를 사용하는 방법이다. GNSS 시스템에서는 데이터를 암호화하여 전송하며, 수신자는 송신자와 동일한 키를 사용하여 암호화된 데이터를 복호화한다.

대칭 암호화 방식의 수식은 다음과 같다:

\mathbf{C} = \mathcal{E}_{k}(\mathbf{P})

여기서 \mathbf{C}는 암호문(ciphertext), \mathbf{P}는 평문(plaintext), k는 암호화 키, \mathcal{E}_{k}(\cdot)는 키 k를 사용한 암호화 함수이다. 수신자는 수신된 암호문을 다음과 같은 방식으로 복호화한다:

\mathbf{P} = \mathcal{D}_{k}(\mathbf{C})

이와 같이 GNSS 데이터의 기밀성을 보장하기 위해 대칭 암호화 방식을 사용할 수 있다.

비대칭 암호화 방식

비대칭 암호화 방식은 공개키(public key)와 비밀키(private key)라는 두 개의 키를 사용하는 암호화 방식이다. 송신자는 수신자의 공개키를 사용하여 데이터를 암호화하며, 수신자는 자신의 비밀키를 사용하여 암호화된 데이터를 복호화한다. 이는 데이터 기밀성을 보장하면서도 키 관리가 보다 용이하다는 장점이 있다.

비대칭 암호화의 수식은 다음과 같다:

\mathbf{C} = \mathcal{E}_{\mathbf{K}_{\text{public}}}(\mathbf{P})

여기서 \mathbf{K}_{\text{public}}는 공개키, \mathbf{P}는 평문이다. 수신자는 자신의 비밀키 \mathbf{K}_{\text{private}}를 사용하여 암호문을 복호화한다:

\mathbf{P} = \mathcal{D}_{\mathbf{K}_{\text{private}}}(\mathbf{C})

비대칭 암호화 방식은 송신자와 수신자가 서로 다른 키를 사용하여 데이터를 보호할 수 있으므로 GNSS 데이터 기밀성 보장에 적합한다.

GNSS 신호 인증 및 무결성 보호 기법

GNSS 데이터 보안에서 중요한 부분은 GNSS 신호의 인증과 무결성을 동시에 보호하는 기법이다. 이를 위해 일부 GNSS 시스템은 특수한 보안 기법을 적용하여 송신자가 전송한 신호가 변조되지 않았음을 확인할 수 있다.

암호화 서명 기법

암호화 서명은 GNSS 신호의 무결성과 출처를 확인하는 데 중요한 역할을 한다. 이를 위해 송신자는 서명(signature)을 데이터에 추가하여 전송하며, 수신자는 서명을 검증함으로써 데이터의 무결성과 출처를 확인할 수 있다. 이러한 과정은 일반적으로 다음과 같다:

  1. 서명 생성: 송신자는 송신할 데이터를 암호화 알고리즘을 사용하여 서명을 생성한다. 서명은 데이터와 암호화된 해시 값으로 구성된다.

  2. 서명 전송: 생성된 서명은 GNSS 신호와 함께 수신기에게 전송된다.

  3. 서명 검증: 수신자는 수신한 서명을 복호화하여 데이터가 변조되지 않았는지 확인한다. 복호화된 해시 값과 수신된 데이터의 해시 값이 일치하면 데이터가 변조되지 않았음을 확인할 수 있다.

이 과정에서 서명 생성과 검증에 사용되는 수식은 다음과 같다:

\text{Signature} = \mathcal{E}_{\mathbf{K}_{\text{private}}}(H(\mathbf{data}))
\text{Verification} = H(\mathbf{data}) = \mathcal{D}_{\mathbf{K}_{\text{public}}}(\text{Signature})

여기서 H(\mathbf{data})는 데이터의 해시 값, \mathbf{K}_{\text{private}}는 송신자의 비밀키, \mathbf{K}_{\text{public}}는 송신자의 공개키이다.

GNSS 신호 스푸핑 및 방지 기법

GNSS 데이터 보안에서 가장 큰 위협 중 하나는 스푸핑(Spoofing)이다. 스푸핑은 공격자가 가짜 GNSS 신호를 생성하여 수신기로 하여금 잘못된 위치나 시간 정보를 받아들이도록 하는 공격 방식이다. 이는 특히 자율 주행 차량, 항공기, 선박 등 중요한 시스템에서 심각한 보안 문제를 야기할 수 있다.

스푸핑 방지 기법

GNSS 스푸핑을 방지하기 위한 여러 기법이 개발되고 있으며, 그중에서 대표적인 두 가지 기법은 다음과 같다:

  1. 암호화 신호 사용

    • 스푸핑 공격을 방지하기 위해 GNSS 신호에 암호화를 적용하는 방법이다. 이를 통해 공격자가 암호화된 신호를 생성하기 어려워지며, 수신자는 송신자가 전송한 올바른 신호인지 확인할 수 있다.
    • 암호화된 신호의 인증 과정은 앞서 설명한 데이터 인증과 유사하게 진행된다. 송신자는 암호화된 서명과 함께 신호를 전송하고, 수신자는 복호화 과정을 통해 신호의 출처를 확인하게 된다.
  2. 다중 안테나 기법

    • 다중 안테나 시스템을 사용하는 방법은 스푸핑 공격을 방지하기 위한 효과적인 기술 중 하나이다. 공격자가 단일 지점에서 가짜 신호를 전송할 때, 다중 안테나는 서로 다른 위치에서 수신된 신호의 특성을 비교하여 가짜 신호를 식별할 수 있다.
    • 다중 안테나를 사용하는 경우, 수신된 신호의 시간차와 방향 정보를 기반으로 가짜 신호 여부를 판단한다. 이 방법은 물리적 위치의 차이를 활용하여 공격자의 신호가 일정한 방향에서만 수신되는 특성을 이용한 방어 기법이다.

스푸핑 방지의 수학적 원리

다중 안테나 기법에서 스푸핑 신호를 탐지하기 위해 각 안테나에서 수신된 신호의 상관관계를 분석한다. 이를 위해 각 안테나의 신호 도착 시간 t_1, t_2, \ldots, t_n을 비교하여 스푸핑 신호와 정상 신호의 차이를 구별할 수 있다. 다중 안테나에서 수신된 신호의 시간차를 수식으로 나타내면 다음과 같다:

\Delta t_{ij} = t_i - t_j

여기서 \Delta t_{ij}는 안테나 ij 사이의 신호 도착 시간 차이를 나타낸다. 이 값을 분석하여 스푸핑 신호가 일정한 지점에서 동일하게 전송되고 있는지 여부를 판단할 수 있다.

GNSS 재밍 및 방지 기법

재밍(Jamming)은 GNSS 신호를 방해하여 수신기가 신호를 정확하게 수신하지 못하게 만드는 공격 방식이다. 재밍 공격은 상대적으로 단순한 방식으로 이루어지며, 강력한 전파를 방사하여 GNSS 신호가 수신되지 못하게 만든다. 이는 항공기, 선박, 군사용 시스템 등에 심각한 문제를 초래할 수 있다.

재밍 방지 기법

재밍 공격을 방지하기 위한 대표적인 기법은 다음과 같다:

  1. 주파수 스펙트럼 확산(Spread Spectrum)
    • 주파수 스펙트럼 확산 기법은 GNSS 신호가 특정 주파수 대역에 집중되지 않도록 하여 재밍 공격을 방지하는 방법이다. 신호를 넓은 주파수 대역에 걸쳐 분산함으로써 공격자가 신호를 방해하기 어렵게 만든다.
    • 주파수 스펙트럼 확산의 수식은 다음과 같이 표현된다:
S(t) = \sum_{i=1}^{n} A_i \cos(2 \pi f_i t + \theta_i)
여기서 $A_i$는 각 주파수 성분의 진폭, $f_i$는 주파수, $\theta_i$는 위상, $S(t)$는 확산된 신호이다.
  1. 재밍 신호 탐지 및 회피
    • GNSS 수신기는 재밍 신호가 감지되면 자동으로 그 주파수를 회피하거나 다른 대체 주파수로 전환하여 신호를 수신할 수 있는 기능을 갖추고 있다. 이는 재밍 공격을 효과적으로 방어할 수 있는 방법 중 하나이다.

재밍 공격은 GNSS 신호의 무결성에 큰 위협이 될 수 있으므로, 이를 방지하기 위한 다양한 기법들이 연구되고 적용되고 있다.

GNSS 데이터의 무결성 보호를 위한 CRC 사용

GNSS 데이터의 무결성을 보호하기 위해 CRC(Cyclic Redundancy Check)와 같은 오류 검출 코드를 사용한다. CRC는 데이터 전송 중 발생할 수 있는 오류를 검출하는 데 매우 효과적인 기법이다. GNSS 데이터의 무결성을 보호하기 위해 CRC 코드는 데이터를 전송할 때 함께 추가되며, 수신된 데이터에 대한 무결성 검사를 수행한다.

CRC의 작동 원리

CRC는 다항식 코딩 방식에 기반하여 데이터의 무결성을 검사한다. 전송되는 데이터는 특정 생성 다항식 G(x)를 사용하여 다항식 형태로 변환되며, 이 다항식을 통해 잉여 비트(Checksum)를 생성한다. 생성된 체크섬은 데이터와 함께 전송되며, 수신자는 이 체크섬을 사용하여 오류를 검출한다.

CRC 계산은 다음과 같은 과정을 따른다:

  1. 데이터 다항식 변환: 전송할 데이터를 이진수로 변환한 후, 이를 다항식 형태로 표현한다. 예를 들어, 데이터가 '1101'인 경우, 이는 다음과 같은 다항식으로 변환된다:
D(x) = 1x^3 + 1x^2 + 0x^1 + 1x^0 = x^3 + x^2 + 1
  1. 생성 다항식 선택: 오류 검출에 사용할 생성 다항식 G(x)를 선택한다. 생성 다항식은 시스템마다 다를 수 있으며, GNSS에서는 특정 다항식을 표준으로 사용한다.

  2. 다항식 나눗셈: 데이터 다항식 D(x)에 생성 다항식 G(x)를 나누어 나머지를 계산한다. 이 나머지가 체크섬으로 사용된다. 체크섬은 데이터를 수신한 후 무결성 검사를 수행하는 데 사용된다.

수식으로 표현하면 다음과 같다:

\text{Checksum} = D(x) \mod G(x)
  1. 체크섬 전송: 계산된 체크섬은 전송할 데이터와 함께 송신되며, 수신자는 이 체크섬을 이용해 데이터가 변조되지 않았는지 확인한다.

CRC 무결성 검사의 예

예를 들어, 데이터가 '1101'이고 생성 다항식이 G(x) = x^2 + 1인 경우, 데이터에 대해 CRC를 계산하여 오류 검출을 수행할 수 있다. 데이터 다항식 D(x)와 생성 다항식 G(x)에 따라 나눗셈을 수행하고, 나머지 값이 0이면 데이터는 변조되지 않았음을 확인할 수 있다. 반대로 나머지 값이 0이 아니면 오류가 발생했음을 의미한다.