هو BCrypt جيد خوارزمية التجزئة لاستخدامها في C# ؟ أين يمكنني العثور عليه ؟ [مغلقة]

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

  •  20-08-2019
  •  | 
  •  

سؤال

لقد قرأت أنه عندما تجزئة كلمة مرور العديد من المبرمجين نوصي باستخدام BCrypt الخوارزمية.

أنا البرمجة في C# و هو أتساءل عما إذا كان أي شخص يعرف من التنفيذ الجيد بالنسبة BCrypt?وجدت هذه الصفحة, ولكن أنا حقا لا أعرف ما إذا كان هو وهمية أو لا.

ماذا يجب أن تكون على علم عند اختيار تجزئة كلمة المرور المخطط ؟ هو BCrypt 'جيدة' التنفيذ ؟

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

المحلول

أولا بعض المصطلحات الهامة:

تجزئة - قانون أخذ سلسلة إنتاج سلسلة من الأحرف التي لا يمكن أن عادت إلى السلسلة الأصلية.

التشفير المتناظر - (عادة ما يشار إليها باسم "التشفير") - قانون أخذ سلسلة إنتاج سلسلة من الأحرف التي يمكن يمكن فك تشفيرها إلى سلسلة الأصلي من خلال استخدام نفس مفتاح التشفير التي تشفيرها.

الجدول قوس قزح - بحث الجدول الذي يحتوي على جميع الاختلافات من الشخصيات تجزئته في معين خوارزمية التجزئة.

الملح - معروف سلسلة عشوائية إلحاق سلسلة الأصلي قبل أن يتم تجزئته.

أجل .NET Framework ، Bcrypt ليس لديها حتى الآن التحقق إشارة التنفيذ.هذا أمر مهم لأن ليس هناك طريقة لمعرفة ما إذا كان هناك عيوب خطيرة في القائمة التنفيذ.يمكنك الحصول على تنفيذ BCrypt على .صافي هنا.أنا لا أعرف ما يكفي عن التشفير القول ما إذا كانت جيدة أو سيئة التنفيذ.التشفير هو عميق جدا الميدانية. لا تحاول بناء الخاصة بك خوارزمية التشفير.على محمل الجد.

إذا كنت تنوي تنفيذ كلمة المرور الخاصة بك الأمن (تنفس الصعداء), ثم عليك أن تفعل عدة أشياء:

  1. استخدام نسبيا خوارزمية التجزئة الآمنة.
  2. الملح كل كلمة قبل تجزئته.
  3. استخدام فريدة من نوعها طويلة الملح لكل كلمة المرور, و تخزين الملح مع كلمة المرور.
  4. تتطلب كلمات مرور قوية.

للأسف, حتى لو كنت تفعل كل هذا العزم القراصنة لا يزال من المحتمل أن معرفة كلمات السر, لن يستغرق منه وقتا طويلا.هذا هو العدو الرئيسي: الوقت.

على bcrypt الخوارزمية يعمل لأنه يأخذ خمسة أوامر من حجم أطول إلى تجزئة كلمة مرور من MD5;(و لا يزال أطول بكثير من AES أو SHA-512).فإنه يفرض على القراصنة أن تنفق الكثير من الوقت لخلق قوس قزح الجدول البحث عن كلمات السر الخاصة بك, مما يجعلها أقل احتمالا بأن كلمات السر الخاصة بك سوف تكون في خطر من التعرض للاختراق.

إذا كنت التمليح و تجزئة كلمات السر الخاصة بك و كل الملح مختلفة ، ثم المحتملة المخترق إنشاء جدول قوس قزح لكل الاختلاف من الملح, فقط أن يكون قوس قزح طاولة واحدة المملح+كلمة المرور المجزأة.وهذا يعني إذا كان لديك 1 مليون مستخدم ، القراصنة قد لتوليد 1 مليون الجداول قوس قزح.إذا كنت تستخدم نفس الملح لكل مستخدم ، ثم القراصنة فقط لتوليد 1 قوس قزح الجدول الإختراق بنجاح النظام الخاص بك.

