แนวทางการ implement ระบบ e-Election

Earthchie Thanarat
thaichainfoundation
3 min readOct 17, 2020

สวัสดีครับ ห่างหายไปจาก Medium เสียนาน วันนี้บังเอิญมีการพูดคุยเรื่อง e-Election ทาง ThaiChain Foundation จึงขอใช้โอกาสนี้มาเล่าคอนเซ็ปต์คร่าวๆ ตามที่ทางมูลนิธิ เคยศึกษาข้อมูลไว้ครับ

จุดเริ่มต้นของบล็อกนี้ https://www.facebook.com/nonintanon/posts/10222391690514454?comment_id=10222392414012541&reply_comment_id=10222393012467502

ข้อควรทราบก่อนจะเริ่มกัน

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

โอเคครับ ได้เวลาแล้ว ผมจะเริ่มนำเสนอเนื้อหา โดยเริ่มจาก Why, What, แล้วก็ How ไปตามลำดับครับ

Why?

ทำไมต้องทำ e-Election?

การยืนยันตัวบุคคล (การลงชื่อว่ามาใช้สิทธิ์)

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

ความโปร่งใส

ก็อย่างที่เห็นตามข่าวเลยครับ หีบหาย บัตรเขย่ง

การนับคะแนน

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

What?

แล้ว e-Election จะช่วยอะไรได้?

การยืนยันตัวบุคคล (การลงชื่อว่ามาใช้สิทธิ์)

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

ให้เปรียบเทียบก็เหมือนกับ Mobile Banking ที่เมื่อยี่สิบปีก่อน การไปธนาคารจะเสียเวลามาก แต่ยุคนี้เปิดแอพก็โอนเงินกันได้แล้ว ใครที่ไม่สะดวกก็ไปที่สาขาได้เหมือนเดิม ทางธนาคารหลายแห่งจึงสามารถปิดหลายๆ สาขา เพื่อลดต้นทุนการจัดการได้ เมื่อมี e-Election แล้ว คนส่วนมากก็ควรเลือกตั้งผ่านแอพได้ เมื่อเป็นดังนี้ กกต. ก็สามารถลดต้นทุนการจัดเตรียมคูหาได้ ให้เล็กลง และ/หรือ ให้มีน้อยลงได้ เผลอๆ มีแค่อำเภอละจุดก็เพียงพอ

ความโปร่งใส

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

การนับคะแนน

ปิดหีบปุ๊บ รู้ผลในระบบ e-Election ทันที ไม่ต้องขนย้ายหีบ ไม่ต้องขานคะแนน

How?

จะใช้อะไรพัฒนา?

การยืนยันตัวบุคคล (การลงชื่อว่ามาใช้สิทธิ์)

ใช้ Digital ID เลยครับ ตอนนี้ประเทศไทยพร้อมมาก เรื่อง Digital ID หลายๆ คนคงเริ่มได้ยินข่าวเรื่องการเปิดบัญชีธนาคารด้วย Digital ID ผ่านระบบ NDID ใช่ไหมครับ นั่นแหละ ทำเหมือนกันเลย

การพิสูจน์ตัวที่ความน่าเชื่อถือระดับ IAL 2.3 เนี่ย มันมีมาตรการที่น่าเชื่อถือมากกว่าการโอนเงินผ่านแอพอีกนะครับ เพราะตอนที่ยืนยันตัว จะทำที่ระดับ AAL 2.2 ซึ่งเป็น 3-factor authentication ที่ผ่านมาพวกเราคุ้นเคยดีกับการใช้รหัสผ่าน + OTP แต่ระดับ AAL 2.2 มันสูงกว่านั้น นอกจาก รหัสผ่าน + OTP แล้ว คุณต้องทำ Biometric comparison แบบ Liveness ด้วย (ใช้ AI เปรียบเทียบใบหน้า ว่าเป็นตัวจริงไหม)

