การทำงานบัตรสมาร์ทการ์ดแบบชิบ EMV

Nopphorn Danchainam
6 min readApr 25, 2019

ปูพื้นฐานการทำงานของ EMV process สำหรับใครที่อยากจะเข้าใจขั้นตอนว่าตั้งแต่เสียบบัตรไปบนเครื่องรูดบัตร จนถึงการอนุมัติบัตรว่าทำงานอย่างไร

การจะประมวลผลบัตรสมาร์ทการ์ด EMV ชิบ มีทั้งหมด 12–13 ขั้นตอน ซึ่งในบางขั้นตอนนั้นอาจจะไม่จำเป็นต้องทำก็ได้เราสามารถมองการประมวลผล EMV เทียบได้กับการคุยกันระหว่างชิบการ์ดบนบัตรและอุปกรณ์เครื่องอ่านบัตรเช่น EDCs, ATMs

ตัวเครื่องอ่านบัตรจะทำหน้าที่ตรวจสอบ 2 รายการผลลัพธ์ที่ได้จากการอ่านชิบบัตรกับเครื่องอ่าน

  1. Terminal Verification Results หรือ TVR
  2. Transaction Status Information หรือ TSI

ทั้งสองรายการคือชุดบิตของข้อมูลที่ถูกเซ็ตเอาไว้เป็น 0 หรือ 1 ขึ้นอยู่กับว่าผลลัพธ์ที่ได้จากการคำนวณในชิบบัตรและเครื่องอ่านเป็นอย่างไร

ระหว่างที่เครื่องกับบัตรคุยกันด้วย EMV ตัวเครื่องจะทำการตรวจสอบผลลัพธ์ TVR ที่ได้ว่าจะตัดสินใจอย่างไรต่อไป เพื่อป้องกันการปลอมแปลงบัตร ส่วนค่า TSI ทำหน้าที่เก็บสถานะรายการที่กำลังประมวลผลว่าถึงขั้นตอนไหน

1. Application Selection ขั้นตอนเลือกโปรแกรม

ขั้นตอนการเลือกโปรแกรมที่จะทำงานบนบัตร ในขั้นแรกตัวเครื่องอ่านจะทำการบูตโปรแกรมบนบัตรเพื่อให้เริ่มทำงาน (card powered up) หลังจากนั้นจะเลือกว่าจะทำงานตามโปรแกรมไหนในบัตร

บัตรชิบ EMV สามารถที่จะใส่โปรแกรมลงบนบัตรได้มากกว่า 1 โปรแกรม เช่นบัตรบางใบสามารถมีแอพพลิเคชั่นจ่ายเงินของ MasterCard และ PromptCard ได้ โดยส่วนใหญ่มักจะแยกด้วยประเภทของการจ่ายเงินเช่นบัตรเดบิตในประเทศ(PromptCard as a local scheme) และแบรนด์ต่างประเทศ(MasterCard as a international scheme) หากเสียบบัตรนี้ในเครื่องอ่านเมืองไทยจะต้องเลือกที่โปรแกรม PromptCard ก่อนเสมอตามกฏธนาคารแห่งประเทศไทย

หากเลือกโปรแกรมที่จะประมวลผลเรียบร้อยแล้ว ตัวบัตรจะทำการส่งชุดข้อมูล Processing Options Data Object List (PDOL) กลับมาให้เครื่องอ่านเพื่อบอกว่าตัวเองจะต้องทำการส่งข้อมูลอะไรต่อไป

2. Initial Application ขั้นตอนเริ่มโปรแกรม

เมื่อจะเริ่มทำการประมวลผลโปรแกรมบนบัตร เครื่องอ่านจะเริ่มเซ็ตค่า Transaction Status Information (TSI) และ Terminal Verification Results (TVR) ให้เป็น 0 ทั้งหมดเป็นค่าเริ่มต้น

TSI มีขนาด 2 byte ซึ่งข้อมูลจะเก็บ bit array คอยเก็บสถานะการประมวลผลโปรแกรม

ตัวอย่าง TSI Byte 2

RFU ย่อจาก “Reserved for Future Use” เป็นค่าที่สงวนไว้ใช้ในอนาคต หากมีการ update spec เพิ่มเติม

TVR มีขนาด 5 byte เก็บเป็น bit array ที่ได้จากการตรวจสอบความเสี่ยง risk check ระหว่างเครื่องอ่านบัตรและชิบในบัตร bit array จะทำหน้าที่บอกว่าจะต้องประมวลผลรายการต่อไปอย่างไรในขั้นตอน “Terminal Action Analysis”

ตัวอย่าง TVR Byte 1

หน้าที่ของเครื่องที่จะตรวจสอบมี 2 อย่าง

  • ตัวบัตร EMV รองรับฟังก์ชั่นอะไรบ้าง?
  • ข้อมูลที่จะทำงานในแต่ละฟังก์ชั่นถูกเก็บอยู่ที่ไหน?

เพื่อที่จะตรวจสอบข้อมูลทั้ง 2 อย่างข้างบนเครื่องอ่านจะส่งคำสั่ง Get Processing Options (GPO) ไปยังบัตร เพื่อตอบข้อมูล Application Interchange Profile (AIP) และ Application File Locator (AFL) กลับมา

AIP มีขนาด 2 byte bit array ที่บอกว่าบัตร EMV ใบนี้รองรับการทำรายอะไรบ้าง และ AFL มีหน้าที่บอกต่ำแหน่งของข้อมูลเพื่อจะทำรายการเหล่านั้นต่อไป

3. Read Application Data ขั้นตอนอ่านข้อมูลโปรแกรม

หลังจากได้ข้อมูลจาก AFL ที่บอกตำแหน่งโปรแกรมอ่านจะส่งคำสั่ง Read Record เพื่อไปอ่านข้อมูลเหล่านั้นจากบัตร

ชุดข้อมูลที่ได้จาก AFL จะประกอบไปด้วย 4 bytes โดยข้อมูล byte แรกคือ Short File Indicator (SFI) ที่เอาไว้อ้างอิงถึงตำแหน่งของไฟล์บนบัตร ซึ่งสามารถมีหลายตำแหน่งได้ในแต่ละชุด

byte ที่ 2 และ 3 จะเก็บตำแหน่งแรกและตำแหน่งสุดท้ายของข้อมูล เช่น หาก AFL อ่านได้เป็น “0E 01 03 02” ชุดข้อมูลนี้จะบอกให้เครื่องอ่านข้อมูล record ที่ 1, 2 และ 3 จากตำแหน่งไฟล์ 0E (ตัวเลขจะอยู่ในรูปแบบข้อมูลฐาน 16 hexadecimal ทั้งหมด)

byte ที่ 4 ทำหน้าที่บอกว่าข้อมูล data authentication จะเก็บที่ record ไหน จากตัวอย่าง “0E 01 03 02” แปลว่าข้อมูลเก็บอยู่ใน record 1,2

4. Data Authentication ขั้นตอนการยืนยันความเป็นบัตรจริง

ขั้นตอนนี้มีความสำคัญคือเพื่อตรวจสอบว่าบัตรที่กำลังประมวลผลนั้นเป็นบัตรของจริง data authentication ไม่จำเป็นต้องเกิดทันทีหลังจากการอ่านโปรแกรมบนบัตร read application data เสมอไป ขั้นตอนนี้จะเกิดระหว่างการทำ read application data และ terminal action analysis ได้

AIP ที่ได้จากการทำ initial application จะทำหน้าที่บอกว่าตัวบัตรรองรับการยืนยันข้อมูลบัตร (Offline Data Authentication) ODA กี่แบบ อะไรบ้าง

ODA ประกอบไปด้วย 3 แบบ

  • Combined Dynamic Data Authentication (CDA)
  • Dynamic Data Authentication (DDA)
  • Static Data Authentication (SDA)

การยืนยันความเป็นบัตรจริงนั้นขึ้นอยู่กับ ประเภทของบัตรที่รองรับ และตัวเครื่องอ่านที่รองรับ เช่น

1. หากทั้งเครื่องอ่านและบัตรรองรับ CDA ตัวโปรแกรมจะทำการยืนยันบัตรด้วย CDA

2. หากทั้งเครื่องอ่านและบัตรรองรับ DDA แต่เครื่องหรือบัตรไม่รองรับ CDA อย่างใดอย่างหนึ่ง โปรแกรมจะยืนยันบัตรด้วย DDA

3. หากทั้งเครื่องอ่านและบัตรรองรับ SDA และบัตรหรือเครื่องไม่รองรับ CDA และ DDA โปรแกรมจะยืนยันบัตรด้วย SDA

