tgoop.com/the_developer_guide/5674
Create:
Last Update:
Last Update:
🔐 الفرق بين Hashing و Encryption و Salting و Pepper
.
.
الأربع مصطلحات قريبين من بعض في إن كلهم ليهم علاقة بتأمين الـ data. بس الحقيقة إن كل واحد فيهم ليه هدف مختلف تمامًا وطريقة استخدام مختلفة، ولو خلطت بينهم أو استعملت حاجة مكان التانية هتعمل مشكلة كبيرة في السيستم بتاعك.
تخيل معايا إنك بتعمل منصة فيها مستخدمين بيسجلوا بالإيميل والباسورد. طبيعي إنك لازم تخزن الباسورد بشكل آمن، صح؟ هنا بقى السؤال:
- هل أخزن الباسورد زي ما هو plain text؟
- طب هل أعمله Encryption؟
- ولا Hashing كفاية؟
- طب إيه لازمة الـ Salt؟ وإيه الفرق بينها وبين الـ Pepper؟
———
🟢 الـ Hashing
الـ Hashing هو إنك بتحول الـ data (زي الباسورد) لسلسلة من الأرقام والحروف ملهاش معنى.
الميزة الأساسية: ده one-way، يعني تقدر تحول الباسورد لـ hash، لكن مستحيل ترجع من الـ hash للباسورد.
📌 الهدف: تستخدمه عشان تتحقق من البيانات، مش عشان تسترجعها.
مثال: المستخدم يدخل الباسورد، وأنت تعمله hash بنفس الـ algorithm وتقارن مع اللي مخزنه.
❌ المشكلة: لو اتنين مستخدمين عندهم نفس الباسورد، الـ hash بتاعهم هيبقى نفس النتيجة. وده بيخلي الموضوع عرضة لهجمات زي الـ Rainbow Tables.
———
🔵 الـ Encryption
الـ Encryption مختلف تمامًا. هنا بتعمل عملية reversible (يعني ينفع ترجع للبيانات الأصلية).
تخزن الـ data مشفرة، وتقدر تفكها بالـ key.
📌 الهدف: حماية البيانات اللي لازم تسترجعها زي الرسائل، الملفات، بيانات الكريدت كارد… إلخ.
مثال: تشفير رسالة في واتساب، المستقبل يقدر يفكها بالـ key والرسالة الأصلية ترجع.
❌ المشكلة: لو الـ key اتسرب، كل حاجة مكشوفة.
———
🟡 الـ Salting
الـ Salt هو string عشوائي بتضيفه للباسورد قبل ما تعمله hash.
ليه؟ عشان تمنع الهجمات اللي بتعتمد على إن نفس الباسورد عنده نفس الـ hash.
📌 الهدف: تعمل كل hash مختلف حتى لو كلمات السر متشابهة.
مثال:
- مستخدم1 = "123456" + SaltA → hash1
- مستخدم2 = "123456" + SaltB → hash2
رغم إن الباسورد هو نفسه، لكن الـ hash مختلف.
———
🔴 الـ Pepper
الـ Pepper شبه الـ Salt لكن في نقطة مختلفة: بيكون secret value بتضيفه للباسورد قبل الـ hashing.
بعكس الـ Salt اللي ممكن يتخزن مع الـ hash، الـ Pepper مش بيتخزن في الداتابيز، بيتخزن في config آمن أو environment variable.
📌 الهدف: تضيف طبقة حماية إضافية ضد أي حد يسرق الداتابيز. حتى لو معاه الـ hashes + salts، لسه ناقصه الـ pepper.
———
كلمات السر لازم تتحفظ بالـ Hashing + Salt + Pepper، مش بالـ Encryption.
الـ Encryption مكانه في البيانات اللي لازم تسترجعها زي الرسائل أو الملفات.
———
وفقكم الله لكل خير 🌿
BY DevGuide 🇵🇸
Share with your friend now:
tgoop.com/the_developer_guide/5674