Programmer with anxiety

Life is always under maintenance

ระบบพิสูจน์และยืนยันตัวตนดิจิทัลของประเทศไทย

Sunday, October 14, 2018, 03:30 PM

ประมาณปลายๆปีนี้ประเทศไทยจะมีระบบการพิสูจน์และยืนยันตัวตนทางดิจิทัลออกมาให้เราๆท่านๆใช้กัน (กำหนดการที่ผมได้ยินมา ซึ่งน่าจะยังไม่ยืนยันและยังไม่เป็นทางการ)

ซึ่งโปรเจคนี้มีตัวย่อที่ทีมทำงานเรียกกันเองว่า NDID

เว็บหลักอย่างเป็นทางการ หรือ เฟสบุ๊คเพจของโครงการ

ผมเองอาจจะอธิบายได้ไม่ดีเท่าไหร่นัก เลยอยากแนะนำให้ดูวีดีโอที่พูดในงาน TEDx ที่เชียงใหม่ (~15 นาที) โดย ดร.ภูมิ ภูมิรัตน ซึ่งเป็นหนึ่งในคณะออกแบบทางเทคนิคของระบบนี้

ภาพรวมของระบบ

ระบบนี้มีเป้าหมายเพื่อนำตัวตนของของประชาชนขึ้นระบบดิจิทัล ซึ่งข้อดีก็คือการที่เราจะสามารถได้รับการแจ้งเตือนแบบ real time เมื่อมีการนำ “ตัวตน” ของเราไปทำธุรกรรม

และเพื่อขอความยินยอม (consent) หรือเพื่อให้เราปฏิเสธธุรกรรมทันทีหากธุรกรรมที่แจ้งเตือนนั้นเราไม่ได้เป็นคนขอทำ

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

ผู้เกี่ยวข้องที่ต้องเชื่อมต่อกับระบบนี้ แบ่งเป็นสามกลุ่มคือ

  • RP (Relying Party)
    • องค์กรที่บุคคลต้องการทำธุรกรรมด้วย
  • IdP (Identity Provider)
    • องค์กรที่ทำหน้าที่พิสูจน์และยืนยันตัวตนให้กับบุคคลที่กำลังจะทำธุรกรรมกับ RP
    • รวมถึงการขอ consent หรือปฏิเสธการทำธุกรรมจากบุคคลนั้นๆ
  • AS (Authorative source)
    • องค์กรที่ทำหน้าเก็บรักษาข้อมูลของบุคคล และจะส่งมอบข้อมูลให้ RP หากบุคคลยินยอม

ซึ่งองค์กรหนึ่งๆสามารถสวมบทบาทมากกว่า 1 บทบาทได้ เช่น ธนาคารหนึ่งๆอาจจะเป็นบทบาททั้งสามบทบาทเลย

ตัวอย่างการใช้งาน

ผมต้องการเปิดบัญชีกับธนาคาร x ที่ไม่เคยมีบัญชีมาก่อน แต่ผมมีบัญชีกับธนาคาร y

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

เมื่อผมขอเปิดบัญชีกับธนาคาร x เพื่อความสะดวก ธนาคาร x สามารถอาศัยขั้นตอนพิสูจน์และยืนยันตัวตนที่ผมได้ทำไปแล้วกับธนาคาร y ได้

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

จากกรณีนี้ ธนาคาร x คือ RP ธนาคาร y คือ IdP

และถ้าหากธนาคาร x ต้องการข้อมูลของผมเพิ่มเติมนอกเหนือจากการยืนยันตัวตน ก็สามารถระบุไปในคำขอ consent ได้

ตัวอย่างเช่นธนาคาร x ต้องการ bank statement จากธนาคาร y ซึ่งคำขอนี้จะถูกระบุมาอย่างชัดเจนให้ผมอ่านก่อนที่จะเลือก consent หรือ reject

ซึ่งกรณีนี้แปลว่าธนาคาร y รับบทบาท AS ไปในตัว

เท่าที่ผมทราบมา(ยังไม่ยืนยัน) การใช้งานที่ระบบนี้(และกฎหมาย)รองรับ ช่วงแรกๆจะเป็นการขอยืนยันตัวตนเพื่อเปิดบัญชีธนาคาร

หลังจากนั้นจะเป็นการยืนยันตัวตนและขอข้อมูลทางการเงิน(เครดิตบูโร)เพื่อขอสินเชื่อบุคคล

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

แน่นอนว่าการติดต่อกับภาครัฐก็เป็นหนึ่งในเป้าหมาย

สิ่งที่คนทั่วไปเห็น

