العربية

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

SHA-256 مقابل SHA-512: حجم الكلمة والجولات ولماذا 512 يمكن أن تكون أسرع

· كيف يعمل

شا-256 التشفير أداء متصفح API

مقارنة جنبًا إلى جنب بين الكلمات 32 بت و64 بت، و64 مقابل 80 جولات، و256، و384 و512 بتات الإخراج
الرسم التوضيحي المتجه الأصلي ToolAcre

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

تجزئة أطول، تشغيل أسرع؟ - الملاحظة غير البديهية التي تبدأ المقارنة

يُنتج SHA-512 ملخصًا أطول ولكنه غالبًا ما يعمل بشكل أسرع من SHA-256 على أجهزة 64 بت. تأتي الملاحظة غير البديهية من تصميم CPU: يقوم المعالج المُحسّن للعمليات الحسابية 64 بت بتنفيذ عمليات 64 بت بشكل أسرع من عمليات 32 بت على نفس البيانات. SHA-256 يعمل على كلمات ذات 32 بت، بينما يعمل SHA-512 على كلمات ذات 64 بت. على 64 بت CPU، يناسب الأخير الأجهزة بشكل أكثر طبيعية ويقضي وقتًا أقل في التحويلات بحجم الكلمة والحشو.

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

32-بت مقابل 64-بت - الفرق الهيكلي الأساسي ولماذا يناسب وحدات المعالجة المركزية الحديثة

SHA-256 يعمل على 32 كلمات ذات بت في جميع أنحاء الخوارزمية. يقوم جدول الرسائل بتوسيع 16 32 كلمات ذات بتات إلى 64 32 كلمات ذات بتات. تقوم كل جولة بتحديث ثمانية متغيرات عمل ذات 32 بت. كتلة الرسالة هي 512 bits (ستة عشر كلمة 32 بت). الإخراج هو 256 bits (ثماني كلمات 32 بت). تتم جميع العمليات الحسابية على قيم 32 بت، مع التفاف الفائض عند 2^32.

SHA-512 يعمل على كلمات ذات 64 بت. يقوم جدول الرسائل بتوسيع 16 64 كلمات ذات بتات إلى 80 64 كلمات ذات بتات (وليس 64، كما في SHA-256). تقوم كل جولة بتحديث ثمانية متغيرات عمل ذات 64 بت. كتلة الرسالة هي 1024 bits (ستة عشر كلمة 64 بت). الإخراج هو 512 bits (ثماني كلمات 64 بت). تتم جميع العمليات الحسابية على قيم 64 بت، مع التفاف الفائض عند 2^64.

64 جولات مقابل 80، 512 كتل مقابل 1024 كتل - ما الذي يتغير لكل كتلة ولكل بايت

SHA-256 يعمل 64 طلقة لكل كتلة؛ SHA-512 يعمل 80 جولات لكل كتلة. وهذا يعني أن SHA-512 يقوم بمزيد من الخلط لكل كتلة. للوهلة الأولى، يبدو هذا أبطأ. لكن حجم الكلمة الأكبر وحجم الكتلة يعني أن SHA-512 يعالج عددًا أكبر من البتات في كل جولة. بالنسبة لملف 1 ميغا بايت، SHA-256 يعالج 1048576 / 512 = 2048 كتل، كل منها بها 64 جولات، بإجمالي 131072 جولة. SHA-512 العمليات 1048576 / 1024 = 1024 كتل، كل منها بها 80 جولة، بإجمالي 81920 جولة. يقوم SHA-512 بإجراء عدد أقل من الجولات إجمالاً، على الرغم من أنه يقوم بعدد أكبر من الجولات لكل كتلة.