ดังนั้นลืมไปได้เลยเรื่องการสวมรอยใช้สิทธิ์แทนคนอื่น ทำไม่ได้แน่ๆ ครับ
…ส่วนปัญหาเรื่องขายเสียง คงแก้ไม่ได้ แต่มีกรณีที่น่าสนใจคือประเทศเอสโตเนีย เปิดให้โหวตใหม่ได้เรื่อยๆ จนกว่าจะปิดหีบครับ เพราะฉะนั้น สามารถขายเสียงไปก่อน แล้วแก้ใหม่ไปลงคะแนนให้คนที่ต้องการได้ครับ

ความโปร่งใส

ใช้ FOO’92 Protocol ในการเลือกตั้ง โดยอาศัยเทคนิค Blind Signature กับ Zero-knowledge proof ในการ implement

การนับคะแนน

ระบบ e-Election จะเกิดขึ้นบน Smart Contract ให้มากที่สุดที่สามารถทำได้ บัตรเลือกตั้งทุกใบต้องอยู่บน Blockchain เพื่อความโปร่งใส

ความท้าทายในการพัฒนาระบบ e-Election

หลายๆ คนที่เสนอเรื่อง e-Election มักจะลืมสองเรื่องนี้ไปเสมอๆ

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

มาถึงเรื่องน่าปวดหัวกันเสียที ภาพด้านบนคือ Flow การเลือกตั้งตาม FOO’92 Protocol ที่เสนอโดย Fujioka, Okamoto, และ Ohta ในปี 1992 ครับ โอ้โห เป็นนักวิจัยที่แนวคิดนำยุคนำสมัยมาก สมัยนั้นคอมพิวเตอร์ยังไม่มีการใช้งานตามบ้านเลย แต่น่าเสียดายที่ยังไม่มีการนำไปใช้จริง เนื่องจากเทคโนโลยีไม่พร้อมในหลายจุด เพิ่งมาพร้อมก็ตอนที่โลกเรามี Blockchain Technology นี่แหละ

  1. ผู้ใช้สิทธิ์ ยืนยันตัวกับ กกต. ด้วย Digital ID พร้อมกับแนบบัตรเลือกตั้งอิเล็กทรอนิกส์ที่ลงคะแนนไว้เรียบร้อยว่าจะเลือกเบอร์อะไร แต่ลงลายเซ็นแบบ Blind Signature เอาไว้ เจ้า Blind Signature เนี่ย เป็นเทคนิคที่ใช้รับรองเนื้อหาอะไรบางอย่าง คนอ่านจะรู้ว่าเป็นของจริง แต่ไม่สามารถอ่านเนื้อหาด้านในได้
  2. กกต. ตรวจสอบดูว่ามีสิทธิ์จริงไหม มาใช้สิทธิ์ซ้ำไหม จากนั้นก็จดชื่อไว้ว่ามาใช้สิทธิ์แล้ว เพื่อรักษาสิทธิ์ทางการเมืองให้กับบุคคลดังกล่าว
  3. กกต. รับรองบัตรเลือกตั้งอิเล็กทรอนิกส์ ด้วย e-Signature
  4. ผู้ใช้สิทธิ์ Unblind Signature ทิ้ง เพื่อเปิดเผยเนื้อหาที่ซ่อนไว้ด้านใน
  5. ส่งบัตรเลือกตั้งไปยังระบบ ด้วยช่องทางนิรนาม ในเบื้องต้นทางมูลนิธิฯ คิดว่า Zero-knowledge proof น่าจะเป็นเทคนิคที่ช่วยตรงนี้ได้
  6. ระบบจัดการเลือกตั้ง ตรวจสอบความถูกต้องของบัตรเลือกตั้งอิเล็กทรอนิกส์ การตรวจสอบที่ว่านี่ก็ไม่ยากอะไร แค่ดูว่ามี e-Signature จากกกต. รับรองเอาไว้หรือเปล่า จากนั้นก็รอถึงเวลาปิดหีบแล้วก็นับคะแนน ขั้นตอนนี้จะเกิดบน Smart Contract ทั้งหมด

