KR101517286B1 - 보안 요소를 위한 운영체제 업데이트 - Google Patents

보안 요소를 위한 운영체제 업데이트 Download PDF

Info

Publication number
KR101517286B1
KR101517286B1 KR1020130086043A KR20130086043A KR101517286B1 KR 101517286 B1 KR101517286 B1 KR 101517286B1 KR 1020130086043 A KR1020130086043 A KR 1020130086043A KR 20130086043 A KR20130086043 A KR 20130086043A KR 101517286 B1 KR101517286 B1 KR 101517286B1
Authority
KR
South Korea
Prior art keywords
operating system
security element
volatile memory
boot program
updater device
Prior art date
Application number
KR1020130086043A
Other languages
English (en)
Other versions
KR20140011998A (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 오베르뛰르 테크놀로지스
Publication of KR20140011998A publication Critical patent/KR20140011998A/ko
Application granted granted Critical
Publication of KR101517286B1 publication Critical patent/KR101517286B1/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/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written

Landscapes

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

Abstract

적어도 하나의 마이크로프로세서(31), 비휘발성 메모리(34) 및 통신 인터페이스(36)를 포함하는 보안 요소(30)에 있어서, 보안 요소(30)는 통신 인터페이스(36)를 통해 업데이터 디바이스(10)와 통신할 수 있고, 비휘발성 메모리(34)는 적어도 하나의 부트 프로그램(38)을 저장하고, 마이크로프로세서(31)는 보안 요소(30)의 시동(startup) 동안 부트 프로그램(38)을 실행하도록 구성되고, 부트 프로그램(38)은 방법의 실행을 위한 명령어들을 포함하는 것을 특징으로 하고, 상기 방법은, 상기 명령어들이 상기 마이크로프로세서(31)에 의해 실행될 때,
- 비휘발성 메모리(34)가 활성의(active) 운영체제(operating system)(35)를 저장하는지를 결정하고, 긍정적이라면(in the affirmative) 운영체제의 실행을 개시하는 시동 단계(101, 112);
- 보안 요소(30)에 의해 결정되는 제1 인증 데이터(AUTH30) 및 상기 업데이터 디바이스(10)로부터 수신되는 제2 인증 데이터(AUTH10)의 함수(function)로서, 업데이터 디바이스(10)의 인증 단계(104, 105, 106, 107, 113 및 114);
- 인증 단계에 응답하여, 비휘발성 메모리(34) 내의 업데이터 디바이스(10)로부터 수신된 새로운 운영체제의 저장 단계(109 및 110); 및 새로운 운영체제의 활성화(activation) 단계(111)를 포함한다.

Description

보안 요소를 위한 운영체제 업데이트{UPDATING AN OPERATING SYSTEM FOR SECURE ELEMENT}
본 발명은 스마트 카드들과 같은 온보드(onboard) 보안 요소들의 분야와 관련된다.
예컨대, 스마트 카드와 같은 온보드 보안 요소는 대체적으로 컴퓨터의 물질적 아키텍처(material architecture)를 갖고 마이크로프로세서 및 마이크로프로세서에 의해 실행 가능한 컴퓨터 프로그램들을 포함하는 비휘발성 메모리를 특히 포함한다. 특별하게는, 비휘발성 메모리는 사용자에게 이용가능해지기 전에, 비휘발성 메모리는 보안 요소와 함께 제조업체(manufacturer)에 의해 적재된(loaded) 운영체제(Operating System; OS)를 포함한다.
사용자에 보안 요소를 제공한 후 운영체제를 업데이트하는 것이 바람직할 수 있다.
문서 WO 2012/062632 A1는 온보드 요소 상의 과정(process)을 업데이트하는 소프트웨어를 설명한다. 이 과정은 소프트웨어의 소거(effacement) 및 상기 소프트웨어 대신(in place of) 업데이트의 관리 프로그램의 적재(loading)를 포함한다. 이 과정에서는 온보드 요소가 시동(start up)할 때 업데이트되는 프라이밍 프로그램(priming program)을 적재한다. 이러한 솔루션의 보안은 오로지 소프트웨어의 임프린트(imprint)에 기반한다. 이러한 솔루션은 따라서 높은 정도(high degree)의 보안을 요구하는 어플리케이션들을 위해서는 적절하지 않다. 또한, 본 과정은 보안 요소를 두 번 재시작할 것을 요구한다.
따라서 보안 요소의 소프트웨어를 위한 신뢰할 수 있고 안전한 업데이트의 방법에 대한 요구가 존재한다.
본 발명의 목적 및 요약
본 발명은 적어도 하나의 마이크로프로세서, 비휘발성 메모리 및 통신 인터페이스를 포함하는 보안 요소에 있어서, 상기 보안 요소는 상기 통신 인터페이스를 통해 업데이터 디바이스와 통신할 수 있고, 상기 비휘발성 메모리는 적어도 하나의 부트 프로그램을 저장하고, 상기 마이크로프로세서는 상기 보안 요소의 시동(startup) 동안 상기 부트 프로그램을 실행하도록 구성되는 보안 요소를 제안한다. 이 보안 요소는 부트 프로그램이 방법의 실행을 위한 명령어들을 포함한다는 점에 있어서 주목할 만하다.
상기 방법은, 상기 명령어들이 상기 마이크로프로세서에 의해 실행될 때,
- 상기 비휘발성 메모리가 활성의(active) 운영체제(operating system)를 저장하는지를 결정하고, 긍정적이라면(in the affirmative)(예컨대, 상기 비휘발성 메모리가 상기 운영체제를 저장하면) 상기 운영체제의 실행을 개시하는 시동 단계;
- 상기 보안 요소에 의해 결정되는 제1 인증 데이터 및 상기 업데이터 디바이스로부터 수신되는 제2 인증 데이터의 함수로서, 상기 업데이터 디바이스의 인증 단계;
- 상기 인증 단계에 응답하여, 상기 비휘발성 메모리 내의 상기 업데이터 디바이스로부터 수신된 새로운 운영체제의 저장 단계; 및 상기 새로운 운영체제의 활성화(activation) 단계를 포함한다.
상기 부트 프로그램은 따라서 상기 운영체제의 업데이트를, 안전하고 신뢰성 있도록, 가능하게 한다. 사실, 이러한 업데이트는 상기 업데이터 디바이스의 인증을 요구함으로써, 제3 자가 상기 보안 요소에 상기 운영체제의 손상된(corrupted) 버전을 제공하는 것은 불가능하다.
일 실시예에 따르면, 상기 업데이터 디바이스의 인증 단계는,
- 상기 업데이터 디바이스로 변수를 포함하는 메시지를 전송하기 위한 단계;
- 제2 인증 데이터의 수신을 위한 단계;
- 상기 비휘발성 메모리 내에 저장된 상기 변수 및 키의 함수로서 제1 인증 데이터의 결정 단계; 및
- 상기 제1 인증 데이터 및 제2 인증 데이터의 비교 단계를 포함한다.
이러한 방식에서, 부트 프로그램 그 자체는 업데이터 디바이스의 인증을 완료하기 위해 요구되는 모든 명령어들을 포함한다. 운영체제의 업데이트는 따라서 비휘발성 메모리가 운영체제를 포함하지 않을 때 또는 운영체제가 불활성화되었을 때, 에컨대, 이전의 업데이트 시도가 성공하지 못했을 때, 시작되거나(initiated) 계속될 수 있다.
상기 부트 프로그램(38)은 또한 상기 키 및 상기 변수의 함수로서 암호화된(encrypted) 자료(datum)를 포함하는 메시지를 상기 업데이터 디바이스로 전송하기 위한 단계의 실행을 위한 명령어들을 포함할 수 있다.
이는 상기 업데이터 디바이스가 상기 보안 요소를 인증하는 것을 허용한다. 상기 보안 요소 및 상기 업데이터 디바이스 간의 상호 인증은 따라서 완료된다. 이러한 방식에서, 오직 안전한(secure) 인증된 요소만 상기 운영체제의 상기 새로운 버전을 획득할 수 있다.
일 실시예에 따르면, 상기 비휘발성 메모리는 방법의 실행을 위한 명령어들을 포함하는 운영체제를 포함하고, 상기 방법은,
- 상기 변수를 포함하는 메시지를 상기 업데이터 디바이스로 전송하기 위한 단계; 및
- 상기 제2 인증 데이터의 수신을 위한 단계를 포함하고,
- 필요하다면, 상기 키 및 상기 변수의 함수로서 암호화된 자료를 포함하는 메시지를 상기 업데이터 디바이스로 전송하기 위한 단계를 포함한다.
이러한 경우, 상기 비휘발성 메모리가 활성 운영체제를 포함하면, 활성 운영체제(the latter)는 상기 운영체제가 상기 부트 프로그램과 협력하여, 인증에 참여하게 시키는 상기 명령어들을 포함한다. 상기 운영체제의 상기 업데이트는 따라서 상기 보안 요소의 보통의 동작 동안, 즉, 상기 보안 요소의 동작이 상기 운영체제에 의해 관리될 때, 시작될 수 있다.
상기 저장 단계는 상기 새로운 암호화된 운영체제의 수신을 포함할 수 있다.
이러한 방식에서, 업데이터 디바이스 및 보안 요소 간의 통신을 탈취하는(intercept) 제3 자는 상기 운영체제의 상기 새로운 버전을 획득할 수 없다.
이러한 경우에서, 상기 인증 단계는 상기 키 및 상기 변수의 함수로서 세션 키(session key)의 결정을 포함할 수 있고, 상기 저장 단계는 상기 세션 키로 암호화된 상기 새로운 운영체제의 수신을 포함할 수 있다.
동일한 세션 키가 암호화된 인증 및 통신을 위해 사용됨으로써, 상기 보안 요소 내에 요구되는 암호의 자원들이 제한된다.
보안 및 신뢰성의 이유들 때문에, 바람직하게는 상기 부트 프로그램은 수정될 수 없도록 저장된다.
예컨대, 상기 부트 프로그램은 상기 비휘발성 메모리의 재기입 불가능한 부분(non-rewritable part) 내에 저장된다.
변형으로써, 상기 부트 프로그램은 상기 비휘발성 메모리의 재기입 가능한 부분(rewritable part) 내에 저장되고, 상기 비휘발성 메모리는 상기 부트 프로그램 상에 기입하는 명령들을 차단하도록 구성된 운영체제를 포함한다.
본 발명은 또한 적어도 하나의 마이크로프로세서, 비휘발성 메모리 및 본 발명에 따른 보안 요소를 포함하는 단말에 있어서, 상기 단말의 상기 비휘발성 메모리는 상기 보안 요소에 의해 제공되는 서비스를 사용하기 위해 설계된 업데이트의 관리 프로그램 및 어플리케이션을 포함하고, 방법의 실행을 위한 명령어들의 상기 업데이트의 관리 프로그램에 있어서, 상기 방법은, 상기 명령어들이 상기 단말의 상기 마이크로프로세서에 의해 실행될 때,
- 상기 업데이터 디바이스의 상기 새로운 운영체제의 수신 및 수신된 상기 새로운 운영체제의 상기 보안 요소로의 전송을 포함하는 송신(transmission) 단계; 및
- 적어도 상기 송신 단계 동안의 상기 서비스의 불활성화(deactivation) 단계;를 포함하는 단말을 제안한다.
본 발명은 또한 적어도 하나의 본 발명에 따른 보안 요소 및 상기 운영체제의 상기 새로운 버전을 저장하는 업데이터 디바이스를 포함하는 시스템을 제공한다.
본 발명의 다른 특징들 및 이점들은 특성(character)을 제한하지 않는 실시예를 나타내는 첨부된 하기의 도면들을 참조하여 후술될 설명으로부터 드러날 것이다.
도 1은 본 발명의 일 실시예에 따른, 보안 요소를 포함하는 시스템을 도시한다.
도 2는 도 1의 보안 요소의 부트 프로그램의 실행에 대응하는 주요 단계들을 도시한다.
도 3은 보안 요소의 운영체제의 업데이트 동안 도 1의 시스템의 상호작용들을 도시한다.
도 4a, 4b, 4c 및 4d는 상이한 시각들에서의, 도 1의 보안 요소의 비휘발성 메모리의 상태를 도시한다.
도 5a, 5b, 5c 및 5d는 명령들의 처리를 도시하기 위해 도 1의 보안 요소의 비휘발성 메모리를 도시한다.
도 6 및 도 7은 운영체제의 새로운 암호화된 버전을 포함하는 블록(block)들을 결정하기 위한 예를 도시한다.
도 1은 업데이터 디바이스(10), 단말(20) 및 단말(20) 내에 온보드된 보안 요소(30)를 도시한다.
업데이터 디바이스(10)는 컴퓨터의 물질적 아키텍처를 갖고 마이크로프로세서(11), 통신 인터페이스(12), 휘발성 메모리(13) 및 비휘발성 메모리(14)를 특히 포함한다. 마이크로프로세서(11)는, 휘발성 메모리(13)를 워크스페이스(workspace)로서 사용함으로써, 비휘발성 메모리(14) 내에 저장된 컴퓨터 프로그램들의 실행을 가능하게 한다. 통신 인터페이스(12)는 단말(20)과 통신한다.
비휘발성 메모리(14)는 보안 요소를 위한 운영체제의 새로운 버전을 특히 저장하고, 비밀 키(secret key)(K) 뿐만 아니라 OS(V2)로 지시된다(designated).
업데이터 디바이스(10)는 예컨대, 보안 요소들의 제조업체의 구내(premises)에서 발견되는 업데이트의 서버이다. 이 경우, 통신 인터페이스(12)는 예컨대, 인터넷을 통해, 전기 통신망(telecommunications network)을 통과함(passing through)으로써 단말(20)과의 통신을 셋업(set up)한다. 변형의 방식으로써, 업데이터 디바이스(10)는 그 자체로서 예컨대, SD 카드, NFC 카드 또는 USB 메모리와 같은 보안 요소일 수 있다. 이러한 경우, 통신 인터페이스(12)는 보안 요소 판독기를 통과함으로써 단말(20)과의 통신을 셋업한다.
단말(20)은 예컨대, 사용자가 소지하는 휴대용 단말(예를 들면, 휴대 전화기) 이다.
단말(20)은 컴퓨터의 물질적 아키텍처를 갖고 마이크로프로세서(21), 통신 인터페이스(22), 휘발성 메모리(23), 비휘발성 메모리(24) 및 통신 인터페이스(26)를 특히 포함한다. 마이크로프로세서(21)는, 휘발성 메모리(23)를 워크스페이스로서 사용함으로써, 비휘발성 메모리 내에 저장된 컴퓨터 프로그램을 실행한다. 통신 인터페이스(22)는 업데이터 디바이스(10)와 통신한다. 통신 인터페이스(26)는 보안 요소(30)와 통신한다.
비휘발성 메모리(24)는 단말(20)의 운영체제(25), 업데이트의 관리 프로그램(P1) 및 데이터와 사용자의 어플리케이션들(도시된 어플리케이션(A1))을 특히 저장한다.
프로그램(P1)의 기능(function)은 보안 요소(30)의 운영체제의 업데이트를 위해 보안 요소(30) 및 업데이터 디바이스(10) 간의 통신을 관리(manage)하는 것이다. 프로그램(P1)은 바람직하게는 도 1 내에 도시된 것처럼, 단말(20)의 운영체제(25) 내에 통합된 모듈이다.
보안 요소(30)는 예컨대, 단말(20) 내에 제거 가능하게(removably) 보관된(housed) 스마트 카드이다.
보안 요소(30)는 컴퓨터의 물질적 아키텍처를 갖고 마이크로프로세서(31), 통신 인터페이스(36), 휘발성 메모리(33) 및 비휘발성 메모리(34)를 특히 포함한다. 마이크로프로세서(31)는 휘발성 메모리(33)를 워크스페이스로서 사용함으로써 비휘발성 메모리에 저장된 컴퓨터 프로그램들을 실행한다. 통신 인터페이스(36)는 단말(20)과 통신한다.
비휘발성 메모리(34)는 부트 프로그램(38)(<< 부트 로더 >>에 대해 BL 로 지시됨), 운영체제(35), 사용자 데이터(37), 키(MKi), 시리얼 번호(serial number)(Ni), 운영체제(35)의 상태 인디케이터(status indicator)(39) 및 인증 카운터(authentication counter )(C)의 값을 나타내는 변수(70)를 특히 저장한다.
도시된 상태에서 운영체제(35)는 업데이터 디바이스(10)에 의해 저장된 버전 (OS(V2))과 상이한 OS(V1)로 지시된 제1 버전이다.
운영체제(35)의 상태 인디케이터(39)는 << 활성 >> 또는 << 비활성 >> 값을 취할 수 있다. 상태 인디케이터(39)가 취하는 값은 예컨대, 운영체제(35) 내에 저장된 상태 비트(status bit) 또는 비휘발성 메모리(34) 내의 다른 것(else in)일 수 있다. 상태 인디케이터(39)가 취하는 값의 역할은 하기에서 설명된다.
인증 카운터(C)는 예컨대, 50과 같은 소정의 값에서 초기화된다. 운영체제의 업데이트의 과정 동안, 카운터(C)는 감소된다(decremented). 업데이트의 과정의 완료 시, 업데이트의 과정(latter)이 성공했으면(has succeeded), 카운터는 다시 초기화된다. 카운터(C)의 값이 예컨대, 3과 같은 특정한 임계값(threshold) 아래로 떨어지면, 이는 너무 많은 횟수의 운영체제(35)의 업데이트의 시도들이 실패했음을 의미한다. 이러한 경우, 업데이트의 과정은 차단된다. 업데이터 디바이스(10)와 통신함으로써 운영체제(35)를 업데이트하는 것은 더 이상 불가능하다. 그러나, 보안 요소를 다시 초기화하고 특정한 접근 권한들(access rights)을 갖는 서비스 제공자에 요청함으로써(turning to) 보안 요소 상으로 새로운 운영체제를 적재하는 것은 가능할 수 있다.
키(MKi) 및 시리얼 번호(Ni)는 업데이터 디바이스(10)에 의해 저장된 비밀 키(K)에 대응하고, 예컨대, 부트 프로그램(38) 내에 저장된다. 더 정확하게는, 업데이터 디바이스(10)는 비밀이 유지되는(kept) 절차에 따라, 보안 요소 i 의 시리얼 번호(Ni)에 대응하는 키(MKi)를 결정하기 위한 유도 수단(derivation mean)들을 포함한다. 도시되지 않은 변형에 있어서, 업데이터 디바이스(10)는 복수의 보안 요소들의 키들(MKi) 및 시리얼 번호들(Ni)을 저장한다. 두 경우들 모두에서, 업데이터 디바이스(10)는 시리얼 번호(Ni)와 연관된 키(MKi)를 결정할 수 있다.
사용자 데이터(37)는 특히 어플리케이션들(도시된 어플리케이션(A2)) 및 도시된 세트 D1 에 관한(whereof) 개인의 데이터를 포함한다. 운영체제(35)는 보안 요소(30) 상에 저장된 어플리케이션들의 관리를 가능하게 한다. 이들 어플리케이션들은 예컨대, 결제 및 운송 서비스들에 대한 접근을 제공하는 보안 어플리케이션들이고, NFC 형식의 단말(20)의 통신 인터페이스를 활용한다.
부트 프로그램(38)은 특히 부트 프로그램(38) 및 운영체제(35)의 실행 동안 부트 프로그램(38) 및 운영체제(35) 간의 상호작용을 허용하는 프로그래밍 인터페이스(API)를 포함한다.
통신 인터페이스들(26 및 36)을 통한, 단말(20) 및 보안 요소(30) 간의 통신은 예컨대, 표준 ISO/IEC 7816-4에 부합하는 ADPU 유닛 교환(unit exchange)에 기반한다.
마이크로프로세서(31)는 보안 요소(30)의 시동 동안 부트 프로그램(38)을 실행하도록 구성된다. 보통의 동작(operation)에서, 부트 프로그램(38)은 운영체제(35)의 실행을 개시한다. 운영체제(35)는 인터페이스(36)에 의해 수신되는 명령들의 해석 및 어플리케이션들의 실행을 관리한다.
부트 프로그램(38)은 수정-불가능하게(non-modifiably) 저장된다. 예컨대, 부트 프로그램(38)은 롬(rom) 형식의 비휘발성 메모리(34)의 부분 내에 저장된다. 이러한 경우, 부트 프로그램(38)은 보안 요소(30)의 의뢰(commission) 동안 운영체제(35)를 적재하기 위해 보안 요소(30)의 제조업체에 의해 사용되는, 초기의 부트 프로그램의 일부일 수 있다. 변형의 방식으로써, 부트 프로그램(38)은 예컨대, 플래시 메모리 형식의 재기입 가능한 비휘발성 메모리(24)의 부분 내에 저장된다. 이러한 경우, 운영체제(35)는 메모리의 이러한 부분 내의 여하한 기입의 명령을 차단하도록 구성된다.
도 1의 시스템의 동작, 특히 제1 버전(OS(V1))을 제1 버전(OS(V2))으로 교체하기 위한 운영체제(35)의 업데이트가 이제 설명될 것이다.
도 2는 단계들의 도면으로, 부트 프로그램(38)의 실행에 대응하는, 보안 요소(30)의 운영 절차의 주요 단계들을 도시한다. 도 3은 도 2의 운영 절차 동안 업데이터 디바이스(10), 단말(20) 및 보안 요소(30) 간에 교환되는 메시지들을 도시하는 도면이다.
이러한 운영 절차는 보안 요소(30)의 시동 동안 단계(100)에서 시작한다. 전술된 것처럼, 마이크로프로세서(31)는 보안 요소(30)의 시동 동안 부트 프로그램(38)의 실행을 개시하도록 구성된다. 예컨대, 마이크로프로세서(31)가 최초로 지시하는(point), 비휘발성 메모리(34)의 사전 결정된 배치(placement)(소위 시동 섹터)에서 존재할 수 있다
다음으로, 단계(101)에서, 보안 요소(30)는 운영체제(35)가 활성인지를 결정한다. 더 정확하게는, 비휘발성 메모리(34)가 운영체제(35)를 포함하고 상태 인디케이터(39)가 << 활성 >> 값을 나타내면, 운영체제(35)는 활성인 것으로 간주된다. 반대로, 비휘발성 메모리(34)가 운영체체(35)를 포함하지 않거나, 상태 인디케이터(39)가 << 비활성 >> 값을 나타내면, 운영체제(35)는 비활성인 것으로 간주된다.
운영체제(35)가 활성이면, 단계(112)에서 부트 프로그램(38)은 운영체제(35)의 실행을 개시한다. 이는 운영체제(35)가 어플리케이션들 및 통신 인터페이스(36) 상에서 수신된 명령들의 실행을 관리하는 동안의 보안 요소(30)의 보통의 동작 모드에 대응한다.
반대로, 운영체제(35)가 비활성이면, 부트 프로그램(38)은 운영체제(35)의 실행을 개시하지 않는다. 다시 말해, 부트 프로그램(38)은 제어(control)를 유지한다(retain). 이것의 결과는 특히 통신 인터페이스(36) 상에서 수신된 명령들이 부트 프로그램(38)에 의해 관리되는 것이다.
이러한 방식으로, 단말(20)의 업데이트의 관리 프로그램(P1)은 운영체제(35)의 업데이트의 과정을 개시하기 위해 의도되는 메지시들(M3 및 M4)을 전송하고, 이들 메시지들(M3 및 M4)은 운영체제(35)가 비활성이면 부트 프로그램(38)에 의해 또는, 운영체제(35)가 활성이면 운영체제(35)에 의해(단계(202)) 수신된다. 운영체제(35)의 업데이트의 과정은 하기에서 운영체제(35)가 비활성인 경우가 먼저 설명되고(단계들(102 내지 111)), 다음으로 운영체제(35)가 활성인 경우가 설명된다(단계들(202 내지 205, 113, 114, 208, 115 및 109 내지 111).
도 3을 참조하면, 단말(20)은 업데이터 디바이스(10)에 운영체제의 최신의 가용한 버전을 요청하기 위해 메시지(M1)를 업데이터 디바이스(10)로 전송한다. 메시지(M1)를 전송하는 것은 프로그램(P1)의 실행을 일부를 형성(form)하고 예컨대, 주기적으로 또는 사전 결정된 조건이 충족될 때 수행된다.
업데이터 디바이스(10)는 메시지(M1)에 대해 가용한 버전(V)이 V2 임을 지시하는 메시지(M2)로서 응답한다(V = V2).
다음으로, 단말(20)은 단계(102) 및 다음 단계들 또는 단계(202) 및 다음 단계들의 실행에 책임이 있는 부트 프로그램(38)의 부분 또는 운영체제(35)의 부분인, 업데이트의 어플리케이션을 선택하기 위해 메시지(M3)를 보안 요소(30)로 전송한다. 메시지(M3)는 예컨대, 새롭게 정의된, 소위 << OS 로더 어플리케이션 선택(OS loader Application Selection) >>인, ADPU 형식의 명령이다.
다음으로, 단말(20)은 보안 요소(30)에 새로운 버전(V2)의 가용을 알리기 위해 메시지(M4)를 보안 요소(30)로 전송한다. 단계(102)에서, 보안 요소(30)에 의해 메시지(M4)가 수신된다. 더 정확하게는, 현재의 예시에서 운영체제가 비활성이면, 메시지(M4)는 부트 프로그램(38)에 의해 직접적으로 관리된다. 메시지(M4)는 예컨대, 새롭게 정의된, 소위 << 가용한 버전 푸쉬(PUSH AVAILABLE VERSION) >>인, ADPU 형식의 명령이다.
다음으로, 단계(103)에서, 보안 요소(30)는 운영체제의 버전을 결정한다. 예컨대, 부트 프로그램(38)은 API 프로그래밍 인터페이스를 사용함으로써 운영체제(35)에서 정보를 얻는다(interrogate). 운영체제(35)가 존재하면, 운영체제(35)는 자신의 버전(V)을 제공함으로써 응답한다. 운영체제가 존재하지 않으면, 부트 프로그램(38)은 부트 프로그램(38)이 저장하는 디폴트(default) 및 제조업체에 의해 보안 요소(30) 내에 최초로 적재된 운영체제(35)의 버전에 대응하는 디폴트(default)로서 버전(V)을 고려한다(takes into account). 보안 요소(30)는 메시지(M4) 내에서 수신된 버전(V)이 본 예시에서, V1 인 운영체제(35)의 현재 버전보다 상위인지를 검증한다.
메시지(M4) 내에서 수신된 버전(V)이 운영체제(35)의 현재 버전보다 상위이면, 다음으로 단계(104)에서, 보안 요소(30)는 메시지(M5)를 메시지(M5')에 의해 메시지(M5)를 연장하는 단말(20)을 경유하여, 업데이터 디바이스(10)로 전송한다. 메시지(M5)는 보안 요소(30)의 시리얼 번호(Ni), 임의의 수(RAND) 및 인증 카운터(C)의 값(변수 70)을 포함한다.
메시지(M5') 내에 포함된 시리얼 번호(Ni)의 함수로서, 업데이터 디바이스(10)는 전술된 유도 절차에 따른, 시리얼 번호(Ni) 및 비밀 키(K)의 함수로서 또는 수신된 시리얼 번호(Ni)에 대응하는 업데이터 디바이스(10)가 저장하는 키(MKi)를 찾음(consulting) 으로써 대응하는 키(MKi)를 결정한다. 다음으로, 업데이터 디바이스(10)는 결정된 키(MKi) 및 수신된 임의의 수(RAND)의 함수로서 세션 키(SK)를 결정하고, 세션 키(SK)로 임의의 수(RAND)를 암호화함으로써 인증 데이터(AUTH10)를 결정한다. 업데이터 디바이스(10)는 메시지(M6)를 메시지(M6') 내에서 메시지(M6)를 연장하는 단말(20)을 경유하여, 보안 요소(30)로 전송한다. 메시지(M6')는 예컨대, 새롭게 정의된, 소위 << 상호 인증(MUTUAL AUTHENTICATION) >>인, ADPU 형식의 명령이다.
메시지(M6')는 단계(105)에서 보안 요소(30)에 의해 수신된다. 메시지(M6')의 수신에 응답하여, 보안 요소(30)는, 단계(106)에서, 업데이터 디바이스(10)에 의해 결정된 세션 키(SK)와 일반적으로 동일한(identical) 세션 키(SK)를 마스터 키(MKi) 및 임의의 수(RAND)의 함수로서 결정하고, 결정된 세션 키(SK)로 임의의 수(RAND)를 암호화함으로써 인증 데이터(AUTH30)를 결정한다. 보안 요소(30)는 또한 인증 카운터(C)를 감소시킨다(decrement).
다음으로, 단계(107)에서, 보안 요소(30)는 인증 데이터(AUTH10) 및 인증 데이터(AUTH30)를 비교한다. 일치하는 경우, 보안 요소(30)에 의해, 세션 키(SK)의 결정과 함께 업데이터 디바이스(10)의 인증은 완료되었다.
인증의 경우, 단계(108)에서 보안 요소(30)는 메시지(M7)를 메시지(M7') 내에서 메시지(M7)를 연장하는 단말(20)을 경유하여, 업데이터 디바이스(10)로 전송한다. 메시지(M7)는 세션 키(SK)로 암호화되고 단계(103)에서 결정되는 운영체제(35)의 현재 버전(V1)을 포함한다.
메시지(M7')의 수신은 업데이터 디바이스(10)가 보안 요소(30)를 인증하는 것을 허용한다. 예컨대, 버전이 두 개의 옥텟(octet)들 상에 코드되고 암호화된 메시지가 16 개의 옥텟들을 포함하면, 업데이터 디바이스(10)는 암호화된 메시지(M7')의 처음 14 개의 옥텟들이 0 임을 검증함으로써 보안 요소를 인증할 수 있다. 보안 요소(30) 및 업데이터 디바이스(10) 간의 상호 인증은 따라서 완료되었다.
다음으로, 업데이터 디바이스(10)는 N 개의 블록들(OBS1, OBS2, ... , OBSN)을 결정한다. 각 블록은 세션 키(SK)로 암호화된 운영체제의 부분을 포함한다. 수 N 이 선택 됨으로써, 블록의 크기는 ADPU 형식의 단일한 명령 내에서 송신되기 위해 충분하게 제한된다. 하나 이상의 메시지(M8) 내에서, 업데이터 디바이스(10)는 결정된 블록들을 단말(20)로 송신한다. 단말(20)은 모든 블록들이 수신될 때까지 수신된 블록들을 저장한다.
다음으로, 단말(20)은 일련의 메시지들(M91, M92, ... , M9N)을 보안 요소(30)로 전송한다. 각 메시지(M91, M92, ... 또는 M9N)는 블록들(OBS1, OBS2, ... , OBSN) 중 하나를 포함한다. 세션 키(SK)를 사용함으로써, 각 블록은 보안 요소(30)에 의해 암호화되고 운영체제(35)의 버전(V1)의 위치에 저장된다.
1 부터 N-1 까지인 j 에 대해, 각 메시지(M9j)는 보안 요소(30)가 확인 메시지(acknowledgement message)(M9j')를 통해 응답하는, 예컨대, 새롭게 정의된, 소위 << 블록 적재(LOAD BLOCK) >>인, ADPU 형식의 명령이다. 메시지(M9N)는 예컨대, 새롭게 정의된, 소위 << 마지막 블록 적재(LOAD LAST BLOCK) >>인, ADPU 형식의 명령이다. 보안 요소(30)에 의한 메시지들(M91, M92, ... , M9N)의 수신은 운영체제의 새로운 버전의 수신 단계(109)를 구성한다.
마지막 메시지(M9N)의 수신 후, 단계(110)에서, 보안 요소(30)는 예컨대, 순환 여유 제어 테스트(cyclic redundancy control test)에 의해, 수신된 운영체제의 새로운 버전의 검증을 완료한다.
단계(111)에서, 테스트가 검증되면, 보안 요소(30)는 카운터(C)를 다시 초기화하고, 운영체제(35)를 활성화하고 운영체제(35)의 실행을 개시한다. 이 단계(stage)에서, 운영체제(35)의 새로운 버전은 따라서 보안 요소(30)에 의해 실행된다.
단계(101)에서, 운영체제(35)가 활성인 경우, 동작은 전술된 설명과 유사하며 주요 차이점들이 이제 설명될 것이다. 단계(112)에서, 보안 요소(30)는 운영체제(35)를 실행한다. 전술된 대로, 본 방식에서, 수신된 메시지(M4)는 운영체제(35)에 의해 관리된다. 도 2의 단계들(202 내지 205)는 전술된 단계들(102 내지 105)에 대응하고, 운영체제(35)의 명령어들의 실행에는 대응하지만 부트 프로그램(38)의 명령어들의 실행에는 대응하지 않는다.
인증 데이터(AUTH10)의 수신 후, 운영체제(35)는, 프로그래밍 인터페이스(API)를 경유하여 부트 프로그램(38)을 조회(query)함으로써, 운영체제(35)는 단계들(106 및 107)과 유사한 단계들(113 및 114)의 도중에 인증 데이터(AUTH10)를 검증한다. 다음으로, 단계(208)에서 운영체제(35)는 메시지(M7)를 통해 응답한다. 그 후, 단계(115)에서 운영체제(35)는 부트 프로그램(38)로 넘어간다(hand over).
단계(115)에서, 부트 프로그램(38)은 운영체제(35)를 불활성화한다. 예컨대, 부트프로그램은 비휘발성 메모리(34)의 운영체제(35)를 클리어(clear)하거나 상태 인디케이터(39)의 값을 << 비활성 >>으로 수정한다. 다음 단계들(109 내지 111)은 전술된 설명과 유사하다.
단계들(101 내지 115)은, 마이크로프로세서(31)에 의해, 부트 프로그램(38)의 명령어들의 실행에 대응한다. 단계들(202 내지 205 및 208)은, 마이크로프로세서(31)에 의해, 운영체제(35)의 명령어들의 실행에 대응한다.
도면들(4a 내지 4d)는 보안 요소(30)의 제조 과정 및 운영체제(35)의 업데이트의 과정의 상이한 순간들에서의 비휘발성 메모리(34)의 내용을 도시한다. 예컨대, 도면들(4a 및 4b)은, 비휘발성 메모리(34)가 예를 들어, 플래시 메모리 형식과 같은 재기입 가능 부분(40) 및 롬 형식의 재기입 불가능 부분(41)을 포함하는 것을 나타낸다.
도 4a는 비휘발성 메모리(34)의 초기 상태를 도시한다. 부분(40)은 비어있고 부분(41)은 카드의 제조업체의 초기 부트 프로그램을 포함한다. 이러한 초기 상태에서, 마이크로프로세서(31)는 화살표(42)에 의해 도시된 것처럼, 보안 요소(30)의 시동 동안에 이러한 최초 부트 프로그램의 실행을 개시하도록 구성된다. 초기 부트 프로그램의 기능은 제조업체에 의한 보안 요소(30)의 개별화(personalization) 동안에 부트 프로그램(38), 운영체제(35) 및 사용자 데이터(37)를 비휘발성 메모리(34)의 부분(40)으로 적재하는 것을 가능하게 하는 것이다.
도 4b는 제조업체에 의한 보안 요소(30)의 개별화 후 비휘발성 메모리(34)의 상태를 도시한다. 부분(40)은 부트 프로그램(38), 운영체제(35)(버전(OS(V1)), 사용자 데이터(37) 및 활용되지 않는 구역(non-utilised zone)(44)을 포함한다. 부분(41)의 초기 부트 프로그램은 불활성화되었고 마이크로프로세서(31)는 화살표(43)에 의해 도시된 것처럼, 보안 요소(30)의 시동 동안 부트 프로그램(38)의 실행을 개시하도록 구성된다. 이러한 상태에서, 운영체제(35)는 활성화되고 부트 프로그램(38)은 따라서, 화살표(45)에 의해 도시된 것처럼, 운영체제(35)의 실행을 개시한다. 이는 전술된 단계들(100, 101 및 112)에 대응한다.
도 4c는 운영체제(35)의 업데이트의 과정 동안의 비휘발성 메모리(34)의 부분(40)을 도시한다. 더 정확하게는, 도 4c의 상태 내에서, 운영체제(35)는 삭제에 의해 또는 상태 인디케이터(39)의 수정에 의해 불활성화되었다(도 2의 단계(115)). 부트 프로그램(38)은, 화살표(46)에 의해 도시된 것처럼, 메시지들(M9i)을 수신하고, 화살표(47)에 의해 도시된 것처럼, 운영체제(35)의 이전 버전의 위치에서 이들 메시지들 내에 포함된 블록들(OSBi)을 저장한다. 이는 도 2의 단계(109)에 대응한다.
도 4d는 운영체제(35)의 업데이트 후(도 2의 단계(111)) 비휘발성 메모리(34)의 부분(40)을 도시한다. 부분(40)은 부트 프로그램(38), 버전(OS(V2)) 내의 운영체제(35), 사용자 데이터(37) 및 활용되지 않는 구역(44)을 포함한다. 운영체제(35)의 버전들(OS(V1) 및 OS(V2))이 필연적으로 갖은 크기를 갖지 않음으로써, 활용되지 않는 구역은 도 4d 및 도 4b 간에 서로 상이한 크기일 수 있다. 도시된 상태에서, 운영체제(35)는 활성화된다. 마이크로프로세서(31)는, 화살표(43)에 의해 도시된 것처럼, 보안 요소의 시동 동안 부트 프로그램(38)의 실행을 개시하도록 구성될 수 있다. 이러한 상태에서, 운영체제(35)는 활성화되고 부트 프로그램(38)은 따라서, 화살표(45)에 의해 도시된 것처럼, 운영체제(35)의 실행을 개시할 수 있다.
도면들(5a 내지 5d)는 보안 요소(30)에 의한 메시지들(M4(명령 ADPU << 가용한 버전 푸쉬(PUSH AVAILABLE VERSION)>>) 및 M6'(명령 ADPU << 상호 인증(MUTUAL AUTHENTICATION) >>))의 처리의 예를 도시한다.
특히, 도 5a는 운영체제(35)가 활성일 때, 메시지(M4(명령 ADPU << 가용한 버전 푸쉬(PUSH AVAILABLE VERSION)>>))의 처리를 도시한다. 메시지(M4)의 수신은 따라서 도 2의 단계(202)에 대응한다. 메시지(M4)에 응답하여, 운영체제(35)는 운영체제(35)의 버전을 결정하기 위해 부트 프로그램(38)을 조회한다(화살표(50)). 부트 프로그램(38)은 다음으로 운영체제(35)의 내에서 버전 정보를 찾고(화살표(51)) 운영체제에 응답한다(화살표(52)). 이들의 교환들은 프로그래밍 인터페이스(API)에 의해 수행된다. 다음으로, 운영체제(35)는 메시지(M5)를 통해 응답하고 이는 도 2의 단계(204)에 대응한다.
비교의 방식으로써, 도 5b는 운영체제(35)가 비활성일 때 메시지(M4(명령 ADPU << 가용한 버전 푸쉬(PUSH AVAILABLE VERSION)>>))를 도시한다. 본 예에서, 운영체제(35)는 클리어되었다. 메시지(M4)의 수신은 도 2의 단계(102)에 대응한다. 메시지(M4)에 응답하여, 부트 프로그램(38)은 운영체제(35)의 버전을 결정하기 위해 운영체제(35)를 조회하는 것을 시도한다(화살표(53)). 운영체제(35)는 클리어되었기 때문에, 부트 프로그램(38)은 응답 없음을 수신(receives no response)하고 따라서 부트 프로그램(38)이 저장하는 디폴트 버전을 사용한다. 다음으로, 부트 프로그램(38)은 메시지(M5)를 통해 응답하고, 이는 도 2의 단계(104)에 대응한다.
도 5c는 운영체제(35)가 활성일 때 메시지(M6'(명령 ADPU << 상호 인증(MUTUAL AUTHENTICATION) >>))의 처리를 도시한다. 메시지(M6')의 수신은 따라서 도 2의 단계(205)에 대응한다. 메시지(M6')에 응답하여, 운영체제(35)는 업데이터 디바이스(10)의 인증 데이터(AUTH10)를 검증하기 위해 부트 프로그램(38)을 조회한다(화살표(54)). 부트 프로그램(38)은 마스터 키(MKi)를 사용함으로써 인증 데이터(AUTH10)를 검증한다(화살표(56)). 이는 도 2의 단계들(113 및 114)에 대응한다. 부트 프로그램(38)은 운영체제에 대한 인증을 확정(confirm)한다(화살표(55)). 다음으로, 운영체제(35)는 메시지(M7)를 통해 응답하고, 이는 도 2의 단계(208)에 대응한다.
비교의 방식으로써, 도 5d는 운영체제(35)가 비활성일 때 메시지(M6'(명령 ADPU << 상호 인증(MUTUAL AUTHENTICATION) >>))의 처리를 도시한다. 메시지(M6')의 수신은 따라서 도 2의 단계(105)에 대응한다. 메시지(M6')에 응답하여, 부트 프로그램(38)은 마스터 키(MKi)를 사용함으로써 인증 데이터(AUTH10)를 검증한다(화살표(57)). 이는 도 2의 단계들(106 및 107)에 대응한다. 부트 프로그램(38)은 인증을 확정하고 메시지(M7)를 통해 응답하며, 이는 도 2의 단계(108)에 대응한다.
도 2 및 도 3을 참조하여, 보안 요소(30) 및 업데이터 디바이스(10) 간의 상호 인증 및 암호화된 통신의 구현(realization)이 설명된다. 전문가(expert)는 이들의 기능들을 수행하기 위해 적절한 키들에 대한 포맷들 및 암호화 알고리즘(cryptographic algorithm)들을 선택할 수 있다. 이것에 제한되지 않는(non-limiting) 예시가 하기에 제공된다.
업데이터 디바이스(10)는 32 개의 옥탯들의 비밀 키(K)를 저장한다. 업데이터 디바이스(10)가 16 개의 옥텟들의 시리얼 번호(Ni)를 수신할 때, 업데이터 디바이스(10)는 K 및 Ni의 함수로서, 보안 요소(30)에 대응하는 32 개의 옥텟의 키(MKi)를 결정할 수 있고, 이에 관한 시리얼 번호는 Ni 다. K 및 Ni 의 함수로서 MKi 를 계산하기 위한 알고리즘은 시스템의 설계자들에 의해 선택될 수 있고 보안을 개선시키기 위해 비밀로 유지될 수 있다. 시리얼 번호(Ni)의 사용은 인증 데이터 및 상이한 보안 요소들에 대한 암호화를 구별한다(differentiate). 보안 요소는 키(MKi)를 직접적으로 저장하고 따라서 K 및 Ni 의 함수로서 MKi 를 계산할 필요가 없다.
세션 키(SK)는 알고리즘 AES-256을 사용함으로써, 키(MKi) 및 32 개의 옥텟들의 임의의 수(RAND)의 함수로서, 결정될 수 있다. 업데이터 디바이스(10) 및 보안 요소(30)은 둘 다를 계산한다. (SK = AES-256(MKi, RAND))
임의의 수(RAND) 대신에, 또 다른 변수(슈도-임의 변수(pseudo-random variable), 증분수(incremental number) 등)가 사용될 수 있다.
인증 데이터(AUTH10) 및 인증 데이터(AUTH30)는 또한 알고리즘 AES-256을 사용함으로써, 세션 키(SK) 및 임의의 수(RAND)의 함수로서, 결정될 수 있다. 이러한 방식에서, 업데이터 디바이스(10)는 AUTH10 = AES-256(SK, RAND)를 계산한다. 대응하여, 보안 요소(30)는 AUTH30 = AES-256(SK, RAND)를 계산한다. 수신된 인증 데이터(AUTH10) 및 결정된 인증 데이터(AUTH30)를 비교함으로써, 보안 요소(30)는 업데이터 디바이스(10)의 인증을 완료한다.
보안 요소(30)에 의해 업데이터 디바이스(10)로 전송된 메시지(M7)는 알고리즘 AES-256-CBC-ISO9797-M1 : M7 = AES-256-CBC-ISO9797-M1 (SK, V1)를 사용함으로써 세션 키(SK)에 의해 암호화된 운영체제(35)의 현재 버전(V1)을 포함한다. 이는 업데이터 디바이스(10)에 의한 보안 요소(30)의 인증을 허용한다. 이러한 효과를 위해, 모드 CBC(<< 암호-블록 체이닝(Cipher-block chaining) >>)가 사용되고 임의의 수(RAND)의 함수로서 결정되는 ICV 암호(cryptogram)가 사용된다. 예컨대, ICV는 알고리즘 AES-256을 임의의 수(RAND)의 16개의 중심의(central) 옥텟들에 적용함으로써 결정된다.
이러한 방식에서, 보안 요소(30) 및 업데이터 디바이스(10) 간의 상호 인증은 완료될 수 있다.
도면들(6 및 7)은 암호화된 운영체제(35)의 새로운 버전(OS(V2))를 포함하는 블록들(OSB1, OSB2, ... , OSBN)의 업데이터 디바이스(10)에 의한 결정의 예를 도시한다.
OS(V2)로 지시된, 운영체제의 코드는 마이크로프로세서(31)에 의해 실행 가능한 명령어들을 특히 포함하는 암호화되지 않은 데이터의 세트(set)이다. 업데이터 디바이스(10)는 코드(OS(V2))의 끝에 임프린트(60)를 추가한다. 임프린트(60)는 예컨대, 알고리즘 SHA-512를 사용함으로써 결정된다.
다음으로, 업데이터 디바이스(10)는 코드(OS(V2))의 시작에 비밀수(secret number)(61), 코드(OS(V2))의 크기(62) 및 코드(OS(V2))의 운영체제의 버전(63)을 추가한다. 비밀수(61)는 예컨대, 4 개의 옥텟 상에 코드되고 업데이터 디바이스(10) 및 보안 요소(30)에 알려질 수 있다(is known to). 비밀수(61),의 추가는 검증 동안 추가된 보안을 제공한다. 크기(61)는 예컨대, 4 개의 옥텟 상에 코드된다. 코드(OS(V2))의 운영체제의 버전(63)은 예컨대, 두 개의 옥텟 상에 코드된다.
다음으로, 업데이터 디바이스(10)는 비밀수(61), 크기(62), 버전(63), 코드(OS(V2)) 및 임프린트(61)에 의해 형성된 세트의 끝에 16 의 N 배수인 옥텟들의 총 개수를 달성하기 위해 채움 데이터(64)(예컨대, << 0 >> 값들의 옥텟들)를 추가한다. 따라서, N 개의 블록들(데이터 1, 데이터 2, ... , 데이터 N) 내에 형성된 모든 데이터는 16 개의 옥텟들로 분해하는 것이 가능하고, 상기 데이터는 암호화되지 않은 코드(OS(V2))를 포함한다.
블록들(데이터 1, 데이터 2, ... , 데이터 N)로부터, 업데이터 디바이스(10)는 예컨대, 도 7 내에 도시된 것처럼, 암호화된 코드(OS(V2))를 포함하는 블록들(OSB1, OSB2, ... , OSBN)을 결정한다.
도 7에서 ICV 는 임의의 수(RAND)의 함수로서 결정되는 암호이다. 예컨대, ICV 는 임의의 수(RAND)의 16 개의 중심의 옥텟들에 알고리즘 AES-256를 적용함으로써 결정된다.
다음으로, 키(SK) 및 ICV 암호를 사용함으로써 CBC(<< 암호-블록 체이닝 >>) 모드 내에서 알고리즘 AES-256에 의해 블록들(데이터 1, 데이터 2, ... , 데이터 N)의 암호화가 수행된다. 이러한 방식에서, ICV 암호 및 블록(데이터 1)은 XOR 연산(operation)(배타적 OR)에 의해 결합된다. 다음으로, 블록(OSB1)을 결정하기 위해 세션 키(SK) 및 알고리즘 AES-256를 사용함으로써 이 XOR 연산의 결과는 암호화된다.
각 다음의 블록(데이터 (i))에 대해, 대응하는 블록(OSB(i))은 ICV 암호 대신에 블록(OSB(i-1))을 사용함으로써 유사하게 결정된다.
각 블록(OSB(i))이 수신된 후, 도 2의 단계(109)에서, 보안 요소(30)는 세션 키(SK)로 수신된 데이터를 해독한다. 다음으로, 단계(110))에서, 특히 임프린트(60) 및 비밀수(610)의 검증은 여하의 손상(corruption)을 탐지한다.
도 1의 시스템은 몇 가지 이점들을 갖는다.
특히, 보안 요소(30)의 운영체제(35)를 업데이트 하는 것이 가능하다. 이러한 업데이트는 보안 요소(30)가 사용자의 단말(20) 내에서 이미 동작하고 있는 동안 완료될 수 있다. 전기 통신망을 통과하는 단말(20) 및 업데이터 디바이스(10) 간의 통신의 경우, 사용자는 서비스 제공자의 업체(shop)과 같은 소정의 현장에 꼭 가지 않아도 된다. 운영체제(35)는 그 전체로서 교체될 수 있다. 업데이트 동안, 사용자 데이터(37)는 수정되지 않는다. 이러한 방식에서, 업데이트 후, 사용자는 여전히 자신의 어플리케이션들 및 자신의 개인의 데이터를 가질 수 있다. 또한, 단말(20)의 동작은 꼭 방해 받지(interrupted) 않아도 된다.
업데이터 디바이스(10) 및 보안 요소(30)의 상호 인증과 업데이터 디바이스(10) 및 보안 요소(30) 간의 암호화된 통신 때문에, 제3 자가 운영체제의 새로운 버전(OS(V2))를 획득하거나 업데이터 디바이스(10)로서 그 자신을 사칭함(passing itself off)으로써 보안 요소(30)에 손상된 버전을 제공하는 것은 가능하지 않다. 특히, 단말(20)의 프로그램(P1)이 손상된 버전에 의해 교제되면, 이러한 버전은 기껏(at best) 암호화된 블록들(OBS(i))을 획득할 수 있다. 다시 말해, 운영체제의 기밀성(confidentiality) 및 완전성(integrity)은 보호된다. 이러한 특성들은 보안 요소 및/또는 시스템의 증명(certification)을 획득할(attain) 수 있다.
업데이터 디바이스(10)는 실패한 상호 인증의 시도들을 카운트할 수 있다. 이 횟수가 소정의 임계값에 도달하면, 업데이터 디바이스(10)는 예컨대, 보안 요소에 경고(warning) 또는 블랙리스트(blacklist)를 전송하는 보호의 단계를 취할 수 있다.
상호 인증 및 암호화는 보안 요소의 시리얼 번호를 기반으로 함으로써, 상호 인증 및 암호화는 보안 요소를 통해 다양화된다(diversified). 하나의 결함(fault)은 따라서 업데이터 디바이스에 연결된(linked) 모든 보안 요소들에 영향을 미치지는 않는다.
임의의 수(RAND)는 업데이터 디바이스(10)에 의해서가 아닌, 보안 요소에 의해 생성된다. 보안 요소에 의한 임의의 수(RAND)의 생성은 업데이터 디바이스 상에 부과되는 작업 부하(workload)를 제한하고, 이는 업데이터 디바이스가 수 많은 보안 요소들에 관련된 경우에 있어서 특히 관심을 끈다(interesting in).
보안 요소 및 업데이터 디바이스 간의 상호 인증과 암호화된 통신에 대한 동일한 세션 키(SK)의 사용은 보안 요소의 수준에서(at the level of) 필요한 자원들을 제한한다. 그러나, 변형된 실시예에 있어서, 상호 인증 및 암호화된 통신은 상이한 키들을 사용한다.
단말(20) 상의 프로그램(P1)의 존재는 운영체제의 업데이트 동안 단말(20)의 성능을 순응시킨다(adapt). 예컨대, 보안 요소(30)의 어플리케이션들을 사용하는 단말(20)의 어플리케이션들은 업데이트 동안 불할성화될 수 있다.

Claims (11)

  1. 적어도 하나의 마이크로프로세서(31), 비휘발성 메모리(34) 및 통신 인터페이스(36)를 포함하는 보안 요소(30)에 있어서,
    상기 보안 요소(30)는 상기 통신 인터페이스(36)를 통해 업데이터 디바이스(10)와 통신할 수 있고,
    상기 비휘발성 메모리(34)는 적어도 하나의 부트 프로그램(38)을 저장하고,
    상기 마이크로프로세서(31)는 상기 보안 요소(30)의 시동(startup) 동안 상기 부트 프로그램(38)을 실행하도록 구성되고,
    상기 부트 프로그램(38)은 방법의 실행을 위한 명령어들을 포함하는 것을 특징으로 하고,
    상기 방법은,
    상기 명령어들이 상기 마이크로프로세서(31)에 의해 실행될 때,
    - 상기 비휘발성 메모리(34)가 활성의(active) 운영체제(operating system)(35)를 저장하는지 여부를 결정하여, 긍정적이라면(in the affirmative) 상기 운영체제(35)가 상기 통신 인터페이스(36) 상에서 수신된 명령들을 관리하도록상기 운영체제(35)의 실행을 개시하고, 부정적이라면(in the negative) 상기 부트 프로그램(38)이 상기 통신 인터페이스(36) 상에서 수신된 명령들을 관리하도록 하는 시동 단계(101, 112);
    -상기 보안 요소(30)에 의해 결정되는 제1 인증 데이터(AUTH30) 및 상기 업데이터 디바이스(10)로부터 수신되는 제2 인증 데이터(AUTH10)의 함수(function)로서, 상기 업데이터 디바이스(10)의 인증 단계(104, 105, 106, 107, 113 및 114);
    - 상기 인증 단계에 응답하여, 상기 비휘발성 메모리(34) 내의 상기 업데이터 디바이스(10)로부터 수신된 새로운 운영체제의 저장 단계(109 및 110); 및
    상기 새로운 운영체제의 활성화(activation) 단계(111)
    를 포함하는 보안 요소(30).
  2. 제1항에 있어서,
    상기 업데이터 디바이스의 상기 인증 단계는,
    - 상기 업데이터 디바이스(10)로 변수(RAND)를 포함하는 메시지(M5)를 전송하기(104) 위한 단계;
    - 상기 제2 인증 데이터(AUTH10)를 수신하기(105)위한 단계;
    - 상기 비휘발성 메모리(34) 내에 저장된 상기 변수(RAND) 및 키(MKi)의 함수로서 제1 인증 데이터(AUTH30)의 결정 단계(106 및 113); 및
    - 상기 제1 인증 데이터(AUTH30) 및 제2 인증 데이터(AUTH10)의 비교 단계(107 및 114)
    를 포함하는 보안 요소(30).
  3. 제2항에 있어서,
    상기 부트 프로그램(38)은 상기 키(MKi) 및 상기 변수(RAND)의 함수로서 암호화된(encrypted) 자료(datum)(V1)를 포함하는 메시지(M7)의 상기 업데이터 디바이스(10)로의 전송 단계(108)의 실행을 위한 명령어들을 포함하는 보안 요소(30).
  4. 제2항 또는 제3항 중 어느 한 항에 있어서,
    상기 비휘발성 메모리(34)는 방법의 실행을 위한 명령어들을 포함하는 운영체제(35)를 포함하고,
    상기 방법은,
    - 상기 변수(RAND)를 포함하는 메시지(M5)의 상기 업데이터 디바이스(10)로의 전송 단계(204); 및
    - 상기 제2 인증 데이터(AUTH10)의 수신 단계(205)
    를 포함하는 보안 요소(30).
  5. 제4항에 있어서,
    상기 운영체제(35)는 상기 키(MKi) 및 상기 변수(RAND)의 함수로서 암호화된 자료(V1)를 포함하는 메시지(M7)의 상기 업데이터 디바이스(10)로의 전송 단계(208)의 실행을 위한 명령어들을 포함하는 보안 요소(30).
  6. 제1항에 있어서,
    상기 저장 단계는 암호화된 상기 새로운 운영체제의 수신(receipt)을 포함하는 보안 요소(30).
  7. 제2항에 있어서,
    상기 인증 단계는 상기 키(MKi) 및 상기 변수의 함수로서 세션 키(session key)(SK)의 결정을 포함하고,
    상기 저장 단계는 상기 세션 키(SK)로 암호화된 상기 새로운 운영체제의 수신을 포함하는 보안 요소(30).
  8. 제1항에 있어서,
    상기 부트 프로그램(38)은 상기 비휘발성 메모리(34)의 재기입 불가능한 부분(non-rewritable part)(41) 내에 저장되는 보안 요소(30).
  9. 제1항에 있어서,
    상기 부트 프로그램(38)은 상기 비휘발성 메모리(34)의 재기입 가능한 부분(rewritable part)(40) 내에 저장되고,
    상기 비휘발성 메모리(34)는 상기 부트 프로그램(38) 상에 기입하는 명령들을 차단하도록 구성된 운영체제(35)를 포함하는 보안 요소(30).
  10. 적어도 하나의 마이크로프로세서(21), 비휘발성 메모리(24) 및 제1항의 보안 요소(30)를 포함하는 단말(20)에 있어서,
    상기 단말(20)의 상기 비휘발성 메모리(24)는 상기 보안 요소(30)에 의해 제공되는 서비스를 사용하기 위한 업데이트의 관리 프로그램(P1) 및 어플리케이션(A1)을 포함하고,
    방법의 실행을 위한 명령어들의 상기 업데이트의 관리 프로그램(P1)에 있어서,
    상기 방법은,
    상기 명령어들이 상기 단말(20)의 상기 마이크로프로세서(21)에 의해 실행될 때,
    - 상기 업데이터 디바이스(10)로부터 상기 새로운 운영체제의 수신을 포함하고 상기 새로운 수신된 운영체제를 상기 보안 요소로 전송하는 송신(transmission) 단계; 및
    - 적어도 상기 송신 단계 동안의 상기 서비스의 불활성화(deactivation) 단계
    를 포함하는 단말(20).
  11. 제1항의 적어도 하나의 보안 요소(30) 및 상기 운영체제의 상기 새로운 버전을 저장하는 업데이터 디바이스(10)를 포함하는 시스템.
KR1020130086043A 2012-07-20 2013-07-22 보안 요소를 위한 운영체제 업데이트 KR101517286B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1257062 2012-07-20
FR1257062A FR2993682B1 (fr) 2012-07-20 2012-07-20 Mise a jour d'un systeme d'exploitation pour element securise

Publications (2)

Publication Number Publication Date
KR20140011998A KR20140011998A (ko) 2014-01-29
KR101517286B1 true KR101517286B1 (ko) 2015-05-04

Family

ID=47003055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130086043A KR101517286B1 (ko) 2012-07-20 2013-07-22 보안 요소를 위한 운영체제 업데이트

Country Status (10)

Country Link
US (1) US9779246B2 (ko)
EP (1) EP2688010B1 (ko)
JP (1) JP6214259B2 (ko)
KR (1) KR101517286B1 (ko)
CN (1) CN103577221B (ko)
BR (1) BR102013020063B1 (ko)
ES (1) ES2795101T3 (ko)
FR (1) FR2993682B1 (ko)
RU (1) RU2643457C2 (ko)
TW (1) TWI510959B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011015710A1 (de) * 2011-03-31 2012-10-04 Giesecke & Devrient Gmbh Verfahren zum Aktualisieren eines Datenträgers
FR3019347B1 (fr) 2014-03-25 2017-07-21 Oberthur Technologies Securisation du chargement de donnees dans une memoire non-volatile d'un element securise
EP2930641B1 (en) 2014-04-07 2019-04-03 Nxp B.V. Method of Programming a Smart Card, Computer Program Product and Programmable Smart Card
FR3023951B1 (fr) * 2014-07-15 2016-08-05 Oberthur Technologies Procede d'etablissement d'une session de communication via une interface swp
US9934014B2 (en) * 2014-08-22 2018-04-03 Apple Inc. Automatic purposed-application creation
DE102014220616A1 (de) 2014-10-10 2016-04-14 Bundesdruckerei Gmbh Verfahren zum Laden von ausführbaren Programminstruktionen in eine Chipkarte im Wirkbetrieb
DE102014224278A1 (de) * 2014-11-27 2016-06-02 Bundesdruckerei Gmbh Verfahren zum Nachladen von Software auf eine Chipkarte durch einen Nachladeautomaten
KR102459703B1 (ko) * 2014-12-29 2022-10-27 엘지디스플레이 주식회사 유기발광다이오드 표시장치와 그 구동방법
KR101662947B1 (ko) * 2015-03-25 2016-10-05 (주)에이티솔루션즈 보안운영체제를 이용한 세션보안 제공 방법
EP3086254A1 (en) * 2015-04-22 2016-10-26 Gemalto Sa Method of managing applications in a secure element when updating the operating system
JP2017033149A (ja) 2015-07-30 2017-02-09 株式会社東芝 情報処理装置、コントローラ、及び、情報処理装置の制御方法
JP6602102B2 (ja) * 2015-08-21 2019-11-06 三菱電機株式会社 プログラム更新制御装置、情報家電機器、プログラム更新システム、プログラム更新方法およびプログラム
EP3160166A1 (en) * 2015-10-19 2017-04-26 Gemalto Sa Method for managing applications in a secure element
EP3176695A1 (en) * 2015-12-04 2017-06-07 Gemalto Sa Method for managing a package in a secure element
EP3208717A1 (en) * 2016-02-17 2017-08-23 Gemalto Sa Method for managing objects in a secure element
WO2017171749A1 (en) * 2016-03-30 2017-10-05 Ford Global Technologies, Llc Vehicle computer update authentication
US10911939B2 (en) * 2017-06-14 2021-02-02 Huawei Technologies Co., Ltd. Embedded universal integrated circuit card profile management method and apparatus
KR102057665B1 (ko) * 2017-07-04 2020-01-22 주식회사 웨인 리눅스 계열 운영체제 배포시스템
US10769279B2 (en) * 2017-08-24 2020-09-08 Apple Inc. Secure element operating system update notification
JP6988444B2 (ja) * 2017-12-20 2022-01-05 大日本印刷株式会社 初期設定方法、セキュアエレメント、デバイス及びプログラム
US10789364B2 (en) * 2018-05-02 2020-09-29 Nxp B.V. Method for providing an authenticated update in a distributed network
CN108874418B (zh) * 2018-05-23 2022-04-05 北京五八信息技术有限公司 Ui组件的更新方法、装置、终端及计算机可读存储介质
EP3736716B1 (en) * 2019-05-10 2021-12-22 Aptiv Technologies Limited Method for protecting an electronic control unit
US11240634B1 (en) * 2020-01-02 2022-02-01 II Leon Tyrone Cain Systems and methods for initiating a secure media session between mobile computing devices during image capture
EP4113341A1 (en) * 2021-06-30 2023-01-04 Giesecke+Devrient Mobile Security GmbH Encryption scheme for providing software updates to an update agent
EP4307142A1 (en) * 2022-07-13 2024-01-17 Giesecke+Devrient Mobile Security Germany GmbH Update agent for multiple operating systems in a secure element

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276555A (ja) * 2007-04-27 2008-11-13 Toshiba Corp 情報処理装置、およびファームウェア更新方法
WO2012062632A1 (en) 2010-11-08 2012-05-18 Gemalto Sa Software updating process for an embedded device

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4216914B2 (ja) 1997-10-17 2009-01-28 株式会社リコー ネットワークシステム
US5987605A (en) * 1998-02-28 1999-11-16 Hewlett-Packard Co. Methods and apparatus for dual-boot memory selection, update, and recovery in a programmable device
DE19925389A1 (de) * 1999-06-02 2000-12-21 Beta Res Gmbh Verfahren und Vorrichtung zur Übertragung von Daten auf SmartCards
DE19926389B4 (de) 1999-06-10 2008-02-07 Behr Gmbh & Co. Kg Luftführungsanordnung für eine Kraftfahrzeug-Klimatisierungsanlage
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US6944854B2 (en) * 2000-11-30 2005-09-13 International Business Machines Corporation Method and apparatus for updating new versions of firmware in the background
CN1734418A (zh) * 2004-08-09 2006-02-15 上海乐金广电电子有限公司 存储器程序更新方法
US7698698B2 (en) * 2004-09-30 2010-04-13 Smith Micro Software, Inc. Method for over-the-air firmware update of NAND flash memory based mobile devices
JP2006127267A (ja) * 2004-10-29 2006-05-18 Toshiba Corp 情報処理装置およびブート制御方法
US7522732B2 (en) * 2004-11-09 2009-04-21 Lexmark International, Inc. Method for controlling the distribution of software code updates
US7865740B2 (en) * 2005-09-27 2011-01-04 Intel Corporation Logging changes to blocks in a non-volatile memory
KR100778293B1 (ko) * 2005-10-10 2007-11-22 삼성전자주식회사 디지털방송처리장치 및 디지털방송처리장치 부트로더의업그레이드 방법
JP2007213494A (ja) * 2006-02-13 2007-08-23 Ntt Docomo Inc 更新起動装置及び更新起動制御方法
KR101426710B1 (ko) * 2006-07-14 2014-09-23 삼성전자주식회사 휴대단말기의 버전정보 갱신 장치 및 방법
KR20080039046A (ko) 2006-10-31 2008-05-07 삼성전자주식회사 펌웨어 업데이트 장치 및 방법
US8635608B2 (en) 2007-09-04 2014-01-21 Teradata Us, Inc. Software update system and method
US8429643B2 (en) * 2007-09-05 2013-04-23 Microsoft Corporation Secure upgrade of firmware update in constrained memory
US8286883B2 (en) * 2007-11-12 2012-10-16 Micron Technology, Inc. System and method for updating read-only memory in smart card memory modules
US8162227B2 (en) * 2007-11-12 2012-04-24 Micron Technology, Inc. Intelligent controller system and method for smart card memory modules
US8838924B2 (en) * 2008-05-24 2014-09-16 Via Technologies, Inc. Microprocessor having internal secure memory
US8055893B2 (en) * 2008-08-28 2011-11-08 Lenovo (Singapore) Pte. Ltd. Techniques for booting a stateless client
JP5113700B2 (ja) * 2008-09-24 2013-01-09 株式会社日立ソリューションズ ファームウェア更新装置及び方法
TW201027324A (en) * 2009-01-14 2010-07-16 Giga Byte Tech Co Ltd Embedded electronic device free from being stuck in update failure and method of making the same
JP5220675B2 (ja) * 2009-04-07 2013-06-26 株式会社日立製作所 シンクライアントマスタの書換システム、シンクライアントマスタの書換方法、およびシンクライアント
JP2012058803A (ja) * 2010-09-06 2012-03-22 Dainippon Printing Co Ltd シンクライアントシステム、およびオペレーティングシステム更新方法
US8756409B2 (en) * 2010-10-13 2014-06-17 International Business Machines Corporation System, method and computer program product for retrieving data at boot time
US8984611B2 (en) * 2011-05-09 2015-03-17 I Think Security Ltd. System, apparatus and method for securing electronic data independent of their location

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276555A (ja) * 2007-04-27 2008-11-13 Toshiba Corp 情報処理装置、およびファームウェア更新方法
WO2012062632A1 (en) 2010-11-08 2012-05-18 Gemalto Sa Software updating process for an embedded device

Also Published As

Publication number Publication date
RU2643457C2 (ru) 2018-02-01
RU2013133975A (ru) 2015-01-27
FR2993682A1 (fr) 2014-01-24
TWI510959B (zh) 2015-12-01
BR102013020063B1 (pt) 2021-10-13
JP2014029688A (ja) 2014-02-13
CN103577221A (zh) 2014-02-12
TW201413491A (zh) 2014-04-01
BR102013020063A2 (pt) 2015-10-20
JP6214259B2 (ja) 2017-10-18
CN103577221B (zh) 2018-12-18
EP2688010B1 (fr) 2020-03-04
KR20140011998A (ko) 2014-01-29
FR2993682B1 (fr) 2014-08-22
US20140025940A1 (en) 2014-01-23
EP2688010A1 (fr) 2014-01-22
US9779246B2 (en) 2017-10-03
ES2795101T3 (es) 2020-11-20

Similar Documents

Publication Publication Date Title
KR101517286B1 (ko) 보안 요소를 위한 운영체제 업데이트
US9787663B2 (en) Replaying a batch of secure commands in a secure channel
US7502946B2 (en) Using hardware to secure areas of long term storage in CE devices
EP2698756B1 (en) Local Trusted Service Manager
CN108270739B (zh) 一种管理加密信息的方法及装置
KR20090101945A (ko) 보안 컨텐트와 애플리케이션의 복사를 방지하는 보안 메커니즘을 갖는 메모리 카드의 업그레이드
CN113656086A (zh) 安全存储及加载固件的方法及电子装置
US10021104B2 (en) Method for operating a security element
KR20160136386A (ko) 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화
CN104868998A (zh) 一种向电子设备供应加密数据的系统、设备和方法
CN112257093A (zh) 数据对象的鉴权方法、终端及存储介质
KR20110128160A (ko) 인증용 개인키를 내부적으로 생성하는 집적 회로 유형의 전자 소자 제어 방법
US7174465B2 (en) Secure method for system attribute modification
CN101299849B (zh) 一种WiMAX终端及其启动方法
JP6382521B2 (ja) 携帯可能電子装置、および電子回路
JP7296390B2 (ja) 電子デバイスの無欠性検査
CN108270767B (zh) 数据验证方法
EP4254855A1 (en) A device and a method for controlling use of a cryptographic key
WO2018092289A1 (ja) 情報処理装置
JP7397403B2 (ja) 電子情報記憶媒体、認証コード生成方法、認証コード検証方法、及びプログラム
JP7027184B2 (ja) 情報処理システム
JP5180264B2 (ja) 装置鍵
CN117708897A (zh) 用于保护嵌入式设备固件数据的方法以及嵌入式设备
CN117708896A (zh) 用于保护嵌入式设备固件数据的方法以及嵌入式设备
US20180307813A1 (en) Method, printing device and system for printing a three dimensional object

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 5