KR102036411B1 - 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화 - Google Patents

보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화 Download PDF

Info

Publication number
KR102036411B1
KR102036411B1 KR1020167029313A KR20167029313A KR102036411B1 KR 102036411 B1 KR102036411 B1 KR 102036411B1 KR 1020167029313 A KR1020167029313 A KR 1020167029313A KR 20167029313 A KR20167029313 A KR 20167029313A KR 102036411 B1 KR102036411 B1 KR 102036411B1
Authority
KR
South Korea
Prior art keywords
storage area
data
secure element
code storage
signature
Prior art date
Application number
KR1020167029313A
Other languages
English (en)
Other versions
KR20160136386A (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 KR20160136386A publication Critical patent/KR20160136386A/ko
Application granted granted Critical
Publication of KR102036411B1 publication Critical patent/KR102036411B1/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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/22Processing or transfer of terminal data, e.g. status or physical capabilities
    • H04W8/24Transfer of terminal data
    • H04W8/245Transfer of terminal data from a network towards a terminal

Landscapes

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

Abstract

본 발명은 외부 디바이스로부터 유래하는 데이터의 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 메모리 영역 내로의 로딩을 보안화하는 것과 그 코드 메모리 영역의 임의의 수정이 초기 프로그램에 의해 단독으로 제어되는 것에 관련된다. 외부 디바이스가 보안 엘리먼트로 송신될 데이터를 획득할 때, 보안 엘리먼트는 코드 메모리 영역의 이미지를 이들 데이터의 로딩에 의해 수정되는 것처럼 시뮬레이션한다. 서명이 이 시뮬레이션된 이미지를 기초로 계산된 다음, 그 데이터와 함께 보안 엘리먼트에게 디스패치된다. 보안 엘리먼트의 초기 프로그램은 외부 디바이스로부터 수신된 서명과 함께, 그 데이터의 실제 로딩 후에 코드 메모리 영역 전체에 대해 계산된 서명을 포함한다. 이들 서명들 간의 아이덴티티는 코드 메모리 영역이 외부 디바이스에 의해 시뮬레이션된 이미지에 확실히 부합한다는 것과, 그래서 확실히 손상되지 않았음을 보장하는 것을 가능하게 한다.

Description

보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화{SECURING OF THE LOADING OF DATA INTO A NONVOLATILE MEMORY OF A SECURE ELEMENT}
본 발명은 스마트 카드들과 같은 보안 엘리먼트들의 분야에 관한 것이다. 특히, 본 발명은 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩을 보안화하는 방법들 및 디바이스들을 제공한다.
보안 엘리먼트, 예를 들어 스마트 카드가, 호스트 전자 디바이스 내로 착탈가능 방식으로 통합되는, 또는, 변형예에서, 전자 디바이스에 (예를 들어, 솔더링에 의해) 내장되는 마이크로회로의 형태를 통상적으로 취한다. 예로서, 보안 엘리먼트가 eSE("embedded secure element") 또는 eUICC("embedded Universal Integrated Circuit Card")일 수도 있다.
보안 엘리먼트가, 그것이 통합되거나 또는 내장되는 호스트 전자 디바이스의 프로세서와는 상이한, 자신에게 특정된 프로세서를 포함하고, 프로세서에 의해 실행될 수 있는 컴퓨터 프로그램들을 저장하는 비휘발성 메모리를 포함한다.
비휘발성 메모리의 비-변경가능 영역이 보통은 작은 사이즈의 "초기" 또는 "기본" 프로그램으로서 알려진 것, 예를 들어, 보안 엘리먼트의 제조업자에 의해 저장된 부트 프로그램("부트 로더"로서 알려짐)을 저장한다. 초기 프로그램은, 사용자들에 대한 오퍼레이터 또는 보안 엘리먼트들의 공급자와 같은 중개자가, 컴파일된 또는 인터프리트된 코드(다시 말해서, 프로세서에 의해 직접적으로 실행 가능한 기계어 또는 코드에서의 코드 워드들 또는 "바이트코드들")로 보통 이루어진 소프트웨어 엘리먼트들, 이를테면 운영 체제 또는 애플리케이션들을, 초기 프로그램에 의해 정의된 비휘발성 메모리의 특수 영역 내로 로딩함으로써, 보안 엘리먼트를 커스텀화하는 것을 가능하게 하는 기능을 제공한다. 이 초기 프로그램은, 예를 들어, 특히, 이 초기 프로그램과의 통신을 위한 포트 제어 모듈, 메모리 업데이트 제어 모듈, 커맨드 인터프리터, 및 이 초기 프로그램을 보안화하기 위한 보안 모듈들을 포함하는 특정 운영 체제에 연관된다. 이 특정 운영 체제는 보안 엘리먼트의 제조업자에 의해 커스텀화되고, 시스템의 수정이 커스텀화 후에는 허용되지 않는다.
대개는, 이 초기 프로그램은 보안 엘리먼트가 시작될 때, 다시 말해서 보안 엘리먼트의 메모리에 존재할 수도 있는 임의의 다른 프로그램보다 먼저 실행되는 첫 번째 프로그램이다. 이 프로그램은 보안 엘리먼트에서의 다른 프로그램들의 실행을 위해 필수적이다.
비휘발성 메모리의 전술한 특수 영역은 초기 프로그램에 의해 전적으로 제어되는데, 그 초기 프로그램은 특수 영역 또는 그것의 내용의 경계들을 수정할 수 있는 유일한 프로그램이다.
더 정확하게는, 이들 경계들은 초기 프로그램의 레지스터들에 저장될 수도 있거나, 또는 대안적으로 그 경계들을 정의하는 커맨드들의 초기 프로그램에 의한 실행의 결과물일 수도 있다. 모든 경우들에서, 경계들의 정의 및 임의의 수정은 단지 초기 프로그램의 액션의 결과물만일 수 있다.
더욱이, 초기 프로그램만이 특수 영역을 그것의 내용의 실행을 가능하게 할(또는 금지시킬) 목적으로 활성화(또는 비활성화)시킬 수 있다.
전술한 영역은 컴파일된 또는 인터프리트된 코드를 저장하기 위해 일반적으로 사용되고, 그러므로 이후로는 "코드 저장 영역"이라고 지칭될 것이다. 코드 저장 영역은 그 코드 저장 영역이 포함하는 소프트웨어 엘리먼트들의 실행 동안, 보안 엘리먼트에서 이들 소프트웨어 엘리먼트들에 의해 사용되는 애플리케이션들 및 운영 체제의 무결성을 보장하기 위하여, 수정되지 않아야 하는 것이 특히 중요하다.
보안 엘리먼트의 수명 동안, 다른 소프트웨어 엘리먼트들이 코드 저장 영역 내로 로딩될 수도 있다. 이것들은, 예를 들어, 이미 저장된 소프트웨어 엘리먼트의 새로운 버전(소프트웨어 엘리먼트의 업데이트) 또는 새로운 데이터일 수도 있다. 코드 저장 영역 속으로 나중에 로딩되는 이들 소프트웨어 엘리먼트들의 무결성 및 정당성(legitimacy)을 보장하기 위하여, 검증(verification) 메커니즘들이, 활성화 전에, 다시 말해서 실행을 가능하게 하기 전에, 통상적으로 초기 프로그램에 의해 사용된다.
예를 들어, 문서 FR 2 993 682는, 보안 엘리먼트가 스타트 업되는 때에 실행되어, 설치된 운영 체제가 쓸모없게 될 때, 운영 체제의 새로운 버전의 코드가 업데이팅 디바이스로부터 획득되는 것을 가능하게 하는 부트 프로그램을 설명한다. 운영 체제의 이 새로운 버전의 코드의 무결성은 부트 프로그램에 의해, 한번에 하나의 코드 블록씩, 그리고 전체적으로는, 운영 체제의 새로운 버전의 활성화가 가능하게 되기 전에 검증된다.
그러나, 무결성 검증은 새로이 수신되고 로딩된 소프트웨어 엘리먼트들에만 관련된다.
따라서, 새로운 소프트웨어 엘리먼트의 로딩 전에 악의적 당사자에 의해 코드 저장 영역에 저장되는 ("멀웨어(malware)"라고 알려진) 악의적 유형의 소프트웨어 엘리먼트가, 이 무결성 검증 동안에 부트 프로그램에 의해 검출되지 않는데, 부트 프로그램은 새로이 로딩된 소프트웨어 엘리먼트에만 관련되기 때문이다. 결과적으로 보안에 공백(lapse)이 있다.
악의적 당사자가 이 코드 저장 영역에 이미 저장된 소프트웨어 엘리먼트를, 예를 들어 레이저 공격에 의해 수정 또는 손상시킨다면, 보안에 공백이 또한 있다. 이는 새로이 로딩된 소프트웨어 엘리먼트들에 대해 수행되는 무결성 검증이 코드 저장 영역의 내용에 대해 이러한 수정 또는 손상을 밝혀낼 수 없기 때문이다.
그래서 보안 엘리먼트의 보안화의, 그리고 특히 데이터가 이 저장 영역에 로딩되는 때에 소프트웨어 엘리먼트들의 무결성의 제어를 개선할 필요가 있다.
따라서, 본 발명의 목적은 이 단점들 중 적어도 하나를 극복하는 것이다.
이 문맥에서, 본 발명의 제1 양태는 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩을 보안화하는 방법에 관한 것이고, 상기 비휘발성 메모리는 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 저장 영역이라 지칭되는 저장 영역을 포함하며, 그 저장 영역의 임의의 수정이 상기 초기 프로그램에 의해 단독으로 제어되고, 상기 방법은 보안 엘리먼트 외부의 디바이스에 의해 실행되는 다음의 단계들:
- 보안 엘리먼트에 송신될 데이터를 획득하는 단계;
- 보안 엘리먼트의 이 코드 저장 영역 내로의 획득된 데이터의 로딩에 의해 수정된 코드 저장 영역의 이미지를 시뮬레이션하는 단계;
- 전체로서 코드 저장 영역의 시뮬레이션된 이미지의 서명을 계산하는 단계; 및
- 획득된 데이터와 계산된 서명을 상기 보안 엘리먼트에 송신하는 단계를 포함한다.
덧붙여, 본 발명의 제2 양태는 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩을 보안화하는 방법에 관한 것이고, 상기 비휘발성 메모리는 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 저장 영역이라 지칭되는 저장 영역을 포함하며, 그 저장 영역의 임의의 수정이 상기 초기 프로그램에 의해 단독으로 제어되고, 상기 방법은 보안 엘리먼트에 의해 실행되는 다음의 단계들:
- 외부 디바이스로부터 데이터와 서명을 수신하는 단계;
- 외부 디바이스로부터 수신된 데이터를 코드 저장 영역의 부분 내로 로딩하는 단계;
- 데이터가 로딩된 후 전체 코드 저장 영역의 서명을 계산하는 단계; 및
- 수신된 서명과 계산된 서명이 동일하다면 단독으로 코드 저장 영역의 내용의 실행을 가능하게 하기 위하여, 수신된 서명을 사용하여 계산된 서명을 검증하는 단계를 포함한다.
따라서 본 발명은 보안 엘리먼트 내로 로딩된 데이터의 무결성뿐만 아니라, 코드 저장 영역의 부분만을 점유하는 이들 데이터의 로딩 후의 코드 저장 영역의 무결성을 체크하는데 사용될 수 있다.
이 장점은, 종래 기술에서처럼 로딩된 데이터만을 고려하는 대신, 데이터 전부의 로딩의 결과로서 있게 될 바와 같이, 전체 저장 영역의 이미지의 시뮬레이션에 기초하여 서명을 계산함으로써 획득된다.
따라서 외부 디바이스는, 로딩될 데이터의 로딩에 의해 수정될 또는 수정되지 않을 바와 같이, 코드 저장 영역의 비트들 중 각각의 비트의 로케이션 및 값을 시뮬레이션한다.
코드 저장 영역에서의 임의의 코드의 값 및/또는 그것의 로케이션 때문에 예상 밖인 그 임의의 코드가, 코드 저장 영역 내에서 검출될 수 있는데, 그 임의의 코드의 존재가 데이터 로딩이 일어난 후 외부 디바이스에서 시뮬레이션된 이미지를 통해 계산된 서명과 저장 영역에서의 보안 엘리먼트 자체에 의해 계산된 서명 간에 차이를 만들어서이다.
따라서, 데이터의 로딩 후의 메모리 상태에 대응하는 코드 저장 영역의 시뮬레이션된 이미지를 기초로 디바이스에 의해 계산된 서명과 이들 다양한 데이터의 로딩이 일어난 후의 코드 저장 영역의 서명 사이에 임의의 차이가 있다면, 코드 저장 영역의 활성화, 다시 말해서 그 영역의 내용들의 실행과, 그러므로, 특히, 보안 엘리먼트 내로 로딩된 데이터가 불가능한 상태가 된다(즉, 금지된다). 따라서 그것들의 실행을 위한 데이터의 로딩이 보안화된다.
본 발명은 그러므로 컴파일된 또는 인터프리트된 코드의 조각(또는 더 일반적으로는 예상 밖의 데이터)이 코드 저장 영역에서의 예상 밖의 로케이션에 저장된, 또는 예상되는 값을 갖는 때를 검출하는데 사용된다.
예를 들어, 악의적 소프트웨어 엘리먼트의 존재, 또는 데이터 로딩 후에 이미 메모리에 있는 소프트웨어 엘리먼트에 대한 수정 또는 손상이, 외부 디바이스로부터 수신된 임시 서명을 사용하여, 보안 엘리먼트의 초기 프로그램에 의해 상기 로딩 후에 획득된 저장 영역의 전체에 걸쳐 계산되는 서명의 검증 동안 검출된다.
본 발명의 실시예들에 따른 다른 특징들이 종속 청구항들에서 설명된다.
본 발명의 구체적인 실시예들에서, 상기 데이터는 데이터를 획득하려는 요청에 응답하여 보안 엘리먼트에 송신되고, 획득하려는 요청은 보안 엘리먼트를 식별하는 정보를 포함한다.
본 발명의 특정 실시예들에서, 상기 데이터는 데이터를 획득하려는 요청에 응답하여 보안 엘리먼트에 송신되고, 데이터를 획득하려는 요청은 보안 엘리먼트의 코드 저장 영역의 현재 이미지를 나타내는 소프트웨어 구성의 고유 식별자를 포함한다.
따라서 외부 디바이스는 이 현재 이미지를 복구하고 데이터 로딩에 의해 수정된 메모리의 이미지를 효율적으로 시뮬레이션할 수 있다. 이는 코드 저장 영역의 비트들의 현재 배치구성(arrangement) 및 값이 정확히 알려질 수 있기 때문이다.
본 발명의 특정 실시예들에서, 서명은 외부 디바이스로 전송되는 암호화된 커맨드에서 획득된 데이터의 활성화에 대한 요청(즉, 실행을 가능하게 하려는 요청)과 함께 보안 엘리먼트에 송신된다.
이 배치구성은 실행 인에이블화 프로세스를 보안화하는데, 활성화에 대한 요청과 활성화 전(즉, 실행이 인에이블되기 전)에 검증에 요구된 서명이 공동으로 보호되기 때문이다.
활성화는 서명들의 긍정적 검증 직후에 수행될 수도 있거나, 또는 나중에, 예를 들어 보안 엘리먼트의 다음의 스타트-업에서 일어날 수도 있다는 것에 주의해야 한다. 이 나중의 활성화는, 특히 해당 데이터가 그것의 운영 체제 또는 이 운영 체제의 부분의 업데이트에 대응한다면, 보안 엘리먼트의 동작의 인터럽트를 피하는 것을 가능하게 한다.
대안적으로, 활성화는 활성화 요청을 받는 일 없이 초기 프로그램에 의해 자동으로 실행될 수 있다. 활성화는 요청에 의해, 또는 전체 코드 저장 영역에 대해, 요청될 수도 있는 임의의 데이터에 관련된다.
이 대안에서, 서명은 보안 엘리먼트로의 송신을 위해 외부 디바이스에 의해 암호화된 채로 남아 있다.
본 발명의 특정 실시예들에서, 획득된 데이터는 획득된 데이터가 내로 로딩될 코드 저장 영역에서의 로케이션 또는 로케이션들의 표시와 함께 전자 디바이스에 의해 송신된다.
코드 저장 영역의 각각의 비트의 로케이션은 그러므로 외부 디바이스에 의해 정의되며, 따라서 외부 디바이스가 이들 보충적 표시들의 측면에서 시뮬레이션한 데이터 로딩과 동일한 데이터의 로딩을 보안 엘리먼트가 수행할 것을 보장한다. 시뮬레이션된 이미지를 기초로 획득된 서명은 그러므로 보안 엘리먼트의 초기 프로그램이 상기 데이터의 로딩 후에 계산해야만 하는 서명과 반드시 동일하다.
본 발명의 특정 실시예들에서, 코드 저장 영역은 P개의 서브-영역들로 구획화되고, 서명을 계산하는 단계는 각각의 서브-영역에 대한 기본 서명을 획득하는 단계와, 시뮬레이션되든 또는 아니든 간에, P개의 기본 서명들의 조성(composition)에 의해, 전체 코드 저장 영역에 대한 서명을 획득하는 단계를 포함한다.
이 구성에서, 기본 서명의 계산은 임의의 다른 기본 서명의 계산과는 독립적이라서, 수정된 서브-영역들로 제한되는 (기본 서명의) 무결성 계산으로 코드 저장 영역의 (예를 들어, 서브-영역에 의한) 모듈식 업데이트들을 수행하는 것을 가능하게 한다. 이런 식으로 계산 비용이 실질적으로 감소될 수도 있다.
본 발명의 특정 실시예들에서, P개의 기본 서명들의 조성은 전단사 함수(bijective function)의 적용을 포함한다.
이는, 예를 들어 배타적 OR 유형(XOR)의 함수일 수도 있다. 이 함수는 기본 서명들의 조성에 의한 서명의 계산에 대한 서브-영역들의 순서 상의 제약을 피하기 위해 사용될 수 있다. 따라서 외부 디바이스와 보안 엘리먼트는 상이한 방도들로 로딩될 데이터의 부분들을 코드 저장 영역을 형성하는 서브-영역들에 배정할 수도 있다.
본 발명의 특정 실시예들에서, 서명의 계산은 P개의 기본 서명들의 조성을 그 기본 서명들의 대응하는 서브-영역들의 미리 정의된 순서로 포함한다. 이 순서는, 예를 들어, 서브-영역들에 속하는 식별자들에 의해 또는 이들 서브-영역들의 내용(즉, 때때로 모듈이라 지칭되는 서브-영역의 비트들의 세트)에 대해, 예를 들어 식별자들의 증가 또는 감소 순서로 결정될 수도 있다.
본 발명의 특정 실시예들에서, 데이터는, 외부 디바이스로부터 수신된 데이터의 코드 저장 영역의 부분 내로 로딩하는 단계, 수신된 데이터가 로딩된 경우 전체 코드 저장 영역에 대한 서명을 계산하는 단계, 및 수신된 서명과 계산된 서명이 동일하다면 단독으로 코드 저장 영역의 내용의 실행을 가능하게 할 목적으로, 외부 디바이스로부터 수신된 서명을 사용하여 계산된 서명을 검증하는 단계의 보안 엘리먼트에 의한 실행을 위한 스크립트를 포함한다.
본 발명의 특정 실시예들에서, 코드 저장 영역은 (외부 디바이스에 의해 획득되고 보안 엘리먼트에 의해 외부 디바이스로부터 수신된) 데이터의 로딩 전의 소프트웨어 엘리먼트들을 포함한다.
따라서 로딩 후의 코드 저장 영역의 시뮬레이션된 이미지는, 그 초기 상태(전술한 이진 패턴)에서 또는 보안 엘리먼트의 동작 동안 코드 저장 영역 속으로 이전에 로딩되었을 수도 있는 데이터를 고려한다.
본 발명의 특정 실시예들에서, 코드 저장 영역 내로 로딩될 데이터는 코드 저장 영역에서의 이용가능 공간의 부분만을 나타낸다.
예를 들어, 로딩될 데이터(코드 블록들의 세트)는 코드 저장 영역을 형성하는 비트들의 절반 또는 사분의 일만을 차지할 수도 있다. 본 발명의 제3 양태는 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩을 보안화하는 디바이스에 관한 것이고, 상기 비휘발성 메모리는 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 저장 영역이라 지칭되는 저장 영역을 포함하며, 임의의 수정이 상기 초기 프로그램에 의해 단독으로 제어되고, 상기 디바이스는 보안 엘리먼트 외부에 있고,
- 보안 엘리먼트에 송신될 데이터를 획득하는 모듈;
- 보안 엘리먼트의 이 코드 저장 영역 내로의 획득된 데이터의 로딩에 의해 수정된 코드 저장 영역의 이미지를 시뮬레이션하는 모듈;
- 전체로서 코드 저장 영역의 시뮬레이션된 이미지의 서명을 계산하는 모듈; 및
- 획득된 데이터와 계산된 서명을 상기 보안 엘리먼트에 송신하는 모듈을 포함한다.
특정 실시예들에서, 전술한 방법들의 상이한 단계들은 컴퓨터 프로그램들에서의 명령들에 의해 결정된다.
결과적으로, 본 발명은 데이터 매체 상의 컴퓨터 프로그램을 또한 제안하는데, 이 프로그램은 마이크로프로세서에 의해 실행 가능한 것이며, 그 프로그램은 위에서 언급된 바와 같은 방법들의 단계들의 실행에 적합한 명령들을 포함한다. 그것은, 예를 들어, 위에서 언급한 것과 같은 초기 프로그램이다.
이 프로그램은 임의의 프로그래밍 언어를 사용할 수도 있고, 소스 코드, 목적 코드(object code), 또는 소스 코드 및 목적 코드 사이 중간의 코드, 이를테면 부분적으로 컴파일된 형태의 코드의 형태, 또는 임의의 다른 바람직한 형태일 수도 있다.
본 발명은 위에서 언급된 바와 같은 컴퓨터 프로그램의 명령들을 포함하는 마이크로프로세서-판독가능 데이터 매체를 또한 제안한다.
그 데이터 매체는 프로그램을 저장할 수 있는 임의의 엔티티 또는 디바이스일 수도 있다. 예를 들어, 그 매체는 ROM과 같은 저장 수단, 예를 들어 마이크로회로 ROM, 또는 플래시 메모리 또는 하드 디스크와 같은 자기 기록 수단을 포함할 수도 있다.
한편, 그 데이터 매체는 전기 또는 광 케이블을 통해, 라디오에 의해 또는 다른 수단에 의해 라우팅될 수도 있는 전기 또는 광학적 신호와 같은 송신가능 매체일 수도 있다. 본 발명에 따른 프로그램은, 특히, 인터넷과 같은 네트워크의 저장 플랫폼으로부터 다운로드될 수도 있다.
대안적으로, 그 데이터 매체는 프로그램이 통합되는 집적회로일 수도 있는데, 그 회로는 해당 방법을 실행하는데 또는 그것의 실행에서 사용하는데 적합한 것이다.
본 발명의 제4 양태는 마이크로프로세서를 포함하고, 메모리에, 위에서 언급한 바와 같은 초기 프로그램을 포함하는 보안 엘리먼트에 관한 것이다. 그 보안 엘리먼트는, 예를 들어, ISO/IEC 7816 표준을, 공통 평가 기준(Common Criteria) 표준을, 및/또는 글로벌플랫폼 카드 사양(GlobalPlatform Card Specification) v. 2.2.1 표준을 준수한다.
본 발명의 제5 양태는 이 종류의 보안 엘리먼트와 위에서 언급한 바와 같은 보안화 디바이스를 포함하는 시스템에 관한 것이고, 보안 엘리먼트에 대한 외부 디바이스는 보안화 디바이스이다.
전술한 보안화 디바이스, 보안 엘리먼트, 시스템, 데이터 매체 및 컴퓨터 프로그램의 특정 장점들, 목적들 및 특성들은 그것들이 실행하는 방법들의 그것들과 유사하다.
본 발명의 다른 독특한 특징들 및 장점들은 어떠한 방식으로도 제한되지 않는 본 발명의 예시적 실시예들을 도시하는 첨부된 도면들에 의해 예시되는 다음의 설명으로부터 명확하게 될 것이다. 도면들 중에서:
- 도 1a와 도 1b는 일부 실시예들의 사용의 문맥의 예들을 도시하며;
- 도 2는 도 1a와 도 1b에 도시된 디바이스들의 예시적인 아키텍처를 도시하며;
- 도 3은 일부 실시예들에 따른 보안화 방법들의 주요 단계들을 흐름도들의 형태로 도시하는 도 3a와 도 3b로 이루어진다.
대체로 본 발명은 외부 디바이스로부터 획득된 데이터의 보안 엘리먼트의 비휘발성 메모리 내로의, 특히 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 저장 영역이라 지칭되는 저장 영역 내로의 로딩의 보안화에 관련되는데, 이 영역의 임의의 수정은 이 초기 프로그램에 의해 단독으로 제어되고, 그 영역은 컴파일된 또는 인터프리트된 코드를 포함할 수 있다.
"컴파일된 또는 인터프리트된 코드"라는 용어는, 프로그램을 포함하는 그리고 이를테면 시스템(이 경우 보안 엘리먼트)에 의해 식별되는 임의의 데이터 세트, 특히 명령들 또는 코드 워드들(바이트코드들 또는 이진수)이 시스템의 프로세서에 의해 직접적으로 실행되는, 기계어에서의 프로그램을 의미한다.
위에서 언급했듯이, 코드 저장 영역, 특히 그것의 사이즈는, 보안 엘리먼트의 초기 또는 "기본" 프로그램에 의해 제어된다. 초기 프로그램은 시스템의 제조업자의 사유의 운영 체제의 형태를 보통 취하며, 이 경우 보안 엘리먼트에서, 이 특정 운영 체제는 본 발명에 따른 보안화의 대상인 코드 저장 영역과는 독립적으로 동작한다는 것에 주의해야 한다.
본 발명에 따르면, 외부 디바이스가 보안 엘리먼트로의 송신을 위한 데이터를, 예를 들어 후자의 요청 시 획득한다면, 이들 데이터가 외부 디바이스(때때로 업데이팅 디바이스라 지칭됨)에 의해 통상적으로 이용 가능하게 되기 때문에, 외부 디바이스는 보안 엘리먼트의 코드 저장 영역의 이미지를 그것이 해당 데이터의 완전 로딩에 의해 수정될 것으로서 시뮬레이션한다. 저장 영역의 "이미지"가 이 저장 영역에서의 각각의 비트의 값 및 로케이션을 정의한다. 그 다음에 서명이 이 시뮬레이션된 이미지를 기초로 계산된 다음, 상기 데이터와 함께 보안 엘리먼트에게 전송된다.
이 서명은 그러면 데이터 로딩이 완료된 후에 전체적으로 코드 저장 영역이 무손상(intact)임을 검증하기 위해 보안 엘리먼트에 의해 사용된다. 이는 이 코드 저장 영역이 외부 디바이스에 의해 시뮬레이션된 이미지와 동일한 것으로 간주되기 때문이다. 따라서, 본 발명에 따르면, 보안 엘리먼트의 초기 프로그램은, 계산된 서명과 수신된 서명을 비교하기 위하여, 요청된 임의의 데이터의 완전 로딩 후에 코드 저장 영역 전체에 걸쳐 서명을 또한 계산한다.
해당 데이터의 로딩 후 코드 저장 영역의 예상된(시뮬레이션된) 이미지 전체에 걸쳐 외부 디바이스에 의해, 그리고 해당 데이터의 로딩의 완료 후 저장 영역 전체에 걸쳐 보안 엘리먼트의 초기 프로그램에 의해 각각 계산된 서명들 간의 아이덴티티는 따라서, 코드 저장 영역이 외부 디바이스에 의해 시뮬레이션된 이미지에 확실히 부합한다는 보장을 제공하고, 그러므로 무손상이다.
도 1a와 도 1b는 일부 실시예들의 사용의 문맥의 예들의 개략적인 예시도들이다.
도 1a에서, 호스트 디바이스(10a)에 통합 또는 내장되는 보안 엘리먼트(12a)가 외부 디바이스(16a)와 데이터를 교환하도록 구성된다.
그 보안 엘리먼트(12a)는, 예를 들어, ISO/IEC 7816 표준을, 공통 평가 기준 표준을, 및/또는 글로벌플랫폼 카드 사양 v. 2.2.1 표준을 준수한다.
보안 엘리먼트(12a)는, 예를 들어, 네트워크(14a)에 대한 가입자의 식별 모듈, 이를테면 SIM 카드 또는 UICC 카드이다. 호스트 디바이스(10a)는, 예를 들어, 모바일 단말, 특히 "스마트폰"으로서 알려진 지능형 모바일 전화기이다. 외부 디바이스(16a)는 네트워크(14a)에 접속된 (업데이트들을 위한) 서버이다.
네트워크(14a)는, 예를 들어, 데이터 및/또는 인터넷 통신들을 지원하는 모바일 네트워크이다. 따라서, 이 예시적 문맥에서, 모바일 단말(10a)과 서버(16b)는 식별 모듈(12a)을 사용하여, 네트워크(14a)를 통해 통신한다.
도 1b는 카드(10b), 특히 은행 카드 또는 전자 액세스 카드의 보안 엘리먼트(12b)가, 외부 디바이스(16b)와 데이터를 교환하도록 구성되는 일부 실시예들의 사용의 다른 문맥을 도시한다.
이 예에서, 보안 엘리먼트(12b)는 RFID 태그 유형의 근접장 통신들(near field communications, NFC) 프로토콜에 따른 통신을 위한 수단을 포함하고, 외부 디바이스(16b)는 카드 판독기이고 RFID 판독기 유형의 NFC 프로토콜에 따라 또한 통신할 수 있다.
변형예에서, 보안 엘리먼트와 외부 디바이스는 블루투스를 통해 또는 적외선 송신에 의해 통신할 수도 있다.
도 1a와 도 1b에 도시된 문맥들은 호환 가능하지 않다. 하나의 상황에서 도시된 특징들이 다른 문맥에서 제공될 수도 있다. 따라서 본 발명은 위에서 설명된 문맥들로 제한되지 않는다. 예를 들어, 본 발명은 보안 엘리먼트가 유사한 통신 수단이 자체에 갖추어진 외부 디바이스와의 NFC 프로토콜에 따른 통신을 위한 수단이 갖추어진 호스트 디바이스에 내장 또는 통합되는 문맥에서 또한 유익하게 사용될 수도 있다. 내장되거나 또는 통합된 보안 엘리먼트는 호스트 디바이스와 통신하는데 사용되는, NFC 프로토콜에 따른 통신을 위한 수단을 또한 포함할 수도 있다.
본 발명의 일부 실시예들에 따르면, 보안 엘리먼트는 데이터(예를 들어, 애플리케이션 또는 애플리케이션의 부분, 특히 업데이트)를 획득하려는 요청을 외부 디바이스에게 전송한다. 이 요청에 응답하여, 외부 디바이스는 요청된 데이터를, 예를 들어 보안 엘리먼트가 통합 또는 내장되는 호스트 디바이스를 통해 보안 엘리먼트에게 전송한다. 이들 데이터는 민감할 수도 있거나 또는 민감하지 않을 수도 있으며; 다시 말해서, 그들 데이터는, 예를 들어, 그것들의 실행 동안 사용자의 데이터가 조작되는 것을 허용할 수도 있다.
이들 데이터는 보안 엘리먼트의 초기 프로그램에 의해 정의되는, 코드 저장 영역이라 지칭되는 보안 엘리먼트의 비휘발성 메모리의 부분에 저장될 (그 안으로 로딩될) 것이 의도되는데, 이 영역의 임의의 수정은 이 초기 프로그램에 의해 단독으로 제어되며, 그 영역은 컴파일된 또는 인터프리트된 코드를 포함할 수 있다.
외부 디바이스에 의해 계산된 서명이 요청된 데이터와 함께 전송된다. 본 발명에 따르면, 이 서명은 요청된 데이터의 완전 로딩 후에 있어야 할 바대로의 전체 코드 저장 영역의 이미지를 반영하는 독특한 특징을 갖는다.
바람직하게는, 그 코드 저장 영역은 임의의 초기 데이터 로딩 후에 "랜덤화"된다. 다시 말해, 랜덤 값들이 그 코드 저장 영역에 랜덤 방식으로 기록된다. 그 코드 저장 영역의 이 상태는 외부 디바이스에 의해 알려져 있어서, 전체 코드 저장 영역의 이미지를 반영한 서명이 데이터의 완전 로딩 후에 있어야 할 바대로 계산될 수 있다.
요청된 데이터의 로딩이 완료될 때, 보안 엘리먼트 자체의 초기 프로그램은, 코드 저장 영역 전체가 예상되는 외관을 확실히 가진다는, 또는 다시 말해 무손상이라는 것을 보장하기 위하여, 코드 저장 영역 전체에 걸쳐 서명을 그것이 요청된 데이터의 로딩에 의해 실제로 수정된 것처럼 계산한다.
도 2는 도 1a 또는 도 1b에 도시된 디바이스들, 다시 말해서 보안 엘리먼트(12a 또는 12b), 외부 디바이스(16a 또는 16b), 및/또는 호스트 디바이스(10a 또는 10b)에 대한 예시적인 아키텍처를 도시한다.
이 아키텍처에 따르면, 디바이스가 다음의 엘리먼트들에 접속된 통신 버스(2)를 포함할 수 있다:
- 하나 이상의 프로세서들을 포함할 수 있는, CPU(Central Processing Unit)로 표시된 프로세싱 유닛(20);
- 읽기/쓰기 메모리(22) 또는 캐시 메모리 또는 휘발성 메모리, 예를 들어 RAM(Random Access Memory);
- 하나 이상의 비휘발성 메모리들(24); 및
- 통신 인터페이스(26).
읽기/쓰기 메모리(22)는 그것의 사용 동안 본 발명에 따른 방법들을 사용하기 위한 명령들을 포함하는 컴퓨터 프로그램의 실행 동안 생성 및 수정되는 변수들 및 파라미터들을 기록하기에 적합한 레지스터를 포함한다. 비휘발성 메모리에 저장된 프로그램의 명령 코드들은 프로세싱 유닛(CPU)에 의한 실행을 위해 RAM 내로 로딩된다.
비휘발성 메모리 또는 메모리들(24)은, 예를 들어, EEPROM 또는 플래시 메모리 유형의 다시쓰기가능 메모리들인데, 그것들은 본 발명의 의미에서의 매체를 구성할 수도 있으며; 다시 말해서, 그것들은 본 발명에 따른 방법들의 사용을 위한 명령을 포함하는 컴퓨터 프로그램을 포함할 수도 있다.
본 발명에 따르면, 보안 엘리먼트의 경우, ROM(24)은, 예를 들어, 세 개의 저장 영역들(24a, 24b, 24c)로 나누어질 수도 있다. 저장 영역(24a)은, 예를 들어, Java 애플리케이션들("애플릿들"이라고 알려짐), JavaCard 가상 머신의 구성 데이터, 패스워드들, 전화 번호들, 애플리케이션들, 또는 잡다한 커스텀화 파라미터들과 같은 사용자 데이터를 포함한다.
저장 영역(24b)은 전술한 코드 저장 영역이고 따라서 컴파일된 또는 인터프리트된 코드의 데이터와 프로그램들, 예를 들어 컴파일된 또는 인터프리트된 코드에서의 보안 엘리먼트의 운영 체제 또는 임의의 유형의 애플리케이션의 저장에 전용된다. 그것은, 예를 들어, JavaCard 가상 머신, JavaCard 실행 환경(영어로는 "JavaCard Runtime Execution"), 네이티브 애플리케이션들, 또는 GMS 플랫폼("이동 통신 세계화 시스템(Global System for Mobile Communications)" 프레임워크)이다. 실행 오류들을 방지하기 위하여, 이 저장 영역은 그것이 포함하는 컴파일된 또는 인터프리트된 코드의 실행 동안 수정되지 않을 수 있다. 저장 영역(24b)의 이 잠금(locking)은, 코드 저장 영역(24b)에 대해 이 영역이 일시적으로 비활성화된 후에 수정들을 할 수 있는 유일한 프로그램인 보안 엘리먼트의 초기 프로그램에 의해 제공된다.
그것의 초기 상태에서, 다시 말해서 제조 동안, 저장 영역(24b)은 블랭크이다. 이진 패턴이 저장 영역(24b)에 임의의 컴파일된 또는 인터프리트된 코드가 로딩 또는 설치되기 전의 그것의 초기 상태에 적용된다. 이 패턴은, 예를 들어, 모두가 0과 동일한 또는 모두가 1과 동일한 비트들로 이루어진다. 변형예에서, 이 패턴은 일부 0 비트들과 일부 1 비트들로 이루어지고, 따라서 저장 영역(24b)의 그것의 초기 상태에서의 비트들의 이미지를 더욱 복잡하게 하고, 이 저장 영역의 보안을 개선시킬 수도 있다. 특히, 위에서 언급된 바와 같은 랜덤화된 이미지가 사용될 수도 있다.
이 초기 이미지는, 특히, 외부 업데이팅 디바이스(16a/16b)에게 알려져 있어, 이 디바이스가 저장 영역(24b)의 비트들에서의 변경들과, 그러므로 저장 영역(24b)의 비트들의 세트로 이루어진 이 저장 영역(24b)의 이미지에서의 변경들을, 컴파일된 또는 인터프리트된 코드에서의 새로운 소프트웨어 엘리먼트들이 저장 영역 내로 로딩됨에 따라, 정확히 추종하는 것을 가능하게 한다.
비-변경가능 저장 영역(24c)은 본 발명에 따라 코드 저장 영역(24b)의 사이즈 및 무결성을 제어하도록 구성되는 보안 엘리먼트의 초기 프로그램을 포함한다. 초기 프로그램은, 예를 들어 영역(24b)의 시작의 메모리 주소와 영역(24b)의 말단의 메모리 주소를 정의함으로써 코드 저장 영역(24b)의 사이즈를 정한다. 이들 주소들은, 예를 들어, 초기 프로그램의 레지스터 키들에 저장된다.
초기 프로그램은 코드 저장 영역(24b)에서의 인터프리트된 코드로 소프트웨어 엘리먼트들의 활성화 및 불활성화를 또한 제어한다. 다시 말해, 저장 영역(24b)에 저장된 컴파일된 또는 인터프리트된 코드의 실행을 가능하게 하거나 또는 금지할 수 있는 것은 초기 프로그램뿐이다. 특히, 그것은 소프트웨어 엘리먼트들 중 하나가 업데이트되어야만 한다면 또는 새로운 데이터가 저장 영역 내로 로딩되어야만 한다면 저장 영역(24b)에서의 임의의 실행을 비활성화시킨다.
초기 프로그램은 코드 저장 영역(24b)을 업데이트하기 위한 메커니즘들을 또한 포함하는데, 이들 메커니즘들은 인터프리트된 코드에서의 이진 블록들을 이 코드 저장 영역(24b) 내로 로딩하기 위해 업데이트 커맨드들 또는 스크립트들을 실행하도록 구성되어 있다.
ROM은 보안 엘리먼트의 컴파일된 또는 인터프리트된 코드에서의 모든 소프트웨어 엘리먼트들이 그럼에도 불구하고 전용 코드 저장 영역(24b)에 강제적으로 저장되는, 세 개를 초과하는 영역들로 나누어질 수도 있다.
통신 인터페이스(26)는 데이터를, 예를 들어 원거리통신 네트워크 또는 읽기/쓰기 인터페이스를 통해 송신 및 수신하도록 적응된다. 예를 들어, 외부 디바이스와 보안 엘리먼트가 데이터와 자신들의 서명을 전송 및 수신하는 것은 이 인터페이스를 통하고 있다. 호스트 디바이스가 데이터를 획득하려는 보안 엘리먼트로부터의 요청을 송신할 수 있고, 보안 엘리먼트에게 전송될 외부 디바이스로부터의 이들 데이터를 수신할 수 있는 것은 또한 이 인터페이스를 통하고 있다.
옵션으로, 이 아키텍처(통상적으로 호스트 디바이스(10a)를 위한 것임)는 I/O(Input/Output)로 표시된 입출력 인터페이스(28), 예를 들어 스크린, 키보드, 마우스, 또는 터치 스크린과 같은 다른 포인팅 디바이스를 또한 포함한다. 이 인터페이스로, 예를 들어, 사용자가 메모리에 이미 있는 컴파일된 또는 인터프리트된 코드에서의 운영 체제 또는 애플리케이션의 업데이트, 또는 컴파일된 또는 인터프리트된 코드에서의 새로운 운영 체제 또는 새로운 애플리케이션의 로딩을 요청할 수 있다.
옵션으로, 이 아키텍처(통상적으로 외부 디바이스(16a 또는 16b)와, 보안 엘리먼트(12a 또는 12b)를 위한 것임)는, 예를 들어 컴파일된 또는 인터프리트된 코드에서의 실행가능 파일의 서명 또는 데이터를 포함하는 메시지들을 암호화/암호해독하기 위한 프로세싱 유닛(20)으로부터의 명령들을 수신하는 크립토프로세서(29)를 또한 포함한다. 이 암호화는 네트워크(14a)를 통한 데이터 및 서명들의 송신을 보안화한다.
통신 버스는 디바이스에 포함되는 또는 그 디바이스에 접속되는 상이한 엘리먼트들 간에 통신 및 상호운용성을 제공한다. 버스의 표현은 제한되지 않고, 특히, 프로세싱 유닛은 명령들을 디바이스의 임의의 엘리먼트에게 직접적으로 또는 이 디바이스의 다른 엘리먼트를 통해 통신할 수 있다.
도 3a는 일부 실시예들에 따른 보안화 방법의 주요 단계들을 도시하는데, 이들 단계들은 외부 디바이스(예컨대, 도 1의 디바이스(16a 또는 16b))에 의해 실행되는 것들이다. 도 3b는 일부 실시예들에 따른 보안화 방법의 주요 단계들을 도시하는데, 이들 단계들은 보안 엘리먼트(예컨대, 도 1의 보안 엘리먼트(12a 또는 12b))에 의해, 특히 초기 프로그램 또는 초기 프로그램에서 제공되는 로딩 모듈에 의해 실행되는 것들이다.
도 3a에서는, 단계 30에서, 외부 디바이스는, 보안 엘리먼트에 의해 전송된, 데이터를 획득하려는 요청을 수신한다.
요청을 전송하기 위한 다수의 실현가능 메커니즘들이 있는데, 그 메커니즘들 중 일부는 자동이고 다른 것들은 사용자의 자발적 액션들에 기초하고 있다.
비제한적 예로, 그리고 도 2를 참조하여 이전에 설명된 바와 같이, 호스트 디바이스, 예를 들어 도 1a의 모바일 단말(10a)의 사용자가, 이 요청의 생성 및 전송을 런칭한다. 예를 들어, 사용자는, 모바일 단말(10a)의 키패드 또는 터치 스크린을 사용함으로써, 외부 업데이트 디바이스가 모바일 단말에 위치된 SIM 카드에 현재 설치된 것보다 더욱 최신 버전의 애플리케이션 또는 운영 체제를 유지할지의 여부를 체크하려는 요청을 모바일 단말에 행할 수도 있다. 이러한 문맥에서, 모바일 단말(10a)은, 예를 들어 "Select(Program)" 커맨드(여기서 Program은 체크될 운영 체제 또는 애플리케이션임)와, 9F7Fh가 추적능력(traceability) 데이터, 예를 들어 "카드 프로덕션 라이프 사이클(Card Production Life Cycle)"이라고 알려진 데이터를 특징화하는 파라미터인 "GetData(9F7Fh)" 커맨드를 사용함으로써, 이 운영 체제 또는 애플리케이션의 현재의 버전을 발견하기 위하여 보안 엘리먼트에게 문의한 다음, 그 정보가, 예를 들어 PING 커맨드를 사용함으로써 자발적 방식으로, 더욱 최신 버전의 존재 또는 그와 다른 것이 결국 알려질 수 있도록 그 정보를 외부 업데이팅 디바이스로 송신한다.
변형예에서, 버전 검증은, 동일한 교환들을 사용하여, 단말의 시작 시간에 자동적일 수도 있다.
다른 변형예에서, 외부 디바이스는 단말과 보안 엘리먼트에게, 푸시 메커니즘에 의해, 운영 체제 또는 애플리케이션의 새로운 버전의 존재가 자발적으로 알릴 수도 있다.
더욱 최신 버전의 존재가 업데이팅 디바이스에 의해 알려지면, 단말은 이 정보를 보안 엘리먼트에 송신하며, 그 보안 엘리먼트는 그러면 운영 체제 또는 애플리케이션의 더욱 최신 버전의 코드의 전부 또는 부분(다시 말해서, 업데이트)을 획득하려는 요청을 전송할 수 있다.
대안적으로, 보안 엘리먼트와 외부 디바이스 간의 통신들은 아래의 설명 전체의 경우 직접적이다. 따라서 단말은 교환되는 데이터 및 메시지들(특히 업데이트가 이용 가능한 정보)을 인터럽트하지 않고 단순히 중계기로서 작용하여 송신한다.
일부 실시예들에서, 이 획득하려는 요청은 보안 엘리먼트를 식별하기 위한 정보, 예를 들어 보안 엘리먼트의 고유 식별자를 포함한다. 이 고유 식별자는, 예를 들어, 업데이팅 디바이스가 보안 엘리먼트의 현재(current) 또는 "현재의(present)" 소프트웨어 구성, 특히 코드 저장 영역(24b)의 그러한 구성을 취출하기 위해 연관된 데이터베이스를 사용하는 것을 가능하게 한다. 사실상, 이 종류의 데이터베이스가, 보안 엘리먼트 상에서 수행된 설치들(installations) 및 업데이트들의 로그, 이들 설치들 및 업데이트들의 실행의 표시를 저장하는데 사용될 수도 있다. 이 표시는, 예를 들어, 로딩될 데이터의 메모리 주소들 또는 저장 로케이션들을 나타내는 설치 스크립트이다.
변형예에서, 획득하려는 요청은 보안 엘리먼트의 코드 저장 영역(24b)의 현재의 소프트웨어 구성의 식별자를 포함한다.
이 식별자는, 예를 들어, 보안 엘리먼트의 저장 영역(24b) 내로 수행된 로딩들의 로그가 외부 디바이스에 연관된 데이터베이스에서 연관되는 소프트웨어 구성의 고유 식별자이다.
이 식별자와, 연관된 로그 때문에, 저장 영역(24b)에 현재 저장된 소프트웨어 엘리먼트들뿐만 아니라, 이들 소프트웨어 엘리먼트들이 코드 저장 영역(24b) 내에서 서로 추종했던 순서와 함께 이전에 로딩되고 이후에 삭제된 것들도 아는 것이 가능하다.
이 로그 때문에, 코드 저장 영역(24b)의 상이한 로케이션들에서, 특히 전체적으로 고려되는 저장 영역(24b)의 각각의 비트에서 서로 추종했던 정보의 모든 아이템들을 취출하는 것이 가능하다. 따라서 이 고유 식별자에 의해 식별된 소프트웨어 구성은, 보안 엘리먼트의 코드 저장 영역(24b)의 현재 이미지, 다시 말해서, 특히, 겹쳐쓰기되지 않았더라도(그래서 그것들이 메모리에 여전히 있음), 이력적으로 로딩되었으나 이후에 삭제되는 소프트웨어 엘리먼트들을 고려한, 비트들 각각의 값 및 로케이션을 나타낸다.
예로서, 이 소프트웨어 구성 식별자는, 보안 엘리먼트로부터 취출되는 그리고 PING 커맨드에 의해 외부 디바이스에게 정기적으로 송신될 수도 있는 CPLC(Card Production Life Cycle) 데이터로부터 결정될 수도 있다. CPLC 데이터는, 특히, 보안 엘리먼트의 제조업자의 식별자, 보안 엘리먼트의 유형, 운영 체제의 식별자, 및 운영 체제의 현재 버전을 포함한다. 그것들은 외부 디바이스가 이 정보가 취출되었던 보안 엘리먼트의 코드 저장 영역(24b)의 현재 이미지를 취출하는 것을 가능하게 한다.
변형예에서, 획득하려는 요청은 저장 영역의 이미지의 복원에 필요한 정보를 연관된 데이터베이스에서의 보충적 데이터의 취출에 대한 의존 없이 포함할 수도 있다.
단계 31에서, 외부 디바이스는 요청된 데이터를 (예를 들어 내부 저장 영역으로부터 또는 제3자 디바이스로부터) 취출한 다음, 코드 저장 영역(24b)의 비트들의 이미지를 그 비트들이 요청된 데이터의 로딩 후에 있어야 하는 바와 같이 시뮬레이션한다. 다시 말해, 외부 디바이스는 코드 저장 영역(24b)의 비트들 중 각각의 비트의 로케이션 및 값을, 그것들이 요청된 데이터를 구성하는 컴파일된 또는 인터프리트된 코드의 로딩에 의해 수정된 것처럼 또는 수정되지 않은 것처럼 시뮬레이션한다.
요청된 데이터의 로딩은, 보안 엘리먼트에 의해 수신되는 그리고 요청된 데이터의 전부 또는 일부에 대한 특정 로케이션들을 정의하는 커맨드들의 세트를 포함하는 설치 또는 로딩 스크립트(아마도 외부 디바이스에 의해 생성됨)를 특히 추종할 수도 있다. 예로서, 설치 스크립트는 데이터(값)가 저장될 로케이션들(메모리 주소 및 길이)을 나타내는 ALV("address-length-value")를 포함할 수도 있다. 따라서 외부 디바이스는, 시뮬레이션에 의해, 보안 엘리먼트가 설치 스크립트의 수신 시 작용할 방식과 동일한 방식으로 요청된 데이터의 설치 또는 로딩을 재현할 수 있다.
따라서 시뮬레이션된 이미지는 요청된 데이터의 로딩에 의해 수정될 비트들, 뿐만 아니라 이 로딩에 의해 수정되지 않을 비트들을 허용한다.
실제로, 외부 디바이스에 의해 생성된 설치 스크립트가, 코드 저장 영역(24b)의 내용, 예를 들어 컴파일된 또는 인터프리트된 코드를 확장 또는 축소하기 위한 그것의 사이즈, 및/또는 요청된 데이터에 대한 설치 파라미터들(전술한 ALV 파일)의 저장을 위한 용량을 수정하기 위한 커맨드들의 세트를 포함하며, 따라서 각각의 데이터 비트가 코드 저장 영역에서의 정확한 로케이션(즉, 정확한 주소)에 로딩되는 것을 가능하게 할 수도 있다. 외부 디바이스는 따라서, 예를 들어 소프트웨어 엘리먼트의 예전 버전의 비트들을 이 소프트웨어 엘리먼트의 새로운 버전의 비트들로 대체할 목적으로, 각각의 데이터 비트에 대해 하나의 로케이션의 다른 로케이션에 대한 우선순위를 제공할 수도 있다.
비록 설치 스크립트가 로딩될 데이터와는 별개로 제시되지만, 로딩될 데이터는 설치 스크립트의 필수적인 부분을 형성할 수도 있다. 따라서 그 스크립트는 전술한 ALV 파일의 값들에, 하나 이상의 블록들, 또는 데이터를 형성하는 심지어 컴파일된 또는 인터프리트된 코드의 전체를 포함할 수도 있다.
더욱이, 설치 스크립트는 호스트 단말과 보안 엘리먼트 간에 보안 채널을 확립하기 위한 제어 신호들을 포함할 수도 있고 그것들의 상호 인증을 제공할 수도 있다. 예로서, 이들 커맨드들은 GP 2.2.1 Amd D v1.1(SCP03) 사양을 준수하여서, (위의 CPLC 데이터의 식별자에 통상적으로 기초하여) 의사랜덤 값을 기초로 생성된 세션 키들에 기초한 보안 채널이 요청된 데이터의 로딩 동안 사용된다. 이 사양에 따라 확립된 보안 채널은 전술한 엘리먼트들(서명, 컴파일된 또는 인터프리트된 코드 블록들 등)을 송신하기 위한 일련의 커맨드들, 특히 ALV 파일의 각각의 엔트리에 대한 "Store Data" 커맨드의 사전-생성을 허용한다는 장점을 갖는다.
단계 32에서, 코드 저장 영역(24b)의 비트들의 세트의 시뮬레이션된 이미지의 서명이 그러면 외부 디바이스에 의해 계산된다. 이 서명은 요청된 데이터의 로딩에 의해 수정된 비트들의 새로운 값, 뿐만 아니라 이 로딩에 의해 수정된 로케이션들 외부에 위치해 있는 코드 저장 영역의 비트들의 값의 함수이다. 후자의 수정된 로케이션들은 이전에 로딩된 다른 데이터(소프트웨어 엘리먼트들)의 인터프리트된 코드, 또는 초기 이진 패턴, 다시 말해서, 코드 저장 영역의 초기 상태, 즉, 그 코드 저장 영역이 블랭크일 때의 코드 저장 영역의 비트들의 이미지에 대응하는 패턴을 포함할 수도 있다.
보안 엘리먼트의 코드 저장 영역(24b) 내로의 임의의 이전의 로딩과 요청된 데이터의 실제 로딩 간에, 수정된 로케이션들 외부에 위치해 있는 비트들은 코드 저장 영역에 대해 로케이션 또는 값의 임의의 수정을 겪지 않아야만 한다는 것에 주의해야 한다. 비정상(악의적, 또는 로딩 스크립트의 실행에서의 논리적 오류의 결과)인 이들 수정들은, 저장 영역(24b)의 시뮬레이션된 이미지를 통해 계산되는 그리고 임의의 이러한 수정들을 갖지 않는 저장 영역의 이미지를 특징으로 하는 예상되는 값과 비교하면, 보안 엘리먼트에 의해 계산된 코드 저장 영역(24b)의 서명의 수정(아래에서 설명됨)을 야기할 것이다.
실제로, 이 서명은, 예를 들어, 메시지 인증 코드(MAC)(Message Authentication Code), Hash-MAC, 예를 들어 SHA-2 유형의 해시 함수의 결과, 또는 대안적으로 순환 리던던시 코드(cyclic redundancy code)의 적용의 결과이다. 그 서명은 단일 코드 블록의 비트들의 시뮬레이션된 이미지에 대해, 또는 전체 저장 영역(24b)의 비트들의 시뮬레이션된 이미지가 나누어지는 이진 부분들에 대해 계산될 수도 있다.
특정 실시예들에서, 외부 디바이스는 코드 저장 영역을 수 P개의 서브-영역들로 가상적으로 나누고, P개의 서브-영역들 중 하나의 서브-영역에 대응하는 각각의 이미지 부분에 대한 기본 서명을 계산한다. 그 다음에 전체 코드 저장 영역의 이미지의 서명은 P개의 계산된 기본 서명들의 조성에 의해 획득된다.
따라서, 외부 디바이스는 로딩에 의해 수정된 서브-영역들에 대응하는 기본 서명들만을 유익하게 계산하고, 변경 없이 남아 있는 서브-영역들의 기본 서명들을, 이것들이 이전에 계산되었다면, 재사용할 수도 있다.
특히, 외부 디바이스는 고려되는 각각의 서브-영역의 내용, 다시 말해서 그것을 형성하는 비트들의 세트(모듈이라 지칭됨)를, 다른 서브-영역들의 내용과는 독립적으로 제어할 수도 있다. 다시 말해, 외부 디바이스는 하나 이상의 모듈들 내에서 요청된 데이터 중 일부 데이터의 로딩 로케이션을, 그 모듈들이 코드 저장 영역(24b)에서 서로에 대하여 배열되는 방법을 반드시 나타내는 일 없이 나타낼 수도 있다.
기본 서명들의 조성은 P개의 서브-영역들의 P개의 기본 서명들에 적용되는 전단사 함수를 사용하여 수행될 수도 있다. 이는 서브-영역들의 임의의 순서(그리고 따라서 대응하는 기본 서명들의 임의의 순서)를 고려하는 것을 불필요하게 한다. 이 전단사 함수는 외부 디바이스와 보안 엘리먼트 사이에 공유되는 비밀의 함수일 수도 있다. 따라서 전체 저장 영역의 서명은 기본 서명들만으로부터는, 다시 말해서 전단사 함수의 또는 이 함수의 비밀 파라미터의 임의의 지식 없이 획득되지 않을 수 있다.
예를 들어, 배타적 OR(XOR)가 사용될 수도 있거나, 또는 MAC 코드가 모든 기본 서명들에 대해 계산될 수도 있다.
변형예에서, 전체 코드 저장 영역의 이미지의 서명은 그러면 기본 서명들의 조성에 의해, 예를 들어 대응하는 서브-영역들의 순서에, 또는 그들 서브-영역들의 내용(모듈이라 지칭됨)의 순서에 관련된 미리 정의된 순서로 획득될 수도 있다. 이 미리 정의된 순서는 외부 디바이스와 보안 엘리먼트 간에 공유되는 비밀로서 미리 저장될 수도 있다. 예로서, 서브-영역들에는 식별자(이는 시간이 지남에 따라 변경될 수도 있음)가 제공될 수도 있고 그 순서는 상기 서브-영역 식별자들의 증가 또는 감소 순서일 수도 있다.
단계 33에서, 요청된 데이터는, 보안 채널을 확립하고 요청된 데이터를 로딩하기 위해 외부 디바이스에 의해 생성된 설치 스크립트와 함께, 단계 32에서 계산된 서명과 함께, 그것들의 실행의 목적으로, 다시 말해서 보안 엘리먼트 속으로 데이터를 로딩할 목적으로 호스트 단말에게 전송된다.
실제로, 서명은, 그것이 보안 엘리먼트에 의해 수신되기 전에 수정되거나 또는 인터셉트되는 것을 방지하기 위해 암호화된(또는 인코딩된) 커맨드로 전송된다. 일부 실시예들에서, 요청된 데이터, 설치 스크립트 및 서명은 모두가 동일한 암호화된(또는 인코딩된) 커맨드로 전송된다.
다른 실시예들에서, 데이터의 활성화에 대한 요청이 서명과 함께 암호화된 커맨드로 전송된다.
실제로, 요청된 데이터, 서명 및 필요하다면 활성화 요청은, SMS(Over-The-Air)에 의해, 인터넷, NFC, 블루투스, 유선 접속 또는 외부 디바이스에 의해 그리고 이들 엘리먼트들의 수용자(즉, 보안 엘리먼트 및/또는 호스트 디바이스)에 의해 제어되는 임의의 다른 통신 수단에 의해 전송될 수도 있다.
보안 엘리먼트에 의해 수행되는 동작들과 관련하여, 데이터를 획득하려는 요청이, 외부 디바이스가 보안 엘리먼트의 전체 코드 저장 영역(24b)의 비트들의 이미지를 시뮬레이션하는 것을 가능하게 하기 위해, 식별자가 수반되어 전송된다는 것이 위에서 언급되었다.
이 데이터를 획득하려는 요청은 저장 영역(24c)에 저장된 초기 프로그램에 의해 보통 전송된다. 예를 들어, 초기 프로그램은 코드 저장 영역(24b)에 저장된 모든 데이터(운영 체제 및 애플리케이션들)를 비활성화하는 커맨드(예를 들어 "chmod")를 코드 저장 영역을 업데이트할 또는 새로운 데이터를 설치할 목적으로 사용하였다.
다음의 텍스트에서, 달리 명시되지 않는 한, 설명되는 단계들을 실행하는 것이 초기 프로그램(또는 이 초기 프로그램의 로딩 모듈)이라고 가정된다.
외부 디바이스에 관련하여 위에서 또한 언급되었던 바와 같이, 호스트 단말은 설치 스크립트, 로딩될 데이터(이는 스크립트에 포함될 수도 또는 포함되지 않을 수도 있음), 및 외부 디바이스에 의해 계산된 서명을 수신한다.
수신되는 바와 같은 설치 스크립트는 호스트 단말에 의해 실행되어, 도 3b에 관련하여 아래에서 설명되는 바와 같은 보안 엘리먼트와의 교환을 초래한다.
도 3b에서, 보안 엘리먼트의 초기 프로그램에 의해 실행되는 후속 단계들에 관련하여, 단계 34에서 보안 엘리먼트는, 단계 32에서의 외부 디바이스에 의해 계산된 서명과 함께, 데이터를 획득하려는 요청에서 요청된 데이터와, 적절한 경우, 단계 33에서의 외부 디바이스에 의해 전송되는 요청된 데이터의 활성화에 대한 요청을 수신한다.
실제로, 호스트 단말은, 호스트 단말과 보안 엘리먼트, 특히 보안 엘리먼트의 초기 프로그램 간의 상호 인증, 그에 뒤따르는, 이들 두 개의 엔티티들 간의 보안 통신 채널의 설치, 요청된 데이터의 송신, 및 마지막으로 외부 디바이스에 의해 계산된 숫자 서명(numeric signature)을 초래하는 설치 스크립트를 실행한다.
상호 인증은, 예를 들어, 다음 단계들을 포함할 수도 있다:
- 호스트 단말은 단말의 초기 프로그램 식별자(IDterm)를 전송;
- 초기 프로그램은 랜덤 숫자(R1)를 단말에게 전송;
- 단말은 인코딩된 아이템 C1=f(IDterm, R1)을 계산하고 초기 프로그램에게 송신;
- 단말은 랜덤 숫자(R2)를 초기 프로그램에게 송신; 그리고
- 초기 프로그램은 인코딩된 아이템 C2=f(IDterm, R2)를 반환.
초기 프로그램 및 호스트 단말 각각에 의한 C1 및 C2의 검정(validation)은 이들 두 개의 엔티티들의 상호 인증을 허용한다.
GP 2.2.1 Amd D v1.1(SCP03)에 따른 보안 채널은 그러면, 예를 들어, 외부 디바이스에 의해 설치 스크립트에 제공되는 랜덤 값 및/또는 의사랜덤 값에 의해 (랜덤 값 및 CPLC 데이터에 기초하여) 구현된다.
로딩될 데이터와 서명은 그 다음에 호스트 단말과 초기 프로그램 간의 동일한 통신 세션 동안 전송된다. 그 데이터는 모놀리식 블록으로, 또는, 변형예에서는, 복수의 독립적 블록들로, 예를 들어 ALV 트리플릿들을 사용한 하나 이상의 SCP03 "Store Data" 커맨드들을 사용하여 송신될 수도 있다.
호스트 단말로부터 보안 엘리먼트 내로의 요청된 데이터의 보안 로딩은 외부 디바이스와는 독립적으로, 다시 말해서 호스트 단말이 외부 디바이스에 반드시 접속되는 일 없이 일어날 수도 있다는 것에 주의해야 한다. 이는, 예를 들어 초기 프로그램이 보안 엘리먼트를 사용할 때 이 보안 엘리먼트의 다음의 재시작 시, 단말이 자신의 수신과는 비상관(decorrelation)되는 방식으로 실행할 수도 있는, 외부 디바이스에 의해 송신되는 설치 스크립트에 의해 가능해진다.
설치 스크립트에서 제공되는 다른 커맨드들, 예를 들어 코드 저장 영역(24b)을 축소 또는 확장하기 위한 커맨드들과, 로딩된 데이터를 활성화하기 위한 커맨드는 실행을 위해 보안 엘리먼트에게 또한 송신될 수도 있다.
단계 35에서, 요청된 데이터는 그러면 보안 엘리먼트의 코드 저장 영역(24b) 속으로 모놀리식 방식 또는 블록 단위로 로딩된다. 실제로, 전술한 설치 스크립트는 초기 프로그램의 로더에 의해 실행되어, 모놀리식 블록의 로딩에 의해, 또는 ALV 저장 로케이션 명령들에 따른 연속하는 블록들의 점진적 로딩에 의해 중 어느 하나의 로딩에 의해, 요청된 데이터의 로딩 및 설치가 초래되게 한다.
코드 저장 영역이 위에서 언급된 바와 같은 수 P개의 서브-영역들로 구획화되면, 설치 스크립트의 내용에 따라, 서브-영역은 로딩될 데이터를 형성하는, 컴파일된 또는 인터프리트된 코드의 블록 또는 복수의 블록들의 로딩에 의해 수정될 수도 있다. 다른 서브-영역들은 수정되지 않을 수도 있으며; 다시 말해서, 요청된 데이터를 로딩하는 현재의 동작 동안에는 이들 서브-영역들 내로 로딩이 수행되지 않는다. 코드 저장 영역이 서브-영역들로 구획화된다면, 블록의 로딩을 위한 메모리 주소들은 특정 서브-영역의 시작 메모리 주소에 대하여 표현될 수도 있다.
블록 단위 로딩의 장점은 각각의 블록이 다른 블록들과 독립적으로 로딩될 수 있다는 것이다.
그 로딩은, 예를 들어, 설치 스크립트에서 나타내어진 메모리 주소에 블록을 직접적으로 저장하는 것에 있을 수 있다. 따라서, 소프트웨어 엘리먼트의 업데이트 동안, 이 유형의 로딩은 업데이트될 블록의 직접 대체에 있다.
변형예에서, 로딩될 블록은 설치 스크립트에 의해 특정된 로케이션에 위치되고 저장되기 전에 임시 저장(유보 영역, 또는 "스페어 메모리 영역")에 전용되는 코드 저장 영역(24b)의 부분에서 큐잉될 수도 있다.
코드 저장 영역(24b)을 업데이트하기 위해 초기 프로그램에 의해 (직접 또는 간접) 사용되는 로딩 방법은 외부 디바이스에게 알려져 있어서, 그 외부 디바이스는 코드 저장 영역(24b)의 부분을 형성하는 유보 영역의 비트들의 상태를 알 수 있다. 이는 단계 32에서 계산된 서명이 보안 엘리먼트의 저장 영역(24b)에서의 실제 변경들에 부합하는 것을 보장한다.
요청된 데이터가 전체로서 로딩된다면(즉, 경우에 따라, 모놀리식 블록이 로딩되거나, 또는 모든 코드 블록들이 로딩될 때), 다시 말해서 로딩 세션이 종료될 때(세션이 보안 엘리먼트를 스위치 온 및 오프하는 복수의 사이클들을 커버할 수도 있다는 것에 주의해야 함), 서명을 계산하는 단계(단계 36)가 보안 엘리먼트의 초기 프로그램에 의해 실행된다.
대개는, 이 단계는, 서명이 전체 코드 저장 영역의 비트들의 현재 이미지로부터, 다시 말해서 요청된 데이터의 로딩이 완료될 때 코드 저장 영역(24b)의 비트들의 값으로부터 계산된다는 것을 제외하면, 외부 디바이스에 의해 실행되는 단계 32와 유사하다.
원칙적으로는 요청된 데이터의 로딩 후에 비트들이 수정될 바와 같은 코드 저장 영역의 비트들의 시뮬레이션을 기초로 외부 디바이스에 의해 계산되는 서명과는 대조적으로, 초기 프로그램에 의해 계산되는 서명은 코드 저장 영역(24b)의 모든 비트들을 고려하고, 그러므로 영역(24b)에 대해 이루어졌을 수도 있는 임의의 수정들을 (악의적이든 또는 로딩 오류로 인한 것이든 간에) 고려한다.
단계 34에서 수신된 서명이 위에서 설명된 바와 같은 서브-영역들의 기본 서명들의 조성으로부터 초래되었다면, 기본 서명들은, 고려되는 서브-영역들에 대한 코드 블록들의 로딩을 완료한 후에 다시, 단계 36에서의 보안 엘리먼트의 초기 프로그램에 의해 또한 계산된다.
유익하게는, 각각의 기본 서명은 대응하는 서브-영역 내로 로딩될 코드 블록들이, 어떤 것이라도 있다면, 완전히 로딩되자마다 계산될 수도 있다.
이 경우, 고려되는 서브-영역의 내용(또한 모듈이라 지칭됨)은 외부 디바이스에 의해 예상된 것과 동일하다. 따라서, 고려되는 서브-영역의 기본 서명을 계산하기 위하여 요청된 데이터의 완전 로딩(과 그러므로 다른 서브-영역들 내로의 로딩)을 기다릴 필요는 없다. 결과적으로, 기본 서명들은 데이터 로딩 스크립트의 실행 동안 제각기 계산되며, 따라서 로딩의 끝에 도달되었을 때 글로벌 서명의 계산 시간을 감소시킬 수도 있다.
이들 기본 서명들은 그러면 단계 32와는 동일한 방식으로, 다시 말해서 단계 32에서 사용되는 조성 방법에 따라 미리 정의된 순서로 전단사 함수 또는 조성을 사용함으로써 이루어진다. 초기 프로그램과 외부 디바이스는 동일한 조성을 실행하도록 구성된다. 필요하다면, 그것들은 서명들의 계산을 위해 실행될 조성 방법에 동의하는 명령들을 교환할 수도 있다.
요청된 데이터의 완전 로딩 후에 실제로 존재하는 바와 같은 전체 코드 저장 영역의 현재 이미지를 반영하는 코드 저장 영역의 서명이 따라서 획득된다. 그것은 그러므로 코드 저장 영역(24b)에서 이루어진 임의의 예상 밖의 수정들을 통합한다.
단계 37에서, 코드 저장 영역(24b)의 무결성은 단계 36에서 보안 엘리먼트에 의해 계산된 서명과 단계 34에서 외부 디바이스로부터 수신된 서명을 비교함으로써 검증된다. 이는, 전체 코드 저장 영역이 예상되는 외관을 확실히 가진다는 것, 다시 말해서 로딩된 데이터의 각각의 코드 비트가 외부 디바이스에 의해 특정된 로케이션에서 예상되는 값을 갖는다는 것과, 다른 메모리 비트들이 값 및 로케이션 둘 다의 측면에서 무손상이라는 것을 검증하는 프로세스이다.
계산된 서명이 상이하다면, 이는, 외부 디바이스에 의해 생성된 코드 저장 영역의 시뮬레이션(다시 말해서, 전체 코드 저장 영역의 비트들의 시뮬레이션)과의 비교에 의해 최소한 하나의 메모리 비트가 수정(추가, 삭제 또는 수정)되었다는 것을 의미한다. 이 경우, 보안 엘리먼트의 초기 프로그램은, 코드 저장 영역(24b)이 무손상이 아니고 그러므로 실행을 가능하게 하지 않는다, 다시 말해서 이 방식으로 로딩된 데이터를 활성화하지 않는다고 간주한다.
보안 엘리먼트는 그러면, 예를 들어 외부 디바이스에 이상(anomaly)을 시그널하며, 외부 디바이스는 응답하여 (코드 블록이 오류들과 함께 수신되었다면) 무결성 결함을 정정하려는 시도로 새로운 데이터를 전송할 수도 있거나, 또는 결점이 식별된 논리적 오동작으로 인한 것이라면, 예를 들어 유보 영역이 버퍼 영역으로서 일회성으로만 사용되어야 할 때 컴파일된 또는 인터프리트된 코드가 이 유보 영역에 영구적으로 기록된다면, 이 결점의 재현을 방지하기 위한 논리적 규칙을 설치할 수도 있다. 변형예에서, 서명은 보안 엘리먼트의 초기 프로그램에 의해 재계산된 다음, 보안 엘리먼트의 재시작 후에 다시 검증될 수도 있다.
보안 엘리먼트에 의해 계산된 서명과 외부 디바이스로부터 수신된 서명이 동일하다면, 보안 엘리먼트의 초기 프로그램은 실행을 가능하게 하며, 즉, 이 방식으로 로딩된 데이터를 활성화시킨다(단계 38). 예로서, 초기 프로그램은 실행에서의 권한들을 수정하기 위해 (예를 들어 "chmod + x") 모드 변경 커맨드 "chmod"를 실행할 수도 있다.
다양한 실시예들에서, 로딩된 데이터는 즉시 활성화될 (다시 말해서, 실행 가능하게 될) 수도 있거나, 또는 활성화는 보안 엘리먼트의 다음의 스타트-업에서만 일어날 수도 있다. 후자의 모드는 해당 데이터가 그것의 운영 체제의 업데이트에 대응한다면 보안 엘리먼트의 동작을 인터럽트하지 않는다는 장점을 갖는다.
일부 실시예들에서, 새로운 단계들의 서명 계산(단계 36) 및 검증(단계 37)은 코드 저장 영역이 여전히 무손상이라는 연속 검증을 제공하기 위하여 보안 엘리먼트의 동작 동안 (예를 들어, 주기적으로, 보안 엘리먼트의 스위칭 오프와는 독립적으로) 실행된다. 이런 식으로, 마지막 로딩 세션 후에 발생한 코드 저장 영역의 임의의 악의적 수정들이 식별될 수도 있다. 이들 새로운 무결성 검증들은, 보안 엘리먼트가 스위치 온 될 때마다, 제3자(이를테면, 외부 디바이스 또는 네트워크 오퍼레이터)의 요청으로, 또는 대안적으로는 미리 결정된 이벤트(이를테면 사용자 요청, 카운터의 만료, 특정 커맨드의 수신, 또는 프로세서의 낮은 사용량)의 각각의 발생 시에 발생할 수도 있다.
코드 저장 영역(24b)의 무결성의 결여가 검출된다면, 초기 프로그램은 이 저장 영역에서의 인터프리트된 코드를 비활성화시키고 외부 디바이스에게 경고할 것을 결정할 수도 있다. 인터프리트된 코드의 재활성화는 전적으로 무손상 코드 저장 영역(24b)의 복원 시에만 일어난다.
위의 예들은 단지 본 발명의 다수의 실시예들이며, 본 발명은 그것들로 제한되지 않는다.
예를 들어, 위에서 설명된 바와 같이, 요청된 데이터 블록들은 각각의 블록에 대한 "Store Data" 커맨드들의 도움으로 초기 프로그램으로 송신될 수도 있고, 이들 블록들은 그 다음에 특정 메모리 로케이션들에 직접적으로 또는 유보된 저장 영역에서의 임시 저장을 통해 중 어느 하나로 로딩될 수도 있다(단계 35).
변형예에서, 호스트 단말은 초기 프로그램에 의해 실행될 업데이트 스크립트라 지칭되는 새로운 스크립트를 송신할 수도 있는데, 이 업데이트 스크립트는 특정 로딩 로케이션들의 표시들과 함께, 요청된 데이터의 다양한 인터프리트된 코드 블록들을 포함한다. 이 업데이트 스크립트는 요청된 데이터의 다양한 인터프리트된 코드 블록들의 점진적 로딩에 의해 코드 저장 영역(24b)을 수정하기 위하여 초기 프로그램에 의해 실행되기 전에 그 영역(24b)의 유보된 저장 영역에 저장된다.
덧붙여, 위의 예들에서, 보안 엘리먼트는 데이터를 획득하려는 요청을 전송한다(단계 30). 본 발명의 변형예들에서, 외부 디바이스는 전술한 요청을 요구하지 않는 "push"라는 용어에 의해 알려진 메커니즘에 의해 보안 엘리먼트 쪽으로 데이터를 푸시한다. 이들 변형예들에서, 외부 디바이스는 (예를 들어, 전술한 데이터베이스를 사용함으로써) 보안 엘리먼트에 대한 로딩 이력을 알고, 예를 들어, 보안 엘리먼트에 대한 관련 업데이트를 갖는다면, 코드 저장 영역의 이미지를 시뮬레이션하며, 그 서명을 (적절하다면 기본 서명들을 통해) 계산하고, 데이터 전체를 "푸시" 모드에서 보안 엘리먼트에 송신할 수 있다.

Claims (16)

  1. 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩을 보안화(securing)하는 방법으로서, 상기 비휘발성 메모리는 상기 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 저장 영역이라 지칭되는 저장 영역을 포함하며, 그 저장 영역의 임의의 수정이 상기 초기 프로그램에 의해 단독으로 제어되고, 상기 방법은 상기 보안 엘리먼트 외부의 디바이스에 의해 실행되는 다음의 단계들:
    - 상기 보안 엘리먼트에 송신될 데이터를 획득하는 단계;
    - 상기 보안 엘리먼트의 이 코드 저장 영역 내로의 획득된 상기 데이터의 로딩에 의해 수정된 상기 코드 저장 영역의 이미지를 시뮬레이션하는 단계;
    - 전체로서 상기 코드 저장 영역의 시뮬레이션된 이미지의 서명(signature)을 계산하는 단계; 및
    - 획득된 상기 데이터와 계산된 상기 서명을 상기 보안 엘리먼트에 송신하는 단계
    를 포함하고,
    상기 코드 저장 영역 내로 로딩될 상기 데이터는 상기 코드 저장 영역에서의 이용가능 공간의 부분만을 나타내는, 보안화 방법.
  2. 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩을 보안화하는 방법으로서, 상기 비휘발성 메모리는 상기 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 저장 영역이라 지칭되는 저장 영역을 포함하며, 그 저장 영역의 임의의 수정이 상기 초기 프로그램에 의해 단독으로 제어되고, 상기 방법은 상기 보안 엘리먼트에 의해 실행되는 다음의 단계들:
    - 외부 디바이스로부터 데이터와 서명을 수신하는 단계;
    - 상기 외부 디바이스로부터 수신된 상기 데이터를 상기 코드 저장 영역의 부분 내로 로딩하는 단계;
    - 상기 데이터가 로딩된 후 상기 코드 저장 영역의 전체의 서명을 계산하는 단계; 및
    - 수신된 상기 서명과 계산된 상기 서명이 동일하다면 단독으로 상기 코드 저장 영역의 내용의 실행을 가능하게 하기 위하여, 수신된 상기 서명을 사용하여 계산된 상기 서명을 검증하는 단계
    를 포함하고,
    상기 코드 저장 영역 내로 로딩될 상기 데이터는 상기 코드 저장 영역에서의 이용가능 공간의 부분만을 나타내는, 보안화 방법.
  3. 제1항 또는 제2항에 있어서, 상기 데이터는 데이터를 획득하려는 요청에 응답하여 상기 보안 엘리먼트에 송신되고, 상기 데이터를 획득하려는 요청은 상기 보안 엘리먼트를 식별하는 정보를 포함하는 것을 특징으로 하는 보안화 방법.
  4. 제1항 또는 제2항에 있어서, 상기 데이터는 데이터를 획득하려는 요청에 응답하여 상기 보안 엘리먼트에 송신되고, 상기 데이터를 획득하려는 요청은 상기 보안 엘리먼트의 상기 코드 저장 영역의 현재 이미지를 나타내는 소프트웨어 구성의 고유 식별자를 포함하는 것을 특징으로 하는 보안화 방법.
  5. 제1항 또는 제2항에 있어서, 상기 서명은, 상기 외부 디바이스로부터 전송되는 암호화된 커맨드에서, 획득된 상기 데이터의 활성화에 대한 요청과 함께 상기 보안 엘리먼트에 송신되는 것을 특징으로 하는 보안화 방법.
  6. 제1항 또는 제2항에 있어서, 상기 데이터는 획득된 상기 데이터가 로딩될 상기 코드 저장 영역에서의 로케이션 또는 로케이션들의 표시와 함께 상기 외부 디바이스에 의해 송신되는 것을 특징으로 하는 보안화 방법.
  7. 제1항 또는 제2항에 있어서, 상기 코드 저장 영역은 P개의 서브-영역들로 구획화(partition)되는 것과, 상기 서명을 계산하는 단계는 각각의 서브-영역에 대한 기본 서명(elementary signature)을 획득하는 단계와, 시뮬레이션되든 또는 아니든 간에, P개의 기본 서명들의 조성(composition)에 의해, 전체 코드 저장 영역에 대한 상기 서명을 획득하는 단계를 포함하는 것을 특징으로 하는 보안화 방법.
  8. 제7항에 있어서, 상기 P개의 기본 서명들의 조성은 전단사 함수의 적용을 포함하는 것을 특징으로 하는 보안화 방법.
  9. 제7항에 있어서, 상기 서명의 계산은 상기 P개의 기본 서명들의 조성을 그의 대응하는 서브-영역들의 미리 정의된 순서로 포함하는 것을 특징으로 하는 보안화 방법.
  10. 제1항 또는 제2항에 있어서, 상기 데이터는, 상기 외부 디바이스로부터 수신된 데이터를 상기 코드 저장 영역의 부분 내로 로딩하는 단계, 수신된 상기 데이터가 로딩된 경우 전체 코드 저장 영역에 대한 서명을 계산하는 단계, 및 상기 외부 디바이스로부터 수신된 서명과 계산된 서명이 동일하다면 단독으로 상기 코드 저장 영역의 내용의 실행을 가능하게 할 목적으로, 상기 외부 디바이스로부터 수신된 서명을 사용하여 계산된 상기 서명을 검증하는 단계의 상기 보안 엘리먼트에 의한 실행을 위한 스크립트를 포함하는 것을 특징으로 하는 보안화 방법.
  11. 제1항 또는 제2항에 있어서, 상기 코드 저장 영역은 상기 데이터의 로딩 전에 소프트웨어 엘리먼트들을 포함하는 것을 특징으로 하는 보안화 방법.
  12. 초기 프로그램이 기록된 컴퓨터 판독가능한 기록 매체로서,
    상기 초기 프로그램은, 그 일부에 대해, 상기 초기 프로그램에 의해 정의되는 코드 저장 영역이라 지칭되는 저장 영역을 포함하며 그 저장 영역의 임의의 수정이 상기 초기 프로그램에 의해 단독으로 제어되는 비휘발성 메모리를 포함하는 보안 엘리먼트의 마이크로프로세서에 의해 로딩 및 실행될 때,
    - 외부 디바이스로부터 데이터와 서명을 수신하는 단계;
    - 상기 외부 디바이스로부터 수신된 상기 데이터를 상기 코드 저장 영역의 부분 내로 로딩하는 단계;
    - 상기 데이터가 로딩된 후 상기 코드 저장 영역의 전체의 서명을 계산하는 단계; 및
    - 수신된 상기 서명과 계산된 상기 서명이 동일하다면 단독으로 상기 코드 저장 영역의 내용의 실행을 가능하게 하기 위하여, 수신된 상기 서명을 사용하여 계산된 상기 서명을 검증하는 단계
    를 실행하기 위한 명령들을 포함하고,
    상기 코드 저장 영역의 부분 내로 로딩될 상기 데이터는 상기 코드 저장 영역에서의 이용가능 공간의 부분만을 나타내는, 컴퓨터 판독가능한 기록 매체.
  13. 마이크로프로세서를 포함하고, 메모리에, 제12항에 기재된 초기 프로그램을 포함하는, 보안 엘리먼트.
  14. 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩을 보안화하는 디바이스로서, 상기 비휘발성 메모리는 상기 보안 엘리먼트의 초기 프로그램에 의해 정의된 코드 저장 영역이라 지칭되는 저장 영역을 포함하며, 그 저장 영역의 임의의 수정이 상기 초기 프로그램에 의해 단독으로 제어되고, 상기 디바이스는 상기 보안 엘리먼트 외부에 있고,
    - 상기 보안 엘리먼트에 송신될 데이터를 획득하는 모듈;
    - 상기 보안 엘리먼트의 이 코드 저장 영역 내로의 획득된 상기 데이터의 로딩에 의해 수정된 상기 코드 저장 영역의 이미지를 시뮬레이션하는 모듈;
    - 전체로서 상기 코드 저장 영역의 시뮬레이션된 이미지의 서명을 계산하는 모듈; 및
    - 획득된 상기 데이터와 계산된 상기 서명을 상기 보안 엘리먼트에 송신하는 모듈
    을 포함하고,
    상기 코드 저장 영역 내로 로딩될 상기 데이터는 상기 코드 저장 영역에서의 이용가능 공간의 부분만을 나타내는, 디바이스.
  15. 제14항에 기재된 보안 엘리먼트와 제13항에 기재된 보안화 디바이스를 포함하며 외부 디바이스가 보안화 디바이스인 시스템.
  16. 삭제
KR1020167029313A 2014-03-25 2015-03-25 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화 KR102036411B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1452519A FR3019347B1 (fr) 2014-03-25 2014-03-25 Securisation du chargement de donnees dans une memoire non-volatile d'un element securise
FR1452519 2014-03-25
PCT/FR2015/050758 WO2015145071A1 (fr) 2014-03-25 2015-03-25 Sécurisation du chargement de données dans une mémoire non-volatile d'un élément sécurisé

Publications (2)

Publication Number Publication Date
KR20160136386A KR20160136386A (ko) 2016-11-29
KR102036411B1 true KR102036411B1 (ko) 2019-10-24

Family

ID=50780770

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167029313A KR102036411B1 (ko) 2014-03-25 2015-03-25 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화

Country Status (9)

Country Link
US (1) US10268845B2 (ko)
EP (1) EP3123387B1 (ko)
JP (1) JP6585072B2 (ko)
KR (1) KR102036411B1 (ko)
CN (1) CN106133739B (ko)
ES (1) ES2734370T3 (ko)
FR (1) FR3019347B1 (ko)
PL (1) PL3123387T4 (ko)
WO (1) WO2015145071A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220067449A (ko) * 2020-11-17 2022-05-24 오토아이티(주) 보안성 및 신뢰성이 향상된 자동 실행 스크립트 파일의 생성 장치 및 방법과, 이의 실행 장치 및 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3086254A1 (en) * 2015-04-22 2016-10-26 Gemalto Sa Method of managing applications in a secure element when updating the operating system
KR102453705B1 (ko) 2015-09-25 2022-10-11 삼성전자주식회사 호스트의 정당성 여부에 따라 선택적으로 결제 기능을 온(on)하는 결제 장치의 동작 방법
KR102538096B1 (ko) * 2016-09-13 2023-05-31 삼성전자주식회사 어플리케이션을 검증하는 디바이스 및 방법
WO2018227729A1 (zh) * 2017-06-14 2018-12-20 华为技术有限公司 一种嵌入式通用集成电路卡配置文件的管理方法及装置
JP6949416B2 (ja) * 2017-07-13 2021-10-13 株式会社デンソー 電子制御装置、プログラム改ざん検知方法
DE102017006950A1 (de) * 2017-07-21 2019-01-24 Giesecke+Devrient Mobile Security Gmbh Aufrechterhaltung einer Netzwerkverbindung
US11552807B2 (en) 2017-09-18 2023-01-10 Huawei Technologies Co., Ltd. Data processing method and apparatus
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
FR3105853B1 (fr) * 2019-12-31 2023-01-06 Proton World Int Nv Système embarqué
FR3118218B1 (fr) * 2020-12-21 2024-02-16 St Microelectronics Rousset Procédé pour valider un module logiciel externe en vue de son utilisation par un système sur une puce

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233683B1 (en) 1997-03-24 2001-05-15 Visa International Service Association System and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
KR100617904B1 (ko) * 2005-07-21 2006-08-30 주식회사 하이스마텍 스마트카드에 복수의 카드식별정보를 설치 및 관리할 수있는 스마트카드 관리시스템 및 그 방법
US8239686B1 (en) 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
US20120246442A1 (en) * 2011-03-23 2012-09-27 Boris Dolgunov Storage device and method for updating data in a partition of the storage device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322253A (ja) * 1999-05-14 2000-11-24 Namco Ltd セキュリティ・システム
CA2400204C (en) * 2000-02-17 2011-04-19 General Instrument Corporation Method and apparatus for providing secure control of software or firmware code downloading and secure operation of a computing device receiving downloaded code
JP4186466B2 (ja) * 2002-01-16 2008-11-26 ソニー株式会社 コンテンツ配信システム、コンテンツ配信方法、および情報処理装置、並びにコンピュータ・プログラム
JP4736370B2 (ja) * 2004-07-27 2011-07-27 株式会社日立製作所 ホスティング環境構築方法および計算機システム
JPWO2008018457A1 (ja) * 2006-08-10 2009-12-24 パナソニック株式会社 メモリコントローラ、セキュアメモリカード、及びセキュアメモリカードシステム
US20120324446A1 (en) * 2011-06-17 2012-12-20 Microsoft Corporation Virtual machine image composition and signing
FR2993682B1 (fr) 2012-07-20 2014-08-22 Oberthur Technologies Mise a jour d'un systeme d'exploitation pour element securise

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233683B1 (en) 1997-03-24 2001-05-15 Visa International Service Association System and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
KR100617904B1 (ko) * 2005-07-21 2006-08-30 주식회사 하이스마텍 스마트카드에 복수의 카드식별정보를 설치 및 관리할 수있는 스마트카드 관리시스템 및 그 방법
US8239686B1 (en) 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
US20120246442A1 (en) * 2011-03-23 2012-09-27 Boris Dolgunov Storage device and method for updating data in a partition of the storage device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220067449A (ko) * 2020-11-17 2022-05-24 오토아이티(주) 보안성 및 신뢰성이 향상된 자동 실행 스크립트 파일의 생성 장치 및 방법과, 이의 실행 장치 및 방법
KR102481272B1 (ko) 2020-11-17 2022-12-26 오토아이티(주) 보안성 및 신뢰성이 향상된 자동 실행 스크립트 파일의 생성 장치 및 방법과, 이의 실행 장치 및 방법

Also Published As

Publication number Publication date
JP2017509082A (ja) 2017-03-30
EP3123387B1 (fr) 2019-03-13
US20170109546A1 (en) 2017-04-20
CN106133739A (zh) 2016-11-16
EP3123387A1 (fr) 2017-02-01
PL3123387T3 (pl) 2019-09-30
CN106133739B (zh) 2020-03-17
KR20160136386A (ko) 2016-11-29
ES2734370T3 (es) 2019-12-05
US10268845B2 (en) 2019-04-23
PL3123387T4 (pl) 2019-09-30
JP6585072B2 (ja) 2019-10-02
WO2015145071A1 (fr) 2015-10-01
FR3019347A1 (fr) 2015-10-02
FR3019347B1 (fr) 2017-07-21

Similar Documents

Publication Publication Date Title
KR102036411B1 (ko) 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화
CN102630320B (zh) 信息处理装置以及应用程序不正当协作防止方法
EP2704053B1 (en) Method and system for updating a firmware of a security module
EP3429243A1 (en) Remote management method and device
KR101756692B1 (ko) 다이나믹 보안모듈 단말장치 및 그 구동방법
CN105308560A (zh) 用于设置简档的方法和装置
TW201413491A (zh) 更新用於安全元件之操作系統
CN105574414A (zh) 将文件加载到电子装置中的随机存取存储器中的方法和相关联电子装置
US10248795B2 (en) Implementing method for JavaCard application function expansion
US10809930B2 (en) Configuring an embedded subscriber identity module
US20230030478A1 (en) Pre-personalized secure element and embedded personalization
CN108875396B (zh) 文件操作方法、usim卡、终端及可读存储介质
US11443022B2 (en) Method for controlling access to a security module
JP2006338311A (ja) 複数のアプリケーションを搭載したデバイスを処理するコンピュータシステム、デバイスおよびコンピュータプログラム
US10715527B2 (en) Method of managing profiles in a secure element
CN108990046B (zh) 移动网络的连接方法
CN112115477A (zh) 内核修复方法、装置、电子设备及存储介质
CN110602146A (zh) 数据加密、解密方法、可读存储介质和电子设备
US10489775B2 (en) Integrated circuit card adapted to transfer first data from a first application for use by a second application
EP3825881B1 (en) Managing personalisation in a device implementing a java card environment
JP2018061193A (ja) 電子情報記憶媒体、icカード、サポート情報更新方法、及びサポート情報更新プログラム
KR20240047377A (ko) 보안 엘리먼트에서 오퍼레이팅 시스템의 업데이트
JP6520090B2 (ja) Icカードシステム,icカードおよびicカード管理装置
JP2014182467A (ja) 情報記憶媒体、データ選択処理プログラム、及びデータ選択処理方法
JP2015228627A (ja) 移動体通信端末、サーバー、情報処理システム及び情報処理方法

Legal Events

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