KR20150054380A - 근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템 - Google Patents

근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템 Download PDF

Info

Publication number
KR20150054380A
KR20150054380A KR1020130136757A KR20130136757A KR20150054380A KR 20150054380 A KR20150054380 A KR 20150054380A KR 1020130136757 A KR1020130136757 A KR 1020130136757A KR 20130136757 A KR20130136757 A KR 20130136757A KR 20150054380 A KR20150054380 A KR 20150054380A
Authority
KR
South Korea
Prior art keywords
firmware
application processor
nfc chip
data
metadata
Prior art date
Application number
KR1020130136757A
Other languages
English (en)
Other versions
KR102143434B1 (ko
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 KR1020130136757A priority Critical patent/KR102143434B1/ko
Priority to US14/330,240 priority patent/US9430648B2/en
Publication of KR20150054380A publication Critical patent/KR20150054380A/ko
Application granted granted Critical
Publication of KR102143434B1 publication Critical patent/KR102143434B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Abstract

근거리 무선 통신(Near Field Communication; NFC) 칩의 펌웨어 업데이트 방법에 있어서, 응용 프로세서(Application Processor; AP)가 펌웨어 이미지 파일(firmware image file)에 포함되는 메타 데이터를 NFC 칩에 제공하고, NFC 칩이 메타 데이터의 무결성(integrity)을 검증하여 인증(certification) 성공 신호 및 인증 실패 신호 중의 하나를 응용 프로세서에 제공하고, 응용 프로세서가 인증 성공 신호를 수신하는 경우 펌웨어 이미지 파일에 포함되는 펌웨어 데이터를 NFC 칩에 제공한다.

Description

근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템 {METHOD OF UPDATING FIRMWARE OF NEAR FIELD COMMUNICATION CHIP AND ELECTRONIC SYSTEM PERFORMING THE SAME}
본 발명은 근거리 무선 통신(Near Field Communication; NFC) 칩을 포함하는 전자 시스템에 관한 것으로, 보다 상세하게는 NFC 칩의 펌웨어(firmware) 업데이트 방법 및 이를 구현하는 전자 시스템에 관한 것이다.
무선 통신 기술의 일종인 근거리 무선 통신(Near Field Communication; NFC) 기술이 발전함에 따라 NFC 칩이 모바일 장치 등에 널리 적용되고 있다. 최근에는 NFC 칩이 모바일 결재에 사용됨에 따라 NFC 칩의 보안이 중요해지고 있다.
일반적으로 NFC 칩에는 상기 NFC 칩을 구동하기 위한 펌웨어(firmware)가 탑재(embedded)되는데, 모바일 장치가 상기 NFC 칩의 제조사 등에 의해 작성된 신규 펌웨어가 모바일 장치에 다운로드되는 경우 상기 모바일 장치에 포함되는 응용 프로세서(Application Processor; AP)는 상기 NFC 칩에 탑재된 펌웨어를 상기 신규 펌웨어로 업데이트한다.
그러나 상기 NFC 칩에 탑재된 펌웨어가 해커(hacker) 등에 의해 변조된 펌웨어로 업데이트되는 경우 개인 정보 유출 등과 같은 보안사고(security incident)가 발생할 수 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 안전하게 근거리 무선 통신(Near Field Communication; NFC) 칩의 펌웨어(firmware)를 업데이트하는 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 NFC 칩의 펌웨어 업데이트 방법을 구현하는 전자 시스템을 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 근거리 무선 통신(Near Field Communication; NFC) 칩의 펌웨어 업데이트 방법에 있어서, 응용 프로세서(Application Processor; AP)가 펌웨어 이미지 파일(firmware image file)에 포함되는 메타 데이터를 NFC 칩에 제공하고, 상기 NFC 칩이 상기 메타 데이터의 무결성(integrity)을 검증하여 인증(certification) 성공 신호 및 인증 실패 신호 중의 하나를 상기 응용 프로세서에 제공하고, 상기 응용 프로세서가 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 이미지 파일에 포함되는 펌웨어 데이터를 상기 NFC 칩에 제공한다.
일 실시예에 있어서, 상기 메타 데이터는 상기 펌웨어 데이터에 대한 메타 정보 및 상기 메타 정보에 대한 디지털 서명(digital signature)을 포함할 수 있다.
이 경우, 상기 NFC 칩이 상기 메타 데이터의 무결성을 검증하여 상기 인증 성공 신호 및 상기 인증 실패 신호 중의 하나를 상기 응용 프로세서에 제공하는 단계는, 상기 디지털 서명에 공개키(public key)를 적용하여 상기 디지털 서명이 작성된 이후에 상기 메타 정보가 변경되었는지 여부를 판단하는 단계, 상기 메타 정보가 변경되지 않은 경우, 상기 인증 성공 신호를 상기 응용 프로세서에 전송하는 단계, 및 상기 메타 정보가 변경된 경우, 상기 인증 실패 신호를 상기 응용 프로세서에 전송하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 펌웨어 데이터는 복수의 패킷들로 구분되고, 상기 메타 데이터는 상기 복수의 패킷들의 순환중복검사(Cyclic Redundancy Check; CRC) 값들을 포함할 수 있다.
이 경우, 상기 응용 프로세서가 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 데이터를 상기 NFC 칩에 제공하는 단계는, 상기 응용 프로세서가 상기 복수의 패킷들을 순차적으로 상기 NFC 칩에 전송하는 단계, 상기 NFC 칩이 상기 복수의 패킷들 중의 어느 한 패킷을 수신하는 경우, 상기 메타 데이터에 포함되는 상기 CRC 값들 중에서 상기 어느 한 패킷에 상응하는 CRC 값에 기초하여 상기 어느 한 패킷이 훼손(damage)되었는지 여부를 판단하는 단계, 상기 어느 한 패킷이 훼손된 경우, 상기 응용 프로세서에 상기 어느 한 패킷의 재전송을 요청하는 단계, 및 상기 어느 한 패킷이 훼손되지 않은 경우, 상기 어느 한 패킷을 펌웨어 저장부에 저장하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 메타 데이터는 상기 펌웨어 데이터에 대한 해시(hash) 함수값을 포함할 수 있다.
이 경우, 상기 응용 프로세서가 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 데이터를 상기 NFC 칩에 제공하는 단계는, 상기 응용 프로세서가 상기 펌웨어 데이터를 상기 NFC 칩에 전송하는 단계, 상기 NFC 칩이 상기 펌웨어 데이터에 해시 함수를 적용하여 획득되는 값과 상기 메타 데이터에 포함되는 상기 해시 함수값을 비교하는 단계, 상기 획득되는 값과 상기 해시 함수값이 일치하지 않는 경우, 상기 응용 프로세서에 실패(fail) 신호를 제공하는 단계, 및 상기 획득되는 값과 상기 해시 함수값이 일치하는 경우, 상기 응용 프로세서에 성공(success) 신호를 제공하는 단계를 포함할 수 있다.
상기 응용 프로세서가 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 데이터를 상기 NFC 칩에 제공하는 단계는, 상기 응용 프로세서가 상기 NFC 칩으로부터 상기 실패 신호를 수신하는 경우, 상기 펌웨어 데이터를 상기 NFC 칩에 재전송하는 단계 및 상기 응용 프로세서가 상기 NFC 칩으로부터 상기 성공 신호를 수신하는 경우, 상기 펌웨어 이미지 파일을 현재 펌웨어 저장부에 저장하는 단계를 더 포함할 수 있다.
일 실시예에 있어서, 상기 펌웨어 이미지 파일은 상기 메타 데이터와 상기 펌웨어 데이터를 포함하는 데이터 영역 및 상기 데이터 영역에 대한 디지털 서명을 포함할 수 있다.
이 경우, 상기 응용 프로세서가 상기 메타 데이터를 상기 NFC 칩에 제공하는 단계는, 상기 응용 프로세서가 상기 디지털 서명에 공개키(public key)를 적용하여 상기 디지털 서명이 작성된 이후에 상기 데이터 영역이 변경되었는지 여부를 판단하는 단계 및 상기 데이터 영역이 변경되지 않은 경우 상기 메타 데이터를 상기 NFC 칩에 전송하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 응용 프로세서가 상기 메타 데이터를 상기 NFC 칩에 제공하는 단계는, 상기 응용 프로세서가 상기 NFC 칩에 버전(version) 요청 신호를 전송하는 단계, 상기 NFC 칩이 상기 버전 요청 신호에 응답하여 현재 하드웨어 버전 및 현재 펌웨어 버전을 상기 응용 프로세서에 전송하는 단계, 및 상기 메타 데이터에 포함되는 하드웨어 버전과 상기 현재 하드웨어 버전이 일치하고 상기 메타 데이터에 포함되는 펌웨어 버전이 상기 현재 펌웨어 버전보다 높은 경우, 상기 응용 프로세서가 상기 메타 데이터를 상기 NFC 칩에 전송하는 단계를 포함할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 전자 시스템은 응용 프로세서 및 NFC 칩을 포함한다. 상기 응용 프로세서는 펌웨어 데이터 및 상기 펌웨어 데이터에 대한 메타 데이터를 포함하는 펌웨어 이미지 파일(firmware image file)을 수신하고, 상기 메타 데이터 및 상기 펌웨어 데이터를 출력한다. 상기 NFC 칩은 상기 응용 프로세서로부터 제공되는 상기 메타 데이터의 무결성(integrity)을 검증하고, 상기 메타 데이터가 무결성을 갖는 경우 기존 펌웨어를 상기 응용 프로세서로부터 제공되는 상기 펌웨어 데이터로 업데이트한다.
일 실시예에 있어서, 상기 메타 데이터는 상기 펌웨어 데이터에 대한 메타 정보 및 상기 메타 정보에 대한 디지털 서명(digital signature)을 포함하고, 상기 메타 정보는 상기 펌웨어 데이터에 대한 오류 검증값을 포함할 수 있다.
상기 응용 프로세서는 상기 메타 데이터를 상기 NFC 칩에 전송하고, 상기 NFC 칩은 상기 디지털 서명에 공개키(public key)를 적용하여 상기 디지털 서명이 작성된 이후에 상기 메타 정보가 변경되었는지 여부를 판단하여 인증 성공 신호 및 인증 실패 신호 중의 하나를 생성하고, 상기 응용 프로세서는 상기 인증 성공 신호에 응답하여 상기 펌웨어 데이터를 상기 NFC 칩에 제공할 수 있다.
상기 NFC 칩은 상기 메타 정보에 포함되는 상기 오류 검증값에 기초하여 상기 응용 프로세서로부터 제공되는 상기 펌웨어 데이터가 훼손되었는지 여부를 판단하고, 상기 펌웨어 데이터가 훼손된 경우 상기 응용 프로세서에 상기 펌웨어 데이터의 재전송을 요청할 수 있다.
본 발명의 실시예들에 따른 근거리 무선 통신(Near Field Communication; NFC) 칩의 펌웨어 업데이트 방법에 따르면, NFC 칩의 펌웨어가 해커에 의한 공격 또는 다른 오류로 인해 변조 또는 변경된 펌웨어로 업데이트되는 것을 효과적으로 방지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 근거리 무선 통신(Near Field Communication; NFC) 칩의 펌웨어(firmware) 업데이트 방법을 나타내는 순서도이다.
도 2는 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 3은 도 2의 전자 시스템에서 사용되는 펌웨어 이미지 파일의 구조를 나타내는 도면이다.
도 4는 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이다.
도 5는 펌웨어 이미지 파일이 도 4의 구조를 갖는 경우 도 1의 NFC 칩이 메타 데이터의 무결성을 검증하여 인증 성공 신호 및 인증 실패 신호 중의 하나를 응용 프로세서에 제공하는 단계의 일 예를 나타내는 순서도이다.
도 6은 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이다.
도 7은 펌웨어 이미지 파일이 도 6의 구조를 갖는 경우 도 1의 응용 프로세서가 인증 성공 신호를 수신하는 경우 펌웨어 데이터를 NFC 칩에 제공하는 단계의 일 예를 나타내는 순서도이다.
도 8은 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이다.
도 9는 펌웨어 이미지 파일이 도 8의 구조를 갖는 경우 도 1의 응용 프로세서가 인증 성공 신호를 수신하는 경우 펌웨어 데이터를 NFC 칩에 제공하는 단계의 일 예를 나타내는 순서도이다.
도 10은 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이다.
도 11은 펌웨어 이미지 파일이 도 10의 구조를 갖는 경우 도 1의 응용 프로세서가 메타 데이터를 NFC 칩에 제공하는 단계의 일 예를 나타내는 순서도이다.
도 12는 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이다.
도 13은 펌웨어 이미지 파일이 도 12의 구조를 갖는 경우 도 1의 응용 프로세서가 메타 데이터를 NFC 칩에 제공하는 단계의 일 예를 나타내는 순서도이다.
도 14는 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이다.
도 15a, 15b 및 15c는 펌웨어 이미지 파일이 도 14의 구조를 갖는 경우 도 1의 NFC 칩의 펌웨어 업데이트 방법의 일 예를 나타내는 순서도들이다.
도 16은 도 2에 도시된 전자 시스템의 일 예를 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 근거리 무선 통신(Near Field Communication; NFC) 칩의 펌웨어(firmware) 업데이트 방법을 나타내는 순서도이다.
도 1은 응용 프로세서(Application Processor; AP) 및 NFC 칩을 포함하는 전자 시스템에서 상기 NFC 칩에 탑재된 펌웨어를 업데이트하는 방법을 나타낸다.
상기 전자 시스템은 다양한 방식의 유무선 통신을 통해 외부로부터 펌웨어 데이터 및 상기 펌웨어 데이터에 대한 메타 데이터를 포함하는 펌웨어 이미지 파일(firmware image file)을 수신하는 경우 상기 펌웨어 이미지 파일을 상기 응용 프로세서에 저장한다. 상기 응용 프로세서 및 상기 NFC 칩은 도 1에 도시된 펌웨어 업데이트 방법에 따라 상기 펌웨어 이미지 파일을 사용하여 상기 NFC 칩에 탑재된 펌웨어를 업데이트한다.
도 1을 참조하면, 상기 응용 프로세서는 상기 펌웨어 이미지 파일에 포함되는 상기 메타 데이터를 NFC 칩에 제공한다(단계 S100). 상기 NFC 칩은 상기 메타 데이터의 무결성(integrity)을 검증(verify)하고, 상기 메타 데이터가 무결한 것으로 판단되는 경우 인증(certification) 성공 신호를 상기 응용 프로세서에 제공하고 상기 메타 데이터가 무결하지 않은 것으로 판단되는 경우 인증 실패 신호를 상기 응용 프로세서에 제공한다(단계 S200). 예를 들어, 상기 NFC 칩은 해커에 의한 공격 또는 다른 오류로 인해 상기 메타 데이터가 변조 또는 변경되었는지 여부를 판단하여 상기 인증 성공 신호 및 상기 인증 실패 신호 중의 하나를 상기 응용 프로세서에 제공할 수 있다.
상기 응용 프로세서는 상기 NFC 칩으로부터 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 이미지 파일에 포함되는 상기 펌웨어 데이터를 상기 NFC 칩에 제공하고, 상기 NFC 칩은 현재 탑재된 펌웨어를 상기 펌웨어 데이터로 업데이트한다(단계 S300).
상기 응용 프로세서는 상기 NFC 칩으로부터 상기 인증 실패 신호를 수신하는 경우 상기 펌웨어 이미지 파일에 포함되는 상기 펌웨어 데이터를 상기 NFC 칩에 제공하지 않고 펌웨어 업데이트 동작을 종료한다. 따라서 상기 NFC 칩에 탑재된 펌웨어는 업데이트되지 않는다.
상술한 바와 같이, 상기 응용 프로세서는 펌웨어의 로우(raw) 데이터에 상응하는 상기 펌웨어 데이터를 상기 NFC 칩에 제공하기 이전에 상기 메타 데이터를 먼저 상기 NFC 칩에 제공하고, 상기 NFC 칩은 상기 메타 데이터의 무결성을 검증하여 상기 메타 데이터가 무결한 것으로 판단되는 경우 상기 인증 성공 신호를 상기 응용 프로세서에 제공하며, 상기 응용 프로세서는 상기 NFC 칩으로부터 상기 인증 성공 신호를 수신하는 경우에 한해 상기 펌웨어 데이터를 상기 NFC 칩에 제공하여 펌웨어 업데이트를 수행한다.
따라서 본 발명에 따른 NFC 칩의 펌웨어 업데이트 방법에 따르면, 상기 NFC 칩의 펌웨어가 해커에 의한 공격 또는 다른 오류로 인해 변조 또는 변경된 펌웨어로 업데이트되는 것을 효과적으로 방지할 수 있다.
도 2는 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 2를 참조하면, 전자 시스템(10)은 응용 프로세서(100) 및 NFC 칩(200)을 포함한다.
응용 프로세서(100) 및 NFC 칩(200)은 데이터 라인(DL)을 통해 서로 연결된다.
일 실시예에 있어서, 응용 프로세서(100) 및 NFC 칩(200)은 데이터 라인(DL)을 통해 직렬(serial) 통신을 수행할 수 있다.
예를 들어, 응용 프로세서(100) 및 NFC 칩(200)은 데이터 라인(DL)을 통해 UART(Universal Asynchronous Receiver/Transmitter) 통신을 수행함으로써 데이터를 송수신할 수 있다. 예를 들어, 응용 프로세서(100) 및 NFC 칩(200)은 데이터 라인(DL)을 통해 I2C(Inter-Integrated Circuit) 통신을 수행함으로써 데이터를 송수신할 수 있다.
NFC 칩(200)은 펌웨어 저장부(210)를 포함한다. 펌웨어 저장부(210)는 NFC 칩(200)을 구동하기 위한 펌웨어를 저장한다.
응용 프로세서(100)는 현재 펌웨어 저장부(110) 및 신규 펌웨어 저장부(120)를 포함한다. 응용 프로세서(100)가 외부로부터 펌웨어 이미지 파일(FIF)(300)을 수신하는 경우, 응용 프로세서(100)는 펌웨어 이미지 파일(300)을 신규 펌웨어 저장부(120)에 저장한다.
도 3은 도 2의 전자 시스템에서 사용되는 펌웨어 이미지 파일의 구조를 나타내는 도면이다.
도 3을 참조하면, 펌웨어 이미지 파일(300)은 NFC 칩(200)을 구동하기 위한 펌웨어의 로우 데이터에 상응하는 펌웨어 데이터(320) 및 펌웨어 데이터(320)에 대한 메타 데이터(310)를 포함한다.
펌웨어 이미지 파일(300)은 NFC 칩(200)의 제조사에 의해 생성되어 전자 시스템(10)에 제공될 수 있다.
다시 도 2를 참조하면, 응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300)에 포함되는 메타 데이터(310) 및 펌웨어 데이터(320)를 NFC 칩(200)에 제공한다.
NFC 칩(200)은 응용 프로세서(100)로부터 제공되는 메타 데이터(310)의 무결성을 검증하고, 메타 데이터(320)가 무결성을 갖는 경우 응용 프로세서(100)로부터 제공되는 펌웨어 데이터(320)를 펌웨어 저장부(210)에 저장함으로써 기존 펌웨어를 펌웨어 데이터(320)로 업데이트한다.
도 1의 NFC 칩의 펌웨어 업데이트 방법은 도 2에 도시된 전자 시스템(10)에 의해 수행될 수 있다.
이하, 도 2를 참조하여 도 1의 NFC 칩의 펌웨어 업데이트 방법에 대해 상세히 설명한다.
응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300)에 포함되는 메타 데이터(310)를 데이터 라인(DL)을 통해 NFC 칩(200)에 제공한다(단계 S100).
NFC 칩(200)은 메타 데이터(310)의 무결성을 검증하고, 메타 데이터(310)가 무결한 것으로 판단되는 경우 데이터 라인(DL)을 통해 인증 성공 신호(CSS)를 응용 프로세서(100)에 제공하고, 메타 데이터(310)가 무결하지 않은 것으로 판단되는 경우 데이터 라인(DL)을 통해 인증 실패 신호(CFS)를 응용 프로세서(100)에 제공한다(단계 S200).
도 4는 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이고, 도 5는 펌웨어 이미지 파일이 도 4의 구조를 갖는 경우 도 1의 NFC 칩이 메타 데이터의 무결성을 검증하여 인증 성공 신호 및 인증 실패 신호 중의 하나를 응용 프로세서에 제공하는 단계의 일 예를 나타내는 순서도이다.
도 4를 참조하면, 펌웨어 이미지 파일(300a)은 펌웨어 데이터(320) 및 메타 데이터(310)를 포함한다.
메타 데이터(310)는 펌웨어 데이터(320)에 대한 다양한 정보를 포함하는 메타 정보(311) 및 메타 정보(311)에 대한 제1 디지털 서명(DIGITAL SIGNATURE 1)(319)을 포함할 수 있다. 제1 디지털 서명(319)은 메타 정보(311)에 다양한 방식의 암호화 알고리즘을 적용하여 생성될 수 있다.
제1 디지털 서명(319)을 복호화하기 위한 제1 공개키(public key)는 NFC 칩(200)에 저장될 수 있다. 일 실시예에 있어서, 상기 제1 공개키는 NFC 칩(200)의 제조 과정에서 NFC 칩(200)에 저장될 수 있다. 다른 실시예에 있어서, 상기 제1 공개키는 외부로부터 다운로드되어 응용 프로세서(100)에 제공되고, 응용 프로세서(100)는 상기 제1 공개키를 NFC 칩(200)에 제공함으로써 상기 제1 공개키는 NFC 칩(200)에 저장될 수 있다.
이 경우, NFC 칩(200)은 제1 디지털 서명(319)을 사용하여 메타 데이터(310)의 무결성을 검증할 수 있다.
일 실시예에 있어서, 도 5에 도시된 바와 같이, NFC 칩(200)은 응용 프로세서(100)로부터 메타 데이터(310)를 수신하는 경우(단계 S100), 제1 디지털 서명(319)에 상기 제1 공개키를 적용하여 제1 디지털 서명(319)이 작성된 이후에 메타 정보(311)가 변경되었는지 여부를 판단할 수 있다(단계 S210).
예를 들어, NFC 칩(200)은 상기 제1 공개키를 사용하여 제1 디지털 서명(319)을 복호화하여 복호 데이터를 생성하고, 상기 복호 데이터와 메타 정보(311)를 비교함으로써 제1 디지털 서명(319)이 작성된 이후에 메타 정보(311)가 변경되었는지 여부를 판단할 수 있다.
상기 판단 결과 메타 정보(311)가 변경되지 않은 경우(단계 S210; 아니오), NFC 칩(200)은 인증 성공 신호(CSS)를 데이터 라인(DL)을 통해 응용 프로세서(100)에 전송할 수 있다(단계 S220).
상기 판단 결과 메타 정보(311)가 변경된 경우(단계 S210; 예), NFC 칩(200)은 인증 실패 신호(CFS)를 데이터 라인(DL)을 통해 응용 프로세서(100)에 전송할 수 있다(단계 S230).
응용 프로세서(100)는 NFC 칩(200)으로부터 인증 실패 신호(CFS)를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300)에 포함되는 펌웨어 데이터(320)를 NFC 칩(200)에 제공하지 않고 펌웨어 업데이트 동작을 종료할 수 있다.
한편, 응용 프로세서(100)는 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300)에 포함되는 펌웨어 데이터(320)를 데이터 라인(DL)을 통해 NFC 칩(200)에 제공하고, NFC 칩(200)은 펌웨어 데이터(320)를 펌웨어 저장부(210)에 저장함으로써 기존 펌웨어를 펌웨어 데이터(320)로 업데이트할 수 있다(단계 S300).
일 실시예에 있어서, 메타 정보(311)는 펌웨어 데이터(320)에 대한 오류 검증값을 포함할 수 있다.
이 경우, NFC 칩(200)은 메타 정보(311)에 포함되는 상기 오류 검증값에 기초하여 응용 프로세서(100)로부터 제공되는 펌웨어 데이터(320)가 훼손(damage)되었는지 여부를 판단할 수 있다. NFC 칩(200)은 펌웨어 데이터(320)가 훼손된 경우 응용 프로세서(100)에 펌웨어 데이터(320)의 재전송을 요청할 수 있다. NFC 칩(200)은 펌웨어 데이터(320)가 훼손되지 않은 경우 기존 펌웨어를 펌웨어 데이터(320)로 업데이트할 수 있다.
상술한 바와 같이, NFC 칩(200)은 응용 프로세서(100)로부터 메타 데이터(310)를 수신하는 경우 제1 디지털 서명(319)에 기초하여 상기 오류 검증값을 포함하는 메타 정보(311)의 무결성을 검증하고, 이후, 응용 프로세서(100)로부터 펌웨어 데이터(320)를 수신하는 경우 상기 오류 검증값에 기초하여 펌웨어 데이터(320)가 훼손되었는지 여부를 검증함으로써, 해커가 펌웨어 데이터(320)와 메타 정보(311)에 포함되는 상기 오류 검증값을 동시에 변조하는 경우에도 펌웨어 이미지 파일(300)의 변조를 효과적으로 탐지할 수 있다. 또한, 응용 프로세서(100)와 NFC 칩(200) 사이의 데이터 전송 과정에서 발생할 수 있는 해커에 의한 공격 또는 전송 오류 역시 효과적으로 탐지할 수 있다.
일 실시예에 있어서, 상기 오류 검증값은 펌웨어 데이터(320)에 대한 순환중복검사(Cyclic Redundancy Check; CRC) 값을 포함할 수 있다.
다른 실시예에 있어서, 상기 오류 검증값은 펌웨어 데이터(320)에 대한 해시(hash) 함수값을 포함할 수 있다.
도 6은 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이고, 도 7은 펌웨어 이미지 파일이 도 6의 구조를 갖는 경우 도 1의 응용 프로세서가 인증 성공 신호를 수신하는 경우 펌웨어 데이터를 NFC 칩에 제공하는 단계(S300)의 일 예를 나타내는 순서도이다.
도 6을 참조하면, 펌웨어 이미지 파일(300b)은 펌웨어 데이터(320) 및 메타 데이터(310)를 포함한다.
펌웨어 데이터(320)는 복수의 패킷들(321-1, 321-2, ..., 321-n)로 구분될 수 있다. 여기서 n은 2 이상의 정수를 나타낸다.
도 4를 참조하여 상술한 바와 같이, 메타 데이터(310)는 펌웨어 데이터(320)에 대한 다양한 정보를 포함하는 메타 정보(311) 및 메타 정보(311)에 대한 제1 디지털 서명(319)을 포함할 수 있다. 제1 디지털 서명(319)은 메타 정보(311)에 다양한 방식의 암호화 알고리즘을 적용하여 생성될 수 있다.
메타 정보(311)는 펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)의 개수(312) 및 복수의 패킷들(321-1, 321-2, ..., 321-n)의 CRC 값들(313)을 포함할 수 있다.
이 경우, NFC 칩(200)은 메타 정보(311)에 포함되는 CRC 값들(313)에 기초하여 응용 프로세서(100)로부터 제공되는 펌웨어 데이터(320)가 훼손되었는지 여부를 판단할 수 있다.
일 실시예에 있어서, 응용 프로세서(100)는 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우, 복수의 패킷들(321-1, 321-2, ..., 321-n)을 순차적으로 NFC 칩(200)에 전송할 수 있다. NFC 칩(200)은 복수의 패킷들(321-1, 321-2, ..., 321-n) 중의 어느 한 패킷을 수신하는 경우, 메타 정보(311)에 포함되는 CRC 값들(313) 중에서 상기 어느 한 패킷에 상응하는 CRC 값에 기초하여 상기 어느 한 패킷이 훼손되었는지 여부를 판단할 수 있다. 상기 판단 결과 상기 어느 한 패킷이 훼손된 경우, NFC 칩(200)은 응용 프로세서(100)에 상기 어느 한 패킷의 재전송을 요청할 수 있다. 상기 판단 결과 상기 어느 한 패킷이 훼손되지 않은 경우, NFC 칩(200)은 상기 어느 한 패킷을 펌웨어 저장부(210)에 저장할 수 있다.
예를 들어, 도 7에 도시된 바와 같이, 응용 프로세서(100)는 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우, 첫 번째 패킷(321-1)을 NFC 칩(200)에 전송하고(단계 S310), NFC 칩(200)은 메타 정보(311)에 포함되는 첫 번째 패킷(321-1)에 상응하는 CRC 값에 기초하여 첫 번째 패킷(321-1)이 훼손되었는지 여부를 판단할 수 있다(단계 S320).
상기 판단 결과 첫 번째 패킷(321-1)이 훼손된 경우(단계 S320; 예), NFC 칩(200)은 응용 프로세서(100)에 실패 신호를 전송할 수 있다(단계 S330). 응용 프로세서(100)는 NFC 칩(200)으로부터 상기 실패 신호를 수신하는 경우, 첫 번째 패킷(321-1)을 NFC 칩(200)에 재전송할 수 있다(단계 S310).
상기 판단 결과 첫 번째 패킷(321-1)이 훼손되지 않은 경우(단계 S320; 아니오), NFC 칩(200)은 응용 프로세서(100)에 성공 신호를 전송하고 첫 번째 패킷(321-1)을 펌웨어 저장부(210)에 저장할 수 있다(단계 S340).
응용 프로세서(100)는 NFC 칩(200)으로부터 상기 성공 신호를 수신하는 경우, 펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)이 모두 NFC 칩(200)에 전송되었는지 여부를 판단할 수 있다(단계 S350). 예를 들어, 응용 프로세서(100)는 NFC 칩(200)에 전송한 총 패킷의 개수가 메타 정보(311)에 포함되는 패킷 개수(312)와 일치하는 경우 펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)이 모두 NFC 칩(200)에 전송된 것으로 판단할 수 있다.
모든 패킷들(321-1, 321-2, ..., 321-n)이 NFC 칩(200)에 전송되지 않은 경우(단계S350; 아니오), 응용 프로세서(100)는 두 번째 패킷(321-2)을 NFC 칩(200)에 전송할 수 있다(단계 S360 및 단계 S310).
펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)이 모두 NFC 칩(200)에 전송될 때까지 응용 프로세서(100) 및 NFC 칩(200)은 상술한 동작을 반복할 수 있다.
펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)이 모두 NFC 칩(200)에 전송된 경우(단계 S350; 예), 응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300)을 현재 펌웨어 저장부(110)에 저장하고 펌웨어 업데이트 동작을 종료할 수 있다(단계 S395). 이로써 응용 프로세서(100)의 현재 펌웨어 저장부(110)는 NFC 칩(200)의 펌웨어 저장부(210)에 저장된 펌웨어에 상응하는 펌웨어 이미지 파일을 저장할 수 있다.
도 6 및 7을 참조하여 상술한 바와 같이, NFC 칩(200)은 메타 정보(311)에 포함되는 CRC 값들(313)에 기초하여 응용 프로세서(100)로부터 제공되는 펌웨어 데이터(320)가 훼손되었는지 여부를 검증함으로써, 전자 시스템(10)은 NFC 칩(200)의 펌웨어가 해커에 의한 공격으로 인해 변조된 펌웨어로 업데이트되는 것을 효과적으로 방지할 수 있다.
도 8은 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이고, 도 9는 펌웨어 이미지 파일이 도 8의 구조를 갖는 경우 도 1의 응용 프로세서가 인증 성공 신호를 수신하는 경우 펌웨어 데이터를 NFC 칩에 제공하는 단계(S300)의 일 예를 나타내는 순서도이다.
도 8을 참조하면, 펌웨어 이미지 파일(300c)은 펌웨어 데이터(320) 및 메타 데이터(310)를 포함한다.
도 4를 참조하여 상술한 바와 같이, 메타 데이터(310)는 펌웨어 데이터(320)에 대한 다양한 정보를 포함하는 메타 정보(311) 및 메타 정보(311)에 대한 제1 디지털 서명(319)을 포함할 수 있다. 제1 디지털 서명(319)은 메타 정보(311)에 다양한 방식의 암호화 알고리즘을 적용하여 생성될 수 있다.
메타 정보(311)는 펌웨어 데이터(320)에 대한 해시(hash) 함수값(314)을 포함할 수 있다.
이 경우, NFC 칩(200)은 메타 정보(311)에 포함되는 해시 함수값(314)에 기초하여 응용 프로세서(100)로부터 제공되는 펌웨어 데이터(320)가 훼손되었는지 여부를 판단할 수 있다.
일 실시예에 있어서, 도 9에 도시된 바와 같이, 응용 프로세서(100)는 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우, 펌웨어 데이터(320)를 NFC 칩(200)에 전송할 수 있다(단계 S370). NFC 칩(200)은 응용 프로세서(100)로부터 수신되는 펌웨어 데이터(320)를 펌웨어 저장부(210)에 저장할 수 있다.
NFC 칩(200)은 응용 프로세서(100)로부터 수신되는 펌웨어 데이터(320)에 해시 함수를 적용하여 획득되는 값과 메타 정보(311)에 포함되는 해시 함수값(314)을 비교하여 펌웨어 데이터(320)가 훼손되었는지 여부를 판단할 수 있다(단계 S380).
펌웨어 데이터(320)에 해시 함수를 적용하여 획득되는 값과 메타 정보(311)에 포함되는 해시 함수값(314)이 일치하지 않는 경우(단계 S380; 아니오), 펌웨어 데이터(320)는 훼손된 것이므로 NFC 칩(200)은 응용 프로세서(100)에 실패 신호를 전송할 수 있다(단계 S385). 응용 프로세서(100)는 NFC 칩(200)으로부터 상기 실패 신호를 수신하는 경우, 펌웨어 데이터(320)를 NFC 칩(200)에 재전송할 수 있다(단계 S370).
펌웨어 데이터(320)에 해시 함수를 적용하여 획득되는 값과 메타 정보(311)에 포함되는 해시 함수값(314)이 일치하는 경우(단계 S380; 예), 펌웨어 데이터(320)는 훼손되지 않은 것이므로 NFC 칩(200)은 응용 프로세서(100)에 성공 신호를 전송할 수 있다(단계 S390).
응용 프로세서(100)는 NFC 칩(200)으로부터 상기 성공 신호를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300)을 현재 펌웨어 저장부(110)에 저장하고 펌웨어 업데이트 동작을 종료할 수 있다(단계 S395). 이로써 응용 프로세서(100)의 현재 펌웨어 저장부(110)는 NFC 칩(200)의 펌웨어 저장부(210)에 저장된 펌웨어에 상응하는 펌웨어 이미지 파일을 저장할 수 있다.
도 8 및 9를 참조하여 상술한 바와 같이, NFC 칩(200)은 메타 정보(311)에 포함되는 해시 함수값(314)에 기초하여 응용 프로세서(100)로부터 제공되는 펌웨어 데이터(320)가 훼손되었는지 여부를 검증함으로써, 전자 시스템(10)은 NFC 칩(200)의 펌웨어가 해커에 의한 공격으로 인해 변조된 펌웨어로 업데이트되는 것을 효과적으로 방지할 수 있다.
도 10은 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이고, 도 11은 펌웨어 이미지 파일이 도 10의 구조를 갖는 경우 도 1의 응용 프로세서가 메타 데이터를 NFC 칩에 제공하는 단계(S100)의 일 예를 나타내는 순서도이다.
도 10을 참조하면, 펌웨어 이미지 파일(300d)은 펌웨어 데이터(320) 및 메타 데이터(310)를 포함한다.
도 4를 참조하여 상술한 바와 같이, 메타 데이터(310)는 펌웨어 데이터(320)에 대한 다양한 정보를 포함하는 메타 정보(311) 및 메타 정보(311)에 대한 제1 디지털 서명(319)을 포함할 수 있다. 제1 디지털 서명(319)은 메타 정보(311)에 다양한 방식의 암호화 알고리즘을 적용하여 생성될 수 있다.
메타 정보(311)는 펌웨어 데이터(320)에 상응하는 펌웨어가 수행될 수 있는 NFC 칩의 하드웨어 버전(315) 및 펌웨어 데이터(320)에 상응하는 펌웨어 버전(316)을 포함할 수 있다.
이 경우, 응용 프로세서(100)는 메타 정보(311)에 포함되는 하드웨어 버전(315) 및 펌웨어 버전(316)에 기초하여 NFC 칩(200)에 탑재된 펌웨어를 펌웨어 데이터(320)로 업데이트할지 여부를 판단할 수 있다.
일 실시예에 있어서, 도 11에 도시된 바와 같이, 응용 프로세서(100)는 NFC 칩(200)에 메타 데이터(310)를 전송하기 이전에, NFC 칩(200)에 버전(version) 요청 신호를 전송할 수 있다(단계 S110).
NFC 칩(200)은 상기 버전 요청 신호에 응답하여 NFC 칩(200)의 버전을 나타내는 현재 하드웨어 버전 및 NFC 칩(200)의 펌웨어 저장부(210)에 저장되어 있는 펌웨어의 버전을 나타내는 현재 펌웨어 버전을 응용 프로세서(100)에 전송할 수 있다(단계 S120). 일 실시예에 있어서, 상기 현재 하드웨어 버전 및 상기 현재 펌웨어 버전은 NFC 칩(200) 내부에 포함되는 레지스터에 저장될 수 있다.
응용 프로세서(100)는 메타 정보(311)에 포함되는 하드웨어 버전(315)과 NFC 칩(200)으로부터 수신되는 상기 현재 하드웨어 버전을 비교하고 메타 정보(311)에 포함되는 펌웨어 버전(316)과 NFC 칩(200)으로부터 수신되는 상기 현재 펌웨어 버전을 비교하여 NFC 칩(200)에 탑재된 현재 펌웨어를 펌웨어 데이터(320)로 업데이트할지 여부를 판단할 수 있다.
예를 들어, 메타 정보(311)에 포함되는 하드웨어 버전(315)과 NFC 칩(200)으로부터 수신되는 상기 현재 하드웨어 버전이 일치하지 않거나 메타 정보(311)에 포함되는 펌웨어 버전(316)이 NFC 칩(200)으로부터 수신되는 상기 현재 펌웨어 버전보다 낮거나 같은 경우(단계 S130; 아니오), 응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300d)에 포함되는 메타 데이터(310)를 NFC 칩(200)에 전송하지 않고 펌웨어 업데이트 동작을 종료할 수 있다.
반면에, 메타 정보(311)에 포함되는 하드웨어 버전(315)과 NFC 칩(200)으로부터 수신되는 상기 현재 하드웨어 버전이 일치하고 메타 정보(311)에 포함되는 펌웨어 버전(316)이 NFC 칩(200)으로부터 수신되는 상기 현재 펌웨어 버전보다 높은 경우(단계 S130; 예), 응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300d)에 포함되는 메타 데이터(310)를 데이터 라인(DL)을 통해 NFC 칩(200)에 전송할 수 있다(단계 S150).
이 경우, NFC 칩(200)은 메타 데이터(310)의 무결성을 검증하고, 메타 데이터(310)가 무결한 것으로 판단되는 경우 데이터 라인(DL)을 통해 인증 성공 신호(CSS)를 응용 프로세서(100)에 제공하고, 메타 데이터(310)가 무결하지 않은 것으로 판단되는 경우 데이터 라인(DL)을 통해 인증 실패 신호(CFS)를 응용 프로세서(100)에 제공할 수 있다(단계 S200).
응용 프로세서(100)는 NFC 칩(200)으로부터 인증 실패 신호(CFS)를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300d)에 포함되는 펌웨어 데이터(320)를 NFC 칩(200)에 제공하지 않고 펌웨어 업데이트 동작을 종료할 수 있다.
한편, 응용 프로세서(100)는 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300d)에 포함되는 펌웨어 데이터(320)를 데이터 라인(DL)을 통해 NFC 칩(200)에 제공하고, NFC 칩(200)은 펌웨어 데이터(320)를 펌웨어 저장부(210)에 저장함으로써 기존 펌웨어를 펌웨어 데이터(320)로 업데이트할 수 있다(단계 S300).
NFC 칩(200)이 메타 데이터(310)의 무결성을 검증하여 인증 성공 신호(CSS) 및 인증 실패 신호(CFS) 중의 하나를 응용 프로세서(100)에 제공하는 단계(S200) 및 응용 프로세서(100)가 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우 펌웨어 데이터(320)를 NFC 칩(200)에 제공하는 단계(S300)는 도 4 내지 9를 참조하여 상술하였으므로, 여기서는 중복되는 설명은 생략한다.
도 12는 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이고, 도 13은 펌웨어 이미지 파일이 도 12의 구조를 갖는 경우 도 1의 응용 프로세서가 메타 데이터를 NFC 칩에 제공하는 단계(S100)의 일 예를 나타내는 순서도이다.
도 12를 참조하면, 펌웨어 이미지 파일(300e)은 데이터 영역(330) 및 데이터 영역(330)에 대한 제2 디지털 서명(340)을 포함할 수 있다.
데이터 영역(330)은 NFC 칩(200)을 구동하기 위한 펌웨어의 로우 데이터에 상응하는 펌웨어 데이터(320) 및 펌웨어 데이터(320)에 대한 다양한 정보를 포함하는 메타 데이터(310)를 포함할 수 있다.
제2 디지털 서명(340)은 데이터 영역(330)에 다양한 방식의 암호화 알고리즘을 적용하여 생성될 수 있다.
제2 디지털 서명(340)을 복호화하기 위한 제2 공개키(public key)는 응용 프로세서(100)에 저장될 수 있다. 일 실시예에 있어서, 상기 제2 공개키는 전자 시스템(10)의 제조 과정에서 응용 프로세서(100)에 저장될 수 있다. 다른 실시예에 있어서, 상기 제2 공개키는 외부로부터 다운로드되어 응용 프로세서(100)에 저장될 수 있다.
이 경우, 응용 프로세서(100)는 제2 디지털 서명(340)을 사용하여 펌웨어 이미지 파일(300e)의 무결성을 검증할 수 있다.
일 실시예에 있어서, 도 13에 도시된 바와 같이, 응용 프로세서(100)는 외부로부터 펌웨어 이미지 파일(300e)을 수신하는 경우, 제2 디지털 서명(340)에 상기 제2 공개키를 적용하여 제2 디지털 서명(340)이 작성된 이후에 데이터 영역(330)이 변경되었는지 여부를 판단할 수 있다(단계 S140).
예를 들어, NFC 칩(200)은 상기 제2 공개키를 사용하여 제2 디지털 서명(340)을 복호화하여 복호 데이터를 생성하고, 상기 복호 데이터와 데이터 영역(330)을 비교함으로써 제2 디지털 서명(340)이 작성된 이후에 데이터 영역(330)이 변경되었는지 여부를 판단할 수 있다.
상기 판단 결과 데이터 영역(330)이 변경된 경우(단계 S140; 예), 응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300e)에 포함되는 메타 데이터(310)를 NFC 칩(200)에 제공하지 않고 펌웨어 업데이트 동작을 종료할 수 있다.
반면에, 상기 판단 결과 데이터 영역(330)이 변경되지 않은 경우(단계 S140; 아니오), 응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300e)에 포함되는 메타 데이터(310)를 데이터 라인(DL)을 통해 NFC 칩(200)에 전송할 수 있다(단계 S150).
이 경우, NFC 칩(200)은 메타 데이터(310)의 무결성을 검증하고, 메타 데이터(310)가 무결한 것으로 판단되는 경우 데이터 라인(DL)을 통해 인증 성공 신호(CSS)를 응용 프로세서(100)에 제공하고, 메타 데이터(310)가 무결하지 않은 것으로 판단되는 경우 데이터 라인(DL)을 통해 인증 실패 신호(CFS)를 응용 프로세서(100)에 제공할 수 있다(단계 S200).
응용 프로세서(100)는 NFC 칩(200)으로부터 인증 실패 신호(CFS)를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300e)에 포함되는 펌웨어 데이터(320)를 NFC 칩(200)에 제공하지 않고 펌웨어 업데이트 동작을 종료할 수 있다.
한편, 응용 프로세서(100)는 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300e)에 포함되는 펌웨어 데이터(320)를 데이터 라인(DL)을 통해 NFC 칩(200)에 제공하고, NFC 칩(200)은 펌웨어 데이터(320)를 펌웨어 저장부(210)에 저장함으로써 기존 펌웨어를 펌웨어 데이터(320)로 업데이트할 수 있다(단계 S300).
NFC 칩(200)이 메타 데이터(310)의 무결성을 검증하여 인증 성공 신호(CSS) 및 인증 실패 신호(CFS) 중의 하나를 응용 프로세서(100)에 제공하는 단계(S200) 및 응용 프로세서(100)가 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우 펌웨어 데이터(320)를 NFC 칩(200)에 제공하는 단계(S300)는 도 4 내지 9를 참조하여 상술하였으므로, 여기서는 중복되는 설명은 생략한다.
도 12 및 13을 참조하여 상술한 바와 같이, 응용 프로세서(100)는 펌웨어 이미지 파일(300e)에 포함되는 제2 디지털 서명(340)에 기초하여 메타 데이터(310) 및 펌웨어 데이터(320)를 포함하는 데이터 영역(330)이 변경되었는지 여부를 검증하고, 데이터 영역(330)이 변경되지 않은 경우에 한해 NFC 칩(200)의 펌웨어를 업데이트함으로써, 전자 시스템(10)은 NFC 칩(200)의 펌웨어가 해커에 의한 공격으로 인해 변조된 펌웨어로 업데이트되는 것을 효과적으로 방지할 수 있다.
도 14는 도 3에 도시된 펌웨어 이미지 파일의 구조의 일 예를 나타내는 도면이고, 도 15a, 15b 및 15c는 펌웨어 이미지 파일이 도 14의 구조를 갖는 경우 도 1의 NFC 칩의 펌웨어 업데이트 방법의 일 예를 나타내는 순서도들이다.
도 14를 참조하면, 펌웨어 이미지 파일(300f)은 데이터 영역(330) 및 데이터 영역(330)에 대한 제2 디지털 서명(340)을 포함할 수 있다.
제2 디지털 서명(340)은 데이터 영역(330)에 다양한 방식의 암호화 알고리즘을 적용하여 생성될 수 있다.
제2 디지털 서명(340)을 복호화하기 위한 제2 공개키(public key)는 응용 프로세서(100)에 저장될 수 있다.
데이터 영역(330)은 NFC 칩(200)을 구동하기 위한 펌웨어의 로우 데이터에 상응하는 펌웨어 데이터(320) 및 펌웨어 데이터(320)에 대한 메타 데이터(310)를 포함할 수 있다.
펌웨어 데이터(320)는 복수의 패킷들(321-1, 321-2, ..., 321-n)로 구분될 수 있다. 여기서 n은 2 이상의 정수를 나타낸다.
메타 데이터(310)는 펌웨어 데이터(320)에 대한 다양한 정보를 포함하는 메타 정보(311) 및 메타 정보(311)에 대한 제1 디지털 서명(319)을 포함할 수 있다.
제1 디지털 서명(319)은 메타 정보(311)에 다양한 방식의 암호화 알고리즘을 적용하여 생성될 수 있다.
제1 디지털 서명(319)을 복호화하기 위한 제1 공개키(public key)는 NFC 칩(200)에 저장될 수 있다.
메타 정보(311)는 펌웨어 데이터(320)에 상응하는 펌웨어가 수행될 수 있는 NFC 칩의 하드웨어 버전(315) 및 펌웨어 데이터(320)에 상응하는 펌웨어 버전(316)을 포함할 수 있다.
메타 정보(311)는 펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)의 개수(312) 및 복수의 패킷들(321-1, 321-2, ..., 321-n)의 CRC 값들(313)을 포함할 수 있다.
메타 정보(311)는 펌웨어 데이터(320)에 대한 해시(hash) 함수값(314)을 포함할 수 있다.
이 경우, 도 15a, 15b 및 15c에 도시된 바와 같이, 응용 프로세서(100)는 NFC 칩(200)에 버전(version) 요청 신호를 전송하고(단계 S110), NFC 칩(200)은 상기 버전 요청 신호에 응답하여 NFC 칩(200)의 버전을 나타내는 현재 하드웨어 버전 및 NFC 칩(200)의 펌웨어 저장부(210)에 저장되어 있는 펌웨어의 버전을 나타내는 현재 펌웨어 버전을 응용 프로세서(100)에 전송할 수 있다(단계 S120).
메타 정보(311)에 포함되는 하드웨어 버전(315)과 NFC 칩(200)으로부터 수신되는 상기 현재 하드웨어 버전이 일치하지 않거나 메타 정보(311)에 포함되는 펌웨어 버전(316)이 NFC 칩(200)으로부터 수신되는 상기 현재 펌웨어 버전보다 낮거나 같은 경우(단계 S130; 아니오), 응용 프로세서(100)는 펌웨어 업데이트 동작을 종료할 수 있다.
메타 정보(311)에 포함되는 하드웨어 버전(315)과 NFC 칩(200)으로부터 수신되는 상기 현재 하드웨어 버전이 일치하고 메타 정보(311)에 포함되는 펌웨어 버전(316)이 NFC 칩(200)으로부터 수신되는 상기 현재 펌웨어 버전보다 높은 경우(단계 S130; 예), 응용 프로세서(100)는 제2 디지털 서명(340)에 상기 제2 공개키를 적용하여 제2 디지털 서명(340)이 작성된 이후에 데이터 영역(330)이 변경되었는지 여부를 판단할 수 있다(단계 S140).
상기 판단 결과 데이터 영역(330)이 변경된 경우(단계 S140; 예), 응용 프로세서(100)는 펌웨어 업데이트 동작을 종료할 수 있다.
반면에, 상기 판단 결과 데이터 영역(330)이 변경되지 않은 경우(단계 S140; 아니오), 응용 프로세서(100)는 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300f)에 포함되는 메타 데이터(310)를 데이터 라인(DL)을 통해 NFC 칩(200)에 전송할 수 있다(단계 S150).
NFC 칩(200)은 응용 프로세서(100)로부터 메타 데이터(310)를 수신하는 경우, 제1 디지털 서명(319)에 상기 제1 공개키를 적용하여 제1 디지털 서명(319)이 작성된 이후에 메타 정보(311)가 변경되었는지 여부를 판단할 수 있다(단계 S210).
상기 판단 결과 메타 정보(311)가 변경된 경우(단계 S210; 예), NFC 칩(200)은 인증 실패 신호(CFS)를 데이터 라인(DL)을 통해 응용 프로세서(100)에 전송할 수 있다(단계 S230). 응용 프로세서(100)는 NFC 칩(200)으로부터 인증 실패 신호(CFS)를 수신하는 경우, 펌웨어 업데이트 동작을 종료할 수 있다.
상기 판단 결과 메타 정보(311)가 변경되지 않은 경우(단계 S210; 아니오), NFC 칩(200)은 인증 성공 신호(CSS)를 데이터 라인(DL)을 통해 응용 프로세서(100)에 전송할 수 있다(단계 S220).
응용 프로세서(100)는 NFC 칩(200)으로부터 인증 성공 신호(CSS)를 수신하는 경우, 첫 번째 패킷(321-1)을 NFC 칩(200)에 전송하고(단계 S310), NFC 칩(200)은 메타 정보(311)에 포함되는 첫 번째 패킷(321-1)에 상응하는 CRC 값에 기초하여 첫 번째 패킷(321-1)이 훼손되었는지 여부를 판단할 수 있다(단계 S320).
상기 판단 결과 첫 번째 패킷(321-1)이 훼손된 경우(단계 S320; 예), NFC 칩(200)은 응용 프로세서(100)에 제1 실패 신호를 전송할 수 있다(단계 S330). 응용 프로세서(100)는 NFC 칩(200)으로부터 상기 제1 실패 신호를 수신하는 경우, 첫 번째 패킷(321-1)을 NFC 칩(200)에 재전송할 수 있다(단계 S310).
상기 판단 결과 첫 번째 패킷(321-1)이 훼손되지 않은 경우(단계 S320; 아니오), NFC 칩(200)은 응용 프로세서(100)에 제1 성공 신호를 전송하고 첫 번째 패킷(321-1)을 펌웨어 저장부(210)에 저장할 수 있다(단계 S340).
응용 프로세서(100)는 NFC 칩(200)으로부터 상기 제1 성공 신호를 수신하는 경우, 펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)이 모두 NFC 칩(200)에 전송되었는지 여부를 판단할 수 있다(단계 S350).
모든 패킷들(321-1, 321-2, ..., 321-n)이 NFC 칩(200)에 전송되지 않은 경우(단계S350; 아니오), 응용 프로세서(100)는 두 번째 패킷(321-2)을 NFC 칩(200)에 전송할 수 있다(단계 S360 및 단계 S310).
펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)이 모두 NFC 칩(200)에 전송될 때까지 응용 프로세서(100) 및 NFC 칩(200)은 상술한 동작을 반복할 수 있다.
NFC 칩(200)은 응용 프로세서(100)로부터 펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)을 모두 수신하여 펌웨어 저장부(210)에 저장한 경우(단계 S350; 예), 펌웨어 데이터(320)에 해시 함수를 적용하여 획득되는 값과 메타 정보(311)에 포함되는 해시 함수값(314)을 비교하여 펌웨어 데이터(320)가 훼손되었는지 여부를 판단할 수 있다(단계 S380).
펌웨어 데이터(320)에 해시 함수를 적용하여 획득되는 값과 메타 정보(311)에 포함되는 해시 함수값(314)이 일치하지 않는 경우(단계 S380; 아니오), 펌웨어 데이터(320)는 훼손된 것이므로 NFC 칩(200)은 응용 프로세서(100)에 제2 실패 신호를 전송할 수 있다(단계 S385). 응용 프로세서(100)는 NFC 칩(200)으로부터 상기 제2 실패 신호를 수신하는 경우, 펌웨어 데이터(320)에 포함되는 복수의 패킷들(321-1, 321-2, ..., 321-n)을 NFC 칩(200)에 재전송할 수 있다(단계 S310, S320, S330, S340, S350 및 S360).
펌웨어 데이터(320)에 해시 함수를 적용하여 획득되는 값과 메타 정보(311)에 포함되는 해시 함수값(314)이 일치하는 경우(단계 S380; 예), 펌웨어 데이터(320)는 훼손되지 않은 것이므로 NFC 칩(200)은 응용 프로세서(100)에 제2 성공 신호를 전송할 수 있다(단계 S390).
응용 프로세서(100)는 NFC 칩(200)으로부터 상기 제2 성공 신호를 수신하는 경우, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300f)을 현재 펌웨어 저장부(110)에 저장하고 펌웨어 업데이트 동작을 종료할 수 있다(단계 S395). 이로써 응용 프로세서(100)의 현재 펌웨어 저장부(110)는 NFC 칩(200)의 펌웨어 저장부(210)에 저장된 펌웨어에 상응하는 펌웨어 이미지 파일을 저장할 수 있다.
한편, 신규 펌웨어 저장부(120)에 저장된 펌웨어 이미지 파일(300f)에 포함되는 펌웨어 데이터(320)가 이미 훼손된 경우, 응용 프로세서(100)는 NFC 칩(200)으로부터 상기 제1 실패 신호를 반복적으로 수신하거나, 상기 제2 실패 신호를 반복적으로 수신할 수 있다. 따라서 응용 프로세서(100)는 NFC 칩(200)으로부터 상기 제1 실패 신호를 반복적으로 수신하거나 상기 제2 실패 신호를 반복적으로 수신하는 경우, 응용 프로세서(100)는 현재 펌웨어 저장부(110)에 저장되어 있던 기존의 펌웨어 이미지 파일을 사용하여 도 15a, 15b 및 15c에 도시된 동작을 수행함으로써, NFC 칩(200)의 펌웨어를 상기 기존의 펌웨어 이미지 파일에 상응하는 펌웨어로 복원시킬 수 있다.
도 15a, 15b 및 15c의 NFC 칩의 펌웨어 업데이트 방법에 포함되는 각 단계는 도 4 내지 13을 참조하여 상술하였으므로, 여기서는 중복되는 설명은 생략한다.
도 16은 도 2에 도시된 전자 시스템의 일 예를 나타내는 블록도이다.
도 16을 참조하면, 전자 시스템(10a)은 응용 프로세서(100) 및 NFC 칩(200)을 포함한다. 또한, 전자 시스템(10a)은 통신부(300), 메모리 장치(400), 사용자 인터페이스(500) 및 파워 서플라이(600)를 더 포함할 수 있다.
실시예에 따라, 전자 시스템(10a)은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템, 랩탑 컴퓨터(laptop computer) 등과 같은 임의의 모바일 시스템일 수 있다.
응용 프로세서(100)는 전자 시스템(10a)의 전반적인 동작을 제어한다. 응용 프로세서(100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 실시예에 따라, 응용 프로세서(100)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 예를 들어, 응용 프로세서(100)는 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Core) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 또한, 실시예에 따라, 응용 프로세서(100)는 내부 또는 외부에 위치한 캐시 메모리(Cache Memory)를 더 포함할 수 있다.
통신부(300)는 외부 장치와 무선 통신 또는 유선 통신을 수행할 수 있다. 예를 들어, 통신부(300)는 이더넷(Ethernet) 통신, 이동 통신(Mobile Telecommunication), 메모리 카드 통신, 범용 직렬 버스(Universal Serial Bus; USB) 통신 등을 수행할 수 있다. 예를 들어, 통신부(300)는 베이스밴드 칩 셋(Baseband Chipset)을 포함할 수 있고, GSM, GPRS, WCDMA, HSxPA 등의 통신을 지원할 수 있다.
메모리 장치(400)는 전자 시스템(10a)의 동작에 필요한 데이터를 저장한다. 예를 들어, 메모리 장치(400)는 전자 시스템(10a)을 부팅하기 위한 부트 이미지를 저장할 수 있고, 외부 장치에 전송할 출력 데이터 및 상기 외부 장치로부터 수신되는 입력 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(400)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
NFC 칩(200)은 근거리 무선 통신(NFC)을 통해 외부 장치에 메모리 장치(400)에 저장된 상기 출력 데이터를 전송하고 상기 외부 장치로부터 수신되는 상기 입력 데이터를 메모리 장치(400)에 저장할 수 있다.
사용자 인터페이스(500)는 키패드, 터치 스크린과 같은 하나 이상의 입력 장치 및/또는 스피커, 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함할 수 있다. 파워 서플라이(600)는 전자 시스템(10a)의 동작 전압을 공급할 수 있다.
일 실시예에 있어서, NFC 칩(200)은 펌웨어 저장부(FSU)(210)를 포함할 수 있다. 펌웨어 저장부(210)는 NFC 칩(200)을 구동하기 위한 펌웨어를 저장할 수 있다.
응용 프로세서(100)는 현재 펌웨어 저장부(CFSU)(110) 및 신규 펌웨어 저장부(NFSU)(120)를 포함할 수 있다.
통신부(300)는 외부 장치로부터 펌웨어 데이터 및 상기 펌웨어 데이터에 대한 메타 데이터를 포함하는 펌웨어 이미지 파일(FIF)을 수신할 수 있다. 일 실시예에 있어서, 통신부(300)는 통신 서비스 제공자의 서버에 등록된 펌웨어 이미지 파일(FIF)을 무선 통신을 통해 다운로드할 수 있다. 다른 실시예에 있어서, 통신부(300)는 케이블을 통해 직접 연결되는 외부 장치로부터 펌웨어 이미지 파일(FIF)을 유선 통신을 통해 다운로드할 수 있다. 펌웨어 이미지 파일(FIF)은 NFC 칩(200)의 제조사에 의해 제공될 수 있다. 통신부(300)는 다운로드된 펌웨어 이미지 파일(FIF)을 응용 프로세서(100)에 제공할 수 있다.
응용 프로세서(100)는 통신부(300)로부터 제공되는 펌웨어 이미지 파일(FIF)을 신규 펌웨어 저장부(120)에 저장할 수 있다.
사용자가 사용자 인터페이스(500)를 통해 NFC 기능을 턴온하는 경우, 사용자 인터페이스(500)는 NFC 온 신호(NFC_ON)를 생성할 수 있다.
응용 프로세서(100)는 사용자 인터페이스(500)로부터 NFC 온 신호(NFC_ON)를 수신하는 경우, 버전 체크를 통해 NFC 칩(200)에 현재 탑재된 펌웨어를 펌웨어 이미지 파일(FIF)에 포함되는 상기 펌웨어 데이터로 업데이트할지 여부를 판단할 수 있다. NFC 칩(200)에 현재 탑재된 펌웨어를 업데이트할 필요가 있는 경우, 응용 프로세서(100)는 펌웨어 이미지 파일(FIF)에 포함되는 상기 메타 데이터를 NFC 칩(200)에 제공할 수 있다.
NFC 칩(200)은 상기 메타 데이터의 무결성을 검증하고, 상기 메타 데이터가 무결한 것으로 판단되는 경우 인증 성공 신호를 응용 프로세서(100)에 제공하고, 상기 메타 데이터가 무결하지 않은 것으로 판단되는 경우 인증 실패 신호를 응용 프로세서(100)에 제공할 수 있다.
응용 프로세서(100)는 NFC 칩(200)으로부터 상기 인증 실패 신호를 수신하는 경우, 펌웨어 이미지 파일(FIF)에 포함되는 상기 펌웨어 데이터를 NFC 칩(200)에 제공하지 않고 펌웨어 업데이트 동작을 종료할 수 있다.
한편, 응용 프로세서(100)는 NFC 칩(200)으로부터 상기 인증 성공 신호를 수신하는 경우, 펌웨어 이미지 파일(FIF)에 포함되는 상기 펌웨어 데이터를 NFC 칩(200)에 제공하고, NFC 칩(200)은 상기 펌웨어 데이터를 펌웨어 저장부(210)에 저장함으로써 기존 펌웨어를 상기 펌웨어 데이터로 업데이트할 수 있다.
이후, 응용 프로세서(100)는 NFC 칩(200)을 턴온하고, NFC 칩(200)은 정상 동작을 수행할 수 있다.
응용 프로세서(100) 및 NFC 칩(200)이 NFC 칩(200)의 펌웨어를 업데이트하는 방법은 도 1 내지 15c를 참조하여 상세히 설명하였으므로, 여기서는 응용 프로세서(100) 및 NFC 칩(200)이 펌웨어 이미지 파일(FIF)을 사용하여 NFC 칩(200)의 펌웨어를 업데이트하는 방법에 대한 상세한 설명은 생략한다.
실시예에 따라, 전자 시스템(10a)은 이미지 프로세서를 더 포함할 수 있고, 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD), 하드 디스크 드라이브(Hard Disk Drive; HDD), 씨디롬(CD-ROM) 등과 같은 저장 장치를 더 포함할 수 있다.
전자 시스템(10a)의 구성요소들은 다양한 형태들의 패키지를 이용하여 실장될 수 있는데, 예를 들어, PoP(Package on Package), BGAs(Ball grid arrays), CSPs(Chip scale packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-Line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-Line Package), MQFP(Plastic Metric Quad Flat Pack), TQFP(Thin Quad Flat-Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), TQFP(Thin Quad Flat-Pack), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
본 발명은 근거리 무선 통신(Near Field Communication; NFC) 장치를 구비하는 임의의 전자 장치에 유용하게 이용될 수 있다. 예를 들어, 본 발명은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템, 랩톱 컴퓨터(laptop computer) 등에 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (10)

  1. 응용 프로세서(Application Processor; AP)가 펌웨어 이미지 파일(firmware image file)에 포함되는 메타 데이터를 근거리 무선 통신(Near Field Communication; NFC) 칩에 제공하는 단계;
    상기 NFC 칩이 상기 메타 데이터의 무결성(integrity)을 검증하여 인증(certification) 성공 신호 및 인증 실패 신호 중의 하나를 상기 응용 프로세서에 제공하는 단계; 및
    상기 응용 프로세서가 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 이미지 파일에 포함되는 펌웨어 데이터를 상기 NFC 칩에 제공하는 단계를 포함하는 NFC 칩의 펌웨어 업데이트 방법.
  2. 제1 항에 있어서, 상기 메타 데이터는 상기 펌웨어 데이터에 대한 메타 정보 및 상기 메타 정보에 대한 디지털 서명(digital signature)을 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  3. 제2 항에 있어서, 상기 NFC 칩이 상기 메타 데이터의 무결성을 검증하여 상기 인증 성공 신호 및 상기 인증 실패 신호 중의 하나를 상기 응용 프로세서에 제공하는 단계는,
    상기 디지털 서명에 공개키(public key)를 적용하여 상기 디지털 서명이 작성된 이후에 상기 메타 정보가 변경되었는지 여부를 판단하는 단계;
    상기 메타 정보가 변경되지 않은 경우, 상기 인증 성공 신호를 상기 응용 프로세서에 전송하는 단계; 및
    상기 메타 정보가 변경된 경우, 상기 인증 실패 신호를 상기 응용 프로세서에 전송하는 단계를 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  4. 제1 항에 있어서, 상기 펌웨어 데이터는 복수의 패킷들로 구분되고, 상기 메타 데이터는 상기 복수의 패킷들의 순환중복검사(Cyclic Redundancy Check; CRC) 값들을 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  5. 제4 항에 있어서, 상기 응용 프로세서가 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 데이터를 상기 NFC 칩에 제공하는 단계는,
    상기 응용 프로세서가 상기 복수의 패킷들을 순차적으로 상기 NFC 칩에 전송하는 단계;
    상기 NFC 칩이 상기 복수의 패킷들 중의 어느 한 패킷을 수신하는 경우, 상기 메타 데이터에 포함되는 상기 CRC 값들 중에서 상기 어느 한 패킷에 상응하는 CRC 값에 기초하여 상기 어느 한 패킷이 훼손(damage)되었는지 여부를 판단하는 단계;
    상기 어느 한 패킷이 훼손된 경우, 상기 응용 프로세서에 상기 어느 한 패킷의 재전송을 요청하는 단계; 및
    상기 어느 한 패킷이 훼손되지 않은 경우, 상기 어느 한 패킷을 펌웨어 저장부에 저장하는 단계를 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  6. 제1 항에 있어서, 상기 메타 데이터는 상기 펌웨어 데이터에 대한 해시(hash) 함수값을 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  7. 제6 항에 있어서, 상기 응용 프로세서가 상기 인증 성공 신호를 수신하는 경우 상기 펌웨어 데이터를 상기 NFC 칩에 제공하는 단계는,
    상기 응용 프로세서가 상기 펌웨어 데이터를 상기 NFC 칩에 전송하는 단계;
    상기 NFC 칩이 상기 펌웨어 데이터에 해시 함수를 적용하여 획득되는 값과 상기 메타 데이터에 포함되는 상기 해시 함수값을 비교하는 단계;
    상기 획득되는 값과 상기 해시 함수값이 일치하지 않는 경우, 상기 응용 프로세서에 실패(fail) 신호를 제공하는 단계;
    상기 획득되는 값과 상기 해시 함수값이 일치하는 경우, 상기 응용 프로세서에 성공(success) 신호를 제공하는 단계;
    상기 응용 프로세서가 상기 NFC 칩으로부터 상기 실패 신호를 수신하는 경우, 상기 펌웨어 데이터를 상기 NFC 칩에 재전송하는 단계; 및
    상기 응용 프로세서가 상기 NFC 칩으로부터 상기 성공 신호를 수신하는 경우, 상기 펌웨어 이미지 파일을 현재 펌웨어 저장부에 저장하는 단계를 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  8. 제1 항에 있어서, 상기 펌웨어 이미지 파일은 상기 메타 데이터와 상기 펌웨어 데이터를 포함하는 데이터 영역 및 상기 데이터 영역에 대한 디지털 서명을 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  9. 제8 항에 있어서, 상기 응용 프로세서가 상기 메타 데이터를 상기 NFC 칩에 제공하는 단계는,
    상기 응용 프로세서가 상기 디지털 서명에 공개키(public key)를 적용하여 상기 디지털 서명이 작성된 이후에 상기 데이터 영역이 변경되었는지 여부를 판단하는 단계; 및
    상기 데이터 영역이 변경되지 않은 경우 상기 메타 데이터를 상기 NFC 칩에 전송하는 단계를 포함하는 것을 특징으로 하는 NFC 칩의 펌웨어 업데이트 방법.
  10. 펌웨어 데이터 및 상기 펌웨어 데이터에 대한 메타 데이터를 포함하는 펌웨어 이미지 파일(firmware image file)을 수신하고, 상기 메타 데이터 및 상기 펌웨어 데이터를 출력하는 응용 프로세서; 및
    상기 응용 프로세서로부터 제공되는 상기 메타 데이터의 무결성(integrity)을 검증하고, 상기 메타 데이터가 무결성을 갖는 경우 기존 펌웨어를 상기 응용 프로세서로부터 제공되는 상기 펌웨어 데이터로 업데이트하는 근거리 무선 통신(Near Field Communication; NFC) 칩을 포함하는 전자 시스템.
