본문 바로가기
  • AI (Artificial Intelligence)
Skills/Interface

MAXIM 스마트 카드 I/F 원리

by 로샤스 2014. 2. 26.

DS8007과 스마트 카드 인터페이스의 기본 원리

개요: DS8007은 모든 ISO 7816, EMV™ 및 GSM11-11 요구사항을 지원하는 저가의 멀티프로토콜, 듀얼, 스마트 카드 인터페이스이다. 이 단일 혼합 신호 (mixed-signal) 주변장치는 1개의 마이크로컨트롤러와 2개의 독립적인 스마트 카드 사이에 모든 인터페이스 세부사항을 관리한다. 이 애플리케이션 노트에서는 스마트 카드의 몇 가지 기본 원리를 살펴보고 이들 소자 간에 통신을 수행하는 방법에 대해 설명한다. 또한 DS8007을 사용하여 스마트 카드와 DS5002 보안 마이크로프로세서에 인터페이싱하기 위한 소프트웨어가 제공된다.

개요

스마트 카드란 무엇인가? 스마트 카드란 보통 IC가 내장된 포켓 크기의 카드로 정의된다. 스마트 카드에는 IC가 내장되어 있어 IC 카드(ICC)라고 부르기도 한다. 그림 1은 일반적인 스마트 카드의 예이다. 다양한 애플리케이션에서 사용되는 이러한 카드들이 마그네틱 선을 사용하여 카드 계정 정보를 저장하는 기존의 지불 (직불 또는 신용) 카드를 대체하고 있다. 이는 스마트 카드가 다양한 기능을 제공할 뿐 아니라 특히 IC 기술을 이용한 강력한 보안 기능을 제공하기 때문이다. 그러나 후자의 보안 기능은 스마트 카드의 높은 비용과 대비하여 신중한 평가가 요구된다.


그림 1. 스마트 카드의 예

스마트 카드에는 간단한 비휘발성 메모리 소자나 복잡한 연산을 수행할 수 있는 마이크로컨트롤러와 같은 정교한 IC가 내장된다. 카드에 내장된 간단한 비휘발성 메모리 소자가 데이터 저장을 위한 마그네틱 선을 대체할 수 있다. 이러한 소자는 대부분 메모리와 추가 로직을 결합하여 메모리의 일부 또는 전체에 대한 액세스를 제한한다. 그러나 스마트 카드의 진정한 힘은 데이터 프로세싱 및/또는 암호화 기능을 수행하는 내장된 마이크로컨트롤러의 능력에 있다. 이 프로세싱 능력은 강력한 보안 기능을 제공한다. 그러나 설계가 복잡해질수록 카드 비용도 증가한다. 프로세서가 내장된 스마트 카드의 비용은 $7.00 ~ $15.00 (USD) 범위인 반면 마그네틱 선이 있는 지불 카드는 $0.75¹ (USD) 정도에 불과하다. 이렇게 비싼 가격이 스마트 카드로의 전면적인 교체를 지연시키고 있지만, 보안 요구가 높아짐에 따라 스마트 카드에 대한 필요성도 커지고 있다.

DS8007은 마이크로컨트롤러와 2개의 개별적인 스마트 카드에 물리적으로 인터페이싱하는 데 필요한 모든 전기적 신호를 제공한다. 이 소자에는 데이터 통신을 위한 ISO UART뿐 아니라 자동 카드 액티베이션 및 디액티베이션을 제어하는 전용 시퀀서가 내장되어 있다. 또 차지 펌프와 전압 레귤레이터가 있어 소자는 2.7V ~ 6.0V의 전원 전압으로 동작하며, 2개의 독립적인 스마트 카드 전원 전압을 생성할 수 있는데, 이 중 하나는 1.8V, 3.0V 또는 5V로 설정할 수 있다. 마이크로컨트롤러와의 통신은 비다중화 구성으로 데이터를 전달하거나 다중화 구성으로 데이터와 어드레스를 전달하는 표준, 병렬 8비트 버스에 의해 제공된다.

스마트 카드 세부사항

가장 많이 볼 수 있는 스마트 카드 폼 팩터는 신용 카드 크기의 소자이지만, "스마트 카드"라는 용어는 휴대 전화에 많이 사용되는 우표 크기만 한 가입자 인증 모듈(SIM)에도 적용된다. 이 SIM 폼 팩터는 단말기에 특정 지불 시스템 데이터와 상세한 애플리케이션 정보를 제공하기 위해 지불 단말기에도 이용되고 있다. 소자의 카드 부분은 보통 PVC로 만들어지며, 일반적으로 계정 번호와 만기일 등의 정보가 새겨진다. 폼 팩터와 상관없이 모든 전자기 규격은 ISO 7816 표준 시리즈를 기반으로 한다. 이 밖에도 EuroCard®, MasterCard®, Visa® (EMV) 업체로 구성된 컨소시엄에서는 특별히 스마트 카드와 해당 기업의 지불 시스템 애플리케이션에 관한 일련의 표준을 개발했다. EMV 규격은 보통 ISO 7816 문서를 기반으로 한다.

스마트 카드 접촉

스마트 카드상 접촉부의 숫자, 위치 및 기능은 위에서 언급된 표준에 의해 명확히 규정되어 있다. 표준 스마트 카드의 IC 위치와 접촉 치수는 그림 2에 나와 있다. ISO 7816은 8개의 가능한 접촉 위치를 규정하고 있다. EMV 애플리케이션에는 8가지 위치 중 현재 5가지가 사용된다. 이들 접촉의 이름과 기능은 표 1을 참조한다. 접촉 C6은 ISO 7816에서 VPP로 정의되어 있으며, 이 프로그래밍 가능 전압은 EMV 규격에 따라 현재 카드에는 사용되지 않는다. 접촉 C4 및 C8 역시 사용되지 않으므로 물리적으로는 카드에 존재할 필요가 없다. EMV 규격에 지정되어 있는 개별 접촉에 대한 자세한 내용은 다음과 같다.

표 1. 스마트 카드 접촉
Contact Name Contact Function
C1 Supply voltage to card (VCC)
C2 Reset (RST)
C3 Clock (CLK)
C4 Provided on the DS8007; not used in EMV
C5 Ground (GND)
C6 VPP; not used in EMV
C7 Input/output (I/O)
C8 Provided on the DS007; not used in EMV


그림 2. 접촉 치수 및 위치

VCC 접촉 (C1)
이 접촉은 카드에 전원 전압을 제공한다. 원래 VCC에 대한 규격에는 5V DC ±10%만 포함되어 있었지만, 지금은 더 낮은 전압의 카드로 위상 이동(phased migration)도 규정하고 있다. 초기 규격만 지원하는 카드는 클래스 A 카드라고 부르며, 2009년 6월 말까지 클래스 AB 또는 클래스 ABC 카드로 교체되어야 한다. 카드 클래스에 대한 VCC 규격은 다음과 같다.

클래스 A 카드: ≤ 50mA에서 4.5V ≤ VCC ≤ 5.5V
클래스 AB 카드: ≤ 50mA에서 2.70V ≤ VCC ≤ 3.3V
클래스 ABC 카드: ≤ 30mA에서 1.62V ≤ VCC ≤ 1.98V

DS8007 카드 인터페이스에는 차지 펌프와 전압 레귤레이터가 내장되어 있어 소자가 2.6V ~ 6.0V 전원으로 동작할 때, 3가지 카드 클래스에 모두 적절한 전압을 공급할 수 있다.

I/O 접촉 (C7)
스마트 카드의 I/O 접촉은 입력(수신 모드)으로 사용되어 단말기로부터 데이터를 수신하거나 출력(전송 모드)으로 사용되어 단말기로 데이터를 전송한다.

수신 모드에서 입력이 다음 규격을 준수할 경우 카드는 유효 데이터를 인식한다.

클래스 A 카드

    입력 고전압: 0.7 × VCC ≤ VIH ≤ VCC
    입력 저전압: 0.0 ≤ VIL ≤ 0.8V
    상승 시간/하강 시간: ≤ 1µs
클래스 AB 또는 ABC 카드
    입력 고전압: 0.7 × VCC ≤ VIH ≤ VCC
    입력 저전압: 0.0 ≤ VIL ≤ 0.2 × VCC
    상승 시간/하강 시간: ≤ 1µs
전송 모드에서 I/O 접촉은 다음과 같은 신호 레벨을 제공한다.

클래스 A 카드
    출력 고전압: 0.7 × VCC ≤ VOH ≤ VCC, -20µA < IOH < 0, VCC = min
    출력 저전압: 0.0 ≤ VOL ≤ 0.4V, 0 < IOL < 1mA, VCC = min
    상승 시간/하강 시간: ≤ 1.0µs
클래스 AB 또는 ABC 카드
    출력 고전압: 0.7 × VCC ≤ VOH ≤ VCC, -20µA < IOH < 0, VCC = min
    출력 저전압: 0.0 ≤ VOL ≤ 0.15 × VCC, 0 < IOL < 1mA, VCC = min
    상승 시간/하강 시간: ≤ 1.0µs
EMV 규격에서는 I/O 접촉이 송신 중이 아닌 한, 스마트 카드의 I/O 접촉 드라이버는 수신 모드로 설정한다고 규정하고 있다.

CLK 접촉 (C3)
CLK 접촉은 인터페이싱 단말기, 즉 DS8007에 의해 소싱되는 입력이다. 이 신호는 트랜잭션 프로세스 중 데이터 전송 타이밍을 제어하는 데 사용된다. 주파수 범위는 1.0MHz ~ 5.0MHz 사이이다. 이 접촉의 전기적 규격은 다음과 같다.

클래스 A 카드
    입력 고전압: VCC - 0.7 ≤ VIH ≤ VCC
    입력 저전압: 0.0 ≤ VIL ≤ 0.5V
    상승 시간/하강 시간: ≤ 9% of clock period
클래스 AB 또는 ABC 카드
    입력 고전압: 0.7 × VCC ≤ VIH ≤ VCC
    입력 저전압: 0.0 ≤ VIL ≤ 0.2 × VCC
    상승 시간/하강 시간: ≤ 9% of clock period
