그런데 사실 Security Access 전에 먼저 넘어야 할 관문이 있습니다.
ECU는 항상 같은 상태로 동작하지 않습니다.
어떤 진단 세션(Diagnostic Session)에 있느냐에 따라
허용되는 서비스 자체가 달라집니다.
세션을 이해하지 못하면 Security Access도, 플래싱도 설명이 안 됩니다.
진단 통신의 핵심 개념을 이번 편에서 정리합니다.
진단 세션 — ECU의 동작 모드
진단 세션은 쉽게 말해 ECU가 현재 어떤 모드로 동작하고 있는지를 나타내는 상태입니다. 컴퓨터로 비유하면 일반 사용자 모드, 관리자 모드처럼 권한 레벨이 다른 상태라고 생각하면 됩니다.
ECU는 전원이 켜지면 항상 Default Session에서 시작합니다. 진단기가 세션 전환을 요청해야만 다른 세션으로 이동할 수 있습니다. 세션 전환은 UDS 서비스 0x10 DiagnosticSessionControl로 수행합니다.
세 가지 표준 세션
UDS 표준은 세 가지 기본 세션을 정의합니다. OEM에 따라 추가 세션을 정의하기도 하지만, 이 세 가지가 핵심입니다.
세션은 어떻게 전환되는가
세션 전환은 선형적입니다. Default에서 바로 Programming으로 뛰어넘을 수 없습니다. 그리고 각 세션 전환에는 조건이 있습니다.
ECU 전원 ON 시 자동 진입
0x10 0x03 요청
0x27 인증
0x10 0x02 요청
0x27 인증
0x10 0x01 또는 타임아웃
실제 세션 전환 통신은 이렇게 이루어집니다.
세션과 Security Access — 무엇이 다른가
세션과 Security Access는 함께 사용되지만 역할이 다릅니다. 처음 접하면 헷갈리기 쉬운 개념이라 명확히 구분해둡니다.
| 구분 | Diagnostic Session | Security Access |
|---|---|---|
| 역할 | ECU의 진단 동작 모드 전환 | 보호된 기능에 대한 인증 |
| SID | 0x10 | 0x27 |
| 비유 | 건물의 층을 이동하는 것 | 잠긴 방의 문을 여는 것 |
| 순서 | 먼저 수행 (세션 전환이 선행) | 세션 전환 후 수행 |
| 결과 | 허용 서비스 범위 변경 | 특정 서비스 잠금 해제 |
세션별 서비스 가용성 — 한눈에 보기
| 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 필요 |
세션은 영원히 유지되지 않는다 — 타임아웃
진단 세션은 한번 전환하면 영구적으로 유지되지 않습니다. UDS는 세션 유지를 위한 타이머 체계를 정의합니다. 이 타이머들을 이해해야 진단 통신 구현이 제대로 됩니다.
테스터가 요청을 보낸 후 ECU의 응답을 기다리는 최대 시간. 기본값은 50ms. 이 시간 안에 응답이 없으면 통신 오류로 처리합니다.
처리 시간이 긴 요청에서 ECU가 0x78(ResponsePending)을 보낸 후 최종 응답까지의 최대 시간. 기본값은 5000ms.
테스터가 아무 요청도 보내지 않으면 세션이 유지되는 최대 시간. 기본값은 5000ms. 이 시간이 지나면 ECU는 자동으로 Default Session으로 복귀합니다.
세션이 실제로 쓰이는 장면 — ECU 플래싱 시나리오
10 02 전송 → Programming Session(0x02) 전환 요청. 차량 속도 0km/h 확인 후 허용.27 01 → Seed 요청. ECU가 랜덤 Seed 반환.27 02 [Key] → Key 전송. ECU 검증 성공 → Security Access 해제.31 01 → 메모리 소거 루틴 실행.34 → 다운로드 시작. 36 → 펌웨어 블록 전송. 37 → 전송 종료.31 01 → 체크섬 검증 루틴 실행. 검증 통과.11 01 → ECUReset. ECU 재시작 후 새 펌웨어로 부팅. Secure Boot가 무결성 재검증.이 8단계 흐름에서 세션과 Security Access가 어떻게 맞물리는지 보입니다. 세션 없이는 플래싱 서비스 자체가 열리지 않고, Security Access 없이는 실제 쓰기가 허용되지 않습니다. 그리고 마지막에 Secure Boot가 한 번 더 검증합니다.
보안 관점에서 세션을 어떻게 설계해야 하는가
세션 구조는 단순히 편의 기능이 아닙니다. 잘못 설계하면 보안의 구멍이 됩니다.
현업에서는 실제로 이렇게 경험한다
마무리
진단 세션은 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 스펙의 핵심 문서다
'차량 사이버보안 > 보안기술' 카테고리의 다른 글
| Gateway ECU는 왜 진단 요청을 차단할까? (0) | 2026.05.13 |
|---|---|
| 차량 ECU 업데이트는 실제로 어떻게 진행될까? (Flashing 구조 이해하기) (0) | 2026.05.13 |
| 자동차는 왜 진단 인증(Security Access)을 사용할까? (0) | 2026.05.12 |
| 차량 ECU의 첫 번째 방어선 (Secure Boot는 어떻게 동작하는가) (0) | 2026.05.12 |
| 차량 OTA 업데이트, 어떻게 안전하게 할 수 있을까? (1) | 2026.05.12 |