หากคุณเป็นผู้ใช้การเข้ารหัส: สิ่งเหล่านี้ล้าสมัย ไม่มีเหตุผลในยุคนี้ที่จะรวม MAC หรือแฮชเข้ากับการเข้ารหัส ใช้มาตรฐาน กศน อัลกอริทึมซึ่งรวมการรักษาความลับและการป้องกันความถูกต้องด้วยวิธีที่ได้รับการตรวจสอบโดยนักเข้ารหัส อาจใช้การเข้ารหัส MAC จากนั้นเข้ารหัสแล้วเข้ารหัส MAC หรือเข้ารหัสและ MAC ภายใต้ประทุน หรือบางอย่างที่ไม่เข้ากับกรอบทั้งสามนี้ แต่คุณไม่ต้องสนใจ
หากคุณเป็นผู้ออกแบบการเข้ารหัสแบบดั้งเดิม: ทั้งหมดนี้เป็นวิธีที่เป็นไปได้ในการจัดหาการเข้ารหัสที่รับรองความถูกต้อง การเข้ารหัสข้อความที่รับรองความถูกต้องรับประกันคุณสมบัติสองประการ: การรักษาความลับ (เฉพาะผู้ที่มีรหัสลับเท่านั้นที่สามารถกู้คืนข้อความจากข้อความรหัสได้) และความถูกต้อง (เฉพาะหน่วยงานที่มีรหัสลับเท่านั้นที่สามารถสร้างข้อความรหัสที่ถูกต้องได้)
MAC รับประกันความถูกต้อง การเข้ารหัสรับประกันการรักษาความลับภายใต้สมมติฐานบางประการ (เช่น การเข้ารหัสที่ไม่มีความถูกต้องอาจเสี่ยงต่อการโจมตีของออราเคิล การขยายการโจมตีของออราเคิล กับโหมด CBC ยอดนิยม) คุณสามารถรวม MAC ดั้งเดิมได้ ม
ด้วยการเข้ารหัสแบบดั้งเดิม อี
บนข้อความ ม
ด้วยวิธีต่างๆ (||
เป็นการต่อข้อมูล):
จ(ม) || ม(อี(ม))
: เข้ารหัสแล้ว-MAC เข้ารหัสข้อความ และเพิ่ม MAC ของการเข้ารหัส
จ(ม || ม(ม))
: MAC-แล้วเข้ารหัส เพิ่ม MAC ของข้อความต่อท้ายข้อความ และเข้ารหัสผลลัพธ์
จ(ม) || ม.(ม.)
: เข้ารหัสและ MAC เข้ารหัสข้อความ และเพิ่ม MAC ของข้อความต้นฉบับ
เป็นไปได้ที่จะทำให้แต่ละข้อถูกต้อง นอกจากนี้ยังเป็นไปได้ที่จะทำให้แต่ละรายการผิด สำหรับการทบทวนข้อดีและข้อเสียของแต่ละวิธี โปรดอ่าน เราควรเข้ารหัส MAC แล้วเข้ารหัสหรือเข้ารหัสแล้ว MAC?
Hash-then-encrypt นั้นเหมือนกับ MAC-then-encrypt ยกเว้นว่าจะใช้ฟังก์ชันแฮชแทน MAC: จ(M || H(ซ))
. นี่เป็นโอกาสที่ดีในการรับประกันการรักษาความลับเนื่องจากทุกอย่างถูกเข้ารหัส ความถูกต้องนั้นเปราะบางกว่า: ขึ้นอยู่กับฝ่ายตรงข้ามที่ไม่สามารถสร้างการเข้ารหัสของแฮชได้ ฉันไม่ทราบเกี่ยวกับโครงสร้างการทำงานที่ใช้เฟรมเวิร์กนี้ แต่เป็นไปได้ว่ามีเฟรมเวิร์กนี้อยู่
คำถามโบนัส: ทำไมไม่เข้ารหัสแล้วแฮชหรือเข้ารหัสแล้วแฮช
สิ่งเหล่านั้นไม่สามารถทำงานได้ เข้ารหัสแล้วแฮช (จ(ม) || เอช(อี(ม.))
) ช่วยให้ทุกคนสามารถปลอมแปลงข้อความได้ตามอำเภอใจโดยเพียงแค่สร้างข้อความเข้ารหัสและเพิ่มแฮชต่อท้าย (และฝ่ายตรงข้ามอาจรู้เนื้อหาของข้อความด้วยซ้ำ ตัวอย่างเช่น การตัดทอนข้อความเข้ารหัสมักจะสอดคล้องกับการตัดทอนข้อความ ดังนั้น ฝ่ายตรงข้ามจึงสามารถตัดทอนข้อความที่มีอยู่ได้อย่างอิสระ) เข้ารหัสและแฮช (จ(ม) || H(ม.)
) เปิดเผยแฮชของข้อความ เพื่อให้ทุกคนสามารถเดาได้ว่าข้อความนั้นอาจเป็นข้อความใดและยืนยันการเดาของพวกเขา