Primitive การเข้ารหัสที่ผ่านการตรวจสอบสิทธิ์แบบดีเทอร์มินิสติกพร้อมข้อมูลที่เชื่อมโยง (Deterministic AEAD) ให้การเข้ารหัสที่มีพร็อพเพอร์ตี้ดีเทอร์มินิสติก นั่นคือการเข้ารหัสข้อมูลเดียวกันจะให้ข้อความที่เข้ารหัสเดียวกันเสมอ การเข้ารหัสประเภทนี้มีประโยชน์สำหรับการรวมคีย์หรือสำหรับบางรูปแบบในการค้นหาข้อมูลที่เข้ารหัส (ดูข้อมูลเพิ่มเติมได้ที่ RFC 5297, Section 1.3) เนื่องจากคุณสมบัติที่แน่นอน การใช้งาน Primitive นี้ อาจทำให้สูญเสียความลับได้ เนื่องจากผู้โจมตีเพียงแค่ต้องค้นหา ข้อความที่เข้ารหัสสำหรับข้อความที่กำหนดเพื่อระบุอินสแตนซ์อื่นๆ ของข้อความนั้น
AEAD ที่กำหนดได้มีคุณสมบัติดังนี้
- Secrecy: ไม่ทราบข้อมูลใดๆ เกี่ยวกับข้อความธรรมดา ยกเว้นความยาวและความเท่ากันของข้อความธรรมดาที่ซ้ำกัน
- ความถูกต้อง: ไม่สามารถเปลี่ยนแปลงข้อความธรรมดาที่เข้ารหัส ซึ่งอยู่ภายใต้ข้อความที่เข้ารหัสโดยไม่ถูกตรวจพบ
- สมมาตร: การเข้ารหัสข้อความธรรมดาและการถอดรหัสข้อความที่เข้ารหัสจะ ดำเนินการด้วยคีย์เดียวกัน
- แน่นอน: ตราบใดที่ไม่ได้เปลี่ยนคีย์หลัก การเข้ารหัสข้อความธรรมดาสองครั้งด้วยพารามิเตอร์เดียวกันจะส่งผลให้ได้ข้อความที่เข้ารหัสเดียวกัน
ข้อมูลที่เกี่ยวข้อง
คุณใช้ AEAD ที่กำหนดได้เพื่อเชื่อมโยงข้อความที่เข้ารหัสกับข้อมูลที่เชื่อมโยงที่เฉพาะเจาะจง สมมติว่าคุณมีฐานข้อมูลที่มีฟิลด์ user-id
และ encrypted-medical-history ในสถานการณ์นี้ สามารถใช้ user-id เป็น
ข้อมูลที่เชื่อมโยงเมื่อเข้ารหัส encrypted-medical-history ซึ่งจะป้องกันไม่ให้
ผู้โจมตีย้ายประวัติทางการแพทย์จากผู้ใช้รายหนึ่งไปยังอีกรายหนึ่ง
ข้อมูลที่เชื่อมโยงเป็นข้อมูลที่ไม่บังคับ หากระบุไว้ การถอดรหัสจะสำเร็จก็ต่อเมื่อมีการส่งข้อมูลที่เชื่อมโยงเดียวกันไปยังทั้งการเรียกใช้ฟังก์ชันเข้ารหัสและถอดรหัส
เลือกประเภทคีย์
เราขอแนะนำให้ใช้คีย์ประเภท AES256_SIV สำหรับ Use Case ทั้งหมด
การรับประกันด้านความปลอดภัย
- ระดับการตรวจสอบสิทธิ์อย่างน้อย 80 บิต
- ข้อความธรรมดาและข้อมูลที่เกี่ยวข้องมีความยาวเท่าใดก็ได้ (ภายในช่วง 0..232 ไบต์)
- ระดับความปลอดภัย 128 บิตต่อการโจมตีเพื่อกู้คืนคีย์ และยังใช้ในการโจมตีแบบหลายผู้ใช้ที่มีคีย์สูงสุด 232 คีย์ ซึ่งหมายความว่าหากผู้ไม่ประสงค์ดีได้รับข้อความที่เข้ารหัส 232 ข้อความซึ่งเข้ารหัสภายใต้คีย์ 232 คีย์เดียวกัน ผู้ไม่ประสงค์ดีจะต้องทำการคำนวณ 2128 ครั้งเพื่อรับคีย์เพียงคีย์เดียว
- ความสามารถในการเข้ารหัสข้อความ 238 อย่างปลอดภัย โดยแต่ละข้อความต้องมีความยาวน้อยกว่า 1 MB
ตัวอย่างกรณีการใช้งาน
ดูฉันต้องการเข้ารหัสข้อมูลแบบกำหนดและ ฉันต้องการเชื่อมโยงข้อความที่เข้ารหัสกับบริบทของข้อความ