KR20200006452A - Method and apparatus for defending remote attacks of device - Google Patents
Method and apparatus for defending remote attacks of device Download PDFInfo
- Publication number
- KR20200006452A KR20200006452A KR1020180080222A KR20180080222A KR20200006452A KR 20200006452 A KR20200006452 A KR 20200006452A KR 1020180080222 A KR1020180080222 A KR 1020180080222A KR 20180080222 A KR20180080222 A KR 20180080222A KR 20200006452 A KR20200006452 A KR 20200006452A
- Authority
- KR
- South Korea
- Prior art keywords
- mpu
- area
- firmware
- gateway
- remote
- 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
- G06F21/575—Secure boot
-
- 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
-
- 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
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
본 발명의 실시예는 경량 IoT 기기의 원격 공격에 대한 방어 방법 및 방어 장치에 관한 것으로, 경량 IoT 기기 내부의 실행 코드 및 참조 데이터를 보호하기 위한 방어 방법 및 장치에 관한 것이다. Embodiments of the present invention relate to a defense method and a defense device for remote attack of a lightweight IoT device, and a defense method and device for protecting the executable code and reference data inside the lightweight IoT device.
IoT(Internet of Things) 기술은 기기(사물)들이 서로 인터넷으로 연결되어, 물리적인 위치를 초월하여, 경량 IoT 기기 사이에 자유롭게 데이터가 교환되는 환경을 제공할 수 있다. Internet of Things (IoT) technology can provide an environment in which devices (objects) are connected to each other through the Internet, transcending physical locations and freely exchanging data between lightweight IoT devices.
다만, 상기한 개방성으로 인하여 인터넷을 통해 누구나 경량 IoT 기기에 접근할 수 있다. 특히, 경량 IoT 기기의 경우에 제한된 보안성이 낮은 컴퓨팅 자원으로 운영되기 때문에, 외부의 원격 공격자의 공격에 쉽게 노출될 수 있다는 단점이 있다.However, due to the openness, anyone can access the lightweight IoT device through the Internet. In particular, in the case of a light weight IoT device, since it operates with limited security resources and low security, it may be easily exposed to an external remote attacker.
일반적으로 원격 공격자에 의한 소프트웨어 공격의 형태로, 대상 경량 IoT 기기 내부의 소프트웨어 취약점을 이용하여 원격에서 공격 코드를 경량 IoT 기기에 삽입하고, 해당 경량 IoT 기기의 제어권을 탈취하는 형태 또는 경량 IoT 기기에 저장된 정보를 외부로 유출하는 형태가 있다.In general, it is a form of software attack by a remote attacker, using a software vulnerability inside a target lightweight IoT device to remotely inject the attack code into the lightweight IoT device, and to take over control of the lightweight IoT device or to a lightweight IoT device. There is a form of leaking stored information to the outside.
상기한 문제를 해결하기 위한 종래 보안 기술의 경우, 메모리 보호 유니트와 같은 하드웨어 또는 소프트웨어를 이용하여 공격 코드가 삽입되는 메모리 영역에 대한 접근을 거부하는 등 메모리 영역에 대한 접근을 통제하는 기술이 제안되고 있다. In the case of the conventional security technology for solving the above problems, a technique for controlling access to the memory area, such as denying access to the memory area into which the attack code is inserted using hardware or software such as a memory protection unit, is proposed. have.
다만, 상위 권한으로 실행되는 통제 프로그램 조차도 원격 공격의 대상이 될 수 있으며, 공격 코드가 상위 실행 권한을 획득한 후에 보호 메모리 영역에 대한 접근 거부를 해제하고 공격 코드를 삽입하는 우회 공격 양상이 나타나고 있다. However, even a control program executed with a higher privilege may be a target of a remote attack, and a bypass attack pattern is released in which an attack code releases access to a protected memory area and inserts an attack code after an attack code obtains a superior execution authority. .
즉, 공격 상황을 진단하고 대처하는 통제 프로그램 또한 외부의 공격으로부터 노출될 수 있으므로, 신뢰성이 보장된 보안 요소가 경량 IoT 기기 내부에 필요한 것이 실정이다.In other words, the control program for diagnosing and coping with the attack situation may also be exposed from external attacks, so there is a need for reliable security elements inside the lightweight IoT device.
본 발명의 실시예는 메모리 보호 유니트에 대한 자기 잠금 기술을 통해 경량 IoT 기기에 대한 원격 공격자의 접근을 차단하는 것을 목적으로 한다.An embodiment of the present invention aims to block a remote attacker's access to a lightweight IoT device through a self-locking technique for the memory protection unit.
본 발명의 실시예에 따른 경량 IoT 기기의 메모리 보호 유니트(MPU)를 이용하여 원격 공격자에 의한 소프트웨어 공격으로부터 방어하는 방법은 메모리의 시스템 제어 영역에서 부트 코드를 포함한 실행 코드 및 참조 데이터 영역에 대해 시스템 MPU 영역으로 지정하고, 활성화 이후부터 기 설정된 MPU 영역에 대한 변경을 거부하도록 접근 속성을 설정하는 단계; 상기 원격 공격자에 의한 상기 시스템 MPU 영역으로의 불법 변경 시도 시에 발생되는 예외상황의 처리루틴을 시스템이 재가동되도록 설정하는 단계; 및 상기 시스템 MPU 영역을 활성화시키는 단계를 포함할 수 있다.A method for defending against a software attack by a remote attacker using a memory protection unit (MPU) of a lightweight IoT device according to an embodiment of the present invention includes a system for executing code and a reference data area including boot code in a system control area of a memory. Setting an access property to designate an MPU area and to reject a change to a preset MPU area after activation; Setting a system to restart the processing routine of an exception occurring when an illegal change attempt is made to the system MPU area by the remote attacker; And activating the system MPU region.
상기 시스템 MPU 영역은 상기 시스템의 재가동을 통해서만 해제될 수 있다.The system MPU area can be released only by restarting the system.
상기 시스템 MPU 영역은 상기 시스템 MPU 영역이 활성화된 이후부터 변경 또는 재설정이 불가능한 잠김 상태를 유지할 수 있다.The system MPU region may maintain a locked state that cannot be changed or reset after the system MPU region is activated.
상기 시스템이 재가동되면, 부트 코드 실행 단계에서 재가동 사실을 게이트웨이로 전송하는 단계, 그리고 상기 게이트웨이로부터 수신하는 응답에 따라 다음 동작을 결정하는 단계를 더 포함할 수 있다.When the system is restarted, the method may further include transmitting a restart fact to a gateway in a boot code execution step, and determining a next operation according to a response received from the gateway.
상기 결정하는 단계는 상기 게이트웨이에 의해 상기 원격 공격자에 의한 공격 상황이 아닌 것으로 판단되면, 상기 부트 코드 실행 단계를 계속 수행하는 단계를 더 포함할 수 있다.The determining may further include continuing to execute the boot code if it is determined by the gateway that the attack is not attacked by the remote attacker.
상기 결정하는 단계는 상기 응답 값이 펌웨어 업데이트를 알리는 경우, 상기 게이트웨이를 통해 펌웨어를 수신하는 단계; 수신한 상기 펌웨어를 검증하는 단계; 및 상기 펌웨어를 업데이트하는 단계를 포함할 수 있다.The determining may include receiving firmware through the gateway when the response value indicates a firmware update; Verifying the received firmware; And updating the firmware.
상기 결정하는 단계는 상기 업데이트 이후 상기 시스템을 재가동시키는 단계를 더 포함할 수 있다.The determining may further comprise restarting the system after the update.
상기 결정하는 단계는 상기 응답 값이 펌웨어 업데이트가 필요하지 않음을 나타내는 경우, 실행될 운영체제 및 응용프로그램에 대한 무결성 검증을 수행하는 단계를 포함할 수 있다.The determining may include performing integrity verification for an operating system and an application to be executed when the response value indicates that no firmware update is required.
본 발명의 실시예에 따른 경량 IoT 기기들이 포함된 물리적 네트워크를 관할하는 게이트웨이에서 상기 원격 공격자에 의한 상기 경량 IoT 기기들로의 소프트웨어 공격으로부터 방어하는 방법은 상기 경량 IoT 기기들로부터 시스템 재가동 사실을 수신하는 단계; 상기 경량 IoT 기기들로부터 수신된 시스템 재가동 사실들을 분석하여 상기 원격 공격자에 의한 공격 여부 또는 펌웨어의 결함 여부를 판단하는 단계; 및 상기 원격 공격자에 의한 공격 상황으로 판단된 경우 공격 의심 트래픽의 내부 유입을 차단하는 단계를 포함할 수 있다.A method for defending against a software attack by the remote attacker from a software attack on a physical network including a light weight IoT device according to an embodiment of the present invention receives a system restart from the light weight IoT devices. Making; Analyzing system restart facts received from the lightweight IoT devices to determine whether the remote attacker is attacked or whether the firmware is defective; And blocking the inflow of suspicious traffic when determined as the attack situation by the remote attacker.
상기 펌웨어의 결함으로 판단된 경우, 펌웨어 업데이트를 상기 경량 IoT 기기들로 전송하는 단계, 그리고 상기 경량 IoT 기기들이 펌웨어를 업데이트하도록 서버로부터 수신된 펌웨어를 상기 경량 IoT 기기들로 전송하는 단계를 더 포함할 수 있다.If it is determined that the firmware is defective, transmitting a firmware update to the lightweight IoT devices, and transmitting the firmware received from the server to the lightweight IoT devices so that the lightweight IoT devices update the firmware. can do.
상기 서버로부터 수신된 펌웨어를 검증하는 단계를 더 포함할 수 있다.The method may further include verifying firmware received from the server.
본 발명의 실시예에 따른 원격 공격자에 의한 소프트웨어 공격으로부터 방어하기 위한 경량 IoT 기기의 원격 공격 방어 장치는 적어도 하나의 MPU 영역 중 접근 속성이 접근 거부로 설정된 시스템 MPU 영역으로의 접근 시도 시에 발생되는 예외상황의 처리루틴을 시스템이 재가동되도록 설정하는 메모리 보호 유니트 제어부를 포함할 수 있다.The remote attack defense device of a lightweight IoT device for defending against a software attack by a remote attacker according to an embodiment of the present invention is generated when an attempt is made to access a system MPU area in which at least one MPU area has an access property set to access denied. It may include a memory protection unit control unit for setting the processing routine of the exception to restart the system.
상기 메모리 보호 유니트 제어부는 부트 코드를 포함한 실행 코드 및 참조 데이터 영역에 대해 상기 시스템 MPU 영역으로 지정하고, 상기 시스템 MPU 영역에 대한 상기 접근 속성을 접근 거부로 설정할 수 있다.The memory protection unit controller may designate an execution code including a boot code and a reference data area as the system MPU area, and set the access attribute of the system MPU area to access denied.
상기 메모리 보호 유니트 제어부는 상기 시스템 제어 영역 외의 나머지 영역 중 일부 영역을 일반 MPU 영역으로 지정하고, 상기 일반 MPU 영역의 접근 속성을 읽기쓰기, 읽기전용 및 접근거부 중에서 하나로 설정할 수 있다.The memory protection unit controller may designate a portion of the remaining regions other than the system control region as a general MPU region, and set an access attribute of the general MPU region to one of read write, read only, and deny access.
상기 시스템 MPU 영역은 상기 시스템의 재가동을 통해서만 해제될 수 있다.The system MPU area can be released only by restarting the system.
상기 시스템 MPU 영역이 활성화된 이후부터 상기 시스템 MPU 영역은 변경 또는 재설정이 불가능한 잠김 상태를 유지할 수 있다.After the system MPU area is activated, the system MPU area may remain locked, which cannot be changed or reset.
상기 시스템이 재가동되면, 부트 코드 실행 단계에서 재가동 사실을 게이트웨이로 전송하고 상기 게이트웨이로부터 수신하는 응답에 따라 동작을 결정하는 CPU를 더 포함할 수 있다.When the system is restarted, the boot code execution step may further include a CPU for transmitting the fact of restarting to the gateway and determine the operation according to the response received from the gateway.
상기 CPU는 상기 게이트웨이에 의해 상기 원격 공격자에 의한 공격 상황이 아닌 것으로 판단되면, 상기 부트 코드 실행 단계를 계속 수행하고, 상기 응답 값이 펌웨어 업데이트를 알리는 경우, 상기 게이트웨이를 통해 서버로부터 수신한 펌웨어를 업데이트할 수 있다.If the CPU determines that the gateway is not attacked by the remote attacker, the CPU continues executing the boot code, and when the response value informs the firmware update, the CPU receives the firmware received from the server through the gateway. You can update it.
본 발명의 실시예에 따르면, 부트 코드 실행 단계에서는 인터넷이 연결되지 않은 상태이기 때문에, 경량 IoT 기기 내부로의 외부 공격자 트래픽 유입을 배제할 수 있다. According to the embodiment of the present invention, since the Internet is not connected in the boot code execution step, it is possible to exclude the external attacker traffic inflow into the lightweight IoT device.
또한, 본 발명의 실시예에 따르면, 보호 메모리 영역이 활성화 된 이후에 실제 공격의심 상황이 발생하는 경우, 상대적으로 보안 자원이 제약적인 경량 IoT 기기 대신, 상대적으로 보안성이 더 높은 외부 게이트웨이를 통해 상황을 보다 객관적으로 진단하고 네트워크 차원에서 적극적으로 대응할 수 있다.In addition, according to an embodiment of the present invention, if a real attack suspicion occurs after the protected memory area is activated, instead of a lightweight IoT device with relatively limited security resources, a relatively secure external gateway is provided. The situation can be diagnosed more objectively and actively responded at the network level.
또한, 본 발명의 실시예에 따르면, 이미 경량 IoT 기기용 칩의 일부 요소로서 탑재되어 있는 메모리 보호 유니트를 그대로 이용함에 따라 보안 기술의 적용을 위한 추가적인 하드웨어 변경 부담이 없어 경제적이고, 이미 생산된 경량 IoT 기기들에 바로 적용이 가능한 기술로서 호환성이 높다는 장점이 있다.In addition, according to the embodiment of the present invention, by using the memory protection unit that is already mounted as a part of the chip for the light weight IoT device as it is, there is no additional hardware change burden for applying the security technology, economical, lightweight already produced As a technology that can be directly applied to IoT devices, it has the advantage of high compatibility.
도 1은 본 발명의 실시예에 따른 프로세서를 도시한 블록도이다.
도 2는 본 발명의 실시예에 따른 메모리를 도시한 블록도이다.
도 3은 본 발명의 실시예에 따른 MPU 영역을 지정하고 접근 속성을 정의하는 과정을 도시한다.
도 4는 본 발명의 실시예에 따른 부트 코드의 일부로서 실행되는 MPU 영역 설정 방법을 나타낸 흐름도이다.
도 5는 본 발명의 실시예에 따른 인터넷을 통해 응용 프로그램 원격 배포 시 적용되는 코드 서명 검증의 일 예를 나타낸 도면이다.
도 6은 본 발명의 실시예에 따른 경량 IoT 기기의 원격 공격 방어 과정을 도시한다.
도 7은 본 발명의 실시예에 따른 게이트웨이에서 악의적인 공격 여부의 판단 및 대응 방법을 나타낸 흐름도이다.
도 8은 본 발명의 실시예에 따른 경량 IoT 기기에서의 원격 공격 방어 방법을 나타낸 흐름도이다.
도 9는 본 발명의 실시예에 따른 경량 IoT 기기에서의 MPU 영역의 일 예를 도시한 블록도이다. 1 is a block diagram illustrating a processor according to an embodiment of the present invention.
2 is a block diagram illustrating a memory according to an embodiment of the present invention.
3 illustrates a process of specifying an MPU region and defining an access attribute according to an embodiment of the present invention.
4 is a flowchart illustrating a method of setting an MPU region executed as part of a boot code according to an embodiment of the present invention.
5 is a diagram illustrating an example of code signature verification applied when remotely distributing an application through the Internet according to an embodiment of the present invention.
6 illustrates a remote attack defense process of a lightweight IoT device according to an embodiment of the present invention.
7 is a flowchart illustrating a method of determining and responding to a malicious attack in a gateway according to an embodiment of the present invention.
8 is a flowchart illustrating a remote attack defense method in a lightweight IoT device according to an embodiment of the present invention.
9 is a block diagram illustrating an example of an MPU region in a lightweight IoT device according to an embodiment of the present invention.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification and claims, when a portion is said to "include" a certain component, it means that it can further include other components, without excluding other components unless specifically stated otherwise.
이제 본 발명의 실시예에 따른 경량 IoT 기기의 원격 공격 방어 방법 및 장치에 대하여 도면을 참고로 하여 상세하게 설명한다. Now, a remote attack defense method and apparatus for a lightweight IoT device according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 실시예에 따른 프로세서를 도시한 블록도이다. 1 is a block diagram illustrating a processor according to an embodiment of the present invention.
도 1을 참고하면, 프로세서(100)는 중앙 처리 유니트(Central Processing Unit, CPU)(101), 메모리 보호 유니트(Memory Protection Unit, MPU)(102), 메모리 버스(103), 시스템 제어기(104), I/O(input/output) 제어기(105) 및 메모리 제어기(106)를 포함한다. Referring to FIG. 1, the
CPU(101)는 MPU(102), 메모리 버스(103) 및 메모리 제어기(106)를 통해 메모리와 통신한다. 즉 CPU(101)에서 참조(reference)하는 모든 메모리 주소는 메모리 버스(103)를 관할하는 MPU(102)를 경유하도록 설계된다. CPU(101)는 MPU(102)의 제어에 기반하여 메모리를 참조하여 소프트웨어를 실행한다. The
MPU(102)는 메모리의 보호를 위해 구현된 프로세서(100)의 내부 컴포넌트이다. MPU(102)는 메모리에 저장된 소프트웨어가 CPU(101)에 의해 실행되는 동안 메모리의 영역 중 특정 영역에 대한 접근을 개별 동작에 기반하여 제한하거나, 악성 소프트웨어의 메모리 불법 접근으로부터 해당 메모리 영역을 보호하는 접근 제어(access control)를 수행할 수 있다. MPU 102 is an internal component of
도 2는 본 발명의 실시예에 따른 메모리를 도시한 블록도이다.2 is a block diagram illustrating a memory according to an embodiment of the present invention.
도 2에 도시한 바와 같이, 메모리(200)는 플래시 메모리 영역(205), SRAM(Static Random Access Memory) 영역, 주변 장치를 제어하는 명령어들을 기억하는 주변 장치(peripherals) 영역(204) 및 프로세서를 제어하는 명령어들을 기억하는 시스템 제어(System Control) 영역(206)을 포함한다. As shown in FIG. 2, the
플래시 메모리 영역 중 MPU에 의해 보호될 영역으로 지정된 MPU 영역 2(202), 주변 장치 영역 중 MPU에 보호될 영역으로 지정된 MPU 영역 1(201) 및 시스템 제어 영역 중 MPU에 보호될 영역으로 지정된 MPU 영역 3(203)은 메모리 영역 중 MPU 영역 3(203)에 매핑된 MPU 설정 관련 레지스터를 통해 설정될 수 있다. 즉, 시스템 제어 영역은 프로세서의 동작을 설정하는 레지스터들을 포함하며, 프로세서 동작 설정 제어 동작 중에서도 MPU의 설정에 관여하는 레지스터들을 포함한다.MPU area 2 (202) designated as the area to be protected by the MPU among the flash memory areas,
도 3은 본 발명의 실시예에 따른 MPU 영역을 지정하고 접근 속성을 정의하는 과정을 도시한다. 3 illustrates a process of specifying an MPU region and defining an access attribute according to an embodiment of the present invention.
MPU 제어부(300)는 메모리의 영역 중 MPU 영역 3(도 2의 203)에 매핑되며, MPU의 동작을 제어하기 위한 레지스터 값들이 설정된(혹은 정의된) 소프트웨어 모듈이 될 수 있다. MPU(102)는 MPU 제어부(300)에서 정의되는 레지스터 설정값에 기반하여 메모리의 각 영역들(205, 204, 206)에 대한 보호를 수행할 수 있으며, 이하 MPU 제어부 및 MPU 제어부에 의해 정의되는 MPU의 동작에 대해 설명한다.The
도 3에 도시한 바와 같이, MPU 제어부(300)는 MPU 설정 관련 레지스터들(301, 302, 303)를 포함할 수 있으며, 각 MPU 영역을 지정하고, 각 MPU 영역에 대한 접근 속성을 정의할 수 있다. As shown in FIG. 3, the
접근 속성은 읽기/쓰기(Read/Write), 읽기전용(Read Only), 접근거부(No Access) 중 하나의 형태로 선언될 수 있으며, 선언된 속성 이외의 권한으로 해당 MPU 영역에 접근을 시도하는 경우 시스템 오류(fault) 같은 예외상황(exception)을 발생시키도록 설정할 수 있다.An access property may be declared in one of read / write, read only, and no access types, and attempts to access the MPU area with privileges other than the declared property. In this case, it can be set to generate an exception, such as a system fault.
MPU(102) 내에서 동시에 지정 가능한 MPU 영역의 최대 개수는 MPU 제어부(300)에 포함된 레지스터들의 수에 의해 결정된다. 이에 따라, 다양한 속성을 갖는 메모리 영역을 확보할 수 있도록, 상위 실행 권한(high execution privilege)을 갖는 시스템 소프트웨어는 시스템 동작 도중에 시스템 운영 정책에 기반하여 MPU 제어부(300)의 MPU 설정 관련 레지스터들(301, 302, 303)의 값을 재설정할 수 있다.The maximum number of MPU areas that can be designated simultaneously in the
본 발명의 실시예에 따르면, MPU 제어부(300)는 MPU 설정 관련 레지스터 1(301)를 통해 MPU 영역 1(201) 및 MPU 영역 1에 대한 접근 속성, MPU 설정 관련 레지스터 2(302)를 통해 MPU 영역 2(202) 및 MPU 영역 2에 대한 접근 속성, MPU 설정 관련 레지스터 3(303)를 통해 MPU 영역 3(203) 및 MPU 영역 3에 대한 접근 속성을 정의할 수 있다. 즉, MPU 제어부(300)는 MPU 설정 관련 레지스터들(301, 302, 303)을 통해 MPU 영역 1(201)에 대한 접근 속성, MPU 영역 2(202)에 대한 접근 속성뿐만 아니라, 시스템 제어 영역(206) 중에서 MPU 영역 3(203)인 MPU 제어부(300) 자신의 접근 속성도 함께 설정할 수 있다. 즉, 보호할 MPU 영역들을 지정하고, 지정된 MPU 영역들에 대한 외부의 접근 속성을 관리하는 MPU 제어부(300)가 MPU 제어부 자신의 내부에 자신의 동작이 정의된 MPU 설정 관련 레지스터 값들을 포함하는 MPU 영역 3(203)에 대한 접근 속성을 MPU 설정 관련 레지스터(303)의 설정값들을 이용하여 지정할 수 있다. 예를 들면, MPU 제어부(300)는 MPU(102)에 대한 일회성 설정(one-time set-up) 효과를 하드웨어적으로 구현할 수 있다. According to the exemplary embodiment of the present invention, the
이와 같이 자기 잠금으로 한번 설정된 MPU 영역 3(203)은 오직 시스템의 재가동(reset)을 통해서만 해제될 수 있도록 하드웨어적으로 보장된다. 따라서 시스템 재가동에 의해 MPU 영역이 활성화(activation)된 이후에는 경량 IoT 기기 내부에서 실행되는 어떤 소프트웨어도 이미 설정된 MPU 영역 3(203)의 접근 속성을 변경할 수 없게 되며, 악의적인 의도로 변경하려는 모든 접근 시도는 시스템 오류인 예외상황을 발생시킨다.MPU region 3 (203), once set as a self-lock, is hardware guaranteed to be released only through a system reset. Therefore, after the MPU zone is activated by system restart, no software running inside the lightweight IoT device can change the access property of the MPU zone 3 (203) that has already been set, and any access attempting to change it with malicious intentions. Attempts result in exceptions, which are system errors.
즉, MPU 제어부(300)는 향후 자기 영역에 대한 변경을 거부하도록 MPU 영역 3(203)을 설정할 수 있으며, MPU 영역 3(203)이 활성화된 이후에는 MPU 영역 3(203)을 통해 MPU 제어부의 기존 설정을 변경하는 것이 불가능하게 된다. That is, the
본 발명의 실시예에서는 이와 같은 MPU 제어부(300)에 의한 MPU 제어부(300)에 대한 자기 잠금 기재를 칩(chip) 초기화 과정에 적용하여 메모리 보호 영역에 대한 일회성 설정(one-time set-up) 효과를 제공한다. 이는 종래 소프트웨어 기술이 보장하지 못하는 최상위 신뢰성(root of trust)을 MPU 기반으로 제공할 수 있다. 여기에서 최상위 신뢰성은 소프트웨어에 대한 안전한 실행을 보장하는 척도로서 시스템 전체 신뢰성의 근거가 된다. 이때 안전한 실행은 프로그램 코드가 정해진 실행순서를 건너뛰거나 바꾸지 않고 최초 설치된 순서대로 모든 과정을 수행하는 것을 의미하며 코드 자체에 대한 무결성(integrity)도 함께 내포하고 있다.In the embodiment of the present invention, the one-time set-up of the memory protection area is applied by applying the self-locking substrate for the
도 4는 본 발명의 실시예에 따른 부트 코드의 일부로서 실행되는 MPU 영역 설정 방법을 나타낸 흐름도이다. 4 is a flowchart illustrating a method of setting an MPU region executed as part of a boot code according to an embodiment of the present invention.
도 4를 참고하면, 파워 온(power on)이 되면(S401), 부트 코드의 실행이 시작된다(S402). Referring to FIG. 4, when power is on (S401), execution of the boot code is started (S402).
MPU 제어부(300)는 먼저 인터럽트 및 예외상황을 해제(disable)시킨 후(S403), 인터럽트 및 예외상황 처리루틴(handler routine)을 설정(set up)한다(S404). 여기에는 메모리 영역 중 MPU(102)를 통해 보호되는 MPU 영역들에 대한 접근 거부 시 발생되는 예외상황에 대한 처리 루틴(exception handler routine)도 함께 설정된다. 본 발명의 실시예에 따른 MPU 제어부(300)는 접근 거부 예외상황이 발생하는 경우 시스템이 바로 재가동(reset) 되도록 MPU 설정 관련 레지스터들(301, 302, 303)를 설정한다. The
다음, MPU 제어부(300)는 전체 메모리 영역 중 MPU 제어부의 MPU 설정 관련 레지스터에 매핑된 MPU 영역 3(203)을 제외한 나머지 메모리 영역 중에서 MPU 영역으로 보호가 필요한 MPU 영역 1, MPU 영역 2을 지정하고, 지정된 MPU 영역에 대한 접근 속성을 설정한다(S405). Next, the
MPU 영역 1, MPU 영역 2에 대한 MPU 영역 설정이 모두 끝나면, MPU 제어부(300)는 추후 MPU 영역 3(203)에 대한 설정 변경이 요청될 때 해당 접근이 거부되도록 MPU 영역 3(203)에 대한 접근 속성을 설정한다(S406). When the MPU area settings for
최종적으로, MPU 제어부(300)는 설정된 모든 MPU 영역을 활성화(enable)시키고(S407), 예외상황 처리가 가능하도록 인터럽트를 활성화시킨다(S408). Finally, the
이렇게 MPU 영역이 활성화 되는 순간부터 MPU 영역은 재부팅을 제외한 기기 내부의 경량 IoT 기기 내부의 어떤 소프트웨어에 의해서도 변경 또는 재설정이 불가능한 잠김 상태가 유지된다. From this moment, when the MPU area is activated, the MPU area remains locked, which cannot be changed or reset by any software inside the lightweight IoT device except the reboot.
이와 같이, 본 발명의 실시예에서는 MPU 제어부(300) 자신의 MPU 영역 3(203)을 메모리 보호 영역으로 지정하는, 이른바 자기 잠금(self-locking)을 통해 메모리 보호 영역에 대한 일회성 설정 효과를 하드웨어적으로 확보할 수 있다. 특히, 접근 거부 또는 읽기 전용 형태의 메모리 영역에 대한 일회성 설정 효과는 상위 권한으로 실행되는 제어 소프트웨어의 코드 및 데이터를 하드웨어 차원에서 보호할 수 있기 때문에 보안 관점에서 시스템의 최상위 신뢰성(root of trust)을 제공할 수 있다. As described above, according to the exemplary embodiment of the present invention, the
다음으로, 본 발명의 실시예에 따른 자기 잠금 설정을 통해 제공된 최상위 신뢰성을 바탕으로 MPU(102)를 암호학적 검증 시 읽기 전용 참조 데이터 보호에 적용하는 실시예에 대하여 설명한다. 여기에서 암호학적 검증은 인증 또는 서명 검증 시 수행되는 암호 연산을 포괄적으로 의미하며, 참조 데이터는 이때 사용되는 암호 키 정보로서 합법적인 수단 외에는 변경이 불가능하고 데이터 자체에 비밀성이 요구되지 않는 특징을 갖는다. 예컨대, 인증서 기반 상호 인증 과정에서 서버의 인증서나 코드 서명 검증에 필요한 공개키 값 또는 이에 대한 해시 값 등이 참조 데이터의 대표적인 예이다. Next, an embodiment in which the
도 5는 본 발명의 실시예에 따른 인터넷을 통해 응용 프로그램 원격 배포 시 적용되는 코드 서명 검증의 일 예를 나타낸 도면이다. 5 is a diagram illustrating an example of code signature verification applied when remotely distributing an application through the Internet according to an embodiment of the present invention.
도 5를 참고하면, 일반적으로 프로그램과 코드 서명 정보는 응용 프로그램 패키지 내에 함께 배포되고, 응용 프로그램을 설치하는 원격 기기에서는 서명 검증을 수행함으로써 최초 배포자에 대한 인증뿐만 아니라 프로그램 코드에 대한 무결성 훼손 여부를 판단한다. 이때, 서명 정보는 타원곡선암호(Elliptical Curve Cryptography, ECC) 기반의 디지털서명 알고리즘(Elliptic Curve Digital Signature Algorithm, ECDSA)을 이용한 서명 검증 메커니즘에 의해 생성된다. Referring to FIG. 5, in general, the program and code signing information are distributed together in an application package, and the remote device that installs the application performs signature verification to determine whether the integrity of the program code as well as the authentication of the original distributor is compromised. To judge. At this time, the signature information is generated by a signature verification mechanism using an Elliptic Curve Digital Signature Algorithm (ECDSA) based on an Elliptical Curve Cryptography (ECC).
예를 들면, 서명 도구(Sign Tool)는 공개키(Kpublic)와 개인키(Kprivate)로 이루어진 타원곡선암호 키 쌍(ECDSA key Pair)을 생성하고, 이 중에서 개인키를 ECDSA Signature Algorithm을 사용하여 프로그램(Application)에 대한 서명(Signature)을 생성한다. 이렇게 생성된 서명은 공개키 및 응용 프로그램 코드(Application Code)와 더불어 배포된다. For example, the Sign Tool generates an elliptic curve cryptographic key pair consisting of a public key (Kpublic) and a private key (Kprivate), and uses the ECDSA Signature Algorithm to program the private key. Create a signature for the application. The signature thus generated is distributed along with the public key and the application code.
예를 들면, 응용 프로그램을 설치 및 실행하는 기기(Device)에서는 응용 프로그램 코드와 함께 배포된 서명과 공개키를 이용하여 프로그램 코드에 대한 무결성을 검증할 수 있다. 이때 원격 기기에서는 프로그램 코드에 대한 서명 검증뿐만 아니라 서명 검증에 이용된 공개키 자체의 소유권을 검증하는 수단이 필요하다. 따라서 배포자가 소유한 공개키 정보를 사전에 해당 기기에 안전하게 저장하고 검증 시에만 참조될 수 있도록 읽기 전용 데이터 보호 기술이 요구된다. 이에 본 발명의 실시예에서 제안하는 MPU 제어부(300)의 자기 잠금 설정을 해당 기기에 적용함으로써, MPU 영역에 저장된 참조 데이터를 읽기 전용으로 보호한다. 특히, 부트 코드의 일부로서 실행되는 최초 MPU 설정 코드 이외의 다른 소프트웨어에서는 해당 참조 데이터에 대한 변경이 불가능하도록 하드웨어 차원의 보호 조치를 취한다. 이때, 읽기 전용의 공개키 참조 데이터는 기기가 최초 출시 될 때 저장 공간을 최소화하기 위해서 인증서 또는 공개키 대신, 이들의 해시 결과 값으로 플래시 메모리에 미리 저장되고, 해시 결과 값이 저장되는 플래시 메모리의 특정 영역은 MPU 영역으로 설정되어 읽기 전용으로 접근 속성이 설정되고, 서명 검증 시에만 하기와 같이 읽기 전용으로 참조된다. For example, a device that installs and executes an application can verify the integrity of the program code by using a signature and a public key distributed with the application code. In this case, the remote device needs a means for verifying ownership of the public key itself used for signature verification as well as signature verification for program code. Therefore, a read-only data protection technology is required so that the public key information owned by the distributor can be safely stored in the device in advance and referenced only during verification. Therefore, by applying the self-locking setting of the
"reference data <- installed Digest of Kpublic "reference data <-installed Digest of K public
if (reference data = SHA256 (downloaded Kpublic))if (reference data = SHA256 (downloaded K public ))
authentic authentic
elseelse
fake" fake "
이와 같이 도 5에 도시된 실시예에서는 MPU 영역의 일회성 설정 효과를 통해 읽기 전용 참조 데이터를 하드웨어 차원에서 안전하게 보호하는 일 예이지만 이러한 보호 범위는 실행 코드 영역으로 확장하여 소프트웨어 공격으로부터 실행 코드를 안전하게 보호하는 데에도 동일하게 적용될 수 있다. As illustrated in FIG. 5, in the embodiment shown in FIG. 5, the read-only reference data is secured at the hardware level through the one-time setting effect of the MPU area, but the protection scope is extended to the executable code area to protect the executable code from software attacks. The same applies to
일반적으로 소프트웨어에 의한 원격 공격은 네트워크를 통해 대상 기기로 유입되며 유입 후 기기 내부의 방어 기재를 뚫고 공격 코드를 삽입한다. 따라서 공격 대상이 되는 기기의 내부 방어 기재 강도에 따라 원격 공격의 성공률도 높게 좌우된다. 본 발명의 실시예는 MPU 제어부(300)의 자기 잠금 설정을 통해 기기 내부의 중요 실행 코드와 참조 데이터를 하드웨어 차원에서 보호하여 기기 자체 방어 기재를 제공한다. In general, the remote attack by software is introduced to the target device through the network, and after the intrusion, the attack code is inserted through the defense equipment inside the device. Therefore, the success rate of the remote attack also depends on the strength of the internal defense base of the device to be attacked. The embodiment of the present invention provides a device self-defense description by protecting the important execution code and the reference data inside the device in the hardware level through the self-lock setting of the
본 발명의 실시예에서 제안된 방어 기재에 따르면, MPU 영역에 대한 공격 시도가 실제로 발생하는 경우 예외상황 처리 루틴에 의해 시스템은 재가동된다. 하지만 재가동만으로는 공격 상황을 정확히 판단하거나 기술적으로 대처하는 데 한계가 있다. 더구나 기기 차원의 방어 기재만으로는 네트워크 외부에서 시도되는 원격 공격의 경로 자체를 근본적으로 차단하지 못하기 때문에, 보다 적극적인 탐지 및 대응이 요구된다. 특히, 최근의 봇넷(botnet) 공격은 네트워크에 연결된 다수의 기기를 대상으로 빠르게 진행되기 때문에 개별 기기만으로 대응하기 어렵다.According to the defense description proposed in the embodiment of the present invention, the system is restarted by the exception handling routine when an attack attempt on the MPU region actually occurs. However, restarting alone has limitations in accurately determining or technically addressing an attack. Moreover, device-level defenses alone do not fundamentally block the path of remote attack attempts from outside the network, requiring more aggressive detection and response. In particular, the recent botnet attack is fast to target a large number of devices connected to the network, so it is difficult to respond only to individual devices.
따라서 본 발명의 실시예에서는 자기 잠금의 형태로 MPU를 활성화시킨 이후에 기기 내부의 방어 기재를 갖춘 상태에서 기기가 네트워크에 연결된다. 이때 원격 공격이 유입되고 방어 기재를 무력화시키려는 시도가 발생하는 순간, MPU 영역에서 접근 거부에 따른 예외상황이 발생한다. 일반적으로 MPU를 운영하는 시스템에서는 예외상황 처리 루틴에서 오류 상황의 원인을 파악하고 이에 대한 대응을 바로 수행한 이후에 예외상황을 유발한 지점 이후부터 실행을 계속한다. Therefore, in the embodiment of the present invention, after activating the MPU in the form of self-locking, the device is connected to the network with the protective substrate inside the device. At this time, when a remote attack is introduced and an attempt is made to neutralize the defense, an exception occurs due to the denial of access in the MPU area. In general, the system running the MPU identifies the cause of the error condition in the exception handling routine and immediately executes the response, and then continues execution after the point where the exception occurred.
이를 해결하기 위해, 본 발명의 실시예에서는 공격 여부의 최종 판단 및 대응을 현재 실행 중인 예외상황 처리 문맥 상태(context)에서 수행하지 않고 시스템을 바로 재가동하여 MPU 활성화 이전의 부트 코드 초기 상태로 되돌릴 수 있다. 이때 시스템이 재가동 되면 네트워크 외부 트래픽 유입이 차단되고 게이트웨이와의 일대일 통신만 가능한 부트 코드 상태에서 시스템 재가동 사실을 게이트웨이에게 전달한다. 따라서 본 발명의 실시예에서는 MPU를 사용하지만 MPU 영역의 침해 상황 시 공격 여부에 대한 구체적인 판단 및 처리를 기기 내부의 시스템 소프트웨어에서 수행하는 대신 제3자인 외부의 게이트웨이를 통해 수행한다 게이트웨이는 공격 시도에 따라 재가동된 사실을 해당 기기뿐만 아니라 기기가 포함된 물리적 네트워크 차원에서 여러 기기로부터 수집하고 이를 기반으로 최종 공격 여부를 판단하고 대응한다. 이에 대해서 도 6을 참고로 하여 자세하게 설명한다. In order to solve this problem, the embodiment of the present invention can restart the system immediately without executing the final determination and response of the attack in the currently executing exception handling context and return to the initial state of the boot code before the MPU activation. have. At this time, when the system is restarted, traffic from outside the network is blocked and the system is restarted in the boot code state that enables only one-to-one communication with the gateway. Therefore, the embodiment of the present invention uses the MPU, but in the case of an infringement situation of the MPU area, a specific judgment and processing of the attack is performed through an external gateway that is a third party instead of being performed by the system software inside the device. Therefore, the restarted fact is collected from various devices not only in the device but also in the physical network including the device, and based on this, the final attack is determined and responded to. This will be described in detail with reference to FIG. 6.
도 6은 본 발명의 실시예에 따른 IoT 기기의 원격 공격 방어 과정을 도시하고, 도 7은 본 발명의 실시예에 따른 게이트웨이에서 악의적인 공격 여부의 판단 및 대응 방법을 나타낸 흐름도이다. 6 is a flowchart illustrating a remote attack defense process of an IoT device according to an embodiment of the present invention, and FIG. 7 is a flowchart illustrating a method of determining and responding to a malicious attack in a gateway according to an embodiment of the present invention.
도 6에 도시된 바와 같이, 서버(603)는 IoT 기기(601)에 대한 원격 관리 및 서비스를 제공한다. 서버(603)는 VPN, TLS 등의 보안 채널(605)을 통해 게이트웨이(602)와 통신한다. 게이트웨이(602)는 IoT 기기(601)가 포함된 물리적 네트워크(600)를 관할한다. 기기들(601)은 게이트웨이(602)를 안전한 개체로 인식할 수 있다.As shown in FIG. 6,
도 7에 도시된 바와 같이, 본 발명의 실시예에서는 공격자(604)에 의한 원격 공격이 시작(launch)되고(S701) 공격자(604)가 게이트웨이(602)를 경유하여 IoT 기기(601)에 대한 공격을 시도하면, IoT 기기(601)는 앞에서 설명한 MPU 방어 기재에 따라 예외상황이 발생하고 시스템이 재가동된다(S702, S703). As shown in FIG. 7, in the embodiment of the present invention, a remote attack by the
IoT 기기(601)는 재가동 직후 부트 코드를 실행하고(S704), 부트 코드 실행 단계에서 재가동 사실(reset event)을 게이트웨이(602)에게 알린다(S705). The
게이트웨이(602)는 해당 IoT 기기(601) 및 동일 네트워크의 다른 IoT 기기로부터 현재까지 수신된 재가동 패턴을 분석하여 공격자(604)에 의한 공격 여부 또는 펌웨어의 자체 결함 여부를 판단한다(S706).The
공격 상황으로 판단한 경우, 게이트웨이(602)는 공격 의심 트래픽의 내부 유입을 차단한다(S710).If it is determined that the attack situation, the
게이트웨이(602)는 공격 상황 및 트래픽 정보를 서버(603)에게 전달한다(S711).The
본 발명의 실시예에서는 서버(603)에서 배포한 정식 펌웨어를 게이트웨이(602)를 중심으로 IoT 기기(601)에 안전하게 설치하는, 펌웨어 업데이트 과정도 함께 제안한다. 앞서 서술된 본 발명의 실시예에 따른 공격 탐지(S706) 및 대응 단계(S710)에서, 재가동된 IoT 기기(601)는 부트 코드 내에서 게이트웨이(602)에게 재가동 상황을 전달한다. 따라서 부트 코드 실행 단계에서는 게이트웨이(602)와 IoT 기기(601)가 두 기기 사이에 일대일 통신을 위한 네트워크 모듈을 각각 포함하며, 해당 네트워크 모듈은 두 기기 간 매체(media) 상에서 동작하는 링크 수준의 통신을 수행하는 모듈이 될 수 있다. 이때, IoT 기기(601)는 게이트웨이(602)와 링크 수준에서 일대일 통신이 가능하지만 외부 네트워크 개체와의 통신은 불가능한 상태이기 때문에 외부 공격 트래픽 유입이 원천적으로 차단된 상태에서 코드를 안전하게 실행시키게 된다. 따라서 본 발명의 실시예에 따른 IoT 기기(601)는 부트 코드 내에서 신뢰성이 확보된 게이트웨이(602)와의 일대일 통신을 통해서만 원본 펌웨어를 제공받고 업데이트한다. 이때 IoT 기기(601)와 게이트웨이(602)간의 상호 인증 및 채널 암호용 키 교환은 도 5를 참고로 하여 설명한 읽기 전용 참조 데이터의 실시예를 따른다. The embodiment of the present invention also proposes a firmware update process for securely installing the official firmware distributed by the
IoT 기기(601)는 부트 코드 실행 단계에서 시스템 재가동 사실(event)을 매번 게이트웨이(602)에게 알리고(S705), 게이트웨이(602)로부터 수신된 응답(response) 값에 따라 다음 동작을 결정한다. The
게이트웨이(602)는 공격 상황이 아닌 것으로 판단한 경우, OK 응답 값을 IoT 기기(601)로 전송한다(S707). If it is determined that the
IoT 기기(601)는 게이트웨이(602)로부터 OK 응답 값을 수신하면, 나머지 부트 코드 실행 과정을 계속 수행한다(S708). When the
한편, 서버(603)는 게이트웨이(602)로부터 공격 상황 및 트래픽 정보를 수신하면, 업데이트된 펌웨어가 존재하는지 확인하고(S712), 업데이트된 펌웨어의 최신 버전을 게이트웨이(602)로 전송한다(S713).On the other hand, upon receiving the attack situation and traffic information from the
게이트웨이(602)는 업데이트된 펌웨어를 검증한다(S714). The
IoT 기기(601) 관점에서 시스템이 재가동 되는 상황은 부트 코드 단계에서 운영체제 및 응용프로그램 이미지에 대한 무결성 검사 결과 부당변경(tampering)이 발견되거나 응용 프로그램 실행 도중 원격 공격자에 의해 불법적인 메모리 접근 시도가 발생하는 경우이다. 그러므로 게이트웨이(602)는 IoT 기기(601)로부터 재가동 사실을 수신하고, 공격 또는 펌웨어의 자체 결함 여부를 감지해야 한다.The situation in which the system is restarted from the point of view of the
게이트웨이(602)에서 업데이트된 펌웨어의 검증이 완료되면, IoT 기기(601)로 펌웨어 업데이트를 알린다(S715). When the verification of the updated firmware is completed in the
IoT 기기(601)는 펌웨어 업데이트를 수신하면, 자발적으로 시스템을 재가동하고(S716), 부트 코드 실행을 시작한다(S717). When the
IoT 기기(601)는 부트 코드 내에서 재가동 사실을 게이트웨이(602)에 전달하고(S718), 게이트웨이(602)는 응답 값으로 펌웨어 업데이트를 IoT 기기(601)로 전송함으로써(S719), 정식 펌웨어를 IoT 기기(601)로 전달하여, IoT 기기(601) 스스로 업데이트를 수행하도록 한다.The
IoT 기기(601)는 펌웨어 업데이트를 수행하고(S720), 시스템을 재가동한 후(S720), 부트 코드 실행을 시작한다(S721). The
이와 같이, 게이트웨이(602)는 IoT 기기(601)로부터 재가동 사실을 수신하면, 공격 또는 펌웨어의 자체 결함 여부를 감지하고, 그에 따른 구체적인 대응 방법으로 공격 트래픽의 유입을 차단하거나, 정식 펌웨어를 IoT 기기(601)에 전달하여 IoT 기기(601) 스스로 업데이트를 수행하도록 유도한다. 이외 시스템이 재가동되는 상황은 서버(603)에서 펌웨어를 배포하는 과정에서 서버(603)를 대신하여 게이트웨이(602)는 펌웨어 업데이트를 IoT 기기(601)에 전달하고 IoT 기기(601)는 자발적으로 시스템을 재가동시키게 된다. 간혹 펌웨어 자체 소프트웨어 결함에 의해서 MPU 메모리 보호 영역을 침범하고 공격으로 의심되어 시스템이 재가동 될 수 있지만, 게이트웨이(602)는 펌웨어 자체 결함에 따른 오류 상황을 신속하게 판단하고 서버(604)로 하여금 해당 결함이 해소된 펌웨어를 재배포하도록 유도한다. As such, when the
도 8은 본 발명의 실시예에 따른 IoT 기기에서의 원격 공격 방어 방법을 나타낸 흐름도이다.8 is a flowchart illustrating a remote attack defense method in an IoT device according to an embodiment of the present invention.
도 8을 참고하면, IoT 기기(601)에 최초 파워가 인가되는 순간 부트 코드가 가장 먼저 실행되고 시스템에 관한 기본적인 초기화가 실행된다(S802, S803).Referring to FIG. 8, when the initial power is applied to the
IoT 기기(601)는 현재 네트워크를 관할하는 게이트웨이(602)와의 일대일 통신이 링크 수준으로 가능하도록 해당 네트워크 모듈을 설정한다. 네트워크 모듈에 대한 초기화 작업이 끝나면, IoT 기기(601)는 현재 시스템이 재가동된 사실을 게이트웨이(602)에게 전송하고 게이트웨이(602)로부터 응답 값을 수신한다(S804).The
IoT 기기(601)는 수신한 응답 값을 토대로 이후에 수행할 동작을 결정한다.The
IoT 기기(601)는 수신한 응답 값을 토대로 펌웨어 업데이트가 필요한 것으로 판단되면(S805), 게이트웨이(602)로부터 펌웨어를 수신하여 해당 펌웨어가 서버(603)에서 배포한 정식 펌웨어인지 검증한다. 펌웨어 검증은 앞서 기술된 코드 서명 검증의 실시예에 따른다.If it is determined that the firmware update is necessary based on the received response value (S805), the
IoT 기기(601)는 펌웨어 검증이 성공적으로 끝나면 해당 펌웨어를 IoT 기기(601)의 실행코드 영역인 비활성 메모리에 작성하여 펌웨어를 업데이트하고(S806) 시스템을 재가동시킨다(S807). When the firmware verification is successfully completed, the
만약 IoT 기기(601)는 게이트웨이(602)로부터 펌웨어 업데이트 과정이 필요하지 않다는 응답 값을 수신하는 경우, 이후에 실행될 운영체제(OS) 및 응용프로그램(APP)에 대한 무결성 검증을 수행한다(S808). 무결성 검증의 구체적인 방법은 앞서 서술된 코드 서명 검증과 동일한 실시예를 따른다. 이때 해당 이미지에 대한 부당변경(tampering)이 발견된 경우, 게이트웨이(602)를 통해서 펌웨어 업데이트 절차를 수행한다(S806). 반대로, IoT 기기(601)는 운영체제(OS) 및 응용프로그램(APP) 이미지에 대한 무결성 검사가 성공적으로 완료된 경우 다음 단계인 MPU 제어부(300)에 대한 MPU 영역 설정을 수행한다(S809). MPU 제어부(300)는 부트 코드를 포함한 중요 실행 코드 및 참조 데이터 영역에 대해 MPU 영역(710)으로 설정하고 MPU 제어부(300)에 매핑된 자신의 MPU 영역의 변경을 원천적으로 차단하도록 도 4에서 설명한 방법에 따라서 접근 속성을 설정한다. If the
마지막 단계에서는 IoT 기기(601) 본래의 서비스가 시작되도록 운영체제(706)와 응용프로그램(708)을 실행(run)시킨다(S810, S811). 이때부터 외부와의 통신이 가능하고 IoT 기기(601)의 서비스가 본격적으로 동작하기 때문에 원격 공격자에게도 동시에 노출된다. 하지만 본 발명의 실시예에서 제안한 MPU 기반의 방어 기재도 이미 동작되고 있기 때문에 원격 공격자에 의한 불법 메모리 접근이 시도되면, 해당 보호 영역의 접근 거부 설정에 따라 처리될 수 있다. 즉, 원격 공격자에 의한 불법 메모리 접근이 시도되면, 예외상황이 발생된다. 예외상황이 발생되면(S812) 앞에서 설명한 바와 같이 시스템이 재가동되면서 부트 코드 실행 단계부터 다시 시작된다(S807, S802).In the last step, the
이와 같이, 본 발명의 실시예에서는 원격 공격이나 또는 기기 내부 소프트웨어의 자체 결함에 의해서 실행 도중 갑자기 시스템이 재가동되도록 설계되지만 간혹 게이트웨이(602)로부터 펌웨어 업데이트 요청을 수신하거나 부트 과정에서 운영체제 및 응용프로그램 이미지 무결성 검사 결과에 따라 단계적으로 시스템을 재가동시킬 수 있다. 따라서 게이트웨이(602)는 IoT 기기(601)로부터 재가동 사실을 수신한 후 IoT 기기(601)가 재가동 된 원인을 정확하게 판단하고 필요 시에는 정식 펌웨어를 IoT 기기(601)에게 제공하는 역할을 수행한다. As such, in the embodiment of the present invention, the system is designed to suddenly restart during execution due to a remote attack or a defect in the internal software of the device, but sometimes the operating system and the application image are received from the
도 9는 본 발명의 실시예에 따른 IoT 기기에서의 MPU 영역의 일 예를 도시한 블록도이다. 9 is a block diagram illustrating an example of an MPU region in an IoT device according to an embodiment of the present invention.
도 9를 참고하면, IoT 기기(601)는 MPU 제어부(300)를 통해 보호 받는 실행 코드 영역으로 게이트웨이(602)와 링크 수준의 일대일 지역 통신을 위한 네트워크 모듈(903), 펌웨어 업데이트 모듈 및 운영체제 및 응용프로그램 검증 모듈을 포함하는 부트 코드(902), MPU 예외상황 처리 루틴(901), 그리고 게이트웨이(602)로부터 펌웨어 업데이트 요청을 수신하고 시스템을 재가동하는 모듈(907)을 보호하도록, 해당 모듈이 설치된 영역을 MPU 영역으로 설정하고 있다.Referring to FIG. 9, the
그 밖에 운영체제(905)와 응용프로그램(906) 코드 영역은 추후 펌웨어 업데이트를 통해 유동적으로 변경될 수 있기 때문에 본 발명의 실시예에서는 보호 영역의 대상에서 제외하였지만, 업데이트 등의 변경이 예상되지 않는 경우에는 MPU의 보호 대상으로 포함시킬 수 있다.In addition, since the code area of the
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속하는 것이다. Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concepts of the present invention defined in the following claims are also provided. It belongs to the scope of rights.
Claims (18)
메모리의 시스템 제어 영역에서 부트 코드를 포함한 실행 코드 및 참조 데이터 영역에 대해 시스템 MPU 영역으로 지정하고, 활성화 이후부터 기 설정된 MPU 영역에 대한 변경을 거부하도록 접근 속성을 설정하는 단계;
상기 원격 공격자에 의한 상기 시스템 MPU 영역으로의 불법 변경 시도 시에 발생되는 예외상황의 처리루틴을 시스템이 재가동되도록 설정하는 단계; 및
상기 시스템 MPU 영역을 활성화시키는 단계를 포함하는
방법.As a method of defending against software attacks by remote attackers using a memory protection unit (MPU) of a lightweight IoT device,
Designating an execution code including a boot code and a reference data area as a system MPU area in a system control area of a memory, and setting an access attribute to reject a change to a preset MPU area after activation;
Setting a system to restart the processing routine of an exception generated when an illegal change attempt is made to the system MPU area by the remote attacker; And
Activating the system MPU region;
Way.
상기 시스템 MPU 영역은 상기 시스템의 재가동을 통해서만 해제되는
방법.In claim 1,
The system MPU area is released only by restarting the system.
Way.
상기 시스템 MPU 영역은 상기 시스템 MPU 영역이 활성화된 이후부터 변경 또는 재설정이 불가능한 잠김 상태를 유지하는
방법.In claim 1,
The system MPU region maintains a locked state that cannot be changed or reset after the system MPU region is activated.
Way.
상기 시스템이 재가동되면, 부트 코드 실행 단계에서 재가동 사실을 게이트웨이로 전송하는 단계, 그리고
상기 게이트웨이로부터 수신하는 응답에 따라 다음 동작을 결정하는 단계를 더 포함하는
방법.In claim 1,
When the system is restarted, in the boot code execution step, transmitting the restart fact to the gateway, and
Determining a next operation according to a response received from the gateway.
Way.
상기 결정하는 단계는 상기 게이트웨이에 의해 상기 원격 공격자에 의한 공격 상황이 아닌 것으로 판단되면, 상기 부트 코드 실행 단계를 계속 수행하는 단계를 더 포함하는
방법.In claim 4,
The determining may further include continuing to execute the boot code if it is determined by the gateway that the attacker is not attacked by the remote attacker.
Way.
상기 결정하는 단계는
상기 응답 값이 펌웨어 업데이트를 알리는 경우, 상기 게이트웨이를 통해 펌웨어를 수신하는 단계;
수신한 상기 펌웨어를 검증하는 단계; 및
상기 펌웨어를 업데이트하는 단계를 포함하는
방법.In claim 4,
The determining step
Receiving firmware through the gateway when the response value informs of a firmware update;
Verifying the received firmware; And
Updating the firmware
Way.
상기 결정하는 단계는 상기 업데이트 이후 상기 시스템을 재가동시키는 단계를 더 포함하는
방법.In claim 6,
The determining step may further comprise restarting the system after the update.
Way.
상기 결정하는 단계는 상기 응답 값이 펌웨어 업데이트가 필요하지 않음을 나타내는 경우, 실행될 운영체제 및 응용프로그램에 대한 무결성 검증을 수행하는 단계를 포함하는
방법.In claim 4,
The determining step includes performing integrity verification of the operating system and application to be executed when the response value indicates that no firmware update is required.
Way.
상기 경량 IoT 기기들로부터 시스템 재가동 사실을 수신하는 단계;
상기 경량 IoT 기기들로부터 수신된 시스템 재가동 사실들을 분석하여 상기 원격 공격자에 의한 공격 여부 또는 펌웨어의 결함 여부를 판단하는 단계; 및
상기 원격 공격자에 의한 공격 상황으로 판단된 경우 공격 의심 트래픽의 내부 유입을 차단하는 단계를 포함하는
방법.A method for defending against software attacks by a remote attacker on a lightweight IoT device at a gateway that governs a physical network containing lightweight IoT devices,
Receiving system restart from the lightweight IoT devices;
Analyzing system restart facts received from the lightweight IoT devices to determine whether the remote attacker is attacked or whether the firmware is defective; And
Blocking the inflow of suspicious traffic when determined to be attacked by the remote attacker;
Way.
상기 펌웨어의 결함으로 판단된 경우, 펌웨어 업데이트를 상기 경량 IoT 기기들로 전송하는 단계, 그리고
상기 경량 IoT 기기들이 펌웨어를 업데이트하도록 서버로부터 수신된 펌웨어를 상기 경량 IoT 기기들로 전송하는 단계를 더 포함하는
방법.In claim 9,
If it is determined that the firmware is defective, transmitting a firmware update to the lightweight IoT devices, and
Sending firmware received from a server to the lightweight IoT devices so that the lightweight IoT devices update firmware.
Way.
상기 서버로부터 수신된 펌웨어를 검증하는 단계를 더 포함하는
방법.In claim 10,
Verifying firmware received from the server;
Way.
적어도 하나의 MPU 영역 중 접근 속성이 접근 거부로 설정된 시스템 MPU 영역으로의 접근 시도 시에 발생되는 예외상황의 처리루틴을 시스템이 재가동되도록 설정하는 메모리 보호 유니트 제어부를 포함하는
원격 공격 방어 장치.As a remote attack defense device of a lightweight IoT device to defend against software attack by a remote attacker,
And a memory protection unit controller configured to set the system to restart the processing routine of an exception occurring when attempting to access a system MPU area in which at least one MPU area has an access property set to access denied.
Remote attack defense.
상기 메모리 보호 유니트 제어부는 부트 코드를 포함한 실행 코드 및 참조 데이터 영역에 대해 상기 시스템 MPU 영역으로 지정하고, 상기 시스템 MPU 영역에 대한 상기 접근 속성을 접근 거부로 설정하는
원격 공격 방어 장치.In claim 12,
The memory protection unit control unit designates an execution code including a boot code and a reference data area as the system MPU area, and sets the access property for the system MPU area to access denied.
Remote attack defense.
상기 메모리 보호 유니트 제어부는 상기 시스템 제어 영역 외의 나머지 영역 중 일부 영역을 일반 MPU 영역으로 지정하고, 상기 일반 MPU 영역의 접근 속성을 읽기쓰기, 읽기전용 및 접근거부 중에서 하나로 설정하는
원격 공격 방어 장치.In claim 12,
The memory protection unit control unit designates some of the remaining areas other than the system control area as a general MPU area, and sets an access attribute of the general MPU area to one of read write, read only, and access denied.
Remote attack defense.
상기 시스템 MPU 영역은 상기 시스템의 재가동을 통해서만 해제되는 원격 공격 방어 장치.In claim 12,
And the system MPU zone is released only by restarting the system.
상기 시스템 MPU 영역이 활성화된 이후부터 상기 시스템 MPU 영역은 변경 또는 재설정이 불가능한 잠김 상태를 유지하는 원격 공격 방어 장치.In claim 12,
And after the system MPU region is activated, the system MPU region maintains a locked state that cannot be changed or reset.
상기 시스템이 재가동되면, 부트 코드 실행 단계에서 재가동 사실을 게이트웨이로 전송하고 상기 게이트웨이로부터 수신하는 응답에 따라 동작을 결정하는 CPU를 더 포함하는
원격 공격 방어 장치.In claim 12,
If the system is restarted, the boot code execution step further includes a CPU for transmitting the fact that the restart to the gateway and determines the operation according to the response received from the gateway
Remote attack defense.
상기 CPU는 상기 게이트웨이에 의해 상기 원격 공격자에 의한 공격 상황이 아닌 것으로 판단되면, 상기 부트 코드 실행 단계를 계속 수행하고, 상기 응답 값이 펌웨어 업데이트를 알리는 경우, 상기 게이트웨이를 통해 서버로부터 수신한 펌웨어를 업데이트하는
원격 공격 방어 장치.In claim 12,
If the CPU determines that the gateway is not attacked by the remote attacker, the CPU continues executing the boot code, and when the response value informs the firmware update, the CPU receives the firmware received from the server through the gateway. Updated
Remote attack defense.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180080222A KR20200006452A (en) | 2018-07-10 | 2018-07-10 | Method and apparatus for defending remote attacks of device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180080222A KR20200006452A (en) | 2018-07-10 | 2018-07-10 | Method and apparatus for defending remote attacks of device |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200006452A true KR20200006452A (en) | 2020-01-20 |
Family
ID=69367740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180080222A KR20200006452A (en) | 2018-07-10 | 2018-07-10 | Method and apparatus for defending remote attacks of device |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20200006452A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001808A1 (en) * | 2022-06-27 | 2024-01-04 | 华为技术有限公司 | Information processing method, chip, electronic device and computer-readable storage medium |
-
2018
- 2018-07-10 KR KR1020180080222A patent/KR20200006452A/en unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001808A1 (en) * | 2022-06-27 | 2024-01-04 | 华为技术有限公司 | Information processing method, chip, electronic device and computer-readable storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10120999B2 (en) | Method and system for preventing and detecting security threats | |
KR102434444B1 (en) | Method and Apparatus for Device Security Verification Utilizing a Virtual Trusted Computing Base | |
US9514300B2 (en) | Systems and methods for enhanced security in wireless communication | |
EP1761837B1 (en) | System and method for secure inter-platform and intra-platform communications | |
US8935530B2 (en) | Control device and computer readable medium | |
CN109937419B (en) | Initialization method for security function enhanced device and firmware update method for device | |
US7739724B2 (en) | Techniques for authenticated posture reporting and associated enforcement of network access | |
US8281402B2 (en) | Network vulnerability assessment of a host platform from an isolated partition in the host platform | |
KR20180103013A (en) | Secured execution context data | |
US10013579B2 (en) | Secure routing of trusted software transactions in unsecure fabric | |
US9836611B1 (en) | Verifying the integrity of a computing platform | |
US20180012025A1 (en) | Dynamic security module terminal device and method of operating same | |
CN112948086B (en) | Trusted PLC control system | |
Francillon et al. | Systematic treatment of remote attestation | |
WO2021084221A1 (en) | Attestation for constrained devices | |
US20060005015A1 (en) | System and method for secure inter-platform and intra-platform communications | |
CN116418538A (en) | Single-packet authorization state detection method, terminal equipment and storage medium | |
WO2017135942A1 (en) | Heartbeat signal verification | |
US10713392B2 (en) | Network interface device and method | |
GB2588648A (en) | Iterative key generation for constrained devices | |
CN115879099A (en) | DCS controller, operation processing method and protection subsystem | |
JP7138043B2 (en) | Information processing equipment | |
US11520595B2 (en) | Industrial internet of things gateway boot methods | |
KR20200006452A (en) | Method and apparatus for defending remote attacks of device | |
KR102034934B1 (en) | Securing the network access of local devices by using TPM |