انتقل إلى المحتوى الرئيسي

دوال تجزئة التشفير

في هذا الدرس سنتناول دوال تجزئة التشفير التي تجد استخداماً واسعاً في التحقق السريع والمصادقة.

بنهاية الدرس سنكون قد تناولنا:

  • ما هي دوال تجزئة التشفير
  • أمثلة كود بايثون توضح استخدام دوال التجزئة
  • نظرة على تطبيقات التجزئة التشفيرية
  • أمان التجزئة التشفيرية
  • التهديدات لهذه الخوارزميات من الحواسيب الكلاسيكية والكمومية على حد سواء

مقدمة إلى التجزئة التشفيرية

تمثّل دوال التجزئة بنية قيّمة في علم التشفير لأنها تتيح التحقق مع الحفاظ على السرية. وبهذا تُشكّل دوال التجزئة مكوناً مهماً في آليات مصادقة البيانات وسلامتها، كـرموز مصادقة الرسائل المستندة إلى التجزئة (HMAC) والتوقيعات الرقمية. ستناقش هذه المقالة الأفكار الأساسية واعتبارات الأمان التي تدعم دوال تجزئة التشفير، وتستعرض الثغرات المحتملة الناجمة عن ظهور الحوسبة الكمومية.

الأساس المنطقي والتصميم الأساسي لدوال التجزئة

كثيرة هي الحالات التي تحتاج فيها المصادقة والتحقق من السلامة إلى إجرائها بتكلفة منخفضة دون الكشف عن معلومات خاصة للطرف المُنفِّذ للتحقق.

فمثلاً، عند تنزيل برنامج من خادم بعيد، ثمة حاجة إلى آلية فعّالة للتحقق من أن البرنامج المُنزَّل لم يُعدَّل منذ إنشائه من قِبل مؤلفه الأصلي. وبالمثل، عند مصادقة مستخدمي تطبيقات الويب، سيكون من المُفضَّل استخدام آلية لا تنطوي على التخزين الفعلي لكلمات المرور أو نقلها، مما قد يُعرّض سريتها للخطر.

تُعالج دوال تجزئة التشفير (CHFs) هذه الاحتياجات بكفاءة وأمان.

في جوهرها، تأخذ دالة تجزئة التشفير مدخلاً (أو رسالة) بطول عشوائي وتُعيد سلسلة ثابتة الحجم من n بت كمخرج. يُسمى مخرج CHF أيضاً ملخصاً. ينبغي أن تُحقق دالة CHF مفيدة عدة خصائص أساسية:

  1. التوحيد: ينبغي أن تتوزع الملخصات التي تُنتجها دالة CHF بشكل منتظم وأن تبدو عشوائية. الهدف ضمان أن المخرج لا يكشف عن أي معلومات حول المدخل.
  2. الحتمية: لمدخل معين، يجب أن تُنتج دالة CHF دائماً نفس الملخص، أي أنها يجب أن تكون حتمية.
  3. اللا-عكسية: دالة CHF هي دالة أحادية الاتجاه بمعنى أنه بمعلومية الملخص، ينبغي أن يكون عكس التجزئة للحصول على المدخل أمراً غير ممكن عملياً.
  4. الحقنية التقريبية: رغم أن دوال CHF هي دوال كثير-إلى-واحد، ينبغي أن تبدو كدوال واحد-إلى-واحد. يتحقق هذا بالجمع بين حجم فضاء مخرجات ضخم وتأثير الشلال الذي يجعل التغييرات الطفيفة في المدخل تؤدي إلى ملخصات مختلفة اختلافاً جذرياً. تُعرف هذه الخاصية بالحقنية التقريبية.

بناءً على هذا، يمكن التحقق من صحة بيانات ما مقارنةً بالنسخة الأصلية عبر مقارنة ملخص البيانات بملخص الأصل.

  • إذا تطابق الملخصان، يمكننا الثقة باحتمال مرتفع بأن البيانات مطابقة للأصل.
  • إذا اختلفا، يمكننا التأكد من أن البيانات عُبث بها أو أنها غير أصيلة.

نظراً لأن ملخصات CHF لا تكشف عن المحتوى الفعلي للبيانات أو الأصل، فإنها تتيح التحقق مع الحفاظ على الخصوصية.

Mathematical description

يمكن تعريف دالة التجزئة HH على النحو التالي:

H:Σ{0,1}nH : Σ^* \rightarrow \{0,1\}^n

