حشو التشفير غير المتماثل الأمثل

في علم التشفير ، يُعدّ التشفير الأمثل غير المتماثل ( OAEP ) أسلوبًا للتشفير يُستخدم غالبًا مع تشفير RSA . وقد طُوّر OAEP بواسطة بيلار وروغواي [1]، ثمّ تمّ توحيده لاحقًا في PKCS #1 v2 وRFC 2437.

خوارزمية OAEP هي شكل من أشكال شبكة فيستل التي تستخدم زوجًا من أوراكل عشوائية G و H لمعالجة النص الأصلي قبل التشفير غير المتماثل . عند دمجها مع أي تبديل أحادي الاتجاه آمن ذي باب خلفيو{\displaystyle f}أثبتت هذه المعالجة في نموذج أوراكل العشوائي أنها تُنتج مخططًا مُدمجًا يتمتع بأمان دلالي ضد هجوم النص الصريح المُختار (IND-CPA) . وعند تطبيقها باستخدام تباديل أبواب خلفية مُعينة (مثل RSA)، ثبت أيضًا أن OAEP آمن ضد هجوم النص المُشفّر المُختار. ويمكن استخدام OAEP لبناء تحويل الكل أو لا شيء .

يحقق برنامج OAEP الهدفين التاليين:

  1. أضف عنصرًا من العشوائية يمكن استخدامه لتحويل مخطط تشفير حتمي (مثل RSA التقليدي ) إلى مخطط احتمالي .
  2. منع فك التشفير الجزئي للنصوص المشفرة (أو أي تسريب آخر للمعلومات) من خلال ضمان عدم قدرة الخصم على استعادة أي جزء من النص الأصلي دون أن يكون قادراً على عكس التبديل أحادي الاتجاه للباب الخلفي.و{\displaystyle f}.

أظهرت النسخة الأصلية من OAEP (بيلار/روغواي، 1994) شكلاً من أشكال " الوعي بالنص الصريح " (والذي زعموا أنه يعني الحماية من هجوم النص المشفر المُختار ) في نموذج أوراكل العشوائي عند استخدام OAEP مع أي تبديل ذي باب خلفي. لكن النتائج اللاحقة تناقضت مع هذا الادعاء، مُظهرةً أن OAEP كان آمنًا فقط وفقًا لمعيار IND-CCA1 . مع ذلك، ثبت أن المخطط الأصلي في نموذج أوراكل العشوائي آمن وفقًا لمعيار IND-CCA2 عند استخدام OAEP مع تبديل RSA باستخدام أسس التشفير القياسية، كما هو الحال في RSA-OAEP. [ 2 ] وقدّم فيكتور شوب مخططًا مُحسّنًا (يُسمى OAEP+) يعمل مع أي تبديل أحادي الاتجاه ذي باب خلفي لحل هذه المشكلة. [ 3 ] أظهرت دراسات حديثة أنه في النموذج القياسي (أي عندما لا يتم نمذجة دوال التجزئة كأوراكل عشوائي) يستحيل إثبات أمان IND-CCA2 لخوارزمية RSA-OAEP في ظل الصعوبة المفترضة لمسألة RSA . [ 4 ] [ 5 ]

الخوارزمية

مخطط ترميز OAEP وفقًا لـ RFC 8017

في الرسم التوضيحي،

  • MGF هي دالة توليد القناع ، وعادةً ما تكون MGF1.
  • Hash هي دالة التجزئة المختارة ،
  • يمثل hLen طول ناتج دالة التجزئة بالبايتات.
  • يمثل k طول معامل RSA n بالبايت،
  • M هي الرسالة المراد إضافة الحشو إليها، بطول mLen (على الأكثر)ملهـن=ك-2حلهـن-2{\displaystyle \mathrm {mLen} =k-2\cdot \mathrm {hLen} -2}بايت)،
  • L عبارة عن تسمية اختيارية يتم ربطها بالرسالة (التسمية عبارة عن سلسلة فارغة افتراضيًا ويمكن استخدامها للتحقق من صحة البيانات دون الحاجة إلى التشفير).
  • PS عبارة عن سلسلة بايت منك-ملهـن-2حلهـن-2{\displaystyle k-\mathrm {mLen} -2\cdot \mathrm {hLen} -2}بايتات فارغة.
  • ⊕ هي عملية XOR .

التشفير

تحدد RFC 8017 [ 6 ] لـ PKCS#1 v2.2 مخطط OAEP على النحو التالي للترميز:

  1. قم بتجزئة التسمية L باستخدام دالة التجزئة المختارة:لحأsح=حأsح(ل){\displaystyle \mathrm {lHash} =\mathrm {Hash} (L)}
  2. قم بإنشاء سلسلة حشو PS تتكون منك-ملهـن-2حلهـن-2{\displaystyle k-\mathrm {mLen} -2\cdot \mathrm {hLen} -2}البايتات (0x00 و 0x01).
  3. قم بدمج lHash و PS والبايت المفرد 0x01 والرسالة M لتشكيل كتلة بيانات DB :دب=لحأsح||PS||0x01||م{\displaystyle \mathrm {DB} =\mathrm {lHash} ||\mathrm {PS} ||\mathrm {0x01} ||\mathrm {M} }يبلغ طول كتلة البيانات هذهك-حلهـن-1{\displaystyle k-\mathrm {hLen} -1}بايت.
  4. قم بإنشاء بذرة عشوائية بطول hLen .
  5. استخدم دالة توليد القناع لإنشاء قناع بالطول المناسب لكتلة البيانات:دبمأsك=مجيF(sهـهـد،ك-حلهـن-1){\displaystyle \mathrm {dbMask} =\mathrm {MGF} (\mathrm {seed} ,k-\mathrm {hLen} -1)}
  6. قم بإخفاء كتلة البيانات باستخدام القناع المُنشأ:مأsكهـددب=دبدبمأsك{\displaystyle \mathrm {maskedDB} =\mathrm {DB} \oplus \mathrm {dbMask} }
  7. استخدم دالة توليد القناع لإنشاء قناع بطول hLen للبذرة:sهـهـدمأsك=مجيF(مأsكهـددب،حلهـن){\displaystyle \mathrm {seedMask} =\mathrm {MGF} (\mathrm {maskedDB} ,\mathrm {hLen} )}
  8. قم بإخفاء البذرة باستخدام القناع المُنشأ:مأsكهـدSهـهـد=sهـهـدsهـهـدمأsك{\displaystyle \mathrm {maskedSeed} =\mathrm {seed} \oplus \mathrm {seedMask} }
  9. الرسالة المشفرة (المحشوة) هي البايت 0x00 المدمج مع maskedSeed و maskedDB :هـم=0x٠٠||مأsكهـدSهـهـد||مأsكهـددب{\displaystyle \mathrm {EM} =\mathrm {0x00} ||\mathrm {maskedSeed} ||\mathrm {maskedDB} }

فك التشفير

تتم عملية فك التشفير عن طريق عكس الخطوات المتخذة في خوارزمية التشفير:

  1. قم بتجزئة التسمية L باستخدام دالة التجزئة المختارة:لحأsح=حأsح(ل){\displaystyle \mathrm {lHash} =\mathrm {Hash} (L)}
  2. لعكس الخطوة 9، قم بتقسيم الرسالة المشفرة EM إلى البايت 0x00، والبذرة المقنعة (بطول hLen )، وقاعدة البيانات المقنعة : هـم=0x٠٠||مأsكهـدSهـهـد||مأsكهـددب{\displaystyle \mathrm {EM} =\mathrm {0x00} ||\mathrm {maskedSeed} ||\mathrm {maskedDB} }
  3. قم بإنشاء قناع البذور الذي تم استخدامه لإخفاء البذور :sهـهـدمأsك=مجيF(مأsكهـددب،حلهـن){\displaystyle \mathrm {seedMask} =\mathrm {MGF} (\mathrm {maskedDB} ,\mathrm {hLen} )}
  4. لعكس الخطوة 8، استعد البذرة باستخدام seedMask :sهـهـد=مأsكهـدSهـهـدsهـهـدمأsك{\displaystyle \mathrm {seed} =\mathrm {maskedSeed} \oplus \mathrm {seedMask} }
  5. قم بإنشاء dbMask الذي تم استخدامه لإخفاء كتلة البيانات:دبمأsك=مجيF(sهـهـد،ك-حلهـن-1){\displaystyle \mathrm {dbMask} =\mathrm {MGF} (\mathrm {seed} ,k-\mathrm {hLen} -1)}
  6. لعكس الخطوة 6، استعد كتلة البيانات DB:دب=مأsكهـددبدبمأsك{\displaystyle \mathrm {DB} =\mathrm {maskedDB} \oplus \mathrm {dbMask} }
  7. لعكس الخطوة 3، قم بتقسيم كتلة البيانات إلى أجزائها:دب=لحأsح||PS||0x01||م{\displaystyle \mathrm {DB} =\mathrm {lHash'} ||\mathrm {PS} ||\mathrm {0x01} ||\mathrm {M} }.
    1. تحقق من التالي:
      • lHash' يساوي lHash المحسوب
      • يتكون PS فقط من البايتات 0x00
      • يتم فصل PS و M بواسطة البايت 0x01 و
      • البايت الأول من EM هو البايت 0x00.
    2. إذا لم يتم استيفاء أي من هذه الشروط، فإن الحشو يكون غير صالح.

الاستخدام في RSA: يمكن تشفير الرسالة المشفرة باستخدام RSA. يتم الآن تجنب خاصية الحتمية في RSA باستخدام ترميز OAEP لأن البذرة يتم توليدها عشوائيًا وتؤثر على الرسالة المشفرة بأكملها.

حماية

تكمن ميزة الأمان " الكل أو لا شيء " في أنه لاستعادة M ، يجب استعادة قاعدة البيانات المقنّعة بالكامل ووحدة البذرة المقنّعة بالكامل ؛ إذ تُستلزم قاعدة البيانات المقنّعة لاستعادة البذرة من وحدة البذرة المقنّعة ، وتُستلزم البذرة لاستعادة كتلة البيانات DB من قاعدة البيانات المقنّعة . وبما أن أي تغيير في بتّ التشفير يُغيّر النتيجة تمامًا، فيجب استعادة قاعدة البيانات المقنّعة بالكامل ووحدة البذرة المقنّعة بالكامل.

تطبيق

في معيار PKCS#1، تكون مصادر البيانات العشوائية متطابقة. ويشترط معيار PKCS#1 كذلك أن تكون مصادر البيانات العشوائية من نوع MGF1 مع دالة تجزئة مناسبة. [ 7 ]

انظر أيضاً

مراجع

  1. م. بيلار ، ب. روغاواي . التشفير غير المتماثل الأمثل - كيفية التشفير باستخدام RSA . ملخص موسع في كتاب "التطورات في علم التشفير - وقائع مؤتمر يورو كريبت 94"، سلسلة محاضرات في علوم الحاسوب ، المجلد 950، تحرير أ. دي سانتيس، دار نشر سبرينغر ، 1995. النسخة الكاملة (pdf)
  2. إييتشيرو فوجيساكي، تاتسواكي أوكاموتو، ديفيد بوينتشيفال، وجاك ستيرن . RSA - OAEP آمن بموجب افتراض RSA . في: ج. كيليان (محرر)، التقدم في علم التشفير - CRYPTO 2001، المجلد 2139 من سلسلة محاضرات في علوم الحاسوب، سبرينغر فيرلاغ، 2001. النسخة الكاملة (pdf)
  3. فيكتور شوب. إعادة النظر في OAEP . مختبر أبحاث IBM زيورخ، ساومر شتراسه 4، 8803 روشليكون، سويسرا. 18 سبتمبر 2001. النسخة الكاملة (pdf)
  4. P. Paillier and J. Villar, Trading One-Wayness against Chosen-Ciphertext Security in Factoring-Based Encryption , Advances in Cryptology – Asiacrypt 2006.
  5. د. براون، ما هي التجزئات التي تجعل RSA-OAEP آمنًا؟، IACR ePrint 2006/233.
  6. "عملية التشفير" . PKCS #1: مواصفات تشفير RSA، الإصدار 2.2 . IETF . نوفمبر 2016. ص  22.  القسم  7.1.1. doi : 10.17487/RFC8017 . RFC 8017. تاريخ الاسترجاع: 4 يونيو 2022 .
  7. براون، دانيال آر إل (2006). "ما هي التجزئات التي تجعل RSA-OAEP آمنًا؟" (ملف PDF) . أرشيف IACR للمطبوعات الإلكترونية في علم التشفير . تم الاطلاع عليه بتاريخ 3 أبريل 2019 .