후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 본 명세서에 기재되어 있는 특정 형상, 구조 및 특성은 본 발명의 정신과 범위를 벗어나지 않으면서 일 실시예로부터 다른 실시예로 변경되어 구현될 수 있다. 또한, 각각의 실시예 내의 개별 구성요소의 위치 또는 배치도 본 발명의 정신과 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 행하여지는 것이 아니며, 본 발명의 범위는 특허청구범위의 청구항들이 청구하는 범위 및 그와 균등한 모든 범위를 포괄하는 것으로 받아들여져야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 구성요소를 나타낸다.
먼저, 도 1 은 본 발명의 일 실시예에 따른 CAN 통신(CAN network)의 구성을 블록도로 나타낸 것으로서, 본 발명을 실시하기 위한 전체 시스템 구성의 도 1을 참조하여 설명한다.
도 1에서 도시한 바와 같이, 본 발명을 실시하기 위한 전체 시스템은, CAN 네 트워크의 구성으로서 데이터 송수신을 위한 CAN 버스(50), CAN 버스(50)에 연결된 다수의 ECU(10)로 구성된다. 이때, 본 발명의 CAN 통신은 단순히 일반적인 CAN 통신에서 더 나아가, 확장형 CAN(Extended CAN) 및 CAN-FD(CAN with Flexible Data-Rate)에까지 확장 적용될 수 있다.
CAN 버스(50)는 데이터 전송을 위한 통신 라인으로서, 바람직하게는, 연선(Twisted pair wire)으로 구성된다. 이때, 연선을 구성하는 2개의 선은 서로 다른 신호(CAN_H, CAN_L)에 의해 구동된다. CAN 버스(50)상의 전송 속도는 버스의 길이에 따라 달라질 수 있다.
또한, CAN 버스(50)는 송신 라인(Tx)과 수신 라인(Rx)으로 구분되고, 각 ECU(10)는 송신 라인(Tx)으로 메시지를 전송하고 수신 라인(Rx)으로부터 메시지를 수신한다. 특히, 모든 ECU(10)는 CAN 버스(50)의 공통 송수신 라인(Tx, Rx)에 연결되어, 메시지를 송수신한다.
다수의 ECU(ECU, Electronic Control Unit)(10) 또는 제1 내지 제N ECU(10)는 CAN 버스(50)에 소정의 CAN 커넥터를 통해 연결될 수 있으며, 이론적으로 하나의 CAN 통신에 연결될 수 있는 최대 ECU의 개수는 2032이다.
ECU(ECU)(10)는 스마트폰, 인터넷, 교통정보시스템 등의 외부 통신망과 연결되어 보안 위험성에 직접적으로 노출된 ECU들과, 외부 통신망과 직접적인 연결이 없어 상대적으로 안전한 ECU들로 구분될 수 있다.
전자의 ECU(10)들은 멀티미디어 캔(CAN)으로서, 텔레매틱스나 네비게이션 등에 관련된 ECU들이다. 이들 ECU들은 스마트폰, 인터넷, 교통정보시스템 등의 외부 통신망과 연결되어, 데이터 통신을 수행한다. 따라서 이들 ECU(10)들은 외부 단말 또는 시스템에서 접근이 가능한 ECU이다.
반면, 후자의 ECU들은 주로 종래 전형적인 ECU로서, 차량 내부 시스템을 제어하기 위한 ECU들이다. 예를 들어, 엔진, 트랜스미션 등 파워트레인에 관련된 ECU들; 제동장치, 조향장치, 에어백 등 샤시에 관련된 ECU들; 클러스터, 도어, 윈도우 등 바디에 관련된 ECU들이다. 통상 이들을 각각 P-CAN, C-CAN, B-CAN 등으로 부르기도 한다.
한편, 각 ECU(10)는 CAN 트랜시버(transceiver)(20), CAN 컨트롤러(30) 및 마이크로컨트롤러(CPU)(40)로 구성된다. CAN 트랜시버(20)는 소정 CAN 커넥터를 통해 CAN 버스(50)와 연결되며, ECU의 물리 계층을 구성한다. CAN 트랜시버(20)는 CAN 버스(50)의 장애를 감지하고 이를 관리하는 기능 및 메시지의 송수신 기능을 제공할 수 있다.
CAN 컨트롤러(controller)(30)는 CAN 프로토콜 메시지를 송수신하고 수신된 메시지에 대한 메시지 필터링 기능을 수행한다. 또한, CAN 컨트롤러(30)는 재전송 제어를 위한 메시지 버퍼 및 마이크로컨트롤러(40)와의 인터페이스 기능을 제공한다.
마이크로컨트롤러(40)는 CPU가 탑재될 수 있으며, 상위 계층 프로토콜을 제공하고 다양한 응용들을 제공할 수 있다.도 2A 및 도 2B 는 본 발명의 일 실시예에 따른 CAN 컨트롤러(30)의 내부 구성을 나타낸 블럭도이다.
도 2A 와 도 2B 의 실시예는 모두 CAN 컨트롤러(30)의 내부 구성을 나타내기 위한 도면으로서, 수신 메시지를 측정하는 구성에 대해서만 차이점이 존재한다. 따라서, 도 2A 및 도 2B 의 설명에서 반복되는 설명은 생략하기로 한다.
도 2A 에서 보는 바와 같이, 본 발명에 따른 CAN 컨트롤러(30)는 전송할 데이터를 임시로 저장하는 전송버퍼부(31), 전송데이터를 필터링하는 전송필터부(32), 필터링 값을 설정하는 필터값 설정부(33), 수신 메시지를 필터링하는 수신 필터부(35), 및, 수신 메시지를 임시로 저장하는 수신버퍼부(36)로 구성된다. 또한, 추가적으로 필터값을 저장하는 보호메모리(38)를 더 포함하여 구성된다.
본 발명의 일 실시예에 따르면, CAN 버스로부터 수신 메시지를 감지하는 경우 마이크로컨트롤러(40)는 Rx(수신) 인터럽트 메시지를 발생할 수 있고, Rx 인터럽트 메시지를 수신한 수신 시간 측정부(41)는 내부 타이머 혹은 클럭 정보에 기반하여 수신 메시지의 수신 시간을 측정하고, 측정된 수신 시간을 수신 필터부(35)로 전달할 수 있다. 비록 도 2A 에서는 설명의 편의를 위해 수신 시간 측정부(41)가 마이크로컨트롤러(40) 외부 구성인 것으로 도시되었지만, 수신 시간 측정부(41)는 마이크로컨트롤러(40)에 포함되는 구성일 수 있다.
전송버퍼부(31)는 버퍼를 구비하여 전송할 데이터를 버퍼에 임시로 저장한다. 특히, 마이크로컨트롤러(40)는 전송할 데이터(또는 전송 데이터)를 전송버퍼부(31)의 버퍼에 저장한다.
도 3 은 본 발명의 일 실시예에 따른 전송 데이터의 구조를 설명하기 위한 것이다.
도 3 에서 보는 바와 같이, 전송데이터는 CAN 헤더(210) 부분과, 데이터 프레임 부분인 CAN 페이로드(220)로 구성된다. CAN 페이로드(220)에는 전송하고자 하는 정보가 기록된다. 예를 들어, 엔진 ECU(ECU)(10)인 경우, 엔진의 현재 상태에 대한 데이터 등이 CAN 페이로드(220) 필드에 기록된다. 상기와 같은 메시지의 규격은 CAN 프로토콜에 의해 정의된 규격을 따른다.
또한, 전송데이터의 CAN 헤더(210) 부분에는 메시지 ID(ID)(211) 필드가 있고, 해당 필드에는 해당 메시지의 ID가 기록된다. 메시지 ID(ID)는 메시지의 식별자로서, 메시지의 종류를 나타낸다. 예를 들어, 엔진의 RPM을 전송하는 메시지는 주기적으로 전송되는데, 이때, RPM 전송 메시지는 동일한 메시지 ID(ID)를 갖는다. 즉, 메시지를 수신하는 ECU(10)는 메시지 ID(ID)를 통해 해당 메시지가 어떤 데이터를 가지고 있는지를 확인한다.
전송버퍼부(31)는 상기와 같이 헤더(210)와 페이로드(220)로 구성된 전송데이터를 순차적으로 버퍼에 저장하고, 마이크로컨트롤러(40)에 의해 수신된 순서로 저장하였다가 수신된 순서대로 CAN 트랜시버(20)를 통해 전송한다.
다음으로, 전송필터부(32)는 전송데이터 내의 메시지 ID(211)를 필터링하여, 필터값에 포함된 메시지 ID를 가지는 전송데이터만 전송하게 한다. 즉, 전송필터부(32)는 전송이 허가된 메시지 ID에 대한 화이트 리스트(white list)를 보유하고, 상기 화이트 리스트 내의 메시지 ID를 가지는 전송데이터만 전송한다.
즉, 전송필터부(32)는 전송데이터의 메시지ID를 화이트 리스트와 대비하여 필터링을 수행한다.
다음으로, 필터값 설정부(33)는 전송필터부(32)의 필터값, 즉, 화이트 리스트를 설정한다. 필터값을 설정하는 모드는 2가지 모드로 구성되며, 하나는 보호기능 모드이고, 다른 하나의 모드는 관리자 모드(또는 테스트 모드)이다.
관리자 모드인 경우, 필터값 설정부(33)는 마이크로컨트롤러(40)에 의한 직접 지시에 의하여, 필터값 또는 화이트 리스트를 설정한다. 즉, 필터값 설정부(33)는 허용되는 메시지ID 리스트(또는 화이트 리스트)를 마이크로컨트롤러(40)로부터 수신받아, 수신받은 메시지 ID들을 전송필터부(32)의 필터값으로 설정한다.
보호기능 모드인 경우, 필터값 설정부(33)는 보호메모리(38)에 저장된 메시지ID 리스트 또는 화이트 리스트를 가져와서 전송필터부(32)의 필터값으로 설정한다. 바람직하게는, CAN 컨트롤러(30)가 전원이 온(On)되어 처음 시작하면(또는 부팅하면), 필터값 설정부(33)는 보호메모리(38)에 저장된 화이트 리스트를 가져와서 필터값으로 설정한다. 또한, 필터값 설정부(33)는 초기에 필터값이 한번 설정되면, 마이크로컨트롤러(40) 등의 명령에 의해 구동 중간에는 필터값을 변경하지 않는다.
따라서 초기 구동이 될 때에만 보호메모리(38)에서 가져와서 필터값이 설정되므로, 중간에 악의적인 공격자에 의해 ECU(10)가 해킹되더라도 필터값이 변경되지 않는다.
또한, 필터값 설정부(33)는 수신 필터부(35)의 필터값, 즉, 화이트 리스트를 설정할 수 있다. 앞서 전송필터부(32)의 화이트 리스트를 제1 화이트 리스트라 부르기로 하고, 수신 필터부(35)의 화이트 리스트를 제2 화이트 리스트라 부르기로 한다. 제2 화이트 리스트는 제1 화이트 리스트와 마찬가지로, 수신이 허용된 메시지 ID를 리스트로 가지고 있다.
필터값 설정부(33)는 제2 화이트 리스트를 보호메모리(38) 또는 마이크로컨트롤러(40)로부터 가져와서, 수신 필터부(35)의 필터링 값으로 설정한다. 또한, 보호기능 모드인 경우, 수신 필터부(35)의 필터값은 초기에 한번 설정되고, 구동 중간에는 변경되지 않는다.
또한, 필터값 설정부(33)는 수신 메시지 ID 각각에 대한 기준 주기를 수신 필터부(35)의 수신 시간 테이블의 주기로 설정한다. 이때 설정되는 기준 주기는 각 메시지 ID에 해당하는 메시지가 전송되는 주기로서, 적합한 권한을 가진 전송자에 의해 전송될 때 수신 메시지들은 기준 주기 간격으로 수신될 수 있다. 바람직하게는, 기준 주기는 초기에 한번 설정되고, 구동 중간에는 변경되지 않으며, 필터값 설정부(33)는 보호메모리(38)로부터 메시지 ID 각각에 대응하는 기준 주기를 획득할 수 있다.
다음으로, 보호메모리(38)는 ROM(Read Only Memory), 플래시메모리 등 비휘발성 메모리로서, 필터값 또는 메시지ID 리스트를 저장한다.
보호메모리(38)는 필터값 설정부(33)에 대하여 읽기 기능만 허용된 메모리이다. 즉, 필터값 설정부(33) 또는 마이크로컨트롤러(40)는 보호메모리(38)를 직접 접근하여 데이터를 변경하거나 삭제할 수 없다.
바람직하게는, 보호메모리(38)는 통상의 비휘발성 메모리로 구성되며, 그 일부의 메모리 공간을 보호영역으로 구분하여 지정될 수 있다. 이 경우, 보호 영역의 메모리에 저장된 데이터만 읽기 기능이 허용되고, 보호 영역 외의 다른 영역에는 데이터를 변경하거나 삭제가 가능하다.
보호메모리 또는, 보호된 메모리 영역(보호영역)은 일반적인 비휘발성 메모리(e.g. 플래시 메모리)처럼 메모리 주소값으로 접근이 불가능하며, 보호된 메모리 영역에 대한 읽기/쓰기 접근을 하려면 특수한 접근방법과 패스워드가 필요하다.
보호된 메모리 또는 보호영역에는 다음과 같은 정보들이 저장된다. 즉, 유효한 송신용 메시지 ID들, 즉, 제1 화이트 리스트이다. 즉, 제1 화이트 리스트에 포함된 메시지 ID들은 "안전한 CAN 컨트롤러(또는 보호기능 모드)"가 적용되는 전자식 ECU에서 CAN 버스에 전송할 수 있는 유효한 CAN ID들이다.
또한, 제2 화이트 리스트는 "안전한 CAN 컨트롤러(또는 보호기능 모드)"가 적용되는 전자식 ECU(10)에서 CAN 버스(50)로부터 수신할 수 있는 유효한 CAN ID들 의 집합이다.
또한, 바람직하게는, 보호메모리(38)에는 수신용 CAN ID 각각에 대한 기준 주기 및 후술할 학습된 탐지 점수에 대한 정보도 함께 기록된다.
다음으로, 수신 시간 측정부(41)는 CAN 트랜시버(20)로부터 수신된 데이터(이하의 본 명세서에서, 수신 메시지)의 수신 시간을 측정한다. 도 2A 의 실시에에서, 수신 시간 측정부(41)는 마이크로컨트롤러(40)가 발생시킨 Rx 인터럽트 신호를 수신하여 수신 메시지의 수신 시간을 측정할 수 있다. 이때, 수신 시간 측정부(41)는 마이크로 프로세서 내부의 타이머 혹은 클럭 신호에 기초하여 수신 시간을 측정할 수 있으며, 측정된 수신 시간을 수신 필터부(35)로 전달한다.
다음으로, 수신 필터부(35)는 수신 메시지의 메시지 ID에 대하여 필터링을 수행하여, 허용된 메시지 ID 를 갖는 수신 메시지만을 수신버퍼부(36)로 전송하여 버퍼링한다. 구체적으로, 수신 필터부(35)는 수신 메시지 내의 메시지 ID(211)를 필터링하여, 필터값에 포함된 메시지 ID를 가지는 수신 메시지만 수신하게 한다. 즉, 수신 필터부(35)는 수신이 허가된 메시지 ID에 대한 제2 화이트 리스트(white list)를 보유하고, 상기 제2 화이트 리스트 내의 메시지 ID를 가지는 수신 메시지만 수신한다. 즉, 수신 필터부(35)는 수신 메시지의 메시지ID를 제2 화이트 리스트와 대비하여 필터링을 수행한다.
또한, 수신 필터부(35)는 동일한 메시지 ID 를 가지는 수신 메시지들의 수신 시간의 차이와, 대응하는 메시지 ID 의 기준 주기를 비교하는 주기 연산을 수행하여 비정상 메시지 여부를 판단하고, 정상 메시지만을 수신버퍼부(36)로 전송하여 버퍼링한다. 보다 상세히, 수신 필터부(35)는 수신 메시지에 삽입된 수신 시간을 각 메시지 ID 별로 수신 시간 테이블에 기록한다. 바람직하게는, 연속적으로 수신되는 적어도 3개의 수신 메시지의 수신 시간을 모두 기록하고, 기록된 수신 메시지들의 수신 시간의 차이와 기준 주기를 비교하여, 정상 메시지인지 여부를 판단한다. 이때, 연속적인 3개의 수신 시간은 동일한 메시지 ID를 가지는 수신 메시지의 수신 시간들이다.
본 명세서에서 업급된 수신 메시지들의 수신 주기는 반드시 바로 인접한 수신 메시지들 간의 시간 간격이 아닐 수 있다. 예를 들어, 본 발명의 수신 메시지들의 수신 시간의 차이는 연속적인 3개의 수신 시간 중에서 첫번째 수신 시간과 3번째 수신 시간의 차이일 수 있다. 구체적으로, 수신 필터부(35)는 연속적인 3개의 수신 시간 중에서 첫번째 수신 시간과 3번째 수신 시간의 차이가 기준 주기 보다 작은 경우에는 수신된 적어도 3개의 수신 메시지 중 적어도 1개는 비정상 메시지로 판단한다.
수신 필터부(35)가 ID 필터링 또는 수신 시간 주기 분석을 통해 비정상 메시지를 탐지하는 구체적인 구성에 대해서는 하기의 도 6A 및 도 6B 에서 보다 상세히 살펴보기로 한다.
다음으로, 수신버퍼부(36)는 수신 메시지를 수신 버퍼에 저장한다. 앞서 수신 필터부(35)에 의해 필터링된 수신 메시지만을 수신 버퍼에 저장한다. 수신버퍼부(36)에 저장된 수신 메시지는 마이크로컨트롤러(40)로 전달된다.
한편, 도 2B 는 CAN 컨트롤러(30)에서 자체적으로 수신 메시지의 수신 시간을 측정하는 경우의 ECU(10)의 구성을 나타내고 있다.
도 2B 의 실시예는, 마이크로컨트롤러(40)의 Rx 인터럽트 신호에 의해 수신 메시지의 수신 시간을 측정하는 도 2A 의 실시예와 달리, 수신 메시지의 수신 시간을 CAN 컨트롤러(30)에서 직접 측정하므로, 도 2A 의 수신 시간 측정부(41)의 구성이 생략될 수 있다. 대신, 도 2B 의 실시예에서는 CAN 컨트롤러(30) 내부에 수신 메시지의 수신 시간 측정을 위한 구성이 별도로 구비될 수 있다. 이에 대해서는 후술하는 도 6A 에서 보다 상세히 살펴보기로 한다.
또한, 도 2B 의 실시예는, CAN 컨트롤러(30)에서 자체적으로 수신 메시지의 수신 시간을 측정하는 것 외의 다른 구성들은 도 2A 의 실시예와 동일하므로, 중복되는 구성의 설명에 대해서는 생략하기로 한다.
도 4 는 본 발명의 일 실시예에 따른 필터값 설정 방법을 시계열적으로 나타낸 도면이다.
도 4에서 보는 바와 같이, 먼저, CAN 컨트롤러(30) 또는 필터값 설정부(33)는 보호기능 모드가 활성화되었는지를 판단한다(S10). 보호기능 모드 활성화 여부 판단은 CAN 통신이 초기화하는 단계에서 수행된다.
보호기능 모드가 활성화된 상태이면, 보호메모리(38) 또는 보호메모리(38) 내의 보호 영역에 저장된 화이트 리스트를 가져와서, 전송 필터값 또는 수신 필터값으로 설정한다(S20). 화이트 리스트는 전송 또는 수신이 허용되는 메시지 ID(ID)들의 목록이다. 바람직하게는, 화이트 리스트는 전송 필터용과 수신 필터용으로 따로 구분되고, 전송 필터값과 수신 필터값은 서로 구분되어 설정된다.
만약, 보호기능 모드가 활성화되지 않으면, 관리자 모드 또는 테스트 모드로서, 전송 필터값 또는 수신 필터값이 마이크로컨트롤러(40)의 지시에 따라 설정될 수 있다(S30). 구체적으로, 마이크로컨트롤러(40)의 지시에 따라 SPI(Serial Peripheral Interface) 통신을 통해 필터값을 수신하여, 전송 필터값 또는 수신 필터값을 설정한다. 또는 다른 예로서, ECU(10)에 구비된 레지스터를 이용하여, 레지스터(미도시)에 필터값(또는 화이트 리스트)을 임시로 저장하고, 레지스터에 저장된 값으로 전송 필터값 또는 수신 필터값을 설정한다.
도 5 는 본 발명의 일 실시예에 따른 전송 필터부가 전송 데이터를 필터링하는 구성을 설명하기 위한 도면이다.
도 5에서 보는 바와 같이, 본 발명에 따른 전송필터부(32)는 전송 데이터를 임시로 저장하는 전송 레지스터(321), 다수의 필터가 기록된 전송필터(322), 다수의 필터 중 하나를 선택하여 출력하는 다중화기(Mux)(323), 전송필터값과 전송 레지스터(321)를 대비하는 비교기(324)로 구성된다.
즉, 전송 레지스터(321)에는 전송버퍼부(31)로부터 가져온 전송데이터가 임시로 저장된다. 또한, 전송필터(322)는 다수의 필터값, 또는, 화이트 리스트가 저장되고, 다중화기(323)에 의해 하나의 필터값만 선택된다. 비교기(324)는 전송 레지스터(321)의 전송데이터 중 메시지 ID와 필터값을 대비하여 필터링을 수행한다. 비교기(324)의 결과는 전송 레지스터(321)를 제어하여, CAN 트랜시버(20)로 전송하게 하거나, 차단하도록 제어한다.
특히, 전송필터(322)는 앞서 초기화 할 때 설정되며, 필터값들은 전송할 수 있는 유효한 메시지 ID들이다. 따라서 비교기(324)에 의해, 적어도 동일한 결과가 나오는 경우에만, 전송 레지스터(321)의 전송 데이터가 CAN 트랜시버(20)로 전송하게 한다. 따라서 전송필터(322)의 어느 필터값과도 동일하다는 결과 나오지 않으면, 전송 데이터가 CAN 트랜시버(20)로 전송되지 않는다. 즉, 유효하지 않은 메시지 ID를 가지므로, 해당 전송데이터는 차단된다.
도 6A 및 도 6B 은 본 발명의 일 실시예에 따른 수신필터부가 수신 메시지를 필터링하는 구성을 설명하기 위한 도면이다.
먼저, 도 6A 는 도 2A 의 실시예에 계속하여, 마이크로컨트롤러(40)가 Rx 인터럽트 신호를 발생시켜 수신 시간을 측정하는 경우의 수신 필터부(35)의 세부 구성을 나타내고 있다.
도 6A 에서 보는 바와 같이, 수신 필터부(35)는 수신 시간의 차이 및 주기를 대비하는 주기연산 회로부(352), 수신필터 및 주기연산 결과를 이용하여 비정상 메시지 여부를 탐지하는 비정상 메시지 탐지부(353), 주기 연산 결과에 학습 알고리즘을 적용하는 탐지 점수 학습부(354), 수신이 허용된 ID 를 기록하는 ID 필터 테이블(358) 및 수신 시간을 기록하는 수신 시간 테이블(359)을 포함하여 구성된다. 구체적으로, ID 필터 테이블(358)은 수신이 허용된 수신 ID 필터를 기록하는 저장공간으로 구성되고, 수신 시간 테이블(359)는 메시지 ID, 기준 주기, 수신 시간을 기록하는 저장공간으로 구성된다. 바람직하게는, ID 필터 테이블(358) 및 수신 시간 테이블(359)은 2차원 레지스터 또는 메모리, 캐시 등으로 구성될 수 있다.
먼저, ID 필터 테이블(358)은 수신 메시지를 수신하여 테이블에 저장된 수신이 허용된 수신 ID 필터와 수신 메시지의 ID 값을 비교하여 수신 메시지를 필터링한다. 이때, ID 필터 테이블(358)의 수신이 허용된 수신 ID 필터는 보호메모리(38)로부터 획득된 것일 수 있다.
또한, 수신 시간 테이블(359)은 보호메모리(38)로부터 획득한 수신 메시지의 기준 주기를 포함할 수 있다. 이때, 기준 주기는 정상 메시지들이 수신되었을 때 수신 메시지간의 시간 차로 기대되는 값일 수 있다. 더불어, 수신 시간 테이블(359)에는 수신 시간 측정부(41)가 측정한 수신 시간이 삽입된 수신 메시지에 기초하여 수신 메시지의 수신 시간이 기록될 수 있다. 상술한 바와 같이, 본 발명의 일 실시예에 따른 마이크로컨트롤러(40)는 ECU(10)가 CAN 버스로부터 메시지를 수신하였을 때 Rx 인터럽트 신호를 발생시킬 수 있으며, Rx 인터럽트 신호의 발생에 의해 수신 시간 측정부(41)는 수신 메시지의 수신 시간을 측정하여 수신 필터부(35)에 제공할 수 있다.
이때, 수신 시간은 적어도 3개의 필드를 갖는다. 각 필드는 수신 시간을 저장한다. 바람직하게는, 수신 시간의 필드는 적어도 3개의 시프트 레지스터로 구성되어, 해당 메시지 ID의 수신 메시지가 수신될 때마다 저장된 값이 앞쪽으로 시프트된다. 즉, 가장 늦게 수신된 1번째 수신 시간은 버려지고, 2번째 수신 시간이 1번째 시프트 레지스터로 이동하고, 3번째 데이터가 2번째 시프트 레지스터로 이동한다. 그리고 마지막 시프트 레지스터에는 최근의 수신 시간이 기록된다.
다음으로, 주기연산 회로부(352)는 수신 시간 테이블(359)에 기록된 기준 주기 및 적어도 3개의 수신 메시지들의 수신 시간의 차이를 대비하고, 그 결과 값을 출력하는 회로이다. 바람직하게는, 주기연산 회로부(352)는 1번째 수신 시간과 3번째 수신 시간의 차이를 연산하고, 연산된 수신 시간 차이가 주기 보다 작은지 여부를 대비하여 그 결과를 출력한다. 한편, 주기연산 회로부(352)는 수신 시간의 차이와 기준 주기의 비교를 연산하기 위해 감산기를 구비한다.
본 발명의 CAN 통신 제어 시스템은 실시간 운영 체제 기반으로서, ECU(10)의 전자 제어 관련 CAN 메시지들은 주기적으로 송신될 수 있다. 이때, 하나의 ECU(10)에 복수개의 CAN ID 들이 할당될 수 있으며, 그 중 전자 제어 관련 CAN ID 를 갖는 메시지들은 주기적으로 관련 정보를 갱신하여 CAN 버스에 송신될 수 있다. 따라서, 해킹 공격에 의한 악성 메시지와 같은 비정상 메시지는 정상 메시지와 주기적인 관점에서 충돌이 발생할 가능성이 높다. 이러한 점을 고려하여, 주기연산 회로부(352)는 수신 메시지들의 수신 시간 차이를 기설정된 주기와 비교할 수 있다. 본 발명에서는 수신 메시지들의 수신 시간의 차이가 기준 주기보다 작은 경우 주기 연산 결과가 차단 조건을 만족하였으며, 수신 메시지가 비정상 메시지라 판단한다.
보다 상세히, 주기 연산 회로부(352)는 특정 CAN ID 에 대해 3개의 메시지가 순차적으로 수신되었을 때 수신된 순서에 따라 수신 시간을 T1, T2, T3(T3가 가장 최근에 수신된 메시지의 수신 시간)이라 설정하고, [T3 -T1] 의 값을 연산할 수 있다. 또한, 주기 연산 회로부(352)는 [T3 -T1 < 해당CAN ID에대한 기설정된 주기] 인지 여부를 판단할 수 있으며, 해당 수학식을 만족시키는 경우 주기 연산 결과가 차단 조건을 만족하였다고 볼 수 있다.
다음으로, 비정상 메시지 탐지부(353)는 수신된 데이터의 메시지 ID를 추출하고, 추출된 메시지 ID가 수신 시간 테이블(359)에 존재하는지를 검색한다. 비정상 메시지 탐지부(353)는 추출된 메시지 ID가 수신 시간 테이블(359)에 존재하지 않으면, 수신 메시지를 차단한다.
또한, 비정상메시지 탐지부(353)는 주기연산 회로부(352)의 연산결과에 따라 수신 메시지를 수신버퍼부(36)에 전송하거나 차단한다. 즉, 주기연산 회로부(352)의 수신 메시지들의 수신 시간의 차이가 기준 주기보다 작은 것으로 나오는 경우, 수신 메시지를 차단한다. 그리고 작지 않은 것으로 결과가 나오면, 수신 메시지를 수신버퍼부(36)로 전송한다.
일 실시예에서, [T3 -T1 < 해당CAN ID에대한 기설정된 주기] 인 경우, 즉 주기 연산 결과가 차단 조건을 만족하는 경우, 비정상 메시지 탐지부(353)는 비정상 메시지가 발생되었다고 판단할 수 있다. 혹은, 비정상 메시지 탐지부(353)는 비록 주기 연산 회로부(352)의 주기 연산 결과가 차단 조건을 만족하더라도, 바로 해당 수신 메시지를 비정상 메시지라 판단하지 않고, 후술하는 탐지 점수 학습부(354)의 탐지 점수 결과에 따라 비정상 메시지가 발생되었다고 판단할 수 있다.
한편, 본 발명의 다른 일 실시예에서는, 비정상 메시지 탐지부(353)는 추출된 메시지 ID가 수신 시간 테이블(359)에 수신 ID 필터로서 존재하는 경우에만, 해당 메시지에 대해 수신 시간으로 필터링을 수행하도록 주기연산 회로부(352)를 제어할 수 있다. 즉, 비정상 메시지 탐지부(353)는 수신 메시지가 ID 필터링을 통과한 경우에만 주기 연산 회로부(352)에 의한 수신 시간 필터링이 이루어지도록 제어할 수 있다.
또한, 본 발명의 일 실시예에 따르면, CAN 컨트롤러(30)는 탐지 점수 학습부(354)를 추가적으로 포함할 수 있다. 탐지 점수 학습부(354)는 주기 연산 회로부(352)의 주기 연산 결과에 추가적으로 탐지 학습 알고리즘을 적용할 수 있다.
이와 관련하여, 상술한 바와 같은 주기 연산 회로부(352)에 의한 주기 연산 결과가 설정된 차단 조건을 만족할 때마다 해당 메시지를 비정상 메시지로 판단하기에는 어려움이 존재한다. 임베디드 환경의 특성 상 정상적인 경우에도 노이즈 등으로 메시지들의 수신 주기가 잘못될 수 있기 때문이다. 따라서, 본 발명에서는 주기 연산에서 더 나아가 보다 정확하게 비정상 메시지를 탐지할 수 있는 탐지 점수 학습 알고리즘을 사용할 수 있다.
보다 상세히, 탐지 점수 학습부(354)는 주기 연산 회로부(352)의 주기 연산 결과가 차단 조건을 만족시킬 때마다, 해당 CAN ID 에 대한 탐지 점수를 기설정된 값만큼 증가시킨다. 만족시키지 않는 경우, 해당 CAN ID 에 대한 탐지 점수를 기설정된 값만큼 감소시킨다. 이와 같은 방법으로 메시지를 수신할 때마다 탐지 점수가 조정될 수 있으며, 탐지 점수가 기설정된 값 이상이 되는 경우 확정적으로 비정상 메시지가 수신된 것으로 판단할 수 있다.
비정상 메시지가 수신된 것으로 판단되면, 비정상 메시지 탐지부(353)는 해당 CAN ID 에 대한 수신을 차단하고, 일정 기간 동안 혹은 영구히 해당 CAN ID 의 메시지를 수신하지 않거나, 고장 상태에서 최소한의 기능만을 동작하도록 설계된(예를 들어, 림프홈 모드) 특정 상태로 동작하게 할 수 있다.
한편, 탐지 점수 학습부(354)가 산출한 탐지 점수는 비휘발성 메모리에 저장될 수 있다. 이는, ECU(10)자체의 문제로 인해 ECU(10)가 리셋되더라도 학습된 탐지 점수가 사라지지 않고 반영되도록 하기 위함이다. 특히, 탐지 점수가 저장되는 비휘발성 메모리 영역은 보호메모리(38) 영역일 수 있다.
또한, 도 6B 의 실시예는 도 2B 의 실시예에 계속하여, CAN 컨트롤러(30)가 직접 수신 시간을 측정하는 경우의 수신 필터부(35)의 내부 구성을 나타낸 도면이다.
도 6B 에 도시된 바와 같이, CAN 컨트롤러(30)는 수신 시간 측정부(351)를 포함하며 수신 메시지의 수신 시간을 직접 측정하고, 이로부터 수신 시간 테이블(359)에 기록할 수 있다. 본 발명의 일 실시예에서, 수신 시간 삽입부(34)는 타임 트리거링(Time Triggering) 방식을 이용하여 수신 시간을 측정할 수 있다. 구체적인 일 실시예에서, 수신 필터부(35)는 CAN 컨트롤러(30) 내의 TTCAN(Time Triggered Controller Area Network) 모듈을 이용하여 수신 시간을 측정할 수 있다. 수신 시간 측정부(351)는 측정된 수신 시간을 수신 시간 테이블(359)에 전달한다.
도 2A 및 도 6A 의 실시예와 같이 마이크로컨트롤러(40)가 수신 시간을 측정하는 방법을 사용하는 경우, 일반적인 마이크로컨트롤러(40)에서 용이하게 구현 가능하다는 장점이 존재하지만, 마이크로컨트롤러(40)의 성능에 따라 실제 메시지를 수신한 시점과 Rx 인터럽트 신호에 의해 측정된 수신 시간에 다소 차이가 존재할 수 있다. 이에 반해, 도 2B 및 도 6B 의 실시예와 같이 CAN 컨트롤러(30)에서 직접 수신 시간을 측정하는 경우, CAN 컨트롤러(30) 내부에 별도로 수신 시간 측정을 위한 모듈인 수신 시간 측정부(351)가 필요하지만, 마이크로컨트롤러(40)에 의존적이지 않으므로 부하 등에 영향을 받지 않고, Rx 인터럽트 신호에 의한 방식보다 측정 시간이 정확하다는 장점이 존재한다.
본 발명의 일 실시예에 따르면, 도 2B 및 도 6B 의 실시예를 기본으로 하되, CAN 컨트롤러(30) 내부에 수신 시간 측정부(351)의 기능을 하는 모듈이 포함되어 있지 않은 경우에 도 2A 및 도 6B 의 실시예를 이용하여 수신 메시지의 수신 시간을 측정할 수 있다.
도 7, 도 8A 및 도 8B 는 본 발명의 일 실시예에 따른 수신 데이터를 필터링하는 방법을 시계열적으로 나타낸 도면이다. 이하에서는, 본 발명의 일실시예에 따른 수신 메시지를 필터링하는 방법을 도 7, 도 8A 및 도 8B 을 참조하여 보다 구체적으로 설명한다.
먼저, 도 7 은 수신 시간 필터링으로 수신 메시지를 필터링하는 시계열적 단계들을 도시하고 있다. 보다 상세히, 먼저 CAN 컨트롤러(30)는 수신 메시지를 수신한다(S110). 다음으로, 수신 메시지를 수신한 후 CAN 컨트롤러(30)는 수신 시간 테이블에 수신 시간을 기록한다 (S120). 이때, 발명의 실시예에 따라 CAN 컨트롤러(30)는 마이크로컨트롤러(40)가 측정한 시간을 수신 메시지와 함께 획득하거나, 혹은 CAN 컨트롤러(30)가 직접 수신 메시지의 수신 시간을 측정한다. 또한, 수신 시간 테이블의 수신 시간 시프트 레지시터는 시프트되어, 가장 오래된 수신 시간은 버려지고, 현재 수신 시간이 최근 수신 시간으로 기록된다.
또한, CAN 컨트롤러(30)는, 해당 메시지 ID의 수신필터의 수신 시간의 차이를 계산하고, 계산된 시간 차이 수신 시간 테이블의 기준 주기를 대비한다(S130). 바람직하게는, 1번째 수신 시간과 3번째 수신 시간의 차이(Δt)를 구하고, 구한 차이와 기준 주기(T)를 대비한다.
수신 시간 차이(Δt)가 기준 주기(T) 보다 작으면, 해당 수신 메시지는 차단된다(S160). CAN 통신 프로토콜에 의하여, ECU가 데이터를 송신할 때 최소한 주기 시간 이내에 1회의 데이터를 송신하도록 규정하고 있다. 따라서 3번째 수신 시간과 1번째 수신 시간의 사이에는 주기 시간 보다 길어야 한다. 만약 1번째 수신 시간과 3번째 수신 시간의 차이가 주기 보다 작다면, 비정상 메시지가 중간에 끼어든 것으로 볼 수 있다. 즉, 1, 2, 3번째 메시지 중 적어도 1개는 비정상 메시지일 수 있다. 따라서 CAN 컨트롤러(30)는 비정상 메시지가 수신된 것으로 판단하여, 수신된 데이터를 차단하거나, 비정상 메시지가 탐지되었음을 경고한다.
마지막으로, 수신 시간의 차이가 기준 주기 보다 큰 경우에는 수신 메시지를 수신버퍼로 전송한다(S150).
도 7 과 같이 수신 시간 필터링만을 이용하여 수신 메시지를 필터링하는 것은, 후술하는 도 8A 및 도 8B 의 실시예와 달리 CAN 통신에 존재하는 모든 CAN 메시지들을 수신 ID 필터링 없이 모두 수신 주기 기반으로 모니터링할 수 있으므로, 개별 ECU(10) 수준이 아닌 CAN 버스(50)에 연결되는 보안 게이트웨이에 적용될 수 있다.
다음으로, 도 8A 및 8B 는 수신 ID 필터링 및 수신 시간 필터링을 함께 수행하는 경우의 시계열적 방법을 도시한 도면이다.
도 8A 에서 보는 바와 같이, 먼저, CAN 컨트롤러(30)는 수신 메시지를 수신한다(S210).
다음으로, CAN 컨트롤러(30)는 수신 메시지로부터 메시지 ID를 추출하여, ID 필터 테이블(358)에 매칭되는 수신 ID 필터가 있는지를 검색한다(S220). 메시지 ID는 수신 메시지의 CAN 헤더에 저장된 데이터로서, 메시지의 식별자에 대한 정보이다. 즉, 수신 메시지(200)의 CAN 헤더(210)로부터 메시지 ID를 추출한다. 그리고 추출된 메시지 ID와 매칭되는 수신 ID 필터를 검색한다.
다음으로, 매칭된 수신 ID 필터가 ID 필터 테이블(358)에 존재하지 않으면, 해당 수신 메시지를 차단한다(S260). 즉, ID 필터 테이블(358)은 수신이 허용된 메시지 ID의 화이트 리스트이므로, 해당 화이트 리스트에 메시지 ID가 존재하지 않으면, 해당 수신 메시지는 허용된 메시지가 아니다. 따라서 수신 메시지는 차단된다.
한편, 수신 메시지를 수신한 후 CAN 컨트롤러(30)는 수신 시간 테이블에 수신 시간을 기록한다 (S230). 이하의 수신 시간 필터링과 관련하여 도 7 과 중복되는 설명은 생략하기로 한다.
다음으로, CAN 컨트롤러(30)는, 해당 메시지 ID의 수신필터의 수신 시간의 차이를 계산하고, 계산된 시간 차이 수신 시간 테이블의 기준 주기를 대비한다(S240). 바람직하게는, 1번째 수신 시간과 3번째 수신 시간의 차이(Δt)를 구하고, 구한 차이와 기준 주기(T)를 대비한다. 수신 시간 차이(Δt)가 기준 주기(T) 보다 작으면, 해당 수신 메시지는 차단된다(S260).
마지막으로, 수신 메시지의 ID 와 매칭되는 수신 ID 필터가 ID 필터 테이블(358)에 존재하거나, 수신 시간의 차이가 기준 주기 보다 큰 경우에는 수신 메시지를 수신버퍼로 전송한다(S250).
도 8B 는 본 발명의 다른 일 실시예에 따른 수신 데이터를 필터링하는 방법을 시계열적으로 나타낸 도면이다. 도 8 에서 보는 바와 같이, 먼저, CAN 컨트롤러(30)는 수신 메시지를 수신한다(S110).
도 8B 를 참조하면, ID 필터링 단계(S320) 및 수신 시간 필터링 단계(S330 및 S340)는 도 8A 와 동일하지만, 도 8B 의 경우 매칭되는 수신 ID신 필터가 존재하는 경우에만 수신 시간 필터링이 수행된다는 점에서 차이점이 존재한다. 즉, 도 8B 는 도8A 의 변형예로써, ID 필터링 단계(S320)를 통과한 메시지들에 대해서만 수신 시간 필터링을 행하는 구성을 기재하고 있다.
이상에서는 CAN 컨트롤러(30)를 중심으로 본 발명을 설명하였다. 한편, 본 발명의 다른 실시예에서는, 상술한 명세서에서 설명된 CAN 컨트롤러(30)의 동작과 관련된 방법이 일 실시예으로서 구현될 수 있다. 즉, 본 발명의 다른 실시예에 따르면, 본 명세서에서 설명된 CAN 컨트롤러(30)의 동작들은 시계열적 단계를 가지는 방법으로서 구현될 수 있으며, 이때 방법의 수행 주체는 반드시 CAN 컨트롤러(30)가 아닐 수도 있다. 예를 들어, 도 4, 도 7 및 도 8A, 8B 에서 설명된 각 단계들을 수행하는 방법이 본 발명의 일 실시예가 될 수 있고, 이때 각 단계들을 수행하는 방법은 CAN 컨트롤러(30)가 아닌 다른 장치에 의해서도 수행될 수 있다.
이때, 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 ECU(10)에 내장된 프로세서일 수 있으며, 이때 프로세서에 저장된 명령들은 본 발명의 실시예에 따라 ECU(10) 및 CAN 컨트롤러(30)를 제어할 수 있으므로, 이 경우 자동차뿐만 아니라 건설 중장비, 농업 트랙터 등 CAN 통신을 사용하는 다양한 분야의 전자식 ECU에 적용 가능하다는 장점이 있다. 혹은 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 ECU(10)에 H/W 형태의 커넥터 타입으로 연결되는 보조 ECU일 수 있으며, 이 경우 보조 ECU를 ECU(10)에 연결하기만 하면 되므로 H/W 혹은 S/W 측면의 변경이 불필요하다는 장점이 존재한다. 혹은 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 CAN 컨트롤러(30) 내부에 내장되는 반도체 장치이고, 반도체 장치의 S/W 가 본 발명의 방법을 수행하도록 설계될 수 있다. 혹은 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 CAN 버스에 연결되는 보안 게이트웨이(gateway)일 수 있으며, 이 경우 보안 게이트웨이는 개별 ECU에 연결되지 않고 연결된 CAN 버스 네트워크의 모든 CAN 메시지들을 수신 주기 필터링으로 필터링할 수 있다.
도 9 및 도 10 은 본 발명의 방법이 보조 ECU에 의해 수행되는 실시예를 설명하기 위한 도면이다.
도 9 를 참조하면, ECU(10)에는 보조 ECU(11)가 연결되어 있다. 보조 ECU(11)는 ECU(10)를 본 발명의 방법에 따라 제어하도록 하는 명령이 저장된 프로세서를 포함할 수 있다. 또한, 도 10 에 도시된 바와 같이, 보조 ECU(11)는 프로세서(13)를 포함할 수 있으며, 프로세서(13)는 필터값 설정부(133), 전송 필터부(132) 및 수신 필터부(135)를 포함할 수 있고, 이는 각각 도 2B 에 도시된 CAN 컨트롤러(30)의 필터값 설정부(33), 전송필터부(32) 및 수신 필터부(35)와 동일한 역할을 수행할 수 있다. 보다 구체적인 예로서, 도 7 의 S120 단계(수신 메시지의 메시지 ID 와 매칭되는 ID 필터링 테이블을 검색)는, 도 9 및 도 10 의 실시예에서는 보조 ECU(11)의 수신 필터부(135)가 수신 메시지의 메시지 ID 와 매칭되는 ID 필터링 테이블을 검색하거나, 혹은 ECU(10)를 제어하여 상기 단계를 수행하도록 제어하는 것일 수 있다.
이하에서는, 본 발명의 다른 실시예인 CAN 통신 기반 우회 공격 탐지 방법 및 시스템에 대해 설명하기로 한다.
도 1 을 다시 참조하면, 도 1 에 도시된 본 발명의 CAN 통신은 단순히 일반적인 CAN 통신에서 더 나아가, 확장형 CAN(Extended CAN) 및 CAN-FD(CAN with Flexible Data-Rate)에까지 확장 적용될 수 있다. 또한, 본 발명의 CAN 통신은 차량, 건설 중장비, 트랙터 등에 탑재될 수 있다. CAN 통신은 차량 통신(Vehicle-CAN)과 진단 통신(Diagnostic-CAN)으로 구분될 수 있다. 차량 통신은 주행 중 ECU들 간의 통신 과정에서 사용되는 통신이고, 진단 통신은 정비, 고장 부품 및 원인, 고장코드(DTC), 펌웨어 업데이트, 진단 등의 특수목적을 위해 사용되는 통신이다. 진단 통신은 차량 통신에 영향을 줄 수 있다. 특히, 펌웨어 업데이트를 위한 리프로그래밍 서비스, 통신 제어 관련 서비스는 차량 통신을 일시적으로 혹은 특정 조건에서 영구적으로 중지하는 기능을 할 수 있다. 진단 통신은 국제표준으로서 UDS (Unified Diagnostic Services) 표준을 사용하고 있다. UDS 는 표준 ISO 14229 및 ISO 15765-3 에 정의되어 있다. 본 발명의 일 실시예는 이러한 진단 통신을 이용하여 해커의 우회 공격을 탐지하는 것을 구성상 특징으로 하며, 이에 대해서는 후술하기로 한다.
또한, 이하의 본 명세서에서는 설명의 편의를 위하여, CAN 버스(50)에 연결된 복수개의 ECU(10) 중 해커의 공격 대상이 되는(즉 해킹 공격에 의한 비정상 메시지를 수신하는 대상이 되는) ECU를 타겟 ECU라 할 수 있으며, 타겟 ECU는 대표적으로 차량의 자율 주행 관련 ECU일 수 있다. 또한, 해킹 공격에 의해 아이들(idle) 상태가 되는지 여부에 대한 모니터링 대상이 되는 ECU를 탐지 대상 ECU(탐지 대상 ECU는 해커의 공격에 의해 아이들 상태가 되기 전에는 정상 ECU 이다)라 할 수 있다. 또한, 그리고 해커에 의해 정상 CAN 메시지를 모사하는 비정상 CAN 메시지를 송신하는 ECU를 비정상 ECU라고 칭하기로 한다.
본 발명의 일 실시예에 따르면, 타겟 ECU는 다른 ECU(ECUN)들이 보내는 CAN ID를 가진 메시지들이 정상 ECU들이 송신한 정상 CAN 메시지인지 혹은 비정상 ECU가 모사하여 송신한 비정상 CAN 메시지인지 여부를 판단할 수 있다. 특히, 본 발명의 일 실시예에 따르면 해킹 공격에 의해 정상 ECU가 메시지 전송 불능 상태가 되었는지 여부와, 수신된 CAN 메시지가 해커의 의해 모사된 비정상 CAN 메시지인지 여부를 판별할 수 있다. 이를 위해, 본 발명에 따르면 타겟 ECU는 진단 통신용 요청 또는 응답에 할당된 CAN ID 를 갖는 CAN 메시지들을 수신하여, 대응하는 탐지 대상 ECU가 현재 메시지 정상 전송 상태인지 혹은 메시지 전송 불능 상태인지 여부를 실시간으로 모니터링하여 탐지할 수 있다. 즉, 타겟 ECU는 진단 통신용 요청 혹은 응답에 해당하는 CAN ID를 갖는 CAN 메시지들을 수신할 때 CAN ID에 대응하는 ECU의 상태 정보를 함께 모니터링하고, 모니터링 결과에 따라 추후 수신되는 CAN 메시지의 정상 여부를 판별할 수 있다.
상술한 바와 같이 타겟 ECU가 탐지 대상 ECU의 상태가 메시지 정상 전송 상태인지 혹은 메시지 전송 불능 상태인지를 모니터링 가능한 이유는, 진단 통신이 국제 표준에 의한 것이기 때문에, 메시지 전송 불능 상태를 유발하는 시퀀스에 식별 가능한 패턴이 존재하기 때문이다.
이하에서는, 타켓 ECU의 CAN 컨트롤러(30)의 내부 구성을 설명하며 본 발명에 대해 보다 상세히 살펴보기로 한다.
도 11 은 본 발명의 일 실시예에 따른 CAN 컨트롤러의 내부 구성을 블록도로 나타낸 것이다.
도 11 을 참조하면, 본 발명에 따른 CAN 컨트롤러(30)는 전송할 데이터를 임시로 저장하는 전송버퍼부(31), 수신 메시지와 관련하여 해커의 우회 공격이 존재하는지 여부를 탐지하는 우회 공격 탐지부(100), 수신 메시지를 임시로 저장하는 수신버퍼부(36)로 구성된다. 또한, 추가적으로 필터값을 저장하는 보호메모리(38)를 더 포함하여 구성된다.
전송버퍼부(31)는 버퍼를 구비하여 전송할 데이터를 버퍼에 임시로 저장한다. 특히, 마이크로컨트롤러(40)는 전송할 데이터(또는 전송 데이터)를 전송버퍼부(31)의 버퍼에 저장한다.
전송버퍼부(31)는 전송데이터를 순차적으로 버퍼에 저장하고, 마이크로컨트롤러(40)에 의해 수신된 순서로 저장하였다가 수신된 순서대로 CAN 트랜시버(20)를 통해 전송한다. 즉, 전송버퍼부(31)는 도 3 에서 전술한 헤더(210)와 페이로드(220)로 구성된 전송데이터를 순차적으로 버퍼에 저장하고, 마이크로컨트롤러(40)에 의해 수신된 순서로 저장하였다가 수신된 순서대로 CAN 트랜시버(20)를 통해 전송한다.
다음으로, 수신버퍼부(36)는 수신 CAN 메시지를 수신 버퍼에 저장한다. 본 발명의 일 실시예에 따르면, 수신버퍼부(36)는 우회 공격 탐지부(100)에 의해 정상 CAN 메시지로 판별된 메시지만을 수신 버퍼에 저장할 수 있다. 수신버퍼부(36)에 저장된 수신 CAN 메시지는 마이크로컨트롤러(40)로 전달된다.
또한, 우회 공격 탐지부(100)는 수신 CAN 메시지를 수신버퍼부(36)에 전달하기 전에, 해당 수신 CAN 메시지가 정상 CAN 메시지인지 혹은 해커의 우회 공격에 의한 비정상 CAN 메시지인지 여부를 판별한다. 본 발명의 일 실시예에 따르면, 우회 공격 탐지부(100)는 비정상 CAN 메시지 여부를 판별하기 위해, 비정상 CAN 메시지에 대응하는 탐지 대상 ECU가 메시지 전송 불능 상태인지 여부를 판별한다. 이에 대해서는 도 12 이하에서 보다 상세히 설명하기로 한다.
다음으로, 보호메모리(38)는 ROM(Read Only Memory), 플래시메모리 등 비휘발성 메모리로서, 필터값 또는 메시지ID 리스트를 저장한다.
바람직하게는, 보호메모리(38)는 통상의 비휘발성 메모리로 구성되며, 그 일부의 메모리 공간을 보호영역으로 구분하여 지정될 수 있다. 이 경우, 보호 영역의 메모리에 저장된 데이터만 읽기 기능이 허용되고, 보호 영역 외의 다른 영역에는 데이터를 변경하거나 삭제가 가능하다. 보호메모리(38) 또는, 보호된 메모리 영역(보호영역)은 일반적인 비휘발성 메모리(e.g. 플래시 메모리)처럼 메모리 주소값으로 접근이 불가능하며, 보호된 메모리 영역에 대한 읽기/쓰기 접근을 하려면 특수한 접근방법과 패스워드가 필요하다.
본 발명의 일 실시예에 따르면 보호메모리(38)에는 탐지 대상 ECU들의 상태가 저장되어, 타겟 ECU가 비정상적으로 종료되는 경우에도 탐지 대상 ECU들의 상태 정보를 학습하여 기억할 수 있다. 또한, 바람직하게는, 보호메모리(38)에는 탐지 대상 ECU들의 학습된 탐지 점수가 저장될 수 있다.
본 발명의 일 실시예에 따르면, 도 11 과 같이 우회 공격 탐지부(100)를 포함하는 ECU는 타겟 ECU일 수 있다. 본 발명의 일 실시예에 따르면, 타겟 ECU는 자율 주행 관련 ECU로서 다른 ECU로부터 CAN 메시지를 수신하여 차량의 상태를 파악하고, 차량의 자율 주행과 관련하여 차량 시스템을 제어하기 위한 CAN 메시지를 송출하는 ECU일 수 있다. 이에, 해커는 타겟 ECU가 파악하는 차량의 상태를 오인하도록 하기 위해 비정상 메시지를 송출할 수 있으며, 비정상 메시지를 CAN 버스(50)로부터 수신한 타겟 ECU는 해커의 의도대로 차량의 시스템을 제어하기 위한 CAN 메시지를 송출할 위험성이 존재한다. 이와 같은 위험을 방지하기 위해, 본 발명의 일 실시예에 따른 타겟 ECU의 우회 공격 탐지부(100)는 수신한 메시지가 비정상 메시지인지 여부를 탐지할 수 있다. 이하의 도 12 에서는, 우회 공격 탐지부(100)의 구성을 중심으로 본 발명에 따른 해커의 우회 공격 탐지 방법에 대해 살펴보기로 한다.
도 12 는 본 발명의 일 실시예에 따른 우회 공격 탐지부의 내부 구성을 블록도로 나타낸 것이다.
본 발명의 일 실시예에 따른 우회 공격 탐지부(100)는 CAN ID 획득부(110), 진단 통신 ID 추출부(120), ID-ECU 매칭부(130), 리프로그래밍 감지부(140) 및 일시적 불능 감지부(150)를 포함하는 ECU 상태 모니터링부(101), 비정상 메시지 판별부(160) 및 탐지 점수 학습부(170)를 포함한다.
먼저, CAN ID 획득부(110)는 기설정된 CAN ID 들을 획득하여 CAN ID 리스트(CAN_ID_LIST)를 생성할 수 있다. CAN ID란 CAN 통신의 전송 데이터의 구조 내에서 각각의 전송 데이터에 대한 식별자를 뜻한다. 타겟 ECU가 다른 탐지 대상 ECU들로부터 수신받는 CAN ID 는 사전에 정의될 수 있으며, CAN ID들은 탐지 대상 ECU들 각각에 사전에 할당된 값일 수 있다.
도 13A 및 도 13B 는 해커의 공격으로 인해 타겟 ECU에 비정상 메시지가 수신되는 과정을 설명하기 위한 도면이다.
도 13A 를 참조하면, 타겟 ECU(51)는 CAN ID 리스트(CAN_ID_LIST)를 생성하며, CAN_ID_LIST 리스트에는 0x11, 0x22, 0x33, 0x44 의 CAN ID가 포함될 수 있다. 또한, 탐지 대상 ECU 인 ECU1(52), ECU2(53), ECU3(54)가 존재하며, ECU1(52)은 정상 ECU 상태, 즉 메시지 정상 전송 상태일 때 0x11 및 0x22 의 CAN ID를 갖는 메시지를 CAN 버스(50)에 브로드캐스팅할 수 있다. 예를 들어, 정상 CAN 메시지(52m)는 0x11 의 CAN ID를 가질 수 있다. 한편, 도 13A 의 예시에서, 해커에 의해 조종되어 비정상 CAN 메시지(55m)를 브로드캐스팅하는 비정상 ECU로서 ECUk 가 존재할 수 있으며, 비정상 CAN 메시지(55m)는 정상 CAN 메시지(52m)을 모사한 메시지일 수 있다. 이때, 정상 CAN 메시지(52m)와 비정상 CAN 메시지(55m)가 모두 CAN 버스(50)상에 브로드캐스팅되는 경우, 정상 CAN 메시지(52m)와 비정상 CAN 메시지(55m)가 충돌하여 해커는 공격 목적을 달성할 수 없다. 이에, 해커는 도 13B 에 도시된 바와 같이 ECU1(52) 을 메시지 전송 불능 상태로 만드는 우회 공격을 사용함으로써 정상 CAN 메시지(52m)가 브로드캐스팅되지 않게 할 수 있다. 또한, 해커는 비정상 ECU(ECUk)를 이용하여 0x11 CAN ID를 갖는 비정상 CAN 메시지(55m)를 브로드캐스팅할 수 있다. 이 경우 타겟 ECU(51)는 비정상 CAN 메시지(55m)만을 수신하여 해커의 의도대로 차량의 상태로 오판할 위험성이 존재한다. 이를 방지하기 위해 본 발명의 일 실시예에 따르면 타겟 ECU는 진단 통신 서비스를 이용하여 탐지 대상 ECU가 메시지 전송 불능 상태인지 여부를 모니터링하고, 모니터링 결과에 따라 CAN 메시지의 정상 여부를 판별할 수 있다.
진단 통신 ID 추출부(120)는 CAN ID 리스트에 존재하는 CAN ID 중 진단 통신 관련 요청(Request) 또는 응답(Response)에 해당하는 진단 통신 CAN ID 를 추출할 수 있다. 즉, 진단 통신 ID 추출부(120)는 수신된 CAN 메시지의 CAN ID가 진단 통신용 요청 또는 응답에 할당된 CAN 아이디 중 적어도 하나를 사용하는 CAN 메시지인지 여부를 판단할 수 있다.
보다 상세히, 상술한 바와 같이 차량의 CAN 통신은 차량 통신과 진단 통신을 포함할 수 있다. 이때, 차량 통신에 사용되는 각 ECU에 대응하는 CAN ID들은 완성차 제조사에 따라 달라질 수 있다. 또한, 진단 통신에 사용되는 각 ECU의 요청(Request)과 응답(Response)에 해당하는 CAN ID 역시 완성차 제조사에 달라질 수 있다. 즉, 차량 통신 및 진단 통신에서 각 ECU에 해당하는 CAN ID는 완성차 제조사에 따라 달라질 수 있다. 그러나, CAN 통신에 연결된 각각의 ECU에 대한 진단 통신은 요청(Request)과 응답(Response)에 해당하는 사전에 정의 및 할당된 CAN ID가 2 개 존재할 수 있다. 예를 들어, 진단 통신의 요청에 해당하는 CAN ID는 0x7E 이고, 응답에 해당하는 CAN ID는 0x7E8 일 수 있으나, 구체적인 요청 및 응답 CAN ID는 상술한 바와 같이 제조사에 따라 달라질 수 있다. 즉, 진단 통신에서 사용되는 서비스 ID들은 제조사에 관계없이 동일한 국제 표준을 따르며, 본 발명은 이러한 특징을 갖는 진단 통신의 서비스 ID를 이용하여 탐지 대상 ECU의 상태를 판별할 수 있다.
다음으로, ID-ECU 매칭부(130)는 진단 통신 CAN ID에 대응하는 탐지 대상 ECU를 매칭할 수 있다. 즉, 추출된 진단 통신 ID에 대응하는 탐지 대상 ECU를 매칭할 수 있으며, 매칭된 탐지 대상 ECU는 진단 통신 관련 요청을 수신하였거나 혹은 응답을 송신한 것으로 추정될 수 있다. 따라서, 타겟 ECU는 진단 통신 관련 메시지를 수신 또는 송신한 ECU의 상태가 메시지 정상 전송 가능 상태인지, 혹은 메시지 전송 불능 상태인지 여부를 모니터링할 수 있으며, 이때 모니터링 대상이 되는 탐지 대상 ECU를 선정하는 것은 상술한 바와 같이 진단 통신 CAN ID 의 추출 및 ECU 매칭에 기초할 수 있다.
다음으로, ECU 상태 모니터링부(101)는 리프로그래밍 감지부(140) 및 일시적 불능 감지부(150) 를 포함하며, 탐지 대상 ECU가 정상 메시지 전송 상태인지 혹은 메시지 전송 불능 상태인지 여부를 판별하는 역할을 한다.
차량 등에 사용되는 CAN 통신은 브로드캐스트 방식으로 CAN 메시지를 전송하며, 따라서 CAN 버스(50)에 연결된 하나의 노드(ECU)가 특정 CAN 메시지를 정상적으로 수신한다고 해도 해당 CAN 메시지가 사라지지 않는다. 즉, CAN 통신의 특성상 CAN 버스(50)에 연결된 모든 ECU는 CAN 버스 상에 브로드캐스팅된 CAN 메시지를 수신할 수 있다.
이와 같은 CAN 통신의 특성으로 인해, 상술한 바와 같이, CAN 통신 기반 해킹 공격 시, 해킹 공격에 의한 비정상 ECU로부터의 비정상 CAN 메시지와, 정상 ECU로부터의 정상 CAN 메시지가 모두 CAN 버스로 브로드캐스팅 되어 충돌이 발생할 수 있다. 이 경우 해커는 원하는 목적을 달성할 수 없기 때문에, 해커는 정상 ECU가 정상 CAN 메시지를 전송하지 않도록 하여 충돌이 발생하는 경우를 차단하는 우회 공격 방법을 사용할 수 있다. 이때, 해커는 정상 CAN 메시지를 발송하지 않도록 하기 위해 진단 통신의 국제 표준 서비스를 사용할 수 있으며, 따라서 본 발명의 일 실시예에 따른 ECU 상태 모니터링부(101)는 수신된 CAN ID 리스트에 탐지 대상 ECU를 메시지 전송 불능 상태로 만드는 진단 통신 서비스의 요청/응답 CAN ID가 있는지를 탐지하여 탐지 대상 ECU의 상태를 모니터링하고, 탐지 대상 ECU가 메시지 전송 불능 상태에 있다고 판단하는 경우 해당 탐지 대상 ECU로부터 수신된 주기적 CAN 메시지는 해킹 공격에 의해 모사된 비정상 메시지라고 판단할 수 있다.
본 발명의 일 실시예에 따르면, ECU 상태 모니터링부(101)는 우선 순위가 높은 하나 이상의 N 개 ECU에 대해서, 2N 개의 필터 ID (진단 통신의 요청/응답에 대한 ID) 를 수신 필터(Rx 필터)로 설정하고, 해당 필터 ID 에 대응하는 CAN ID를 갖는 CAN 메시지가 감지되며 해당 ECU가 메시지 전송 불능 상태가 되었다고 판단할 수 있는 패턴이 감지되었을 때, 대응하는 탐지 대상 ECU가 아이들 모드(메시지 전송 불능 상태)라고 판단할 수 있다. ECU 상태 모니터링부(101)가 판단한 탐지 대상 ECU의 상태 정보는 비 휘발성 메모리(예를 들어, 보호메모리(38))에 저장되어, 우회 공격 탐지부(100)가 비정상적으로 종료되는 경우에도 탐지 대상 ECU의 상태 정보를 잃지 않을 수 있다.
ECU 상태 모니터링부(101)가 탐지 대상 ECU를 메시지 전송 불능 상태라고 판단하는 트리거링 컨디션은, 탐지 대상 ECU에 대한 1) UDS 스펙에 명시된 ecuReset 서비스에 서브로 Reprogramming 0x03 요청 중 하나를 감지하는 것, 그리고 2) UDS 스펙에 명시된 disableNormalMessageTransmission 서비스 요청일 수 있으며, 2 가지의 트리거링 컨디션은 각각 리프로그래밍 감지부(140) 및 일시적 불능 감지부(150)에 의해 탐지될 수 있다.
한편, ECU 상태 모니터링부(101)는 일시적 불능 감지부(150) 및 리프로그래밍 감지부(140)에 의한 탐지 대상 ECU의 메시지 전송 불능 상태를 감지할 때, 진단 서비스 ID로 된 서브 함수값을 참조할 수 있다. 예를 들어, 리프로그래밍 감지부(140)는 EcuReset $11 의 서브 함수가 리프로그래밍 관련 함수인지 여부를 참조하여 메시지 전송 불능 상태를 감지할 수 있다.
먼저, 리프로그래밍 감지부(140)는 탐지 대상 ECU가 리프로그래밍 모드로 진입하도록 하는 요청을 감지하며, 보다 상세히는 펌웨어 리프로그래밍 목적의 EcuReset 관련 기능을 수행하는 진단 서비스가 트리거링 된 경우를 감지한다. 펌웨어 리프로그래밍 목적의 EcuReset 관련 기능이란, UDS 에서 서비스 ID $11로 정의된 서비스이다.
본 발명의 일 실시예에 따르면 리프로그래밍 감지부(140)는 탐지 대상 ECU 상태를 실시간으로 모니터링하여 탐지 대상 ECU가 메시지 전송 불능 상태가 되는지 여부를 탐지한다.
도 14 는 본 발명의 일 실시예에 따른 탐지 대상 ECU의 상태 변화를 설명하기 위한 도면이다.
도 14 를 참조하면, 먼저 탐지 대상 ECU가 노멀 상태일 때, EcuReset 요청(EcuReset $11)이 수신될 수 있다. 이 경우, 탐지 대상 ECU 는 먼저 부정 응답(Negative Response)을 하고, 리셋(Reset) 이후 긍정 응답(Positive Response)을 한다. EcuReset $11 의 서브 함수가 리프로그래밍 관련 함수(Reprogramming 0x03)이며 ECU가 리셋 이후 긍정 응답을 한다는 2 가지 조건이 만족되면, 탐지 대상 ECU는 리프로그래밍 모드로 진입한다.
탐지 대상 ECU는 리프로그래밍 모드 진입 시 메시지 전송 불능 상태가 된다. 즉, 본 발명의 일 실시예에 따르면 리프로그래밍 감지부(140)는 1) EcuReset $11 의 서브 함수가 리프로그래밍 관련 함수일 것, 및 2) 탐지 대상 ECU가 리셋 이후의 긍정 응답을 한 것의 2 가지 조건이 만족되면 탐지 대상 ECU가 메시지 전송 불능 상태라고 판단할 수 있다. 혹은, 본 발명의 다른 실시예에 따르면, 리프로그래밍 감지부(140)는 최소 트리거링 컨디션으로서 EcuReset $11 의 서브 함수가 리프로그래밍 관련 함수일 경우 탐지 대상 ECU가 메시지 전송 불능 상태라고 판단하고, 추가적으로 탐지 대상 ECU의 제조사에 따라 리셋 이후의 긍정 응답/부정 응답 여부에 따라 메시지 전송 불능 상태를 확정할 수 있다.
또한, 탐지 대상 ECU는 리프로그래밍 모드에서 Request Transfer Exit $37 요청이 수신되는 경우 노멀 상태로 전이할 수 있으며, 다시 메시지 정상 전송 상태가 된다. 따라서, 리프로그래밍 감지부(140)는 Request Transfer Exit $37 요청을 감지하는 경우, 탐지 대상 ECU의 상태를 메시지 전송 불능 상태에서 메시지 정상 전송 상태로 전이시킬 수 있다. 이 경우 타겟 ECU가 감지하는 탐지 대상 ECU에 대응하는 CAN 메시지들은 정상 CAN 메시지라 판단될 수 있다.
한편, 탐지 대상 ECU의 리프로그래밍 모드 도중에 탐지 대상 ECU만 전원이 탈거되는 경우가 존재할 수 있다. 이 경우에는 탐지 대상 ECU의 리셋 이후에 탐지 대상 ECU가 정상 CAN 메시지를 송출할 수 있으므로(즉, 메시지 정상 전송 상태이므로) ECU 상태 모니터링부(101)는 정상 CAN 메시지와 비정상 CAN 메시지를 모두 수신할 수 있다. 즉, 정상 CAN 메시지와 비정상 CAN 메시지가 충돌하기 때문에, 해커의 공격을 감지할 수 있다.
다음으로, 일시적 불능 감지부(150)는 탐지 대상 ECU를 일시적인 메시지 전송 불능 상태로 만드는 진단 서비스 요청을 감지하며, 진단 서비스 목적의 메시지 전송 비활성(disableNormalMessageTransmission) 관련 기능을 수행하는 서비스가 트리거링 된 경우를 감지한다. 즉, 일시적 불능 감지부(150)는 UDS 스펙에 명시된 disableNormalMessageTransmission 관련 기능을 수행하는 진단 서비스 요청을 감지할 수 있다.
disableNormalMessageTransmission 서비스는 UDS 에서 Communication Control $28 의 하위 함수로서, 확장 모드(Extended Mode)에서만 동작 가능하며, 지속 시간이 제한적이다. 대표적으로, disableNormalMessageTransmission 서비스는 약 3 초 정도 지속 가능하며, 따라서 disableNormalMessageTransmission 상태를 지속하기 위해서는 disableNormalMessageTransmission $28 을 지속적으로 송신해야 한다. 따라서, 일시적 불능 감지부(150)는 disableNormalMessageTransmission $28 요청이 기설정된 시간 간격 이하로 지속적으로(예를 들어, 3초에 한번씩) 존재하는 경우 탐지 대상 ECU가 일시적인 메시지 전송 불능 상태라고 판단할 수 있다.
다음으로, 비정상 메시지 판별부(160)는 상술한 바와 같이 리프로그래밍 감지부(140) 혹은 일시적 불능 감지부(150)가 탐지 대상 ECU를 메시지 전송 불능 상태라 판단했음에도 불구하고, 탐지 대상 ECU에 대응하는 CAN 아이디를 갖는 CAN 메시지가 주기적으로 수신되는 경우, 상기 CAN 메시지를 비정상 CAN 메시지라 판별할 수 있다. 즉, 탐지 대상 ECU가 메시지 전송 불능 상태여서 정상적으로 CAN 메시지를 송신할 수 없는 상태임에도 불구하고, 탐지 대상 ECU에 대응하는 CAN 메시지가 수신된다면 해당 CAN 메시지는 해킹 공격에 의해 모사된, 비정상 ECU가 송신한 비정상 CAN 메시지라 판별할 수 있다.
다음으로, 탐지 점수 학습부(170)는 비정상 메시지 판별부(160)가 수신된 CAN 메시지를 정상인지 혹은 비정상인지 여부를 판별할 때 사용할 수 있는 탐지 학습 알고리즘을 제공할 수 있다.
이와 관련하여, 상술한 바와 같은 비정상 메시지 판별부(160)가 탐지 대상 ECU에 대응하는 CAN 메시지들을 수신할 때마다 해당 CAN 메시지를 비정상 메시지로 판단하기에는 어려움이 존재한다. 임베디드 환경의 특성 상 정상적인 경우에도 노이즈 등으로 메시지들의 수신 주기가 잘못되거나, 메시지가 오류 전송될 수 있기 때문이다. 따라서, 본 발명에서는 보다 정확하게 비정상 메시지를 탐지할 수 있는 탐지 점수 학습 알고리즘을 사용할 수 있다.
보다 상세히, 탐지 점수 학습부(170)는 탐지 대상 ECU가 메시지 전송 불능 상태일 때, 탐지 대상 ECU에 대응하는 CAN 메시지가 수신되는 경우 탐지 점수를 기설정된 값만큼 증가시키고, 탐지 대상 ECU에 대응하는 CAN 메시지가 기설정된 시간 내에 수신되지 않는 경우 상기 탐지 점수를 기설정된 값만큼 감소시킬 수 있다. 산출된 탐지 점수를 이용하여, 비정상 메시지 판별부(160)는 탐지 점수가 기설정된 기준값 이상일 때 탐지 대상 ECU에 대응하는 CAN 메시지가 비정상 메시지라 판단할 수 있다.
이상에서는 CAN 컨트롤러(30) 내의 우회 공격 탐지부(100)를 중심으로 본 발명을 설명하였다. 한편, 본 발명의 다른 실시예에서는, 상술한 명세서에서 설명된 우회 공격 탐지부(100)는 CAN 컨트롤러(30) 외부에 존재하거나, 혹은 우회 공격 탐지부(100)의 동작과 관련된 방법이 일 실시예으로서 구현될 수 있다. 즉, 본 발명의 다른 실시예에 따르면, 본 명세서에서 설명된 우회 공격 탐지부(100)의 동작들은 시계열적 단계를 가지는 방법으로서 구현될 수 있으며, 이때 방법의 수행 주체는 반드시 CAN 컨트롤러(30)가 아닐 수도 있다. 예를 들어, 도 15 에서 설명된 각 단계들을 수행하는 방법이 본 발명의 일 실시예가 될 수 있고, 이때 각 단계들을 수행하는 방법은 CAN 컨트롤러(30)가 아닌 다른 장치에 의해서도 수행될 수 있다.
이때, 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 타겟 ECU에 내장된 프로세서일 수 있으며, 이때 프로세서에 저장된 명령들은 본 발명의 실시예에 따라 타겟 ECU 및 타겟 ECU의 CAN 컨트롤러(30)를 제어할 수 있으므로, 이 경우 자동차뿐만 아니라 건설 중장비, 농업 트랙터 등 CAN 통신을 사용하는 다양한 분야의 전자식 ECU에 적용 가능하다는 장점이 있다. 혹은 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 타겟 ECU에 H/W 형태의 커넥터 타입으로 연결되는 보조 ECU일 수 있으며, 이 경우 보조 ECU를 타겟 ECU에 연결하기만 하면 되므로 H/W 혹은 S/W 측면의 변경이 불필요하다는 장점이 존재한다. 혹은 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 타겟 ECU의 CAN 컨트롤러(30) 내부에 내장되는 반도체 장치이고, 반도체 장치의 S/W 가 본 발명의 방법을 수행하도록 설계될 수 있다. 혹은 본 발명의 다른 실시예에 따른 방법을 수행하는 주체는 CAN 버스에 연결되는 보안 게이트웨이(gateway)일 수 있으며, 이 경우 보안 게이트웨이는 개별 ECU에 연결되지 않고 연결된 CAN 버스 네트워크의 모든 CAN 메시지들의 비정상 여부를 판별할 수 있다.
도 15 는 본 발명의 일 실시예에 따른 CAN 통신 기반 우회 공격 탐지 방법을 시계열적으로 나타낸 순서도이다. 본 발명의 일 실시예에 따른 도 15 의 각 단계는 우회 공격 탐지부(100)에 의해 수행될 수 있다.
도 15 를 참조하면, 먼저 기설정된 CAN ID 리스트를 획득한다(S1).
다음으로, CAN 버스로부터 수신된 하나 이상의 CAN 메시지에 대응하는 CAN ID 중 진단 통신 관련 요청(Request) 또는 응답(Response)에 해당하는 진단 통신 CAN ID를 추출한다(S2).
다음으로, 진단 통신 CAN ID에 대응하는 탐지 대상 ECU를 매칭한다(S3).
다음으로, 탐지 대상 ECU의 상태가 메시지 전송 불능 상태인지 여부를 판단하고, 메시지 정상 전송 상태인 경우 S1 단계로 돌아가고, 메시지 전송 불능 상태인 경우 S5 단계를 수행한다(S4).
다음으로, 탐지 대상 ECU가 메시지 전송 불능 상태일 때, 탐지 대상 ECU에 대응하는 CAN 메시지들이 주기적으로 수신되는는지 여부를 판단하고, 수신되지 않는 경우 S1 단계로 돌아가고, 수신되는 경우 S6 단계를 수행한다(S5).
마지막으로, 탐지 대상 ECU에 대응하는 CAN 메시지를 비정상 메시지로 판별한다(S6).
도 16 은 본 발명의 일 실시예에 따라 우회 공격 탐지부가 CAN 컨트롤러(30)외부에 존재하는 경우를 도시한 도면이다.
도 16 을 참조하면, 우회 공격 탐지부(100)가 CAN 컨트롤러(30)의 외부에 존재하며, 우회 공격 탐지부(100)는 CAN 트랜시버(20)로부터 수신 CAN 메시지를 획득하여 CAN 메시지가 비정상 메시지인지 여부를 판별한 후, 판별 결과를 수신버퍼부(36)에 반환할 수 있다. 이때, 우회 공격 탐지부(100)는 타겟 ECU를 본 발명의 방법에 따라 제어하도록 하는 명령이 저장된 프로세서를 포함할 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항과 한정된 실시예 및 도면에 의하여 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위하여 제공된 것일 뿐, 본 발명이 상기 실시예에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정과 변경을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.