Score:0

ฉันสามารถใช้ครึ่งหนึ่งของคีย์ 256 บิตเป็น AES 256 IV ได้หรือไม่

ธง cn

หลังจากการค้นคว้าของ Google ฉันพบว่า IV ที่ใช้ในการเข้ารหัส AES 256 บิตต้องเป็นคีย์ 128 บิต

การเข้ารหัส AES256 ของฉันถูกประมวลผลด้วยคีย์ของคีย์สุ่ม 256 บิตและ IV ที่สร้างจากสตริงข้อความ

ฉันกำลังคิดเกี่ยวกับ MD5 เพื่อสร้างคีย์ดังกล่าว แต่ MD5 ดูเหมือนจะล้าสมัย

ดังนั้น จะดีไหมถ้าฉันใช้ SHA256 สร้างคีย์ 256 บิตแทนที่จะแยกสตริงฐานสิบหกของคีย์ออกเป็น 2 ส่วนเท่าๆ กัน และใช้ส่วนแรกเป็น IV ในการเข้ารหัส AES 256 บิต

kelalaka avatar
in flag
ไม่!! IV เปิดเผยต่อสาธารณะและกุญแจเป็นความลับ! คุณให้ความลับของคุณครึ่งหนึ่ง!
Kim Mỹ avatar
cn flag
คุณช่วยอธิบายได้ไหมว่ามอบให้ใคร ฉันหมายความว่าคีย์นั้นสุ่มสมบูรณ์และ IV ทั้ง 256 บิตไม่ได้ถูกเก็บไว้เฉพาะผู้ใช้เท่านั้นที่รู้ แต่ใช้เพียงครึ่งหนึ่งเท่านั้น
kelalaka avatar
in flag
คุณไม่ได้พูดถึงเรื่องนั้น อย่างไรก็ตาม ใช้ $IV = SHA256(key, Random\; Salt)$ เพื่อความปลอดภัย IV ไม่ได้หมายถึงความลับ ...
poncho avatar
my flag
คุณต้องการเข้ารหัสข้อความมากกว่าหนึ่งข้อความด้วยคีย์เดียวกัน (และตามคำแนะนำของคุณ IV เดียวกัน) หรือไม่ ถ้าไม่เช่นนั้น ในโหมด CTR หรือโหมด GCM นั่นถือว่าเสียโดยสิ้นเชิง (แม้ว่าจะมี IV ลับก็ตาม) ด้วยโหมด CBC นั้นไม่ได้เลวร้ายนัก แต่จะรั่วไหลหรือไม่หากข้อความทั้งสองใช้คำนำหน้าร่วมกัน (ซึ่งยังมีข้อมูลมากกว่าที่เราต้องการให้ฝ่ายตรงข้ามมี)
Maarten Bodewes avatar
in flag
ระวัง สิ่งต่าง ๆ เช่น การสร้าง / การสืบทอดคีย์ MD5 และการเข้ารหัสคีย์เลขฐานสิบหกเป็นธงสีแดงขนาดใหญ่ ฉันเห็นสิ่งนี้มากมายใน [ดังนั้น] และ 99% ของกรณีนี้หมายความว่าผู้ใช้ไม่มีเงื่อนงำว่ากำลังทำอะไรอยู่
Score:1
ธง in

ดังนั้น จะดีไหมถ้าฉันใช้ SHA256 สร้างคีย์ 256 บิตแทนที่จะแยกสตริงฐานสิบหกของคีย์ออกเป็น 2 ส่วนเท่าๆ กัน และใช้ส่วนแรกเป็น IV ในการเข้ารหัส AES 256 บิต

ไม่ มีวิธีที่ดีกว่า

