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
'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 |