Skip to content
Go DevBJ
Go back

DoIP Security Access, 여기서부터 ECU 성격이 확 달라진다

Edit page

DoIP로 기본 통신까지 붙고 나면
다음에 거의 반드시 만나게 되는 게 있다.

바로:

이쪽이다.

처음에는 그냥 인증 정도로 보이는데,
실제로 들어가 보면 ECU마다 구현 차이도 크고
디버깅 포인트도 꽤 많다.

오늘은 깊게 안 들어가고,
Security Access가 왜 필요한지와 전체 흐름만 가볍게 보자.

Security Access 한 줄 정리

Security Access는
특정 진단 기능을 사용하기 전에 ECU 권한을 획득하는 절차다.

즉:

이 상태를 푸는 과정이다.

왜 이런 게 필요하냐

당연하지만 ECU에는 민감한 기능이 많다.

예를 들면:

이런 걸 아무나 건드리면 안 된다.

그래서 ECU는 보통 이렇게 생각한다.

“너 누구냐? 권한 있냐?”

그리고 그 확인 과정이 Security Access다.

전체 흐름에서는 여기쯤 있다

보통 흐름은 이렇게 간다.

1. Vehicle Identification
2. TCP 연결
3. Routing Activation
4. Diagnostic Session Control
5. Security Access
6. Flash / Coding / 특수 기능

즉, Security Access는
실제 고급 기능 들어가기 직전 단계다.

기본 구조는 Seed / Key다

흐름은 생각보다 단순하다.

Tester → Seed 요청
ECU → Seed 응답
Tester → Key 계산 후 전송
ECU → Unlock 성공/실패

개념 자체는 challenge-response 구조다.

ECU가 랜덤값(Seed)을 주고,
테스터가 규칙에 맞는 Key를 계산해서 보내는 방식이다.

패킷 느낌으로 보면 이렇다

예를 들면:

Seed 요청

27 01

ECU 응답

67 01 AA BB CC DD

여기서:

AA BB CC DD

이게 Seed다.

Key 전송

27 02 XX XX XX XX

여기서:

XX XX XX XX

부분이 계산된 Key다.

그리고 ECU가 맞다고 판단하면 unlock 된다.

여기서 ECU 개성이 엄청 나온다

이게 재밌는 부분이다.

UDS 구조는 비슷한데,
Seed → Key 계산 방식은 제조사마다 다르다.

즉:

그래서 실무에서는 여기서부터
“프로토콜 공부”보다 “OEM 대응” 느낌이 강해진다.

실무에서 많이 보는 실패 패턴

이건 진짜 자주 본다.

1) Session 안 열고 Security Access 시도

ECU가 특정 세션에서만 unlock 허용하는 경우 많다.

예:

10 03

같은 Extended Session 먼저 필요하다.

이거 안 하면 NRC 떨어진다.

2) Key 계산 틀림

가장 흔하다.

이런 걸로 unlock 실패한다.

3) 반복 실패로 lock 걸림

ECU에 따라:

이런 것도 있다.

괜히 brute force처럼 때리면 더 꼬인다.

자주 보는 NRC도 있다

여기서 자주 보는 건 이런 거다.

0x35 — Invalid Key

7F 27 35

Key 틀렸다는 뜻이다.

0x36 — Exceed Number Of Attempts

실패 너무 많이 했다는 의미다.

여기서부터 ECU가 방어 모드 들어간다.

0x37 — Required Time Delay Not Expired

조금 기다렸다 다시 시도하라는 뜻이다.

이거 모르고 계속 요청하면
계속 실패만 반복된다.

디버깅할 때 보는 순서

개인적으로는 거의 이렇게 본다.

1. 현재 Session 확인
2. Seed 정상 수신 확인
3. Key 계산 값 확인
4. Byte Order 확인
5. NRC 확인

특히:

이런 경우는 거의 Key 계산 문제다.

다음 글에서는 실제 Seed/Key 흐름 파보자

오늘은 일부러 overview만 봤다.

다음 글에서는 이런 걸 자세히 보면 좋다.

여기부터는 진짜 ECU마다 성격 차이가 확 나온다.

추천 대상

한 줄 요약

Security Access는 ECU의 보호된 기능에 접근하기 위해 Seed/Key 기반으로 권한을 획득하는 절차다.

추천 키워드

UDS Security Access, Seed Key, DoIP Security, UDS over IP, ECU unlock


DevBJ | No Bio, Just Log #오늘을살자


Edit page
Share this post on:

Previous Post
DoIP에서 Session Control 먼저 이해해야 하는 이유
Next Post
DoIP timeout 처리, Response Pending 제대로 이해해야 덜 헤맨다