KR102392474B1 - Internet-of-things module - Google Patents
Internet-of-things module Download PDFInfo
- Publication number
- KR102392474B1 KR102392474B1 KR1020180023572A KR20180023572A KR102392474B1 KR 102392474 B1 KR102392474 B1 KR 102392474B1 KR 1020180023572 A KR1020180023572 A KR 1020180023572A KR 20180023572 A KR20180023572 A KR 20180023572A KR 102392474 B1 KR102392474 B1 KR 102392474B1
- Authority
- KR
- South Korea
- Prior art keywords
- firmware
- booting
- security
- version
- area
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
Abstract
본 발명의 일 실시예에 따른 사물인터넷 모듈은, 부팅 펌웨어와 제1 보안 정보를 저장하는 부팅 영역, 및 펌웨어 배포(release) 버전과 제2 보안 정보를 저장하는 보안 영역을 갖는 메모리 유닛, 및 상기 부팅 펌웨어가 실행되면, 상기 제1 보안 정보 및 상기 제2 보안 정보를 비교하고, 상기 부팅 펌웨어의 버전을 상기 펌웨어 배포 버전과 비교하여 부팅 프로세스의 진행 여부를 판단하는 프로세서 유닛을 포함한다.The IoT module according to an embodiment of the present invention includes a memory unit having a booting area for storing booting firmware and first security information, and a security area for storing a firmware release version and second security information, and the and a processor unit configured to compare the first security information and the second security information when the booting firmware is executed, and to compare the version of the booting firmware with the firmware distribution version to determine whether to proceed with the booting process.
Description
본 발명은 사물인터넷 모듈에 관한 것이다.The present invention relates to an IoT module.
통신망에 연결되어 동작하는 사물인터넷의 특성 상, 사물인터넷 모듈의 보안 성능은 매우 중요하다. 그러나 고가의 시스템으로 구현되는 컴퓨터 장치나 모바일 장치와 달리, 일반적인 장치나 사물에 사물인터넷 기능을 부여하기 위하여 생산되는 사물인터넷 모듈은 상대적으로 저가형 시스템으로 구현되므로, 고가의 보안 체계를 갖추기 어려울 수 있다. 또한, 사물인터넷 모듈의 생산업체와, 사물인터넷 모듈을 탑재한 장치를 생산하여 최종 소비자에게 판매하는 주체가 다를 수 있으므로, 사물인터넷 모듈에 저장된 부팅 펌웨어가 해킹되거나 의도치 않게 이전 버전으로 롤백(rollback)되는 등의 문제가 발생할 수 있다.Due to the characteristics of the Internet of Things that are connected to the communication network, the security performance of the IoT module is very important. However, unlike computer devices or mobile devices implemented as expensive systems, IoT modules produced to provide IoT functions to general devices or things are implemented as relatively low-cost systems, so it may be difficult to have an expensive security system. . In addition, since the manufacturer of the IoT module and the entity that produces and sells the device equipped with the IoT module to the end consumer may be different, the boot firmware stored in the IoT module may be hacked or unintentionally rolled back to the previous version. ), etc., may occur.
본 발명의 기술적 사상이 이루고자 하는 과제 중 하나는, 메모리의 보안 블록을 활용하여 보안 부팅(secure booting) 기능을 구현하는 한편, 펌웨어를 안전하게 관리할 수 있는 사물인터넷 모듈을 제공하고자 하는 데에 있다.One of the problems to be achieved by the technical idea of the present invention is to provide an IoT module capable of securely managing firmware while implementing a secure booting function by utilizing a secure block of a memory.
본 발명의 일 실시예에 따른 사물인터넷 모듈은, 부팅 펌웨어와 제1 보안 정보를 저장하는 부팅 영역, 및 펌웨어 배포(release) 버전과 제2 보안 정보를 저장하는 보안 영역을 갖는 메모리 장치, 및 상기 부팅 펌웨어가 실행되면, 상기 제1 보안 정보 및 상기 제2 보안 정보를 비교하고, 상기 부팅 펌웨어의 버전을 상기 펌웨어 배포 버전과 비교하여 부팅 프로세스의 진행 여부를 판단하는 프로세서 유닛을 포함한다.The IoT module according to an embodiment of the present invention includes a memory device having a booting area for storing booting firmware and first security information, and a security area for storing a firmware release version and second security information, and the and a processor unit configured to compare the first security information and the second security information when the booting firmware is executed, and to compare the version of the booting firmware with the firmware distribution version to determine whether to proceed with the booting process.
본 발명의 일 실시예에 따른 사물인터넷 모듈은, 부팅에 필요한 부팅 펌웨어를 저장하는 부팅 영역, 및 상기 부팅 펌웨어의 롤백(rollback) 검사 기능을 제공하기 위한 펌웨어 배포 버전을 저장하는 보안 영역을 갖는 제1 메모리 장치, 상기 보안 영역에 접근하여 상기 펌웨어 배포 버전을 획득하는 보안 부트 로직을 갖는 제2 메모리 장치, 및 상기 부팅 펌웨어의 버전을, 상기 펌웨어 배포 버전과 비교하여 상기 부팅 펌웨어의 롤백 여부를 판단하는 프로세서 유닛을 포함한다.The IoT module according to an embodiment of the present invention includes a device having a boot area for storing booting firmware required for booting, and a security area for storing a firmware distribution version for providing a rollback inspection function of the booting firmware. 1 A memory device, a second memory device having a secure boot logic to obtain the firmware distribution version by accessing the secure area, and a version of the booting firmware are compared with the firmware distribution version to determine whether to rollback the booting firmware It includes a processor unit that
본 발명의 일 실시예에 따른 사물인터넷 모듈은, 부팅 펌웨어를 저장하는 부팅 영역, 및 상기 부팅 영역과 구분되며 소정의 인증 키를 저장하는 보안 영역을 갖는 메모리 장치, 및 내부 회로의 구조로부터 하드웨어 고유 키를 생성하는 하드웨어 고유 키 생성 회로를 포함하며, 상기 부팅 펌웨어가 최초로 실행되면 상기 휘발성 메모리 장치를 통해 상기 하드웨어 고유 키를 상기 인증 키로서 상기 보안 영역에 저장하고, 상기 하드웨어 고유 키를 이용하는 인증 절차를 통해 상기 보안 영역에 대한 접근 권한을 획득하는 프로세서 유닛을 포함한다.The IoT module according to an embodiment of the present invention includes a memory device having a boot region for storing booting firmware, a security region separated from the boot region and storing a predetermined authentication key, and a hardware unique structure from an internal circuit structure. and a hardware-specific key generation circuit for generating a key, wherein when the booting firmware is first executed, the hardware-specific key is stored in the secure area as the authentication key through the volatile memory device, and an authentication procedure using the hardware-specific key and a processor unit configured to obtain an access right to the security area through
본 발명의 일 실시예에 따르면, eFuse나 OTP 등과 같은 별도의 영역 없이 펌웨어의 의도치 않은 롤백 등을 방지함으로써 펌웨어 무결성을 확보할 수 있다. 또한, 펌웨어를 배포하는 과정에서 사물인터넷 모듈에 탑재되었던 공공 키를, 사물인터넷 모듈을 탑재한 사물인터넷 장치를 생산하는 주체인, 사물인터넷 디바이스 제조사의 보안 키로 대체할 수 있다. 따라서, 동일한 사물인터넷 모듈이 탑재된 사물인터넷 장치들 간의 해킹 위험성을 낮출 수 있다. 또한, 메모리 장치의 보안 영역에 저장된 보안 키의 정보를 이용하여, 보안 부팅 기능을 제공할 수 있다.According to an embodiment of the present invention, firmware integrity can be secured by preventing an unintentional rollback of the firmware without a separate area such as eFuse or OTP. In addition, in the process of distributing the firmware, the public key mounted on the IoT module can be replaced with the security key of the IoT device manufacturer, who is the main producer of the IoT device equipped with the IoT module. Accordingly, it is possible to reduce the risk of hacking between IoT devices on which the same IoT module is mounted. In addition, a secure boot function may be provided by using information on the security key stored in the security area of the memory device.
본 발명의 다양하면서도 유익한 장점과 효과는 상술한 내용에 한정되지 않으며, 본 발명의 구체적인 실시 형태를 설명하는 과정에서 보다 쉽게 이해될 수 있을 것이다.Various and advantageous advantages and effects of the present invention are not limited to the above, and will be more easily understood in the course of describing specific embodiments of the present invention.
도 1은 본 발명의 일 실시예에 따른 사물인터넷 모듈로 구현할 수 있는 사물인터넷 시스템을 간단하게 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 사물인터넷 모듈을 탑재한 사물인터넷 디바이스의 제조 과정을 설명하기 위해 제공되는 도면이다.
도 3 내지 도 5는 본 발명의 일 실시예에 따른 사물인터넷 모듈을 간단하게 나타낸 블록도들이다.
도 6 및 도 7은 본 발명의 일 실시예에 따른 사물인터넷 모듈의 동작을 설명하기 위해 제공되는 흐름도들이다.
도 8 및 도 9는 본 발명의 일 실시예에 따른 사물인터넷 모듈의 동작을 설명하기 위한 도면이다.1 is a diagram schematically illustrating an IoT system that can be implemented with an IoT module according to an embodiment of the present invention.
2 is a diagram provided to explain a manufacturing process of an IoT device equipped with an IoT module according to an embodiment of the present invention.
3 to 5 are block diagrams simply illustrating an IoT module according to an embodiment of the present invention.
6 and 7 are flowcharts provided to explain the operation of the IoT module according to an embodiment of the present invention.
8 and 9 are diagrams for explaining the operation of the IoT module according to an embodiment of the present invention.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 형태들을 다음과 같이 설명한다.Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings.
도 1은 본 발명의 일 실시예에 따른 사물인터넷 시스템을 간단하게 나타낸 도면이다.1 is a diagram schematically illustrating an Internet of Things system according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일 실시예에 따른 사물인터넷 시스템(1)은 통신을 중개하기 위한 사물인터넷 네트워크(2)와, 복수의 사물인터넷 디바이스들(10-40)을 포함할 수 있다. 사물인터넷 네트워크(2)는 복수의 사물인터넷 디바이스들(10-40) 사이의 통신을 중개함과 동시에 데이터베이스(3)를 이용하는 클라우드 서비스 등을 제공할 수 있다. Referring to FIG. 1 , an
사물인터넷 디바이스들(10-40)은 사물인터넷 네트워크(2)와의 통신 기능을 갖춘 사물인터넷 모듈을 포함할 수 있다. 사물인터넷 모듈은 전반적인 제어 및 연산 기능을 수행하는 프로세서 유닛과, 데이터 저장을 위한 메모리 유닛, 주변 정보를 수집하는 센서 유닛, 및 사물인터넷 네트워크(2)와의 통신을 수행하는 통신 유닛 등을 포함할 수 있다. 일례로, 에어컨(21) 또는 공기청정기(22) 등에 포함되는 사물인터넷 모듈은, 주변의 온도와 습도, 미세먼지 농도 등을 측정하는 센서를 포함할 수 있다. 냉장고(43)는 내부 온도와 습도 등을 측정할 수 있는 센서를 포함할 수 있다.The IoT devices 10 - 40 may include an IoT module having a communication function with the
사물인터넷 네트워크(2)는 일종의 통신망으로서, 사물인터넷 디바이스들(10-40) 사이의 통신을 중개할 수 있다. 일 실시예에서 사물인터넷 네트워크(2)는 데이터베이스(3)를 가질 수 있으며, 데이터베이스(3)는 사물인터넷 시스템(1)에 등록된 사물인터넷 디바이스들(10-40)의 식별 정보 등이 저장될 수 있다. 데이터베이스(3)에 저장되지 않은 식별 정보를 가진 다른 디바이스는, 사물인터넷 시스템(1)에 연동되어 동작할 수 없다. 새로운 디바이스가 사물인터넷 네트워크(2)에 연결되면, 데이터베이스(3)에 저장된 식별 정보와 사물인터넷 네트워크(2)에 연결된 새로운 디바이스의 식별 정보를 비교함으로써, 사물인터넷 네트워크(2)에 연결된 새로운 디바이스를 사물인터넷 시스템(1)에 등록할지 여부를 결정할 수 있다.The IoT
일 실시예에서, 사물인터넷 모듈을 생산, 판매하는 모듈 제조사는, 사물인터넷 디바이스들(10-40)을 생산, 판매하는 디바이스 제조사와 다를 수 있다. 즉, 디바이스 제조사는 모듈 제조사로부터 사물인터넷 모듈을 구입하고, 구입한 사물인터넷 모듈을 가공하여 사물인터넷 모듈을 탑재한 다양한 사물인터넷 디바이스들을 제조할 수 있다. 일례로, 도 1에 도시한 사물인터넷 시스템(1)에서, 사물인터넷 디바이스들(10-40) 각각을 생산하는 디바이스 제조사가 모두 다를 수도 있다. In an embodiment, a module manufacturer that produces and sells the IoT module may be different from a device manufacturer that produces and sells the IoT devices 10-40. That is, a device manufacturer may purchase an IoT module from a module manufacturer, process the purchased IoT module, and manufacture various IoT devices equipped with the IoT module. For example, in the
사물인터넷 모듈을 구입하여 사물인터넷 디바이스들을 생산, 판매하는 디바이스 제조사들이 다양하고, 디바이스 제조사가 생산하는 사물인터넷 디바이스의 물량이 서로 다르기 때문에, 모듈 제조사가 각 디바이스 제조사들 고유의 보안 키를 탑재하여 사물인터넷 모듈을 제조하는 것은 현실적으로 어려울 수 있다. 모듈 제조사는 공통의 보안 키를 이용하여 부팅 펌웨어 및 운영 체제 등에 대한 보안 기능을 구현할 수 있는데, 동일한 사물인터넷 모듈을 탑재한 사물인터넷 디바이스들 사이에서, 부팅 펌웨어를 이용한 해킹의 위험이 존재할 수 있다.Since there are various device manufacturers who purchase IoT modules and produce and sell IoT devices, and the quantity of IoT devices produced by device manufacturers is different, module manufacturers install their own security key Manufacturing Internet modules can be difficult in reality. Module manufacturers can implement security functions for booting firmware and operating system by using a common security key, but among IoT devices equipped with the same IoT module, there may be a risk of hacking using the booting firmware.
이러한 문제를 해결하기 위하여 의도적으로 일부 회로를 사용 불가능하게 하는 eFuse 등의 방법을 이용할 수 있으나, 상대적으로 저비용으로 생산되고 회로 영역에 여유가 많지 않은 사물인터넷 모듈의 특성 상, eFuse를 적용하기는 쉽지 않을 수 있다. 본 발명의 일 실시예에서는, 사물인터넷 모듈에 탑재된 메모리의 보안 영역을 이용하여 보안 부팅 및 펌웨어 롤백 보호 기능을 제공할 수 있다. 따라서, 모듈 제조사가 디바이스 제조사들마다 서로 다른 보안 키를 적용하지 않아도 보안 부팅 기능을 구현할 수 있으며, 해킹의 위험을 낮춘 사물인터넷 모듈을 제공할 수 있다.To solve this problem, a method such as eFuse that intentionally disables some circuits can be used. it may not be According to an embodiment of the present invention, secure boot and firmware rollback protection functions may be provided by using the secure area of the memory mounted in the IoT module. Accordingly, a secure boot function can be implemented without a module manufacturer applying a different security key to each device manufacturer, and an IoT module with a reduced risk of hacking can be provided.
도 2는 본 발명의 일 실시예에 따른 사물인터넷 디바이스의 제조 과정을 설명하기 위해 제공되는 도면이다.2 is a diagram provided to explain a manufacturing process of an IoT device according to an embodiment of the present invention.
도 2를 참조하면, 모듈 제조사(50)는 서로 다른 복수의 디바이스 제조사들(61-63)에 사물인터넷 모듈을 판매할 수 있다. 모듈 제조사(50)가 복수의 디바이스 제조사들(61-63)에 판매하는 사물인터넷 모듈은 서로 같을 수 있으며, 동일한 부팅 펌웨어를 가질 수 있다. 일 실시예에서 부팅 펌웨어는 부팅 이미지 형태로 사물인터넷 모듈의 비휘발성 메모리 장치에 저장될 수 있다. 디바이스 제조사들(61-63)은 사물인터넷 모듈을 탑재한 사물인터넷 디바이스를 생산하는 과정에서, 모듈 제조사(50)가 사물인터넷 모듈에 저장한 부팅 펌웨어를 가공할 수 있다.Referring to FIG. 2 , the
모듈 제조사(50)가 복수의 디바이스 제조사들(61-63)이 생산하는 사물인터넷 디바이스들 각각에 맞춰서, 보안 부팅 기능을 제공하기 위한 보안 키를 서로 다르게 적용하는 것은 현실적으로 불가능에 가깝다. 따라서 모듈 제조사(50)로부터 같은 사물인터넷 모듈을 구매하여 복수의 디바이스 제조사들(61-63) 각각이 사물인터넷 디바이스들을 생산, 판매할 경우, 특정 사물인터넷 디바이스에 탑재된 사물인터넷 모듈의 부팅 이미지에 의해 다른 사물인터넷 디바이스가 보안 부팅되거나 또는 부팅 펌웨어가 롤백될 가능성이 있다. 예를 들어, A사(61)의 디바이스에 포함된 사물인터넷 모듈의 부팅 이미지로 B사(62)나 C사(63)의 디바이스에 포함된 사물인터넷 모듈이 보안 부팅될 수도 있다. 또는, A사(61)의 디바이스에 포함된 사물인터넷 모듈의 부팅 이미지에 포함된 부팅 펌웨어에 의해, B사(62)나 C사(63)의 디바이스에 포함된 사물인터넷 모듈의 부팅 펌웨어가 이전 버전으로 의도치 않게 롤백될 수 있다.It is practically impossible for the
본 발명의 다양한 실시예들에서는, 사물인터넷 모듈이 프로세서 유닛과 메모리 유닛을 포함할 수 있으며, 메모리 유닛은 소정의 인증 절차를 거쳐야 접근이 가능한 보안 영역을 가질 수 있다. 메모리 유닛의 보안 영역은, 보안 영역에 대한 접근 권한을 확인하기 위한 인증 키와 함께, 보안 부팅을 위한 보안 키의 정보 및 부팅 펌웨어의 배포 버전 등이 저장될 수 있다. 일례로, 상기 인증 키는 하드웨어 고유 키(Hardware Unique Key, HuK)일 수 있으며, 사물인터넷 모듈이 처음 부팅될 때 프로세서 유닛에 의해 생성되어 상기 보안 영역에 주입될 수 있다.In various embodiments of the present disclosure, the IoT module may include a processor unit and a memory unit, and the memory unit may have a secure area accessible only through a predetermined authentication procedure. In the security area of the memory unit, information on a security key for secure booting, a distribution version of booting firmware, etc. may be stored together with an authentication key for confirming an access right to the security area. For example, the authentication key may be a Hardware Unique Key (HuK), and may be generated by the processor unit when the IoT module is first booted and injected into the secure area.
사물인터넷 모듈이 부팅되면, 프로세서 유닛은 메모리 유닛의 부팅 영역에 저장된 부팅 이미지를 읽어와서 부팅 펌웨어를 실행할 수 있다. 동시에, 프로세서 유닛은 부팅 펌웨어의 버전 및 부팅 영역에 저장된 보안 키의 정보를, 보안 영역에 저장된 부팅 펌웨어의 배포 버전 및 보안 키의 정보와 각각 비교할 수 있다. 따라서, 정당하지 않은 루트로 복사된 부팅 이미지 및/또는 부팅 펌웨어에 의한 부팅을 방지할 수 있는 보안 부팅 기능을 제공함과 동시에, 부팅 펌웨어의 의도치 않은 롤백을 차단할 수 있다.When the IoT module is booted, the processor unit may read the boot image stored in the boot area of the memory unit and execute the booting firmware. At the same time, the processor unit may compare the information on the version of the boot firmware and the security key stored in the boot area with the distribution version of the boot firmware and information on the security key stored in the security area, respectively. Accordingly, it is possible to provide a secure boot function capable of preventing booting by booting images and/or booting firmware copied to an illegal route, and at the same time, prevent unintentional rollback of booting firmware.
도 3 내지 도 5는 본 발명의 일 실시예에 따른 사물인터넷 모듈을 간단하게 나타낸 블록도들이다.3 to 5 are block diagrams simply illustrating an IoT module according to an embodiment of the present invention.
도 3을 참조하면, 본 발명의 일 실시예에 따른 사물인터넷 모듈(70)은 제1 메모리 유닛(71), 제2 메모리 유닛(72), 프로세서 유닛(73), 통신 유닛(74), 및 인터페이스 유닛(75) 등을 포함할 수 있다. 사물인터넷 모듈(70)에 포함된 유닛들(71-75) 각각은 버스(76)를 통해 서로 데이터를 주고받을 수 있다.Referring to FIG. 3 , the IoT
제1 메모리 유닛(71)과 제2 메모리 유닛(72)은 서로 다른 메모리 칩에 의해 제공될 수 있다. 제1 메모리 유닛(71)은 비휘발성 메모리 장치일 수 있으며, 제2 메모리 유닛(72)은 휘발성 메모리 장치일 수 있다. 일례로, 제1 메모리 유닛(71)은 eMMC(Embedded Multi Media Card) 또는 NAND 플래시 메모리 등으로 구현될 수 있으며, 제2 메모리 유닛(72)은 동적 메모리 장치(Dynamic Random Access Memory, DRAM)으로 구현될 수 있다.The
프로세서 유닛(73)은 사물인터넷 모듈(70)의 동작 전반을 제어할 수 있다. 사물인터넷 모듈(70)이 턴-온되면, 프로세서 유닛(73)은 직접, 또는 제2 메모리 유닛(72)을 통해 제1 메모리 유닛(71)에 저장된 부팅 이미지를 읽어와서 부팅 펌웨어 및 운영 체제 등을 실행함으로써, 부팅 프로세스를 진행할 수 있다. 상기 부팅 프로세스가 진행되는 동안, 프로세서 유닛(73)은 제1 메모리 유닛(71)의 보안 영역에 저장된 보안 정보 및 펌웨어 배포(release) 버전 등을 이용하여, 부팅 펌웨어가 해킹되었는지 여부를 검사하는 동시에, 상기 부팅 펌웨어의 의도치 않은 롤백을 방지할 수 있다.The
통신 유닛(74)은 하나 이상의 유/무선 통신 기능을 제공할 수 있다. 일례로 통신 유닛(74)은 WiFi 등과 같은 무선랜, 블루투스(Bluetooth), 지그비(Zigbee) 등의 통신 기능을 제공할 수 있다. 인터페이스 유닛(75)은 카메라 또는 디스플레이 등의 장치와 연결되는 디스플레이 인터페이스, 및/또는 통신 유닛(74)과 연결되는 유선 통신 인터페이스 등을 가질 수 있다. 일례로, 인터페이스 유닛(75)은 MIPI(Mobile Industry Processor Interface)를 디스플레이 인터페이스로 포함할 수 있으며, I2C, UART, I2S 등을 유선 통신 인터페이스로 포함할 수 있다.The
다음으로 도 4를 참조하면, 본 발명의 일 실시예에 따른 사물인터넷 모듈(100)은 프로세서 유닛(110), 제1 메모리 유닛(120), 및 제2 메모리 유닛(130)을 포함할 수 있다. 일 실시예에서 프로세서 유닛(110)는 중앙 처리 장치(CPU, 111), 하드웨어 고유 키(HuK) 생성 회로(112) 및 메모리 컨트롤러(113) 등을 포함할 수 있으며, 시스템-온-칩(System-On-Chip, SoC) 형태로 구현될 수 있다. 제1 메모리 유닛(120)은 비휘발성 메모리로 구현될 수 있으며, 일 실시예로 eMMC(Embedded Multi Media Card) 또는 NAND 플래시 메모리 등일 수 있다.Next, referring to FIG. 4 , the
메모리 컨트롤러(113)는 제2 메모리 유닛(130)의 보안 속성을 설정하기 위한 컨트롤러일 수 있다. 일례로 메모리 컨트롤러(113)는 보안 소프트웨어와 일반 소프트웨어에 의한 논리적 분할을 주변 장치에 적용하기 위한 트러스트존(trustzone) 방식을 이용하는 트러스트존 보호 컨트롤러(TrustZone Protection Controller, TZPC)를 포함할 수 있다. 메모리 컨트롤러(113)에 의해 제2 메모리 유닛(130)의 적어도 일부 영역이 보안 영역으로 할당될 수 있다.The
제1 메모리 유닛(120)은 복수의 부팅 영역들(121, 122), 일반적인 사용자 데이터를 저장하는 저장 영역(123), 및 보안 영역(124) 등을 포함할 수 있다. 상기 영역들(121-124)은 제1 메모리 유닛(120)의 제조 단계에서 정의되는 영역들일 수 있다. 보안 영역(124)은, 보안 영역(124)에 대한 접근 권한을 확인하는 데에 필요한 인증 키(125)를 저장할 수 있다. 일 실시예에서 인증 키(125)는 사물인터넷 모듈(100)이 처음 부팅될 때, 프로세서 유닛(110)의 하드웨어 고유 키 생성 회로(112)가 생성하여 주입한 하드웨어 고유 키일 수 있다. 보안 영역(124)은 일반적인 데이터를 저장하는 저장 영역(123)과 달리, 인증 키(125)를 통한 인증 절차를 통과한 경우에만 접근이 가능한 영역일 수 있다. 일 실시예에서 보안 영역(124)은 RPMB(Replay Protected Memory Block)일 수 있다.The
하드웨어 고유 키 생성 회로(112)는 프로세서 유닛(110)에 포함된 회로 구조로부터 인증 키를 생성할 수 있다. 하드웨어 고유 키는 프로세서 유닛(110)에 포함된 회로 구조의 특징에 기초하여 달라질 수 있으므로, 해킹의 위험성을 크게 낮출 수 있다. 하드웨어 고유 키는 사물인터넷 모듈(100)의 처음으로 부팅될 때 보안 영역(124)에 주입될 수 있으며, 이후 프로세서 유닛(110)이 보안 영역(124)에 저장된 데이터에 대한 접근 권한을 획득하고자 하는 인증 절차에 활용될 수 있다. 사물인터넷 모듈(100)은 모듈 제조사가 생산하여 디바이스 제조사에 판매하며, 디바이스 제조사가 사물인터넷 모듈(100)을 탑재한 사물인터넷 디바이스를 생산하여 최종 소비자(end-user)에게 판매할 수 있다. 따라서, 하드웨어 고유 키가 보안 영역(124)에 주입되는 최초 부팅 동작은, 모듈 제조사 또는 디바이스 제조사에 의해 실행되는 절차일 수 있다.The hardware-specific
부팅 영역들(121, 122) 각각은 부트 로더 및 부팅 이미지 등을 저장할 수 있다. 일례로, 부팅 펌웨어는 부팅 이미지 형태로 부팅 영역들(121, 122) 각각에 저장될 수 있다. 또한, 부팅 영역들(121, 122) 중 적어도 하나는 보안 부팅 기능을 제공하기 위한 정보를 제1 보안 정보로서 저장할 수 있다. 일 실시예에서, 사물인터넷 모듈(100)이 부팅될 때 먼저 로딩되는 제1 부팅 영역(121)에 상기 제1 보안 정보가 저장될 수 있다. 예를 들어 제1 보안 정보는 사물인터넷 모듈(100)을 탑재한 사물인터넷 디바이스를 제조하는 디바이스 제조사가 부여한 보안 키의 해쉬 값 등을 포함할 수 있다.Each of the
한편 보안 영역(124)은, 보안 부팅 기능을 제공하기 위한 정보를 제2 보안 정보로서 저장할 수 있다. 일례로 제2 보안 정보는 하드웨어 보안 모듈(Hardware Security Module, HSM) 등에 의해 부팅 영역들(121, 122)에 부팅 펌웨어가 저장 및 배포(release)될 때 보안 영역(124)에 저장될 수 있다. 제2 보안 정보는 사물인터넷 모듈(100)을 탑재한 사물인터넷 디바이스를 제조하는 디바이스 제조사가 부여한 보안 키의 해쉬 값 등을 포함할 수 있다.Meanwhile, the
앞서 설명한 바와 같이 하나의 모듈 제조사가 생산, 판매하는 사물인터넷 모듈(100)을 이용하여, 복수의 디바이스 제조사들이 다양한 사물인터넷 디바이스들을 생산, 판매할 수 있다. 부팅 영역들(121, 122)에 저장된 부팅 펌웨어는 다른 부팅 펌웨어에 의해 덮어 씌워질 수 있으며, 따라서 보안 부팅 기능이 제공되지 않을 경우 외부에서 복사된 부팅 펌웨어에 의해 사물인터넷 모듈(100)이 부팅될 수 있다. As described above, by using the
상기와 같은 문제를 해결하기 위해, 본 발명의 일 실시예에서는 부팅 영역들(121, 122) 중 적어도 하나에 저장된 제1 보안 정보가, 보안 영역(124)에 저장된 제2 보안 정보와 일치하는 경우에만 부팅 프로세스를 진행할 수 있다. 제2 보안 정보는 부팅 펌웨어를 배포하는 과정에서 하드웨어 보안 모듈 등을 이용하여 디바이스 제조사가 보안 영역(124)에 저장하는 보안 키의 해쉬 값 등일 수 있으며, 부팅 펌웨어가 배포된 이후에는 보안 영역(124)에 저장된 제2 보안 정보가 변경될 수 없다. 따라서, 부팅 영역들(121, 122)에 저장된 부팅 펌웨어를 다른 펌웨어로 변경하여 사물인터넷 모듈(100)을 부팅하고자 하는 경우, 제1 보안 정보와 제2 보안 정보의 불일치로 인해 부팅 프로세스가 중단될 수 있으며, 결과적으로 외부에서 복사한 부팅 펌웨어를 이용한 해킹의 위험성을 낮출 수 있다.In order to solve the above problem, in an embodiment of the present invention, when the first security information stored in at least one of the
또한 본 발명의 일 실시예에서는, 부팅 프로세스가 진행되는 동안, 부팅 영역들(121, 122)에 저장된 부팅 펌웨어의 버전을, 보안 영역(124)에 저장된 펌웨어 배포 버전과 비교할 수 있다. 상기 펌웨어 배포 버전은, 디바이스 제조사 등이 하드웨어 보안 모듈 등을 이용하여 배포한 부팅 펌웨어의 버전일 수 있다. 프로세서 유닛(110)은, 부팅 영역들(121, 122)에 저장된 부팅 펌웨어의 버전이 보안 영역(124)에 저장된 펌웨어 배포 버전보다 이전 버전일 경우, 부팅 프로세스를 중단할 수 있다. 따라서, 정당하지 않은 경로를 통해 부팅 영역들(121, 122)에 저장된 부팅 펌웨어에 의한, 펌웨어 롤백을 방지할 수 있다.Also, in an embodiment of the present invention, the version of the boot firmware stored in the
다음으로 도 5를 참조하면, 사물인터넷 모듈(200)은 프로세서 유닛(210), 제1 메모리 유닛(220), 제2 메모리 유닛(230) 등을 포함할 수 있다. 앞서 설명한 바와 같이 제1 메모리 유닛(220)은 eMMC, NAND 플래시 메모리 등의 비휘발성 메모리일 수 있다. Next, referring to FIG. 5 , the
프로세서 유닛(210)은 하드웨어 고유 키 생성 회로(211)를 포함할 수 있다. 하드웨어 고유 키 생성 회로(211)가 생성한 하드웨어 고유 키(232)는, 프로세서 유닛(210) 내부에 존재하는 회로의 미세 구조를 반영하여 생성될 수 있다. 따라서, 같은 모듈 제조사가 제조한 사물인터넷 모듈(200) 사이에서도, 하드웨어 고유 키(232)는 서로 다르게 생성될 수 있다.The
하드웨어 고유 키(232)는 사물인터넷 모듈(200)의 최초 부팅시에 제2 메모리 유닛(230)의 보안 영역(231)을 통해 제1 메모리 유닛(220)의 보안 영역(224)에 주입될 수 있다. 앞서 설명한 바와 같이, 제2 메모리 유닛(230)의 보안 영역(231)은 프로세서 유닛(210)에 포함되는 메모리 컨트롤러에 의해 할당되는 영역일 수 있다. 일 실시예에서, 사물인터넷 모듈(200)은 부팅 펌웨어가 저장된 상태로 디바이스 제조사에 판매되는 경우가 일반적이므로, 최초 부팅 작업은 디바이스 제조사가 아닌 모듈 제조사에서 실행될 수 있다. 하드웨어 고유 키(232)는 제1 메모리 유닛(220)의 보안 영역(224)에 주입된 후, 보안 영역(224)에 대한 접근 권한을 판단하기 위한 인증 키(229)로 이용될 수 있다.The hardware
한편, 모듈 제조사는 사물인터넷 모듈(200)을 디바이스 제조사에 판매하기 전에, 부팅 영역들(221, 222)에 탑재된 부팅 펌웨어의 정보 및 공통 키의 정보 등을 제1 메모리 영역(220)의 보안 영역(224)에 저장할 수 있다. 공통 키는 모듈 제조사가 생산하는 사물인터넷 모듈(200)에 일률적으로 주입될 수 있으며, 공통 키의 해쉬 값 등이 제1 메모리 영역(220)의 보안 영역(224)에 저장될 수 있다. 한편, 보안 영역(224)에 저장되는 부팅 펌웨어의 정보는 모듈 제조사가 제공한 부팅 펌웨어의 버전 정보를 포함할 수 있다. 보안 영역(224)은 RPMB일 수 있으며, 최초 부팅 시에 프로세서 유닛(210)이 주입한 인증 키(229)를 이용한 인증 절차를 통과해야만 접근이 가능한 영역일 수 있다.Meanwhile, before the module manufacturer sells the
모듈 제조사가 주입한 사물인터넷 모듈(200)에 주입한 공통 키는, 사물인터넷 모듈(200)을 탑재한 사물인터넷 디바이스를 제조하는 디바이스 제조사 고유의 보안 키로 대체될 수 있다. 일 실시예에서, 디바이스 제조사는 사물인터넷 디바이스의 개발/생산 과정에서, 고유의 보안 키를 제1 메모리 유닛(220)에 주입할 수 있으며, 모듈 제조사에 의해 부팅 영역들(221, 222)에 저장된 부팅 펌웨어 및 운영 체제를 가공할 수 있다. 부팅 펌웨어 및 운영 체제 등은, 부팅 영역들(221, 222)에 부팅 이미지로 저장될 수 있다.The common key injected into the
한편 디바이스 제조사는, 사물인터넷 디바이스를 판매하기 전에, 하드웨어 보안 모듈 등을 이용한 펌웨어 배포 절차를 진행할 수 있다. 일례로 상기 펌웨어 배포 절차에서, 디바이스 제조사 고유의 보안 키의 정보가 제1 보안 정보 및 제2 보안 정보로서 부팅 영역들(221, 222) 및 보안 영역(224)에 각각 저장될 수 있다. 또한 상기 펌웨어 배포 절차에서 부팅 영역들(221, 222)에 저장되는 부팅 펌웨어의 버전이, 펌웨어 배포 버전으로 보안 영역(224)에 저장될 수 있다.Meanwhile, the device manufacturer may proceed with a firmware distribution procedure using a hardware security module or the like before selling the IoT device. For example, in the firmware distribution procedure, information on a device manufacturer's unique security key may be stored in the
제2 보안 정보와 펌웨어 배포 버전은 보안 영역(224)에 저장되므로, 인증 키(229)로 저장된 하드웨어 고유 키(232)를 이용한 인증 절차 없이는 변경, 삭제될 수 없다. 따라서, 최종 소비자에게 판매된 사물인터넷 디바이스에 탑재된 사물인터넷 모듈(200)은, 보안 영역(229)에 저장된 제2 보안 정보(228)를 부팅 영역들(221, 222)에 저장된 제1 보안 정보(226)와 비교함으로써, 부팅 영역들(221, 222)에 저장된 부팅 펌웨어(225)가 오염되었는지 여부를 판단할 수 있다. 제1 보안 정보(226)가 제2 보안 정보(228)와 일치하지 않으면, 프로세서 유닛(210)은 진행 중인 부팅 프로세스를 중단할 수 있다. Since the second security information and the firmware distribution version are stored in the
또한 사물인터넷 모듈(200)은, 보안 영역(224)에 저장된 펌웨어 배포 버전(227)을 부팅 영역들(221, 222)에 저장된 부팅 이미지(225)의 펌웨어 버전과 비교함으로써, 부팅 펌웨어가 롤백되었는지 여부를 판단할 수 있다. 제1 보안 정보(226)와 제2 보안 정보(228)가 일치하는 경우에도, 부팅 영역들(221, 222)에 저장된 부팅 이미지의 펌웨어 버전이 보안 영역(224)에 저장된 펌웨어 배포 버전보다 낮으면, 부팅 펌웨어의 롤백을 방지하기 위하여 부팅 프로세스를 중단할 수 있다. 결과적으로 본 발명의 일 실시예에 따른 사물인터넷 모듈(200)은, 정당하지 않은 부팅 펌웨어에 의한 부팅을 방지하는 보안 부팅 기능을 제공함과 동시에, 또한 부팅 펌웨어의 의도치 않은 롤백을 방지할 수 있다.In addition, the
도 6 및 도 7은 본 발명의 일 실시예에 따른 사물인터넷 모듈의 동작을 설명하기 위해 제공되는 흐름도들이다.6 and 7 are flowcharts provided to explain the operation of the IoT module according to an embodiment of the present invention.
우선 도 6을 참조하면, 본 발명의 일 실시예에 따른 사물인터넷 모듈의 동작은 사물인터넷 모듈의 전원이 켜진 후 프로세서 유닛이 최초 부팅 여부를 확인하는 것으로 시작될 수 있다(S10). 일례로 프로세서 유닛은, NAND 플래시 메모리, eMMC 등의 비휘발성 메모리 장치를 포함하는 메모리 유닛 내에 하드웨어 고유 키가 주입되어 있는지 여부에 따라 최초 부팅 여부를 확인할 수 있다. S10 단계에서 최초 부팅인 것으로 확인되면 프로세서 유닛은 하드웨어 고유 키를 생성하여 메모리 유닛 내에 주입할 수 있다. Referring first to FIG. 6 , the operation of the IoT module according to an embodiment of the present invention may start by checking whether the processor unit is booted for the first time after the IoT module is powered on ( S10 ). For example, the processor unit may check whether the first boot is performed according to whether a hardware-specific key is injected into a memory unit including a non-volatile memory device such as a NAND flash memory or an eMMC. If it is confirmed in step S10 that it is the first boot, the processor unit may generate a unique hardware key and inject it into the memory unit.
최초 부팅 여부를 확인한 이후 진행되는 부팅 프로세스에서, 프로세서 유닛은 부팅 펌웨어의 오염 여부를 확인할 수 있다(S20). 일례로, 메모리 유닛은 복수의 부팅 영역들을 가질 수 있으며, 부팅 영역들 중 적어도 하나는 부팅 펌웨어를 부팅 이미지 형태로 저장할 수 있다. 또한 본 발명의 일 실시예에서 부팅 영역들은, 부팅 펌웨어의 오염 여부를 판단하기 위한 제1 보안 정보를 포함할 수 있다. 제1 보안 정보는 부팅 펌웨어와 함께 부팅 영역들에 주입된 보안 키의 해쉬 값 등일 수 있다.In the booting process that is performed after checking whether the booting is the first time, the processor unit may check whether the booting firmware is contaminated (S20). For example, the memory unit may have a plurality of booting areas, and at least one of the booting areas may store booting firmware in the form of a booting image. Also, according to an embodiment of the present invention, the boot regions may include first security information for determining whether the booting firmware is contaminated. The first security information may be a hash value of a security key injected into boot regions together with boot firmware.
프로세서 유닛은 부팅 영역들로부터 읽어온 제1 보안 정보를, 메모리 유닛의 보안 영역에 저장된 제2 보안 정보와 비교하여 부팅 펌웨어의 오염 여부를 확인할 수 있다. 메모리 유닛의 보안 영역은 별도의 인증 절차를 통해서만 접근이 가능한 영역일 수 있으며, 따라서 보안 영역에 저장된 제2 보안 정보는, 부팅 영역들에 저장된 제1 보안 정보와 달리, 사물인터넷 모듈을 탑재한 사물인터넷 디바이스가 최종 소비자에게 판매된 이후에는 변경 및/또는 삭제될 수 없다. 일례로 제2 보안 정보는, 사물인터넷 디바이스를 제조하는 디바이스 제조사에 의해 보안 영역에 주입될 수 있다.The processor unit may check whether the booting firmware is contaminated by comparing the first security information read from the booting areas with the second security information stored in the security area of the memory unit. The security area of the memory unit may be an area accessible only through a separate authentication procedure. Therefore, the second security information stored in the security area, unlike the first security information stored in the boot areas, is a thing equipped with an IoT module After the Internet device is sold to an end consumer, it cannot be changed and/or deleted. For example, the second security information may be injected into the security area by a device manufacturer that manufactures an IoT device.
부팅 펌웨어가 오염되지 않은 것으로 판단되면, 프로세서 유닛은 부팅 펌웨어의 롤백 여부를 확인할 수 있다(S30). 프로세서 유닛은, 메모리 유닛의 보안 영역에 저장된 펌웨어 배포 버전을, 부팅 이미지에 의해 실행된 부팅 펌웨어의 버전과 비교함으로써 부팅 펌웨어의 롤백 여부를 판단할 수 있다. If it is determined that the booting firmware is not corrupted, the processor unit may check whether the booting firmware is rolled back (S30). The processor unit may determine whether to rollback the booting firmware by comparing the firmware distribution version stored in the secure area of the memory unit with the version of the booting firmware executed by the booting image.
보안 영역에 저장된 펌웨어 배포 버전은, 디바이스 제조사가 사물인터넷 디바이스를 최종 소비자에게 판매하기 전에 최종적으로 배포한 부팅 펌웨어의 버전에 해당할 수 있다. 따라서, 펌웨어 배포 버전이 부팅 영역으로부터 로딩된 부팅 펌웨어의 버전보다 최신 버전이면, 부팅 펌웨어의 롤백을 방지하기 위해 프로세서 유닛이 부팅 프로세스를 중단할 수 있다.The firmware distribution version stored in the secure area may correspond to the version of the boot firmware finally distributed by the device manufacturer before the IoT device is sold to the end consumer. Therefore, if the firmware distribution version is newer than the version of the boot firmware loaded from the boot area, the processor unit may stop the booting process to prevent rollback of the boot firmware.
다음으로 도 7을 참조하여 본 발명의 일 실시예에서 따른 사물인터넷 모듈의 부팅 프로세스를 더욱 자세히 설명하기로 한다. 도 7을 참조하면, 본 발명의 일 실시예에 따른 사물인터넷 모듈의 동작 방법은, 프로세서 유닛이 메모리 유닛의 부팅 영역에 저장된 부팅 이미지와 제1 보안 정보를 획득하는 것으로 시작할 수 있다(S11). 부팅 영역을 갖는 메모리 유닛은 비휘발성 메모리 장치로 구현될 수 있으며, 제1 보안 정보는 소정의 보안 키의 해쉬 값 등을 포함할 수 있다.Next, a booting process of the IoT module according to an embodiment of the present invention will be described in more detail with reference to FIG. 7 . Referring to FIG. 7 , the method of operating the IoT module according to an embodiment of the present invention may start with the processor unit acquiring a booting image and first security information stored in a booting area of the memory unit ( S11 ). The memory unit having the boot area may be implemented as a nonvolatile memory device, and the first security information may include a hash value of a predetermined security key, and the like.
프로세서 유닛은 메모리 유닛의 부팅 영역에 직접 접근하거나 또는 휘발성 메모리 장치 등을 통해 부팅 영역에 접근하여 부팅 이미지 및 제1 보안 정보를 획득할 수 있다. 상기 부팅 이미지에 의하여 부팅 펌웨어가 실행될 수 있다. 한편, 프로세서 유닛은, 프로세서 유닛에 내장된 하드웨어 고유 키 생성 회로를 이용하여 하드웨어 고유 키를 생성할 수 있다(S12). 하드웨어 고유 키는 프로세서 유닛에 존재하는 회로의 미세 구조에 기초하여 생성되는 키로서, 하나의 모듈 제조사가 제조한 사물인터넷 모듈들에서도 서로 다른 값을 가질 수 있다.The processor unit may obtain a booting image and first security information by directly accessing the booting area of the memory unit or accessing the booting area through a volatile memory device or the like. The booting firmware may be executed by the booting image. Meanwhile, the processor unit may generate a hardware-specific key by using a hardware-specific key generation circuit built into the processor unit (S12). The hardware-specific key is a key generated based on the microstructure of a circuit present in the processor unit, and may have different values even in IoT modules manufactured by one module manufacturer.
프로세서 유닛은 메모리 유닛에 이미 주입된 하드웨어 고유 키가 있는지 여부를 판단할 수 있다(S13). S13 단계의 판단 결과 메모리 유닛에 이미 주입된 하드웨어 고유 키가 없으면 프로세서 유닛은 사물인터넷 모듈이 처음 부팅된 것으로 판단할 수 있다. 반면 S13 단계의 판단 결과 메모리 유닛에 하드웨어 고유 키가 존재하면, 사물인터넷 모듈을 이전에 부팅한 적이 있었던 것으로 판단할 수 있다.The processor unit may determine whether there is a hardware-specific key already injected into the memory unit ( S13 ). As a result of the determination in step S13, if there is no hardware-specific key already injected into the memory unit, the processor unit may determine that the IoT module is booted for the first time. On the other hand, if the hardware-specific key exists in the memory unit as a result of the determination in step S13, it may be determined that the IoT module has been booted before.
S13 단계에서 사물인터넷 모듈이 처음 부팅된 것으로 판단하면, 프로세서 유닛은 하드웨어 고유 키를 메모리 유닛의 보안 영역에 인증 키로서 주입할 수 있다(S14). 또한, S11 단계에서 획득한 부팅 이미지에 의해 실행되는 부팅 펌웨어의 버전을 펌웨어 배포 버전으로 보안 영역에 저장하는 한편, S11 단계에서 획득한 제1 보안 정보를 제2 보안 정보로서 보안 영역에 저장할 수 있다(S15). 이후 프로세서 유닛은, 부팅 영역들에서 다음 부팅 이미지를 로딩하여 부팅 펌웨어 및/또는 운영 체제 등을 실행함으로써, 부팅 프로세스를 진행할 수 있다(S40).If it is determined in step S13 that the IoT module is booted for the first time, the processor unit may inject a hardware-specific key into the security area of the memory unit as an authentication key (S14). In addition, the version of the booting firmware executed by the boot image obtained in step S11 is stored in the secure area as the firmware distribution version, while the first security information obtained in step S11 may be stored in the secure area as second security information. (S15). Thereafter, the processor unit may load the next booting image from the booting areas and execute the booting firmware and/or the operating system, thereby proceeding the booting process ( S40 ).
일반적으로 사물인터넷 모듈의 최초 부팅은, 사물인터넷 모듈을 생산, 판매하는 모듈 제조사에 의해 실행될 수 있다. 따라서, S15 단계에서 메모리 유닛의 보안 영역에 저장되는 펌웨어 배포 버전은, 모듈 제조사가 가공하여 부팅 영역에 저장한 부팅 펌웨어의 버전일 수 있다. 또한, S15 단계에서 메모리 유닛의 보안 영역에 저장되는 제2 보안 정보는, 모듈 제조사가 생산, 판매하는 사물인터넷 모듈들에 공통적으로 주입되는 공통 키의 해쉬 값일 수 있다. In general, the first booting of the IoT module may be performed by a module manufacturer that produces and sells the IoT module. Accordingly, the firmware distribution version stored in the security area of the memory unit in step S15 may be the version of the boot firmware processed by the module manufacturer and stored in the boot area. In addition, the second security information stored in the security area of the memory unit in step S15 may be a hash value of a common key commonly injected into IoT modules produced and sold by the module manufacturer.
S15 단계에서 메모리 유닛의 보안 영역에 저장된 펌웨어 배포 버전은, 이후 사물인터넷 모듈을 구매하여 사물인터넷 디바이스를 생산하는 디바이스 제조사에 의해, 새로운 버전으로 갱신될 수 있다. 디바이스 제조사는 사물인터넷 디바이스를 생산하는 과정에서 부팅 영역에 저장되어 있던 부팅 펌웨어 및 운영 체제 등을 가공할 수 있다. 디바이스 제조사는 사물인터넷 디바이스를 최종 소비자에게 판매하기 전에, 하드웨어 보안 모듈 등을 이용하여 펌웨어 배포 절차를 진행할 수 있다.The firmware distribution version stored in the security area of the memory unit in step S15 may then be updated to a new version by a device manufacturer that purchases an IoT module and produces an IoT device. Device manufacturers can process the boot firmware and operating system stored in the boot area in the process of producing IoT devices. A device manufacturer may proceed with a firmware distribution procedure using a hardware security module or the like before selling an IoT device to an end consumer.
상기 펌웨어 배포 절차에서, 디바이스 제조사는 최종적으로 가공된 부팅 펌웨어를 메모리 유닛의 부팅 영역들에 저장할 수 있다. 또한, 디바이스 제조사 고유의 보안 키의 해쉬 값을 제1 보안 정보로서 부팅 영역들에 저장할 수 있다. 동시에, 부팅 영역들에 저장된 부팅 펌웨어의 버전이 펌웨어 배포 버전으로서 메모리 유닛의 보안 영역에 저장될 수 있으며, 디바이스 제조사 고유의 보안 키의 해쉬 값이, 메모리 유닛의 보안 영역에 제2 보안 정보로서 저장될 수 있다. In the firmware distribution procedure, the device manufacturer may store the finally processed boot firmware in boot areas of the memory unit. Also, a hash value of a device manufacturer's unique security key may be stored in boot areas as first security information. At the same time, the version of the boot firmware stored in the boot areas may be stored in the security area of the memory unit as the firmware distribution version, and the hash value of the device manufacturer's unique security key is stored as the second security information in the security area of the memory unit can be
펌웨어 배포 버전과 제2 보안 정보 등이 저장되는 메모리 유닛의 보안 영역은, 소정의 명령어 세트를 거치지 않고는 접근이 불가능한 영역, 예를 들어 RPMB일 수 있다. 따라서, 디바이스 제조사가 최종 소비자에게 사물인터넷 디바이스를 판매하기 전에 보안 영역에 저장한 펌웨어 배포 버전 및 제2 보안 정보는, 이후의 유통 과정에서 변경 및/또는 삭제되지 않을 수 있다.The security area of the memory unit in which the firmware distribution version and the second security information are stored may be an area that cannot be accessed without passing through a predetermined instruction set, for example, RPMB. Accordingly, the firmware distribution version and the second security information stored in the security area before the device manufacturer sells the IoT device to the end consumer may not be changed and/or deleted in the subsequent distribution process.
S13 단계에서 사물인터넷 모듈이 처음 부팅되지 않은 것으로 판단하면, 프로세서 유닛은 메모리 유닛의 보안 영역에 저장된 펌웨어 배포 버전과 제2 보안 정보를 읽어올 수 있다(S21). 프로세서 유닛은 S21 단계에서 읽어 온 제2 보안 정보를, S11 단계에서 읽어 온 제1 보안 정보와 비교할 수 있다(S22). S22 단계에서 제1 보안 정보와 제2 보안 정보가 서로 일치하면, 프로세서 유닛은 부팅 영역에서 획득한 부팅 이미지가 오염되지 않은 것으로 판단할 수 있다. 반면, S22 단계에서 제1 보안 정보와 제2 보안 정보가 서로 일치하지 않는 것으로 판단되면, 프로세서 유닛은 부팅 영역에 저장된 부팅 이미지가 오염된 것으로 판단하여 부팅 프로세스를 중단시킬 수 있다(S50).If it is determined in step S13 that the IoT module is not initially booted, the processor unit may read the firmware distribution version and the second security information stored in the security area of the memory unit (S21). The processor unit may compare the second security information read in step S21 with the first security information read in step S11 (S22). If the first security information and the second security information match each other in step S22, the processor unit may determine that the boot image acquired in the boot area is not contaminated. On the other hand, if it is determined in step S22 that the first security information and the second security information do not match each other, the processor unit may determine that the booting image stored in the booting area is corrupted and stop the booting process ( S50 ).
S22 단계의 판단 결과 제1 보안 정보와 제2 보안 정보가 서로 일치하면, 프로세서 유닛은 S11 단계에서 획득한 부팅 이미지에 의해 실행되는 부팅 펌웨어의 버전이, S21 단계에서 읽어온 펌웨어 배포 버전 이상인지 여부를 판단할 수 있다(S31). S31 단계의 판단 결과 S11 단계에서 획득한 부팅 이미지에 의해 실행되는 부팅 펌웨어의 버전이 S21 단계에서 읽어온 펌웨어 배포 버전보다 작으면, 프로세서 유닛은 부팅 펌웨어 롤백의 위험이 있는 것으로 판단할 수 있다. 따라서, 프로세서 유닛은 부팅 프로세스를 중단시킬 수 있다(S50).If it is determined in step S22 that the first security information and the second security information match each other, the processor unit determines whether the version of the boot firmware executed by the boot image obtained in step S11 is greater than or equal to the firmware distribution version read in step S21 can be determined (S31). If it is determined in step S31 that the version of the boot firmware executed by the boot image obtained in step S11 is smaller than the firmware distribution version read in step S21, the processor unit may determine that there is a risk of booting firmware rollback. Accordingly, the processor unit may stop the booting process ( S50 ).
반면 S31 단계의 판단 결과 부팅 이미지에 의해 실행되는 부팅 펌웨어의 버전이 펌웨어 배포 버전 이상이면, 프로세서 유닛은 부팅 펌웨어 롤백의 위험성이 없는 것으로 판단할 수 있다. 따라서, 펌웨어 배포 버전이 부팅 이미지에 의해 실행되는 부팅 펌웨어의 버전보다 작으면, 보안 영역에 저장된 펌웨어 배포 버전을, 부팅 이미지에 의해 실행되는 부팅 펌웨어의 버전으로 업데이트할 수 있다(S32). 이후 프로세서 유닛은, 부팅 영역들에서 순서대로 부팅 이미지들을 로딩하여 다음 부팅 펌웨어 및/또는 운영 체제(OS) 등을 실행함으로써(S33), 부팅 프로세스를 진행할 수 있다(S40).On the other hand, if it is determined in step S31 that the version of the booting firmware executed by the booting image is greater than or equal to the firmware distribution version, the processor unit may determine that there is no risk of booting firmware rollback. Therefore, if the firmware distribution version is smaller than the version of the boot firmware executed by the boot image, the firmware distribution version stored in the secure area may be updated to the version of the boot firmware executed by the boot image ( S32 ). Thereafter, the processor unit may load boot images sequentially from the boot areas and execute the next booting firmware and/or an operating system (OS), etc. (S33), thereby proceeding the booting process (S40).
도 7을 참조하여 설명한 바와 같이, 본 발명에서는 메모리 유닛의 부팅 영역들에서 읽어 온 제1 보안 정보를, 메모리 유닛의 보안 영역에 저장된 제2 보안 정보와 비교하여 부팅 영역에 저장된 부팅 이미지가 오염되었는지 여부를 판단할 수 있다. 또한, 제1 보안 정보와 제2 보안 정보가 일치하는 경우라 해도, 부팅 이미지에 의해 실행되는 부팅 펌웨어의 버전이 보안 영역에 저장된 펌웨어 배포 버전과 같거나 그보다 클 때에만 부팅 프로세스를 계속 진행할 수 있다. 따라서 사용자가 의도하지 않은 부팅 펌웨어의 롤백을 방지할 수 있다.As described with reference to FIG. 7 , in the present invention, the first security information read from the boot regions of the memory unit is compared with the second security information stored in the security region of the memory unit to determine whether the boot image stored in the boot region is contaminated. can determine whether Also, even if the first security information and the second security information match, the booting process can be continued only when the version of the boot firmware executed by the boot image is equal to or greater than the firmware distribution version stored in the security area. . Therefore, it is possible to prevent rollback of the boot firmware unintentionally by the user.
도 8 및 도 9는 본 발명의 일 실시예에 따른 사물인터넷 모듈의 동작을 설명하기 위한 도면이다.8 and 9 are diagrams for explaining the operation of the IoT module according to an embodiment of the present invention.
우선 도 8을 참조하면, 본 발명의 일 실시예에 따른 사물인터넷 모듈(300)은 메모리 유닛의 보안 영역(310)이 제2 보안 정보(311)와 펌웨어 배포 버전(312)을 저장할 수 있다. 제2 보안 정보(311)는 공통 키의 해쉬 값일 수 있으며, 공통 키는 사물인터넷 모듈(300)을 생산, 및/또는 판매하는 모듈 제조사에 의해 메모리의 보안 영역(310)에 저장된 키일 수 있다. 펌웨어 배포 버전(312)은 모듈 제조사가 메모리 유닛의 부팅 영역에 저장한 부팅 펌웨어의 버전일 수 있다.Referring first to FIG. 8 , in the
도 8에 도시한 일 실시예는, 디바이스 제조사가 사물인터넷 모듈을 구매하여 개발 작업을 거친 후, 사물인터넷 디바이스 생산과 함께 펌웨어를 배포하는 과정을 나타낸 것일 수 있다. 도 8을 참조하면, 디바이스 제조사는 사물인터넷 모듈(300)에 새로운 버전의 부팅 펌웨어를 탑재하는 한편, 하드웨어 보안 모듈(400)을 이용하여 보안 영역(310)에 저장되어 있던 제2 보안 정보(311)를, 사물인터넷 모듈(300)이 탑재된 사물인터넷 디바이스의 고유한 제2 보안 정보(311)로 변경할 수 있다. 따라서, 도 8에 도시한 바와 같이 메모리의 보안 영역(310)에 저장된 제2 보안 정보(311)가 변경되고, 펌웨어 배포 버전(312)이 증가할 수 있다.The embodiment shown in FIG. 8 may show a process of distributing firmware together with IoT device production after a device manufacturer purchases an IoT module and undergoes development work. Referring to FIG. 8 , the device manufacturer mounts a new version of booting firmware on the
다음으로 도 9를 참조하면, 사물인터넷 모듈(300)이 탑재된 사물인터넷 디바이스가 최종 소비자에게 판매된 이후에도, 여러 가지 필요에 의해 부팅 펌웨어가 업데이트될 수 있다. 도 9를 참조하면, 부팅 펌웨어가 업데이트 되는 경우, 보안 영역(310)에 저장된 펌웨어 배포 버전(312)은 증가할 수 있다. 펌웨어 업데이트에 따라 펌웨어 배포 버전(312)을 덮어쓰기 전에, 부팅 영역에 저장된 보안 키의 해쉬 값을 보안 영역(310)에 저장된 제2 보안 정보(311)와 비교하는 절차 및 부팅 영역에 저장된 부팅 펌웨어의 버전을 보안 영역(310)에 저장된 펌웨어 배포 버전(312)과 비교하는 절차가 펌웨어 업데이트 과정에서 실행될 수 있다. 일례로, 도 9에 도시한 일 실시예에서, 업데이트되는 부팅 펌웨어의 버전이 0.9보다 낮거나, 부팅 펌웨어와 함께 부팅 영역에 저장된 보안 키의 해쉬 값이 제2 보안 정보(311)와 다를 경우, 펌웨어 업데이트가 실행되지 않을 수 있다.Next, referring to FIG. 9 , even after the IoT device equipped with the
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.The present invention is not limited by the above-described embodiments and the accompanying drawings, but is intended to be limited by the appended claims. Therefore, various types of substitution, modification and change will be possible by those skilled in the art within the scope not departing from the technical spirit of the present invention described in the claims, and it is also said that it falls within the scope of the present invention. something to do.
100, 200, 300: 사물인터넷 모듈
110, 210: 프로세서
120, 220: 제1 메모리 유닛
130, 230: 제2 메모리 유닛100, 200, 300: IoT module
110, 210: processor
120, 220: first memory unit
130, 230: second memory unit
Claims (20)
상기 부팅 펌웨어를 이용하여 부팅 프로세스를 진행하며, 상기 펌웨어 배포 버전과 상기 부팅 펌웨어의 버전을 비교하고 상기 제1 보안 정보를 상기 제2 보안 정보와 비교하여 상기 부팅 프로세스의 진행 여부를 판단하는 프로세서 유닛; 을 포함하고,
상기 프로세서 유닛은, 상기 프로세서 유닛에 포함되는 회로의 구조로부터 결정되는 하드웨어 고유 키(Hardware Unique Key)를 상기 부팅 펌웨어의 최초 실행에서 생성하는 하드웨어 고유 키 생성 회로를 포함하며,
상기 프로세서 유닛은 상기 하드웨어 고유 키를 상기 보안 영역에 저장하고, 상기 보안 영역에 대한 접근 권한을 판단하는 보안 키로 상기 하드웨어 고유 키를 이용하는 사물인터넷 모듈.
a memory unit having a boot area storing boot firmware and first security information, and a security area storing a firmware release version and second security information; and
A processor unit that performs a booting process using the booting firmware, compares the firmware distribution version with a version of the booting firmware, and compares the first security information with the second security information to determine whether to proceed with the booting process ; including,
The processor unit includes a hardware unique key generation circuit that generates a hardware unique key determined from a structure of a circuit included in the processor unit at the first execution of the booting firmware,
The processor unit stores the hardware-specific key in the security area, and the IoT module uses the hardware-specific key as a security key for determining an access right to the security area.
상기 프로세서 유닛은 상기 부팅 펌웨어가 최초로 실행된 것으로 판단되면, 상기 보안 영역의 상기 펌웨어 배포 버전을, 상기 부팅 영역의 상기 부팅 펌웨어의 버전으로 변경하는 사물인터넷 모듈.
The method of claim 1,
When it is determined that the booting firmware is first executed, the processor unit changes the firmware distribution version of the security area to the version of the booting firmware of the booting area.
상기 프로세서 유닛은, 상기 부팅 펌웨어가 실행되고 상기 보안 영역에 상기 하드웨어 고유 키가 저장되어 있지 않으면, 상기 부팅 펌웨어가 최초로 실행된 것으로 판단하는 사물인터넷 모듈.
3. The method of claim 2,
The processor unit is an IoT module that determines that the booting firmware is initially executed when the booting firmware is executed and the hardware unique key is not stored in the secure area.
상기 프로세서 유닛은, 상기 하드웨어 고유 키를 상기 보안 영역과의 데이터 송수신을 위한 인증 수단으로 이용하는 사물인터넷 모듈.
3. The method of claim 2,
The processor unit is an IoT module using the hardware-specific key as an authentication means for data transmission/reception with the security area.
상기 프로세서 유닛은, 상기 제1 보안 정보와 상기 제2 보안 정보가 서로 다르면, 상기 부팅 프로세스를 중단하는 사물인터넷 모듈.
According to claim 1,
The processor unit is configured to stop the booting process when the first security information and the second security information are different from each other.
상기 프로세서 유닛은, 상기 부팅 펌웨어의 버전이 상기 펌웨어 배포 버전보다 이전 버전이면, 상기 부팅 프로세스를 중단하는 사물인터넷 모듈.
According to claim 1,
The processor unit is configured to stop the booting process when the version of the booting firmware is older than the firmware distribution version.
상기 프로세서 유닛은, 상기 부팅 펌웨어의 버전이 상기 펌웨어 배포 버전보다 최신 버전이면, 상기 펌웨어 배포 버전을 상기 부팅 펌웨어의 버전으로 업데이트하는 사물인터넷 모듈.
According to claim 1,
The processor unit is configured to update the firmware distribution version to the boot firmware version when the version of the booting firmware is newer than the firmware distribution version.
상기 제2 보안 정보는, 상기 사물인터넷 모듈이 탑재된 사물인터넷 디바이스를 제조하는 디바이스 제조사가 주입한 공개 키를 포함하는 사물인터넷 모듈.
According to claim 1,
The second security information is an IoT module including a public key injected by a device manufacturer that manufactures an IoT device on which the IoT module is mounted.
상기 제1 보안 정보는 상기 부팅 펌웨어와 함께 상기 부팅 영역에 저장된 보안 키의 해쉬 값(hash value)을 포함하며,
상기 제2 보안 정보는 공개 키의 해쉬 값(hash value)을 포함하는 사물인터넷 모듈.
According to claim 1,
The first security information includes a hash value of a security key stored in the booting area together with the booting firmware,
The second security information is an IoT module including a hash value of a public key.
상기 보안 영역으로부터 상기 펌웨어 배포 버전 및 상기 제2 인증 정보를 획득하여, 보안 모드에서 상기 부팅 펌웨어의 버전 및 상기 제1 인증 정보와 각각 비교하는 보안 부트 로직을 포함하는 동적 메모리 유닛; 를 더 포함하는 사물인터넷 모듈.
According to claim 1,
a dynamic memory unit including secure boot logic to obtain the firmware distribution version and the second authentication information from the secure area and compare them with the version of the booting firmware and the first authentication information, respectively, in a secure mode; IoT module further comprising a.
상기 프로세서 유닛은, 상기 동적 메모리 유닛을 상기 보안 모드에서 제어하기 위한 동적 메모리 컨트롤러를 포함하는 사물인터넷 모듈.
11. The method of claim 10,
wherein the processor unit includes a dynamic memory controller for controlling the dynamic memory unit in the security mode.
상기 동적 메모리 컨트롤러는, 트러스트존 보호 제어기(TrustZone Protection Controller, TZPC)를 포함하는 사물인터넷 모듈.
12. The method of claim 11,
The dynamic memory controller is an IoT module including a TrustZone Protection Controller (TZPC).
상기 프로세서 유닛은, 상기 부팅 펌웨어가 최초로 실행되면, 상기 프로세서 유닛에 포함되는 회로의 구조에 기초하여 생성되는 하드웨어 고유 키를 상기 보안 부트 로직을 통해 상기 보안 영역에 저장하는 사물인터넷 모듈.
11. The method of claim 10,
The processor unit is configured to store, in the secure area through the secure boot logic, a hardware unique key generated based on a structure of a circuit included in the processor unit when the booting firmware is first executed.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/037,554 US10810311B2 (en) | 2017-09-21 | 2018-07-17 | Internet-of-things module |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170121672 | 2017-09-21 | ||
KR20170121672 | 2017-09-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190033411A KR20190033411A (en) | 2019-03-29 |
KR102392474B1 true KR102392474B1 (en) | 2022-04-29 |
Family
ID=65898778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180023572A KR102392474B1 (en) | 2017-09-21 | 2018-02-27 | Internet-of-things module |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102392474B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240036407A (en) | 2022-09-13 | 2024-03-20 | 최아란 | Combination internet of things system and method of providing internet of things service |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102236761B1 (en) * | 2020-12-22 | 2021-04-06 | 주식회사 유니온플레이스 | Internet of things device, and system and method of managing internet of things devices |
KR102549872B1 (en) * | 2021-12-06 | 2023-07-05 | (주)더프라이밍 | Dryer controller |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010244261A (en) * | 2009-04-03 | 2010-10-28 | Canon Electronics Inc | Information processing apparatus and method |
US20110087872A1 (en) * | 2009-10-13 | 2011-04-14 | Gaurav Shah | Firmware Verified Boot |
US20120079287A1 (en) * | 2010-03-26 | 2012-03-29 | Maxlinear, Inc. | Firmware Authentication and Deciphering for Secure TV Receiver |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150047789A (en) * | 2013-10-25 | 2015-05-06 | 삼성전자주식회사 | Method and device for controlling lock terminal |
-
2018
- 2018-02-27 KR KR1020180023572A patent/KR102392474B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010244261A (en) * | 2009-04-03 | 2010-10-28 | Canon Electronics Inc | Information processing apparatus and method |
US20110087872A1 (en) * | 2009-10-13 | 2011-04-14 | Gaurav Shah | Firmware Verified Boot |
US20120079287A1 (en) * | 2010-03-26 | 2012-03-29 | Maxlinear, Inc. | Firmware Authentication and Deciphering for Secure TV Receiver |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240036407A (en) | 2022-09-13 | 2024-03-20 | 최아란 | Combination internet of things system and method of providing internet of things service |
Also Published As
Publication number | Publication date |
---|---|
KR20190033411A (en) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810311B2 (en) | Internet-of-things module | |
US8874892B1 (en) | Assessing BIOS information prior to reversion | |
CN104850762B (en) | Prevent the undesirable method of the movement of computer, computer program and computer | |
US9881162B2 (en) | System and method for auto-enrolling option ROMS in a UEFI secure boot database | |
KR101687277B1 (en) | Key revocation in system on chip devices | |
CN105144185B (en) | Access control device code and system start code | |
JP6433198B2 (en) | System and method for secure boot ROM patch | |
KR102392474B1 (en) | Internet-of-things module | |
US20140250290A1 (en) | Method for Software Anti-Rollback Recovery | |
US20110202752A1 (en) | Semiconductor device including encryption section, semiconductor device including external interface, and content reproduction method | |
CN103080904A (en) | Providing a multi-phase lockstep integrity reporting mechanism | |
JP5307196B2 (en) | Providing a system integrated with silicon code | |
US20200065082A1 (en) | Memory-efficient upgrade staging | |
US20130091394A1 (en) | Data processing apparatus and validity verification method | |
CN107567629A (en) | Dynamic firmware module loader in credible performing environment container | |
KR20210091585A (en) | Electronic device performing firmware update based on user authentication and operating method thereof | |
CN109375953B (en) | Operating system starting method and device | |
US10838742B1 (en) | Multi-user hidden feature enablement in firmware | |
KR20220027965A (en) | Prevent firmware rollback | |
US8028142B2 (en) | Controller of storage device, storage device, and control method of storage device | |
US11914717B2 (en) | Information handling systems and related methods to cryptographically verify information handling system platform components and track events associated with the platform components | |
US11307904B2 (en) | Configurable peripherals | |
JP2010009454A (en) | Information processing apparatus | |
JP7341376B2 (en) | Information processing device, information processing method, and information processing program | |
US11816252B2 (en) | Managing control of a security processor in a supply chain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |