دالة اشتقاق المفتاح

في علم التشفير ، تُعرف دالة اشتقاق المفتاح ( KDF ) بأنها خوارزمية تشفيرية تستخلص مفتاحًا سريًا واحدًا أو أكثر من قيمة سرية، مثل المفتاح الرئيسي أو كلمة المرور أو عبارة المرور، باستخدام دالة شبه عشوائية (والتي تستخدم عادةً دالة تجزئة تشفيرية أو تشفيرًا كتليًا ). [ 1 ] [ 2 ] [ 3 ] يمكن استخدام دوال اشتقاق المفتاح لتمديد المفاتيح إلى مفاتيح أطول أو للحصول على مفاتيح بتنسيق مطلوب، مثل تحويل عنصر مجموعة ناتج عن تبادل مفاتيح ديفي-هيلمان إلى مفتاح متناظر لاستخدامه مع معيار التشفير المتقدم (AES) . تُعد دوال التجزئة التشفيرية المُفهرسة أمثلة شائعة على الدوال شبه العشوائية المستخدمة في اشتقاق المفاتيح. [ 4 ]
تاريخ
كانت أول دالة اشتقاق مفاتيح بطيئة عمدًا (تعتمد على تمديد المفتاح) تعتمد على كلمة المرور تُسمى " crypt " (أو "crypt(3)" نسبةً إلى صفحة دليلها )، وقد ابتكرها روبرت موريس عام 1978. تقوم هذه الدالة بتشفير قيمة ثابتة (صفر) باستخدام الأحرف الثمانية الأولى من كلمة مرور المستخدم كمفتاح، وذلك من خلال تنفيذ 25 تكرارًا لخوارزمية تشفير DES مُعدّلة (حيث يُستخدم عدد مكون من 12 بت يُقرأ من ساعة الحاسوب في الوقت الفعلي لتشويش العمليات الحسابية). يُشفّر العدد الناتج المكون من 64 بت على هيئة 11 حرفًا قابلاً للطباعة، ثم يُخزّن في ملف كلمات مرور نظام يونكس . [ 5 ] على الرغم من أنها كانت تقدمًا كبيرًا في ذلك الوقت، إلا أن الزيادة في سرعات المعالجات منذ عصر PDP-11 جعلت هجمات القوة الغاشمة ضد crypt ممكنة ، كما أن التطورات في مجال التخزين جعلت استخدام الملح ذي الـ 12 بت غير كافٍ. يُقيّد تصميم دالة crypt أيضًا كلمة مرور المستخدم بـ 8 أحرف، مما يحد من مساحة المفاتيح ويجعل استخدام عبارات مرور قوية أمرًا مستحيلاً.
على الرغم من أن الإنتاجية العالية تُعدّ خاصية مرغوبة في دوال التجزئة العامة، إلا أن العكس صحيح في تطبيقات أمان كلمات المرور، حيث يُشكّل الدفاع ضد هجمات التخمين العشوائي هاجسًا رئيسيًا. وقد زاد استخدام الأجهزة المتوازية الضخمة ، مثل وحدات معالجة الرسومات (GPUs) ومصفوفات البوابات المنطقية القابلة للبرمجة (FPGAs) وحتى الدوائر المتكاملة الخاصة بالتطبيقات (ASICs) ، في هجمات التخمين العشوائي من أهمية اختيار الخوارزميات المناسبة، إذ يجب أن تفرض الخوارزمية الجيدة قدرًا معينًا من التكلفة الحسابية ليس فقط على وحدات المعالجة المركزية (CPUs)، بل أيضًا أن تتفوق على مزايا التكلفة/الأداء التي توفرها المنصات المتوازية الضخمة الحديثة لمثل هذه المهام. وقد صُممت خوارزميات متنوعة خصيصًا لهذا الغرض، بما في ذلك bcrypt و scrypt ، ومؤخرًا Lyra2 و Argon2 (التي فازت في مسابقة تجزئة كلمات المرور ). وقد أبرز اختراق بيانات موقع Ashley Madison واسع النطاق، والذي سُرقت فيه حوالي 36 مليون تجزئة لكلمات المرور، أهمية اختيار الخوارزمية المناسبة في تأمين كلمات المرور. على الرغم من استخدام خوارزمية bcrypt لحماية التجزئات (مما يجعل اختراق كلمات المرور باستخدام القوة الغاشمة على نطاق واسع مكلفًا ويستغرق وقتًا طويلاً)، إلا أن جزءًا كبيرًا من الحسابات في البيانات المخترقة احتوى أيضًا على تجزئة لكلمات المرور تعتمد على خوارزمية MD5 السريعة والعامة وغير الآمنة ، مما مكّن من اختراق أكثر من 11 مليون كلمة مرور في غضون أسابيع. [ 6 ]
في يونيو 2017، أصدر المعهد الوطني الأمريكي للمعايير والتكنولوجيا (NIST) مراجعة جديدة لإرشاداته الخاصة بالمصادقة الرقمية، NIST SP 800-63B-3، [ 7 ] : 5.1.1.2، تنص على ما يلي: "يجب على أدوات التحقق تخزين الأسرار المحفوظة [أي كلمات المرور] بشكل مقاوم للهجمات غير المتصلة بالإنترنت. يجب إضافة قيمة عشوائية (Salt) إلى الأسرار المحفوظة وتشفيرها باستخدام دالة اشتقاق مفتاح أحادية الاتجاه مناسبة. تأخذ دوال اشتقاق المفتاح كلمة المرور، وقيمة عشوائية (Salt)، وعامل تكلفة كمدخلات، ثم تُنشئ تجزئة لكلمة المرور. والغرض منها هو جعل كل محاولة لتخمين كلمة المرور من قِبل مهاجم حصل على ملف تجزئة كلمة المرور مكلفة، وبالتالي تكون تكلفة هجوم التخمين مرتفعة أو باهظة."
تعتمد دوال اشتقاق المفاتيح الحديثة القائمة على كلمات المرور، مثل PBKDF2 ، [ 2 ] على تجزئة تشفيرية معترف بها، مثل SHA-2 ، وتستخدم كمية أكبر من الملح (64 بت على الأقل ويتم اختيارها عشوائيًا) وعددًا كبيرًا من التكرارات. توصي NIST بحد أدنى لعدد التكرارات يبلغ 10000. [ 7 ] : 5.1.1.2 "بالنسبة للمفاتيح بالغة الأهمية، أو للأنظمة فائقة القدرة، أو الأنظمة التي لا يمثل فيها الأداء الذي يلاحظه المستخدم أمرًا بالغ الأهمية، قد يكون عدد التكرارات البالغ 10,000,000 مناسبًا." [ 8 ] : 5.2
اشتقاق المفتاح
يُستخدم اشتقاق المفاتيح (KDF) في الأصل لتوليد المفاتيح من كلمات المرور أو عبارات المرور السرية. ومن بين الصيغ المختلفة لهذا المفهوم:
- بالاقتران مع معلمات غير سرية لاستخلاص مفتاح واحد أو أكثر من قيمة سرية مشتركة (وهو ما يُشار إليه أحيانًا باسم " تنويع المفاتيح "). قد يمنع هذا الاستخدام المهاجم الذي يحصل على مفتاح مُستخلص من معرفة معلومات مفيدة حول القيمة السرية المُدخلة أو أي من المفاتيح المُستخلصة الأخرى. كما يمكن استخدام دالة اشتقاق المفاتيح لضمان امتلاك المفاتيح المُستخلصة لخصائص مرغوبة أخرى، مثل تجنب "المفاتيح الضعيفة" في بعض أنظمة التشفير المُحددة.
- باعتبارها مكونات لبروتوكولات اتفاقية المفاتيح متعددة الأطراف . ومن أمثلة وظائف اشتقاق المفاتيح هذه KDF1، المحددة في معيار IEEE 1363-2000 ، ووظائف مماثلة في ANSI X9.42.
- لاستخراج المفاتيح من كلمات المرور السرية أو عبارات المرور ( KDF القائم على كلمة المرور ).
- لاستخلاص مفاتيح بأطوال مختلفة من المفاتيح المُقدمة. تشمل دوال اشتقاق المفاتيح (KDFs) المصممة لهذا الغرض HKDF وSSKDF. تأخذ هذه الدوال سلسلة بتات "info" كمعامل "info" اختياري إضافي، والذي قد يكون بالغ الأهمية لربط مادة المفتاح المستخلص بمعلومات خاصة بالتطبيق والسياق. [ 9 ]
- تمارين تمديد وتقوية المفاتيح الرئيسية.
تمديد وتقوية المفاتيح
تُستخدم دوال اشتقاق المفاتيح أيضًا في التطبيقات لاشتقاق المفاتيح من كلمات المرور أو عبارات المرور السرية، والتي عادةً ما تفتقر إلى الخصائص المطلوبة لاستخدامها مباشرةً كمفاتيح تشفير. في مثل هذه التطبيقات، يُنصح عمومًا بجعل دالة اشتقاق المفاتيح بطيئة عمدًا لإحباط هجمات القوة الغاشمة أو هجمات القاموس على قيمة كلمة المرور أو عبارة المرور المُدخلة.
يمكن التعبير عن هذا الاستخدام بالصيغة التالية: DK = KDF(key, salt, iterations) ، حيث DK هو المفتاح المُشتق، و KDF هي دالة اشتقاق المفتاح ، وkey هو المفتاح الأصلي أو كلمة المرور، وsalt هو رقم عشوائي يعمل كملح تشفير ، و iterations تشير إلى عدد تكرارات الدالة الفرعية. يُستخدم المفتاح المُشتق بدلاً من المفتاح الأصلي أو كلمة المرور كمفتاح للنظام. تُخزَّن قيم الملح وعدد التكرارات (إن لم يكن ثابتًا) مع كلمة المرور المُجزأة، أو تُرسَل كنص عادي (غير مُشفَّر) مع رسالة مُشفَّرة. [ 10 ]
تزداد صعوبة هجوم القوة الغاشمة مع ازدياد عدد التكرارات. ويُعدّ عدم رغبة المستخدمين في تحمّل أي تأخير ملحوظ في تسجيل الدخول إلى الحاسوب أو رؤية رسالة مُفكّكة حدًّا عمليًّا لعدد التكرارات. ويمنع استخدام الملح (Salt) المهاجمين من حساب قاموس المفاتيح المُشتقة مسبقًا. [ 10 ]
يُقدّم أسلوب بديل، يُسمى تقوية المفتاح ، إضافة قيمة عشوائية (ملح) إلى المفتاح، ثم يقوم (على عكس تمديد المفتاح) بحذف هذه القيمة بشكل آمن. [ 11 ] وهذا يُجبر كلاً من المُهاجم والمستخدمين الشرعيين على إجراء بحث شامل عن قيمة الملح. [ 12 ] على الرغم من أن الورقة البحثية التي قدّمت تمديد المفتاح [ 13 ] أشارت إلى هذه التقنية السابقة واختارت اسمًا مختلفًا عن قصد، إلا أن مصطلح "تقوية المفتاح" يُستخدم الآن غالبًا (وربما بشكل غير صحيح) للإشارة إلى تمديد المفتاح.
تشفير كلمات المرور
على الرغم من استخدامها الأصلي في اشتقاق المفاتيح، إلا أن دوال اشتقاق المفاتيح (KDFs) ربما تشتهر أكثر باستخدامها في تجزئة كلمات المرور ( التحقق من كلمة المرور عن طريق مقارنة التجزئة )، كما هو الحال في ملف passwd أو ملف كلمات المرور الظلي . يجب أن تكون دوال تجزئة كلمات المرور مكلفة نسبيًا في حالة هجمات القوة الغاشمة، وقد صُممت دوال اشتقاق المفاتيح مع مراعاة هذه الخاصية. [ 14 ] تُسمى المعاملات غير السرية " ملحًا " في هذا السياق.
في عام 2013، أُعلن عن مسابقة لتجزئة كلمات المرور لاختيار خوارزمية جديدة ومعيارية لتجزئة كلمات المرور. وفي 20 يوليو 2015، انتهت المسابقة وأُعلن عن فوز خوارزمية Argon2 . وحصلت أربع خوارزميات أخرى على تقدير خاص: Catena و Lyra2 وMakwa و yescrypt . [ 15 ]
اعتبارًا من مايو 2023، يوصي مشروع أمان التطبيقات العالمية المفتوحة (OWASP) بخوارزميات KDF التالية لتجزئة كلمات المرور، مرتبة حسب الأولوية: [ 16 ]
- Argon2id
- scrypt إذا كان Argon2id غير متاح
- bcrypt للأنظمة القديمة
- PBKDF2 إذا كان الامتثال لمعيار FIPS-140 مطلوبًا
مراجع
- ^ بزي، ميشيل. وآخرون . (2011). "خصوصية البيانات" . في كامينيش، يناير؛ وآخرون . (محرران). الخصوصية وإدارة الهوية مدى الحياة . سبرينغر. ص 185 – 186. ISBN 9783642203176.
- 1 2 ب. كاليسكي؛ أ. روش (يناير 2017). ك. موريارتي (محرر). PKCS #5: مواصفات التشفير القائم على كلمات المرور، الإصدار 2.1 . فريق عمل هندسة الإنترنت . doi : 10.17487/RFC8018 . ISSN 2070-1721 . RFC 8018 . للعلم فقط. يلغي هذا المعيار RFC 2898. تم تحديثه بواسطة RFC 9579 .
- ↑ تشين، ليلي (أكتوبر 2009). "NIST SP 800-108: توصية لاشتقاق المفاتيح باستخدام الدوال شبه العشوائية" . NIST.
- ↑ زدزيارسكي، جوناثان (2012). اختراق تطبيقات نظام التشغيل iOS وتأمينها: سرقة البيانات، واختطاف البرامج، وكيفية منع ذلك . دار نشر أورايلي ميديا. الصفحات 252-253 . ISBN 9781449318741.
- ↑ موريس، روبرت؛ طومسون، كين (3 أبريل 1978). "أمن كلمات المرور: دراسة حالة" . مختبرات بيل . مؤرشف من الأصل في 22 مارس 2003. تم الاطلاع عليه في 9 مايو 2011 .
- ↑ غودين، دان (10 سبتمبر 2015). "كلمات مرور موقع آشلي ماديسون، التي كانت تُعتبر في السابق منيعة، تم اختراق أكثر من 11 مليون كلمة مرور" . آرس تكنيكا . تاريخ الاسترجاع: 10 سبتمبر 2015 .
- 1 2 غراسي بول أ. (يونيو 2017). SP 800-63B-3 – إرشادات الهوية الرقمية، والمصادقة، وإدارة دورة الحياة . المعهد الوطني للمعايير والتكنولوجيا. doi : 10.6028/NIST.SP.800-63b .
- ↑ ميلتيم سونميز توران؛ إيلين باركر؛ ويليام بور؛ ليلي تشين (ديسمبر 2010). SP 800-132 – توصية بشأن اشتقاق المفاتيح باستخدام كلمات المرور، الجزء 1: تطبيقات التخزين (ملف PDF) . المعهد الوطني للمعايير والتكنولوجيا (NIST). doi : 10.6028/NIST.SP.800-132 . S2CID 56801929 .
- ^ كراوزيك ، هوغو. إيرونين ، باسي (مايو 2010). "إدخال المعلومات إلى HKDF" . datatracker.ietf.org .RFC 5869 (2010)
- 1 2 "تجزئة كلمات المرور باستخدام الملح - القيام بذلك بشكل صحيح" . CrackStation.net . تم الاطلاع عليه بتاريخ 29 يناير 2015 .
- ↑ عبادي، مارتن، تي. مارك أ. لوماس، وروجر نيدهام. "تعزيز كلمات المرور". مركز أبحاث الأنظمة الرقمية، تقرير فني 33 (1997): 1997.
- ↑ يو. مانبر، "مخطط بسيط لجعل كلمات المرور القائمة على الدوال أحادية الاتجاه أكثر صعوبة في الاختراق"، الحواسيب والأمن، المجلد 15، العدد 2، 1996، الصفحات 171-176.
- ↑ تطبيقات آمنة لمفاتيح منخفضة الإنتروبيا ، ج. كيلسي ، ب. شناير ، س. هول، و د. فاغنر (1997)
- ↑ المعهد الوطني للمعايير والتكنولوجيا (NIST) (ديسمبر 2010). توصية بشأن اشتقاق المفاتيح باستخدام كلمات المرور (ملف PDF) (تقرير). منشور خاص. المجلد 800-132 . NIST.
- ↑ "مسابقة تجزئة كلمات المرور"
- ↑ "دليل مختصر لتخزين كلمات المرور" . سلسلة أدلة OWASP المختصرة . OWASP . تم الاطلاع عليه بتاريخ 17 مايو 2023 .
للمزيد من القراءة
- بيرسيفال، كولين (مايو 2009). "اشتقاق مفاتيح أقوى عبر وظائف الذاكرة المتسلسلة الصعبة" (ملف PDF) . عرض تقديمي في مؤتمر BSDCan'09 . تم الاطلاع عليه بتاريخ 19 مايو 2009 .
- دوال الاشتقاق الرئيسية
- الإدارة الرئيسية
- دوال الاشتقاق الرئيسية
