Security

แนวทางการยืนยันตัวตนทุกวันนี้สำนักงานและสถานที่ต่างๆ มักใช้บัตร RFID เพื่อยืนยันตัวตนและใช้เข้าออกอาคารต่างๆ กันเป็นเรื่องปกติ แม้บัตรเหล่านี้จะมีความปลอดภัยมากขึ้นกว่าบัตร barcode หรือ QR ที่ไม่มีใครสามารถมองเห็นข้อมูลบนตัวบัตร แต่ในความเป็นจริงแล้วบัตรเหล่านี้มักเป็นการแสดงหมายเลขคงที่ให้กับเครื่องอ่านบัตรเท่านั้น หากคนร้ายรู้หมายเลขนี้ไปได้ไม่ว่าจะเป็นการแอบอ่านบัตรผู้อื่น หรือกระทั่งผู้ถือบัตรเองส่งอ่านข้อมูลในบัตรอย่างจงใจ ก็จะสำเนาบัตรได้โดยง่าย ไม่ว่าจะเป็นบัตร RFID แบบ 125 kHz ที่ได้รับความนิยมมานาน หรือบัตรแบบ NFC 13.56MHz ก็ตาม

กระบวนการยืนยันตัวตนอย่างปลอดภัยในกรณีของการใช้สิ่งของเพื่อยืนยัน (something you have) สิ่งของนั้นควรทนทานต่อการทำสำเนาได้ เพราะไม่เช่นนั้นเราก็จะไม่มีทางรู้ได้เลยว่าตัวตนผู้ใช้บัตรจริงเป็นใคร พนักงานอาจจะสำเนาบัตรให้เพื่อน หรือลูกบ้านในคอนโดอาจจะสำเนาบัตรให้คนเช่าห้องเป็นต้น ในกรณีของวงการธนาคาร บัตรเอทีเอ็มและบัตรเครดิตนั้นเคยผิดพลาดแบบเดียวกันกับบัตร RFID ตามบ้านเช่นเดียวกัน เช่น บัตรเครดิตยุคแรกอาศัยการยืนยันเพียงตัวเลขบัตรปั๊มนูนบนตัวบัตรเท่านั้น เมื่อผู้ถือบัตรส่งบัตรให้ร้านค้า ร้านค้าก็จะนำบัตรไปแนบเข้ากับกระดาษคาร์บอนเพื่อบันทึกเลขบัตร กระบวนการนี้ทำให้การปลอมแปลงบัตรง่ายอย่างยิ่ง และภายหลังธนาคารก็ปรับไปใช้บัตรแม่เหล็กที่มองไม่เห็นข้อมูลอีกต่อไป แต่บัตรแม่เหล็กนั้นก็ยังคงเป็นเพียงข้อมูลตายตัวที่ไม่มีความเปลี่ยนแปลงใดๆ คนร้ายต้องการอ่านข้อมูลเพียงครั้งเดียว

แต่บัตรเครดิตและบัตรเดบิต smartcard แก้ไขปัญหาบัตรแม่เหล็กก่อนหน้าไปทั้งหมด เครือข่ายบัตรเครดิต เช่น Visa, Mastercard, และค่ายบัตรอื่นๆ ล้วนตระหนักดีว่าการใช้ข้อมูลตายตัวไม่สามารถใช้ยืนยันการถือบัตรได้อีกต่อไป บัตร smartcard ที่บัตรเครดิตเหล่านี้ใช้งานจึงพยายามแก้ปัญหาเหล่านี้ทั้งหมด ด้วยการยืนยันตัวตนของบัตรด้วยข้อมูลที่ไม่สามารถสำเนาได้อีก

ภายในบัตรเครดิตของเราไม่ได้เป็นเพียงบัตรที่เครื่องอ่านข้อมูลตายตัวเพียงอย่างเดียว แต่ที่จริงแล้วบัตรเหล่านี้เป็นคอมพิวเตอร์และเครื่องอ่านบัตรไม่ใช่เครื่องอ่าน แต่เป็นจุดเชื่อมต่อที่เราสามารถส่ง package เข้าไปเรียกคำสั่งต่างๆ ได้ ไม่ต่างจากการเชื่อมต่อเว็บเซิร์ฟเวอร์ข้ามโลกนัก โดยคอมพิวเตอร์ในบัตรมีซีพียู, สตอเรจ, หน่วยความจำ แบบเดียวกับในคอมพิวเตอร์ของเรา การส่งคำสั่งเข้าไปยังบัตรนั้นเป็นการส่งข้อมูลไปยังซอฟต์แวร์ภายในตัวบัตรให้ทำตาม API ที่กำหนดไว้ และการเชื่อมต่อมักเป็นฟอร์แมตมาตรฐานเรียกว่า Application Protocol Data Unit (APDU) การเรียกใช้งานซอฟต์แวร์ในบัตรตามคำสั่งทำให้บัตรสามารถเก็บ "ความลับ" ไว้บางส่วนที่เราสามารถอ่านค่าออกมาได้ แม้บัตรจะอยู่ในมือของเราก็ตาม และแนวคิดนี้เป็นกระบวนการสำคัญในการป้องกันการสำเนาบัตร ไม่ว่าจะเป็นบัตรเครดิตหรือซิมการ์ดในโทรศัพท์มือถือก็ตาม

