Score:0

HMAC คีย์สาธารณะแบบใช้ครั้งเดียวจะปลอดภัยได้หรือไม่

ธง cn

ลองนึกภาพการรับรองความถูกต้องเช่น $hmac = H(ไม่มี, ciphertext)$. $ไม่นอน$ เป็นการสุ่มและเลือกอย่างแท้จริง (สุ่มและไม่มีการแทนที่) จากชุดที่กำหนดไว้ล่วงหน้า $N$. ดังนั้น ${nonce} \ใน N$ และเมื่อใช้แล้วไม่สามารถนำกลับมาใช้ใหม่ได้อีก และ $N$ เป็นที่ทราบโดยทั่วกัน ไม่มีความสัมพันธ์ทางอัลกอริทึมระหว่าง $ไม่นอน$ และ $ciphertext$.

HMAC ปลอดภัยหรือไม่ $N$ เป็นที่สาธารณะ?

Morrolan avatar
ng flag
เนื่องจาก nonce ถูกเลือกแบบสุ่ม ฉันนึกภาพออกว่ามันจะถูกสื่อสาร -- อย่างธรรมดา -- เป็นส่วนหนึ่งของข้อความ / MAC ทูเพิล? จากนั้นผู้โจมตีที่สามารถสกัดกั้นการสื่อสารนี้สามารถแทนที่ข้อความของตนเองและคำนวณ MAC ใหม่โดยใช้ nonce ที่สื่อสาร
Paul Uszak avatar
cn flag
@มอโรลัน ฮิยา แน่นอนพวกเขาทำได้ แต่ $N$ เป็นชุดคงที่ที่กำหนดไว้ล่วงหน้า _" nonce ที่สื่อสาร"_ ต้องเป็นสมาชิกของ $N$ และใช้ได้เพียงครั้งเดียว และ $|nonce|$ มีขนาดใหญ่มาก
Manish Adhikari avatar
us flag
ใช่ คำถามนี้ยากที่จะปฏิบัติตามหากไม่มีคำอธิบายที่เหมาะสมของโปรโตคอลสำหรับการโต้ตอบ เช่น ใครเลือก nonce เซต N แบบไหน และใครคำนวณ hmac และวิธีการสื่อสาร
Morrolan avatar
ng flag
@PaulUszak ในกรณีนี้ ดูเหมือนว่าจะพังทลายลงทั้งหมด - จากชุดที่รู้จักกันดีและสามารถใช้ได้เพียงครั้งเดียว ไม่ได้ป้องกันศัตรูที่สามารถสกัดกั้นข้อความได้ พวกเขาจะแก้ไข คำนวณ MAC ใหม่ และส่งข้อความที่แก้ไขไปแล้ว หากเลือกสิ่งที่ไม่ต้องการใช้ด้วยวิธีที่กำหนดขึ้นแต่เป็นความลับ (คิดว่าเป็น PRF) คุณก็ทำให้มันใช้งานได้ แต่แน่นอนว่าคุณต้องมีรหัสลับที่ใช้ร่วมกันสำหรับ PRF บางทีเราอาจจะพลาดบางประเด็นไป - อาจคุ้มค่าที่จะเรียบเรียงใหม่/ให้รายละเอียดเพิ่มเติม :)
Paul Uszak avatar
cn flag
@Morrolan ฉันกำลังมองหา MAC แบบใช้ครั้งเดียว ขอโทษ.
Paul Uszak avatar
cn flag
@ManishAdhikari ฉันกำลังมองหา MAC แบบใช้ครั้งเดียว ขอโทษ.
Morrolan avatar
ng flag
@PaulUszak พิจารณาสถานการณ์ต่อไปนี้: A ต้องการส่งข้อความ $m$ เลือก nonce $n \leftarrow N$ และคำนวณ MAC $h := HMAC(n, m)$ ส่ง $(n, h, m)$ ไปยัง B E ตัด $(n, h, m)$ (ข้อความไม่ถึง B!) เลือกข้อความที่ต้องการ $m'$ คำนวณ $h' = HMAC(n, m')$ ส่ง $(n, h', m')$ ถึง Bob B ยืนยันว่าไม่เคยใช้ $n$ มาก่อน และ $HMAC(n, m') = h'$ ทั้งสองเช็คผ่าน => ปลอมแปลง คุณเห็นด้วยกับเรื่องนี้หรือไม่? หรือทำเช่น ฝ่ายของคุณมีกลไกนอกวงที่ปลอดภัยซึ่งพวกเขาสื่อสารถึง nonce?
Paul Uszak avatar
cn flag
@Morrolan ใช่ nonce ถูกกำหนดล่วงหน้านอกวงจากชุด $N$ ที่คงที่และไม่เปลี่ยนรูป ดังนั้น $n$ จึงไม่ซ้ำกันเสมอ โดยเรียงลำดับจาก 160 บิตแบบสุ่มอย่างแท้จริง
Morrolan avatar
ng flag
เข้าใจแล้ว! ในกรณีนั้น ดูเหมือนว่าจะค่อนข้างเทียบเท่ากับวิธีการใช้งาน HMAC ตามปกติ นั่นคือการใช้รหัสลับ ยกเว้นว่าในกรณีของคุณ คีย์เป็นแบบชั่วคราว ใช้สำหรับข้อความเดียวเท่านั้น สมมติว่าพื้นที่คีย์ใหญ่เพียงพอ (ซึ่งก็คือ 160 บิต) โดยส่วนตัวแล้วฉันไม่เห็นปัญหากับมัน (อาจเพิ่มเกร็ดเล็กเกร็ดน้อยนั้นในคำถามเพื่อประโยชน์ของผู้เยี่ยมชมในอนาคต เนื่องจากมันไม่ชัดเจนมาก - อย่างน้อยก็ไม่ใช่สำหรับฉัน)
Score:2
ธง in