RST 접촉 (C2)
RST 접촉은 인터페이싱 단말기에 의해 소싱되는 카드에 대한 입력이다. 이 신호는 액티브 로우(active-low)이며, 카드의 비동기 리셋을 발생시킨다. 이 접촉은 CLK 접촉과 전기적 규격이 동일하지만, 최대 상승 및 하강 시간은 1.0µs이다.

위의 규격에서 보듯이 스마트 카드와 인터페이싱하는 단말기는 다양한 전원 전압과 신호 레벨을 제공해야 한다. 또한 인터페이스 규격은 단말기가 카드 접촉 중 임의 두 접촉 간의 단락을 견디도록 요구하고 있다. 이러한 이유로 필요한 전원 전압과 신호 레벨을 제공하는 데 전용 소자를 사용하는 것이 여러 개의 개별 아날로그 IC를 조합하는 것보다 훨씬 유리하다. DS8007이 바로 이러한 전용 소자이다. 이 소자는 위의 기능을 제공하는 데 필요한 아날로그 회로뿐만 아니라 FIFO 및 기타 디지털 제어 로직을 포함하고 있어 완벽한 카드 세션 지원에 필요한 상태 시퀀싱 및 타이밍을 제공한다.

단말기 인터페이스 요구사항

모든 카드 세션은 다음 단계로 구성된다.
  1. 단말기에 카드 삽입; 접촉의 연결 및 액티베이션
  2. 카드 리셋; 단말기와 카드 간의 통신 구축 (아래 ATR 시퀀스 참조)
  3. 트랜잭션 실행
  4. 접촉의 디액티베이션 및 카드 제거
삽입 후 초기 리셋을 수행하면 카드는 ATR(Answer to Reset)이라고 하는 일련의 문자로 응답한다. 이 일련의 문자는 특정 프로토콜, 비트 타이밍 및 이후의 모든 통신을 위한 데이터 전송 세부사항을 포함하여 초기의 통신 세부사항을 수립한다. 이후의 데이터 전송에서 특정 통신 파라미터가 변경될 수 있지만, ATR은 초기 통신 상태를 유지한다. ATR은 아래 섹션에서 자세히 설명한다.

각각의 문자
스마트 카드와 단말기 간에 인터페이싱이 이루어지는 동안 정보는 양방향 I/O 접촉을 통해 직렬로 전달된다. 비트 유지 시간(bit duration)은 ETU(Elemental Time Unit)로 정의된다. ETU에 대한 시간 주기(time period)는 CLK 접촉상의 단말기에 의해 제공되는 클록 신호와 직접적 선형 관계에 있다. ATR 동안 문자의 비트 타이밍을 초기 ETU라고 한다. 이 값은 다음 수식으로 구할 수 있다.

Initial ETU = 372/ƒ seconds (Eq.1)

여기서 ƒ는 클록 신호의 주파수이다(Hz).

ATR 후 비트 길이는 현재 ETU라고 하며, 이것은 파라미터 F 및 D와 클록 주파수의 함수이다. (파라미터 F 및 D는 아래 TA1 문자 섹션에서 자세히 나와있다.)

Current ETU = F/(Dƒ) seconds (Eq.2)

여기서 ƒ는 클록 신호의 주파수이다(Hz).

모든 통신에서 각 문자는 10비트로 구성되며, 결과적으로 10ETU의 길이가 소요된다. 문자의 첫 번째 비트는 시작 비트라고 하며 언제나 로우(low)이다. 시작 비트가 진행되기 전, I/O 라인은 디폴트 하이 상태를 유지한다. 문자의 마지막 비트는 패리티 비트로 소스에 의해 하이 또는 로우로 결정되므로 문자에서 전체 1의 개수는 짝수가 된다. 그림 3에 이러한 비트 패턴이 나와있다.


그림 3. 10비트 문자 프레임

스마트 카드 통신 프로토콜

ISO 7816 규격에서 카드 세션을 위한 통신 프로토콜을 선택할 때에는 4비트가 사용된다. 현재 16개의 가능한 프로토콜 중 T=0 및 T=1이라는 2개의 프로토콜이 사용된다. 두 프로토콜은 모두 하프 듀플렉스(한 번에 한 방향), 비동기 통신이다. T=0 프로토콜은 문자 기반 형식이며, T=1은 블록 기반 형식이다. 모든 EMV 규격준수 스마트 카드는 T=0이나 T=1 프로토콜을 지원해야 하고, 단말기는 두 가지를 모두 지원해야 한다.

