العربية

أدوات المطورين · SHA حاسبة التجزئة

لماذا يجب عليك عدم تخزين كلمات المرور على هيئة تجزئة SHA-256 عادية

· لماذا يهم

كلمات المرور حماية التشفير

ساعة توقيت تعرض التخمين الفوري مقابل وظيفة تجزئة كلمة المرور التي تضيف تأخيرات متعمدة
الرسم التوضيحي المتجه الأصلي ToolAcre

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

SHA-256 ليس مخزنًا لكلمات المرور؛ إنه تجزئة سريعة. يمنح SHA-256 العادي للمهاجمين نفس سرعة التخمين، مما يجعله غير مناسب على الرغم من كونه خوارزمية قوية من حيث التشفير.

ينفذ المطور نظام تسجيل دخول ويخزن كلمات المرور على هيئة SHA-256. الخوارزمية قوية من الناحية التشفيرية، ولا يطبق التطبيق أي ملح، مما يجعل الكود بسيطًا. عندما يقوم المستخدم بتسجيل الدخول، يقوم التطبيق بتجزئة الإرسال ومقارنته بالقيمة المخزنة. هذا التصميم أنيق في بساطته، وهو غير مناسب على الإطلاق لتخزين كلمات المرور. هذا ليس مصدر قلق نظري. إنه الخطأ الخطير الأكثر شيوعًا في أنظمة المصادقة. يبدو التصميم قابلاً للدفاع عنه حتى تفكر في ما يمكن أن يفعله المهاجم بالبيانات المسروقة.

العيب ليس أن SHA-256 ضعيف. SHA-256 عبارة عن خوارزمية تشفير قوية، يثق بها مجتمع الأمان ويتم استخدامها في جميع أنحاء الصناعة للتحقق من السلامة ومعالجة المحتوى. العيب هو أن SHA-256 سريع، والسرعة هي عكس ما تحتاجه كلمات المرور تمامًا. تجزئة كلمة المرور ليست مجرد أي عملية تشفير بدائية؛ إنها نوع محدد من الأدوات المصممة لمشكلة محددة: الدفاع ضد التخمين. السرعة هي ميزة في المجاميع الاختبارية. في كلمات المرور، بل هو كارثة.

السرعة هي الهدف من SHA-256 — تحتاج عمليات التحقق من السلامة إلى السرعة، ويحصل المهاجم على نفس السرعة للتخمين

عندما يتم اختراق قاعدة بيانات مكونة من SHA-256 من تجزئات كلمة المرور، لا يحتاج المهاجم إلى عكس التجزئات. ينشئ المهاجم قاموسًا: كلمات المرور الشائعة مثل "password" و"123456" و"hello" وملايين الكلمات الأخرى. تتم تجزئة كل مرشح باستخدام SHA-256 — وهي عملية تافهة حسابيًا — ويتم فحصها مقابل قاعدة البيانات المسروقة. يمكن للمهاجم حساب قيم SHA-256 المرشحة بنفس القيمة الأولية السريعة التي تستخدمها خدمة تسجيل الدخول، ثم مقارنة كل نتيجة دون الاتصال بالإنترنت دون حدود للمعدل. يعتمد المعدل الدقيق على الأجهزة والتنفيذ، لذلك لا تقدم هذه المقالة عمدًا أي تخمينات في الثانية أو مطالبات بوقت الاختراق.

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

القواميس وجداول قوس قزح – حسابات مسبقة ضد التجزئة غير المملحة، وما يتغير الملح

هذا هو المكان الذي يصبح فيه القاموس المحسوب مسبقًا عمليًا. يمكن للمهاجم أن يقضي يومًا ويحسب SHA-256 تجزئات لآلاف كلمات المرور الأكثر شيوعًا، أو للأنماط الشائعة مثل Name1990، أو لقواميس كاملة بلغات متعددة. يسمى الجدول الناتج جدول قوس قزح. يعد البحث عن تجزئة SHA-256 المسروقة مقابل جدول محسوب مسبقًا أمرًا فوريًا. حتى بدون جدول محسوب مسبقًا، يعد حساب مليار تخمين أمرًا تافهًا باستخدام التجزئة المتسارعة GPU. التكلفة الحسابية التي يتحملها المهاجم منخفضة جدًا لدرجة أنه حتى كلمات المرور الضعيفة تسقط في دقائق.

توضح حاسبة التجزئة ToolAcre SHA هذه السرعة مباشرة. الصق نصًا قصيرًا، وانقر فوق الزر SHA-256، وستكون النتيجة فورية. هذه النتيجة الفورية — الخاصية التي تعجبك في حاسبة التجزئة — هي الخاصية الدقيقة التي تجعل SHA-256 غير قابل للدفاع عنه بالنسبة لكلمات المرور. يحصل المهاجم على نفس النتيجة الفورية لكل تخمين. بالنسبة للمجموعات الاختبارية وفحوصات السلامة، فهذه السرعة مثالية. بالنسبة لكلمات المرور، فهي قاتلة للأمن.

