안녕하세요, 코딩 푸는 남자 입니다.
 
현업에서 일하다 보면, 미처 준비되지 못한 요구사항을 받아서 구현을 해야 하는 일이 종종 발생 합니다.
 
이번에 Secure On CAN 을 요구하는 고객이 있었는데, 현재 가지고 있는 Autosar Solution에서는 해당 Stack을 지원 하지 않았습니다.
 
부랴부랴 Autosar Spec을 읽어가면서 이른바 날코딩으로 구현해야 했었습니다.

 
새로운 스펙에 대한 날코딩이란, 두려운 존재이기도 하지만, 끝나고 나면 많은 것을 배울수 있는 양날의 검인것 같습니다.
 
이제부터 틈틈히, 날코딩하면서 배운 Secure On CAN에 대한 이야기를 풀어 보려고 합니다.
 
오늘은 Secure On CAN에 대해 들어가기에 앞어, 전반적인 사전 지식을 설명해 보고자 합니다.
 
1. CRC
우선 Secure CAN을 알기 전에, CRC를 먼저 간단히 알아 보겠습니다.
혹시 CAN Message의 CRC Field를 들어 보셨나요?
 
이해를 돕기 위해 Bob이 CAN Message ID 0x100에 다음과 같이 전송 했다고 가정해 보겠습니다.

총 Data의 길이는 7 Byte이며, 이중 Data0는 CRC 필드로, Data1 ~ Data6를 기반으로 CRC 계산한 결과를 채워 놨습니다.
이해를 돕기 위해 계산 결과가 0xAF라고 가정해 봅니다.
 
자, 이제 머나먼 먼곳에서 Alice가 다음과 같이 데이터를 받았다고 가정해 봅시다.

Alice는 전송받은 Data0(Recv CRC)와 전송받은 Data1 ~ Data6을 이용하여, 계산한 CRC(Calculate CRC)를 비교하여,
이 둘값이 일치하는지 확인 합니다.
일치하는 경우, 모든 Data가 깨지지 않고 수신 되었다고 판단 할수 있겠죠?
 
만약에 안타깝게도, Data3에 변조가 발생 했다고 가정해 봅시다.

그럼 Bob이 계산해서 보내준 Data0(0xAF) 와 Alice가 Data1 ~ Data6을 통해 계산한 CRC가 일치하지 않겠죠?
 
정리해 보면, 다음과 같습니다.
Recv CRC == Calculate CRC인 경우, Data가 변조 없이 수신 되었다고 판단 가능
Recv CRC != Calculate CRC인 경우, 어느 Data인지는 모르지만, 어디선가 변조가 발생 했다고 판단 가능
 
따라서 CRC를 데이터의 무결성 검증 방법이라 하여, Integrity Check라고 합니다.
 
이전까지는 이정도로 충분 했습니다. 보통 CRC 알고리즘을 좀더 복잡하게 추가하는 방식으로 발전해 나갔습니다.
 
하지만, Cyber 보안이 중요해 지면서, 한가지 중요한 질문이 생겨났습니다.
 
 
다시 Alice가 변조 없이 받은 상황으로 돌아가 보겠습니다.

Alice가 변조 없이 Bob에게 데이터를 받았다고 기뻐하고 있는데, 누가 옆에서 질문을 합니다.
 
 

"근데, 이 데이터가 Bob이 보낸건지 어떻게 보증해?"

 
지금까지 우리는 데이터가 변조가 있었는지에만 초점을 맞추느라, 변조 없이 온 저 데이터가 진짜 Bob에게서 온건지,
전문 낚시꾼에게서 온 가짜 데이터인지 고민하지 않았습니다.
 
어느날 아들에게 카톡이 왔습니다.
"아빠. 나 전화가 안되는데, 급한거야. 빨리 돈 5천억 좀 보내줘!!"

 
전 이렇게 답장을 보냅니다.
"아들아... 세상사는 다 순서가 있단다. 내게 아들이 생기려면 최소한 연얘라는건 해봐야지 않겠니?"
 
 
2. C-MAC의 등장
SecOC는 이런 배경에서 등장 했습니다. 
SecOC 기술이 도입 되면서, 이제 Data Field에 CRC를 제외하고, C-MAC Field가 하나 더 추가 합니다.
 
여기서 MAC은 Message Authentification Code의 약자로, 한국말로, 짜임을 증하기 위한 질(진본성) 이라 합니다.
 
자, 이제 Bob은 Data를 한개 더 사용해서 데이터를 보낸사람이 진짜 Bob 본인임을 나타내기 위한 일종의 싸인을 추가해서 같이 보내게 됩니다.

데이터를 수신 받은 Alice는 이 싸인을 뜯어 보면서 진짜 Bob이 보낸건지, 전문 낚시꾼의 소행인지 면밀히 살펴 봅니다.
 
아... 물론 Integrity Check를 위한 CRC는 계속 해 줘야 합니다.
 
계속...

'CyberSecurity > SecureOnCAN' 카테고리의 다른 글

6. Recv Secure Message  (1) 2023.12.17
5. Send Secure Message  (0) 2023.12.15
4. Freshness Value - Secure Message Sender Side  (1) 2023.12.08
3. Sync Message  (1) 2023.12.07
2. SecOC의 등장 인물  (1) 2023.12.03

+ Recent posts