Score:0

AES GCM พร้อมการทำซ้ำ PBKDF2 100k ยังคงใช้ได้ในปี 2022 หรือไม่

ธง us

การใช้ AES GCM กับ PBKDF2 และการทำซ้ำ 100,000 ครั้งยังคงถือว่าปลอดภัยในปี 2022 หรือไม่

ในรูปแบบภัยคุกคามของเรา หากเราเพิกเฉยต่อความเสี่ยงที่เกี่ยวข้องกับควอนตัมคอมพิวติ้ง จะปลอดภัยหรือไม่

นี่คือตัวอย่างการใช้งาน Python:

นำเข้า Crypto.Random, Crypto.Protocol.KDF, Crypto.Cipher.AES
plaintext = b"สวัสดีชาวโลก สวัสดีชาวโลก สวัสดีชาวโลก สวัสดีชาวโลก"
รหัสผ่าน = b"ลวดเย็บแบตเตอรี่ม้าที่ถูกต้อง"
nonce = Crypto.Random.new().อ่าน(16)
คีย์ = Crypto.Protocol.KDF.PBKDF2(รหัสผ่าน, nonce, count=100000)
การเข้ารหัส = Crypto.Cipher.AES.new (คีย์, Crypto.Cipher.AES.MODE_GCM, nonce=nonce, mac_len=16)
ciphertext = (ไม่มี,) + cipher.encrypt_and_digest(ข้อความธรรมดา) # nonce | ข้อความเข้ารหัส | แท็ก
พิมพ์ (ciphertext)

หมายเหตุ: ใช้เหมือนกัน ไม่เคย สำหรับ PBKDF2 และ AES.ใหม่(...) ดูเหมือนจะไม่เป็นปัญหาหากเราไม่เคยใช้สิ่งนี้ซ้ำ ไม่เคย สำหรับการเข้ารหัสในอนาคต โปรดดูที่ การใช้เกลือ PBKDF2 ซ้ำสำหรับ AES/GCM เป็น IV: อันตรายไหม

