차량 사이버보안/보안기술

UDS의 Diagnostic Session은 왜 필요할까?(ECU 진단 권한을 나누는 방법)

vsec 2026. 5. 13. 08:50
차량 진단 통신 시리즈 03
앞 편에서 Security Access가 ECU의 보호된 기능을 잠근다고 했습니다.
그런데 사실 Security Access 전에 먼저 넘어야 할 관문이 있습니다.

ECU는 항상 같은 상태로 동작하지 않습니다.
어떤 진단 세션(Diagnostic Session)에 있느냐에 따라
허용되는 서비스 자체가 달라집니다.

세션을 이해하지 못하면 Security Access도, 플래싱도 설명이 안 됩니다.
진단 통신의 핵심 개념을 이번 편에서 정리합니다.

진단 세션 — ECU의 동작 모드

진단 세션은 쉽게 말해 ECU가 현재 어떤 모드로 동작하고 있는지를 나타내는 상태입니다. 컴퓨터로 비유하면 일반 사용자 모드, 관리자 모드처럼 권한 레벨이 다른 상태라고 생각하면 됩니다.

ECU는 전원이 켜지면 항상 Default Session에서 시작합니다. 진단기가 세션 전환을 요청해야만 다른 세션으로 이동할 수 있습니다. 세션 전환은 UDS 서비스 0x10 DiagnosticSessionControl로 수행합니다.

세션이 존재하는 근본적인 이유는 최소 권한 원칙(Principle of Least Privilege)입니다. 평상시에는 꼭 필요한 기능만 열어두고, 특정 작업이 필요할 때만 해당 권한을 부여합니다. 항상 모든 기능이 열려있으면 공격 표면이 커집니다.

세 가지 표준 세션

UDS 표준은 세 가지 기본 세션을 정의합니다. OEM에 따라 추가 세션을 정의하기도 하지만, 이 세 가지가 핵심입니다.

Default Session 0x01
ECU가 켜질 때 자동으로 진입하는 기본 상태. 차량이 정상 운행 중일 때의 모드입니다.
DTC 읽기 (0x19)
기본 데이터 조회 (0x22)
ECU 정보 읽기
펌웨어 업데이트 ✕
파라미터 쓰기 ✕
Extended Session 0x03
정비소 수준의 고급 진단. Security Access 인증 후 더 많은 기능에 접근 가능합니다.
DTC 읽기·삭제
파라미터 읽기·쓰기 (0x2E)
액추에이터 제어 (0x2F)
루틴 실행 (0x31)
펌웨어 업데이트 ✕
Programming Session 0x02
ECU 소프트웨어 업데이트 전용 모드. 가장 강력한 권한이며 가장 엄격한 조건이 필요합니다.
펌웨어 다운로드 (0x34~0x37)
메모리 소거
부트로더 실행
보안 설정 변경
Security Access 필수

세션은 어떻게 전환되는가

세션 전환은 선형적입니다. Default에서 바로 Programming으로 뛰어넘을 수 없습니다. 그리고 각 세션 전환에는 조건이 있습니다.

세션 전환 흐름과 조건
Default
ECU 전원 ON 시 자동 진입
Extended
0x10 0x03 요청
Security Access
0x27 인증
파라미터 쓰기·액추에이터 제어 가능
Default
Programming
0x10 0x02 요청
Security Access
0x27 인증
펌웨어 플래싱 가능
Extended / Programming
Default
0x10 0x01 또는 타임아웃
세션 종료 시 Default로 복귀
Programming Session으로의 전환은 추가 조건이 붙는 경우가 많습니다. 대표적으로 차량 속도 0km/h 조건입니다. 주행 중 ECU 소프트웨어가 업데이트되면 치명적인 오작동이 발생할 수 있기 때문에, ECU가 차량 정지 상태인지 확인한 후에만 Programming Session 진입을 허용합니다.

실제 세션 전환 통신은 이렇게 이루어집니다.

실제 세션 전환 예시 — Default → Programming
테스터
10 02
SID 0x10 | Sub-function 0x02 — Programming Session 전환 요청
ECU
50 02 00 19 01 F4
SID 0x50 (긍정 응답) | 0x02 | P2 타임아웃(25ms) | P2*(500ms) — 전환 성공
ECU
7F 10 22
(조건 미충족 시) 0x7F (부정 응답) | 0x10 | NRC 0x22: conditionsNotCorrect — 차량 속도 조건 미충족

