By Arnon Puitrakul - 02 พฤศจิกายน 2020
จากประเด็นเมื่อไม่กี่วันที่ผ่านมา ที่มีเรื่องของการรั่วไหลของข้อมูลในเว็บไซต์หลาย ๆ เว็บ หนึ่งในนั้นก็เป็นเว็บที่คนไทยใช้กันอย่าง Eatigo และ Wongnai เกิดขึ้น ทำให้หลาย ๆ คนถามเรามาว่า แล้วมันเกี่ยวกับเราอย่างไร และ เราควรทำอย่างไรเมื่อเจอเหตุการณ์เหล่านี้
เมื่อสัปดาห์ก่อนหน้า มีการค้นพบฐานข้อมูลของ Lazada อยู่ในตลาดใต้ดิน ปรากฏว่านอกจาก Lazada เองก็ยังมี Wongnai และ Eatigo หลุดออกมาเช่นกัน
โดยข้อมูลที่หลุดออกไปน้ันเป็นข้อมูลส่วนตัวของผู้ใช้ เช่น อีเมล์, ชื่อ, ชื่อ Account ของ Social Media อย่าง Facebook และ Twitter, หมายเลขโทรศัพท์ และ รหัสผ่าน (ที่เข้ารหัสแล้ว)
หลายคนอาจจะตกใจมากว่า ทำไมมันถึงหลุดได้ อันนี้ก็พูดยาก แต่เรามั่นใจว่า แต่ละบริษัทเขาก็มีการดูแลรักษาข้อมูลของลูกค้าได้เต็มความสามารถแล้ว แต่มันก็เป็นเรื่องธรรมดาที่มีคนอยากที่จะล้วงข้อมูลบริษัทที่ใหญ่อยู่แล้ว แค่ครั้งนี้เขาอาจจะทำสำเร็จไปเท่านั้นเอง แต่ไม่ต้องกลัวพอโดน เขาก็ต้องจัดการเรื่องความปลอดภัยให้มากขึ้น ไม่มีใครอยากให้เกิดเหตุการณ์เหล่านี้ขึ้นแน่นอนแหละ
ใช่ละฮ่ะ ว่าในแต่ละที่นั้นก็มีรหัสผ่านหลุดออกไปด้วยจริง (อ้างอิงจาก Wongnai Security Incident และ Blognone) แต่รหัสผ่านเหล่านี้ได้ถูกเข้ารหัสไว้แล้ว ทำให้คนที่ได้รหัสผ่านไปไม่สามารถที่จะรู้ได้เลยว่า รหัสผ่านของเราจริง ๆ คืออะไร
ทำให้หลาย ๆ คนถามว่า ถ้าไม่รู้รหัสผ่านของเราจริง ๆ แล้ว แล้วไงอะ จริง ๆ แล้ว สิ่งที่หลาย ๆ เว็บทำ เพื่อการเก็บรหัสผ่านเราเรียกว่า Hashing ซึ่งต่างจาก การเข้ารหัส (Encryption) ตรงที่ Hashing เราไม่สามารถย้อนคืนค่าเดิมกลับมาได้ แต่การเข้ารหัส เราสามารถใช้ กุญแจ หรือ รหัสผ่าน (Password) เพื่อเรียกคืนค่าเดิมก่อนการเข้ารหัสออกมาได้
ทำไม Hashing ถึงเอาค่าเดิมกลับมาไม่ได้ ในขณะที่ Encryption เอากลับมาได้ละ คำตอบอยู่ที่ คณิตศาสตร์ เลย เราต้องเข้าใจก่อนว่า ทั้ง 2 อย่างมันเป็น Function ตัวนึง แต่สิ่งที่ต่างคือ ความสัมพันธ์ ซึ่งถ้าเราเรียนมา มันก็จะมี One-One, Many-One, One-Many และ Many-Many
สิ่งที่ Encryption ใช้คือแบบ One-One แปลว่า เราเอาข้อมูลเราใส่เข้าไป และ กุญแจ เข้าไป เราก็จะได้ข้อมูลที่เข้ารหัสออกมา และเมื่อเราเอาข้อมูลตรงนั้น พร้อมกุญแจมาใส่ เราก็จะได้ข้อมูลที่เหมือนเดิมแน่นอน
แต่กลับกัน Hashing Function มีความสัมพันธ์แบบ Many-One หมายความว่า ถ้าเราเอาข้อมูลใส่เข้าไป เราจะได้ค่า Hash กลับมา แต่ถ้าเราจะเอาค่า Hash ย้อนกลับไปเป็นข้อมูลเริ่มต้น เราจะหาได้ยากมาก เพราะ 1 ค่า Hash มาจากหลายข้อมูลที่ใส่เข้าไป ทำให้มันมีเหตุการณ์นึงที่อาจจะเกิดขึ้นคือ Hash Collision หรือ การที่เราใส่ข้อมูลต่างกัน แล้วได้ค่า Hash เหมือนกัน ซึ่งเราก็แก้ปัญหาด้วยการขยายความยาวเข้าไปทำให้เรื่องพวกนี้เกิดได้ยากมาก ๆ จนแทบจะคิดได้เลยว่ามันไม่น่าเกิดได้เลย
พอการเก็บรหัส มันใช้ Hashing นั่นแปลว่า เจ้าของเว็บเอง ก็ไม่รู้เหมือนกันว่า รหัสผ่าน ของแต่ละคนคืออะไร แล้วทีนี้ ถ้าเวลามีคน Login เข้าสู่ระบบ มันจะรู้ได้ยังไงว่า รหัสผ่านที่ใส่มามันตรงกับรหัสผ่านที่ตั้งไว้ ง่าย ๆ ก็คือ เอารหัสผ่านที่กรอกเข้ามา Hash ด้วยวิธีการเดียวกับที่เรา Hash รหัสผ่านตัวจริง แล้วเอามาเทียบกัน ถ้ารหัสผ่านทั้ง 2 เหมือนกัน ก็คือ รหัสผ่านถูกต้องนั่นเอง
อีกความเป็นไปได้ที่เจ้าของระบบ พอจะเดาได้ว่ารหัสผ่านคืออะไรคือ ถ้ารหัสผ่านของเราดันไปเหมือนกับคนอื่นนั่นแหละ เมื่อเข้าไปดูในระบบ ถึงจะเป็น Hash ก็เถอะ มันจะออกมาเหมือนกันเลย แล้วถ้าเจอเยอะ ๆ นี่น่ากลัวนะ ทำให้รู้เลยว่า ถ้าเราเดาสุ่มรหัสอันนี้อันเดียว เราสามารถเข้าได้เกือบทุก Account ในระบบได้เลยนะ น่ากลัวจริง ๆ
สิ่งที่เราที่เป็น User ต้องทำคือ การเปลี่ยนรหัสผ่าน ทันทีและถือว่า รหัสผ่านชุดนี้เป็นรหัสผ่านที่ไม่ปลอดภัยไปเลย ถ้าเราใช้รหัสผ่านเดียวกันกับทุก Account (ไม่ใช่สิ่งที่ควรทำ) ก็ควรจะไล่เปลี่ยนให้หมด เพราะเราไม่รู้หรอกว่า มันจะเกิดอะไรขึ้นต่อ
เหนือสิ่งอื่นใด การที่เราเป็นผู้ใช้งานของระบบนั้น ๆ เราก็ควรที่จะมีการติดตามข่าวหน่อยว่า ระบบที่เราใช้งานมันมีเรื่องของความปลอดภัยเกิดขึ้นอะไรอย่างไรบ้าง เพื่อที่เมื่อมีเหตุการณ์เกิดขึ้น เราจะได้ตั้งรับได้ทัน ทั้งนี้เพื่อความปลอดภัยของข้อมูล และ ความเป็นส่วนตัวของเราด้วย
เราอยากจะเน้นย้ำมาก ในเรื่องของการตั้งรหัสผ่านของเรา โดยที่อยากให้ตั้งรหัสผ่านที่แข็งแรง กล่าวคือ เป็นรหัสผ่านที่สามารถเดาสุ่มได้ยากนั่นเอง สำหรับการเริ่มต้นคือ เราแนะนำให้ตั้งรหัสผ่านที่มีความยาวไม่ต่ำกว่า 8 ตัวอักษร ที่ประกอบด้วย ทั้ง ตัวหนังสือพิมพ์เล็กและใหญ่, ตัวเลข และ อักขระพิเศษ
กับอีกเรื่องที่สำคัญไม่แพ้กันคือ เราไม่ควรใช้รหัสผ่านเดียวกับทุก ๆ บริการที่เราใช้งานเลย อย่างเหตุการณ์ในครั้งนี้ ถ้าเกิดว่าเราใช้รหัสผ่านเดียวกันทั้งหมดเลย ก็แปลว่าคนที่เอารหัสผ่านเราไปได้ ก็สามารถไปลองเข้าในบริการอื่น ๆ ที่เราใช้งานอยู่ได้หมดเลยนะ มันต้องไม่โอเคแน่นอน ดังนั้น ตั้งรหัสผ่านให้มันไม่เหมือนกันสักบริการเลยจะดีมาก
แต่เราเข้าใจแหละว่า มันอาจจะจำยากมาก ๆ ถ้าเรามี Account สัก 100 เจ้าแล้วรหัสผ่านเราแข็งแรงหมด จำตายแน่นอน ทำให้เราแนะนำให้ใช้บริการจำพวก Password Manager พวกนี้ช่วยให้เราสร้างรหัสผ่านที่แข็งแรงได้ ในขณะที่เราไม่ต้องมานั่งจำรหัสผ่านทุกอันที่เรามี
Password Manager บางตัวมันเก่งกว่านั้นอีก คือ เราสามารถตั้งเวลาให้มันเปลี่ยนรหัสผ่านเองได้ด้วย เช่น อาจจะให้มันเปลี่ยนทุก 2 เดือน มันก็จะจัดการให้เราเองเลย ไม่ต้องมานั่งเปลี่ยนเองทั้งหมด ทำให้เรามีความปลอดภัยจากการขโมยตัวตน และ ข้อมูลได้ดีขึ้นมากแล้วละ
เคยสงสัยกันมั้ยว่า Filter ที่เราใช้เบลอภาพ ไม่ว่าจะเพื่อความสวยงาม หรืออะไรก็ตาม แท้จริงแล้ว มันทำงานอย่างไร วันนี้เราจะพาไปดูคณิตศาสตร์และเทคนิคเบื้องหลังกันว่า กว่าที่รูปภาพจะถูกเบลอได้ มันเกิดจากอะไร...
หลังจากดูงาน Google I/O 2024 ที่ผ่านมา เรามาสะดุดเรื่องของการใส่ Watermark ลงไปใน Content ที่ Generate จาก AI วันนี้เราจะมาเล่าให้อ่านกันว่า วิธีการทำ Watermark ใน Content ทำอย่างไร...
ก่อนหน้านี้เราทำ Content เล่าความแตกต่างระหว่าง CPU, GPU และ NPU ทำให้เราเกิดคำถามขึ้นมาว่า เอาเข้าจริง เราจำเป็นต้องมี NPU อยู่ในตลาดจริง ๆ รึเปล่า หรือมันอาจจะเป็นแค่ Hardware ตัวนึงที่เข้ามาแล้วก็จากไปเท่านั้น วันนี้เราจะมาเล่าให้อ่านกัน...
บทความนี้ เราเขียนสำหรับมือใหม่ หรือคนที่ไม่ได้เรียนด้านนี้แต่อยากรู้ละกัน สำหรับวันนี้เรามาพูดถึงคำที่ถ้าเราทำงานกับพวก Developer เขาคุยกันบ่อย ๆ ใช้งานกันเยอะ ๆ อย่าง Database กันว่า มันคืออะไร ทำไมเราต้องใช้ และ เราจะมีตัวเลือกอะไรในการใช้งานบ้าง...