1. Architecture

GP 따르는 smart card Architecture 살펴보면 아래와 같은 구조를 가지고 있다.

 

(GlobalPlatform Card Architecture - source: GlobalPlatform)

 

기본적으로 구조를 보면 Secure Domain 각각존재하고 Secure Domain내에 각각의 Application 존재하는 것을 확인할 있다. 그리고 각각의 Applicatoin Secure Domain들은 OPEN and GP Trusted Framework Runtime Environment 존재한다.

 

  • Secure Domain

일종의 secure key같은 개념이다. secure domain이라는 키를 이용하여 secure domain내에 존재하는 application 안전하게 보호하는 역할을 진행한다.

또한 각각의 secure domain 서로 독립적으로 침해할 없는 환경을 가지고 있기 때문에 보안상 안전하다.

 

  • Application

Application card 존재하는 application으로 개발자가 카드에서 수행하고자하는 기능들을 진행한다.

encrypt/decrypt 기능을 담당하는 application, key generator application 등을 개발하고 관리한다.

 

  • OPEN and GP Trusted Framework

해당 Layer 카드 내에 존재하는 application들이 card 내부에서 데이터를 주고받기 위한 통신 시스템이다.

 

  • Runtime Environment

카드내부에 존재하는 application 카드 외부 object들과 데이터를 주고받기 위한 공간이다.

 

기본적으로 모든 작업들은 secure 환경에서 진행하는게 원칙이며 특히 외부와 통신하기 위해서는 secure channel 맺어 서로 데이터를 주고받는다.

 

2. Card Issuer - Applicatio Providier - Controller

Architecture Card Issuer, Application Provider, Controller Authorities 각각 card 사용하는데 있어 얽혀있는 비즈니스 관점에서 보면 이해가 쉽다.

 

Card Issuer 말그대로 처음 카드를 발급하는 입장으로 전체적인 card secure policy, card 수명주기 등을 설정하고 담당하는 1차적인 생성 vendor 보면된다.

 

그리고 Application Provider 특정한 application 개발하여 탑재하고 application 다루기위한 secure 정책들을 Card Issuer 설정한 보안 정책에 맞게 구현하고 서비스 동작하도록 담당하는 부분이다.

 

마지막으로 Controller Authorities Card Issuer 정의한 card 밖과 안사이의 security policy 수행하는 역할이다. 키를 생성하거나 신뢰할 있는 기관으로 부터 얻어 인증서나, 서명들을 생성하고 card service사용을 원하는 외부 vendor 제공해주는 역할을 담당한다.

 

 

3. ELF

Executable Load File 의미하며 실제로 실행할 있는 파일을 의미한다.

컴파일을 통해 실행할 있도록 만든 파일이며 GP Card spec에서는 해당 ELF 로드 설치하여 application 설치한다.

 

ELF에는 여러 개의 Executable Module 존재하고 해당 모듈들이 실제로 실행을 담당하는 모듈이며 EM 모듈들은 여러 개의 application instance들을 가지고 있다.

ELF 실행하게되면 GP spec 맞게 card 실행하고자 하는 application객체들을 생성하여 Mutable Persistent Memory 로드하고 로드된 application instance 사용함으로써 해당 Application서비스를 제공받을 있는 개념이다.

 

  • DAP

DAP ELF 일부분이다. DAP Load File secure함을 증명하기위해 사용되는 일종의 signature이다.

 

 

 

4. Life Cycle

GP card spec 따르면 크게 Card, Secure Domain, Application Life cycle 존재한다.

먼저 카드는 smartcard자체의 life cycle로써 실제 smartcard 설계하고 제작하는 vendor에서 부터 card자체의 lock 종료까지의 life cycle 나타낸다.

 

1) card life cycle

Card Life Cycle 처음 READY 시작되고 Load, 설치를 통해서 INSTALL 된다.

INSTALL까지는 card 외부 object 통신이 이루어질 없는 상태로 아직 Card secure policy등이 설립되지 않은 상태이다.

 

