Score:2

ปัญหาหลักของการเติมศูนย์สำหรับคีย์ AES คืออะไร

ธง cn

ฉันกำลังพยายามเข้าใจตรรกะเบื้องหลังหลักการพื้นฐานบางประการของการเติมคีย์ AES เหตุใดเราจึงใช้รูปแบบการเติมคีย์ AES ประเภทต่างๆ แทนการเติมศูนย์ที่ง่ายที่สุด ยกตัวอย่าง AES-128 หากคีย์ของฉันคือ "cipherkey" การเติมทำงานอย่างไร และปัญหาเบื้องหลังคืออะไร

ขออภัยหากเป็นคำถามเบื้องต้นเกินไป แต่ฉันหาคำอธิบายที่ดีไม่ได้

cn flag
ใช่จริง ๆ และฉันได้อ่านคำตอบของคุณแล้ว ขอบคุณ แต่ฉันต้องการคำอธิบายพื้นฐานเพิ่มเติมเกี่ยวกับเรื่องนี้... มีตัวอย่างสั้นๆ ที่คุณสามารถแสดงเกี่ยวกับวิธีที่ข้อมูลสูญหายหรือตีความผิดในระหว่างกระบวนการเข้ารหัส/ถอดรหัสหรือไม่
kelalaka avatar
in flag
รหัสผ่านสั้นไม่เคยปลอดภัย [การถอดรหัสหมายเลขโทรศัพท์ที่แฮชทำได้ง่ายหรือไม่](https://crypto.stackexchange.com/a/81652/18298) และ [คอนเทนเนอร์ของ VeraCrypt เข้ารหัสด้วยรหัสผ่านสั้นไม่ปลอดภัยเพียงใด](https ://crypto.stackexchange.com/a/81020/18298) เลือกการสร้างรหัสผ่านที่ดีเสมอ เช่น dicewire
Score:4
ธง ng

คำถามพิจารณาการเติมข้อความที่น่าจดจำ เช่น "cipherkey" ลงในคีย์ AES โดยเพิ่มศูนย์ไบต์ต่อท้ายนิพจน์ (UTF-8) ของข้อความนี้เป็นไบต์ จนกระทั่งถึง 16, 24 หรือ 32 ไบต์สำหรับ AES-128, AES-192 หรือ AES-256

เดอะ หลัก ปัญหานี้ก็คือว่า มันรวดเร็วและราคาไม่แพงซึ่งเป็นหายนะในบริบท: ช่วยให้ฝ่ายตรงข้ามใช้กระบวนการนั้นกับรหัสผ่านที่น่าเชื่อถือได้อย่างรวดเร็วและราคาไม่แพง และทดสอบคีย์ผลลัพธ์กับข้อความเข้ารหัส (ด้วยข้อความธรรมดาที่รู้จักหรือรู้จักซ้ำซ้อน) แล้วจึงค้นหาคีย์ นี่คือ แคร็กรหัสผ่านและมีอุตสาหกรรมขนาดเล็กที่พัฒนาซอฟต์แวร์และฮาร์ดแวร์ผสมกันสำหรับสิ่งนี้

พจนานุกรมของคำศัพท์ภาษาอังกฤษล้านคำที่ใช้บ่อยที่สุด (สำหรับคำจำกัดความเพิ่มเติมของคำบางคำ) ฉันคิดว่ามี "cipherkey" อย่างน้อย การค้นหาโดย Google พบเหตุการณ์ 78,400 รายการ และอยู่ในรายการโดเมนที่จดทะเบียนใน TLD ทั่วไปสามรายการ ด้วยคู่ของข้อความธรรมดา/ข้อความเข้ารหัสที่รู้จัก หรือข้อความเข้ารหัสสำหรับข้อความธรรมดาที่มีโครงสร้างบางอย่าง การดำเนินการนี้จะใช้เวลาไม่กี่วินาทีในการทำลายสำหรับคนที่มีเครื่องมือที่เหมาะสม

แม้ว่าจะสามารถปรับปรุงได้อย่างมาก (ดูย่อหน้าถัดไป) "cipherkey" ไม่ใช่รหัสผ่านที่ดี ขอแนะนำให้เลือกรหัสผ่านที่คาดเดาได้ยากขึ้น แค่ตั้งชื่อว่า ข้อความรหัสผ่าน จะช่วย! แต่นั่นคือ รอง ปัญหา.

เมื่อเปลี่ยนสิ่งที่น่าจดจำ (รหัสผ่าน วลีรหัสผ่าน..) ให้เป็นกุญแจ หนึ่ง ต้อง ใช้ฟังก์ชันการรับคีย์ที่มีไว้สำหรับรหัสผ่าน ซึ่งเป็นฟังก์ชันที่มีพารามิเตอร์เวิร์กแฟกเตอร์ที่อนุญาตให้ปรับต้นทุนของการได้มาของคีย์ หากค่าใช้จ่ายดังกล่าวเท่ากับ 0.5 วินาทีของเวลาคอมพิวเตอร์ที่มีประสิทธิภาพ แทนที่จะเป็น 20 นาโนวินาทีสำหรับวิธีที่เสนอ นั่นจะกลายเป็นปัญหาคอขวดสำหรับการถอดรหัสรหัสผ่าน และน่าจะทำให้พวกเขาเสียเหงื่อเป็นอย่างน้อย ด้วยข้อความรหัสผ่าน Ã la XKCD หรือ ไดซ์แวร์มันสามารถค่อนข้างปลอดภัย

หนึ่งควรใช้ เกลือซึ่งจะป้องกันการประมวลผลคีย์ที่ได้รับมาล่วงหน้า และป้องกันการตัดจำหน่ายต้นทุนของการสืบทอดดังกล่าวสำหรับคู่รหัสผ่าน/คีย์หลายคู่ นั่นเป็นอีก รอง ปัญหา.

สิ่งสำคัญคือฟังก์ชันการสืบทอดคีย์คือฮาร์ดหน่วยความจำ ซึ่งต้องใช้หน่วยความจำจำนวนมากตลอดการคำนวณ เนื่องจากจะเพิ่มต้นทุนทางการเงินในการโจมตีอย่างมาก โดยเสียค่าใช้จ่ายเพียงเล็กน้อยสำหรับผู้ใช้ที่ถูกต้องตามกฎหมาย ฟังก์ชั่นที่แนะนำ ได้แก่ อาร์กอน2 และ เข้ารหัส. ฟังก์ชันทั่วไปแต่ไม่แนะนำ ได้แก่ PBKDF2ซึ่งไม่ใช่ memory-hard และท่ามกลางการใช้เวลา CPU เพื่อวัตถุประสงค์ในการรับรหัสผ่านจากคีย์ที่แย่กว่านั้น: มันเพิ่มขอบของผู้โจมตีโดยใช้ ASICs, FPGA และแม้แต่ GPUs w.r.t. ผู้ใช้ที่ถูกต้องโดยใช้ซีพียู ฉันหา คำแนะนำของ NIST สำหรับ PBKDF2 สอดคล้องกับการผลักดันในอดีตของพวกเขา Dual_EC_DRBG:

ในขณะที่ PBKDF2 นั้นยากต่อเวลาแต่ไม่ใช่หน่วยความจำอย่างหนัก แต่ก็มีการใช้งานอย่างกว้างขวางจนไม่สามารถใช้งานได้จริง (ในขณะนี้) เพื่อแนะนำข้อกำหนดสำหรับฟังก์ชันการสืบทอดคีย์หน่วยความจำฮาร์ดคีย์

Maarten Bodewes avatar
in flag
โปรดทราบว่า AES เองไม่ได้รับผลกระทบ แต่เป็นคีย์ / รหัสผ่านเอนโทรปีต่ำที่เป็นปัญหา หากรหัสผ่านมีค่าเอนโทรปีน้อยเกินไป ฟังก์ชันการหาค่าคีย์ที่ใช้รหัสผ่านจะไม่ช่วยคุณเช่นกัน มันเพิ่มความปลอดภัยคงที่เท่านั้น เช่น ~ 20 บิตสำหรับการทำซ้ำ PBKDF2 หนึ่งล้านครั้ง
kelalaka avatar
in flag
คุณควรให้คำแนะนำ ไม่ว่ากลไกการแฮชรหัสผ่านจะเป็นแบบใดก็ตาม จำเป็นต้องมีรหัสผ่านที่ดีไว้ก่อน นี่ต้องเป็นคำแนะนำชิ้นแรก dicewire หรือ Bip39 เป็นต้น
fgrieu avatar
ng flag
@kelalaka: ฉันยอมรับว่าจำเป็นต้องใช้รหัสผ่านที่ดีกว่า และเพิ่มคำแนะนำนั้น อย่างไรก็ตาม ฉันไม่เห็นตัวเลือกรหัสผ่านที่ไม่ดีเหมือนกับปัญหา _main_ ฉันคิดว่ามันค่อนข้างยากที่จะถอดรหัสรหัสผ่านที่ยากปานกลางเช่น "cipherkey" (หรือเคยเป็นมาก่อนคำถามนั้น) ด้วย 0.1s ของ KDF ฮาร์ดหน่วยความจำ โดยเฉพาะอย่างยิ่งเค็ม มากกว่าที่จะถอดรหัสรหัสผ่านที่น่าจดจำที่สุดโดยไม่มี KDF และโดยตรง ใช้เป็นปุ่ม AES
kelalaka avatar
in flag
มันยังคงขนานกันได้ใน CPU และฉันจะไปที่ [~600K pwned password list](https://haveibeenpwned.com/Passwords) ก่อน แม้ว่ารายการจะได้รับ SHA-1 เพื่อทดสอบ อาจพบว่าไม่ได้แฮชในเว็บเชิงลึก
kelalaka avatar
in flag
นอกจากนี้ ฉันยังแนะนำเสมอว่าให้ใช้ตัวจัดการรหัสผ่าน เช่น รหัสผ่าน 1, Keepass เป็นต้น ด้วยสิ่งเหล่านี้ ผู้ใช้จำเป็นต้องใช้เพียงรหัสผ่านที่ดีในการรักษาความปลอดภัยของห้องนิรภัย พวกเขาจึงสามารถสร้างรหัสสุ่มที่ดีสำหรับรหัสผ่านอื่นๆ ได้ Firefox, Opera มีสิ่งเหล่านี้และสิ่งนี้กำลังเป็นมาตรฐานมากขึ้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา