الأمن والتشفير:التحدي الغبي - بروتوكول الاستجابة؟

StackOverflow https://stackoverflow.com/questions/188043

سؤال

طيب يا شباب مجرد لعبة صغيرة:

لدي بعض المواصفات للمشروع.في مرحلة ما يطلبون ما يلي لتشفير كلمة المرور عبر الشبكة، قائلين إنه بروتوكول استجابة للتحدي:

CLIENT ----------------------------- SERVER

(1)ask for challenge -------------->

(2)    <---------------------------- send SHA1 taken from the time
                                       (this is the challenge)
(3) make SHA1 xor PASSWORD --------> if it's equal to SHA1 xor stored password

(4)    <---------------------------- Grant access

بالنسبة لأولئك الذين لا يعرفون ذلك، فإن SHA تعني خوارزمية التجزئة الآمنة، وهي خوارزمية قياسية للتشفير.

آمل أن يكون واضحا.السؤال هو:إذا قمت باستطلاع الحزمتين 2 و 3 ("التحدي" و"كلمة مرور التحدي xor"، فأنا أملك كلمة المرور الفعلية فقط مع وجود xor آخر بينهما!؟!؟هل هناك طريقة أخرى لتنفيذ هذا النوع من البروتوكول؟؟

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

المحلول

ماذا عن ما يلي:

  1. يرسل الخادم تحديًا عشوائيًا
  2. يرسل العميل المجموع الاختباري SHA1 لـ (التحدي + كلمة المرور)
  3. تتم مقارنة الخوادم بالمجموع الاختباري SHA1 لـ (التحدي + كلمة المرور المخزنة)

نصائح أخرى

وأنت لن تكون قادرة على عكس مهندس كلمة المرور. تريد أن ترسل SHA كلمة السر، وليس كلمة المرور نفسها. المتداول البروتوكولات الأمنية الخاصة بك لم يكن أبدا فكرة جيدة. لا يمكنك استخدام SSL أو شيء ما يعادلها؟

http://en.wikipedia.org/wiki/Cryptographic_nonce

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

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

وأنا بالتأكيد في عداد المفقودين بعض أكثر.

وأنت على حق - إذا كنت التقاط التحدي و(التحدي XOR كلمة المرور) ثم استخراج كلمة السر من السهل

.

وتحتاج إلى استخدام التشفير الصحيح في الخطوة 3، وليس XOR. تشفير التحدي مع كلمة المرور.

لجعل الحياة المهاجم الصعب عليك أن تضيف بيانات عشوائية على ما قمت بتشفير إلى: على سبيل المثال paddingCHALLENGEpadding تشفير. الملقم لا يهمني ما هو الحشو، فهو يعرف أن ننظر فيها للتحدي، ولكنه يعني أن مهاجم لا يعرف ما هو عادي كله.

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

وأنت قد ترغب في النظر في HMAC (مقفول-تجزئة رسالة مصادقة المدونة). لقد كتبت عن ذلك بالتفصيل هنا: <لأ href = "http://blog.ciscavate.org/2007/09/creating-a-secure-webauth-system-part-1-hmac.html" يختلط = " نوفولو noreferrer "> http://blog.ciscavate.org/2007/09/creating-a-secure-webauth-system-part-1-hmac.html و سأعطيك لمحة موجزة أدناه.

وHMAC هو وسيلة لضمان أن الرسالة قد ولدت من قبل شخص مع الوصول إلى السر المشترك. HMAC يجعل من استخدام نوع من وظيفة التجزئة في اتجاه واحد (مثل MD5 أو SHA-1) لتشفير سر جنبا إلى جنب مع الرسالة. وهذا يولد خلاصة قصيرة من 16-20 بايت التي تعمل بمثابة بصمة الرسالة + مزيج السري. عند إرسال هضم مع الرسالة، والمتلقي (الخادم) يمكن إعادة توليد تجزئة بنفس حساب HMAC ومقارنة محليا ولدت الهضم مع هضم الذي جاء مع الرسالة. تذكر: خادم لديه سرا أيضا، لذلك لديه ما يكفي من المعلومات لتأكيد هضم. (هذه تعتبر فقط مشكلة التحقق من مصدر الرسالة، ولكن يمكنك استخدام نفس النهج لتشفير الرسالة بالكامل، إذا كنت تستخدم سرا مختلفة، ويقول مجموعة من المفاتيح العامة).

الطريقة التي سأفعل بها ذلك هي ما يلي:

  1. تحدي الخادم.
  2. يستجيب Server مع مفتاحه العام (من أجل ، على سبيل المثال تشفير RSA) موقّع رقميًا.

  3. يتحقق العميل من PK ، ويشفر كلمة المرور باستخدام المفتاح ، ثم يوقع رقميًا على كلمة المرور المشفرة.

  4. يتحقق الخادم من التوقيع ويفكك كلمة المرور لتخزينها/التحقق منها.

التوقيع الرقمي مهم هنا لأنه بمثابة بداية لمنع هجمات الرجل في الوسط.

وكما أشار آخرون، نعم، وهذا هو سوء خوارزمية استجابة التحدي.

وربما كنت تريد أن تحقق من دايجست مصادقة ، كما يستخدمه HTTP. في الواقع، إذا كان بروتوكول HTTP الخاص بك هو أكثر، يمكنك تخطي الكتابة الخاصة بك ومجرد استخدام أو تنفيذ ذلك.

وتشفير المفتاح العام؟ استخدام المفتاح العمومي للملقم لتشفير كلمة المرور.

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

للتغلب على المشكلة التي تواجهك..F - دالة تأخذ كلمة المرور وقيمة عشوائية زائفة متزايدة بشكل رتيب وترجع رقمًا.على سبيل المثال.التجزئة (التجزئة (كلمة المرور) ^ الطابع الزمني)

  1. الخادم :اطلب التحدي، أرسل (الطابع الزمني).تذكر آخر طابع زمني تم إرساله.
  2. العميل، إرسال الاستجابة (إرسال F (كلمة المرور، الطابع الزمني) والطابع الزمني)
  3. الخادم:تحقق من العميل باستخدام التجزئة (كلمة المرور) والطابع الزمني الذي أرسله العميل (> الطابع الزمني المرسل في التحدي).
  4. إذا كان العميل على حق، فامنح حق الوصول.
  5. تأكد من أن الطابع الزمني الحالي أكبر من جميع الطوابع الزمنية التي أرسلها العميل قبل التحدي التالي لمنع هجمات إعادة التشغيل.

تحيات طيبة ، آشيش شارما

وأعتقد أن ديفي-هيلمان هو بروتوكول تبادل المفاتيح المعروفة والصلبة؟

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