Score:0

นำคีย์ไปที่ 256 บิตโดยอัลกอริทึมแฮช

ธง us

ตัวอย่างเช่น ถ้าฉันใช้ Rijndael ในการเข้ารหัส ฉันต้องระบุคีย์ที่มีความยาวตามที่กำหนด เพื่อความสะดวกของผู้ใช้ ฉันต้องการให้ผู้ใช้สามารถใช้คีย์ที่มีความยาวเท่าใดก็ได้ จากนั้น เพื่อให้ได้คีย์ตามความยาวที่กำหนดของอัลกอริทึม ฉันสร้างค่าแฮช ซึ่งจะใช้ในการเข้ารหัสและถอดรหัส ความปลอดภัยของไซเฟอร์เท็กซ์ยังคงรับประกันอยู่หรือไม่ หากฉันใช้ SHA-256 เป็นต้น ฉันควรใส่คีย์ผู้ใช้และคีย์ยาวให้สั้นลงหรือไม่ วิธีที่ดีที่สุดในการรับความยาวคีย์ 256 บิตคืออะไร

SAI Peregrinus avatar
si flag
คุณกำลังใช้ไลบรารีการเข้ารหัสใด ควรมี Key Derivation Function (KDF) เช่น HKDF-SHA256 หรือหากคุณใช้รหัสผ่านของผู้ใช้ ให้ใช้ Password Based Key Derivation Function เช่น Argon2id SHA256 ไม่ปลอดภัยสำหรับการใช้งานนี้เพียงอย่างเดียว แต่สามารถใช้ใน KDF เช่น HKDF-SHA256 ทำไม Rijndael แทนที่จะเป็น AES คุณใช้โหมดการทำงานแบบใด ทำไมไม่ใช้ AES-GCM-SIV, AES-GCM หรือ ChaCha20-Poly1305 การเข้ารหัสด้วยสิ่งอื่นที่ไม่ใช่หนึ่งใน 3 นั้นน่าสงสัยและควรได้รับการพิสูจน์
Luqus avatar
us flag
ฉันใช้ Java cipher library กับอัลกอริทึม AES ในโหมด CBC (Rijndael)ความปลอดภัยของอัลกอริทึมนั้นเพียงพอสำหรับฉันในขณะนี้ ฉันสนใจแฮชเป็นกุญแจสำคัญ
SAI Peregrinus avatar
si flag
มีไลบรารีรหัส Java จำนวนมาก โหมด CBC ที่ไม่ผ่านการรับรองความถูกต้องนั้นดูเหมือนใช้งานได้ง่ายเป็นสัญญาณที่ไม่ดีสำหรับความสามารถในการใช้งานและความปลอดภัยของสิ่งที่คุณเลือก
Luqus avatar
us flag
ฉันใช้ [javax.crypto.Cipher library](https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html) มาตรฐานซึ่งไม่น่าจะเป็นอันตราย
SAI Peregrinus avatar
si flag
ฉันไม่ได้บอกว่ามันอันตราย ฉันกำลังบอกว่ามันออกแบบมาไม่ดี มันทำให้ตัวเลือกที่ไม่ปลอดภัยพร้อมใช้งานได้ง่าย (เช่น ต้องใช้โหมด ECB และ CBC แต่โหมดปลอดภัยเช่น GCM และ SIV เป็นตัวเลือก) และยังรวมรหัสที่หักอย่างละเอียดเช่น RC2 และ RC4 ไม่ใช่ว่ามันเป็นอันตราย แต่มันถูกออกแบบมาให้ง่ายต่อการทำลายล้าง เปรียบเทียบกับบางอย่างเช่น libsodium ที่ออกแบบมาเพื่อให้ยากที่จะทำพลาด ในขณะที่ทั้งสองอย่างอาจมีความปลอดภัยเท่ากันหากคุณเลือกได้ดี การเลือก libsodium ที่ไม่ดีจะยากกว่ามาก
Score:2
ธง si

SHA-256 ไม่ใช่ Key Derivation Function (KDF) และไม่ควรใช้เป็นฟังก์ชันเดียว

SHA-256 สามารถเป็นส่วนหนึ่งของ KDF เช่น HKDF-SHA256 ซึ่งใช้ เอชแมค-SHA256 ซึ่งจะใช้ SHA256 HKDF อยู่ภายใต้ ใช้ในทางที่ผิด ซึ่งอาจทำลายความปลอดภัยของมันได้ ตรวจสอบให้แน่ใจว่าคุณใช้อย่างถูกต้อง (ถ้าคุณใช้)

HKDF คือ เหมาะสำหรับอินพุตที่มีเอนโทรปีสูงเท่านั้นเช่นเดียวกับคีย์อื่นๆ หรือผลลัพธ์ของการแลกเปลี่ยน Elliptic Curve Diffie Hellman หากคุณได้รับคีย์จากรหัสผ่าน คุณต้องมีฟังก์ชันการสืบทอดคีย์ที่ใช้รหัสผ่าน เช่น อาร์กอน2id.

baro77 avatar
gd flag
ลิงค์บล็อกที่ยอดเยี่ยม! (ญ)
Score:0
ธง gd

หากคุณต้องการความปลอดภัยที่กำหนดโดยรหัสผ่านเอนโทรปี 256 บิต การแฮชเพียงอย่างเดียวจะไม่ช่วยคุณหากคีย์เริ่มต้นน้อยกว่า 256 บิตของเอนโทรปี เนื่องจากแฮชเป็นฟังก์ชันที่รวดเร็ว ดังนั้นการทดสอบคีย์ดั้งเดิมจากพื้นที่ขนาดย่อหรือคีย์แฮชจึงเกือบจะเหมือนกัน . ฟังก์ชันการสืบทอดคีย์ (หรือที่เรียกว่า CPU และ/หรือหน่วยความจำ/หน่วยความจำ/สตอเรจฮาร์ดฟังก์ชัน) สามารถลดปัญหาได้ แต่จากมุมมองของการคำนวณเท่านั้น ไม่ใช่ในทางทฤษฎี (ดังนั้นจึงเป็นเรื่องสำคัญที่คุณหวังว่าจะได้รับความช่วยเหลือจาก KDF นานแค่ไหน) แน่นอนว่าหากรหัสผ่านเดิม > 256 บิตและ 256 บิตเพียงพอสำหรับคุณ SHA256 ก็ใช้ได้ แต่ฉันเดาว่านั่นไม่ใช่กรณีผู้ใช้จริง ;)

SAI Peregrinus avatar
si flag
คุณสับสนระหว่าง KDF และ PBKDF KDF ยังคงเร็ว PBKDF มีความยากในการปรับแต่ง
baro77 avatar
gd flag
คุณพูดถูก ขออภัยต่อ OP และขอขอบคุณสำหรับการชี้แจง!

โพสต์คำตอบ

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