Hoin's security

[논문 분석] CAN 버스의 물리적 보안 기능이 내장된 차량용 ECU 본문

스터디/논문 분석

[논문 분석] CAN 버스의 물리적 보안 기능이 내장된 차량용 ECU

Hoin.s 2024. 3. 27. 10:34

논문

최진혁. "CAN 버스의 물리적 보안 기능이 내장된 차량용 ECU." 국내석사학위논문 숭실대학교 대학원, 2021. 서울

https://www.riss.kr/search/detail/DetailView.do?p_mat_type=be54d9b8bc7cdb09&control_no=289c1258c06cdf12ffe0bdc3ef48d419

 

https://www.riss.kr/search/detail/DetailView.do?control_no=289c1258c06cdf12ffe0bdc3ef48d419&p_mat_type=be54d9b8bc7cdb09

 

www.riss.kr

논문 선정 이유

자동차 해킹은 언제나 흥미롭다고 느낀다. 2024 GCC때 자동차의 문잠금 해제와 문 여닫힘, 헤드라이트까지 컨트롤하는 해킹 실습을 해본적이 있는데 완벽히 이해하지 못하고 부분적으로 이해했기 때문에 어떤 원리로 작동하고 어떤 취약점이 있는지 알아보고자 한다.

논문 분석 내용

What is CAN?

: Controller-Area-Network - twisted pair 케이블 상에 멀티드롭 된 다중 노드 간에 반이중/차동전송방식을 사용하는 차량용 내 부 통신 기술 중 하나.

차량 내부에는 다양한 충돌감지 센서와 충돌감지를 판단하는 제어장치 및 ABS 브레이크, 에어백을 터뜨 리는 액츄에이터 등으로 구성되는 안전에 민감한 장치들을 연결하는 기 능을 제공한다.

 

장점

- 멀티 마스터 통신 방식 : CAN 버스는 멀티 마스터 방식으로 통신 버 스를 여러 노드들이 공유하며 언제든지 버스를 사용할 수 있다.

- 간단한 구조 : CAN_H, CAN_L 두 개의 신호로 통신하므로 2개의 선 만 필요하고, 모듈이 많이 추가되더라도 추가되는 선의 양은 적다.

- 잡음에 매우 강함 : CAN Bus는 Twisted Pair 2선으로 되어있기 때문 에 전기적 잡음에 강하다.

- ID 값 우선순위 : ID의 우선순위는 값이 낮을수록 높은데, CAN bus에서는 필터링을 통해 설정된 ID 값을 수신하여 우선순위를 결정한다. 메시지 내용과 우선순위는 주소가 아닌 ID 값으로 결정되어 있기 때문 에 시스템 제어 속도와 안전성이 향상될 수 있다. 또한 Bus를 이용하므 로 연결선을 줄일 수 있는데 이는 자동차의 무게와도 직결되므로 매우 중요하다.

- 원거리 및 고속 통신 : CAN 통신은 최대 1,000m까지 원거리 통신이 가능하다. 또한 최대 1M bps가 가능한 고속 통신을 제공하고 일반통신 속도가 500k~1M bps로 CAN 통신이 가능하다.

- plug & play : plug & play 기능이 있으면 CAN controller를 버스에 간편하게 연결할 수 있고 끊을 수도 있다. 따라서 장치를 추가하고 제거 하기 매우 쉽다.

 

그러나 통신에 참여하고 있는 노드들이 고유의 주소를 가지고 있지 않다는 취약점이 존재한다.

 + 이 논문에서는 물리적 보안기능과 검증을한 뒤 연구를 진행하였다.

 

CAN 시스템 설명

CAN 시스템 구성

- 프로세서 : 센서 및 액츄에이터 등을 연결하는 프로세서는 센서로부터 의 이벤트를 하부의 CAN을 통하여 전송하거나 CAN으로부터 수신된 데이터를 처리하여 액츄에이터를 구동한다.

- CAN Controller : 수신 시 CAN Transceiver 로부터의 비트열을 내부 의 FIFO에 저장한 후 프로세서로 전달한다. 송신 시에는 프로세서로부 터의 비트열을 FIFO에 저장한 후 채널이 idle할 때 Transceiver를 경유 하여 송신한다. 일종의 데이터 링크 계층(MAC) 기능을 수행한다.

