SecOC (Secure on board communication)
SecOC 개요
차량 내부 통신을 보호하기 위해 Autosar 표준에서 명시된 핵심 모델
주요 역할
- 무결성 : MAC을 생성하고 검증하는 과정을 통해 수행
- PDU 수준의 보호
- 데이터가 PDU R를 통해 SecOC모듈로 전송 : 비보안 PDU를 입력으로 받아들여, 이를 보안 PDU로 변환
MAC 계산
- Data ID : 메시지의 고유 식별자(CAN 메시지 ID 등)
- Authenticated PDU : 메시지 데이터 자체
- Freshness Value : 메시지의 시간적 유효성을 나타내는 값 (메시지 데이터에 의해 계산, 무결성 보장)
-> SecOC가 Crypto Key 를 이용하여 MAC을 계산한 것이 Authenticator 에 해당
SecOC 프레임의 구성
비보안 메시지 데이터는 MAC 계산에 사용
MAC 계산에는 데이터 ID, Authenticator PDU, Freshness Value , Crypto Key 가 필요
Freshness Value 과 Authenticator 필드는 길이가 길 수 있기 때문에, 프레임 크기에 맞게 Truncation
이렇게 Truncation Freshness Value 과 Authenticator는 인증된 PDU와 결합되어 Secured Frame 형성
Freshness value
1) Trip Counter
각 전송 주기(Emission Cycle)마다 1씩 증가
이는 전원 리셋(Power Reset)이나 ECU Reset 시 초기화
2) Reset Counter
주기적으로 증가하며, 구현에 따라 설정
예를 들어, 10ms마다 리셋되는 방식으로 구성
3) Message Counter
메시지 전송 시마다 증가
메시지 카운터는 하위(Message Count Lower)와 상위(Message Count Upper)로 나뉘며, 이는 Freshness Value 의 Truncation 과정에서 사용
4) Reset Flag
Reset Counter 의 하위 bit 값
일반적으로 2bit 길이로 제한
Full Freshness Value 는 위 네 가지 필드를 사용해 계산
그러나 보안 PDU 전송 시, 전체 Freshness Value 가 아니라 다음 두 가지 요소만 전송
- Message Count Lower
- Reset Flag
위 두 필드로 구성된 값 -> Truncated Freshness Value
동기화 메시지(Synchronized Message)
- 일정한 주기로 송신
- 송신기와 수신기 동기화
- Replay Attack, Man-in-the-Middle Attack, 불필요한 프레임 주입 방지
동기화 메시지 필드
1) Trip Counter
2) Reset Counter
3) Authenticator ← MAC (Data ID | PDU Data | Freshness Value)
Authenticator 와 Freshness Value 의 차이
Authenticator 계산 요소
1) Data ID
2) PDU 데이터
3) Full Freshness Value
4) Crypto Key
주의할 점:
Authenticator 계산 시에는 Full Freshness Value 사용
Secured PDU에는 Truncated Freshness Value 만 포함
Receiver Verification SecOC
그렇다면, 수신자의 관점에서 무결성(Integrity) 또는 인증(Authentication) 이 어떻게 이루어 질까?
송신자가 전송한 데이터
1) Secure PDU
Authenticated PDU
Truncated Freshness Value
Truncated Authenticator
2) Synchronized Message
Trip Counter
Reset Counter
Authenticator
수신 데이터 분석
- 수신자는 Secure PDU, Synchronized Message 수신
- 어떤 해커가 통신 채널에 접속해서 보안정보를 추출하고 있다고 하면, 해커는 Truncated된 Freshness Value와 Authenticator에 대한 단서가 없음
- 만약 Sync Msg를 얻는다 해도 Sender를 통해 전송되는 값의 전체를 얻을 수 없고, Authenticator 또한 이미 계산된 값임
→ 이 Truncated 정보들만으로는 해커가 데이터를 이해하거나 재생산하기 어려움 (핵심)
해커가 공격 시 직면하는 문제
- Secured PDU와 Synchronized Message 는 부분적인 정보만 포함하므로, 해커가 Freshness Value 와 Authenticator의 전체 값을 추출할 수 없음
- Authenticator는 HMAC으로, 이는 전체 Freshness Value 와 Crypto Key 를 기반으로 계산
- Truncated 값만으로는 해커가 HMAC을 역추적하거나 계산할 수 없음
- 또한, 송수신되는 카운터 값(Trip Counter, Reset Counter, Message Counter)이 일치하지 않으면, 패킷을 재생해도 수신자는 이를 거부
수신자의 검증 작업
- Data ID와 Authenticated PDU를 Secured PDU에서 추출
- Truncated Freshness Value 와 Synchronized Message 의 정보를 결합하여 전체 Freshness Value 복구
- Crypto Key 를 사용해 HMAC을 계산
- 수신한 Authenticator(보안 PDU에 포함된 HMAC)와 수신자가 계산한 HMAC을 비교
일치할 경우: 메시지가 무결성을 유지하고 있으며, 변조되지 않았음을 확인
불일치할 경우: 메시지가 변조되었거나 공격 가능성이 있음을 감지
보안 구조의 이점
1) 전체 Freshness Value 과 Authenticator 전송 생략
- 전체 값을 보내지 않음으로써, 데이터를 도청한 공격자가 메시지를 해독하거나 HMAC을 재생산하지 못하도록 방지
2) 카운터 동기화
- Trip Counter, Reset Counter, Message Counter가 일치하지 않으면, 수신자는 메시지를 거부
- Replay Attack, Man-in-the-Middle Attack, 불필요한 패킷 삽입 공격 방지
: 결국 SecOC는 프레임 구조를 통해 데이터를 안전하게 전송하는 모델이고, Freshness Value와 Synchronized Message를 사용하여 수신자가 무결성 검증을 수행할 수 있다. 따라서 공격자가 패킷을 도청한다 해도 데이터 Replay 등의 공격이 불가하다.