حيث ΣΣ^* هي مجموعة جميع السلاسل الممكنة التي يمكن اعتبارها سلاسل ثنائية بأي طول.

كون حجم نطاق المدخلات ΣΣ^* لـHH غير محدود بينما حجم مجال المخرجات {0,1}n\{0,1\}^n محدود يعني بالضرورة أن HH دالة كثير-إلى-واحد تُعيّن لأجل ما لا نهاية من المدخلات أي سلسلة n-بت معطاة.

خاصيتا التوحيد والحتمية محتوَيتان بشكل جميل في نموذج الأوراكل العشوائي للتجزئة التشفيرية.

مثال على التجزئة التشفيرية في بايثون باستخدام SHA-256

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

# Added by doQumentation — required packages for this notebook
!pip install -q cryptography
# Begin by importing some necessary modules
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes

# Helper function that returns the number of characters different in two strings
def char_diff(str1, str2):
return sum(str1[i] != str2[i] for i in range(len(str1)))

# Messages to be hashed
message_1 = b"Buy 10000 shares of WXYZ stock now!"
message_2 = b"Buy 10000 shares of VXYZ stock now!"

print(f"The two messages differ by { char_diff(message_1, message_2)} characters")
The two messages differ by 1 characters

الرسالتان تختلفان في حرف واحد بالضبط.

بعد ذلك، ننشئ كائنات hash لتمكين عملية التجزئة، وهي تتضمن استدعاءات لطريقتين: update وfinalize.

نرى أنه بسبب تأثير الشلال في دالة CHF لـSHA-256، يؤدي اختلاف حرف واحد في رسائل المدخلات إلى ملخصين مختلفين اختلافاً كبيراً.

# Create new SHA-256 hash objects, one for each message
chf_1 = hashes.Hash(hashes.SHA256(), backend=default_backend())
chf_2 = hashes.Hash(hashes.SHA256(), backend=default_backend())

# Update each hash object with the bytes of the corresponding message
chf_1.update(message_1)
chf_2.update(message_2)

# Finalize the hash process and obtain the digests
digest_1 = chf_1.finalize()
digest_2 = chf_2.finalize()

# Convert the resulting hash to hexadecimal strings for convenient printing
digest_1_str = digest_1.hex()
digest_2_str = digest_2.hex()

# Print out the digests as strings
print(f"digest-1: {digest_1_str}")
print(f"digest-2: {digest_2_str}")

print(f"The two digests differ by { char_diff(digest_1_str, digest_2_str)} characters")
digest-1: 6e0e6261b7131bd80ffdb2a4d42f9d042636350e45e184b92fcbcc9646eaf1e7
digest-2: 6b0abb368c3a1730f935b68105e3f3ae7fd43d7e786d3ed3503dbb45c74ada46
The two digests differ by 57 characters

تطبيقات التجزئة التشفيرية

الخصائص الفريدة لدوال CHF تجعلها مناسبة لطيف واسع من التطبيقات:

  • فحوصات سلامة البيانات: يمكن استخدام دوال التجزئة لإنشاء مجموع تدقيق (checksum) لمجموعة من البيانات. أي تعديل على البيانات، مقصود أو غير مقصود، سيؤدي إلى مجموع تدقيق مختلف، يُنبّه الأنظمة أو المستخدمين إلى التغيير. مجموع التدقيق عادةً أصغر حجماً بكثير من البيانات الأصلية، مما يجعل مقارنات مجاميع التدقيق سريعة جداً.

Fig 1: Secure hashing for data integrity checks

الشكل 1. التجزئة الآمنة لسلامة البيانات

  • التوقيعات الرقمية: التجزئة التشفيرية ضرورية لعمل التوقيعات الرقمية إذ تتضمن مقارنة الرسائل المُجزَّأة تشفيرياً لإثبات الأصالة والسلامة مع الحفاظ على الخصوصية.

Fig 2: Digital signatures

الشكل 2. التوقيعات الرقمية

  • البلوك تشين والعملات المشفرة: تعتمد العملات المشفرة كالبيتكوين اعتماداً كبيراً على دوال CHF، لا سيما في إنشاء سلامة المعاملات وتمكين آليات الإجماع كـإثبات العمل.

أمان التجزئة التشفيرية

يُقيَّم أمان دالة CHF عادةً بناءً على مقاومتها لنوعَين من الهجمات: هجمات الصورة الأولية وهجمات التصادم.

