سؤال

لقد استخدمت مجالًا عامًا لطيفًا تنفيذ C++ DES من قبل، لكني الآن بحاجة إلى بعض التشفير البسيط والأساسي والسريع لنظام مضمن.

ليس من الضروري أن يكون غير قابل للاختراق، ولكن يجب أن يحبط المتسلل العادي (على سبيل المثال، لا شيء يمكن استخدامه للحصول على المال أو سرقة الهوية، ولكن المعلومات الشخصية الأخرى المنقولة على بطاقات الذاكرة التي يمكن أن تضيع أو تقع في الأيدي الخطأ ).

نظرًا للذاكرة المحدودة في هذا المعالج، أفضل شيئًا يمكن تشفيره في أجزاء منفصلة (512 بايت أو أقل).

المشروع ليس مفتوح المصدر، ولن يستخدم المكتبات، التي أعرف أنها تقيد الخيارات بشكل أكبر - النطاق العام هو الأفضل، ولكن ربما يكون BSD/Apache/etc مقبولاً...

أنا متردد في التدحرج بنفسي (كما ينبغي أن يكون الجميع).

-آدم

هل كانت مفيدة؟

المحلول

إذا كنت تبحث فقط عن التشويش، فإن XOR مع ثابت سري يعد تطبيقًا صغيرًا كما ستجده.سيكون من السهل أيضًا كسرها، نظرًا لأنها عرضة لتحليل التردد للبحث عن الحروف الإنجليزية الأكثر شيوعًا.

إذا كنت بحاجة إلى خوارزمية أقوى، فإنني أوصي بالنظر إلى السمكة المنتفخة التي تميل إلى أن تكون صغيرة وسريعة.لا يزال يتطلب ذاكرة للجداول، ولكن نأمل أن يعمل مع تطبيقك.

لقد وضع بروس شناير خوارزمية السمكة المنتفخة بشكل صريح ضمن الملكية العامة، متخليًا عن براءات الاختراع.يمكنك الحصول على تطبيقه في لغة C (والتطبيقات الأخرى أيضًا) من موقعه.هذا المصدر لا يحمل إشعار حقوق النشر.أظن أن كود المصدر موجود أيضًا في المجال العام، ولكن قد يكون من الضروري إجراء المزيد من التدقيق.

نصائح أخرى

RC4 بسيط وسريع.

نفس الشخص الذي أصدر تطبيق C++ DES أصدر أيضًا ملف خوارزمية التشفير ريجنديل C - كان ينبغي لي أن أتجول في موقعه على الإنترنت أكثر من ذلك، The خوارزمية التشفير الصغيرة (ورقة أكاديمية هنا) له أيضًا أثر تنفيذ صغير جدًا لـ C.

السمكة المنتفخة يبدو جيدًا، ومن المحتمل أن يكون الأفضل بين هؤلاء الثلاثة من حيث الأمان.

سأبدأ بـ TEA (رمز صغير وبصمة ذاكرة) ولكن سأقوم بتغليفه حتى أتمكن من الانتقال إلى خوارزمية أخرى لاحقًا إذا لزم الأمر.إنه يعاني من نقاط ضعف ملحوظة في تطبيقاته السابقة، ولكن بالنسبة لهذا المشروع قد يكون مبالغًا فيه.

-آدم

يمكنك استخدام أ مولد أرقام عشوائية زائفة (PRNG) لإنشاء تسلسل متكرر من الكلمات، ثم تقوم بعد ذلك باستخدام XOR مع الكلمة المقابلة في دفق البيانات الخاص بك.(يحتاج المرسل والمستقبل إلى معرفة المعلمات المستخدمة لإنشاء التسلسل العشوائي الزائف مسبقًا.)

هذا النهج ليس غير قابل للكسر، ولكنه خطوة للأمام من استخدام ثابت لـ XOR-ing - وPRNGs سهلة التنفيذ للغاية، وتتكون عادةً من عملية ضرب وmodulo واحدة لكل كلمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top