العربية

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

هجمات التمديد الطويلة: لماذا SHA-256(سر + رسالة) ليس MAC

· لماذا يهم

شا-256 التشفير حماية

يتم توسيع كتلة الحالة SHA-256 بالبايتات الإضافية لتكوين تجزئة صالحة
الرسم التوضيحي المتجه الأصلي ToolAcre

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

توقيع الطلب محلي الصنع - التجزئة (سر + نص) ولماذا يشعر بالأمان

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

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

تقوم Merkle – Damgård بتسريب حالتها – الملخص النهائي هو الحالة الداخلية، بحيث يمكن للمهاجم الاستمرار في التجزئة من حيث توقفت

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

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

كيف يعمل الامتداد - إلحاق الحشو والبيانات الإضافية لتكوين تجزئة صالحة لرسالة أطول

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

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

تعرض الإنشاءات المدعومة SHA-1 وSHA-256 وSHA-512 الحالة الكاملة؛ يؤدي الاقتطاع SHA-384 إلى تغيير حدود الامتداد

الإصلاح الخاص بمصادقة الرسائل ذات السر المشترك هو HMAC، رمز مصادقة رسالة التجزئة ذات المفاتيح. HMAC لا يسبق السر والتجزئة؛ بدلاً من ذلك، فإنه يطبق السر في عمليتين تجزئة متداخلتين باستخدام أنظمة حشو محددة تسمى الوسادات الداخلية والخارجية. البناء هو HMAC(سرية، رسالة) = SHA256(secret_XOR_outer_pad، SHA256(secret_XOR_inner_pad، رسالة)). يعمل هذا الأسلوب المتداخل على سد فجوة تمديد الطول لأنه حتى إذا كان لدى المهاجم ملخص التجزئة الداخلية، فلن يتمكن من الاستمرار في التجزئة بدون السر.

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

HMAC كحل - البناء المتداخل الذي يسد الفجوة وسبب اعتباره الإجابة القياسية

مثال مفاهيمي لتمديد الطول يعمل على ناقل الاختبار المألوف ABC. تؤدي عملية حساب SHA-256 على النص ASCII إلى إنتاج الملخص ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. لنفترض أن هذا الملخص هو نتيجة تجزئة Secret + abc مع سر يبلغ 5 بايت، مما يوفر إجمالي 8 bytes من المدخلات. يعالج SHA-256 الإدخال في كتل تبلغ 64 بايت، لذلك تم ملء الكتلة الأولى والوحيدة بطول الرسالة ووحدات البايت الأخرى. يرى المهاجم الملخص ويريد تزوير رسالة تبدأ بـ abc متبوعة ببيانات إضافية.

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

مثال عملي — شرح تفصيلي لتوسيع رسالة موقعة، بدون هدف مباشر

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

يتضمن النطاق الكامل لهذه المشكلة الخوارزميات الأخرى التي يوفرها المتصفح. SHA-1 عرضة لتمديد الطول وقد تم كسر تشفيره بالفعل قبل أن يصبح ذلك ذا صلة. تقوم الآلة الحاسبة ToolAcre بتسمية SHA-1 على أنها قديمة فقط وتشرح هجمات التصادم التي جعلتها غير مناسبة للتطبيقات الجديدة. بالنسبة للتطبيقات الجديدة، SHA-256 هو الاختيار المعقول للملخصات البسيطة، وإذا كانت المصادقة مطلوبة، فإن HMAC مع SHA-256 هو الحل. SHA-384 وSHA-512 كلاهما عرضة للاختراق، ولكن SHA-384 محمي بالاقتطاع.

ما لا يغطيه هذا — الآلة الحاسبة ToolAcre تحسب الملخصات البسيطة، وليس HMAC؛ يشرح المنشور سبب أهمية هذا التمييز

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

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

الخلاصة: استخدم MAC للمصادقة - حاسبة التجزئة ToolAcre SHA مخصصة لملخصات التكامل؛ تحتاج المصادقة إلى HMAC أو التوقيع

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

تجسد حاسبة التجزئة ToolAcre SHA هذا التعليم: فهي توفر ملخصات بسيطة للتعلم وللاستخدامات المشروعة غير المصادقة، وتصنف SHA-1 كإرث، ولا تنفذ HMAC لأن هذه العملية تنتمي إلى سياق مختلف. عندما يلجأ المطورون إلى آلة حاسبة تجزئة عادية لمصادقة الطلب، فإن موضع الأداة ووثائقها يرشدهم نحو HMAC والتوقيعات باعتبارها الأدوات المناسبة. تركز مجموعة أدوات ToolAcre على ما يوفره Web Crypto للمتصفح بشكل مباشر وتشرح الحدود التي يكون فيها كل عنصر بدائي مناسبًا.