티스토리 뷰

자동차

자동차 네트워크 보안 1편

알 수 없는 사용자 2021. 9. 26. 20:17

 

자동차 내부 네트워크를 보안하기 위한 방법으로 알맞은 것은 어떠한 방법들이 있을까 그리고 그러한 방법들을 활용하는 방안으로는 어떤 것이 있는지 찾아보는 시간을 가져보고자 하며 많은 방법들이 취약점을 가지고 있었고 그래서 우리는 기존 방법보다 키의 기밀성을 높이고 성능을 향상하기 위해 각 ECU가 주기적으로 동일한 키를 생성하여 공유하기 위한 프로세스를 제시할 것이며 들어가기에 앞서 우리는 ECU가 비 휘발성 메모리인 EEPROM과 휘발성 메모리인 레지스터를 가지고 있다고 가정한다.

Photo by Anastase Maragos on Unsplash

여러가지 네트워크 보안 기초

 

우리가 제안하는 동적 키 생성 알고리즘은 같은 순서로 작동하며 설명하기에 앞서 우리가 정의한 용어들에 관해 알려주는 시간을 가져보겠으며 첫 번째로 Critical Cluster란 내가 공격자로부터 지키고 싶은 ECU들과 그것과 관련된 ECU들의 집합을 말하며 두 번째로 Primary Message라는 개념이 있는데 이것은 Critical Cluster들에 속한 ECU들끼리 주고받는 메시지 중 특정한 메시지들을 말하며 마지막으로 히스토리 큐란 Primary Message의 Message 내역을 저장하는 큐를 말하며 이 큐의 사이즈에 따라 보안성과 성능 사이에서 조절이 가능하며 전처리 전 처리란 시스템이 시작하기 전에 처리해야 하는 일로써 우리 시스템에서는 크게 세 가지 전처리 과정이 존재하며 Critical Cluster 선택 및 Primary Message 선택 Critical Cluster를 선택하기 위해서는 공격자로부터 보호하고 싶은 ECU 들을 선정해야 하며 각 ECU들을 선택한 다음 그 ECU들이 많이 사용하는 메시지들을 살펴본다.

 

 

살펴본 메시지들 중 Primary Message를 선정할 수 있다. 그 메시지 중 N개를 Primary Message로 선정하고 그 메시지들이 키를 만드는 시드가 되게 되며 키를 만드는 시드이자 Critical Cluster에 가장 많은 영향을 주는 Primary Message를 고른 다음 Critical Cluster에는 포함되어 있지 않지만 Primary Message들을 처리하는 다른 ECU들도 Critical Cluster에 포함시켜야 하며 왜냐하면 그 ECU들이 중요한 메시지인 Primary Message를 처리하기 때문에 보호해주는 것이며 또한 Critical Cluster에는 포함되어 있지만 Primary Message를 송 수신하지 않는 ECU가 존재할 수 있다. 그러한 ECU들은 키를 생성하기 위해 Primary Message를 주고받아야 하기 때문에 강제로 Primary Message를 송 수신하도록 만들어 주며 Critical Cluster와 Primary Message를 선정할 때 생각해야 할 부분이 있다.

 

 

만약 Primary Message의 수를 많이 선정한다면 키가 자주 바뀌게될 것이며 키가 자주 바뀐다는 것은 보안성은 높아지지만 성능은 낮아질 수 있다는 뜻이며 이러한 작업들은 도메인이나 작업 목적에 따라 달라질 수 있기 때문에 Critical Cluster와 Primary Message의 선정 작업은 관리자에게 맡긴다.

 

 

히스토리 큐 사이즈 선택 앞에서 Critical Cluster와 Primary Message를 선정했다면 이번엔 비휘발성 메모리에 있는 히스토리 큐에 대한 크기를 정해야 하며 이 크기는 메시지가 얼마나 쌓이면 키를 새로 생성할 것인지에 대한 것이며 만약 히스토리 큐에 대한 크기를 크게 한다면 키는 천천히 바뀌게 되며 하지만 평균적인 메시지 처리 속도는 증가할 것이며 반대로 히스토리 큐 크기를 작게 한다면 키가 자주 바뀌어 보안성이 높아지게 되는 것이라는 말이며 이러한 방법을 통해서 보안이 계속해서 높아진다는 말을 다시 한번 강조하고 싶다.

 

 

하지만 성능측면에서 크기가 큰 것보다는 떨어질 것이며 이러한 트레이드오프를 잘 생각하여 히스토리 큐 크기를 정해야 할 것이며 키 생성 과정 간 비 휘발성 메모리 내역 확인 처음 시스템을 작동시킬 때 각 ECU들이 같은 내역을 가지고 있어야 하며 이를 위해 해시 함수를 이용하여 각 비 휘발성 메모리의 내역들을 확인하며 이러한 시스템 작동 시 각 내역과 키를 해시함수를 통해 해시한 뒤 해시 값들을 비교하며 모두 같은 해시 값을 가지고 있다면 다시금 원래대로 돌아와 모든 것을 확인하고 그 안에 들어있는 레지스터에 비 휘발성 메모리에 있는 내역들을 옮기고 시스템이 시작되게 되며 키를 이용한 송 수신과 메시지 처리 각 ECU는 메시지를 처리하기 위해 보내는 쪽은 메시지를 보내기 위하여 키로 암호화하여 보내게 되며 이때 MAC(Message Authentication Code)을 사용하여 모든 메시지의 변조를 찾아내며 또한 메시지를 보낼 때 이전 메시지를 함께 첨부하여 내가 보낸 메시지가 다시 사용될 수 있다는 것을 다시 한번 강조하고 싶다.

 

 

결국 재사용 공격에 대해 대비하며 수신 측은 메시지를 수신한다면 가지고 있는 키를 사용하여 메시지의 유효성을 판단하고 이전 메시지가 올바른지도 체크하게 되며 이전 메시지와 메시지가 올바르다고 판단되면 각 ECU의 레지스터에 있는 히스토리 큐에 암호화된 메시지를 넣고 메시지를 처리하게 되며 이러한 과정을 거치면서 메시지를 처리하게 되는데 만약 메시지를 처리하던 중 히스토리 큐가 특정 시점에 도달하게 된다면 키를 동적으로 재 생성하게 되며 진행하게 되는 것이다.

 

 

※참조 문헌 : 자동차 내부 네트워크 보안을 위한(이우승 2017)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함