카드가 단말기에 삽입되자 마자, 그리고 모든 접촉이 "로우" 상태에 있는 동안 전원 전압이 카드의 VCC 접촉에 인가된다. 단말기가 전압이 안정적이고 지정된 제한 내에 있다는 것을 확인하면, 단말기는 수신 모드에 들어가고 클록 신호가 카드의 CLK 접촉에 인가된다. 200사이클의 클록 신호 초기화 이내에 단말기는 I/O 라인을 수신 모드로 설정하고, 카드는 I/O 라인을 전송 모드로 놓는다. 40,000 ~ 45,000 사이의 클록 주기 이후에 단말기는 카드의 RST 접촉에 액티브 하이 신호를 인가한다. 400 ~ 40,000 클록 주기 후에 카드는 ATR이라고 하는 일련의 문자로 응답한다. ATR에는 T=0 또는 T=1 프로토콜 선택을 포함하여 이후에 통신을 어떻게 수행할지에 대한 정보가 포함된다. 프로토콜이 지정되지 않으면 T=0으로 가정한다. (ATR 및 포함된 정보에 대한 자세한 내용은 아래에서 설명한다.)

ATR (Answer to Reset)

단말기에 의한 초기 리셋이 완료되면 EMV 스마트 카드는 ATR이라고 하는 문자열로 응답한다. 이들 문자는 초기 문자 TS와 최대 32개의 추가 문자로 구성된다. 이들 문자는 함께 단말기에 나머지 세션에서 카드와 통신하는 방법에 관한 정보를 제공한다. 각 문자는 다음 섹션에서 설명한다.

EMV 규격에서 정의하고 있는 프로토콜 T=0에 대한 ATR 내용은 표 2에, 프로토콜 T=1에 대한 내용은 표 3에 나와 있다.

표 2. T=0인 경우 기본 EMV ATR
Character Value Remarks
TS '3B' or '3F' Indicates direct (3B) or inverse (3F) convention.
T0 '6x TB1 and TC1 present, TA1 and TD1 absent; x indicates the number of historical bytes present.
TB1 '00' VPP is not required.
TC1 '00' to 'FF' Indicates the amount of extra guard time required. Value 'FF' has a special meaning. (See TC1 description below.)

표 3. T=1인 경우 기본 EMV ATR
Character Value Remarks
TS '3B' or '3F' Indicates direct (3B) or inverse (3F) convention.
T0 'Ex' TB1, TC1, and TD1 present, TA1 is absent; x indicates the number of historical bytes present.
TB1 '00' VPP is not required.
TC1 '00' to 'FF' Indicates the amount of extra guard time required.
TD1 '81' TA2, TB2, and TC2 absent; TD2 present; T=1 to be used.
TD2 '31' TA3 and TB3 present; TC3 and TD3 absent; T=1 to be used.
TA3 '10' to 'FE' Returns IFSI, which indicates the initial value for the card's information field size and IFSC of 16 bytes to 254 bytes.
TB3 m.s. nibble* '0' to '4'; l.s. nibble '0' to '5' BWI = 0 to 4
CWI = 0 to 5
TCK   Check character. Exclusive ORing of all ATR bytes from T0 to TCK inclusive is null.
*참고: m.s. nibble = 최상위 니블. l.s. nibble = 최하위 니블.

TS 초기 문자
ATR 시퀀스의 첫 번째 문자는 초기 문자, TS로 정의된다. 이 문자는 비트 패턴을 이용하여 정보를 동기화하고 이후의 모든 문자의 극성을 정의한다. TS의 처음 4비트는 1개의 로우 시작 비트, 2개의 하이 비트, 그리고 1개의 추가 로우 비트 순서로 구성된다. 이러한 고정 비트 패턴은 타이밍 동기화를 가능하게 해준다. 다음 3비트가 모두 하이(high)이면 직접 규칙을, 모두 로우(low)이면 반전 규칙을 나타낸다. 직접 규칙에서 I/O 라인의 하이 상태는 로직 1과 같으며 데이터는 최하위 비트부터 전송된다. 반전 규칙에서 I/O 라인의 로우 상태는 로직 1과 같으며 데이터는 최상위 비트부터 전송된다. 규격에서는 반전 규칙이 허용되어 있지만 EMV에서는 현재의 모든 카드 설계에 직접 규칙을 사용할 것을 권장한다. 마지막 3비트는 2개의 로우 비트와 1개의 하이 비트로 이루어진다. 여기에서 또는 기타 다른 10비트 문자 프레임에서 마지막 비트는 패리티 비트로서, 프레임에서 1의 개수를 짝수로 만들기 위해 설정되거나 클리어된다.

T0 형식 문자
ATR 시퀀스의 두 번째 문자는 형식 문자로 정의되며 T0이라고 한다. 이 문자는 두 부분으로 구성되며, 두 부문 모두 나머지 ATR 시퀀스에 포함되는 문자를 결정한다. 최상위 4비트는 Y1이라고 하며, 이들은 TA1, TB1, TC1 또는 TD1을 전송할지 여부를 나타낸다. Y1의 각 로직 1에서 문자의 존재는 각각 다음과 같이 결정된다.

Bit 8 (msb) = 1은 문자 TD1이 전송됨을 나타낸다.
Bit 7 = 1은 문자 TC1이 전송됨을 나타낸다.
Bit 6 = 1은 문자 TB1이 전송됨을 나타낸다.
Bit 5 = 1은 문자 TA1이 전송됨을 나타낸다.

