Score:1

ความปลอดภัยของการเติม PKCS7

ธง us

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

PKCS7 กำลังเติมแต่ละไบต์ที่บุด้วยจำนวนไบต์ทั้งหมดที่บุไว้ ทุกครั้ง จะมีการเพิ่มอย่างน้อยหนึ่งไบต์ของช่องว่างภายใน ในกรณีเลวร้ายที่สุดก็คือทั้งบล็อก เมื่อฉันใช้การเข้ารหัสในโหมดสมุดรหัสอิเล็กทรอนิกส์ บล็อกสุดท้ายสามารถเดาได้ง่ายสำหรับการโจมตีข้อความธรรมดาที่รู้จัก (ใน 1 ใน 16 กรณี [ขนาดบล็อก] ทันที) ตัวอย่างการเติมแสดงอยู่ด้านล่าง

53 65 63 72 65 74 20 74 65 78 74 2e --> 53 65 63 72 65 74 20 74 65 78 74 2e 04 04 04 04

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

53 65 63 72 65 74 20 74 65 78 74 2e --> 53 65 63 72 65 74 20 74 65 78 74 2e 5a 2c 12 04

ขอบคุณล่วงหน้า.

kelalaka avatar
in flag
ปลอมแปลงช่องว่างภายใน ใช้โหมดที่ใช้ PRF เช่น CTR และอย่าลืมว่า CBC เป็น IND-CPA ปลอดภัยเหมือนโหมด CTR ดังนั้นจึงไม่มีการโจมตีใดเป็นไปได้ `CPA = การโจมตีข้อความธรรมดาที่เลือก'
Luqus avatar
us flag
ขอบคุณสำหรับการตอบกลับ แต่ถ้าฉันใช้ ECB โดยเฉพาะ ควรจะมีความเสี่ยงด้านความปลอดภัยหรือไม่? ตัวอย่างเช่น ในการใช้งานมาตรฐานใน Java สำหรับ ECB ที่มี AES คุณสามารถ **เท่านั้น** เลือก PKCS5 เป็นอัลกอริทึมการเติมซึ่งมีจุดอ่อนเหมือนกัน ฉันสงสัยว่าเหตุใดจึงมีการดำเนินการตามค่าเริ่มต้นแม้ว่าจะมีความเสี่ยงด้านความปลอดภัย (ไม่ขึ้นกับ ECB เอง)
Paul Uszak avatar
cn flag
คุณได้พิจารณาเพิ่มรูปแบบบางอย่างของ MAC/HMAC แล้วหรือยัง ที่ช่วยเสริมความปลอดภัย
kelalaka avatar
in flag
หากคุณใช้ ECB แสดงว่าคุณมาผิดทางแล้ว ECB มีอยู่สำหรับความเข้ากันได้ย้อนหลังและสำหรับผู้ที่รู้ว่ากำลังทำอะไรอยู่ คุณสามารถใช้ `ECB/nopadding` และใช้ช่องว่างภายในของคุณ ช่องว่างภายในของคุณช่วยคุณได้ก็ต่อเมื่อคุณมีเพียงบล็อกเดียวที่สามารถขจัดความเท่าเทียมกันได้ หากคุณมีมากกว่า 1 บล็อก นั่นไม่ได้ช่วยอะไรเลย
Luqus avatar
us flag
ฉันชัดเจนเกี่ยวกับข้อเสียหลายประการของ ECB ไม่ต้องกังวล แต่ลองนึกภาพสถานการณ์ที่คุณจะถูกบังคับให้ใช้ ECB ไม่ว่าด้วยเหตุผลใดก็ตาม นอกจากนี้ ฉันรู้เกี่ยวกับ `NoPadding` ใน Java แต่คุณไม่จำเป็นต้องใช้ Padding ด้วยตัวเองเมื่อใช้ **เท่านั้น** ช่องว่างภายในที่ใช้งาน `PKCS5` ทำไมถึงไม่มี _standard Implement_ อื่นอีก?
kelalaka avatar
in flag
เพราะไม่มีใครใช้ เมื่อหลายปีก่อน ฉันใช้ช่องว่างภายในดังกล่าวสำหรับโครงการของฉัน ช่องว่างภายในเป็นเพื่อนของคุณที่จะใช้ paddind ดังกล่าว
Score:2
ธง in

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

53 65 63 72 65 74 20 74 65 78 74 2e --> 53 65 63 72 65 74 20 74 65 78 74 2e 5a 2c 12 04

นี้เป็นที่รู้จักกันโดยทั่วไปว่าเป็น ช่องว่างภายใน ISO 10126เข้ากันได้กับ ช่องว่างภายใน ANSI X9.23.

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

ประการที่สอง ciphertext จะได้รับการยอมรับ (เช่น ไม่สร้างข้อผิดพลาดการเติม) 1 ครั้งจาก 256 / 8 = 32 ครั้ง (มีค่าเป็นไบต์สุดท้าย 01 ถึง 08) แทนที่จะเป็นประมาณหนึ่งครั้งใน 256 ครั้ง (ไบต์สุดท้ายมีค่า 01 หรือไบต์สุดท้ายมีค่า 02 02 ฯลฯ). สิ่งนี้ขัดขวางการใช้ช่องว่างภายในเพื่อความสมบูรณ์ของข้อความ / ความถูกต้อง

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

ในที่สุดคุณก็ยังไม่ได้กำจัดค่าใช้จ่ายการเติม


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

Maarten Bodewes avatar
in flag
ความจริงแล้วน่าสนุก ฉันพบว่ากระดาษนั้นในขณะที่ฉันกำลังแสดงว่าการเข้ารหัส XML โดยไม่มีการสร้างลายเซ็น XML นั้น **ไม่ใช่** ความคิดที่ดี และแม้ว่าคุณจะใช้ XML sig คุณต้องให้ความสนใจอย่างระมัดระวัง

โพสต์คำตอบ

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