Chapter 10

안전한 거리: STS와 중계 방어

스마트키 자동차는 키가 “가까이 있으면” 문을 열어 준다. 그런데 집 안 현관에 둔 키의 신호를 중계 장비로 차까지 이어 주면, 차는 키가 옆에 있다고 착각한다. 이런 중계 공격으로 도난이 실제로 일어나 왔다. 디지털 키가 UWB를 쓰는 가장 큰 이유가 여기에 있다. 이 장에서는 UWB가 거리를 “증명”할 수 있는 이유와, 802.15.4z가 그 증명을 더 단단하게 만든 STS를 방어하는 쪽의 관점에서 본다.

세기는 속일 수 있고, 시간은 늘릴 수만 있다

기존 스마트키는 차가 보낸 신호에 키가 답하는지, 받은 세기가 충분한지로 “가까이 있음”을 판단했다. 중계 장비는 신호를 받아 증폭해 다시 보내므로, 세기는 얼마든지 키가 옆에 있는 것처럼 만들 수 있다. 암호 인증이 있어도 중계는 내용을 바꾸지 않고 그대로 나르므로 인증은 통과한다.

UWB의 거리는 세기가 아니라 왕복 시간(6장)에서 나온다. 중계 장비는 신호를 받고, 처리하고, 다시 보내는 데 반드시 시간이 걸리고, 장비 사이 케이블이나 전파도 빛보다 빠를 수 없다. 그래서 중계를 거친 왕복 시간은 언제나 실제보다 길어진다. 비행시간 측정은 “적어도 이 거리보다는 멀지 않다”는 상한을 증명하는 셈이다(거리 한정, distance bounding). 문을 여는 조건을 “2 m 이내”로 걸면, 중계를 거친 측정은 그 조건을 넘을 수 없다.

SIMULATOR

중계 앞에서: 세기 판단 대 시간 판단

세기 기반 판단(문 열림 조건: 세기 충분)—
UWB로 잰 거리—
UWB 판단(2 m 이내)—
처리 지연은 로그 눈금(10^값 ns, 0 = 1 ns ~ 3 = 1 µs). 해볼 것: ① 중계가 있으면 세기 기반 판단은 거리와 상관없이 “열림”이다(중계가 세기를 키워 주므로). ② UWB로 잰 거리 = 실제 경로 길이 + 처리 지연 × c ÷ 2라, 처리 지연이 아무리 짧아도 실제 거리보다 짧아질 수 없다. ③ 처리 지연이 0에 가까워도 키가 30 m 밖에 있으면 30 m로 잰다. 모델: 중계는 키와 차 사이를 이어 주는 이상적 장비, 경로 길이 = 실제 거리. 공격 방법이 아니라 방어 원리를 보이기 위한 단순화다.

STS: 미리 알 수 없는 펄스 열

그러면 UWB는 처음부터 안전했을까? 802.15.4a 시절의 프레임은 프리앰블과 SFD가 공개된 고정 무늬였다(4장). 누구나 무늬를 알기 때문에, 이론적으로는 수신기가 시각을 짚는 과정을 교란해 첫 경로를 조금 앞당겨 보이게 하는 시도(거리 줄이기)가 연구되었다. 비행시간의 “상한 증명”이 성립하려면, 수신기가 시각을 짚는 신호를 공격자가 미리 알 수 없어야 한다.

802.15.4z는 그래서 STS(Scrambled Timestamp Sequence)를 더했다. STS는 두 기기만 아는 키로 만든 암호학적 의사 난수로 수천 개 펄스의 극성을 정한 열이다. 측정 라운드마다 다르고, 키가 없으면 다음 펄스가 +인지 −인지 맞힐 확률이 반반이다. 수신기는 기대하는 STS와 받은 신호의 상관을 확인해, 모양이 맞지 않으면 그 측정을 버린다. SP1·SP3 프레임(4장)이 이 STS를 싣는다.

