KR102386614B1 - IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법 - Google Patents

IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법 Download PDF

Info

Publication number
KR102386614B1
KR102386614B1 KR1020200183947A KR20200183947A KR102386614B1 KR 102386614 B1 KR102386614 B1 KR 102386614B1 KR 1020200183947 A KR1020200183947 A KR 1020200183947A KR 20200183947 A KR20200183947 A KR 20200183947A KR 102386614 B1 KR102386614 B1 KR 102386614B1
Authority
KR
South Korea
Prior art keywords
metadata
firmware
valid
firmware image
update
Prior art date
Application number
KR1020200183947A
Other languages
English (en)
Inventor
지성연
Original Assignee
유비벨록스(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 유비벨록스(주) filed Critical 유비벨록스(주)
Priority to KR1020200183947A priority Critical patent/KR102386614B1/ko
Application granted granted Critical
Publication of KR102386614B1 publication Critical patent/KR102386614B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16YINFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
    • G16Y30/00IoT infrastructure
    • G16Y30/10Security thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Stored Programmes (AREA)

Abstract

부트로더 및 펌웨어 업데이트 모듈이 저장된 제1메모리부와 복수의 펌웨어 이미지가 저장된 제2메모리부를 구비하는 MCU, 및 상기 MCU와 인터페이스를 통해 통신하고 해쉬 알고리즘을 통하여 데이터의 해쉬값을 계산하며 복수의 메타데이터를 저장하는 보안요소를 포함하는 IoT 디바이스; 상기 IoT 디바이스와 네트워크로 연결되는 서버; 및 업데이트 펌웨어 이미지와 상기 업데이트 펌웨어 이미지를 상기 해쉬 알고리즘을 이용하여 생성한 제1해쉬값을 포함하는 업데이트 메타데이터를 상기 서버에 전송하는 관리자 단말기;를 포함하고, 상기 펌웨어 업데이트 모듈은 상기 서버로부터 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 서버로부터 전송받아 상기 업데이트 펌웨어 이미지는 상기 제2메모리부에 저장하고, 상기 보안요소로 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 전송하고, 상기 보안요소는 상기 보안요소로부터 전달받은 상기 업데이트 펌웨어 이미지에 대해 상기 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값과 상기 제2해쉬값을 비교하여 서로 일치하는 경우에만 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하고, 상기 부트로더는 상기 제2메모리부에 저장된 복수의 펌웨어 이미지 중 상기 유효 메타데이터에 대응되는 어느 하나의 펌웨어 이미지를 유효 펌웨어 이미지로서 인식하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법을 제공하여, 유효하지 않은 펌웨어 이미지를 확실하게 걸러낼 수 있어 해킹등에 의해 펌웨어 이미지가 변형되거나 유효하지 않은 펌웨어로 IoT 디바이스의 펌웨어가 업데이트되고 이에 의해 기동되는 것을 방지할 수 있다.

Description

IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법{IoT Device Firmware Update System, IoT Device Firmware Update Method, and IoT Device Booting Method}
본 발명은 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법에 관한 것으로, 보다 상세하게는 해킹 위험을 최소화할 수 있도록 보안이 강화된 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법에 관한 것이다.
사물인터넷(Internet of Things, IoT)이란 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술, 즉 인터넷을 이용하여 각종 사물인터넷(IoT) 기기들을 연결하는 기술을 의미한다.
여기서 사물인터넷(IoT) 기기란 가전제품, 모바일 장비, 웨어러블 디바이스 등 다양한 임베디드 시스템이 될 수 있다. 이때에, 사물인터넷에 연결되는 사물인터넷 기기들은 자신을 구별할 수 있는 아이피를 가지고 인터넷으로 연결되어야 되는데, 이러한 모든 사물인터넷 기기들이 바이러스와 해킹의 대상이 될 수 있어 보안에 대한 요구사항이 증가하고 있는 실정이다.
한편, 이러한 사물인터넷(IoT) 기기는 펌웨어(Firmware) 구동을 통하여 기능을 수행하게 되는데, 이러한 펌웨어(Firmware)는 지속적으로 업데이트될 필요성이 있다.
이와 같이, 펌웨어(Firmware)를 업데이트 하기 위해서는 네트워크를 통하여 업데이트된 펌웨어를 사물인터넷(IoT) 기기에 전송하여야 하는데, 이 과정에서 해킹 등 보안문제가 발생할 수 있다는 문제점이 있다.
본 발명은 상술한 문제점을 해결하기 위한 것으로, 해킹 위험을 최소화할 수 있도록 보안이 강화된 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법을 제공하는 것을 그 목적으로 한다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템은, 부트로더 및 펌웨어 업데이트 모듈이 저장된 제1메모리부와 복수의 펌웨어 이미지가 저장된 제2메모리부를 구비하는 MCU, 및 상기 MCU와 인터페이스를 통해 통신하고 해쉬 알고리즘을 통하여 데이터의 해쉬값을 계산하며 복수의 메타데이터를 저장하는 보안요소를 포함하는 IoT 디바이스; 상기 IoT 디바이스와 네트워크로 연결되는 서버; 및 업데이트 펌웨어 이미지와 상기 업데이트 펌웨어 이미지를 상기 해쉬 알고리즘을 이용하여 생성한 제1해쉬값을 포함하는 업데이트 메타데이터를 상기 서버에 전송하는 관리자 단말기;를 포함하고, 상기 펌웨어 업데이트 모듈은 상기 서버로부터 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 서버로부터 전송받아 상기 업데이트 펌웨어 이미지는 상기 제2메모리부에 저장하고, 상기 보안요소로 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 전송하고, 상기 보안요소는 상기 보안요소로부터 전달받은 상기 업데이트 펌웨어 이미지에 대해 상기 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값과 상기 제2해쉬값을 비교하여 서로 일치하는 경우에만 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하고, 상기 부트로더는 상기 제2메모리부에 저장된 복수의 펌웨어 이미지 중 상기 유효 메타데이터에 대응되는 어느 하나의 펌웨어 이미지를 유효 펌웨어 이미지로서 인식할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 업데이트 메타데이터는 상기 관리자 단말기에 저장된 제1키에 의해 전자서명된 것이고, 상기 보안요소는 제2키로 상기 업데이트 메타데이터의 서명을 검증하여, 유효한 경우에만 상기 업데이트 메타데이터를 유효 메타데이터로서 저장할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 제1키와 상기 제2키는 대칭키일 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 제1키는 개인키이고, 상기 제2키는 공개키일 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 업데이트 메타데이터는 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 포함하고, 상기 보안요소는 상기 업데이트 메타데이터에 포함된 상기 펌웨어 이미지의 배포자, 버전, 생성일에 대한 정보가 유효한 경우에만 상기 업데이트 메타데이터를 유효 메타데이터로서 저장할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 제2메모리부는, 어느 하나의 펌웨어 이미지를 저장하는 제1펌웨어영역과 다른 하나의 펌웨어 이미지를 저장하는 제2펌웨어영역으로 구분되고, 상기 제1,2펌웨어영역중 어느 하나에는 유효 펌웨어 이미지를 저장하고 있으며, 상기 펌웨어 업데이트 모듈은, 상기 제1,2펌웨어영역 중 기존의 유효 펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어영역에 상기 업데이트 펌웨어 이미지를 저장하고, 상기 보안요소는, 어느 하나의 메타데이터를 저장하는 제1메타데이터영역과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역으로 구분되고, 상기 제1,2메타데이터영역에 각각 저장된 메타데이터에 포함된 버전을 비교하여 최신 버전이 어느 하나의 메타데이터를 유효 메타데이터로 인식하며, 상기 제1,2메타데이터영역 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 저장할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 제2메모리부는, 어느 하나의 펌웨어 이미지를 저장하는 제1펌웨어영역과 다른 하나의 펌웨어 이미지를 저장하는 제2펌웨어영역으로 구분되고, 상기 제1,2펌웨어영역중 어느 하나에는 유효 펌웨어 이미지를 저장하고 있으며, 상기 펌웨어 업데이트 모듈은, 상기 제1,2펌웨어영역 중 기존의 유효 펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어영역에 상기 업데이트 펌웨어 이미지를 저장하고, 상기 보안요소는, 어느 하나의 메타데이터를 저장하는 제1메타데이터영역과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역으로 구분되고, 상기 제1,2메타데이터영역 중 어느 하나에는 유효 메타데이터를 저장하고 있으며, 상기 제1,2메타데이터영역 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 새로운 유효 메타데이터로서 저장하고, 기존의 유효 메타데이터는 무효 메타데이터로 전환할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 펌웨어 업데이트 모듈은, 상기 업데이트 메타데이터가 유효 메타데이터로서 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로 인식하고, 기존의 유효 펌웨어 이미지는 무효 펌웨어 이미지로 전환할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 IoT 디바이스에 전원이 인가되면, 상기 부트로더는 상기 유효 펌웨어 이미지를 보안요소에 전달하고, 상기 보안요소는 상기 유효 펌웨어 이미지에 대해 상기 해쉬 알고리즘으로 계산한 제3해쉬값과 상기 유효 메타데이터에 포함된 상기 제1해쉬값을 비교하여 일치여부를 상기 부트로더에 전달하고, 상기 부트로더는 상기 제3해쉬값과 상기 제1해쉬값이 일치하지 않으면 부팅을 중단할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 부트로더는 상기 업데이트 메타데이터가 유효 메타데이터로서 상기 보안요소에 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로서 인식하고, 상기 유효 펌웨어 이미지를 통하여 재부팅을 진행할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템에서, 상기 제1메모리부는 ROM(Read Only Memory) 또는 TrustZone으로 구비될 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법은, IoT 디바이스의 펌웨어 이미지를 업데이트하기 위한 업데이트 펌웨어 이미지를 생성하는 업데이트 펌웨어 이미지 생성단계; 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제1해쉬값을 생성하고, 상기 제1해쉬값을 포함하는 업데이트 메타데이터를 생성하는 업데이트 메타데이터 생성단계; IoT 디바이스가 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 다운로드받아, 상기 업데이트 펌웨어 이미지는 상기 IoT 디바이스의 MCU에 구비된 제2메모리부에 저장하고, 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 IoT 디바이스의 보안요소에 전송하는 펌웨어 다운로드 단계; 상기 보안요소가 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인하여 상기 업데이트 펌웨어 이미지를 검증하는 펌웨어 검증단계; 상기 펌웨어 검증단계에서 상기 업데이트 펌웨어 이미지가 유효한 것으로 검증되면, 상기 업데이트 메타데이터를 유효 메타데이터로서 상기 보안요소에 저장하는 유효 메타데이터 저장단계; 및 상기 업데이트 메타데이터가 유효 메타데이터로서 저장되면 상기 IoT 디바이스를 재부팅하는 재부팅단계;를 포함하고, 상기 업데이트 메타데이터 생성단계와 상기 펌웨어 검증단계에서 사용된 해쉬 알고리즘은 동일할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 업데이트 메타데이터는 상기 업데이트 메타데이터 생성단계에서, 제1키에 의해 전자서명되고, 상기 펌웨어 검증단계는, 상기 보안요소가 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인하여 상기 업데이트 펌웨어 이미지를 검증하는 제1검증단계; 및 상기 제1키와 대칭키 혹은 비대칭키 관계로 키쌍을 이루는 제2키를 통하여 상기 업데이트 메타데이터의 서명을 검증하는 제2검증단계;를 포함할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 제1키와 상기 제2키는 대칭키일 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서,상기 제1키는 개인키이고, 상기 제2키는 공개키일 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 업데이트 메타데이터는 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 포함하고, 상기 펌웨어 검증단계는, 상기 보안요소가 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인하여 상기 업데이트 펌웨어 이미지를 검증하는 제1검증단계; 및 상기 업데이트 메타데이터에 포함된 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 통하여 상기 업데이트 메타데이터의 유효성을 검증하는 제3검증단계;를 포함할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 펌웨어 다운로드 단계는, 상기 IoT 디바이스에 구비된 펌웨어 업데이트 모듈이 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 전송받아, 상기 업데이트 펌웨어 이미지는 상기 IoT 디바이스의 MCU에 구비된 제2메모리부에 저장하고, 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 IoT 디바이스의 보안요소에 전송하는 단계이고, 상기 제2메모리부는, 어느 하나의 펌웨어 이미지를 저장하는 제1펌웨어영역과 다른 하나의 펌웨어 이미지를 저장하는 제2펌웨어영역으로 구분되고, 상기 제1,2펌웨어영역중 어느 하나에는 유효 펌웨어 이미지를 저장하고 있으며, 상기 펌웨어 다운로드 단계는, 상기 제1,2펌웨어영역 중 기존의 유효 펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어영역에 상기 업데이트 펌웨어 이미지를 저장하는 단계이고, 상기 보안요소는, 어느 하나의 메타데이터를 저장하는 제1메타데이터영역과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역으로 구분되고, 상기 제1,2메타데이터영역 중 어느 하나에는 유효 메타데이터를 저장하고 있으며, 상기 유효 메타데이터 저장단계는, 상기 제1,2메타데이터영역 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 새로운 유효 메타데이터로서 저장하고, 기존의 유효 메타데이터는 무효 메타데이터로 전환할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 유효 메타데이터 저장단계는, 상기 업데이트 메타데이터가 유효 메타데이터로서 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로 인식하고, 기존의 유효 펌웨어 이미지는 무효 펌웨어 이미지로 전환하는 단계일 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 재부팅 단계는, 상기 IoT 디바이스에 공급되는 전원을 일시 차단한 후 다시 상기 IoT 디바이스에 전원을 인가하는 전원인가 단계; 상기 IoT 디바이스에 구비된 보안요소가 유효 메타데이터를 확인하고, 상기 IoT 디바이스에 구비되는 MCU에 저장되어 있는 부트로더가 상기 MCU에 저장된 펌웨어 이미지들 중 상기 유효 메타데이터에 대응되는 펌웨어 이미지를 유효 펌웨어 이미지로 확인하는 유효 펌웨어 이미지 확인단계; 상기 보안요소가 상기 유효 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제3해쉬값을 산출하고, 상기 유효 메타데이터에 포함된 상기 제1해쉬값과 상기 제3해쉬값을 비교하여 상기 유효 펌웨어 이미지의 무결성을 검증하는 유효 펌웨어 무결성 검증단계; 및 상기 유효 펌웨어 무결성 검증단계에서 상기 유효 펌웨어 이미지의 무결성이 검증되면, 상기 유효 펌웨어 이미지를 가동하는 펌웨어 가동단계;를 포함하고, 상기 제1해쉬값 및 상기 제3해쉬값을 산출하는데 사용된 해쉬 알고리즘은 서로 동일할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 MCU는 제1메모리부를 구비하고, 상기 펌웨어 다운로드 단계는 상기 제1메모리부에 저장되는 펌웨어 업데이트 모듈에 의해 수행되며, 상기 제1메모리부는 ROM(Read Only Memory) 또는 TrustZone으로 구비될 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 방법에서, 상기 재부팅 단계는, 상기 유효 메타데이터 저장단계에서 상기 업데이트 메타데이터가 유효 메타데이터로서 상기 보안요소에 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로서 인식하고, 상기 유효 펌웨어 이미지를 통하여 재부팅을 진행하는 단계일 수 있다.
본 발명에 의한 IoT 디바이스 부팅방법은, IoT 디바이스에 전원을 인가하는 전원인가 단계; 상기 IoT 디바이스에 구비된 보안요소가 유효 메타데이터를 확인하고, 상기 IoT 디바이스에 구비되는 MCU에 저장되어 있는 부트로더가 상기 MCU에 저장된 펌웨어 이미지들 중 상기 유효 메타데이터에 대응되는 펌웨어 이미지를 유효 펌웨어 이미지로 확인하는 유효 펌웨어 이미지 확인단계; 상기 보안요소가 상기 유효 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제3해쉬값을 산출하고, 상기 유효 메타데이터에 포함된 상기 제1해쉬값과 상기 제3해쉬값을 비교하여 상기 유효 펌웨어 이미지의 무결성을 검증하는 유효 펌웨어 무결성 검증단계; 및 상기 유효 펌웨어 무결성 검증단계에서 상기 유효 펌웨어 이미지의 무결성이 검증되면, 상기 유효 펌웨어 이미지를 가동하는 펌웨어 가동단계;를 포함하고, 상기 제1해쉬값 및 상기 제3해쉬값을 산출하는데 사용된 해쉬 알고리즘은 서로 동일할 수 있다.
본 발명에 의한 IoT 디바이스 부팅방법은, 상기 유효 펌웨어 무결성 검증 단계에서 상기 제1해쉬값과 상기 제3해쉬값이 일치하지 않으면, 부팅을 중단할 수 있다.
본 발명에 의한 IoT 디바이스 부팅방법에서, 상기 부트로더는 상기 MCU에 구비되는 제1메모리부에 저장되고, 상기 제1메모리부는 ROM(Read Only Memory) 또는 TrustZone으로 구비될 수 있다.
본 발명에 의한 IoT 디바이스 부팅방법에서, 상기 MCU와 상기 보안요소는 I2C, SPI, ISO7816 중 선택되는 어느 하나의 인터페이스에 의해 상호 통신할 수 있다.
본 발명에 의한 IoT 디바이스 부팅방법은, 상기 유효 펌웨어 이미지 확인단계에서, 상기 보안요소에는 복수의 메타데이터가 저장되어 있고, 상기 보안요소는 상기 복수의 메타데이터 중 최신버전의 메타데이터를 유효 메타데이터로 인식하여 확인할 수 있다.
본 발명에 의한 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법), 및 IoT 디바이스 부팅방법에 의하면, 유효하지 않은 펌웨어 이미지를 확실하게 걸러낼 수 있어 해킹등에 의해 펌웨어 이미지가 변형되거나 유효하지 않은 펌웨어로 IoT 디바이스의 펌웨어가 업데이트 되고 이에 의해 기동되는 것을 방지할 수 있다.
도 1은 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 시스템의 개념도.
도 2는 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 방법의 순서도.
도 3은 본 발명의 일 실시예에 의한 IoT 디바이스 부팅방법의 순서도.
이하에서는 도면을 참조하여 본 발명의 구체적인 실시예를 상세하게 설명한다. 다만, 본 발명의 사상은 제시되는 실시예에 제한되지 아니하고, 본 발명의 사상을 이해하는 당업자는 동일한 사상의 범위 내에서 다른 구성요소를 추가, 변경, 삭제 등을 통하여, 퇴보적인 다른 발명이나 본 발명의 사상의 범위 내에 포함되는 다른 실시예를 용이하게 제안할 수 있을 것이나, 이 또한 본원 발명 사상의 범위 내에 포함된다고 할 것이다.
또한, 실시예의 도면에 나타나는 동일한 사상의 범위 내의 기능이 동일한 구성요소는 동일한 참조부호를 사용하여 설명한다.
도 1은 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 시스템(1000)의 개념도이다.
도 1을 참조하면, 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 시스템(1000)은, IoT 디바이스(100), 상기 IoT 디바이스(100)와 네트워크로 연결되는 서버(200), 및 업데이트 펌웨어 이미지를 생성하여 상기 서버(2000)를 통해 상기 IoT 디바이스(100)에 상기 업데이트 펌웨어 이미지가 전송되도록 하는 관리자 단말기(300)를 포함할 수 있다.
IoT 디바이스(100)는 MCU(Mcro Controller Unit, 110) 및 보안요소(Security Element; SE, 120)를 구비할 수 있다.
여기에서 상기 MCU(110)는 제1메모리부(111)와 제2메모리부(112)를 구비할 수 있으며, 상기 제1메모리부(111)는 한번 기록한 데이터는 다시 기록할 수 없고, 전원이 끊어져도 정보가 없어지지 않는 불휘발성 기억장치인 ROM(Read Only Memory) 또는, 기밀성(confidentiality)과 완벽보안영역(integrity protection)을 보장할 수 있는 TrustZone으로 구비될 수 있고, 상기 제2메모리부(112)는 플래시(Flash) 메모리로 구비될 수 있다.
여기에서, 상기 제1메모리부(111)에는 부트로더(111a)와 펌웨어 업데이트 모듈(111b)이 저장될 수 있으며, 상기 제2메모리부(112)에는 복수의 펌웨어 이미지를 저장할 수 있다.
상기 부트로더(111a)는 보안 부트(Secure Boot)를 위한 소프트웨어일 수 있으며, 상기 펌웨어 업데이트 모듈(111b)는 펌웨어(Firmware) 업데이트(Update)를 수행하기 위한 소프트웨어일 수 있다.
한편, 상기 제2메모리부(112)에는 두개의 펌웨어 이미지가 저장될 수 있으며, 이를 위해 상기 제2메모리부(112)는 어느 하나의 펌웨어 이미지를 저장하는 제1펌웨어영역(112a)과 다른 하나의 펌웨어 이미지를 저장하는 제2펌웨어영역(112b)으로 구분될 수 있다.
다시 말해서, 상기 제1,2펌웨어영역(112a, 112b)에 각각 하나씩의 펌웨어 이미지가 저장될 수 있다.
이때에, 상기 제1,2펌웨어영역(112a, 112b)에 저장된 펌웨어 이미지 중 어느 하나의 펌웨어 이미지가 부트에 사용되는 유효 펌웨어 이미지일 수 있다.
즉, 상기 부트로더(111a)는 상기 제1,2펌웨어영역(122a, 112b)에 저장된 펌웨어 이미지들 중 유효 펌웨어 이미지를 로딩할 수 있다.
보안요소(SE, 120)는 인터페이스(Interface)에 의해 상기 MCU(110)와 통신할 수 있는데, 예를 들어, 상기 인터페이스는 I2C, SPI, ISO7816 등에 의해 마련될 수 있다.
또한, 보안요소(120)는 해쉬 알고리즘에 의한 해쉬값 계산을 수행할 수 있으며, 후술하는 복수의 메타데이터를 저장할 수 있다.
예를 들어, 상기 보안요소(120)는 두개의 메타데이터를 저장할 수 있으며, 이를 위하여, 어느 하나의 메타데이터를 저장하는 제1메타데이터영역(120a)과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역(120b)로 구분될 수 있다.
이때에, 상기 보안요소(120)는 상기 제1,2메타데이터영역(120a, 120b) 중 어느 하나에 저장된 메타데이터를 유효 메타데이터로서 인식할 수 있다.
예를 들어, 상기 보안요소(120)는 상기 제1,2메타데이터영역(120a, 120b)에 각각 저장된 메타데이터에 포함된 버전을 비교하여 이들 중 최신버전인 어느 하나의 메타데이터를 유효 메타데이터로 인식할 수 있다.
서버(200)는 상기 IoT 디바이스(100)와 네트워크로 연결될 수 있으며, 상기 관리자 단말기(300)으로부터 전송받는 업데이트 펌웨어 이미지와 업데이트 메타데이터를 상기 IoT 디바이스(100)로 전송할 수 있다.
관리자 단말기(300)는 업데이트 펌웨어 이미지를 생성할 수 있으며, 생성된 상기 업데이트 펌웨어 이미지를 상기 서버(200)로 전송할 수 있다.
또한, 상기 관리자 단말기(300)는 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제1해쉬값을 생성할 수 있다.
이에 더하여, 상기 관리자 단말기(300)는 상기 제1해쉬값, 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 포함하는 업데이트 메타데이터를 생성할 수 있다.
한편, 상기 관리자 단말기(300)는 제1키를 저장하고 있으며, 상기 보안요소(120)는 제2키를 저장하고 있을 수 있다.
여기에서, 상기 제1키와 상기 제2키는 상호 대칭키이거나 비대칭키일 수 있다.
다시 말해서, 상기 제1키와 상기 제2키가 대칭키 관계인 경우에는 상기 제1키와 상기 제2키가 동일할 수 있으며, 상기 제1키와 상기 제2키가 비대칭키 관계인 경우에는 상기 제1키는 개인키(Private Key)이고, 상기 제2키는 공개키(Private Key)인 키쌍일 수 있다.
이에 따라, 상기 업데이트 메타데이터는 상기 관리자 단말기(300)에 저장된 제1키에 의해 전자서명된 것일 수 있다.
즉, 상기 관리자 단말기(300)는 상기 업데이트 펌웨어 이미지와 상기 제1키에 의해 전자서명된 상기 업데이트 메타데이터를 상기 서버(200)로 전송할 수 있다.
한편, 상기 서버(200)는 상기 관리자 단말기(300)로부터 상기 업데이트 펌웨어 및 상기 업데이트 메타데이터를 전송받아 저장할 수 있다.
이때에, 상기 펌웨어 업데이트 모듈(111b)은 상기 서버(200)로부터 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 서버로부터 전송받을 수 있다.
여기에서, 상기 펌웨어 업데이트 모듈(111b)는 전송받은 상기 업데이트 펌웨어 이미지를 상기 제2메모리부(112)에 저장하되, 상기 제1,2펌웨어영역(112a, 112b) 중 유효 펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어영역에 상기 업데이트 펌웨어 이미지를 저장할 수 있다.
다시 말해서, 상기 제1펌웨어영역(112a)에 유효 펌웨어 이미지가 저장되어 있으면, 상기 펌웨어 업데이트 모듈(111b)는 상기 업데이트 펌웨어 이미지를 상기 제2펌웨어영역(112b)에 저장할 수 있으며, 상기 제2펌웨어영역(112b)에 유효 펌웨어 이미지가 저장되어 있으면, 상기 펌웨어 업데이트 모듈(111b)는 상기 업데이트 펌웨어 이미지를 상기 제1펌웨어영역(112a)에 저장할 수 있다.
또한, 상기 펌웨어 업데이트 모듈(111b)는 전송받은 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 보안요소(120)에 전송할 수 있다.
이때에, 상기 보안요소(120)는 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성할 수 있는데, 이때에 사용되는 해쉬 알고리즘은 상기 관리자 단말기가 상기 제1해쉬값을 생성하는데 사용한 해쉬 알고리즘과 동일한 해쉬 알고리즘일 수 있다.
이후, 상기 보안요소(120)는 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인할 수 있다.
여기에서 상기 제1해쉬값과 상기 제2해쉬값이 일치하지 않으면, 상기 업데이트 펌웨어 이미지가 상기 관리자 단말기(300)로부터 상기 서버(200)를 거쳐 상기 IoT 디바이스(100)로 전송되는 과정에서 해킹 등에 의한 변화가 있었다는 것으로, 상기 제1해쉬값과 상기 제2해쉬값의 일치여부를 통해 상기 업데이트 펌웨어 이미지의 유효성을 검증할 수 있다.
또한, 상기 보안요소(120)는 상술한 바와 같이 상기 제1키와 대칭키 혹은 비대칭키 관계로 키쌍을 이루는 제2키를 저장하고 있을 수 있는데, 상기 보안요소(120)는 상기 제2키를 통하여 상기 업데이트 메타데이터의 전자서명을 검증하여, 상기 업데이트 메타데이터의 유효성을 검증할 수 있다.
부연하면, 상기 제1키와 상기 제2키는 동일한 것으로 대칭키 관계일 수도 있으며, 상기 제1키는 개인키(Private Key)이고 상기 제2키는 공개키(Public Key)로 구성된 비대칭키 관계일 수도 있다.
아울러, 상기 보안요소(120)는 상기 업데이트 메타데이터에 포함된 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 통하여 상기 업데이트 메타데이터의 유효성을 검증할 수 있다.
보다 상세히 설명하면, 상기 업데이트 메타데이터에 포함된 상기 업데이트 펌웨어 이미지의 배포자가 상이하거나, 상기 업데이트 펌웨어 이미지의 버전이 상기 보안요소(120)에 기존에 저장되어 있던 상기 유효 메타데이터에 포함된 버전보다 이전의 것이거나, 생성일시가 상기 유효 메타데이터에 포함된 생성일시보다 더 빠른 경우에는 상기 업데이트 메타데이터가 유효하지 않은 것으로 판단할 수 있다.
상기 보안요소(120)는 상술한 바와 같이, 상기 제1해쉬값과 제2해쉬값의 비교를 통한 검증, 상기 제2키를 통한 전자서명 검증, 및 배포자, 버전, 생성일시에 대한 정보를 통한 검증 등 3단계의 검증을 통하여 상기 업데이트 메타데이터의 유효성 여부를 검증할 수 있다.
여기에서, 상기 보안요소(120)는 상기 업데이트 메타데이터가 유효한 것으로 판단되면, 상기 업데이트 메타데이터를 유효 메타데이터로서 저장할 수 있다.
이때에, 상기 보안요소(120)는 상기 제1,2메타데이터영역(121, 122) 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 유효 메타데이터로서 저장할 수 있으며, 기존의 유효 메타데이터는 무효 메타데이터로 전환할 수 있다.
즉, 상기 제1메타데이터영역(121)에 기존의 유효 메타데이터를 저장하고 있는 경우에는, 상기 업데이트 메타데이터를 상기 제2메타데이터영역(122)에 저장하고, 상기 제1메타데이터영역(121)에 저장된 기존의 유효 메타데이터는 무효 메타데이터로 전환하고, 상기 제2메타데이터영역(122)에 저장되는 상기 업데이트 메타데이터를 유효 메타데이터로 인식할 수 있다.
반대로, 상기 제2메타데이터영역(122)에 기존의 유효 메타데이터를 저장하고 있는 경우에는, 상기 업데이트 메타데이터를 상기 제1메타데이터영역(121)에 저장하고, 상기 제2메타데이터영역(122)에 저장된 기존의 유효 메타데이터는 무효 메타데이터로 전환하고, 상기 제1메타데이터영역(121)에 저장되는 상기 업데이트 메타데이터를 유효 메타데이터로 인식할 수 있다.
아울러, 상기 보안요소(120)는 상기 제1,2메타데이터영역(121)에 각각 저장된 메타데이터에 포함된 버전을 비교하여 이들 중 최신버전의 메타데이터를 유효 메타데이터로 인식할 수도 있다.
한편, 상기 업데이트 메타데이터가 유효 메타데이터로서 상기 보안요소(120)에 저장되면, 상기 제1,2펌웨어영역(112a, 112b) 중 어느 하나에 저장된 상기 업데이트 펌웨어 이미지가 유효 펌웨어 이미지로서 인식될 수 있다.
다시 말해서, 상기 펌웨어 업데이트 모듈(111b)는 상기 업데이트 메타데이터가 유효 메타데이터로서 상기 보안요소(120)에 저장되면, 상기 업데이트 펌웨어 이미지를 유효 폄웨어 이미지로 인식하고, 기존의 유효 펌웨어 이미지는 무효 펌웨어 이미지로 전환될 수 있다.
아울러, 상기 부트로더(111a)는 상기 업데이트 메타데이터가 유효 메타데이터로서 상기 보안요소(120)에 저장되면, 상기 IoT 디바이스(100)의 재부팅을 진행할 수 있다.
이때에, 상기 부트로더(111a)는 상기 제2메모리영역(112)에 저장된 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로서 인식하고, 상기 IoT 디바이스(100)의 재부팅을 진행할 수 있다.
한편, 상기 부트로더(111a)는, 상기 IoT 디바이스(100)의 재부팅 또는 부팅 시에, 상기 유효 펌웨어 이미지를 상기 보안요소(120)에 전송하고, 상기 보안요소(120)는 상기 유효 펌웨어 이미지에 대해 상기 해쉬 알고리즘을 이용하여 제3해쉬값을 산출할 수 있다.
여기에서, 상기 보안요소(120)는 상기 제3해쉬값과, 상기 유효 메타데이터에 포함된 상기 제1해쉬값을 비교하여 상기 유효 펌웨어 이미지의 유효성을 검증할 수 있다.
즉, 상기 제3해쉬값과 상기 제1해쉬값이 일치하는 경우에는 유효 펌웨어 이미지가 유효하다고 판단하고, 상기 제3해쉬값과 상기 제1해쉬값이 일치하지 않는 경우에는 유효 펌웨어 이미지가 해킹 등에 의한 변형이 일어났다고 판단할 수 있다.
이에 따라, 상기 제3해쉬값과 상기 제1해쉬값이 일치하지 않는다고 상기 보안오쇼(120)가 판단한 경우에, 상기 부트로더(111a)는 부팅을 중단할 수 있다.
이를 통하여, 해킹 등에 의해 변형되거나 오염된 펌웨어 이미지에 의해 상기 IoT 디바이스(100)에 오류가 일어나거나 오작동이 일어나는 것을 방지할 수 있다.
이하에서는, 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 방법(S100)에 대하여 상세히 설명하도록 한다.
도 2는 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 방법(S100)의 순서도이다.
도 2를 참조하면, 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 방법(S100)은 업데이트 펌웨어 이미지를 생성하는 업데이트 펌웨어 이미지 생성단계(S110), 상기 업데이트 펌웨어 이미지를 해쉬 알고리즘을 이용하여 생성한 제1해쉬값을 포함하는 업데이트 메타데이터를 생성하는 업데이트 메타데이터 생성단계(S120), IoT 디바이스(100)가 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 다운받는 펌웨어 다운로드 단계(S130), IoT 디바이스(100)가 다운로드 받은 상기 업데이트 펌웨어 이미지를 검증하는 펌웨어 검증단계(S140), IoT 디바이스(100)가 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하는 유효 메타데이터 저장단계(S150), 및 IoT 디바이스를 재부팅하는 재부팅단계(S160)를 포함할 수 있다.
업데이트 펌웨어 이미지 생성단계(S110)는 관리자 단말기(300)가 IoT 디바이스(100)의 펌웨어 이미지를 업데이트하기 위한 업데이트 펌웨어 이미지를 생성하는 단계일 수 있다.
업데이트 메타데이터 생성단계(S120)는 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제1해쉬값을 생성하고, 상기 제1해쉬값을 포함하는 업데이트 메타데이터를 생성하는 단계일 수 있다.
이때에, 상기 업데이트 메타데이터 생성단계(S120)는 상기 제1해쉬값, 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 포함하는 업데이트 메타데이터를 생성하는 단계일 수 있다.
또한, 상기 업데이트 메타데이터 생성단계(S120)에서 생성되는 상기 업데이트 메타데이터는 제1키에 의해 전자서명된 것일 수 있다.
다시 말해서, 상기 업데이트 메타데이터 생성단계(S120)는 상기 제1해쉬값, 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 상기 제1키에 의해 전자서명한 업데이트 메타데이터를 생성하는 단계일 수 있다.
펌웨어 다운로드 단계(S130)는, IoT 디바이스(100)가 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 다운로드받는 단계일 수 있다.
보다 구체적으로, 상기 펌웨어 다운로드 단계(S130)는, 상기 IoT 디바이스(100)에 구비된 펌웨어 업데이트 모듈(111b)이 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 전송받아, 상기 업데이트 펌웨어 이미지는 상기 IoT 디바이스(100)의 MCU(110)에 구비된 제2메모리부(112)에 저장하고, 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 IoT 디바이스(100)의 보안요소(120)에 전송하는 단계일 수 있다.
이때에, 상기 제2메모리부(112)는 각각 하나씩의 펌웨어 이미지를 저장하는 제1펌웨어영역(112a)과 제2펌웨어영역(112b)로 구분될 수 있는데, 상기 펌웨어 업데이트 모듈(11b)은 상기 제1,2펌웨어영역 중 유효펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어 영역에 상기 업데이트 펌웨어 이미지를 저장할 수 있다.
다시 말해서, 상기 제1펌웨어영역(112a)에 유효 펌웨어 이미지가 저장되어 있으면, 상기 펌웨어 업데이트 모듈(111b)는 상기 업데이트 펌웨어 이미지를 상기 제2펌웨어영역(112b)에 저장할 수 있으며, 상기 제2펌웨어영역(112b)에 유효 펌웨어 이미지가 저장되어 있으면, 상기 펌웨어 업데이트 모듈(111b)는 상기 업데이트 펌웨어 이미지를 상기 제1펌웨어영역(112a)에 저장할 수 있다.
펌웨어 검증단계(S140)는, 해쉬값 비교를 통해 상기 업데이트 펌웨어 이미지를 검증하는 제1검증단계(S141), 전자서명 검증을 통해 상기 업데이트 메타데이터를 검증하는 제2검증단계(S142), 상기 업데이트 메타데이터에 포함된 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시를 통해 상기 업데이트 펌웨어 이미지를 검증하는 제3검증단계(S143)를 포함할 수 있다.
제1검증단계(S141)는 상기 보안요소(120)가 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인하는 단계일 수 있다.
이때에, 상기 보안요소(120)가 상기 제2해쉬값을 생성하는데에 사용하는 해쉬 알고리즘과 상기 제1해쉬값을 생성하는데에 사용된 해쉬 알고리즘은 동일한 해쉬 알고리즘일 수 있다.
여기에서 상기 제1해쉬값과 상기 제2해쉬값이 일치하지 않으면, 상기 업데이트 펌웨어 이미지가 상기 IoT 디바이스(100)로 전송되는 과정에서 해킹 등에 의한 변화가 있었다는 것으로, 상기 제1해쉬값과 상기 제2해쉬값의 일치여부를 통해 상기 업데이트 펌웨어 이미지의 유효성을 검증할 수 있다.
아울러, 상기 제1검증단계(S141)에서 상기 제1해쉬값과 상기 제2해쉬값이 일치하지 않는 것으로 판단되면, 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 방법(S100)은 더이상 업데이트 과정을 진행하지 않고 종료할 수 있다.
제2검증단계(S142)는 상기 제1키와 대칭키 혹은 비대칭키 관계로 키쌍을 이루는 제2키를 통하여 상기 업데이트 메타데이터의 서명을 검증하는 단계일 수 있다
부연하면, 상기 제1키와 상기 제2키는 동일한 것으로 대칭키 관계일 수도 있으며, 상기 제1키는 개인키(Private Key)이고 상기 제2키는 공개키(Public Key)로 구성된 비대칭키 관계일 수도 있다.
이와 같이, 상기 제2검증단계(S142)는 상기 제2키를 통하여 상기 업데이트 메타데이터의 전자서명을 검증하여, 상기 업데이트 메타데이터의 유효성을 검증하는 단계일 수 있다.
이때에도, 상기 제2검증단계(S142)에서 상기 업데이트 메타데이터가 유효하지 않은 것으로 판단되면, 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 방법(S100)은 더 이상 업데이트 과정을 진행하지 않고 종료할 수 있다.
제3검증단계(S143)는 상기 업데이트 메타데이터에 포함된 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 통하여 상기 업데이트 메타데이터의 유효성을 검증하는 단계일 수 있다.
보다 상세히 설명하면, 상기 제3검증단계(S143)에서, 상기 업데이트 메타데이터에 포함된 상기 업데이트 펌웨어 이미지의 배포자가 상이하거나, 상기 업데이트 펌웨어 이미지의 버전이 상기 보안요소(120)에 기존에 저장되어 있던 상기 유효 메타데이터에 포함된 버전보다 이전의 것이거나, 생성일시가 상기 유효 메타데이터에 포함된 생성일시보다 더 빠른 경우에는 상기 업데이트 메타데이터가 유효하지 않은 것으로 판단할 수 있다.
마찬가지로, 상기 제3검증단계(S143)에서 상기 업데이트 메타데이터가 유효하지 않은 것으로 판단되면, 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 방법(S100)은 더 이상 업데이트 과정을 진행하지 않고 종료할 수 있다.
상술한 바와 같이, 상기 펌웨어 검증단계(S140)는 상기 제1해쉬값과 제2해쉬값의 비교를 통해 검증하는 제1검증단계(S141)에서의 검증, 상기 제2키를 통해 전자서명을 검증하는 제2검증단계(S142)에서의 검증, 및 배포자, 버전, 생성일시에 대한 정보를 통해 검증하는 제3검증단계(S143)에서의 검증 등 3단계의 검증을 통하여 상기 업데이트 펌웨어 이미지 및 상기 업데이트 메타데이터의 유효성 여부를 검증할 수 있다.
유효 메타데이터 저장단계(S150)는 상기 펌웨어 검증단계(S140)에서 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터가 유효한 것으로 판단되면, 상기 업데이트 메타데이터를 유효 메타데이터로서 상기 보안요소(120)에 저장하는 단계일 수 있다.
이때에, 상기 유효 메타데이터 저장단계(S150)는 상기 보안요소(120)에 구비된 제1,2메타데이터영역(121, 122) 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하고, 기존의 유효 메타데이터는 무효 메타데이터로 전환하는 단계일 수 있다.
또한, 상기 유효 메타데이터 저장단계(S150)는 상기 보안요소(120)에 구비된 제1,2메타데이터영역(121, 122)에 저장된 메타데이터에 포함된 버전을 비교하여 상기 제1,2메타데이터영역(121, 122) 중 상대적으로 구버전의 메타데이터를 저장하고 있는 영역에 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하는 단계일 수도 있다.
즉, 상기 유효 메타데이터 저장단계(S150)에서는, 상기 제1메타데이터영역(121)에 기존의 유효 메타데이터를 저장하고 있거나, 상기 제1메타데이터영역(121)에 저장된 메타데이터의 버전이 상기 제2메타데이터영역(122)에 저장된 메타데이터의 버전보다 최신버전인 경우에는, 상기 업데이트 메타데이터를 상기 제2메타데이터영역(122)에 저장하고, 상기 제1메타데이터영역(121)에 저장된 기존의 유효 메타데이터는 무효 메타데이터로 전환하고, 상기 제2메타데이터영역(122)에 저장되는 상기 업데이트 메타데이터를 유효 메타데이터로 인식할 수 있다.
반대로, 상기 제2메타데이터영역(122)에 기존의 유효 메타데이터를 저장하고 있거나, 상기 베2메타데이터영역(121)에 저장된 메타데이터의 버전이 상기 제1메타데이터영역(121)에 저장된 메타데이터의 버전보다 최신버전인 경우에는, 상기 업데이트 메타데이터를 상기 제1메타데이터영역(121)에 저장하고, 상기 제2메타데이터영역(122)에 저장된 기존의 유효 메타데이터는 무효 메타데이터로 전환하고, 상기 제1메타데이터영역(121)에 저장되는 상기 업데이트 메타데이터를 유효 메타데이터로 인식할 수 있다.
재부팅단계(S160)는 상기 업데이트 메타데이터가 유효 메타데이터로서 저장되면 IoT 디바이스(100)를 재부팅하는 단계일 수 있다.
여기에서, 상기 재부팅단계(S160)는 후술하는 본 발명의 일 실시예에 의한 IoT 디바이스 부팅방법(S160)에 의할 수 있다.
도 3은 본 발명의 일 실시예에 의한 IoT 디바이스 부팅방법(S160)의 순서도이다.
이하에서는 도 3을 참조하여, 본 발명의 일 실시예에 의한 IoT 디바이스 부팅방법(S160)에 대하여 상세히 설명하도록 한다.
도 3에서 도시하는 바와 같이, 본 발며의 일 실시예에 의한 IoT 디바이스 부팅방법(S160)은 전원을 인가하는 전원인가 단계(S161), 유효 펌웨어 이미지 확인단계(S162), 유효 펌웨어 무결성 검증단계(S163), 및 펌웨어 가동단계(S164)를 포함할 수 있다.
전원인가 단계(S161)는 IoT 디바이스(100)에 전원을 인가하는 단계일 수 있는데, 상기 IoT 디바이스(100)에 전원이 공급되고 있는 상태일 때에는 상기 IoT 디바이스(100)에 공급되는 전원을 차단한 이후, 다시 상기 IoT 디바이스(100)에 전원을 인가하는 단계일 수 있다.
다시 말해서, 상기 전원인가 단계(S161)는, 재부팅 시에는 상기 IoT 디바이스(100)에 공급되는 전원을 일시 차단한 후 다시 상기 IoT 디바이스(100)에 전원을 인가하는 단계이고, 부팅 시에는 상기 IoT 디바이스(100)에 전원을 인가하는 단계일 수 있다.
유효 펌웨어 이미지 확인단계(S162)는, 상기 IoT 디바이스(100)에 구비된 보안요소(120)가 유효 메타데이터를 확인하고, 상기 IoT 디바이스(100)에 구비되는 MCU(110)에 저장되어 있는 부트로더가 상기 MCU(110)에 저장된 펌웨어 이미지들 중 상기 유효 메타데이터에 대응되는 펌웨어 이미지를 유효 펌웨어 이미지로 확인하는 단계일 수 있다.
여기에서, 상기 보안요소(120)에는 복수의 메타데이터가 저장되어 있을 수 있으며, 상기 보안요소(120)는 상기 복수의 메타데이터 중 최신버전의 메타데이터를 유효 메타데이터로 인식하여 확인할 수 있다.
예를 들어, 상기 보안요소(120)는 두개의 메타데이터를 저장할 수 있으며, 이를 위하여, 어느 하나의 메타데이터를 저장하는 제1메타데이터영역(120a)과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역(120b)로 구분될 수 있는데, 이때에, 상기 보안요소(120)는 상기 제1,2메타데이터영역(120a, 120b)에 각각 저장된 메타데이터에 포함된 버전을 비교하여 이들 중 최신버전인 어느 하나의 메타데이터를 유효 메타데이터로 인식할 수 있다.
유효 펌웨어 무결성 검증단계(S163)는 상기 보안요소가 상기 유효 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제3해쉬값을 산출하고, 상기 유효 메타데이터에 포함된 상기 제1해쉬값과 상기 제3해쉬값을 비교하여 상기 유효 펌웨어 이미지의 무결성을 검증하는 단계일 수 있다.
이때에, 제3해쉬값을 산출하는데에 이용되는 해쉬 알고리즘은 상기 제1해쉬값을 산출하기 위해 사용된 해쉬 알고리즘과 동일한 해쉬 알고리즘일 수 있다.
이를 통하여, 상기 유효 펌웨어 무결성 검증단계(S163)에서는, 상기 제3해쉬값과 상기 제1해쉬값이 일치하는 경우에는 상기 유효 펌웨어 이미지가 유효하다고 판단하고, 상기 제3해쉬값과 상기 제1해쉬값이 일치하지 않는 경우에는 상기 유효 펌웨어 이미지가 해킹 등에 의한 변형이 일어났다고 판단할 수 있다.
이에 따라, 상기 유효 펌웨어 무결성 검증단계(S163)에서 상기 제3해쉬값과 상기 제1해쉬값이 일치하지 않는다고 판단한 경우에, 본 발명의 일실시예에 의한 IoT 디바이스 부팅방법(S160)은 부팅을 중단할 수 있다.
한편, 여기에서 상기 MCU(110)와 상기 보안요소(120)는 I2C, SPI, ISO7816 중 선택되는 어느 하나의 인터페이스에 의해 상호 통신할 수 있다.
펌웨어 가동단계(S164)는 상기 유효 펌웨어 무결성 검증단계(S163)에서 상기 유효 펌웨어 이미지의 무결성이 검증되면, 상기 유효 펌웨어 이미지를 가동하는 단계일 수 있다.
상술한 바와 같이, 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 시스템(1000), IoT 디바이스 펌웨어 업데이트 방법(S100), 및 IoT 디바이스 부팅방법(S160)에 의하면, 유효하지 않은 펌웨어 이미지를 확실하게 걸러낼 수 있어 해킹등에 의해 펌웨어 이미지가 변형되거나 유효하지 않은 펌웨어로 IoT 디바이스의 펌웨어가 업데이트되고 이에 의해 기동되는 것을 방지할 수 있다.
이상에서, 본 발명의 일 실시예에 대하여 상세하게 설명하였지만, 본 발명의 권리범위는 이에 한정되는 것은 아니고, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 수정 및 변형이 가능하다는 것은 당 기술분야의 통상의 지식을 가진 자에게는 자명할 것이다.
1000: 본 발명의 일 실시예에 의한 IoT 디바이스 펌웨어 업데이트 시스템
100: IoT 디바이스 110: MCU
111: 제1메모리부 111a: 부트로더
111b: 펌웨어 업데이트 모듈 112: 제2메모리부
112a: 제1펌웨어영역 112b: 제2펌웨어영역
120: 보안요소 121: 제1메타데이터영역
122: 제2메타데이터영역 200: 서버
300: 관리자 단말기
S100: 본 발명의 일 실시에에 의한 IoT 디바이스 펌웨어 업데이트 방법
S110: 업데이트 펌웨어 이미지 생성단계
S120: 업데이트 메타데이터 생성단계
S130: 펌웨어 다운로드 단계 S140: 펌웨어 검증단계
S141: 제1검증단계 S142: 제2검증단계
S143: 제3검증단계 S150: 유효 메타데이터 저장단계
S160: 재부팅단계, 본발명의 일 실시예에 의한 IoT 디바이스 부팅방법
S161: 전원인가 단계 S162: 유효 펌웨어 이미지 확인단계
S163: 유효 펌웨어 무결성 검증단계 S164: 펌웨어 가동단계

