PBKDF2
In cryptography, PBKDF1 and PBKDF2 (Password-Based Key Derivation Function 1 and 2) are key derivation functions with a sliding computational cost, used to reduce vulnerability to brute-force attacks.[1]
PBKDF2 is part of RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, specifically PKCS #5 v2.0, also published as Internet Engineering Task Force's RFC 2898. It supersedes PBKDF1, which could only produce derived keys up to 160 bits long.[2] RFC 8018 (PKCS #5 v2.1), published in 2017, recommends PBKDF2 for password hashing.[3]
Purpose and operation
PBKDF2 applies a pseudorandom function, such as hash-based message authentication code (HMAC), to the input password or passphrase along with a salt value and repeats the process many times to produce a derived key, which can then be used as a cryptographic key in subsequent operations. The added computational work makes password cracking much more difficult, and is known as key stretching.
While the recommended minimum number of iterations was 1,000 when the standard was written in the year 2000, the parameter is intended to be increased over time as CPU speeds increase. A Kerberos standard in 2005 recommended 4,096 iterations;[1]Apple reportedly used 2,000 for iOS 3, and 10,000 for iOS 4;[4] while LastPass in 2011 used 5,000 iterations for JavaScript clients and 100,000 iterations for server-side hashing.[5] In 2023, OWASP recommended to use 600,000 iterations for PBKDF2-HMAC-SHA256 and 220,000 for PBKDF2-HMAC-SHA512.[6]