KR1020130136757A 2013-11-12 2013-11-12 근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템 KR102143434B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130136757A KR102143434B1 (ko) 2013-11-12 2013-11-12 근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템
US14/330,240 US9430648B2 (en) 2013-11-12 2014-07-14 Method and apparatus for near field communication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130136757A KR102143434B1 (ko) 2013-11-12 2013-11-12 근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템

Publications (2)

Publication Number Publication Date
KR20150054380A true KR20150054380A (ko) 2015-05-20
KR102143434B1 KR102143434B1 (ko) 2020-08-11

Family

ID=53044863

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130136757A KR102143434B1 (ko) 2013-11-12 2013-11-12 근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템

Country Status (2)

Country Link
US (1) US9430648B2 (ko)
KR (1) KR102143434B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102336698B1 (ko) * 2020-06-15 2021-12-08 주식회사 씽스토리 펌웨어의 유효성을 검증하는 펌웨어 관리 장치 및 방법, 그리고 펌웨어를 업데이트하는 사물인터넷 장치 및 이를 포함하는 시스템

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017202137A1 (zh) * 2016-05-24 2017-11-30 飞天诚信科技股份有限公司 一种nfc动态令牌及其工作方法
WO2018014327A1 (en) * 2016-07-22 2018-01-25 Intel Corporation Embedded system application installation and execution method and apparatus
US10277283B2 (en) 2016-09-14 2019-04-30 Sony Corporation NFC device, reader/writer device and methods for authorizing and performing an update
US10966073B2 (en) 2017-11-22 2021-03-30 Charter Communications Operating, Llc Apparatus and methods for premises device existence and capability determination
CN108012252A (zh) * 2017-12-18 2018-05-08 深圳市万普拉斯科技有限公司 Nfc实现方法、装置、移动终端及可读存储介质
DE102018202626A1 (de) * 2018-02-21 2019-08-22 Siemens Aktiengesellschaft Verfahren zur rechnergestützten Parametrierung eines technischen Systems
US11129171B2 (en) 2019-02-27 2021-09-21 Charter Communications Operating, Llc Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
US11016750B2 (en) * 2019-03-13 2021-05-25 Microsoft Technology Licensing, Llc Firmware update system
US11182222B2 (en) * 2019-07-26 2021-11-23 Charter Communications Operating, Llc Methods and apparatus for multi-processor device software development and operation
US11178113B2 (en) * 2019-07-30 2021-11-16 Ppip, Llc Protocol isolation for security
US11243783B2 (en) * 2019-07-30 2022-02-08 Ppip, Llc Device re-configuration for security
US11368552B2 (en) 2019-09-17 2022-06-21 Charter Communications Operating, Llc Methods and apparatus for supporting platform and application development and operation
US11026205B2 (en) 2019-10-23 2021-06-01 Charter Communications Operating, Llc Methods and apparatus for device registration in a quasi-licensed wireless system
US11457485B2 (en) 2019-11-06 2022-09-27 Charter Communications Operating, Llc Methods and apparatus for enhancing coverage in quasi-licensed wireless systems
US11520891B1 (en) * 2019-12-11 2022-12-06 Amazon Technologies, Inc. Secure boot of an integrated circuit
US11444955B2 (en) * 2020-06-30 2022-09-13 Cisco Technology, Inc. Verification of in-situ network telemetry data in a packet-switched network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120005480A1 (en) * 2010-07-01 2012-01-05 Rockwell Automation Technologies, Inc. Methods for firmware signature
US20130227540A1 (en) * 2012-02-28 2013-08-29 Seagate Technology Llc Updating peripheral device firmware via a portable device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7480907B1 (en) * 2003-01-09 2009-01-20 Hewlett-Packard Development Company, L.P. Mobile services network for update of firmware/software in mobile handsets
KR20050083192A (ko) 2003-07-01 2005-08-26 주식회사 커뮤시스 알에프신호를 이용한 차량용 단말기 업데이트 시스템
JP2005215796A (ja) 2004-01-27 2005-08-11 Nec Software Kyushu Ltd 携帯端末のファームウェア更新システムと方法、更新モジュール配布媒体、携帯端末、及びプログラム
US7907531B2 (en) 2005-06-13 2011-03-15 Qualcomm Incorporated Apparatus and methods for managing firmware verification on a wireless device
KR101214155B1 (ko) 2005-06-16 2012-12-20 삼성전자주식회사 Rfid를 이용한 화상형성장치의 프로그램 갱신 방법 및장치
KR101427646B1 (ko) 2007-05-14 2014-09-23 삼성전자주식회사 펌웨어의 무결성 검사 방법 및 장치
WO2009068931A1 (en) 2007-11-30 2009-06-04 Nokia Corporation Method, device and system for firmware update by near-field communication
US9354864B2 (en) * 2008-05-08 2016-05-31 Dialogic Corporation Package header system and method to facilitate streaming a single firmware file upgrade
US8892699B2 (en) * 2008-12-31 2014-11-18 Schneider Electric USA, Inc. Automatic firmware updates for intelligent electronic devices
KR20110108071A (ko) 2010-03-26 2011-10-05 삼성전자주식회사 펌웨어 다운로드 시스템
KR20120041384A (ko) 2010-10-21 2012-05-02 삼성전자주식회사 모바일 디바이스의 펌웨어 업데이트 방법 및 장치
KR101190314B1 (ko) 2010-12-24 2012-10-12 동의대학교 산학협력단 스마트 폰 앱을 이용한 펌웨어 업데이트 시스템 및 방법
KR20120092912A (ko) 2011-02-14 2012-08-22 ㈜아레스찬 Nfc 통신을 이용한 이동통신 단말기의 펌웨어 제공 방법 및 상기 이동통신 단말기를 포함하는 펌웨어 제공 시스템
CN102740279B (zh) * 2011-04-15 2014-12-17 中兴通讯股份有限公司 一种无线网络接入终端及其运行方法
KR101270317B1 (ko) 2011-10-28 2013-05-31 에스케이씨앤씨 주식회사 전자기기 진단/수리 방법 및 시스템
KR101350059B1 (ko) 2011-11-25 2014-01-14 엘에스산전 주식회사 전력량계 펌웨어 업그레이드 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120005480A1 (en) * 2010-07-01 2012-01-05 Rockwell Automation Technologies, Inc. Methods for firmware signature
US20130227540A1 (en) * 2012-02-28 2013-08-29 Seagate Technology Llc Updating peripheral device firmware via a portable device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102336698B1 (ko) * 2020-06-15 2021-12-08 주식회사 씽스토리 펌웨어의 유효성을 검증하는 펌웨어 관리 장치 및 방법, 그리고 펌웨어를 업데이트하는 사물인터넷 장치 및 이를 포함하는 시스템