Claims (26)

  1. 부트로더 및 펌웨어 업데이트 모듈이 저장된 제1메모리부와 복수의 펌웨어 이미지가 저장된 제2메모리부를 구비하는 MCU, 및 상기 MCU와 인터페이스를 통해 통신하고 해쉬 알고리즘을 통하여 데이터의 해쉬값을 계산하며 복수의 메타데이터를 저장하는 보안요소를 포함하는 IoT 디바이스;
    상기 IoT 디바이스와 네트워크로 연결되는 서버; 및
    업데이트 펌웨어 이미지와 상기 업데이트 펌웨어 이미지를 상기 해쉬 알고리즘을 이용하여 생성한 제1해쉬값을 포함하는 업데이트 메타데이터를 상기 서버에 전송하는 관리자 단말기;를 포함하고,
    상기 펌웨어 업데이트 모듈은 상기 서버로부터 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 서버로부터 전송받아 상기 업데이트 펌웨어 이미지는 상기 제2메모리부에 저장하고, 상기 보안요소로 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 전송하고,
    상기 보안요소는 상기 보안요소로부터 전달받은 상기 업데이트 펌웨어 이미지에 대해 상기 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값과 상기 제2해쉬값을 비교하여 서로 일치하는 경우에만 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하고,
    상기 부트로더는 상기 제2메모리부에 저장된 복수의 펌웨어 이미지 중 상기 유효 메타데이터에 대응되는 어느 하나의 펌웨어 이미지를 유효 펌웨어 이미지로서 인식하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  2. 제1항에 있어서,
    상기 업데이트 메타데이터는 상기 관리자 단말기에 저장된 제1키에 의해 전자서명된 것이고,
    상기 보안요소는 제2키로 상기 업데이트 메타데이터의 서명을 검증하여, 유효한 경우에만 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  3. 제2항에 있어서,
    상기 제1키와 상기 제2키는 대칭키인 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  4. 제2항에 있어서,
    상기 제1키는 개인키이고, 상기 제2키는 공개키인 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  5. 제1항에 있어서,
    상기 업데이트 메타데이터는 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 포함하고,
    상기 보안요소는 상기 업데이트 메타데이터에 포함된 상기 펌웨어 이미지의 배포자, 버전, 생성일에 대한 정보가 유효한 경우에만 상기 업데이트 메타데이터를 유효 메타데이터로서 저장하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  6. 제5항에 있어서,
    상기 제2메모리부는,
    어느 하나의 펌웨어 이미지를 저장하는 제1펌웨어영역과 다른 하나의 펌웨어 이미지를 저장하는 제2펌웨어영역으로 구분되고, 상기 제1,2펌웨어영역중 어느 하나에는 유효 펌웨어 이미지를 저장하고 있으며,
    상기 펌웨어 업데이트 모듈은,
    상기 제1,2펌웨어영역 중 기존의 유효 펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어영역에 상기 업데이트 펌웨어 이미지를 저장하고,
    상기 보안요소는,
    어느 하나의 메타데이터를 저장하는 제1메타데이터영역과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역으로 구분되고, 상기 제1,2메타데이터영역에 각각 저장된 메타데이터에 포함된 버전을 비교하여 최신 버전이 어느 하나의 메타데이터를 유효 메타데이터로 인식하며,
    상기 제1,2메타데이터영역 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 저장하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  7. 제1항에 있어서,
    상기 제2메모리부는,
    어느 하나의 펌웨어 이미지를 저장하는 제1펌웨어영역과 다른 하나의 펌웨어 이미지를 저장하는 제2펌웨어영역으로 구분되고, 상기 제1,2펌웨어영역중 어느 하나에는 유효 펌웨어 이미지를 저장하고 있으며,
    상기 펌웨어 업데이트 모듈은,
    상기 제1,2펌웨어영역 중 기존의 유효 펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어영역에 상기 업데이트 펌웨어 이미지를 저장하고,
    상기 보안요소는,
    어느 하나의 메타데이터를 저장하는 제1메타데이터영역과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역으로 구분되고, 상기 제1,2메타데이터영역 중 어느 하나에는 유효 메타데이터를 저장하고 있으며,
    상기 제1,2메타데이터영역 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 새로운 유효 메타데이터로서 저장하고, 기존의 유효 메타데이터는 무효 메타데이터로 전환하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  8. 제7항에 있어서,
    상기 펌웨어 업데이트 모듈은,
    상기 업데이트 메타데이터가 유효 메타데이터로서 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로 인식하고, 기존의 유효 펌웨어 이미지는 무효 펌웨어 이미지로 전환하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  9. 제8항에 있어서,
    상기 IoT 디바이스에 전원이 인가되면,
    상기 부트로더는 상기 유효 펌웨어 이미지를 보안요소에 전달하고,
    상기 보안요소는 상기 유효 펌웨어 이미지에 대해 상기 해쉬 알고리즘으로 계산한 제3해쉬값과 상기 유효 메타데이터에 포함된 상기 제1해쉬값을 비교하여 일치여부를 상기 부트로더에 전달하고,
    상기 부트로더는 상기 제3해쉬값과 상기 제1해쉬값이 일치하지 않으면 부팅을 중단하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  10. 제1항에 있어서,
    상기 부트로더는 상기 업데이트 메타데이터가 유효 메타데이터로서 상기 보안요소에 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로서 인식하고, 상기 유효 펌웨어 이미지를 통하여 재부팅을 진행하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  11. 제1항에 있어서,
    상기 제1메모리부는 ROM(Read Only Memory) 또는 TrustZone으로 구비되는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 시스템.
  12. IoT 디바이스의 펌웨어 이미지를 업데이트하기 위한 업데이트 펌웨어 이미지를 생성하는 업데이트 펌웨어 이미지 생성단계;
    상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제1해쉬값을 생성하고, 상기 제1해쉬값을 포함하는 업데이트 메타데이터를 생성하는 업데이트 메타데이터 생성단계;
    IoT 디바이스가 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 다운로드받아, 상기 업데이트 펌웨어 이미지는 상기 IoT 디바이스의 MCU에 구비된 제2메모리부에 저장하고, 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 IoT 디바이스의 보안요소에 전송하는 펌웨어 다운로드 단계;
    상기 보안요소가 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인하여 상기 업데이트 펌웨어 이미지를 검증하는 펌웨어 검증단계;
    상기 펌웨어 검증단계에서 상기 업데이트 펌웨어 이미지가 유효한 것으로 검증되면, 상기 업데이트 메타데이터를 유효 메타데이터로서 상기 보안요소에 저장하는 유효 메타데이터 저장단계; 및
    상기 업데이트 메타데이터가 유효 메타데이터로서 저장되면 상기 IoT 디바이스를 재부팅하는 재부팅단계;를 포함하고,
    상기 업데이트 메타데이터 생성단계와 상기 펌웨어 검증단계에서 사용된 해쉬 알고리즘은 동일한 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  13. 제12항에 있어서,
    상기 업데이트 메타데이터는 상기 업데이트 메타데이터 생성단계에서, 제1키에 의해 전자서명되고,
    상기 펌웨어 검증단계는,
    상기 보안요소가 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인하여 상기 업데이트 펌웨어 이미지를 검증하는 제1검증단계; 및
    상기 제1키와 대칭키 혹은 비대칭키 관계로 키쌍을 이루는 제2키를 통하여 상기 업데이트 메타데이터의 서명을 검증하는 제2검증단계;를 포함하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  14. 제13항에 있어서,
    상기 제1키와 상기 제2키는 대칭키인 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  15. 제13항에 있어서,
    상기 제1키는 개인키이고, 상기 제2키는 공개키인 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  16. 제12항에 있어서,
    상기 업데이트 메타데이터는 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 포함하고,
    상기 펌웨어 검증단계는,
    상기 보안요소가 상기 업데이트 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제2해쉬값을 생성하고, 상기 제2해쉬값과 상기 업데이트 메타데이터에 포함된 상기 제1해쉬값을 비교하여 서로 일치하는지 여부를 확인하여 상기 업데이트 펌웨어 이미지를 검증하는 제1검증단계; 및
    상기 업데이트 메타데이터에 포함된 상기 업데이트 펌웨어 이미지의 배포자, 버전, 생성일시에 대한 정보를 통하여 상기 업데이트 메타데이터의 유효성을 검증하는 제3검증단계;를 포함하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  17. 제12항에 있어서,
    상기 펌웨어 다운로드 단계는,
    상기 IoT 디바이스에 구비된 펌웨어 업데이트 모듈이 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 전송받아, 상기 업데이트 펌웨어 이미지는 상기 IoT 디바이스의 MCU에 구비된 제2메모리부에 저장하고, 상기 업데이트 펌웨어 이미지와 상기 업데이트 메타데이터를 상기 IoT 디바이스의 보안요소에 전송하는 단계이고,
    상기 제2메모리부는,
    어느 하나의 펌웨어 이미지를 저장하는 제1펌웨어영역과 다른 하나의 펌웨어 이미지를 저장하는 제2펌웨어영역으로 구분되고, 상기 제1,2펌웨어영역중 어느 하나에는 유효 펌웨어 이미지를 저장하고 있으며,
    상기 펌웨어 다운로드 단계는,
    상기 제1,2펌웨어영역 중 기존의 유효 펌웨어 이미지를 저장하고 있지 않은 어느 하나의 펌웨어영역에 상기 업데이트 펌웨어 이미지를 저장하는 단계이고,
    상기 보안요소는,
    어느 하나의 메타데이터를 저장하는 제1메타데이터영역과 다른 하나의 메타데이터를 저장하는 제2메타데이터영역으로 구분되고, 상기 제1,2메타데이터영역 중 어느 하나에는 유효 메타데이터를 저장하고 있으며,
    상기 유효 메타데이터 저장단계는,
    상기 제1,2메타데이터영역 중 기존의 유효 메타데이터를 저장하고 있지 않은 영역에 상기 업데이트 메타데이터를 새로운 유효 메타데이터로서 저장하고, 기존의 유효 메타데이터는 무효 메타데이터로 전환하는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  18. 제17항에 있어서,
    상기 유효 메타데이터 저장단계는,
    상기 업데이트 메타데이터가 유효 메타데이터로서 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로 인식하고, 기존의 유효 펌웨어 이미지는 무효 펌웨어 이미지로 전환하는 단계인 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  19. 제12항에 있어서,
    상기 재부팅 단계는,
    상기 IoT 디바이스에 공급되는 전원을 일시 차단한 후 다시 상기 IoT 디바이스에 전원을 인가하는 전원인가 단계;
    상기 IoT 디바이스에 구비된 보안요소가 유효 메타데이터를 확인하고, 상기 IoT 디바이스에 구비되는 MCU에 저장되어 있는 부트로더가 상기 MCU에 저장된 펌웨어 이미지들 중 상기 유효 메타데이터에 대응되는 펌웨어 이미지를 유효 펌웨어 이미지로 확인하는 유효 펌웨어 이미지 확인단계;
    상기 보안요소가 상기 유효 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제3해쉬값을 산출하고, 상기 유효 메타데이터에 포함된 상기 제1해쉬값과 상기 제3해쉬값을 비교하여 상기 유효 펌웨어 이미지의 무결성을 검증하는 유효 펌웨어 무결성 검증단계; 및
    상기 유효 펌웨어 무결성 검증단계에서 상기 유효 펌웨어 이미지의 무결성이 검증되면, 상기 유효 펌웨어 이미지를 가동하는 펌웨어 가동단계;를 포함하고,
    상기 제1해쉬값 및 상기 제3해쉬값을 산출하는데 사용된 해쉬 알고리즘은 서로 동일한 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  20. 제12항에 있어서,
    상기 MCU는 제1메모리부를 구비하고, 상기 펌웨어 다운로드 단계는 상기 제1메모리부에 저장되는 펌웨어 업데이트 모듈에 의해 수행되며,
    상기 제1메모리부는 ROM(Read Only Memory) 또는 TrustZone으로 구비되는 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  21. 제12항에 있어서,
    상기 재부팅 단계는,
    상기 유효 메타데이터 저장단계에서 상기 업데이트 메타데이터가 유효 메타데이터로서 상기 보안요소에 저장되면, 상기 업데이트 펌웨어 이미지를 유효 펌웨어 이미지로서 인식하고, 상기 유효 펌웨어 이미지를 통하여 재부팅을 진행하는 단계인 것을 특징으로 하는 IoT 디바이스 펌웨어 업데이트 방법.
  22. IoT 디바이스에 전원을 인가하는 전원인가 단계;
    상기 IoT 디바이스에 구비된 보안요소가 유효 메타데이터를 확인하고, 상기 IoT 디바이스에 구비되는 MCU에 저장되어 있는 부트로더가 상기 MCU에 저장된 펌웨어 이미지들 중 상기 유효 메타데이터에 대응되는 펌웨어 이미지를 유효 펌웨어 이미지로 확인하는 유효 펌웨어 이미지 확인단계;
    상기 보안요소가 상기 유효 펌웨어 이미지에 대해 해쉬 알고리즘을 이용하여 제3해쉬값을 산출하고, 상기 유효 메타데이터에 포함된 제1해쉬값과 상기 제3해쉬값을 비교하여 상기 유효 펌웨어 이미지의 무결성을 검증하는 유효 펌웨어 무결성 검증단계; 및
    상기 유효 펌웨어 무결성 검증단계에서 상기 유효 펌웨어 이미지의 무결성이 검증되면, 상기 유효 펌웨어 이미지를 가동하는 펌웨어 가동단계;를 포함하고,
    상기 제1해쉬값 및 상기 제3해쉬값을 산출하는데 사용된 해쉬 알고리즘은 서로 동일한 것을 특징으로 하는 IoT 디바이스 부팅방법.
  23. 제22항에 있어서,
    상기 유효 펌웨어 무결성 검증 단계에서 상기 제1해쉬값과 상기 제3해쉬값이 일치하지 않으면, 부팅을 중단하는 것을 특징으로 하는 IoT 디바이스 부팅방법.
  24. 제22항에 있어서,
    상기 부트로더는 상기 MCU에 구비되는 제1메모리부에 저장되고,
    상기 제1메모리부는 ROM(Read Only Memory) 또는 TrustZone으로 구비되는 것을 특징으로 하는 IoT 디바이스 부팅방법.
  25. 제22항에 있어서,
    상기 MCU와 상기 보안요소는 I2C, SPI, ISO7816 중 선택되는 어느 하나의 인터페이스에 의해 상호 통신하는 것을 특징으로 하는 IoT 디바이스 부팅방법.
  26. 제22항에 있어서,
    상기 유효 펌웨어 이미지 확인단계에서,
    상기 보안요소에는 복수의 메타데이터가 저장되어 있고, 상기 보안요소는 상기 복수의 메타데이터 중 최신버전의 메타데이터를 유효 메타데이터로 인식하여 확인하는 것을 특징으로 하는 IoT 디바이스 부팅방법.
