Tags:
Topics: 
Node Thumbnail

สัปดาห์ที่ผ่านมาสหภาพยุโรปเริ่มเดินหน้าออกใบรับรอง COVID-19 แบบดิจิทัล ทำให้ชาติสมาชิกสามารถสแกน QR เพื่อตรวจสอบใบรับรองได้ ผมสำรวจการออกแบบ QR ที่สหภาพยุโรปออกแบบครั้งนี้ พบว่ามีความน่าสนใจหลายประการโดยเฉพาะกระบวนการออกใบรับรองที่ง่ายเนื่องจากสามารถออกใบรับรองผ่านแอปหรือแม้แต่พิมพ์ใบรับรองเป็นกระดาษด้วยตัวเอง, ยังมีความปลอดภัยสูงด้วยกระบวนการยืนยันข้อมูลด้วยลายเซ็นดิจิทัล, และสุดท้ายคือการออกแบบฟอร์แมตข้อมูลถูกออกแบบด้วยเทคนิคหลายอย่างเพื่อให้ QR มีขนาดเล็กที่สุดเท่าที่เป็นไปได้ เพื่อให้สแกนได้ง่าย

No Description

เริ่มจาก JSON Schema

ข้อมูลในใบรับรอง COVID-19 ของสหภาพยุโรปนั้นเริ่มต้นจากความต้องการออกใบรับรอง 3 ประเภทเพื่อยืนยันว่าผู้ถือใบรับรองปลอดภัยเพียงพอที่จะเดินทางไปยังประเทศต่างๆ ในสหภาพยุโรปได้โดยไม่ต้องถูกกักตัว โดยใบรับรองมีข้อมูลพื้นฐานเหมือนกันทุกใบ ได้แก่ เวอร์ชั่นข้อมูล, ชื่อผู้ถือใบรับรอง, และวันเกิดผู้ถือใบรับรอง (เพื่อยืนยันว่าตรงกับบัตรประจำตัว)

No Description

จากนั้นภายในจะมีใบรับรองประเภทย่อยอีก 3 ประเภท ได้แก่

  • v (vaccinated) ใบรับรองว่าฉีดวัคซีนเรียบร้อยแล้ว ระบุข้อมูลวัคซีน ชื่อวัคซีน, ผู้ผลิต, วันที่ฉีด, จำนวนโดสที่ฉีด, จำนวนโดสที่ต้องฉีด (วัคซีนบางตัวต้องการเข็มเดียว หรือบางประเทศระบุให้ผู้หายป่วยได้รับเข็มเดียว), ผู้ออกใบรับรอง
  • t (test) ใบรับรองผลการตรวจ COVID-19 ระบุเทคนิคการตรวจ, อุปกรณ์ที่ใช้ตรวจ, วันที่ตรวจ, ผลการตรวจ, หน่วยงานผู้ตรวจ, ผู้ออกใบรับรอง
  • r (recovery) ใบรับรองหายป่วย ระบุวันที่ตรวจพบเชื้อ, วันที่ยืนยันว่าหายป่วย (ต้องหลังวันพบเชื้อ 11 วันขึ้นไป), วันหมดอายุใบรับรอง (ไม่เกิน 180 วัน), ผู้ออกใบรับรอง

แปลงเป็นไบนารี เซ็น บีบอัด

จากข้อมูลแบบ JSON ทีมงานเริ่มแนวทางการบีบอัดข้อมูลนี้ให้เล็กที่สุดเพื่อให้ได้ QR ที่สแกนได้ง่าย โดยใช้มาตรฐาน CBOR (RFC8949) ที่เทียบเท่ากับ JSON แต่เป็นไบนารีทำให้ข้อมูลมีขนาดเล็กกว่า จากก่อนหน้านี้ที่ตัว schema ของข้อมูลก็ออกแบบให้มีขนาดเล็กด้วยชื่อฟิลด์ย่อให้สั้น (nam = name, dob = date of birth, is = issuer) อยู่แล้ว

หลังจากแปลงข้อมูลเป็น CBOR แล้ว ข้อความภายในใบรับรองจะถูกเซ็นด้วยกุญแจลับของหน่วยงานออกใบรับรองที่มักเป็นกระทรวงสาธารณสุขของแต่ละชาติ โดยการเซ็นใช้ฟอร์แมต COSE (RFC8152) ไฟล์ที่ได้จะพร้อมใช้สำหรับการตรวจสอบโดยชาติสมาชิกแล้ว

แต่เนื่องจากข้อมูลจำนวนมากในใบรับรองเป็นสตริงที่อาจจะบีบอัดลงไปได้อีก มาตรฐานใบรับรองระบุให้บีบอัดไบนารีด้วย DEFLATE ไปอีกขั้น

Base-45 และ QR

หลังจากบีบอัดแล้วข้อมูลใบรับรองแบบไบนารีจะได้ขนาดเล็กเพื่อส่งต่อแล้ว แต่เนื่องจากกระบวนการส่งต่อไฟล์นั้นทำได้ลำบาก การออกใบรับรองเป็น QR นั้นง่ายกว่ามาก เพราะทุกคนสามารถพิมพ์หรือเพียงแสดงหน้าจอโทรศัพท์ให้หน่วยงานตรวจสอบ แต่ QR นั้นไม่รองรับข้อมูลแบบไบนารีโดยตรง โดยทั่วไปแล้วหากต้องการเข้ารหัสข้อมูลไบนารีเป็นสตริง นักพัฒนาก็มักจะใช้งาน Base-64 เพื่อให้แน่ใจว่าปลายทางอ่านข้อมูลได้