กระบวนการยืนยันตัวตนของบัตรเครดิตนั้น อาศัยกระบวนการเดียวกับการเข้ารหัสเว็บ นั่นคือ Public Key Infrastructure (PKI) โดยเครื่องอ่านบัตรจะมี public key ของเครือข่ายบัตรเครดิตรายต่างๆ เช่น Visa, Mastercard, JCB, UnionPay, AMEX เอาไว้ในเครื่องอ่าน ตัวบัตรเครดิตนั้นจะระบุว่าบัตรใบนี้อ้างอิงถึง root key ใด (ดูรายชื่อ root key ได้ใน EFTLab) จากนั้นจะเปิดให้อ่าน public key ของธนาคารผู้ออกบัตร (Issuer PK, Issuer Exponent) โดยข้อมูลนี้จะถูกเข้ารหัสไว้ด้วย private key ของเครือข่ายบัตรเครดิต การอ่านค่า public key ของธนาคารจริงๆ ต้องถอดรหัสด้วย public key ของเครือข่ายเสียก่อน ตัวบัตรยังเปิดให้อ่านค่า public key ของบัตรเอง (ICC PK, ICC Exponent) ที่เข้ารหัสไว้ด้วย public key ของธนาคารอีกต่อหนึ่ง เมื่อกระบวนการถอดรหัส public key ทั้งหมดสำเร็จ ทำให้ยืนยันได้ว่าบัตรได้รับการรับรองต่อเนื่อง จากเครือข่ายบัตรเครดิตมาสู่ธนาคารและมาสู่ตัวบัตรเอง

กระบวนการยืนยันว่าบัตรที่กำลังแตะอยู่เป็นบัตรที่ออกจากธนาคารจริง เรียกว่ากระบวนการ Combined Data Authentication (CDA) โดยเครื่องอ่านบัตรจะต้องส่งข้อมูลธุรกรรมเข้าไปในตัวบัตรเพื่อขอให้บัตรเซ็นลายเซ็นดิจิทัลออกมา ค่าที่เซ็นนั้นที่จริงแล้วคือการนำธุรกรรมมาแฮชแบบ SHA-1 แล้วเข้ารหัสด้วย private key ที่อยู่ในตัวบัตร เรียกคำสั่งนี้ว่า generate application cryptogram เครื่องอ่านภายนอกสามารถนำ cryptogram นี้มาถอดรหัสด้วย public key ที่บัตรเปิดให้อ่านค่าได้ และเทียบว่าเป็น SHA-1 ของธุรกรรมที่ใส่เข้าไปจริงหรือไม่ หากค่าถูกต้องก็เป็นอันเสร็จสิ้นการยืนยันว่าบัตรอนุมัติธุรกรรมจริง

เนื่องจากค่า public key ของเครือข่ายบัตรเครดิตต่างๆ นั้นเปิดเป็นสาธารณะ แม้จะไม่ได้มีแจกโดยทั่วไปเหมือน root CA ของการเข้ารหัสเว็บก็ตาม ทำให้เราสามารถจำลองการทำงานของเครื่องอ่านบัตร และยืนยันธุรกรรมของบัตรได้แม้จะตัดเงินจริงไม่ได้ก็ตาม เพราะเราไม่สามารถเชื่อมต่อธนาคารได้เหมือนเครื่องรับบัตรเครดิต

แต่การที่เราอ่านและยืนยันบัตรได้ก็ทำให้เราสามารถนำบัตรเครดิตหมดอายุเหล่านี้กลับมาใช้งานในฐานะ "บัตรที่ทำสำเนาไม่ได้" เนื่องจากบัตรเหล่านี้มีความปลอดภัยสูงกว่าบัตร RFID ทั่วไปมาก ดังนั้นหากเรานำกระบวนการยืนยันบัตรไปใช้ เพื่อลงทะเบียนบัตรกับจุดตรวจต่างๆ เช่น การเปิดประตูหรือตู้ต่างๆ ก็นับว่าปลอดภัยกว่า และหากเครื่องอ่านลงทะเบียนบัตรที่เปิดได้ไว้หลายใบก็สามารถยืนยันได้อย่างมั่นใจว่าบัตรใบใดเป็นผู้สั่งปลดล็อก