ما تضيفه وظائف تجزئة كلمة المرور - عوامل العمل وصلابة الذاكرة والأملاح لكل مستخدم في bcrypt وscrypt وArgon2 وPBKDF2

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

مثال عملي - مدى سرعة التعرف على SHA-256 لكلمة المرور الشائعة مقابل تجزئة كلمة المرور المضبوطة، الموصوفة نوعياً

تتخذ وظيفة تجزئة كلمة المرور أسلوبًا مختلفًا. تم تصميم Bcrypt وscrypt وArgon2id وPBKDF2 خصيصًا للتحقق من كلمة المرور. تتضمن جميعها عامل العمل: وهو المعلمة التي تجعل عملية التجزئة باهظة الثمن عمدًا. الأرجون 2 هو الأحدث؛ فهو يضبط كلاً من CPU الوقت واستهلاك الذاكرة. يستخدم Bcrypt عامل تكلفة قابل للضبط يضاعف العمل مع كل زيادة. كل منهم يشمل توليد الملح المدمج. تم تصميم هذه الأدوات مع وضع نموذج المهاجم في الاعتبار. عامل العمل أمر بالغ الأهمية.

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

ترحيل جدول SHA-256 القديم - تغليف التجزئات الموجودة وإعادة تجزئتها عند تسجيل الدخول التالي

تظل المقارنة العملية نوعية لأن هذا المستودع لا يحتوي على معيار مرجعي لوظيفة كلمة مرور معينة أو مهاجم معين. تنتج كلمة المرور الشائعة نفس SHA-256 على الفور في كل مرة، بحيث يمكن لمدخل القاموس الحالي التعرف عليها بالمساواة. يتضمن سجل كلمة المرور المضبوطة معلمات الملح والتكلفة الخاصة به ويتطلب عملاً مهيأ لكل مرشح.

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

ما لا يغطيه هذا هو اختيار المعلمات لتجزئة كلمة مرور معينة، والتي تعتمد على أجهزتك ونموذج التهديد

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

لا يمكن لـ ToolAcre تنفيذ هذا التمرين: تقبل اللوحة الخاصة به النص ومعرف SHA، ثم تقوم بإرجاع ملخص عادي. إنه لا يكشف عن أي حقل ملح أو إعداد للذاكرة أو التحكم في التكرار أو تنسيق تسجيل كلمة المرور. يعد هذا الغياب بمثابة إشارة حدودية مفيدة، وليست ميزة مفقودة يمكن حلها عن طريق تجزئة كلمة المرور بشكل متكرر في مربع النص.

الخلاصة: النتيجة الفورية هي التحذير - تُظهر حاسبة التجزئة ToolAcre SHA مدى سرعة SHA-256، ولهذا السبب يجب ألا تحتفظ بكلمات مرور المستخدمين.

يمكن ترحيل النظام القديم الذي تم تخزين كلمات المرور بشكل عادي SHA-256 إلى الأمام دون مطالبة جميع المستخدمين بإعادة التعيين على الفور. تتمثل التقنية في "التفاف" التجزئة القديمة: خذ القيمة SHA-256 وقم بتجزئتها مرة أخرى باستخدام Argon2. عند تسجيل الدخول التالي للمستخدم، يتحقق النظام مما إذا كان SHA-256 القديم مطابقًا أم لا؛ إذا كان الأمر كذلك، فإنه يحسب Argon2 على تلك النتيجة ويخزن النسخة الملتفة. وفي المرة التالية التي يقوم فيها المستخدم بتسجيل الدخول، يقوم النظام بالتحقق مباشرة من Argon2. يحدث الترحيل بشفافية أثناء تدفق تسجيل الدخول العادي.

يضمن هذا النهج الملتف أن كلمات المرور القديمة التي تم اختراقها محمية الآن بواسطة عامل العمل. لا يمكن للمهاجم الذي لديه قاعدة بيانات قديمة من تجزئات SHA-256 أن يخترقها بعد الآن؛ يجب عليهم مهاجمة النسخة الملفوفة، والتي تتضمن تكلفة Argon2. يحدث الترحيل بشفافية للمستخدمين أثناء تدفق تسجيل الدخول العادي. تخلق كل عملية تسجيل دخول فرصة لتعزيز التجزئة دون الإضرار بتجربة المستخدم. يعتمد اختيار عامل العمل الصحيح على أجهزتك ونموذج التهديد الخاص بك. تعتبر إعدادات Argon2 الافتراضية معقولة: 19 التكرارات، 512 MB الذاكرة و1 التوازي لخدمات الويب.