แต่ Base-64 นั้นมีปัญหาว่าจะเพิ่มขนาดข้อมูลไปถึง 33% โดยข้อมูล 3 ไบต์ (24 บิต) เมื่อแปลงเป็น Base-64 จะใช้ขนาด 4 ไบต์ (32 บิต) ทางผู้ออกแบบใบรับรองของสหภาพยุโรปอาศัยฟีเจอร์ Alphanumeric ของมาตรฐาน QR (ISO18004) ที่สามารถแสดงข้อมูลตัวอักษร (A-Z), ตัวเลข (0-9), และสัญลักษณ์อีก 9 แบบ รวม 45 อักขระ ตัวอักษรทุกๆ 2 ตัวจะใช้บิตบน QR ทั้งหมด 11 บิตเท่านั้น

ความได้เปรียบของโหมด 45 ตัวอักษรของ QR ทำให้มีการเสนอมาตรฐาน Base-45 เข้าไปยัง IETF โดย Base-45 สามารถเข้ารหัสข้อมูล 2 ไบต์ (16 บิต) โดยใช้ 3 ตัวอักษร เมื่อรวมเข้ากับโหมด 45 ตัวอักษรของ QR จะทำให้ทุกๆ 4 ไบต์ (32 บิต) จะใช้ข้อมูลบน QR จริงๆ เพียง 33 บิตเท่านั้น นับว่าเป็นกระบวนการเข้ารหัสที่ได้ประสิทธิพื้นที่ QR สูง โดยคงความเข้ากันได้กับโปรแกรมอ่าน QR จำนวนมาก

การกระจายกุญแจสาธารณะ

No Description

กระบวนการตรวจสอบใบรับรอง COSE นี้ต้องอาศัยการกระจายกุญแจสาธารณะของหน่วยงานออกใบรับรองทุกหน่วย ให้กับชาติสมาชิกอื่นๆ ชาติสมาชิกจะกระจายกุญแจสาธารณะของตัวเองเข้าไปยัง EU gateway วันละรอบ เพื่อให้ชาติสมาชิกอื่นๆ ที่จะดาวน์โหลดวันละรอบเช่นกัน เมื่อแต่ละชาติสมาชิกดาวน์โหลดรายการกุญแจสาธารณะแล้วก็จะสามารถยืนยันความถูกต้องของใบรับรอง COVID-19 ได้โดยไม่มีการส่งต่อข้อมูลในตัวใบรับรองแต่อย่างใด เจ้าหน้าที่เพียงตรวจสอบชื่อและวันเกิดให้ตรงกับใบรับรองและยืนยันว่าเงื่อนไขของชาติตนยอมรับเงื่อนไข (การฉีดวัคซีน, หายป่วย, หรือผลทดสอบเป็นลบ) หรือไม่

นอกจากนี้ระบบหลังบ้านยังมีระบบแชร์กฎการตรวจสอบว่าแต่ละชาติมีเงื่อนไขยอมรับการเดินทางหรือวัคซีนอย่างไรให้อัพโหลดผ่าน EU gateway เพื่อให้ชาติสมาชิกตรวจสอบได้ว่าเงื่อนไขในใบรับรองนั้นสามารถเดินทางไปชาติใดได้บ้าง

กระบวนการออกใบรับรองดิจิทัลนั้นมีมานานแล้ว ที่เราเห็นทุกวันนี้คือหนังสือเดินทาง (passport) อิเล็กทรอนิกส์ที่ภายในคือข้อมูลดิจิทัลพร้อมลายเซ็นดิจิทัลของกระทรวงต่างประเทศชาติต่างๆ แต่หนังสือเดินทางใช้เวลาในการอิมพลีเมนต์ระบบยาวนาน หลายชาติยังไม่ได้ใช้เครื่องอ่านข้อมูลดิจิทัล หรือแม้แต่บางชาติที่ใช้งานก็ไม่ได้ตรวจสอบความถูกต้องของลายเซ็นดิจิทัล เหตุผลหนึ่งคือการออกหนังสือเดินทางนั้นใช้เวลายาวนาน หนังสือเดินทางอาจจะมีอายุการใช้งานถึง 10 ปี การออกหนังสือเดินทางมีต้นทุนสูง การเปลี่ยนผ่านใช้เวลานาน การออกแบบหนังสือรับรองดิจิทัลในรูปแบบ QR ของยุโรปครั้งนี้เปิดทางให้องค์กรจำนวนมากสามารถอ่านและยืนยันเอกสารดิจิทัลได้ง่ายภายในเวลาอันรวดเร็ว การกระจายใบรับรองและการเพิ่มจำนวนจุดตรวจสามารถทำได้ทั่วถึง เพราะประชาชนทั่วไปเพียงถือ QR โดยไม่ต้องอาศัยเอกสารสำคัญที่มีเทคโนโลยีการผลิตซับซ้อน ฝั่งเจ้าหน้าที่ผู้ตรวจสอบเองก็ใช้เพียงโทรศัพท์มือถือที่มีกล้องเท่านั้น น่าสนใจว่าแนวทางการออกแบบครั้งนี้จะมีการใช้งานต่อไปในอนาคตได้มากน้อยเพียงใด

Get latest news from Blognone

Comments

By: TeamKiller
ContributoriPhone
on 7 July 2021 - 15:45 #1215601
TeamKiller's picture

ของไทยเป็นไงหว่า

By: jaybroom on 7 July 2021 - 20:25 #1215655

มีที่มาของข่าวไหมครับ

By: Kittichok
Contributor
on 7 July 2021 - 23:42 #1215675

ว้าว ขอบคุณที่ให้ข้อมูลความรู้ครับ