ตัวอย่างการใช้งานด้านบน เมื่อมองจากมุมมองผู้ใช้อาจจะเป็นประมาณนี้

  • ผู้ใช้เข้าเว็บไซต์ธนาคาร x เพื่อขอเปิดบัญชีออนไลน์ โดยระบุเลขบัตรประชาชน
  • ผู้ใช้เลือกการยืนยันตัวตนผ่านระบบ NDID แทนการยื่นเอกสารแบบเก่า
  • ผู้ใช้เลือกธนาคาร y เป็น IdP
    • ธนาคาร y ส่งคำขอไปหาลูกค้าของตนที่มีเลขบัตรประชาชนดังกล่าว
  • ผู้ใช้เปิดแอพลิเคชั่นของธนาคาร y เพื่อกดยินยอมให้ธนาคาร y ยืนยันตัวตน
    • ธนาคาร y อาจจะเลือกยืนยันตัวตนโดยให้กด PIN หรือแสกนใบหน้า/ลายนิ้วมือ
  • ธนาคาร x ได้รับคำยืนยันว่าผู้ใช้คือบุคคลนั้นจริง จึงดำเนินการเปิดบัญชีได้

ทั้งนี้ขอเน้นย้ำว่าข้อมูลอ่อนไหวต่างๆเช่นเลขบัตรประชาชนจะไม่มีการเก็บบันทึกไว้ในระบบ

แต่ธนาคาร x และธนาคาร y จะใช้ช่องทางอื่นเพื่อส่งข้อมูลส่วนนี้หากันโดยตรง โดยช่องทางที่ว่าจะมีการเข้ารหัสลับ (Encrypt) เพื่อไม่ให้ถูกอ่านได้ระหว่างทาง

และระบบจะมีการจัดเก็บหลักฐานต่างๆตามทฤษฎีการเข้ารหัส (cryptography) เพื่อใช้ตรวจสอบหากมีข้อพิพาทเกิดขึ้น (อ่านเพิ่มเติมได้ที่บล็อกอธิบายทางเทคนิค)

บทบาทเพิ่มเติม

นอกเหนือจาก RP, IdP, AS แล้ว ความจริงในระบบนี้ยังมีบทบาท proxy ด้วย ซึ่งผู้ใช้งานทั่วไปอาจจะมองไม่เห็นบทบาทนี้

บทบาทนี้เกิดขึ้นเพื่อให้ผู้เกี่ยวข้องที่ไม่มีทรัพยากรมากพอจะทำการต่อเชื่อมกับ NDID โดยตรง สามารถเชื่อมต่อระบบได้อย่างง่ายขึ้นโดยทำการต่อเชื่อมกับ proxy แทน

หนึ่งใน proxy เท่าที่ผมทราบคือ SET (ตลาดหลักทรัพย์แห่งประเทศไทย) ซึ่งกำลังเตรียมความพร้อมเป็น proxy ให้ บลจ.ต่างๆ

หมายเหตุ

ระบบนี้มีการประชุมเพื่อออกแบบระบบในเชิงเทคนิคจากการร่วมมือของ

  • ฝ่ายไอทีจากธนาคารใหญ่ๆทั่วประเทศ
  • บริษัท NCB (เครดิตบูโร)
  • ตัวแทนหน่วยงานรัฐบาลต่างๆ
  • ผู้ทรงคุณวุฒิอีกจำนวนหนึ่ง

(อ้างอิงจากผู้เข้าร่วมประชุมเท่าที่ผมจำได้ ตกหน่วยงานไหนไปขออภัยด้วยครับ)

ซึ่งผู้ก่อตั้งบริษัทที่ผมทำงานอยู่เข้ามามีส่วนรวมในระบบนี้ผ่านที่ปรึกษากระทรวงการคลัง ผมและเพื่อนร่วมงานเลยมีโอกาสได้เข้าไปช่วยทำงานด้วย

ผู้รับผิดชอบจัดทำระบบนี้อย่างเป็นคือบริษัท National Digital ID จำกัด

โดยได้ยินว่ามีคณะกรรมการบริหารประกอบด้วยผู้บริหารจากธนาคารใหญ่ๆประมาณยี่สิบคน (น่าจะมีท่านอื่นๆอีก แต่ผมอยู่ฝ่ายเทคนิคเลยไม่รู้มากนัก)

โดยที่ระบบนี้จะทำเป็นโครงการ opensource (ดูซอร์สโค้ดโครงการได้ที่นี่) ซึ่งผมเขียนบล็อกอธิบายสถาปัตยกรรมระบบเชิงเทคนิคไว้ที่นี่