รหัสผ่านถูกเจาะได้อย่างไร?
บัญชีต่างๆ ไม่ได้ถูกเจาะในลักษณะเดียวกับที่ปรากฏในภาพยนตร์ ในทางปฏิบัติจริง รหัสผ่านจะได้มาด้วยสามวิธีหลักๆ วิธีแรกคือถูกเจาะ (Cracked): ค้นพบโดยการทดสอบรหัสผ่านที่เป็นไปได้ทีละตัว ซึ่งมักกระทำกับฐานข้อมูลค่าแฮชของรหัสผ่านที่ถูกขโมยมาจากผู้ให้บริการ วิธีที่สองคือถูกขโมย (Stolen): ถูกพิมพ์ลงในหน้าเว็บปลอมหรือถูกคัดลอกโดยมัลแวร์ และวิธีสุดท้ายคือถูกนำกลับมาใช้ซ้ำ (Reused): ผู้โจมตีนำรหัสผ่านจากการรั่วไหลในอดีตมาทดสอบกับบริการอื่นๆ โดยหวังว่าเจ้าของจะใช้รหัสผ่านเดียวกัน ความแตกต่างนี้มีความสำคัญ เพราะแต่ละวิธีต้องใช้มาตรการรับมือที่แตกต่างกัน บทความนี้จะไล่ดูวิธีการโจมตีหลักๆ และระบุแนวทางป้องกันสำหรับแต่ละวิธี
การใช้รหัสผ่านซ้ำจากเหตุการณ์ข้อมูลรั่วไหล
ในแต่ละปีมีบริการต่างๆ ถูกเจาะระบบ และฐานข้อมูลผู้ใช้ก็ถูกนำไปขายต่อหรือเผยแพร่อย่างเปิดเผย ผู้โจมตีจะนำคู่อีเมลและรหัสผ่านจากการรั่วไหลครั้งหนึ่งไปทดสอบโดยอัตโนมัติกับธนาคาร ผู้ให้บริการอีเมล ร้านค้าออนไลน์ และเครือข่ายสังคมออนไลน์ — การโจมตีนี้เรียกว่าการสวมรอยข้อมูลประจำตัว (Credential Stuffing) วิธีนี้ไม่มีการคาดเดาใดๆ ทั้งสิ้น และประสบผลสำเร็จด้วยเหตุผลง่ายๆ: ผู้คนชอบใช้รหัสผ่านซ้ำกัน แม้จะเป็นรหัสผ่านที่แข็งแกร่งก็ไม่สามารถช่วยอะไรได้หากนำไปใช้ซ้ำในทุกที่
สิ่งที่ช่วยได้: ใช้รหัสผ่านที่แตกต่างกันสำหรับทุกบัญชี เพื่อให้การรั่วไหลจากบริการหนึ่งไม่สามารถเปิดเข้าสู่บริการอื่นใดได้
ฟิชชิง
หน้าฟิชชิงคือการจำลองหน้าล็อกอินจริงขึ้นมาบนที่อยู่เว็บไซต์ที่ผิดเพี้ยนไปเล็กน้อย โดยผู้ใช้จะถูกนำทางไปผ่านลิงก์ในอีเมลหรือข้อความที่สร้างสถานการณ์เร่งด่วน: บัญชีถูกระงับ พัสดุตกค้าง หรือใบแจ้งหนี้ สิ่งใดก็ตามที่คุณพิมพ์ลงไปจะถูกส่งไปยังผู้โจมตีโดยตรง ความยาวและความสุ่มของรหัสผ่านไม่ได้ช่วยสร้างความแตกต่างในกรณีนี้ เพราะคุณเป็นผู้กรอกข้อมูลลงไปเอง
สิ่งที่ช่วยได้: เปิดเว็บไซต์จากบุ๊กมาร์กที่คุณบันทึกไว้เองแทนที่จะคลิกลิงก์ ใช้โปรแกรมจัดการรหัสผ่าน: มันจะเสนอให้กรอกรหัสผ่านเฉพาะบนที่อยู่เว็บไซต์ที่บันทึกไว้เท่านั้น ดังนั้นหากโปรแกรมไม่เสนอรหัสผ่านที่บันทึกไว้ ให้ตรวจสอบที่อยู่เว็บไซต์ก่อนพิมพ์ด้วยตนเอง และเปิดใช้งานการยืนยันตัวตนแบบสองขั้นตอน ซึ่งจะทำให้รหัสผ่านที่ถูกขโมยไปเพียงอย่างเดียวไม่สามารถล็อกอินได้ อย่างไรก็ตาม รหัสผ่านแบบใช้ครั้งเดียวก็ยังอาจถูกฟิชชิงได้ในลักษณะเดียวกับรหัสผ่าน แต่พาสคีย์และกุญแจความปลอดภัย FIDO2 ไม่สามารถถูกฟิชชิงได้ เนื่องจากจะตอบสนองต่อเว็บไซต์ที่ถูกต้องเท่านั้น — ซึ่งเป็นข้อแตกต่างที่ NIST เรียกว่าการต้านทานฟิชชิง
มัลแวร์
โปรแกรมที่รู้จักกันในชื่อ Infostealer จะคัดลอกรหัสผ่านที่บันทึกไว้ในเบราว์เซอร์ พร้อมทั้งคุกกี้เซสชัน และส่งออกไปภายในไม่กี่วินาทีหลังจากถูกเปิดใช้งาน ในขณะที่คีย์ล็อกเกอร์จะบันทึกทุกสิ่งที่คุณพิมพ์ คุกกี้เซสชันที่ถูกขโมยไปสามารถทำให้ผู้โจมตีเข้าสู่บัญชีที่ล็อกอินค้างไว้ได้ทันทีโดยไม่ต้องใช้รหัสผ่านและไม่ต้องผ่านขั้นตอนที่สอง โปรแกรมเหล่านี้มักแฝงมากับซอฟต์แวร์ละเมิดลิขสิทธิ์ การอัปเดตปลอม และไฟล์แนบในอีเมล
สิ่งที่ช่วยได้: ติดตั้งซอฟต์แวร์จากแหล่งที่มาอย่างเป็นทางการเท่านั้น อัปเดตระบบและเบราว์เซอร์ให้เป็นปัจจุบันอยู่เสมอ และปฏิบัติต่อไฟล์แนบที่ไม่คาดคิดว่าอาจเป็นอันตรายไว้ก่อน — ซึ่งทั้งหมดนี้ไม่ได้เป็นการรับประกัน หากอุปกรณ์ติดมัลแวร์ ให้ดำเนินการจากอุปกรณ์อื่นที่คุณมั่นใจว่าปลอดภัย: เปลี่ยนรหัสผ่าน ใช้ตัวเลือกออกจากระบบทุกเซสชันของแต่ละบริการ และตรวจสอบว่าอีเมลสำรอง หมายเลขโทรศัพท์ และการตั้งค่าการยืนยันตัวตนแบบสองขั้นตอนยังคงเป็นของคุณ จากนั้นให้ล้างมัลแวร์ออกจากเครื่องที่ติดเชื้อก่อนจะลงชื่อเข้าใช้อีกครั้ง
การคาดเดาที่หน้าฟอร์มล็อกอิน
การลองสุ่มรหัสผ่านโดยตรงกับเว็บไซต์ทำงานได้ช้ามาก: บริการที่ออกแบบมาเป็นอย่างดีจะหน่วงเวลา บล็อก หรือขอให้กรอกแคปต์ชาหลังจากการป้อนรหัสผ่านผิดไม่กี่ครั้ง นั่นทำให้การโจมตีบัญชีเดี่ยวอย่างต่อเนื่องไม่มีประสิทธิภาพ ผู้โจมตีจึงนิยมใช้วิธีตรงกันข้าม: นำรหัสผ่านยอดนิยมเพียงไม่กี่รหัส — 123456, password, qwerty123 — ไปทดสอบกับบัญชีเป้าหมายนับล้านบัญชี ซึ่งเรียกว่าการพ่นรหัสผ่าน (Password Spraying) ส่วนการคาดเดาแบบเจาะจงเป้าหมายจะใช้ข้อมูลส่วนตัว: ชื่อบุตรหลาน สัตว์เลี้ยง วันเกิด หรือทีมกีฬาที่ชื่นชอบ ซึ่งสามารถค้นหาได้ง่ายบนโซเชียลมีเดีย
สิ่งที่ช่วยได้: รหัสผ่านใดก็ตามที่ไม่ใช่คำทั่วไปและไม่ได้สร้างขึ้นจากข้อมูลส่วนตัวของคุณ — ดูวิธีได้ที่วิธีสร้างรหัสผ่านที่คาดเดายาก
การเจาะค่าแฮชที่ถูกขโมยแบบออฟไลน์
บริการที่สร้างขึ้นอย่างถูกต้องจะไม่จัดเก็บรหัสผ่านในรูปแบบข้อความธรรมดา แต่จะจัดเก็บค่าแฮช — ซึ่งเป็นผลลัพธ์ของฟังก์ชันทางเดียวที่ไม่สามารถคำนวณย้อนกลับเป็นรหัสผ่านเดิมได้ เมื่อฐานข้อมูลดังกล่าวรั่วไหล ผู้โจมตีจะทดสอบรหัสผ่านที่เป็นไปได้: โดยคำนวณค่าแฮชของรหัสผ่านที่เป็นไปได้บนอุปกรณ์ของตนเองแล้วนำมาเปรียบเทียบ โดยไม่มีหน้าฟอร์มล็อกอินมาคอยหน่วงเวลา และความเร็วจะขึ้นอยู่กับฟังก์ชันแฮชที่บริการเลือกใช้และการตั้งค่า สำหรับฟังก์ชันที่ล้าสมัยและประมวลผลเร็วอย่าง MD5 การ์ดจอสมัยใหม่เพียงใบเดียวสามารถทดสอบรหัสผ่านได้หลายหมื่นล้านค่าต่อวินาที ฟังก์ชันที่ออกแบบมาเพื่อจัดเก็บรหัสผ่านโดยเฉพาะ — เช่น Argon2id หรือ bcrypt ในระบบรุ่นเก่า — จะถูกออกแบบมาให้ประมวลผลช้าลงอย่างมากเพื่อลดอัตราความเร็วดังกล่าวลงหลายระดับขนาด (orders of magnitude) ซึ่งเป็นเหตุผลที่คำแนะนำปัจจุบันสนับสนุนให้เลือกใช้ฟังก์ชันเหล่านี้
การโจมตีแบบพจนานุกรม
รหัสผ่านที่ถูกทดสอบไม่ได้มาจากการสุ่ม เครื่องมือเจาะรหัสจะเริ่มต้นด้วยรายชื่อรหัสผ่านจริงจากการรั่วไหลในอดีต ร่วมกับพจนานุกรมคำศัพท์และชื่อบุคคล จากนั้นจะใช้กฎที่เลียนแบบพฤติกรรมมนุษย์: ขึ้นต้นด้วยตัวพิมพ์ใหญ่ ตามด้วยปีเกิดหรือเครื่องหมายตกใจ หรือแทนที่ตัวอักษรด้วยสัญลักษณ์ที่คล้ายกัน รหัสผ่านอย่าง Summer2024! แม้จะดูซับซ้อนแต่ก็เป็นหนึ่งในรหัสผ่านกลุ่มแรกๆ ที่จะถูกทดสอบ การใส่ซอลต์ (Salting) — ซึ่งคือการเพิ่มค่าสุ่มเฉพาะลงในแต่ละรหัสผ่านก่อนนำไปแฮช — จะช่วยป้องกันไม่ให้ผู้โจมตีใช้ตารางแฮชสำเร็จรูปที่เรียกว่า Rainbow Table และป้องกันการเจาะรหัสผ่านที่เหมือนกันทั้งหมดในคราวเดียวได้ แต่มันไม่ได้ทำให้รหัสผ่านที่คาดเดาได้ คาดเดาได้ยากขึ้นเลย
การโจมตีแบบบรูตฟอร์ซ (Brute Force)
เมื่อคำในพจนานุกรมถูกใช้จนหมด สิ่งที่เหลืออยู่คือการทดสอบทุกชุดค่าผสมที่เป็นไปได้ และสำหรับรหัสผ่านที่สร้างขึ้นแบบสุ่ม ความยาวคือสิ่งที่จะตัดสินผลลัพธ์ เพื่อให้เห็นภาพ สมมติว่าใช้ฟังก์ชันแฮชที่รวดเร็วและรหัสผ่านที่ทุกตัวอักษรถูกเลือกอย่างเป็นอิสระต่อกันและมีโอกาสเท่ากันจากอักขระ ASCII ที่พิมพ์ได้ 94 ตัว (ไม่รวมเว้นวรรค) รหัสผ่านขนาด 8 ตัวอักษรจะมีรูปแบบประมาณ 6 × 1015 ชุด; ที่อัตราการเดาหนึ่งหมื่นล้านครั้งต่อวินาที การทดสอบทั้งหมดจะใช้เวลาประมาณหนึ่งสัปดาห์ และโดยเฉลี่ยจะพบคำตอบที่ถูกต้องภายในเวลาครึ่งหนึ่งของนั้น สำหรับรหัสผ่านขนาด 12 ตัวอักษร การทดสอบทั้งหมดบนอุปกรณ์เดียวกันจะใช้เวลาประมาณ 1.5 ล้านปี และสำหรับ 16 ตัวอักษร ตัวเลขจะยิ่งสูงเกินกว่าจะเปรียบเทียบได้ นี่คือเหตุผลทั้งหมดในการใช้รหัสผ่านแบบสุ่มที่มีความยาว: พจนานุกรมแทบไม่มีประโยชน์ในการเจาะรหัสเหล่านี้ และภายใต้สมมติฐานนี้ การลองทุกชุดค่าผสมก็เป็นไปไม่ได้ในทางปฏิบัติ โปรแกรมสุ่มรหัสผ่านที่ปลอดภัยของเราสร้างรหัสผ่านขึ้นในเบราว์เซอร์ของคุณ และแสดงค่าประมาณการเอนโทรปีสำหรับแต่ละรหัสผ่านในหน่วยบิต
สิ่งที่ช่วยได้: รหัสผ่านที่มีความยาวและไม่มีรูปแบบของมนุษย์ ซึ่งในทางปฏิบัติหมายถึงรหัสผ่านที่สร้างขึ้นโดยระบบ คุณไม่สามารถควบคุมวิธีการจัดเก็บรหัสผ่านของผู้ให้บริการได้ ดังนั้นให้เตรียมพร้อมรับมือกับสถานการณ์ที่เลวร้ายที่สุด และเลือกรหัสผ่านที่ทนทานต่อการคาดเดาแม้ว่าจะถูกจัดเก็บด้วยฟังก์ชันแฮชที่รวดเร็วก็ตาม
การแอบดูและการใช้จิตวิทยาหลอกลวง (Social Engineering)
วิธีการดั้งเดิมที่สุดไม่จำเป็นต้องพึ่งพาเทคโนโลยีใดๆ รหัสผ่านอาจถูกแอบมองข้ามไหล่ ถูกอ่านจากกระดาษโน้ตที่แปะไว้บนหน้าจอ หรือมองเห็นจากการแชร์หน้าจอในการประชุมวิดีโอ; หรือผู้โจมตีอาจโทรมาหลอกถามตรงๆ โดยแอบอ้างว่าเป็นเจ้าหน้าที่ฝ่ายสนับสนุนหรือเพื่อนร่วมงาน — ซึ่งเรียกว่าวิศวกรรมสังคม (Social Engineering) ผู้ให้บริการที่ถูกต้องตามกฎหมายจะไม่มีวันขอรหัสผ่านของคุณผ่านทางโทรศัพท์ อีเมล หรือแชท
สิ่งที่ช่วยได้: อย่าบอกหรือส่งรหัสผ่านให้ใคร และอย่าบันทึกไว้ในจุดที่ผู้อื่นสามารถมองเห็นได้
บทสรุปทั้งหมด
การโจมตีรูปแบบต่างๆ ต้องรับมือด้วยพฤติกรรมที่แตกต่างกัน และสามข้อในนั้นช่วยได้เป็นส่วนใหญ่: ใช้รหัสผ่านที่ไม่ซ้ำกันในทุกบัญชี สร้างโดยระบบสุ่มแทนการคิดขึ้นเอง พร้อมทั้งเปิดใช้งานการยืนยันตัวตนแบบสองขั้นตอน — หรือใช้พาสคีย์แทนรหัสผ่านในจุดที่บริการรองรับ สิ่งเหล่านี้อาจไม่ได้ป้องกันได้ทุกอย่าง — เช่น เซสชันที่ถูกขโมย — นั่นคือเหตุผลที่คำแนะนำเรื่องมัลแวร์ข้างต้นมีความสำคัญเช่นเดียวกัน ดูบทความเพิ่มเติมได้ที่คู่มือรหัสผ่าน