KR102132901B1 - Firmware packaging and unpackaging methods - Google Patents

Firmware packaging and unpackaging methods Download PDF

Info

Publication number
KR102132901B1
KR102132901B1 KR1020180127077A KR20180127077A KR102132901B1 KR 102132901 B1 KR102132901 B1 KR 102132901B1 KR 1020180127077 A KR1020180127077 A KR 1020180127077A KR 20180127077 A KR20180127077 A KR 20180127077A KR 102132901 B1 KR102132901 B1 KR 102132901B1
Authority
KR
South Korea
Prior art keywords
firmware
update
history information
server
target terminal
Prior art date
Application number
KR1020180127077A
Other languages
Korean (ko)
Other versions
KR20200045931A (en
Inventor
박현주
박한나
Original Assignee
주식회사 시옷
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 시옷 filed Critical 주식회사 시옷
Priority to KR1020180127077A priority Critical patent/KR102132901B1/en
Publication of KR20200045931A publication Critical patent/KR20200045931A/en
Application granted granted Critical
Publication of KR102132901B1 publication Critical patent/KR102132901B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 펌웨어 패키징 및 언패키징 방법에 관한 것으로, 더욱 상세하게는 네비게이션과 같이 자동차에 장착되는 단말기를 저전력 무선네트워크를 이용하여 무선으로 업데이트할 수 있도록 구현한 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법에 관한 것이다.The present invention relates to a firmware packaging and unpacking method, and more particularly, to a firmware update method using a low power wireless network implemented to enable wirelessly updating a terminal mounted on a vehicle such as navigation using a low power wireless network. will be.

Description

펌웨어 패키징 및 언패키징 방법 {Firmware packaging and unpackaging methods}Firmware packaging and unpackaging methods

본 발명은 펌웨어 패키징 및 언패키징 방법에 관한 것으로, 더욱 상세하게는 네비게이션과 같이 자동차에 장착되는 단말기를 저전력 무선네트워크를 이용하여 무선으로 업데이트할 수 있도록 구현한 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법에 관한 것이다.The present invention relates to a firmware packaging and unpacking method, and more particularly, to a firmware update method using a low power wireless network implemented to enable wirelessly updating a terminal mounted on a vehicle such as navigation using a low power wireless network. will be.

무선통신 기술이 발달하면서 사용자 편의를 위한 다양한 서비스와 기능이 포함된 단말기가 제공되고 있다. 이와 같이 다양한 서비스와 기능이 추가됨으로 인해 이동 단말기에 탑재되는 소프트웨어 또한 많은 버그가 발생할 확률이 높아지고, 이동단말기의 출시 이후에 새로운 기능의 추가에 대한 요구가 갈수록 더해지고 있다.2. Description of the Related Art With the development of wireless communication technology, terminals having various services and functions for user convenience have been provided. Due to the addition of various services and functions, the probability that many bugs also occur in the software mounted on the mobile terminal increases, and the demand for adding new functions is gradually increasing after the release of the mobile terminal.

이에 따라, 이동단말기의 펌웨어(Firmware)를 무선으로 자동 업그레이드하는 솔루션인 FOTA(Firmware Over The Air)가 개발되었다. 여기서, 펌웨어는 일반적으로 롬(ROM)에 저장된 하드웨어를 제어하는 마이크로 프로그램을 의미하며, 프로그램이라는 관점에서는 소프트웨어와 동일하지만 하드웨어와 밀접한 관계를 가지고 있다는 점에서 일반 응용소프트웨어와 구분되어 펌웨어는 소프트웨어와 하드웨어의 특성을 동시에 가진다.Accordingly, FOTA (Firmware Over The Air), a solution to automatically upgrade the firmware of a mobile terminal wirelessly, was developed. Here, the firmware generally refers to a micro-program that controls the hardware stored in ROM, and in terms of the program, it is the same as the software, but it is distinct from general application software in that it has a close relationship with the hardware. It has the characteristics of.

국제 모바일 규격 표준화 단체인 OMA(Open Mobile Alliance)에서 제정된 FOTA와 관련된 표준을 참조하면, 이동 단말기의 FOTA 서비스 수행과정은 DM(Device Management) 서버로부터 통지(Notification) 메시지를 수신하는 과정과, DM 서버와 이동통신단말기 간의 통신 수행 과정인 디스커버리(discovery) 과정, 업데이트 패키지의 다운로드 과정을 포함한다.Referring to the standards related to FOTA established by the Open Mobile Alliance (OMA), an international mobile standardization organization, the process of performing FOTA service of the mobile terminal includes receiving a notification message from a device management (DM) server, and DM It includes a discovery process, a process of performing communication between a server and a mobile communication terminal, and a download process of an update package.

그러므로, FOTA 서비스는 사용자가 A/S 센터에 방문하지 않고 이동단말기의 수정된 프로그램을 무선으로 다운받아 바로 업데이트 할 수 있는 장점을 가진다.Therefore, the FOTA service has the advantage that the user can download the modified program of the mobile terminal wirelessly and update immediately without visiting the A/S center.

한편, M2M(Machine to Machine)은 일반적인 유/무선 네트워크상에서 일련의 유저 트래픽 데이터를 유/무선 통신 방식을 이용하여 M2M 모듈과 디바이스가 연동하여 기계간의 통신을 지원하는 원격관리 및 제어 솔루션이다. 그리고, M2M 모듈 및 그에 연결되는 디바이스의 성능개선, 오류 수정 등의 이유로 NV(Non Volatile) 설정값, 펌웨어, 드라이버 및 응용 어플리케이션 등의 다양한 프로그램 업데이트가 요구된다. 그러나, 각각의 프로그램을 업데이트한다 하더라도 각각 업데이트 프로그램을 버전별로 관리함으로써 어느 하나를 업데이트 하지 않았을 경우 오류가 발생하거나 향상된 서비스를 이용할 수 없는 문제점이 있다.On the other hand, M2M (Machine to Machine) is a remote management and control solution that supports communication between machines by interlocking M2M modules and devices using a wired/wireless communication method for serial user traffic data on a general wired/wireless network. In addition, various program updates such as NV (Non Volatile) setting values, firmware, drivers, and application applications are required due to performance improvement, error correction, etc. of the M2M module and devices connected thereto. However, even if each program is updated, an error occurs or an improved service cannot be used when one is not updated by managing each update program for each version.

한국등록특허 제10-1541112호Korean Registered Patent No. 10-1541112 한국공개특허 제10-2009-0004715호Korean Patent Publication No. 10-2009-0004715

본 발명의 일측면은 네비게이션과 같이 자동차에 장착되는 단말기의 펌웨어를 저전력 무선네트워크를 이용하여 무선으로 업그레이드할 수 있도록 구현한 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법을 제공한다.One aspect of the present invention provides a firmware update method using a low power wireless network implemented to wirelessly upgrade the firmware of a terminal mounted on a vehicle such as navigation using a low power wireless network.

또한, 펌웨어 파일을 복수 개로 분할함으로써, FOTA(Firmware Over The Air) 대상 단말기의 성능이 우수하지 않더라고 제조사에서 제공하는 펌웨어를 전송받을 수 있도록 구현한 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법을 제공한다.In addition, it provides a firmware update method using a low-power wireless network implemented to receive and transmit firmware provided by a manufacturer even though the performance of the target device for FOTA (Firmware Over The Air) is not excellent by dividing the firmware file into a plurality of files.

본 발명의 기술적 과제는 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.

본 발명의 일 실시예에 따른 펌웨어 패키징 및 언패키징 방법은 다운로드 서버가 제조사 서버로부터 입력되는 펌웨어를 다수 개의 블록으로 분할하는 단계; 및 상기 다운로드 서버가 분할된 블록들을 암호화하는 단계를 포함하며, 상기 분할하는 단계에서 분할된 블록은, 펌웨어 명칭 및 펌웨어 버전을 포함하는 퍼스트 블록, 상기 퍼스트 블록의 다음에 순서에 따라 배치되며, 펌웨어 데이터의 일부가 각각 할당되어 전체로서 하나의 펌웨어 데이터를 형성하는 다수 개의 펌웨어 블록 및 마지막 펌웨어 블록 다음에 배치되어 패키징의 종료를 알리는 라스트 블록으로 구성되며, 상기 암호화하는 단계는, 상기 펌웨어 블록을 헤더(Header)와 바디(Body)로 구분하고, 상기 헤더에는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값 또는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값을 입력으로 대입한 사인값(Sign)을 입력하고, 상기 바디에는 펌웨어 데이터를 암호화한 값을 입력으로 한다.A method for packaging and unpacking firmware according to an embodiment of the present invention includes: a download server dividing the firmware input from a manufacturer server into a plurality of blocks; And encrypting the divided blocks by the download server, and the divided blocks in the dividing step are first blocks including a firmware name and a firmware version, and are arranged in order after the first blocks, followed by firmware. Consisting of a plurality of firmware blocks, each of which is partially allocated to form one firmware data as a whole, and a last block disposed after the last firmware block to signal the end of packaging, and the encrypting step includes headering the firmware block. It is divided into (Header) and Body (Body), and in the header, the output value when the firmware data is input as the hash function or the output value when the firmware data is the input of the hash function is signed. And input the encrypted value of the firmware data into the body.

일 실시예에 있어서, 상기 다운로드 서버와 통신하는 대상 단말기가 상기 퍼스트 블록을 복호한 후, 상기 퍼스트 블록에 포함된 인포값(info)을 통해 상기 대상 단말기의 펌웨어 업데이트가 필요한지를 판독하고, 펌웨어 업데이트가 필요한 경우 사인과 해쉬가 해제된 인포값과 상기 퍼스트 블록에 기 포함되어 있던 인포값을 비교하는 버전 확인 단계; 및 상기 대상 단말기가 상기 버전 확인 단계에서 버전 확인이 완료되면, 상기 펌웨어 블록들을 다운로드 받아 복호화한 후, 사인이 해제된 펌웨어 데이터의 해쉬값과 상기 펌웨어 블록에 기 포함되어 있던 펌웨어 데이터의 해쉬값을 비교하여 같은 경우 분할된 각각의 펌웨어 데이터들을 병합하는 데이터 병합 단계를 포함한다.In one embodiment, after a target terminal communicating with the download server decodes the first block, reads whether a firmware update of the target terminal is necessary through an info value (info) included in the first block, and updates the firmware A version checking step of comparing the info value with which the sine and hash are canceled and the info value previously included in the first block if is necessary; And when the version check is completed in the version checking step, after downloading and decrypting the firmware blocks, the hash value of the unlocked firmware data and the hash value of the firmware data previously included in the firmware block are determined. In the same case, the data merging step includes merging the divided pieces of firmware data.

본 발명의 일 실시예에 따른 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법은, 업데이트 매니저 서버에서 펌웨어 업데이트의 대상이 되는 대상 단말기의 단말기 정보를 상기 제조사 서버로부터 수신받아 등록하는 단말기 등록 단계; 상기 대상 단말기의 펌웨어 업데이트를 관리하는 플랫폼에서 저전력 무선네트워크를 이용하여 상기 대상 단말기의 펌웨어 버전 정보를 확인하는 펌웨어 버전 확인 단계; 다운로드 서버에서 상기 제조사 서버로부터 업데이트용 펌웨어를 입력받아 상기 대상 단말기로 전송하기 위해 패키징하는 펌웨어 패키징 단계; 상기 대상 단말기에서 상기 다운로드 서버로부터 패키징된 펌웨어를 저전력 무선네트워크를 통해 다운로드 받는 펌웨어 다운로드 단계; 및 상기 대상 단말기에서 패키징된 펌웨어를 언패키징하여 펌웨어 업데이트를 수행하는 펌웨어 업데이트 단계를 포함한다.A firmware update method using a low-power wireless network according to an embodiment of the present invention includes: a terminal registration step of receiving and registering terminal information of a target terminal targeted for firmware update from an update manager server; A firmware version checking step of checking firmware version information of the target terminal using a low-power wireless network in a platform that manages firmware update of the target terminal; A firmware packaging step of receiving update firmware from the manufacturer server from the download server and packaging it for transmission to the target terminal; A firmware download step of downloading the packaged firmware from the download server from the target terminal through a low power wireless network; And a firmware update step of unpacking the firmware packaged in the target terminal to perform a firmware update.

일 실시예에서, 상기 단말기 등록 단계는, 상기 업데이트 매니저 서버가 상기 대상 단말기의 제조사 정보 및 상기 대상 단말기가 설치된 차량 단말 정보를 상기 제조사 서버로부터 수신받아 등록하는 단계; 상기 업데이트 매니저 서버가 등록되는 제조사 정보 및 차량 단말 정보를 데이터베이스에 저장하는 단계; 상기 플랫폼이 상기 업데이트 매니저 서버로부터 제조사 정보 및 차량 단말 정보를 전달받아 등록하는 단계; 상기 업데이트 매니저 서버가 차량 단말 정보에 대응하는 유니크 아이디인 토큰을 상기 플랫폼으로부터 전달받는 단계; 상기 업데이트 매니저 서버가 전달받은 토큰을 상기 제조사 서버로 전송하는 단계; 및 상기 대상 단말기가 상기 제조사 서버로부터 토큰을 입력받는 단계를 포함하며, 상기 펌웨어 버전 확인 단계는, 상기 대상 단말기가 자신의 펌웨어 버전 정보를 주기적으로 상기 플랫폼으로 전송하는 단계; 및 상기 업데이트 매니저 서버가 상기 플랫폼으로 전송되는 상기 대상 단말기의 펌웨어 버전 정보를 확인하는 단계를 포함하며, 상기 펌웨어 패키징 단계는, 상기 다운로드 서버가 상기 제조사 서버로부터 펌웨어를 입력받는 단계; 상기 다운로드 서버가 입력받은 펌웨어를 패키징하여 분할 및 보안이 적용된 전송 펌웨어를 생성하는 단계; 상기 다운로드 서버가 생성된 전송 펌웨어를 데이터베이스에 저장하는 단계; 상기 다운로드 서버가 생성된 전송 펌웨어의 펌웨어 다운로드 디렉토리(URL)를 상기 업데이트 매니저 서버로 업로드하는 단계; 상기 업데이트 매니저 서버가 펌웨어 업데이트 알림(Notice)을 생성하는 단계; 상기 업데이트 매니저 서버가 생성된 펌웨어 업데이트 알림을 상기 플랫폼으로 전달하는 단계; 상기 플랫폼이 전달받은 펌웨어 업데이트 알림을 상기 대상 단말기로 전송하는 단계; 및 상기 업데이트 매니저 서버가 펌웨어 업데이트 알림의 전송 결과를 상기 제조사 서버로 전송하는 단계를 포함하며, 상기 펌웨어 다운로드 단계는, 상기 대상 단말기가 상기 다운로드 서버로부터 전송용 펌웨어를 다운로드 받는 단계; 상기 대상 단말기가 다운로드 결과를 상기 플랫폼으로 전송하는 단계; 상기 업데이트 매니저 서버가 상기 플랫폼을 통해 다운로드 결과를 확인하는 단계; 및 상기 업데이트 매니저 서버가 다운로드 결과를 상기 제조사 서버로 전송하는 단계를 포함하며, 상기 펌웨어 업데이트 단계는, 상기 대상 단말기가 수신받은 수신용 펌웨어를 언패키징하여 펌웨어 업데이트를 준비하는 단계; 업데이트의 준비가 완료되면, 상기 대상 단말기가 펌웨어 업데이트를 수행하는 단계; 상기 대상 단말기가 펌웨어 업데이트의 결과를 상기 플랫폼으로 전송하는 단계; 상기 업데이트 매니저 서버가 상기 플랫폼을 통해 펌웨어 업데이트의 결과를 확인하는 단계; 및 상기 업데이트 매니저 서버가 펌웨어 업데이트의 결과를 상기 제조사 서버로 전송하는 단계를 포함할 수 있다.In one embodiment, the terminal registration step comprises: the update manager server receiving and registering manufacturer information of the target terminal and vehicle terminal information on which the target terminal is installed from the manufacturer server; Storing manufacturer information and vehicle terminal information on which the update manager server is registered in a database; The platform receiving and registering manufacturer information and vehicle terminal information from the update manager server; Receiving, by the update manager server, a token that is a unique ID corresponding to vehicle terminal information from the platform; Transmitting the token received from the update manager server to the manufacturer server; And receiving, by the target terminal, a token from the manufacturer server, wherein the firmware version checking step comprises: the target terminal periodically transmitting its firmware version information to the platform; And checking, by the update manager server, firmware version information of the target terminal transmitted to the platform, wherein the firmware packaging step comprises: the download server receiving firmware from the manufacturer server; Packaging the firmware received by the download server to generate transmission firmware to which division and security are applied; Storing the transmission firmware generated by the download server in a database; Uploading a firmware download directory (URL) of the transmission firmware generated by the download server to the update manager server; Generating, by the update manager server, a firmware update notification; Delivering the firmware update notification generated by the update manager server to the platform; Transmitting a firmware update notification received from the platform to the target terminal; And transmitting, by the update manager server, a result of sending a firmware update notification to the manufacturer server, wherein the firmware download step comprises: the target terminal downloading the firmware for transmission from the download server; Transmitting, by the target terminal, a download result to the platform; Checking, by the update manager server, a download result through the platform; And transmitting, by the update manager server, the download result to the manufacturer server, wherein the firmware update step comprises: preparing a firmware update by unpackaging the receiving firmware received by the target terminal; When the preparation of the update is completed, the target terminal performing a firmware update; Transmitting, by the target terminal, the result of the firmware update to the platform; Checking, by the update manager server, a result of firmware update through the platform; And sending, by the update manager server, the result of the firmware update to the manufacturer server.

일 실시예에서, 상기 전송용 펌웨어를 생성하는 단계는, 상기 제조사 서버로부터 입력되는 펌웨어를 다수 개의 블록으로 분할하는 단계; 및 분할된 블록들을 암호화하는 단계를 포함하며, 상기 분할하는 단계에서 분할된 블록은, 펌웨어 명칭 및 펌웨어 버전을 포함하는 퍼스트 블록, 상기 퍼스트 블록의 다음에 순서에 따라 배치되며, 펌웨어 데이터의 일부가 각각 할당되어 전체로서 하나의 펌웨어 데이터를 형성하는 다수 개의 펌웨어 블록 및 마지막 펌웨어 블록 다음에 배치되어 패키징의 종료를 알리는 라스트 블록으로 구성되며, 상기 암호화하는 단계는, 상기 펌웨어 블록을 헤더(Header)와 바디(Body)로 구분하고, 상기 헤더에는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값 또는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값을 입력으로 대입한 사인값(Sign)을 입력하고, 상기 바디에는 펌웨어 데이터를 암호화한 값을 입력으로 할 수 있다.In one embodiment, the step of generating the firmware for transmission includes: dividing the firmware input from the manufacturer server into a plurality of blocks; And encrypting the divided blocks, wherein the divided blocks in the dividing step are first blocks including a firmware name and a firmware version, and are arranged in order after the first blocks, and a part of the firmware data is Consisting of a plurality of firmware blocks, each allocated and forming a single firmware data as a whole, and a last block disposed after the last firmware block to signal the end of packaging, and the encrypting step comprises the step of encrypting the firmware block with a header. It is divided into a body, and in the header, a sine value (Sign) is substituted for the output value when the firmware data is the input of the hash function or the output value when the firmware data is the input of the hash function, In the body, an encrypted data value may be used as an input.

일 실시예에서, 상기 업데이트를 준비하는 단계는, 상기 퍼스트 블록을 복호한 후, 상기 퍼스트 블록에 포함된 인포값(info)을 통해 상기 대상 단말기의 펌웨어 업데이트가 필요한지를 판독하고, 펌웨어 업데이트가 필요한 경우 사인과 해쉬가 해제된 인포값과 상기 퍼스트 블록에 기 포함되어 있던 인포값을 비교하는 버전 확인 단계; 및 상기 버전 확인 단계에서 버전 확인이 완료되면, 상기 펌웨어 블록들을 다운로드 받아 복호화한 후, 사인이 해제된 펌웨어 데이터의 해쉬값과 상기 펌웨어 블록에 기 포함되어 있던 펌웨어 데이터의 해쉬값을 비교하여 같은 경우 분할된 각각의 펌웨어 데이터들을 병합하는 데이터 병합 단계를 포함하며, 상기 펌웨어 업데이트를 수행하는 단계는, 상기 라스트 블록에 대한 복호화까지 완료되면 병합된 펌웨어 데이터를 이용하여 펌웨어 업데이트를 수행할 수 있다.In one embodiment, the step of preparing the update, after decoding the first block, reads whether the firmware update of the target terminal is necessary through the info value (info) included in the first block, and the firmware update is required A version checking step of comparing the info value in which the sine and the hash are released and the info value previously included in the first block; And when the version check is completed in the version checking step, after downloading and decrypting the firmware blocks, comparing the hash value of the unlocked firmware data with the hash value of the firmware data previously included in the firmware block. And a data merging step of merging the divided pieces of firmware data, and performing the firmware update may perform firmware update using the merged firmware data when decoding of the last block is completed.

상술한 본 발명의 일측면에 따르면, 저전력 무선네트워크를 이용하여 펌웨어 업데이트를 수행할 수 있도록 함으로써, 제조사에서 제공하는 펌웨어를 분할하여 FOTA 대상 단말기로 전송함에 따라, 저전력 무선네트워크 상황이나, FOTA 대상 단말기의 성능이 우수하지 않다고 하더라도 제조사에서 제공하는 펌웨어를 부담없이 전송받도록 할 수 있다.According to one aspect of the present invention described above, by allowing the firmware update to be performed using a low-power wireless network, by dividing the firmware provided by the manufacturer and transmitting to the FOTA target terminal, the low-power wireless network situation, or FOTA target terminal Even if its performance is not excellent, it is possible to receive the firmware provided by the manufacturer without any burden.

도 1은 업데이트 매니저 서버, 다운로드 서버, 플랫폼, 대상 단말기 및 제조사 서버의 관계를 설명하는 도면이다.
도 2는 본 발명의 일 실시예에 따른 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법을 설명하는 순서도이다.
도 3은 도 2의 단말기 등록 단계를 설명하는 순서도이다.
도 4는 도 2의 펌웨어 버전 확인 단계를 설명하는 순서도이다.
도 5는 도 2의 펌웨어 패키징 단계를 설명하는 순서도이다.
도 6은 도 5의 전송용 펌웨어를 생성하는 단계에 의한 분할 및 보안이 적용된 전송용 펌웨어의 생성을 설명하는 도면이다.
도 7은 도 2의 펌웨어 다운로드 단계를 설명하는 순서도이다.
도 8은 도 2의 펌웨어 업데이트 단계를 설명하는 순서도이다.
1 is a view for explaining the relationship between an update manager server, a download server, a platform, a target terminal, and a manufacturer server.
2 is a flowchart illustrating a firmware update method using a low power wireless network according to an embodiment of the present invention.
FIG. 3 is a flowchart illustrating the terminal registration step of FIG. 2.
FIG. 4 is a flowchart illustrating the firmware version checking step of FIG. 2.
5 is a flowchart illustrating the firmware packaging step of FIG. 2.
FIG. 6 is a diagram illustrating generation of transmission firmware to which division and security are applied by generating the transmission firmware of FIG. 5.
FIG. 7 is a flowchart illustrating the firmware download step of FIG. 2.
8 is a flowchart illustrating the firmware update step of FIG. 2.

후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.For a detailed description of the present invention, which will be described later, reference is made to the accompanying drawings that illustrate, by way of example, specific embodiments in which the present invention may be practiced. These examples are described in detail enough to enable those skilled in the art to practice the present invention. It should be understood that the various embodiments of the invention are different, but need not be mutually exclusive. For example, certain shapes, structures, and properties described herein may be implemented in other embodiments without departing from the spirit and scope of the invention in connection with one embodiment. In addition, it should be understood that the location or placement of individual components within each disclosed embodiment can be changed without departing from the spirit and scope of the invention. Therefore, the following detailed description is not intended to be taken in a limiting sense, and the scope of the present invention, if appropriately described, is limited only by the appended claims, along with all ranges equivalent to those claimed. Like reference numerals in the drawings refer to the same or similar functions throughout the several aspects.

이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the drawings.

도 1은 업데이트 본 발명의 매니저 서버, 다운로드 서버, 플랫폼, 대상 단말기 및 제조사 서버의 관계를 설명하는 도면이다.1 is a view for explaining the relationship between the manager server, the download server, the platform, the target terminal and the manufacturer server of the updated invention.

도 1에서 네트워크라 함은, 저전력 무선네트워크로서, LTE Cat m.1 등이 이에 해당할 수 있다.In FIG. 1, a network is a low-power wireless network, and LTE Cat m.1 may correspond to this.

본 발명의 일 실시예에 따른 펌웨어 패키징 및 언패키징 방법은 다운로드 서버가 제조사 서버로부터 입력되는 펌웨어를 다수 개의 블록으로 분할하는 단계; 및 상기 다운로드 서버가 분할된 블록들을 암호화하는 단계를 포함하며, 상기 분할하는 단계에서 분할된 블록은, 펌웨어 명칭 및 펌웨어 버전을 포함하는 퍼스트 블록, 상기 퍼스트 블록의 다음에 순서에 따라 배치되며, 펌웨어 데이터의 일부가 각각 할당되어 전체로서 하나의 펌웨어 데이터를 형성하는 다수 개의 펌웨어 블록 및 마지막 펌웨어 블록 다음에 배치되어 패키징의 종료를 알리는 라스트 블록으로 구성되며, 상기 암호화하는 단계는, 상기 펌웨어 블록을 헤더(Header)와 바디(Body)로 구분하고, 상기 헤더에는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값 또는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값을 입력으로 대입한 사인값(Sign)을 입력하고, 상기 바디에는 펌웨어 데이터를 암호화한 값을 입력으로 한다.A method for packaging and unpacking firmware according to an embodiment of the present invention includes: a download server dividing the firmware input from a manufacturer server into a plurality of blocks; And encrypting the divided blocks by the download server, and the divided blocks in the dividing step are first blocks including a firmware name and a firmware version, and are arranged in order after the first blocks, followed by firmware. Consisting of a plurality of firmware blocks, each of which is partially allocated to form one firmware data as a whole, and a last block disposed after the last firmware block to signal the end of packaging, and the encrypting step includes headering the firmware block. It is divided into (Header) and Body (Body), and in the header, the output value when the firmware data is input as the hash function or the output value when the firmware data is the input of the hash function is signed. And input the encrypted value of the firmware data into the body.

일 실시예에 있어서, 상기 다운로드 서버와 통신하는 대상 단말기가 상기 퍼스트 블록을 복호한 후, 상기 퍼스트 블록에 포함된 인포값(info)을 통해 상기 대상 단말기의 펌웨어 업데이트가 필요한지를 판독하고, 펌웨어 업데이트가 필요한 경우 사인과 해쉬가 해제된 인포값과 상기 퍼스트 블록에 기 포함되어 있던 인포값을 비교하는 버전 확인 단계; 및 상기 대상 단말기가 상기 버전 확인 단계에서 버전 확인이 완료되면, 상기 펌웨어 블록들을 다운로드 받아 복호화한 후, 사인이 해제된 펌웨어 데이터의 해쉬값과 상기 펌웨어 블록에 기 포함되어 있던 펌웨어 데이터의 해쉬값을 비교하여 같은 경우 분할된 각각의 펌웨어 데이터들을 병합하는 데이터 병합 단계를 포함한다.In one embodiment, after a target terminal communicating with the download server decodes the first block, reads whether a firmware update of the target terminal is necessary through an info value (info) included in the first block, and updates the firmware A version checking step of comparing the info value with which the sine and hash are canceled and the info value previously included in the first block if is necessary; And when the version check is completed in the version checking step, after downloading and decrypting the firmware blocks, the hash value of the unlocked firmware data and the hash value of the firmware data previously included in the firmware block are determined. In the same case, the data merging step includes merging the divided pieces of firmware data.

펌웨어 패키징 및 언패키징 방법은 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법의 전송용 펌웨어를 생성하는 단계 및 업데이트를 준비하는 단계에 대응될 수 있음은 자명하다.It is obvious that the firmware packaging and unpackaging methods can correspond to the steps of generating the firmware for transmission of the firmware update method using a low-power wireless network and preparing the update.

도 2는 본 발명의 일 실시예에 따른 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법을 설명하는 도면이다.2 is a diagram illustrating a firmware update method using a low power wireless network according to an embodiment of the present invention.

도 2를 참조하면, 본 발명의 일 실시예에 따른 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법은, 우선 업데이트 매니저 서버(100)에서 펌웨어 업데이트의 대상이 되는 대상 단말기(400)의 단말기 정보를 제조사 서버(500)로부터 수신받아 등록한다(S110).Referring to Figure 2, the firmware update method using a low-power wireless network according to an embodiment of the present invention, first, the update manager server 100, the terminal information of the target terminal 400 to be the target of the firmware update from the manufacturer server ( 500) and registers (S110).

여기서, 대상 단말기(400)라 함은, 네비게이션 등과 같이 차량에 장착되는 장치로서, 정기적 또는 비정기적으로 펌웨어 업데이트가 필요한 장치로서, 예를 들어, 스마트카의 V2X(vehicle to everything) 인포테이먼트 디바이스 등이 이에 해당할 수 있다.Here, the target terminal 400 is a device that is mounted on a vehicle, such as a navigation device, and is a device that requires regular or irregular firmware update, for example, a V2X (vehicle to everything) information device of a smart car And so on.

이에 따라, 대상 단말기(400)은, 통신 기능(예를 들어, Cat m.1), F/W 다운로드 클라이언트 매니저, 업데이트 인증, 단말 인증, Secure FOTA 언패키징 API, Core Crypto 및 부트로더 등의 기능을 수행하여야 할 것이다Accordingly, the target terminal 400 is a communication function (for example, Cat m.1), F/W download client manager, update authentication, terminal authentication, Secure FOTA unpackaging API, Core Crypto, and functions such as a boot loader Will have to do

도 3을 참조하면, 단말기 등록 단계(S110)는, 업데이트 매니저 서버(100)가 대상 단말기(400)의 제조사 정보 및 대상 단말기(400)가 설치된 차량 단말 정보(즉, 모델 정보)를 제조사 서버(500)로부터 수신받아 등록하는 단계(S111), 업데이트 매니저 서버(100)가 등록되는 제조사 정보 및 차량 단말 정보를 데이터베이스에 저장하는 단계(S112), 플랫폼(300)이 업데이트 매니저 서버(100)로부터 제조사 정보 및 차량 단말 정보를 전달받아 등록하는 단계(S113), 업데이트 매니저 서버(100)가 차량 단말 정보에 대응하는 유니크 아이디인 토큰을 플랫폼(300)으로부터 전달받는 단계(S114), 업데이트 매니저 서버(100)가 전달받은 토큰을 제조사 서버(500)로 전송하는 단계(S115) 및 대상 단말기(400)가 제조사 서버(500)로부터 토큰을 입력받는 단계(S116)를 포함할 수 있다.Referring to FIG. 3, in the terminal registration step (S110 ), the update manager server 100 displays manufacturer information of the target terminal 400 and vehicle terminal information (ie, model information) on which the target terminal 400 is installed, from the manufacturer server ( 500) receiving and registering (S111), the step of storing the manufacturer information and vehicle terminal information in which the update manager server 100 is registered in the database (S112), the platform 300 is the manufacturer from the update manager server 100 Step S113 of receiving and registering information and vehicle terminal information, step S114 in which the update manager server 100 receives a token, which is a unique ID corresponding to the vehicle terminal information, from the platform 300 (S114), update manager server 100 ) May include transmitting the token received from the manufacturer server 500 (S115) and the target terminal 400 receiving a token from the manufacturer server 500 (S116 ).