หากว่าทั้งบัตรและเครื่องอ่านบัตรไม่รองรับการยืนยันตัวบัตรด้วย ODA ค่า Offline data authentication ไม่ผ่านการตรวจ ตัว bit ODA ใน TVR จะถูกตั้งค่าเป็น 1

ช่วงที่ทำ “read application data” AFL จะระบุข้อมูลที่ใช้ทำ ODA ตัวเครื่องจะใช้ทำการยืนยันตัวตนบัตรตามแบบที่กำหนด หากไม่สามารถยืนยันความเป็นบัตรจริงได้ ค่า bit ใน TVR จะถูกเซ็ตค่าเป็น 1

  • CDA failed bit
  • DDA failed bit
  • SDA failed bit

หลังจากได้ทำขั้นตอนการยืนยันบัตร ODA แล้ว ค่าบิต “Offline data authentication was performed” ใน TSI จะถูกเซ็ตเป็น 1

5. Processing restrictions ขั้นตอนตรวจสอบ กฏข้อจำกัดการใช้งาน

บางบัตร อาจจะมีข้อจำกัดตอนออกบัตรจากธนาคารผู้ออกบัตร เช่นการให้ใช้ หรือห้ามใช้บัตรในบางประเทศ หรือประเภทของร้านค้า หรือบัตรหมดอายุ ฯลฯ

ขั้นตอนการตรวจสอบ กฏข้อจำกัดการใช้งาน ตัวเครื่องอ่านจะตรวจสอบสิ่งเหล่านี้

  • เวอร์ชั่นของโปรแกรมบนบัตร เป็นเวอร์ชั่นเดียวกับบนเครื่ออ่านบัตรหรือไม่
  • ประเภทของรายการที่อนุญาติให้ใช้งาน
  • บัตรไม่หมดอายุ card not expired

Application version number เวอร์ชั่นของโปรแกรม

ทั้งบัตรและเครื่องอ่านบัตรจะมีเวอร์ชั่นของโปรแกรมกำกับอยู่บนทั้งสอง ตัวเวอร์ชั่นจะถูกกำกับด้วย payment scheme เช่น VISA

  • ถ้าบัตรไม่มีเวอร์ชั่นกำกับไว้ ตัวเครื่องจะถือว่าบัตรใช้เวอร์ชั่นตรงกัน
  • ถ้าเลขเวอร์ชั่นตรงกันบัตรกับเครื่องให้ดำเนินการต่อไป
  • ถ้าเลขเวอร์ชั่นไม่ตรงกันค่าบิต “ICC and Terminal have different application versions” จะถูกเซ็ตเป็น 1

Application Usage Control ประเภทที่อนุญาติให้ทำรายการ

ระหว่างที่ทำขั้นตอน “read application data” บัตรจะส่งข้อมูล Application Usage Control (AUC) ขนาด 2 byte bit array เพื่อบอกกับเครื่องอ่านบัตรว่า

  • ทำรายการ domestic cash transaction ได้หรือไม่
  • ทำรายการ international cash transaction ได้หรือไม่
  • ทำรายการ domestic goods
  • ทำรายการ international goods
  • ทำรายการ domestic services
  • ทำรายการ international services
  • ใช้กับ ATMs
  • ใช้กับเครื่องรูดบัตรที่ไม่ใช่ ATMs
  • ยอมให้ทำรายการ domestic cashback
  • ยอมให้ทำรายการ international cashback

เครื่องอ่านจะตรวจสอบว่ารายการนี้ยอมให้ทำรายการหรือไม่กับข้อมูล AUC หากไม่ยอมค่าบิต “Requested service not allowed for card product” ใน TVR จะเซ็ตค่าเป็น 1

Application Effective/Expiration Dates Checking ตรวจสอบวันที่อนุญาติและวันหมดอายุบัตร

ในบางกรณีบัตรจะถูกออกโดยธนาคารผู้ออกบัตรแต่จะยังไม่สามารถใช้งานได้ ซึ่งค่านี้จะถูกกำหนดอยู่บนข้อมูล Application Effective Date ของบัตร

หากบัตรมีข้อมูล Application Effective Date และขณะเวลา วันที่ทำรายการยังไม่ถึง effective date ค่าบิต “Application not yet effective” จะถูกเซ็ตใน TVR

