ฉันกำลังพยายามสรุปแนวคิดของ SIV ในบริบทของการเข้ารหัส ฉันเข้าใจแง่มุมของการไม่ใช้ในทางที่ผิด ฯลฯ และฉันเข้าใจว่าคุณสมบัติหลักสำหรับ SIV คือพวกเขารับรองว่าในขณะที่เข้ารหัสข้อความเดียวกันด้วยคีย์เดียวกันจะเปิดเผยว่าข้อความนั้นเหมือนกัน แต่จะไม่เปิดเผยสิ่งอื่นใด
โดยเฉพาะอย่างยิ่ง การใช้คีย์เดียวกันกับข้อความที่แตกต่างกันจะไม่มีปัญหาร้ายแรงโดยไม่ต้องใช้ซ้ำในระบบอื่น
หากฉันเข้าใจถูกต้อง คุณสามารถสร้างโหมดการทำงาน SIV โดยใช้:
def เข้ารหัส (msg, คีย์):
siv = hash_shake256(บิต=192, msg)
ส่งคืน xchacha20 (คีย์, siv, msg), siv
กล่าวอีกนัยหนึ่ง อันดับแรก เราจะคำนวณแฮชที่คีย์บนข้อความ จากนั้นใช้ค่านั้นเป็น nonce สำหรับการเข้ารหัสจริง
ผลลัพธ์คือข้อความเข้ารหัสเช่นเดียวกับที่สร้างขึ้น ซิฟ
ทั้งคู่ปลอดภัยที่จะแบ่งปันโดยไม่เปิดเผยสิ่งใดให้ศัตรูรู้
ความปลอดภัยมาจากฟังก์ชันแฮชคีย์ซึ่งไม่สามารถย้อนกลับได้และข้อเท็จจริงที่ว่าสำหรับแต่ละฟังก์ชัน ข้อความ
เราผ่านการป้อน เรามั่นใจว่าเราจะไม่มี nos ซ้ำ
- ฉันเข้าใจสิ่งต่าง ๆ ถูกต้องหรือไม่?
- ปลอดภัยไหมที่จะใช้คีย์เดียวกันสำหรับทั้งคีย์แฮชและการเข้ารหัส
- ฉันถือว่าจริง
ซิฟ
การใช้งานเป็นมากกว่าการแฮชอินพุตเล็กน้อยหรือไม่