0Pricing
Cryptology Academy · درس

Argon2: تجزئة كلمات المرور المعتمدة على الذاكرة

استكشف Argon2i وArgon2d وArgon2id ولماذا تُعدّ صعوبة الذاكرة مهمة

Argon2: تجزئة كلمات المرور المعتمدة على الذاكرة درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

مرحبًا

فازت Argon2 بمسابقة تجزئة كلمات المرور (PHC) عام 2015، وهي التوصية الأولى لدى OWASP. ويحدّ تصميمها الذي يتطلب ذاكرة كبيرة من فعالية هجمات GPU وASIC التي لا تستطيع bcrypt مقاومتها.

أهمية الحاجة إلى ذاكرة كبيرة

تحتوي وحدات GPU على آلاف الأنوية، لكن الذاكرة العشوائية المتاحة لكل نواة محدودة (نحو 1KB). وتتطلب Argon2 ذاكرة قدرها 64MB أو أكثر لكل تجزئة. ويحتاج المهاجم الذي يحاول إجراء 1000 تجزئة بالتوازي إلى 64GB من الذاكرة، وهو أمر مكلف ومحدود.

أشكال Argon2

Argon2d: وصول يعتمد على البيانات — الأسرع، لكنه عرضة لهجمات التوقيت عبر القنوات الجانبية. Argon2i: وصول مستقل عن البيانات — آمن ضد هجمات التوقيت. Argon2id: شكل هجين — موصى به لمعظم التطبيقات.

معلمات Argon2

m: الذاكرة بالكيلوبايت (توصية OWASP: حد أدنى 19456 KB = 19 MB، والموصى به 64 MB) t: كلفة الوقت / عدد التكرارات (الموصى به 3) p: التوازي / عدد سلاسل التنفيذ (الموصى به 4) salt: 16 بايتًا عشوائيًا output: 32 بايتًا

Argon2id في Python

from argon2 import PasswordHasher ph = PasswordHasher( memory_cost=65536, # 64 MB time_cost=3, parallelism=4 ) hash = ph.hash('my_password') # Verify: ph.verify(hash, 'my_password') # True

تنسيق تجزئة Argon2

$argon2id$v=19$m=65536,t=3,p=4$ bmFuZG9tc2FsdHJhbmRvbQ$ KaE5Jjy7E8...hashed... تُخزَّن جميع المعلمات داخل سلسلة التجزئة. ويكون التحقق مكتفيًا ذاتيًا، فلا حاجة إلى تخزين منفصل للمعلمات.

توصيات OWASP لـ Argon2id لعام 2024

الحد الأدنى: m=19456 KB (19 MB)، t=2، p=1 الموصى به: m=65536 KB (64 MB)، t=3، p=4 أمان عالٍ: m=262144 KB (256 MB)، t=4، p=8 اضبط القيم وفقًا للذاكرة المتاحة على خادمك.

مقارنة Argon2 وbcrypt وPBKDF2

Argon2id: تتطلب ذاكرة كبيرة، ومقاومة لـ ASIC، وموصى بها للأنظمة الجديدة. bcrypt: مدعومة على نطاق واسع، ولا تتطلب ذاكرة كبيرة، وتوفر توافقًا جيدًا مع الأنظمة القديمة. PBKDF2: متوافقة مع FIPS، ولا تتطلب ذاكرة كبيرة، وتُستخدم في البيئات الخاضعة للتنظيم.

استراتيجية ترقية التجزئة

عند الترقية من bcrypt إلى Argon2: 1. أضف عمودًا جديدًا للتجزئة الجديدة 2. عند تسجيل الدخول التالي: تحقّق باستخدام bcrypt القديمة، ثم أعد التجزئة باستخدام Argon2 وخزّن التجزئة الجديدة 3. بعد X أشهر، أجبِر المستخدمين الذين لم تُرقَّ تجزئاتهم بعد على إعادة تعيين كلمات المرور

Argon2 في أطر العمل الفعلية

Django: اضبط PASSWORD_HASHERS=['django.contrib.auth.hashers.Argon2PasswordHasher'] Node.js: استخدم الحزمة argon2 (وليس argon2-ffi) PHP 7.2+: الثابت المضمّن PASSWORD_ARGON2ID في password_hash()

Pepper: سرّ من جهة الخادم

إن pepper سرّ يُحفظ على الخادم ويُخلط مع كلمة المرور قبل تجزئتها: hash(password + pepper). وحتى إذا تسرّبت قاعدة البيانات، سيظل المهاجم بحاجة إلى pepper أيضًا. ويؤدي تدوير pepper إلى إبطال جميع التجزئات.

تحقّق سريعًا

لماذا تُعد Argon2 أكثر مقاومة لهجمات GPU من bcrypt؟

مراجعة

تُعد Argon2id أفضل أداة لتجزئة كلمات المرور اليوم. سنقارن بعد ذلك الخوارزميات الثلاث ونتعلم كيفية اختيار الخوارزمية المناسبة لسياقك.

الأسئلة الشائعة

هل درس «Argon2: تجزئة كلمات المرور المعتمدة على الذاكرة» مجاني؟

نعم — نص درس «Argon2: تجزئة كلمات المرور المعتمدة على الذاكرة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

ماذا ستتعلم في «Argon2: تجزئة كلمات المرور المعتمدة على الذاكرة»؟

استكشف Argon2i وArgon2d وArgon2id ولماذا تُعدّ صعوبة الذاكرة مهمة تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟

لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «Argon2: تجزئة كلمات المرور المعتمدة على الذاكرة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟

نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا تفشل SHA-256 العادية مع كلمات المرور
  2. bcrypt: الخوارزمية ومعامل الكلفة
  3. Argon2: تجزئة كلمات المرور المعتمدة على الذاكرة
  4. PBKDF2 واختيار الخوارزمية المناسبة
← العودة إلى Cryptology Academy