TK
أدوات المطورين

حساب SHA-1

احسب SHA-1 (160 بت) لأي نص أو ملف في متصفحك. تستخدمه git لمعرّفات الـ commits وبعض الشهادات القديمة. غير مناسب أمنياً اليوم؛ البديل الحديث هو SHA-256.

الإدخال
Hashes
الصق نصاً لحساب MD5 و SHA-1 و SHA-256 و SHA-384 و SHA-512.

إدخالاتك تبقى على جهازك. كل أدوات المطورين في TaskKit تعمل في متصفحك. الرموز والـ payloads وما تلصقه لا يُرسل لخوادم TaskKit ولا لأي طرف ثالث.

ما الذي تفعله هذه الأداة

تحسب تجزئة SHA-1 لأي نص أو ملف داخل متصفحك، وتُعيد ناتجاً ست عشرياً بطول 40 رمزاً. SHA-1 دالة تجزئة بطول 160 بت نشرها NIST عام 1995 (FIPS 180-1)، صمّمتها NSA. هي مهجورة لأغراض الأمان: عرض Google و CWI Amsterdam هجوم تصادم عملي («SHAttered») عام 2017، تبعته تصادمات chosen-prefix عام 2019. لم يعد SHA-1 يُعدّ آمناً تشفيرياً.

أين لا يزال SHA-1 مستخدماً

  • معرّفات كائنات git. يُعرَّف كل commit و tree و blob في git بتجزئة SHA-1 الخاصة به. نموذج كائنات git يتحوّل إلى SHA-256 (راية --object-format=sha256 متاحة)، لكن SHA-1 لا يزال الافتراضي للأغلبية الساحقة من المستودعات. مخاطرة التصادم لمعرّفات الـ commit حقيقية لكنها مُدارة: ينشر GitHub وغيره من المنصّات كشفاً على نسق SHAttered (مكتبة sha1dc) ليُعلِم بالتصادمات المُجهَّزة.
  • Subversion (SVN). نفس التبرير الموجود في git، مع جهد ترحيل أقل.
  • شهادات TLS الأقدم. أوقفت المتصفحات الثقة بالشهادات المُوقَّعة بـ SHA-1 عام 2017، لكن الأنظمة القديمة لا تزال تنتجها.
  • الكود القائم الذي يُجزِّئ لأغراض غير أمنية. مفاتيح ذاكرة التخزين، البصمات، جداول إزالة التكرار — كلها مقبولة.

أين لا يصلح SHA-1

  • شهادات TLS الجديدة، شهادات توقيع الكود، أو تواقيع الوثائق. استخدم SHA-256 أو SHA-384.
  • تخزين كلمات السر. استخدم تجزئة بطيئة ومُملَّحة مثل bcrypt أو Argon2. SHA-1 سريع جداً وغير مصمَّم لذلك.
  • أي شيء يستطيع المهاجم اختيار مدخله فيه. يستطيع مهاجم بعنقود مستأجَر إنتاج تصادم SHA-1 خلال أيام. إن سمح نموذجك الأمني للمهاجم بالتأثير في ما يُجزَّأ، فإن SHA-1 مكسور.
  • Subresource Integrity (SRI). ستقبل المتصفحات SHA-1 في خاصية integrity، لكن المواصفة توصي بـ SHA-256 كحدّ أدنى.

متجهات الاختبار

من FIPS 180-2 ومجموعة مرجعية لـ SHA-1:

  • السلسلة الفارغة ""da39a3ee5e6b4b0d3255bfef95601890afd80709
  • "abc"a9993e364706816aba3e25717850c26c9cd0d89d
  • "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"84983e441c3bd26ebaae4aa1f95129e5e54670f1
  • "The quick brown fox jumps over the lazy dog"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

ملاحظات

لماذا 40 رمزاً؟ يُنتج SHA-1 ‎160 بت = 20 بايت. 20 بايت × 2 رمز ست عشري لكل بايت = 40 رمزاً مرئياً.

لماذا يستخدم git خوارزمية SHA-1 إن كانت مكسورة؟ يستخدم git خوارزمية SHA-1 معرِّفاً معنوناً بالمحتوى، لا أساساً أمنياً. نموذج التهديد هو «كائنان حسنا التشكيل يتصادمان عرضاً»، وهو ما يبقى بعيد الاحتمال فلكياً. النموذج ليس «مهاجم يدفع commit خبيثاً بنفس تجزئة commit حقيقي» — لذلك تنشر GitHub وأمثالها sha1dc لرصد تجهيزات على نسق SHAttered ورفضها. الترحيل إلى SHA-256 يجري لكن ببطء لأن قاعدة التركيب ضخمة.

لماذا تختلف تجزئة SHA-1 لديّ عمّا يُظهره sha1sum؟ سطر جديد في النهاية. echo "hello" | sha1sum يُضمّن \n. لصق «hello» هنا لا يضيفه. استخدم echo -n أو منتقي الملفات.

أدوات ذات صلة

  • مولّد التجزئة — التجزئات الخمس جنباً إلى جنب
  • SHA-256 — البديل الحديث لـ SHA-1
  • MD5 — السلف؛ مكسور بصورة أعمق