ดูครั้งแรกที่ $\operatorname{SHA3}(S)$
$\operatorname{SHA3}$ เป็นฟังก์ชันแฮชการเข้ารหัสที่สร้างขึ้นสำหรับภาพล่วงหน้า ภาพล่วงหน้ารอง และความต้านทานการชนกัน ถ้าคุณใช้ $\operatorname{SHA3}-512$ จากนั้นคุณจะได้รับการต้านทานภาพล่วงหน้าที่หนึ่งและสอง 512 บิตและความต้านทานการชนกัน 256 บิต
ในกรณีของคุณ ความต้านทานต่อภาพล่วงหน้ามีความสำคัญและความสำเร็จในการค้นหาภาพล่วงหน้านั้นเป็นเหตุการณ์ที่ไม่สำคัญ โดยเฉลี่ยแล้วผู้โจมตีจำเป็นต้องพยายาม $2^{512}$ อินพุตที่แตกต่างกันเพื่อค้นหาภาพล่วงหน้า
กรณีที่มีปัญหาเพียงอย่างเดียวคือขนาดของความลับ หากข้อมูลลับมีขนาดเล็กกว่า 512 บิต การรักษาความปลอดภัยภาพล่วงหน้าจะไม่ใช่ 512 บิต นั่นคือ $= \min\{512,bitLen(ความลับ)\}$ เนื่องจากผู้โจมตีต้องการค้นหาพื้นที่นี้เท่านั้น ดังนั้นควรเก็บความลับไว้อย่างน้อยต้องมากกว่า 256¡ บิตเพื่อให้ได้ความปลอดภัยอย่างน้อย 256 บิต
$h = \operatorname{SHA3}(K + \operatorname{SHA3}(S))$
ผู้แนบได้รับ $K$ และ $h$. ดังที่กล่าวไว้ข้างต้น เวลานี้ด้วยความต้านทานภาพล่วงหน้าเต็มรูปแบบ (512 บิต) จะป้องกันไม่ให้ผู้โจมตีได้รับ $SHA3(S)$ ยังเข้าถึงคนเดียว $S$. อย่างไรก็ตาม พวกเขายังสามารถค้นหา $S$ ถึงกระนั้นเราก็มี $ \min\{512,bitLen(ลับ)\}$ ความปลอดภัย. ขนาดลับที่ดีสำหรับ $S$ จำเป็นอีกครั้ง
แม้แต่ตัวเดียว $\operatorname{SHA3}$ โทรก็พอดับเบิ้ล $\operatorname{SHA3}$ การโทรเกินความจำเป็นด้วยขนาดคีย์ (ลับ) ที่ดี
โครงสร้างของคุณคล้ายกับ HMAC ที่ใช้ double hash เนื่องจากฟังก์ชัน MD hash เสี่ยงต่อการถูกโจมตีด้วยการขยายความยาว ในทางกลับกัน SHA3 มีความต้านทานต่อสิ่งนี้เช่นเดียวกับ BLAKE2
มีการสร้าง MAC จาก SHA3 ที่เรียกว่า KMAC ซึ่งพูดง่ายๆ ต้องขอบคุณการต้านทานต่อการโจมตีแบบขยายความยาว
$$\operatorname{KMAC}(key,m) = \operatorname{SHA3}( คีย์\mathbin\|m)$$
ในสัญกรณ์ของคุณ
$$\operatorname{KMAC}(S,K) = \operatorname{SHA3}( S\mathbin\|K)$$
นี่เป็นการรักษาความปลอดภัย MAC ที่ปลอดภัยและไม่เปิดเผยรหัสแก่ผู้โจมตีไม่ว่าด้วยวิธีใด คุณสามารถใช้ KMAC เพื่อบรรลุสิ่งที่คุณต้องการด้วยขนาดคีย์ที่ดี!
¡บางคนอาจแย้งว่าการรักษาความปลอดภัย 128 บิตก็เพียงพอแล้ว อย่างไรก็ตาม การพัฒนาในอนาคต เช่น คอมพิวเตอร์ควอนตัมเข้ารหัสเป็นภัยคุกคามต่อภาพก่อนหน้าของฟังก์ชันแฮช 128 บิต และเพื่อเป็นการตอบโต้การโจมตีแบบหลายเป้าหมาย เราควรใช้การรักษาความปลอดภัยอย่างน้อย 256 บิตเช่นกัน