임베디드 시스템에서 엔드투엔드 보안이 중요한 이유

임베디드 시스템은 현대 기술의 많은 부분을 뒷받침합니다. 자동차의 어댑티브 크루즈 컨트롤부터 스마트 냉장고의 와이파이까지 그 범위는 매우 넓습니다. 사이버 공격이 증가함에 따라 이러한 시스템을 보호하는 것이 무엇보다 중요해졌습니다.
임베디드 기기는 해킹의 주요 표적이 됩니다. 공격에 성공하면 침입자가 기기에서 생성, 수신 및 처리되는 데이터에 접근할 수 있기 때문입니다. 이는 종종 임베디드 기기가 구동하는 더 큰 시스템에 심각한 결과를 초래할 수 있습니다. 예를 들어, F-15 전투기 내부의 임베디드 기기는 다양한 카메라와 센서로부터 데이터를 수집하는데, 이를 차단하면 전투기의 방어 능력이 크게 저하될 수 있습니다.
이 글은 안전한 임베디드 시스템 개발을 시작하는 데 필요한 모든 내용을 담고 있습니다. 포함된 내용은 다음과 같습니다:
- 임베디드 보안이란 무엇인가?
- 임베디드 보안 구현 시 직면하는 과제.
- 임베디드 시스템을 "안전"하게 만드는 요소는 무엇인가?
- 임베디드 생태계에서 엔드투엔드 보안이 중요한 이유.
- 임베디드 보안 도구.
- 일반적인 임베디드 솔루션의 부족한 점은 무엇인가?
- 임베디드 보안의 미래.
임베디드 보안이란 무엇인가?
임베디드 보안은 임베디드 기기의 소프트웨어와 하드웨어를 보호하기 위한 도구, 프로세스 및 모범 사례를 제공합니다.
임베디드 시스템의 하드웨어 모듈은 크기가 작아 메모리와 저장 공간에 제약이 많습니다. 따라서 보안 조치를 통합하는 것은 매우 어려운 설계 과제가 됩니다. 하지만 어렵더라도 지금 반드시 해결해야 할 필수 과제입니다.
임베디드 기기로 구동되는 많은 가젯과 기계는 인터넷에 연결되어 있습니다. 이는 해커가 무단으로 접근하여 악성 코드를 실행할 수 있음을 의미합니다.
임베디드 기기의 해킹은 종종 연결된 다른 구성 요소로 확산되거나 전체 시스템을 마비시킬 수 있습니다. 예를 들어, 공격자가 자동차의 자동 조종 기능을 제어하는 임베디드 기기에 접근했다고 가정해 봅시다. 해커는 차를 도로 밖으로 몰거나 교통 흐름 속으로 돌진하게 하여 막대한 피해를 입힐 수 있습니다.
주요 임베디드 시스템 보안 과제
임베디드 시스템 보안은 그 중요성에 비해 충분한 관심을 받지 못하고 있습니다. 그 이유는 다음과 같습니다:
- 개발자의 인식 부족:
개발자들은 일반적으로 안전한 임베디드 기기를 개발하기 위한 모범 사례를 잘 알지 못합니다. 이는 부분적으로는 2번 항목 때문이기도 하며, 임베디드 애플리케이션이 기존 소프트웨어 애플리케이션보다 훨씬 복잡하기 때문이기도 합니다. 보안 영향을 이해하고, 제약이 많은 마이크로컴퓨터 환경에서 모든 사용 사례에 대해 안전하고 성능이 뛰어난 코드를 작성하는 것은 매우 어려운 일입니다.
- 표준화 부족:
임베디드 시스템을 위한 사이버 보안 표준이 부족합니다. 자동차 업계가 서서히 변화를 시도하고 있기는 합니다. 지난 몇 년간 연구자들은 스마트 차량의 사이버 보안 고려 사항을 다루는 여러 문서를 발표했습니다. 주목할 만한 몇 가지 예로는 SAE J3061, “사이버-물리 차량 시스템을 위한 사이버 보안 가이드북”과 UNECE WP.29 사이버 보안 및 소프트웨어 업데이트 프로세스 규정이 있습니다.
- 타사 구성 요소 사용
많은 임베디드 장치는 작동을 위해 타사 하드웨어 및 소프트웨어 구성 요소가 필요합니다. 이러한 구성 요소는 보안 결함이나 취약점에 대한 테스트 없이 사용되는 경우가 많습니다.
- 오래된 소프트웨어
오래된 펌웨어는 일반적으로 버그와 악용 가능한 취약점으로 가득 차 있습니다. 소형 임베디드 장치의 펌웨어를 주기적으로 업데이트하는 것은 매우 어려울 수 있지만, 결코 간과해서는 안 될 문제입니다.
- 직접적인 인터넷 연결
많은 임베디드 시스템과 장치가 인터넷에 직접 연결되어 있습니다. 이는 네트워크 공격을 탐지하고 차단할 수 있는 기업용 방화벽의 보호를 받지 못한다는 것을 의미합니다. 리소스가 제한적인 환경에서는 엄격한 수준의 보안을 구현하기가 매우 어렵습니다.
- 대규모 공격
임베디드 장치는 일반적으로 대량 생산됩니다. 즉, 단 하나의 취약점이나 결함이 전 세계 수백만 대의 장치에 영향을 미칠 수 있습니다. 따라서 임베디드 시스템 공격의 영향을 제어하는 것은 매우 큰 도전 과제가 될 수 있습니다.
임베디드 시스템을 안전하게 만드는 요소는 무엇일까요?
다음 섹션에서는 안전한 임베디드 시스템의 소프트웨어 및 하드웨어 특성에 대해 살펴보겠습니다.
하드웨어 보안 모범 사례
안전한 임베디드 시스템은 다음을 갖추고 있습니다:
- 신뢰할 수 있는 실행 환경(TEE)
신뢰할 수 있는 실행 환경(TEE)은 보안이 중요한 작업을 하드웨어 수준에서 격리할 수 있게 해줍니다. 예를 들어, 사용자 인증을 분리된 영역에서 실행함으로써 민감한 정보를 더욱 안전하게 보호할 수 있습니다.
- 적절하게 분할된 하드웨어 리소스
프로세서, 캐시, 메모리, 네트워크 인터페이스 등 다양한 하드웨어 구성 요소는 적절히 분리되어야 하며, 각 기능을 최대한 독립적으로 수행해야 합니다. 이는 한 구성 요소의 오류가 다른 구성 요소로 확산되는 것을 방지하는 데 도움이 됩니다.
- 실행 공간 보호(ESP)
실행 공간 보호(ESP)는 특정 메모리 영역을 실행 불가능으로 표시하는 방식입니다. 누군가 이러한 표시된 영역 내에서 코드를 실행하려고 시도하면 예외가 발생합니다.
소프트웨어 보안 모범 사례
임베디드 소프트웨어를 구축할 때는 다음 모범 사례를 염두에 두어야 합니다:
- 보안 부팅 사용:
임베디드 장치가 부팅될 때, 부팅 이미지는 암호화 알고리즘을 통해 검증됩니다. 이를 통해 부팅 시퀀스가 올바른지, 그리고 소프트웨어(펌웨어 및 기타 관련 데이터)가 변조되지 않았음을 보장합니다.
- 마이크로커널 OS 사용
마이크로커널 OS는 기존 OS보다 훨씬 작으며 기능의 일부만을 포함합니다. 커널 공간은 매우 작고, 파일 시스템 관리 등과 같은 많은 사용자 서비스는 사용자 공간(userspace)이라 불리는 별도의 공간에서 유지됩니다. 커널 공간에서 실행되는 코드와 작업이 적기 때문에 공격 표면이 크게 줄어듭니다.
- 적절하게 패키징된 소프트웨어 애플리케이션 사용
모든 소프트웨어 애플리케이션은 독립적이어야 하며 적절하게 패키징되어야 합니다. 예를 들어, 애플리케이션이 타사 종속성을 필요로 하는 경우, 이를 운영 체제에 전역적으로 설치해서는 안 됩니다. 대신 애플리케이션 패키지나 컨테이너의 일부로 포함되어야 합니다.
- 모든 입력값 검증
외부 또는 신뢰할 수 없는 소스로부터 수신된 모든 데이터는 중요한 소프트웨어 및 하드웨어 구성 요소로 전달되기 전에 적절하게 정제되고 검증되어야 합니다.
애플리케이션이 외부 API 연동을 통해 데이터를 가져와 설정을 변경하는 경우, 설정이 변경되기 전에 수신된 데이터를 엄격하게 검증해야 합니다.
- 저장 데이터 보호:
임베디드 장치에 저장되는 모든 민감한 소프트웨어, 데이터, 구성 파일, 보안 키, 비밀번호 등은 보호되어야 합니다. 이는 일반적으로 암호화를 통해 수행됩니다. 데이터를 암호화하는 데 사용되는 개인 키는 전용 보안 하드웨어에 저장해야 합니다.
보안 피라미드 -- 임베디드 시스템을 위한 엔드투엔드 보안
보안을 나중에 고려하던 시대는 지났습니다. 보안은 이제 비기능적 요구사항이 아닙니다. 오늘날 보안은 본질적인 요소가 되어야 합니다. 장치는 설계 단계부터 보안이 고려되어야 합니다. 이를 위해 임베디드 환경에서 엔드투엔드 보안 요구사항을 구현하는 것이 필수적입니다. 즉, 하드웨어 선택, 시스템 아키텍처 정의, 시스템 설계, 그리고 코드 작성 단계 전반에 걸쳐 보안을 고려해야 합니다.
하드웨어부터 시작하기
소프트웨어 보안이 아무리 강력하더라도 하드웨어가 취약하면 공격에 노출될 수밖에 없습니다. 온칩 보안 기술은 보안 부팅을 가능하게 하며, 암호화 기능과 비밀 정보를 효율적으로 관리할 수 있게 합니다. 일부 하드웨어 구성 요소는 운영 체제가 시스템 호출 이상 탐지, 파일 시스템 암호화, 접근 제어 정책과 같은 다양한 보안 기능을 제공하도록 지원할 수도 있습니다.
결함 허용 시스템
결함 허용 시스템을 설계해야 하는 이유는 많으며, 차분 오류 분석 공격을 방지하는 것은 그중 하나일 뿐입니다. 이러한 공격에서 해커는 오류 주입 기술을 사용하여 임베디드 장치에 오류를 발생시키려 할 수 있습니다. 하지만 이러한 결함을 탐지하고 방어할 수 있는 몇 가지 방법이 있습니다:
- 가장 중요한 작업을 복제하여 언제든지 서로 다른 출력값을 비교함으로써 결함 주입을 탐지합니다.
- 기본값으로 실패 처리: 여러 조건을 처리할 때(If 조건문이나 switch 블록 내에서), 일치하는 항목이 없는 기본 케이스에서는 항상 실패하도록 설정합니다.
- 무작위 동작 도입: 중요한 작업 전에 짧고 무작위적인 지연 시간을 추가하여 실행 타이밍을 예측할 수 없게 만듭니다. 이는 해커가 작업 패턴을 파악하거나 타이밍 공격을 수행하기 매우 어렵게 만들기 때문에 침입 탐지의 핵심입니다.
- 보호 쉴드: 제조업체는 가장 중요한 구성 요소를 쉴드로 덮어 외부 조작으로부터 보호해야 합니다.
- 비정상적인 변동 탐지: 전압, 전류 또는 기타 값의 비정상적인 변동을 감지하고 그에 따라 예외를 발생시킵니다.
애플리케이션 및 운영 체제 보안 강화
애플리케이션 수준에서 장치의 방어 체계를 구축하는 방법은 다음과 같습니다:
- 정기적으로 업데이트할 수 있는 검증되고 평판 좋은 타사 소프트웨어 및 하드웨어 구성 요소를 선택합니다.
- 임베디드 시스템 보안 모범 사례에 대해 개발자의 역량을 강화합니다.
- 마이크로커널 운영 체제를 사용하여 커널 공간에서 실행되는 작업 수를 최소화합니다.
- 바이러스, 트로이 목마, 악성 코드 등 소프트웨어 공격을 모니터링하고 방어합니다.
- 불필요한 모든 서비스를 제거합니다. 펌웨어에는 반드시 필요한 기능만 포함되어야 합니다. 예를 들어, 파일 전송이나 패킷 캡처가 필요 없다면 파일 전송 프로토콜이나 텔넷과 같은 네트워크 패키지를 비활성화할 수 있습니다.
- SFTP, IPsec, SSL, TLS, SSH, DNSSEC와 같은 보안 프로토콜을 사용합니다.
임베디드 시스템 보안 도구
임베디드 시스템 보안에 도움이 되는 도구들을 정리했습니다.
- Bus blaster: 하드웨어 디버그 포트와 상호작용할 수 있는 고속 디버깅 플랫폼입니다.
- Salae: Serial, SPI, I2C 등 다양한 프로토콜을 디코딩합니다. 커뮤니티에서 제작한 프로토콜 분석기를 사용하거나 직접 구축할 수 있습니다.
- Hydrabus: 임베디드 하드웨어의 디버깅, 해킹, 모의 해킹에 사용할 수 있는 오픈 소스 멀티 도구입니다.
- Exploit: 사물인터넷(IoT) 보안 테스트 및 공격을 위한 오픈 소스 프레임워크입니다.
- FACT (펌웨어 분석 및 비교 도구): 펌웨어 보안 분석을 자동화하는 프레임워크입니다.
- Routersploit: 임베디드 장치를 위한 오픈 소스 공격 프레임워크입니다.
- Firmadyne: 리눅스 기반 임베디드 펌웨어의 에뮬레이션 및 동적 분석을 위한 오픈 소스 시스템입니다.
현대 임베디드 보안 솔루션의 부족한 점은 무엇일까요?
임베디드 솔루션의 디버깅, 공격, 모의 해킹을 위한 다양한 도구가 존재하지만, 실제 활용도는 높지 않습니다. 물리적 보안에는 큰 비중을 두는 반면, 소프트웨어 관련 공격을 방어하려는 노력은 부족합니다. 가장 간단하고 충분히 예방 가능한 애플리케이션 보안 위험조차 현대 임베디드 장치에서 흔히 발견됩니다.
가장 큰 이유는 개발자들의 임베디드 보안 인식 부족입니다.Tripwire의 설문조사에 따르면, IT 전문가의 68%가 현업 종사자들이 잠재적 취약점을 충분히 인지하지 못하고 있다고 답했습니다.
개발자들은 보안 프로토콜 선택, 피해야 할 프레임워크, 하드웨어 구성 요소 분리, 민감 데이터 처리, 가장 안전한 암호화 알고리즘 결정 방법 등을 잘 알지 못합니다. 이러한 전반적인 지식 부족과 모범 사례에 대한 무관심은 임베디드 장치에서 실행되는 애플리케이션을 위협에 노출시킵니다.
임베디드 보안의 미래
임베디드 보안 시장은 활발히 성장 중입니다. 전문가들은 이 시장의 연평균 성장률(CAGR)이 2021~2026년 기간 동안 5.5%에 이를 것으로 전망합니다. IoT 장치가 계속 출시됨에 따라 새로운 임베디드 보안 표준이 정립될 것으로 기대됩니다.
웨어러블 의료 기기의 도입이 증가함에 따라 신뢰할 수 있는 임베디드 보안 솔루션에 대한 수요도 늘어날 것입니다. 민감한 의료 데이터를 처리하는 장치는 특정 보안 체크리스트를 통과해야 하며, 이를 통해 공급업체와 엔지니어들이 보안에 더 집중하게 될 것입니다.
앞으로는 임베디드 장치의 주요 소프트웨어 및 하드웨어 구성 요소를 원격으로 가시화하고 모니터링하며 제어할 수 있는 솔루션이 등장할 것입니다. 이는 임베디드 시스템 보안 분야의 판도를 완전히 바꿀 것입니다.
결국 디지털 서명, 데이터 암호화, 방화벽, 액세스 제어, 작업 무작위화만으로는 한계가 있습니다. 진정으로 안전한 장치를 구축하려면 개발자가 안전한 코드를 작성하도록 교육받아야 합니다. 애플리케이션 설계 단계에서 잠재적 보안 위험을 식별하고 완화하는 것이 시스템을 본질적으로 안전하게 만드는 핵심입니다.
Secure Code Warrior의 지원 방법
Secure Code Warrior의 주력 제품인 학습 플랫폼에는 개발자가 안전한 C/C++ 코드를 작성하도록 훈련할 수 있는 수많은 대화형 챌린지, 과정 및 평가가 포함되어 있습니다. 플랫폼의 콘텐츠는 프레임워크별로 구성되어 있으며 참여도가 매우 높습니다. 당사의 C/C++:Embed 코딩 챌린지는 MISRA C, AUTOSAR C++(MISRA C++), IEC에서 영감을 받았습니다.
개발자는 개인화된 학습 여정을 시작하여 C/C++ 관련 취약점을 식별하고, 더 나아가 해당 버그를 수정하는 방법을 배울 수 있습니다. 이 과정에서 개발자는 자신의 진행 상황을 추적하여 약점을 파악하고, 동료들과 친선 코딩 경쟁을 즐길 수도 있습니다. 당사의 솔루션이 자동차 및 운송 산업을 어떻게 지원하는지 자세히 알아보십시오.
저희 챌린지가 얼마나 인터랙티브하고 임베디드 중심적인지 궁금하신가요? C/C++:Embed 챌린지를 지금 바로 학습 플랫폼에서 경험해 보세요!
배포 전 AI 기반 개발 거버넌스 확보
AI 기반 위험을 측정하고, 커밋 시점에 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 소프트웨어 제공 속도를 높이세요.
더 많은 블로그 살펴보기
보안 코딩, AI 거버넌스, 소프트웨어 리스크 관리에 관한 전문가 콘텐츠를 확인해 보세요.
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
배포 전 AI 기반 개발 보안 확보
소프트웨어 개발 수명 주기 전반에서 개발자 리스크를 파악하고, 정책을 시행하며, 취약점을 예방하세요.



.avif)