التجزئة وسلامة البيانات
تعلّم كيف تنتج SHA-256 وMD5 وHMAC ملخصات ثابتة الطول تتحقق من عدم تغيير البيانات أثناء نقلها أو تخزينها.
التجزئة وسلامة البيانات درس مجاني في Security+ Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Security+ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Security+ Academy 4 دروس في المجموع.
ما دالة التجزئة؟
دالة التجزئة التشفيرية هي خوارزمية رياضية تأخذ مُدخلًا بأي حجم وتنتج مخرجًا بطول ثابت يسمى قيمة التجزئة أو البصمة أو البصمة الرقمية. وتعمل دوال التجزئة في اتجاه واحد: فمن المفترض أن يكون تحديد المُدخل الأصلي انطلاقًا من قيمة التجزئة غير ممكن عمليًا من الناحية الحسابية. وهي حتمية أيضًا؛ إذ ينتج المُدخل نفسه دائمًا قيمة التجزئة نفسها. وتشكل دوال التجزئة أساس التحقق من سلامة البيانات والتوقيعات الرقمية وتخزين كلمات المرور والعديد من آليات الأمان الأخرى.
خصائص دوال التجزئة الآمنة
يجب أن تتوفر في دالة التجزئة التشفيرية الآمنة أربع خصائص أساسية. مقاومة الصورة الأولية: عند معرفة مخرج التجزئة، يستحيل عمليًا من الناحية الحسابية العثور على أي مُدخل ينتجه. مقاومة الصورة الأولية الثانية: عند معرفة مُدخل، يستحيل عمليًا العثور على مُدخل مختلف له قيمة التجزئة نفسها. مقاومة التصادم: يستحيل عمليًا العثور على مُدخلين مختلفين ينتجان مخرج التجزئة نفسه. تأثير الانهيار الجليدي: يؤدي تغيير بت واحد فقط من المُدخل إلى مخرج تجزئة مختلف تمامًا، ما يجعل العبث قابلًا للاكتشاف.
# Avalanche effect demonstration
echo -n 'Hello' | sha256sum
# 185f8db32... (completely different when one char changes)
echo -n 'Hello!' | sha256sum
# 334d016f7... (entirely different hash)
# Same input ALWAYS produces same hash (deterministic)
echo -n 'Security+' | sha256sum
echo -n 'Security+' | sha256sum
# Both outputs are identicalMD5: مكسورة ومتقادمة
تنتج MD5 (Message Digest 5) قيمة تجزئة بطول 128 بت، وكانت تُستخدم على نطاق واسع سابقًا. إلا أن الباحثين أثبتوا وجود هجمات التصادم ضد MD5 في عام 2004، أي أصبح من الممكن العثور على مُدخلين مختلفين ينتجان قيمة التجزئة نفسها. وهذا كارثي للتحقق من السلامة؛ إذ يمكن لمهاجم استبدال ملف ضار بملف له قيمة MD5 نفسها الخاصة بالملف الأصلي. تُعد MD5 مكسورة تمامًا لأغراض الأمان التشفيري، ويجب عدم استخدامها للتحقق من السلامة أو التوقيعات الرقمية أو تجزئة كلمات المرور. ولا تزال تظهر أحيانًا في مجاميع التحقق غير الأمنية (للتحقق من الملفات القديمة)، وهذا مقبول لاكتشاف التلف غير المتعمد فقط.
عائلة SHA: SHA-1 وSHA-256 وSHA-3
تُعد عائلة Secure Hash Algorithm (SHA) أهم مجموعة من دوال التجزئة لشهادة Security+. كانت SHA-1 (بطول 160 بت) المعيار لسنوات، لكنها كُسرت بهجوم تصادم عملي في عام 2017 (مشروع SHAttered من Google)، وأصبحت الآن متقادمة. أما SHA-256 (وهي جزء من عائلة SHA-2 وتنتج مخرجًا بطول 256 بت) فهي معيار الصناعة الحالي للتوقيعات الرقمية وشهادات TLS والتحقق من سلامة الملفات. وSHA-3 (Keccak) خوارزمية بديلة من NIST توفر مقاومة للهجمات التي تستهدف بنية SHA-2، مع بقاء SHA-256 الخيار السائد لمعظم التطبيقات.
# Common hash computations
echo -n 'password123' | sha256sum
# a665a4592...64 hex chars = 256 bits
echo -n 'password123' | sha512sum
# b109f3bb...128 hex chars = 512 bits (SHA-512)
# File integrity check
sha256sum /path/to/downloaded_file.iso > file.sha256
sha256sum -c file.sha256
# file.iso: OKدوال تجزئة كلمات المرور
لا يُقبل أبدًا تخزين كلمات المرور كنص عادي. عند إنشاء المستخدم كلمة مرور، تُخزَّن قيمة التجزئة في قاعدة البيانات بدلًا من كلمة المرور نفسها. وعند تسجيل الدخول، تُجزّأ كلمة المرور التي أدخلها المستخدم وتُقارن بقيمة التجزئة المخزنة. إلا أن SHA-256 القياسية سريعة جدًا لتخزين كلمات المرور؛ إذ يستخدم المهاجمون وحدات معالجة الرسومات لاختبار مليارات قيم التجزئة في الثانية مقابل قواعد بيانات كلمات المرور المسروقة. وتضيف دوال تجزئة كلمات المرور المصممة خصيصًا، مثل bcrypt وPBKDF2 وArgon2، تكلفة حسابية (عوامل العمل) ومتطلبات للذاكرة تجعل الاختراق واسع النطاق غير عملي.
# bcrypt hash example (Python-style pseudocode)
import bcrypt
password = b'mySecretPassword'
# Hash with work factor of 12 (2^12 = 4096 iterations)
hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))
# Stored in DB: $2b$12$H0qS/LkPkAiH8KlxJb3lFuK...
# Verify (never compare raw hashes for bcrypt)
bcrypt.checkpw(password, hashed) # Returns Trueإضافة الملح: التغلب على جداول قوس قزح
جدول قوس قزح هو جدول بحث مُعد مسبقًا يربط كلمات المرور الشائعة بقيم التجزئة الخاصة بها، ما يتيح للمهاجم البحث فورًا عن قيمة تجزئة والعثور على كلمة المرور الأصلية. وللتغلب على جداول قوس قزح، يجب إضافة ملح إلى قيم تجزئة كلمات المرور. والملح قيمة عشوائية تُضاف إلى كلمة المرور قبل تجزئتها، ما يجعل قيمة التجزئة الخاصة بكل مستخدم فريدة حتى إذا كان لدى مستخدمين كلمة المرور نفسها. يُخزَّن الملح إلى جانب قيمة التجزئة، ولا يلزم أن يكون سريًا. وحتى إذا حصل مهاجم على قاعدة بيانات كلمات المرور بأكملها، فلن تفيد جداول قوس قزح المُعدّة مسبقًا، لأن كل قيمة تجزئة استخدمت ملحًا مختلفًا.
# Salt demonstration
# Without salt: same password = same hash (rainbow table attack works)
# SHA256('password123') = always the same hash
# With salt: same password + random salt = unique hash
# SHA256('password123' + 'aBc8xZ') = unique hash for this user
# SHA256('password123' + 'mK2pYq') = completely different hash
# The salt is stored in the database alongside the hashed value
# Format: $salt$hash or combined as in bcrypt outputHMAC: إضافة الاستيثاق إلى التجزئة
إن HMAC (Hash-based Message Authentication Code) بنية تستخدم دالة تجزئة مع مفتاح سري لإنتاج رمز استيثاق. وعلى خلاف قيمة التجزئة العادية، لا يمكن حساب HMAC والتحقق منه إلا لدى الأطراف التي تعرف المفتاح السري. وهذا يوفر السلامة (اكتشاف التغييرات) والاستيثاق (إثبات أن الرسالة صادرة عن جهة تملك المفتاح). ويُستخدم HMAC-SHA256 على نطاق واسع في استيثاق واجهات API (لتوقيع طلبات API) ورموز JWT وعمليات MAC في TLS. ويمنع مهاجمًا يعترض رسالة من استبدالها برسالة بديلة أُعدت خصيصًا.
# Compute HMAC-SHA256 with OpenSSL
openssl dgst -sha256 -hmac 'my-secret-api-key' -hex api_request.json
# Output: HMAC-SHA256(api_request.json)= 3d4e2f...
# Only someone with 'my-secret-api-key' can generate or verify this HMAC
# Used in AWS Signature V4 for API authentication
# Used in JWT HS256 algorithm for token integrityدوال التجزئة في التوقيعات الرقمية
تؤدي دوال التجزئة دورًا محوريًا في التوقيعات الرقمية. عند توقيع مستند كبير، لا تُشفّرون المستند بأكمله باستخدام المفتاح الخاص، لأن ذلك سيكون بطيئًا للغاية. بدلًا من ذلك: (1) تحسبون قيمة تجزئة المستند (بسرعة، فتنتج قيمة ملخصة صغيرة بطول ثابت)، ثم (2) توقّعون قيمة التجزئة الصغيرة باستخدام المفتاح الخاص. فالتوقيع ليس إلا قيمة تجزئة مشفّرة. ويتبع التحقق النمط نفسه: فكّوا تشفير التوقيع للحصول على قيمة التجزئة، واحسبوا تجزئة المستند بشكل مستقل، ثم قارنوا بين القيمتين. تُعد SHA-256 إلزامية في جميع شهادات PKI الحديثة، بينما يُحظر استخدام SHA-1 في الشهادات الجديدة.
مراقبة سلامة الملفات (FIM)
تستخدم مراقبة سلامة الملفات (FIM) دوال التجزئة لاكتشاف التغييرات غير المصرح بها في ملفات النظام المهمة. عند إنشاء خط الأساس، تحسب أداة FIM قيم تجزئة جميع الملفات المراقبة وتخزنها بأمان. ثم تعيد دوريًا (أو باستمرار) حساب تجزئة الملفات وتقارنها بخط الأساس. ويشير أي عدم تطابق إلى تعديل ملف، ربما بواسطة برمجية ضارة أو نتيجة إجراء من مسؤول غير مصرح له. وتستخدم أدوات FIM مثل Tripwire وAIDE (في Linux) وأداة Windows المدمجة لفحص السلامة قيم تجزئة SHA-256. وتُعد FIM مطلوبة بموجب أطر الامتثال مثل PCI-DSS لحماية بيئات بيانات حاملي البطاقات.
# AIDE (Advanced Intrusion Detection Environment) - Linux FIM
# Initialize baseline database
aide --init
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# Check for changes (run via cron daily)
aide --check
# Output shows any files that were added, changed, or deleted
# File: /etc/passwd changed
# MD5 : old_hash != new_hashمجاميع التحقق مقابل قيم التجزئة التشفيرية
من المهم التمييز بين مجاميع التحقق وقيم التجزئة التشفيرية. فمجاميع التحقق مثل CRC32 مصممة لاكتشاف تلف البيانات غير المتعمد أثناء الإرسال؛ وهي سريعة وبسيطة، لكن يمكن للمهاجم تزويرها بسهولة. أما قيم التجزئة التشفيرية (SHA-256) فمصممة لمقاومة التصادم وكشف العبث حتى في مواجهة التلاعب المتعمد. استخدموا مجاميع التحقق عندما تحتاجون فقط إلى التأكد من عدم تلف التنزيل أثناء النقل، واستخدموا قيم التجزئة التشفيرية عندما تحتاجون إلى التحقق من عدم العبث بالملف عمدًا من جانب مهاجم.
هجمات تصادم التجزئة عمليًا
لهجمات تصادم التجزئة تأثيرات واقعية. ففي عام 2017، أنشأ الباحثون ملفي PDF مختلفين لهما قيمة SHA-1 نفسها، ما أثبت إمكانية تزوير شهادات SHA-1. وفي عام 2008، استخدم الباحثون تصادمات MD5 لإنشاء شهادة CA مزيفة تبدو شرعية. ولهذا السبب ترفض المتصفحات شهادات MD5 وSHA-1، ولهذا يجب على سلطات إصدار الشهادات استخدام SHA-256 كحد أدنى. يساعدكم فهم هجمات التصادم على تفسير أسباب اتخاذ قرارات إهمال الخوارزميات، وعلى فهم أن عبارة «لكنها لا تزال تنتج قيمة تجزئة» ليست حجة كافية لاستخدام خوارزميات مكسورة.
تحقق سريع
اختبروا مدى فهمكم لمفاهيم CompTIA Security+ (SY0-701) الواردة في هذا الدرس.
مراجعة الدرس
تعلمتم في هذا الدرس أن دوال التجزئة تنتج قيمًا ملخصة بطول ثابت للتحقق من السلامة؛ وأن MD5 وSHA-1 مكسورتان ومتقادمتان؛ وأن SHA-256 هي المعيار الحالي؛ وأن إضافة الملح تتغلب على هجمات جداول قوس قزح؛ وأن HMAC يضيف الاستيثاق إلى التجزئة باستخدام مفتاح سري مشترك. بعد ذلك سنستكشف تبادل المفاتيح والتشفير الهجين.
الأسئلة الشائعة
هل درس «التجزئة وسلامة البيانات» مجاني؟
نعم — نص درس «التجزئة وسلامة البيانات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Security+ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Security+ Academy 4 دروس في المجموع.
ماذا ستتعلم في «التجزئة وسلامة البيانات»؟
تعلّم كيف تنتج SHA-256 وMD5 وHMAC ملخصات ثابتة الطول تتحقق من عدم تغيير البيانات أثناء نقلها أو تخزينها. تتمرن على Security+ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Security+ Academy؟
لا تُشترط خبرة سابقة. Security+ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التجزئة وسلامة البيانات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Security+ Academy هذا؟
نعم. كل درس في Security+ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- خوارزميات التشفير المتماثل
- التشفير غير المتماثل وأزواج المفاتيح
- التجزئة وسلامة البيانات
- تبادل المفاتيح والتشفير الهجين