ISO 7816 (스마트카드 표준) IT

출처 : http://blog.naver.com/young2004/30004549875


ISO 7816 (스마트카드 국제표준)


part3 전기 신호와 전송 프로토콜

- ISO 7816-3은 IC 카드와 단말기 사이에 전기 신호와 전송 프로토콜 정의 등 중요한 내용을 포함하고 있으며 핵심 내용인 ATR이 포함된다.


1. IC 카드 리셋

Internal reset : IC 카드가 명령이나 수행 절차에 의해 내부적으로 리셋되는 경우 클럭 신호의 몇 사이클 주기 이후에 리셋된다. 이 때 I/O 단자의 ATR은 클럭신호가 CLK에 적용된 이후에 400~40000클럭 사이클에서 시작된다.


Active low reset : IC 카드가 능동형 제로 리셋 상태인 경우, 클럭 신호가 CLK에 적용된 이후에 RST를 L 상태에 최소한 40000클럭 사이클 동안 유지됨으로써 IC 카드가 리셋된다.


Synchronous Active low : 동기적으로 응답하는 카드는 인터페이스 장치가 모든 접접을 L 상태로 설정된다. 그 이후 Vcc가 공급되며, Vpp가 유휴상태에 설정되고 CLK와 RST가 L 상태에 유지되며 I/O가 인터페이스 장치의 수신모드에 놓여진다.


2. ATR (Answer to Reset)

- ISO 7816 규격의 모든 IC 카드는 단말기의 리셋신호에 의해 카드가 응답하는 ATR을 기반으로 동작하기 시작한다. 즉 IC 카드가 단말기에 삽입되면 전원이 공급되고, 단말기가 카드에 리셋(RST) 신호를 보내면 카드가 첫번째 응답하는 신호가 ATR이다.


- ATR의 응답에 따라 전원 전압이 결정될 뿐 아니라 ATR에 의해서 프로토콜을 결정하고 Initial Character, Format Character, Interface Character, Historical Character, Check Character, 제조 업체 식별 등 기본적인 동작을 시작하는 가장 중요한 응답 신호이다.


‣ T=0 protocol : 비동기 반이중 바이트 전송

- 바이트 전송 프로토콜이라고 하면 ISO 7816에서 초기부터 사용된 전송 프로토콜로서 유럽이 이동통신 GSM의 11.11 SIM(Subscriber Identification Module)에서 T=0 프로토콜을 채탹한 이래 차세대 신용카드 EMV에서는 T=0, T=1 양 프로토콜을 채택하고 있다.


‣ T=1 protocol : 비동기 반이중 블록 전송

- 블록 전송 프로토콜이라고 하며 바이트 전송 프로토콜에 비해 보안성이 다소 개선될 수 있는 여지가 있다.


ISO 7816-4 명령어

- 카드와 단말기 또는 시스템간에 통신을 하기 위한 기본 명령어에 대한 표준이다.

IC카드는 수동적으로 동작(단말기 또는 시스템에서 주어진 명령에 대해서 응답하는 형태)하고, 전원, 리셋, 클럭 및 명령어의 전달이 전부 외부에서 주어졌을 때에만 카드 내부에서 응답하는 형태로 동작하기 때문에 기본명령어는 업체간에 호환성, 연동성을 갖기 위해 매우 중요한 요소이다.


Name

Case

Ins

P1

P2

P

Data

READ Binary

2

B0

b8=1이면 b6=0

b1-b5는 EF식별자

파일서두에서 데이터 유니트 첫바이트 오프셋

 

Empty

Make File

2

A0

File Name       00 to FE

No of Record

05

Record length 2 Byte for access rules

Make WORM

2

A6

File Name

00 to FE

No of Record

 

Record length 2 Byte for access rules

Select File

1

A4

File Name

00

00

 

Write Record

2

D2

00

Record

Number

No of Bytes

String to be Written

Write WORM

2

D6

00

Record

Number

No of Bytes

String to be Written

Read Record

3

B2

00

Record

Number

No of Bytes

String to be Written

<ISO 7816 명령어 요약>


1. 데이터 구조

- ISO 7816-4는 DF와 EF en 종류의 파일을 지원한다.

DF(Dedicated File)과 EF(Elementary File) 두 종류의 파일은 그 역할과 목적이 각각 다르며 DF의 루트마일을 MF(master File)이라 한다.

MF는 ISO 7816-4의 필수사항이고 DF는 선택사항으로 정의되어 있다 EF는 다시 두 종류로 분류된다. 첫째는 내부 EF이며 내부 EF는 IC카드에 의해 해석프로그램이 기록되고, IC카드의 관리와 제어목적으로 사용된다. 두 번째 워킹 EF는 IC카드에 의해 수행되는 해석프로그램이 없이 외부에서 독점적으로 사용되는 데이터로 구성된다.


2. 파일선택방법

- IC카드의 파일 선택방법은 첫째, 파일 식별자 선택방법 둘째, 경로(path)에 의한 선택방법 셋째, EF식별자에 의한 선택방법 세 종류가 있다.

파일 식별자 선택방법은 어떤 파일도 2바이트의 파일 식별자로 선택할 수 있다. MF를 선택하는 경우 ‘3F00'파일 식별자를 사용한다.

경로에 의한 선택방법은 ‘3FFF' 식별자를 사용한다. IC카드 내부에서 식별자에 의해 어떤 특정 파일을 선택하려면, 모든 EF와 DF는 각각 다른 파일 식별자를 가지고 있어야 한다.

EF식별자 선택 방법의 경우, 모든 EF는 1에서 30까지의 5비트로 구성된 식별자를 가지고 있으며, “0”은 현재 선택하여 사용중인 EF의 식별자와 함께 사용할 수 없다.

3. 데이터 선택방법

- 데이터선택방법과 레코드번호 매기기 방법 그리고 데이터유닛 크기는 EF 종속 특성이다.

ATR파일과 FCI(File Control Information) 그리고 ATR로 지시가 지원된다.

IC카드가 몇 개의 지정공간 지시를 지원할 때 주어진 EF가 MF에서 EF까지의 경로 내에서 가장 가까은 EF에 대한 지시가 유효하다.


1) 레코드 식별자에의한 선택

레코드 식별자에 의한 선택에 있어서, 각 레코드식별자는 IC카드 내부 응용으로 지원된다.

한 메세지의 데이터필드 내에 레코드가 SIMPLE-TLV 데이터 객제인 경우 레코드 식별자는 데이터 객체의 첫번째 바이트이다.

다음의 규칙은 선형 및 원형 구조에 대한 것이다.

‣ 첫번째 발생한 레코드는 지정된 식별자로 첫번째 논리적 위치에 있게 되며, 마지막으로 발생한 레코드는 지정된 식별자로 마지막 논리적 위치에 있게 된다.

‣ 현행레코드가 없을 때, 다음 발생 레코드는 첫번째 발생레코드와 동일시되며, 이전에 발생한 레코드는 마지막에 발생한 것과 동일시된다.

‣ 현행레코드가 있을 때, 다음 발생 레코드에 가장 가까운 논리적 위치에 정의된 식별자의 레코드는 현행레코드보다 큰 논리적 위치에 있다. 이전에 발생한 레코드는 현행레코드보다 작은 논리적 위치에 정의된 식별자로 가깝게 된다.

‣ 레코드 식별자와는 독립적으로 ‘00’값이 첫번째 마지막, 다음 그리고 이전의 레코드로 번호순서가 부여된다.


2) 레코드번호에 의한 선택

레코드구조의 EF는 레코드 번호가 유일하고 순차적이다.

‣ 선형구조의 EF는 레코드번호가 기록하고 추가 기록하여 생성되는 순서대로 부여된다. 따라서 레코드번호 #1의 첫번째 레코드는 첫번째 생성된 레코드이다.

‣ 원형구조의 EF는 레코드번호가 기록하고 추가 기록하여 생성되는 순서의 역순으로 부여된다. 레코드번호 #1은 가장 최근에 생성된 레코드이다.

‣ 선형 및 원형구조 레코드는 레코드포인터로 고정된 형행레코드가 ‘00’값을 갖는다.


3) 데이터 유닛선택

투명구조 EF는 READ BINARY 명령과 같은 오프셋에 의해 각 데이터 유닛이 선택된다. 선택적인 개별적 명령에 따라 8 또는 15비트로 제한된다. EF의 첫번째 데이터 유닛은 0이며 오프셋은 다음 데이터 유닛에 대해 항상 1씩 증가한다. 만일 IC카드에 지시가 주어지지 않은 경우 데이터 유닛의 기본 크기는 1바이트이다.