โปรแกรมที่อยู่บนบัตรจะมี expiration date ควบคู่กัน ซึ่งบัตรจะส่งค่า Application Expiration Date ให้กับเครื่องอ่านระหว่างขั้นตอนอ่านข้อมูลโปรแกรม ถ้าหากว่าเวลาหมดอายุยังมาไม่ถึงโปรแกรมจะดำเนินต่อไป หากว่าหมดอายุโปรแกรมบนเครื่องอ่านสามารถสั่งหยุดทำงานได้ หรือจะทำงานต่อไปและเซ็ตค่าบิต Expired Application ใน TVR เป็น 1

6. Card Holder Verification ขั้นตอนตรวจสอบความเป็นเจ้าของผู้ถือบัตร

EMV มีขั้นตอนการตรวจสอบความเป็นเจ้าของผู้ถือบัตร โดยเรียกขั้นตอนนี้ว่า Cardholder Verification Methods (CVMs) โดยมีวิธีการตรวจสอบเจ้าของบัตรหลายวิธีเช่น

  • Online PIN
  • Offline Enciphered PIN
  • Offline Plaintext PIN
  • Signature
  • No-CVM

ในแต่ละวิธีมีขั้นตอนที่แตกต่างกันในรายละเอียด โดย Online PIN ถือว่ามีความปลอดภัยสูงสุดเพราะต้องส่งข้อมูลบัตรควบคู่กับหมายเลข PIN ที่ผู้ถือบัตรทราบไปยังธนาคารผู้ออกบัตรเพื่อตรวจสอบ ในขณะที่ No-CVM คือไม่มีการตรวจสอบความเป็นเจ้าของบัตรอยู่เลย กรณีที่บัตรและเครื่องอ่านได้มีการทำ CVM ใด ๆ ค่า bits ใน CVM processing จะถูกเซ็ตใน TVR และ TSI ดังตัวอย่างค่าบิตใน TVR ดังนี้

  • Cardholder verification was not successful
  • Unrecognised CVM
  • PIN Try Limit exceed
  • PIN entry required and PIN pad not present or not working
  • PIN entry required, PIN pad present, but PIN was not entered
  • Online PIN entered

หากว่าขั้นตอนตรวจสอบความเป็นเจ้าของผู้ถือบัตรได้ผ่านไปแล้ว ค่าบิต TSI “Cardholder verification was performed” จะถูกเซ็ตเป็น 1

7. Terminal Risk Management ขั้นตอนประเมินความเสี่ยงของรายการ

เป้าหมายของขั้นตอนประเมินความเสี่ยงของรายการคือเพื่อป้องกันการปลอมแปลงรายการและการฉ้อโกง ความเสี่ยงการชำระเงินสามารถลดลงได้โดยการส่งรายการนั้นไปขอนุมัติกับธนาคารเจ้าของบัตร (issuer) โดยการจะประเมินว่าจะส่งไปตรวจสอบขออนุมัติหรือไม่ เครื่องอ่านจะตรวจสอบ 3 สิ่งคือ

1. รายการสูงกว่า offline floor limit

2. ต้องการสุ่มรายการเพื่อส่งขออนุมัติ online

3. บัตรไม่เคยส่งรายการ online มาเป็นระยะเวลาหนึ่ง

หากขั้นตอนประเมินความเสี่ยงของรายการได้ถูกกระทำ TSI บิต “Terminal risk management was performed” จะถูกเซ็ตเป็น 1

Floor limit checking

หากมูลค่าธุรกรรมเกิน floor limit ที่ถูกกำหนดไว้บนเครื่องอ่านบัตร “Transaction exceeds floor limit” บิตใน TVR จะถูกเซ็ตเป็น 1

Random transaction selection

เครื่องอ่านสามารถสุ่มเลือกรายการเพื่อทำ online ได้ โดยรายการที่ถูกกระทำจะ เซ็ตค่า “Transaction selected randomly for online processing” บิตใน TVR จะเซ็ตค่าเป็น 1

Velocity checking

หากบัตรไม่ได้มีการทำรายการ online มาเป็นเวลานาน ตัวบัตรมีความเสี่ยงที่จะถูกจารกรรมหรือนำไปใช้ฉ้อโกงได้ เพื่อแก้ปัญหานี้ บัตรจะมีค่าตัวแปร Lower Consecutive Offline Limit (LCOL) และ Upper Consecutive Offline Limit (UCOL) เก็บไว้