대상 단말기(400)의 펌웨어 업데이트를 관리하는 플랫폼(300)에서 저전력 무선네트워크(예를 들어, LTE Cat.M1)를 이용하여 대상 단말기(400)의 펌웨어 버전 정보를 확인한다(S120).The platform 300 that manages the firmware update of the target terminal 400 checks the firmware version information of the target terminal 400 using a low power wireless network (for example, LTE Cat.M1) (S120).

이때, 플랫폼(300)은, 업데이트 매니저 서버(100)와 REST(Representational State ransfer) API를 통하여 데이터를 송수신할 수 있다.At this time, the platform 300 may transmit and receive data through the update manager server 100 and the REST (Representational State ransfer) API.

도 4를 참조하면, 펌웨어 버전 확인 단계(S120)는, 우선 대상 단말기(400)가 자신의 펌웨어 버전 정보를 주기적으로 플랫폼(300)으로 전송하는 단계(S121)를 수행할 수 있다.Referring to FIG. 4, in the firmware version checking step (S120 ), first, the target terminal 400 periodically performs the step (S121) of transmitting its firmware version information to the platform 300.

일 실시예에서, 대상 단말기(400)가 펌웨어 버전 정보 이에 추가하여 플랫폼(300)으로 전송하는 정보로는 다음의 표 1과 같다.In one embodiment, the target terminal 400 is transmitted to the platform 300 in addition to the firmware version information, as shown in Table 1 below.

