g.s.song 2023. 12. 1. 10:36

1. Overview

자동차에는 약 30 ~ 50개의  ECU(Electronic Control Unit)가 탑재되며, 각자의 역할을 수행합니다. 또한 통신프로토콜을 사용하여 필요한 정보를 송 수신하거나, 자신의 상태를 전달합니다.

 

만약 공격자(해커)가 ECU에 무단으로 접근하여 특정 메세지를 전송하는 것이 가능하다면, 심각한 보안 위협을 초래할 수 있습니다.

 

따라서 제어기에 접근하는 사용자가 인가된 사용자인지 판단하기 위해 Secure Access 라는 보안 기능을 사용합니다. 본 포스트에서는 Secure Access 기능의 동작 원리와 실제 응용 사례에 대한 내용을 설명합니다.

 

2. Secure Access

Secure Access는 전자서명을 통해 연결된 진단기가 인가된 진단기인지 아닌지를 검증합니다. 언급하기 앞서, 전자서명에 대한 내용을 포함하여, 대칭키 암호와 공개키 암호 등 암호학에 대한 지식이 있다면 이해에 도움이 될 것입니다. 이러한 암호학 관련 지식은 Cryptography 포스트에서 자세하게 다루도록하겠습니다.

 

어쨋든 Secure Access는 공개키 기반 구조를 통해 차량 ECU에 접근하는 사용자를 식별합니다. 기능 구현 개요는 아래의 그림과 같습니다.

 

Secure Access 흐름도

 

ECU 내에는 HSM(Hardware Security Module) 이라는 영역이 존재합니다. HSM에 대한 내용 또한 추후 포스트에서 상세하게 다루도록 하겠습니다.

 

먼저 ECU 생산라인에서 Secure Access를 위해 HSM 영역에 Root CA 인증서를 저장하고, 인증서버를 구축합니다.  그리고 인증서버의 인증 요청을 검증하고, 난수를 HSM 내 인증서버로 전송해 전자 서명을 요청할 수 있습니다. 인증서버는 개인키로 난수의 전자서명을 생성하고, 난수의 전자서명을 추가하여 ECU에 검증 요청을 전송합니다.

 

이후 ECU는 난수의 전자서명을 검증하여 전자서명을 통해 허가된 사용자만 접근할 수 있도록 인가할 수 있습니다.

 

그렇다면 Secure Access가 필요한 순간은 언제일까요?

 

물론 어떤 프로토콜을 사용하는지, 하나의 자동차에 어떤 ECU가 탑재되고, 각 ECU가 어떻게 통신하는지에 따라 다르지만, UDS(Unified Diagnostic Service) 중 Security Access를 통과해야만 사용 가능한 서비스(e.g., Write Data By Identifier (0x2E), Write Memory By Address (0x3D), Request Download (0x34), Transfer Data(0x36), etc...) 를 사용하기 위해 Security Access를 요청할 때. Secure Access가 요구될 수 있습니다.

 

3. Secure Access 예시

Secure Access의 예시로 아래의 CAN log를 통해 쉽게 이해할 수 있습니다.

 

아래의 로그는 실제 차량에 탑재되는 제어기에서 진단기와 통신할 때 주고받은 CAN 메세지 로그입니다.  CAN-FD를 사용하는데, CAN만으로는 다량의 데이터를 전송하는데 한계가 있기 때문에 CAN-FD를 사용하는 것이 아닐까 추측됩니다.

 

Secure Access Example

 

위의 로그를 확인했을 때, 먼저 0x10 서비스를 사용하여 03 세션을 엽니다. UDS에는 크게 Default Session, Programming Session, Extended Session의 세 가지 세션이 존재하며, 해당 내용은 UDS 포스트에서 자세하게 설명합니다.

 

이후 SecurityAccess를 시도하기 위해 RequestSeed 를 전송하는데, 이때 Public key 기반의 인증서를 함께 전송함으로서 Secure Access를 구현할 수 있습니다. 

 

로그를 통해 0x600 (1536) byte 길이의 인증서를 전달하는 것을 확인할 수 있는데, 이러한 Secure Access 때문에 CAN FD를 사용하는 것이 아닐까 생각됩니다.