หากว่าค่า LCOL และ UCOL ได้ถูกส่งไปให้กับเครื่องอ่านบัตร ตัวเครื่องมีหน้าที่ตรวจสอบ velocity checking

เครื่องอ่านบัตรจะส่งคำสั่ง Application Transaction Counter (ATC) และ Last Online ATC Register ด้วยคำสั่ง “GET DATA”

ATC คือตัวนับค่าที่จะเพิ่มขึ้น 1 เมื่อมีการทำธุรกรรมเกิดขึ้น Last Online ATC Register คือค่าสุดท้ายที่ ATC ส่งขึ้น Online ส่วนต่างที่เกิดขึ้นจะเท่ากับจำนวนรายการที่ได้ทำ offline

  • หากส่วนต่างมากกว่าค่า LCOL ที่ตั้งไว้บิต “Lower consecutive limit exceeded” ใน TVR จะเซ็ตเท่ากับ 1
  • หากส่วนต่างมากกว่า UCOL บิต “Upper consecutive limit exceeded’ ใน TVR จะเซ็ตเท่ากับ 1
  • หากค่า Last Online ATC Register เป็น 0 ค่าบิต “New card” ใน TVR จะเซ็ตเท่ากับ 1

8. Terminal action analysis ขั้นตอนการประเมินผลด้วยเครื่องอ่านบัตร

หลังจากที่ผ่านระบวนการประมวลผลเซ็ตค่า TVR ได้มาแล้ว สิ่งที่เกิดต่อมาคือเครื่องอ่านจะใช้ค่า TVR ที่ได้มาตัดสินใจว่าจะทำอย่างไรต่อไป จะตัดสินใจที่จะยกเลิกรายการนี้ ยอดอนุมัติรายการโดยตัดสินใจแบบ Offline หรือจะอนุมัติรายการแบบ Online

ขั้นตอนนี้เป็นการตัดสินใจเบื้องต้น ตัวเครื่ออ่านบัตรจะต้องมีการยืนยันรายการกับบัตรอีกครั้งหนึ่ง ซึ่งบัตรมีสิทธิ์ที่จะตัดสินใจอีกครั้งในขั้นตอน “card action analysis” ทั้งเครื่องอ่านและตัวบัตรเองจะมีการตั้งค่า การตัดสินใจที่จะทำรายการต่อบนข้อมูล TVR ที่ได้ ค่าที่ใช้ในการตั้งค่าบนบัตรเรียกว่า Issuer Action Codes (IAC) และบนเครื่องอ่านเรียกว่า Terminal Action Coes (TAC)

ทั้ง IACs และ TACs จะมีค่าอยู่ทั้งหมด 3 ชุด

  1. TAC/IAC Denial
  2. TAC/IAC Online
  3. TAC/IAC Default

ซึ่งขนาดข้อมูลที่ใช้ตั้งค่า IAC/TAC จะมีขนาด 5 byte bit arrays เทียบเท่ากับ TVR

Denial Action Codes

ขั้นแรกของการทำ “terminal action analysis” คือบวกค่า TAC และ IAC เข้าด้วยกันเช่น

IAC: 00110011 00000000 00000000 00000000 00000000
TAC: 01010101 00000000 00000000 00000000 00000000
Result: 01110111 00000000 00000000 00000000 00000000
ด้วยการใช้ OR operation

หากตัวอย่างข้างบนคือ denial action codes ผลลัพธ์ที่ได้จะเอาไปเปรียบกับ TVR หากค่า bit ไหนตรงกัน ตัวเครื่องอ่านบัตรจะดำเนินการปฏิเศษรายการนั้น เช่น

Result: 01110111 00000000 00000000 00000000 00000000
TVR: 10010000 00000000 00000000 00000000 00000000

จากตัวอย่าง bit ที่เป็น denial action codes และ TVR ที่ได้นั้นตรงกัน ซึ่งเท่ากับว่าเครื่องอ่านจะปฏิเศษการทำรายการนั้น

หากผลลัพธ์ที่ได้ระหว่าง TVR และ Denial action codes ไม่ตรงกัน เครื่องอ่านจะเปรียบเทียบกับ Online action codes กับ TVR ต่อไป

Online Action Codes

หากผลลัพธ์ online action codes กับ TVR ที่ได้ตรงกัน เครื่องอ่านจะดำเนินการส่งรายการ transaction นี้ขึ้นขออนุมัติกับธนาคารเจ้าของบัตร

