Score:1

การใช้เมล็ดสุ่มแบบ 128 บิตเพื่อรับคีย์ 256 บิตสำหรับการสร้างคู่คีย์นั้นปลอดภัยเพียงใด

ธง cl

เรากำลังพัฒนาแอปเพียร์ทูเพียร์แบบโอเพ่นซอร์ส มาเพออกแบบมาสำหรับผู้ใช้ที่มีประสบการณ์ด้านเทคนิคต่ำ (และไม่มีอีเมลหรือโทรศัพท์) เพื่อรวบรวมข้อมูลในสภาพแวดล้อมออฟไลน์ เรากำลังสร้างข้อมูลประจำตัวบนอุปกรณ์สำหรับแต่ละโครงการในฐานะคู่คีย์สาธารณะและส่วนตัวโดยใช้ libsodium crypto_sign_keypair.

เพื่อรองรับการกู้คืนข้อมูลประจำตัวในกรณีที่อุปกรณ์สูญหายหรือเปลี่ยนไปใช้อุปกรณ์ใหม่ เราต้องการใช้คีย์หลักเดียวที่ใช้เป็น seed สำหรับคู่คีย์อื่นๆ ทั้งหมด ผู้ใช้จะจดรหัสนี้และป้อนด้วยตนเองเพื่อกู้คืนข้อมูลประจำตัว (คล้ายกับวิธีที่ Bitcoin ใช้รายการคำศัพท์ BEP-39 เพื่อสำรองข้อมูลรหัส 256 บิต)

ตามหลักการแล้ว เราจะใช้เมล็ดพันธุ์ 256 บิต ซึ่งเป็นสิ่งที่รองรับโดย libsodium's crypto_sign_seed_keypair และให้เอนโทรปีมากมาย อย่างไรก็ตาม มีข้อจำกัดในการออกแบบ:

  1. รายการคำศัพท์ BEP-39 เป็นโซลูชันที่ดีในการอำนวยความสะดวกในการจดคีย์ และอาจจัดการได้หากจด 24 คำสำหรับคีย์ 256 บิต อย่างไรก็ตาม รองรับเพียง 10 ภาษาเท่านั้น และเรารองรับหลายภาษาที่ไม่มีคำศัพท์อยู่แล้ว รายการ (เช่น ไทย เขมร เวียดนาม)
  2. ผู้ใช้ของเราส่วนใหญ่ไม่สามารถเข้าถึงเครื่องพิมพ์และใช้งานอุปกรณ์พกพา ดังนั้นพวกเขาจึงไม่ใช่วิธีที่ง่ายสำหรับพวกเขาในการพิมพ์ข้อมูลสำรองหลักเป็นรหัส QR เป็นต้น
  3. การเข้ารหัสที่ดีที่สุดที่เราพบคือเลขฐาน 32 เนื่องจากจะหลีกเลี่ยงอักขระที่ไม่ชัดเจน อย่างไรก็ตาม คีย์ 256 บิตที่มี CRC 32 บิตจะต้องมีอักขระ 57 ตัวในเลขฐาน 32 ในแบบจำลองการออกแบบของเรา นี่เป็นสตริงแบบสุ่มจำนวนมาก (แม้จะแสดงเป็นกลุ่มอักขระ 5 ตัว) และเรากังวลว่าจะทำให้เกิดข้อผิดพลาดในการถอดความ
  4. เนื่องจากผู้ใช้จำนวนมากใช้ตัวอักษรที่ไม่ใช่ภาษาละติน เราอาจจำเป็นต้องแสดงรหัสเป็นตัวเลข (เช่นเลขอารบิค) เนื่องจากเป็นที่เข้าใจกันอย่างแพร่หลายมากขึ้น อย่างไรก็ตาม ตัวเลข 256 บิตคือ 77 หลัก ซึ่งยากที่จะจดหรือป้อนโดยไม่มีข้อผิดพลาด

เพื่อหลีกเลี่ยงข้อจำกัดเหล่านี้ คำถามของฉันคือว่า seed / master key แบบ 128 บิตจะให้เอนโทรปีเพียงพอสำหรับการรักษาความปลอดภัย "ดีพอ" หรือไม่ จดได้ง่ายขึ้น (30 อักขระฐาน 32 พร้อมตัวเลข CRC-16 หรือ 44)

ฉันเสนอให้ได้รับเมล็ด 256 บิต (สำหรับการสร้างคู่คีย์และรับคีย์ย่อย) โดยการแฮชเมล็ด 128 บิตด้วย Argon2 (ดู ลิโซเดียม ไพวอช).

ฉันรู้ว่าสิ่งนี้ทำให้เรามีเอนโทรปีเพียง 128 บิต แต่เนื่องจากมันถูกแฮชเป็น 256 บิตด้วย Argon2 จึงมีค่าใช้จ่ายสูงสำหรับการบังคับเดรัจฉาน

ฉันไม่ใช่ผู้เชี่ยวชาญด้านความปลอดภัย (ตอนนี้คุณอาจรวบรวมไว้แล้ว!) แต่คำถามของฉันคือว่าแนวคิดเกี่ยวกับคีย์หลัก / เมล็ดพันธุ์ 128 บิตนี้มีค่าเอนโทรปีเพียงพอที่จะทำให้การโจมตีแบบดุร้ายยาก / เป็นไปไม่ได้หรือไม่ เราไม่ได้มองหาการเข้ารหัสระดับ NSA แต่ก็เพียงพอแล้วที่จะป้องกันไม่ให้ผู้โจมตีที่ตั้งใจ (อาจได้รับการสนับสนุนจากรัฐ) ไม่ให้สามารถใช้กำลังดุร้ายได้

เป็นการประนีประนอมระหว่างความสามารถในการใช้งานและความปลอดภัย เราต้องการให้แอปใช้งานได้ง่ายและปลอดภัย และรักษาความปลอดภัยให้เพียงพอ และฉันไม่แน่ใจว่าจุดไหนที่สมดุลในแง่ของความยาวคีย์/เอนโทรปี

gnasher729 avatar
kz flag
144 บิตจะไม่แย่ไปกว่านี้สำหรับ UI และยากต่อการถอดรหัส 65,000 เท่า
knaccc avatar
es flag
การใช้เอนโทรปีมากกว่า 128 บิตเมื่อสร้างคีย์ส่วนตัว EC ไม่ได้ช่วยอะไร เนื่องจากเส้นโค้ง EC 256 บิตมีระดับความปลอดภัยเพียง 128 บิตเท่านั้นดู https://crypto.stackexchange.com/questions/39991/can-i-use-128-bits-of-entropy-and-a-kdf-to-make-a-256-bit-ecc-key
cl flag
ขอบคุณ @knaccc ที่เป็นลิงค์ที่เป็นประโยชน์และข้อมูลที่เป็นประโยชน์มาก

โพสต์คำตอบ

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