Cryptology Academy · บทเรียน

การเติมข้อมูล PKCS#1 v1.5 และ Bleichenbacher

อธิบายการโจมตีไซเฟอร์เท็กซ์ที่เลือกแบบปรับตามผลตอบกลับบน PKCS#1 v1.5

บทเรียน 2 จาก 413 ขั้นตอน

การเติมข้อมูล PKCS#1 v1.5 และ Bleichenbacher เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

การเติมข้อมูล PKCS#1 v1.5 เป็นมาตรฐานการเติมข้อมูล RSA หลักมาเป็นเวลา 20 ปี ในปี 1998 แดเนียล ไบลเคนบาเคอร์แสดงให้เห็นว่ามาตรฐานนี้มีช่องโหว่ต่อการโจมตีข้อความเข้ารหัสที่เลือกแบบปรับตัว

โครงสร้าง PKCS#1 v1.5

รูปแบบ: 0x00 0x02 [ไบต์สุ่มที่ไม่เป็นศูนย์] 0x00 [ข้อความ] คำนำหน้า 0x00 0x02 ระบุว่าเป็นการเติมข้อมูลสำหรับการเข้ารหัส (เทียบกับ 0x00 0x01 สำหรับการลงลายเซ็น) ไบต์สุ่มช่วยป้องกันความเป็นกำหนดแน่นอนและต้องไม่เป็นศูนย์

เหตุผลที่ใช้ PKCS#1 v1.5

PKCS#1 v1.5 ออกแบบโดย RSA Security ในปี 1993 ซึ่งเป็นเวลานานก่อนที่จะมีบทพิสูจน์ความปลอดภัย IND-CCA2 มาตรฐานนี้เพิ่มความสุ่มและการตรวจสอบโครงสร้าง และถูกนำไปใช้อย่างแพร่หลายใน SSL/TLS ตั้งแต่ปี 1995 เป็นต้นมา

การโจมตีของไบลเคนบาเคอร์

ไบลเคนบาเคอร์ (1998): หากเซิร์ฟเวอร์เปิดเผยว่าการถอดรหัส RSA ให้การเติมข้อมูล PKCS#1 v1.5 ที่ถูกต้องหรือไม่ ผ่านข้อความแสดงข้อผิดพลาดหรือเวลา ผู้โจมตีสามารถถอดรหัสค่าที่เข้ารหัสด้วย RSA ใด ๆ ได้ด้วยคำขอประมาณ 1 ล้านครั้ง

คำจำกัดความของออราเคิล

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

กลไกของการโจมตี

ผู้โจมตีคูณข้อความเข้ารหัสเป้าหมาย C ด้วย s^e mod n แล้วส่ง C×s^e ที่ถูกแก้ไข หากเซิร์ฟเวอร์ตอบว่าการเติมข้อมูลถูกต้อง แสดงว่าเลือก s ได้ถูกต้อง การทำซ้ำจะจำกัดช่วงของข้อความต้นฉบับที่เป็นไปได้ให้แคบลง จนกู้คืน M ได้

การโจมตี DROWN (2016)

DROWN ใช้การโจมตีของไบลเคนบาเคอร์ผ่าน SSLv2 เซิร์ฟเวอร์ TLS สมัยใหม่ที่ใช้กุญแจร่วมกับเซิร์ฟเวอร์ SSLv2 ใด ๆ จึงมีช่องโหว่ การแลกเปลี่ยนกุญแจ RSA ของ TLS สมัยใหม่ถูกถอดรหัสโดยใช้ SSLv2 เป็นออราเคิล และมีเซิร์ฟเวอร์ HTTPS ได้รับผลกระทบ 33%

การโจมตี ROBOT (2017)

ROBOT (การกลับมาของภัยคุกคามจากออราเคิลของไบลเคนบาเคอร์) ค้นพบออราเคิลด้านเวลาอีกครั้งในชุดการใช้งาน TLS ที่ได้รับความนิยมสูงสุด 7 จาก 10 ชุด รวมถึงของ Cisco, F5 และ Radware การโจมตีของไบลเคนบาเคอร์ยังคงอยู่ เพราะการใช้งานให้ถูกต้องนั้นทำได้ยาก

การถอดรหัส RSA แบบใช้เวลาคงที่

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

เหตุผลที่ OAEP มาแทนที่ v1.5

OAEP มีแฮชทางเดียวแบบประตูกลซึ่งพิสูจน์ความปลอดภัย IND-CCA2 ได้ (ปลอดภัยต่อข้อความเข้ารหัสที่เลือก) แม้จะมีออราเคิลการเติมข้อมูล โครงสร้างแบบสุ่มของ OAEP ก็ทำให้คำขอไปยังออราเคิลไม่มีข้อมูลที่เป็นประโยชน์

ระบบเดิมยังคงใช้ v1.5

แม้จะมี OAEP แล้ว แต่ PKCS#1 v1.5 ยังคงอยู่ในระบบการชำระเงินเดิม แอปพลิเคชัน Java รุ่นเก่า และการใช้งาน PKI บางประเภท TLS 1.3 นำการแลกเปลี่ยนกุญแจ RSA ออกทั้งหมด จึงกำจัดพื้นที่การโจมตีนี้

ตรวจสอบอย่างรวดเร็ว

ออราเคิลการเติมข้อมูลในบริบทของการโจมตีของไบลเคนบาเคอร์คืออะไร

สรุปทบทวน

การโจมตีของไบลเคนบาเคอร์เป็นหมุดหมายสำคัญของการวิเคราะห์รหัสเชิงปฏิบัติ ต่อไปเราจะศึกษา OAEP ซึ่งเป็นการเติมข้อมูลที่มีความปลอดภัยพิสูจน์ได้และมาแทนที่ v1.5
เริ่มต้นได้ฟรี

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

คำถามที่พบบ่อย

บทเรียน “การเติมข้อมูล PKCS#1 v1.5 และ Bleichenbacher” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเติมข้อมูล PKCS#1 v1.5 และ Bleichenbacher” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเติมข้อมูล PKCS#1 v1.5 และ Bleichenbacher”

อธิบายการโจมตีไซเฟอร์เท็กซ์ที่เลือกแบบปรับตามผลตอบกลับบน PKCS#1 v1.5 คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การเติมข้อมูล PKCS#1 v1.5 และ Bleichenbacher” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. RSA ตามตำราและเหตุใดจึงไม่ปลอดภัย
  2. การเติมข้อมูล PKCS#1 v1.5 และ Bleichenbacher
  3. OAEP: การเติมข้อมูลสำหรับการเข้ารหัสแบบอสมมาตรที่เหมาะสมที่สุด
  4. RSA-PSS สำหรับลายมือชื่อดิจิทัล
← กลับไปที่ Cryptology Academy