หากผลลัพธ์ที่ได้ระหว่าง TVR และ Online action codes ไม่ตรงกัน เครื่องอ่านจะทำการอนุมัติรายการแบบ Offline

Default Action Codes

หากว่าเครื่องอ่านต้องการอนุมัติรายการแบบ Online แต่ไม่สามารถดำเนินการได้เช่นเครื่องไม่สามารถเชื่อมต่อเครือข่ายได้ เครื่องจะเช็คกับ default action codes และ TVR

หากมี bit ที่ตรงกันของ default action codes และ TVR ตัวเครื่องอ่านจะปฏิเศษการทำรายการ

หากไม่มี bit ที่ตรงกัน เครื่องอ่านจะขอนุมัติรายการแบบ Offline

9. Generate application cryptogram ขั้นตอนการขอสร้างรหัสธุรกรรมของรายการ

ไม่ว่าเครื่องจะดำเนินการตัดสินใจอย่างไร ตัวเครื่องจะต้องขอยืนยันการทำธุรกรรมนั้นกับบัตร ซึ่งมีสิทธิ์ที่ตัวบัตรจะปฏิเศษหรือเห็นต่างกับเครื่องได้

ตัวเครื่องจะส่งการยืนยันรายการโดยใช้คำสั่ง Generate Application Cryptogram (generate AC) ในคำสั่งจะส่งข้อมูลรายการเพื่อขอ อนุมัติแบบออนไลน์ อนุมัติแบบออฟไลน์ หรือปฏิเสธรายการก็ได้ เพื่อให้บัตรใช้ในขั้นตอน “card action analysis” ต่อไป

10. Card action analysis ขั้นตอนการประเมินผลด้วยบัตร

ขั้นตอนนี้เริ่มขึ้นหลังจากเครื่องได้ส่งคำสั่ง Generate AC มายังบัตรแล้ว ตัวบัตรจะทำการประเมินผลโดยวิเคราะห์ว่าจะอนุมัติรายการนี้หรือไม่ภายในโปรแกรมของบัตรเอง หลังจากได้ผลลัพธ์แล้วจะส่งผลลัพธ์ออกมาในรูปแบบของรหัสธุรกรรม (cryptogram)

ซึ่งมีผลลัพธ์ของรหัสธุรกรรมเป็นไปได้อยู่ 3 แบบคือ

  • Transaction approved: Transaction Certificate (TC)
  • Request online approval: Authorization ReQuest Cryptogram (ARQC)
  • Transaction declined: Application Authentication Cryptogram (AAC)

ผลลัพธ์ที่ได้ของขั้นตอน card action analysis คือข้อมูลธุรกรรมพร้อม TC, ARQC หรือ AAC เครื่องอ่านจะตั้งค่าบิต “Card risk management was performed” ใน TSI เท่ากับ 1

อะไรคือรหัสธุรกรรม (cryptogram)

รหัสธุรกรรม คือ การทำรหัสวิทยาของธุรกรรมด้วยฟังก์ชั่นแฮช (cryptographic hash) ซึ่งคนที่จะสามารถตรวจสอบผลลัพธ์จะต้องมี keys ซึ่งจะถูกเก็บไว้เฉพาะในบัตรและธนาคารเจ้าของบัตรเท่านั้นจึงสามารถตรวจสอบรายการนี้ได้

ทำไมต้องมีรหัสธุรกรรม

เพราะรหัสธุรกรรมมีข้อมูลของการตัดสินใจของบัตรไม่ว่าจะอนุมัติรายการ ขอทำออนไลน์ หรือปฏิเสธรายการ ซึ่งจะไม่สามารถปลอมแปลงได้ เพราะจะไม่มีใครสามารถแกะผลลัพธ์นี้ได้นอกจากธนาคารเจ้าของบัตรเท่านั้น (ด้วยความก้าวหน้าของรหัสวิทยาในปัจจุบันที่หากจะแกะผลลัพธ์และปลอมแปลงจะต้องใช้การลงทุนและเวลาที่สูงมาก)

เมื่อบัตรส่ง TC ออกมา ธนาคารผู้รับบัตรจะมีหน้าที่นำ TC นั้นส่งต่อไปยังธนาคารเจ้าของบัตรเพื่อให้เจ้าของบัตรอนุมัติวงเงินเพื่อตัดเงินต่อไป