T0의 최하위 4비트는 K라고 한다. 이들 비트는 나머지 ATR 시퀀스에 포함되는 "히스토리컬 바이트"의 숫자(0 ~ 15)를 결정한다. 히스토리컬 바이트는 카드 제조업체, 카드 내부 칩, 칩에 마스킹된 ROM 또는 카드의 수명 상태와 같은 카드에 관한 일반적인 정보를 전달한다. 어떤 정보가 전달되어야 하는지는 ISO 7816이나 EMV 규격에서도 명확히 정의되어 있지 않다.

위의 표 2에서 보듯이 Y1 비트 b7과 b6은 하이이며, 비트 b8과 b5은 로우('6x')이다. 이것은 TC1과 TB1이 전송되며 문자 TA1과 TD1은 전송되지 않는다는 것을 나타낸다(표 참조). 프로토콜 T=0에서는 문자 TB1과 TC1이 기본 ATR 시퀀스를 완성한다. 표 3에서 Y1의 비트 8도 하이이므로, 프로토콜 T=1에서는 문자 TD1도 전송된다..

TA1 문자
문자 TA1은 T=0 또는 T=1 프로토콜을 위한 기본 EMV ATR에서 전송되지 않지만, 기타 통신을 위한 ISO 7816 규격에 정의되어 있다. 사용될 경우 TA1은 상위 니블과 하위 니블로 나누어진다. 상위 니블은 클록 레이트 변환 인수 F를 결정하는데, 이것은 클록 신호의 주파수를 수정하는 데 사용된다. 하위 니블은 ATR 이후의 비트 길이를 조정하는 데 사용할 수 있는 비트 레이트 조정 인수 D를 결정한다. 이러한 파라미터의 사용은 위의 수식 2에 나와 있다. F = 372 및 D = 1의 디폴트 값은 ATR 동안 초기 ETU 값을 위해 사용되며, 기본 ATR을 벗어나도록 변경되지 않는 한 이후의 교환에서도 계속 사용된다.

TB1 문자
TB1 문자는 스마트 카드의 프로그래밍 전압 요구사항에 대한 정보를 전달한다. 비트 b1 ~ b5(PI1)는 프로그래밍 전압을 전달하며, 비트 b6과 b7(II)은 스마트 카드에 필요한 최대 프로그래밍 전류를 전달한다. 기본 ATR에서 TB1 = '00'은 스마트 카드에서 VPP 핀이 연결되지 않았음을 나타낸다.

TC1 문자
TC1 문자는 N의 값을 전달하며, 이 값은 단말기로부터 스마트 카드에 전송되는 연속적인 문자 사이에 추가되는 별도의 가드 시간을 결정한다. 이 값은 카드로부터 단말기로 전송되는 문자나 반대 방향으로 전송되는 2개의 문자에는 적용되지 않는다. N은 별도의 가드 시간으로 추가될 추가 ETU를 나타내는 2진수이다. TC1= 'FF'일 때, 문자 사이에 최소 지연을 사용해야 한다. 프로토콜 T=0에서 이것은 12ETU이며, T=1에서는 11이다. N의 값은 0과 255 사이의 어느 값이나 될 수 있다. TC1이 ATR에서 리턴되지 않으면 단말기는 00의 값이 수신된 것처럼 계속 진행한다. 이 값은 문자 전송 시 시간이 추가될 수 있기 때문에 빠른 트랜잭션을 위해서는 최소화해야 한다.

TD1 문자
TD1 문자는 전송할 인터페이스 바이트가 더 있는지, 있다면 어떠한 프로토콜을 사용할 것인지를 나타낸다. 문자 TD1은 일반 문자 TDx의 지정 인스턴스이다. TDx의 최상위 니블은 TA(x + 1), TB(x + 1), TC(x + 1), TD(x + 1)이 전송될지 여부를 나타낸다. 각 로직 1의 경우, 이후 전송에서 각 문자의 존재는 다음과 같이 결정된다.

Bit 8 (msb) = 1은 문자 TD(x + 1)이 전송됨을 나타낸다.
Bit 7 = 1은 문자 TC(x + 1)이 전송됨을 나타낸다.
Bit 6 = 1은 문자 TB(x + 1)이 전송됨을 나타낸다.
Bit 5 = 1은 문자 TA(x + 1)이 전송됨을 나타낸다.

TD1 문자(TDx 일반)의 최하위 니블은 각각 프로토콜 T=0 또는 T=1을 나타내는 값 0x0 또는 0x1을 포함한다.

프로토콜 T=0이 사용되면, ATR 시퀀스에는 문자 TD1이 포함되지 않으며 이후의 모든 전송에서 프로토콜 T=0이 사용된다. 프로토콜 T=1이 사용되면 TD1이 포함되며 0x81의 값을 포함한다. 이 후자의 값은 TD2가 존재하며 이후의 모든 전송에서 프로토콜 T=1이 사용된다는 것을 나타낸다.

TA2 문자
문자 TA2는 T=0 또는 T=1 프로토콜을 위한 기본 EMV ATR 응답에서 전송되지 않지만, ISO 7816 규격에 정의되어 있다. TA2의 존재 여부는 스마트 카드가 ATR 이후에 각각 지정 모드 또는 협상 모드에서 동작할지 여부를 결정한다. TA2가 존재하지 않는다는 것은 협상 동작 모드가 사용됨을 의미한다.

