ขณะนี้ฉันกำลังทำงานเพื่อแทนที่การเข้ารหัส chacha20 ในแอปของฉันด้วย chacha20poly1305 แต่ฉันพบคำถามสองสามข้อที่ดูเหมือนจะไม่สามารถหาคำตอบที่ชัดเจนได้ ส่วนใหญ่เกิดจากสนิม chacha20poly1305
ลัง:
- ทำไม
chacha20poly1305
ลังต้องใช้ nonce สำหรับทุกข้อความ แต่ chacha20
ต้องการเพียง nonce เดียวเมื่อเริ่มต้นรหัส? เหตุใดจึงไม่เป็นเช่นนั้นสำหรับไลบรารีอื่นเช่น Python's Pyคริปโทโดม
?
- อัลกอริทึม ChaCha20Poly1305 ต้องการ nonce ใหม่สำหรับทุกข้อความหรือไม่
- ฉันเข้าใจว่าอัลกอริทึม ChaCha20 มีตัวนับภายในซึ่งรวมกับคีย์และ nonce เพื่อสร้างบล็อกของคีย์สตรีม (หนึ่งบล็อกต่อการเพิ่มตัวนับ) นี่ไม่ใช่กรณีที่ใช้ใน ChaCha20Poly1305 ใช่ไหม
สุดท้าย หาก ChaCha20Poly1305 (หรือในกรณีของฉันคือ XChaCha20Poly1305) ต้องการ nonce ใหม่สำหรับทุกข้อความ ตัวนับ 4 ไบต์ต่อข้อความรวมกับ 20 ไบต์แบบสุ่มต่อเซสชัน nonce จะเหมาะสมที่จะใช้เป็น nonce ต่อข้อความหรือไม่ ? (คีย์นั้นมาจากรหัสผ่านและมีแนวโน้มที่จะทำซ้ำระหว่างเซสชัน และการเก็บตัวนับสากลในทุกเซสชันก็ไม่สามารถทำได้)
ขอบคุณ!