SecOC : 카운터 동작, MAC 검증 시나리오
SecOC에서의 주요 카운터
Trip Counter
역할: ECU가 깨우기(Wakeup) 또는 리셋 상태가 될 때마다 1씩 증가
조건: 전원이 꺼졌다가 다시 켜지거나 ECU가 리셋될 때 동작
최대값: OEM에 따라 최대 24비트까지 설정 가능
기타: Trip Counter는 비휘발성 메모리(NVMe)에 기록되어, 재부팅 시에도 값을 유지
Reset Counter
역할: 정기적인 간격(예: 8ms, 10ms 등)에 따라 1씩 증가
조건: OEM에 의해 설정된 주기에 따라 증가
특징: 리셋 카운터 값의 하위 2비트는 Reset Flag로 사용
Message Counter
역할: 각 메시지가 전송될 때마다 1씩 증가
특징: 메시지의 순차성을 보장하며, 각 메시지마다 고유한 카운터 값
Reset Flag
역할: Reset Counter의 하위 2비트를 활용해 메시지 간 구분
특징: 리셋 카운터 값의 하위 2비트만을 사용하여 저장 공간 절약
카운터 동작 시나리오
정상 동작 시나리오
- 송신자
1) 처음 ECU가 켜지면 Trip Counter와 Reset Counter가 각각 1로 초기화
2) NVMe 에 이 값들이 저장됨
3) 이후 보안 메시지가 전송될 때마다 Message Counter가 증가
4) 설정된 주기(예: 8ms)가 지나면 Reset Counter가 1씩 증가
- 수신자
1) 동기화 메시지(Sync Message)를 받아 Trip Counter와 Reset Counter 값을 확인
2) 수신한 값이 내부 레지스터 값과 일치하면 메시지 무결성을 확인하고 메시지 처리
-> 만약 중간에 차량이 초기화되어 Trip cycle이 리셋된다면, Trip count는 2로 재설정
비정상 동작 시나리오
문제 발생
해커에 의해 송신자의 NVMe가 손상되어 Trip Counter 또는 Reset Counter 값이 저장되지 않는 경우
예: NVMe에 Trip Counter 값이 기록되지 않아 초기화 시 0으로 재설정됨
수신자 반응
수신자는 이전 주기의 NVMe 값을 보유하고 있어 Trip Counter가 1이어야 한다고 판단
수신된 값(Trip Counter=0, Reset Counter=0)이 예상값과 일치하지 않으면, 수신자는 메시지를 무효 처리
로그 기록을 통해 OEM이 진단 문제를 파악하고 수정 조치
NVMe 손상 시 대처 방안
DTC(Diagnostic Trouble Code) 로깅 : OEM은 DTC 로그를 통해 손상된 상황을 기록하고 복구
재동기화 메시지 : 동기화 메시지를 사용하여 Trip Counter와 Reset Counter를 재설정
SecOC의 역할과 보안 효과 - 카운터 관점
카운터 관리
Trip Counter, Reset Counter, Message Counter를 통해 메시지 순서와 무결성 유지
카운터 불일치 시 공격 시도를 탐지 및 차단
재생 공격 방지
카운터 값이 일치하지 않으면 수신자는 메시지를 거부하므로 Replay Attack 방지
중간자 공격 방지
동기화 메시지와 HMAC 인증을 통해 Man-in-the-Middle Attack 차단
MAC 검증 성공/실패 시나리오
SecOC이 포함된 AUTOSAR 계층 구조
1) 애플리케이션 소프트웨어 계층(App SW)
송신 PDU 생성
보안 메시지일 경우, 데이터를 하위 계층으로 전달
2) PDU 라우터(PDUR)
애플리케이션 계층과 통신 모듈 간의 PDU를 라우팅
PDU를 SecOC 모듈로 전달
3) SecOC 계층
- 송신 측:
데이터, Freshness Value, Counter, Key 를 사용하여 MAC 생성
비보안 PDU를 MAC 및 보안 필드를 추가하여 Secured PDU로 변환
- 수신 측:
수신한 Secured PDU에서 MAC, Freshmess Value, Counter를 추출하여 MAC 계산
수신한 MAC과 다시 계산된 MAC 비교
4) CAN 계층
Secured PDU를 송신하고, 수신 ECU로 전달
MAC 검증 실패 시 시스템 동작
1) 보안 PDU의 물리적 수신
메시지가 CAN 계층에서 수신되며, SecOC 계층으로 전달됨
2) SecOC 계층에서 MAC 검증
SecOC 계층은 메시지에서 MAC, Freshness Value, Counter 추출
Key, Payload, Freshness Value 를 사용하여 MAC 다시 계산
수신한 MAC과 다시 계산된 MAC을 비교
3-1) MAC 검증 실패:
(수신된 MAC과 계산된 MAC이 일치하지 않을 경우)
SecOC 계층은 해당 메시지를 차단
메시지는 상위 계층(애플리케이션 계층)으로 전달되지 않음
(시스템의 나머지 부분에 영향을 미치지 않도록)
3-2) MAC 검증 성공
(수신된 MAC과 계산된 MAC이 일치할 경우)
SecOC 계층은 메시지를 애플리케이션 계층으로 전달
시스템은 해당 메시지를 정상적으로 처리
SecOC의 역할과 보안 효과 - MAC 관점
Man-in-the-Middle 방지
공격자가 보안 PDU를 가로채더라도 Freshness Value, Counter, Authenticator 값이 정확히 맞지 않기 때문에 MAC 검증에 실패
Replay Attack 방지
이전에 송신된 보안 PDU를 재전송하더라도 Counter 값이 다르므로 MAC이 일치하지 않음
데이터 위변조 방지
PDU의 페이로드가 수정될 경우 MAC 검증이 실패하므로 변조된 메시지는 차단됨