مولّد تجزئة bcrypt وأداة التحقق منها
يؤدي تخزين كلمات المرور باستخدام MD5 أو SHA256 إلى تعريضها للخطر لأن هذه الخوارزميات سريعة للغاية. تستطيع وحدة معالجة رسومات حديثة اختبار مليارات التخمينات في الثانية ضدها. يحتاج المطورون إلى خوارزمية بطيئة عمداً ومملحة، لكن إعداد واحدة محلياً لمجرد اختبار تجزئة يهدر الوقت.
ينشئ مولّد تجزئة bcrypt هذا تجزئات آمنة لكلمات المرور باستخدام عامل تكلفة تتحكم فيه. الصق كلمة مرور، واختر عامل عمل، واحصل فوراً على تجزئة bcrypt صالحة. يمكنك أيضاً التحقق من تجزئة موجودة مقابل نص عادي، ويعمل كل شيء داخل متصفحك.
أنشئ تجزئة bcrypt أو تحقق منها
يؤدي تخزين كلمات المرور باستخدام MD5 أو SHA256 إلى تعريضها للخطر لأن هذه الخوارزميات سريعة للغاية. تستطيع وحدة معالجة رسومات حديثة اختبار مليارات التخمينات في الثانية ضدها. يحتاج المطورون إلى خوارزمية بطيئة عمداً ومملحة، لكن إعداد واحدة محلياً لمجرد اختبار تجزئة يهدر الوقت.
استخدم $2b$ للإخراج الحديث الافتراضي، أو $2y$ عندما تحتاج إلى تنسيق متوافق مع PHP.
ما مولّد تجزئة bcrypt؟
مولّد تجزئة bcrypt، الذي يُسمى أحياناً مولّد تجزئة كلمات مرور bcrypt، يحوّل كلمة مرور بنص عادي إلى تجزئة bcrypt آمنة. bcrypt هي دالة لتجزئة كلمات المرور مبنية على تشفير Blowfish، صممها Niels Provos وDavid Mazières عام 1999. وعلى خلاف التجزئات السريعة مثل MD5، صُممت bcrypt لتكون بطيئة عمداً لمقاومة هجمات القوة الغاشمة.
تنتج هذه الأداة تجزئة قياسية بطول 60 حرفاً يمكن لأي مكتبة bcrypt التحقق منها. كما تعمل كأداة تحقق من bcrypt، فتتحقق مما إذا كانت كلمة المرور تطابق تجزئة لديك بالفعل. تتم العمليتان بالكامل على جهازك، لذلك لا تُرسل أي كلمة مرور إلى خادم.
كيفية استخدام مولّد تجزئة bcrypt هذا
لا يستغرق استخدام مولّد تجزئة bcrypt عبر الإنترنت سوى ثوانٍ ولا يتطلب حساباً أو تثبيتاً. تعمل الأداة في أي متصفح حديث على أجهزة سطح المكتب والهواتف. اتبع الخطوات أدناه لإنشاء تجزئة أو التحقق منها.
- أدخل كلمة المرور بنص عادي في حقل الإدخال.
- اختر عامل تكلفة، وعادةً ما يكون بين 10 و12.
- انقر على إنشاء لإنتاج تجزئة bcrypt.
- وللتحقق، الصق تجزئة موجودة والنص العادي، ثم انقر على تحقق.
ينشئ المولّد ملحاً عشوائياً جديداً في كل مرة تشغّله فيها. وهذا يعني أن كلمة المرور نفسها تنتج تجزئة مختلفة في كل عملية إنشاء. هذا السلوك صحيح ومتوقع، ووظيفة التحقق هي الطريقة التي تؤكد بها التطابق.
فهم تنسيق تجزئة bcrypt
تتبع كل تجزئة bcrypt بنية ثابتة تجمع أربعة أجزاء في سلسلة واحدة. تساعدك قراءتها على تصحيح مشكلات المصادقة والتأكد من صلاحية التجزئة. يوضح المثال أدناه كل مقطع من تجزئة bcrypt حقيقية.
تتكون تجزئة مثل $2b$10$oHLkY4emC3geWiN6anPYnevZAh9RtyHgQeOeGwWbWF9xlJidZsQDi من أجزاء واضحة. تشير $2b$ إلى إصدار bcrypt، و10 هو عامل التكلفة، والأحرف الـ22 التالية هي الملح، والأحرف الـ31 الأخيرة هي التجزئة. يبلغ طول السلسلة كاملة دائماً 60 حرفاً، مما يسهل اكتشاف التجزئات غير الصحيحة.
المقطع | مثال | المعنى |
|---|---|---|
| الإصدار | $2b$ | معرّف الخوارزمية |
| التكلفة | 10 | عامل العمل، 2 مرفوعة إلى قوة هذه القيمة |
| الملح | 22 حرفاً | ملح عشوائي خاص بكل تجزئة |
| التجزئة | 31 حرفاً | بصمة bcrypt |
إصدارات bcrypt: $2a$ و$2b$ و$2y$
تخبر بادئة الإصدار المكتبات بنوع bcrypt الذي أنشأ التجزئة. تستخدم معظم المكتبات الحديثة $2b$ افتراضياً، وهو إصدار OpenBSD الحالي. وستظل تصادف بادئات أقدم أو خاصة بلغات معينة في الأنظمة الفعلية.
البادئة $2a$ هي الأصلية وتظل متوافقة على نطاق واسع بين المكتبات. ينتج PHP وLaravel تجزئات $2y$ القادمة من تنفيذ crypt_blowfish. يتم التحقق من الأنواع الثلاثة بالطريقة نفسها، لذلك تُفحص تجزئة $2y$ من PHP بشكل صحيح عند استخدام كلمة المرور الصحيحة. ينتج مولّد تجزئة bcrypt هذا بادئة قياسية تقبلها أي مكتبة متوافقة.
اختيار عامل تكلفة bcrypt
يتحكم عامل التكلفة، المعروف أيضاً بعامل العمل، في مدى بطء كل عملية تجزئة. تؤدي زيادته بمقدار واحد إلى مضاعفة وقت الحساب لأن عدد الجولات يساوي 2 مرفوعة إلى قوة عامل التكلفة. يعني عامل تكلفة 10 وجود 1,024 جولة، بينما يعني عامل تكلفة 12 وجود 4,096 جولة.
تقاوم قيم التكلفة الأعلى هجمات القوة الغاشمة بصورة أفضل، لكنها تبطئ كل عملية تسجيل دخول. تحقق قيمة بين 10 و12 توازناً بين الأمان والسرعة لمعظم تطبيقات الويب الحالية. اختبر الزمن على جهازك مستهدفاً نحو 250 مللي ثانية لكل تجزئة. يتيح لك مولّد bcrypt عبر الإنترنت هذا معاينة تأثير كل إعداد للتكلفة على الناتج.
تحقق من تجزئة باستخدام مولّد تجزئة bcrypt
التحقق ضروري لأنك لا تستطيع مقارنة تجزئتي bcrypt مباشرة. تنتج كلمة المرور نفسها تجزئة مختلفة في كل مرة بفضل الملح العشوائي. تفشل مقارنة السلاسل دائماً، لذلك فإن أداة التحقق الصحيحة هي الطريقة الموثوقة الوحيدة.
تستخرج أداة التحقق الملح وعامل التكلفة من التجزئة المخزنة، ثم تعيد تجزئة النص العادي باستخدام القيم نفسها تماماً. إذا طابق الناتج التجزئة المخزنة، تكون كلمة المرور صحيحة. الصق التجزئة وكلمة المرور المرشحة في هذه الأداة لإجراء الفحص بأمان داخل متصفحك.
Bcrypt مع Laravel وPHP وNode.js
bcrypt هي خوارزمية كلمات المرور الافتراضية في معظم أطر الويب الحديثة. تستخدم الدالة password_hash() في PHP خوارزمية bcrypt افتراضياً وتعيد تجزئة $2y$. ويغلف Laravel ذلك داخل الدالة المساعدة Hash::make()، ولهذا ينتج مولّد تجزئة Laravel ومولّد bcrypt التنسيق نفسه.
يستخدم مطورو Node.js حزمتَي bcrypt أو bcryptjs للحصول على نتائج متطابقة. تنتج كل هذه الأدوات الناتج القياسي بطول 60 حرفاً الذي تنشئه هذه الأداة. يمكنك إنشاء تجزئة اختبار هنا ووضعها مباشرة في بيانات التهيئة أو fixture لقاعدة البيانات.
لماذا تحمي bcrypt كلمات المرور بصورة أفضل
تجمع bcrypt بين ثلاث وسائل دفاع لا توفرها التجزئات السريعة مثل SHA256. فهي تضيف ملحاً إلى كل تجزئة تلقائياً، لذلك لا تشترك كلمات المرور المتطابقة في البصمة نفسها. كما أنها بطيئة عمداً، مما يبطئ هجمات القوة الغاشمة والقواميس بشدة.
عامل التكلفة التكيفي هو الميزة الثالثة والأكثر أهمية. كلما ازدادت سرعة الأجهزة، ترفع عامل التكلفة للحفاظ على صعوبة كسر التجزئات. يمكن أن تبقى تجزئة أُنشئت اليوم آمنة لسنوات بمجرد اختيار عامل عمل مناسب. ولإنشاء كلمات المرور نفسها، استخدم هذه الأداة مع مولّد كلمات المرور الخاص بنا.
حد كلمة المرور البالغ 72 بايت
تعالج bcrypt أول 72 بايت فقط من أي كلمة مرور. يتم تجاهل الأحرف بعد هذه النقطة، مما قد يضعف عبارات المرور الطويلة جداً بصورة غير متوقعة. كانت المكتبات القديمة تقتطع الإدخال بصمت، بينما ترفض المكتبات الأحدث الإدخال الطويل جداً برسالة خطأ.
هذا الحد هو سبب قيام WordPress بإجراء تجزئة أولية لكلمات المرور باستخدام SHA-384 قبل تطبيق bcrypt. إذا كان من الممكن أن تتجاوز كلمات المرور 72 بايت، فطبّق SHA-256 عليها مرة واحدة أولاً، ثم استخدم bcrypt على الناتج. لتجزئات WordPress، استخدم مولّد تجزئة كلمات مرور WordPress المخصص. ولعرض البصمات غير الخاصة بكلمات المرور، يغطي مولّد التجزئة الخوارزميات من MD5 حتى SHA-512.
الأسئلة الشائعة
أسئلة مكررة