자동차회사=소프트웨어회사?

지금도 차량 1대에 100개 정도의 ECU와 1억 줄 정도의 코드가 탑재된다. 고가의 차량일수록 탑재된 전장부품의 수가 많고 더 많은 코드를 넣었다고 자랑 아닌 자랑을 하기도 한다. 하지만 통계적으로만 보자면 상업용 소프트웨어는 일반적으로 코드 1,000줄에 7개의 버그를 가지고 있다. 그렇게 보자면 자동차에는 10만 개의 버그가 있다고 가정할 수 있다. 지금도 끊임없이 발생하는 원인을 알 수 없는 온갖 사고들이 이와 무관하지 않을 것이다.

2017-06-15     박지훈

자동차회사 기술자들과 자동차보안 관련 회의를 할 때, 예전에 비해 분위기가 많이 달라졌음을 느낀다. 중공업 특유의 하드함이 접근을 거부하는 높은 벽 같아 왠지 답답했는데, 요즘은 많이 소프트해진 느낌이다. "자동차회사는 소프트웨어 개발사" 선언 전후로 확실히 달라진 것 같으니, 말이라는 것이 사람의 마음에 미치는 영향은 정말 크구나, 새삼 놀란다. 그리고 오늘날 자동차의 기술적 성질을 볼 때 이는 매우 긍정적인 변화라 생각된다.

"자동차 부품에 어떤 보안 기능을 탑재해야 하나?"

실무적으로 보더라도, 보안 기능이 필요한 부품이 있고 아닌 부품이 있다. 크게 자동차 '내부(Internal)' 통신 영역과 '외부(External)' 통신 영역으로 나눠 보자면, 내부통신 영역에 해당하는 부품들은 대체로 특별한 보안 기능을 따로 추가할 필요가 없다. 주로 CAN(Controller Area Network)으로 통신하며 자동차 주행에 관련된 각종 장치들을 제어하는 내부 ECU(Electronic Control Unit)들이 여기에 해당한다. 그것들은 보안 기능 추가가 아니라 외부의 위험으로부터의 '격리'가 필요한 것들이다. 보안 기능은 CCU(Communication Control Unit)를 통해 자동차 외부와 통신하는 영역에 탑재하고 철저하게 관리하는 것이 일반적으로 적절한 설계다. 외부통신과 직접 관계되는 텔레매틱스(Telematics)나 인포테인먼트(Infotainment) 등이 여기에 해당한다.

"커넥티드 카 때문에 모든 부품에 보안 기능을 탑재해야 한다던데?"

간단히 말하자면, 커넥티드 카 보안이란 자동차 내부의 ECU 간의 통신을 외부통신으로부터 격리함으로써 안전하게 지키는 일이다. 즉, 자동차 외부에서 내부 장치를 임의로 조작할 수 없어야 한다는 뜻이다. 그렇기 때문에 커넥티드 카 때문에 "모든" 부품에 보안 기능이 탑재되어야 한다는 말은 별 의미가 없는 말이다. 정확히 분석된 보안적 필요에 따라 꼭 필요한 보안 기능을 꼭 필요한 적재적소에 적절하게 적용하는 일, 즉 안전한 시스템 설계야말로 자동차의 소프트웨어적 무결성을 이루는 올바른 방법이다.

"그렇다면 왜들 그리 보안부품을 사야 한다고 말하는가?"

"커넥티드 카 시대를 대비해 자동차회사는 어떤 일을 해야 하나?"

그리고, 소프트웨어적 무결성에 도전해야 한다. 과거 자동차는 '기계장치'였지만 미래 자동차는 '전자장치'다. 지금도 차량 1대에 100개 정도의 ECU와 1억 줄 정도의 코드가 탑재된다. 고가의 차량일수록 탑재된 전장부품의 수가 많고 더 많은 코드를 넣었다고 자랑 아닌 자랑을 하기도 한다. 하지만 통계적으로만 보자면 상업용 소프트웨어는 일반적으로 코드 1,000줄에 7개의 버그를 가지고 있다. 그렇게 보자면 자동차에는 10만 개의 버그가 있다고 가정할 수 있다. 지금도 끊임없이 발생하는 원인을 알 수 없는 온갖 사고들이 이와 무관하지 않을 것이다. 그러니 소프트웨어 개발사가 그러하듯, 소프트웨어로서의 퀄리티 관리와 프로그램의 동작에는 변화 없이 프로그램 내부의 구조를 개선하는 리팩토링 등 사후 확인 작업을 통해 소프트웨어적 최적화에 집중할 것을 권한다. 그런 일들을 제대로 해내기만 해도 현재 원인 불명의 문제들이 대폭 해소되리라 예상한다.

"자동차회사는 소프트웨어 개발사", 정말 그렇게 되기를 기대하고 응원한다.