سؤال

خلال السنوات التي صادفتها عبر هذا السيناريو أكثر من مرة. لديك مجموعة من البيانات المتعلقة بالمستخدم التي تريد إرسالها من تطبيق واحد إلى آخر. من المتوقع أن يقوم التطبيق الثاني "بالثقة" هذه "الرمز المميز" واستخدم البيانات داخلها. يتم تضمين الطابع الزمني في الرمز المميز لمنع هجوم سرقة / إعادة استخدامه. لأي سبب (دعونا لا تقلق بشأن ذلك هنا) تم اختيار حل مخصص بدلا من معايير الصناعة مثل SAML.

بالنسبة لي يبدو أن توقيع البيانات رقميا هو ما تريد هنا. إذا كانت البيانات تحتاج إلى سر، فيمكنك أيضا تشفيره.

ولكن ما أرى الكثير هو أن المطورين سيستخدمون تشفير متماثل، مثل AES. إنهم يفترضون أنه بالإضافة إلى جعل البيانات "سر"، يوفر التشفير أيضا 1) تكامل الرسائل و 2) الثقة (مصادقة المصدر).

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

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

المحلول

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

أقل تهديدا - دون أي فحص النزاهة، يمكنني إجراء هجوم من رجل في الوسط، وتبادل كل أنواع البتات حولها، وستحصل عليها ومحاولة فك تشفيرها. كنت تفشل بالطبع، لكن المحاولة قد تكشف. هناك هجمات قناة جانبية من قبل "Bernstein (استغلال مزيج من ذاكرة التخزين المؤقت والخصائص المعمارية الصغرى) و Osvik و Shamir و Tromer (استغلال تصادمات التخزين المؤقت) تعتمد على الحصول على بيانات إحصائية تستند إلى عدد كبير من الاختبارات العشوائية." 1 المقالة السفلية هي من قبل مزيج من ملاحظة أكبر مني، وينصح بتقليل سطح الهجوم باستخدام MAC:

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

نصائح أخرى

نعم. التشفير وحده لا يوفر المصادقة. إذا كنت تريد المصادقة، فعليك استخدام رمز مصادقة الرسائل مثل HMAC أو التواقيع الرقمية (حسب متطلباتك).

هناك عدد كبير جدا من الهجمات الممكنة إذا تم تشفير الرسائل فقط، ولكن غير مصادقة. هنا مجرد مثال بسيط للغاية. افترض أن الرسائل مشفرة باستخدام CBC.. وبعد يستخدم هذا الوضع الرابع لعشوائي النص المشفر بحيث تشفير الرسالة نفسها مرتين لا يؤدي إلى نفس النص المشفر. الآن انظر إلى ما يحدث أثناء فك التشفير إذا قام المهاجم بتعديل الرابع، لكنه يترك ما تبقى من الفم المشوي كما هو. سيتغير فقط الكتلة الأولى من الرسالة التي فك التشفير. علاوة على ذلك، تغيرت هذه البتات بالضبط في التغيير الرابع في الرسالة. وبالتالي يعرف المهاجم بالضبط ما سيغير عندما يقوم جهاز الاستقبال بفك تشفير الرسالة. إذا كانت هذه الكتلة الأولى على سبيل المثال، فإن الطابع الزمني يعلم المهاجم متى تم إرسال الرسالة الأصلية، ثم يمكنه إصلاح الطابع الزمني بسهولة إلى أي وقت آخر، فقط عن طريق التقليب البتات الصحيحة.

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

نهج التشفير المتماثل آمن مثل المفتاح. إذا كان يمكن إعطاء كلا النظامين للمفتاح وعقد المفتاح بشكل آمن، فهذا جيد. تشفير المفتاح العام هو بالتأكيد مناسبة أكثر طبيعية.

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