العربية

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

تجزئة التشفير مقابل المجموع الاختباري: ما لا يمكن أن يعد به CRC32 وxxHash

· خلفية

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

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

CRC32، FNV وxxHash هي تجزئات أيضًا، لكنها لا تقدم أي وعد ضد الخصم. يشرح هذا المنشور ما يفصل تجزئات التشفير عن المجاميع الاختبارية وكيفية الاختيار حسب حالة الاستخدام.

أي تجزئة لأي وظيفة؟ - الاختيار بين السرعة والسلامة العدائية

تأتي وظائف التجزئة في ثلاث فئات: المجموع الاختباري لاكتشاف الأخطاء العرضية، والتجزئة غير المشفرة للتوزيع والأداء، والتجزئة المشفرة للأمان. كل فئة لها ضمانات مختلفة ومقايضات مختلفة من حيث السرعة وحجم الهضم. المجموع الاختباري مثل CRC32 سريع وقصير (4 bytes، 8 أحرف سداسية عشرية) ولكنه لا يوفر أي حماية ضد التعديل المتعمد. تعتبر التجزئة غير المشفرة مثل xxHash أو MurmurHash سريعة أيضًا ومفيدة لجداول التجزئة وتوزيع البيانات، ولكنها لا توفر أي حماية ضد الخصم الذي يريد التسبب في تصادم. تعد التجزئة المشفرة مثل SHA-256 أبطأ وتنتج ملخصًا أطول (32 bytes، 64 أحرف سداسية عشرية)، ولكنها توفر مقاومة أولية للصورة ومقاومة الاصطدام - وهي خصائص أمان تحمي من أي خصم.

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

المجاميع الاختبارية للأخطاء العرضية — تصميم CRC لاكتشاف تقلب البتات أثناء الإرسال

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

CRC حتمية ولكنها ليست تشفيرية. بالنظر إلى الملف وCRC32، يمكن للمهاجم تعديل الملف وإعادة حساب CRC32 لمطابقة القيمة المتوقعة. بالنسبة لخصم لديه معرفة بـ CRC، يكون تصنيع الاصطدام أمرًا مباشرًا. لم يكن المقصود من CRC أبدًا مقاومة التعديل المتعمد؛ إنه مخصص فقط لاكتشاف الأخطاء العرضية. تستخدم الأنظمة التاريخية مثل ملفات ZIP وملفات JPEG CRC لهذا الغرض. تستخدم البروتوكولات الحديثة CRC للكشف السريع عن الأخطاء داخل القنوات المشفرة أو المعتمدة، وليس كفحص مستقل للتكامل.

التجزئة غير المشفرة للتوزيع — FNV، MurmurHash وxxHash في جداول التجزئة والتقسيم

تم تصميم التجزئة غير المشفرة مثل FNV-1a وMurmurHash وxxHash لتحقيق السرعة والتوحيد في جداول التجزئة وتقسيم البيانات. تتميز بزمن وصول منخفض للغاية ويتم استخدامها في المواقف التي تحتاج فيها إلى تقسيم البيانات عبر الخوادم أو المجموعات دون الاهتمام بخصائص الأمان. إذا كنت تقوم بإنشاء ذاكرة تخزين مؤقت وتحتاج إلى تعيين مفتاح لرقم المجموعة، فإن التجزئة السريعة مناسبة. تم تصميم MurmurHash بشكل صريح لاستخدام جدول التجزئة وهو أسرع من SHA على معظم الأجهزة. يعد xxHash أحدثًا ويعمل على تحسين وحدات المعالجة المركزية الحديثة ذات ذاكرة التخزين المؤقت الكبيرة والتحويل.

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

ما تضيفه تجزئات التشفير - مقاومة الصورة المسبقة والتصادم ضد مهاجم متعمد

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

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

تضيف تجزئة التشفير خصائص عدائية؛ تتجنب هذه المقالة مطالبات السرعة النسبية غير المدعومة

مطابقة خمسة سيناريوهات لعائلة التجزئة الصحيحة: أولاً، إطارات الشبكة المنقولة عبر قناة موثوقة مشفرة باستخدام AES: CRC32 مناسبة. يحمي التشفير من التعديل، ويكتشف CRC التلف العرضي. ثانيًا، جداول التجزئة أو التجزئة المتسقة لموازنة التحميل: التجزئة غير المشفرة مثل xxHash مناسبة. السرعة مهمة، والبيئة موثوق بها. ثالثًا، التحقق من سلامة التنزيل من مصدر غير موثوق به: SHA-256 مطلوب. يمكن للمهاجم تعديل الملف والمجموع الاختباري، ولكن ليس تجزئة التشفير دون كسر SHA-256.

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

مثال عملي - مطابقة خمسة سيناريوهات (إطارات الشبكة، وخرائط التجزئة، والتحقق من التنزيل، والتوقيعات، وإلغاء البيانات المكررة لتحميلات المستخدم) مع العائلة المناسبة

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

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

يظل رسم خرائط السيناريوهات نوعيًا نظرًا لأن سلوك الإنتاجية والتصادم يحتاج إلى أدلة خاصة بالتنفيذ

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

لا تدعم حاسبة التجزئة ToolAcre SHA تجزئة كلمة المرور ولا تقدم عن عمد MD5 ولا معلمات مخصصة ولا تجزئة سريعة. إنها أداة لحساب الملخصات القياسية SHA للتحقق والتحقق من السلامة، وليس للمصادقة أو تخزين كلمات المرور.

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

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

توفر حاسبة التجزئة ToolAcre SHA SHA-1 حتى SHA-512، مما يغطي تجزئات التشفير التي تهم معظم حالات الاستخدام. لا تقدم CRC32 أو xxHash أو MD5 لأن كل واحدة منها هي الاختيار الصحيح في سياقات محددة (CRC لاكتشاف الأخطاء في قناة موثوقة، وxxHash للأداء في بيئة خاضعة للتحكم، ولا شيء لـ MD5)، كما أن تقديمها دون التأكيد على وقت استخدام كل منها من شأنه أن يشجع على ارتكاب الأخطاء. الآلة الحاسبة مخصصة لحساب ملخصات التشفير القياسية. استخدم سطر الأوامر مع `crc32`، `xxh64` أو الأدوات المكافئة إذا كنت بحاجة إلى هذه التجزئات. للتحقق من التنزيل وبصمات الشهادة وعمليات git وحالات الاستخدام المماثلة التي قد يتلاعب فيها الخصم بالبيانات، يمكنك الوصول إلى SHA-256 عبر حاسبة التجزئة ToolAcre SHA.