KR101838191B1 - 보안 채널에서 보안 커맨드들의 배치의 리플레이 - Google Patents

보안 채널에서 보안 커맨드들의 배치의 리플레이 Download PDF

Info

Publication number
KR101838191B1
KR101838191B1 KR1020150143126A KR20150143126A KR101838191B1 KR 101838191 B1 KR101838191 B1 KR 101838191B1 KR 1020150143126 A KR1020150143126 A KR 1020150143126A KR 20150143126 A KR20150143126 A KR 20150143126A KR 101838191 B1 KR101838191 B1 KR 101838191B1
Authority
KR
South Korea
Prior art keywords
command
commands
slave device
current value
value
Prior art date
Application number
KR1020150143126A
Other languages
English (en)
Other versions
KR20160043520A (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 KR20160043520A publication Critical patent/KR20160043520A/ko
Application granted granted Critical
Publication of KR101838191B1 publication Critical patent/KR101838191B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 마스터 디바이스와 슬레이브 디바이스 간의 통신에 관한 것이다. 중간의 제3자는 마스터로부터 미리 생성된 보안 커맨드들의 배치를 수신하고, 커맨드들을 슬레이브에게 순차적으로 송신하도록 플레이시킨다. 이 배치는 시퀀스 카운터에 의존하는 세션 키에 의해 보호되는 채널의 수립을 표시하는 초기 커맨드와, 세션 키의 함수인 MAC 코드에 의해 보호되는 제2 커맨드를 포함한다. 보안 채널의 각각의 새로운 수립시 슬레이브의 비휘발성 메모리에서의 시퀀스 카운터의 업데이트는 미리 생성된 배치가 새로운 세션 키에 의해 쓸모가 없게 한다. 본 발명은, 이 배치가 리플레이되도록 하기 위해, 휘발성 메모리에 임시 저장될 카운터의 각각의 업데이트 값을 제공하고, 또한 테스트 카운터가 리플레이들의 최대 수에 도달하는 것을 포함하는 미리 정의된 이벤트시 비휘발성 메모리에 중복 기입될 현재 값을 제공한다.

Description

보안 채널에서 보안 커맨드들의 배치의 리플레이 {REPLAYING A BATCH OF SECURE COMMANDS IN A SECURE CHANNEL}
본 발명은 통신 분야 및, 더 구체적으로는, 마스터 디바이스, 예를 들어 서버와 슬레이브 디바이스, 예를 들어 클라이언트 사이의 통신에 관한 것이다.
2개의 통신하는 엔티티는 메시지들을 교환하기 위한 통신 계층을 정의한다. 이 통신 계층은, 종종, 예를 들어, 데이터의 무결성 및 기밀성의, 엔티티들의 인증면에서, 통신 및 데이터에 대한 상이한 레벨의 보호를 제공하는 것을 가능하게 하는, 소위 보안 채널 프로토콜을 이용하여 정의된다.
그러한 프로토콜은 마스터-슬레이브 관계에서 데이터를 교환하기 위한 칩 카드 산업에서 널리 이용된다. 마스터는 통신 채널을 개시하고 이후 슬레이브에 커맨드들을 송신함으로써 통신을 개시하고, 슬레이브는 단순히 그것에 응답한다.
예로써, 칩 카드, 및 일반적으로 임의의 SE(secure element), ICC(integrated circuit card), UICC(universal integrated circuit card) 또는 심지어 eUICC(embedded universal integrated circuit card)는 슬레이브로서, 예를 들어 클라이언트/서버 컨텍스트에서 "서버"모드에서 동작할 수 있다. 원격 장비 아이템은 마스터로서, 따라서 클라이언트/서버 컨텍스트에서 "클라이언트"로서 동작할 수 있다.
높은 레벨의 보안을 달성하기 위해, 보안 채널 프로토콜들은 하나 이상의 동적 변수, 다시 말해 시간이 지남에 따라 진화하는 변수들에 의존하는 보안 메커니즘들을 구현한다.
마스터와 슬레이브 사이에서 교환되는 커맨드들 및 메시지들은, 가능한 세션 키들을 통해, 이후 이 또는 이들 동적 변수(들)을 기반으로 생성되고, 따라서 동적 변수들(및 따라서 예시에서의 세션 키들)이 변경되면 그것들이 리플레이(replay)되는 것을 방지한다.
예를 들어, 이러한 동적 변수들은 (챌린지-응답 타입(challenge-response type)의) 인증 프로세스에서 마스터와 슬레이브 사이에서 교환되는 랜덤 미지수들을 포함할 수 있고/있거나, 2개의 엔티티 사이에서 보안 채널이 새로 수립될 때마다 증분되는 시퀀스 카운터를 포함할 수 있다. 그러한 것은, 예를 들어, 칩 카드 산업에서 널리 이용되고 GlobalPlatform 표준에서 정의되는 SCP02 및 SCP03 프로토콜들(보안 채널 프로토콜 02 및 03)에서의 경우에 대한 것이다.
이러한 프로토콜들에서, 동적 변수들은 교환되는 데이터를 인증 및/또는 암호화하는데 이용되는 하나 이상의 세션 키를 생성하고 메시지 인증 코드(MAC)를 생성하는데 이용된다. 커맨드들은 따라서 보안화되거나 또는 보호된다.
이러한 보안 채널 프로토콜들 중 다수에서, (슬레이브에 의해 송신되는 보안화된 응답들에 대해) 마스터에 의해 송신되는 상이한 보안 커맨드들은 연쇄되어(chained) (응답의) 커맨드 N+1의 생성은 이전 커맨드(응답) N이 유효화되는 것을 요구한다.
예를 들어, 메시지(커맨드 또는 응답)의 인증 코드는 CBC-MAC 타입(CBC는 "연쇄된 블록 연산(Chained Block Ciphering)"을 의미함)일 수 있고, 여기서 초기화 값은 이전 메시지의 CBC-MAC이다.
마찬가지로, 데이터의 CBC 암호화는 각각의 새로운 커맨드마다 증분되는 내부 카운터를 포함할 수 있어, 하나의 동일한 채널에서, 그것들이 포함하는 데이터가 동일해도 보안 커맨드들은 상이하다.
연쇄화(chaining)의 목적은 보안 커맨드들(응답들)이 계획된 순서대로 송신되고 프로세스되는 것을 보장하기 위한 것이다. 그것은 또한, 예를 들어, 악의적인 사람에 의해 송신된, 계획되지 않은 커맨드들(응답들)(예를 들어, 리셋 커맨드)의 더 용이한 검출을 가능하게 한다.
이하의 설명은 커맨드들이 연쇄화되는 예시들에 주로 의존한다. 그러나, 본 발명은 그러한 연쇄화된 커맨드들에 한정되지 않는다.
일부의 보안 채널 프로토콜들은 이 단계에서 이전 커맨드들 또는 응답들을 요구하지 않고 보안 커맨드들을 미리 생성하는 것을 가능하게 한다. 이를 위해, 연관된 엔티티, 일반적으로 마스터는 다른 엔티티, 여기에서는 슬레이브의 행동, 특히 슬레이브가 생성해야 하는 응답들 및 동적 변수들이 변경되는 방법을 예측(또는 시뮬레이션 또는 복제)할 수 있게 하는 것을 가능하게 하는 메커니즘들을 갖는다. 이는 보안 채널 프로토콜 예측 모드라고 불린다.
예를 들어, 예측 모드에 필요한 데이터는, 세션 키들이 생성되는, 마스터와 슬레이브 사이에서 공유되는 하나 이상의 비밀 키; 또한 세션 키들을 생성하는 것을 가능하게 하는, 일반적으로 각각의 새로 수립되는 보안 채널마다 증분되는 시퀀스 카운터인, 동적 변수들; 또한, 인증 교환들(챌린지-응답)에서 이용되는 의사 랜덤 값들(pseudo-random values)을 예측(또는 미리 생성)하는 것을 가능하게 하는 알고리즘들을 포함할 수 있다.
예측 모드는, 종종, 도 1에 도시되는 바와 같이, 마스터 디바이스에 의해 파일 또는 "스크립트" 또는 "배치(batch)"로 패키징되는, 일반적으로 연쇄되는, 보안 커맨드들의 배치(또는 세트 또는 번들 또는 시리즈)를 미리 생성하도록 이용된다. 이 도면의 배치에서, 제1 커맨드는 보안 채널을 개시 및 수립하는 것을 가능하게 하고, 보안화된, 다음 커맨드는 인증 메커니즘에 기여하고, 이후 다른 보안 커맨드들이 슬레이브 디바이스 내의 특정 프로세스들을 구동하는 것을 목표로 한다.
도 1a는 인증 프로세스 없이 보안화된 커맨드들의 배치의 또다른 예시를 도시한다. SELECT APPLICATION 커맨드는, 보안화된 STORE DATA 커맨드들의 배치 이전에, 역상관(decorrelated) 방식으로 수행될 수 있기 때문에 선택적이다. 또한, 그것은 통신 채널의 임의의 보안화에 대한 지시를 포함하지 않는다.
따라서, 제1 보안화된 STORE DATA 커맨드(파라미터 P2에 포함된 블록 번호 = 0으로부터 식별 가능)는, 그것의 CLA 필드가 그것이 보안이라는 지시를 포함하기 때문에, 보안 채널의 수립을 지시하는 제1 커맨드이다.
다른 STORE DATA 커맨드들은 또한 보안화되고 연쇄화된다.
실제로, 도 2에 도시되는 바와 같이, 마스터 및 슬레이브 디바이스들이 상대적으로 원격이고, 그 사이에 개재된, 하나 이상의 중간 엔티티 또는 제3자 디바이스가 있는 경우, 커맨드 스크립트들이 이용된다. 따라서, 슬레이브 디바이스와 (예를 들어 SSL - Secure Scoket Layer - 프로토콜을 구현하는) 직접 링크되는 제3자 디바이스는 마스터 디바이스를 대신하여 그와 상호작용한다.
예로서, 제3자 디바이스는 슬레이브 디바이스(SE, UICC 등)가 내장되는 단말 내에 구현되는 애플리케이션 (및/또는 시스템), 특히 통신하기 전에 슬레이브 디바이스를 웨이크업하기에 책임이 있는 미들릿(midlet)(애플리케이션) 일 수 있다. 다르게는, 제3자 디바이스는 통신 네트워크 내의 임의의 머신일 수 있고, 이는 즉 운송 중개자라 한다.
제3자 디바이스는 반드시 신뢰 디바이스일 필요는 없다. 특히, 그것은 (배치의 보안 커맨드들의 관점에서) 보안 채널의 보호, 구체적으로는 공유 비밀, 세션 키, 이용되는 알고리즘들 등을 보장할 수 있는 이용가능한 데이터를 갖지 않는다.
실제로, 제3자 디바이스는 커맨드들 및 임의의 보안 응답들을 송신하기에 책임이 있는데, 이는 이러한 데이터가 보안 채널의 보호를 보장한다는 것을 모르고 따라서 송신되어 온 커맨드 및 응답들을 처리할 수 없기 때문이다. 또한, 그것은 커맨드들이 성공적으로 프로세싱되었는지 판정하기 위해 일반 커맨드 프로세싱 상태를 확인할 수 있고, 예를 들면, 송신된 커맨드들의 수를 가리키는 일반 상태 메시지를 프로세싱의 종료시 마스터 디바이스로 반환할 수 있다. 마스터 디바이스는 따라서 수신한 일반 상태 메시지에 기초하여 판단할 수 있다.
커맨드들의 배치들의 컨텍스트에서, 제3자 디바이스는 커맨드 타이머로서 동작할 수 있고, 그에 따라 슬레이브 디바이스와의 수차례 통신이 있을 때와 같이 적절한 순간에 슬레이브 디바이스로 커맨드를 송신하는 것을 결정한다. 따라서, 마스터 디바이스는 커맨드 스크립트를 제3자 디바이스에 송신한 수일 후에야 일반 상태 메시지를 수신할 수 있다.
또한, 이와 달리, 커맨드의 송신은 정기적으로, 예를 들면, 유닉스 시스템의 CRON 또는 CRONTABLE 기술과 유사한 방식으로 행해질 수 있다.
보안 채널 프로토콜의 예측 모드는 생산 프로세스를 가속화하기 위해 칩 생산 단계들 (슬레이브 디바이스) 동안 이용된다. 효과적으로, 미리 생성된 커맨드는 커맨드 프로세싱 시간을 최소화하는 배치로 송신될 수 있다.
컴포넌트들(카드, SE, eUICC)과 관련된 예측 모드의 다른 이용, 예를 들면, 전화 오퍼레이터의 SIM 카드 또는 원격 판독 디바이스들이 (머신-대-머신으로) 장착된 보안 구성요소가 배치된다. 이러한 배치의 예에서, 계속적인 통신 링크를 수립하는 것은 (방화벽, 비무장 IT 존 DMZ, 등 때문에) 어렵다. 커맨드들의 배치를 슬레이브 컴포넌트와 근접한 제3자 디바이스에 송신하는 것이 이로운 것으로 증명될 수 있다. OTA(Over-The-Air) 방식이, 오퍼레이터(마스터)가 가입자들의 SIM 카드들(슬레이브들)에 대해 일련의 커맨드들을 그들을 프로그래밍/재구성하기 위해 미리 생성하는 모바일 산업에서 특히 알려져있다. 이러한 일련의 커맨드들은 제3자 디바이스, 일반적으로 커맨드들을 타겟 SIM 카드에 송신할 책임이 있는 가입자 단말에 임의의 시간에 전달될 수 있다.
도 3은 도 2의 시스템에서 커맨드들의 배치의 통상적인 이용을 도시한다.
이러한 예에서, 마스터 디바이스는 슬레이브 디바이스로 송신될 커맨드들의 배치, 예를 들면 커맨드들의 배치가 커맨드를 포함하고 있는 도 1의 것, 적어도 하나의 세션 키(예를 들면 SCP03에 따른 키 S-MAC)에 의해 보안되는 통신 채널의 슬레이브 디바이스와의 수립을 나타내는 소위 제1 커맨드(예를 들면 SCP03에 따른 초기화 커맨드 INITIALIZE UPDATE)를 생성하고, 이 세션 키는 마스터 디바이스와 슬레이브 디바이스 사이에서 공유되는 동적 변수의 현재 값에 의존하고, 마스터 디바이스는, 적어도 하나의 커맨드, 세션 키를 이용하여 계산되는 메시지 인증 코드에 의해 보안(보호)되는 소위 제2 커맨드를 포함한다.
이 생성은 공유 동적 변수(SCP03에서의 시퀀스 카운터)의 업데이트를 포함하는 보안 채널 프로토콜의 예측 모드를 구현한다.
따라서, 슬레이브 디바이스로 송신될 커맨드들의 배치를 마스터 디바이스로부터 수신하는 제3자 디바이스는 에러가 검출되지 않는 한, 커맨드 별로, 순차적으로 배치의 커맨드를 슬레이브 디바이스에 송신하기 위해 그것을 플레이(play)한다. 도면에 도시된 바와 같이, 커맨드들의 배치를 플레이하는 것은 그 이후에 송신될 각 커맨드 및 반환될 응답(일반적으로 실행 상태 메시지) 상에 루프하도록 된다.
보안 채널은 에러가 발생하자 마자 클로즈된다. 에러의 예시는 아무런 응답도 수신되지 않거나 에러 메시지가 슬레이브 디바이스에 의해 반환되는 커맨드의 송신 후에 타이머의 만료(타이머 아웃)이다.
그 일부에 대해, 슬레이브 디바이스는 커맨드를 순차적으로 수신하고, 이는 제3자 디바이스에 의해 플레이되는 커맨드들의 스크립트 또는 배치의 존재를 모르고 있다고 할 수 있다.
따라서, 슬레이브 디바이스는 제3자 디바이스로부터 적어도 하나의 커맨드, 적어도 하나의 세션 키에 의해 보안화되는 통신 채널의 수립을 나타내는 소위 제1 커맨드를 수신하고; 비휘발성 메모리에 저장된 동적 변수 또는 변수들의 현재 값으로부터 동적 변수 또는 변수들(특히 시퀀스 카운터)의 업데이트 값을 계산하고; 계산된 업데이트 값으로부터 세션 키를 생성한다. 그러면, 커맨드들의 순차적 송신(루프)를 가정하면, 슬레이브 디바이스는 또한 제3자 디바이스로부터 적어도 하나의 커맨드, (SCPP03에 따른 C-MAC 타입의) 메시지 인증 코드에 의해 보안되는 소위 제2 커맨드를 수신하고; 상기 제2 커맨드를 실행하기 이전에 세션 키를 이용하여 메시지 인증 모드를 확인한다.
일반적으로, 슬레이브 디바이스는 프로세싱된 각각의 커맨드에 응답하여 실행 상태 메시지(때로는 데이터)를 반환한다.
슬레이브 디바이스로부터 커맨드들로의 응답의 부재, 슬레이브 디바이스로부터 수신된 에러 메시지, 예를 들어 배터리 전력의 부족으로 인한 슬레이브 디바이스의 파워다운 등의 상이한 상황들이 제3자 디바이스로 하여금 커맨드 배치 실행 실패 상태를 송신하게 할 수 있고, 따라서 보안 채널의 폐쇄를 야기할 수 있다.
마스터 디바이스가 이러한 실패 상태 메시지를 수신하면, 마스터 디바이스는, 보안 채널이 폐쇄되었더라도, 동일한 커맨드들을 재실행하기를 원할 수 있다. 이제, 보안 채널의 보안 메커니즘들이 정의되는 동적 변수들이 변경되었다: 새로운 보안 채널의 세션 키들은 방금 폐쇄된 보안 채널의 세션 키들과 상이할 것이다. 따라서, 마스터 디바이스가 인증 코드들을 재계산하고 새로 예측된 세션 키들을 이용하여 커맨드 데이터를 재암호화함으로써 예측 모드에서 동일한 커맨드들의 새로운 배치를 생성해야 하는 것이 종래의 관례이다.
커맨드들의 배치가 성공적으로 실행되기 위해서는, 마스터 디바이스가 커맨드들의 새로운 배치를 생성할 수 있도록 새로운 접속들, 새로운 암호 프로세스들(따라서, 비용이 드는 프로세스들)이 필요하므로, 이러한 상황은 만족스럽지 않다. 이는 마스터 디바이스가 다른 요청들 또는 표준 오퍼레이션들을 프로세싱할 능력을 감소시킨다.
더욱이, 제3자 디바이스 및 슬레이브 디바이스에 의해 커맨드들의 배치를 프로세싱하는 것은, 시간이 지남에 따라 마스터 디바이스에 의해 동일한 배치를 송신하는 것으로부터 역상관(decorrelate)될 수 있다는 사실을 감안하면, 후자는 실패에 대해 늦게 통지받을 수 있고, 따라서 마스터 디바이스에 대해 중대한 시간 손실(때로는 며칠)을 야기할 수 있다. 이러한 시간 손실은 예를 들어, 배열된 컴포넌트들의 선단(fleet) 내의 커맨드들의 각각의 배치에 대해 업데이트가 실시되어야 할 경우 불리하다고 증명될 수 있다. 사실상, 이런 상황은 마스터 디바이스가 기하학적으로 배열된 컴포넌트들의 선단을 신속하게 프로그래밍하거나 제어하는 능력들을 감소시킨다.
커맨드들의 배치의 실행의 실패에 대한 이유들은, 악의적인 사람에 의한 해킹 시도, 제3자와 슬레이브 디바이스들 간의 통신 링크 상의 방해(예를 들어, 간섭) 등, 최소이고 때로는 매우 국지적일 수 있으므로 편견은 더욱 커진다.
본 발명은 상술한 문제점들 중 전부 또는 일부를 해결하는 것을 그 목적으로 한다.
이러한 컨텍스트에서, 본 발명은 슬레이브 디바이스 상에서 상술한 단계들 및 보안 통신 채널의 수립을 나타내는 제1 커맨드의 수신 시, 포지티브 증분 또는 (감쇠(decrement)로도 알려진) 네가티브 증분만큼 테스트 카운터를 증분하는 단계; 및 테스트 카운터가 임계값에 도달할 때, 비휘발성 메모리 내의 동적 변수의 현재 값을 계산된 업데이트 값으로 겹쳐쓰는(overwrite) 단계, 바꾸어 말하면, 테스트 카운터가 임계값에 도달할 때, 동적 변수의 새로운 현재의 값으로서, 비휘발성 메모리 내에, (동적 변수의) 계산된 업데이트 값을 저장하는 단계를 포함하는 통신 방법을 제시한다.
비휘발성 메모리 내의 동적 변수의 물리적 업데이트를 지연시키는 테스트 카운터의 이용에 의해 (따라서, 임의의 새로운 보안 채널이 보안 채널의 보호를 보장하는 새로운 데이터, 예를 들어 새로운 세션 키들을 요구하기 전에, 따라서 커맨드들의 배치가 고갈되기 전에), 슬레이브 디바이스는 제3자 디바이스로 하여금 슬레이브 디바이스에 의해 실행될 커맨드들의 세트 상에 다수의 시도들을 수행할 수 있게 한다. 사실상, 이러한 리플레이들에 의해 수립된 보안 채널들의 세션 키들은 동일하다. 이러한 복수의 시도들은 특히 모든 커맨드들의 배치를 실행하기 위해 임의의 해킹들 및/또는 통신 방해들을 극복하는 것을 가능케 한다.
따라서, 제3자 디바이스에 의한 커맨드들의 배치의 리플레이가 가능하며, 이는 이러한 완전한 실행을 위한 마스터 디바이스에 대한 의존성(recourse)을 감소시킨다. 따라서, 접속들의 수, 마스터 디바이스에 요구되는 암호화 프로세스들의 양, 및 이러한 완전한 실행을 위해 필요한 시간이 감소된다. 더욱이, 마스터 디바이스는 다른 커맨드들을 프로세싱하도록 더 이용 가능하다.
비휘발성 메모리 내에서 업데이트 값을 새로운 현재의 값으로서 스위칭(switch over)함으로써 공유된 동적 변수의 업데이트를 인증하는 것은 "커미트먼트"로도 알려져 있다.
대칭적으로, 본 발명은 제3자 디바이스 상에서 상술한 단계들 및 제3자 디바이스가 슬레이브 디바이스로부터 슬레이브 디바이스에 의한 동적 변수의 현재 값의 업데이트의 표시를 수신하지 않는 한, 바꾸어 말하면, 제3자 디바이스가 슬레이브 디바이스로부터 커맨드 배치 리플레이 루프 탈출 이벤트(command batch replay loop exit event)를 수신하지 않는 한, 커맨드들의 배치를 리플레이하는 단계를 포함하는 통신 방법을 더 제공한다.
아래에서 명백해질 바와 같이, 표시들은 간접적, 즉, 송신되는 정보에 암시될 수 있다.
본 발명은 보안 채널의 보안 보호가 수립되는 공유 동적 변수의 효과적인 업데이트 여부에 관한 슬레이브 디바이스로부터의 표시의 인식에 의해 보안 커맨드들의 배치의 제어된 리플레이를 허용한다.
따라서, 제3자 디바이스의 행동은, 모든 커맨드들의 배치를 성공적으로 실행하는 데 있어서 마스터 디바이스에 대한 의존성을 감소시키기 위해, 슬레이브 디바이스가 전술한 바와 같이 테스트 카운터를 이용할 수 있게 한다.
관련하여, 본 발명은 또한, 동적 변수의 현재 값을 저장하는 비휘발성 메모리, 및 제1 커맨드이라 지칭되는, 적어도 하나의 세션 키에 의해 보안되는 통신 채널의 수립을 나타내는, 적어도 하나의 커맨드를 제3자 디바이스로부터 수신하고, 비휘발성 메모리에 저장된 현재 값으로부터 동적 변수의 업데이트 값을 계산하고, 계산된 업데이트 값으로부터 세션 키를 생성하고, 제2 커맨드이라 지칭되는, 메시지 인증 코드에 의해 보안화되는, 적어도 하나의 커맨드를 제3자 디바이스로부터 수신하고, 상기 제2 커맨드을 실행하기 전에 세션 키를 이용하여 메시지 인증 코드를 확인하도록 구성되는 프로세서를 포함하고, 프로세싱 디바이스는 테스트 카운터를 더 포함하고, 프로세서는, 보안 통신 채널의 수립을 나타내는 제1 커맨드의 수신 시 테스트 카운터를 증분하고, 테스트 카운터가 임계값에 도달하면 비휘발성 메모리 내의 동적 변수의 현재 값을 계산된 업데이트 값으로 겹쳐쓰도록 더 구성되는 것을 특징으로 하는 프로세싱 디바이스, 예를 들어 칩 카드에 연관되는 것이다.
대칭적으로, 본 발명은 또한 프로세싱 디바이스에 관한 것으로, 상기 프로세싱 디바이스는 프로세서를 포함하고, 상기 프로세서는: 마스터 디바이스로부터, 슬레이브 디바이스로 송신질 커맨드들의 배치(batch)를 수신하고 - 상기 커맨드들의 배치는, 제1 커맨드로 지칭되고, 상기 마스터 디바이스와 상기 슬레이브 디바이스 사이에서 공유되는 동적 변수의 현재 값에 의존하는 적어도 하나의 세션 키에 의해 보안화되는, 상기 슬레이브 디바이스와의 통신 채널의 수립을 나타내는, 커맨드, 및 제2 커맨드로 지칭되고, 상기 세션 키를 이용하여 계산되는 메시지 인증 코드에 의해 보안화되는, 적어도 하나의 커맨드를 포함함 -; 어떠한 에러도 검출되지 않는 한, 커맨드 단위로, 순차적으로 상기 배치의 상기 커맨드들을, 상기 슬레이브 디바이스에, 보내기 위해 상기 커맨드들의 배치를 플레이하도록 구성되고, 상기 프로세스는 또한, 상기 프로세싱 디바이스가 상기 슬레이브 디바이스에 의한 상기 동적 변수의 상기 현재 값의 업데이트의 표시를, 상기 슬레이브 디바이스로부터, 수신하지 못하는 한 상기 커맨드들의 배치를 리플레이하도록 구성되는 것을 특징으로 한다.
또한, 본 발명은, 전술한 바와 같은 슬레이브 디바이스, 전술한 바와 같은 제3자 디바이스, 커맨드들의 배치를 생성하고 상기 제3자 디바이스에 보내도록 구성된 마스터 디바이스를 포함하는 시스템을 재시한다.
본 발명의 또 다른 청구 대상은, 프로그램이 컴퓨터 상에서 실행될 때 전술한 방법들 중 하나의 방법의 각각의 단계들을 구현하는 데 적합한 명령어들을 포함하는 컴퓨터 프로그램 제품이다.
본 발명에 따른 디바이스들 및 컴퓨터 프로그램 제품은 방법들과 함께 전술한 것들과 유사한 이점들을 제공한다.
실시예들에 따른 방법들 및 디바이스들의 그외의 특징들은, 장치로 바꾸어 쓸 수 있는, 방법항 형식을 본질적으로 이용하여, 종속항들에서 기술된다.
일 실시예에서, 업데이트 값을 계산하는 단계는 슬레이브 디바이스의 휘발성 메모리에 계산된 업데이트 값을 저장하는 것을 포함한다.
이러한 구성은 그것의 업데이트를 위해 계산되는 값 또는 값들에 의해 수정되지 않는 동적 변수의 현재 값을 보장한다. 따라서, 하나 이상의 보안 채널을 수립할 가능성은, 비휘발성 메모리에 변경되지 않은 채로 남은, 동적 변수의 동일한 현재 값을 이용하여 유지된다. 그 결과, 그러한 보안 채널의 수립을 요구하는 커맨드들의 배치의, 제3자 디바이스에 의한, 리플레이가 가능하게 되고, 보장된다.
또 다른 실시예에서, 비휘발성 메모리 내의 동적 변수의 현재 값은, (예를 들면, 관련된 커맨드의 표시자를 통해) 모든 제2 보안 커맨드들 중 마지막 보안 커맨드가 유효하게 검증된 메시지 인증 코드를 포함하고 성공적으로 실행될 때, 계산된 업데이트 값으로 비휘발성 메모리에 겹쳐쓰기된다.
이러한 상황은 배치의 보안 커맨드들의 완전한 실행에 대응한다. 보안 채널은 이제 더 이상 필요하지 않고 폐쇄할 수 있으며, 이러한 경우에, 동적 변수 또는 변수들은 새로운 보안 데이터(예를 들면, 세션 키들)로 수립될 다음의 보안 채널들을 위해 물리적으로 업데이트될 수 있다. 이러한 상황은, 성공적으로 완료된 실행을 가정하면 그러한 리플레이가 쓸모없다는 것을 증명하기 때문에, 리플레이 루프 탈출 이벤트의 예시이다.
특정 실시예에서, (슬레이브 디바이스 측에서의) 방법은 이하의 단계: 마지막 보안 커맨드에 응답하여 제3자 디바이스에, 제2 커맨드 또는 배치의 커맨드들의 실행이 성공적으로 수행되었다는 표시를 포함하는 메시지를 송신하는 단계를 더 포함한다. 이러한 표시는 특히 제3자 디바이스가 슬레이브 디바이스의 비휘발성 메모리 내의 동적 변수의 효과적인 업데이트(SCP03의 시퀀스 카운터)를 간접적으로 통지받는 것을 가능하게 한다.
또 다른 실시예에서, 비휘발성 메모리 내의 동적 변수의 현재 값은, 메시지 인증 코드가 성공적으로 확인된 하나의 제2 커맨드가, 예를 들면, 호스트 암호(host cryptogram)(하기에 설명되는 인증 절차)이 (SCP03에서) EXTERNAL AUTHENTICATE 커맨드에 대해 무효라고 선언되는 경우, 또는 해독된 커맨드가 잘못된 것을 증명하는 경우와 같은, 이러한 제2 커맨드의 실행의 에러 또는 예외를 야기하는 경우 계산된 업데이트 값으로 비휘발성 메모리에 겹쳐쓰기된다. 이러한 상황들은, 이러한 상황들에서, 동일한 커맨드의 리플레이가 동일한 에러를 야기할 것이고: 보안 커맨드들의 배치의 리플레이가 따라서 쓸모없다는 것을 증명하기 때문에, 리플레이 루프 탈출 이벤트의 예시들이다.
이러한 구성은 비휘발성 메모리에서 동적 변수의 효과적인 업데이트하게 하고(커미트먼트 또는 스위치오버), 따라서 커맨드들의 배치를 리플레이하는 것을 불가능하게 하는데, 이는 실행 에러 또는 예외가 배치의 보안 커맨드에 고유한 에러를 반영하기 때문이고, 배치의 보안 커맨드는 단순한 리플레이에 의해서가 아니라, 동일한 커맨드들의 새로운 배치를 생성함으로써 마스터 디바이스에 의해 수정될 수 있을 것이다. 본 명세서에서 제안된 프로비전은 따라서 본질적으로 잘못된 커맨드들의 배치를 리플레이하는 것에 연관된 시간의 손실을 방지하는 것을 가능하게 한다.
일 특정 실시예에서, (슬레이브 디바이스 측 상의) 방법은 실행 에러 또는 예외를 야기하는 상기 제2 커맨드에 응답하여 성공적으로 확인된 메시지 인증 코드에도 불구하고 실행 에러 또는 예외의 표시를 포함하는 메시지를 제3자 디바이스로 송신하는 단계를 포함한다. 이러한 표시는 또한 제3자 디바이스가 슬레이브 디바이스의 비휘발성 메모리에서 동적 변수(SCP03에서의 시퀀스 카운터)의 효과적인 업데이트를 간접적으로 통지받을 수 있게 한다.
이러한 다양한 프로비전들로부터, 동적 변수(예를 들어 SCP02 또는 SCP03에서의 시퀀스 카운터)의 커미트먼트 또는 스위치오버는, 리플레이 루프 탈출 이벤트(카운터 입계값에 도달, 커맨드들의 배치의 종료, 그 진본성(authenticity) 및 그 무결성에도 불구하고 배치 내의 잘못된 커맨드의 검출)가 발생하는 경우에만 일어날 수 있다. 이러한 이벤트들을 배제하면, 커맨드들의 배치는 허용된 테스트들의 수에 도달하지 못하는 동안에 예상하지 못한 에러가 발생하는 경우 리플레이될 수 있다.
일 실시예에서, 테스트 카운터는 비휘발성 메모리 내의 동적 변수의 현재 값이 계산된 업데이트 값으로 겹쳐쓰여질 때 디폴트 값으로 리셋된다. 예를 들어, EEPROM 메모리에 저장된 이러한 디폴트 값은 시간에 맞춰 수정가능할 수 있다.
이러한 프로비전은 시스템을 커맨드들의 새로운 배치의 리플레이들의 새로운 시리즈를 위해 재구성하는 것을 가능하게 하고, 이러한 새로운 배치의 커맨드들은 효과적으로 업데이트된 동적 변수를 이용하여 (즉 새로운 현재 값으로) 보안화될 필요가 있다.
일 특정 실시예에서 비휘발성 메모리에서 현재 값을 계산된 업데이트 값으로 겹쳐쓰는 것을 포함하는 단계 및 테스트 카운터를 리셋하는 것을 포함하는 단계는 계산된 업데이트 값으로부터 세션 키를 생성하는 단계 전에 수행된다.
이러한 프로비전은 악의적인 사람이 슬레이브 디바이스에 의해 오퍼레이션들의 세트를 무기한으로 리플레이할 수 있는 위험을 감소시킴으로써 본 발명에 따른 방법의 강력한 보안을 보증하는데, 이는 동적 변수의 커미트먼트 또는 스위치오버가 보안 채널 초기화 절차에서 가능한 빨리 수행되기 때문이다.
특히, 저장 단계는 증분 단계에 선행할 수 있다.
특정 실시예에서, 비휘발성 메모리 내의 현재 값을 계산된 업데이트 값으로 겹쳐쓰는 것을 포함하는 단계 및 테스트 카운터를 리셋하는 것을 포함하는 단계는 원자적(atomic) 단계에서 수행된다.
이러한 프로비전은 동적 변수와 테스트 카운터 사이의 비동기화의 위험을 상당히 감소시키는 것을 가능하게 하고, 결과적으로 악의적인 사람이 커맨드들의 배치를 무기한으로 리플레이할 가능성을 상당히 감소시킨다.
일 실시예에서, 상기 제1 커맨드는 메시지 인증 코드에 의해 보안화되는 하나의 상기 제2 커맨드이다. 채널 보안화 메커니즘의 구현의 표시(암호화 및 키에 의한 MAC)는 커맨드 헤더의 비보안되는, 따라서 판독가능한 필드(예를 들어 SCP03에서 CLA 코드)에 제공될 수 있어서, 세션 키들의 생성을 트리거하여 커맨드를 해독하고 MAC 코드를 확인하는 것을 가능하게 할 수 있다.
제3자 디바이스와 관련된 실시예에서, 슬레이브 디바이스에 의해 (공유된) 동적 변수의 (효과적인) 업데이트의 표시를 수신하는 것은, 슬레이브 디바이스로부터 동적 변수의 현재 값을 수신하고 수신된 현재 값을 동적 변수의 로컬 값과 비교하는 것을 포함한다. 제3자 디바이스는 따라서 슬레이브 단말이 그것의 동적 변수를 공개적으로 업데이트하였는지 여부를 자신이 알고 있는 최종(로컬) 값과 비교함으로써 직접 확인할 수 있다.
특히, 동적 변수의 현재 값은 제3자 디바이스에 의해 슬레이브 디바이스로부터 제1 커맨드로의 응답에서 수신될 수 있다. 이러한 프로비전은 제3자 디바이스를 위한 추가의 프로세스들을 거의 필요로 하지 않고, 수정 없이 기존의 프로토콜들에 기반한다. 사실상, 통상적으로 시퀀스 카운터(즉 SCP02 및 SCP03 경우에서 공유 동적 변수)가 초기화 커맨드(이러한 동일한 프로토콜들에서 INITIALIZE UPDATE)에 응답하여 반환될 수 있고, 제3자 디바이스가 그것이 알고 있는 카운터의 최종 값과 단순히 비교함으로써 기간 내에 시퀀스 카운터의 효과적인 업데이트(커미트먼트)가 일어났는지 아닌지의 여부를 효과적으로 결정할 수 있게 한다.
다른 실시예에서, 현재 값의 업데이트의 표시(따라서 커맨드들의 현재 배치의 리플레이를 결정하는 것을 가능하게 함)는 상기 슬레이브 디바이스에 의한 상기 배치의 상기 제2 커맨드 또는 커맨드들의 실행이 성공적으로 수행되었다는 표시를 포함한다.
다른 실시예에서, 현재 값의 업데이트의 표시는 메시지 인증 코드가 성공적으로 확인된 배치의 제2 커맨드의 슬레이브 디바이스에 의한 실행이 이러한 제2 커맨드의 에러를 이끌었다는 표시를 포함한다. 위에서 설명된 바와 같이, 이러한 구성은 EXTERNAL AUTHENTICATE 커맨드(SCP03)의 호스트 암호의 확인이 유효한 MAC 코드에도 불구하고 실패한 경우를 포함한다.
바람직하게, 제3자 디바이스에 대하여 상기 정의된 3개의 예시적인 표시들(현재값, 성공의 표시 또는 유효 MAC 코드임에도 불구하고 에러의 표시)은 제3자 디바이스가 커맨드들의 배치를 리플레이할 수 없음을 인지하는 단지 리플레이 루프 탈출 이벤트들이다. 실제로, 전술한 바와 같이, 공유된 동적 변수는 이 경우들에서 업데이트되고, 이것은 MAC 인증 코드들 심지어 현재 배치 내의 커맨드들의 암호들이 새로운 세션 키들로부터 현재 비동기화되어 있음을 의미한다.
다른 실시예에서, 슬레이브 디바이스에 의해 동적 변수의 (유효한) 업데이트의 표시를 수신하는 것은, 제1 커맨드에 바로 후속하는 하나의 제2 커맨드에 응답하여 슬레이브 디바이스로부터 에러 메시지(예를 들어, GlobalPlatform으로부터의 SCP03에서 0x6982)를 수신하는 것을 포함하고, 에러 메시지는 제1 커맨드에 바로 후속하는 제2 커맨드에 대한 잘못된 메시지 인증 코드를 나타낸다.
이러한 구성에서, 제3자 디바이스는, (세션 키들을 통한 동적 변수에 기초하여) MAC 코드에 의해 보호된 제1 커맨드로부터, MAC 코드가 잘못되면(GlobalPlatform 표준에서 에러 메시지 0x6982), 아마도 세션 키들(및 결과적으로 동적 변수)이 커맨드들의 배치에서 이전에 생성된 MAC 코드들을 위해 제공된 것이 아니라는 것을 고려한다. 사실상, 아마도 동적 변수는 슬레이브 디바이스의 일부분에 증분되어 이전에 예측된 커맨드들의 배치와의 비동기화를 야기한다. MAC 코드 에러는 또한 통신 채널의 교란(disturbance)의 원인이므로, 이러한 제공은 최적이 아니라는 것이 이해될 것이다.
일 실시예에서, 특히 후속하는 제2 커맨드의 MAC 인증 코드의 계산이 선행하는 제2 커맨드의 MAC 코드에 의존하는 점을 고려하면, 다수의 제2 커맨드들의 메시지 인증 코드들은 연쇄된다. 이러한 제공은 커맨드들의 배치의 실행을, 예측되지않은 커맨드들의 삽입을 목적으로 하는 공격들 또는 배치에 정의된 커맨드들의 순서혼란(disrupt)으로부터 보안화한다.
본 발명의 그외의 특정한 피처들 및 장점들은 첨부 도면들에 의해 예시되는 이하의 설명으로부터 더욱 명확해질 것이다.
도 1 및 도 1a는 미리 생성된 커맨드들의 배치들의 예시들을 도시한다.
도 2는 본 발명의 실시예들이 구현되는 시스템을 개략적으로 나타낸다.
도 3은 도 2의 시스템에서 커맨드들의 배치의 종래의 이용을 도시한다.
도 4는 도 2를 참조하여 기술된 시스템의 각각의 구성 디바이스의 예시적인 하드웨어 아키텍처를 도시한다.
도 5는 GlobalPlatform에 정의된 SCP03 프로토콜에 따른 종래의 교환들을 개략적으로 도시한다.
도 5a는 SCP03 프로토콜의 예측 모드에서의 교환들을 개략적으로 도시한다.
도 5b는 인증 절차 없이 커맨드들의 배치의 예측 모드에서의 교환들을 개략적으로 도시한다.
도 6은, 도 3과 동일한 방식에 의해, 본 발명의 실시예들에 따라 커맨드들의 배치를 리플레이하는 확률을 도시한다.
도 7은 슬레이브 디바이스의 부분에 대한 본 발명의 실시예의 일반적인 단계들을 흐름도 형식으로 도시한다.
도 8은 제3자 디바이스의 부분에 대한 본 발명의 실시예의 일반적인 단계들을 흐름도 형식으로 도시한다.
도 9는 SCP03 프로토콜의 예측 모드에 의존하는 본 발명의 실시예의 교환들을 도 5a의 방식을 이용하여 도시한다.
도 9a는 인증 절차 없이 예측된 커맨드들의 배치의 본 발명의 실시예의 교환들을 도 5b의 방식을 이용하여 도시한다.
도 10은 본 발명의 일 구현에서 시퀀스 카운터의 비휘발성 메모리에서 효과적인 업데이트를 지연하는 효과를 도시한다.
도 2는 본 발명의 실시예들이 구현될 수 있는 예시적인 시스템을 개략적으로 도시한다. 시스템(10)은 마스터 디바이스(12), 예를 들어, 전화 오퍼레이터의 서버, 및 전화 오퍼레이터가 업데이트를 원하는 슬레이브 디바이스(14), 예를 들어, SIM 카드를 포함한다. 슬레이브 디바이스(14)는 예를 들어 마스터 디바이스(12)와 슬레이브 디바이스(14) 사이의 교환들에서 제3자 디바이스(16)로서 동작하는 모바일 단말에 내장된다. 본 발명의 컨텍스트에서 마스터 디바이스(12)와 슬레이브 디바이스(14) 사이에 (표시되지 않은) 다른 중간 디바이스들이 존재할 수 있다.
이 예시에서, 전화 오퍼레이터의 서버는 그것이 SIM 카드와 교환들을 개시하기 때문에 "마스터"로 지칭되고, 따라서 SIM 카드는 "슬레이브"이다. 이 교환들을 수행하기 위해, 마스터 디바이스는, 예를 들어 SCP03 프로토콜에 따른 보안 채널을 개시한 다음, SIM 카드에 일련의 커맨드들을 송신한다. SCP02 및 SCP03의 열화된 모드들 및 그외의 프로토콜들은 보안 채널 초기화 절차를 생략하고 보안 커맨드들이 직접 송신되는 것을 허용하는 것을 고려한다. 이 경우, 제1 보안 커맨드는 보안 채널이 마스터와 슬레이브 사이에 공유된 비밀들에 일반적으로 기초하여 암시적으로 수립되는 것을 나타낸다.
마스터 디바이스(12)와 제3자 디바이스(16) 간의 링크는 유선(이더넷 접속)일 수도 있고, 무선(모바일 네트워크)일 수도 있다. SIM 카드(14)가 내장된 제3자 디바이스(16)가 단말인 예에서, 이들 2개의 개체 간의 통신 링크는 접촉형(contact type)이다. 물론, 비접촉형(무선) 변형례도 상정 가능하다.
도 4는 도 2를 참조하여 기술된 시스템의 각각의 구성 디바이스에 대한 예시적인 하드웨어 아키텍처를 도시한다.
본 예에서, 디바이스, 즉 SIM 카드(14) 또는 단말(16) 또는 서버(12)는 아래 요소에 링크되는 통신 버스를 포함한다:
- CPU(Central Processing Unit)로 표기되는 프로세싱 유닛(또는 마이크로 프로세서);
- 하나 이상의 비휘발성 메모리, 예컨대 본 발명의 의미상 지원을 구성할 수 있는, 즉 본 발명의 일 실시예에 따른 방법의 구현을 위한 명령어들을 포함하는 컴퓨터 프로그램을 포함할 수 있는 ROM(Read Only Memory). 이러한 비휘발성 메모리는 EEPROM(Electrically Erasable Read Only Memory) 또는 나아가 플래시 메모리일 수도 있다. 주목할 것은, 슬레이브 디바이스(14)의 비휘발성 메모리는 공유된 동적 변수 또는 변수들의 현재 값, 예컨대, 이하에서 기술되는 SCP02 또는 SCP03 경우의 시퀀스 카운터를 저장한다:
- 전술한 프로그램의 실행 동안에 생성되고 변경되는 변수들 및 파라미터들을 저장하는 데 적합한 레지스터들을 포함하는, 랜덤 액세스 메모리 또는 캐시 메모리 또는 휘발성 메모리, 예컨대 RAM(Random Access Memory); 본 발명의 구현 시에, ROM(Read Only Memory)에 저장된 프로그램의 명령어들의 코드들은 프로세싱 유닛 CPU에 의해 실행되도록 RAM 메모리에 로딩된다;
- 데이터를, 예컨대 통신 네트워크를 통해 송신하고 수신하는 데 적합한 통신 인터페이스 또는 보안 요소의 판독/기입 인터페이스;
- 입력/출력 인터페이스 I/O, 예컨대 스크린, 키보드, 마우스 또는 다른 포인팅 디바이스(터치 스크린 또는 원격 제어기 등); 이러한 I/O 인터페이스는 상기 방법이 그래픽 인터페이스를 통해 구현되는 동안에 사용자가 시스템과 상호 작용하는 것을 가능하게 한다;
통신 버스는 장비에 포함된 또는 링크된 서로 다른 요소들 간의 통신 및 상호 운용성을 가능하게 한다. 버스에 대한 표현은 제한적이지 않으며, 주목할 것은, 프로세싱 유닛이 장비의 임의의 요소에 직접적으로 또는 이러한 장비의 또 다른 요소를 통해 명령어들을 전달할 수 있다는 것이다.
도 5는 GlobalPlatform에 정의된 SCP03 프로토콜에 따른 종래의 교환을 개략적으로 나타낸다. 전술한 예측 모드에서, 본 도면의 마스터 디바이스에 의해 송신된 커맨드들 모두가 제3자 디바이스, 예컨대 SIM 카드 타입의 슬레이브 디바이스를 내장하고 있는 단말에 의해 플레이되는 커맨드들의 배치에 그룹화될 수 있다는 점에 주목해야 한다.
도 1에 개략적으로 도시된 바와 같이, 이러한 교환들은 잘 알려진 "챌린지-응답" 타입의 인증 절차를 포함하는 보안 채널의 수립에 전용하는 제1 부분을 포함할 수 있다. 도시되지는 않았지만, 슬레이브 디바이스의 타겟 애플리케이션을 위해 의도된 이들 커맨드들은 상기 타겟 애플리케이션을 선택하는 초기 커맨드, 일반적으로 잘 알려진 SELECT 커맨드 이후에 발생한다. 변형례에서, 어떠한 SELECT 커맨드도 제공되지 않는다면, 슬레이브 디바이스(14)에 전원이 공급되는 경우에 (또 다른 애플리케이션에 대해 어떠한 SELECT 커맨드도 수신되지 않는 한) 슬레이브 디바이스(14)의 애플리케이션은 디폴트로 선택될 수 있다.
따라서, 단계 500에서, 마스터 디바이스(12) INIUPDATE 커맨드를 이용하여, 단계 502에서 슬레이브 디바이스(14)에 송신하는 호스트 챌린지를 (랜덤하게 또는 의사-랜덤하게) 생성한다.
이러한 커맨드를 수신하면, 단계 504에서, 슬레이브 디바이스(14)는 증분만큼 (3 바이트씩) 시퀀스 카운터를 업데이트하고(현재의 값은 비휘발성 메모리 내에서 증분된다), 그 후 단계 506에서 카드 내에서 선택된 애플리케이션의 식별자(AID) 및 시퀀스 카운터의 함수인 카드 챌린지를 계산한다. 카드 챌린지의 생성은 일반적으로 (예측 채널의 경우에 마스터 디바이스(12)에 대해) 의사-랜덤하며 예측 가능하다.
단계 507에서, 슬레이브 디바이스(14)는 특히 시퀀스 카운터, 호스트 챌린지 및 카드 챌린지의 현재 값, 및 마스터 디바이스와 슬레이브 디바이스 간에 공유된 하나 이상의 정적 비밀값을 이용하여, 보안 채널에 대한 세션 키들(GlobalPlatform 표준에서 상술됨)을 생성한다.
단계 508에서, 슬레이브 디바이스(14)는 호스트 챌린지 및 카드 챌린지, 및 (공유된) 상수의 함수인 카드에 대한 인증 암호를 계산한다. 예를 들어, 암호 생성 함수는 생성된 세션 키들 중 하나에 기초한 S-MAC 알고리즘일 수 있다.
슬레이브 디바이스(14)는 카드 챌린지, 카드 암호, 및 시퀀스 카운터의 현재 값을 마스터 디바이스(12)에 반환한다. 이는 단계 510이다.
이들 데이터를 수신하면, 마스터 디바이스(12)는 계속 진행하기 전에, 예컨대 선택적 인수(optional argument)에 표시된 응답의 상태를 확인한다(511). 상태가 포지티브이면(필드 SW=9000), 단계 512에서, 마스터 디바이스(12)는 슬레이브 디바이스(14)와 유사한 방식으로 세션 키들을 생성한다.
그 후, 마스터 디바이스(12)는 슬레이브 디바이스(14)와 마찬가지로 (공유된) 동일한 알고리즘을 적용하여 카드 암호를 계산하고 확인한다. 이는 단계 514이다.
단계 516에서, 마스터 디바이스(12)는 (공유된) 상수 및 세션 키들의 함수(이들은 호스트 챌린지 및 카드 챌린지의 암수이며, 또한 카드 챌린지는 예측 모드에서 시퀀스 카운터의 함수임)인 호스트에 대한 인증 암호를 계산한다. 예를 들어, 암호 생성 함수는 생성된 세션 키들 중 하나에 기초한 S-MAC 알고리즘일 수 있다.
이러한 호스트 암호는 EXTERNAL AUTHENTICATE 커맨드에 의해 슬레이브 디바이스(14)로 송신되고, 그것은 MAC-전용 세션 키를 이용하여, 호스트 암호 상에서 컴퓨팅된 MAC 인증 코드의 추가에 의해 무결성 및 진정성에 있어서 보호된다. 송신은 단계(518)에 대응한다.
단계(520)에서, 슬레이브 디바이스(14)는 MAC 코드를 확인하고, 그 다음 보안 채널의 생성을 확인(confirm)하기 위해 수신된 호스트 암호를 확인한다(수신확인 응답(522)). 마스터 디바이스(12)는 수신된 응답의 상태를 확인한다.
병행하여, 또는 응답의 상태의 포지티브 입증 이후에, 단계(524)에서, 마스터 디바이스(12)는 하나 이상의 커맨드를 생성하고, (세션 키들을 이용하여) 선택적으로 암호화한다. 더욱이, 보안 MAC 코드가 그들 각각에 대해 계산된 후, 그들에 대해 부가된다. 커맨드들 및 그들의 MAC 코드들의 암호화는, 반드시 필요한 것은 아니지만, 일반적으로 그들 각각이 이전의 것에(그에 따라, 처음에 EXTERNAL AUTHENTICATE 커맨드의 MAC에) 의존하는 만큼 많이 연쇄된다.
명백하게, 예측 모드에서, 그들의 암호화 및 그들의 MAC 코드를 포함하는 이들 커맨드가 예측되고, 그에 따라 보안 채널의 수립 이전에 생성된다.
단계(526)는 이들 커맨드의 연속적인 송신 및 마스터 디바이스(12)에 의한 그들 응답의 수신을 도식적으로 나타낸다. 예를 들어, 커맨드는 슬레이브 디바이스(14)의 비휘발성 메모리에서의 새로운 데이터의 저장을 위한 글로벌플랫폼(GlobalPlatform)에서 정의된 STORE DATA 커맨드일 수 있다.
이들 보안 커맨드 각각에 대해, 슬레이브 디바이스(14)는 MAC 코드를 확인(단계(528))한 후, 그것을 실행하기 전에 그것을 해독(단계(530))한다. 이러한 실행에 응답하여, 데이터가 MAC에 의해 암호화 및 보호되는 경우에도, 그것은 포지티브 수신확인(OK, 필드 SW는 값 9000을 가짐) 또는 에러 메시지(NOK)를 반환하며, 이것은 마스터 디바이스에 의해 처리되고(단계(532)), 이 경우 마스터 디바이스(12)는 (MAC 코드에 의해) 그들의 무결성을 확인한 후, 그들을 해독하도록 진행한다(534).
도 5a는 제3자 디바이스(16)에 대한 커맨드들의 배치의 송신을 초래하는 SCP03에 대한 예측 모드의 실시예를 도시한다.
예측 모드에서, 마스터 디바이스(12)는 응답(510)의 요소들을 고려하지 않음을 주지해야 한다. 사실상, 그것은 슬레이브 디바이스(14)에 의해 유지된 변수들 및 값들의 이미지를 국부적으로 유지하며, 그것은 카드 챌린지, 시퀀스 카운터의 새로운 값을 알고 있는 카드 암호를 국부적으로 계산할 수 있게 한다.
제시된 예에서, 마스터 디바이스(12)가 예측적으로 수행하는 이들 다양한 프로세스가 커맨드들의 배치, 즉, 타겟 애플리케이션과 공유된 시퀀스 카운터의 공개 값(public value)의 복원, 호스트 및 카드 챌린지들의 의사 랜덤 생성, 세션 키들의 생성, 그 MAC 코드를 갖는 INITIALIZE UPDATE 및 EXTERNAL AUTHENTICATE 커맨드들의 생성, 커맨드들의 배치를 형성하기 위한 다른 보안 커맨드들의 생성의 송신 이전에 수행된다.
그 다음, 제3자 디바이스(16)는 단순한 중간 역할을 하는데, 즉, 후자는 마스터 디바이스(12)로부터, 슬레이브 디바이스(14)에 의해 대신에 플레이될 커맨드들의 배치만을 수신한다. 그것은 배치의 실행이 중단(abort)되어야 하는지의 여부를 결정하기 위해 수신된 응답 상태를 확인할 수 있다. 변형으로서, 그것은 단지 연속하여 송신하는 커맨드들에 대한 모든 응답들을 재송신할 수 있다.
커맨드들의 배치의 실행의 종료시, 제3자 디바이스(16)는 예를 들면, 송신된 커맨드들 수 및 전체 배치의 실행이 성공적으로 또는 성공적이지 못하게 수행되었는지의 여부를 나타내기 위해, 일반 상태 메시지를 마스터 디바이스(12)에게 송신할 수 있다. 변형으로서, 어떠한 일반 상태 메시지도 송신되지 않으며, 상태(성공 또는 실패)의 확인이 후속 커맨드에 대해 인보크(invoked)될 수 있다.
이들 SCP03의 실시예에서, STORE DATA 커맨드들이 보안되는데, 즉, 연쇄 MAC 코드가 제공된다. 저하된 변형에서, SCP03 프로토콜이 인증 프로세스(INITIALIZE UPDATE 및 EXTERNAL AUTHENTICATE 커맨드들)에 대해서만 이용되어, 단계(524)에서 생성된 STORE DATA 커맨드들이 암호화되지도, 또는 MAC 코드에 의해 보안되지도 않게 될 수 있다. 따라서, EXTERNAL AUTHENTICATE 커맨드만이 MAC에 의해 보안된다. 그것은 (글로벌플랫폼에 정의된) 파라미터 P1을 통해서, 후속 커맨드들이 보안되지 않음을 또한 나타낸다.
인증 프로세스가 없는 실시예들에서, INITIALIZE UPDATE 및 EXTERNAL AUTHENTICATE 커맨드들은 제공되지 않으며, 커맨드들의 배치는 STORE DATA 타입(SELECT APPLICATION 커맨드가, 보안 STORE DATA 커맨드들의 송신 이전에, 비관련된 방식으로 수행될 수 있기 때문에 선택사양적인 도 1a를 참조)의 보안 커맨드들로 직접 시작된다. 이것은 마스터 및 슬레이브 디바이스들이 어떠한 메시지도 교환하지 않으면서 동일한 세션 키들을 가질 수 있게 하는 동적 변수들의 예측 덕분에 가능해진다. 정보를 보안하는 커맨드가, 예를 들어, 수신되는 (이 커맨드에 대해 0과 동일한 "블록 번호" 파라미터에 의해 식별가능한) 제1 STORE DATA 커맨드의 파라미터 P1에 입력되며, 그것은 슬레이브 디바이스(14) 상에서 단계들(504-508)을 트리거링할 수 있게 한다. 이러한 목적으로 도 5b를 참조한다. 이러한 도면의 구성에서, 호스트 챌린지는 (의사 랜덤) 예측가능할 수 있어, 슬레이브 디바이스(14)가 내부 프로세스에 의해 그것을 획득할 수 있게 한다. 변형으로서, 그것은 마스터 디바이스(12)와의 이전의 동작(도시되지 않음)에서 획득될 수 있다.
글로벌플랫폼에서 또한 정의되는 SCP02 프로토콜은, 시퀀스 카운터가 INITIALIZE UPDATE 커맨드의 수신시에 증분되지 않지만, EXTERNAL AUTHENTICATE 커맨드의 수신시에 증분된다는 점에서, 도 5의 SCP03 프로토콜과는 구별된다.
본 발명은 보안 채널 프로토콜, 예를 들어, SCP02 또는 SCP03 프로토콜의 예측 모드의 프레임워크 내에 속한다. 알려진 기술에서, 미리 생성된 커맨드들의 배치는 주로 마스터 디바이스(12)에서 단 한번만 플레이될 수 있고, 수많은 간접 비용(cost overheads)을 초래한다.
이 커맨드들의 배치를 리플레이하는 것을 가능하게 하기 위해, 본 발명은 리플레이 또는 테스트 카운터의 이용에 대하여 제공한다. 리플레이들의 수는 바람직하게, 특히 임의의 악의가 있는 사람이 커맨드들의 시퀀스(배치)를 무한히 테스팅하는 것을 예방하는 데 합리적이다. 이 경우에서, 이 수는 이하에 나타내어지는 바와 같이 "리플레이 한계" 또는 임계 값에 의해 제한된다.
테스트 카운터는 시퀀스 카운터의 물리적인 증가를 지연시키는 것, 즉, 비휘발성 메모리에 효과적인 업데이트를 가능하게 한다. 따라서, 테스트 카운터의 이용 동안, 보안 채널의 수립을 위한 참조로서 이용되는 시퀀스 카운터의 현재 값은 비휘발성 메모리에서 변화되지 않게 유지되고, 그것은 이 보안 채널의 예측 세션 키들로 보안화되는 커맨드들의 동일한 배치를 리플레이하는 것을 가능하게 한다. 오직 비휘발성 메모리에서의 이 값이 업데이트되는(수정되는) 경우에만, 시퀀스 카운터의 새로운 현재 값을 기초로 예측되는 세선 키들에 대응하는 업데이트된 배치를 획득하기 위해 마스터 디바이스가 요청되도록 요구하여, 그 커맨드들의 배치가 쓸모없게 된다.
상기 정의된 바와 같이, 본 발명에 따른 슬레이브 디바이스(14)는, 보안 통신 채널의 수립을 지시하는 제1 커맨드(특히 SCP02 또는 SCP03에서의 INITIALIZE UPDATE 개시 커맨드)로 지칭되는 커맨드의 수신시 테스트 카운터를 증분시키고; 테스트 카운터가 임계 값에 도달할 때, 비휘발성 메모리에서의 동적 변수의 현재 값을 계산된 업데이트 값으로 겹쳐쓰는데, 즉, 테스트 카운터가 임계 값에 도달할 때 동적 변수(예를 들어, 통신 채널을 보안화하는 데 이용된 시퀀스 카운터)의 새로운 현재 값으로서 계산된 업데이트 값을 비휘발성 메모리에 저장한다.
비휘발성 메모리에서의 동적 변수의 새로운 현재 값으로서 업데이트 값의 유효화(커미트먼트)를 지연시키는 이 테스트 카운터의 이용으로 인해, 동일한 커맨드들(동적 변수의 현재 값에 의해 보안화됨)이 리플레이될 수 있다. 따라서, 슬레이브 디바이스가 비휘발성 메모리에서의 동적 변수의 현재 값을 업데이트하지 않았다면, 즉, 슬레이브 디바이스(14)로부터, 슬레이브 디바이스에 의해 동적 변수(시퀀스 카운터)의 현재 값의 업데이트를 표시하는 표시자를 수신하지 않았다면, 제3자 디바이스(16)는 커맨드들의 배치를 리플레이할 수 있다. 그것은, 이하에 설명될 바와 같이, 커맨드들의 배치의 리플레이가 적절하지 않기 때문에 슬레이브 디바이스가 물리적으로 시퀀스 카운터의 현재값을 업데이트하는 상황에 대응하는 특정 상태들을 검출하기 위해, 제3자 디바이스(16)가 슬레이브 디바이스(14)의 응답 상태들을 분석할 수 있다는 것을 알려주는 예이다.
도 6은, 도 3과 동일한 도식 상에서, 슬레이브 디바이스(14)에 의해 카운팅되는 시도들의 수에 대한 한계에 도달되지 않는다면(표시자가 제3자 디바이스(16)에 전달되는 경우) 또는 탈출 이벤트(커맨드들의 배치의 리플레이가 이용할 수 없다는 것을 표시함)가 발생한다면, 루프(강조된 화살표)에 의해 이 도면에서 제시되는, 제3자 디바이스(16)에 의한 커맨드들의 배치를 리플레이하는 가능성을 도시한다.
이 구성에서, 예측하지 못한 이벤트(타이머 아웃, 리셋, 통신 채널의 장애 등)의 발생은 커맨드들의 새로운 배치를 생성하는 데 호출되는 마스터 디바이스(12)에 직접적으로 이어지지 않는다. 여기서, 이른바 "탈출" 이벤트가 아니라면, 예측하지 못한 이벤트가 발생하는 커맨드들의 배치는 리플레이될 수 없다. 이 이벤트가 단 한번만 발생한다면, 커맨드들의 배치의 새로운 리플레이는 그의 전체에서 플레이되도록 이어져야 한다. 따라서, 비제어된 이벤트들이 발생하는 경우에 마스터 디바이스를 호출하는 것이 방지된다는 것을 볼 수 있을 것이다.
여기서 제안된 접근법에서는, 슬레이브 디바이스(14)로부터, 플레이되는 커맨드들에 대한 에러의 알림, 즉, 리플레이 루프 탈출 이벤트를 수신할 때, 제3자 디바이스(16)가 커맨드들의 배치를 특정 한계까지 리플레이하는 능력을 갖게 된다.
리플레이들의 수에 대한 상기 한계가 도달될 때, 슬레이브 디바이스(14)는 이것을 (명시적으로 또는 암시적으로) 표시하여, 제3자 디바이스(16)가 커맨드들의 현재 배치를 리플레이하지 않게 하지만, 커맨드들의 새로운 업데이트된 배치를 생성하기 위해 마스터 디바이스(12)를 호출한다(현재 배치가 정상적으로 실행될 수 없는 경우). 새로운 배치의 커맨드들은 현재 배치의 것들과 유사할 수 있고; 차이점은 보안 커맨드들에 대한 MAC 코드들의 계산 및 암호화가 이제 SCP02 또는 SCP03에서의 시퀀스 카운터의 새로운 값에 기초한다는 것이다.
분명하게, 커맨드들의 전체 배치의 실행이 성공적으로 동작되는 경우에, 악의가 있는 사람에 의한 어느 분석을 피하기 위하여, 리플레이가 가능하지 않게 하기 위한 대비가 이루어진다. 커맨드들의 배치의 성공적인 실행을 표시하는 상태는 그에 따라 리플레이 루프 탈출 이벤트가 된다. 이것이 무의미한 경우에, 리플레이를 피하기 위해 이하에 다른 탈출 이벤트들이 예상된다. 그러한 것은, 예를 들어, 보안, 통합 및 인증된 커맨드(즉 유효 MAC 코드를 가짐)가 실행 에러 또는 예외를 초래하는 경우이다.
이러한 경우들에서, 커맨드들의 현재 배치를 쓸모없도록 렌더링하기 위해, 슬레이브 디바이스(14)는 간단히 비휘발성 메모리에서의 시퀀스 카운터(동적 변수)를 업데이트해야 한다. 제3자 디바이스(16)는 슬레이브 디바이스(14)로부터 수신하는 응답 상태들에 의해 이 상황을 알게 된다.
도 7은, 흐름도 형태에서, 슬레이브 디바이스 측(14) 상에서의 본 발명의 실시예의 일반적인 단계들을 도시한다.
도의 방법은, 슬레이브 디바이스, 통상적으로, 칩 카드 또는 보안 엘리먼트를 주문생산할 때 발생할 수 있는 초가화 페이즈(단계 700 내지 704)로 시작한다. 이 페이즈 동안, 단계(700)에서 테스트 카운터는 비휘발성 메모리에 생성되고, 디폴트 값, 예를 들어, 10으로 초기화된다. 그 다음, 단계(702)에서, 테스트들 또는 시도들(및 그에 따른 리플레이들)의 수에 대한 한계 임계 값은, 예를 들어, 10으로 정의되고 비휘발성 메모리에 저장된다. 테스트 카운터가 허용된 시도들의 최대 수로 초가화되는 이 실시예에서, 이 테스트 카운터는 결국 0 값에 도달하는 것으로 감분될 것이고, 그 순간에, 0에서 -1로의 카운터의 전환은 모든 비트들이 수정되도록 요구하기 때문에(예를 들어, 32비트 카운터에 대하여: 4바이트인 경우 00000000 -> FFFFFFFF), 용이하게 검출될 수 있다. 분명하게, 다른 실시예들은 0에서 카운터를 초가화하고 그것을 10과 같은 한계 임계 값으로 증분시킬 수 있다.
단계(704)에서, 동적 변수 또는 변수들, 통상적으로 시퀀스 카운터가 초기화된다. 예를 들어, 시퀀스 카운터는 0에서 초기화된다.
이 단계(704) 동안, 동적 변수 및 어느 다른 파라미터들(예를 들어, 기밀)이 슬레이브 디바이스(14)와 마스터 디바이스(12) 간에 공유되어 보안 채널 프로토콜들의 예측 모드를 시행하는 것을 가능하게 한다.
그의 주문생산에 따라, 슬레이브 디바이스(14)는 새로운 보안 채널의 수립을 기다리는 서비스에 위치된다. 이것은, 예를 들어, 도 5a에 도시되는 SCP02 또는 SCP03의 경우에서의 INITIALIZE UPDATE 커맨드의 수신을 호출한다. 그것은 도 5b의 예에서 보안화되는 제1 커맨드(예를 들어, STORE DATA)의 수신을 호출한다. 이것은 단계(706)이다.
그러한 커맨드가 수신되는 경우에, 단계들(708 및 710)은 테스트 카운터 및 테스트들의 최대 수가 모두, 어떤 보안 채널도 수립될 수 없고(단계(712)) 방법이 종료되는 경우인, 0에 있지 않다는 것을 확인하는 것으로 구성된다.
일반적인 경우에서, 테스트들의 최대 수는 0이 아니다. 따라서, 테스트 카운터(감분 모드)가 0이 아니라면(테스트(708)로부터의 출력이 없음), 테스트 카운터는 단계(714)에서 감분되고, 보안 채널에 필요한 동적 변수들을 업데이트하는 것, 즉, 비휘발성 메모리에 저장되는 동적 변수 또는 변수들의 현재 값으로부터 동적 변수 또는 변수들(특히 시퀀스 카운터)의 업데이트 값을 계산하는 것으로 구성되는 단계(716)로 이어진다. 이러한 동적 변수들의 업데이트 값 또는 값들은, 그들의 현재 값들이 변화되지 않게 유지되는 것을 보장하기 위해 휘발성 메모리에 저장되고, 그에 따라 커맨드들의 동일한 배치의 리플레이에 적합하게 된다.
그 후, 슬레이브 디바이스(14)는 제3자 디바이스(16)로부터 수신된 후속의 보안 커맨드들과 종래 방식으로 수신된 커맨드를 프로세싱한다. 보안 채널에서의 이러한 오퍼레이션들은 단계(718)에 의해 개략적으로 제시되고, 도 5 내지 도 5b와 관련하여 전술되었다.
현재 배치의 보안 커맨드들의 실행은 두 개의 중요한 상황들로 이어지고, 하나의 상황이, 특히 여기서 다루어진다.
도면에서 제시된 것과 같이, 단계(720)에서, 보안 커맨드들의 배치의 실행이 잘 실행되었는지(테스트(720)으로부터의 "정상(normal)" 출력) 또는 예상하지 못한 이벤트가 발생되었는지(테스트(720)으로부터의 "예상하지 못한" 출력)와 관련하여 결정이 이루어진다.
그러한 이벤트는 배치의 보안 커맨드의 송신 에러(커맨드를 동반하는 MAC 코드를 통해 검출될 수 있는 에러)에 대응할 수 있다. 이 경우에, 보안 채널은 슬레이브 디바이스(14)가 새로운 보안 채널에 대한 새로운 커맨드를 기다리는 것을 재개하기 전에 제3자 디바이스(16)로 에러 메시지를 송신함(단계 722)으로써 폐쇄된다.
유효한 MAC 인증 코드들에 의해 슬레이브 디바이스(14)가 모든 보안 커맨드를 수신했을 때, 보안 커맨드의 배치의 "정상" 실행은 발생한다. 마지막 커맨드는, 특히 보안-커맨드의 종료 표시(end-of-secured commands indication)(이러한 목적을 위해 커맨드에서 바이너리 플래그(binary flag)가 제공될 수 있고 P1 필드는 후속 커맨드들이 더 이상 획득되지 않는다는 것을 나타낼 수 있음)를 포함할 수 있어, 슬레이브 디바이스(14)로 하여금 보안 커맨드들의 종료를 검출할 수 있도록 한다. 마지막 보안 커맨드를 식별하도록 하는 슬레이브 디바이스(14)를 위한 다른 임의의 수단들이 제공될 수 있다.
모든 암호 커맨드의 일반적인 실행은 리플레이 루프 탈출 이벤트를 구성하여, 암호 채널의 폐쇄로 이어진다. 이 경우, 슬레이브 디바이스(14)는 단계(716)으로 인해, 그 순간에는 휘발성 메모리에 있는 계산된 업데이트 값을 동적인 변수 - 일반적으로는 시퀀스 카운터 - 의 새로운 현재 값으로서 비휘발성 메모리에 저장한다. 그에 따라, 기존의 현재 값은 계산된 업데이트 값에 의해 겹쳐씌여진다. 이것이 단계(724)이다.
일반적으로, 배치의 모든 커맨드들은 (EXTERNAL AUTHENTICATE 후에) 획득된다. 따라서, 모든 보안 커맨드들의 성공적인 실행은 커맨드들의 배치의 성공적인 실행에 대응된다.
또 다른 예시는 EXTERNAL AUTHENTICATE 커맨드의 파라미터 P1에서 규정된 보안의 레벨이 "어떤 보안 메시지도 예상되지 않음" 즉, "0"의 값을 나타내는 경우(GlobalPlatform의 7.1.2 섹션 참조)에 대응된다. 이 경우, 오직 EXTERNAL AUTHENTICATE 커맨드가 획득된다(후속하는 커맨드는 그렇지 않음). 따라서, 본 발명은 이러한 EXTERNAL AUTHENTICATE 커맨드에 대해 예상하지 못한 이벤트가 발생시에만 커맨드들의 배치를 리플레이하는 것 - 실제로는 유일하게 보호된 커맨드, 즉 EXTERNAL AUTHENTICATE의 리플레이에만 제한됨 - 이 가능하도록 한다.
시퀀스 카운터(단계 724)의 새로운 현재 값의 커미트먼트에 후속하여, 단계(726)에서 테스트 카운터가 기본값, 이전의 예시에서는 "10" 으로 리셋된다.
그 후, 단계(722)에서, 슬레이브 디바이스(14)는, 제3자 디바이스로 그리고 배치의 보안 커맨드들 중 마지막 보안 커맨드에 대응하여, 배치의 모든 보안 커맨드들의 실행은 성공적으로 수행되었음에 대한 표시를 포함하는 메시지를 송신한다. 이것은, 예컨대, 현재 배치의 이러한 마지막 커맨드에 대응한 응답확인 메시지이다. 전술한 바와 같이, 마지막 보안 커맨드는 표시기를 이용하는 등에 의해 식별되거나, 보안 커맨드들의 정해진 수와 관련된 보안 커맨드의 발생으로부터 기인할 수 있다.
세 번째 상황은 메시지 인증 코드가 성공적으로 확인되는 (그에 따라, 보안 커맨드는 완전하고 정확함) 배치의 보안 커맨드에 대응되고, 이것은 실행 에러 또는 이러한 커맨드의 예외로 이어진다. 즉, 커맨드의 실행은, 일단 해독되면, 실패한다. 즉, 마스터 디바이스(12)에 의해 규정되고 암호화된 이러한 커맨드는 잘못되었고, 커맨드들의 현재 배치를 변질되게하고, 그에 따라 또한 잘못되게 한다. 그것은, 예컨대 커맨드가 슬레이브 디바이스에 존재하지 않는 기능을 가리키는 경우이다. 대안적으로, 부정확한 파라미터들을 갖는 기형적인 커맨드일 수 있다. 이 경우, 이러한 배치의 리플레이를 이용하여 진행하는 것은 바람직하지 않다. 이러한 리플레이를 회피하기 위해, 슬레이브 디바이스(14)는 비휘발성 메모리에서 현재 휘발성 메모리에 저장된 업데이트 값으로 시퀀스 카운터의 현재 값을 업데이트하고/하거나 제3자 디바이스(16)가 리플레이 루프 탈출 이벤트로서 해석할 수 있는 에러 상태를 반환함으로써 제3자 디바이스(16)가 다시 한번 마스터 디바이스(12)를 불러오도록 할 수 있다.
또한, 그러한 상황은 단계(720)에서 검출되어, 비휘발성 메모리에서 시퀀스 카운터를 효과적으로 업데이트하기 위한 단계(724)로 이어지고, 그 후 단계(726)에서의 테스트 카운터를 리셋하는 것 그리고 최종적으로는 메시지 - 메시지는 성공적으로 확인된 메시지 인증 코드에도 불구하고 실행 에러 또는 예외의 표시를 포함함 - 가 실행 에러 또는 예외로 이어지는 이러한 커맨드에 대응하여 제3자 디바이스로 송신되는 단계(722)로 이어질 수 있다.
테스트 카운터를 이용하여 시퀀스 카운터의 비동기화의 가능성을 회피하기 위해 (테스트 카운터는 비휘발성 메모리에서의 시퀀스 카운터가 증분될 경우 리셋됨), 비휘발성 메모리에서 현재 값을 겹쳐씌우는 단계 및 테스트 카운터가 원자적 단계, 즉 분리불가능한 단계에서 수행되도록 리셋하는 단계는 임의의 악의적인 사람이 그 순간에 본 방법을 변경하는 것을 방지하도록 하는 것이 바람직하다.
비휘발성 메모리에서 시퀀스 카운터의 효과적인 업데이트(커미트먼트)로 이어지는 다른 탈출 이벤트들이 예상될 수 있다.
탈출 이벤트의 또 다른 예시는 EXTERNAL AUTHENTICATE 커맨드의 MAC 코드의 경우로서, MAC 코드가 포함하는 호스트 암호가 잘못된 것으로 검출되어도 EXTERNAL AUTHENTICATE 커맨드의 MAC 코드는 유효한 것으로 검출되는 경우이다.
단계(708) 및 단계(710)으로 돌아가기 위해서는, 테스트 카운터가 "0" 값을 가르키는 경우, 즉 테스트 카운터가 임계값에 도달하고, 리플레이의 최대수에 도달하는 경우, 슬레이브 디바이스(14)는 비활성 메모리에 저장된 현재값으로부터 시퀀스 카운터의 업데이트 값을 계산하고, 그 후 이러한 계산된 업데이트 값을 시퀀스 카운터의 새로운 현재 값으로서 비휘발성 메모리에 저장(그에 따라 겹쳐씌여짐)한다. 이것이 단계(728)이다.
그 후, 본 방법은 테스트 카운터를 리셋하고, 그 후 단계(708)에서 테스트 카운터의 값을 다시 한번 테스트하기 위한, 단계(726)와 유사한 단계(730)으로 계속된다. 이러한 루프는 리플레이의 최대수에 도달했을 경우, 시퀀스 카운터의 새로운 현재 값의 커미트먼트를 보장한다.
테스트 카운터를 이용하여 시퀀스 카운터의 가능한 비동기화를 회피하기 위해, 비휘발성 메모리에서 현재 값을 겹쳐씌우는 단계 및 테스트 카운터를 리셋하는 단계는 계산된 업데이트 값으로부터 세션 키를 생성하는 단계 이전에 수행된다. 이러한 구성은 리플레이의 최대수에 도달했다는 사실이 보안 채널의 수립을 나타내는 새로운 제1 커맨드, 예컨대 INITIALIZE UPDATE 커맨드(테스트 708에서의 "예")에 의해 검출되는 경우에 적용된다. 일반적으로, 이러한 단계들은 임의의 악의적인 사람이 그 순간에 본 방법을 변경하는 것을 방지하기 위해서 원자적 단계, 즉 분리불가능한 단계에서 수행된다.
단계(708)에서 루핑(looping)하는 것은 새로운 현재 시퀀스 카운터에 의해 마지막 커맨드가 이미 온라인인 경우 현재 배치(배치의 모든 보안 커맨드들)를 프로세싱하는 것을 가능하게 한다. 이것은, 슬레이브 디바이스(14)가 제3자 디바이스(16)에 반환하는 정보의 레벨에 따라, 마지막 커맨드가 제한된 수의 시도로 도착을 예상하는 것을 가능하게 하여, 커맨드들의 업데이트된 배치의 획득이 예상될 수 있기 때문이다. 다음 단계(718) 동안에 제3자 디바이스(16)가 메시지(510)를 수신한 경우에 새로운 현재 시퀀스 카운터 값을 알게 될 것이기 때문에(도 5a 참조) 어떤 경우에도, 현재 배치가 아직 업데이트되지 않은 경우(따라서 쓸모가 없는 경우)에는, 다음 반복에 존재할 것이다.
도 5b의 구현예에서, 이러한 교환(510)이 일어나지 않는다는 점을 유의해야 한다. 시퀀스 카운터가 공개되므로, 동기화 메커니즘은 제3자 디바이스 또는 슬레이브 디바이스가 초가화될 때 제3자 디바이스에게 전달될 시퀀스 카운터의 현재 값을 제공할 수 있다. 예를 들면, 현재 값은 각 제1 커맨드의 배치에 응답하여 자동으로 반환되거나 제3자 디바이스로부터의 GET DATA 커맨드에 의해 호출될 수 있다.
도 7의 예에서, 테스트 카운터의 값은 상기 테스트 카운터의 감분 (또는 증분) 이전에 가능한 리플레이들의 최대 횟수와 비교된다. 이러한 두 단계들의 순서를 뒤바꾸어 변형예가 존재할 수 있다.
도 8은, 제3자 디바이스 측(16)에서의 본 발명의 실시예의 일반적인 단계들을 흐름도 형태로 도시한다.
초기화 이후에, 제3자 디바이스(16)는 마스터 디바이스(12)로부터 하나 이상의 커맨드를 수신하기를 기다린다. 이는 단계 800이다.
수신 시에, 단계 802에서, 그것이 예측 모드에서 미리 생성된 커맨드들의 배치(스크립트 또는 배치)인지 여부에 대한 판정이 행해진다. 만약 아니라면, 새로운 커맨드를 기다리기 위해 반환하기 전에, 커맨드들은 통상적으로 단계 804에서 처리된다(단계 800).
그렇지 않으면, 단계 806에서 인덱스 "i"가 0으로 초기화되는데, 상기 인덱스는 수신된 배치의 커맨드들 각각을 선택하고 순차적으로 처리하는 것을 가능케 한다.
단계 808에서, 제3자 디바이스(16)는 커맨드 "i"를 슬레이브 디바이스(14)에게 보낸다.
응답이 수신되지 않으면(테스트 810), 제3자 디바이스(16)는 예측하지 못한 이벤트가 발생한 것으로 간주하고, 단계 806으로 반환함으로써 커맨드들의 현재 배치를 리플레이한다(화살표 811).
응답이 수신되면, 제3자 디바이스(16)는, 단계 812에서, 예를 들면 응답이 커맨드의 MAC 코드가 잘못된 것(송신 에러가 발송한 것)이라고 나타내기 때문에, 예측하지 못한 이벤트가 발생했는지 판정한다. 만약 그러한 경우라면, 제3자 디바이스(16)는 단계(806)으로 반환함으로써 커맨드들의 현재 배치를 리플레이(811)한다.
커맨드가 슬레이브 디바이스(14)에 의해 올바르게 수신되었다면, 제3자 디바이스(16)는, 단계 814에서, 응답이 슬레이브 디바이스(14)의 시퀀스 카운터의 값을 포함하는지를 결정한다. 그러한 정보는, 도 5와 관련하여 전술한 바와 같이 제1 INITIALIZE UPDATE 커맨드에 대한 응답 내에 존재한다.
슬레이브 디바이스(14)의 시퀀스 카운터의 값이 응답 내에 표시된 경우, 그 값은, 단계 816에서, 제3자 디바이스(16)에 의해 저장된 로컬 값과 비교된다.
두 값이 매치되는 경우, 이는 슬레이브 디바이스(14)가 (비휘발성 메모리에서) 마지막 반복 이후에 자신의 시퀀스 카운터를 업데이트하지 않았다는 것, 즉, 본 방법이 동일한 커맨드들의 배치를 리플레이하는 중이라는 것을 의미한다. 이 경우에, 필요한 경우 커맨드가 실행되고(단계 817) 그 후 단계 818에서 인덱스 "i"를 증분함으로써 세트의 다음 커맨드가 선택되며, 단계 808로 루프 백한다.
반면에, 두 개의 값이 상이한 경우, 이는 슬레이브 디바이스(14)가 (비휘발성 메모리에서) 마지막 반복 이후에 (최대 횟수의 리플레이에 도달함으로써, 또는 마지막 커맨드들의 배치가 전부 처리되었기 때문에, 또는 마지막으로 마지막 커맨드들의 배치가 본질적으로 잘못되었기 때문에) 자신의 시퀀스 카운터를 업데이트 했다는 것을 의미한다. 이 경우에, 단계 820에서, 수신된 시퀀스 카운터 값을 취하도록 상기 로컬 값이 없데이트된다. 또한, 단계 820에서, 제3자 디바이스(16)는 시퀀스 카운터의 새로운 현재 값으로 업데이트된 커맨드들의 배치를 마스터 디바이스(12)로부터 요청하도록 마스터 디바이스에 컨택한다.
테스트 814로 되돌아가서, 수신된 응답이 시퀀스 카운터 값을 포함하지 않는 경우(예를 들면, 도 5a의 경우에서 제1 INITIALIZE UPDATE 커맨드에 대한 응답이 아닌 경우), 제3자 디바이스(16)는, 단계 821에서, 수신된 응답이 리플레이 루프 탈출 이벤트를 나타내는지 판정한다.
도면의 예에서, 두 개의 테스트들이 제안된다. 명백히, 다른 탈출 이벤트들을 검출하기 위한 추가 테스트들이 구현될 수 있다.
단계 822에서, 제3자 디바이스(16)는 수신된 응답이 본질적인 커맨드 에러인지(응답 상태가 미리 정해진 코드를 취하는지)를 판정하며, 이 경우에 로컬 시퀀스 카운터 값이, 단계 820에서, 슬레이브 디바이스(14)에 의한 업데이트와 유사한 방식으로(일반적으로 간단한 증분에 의해) 업데이트된다. 이는 이러한 동작이 슬레이브 디바이스(14)에 의해 동작되는 시퀀스 카운터의 효과적인 업데이팅(724)을 반영하는 것을 가능케 해 주기 때문이다. 따라서, 제3자 디바이스(16) 및 슬레이브 디바이스(14) 사이의 시퀀스 카운터의 동기화가 보장된다.
유사하게, 수신된 응답이 보안 커맨드들 모두가 완전히 성공적으로 처리되었다는 것을 나타내는 경우(테스트 824 - 예컨대, 마지막 보안 커맨드에 응답하여 상태 OK), 슬레이브 디바이스(14)에 의한 업데이트와 유사한 방식으로 단계 820에서, 나중 디바이스에서의 변화를 반영하도록 로컬 시퀀스 카운터 값이 또한 업데이트된다.
그렇지 않으면, 예측하지 못한 또는 탈출 이벤트가 발생하지 않았으며, 단계 818을 통해 다른 단계들의 처리가 계속된다.
도 9는, 도 5a의 스킴을 이용하여, SCP03 프로토콜에 따른 본 발명의 실시예의 교환들을 도시한다. 단계들 5xx는 도 5a와 비교하여 변경되지 않은 상태이며, 본 발명이 기존의 보안 채널 프로토콜들과 호환 가능한 것을 보여준다.
아래의 설명들은 또한 도 5의 시퀀스를 갖는 예측 모드 또는 도 5b의 인증이 없는 예측 모드에 적용된다는 것을 유의해야 한다. 또한, 그것들은 하나 이상의 보안 커맨드들이 보안 채널에서 송신되는 다른 프로토콜들에 적용된다.
슬레이브 디바이스(14)와 올바르게 동기화되도록, 마스터 디바이스(12)는 제3자 디바이스(16)를 통해 슬레이브 디바이스(14)로부터 현재 시퀀스 카운터 값을 복구할 수 있다(단계 499). 예를 들면, 도면에서 교환들(900)에 의해 도시된 바와 같이, 현재 값은 (플래그 9F70과 함께) GET DATA 커맨드를 이용하여 요청될 수 있다.
테스트 카운터는 보안 채널의 수립을 나타내는 제1 커맨드(여기서는 단계 902에 의해 도시된 바와 같이 INITIALIZE UPDATE 커맨드)의 수신 이후에 즉시 감분된다(단계 714).
이 테스트 카운터가 최대 회수의 가능한 리플레이들에 도달하는 경우, 시퀀스 카운터는 비휘발성 메모리에서 업데이트되고(단계 728), 테스트 카운터는 리셋된다(단계 730). 단계 903에 대응하여, 이 두 개의 단계들은 도면에서 문자 "MAJ"에 의해 도시된다.
단계 904는, 커맨드들의 현재 배치의 가능한 리플레이가 허용되도록, 시퀀스 카운터의 업데이트 값이 휘발성 메모리에 저장된다는 점에서 (그리고 단계 504에서와 같이 비휘발성 메모리에는 저장되지 않는다는 점에서) 단계 504와는 구별된다.
이후 단계들 506-511, 518, 520은 도 5a의 것들과 동일하며, 슬레이브 디바이스(14)는 EXTERNAL AUTHENTICATE 커맨드(즉, MAC 코드에 의해 보안화되는 제1 커맨드)에 포함된 암호 및 MAC를 확인한다.
단계 906에서, EXTERNAL AUTHENTICATE 커맨드의 처리가 종료되고, 슬레이브 디바이스(14)는 리플레이 루프 탈출 이벤트가 발생했는지를 판정한다. 특히, 이러한 이벤트들은 미리 정해진다.
리플레이 루프 탈출 이벤트의 경우에, 슬레이브 디바이스(14)는 비휘발성 메모리에서 시퀀스 카운터를 업데이트하고(단계 724), 테스트 카운터를 리셋한다(단계 730) [단계 906에서 "MAJ"].
리플레이 루프 탈출 이벤트는, 예를 들면, EXTERNAL AUTHENTICATE 커맨드의 호스트 암호의 네거티브 확인이다.
선택적으로(특히, EXTERNAL AUTHENTICATE 커맨드가 후속하는 커맨드들이 보안화되어 있다는 것을 표시하는 경우), 리플레이 루프 탈출 이벤트는 EXTERNAL AUTHENTICATE 커맨드의 잘못된 MAC의 검출일 수 있다. 그러나, 일반적으로, (보안 채널의 폐쇄를 유도하는) 잘못된 MAC와, 따라서 EXTERNAL AUTHENTICATE 명령의 잘못된 MAC를 포함하는 것은 커맨드들의 배치의 리플레이를 허용하는 예상치 못한 이벤트의 표현으로 간주될 것이다.
이 후, 부정적 응답(NOK)(522)은, 시퀀스 카운터의 현재 값의 업데이트를 유도하는 탈출 이벤트이거나 리플레이를 허용하는 예상치 못한 이벤트일 경우 상이한, 에러 코드를 (선택적 파라미터 SW 내에서) 포함한다. 이들 에러 코드들은 제3자 디바이스(16)에 공지되어 있다.
이 후, 커맨드들의 배치의 각각의 후속하는 보안 커맨드들이 프로세싱되고(526), 슬레이브 디바이스(14)에 대하여, MAC 코드를 확인하는 것(528), 커맨드를 해독하여 실행하는 것(530) 및 비-휘발성 메모리 내의 시퀀스 카운터의 현재 값의 업데이트의 경우에 리플레이 루프 탈출 이벤트가 발생하는 지를 판정하는 것과 연관된 프로세싱, 및 테스트 카운터의 재설정이 실행된다[스텝 908의 "MAJ"].
잘못된 MAC 코드는 통신 채널의 폐쇄를 유도한다. 그것은, 이 MAC 코드 에러가 송신되어야 할 커맨드들의 배치 내의 에러로 부터가 아니라 단순히 송신 에러로부터 기인한 것일 수 있기 때문에, 리플레이를 허용하는 예상치 못한 이벤트로서 간주될 것이다.
예를 들어, 리플레이 루프 탈출 이벤트는 유효한 MAC 코드를 갖는 보안 커맨드의 실행의 에러이다. 사실, 이 경우에서는, 보안 커맨드는, 에러의 소스(예를 들어, 커맨드 내의 잘못된 또는 누락된 파라미터)를 해결하는 것을 가능하게 하지 못하는, 본질적으로 잘못된 리플레이이다. 이 후, 반환된 부정적 응답(NOK)은, 그것이 시퀀스 카운터의 현재값의 업데이트를 유도하는 탈출 이벤트 또는 리플레이를 허용하는 예상치 못한 이벤트인 경우 상이한, 에러 코드를 포함할 수 있다. 이들 에러 코드들은 제3자 디바이스(16)에 공지되어 있다.
다른 리플레이 루프 탈출 이벤트는 단순히 현재 배치의 마지막 보안 커맨드들의 올바른 실행이다. 그러한 "마지막 커맨드"들은, 예를 들어, 초기 커맨드가 다가올 보안 커맨드들의 수를 표시하는 경우, 적절한 플래그를 이용하여 직접 표시될 수도 있고, 또한 암시적일 수 있다. 따라서, 제3자 디바이스(16)는 슬레이브 디바이스(14)의 응답 상태들을 수신하여 예상치 못한 이벤트 또는 리플레이 루프 탈출 이벤트가 슬레이브 디바이스(14)에서 발생했는지 여부를 판정하는 것을 가능하게 한다.
탈출 이벤트의 검출은 제3자 디바이스(16)에 의해 그것의 로컬 시퀀스 카운터의 업데이트를 유도한다(도면의 "MAJloc").
특히, 슬레이브 디바이스(14)에 의해 반환된 응답들 때문에, 제3자 디바이스(16)는 국부적으로 저장된 값과 상이한 시퀀스 카운터 값을 수신했을 때(912 참조) 호스트 암호 에러 코드(914 참조), 유효한 MAC 코드를 갖는 커맨드의 실행의 에러를 표시하는 메시지(916 참조) 또는 배치의 마지막 보안 커맨드에 대한 성공 메시지(또한 916 참조)를 검출한다.
도 9a는, 즉, 보안 채널의 수립을 표시하는 제1 커맨드가 보안 커맨드 그 자체인 경우, 인증 절차의 부재(도 5b)에서의 동일한 설명들을 도시한다.
도 10은 시퀀스 카운터의 비휘발성 메모리에서의 효과적인 업데이트를 지연하는 것의 영향을 도시한다. 상기 도면의 예시는 4와 동일한 리플레이들의 최대 수에 기초하고 있고, 보안 커맨드들의 5개의 배치들의 실행을 도시한다.
4에서 시작하는 테스트 카운터는 시퀀스 카운터의 업데이트 값이 휘발성 메모리에 저장되는 동안, 커맨드들의 제1 배치에 대한 제1 플레이 시에 3까지 감분된다. 이 제1 플레이(#1)는 (어떤 이유든지 간에) 실패이고, 현재 배치의 리플레이를 유도한다.
이 후, 테스트 카운터는 2까지 감분되지만, 배치의 이 제2 플레이(#2)는 역시 실패이다(시퀀스 카운터의 동일한 업데이트 값은 휘발성 메모리에 저장된다). 이 후, 테스트 카운터는 1까지 감분되지만, 배치의 이 제3 플레이(#3)는 또다시 실패이다. 이 후, 테스트 카운터는 0까지 감분되지만, 배치의 이 제4 플레이(#4)는 역시 실패이다.
0에서 테스트 카운터를 검출할 때, 시퀀스 카운터는 커맨드들의 현재 배치를 쓸모없게 만들면서 비-휘발성 메모리 내에 저장된다. 제3자 디바이스(16)는 새로운 커맨드들(가능한 동일한 커맨드들, 상이하게 암호화됨)의 배치를 획득한다. 또한, 테스트 카운터는 4로 리셋된다.
이 후, 테스트 카운터는 3으로 감분되지만, 새로운 배치의 제1 플레이(#5)는 실패이다(시퀀스 카운터의 새로운 업데이트 값은 휘발성 메모리에 저장된다). 이 후, 테스트 카운터는 2로 감분된다. 여기서, 새로운 배치의 제2 플레이(#6)는 성공이며, 비휘발성 메모리의 시퀀스 카운터의 업데이트를 유도한다. 제3자 디바이스(16)는 커맨드들의 제3의 새로운 배치를 획득한다. 테스트 카운터는 4로 재설정된다.
이 후, 테스트 카운터는 3으로 감분된다. 여기서, 새로운 배치의 제1 플레이(#7)는 성공이며 비-휘발성 메모리의 시퀀스 카운터의 업데이트를 유도한다. 제3자 디바이스(16)는 커맨드들의 제4의 새로운 배치를 획득한다. 테스트 카운터는 4로 재설정된다.
이 후, 테스트 카운터는 3으로 감분되지만, 새로운 배치의 제1 플레이(#8)는 실패이다. 이 후, 테스트 카운터는 2로 감분되지만, 새로운 배치의 제2 플레이(#9)는 실패이다. 이 후, 테스트 카운터는 1로 감분되지만, 새로운 배치의 제3 플레이(#10)는 실패이다. 이 후, 테스트 카운터는 0으로 감분되지만, 새로운 배치의 제4의 마지막 플레이(#11)는 역시 실패이다.
0에서 테스트 카운터를 검출할 때, 시퀀스 카운터는 비휘발성 메모리에서 업데이터되며, 커맨드들의 새로운 현재의 배치는 쓸모없게 만든다. 제3자 디바이스(16)는 커맨드들(가능한 동일한 커맨드들, 상이하게 암호화됨)의 새로운 배치를 획득한다. 테스트 카운터는 4로 리셋된다.
방법은 테스트 카운터가 3까지 감분되고, 새로운 배치의 제1 플레이(#12)를 갖도록 동일한 방식으로 계속된다.
상기의 예시들은 단지 본 발명의 실시예들일 뿐이며, 그것들에 한정되지 않는다.
특히, 상기 예시들은 커맨드들의 배치의 완전한 리플레이를 보여주는데, 다시 말하면, 리플레이의 제1 커맨드는 보안 채널, 즉, 특정 SCP02 또는 SCP03 모드에서의 INITIALIZE UPDATE의 수립을 표시하는 제1 커맨드이다. 이제, 또한 본 발명은 제1 명령이 보안 채널의 수립을 표시하는 보안 커맨드인 경우에도 적용된다(도 9a 참조). 따라서, 변형물로서, 본 발명은 커맨드 스크립트에 제공된 리스토어 포인트로부터, 즉, 미리 정의된 보안 커맨드(리스토어 포인트들을 형성하는 다수의 보안 커맨드들이 배치에 제공될 수 있다)로부터 리플레이를 수행하기 위해 행해질 수 있다.
예를 들어, 특정 소스 커맨드들은 마스터 디바이스에 의해, 예를 들어 10개의 커맨드들마다 "리스토어 포인트"로서 표시될 수 있다. 이 표시는 제3자 디바이스(16)가 그것을 해석할 수 있도록 하기 위해 커맨드들의 비암호화된 헤더에 이진 플래그 형태로 제공될 수 있다.
이 "마킹된" 커맨드가 실행될 때, 이 표시는 제3자 디바이스(16) 및 슬레이브 디바이스(14)에 의해, 즉, 현재의 컨텍스트의 저장에 의해 유사항 방식으로 프로세싱된다. 특히, 현재의 컨텍스트는 후속하는 커맨드들/응답들의 복호/암호를 허용하기 위해 (그들의 MAC 코드들 및 하나 이상의 CBC 카운터들을 포함하는) "리스토어 포인트" 커맨드의 숫자 "i", 세션 키들, 마지막 커맨드의 복사본 및 마지막 응답을 포함한다.
따라서, 예상치 못한 이벤트가 발생할 때(전원 차단, 잘못된 MAC 코드), 디바이스들은 백업된 컨텍스트에 저장된 마지막 "리스토어 포인트" 커맨드로부터 커맨드들의 배치를 다시 플레이한다.
슬레이브 디바이스가 이 예상치 못한 이벤트(예를 들어, 커맨드의 미수신)를 알지 못하는 경우, 그것이 제3자 디바이스로부터 수신한 다음 커맨드는 "리스토어 포인트" 커맨드이고, 따라서, 이 커맨드의 MAC 코드의 잘못된 확인을 유도한다는 것을 알아야 한다. 이 후, 두 개의 디바이스들은 이 "리스토어 포인트" 커맨드로부터의 배치의 새로운 리플레이 상에서 다시 시작하며, 효과적인 재동기화를 보장한다.

Claims (21)

  1. 슬레이브 디바이스(14) 상에서의 통신 방법으로서,
    제3자 디바이스(16)로부터, 적어도 하나의 세션 키에 의해 보안화되는 통신 채널의 수립을 표시하는, 제1 커맨드로 지칭되는 커맨드를 수신하는 단계(502);
    비휘발성 메모리에 저장된 동적 변수의 현재 값으로부터 동적 변수의 업데이트 값을 계산하는 단계(904);
    상기 계산된 업데이트 값으로부터 상기 세션 키를 생성하는 단계(506);
    상기 제3자 디바이스로부터, 메시지 인증 코드에 의해 보안화되는, 제2 커맨드로 지칭되는 적어도 하나의 커맨드를 수신하는 단계(518, 526); 및
    상기 제2 커맨드를 실행하기 전에 상기 세션 키를 이용하여 상기 메시지 인증 코드를 확인하는 단계
    를 포함하며,
    상기 방법은, 상기 슬레이브 디바이스(14) 상에서,
    보안 통신 채널의 수립을 표시하는 상기 제1 커맨드의 수신시에 테스트 카운터를 증분시키는 단계(902); 및
    상기 테스트 카운터가 임계 값에 도달할 때 상기 계산된 업데이트 값으로 비휘발성 메모리의 상기 동적 변수의 현재 값을 겹쳐쓰기하는(overwriting) 단계(724, 728, 903, 906, 908)를 더 포함하는 통신 방법.
  2. 제1항에 있어서,
    상기 업데이트 값을 계산하는 단계(904)는 상기 슬레이브 디바이스의 휘발성 메모리에 상기 계산된 업데이트 값을 저장하는 단계를 포함하는, 통신 방법.
  3. 제1항 또는 제2항에 있어서,
    비휘발성 메모리의 상기 동적 변수의 현재 값은, 모든 상기 제2 보안 커맨드들 중 마지막 보안 커맨드가 유효 확인된 메시지 인증 코드를 포함하고 성공적으로 실행될 때, 상기 계산된 업데이트 값으로 비휘발성 메모리에 겹쳐쓰기되는(908), 통신 방법.
  4. 제3항에 있어서,
    상기 마지막 보안 커맨드에 응답하여, 상기 제3자 디바이스에게 배치(batch)의 상기 제2 커맨드 또는 커맨드들의 실행이 성공적으로 수행되었다는 표시를 포함하는 메시지를 송신하는 단계를 더 포함하는 통신 방법.
  5. 제1항 또는 제2항에 있어서,
    비휘발성 메모리의 상기 동적 변수의 현재 값은, 메시지 인증 코드가 성공적으로 확인된 하나의 상기 제2 커맨드가 상기 제2 커맨드의 실행시 에러 또는 예외를 야기할 때, 상기 계산된 업데이트 값으로 비휘발성 메모리에 겹쳐쓰기되는(908), 통신 방법.
  6. 제5항에 있어서,
    상기 제2 커맨드가 실행 에러 또는 예외를 야기하는 것에 응답하여, 상기 제3자 디바이스에게 성공적으로 확인된 메시지 인증 코드에도 불구하고, 실행 에러 또는 예외의 표시를 포함하는 메시지를 송신하는 단계를 더 포함하는 통신 방법.
  7. 제1항 또는 제2항에 있어서,
    상기 테스트 카운터는, 비휘발성 메모리의 상기 동적 변수의 현재 값이 상기 계산된 업데이트 값으로 겹쳐쓰기될 때, 디폴트 값으로 리셋되는(726, 730, 903, 906, 908), 통신 방법.
  8. 제7항에 있어서,
    상기 계산된 업데이트 값으로 비휘발성 메모리의 상기 현재 값을 겹쳐쓰기하는 것을 포함하는 단계(726, 903), 및 상기 테스트 카운터를 리셋하는 것을 포함하는 단계(730, 903)는, 상기 계산된 업데이트 값으로부터 상기 세션 키를 생성하는 단계(506) 전에 수행되는, 통신 방법.
  9. 제7항에 있어서,
    상기 계산된 업데이트 값으로 비휘발성 메모리의 상기 현재 값을 겹쳐쓰기하는 것을 포함하는 단계(724, 728, 903, 906, 908), 및 상기 테스트 카운터를 리셋하는 것을 포함하는 단계(726, 730, 903, 906, 908)는 원자성 단계(atomic step)에서 수행되는, 통신 방법.
  10. 제1항 또는 제2항에 있어서, 상기 제1 커맨드는 메시지 인증 코드에 의해 보안화되는 하나의 상기 제2 커맨드인, 통신 방법.
  11. 제3자 디바이스(16)상에서의 통신 방법으로서,
    슬레이브 디바이스(14)로 송신되는 커맨드들의 배치를 마스터 디바이스(12)로부터 수신하는 단계(800) - 상기 커맨드들의 배치는, 상기 마스터 디바이스와 상기 슬레이브 디바이스간에 공유되는 동적 변수의 현재 값에 따른 적어도 하나의 세션 키에 의해 보안화되는 통신 채널의 상기 슬레이브 디바이스와의 수립을 나타내는, 제1 커맨드(502)로 지칭되는 커맨드, 및 상기 세션 키를 이용하여 계산되는 메시지 인증 코드에 의해 보안화되는, 제2 커맨드로 지칭되는 적어도 하나의 커맨드(516, 526)를 포함함 -;
    에러가 검출되지 않는 동안, 커맨드 단위로, 순차적으로 상기 배치의 커맨드들을 상기 슬레이브 디바이스로 송신하도록 상기 커맨드들의 배치를 플레이하는(playing) 단계(808)를 포함하고,
    상기 제3자 디바이스(16)상에서, 상기 제3자 디바이스가 상기 슬레이브 디바이스에 의한 상기 동적 변수의 현재 값의 업데이트의 표시를 상기 슬레이브 디바이스(14)로부터 수신하지 않는 동안, 상기 커맨드들의 배치를 리플레이하는(replay) 단계(811)를 더 포함하는 통신 방법.
  12. 제11항에 있어서,
    상기 슬레이브 디바이스에 의한 상기 동적 변수의 업데이트의 표시를 수신하는 단계는 상기 동적 변수의 현재 값을 상기 슬레이브 디바이스(14)로부터 수신하는 것(510, 814) 및 상기 수신된 현재 값을 상기 동적 변수의 로컬 값과 비교하는 것(816)을 포함하는, 통신 방법.
  13. 제12항에 있어서,
    상기 동적 변수의 현재 값은 상기 제1 커맨드(502)에 대한 상기 슬레이브 디바이스(14)로부터의 응답(510)에서, 상기 제3자 디바이스(16)에 의해 수신되는, 통신 방법.
  14. 제11항에 있어서,
    상기 슬레이브 디바이스에 의한 상기 동적 변수의 업데이트의 표시를 수신하는 단계는 상기 제1 커맨드(502) 바로 다음의 하나의 상기 제2 커맨드(518)에 응답하여 에러 메시지를 상기 슬레이브 디바이스(14)로부터 수신하는 것(522) - 상기 에러 메시지는 상기 제1 커맨드 바로 다음의 상기 제2 커맨드에 대한 잘못된 메시지 인증 코드를 표시함 - 을 포함하는, 통신 방법.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 현재 값의 업데이트의 표시는 상기 슬레이브 디바이스에 의한 상기 배치의 상기 제2 커맨드 또는 상기 커맨드들의 실행이 성공적으로 수행되었다는 표시를 포함하는, 통신 방법.
  16. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 현재 값의 업데이트의 표시는 메시지 인증 코드가 성공적으로 확인된 상기 배치의 제2 커맨드의, 상기 슬레이브 디바이스에 의한 실행이 상기 제2 커맨드의 에러를 야기하였다는 표시를 포함하는, 통신 방법.
  17. 제1항, 제2항, 제11항 내지 제14항 중 어느 한 항에 있어서,
    복수의 제2 커맨드들의 메시지 인증 코드들이 연쇄되는(chained), 통신 방법.
  18. 동적 변수의 현재 값을 저장하는 비휘발성 메모리 및 프로세서를 포함하는 프로세싱 디바이스(14)로서,
    상기 프로세서는,
    적어도 하나의 세션 키에 의해 보안화되는 통신 채널의 수립을 표시하는, 제1 커맨드로 지칭되는 적어도 하나의 커맨드를 제3자 디바이스(16)로부터 수신하고,
    비휘발성 메모리에 저장된 상기 현재 값으로부터 상기 동적 변수의 업데이트 값을 계산하고,
    상기 계산된 업데이트 값으로부터 상기 세션 키를 생성하고,
    메시지 인증 코드에 의해 보안화되는, 제2 커맨드로 지칭되는 적어도 하나의 커맨드를 상기 제3자 디바이스로부터 수신하고,
    상기 제2 커맨드를 실행하기 전에 상기 세션 키를 이용하여 상기 메시지 인증 코드를 확인하도록 구성되고,
    상기 프로세싱 디바이스는 테스트 카운터를 더 포함하고, 상기 프로세서는 또한,
    보안 통신 채널의 수립을 표시하는 상기 제1 커맨드의 수신시에 상기 테스트 카운터를 증분시키고,
    상기 테스트 카운터가 임계값에 도달할 때 상기 계산된 업데이트 값으로 비휘발성 메모리의 상기 동적 변수의 현재 값을 겹쳐쓰기하도록 구성되는 프로세싱 디바이스.
  19. 프로세싱 디바이스로서,
    슬레이브 디바이스(14)로 송신되는 커맨드들의 배치를 마스터 디바이스(12)로부터 수신하고 - 상기 커맨드들의 배치는, 상기 마스터 디바이스와 상기 슬레이브 디바이스간에 공유되는 동적 변수의 현재 값에 따른 적어도 하나의 세션 키에 의해 보안화되는 통신 채널의 상기 슬레이브 디바이스와의 수립을 표시하는, 제1 커맨드로 지칭되는 커맨드, 및 상기 세션 키를 이용하여 계산되는 메시지 인증 코드에 의해 보안화되는, 제2 커맨드로 지칭되는 적어도 하나의 커맨드를 포함함 -;
    에러가 검출되지 않는 동안, 커맨드 단위로, 순차적으로 상기 배치의 커맨드들을 상기 슬레이브 디바이스로 송신하도록 상기 커맨드들의 배치를 플레이하도록 구성되는 프로세서를 포함하고,
    상기 프로세서는 또한,
    상기 프로세싱 디바이스가 상기 슬레이브 디바이스에 의한 상기 동적 변수의 현재 값의 업데이트의 표시를 상기 슬레이브 디바이스로부터 수신하지 않는 동안, 상기 커맨드들의 배치를 리플레이하도록 구성되는 프로세싱 디바이스.
  20. 제18항에 따른 슬레이브 디바이스(14), 제19항에 따른 제3자 디바이스(16), 및 커맨드들의 배치를 생성하여 상기 제3자 디바이스(16)로 송신하도록 구성된 마스터 디바이스(12)를 포함하는 시스템(10).
  21. 컴퓨터 프로그램이 컴퓨터 상에서 실행될 때, 제1항, 제2항, 제11항 내지 제14항 중 어느 한 항에 따른 방법의 각 단계들을 구현하도록 구성된 명령어들을 포함하는 컴퓨터 프로그램을 갖는 컴퓨터 판독가능 기록 매체.
KR1020150143126A 2014-10-13 2015-10-13 보안 채널에서 보안 커맨드들의 배치의 리플레이 KR101838191B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1459800A FR3027176B1 (fr) 2014-10-13 2014-10-13 Rejeu d'un batch de commandes securisees dans un canal securise
FR1459800 2014-10-13

Publications (2)

Publication Number Publication Date
KR20160043520A KR20160043520A (ko) 2016-04-21
KR101838191B1 true KR101838191B1 (ko) 2018-03-14

Family

ID=52465495

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150143126A KR101838191B1 (ko) 2014-10-13 2015-10-13 보안 채널에서 보안 커맨드들의 배치의 리플레이

Country Status (5)

Country Link
US (1) US9787663B2 (ko)
EP (1) EP3010175B1 (ko)
KR (1) KR101838191B1 (ko)
ES (1) ES2737703T3 (ko)
FR (1) FR3027176B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015012941B3 (de) * 2015-10-07 2017-04-06 Giesecke & Devrient Gmbh Verfahren zum Laden eines Profils unter Verwendung eines Ladepakets
US11675659B2 (en) * 2016-07-15 2023-06-13 Advanced Micro Devices, Inc. DDR memory error recovery
US10394674B2 (en) * 2016-08-24 2019-08-27 Apple Inc. Local recovery of electronic subscriber identity module (eSIM) installation flow
US10341304B1 (en) 2017-01-04 2019-07-02 Snap Inc. Device independent encrypted content access system
KR102372423B1 (ko) * 2017-05-16 2022-03-10 한국전자통신연구원 파라미터 공유 장치 및 방법
DE102017212994B3 (de) * 2017-05-31 2018-11-29 Apple Inc. INSTALLATION UND TESTEN EINES ELEKTRONISCHEN TEILNEHMERIDENTITÄTSMODULS (eSIM)
CN108768621B (zh) * 2018-03-27 2021-03-26 王晓华 一种密码获取方法、验证方法、相关装置、设备和系统
CN108712246B (zh) * 2018-03-27 2021-08-10 王晓华 一种智能家居设备和系统以及访客密码获取方法
DE102018009835A1 (de) * 2018-12-14 2020-06-18 Giesecke+Devrient Mobile Security Gmbh Inkrementelles Aktualisieren einer Firmware
FR3105853B1 (fr) 2019-12-31 2023-01-06 Proton World Int Nv Système embarqué
FR3105854A1 (fr) * 2019-12-31 2021-07-02 Stmicroelectronics (Rousset) Sas Système embarqué
US20230046788A1 (en) * 2021-08-16 2023-02-16 Capital One Services, Llc Systems and methods for resetting an authentication counter

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148502A1 (en) * 2001-02-22 2004-07-29 Michael Gollner Method and system for the distributed creation of a program for a programmable portable data carrier
US20120159502A1 (en) * 2010-12-16 2012-06-21 International Business Machines Corporation Variable increment real-time status counters

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090215490A1 (en) * 2008-02-27 2009-08-27 Mediatek Inc. Methods for handling proactive commands for one or more subscriber identity cards and systems utilizing the same
USH2270H1 (en) * 2009-07-09 2012-06-05 Actividentity, Inc. Open protocol for authentication and key establishment with privacy
SG177596A1 (en) * 2009-07-10 2012-03-29 Certicom Corp System and method for managing electronic assets
FR2980607B1 (fr) * 2011-09-27 2014-04-25 Proton World Int Nv Procede de derivation de cles dans un circuit integre
US9317467B2 (en) * 2012-09-27 2016-04-19 Hewlett Packard Enterprise Development Lp Session key associated with communication path

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148502A1 (en) * 2001-02-22 2004-07-29 Michael Gollner Method and system for the distributed creation of a program for a programmable portable data carrier
US20120159502A1 (en) * 2010-12-16 2012-06-21 International Business Machines Corporation Variable increment real-time status counters

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"GlobalPlatform Card Specification 2.1.1", Version 2.1.1, GlobalPlatform (2003.03.25.)

Also Published As

Publication number Publication date
ES2737703T3 (es) 2020-01-15
KR20160043520A (ko) 2016-04-21
FR3027176A1 (fr) 2016-04-15
FR3027176B1 (fr) 2016-12-09
US9787663B2 (en) 2017-10-10
EP3010175B1 (fr) 2019-04-10
EP3010175A1 (fr) 2016-04-20
US20160105411A1 (en) 2016-04-14

Similar Documents

Publication Publication Date Title
KR101838191B1 (ko) 보안 채널에서 보안 커맨드들의 배치의 리플레이
KR101517286B1 (ko) 보안 요소를 위한 운영체제 업데이트
US20180157867A1 (en) Secure Field-Programmable Gate Array (FPGA) Architecture
US9021568B2 (en) Verification method for verifying validity of program, and verification system
US11544365B2 (en) Authentication system using a visual representation of an authentication challenge
JP6449970B2 (ja) IoTデバイス
EP1256865A2 (en) System and method for securely upgrading firmware
EP2845141B1 (en) Method and system for activation
KR20170042549A (ko) 제2 전자 엔티티에 의한 제1 전자 엔티티의 인증 방법 및 그러한 방법을 구현하는 전자 엔티티
US20170353315A1 (en) Secure electronic entity, electronic apparatus and method for verifying the integrity of data stored in such a secure electronic entity
JP6889161B2 (ja) 電子エンティティにおけるデータ受信方法および関連する電子エンティティ
EP3641219A1 (en) Puf based securing of device update
KR20210044232A (ko) 저전력 모드 동안 IoT 장치의 메모리에 저장된 데이터의 보안
US10404718B2 (en) Method and device for transmitting software
CN111444496A (zh) 应用控制方法、装置、设备以及存储介质
CN108848094B (zh) 数据安全验证方法、装置、系统、计算机设备及存储介质
CN114978542B (zh) 面向全生命周期的物联网设备身份认证方法、系统及存储介质
EP3525126A1 (en) Firmware integrity test
CN115862192B (zh) 控制方法、控制系统、电子设备及存储介质
EP4175218A1 (en) Method to establish a secure channel
KR101663700B1 (ko) 금융 시스템, 금융 시스템의 펌웨어 무결성 체크 방법
KR101834515B1 (ko) 입력부를 포함하는 암복호화 장치
CN115996147A (zh) 基于互联网平台的加解密方法、装置和互联网平台
CN116599668A (zh) 变更加密协议的方法及装置、存储介质及电子设备
CN117955678A (zh) 数据的加密传输方法、装置、设备及存储介质

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