KR102139546B1 - 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법 - Google Patents

펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법 Download PDF

Info

Publication number
KR102139546B1
KR102139546B1 KR1020140028458A KR20140028458A KR102139546B1 KR 102139546 B1 KR102139546 B1 KR 102139546B1 KR 1020140028458 A KR1020140028458 A KR 1020140028458A KR 20140028458 A KR20140028458 A KR 20140028458A KR 102139546 B1 KR102139546 B1 KR 102139546B1
Authority
KR
South Korea
Prior art keywords
firmware image
host
hash value
signature
verification
Prior art date
Application number
KR1020140028458A
Other languages
English (en)
Other versions
KR20150106219A (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 KR1020140028458A priority Critical patent/KR102139546B1/ko
Priority to US14/644,864 priority patent/US10206114B2/en
Publication of KR20150106219A publication Critical patent/KR20150106219A/ko
Priority to US16/269,994 priority patent/US10887770B2/en
Application granted granted Critical
Publication of KR102139546B1 publication Critical patent/KR102139546B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/10Integrity
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • 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
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • 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

Abstract

본 발명에 따른 모바일 시스템에 포함되는 장치의 펌웨어 업데이트 방법은, 호스트로부터 제공되는 펌웨어 이미지로부터 생성된 제 1 해쉬 값과 서명서를 수신하는 단계, 상기 제 1 해쉬 값과 상기 서명서를 이용하여 상기 펌웨어 이미지에 대한 무결성 또는 서명 인증을 위한 사전 검증 동작을 실행하는 단계, 상기 사전 검증 동작의 결과에 따라 상기 호스트로부터 상기 펌웨어 이미지를 수신하는 단계, 그리고 수신된 상기 펌웨어 이미지로부터 제 2 해쉬 값을 계산하여 무결성 검증을 수행하는 사후 검증 동작을 실행하는 단계를 포함한다.

Description

펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법{MOBILE SYSTEM INCLUDING FIRMWARE VERIFICATION FUNCTION AND FIRMWARE UPDATE METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 펌웨어 검증 기능을 갖는 디바이스, 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법에 관한 것이다.
최근, 스마트폰, 테이블릿 PC, 디지털 카메라, MP3 플레이어, PDA 등과 같은 모바일 시스템의 이용이 폭발적으로 증가하고 있다. 이러한 모바일 시스템에서도 멀티미디어의 구동 및 각종 데이터의 처리량이 증가하면서, 고속 프로세서의 채용이 확대되고 있다. 모바일 시스템에는 다양한 응용 프로그램(Application program)들이 구동된다. 예를 들면, 전자 결재, 지도, 카메라, 멀티미디어 재생, 인터넷, 근거리 무선 통신을 사용한 파일 공유 등의 다양한 응용 프로그램들이 사용된다. 이러한 다양한 응용 프로그램들을 구동하기 위하여, 모바일 시스템에는 워킹 메모리(예를 들면, DRAM), 비휘발성 메모리, 그리고 응용 프로세서(Application Processor: 이하, AP)와 같은 반도체 장치들이 사용된다. 더불어, 전자 결재를 위한 근거리 무선 통신(Near Field Communication: 이하, NFC), 블루투스(Bluetooth)를 위한 반도체 장치가 모바일 시스템에 구비될 수 있다.
모바일 시스템을 구성하는 일부의 장치들은 펌웨어(Firmware)를 통해서 응용 프로그램이나 운영 체제(OS)와는 독립적으로 하드웨어와 같이 구동될 수 있다. 이러한 펌웨어는 안정된 성능과 버그 수정을 위해 제품의 출시 이 후에도 새로운 버전으로 업데이트될 수 있다. 최근에는 이러한 모바일 시스템을 구성하는 장치들에 대한 보안 공격이 증가하고 있고, 공격 기술도 진보하고 있다. 이에 따라 모바일 시스템을 구성하는 장치들의 펌웨어에 대한 보안 요구도 높아지고 있다.
게다가, 모바일 시스템을 구성하는 장치들의 펌웨어 업데이트시에 에러가 존재하는 펌웨어로 업데이트되는 경우는 차단되어야 한다. 그리고 펌웨어 업데이트 동작에서 실패(Fail)가 발생했을 때, 기존의 펌웨어로 복구(Roll-Back)하는 기능이 제공되어야 한다. 이러한 기능을 구비하고도, 장치의 생산 단가를 낮출 수 있는 장치가 요구되고 있다.
본 발명에서는, 보안 성능과 펌웨어의 안정성, 그리고 상대적으로 작은 메모리 사이즈로 안정된 펌웨어 업데이트 기능을 제공하는 디바이스 및 모바일 시스템이 제공될 것이다.
본 발명의 목적은 적은 메모리 용량을 구비하면서도, 펌웨어에 대한 높은 보안성 및 신뢰성을 제공하는 디바이스 및 그것을 포함하는 모바일 시스템을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 모바일 시스템에 포함되는 장치의 펌웨어 업데이트 방법은, 호스트로부터 제공되는 펌웨어 이미지로부터 생성된 제 1 해쉬 값과 서명서를 수신하는 단계, 상기 제 1 해쉬 값과 상기 서명서를 이용하여 상기 펌웨어 이미지에 대한 무결성 또는 서명 인증을 위한 사전 검증 동작을 실행하는 단계, 상기 사전 검증 동작의 결과에 따라 상기 호스트로부터 상기 펌웨어 이미지를 수신하는 단계, 그리고 수신된 상기 펌웨어 이미지로부터 제 2 해쉬 값을 계산하여 무결성 검증을 수행하는 사후 검증 동작을 실행하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 모바일 시스템에 포함되는 디바이스의 펌웨어 업데이트 방법은, 해쉬 연산을 통해서 상기 디바이스의 펌웨어 이미지를 해쉬 값으로 부호화하는 단계, 상기 해쉬 값과 서명서를 상기 디바이스로 전송하는 단계, 상기 해쉬 값과 상기 서명서를 이용하여 상기 펌웨어 이미지에 대한 무결성 검증 또는 서명 인증을 위한 사전 검증 동작의 결과를 상기 디바이스로부터 수신하는 단계, 그리고 상기 사전 검증 동작의 결과에 따라 상기 펌웨어 이미지를 상기 디바이스로 전송하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 모바일 시스템은, 펌웨어 이미지에 대한 해쉬 값을 생성하는 호스트, 그리고 상기 호스트로부터 제공되는 해쉬 값과 서명서를 참조하여 상기 펌웨어 이미지에 대한 사전 검증 동작을 수행하고, 상기 사전 검증 동작의 결과에 따라 상기 호스트로부터 상기 펌웨어 이미지를 제공받는 디바이스를 포함한다.
이상과 같은 본 발명의 실시 예에 따르면, 적은 메모리 용량을 구비하면서도 펌웨어 업데이트시에 높은 보안성, 안정성을 갖는 장치 및 그것을 포함하는 모바일 시스템을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 모바일 시스템을 보여주는 블록도이다.
도 2는 도 1의 호스트의 구성을 예시적으로 보여주는 블록도이다.
도 3은 도 2의 호스트에서 수행되는 펌웨어 업데이트 방법을 보여주는 순서도이다.
도 4는 본 발명의 디바이스(120)에 대한 예를 보여주는 블록도이다.
도 5는 도 5의 디바이스(120)에서 수행하는 펌웨어 업데이트 방법을 간략히 보여주는 순서도이다.
도 6은 사전 검증 동작을 보여주는 블록도이다.
도 7은 사후 검증 동작을 보여주는 블록도이다.
도 8은 본 발명의 모바일 시스템에서 호스트(110)와 디바이스(120)의 펌웨어 업데이트를 위한 상호 동작들을 보여주는 도면이다.
도 9는 본 발명의 다른 실시 예에 따른 디바이스(120a)를 보여주는 블록도이다.
도 10은 본 발명의 또 다른 실시 예에 따른 디바이스(120b)를 보여주는 블록도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 디바이스(120c)를 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 반도체 장치 또는 반도체 칩이 본 발명의 특징 및 기능을 설명하기 위한 단위의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 모바일 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 모바일 시스템(100)은 호스트(110)와 디바이스(120)를 포함한다. 모바일 시스템(100)은 디바이스(120)의 펌웨어 업데이트시에 호스트(110)와 디바이스(120)의 역할 분담에 따라 펌웨어에 대한 이중 검증을 수행할 수 있다.
호스트(110)는 외부로부터 제공받은 펌웨어 이미지(113, FW_imageN)를 저장한다. 호스트(110)는 펌웨어를 제공하는 업데이트 서버(미도시됨)로부터 펌웨어 이미지(113)를 다운로드할 수 있을 것이다. 호스트(110)는 펌웨어 이미지(113)에 대한 해쉬 값을 계산하기 위한 해쉬 생성기(111)를 포함할 수 있다. 해쉬 생성기(111)는 별도의 해쉬 함수를 구동하기 위한 하드웨어 기능 블록(Intellectual Property: 이하, IP)으로 구성될 수도 있다. 또는, 해쉬 생성기(111)는 호스트(110)에서 해쉬 알고리즘에 따라 구동되는 소프트웨어 모듈로 제공될 수도 있을 것이다.
여기서, 호스트(110)는 모바일 시스템(100)의 응용 프로세서(Application Processor: 이하, AP)일 수 있다. 또는, 호스트(110)는 모바일 시스템(100)의 제반 장치들의 펌웨어를 관리하기 위한 하드웨어 기능 블록(IP) 또는 장치일 수 있다. 하지만, 호스트(110)의 구성이나 범위가 상술한 구성이나 기능에 제한되지 않음은 잘 이해될 것이다.
호스트(110)는 디바이스(120)의 펌웨어 업데이트 동작시에, 일차적으로 펌웨어 이미지(113)에 대한 해쉬 값(h1)을 생성한다. 호스트(110)는 펌웨어 이미지(113)에 대한 해쉬 값(h1)에 대한 서명서(Sign)를 저장하고 있다. 서명서(Sign)는 디바이스(120)의 칩 벤더(Chip Vendor)나 제조사에 의해서 제공되는 비밀키를 통해서 키관리 시스템 서버(Key Management System)나 하드웨어 보안 모듈(HSM)을 통해서 생성될 것이다. 그리고 유무선 네트워크를 통해서 호스트(110)에 제공된다.
호스트(110)는 해쉬 알고리즘(111)에 의해서 생성된 해쉬 값(h1)과 서명서(Sign)를 사전 검증 동작(Pre-Verify Operation)을 위하여 디바이스(120)로 전송할 것이다. 호스트(110)는 장치로부터 펌웨어 이미지(FW_imageN)의 무결성 및 서명 인증을 위한 사전 검증 동작의 결과를 수신할 것이다. 사전 검증 동작에 따라 펌웨어 이미지(FW_imageN)가 유효한 것으로 통보 받으면, 호스트(110)는 비로소 펌웨어 이미지(FW_imageN)를 디바이스(120)로 전송할 것이다.
디바이스(120)는 펌웨어 이미지(FW_imageN)에 대한 무결성 검증 및 서명 인증을 위한 검증 동작을 수행한다. 본 발명의 디바이스(120)는 펌웨어 이미지에 대한 해쉬 값(h1)과 서명서(Sign)만을 수신하여 수행하는 사전 검증 동작(Pre-Verify operation)과, 펌웨어 이미지를 수신하여 불휘발성 메모리(126)에 저장된 이후에 수행하는 사후 검증 동작(Post-Verify operation)을 수행한다. 디바이스(120)는 사전 검증 동작을 통해서 불휘발성 메모리(126)에 저장된 이전 버전의 펌웨어 이미지(FW_imageO)가 업데이트되기 전에 호스트(110)에 존재하는 새로운 펌웨어 이미지(FW_imageN)의 무결성 검증 및 서명 인증을 수행할 수 있다. 디바이스(120)는 사후 검증 동작(Post-verify operation)을 통해서 불휘발성 메모리(126)에 프로그램된 펌웨어 이미지(FW_imageN)에 대한 무결성 검증 및 서명 인증을 수행할 수 있다.
사전 검증 동작에 의해서 펌웨어 이미지(FW_imageN)에 결함이 존재하거나 서명 인증이 실패하는 경우, 디바이스(120)는 검증 페일(Verify fail) 메시지를 호스트(110)로 전송할 것이다. 그러면, 호스트(110)는 펌웨어 이미지(FW_imageN, 113)를 폐기하거나, 새로운 펌웨어 이미지를 업데이트 서버(Update server, 미도시됨)에 요청할 것이다. 반면, 디바이스(120)로부터 펌웨어 이미지(FW_imageN)가 유효하다는 검증 패스(Verify pass) 메시지가 수신되면, 호스트(110)는 펌웨어 이미지(FW_imageN)를 디바이스(120)로 전달할 것이다. 그러면 디바이스(120)는 호스트(110)로부터의 펌웨어 이미지(FW_imageN)를 불휘발성 메모리(126)에 프로그램할 것이다.
펌웨어 이미지(FW_imageN)가 불휘발성 메모리(126)에 저장된 이후에, 디바이스(120)는 불휘발성 메모리(126)에 저장된 펌웨어 이미지(FW_imageN)에 대한 사후 검증 동작을 수행한다. 사후 검증 동작을 위해서, 디바이스(120)는 해쉬 생성기(121)를 사용하여 불휘발성 메모리(126)에 저장된 펌웨어 이미지(FW_imageN)의 해쉬 값(h1')을 생성한다. 이어서, 디바이스(120)는 앞서 사전 검증 동작을 위해서 제공된 서명서(Sign)을 참조하여 해쉬 값(h1')의 유효성을 검출할 것이다. 사후 검증 동작에 의해서 불휘발성 메모리(126)에 저장된 펌웨어 이미지(FW_imageN)에 대한 무결성 검증 및 서명 인증이 수행될 수 있다. 사후 검증 동작에 의해서 펌웨어 이미지(FW_imageN)가 디바이스(120)에 전송되는 과정이나, 불휘발성 메모리(126)에 저장되는 과정에서 발생하는 에러 유무가 검출될 수 있다. 따라서, 디바이스(120)는 사후 검증 동작에 의해서 펌웨어 이미지에 문제가 발생하면, 호스트(110)로 재전송을 요청할 수 있다.
이상에서는, 펌웨어 이미지(FW_imageN)에 대한 무결성 검증을 이중으로 실시할 수 있는 모바일 시스템(100)의 구성 및 동작이 간략히 설명되었다. 불휘발성 메모리(126)에 저장되기 전에 펌웨어 이미지(FW_imageN)에 대한 무결성 검증이 일차적으로 수행되기 때문에, 펌웨어 이미지(FW_imageN)에 문제가 있을 경우, 이전 버전의 펌웨어 이미지(FW_imageO)로의 복구가 상대적으로 용이하다. 더불어, 이전 펌웨어 이미지(FW_imageO)에 대한 롤백(Roll-back)과 같은 동작이 불필요하기 때문에 업데이트를 위해서 추가로 불휘발성 메모리(126)의 용량이 확보될 필요도 없다. 따라서, 디바이스(120)에서 상대적으로 큰 면적과 비용을 차지하는 불휘발성 메모리(136)의 용량을 획기적으로 줄일 수 있다. 더불어, 본 발명의 모바일 시스템(100)은 업데이트될 펌웨어에 대한 이중적인 무결성 검증과 서명 인증을 수행할 수 있다. 따라서, 본 발명의 모바일 시스템(100)은 펌웨어를 활용하는 보안 공격에 대해서 높은 방어 능력을 제공할 수 있다.
도 2는 도 1의 호스트(110)의 구성을 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 호스트(110)는 CPU(Central Processing Unit, 112), 디램(114), 저장 장치(116), 디바이스 인터페이스(118)를 포함할 수 있다. 이들 각각의 구성은 시스템 인터커넥터(119)에 의해서 전기적으로 연결될 수 있다.
CPU(112)는 호스트(110)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. CPU(112)는 디램(114)에 로드되는 운영 체제(OS)를 실행할 것이다. CPU(112)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 것이다. CPU(112)는 특히, 디램(114)에 로드되는 해쉬 알고리즘(115)을 실행할 수 있다. 펌웨어의 업데이트 동작시에, 해쉬 알고리즘(115)의 실행에 의해서 CPU(112)는 펌웨어 이미지(117b)에 대한 해쉬 값(또는, 해쉬 코드)을 생성할 수 있다. CPU(112)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다.
디램(114)에는 CPU(112)의 동작 메모리로 제공될 수 있다. 디램(114)에는 해쉬 알고리즘(115)이 로드될 수 있다. 더불어, 디램(114)에는 부팅시에 운영 체제(OS)나 기본 응용 프로그램들이 로드될 것이다. 예를 들면, 모바일 시스템(100)의 부팅시에 저장 장치(116)에 저장된 OS 이미지가 부팅 시퀀스에 의거하여 디램(114)에 로드된다. 운영 체제(OS)에 의해서 모바일 시스템(100)의 제반 입출력 동작들이 지원될 수 있다. 마찬가지로, 사용자의 의하여 선택되거나 기본적인 서비스 제공을 위해서 응용 프로그램들이 디램(114)에 로드될 수 있다. 더불어, 디램(114)에는 저장 장치(116)에 다운로드된 펌웨어 이미지(117b)가 디바이스(120)로 전송되기 위해서 로드될 수 있을 것이다.
저장 장치(116)는 모바일 시스템(100)의 불휘발성 저장 매체(Non-volatile storage medium)로서 제공된다. 저장 장치(116)에는 서명서(117a, Sign)가 저장될 수 있다. 저장 장치(116)에는 업데이트할 디바이스(120)의 펌웨어 이미지(FW_imageN, 117b)가 저장될 수 있다. 특히, 이전 버전의 펌웨어 이미지(FW_imageO)와 교체될 새로운 펌웨어 이미지(FW_imageN, 117b)가 저장될 것이다. 서명서(117a) 및 새로운 펌웨어 이미지(117b)는 호스트(110)에 의해서 업데이트 서버(미도시)로부터 다운로드된 파일일 수 있다. 저장 장치(116)는 응용 프로그램들, 운영 체제 이미지(OS Image) 및 각종 사용자 데이터를 저장할 수 있다. 저장 장치(116)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(116)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(116)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다.
디바이스 인터페이스(118)는 CPU(112)의 요청에 따라 디바이스(120)에 액세스한다. 즉, 디바이스 인터페이스(118)는 호스트(110)와 디바이스(120) 사이의 인터페이스를 제공한다. 예를 들면, CPU(112)에 의해서 처리된 데이터가 디바이스 인터페이스(118)를 통해 디바이스(120)에 저장된다. 다른 예로써, 디바이스(120)에 의해서 처리된 데이터는 디바이스 인터페이스(118)를 통해 CPU(112)에 제공된다.
시스템 인터커넥터(119)는 호스트(110)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(119)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 디램(114)이나 저장 장치(116)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IP) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IP) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(119)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
이상의 설명에 따르면, 호스트(110)는 디바이스(120)에 대한 펌웨어 업데이트를 수행하기 위한 해쉬 값 생성 기능을 포함한다. 이러한 기능을 위해서 해쉬 알고리즘(115)이 예시적으로 설명되었다. 호스트(110)는 펌웨어 업데이트 동작시에, 먼저 펌웨어 이미지(117b)에 대한 해쉬 연산을 수행하고, 그 결과값인 해쉬 값(h1)을 서명서(Sign)와 함께 디바이스(120)로 전송한다. 호스트(110)는 디바이스(120)에서 해쉬 값(h1)과 서명서(Sign)만으로 수행되는 사전 검증 동작(Pre-verify operation)의 결과를 제공받는다. 호스트(110)는 사전 검증 동작의 결과에 따라 펌웨어 이미지(117b)를 디바이스(120)로 전송할 것이다.
도 3은 도 2의 호스트(110)에서 수행되는 펌웨어 업데이트 방법을 간략히 보여주는 순서도이다. 도 2 및 도 3을 참조하면, 호스트(110)는 디바이스(120)에서 수행되는 사전 검증 동작(Pre-verify operation)을 위한 해쉬 값(h1)과 서명서(Sign)만을 전송한다. 그리고 호스트(110)는 사전 검증 동작의 결과에 따라 펌웨어 이미지(FW_imageN)의 전송 여부를 결정할 것이다. 여기서, 호스트(110)에 의한 펌웨어 버전 정보 체크와, 업데이트 서버로부터 서명서(Sign)와 새로운 펌웨어 이미지(FW_imageN)의 다운로드가 완료된 상태라 가정하기로 한다.
S110 단계에서, 호스트(110)는 해쉬 알고리즘(115)에 의해서 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1)을 생성할 것이다. 호스트(110)는 해쉬 알고리즘(115)을 통해서 새로운 펌웨어 이미지(FW_imageN)로부터 해쉬 값(h1)을 생성할 것이다. 해쉬 알고리즘(115)에 의해서 생성된 해쉬 값(h1)의 데이터 사이즈는 새로운 펌웨어 이미지(FW_imageN)에 비해서 지극히 작다.
S120 단계에서, 호스트(110)는 펌웨어 이미지(FW_imageN)로부터 생성된 해쉬 값(h1)과 서명서(Sign)를 디바이스(120)로 전송한다. 새로운 펌웨어 이미지(FW_imageN)의 전송은 디바이스(120)로부터 해쉬 값(h1)과 서명서(Sign)만을 이용하는 사전 검증 동작(Pre-verify operation)의 결과에 따라 수행될 것이다.
S130 단계에서, 호스트(110)는 디바이스(120)로부터 새로운 펌웨어 이미지(FW_imageN)에 대한 검증 결과를 수신한다. 디바이스(120)는 해쉬 값(h1)과 서명서(Sign)만을 사용하여 새로운 펌웨어 이미지(FW_imageN)의 무결성 검증 및 서명 인증을 수행할 것이다. 이러한 무결성 검증 및 서명 인증 과정을 통해서 디바이스(120)는 새로운 펌웨어 이미지(FW_imageN)에 에러 존재 여부와 보안성 체크를 수행할 수 있다. 디바이스(120)는 해쉬 값(h1)과 서명서(Sign)를 사용한 사전 검증 동작의 결과를 호스트(110)로 전송할 것이다. 호스트(110)는 디바이스(120)로부터 제공되는 사전 검증 동작의 결과가 검증 패스인지 검증 페일(또는, 유효인지 무효)인지를 확인할 수 있다.
S140 단계에서, 호스트(110)는 사전 검증 동작 결과에 따라 동작 분기를 수행한다. 만일, 사전 검증 동작이 검증 페일(Fail)로 결정되면(No 방향), 절차는 S110 단계로 복귀할 것이다. 반면, 사전 검증 동작이 검증 패스(Pass)로 결정되면(Yes 방향), 절차는 S150 단계로 이동한다.
S150 단계에서, 호스트(110)는 해쉬 값(h1)과 서명서(Sign)를 통해서 무결성 및 서명 인증이 일차적으로 완료된 새로운 펌웨어 이미지(FW_imageN)를 디바이스(120)로 전송할 것이다. 더불어, 호스트(110)는 디바이스(120)에서 수행되는 사후 검증 동작(Post-verify operation)에서 새로운 펌웨어 이미지(FW_imageN)에 에러가 존재하는 것으로 판정되면, 새로운 펌웨어 이미지(FW_imageN)를 디바이스(120)로 재전송할 수 있다.
이상의 호스트(110)의 펌웨어 업데이트 동작에 따르면, 호스트(110)는 다운로드된 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1) 및 서명서(Sign)를 디바이스(120)로 전달한다. 그리면, 디바이스(120)에서 해쉬 값(h1) 및 서명서(Sign)만으로 펌웨어 이미지(FW_imageN)에 대한 무결성 검증 및 서명 인증이 수행된다. 이러한 기능이 디바이스(120)에서 수행되는 펌웨어 이미지에 대한 사전 검증 동작이라 정의하였다. 호스트(110)는 디바이스(120)로부터 사전 검증 동작의 결과를 통보받고, 그 결과에 따라 펌웨어 이미지(FW_imageN)를 디바이스(120)로 전달할 것이다.
도 4는 본 발명의 디바이스(120)에 대한 예를 보여주는 블록도이다. 도 4를 참조하면, 디바이스(120)는 CPU(122), 워킹 메모리(124), 불휘발성 메모리(126), 보안 메모리(127) 그리고 호스트 인터페이스(128)를 포함할 수 있다. 디바이스(120)는 상술한 구성들을 통해서 펌웨어 이미지에 대한 사전 검증 동작 및 사후 검증 동작을 수행할 수 있다.
CPU(122)는 워킹 메모리워킹 메모리(124)에 로드되는 해쉬 알고리즘(124a) 및 서명 알고리즘(124b)을 실행한다. CPU(122)는 호스트(110)로부터 제공되는 해쉬 값(h1)과 서명서(Sign)를 참조하여 사전 검증 동작을 수행할 것이다. 사전 검증 동작은 서명 알고리즘(124b)에 의해서 수행될 것이다. 더불어, CPU(122)는 호스트(110)로부터 제공되는 새로운 펌웨어 이미지(FW_imageN)에 대한 사후 검증 동작(Post-verify operation)을 수행한다. 즉, 사전 검증 동작에 의해서 무결성 검증과 서명 인증이 완료되어 검증 패스로 판정되면, 호스트(110)로부터 새로운 펌웨어 이미지(FW_imageN)가 전달된다. 그러면, 디바이스(120)는 새로운 펌웨어 이미지(FW_imageN)를 불휘발성 메모리(126)에 저장할 것이다.
새로운 펌웨어 이미지(FW_imageN)가 불휘발성 메모리(126)에 저장되면, CPU(122)는 새로운 펌웨어 이미지(FW_imageN)에 대한 사후 검증 동작을 수행한다. 사후 검증 동작을 위해서는 해쉬 알고리즘(124a)이 다시 사용된다. 즉, CPU(122)는 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1')을 계산한다. 그리고 CPU(122)는 해쉬 값(h1')과 사전 검증 동작시 제공된 해쉬 값(h1)을 비교할 것이다. 만일, 호스트(110)로부터 제공받은 해쉬 값(h1과 해쉬 알고리즘(124a)에 의한 해쉬 값(h1')이 동일한 경우, 사후 검증 동작은 패스로 판정될 수 있다. 즉, 새로운 펌웨어 이미지(FW_imageN)에 대한 무결성과 서명의 유효성이 보장됨을 의미한다.
워킹 메모리워킹 메모리(124)는 디바이스(120)의 동작 메모리로 사용될 수 있다. 즉, 워킹 메모리(124)에는 펌웨어 업데이트를 위한 디바이스(120)측 검증 연산을 위한 알고리즘들이 로드될 수 있다. 사전 및 사후 검증 동작을 위해서 사용되는 서명 알고리즘(124b)과 사후 검증 동작에서만 사용되는 해쉬 알고리즘(124a)이 워킹 메모리(124)에 로드된다. 더불어 워킹 메모리(122)에는 사전 및 사후 검증 동작에 필요한 공개키(Y)가 저장될 수도 있다. 워킹 메모리(122)는 예를 들면 DRAM 이나 SRAM과 같은 코드 메모리일 수 있다. 하지만, 해쉬 알고리즘(124a) 또는 서명 알고리즘(124b)은 롬(ROM)이나 XIP(eXecution In Place)를 지원하는 불휘발성 메모리에서 실행될 수도 있음은 잘 이해될 것이다.
불휘발성 메모리(126)는 펌웨어 이미지가 저장된다. 특히, 불휘발성 메모리(126)는 디바이스(120)의 펌웨어 메모리로 사용될 수 있다. 불휘발성 메모리(126)에 펌웨어가 저장되고, 업데이트될 수 있다. 불휘발성 메모리(126)에 펌웨어가 프로그램되고, 프로그램된 펌웨어를 통해서 디바이스(120)가 구동되도록 설정되면 펌웨어 업데이트가 완료된다. 본 발명의 펌웨어 업데이트 방식을 사용하는 경우, 불휘발성 메모리(126)는 이전 버전의 펌웨어 이미지에 대한 롤백(Roll-back)을 수행하지 않아도 된다. 따라서, 불휘발성 메모리(126)의 용량은 새로운 펌웨어 이미지(FW_imageN)를 수용할 수 있으면 충분하다.
본 발명의 펌웨어 업데이트 방법을 적용하는 경우, 디바이스(120)에 구비되어야 할 불휘발성 메모리(126)의 용량은 획기적으로 감소할 것으로 기대된다. 이러한 불휘발성 메모리(126)의 메모리 요구량 감소는 특정 기능을 모바일 시스템(100)에 제공하는 디바이스(120)의 생산 비용 감소에 절대적이다.
보안 스토리지(127)는 공개키(127a, Key)를 저장하기 위한 메모리이다. 서명 알고리즘(124b)의 실행시에 사용되는 공개키(127a, Key)는 외부의 접속에 대해서 보안 기능이 제공되어야 한다. 따라서, 공개키(127a, Key)는 외부에 의해서 자유롭게 접근되기 어려운 보안 기능을 갖는 보안 스토리지(127)에 저장될 수 있을 것이다.
호스트 인터페이스(128)는 디바이스(120)에 호스트(110)와 데이터를 교환하기 위한 채널을 제공한다. 그리고 시스템 버스(129)는 디바이스(120)에 포함되는 제반 구성들 간의 통신 채널을 제공한다.
이상에서 CPU(122) 기반의 해쉬 알고리즘(124a)과 서명 알고리즘(124b)을 수행하는 디바이스(120)의 예가 간략히 설명되었다. 본 발명의 디바이스(120)는 2중의 검증 동작을 수행함으로써, 펌웨어 이미지의 무결성 검증 및 서명 인증을 수행할 수 있다. 더불어, 이러한 이중의 검증 동작을 통해서 펌웨어 업데이트를 위해서 요구되는 불휘발성 메모리 용량을 획기적으로 줄일 수 있다.
도 5는 도 4의 디바이스(120)에서 수행하는 펌웨어 업데이트 방법을 간략히 보여주는 순서도이다. 도 5를 참조하여, 디바이스(120)에서 수행되는 사전 검증 동작과 사후 검증 동작을 포함하는 펌웨어 무결성 검증 및 서명 인증 동작이 설명될 것이다. 호스트(110)로부터 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1)과 서명서(Sign)가 제공되면, 디바이스(120)는 사전 검증 동작(Pre-Verify Operation)을 시작한다.
S210 단계는 사전 검증 동작(Pre-verify operation)을 나타낸다. 사전 검증 동작을 보여주는 S210 단계는 3개의 단계들로 세분화될 수 있다. S210 단계는, 해쉬 값(h1)과 서명서(Sign)를 수신하는 S212 단계, 공개키(Key)를 사용한 무결성 검증 및 서명서(Sign)의 인증을 수행하는 S214 단계, 그리고 검증 결과에 따른 동작 분기를 수행하는 S216 단계를 포함한다.
S212 단계에서, 디바이스(120)는 호스트(110)로부터 해쉬 값(h1)과 서명서(Sign)를 수신한다. 수신된 해쉬 값(h1)과 서명서(Sign)는 디바이스(120)에 구비되는 워킹 메모리워킹 메모리(124)에 저장될 것이다.
S214 단계에서, 디바이스(120)는 해쉬 값(h1)과 서명서(Sign)를 사용하는 사전 검증 동작을 수행할 것이다. 사전 검증 동작을 위해서, 먼저 서명서(Sign)에 대한 인증 연산이 수행될 것이다. 서명서(Sign)는 디바이스(120)에서 구비된 서명 인증을 위한 공개키(Key)를 통해서 해독될 수 있다. 즉, 서명서(Sign)는 공개키(Key)를 사용하는 서명 알고리즘에 의해서 해쉬 값(h1')으로 출력된다. 그리고 호스트(110)로부터 수신된 해쉬 값(h1)과 서명 알고리즘에 의해서 서명서(Sign)로부터 해독된 해쉬 값(h1')의 비교를 통해서 검증이 수행된다.
S216 단계에서, 호스트(110)로부터 수신된 해쉬 값(h1)과 공개키 연산에 의해서 서명서(Sign)로부터 해독된 해쉬 값(h1')이 동일한 경우에는 검증 패스(Verify pass)로 결정된다. 즉, 호스트(110)에서 수신한 새로운 펌웨어 이미지(FW_imageN)의 무결성 및 서명이 유효(Valid)한 것으로 판단한다. 그러면, 절차는 S220으로 이동할 것이다. 반면, 수신된 해쉬 값(h1)과 서명 알고리즘에 의해서 서명서(Sign)로부터 해독된 해쉬 값(h1')이 동일하지 않은 경우, 검증 페일(Verify fail)로 결정된다. 즉, 호스트(110)에서 수신한 새로운 펌웨어 이미지(FW_imageN)의 무결성 또는 서명이 무효(Invalid)한 것으로 판단한다. 그러면, 절차는 S270으로 이동할 것이다.
S220 단계에서, 디바이스(120)는 호스트(110)로 검증 패스 메시지를 전송할 것이다. 또는, 디바이스(120)는 호스트(110)로 새로운 펌웨어 이미지(FW_imageN)의 전송을 요청할 수 있다. 그러면, 호스트(110)는 저장 장치(116)에 저장된 새로운 펌웨어 이미지(FW_imageN)를 디램(114)에 로드하고, 디바이스(120)로 전송을 시작할 것이다. 새로운 펌웨어 이미지(FW_imageN)는 상대적으로 데이터 사이즈가 크기 때문에, 복수의 트랜잭션에 따라 디바이스(120)로 전달될 수 있다.
S230 단계에서, 디바이스(120)는 호스트(110)로부터 전송되는 새로운 펌웨어 이미지(FW_imageN)를 불휘발성 메모리(126)에 저장할 것이다. 불휘발성 메모리(126)에는 이전 버전의 펌웨어 이미지(FW_imageO)가 저장되어 있었기 때문에, 디바이스(120)는 불휘발성 메모리(126)를 소거하여 이전의 펌웨어 이미지(FW_imageO)를 폐기할 것이다. 그리고 디바이스(120)는 새로운 펌웨어 이미지(FW_imageN)를 불휘발성 메모리(126)에 프로그램할 것이다. 즉, 디바이스(120)가 새로운 펌웨어 이미지(FW_imageN)를 전달받았다는 것은 이전 버전의 펌웨어 이미지(FW_imageO)를 폐기했다는 의미가 된다.
S240 단계에서, 디바이스(120)는 사후 검증 동작(Post-verify operation)을 수행한다. 사후 검증 동작을 보여주는 S240 단계는 3개의 단계들로 세분화될 수 있다. 즉, S240 단계는 불휘발성 메모리(126)에 저장된 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1')을 생성하는 S242 단계, 디바이스(120)에서 생성한 해쉬 값(h1')으로부터 새로운 펌웨어 이미지(FW_imageN)에 대한 무결성 검증 및 서명 인증을 수행하는 S244 단계, 그리고 검증 결과에 따른 동작 분기를 수행하는 S246 단계를 포함한다.
구체적으로 S242 단계에서, 디바이스(120)의 CPU(122)는 해쉬 알고리즘(124a)에 따라 불휘발성 메모리(126)에 저장된 새로운 펌웨어 이미지(FW_imageN)를 처리한다. 해쉬 알고리즘(124a)에 의해서 메시지 비트열에 대응하는 새로운 펌웨어 이미지(FW_imageN)는 해쉬 값(h1')으로 출력된다. 해쉬 알고리즘(124a)의 실행에는 공개키(Key)는 사용되지 않는다.
S244 단계에서, 불휘발성 메모리(126)에 저장된 새로운 펌웨어 이미지(FW_imageN)에 대한 실질적인 검증 동작이 실시된다. 해쉬 알고리즘(124a)의 실행에 의해서 생성된 해쉬 값(h1')과 호스트(110)로부터 제공된 해쉬 값(h1)을 비교하는 것으로 검증 동작이 수행될 수 있다.S246 단계에서, 호스트(110)로부터 전달받은 해쉬 값(h1)과 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 알고리즘(124a)의 실행에 의해서 생성된 해쉬 값(h1')의 일치 여부에 따라 동작 분기가 발생한다. 만일, 해쉬 값(h1)과 해쉬 값(h1')이 동일하면, 검증 패스(Verify pass)로 결정될 것이다. 그러면 절차는 S250 단계로 이동한다. 반면, 해쉬 값(h1)과 해쉬 값(h1')이 일치하지 않으면, 검증 페일(Verify fail)로 결정될 것이다. 그러면 절차는 S270 단계로 이동한다.
S250 단계에서, 새로운 펌웨어 이미지(FW_imageN)에 대한 무결성 검증이 유효한 것으로 검출되었기 때문에, 불휘발성 메모리(126)에 저장된 펌웨어에 의해서 디바이스(120)가 동작하도록 설정할 것이다.
S260 단계에서, 디바이스(120)는 호스트(110)가 전송한 새로운 펌웨어 이미지(FW_imageN)에 대한 무결성이 유효함을 알리는 검증 패스 매시지(Verify pass message)를 호스트(110)로 전송할 것이다. 호스트(110)는 검증 패스 매시지(Verify pass message)를 확인하고 호스트(110) 측에서 수행하는 제반 펌웨어 업데이트 동작을 종료할 것이다.
S270 단계에서, 디바이스(120)는 검증 페일 메시지(Verify fail message)를 호스트(110) 측으로 전달할 것이다. 만일, 호스트(110)는 사전 검증 동작(Pre-verify operation)에 대한 검증 페일 메시지(Verify fail message)를 전송받는 경우, 새로운 해쉬 값(h1)과 서명서(Sign)를 디바이스(120)로 전달할 것이다. 반면, 호스트(110)는 사후 검증 동작(Post-verify operation)에 대한 검증 페일 메시지(Verify fail message)를 전송받는 경우, 펌웨어 이미지(FW_imageN)를 디바이스(120)로 전송할 것이다.
이상에서는 펌웨어 업데이트 동작시에 디바이스(120)에서 수행되는 다양한 처리 과정이 설명되었다. 디바이스(120)는 호스트(110)로부터 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1)과 서명서(Sign)를 참조하여 무결성 검증 및 서명 인증을 위한 사전 검증 동작(S210 단계에 대응)을 수행할 수 있다. 더불어, 디바이스(120)는 호스트(110)로부터 새로운 펌웨어 이미지(FW_imageN)를 전송받아 무결성 검증을 위한 사후 검증 동작(S240 단계에 대응)을 수행할 수 있다. 사전 검증 동작에서 검증 페일 메시지가 호스트(110)에 제공되면, 호스트(110)는 새로운 펌웨어 이미지를 업데이트 서버로부터 다운로드하여 펌웨어 업데이트 동작을 시작할 수 있다. 반면, 사후 검증 동작에서 검증 페일 메시지가 호스트(110)에 전달되면, 호스트(110)에 보관된 새로운 펌웨어 이미지(FW_imageN)를 디바이스(120)로 재전송할 것이다. 이러한 이중적인 무결성 및 서명 검증 동작에 의해서, 펌웨어 업데이트 동작시에 펌웨어 이미지의 롤백을 위한 메모리 영역에 대한 요구를 줄일 수 있다. 따라서, 디바이스(120)에 구비되어야 할 불휘발성 메모리(126)의 사이즈를 획기적으로 줄일 수 있다.
도 6 및 도 7은 각각 사전 검증 동작과 사후 검증 동작을 보여주는 블록도들이다. 도 6을 참조하면, 호스트(110)에서 전송된 해쉬 값(h1)과 서명서(Sign)에 대해서 디바이스(120)는 사전 검증 동작을 실행한다.
사전 검증 동작에서는 서명 알고리즘에 의한 서명서 인증이 우선적으로 수행된다. 이러한 단계는 S10으로 도시되었다. 즉, 서명서(Sign)가 디바이스(120)에 제공되면, CPU(122)는 공개키(Key)를 사용하여 서명 연산(Signature operation)을 수행할 것이다. 그러면, 서명서(Sign)에 대한 복호 처리가 이루어진다. 서명서(Sign)의 복호에 필요한 공개키(Key)는 디바이스(120)의 불휘발성 메모리(126) 또는 워킹 메모리워킹 메모리(124)의 특정 영역에 보관 및 유지되는 값이다. 서명 알고리즘을 통한 서명서(Sign)에 대한 복호를 통해서 해쉬 값(h1')이 생성된다.
해쉬 값(h1')의 생성에 이어서, S20 단계에서는 해쉬 값(h1, h1')들의 비교 동작이 수행된다. 해쉬 값(h1)은 호스트(110)의 해쉬 알고리즘에 의해서 생성된 해쉬 코드이다. 그리고 해쉬 값(h1')은 호스트(110)로부터 전달된 서명서(Sign)를 디바이스(120)에서 복호하여 생성된 해쉬 코드이다. 두 해쉬 값들(h1, h1')이 일치하는 경우, 사전 검증 동작은 검증 패스(Pass) 또는 유효(Valid)로 결정될 것이다. 만일, 두 해쉬 값들(h1, h1')이 불일치하는 경우, 사전 검증 동작은 검증 페일(Fail) 또는 무효(Invalid)로 결정될 것이다.
도 7을 참조하면, 디바이스(120)에서 수행되는 사후 검증 동작이 간략히 도시되어 있다. 사후 검증 동작은, 해쉬 알고리즘에 따라 디바이스(120)에 저장된 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1')을 생성하는 단계(S30)와 해쉬 값들(h1, h1')을 비교하는 단계(S40)로 구분될 수 있다.
해쉬 값(h1')을 생성하는 S30 단계에서, 디바이스(120)의 CPU(122)는 불휘발성 메모리(126)에 저장된 새로운 펌웨어 이미지(FW_imageN)로부터 해쉬 값(h1')을 생성한다. 해쉬 알고리즘(124a)의 실행에는 공개키(Key)는 사용되지 않는다.
S40 단계에서, 해쉬 값들(h1, h1')의 일치 여부를 결정하기 위한 비교 동작이 수행된다. 만일, 해쉬 값들(h1, h1')이 일치하는 경우, 사후 검증의 결과는 검증 패스(Pass) 또는 유효(Valid)로 출력될 것이다. 해쉬 값들(h1, h1')이 불일치하는 경우, 사후 검증의 결과는 검증 페일(Fail) 또는 무효(Invalid)로 출력될 것이다. 즉, 불휘발성 메모리(126)에 저장된 새로운 펌웨어 이미지(FW_imageN)의 무결성에 문제가 있다는 의미이다.
이상의 도 6 내재 도 7을 통해서 디바이스(120)에서 수행되는 사전 검증 동작과 사후 검증 동작 절차가 간략히 설명되었다. 사전 검증 동작은 새로운 펌웨어 이미지(FW_imageN)의 전달없이 해쉬 값(h1)과 서명서(Sign)를 사용한 공개키 연산에 의해서 이루어진다. 사전 검증 동작에서 무결성 검증과 서명 인증이 완료된 경우에만 새로운 펌웨어 이미지(FW_imageN)가 디바이스(120)의 불휘발성 메모리(126)에 저장된다. 더불어, 펌웨어 이미지(FW_imageN)가 디바이스(120)의 불휘발성 메모리(126)에 저장된 이후에는 해쉬 연산을 동반하는 사후 검증 동작이 실시된다. 사후 검증 동작에서는 펌웨어 이미지(FW_imageN)에 대한 해쉬 연산이 실시된다. 이러한 펌웨어 이미지에 대한 무결성 검증과 서명 인증이 이중으로 수행됨으로써, 실질적으로 디바이스(120)에 프로그램되는 펌웨어 이미지에 대한 무결성을 강화할 수 있다. 더불어, 이중의 검증 절차를 사용하여 펌웨어 이미지에 대한 보안 강화 효과를 기대할 수 있을 것이다. 게다가, 이러한 사전 검증 동작에 의해서 새로운 펌웨어 이미지(FW_imageN)의 디바이스(120)로의 전달없이 무결성 및 서명 인증을 수행할 수 있기 때문에, 펌웨어 메모리로 사용되는 불휘발성 메모리(126)의 용량 부담을 줄일 수 있다.
도 8은 본 발명의 모바일 시스템에서 호스트(110)와 디바이스(120)의 펌웨어 업데이트를 위한 상호 동작들을 보여주는 도면이다. 도 8을 참조하면, 호스트(110)와 디바이스(120)는 펌웨어 업데이트를 위해서 처리될 펌웨어에 대한 무결성 검증 및 서명 인증을 분담해서 처리한다. 펌웨어를 업데이트하기 위해서 호스트(110)가 서명서(Sign) 및 펌웨어 이미지(FW_imageN)를 업데이트 서버(미도시됨)로부터 다운로드하면, 본 발명의 실시 예에 의한 펌웨어 업데이트 절차가 시작된다.
S310 단계에서, 호스트(110)는 해쉬 알고리즘을 구동하여 업데이트할 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1)을 계산한다. 호스트(110)는 해쉬 알고리즘에 의해서 생성된 해쉬 값(h1)과 다운로드된 서명서(Sign)를 디바이스(120)로 전송한다. 그러면, 디바이스(120)는 사전 검증(Pre-verify) 동작을 수행할 것이다.
S320 단계는 디바이스(120)의 사전 검증 동작의 수행 결과를 보여주는 절차이다. 도시되지는 않았지만, 디바이스(120)는 호스트(110)로부터 전달되는 해쉬 값(h1)과 서명서(Sign)를 이용하는 사전 검증 동작을 수행할 것이다. 즉, 디바이스(120)는 서명서(Sign)에 대한 공개키(Key)를 사용한 인증 연산을 수행할 것이다. 그러면, 인증 연산의 결과로 복호된 해쉬 값(h1')이 생성된다. 복호된 해쉬 값(h1')과 호스트(110)에서 전송된 해쉬 값(h1)의 비교에 의해서 사전 검증 결과가 결정된다. 복호된 해쉬 값(h1')과 호스트(110)에서 전송된 해쉬 값(h1)이 일치하는 경우, 디바이스(120)는 호스트(110)에 패스 메시지(Pass message)를 전송할 것이다. 반면, 복호된 해쉬 값(h1')과 호스트(110)에서 전송된 해쉬 값(h1)이 불일치하는 경우, 디바이스(120)는 호스트(110)에 페일 메시지(Fail message)를 전송할 것이다.
호스트(110)는 디바이스(120)로부터의 사전 검증 결과를 참조하여 동작 분기를 실시한다. 이러한 절차는 S330 단계로 도시하였다. 즉, S330 단계에서 호스트(110)는 디바이스(120)로부터 전달되는 사전 검증 결과에 따라 해쉬 값(h1)과 서명서(Sign)를 보낼지, 또는 새로운 펌웨어 이미지(FW_imageN)를 전송할지 결정한다. 만일, 호스트(110)가 디바이스(120)로부터 페일 메시지(Fail message)를 수신하는 경우, 호스트(110)는 펌웨어 이미지(FW_imageN)로부터 해쉬 값(h1)을 생성하는 절차를 반복해야 할 것이다. 또는, 도시되지는 않았지만, 호스트(110)는 업데이트 서버에 펌웨어 이미지와 서명서(Sign)를 다시 요청하고, 재전송된 펌웨어 이미지(FW_imageN)로부터 해쉬 값(h1)을 생성하는 절차를 반복할 수도 있을 것이다. 반면, 디바이스(120)로부터 패스 메시지(Pass message)를 수신하는 경우, 호스트(110)는 펌웨어 이미지(FW_imageN)를 디바이스(120)로 전송할 것이다.
호스트(110)로부터의 펌웨어 이미지(FW_imageN)가 전달되면, 디바이스(120)는 사후 검증 동작(Post-verify)을 수행한다. 이러한 동작은 S340 단계로 표시하였다. 디바이스(120)는 불휘발성 메모리(126, 도 4 참조)에 저장된 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1')을 생성할 것이다. 그리고 디바이스(120)는 생성된 해쉬 값(h1')과 사전 검증 동작시에 수신된 해쉬 값(h1)을 비교한다. 그리고 디바이스(120)는 해쉬 값들(h1, h1')의 비교 결과를 참조하여 후속 동작을 수행한다.
해쉬 값들(h1, h1')이 불일치하는 경우, 디바이스(120)는 호스트(110)로 페일 메시지(Fail message)를 전송할 것이다. 호스트(110)는 디바이스(120)로부터 사후 검증 결과에 대한 페일 메시지(Fail message)를 수신하면, 펌웨어 이미지(FW_imageN)가 호스트(110)로부터 불휘발성 메모리(126)에 프로그램되는 과정에서 에러가 발생한 것으로 판단할 것이다. 따라서, 호스트(110)는 펌웨어 이미지(FW_imageN)를 디바이스(120)로 재전송하게 될 것이다.
반면, 디바이스(120)의 사후 검증 동작에서 해쉬 값들(h1, h1')이 일치하는 경우, 디바이스(120)는 내부의 불휘발성 메모리(126)에 저장된 펌웨어 이미지(FW_imageN)에 의해서 디바이스(120)가 동작하도록 설정할 것이다. 이러한 설정 동작은 S350으로 표시하였다. 이어서, 디바이스(120)는 호스트(110)로 패스 메시지(Pass message)를 전송할 것이다.
호스트(110)가 디바이스(120)로부터 사후 검증 동작에 대한 패스 메시지(Pass message)를 전달받으면, 디바이스(120)의 펌웨어 이미지에 대한 업데이트 동작은 종료된다.
이상에서는 호스트(110)와 디바이스(120)의 상호적인 업데이트 동작이 설명되었다. 호스트(110)는 해쉬 알고리즘을 수행하여 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1)과 서명서(Sign)를 먼저 전송한다. 디바이스(120)는 해쉬 값(h1)과 서명서(Sign)를 참조한 사전 검증 동작을 수행하여 새로운 펌웨어 이미지(FW_imageN)에 대한 무결성 검증 및 서명 인증을 수행할 수 있다. 호스트(110)는 사전 검증에 의해서 인증된 새로운 펌웨어 이미지(FW_imageN)를 디바이스(120)로 전송한다. 그러면, 디바이스(120)는 호스트(110)로부터 전달된 펌웨어 이미지(FW_imageN)에 대한 사후 검증 동작을 실시한다. 사후 검증을 통해서 검증 실패한 펌웨어 이미지(FW_imageN)는 폐기되고 재전송 요청될 것이다.
이러한 사전 검증 동작 및 사후 검증 동작을 통해서 디바이스(120)의 펌웨어가 업데이트될 때, 이전 버전의 펌웨어 이미지(FW_imageO)를 롤백할 필요가 없어진다. 즉, 사전 검증 동작에서는 해쉬 값(h1)과 서명서(Sign)만이 디바이스(120)로 전달되어도 새로운 펌웨어 이미지(FW_imageN)에 대한 무결성 검증 및 서명 인증이 가능하기 때문이다. 따라서, 별도의 롤백을 위한 불휘발성 메모리 용량 확보가 불필요하기 때문에 디바이스(120)의 생산 비용을 현저하게 감축할 수 있을 것으로 기대된다.
도 9는 본 발명의 다른 실시 예에 따른 디바이스(120a)를 보여주는 블록도이다. 도 9를 참조하면, 디바이스(120a)는 서명 인증 또는 해쉬 연산을 수행하는 별도의 검증 IP(123)를 구비한다. 도 4의 디바이스(120)는 CPU 기반의 반도체 장치로 제공되었다. 그러나 동작의 효율성을 제공하기 위하여 별도로 구비되는 검증 IP(123)를 통해서 본 발명의 디바이스(120a)의 펌웨어 업데이트 동작을 지원할 수 있다. 디바이스(120a)는 CPU(121), 검증 IP(123), 워킹 메모리(124), 불휘발성 메모리(126), 보안 스토리지(127), 그리고 호스트 인터페이스(128)를 포함할 수 있다. 여기서, 워킹 메모리(124), 불휘발성 메모리(126), 보안 스토리지(127), 그리고 호스트 인터페이스(128)는 도 4의 그것들과 실질적으로 동일하다. 따라서, 이것들에 대한 자세한 설명은 생략될 것이다.
CPU(121)는 워킹 메모리(124)에 로드되는 다양한 프로그램 코드를 실행할 수 있다. 하지만, CPU(121)는 펌웨어 업데이트를 위해서 수행되는 사전 검증 동작 또는 사후 검증 동작을 위한 해쉬 알고리즘이나 서명 알고리즘을 수행하지 않는다. 펌웨어 업데이트 동작시에 수행되는 해쉬 값 생성, 서명서 복호를 위한 공개키 연산은 별도의 하드웨어로 제공되는 검증 IP(123)에 의해서 수행될 것이다.
검증 IP(123)는 펌웨어 업데이트 동작시에 수행되는 해쉬 알고리즘과 서명 알고리즘을 수행한다. 검증 IP(123)는 호스트(110)로부터의 서명서(Sign) 및 해쉬 값(h1)이 제공되면, CPU(121)의 요청에 따라 사전 검증 동작을 수행할 것이다. 사전 검증 동작은 서명서(Sign)로부터 공개키(Key)를 이용하는 해쉬 값(h1') 생성 연산을 포함한다. 그리고 생성된 해쉬 값(h1')과 호스트(110)로부터 전달된 해쉬 값(h1)을 비교하여 펌웨어의 무결성 검증 및 서명의 유효성을 결정할 것이다. 더불어 검증 IP(123)는 사후 검증 동작을 수행할 수 있다. 호스트(110)로부터 새로운 펌웨어 이미지(FW_imageN)가 전달되어 불휘발성 메모리(126)에 저장되면, 검증 IP(123)는 새로운 펌웨어 이미지(FW_imageN)에 대한 사후 검증 동작을 수행한다. 사후 검증 동작을 위해서는 검증 IP(123)는 새로운 펌웨어 이미지(FW_imageN)에 대한 해쉬 값(h1')을 계산한다. 그리고 검증 IP(123)는 해쉬 값(h1')과 이전에 제공된 해쉬 값(h1')을 비교하여 검증하게 될 것이다. 만일, 서명서(Sign)에 대한 공개키(Key) 연산의 결과로 생성된 해쉬 값(h1')이 해쉬 값(h1)과 동일한 경우, 사후 검증 동작은 검증 패스(Verify pass)로 판정될 수 있다. 즉, 새로운 펌웨어 이미지(FW_imageN)에 대한 무결성이 보장됨을 의미한다. 검증 IP(123)는 해쉬 연산을 수행하기 위한 연산 블록과 서명 연산을 수행하기 위한 연산 블록을 별도로 구비할 수도 있다. 그리고 검증 IP(123)는 복수의 IP들로 구성될 수 있음은 잘 이해될 것이다.
불휘발성 메모리(126)는 이전 버전의 펌웨어 이미지(FW_imageO) 또는 새로운 버전의 펌웨어 이미지(FW_imageN)가 저장될 수 있다. 불휘발성 메모리(126)에 펌웨어가 저장되고 업데이트될 수 있다. 불휘발성 메모리(126)에 펌웨어 이미지가 프로그램되고, 프로그램된 펌웨어 이미지를 통해서 디바이스(120)가 구동되도록 설정되면 펌웨어 업데이트가 완료된다. 만일, 불휘발성 메모리(126)에 새로운 버전의 펌웨어 이미지(FW_imageN)가 프로그램된 이후라 하더라도, 사후 검증 동작에 의해서 검증된 후에라야 활성화 되도록 설정될 것이다. 즉, 사후 검증 동작에 의해서 불휘발성 메모리(126)에 저장된 새로운 펌웨어 이미지(FW_imageN)에 오류가 존재하는 경우, 펌웨어 이미지(FW_imageN)에 대한 재전송이 요청될 것이다.
본 발명의 펌웨어 업데이트 방식을 사용하는 경우, 불휘발성 메모리(126)는 롤백(Roll-back)을 위해 이전 버전의 펌웨어 이미지(FW_imageO)를 백업할 필요가 없다. 따라서, 불휘발성 메모리(126)의 용량은 새로운 펌웨어 이미지(FW_imageN)를 수용할 수 있으면 충분하다. 더불어, 불휘발성 메모리(126)는 공개키와 서명 정보를 저장하기 위한 추가적인 용량을 구비할 수 있을 것이다. 하지만, 이러한 데이터들은 큰 메모리 용량을 요구하지 않는다. 따라서, 본 발명의 펌웨어 업데이트 방법을 적용하는 경우, 디바이스(120)에 구비되어야 할 불휘발성 메모리(126)의 사이즈는 획기적으로 감소할 수 있다. 이러한 불휘발성 메모리(126)의 메모리 요구량 감소는 특정 기능을 모바일 시스템에 제공하는 디바이스(120a)의 생산 비용 감소에 절대적이다.
이상에서 펌웨어 업데이트를 위한 검증 동작을 전담하는 검증 IP(123)를 포함하는 디바이스(120a)의 예가 간략히 설명되었다. 본 발명의 디바이스(120a)는 이중의 검증 동작을 수행함으로써, 펌웨어 이미지의 무결성 검증 및 서명 인증을 수행할 수 있다. 더불어, 이러한 이중 검증 동작을 통해서 펌웨어 업데이트시에 요구되는 불휘발성 메모리 용량을 획기적으로 줄일 수 있다.
도 10은 본 발명의 또 다른 실시 예에 따른 디바이스(120b)를 보여주는 블록도이다. 도 10을 참조하면, 디바이스(120b)는 도 4의 디바이스(120)와 같이 CPU 기반의 반도체 장치로 제공될 것이다. 디바이스(120b)는 CPU(121), 워킹 메모리(124), 불휘발성 메모리(126’), 그리고 호스트 인터페이스(128)를 포함할 수 있다. 여기서, CPU(121), 워킹 메모리(124), 그리고 호스트 인터페이스(128)는 도 4의 그것들과 실질적으로 동일하다. 따라서, 이것들에 대한 자세한 설명은 생략될 것이다.
불휘발성 메모리(126’)는 펌웨어 이미지(126a)와 더불어 공개키(126b, Key)를 저장한다. 즉, 불휘발성 메모리(126’)는 도 4의 불휘발성 메모리(126)의 보안 스토리지(127)와 같은 기능을 수행할 수 있다. 따라서, 불휘발성 메모리(126’)에서 공개키(Key)가 저장되는 메모리 영역은 보안 영역(Secured Region)으로 관리될 수 있을 것이다.
도 11은 본 발명의 또 다른 실시 예에 따른 디바이스(120c)를 보여주는 블록도이다. 도 11을 참조하면, 디바이스(120c)는 도 4의 디바이스(120)와 같이 CPU 기반의 반도체 장치로 제공될 것이다. 하지만, 본 발명의 검증 기능을 수행하는 하드웨어 IP를 별도로 구비될 수 있음은 잘 이해될 것이다. 디바이스(120c)는 CPU(121), XIP가 가능한 불휘발성 메모리(126’), 그리고 호스트 인터페이스(128)를 포함할 수 있다. 여기서, CPU(121)와 호스트 인터페이스(128)는 도 4의 그것들과 실질적으로 동일하다. 따라서, 이것들에 대한 자세한 설명은 생략될 것이다.
불휘발성 메모리(126’)는 보안 기능을 구비하는 불휘발성 소자로 구성될 수 있다. 즉, 불휘발성 메모리(126’)는 XIP 기능이 가능한 불휘발성 메모리로 제공될 수 있다. 이 경우, 불휘발성 메모리(126’)에는 공개키(126b, Key), 펌웨어 이미지(126a), 그리고 해쉬 알고리즘(126c), 서명 알고리즘(126d)이 저장될 수 있다. 특히, 공개키(126b, Key)가 저장되는 영역에 대해서는 보안 설정이 가능해야 할 것이다.
도 12는 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다. 도 12를 참조하면, 본 발명의 실시 예에 따른 휴대용 단말기(1000)는 디스플레이 유닛(1100), 무선 송수신부(1200), 오디오 처리부(1300), NFC 장치(1400), 메모리 시스템(1500), 사용자 인터페이스(1600), 그리고 컨트롤러(1700)를 포함한다.
디스플레이 유닛(1100)은 컨트롤러(1700)의 제어에 따라 제공되는 이미지 정보를 표시한다. 무선 송수신부(1200)는 안테나(1210), 트랜시버(1220), 모뎀(1230)을 포함한다. 오디오 처리부(1300)는 오디오 프로세서(1310), 마이크(1320), 그리고 스피커(1330)를 포함한다.
NFC 장치(1400)는 신용 카드, e-Money, 교통 카드 등 모바일 금융 서비스를 제공하기 위한 기능을 갖는다. NFC 장치(1400)는 모바일 금융에 필요한 개인 정보, 비밀키 등을 저장하는 보안 기능과 근거리 무선 통신을 위한 기능을 포함할 수 있다. NFC 장치(1400)의 펌웨어 업데이트 방법은 앞서 설명된 도 1의 모바일 시스템(100)의 업데이트 방법과 실질적으로 동일하다. 즉, NFC 장치(1400)를 구동하는 펌웨어의 업데이트를 위해서 컨트롤러(1700)에서 해쉬 값(h1)과 서명서(Sign)가 일차적으로 제공된다. 그러면 NFC 장치(1400)는 펌웨어 이미지에 대한 무결성 검증 및 서명 인증을 위한 사전 검증 동작을 수행하고, 그 결과에 따라 펌웨어 이미지를 컨트롤러(1700)에 요청할 것이다. 펌웨어 이미지가 전달되면, NFC 장치(1400)는 펌웨어 이미지로부터 해쉬 값을 생성하는 사후 검증 동작을 수행하여 NFC 장치(1400)에 저장된 펌웨어 이미지에 대한 무결성 검증 및 서명 인증을 수행할 수 있다. 이러한 강화된 보안 기능을 통해서 NFC 장치(1400)는 펌웨어 업데이트 동작시에 이전 버전의 펌웨어를 롤백(Roll-back)할 필요가 없어져 펌웨어를 저장하기 위한 메모리 사이즈를 줄일 수 있다.
메모리 시스템(1500)은 워킹 메모리, 스토리지 메모리 등을 통칭한다. 워킹 메모리로는 모바일 디램(Mobile DRAM)이 사용될 수 있다. 스토리지 메모리로는 불휘발성 메모리가 사용될 것이다. 예시적으로 불휘발성 메모리는 메모리 카드(MMC, eMMC, SD, microSD) 등으로 제공될 수 있다. 컨트롤러(1700)는 응용 프로그램, 운영 체제 등을 구동하는 시스템 온 칩(SoC)으로 제공될 수 있다.
본 발명에 따른 디바이스 또는 호스트는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 반도체 장치는 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 Flatpack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline), TQFP(Thin Quad Flatpack), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : 호스트
111, 121 : 해쉬 생성기
112 : CPU
113 : 펌웨어 이미지
114 : DRAM
115 : 해쉬 알고리즘
116 : 저장 장치
118 : 디바이스 인터페이스
119 : 시스템 인터커넥터
120, 120a, 120b, 120c : 디바이스
121, 122 : CPU
123 : 검증 IP
124, 124' : 워킹 메모리
126, 126' : 불휘발성 메모리
128 : 호스트 인터페이스
129 : 시스템 버스
1100 : 디스플레이 유닛
1200 : 무선 송수신부
1210 : 안테나
1220: 트랜시버
1230 : 모뎀
1300 : 오디오 처리부
1310 : 오디오 프로세서
1320 : 마이크
1330 : 스피커
1400 : NFC 디바이스
1500 : 메모리 시스템
1600 : 유저 인터페이스
1700 : 컨트롤러

Claims (20)

  1. 모바일 시스템에 포함되는 디바이스의 펌웨어 업데이트 방법에 있어서:
    호스트로부터 제공되는 펌웨어 이미지로부터 생성된 제 1 해쉬 값과 서명서를 수신하는 단계;
    상기 제 1 해쉬 값과 상기 서명서를 이용하여 상기 펌웨어 이미지에 대한 무결성 검증 또는 서명 인증을 위한 사전 검증 동작을 실행하는 단계;
    상기 사전 검증 동작의 결과에 따라 상기 호스트로부터 상기 펌웨어 이미지를 수신하는 단계; 그리고
    수신된 상기 펌웨어 이미지로부터 제 2 해쉬 값을 계산하여 무결성 검증 또는 서명 인증을 수행하는 사후 검증 동작을 실행하는 단계를 포함하되,
    상기 호스트와 상기 디바이스는 하나의 모바일 단말에 포함되는 펌웨어 업데이트 방법.
  2. 제 1 항에 있어서,
    상기 호스트는 해쉬 알고리즘을 적용한 해쉬 연산을 수행하여 상기 펌웨어 이미지로부터 상기 제 1 해쉬 값을 생성하는 펌웨어 업데이트 방법.
  3. 제 1 항에 있어서,
    상기 사전 검증 동작을 실행하는 단계는:
    서명 알고리즘에 따라 상기 서명서로부터 제 3 해쉬 값을 생성하는 단계; 및
    상기 제 1 해쉬 값과 상기 제 3 해쉬 값을 비교하는 단계를 포함하는 펌웨어 업데이트 방법.
  4. 제 3 항에 있어서,
    상기 제 1 해쉬 값과 상기 제 3 해쉬 값이 동일한 경우에 상기 호스트로 상기 펌웨어 이미지의 전송을 요청하는 단계를 더 포함하는 펌웨어 업데이트 방법.
  5. 제 1 항에 있어서,
    상기 사후 검증 동작을 실행하는 단계는:
    상기 호스트로부터 수신된 상기 펌웨어 이미지로부터 상기 제 2 해쉬 값을 계산하는 단계; 및
    상기 제 1 해쉬 값과 상기 제 2 해쉬 값을 비교하는 단계를 포함하는 펌웨어 업데이트 방법.
  6. 제 5 항에 있어서,
    상기 제 1 해쉬 값과 상기 제 2 해쉬 값이 동일한 경우에 상기 펌웨어 이미지로 상기 디바이스를 구동하도록 설정하는 단계를 더 포함하는 펌웨어 업데이트 방법.
  7. 제 5 항에 있어서,
    상기 제 1 해쉬 값과 상기 제 2 해쉬 값이 불일치하는 경우, 상기 호스트로 상기 펌웨어 이미지를 재전송하도록 요청하는 단계를 더 포함하는 펌웨어 업데이트 방법.
  8. 제 1 항에 있어서,
    상기 사전 검증 동작을 실행하는 단계에서 수행되는 상기 서명서의 복호화 연산에는 공개키가 사용되는 펌웨어 업데이트 방법.
  9. 모바일 시스템에 포함되는 디바이스의 펌웨어 업데이트 방법에 있어서:
    호스트에서 해쉬 연산을 통해서 상기 디바이스의 펌웨어 이미지를 해쉬 값으로 부호화하는 단계;
    상기 해쉬 값과 서명서를 상기 디바이스로 전송하는 단계;
    상기 해쉬 값과 상기 서명서를 이용하여 상기 펌웨어 이미지에 대한 무결성 검증 또는 서명 인증을 위한 사전 검증 동작의 결과를 상기 디바이스로부터 수신하는 단계;
    상기 사전 검증 동작의 결과에 따라 상기 펌웨어 이미지를 상기 디바이스로 전송하는 단계; 그리고
    상기 호스트가 상기 디바이스로부터 상기 펌웨어 이미지에 대한 무결성 검증을 위한 사후 검증 동작의 결과를 수신하는 단계를 포함하되,
    상기 호스트와 상기 디바이스는 하나의 모바일 단말에 포함되는 펌웨어 업데이트 방법.
  10. 제 9 항에 있어서,
    상기 사전 검증 동작의 결과가 상기 펌웨어 이미지의 무결성 또는 서명이 유효한 것으로 판정될 때, 상기 펌웨어 이미지를 상기 디바이스로 전송하는 펌웨어 업데이트 방법.
  11. 제 9 항에 있어서,
    상기 사전 검증 동작의 결과가 상기 펌웨어 이미지의 무결성 또는 서명이 무효한 것으로 판정될 때, 상기 펌웨어 이미지 또는 상기 서명서를 업데이트 서버에게 재요청하는 펌웨어 업데이트 방법.
  12. 삭제
  13. 제 9 항에 있어서,
    상기 사후 검증 결과가 상기 펌웨어 이미지의 무결성이 무효한 것으로 판정된 경우, 상기 펌웨어 이미지를 상기 디바이스로 재전송하는 단계를 더 포함하는 펌웨어 업데이트 방법.
  14. 펌웨어 이미지에 대한 제 1 해쉬 값을 생성하는 호스트; 그리고
    상기 호스트로부터 제공되는 제 1 해쉬 값과 서명서를 참조하여 상기 펌웨어 이미지에 대한 사전 검증 동작을 수행하고, 상기 사전 검증 동작의 결과에 따라 상기 호스트로부터 상기 펌웨어 이미지를 제공받는 디바이스를 포함하되,
    상기 호스트와 상기 디바이스는 하나의 모바일 단말에 포함되고,
    상기 디바이스는 상기 호스트로부터 제공된 상기 펌웨어 이미지로부터 제 2 해쉬 값을 생성하고, 상기 호스트로부터 제공된 제 1 해쉬 값과 비교하는 사후 검증 동작을 수행하는 모바일 시스템.
  15. 삭제
  16. 제 14 항에 있어서,
    상기 호스트는 상기 펌웨어 이미지가 무효한 것으로 상기 사후 검증 결과를 제공받으면, 상기 펌웨어 이미지를 상기 디바이스로 재전송하는 모바일 시스템.
  17. 제 14 항에 있어서,
    상기 디바이스는:
    상기 펌웨어 이미지 또는 이전 버전의 펌웨어 이미지가 저장되는 불휘발성 메모리; 그리고
    상기 사전 검증 동작 또는 상기 사후 검증 동작을 수행하기 위한 해쉬 연산 또는 서명 연산을 수행하는 중앙처리장치를 포함하는 모바일 시스템.
  18. 제 17 항에 있어서,
    상기 불휘발성 메모리의 용량은 상기 펌웨어 이미지 및 상기 이전 버전의 펌웨어 이미지 중 어느 하나만 저장할 수 있는 크기로 제공되는 모바일 시스템.
  19. 제 18 항에 있어서,
    상기 디바이스는 근거리 무선 통신(NFC)용 모듈로 제공되는 모바일 시스템.
  20. 제 14 항에 있어서,
    상기 디바이스는:
    상기 펌웨어 이미지 또는 이전 버전의 펌웨어 이미지가 저장되는 불휘발성 메모리; 그리고
    상기 사전 검증 동작 또는 상기 사후 검증 동작을 수행하기 위한 해쉬 연산 또는 서명 연산을 수행하는 하드웨어 IP를 포함하는 모바일 시스템.
KR1020140028458A 2014-03-11 2014-03-11 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법 KR102139546B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140028458A KR102139546B1 (ko) 2014-03-11 2014-03-11 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법
US14/644,864 US10206114B2 (en) 2014-03-11 2015-03-11 Mobile system including firmware verification function and firmware update method thereof
US16/269,994 US10887770B2 (en) 2014-03-11 2019-02-07 Mobile system including firmware verification function and firmware update method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140028458A KR102139546B1 (ko) 2014-03-11 2014-03-11 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법

Publications (2)

Publication Number Publication Date
KR20150106219A KR20150106219A (ko) 2015-09-21
KR102139546B1 true KR102139546B1 (ko) 2020-07-30

Family

ID=54068965

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140028458A KR102139546B1 (ko) 2014-03-11 2014-03-11 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법

Country Status (2)

Country Link
US (2) US10206114B2 (ko)
KR (1) KR102139546B1 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2527060B (en) * 2014-06-10 2021-09-01 Arm Ip Ltd Method and device for updating software executed from non-volatile memory
US20170046152A1 (en) * 2015-08-12 2017-02-16 Quanta Computer Inc. Firmware update
WO2017046980A1 (ja) 2015-09-14 2017-03-23 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法
JP6675271B2 (ja) 2015-09-14 2020-04-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法
US10212034B1 (en) * 2015-09-24 2019-02-19 Amazon Technologies, Inc. Automated network change management
US10402561B2 (en) 2015-10-01 2019-09-03 Samsung Electronics Co., Ltd. Apparatus and method for protection of critical embedded system components via hardware-isolated secure element-based monitor
US10382210B2 (en) * 2016-01-10 2019-08-13 Apple Inc. Secure device pairing
JP2017156938A (ja) * 2016-03-01 2017-09-07 ヤンマー株式会社 端末装置およびソフトウェア書き換えプログラム
JP6373888B2 (ja) * 2016-03-01 2018-08-15 株式会社東芝 情報処理装置及び制御方法
US10277283B2 (en) 2016-09-14 2019-04-30 Sony Corporation NFC device, reader/writer device and methods for authorizing and performing an update
US10816940B2 (en) 2016-10-17 2020-10-27 Ulala Lab Inc. Sensor controller and sensor assembly for collecting a variety of machine related operations data
US10303883B2 (en) * 2016-10-25 2019-05-28 Hewlett Packard Enterprise Development Lp Firmware verification through data ports
KR101782378B1 (ko) * 2016-11-03 2017-09-27 시큐리티플랫폼 주식회사 서명된 공개 키를 이용한 시큐어 부트 방법
CN106685653B (zh) * 2016-12-29 2020-07-07 同济大学 一种基于信息安全技术的车辆远程固件更新方法及装置
US11229023B2 (en) 2017-04-21 2022-01-18 Netgear, Inc. Secure communication in network access points
US10747883B2 (en) * 2017-05-11 2020-08-18 Qualcomm Incorporated Collated multi-image check in system-on-chips
US10949546B2 (en) * 2017-08-02 2021-03-16 Samsung Electronics Co., Ltd. Security devices, electronic devices and methods of operating electronic devices
KR102401088B1 (ko) * 2017-08-02 2022-05-24 삼성전자주식회사 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법
WO2019041166A1 (zh) * 2017-08-30 2019-03-07 华为技术有限公司 更新固件的方法及相关装置
EP3460700A1 (en) * 2017-09-22 2019-03-27 Banco Bilbao Vizcaya Argentaria, S.A. Authentication of software update modules using chameleon hashing.
US20190108009A1 (en) * 2017-10-05 2019-04-11 Harman International Industries, Incorporated Generating checksums on trusted storage devices for accelerated authentication
CN107957880A (zh) * 2017-11-30 2018-04-24 广东美的暖通设备有限公司 空调固件升级方法、装置、空调和计算机设备
KR20190074857A (ko) 2017-12-20 2019-06-28 삼성전자주식회사 펌웨어를 업데이트하는 인터페이스 장치, 모바일 장치 및 펌웨어 업데이트 방법
US10652743B2 (en) 2017-12-21 2020-05-12 The Chamberlain Group, Inc. Security system for a moveable barrier operator
US10866798B2 (en) * 2017-12-28 2020-12-15 Intel Corporation Firmware upgrade method and apparatus
KR101853786B1 (ko) * 2018-01-24 2018-06-08 (주)아이엔아이 Cctv의 펌웨어 검증코드를 검사하는 보안 디바이스 유닛
US11074773B1 (en) 2018-06-27 2021-07-27 The Chamberlain Group, Inc. Network-based control of movable barrier operators for autonomous vehicles
WO2020028502A1 (en) 2018-08-01 2020-02-06 The Chamberlain Group, Inc. Movable barrier operator and transmitter pairing over a network
JP7247685B2 (ja) * 2019-03-18 2023-03-29 京セラドキュメントソリューションズ株式会社 保守システムおよび画像形成装置
US11220856B2 (en) 2019-04-03 2022-01-11 The Chamberlain Group Llc Movable barrier operator enhancement device and method
US10997810B2 (en) 2019-05-16 2021-05-04 The Chamberlain Group, Inc. In-vehicle transmitter training
US20190325139A1 (en) * 2019-06-28 2019-10-24 Intel Corporation Secure updating of computing system firmware
US11520891B1 (en) * 2019-12-11 2022-12-06 Amazon Technologies, Inc. Secure boot of an integrated circuit
US11216562B2 (en) * 2019-12-31 2022-01-04 Micron Technology, Inc. Double wrapping for verification
TWI749458B (zh) * 2020-02-05 2021-12-11 瑞昱半導體股份有限公司 驗證方法和驗證系統
CN111353150B (zh) * 2020-02-25 2022-06-07 苏州浪潮智能科技有限公司 一种可信启动方法、装置、电子设备及可读存储介质
CN113805908A (zh) * 2020-06-17 2021-12-17 瑞昱半导体股份有限公司 固件更新系统和方法
DE112020007393T5 (de) * 2020-07-08 2023-06-29 Hewlett-Packard Development Company, L.P. Vorrichtungs-Firmware-Beschreiber
KR20220040847A (ko) 2020-09-24 2022-03-31 삼성전자주식회사 펌웨어 업데이트를 수행하는 스토리지 장치 및 이의 동작 방법
CN112187544B (zh) * 2020-09-30 2023-08-08 深圳忆联信息系统有限公司 固件升级方法、装置、计算机设备及存储介质
KR20220045758A (ko) 2020-10-06 2022-04-13 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102246979B1 (ko) * 2020-12-01 2021-04-30 (주) 라이트론 통신 모듈 및 이의 펌웨어 갱신 시스템
US11693968B2 (en) * 2020-12-10 2023-07-04 Lenovo (Singapore) Pte. Ltd. Embedded controller for updating firmware of another device component
KR102386614B1 (ko) * 2020-12-24 2022-05-09 유비벨록스(주) IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법
WO2022144438A1 (en) * 2020-12-31 2022-07-07 Onespan Nv A system, apparatus and method for memory efficient updating of firmware

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080165952A1 (en) 2007-01-07 2008-07-10 Michael Smith Secure Booting A Computing Device
US20100023777A1 (en) 2007-11-12 2010-01-28 Gemalto Inc System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US20140156742A1 (en) 2011-08-18 2014-06-05 Tencent Technology (Shenzhen) Company Limited System and method for updating software, server and client thereof

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069452B1 (en) 2000-07-12 2006-06-27 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US20050004937A1 (en) * 2003-05-12 2005-01-06 Colarik Andrew Michael Integrity mechanism for file transfer in communications networks
KR20060067575A (ko) 2004-12-15 2006-06-20 삼성전자주식회사 프린팅 장치
KR101427646B1 (ko) 2007-05-14 2014-09-23 삼성전자주식회사 펌웨어의 무결성 검사 방법 및 장치
KR20080112010A (ko) 2007-06-20 2008-12-24 삼성전자주식회사 펌웨어 인증 장치 및 방법
US8607216B2 (en) 2008-08-01 2013-12-10 Palm, Inc. Verifying firmware
US8281229B2 (en) 2008-12-30 2012-10-02 Intel Corporation Firmware verification using system memory error check logic
KR20110108071A (ko) 2010-03-26 2011-10-05 삼성전자주식회사 펌웨어 다운로드 시스템
KR20110118975A (ko) 2010-04-26 2011-11-02 삼성전자주식회사 휴대용 단말기에서 펌웨어 업데이트를 수행하기 위한 장치 및 방법
US8856771B2 (en) 2011-08-19 2014-10-07 International Business Machines Corporation Protection for unauthorized firmware and software upgrades to consumer electronic devices
US8776040B2 (en) 2011-08-19 2014-07-08 International Business Machines Corporation Protection for unauthorized firmware and software upgrades to consumer electronic devices
KR101373574B1 (ko) * 2012-08-31 2014-03-12 고려대학교 산학협력단 무인증서 기반 서명을 이용한 디바이스의 펌웨어 관리 장치 및 방법
US9301132B2 (en) * 2013-11-07 2016-03-29 International Business Machines Corporation Managing distribution of software updates in near field communication (NFC) mobile devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080165952A1 (en) 2007-01-07 2008-07-10 Michael Smith Secure Booting A Computing Device
US20100023777A1 (en) 2007-11-12 2010-01-28 Gemalto Inc System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US20140156742A1 (en) 2011-08-18 2014-06-05 Tencent Technology (Shenzhen) Company Limited System and method for updating software, server and client thereof

Also Published As

Publication number Publication date
US20190191310A1 (en) 2019-06-20
US20150261521A1 (en) 2015-09-17
KR20150106219A (ko) 2015-09-21
US10206114B2 (en) 2019-02-12
US10887770B2 (en) 2021-01-05

Similar Documents

Publication Publication Date Title
KR102139546B1 (ko) 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법
KR102143434B1 (ko) 근거리 무선 통신 칩의 펌웨어 업데이트 방법 및 이를 구현하는 전자 시스템
US11366767B2 (en) Storage system and method for performing and authenticating write-protection thereof
US20180307625A1 (en) Storage system and method for performing and authenticating write-protection thereof
CN101924607B (zh) 基于固件空中传输技术的固件处理方法、装置及系统
US10248428B2 (en) Securely booting a computing device
JP5576983B2 (ja) 非ローカル記憶装置からのサブシステムのセキュアなブート及び構成
US8914627B2 (en) Method for generating a secured boot image including an update boot loader for a secured update of the version information
KR102182894B1 (ko) 패스워드 기반의 인증을 수행하는 사용자 장치 및 그것의 패스워드 등록 방법 및 인증 방법
US20170235957A1 (en) Controlled secure code authentication
US10872155B2 (en) Computing system for managing firmware and firmware managing method thereof
US11736276B2 (en) Delegation of cryptographic key to a memory sub-system
US10255438B2 (en) Operating system agnostic validation of firmware images
CN114253570A (zh) 控制器、存储设备及存储设备的固件更新方法
CN108073799B (zh) 半导体存储器系统及其操作方法
JP2022523294A (ja) 暗号化構成要素を備えたメモリデバイス
US11336444B2 (en) Hardware security module for verifying executable code, device having hardware security module, and method of operating device
JP2022527163A (ja) 暗号ハッシュを用いたメモリに格納されたデータの正当性確認
US20190180010A1 (en) Storage device performing secure debugging and password authentication method thereof
CN113127843B (zh) 用于验证的双重包装
US10375209B2 (en) Secure boot download computations based on host transport conditions
US11811948B2 (en) Flexible security enclave for protecting data at rest and in motion
US11250121B2 (en) Method of operating storage device, and system for storage device
CN116155503A (zh) 可信计算系统中的计算装置及其认证方法
CN116108427A (zh) 可信计算装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right