ก่อนอื่น เมื่อคุณสร้างคีย์ คุณต้องมีตัวสร้างตัวเลขสุ่มที่ปลอดภัยด้วยการเข้ารหัส ถ้าคุณ ได้รับมา คีย์จากความลับหลัก - บางครั้งเรียกว่าเมล็ด - คุณต้องมีฟังก์ชันการสืบทอดคีย์หรือ KDF ในกรณีหลัง คุณสามารถเช่น ใช้ HKDF กับแฮชที่ดี เช่น SHA-256 โดยหลักการแล้วคุณสามารถสร้างได้เช่น เอาต์พุต 384 บิตโดยใช้ HKDF - แม้ว่าจะใช้ SHA-256 แต่ฉันไม่คิดว่าเป็นความคิดที่ดีเพราะส่วนต่อไปนี้ของคำตอบ


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

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

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

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


สุดท้าย คีย์ไม่ใช่ตัวอักษรผสมตัวเลข ประกอบด้วยบิต ทุกครั้งที่คีย์ถูกแปลเป็นข้อความ คุณกำลังเปิดปัญหาด้านความปลอดภัย อย่าทำเช่นนั้น: เก็บคีย์ไบนารีไว้ฉันควรใช้ AES-128 กับคีย์สุ่มทั้งหมดและใช้อีก 128 บิตสำหรับ IV แทนที่จะเปลี่ยนกลับไปใช้เลขฐานสิบหก

เลขฐานสิบหกมีประโยชน์สำหรับการบริโภคของมนุษย์เท่านั้น เช่น ระหว่างการทดสอบหรือการดีบักเมื่อพูดถึงคีย์ลับ

Score:0
ธง us

ฉันถือว่าคุณไม่ได้เปิดเผย IV นี้ ขึ้นอยู่กับสิ่งที่คุณต้องการและโหมดที่คุณใช้ IV สำหรับ AES ควรเป็น 128 บิตสำหรับโหมดอย่าง OFB, CBC หรือ CFB แต่โดยปกติแล้วจะสั้นกว่าสำหรับโหมดอย่างเช่น CTR หรือรูปแบบที่รับรองความถูกต้อง ซึ่งวิธีทั่วไปในการสร้างบล็อกที่ใช้สร้างสตรีมคือการต่อ IV (ไม่มี) และ เคาน์เตอร์. อาจมีปัญหามากมายในการใช้ส่วนหนึ่งของคีย์เป็น IV:

ครั้งหนึ่งฉันรู้ว่าไม่มีความเสี่ยงด้านความปลอดภัยโดยธรรมชาติที่เกี่ยวข้องกับการเปิดเผย $E_k(k_{0..|k|/2})$ หรือ $E_k(k_{0..|k|/2} \oplus P)$ หรือ $E_k(k_{0..m} || ctr)$ สำหรับข้อความที่ทราบ $พี$ สำหรับ AES แบบเต็ม (โปรดแก้ไขหากฉันผิด) นี่คือฟังก์ชันที่คุณอาจเห็นขึ้นอยู่กับโหมดที่ใช้ การใช้งานจริงอาจไม่ปลอดภัย

  1. ทำให้การเข้ารหัสของคุณเป็นตัวกำหนด ดังนั้นจึงไม่ซ่อนข้อความทั้งหมด สำหรับโหมดต่างๆ เช่น CBC หรือ CFB คุณสามารถตรวจหาคำนำหน้าทั่วไปได้ (คำนำหน้าแบบเต็มบล็อกในข้อความ) สำหรับ CFB วิธีนี้จะช่วยให้คุณอนุมานความสัมพันธ์ระหว่างข้อความธรรมดาที่สอดคล้องกับบล็อกแรกที่แตกต่างกันได้ โดยเฉพาะ $P_{1_i} \oบวก P_{2_i}$ ที่ซึ่งข้อความรหัสแตกต่างกันที่ $i^{th}$ บล็อก. สำหรับโหมดต่างๆ เช่น CTR หรือ OFB อาจสร้างความเสียหายได้หากคุณเคยใช้คีย์ซ้ำ คุณสามารถอนุมานความสัมพันธ์ xor สำหรับข้อความธรรมดาทั้งหมดสำหรับทั้งสองโหมดได้ ปัญหานี้ยังคงอยู่แม้ว่าคุณจะใช้ MD5 สำหรับ IV ดังนั้นจึงไม่เหมาะเป็นอย่างยิ่งสำหรับการใช้ซ้ำ แม้โดยบังเอิญก็ตาม ซึ่งพูดง่ายกว่าทำ

  2. ในบางโปรโตคอลหากผู้โจมตีพบวิธีที่จะได้รับ $E_k(k_{0..|k|/2})$ เช่นหลอกให้เข้ารหัส $0^{|k|}$ ในโหมด CBC แล้วหลอกให้เข้ารหัส $p_i||c_{i}$ ที่ที่เขาได้รับ $c_{i}$ จากการโต้ตอบครั้งก่อนเพื่อเปิดเผย $E_k(0^{|k|})$เขาอาจหลอกให้เปิดเผยกุญแจครึ่งหนึ่งโดยขอให้ถอดรหัส $E_k(0^{|k|})$. นี่ไม่ใช่ความคิดดั้งเดิมของฉัน ดังนั้นฉันขอแนะนำให้คุณดูคำตอบของ fgrieu ที่นี่ดูข้อเสียเปรียบ 2

  3. การใช้คีย์นี้อาจปลอดภัยหากคุณไม่ใช้คีย์ซ้ำหรือในโปรโตคอลอื่นที่คล้ายคลึงกัน สำหรับโหมดอย่างเช่น CBC หรือแม้แต่ ECB ที่มีข้อความเอนโทรปี (สุ่ม) สูงซึ่งไม่ทราบโครงสร้างก็อาจใช้ได้เช่นกันในกรณีที่คุณใช้มากกว่า 1 ครั้ง

