By Arnon Puitrakul - 04 พฤศจิกายน 2023
เวลาเราจะเข้าใช้งานระบบทุก ๆ อย่าง เราจำเป็นต้อง เข้าสู่ระบบโดยการยืนยันตัวตน (Authentication) เพื่อให้ระบบรู้ว่า นี่คือตัวเราจริง ๆ ไม่ใช่คนอื่น หรือมิจฉาชีพ ซึ่งวิธีการที่เราใช้กันมาอย่างยาวนาน คือ การใช้ Password ทุกวันนี้เรามี Account อยู่กี่อันละ เยอะมาก ๆ จำกันไม่ไหว แต่ปัญหานี้กำลังจะหมดไปด้วย Passkey วันนี้เรามาเล่าให้อ่านกันแบบง่าย ๆ ว่า มันทำงานอย่างไร และมันเข้ามาแทนที่การใช้ Password ได้จริง ๆ เหรอ
Passkey เป็นวิธีการที่ใช้ในการยืนยันตัวตน ที่นอกเหนือจากการใช้ Password ที่เราใช้กันมาอย่างยาวนาน เพื่อการเข้าใช้งานระบบเว็บไซต์ต่าง ๆ ทำให้เราไม่จำเป็นต้องใช้ Password ในการยืนยันตัวตน เราไม่ต้องมานั่งจำ Password อีกแล้ว หรือกระทั่ง เราไม่จำเป็นต้องพิมพ์อะไรเลยด้วยซ้ำ เราแค่กด ๆ อยู่ไม่กี่คลิก เราสามารถเข้าใช้งานเว็บได้แล้ว
เพราะจริง ๆ แล้ว จุดอ่อนของระบบรักษาความปลอดภัยที่เราใช้งานกัน มันคือ ผู้ใช้งานเองนี่แหละ เช่น ผู้ใช้บางกลุ่ม ไม่อยากจำ Password เยอะ ๆ เราก็ใช้ Password ตัวเดียว ทุกบริการไปเลย แปลว่า ถ้าโดน Trap สักที่ เท่ากับ ทุกที่แตกหมด หรืออีกตัวอย่างคือ ไม่อยากจำยาก ๆ ก็ตั้งเป็น Password ง่าย ๆ ไปเลยสิ แน่นอนว่า โดนสุ่มยับ ๆ จนแตก เมื่อคนที่ทั้งใช้ Password เดียวกันในทุกบริการ รวมร่างกับคนที่ตั้ง Password ง่าย ๆ ความชิบหายจึงบังเกิดได้อย่างไม่น่าเชื่อ
จากปัญหาตรงนี้แหละ เลยทำให้นักวิจัยความปลอดภัยพยายามสร้างมาตรฐาน หรือวิธีการบางอย่างเพื่อจะเข้ามาแก้ปัญหาตรงนี้เลยออกมาเป็น Passkey ที่ถูกดูแลโดยองค์กรอิสระที่ชื่อว่า FIDO (Fast IDentity Online)
เราอาจจะมองว่า มันดูเป็นเรื่องใหม่มาก ๆ แต่พื้นฐานการทำงาน เรายังพึ่งพาการทำงานระบบที่เกิดในช่วง 1970s อยู่นั่นคือ Public-Key Cryptography ที่เป็นวิธีการเดียวกับที่เราใช้งาน SSL (Secure Socket Layer) บนเว็บ ณ วันนี้เลยละ
ในการทำ Public-Key Cryptography (อีกชื่อเรียก Asymmetric Encryption) เราจะมีกุญแจอยู่สองดอกด้วยกัน ดอกแรก เราเรียกว่า Private Key เป็นกุญแจที่เราจะต้องเก็บไว้กับตัว อย่าเอาให้ใครดูเด็ดขาด เราเลยเรียกว่า Private Key และ อีกดอกคือ Public Key ตรงข้ามกัน คือ เราสามารถให้คนอื่นดูได้ เป็นดอกที่เราจะส่งให้ปลายทาง
โดยตรงนี้แหละ คือจุดสำคัญ และ มหัศจรรย์ทางคณิตศาสตร์มาก ๆ คือ Public Key จะถูกสร้างออกมาจาก Private Key ทำให้ กุญแจทั้งสองดอกนี้จริง ๆ มีความสัมพันธ์ทางคณิตศาสตร์อยู่ด้วยกัน และ เจ๋งกว่านั้นอีกคือ ถ้าเราใช้ในการส่งข้อมูล ฝั่งเราเองที่ถือ Private Key จะเป็นกุญแจที่สามารถถอด และ เข้ารหัสข้อมูลได้ทั้งหมด กลับกันฝั่ง Public Key จะทำได้เพียงเข้ารหัสข้อมูลเท่านั้น ไม่สามารถใช้ในการถอดรหัสข้อมูลด้วย โดยการจะย้อน Public Key เป็น Private Key นั้นก็ไม่ใช่เรื่องง่าย เราเคยเขียนไว้ในบทความด้านบนนี้ไว้แล้ว ลองกลับไปอ่านได้
เมื่อเราขอสร้าง Passkey มันมีตัวละครทั้งหมดสามตัวด้วยกันคือ Authenticator ไม่ว่าจะเป็น เครื่องของเราเอง หรือ Hardware Key อย่าง Yubikey, Web Browser และ Server ปลายทาง ใน Protocol การทำงาน มันแบ่งออกเป็น 2 ตัวด้วยกันคือ CTAP และ WebAuthN
Protocol แรกคือ CTAP (Client to Authenticator Protocol) ที่จะเป็นตัวสื่อสารระหว่าง Web Browser ที่เราใช้งานกับ Authenticator เพื่อ ยืนยันตัวตน โดยเขาจะมีการส่ง Challenge เข้าไปเพื่อให้ Authenticator มันทดลองเข้ารหัสแล้วส่งกลับ ทำให้ การเข้ารหัส และ Private Key จริง ๆ จะอยู่บน Authenticator ทั้งหมด
ทำให้เราไม่ต้องกังวลว่า Private Key จะหลุด หาก Authenticator เราเป็นพวก FIDO Hardware Key เช่น เราเองใช้ Yubikey เพราะ Private Key มันไม่ได้ถูก Transfer เข้ามาในเครื่องที่เราเอาไปเสียบ
แต่ในกรณีของคนส่วนใหญ่ เราคิดว่า น่าจะใช้ Authenticator ที่อยู่ในเครื่องของเรา เช่น macOS รองรับการใช้งาน Passkey นี้ผ่าน iCloud Keychain พวกนี้มันจะมีข้อดีคือ ตัว Private Key ของเราได้รับการ Sync ไปในทุก ๆ อุปกรณ์ที่ Login ด้วย iCloud Account เดียวกัน แต่พวกนี้มันจะถูกเข้ารหัสอีกทีด้วย Credential ของเราอีกที ดังนั้นในความเป็นจริง ใช่แหละ Apple เก็บข้อมูลของเรา แต่ข้อมูลที่เก็บมันโดนเข้ารหัสยึกยือไปหมด อ่านไม่ออกหรอก
และอีกส่วนคือ Web Browser คุยกับ Server ปลายทาง Protocol นี้ชื่อว่า Web Authentication (WebAuthN) ทำหน้าที่เป็นเหมือนคนกลางคุยล้วน ๆ เช่น การสร้าง Passkey ใหม่ มันจะต้องคุยผ่าน WebAuthN ไปที่ปลายทางว่า เราจะสร้าง Passkey นะ แล้วส่ง Public Key ไปให้ ถามว่า Public Key มาจากไหนละ ง่ายมากคือ มันจะไปขอ Authenticator มาผ่าน CTAP นั่นเอง
เวลาเราจะเข้าใช้งาน เมื่อเรากด Sign in with Passkey เข้าไป Web Browser จะใช้ WebAuthN ส่ง Request ไปที่ Server ปลายทาง ถ้าบอกว่า โอเคทำได้ มันจะส่งข้อมูลชุดนึงกลับมา เราเรียกว่า Challenge แต่ Web Browser ไม่ได้เป็น Authenticator ซะเอง มันจะต้องใช้ CTAP เข้าไปคุยกับ Authenticator ว่า นาย ๆ ช่วย Sign หรือเข้ารหัสข้อมูลชุดนี้ที่ Server ปลายทางส่งมาให้เราหน่อย
Authenticator ก็จะทำการเข้ารหัสแล้วส่งกลับไปให้ Web Browser ผ่าน CTAP เหมือนเดิม แล้ว Web Browser จะตอบ ผลลัพธ์ของ Challenge กลับไปผ่าน WebAuthN จากนั้น ปลายทาง ที่รู้ข้อมูลต้นฉบับ และ ถือ Public Key จะลองเข้ารหัสข้อมูลชุดเดียวกัน แล้วเทียบกับสิ่งที่ Web Browser ตอบกลับมา ถ้าตรงกัน แปลว่า Public Key ที่ปลายทางมันใช้เข้ารหัสถูกสร้างมาจาก Private Key ที่เข้ารหัสข้อมูลที่ส่ง Challenge ไปแน่นอน แปลว่า การยืนยันตัวตนสำเร็จนั่นเอง นี่แหละคือหลักการของ Passkey
ตัว Passkey เองจริง ๆ มันถูกออกแบบมาเพื่อให้ ผู้ใช้สามารถ Authenticate โดยไม่จำเป็นต้องใช้ Password ได้ อย่างที่เราบอกว่า ปัญหาของคนส่วนใหญ่คือ จำ Password ไม่ได้มันยาก เลยลามไปถึงใช้ Password เดียวกัน หรือใช้ Password ที่คาดเดาได้ง่าย แต่ Passkey ออกมาเพื่อแก้ปัญหานี้ โดยการใช้ Public-Key Cryptography ทำให้ไม่ต้องมานั่งจำรหัสอีกต่อไปละ สิ่งที่เราใช้ยืนยันตัวตนแทนนั่นคือ Public Key และ Private Key ที่เราเก็บไว้ในเครื่องของเรา
นอกจากนั้น เวลา WebAuthN มันคุยกัน มันไม่ได้คุยแค่ว่า เรา Challenge อะไร คืนกลับไปเป็นอะไร แต่... มันดู Domain Name ของคนที่คุยด้วยว่า มันเป็นใคร เพราะมันต้องใช้ Private Key คนซะเซ็ตกัน ดังนั้น เรื่อง Phishing Site ถึงจะลอกมาได้ แต่สุดท้ายกด Passkey เข้าไป มัน งง แน่นอน ห่ะ Login ด้วย Passkey ของเว็บอะไรนะ.... หรือถึงจะปลอม Domain Name ได้ แต่สิ่งที่ได้ไป ก็คือคำตอบของ Challenge เท่านั้น กว่าจะเดา Public Key ได้ก็ไม่ง่าย ซึ่งจะเอาไปใช้ไม่ได้อีก แล้วกว่าจะเดา Private Key จาก Public Key ที่หามาได้ ก็ยากเข้าไปใหญ่ มันเลยป้องกันการเผลอ Login Phishing Site ได้ดีเลยแหละ
จริง ๆ ข้อเสีย เกิดจากข้อดีของมันนี่แหละ เพราะจากเดิม Password ใน Ideal Case คือ เราที่เป็นคน เป็นผู้เก็บ Password ไว้ในสมองเอง แต่การใช้ Passkey ตัว Private Key ที่เราต้องเก็บลับยิ่งชีพนั้นอยู่ใน Authenticator เช่น เครื่องของเรา หรือบน Hardware Key ของเรา หาก Authenticator หายไป เรียกว่า แตกเลยละ
แต่ ๆๆๆๆๆ ส่วนใหญ่พวก Authenticator มันมีระบบป้องกันให้เราอีกชั้นหนึ่ง เช่น iCloud Keychain เอง มันผูกกับ Biometric ของเรา เช่น FaceID หรือ TouchID ของเราเอง และกลุ่มพวก Hardware Authenticator เช่น Yubikey เขาจะใช้ PIN หรือบางรุ่นที่รองรับ Biometric จะใช้พวก Fingerprint Scanner ช่วยอีกขั้นอยู่แล้ว ทำให้หากหายไป เรายังอุ่นใจได้เปราะหนึ่งว่า มันไม่น่าจะโดนสูบโดยตรงได้
และอีกข้อเสียคือ ณ วันที่เราเขียน เว็บที่รองรับ Passkey ยังมีไม่มากเท่าไหร่ แต่เราคิดว่า มันน่าจะค่อย ๆ เพิ่มขึ้นเรื่อย ๆ แหละ ก็ต้องรอเขา Implement ตามมาตรฐานของ FIDO แหละ
Passkey เป็นวิธีการยืนยันตัวตนบนโลกอินเตอร์เน็ตมาตรฐานใหม่ ที่เปลี่ยนจากการใช้ Password แบบเดิม ๆ เป็นการใช้ Public-Key Cryptography ในการช่วยยืนยันตัวตนแทน มีข้อดีทำให้ผู้ใช้อย่างเรา ๆ ไม่จำเป็นต้องจำ Password หรือใช้ Bandage Solution อย่าง Password Manager ได้หมดจด เราแนะนำว่า หากเครื่องของใครสามารถใช้งานได้ เราแนะนำเป็นอย่างมากให้เปิดใช้งาน มันปลอดภัยมากขึ้น และ ใช้งานสะดวกขึ้นมาก ๆ เลยแหละ
เคยสงสัยกันมั้ยว่า Filter ที่เราใช้เบลอภาพ ไม่ว่าจะเพื่อความสวยงาม หรืออะไรก็ตาม แท้จริงแล้ว มันทำงานอย่างไร วันนี้เราจะพาไปดูคณิตศาสตร์และเทคนิคเบื้องหลังกันว่า กว่าที่รูปภาพจะถูกเบลอได้ มันเกิดจากอะไร...
หลังจากดูงาน Google I/O 2024 ที่ผ่านมา เรามาสะดุดเรื่องของการใส่ Watermark ลงไปใน Content ที่ Generate จาก AI วันนี้เราจะมาเล่าให้อ่านกันว่า วิธีการทำ Watermark ใน Content ทำอย่างไร...
ก่อนหน้านี้เราทำ Content เล่าความแตกต่างระหว่าง CPU, GPU และ NPU ทำให้เราเกิดคำถามขึ้นมาว่า เอาเข้าจริง เราจำเป็นต้องมี NPU อยู่ในตลาดจริง ๆ รึเปล่า หรือมันอาจจะเป็นแค่ Hardware ตัวนึงที่เข้ามาแล้วก็จากไปเท่านั้น วันนี้เราจะมาเล่าให้อ่านกัน...
บทความนี้ เราเขียนสำหรับมือใหม่ หรือคนที่ไม่ได้เรียนด้านนี้แต่อยากรู้ละกัน สำหรับวันนี้เรามาพูดถึงคำที่ถ้าเราทำงานกับพวก Developer เขาคุยกันบ่อย ๆ ใช้งานกันเยอะ ๆ อย่าง Database กันว่า มันคืออะไร ทำไมเราต้องใช้ และ เราจะมีตัวเลือกอะไรในการใช้งานบ้าง...