يعتمد الاختلاف في وقت ساعة الحائط على تحسين CPU لحجم الكلمة. CPU مع 64 بت ALU (وحدة المنطق الحسابي) ستنفذ عمليات 64 بت بكفاءة. إذا كان يجب على نفس CPU تقسيم عمليات 32 بت SHA-256 إلى عمليات دقيقة متعددة أو تشغيلها على وحدة تنفيذ أصغر، فإن تكلفة كل عملية تكون أعلى. تعمل المعالجات الحديثة على تحسين عمليات 64 بت، مما يجعل SHA-512 أسرع غالبًا على الرغم من الدورات الإضافية لكل كتلة.

يوضح حجم الكتلة والعدد الدائري العمل لكل بايت؛ الإنتاجية الفعلية تحتاج إلى معيار النظام الأساسي

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

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

تؤثر أطوال المخرجات على خصائص التمثيل والأمان دون تقدير عمل الهجوم غير المصدر

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

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

مثال عملي - تجزئة مدخل واحد مع الثلاثة جميعاً ومقارنة أطوال الملخص جنبًا إلى جنب

حجم الإخراج هو التمييز الأكثر وضوحا. SHA-256 ينتج 32 bytes (64 أحرف سداسية عشرية)؛ SHA-384 ينتج 48 bytes (96 أحرف سداسية عشرية)؛ SHA-512 ينتج 64 bytes (128 أحرف سداسية عشرية). للتخزين في عناوين URL أو JSON، تشغل الملخصات الأطول مساحة أكبر. بالنسبة لمقاومة الاصطدام، فإن الإخراج الأطول يجعل العثور على الاصطدامات أكثر صعوبة بشكل كبير. توفر المخرجات الأوسع مساحة نتائج أكبر، في حين أن نتائج المنتج المباشرة أسهل في القياس: المزيد من البايتات في التخزين وعناوين URL وحقول البروتوكول. لا ترفق هذه المقالة تقديرًا للعمل الهجومي لأنه لم يتم استخلاص أي منها من أدلة المستودع.

تحدد بعض الأنظمة والمعايير SHA-256 بشكل صريح؛ يستخدم الآخرون SHA-512 أو يسمحون بالاختيار. SSH بصمات الأصابع الافتراضية هي SHA-256؛ يمكن أن تكون ملخصات صور الحاوية SHA-256 أو SHA-512. يستخدم مديرو الحزم مثل npm SHA-512 لتكامل الموارد الفرعية. غالبًا ما يتم الاختيار نيابةً عنك، لكن فهم الاختلافات يتيح لك الاختيار بحكمة عندما يكون لديك رأي.

ما لا يغطيه هذا — أرقام الإنتاجية، التي تعتمد على CPU، والمترجم وحجم الإدخال؛ يبقى المنصب النوعي

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

يكشف الاختبار على أجهزتك الخاصة عن اختلاف الأداء. قم بتجزئة ملف كبير (حالة اختبار متعددة الميجابايت) مع كل خوارزمية وتوقيت النتائج. في أنظمة 64 بت الحديثة، غالبًا ما يكتمل SHA-512 في وقت أقل على مدار الساعة، على الرغم من أن عدد البايتات قد يوحي بخلاف ذلك. في أنظمة 32 بت أو المعالجات المضمنة، قد يكون SHA-256 أسرع لأن CPU's ALU محسّن لعمليات 32 بت.

الوجبات الجاهزة: اختر حسب حجم الإخراج والنظام الأساسي - توفر حاسبة التجزئة ToolAcre SHA SHA-256، وSHA-384، وSHA-512 حتى تتمكن من رؤية الثلاثة جميعًا على نفس الإدخال

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

يحسب تطبيق Web Crypto الخاص بالمتصفح الثلاثة عبر crypto.subtle.digest. يؤثر جهازك وإصدار المتصفح ونظام التحميل في الخلفية على الأداء المرصود. لكن تبقى النقطة الأساسية: SHA-256 وSHA-512 لا يتنافسان على لقب "أفضل وظيفة تجزئة". وهي أدوات مصممة لمتطلبات مخرجات مختلفة، ويتم الاختيار بينها على أساس ما يحتاجه نظامك، وليس على أساس مطالبات الأداء العامة.