مقاومة الصورة الأولية

مقاومة الصورة الأولية تعني أنه بمعلومية الملخص، ينبغي أن يكون إيجاد المدخل أمراً غير ممكن عملياً.

هذا مرتبط بالخاصية الأحادية الاتجاه لدوال CHF.

صُمِّمت دالة CHF الجيدة بطريقة تجعل من يريد شن هجوم على الصورة الأولية لا يملك خياراً أفضل من نهج القوة الغاشمة، الذي يتسم بتعقيد زمني 2n2^n.

التفاصيل الرياضية

بمعلومية دالة CHF وهي HH وملخص gg، ينبغي أن يكون إيجاد أي مدخل mm من الصورة الأولية لـgg بحيث H(m)=gH(m) = g أمراً غير ممكن حسابياً.

مقاومة التصادم

مقاومة التصادم تعني أنه من الصعب إيجاد مدخلَين مختلفَين يُنتجان الملخص ذاته.

تصادم التجزئة التشفيري يحدث حين يُنتج مدخلان الملخص ذاته. في حين أن التصادمات موجودة حتماً نظراً للطبيعة الكثير-إلى-واحد لدوال CHF، فإن دالة CHF الجيدة تجعل إيجاد تصادم بإرادة أمراً غير ممكن عملياً.

مقاومة التصادم أمر بالغ الأهمية للتطبيقات كالتوقيعات الرقمية والشهادات، حيث قد يكون من الكارثي أن يتمكن طرف خبيث من إنشاء تزوير يُنتج القيمة الهاشية ذاتها.

التفاصيل الرياضية لتصادمات التجزئة

يمكن إيجاد m1,m2m_1, m_2 بحيث H(m1)=H(m2)H(m_1) = H(m_2).

طول التجزئة

مقاومة التصادم متطلب أصعب من مقاومة الصورة الأولية وتستلزم أطواल مخرجات ضعف ما هو مطلوب لمقاومة الصورة الأولية. ذلك لأن هجوم القوة الغاشمة المعروف بـهجوم عيد الميلاد، الذي يمكن استخدامه للكشف عن تصادمات التجزئة، يتسم بتعقيد زمني 2n/22^{n/2}.

في غياب الثغرات التحليلية التشفيرية، يتأثر أمان دالة التجزئة إذاً بصورة رئيسية بطول التجزئة. فكلما كانت التجزئة أطول، كانت أكثر أماناً، إذ يصعب شن هجمات القوة الغاشمة.

دوال تجزئة التشفير الأكثر استخداماً

يُدرج الجدول التالي بعض دوال تجزئة التشفير الأكثر استخداماً، مع أطوال التجزئة ومجالات التطبيق الرئيسية:

دالة التجزئةطول المخرج (بت)التطبيقات الشائعة
MD5128فحص سلامة الملفات، الأنظمة القديمة، الاستخدامات غير التشفيرية
SHA-1160الأنظمة القديمة، Git للتحكم في الإصدار
SHA-256256العملات المشفرة (بيتكوين)، التوقيعات الرقمية، الشهادات
SHA-3متغير (حتى 512)تطبيقات تشفير متنوعة، خلف لـSHA-2
Blake2متغير (حتى 512)التشفير، يحل محل MD5/SHA-1 في بعض الأنظمة
Blake3متغير (حتى 256)التشفير، تجزئة الملفات، سلامة البيانات
  • MD5 وSHA-1، وإن لا تزالان في الاستخدام في التطبيقات الأقل حساسية، تُعتبران متقادمتَين من حيث مقاومة التصادم ولا يُوصى بهما للأنظمة الجديدة. SHA-256، وهو جزء من عائلة SHA-2، مستخدم على نطاق واسع وآمن حالياً لمعظم التطبيقات.
  • SHA-3 معيار أحدث اختاره NIST عام 2015 فائزاً في منافسة NIST لدوال التجزئة. صُمِّم ليكون بديلاً مباشراً لـSHA-2، لكنه يتمتع أيضاً ببعض الخصائص الداخلية المختلفة ومقاوم لأنواع معينة من الهجمات التي قد تكون فعّالة ضد SHA-2.
  • Blake2 وBlake3 دوال تجزئة تشفيرية أسرع من MD5 وSHA-1 وSHA-2 وSHA-3، لكنها آمنة على الأقل بمستوى أحدث المعايير SHA-3. تُستخدم بشكل متزايد في الأنظمة الجديدة، لا سيما حيث تكون السرعة مهمة.