- CAN Transceiver : 버스로부터 수신되는 2.5V 기준의 차동 신호 열 로부터 TTL 레벨의 비트열로 복원하여 CAN Controller에 전달하거나 그 반대 기능을 수행하는 물리 계층 기능을 수행한다

 

CAN 물리 계층

CAN 신호방식

물리 계층에서 CAN은 twisted pair와 같은 여러 종류의 매체를 사용 하여 통신할 수 있음.

twisted pair은 각각의 전선에서 각자 다른 전압들 을 사용하므로 한 전선에서의 전압은 다른 전선에서 전송되지만 반전된 다. 이는 한 개의 신호를 반전하고 두 개의 신호를 합하여 수신기에서 복원된다. - 안정적인 데이터 송수신을 보장.

(아마도 이게 내가 실습할 때 사용했던 와이어 같다.)

 

CAN Frame

Date Frame

- SOF : 기본값 ‘0’인 비트이다. Idle 상태에서 천이되어 프레임의 시작 을 알린다.

- Message ID(MsgId) : 기본 형식(standard)의 경우 11비트 또는 확장 형(extended)은 29비트의 메시지 식별자이다. MSB부터 송신되고 이 메시지 ID는 최대 2032개의 메시지 식별자 기능뿐만 아니라 메시지별 우선순위를 제공한다.

- RTR(Remote Transmission Request) : 일반 프레임 및 Remote Request 프레임 구분용 비트이다. * ‘0’ : 일반 데이터 프레임이다. * ‘1’ : Remote Transmission Request 프레임을 표시한다. 이 경우 데이터 영역은 없다.

- 중재 필드(Arbitration Field) : {11비트의 식별자+원격전송요구(RTR) 비트} 영역을 말한다.

- 제어 영역 : 6비트로 구성되며 데이터 영역의 길이정보를 표시한다. {0..8}바이트의 데이터 영역의 길이정보는 4비트의 데이터 길이 코드 (DLC : Data Length Code)에 표시된다.

- 데이터 영역(0~8바이트) : 최대 8바이트의 데이터를 쓸 수 있다. 이 길 이는 제어영역의 DLC 값으로 결정된다. Remote 프레임의 경우에는 데이터 영역이 없다.

- CRC(Cyclic Redundancy Check) : SOF에서부터 데이터 영역까지의 오류검사용 코드이다. 이것은 15비트인 CRC와 CRC 영역의 끝을 표시 하는 1비트의 CRC딜리미터(‘1’)로 구성되어 총 16비트로 구성된다.

- ACK 영역 : 2비트로 구성된다. 첫 번째 비트는 송신 측에 의해 ‘1’로 설정되어 전송된다. 이 값은 해당 메시지를 성공적으로 수신한 노드가 ACK를 응답 시 이 영역을 우성 비트 값인 ‘0’으로 덧씌운다. 따라서 송신측은 자신이 전송한 ‘1’값이 버스에서 ‘0’으로 감지되면 ACK로 인 지한다. 두 번째 비트는 ACK Delimiter로써 ‘1’의 값을 갖는다.

- EOF(End Of Frame) : 7비트로 구성되며 모두 ‘1’의 값을 가진다.

- Interframe space(IFS, 3비트) : 프레임 간 구분을 위한 비트열이다. 모 든 데이터 프레임과 리모트 프레임은 3비트의 ‘1’비트열로 구성된 IFS 비트열에 의해 각 프레임이 분리된다. 일종의 STOP 비트열이다. 이후 CAN 버스의 Idle 상태도 ‘1’값을 가진 임의의 길이이다.

데이터 프레임 또는 Remote 프레임을 수신했을 때 송신 측에게 다음 프레임의 송신을 잠시 지연하도록 통보할 때 사용됨.

이 6개의 dominant 비트로 구성된 오버로드 플래 그 영역과 8개의 recessive 비트로 구성된 오버로드 영역 구분자로 구성 된다.