โค้ด sign_data_contactless.py สาธิตกระบวนการตรวจบัตรผ่านการตรวจสอบบัตรว่าสามารถยืนยันตัวตนได้ เมื่อแตะบัตรกับเครื่องอ่านแล้ว โปรแกรมสร้างธุรกรรมปลอมๆ มูลค่า 1 บาท พร้อมตัวเลขสุ่ม 4 ไบต์เข้าไปให้บัตรเซ็นลายเซ็นดิจิทัล เมื่อตรวจลายเซ็นถูกต้องแล้วก็ยืนยันได้ว่าเป็นบัตรจริง หากเราใช้ค่าสุ่มที่ไม่ซ้ำกันในแต่ละครั้ง และคาดเดาไม่ได้ก็จะปลอดภัยต่อการโจมตีประเภท replay ที่คนร้ายอาจจะพยายามให้บัตรเซ็นธุรกรรมที่เหมือนกันไว้ล่วงหน้า โดยประตูหรือล็อกที่ต้องการยืนยันบัตรเพียงแค่จำค่า public key ของบัตร (ICC PK) เท่านั้น โดยระหว่างทางทดลองนี้พบว่าบัตร Visa ที่ผมมีไม่รองรับคำสั่ง CDA ทำให้การทดลองนี้จำกัดเฉพาะบัตร Mastercard เท่านั้น

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

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

ผมว่าทำอะไรยุ่งยากโดยใช้เหตุ

ODA ประกอบไปด้วย 2 กระบวนการคือ SDA และ CDA ถ้าจะเอาแค่กันบัตรถูกก๊อป ทำ DDA ก็พอไม่ต้องทำ CDA

ส่วน SDA ,static data กัน counterfeit ไม่ได้

อันนี้เจอ caveat ระหว่างทดลอง คือ เวลาเชื่อมต่อกับบัตรผ่านทาง contactless แล้วส่งคำสั่ง INTERNAL AUTHENTICATE ไม่ได้ครับ ต้องเชื่อมผ่าน contact เท่านั้น ผมเลยต้องมาทำ CDA

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

จริงด้วย น่าจะโดนลดรูป ทำเป็นส่วนหนึ่งของ CDA ไป เพราะไปเน้นให้ issuer ตรวจ ARQC

ผมว่า VISA contactless จะไม่เหมือนกัน

ป.ล. contact กับ contactless ต่างกันอยู่ประมาณนึงครับ

zyzzyva Tue, 26/05/2026 - 12:09

บทความนี้ คุณภาพเอาไปตีพิมพ์ในวารสาร computer science ได้เลย ทำไมมาลงให้อ่านฟรีๆ งง

ส่วนตัวคิดว่า ใช้ NFC ในมือถือ
น่าจะดีกว่าเอาบัตรเครดิตเก่ามาทำ เพราะเข้ากับ lifestyle ยุคปัจจุบันที่คนส่วนใหญ่มีมือถือที่มี NFC อยู่แล้ว ไม่ต้องพกบัตรอีกใบ

แบบลงแอปของ นิติฯ ตึก
พอจะเข้าตึกก็เปิดแอป+แตะเพื่อเปิดประตูได้เลย
(อาจมีอ่านลายนิ้วมือบนโทรศัพท์ก่อน แบบแอปธนาคารด้วยก็ได้)

แต่ก็ขอบคุณสำหรับความรู้ครับ

จะว่าไปมือถือ Android ทำได้ทั้งสองทางอยู่แล้วทั้งเอามือถือจำลองบัตรเครดิตผ่านแอปทั้งเอามือถือเป็นเครื่องอ่านบัตรเครดิต น่าจะเขียนมาลองๆ เล่นกันได้โดยไม่ต้องกลัวบัตรโดนล็อค

หรือ API พวกนี้มันต้องขออะไรพิเศษมั้ยนะ

ที่เคยลอง มีบัตรแบบป้องกัน กับ ไม่ป้องกัน
ถ้าแบบไม่ป้องกัน - NFC ของมือถือจะอ่านแล้วเลียนแบบ+ใช้แทนบัตรได้

แต่ถ้าเป็นบัตรแบบป้องกัน - NFC จะอ่านได้แค่ข้อมูลพื้นฐาน แต่จะเลียนแบบไม่ได้

ที่ app wallet อย่าง google wallet, SS wallet ใช้แทนบัตรเครดิตได้
จริงๆ gg, ss ส่งรหัสเสมือนมาให้ NFC ทำตัวเป็นบัตรใบใหม่อีกใบ ซึ่งรหัสจะไม่เหมือน chip บนตัวบัตรจริงๆ, เป็นแค่ผูกบัญชีเข้าด้วยกัน