หากทราบ nonce แล้ว HMAC จะกลายเป็นฟังก์ชันแฮช และฝ่ายตรงข้ามสามารถทำการโจมตีแบบแอ็คทีฟได้โดยเพียงแค่แทนที่แท็กการพิสูจน์ตัวตน $t$ กับ $t' = H_{k=nonce}(ciphertext')$.

หากมีขนาดใหญ่ $N$ เป็นที่รู้จักหรือไม่ไม่สำคัญ ถ้า nonce ยังคงเป็นความลับอยู่ $N$ เป็นเพียงโดเมนที่ใช้เก็บความลับ เช่น ในกรณีนั้น คุณได้อธิบายฟังก์ชันการสร้างรหัสลับไว้ $N$ เป็นที่รู้จักโดยทั่วไป (เช่น it's $2^{256}$ สำหรับ HMAC-SHA-256 อธิบายทั่วไปว่าเป็นฟังก์ชัน $\text{รุ่น}$ ด้วยเอาต์พุต $1^{256}$ หรือ $\{0, 1\}^{256}$).

แน่นอนตราบเท่าที่ค่าแท็ก $t$ ผู้โจมตีไม่สามารถแก้ไขได้ ดังนั้นโครงสร้างจึงปลอดภัย สมมติว่าเป็นเช่นนั้น $t$ มีขนาดใหญ่เพียงพอ สิ่งนี้เทียบเท่ากับการมีค่าแฮชคงที่สำหรับข้อความเฉพาะซึ่งไม่สามารถแก้ไขได้ คล้ายกับการแฮชเหนือไฟล์บนไซต์ดั้งเดิมซึ่งสามารถดาวน์โหลดได้จากมิเรอร์

ระวังว่าฟังก์ชัน MAC อื่นๆ อาจไม่เป็นเช่นนั้น เช่น คุณไม่ต้องการใช้ GMAC กับรหัสที่รู้จัก

โพสต์คำตอบ

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