Score:4

KMAC เป็นเพียง SHA-3-256(KEY || ข้อความ)

ธง ng

ตาม จุดแข็งของเค็กคัก คุณมี:

ซึ่งแตกต่างจาก SHA-1 และ SHA-2 Keccak ไม่มีจุดอ่อนด้านการขยายความยาว ดังนั้นจึงไม่จำเป็นต้องใช้โครงสร้างซ้อนกันของ HMAC แทน การคำนวณ MAC สามารถทำได้โดยเพียงแค่ต่อท้ายข้อความด้วยคีย์

หมายความว่าฉันสามารถรับ MAC ของ ข้อความ โดยเพียงแค่การคำนวณ $\operatorname{SHA-3-256}(คีย์ \mathbin\| ข้อความ)$. หากเป็นกรณีนี้ทำไมจึงเป็นเช่นนั้น $\operatorname{KMAC}$ มีอยู่?

เป็น $\operatorname{KMAC}$ เช่นเดียวกับเพียง $\operatorname{SHA-3-256}(คีย์ \mathbin\| ข้อความ)$? ถ้าไม่เช่นนั้นจะใช้อย่างไร $\operatorname{KMAC}$ เพื่อสร้างแท็กการรับรองความถูกต้องที่แตกต่างจากการคำนวณ $\operatorname{SHA-3-256}(คีย์ \mathbin\| ข้อความ)$?

Score:5
ธง in

KMAC มาตรฐานเป็นมากกว่านั้นด้วย การแยกโดเมน คำนำหน้า; NIST SP 800-185

KMAC128(K, X, L, S):

เงื่อนไขความถูกต้อง: $\text{len}(K) < 2^{2040}$ และ $0 \le L < 2^{2040}$ และ $\text{len}(S) < 2^{2040}$

  1. newX = bytepad(encode_string(K), 168) || X || right_encode(L)
  2. ส่งคืน cSHAKE128 (newX, L, âKMACâ, ส).

และ

cSHAKE128(X, L, N, S):

เงื่อนไขความถูกต้อง: $\text{len}(N) < 2^{2040}$ และ $\text{len}(S) < 2^{2040}$

  1. ถ้า N = "" และ S = "": กลับ SHAKE128(X, L);
  2. อื่น: ส่งคืน KECCAK[256](bytepad(encode_string(N) || encode_string(S), 168) || X || 00, ล)

และ NIST FIPS 202

SHAKE128(M, d) = KECCAK[256] (ม || 1111, ง),


ข้อมูลของ NIST เกี่ยวกับคำต่อท้าย

ส่วนต่อท้ายรองรับโดเมน แยก; กล่าวคือ แยกแยะอินพุตของ KECCAK[c] ที่เกิดจากฟังก์ชันแฮช SHA-3 จากอินพุตที่เกิดจาก SHA-3 XOFs ที่กำหนดไว้ในมาตรา 6.2 เช่นเดียวกับโดเมนอื่นๆ ที่ อาจถูกกำหนดขึ้นในอนาคต

กล่าวคือ เรามี oracles แบบสุ่มที่แตกต่างกันไปตามการแยกโดเมน SHA3 ​​และ Blake2 นั้นใกล้เคียงกับออราเคิลแบบสุ่มมากกว่า SHA256 เนื่องจากปราศจากการโจมตีแบบขยายความยาว

kelalaka avatar
in flag
สามารถดูฟังก์ชันอื่นๆ (Keccak และ Sponge) ได้ [ที่นี่](https://crypto.stackexchange.com/a/89665/18298)
Finlay Weber avatar
ng flag
โดย "คำนำหน้าการแยกโดเมน" คุณอ้างถึงสตริงที่ปรับแต่งได้ที่ cSHAKE ใช้หรือไม่
kelalaka avatar
in flag
แน่นอน ด้วย [การแยกโดเมน](https://crypto.stackexchange.com/a/83307/18298) แกนหลักของฟังก์ชันแฮชสามารถทำงานเหมือนออราเคิลแบบสุ่มต่างๆ
kelalaka avatar
in flag
ด้วยวิธีที่กำหนดเอง NIST จะแก้ไขระหว่างการกำหนดมาตรฐาน ผมใส่ cSHAKE128 ถูกต้องแล้ว มี 256 เวอร์ชั่นด้วย
Finlay Weber avatar
ng flag
โอเคขอบคุณ! ฉันกำลังย่อยสิ่งนี้อย่างช้าๆ สิ่งที่อยู่ในใจก็คือ: หากสตริงที่กำหนดเองนี้ได้รับการแก้ไขโดย NIST แล้ว ข้อดีของการใช้ KMAC เทียบกับการทำ SHA-3-256(KEY || ข้อความ) ด้วยตนเองคืออะไร
kelalaka avatar
in flag
SHA3 ​​มีความต้านทานการโจมตีที่ยาวนานตามธรรมชาติ และคุณคาดหวังได้ชัดเจนว่าจะต้องถามสิ่งนั้น คุณกำลังใช้ SHA-3-256 โดยตรงเหมือนกับ oracle สุ่มตัวเดียวกัน เมื่อเวลาผ่านไป เราได้เรียนรู้ว่าเราไม่ควรทำเช่นนี้ในขณะที่เราสามารถแยกโดเมนได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา