Saturday, September 15, 2007

Thai Smart Card

เคยสงสัยมานานแล้วเรื่อง security ของการ์ด smartpurse ที่ใช้ใน 7-eleven ของบริษัทไทยสมาร์ทการ์ด พอมีเวลาเลยลองค้นข้อมูลดู การ์ดที่ใช้เป็น dual interface card คือเป็นทั้ง contact และ contactless ครับ contact ก็จะใช้สำหรับเวลาเติมเงินผ่านเครื่อง terminal หรือเครื่อง ATM เป็นไปตามมาตรฐาน ISO7816 ส่วน contactless ก็ใช้เทคโนโลยี RFID ที่ย่าน 13.56 MHz และเป็นไปตามมาตรฐาน ISO14443 โดยทางบริษัทไทยสมาร์ทการ์ดใช้ชิปของ NXP (Phillips เก่า) รุ่น MIFARE PROX ICs ส่วนตัวการ์ดใช้ของบริษัทเยอรมันชื่อ Giesecke & Devrient GmbH


เนื่องจากเป็นย่าน 13.56 MHz ดังนั้นระยะทำงานก็ต้องใกล้ๆต่ำกว่า 10cm ดังนั้นที่กลัวว่าจะเกิดการผิดพลาดคนอื่นกำลังจะจ่ายเงิน แล้วเครื่องมันเกิดมาอ่านบัตรของเราก็คงจะไม่น่าเป็นไปได้ครับเพราะส่วนใหญ่ เราก็คงจะไม่ถือบัตรของเราไปใกล้ขนาดนั้นตอนที่เรายังไม่จ่ายอยู่แล้ว แต่ที่น่ากลัวคือผมเคยเห็นมีบางคนบอกว่า ถ้าน้องที่ counter เขาเกิดยังไม่ได้ clear หน้าจอของลูกค้ารายที่แล้ว ซึ่งด้วยเหตุอะไรก็แล้วแต่ ที่หน้าจอถึงขั้นที่ต้องจ่ายและรอการเอาบัตรมาจ่อ พอเรากำลังจะเข้าไปจ่ายแล้วบอกว่าจะใช้บัตรแล้วเราเกิดไม่ดูหน้าจอให้ดีก่อน แล้วเอาบัตรไปจ่อเลย เราก็จะเสียเงินให้กับ transaction ที่ค้างอยู่ทันที ซึ่งก็คงกันยากครับ แต่ส่วนใหญ่คนที่จะใช้บัตรอย่างนี้ก็คงสามารถพอที่จะดูให้ดีก่อน

ส่วน เรื่อง security ผมพยายามหารายละเอียดใน web site ของ tsc แต่ไม่พบว่ามีอธิบายอะไรไว้เลยลองศึกษาของที่อื่นที่เขาทำกัน สรุปคร่าวๆว่าจะมีขั้นตอนประมาณนี้ครับ เมื่อเครื่องอ่านพยายามอ่านมาที่ RFID tag ที่อยู่บนบัตร ตัว tag ก็จะตอบกลับไปด้วย serial number และ cryptogram ซึ่งเป็นข้อมูลที่สร้างโดยตัว tag เอง(ข้างใน tag มี microprocessor ของ NXP อยู่) cryptogram นี้ก็จะเปลี่ยนไปเรื่อยๆนะครับเพราะ จะได้มาจากการเอา serial number ของ tag รวมเข้ากับ transaction counter แล้วเอามาเข้ารหัสด้วย private key ของ tag เอง โดยที่ private key นี้ไม่สามารถอ่านได้ครับไม่ว่าโดยวิธีใดๆทั้งสิ้นและจะถูกใส่เข้ามาตั้งแต่ ตอนผลิต tag เลยครับโดยจะเป็นการสร้างมาจาก serial number ของ tag และ master key ขององค์กรเจ้าของ เมื่อ centralized server ได้รับข้อมูล serial number และ cryptogram นี้แล้ว ก็จะสามารถรู้แล้วว่าเป็นบัตรใบไหน และจาก cryptogram ที่ได้รับก็จะทำการใช้ public key decrypt ออกมาเพื่อ verify ว่าเป็นบัตรอันนี้จริง แล้วก็ process transaction ต่อไปได้

ผม ก็คิดว่าบัตร contactless ของทาง tsc ก็คงมีการทำงานในลักษณะใกล้เคียงกับแบบนี้เหมือนกัน ส่วนพวกบัตรของรถไฟฟ้าทั้งบนดินและใต้ดินที่เป็น RFID น่าจะมีการทำงานที่ต่างกันเพราะคงไม่ query เข้ามาที่ centralized server เพราะอาจจะช้าเกินไป ไว้คงต้องหาข้อมูลอีกทีครับ

0 comments:

Post a Comment