Figure 112018104838322-pat00001
Figure 112018104838322-pat00001

표 1에서, 주기 보고 및 속성 보고는 대상 단말기(400)가 플랫폼(300)으로 전송하는 정보들로서, 주기 보고는 분 단위 이상의 일정 간격으로 보고하는 정보로 구체적으로 주기 보고는 5분에 1번 정도로 보고하는 정보이고, 속성 보고는 24시간에 1번 정도로 보고하는 정보로서, 이때, 상술한 대상 단말기(400)가 플랫폼(300)으로 전송하는 펌웨어 버전 정보는 속성 보고 중"attfwVer, string, 펌웨어버전"이다.In Table 1, the period report and the attribute report are information that the target terminal 400 transmits to the platform 300, and the period report is information that reports at regular intervals of minutes or more. Specifically, the period report is about once every 5 minutes. Information to be reported, and attribute reporting is information that is reported about once every 24 hours. At this time, the firmware version information transmitted by the target terminal 400 to the platform 300 is being reported in the attribute "attfwVer, string, firmware version "to be.

상술한 단계 S121이후에, 업데이트 매니저 서버(100)가 상술한 단계 S121에서 플랫폼(300)으로 전송되는 대상 단말기(400)의 펌웨어 버전 정보를 확인하는 단계(S122)를 수행하게 된다.After the above-described step S121, the update manager server 100 performs a step (S122) of checking the firmware version information of the target terminal 400 transmitted to the platform 300 in the above-described step S121.

다운로드 서버(200)에서 제조사 서버(500)로부터 업데이트용 펌웨어를 입력받아 대상 단말기(400)로 전송하기 위해 패키징한다(S130).The download server 200 receives update firmware from the manufacturer server 500 and packages it for transmission to the target terminal 400 (S130).

도 5를 참조하면, 펌웨어 패키징 단계(S130)는, 다운로드 서버(200)가 제조사 서버(500)로부터 펌웨어를 입력받는 단계(S131), 다운로드 서버(200)가 입력받은 펌웨어를 패키징(여기서, 전송용 펌웨어를 생성하는 패키징이라 함은, 펌웨어 파일을 분할하고 분할 적용하는 것을 의미함)하여 분할 및 보안이 적용된 전송용 펌웨어를 생성하는 단계(S132), 다운로드 서버(200)가 생성된 전송용 펌웨어를 데이터베이스에 저장하는 단계(S133), 다운로드 서버(200)가 생성된 전송용 펌웨어의 펌웨어 다운로드 디렉토리(URL)를 업데이트 매니저 서버(100)로 업로드하는 단계(S134), 업데이트 매니저 서버(100)가 펌웨어 업데이트 알림(Notice)을 생성하는 단계(S135), 업데이트 매니저 서버(100)가 생성된 펌웨어 업데이트 알림을 플랫폼(300)으로 전달하는 단계(S136), 플랫폼(300)이 전달받은 펌웨어 업데이트 알림을 대상 단말기(400)로 전송하는 단계(S137) 및 업데이트 매니저 서버(100)가 펌웨어 업데이트 알림의 전송 결과를 제조사 서버(500)로 전송하는 단계(S137)를 포함할 수 있다.Referring to FIG. 5, in the firmware packaging step (S130 ), the download server 200 receives the firmware input from the manufacturer server 500 (S131 ), and the download server 200 packages the received firmware (here, transmission) Packaging to generate the firmware for the firmware means that the firmware file is divided and applied by partitioning (S132), and the download server 200 generates the generated firmware for transmission. Storing in the database (S133), uploading the firmware download directory (URL) of the firmware for transmission generated by the download server 200 to the update manager server 100 (S134), and the update manager server 100 Step (S135) for generating a firmware update notification (Notice), step (S136) for delivering the firmware update notification generated by the update manager server 100 to the platform 300 (S136), and the firmware update notification received by the platform 300 The step of transmitting to the target terminal 400 (S137) and the update manager server 100 may include the step of transmitting the firmware update notification transmission result to the manufacturer server 500 (S137).

이때, 플랫폼(300)이 대상 단말기(400)로 전송하는 펌웨어 업데이트 알림에 포함되는 정보는 다음의 표 2와 같다.At this time, the information included in the firmware update notification transmitted from the platform 300 to the target terminal 400 is shown in Table 2 below.

Figure 112018104838322-pat00002
Figure 112018104838322-pat00002

표 2에서, FOTA 주소는, 상술한 펌웨어를 생성하는 단계(S132)에서 생성하는 URL이고, 펌웨어 파일 개수는 분할된 파일의 개수를 의미한다.In Table 2, the FOTA address is a URL generated in step S132 of generating the above-described firmware, and the number of firmware files means the number of divided files.

기존에는 유선으로 FOTA 대상이 되는 단말기의 펌웨어를 업데이트 하지만, 본 발명에서는 저전력의 무선 네트워크를 이용하여 업데이트를 수행하고, 시스템 자체를 저렴하게 구현하기 위해 저성능 FOTA 대상 단말기를 대상으로 한다.Conventionally, the firmware of a terminal targeted for FOTA is updated by wire, but in the present invention, a target is targeted for a low-performance FOTA in order to perform an update using a low power wireless network and implement the system itself at a low cost.

이에 따라, 본 발명에 따른 펌웨어 패키징 단계(S130)에 의해, 저전력 상황이나, FOTA의 대상 단말기(400)의 성능이 우수하지 않다고 하더라도 제조사에서 제공한 펌웨어를 부담 없이 전송할 수 있다.Accordingly, by the firmware packaging step (S130) according to the present invention, even if the performance of the low-power situation or the target terminal 400 of the FOTA is not excellent, it is possible to transmit the firmware provided by the manufacturer without burden.

일 실시예에서, 전송용 펌웨어를 생성하는 단계(S132)는, 먼저 제조사 서버(500)로부터 입력되는 펌웨어를 다수 개의 블록으로 분할할 후, 분할된 블록들을 암호화할 수 있다.In one embodiment, the step of generating firmware for transmission (S132) may first divide the firmware input from the manufacturer server 500 into a plurality of blocks, and then encrypt the divided blocks.

기존의 업데이트용 펌웨어는, Sign(H(펌웨어)), 펌웨어 명칭, 펌웨어 버전, Sign key(제조사 개인키)를 포함하는 헤더(Header)와 Encrypt(펌웨어), 암호화 key(Seed 키값에서 derivation)을 포함하는 바디(Body)로 구성됨에 따라 네트워크를 통해 전송 부담을 증가시킬 뿐만 아니라, 이를 전송받는 단말기로서도 다운로드 및 실행에 부담이 가중될 수 있다는 단점을 가지고 있었다.Existing firmware for update includes Header (Header) and Encrypt (Firmware), including encryption (Sign (H (firmware))), firmware name, firmware version, and sign key (manufacturer's private key), encryption key (derivation from the Seed key value). As it is composed of an included body, it not only increases the transmission burden through the network, but also has a drawback that the load on the download and execution can be increased even as a terminal receiving it.

이에 따라, 본 발명에서는, 펌웨어를 다수 개의 블록들로 분할하고 각 블록들을 암호화시켜 전송함으로써, FOTA(Firmware Over The Air) 대상 단말기(400)의 성능이 우수하지 않더라고 제조사에서 제공하는 펌웨어를 전송받을 수 있다.Accordingly, in the present invention, by dividing the firmware into a plurality of blocks and encrypting and transmitting each block, the firmware provided by the manufacturer is transmitted even though the performance of the target terminal 400 of the firmware over the air (FOTA) is not excellent. Can receive

여기서, 전송용 펌웨어를 생성하는 단계(S132)의 분할하는 단계에서 분할된 블록은, 펌웨어 명칭 및 펌웨어 버전을 포함하는 퍼스트 블록, 퍼스트 블록의 다음에 순서에 따라 배치되며, 펌웨어 데이터의 일부가 각각 할당되어 전체로서 하나의 펌웨어 데이터를 형성하는 다수 개의 펌웨어 블록 및 마지막 펌웨어 블록 다음에 배치되어 패키징의 종료를 알리는 라스트 블록으로 구성될 수 있다.Here, the blocks divided in the step of dividing in the step of generating firmware for transmission (S132) are arranged in the following order of the first block and the first block including the firmware name and the firmware version, and a part of the firmware data is respectively It may be composed of a plurality of firmware blocks allocated to form one firmware data as a whole and a last block disposed after the last firmware block to signal the end of packaging.

이때, 각각의 펌웨어 블록의 사이즈는 무선네트워크에 따라 달라진다. 상기 펌웨어 블록의 사이즈는 구체적으로 4KB일 수 있다.At this time, the size of each firmware block depends on the wireless network. Specifically, the size of the firmware block may be 4 KB.

다음으로, 전송용 펌웨어를 생성하는 단계(S132)의 암호화하는 단계에서는, 펌웨어 블록을 헤더(Header)와 바디(Body)로 구분하고, 헤더에는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값 또는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값을 입력으로 대입한 사인값(Sign)을 입력하고, 바디에는 펌웨어 데이터를 암호화한 값을 입력으로 할 수 있다.Next, in the step of encrypting in step S132 of generating the firmware for transmission, the firmware block is divided into a header and a body, and in the header, an output value when firmware data is input as a hash function or When the firmware data is input as a hash function, a sine value (Sign) is substituted for the output value, and an encrypted value is input to the body.

즉, 각각의 펌웨어 블록은, 하나의 헤더와 하나의 바디로 구성되게 된다.That is, each firmware block is composed of one header and one body.

도 6은 도 5의 전송용 펌웨어를 생성하는 단계(S132)에 의한 분할 및 보안이 적용된 전송용 펌웨어의 생성을 설명하는 도면이다.FIG. 6 is a diagram illustrating generation of transmission firmware to which division and security are applied by the step (S132) of generating the transmission firmware of FIG. 5.

도 6을 참조하면, 퍼스트 블록에는 "info"와 "Sign(H(Info))"가 암호화된 데이터(즉, Encrypted

Figure 112018104838322-pat00003
Figure 112018104838322-pat00004
)가 저장되고, 각각의 펌웨어 블록에는 "펌웨어 명칭", "펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값"과 "펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값을 입력으로 대입한 사인값(Sign)"가 암호화된 데이터(즉, Encrypted
Figure 112018104838322-pat00005
Figure 112018104838322-pat00006
내지 Encrypted
Figure 112018104838322-pat00007
Figure 112018104838322-pat00008
)가 저장되고, 라스트 불록에는 "H(F/W)"와 "Sign(H(FW))"가 암호화된 데이터(즉, Encrypted
Figure 112018104838322-pat00009
Figure 112018104838322-pat00010
)가 저장된다.Referring to FIG. 6, "info" and "Sign(H(Info))" are encrypted data (ie, Encrypted) in the first block.
Figure 112018104838322-pat00003
Figure 112018104838322-pat00004
) Is stored, and in each firmware block, "firmware name", "output value when the firmware data is input to the hash function" and "signal value substituted by the output value when the firmware data is input to the hash function"(Sign)" is encrypted data (ie, Encrypted
Figure 112018104838322-pat00005
Figure 112018104838322-pat00006
Encrypted
Figure 112018104838322-pat00007
Figure 112018104838322-pat00008
) Is stored, and in the last block, "H(F/W)" and "Sign(H(FW))" are encrypted data (ie, Encrypted
Figure 112018104838322-pat00009
Figure 112018104838322-pat00010
) Is saved.

