잠시 후 화면에 각종 수치와 오류 코드가 쭉 나열됩니다.
ECU가 몇 개인지, 어떤 센서가 이상한지, 언제 오류가 발생했는지까지.
정비사는 차와 대화하듯 정보를 꺼냅니다.
그런데 이 대화는 어떻게 이루어지는 걸까요?
ECU가 정비 장비의 질문을 어떻게 알아듣고, 어떻게 답하는 걸까요?
그 언어가 바로 UDS(Unified Diagnostic Services)입니다.
진단 통신이란 무엇인가
차량 진단 통신은 외부 장비(진단기, 테스터)가 차량 내부 ECU에 접근해 정보를 읽거나 특정 동작을 요청하는 통신입니다. 크게 세 가지 목적으로 사용됩니다.
| 목적 | 설명 | 예시 |
|---|---|---|
| 고장 진단 | ECU에 저장된 오류 코드(DTC)를 읽어 문제 원인 파악 | 엔진 경고등 원인 확인 |
| 데이터 조회 | 실시간 센서값, 파라미터 읽기 | 엔진 RPM, 냉각수 온도, 배터리 전압 |
| ECU 제어·설정 | ECU 초기화, 파라미터 쓰기, 액추에이터 제어 | DPF 재생 강제 실행, 에어백 리셋 |
| 펌웨어 업데이트 | 새 소프트웨어를 ECU에 플래싱 | 리콜 소프트웨어 업데이트 |
UDS — 자동차 ECU의 공통 언어
UDS(Unified Diagnostic Services)는 ISO 14229 표준으로 정의된 차량 진단 통신 프로토콜입니다. 2006년 처음 발행됐으며, 현재 거의 모든 완성차 OEM이 사용하는 사실상의 업계 표준입니다.
"Unified"라는 이름에서 알 수 있듯, 과거에는 OEM마다 제각각이던 진단 프로토콜을 하나로 통합한 것입니다. BMW, 현대, 토요타, 폭스바겐 모두 UDS를 씁니다. 진단 장비 제조사 입장에서는 하나의 프로토콜만 구현하면 모든 차량을 지원할 수 있게 됐습니다.
UDS의 기본 구조 — 요청과 응답
UDS는 클라이언트-서버 모델로 동작합니다. 진단 장비(테스터)가 클라이언트, ECU가 서버입니다. 테스터가 요청을 보내고 ECU가 응답합니다.
모든 UDS 메시지는 SID(Service Identifier)로 시작합니다. SID는 1바이트로, 어떤 서비스를 요청하는지를 나타냅니다. 응답 메시지의 SID는 요청 SID에 0x40을 더한 값입니다.
1 byte
1 byte (선택)
가변 길이
1 byte
가변 길이
예를 들어 DTC(고장 코드)를 읽는 서비스 SID는 0x19입니다. 요청을 보내면 ECU는 0x59(0x19 + 0x40)로 응답하고 저장된 오류 코드 목록을 돌려줍니다.
UDS의 주요 서비스들
UDS는 수십 개의 서비스를 정의합니다. 자주 쓰이는 것들을 카테고리별로 정리하면 이렇습니다.
왜 "세션"이라는 개념이 필요할까
UDS에는 진단 세션(Diagnostic Session)이라는 개념이 있습니다. ECU는 항상 동일한 서비스를 제공하지 않습니다. 어떤 세션에 있느냐에 따라 허용되는 서비스가 달라집니다.
| 세션 종류 | SID | 허용 범위 | 주요 사용 상황 |
|---|---|---|---|
| Default Session | 0x01 | 기본 읽기 서비스만 허용 | 평상시, 일반 OBD 진단 |
| Extended Session | 0x03 | 파라미터 읽기/쓰기, 액추에이터 제어 | 정비소 고급 진단 |
| Programming Session | 0x02 | 펌웨어 다운로드, 메모리 쓰기 | ECU 소프트웨어 업데이트 |
UDS는 어떤 물리 경로로 전달되나
UDS 메시지는 다양한 물리 레이어 위에서 전달됩니다. 가장 흔한 경로는 OBD-II 포트를 통한 CAN 버스이지만, 최신 차량에서는 Ethernet 기반 진단도 늘고 있습니다.
| 전송 레이어 | 특징 | 주요 사용 |
|---|---|---|
| CAN + ISO 15765 (DoIP over CAN) | 전통적인 방식. 속도 제한 있음 | 대부분 양산차 OBD-II 진단 |
| Ethernet + DoIP (ISO 13400) | 고속 전송. 대용량 펌웨어 업데이트에 적합 | 최신 차량, 공장 플래싱, OTA 연계 |
| LIN | 저속, 단순 ECU용 | 바디 도어 모듈, 시트 ECU 등 |
특히 DoIP(Diagnostics over Internet Protocol)는 차량 내 Ethernet이 확산되면서 중요해지고 있습니다. CAN보다 훨씬 빠르기 때문에 수백 MB짜리 펌웨어 업데이트도 현실적인 시간 안에 가능해졌습니다.
테스터는 ECU와 직접 연결되지 않는다
한 가지 중요한 오해가 있습니다. 진단기가 OBD-II 포트에 연결되면 차량 내 모든 ECU에 직접 접근할 수 있다고 생각하기 쉽습니다. 하지만 실제 구조는 다릅니다.
테스터의 진단 요청은 먼저 게이트웨이 ECU를 통과합니다. 게이트웨이는 어떤 진단 메시지를 어느 ECU로 전달할지 결정합니다. 허용되지 않은 요청은 대상 ECU에 도달하기 전에 차단됩니다.
현업에서는 실제로 이렇게 경험한다
마무리
UDS는 자동차 ECU와 외부 장비가 대화하는 공통 언어입니다.
정비소에서 고장을 진단하고, 공장에서 소프트웨어를 업데이트하고,
개발 단계에서 ECU를 제어하는 모든 과정이 이 언어로 이루어집니다.
그런데 이 대화 창구가 열려 있다는 것은 동시에 공격자의 진입 경로가 될 수 있다는 의미이기도 합니다. 다음 편에서는 UDS에서 가장 중요한 보안 메커니즘인 Security Access(보안 인증)가 어떻게 동작하는지를 다룹니다.
핵심 요약
- UDS(ISO 14229)는 차량 ECU 진단을 위한 표준 프로토콜 — 거의 모든 OEM이 사용
- 클라이언트(테스터)-서버(ECU) 구조로 동작. SID로 서비스를 식별
- 응답은 긍정(SID+0x40) 또는 부정(0x7F + NRC)으로 구분
- 주요 서비스: DTC 읽기(0x19), 데이터 읽기(0x22), Security Access(0x27), 펌웨어 다운로드(0x34~0x37)
- 진단 세션(Default·Extended·Programming)에 따라 허용 서비스가 달라진다
- CAN 위에서도, Ethernet(DoIP) 위에서도 동작 — 최신 차량은 DoIP 비중이 높아지는 추세
- OBD-II는 누구나 접근 가능한 기본 진단, UDS는 제조사 수준의 심층 진단
'차량 사이버보안 > 자동차 사이버보안 입문' 카테고리의 다른 글
| Concept부터 V&V까지 — 협력사는 자동차 사이버보안 추적성을 어떻게 관리해야 할까? (0) | 2026.05.29 |
|---|---|
| 전자서명은 어떻게 동작하는가 — Secure Boot·OTA의 핵심 원리 (0) | 2026.05.26 |
| 대칭키 vs 비대칭키 — 차량에서 왜 둘 다 쓸까 (0) | 2026.05.26 |
| 암호학이란 무엇인가 — 단방향과 양방향, 뭐가 다를까 (0) | 2026.05.26 |
| CVE·CWE·CVSS — 차량 보안에서 자꾸 나오는데 정확히 뭐가 다를까? (0) | 2026.05.22 |