نظرة عامة
تعتمد بنما على بنية تتكون من حالة داخلية كبيرة (ذاكرة) وعملية تحويل. تتكون الحالة الداخلية من 272 بايت، مقسمة إلى قسمين رئيسيين: جزء “الحالة” وجزء “المخزن المؤقت”. عملية التحويل، المعروفة باسم “الخطوة”، تقوم بتحديث الحالة الداخلية بطريقة معقدة وغير خطية.
بشكل عام، تعمل بنما بطريقتين رئيسيتين:
- وضع دالة التجزئة: في هذا الوضع، يتم استهلاك البيانات المدخلة على شكل كتل، وتؤثر كل كتلة على الحالة الداخلية من خلال سلسلة من العمليات. بعد معالجة جميع المدخلات، يتم استخراج قيمة التجزئة من الحالة الداخلية.
- وضع شيفرة التدفق: في هذا الوضع، يتم استخدام بنما لتوليد دفق من المفاتيح (Keystream) يتم دمجه مع النص العادي (Plaintext) لتشفيره، أو مع النص المشفر (Ciphertext) لفك تشفيره.
تفاصيل التصميم
تتكون بنية بنما من العناصر التالية:
- الحالة الداخلية (Internal State): عبارة عن مصفوفة من 272 بايت، مقسمة إلى:
- 17 بايت تسمى “الجزء النشط” أو “الذاكرة العاملة”.
- 255 بايت تشكل “المخزن المؤقت”.
- الخطوة (Step): هي العملية الأساسية التي تحدث تغييرًا في الحالة الداخلية. تتكون من عدة طبقات من العمليات غير الخطية والخطية.
- الإدخال (Input): في وضع التجزئة، يتم إدخال البيانات على شكل كتل بحجم معين.
- الإخراج (Output): في وضع التجزئة، يتم استخراج قيمة التجزئة من الجزء النشط من الحالة الداخلية. في وضع شيفرة التدفق، يتم توليد دفق المفاتيح من الجزء النشط من الحالة الداخلية.
الخطوة (Step)
تعتبر الخطوة هي جوهر عملية بنما. تتكون من سلسلة من العمليات المصممة لتوفير الخلط والانتشار المطلوبين للأمن. بشكل عام، تتكون الخطوة من العمليات التالية:
- إضافة المخزن المؤقت (Buffer Addition): يتم دمج جزء من المخزن المؤقت مع الجزء النشط من الحالة.
- التحويل غير الخطي (Non-linear Transformation): يتم تطبيق تحويل غير خطي على الجزء النشط من الحالة. هذا التحويل عادة ما يكون عبارة عن S-box، وهو عبارة عن جدول بحث يستبدل قيمًا بقيم أخرى بطريقة غير خطية.
- التحويل الخطي (Linear Transformation): يتم تطبيق تحويل خطي على الجزء النشط من الحالة. يهدف هذا التحويل إلى نشر التغييرات عبر الجزء النشط من الحالة بأكمله.
- تحديث المخزن المؤقت (Buffer Update): يتم تحديث المخزن المؤقت باستخدام الجزء النشط من الحالة.
وضع دالة التجزئة
في وضع دالة التجزئة، تعالج بنما المدخلات على شكل كتل. لكل كتلة، يتم تنفيذ الخطوات التالية:
- الإدخال (Input): يتم دمج الكتلة المدخلة مع الجزء النشط من الحالة الداخلية.
- الخطوة (Step): يتم تنفيذ الخطوة لتحديث الحالة الداخلية.
بعد معالجة جميع كتل الإدخال، يتم استخراج قيمة التجزئة من الجزء النشط من الحالة الداخلية. يمكن أن تكون قيمة التجزئة بأي طول مطلوب.
وضع شيفرة التدفق
في وضع شيفرة التدفق، تستخدم بنما لتوليد دفق من المفاتيح. يتم تنفيذ الخطوات التالية لتوليد دفق المفاتيح:
- التهيئة (Initialization): يتم تهيئة الحالة الداخلية باستخدام مفتاح (Key) وقيمة ابتدائية (Initialization Vector – IV).
- الخطوة (Step): يتم تنفيذ الخطوة لتحديث الحالة الداخلية.
- الإخراج (Output): يتم استخراج جزء من الجزء النشط من الحالة الداخلية كجزء من دفق المفاتيح.
يتم تكرار الخطوتين 2 و 3 لتوليد دفق المفاتيح المطلوب. يتم بعد ذلك دمج دفق المفاتيح مع النص العادي لتشفيره، أو مع النص المشفر لفك تشفيره، باستخدام عملية XOR.
نقاط الضعف والهجمات
على الرغم من أن بنما تبدو واعدة في البداية، إلا أن وضع دالة التجزئة الخاص بها أثبت أنه عرضة للهجوم. تم اكتشاف العديد من نقاط الضعف التي يمكن استغلالها لكسر مقاومة التجزئة لبنما. تتضمن بعض الهجمات الأكثر شيوعًا ما يلي:
- هجمات التصادم (Collision Attacks): تهدف هذه الهجمات إلى العثور على مدخلين مختلفين ينتجان نفس قيمة التجزئة.
- هجمات ما قبل الصورة (Preimage Attacks): تهدف هذه الهجمات إلى العثور على مدخل ينتج قيمة تجزئة معينة.
- هجمات الصورة الثانية (Second Preimage Attacks): تهدف هذه الهجمات إلى العثور على مدخل ثانٍ ينتج نفس قيمة التجزئة لمدخل معين.
أدت نقاط الضعف هذه إلى تقليل استخدام بنما في تطبيقات التجزئة العملية. ومع ذلك، لا يزال وضع شيفرة التدفق الخاص بها يعتبر أكثر أمانًا، على الرغم من أنه لم يتم اعتماده على نطاق واسع.
بدائل لبنما
نظرًا لنقاط الضعف في وضع دالة التجزئة الخاص ببنما، توجد العديد من البدائل الأكثر أمانًا والمستخدمة على نطاق واسع. تتضمن بعض البدائل الشائعة ما يلي:
- SHA-2 (Secure Hash Algorithm 2): عائلة من دوال التجزئة التي تتضمن SHA-224، SHA-256، SHA-384، و SHA-512.
- SHA-3 (Secure Hash Algorithm 3): أحدث معيار لدوال التجزئة، يعتمد على تصميم Keccak.
- BLAKE2: دالة تجزئة سريعة ومأمونة تم تصميمها كبديل لـ MD5 و SHA-1 و SHA-2.
- SipHash: دالة تجزئة سريعة ومصممة لمقاومة هجمات رفض الخدمة (Denial-of-Service attacks).
تطبيقات بنما (المحتملة)
على الرغم من نقاط الضعف في وضع التجزئة، يمكن استخدام بنما في بعض التطبيقات المتخصصة، مع الأخذ في الاعتبار القيود:
- تطبيقات شيفرة التدفق: يمكن استخدام بنما كشيفرة تدفق في التطبيقات التي تتطلب سرعة عالية وأمانًا معقولاً. ومع ذلك، يجب توخي الحذر الشديد عند اختيار المفتاح والقيمة الابتدائية.
- البحث الأكاديمي: تظل بنما دراسة حالة مثيرة للاهتمام في تصميم التشفير، ويمكن استخدامها للبحث والتجريب في خوارزميات التشفير الجديدة.
خاتمة
بنما هي أداة تشفير أولية متعددة الاستخدامات يمكن استخدامها كدالة تجزئة وشيفرة تدفق. على الرغم من أن وضع دالة التجزئة الخاص بها أثبت أنه عرضة للهجوم، إلا أن وضع شيفرة التدفق الخاص بها لا يزال يعتبر أكثر أمانًا نسبيًا. ومع ذلك، توجد بدائل أكثر أمانًا ومستخدمة على نطاق واسع لبنما في معظم التطبيقات العملية. تعتبر بنما بمثابة مثال مهم في تطور التشفير وتسلط الضوء على أهمية التحليل المستمر والتقييم الدقيق للخوارزميات المشفرة.