Cryptology Academy · บทเรียน

RSA ตามตำราและเหตุใดจึงไม่ปลอดภัย

สาธิตความยืดหยุ่นในการแก้ไข การโจมตีเลขชี้กำลังขนาดเล็ก และช่องโหว่ของ e=3

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

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

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

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

การโจมตีด้วยความเป็นกำหนดแน่นอน

RSA แบบตำรามีผลลัพธ์แบบกำหนดแน่นอน: Enc(M) จะให้ผลเป็น C เดิมเสมอ ผู้โจมตีสามารถเข้ารหัสข้อความที่คาดเดาไว้แล้วเปรียบเทียบกับข้อความเข้ารหัสเป้าหมายได้ วิธีนี้ทำลายการรักษาความลับของพื้นที่ข้อความขนาดเล็ก

ความดัดแปลงได้

RSA ดัดแปลงได้ในเชิงการคูณ: Enc(M1) × Enc(M2) = Enc(M1×M2) mod n ผู้โจมตีสามารถคูณข้อความเข้ารหัสด้วย Enc(2) = 2^e เพื่อบังคับให้ข้อความต้นฉบับมีค่าเพิ่มเป็นสองเท่าได้ โดยไม่ต้องรู้กุญแจ

การโจมตีข้อความขนาดเล็ก (e=3)

หาก e=3 และ M < n^(1/3): C = M^3 mod n = M^3 (ไม่มีการลดแบบโมดูลาร์) การหารากที่สามของ C จะได้ M โดยตรง ควรใช้ RSA ที่มีการเติมข้อมูลเสมอ และตรวจสอบให้แน่ใจว่า M มีขนาดใหญ่เพียงพอ

การโจมตีของคอปเปอร์สมิธ

คอปเปอร์สมิธแสดงให้เห็นว่า หาก e=3 และผู้โจมตีทราบส่วนใหญ่ของ M เช่น M = YYYY-MM-DD...[ส่วนที่ไม่ทราบ] การแยกตัวประกอบพหุนามสามารถกู้คืนบิตที่ไม่ทราบได้ ข้อความต้นฉบับที่เติมข้อมูลไว้สั้นเกินไปจึงมีช่องโหว่

การโจมตีแบบแพร่กระจายของฮาสตัด

หากส่ง M เดิมไปยังผู้รับ 3 ราย โดยแต่ละรายใช้ e=3: ด้วย CRT ค่า C1,C2,C3 จะกำหนดค่า M^3 mod (n1×n2×n3) ได้ การหารากที่สามโดยตรงจึงให้ค่า M ห้ามเข้ารหัสข้อความต้นฉบับเดียวกันด้วย e=3 ให้ผู้รับหลายราย

การโจมตีข้อความที่เกี่ยวข้องแบบแฟรงคลิน–ไรเตอร์

หากข้อความสองข้อความ M1 และ M2 มีความสัมพันธ์เชิงเส้น (M2 = aM1+b) และทั้งคู่ถูกเข้ารหัสด้วยกุญแจเดียวกัน ก็สามารถใช้ความสัมพันธ์นี้กู้คืน M1 และ M2 ได้ การเติมไบต์สุ่มจะป้องกันการโจมตีนี้

การโจมตีโมดูลัสร่วม

หากเซิร์ฟเวอร์สองเครื่องใช้ n ร่วมกัน แต่ใช้ e1,e2 ต่างกัน โดย GCD(e1,e2)=1 และทั้งคู่เข้ารหัส M เดียวกัน จะสามารถกู้คืน M ได้ด้วยขั้นตอนวิธียูคลิดแบบขยาย ห้ามใช้โมดูลัสร่วมกันระหว่างหน่วยงานต่าง ๆ

การโจมตี RSA ด้วยเวลา

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

การป้องกัน RSA ด้วยข้อมูลบอด

ก่อนถอดรหัส: C' = C × r^e mod n (คูณด้วยปัจจัยบอด r^e แบบสุ่ม) คำนวณ M' = C'^d mod n จากนั้น M = M' × r^(-1) mod n เวลาที่ใช้จึงขึ้นอยู่กับ r ไม่ใช่ M ทำให้ผู้โจมตีเห็นเพียงการวัดที่มีสัญญาณรบกวน

วิธีแก้พื้นฐาน: การเติมข้อมูลแบบสุ่ม

การโจมตี RSA แบบตำราทั้งหมดมีวิธีแก้ร่วมกันคือการเติมข้อมูลแบบสุ่ม PKCS#1 v1.5 เพิ่มความสุ่ม ส่วน OAEP เพิ่มความปลอดภัยที่พิสูจน์ได้ เมื่อใช้การเติมข้อมูลอย่างถูกต้อง การโจมตีข้างต้นจะใช้ไม่ได้เลย

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

คุณสมบัติใดของ RSA แบบตำราที่ทำให้ผู้โจมตีทดสอบได้ว่าข้อความเข้ารหัสมีข้อความที่ระบุอยู่หรือไม่

สรุปทบทวน

RSA แบบตำราไม่ปลอดภัยอย่างยิ่ง ต่อไปเราจะศึกษาการเติมข้อมูล PKCS#1 v1.5 ทั้งการออกแบบ การใช้งาน และการโจมตีของไบลเคนบาเคอร์ที่ทำให้รูปแบบนี้ถูกทำลาย
เริ่มต้นได้ฟรี

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

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

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

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

บทเรียน “RSA ตามตำราและเหตุใดจึงไม่ปลอดภัย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “RSA ตามตำราและเหตุใดจึงไม่ปลอดภัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “RSA ตามตำราและเหตุใดจึงไม่ปลอดภัย”

สาธิตความยืดหยุ่นในการแก้ไข การโจมตีเลขชี้กำลังขนาดเล็ก และช่องโหว่ของ e=3 คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “RSA ตามตำราและเหตุใดจึงไม่ปลอดภัย” ใช้เวลานานแค่ไหน

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

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

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

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

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