KR1020200183947A 2020-12-24 2020-12-24 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법 KR102386614B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200183947A KR102386614B1 (ko) 2020-12-24 2020-12-24 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200183947A KR102386614B1 (ko) 2020-12-24 2020-12-24 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법

Publications (1)

Publication Number Publication Date
KR102386614B1 true KR102386614B1 (ko) 2022-05-09

Family

ID=81582647

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200183947A KR102386614B1 (ko) 2020-12-24 2020-12-24 IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법

Country Status (1)

Country Link
KR (1) KR102386614B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230145340A1 (en) * 2021-11-08 2023-05-11 Adobe Inc. Distributing and synchronizing encrypted data for multi-regional accessibility
CN118689514A (zh) * 2024-08-23 2024-09-24 天翼物联科技有限公司 基于通信模组的终端固件升级方法、系统、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150106219A (ko) * 2014-03-11 2015-09-21 삼성전자주식회사 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법
KR20160113693A (ko) * 2014-03-28 2016-09-30 인텔 코포레이션 하드웨어 플랫폼에 대한 펌웨어의 인-시스템 프로비저닝
KR20200020627A (ko) * 2018-08-16 2020-02-26 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
WO2020197821A1 (en) * 2019-03-25 2020-10-01 Micron Technology, Inc. Validating data stored in memory using cryptographic hashes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150106219A (ko) * 2014-03-11 2015-09-21 삼성전자주식회사 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법
KR20160113693A (ko) * 2014-03-28 2016-09-30 인텔 코포레이션 하드웨어 플랫폼에 대한 펌웨어의 인-시스템 프로비저닝
KR20200020627A (ko) * 2018-08-16 2020-02-26 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
WO2020197821A1 (en) * 2019-03-25 2020-10-01 Micron Technology, Inc. Validating data stored in memory using cryptographic hashes

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230145340A1 (en) * 2021-11-08 2023-05-11 Adobe Inc. Distributing and synchronizing encrypted data for multi-regional accessibility
CN118689514A (zh) * 2024-08-23 2024-09-24 天翼物联科技有限公司 基于通信模组的终端固件升级方法、系统、设备及介质

