กรุณาปิด โปรแกรมบล๊อกโฆษณา เพราะเราอยู่ได้ด้วยโฆษณาที่ท่านเห็น
Please close the adblock program. Because we can live with the ads you see


News

ข่าว นำบัตรเครดิต MasterCard หมดอายุ มายืนยันตัวตนแบบปลอดภัยกว่า ด้วย Public-Private Key ในบัตร

  • ผู้เริ่มหัวข้อ ผู้เริ่มหัวข้อ News 
  • วันที่เริ่มต้น วันที่เริ่มต้น

News 

Moderator

สมาชิกทีมงาน
Moderator
Verify member
เข้าร่วม
1 มิถุนายน 2011
ข้อความ
16,646
คะแนนปฏิกิริยา
0
คะแนน
36
นำบัตรเครดิต MasterCard หมดอายุ มายืนยันตัวตนแบบปลอดภัยกว่า ด้วย Public-Private Key ในบัตร
Body

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

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

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

นำบัตรเครดิต MasterCard หมดอายุ มายืนยันตัวตนแบบปลอดภัยกว่า ด้วย PublicPrivate Key ในบัตร-1.png

ภายในบัตรเครดิตของเราไม่ได้เป็นเพียงบัตรที่เครื่องอ่านข้อมูลตายตัวเพียงอย่างเดียว แต่ที่จริงแล้วบัตรเหล่านี้เป็นคอมพิวเตอร์และเครื่องอ่านบัตรไม่ใช่เครื่องอ่าน แต่เป็นจุดเชื่อมต่อที่เราสามารถส่ง 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 ทั่วไปมาก ดังนั้นหากเรานำกระบวนการยืนยันบัตรไปใช้ เพื่อลงทะเบียนบัตรกับจุดตรวจต่างๆ เช่น การเปิดประตูหรือตู้ต่างๆ ก็นับว่าปลอดภัยกว่า และหากเครื่องอ่านลงทะเบียนบัตรที่เปิดได้ไว้หลายใบก็สามารถยืนยันได้อย่างมั่นใจว่าบัตรใบใดเป็นผู้สั่งปลดล็อก

นำบัตรเครดิต MasterCard หมดอายุ มายืนยันตัวตนแบบปลอดภัยกว่า ด้วย PublicPrivate Key ในบัตร-2.png

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

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

lew Tue, 26/05/2026 - 00:16

Continue reading...
 

กรุณาปิด โปรแกรมบล๊อกโฆษณา เพราะเราอยู่ได้ด้วยโฆษณาที่ท่านเห็น
Please close the adblock program. Because we can live with the ads you see
กลับ
ยอดนิยม