SAI Peregrinus avatar
si flag
"ฉันคิดว่าคุณไม่ได้เปิดเผย IV นี้" ข้อสันนิษฐานนั้นไม่ดี การวิเคราะห์ความปลอดภัยของโหมด AES ทั่วไปทั้งหมดถือเป็น IV สาธารณะ ดังนั้นคุณจะต้องคิดค้นโหมดใหม่ด้วย IV ลับ และต้องแน่ใจว่าได้รับการปกป้อง (ไลบรารี่ที่มีอยู่จะไม่พยายามซ่อน IV) นั่นหมายถึงการเพิ่มความต้านทานช่องด้านข้างในการจัดการ IV มันยากกว่าการใช้แฮชหรือ KDF บนคีย์ หรือดีกว่าโหมด SIV
Manish Adhikari avatar
us flag
@SAIPeregrinus ตามคำถามของ OP IV เป็นส่วนหนึ่งของคีย์ ดังนั้นฉันคิดว่านั่นคือสิ่งที่ OP ต้องการ
SAI Peregrinus avatar
si flag
ใช่ แต่ IV เป็นแบบสาธารณะตามคำจำกัดความ ดังนั้นจึงไม่มีไลบรารีซอฟต์แวร์ใดที่พยายามซ่อนมัน ส่วนใหญ่จะใส่ไว้ในเอาต์พุตไซเฟอร์เท็กซ์! ดังนั้นคำถามจึงจบลงที่ "จะเกิดอะไรขึ้นถ้าฉันปล่อยรหัสลับครึ่งหนึ่งให้กับผู้โจมตี"
poncho avatar
my flag
สำหรับโหมด ECB เรามักจะไม่กังวลมากนักเกี่ยวกับ IV... :-)
Kim Mỹ avatar
cn flag
ขอบคุณทุกคน! หาก IV ถูกกำหนดให้เป็นสาธารณะและต่อท้ายเอาต์พุตที่เข้ารหัส หมายความว่าฉันควรสลับ IV เป็นคีย์และคีย์เป็น IV หรือไม่
Kim Mỹ avatar
cn flag
เอาต์พุตที่เข้ารหัสของ base64 สามารถแปลงและแสดง IV ได้หรือไม่
Manish Adhikari avatar
us flag
สลับ IV และคีย์ คุณหมายถึงอะไร ฉันหวังว่าคุณจะไม่แนะนำให้รักษาความลับของรหัสสาธารณะและความลับ IV มันไม่ได้ให้ความปลอดภัยใด ๆ

โพสต์คำตอบ

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