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

자동차는 왜 진단 인증(Security Access)을 사용할까?

vsec 2026. 5. 12. 16:19
차량 진단 통신 시리즈 02
지난 편에서 UDS가 얼마나 강력한 채널인지 확인했습니다.
ECU 재시작, 메모리 접근, 소프트웨어 교체까지 가능한 진단 통신.

그렇다면 이 채널에 아무나 접근할 수 있을까요?

당연히 안 됩니다.
ECU는 진단 요청자가 신뢰할 수 있는 대상인지 먼저 확인합니다.
이 인증 메커니즘이 바로 Security Access(서비스 ID 0x27)입니다.

왜 진단 통신에 인증이 필요할까

1편에서 UDS 서비스 중 펌웨어 다운로드(0x34), ECU 재시작(0x11), 액추에이터 제어(0x2F) 같은 기능을 살펴봤습니다. 이 기능들은 정비사나 OEM 개발자에게는 필수지만, 아무나 사용할 수 있으면 심각한 문제가 됩니다.

OBD-II 포트는 차량 운전석 하단에 있습니다. 물리 접근만 가능하면 누구든 연결할 수 있습니다. 렌터카, 주차된 차량, 정비소에 맡긴 차량 모두 해당됩니다. 여기에 인증 없이 강력한 진단 기능이 열려 있다면 어떤 일이 벌어질까요.

인증 없는 진단 채널은 차량 보안의 가장 큰 구멍이 됩니다. 공격자가 OBD-II 포트에 접근해 악성 펌웨어를 플래싱하거나, ECU 설정을 변경하거나, 브레이크·에어백 ECU를 임의로 제어할 수 있습니다. Security Access는 이 구멍을 막는 첫 번째 방어선입니다.

Security Access — 시드-키(Seed-Key) 메커니즘

Security Access(0x27)는 시드-키(Seed-Key) 방식으로 동작합니다. 개념은 단순합니다. ECU가 먼저 문제(시드)를 내고, 테스터가 정답(키)을 맞혀야 잠금이 해제됩니다.

SECURITY ACCESS — SEED-KEY 전체 흐름
테스터
27 01
SID 0x27 | Sub-function 0x01 (Seed 요청)
ECU
67 01 3A F2 1C 08
SID 0x67 (긍정 응답) | 0x01 | Seed값: 3A F2 1C 08 (ECU가 랜덤 생성)
내부 연산
테스터는 수신한 Seed와 사전에 공유된 알고리즘·비밀 파라미터로 Key를 계산합니다.
ECU도 동일한 알고리즘으로 예상 Key를 계산해 대기합니다.
테스터
27 02 8B 4E A1 D3
SID 0x27 | Sub-function 0x02 (Key 전송) | Key값: 8B 4E A1 D3
ECU
67 02
Key 검증 성공 → 잠금 해제. 이후 허용된 서비스 사용 가능
ECU
7F 27 35
(Key 불일치 시) NRC 0x35: InvalidKey — 잠금 유지
Seed는 매번 달라집니다. ECU는 Security Access 요청이 들어올 때마다 새로운 랜덤 Seed를 생성합니다. 동일한 Seed가 반복되지 않기 때문에 이전 통신을 녹화해서 재전송하는 리플레이 공격이 통하지 않습니다.

알고리즘은 어떻게 공유되는가

시드-키 메커니즘의 핵심은 테스터와 ECU가 동일한 알고리즘과 비밀 파라미터를 갖고 있다는 전제입니다. 그렇다면 이 알고리즘은 어떻게 공유될까요?

방식 구조 특징
OEM 전용 알고리즘 OEM이 자체 설계한 알고리즘을 ECU와 공식 진단 장비에만 탑재 가장 일반적. OEM 승인 장비만 인증 가능. 알고리즘 유출 시 보안 붕괴
DLL 배포 방식 OEM이 알고리즘을 DLL 형태로 공식 Tier-1·정비 장비 업체에 배포 서드파티 진단 장비 지원 가능. DLL 유출·리버싱 위험 있음
HSM 기반 키 관리 비밀 파라미터를 ECU 내 HSM에 저장. 알고리즘은 공개해도 키는 보호 보안성 높음. 소프트웨어 분석으로 키 추출 불가
시드-키 알고리즘이 외부에 유출되면 Security Access 전체가 무력화됩니다. 알고리즘을 알면 임의의 Seed에 대한 Key를 계산할 수 있기 때문입니다. 그래서 알고리즘 자체보다 비밀 파라미터(시크릿 키)를 어디에 어떻게 저장하느냐가 실제 보안의 핵심입니다.

Security Access 레벨과 세션의 조합

Security Access는 단일 레벨이 아닙니다. 접근하려는 기능의 민감도에 따라 여러 레벨로 나뉩니다. 그리고 각 레벨은 특정 진단 세션과 조합해서만 동작합니다.