세션과 Security Access — 무엇이 다른가

세션과 Security Access는 함께 사용되지만 역할이 다릅니다. 처음 접하면 헷갈리기 쉬운 개념이라 명확히 구분해둡니다.

구분 Diagnostic Session Security Access
역할 ECU의 진단 동작 모드 전환 보호된 기능에 대한 인증
SID 0x10 0x27
비유 건물의 층을 이동하는 것 잠긴 방의 문을 여는 것
순서 먼저 수행 (세션 전환이 선행) 세션 전환 후 수행
결과 허용 서비스 범위 변경 특정 서비스 잠금 해제
Programming Session으로 이동한다고 바로 플래싱이 가능하지 않습니다. 층은 올라왔지만 방 문은 아직 잠겨 있는 상태입니다. Security Access 인증을 통과해야 비로소 그 방(펌웨어 다운로드)에 들어갈 수 있습니다.

세션별 서비스 가용성 — 한눈에 보기

UDS 서비스 Default Extended Programming
0x10 DiagnosticSessionControl
0x11 ECUReset
0x19 ReadDTCInformation
0x22 ReadDataByIdentifier
0x27 SecurityAccess
0x2E WriteDataByIdentifier SA 필요
0x2F InputOutputControl SA 필요
0x31 RoutineControl
0x34 RequestDownload SA 필요
0x36 TransferData SA 필요
이 매트릭스는 표준 기준이며, OEM마다 다르게 정의됩니다. 중요한 것은 구조입니다. 강력한 서비스일수록 더 높은 세션이 필요하고, 그 위에 Security Access까지 요구합니다. 이중 잠금 구조가 핵심입니다.

세션은 영원히 유지되지 않는다 — 타임아웃

진단 세션은 한번 전환하면 영구적으로 유지되지 않습니다. UDS는 세션 유지를 위한 타이머 체계를 정의합니다. 이 타이머들을 이해해야 진단 통신 구현이 제대로 됩니다.

P2
ECU 응답 타임아웃

테스터가 요청을 보낸 후 ECU의 응답을 기다리는 최대 시간. 기본값은 50ms. 이 시간 안에 응답이 없으면 통신 오류로 처리합니다.

P2*
연장 응답 타임아웃

처리 시간이 긴 요청에서 ECU가 0x78(ResponsePending)을 보낸 후 최종 응답까지의 최대 시간. 기본값은 5000ms.

S3
세션 유지 타임아웃

테스터가 아무 요청도 보내지 않으면 세션이 유지되는 최대 시간. 기본값은 5000ms. 이 시간이 지나면 ECU는 자동으로 Default Session으로 복귀합니다.

S3 타임아웃이 중요한 이유가 있습니다. 테스터가 Extended Session에서 작업을 마치고 아무것도 안 하면 5초 후 자동으로 Default Session으로 돌아갑니다. 이 때문에 진단 소프트웨어는 작업 중 주기적으로 TesterPresent(0x3E) 메시지를 보내 "나 아직 여기 있어"라고 알립니다. 이를 통해 세션을 유지합니다.

세션이 실제로 쓰이는 장면 — ECU 플래싱 시나리오

실제 시나리오 정비소에서 ECU 소프트웨어 업데이트하기
1
진단기 연결. ECU는 Default Session(0x01) 상태.
2
10 02 전송 → Programming Session(0x02) 전환 요청. 차량 속도 0km/h 확인 후 허용.
3
27 01 → Seed 요청. ECU가 랜덤 Seed 반환.
4
27 02 [Key] → Key 전송. ECU 검증 성공 → Security Access 해제.
5
31 01 → 메모리 소거 루틴 실행.
6
34 → 다운로드 시작. 36 → 펌웨어 블록 전송. 37 → 전송 종료.
7
31 01 → 체크섬 검증 루틴 실행. 검증 통과.
8
11 01 → ECUReset. ECU 재시작 후 새 펌웨어로 부팅. Secure Boot가 무결성 재검증.

이 8단계 흐름에서 세션과 Security Access가 어떻게 맞물리는지 보입니다. 세션 없이는 플래싱 서비스 자체가 열리지 않고, Security Access 없이는 실제 쓰기가 허용되지 않습니다. 그리고 마지막에 Secure Boot가 한 번 더 검증합니다.

보안 관점에서 세션을 어떻게 설계해야 하는가

세션 구조는 단순히 편의 기능이 아닙니다. 잘못 설계하면 보안의 구멍이 됩니다.