يُقلل إضافة قيمة عشوائية (Salt) إلى كلمة المرور من إمكانية استخدام التجزئات المحسوبة مسبقًا ( جداول قوس قزح ) في الهجمات، ويعني ضرورة اختبار كلمات المرور المتعددة بشكل فردي، وليس دفعة واحدة. يوصي معيار التشفير بالمفتاح العام بطول قيمة عشوائية لا يقل عن 64 بتًا. [ 7 ] بينما يوصي المعهد الوطني الأمريكي للمعايير والتكنولوجيا بطول قيمة عشوائية لا يقل عن 128 بتًا. [ 8 ]
عملية اشتقاق المفاتيح
يحتوي PBKDF2 على خمسة معلمات إدخال: [ 9 ]
- DK = PBKDF2(PRF, Password , Salt , c , dkLen )
أين:
- PRF هي دالة شبه عشوائية ذات معلمتين بطول خرج hLen (على سبيل المثال، HMAC ذو مفتاح).
- كلمة المرور هي كلمة المرور الرئيسية التي يتم من خلالها إنشاء مفتاح مشتق
- الملح عبارة عن سلسلة من البتات، تُعرف باسم ملح التشفير
- يمثل c عدد التكرارات المطلوبة
- dkLen هو طول البت المطلوب للمفتاح المشتق
- DK هو المفتاح المشتق المُنشأ
يتم حساب كل كتلة من نوع hLen -bit T i من المفتاح المشتق DK على النحو التالي (مع وضع علامة + لربط السلسلة):
- DK = T 1 + T 2 + ⋯ + T dkLen / hLen
- Ti = F( Password , Salt , c , i )
الدالة F هي عملية XOR ( ^ ) لعدد c من تكرارات PRF المتسلسلة. يستخدم التكرار الأول لـ PRF كلمة المرور كمفتاح PRF، والملح مُدمجًا مع i مُشفّرًا كعدد صحيح 32 بت بنظام Big-Endian كمدخل. (لاحظ أن i فهرس يبدأ من 1). تستخدم التكرارات اللاحقة لـ PRF كلمة المرور كمفتاح PRF، ومخرجات حساب PRF السابق كمدخل.
- F( كلمة المرور ، الملح ، c ، i ) = U1 ^ U2 ^ ... ^ Uc
أين:
- U 1 = PRF( كلمة المرور ، الملح + INT_32_BE( i ))
- U 2 = PRF( كلمة المرور ، U 1 )
- ⋮
- U c = PRF( كلمة المرور , U c -1 )
على سبيل المثال، يستخدم بروتوكول WPA2 ما يلي:
- DK = PBKDF2(HMAC-SHA1, passphrase , ssid , 4096, 256)
كانت عملية PBKDF1 أبسط: يتم إنشاء U الأولي (المسمى T في هذه النسخة) بواسطة PRF( كلمة المرور + الملح ) ، والكلمات اللاحقة هي ببساطة PRF( U السابق ) . يتم استخراج المفتاح كأول dkLen بت من التجزئة النهائية، ولهذا السبب يوجد حد أقصى للحجم. [ 9 ]
تصادمات HMAC
تتمتع خوارزمية PBKDF2 بخاصية مثيرة للاهتمام عند استخدام HMAC كدالة شبه عشوائية. إذ يُمكن بسهولة إنشاء أي عدد من أزواج كلمات المرور المختلفة مع وجود تصادمات داخل كل زوج. [ 10 ] إذا كانت كلمة المرور المُدخلة أطول من حجم كتلة دالة التجزئة HMAC الأساسية، تُجرى عملية تجزئة مسبقة لكلمة المرور إلى مُلخص، ويُستخدم هذا المُلخص ككلمة مرور. على سبيل المثال، كلمة المرور التالية طويلة جدًا:
- كلمة المرور:
plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd
لذلك، عند استخدام HMAC-SHA1، يتم تجزئته مسبقًا باستخدام SHA-1 إلى:
- SHA1 (سداسي عشري):
65426b585154667542717027635463617226672a
والتي يمكن تمثيلها في نظام ASCII على النحو التالي:
- SHA1 (ASCII):
eBkXQTfuBqp'cTcar&g*
هذا يعني أنه بغض النظر عن الملح أو التكرارات، فإن PBKDF2-HMAC-SHA1 سيولد نفس بايتات المفتاح لكلمات المرور:
- "plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd"
- "eBkXQTfuBqp'cTcar&g*"
على سبيل المثال، باستخدام:
- PRF : HMAC-SHA1
- الملح: A009C1A485912C6AE630D3E744240B04
- عدد التكرارات: 1000
- طول المفتاح المشتق: 16 بايت
استدعاءات الدالتين التاليتين:
PBKDF2 - HMAC - SHA1 ( "plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd" , ... ) PBKDF2 - HMAC - SHA1 ( "eBkXQTfuBqp'cTcar&g*" , ... )سيؤدي ذلك إلى توليد نفس بايتات المفتاح المشتق ( 17EB4014C8C461C300E9B61518B9A18B). لا تمثل هذه التصادمات في المفاتيح المشتقة ثغرة أمنية، إذ لا يزال يتعين معرفة كلمة المرور الأصلية لتوليد تجزئة كلمة المرور. [ 11 ]
بدائل لـ PBKDF2
من نقاط ضعف خوارزمية PBKDF2 أنه على الرغم من إمكانية تعديل عدد دوراتها لتستغرق وقتًا حسابيًا كبيرًا، إلا أنه يمكن تنفيذها باستخدام دائرة صغيرة وذاكرة وصول عشوائي (RAM) محدودة للغاية، مما يجعل هجمات القوة الغاشمة باستخدام الدوائر المتكاملة الخاصة بالتطبيقات أو وحدات معالجة الرسومات رخيصة نسبيًا. [ 12 ] تتطلب دالة تجزئة كلمات المرور bcrypt مقدارًا أكبر من ذاكرة الوصول العشوائي (لكنها لا تزال غير قابلة للتعديل بشكل منفصل، أي أنها ثابتة لفترة زمنية محددة لوحدة المعالجة المركزية) وهي أقوى بكثير ضد هذه الهجمات، [ 13 ] بينما يمكن لدالة اشتقاق المفاتيح scrypt الأحدث استخدام كميات كبيرة من الذاكرة، وبالتالي فهي أكثر مقاومة لهجمات الدوائر المتكاملة الخاصة بالتطبيقات ووحدات معالجة الرسومات. [ 12 ]
في عام ٢٠١٣، أُقيمت مسابقة تجزئة كلمات المرور (PHC) لتطوير أسلوب أكثر مقاومة. وفي ٢٠ يوليو ٢٠١٥، تم اختيار Argon2 كفائز نهائي في المسابقة، مع تقدير خاص لأربعة أنظمة تجزئة كلمات مرور أخرى: Catena و Lyra2 و yescrypt وMakwa. [ ١٤ ] ويُعدّ تجزئة Balloon خيارًا بديلًا آخر ، وهو مُوصى به في إرشادات كلمات المرور الصادرة عن المعهد الوطني للمعايير والتكنولوجيا (NIST) . [ ١٥ ]
للحد من هجمات التخمين العشوائي ، يمكن جعل كل محاولة لكلمة المرور تتطلب تفاعلاً عبر الإنترنت، دون المساس بسرية كلمة المرور. ويمكن تحقيق ذلك باستخدام دالة شبه عشوائية غير واعية لتعزيز أمان كلمة المرور . [ 16 ] ويمكن تطبيق ذلك كبديل لخوارزمية PBKDF أو كخطوة إضافية فيها.
انظر أيضاً
مراجع
- 1 2 رايبورن، كينيث (2005). "تشفير معيار التشفير المتقدم (AES) لبروتوكول كيربيروس 5" . tools.ietf.org . doi : 10.17487/RFC3962 . RFC 3962. تم الاطلاع عليه بتاريخ 23 أكتوبر 2015 .
- ↑ كاليسكي، بيرت (2000). "PKCS #5: مواصفات التشفير القائم على كلمات المرور، الإصدار 2.0" . tools.ietf.org . doi : 10.17487/RFC2898 . RFC 2898. تم الاطلاع عليه بتاريخ 23 أكتوبر 2015 .
- ↑ موريارتي، كاثلين؛ وآخرون (2017). موريارتي، ك (محرر). "PKCS #5: مواصفات التشفير القائم على كلمات المرور، الإصدار 2.1" . tools.ietf.org . doi : 10.17487/RFC8018 . RFC 8018.
- ↑ "التحليل الجنائي للهواتف الذكية: اختراق كلمات مرور النسخ الاحتياطية لأجهزة بلاك بيري" . اختراق كلمات المرور المتقدم - نظرة معمقة . إلكوم سوفت. 30 سبتمبر 2010. تم الاطلاع عليه بتاريخ 23 أكتوبر 2015 .
- ↑ "إشعار أمان LastPass" . مدونة LastPass . 5 مايو 2011. تم الاطلاع عليه في 31 يناير 2023 .
- ↑ "دليل مختصر لتخزين كلمات المرور" . سلسلة أدلة OWASP المختصرة . 15 أغسطس 2021. مؤرشف من الأصل في 23 يناير 2023. تم الاطلاع عليه في 23 يناير 2023 .
- ↑ موريارتي، كاثلين؛ وآخرون (2017). موريارتي، ك (محرر). "PKCS #5: مواصفات التشفير القائم على كلمات المرور، الإصدار 2.1: القسم 4. الملح وعدد التكرارات" . tools.ietf.org . doi : 10.17487/RFC8018 . RFC 8018. تم الاطلاع عليه في 24 يناير 2018 .
- ↑ سونميز توران، ميلتيم؛ باركر، إيلين؛ بور، ويليام؛ تشين، ليلي. "توصية بشأن اشتقاق المفاتيح القائم على كلمات المرور، الجزء 1: تطبيقات التخزين" (ملف PDF) . المعهد الوطني للمعايير والتكنولوجيا . SP 800-132 . تاريخ الاطلاع: 20 ديسمبر 2018 .
- 1 2 مواصفات التشفير القائم على كلمة المرور RFC 2898
- ↑ بايننز، ماتياس. "شرح تصادمات التجزئة PBKDF2+HMAC" . mathiasbynens.be .
- ↑ "مقاومة التصادم - لماذا لا يزال يُعتبر HMAC-SHA1 آمنًا؟" . crypto.stackexchange.com .
- 1 2 كولين بيرسيفال . scrypt . كما هو معروض في "اشتقاق مفتاح أقوى عبر وظائف الذاكرة المتسلسلة الصعبة" . تم تقديمه في BSDCan'09، مايو 2009.
- ↑ "وحش جديد بمعالجات رسومية من الفئة 25 يلتهم كلمات المرور في ثوانٍ" . مجلة الأمن الإلكتروني. 4 ديسمبر 2012. تم الاطلاع عليه في 7 سبتمبر 2013 .
- ↑ "مسابقة تجزئة كلمات المرور"
- ↑ "إرشادات الهوية الرقمية: المصادقة وإدارة دورة الحياة، القسم 5.1.1.2" (ملف PDF) . المعهد الوطني للمعايير والتكنولوجيا . SP 800-63B . تاريخ الاطلاع: 18 يونيو 2021 .
- ↑ فورد، دبليو؛ كاليسكي، بي إس (2000). "توليد سر قوي من كلمة مرور بمساعدة الخادم". وقائع ورش العمل الدولية التاسعة لمعهد مهندسي الكهرباء والإلكترونيات حول التقنيات المُمكّنة: البنية التحتية للمؤسسات التعاونية (WET ICE 2000) . الصفحات 176-180 . doi : 10.1109/ENABL.2000.883724 . ISBN 0-7695-0798-0. S2CID 1977743 .
روابط خارجية
- "PKCS #5 v2.1" (ملف PDF) . مختبرات RSA . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 11 أبريل 2017.
- RFC 2898 – مواصفات PKCS #5 الإصدار 2.0.
- RFC 6070 – متجهات الاختبار لـ PBKDF2 مع HMAC-SHA1.
- منشور خاص من المعهد الوطني للمعايير والتكنولوجيا (NIST) رقم 800-132: توصية بشأن اشتقاق المفاتيح باستخدام كلمات المرور
- مصادقة كلمة المرور
- معايير التشفير
- دوال الاشتقاق الرئيسية