TB2 문자
문자 TB2는 T=0 또는 T=1 프로토콜을 위한 기본 EMV ATR 응답에서 전송되지 않지만, ISO 7816 규격에 정의되어 있다. 문자 TB2는 스마트 카드에 필요한 프로그래밍 전압의 값을 결정하는 PI2를 전달한다. 문자 TB2가 존재하면 문자 TB1에서 PI1 값이 대체된다.

TC2 문자
문자 TC2는 T=0 또는 T=1 프로토콜을 위한 기본 EMV ATR 응답에서 전송되지 않지만, ISO 7816 규격에 정의되어 있다. TC2가 존재하는 경우 이는 프로토콜 유형 T=0에만 해당된다. TC2는 스마트 카드에 의해 전송되는 임의 문자에서 시작 비트의 리딩 에지와 카드 또는 단말기에 의해 전송되는 이전 문자 시작 비트의 리딩 에지 간의 최대 간격을 결정하는 작업 대기 시간 정수(WI)를 전달한다. 작업 대기 시간의 값은 다음과 같이 나타낼 수 있다.

Work Waiting Time = 960 × D ×WI (Eq.3)

여기서 D는 비트 레이트 조정 인수이다(위 TA1 설명 참조).

TC2가 ATR 시퀀스에 포함되어 있지 않으면, 디폴트로 WI = 0x0A가 사용된다고 가정한다.

TD2 문자
TD2 문자는 TD1 문자와 동일한 기능을 한다. 자세한 내용은 위의 TD1 설명을 참조한다. 표 3의 프로토콜 T=1에서는 TD2가 존재하며 0x31 값을 포함하고 있다. 이 값은 TA3과 TB3이 존재하고 TC3과 TD3은 존재하지 않으며, 프로토콜 유형이 T=1임을 나타낸다.

TA3 문자
TA3 문자는 스마트 카드에 대한 정보 필드 크기 정수(IFSI)를 전달한다. IFSI는 스마트 카드에 대한 정보 필드 크기를 결정하며, 이것은 카드에서 수신할 수 있는 정보 필드 (INF) 블록의 최대 길이이다. 필드 크기는 0x01과 0xFE 사이의 어느 값이나 될 수 있다. 0x0과 0xFF 값은 이후 사용을 위해 남겨진다. 기본 ATR에서 T=1 프로토콜을 사용할 때 TA3은 0x10 ~ 0xFE 범위의 값을 갖는데, 이것은 IFSC가 16 ~ 254바이트 범위에 있음을 나타낸다. TA3을 포함하고 있지 않은 ATR의 경우 단말기는 디폴트 값 0x20을 가정한다.

TB3 문자
TB3 문자는 문자 대기 시간(CWT)과 블록 대기 시간(BWT)을 계산하기 위해 사용되는 문자 대기 시간 정수(CWI)와 블록 대기 시간 정수(BWI)의 값을 나타낸다. TB3(b1 ~ b4)의 최하위 니블은 CWI 값을 나타내며, 최상위 니블(b5 ~ b8)은 BWI 값을 나타낸다. T=1 프로토콜의 기본 ATR에서 TB3 문자는 0 ~ 5 (CWI = 0 ~ 5) 범위의 최하위 니블과 0 ~ 4 (BWI = 0 ~ 4) 범위의 최상위 니블을 갖는다.

TC3 문자
문자 TC3는 T=0 또는 T=1 프로토콜을 위한 기본 EMV ATR 응답에서 전송되지 않지만, ISO 7816 규격에 정의되어 있다. TC3이 존재하는 경우, 이것은 사용할 블록 에러 검출 유형을 나타낸다. TC3이 존재하지 않으면, 디폴트 LRC(longitudinal redundancy check)로 블록 에러 검사가 사용된다.

TCK 문자
TCK 문자는 검사 문자로, ATR에서 전송되는 데이터의 무결성을 검사할 수 있는 값을 갖는다. T0 ~ TCK(포함)에서 모든 바이트의 논리합이 제로인 한, TCK의 값은 어느 값이나 될 수 있다. TCK는 T=0에서는 사용되지 않지만 다른 모든 경우 ATR에서 리턴된다.

ATR 요약
단말기가 ATR 시퀀스에서 마지막 문자를 수신한 후 필요한 파라미터가 카드로부터 단말기로 전송되면, DS8007에서 인터페이스 파라미터에 필요한 모든 조정을 수행할 수 있다. 그런 다음 통신을 시작한다.

APDU (Application Protocol Data Unit)

앞에서 설명했듯이 카드 세션의 다음 단계는 트랜잭션의 실행이다. 트랜잭션 중에 수행되는 특정 동작은 카드와 계정 유형 (신용, 직불 등) 및 사용자의 요구에 의해 결정된다. 특정 동작과 상관없이 트랜잭션은 단말기에서 스마트 카드로 보내는 명령을 통해 이루어진다. 스마트 카드는 요청된 동작을 수행하며 잠재적으로 결과를 통신할 수 있다. 카드의 동작은 메모리 위치를 읽는 간단한 동작에서부터 암호화 동작을 수행하는 복잡한 형태까지 다양하다. 동작과 관계없이 단말기와 카드 간의 통신은 APDU를 통해 수행된다.

