ความแข็งแกร่งของรหัสผ่านความแข็งแกร่งของรหัสผ่าน หรือ ความเข้มแข็งของรหัสผ่าน เป็นค่าวัดประสิทธิผลของรหัสผ่านในการต้านทานการคาดเดาหรือการโจมตีด้วยกำลัง โดยทั่วไปแล้วจะประเมินจากจำนวนครั้งโดยเฉลี่ยที่ผู้โจมตีซึ่งไม่มีความรู้เกี่ยวกับรหัสผ่านโดยตรง จะต้องลองเพื่อให้เดารหัสผ่านได้อย่างถูกต้อง ความแข็งแกร่งจะมีค่าตามฟังก์ชันของจำนวน ความหลากหลาย และความสุ่มของตัวอักษร[1] การใช้รหัสผ่านที่เข้มแข็งย่อมลดความเสี่ยงของระบบไม่ให้ถูกบุกรุก แต่ก็ใช่ว่าจะทดแทนการรักษาความปลอดภัยชนิดอื่น ๆ ได้[2] ประสิทธิผลของรหัสผ่านจะขึ้นอยู่กับการออกแบบและการทำให้เกิดผลของปัจจัยพิสูจน์ตัวจริงต่าง ๆ รวมทั้งสิ่งที่ผู้ใช้รู้ (เช่นรหัสผ่าน) สิ่งที่มี (เช่น กุญแจฮาร์ดแวร์) และสิ่งที่เป็น (เช่น ลายนิ้วมือ) ปัจจัยแรกที่ว่าเป็นประเด็นหลักของบทความนี้ อัตราที่ผู้โจมตีสามารถทดลองรหัสผ่านกับระบบเป็นปัจจัยหลักที่กำหนดความมั่นคง ระบบบางอย่างจึงมีการให้พักนอกเวลาเป็นวินาที ๆ หลังจากที่ใส่รหัสผ่านผิด ๆ เพียงไม่กี่ครั้ง (เช่น 3 ครั้ง) เมื่อไร้ความบกพร่องชนิดอื่น ๆ ระบบดังกล่าวก็จะสามารถรักษาความมั่นคงด้วยรหัสผ่านที่ไม่ต้องซับซ้อนมาก อย่างไรก็ดี ระบบก็ยังต้องเก็บข้อมูลรหัสผ่านของผู้ใช้ในรูปแบบบางอย่าง ถ้าข้อมูลนั้นถูกขโมย ก็อาจเป็นปัจจัยให้รหัสผ่านถูกแฮ็กได้ ในปี 2019 ศูนย์ความมั่นคงทางไซเบอร์แห่งชาติสหราชอาณาจักร ได้วิเคราะห์ฐานข้อมูลบัญชีรั่วไหลที่เป็นสาธารณะ เพื่อตรวจดูว่าผู้ใช้ใช้คำหรือวลีอะไรเป็นรหัสผ่านมากที่สุด ที่นิยมที่สุดก็คือ 123456 ซึ่งถูกแฮ็กมาแล้วถึง 23 ล้านครั้ง ที่นิยมเป็นอันดับสองก็คือ 123456789 ซึ่งก็เดาได้ไม่ยากกว่ามาก[3] การสร้างรหัสผ่านผู้ใช้สามารถใช้ตัวสร้างรหัสผ่านสุ่มอัตโนมัติ หรือตั้งรหัสผ่านขึ้นเอง โดยอย่างหลังมักจะสามัญกว่า ความเข้มแข็งของรหัสผ่านที่สร้างขึ้นโดยสุ่มในการต่อต้านการโจมตีแบบใช้กำลังสามารถประเมินค่าได้อย่างแม่นยำ แต่รหัสผ่านที่สร้างเองประเมินได้ยาก เมื่อผู้ใช้เลือกรหัสผ่านสำหรับแอปหรือเว็บไซต์ ก็มักจะได้คำแนะนำหรือข้อจำกัด รหัสผ่านที่สร้างเองจะประเมินค่าความแข็งแกร่งได้เพียงแต่คร่าว ๆ เพราะมักทำตามรูปแบบและการมีรูปแบบก็จะช่วยให้เดาได้ง่ายขึ้น[4] อนึ่ง ยังมีรายการรหัสผ่านยอดนิยมซึ่งสามารถป้อนให้แก่โปรแกรมเดารหัสผ่าน รายการเช่นนี้จะมาจากพจนานุกรมออนไลน์ในภาษาต่าง ๆ, จากฐานข้อมูลรหัสผ่านทั้งที่บันทึกเป็นอักษรเปล่าหรือเป็นค่าแฮชที่ได้เจาะมาจากบัญชีธุรกิจและบัญชีสื่อสังคม และจากรหัสผ่านที่สามัญอื่น ๆ ดังนั้น รหัสผ่านและรหัสผ่านที่ดัดแปลงง่าย ๆ จากรายการเช่นนี้จึงจัดว่าอ่อนแอทั้งหมด แม้ปัจจุบันจะมีโปรแกรมสร้างรหัสผ่านแบบสุ่มซึ่งหมายให้ใช้ได้ง่าย แต่ปกติก็จะสร้างรหัสผ่านที่จำได้ยาก จึงทำให้ผู้ใช้มักเลือกรหัสเองซึ่งปกติจะไม่ปลอดภัย เพราะสิ่งที่บุคคลเลือกมักจะขึ้นอยู่กับรูปแบบการดำเนินชีวิต การบันเทิงที่ชอบใจ และเรื่องที่เกี่ยวข้องกับบุคคลนั้น ๆ ในขณะที่สื่อสังคมออนไลน์ก็มักจะทำให้สืบหาเก็บข้อมูลต่าง ๆ เกี่ยวกับบุคคลนั้นได้ง่าย ความถูกต้องของรหัสผ่านที่เดาระบบที่ใช้รหัสผ่านเพื่อพิสูจน์ตัวตนจะต้องตรวจสอบว่ารหัสผ่านที่ให้ถูกต้องหรือไม่ ถ้าเก็บรหัสผ่านเปล่าไว้ในไฟล์หรือในฐานข้อมูล ผู้โจมตีที่เข้าถึงระบบได้ก็อาจสามารถเก็บรหัสผ่านของผู้ใช้ได้ทั้งหมด ทำให้เข้าถึงบัญชีในระบบได้ทั้งหมด และบางที ก็ระบบอื่น ๆ ด้วยที่ผู้ใช้ใช้รหัสผ่านเช่นเดียวกันหรือคล้าย ๆ กัน วิธีลดความเสี่ยงอย่างหนึ่งก็คือการเก็บแต่ค่าแฮช (cryptographic hash) ของรหัสผ่านแทนที่จะเก็บรหัสผ่านเปล่าเอง ค่าแฮชที่ทำตามมาตรฐานต่าง ๆ เช่น จากกลุ่ม Secure Hash Algorithm (SHA) จะคำนวณกลับคืนเป็นรหัสผ่านดั้งเดิมได้ยากมาก ดังนั้นผู้โจมตีที่เพียงแต่ได้ค่าแฮช จึงไม่สามารถบอกรหัสผ่านดั้งเดิมโดยทันที แต่การมีค่าแฮชก็จะอาจทำให้แฮ็กรหัสผ่านได้เมื่อทำออฟไลน์ มีโปรแกรมเจาะรหัสผ่านที่สามารถทดสอบรหัสได้เป็นจำนวนมากโดยคำนวณค่าแฮชที่เป็นเป้าหมาย เทคโนโลยีได้พัฒนาขึ้นเรื่อย ๆ ดังนั้น การเดารหัสผ่านก็เร็วขึ้นเรื่อย ๆ เช่นกัน ยกตัวอย่างเช่นในปี 2010 สถาบันการวิจัยจอร์เจียเทคได้พัฒนาวิธีการเจาะรหัสผ่านที่เร็วยิ่งขึ้นมากโดยใช้หน่วยประมวลผลกราฟิกส์เป็นตัวคำนวณ[5] ในปี 2011 ก็เริ่มมีผลิตภัณฑ์ที่อ้างว่าสามารถทดสอบรหัสผ่านได้ถึง 112,000 ตัว/วินาทีบนคอมพิวเตอร์ตั้งโต๊ะธรรมดาโดยใช้หน่วยประมวลผลกราฟิกส์ชั้นสูงที่มีในตอนนั้น[6] อุปกรณ์ที่ว่าสามารถเจาะรหัสผ่านยาว 6 ตัวอักษรและมีอักษรตัวเล็กหรือตัวใหญ่เพียงอย่างเดียวโดยเสร็จในวันเดียว และยังสามารถแจกกระจายงานไปยังคอมพิวเตอร์จำนวนมากเพื่อเพิ่มความเร็ว โดยจะเร็วตามจำนวนคอมพิวเตอร์ที่มีหน่วยประมวลผลกราฟิกส์ในระดับเดียวกัน มีเทคนิคเพิ่มความแข็งแกร่งของค่าแฮช คือ การยืดกุญแจ ซึ่งเพิ่มเวลาในการคำนวณค่าแฮช เป็นการลดอัตราการเดารหัสผ่านที่จะทำได้ แม้เทคนิคนี้ปัจจุบันจะจัดว่าเป็นแนวปฏิบัติที่ดีสุด แต่ระบบทั่ว ๆ ไปก็ไม่ค่อยใช้ สถานการณ์อีกอย่างหนึ่งที่ทำให้เดารหัสผ่านได้อย่างรวดเร็วก็คือเมื่อใช้รหัสผ่านเป็นกุญแจเข้ารหัสลับ (cryptographic key) ผู้โจมตีจึงตรวจสอบดูได้ว่า รหัสผ่านที่เดาสามารถถอดรหัสลับของข้อมูลได้หรือไม่ เช่น มีผลิตภัณฑ์หนึ่งที่อ้างว่าสามารถตรวจสอบรหัสผ่านวายฟายชนิด WPA PSK ได้ถึง 103,000 ตัว/วินาที[7] ถ้าระบบเก็บรหัสผ่านไว้เป็นค่าแฮช ผู้โจมตีก็อาจคำนวณค่าแฮชไว้ล่วงหน้าสำหรับรหัสผ่านที่สามัญ หรือสำหรับรหัสผ่านที่สั้น ๆ แล้วสามารถแฮ็กเอารหัสผ่านดั้งเดิมได้อย่างรวดเร็วเมื่อขโมยเอาค่าแฮชได้ อนึ่ง ผู้โจมตีอาจเก็บค่าแฮชไว้ในฐานข้อมูลที่เรียกว่า rainbow table ที่ทำให้เจาะเอารหัสผ่านได้อย่างมีประสิทธิภาพ แต่วิธีการโจมตีนี้ก็ป้องกันได้โดยใช้ค่าสุ่มที่เรียกว่า cryptographic salt แล้วเก็บไว้ร่วมกับค่าแฮช ค่าสุ่มนี้จะใช้ร่วมกับรหัสผ่านเมื่อคำนวณค่าแฮช ดังนั้นผู้โจมตีที่ใช้ฐานข้อมูลก็จะต้องเก็บรหัสผ่านกับค่าแฮชและค่าสุ่มที่เป็นไปได้ทุกค่า ซึ่งทำไม่ได้เมื่อค่าสุ่มมีขนาดใหญ่พอเช่นเป็นเลข 32 บิต แต่ระบบพิสูจน์ตัวตนเป็นจำนวนมากก็มักไม่ใช้ค่าสุ่มนี้ ดังนั้น จึงมีฐานข้อมูลเจาะรหัสผ่านสำหรับค่าแฮชโดยวิธีต่าง ๆ ทางอินเทอร์เน็ต ค่าวัดความแข็งแกร่งเป็นเอนโทรปีรหัสผ่านจะแข็งแกร่งแค่ไหนสามารถกำหนดได้ด้วยเอนโทรปีของข้อมูล (information entropy) ซึ่งเป็นแนวคิดที่ได้จากสาขาทฤษฎีสารสนเทศ เอนโทรปีของข้อมูลเป็นบิตจำนวนน้อยที่สุดซึ่งสามารถบรรจุข้อมูลที่มีในรหัสผ่านชนิดหนึ่ง ๆ โดยคร่าว ๆ จะเท่ากับลอการิทึมฐานสองของจำนวนการเดาสูงสุดเพื่อให้ได้รหัสผ่าน โดยมักเรียกว่า "บิตเอนโทรปี"[8] รหัสผ่านที่มี 42 บิตเอนโทรปีจะแข็งแกร่งเท่ากับการเลือกเลขศูนย์เลขหนึ่งโดยสุ่มติดต่อกัน 42 ตัว เช่น โยนเหรียญหัวก้อย 42 ครั้ง กล่าวอีกอย่างก็คือ รหัสผ่านที่มี 42 บิตเอนโทรปีจะต้องเดา 242 (4,398,046,511,104) ครั้งเพื่อให้ได้รหัสผ่านที่เป็นไปได้ทั้งหมด ดังนั้น การเพิ่มเอนโทรปีของรหัสผ่าน 1 บิตก็จะเพิ่มจำนวนการเดาเป็นเท่าตัว จึงทำให้แฮ็กได้ยากขึ้นเป็นทวีคูณ ผู้โจมตีโดยเฉลี่ยจะต้องเดารหัสผ่านเป็นจำนวนครึ่งหนึ่งก่อนจะได้รหัสผ่านที่ถูกต้อง[4] รหัสผ่านสุ่มรหัสผ่านสุ่มจะประกอบด้วยตัวอักษร/สัญลักษณ์เป็นจำนวนหนึ่งโดยได้จากระบวนการเลือกแบบสุ่มที่แต่ละตัวในชุดอักษร/สัญลักษณ์จะมีโอกาสเลือกเท่า ๆ กัน อาจจะเป็นอักษรหนึ่ง ๆ จากชุดอักขระเช่นแอสกี หรือเป็นพยางค์ที่ออกแบบเพื่อใช้สร้างรหัสผ่านที่ออกเสียงได้ หรือแม้แต่เป็นคำจากรายการคำ (เป็นการสร้างพาสเฟรซ) ความแข็งแกร่งของรหัสผ่านสุ่มจะขึ้นอยู่กับเอนโทรปีของตัวสร้าง แต่ตัวสร้างก็มักทำสุ่มไม่ได้จริง ๆ แต่ทำเป็นเสมือนสุ่ม (pseudorandom) ตัวสร้างรหัสผ่านที่มีให้ใช้ทั่วไปหลายตัวต่างใช้ตัวสร้างเลขสุ่มในคลังโปรแกรมที่จริง ๆ ก็มีเอนโทรปีจำกัด แต่ระบบปฏิบัติการปัจจุบันโดยมากก็มีตัวสร้างเลขสุ่มที่ดีทางวิทยาการรหัสลับ ดังนั้นจึงเหมาะสมเพื่อใช้สร้างรหัสผ่าน อนึ่ง ยังสามารถใช้ลูกเต๋าธรรมดาเพื่อสร้างรหัสผ่านสุ่มอีกด้วย รหัสผ่านที่สร้างด้วยกระบวนการเลือกสัญญลักษณ์ต่อ ๆ กันโดยสุ่ม มีความยาว L โดยเลือกจากกลุ่มสัญลักษณ์จำนวน N ตัว จะสามารถสร้างรหัสผ่านได้อย่างมาก NL ตัว ดังนั้นไม่ว่าจะเพิ่มค่า L หรือ N ก็จะทำให้รหัสผ่านที่สร้างแข็งแกร่งยิ่งขึ้น ความแข็งแกร่งเมื่อวัดโดยเอนโทรปีข้อมูล ก็คือลอการิทึมฐานสอง (log2) ของจำนวนรหัสผ่านที่เป็นไปได้ โดยสมมุติว่า สัญลักษณ์แต่ละตัวในรหัสผ่านจะเลือกอย่างเป็นอิสระ ดังนั้น เอนโทรปีข้อมูล H ก็จะคำนวณได้ด้วยสูตร
H มีหน่วยเป็นบิต[4][9] สำหรับนิพจน์ช่องสุดท้าย log จะมีฐานอะไรก็ได้
ข้อมูล 1 ไบต์มักจะเขียนเป็นเลขฐานสิบหก 2 ตัว เพื่อจะหาความยาวของรหัสผ่าน L ที่มีความแข็งแกร่ง H โดยเป็นรหัสผ่านสุ่มที่ได้จากชุดอักขระที่มีสัญลักษณ์ N ตัว สามารถใช้สูตรดังนี้คือ
โดย หมายถึงฟังก์ชันเพดาน คือ การปัดเศษขึ้นให้เลขเป็นจำนวนเต็ม ตารางต่อไปนี้ใช้สูตรดังว่าเพื่อแสดงจำนวนสัญลักษณ์ในรหัสผ่านที่สร้างขึ้นโดยสุ่มจริง ๆ เพื่อให้ได้เอนโทรปีตามที่ต้องการ โดยใช้ชุดสัญลักษณ์ที่สามัญ
รหัสผ่านที่มนุษย์สร้างปกติรู้ได้เลยว่ามนุษย์สร้างรหัสผ่านให้มีเอนโทรปีอันสมควรได้แย่มาก งานศึกษากับคนครึ่งล้านประเมินว่าเอนโทรปีโดยเฉลี่ยของรหัสผ่านอยู่ที่ 40.54 บิต[10] ในงานวิเคราะห์รหัสผ่านยาว 8 ตัว 3 ล้านรหัส มีการใช้อักษร "e" 1.5 ล้านครั้ง อักษร "f" เพียงแค่ 250,000 ครั้ง ถ้าเป็นการแจกแจงแบบเอกรูปจริง ๆ อักษรแต่ละตัวก็ควรจะใช้ 900,000 ครั้ง เลขที่ใช้มากที่สุดคือ 1 อักษรที่ใช้มากที่สุดคือ a, e, o และ r[11] ผู้ใช้มักจะไม่ใช้อักษรชุดใหญ่กว่านี้เพื่อสร้างรหัสผ่านให้ปลอดภัยยิ่งขึ้น ยกตัวอย่างเช่น การฟิชชิงเว็บไซต์ MySpace ในปี 2006 มีผลให้แฮ็กได้รหัสผ่าน 34,000 รหัส แต่มีเพียงร้อยละ 8.3 เท่านั้นที่ใช้อักษรตัวเล็กตัวใหญ่ ตัวเลขและสัญลักษณ์[12] ความแข็งแกร่งจากการใช้ชุดอักขระแอสกีทั้งหมด (คือตัวเลข อักษรเล็กใหญ่ และอักษรพิเศษ) จะได้ก็ต่อเมื่ออักษรแต่ละตัวในรหัสผ่านอาจเป็นตัวใดก็ได้จากชุดอักขระโดยมีโอกาสเท่า ๆ กัน นี่ดูเหมือนจะบอกว่ารหัสผ่านควรจะมีอักษรจากกลุ่มอักษรต่าง ๆ ทุกกลุ่ม เช่น ตัวใหญ่ ตัวเล็ก ตัวเลข และสัญลักษณ์ที่เหลือ แต่การบังคับให้มีรูปแบบกลับทำให้เดาได้ง่ายแล้วถูกแฮ็กได้ง่ายขึ้น เป็นการลดความแข็งแกร่งของรหัสผ่าน ข้อบังคับที่ดีกว่าก็คือให้ใช้รหัสผ่านที่ไม่มีในพจนานุกรม ไม่ใช่ชื่อ ไม่ใช่รูปแบบเลขทะเบียนรถ เป็นต้น ถ้าบังคับให้ใช้รูปแบบ มนุษย์ก็มักจะใช้รูปแบบที่คาดเดาได้ เช่น ในภาษาอังกฤษ อักษรตัวแรกจะเป็นตัวใหญ่ ข้างหลังเติมตัวเลข 1-2 ตัว แล้วตามด้วยอักษรพิเศษ การคาดเดาได้เช่นนี้จึงหมายความว่า การใช้กลุ่มอักษรต่าง ๆ ก็จะเพิ่มความแข็งแกร่งเพียงเล็กน้อย เมื่อเทียบกับการใช้รหัสผ่านสุ่มที่เพิ่มความแข็งแกร่งยิ่งกว่า การใช้งานได้และการทำให้เกิดผลเพราะคีย์บอร์ดในประเทศต่าง ๆ อาจจะต่าง ๆ กัน ดังนั้น ชุดอักขระแอสกีที่แสดงผลได้ 94 ตัว บางทีก็อาจจะใช้ไม่ได้ทุกที่ ซึ่งเป็นปัญหากับผู้เดินทางไปต่างประเทศ ผู้ต้องลงชื่อเข้าบัญชีในระบบประเทศของตนโดยใช้คีย์บอร์ดประจำพื้นที่ อุปกรณ์มือถือเป็นจำนวนมากเช่น แท็บเล็ตคอมพิวเตอร์และสมาร์ทโฟน ต้องใช้ปุ่มเปลี่ยนแป้นที่ซับซ้อน หรือไม่ก็จะต้องเปลี่ยนแอปเพื่อให้ใส่อักษรพิเศษได้ โปรแกรมพิสูจน์ตัวจริงจะต่าง ๆ กันในเรื่องอักขระที่อนุญาตให้ใช้ในรหัสผ่าน บางอย่างจะปฏิบัติต่ออักษรเล็กใหญ่เท่ากัน บางอย่างไม่ยอมรับสัญลักษณ์บางอย่าง ในทศวรรษที่ผ่าน ๆ มา ระบบมักจะยอมรับตัวอักษรในรหัสผ่านได้เพิ่มขึ้น แต่ก็ยังอาจจำกัดอยู่ดี อนึ่ง ความยาวของรหัสผ่านที่อนุญาตยังต่าง ๆ กันอีกด้วย เมื่อนำไปปฏิบัติ รหัสผ่านจะต้องดูพอสมเหตุสมผลและพอใช้ได้สำหรับผู้ใช้ โดยยังต้องแข็งแกร่งพอ รหัสผ่านที่ยากเกินไปก็จะจำไม่ได้ ดังนั้น จึงต้องเขียนบันทึกไว้ ซึ่งบางท่านพิจารณาว่าเสี่ยงต่อความมั่นคง[13] บางท่านก็อ้างว่าการบังคับให้ผู้ใช้ต้องจำรหัสผ่านโดยไม่มีตัวช่วย ก็จะทำให้ได้แต่รหัสผ่านที่อ่อนแอ ดังนั้น จึงเสี่ยงต่อความมั่นคงยิ่งกว่า ตามผู้เขียนโปรแกรมจัดการรหัสผ่านเป็นคนแรกคือ บรูซ ชไนเออร์ คนโดยมากรักษาความปลอดภัยของกระเป๋าตังค์ของตนได้ ดังนั้น จึงเป็นที่เก็บรหัสผ่านที่ดี[14] บิตเอนโทรปีตามความจำเป็นบิตเอนโทรปีอย่างต่ำสุดที่จำเป็นจะขึ้นอยู่กับโมเดลการคุกคาม (threat model) ของแอปนั้น ๆ แต่ถ้าไม่ขยายกุญแจก็จะต้องใช้รหัสผ่านที่มีเอนโทรปีสูงกว่า เอกสารขอความเห็นปี 2005 ยกตัวอย่างโมเดลการคุกคามกับเอนโทรปีที่จำเป็นแต่ละอย่าง ๆ[15] แล้วได้คำตอบว่าต้องมีเอนโทรปี 29 บิตถ้าต้องรับมือกับการโจมตีทางออนไลน์เท่านั้น และมีถึง 96 บิตสำหรับใช้เป็นกุญแจในโปรแกรมเข้ารหัสลับเมื่อกุญแจที่ว่าต้องมั่นคงในระยะยาวและไม่ได้ขยาย ในปี 2010 สถาบันการวิจัยจอร์เจียเทคทำการศึกษาเรื่องกุญแจที่ไม่ขยาย แล้วแนะนำให้ใช้รหัสผ่านสุ่มที่มีอักษร 12 ตัวเป็นอย่างต่ำ[5][16] ควรเข้าใจด้วยว่าเพราะคอมพิวเตอร์เร็วขึ้นเรื่อย ๆ ดังนั้น เพื่อจะป้องกันการโจมตีแบบออฟไลน์ บิตเอนโทรปีก็จะต้องเพิ่มขึ้นเรื่อย ๆ เช่นกัน ค่าสูงจะใช้กับข้อบังคับที่เข้มงวดเมื่อเลือกกุญแจสำหรับเข้ารหัสลับ ในปี 1999 โปรเจ็กต์ EFF DES cracker แฮ็กการเข้ารหัสแบบ DES ขนาด 56 บิตได้โดยไม่ถึงวันเมื่อใช้ฮาร์ดแวร์ที่ออกแบบเป็นพิเศษ[17] ในปี 2002 distributed.net แฮ็กกุญแจ 64 บิตภายใน 4 ปี 9 เดือนและ 23 วัน[18] ในปี 2011 distributed.net ประเมินว่า การแฮ็กกุญแจ 72 บิตโดยใช้ฮาร์ดแวร์ปัจจุบันจะใช้เวลา 45,579 วันหรือ 124.8 ปี[19] เมื่ออาศัยความรู้ความเข้าใจในข้อจำกัดของฟิสิกส์พื้นฐานปัจจุบัน คาดว่าจะไม่มีคอมพิวเตอร์ดิจิตัล (หรือเครือข่ายคอมพิวเตอร์) ที่สามารถแฮ็กการเข้ารหัสลับขนาด 256 บิตโดยใช้กำลัง[20] แต่คอมพิวเตอร์ควอนตัมจะสามารถทำได้หรือไม่ก็ยังไม่ชัดเจน แม้การวิเคราะห์ทางทฤษฎีแสดงว่าอาจเป็นไปได้[21] รหัสผ่านที่เข้มแข็งแนวทางสามัญแนวทางในการเลือกรหัสผ่านที่ดีปกติจะออกแบบให้เดารหัสผ่านได้ยากแม้เมื่อผู้โจมตีจะรู้ว่าผู้ใช้ได้สร้างรหัสผ่านอย่างไร แนวทางสามัญที่องค์กรต่าง ๆ เสนอรวมทั้ง[22][23][24][25][26]
แม้การบังคับให้ใช้อักษรตัวเล็กตัวใหญ่ ตัวเลข และสัญลักษณ์ในรหัสผ่านจะเป็นนโยบายที่สามัญ แต่จริง ๆ พบว่า นี่ลดความมั่นคงของรหัสผ่าน ทำให้เจาะเอาได้ง่ายกว่า โดยงานวิจัยแสดงว่าการใช้อักษรต่าง ๆ ตามที่ว่าสามารถเดาได้ง่าย[30] ในสหรัฐและสหราชอาณาจักร[31] เจ้าหน้าที่ด้านความมั่นคงทางไซเบอร์ของรัฐแนะนำไม่ให้บังคับใช้นโยบายรหัสผ่านตามที่ว่า สัญลักษณ์ที่ซับซ้อนยังทำให้รหัสผ่านจำได้ยากยิ่งกว่า ซึ่งทำให้ต้องเขียนบันทึกเพิ่มขึ้น ตั้งรหัสผ่านใหม่บ่อยขึ้น ใช้รหัสผ่านซ้ำ ๆ กันยิ่งขึ้น ทั้งหมดล้วนแต่ลดความมั่นคง จริง ๆ ไม่ได้เพิ่ม ต่อมาผู้แต่งกฎเกณฑ์ความซับซ้อนของรหัสผ่านจึงขอโทษและยอมรับว่ากฎที่ตั้งขึ้นลดความมั่นคงลงดังที่งานวิจัยได้พบ ซึ่งเป็นสิ่งที่สื่อรายงานอย่างกว้างขวางในปี 2017[32] นักวิจัยความมั่นคงออนไลน์[33] และที่ปรึกษาต่าง ๆ ต่างก็สนับสนุนข้อเปลี่ยนแปลงดังกล่าว[34] ว่าเป็นคำแนะนำการปฏิบัติที่ดีสุดในเรื่องรหัสผ่าน มีแนวทางปฏิบัติบางอย่างที่แนะนำไม่ให้เขียนบันทึกรหัสผ่าน แต่แนวทางอื่น ๆ ก็ให้ข้อสังเกตว่าผู้ใช้มักจะมีรหัสผ่านจำนวนมาก ดังนั้นจึงแนะนำให้เขียนรหัสผ่านเมื่อเก็บไว้ในที่ปลอดภัย ไม่ใช่ติดไว้กับจอภาพ หรือไว้ในลิ้นชักที่ไม่ได้ล็อก[35] ศูนย์ความมั่นคงไซเบอร์แห่งชาติสหราชอาณาจักรแนะนำให้ใช้โปรแกรมจัดการรหัสผ่าน[36] เว็บไซต์หรือคีย์บอร์ดอาจจำกัดชุดอักขระที่ใช้ได้กับรหัสผ่าน[37] ตัวอย่างรหัสผ่านที่อ่อนแอเหมือนกับวิธีป้องกันความปลอดภัยอื่น ๆ รหัสผ่านจะแข็งแกร่งไม่เท่ากัน บางรหัสก็จะอ่อนแอกว่า ยกตัวอย่างเช่น การแฮ็กคำในพจนานุกรม กับการแฮ็กคำที่ทำให้ยุ่งเหยิงขึ้นบ้าง (เช่น แทนที่อักษรด้วยตัวเลขซึ่งเป็นวิธีการที่สามัญอย่างหนึ่ง) อาจจะต้องใช้เวลาเพิ่มขึ้นเพียงไม่กี่วินาที จึงไม่ได้เพิ่มความแข็งแกร่งอะไร ตัวอย่างด้านล่างแสดงวิธีการสร้างรหัสผ่านที่อ่อนแอซึ่งล้วนแต่มีรูปแบบง่าย ๆ ทำให้ได้รหัสผ่านที่มีเอนโทรปีต่ำ ซึ่งสามารถเจาะได้ง่าย ๆ[11]
มีเหตุอื่น ๆ อีกที่ทำให้รหัสผ่านอ่อนแอ[40] ขึ้นอยู่กับการโจมตีว่ามีประสิทธิภาพแค่ไหน หลักสำคัญก็คือรหัสผ่านควรจะมีเอนโทรปีสูง ซึ่งทั่วไปก็คือความสุ่มของรหัสผ่าน ไม่ควรได้มาจากรูปแบบที่เหมือนกับฉลาด ไม่ควรมีข้อมูลระบุผู้ใช้ อนึ่ง บริการออนไลน์มักจะมีวิธีการกู้บัญชี ซึ่งถ้ามีจุดอ่อนและผู้โจมตีรู้วิธีก็อาจจะไม่ต้องพยายามแฮ็กรหัสผ่านเลย แนวทางรหัสผ่านใหม่บทความปี 2012 ในวารสารสมาคมคอมพิวเตอร์เอซีเอ็มเน้นให้ใช้ตัวอักษรตัวเล็ก ตัวใหญ่ และตัวเลข มีอักษร 8 ตัวหรือยิ่งกว่า เพราะรหัสผ่านดังว่าสามารถทนการพยายามเดาเป็น 10 ล้านครั้ง/วินาทีได้นานถึง 252 วัน แต่จริง ๆ ถ้าใช้หน่วยประมวลผลกราฟิกส์ในเวลานั้นทำการ ก็จะใช้เวลาเพียงแค่ 9 ชั่วโมงโดยมีอัตราเดารหัสผ่านที่ 7,000 ล้านครั้ง/วินาที ส่วนรหัสผ่านที่ยาว 13 ตัวอักษรก็จะสามารถทนการพยายามเดาได้ถึง 900,000 ปี[41][42] ถ้าใช้เทคโนโลยีปี 2023 มาตรฐานรหัสผ่านตัวเล็ก ตัวใหญ่และตัวเลข 8 ตัว จะสามารถเดาได้ในไม่กี่ชั่วโมง รหัสผ่านยาว 13 ตัวอักษรจะใช้เวลาเดาเพียงไม่กี่ปี ดังนั้นจึงต้องเปลี่ยนความคิดใหม่ ปัจจุบันแนะนำให้ใช่รหัสผ่านที่มีตัวอักษร 13-16 ตัว โดยยังต้องเพิ่มใช้วิธีการพิสูจน์ตัวจริงด้วยปัจจัยหลายอย่างเป็นตัวเสริมความมั่นคงด้วย การสร้างโปรแกรมจัดการรหัสผ่านและการนำมาใช้อย่างแพร่หลาย ยังช่วยผู้ใช้ให้สามารถสร้างและเก็บรักษารหัสผ่านที่ยาว แข็งแกร่ง และใช้กับบัญชีหรือแอปเดี่ยว ๆ[43] นโยบายรหัสผ่านนโยบายรหัสผ่านเป็นแนวทางการเลือกรหัสผ่านที่ดีพอ โดยมีจุดประสงค์
นโยบายรหัสผ่านก่อน ๆ มักจะระบุกลุ่มอักษรซึ่งรหัสผ่านจะต้องมี เช่น ตัวเลข สัญลักษณ์ ตัวเล็ก ตัวใหญ่ แม้จะยังมีใช้อยู่ แต่งานวิจัยก็ได้ชี้แล้วว่า เป็นข้อบังคับที่ไม่ปลอดภัย[44] ผู้เริ่มตั้งนโยบายนี้ดั้งเดิมก็เห็นด้วย[45] ทั้งองค์กรความมั่นคงทางไซเบอร์ของสหรัฐและสหราชอาณาจักรก็เห็นด้วย[46][47][48] กฎความซับซ้อนรหัสผ่านโดยมีสัญลักษณ์ที่บังคับใช้ แพลตฟอร์มหลัก ๆ เช่น กูเกิล[49] เฟซบุ๊ก[50] ก่อนหน้านี้ก็เคยใช้ แต่ต่อมาก็เลิกหลังพบว่าจริง ๆ ลดความมั่นคงเพราะมนุษย์กลับสร้างความเสี่ยงเพิ่ม การบังคับเรื่องความซับซ้อนจึงทำให้รหัสผ่านมีรูปแบบที่เดาได้ง่ายมาก เช่น ใส่ตัวเลขด้านหลังรหัสผ่าน ใช้เลข 3 แทนอักษร E เป็นต้น จึงทำให้เจาะได้ง่าย ดังนั้น นโยบายปัจจุบันจึงแนะนำให้ใช้รหัสผ่านที่ตัวอักษรไม่ซับซ้อนแต่ยาว (เป็นพาสเฟรซ) กฎบังคับให้ซับซ้อนยังเพิ่มค่าใช้จ่ายในการสนับสนุนผู้ใช้ ทำความรำคาญให้ผู้ใช้ และเป็นอุปสรรคไม่ให้ผู้ใช้เปิดบัญชี นโยบายให้รหัสผ่านหมดอายุที่เคยใช้ก็พบว่าไม่ดีเหมือนกัน[32] ซึ่งต่อมารัฐบาลสหรัฐและสหราชอาณาจักรรวมทั้งบริษัทไมโครซอฟต์ก็เลิกใช้ทั้งหมด[51] การมีวันหมดอายุเคยคิดว่ามีประโยชน์ดังนี้[52]
แต่การหมดอายุของรหัสผ่านกลับมีข้อเสียว่า[53][54]
การสร้างและบริหารรหัสผ่านรหัสผ่านซึ่งเจาะได้ยากที่สุดสำหรับชุดอักขระและความยาวหนึ่ง ๆ จะเป็นสายอักขระที่เลือกอักษรโดยสุ่ม ถ้ายาวพอก็จะทนต่อการโจมตีด้วยกำลังเพราะมีอักษรหลายตัว และการโจมตีแบบเดาเพราะมีค่าเอนโทรปีสูง แต่ก็จะจำได้ยาก ดังนั้น การบังคับจะเพิ่มโอกาสให้ผู้ใช้เขียนบันทึกรหัสผ่าน เก็บไว้ในอุปกรณ์เคลื่อนที่ หรือแชร์กับคนอื่น ๆ เพื่อกันการจำไม่ได้ แม้บางคนจะพิจารณาว่าวิธีการจำรหัสผ่านเหล่านี้เพิ่มความเสี่ยงทางความมั่นคง คนอื่น ๆ ก็คิดว่า เป็นไปไม่ได้ที่จะหวังให้ผู้ใช้จำรหัสผ่านที่ซับซ้อนสำหรับบัญชีที่มีเป็นโหล ๆ ยกตัวอย่างเช่นในปี 2005 ผู้เชี่ยวชาญทางความมั่นคง บรูซ ชไนเออร์ แนะนำให้เขียนบันทึกรหัสผ่านดังนี้
วิธีการต่าง ๆ ดังต่อไปนี้อาจเพิ่มการยอมรับใช้รหัสผ่านที่แข็งแกร่งได้ถ้าดำเนินการอย่างระมัดระวัง
วิธีการจำนโยบายรหัสผ่านบางครั้งจะแนะนำวิธีการจำรหัสผ่าน
โปรแกรมจัดการรหัสผ่าน
วิธีการผ่อนผันการบันทึกรหัสผ่านก็คือให้เก็บไว้ในโปรแกรมจัดการรหัสผ่าน ซึ่งอาจรวมแอปต่างหาก รวมส่วนขยายเว็บบราวเซอร์ หรือเป็นตัวเก็บรหัสผ่านของระบบปฏิบัติการเอง นี่ทำให้ผู้ใช้สามารถมีรหัสผ่านเป็นร้อย ๆ โดยต้องจำรหัสผ่านเพียงแค่รหัสเดียว คือที่ใช้เปิดฐานข้อมูลที่เข้ารหัสลับไว้[61] ดังนั้น จึงควรสร้างรหัสผ่านเดี่ยวนี้ให้แข็งแกร่งและเก็บรักษาไว้เป็นอย่างดี โปรแกรมบางอย่างมีตัวสร้างรหัสผ่านสุ่มที่มั่นคงตามหลักวิทยาการเข้ารหัสลับ โดยบางตัวก็คำนวณค่าเอนโทรปีของรหัสผ่านที่สร้างได้ด้วย โปรแกรมที่ดีจะมีการป้องกันที่ทนทานต่อการโจมตีต่าง ๆ เช่น การบันทึกแป้นพิมพ์ การบันทึกคลิปบอร์ด และการสอดแนมดูข้อมูลความจำของคอมพิวเตอร์โดยวิธีต่าง ๆ ดูเพิ่มเชิงอรรถและอ้างอิง
แหล่งข้อมูลอื่น |