Also Published As

Publication number Publication date
US9430648B2 (en) 2016-08-30
US20150134970A1 (en) 2015-05-14
KR102143434B1 (ko) 2020-08-11

Similar Documents

Publication Publication Date Title
KR102143434B1 (ko) 근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템
US10887770B2 (en) Mobile system including firmware verification function and firmware update method thereof
CN109313690B (zh) 自包含的加密引导策略验证
US10474823B2 (en) Controlled secure code authentication
US8799662B2 (en) Method and apparatus for validating the integrity of installer files prior to installation
US8560823B1 (en) Trusted modular firmware update using digital certificate
US9946474B2 (en) Storing and accessing data
US10846099B2 (en) Selecting a boot loader on an electronic device
US11275835B2 (en) Method of speeding up a full antivirus scan of files on a mobile device
CN113632066A (zh) 所执行代码中的错误识别
US20140068598A1 (en) Information processing apparatus, information processing method, and program
JP6440721B2 (ja) コンピューティングデバイスによるアプリケーションの使用の認証
US10243583B2 (en) CPU error remediation during erasure code encoding
US11443048B2 (en) Install-time procedural content generation for encrypted packages
CN111464258B (zh) 一种数据校验方法、装置、计算设备及介质
CN115964721A (zh) 一种程序验证方法及电子设备
CN104052726A (zh) 访问控制方法和采用访问控制方法的移动终端
CN111949738A (zh) 基于区块链的数据存储去重方法、终端设备和存储介质
US10691447B2 (en) Writing system software on an electronic device
US20230274002A1 (en) Firmware authenticity check
CN110245518B (zh) 一种数据存储方法、装置及设备
CN117591195A (zh) 目标应用的启动方法、装置和存储介质
CN117978385A (zh) 密匙更新方法、装置、电子设备和计算机可读介质
CN114253597A (zh) 固件校验方法、装置和电子设备
CN114879980A (zh) 车载应用安装方法、装置、计算机设备、存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant