ป้ายกำกับ: Salt

Hashed Password ด้วย openssl passwdHashed Password ด้วย openssl passwd

คำสั่ง openssl passwd เป็นเครื่องมือที่มีประโยชน์มากสำหรับการสร้าง Hashed Password เพื่อนำไปใช้ในไฟล์กำหนดค่าต่าง ๆ ของระบบ Linux หรือ Web Server เช่น .htpasswd ของ Apache/Nginx หรือใช้ใน /etc/shadow


openssl passwd คืออะไร ?

โดยปกติแล้ว ระบบคอมพิวเตอร์จะไม่เก็บรหัสผ่านเป็นตัวอักษรปกติ ( Plaintext ) แต่จะเก็บในรูปแบบของ Hash ซึ่งเป็นข้อมูลที่ถูกเข้ารหัสทางเดียว ไม่สามารถย้อนกลับมาเป็นรหัสเดิมได้ คำสั่งนี้จึงทำหน้าที่แปลงรหัสผ่านที่เราพิมพ์ ให้กลายเป็นชุดรหัส Hash ตาม Algorithm ที่เราเลือก


วิธีใช้งานพื้นฐาน

รูปแบบคำสั่งเบื้องต้นคือ
openssl passwd {options} {password}

การสร้างรหัสผ่านแบบด่วน ( Standard DES )

หากพิมพ์คำสั่งโดยไม่ระบุ Option ระบบจะใช้ Algorithm แบบเก่า ( Standard DES ) ซึ่งไม่แนะนำสำหรับงานที่ต้องการความปลอดภัยสูง

openssl passwd -1 "mypassword"


ตัวเลือกด้าน Algorithm ( Hashing Methods )

ตัวเลือกกลุ่มนี้จะกำหนดว่ารหัสผ่านของคุณจะถูกเข้ารหัสด้วยวิธีไหน

OptionAlgorithmความเหมาะสม
( ไม่มี )Standard DESไม่แนะนำ ( ล้าสมัยและไม่ปลอดภัย )
-cryptStandard DESเหมือนกับการไม่ใส่อะไรเลย
-1MD5-basedเคยเป็นมาตรฐาน แต่ปัจจุบันถือว่าอ่อนแอต่อการ Brute-force
-5SHA-256ปลอดภัยระดับดี ( มาตรฐาน Linux สมัยใหม่ )
-6SHA-512แนะนำที่สุด มีความซับซ้อนและปลอดภัยสูงสุดในปัจจุบัน
-apr1Apache MD5ใช้สำหรับไฟล์ .htpasswd ของ Apache หรือ Nginx โดยเฉพาะ
-aixmd5AIX MD5ใช้สำหรับระบบปฏิบัติการ AIX

ตัวเลือกด้านการจัดการ Input / Output

ช่วยให้คุณป้อนรหัสผ่านได้ปลอดภัยขึ้น หรือนำไปใช้ใน Script ได้ง่ายขึ้น

  • -in [file]: อ่านรหัสผ่านจากไฟล์ที่ระบุ ( แทนการพิมพ์เอง )
  • -stdin: อ่านรหัสผ่านจาก Standard Input ( เช่น การ Pipe ค่ามาจากคำสั่งอื่น )
  • -quiet: ไม่ต้องแสดงข้อความคำเตือนหรือรายละเอียดส่วนเกิน ให้แสดงเฉพาะค่า Hash เท่านั้น
  • -noverify: ไม่ต้องถามให้ยืนยันรหัสผ่านซ้ำ (ปกติถ้าพิมพ์สด ระบบจะให้ยืนยัน 2 รอบ)
  • -reverse: ( ในบางเวอร์ชัน ) ใช้เพื่อสลับการแสดงผล

ตัวเลือกด้านความปลอดภัย ( Salt )

  • salt [string]: กำหนดค่า Salt ด้วยตัวเอง ( สูงสุด 8-16 ตัวอักษรขึ้นอยู่กับ Algorithm )
    • Tip: หากไม่กำหนด ระบบจะสุ่ม Salt ให้โดยอัตโนมัติ ซึ่งปลอดภัยกว่าการกำหนดเองแบบซ้ำ ๆ
  • -rand [file]: ใช้ไฟล์ระบุเพื่อสร้างค่าสุ่ม ( Seed ) สำหรับการ Generate Salt

ตัวอย่างการใช้ตัวเลือกผสมกัน

  • ใช้ใน Shell Script ( ปลอดภัยและเร็ว )
    หากคุณมี Script ที่ต้องการ Generate รหัสผ่านโดยไม่ต้องคีย์สด
    echo "mypassword" | openssl passwd -6 -stdin
  • สร้างรหัสสำหรับ Nginx / Apache Auth
    หากต้องการความชัวร์ว่า Web Server จะอ่านออกแน่นอน ให้ใช้ -apr1
    openssl passwd -apr1 -salt "random88" "mypassword"

อ่านเพิ่มเติม