SCP11은 비대칭키 ECC를 통해 secure channel통신을 진행하는 방법이다.
SCP11은 3개의 방법으로 진행되며 각각
scp11a, scp11b, scp11c 가 됩니다.
scp11은 인증과 secure channel communcation을 지원한다. 기본적으로 비대칭키를 활용하여 인증을 진행하고
SCP03으로 사용할 대칭키를 생성한다.
이후 secure channel communication은 scp03 내용과 동일하게 진행한다.
scp11과 scp03의 가장 큰 차이점은 scp03의 경우 대칭키를 교환하는 방법이 preshared로 진행되어야 하지만 scp11을 사용하는 경우 scp 인증과정을 진행하면서 서로 동일한 대칭키를 생성해 secure channel communication이 가능하다는 점이다.
1. 인증서
인증서는 기본적으로 chain방식으로 진행되고 OCE(off-card-entity)쪽은 CERT.OCE.ECKA가 root cert이고
SD쪽에서는 CERT.SD.ECKA가 root cert이다.
그리고 위 cert들을 providing하고 verification하기 위한 key가 존재하는데 CA-KLOC가 OCE root를 검증하기위한 key쌍
CA-KLCC가 SD cert를 검증하기위한 키이다.

위 그림은 OCE, SD의 인증서와 인증서를 verify하기위한 key의 관계를 나타낸다.
위에서 언급한 바와같이 SD로만 예를 간단히 들면 CA-KLCC를 통해 생성된 public key인
PK.CA-KLCC.ECDSA가 존재하고 해당 public key를 통해서 CERT.SD.ECKA cert를 verify할 수 있다.

실제로는 위와 같이 chain형태로 만들 수 있다.
2. SCP 11a
서로 인증하고 대칭키를 생성하여 secure channel 맺음. 두 개의 ephemeral key쌍을 사용

위와 같이 scp11a는 mutual authenticate를 진행한다.
인증은 cert verify로 진행되며 서로의 pub값과 자신의 private값을 바탕으로 session 키를만들고 또 session키를 통해서 실제 SCP03을 진행할 대칭키를 만든다.
3. SCP 11b
SCP11b는 SD만 인증하는 단방향 인증방법이다.

scp11b는 위와같이 단방향으로 인증을 진행한다.
단방향의 방향은 OCE에서 session키로 암호화되어 SD로부터 전달된 receipt를 확인함으로써 OCE가 SD를 verify하는 방법으로 단방향이 이루어진다.
4. SCP 11c
SCP11c는 mutual authentication을 진행하며 서로 인증이 가능하도록 하는 방법이다. 하나의 ephemeral key쌍을 사용.

scp11c의 가장 큰 차이점은 미리 OCE 쪽에서 계산을 진행한다는 점이다.
이러한 방법은 통신하고자하는 SD내 여러 다른 도메인데 대하여 각각 미리 계산을 진행하여 서로 다른 통신을 맺을 수 있다.
참고로 여기서 모든 scp11은 진행전에 GET_DATA를 통해서 CERT.SD.ECKA를 전달받고 verify를 통해서 PK.SD.ECKA를 뽑아낼 수 있다. 그리고 scp11 인증과정에서 SD는 allowList방식을통해서 OCE를 관리할 수 있다.
- ref
GPC_2.3_F_SCP11_v1.3_PublicRelease.pdf
https://www.win.tue.nl/pinpasjc/docs/apis/gp211/org/globalplatform/CVM.html
'SE > GP' 카테고리의 다른 글
[GlobalPlatform] Secure Channel (0) | 2023.02.18 |
---|---|
[GlobalPlatform] Card management (0) | 2023.02.11 |
[GlobalPlatform] Card spec - Secure Domain (1) | 2023.02.05 |
[GlobalPlatform] Card Spec - (1) (0) | 2023.01.15 |