Skip to main content

보안코딩 (Secure Coding)

지난 21년 3월 미국의 전기차 기업인 테슬라에서 사내 CCTV가 해킹 당해 회사 내부의 모습이 노출되는 사건이 있었습니다(출처: https://zrr.kr/NTh9). 또 송유관 운영회사 콜로니얼 파이프라인이 랜섬웨어 공격으로 시스템이 마비되어, 미 북동부의 수많은 자동차가 연료를 공급받지 못해 혼란에 빠지는 사태가 발생하기도 했습니다(출처: https://zrr.kr/wPaE). 두 사건 모두 해킹으로 벌어진 일입니다. 해킹 사고는 주로 소프트웨어(Software) 보안취약점을 공격 경로로 이용합니다. 소프트웨어 보안취약점이란 소프트웨어 개발 시 결함이 될 수 있는 논리적인 오류나 버그, 실수 등 코딩 오류로 인해 취약점으로 발생할 수 있는 근본 원인을 말합니다. 소프트웨어에 보안 취약점이 존재하고 그로 인해 정보가 노출된다면 해커는 해당 정보를 이용해 시스템을 공격하려고 시도할 수 있습니다. 해커의 공격을 개발자는 어떻게 방지할 수 있을까요? 해커의 공격을 방지하기 위해 ‘보안코딩(Secure Cording)’이 필요합니다.

해킹에 대비하기 위한 자동차 산업에서 사이버보안 트랜드와 보안코딩 규칙에 대해서 2회에 걸쳐 기술 레터를 발행하고자 합니다.

1. 차량 사이버보안 트렌드

정보통신 기술(ICT)은 융합으로 이루어지는 4차 산업혁명, 인공지능, 클라우드 및 빅데이터 등의 기술을 바탕으로 변화를 거듭하고 있으며, 이 중 자동차 산업은 차량 시스템 및 전기/전자 아키텍처 구조의 변화가 필요한 통신 장비를 통한 차량 내/외부 모듈간 연결성(Connectivity), 고성능 반도체와 SW 기술을 기반으로 한 자율주행(Autonomous), 차량 이용 방식의 변화를 가져온 차량 공유(Shared), 내연기관 부품의 전동화(Electric)를 통한 변화의 중심에 있습니다. 현재 자동차 산업은 배출가스, 연비 및 온실가스 규제 등 환경 규제와 EV 보급을 위한 지원금/세제 혜택 확대 등으로 자동차 산업은 빠른 속도로 내연기관에서 친환경 자동차로 패러다임이 바뀌고 있습니다. 그리고 카메라, 레이다 및 라이다 등 센서의 입력을 기반으로 주행 전략을 결정하거나, 경로를 생성하고, 차량내 시스템을 제어하는 자율주행 기술과 통신 모듈을 통해 외부 시스템과 연결하는 등 정밀제어 기술이 필요한 자동차로 전환하고 있고, 이 과정에서 자동차에 필요한 핵심 기술은 자량용 반도체와 임베디드 소프트웨어 기술이라고 할 수 있을 것이다.

이 다양한 기술요소 중 연결성(Connectivity)을 강화할 수 있었던 원동력은 스마트폰과 사물인터넷(IoT: Internet Of Things)으로 우리의 생활에 많은 영향을 미치고 있습니다. 통신망으로 모든 것이 하나로 연결된 초연결사회 속에서 커넥티드카(Connected Car)는 자동차의 기술 요소들인 구동제어, 안전운행 통제, 주행관리 등 자동차 본연의 핵심기술과 융합하여 새로운 비즈니스 모델이 구축되고 있습니다. 지난 2020년 삼정KPMG 경제연구원은 전 세계 커넥티드카의 출하량이 전년도 대비 32% 증가할 것으로 예상했으며, MarketsandMarkets가 발표한 ‘세계 커넥티드카 시장 예측’ 보고서에서 세계 커넥티드카 시장이 2017년~2025년 CAGR(Compounded Annual Growth Rate) 기준으로 14.8%로 성장하고 2025년 2,192억1천만 달러에 이를 것으로 전망하였다. (출처: MarketsandMarkets,2020)

점점 증가하는 커넥티드카의 차량 통신장비를 통한 내/외부 연결성은 편의성만 제공하지 않고, 보안위협이라는 양날의 검으로 작용하며 차량 보안에 영향을 미치고 있습니다. 2015년 이전까지 평균 12건에 불과했던 차량 관련 보안 사고는 불과 6년 사이에 485건으로 40배 이상 증가했고, 신규 취약점은 2019년 24개에서 2021년 139개까지 6배가량 증가해 그 심각성이 드러났으며(출처: Upstream), 이와 같이 차량에 요구하는 기술과 기능의 복잡도가 증가함에 따라 해킹의 위협도 함께 증가하고 있습니다. (출처: 보안뉴스, https://zrr.kr/jJC9)

  • 2010년 텍사스 주 내비게이션 해킹 후 엔진, 경적 마비
  • 2012년 07월 BMW, 자동차 OBD를 통한 Smart key 해킹/복제 차량 절도
  • 2014년 07월 Tesla Model-S, 스마트폰 제어 프로그램 해킹 후 차량 무선통신 접속 가능
  • 2015년 07월 Jeep Cherokee, 차량 IP주소 해킹 후 차량 모든 기능 원격 조정
  • 2017년 현대차, 블루링크 애플리케이션 해킹 후 사용자 정보 탈취/원격 조정
  • 2022년 1월 Tesla All Model, Wifi 결함 활용 차량 원격 해킹

2. 보안코딩 이란?

먼저, 보안코딩(Secure Coding)의 뜻부터 알고 가야 합니다.

보안코딩은 SW 신뢰성과 보안성을 높이기 위해 제어기 개발단계에서 적용될 수 있는 개발자가 준수해야 하는 코딩 작업이 핵심 대상이 되는 구현기법으로 해킹 등 사이버 공격의 원인인 보안취약점을 제거해 안전한 소프트웨어를 개발하는 개발 기법을 말합니다. 개발자의 실수나 논리적 오류로 인해 발생할 수 있는 문제점을 사전에 차단하여 소프트웨어에 내포될 수 있는 보안취약점(vulnerability)을 배제하여 대응하고자 하는 것으로, 차량 정보 보호가 자동차 소프트웨어 개발의 중요한 주제로 떠오르는 지금 보안코딩은 선택이 아닌 필수가 되었습니다. 하지만, 개발자가 취약점을 모두 고려해 코드를 구현하기는 쉽지 않는 일이고, 어떤 규칙에 따라 코드를 구현하면 되는지에 대한 기준이 필요하게 되었습니다. 국내에서는 2012년 12월부터 행정안전부에 의해 정보시스템 개발 및 유지보수 시 SW보안 약점 점검 및 제거를 위해, 입력데이터 검증 및 표현, 보안기능, 에러처리 및 코드오류 등 50개의 소프트웨어 보안 약점을 대비할 수 있는 보안코딩에 대한 법규가 제정, 시행되었으며, 기준을 제시하고 있습니다. (출처: 행정안전부고시 제2021-3호, 2021.1.19.)  

그리고, 차량의 전자 제어장치를 통한 내/외부 통신 모듈과 연결이 증가하면서 차량 해킹으로 불법제어, 프라이버시 침해 뿐만 아니라 최악의 경우 사망에 이르는 인명사고로 직접 이어질 수 있어 차량 사이버보안 위협에 대한 대응 방안을 강구하기 위해 자동차 소프트웨어 보안코딩 가이드 및 기준 확보가 필요하게 되었고, 차량 해킹에 안전한 소프트웨어 개발을 위하여 유럽경제위원회(UNECE)는 국제 자동차 사이버보안 표준을 2020년 6월 발표하였다. 이에 따라 국토교통부는 국제 표준을 따라 국내 자동차 산업이 자유롭게 수출·입할 수 있는 해킹 등 사이버 위협에 안전한 자동차를 제작할 수 있는 국내 기준을 마련하기 위해 ‘자동차 사이버 보안 가이드라인’을 2020년 12월에 발표하였습니다.

3. 사이버보안 국제 표준에서 보안코딩

3.1 UNECE 사이버보안 규정

유럽 회원국간 경제적 통합과 협력을 촉진하고 지속 가능한 발전과 경제적 번영을 촉구하는 유럽경제위원회(UNECE)내 자동차부문에 적용되는 기술을 규정하는 차량 국제 기준 포럼(WP.29)의 자율주행 안전 및 보안, ADAS 등 관련 규정을 제정하는 실무 그룹(GRVA)에서 ‘사이버 보안’ 규제 제정을 주도하고 있습니다. 유럽경제위원회(UNECE)는 국제 자동차 사이버보안 관련 연구를 2015년부터 개발하기 시작하여, 2018년 9월 사이버보안 기준안을 제시하고, 2020년 6월 UNECE가 사이버보안 승인 관련 규정을 채택하였고, 2021년 1월 UNECE CS 법규가 발효되었습니다. 2022년 7월부터 UNECE 산하 56개 국가에 등록되는 신규 생산 차종의 제작업체(OEM)뿐 아니라 부품 공급 업체(Tier)는 사이버보안 대응에 필요한 개발/설계, 생산 및 생산이후 사이버보안 관리 체계 (CSMS, Cybersecurity Management System)를 적절히 갖추었음을 입증하는 프로세스 인증과 차종별 보안관련 위험평가, 위험처리, 위험관리, 보안조치 및 검증시험 방법에 대한 기준을 준수하고 있음을 입증하는 차량 형식 승인(VTA, Vehicle Type Approval) 인증을 인증기관에 제출해야 합니다. 추가적으로 기존 등록 차량도 2024년 7월 이후 대응이 필요합니다. 국내에서는 국토교통부에서 2020년 12월 자동차 사이버보안 가이드라인을 발간했으며, 관련 법규 및 안전기준을 제정한 후 단계적으로 시행하기 위해 추진중에 있습니다.

총 12개 챕터와 5개의 부록으로 구성되어 있으며, 이 중 챕터 7은 개발, 양산 및 양산 이후까지 보안 관련 데이터를 안전한 공간에 유지해야 하는 사이버보안 관리체계(CSMS)에 대한 요구사항과 자동차 형식에 대한 요구사항 및 보고 조항에 대해서 규정하고 있지만, 보안코딩과 같이 구현과 관련된 규정까지는 정의하고 있지 않습니다. 참고로 UNECE WP.29는 CSMS 관련 세부 활동 수립 시 참고 가능한 국제 표준으로 ISO/SAE 21434 표준을 참고할 것을 권장하고 있습니다.

3.2 ISO/SAE 21434에서 보안코딩

차량의 전자 제어장치를 통한 통신 모듈과 연결가능성(Connectivity) 확장에 따른 외부 공격 가능성이 증가하고 있으며, 모든 보안 중심 시스템(Security critical system)이 안전 중심 시스템(Safety critical system)은 아니기 때문에, 기존의 기능안전 표준(ISO-26262)을 사이버보안 영역에 적용하는데 제한이 있어, 자동차에 적합한 사이버보안 용어, 보안 목표 수립 및 자동차 사이버보안 평가에 필요한 사이버보안 프로세스와 최소한의 요구사항에 대해 정의한 차량 사이버보안 국제표준(ISO/SAE 21434)이 2020년 제정하게 되었습니다.

ISO/SAE 21434는 총 15개의 챕터로 구성되어 있으며, 차량 산업의 생명주기에서 발생할 수 있는 사이버 공격과 해킹으로 발생하는 피해를 감소시키기 위한 대응 체제를 구축하고 운영하기 위한 활동을 정의하는 위험 관리 프로세스에 대한 국제 표준입니다.

[ISO/SAE 21434의 제품개발 단계]

15개의 챕터 중 제품 개발 단계에서 사이버 보안 사양을 정의하고 사이버 보안 요구 사항을 구현 및 확인 활동에 대해 정의한 10장 제품 개발(Product Development)에서 소프트웨어의 안전한 설계 및 코딩을 위해 프로그램의 올바른 실행순서, 인터페이스 일관성, 데이터/제어흐름의 정확성, 단순성, 가독성, 이해성 및 검증 등 구현 및 검증 관련 8개(RQ-10-01~08)의 요구사항을 정의하고 있다. 이 요구사항 중 2개 요구사항(RQ-10-04, RQ-10-05)은 보안코딩 구현에 관련된 내용으로 아래와 같습니다.

[RQ-10-04] 사이버 보안 사양 또는 구현을 위해 설계, 모델링 또는 프로그래밍 표기법 또는 언어가 사용되는 경우 이러한 표기법 또는 언어를 선택할 때 다음 사항을 고려해야 합니다.

  1.  구문과 의미 모두에서 모호하지 않고 이해하기 쉬운 정의
  2.  모듈성, 추상화 및 캡슐화 달성 지원
  3.  구조화된 구성의 사용에 대한 지원
  4.  안전한 설계 및 구현 기술의 사용 지원
  5.  이미 존재하는 구성요소를 통합하는 능력; 그리고
     예 3 다른 언어로 작성된 라이브러리, 프레임워크, 소프트웨어 구성요소.
  6. 부적절한 사용으로 인한 취약성에 대한 언어의 탄력성.

[RQ-10-05] 언어 자체로 해결되지 않는 사이버 보안을 위한 적절한 설계, 모델링 또는 프로그래밍 언어에 대한 기준([RQ-10-04] 참조)은 설계, 모델링 및 코딩 지침 또는 개발 환경을 고려해야 합니다.

  •  예 5 “C” 프로그래밍 언어의 보안 코딩을 위해 MISRA C:2012 또는 CERT C 사용.
  •  예 6 적절한 디자인, 모델링 및 프로그래밍 언어에 대한 기준:
    • 언어 하위 집합의 사용
    • 강력한 타이핑의 시행; 및/또는
    • 방어적 구현 기술의 사용.

그리고, 보안코딩에 대한 산출물은 [WP-10-03]에 정의하고 있습니다.

[WP-10-03] [RQ-10-04] 및 [RQ-10-05]에 따른 모델링, 설계 또는 프로그래밍 언어 및 코딩 지침(해당되는 경우)에 대한 문서

ISO/SAE 21434는 보안코딩을 어떻게 수행해야 한다는 구체적인 방안보다는 사이버보안 관점에서 자동차 사이버보안 프로세스 및 사이버보안 평가에 필요한 표준 또는 모범사례가 되는 도구 활용이나 대표적인 분석 방안인 MISAR-C:2012와 CERT-C 준수를 최소한의 요구사항으로 제안하고 있습니다.

3.3 Automotive SPICE® for Cybersecurity에서 보안코딩

Automotive SPICE® 표준은 소프트웨어 개발 프로세스의 평가 및 개선을 위한 프레임워크를 제공하고 자동차에 장착하기 위해 생산된 전기/전자기기의 소프트웨어 품질에 요구되는 표준을 충족하는지 확인하기 위해 요구 사항 관리에서 소프트웨어 테스트 및 유지 관리에 이르는 전체 소프트웨어 개발 수명 주기를 다루며 조직 차원에서 소프트웨어 개발 프로세스를 효율적이고 효과적으로 수행할 수 있도록 제시하고 있습니다.

전 장에서 설명했듯이, UNECE R.155는 인증된 사이버 보안 관리 시스템(CSMS) 및 향후 형식 승인의 운영을 요구하고 있으며, 유럽연합(EU)은 2022년 7월부터 새로운 차량의 유형 승인을 위해 규정 적용을 의무화하고, 2024년 7월 이후에는 UNECE 대상국 및 협약국에 판매되는 모든 신규 등록 차량까지 확장할 계획입니다. 이와 같이, 차량의 사이버보안에 대한 중요성이 강조되고 있는 시대 변화에 따라, 사이버보안 관련 프로세스 모델을 Automotive SPICE® 범위에 포함하는 것을 VDA QMC는 고려하게 되었고, 기존 32개 프로세스 모델(PAM 3.1기준)에 사이버보안 관련 6개의 프로세스 모델을 추가하여 2021년 7월 Process Reference and Assessment Model of Cybersecurity Engineering Version 1.0을 정의하고 배포하였습니다.

[Automotive SPICE®의 사이버보안 엔지니어링 프로세스 범위]

새롭게 추가된 6개의 프로세스 모델 중 SEC.2 Cybersecurity Implementation 모델은 사이버보안 아키텍처 설계, 상세 설계 및 소프트웨어 구현에 대해 정의하고 있으며, 사이버보안 요구사항, 아키텍처 및 상세설계간 일관성 확보에 대해 기술하고 있습니다. SEC.2에서 기술하는 10개의 BP (Base Practice) 중 보안코딩 구현(SEC2.BP7)과 관련하여 아래 표처럼 기술하고 있습니다.

SEC.2.BP7: 소프트웨어 유닛을 개발한다. 적절한 모델링 또는 프로그래밍 언어를 사용하여 소프트웨어를 구현합니다. [OUTCOME 6]

  • 참고 6: 사이버 보안을 위한 적절한 모델링 및 프로그래밍 언어에 대한 기준에는 언어 하위 집합 사용, 강력한 타이핑 시행 및/또는 방어적 구현 기술 사용이 포함될 수 있습니다.
  • 참고 7: 위에 정의된 기준을 다루는 예는 코딩 지침 또는 적절한 개발 환경을 사용하는 것일 수 있습니다.

Automotive SPICE® for Cybersecurity는 ISO/SAE 21434 표준과 같이 보안코딩에 대한 가이드나 기준 또는 어떻게 검증해야 한다 라는 구체적인 방안보다는 프로세스 관점에서 사이버보안 소프트웨어 개발 프로세스를 평가하고 개선하기 위한 기준과 사이버보안 프로세스 수립에 필요한 산출물을 제시하고 있습니다.

결론

자동차 사이버보안에 관한 국제표준이 채택되고, 발효되면서 사이버보안 관리를 위한 조직의 구성부터 사이버 보안 관리 체계 및 차량형식 승인까지 대비해야 할 영역은 광범위하고 다양해졌고, 자동차 제조사(OEM)뿐만 아니라 부품공급사(Tier)까지 CSMS의 전반적인 이해와 보안코딩 규칙에 대한 선정 및 적용이 기초적이고 필수적인 요구사항이 되었습니다. 코딩 규칙의 종류와 세부적인 보안 코딩 규칙에 대해서는 후속기사에서 다룰 예정입니다.

참고 문헌

  • 자동차사이버보안 가이드라인 (국토교통부, 2020-12)
  • ISO/SAE FDIS 21434:2021 Road Vehicles – Cybersecurity engineering
  • UNECE WP.29 UN Regulation No.155 Cyber Security Management System, 22 Jan. 2021
  • Automotive SPICE® Process Reference and Assessment Model for Cybersecurity Engineering Version 1.0