여기서, "펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값을 입력으로 대입한 사인값(Sign)"은 선택 사항으로서, 즉, 본 발명에 펌웨어 블록에는 펌웨어를 해쉬한 후 사인하는 경우와 펌웨어를 해쉬만 하는 경우 모두 포함될 수 있다.Here, the "signal value (Sign) substituted with the output value when the firmware data is the input of the hash function" is optional, that is, the firmware block in the present invention hash the firmware and then signs the firmware Any hashing can be included.

대상 단말기(400)에서 다운로드 서버(200)로부터 패키징된 펌웨어를 저전력 무선네트워크(예를 들어, LTE Cat.M1)를 통해 다운로드 받는다(S140).The target terminal 400 downloads the firmware packaged from the download server 200 through a low power wireless network (for example, LTE Cat.M1) (S140).

도 7을 참조하면, 펌웨어 다운로드 단계(S140)는, 대상 단말기(400)가 다운로드 서버(200)로부터 전송용 펌웨어를 다운로드 받는 단계(S141), 대상 단말기(400)가 다운로드 결과를 플랫폼(300)으로 전송하는 단계(S142), 업데이트 매니저 서버(100)가 플랫폼(300)을 통해 다운로드 결과를 확인하는 단계(S143) 및 업데이트 매니저 서버(100)가 다운로드 결과를 제조사 서버(500)로 전송하는 단계(S144)를 포함할 수 있다.Referring to FIG. 7, in the firmware downloading step (S140 ), the target terminal 400 downloads the firmware for transmission from the download server 200 (S141 ), and the target terminal 400 displays the download result on the platform 300. Step (S142), the update manager server 100 checks the download result through the platform 300 (S143) and the update manager server 100 transmits the download result to the manufacturer server 500 It may include (S144).

이때, 펌웨어 다운로드는, RPC(Remote Procedure Call) 프로토콜을 특정 시간 예를 들면, 전송받은 익일 새벽 4시에 자동으로 실시되며, 펌웨어 다운로드는 차량 주행이 끝났을 때 실시되며, 만약 다운로드가 정상적으로 완료되지 않았을 경우에는 기존에 다운로드 받은 파일에 대해서 무시하고, 새롭게 다시 파일 다운로드를 시작하되, 만약 3회 이상 다운로드 실패 시에는 별도로 이슈를 관리한다.At this time, the firmware download is performed automatically when the remote procedure call (RPC) protocol is performed at a specific time, for example, at 4 AM on the next day of transmission, and the firmware download is performed when the vehicle has finished driving, if the download has not been completed normally. In case of this, ignore the previously downloaded file and start downloading the file again, but if the download fails more than 3 times, the issue is managed separately.

대상 단말기(400)에서 패키징된 펌웨어를 언패키징하여 펌웨어 업데이트를 수행한다(S150).The firmware packaged in the target terminal 400 is unpackaged to perform a firmware update (S150).

도 8을 참조하면, 펌웨어 업데이트 단계(S150)는, 대상 단말기(400)가 수신받은 수신용 펌웨어를 언패키징하여 펌웨어 업데이트를 준비하는 단계(S151), 업데이트의 준비가 완료되면, 대상 단말기(400)가 펌웨어 업데이트를 수행하는 단계(S152), 대상 단말기(400)가 펌웨어 업데이트의 결과를 플랫폼(300)으로 전송하는 단계(S153), 업데이트 매니저 서버(100)가 플랫폼(300)을 통해 펌웨어 업데이트의 결과를 확인하는 단계(S154) 및 업데이트 매니저 서버(100)가 펌웨어 업데이트의 결과를 제조사 서버(500)로 전송하는 단계(S155)를 포함할 수 있다.Referring to FIG. 8, in the firmware update step (S150 ), the target terminal 400 unpacks the received reception firmware to prepare a firmware update (S151 ), and when the update preparation is completed, the target terminal 400 ) Step of performing a firmware update (S152), the target terminal 400 transmits the result of the firmware update to the platform (S153), the update manager server 100 updates the firmware through the platform 300 Checking the result of the step (S154) and the update manager server 100 may include the step of transmitting the result of the firmware update to the manufacturer server 500 (S155).

이때, 차량의 시동이 꺼질 때 펌웨어 업데이트 여부를 확인하고 업데이트를 진행하게 되며, 펌웨어 언패키징과 동시에 언패키징된 펌웨어는 메모리에 올라간다.At this time, when the vehicle is turned off, it is checked whether or not the firmware is updated, and the update is performed. At the same time as the firmware is unpackaged, the unpackaged firmware is loaded into the memory.

일 실시예에서, 업데이트를 준비하는 단계(S151)는, 퍼스트 블록을 복호한 후, 퍼스트 블록에 포함된 인포값(info)을 통해 대상 단말기(400)의 펌웨어 업데이트가 필요한지를 판독하고, 펌웨어 업데이트가 필요한 경우 사인과 해쉬가 해제된 인포값과 퍼스트 블록에 기 포함되어 있던 인포값을 비교하는 버전 확인한 후, 버전 확인이 완료되면, 펌웨어 블록들을 다운로드 받아 복호화한 후, 사인이 해제된 펌웨어 데이터의 해쉬값과 펌웨어 블록에 기 포함되어 있던 펌웨어 데이터의 해쉬값을 비교하여 같은 경우 분할된 각각의 펌웨어 데이터들을 병합할 수 있다.In one embodiment, the step of preparing the update (S151), after decoding the first block, reads whether the firmware update of the target terminal 400 is necessary through the info value (info) included in the first block, and the firmware update If necessary, check the version that compares the info value that was previously included in the first block with the info value that has been released from the sign and hash, and when version verification is completed, download and decrypt the firmware blocks, and then download the decrypted firmware data. By comparing the hash value with the hash value of the firmware data previously included in the firmware block, each divided firmware data may be merged.

그리고, 펌웨어 업데이트를 수행하는 단계(S152)는, 라스트 블록에 대한 복호화까지 완료되면 병합된 펌웨어 데이터를 이용하여 펌웨어 업데이트를 수행할 수 있다.Then, in step S152 of performing a firmware update, when decoding for the last block is completed, the firmware update may be performed using the merged firmware data.

본 발명에 따른, 각각의 서버들은, 통신기능(예를 들어, Cat m.1) F/W 업로드 매니저, F/W 서비스 웹 기반 UI, 펌웨어 관리(버전, F/W), Secure FOTA 패키징 API, Core Crypto 등의 기능을 수행하여야 할 것이다.According to the present invention, each server, communication function (for example, Cat m.1) F/W upload manager, F/W service web-based UI, firmware management (version, F/W), Secure FOTA packaging API And Core Crypto.

상술한 바와 같은 기능을 수행하는 업데이트 매니저 서버(100)는, 백업 파일 분산화 모듈(설명의 편의상 도면에는 도시하지 않음)을 포함할 수 있다.The update manager server 100 performing the above-described functions may include a backup file distribution module (not shown in the drawing for convenience of description).

백업 파일 분산화 모듈은, 해킹 또는 랜섬웨어와 같은 외부의 공격으로부터 보호하여야 할 사용자 정보나 시스템 정보 등과 같은 중요 정보를 백업 파일로 생성한 후, 생성된 백업 파일을 동일한 데이터를 포함하는 1차 백업 파일과 2차 백업을 차례로 생성하여 저장하되, 1차 백업 파일과 2차 백업 파일의 저장 장소를 달리 하여 저장한다.The backup file decentralization module generates important information such as user information or system information to be protected from external attacks such as hacking or ransomware as a backup file, and then the generated backup file is the primary backup file containing the same data. Creates and saves the secondary backup in turn, but stores the primary backup file and secondary backup file in different storage locations.

다만, 백업 파일의 생성은 1차와 2차에 한정되는 것은 아니며, 시스템의 성능 등을 고려하여 3차 이상의 복수 개의 백업 파일을 생성하여도 무방하다.However, the creation of the backup file is not limited to the primary and secondary, and multiple backup files of the third or higher may be generated in consideration of the performance of the system.

그리고, 백업 파일 분산화 모듈은, 기 설정된 주기로(예를 들어, 시스템 상 기본적으로 설정된 주기인 3시간 마다 1회 내지 5시간 마다 1회 등, 다만 해당 설정된 주기에 한정되는 것은 아니며 사용자로부터 지정 받은 주기로 설정되어도 무방하다) 저장되었던 1차 백업 파일과 2차 백업 파일의 저장 장소를 시스템 상의 기 설정된 장소 또는 새롭게 생성된 장소로 변경한다.In addition, the backup file decentralization module is set at a preset cycle (for example, once every 3 hours, which is basically a set cycle on the system, once every 5 hours, etc.), but is not limited to the set cycle, and is a cycle specified by the user. It can be set even if it is set) Change the storage location of the saved primary backup file and secondary backup file to a preset location on the system or a newly created location.

이때, 백업 파일의 이동 장소는, 시스템 상에서 기 설정되거나 사용자로부터 지정 받은 장소가 아니라, 임의의 랜덤 변수에 따라 생성된 폴더나 서브 폴더로 지정됨이 바람직하다.At this time, it is preferable that the moving location of the backup file is designated as a folder or a sub-folder generated according to an arbitrary random variable, not a location previously set or designated by a user on the system.

이에 따라, 해킹 또는 랜섬웨어와 같은 공격형 프로그램이 공격하고자 하는 파일이 위치하는 폴더의 존재 또는 해당 폴더의 위치를 예측하고 용이하게 공격하는 것을 원천적으로 방지함은 물론, 삭제되어서는 안 되는 고객 정보와 같은 중요한 데이터가 사용자의 실수로 삭제되거나 수정되는 것을 방지할 수 있다.Accordingly, it is possible to predict the existence of a folder in which an attacking program such as hacking or ransomware is located, or the location of the folder where the file to be attacked is located, and to easily attack it, as well as to prevent customer information that should not be deleted. The same important data can be prevented from being accidentally deleted or modified by the user.

본 발명에서, 1차 백업 파일과 2차 백업 파일은, 동일한 내용의 데이터를 포함하고 있는 파일들로써, 상호 간에 우열이 존재하는 것은 아니며, 파일의 이동에 있어서도 1차 백업 파일의 이동 후 2차 백업 파일이 이동하거나, 2차 백업 파일의 이동 후 1차 백업 파일이 이동하여도 무방하다.In the present invention, the primary backup file and the secondary backup file are files that contain data of the same contents, and there is no superiority between them, and the secondary backup after the primary backup file is moved even when the files are moved. The file may be moved, or the primary backup file may be moved after the secondary backup file is moved.

일 실시예에서, 백업 파일 분산화 모듈은, 외부로부터 침입이 감지될 경우, 기 생성되었던 1차 백업 파일과 2차 백업 파일로부터의 복제를 연속적으로 수행하여 각 백업 파일의 서브 백업 파일들을 다수 개 생성하며, 생성된 다수 개의 서브 백업 파일들을 역시 랜덤 변수에 따라 생성된 서로 다른 장소에 개별적으로 저장할 수 있다.In one embodiment, when the intrusion is detected from the outside, the backup file distribution module continuously performs replication from previously generated primary backup files and secondary backup files to generate a plurality of sub backup files of each backup file. In addition, the generated multiple sub-backup files may also be individually stored in different locations created according to random variables.

이에 따라, 시스템 상에서 산발적으로 생성된 다수 개의 백업 파일을 임의의 장소로 나누어 저장함으로써, 일부 백업 파일이 공격에 의해 손실되거나 삭제되는 경우에도 시스템 상에 산발적으로 존재하는 백업 파일을 이용하여 필요한 자료 등을 용이하게 복구하도록 할 수 있다.Accordingly, by dividing and storing a plurality of backup files sporadically generated on the system in arbitrary places, necessary data, etc., can be obtained by using backup files sporadically present on the system even when some backup files are lost or deleted by an attack. Can be easily recovered.

다음으로, 백업 파일 분산화 모듈은, 다수 개의 백업 파일 중 현재 공격받고 있는 백업 파일이라고 판단된 파일을 시스템 상에서 영구적으로 삭제하게 된다.Next, the backup file decentralization module permanently deletes, on the system, a file determined to be an attacked backup file among a plurality of backup files.

이에 따라, 본 발명에서는, 해킹 또는 랜섬웨어의 공격 등으로 인해 시스템 상에서 정상적인 기능을 수행하지 못하거나, 해당 공격으로 인해 시스템 상에 존재하는 다른 파일까지도 위험에 노출시킬 수 있는 좀비 프로그램으로 변할 수 있는 파일을 미연에 시스템 상에서 삭제시킴으로써, 일부 파일로 인해 시스템 전체가 공격받는 것을 미연에 방지할 수 있다.Accordingly, in the present invention, a normal function on a system may not be performed due to a hacking or ransomware attack, or a zombie program that may expose other files on the system to risk due to the attack. By deleting the file on the system in advance, it is possible to prevent the entire system from being attacked by some files.

일 실시예에서, 백업 파일 분산화 모듈은, 백업 파일을 클라우드 서비스와 연동된 동기화 폴더에 저장한 경우, 해당 동기화 폴더에 백업 파일의 저장이 완료되고 저장한 백업 파일이 클라우드 상에 업로드 되면, 해당 동기화 폴더에 대한 동기화를 해제할 수 있다.In one embodiment, when the backup file decentralization module stores a backup file in a synchronization folder linked to a cloud service, when the backup file is stored in the corresponding synchronization folder and the stored backup file is uploaded on the cloud, the corresponding synchronization You can turn off synchronization for a folder.

