SUIT(Software Updates for Internet of Things)는 IoT 기기의 펌웨어 업데이트를 다루는 IETF 워킹그룹이다. RFC 9019는 자원이 제한된 IoT 기기에 맞는 펌웨어 업데이트 메커니즘의 용어와 아키텍처를 정리하고, 펌웨어 업데이트를 기술하고 보호하는 수단으로 전송 방식과 무관한 매니페스트 형식을 표준화할 동기를 제시한다. 이 RFC는 펌웨어 이미지에 대한 메타데이터로, 변조되지 않게 보호되며 작성자에 대한 정보를 주는 것을 매니페스트라 한다.[1]
유래
안전하지 않은 IoT 기기에 대한 우려가 커지자 IAB(Internet Architecture Board)가 Internet of Things Software Update 워크숍(RFC 8240)을 열었고, 이 워크숍은 개발자들이 맞닥뜨린 여러 과제를 드러내며 SUIT 워킹그룹이 만들어지는 계기가 됐다.[1]
기능 요소
펌웨어 업데이트에 관여하는 기능 요소는 아래와 같다.[1]
- Status tracker: 클라이언트와 서버 구성 요소로 이루어지고, 세 가지 일을 한다. 새 펌웨어 버전이 있음을 서버에서 클라이언트로 알리고, 기기의 소프트웨어·하드웨어 특성을 클라이언트에서 서버로 전하고, 서버에서 펌웨어 업데이트를 원격으로 시작한다.
- Firmware consumer: 펌웨어 이미지와 매니페스트를 받는 쪽으로, 받은 매니페스트를 해석하고 검증하며 받은 펌웨어 이미지를 저장한다. 기기에서 업데이트 구성 요소 역할을 하고, 대개 응용 펌웨어 안에서 돈다.
- Firmware server: 펌웨어 이미지와 매니페스트를 저장하고 기기에 배포한다.
- 부트로더: 마이크로컨트롤러가 리셋된 뒤 실행되어, 어떤 코드를 실행할지 정하는 소프트웨어다.[1]
새 펌웨어가 있다는 정보는 클라이언트가 먼저 확인하는 pull, 서버가 알리는 push, 둘을 섞은 방식으로 전해진다.[1]
기기 유형
펌웨어 업데이트 아키텍처와 매니페스트 형식이 감당해야 할 기기는 하드웨어 구성에 따라 아래 다섯 가지로 나뉜다.[1]
- 단일 MCU: 지금 가장 흔한 구성이다. 코드는 대개 플래시에서 바로 실행되고, 코드를 옮겨 실행할 수 없어 펌웨어 이미지가 플래시의 정해진 자리에 있어야 하므로, 업데이트할 때 옛 이미지와 새 이미지를 맞바꿔야 한다.
- secure mode와 normal mode로 나뉜 단일 CPU: 이미지가 대개 secure mode용과 normal mode용 둘이고, 업그레이드는 대개 secure mode의 CPU가 한다. 두 이미지를 따로 업데이트할 수도, 함께 원자적으로 업데이트할 수도 있어야 한다.
- 대칭 다중 CPU: Linux 같은 운영체제와, NAND 플래시나 eMMC 같은 외부 저장 매체를 흔히 쓴다. 자원이 넉넉해 펌웨어 이미지 사본을 여럿 두고 그 가운데 알맞은 것을 골라 부팅할 수 있는 경우가 많고, 업데이트는 대개 제자리에서 하지 않는다.
- 메모리를 공유하는 이중 CPU: 서로 다른 CPU 둘 이상이 플래시와 RAM을 함께 쓰고, 업그레이드는 대개 CPU 하나가 한다.
- 다른 버스로 이은 이중 CPU: 서로 다른 CPU가 저마다 메모리를 갖고, CPU마다 자기 펌웨어를 업그레이드한다. 대개 한 CPU가 다른 CPU의 업그레이드를 지시하고, 두 이미지를 원자적으로 업그레이드하기는 어렵다.[1]
업데이트 전달
펌웨어 이미지와 매니페스트는 묶음으로 보내거나 따로 보낼 수 있고, 매니페스트 형식은 두 방식을 모두 지원해야 한다. 묶음으로 보내면 펌웨어 이미지를 매니페스트 안에 넣는다. 인터넷에 연결되지 않아 펌웨어 서버에 접속할 수 없는 기기나, USB 메모리나 근거리 무선으로 업데이트하는 경우에 알맞다. 따로 보내면 firmware consumer가 매니페스트를 먼저 받고, 매니페스트가 가리키는 펌웨어 이미지를 받는다.[1]
방송으로도 보낼 수 있는 업데이트는 링크 계층, 네트워크 계층, 전송 계층의 보안에 기댈 수 없으므로, 매니페스트와 펌웨어 이미지 자체에 건 보호에 기대야 한다. 또 같은 매니페스트가 그것이 적용되지 않는 기기에도 전달되므로, 엉뚱한 기기가 업데이트를 받아들이지 않게 해야 한다.[1]
보안
펌웨어 이미지의 인증과 무결성 보호는 배포에서 반드시 써야 하고, 기밀성 보호는 선택이다. 업데이트는 본질적으로 인가된 원격 코드 실행이어서, 업데이트 과정의 보안 문제는 곧 그 원격 코드 실행 체계의 보안 문제가 되고, 펌웨어 업데이트 과정을 지키지 못하면 공격자가 기기를 장악하기 쉬워진다.[1]
매니페스트 정보 모델
RFC 9124는 IoT 기기의 펌웨어 업데이트를 지키는 데 매니페스트에 있어야 할 정보 요소를 기술한다. 정보 요소를 인코딩과 직렬화에서 떼어 보이려고 정보 모델로 쓰였고, 요소마다 그 요소가 막는 위협과 바탕이 된 사용자 스토리를 든다. 매니페스트 구조의 버전 식별자와 단조 증가 시퀀스 번호는 매니페스트 형식이 반드시 지원해야 하는 요소다. 버전 식별자는 기기가 쓰이는 매니페스트 데이터 모델의 판을 알게 하고, 시퀀스 번호는 악의적인 행위자가 권한자의 정책을 거슬러 펌웨어 업데이트를 되돌리지 못하게 하는 롤백 방지 요소다.[2]
SUIT 매니페스트의 CBOR(Concise Binary Object Representation) 기반 직렬화 형식은 Internet-Draft draft-ietf-suit-manifest가 다룬다. 2026년 10월 15일에 IETF Datatracker에서 확인한 판은 RFC가 아닌 -37이고, 목표 RFC 상태는 Proposed Standard이며, 문서는 RFC Editor의 발행 대기열(RFC Ed Queue)에 있다.[3]