펌웨어
펌웨어(firmware)는 장치의 하드웨어 제어를 제공하는 컴퓨터 소프트웨어로, 하드웨어와 소프트웨어의 특성을 모두 갖고 있다.
개요[편집]
펌웨어는 대부분의 하드웨어 장비에 내장되어 있고, 장비의 구동 및 제어를 위한 별도의 소프트웨어이다. 장치의 복잡한 소프트웨어를 위한 작동 환경을 제공하고, 더욱 단순한 장치에서는 운영체제의 역할을 한다. 시스템의 효율을 올리기 위해, 소프트웨어 기능을 의도적으로 하드웨어화시킨 것도 있다.[1][2] 소프트웨어를 통해 전달된 정보를 받아들인 하드웨어는 논리회로를 거쳐 사용자가 원하는 형태의 결과물로 표현한다. 시스템의 활용범위가 넓어지고, 소프트웨어에서 전달되는 정보가 많아지면서 하드웨어에 제한된 종류의 논리회로만으로 다양한 상황에 대응하기 어려워졌다. 그래서 컴퓨터 개발자들은 하드웨어 내부의 제어 부분에 저장 공간을 만들어, 논리 회로의 기능을 보강하거나 대신할 수 있는 펌웨어를 넣을 수 있게 했다. 또한, 같은 종류의 하드웨어여도 내부의 펌웨어가 변하면 기능과 성능 및 사용하는 소프트웨어의 종류에 따라서도 달라질 수 있다. 펌웨어는 프로그램의 형태를 갖추고 있으며, 기능적으로는 소프트웨어에 가깝다. 하지만, 하드웨어 내부에 위치하여 사용자가 쉽게 그 내용을 변경할 수없어서 하드웨어적인 특성도 같이 가지고 있다.[3]
특징[편집]
펌웨어는 하드웨어 내부의 롬(ROM)에 저장되었지만, 롬은 저장된 데이터의 수정이 불가능한 메모리이기 때문에 내용을 변경하기 힘들었다. 하지만 저장 데이터의 수정이 가능하고, 전원이 꺼진 후에도 저장된 데이터의 내용이 지워지지 않는 EPROM이나 플래시 메모리가 개발되면서 펌웨어의 수정이 가능해졌다. 하드웨어만으로 구성된 기기에서는 복잡한 과정을 거쳐 기능에 변화를 줘야 하지만, 펌웨어는 전용 장치를 사용하여 프로그램만 수정하면 되기 때문에 간단하고 적은 비용으로 해결할 수 있다. 펌웨어에는 다른 소프트웨어보다 먼저 하드웨어의 기본적인 동작을 제어할 수 있는 기능이 있다. 컴퓨터의 기본적인 입출력 기능을 담당하는 바이오스(Basic Input / Output System, BIOS)는 펌웨어의 일종이고, 컴퓨터 기반의 전자기기나 스마트폰, 산업용 프로그램 등에 쓰인다.[3][4] 펌웨어 개발자는 하드웨어에 내장되어 여러 가지 기능을 구현하는 소프트웨어를 개발하는 직무로, 사용자의 요구 분석을 통해 시스템을 분석하여 새로운 기능의 하드웨어를 설계, 제작, 시험하고 구동할 수 있는 소프트웨어를 개발하여 설치하는 직무이다. 펌웨어 엔지니어는 요구를 분석할 줄 알아야 하고, 하드웨어와 소프트웨어를 설계할 수 있어야 하고, 제작과 테스트, 유지보수 및 업그레이드를 해야 한다. 이 직업의 활동 영역은 자동화, 제어 관련 산업체나 연구소, 마이크로프로세서 응용 업체, 시스템 개발과 유지보수, 임베디드 인터넷 관련 업체 등이 있다.[5]
임베디드[편집]
기계나 기타 제어가 필요한 시스템에 대하여 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로, 장치 내에 존재하는 전자 시스템이다. 전체 장치의 일부분으로 구성되며, 제어가 필요한 시스템을 위한 두뇌 역할을 하는 특정 목적의 컴퓨터 시스템이다. 임베디드와 펌웨어는 둘 다 작은 시스템 내에 하드웨어를 제어하기 위해 EPROM 등에 기록되는 일종의 프로그램이다. 시스템의 복잡화로 인해 기존의 펌웨어를 제작할 때 사용되는 ‘슈퍼루프 방식’은 체계적인 프로그램 설계로 프로그래머를 피곤하게 할 만큼 복잡해졌다. 이에 대한 대안으로 실시간 운영체제(Real Time Operating System, RTOS)가 나왔다. 롬에 기록되는 펌웨어 중에서 실시간 운영체제(RTOS)를 이용한 것을 임베디드라 칭하는 경우가 많다. 실시간 운영체제(RTOS)를 사용하게 되면, 롬에 기록되어야 할 펌웨어의 크기가 커지고, 불필요한 부하인 시스템 오버헤드를 가져다주게 된다. 하지만 펌웨어 개발의 융통성과 안정성, 정확성을 고려할 때, 펌웨어의 크기나 시스템 오버헤드는 충분히 무시할 수 있는 요소가 된다.[6][7]
- 실시간 운영체제(RTOS) : 실시간 응용 프로그램을 위해 개발된 운영체제이다. 운영체제의 기능 중 중앙처리장치(CPU) 시간 관리 부분에 초점을 맞추어 설계되었다.[8] 낮은 우선순위에 있는 작업을 하다가 높은 우선순위에 있는 작업이 등장하면, 높은 우선순위에 있는 작업을 먼저 처리하는 선점형 스케쥴링 시스템을 사용한다. 또한, 결과 산출에 걸리는 시간에 적시성을 가지고 외부 자극에도 예측 가능한 방식으로 반응하고, 모듈화, 선점형 멀티태스킹, 통합 개발 환경 등을 지원한다. 롬(ROM)에 프로세스와 커널을 담아 주소 공간을 공유한다.[9]
부트로더[편집]
운영체제가 작동되기 전에 미리 실행되면서 커널이 올바르게 작동하기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영체제 및 펌웨어를 실행시키기 위한 목적을 가진 프로그램이다.[10] 부트로더(Bootloader)는 가장 먼저 동작해야 하므로 중앙처리장치(CPU)의 리셋 벡터 혹은 롬(ROM)의 시작번지에 저장되어 있다. 또한, 부트로더는 오픈소스 소프트웨어가 많아 활용이 용이하고, 시스템 하드웨어 의존성이 매우 강하고, 프로세서의 구조와 특징, 사용법 및 명령어 사용법에 대한 이해가 필요하며, 크기가 작아야 한다. 중앙처리장치(CPU), 메모리 컨트롤러, 주변장치를 초기화하고, 커널 적재 및 램 디스크 설치를 하며, 커널을 부팅하는 기능을 가지고 있다. 부트로더에는 가장 널리 쓰이고, 다양한 중앙처리장치(CPU)를 지원해주는 유부트(Universal Bootloader, U-boot)와 안드로이드 플랫폼에서 기본적으로 장착된 부트로더인 패스트부트(FastBoot), 레드햇의 실시간 운영체제(RTOS)인 리눅스 eCos의 부트로더로 사용하기 위해 제작된 레드부트(RedBoot)가 있다.[11][12]
활용[편집]
타이탄[편집]
구글이 클라우드 서버에 대한 해킹을 막기 위해 고안한 보안 칩으로, 개별 칩마다 고유의 키를 갖도록 하고, 부팅이 이뤄지기 전에 펌웨어 원본 내용이 해킹됐는지를 모니터링하는 방법을 사용했다. 이 칩은 정부의 지원을 받는 첩보원들이 하드웨어를 중간에 가로채 악성코드가 담긴 펌웨어를 주입하지 못하도록 막는다. 공격자에게 서버가 장악당해 부팅 전 단계에 실행되는 루트킷이 설치되면 백신 등 보안 프로그램이 설치되더라도 무용지물이다. 이런 공격을 막기 위해 타이탄 칩을 개별 서버에 탑재해 클라우드 서비스를 운영할 때 각 서버가 고유의 아이디(ID)를 가질 수 있도록 했다. 이를 통해 하드웨어가 펌웨어를 로딩하기 전에 안전하다는 사실을 확인해 주고, 데이터 센터를 보호하기 위한 암호화 기능을 제공한다. 타이탄은 보안 애플리케이션 프로세서, 하드웨어 기반의 난수 생성, 암호기능 활용을 위한 보조 프로세서, 임베디드 플래시 및 읽기 전용 메모리 블록, 정교한 키 계층 구조의 임베디드 에스램(SRAM) 등으로 구성되어 있다. 타이탄은 중앙처리장치(CPU)와 기타 컴포넌트를 스캔해서 부팅 관련 펌웨어의 모든 바이트(Byte)를 감시한다. 서버가 켜지면 읽기 전용 메모리로부터 코드가 실행되어 펌웨어가 조작됐는지 여부를 확인한다. 타이탄에는 PKI를 사용하여 조작되지 않은 펌웨어가 맞는지 확인하고 로딩하는 암호화 기술도 적용했다. PKI는 호스트 시스템의 펌웨어를 확인하고, 이 과정을 거친 펌웨어는 기기를 설정하고 부트 로더를 실행하여 운영체제를 정상 가동한다. 타이탄은 제조 과정에서 각각의 칩을 위해 유일한 키를 만들어 내며, 안전하게 출처 정보와 레지스트리를 데이터베이스에 저장하는 기술이다. 이 데이터베이스는 암호학적으로 키를 사용하여 보호되고, 오프라인에서 타이탄 인증기관을 통하여 관리되고 있다. 또한, 개별 타이탄 칩은 타이탄 인증기관에 직접 인증서명요청(CSRs)을하여 실제 제조된 칩이 맞는지 확인할 수 있다.[13]
HP 슈어 스타트[편집]
HP 랩(HP Labs) 시스템 보안 연구 및 혁신 담당 최고 기술 책임자인 보리스 발라셰프(Boris Balacheff)가 발달하는 보안 공격에 대응하기 위해서 소프트웨어뿐만 아니라 하드웨어 기반 보안도 중요하다는 연구 결과를 얻었다며, 펌웨어 단계에서 컴퓨터나 프린터의 해킹을 방지하는 HP 슈어 스타트(HP Sure Start) 솔루션이 결과물 중 하나라고 강조했다. 또한, 일반적인 컴퓨터 외에도 프린터와 사물인터넷 기기도 공격의 대상이 되고 있으며, 운영체제와 응용소프트웨어 및 하드웨어를 제어하는 바이오스와 펌웨어도 공격을 받을 수 있다. 바이오스와 펌웨어가 해킹당할 경우에는 운영체제를 다시 설치하거나 하드디스크 드라이브를 교체해도 소용이 없으며, HP 슈어 스타트는 부팅 할 때마다 펌웨어의 건전성을 검증 및 확인하여 피해를 보더라도 이에 대한 복구 및 방어 메커니즘을 갖추고 있다. 프린터는 네트워크에 연결된 컴퓨터와 같아 해커가 이를 공격하여 악성코드를 침투시키고, 다른 네트워크 기기들까지 공격할 수 있다. 또한, 중요한 문서를 받거나 스캔할 수 있으며, 프린터 자체에 중요한 정보를 저장하는 경우도 있다. 이에 펌웨어 해킹을 방지해주는 HP 슈어 스타트 솔루션은 프린터에 저장되는 문서를 암호화하여 프린터 메모리상에서 악성코드의 침입을 탐지한다. 해커의 프린터 공격 방법으로는 출력 명령을 다른 시스템으로 보내거나 프린터에 멋대로 소프트웨어를 설치하는 방법, 프린터에 잘못된 명령을 내리는 등의 방법도 있다.[14]
비교[편집]
- 드라이버
드라이버는 하드디스크와 같은 보조기억장치에 저장되어 해당 장치의 구동을 돕는 소프트웨어로, 하드웨어 장치와 상호 작용하도록 설계되었다. 필수 장치 드라이버가 없으면, 해당 하드웨어 장치는 작동하지 않는다. 장치 드라이버는 하드웨어 장치와 그 장치를 사용하는 프로그램 또는 운영체제 간의 해석기 역할을 수행한다. 펌웨어와 드라이버의 큰 차이점은 펌웨어는 하드디스크와 같은 보조기억장치에 저장되는 것이 아니라, 주기억장치인 롬(ROM)에 저장되어 장치의 구동을 직접 제어한다.[15][16]
- 소프트웨어
펌웨어는 회로를 교체하거나 특수 절차를 통해 프로그래밍을 다시 해야 해서 제거와 변경이 어렵다. 소프트웨어는 업데이트가 펌웨어보다 제거와 변경이 비교적 훨씬 쉽다. 또한, 펌웨어는 제조업체에서 장치에 내장시키지만, 소프트웨어는 사용자가 설치한다. 펌웨어가 장치의 하드웨어를 제어하는 데 도움이 되는 특별한 유형의 소프트웨어지만, 소프트웨어는 특정 작업을 수행하도록 컴퓨터에 지시하는 명령 모음이다.[17][18]
전망[편집]
4차 산업혁명 시대가 오면서 개발자가 인기 직업으로 떠올랐다. 펌웨어 프로그래머는 웹 프로그래머, 게임 프로그래머 등과는 성격이 약간 다른 분야이다. 펌웨어 프로그래머는 특정한 목적을 가진 장치, 장비를 다룬다. 삼성전자㈜나 엘지전자㈜ 등 전자 기업에서 일할 수 있고, 그 외 반도체, 항공기, 로봇 등 제조기업에서 일을 할 수도 있다. 제조 기반 산업에 소프트웨어를 탑재하는 경우가 많아지고, 사물인터넷(IoT) 디바이스의 수요가 많아지고 있으며, 공급보다 수요가 적어 대우는 점점 좋아질 것이다.[19] 또한, 최근 휴대폰 단말기, 자동차, 가전제품 등에 요구되는 다양한 임베디드 운영체제(OS)가 늘어나면서 임베디드 소프트웨어에 대한 수요가 지속해서 늘고 있다. 향후 10년간 임베디드 및 펌웨어 부문을 중심으로 시스템소프트웨어기술자의 고용이 증가할 것으로 전망된다.[20]
각주[편집]
- ↑ simple sihyeon-kim, 〈펌웨어(firmware)란 무엇인가? | 하드웨어를 제어하고 구동하는 운영체제의 일종〉, 《티스토리》, 2019-02-25
- ↑ 〈Firmware 펌웨어〉, 《정보통신기술용어해설》
- ↑ 3.0 3.1 김영우, 〈하드웨어를 제어하는 가장 기본적인 프로그램-펌웨어〉, 《아이티동아》, 2011-01-08
- ↑ 〈펌웨어 이해하기〉, 《티스토리》, 2019-11-04
- ↑ 멍멍이꿀주먹, 〈(펌웨어 엔지니어) 펌웨어 엔지니어란?〉, 《네이버 블로그》, 2015-01-07
- ↑ 〈펌웨어와 임베디드〉, 《티스토리》, 2015-05-29
- ↑ 〈임베디드 시스템〉, 《위키백과》
- ↑ 〈실시간 운영 체제〉, 《위키백과》
- ↑ 잇트루, 〈실시간 운영체제란 무엇인가? (about Real-time OS)〉, 《티스토리》, 2020-07-06
- ↑ 〈부팅〉, 《위키백과》
- ↑ 〈3회 펌웨어 분석 설계〉, 《티스토리》, 2019-12-23
- ↑ 〈펌웨어구현 환경구축 1- 펌웨어란〉, 《티스토리》, 2020-05-06
- ↑ 손경호 기자, 〈구글 개발 보안칩 타이탄...펌웨어 해킹 막는다〉, 《지디넷코리아》, 2017-08-29
- ↑ 김영우 기자, 〈HP "프린터도 해킹하는 시대, 펌웨어 보안부터 강화해야"〉, 《아이티동아》, 2019-01-15
- ↑ 꼬곰이, 〈드라이버 펌웨어 차이점〉, 《티스토리》, 2017-10-24
- ↑ DELL-Young E, 〈드라이버와 펌웨어의 차이〉, 《델테크놀로지》, 2020-06-16
- ↑ 새로운, 〈하드웨어 해킹 - (1) 임베디드 시스템〉, 《네이버 블로그》, 2018-08-03
- ↑ 〈펌웨어와 소프트웨어의 차이점〉, 《STREPHONSAYS》
- ↑ 김민선 기자, 〈개발자 직무별 특징 정리! 처우와 진출분야는?〉, 《코딩월드뉴스》, 2021-01-28
- ↑ 박가열 외 11명, 〈2019 한국직업전망〉, 《한국고용정보원》, 2018-12-31
참고자료[편집]
- simple sihyeon-kim, 〈펌웨어(firmware)란 무엇인가? | 하드웨어를 제어하고 구동하는 운영체제의 일종〉, 《티스토리》, 2019-02-25
- 〈Firmware 펌웨어〉, 《정보통신기술용어해설》
- 김영우, 〈하드웨어를 제어하는 가장 기본적인 프로그램-펌웨어〉, 《아이티동아》, 2011-01-08
- 〈펌웨어 이해하기〉, 《티스토리》, 2019-11-04
- 〈펌웨어와 임베디드〉, 《티스토리》, 2015-05-29
- 〈임베디드 시스템〉, 《위키백과》
- 멍멍이꿀주먹, 〈(펌웨어 엔지니어) 펌웨어 엔지니어란?〉, 《네이버 블로그》, 2015-01-07
- 꼬곰이, 〈드라이버 펌웨어 차이점〉, 《티스토리》, 2017-10-24
- DELL-Young E, 〈드라이버와 펌웨어의 차이〉, 《델테크놀로지》, 2020-06-16
- 새로운, 〈하드웨어 해킹 - (1) 임베디드 시스템〉, 《네이버 블로그》, 2018-08-03
- 〈펌웨어와 소프트웨어의 차이점〉, 《STREPHONSAYS》
- 〈실시간 운영 체제〉, 《위키백과》
- 잇트루, 〈실시간 운영체제란 무엇인가? (about Real-time OS)〉, 《티스토리》, 2020-07-06
- 〈부팅〉, 《위키백과》
- 〈3회 펌웨어 분석 설계〉, 《티스토리》, 2019-12-23
- 〈펌웨어구현 환경구축 1- 펌웨어란〉, 《티스토리》, 2020-05-06
- 손경호 기자, 〈구글 개발 보안칩 타이탄...펌웨어 해킹 막는다〉, 《지디넷코리아》, 2017-08-29
- 김영우 기자, 〈HP “프린터도 해킹하는 시대, 펌웨어 보안부터 강화해야”〉, 《아이티동아》, 2019-01-15
- 김민선 기자, 〈개발자 직무별 특징 정리! 처우와 진출분야는?〉, 《코딩월드뉴스》, 2021-01-28
- 박가열 외 11명, 〈2019 한국직업전망〉, 《한국고용정보원》, 2018-12-31
같이 보기[편집]