Score:1

จะสร้างคีย์สำหรับ AES ในความยาวคีย์ 192 บิตจากรหัสผ่านได้อย่างไร

ธง mu

สมมติว่าฉันมีรหัสผ่าน และปลอดภัย แต่เป็นสตริง 10 อักขระ

ดังนั้น หากฉันต้องการสร้างคีย์ AES สำหรับอัลกอริทึมเวอร์ชัน 128 บิต ฉันจะแฮชโดยใช้ MD5 หรือถ้าฉันต้องการอัลกอริทึมเวอร์ชัน 256 ฉันจะแฮชด้วยฟังก์ชันแฮชความยาว 256 ใดๆ เช่น Sha_256 แต่ฉันไม่พบแฮชใด ๆ (นอกเหนือจากชื่อ Tiger) ที่สร้างเอาต์พุต 192 บิตไม่ว่าเกลือหรือขั้นตอนก่อนหน้าในกระบวนการสร้างคีย์จะเป็นอย่างไร ขั้นตอนสุดท้ายดูเหมือนจะเป็นแฮชที่ส่งคืนคีย์ตามความยาวที่ต้องการเสมอ

วิธีแก้ปัญหาปกติคือใช้แฮชเดียวกันเสมอ (เช่น Sha256) และใช้จำนวนบิตที่จำเป็นสำหรับคีย์หรือไม่ ถ้าไม่ใช่ แล้ว 192 ล่ะ?

Marc Ilunga avatar
tr flag
ไม่แนะนำให้ใช้ md5 ของ sha256 เพื่อสร้างรหัสจากรหัสผ่าน วิธีที่ดีที่สุดคือใช้ฟังก์ชันแฮชรหัสผ่านที่ช้า เช่น argon2 (https://en.wikipedia.org/wiki/Argon2) เว้นแต่รหัสผ่านจะถูกสร้างขึ้นแบบสุ่ม ซึ่งให้คุณเลือกความยาวของเอาต์พุตได้ด้วย อีกทางหนึ่ง เอาต์พุตของแฮชรหัสผ่านที่ปลอดภัยสามารถตัดให้สั้นลงตามความยาวที่ต้องการได้
mu flag
ตกลง. ขอบคุณสำหรับข้อมูลของคุณ!
Score:2
ธง in

สมมติว่าฉันมีรหัสผ่าน และปลอดภัย แต่เป็นสตริงอักขระ 10 ตัว

หากเราถือว่าอักขระทั้ง 10 ตัวเป็น ASCII (ไม่ขยาย) คุณจะได้รับสูงสุด พื้นที่การค้นหา 64 บิต สำหรับผู้โจมตี ซึ่งหมายความว่าคุณกำลังใช้คีย์ 64 บิตสำหรับ AES-128 อย่างมีประสิทธิภาพ กฎก็คือ

  • ไม่เพียงแต่ขนาดคีย์เท่านั้น แต่ยังรวมถึงเอนโทรปีของแหล่งที่มาของคีย์ด้วย

วิธีทั่วไปคือการสร้าง 128 บิตแบบสุ่มสำหรับคีย์ AES-128 นี่เป็นเรื่องง่ายถ้าคุณใช้การแลกเปลี่ยนคีย์เช่น DH (ในตอนท้ายแฮชด้วย - มันรั่วไหลของ Legendre) หรือ ECDH (แฮชเช่นกัน คะแนนจะไม่สุ่มเหมือนกัน)

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

ตอนนี้ หากคุณไม่มีโอกาสที่จะเพิ่มแหล่งที่มาของเอนโทรปีของรหัสผ่านของคุณ คุณต้องใช้อัลกอริทึมการแฮชรหัสผ่านอย่างเช่น Argon2 และการแฮชบอลลูนอย่างแน่นอน มีพารามิเตอร์เช่น

  • การทำซ้ำ; เพิ่มเวลาโจมตีตามสัดส่วนของการวนซ้ำ
  • ความแข็งของหน่วยความจำ; กำจัด/ลดการค้นหารหัสผ่านจำนวนมากของการค้นหา ASIC/PFGA/GPU โดยที่หน่วยความจำไม่ถูกผูกไว้เป็น CPU
  • และ, ตัวนับด้าย; ลดการขนานของโปรแกรมค้นหารหัสผ่าน

จำเป็นต้องปรับพารามิเตอร์ทั้งหมดเพื่อให้ได้ความปลอดภัยตามเป้าหมายของคุณ ตัวอย่างเช่น หากรหัสผ่านของคุณมีการรักษาความปลอดภัย 100 บิต คุณจำเป็นต้องมี $2^{28}$ การวนซ้ำเพื่อบังคับให้ผู้โจมตีค้นหาแบบ 128 บิต

จะสร้างคีย์สำหรับ AES ในความยาวคีย์ 192 บิตจากรหัสผ่านได้อย่างไร

  • ใช้คำ Dicewire 15 คำ แฮชแล้วตัดแต่งเป็น 192 บิต หรือ

  • ใช้รหัสผ่านของคุณด้วยเกลือและแฮชด้วยอัลกอริธึมการแฮชรหัสผ่าน เช่น Argon2 พร้อมพารามิเตอร์ที่ปรับแต่งอย่างดี พวกเขาได้รับการออกแบบแล้วและคุณสามารถหาได้ ห้องสมุด ความยาวเอาต์พุตที่ต้องการ ( โปรดจำไว้ว่า ความปลอดภัยของ Argon2 ครอบคลุม 512 บิต ). และ;

    • ใช้เกลือที่ไม่ซ้ำกันต่อคีย์ที่สร้างขึ้น
    • ใช้ค่าเอนโทรปีที่สูงขึ้น
    • ใช้พารามิเตอร์ที่สูงกว่าให้มากที่สุด
mu flag
ขอบคุณสำหรับคำอธิบาย รหัสผ่านเองจะไม่ถูกสร้างขึ้นโดยมนุษย์ แต่เป็นอัลกอริทึมที่ปลอดภัยในการเข้ารหัส (อย่างน้อยตาม php) และสิ่งนี้จะกลายเป็น 512 บิตที่แสดงเป็นสตริงฐานสิบหก ฉันใช้รหัสผ่านเป็นตัวอย่างจากความไม่รู้ เพราะที่อยากรู้คือทำอย่างไรให้ได้ความยาวที่เหมาะสม แต่ถ้าฉันเข้าใจคำอธิบายของคุณถูกต้อง แค่แฮชสตริงหรือลบบิตที่ส่วนท้ายเพื่อใช้เป็นคีย์ก็เพียงพอแล้วใช่ไหม
kelalaka avatar
in flag
ใช่ ตามทฤษฎีแล้ว บิตทั้งหมดของเอาต์พุตของแฮชการเข้ารหัสที่ดีนั้นขึ้นอยู่กับค่าอินพุตทั้งหมด การตัดแต่งเป็นวิธีทั่วไป เช่น การตัดแต่ง SHA512/256 SHA-512 (ด้วยค่าเริ่มต้นที่แตกต่างกันเพื่อแยกโดเมน)

โพสต์คำตอบ

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