انتقل إلى المحتوى
HexaTransfer
العودة إلى المدونة
التشفير والأمان

شرح دوال التجزئة: تحقق من سلامة الملفات ببساطة

دوال التجزئة ضرورية للتحقق من سلامة الملفات بعد النقل. تعلم كيف يضمن SHA-256 وMD5 وصول ملفاتك دون تغيير.

دالة التجزئة تأخذ أي مدخل وتنتج مخرجاً بحجم ثابت — SHA-256 يُخرج دائماً 256 بتاً (32 بايت) بصرف النظر عن كون المدخل تغريدة أو مقطع فيديو بحجم 10 جيجابايت. غيّر بتاً واحداً في المدخل وستنقلب قرابة نصف بتات المخرج. هذه الخاصية أحادية الاتجاه والحتمية تجعل دوال التجزئة الأداة المثلى للتحقق من سلامة الملفات: احسب SHA-256(file) قبل الإرسال ثم أعد الحساب بعد الاستقبال، فإن تطابق الناتجان وصل الملف سليماً. هكذا تتحقق توزيعات Linux من صور ISO، وهكذا يعرّف Git الإيداعات (commits)، وهكذا تؤكد خدمات مثل HexaTransfer اكتمال رفع الملفات الضخمة دون تلف.

ما الذي تضمنه دالة التجزئة

ثلاث خصائص تُعرّف دالة التجزئة المشفَّرة:

  • الحتمية. المدخل ذاته يُنتج دائماً المخرج ذاته. SHA-256("hello") يُعطي دائماً 2cf24dba5fb0a30e....
  • مقاومة الصورة الأصلية (Pre-image resistance). بمعرفة التجزئة لا يمكنك كشف المدخل الذي أنتجها.
  • مقاومة التصادم (Collision resistance). لا يمكنك إيجاد مدخلَين مختلفَين ينتجان التجزئة ذاتها.

إضافةً إلى سلوكَين مفيدَين:

  • تأثير الانهيار (Avalanche effect). تغيير بت واحد يقلب نحو 50% من بتات المخرج، مما يجعل التجزئة غير مجدية للبحث لكنها ممتازة للبصمة الرقمية.
  • حجم مخرج ثابت. SHA-256 دائماً 32 بايت، وSHA-512 دائماً 64 بايت، وBLAKE2b دائماً 64 بايت، بغض النظر عن حجم المدخل.

دوال التجزئة ليست تشفيراً؛ فهي أحادية الاتجاه ولا يمكن استرداد المدخل منها. هذا هو هدفها بالضبط.

عائلة SHA

عائلة خوارزميات التجزئة الآمنة الصادرة عن NIST وفق المعيارَين FIPS 180-4 وFIPS 202:

  • SHA-1 — 160 بتاً، انهارت عام 2017 بهجوم SHAttered من Google. لا تستخدمها لأغراض أمنية.
  • SHA-2 (SHA-224، SHA-256، SHA-384، SHA-512). العمود الفقري للأنظمة الحديثة، ويهيمن SHA-256 على الاستخدامات.
  • SHA-3 (Keccak). بنية مختلفة (إسفنجية لا Merkle-Damgård)، أُقرّت عام 2015 كضمان احتياطي ضد نقاط ضعف SHA-2 التي لم تتجلَّ حتى الآن.

يُستخدم SHA-256 في توقيع شهادات TLS وتعدين Bitcoin وأدوات Git، وفي فحوصات سلامة خدمات نقل الملفات. الإنتاجية على المعالجات الحديثة المزوّدة بامتدادات SHA: 2–4 جيجابايت/ثانية لكل نواة.

لماذا MD5 وSHA-1 ماتا أمنياً

أنتج MD5 (1991) تجزئات بطول 128 بتاً وكان المعيار المعتمد حتى إثبات التصادمات فيه عام 2004. بحلول 2012 استغلت برمجية Flame الخبيثة هجوم تصادم MD5 لتزوير شهادات توقيع كود Microsoft. اليوم يمكن توليد تصادمات MD5 في ثوانٍ على حاسوب محمول عادي.

صمد SHA-1 أطول لكنه سقط أمام هجوم SHAttered عام 2017 الذي أنتج ملفَّي PDF بتجزئة SHA-1 متطابقة بعد 110 سنة-GPU من الحوسبة — وأصبح قابلاً للتكرار بأقل من 100,000 دولار على GPU سحابية.

كلاهما مقبولان للاستخدامات غير الأمنية: الكشف عن التلف العَرضي وإزالة التكرار في التخزين وبصمة مفاتيح الكاش. لكن لا يصلحان للتوقيعات الرقمية أو التحقق من كلمات المرور أو أي سياق يستفيد فيه المهاجم من تزوير تطابق.

BLAKE2 وBLAKE3: السرعة مع الأمان

يوفر BLAKE2 (2012) وBLAKE3 (2020) مستوى أمان SHA-3 بسرعة تتراوح بين 2 و10 أضعاف SHA-256. يبلغ BLAKE3 نحو 6 جيجابايت/ثانية أحادي الخيط ويتوازى خطياً عبر الأنوية — يمكن لجهاز 16 نواة أن يصل إلى أكثر من 100 جيجابايت/ثانية.

التبني في تصاعد: يستخدم WireGuard تحديداً BLAKE2s للمصادقة، ويستخدم Zcash تحديداً BLAKE2b، ويتحول b3sum تدريجياً بديلاً شائعاً لـ sha256sum في أدوات المطورين. خدمات نقل الملفات التي تعالج رفعاً بحجم جيجابايت تتجه نحو BLAKE3 لتفادي كون حساب التجزئة هو عنق الزجاجة.

المتصفحات لا تعرض BLAKE3 عبر Web Crypto API بعد، لذا تعتمد تطبيقات JavaScript على كود مرجعي مُجمَّع بـ WASM بسرعة نحو 500 ميجابايت/ثانية في المتصفح.

دوال التجزئة في سير عمل نقل الملفات

مواضع عدة تُثبت فيها دوال التجزئة جدارتها:

  • فحص السلامة بعد الرفع. يحسب العميل SHA-256 أثناء الرفع ويحسبه الخادم عند الاستقبال، وأي تعارض يُطلق إعادة الرفع. تستخدم S3 تحديداً MD5 لهذا الغرض إذ تفوق السرعة مقاومة التصادم ضد التلف السلبي.
  • التحقق من رفع المقاطع. تُقسَّم الملفات الكبيرة إلى مقاطع بحجم 4 أو 5 ميجابايت، وكل مقطع يحصل على تجزئة، وشجرة من التجزئات (Merkle tree) تنتج تجزئة جذر واحدة للملف كله.
  • إزالة التكرار. إن رفع مستخدمان الملف ذاته تتطابق التجزئات ويُخزَّن الملف مرة واحدة. يستخدم Dropbox هذا الأسلوب في إزالة التكرار على مستوى الكتل.
  • التحقق من التنزيل. بعض الخدمات تعرض SHA-256 في صفحة التنزيل ليتمكن المستلمون من التحقق.
  • التعريف بالإصدار. يستخدم Git تجزئة SHA-1 (في طور الانتقال إلى SHA-256) لمعرّفات الإيداع — محتوى الملف يحدد هويته.

امتداد HMAC

التجزئة البسيطة تتحقق من السلامة لكن ليس من الأصالة — يستطيع أي شخص حساب SHA-256(file). إضافة مفتاح سري تحوّل التجزئة إلى رمز مصادقة رسالة (MAC): فقط من يملك المفتاح يستطيع توليد MAC أو التحقق منه.

HMAC (RFC 2104) هو البنية المعيارية: HMAC(key, msg) = SHA-256(key' ⊕ opad || SHA-256(key' ⊕ ipad || msg)). يُستخدم في TLS 1.2 وJWT الموقّعة بـ HS256 وتوقيع طلبات AWS وكثير من مخططات الجلسات.

في سياق نقل الملفات يظهر HMAC في وسم المصادقة لـ AES-GCM (الذي يستخدم GHASH لا HMAC لكنه يؤدي الدور ذاته) وفي توقيع طلبات API لبعض الخدمات.

أشجار Merkle: التجزئة على نطاق واسع

لتجزئة ملفات ضخمة جداً أو مجموعات ملفات، إعادة تجزئة كل شيء في كل مرة مضيعة للموارد. تُرتّب شجرة Merkle التجزئات في شجرة ثنائية: الأوراق هي تجزئات المقاطع، والعقد الداخلية هي تجزئات أبنائها، والتجزئة الجذر تُمثّل مجموعة البيانات بأكملها.

الفوائد:

  • تحديثات فعّالة. تغيير مقطع واحد يستلزم إعادة تجزئة log(n) عقدة فحسب.
  • إثبات الاشتمال. يمكن إثبات أن مقطعاً محدداً ينتمي إلى الجذر بـ log(n) تجزئة أشقاء فقط.
  • الحوسبة الموازية. الفروع تُجزَّأ بشكل مستقل.

تستخدمها BitTorrent (الإصدار 2+) وIPFS في عنونة المحتوى وكائنات شجرة Git وسجلات شفافية الشهادات وجذور معاملات البلوكتشين. تستخدم خدمات نقل الملفات أشجار Merkle للرفع القابل للاستئناف حيث تحتاج الأجزاء المرفوعة جزئياً إلى التحقق منها مقارنةً بالأصل.

كلمات المرور ودوال التجزئة

من تطبيقات دوال التجزئة تحويل كلمات المرور إلى قيم آمنة للتخزين. تجزئة SHA-256(password) البسيطة غير كافية — مزارع GPU تحسب مليارات عمليات SHA-256 في الثانية، فأي كلمة مرور شائعة تسقط فوراً.

دوال تجزئة مخصصة لكلمات المرور تضيف تكلفة حوسبة:

  • PBKDF2-HMAC-SHA-256 بـ 600,000 تكرار (OWASP 2023).
  • bcrypt بعامل تكلفة 12 (نحو 250 مللي ثانية لكل تجزئة).
  • scrypt بصرامة الذاكرة لمقاومة GPU.
  • Argon2id — أفضل الممارسات الحالية، صارم في استخدام الذاكرة ومقاوم للتوازي.

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

التحقق من تنزيل بشكل يدوي

يمكن التحقق من أي ملف مهم باستخدام أدوات سطر الأوامر. على macOS أو Linux:

shasum -a 256 ubuntu-24.04.iso

على Windows PowerShell:

Get-FileHash ubuntu-24.04.iso -Algorithm SHA256

قارن المخرج بالتجزئة المنشورة على ubuntu.com. إن تطابقا نُزِّل الملف سليماً ومطابقاً لما وقّعته Canonical. إن اختلفا فإما أن التنزيل تلف أو أن أحدهم استبدل الملف.

للثقة القصوى، تحقق من توقيع ملف التجزئة نفسه باستخدام GPG ومفتاح توقيع Canonical. السلسلة متعددة الخطوات — ملف تجزئة موقَّع، ثم تجزئة الملف، ثم الملف نفسه — هي الطريقة التي صانت توزيعات Linux الثقة لعقود.

التحقق من معالجة خدمة النقل للسلامة

أربعة أسئلة تستحق أن تطرحها على أي مزوّد لنقل الملفات:

  • ما خوارزمية التجزئة التي تستخدمونها للتحقق من الرفع؟ (SHA-256 أو BLAKE3 ممتازان؛ MD5 مقبول لفحوصات التلف فقط؛ الصمت إشارة تحذيرية.)
  • هل تعرضون التجزئة للمستلم؟ (ليس الجميع يفعل، لكنه أمر مُقدَّر.)
  • هل تستخدمون Merkle tree للتحقق من الرفع المجزّأ؟
  • هل ثمة طريقة لمقارنة التجزئات عبر نقاط النهاية؟

تحسب كل من SwissTransfer وTresorit وProton Drive وHexaTransfer تجزئة SHA-256 أثناء النقل وتتحقق منها عند الوصول. أخطاء السلامة تُطلق إعادة رفع المقاطع المتأثرة تلقائياً بدلاً من إفشال النقل بأكمله.

تطبيق عملي

في نقلك الحساس التالي: احسب shasum -a 256 file.pdf قبل الرفع واحفظ التجزئة، واطلب من المستلم فعل الشيء ذاته بعد التنزيل. تطابق التجزئتين يُثبت السلامة على مستوى البايت. ثلاثون ثانية من العمل تكشف التلف والتلاعب وشبكة CDN ذات الإعداد الخاطئ.

جرّبها على hexatransfer.com — مجاني، بدون حساب، حتى 10 جيجابايت.

أرسل ملفات كبيرة بأمان مع تشفير من طرف إلى طرف

انقل ملفات حتى 10 جيجابايت مجاناً مع تشفير من طرف إلى طرف. لا حاجة لحساب. يتم تشفير ملفاتك في متصفحك قبل الرفع — لا أحد آخر يستطيع قراءتها.

إرسال ملف