최대 2번 연속 전송할 수 있고 데이터 프레임 또는 Remote 프레임의 마지막 영역인 IFS 기간 내에 dominant 비트(0) 가 감지된다면 다음 프레임의 송신이 성급하게 발생한 것이므로 즉시 오 버로드 프레임의 송신을 개시한다.

 

CAN 데이터 링크 계층

: 프레임의 구성, 전송, 필터링을 사용한 수 신 기능 등을 수행.

비트 스터핑을 적용한 비트동기 및 버스 사용권 확보, 수신 프레임에 대한 ACK기능, 재전송 및 오류감지 등의 오류제어 기능을 수행.

 

비트 스터핑

: CAN 버스의 모든 노드는 동일한 클럭 주파수를 사용. But CAN 버 스에는 비트동기를 제공하는 타이밍 소스와 클럭 전용 선로가 없음. 

-> 송신노드를 제외한 나머지 노드는 송신노드로부터 수신되는 메시지 비트열로부터 스스로 송신 측 노드와의 비트동기를 맞추어야 함.

CAN 신호는 NRZ이므로 수신 측에서 송신 측과의 비트동기를 맞추는 것이 어려운 경우 발생.

-> 1 또는 0이 연속적으로 - 10 - 5비트가 송신될 경우 강제로 선행 비트 값에 대하여 반전된 비트를 추가 로 삽입하고 수신 측에서는 이 비트를 제거하는 비트 스터핑 절차를 사용.

SOF영역부터 CRC영역까지 수행.

CRC 딜리미터에서 EOF까지의 구간에서는 고정된 형식이므로 수행X.

비트 스터핑에 의한 실제 전송완료 시간은 원래의 메시지 전송 시간보다 길어짐.

 

Bus

: CPU에서 메모리나 여러 기기에 데이터를 송출하거나 메모리나 입출력 기기에서 CPU에 데이터를 읽어 올 때 필요한 전송로.

 

RISC-V

: 축소 명령어 집합 컴퓨터(RISC) 기반의 개방형 명령어 집합(ISA).

일반 ISA와는 다르게 RISC-V ISA는 어떠한 목적으로든 자유롭게 사용할 수 있고, 칩과 소프트웨어를 설계 및 제조 판매 할 수 있음. 

특징 

1. 오픈소스(BSD 라이센스)이다 - 오픈소스에는 다양한 종류의 라이 센스(MIT, BSD, GPL, Apache, CPL등)가 존재하지만 크게 BSD계 열과 GPL계열로 크게 2가지로 분류할 수 있다.

2. ARM에 비해서 칩의 면적이 작아지고 소비전력이 감소된다.

3. 명령어셋의 OPCode가 lowbit에 위치 - ARM의 명령어셋과의 차이 점은 RISC-V는 OP Code가 low bit에 있다. 이는 16bit, 32bit, 64bit, 128bit 등과 같이 bit 수가 증가해도 명령어 셋의 변화가 거의 없고 유연하기 때문에 명령어 셋의 구조 변화가 거의 없다.

 

AMBA (Advanced Microcontroller Bus Architecture)

: ARM사가 개발한 시스템 LSI 용 온 칩(On-Chip)버스 표준이 고 On-Chip 버스를 이용하여 데이터를 서로 주고받는다.

ARM은 On-Chip 버스의 사양을 정하고 이를 무상으로 공개하여 IP 코 어 인터페이스의 표준화를 촉진하고 있다.

 

연구 공격 시나리오

: CAN 버스 공격 시나리오

- 스니핑 공격 : 점령당한 노드를 통해 버스 상에서 통신 중인 데이터 프레임을 보고 패턴을 파악하는 공격

- 일반 공격 : 스니핑 공격으로 데이터 프레임의 패턴을 파악한 뒤 점령 한 노드를 통해 악의적인 데이터를 송신하는 공격

- 스푸핑 공격 : 점령당한 노드를 통해서 또 다른 노드를 공격하고 도용 하여 악의적인 데이터 프레임을 송신하는 공격

 

CAN 버스 상에 있는 노드들은 고유 Address가 존재하지 않기 때문에 해킹을 당하여도 어느 노드가 해킹을 당했는지 알기 어려움.

