إذا كنت تجعل من الملح عشوائية لكل مستخدم, كيف يمكنني المصادقة عليها ؟

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

سؤال

كنت أقرأ عن فوائد التمليح و تجزئة كلمات السر, ولكن شيء واحد لا يزال يتملص لي...

عندما تقدم عشوائي الملح لكل مستخدم, كيف تعرف ثم ما كان من الملح عند محاولة المصادقة عليها إلى تسجيل الدخول ؟

حتى لو كنت تفعل..

HASHPW = PW.RANDOMNUMBER

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

بدأت للتو تعلم PHP و MySQL و مجردة مثل هذه الامور قد تم الخلط لي

وذلك بفضل!

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

المحلول

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

نصائح أخرى

ويتم إنشاؤها عشوائيا الملح لكل مستخدم ولكن تم حفظها في مكان ما في قاعدة البيانات. قمت بالبحث الملح لمستخدم معين واستخدامه لمصادقة المستخدم.

وهذه النقطة هي، منذ الملح مختلفة لكل مستخدم، لا يمكنك استخدام القاموس التي سبق إنشاؤها من التجزئة لتعيين كلمات المرور المجزأة لمسح النص (<لأ href = "http://en.wikipedia.org/wiki/Rainbow_table "يختلط =" noreferrer "> قوس قزح هجوم ).

والملح يمنع أي شخص من الحصول على نسخة من قاعدة بيانات كلمة السر المشفرة وشن هجوم ضد متواجد حاليا <م> جميع كلمات المرور في نفس الوقت. لا يمنع هجمات ضد كلمة مرور واحدة.

وأنت قد تتمتع قراءة يونكس المادة أمان كلمة المرور الأصلية. انه يقوم بعمل جيد جدا شرح ما هو الملح، وماذا لدينا لهم: HTTP: //portal.acm.org/citation.cfm؟id=359172

وعند إنشاء كلمة مرور المجزأة يجب عليك استخدام "ضعف" الملح

وإنشاء الملح (MD5 عشوائي أو SHA1) ثم استخدم التنسيق شيء من هذا القبيل SHA1 ( "- $ كلمة المرور - $ salt--") ومن ثم تخزين تجزئته كلمة المرور و الملح في قاعدة البيانات.

وبعد ذلك، عند مصادقة إعادة إنشاء التجزئة من - $ تمر - $ salt-- سلسلة وقارنه إلى تمرير تخزينها في ديسيبل

أنت لا تحتاج إلى فصل الملح عن كل كلمة.

الغرض من التمليح هو مقاومة الجداول قوس قزح -- تحويل مرشح المرور في سلسلة جديدة له الملح في ذلك ؛ منذ الملح هو بعض سلسلة الخاص فقط لديكم معرفة تجزئة المملح كلمة المرور لن يساعد مهاجم الذي لديه تشغيل مطحنة الجدول قوس قزح.

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

ومع ذلك ، هذا غير ضروري.لديك بالفعل سلسلة فريدة من نوعها لكل المستخدم-اسم المستخدم.ليس سرا ، لذلك فإنه ليس من الجيد الملح.ومع ذلك سلسلة من اسم المستخدم وكلمة العالمي سر الملح هو كل سر و فريدة من نوعها.إذا كنت متجر تجزئة (اسم المستخدم+الملح+كلمة المرور), تحتاج فقط إلى معرفة عالمية واحدة قيمة الملح في بحث الوقت.

(صحيح أن هذا يشكل خطر أكبر إذا كان شخص ما تسرب عالمي واحد الملح.ولكن هذا الأسلوب يستحق النظر).

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