0Pricing
Cryptology Academy · บทเรียน

OAEP: การเติมข้อมูลสำหรับการเข้ารหัสแบบอสมมาตรที่เหมาะสมที่สุด

ศึกษาการเข้ารหัสแบบ OAEP และวิธีที่ทำให้เกิดความปลอดภัยระดับ IND-CCA2

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

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

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

เป้าหมายของ OAEP

OAEP ออกแบบโดยเบลลาเรและโรกาเวย์ (1994) โดยมีเป้าหมายสองประการ: (1) ป้องกันการโจมตี RSA แบบตำราทั้งหมดด้วยการทำให้เกิดความสุ่ม (2) บรรลุความปลอดภัย IND-CCA2 ด้วยบทพิสูจน์ความปลอดภัยอย่างเป็นทางการในแบบจำลองออราเคิลสุ่ม

อินพุตของ OAEP

M: ข้อความที่จะเข้ารหัส (|M| ≤ |n| - 2*hLen - 2 ไบต์) L: ป้ายกำกับเสริม (โดยปกติเป็นค่าว่าง) MGF: ฟังก์ชันสร้างหน้ากาก (อิงตาม SHA-256) r: ค่าเริ่มต้นสุ่ม (hLen ไบต์)

ขั้นตอนที่ 1 ของการเข้ารหัส OAEP: บล็อกข้อมูล

DB = lHash || PS || 0x01 || M โดยที่: - lHash = Hash(L) (แฮชของป้ายกำกับ) - PS = ไบต์ศูนย์ที่เติมให้เต็มความยาวคงที่ - 0x01 ระบุจุดเริ่มต้นของข้อความ

ขั้นตอนที่ 2 ของการเข้ารหัส OAEP: การทำหน้ากาก

maskedDB = DB XOR MGF(r, len(DB)) maskedSeed = r XOR MGF(maskedDB, hLen) EM = 0x00 || maskedSeed || maskedDB นี่คือข้อความที่เติมข้อมูลแล้วซึ่งจะส่งให้การเข้ารหัส RSA

MGF1: ฟังก์ชันสร้างหน้ากาก

MGF1(Z, L) = Hash(Z || 0x00000000) || Hash(Z || 0x00000001) || ... MGF1 ที่ใช้ SHA-256 จะสร้างเอาต์พุตสุ่มเทียมที่มีความยาวเท่าใดก็ได้จากค่าเริ่มต้น ใช้ใน OAEP และ RSA-PSS

การถอดรหัส OAEP

เมื่อกำหนด EM: 1. แบ่งออกเป็น maskedSeed และ maskedDB 2. r = maskedSeed XOR MGF(maskedDB, hLen) 3. DB = maskedDB XOR MGF(r, len(DB)) 4. ตรวจสอบว่า lHash ตรงกัน ค้นหาตัวคั่น 0x01 และดึง M ออกมา 5. หากเกิดข้อผิดพลาดใด ๆ → การถอดรหัสล้มเหลว (ใช้ข้อผิดพลาดเดียวกันเสมอ)

เหตุผลที่ OAEP เอาชนะการโจมตีด้วยออราเคิลได้

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

ความปลอดภัย IND-CCA2

IND-CCA2 (ความแยกไม่ออกภายใต้การโจมตีข้อความเข้ารหัสที่เลือกครั้งที่ 2): ผู้โจมตีไม่สามารถแยก Enc(M0) ออกจาก Enc(M1) ได้ แม้จะเข้าถึงออราเคิลถอดรหัสสำหรับข้อความเข้ารหัสทั้งหมด ยกเว้นข้อความท้าทาย OAEP บรรลุคุณสมบัตินี้

OAEP เทียบกับ v1.5 ในทางปฏิบัติ

ไลบรารีการเข้ารหัสของไพธอน: ใช้ padding.OAEP() ไม่ใช่ padding.PKCS1v15() ใน Java ให้ใช้ตัวเข้ารหัส 'RSA/ECB/OAEPWithSHA-256AndMGF1Padding' ห้ามใช้ 'RSA/ECB/PKCS1Padding' กับโค้ดใหม่

ขนาดข้อความสูงสุดของ OAEP

สำหรับ RSA-2048 ที่ใช้ SHA-256: ข้อความสูงสุด = 256 - 2×32 - 2 = 190 ไบต์ ส่วนเกินของ OAEP คือ 2×hLen + 2 ไบต์ หากข้อความยาวกว่านี้ ให้ใช้การเข้ารหัสแบบผสม AES: เข้ารหัสกุญแจ AES ด้วย OAEP และเข้ารหัสข้อมูลด้วย AES-GCM

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

คุณสมบัติใดทำให้ OAEP ต้านทานการโจมตีด้วยออราเคิลการเติมข้อมูลได้

สรุปทบทวน

OAEP ให้ความปลอดภัยที่พิสูจน์ได้สำหรับการเข้ารหัส RSA ต่อไปเราจะศึกษา RSA-PSS ซึ่งเป็นการปรับปรุงในลักษณะเดียวกันสำหรับลายเซ็น RSA

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

บทเรียน “OAEP: การเติมข้อมูลสำหรับการเข้ารหัสแบบอสมมาตรที่เหมาะสมที่สุด” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “OAEP: การเติมข้อมูลสำหรับการเข้ารหัสแบบอสมมาตรที่เหมาะสมที่สุด”

ศึกษาการเข้ารหัสแบบ OAEP และวิธีที่ทำให้เกิดความปลอดภัยระดับ IND-CCA2 คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “OAEP: การเติมข้อมูลสำหรับการเข้ารหัสแบบอสมมาตรที่เหมาะสมที่สุด” ใช้เวลานานแค่ไหน

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

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

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

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

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