รายงานจากทีม Hashcat รายงานระบบการเข้ารหัสผ่าน พบว่ารหัสผ่านหลัก (master password) ของ 1Password ที่เข้ารหัสแบบทางเดียวด้วย PBKDF2-HMAC-SHA1 จากเดิมที่ต้องคำนวณ SHA1 ถึงกว่า 8,000 รอบซึ่งเปลืองรอบการคำนวณอย่างมาก แต่หลังจากวิเคราะห์ระบบการเข้ารหัสของ 1Password แล้วกลับพบว่าการคำนวณจริงๆ ต้องการการคำนวณเพียง 4000 รอบก็เพียงพอแล้ว
ปัญหาของ 1Password คือรูปแบบการเข้ารหัสเนื้อข้อมูลจริงๆ นั้นเป็นการเก็บไฟล์ข้อมูลขนาด 1040 ไบต์ด้วย AES ในโหมด CBC ผลของการคำนวณรหัสผ่าน จะคำนวณสองค่าหลักคือ ค่าคีย์, และค่า IV สำหรับการถอดรหัส ทำให้ต้องคำนวณค่าแฮชความยาว 320 บิต (ใช้จริง 256 บิต ครึ่งแรกเป็นกุญแจ ครึ่งหลังเป็น IV) แต่ปรากฎว่าในโหมด CBC นั้น ค่า IV ของบล็อกหลังๆ จะใช้ข้อความที่เข้ารหัสแล้วในบล็อกก่อนหน้ามาเป็นค่า IV และเนื่องจากบล็อกท้ายๆ เป็นข้อมูลเติมเต็ม (padding) ทำให้แฮกเกอร์สามารถรู้ได้ทันทีว่ากุญแจที่ใช้ถูกต้องหรือไม่
กระบวนการนี้ทำให้แฮกเกอร์สามารถใช้ PBKDF2-HMAC-SHA1 ด้วยพารามิเตอร์ที่คำนวณได้ง่ายขึ้น เพราะไม่ต้องคำนวณค่า IV อีกต่อไป ในตอนนี้การทดสอบด้วยการ์ด AMD HD6990 สามารถคำนวณรหัสผ่านได้ถึง 3 ล้านรหัสต่อวินาทีแล้ว ด้วยอัตรานี้ หากใช้คำ 4 คำแบบสุ่มอย่างสมบูรณ์ จะใช้เวลาแครกรหัสผ่านประมาณ 19 ปี แต่แฮกเกอร์อาจจะใช้การ์ดกราฟิกจำนวนมหาศาลเข้ามาถอดรหัสได้
ทางด้าน 1Password ออกมาระบุว่าการที่รหัสผ่านหลุดเช่นนี้ไม่ได้แปลว่า 1Password จะเสียความปลอดภัยไปมากนัก และใน 1Password รุ่นใหม่ก็เปลี่ยนพารามิเตอร์ของ PBKDF2 จากเดิมให้คำนวณ 1,000 รอบ เป็น 10,000 ถึง 45,000 รอบซึ่งจะทำให้อัตราการคำนวณค่าแฮชช้าลงสิบเท่าเช่นกัน
การคำนวณค่าแฮชได้ช้าเป็นคุณสมบัติสำคัญของฟังก์ชั่นแฮชสำหรับรหัสผ่าน แม้ค่าแฮชที่ได้จะมีความเป็นไปได้จำนวนมาก แต่ในความเป็นจริงคนเราใช้รหัสผ่านในรูปแบบที่จำได้ไม่มากนัก เช่น ใช้คำสุ่มจำนวน 4 คำอย่างที่ยกตัวอย่างข้างต้น จะมี entropy ของรหัสผ่านเพียง 52 บิต แม้กุญแจที่ได้จะยาว 128 บิตก็ตามที กระบวนการรักษาความปลอดภัยทุกวันนี้จึงอาศัยการคำนวณค่าแฮชแต่ละครั้งให้บังคับว่าต้องทำได้ช้า เพื่อไม่ให้สามารถคำนวณทุกความเป็นไปได้
ที่มา - ArsTechnica, Hashcat
Comments
ลึกมาก สรุปว่ายังปลอดภัยใช่ไหมครับ และมีการปรับปรุงให้แกร่งขึ้นแล้ว (รึเปล่า)
สรุปว่าควรจ่ายเพื่อ upgrade ver. ล่าสุดเสมอสินะ เพื่อความปลอดภัย :O #จ่ายไปนานแล้ว
keepass เถอะครับ
ผมอยากทราบว่าเมืองไทยมีสาขาการเรียนการสอนในด้านนี้ โดยตรงหรือป่าวครับ หรือต้องไปสาย network (พอดีจบ comsci จมอยู่กะ code :D)
จริงๆ Cryptography นี่เรียนจริงจังจะเป็นสาย math ครับ (วิชามันจะนอกสายคอมไปพอสมควร) แต่ถ้าในแง่การประยุกต์ใช้งานก็จะอยู่ในคอมพิวเตอร์ทั่วไป งานจริงๆ น่าจะเป็นงานโปรแกรมมิ่งมากกว่าด้วย แต่พอสอนเข้าจริงๆ ก็มักจะเป็นสาย System/Network ที่เรียนกันมากกว่า อาจจะเพราะมันสนุกกว่า ใช้ nmap ไล่ยิง ใช้ wireshark ไล่จับ สนุกกว่าเขียน opencl มาทำ hash บน GPU เยอะ
lewcpe.com, @wasonliw
อ่า ... ผมของงแป๊บ
เรียนสาย math
งานอยู่สาย programming
สอนกันในสาย System/Network
ขอบคุณครับ เพราะโปรเจคจบของผมก็เรื่องรหัสผ่านเหมือนกัน ตอนทำก็มืนๆทำไป ฮ่าๆ
ผมเรียน เทคโนโลยีคอมพิวเตอร์
มีวิชา วิทยาการเข้ารหัสลับอยู่ครับ
เพิ่งเรียนไปเมื่อเทอมที่แล้ว
ปวดหัวมาก
อ่าว ใช้อยู่เลยตัวนี้
เหมือนจะมีผมใช้ Roboform อยู่คนเดียว