차량 보안 연구를 위한 저비용 CAN 통신 장비
들어가며
차량보안 공부를 하고 있지만 생각만큼 쉽지 않다. 여러 좋은 장비들과 프로그램(tools)이 있지만 이 또한 완벽하지 않다. 그리고 충돌이 나는 부분도 있다. 그래서 직접 추출 혹은 분석을 하면 좋을거 같아서. 어떻게 해야 그렇게 할 수 있을지 고민을 하다. 여러 보드를 공부해서 만들어 보려고 한다. 아직 공부 단계라서 지금까지의 상황만 공유해 보려고 한다.
차량 보안 연구에서 CAN(Controller Area Network) 버스는 핵심적인 통신 프로토콜로, 차량의 전자 제어 장치(ECU) 간 실시간 데이터 교환을 가능하게 한다. 이를 통해 차량 시스템을 분석하거나 잠재적으로 해킹할 수 있는 방법을 탐구할 수 있다. 그러나 전문 장비는 비용이 높아, 아두이노, 라즈베리파이와 같은 저렴한 보드와 CAN 인터페이스를 사용하는 것이 대안으로 떠오른다. 본 보고서는 사용자가 제공한 옵션(아두이노, 라즈베리파이5, 2-ch CAN hat, PiCAN2, 아두이노 MCP2515 CAN 모듈, CAN-BUS 쉴드)을 기반으로 비용, 기능, 사용 편의성을 비교하고, 차량 보안 연구에 적합한 선택을 제안한다.
CAN 버스란?
CAN 버스는 차량 내 ECU(엔진 제어 장치, 브레이크 시스템 등)가 데이터를 주고받기 위해 사용하는 직렬 통신 프로토콜이다. 모든 노드에 메시지가 브로드캐스트되며, 각 노드는 메시지 ID를 통해 필요한 데이터를 수신한다. 차량 보안 연구에서는 CAN 메시지를 읽고, 분석하며, 필요 시 조작하여 시스템 취약점을 탐지하거나 공격 시나리오를 시뮬레이션을 한다.
보드
보드명 | 역할 및 기능 | 관련 기술 및 특징 |
---|---|---|
라즈베리파이 | - 망분리 환경에서 단방향 차량번호 인식 시스템(OCRS) 구현에 사용. - OpenCV 기반 영상처리 및 차량번호판 추출 모듈 운영. - PiCAN2 보드와 결합해 CAN 통신 제어. |
- Raspbian OS 기반 - Python/OpenCV 2.4 활용 - 물리적 망분리 구현 가능 |
아두이노 | - CAN-BUS 쉴드와 연동해 차량 데이터 수집/제어 - OBD-II 프로토콜 해석을 통한 실시간 차량 진단 - 보안 모니터링 시스템 구축(도난 방지, 잠금 시스템) |
- MCP2515 CAN 컨트롤러 호환 - 8MHz ~ 16MHz 클럭 지원 - SPI 인터페이스 활용 |
2-ch CAN HAT | - 듀얼 CAN 채널 독립 운영 - SocketCAN 드라이버 지원으로 라즈베리파이 4와 호환 - 120Ω 종단저항 내장으로 버스 신호 안정화 |
- MCP2515 컨트롤러 + MCP2551 트랜시버 조합 - 1Mb/s 통신속도 지원 - GPIO 25/24 핀 인터럽트 처리 |
PiCAN2 | - 차량 전장 시스템과의 고속 데이터 교환 - 5V 3A SMPS 내장으로 외부 전원 공급 가능 - 역방향 전류 보호 회로 장착 |
- 7~24V 광범위 입력 전압 지원 - CAN v2.0B 표준 준수 - C/Python 프로그래밍 가능 |
아두이노 MCP2515 CAN 모듈 | - 차량 ECU와의 양방향 통신 구현 - OBD-II PID 데이터 추출(엔진 RPM, 속도 등) - 자동차 대시보드 정보 표시 시스템 개발 |
- SPI 인터페이스(10MHz) - 표준/확장 데이터 프레임 지원 - 0x000 ~ 0x7FF 메시지 ID 범위 |
CAN-BUS 쉴드 | - 다중 노드 CAN 네트워크 구성 - 차량 진단 시스템 개발용 표준 플랫폼 제공 - 실시간 차량 상태 모니터링(과열, 배터리 전압 등) |
- Arduino Uno/Leonardo/Mega 호환 - MCP2551 트랜시버 탑재 - 1kb/s ~ 1Mb/s 속도 조절 가능 |
보드 특징
1. 아두이노 (Arduino)
무엇인가?: 아두이노는 초보자 친화적인 오픈소스 마이크로컨트롤러 플랫폼이다. 다양한 모델(예: Arduino Uno, Seeeduino V4.2)이 있으며, 센서와 모듈을 연결해 간단한 프로그래밍으로 동작을 제어할 수 있다.
주요 하드웨어: ATmega328P MCU 기반, 디지털/아날로그 I/O 핀, SPI/I2C/UART 통신 지원.
왜 사용하는가?
- 저렴함: 약 25,000원으로 구매 가능하며, 초기 학습 비용이 낮다.
- 확장성: 다양한 쉴드(확장 보드)와 모듈을 연결해 CAN 통신 등 특정 작업 수행 가능.
- 커뮤니티 지원: 튜토리얼과 라이브러리가 풍부해 빠르게 시작 가능.
차량 보안 연구에서 활용
CAN 메시지를 보내고 받기 위해 MCP2515 모듈이나 CAN-BUS 쉴드와 결합 사용.
예: 엔진 RPM, 속도 등 CAN 데이터를 읽어 시리얼 모니터에 출력하거나 SD 카드에 저장.
제한점: 컴퓨팅 파워가 낮아 복잡한 데이터 분석은 어렵다.
2. 라즈베리파이5 (Raspberry Pi 5)
무엇인가?: 라즈베리파이5는 리눅스 기반의 싱글 보드 컴퓨터(SBC)로, 강력한 프로세서(쿼드코어 Cortex-A76)와 높은 메모리(4GB/8GB 옵션)를 제공한다.
주요 하드웨어: GPIO 핀, USB 포트, HDMI, 네트워크 지원(이더넷/Wi-Fi).
왜 사용하는가?
- 고성능: 아두이노보다 강력한 컴퓨팅 능력으로 복잡한 데이터 처리와 네트워크 분석 가능.
- 다기능: CAN 통신 외에도 네트워크 스니핑, 데이터 시각화 등 수행.
- 유연성: Python, C 등 다양한 언어로 프로그래밍 가능.
차량 보안 연구에서 활용
PiCAN2 또는 2-ch CAN hat과 결합해 CAN 메시지를 캡처하고 분석.
예: 차량 CAN 네트워크에서 다중 채널 데이터를 동시에 처리하거나, 캡처한 데이터를 클라우드로 전송해 분석.
장점: 리눅스 환경에서 can-utils(candump, cansend) 같은 도구 사용 가능.
3. 2-ch CAN Hat (라즈베리파이용 듀얼 CAN 인터페이스)
무엇인가?: 2-ch CAN hat은 라즈베리파이에 장착되는 확장 보드로, 두 개의 독립적인 CAN 채널을 지원한다. MCP2515 또는 유사 칩 기반으로 설계된다.
주요 기능: CAN-H, CAN-L 신호를 통해 CAN 네트워크에 연결.
왜 사용하는가?
- 다중 채널 지원: 현대 차량은 여러 CAN 네트워크(고속 CAN, 저속 CAN 등)를 사용하므로, 이를 동시에 모니터링 가능. (고속 저속 CAN 설명)
- 확장성: 라즈베리파이의 GPIO를 활용해 추가 센서나 모듈 연결 가능.
차량 보안 연구에서 활용
두 개의 CAN 네트워크(예: 엔진 CAN과 인포테인먼트 CAN)를 동시에 분석.
예: 한 채널로 데이터를 읽고, 다른 채널로 조작된 메시지를 주입해 반응 테스트.
장점: 다중 네트워크 환경에서 유리.
4. PiCAN2 (라즈베리파이용 CAN 인터페이스)
무엇인가?: PiCAN2는 라즈베리파이용 단일 CAN 채널 인터페이스 보드로, MCP2515와 MCP2551(트랜시버)을 사용한다. DB9 또는 OBD-II 커넥터 지원.
주요 기능: CAN 버스 통신을 라즈베리파이에서 처리 가능.
왜 사용하는가?
- 호환성: 라즈베리파이와 완벽히 통합, 쉬운 설치(리눅스에서 SPI 활성화 후 사용).
- 신뢰성: 차량 OBD-II 포트와 직접 연결 가능.
차량 보안 연구에서 활용
CAN 메시지를 캡처해 ECU 간 통신 패턴 분석.
예: 차량 속도, 쓰로틀 위치 등의 데이터를 실시간으로 읽고 기록.
장점: 설정이 간단하고, 튜토리얼 풍부(Adafruit PiCAN2).
제한점: 단일 CAN 채널만 지원.
5. 아두이노 MCP2515 CAN 통신 모듈
무엇인가?: MCP2515는 CAN 컨트롤러 칩으로, SPI 인터페이스를 통해 아두이노와 통신한다. 별도의 모듈로 구매 시 MCP2551 트랜시버가 포함되어 CAN 신호를 처리한다.
주요 하드웨어: CAN-H, CAN-L 핀 제공, 5V 동작.
왜 사용하는가?
- 가성비: 약 15,000원으로 저렴, 기본 CAN 통신에 충분.
- 간단함: 아두이노와 결합 시 최소한의 배선으로 동작.
차량 보안 연구에서 활용
CAN 버스에서 데이터를 읽거나 간단한 메시지 주입.
예: OBD-II 포트에 연결해 ECU 데이터(엔진 RPM 등)를 수집.
장점: 초저가 옵션으로 입문에 적합.
단점: 추가 기능(GPS, LCD 등) 없음, 직접 배선 필요.
6. CAN-BUS 쉴드 (SeeedStudio CAN-BUS Shield V2)
무엇인가? CAN-BUS 쉴드는 아두이노에 장착되는 확장 보드로, MCP2515와 MCP2551을 기반으로 CAN 통신을 지원한다. GPS 커넥터, LCD 커넥터, 마이크로SD 슬롯, 조이스틱 등 추가 기능 포함. 주요 기능: DB9 커넥터로 OBD-II 연결, 데이터 로깅 지원.
왜 사용하는가?
- 다기능성: CAN 통신 외에 GPS 위치 데이터, LCD 출력, SD 카드 저장 가능.
- 사용 편의성: 초보자도 쉽게 설정 가능, 튜토리얼 풍부(Naver Blog).
차량 보안 연구에서 활용
CAN 데이터를 캡처하고, GPS로 위치를 기록하며, LCD로 실시간 출력.
예: 차량 이동 중 엔진 데이터와 위치를 동시에 로깅해 분석.
장점: 데이터 수집 및 시각화에 최적화.
단점: 라즈베리파이보다 처리 속도 낮음.
댓글남기기