애플리케이션을 실행하려면 스마트 카드와 단말기는 정보를 교환해야 한다. 이러한 정보의 공유는 명령-응답 데이터 교환을 통해 이뤄진다. 단말기가 명령을 생성하여 스마트 카드에 전송하면, 스마트 카드는 이 명령을 해석하고 응답을 보낸다. 이 명령-응답 메시지 쌍을 APDU(Application Protocol Data Unit)라고 한다. 단말기에서 전송되는 특정 명령 메시지(C-APDU)는 카드의 특정 응답 메시지와 대응된다(R-APDU). 이들 메시지를 APDU 명령-응답 쌍이라고 한다. EMV 규격에서는 이 두 가지 메시지 유형을 자세히 정의하고 있으며, 그 형식에 대해서는 아래에서 설명한다.

C-APDU 형식
단말기는 모든 명령 APDU를 시작한다. 이 명령은 필수적인 4바이트 헤더와 데이터를 포함할 수 있는 가변 길이 바디 (body) 옵션으로 구성된다. C-APDU에 포함되는 데이터 바이트 수는 명령 바이트 Lc에서 지정된다. 단말기에서 카드의 응답으로부터 수신이 예상되는 바이트 수는 명령 바이트 Le에서 지정된다. 표 4는 C-APDU 형식을 보여주며, 문자는 표 5에 설명되어 있다.

표 4. 명령 APDU 구조
CLA INS P1 P2 Lc Data Le
←Mandatory Header→ ←Conditional Body→

표 5. 명령 APDU 내용 설명
Code Description Length
CLA Class of instruction 1
INS Instruction code 1
P1 Instruction parameter 1 1
P2 Instruction parameter 2 1
Lc Number of bytes present in command date field 0 or 1
Data String of data bytes sent in command (= Lc) Variable
Le Maximum number of data bytes expected in data field of response 0 or 1

명령 APDU의 첫 번째 바이트는 명령 클래스로 정의되며 CLA라고 한다. 이 바이트는 0xFF를 제외한 모든 8비트 값을 취할 수 있다. 그러나 지금은 0과 8의 최상위 니블 값만 사용된다. 0의 값을 갖는 최상위 니블은 산업간 (interindustry) 명령으로 정의되며, 8의 값은 EMV 규격이다.

명령 APDU의 두 번째 바이트는 명령 코드이며 INS라고 한다. 이 바이트는 최하위 비트가 0이고 최상위 니블이 6도 9도 아닐 때에만 유효하다.

필수 헤더의 P1 및 P2 바이트는 특정 명령에 대한 파라미터를 포함하며 임의 값이 될 수 있다. 사용하지 않을 경우 파라미터 바이트 값은 0x00이어야 한다.

R-APDU
스마트 카드는 단말기로부터 APDU 명령을 수신하고 해석한 후 응답을 리턴한다. 규격에 정의되어 있듯이 이 응답은 가변 길이 바디 옵션과 2바이트로 이루어진 필수 트레일러로 구성된다. 이 형식은 표 6에 나와 있으며, APDU 응답의 내용은 표 7에 설명되어 있다.

표 6. APDU 카드 응답 형식
Data SW1 SW2
←Body→ ←Trailer→

표 7. APDU 명령 응답 내용
Code Description Length
Data String of data bytes received in APDU response Var (= Lr)
SW1 Command processing status 1
SW2 Command processing qualifier 1

카드 응답의 예상 길이는 APDU 명령의 Le 코드 부분으로 전송된다. 응답의 실제 길이는 Lr이라고 한다. 카드가 Lr 값을 전송하지 않더라도 애플리케이션에서 필요한 경우 단말기는 값을 계산할 수 있다.

명령의 정상적인 완료를 위해 스마트 카드는 SW1을 0x90로, SW2를 0x00로 리턴한다. 그 밖의 다른 모든 응답은 에러 또는 경고가 발생했음을 뜻한다.²

예제 코드

이 애플리케이션 노트에서 제공되는 소프트웨어는 다운로드 파일 an4029_sw.zip에 포함되어 있다. 이 파일에는 실행 헥사 파일(ds8007.hex)을 생성하는 데 필요한 모든 C (main.c, ds8007.c, LCD_Funct.c) 및 어셈블리 언어 (Startup.a51) 소스 코드가 포함된다. 코드는 Keil PK51 개발자용 킷과 µVision® Integrated Development Environment (IDE)를 사용하여 컴파일하고 링크되었다. µVision 프로젝트 파일 (ds8007.Uv2)도 .zip 파일에 포함되어 있다. .HEX 파일은 Maxim의 DS8007 EV 킷에서 DS8007 스마트 카드 인터페이스 보드상에 로드한 다음 실행하였다. 예제 소프트웨어는 파워 업, ATR, APDU 및 파워 다운 동작을 포함하여 완전한 스마트 카드 세션을 구현한다. 덤 터미널에 연결하면 보드와 소프트웨어는 38,400 속도로 RS-232 직렬 출력을 생성한다. 이 출력은 아래 그림 4에 나와 있다. 소프트웨어에 대한 자세한 설명은 이 애플리케이션 노트의 범위를 벗어나지만, 제공되는 소스 코드는 DS5002 보안 마이크로프로세서와 DS8007 멀티프로토콜 듀얼 스마트 카드 인터페이스 칩을 사용하는 완벽한 스마트 카드 인터페이스의 기본으로 사용할 수 있다.


