Security Tech

CAN 통신 프로토콜

작성자 - 이토란

CAN

서론

 

최근 차량 보안 회사의 면접을 준비하며 관련 개념과 지식들을 습득하였는데, 그 중에서 가장 기본적인 차량 내부 ECU의 통신 방식인 CAN 프로토콜에 대해 흥미를 느껴 게시물로 작성해보려한다.


 

1. CAN 통신이란?

CAN (Controller Area Network), 흔히 CAN Bus라고 불리는 이 통신 방식은 1986년 독일 BOSCH 사가 자동차 내부 네트워크용으로 개발한 통신 프로토콜이다. 자동차의 다양한 ECU (Electronic Control Unit) 간 정보를 교환하기 위한 표준 통신 방식이며, 현재 ISO 11898로 표준화되어 있다.

 

💡 CAN 통신 방식: 차량 내 모든 ECU가 두 개의 통신선(CAN_H, CAN_L)을 공유하며, 각 ECU는 고유한 ID를 가진 메시지를 주고받는다.

💡 CAN 프로토콜 특징: 별도의 호스트 컴퓨터 없이 마이크로컨트롤러와 장치들이 직접 통신할 수 있도록 설계된 메시지 기반 멀티플렉스 프로토콜이다.

💡 차세대 자동차 통신 변화: 테슬라와 같은 신생 전기차 제조업체들은 OTA(Over-The-Air) 업데이트 및 기능 확장을 위해 CAN Bus뿐만 아니라 이더넷(Ethernet) 등의 통신 프로토콜도 함께 활용하고 있다.


 

 

2. CAN 통신의 주요 특징

  • 분산 제어 시스템: 중앙 컨트롤러 없이 각 ECU가 독립적으로 통신 가능
  • 실시간 데이터 전송: 우선순위 기반으로 빠른 데이터 교환 보장
  • 멀티 마스터 방식: 모든 노드가 동등한 권한을 가짐
  • 브로드캐스트 방식: 하나의 메시지를 여러 노드가 동시에 수신 가능
  • 데이터 프레임 크기: 최대 8바이트까지 전송 가능
  • 최대 통신 속도: 1Mbps(고속 CAN 기준)
  • Twisted Pair 케이블 사용: CAN_HCAN_L 두 선을 꼬아 노이즈 저항성 확보

3. CAN의 물리적 특성

  1. Wired-AND 방식 동작
    • 두 개의 신호선(CAN_H, CAN_L) 사용
    • Dominant(0): CAN_H = 3.5V, CAN_L = 1.5V (전압차 2V)
    • Recessive(1): CAN_H = CAN_L = 2.5V (전압차 0V)
  2. 충돌 발생 시 동작 원리
    • 하나의 노드라도 Dominant(0)를 보내면 버스는 Dominant 상태 유지
    • 모든 노드가 Recessive(1)를 보내야만 버스가 Recessive 상태가 됨

4. 메시지 프레임 구조

CAN 프레임은 여러 개의 비트 필드로 구성된다.

 

필드 설명
SOF (Start of Frame) 프레임의 시작
Arbitration Field 메시지 ID 및 우선순위 정보 포함
Control Field 데이터 길이 등 제어 정보 포함
Data Field 실제 전송할 데이터 (최대 8바이트)
CRC Field 오류 검출을 위한 체크섬 포함
ACK Field 메시지 수신 확인
EOF (End of Frame) 프레임 종료

 

💡 CAN ID의 역할

  1. 데이터 프레임의 우선순위 결정
  2. 데이터 필드에 포함된 정보의 메타데이터 제공

💡 동시 전송 시 우선순위 결정 방법

  • 두 개의 데이터 프레임이 동시에 전송될 경우 CAN ID 값이 낮은 프레임이 우선권을 가짐
  • 이는 CAN의 전기적 특성(Wired-AND)으로 인해 자동으로 보장됨

5. 에러 제어 및 복구 메커니즘 

CAN 프로토콜은 충돌을 방지하고 네트워크 안정성을 유지하기 위해 에러 카운터 개념을 도입하였다.