좋은 세션 설계의 세 가지 원칙입니다. 첫째, 최소 권한 — Default Session에서는 읽기 중심의 최소한만 허용합니다. 둘째, 명시적 전환 — 세션 전환은 항상 명시적 요청으로만 이루어져야 합니다. 암묵적 권한 상승은 없어야 합니다. 셋째, 자동 복귀 — 세션 타임아웃 시 반드시 Default로 복귀해야 합니다. 세션이 열린 채로 방치되면 공격 기회가 됩니다.
실제로 발견되는 취약한 설계 패턴이 있습니다. Security Access 없이도 Programming Session 진입이 가능한 경우, 세션 타임아웃이 구현되지 않아 세션이 무한정 유지되는 경우, Default Session에서도 쓰기 서비스가 열려있는 경우입니다. 이런 설계는 Penetration Test에서 반드시 발견됩니다.

현업에서는 실제로 이렇게 경험한다

세션 매트릭스 문서가 핵심 스펙이다 — OEM은 어떤 세션에서 어떤 서비스가 허용되는지를 표 형태로 정의해서 Tier-1에 전달합니다. 이 매트릭스가 ECU 구현의 가장 중요한 기준이 됩니다. 매트릭스와 다르게 구현하면 OEM 심사에서 반드시 걸립니다.
TesterPresent 처리가 생각보다 까다롭다 — 긴 작업(예: 대용량 펌웨어 전송) 중 세션이 타임아웃되지 않도록 TesterPresent(0x3E)를 주기적으로 보내야 합니다. 이 타이밍이 맞지 않으면 작업 중간에 세션이 끊겨 처음부터 다시 해야 합니다. 진단 소프트웨어와 ECU 간 타이밍 조율이 중요합니다.
Programming Session 진입 조건이 OEM마다 다르다 — 차량 속도 0km/h 외에도, 엔진 오프 상태, 특정 DTC 없는 상태, 배터리 전압 범위 등 다양한 사전 조건을 OEM이 요구합니다. 이 조건을 ECU가 스스로 확인해야 하고, 조건 미충족 시 적절한 NRC를 반환해야 합니다.
세션 상태 관리가 멀티 ECU 환경에서 복잡해진다 — 하나의 테스터가 여러 ECU에 동시에 진단 요청을 보내는 경우, 각 ECU의 세션 상태가 독립적으로 관리됩니다. 게이트웨이를 통한 라우팅 구조에서 어떤 ECU가 어느 세션에 있는지 추적하는 것이 진단 소프트웨어 구현의 복잡한 부분입니다.

마무리

진단 세션은 ECU의 권한 레벨입니다.
어떤 세션에 있느냐에 따라 할 수 있는 것과 없는 것이 결정됩니다.
그리고 그 위에 Security Access가 더해져 이중으로 접근을 제어합니다.

Default → Extended → Programming, 그리고 각 단계의 Security Access. 이 구조를 이해하면 다음 편에서 다룰 ECU 플래싱의 전체 흐름이 훨씬 명확하게 보입니다.

핵심 요약

  • 진단 세션은 ECU의 권한 레벨 — Default·Extended·Programming 세 가지가 표준
  • ECU는 전원 ON 시 항상 Default Session에서 시작한다
  • 세션 전환은 0x10 DiagnosticSessionControl로 수행, 복귀는 타임아웃 또는 명시적 요청
  • Programming Session은 강력한 조건(차량 정지 등)이 필요한 경우가 많다
  • S3 타임아웃으로 세션은 자동 복귀 — TesterPresent(0x3E)로 세션 유지
  • 세션 + Security Access = 이중 잠금 구조가 진단 보안의 핵심
  • 세션 매트릭스(어느 세션에서 어떤 서비스가 허용되는지)가 OEM 스펙의 핵심 문서다
차량 진단 통신 시리즈
1
자동차 ECU는 정비소와 어떻게 대화할까? — UDS 진단 통신 쉽게 이해하기
2
자동차는 왜 진단 인증(Security Access)을 사용할까?
3
UDS의 Diagnostic Session은 왜 필요할까?  ← 현재 글
4
차량 ECU 업데이트는 실제로 어떻게 진행될까? — Flashing 구조 이해하기
5
Gateway ECU는 왜 진단 요청을 차단할까?
DiagnosticSession UDS ISO14229 ECU진단 ProgrammingSession SecurityAccess 차량보안기술 TesterPresent ECU플래싱
반응형