-> CAN 버스에 침입 감지 시스템인 IDS (Intrusion Detection System)도 연결하여 IDS에서 데이터 프레임을 분석하여 해킹당한 노드의 Address ID를 알 수 있다고 설정.

    + IDS: 데이터 프레임을 분석하고 노드의 해킹 여부 판단.

노드 주소 설정

Process Voltage Temperature variations에 의해 오실레이터가 완전 일치하게 동작하지 않고 미세한 오차가 존재

-> 각 노드마다 클럭 클럭 신호의 주기를 세는게 완료 되는 시점이 다름.

-> 고유 Address를 임의로 설정해주고 Data Field의 8byte 중 첫 번째 byte에서 상위 4비트를 고유 Address 값으로 채워서 사용. 주소 설정 후 IDS가 Ack 신호를 보내는 데 Ack 신호를 받으면 고유 Address로 설정.

Address 1 설정 완료 후 버스가 IDLE 상태가 되면 클락 카운팅을 다시 시작하여 클락 카운트가 충분히 큰 값에 도달하면 그 다음 노드에 이전 노드의 고유 Address 값에 1을 더하여 값을 설정.

-> 두 번째 노드에는 Address가 2로 설정이 되고 데이터 프레임을 송신. IDS가 송신한 Ack 신호를 수신하면 고유 Address로 설정.

모든 노드의 주소가 설정되면 노드들은 CAN 버스가 다시 IDLE 상태가 되면 이때부터 통신을 시작할 수 있게 된다.

 

시나리오 대처법

- 공격 시나리오 1 (스니핑 공격) : 스니핑 공격은 별다른 조치를 취하 지 않는다. 그 이유는 당장 버스에 별다른 영향을 끼치지 않게 때문이다.

- 공격 시나리오 2 (일반 공격) : 공격당한 노드가 해킹당한 데이터 프 레임을 송신하면 IDS에서 데이터 프레임을 분석하고 해킹 노드라는 것 을 감지한 뒤 에러 프레임을 송신한다. 공격당한 노드는 송신 중에 에러 프레임을 수신했으므로 TEC가 증가한다. 그 후에도 악의적인 데이터 프 레임을 지속해서 송신을 하면 TEC가 계속해서 증가하므로 버스 오프가 된다.

- 공격 시나리오 3 (스푸핑 공격) : 도용 공격은 노드의 고유 Address가 존재하지 않을 때 발생하는 공격이므로 Data Field의 8byte 중 첫 번째 byte의 상위 4비트를 고유의 Address로 채워주기 때문에 발생할 수 없다.

 

결론

스마트 카는 해 킹당했을 때 안전 문제로 이어질 수 있기 때문에 심각한 문제를 일으킬 수 있다. 또한 CAN 버스에 여러 개의 노드가 연결됨에 따라 어느 한 노 드가 해킹을 당해 악의적인 데이터 프레임을 송신하여 다른 노드를 오작 동하게 만들 수 있다. CAN 버스에 연결된 노드들은 고유 Address가 존재하지 않는다는 보안 취약점이 존재한다. 이 연구에서는 보안 취약점을 보완하고자 통신에 참여하는 노드들에게 Address를 설정해주는 방식을 기존 CAN controller에 추가로 설계해 주 었다. 추가 설계 해준 CAN controller를 RISC-V에 연결시켜 RISC-V로 제어하는 시스템을 통해 해킹당한 노드를 탐지하고 대처하여 기존의 CAN 통신 보안 취약점을 보완하였다. 

배운점 및 느낀점

어려운 용어가 정말 많았고 많은 만큼 정의도 잘 되어있었다. (CAN이나 Bus, RICS-V, AMBA 등등)

내가 실습 때 사용했던 와이어가 twisted pair라는걸 알게 되었다. 

노드는 고유 주소가 없어서 해킹당하면 어느 부분이 공격되었는지를 알 수 없다는 점이 놀라웠다. 그래서 이런걸 탐지할 수 있게끔 이뤄진 연구가 흥미로웠다. 

노드를 해킹하여 다른 노드를 작동시킬 수 있다는데 헤드라이트와 스마트키의 경우가 이와 같다고 생각했다. -> 이것에 대한 실습을 해보고 싶어졌다. 자동차 보안은 하드웨어적 지식이 매우 많이 필요하다고 느꼈다.