Offline/Online Decision

หากเครื่องได้รับ ARQC จากบัตร เครื่องอ่านจะมีหน้าที่ต้องส่งต่อรายการนั้นเพื่อขออนุมัติออนไลน์ต่อไป หากเครื่องได้รับ TC หรือ AAC รายการนั้นสามารถจบด้วยการอนุมัติแบบ Offline หรือ ปฏิเสธแบบ Offline ก็ได้

11. Online processing & Issuer authentication ขั้นตอนการขออนุมัติ Online

ขั้นตอนนี้เมื่อเครื่องอ่านส่งรหัสธุรกรรม ARQC ไปยังธนาคารเจ้าของบัตร หน้าที่ของธนาคารคือตรวจสอบรหัสธุรกรรมว่าถูกต้องหรือไม่ และไม่ได้เกิดจากการปลอมแปลงขึ้นมา จากนั้นธนาคารผู้ออกบัตรมีหน้าที่ประเมินความเสี่ยงและตรวจสอบว่าผู้ถือบัตรมีวงเงินเพียงพอที่จะให้ตัดเงินหรือไม่ ธนาคารสามารถเลือกที่จะอนุมัติรายการหรือปฏิเศษรายการนั้น ๆ ได้ แล้วจากนั้นจึงทำการส่งผลลัพธ์กลับมาในรูปแบบของรหัสวิทยาไปให้บัตร และบัตรจะทำการตรวจสอบอีกครั้งว่าผลลัพธ์ที่ได้มาจากธนาคารเจ้าของบัตรจริง ๆ โดยเช็คว่า hashing ถูกต้องหรือไม่

ตัวบัตรจะมีการบอกกับเครื่องอ่านว่าตัวเองรองรับการยืนยันธนาคารเจ้าของบัตรด้วย issuer authentication ใน AIP หากบัตรรองรับ รหัสธุรรกรมที่ได้กลับมาจะส่งผ่านเครื่องด้วยคำสั่ง External Authenticate หากข้อมูลที่ได้ตรวจสอบกับบัตรไม่ถูกต้อง ค่าบิต “Issuer Authentication failed” ใน TVR จะเซ็ตเป็น 1

หากขั้นตอนการยืนยันธนาคารเจ้าของบัตรได้ถูกกระทำ ค่าบิต TSI “Issuer authentication was performed” จะถูกเซ็ตเป็น 1

12. Issuer script processing ขั้นตอนการขอเขียนข้อมูลลงบัตรจากธนาคารเจ้าของบัตร

ในบางกรณีธนาคารเจ้าของบัตรมีความต้องการที่จะส่งข้อมูลกลับมาเพื่อให้เครื่องอ่านดำเนินการส่งข้อมูลกลับไปยังบัตรเพื่อดำเนินการบันทึก ซึ่งขั้นตอนนี้เรียกว่า issuer script processing ขั้นตอนนี้สามารถเกิดได้หลังจากการขออนุมัติรายการ หรือการส่งคำสั่ง 2nd generate AC

หากมีการทำเขียนข้อมูลลงบัตรจากธนาคารเจ้าของบัตร เครื่องจะเซ็ตบิต TSI ใน “Script processing was performed” บิตเป็น 1

หาก issuer script ไม่สามารถทำงานได้

  • ทำงานไม่ได้ก่อนการส่งคำสั่ง 2nd generate AC ค่าบิต TVR “Script processing failed before final GENERATE AC” จะเซ็ตเป็น 1
  • ทำงานไม่ได้หลังการส่งคำสั่ง 2nd generate AC ค่าบิต TVR “Script processing failed after final GENERATE AC” จะเซ็ตเป็น 1

13. Completion ขั้นตอนสุดท้าย

หากรายการถูกส่งขออนุมัติ Online ผลลัพธ์รหัสวิทยา cryptogram ที่ได้กลับมาจะส่งกลับไปยังบัตรด้วยคำสั่ง Generate AC เป็นครั้งที่สอง เป็นการจบการทำรายการหากไม่มี issuer script

Ref: https://www.quora.com/Step-by-step-How-does-a-EMV-contact-card-payment-work
Ref: https://en.wikipedia.org/wiki/Terminal_verification_results
Re: https://www.emvco.com/

--

--

Nopphorn Danchainam

Working each and everyday to help other growth their business