بدأت أسوأ ليلة دعم في سنوات WP Adminify الخاصة بي بشاشة بيضاء. نحن '؛ دفع الإصدار 3.1.2 إلى خادم التحديث حوالي الساعة 11 مساءً، وبحلول الساعة 2:40 صباحًا كان لدي 14 تذكرة تقول نفس الشيء: تم تثبيت التحديث، الموقع ميت. لقد تراجعت، وأعدت اختبار الرمز البريدي على جهازي - يعمل بشكل مثالي. نفس الإصدار. نفس الملف. من المفترض.
لقد استغرق الأمر مني وقتًا طويلاً بشكل محرج للقيام بالشيء الواضح: تجزئة كلا الملفين. ال شا-256 من السحاب الموجود على جهاز الكمبيوتر المحمول الخاص بي وSHA-256 من السحاب الموجود على خادم التحديث غير متطابق '؛t. لا يوجد حتى إغلاق - ملخصات مختلفة تمامًا. تم اقتطاع التحميل في مكان ما في منتصف عملية النقل، وقدم الخادم بسعادة أرشيفًا معطلاً، واختنقت PHP بالملفات غير المكتملة بالداخل. كانت مقارنة المجموع الاختباري واحدة ستلتقطه قبل تحديث مستخدم واحد. بعد تلك الليلة، تمت طباعة SHA-256 الخاص بكل إصدار من إصدارات WP Adminify في سجل النشر، ورفض البرنامج النصي للتحميل النشر ما لم تتطابق التجزئة البعيدة مع التجزئة المحلية. صفر إصدارات تالفة منذ ذلك الحين.
That'؛s ما هو التجزئة، في أكثر حالاته عملية: بصمة للبيانات. قم بالتغذية في ملف أو سلسلة، واسترجع ملخصًا قصيرًا ثابت الطول. إذا تغيرت بايتة واحدة - بت مقلوب، أو تنزيل مقطوع، أو تعديل متستر - يتغير الملخص تمامًا. أصل الآن إلى منشئ التجزئة عبر الإنترنت عدة مرات في الأسبوع: التحقق من التنزيلات، وتصحيح أخطاء توقيعات خطاف الويب، ومقارنة ملفات التكوين عبر البيئات، والتحقق من صحة ذلك "؛ متطابقة وحاصل؛ الملفات في الواقع.
ولهذا السبب قمت ببناء واحدة في تولز.ديف. أردت أداة تجزئة تحسب كل شيء في المتصفح، وتظهر لي MD5 وSHA-1 وSHA-256 وSHA-512 جنبًا إلى جنب، ولا تقوم أبدًا بتحميل بايت من مدخلاتي في أي مكان. يغطي هذا الدليل كيفية استخدامه، ماذا '؛ يحدث بالفعل تحت الغطاء، والخطأ الوحيد في التجزئة الذي ارتكبته بنفسي في وقت مبكر - والذي ما زلت أراه في قواعد التعليمات البرمجية اليوم.
ليرة تركية؛DR: استخدم مولد التجزئة Toolz.dev لحساب ملخصات MD5 وSHA-1 وSHA-256 وSHA-512 من النصوص أو الملفات، بشكل فوري وكامل في متصفحك عبر Web Crypto API. الافتراضي لـ SHA-256 لأي شيء مهم؛ تعامل مع MD5 وSHA-1 كمجموع اختباري قديم فقط. ولا تستخدم أبدًا أيًا من هذه الكلمات لكلمات المرور. That'؛s bcrypt أو منطقة Argon2.
الميزات الرئيسية
خوارزميات متعددة في وقت واحد
الصق مدخلاتك مرة واحدة واحصل على MD5 وSHA-1 وSHA-256 وSHA-512 محسوبة في وقت واحد. يبدو هذا بمثابة راحة صغيرة حتى تقوم '؛ بإعادة تصحيح أخطاء نظام شخص آخر '؛ وأنت لا تعرف '؛ تعرف على الخوارزمية التي استخدموها. أنا '؛ لقد فقدت الوقت الفعلي بسبب هذا - بوابة الدفع '؛ قالت المستندات "؛SHA hash"؛ بدون رقم مرفق، وجلست هناك أقوم بإنشاء ملخصات خوارزمية واحدة في كل مرة في الجهاز الطرفي حتى تتطابق واحدة. مع ظهور جميع الملخصات الأربعة على الشاشة مرة واحدة، ما عليك سوى مقلة العين التي تتوافق مع القيمة التي تحاول مطابقتها & #39؛ إنها تحاول أيضًا مطابقة الاختلافات: يمكنك رؤية MD5 المكون من 32 حرفًا بجوار SHA-512 المكون من 128 حرفًا وفهم ما " على الفور؛ حجم الملخص وحاصله؛ يعني عمليا.
تجزئة النص والملفات
اكتب سلسلة أو الصقها، أو قم بإسقاط ملف - الأداة تتعامل مع كليهما. يغطي تجزئة النص الحالات اليومية: تصحيح أخطاء توقيع واجهة برمجة التطبيقات، ومفاتيح ذاكرة التخزين المؤقت، والمقارنات السريعة. تجزئة الملف هي المكان الذي يحدث فيه عمل التحقق الحقيقي. التحقق من برنامج التثبيت الذي تم تنزيله مقابل المجموع الاختباري المنشور، والتأكد من بقاء الرمز البريدي للمكون الإضافي على قيد الحياة أثناء الرحلة إلى خادم التحديث الخاص بك، والتحقق من تفريغ قاعدة البيانات المنسوخ سليمًا بين الأجهزة. لا يتم تحميل الملف أبدًا في أي مكان؛ it'؛s تتم قراءته محليًا بواسطة متصفحك ويتم تجزئته في مكانه. I'؛ لقد قمت بتجزئة عمليات تفريغ SQL بمئات الميجابايت بهذه الطريقة. It'؛s أسرع منك'؛d توقع، لأن الرفع الثقيل يحدث في كود المتصفح الأصلي، وليس في حلقات JavaScript.
الحساب الفوري من جانب العميل عبر تشفير الويب
يتم حساب ملخصات عائلة SHA باستخدام واجهة برمجة تطبيقات Web Crypto المضمنة في المتصفح '؛ - crypto.subtle.digest- الذي يقوم بتشغيل كود التشفير الأصلي والمحسن الذي يتم شحنه مع متصفحك. لا يوجد خادم ذهابًا وإيابًا، ولا قائمة انتظار، ولا يوجد دوار. تحصل على النتائج بأسرع ما يمكن لجهازك قراءة المدخلات. وهذا مهم لسببين. أولاً، السرعة: تتم التجزئة بالمللي ثانية، حتى بالنسبة للمدخلات الكبيرة. ثانيًا، الثقة: نظرًا لأن الحساب محلي، فإن الأداة تعمل بنفس الطريقة سواء كنت '؛ متصلين بالإنترنت في مقهى أو تقوم بتجزئة تكوين حساس على شبكة مغلقة. يتم تحميل الصفحة مرة واحدة؛ وبعد ذلك، تصبح الشبكة غير ذات صلة.
إخراج الأحرف الكبيرة والصغيرة
ميزة تافهة، تحفظ الصداع الحقيقي. الملخصات السداسية غير حساسة لحالة الأحرف في المعنى - 2CF24DBA و 2cf24dba تشفير بايتات متطابقة - لكن مقارنات السلسلة لا تعرف '؛ أعرف ذلك. تقوم الكثير من الأنظمة بتخزين الملخصات أو نشرها بأحرف كبيرة (بعض أدوات Windows، وبعض صفحات المجموع الاختباري للبائع)، بينما تصدر معظم أدوات Unix أحرفًا صغيرة. إذا كنت '؛ بعد لصق الملخص في برنامج نصي للمقارنة أو ملف تكوين يقوم بمطابقة السلسلة بدقة، تصبح الحالة فجأة مهمة كثيرًا. التبديل يعني أنك تنسخ التنسيق الذي تحتاجه بدلاً من تشغيل الإخراج من خلال محول الحالة أو، الأسوأ من ذلك، "؛fixing"؛ يتم ذلك يدويًا وبإصبع سمين للشخصية.
وضع المقارنة والتحقق
التجزئة هي نصف المهمة فقط - عادةً أنت '؛ إعادة التحقق من الملخص مقابل القيمة المتوقعة. الصق المجموع الاختباري المنشور بجوار المجموع الاختباري المحسوب الخاص بك وتخبرك الأداة على الفور بما إذا كانت متطابقة، ولا يلزم التحديق عند 64 حرفًا سداسيًا. اعتدت التحقق من المجاميع الاختبارية من خلال المقارنة المرئية للأحرف القليلة الأولى والأخيرة. هذا '؛s بالضبط كيف تفوت عدم التطابق في المنتصف. عيون الإنسان فظيعة في مقارنة السلاسل العشوائية الطويلة؛ هذا '؛ وظيفة للتحقق من المساواة. يعمل وضع التحقق أيضًا على تطبيع الحالة وتقليص المسافة البيضاء قبل المقارنة، مما يقتل الإنذار الكاذب الأكثر شيوعًا: مساحة زائدة ضالة من النسخ واللصق غير المتقن.
خاص 100% - لا شيء يترك متصفحك
هذه هي الميزة التي أرفض التنازل عنها عبر جميع أدوات.dev. يتم تجزئة مدخلاتك - النص أو الملف - محليًا ولا يتم نقلها أبدًا. هناك '؛ لا توجد معالجة من جانب الخادم، ولا تسجيل، ولا "؛ نحن نجهل بياناتك واقتباسك؛ طباعة دقيقة، لأنه لا توجد بيانات لتسجيلها. هذا مهم للتجزئة أكثر مما يدركه الناس: الأشياء التي يقوم المطورون بتجزئةها غالبًا ما تكون بالضبط الأشياء التي ينبغي عليهم '؛ لصقها في موقع ويب عشوائي - أسرار واجهة برمجة التطبيقات أثناء تصحيح أخطاء توقيعات HMAC، ومفاتيح الترخيص، والتفريغ مع رسائل البريد الإلكتروني للعملاء. باستخدام أداة من جانب العميل، يتبخر هذا الخطر. افتح علامة تبويب الشبكة الخاصة بالمتصفح '؛ أثناء التجزئة إذا كنت تريد إثباتًا. لقد كتبت المزيد عن سبب أهمية هذه البنية في بلدي خصوصية البيانات والأدوات عبر الإنترنت بريد.
كيفية استخدام مولد التجزئة
الخطوة 1: افتح الأداة واختر الإدخال الخاص بك
توجه إلى مولد هاش. You'؛ سترى منطقة إدخال تقبل إما النص المكتوب/الملصق أو الملف. بالنسبة للنص، ما عليك سوى البدء في الكتابة - تحدث التجزئة أثناء التنقل. بالنسبة للملفات، اسحب واحدًا إلى منطقة الإسقاط أو استخدم منتقي الملفات. لا شيء يتم تحميله؛ تتم قراءة الملف محليًا بواسطة متصفحك. هناك '؛ لا يوجد سقف بحجم يتجاوز ما يناسب جهازك و#39؛ الذاكرة مريحة.
الخطوة 2: قراءة الملخصات
جميع الخوارزميات تحسب مرة واحدة: MD5، SHA-1، SHA-256، SHA-512. يظهر كل ملخص في الصف المسمى الخاص به، بشكل سداسي عشري. لاحظ الأطوال - 32 حرفًا لـ MD5، و40 لـ SHA-1، و64 لـ SHA-256، و128 لـ SHA-512. إذا كنت '؛ تتم مطابقتها مع المجموع الاختباري المعروف وأنت '؛ لست متأكدًا من الخوارزمية التي أنتجتها، فعادةً ما يخبرك الطول وحده قبل مقارنة حرف واحد.
الخطوة 3: تبديل الحالة إذا لزم الأمر
إذا كان النظام ou'؛re مطابقًا لاستخدامات الأحرف السداسية الكبيرة، فاقلب تبديل الحالة. بايتات الملخص متطابقة في كلتا الحالتين - يتعلق الأمر فقط بتنسيق السلسلة. انسخ الملخص باستخدام زر النسخ بدلاً من التحديد يدويًا؛ من السهل جدًا تحديد ملخص SHA-512 المكون من 128 حرفًا جزئيًا، وسيفشل الملخص المقطوع بصمت في كل مقارنة تجريها به.
الخطوة 4: التحقق من التجزئة المتوقعة
حصلت على مجموع اختباري منشور من صفحة تنزيل البائع '؛ أو سجل نشر زميل '؛؟ لصقها في حقل المقارنة. تقوم الأداة بفحصها مقابل ملخصك المحسوب وتمنحك تطابقًا واضحًا أو عدم تطابق. المطابقة تعني أن البيانات مطابقة لكل بايت لما أنتج التجزئة الأصلية. عدم التطابق يعني تغيير شيء ما - نقل تالف، أو إصدار ملف خاطئ، أو التلاعب. Don'؛t تبرير عدم التطابق. إعادة التنزيل والتحقق مرة أخرى.
MD5 vs SHA-256: ماذا '؛s يحدث بالفعل تحت الغطاء
تأخذ وظيفة تجزئة التشفير مدخلات بأي طول وتنتج مخرجات ذات طول ثابت تسمى الملخص. أربع خصائص تجعله مفيدًا. It'؛س حتمية- نفس المدخلات تنتج دائما نفس الملخص. يعرض تأثير الانهيار الجليدي- قم بتغيير بت واحد من الإدخال وقم بقلب نصف بتات الإخراج تقريبًا. إنه '؛س اتجاه واحد- هناك '؛s لا يوجد مسار ممكن من الملخص إلى الإدخال. و '؛s مقاومة للتصادم- العثور على مدخلين مختلفين ينتجان نفس الملخص يجب أن يكون غير ممكن من الناحية الحسابية.
تأثير الانهيار الجليدي يستحق المشاهدة بقيم حقيقية. MD5 من hello يكون 5d41402abc4b2a76b9719d911017c592. كتابة حرف واحد بالأحرف الكبيرة - Hello- وتحصل 8b1a9953c4611296a827abf8c47804d7. لم تتغير شخصية واحدة؛ ملخص غير ذي صلة تمامًا. نفس القصة مع SHA-256: hello التجزئة ل 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824بينما Hello ينتج ملخصًا لا يشاركه شيئًا بشكل أساسي. هذه النقطة '؛s. ملخص يخبرك سواء البيانات تغيرت أبدا كم ثمن.
الآن، الخوارزميات. MD5 تم تعريفه في RFC 1321 في عام 1992 وينتج ملخصًا 128 بت. It'؛s سريع، '؛s في كل مكان - وit'؛s مكسورة تشفيريًا. هجمات الاصطدام العملية موجودة منذ عام 2004؛ يمكن للباحثين تصنيع مدخلين مختلفين بنفس ملخص MD5 على الأجهزة السلعية. وهذا يقتله في أي شيء عدائي: التوقيعات والشهادات والتحقق من النزاهة حيث يمكن للمهاجم استبدال المحتوى. ويظل الأمر جيدًا بالنسبة للمجاميع الاختبارية غير الخصومية - اكتشاف الفساد العرضي في نقل الملفات، وإلغاء تكرار بياناتك الخاصة - لأن الفساد العشوائي لا يفعل ذلك '؛t، يمكنك اختيار البايتات الخاصة به. شا-1 استمر (160 بت) لفترة أطول، لكن هجوم SHAttered أظهر تصادمًا عمليًا في عام 2017، مكتملًا بملفي PDF مختلفين يتشاركان ملخص SHA-1 واحد. لا يزال Git يستخدم SHA-1 داخليًا لأسباب تاريخية، ولكن لا ينبغي لأي نظام جديد أن يفعل ذلك.
ال عائلة شا-2- SHA-256 وSHA-512 من بينها - محدد في FIPS 180-4 ويظل دون انقطاع. يمنحك SHA-256 ملخصًا 256 بت وهو الإعداد الافتراضي المعقول لكل شيء تقريبًا. يقدم SHA-512 ملخصًا أكبر وغالبًا ما يكون كذلك أسرع على وحدات المعالجة المركزية 64 بت، لأنه يعمل بكلمات 64 بت.
ثلاثة فروق يطمسها الناس باستمرار. التجزئة هو في اتجاه واحد - لا يوجد مفتاح، لا يوجد طريق للعودة. التشفير ثنائي الاتجاه - يمكن لأي شخص لديه المفتاح فك التشفير. ترقيم، مثل Base64، هي حماية في الاتجاه الصفري - it'؛s مجرد تغيير في التمثيل يمكن لأي شخص عكسه، دون الحاجة إلى مفتاح. إذا كنت '؛ سبق لك أن رأيت Base64 يُعامل على أنه "؛ التشفير، "؛ خاصتي محول BASE64 سوف أوضح بمرح لماذا هذه '؛s مشكلة، ومشكلة بلدي دليل الترميز BASE64 يغطي التمييز في العمق.
عندما تحتاج إلى إثبات أن رسالة جاءت من شخص يحمل سرًا مشتركًا - توقيعات خطاف الويب، وتوقيع طلب واجهة برمجة التطبيقات - تجزئة بسيطة '؛ وهذا يكفي، لأنه يمكن لأي شخص التجزئة. هذا & #39؛س HMAC، تم تعريفه في RFC 2104: بنية ذات مفاتيح تلتف حول وظيفة التجزئة بحيث لا يتمكن سوى حاملي المفاتيح من إنتاج ملخصات صالحة. HMAC-SHA256 هو العمود الفقري وراء معظم أنظمة توقيع خطاف الويب التي تقوم بتصحيح أخطائها '؛ سوف تقوم بتصحيح الأخطاء على الإطلاق.
والكبير: لا تقم مطلقًا بتجزئة كلمات المرور باستخدام التجزئة السريعة. Fast هو العدو هنا - يمكن للمهاجم الذي لديه قاعدة بيانات مسربة اختبار مليارات تخمينات MD5 أو SHA-256 في الثانية على وحدات معالجة الرسومات. تحتاج كلمات المرور إلى خوارزميات بطيئة ومملحة عمدًا: bcrypt أو Argon2. Laravel'؛s Hash::make() يستخدم bcrypt افتراضيًا لهذا السبب بالضبط، وقد أمضى WordPress سنوات في نظام التجزئة المحمول phpass قبل التحديث - غير كامل، ولكن الغريزة (إبطائه، ملئه) كانت صحيحة. لقد تعلمت هذا بالطريقة الصعبة: قام مشروع مستقل مبكر لي، قبل سنوات من WP Adminify، بتخزين كلمات المرور على أنها خام md5($password). حركة المبتدئين الكلاسيكية. لم يتم اختراق أحد، لكنني ما زلت أشعر بالإحباط.
هنا'؛s ما تفعله أداة Toolz.dev تحت الغطاء، وما تفعله أنت '؛d اكتب نفسك:
const data = new TextEncoder().encode('hello');
const buf = await crypto.subtle.digest('SHA-256', data);
const hex = [...new Uint8Array(buf)]
.map(b => b.toString(16).padStart(2, '0'))
.join('');
// "2cf24dba5fb0a30e26e83b2ac5b9e29e..."
أو في PHP، سطر واحد: hash('sha256', 'hello'). نفس المدخلات، نفس الملخص، أي لغة، أي آلة. تلك الحتمية هي الأساس بأكمله.
حالات الاستخدام الشائعة
التحقق من تنزيلات الملفات وإصدار القطع الأثرية
حالة الاستخدام التي أحرقتني في المقدمة. ينشر البائعون مجاميع اختبارية بجوار التنزيلات لسبب ما: عمليات النقل فاسدة، والمرايا قديمة، وأحيانًا يقوم شخص ضار بتبديل ملف. قم بتنزيل الملف، وقم بتجزئة الملف باستخدام مولد هاش، قارن مع القيمة المنشورة. مطابقة: الملف مطابق للبايت لما قام الناشر بتجزئة. عدم التطابق: إيقاف وإعادة تنزيل. بالنسبة لإصداراتي الخاصة، فإن القاعدة منذ حادثة الساعة 2:40 صباحًا ميكانيكية - حيث يقوم البرنامج النصي للنشر بحساب SHA-256 محليًا، وتحميل، وجلب الملف البعيد وتجزئة '؛ ويرفض قلب "؛ الإصدار الحالي وquot؛ المؤشر ما لم يكن '؛ متساويان. ربما يكون It'؛s ثمانية أسطر من bash. لقد تم التقاط تحميلين مبتورين منذ ذلك الحين، وكلاهما كان من الممكن أن يكونا فيضانات التذاكر. أرخص تأمين في خط أنابيب بلدي بأكمله.
خرق ذاكرة التخزين المؤقت وعلامات ETag
تقوم المتصفحات بتخزينها مؤقتًا بقوة، و"؛ يرجى التحديث الصعب والاقتباس؛ ليست استراتيجية نشر. الإصلاح القوي هو أسماء الملفات المجزأة بالمحتوى: قم بتجزئة محتويات الملف '؛ وقم بتضمين جزء من الملخص في الاسم، لذا app.css يصبح app.2cf24dba.css. تتغير المحتويات، وتغييرات التجزئة، وتغييرات اسم الملف، وتفويت ذاكرة التخزين المؤقت، ويحصل المستخدمون على الملف الجديد. المحتويات متطابقة، واسم الملف متطابق، ونجاح ذاكرة التخزين المؤقت. يقوم Laravel Mix وVite بذلك تلقائيًا؛ في WP Adminify، قمت بعمل إصدار محلي، حيث قمت بتجزئة محتويات الأصول لإنشاء ملف ver سلسلة الاستعلام WordPress تُلحق بالبرامج النصية المدرجة في قائمة الانتظار - بعد عدد كبير جدًا من "؛ تبدو لوحة الإعدادات مكسورة وحاصل؛ التذاكر التي كانت قديمة حقًا CSS. نفس المبدأ يفرض علامات ETags: يقوم الخادم بتجزئة الاستجابة، ويرسل المتصفح التجزئة مرة أخرى، وتعني المطابقة 304 صغيرة بدلاً من الحمولة الكاملة.
إلغاء تكرار المحتوى
هل تريد معرفة ما إذا كان الملفان متطابقين دون مقارنتهما بايت بايت - أو عندما يعيشان على أجهزة مختلفة؟ تجزئة كلاهما. الملخصات المتساوية تعني محتوى متساويًا (مع SHA-256، احتمالات الاصطدام صغيرة جدًا لدرجة أنها '؛ لا تستحق التفكير). يتم قياس هذا بشكل جميل: قم بتجزئة ألف تحميل، وفرز الملخصات، وتجميع التكرارات على الفور. أنا '؛ لقد استخدمنا هذا لإلغاء تكرار مكتبة وسائط WordPress التي تراكمت عليها سنوات logo.png، logo-1.png، و logo-final-2.png- كشفت التجزئة عن نفس الصورة التي تحمل أسماء مختلفة. It'؛s أيضًا كيف تقرر أدوات النسخ الاحتياطي ما يجب تخطيه وكيف تكتشف مخازن الكائنات ذلك "؛upload"؛ هو المحتوى الذي يحملونه بالفعل.
معالجة المحتوى على طراز Git
يقوم Git بتخزين الملفات بالاسم '؛t - يقوم بتخزينها عن طريق التجزئة. تتم معالجة كل نقطة وشجرة والتزام من خلال ملخص محتواها (SHA-1 تاريخيًا، مع تقدم عملية انتقال SHA-256). That'؛s لماذا تبدو معرفات الالتزام وكأنها تجزئات: هم نكون التجزئة، وهي تغطي اللقطة، والآباء، والمؤلف، والطابع الزمني. قم بتغيير أي شيء في أي مكان في التاريخ وكل تغييرات في التجزئة النهائية، وهو ما يجعل التلاعب بتاريخ Git واضحًا بصوت عالٍ وليس ممكنًا بهدوء. أدى فهم هذا إلى تغيير كيفية تصحيح مشكلات Git. عندما يختلف جهازان حول الالتزام، فإن مقارنة التجزئة تخبرك على الفور ما إذا كنت أنت & #39؛ إذا كنت تنظر إلى نفس الكائن أو التاريخ المتباين. تعد معالجة المحتوى إحدى تلك الأفكار التي تبدو أكاديمية حتى تحفظ الريبو الخاص بك.
مقارنة التكوينات دون كشف الأسرار
أعمال التدريج والإنتاج '؛t، وأنت تشك في .env تختلف الملفات - لكنك لا تفعل ذلك '؛ تريد لصق أسرار الإنتاج في سلسلة Slack أو مشاركة الشاشة. قم بتجزئة كل ملف على جهازه الخاص وقارن الملخصات بدلاً من ذلك. تؤكد التجزئة المختلفة أن الملفات تختلف دون الكشف عن قيمة واحدة. يمكنك أن تصبح أكثر دقة: تجزئة الأسطر الفردية أو مفاتيح محددة لتحديدها أيّ الإدخال يتباعد. أنا '؛ لقد قمت بتسوية الخلافات مع دعم الاستضافة بهذه الطريقة - "؛ نسختك من التكوين لا تتطابق مع نسختي '؛ تتطابق مع SHA-256 الخاص بي، تحقق من حسابك واقتباس؛ ينهي النقاش برسالة واحدة. يثبت الملخص الاختلاف أو التشابه بينما تبقى الأسرار في مكانها تمامًا.
تصحيح أخطاء توقيع خطاف الويب
Stripe، GitHub، Paddle - يقومون جميعًا بتوقيع حمولات خطاف الويب، عادةً باستخدام HMAC-SHA256، حتى تتمكن من التحقق من أن الطلب جاء منهم بالفعل. وعندما يفشل التحقق، يكون تصحيح الأخطاء أمرًا بائسًا، لأن الفشل صامت: التوقيعات فقط لا '؛ تتطابق، والبرمجيات الوسيطة تقول لا. تسع مرات من أصل عشر هي الحمولة - يقوم إطار العمل الخاص بك بإعادة تسلسل JSON، وتغيير المسافة البيضاء أو ترتيب المفاتيح، لذلك أنت '؛ قم بتجزئة بايتات مختلفة عما تم التوقيع عليه. تجزئة خام يُظهر لك نص الطلب في نقاط مختلفة في خط الأنابيب الخاص بك المكان الذي تتحور فيه البايتات بالضبط. إذا تغير الملخص بين معالج المسار الخاص بك ووظيفة التحقق الخاصة بك، فستجد '؛ الطبقة التي '؛ تلامس الجسم. بينما أنت '؛ في ذلك الحي، بلدي JWT فك التشفير مفيد للمهمة المجاورة المتمثلة في فحص الرموز المميزة الموقعة.
MD5 vs SHA-1 vs SHA-256 vs SHA-512: ما الذي يجب عليك استخدامه؟
| خوارزمية | حجم الملخص | السرعة النسبية | الحالة الأمنية | الاستخدامات المناسبة |
|---|---|---|---|---|
| MD5 | 128 بت (32 حرفًا سداسيًا) | الأسرع | مكسورة - تصادمات عملية منذ عام 2004 | المجاميع الاختبارية غير الخصومية، توافق النظام القديم، مفاتيح ذاكرة التخزين المؤقت |
| شا-1 | 160 بت (40 حرفًا سداسيًا) | سريع | مكسور - تصادم متهالك، 2017 | الأجزاء الداخلية القديمة لـ Git، تتداخل مع الأنظمة القديمة؛ لا شيء جديد |
| شا-256 | 256 بت (64 حرفًا سداسيًا) | سريع | آمن | الافتراضي للتحقق من السلامة والتوقيعات وعنونة المحتوى وHMAC |
| شا-512 | 512 بت (128 حرفًا سداسيًا) | سريع (غالبًا ما يكون أسرع على وحدات المعالجة المركزية 64 بت) | آمن | نفس SHA-256؛ عندما تريد هامشًا إضافيًا أو إنتاجية 64 بت |
موقفي، وأنا '؛ سأكون صريحًا بشأن ذلك الافتراضي هو SHA-256 وتوقف عن التفكير فيه. It'؛s آمن، ومدعوم عالميًا، وبسرعة كافية بحيث لن تلاحظ التكلفة أبدًا، وهو'؛s ما تتحدث عنه أدواتك بالفعل - شهادات TLS، وملخصات صور Docker، وملفات قفل الحزمة، وتوقيعات خطاف الويب. من الأفضل دائمًا إنفاق الطاقة العقلية المستهلكة في اختيار الخوارزمية في مكان آخر.
الفارق الدقيق الذي يستحق الاحتفاظ به: MD5 is'؛t مشع، it'؛s نطاق. الكشف عن الفساد العرضي في ملفاتك الخاصة؟ بخير. هل هناك أي شيء يمكن أن يستفيد فيه الخصم البشري من حدوث تصادم؟ بالتأكيد لا. SHA-1 موجود في نفس المجموعة مع عدد أقل من الأعذار - السبب الجيد الوحيد للمسه هو التوافق مع النظام الذي تستخدمه '؛t Control. يعد SHA-512 خيارًا جيدًا وأحيانًا أسرع على الأجهزة الحديثة ذات 64 بت، ولكن الملخصات المكونة من 128 حرفًا غير عملية في السجلات وعناوين URL، وهامش الأمان لـ SHA-256 لا ينتمي بالفعل إلى أي هجوم واقعي. ولا ينتمي أي من الأربعة - كرر، لا شيء - إلى أي مكان بالقرب من حقل كلمة المرور.
الأسئلة الشائعة
هل لا يزال MD5 آمنًا للاستخدام؟
للأمن، لا. توجد هجمات تصادم عملية منذ عام 2004، مما يعني أنه يمكن للمهاجمين إنشاء ملفين مختلفين بنفس ملخص MD5. لا تستخدمه أبدًا للتوقيعات أو الشهادات أو تخزين كلمات المرور أو أي فحص للسلامة عندما يكون التلاعب مصدر قلق. ويظل مقبولاً بالنسبة للوظائف غير التخاصمية - اكتشاف الفساد العرضي، وإلغاء تكرار ملفاتك الخاصة، وإنشاء مفاتيح ذاكرة التخزين المؤقت - حيث لا يحاول أحد خداعك. إذا كنت في شك، استخدم SHA-256؛ لا يكلفك شيئا.
هل يمكنك عكس التجزئة للحصول على البيانات الأصلية؟
رقم وظائف التجزئة هي في اتجاه واحد حسب التصميم - يحتوي الملخص على معلومات أقل بكثير من معظم المدخلات، لذا فإن الانعكاس مستحيل رياضيًا بشكل عام. ما يفعله المهاجمون في الواقع هو التخمين: تجزئة مليارات المدخلات المرشحة ومقارنة الملخصات، باستخدام جداول قوس قزح أو القوة الغاشمة لوحدة معالجة الرسومات. يعمل هذا بشكل مخيف بشكل جيد مع المدخلات القصيرة الشائعة مثل كلمات المرور المجزأة بخوارزميات سريعة، وهذا هو بالضبط سبب حاجة كلمات المرور إلى تجزئة بطيئة ومملحة بدلاً من MD5 أو SHA-256 العادي.
ما الفرق بين التجزئة والتشفير؟
التشفير ثنائي الاتجاه: يتم تشفير البيانات باستخدام مفتاح، ويمكن لأي شخص يحمل المفتاح الأيمن فك تشفيرها مرة أخرى إلى الأصل. التجزئة في اتجاه واحد: يمكنك حساب ملخص من البيانات، ولكن لا يمكنك استعادة البيانات من الملخص - لا يوجد مفتاح ولا فك التشفير. استخدم التشفير عندما تحتاج إلى استعادة البيانات، والتجزئة عندما تحتاج فقط إلى التحقق أو المقارنة. Base64، للسجل، ليس كذلك - إنه تشفير، ويمكن لأي شخص عكسه.
ما التجزئة التي يجب أن أستخدمها لكلمات المرور؟
لا شيء من تلك الموجودة في هذه الأداة. MD5 وSHA-1 وSHA-256 وSHA-512 كلها سريعة، والسرعة قاتلة لكلمات المرور - يمكن لوحدات معالجة الرسومات اختبار مليارات التخمينات في الثانية مقابل قاعدة بيانات مسربة. استخدم خوارزمية بطيئة ومملحة عمدًا: bcrypt أو Argon2. Laravel'؛s التجزئة::make() تستخدم bcrypt افتراضيًا، وتوفر معظم أطر العمل الحديثة ما يعادلها. إذا كنت تكتب مكالمات تجزئة أولية لتخزين كلمة المرور، فتوقف وتصل إلى واجهة برمجة تطبيقات تجزئة كلمة المرور الخاصة بـ Framework'؛s بدلاً من ذلك.
هل من الآمن تجزئة البيانات الحساسة في أداة عبر الإنترنت؟
فقط إذا كانت الأداة من جانب العميل حقًا. يقوم Toolz.dev Hash Generator بحساب كل ملخص في متصفحك باستخدام Web Crypto API - لا يتم نقل مدخلاتك أو تسجيلها أو تخزينها على أي خادم أبدًا. يمكنك تأكيد ذلك بنفسك من خلال مشاهدة علامة تبويب الشبكة أثناء التجزئة. باستخدام الأدوات من جانب الخادم، فإنك تثق في مشغل غير معروف بكل ما تقوم بلصقه، وهو ما يعد صفقة سيئة لأسرار واجهة برمجة التطبيقات أو المفاتيح أو بيانات العميل. عندما تكون في شك، تحقق قبل اللصق.
لماذا "؛ مرحبا واقتباس؛ و&اقتباس؛ مرحبا واقتباس؛ إنتاج تجزئات مختلفة تماما؟
هذا هو تأثير الانهيار الجليدي، وهو متعمد. تقلب دالة التجزئة الجيدة ما يقرب من نصف بتات الإخراج الخاصة بها عندما تتغير بتة إدخال واحدة، لذا فإن المدخلات المتشابهة تنتج ملخصات مختلفة تمامًا. يؤدي كتابة حرف واحد بالأحرف الكبيرة إلى تغيير بايت واحد، ولكن يصبح الملخص غير قابل للتعرف عليه. هذه ميزة: تعني أن الملخصات لا تكشف شيئًا عن مدى تشابه المدخلين، وتجعل من المستحيل تفويت أي تغيير - مهما كان صغيرًا - عند مقارنة التجزئة.
ما الفرق بين SHA-256 وSHA-512؟
كلاهما ينتمي إلى عائلة SHA-2 المحددة في FIPS 180-4، وكلاهما يعتبر آمنًا. ينتج SHA-256 ملخصًا 256 بت باستخدام عمليات 32 بت؛ ينتج SHA-512 ملخصًا 512 بت باستخدام عمليات 64 بت، مما يجعله أسرع في كثير من الأحيان على معالجات 64 بت الحديثة. من الناحية العملية، يعد SHA-256 هو النظام البيئي الافتراضي ويبلغ طول ملخصاته نصف الطول، مما يجعل السجلات وعناوين URL قابلة للإدارة. اختر SHA-512 للحصول على هامش أمان إضافي أو إنتاجية 64 بت؛ وإلا فإن SHA-256 كثير.
متى أحتاج إلى HMAC بدلاً من التجزئة البسيطة؟
استخدم HMAC عندما تحتاج إلى إثبات من أنتج التجزئة، وليس فقط ما تم تجزئته. يمكن لأي شخص حساب ملخص عادي، لذلك يتحقق من السلامة ولكن ليس الأصل. يقوم HMAC، المحدد في RFC 2104، بخلط مفتاح سري في عملية التجزئة - فقط الأطراف التي تحمل المفتاح يمكنها إنتاج توقيعات صالحة أو التحقق منها. هذه هي الآلية الكامنة وراء توقيعات خطاف الويب من Stripe وGitHub والخدمات المماثلة، دائمًا تقريبًا مثل HMAC-SHA256 عبر نص الطلب الأولي.
سفينة ببصمات الأصابع، وليس الإيمان
التجزئة هي الأداة النادرة التي '؛ سواء علوم الكمبيوتر العميقة أو الممارسة اليومية البسيطة. أنت لا تفعل '؛ تحتاج إلى فهم إنشاءات Merkle Hamgadd للاستفادة منها - أنت بحاجة إلى هذه العادة. قم بتجزئة عناصر الإصدار الخاصة بك. تحقق من التنزيلات الخاصة بك. قارن الملخصات بدلاً من ملفات مقل العيون. كل واحدة من هذه العادات هي ثلاثون ثانية من العمل، وقد أنقذتني كل واحدة منها، في مرحلة ما، ليلة كنت سأقضيها في الاعتذار في قائمة انتظار الدعم.
ال مولد التجزئة Toolz.dev تم تصميمه لجعل هذه العادة خالية من الاحتكاك: أربع خوارزميات في وقت واحد، النصوص والملفات، وضع التحقق، وكلها محسوبة في متصفحك دون تحميل أي شيء. إذا كنت '؛ تعمل من خلال المفاهيم المجاورة، فإن محول BASE64 يغطي الترميز (ولماذا هو '؛t الأمان)، و مولد كلمة السر يتعامل مع الأسرار التي لا ينبغي عليك تجزئةها أبدًا باستخدام SHA-256 و JWT فك التشفير يكمل الجانب المميز من القصة.
للصورة الأكبر يا دليل أدوات الترميز يمشي عبر بقية صندوق أدوات المطور، و خصوصية البيانات في الأدوات عبر الإنترنت يشرح سبب كون المعالجة من جانب العميل هي التل I'؛ لقد اخترت أن تموت. التجزئة أولا، نشر ثانيا. سوف تشكرك نفسك في الساعة 2:40 صباحًا.