Similar Documents

Publication Publication Date Title
US10318736B2 (en) Validating operating firmware of a periperhal device
US6381741B1 (en) Secure data downloading, recovery and upgrading
US20170308705A1 (en) System, device and method for anti-rollback protection of over-the-air updated device images
US8296579B2 (en) System and method for updating a basic input/output system (BIOS)
US8789037B2 (en) Compatible trust in a computing device
US7454616B2 (en) Code authentication upon bootup for cable modems
US11163886B2 (en) Information handling system firmware bit error detection and correction
CN101657792A (zh) 可信部件更新系统和方法
WO2017095565A1 (en) Methods and apparatus to provide for efficient and secure software updates
EP3172687B1 (en) Authorizing a bios policy change for storage
US20080168275A1 (en) Securely Recovering a Computing Device
KR102386614B1 (ko) IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법
US9959125B2 (en) Field update of boot loader using regular device firmware update procedure
TWI839587B (zh) 用於管理軟體更新之方法及裝置,以及非暫時性電腦可讀儲存媒體
JP2017097851A (ja) 中継装置、中継方法およびプログラム
US9244758B2 (en) Systems and methods for repairing system files with remotely determined repair strategy
CN113127879B (zh) 一种固件可信启动方法、电子设备及可读存储介质
JP6846457B2 (ja) 自動検証方法及びシステム
US10621330B2 (en) Allowing use of a test key for a BIOS installation
WO2020037613A1 (zh) 嵌入式程序的安全升级方法、装置、设备及存储介质
JP2011003020A (ja) コンピューターシステムおよびプログラム起動方法
CN112099855B (zh) 一种信息处理方法、电子设备和计算机存储介质
CN115329321A (zh) 一种固件的启动方法、芯片及计算设备
KR102680666B1 (ko) 차량 보안 시동 방법, 장치, 전자 제어 유닛 및 저장 매체
CN111353150A (zh) 一种可信启动方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant