سؤال

عند كتابة تطبيق جديد متوسط ​​في عام 2009، ما هي وظيفة الملخص الأكثر منطقية للاستخدام، من حيث الأمان والأداء؟(وكيف يمكنني تحديد ذلك في المستقبل مع تغير الظروف؟)

متى مشابه أسئلة كان طلبت في السابق، كانت الإجابات تتضمن SHA1، وSHA2، وSHA-256، وSHA-512، وMD5، وbCrypt، وBlowfish.

أدرك أنه إلى حد كبير، أي واحد من هذه يمكن أن يعمل، إذا تم استخدامه بذكاء، لكنني أفضل عدم رمي النرد واختيار واحد عشوائيا.شكرًا.

هل كانت مفيدة؟

المحلول

سأتبع إرشادات NIST/FIPS:

15 مارس 2006:عائلة SHA-2 من وظائف التجزئة (على سبيل المثال ، SHA-224 ، SHA-256 و SHA-384 و SHA-512) قد تكون المستخدمة من قبل الوكالات الاتحادية للجميع التطبيقات التي تستخدم التجزئة الآمنة خوارزميات.يجب على الوكالات الفيدرالية توقف عن استخدام SHA-1 للرقمي التوقيعات وختم الوقت الرقمي و التطبيقات الأخرى التي تتطلب مقاومة الاصطدام في أقرب وقت عملي ، ويجب استخدام SHA-2 عائلة وظائف التجزئة لهذه التطبيقات بعد عام 2010.بعد عام 2010، يجوز للوكالات الفيدرالية استخدام SHA-1 فقط للتطبيقات التالية:مصادقة الرسائل المستندة إلى التجزئة الرموز (HMACs) ؛اشتقاق المفتاح وظائف (KDFs) ؛ورقم عشوائي المولدات (RNGs).بغض النظر عن الاستخدام ، يشجع NIST التطبيق و مصممو البروتوكول لاستخدام SHA-2 عائلة من وظائف التجزئة لكل جديد التطبيقات والبروتوكولات.

نصائح أخرى

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

وهذا يترك العديد من عائلات وظائف التجزئة، بما في ذلك SHA-2، وHAVAL، وRIPEMD، وWHIRLPOOL، وغيرها.ومن بين هذه العائلات، تعتبر عائلة SHA-2 هي الأكثر شمولاً في تحليل الشفرات، ولذا فإنني أوصي بها للاستخدام العام.أوصي باستخدام SHA2-256 أو SHA2-512 للتطبيقات النموذجية، نظرًا لأن هذين الحجمين هما الأكثر شيوعًا ومن المرجح أن يتم دعمهما في المستقبل بواسطة SHA-3.

يعتمد الأمر حقًا على ما تحتاجه.

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

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

لقد ثبت أن MD4 وMD5 وSHA-1 قابلة للكسر بسهولة أكبر، بمعنى العثور على تصادم عبر طريقة هجوم عيد الميلاد، مما كان متوقعًا.يحظى RIPEMD-160 بتقدير كبير، ولكن عند 160 بت فقط، يحتاج هجوم عيد الميلاد إلى 2^80 عملية فقط، لذلك لن يستمر إلى الأبد.تتمتع Whirlpool بخصائص ممتازة ويبدو أنها الأقوى على الإطلاق، على الرغم من أنها لا تتمتع بنفس الدعم الذي تتمتع به SHA-256 أو SHA-512 - بمعنى أنه إذا كانت هناك مشكلة مع SHA-256 أو SHA-512، من المرجح أن تكتشف ذلك عبر القنوات المناسبة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top