그림 4. 소프트웨어 출력

예제 소프트웨어를 테스트하기 위해 Advanced Card Systems(ACS)의 마이크로컨트롤러 기반 스마트 카드를 사용하였다. 이 카드는 마이크로컨트롤러 기반 장치로 ACS 스마트 카드 운영 시스템 버전 1(ACOS1) 임베디드 운영 시스템 기능을 실행하며, 다음과 같은 특징이 있다.
  • 애플리케이션 데이터를 위한 8kB EEPROM 메모리
  • ISO 7816-3, T=0 프로토콜 준수
  • DES 및 MAC 기능
  • 난수를 기반으로 하는 세션 키
  • 카드 홀더를 통해 변경할 수 있는 PIN
  • 상호 인증을 위한 키 쌍 (Key pair)
ACOS1 문서는 이 카드가 19바이트의 데이터로 리셋에 응답한다는 것을 보여준다. 그림 4에서 볼 수 있듯이 T0에 대해 리턴된 값은 0xBE이다. 하이 니블(0xB)은 TS와 함께 ATR에 TA1, TB1, TD1이 포함됨을 나타낸다. 로우 니블은 0xE를 포함하고 있으며, 이것은 14개의 히스토리컬 바이트가 ATR 응답에 포함됨을 나타낸다(위의 문자 T0 설명 참조). 따라서 총 19바이트가 카드로부터의 ATR에 포함된다.

이 예제 소프트웨어에서는 1 ADPU, 시작 세션 명령이 실행된다. 이 명령의 형식은 다음과 같다.

CLA INS P1 P2 P3
0x80 0x84 0x00 0x00 0x08

시작 세션 명령에 대한 응답 형식은 다음과 같다.

Data SW1 SW2
RNDc (8 bytes from card) Status Status

그림 4에 보이는 소프트웨어의 출력은 카드로부터 리턴된 난수가 0xCB, 0xC4, 0xBD, 0xD5, 0xA4, 0x7E, 0x36, 0x3F라는 것을 나타낸다. 또 리턴된 상태가 0x90, 0x00이라는 것은 명령이 성공적으로 완료되었음을 뜻한다.

결론

DS8007은 마이크로컨트롤러와 스마트 카드의 인터페이싱을 용이하게 해주는 혼합 신호 주변 장치이다. 이 소자는 2개의 개별적인 스마트 카드에 물리적으로 인터페이싱하는 데 필요한 모든 전기적 신호를 제공한다. 이 소자에는 데이터 통신을 위한 ISO UART뿐 아니라 자동 카드 액티베이션 및 디액티베이션을 제어하는 내부 시퀀서가 포함되어 있다. 또 차지 펌프와 전압 레귤레이터가 내장되어 있어 2.7V ~ 6.0V의 전원 전압으로 동작하면서 동시에 2개의 독립적인 스마트 카드 전원 전압을 생성할 수 있는데, 이 중 하나는 1.8V, 3.0V 또는 5V로 설정할 수 있다. 마이크로컨트롤러와의 통신은 비다중화 구성으로 데이터를 전달하거나 다중화 구성으로 데이터와 어드레스를 전달하는 표준, 병렬 8비트 버스를 통해 수행된다. 제공되는 소프트웨어는 스마트 카드 인터페이스로 DS5002 보안 마이크로프로세서와 DS8007을 사용하여 완벽한 카드 세션을 구현한다. ATR에서 스마트 카드에 의해 리턴되는 문자는 38400 속도 보드의 직렬 포트로 출력되며, 카드에는 "시작 세션" 명령 APDU가 전송된다. 이렇게 발생된 난수도 직렬 포트로 출력된다.

¹ java.sun.com/products/javacard/smartcards.html. 출처: Gartner Group.
² 명령 APDU 응답 에러 또는 경고 상태 코드에 대한 설명은 EMV 규격 Book-1 Part II Section 6에 나와 있다.

이 내용의 중국어 버전이 EDN China 2007년 9월호에 게재되었다.

µVision은 Keil Corporation의 등록상표이다.
EMV는 EMVCo LLC 소유 상표이다. (EMVCo 관련 법적 고지 참조.)
EuroCard는 EuroCard Inc.의 등록상표이다.
MasterCard는 MasterCard International Inc.의 등록상표이다.
VISA는 Visa International Service Association의 등록상표이다.

 

 

 

 

 

 

출처 : http://blog.naver.com/neokcu?Redirect=Log&logNo=90052761039

 

 

 

 

 

 

댓글