에러 상태 변화

  1. Error Active State
    • 송신 충돌 발생 시 TEC (Transmit Error Counter) +8 증가
    • 수신 충돌 발생 시 REC (Receive Error Counter) +1 증가
    • 충돌 시 Active Error Frame 전송 (Dominant & Recessive bit 조합)
  2. Error Passive State
    • TEC 또는 REC 값이 128 이상이면 Passive Error Frame 전송 (Recessive bit만 포함)
  3. Bus-Off State
    • TEC 또는 REC 값이 255 초과하면 해당 노드는 CAN Bus에서 완전히 차단

💡 CAN ID 충돌은 에러 카운터 증가에 영향을 주지 않음 (해당 기능은 정상 동작의 일부)


6. CAN 통신의 취약점

CAN 통신의 주요 보안 문제는 노드(ECU)가 이미 공격자에게 장악되었을 경우 발생한다.

 

1. 데이터 프레임 위변조

  • CAN Bus에서는 송신자 인증이 없기 때문에 공격자가 ECU를 조작하여 임의의 메시지를 전송 가능
  • 조향, 브레이크, 가속 등의 중요한 ECU 메시지를 조작하면 자동차 제어권을 탈취할 수 있음
  • 예시: 악성 장치가 CAN 네트워크에 연결되어 브레이크 ECU로 "브레이크 해제" 명령을 지속적으로 전송하면, 운전자가 제동을 시도해도 반응하지 않음

2. Bus-Off 공격

  • CAN 표준의 설계 결함을 이용한 공격 방식
  • 특정 ECU를 반복적으로 충돌시키면서 TEC 값을 증가시켜 네트워크에서 강제로 제거
  • 메시지 충돌 시 동작:
    • 공격자는 Data Field를 Dominant(0)로만 구성하여 전송
    • 피해자의 Recessive(1) 비트와 충돌 시, CAN 버스의 물리적 특성상 Dominant(0)가 우선권을 가짐
    • 피해자는 자신이 보낸 값과 버스 상태가 다름을 감지하여 에러 발생, TEC 증가
  • 예시: 공격자가 특정 ECU에 지속적으로 충돌 프레임을 보내 TEC 값을 255 이상으로 증가시키면, 해당 ECU는 Bus-Off 상태가 되어 더 이상 네트워크에 참여할 수 없음

3. 공격 탐지 어려움

  • CAN 프로토콜은 송신자 인증 및 암호화 기능이 없기 때문에 공격자가 쉽게 프레임을 위조 가능
  • 정당한 ECU가 보낸 것처럼 위장된 메시지를 탐지하기 어려움
  • 예시: 해커가 OBD-II 포트를 통해 자동차 내부 네트워크에 접속하여 가짜 속도 정보를 계기판 ECU에 전송하면, 운전자는 실제 속도와 다른 값을 보게 됨

7. CAN 통신 보안 대책

1. 침입 탐지 시스템 (IDS) 적용

  • 전위차 기반 탐지: 각 ECU의 전위차 특성을 분석하여 비정상적인 신호 감지
  • 전송 주기 기반 탐지: ECU의 신호 주기 패턴을 분석하여 이상 탐지

⚠  IDS의 한계점

  • 공격 탐지는 가능하지만 실제 방어는 어려움
  • 탐지 과정에서 오탐(오류 탐지) 가능성 존재

2. ECU 인증 적용 

  • ECU별 고유 키(Key) 할당HMAC (Hash-based Message Authentication Code) 적용
  • 데이터 프레임에 인증 정보를 포함하여 위변조 방지

💡 CAN 통신의 인증 문제 해결 과제 (2025년 1월 기준, 완벽한 해결책은 없음)

  1. Key 분배 및 업데이트 방법
  2. HMAC을 효과적으로 전송하는 방식
  3. 기존 차량 ECU의 펌웨어 패치 방법
  4. Hash 연산에 따른 성능 저하 문제 해결
  5. Replay Attack 방어 가능 여부
  6. CAN 표준 및 상위 프로토콜과의 호환성 보장

결론

현재 대부분의 차량이 CAN 통신을 기반으로 제어되지만, 보안 취약점이 존재하며

이를 보완하기 위한 다양한 방법이 연구되고 있다. IDS 및 인증 기법이 도입되고 있지만,

아직 완벽한 해결책이 나오지 않은 상태이다.

향후 자동차 네트워크 보안 기술의 발전과 함께 CAN 프로토콜의 보안성이 강화될 것을 기대한다.

 

Contents

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.