Zero-knowledge Proof

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

Zero-Knowledge Proof (ZK, ZKP) เป็นเทคนิคในการส่งข้อมูลหากัน โดยจะไม่เผยข้อมูลออกมาตรงๆ ซึ่งผลพลอยได้ของมันคือการส่งข้อมูลแบบนี้จะเป็นแบบนิรนามด้วย ถูกต้องตามโจทย์ที่เราสนใจ เป๊ะๆ

สำหรับคนที่สนใจเรื่องนี้ แนะนำให้หาเวลาว่างเยอะๆ เปิดใจพร้อมรับสมการคณิตศาสตร์เยอะๆ แล้วนั่งดูคลิปนี้ครับ

ส่วนใครที่คิดว่าไม่ดีกว่า ผมดีใจครับที่คุณเลือกแบบนั้น 555 เพราะมันยากจริงๆ
เอาเป็นว่า ZKP แบ่งได้เป็นสองเทคนิคหลักๆ คือ Interactive กับ Non-interactive

ถ้าให้เล่าแบบเร็วๆ Interactive คือการพิสูจน์ด้วยการถามไปถามมาเยอะๆ จนคิดว่า ถ้ามันตอบถูกเยอะขนาดนี้ มันคงเป็นตัวจริงนั่นแหละ เชื่อก็เชื่อวะ

เช่น สามารถตอบคำถามที่เป็น yes/no question ได้ถูกต้องติดต่อกัน 20 ครั้ง เราก็ยอมเชื่อแล้วว่าเค้าเป็นตัวจริง เพราะโอกาสที่จะเดาถูกต่อเนื่องกัน 20 ครั้งคือ 1 ใน ล้าน (1 ใน 2²⁰ ซึ่งก็คือ 1 ใน 1,048,576)

ส่วน Non-interactive จะใช้การพิสูจน์ทางคณิตศาสตร์แทน ดีกว่าแบบแรกตรงที่ไม่ต้องเสียเวลาถามไปถามมา เพราะแบบนั้นมันจะเกิด transaction ขึ้นในระบบเยอะมาก เป็นภาระต่อระบบ server

ซึ่ง Zero-knowledge proof แบบ Non-interactive เนี่ย หลายคนที่สนใจ Blockchain Technology คงจะเคยผ่านหูผ่านตามาบ้างแล้ว เพราะมีการ implement และใช้งานจริงแล้ว บน ZCash และ ZCoin ของคุณหนึ่ง ปรมินทร์ ผู้ก่อตั้ง Satang.pro

โปรโตคอลที่ใช้ใน ZCash เรียกว่า ZK-snarks ย่อมาจาก

Zero-knowledge Succinct Non-interactive Argument Of Knowledge Protocol

อ่านเข้าใจยากชิบเป๋ง 555
เอาเป็นว่า มันเป็น ZKP แบบ Non-interactive แบบนึงละกัน

และข่าวดีก็คือ มีการพอร์ทเอาเฉพาะส่วนของโปรโตคอลนี้ ออกมาเป็น Smart Contract แล้ว จัดทำโดย Big 4 ด้าน Audit ชื่อดังอย่าง E&Y ชื่อว่าโครงการ Nightfall

https://github.com/EYBlockchain/nightfall

นั่นแปลว่า ในปัจจุบัน เทคโนโลยีต่างๆ มีความพร้อมแล้ว เหลือแค่การลงมือประกอบมันเข้าเป็นระบบเดียวกัน ก็เท่านั้นเอง

หวังว่าบล็อกนี้จะเป็นประโยชน์ต่อประเทศไทยต่อไปครับ

ใครมีข้อสงสัย สามารถทิ้งคำถามไว้ได้เลยนะครับ ตอบได้จะตอบ ตอบไม่ได้จะไปหาผู้รู้มาตอบให้ครับ

วันนี้พอแค่นี้ก่อน สวัสดีครับ

--

--