WORK 2010. 8. 13. 21:53

스마트카드 기술 표준 ISO7816 Standard 정리.

구글링 하다 검색된 자료임..네이버 블로그였나..?
암튼 다들 copy-paste가 안되서..애먹다가...방법을 찾았다 그래서 퍼옴.(파일로 저장후 copy 하면 됨 ㅋ)

이해하기 쉽게 그림 포함해서 잘 설명된 자료..

1. ISO7816 의 개요

  - Cable TV, SKY TV, IP STB 등에서 유료컨텐츠의 시청 제한을 목적으로 CAS 시스템이 사용되고 있다. 단말장치인 Settop box 에서 CAS(Conditinal Access System) 를 구현하기 위한 방법으로, Software CAS 와 Hardware CAS 의 두가지 방법이 있으며 보통 Hardware CAS(Embedded) 를 구현하기 위해 smart-card interface를 사용한다.

  - ISO7816은 이러한 Smart-card interface에 필요한 물리적인 규격(ISO7816-1),스마트카드 각 핀의 위치및 크기(ISO7816-2), 그리고 전기 신호와 상호 운용 절차(ISO7816-3)에 대해 정의한다. ISO7816-4는 카드와 단말기 또는 시스템간에 통신을 하기 위한 기본 명령어에 대한 표준이다.

 

2. ISO7816-3

  - IC 카드와 단말기 사이의 전기신호와 전송프로토콜의 내용에 대해 정의되어 있다.

  2-1. 각 신호의 특성

I/O : Input or Output for serial data to the integrated circuit inside the card.

VPP :  Programing voltage input (optional use by the card).

GND : Ground (reference voltage).

CLK : Clocking or timing signal (optional use by the card).

RST : Either used itself (reset signal supplied from the interface device) or in combination with an interal reset control circuit

        (optional use by the card). If internal reset is implemented, the voltage supply on Vcc is mandatory.

VCC : Power supply input (optional use by the card).

NOTE - The use of the two remaining contacts will be defined in the appropriate application standards.

 

* 각 신호의 전압 및 전류의 spec은 ISO7816-3을 참조한다. 보다 자세한 스펙은 IC Card interface chip의 datasheet에 있다.

  2-2. Integrated Circuit (IC) Card의 동작 절차

 

 

        1) IC 카드가 삽입되면

 SMARTC CARD IC (이하 SCIC)는 카드 삽입음 감지 후 CPU에게 "*OFF=HIGH" 신호를 보낸다.

        2) CPU는 "*OFF=HIGH" 신호를 확인 후 SCIC에게 *CMDVCC의 신호를 LOW로 한다.

        3) SCIC는 IC CARD에게 전원 공급을 시작하며 -> I/O, AUX1, AUX2 를 enable시키고 ->

CPU가 SCIC에게 Reset를 거는 동시에

            IC CARD에게 Clock을 인가한다. -> 그리고 마지막으로 SCIC는 IC CARD에게 Reset을 푼다.

            2)와 3)은 정해진 sequnce대로 움직여야 하며 timing을 준수해야 한다.

        4) 위의 과정이 이상없이 진행되었다면 IC CARD는 리셋 후 ATR(Answer to reset) 신호를 보내게 된다.

        5) CPU는 ATR신호로 부터 통신속도(Baud rate), 프로토콜, IC CARD 전원(5V/3.3V)등을 읽어내어 IC