진단 세션 Security Access 레벨 허용되는 대표 기능
Default Session (0x01) 없음 (인증 불필요) DTC 읽기, 기본 데이터 조회
Extended Session (0x03) Level 0x01 (낮은 권한) 파라미터 쓰기, 액추에이터 제어
Programming Session (0x02) Level 0x01 (중간 권한) 플래싱 준비, 메모리 소거
Level 0x03 (높은 권한) 펌웨어 다운로드, 보안 설정 변경
세션과 Security Access의 조합은 이중 잠금 구조입니다. Programming Session으로 전환 자체도 조건이 필요한 경우가 많고(예: 차량 정지 상태), 그 위에 Security Access 인증까지 통과해야 합니다. 둘 중 하나라도 실패하면 펌웨어 업데이트는 불가능합니다.

Security Access의 한계 — 어떻게 뚫릴 수 있나

Security Access가 있다고 완벽하지는 않습니다. 실제로 악용된 방법들이 있습니다.

공격 01
알고리즘 리버싱

ECU 펌웨어를 덤프해서 시드-키 알고리즘을 분석합니다. 알고리즘이 단순하거나 하드코딩된 시크릿 파라미터가 있다면 모든 ECU에 대한 Key 계산이 가능해집니다. 튜닝 업체나 OBD 해킹 커뮤니티에서 실제로 사용되는 방법입니다.

공격 02
브루트 포스

Key 공간이 작으면 모든 경우의 수를 시도해 맞출 수 있습니다. UDS 표준에는 연속 실패 시 잠금(Delay 또는 Lock) 메커니즘이 정의되어 있지만, 구현하지 않은 ECU가 있습니다.

공격 03
DLL 추출

OEM이 배포한 진단 장비 소프트웨어나 DLL 파일에서 알고리즘을 추출합니다. 공식 정비 소프트웨어가 리버싱의 대상이 됩니다.

공격 04
물리 메모리 접근

JTAG/SWD 디버그 포트가 잠기지 않은 ECU는 직접 메모리를 읽어 시크릿 파라미터를 추출할 수 있습니다. Secure Boot 편에서 다뤘던 디버그 포트 잠금이 여기서도 중요한 이유입니다.

자동차 튜닝 업계에서는 Security Access를 우회하는 "OBD 튜닝" 도구들이 이미 존재합니다. 엔진 출력 향상, 속도 제한 해제 등에 사용되지만, 같은 방법으로 악의적인 목적에도 사용될 수 있습니다. Security Access 알고리즘이 한번 공개되면 해당 차종 전체가 위험해집니다.

Security Access의 한계를 넘은 — Authentication (0x29)

시드-키 방식의 Security Access는 수십 년간 사용됐지만 구조적 한계가 있습니다. UDS 2020(ISO 14229-1:2020)에서 새로운 서비스인 Authentication(0x29)이 추가된 이유입니다.

Security Access (0x27) — 기존
대칭키 기반 (시드-키)
알고리즘 비밀이 유지되어야 안전
단방향 인증 (테스터→ECU만)
OEM마다 다른 독자 구현
PKI 인프라 불필요
대부분 양산차에 적용 중
Authentication (0x29) — 신규
공개키 암호(PKI) 기반
알고리즘 공개, 키만 보호
양방향 인증 (상호 검증 가능)
표준화된 인증 방식
인증서(Certificate) 기반 관리
최신 차량·SDV에 적용 확산 중

Authentication은 진단 장비가 OEM 발급 인증서를 제시하고, ECU가 이를 검증하는 방식입니다. IT 보안의 TLS 인증과 유사한 개념을 차량 진단에 적용한 것입니다. 알고리즘을 숨기는 대신 수학적으로 안전한 공개키 암호를 사용하기 때문에 알고리즘 리버싱 공격이 원천적으로 불가능합니다.

SDV 시대로 갈수록 Authentication(0x29) 적용이 확산될 것입니다. OTA와 원격 진단이 일반화되면 물리 포트를 통한 진단뿐 아니라 원격 진단 채널의 인증도 중요해지기 때문입니다. Security Access의 시드-키 방식으로는 원격 환경에서 충분한 보안을 보장하기 어렵습니다.

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

