ما هو الـ Hashing؟

مشاركة
Copied to clipboard!
ما هو الـ Hashing؟
الإستماع الى هذه المقالة
00:00 / 00:00

تشير كلمة التجزئة (أو Hashing) الى عملية انشاء مخرجات ذي حجم ثابت عن طريق مدخلات ذي حجم متغير. يتم ذلك من خلال استخدام الصيغ الرياضية المعروفة باسم دالات التجزئة (يتم تطبيقها كـخوارزميات تجزئة). 

على الرغم من أن ليست جميع دالات التجزئة تستخدم التشفير إلا أن ما يسمى بدالات/وظائف تجزئة التشفير هي جوهر العملات الرقمية. بفضلهم تتمكن البلوكشين والأنظمة الموزعة الأخرى من الوصول الى مستويات كبيرة من نزاهة البيانات وأمانها.

تعتبر كل من وظائف التجزئة التقليدية والتشفيرية حتمية. ومعنى أن تكون حتمية هو أنه طالما لم يتغير الإدخال (المدخلات) فإن خوارزمية التجزئة ستنتج دائمًا نفسفإن خوارزمية التجزئة ستنتج دائمًا نفس المخرجات (المعروف أيضًا باسم Digest أو Hash).

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


كيف تعمل دالات/وظائف التجزئة؟

تنتج دالات التجزئة المختلفة مخرجات بأحجام مختلفة لكن أحجام المخرجات الممكنة لكل خوارزمية تجزئة ثابتة دائمًا. على سبيل المثال لا يمكن لخوارزمية SHA-256 سوى إنتاج مخرجات يبلغ حجمها 256 bits، بينما تنشئ SHA-1 ملخصًا مكونًا من 160 bits دائمًا.

للتوضيح، لنقم بتشغيل كلمة “Binance” و “binance” من خلال خوارزمية التجزئة SHA-256 (التي يتم إستخدامها في البيتكوين).

SHA-256

Input

Output (256 bits)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


لاحظ أن التغيير الطفيف (في شكل الحرف الأول) أدى إلى قيمة تجزئة مختلفة تمامًا. ولكن نظرًا لأننا نستخدم SHA-256 فسيكون للمخرجات دائمًا حجم ثابت يبلغ 256-bits (أو 64 حرفًا) بغض النظر عن حجم الإدخال (Input). أيضًا لا يهم عدد المرات التي نقوم فيها بتشغيل الكلمتين خلال الخوارزمية حيث سيظل المخرجان ثابتان.

على العكس إذا قمنا بتشغيل نفس المدخلات من خلال خوارزمية تجزئة SHA-1 فسنحصل على النتائج التالية:

SHA-1

Input

Output (160 bits)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


الجدير بالذكر أن كلمة SHA هي اختصار لخوارزميات Secure Hash. وهي تشير الى مجموعة من دالات تجزئة التشفير التي تشمل خوارزميات SHA-0 و SHA-1 مع مجموعات SHA-2 و SHA-3. تعد SHA-256 جزءًا من مجموعة SHA-2 بالإضافة الى SHA-512 ومتغيرات أخرى. وحاليًا تعتبر مجموعات SHA-2 و SHA-3 فقط آمنة.


لماذا تكون مهمة؟

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

القوة الحقيقية للتجزئة تأتي عند التعامل مع كم هائل من المعلومات. على سبيل المثال يمكن تشغيل ملف كبير أو مجموعة بيانات من خلال دالة هاش ثم استخدام ناتجها للتحقق بسرعة من دقة وتكامل البيانات. وهذا ممكن بسبب الطبيعة الحتمية لدالات التجزئة: حيث تؤدي المدخلات دائما إلى مخرجات مبسطة ومكثفة (هاش). هذه التقنية تزيل الحاجة إلى تخزين وتذكر كميات كبيرة من البيانات.

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


دالات هاش التشفيرية

مرة أخرى، يمكن تعريف دالة هاش (التجزئة) التي تستخدم تقنيات التشفير على أنها دالة هاش التشفيرية. يتطلب اختراق دالة هاش التشفيرية عدد لا يحصى من محاولات هجوم القوة العمياء (brute-force). لكي يتم عكس دالة هاش التشفيرية يجب أن يخمنوا ماذا كانت المدخلات عن طريق التجربة والخطأ حتى يتم إنتاج المخرجات المقابلة. لكن من الممكن أيضا أن تنتج مدخلات مختلفة نفس المخرجات وفي هذه الحالة يحدث “تصادم أو collision”.

من الناحية الفنية تحتاج دالة التجزئة التشفيرية إلى اتباع ثلاث خصائص حتى يمكن اعتبارها آمنة بشكل فعال. قد نصف تلك الخصائص بالتالي: collision resistance و preimage resistance و second preimage resistance.

قبل مناقشة كل خاصية دعونا نلخص المنطق الخاص بهم في ثلاث جمل قصيرة.

  • Collision resistance (مقاومة للتصادم): لا يمكن العثور على أي مُدخلين مختلفين ينتجان نفس التجزئة (الـهاش) كمخرجات.

  • Preimage resistance: لا يمكن “عكس” وظيفة التجزئة (البحث عن المدخلات من مخرجات معينة).

  • Second-preimage resistance: لا يمكن العثور على أي مُدخل ثاني يصطدم مع مُدخل أخر محدد.


Collision resistance

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

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

من بين خوارزميات SHA المختلفة لم تعد مجموعات SHA-0 و SHA-1 آمنة نظرًا لوجود تصادمات. تعتبر حاليا مجموعات SHA-2 و SHA-3 مقاومة للتصادم.


Preimage resistance

ترتبط خاصية preimage resistance بمفهوم الوظائف أحادية الاتجاه. حيث تعتبر دالة التجزئة preimage-resistant عندما يكون هناك احتمال ضئيل للغاية لإيجاد شخص ما المدخلات التي تنتج مخرجات معينة.

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

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


Second-preimage resistance

للتبسيط قد نقول أن Second-preimage resistance تقع في مكان ما بين الخصائص الأخرى السابقة. يحدث هجوم second-preimage عندما يتمكن شخص ما من العثور على مُدْخَل محدد يولد نفس ناتج مُدْخَل آخر يعرفه بالفعل.

بمعنى اخر، فإن هجوم second-preimage يتضمن العثور على تصادم ولكن بدلاً من البحث عن إثنين من المدخلات العشوائية التي تولد نفس الهاش كناتج، فإنهم يبحثون عن مُدْخَل يولد نفس الهاش الذي تم إنشاؤه بواسطة مُدْخَل محدد آخر.

لذلك فإن أي دالة تجزئة مقاومة للاصطدامات تكون أيضًا مقاومة لهجمات second-preimage حيث أن الأخيرة سوف تعني حدوث تصادم دائمًا. لكن لا يزال بوسع المهاجمون القيام بهجمة مبكرة على دالة مقاومة للاصطدام لأنها تتضمن إيجاد مُدْخَل واحد من مُخْرَج واحد.


التعدين

هناك العديد من الخطوات في عملية تعدين البيتكوين التي تحتوي على دالات تجزئة مثل التحقق من الأرصدة وربط المدخلات والمخرجات بالمعاملات وتجزئة المعاملات داخل كتلة لتكوين Merkle Tree. لكن أحد الأسباب الرئيسية التي تجعل بلوكشين البيتكوين آمَن هو حقيقة أن القائمون على التعدين بحاجة إلى عدد لا يحصى من عمليات التجزئة من أجل إيجاد حل صالح للكتلة التالية.

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

في هذه الحالة يمثل معدل التجزئة مقدار الطاقة الحاسوبية التي يتم استثمارها في تعدين البيتكوين. في حالة زيادة معدل تجزئة الشبكة سيقوم بروتوكول البيتكوين تلقائيًا بضبط صعوبة التعدين بحيث يظل متوسط الوقت اللازم لتعدين كتلة قريبًا من 10 دقائق. في المقابل إذا قرر العديد من القائمين على التعدين إيقاف التعدين مما سيؤدي الى انخفاض معدل التجزئة بشكل كبير فسيتم ضبط صعوبة التعدين مما يسهل عملية التعدين (حتى يعود متوسط وقت تعدين الكتلة إلى 10 دقائق).

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

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


أفكار ختامية

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

Loading