예를 들어, 사용자의 동기화를 위한 클라우드 서비스가 "Dropbox"라고 할 경우, "Dropbox"에서 제공하고 있는 "선택적 동기화 서비스"를 이용하여 상술한 바와 같은 백업 파일 분산화 모듈의 기능을 구현하게 된다.For example, when the cloud service for user synchronization is referred to as "Dropbox", the function of the backup file decentralization module as described above is implemented using the "optional synchronization service" provided by "Dropbox".

즉, 백업 파일 분산화 모듈은, 백업 파일을 저장하기 위한 공간으로서 "백업 폴더"를 시스템 상에 생성하면, 클라우드 서비스는 새롭게 생성된 "백업 폴더"를 클라우드 상에서 역시 동일하게 생성하게 된다.That is, when the backup file decentralization module creates a "backup folder" on the system as a space for storing the backup file, the cloud service creates the newly created "backup folder" on the cloud as well.

다음으로, 백업 파일 분산화 모듈은, 해당 폴더에 백업 파일을 저장하게 될 것이고, 이에 따라 클라우드 상에도 해당 백업 파일이 업로드 된다.Next, the backup file decentralization module will store the backup file in the corresponding folder, and accordingly, the backup file is also uploaded on the cloud.

마지막으로, 클라우드 상에 해당 백업 파일의 업로드가 완료되면, 백업 파일 분산화 모듈은, 백업 파일 업로드에 사용되었던 "백업 폴더"에 대한 동기화만을 선택적으로 해제하고, "백업 폴더"를 시스템 상에서 삭제한다.Finally, when the upload of the corresponding backup file on the cloud is completed, the backup file decentralization module selectively releases only the synchronization for the "backup folder" used for uploading the backup file, and deletes the "backup folder" on the system.

이 경우, 시스템 전체에 대한 동기화를 해제하는 것이 아니라, 백업 파일의 업로드에 사용하기 위해 임시적으로 생성되었던 "백업 폴더"만에 대한 동기화를 해제함으로써, 클라우드 서비스와의 안정적인 동기화 서비스는 지속적으로 수행하는 반면, 백업 파일은 클라우스 상에 업로드시킨 후 시스템 상에서는 삭제함에 따라 크라우드 상에서 백업 파일은 안전하게 저장하는 한편 시스템을 침투한 공격에 지속적으로 노출되는 것은 원천적으로 방지할 수 있게 된다.In this case, instead of disabling synchronization for the entire system, by disabling synchronization for only the "backup folder" that was temporarily created for use in uploading backup files, a stable synchronization service with the cloud service is continuously performed. On the other hand, as the backup file is uploaded on the cloud and then deleted on the system, the backup file is safely stored on the cloud, and it is possible to fundamentally prevent continuous exposure to attacks that have infiltrated the system.

일 실시예에서, 백업 파일 분산화 모듈은, 클라우드 상에 업로드 하였던 백업 파일의 저장 장소를 변경할 순서가 된 경우, 선택적 동기화를 해제하였던 폴더의 동기화를 다시 수행하여 클라우드 서비스에 업로드 하였던 백업 파일을 다운받은 후, 다운받은 백업 파일을 상술한 바와 같이 랜덤 변수에 따라 새롭게 생성된 장소로 이동시킬 수 있다.In one embodiment, the backup file decentralization module downloads a backup file that has been uploaded to the cloud service by re-synchronizing a folder that has released selective synchronization when it is the order to change the storage location of the backup file that has been uploaded on the cloud. Thereafter, the downloaded backup file may be moved to a newly created location according to random variables as described above.

상술한 바와 같은 구성을 가지는 업데이트 매니저 서버(100)는, 개발 환경 관리 시스템(설명의 편의상 도면에는 도시하지 않음) 상에서 구현될 수 있다.The update manager server 100 having the above-described configuration may be implemented on a development environment management system (not shown in the drawings for convenience of description).

개발 환경은 다수의 개발자가 소프트웨어 개발을 위해 다수의 개발 시스템을 사용하며, 각 개발 시스템은 개발자의 제어에 따라 소프트웨어 컴포넌트 및 소프트웨어를 개발하고 직접 관리할 수 있다. 각 개발 시스템은 신뢰 플랫폼 모듈(TPM: Trusted Platform Module) 표준기술을 사용하며, 이에 따라 소프트웨어 컴포넌트가 사용 허가된 개발 시스템에서만 사용 가능하도록 한다. 신뢰 플랫폼 모듈(TPM)은 일종의 보안 장치로서, 데이터 암호화를 위한 보안키를 생성 및 관리할 수 있다.In the development environment, multiple developers use multiple development systems for software development, and each development system can develop and manage software components and software under the control of the developer. Each development system uses the Trusted Platform Module (TPM) standard technology, so that software components can be used only in licensed development systems. The Trust Platform Module (TPM) is a kind of security device, and can generate and manage a security key for data encryption.

개발 환경 관리 시스템은 소프트웨어 컴포넌트 사용에 대한 개발자의 권한을 제한하고, 개발자가 사용하는 개발 시스템에 대한 보안 인증을 수행할 수 있다. The development environment management system can restrict the developer's authority to use the software component and perform security authentication for the development system used by the developer.

개발 환경 관리 시스템은 개발 시스템으로부터 소프트웨어 컴포넌트 생성 또는 수정 허가 요청 메시지를 수신하는 경우, 해당 개발 시스템의 권한 정보를 확인하여 소프트웨어 컴포넌트 생성 또는 수정 허가 요청 메시지를 처리할 수 있다.When the development environment management system receives a request for permission to create or modify a software component from the development system, the development environment management system may process permission message for creation or modification of the software component by checking authorization information of the corresponding development system.

여기에서, 소프트웨어 컴포넌트는 소스코드, 디버깅 정보를 포함하는 바이너리, 디버깅 정보를 포함하지 않는 순수 바이너리, 코드에 대한 상세설명을 위한 문서, 코드의 이해를 위한 공정 수식모델 중 적어도 하나를 포함하여 구성될 수 있다.Here, the software component is configured to include at least one of source code, a binary containing debugging information, a pure binary containing no debugging information, a document for detailed description of the code, and a process formula model for understanding the code. Can.

권한 정보는 소프트웨어 컴포넌트를 읽을 수 있는 읽기 권한, 소프트웨어 컴포넌트를 생성 및 수정하여 저장할 수 있는 저장 권한, 권한 정보를 조정할 수 있는 권한조정 권한 중 적어도 하나를 포함하여 구성될 수 있다.The permission information may include at least one of a read permission to read the software component, a storage permission to create and modify the software component, and a permission adjustment permission to adjust the permission information.

개발 환경 관리 시스템은 권한 정보를 만족하는 어느 하나의 개발 시스템에 의해 소프트웨어 컴포넌트가 생성 또는 수정되는 경우, 이를 저장하여 다른 개발 시스템에서도 공유 가능하도록 제어할 수 있다. 이는 어느 하나의 개발 시스템에 의해 빌드한 모듈을 다른 개발 시스템에서 사용하여야 하는 경우가 있기 때문이다. When a software component is generated or modified by any one development system that satisfies authority information, the development environment management system can store it and control it so that it can be shared with other development systems. This is because a module built by one development system may need to be used in another development system.

개발 환경 관리 시스템은 이러한 소프트웨어 컴포넌트의 생성 또는 수정 이력을 저장한 데이터베이스를 구축할 수 있다. 이는 이력 정보를 통해 특정 변수의 값이 어떻게 달라졌는지 단계별로 추적할 수 있고, 그 특정 변수가 임의의 다른 변수의 값 변경에 어떠한 영향을 주었는지도 파악할 수 있기 때문이다.The development environment management system can build a database that stores the history of creation or modification of these software components. This is because it is possible to track how the value of a specific variable has changed step by step through history information, and also to understand how the specific variable has changed the value of any other variable.

구체적으로는, 개발 환경 관리 시스템은 소프트웨어 컴포넌트의 종류, 해당 소프트웨어 컴포넌트의 생성/수정 여부, 해당 소프트웨어 컴포넌트의 생성/수정 일자, 해당 소프트웨어 컴포넌트의 생성/수정 빈도, 해당 소프트웨어 컴포넌트를 생성/수정한 개발 시스템의 권한 정보를 포함하여 이력 정보를 생성할 수 있다. Specifically, the development environment management system is the type of software component, whether the software component is created/modified, the date of creation/modification of the software component, the frequency of creation/modification of the software component, and the development that creates/modifies the software component. It is possible to generate history information including the system's authority information.

개발 환경 관리 시스템은 이력 정보를 생성할 때마다 인덱스를 부여하여 이력 정보 데이터베이스에 저장할 수 있다.The development environment management system may assign an index to each generation of history information and store it in the history information database.

이때, 개발 환경 관리 시스템은 소프트웨어 컴포넌트의 종류별로 이력 정보 데이터베이스를 구축할 수 있다. 즉, 개발 환경 관리 시스템은 소프트웨어 컴포넌트의 중요도에 따라 이력 정보 데이터베이스를 구축할 수 있으며, 중요도가 가장 높은 종류에 해당하는 소프트웨어 컴포넌트의 이력 정보 데이터베이스는 후술하는 바와 같이 저장 공간 관리를 위한 데이터베이스 갱신 대상에서 제외될 수 있을 것이다.At this time, the development environment management system may build a history information database for each type of software component. That is, the development environment management system can build a history information database according to the importance of the software component, and the history information database of the software component corresponding to the highest importance type is a database update target for storage space management as described below. It may be excluded.

또는, 개발 환경 관리 시스템은 소프트웨어 컴포넌트의 생성/수정 일자 별로 이력 정보 데이터베이스를 구축할 수 있다. 일예로, 개발 환경 관리 시스템은 특정 일자의 이력 정보 데이터베이스를 구축하여, 해당 이력 정보 데이터베이스를 데이터베이스 갱신 대상에서 제외시킬 수 있다.Alternatively, the development environment management system may build a history information database for each creation/modification date of the software component. For example, the development environment management system may build a history information database on a specific date, and exclude the history information database from the database update target.

또는, 개발 환경 관리 시스템은 권한 정보 별로 이력 정보 데이터베이스를 구축할 수 있다. 일예로, 개발 환경 관리 시스템은 최고 권한 정보로 간주되는 권한 정보를 조정할 수 있는 권한조정 권한에 해당하는 개발 시스템에 의한 소프트웨어 컴포넌트의 이력 정보 데이터베이스를 구축하여, 해당 이력 정보 데이터베이스를 데이터베이스 갱신 대상에서 제외시킬 수 있다.Alternatively, the development environment management system may establish a history information database for each authority information. For example, the development environment management system constructs a database of the history information of the software component by the development system corresponding to the authority to adjust the authority information regarded as the highest authority information, and excludes the history information database from the database update target. I can do it.

개발 환경 관리 시스템은 상술한 바와 같이 효율적인 저장 공간 관리를 위해 이력 정보 데이터베이스를 갱신할 수 있다.As described above, the development environment management system may update the history information database for efficient storage space management.

구체적으로는, 개발 환경 관리 시스템은 이력 정보 데이터베이스의 인덱스가 미리 설정된 인덱스에 도달하면 이력 정보 데이터베이스 갱신을 수행할 수 있다.Specifically, the development environment management system may update the history information database when the index of the history information database reaches a preset index.

예를 들면, 개발 환경 관리 시스템은 이력 정보 데이터베이스의 전체 인덱스를 오름차순으로 하여 3 개의 구간으로 나눌 수 있다. For example, the development environment management system may divide the entire index of the history information database into three sections in ascending order.

개발 환경 관리 시스템은 3 개의 구간 중 가장 낮은 인덱스를 포함하는 구간에 해당하는 이력 정보를 조건 없이 삭제할 수 있다. 해당 구간에 해당하는 이력 정보는 생성/수정 일자가 오랜 시간이 경과한 것으로 간주할 수 있으며, 이에 해당 이력 정보가 다시 참조될 가능성은 낮으므로 조건 없이 삭제할 수 있다.The development environment management system may delete the history information corresponding to the section including the lowest index among the three sections without condition. The history information corresponding to the section can be regarded as a long time after the creation/modification date. Therefore, it is unlikely that the history information will be referenced again, so it can be deleted without conditions.

개발 환경 관리 시스템은 3 개의 구간 중 가운데 구간에 해당하는 이력 정보를 소프트웨어 컴포넌트의 종류에 따라 삭제 또는 유지 여부를 결정하여 갱신할 수 있다. 즉, 개발 환경 관리 시스템은 소프트웨어 컴포넌트의 종류에 따라 중요도를 분류할 수 있으며, 3 개의 구간 중 가운데 구간에 해당하는 이력 정보 중 중요도가 가장 높은 소프트웨어 컴포넌트의 종류에 해당하는 이력 정보만을 유지하고 나머지 이력 정보는 모두 삭제하는 방식으로 이력 정보 데이터베이스를 갱신할 수 있다.The development environment management system may update the history information corresponding to the middle section among the three sections by determining whether to delete or maintain it according to the type of software component. That is, the development environment management system can classify the importance according to the type of the software component, and maintains only the history information corresponding to the type of the software component having the highest importance among the history information corresponding to the middle section among the three sections and the remaining history The history information database can be updated by deleting all information.

또는, 개발 환경 관리 시스템은 3 개의 구간 중 가운데 구간에 해당하는 이력 정보를 소프트웨어 컴포넌트의 생성/수정 빈도에 따라 삭제 또는 유지 여부를 결정하여 갱신할 수 있다. 즉, 3 개의 구간 중 가운데 구간에 해당하는 이력 정보 중 그 생성/수정 빈도가 미리 설정된 기준 빈도보다 높은 이력 정보는 모두 삭제하고 나머지 이력 정보는 유지하는 방식으로 이력 정보 데이터베이스를 갱신할 수 있다.Alternatively, the development environment management system may update the history information corresponding to the middle section among the three sections by determining whether to delete or maintain it according to the frequency of creation/modification of the software component. That is, the history information database may be updated by deleting all of the history information corresponding to the middle section among the three sections whose generation/modification frequency is higher than a preset reference frequency and maintaining the remaining history information.