시드-키 알고리즘 설계가 가장 민감한 작업이다 — Security Access 구현에서 알고리즘 자체는 OEM이 정의해서 전달합니다. Tier-1 입장에서는 이 알고리즘을 ECU에 정확히 구현하고, 비밀 파라미터를 안전하게 저장하는 것이 핵심입니다. 파라미터가 소프트웨어 어딘가에 하드코딩되어 있으면 펌웨어 덤프로 바로 노출됩니다.
연속 실패 잠금(Attempt Counter) 구현이 필수다 — 브루트 포스 공격을 막으려면 Key 불일치가 일정 횟수 이상 반복되면 일정 시간 잠금하거나 영구 잠금하는 메커니즘이 필요합니다. UDS 표준에 정의되어 있지만 구현 여부는 ECU마다 다릅니다. 이 기능이 빠진 ECU는 Pentest에서 반드시 지적됩니다.
레벨별 권한 설계가 복잡하다 — 어떤 서비스에 어떤 레벨의 Security Access를 요구할지는 TARA 결과와 OEM 요구사항에 따라 결정됩니다. 너무 많은 레벨을 만들면 관리가 복잡해지고, 너무 적으면 세밀한 권한 제어가 불가능합니다. 처음 설계할 때 신중하게 정의해야 이후 변경 비용이 줄어듭니다.
HSM 연동이 보안 수준을 결정한다 — 시드-키 연산과 비밀 파라미터를 HSM에서 처리하면 소프트웨어 공격으로 파라미터를 추출하는 것이 원천 차단됩니다. HSM 없이 메인 MCU에서만 처리하면 펌웨어 덤프 시 노출 위험이 있습니다. 최근 OEM 보안 요구사항은 HSM 기반 Security Access를 명시하는 경우가 늘고 있습니다.

Security Access와 Secure Boot — 두 보안이 맞닿는 지점

이 시리즈의 다른 글인 Secure Boot와 Security Access는 서로 다른 위협을 막습니다. 하지만 목적은 하나입니다.

보안 기능 막는 것 언제 동작하는가
Security Access 외부에서 허가되지 않은 진단 접근 테스터가 ECU에 연결했을 때
Secure Boot 내부에서 변조된 소프트웨어 실행 ECU가 부팅될 때

Security Access를 우회해 악성 펌웨어를 플래싱하는 데 성공했더라도, 다음 부팅 시 Secure Boot가 서명 검증에 실패해 실행을 차단합니다. 반대로 Secure Boot가 없으면 Security Access를 통과하는 순간 ECU는 무방비 상태가 됩니다. 두 기능은 서로의 빈틈을 보완하는 관계입니다.

과거 차량은 정비 편의성을 우선했습니다. 진단 접근이 쉬워야 수리도 빠르게 됐기 때문입니다. 하지만 차량이 네트워크에 연결되고 OTA가 일반화되면서, 보안을 위해 접근 권한을 더욱 제한하는 방향으로 업계가 바뀌고 있습니다. 편의성과 보안의 균형점을 찾는 것이 지금 자동차 보안 설계의 핵심 과제 중 하나입니다.

마무리

Security Access는 "아는 자만 들어올 수 있다"는 원칙을 구현합니다.
하지만 "아는 자"의 범위를 어떻게 정의하고,
그 비밀을 어떻게 지키느냐가 실제 보안 수준을 결정합니다.

시드-키 방식은 구현이 단순하고 기존 인프라 없이도 동작한다는 장점이 있습니다. 하지만 비밀 알고리즘에 의존하는 구조적 한계가 있습니다. PKI 기반의 Authentication(0x29)이 그 한계를 넘는 방향이지만, 아직 대부분의 양산차는 Security Access 기반으로 동작합니다.

다음 편에서는 Security Access와 깊게 연결된 Diagnostic Session이 왜 필요하고 어떻게 설계되는지를 다룹니다.

핵심 요약

  • Security Access(0x27)는 시드-키 메커니즘으로 진단 채널 접근을 제어한다
  • ECU가 랜덤 Seed를 발급 → 테스터가 알고리즘으로 Key 계산 → ECU가 검증
  • Seed는 매번 달라져 리플레이 공격을 차단한다
  • 알고리즘 자체보다 비밀 파라미터를 어디에 저장하느냐가 실제 보안의 핵심
  • HSM에 파라미터를 저장하면 소프트웨어 공격으로 추출 불가
  • 주요 공격: 알고리즘 리버싱, 브루트 포스, DLL 추출, 물리 메모리 접근
  • Authentication(0x29)은 PKI 기반으로 구조적 한계를 극복한 신규 방식
  • 연속 실패 잠금(Attempt Counter) 미구현은 Pentest에서 반드시 지적되는 결함
차량 진단 통신 시리즈
1
자동차 ECU는 정비소와 어떻게 대화할까? — UDS 진단 통신 쉽게 이해하기
2
자동차는 왜 진단 인증(Security Access)을 사용할까?  ← 현재 글
3
UDS의 Diagnostic Session은 왜 필요할까?
4
차량 ECU 업데이트는 실제로 어떻게 진행될까? — Flashing 구조 이해하기
5
Gateway ECU는 왜 진단 요청을 차단할까?
SecurityAccess UDS 진단인증 SeedKey ISO14229 차량보안 ECU진단 HSM Authentication 차량보안기술
반응형