레코드구조의 EF는 데이터 유닛 선택을 지원할 수 있으며, 이경우에 데이터 유닛은 데이터로 구조적 정보를 포함할 수 있다. 레코드구조의 EF 내부에는 알려지지 않은 EF에 레코드가 저장된 순서 때문에 데이터 유닛선택이 의도적인 결과를 지원 할 수 없다.


4) 데이터 객체 선택

ISO 7816-4 5.4.4의 각 데이터 객체는 선택되는 태그의 헤드로 존재한다.


4. 파일제어정보

파일제어정보 FCI(File control information)는 SELECT FILE 명령에 대한 응답으로 나오는 데이터 바이트로서 FCI는 모든 파일에 포함될 수 있다.


‣ FCP 뎀플릿은 ISO 7816-4 TABLE 2에 정의된 BER-TLV 데이터객체 FCP(File control parameter)를 전달하기 위한 것이다 (‘62’)

‣ FMD 뎀플릿은 ISO 7816-4에 정의된 BER-TLV 데이터객체 FMD(File management data)를 전달하기 위한 것이다. (‘64’)

‣ FCI 템플릿은 FCP와 FMD를 전달하기 위한 것이다.

- 상기 세 템플릿은 SELECT FILE 명령의 선택사항에 따라 검색될 수 있다.


5. APDU 메시지구조

- 응용 프로토콜 절차는 명령을 보내고 응답을 회신받는 전체의 절차로 이루어진다. 특정 응답은 특정 명령에 의해 이루어지며 이것을 명령-응답 쌍이라 한다.

응용 프로토콜 데이터 유닛(APDU : Application Protocol Data Unit)은 명령 메시지 또는 응답 메시지를 포함하며, 단말기에서 카드로 전송된다.


1) ISO 7816 명령어 구조

ISO 7816 명령어는 항상 단말기로부터 카드로 전달된다. 모든 명령어는 5바이트 헤터를 포함하고 있으며 카드는 명령에 따라 주어진 일을 수행한다.

5바이트의 명령어는 CLA, INS, P1, P2, P3로 구성되며, CLA는 명령 클래스이며 PTS로 예약된 FFh 를 제외하고 어떤 값도 주어질 수 있다. INS는 명령클래스를 포함한 명령 코드이다. 유효명령코드의 LSB는 항상 0이며, MSN은 6이나 9가 될 수 없는데, 그 이유는 스마트카드 제조업체가 내부적으로 사용하기 때문에 충돌을 피하기 위해서이다. P1과 P2는 INS의 기준 어드레스이다. P3는 전송되는 데이터 바이트 숫자이며, 이것은 명령어에 따라 카드에서 단말기로 또는 반대로 전송되는 데이터를 포함하고 있다. 카드로부터 단말기로 전송되는 출력메시지에는 256바이트 데이터전송이 요구된다.


2)명령 APDU

명령 APDU 데이터필드는 CLA INS P1 P2 4바이트로 구성된 필수적인 헤더와 가변길이 조건부 바디로 구성된다.


CLA

INS

P1

P2

P3

Command Data Field

n=P3 bytes

                              <ISO 7816 part3>


CLA

INS

P1

P2

LCf(max3bytes)

Command Data Field

LEf(max 3 bytes)

P3

 

 

Nn=LCf bytes

 

 

 

                             <ISO 7816 part4>



3) 절차바이트(Procedure Byte)

단말기가 명령어의 헤더를 보낸 후, 카드로부터 응답을 기다리는데 이것을 절차바이트“Procedure Byte"라 하며, 절차바이트는 ACK 또는 SW1 둘 중에 하나이다. 카드가 SW1바이트를 전송하면, 새로운 SW2바이트가 전송될 것을 의미한다. SW1, SW2 바이트 조합은 카드상태를 포함하여 응답이 완료되었음을 알려준다.


‣ case 1 전송이나 수신 데이터를 요구하지 않는 명령. CLA INS P1 P2

‣ case 2 단말기에서 카드로 데이터전송을 포함하는 명령. CLA INS P1 P2 LC field

          Data field

‣ case 3 데이터를 보내지 않지만 데이터 회신 응답을 카드에 요구 CLA INS P1 P2

          LE field

‣ case 4 데이터를 보내고 카드로부터 데이터 요구 CLA INS P1 P2 LC field Data field

          LE field


4) 상태바이트(Status bytes)

응답메시지에 포함되는 상태바이트 SW1 SW2는 다음과 같이 정상완료된 경우와 실패한 경우로 구분된다.





1 2 3 4 5 6 7 8 9 10 다음

구글와이드