또는, 개발 환경 관리 시스템은 3 개의 구간 중 가운데 구간에 해당하는 이력 정보를 개발 시스템의 권한 정보에 따라 삭제 또는 유지 여부를 결정하여 갱신할 수 있다. 즉, 3 개의 구간 중 가운데 구간에 해당하는 이력 정보 중 그 권한 정보가 최고 권한 정보로 간주되는 권한 정보를 조정할 수 있는 권한조정 권한인 이력 정보는 그대로 유지하고, 나머지 이력 정보는 모두 삭제하는 방식으로 이력 정보 데이터베이스를 갱신할 수 있다.Alternatively, the development environment management system may update the history information corresponding to the middle section among the three sections by determining whether to delete or maintain it according to the authority information of the development system. In other words, the history information, which is the authority to adjust the authority information of which the authority information is regarded as the highest authority information among the history information corresponding to the middle section among the three sections, is maintained, and all the remaining history information is deleted. The history information database can be updated.

개발 환경 관리 시스템은 3 개의 구간 중 가장 높은 인덱스를 포함하는 구간에 해당하는 이력 정보를 그대로 유지할 수 있다. 해당 구간에 해당하는 이력 정보는 생성/수정 일자가 비교적 최근의 것으로 간주할 수 있으며, 이에 해당 이력 정보가 다시 참조될 가능성은 높으므로 그대로 유지할 수 있다.The development environment management system can maintain history information corresponding to the section including the highest index among the three sections. The history information corresponding to the corresponding section can be regarded as a relatively recent creation/modification date, and thus it is highly likely that the history information will be referenced again, so that it can be maintained.

상술한 바와 같은 구성을 가지는 업데이트 매니저 서버(100)의 구성 중 일부는 인공지능에 의해 구현될 수 있으며, 의사결정 이유 제시부(설명의 편의상 도면에는 도시하지 않음)을 더 포함할 수 있다. Some of the configurations of the update manager server 100 having the above-described configuration may be implemented by artificial intelligence, and may further include a decision reason presentation unit (not illustrated in the drawings for convenience of description).

의사결정 이유 제시부는, 주어지거나 사용자에 의해 입력된 데이터에 대해서 분류ㅇ예측할 뿐만 아니라 결정에 대한 인과관계를 분석하여 적절한 근거를 찾아, 인공지능이 제시한 결과에 대해서 왜 그런 결과가 나오는지에 대한 이유를 사용자 레벨에서 설명할 수 있다. 의사결정 이유 제시부를 통해 사용자와 인공지능 상호간의 신뢰할 수 있는 의사결정을 가능케 함으로써, 문제나 오류 발생 시 사용자에 의한 피드백이 적절하게 반영될 수 있다. 또한, 의사결정 이유 제시부를 둠으로써, 인공지능이 제시하는 결과에 대해서 왜 그런 결과가 나오는지에 대한 원인을 명쾌하게 설명할 수 없어 사용자가 인공지능에 가질 수 있는 불신감을 해소할 수 있으며, 과도하게 학습을 진행할 경우 전체적인 관점에서의 최적해가 아닌 지역 내 최적해가 선택될 수 있다는 과적합화(overfitting) 문제를 미연에 방지할 수 있다.The reason for decision making is not only to classify and predict the data given or input by the user, but also to analyze the causality of the decision to find an appropriate basis, and why the artificial intelligence suggests the result. Can be explained at the user level. By enabling reliable decision-making between the user and artificial intelligence through the decision reason presentation unit, feedback from the user can be appropriately reflected in case of problems or errors. In addition, by placing a decision-making reason presentation unit, it is possible to clarify the cause of why such a result is not clearly explained about the result of artificial intelligence, so that the distrust of the user's artificial intelligence can be solved. In the case of learning, it is possible to prevent the overfitting problem that the optimal solution in the region may be selected rather than the optimal solution from the overall perspective.

일 실시 예에서, 의사결정 이유 제시부는 모델 구축 모듈 및 이유 설명 인터페이스 모듈을 더 포함할 수 있다. 모델 구축 모듈은 심층 설명 학습 모듈, 해석 가능한 모델 생성 모듈 및 모델 귀납 모듈로 구현될 수 있다.In one embodiment, the decision reason presentation unit may further include a model building module and a reason description interface module. The model building module may be implemented as an in-depth description learning module, an interpretable model generation module, and a model induction module.

심층 설명 학습 모듈은 변형된 딥러닝 기술로서 심층 신경망이 설명 가능한 특징들을 학습하도록 할 수 있다. 은닉계층의 노드가 의미 있는 속성을 나타내도록 학습할 수 있으며, 예를 들어 팔과 다리의 이미지를 구분하는 모델을 학습한다면, 각 은닉 노드가 손톱이나 발톱 모양, 손가락이나 발가락 모양, 손바닥이나 발바닥의 위치 등을 나타내도록 학습해서 모델이 어떤 이미지를 손이라고 판단했을 때 활성화된 은닉 노드를 통해 판단의 근거를 알 수 있다. 이러한 판단의 근거는 예를 들어 RNN(순환신경망, Recurrent Neural Network) 등의 자연어 생성 모델을 통해 언어적으로 나타낼 수도 있다. RNN은 딥러닝의 모델이며 인공신경망의 한 종류로서, 시계열 데이터와 같이 시간의 흐름에 따라 변화하는 데이터를 학습하기 위한 것으로서, 입력조절벡터와 망각벡터 그리고 출력조절벡터를 이용하여 입력과 출력데이터를 얻는다. 입력조절벡터에서는 입력신호가 활성화함수와의 연결계층을 거친 후에 값을 받아들이며 망각 벡터는 과거 입력의 일부를 현재 입력에 반영하는 역할을 한다. 그리고 출력조절벡터는 과거의 값과 수정된 입력값을 고려하여 활성화 함수를 이용해 값을 받아들인다. 그리고 그 최종결과는 다시 입력으로 되돌아가게 된다. 이러한 순환신경망은 문서 감정을 분류하거나 필기체를 인식하는데 주로 활용되며, 음성 인식, 시계열 예측이나 파형생성을 할 때에도 주로 활용될 수 있다. 이는 입력데이터가 순서가 없는 고정된 모양이여도 적절할 순서에 따라 처리할 수 있기 때문이다.The deep description learning module is a modified deep learning technology that enables deep neural networks to learn features that can be described. Nodes in the hidden layer can be trained to represent meaningful properties. For example, if you are learning a model that distinguishes the images of the arms and legs, each hidden node can be a finger or toenail, finger or toe, palm or sole. By learning to indicate the location, etc., when the model determines that an image is a hand, it is possible to know the basis of the judgment through an activated hidden node. The basis for this determination may also be expressed linguistically through a natural language generation model such as RNN (Recurrent Neural Network). RNN is a model of deep learning and is a kind of artificial neural network. It is used to learn data that changes over time, such as time series data. It uses input control vectors, oblivion vectors, and output control vectors to input and output data. Get In the input control vector, the input signal accepts the value after going through the connection layer with the activation function, and the oblivion vector serves to reflect a part of the past input into the current input. And the output control vector takes in the value using the activation function considering the past value and the modified input value. And the final result goes back to the input. Such a circulatory neural network is mainly used to classify document emotions or recognize handwriting, and may also be mainly used for speech recognition, time series prediction, or waveform generation. This is because input data can be processed in a proper order even if it has a fixed shape without order.

또한, 일 실시 예에서, 심층 설명 학습 모듈은 이미지에 근거가 되는 부분을 표시하여 시각적으로 나타낼 수도 있다. 예를 들어 인공지능 시스템이 고양이 이미지를 분류할 경우, 기존 시스템은 입력된 이미지의 고양이 여부만을 도출하지만, 심층 설명 학습 모듈은 고양이 여부를 도출하고, 이것의 근거(털, 수염 등) 이미지를 사용자에게 제공할 수 있다.In addition, in one embodiment, the in-depth description learning module may visually display a portion based on an image. For example, when the artificial intelligence system categorizes a cat image, the existing system derives only whether or not the input image is a cat, but the in-depth learning module derives whether it is a cat, and uses the basis image (hair, whiskers, etc.) of the user. Can provide.

해석 가능한 모델 생성 모듈은, 구조화된 데이터를 해석 가능한 인과관계 모델로 구축할 수 있다. 일 실시 예에 따르면, BPL(bayesian program learning)을 이용하여 해석 가능한 모델 생성 모듈을 구축할 수 있으며, BPL은 작은 조각들의 조합으로 표현하도록 학습하는 방법으로서, 예를 들어 글자를 생성하는 모델을 학습할 때 글자를 획으로 나누어서 가장 합리적인 획의 조합으로 생성하도록 한다. BPL은 대량의 데이터가 없이도 사람과 같이 한 번 보면 그대로 모방할 수 있으며, Neural Network(신경망 모델)를 진화시킨 것으로서 새로운 사건이 주어졌을 때 그 사건을 바탕으로 확률값을 변화시킬 수 있다. 즉, BPL은 가상 변수들에 들어가는 가중치만 바꾸는 방식이 아니라, 중간에 다른 가상 변수를 생성하는 내용까지 포함된다. 새로운 환경이 주어지면 다른 방식으로 현상을 이해하는 것으로서 예를 들어, 동전을 100번 던져서 앞면이 60번, 뒷면이 40번 나와서 앞 면이 나올 확률을 60%로 잡은 다음, 다음번에 뒷면이 나오게 되면 앞면이 나올 확률을 59.4%로 내리는 방식이다.The interpretable model generation module can construct structured data into an interpretable causality model. According to an embodiment, a model generation module that can be interpreted may be built using Bayesian program learning (BPL), and BPL is a method of learning to express a combination of small pieces, for example, learning a model that generates letters. When you do, divide the letters into strokes to create the most reasonable combination of strokes. BPL can be imitated as if it is a human being without a large amount of data, and it is an evolution of the Neural Network, and when a new event is given, the probability value can be changed based on the event. That is, BPL is not a method of changing only the weights of virtual variables, but also includes creating other virtual variables in the middle. When a new environment is given, it is to understand the phenomenon in a different way.For example, if you throw a coin 100 times, and you get 60% of the front and 40 times of the back, you get 60% of the probability that the front will come out. It is a method of lowering the probability that the head will come out to 59.4%.

또한, 일 실시 예에서, 해석 가능한 모델 생성 모듈은 확률론적 접근 방법을 통해 구현될 수 있다. 확률론적 접근 방법은 몇 가지 샘플만으로도 학습 효과를 낼 수 있으며, 예를 들면 길이가 긴 의자와 짧은 의자를 보여주면 중간 길이의 의자도 있다는 것을 배우는 것과 비슷하다. 즉, 부족한 데이터를 스스로 채워 나가며 학습하는 기술이다. 실시 예에 따라서는 확률론적 접근 방법은 수학적 계산을 통해 스스로 확률과 프로그램을 보정하는 기능을 포함할 수 있다.In addition, in one embodiment, the interpretable model generation module may be implemented through a stochastic approach. The stochastic approach can be learned with just a few samples, and is similar to learning that, for example, showing long and short chairs, there are also chairs of medium length. In other words, it is a technique of learning by filling in insufficient data by itself. Depending on the embodiment, the stochastic approach may include the ability to calibrate the probability and program itself through mathematical calculations.

또한, 일 실시 예에서, 해석 가능한 모델 생성 모듈은 And-Or-Graph를 이용하여 구현된 수 있다. And-Or-Graph는 AND/OR 그래프란 rule의 조건 및 결론관계와 AND/OR 관계를 그래프 형태로 나타내는 것으로서, 인공지능에 의해 도출되는 중간 및 최종 데이터가 구조화 되어있어 모델의 결정과정을 논리적으로 설명하기 쉬운 장점이 있다. 즉, AND 노드와 OR 노드로 그래프를 나타내는데, AND 노드는 모두 처리되어야 하며 OR 노드는 하나만 처리되면 끝낼 수 있다. AND/OR 그래프를 이용하면 서로 산재해 있는 rule들의 집합을 하나의 구조로 조감할 수 있으며 각 문장간의 논리적인 관계를 쉽게 파악할 수 있다.In addition, in one embodiment, the interpretable model generation module may be implemented using And-Or-Graph. And-Or-Graph is an AND/OR graph, which shows the condition and conclusion relationship of rule and AND/OR relationship in a graph form. As the intermediate and final data derived by artificial intelligence are structured, the model decision process is logically It has the advantage of being easy to explain. That is, the graph is represented by the AND node and the OR node, and all the AND nodes must be processed, and only one OR node can be processed. Using the AND/OR graph, a set of rules interspersed with each other can be viewed as a structure, and the logical relationship between each sentence can be easily identified.

모델 귀납 모듈은 임의의 블랙박스 모델을 설명가능한 모델로 추론할 수 있다. 일 실시 예에서, 모델 귀납 모듈은 LIME(local interpretable model-agnostic explanations)로 구현될 수 있으며, LIME은 임의의 블랙박스 모델을 이미 설명이 가능한 데이터 주변에서 희소 선형 결합을 통해 국부적으로 설명 가능하게 만들 수 있다. 예를 들어, 이미지를 분류하는 블랙박스 모델이 어떤 이미지를 심장이라고 판단했다면 이미 설명 가능한 다른 모델의 심장에 대한 설명 즉, 심장을 표현하는 픽셀들을 주어진 이미지와 대조하여 어느 부분이 심장이라고 판단한 근거인지 제시할 수 있다. The model induction module can infer any black box model into a descriptive model. In one embodiment, the model induction module may be implemented with local interpretable model-agnostic explanations (LIME), which makes any black box model locally descriptive through sparse linear combinations around already descriptive data. Can. For example, if a black box model classifying an image determines that an image is a heart, a description of the heart of another model that can already be explained, that is, the pixel representing the heart is compared to a given image to determine which part is the heart. Can be presented.

또한, 일 실시 예에서 모델 귀납 모듈은 모델을 일련의 if-then 조건문으로 표현하는 BRL(bayesian rule lists)로 구현될 수 있다. BRL은 고차원, 다변수인 특징공간을 간단하고 이미 해석 가능한 조건문으로 나누어 복잡한 모델을 이해할 수 있게 한다.In addition, in one embodiment, the model induction module may be implemented as bayesian rule lists (BRL) representing a model as a series of if-then conditional statements. BRL divides high-dimensional, multi-variable feature spaces into simple and already interpretable conditional statements to understand complex models.

상술한 심층 설명 학습 모듈, 해석 가능한 모델 생성 모듈 및 모델 귀납 모듈은 서로 독립적으로 또는 서로 결합되어 작용될 수 있으며, 그 구현 순서도 실시 예에 따라 달라질 수 있다.The above-described in-depth description learning module, an interpretable model generation module, and a model induction module may be operated independently of each other or in combination with each other, and the implementation order thereof may also vary according to embodiments.

