Score:1

Blake2b ของ Argon2 แตกต่างจาก Blake2b ทั่วไปอย่างไร

ธง in

โพสต์นี้ กล่าวว่า Blake2b ของ Argon2 เป็น ที่ลดลง หนึ่งซึ่งเห็นชอบด้วย ข้อมูลจำเพาะของ Argon2 เนื่องจากระบุว่าใช้ Blake2b เพียง 2 รอบเท่านั้น

แต่ในทางกลับกันเพจ 15 ของข้อมูลจำเพาะของ Argon2 ระบุว่ามันแก้ไข Blake2b เพื่อเพิ่มการคูณ 32 บิตเพื่อเพิ่มเวลาแฝง (ฉันเดาว่าพวกเขาหมายถึงการต้องรอรอบ CPU เพิ่มเติม?)

คำถามของฉันคือ:

  1. ถ้า Argon2 ต้องการทำให้ Blake2b ยากขึ้น ทำไมมันถึงลด 12 รอบเหลือเพียง 2 รอบ?
  2. มีความแตกต่างอื่น ๆ ที่ฉันไม่ได้กล่าวถึงที่นี่หรือไม่?
  3. ความแตกต่างเหล่านี้ส่งผลต่อความปลอดภัยของ Blake2b ของ Argon2 อย่างไรเมื่อเทียบกับ Blake2b มาตรฐานที่พบใน เช่น ลิโซเดียม?

ความคิดของฉัน

ฉันคิดว่าการใช้ฟังก์ชันแฮช (Blake2b) ของ Argon2 เพื่อเติมแผ่นหน่วยความจำไม่ใช่ทางเลือกที่ดีที่สุด เนื่องจากไม่มีการบีบอัดที่เกี่ยวข้องกับการเติมหน่วยความจำ อินพุต 1024 ไบต์กลายเป็นอีกเอาต์พุต 1024 ไบต์ ไม่มีการบีบอัดเกิดขึ้น ดังนั้นรอบที่ก้าวร้าวทั้งหมดของฟังก์ชันการแฮชที่พยายามรักษาเอนโทรปีอินพุตสูงสุดไว้ในขณะที่บีบอัดเป็นไบต์ที่น้อยลงนั้นไม่จำเป็นเลย

ฉันคิดว่านี่คือสาเหตุที่ Argon2 สร้างตัวแปรที่ลดลงของ Blake2b ของตัวเองโดยมีเพียง 2 รอบแทนที่จะเป็น 12: เพราะเห็นได้ชัดว่าไม่จำเป็นต้องมีการแฮช

ด้วยการแก้ไข Blake2b อย่างมีประสิทธิภาพ Argon2 ได้สร้างการเปลี่ยนแปลงของรหัสบล็อกแบบสมมาตร และพวกเขาก็ใช้มันต่อไปเช่นเดียวกัน (อินพุตคงที่กลายเป็นเอาต์พุตคงที่ที่มีขนาดเท่ากัน)

ฉันคิดว่าแนวทางที่ดีกว่าของ Argon2 คือ แทนที่จะประดิษฐ์บล็อกรหัสสมมาตรขึ้นใหม่จากฟังก์ชันแฮช (โดยการแก้ไข Blake2b) คือการตัดการไล่ล่าและใช้รหัสสมมาตรที่มีอยู่เช่น ChaCha20

การใช้รหัสสมมาตรเช่น ChaCha20 จะเร็วพอๆ กับรหัสสมมาตรที่ประดิษฐ์ขึ้นใหม่ของ Argon2 (ลด Blake2b) แม้ว่าจะเป็น ChaCha20 แบบ 20 รอบก็ตาม ChaCha20 ตามการทดสอบของฉันช้ากว่า Argon2 เพียงเล็กน้อยเท่านั้นสำหรับการทำงานเดียวกัน พร้อมประโยชน์อื่นๆ: การใช้ประโยชน์จากไลบรารี่ที่มีอยู่และการวิจัยการเข้ารหัสเพิ่มเติมที่ส่งต่อไปยังรหัสที่มีอยู่แล้ว

Score:1
ธง cn

คุณพูดถูกว่าในกรณีนี้ไม่จำเป็นต้องมีการบีบอัด และ สามารถใช้รหัสบล็อกแบบสมมาตรเพื่อจุดประสงค์นี้ได้ ข้อควรพิจารณาหลายประการอาจมีบทบาทในการเลือก Blake2b

  1. เวอร์ชันย่อจะใช้เพื่อเติมเวกเตอร์ขนาดใหญ่ให้เร็วที่สุด ซึ่งเข้าถึงได้เพื่อทำให้โครงร่างหน่วยความจำแข็ง แนวคิดเบื้องหลังนี้อาจไม่ใช่แค่การเติมเวกเตอร์อย่างรวดเร็วเท่านั้น แต่ยังสามารถตั้งค่าความแข็งของหน่วยความจำโดยไม่ขึ้นกับความแข็งของเวลา ซึ่งหมายความว่าอัลกอริทึมควรเร็ว ดังนั้นจำนวนรอบที่ลดลง

  2. อัลกอริทึมไม่ควรทำงานเร็วกว่ามากบนฮาร์ดแวร์แบบกำหนดเอง เช่น ASIC มากกว่าบนอุปกรณ์ผู้ใช้ทั่วไป ซึ่งหมายความว่า ไม่เพียงแต่ประสิทธิภาพที่แท้จริงเท่านั้นที่มีความสำคัญ แต่ยังรวมถึงความแตกต่างของประสิทธิภาพระหว่างฮาร์ดแวร์ต่างๆ ด้วย Blake2b ได้รับการปรับให้เหมาะกับอุปกรณ์ของผู้ใช้ทั่วไป

  3. อัลกอริทึมไม่ควรเสี่ยงต่อการโจมตีแคชไทม์ ดังนั้น การออกแบบ ARX จึงเป็นที่ต้องการ

ChaCha20 ยังปฏิบัติตามเกณฑ์เหล่านี้ในหลักการ บางที Blake2b อาจทำงานได้ดีกว่าในจุดที่ 2 เท่านั้น มากกว่า ChaCha20 ในรูปแบบย่อ บางทีมันอาจจะมีบทบาทที่ในขณะนั้นฟังก์ชันแฮชได้รับความสนใจมากขึ้นเนื่องจากการแข่งขัน SHA-3 ที่เพิ่งเสร็จสิ้นไป และอัลกอริทึมแฮชใหม่เช่น Blake2b จึงได้รับการศึกษาดีกว่าการเข้ารหัสแบบบล็อกใหม่

ข้อบ่งชี้ว่า Blake2b เหมาะสำหรับแอปพลิเคชันนี้: นอกจาก Argon2 แล้ว ทีมงาน Catena ยังได้พัฒนา Blake2b ในรูปแบบย่อส่วน (ที่แตกต่างกัน) เพื่อจุดประสงค์เดียวกัน

และข้อบ่งชี้ว่าสมมติฐานของคุณเกี่ยวกับรหัสบล็อกก็ถูกต้องเช่นกัน: ในทางตรงกันข้าม โครงร่าง Scrypt ที่พัฒนาขึ้นในปี 2010 ใช้รูปแบบย่อของ Salsa20 ซึ่งเป็นรุ่นก่อนของ ChaCha20

โพสต์คำตอบ

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