forest avatar
vn flag
ต้องมีคุณสมบัติอะไรบ้างจึงจะ "ยังใช้ได้" สำหรับรูปแบบภัยคุกคามของคุณ จะดีกว่าถ้าใช้ KDF ที่มีฮาร์ดหน่วยความจำ เนื่องจาก PBKDF2 ต่อขนานกันได้ง่าย แต่ก็ใช่ว่าจะพัง
us flag
@forest โดย "ตกลง" สมมติว่าต้านทานผู้โจมตีที่มีงบประมาณ 1 ล้านดอลลาร์สำหรับพลังการประมวลผลในปี 2022 สำหรับงานเฉพาะในการถอดรหัสไฟล์ที่ป้องกันด้วยรหัสผ่านที่กำหนด :) (และไม่สามารถเข้าถึงการคำนวณด้วยควอนตัม)
forest avatar
vn flag
จากนั้นขึ้นอยู่กับว่ารหัสผ่านนั้นแข็งแกร่งเพียงใด PBKDF2 100,000 รอบสำหรับแฮชที่กำหนดจะเพิ่ม $\log_2(100000) \ประมาณ 16.6$ บิตของเอนโทรปีเมื่อเทียบกับรอบเดียวของแฮชนั้น หากรหัสผ่านนั้นรัดกุมมากอยู่แล้ว คุณไม่จำเป็นต้องใช้ _need_ PBKDF2 เลยด้วยซ้ำ จุดประสงค์เดียวของ KDF ที่ช้าคือการปรับปรุงความปลอดภัยของรหัสผ่านที่มีความแข็งแกร่งเล็กน้อย หากรหัสผ่านของคุณมีเพียงเอนโทรปี 64 บิต ดังนั้นการวนซ้ำ 1,000,000 ครั้งอาจทำให้ผู้โจมตีไม่สามารถเข้าถึงได้
us flag
@forest สมมติว่ารหัสผ่านคือ 10 อักขระที่เป็นตัวอักษรและตัวเลขคละกันแบบสุ่ม (`a-zA-Z0-9`) การทำซ้ำ 100k ของ PBKDF2 ทำให้ไม่สามารถเข้าถึงผู้โจมตีได้หรือไม่? PS: ฉันคิดว่าความคิดเห็นสุดท้ายของคุณสามารถเปลี่ยนเป็นคำตอบได้
Maarten Bodewes avatar
in flag
คุณสามารถคำนวณได้เอง เช่น [ที่นี่](https://www.wolframalpha.com/input?i=log_2%28%2826+%2B+26+%2B+10%29+%5E+10%29) ดังนั้น ~59.5 + ~16.6 = 76.1 บิตของการรักษาความปลอดภัย แต่นั่นถือว่ารหัสผ่านเป็นแบบสุ่มทั้งหมด ไม่ใช่แค่ *การสุ่มหา* ไปยังผู้โจมตี โปรดทราบว่าด้านบนอิงตามการค้นหาทั้งหมด ดังนั้นคุณจึงมีความปลอดภัยน้อยลง 1 บิตโดยเฉลี่ย (ฉันควรจะลบบิตนั้นออกจริงๆ)
us flag
ใช่ @MaartenBodewes ฉันอยากรู้ว่ารหัสผ่านทุกวันนี้มีเอนโทรปีกี่บิตที่ถือว่า "แข็งแกร่ง" > 70 บิตดูเหมือนจะโอเคใช่ไหม
Maarten Bodewes avatar
in flag
ขึ้นอยู่กับว่าคุณจะสู้กับใคร แต่ขอบอกว่าฉันไม่คิดว่าแฮ็กเกอร์ทั่วไปจะพยายามทำลายมัน คุณต้องมีองค์กรขนาดใหญ่ บ็อตเน็ต หรือรัฐบาลเพื่อแฮ็กรหัสผ่านเพียงรหัสเดียว (สมมติว่าคุณใช้เกลือแบบสุ่ม) ดังนั้นจะมีวงจร CPU ที่สูญเปล่ามากเกินไป ปัญหาหนึ่งคือมนุษย์จำรหัสผ่านแบบสุ่ม 10 ตัวได้ไม่ดีนัก และถ้าคุณใช้ตัวจัดการคีย์ คุณอาจใช้ตัวจัดการที่รัดกุมกว่านี้ก็ได้
forest avatar
vn flag
เขียนคำตอบตามความคิดเห็นของฉัน เนื่องจากดูเหมือนว่าจะดีที่สุดที่สามารถทำได้ตามข้อมูลที่ให้ไว้
Score:1
ธง vn

ขึ้นอยู่กับความแข็งแกร่งของรหัสผ่านทั้งหมด PBKDF2 100,000 รอบสำหรับรหัสผ่านที่มีแฮชที่กำหนดจะเพิ่มเทียบเท่ากับ $\log_2(100000) \ประมาณ 16.6$ บิตของเอนโทรปีเมื่อเทียบกับรอบเดียวของแฮชนั้น หากรหัสผ่านนั้นแข็งแกร่งมากอยู่แล้ว คุณก็ทำไม่ได้เช่นกัน ความต้องการ PBKDF2. จุดประสงค์เดียวของ KDF ที่ช้าคือการปรับปรุงความปลอดภัยของรหัสผ่านที่มีความแข็งแกร่งเล็กน้อย หากรหัสผ่านของคุณมีเพียงเอนโทรปี 64 บิต ดังนั้นการวนซ้ำ 1,000,000 ครั้งอาจทำให้ผู้โจมตีเข้าถึงไม่ได้ด้วยทรัพย์สิน \$1M เนื่องจาก 64 + 16.6 = 80.6 บิต ซึ่งน่าจะแพงกว่า \ ทำลาย 1 ล้านเหรียญ

ควรใช้ KDF ที่มีฮาร์ดหน่วยความจำ นี่ไม่ใช่เพราะ PBKDF2 เสีย ต่อวินาทีแต่เป็นเพราะผู้โจมตีสามารถเพิ่มขนาดการโจมตีได้ง่ายกว่าเนื่องจากแฮชให้ยืมตัวไปสู่ความเท่าเทียมอย่างมาก

โพสต์คำตอบ

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