다음으로, 이유 설명 인터페이스 모듈은 인공지능의 의사결정에 대한 설명을 사용자가 이해할 수 있는 방식으로 표현할 수 있다. 이유 설명 인터페이스 모듈은 제시한 설명이 반복적일 것, 필요한 설명을 모두 포함하고 있을 것, 불필요한 설명을 포함하지 않을 것, 양이 적절할 것 등을 필수 항목으로 포함할 수 있다. 즉, 사용자가 용이하게 인공지능이 어떠한 과정과 이유로 최종 결과를 도출했는지와 각 단계별로 영향을 미친 요소나 데이터가 무엇인지 언어, 표, 이미지, 그래프, 수식 등을 포함하여 사용자에게 제공할 수 있다.Next, the reason description interface module can express the description of the artificial intelligence decision in a way that the user can understand. Reason Description The interface module may include essential items such that the presented description is repetitive, includes all necessary descriptions, does not include unnecessary descriptions, and appropriate amounts. That is, the user can easily provide the user with the language, tables, images, graphs, formulas, etc., which process and reason the artificial intelligence produced the final result and what factors or data affected each step. .

또한, 이유 설명 인터페이스 모듈은 사용자의 정정 명령을 입력받을 수 있다. 이를 위해 이유 설명 인터페이스 모듈은 정정가능성은 설명이 유동적일 것, 사용자의 피드백을 존중할 것, 점진적인 변화를 주시할 것 등을 필수 항목으로 포함할 수 있다. 이렇게 제시된 설명에 대해서 사용자에게 설명의 명확도와 활용도 등에 대한 피드백을 받아 이유 설명 인터페이스 모듈의 효과를 평가하고 발전시킬 수 있다.In addition, the reason description interface module may receive a user's correction command. To this end, the reason description interface module may include corrections as essential items such that the explanation is flexible, respects user feedback, and watches for gradual change. The user can evaluate and develop the effectiveness of the reason description interface module by receiving feedback from the user about the clarity and utilization of the description.

다른 실시 예에서, 의사결정 이유 제시부는, 인과관계 모델로 형성될 수 있다. 인과과계 모델은 딥러닝과 마르코브 랜덤 필드를 결합하는 형태로 형성될 수 있다. 먼저 학습 데이터로부터 심층 마르코브 랜덤 필드 모델의 확률 분포를 모델링하고, 확률 변수들 사이의 조건부 독립성을 나타내는 마르코브 랜덤 필드의 구조를 학습한다. 구조가 학습된 마르코브 랜덤 필드의 잠재 함수를 심층 신경망으로 추론하여 입력 변수의 수가 증가함에 따라 잠재 함수에 필요한 매개 변수의 수가 기하급수적으로 증가하는 문제를 완화하고, 변수 연관관계에 대한 제약 없이 복잡한 연관관계를 학습할 수 있다. 실시예에 따라 클래스 분류 문제를 보조태스크인 속성, 슈퍼카테고리와 같이 학습한 후, 출력 단계에서 선형 결합하여 효과적인 표현이 가능하도록 할 수 있다. 또한 인과관계가 정확히 학습되었는지 사람이 확인하고 피드백을 주어 수정할 수 있도록 하는 상호작용 학습 알고리즘을 포함할 수 있다.In another embodiment, the decision reason presentation unit may be formed as a causal relationship model. The causal model can be formed by combining deep learning and a Markov random field. First, the probability distribution of the deep Markov random field model is modeled from the training data, and the structure of the Markov random field indicating conditional independence between random variables is learned. Deducing the latent function of the structured Markov random field into a deep neural network alleviates the problem that the number of parameters required for the latent function increases exponentially as the number of input variables increases. You can learn the relationship. According to an exemplary embodiment, after class classification problems are learned as attributes and supercategories as auxiliary tasks, linear expression can be combined at the output stage to enable effective expression. It can also include an interactive learning algorithm that allows a person to check whether a causal relationship has been correctly learned and give feedback to correct it.

또 다른 실시 예에서, 의사결정 이유 제시부는, 분석 모듈로 구현될 수 있다. 시계열 함수를 다양한 커널을 바탕으로 다변수 가우시안으로 회귀분석 하는 기술로서, 가우시안 프로세스에서 커널을 표현하는 최적의 커널 조합을 학습하여 주어진 시계열 데이터를 위에서 찾은 커널 조합을 바탕으로 설명할 수 있다. 더 나아가서 여러 개의 시계열 데이터가 있을 때에도 공통적으로 표현되는 커널 및 각 시계열 데이터의 특성을 표현하는 커널의 조합을 학습하여 여러 개의 시계열 데이터에서 공통적으로 나타나는 특징을 설명할 수 있다. 시계열 데이터 분석 모델을 통해 찾은 커널의 조합을 자연어로 작성함으로써 사용자에게 인공지능에 의해 도출된 의사결정의 도출과정 및 그 이유를 자연어로 설명해 줄 수 있다.In another embodiment, the decision reason presentation unit may be implemented as an analysis module. As a technique for regressing a time series function to multivariate Gaussian based on various kernels, the optimal kernel combination representing the kernel in a Gaussian process can be learned to explain given time series data based on the kernel combination found above. Furthermore, by learning a combination of a kernel that is commonly expressed even when there are multiple time series data and a kernel that expresses characteristics of each time series data, features that are common in multiple time series data can be described. By writing the combination of kernels found through the time series data analysis model in natural language, it is possible to explain to users the process of deriving the decision made by artificial intelligence and the reason in natural language.

이와 같은 의사결정 이유 제시부를 통해, 인공지능의 의사결정 과정을 사용자의 입장에서 시각화 및 문자화함으로써, 의사결정에 과정에 관여한 구성요소를 설명할 수 있으며 동시에 복잡한 모델의 상관관계를 분석하여 원인요소와 결과요소로 나누어 설명할 수 있다. 특히 사용자가 용이하게 이해할 수 있는 자동 보고서의 형식으로 작성됨으로써, 데이터를 분석한 결과 뿐만 아니라 이유를 제공하여 인공지능이 보다 정밀하게 인간과 상호 작용하게 할 수 있다.Through this decision-making reason presentation, it is possible to explain the components involved in the decision-making process by visualizing and texting the AI decision-making process from the user's point of view, and at the same time analyzing the correlation of complex models and causing factors Can be divided into and result elements. In particular, it is created in the form of an automatic report that can be easily understood by the user, thereby providing not only a result of analyzing data, but also a reason, so that artificial intelligence can interact with humans more precisely.

상술한 바와 같은 단계를 가지는 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법은, 저전력 무선네트워크를 이용하여 펌웨어 업데이트를 수행할 수 있도록 함으로써, 제조사에서 제공하는 펌웨어를 분할하여 FOTA 대상 단말기로 전송함에 따라, 저전력 무선네트워크 상황이나, FOTA 대상 단말기의 성능이 우수하지 않다고 하더라도 제조사에서 제공하는 펌웨어를 부담없이 전송받도록 할 수 있다.The firmware update method using the low-power wireless network having the steps as described above allows the firmware update to be performed using the low-power wireless network, thereby dividing the firmware provided by the manufacturer and transmitting it to the FOTA target terminal, thereby reducing the power Even if the performance of the terminal under the FOTA or network conditions is not excellent, the firmware provided by the manufacturer can be transmitted without burden.

이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although described above with reference to embodiments, those skilled in the art can variously modify and change the present invention without departing from the spirit and scope of the present invention as set forth in the claims below. You will understand.

100: 업데이트 매니저 서버
200: 다운로드 서버
300: 플랫폼
400: 대상 단말기
500: 제조사 서버
100: update manager server
200: download server
300: platform
400: target terminal
500: manufacturer server

Claims (2)

업데이트 매니저 서버에서 펌웨어 업데이트의 대상이 되는 대상 단말기의 단말기 정보를 제조사 서버로부터 수신받아 등록하는 단말기 등록 단계; 상기 대상 단말기의 펌웨어 업데이트를 관리하는 플랫폼에서 저전력 무선네트워크를 이용하여 상기 대상 단말기의 펌웨어 버전 정보를 확인하는 펌웨어 버전 확인 단계; 다운로드 서버에서 상기 제조사 서버로부터 업데이트용 펌웨어를 입력받아 상기 대상 단말기로 전송하기 위해 패키징하는 펌웨어 패키징 단계; 상기 대상 단말기에서 상기 다운로드 서버로부터 패키징된 펌웨어를 저전력 무선네트워크를 통해 다운로드 받는 펌웨어 다운로드 단계; 및 상기 대상 단말기에서 패키징된 펌웨어를 언패키징하여 펌웨어 업데이트를 수행하는 펌웨어 업데이트 단계;를 포함하는 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법에 있어서,
상기 다운로드 서버가 상기 제조사 서버로부터 펌웨어를 입력받는 단계; 상기 다운로드 서버가 입력받은 펌웨어를 패키징하여 분할 및 보안이 적용된 전송용 펌웨어를 생성하는 단계; 상기 다운로드 서버가 생성된 전송용 펌웨어를 데이터베이스에 저장하는 단계; 상기 다운로드 서버가 생성된 전송용 펌웨어의 펌웨어 다운로드 디렉토리(URL)를 상기 업데이트 매니저 서버로 업로드하는 단계; 상기 업데이트 매니저 서버가 펌웨어 업데이트 알림(Notice)을 생성하는 단계; 상기 업데이트 매니저 서버가 생성된 펌웨어 업데이트 알림을 상기 플랫폼으로 전달하는 단계; 상기 플랫폼이 전달받은 펌웨어 업데이트 알림을 상기 대상 단말기로 전송하는 단계; 및 상기 업데이트 매니저 서버가 펌웨어 업데이트 알림의 전송 결과를 상기 제조사 서버로 전송하는 단계;를 포함하는 상기 펌웨어 패키징 단계에 있어서,
상기 전송용 펌웨어를 생성하는 단계에 의하여 의하여 전송용 펌웨어를 생성하기 위한 것으로, 상기 다운로드 서버가 상기 제조사 서버로부터 입력되는 펌웨어를 다수 개의 블록으로 분할하는 단계; 및 FOTA(Firmware Over The Air) 대상 단말기의 성능이 우수하지 않더라고 제조사에서 제공하는 펌웨어를 전송받을 수 있도록 상기 다운로드 서버가 분할된 블록들을 암호화하는 단계를 포함하되,
상기 분할하는 단계에서 분할된 블록은, 펌웨어 명칭 및 펌웨어 버전을 포함하는 퍼스트 블록, 상기 퍼스트 블록의 다음에 순서에 따라 배치되며, 펌웨어 데이터의 일부가 각각 할당되어 전체로서 하나의 펌웨어 데이터를 형성하는 다수 개의 펌웨어 블록 및 마지막 펌웨어 블록 다음에 배치되어 패키징의 종료를 알리는 라스트 블록으로 구성되며,
상기 암호화하는 단계는, 상기 펌웨어 블록을 헤더(Header)와 바디(Body)로 구분하고, 상기 헤더에는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값 또는 펌웨어 데이터를 해쉬함수의 입력으로 했을 때의 출력값을 입력으로 대입한 사인값(Sign)을 입력하고, 상기 바디에는 펌웨어 데이터를 암호화한 값을 입력으로 하며,
상기 펌웨어 다운로드 단계는, 상기 대상 단말기가 상기 다운로드 서버로부터 전송용 펌웨어를 다운로드 받는 단계; 상기 대상 단말기가 다운로드 결과를 상기 플랫폼으로 전송하는 단계; 상기 업데이트 매니저 서버가 상기 플랫폼을 통해 다운로드 결과를 확인하는 단계; 및 상기 업데이트 매니저 서버가 다운로드 결과를 상기 제조사 서버로 전송하는 단계를 포함하며,
상기 펌웨어 업데이트 단계는, 상기 대상 단말기가 수신받은 수신용 펌웨어를 언패키징하여 펌웨어 업데이트를 준비하는 단계; 업데이트의 준비가 완료되면, 상기 대상 단말기가 펌웨어 업데이트를 수행하는 단계; 상기 대상 단말기가 펌웨어 업데이트의 결과를 상기 플랫폼으로 전송하는 단계; 상기 업데이트 매니저 서버가 상기 플랫폼을 통해 펌웨어 업데이트의 결과를 확인하는 단계; 및 상기 업데이트 매니저 서버가 펌웨어 업데이트의 결과를 상기 제조사 서버로 전송하는 단계를 포함하고,
상기 업데이트를 준비하는 단계는, 상기 퍼스트 블록을 복호한 후, 상기 퍼스트 블록에 포함된 인포값(info)을 통해 상기 대상 단말기의 펌웨어 업데이트가 필요한지를 판독하고, 펌웨어 업데이트가 필요한 경우 사인과 해쉬가 해제된 인포값과 상기 퍼스트 블록에 기 포함되어 있던 인포값을 비교하는 버전 확인 단계; 및 상기 버전 확인 단계에서 버전 확인이 완료되면, 상기 펌웨어 블록들을 다운로드 받아 복호화한 후, 사인이 해제된 펌웨어 데이터의 해쉬값과 상기 펌웨어 블록에 기 포함되어 있던 펌웨어 데이터의 해쉬값을 비교하여 같은 경우 분할된 각각의 펌웨어 데이터들을 병합하는 데이터 병합 단계를 포함하며,
상기 펌웨어 업데이트를 수행하는 단계는, 상기 라스트 블록에 대한 복호화까지 완료되면 병합된 펌웨어 데이터를 이용하여 펌웨어 업데이트를 수행하며,
상기 업데이트 매니저 서버는, 외부의 공격으로부터 보호하여야 할 사용자 정보나 시스템 정보를 백업 파일로 생성한 후, 생성된 백업 파일을 동일한 데이터를 포함하는 1차 백업 파일과 2차 백업을 차례로 생성하여 저장하되, 1차 백업 파일과 2차 백업 파일의 저장 장소를 달리 하여 저장하는 백업 파일 분산화 모듈을 포함하며,
상기 백업 파일 분산화 모듈은, 기 설정된 주기로 저장되었던 1차 백업 파일과 2차 백업 파일의 저장 장소를 시스템 상의 기 설정된 장소 또는 새롭게 생성된 장소로 변경하되, 임의의 랜덤 변수에 따라 생성된 폴더나 서브 폴더로 백업 파일의 이동 장소를 지정하며,
상기 백업 파일 분산화 모듈은, 외부로부터 침입이 감지될 경우, 기 생성되었던 1차 백업 파일과 2차 백업 파일로부터의 복제를 연속적으로 수행하여 각 백업 파일의 서브 백업 파일들을 다수 개 생성하며, 생성된 다수 개의 서브 백업 파일들을 역시 랜덤 변수에 따라 생성된 서로 다른 장에 개별적으로 저장하며,
상기 백업 파일 분산화 모듈은, 다수 개의 백업 파일 중 현재 공격받고 있는 백업 파일이라고 판단된 파일을 시스템 상에서 영구적으로 삭제하며,
상기 업데이트 매니저 서버는, 개발 환경 관리 시스템 상에서 구현되되,
상기 개발 환경 관리 시스템은, 개발 시스템으로부터 소프트웨어 컴포넌트 생성 또는 수정 허가 요청 메시지를 수신하는 경우, 해당 개발 시스템의 권한 정보를 확인하여 소프트웨어 컴포넌트 생성 또는 수정 허가 요청 메시지를 처리하되,
상기 소프트웨어 컴포넌트는, 소스코드, 디버깅 정보를 포함하는 바이너리, 디버깅 정보를 포함하지 않는 순수 바이너리, 코드에 대한 상세설명을 위한 문서, 코드의 이해를 위한 공정 수식모델 중 적어도 하나를 포함하여 구성되며,
상기 권한 정보는, 소프트웨어 컴포넌트를 읽을 수 있는 읽기 권한, 소프트웨어 컴포넌트를 생성 및 수정하여 저장할 수 있는 저장 권한, 권한 정보를 조정할 수 있는 권한조정 권한 중 적어도 하나를 포함하여 구성되며,
상기 개발 환경 관리 시스템은, 어느 하나의 개발 시스템에 의해 빌드한 모듈을 다른 개발 시스템에서 사용할 수 있도록 권한 정보를 만족하는 어느 하나의 개발 시스템에 의해 소프트웨어 컴포넌트가 생성 또는 수정되는 경우, 이를 저장하여 다른 개발 시스템에서도 공유 가능하도록 제어하며,
상기 개발 환경 관리 시스템은, 이력 정보를 통해 특정 변수의 값이 어떻게 달라졌는지 단계별로 추적하고 그 특정 변수가 임의의 다른 변수의 값 변경에 어떠한 영향을 주었는지도 파악할 수 있도록 상기 소프트웨어 컴포넌트의 생성 또는 수정 이력을 저장한 데이터베이스를 구축하며,
상기 개발 환경 관리 시스템은 소프트웨어 컴포넌트의 종류, 해당 소프트웨어 컴포넌트의 생성/수정 여부, 해당 소프트웨어 컴포넌트의 생성/수정 일자, 해당 소프트웨어 컴포넌트의 생성/수정 빈도, 해당 소프트웨어 컴포넌트를 생성/수정한 개발 시스템의 권한 정보를 포함하여 이력 정보를 생성하며,
상기 개발 환경 관리 시스템은, 이력 정보를 생성할 때마다 인덱스를 부여하여 이력 정보 데이터베이스에 저장하되, 소프트웨어 컴포넌트의 중요도에 따라 이력 정보 데이터베이스를 구축할 수 있으며, 중요도가 가장 높은 종류에 해당하는 소프트웨어 컴포넌트의 이력 정보 데이터베이스는 저장 공간 관리를 위한 데이터베이스 갱신 대상에서 제외하거나, 소프트웨어 컴포넌트의 생성/수정 일자 별로 이력 정보 데이터베이스를 구축하거나, 또는 권한 정보 별로 이력 정보 데이터베이스를 구축하며,
상기 개발 환경 관리 시스템은, 저장 공간 관리를 위해 이력 정보 데이터베이스의 인덱스가 미리 설정된 인덱스에 도달하면 이력 정보 데이터베이스 갱신을 수행하며,
상기 개발 환경 관리 시스템은, 이력 정보 데이터베이스 갱신을 위해 이력 정보 데이터베이스의 전체 인덱스를 오름차순으로 하여 3 개의 구간으로 나누고, 3 개의 구간 중 가장 낮은 인덱스를 포함하는 구간에 해당하는 이력 정보는 생성/수정 일자가 오랜 시간이 경과한 것으로 간주하여 조건 없이 삭제하고, 3 개의 구간 중 가운데 구간에 해당하는 이력 정보 중 중요도가 가장 높은 소프트웨어 컴포넌트의 종류에 해당하는 이력 정보만을 유지하고 나머지 이력 정보는 모두 삭제하여 갱신하거나, 생성/수정 빈도가 미리 설정된 기준 빈도보다 높은 이력 정보는 모두 삭제하고 나머지 이력 정보는 유지하는 방식으로 이력 정보 데이터베이스를 갱신하거나, 또는, 권한 정보가 최고 권한 정보로 간주되는 권한 정보를 조정할 수 있는 권한조정 권한인 이력 정보는 그대로 유지하고, 나머지 이력 정보는 모두 삭제하는 방식으로 이력 정보 데이터베이스를 갱신하며, 3 개의 구간 중 가장 높은 인덱스를 포함하는 구간에 해당하는 이력 정보는 생성/수정 일자가 비교적 최근의 것으로 간주하여 그대로 유지하는, 펌웨어 패키징 및 언패키징 방법.
A terminal registration step of receiving and registering terminal information of a target terminal, which is a target of firmware update, from an update manager server; A firmware version checking step of checking firmware version information of the target terminal by using a low-power wireless network in a platform for managing firmware update of the target terminal; A firmware packaging step of receiving update firmware from the manufacturer server from the download server and packaging it for transmission to the target terminal; A firmware download step of downloading the packaged firmware from the download server from the target terminal through a low power wireless network; And a firmware update step of unpacking the firmware packaged in the target terminal to perform a firmware update. In the firmware update method using a low power wireless network,
The download server receiving firmware from the manufacturer server; Packaging the firmware received by the download server to generate transmission firmware with segmentation and security applied; Storing, by the download server, the generated firmware for transmission in a database; Uploading a firmware download directory (URL) of the firmware for transmission generated by the download server to the update manager server; Generating, by the update manager server, a firmware update notification; Delivering the firmware update notification generated by the update manager server to the platform; Transmitting a firmware update notification received from the platform to the target terminal; And transmitting, by the update manager server, a result of transmitting a firmware update notification to the manufacturer server.
To generate the firmware for transmission by the step of generating the firmware for transmission, the download server is divided into a plurality of blocks of firmware input from the manufacturer server; And a step in which the download server encrypts the divided blocks so that the firmware provided by the manufacturer can be transmitted even though the performance of the target terminal of the firmware over the air (FOTA) is not excellent.
In the dividing step, the divided blocks are arranged in the order of a first block including a firmware name and a firmware version, followed by the first block, and a part of the firmware data is allocated to form one firmware data as a whole. It consists of a number of firmware blocks and a last block that is placed after the last firmware block to signal the end of packaging.
In the encrypting step, the firmware block is divided into a header and a body, and in the header, when the firmware data is an input of a hash function or when the firmware data is an input of a hash function Enter the sine value (Sign) substituted with the output value as an input, and input the encrypted value of the firmware data to the body,
The firmware downloading step includes: the target terminal downloading firmware for transmission from the download server; Transmitting, by the target terminal, a download result to the platform; Checking, by the update manager server, a download result through the platform; And the update manager server transmitting the download result to the manufacturer server,
The firmware update step may include preparing a firmware update by unpackaging the receiving firmware received by the target terminal; When the preparation of the update is completed, the target terminal performing a firmware update; Transmitting, by the target terminal, the result of the firmware update to the platform; Checking, by the update manager server, a result of firmware update through the platform; And the update manager server transmitting the result of the firmware update to the manufacturer server,
The step of preparing the update, after decoding the first block, reads whether the firmware update of the target terminal is necessary through the info value included in the first block, and if a firmware update is required, sign and hash A version checking step of comparing the released info value with the info value previously included in the first block; And when the version check is completed in the version checking step, after downloading and decrypting the firmware blocks, comparing the hash value of the unlocked firmware data with the hash value of the firmware data previously included in the firmware block. And a data merging step of merging each divided firmware data,
In the step of performing the firmware update, when the decoding of the last block is completed, the firmware update is performed using the merged firmware data,
The update manager server generates user information or system information to be protected from external attacks as a backup file, and then generates and stores the generated backup file in a primary backup file and a secondary backup sequentially containing the same data. Includes a backup file decentralization module that stores the primary backup file and the secondary backup file in different storage locations.
The backup file decentralization module changes the storage location of the primary backup file and the secondary backup file, which have been stored at a predetermined period, to a preset location on the system or a newly created location, but a folder or sub generated according to an arbitrary random variable. Specify the location to move the backup file to a folder,
When the intrusion is detected from the outside, the backup file decentralization module continuously performs replication from the previously generated primary backup file and secondary backup file to generate a plurality of sub backup files of each backup file. Multiple sub backup files are also stored individually in different chapters created according to random variables.
The backup file decentralization module permanently deletes a plurality of backup files determined to be currently being attacked backup files on the system,
The update manager server is implemented on a development environment management system,
When the development environment management system receives a request for permission to create or modify a software component from the development system, the authorization information of the corresponding development system is checked to process a software component creation or modification permission request message,
The software component includes a source code, a binary including debugging information, a pure binary without debugging information, a document for detailed description of the code, and at least one of a process formula model for understanding the code,
The permission information includes at least one of a read permission to read the software component, a storage permission to create and modify the software component, and a permission adjustment permission to adjust the permission information,
The development environment management system, if a software component is created or modified by any one development system that satisfies the authority information so that a module built by one development system can be used in another development system, stores it and stores Control so that it can be shared in the development system,
The development environment management system may generate step-by-step tracking of how the value of a specific variable has changed through history information, and generate the software component so as to understand how the specific variable has changed the value of any other variable. Build a database that stores revision history,
The development environment management system includes the type of software component, whether the software component is created/modified, the date of creation/modification of the software component, the frequency of creation/modification of the software component, and the authority of the development system that created/modified the software component. Generate historical information including information,
The development environment management system assigns an index to each generation of history information and stores it in a history information database, but can build a history information database according to the importance of the software component, and the software component corresponding to the highest importance type. The history information database is excluded from the database update target for storage space management, the history information database is created for each creation/modification date of the software component, or the history information database is established for each authority information.
The development environment management system performs a history information database update when the index of the history information database reaches a preset index for storage space management,
In order to update the historical information database, the development environment management system divides the entire index of the historical information database into three sections in ascending order, and the history information corresponding to the section including the lowest index among the three sections is created/modified. It is considered that a long time has elapsed, and it is deleted without condition, and only the history information corresponding to the type of the most important software component among the history information corresponding to the middle section among the three sections is maintained, and all remaining history information is deleted and updated. Or, you can update the history information database by deleting all history information whose creation/modification frequency is higher than the preset reference frequency and maintaining the rest of the history information, or adjust the authority information for which the authority information is regarded as the highest authority information. The history information database, which is the authority to adjust the authority, is maintained, and all the remaining history information is deleted, the history information database is updated, and the history information corresponding to the section containing the highest index among the three sections is created/modified. A method of packaging and unpacking firmware that is considered relatively recent and remains intact.
삭제delete
KR1020180127077A 2018-10-23 2018-10-23 Firmware packaging and unpackaging methods KR102132901B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180127077A KR102132901B1 (en) 2018-10-23 2018-10-23 Firmware packaging and unpackaging methods

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180127077A KR102132901B1 (en) 2018-10-23 2018-10-23 Firmware packaging and unpackaging methods

Publications (2)

Publication Number Publication Date
KR20200045931A KR20200045931A (en) 2020-05-06
KR102132901B1 true KR102132901B1 (en) 2020-07-10

Family

ID=70737323

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180127077A KR102132901B1 (en) 2018-10-23 2018-10-23 Firmware packaging and unpackaging methods

Country Status (1)

Country Link
KR (1) KR102132901B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101083547B1 (en) * 2010-08-16 2011-11-14 웹싱크 주식회사 Method of upgrading firmware and system for the same

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004514214A (en) * 2000-11-17 2004-05-13 ビットフォン コーポレイション System and method for updating and distributing information
EP2012230A1 (en) 2007-07-05 2009-01-07 Samsung Electronics Co., Ltd. Partitioning compression-based firmware over the air
KR101541112B1 (en) 2013-07-04 2015-07-31 주식회사 미르코퍼레이션 FOTA system and the method
KR102423084B1 (en) * 2016-04-26 2022-07-19 삼성에스디에스 주식회사 Method and apparatus for updating firmware on IoT device using P2P

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101083547B1 (en) * 2010-08-16 2011-11-14 웹싱크 주식회사 Method of upgrading firmware and system for the same

Also Published As

Publication number Publication date
KR20200045931A (en) 2020-05-06

Similar Documents

Publication Publication Date Title
KR102111449B1 (en) Firmware update method using low power wireless network
KR102459835B1 (en) On-device machine learning platform
US11238377B2 (en) Techniques for integrating segments of code into machine-learning model
US20230110131A1 (en) Internet of things
US20220358385A1 (en) On-Device Machine Learning Platform
CN113272825B (en) Reinforcement learning model training by simulation
CN110933163B (en) Block chain contract deployment method, device, equipment and storage medium
US20210256309A1 (en) Apparatuses, computer program products, and computer-implemented methods for privacy-preserving federated learning
EP3622449A1 (en) Autonomous logic modules
CN102823195A (en) System and methods for remote maintenance of client systems in an electronic network using software testing by a virtual machine
US11341429B1 (en) Distributed machine learning for improved privacy
US11144331B1 (en) Virtual assistant transfer protocol
JP2019121141A (en) Device, secure element, program, information processing system and information processing method
CN108512898A (en) File push method, apparatus, computer equipment and storage medium
US20220358240A1 (en) Adaptive data privacy platform
CN105530323B (en) File upgrading method, related equipment and system
CN104298928A (en) Information processing system, information processing method
KR102132901B1 (en) Firmware packaging and unpackaging methods
KR101988205B1 (en) Virtual private network service system
KR102058722B1 (en) Communication line cryptographic system
WO2021089975A1 (en) Generating a delta update
JP6984863B2 (en) Deep learning automatic learning system and client equipment
KR102130830B1 (en) Electronic device departmental device management system
CN109698973A (en) A kind of progress update method, device, electronic equipment and medium
WO2023125109A1 (en) Data analysis model management method, and electronic device and storage medium

Legal Events

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