المخاطر الكمومية على التجزئة التشفيرية التقليدية

التهديد الكمومي الرئيسي للتجزئة التشفيرية يأتي من هجمات القوة الغاشمة.

بمعلومية ملخص معين، سيجرّب المهاجم مدخلات عشوائية حتى يعثر على واحد يُنتج الملخص ذاته.

مع وجود nn بت في المدخل، توجد 2n2^n قيمة محتملة. لذا يحتاج المهاجم إلى تجربة نحو 2n12^{n-1} مدخل للحصول على فرصة نجاح تتجاوز 50%.

خوارزمية غروفر

في سياق بحث غير منتظم كهذا، يمكن لخوارزمية غروفر توفير تسريع تربيعي باستخدام تقنية تُعرف بـتضخيم السعة الكمومية، مما يُقلّص التعقيد الزمني لهجوم الصورة الأولية إلى 2n/22^{n/2}.

من الناحية العملية، يعني ذلك أن دالة CHF ذات 256 بت، المعتبرة حالياً آمنة ضد هجمات الصورة الأولية من الحواسيب الكلاسيكية، ستوفر المستوى ذاته من الأمان كدالة CHF ذات 128 بت حين يواجه مهاجماً كمومياً يستخدم خوارزمية غروفر.

خوارزمية غروفر بحد ذاتها ليست معروفة بتقديم تسريعات كمومية إضافية فيما يتعلق بهجمات التصادم تتجاوز الحد الذي يضعه هجوم عيد الميلاد الذي يمكن تنفيذه على الحواسيب الكلاسيكية. نظراً لأن هجوم عيد الميلاد الكلاسيكي يستلزم بالفعل أن تستخدم دوال CHF أطوال تجزئة ضعف ما هو مطلوب لمقاومة الصورة الأولية، فإن حقيقة أن بحث غروفر يُنصّف فعلياً طول التجزئة فيما يخص هجمات الصورة الأولية لا تمثل تهديداً عملياً.

فمثلاً، في حالة SHA-256، سيظل تنفيذ هجوم صورة أولية بمساعدة غروفر يتطلب إجراء ما يقارب 21282^{128} عملية، وهو أمر غير ممكن عملياً في المستقبل المنظور.

خوارزمية BHT

اقترح Brassard وHøyer وTapp عام 1997 خوارزمية كمومية تجمع جوانب من هجوم عيد الميلاد مع بحث غروفر (BHT)، وتُتيح نظرياً مقياساً مقداره O(2n/3)O(2^{n/3}) لإيجاد تصادمات التجزئة. غير أن هذا التحسين في المقياس مشروط بوجود تقنية ذاكرة الوصول العشوائي الكمومية QRAM التي لا وجود لها حالياً.

بدون QRAM، يكون المقياس القابل للتحقيق O~(22n/5)\tilde{O}(2^{2n/5})، وبالنسبة لأطوال التجزئة المستخدمة حالياً، لا يمثل هذا التحسين الطفيف في قدرة إيجاد التصادم نسبةً إلى هجوم عيد الميلاد تهديداً بالغاً.

الملخص

دوال تجزئة التشفير مكوّن أساسي لضمان سلامة البيانات والخصوصية في أنظمة المعلومات الرقمية، وتجد تطبيقاً واسعاً في سياقات كثيرة.

تُفهم متطلبات أمان دوال CHF أساساً من حيث مقاومتها لهجمات الصورة الأولية والتصادم. بالنسبة لدوال CHF المُصمَّمة جيداً، يُعد طول التجزئة مؤشراً جيداً على مستوى الأمان.

في حين أن ظهور الحواسيب الكمومية التي تُنفّذ خوارزميتَي غروفر وBHT يؤثر نظرياً على مقاومة الصورة الأولية والتصادم لدوال CHF التقليدية، فإن أطوال التجزئة الطويلة المستخدمة اليوم تعني أن خوارزميات التجزئة التشفيرية الحديثة كـSHA-3 ستبقى على الأرجح آمنة ما لم تُكتشف هجمات تحليل تشفيري غير معروفة حتى الآن.

تكمن أهمية دوال CHF في دورها كلبنة بناء أساسية لمخططات التشفير المقاومة للكم، مما يضمن بقاء المعلومات الرقمية آمنة حتى في مواجهة التطورات المستقبلية المحتملة في خوارزميات وتقنيات الحوسبة الكمومية.