여기서 모든 secure policy 설립되고 secure 부분들이 정리가되어 외부 object communication 있는 상태가 SECURED이다.

SECURED 되면 card APDU 통해 외부 object와의 통신이 가능해진다.

 

Card Locked SECURED상태에서 applicaiton혹은 secure Domain 의해 Attack으로 의심되는 상황을 탐지하고 card 안정성을위해 LOCK으로 진입한 모드이다.

 

TERMINATED card 종료이다.

 

 

2) Application Cycle

Application Secure Domain 연관되며 실제 ELF 안의 EM 생성하는 Application instance로써 실행된다. 이러한 application역시 일종의 cycle 가지고 있는데 크게 INSTALL, SELECTABLE, LOCKED 존재한다.

 

 

INTSALL은 처음 application 설치된 상황으로 아직 select command 받을 없는 상태이다.

card 마찬가지로 INSTALL 상태에서는 외부 object로부터 select, communicatoin 불가능하며 SELECTABLE 모드로 진입한 이후 외부 object로부터 해당 application SELECT 가능하고 이후 APDU communication 주고받을 있다.

 

LOCKED application 보안상의 이슈 등으로 잠금상태가 된다.

 

 

3) Secure Domain Cycle

Secure Domain 사실상 하나의 application 같다. 하지만 key 가지고 있어 application 암호화하고 secure domain키를 가지고 인증받은 사람에 한해서만 secure domain 관리하는 application 접근하고 사용할 있도록 해주는 특별한 application 것이다.

 

잠깐 secure domain 통해서 application 접근하는 부분을 설명하면

secure domain 위에서 언급한 Trusted Framework 통해서 target application으로 접근하고 communication 진행한다.

 

다시 돌아와서 secure domain INSTALLED, SELECTABLE, PERSONALIZED, LOCKED상태로 나뉜다.

 

가장먼저 INSTALLED상태는 설치가 막된 상태로 아직 card secure policy 적용하지 않은 상황이다.

SELECTABLE Secure Domain SELECT 가능해진 상황이다. 하지만 경우 아직 key 주입이 되지는 않은 상황이라 Secure Domain APDU 통신을 진행할 없다.

 

그래서 해당 SELECTABLE에서 SELECT secure domain 진행하고 put-key등으로 key 주입하여 PERSONALIZED 모드로 변경한다.

 

PERSONALIZED가되면 이제 외부 object APDU통신이 가능한 상황으로여러 통신들을 진행할 있다.

LOCKED 되면 보안상의 이슈로 해당 secure domain 잠긴 상태를 의미한다.

 

 

5. Logical Channel

Applicaton 사용하기위해서늰 가장기본적으로 이루어지는게 바로 SELECT작업이다.

모든 cmd SELECT 통해 Application 설정하고 이후 원하는 cmd APDU format으로 주고받는다.

SELECT 포함한 여러 cmd 주고받는 format ISO 정의된다.

 

Logical Channel APDU 주고받기위해 사용하는 통신 채널로 기본적으로 Basic Logical Channel 지원한다. 해당 채널은 반드시 사용되는 채널로 절대 close되지 않는다.

이외에도 sub channel들을 사용할 있는데 이를 위해서는 Basic Channel 닫히지 않기 때문에 multi channel 옵션이 지원되야만 한다.

 

또한 sub channel들은 Basic channel혹은 sub channel 의해 생성되어 기본적으로는 Basic Channel 무조건 사용하는 개념이다.

 

card와의 통신을 정리하면 사용하고자하는 Application 대하여 SELECT 진행하고 cmd 주고받음으로써 진행한다고 있다.

 

 

 

  • ref

https://globalplatform.org/

'SE > GP' 카테고리의 다른 글

[GlobalPlatform] SCP-11  (0) 2023.03.04
[GlobalPlatform] Secure Channel  (0) 2023.02.18
[GlobalPlatform] Card management  (0) 2023.02.11
[GlobalPlatform] Card spec - Secure Domain  (1) 2023.02.05

+ Recent posts