매번 바뀌는 박자

박수로 거리를 재는데(1장), 상대가 “짝짝 짝 짝짝짝”처럼 매번 다른 박자로 답하기로 미리 비밀리에 정해 두었다고 하자. 엿듣는 사람은 그 박자를 미리 알 수 없으니, 먼저 손뼉을 쳐서 “벌써 들렸다”고 속일 수 없다. 박자가 맞지 않으면 그 답은 버린다. STS가 바로 이 비밀 박자다.

SIMULATOR

STS를 모르고 맞히기

무작위 추측이 통과할 확률—
키를 아는 정상 기기(잡음 속 정답률 90%)—
판단—
그래프: 확인하는 펄스 수(가로, 로그)에 따른 통과 확률(세로, 로그). 빨강 = 키 없이 극성을 무작위로 맞힐 때, 초록 = 키를 아는 기기가 잡음 때문에 10%를 틀릴 때. 해볼 것: 펄스를 64개만 확인해도 무작위 추측의 통과 확률은 수만분의 1 아래로 떨어지고, 수천 개면 사실상 0이다. 정상 기기는 잡음이 있어도 통과한다. 모델: 펄스마다 독립인 이항 분포, 일치율 문턱 판정. 실제 수신기는 상관값 품질로 판단하며 세부는 칩마다 다르다.

STS 키는 어디서 오나

STS는 키에서 나온다. 키를 어떻게 얻느냐에 따라 FiRa는 STS 설정을 나눈다. Android UWB 스택의 값 이름을 그대로 보자.

INTERACTIVE

STS 설정 고르기

STS_CONFIG

STS 설정 값: Android FiraParams.java의 STS_CONFIG_STATIC = 0, _DYNAMIC = 1, _DYNAMIC_FOR_CONTROLEE_INDIVIDUAL_KEY = 2, _PROVISIONED = 3, _PROVISIONED_FOR_CONTROLEE_INDIVIDUAL_KEY = 4 · 정적 STS의 재료 vendor_id, static_sts_iv와 제공 키 session_key, subsession_key: FiraOpenSessionParams.java · CCC 디지털 키의 키 교환은 BLE 보안 채널에서(13장)

예측해 보기

자동차 디지털 키에 정적 STS(STATIC)를 쓰면 어떤 문제가 있을까?

정적 STS의 재료(벤더 ID와 IV)는 세션마다 바뀌지 않는다.

정적 STS는 시험·간단한 기기용이다. 보안이 중요한 응용은 세션마다 비밀 키에서 STS를 새로 만드는 동적·제공 방식을 쓴다.

핵심 정리

  1. 세기 기반 근접 판단은 중계·증폭에 속는다. 내용을 바꾸지 않는 중계에는 암호 인증만으로 부족하다.
  2. 비행시간은 중계로 늘릴 수만 있다(빛보다 빠를 수 없고 처리 시간이 든다). UWB 거리는 상한을 증명한다.
  3. 공개된 프리앰블만으로는 시각 조작에 취약할 수 있어 802.15.4z가 STS(키로 만든 펄스 열)를 더했다. 키 없이 맞힐 확률은 펄스 수에 따라 지수적으로 준다.
  4. STS 설정: STATIC(고정, 시험용), DYNAMIC(세션마다), PROVISIONED(보안 요소 등에서 받은 키), 개별 키 변형.

확인 퀴즈

중계가 UWB로 잰 거리를 어떻게 바꾸는가?

추가 경로와 처리 지연이 왕복 시간에 더해진다.

STS가 하는 일은?

키 없이 맞힐 확률은 펄스 수에 따라 지수적으로 준다.

세션마다 비밀 키에서 STS를 새로 만드는 설정은?

STATIC은 고정 재료(벤더 ID, IV)를 쓴다.

신호 세기 기반 스마트키가 중계에 약한 근본 이유는?

시간은 늘릴 수만 있지만 세기는 키울 수 있다.