วัตถุสำคัญที่จำเป็นต้องยอมรับโดยฟังก์ชันนี้คืออะไร
อาร์เรย์ของไบต์
คุณจะได้รหัสผ่านความยาวแบบสุ่มของผู้ใช้ได้อย่างไร
แนวทางปฏิบัติทั่วไปคือการใช้ Password-Based Key Derivation Functions (PBKDF) เช่น PBKDF2, Bcrypt, Argon2, BalloonHash ฯลฯ โปรดทราบว่าไม่สามารถเพิ่มความแข็งแกร่งของอินพุตได้ ดังนั้นผู้ใช้ต้องเลือกรหัสผ่านที่ดีและมีความแข็งแรงเพียงพอ เช่น รหัสผ่านที่สร้างด้วยวิธี dicewire
ในบางแอปพลิเคชัน เช่น การเข้ารหัสดิสก์ คีย์สุ่มแบบเดียวกันจะถูกสร้างขึ้นสำหรับการเข้ารหัสดิสก์ และสิ่งนี้จะถูกเข้ารหัสจากคีย์ที่ได้รับจากรหัสผ่านของผู้ใช้ อย่างไรก็ตาม ความปลอดภัยขึ้นอยู่กับคุณภาพของรหัสผ่าน
นอกจากนี้ เนื้อหาหลักยังสามารถเป็นแหล่งที่มาของการแลกเปลี่ยนคีย์ เช่น DHKE ในกรณีนี้ ต้องใช้ฟังก์ชันการสืบทอดคีย์ เช่น HKDF กับเนื้อหาหลักเพื่อรับคีย์ AES (ไบต์)
PKCS7 จะถูกรันเพื่อให้คีย์ถูกเสริมหรือไม่?
ไม่มีทาง นั่นไม่ปลอดภัย หากคุณกำลังออกแบบไลบรารี ให้ปฏิเสธอินพุตของผู้ใช้ (โปรแกรมเมอร์) หากอินพุตนั้นสั้นกว่าขนาดคีย์เป้าหมาย
นี่แสดงว่าคีย์ที่ป้อนจริงของผู้ใช้เป็นส่วนหนึ่งของกำหนดการคีย์หรือคีย์ทั้งหมดในกำหนดการมาจากคีย์ดิบที่ป้อนจริงของผู้ใช้
รหัสผ่านของผู้ใช้ควรได้รับการประมวลผลด้วย PBKDF เพื่อรับคีย์ กำหนดการคีย์ต้องการอาร์เรย์คีย์ที่มีขนาดขึ้นอยู่กับ AES ที่ต้องการ (128,192,256) เดอะ กำหนดการสำคัญไม่ได้แยกแยะคุณภาพของวัสดุสำคัญ และไม่ใช่ส่วนหนึ่งของการออกแบบ ความรับผิดชอบด้านคุณภาพของเนื้อหาสำคัญอยู่ที่ผู้ใช้และห้องสมุด ไลบรารีที่เข้ารหัสควรจัดการรหัสผ่านด้วย PBKDF ที่ดีและป้อนเอาต์พุตลงในกำหนดการคีย์ กระบวนการนี้ต้องเป็นอิสระจากผู้ใช้ - ยกเว้นคำเตือนบางอย่างเกี่ยวกับคุณภาพของรหัสผ่าน
ทั้งหมดในอย่างเดียว;
- รับรหัสผ่านจากผู้ใช้และเตือนผู้ใช้หากรหัสผ่านสั้น
- รับคีย์ไบต์อาร์เรย์ที่ต้องการจากรหัสผ่านด้วย PBKDF
- ระบุตารางเวลาคีย์ด้วยไบต์อาร์เรย์คีย์ที่ได้รับ