CARD의 동작환경에 맞춘다.

            이상의 준비가 다 되었다면 CPU는 IC CARD를 Control 할 수 있게 된다.

   

 

 

  2-3. ATR 신호 분석

      * ATR은 TS(Initial character) - T0(Format character) - TAi,TBi,TCi,TDi(Interface character) - T1,T2,..,TK(Historical character) -

        TCK(Check character) 순으로 전송한다.

      1) character frame의 구조

         - ATR 의 character frame은 start bit(0), information bits(1~8), parity check bit(9) 의 연속되는 총 10bit로 구성되어져 있다.

         - ART 의 bit duration은 IC CARD의 internal clock 사용시 1/9600s 이지만, 외부 clock 사용시 (fi = 1 MHz to 5 MHz) duration은

            372/fi 이다.

 

      2) TS (Initial character) 의 구조

         - TS의 frame 구조는 (Z)AZZAAAAAAZ 또는 (Z)AZZAZZZAAZ 의 두가지 중 하나이다. (A = Signal low, Z = High impedance)

            (1) (Z)AZZAAAAAAZ (ba bb ... bi)

                - A : Start bit

                - AAA : Logic level 1 is A

                - ba is b8 (msb is first)

            (2) (Z)AZZAZZZAAZ (ba bb ... bi)

                - A : Start bit

                - ZZZ : Logic level 1 is Z

                - ba is b1 (lsb is first)

         - TS 이후에 전송되는 모든 ATR 에 적용된다.

 

      3) T0 (Format character) 의 구조

         - b8 b7 b6 b5 b4 b3 b2 b1 순서

         - 최상위 4비트 (b8 b7 b6 b5) 는 Y1 이라고 하며, 뒤따라 출력되는 ATR 의 TA1,TB1,TC1,TD1 의 존재유무를 나타낸다.

           Logic level '1' 일경우 해당되는 interface character 가 뒤따라 출력되고 Logic level '0' 인경우 출력되지 않는다.

              

           Y1 : indicator for the presence of the interface characters
           TA1 is transmitted when b5=1
           TB1 is transmitted when b6=1
           TC1 is transmitted when b7=1

           TD1 is transmitted when b8=1                      

 

         - 하위 4비트 (b4 b3 b2 b1) 는 K 라고하며, 0 과 15 사이의 historical character 갯수를 나타낸다.

 

      4) TAi, TBi, TCi, TDi (i = 1,2,3,...) (Interface character) 의 구조

         - TAi, TBi, TCi : 프로토콜의 parameter 를 나타낸다. (F, D, I, P, N)

           F : clock rate conversion factor

           D : bit rate adjustment factor. (ATR 이후 송수신되는 data 의 work etu 를 결정한다)

                * work etu = (1/D) * (F/fs) s   [ fs : 외부 입력 클럭 ]

 

FI

0000

0001

0010

0011

0100

0101

0110

0111

F

Internal clock

372

558

744

1116

1488

1860

RFU

Fs (max) MHz

-

5

6

8

12

16

20

-

FI

1000

1001

1010

1011

1100

1101

1110

1111

F

RFU

512

768

1024

1536

2048

RFU

RFU

Fs (max) MHz

-

5

7.5

10

15

20

-

-

 

DI

0000

0001

0010

0011

0100

0101

0110

0111

D

RFU

1

2

4

8

16

RFU

RFU

DI

1000

1001

1010

1011

1100

1101

1110

1111

D

RFU

RFU

1/2

1/4

1/8

1/16

1/32

1/64

 

           I and P : 동작상태 일때 VPP 를 정의한다.

                * Maximum programming current : I mA

                * Programming voltage : P volt

                * PI2 가 있다면 PI1은 무시된다. [ P1 => (5 ~ 25) Volt, P2 => (50 ~ 250) x 0.1 Volt ]

II

00

01

10

11

I

25

50

100

RFU

 

           N : IC 카드가 요구하는 extra guardtime. 하나의 character가 IC 카드에게 보내어질때 그 이전에 character가 보내기 시작한 후

                즉 이전 character의 start bit 가 edge로 내려간 후 적어도 (12 + N) 의 etu 시간이 카드에게 필요함.

                * 0 ~ 254 : extra guart time

                * 255 : 2개의 character 를 보낼때 start edge와의 간격이 최소한으로 (11 etu) 줄어든다.

         - TDi : 프로토콜 타입과 뒤따라 출력되는 ATR Character sequence 의 존재유무를 나타낸다.

         (1) TA1 : b8 b7 b6 b5 b4 b3 b2 b1

             - b8 b7 b6 b5 : FI 

             - b4 b3 b2 b1 : DI

         (2) TB1 : b8 b7 b6 b5 b4 b3 b2 b1

             - b7 b6 : II 

             - b5 b4 b3 b2 b1 : PI1

         (3) TC1 : b8 b7 b6 b5 b4 b3 b2 b1

             - b8 b7 b6 b5 b4 b3 b2 b1 : 

         (4) TB2 : b8 b7 b6 b5 b4 b3 b2 b1

             - b8 b7 b6 b5 b4 b3 b2 b1 : PI2