ปัจจุบัน ชื่อผู้ใช้ (Username) และ รหัสผ่าน (Password) ถูกใช้กับทุกบริการออนไลน์ที่ต้องการการยืนยันตัวตน ว่าเรามีสิทธิในการเข้าถึงข้อมูลต่างๆ หรือไม่
การเก็บข้อมูลผู้ใช้งาน เว็บไซต์ต่างๆ จะเก็บข้อมูลพื้นฐานเป็นชุด ดังนี้ Username และ Password และ เว็บไซต์ที่คำนึงถึงความปลอดภัย ควรเก็บข้อมูล รหัสผ่าน (Password) แบบเข้ารหัสเสมอ เพื่อป้องกันไม่ให้ข้อมูลของสมาชิกหลุดออกไปถึงบุคคลที่สาม ไม่ว่าจะโดยตั้งใจหรือไม่ตั้งใจก็ตาม
เหตุการณ์สมมติ
การเก็บข้อมูลแบบเข้ารหัส
กรณีของผู้ใช้งาน เมื่อต้องการสร้างชุด Username และ Password ข้อมูลที่ต้องจดจำ ได้แก่
- Username: MisterPoakpong
- Password: ThisIsNotMyPassword
ซึ่งเว็บไซต์ที่คำนึงถึงความปลอดภัยของสมาชิก จะเก็บข้อมูลในลักษณะแบบนี้
- Username: MisterPoakpong
- Password: F0F830C63170A8AC0C74F5FF3D7D930F
สังเกตุว่า รหัสผ่าน (Password) ซึ่งเป็นข้อมูลที่ผู้ใช้งานต้องจดจำ กับ ข้อมูลที่เว็บไซต์บันทึกเอาไว้ ไม่เหมือนกัน แต่มีวิธีอ้างอิงเปรียบเทียบกันได้
แต่สำหรับเว็บไซต์ ที่เก็บข้อมูลแบบไม่เข้ารหัส ก็จะบันทึก Password ว่า ThisIsNotMyPassword เป็นข้อความแบบธรรมดา ใครเห็นก็สามารถอ่านได้
วิธีการตรวจสอบว่าเว็บไซต์ต่างๆ ว่าเก็บข้อมูล Password แบบเข้ารหัส หรือ ไม่เข้ารหัส ด้วยการใช้ฟังก์ชั่น "ลืมรหัสผ่าน" โดยให้เว็บไซต์ส่งรหัสผ่านปัจจุบันมาให้เรา
หากเว็บไซต์ใด สามารถบอกเราได้ว่ารหัสผ่านปัจจุบันของเราเป็นรหัสผ่านอะไร เว็บไซต์นั้นมีความเสี่ยงในการเก็บข้อมูลของสมาชิกแบบไม่เข้ารหัส
เทคนิคการเข้ารหัสเบื้องต้น
จากตัวอย่างข้างต้น ข้อมูลรหัสผ่าน (Password) นั้นถูกเข้ารหัส Hashing ด้วยฟังก์ชั่นคอมพิวเตอร์ ที่ชื่อว่า MD5 เป็นการนำข้อมูลมาผ่านกระบวนการทางเทคนิตเพื่อให้ได้ชุดข้อมูลใหม่ ที่อ้างอิงจากชุดข้อมูลตั้งต้น
หลักการทำงาน Hashing ของ MD5 ได้แก่ ThisIsMyPassword x MD5 = F0F830C63170A8AC0C74F5FF3D7D930F
ทดลองแปลงข้อมูล ด้วยการ Hashing ฟังก์ชั่น MD5 ได้ที่เว็บไซต์ https://passwordsgenerator.net/md5-hash-generator/
อย่างไรก็ตาม MD5 นั้นถือว่าเป็นการเข้ารหัสที่ใช้กันมานานแล้ว และปัจจุบันมีหลายกระบวนการสามารถถอดรหัส MD5 ให้กลับมาเป็นข้อความตั้งต้นได้
แล้วเว็บไซต์จะเปรียบเทียบชุดข้อมูลว่าตรงกันได้อย่างไร?
คราวนี้ เมื่อเราต้องการยืนยันตัวตนว่าเราเป็นเจ้าของ Username และ Password นั้นจริง เราต้องสามารถระบุ Password ที่ถูกต้อง และตรงกับข้อมูลที่เว็บไซต์บันทึกเอาไว้
หลักการทำงานในการ Log-in เข้าระบบ เว็บไซต์ก็จะทำการ Hashing เมื่อเรากด Submit ข้อมูล และนำข้อมูลที่ได้ ไปเปรียบเทียบกับข้อมูลที่เคยบันทึกเอาไว้ว่าตรงกันหรือไม่
เช่น ในการพิมพ์ Log-in เข้าระบบ Password = ThisIsNotMyPassword x MD5 = F0F830C63170A8AC0C74F5FF3D7D930F
ซึ่งข้อมูล F0F830C63170A8AC0C74F5FF3D7D930F นั้น ตรงกับที่เว็บไซต์บันทึกเอาไว้ในฐานข้อมูลของสมาชิก ก็ถือว่าสามารถยืนยันความเป็นเจ้าของ และผ่านเข้าไปใช้งานในส่วนต่างๆ ต่อไป
แล้วถ้าลืมรหัสผ่าน เว็บไซต์จะบอกเราได้หรือไม่ และมีวิธีแก้ไขอย่างไร?
ถ้าในกรณีเว็บไซต์ที่คำนึงถึงความปลอดภัยของสมาชิก ที่เก็บข้อมูล Password แบบเข้ารหัส จะไม่สามารถบอกได้ว่า รหัสปัจจุบันของสมาชิกนั้นเป็นรหัสใด ทำได้เพียงส่ง Link พิเศษ เข้าไปในอีเมลที่ลงทะเบียนเอาไว้ เพื่อให้สมาชิกของเว็บไซต์ สร้างรหัสผ่านชุดใหม่ ขึ้นมาทดแทนของเดิม
ทำไมต้องกังวลเรื่องการเก็บข้อมูล Password แบบเข้ารหัส และ ไม่เข้ารหัส?
ในปัจจุบันข่าวคราวเว็บไซต์ที่มีผู้ใช้งานจำนวนมาก ถูกแฮกรายชื่อสมาชิก ที่มีข้อมูล Username, E-mail และ Password รวมถึงข้อมูลอื่นๆ เช่น ที่อยู่ หรือ ข้อมูลบัตรเครดิต อยู่บ่อยครั้ง
เราจึงไม่ควรสมัครใช้บริการกับเว็บไซต์ที่ไม่คำนึงถึงความปลอดภัย และเก็บรหัสผ่านแบบไม่เข้ารหัส เพราะหากวันใดวันหนึ่ง เว็บไซต์ดังกล่าวถูกแฮกข้อมูลสมาชิก ไม่ว่าจากบุคคลภายนอก หรือ ผู้ที่มีสิทธิเข้าถึงข้อมูลสมาชิก ข้อมูลรหัสผ่าน Password ของเรา ก็จะถูกบุคคลที่สามเข้าถึงได้โดยง่าย
เว็บไซต์-บริการอะไรบ้าง ที่เคยมีข่าวว่าข้อมูลสมาชิกหลุด/โดนแฮก?
จากข้อมูลของเว็บไซต์ have i been pwned? บอกว่า เว็บไซต์ชื่อดังหลายเว็บ เคยเกิดกรณีปัญหาข้อมูลสมาชิกหลุด หรือโดนแฮกเอาข้อมูลสมาชิกมาเปิดเผย เช่น
- 000webhost (บริการฟรีโฮสติ้ง)
- Adobe (เจ้าของโปรแกรมแต่งภาพชื่อดัง Photoshop, Illustrator ฯลฯ)
- Avast (โปรแกรมป้องกันไวรัส)
- Bitly (บริการย่อลิงก์ URL address)
- BitTorrent (โปรแกรมแชร์ไฟล์แบบ P2P)
- Dailymotion (เว็บไซต์แชร์วิดีโอ)
- Disqus (บริการคอมเม้นสำหรับเว็บไซต์)
- Dropbox (บริการเก็บไฟล์ออนไลน์)
- imgur (บริการฝากไฟล์รูปภาพ)
- Last.fm (บริการแชร์ข้อมูลว่ากำลังฟังเพลงอะไร)
- LinkedIn (บริการแชร์ข้อมูลเกี่ยวกับการทำงาน)
- Patreon (เว็บไซต์อำนวยความสะดวกในการระดมทุนออนไลน์)
- Snapchat (แอพแชร์เรื่องราวคู่แข่ง Instagram)
- uTorrent (โปรแกรมแชร์ไฟล์แบบ P2P)
- VK (เว็บไซต์สื่อสังคมสัญชาติรัสเซีย)
- Yahoo (ผู้ให้บริการข้อมูลข่าวสาร และอีเมลรายใหญ่ในสหรัฐอเมริกา)
สามารถตรวจสอบรายละเอียดทั้งหมด (เกือบ 300 เว็บไซต์) ได้ที่ https://haveibeenpwned.com/PwnedWebsites