إذا كنت لا التمليح كلمات السر الخاصة بك ، ثم كل مهاجم القيام به هو سحب ما يصل القائمة قوس قزح الجدول لكل التنفيذ هناك (AES, SHA-512 ، MD5) و إذا كان أحد مباريات التجزئة.هذا وقد تم بالفعل, مهاجم لا تحتاج إلى حساب هذه الجداول قوس قزح أنفسهم.

حتى مع كل هذا ، عليك أن تكون باستخدام الممارسات الأمنية الجيدة.إذا أنها يمكن أن تستخدم بنجاح هجوم آخر ناقل (XSS, SQL Injection, CSRF ، وآخرون.al.) على موقع الويب الخاص بك ، مرور جيدة الأمن لا يهم.التي يبدو أن البيان المثير للجدل ، ولكن التفكير في الامر:إذا كان يمكن الحصول على كل المعلومات من خلال الهجوم حقن SQL, أو يمكن الحصول على المستخدمين أن تعطيني ملفات تعريف الارتباط الخاصة من خلال XSS ، ثم لا يهم كيف جيدة الأمن كلمة السر الخاصة بك هو.

موارد أخرى:

  1. جيف أتوود: .صافي تشفير مبسطة (رائعة للحصول على نظرة عامة حول تجزئة)
  2. جيف أتوود: أنا فقط تسجيل الدخول كما كنت
  3. جيف أتوود: ربما كنت لتخزين كلمات المرور بشكل غير صحيح
  4. جيف أتوود: سرعة تجزئة

ملاحظة: يرجى يوصي الموارد الأخرى الجيدة.لقد يجب أن يكون قراءة عشرات المقالات من قبل العشرات من المؤلفين ، ولكن قلة من يكتب بوضوح على الموضوع جيف لا.يرجى تعديل في المواد كما تجد لهم.

نصائح أخرى

لك يجب عدم استخدام BCrypt في .صافي.لك يجب استخدام PBKDF2 كما هو مع المدمج في .NET framework التنفيذ.هو فقط متاحة بحرية مشفر التحقق من التنفيذ .صافي جنبا إلى جنب مع كونها خوارزمية أوصت نيست.

StackId المستخدمة سابقا BCrypt وانتقلت إلى PBKDF2 لهذا السبب بالذات:

بالنسبة لأولئك غريبة ، نحن تجزئة كلمات السر مع PBKDF2.Relavent رمز هنا ( http://code.google.com/p/stackid/source/browse/OpenIdProvider/Current.cs#1135 ) من خلال عدد قليل من طبقات من المراوغة.في وقت سابق من التكرار ، ونحن كانوا يستخدمون BCrypt;ولكنها انتقلت إلى PBKDF2 كما أنها بنيت في .صافي إطار ، في حين BCrypt تحتاج إلى التحقق من تنفيذ (لا صغيرة التعهد).

كيفن Montrose, 27 مايو 2011

(تحديث الرابط على جيثب)

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

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

2014 تحرير: لكل شخص شكك في وحتمية استخدام التحقق cryptopgraphical algorithims ننظر بالدمار الذي أحدثته في heartbleed هاك استغلالها في بينسل.أن تكلفة استخدام غير مؤكدة التنفيذ.انها آمنة....حتى تجد أن أي شخص يمكن فقط قراءة كامل محتويات الذاكرة من الخادم الخاص بك.

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

هذا هو تعريف غير مؤكدة التنفيذ.حتى أصغر عيب يمكن أن يؤدي إلى الشلل الأمن كلها.

2015 تحرير: إزالة التوصية على أساس اللغة واستبدالها المطلقات.جزءا لا يتجزأ الأصلي كيفن مونتروز التعليق للأجيال القادمة.

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