DoIP로 기본 통신까지 붙고 나면
다음에 거의 반드시 만나게 되는 게 있다.
바로:
- Security Access
- Seed / Key
- Unlock 절차
이쪽이다.
처음에는 그냥 인증 정도로 보이는데,
실제로 들어가 보면 ECU마다 구현 차이도 크고
디버깅 포인트도 꽤 많다.
오늘은 깊게 안 들어가고,
Security Access가 왜 필요한지와 전체 흐름만 가볍게 보자.
Security Access 한 줄 정리
Security Access는
특정 진단 기능을 사용하기 전에 ECU 권한을 획득하는 절차다.
즉:
- 연결은 됨
- 진단도 됨
- 근데 중요한 기능은 잠겨 있음
이 상태를 푸는 과정이다.
왜 이런 게 필요하냐
당연하지만 ECU에는 민감한 기능이 많다.
예를 들면:
- Flash
- Coding
- Calibration 변경
- Variant 설정
이런 걸 아무나 건드리면 안 된다.
그래서 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 계산 틀림
가장 흔하다.
- Endian 문제
- Byte 순서 문제
- 알고리즘 구현 오류
이런 걸로 unlock 실패한다.
3) 반복 실패로 lock 걸림
ECU에 따라:
- 실패 횟수 제한
- 일정 시간 lock
- Ignition cycle 필요
이런 것도 있다.
괜히 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 확인
특히:
- Seed는 맞는데 unlock 실패
이런 경우는 거의 Key 계산 문제다.
다음 글에서는 실제 Seed/Key 흐름 파보자
오늘은 일부러 overview만 봤다.
다음 글에서는 이런 걸 자세히 보면 좋다.
- Sub Function 의미
- Odd / Even 번호 구조
- 실제 Seed/Key 예시
- OEM 구현 차이
- 보안 때문에 캡처 분석 어려운 이유
여기부터는 진짜 ECU마다 성격 차이가 확 나온다.
추천 대상
- Security Access 처음 보는 사람
- Flash/Coding 준비 중인 사람
- Seed/Key 흐름이 헷갈리는 사람
한 줄 요약
Security Access는 ECU의 보호된 기능에 접근하기 위해 Seed/Key 기반으로 권한을 획득하는 절차다.
추천 키워드
UDS Security Access, Seed Key, DoIP Security, UDS over IP, ECU unlock
DevBJ | No Bio, Just Log #오늘을살자