"ECU 소프트웨어 업데이트 하나 하면 됩니다. 30분이면 돼요."
그 30분 동안 차 안에서는 무슨 일이 벌어지는 걸까요?
지금까지 UDS, Security Access, Diagnostic Session을 배웠습니다.
이 세 가지가 모두 맞물리는 장면이 바로 ECU 플래싱(Flashing)입니다.
이번 편에서는 펌웨어가 ECU에 설치되는 전 과정을
처음부터 끝까지 단계별로 들여다봅니다.
플래싱이란 무엇인가
플래싱(Flashing)은 ECU의 플래시 메모리에 새로운 펌웨어를 기록하는 작업입니다. 스마트폰에 비유하면 OS 업데이트와 비슷하지만, 훨씬 낮은 레벨에서 직접 메모리에 데이터를 씁니다.
| 구분 | 스마트폰 OS 업데이트 | ECU 플래싱 |
|---|---|---|
| 업데이트 방식 | 인터넷으로 패키지 다운로드 후 설치 | 진단기·OTA로 직접 플래시 메모리에 기록 |
| 실패 시 결과 | 재시도 가능, 최악의 경우 부팅 루프 | ECU Brick — 차량 시동 불가, 견인 필요 |
| 업데이트 중 중단 | 대부분 복구 가능 | 메모리 손상, 최악의 경우 ECU 교체 필요 |
| 진행 시간 | 수 분 ~ 수십 분 | 수 분 ~ 1시간 (ECU 용량, 통신 속도에 따라 다름) |
| 보안 요건 | Google·Apple 서명 검증 | OEM 코드 서명 + Security Access + Secure Boot |
플래싱을 이해하려면 메모리 구조를 알아야 한다
ECU 플래시 메모리는 역할에 따라 여러 영역으로 나뉩니다. 어느 영역에 무엇을 쓰느냐에 따라 플래싱의 방식과 위험도가 달라집니다.
Bootloader — 플래싱을 가능하게 하는 작은 운영 환경
ECU는 일반 애플리케이션 소프트웨어만으로는 자기 자신을 업데이트할 수 없습니다. 실행 중인 코드가 자기 자신이 저장된 메모리를 지우는 것은 구조적으로 불가능하기 때문입니다.
그래서 Bootloader가 존재합니다. Bootloader는 ECU 업데이트를 수행하기 위한 별도의 작은 실행 환경입니다. Programming Session으로 전환되면 ECU는 Application 소프트웨어 대신 Bootloader를 실행 상태로 전환하고, Bootloader가 실제 플래싱 작업을 수행합니다.
| Bootloader 역할 | 설명 |
|---|---|
| 통신 초기화 | CAN, DoIP 등 진단 통신 스택을 초기화하고 테스터 요청을 수신 |
| Flash 제어 | 메모리 소거(Erase)와 쓰기(Write) 직접 수행 |
| 무결성 검증 | 수신된 펌웨어의 CRC·서명 검증 |
| 복구 모드 | 플래싱 실패 시 이전 펌웨어로 복구(Dual Bank 활용) |
| Application 전환 | 플래싱 완료 후 Application 소프트웨어로 제어권 이전 |
전체 플래싱 흐름 — 단계별로 보기
ECU 플래싱은 크게 사전 준비 → 메모리 소거 → 데이터 쓰기 → 무결성 검증 → 사후 처리의 5단계로 진행됩니다.
플래싱이 중단되면? — Dual Bank 구조
플래싱 도중 전원이 끊기거나 통신이 단절되면 어떻게 될까요? 만약 단일 메모리 구조라면 절반만 쓰인 상태에서 멈춰 ECU가 Brick이 됩니다.
이를 방지하는 것이 Dual Bank 구조입니다. 메모리를 두 파티션으로 나눠, 현재 실행 중인 Bank A에서 계속 정상 동작하면서 Bank B에 새 펌웨어를 씁니다. 모든 검증이 완료된 후에야 부팅 파티션을 Bank B로 전환합니다.
| 상황 | 단일 Bank | Dual Bank |
|---|---|---|
| 플래싱 중 전원 차단 | ECU Brick — 복구 불가 | Bank A로 자동 복구, 재시도 가능 |
| 체크섬 검증 실패 | 잘못된 펌웨어로 부팅 시도 | Bank A 유지, Bank B 폐기 후 재시도 |
| Secure Boot 실패 | 부팅 불가 | 이전 Bank로 Fallback |
| 메모리 용량 | 작게 필요 | Application 영역 2배 필요 |
플래싱의 보안 체크포인트들
ECU 플래싱은 이 시리즈에서 다룬 모든 보안 요소가 맞물리는 지점입니다. 각 체크포인트가 어느 단계에서 무엇을 막는지 정리하면 이렇습니다.
-
Programming Session 진입 조건 차량 정지, 배터리 전압 정상 등 물리적 조건을 먼저 확인합니다. 주행 중 플래싱을 원천 차단합니다.
-
Security Access 인증 시드-키 방식으로 인증된 진단기만 플래싱 서비스에 접근할 수 있습니다. 인증 실패 시 일정 시간 잠금됩니다.
-
코드 서명 검증 (Secure Flash) OEM 개인키로 서명된 패키지만 받아들입니다. 체크섬 루틴과 서명 검증을 통해 변조 여부를 확인합니다.
-
안티 롤백 (Anti-Rollback) 현재 버전보다 낮은 펌웨어의 설치를 차단합니다. 다운그레이드 공격으로 이전 취약점을 복원하는 것을 막습니다.
-
Secure Boot 재검증 ECUReset 후 부팅 시 새로 설치된 펌웨어의 서명을 한 번 더 검증합니다. 플래싱 이후 변조가 발생했더라도 여기서 차단됩니다.
현업에서는 실제로 이렇게 경험한다
마무리
ECU 플래싱은 UDS 진단 통신의 모든 요소가 하나로 맞물리는 작업입니다.
세션 전환, Security Access, 코드 서명, Dual Bank, Secure Boot —
이 다섯 가지가 순서대로 맞물려야 안전한 업데이트가 완성됩니다.
정비소에서의 "30분 업데이트" 뒤에는 이런 과정이 숨어있습니다. 그리고 이 과정 중 하나라도 허술하면, 정비소 방문이 공격자의 진입 기회가 될 수 있습니다.
다음 편에서는 이 모든 진단 요청이 ECU에 도달하기 전에 중간에서 걸러내는 Gateway ECU의 역할을 다룹니다.
핵심 요약
- 플래싱은 ECU 플래시 메모리에 새 펌웨어를 기록하는 작업 — 실패 시 ECU Brick 위험
- 5단계: 사전 준비(세션·SA) → 메모리 소거 → 데이터 전송 → 무결성 검증 → ECUReset
- 데이터 전송은 RequestDownload(0x34) → TransferData(0x36) → RequestTransferExit(0x37)
- Dual Bank로 플래싱 중 실패해도 이전 펌웨어로 자동 복구 가능
- 보안 체크포인트: Programming Session 조건 → Security Access → 코드 서명 → 안티 롤백 → Secure Boot
- ResponsePending(0x78)으로 긴 작업 중 타임아웃을 방지한다
- V&V에서 실패 케이스(변조 패키지 거부, Dual Bank 복구) 검증이 핵심이다
'차량 사이버보안 > 보안기술' 카테고리의 다른 글
| 자동차 ECU는 왜 HSM을 필요로 할까? (0) | 2026.05.13 |
|---|---|
| Gateway ECU는 왜 진단 요청을 차단할까? (0) | 2026.05.13 |
| UDS의 Diagnostic Session은 왜 필요할까?(ECU 진단 권한을 나누는 방법) (0) | 2026.05.13 |
| 자동차는 왜 진단 인증(Security Access)을 사용할까? (0) | 2026.05.12 |
| 차량 ECU의 첫 번째 방어선 (Secure Boot는 어떻게 동작하는가) (0) | 2026.05.12 |