기술 포스트
EMV 개발 가이드, 2부
이전 이 포스트의 1부에서는 EMV 트랜잭션의 개념과 구조에 대해 간략히 살펴보았습니다. 주요 내용은 다음과 같습니다.
- MSR(마그네틱 스트라이프) 트랜잭션과 달리, EMV 트랜잭션은 여러 단계에 걸쳐 진행됩니다.
- 칩 카드와 리더기 간의 대부분의 통신은 커널 수준에서 이루어지며, 애플리케이션 로직의 제어 범위 밖에 있습니다.
- 트랜잭션 결과는 TLV("태그") 형식으로 반환됩니다.
- 트랜잭션의 완료 단계 이전에 암호문(cryptogram) (카드만 알고 있는 개인 키를 사용하여 카드가 생성하는 고유한 8바이트 데이터)이 생성되며, 두 번째 암호문은 그 이후에 생성됩니다. 이후 거래를 완료하기 위한 호출.
- 암호문은 태그 9F26(ID TECH 전용 태그가 아닌 EMVCo 정의 태그)에 담겨 카드로부터 반환됩니다.
일반적으로 첫 번째 암호문(및 백엔드 프로세서가 요구하는 기타 TLV 데이터)을 패키징하여 실시간으로 프로세서에 전송하고, 완료(Completion) 단계 호출 전에 태그 89의 승인 코드를 받아야 합니다. 온라인 승인 요청은 리더기나 SDK가 대신 처리하지 않으므로, 게이트웨이의 웹 API를 이용해 직접 수행하셔야 합니다. 대부분의 게이트웨이는 이 과정을 간소화하기 위한 자체 SDK를 제공합니다.
게이트웨이(또는 "백엔드 프로세서")는 승인 요청에 대해 태그 89, 8A, 91, 그리고 선택적으로 71 또는 72를 포함한 응답을 반환합니다. 거래를 완료하려면 이 TLV들을 Universal SDK의 emv_completeTransaction() 메서드에 전달합니다. 처리 결과는 콜백을 통해 코드에 전달되며, 콜백에서 거래 데이터 핸들을 받게 됩니다. 이 데이터에는 여러 TLV가 포함되어 있으며, 그중에는 앞서 언급한 두 번째이자 최종 암호문도 포함됩니다. 이 역시 태그 9F26에 담겨 있습니다.
암호문 유형
태그 9F26에 반환되는 암호문은 불투명(opaque)합니다. 즉, 암호문을 직접 확인하더라도 종류를 알 수 없습니다. 그러나 9F26과 함께 반환되는 태그 9F27을 확인하면 암호문의 유형을 파악할 수 있습니다. 9F27의 상위 니블(nibble)에 필요한 정보가 담겨 있으며, 각 비트는 다음과 같이 해석됩니다(이 정보는 EMV Book 3):
일반적으로 9F27은 16진수 값 80, 40, 또는 00을 가지며, 이는 각각 ARQC, TC, AAC를 의미합니다. 다시 말해, "온라인 처리," "승인," 또는 "거절"을 나타냅니다.
이 값들은 카드의 권고. 이 권고가 항상 구속력을 갖는 것은 아닙니다. 예를 들어, 원래 암호문이 ARQC였으나 결제 앱이 온라인 연결에 실패한 경우, 카드는 반드시 두 번째 암호문(완료 단계)에서 AAC를 반환해야 합니다. 이 경우 AAC가 자동으로 거래 거절을 의미하지는 않으며, 최종 결정은 온라인 기관(궁극적으로는 발급사)에 달려 있습니다. QuickChip(또는 Faster EMV)으로 알려진 특수한 EMV 시나리오에서는 온라인 요청이 이후에 이루어지기 때문에 항상 AAC를 받게 됩니다. 이는 정상적인 상황입니다! 결제 정산을 위해 거래를 계속 제출할 수 있습니다. 카드의 권고는 단순히 권고에 불과합니다. 최종 결정은 온라인 기관이 내립니다.
미국(온라인 전용 시장으로 간주됨)에서는 첫 번째 암호문에서 거의 항상 ARQC를 받게 됩니다. 예외적으로 카드가 만료되었거나 거래를 즉시 거절해야 할 다른 사유가 있는 경우, 첫 번째 "Gen AC" 요청 이후 이론상 AAC가 반환될 수 있습니다.
TLV 데이터 수집
Universal SDK는 USB, RS-232, 블루투스, 오디오 잭, 이더넷 등 리더기 유형에 맞는 방식으로 ID TECH 리더기와의 통신을 대신 처리합니다. 리더기와의 모든 거래 관련 통신은 비동기 방식으로 이루어지므로, 리더기로부터 응답을 받으려면 SDK에 하나 이상의 커스텀 콜백 루틴을 등록해야 합니다. 이에 대한 안내는 SDK 문서뿐만 아니라 SDK에 포함된 샘플 코드에서도 확인할 수 있습니다. 콜백 사용 방법은 어렵지 않습니다. SDK 샘플 코드를 충분히 학습하여 전체 흐름을 파악하시기 바랍니다.
중요한 점은 EMV 거래가 단계별로 진행되며, 각 단계가 끝날 때마다 서로 다른 TLV 데이터를 받는다는 것입니다. 완료 단계가 끝나면 필요한 모든 태그를 한 번에 받을 수 있다고 오해하는 경우가 많습니다. 그러나 이는 사실이 아닙니다. TLV는 각 단계.
각 단계에서 어떤 태그를 받을 수 있을까요? 다음은 거래 단계별로 가장 일반적인 태그 목록입니다:
거래 시작:
4F
50
57
5A
5F20
5F24
5F25
5F2D
5F34
84
9F20
DFEE12
DFEE23
거래 인증:
95
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
트랜잭션 완료:
95
99
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
9F5B
이 태그들의 거의 대부분은 EMVCo에서 표준으로 정의한 태그입니다. 'DF'로 시작하는 태그는 ID TECH 독자 규격 태그입니다. ID TECH 독자 규격 태그 및 그 의미에 대한 전체 목록은 문서 80000503-001, ID TECH TLV Tag Reference Guide를 참조하시기 바라며, 해당 문서는 당사 지식 베이스.
필요한 태그가 보이지 않으십니까? 문제없습니다. Universal SDK를 사용하여 트랜잭션 시점에 추가 태그를 요청할 수 있습니다. 이에 대한 자세한 내용은 SDK 문서뿐만 아니라 EMV Transactions with the Universal SDK.
암호화되는 태그는 무엇인가요?
리더기에 키가 주입되어 있고 암호화가 활성화된 경우, 민감한 데이터가 포함된 태그는 그 내용이 암호화됩니다. 여기에는 트랙 데이터(예: 태그 57) 또는 PAN 데이터(5A)가 포함된 태그가 당연히 포함됩니다. 암호화된 태그의 전체 목록은 문서 80000502-001-F, ID TECH Encrypted Data Output. 데모 유닛(데모 키가 주입된 장치)을 사용 중이라면, 당사의 온라인 도구를 통해 데이터를 직접 복호화할 수 있습니다. 다만 일반적으로 프로덕션 코드에서는 데이터를 결제 처리사에 그대로 전달하면 되므로, 직접 복호화할 필요가 없습니다.
암호화는 방대한 주제입니다. 지금 당장 자세히 다루지는 않겠지만, 관심이 있으시다면 이 주제를 다룬 당사의 이전 게시물 을 참고하시기 바랍니다.
궁금한 점이 있으신가요?
지금쯤 궁금한 점이 많이 생기셨을 것입니다. 걱정하지 마세요! 당사 지식 베이스, 그래도 궁금한 점이 있으시면 저희 기술 전문가들이 전화 한 통이면 바로 도움을 드립니다.
