Score:2

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

ธง cn

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

คำถามของฉันคือ ค่าที่คาดเดาไม่ได้และค่าสุ่มเหล่านี้แตกต่างจากค่าที่คาดเดาได้ซึ่งมีคำภาษาอังกฤษทั้งคำอย่างไร (เช่น verysecretkey123456)

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

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

kelalaka avatar
in flag
[การโจมตีอาศัยเอนโทรปีที่ไม่ดี](https://security.stackexchange.com/a/239397/86735)
Score:4
ธง tr

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

แท้จริงแล้วความปลอดภัยของโครงการดังกล่าวมาจากความลับของกุญแจ ดังนั้น การคาดเดาได้ง่ายแสดงว่ารูปแบบไม่ปลอดภัย

คำถามของฉันคือ ค่าที่คาดเดาไม่ได้และค่าสุ่มเหล่านี้แตกต่างจากค่าที่คาดเดาได้ซึ่งมีคำภาษาอังกฤษทั้งคำอย่างไร (เช่น verysecretkey123456)

ไม่ยากที่จะตอบคำถามนี้โดยตรง (ฉันจะพูดถึงข้อแม้ในตอนท้าย) เพื่อให้เข้าใจสิ่งนี้ได้ดียิ่งขึ้น ควรพิจารณาอย่างใกล้ชิดถึงข้อกำหนดที่แท้จริงของคีย์ เมื่อเราพูดถึงคีย์ "สุ่ม" เราไม่ได้พูดถึงว่าคีย์นั้น "มีลักษณะ" อย่างไร แต่เรากำลังพูดถึงคุณสมบัติของ กระบวนการ ที่สร้างคีย์นี้ หากการประมวลผลนั้นดี (จะกำหนดในภายหลัง) เช่น การใช้ CSPRNG ก็ไม่สำคัญว่าคีย์จะเป็น ข"เรือดำน้ำสีเหลือง" หรือ b"\x84\x1cR\xc5X\x07\xd0\x07\xd9R'\xd1\xa2\xad\xbef" หรือ ข"ความลับมากkey123456". เหตุผลก็คือในสถานการณ์ที่เหมาะสม ทั้งคู่มีแนวโน้มที่จะสร้างขึ้นจากกระบวนการสร้างคีย์พอๆ กัน อีกอย่าง ผมไม่สามารถบอกได้ว่าแค่ดูที่มูลค่า ข"ความลับมากkey123456" ว่าไม่ใช่คีย์ที่ปลอดภัยหรือไม่; ฉันจะต้องดูว่ามันถูกสร้างขึ้นอย่างไร

ข้อแม้: ตอนนี้เราอาศัยอยู่บนโลกและเราสามารถตั้งสมมติฐานได้... เห็นกุญแจที่ดูเหมือน ข"ความลับมากkey123456"มีเหตุผลที่จะสันนิษฐานว่ากระบวนการไม่ใช่ CSPRNG ที่เหมาะสม แต่อาจมีคนคัดลอกมาจาก Stackoverflow...

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

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

นำเข้าระบบปฏิบัติการ

คีย์ = [os.urandom(16) for _ in range(100)]
Eugene avatar
cn flag
ขอบคุณสำหรับคำตอบ ฉันจะยอมรับทั้งสองคำตอบถ้าทำได้)
Score:1
ธง in

TL; DR เพราะนั่นคือวิธีที่พวกเขาได้รับการออกแบบ คุณสามารถใช้ KDF เพื่อรับคีย์ที่มีการสุ่มส่วนใหญ่อยู่ในเนื้อหาคีย์อินพุต

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

พวกเขาต้องมี 128 บิตเพื่อให้มีความปลอดภัย ~ 128 บิตตามที่ AES สัญญาไว้ โดยหลักการแล้ว คุณสามารถสร้างคีย์สุ่ม 112 บิต จากนั้นใช้บิตที่มีค่าเป็นศูนย์ 16 บิตเพื่อสร้างคีย์ 128 บิต API ส่วนใหญ่ยอมรับเฉพาะไบต์ - เช่น ทวีคูณของ 8 บิต ดังนั้นจะเป็น 14 ไบต์แบบสุ่มและ 2 ไบต์เป็นศูนย์สำหรับคีย์ 16 ไบต์ โดยหลักการแล้ว AES ไม่ต้องการคีย์ที่มีการกระจายอย่างดี.

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

ค่า IV และเมล็ดสำหรับ PRNG จะต้องคาดเดาไม่ได้และสุ่ม

ไม่จำเป็น. ข้อกำหนด IV นั้นแตกต่างกันไปในแต่ละโหมดการทำงาน ตัวอย่างเช่น CBC ต้องการ IV ที่คาดเดาไม่ได้ (ซึ่งโดยทั่วไปแปลว่า สุ่ม IV). CFB ต้องการ nonce ที่มีขนาดเท่ากับขนาดบล็อก โหมด CTR สามารถใช้ nonce ขนาดใดก็ได้ ตราบใดที่บล็อกตัวนับไม่เกิดซ้ำ โหมด GCM มักจะใช้ 12 ไบต์ nonce Nonces - ตัวเลขที่ใช้ครั้งเดียว - สามารถสุ่มได้ แต่อาจเป็นหมายเลขซีเรียลได้เช่นกัน

คำถามของฉันคือ ค่าที่คาดเดาไม่ได้และค่าสุ่มเหล่านี้แตกต่างจากค่าที่คาดเดาได้ซึ่งมีคำภาษาอังกฤษทั้งคำอย่างไร (เช่น verysecretkey123456)

โดยทั่วไปจะสร้างขึ้นโดยเครื่องสร้างตัวเลขสุ่มที่ปลอดภัย (CSPRNG หรือ DRBG) หรือได้มาจากข้อมูลอื่นๆ ตัวอย่างเช่น อาจสร้างโดยใช้ข้อตกลงคีย์ โดยปกติจะตามด้วยคีย์ตามคีย์ที่ได้มาจากฟังก์ชัน (KBKDF)

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

"verysecretkey123456" โดยทั่วไปไม่ถือว่าเป็นคีย์ แต่จะถือว่าเป็นรหัสผ่านหรือวลีรหัสผ่าน ความจริงที่ว่ามันเป็นสตริงมากกว่าไบนารีก็เพียงพอแล้วสำหรับคำใบ้นั้น

ฉันถือว่าจากมุมมองของอัลกอริทึมมันไม่สำคัญ (ตราบใดที่ความยาวของคีย์ถูกต้อง)

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

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

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

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

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

ตามหลักการของ Kerckhoff โดยทั่วไป เราถือว่าผู้โจมตีรู้ว่ามีการสร้างคีย์หรือรหัสผ่านอย่างไร ดังนั้นพวกเขาจึงสามารถเดาการกระจายได้

โพสต์คำตอบ

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