التجزئة التشفيرية (Cryptographic Hash): ما الذي تفعله دوال التجزئة في Bitcoin

التجزئة التشفيرية (Cryptographic Hash): ما الذي تفعله دوال التجزئة في Bitcoin

التجزئة التشفيرية (cryptographic hash) هي المخرج ذو الحجم الثابت، ويُطلق عليه أيضًا قيمة التجزئة أو الملخص (digest)، الذي تحسبه دالة التجزئة التشفيرية (cryptographic hash function) من مُدخل معين. صُممت هذه الدالة لتكون أحادية الاتجاه، بمعنى أنه يستحيل عمليًا استرجاع المُدخل منها، ومقاومة للتصادم (collision resistant)، بمعنى أن إيجاد مُدخلين مختلفين يُنتجان نفس المخرج أمر غير عملي بالتصميم. تستخدم Bitcoin دوال التجزئة في إثبات العمل (proof of work) وفي ربط الكتل (blocks) ببعضها.

ما الذي تفعله دالة التجزئة التشفيرية؟

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

يُطلق الناس على المخرج اسم التجزئة التشفيرية، أو قيمة التجزئة، أو الملخص (digest)، كما أن معايير المعهد الوطني للمعايير والتقنية (NIST) تستخدم أيضًا مصطلح "ملخص الرسالة" (message digest). تُسمى عملية حساب التجزئة التشفيرية بالتجزئة (hashing)، أو التجزئة التشفيرية.

يُطبّق الجدول أدناه خوارزمية التجزئة الآمنة 256 (SHA-256)، وهي إحدى دوال التجزئة التشفيرية الأكثر استخدامًا، على مُدخلين بطولين مختلفين جدًا. تحتوي كل قيمة تجزئة على 64 حرفًا سداسي عشري. والترميز السداسي العشري هو ترميز أساسه 16، حيث يمثل كل حرف 4 بتات، لذا فإن 64 حرفًا تعادل 256 بت.

المُدخلطول المُدخل (أحرف)قيمة تجزئة SHA-256
abc3ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq56248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1

ما الخصائص التي تجعل التجزئة تشفيرية؟

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

للتجزئة التشفيرية طول ثابت. فالمدخلات القصيرة والطويلة على حد سواء تُنتج مخرجًا بنفس الحجم: ففي SHA-256، يُعطي المُدخل المكوّن من 3 أحرف والمُدخل المكوّن من 56 حرفًا كلاهما 256 بت.

صُممت التجزئة التشفيرية لتكون مقاومة للصورة الأولية (preimage resistant)، ما يجعل دالة التجزئة دالة أحادية الاتجاه. فبامتلاك قيمة تجزئة فقط، يُفترض أن يكون إيجاد أي مُدخل يُنتجها أمرًا غير عملي حسابيًا. بعبارة أبسط، حساب قيمة التجزئة أمر سهل، بينما استرجاع المُدخل مصمم ليكون غير عملي.

صُممت التجزئة التشفيرية لتكون مقاومة للصورة الثانية (second-preimage resistant). هنا يبدأ المهاجم بمُدخل معروف وقيمة تجزئته، وتكون المهمة هي إيجاد مُدخل مختلف يُعطي نفس قيمة التجزئة. يختلف هذا عن مقاومة الصورة الأولية، حيث يمتلك المهاجم قيمة التجزئة فقط.

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

تُظهر التجزئة التشفيرية ما يُعرف بتأثير الانهيار الجليدي (avalanche effect). فتغيير بسيط في المُدخل يُغيّر قيمة التجزئة بشكل غير متوقع. فتغيير "abc" إلى "abd" يُغيّر 122 بتًا من أصل 256 بتًا في قيمة تجزئة SHA-256، رغم أن حرفًا واحدًا فقط هو المختلف.

كيف تختلف التجزئة التشفيرية عن المجموع الاختباري (checksum) والتشفير والتوقيع؟

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

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

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

ما الذي تفعله دوال التجزئة في Bitcoin؟

تؤدي التجزئة في عالم العملات الرقمية (crypto) عملًا ملموسًا في Bitcoin، التي تعتمد على دوال التجزئة في خمسة مواضع رئيسية. وعادةً ما تُطبّق Bitcoin خوارزمية SHA-256 مرتين، وهو ما يُعرف بـ double SHA-256: إذ تُشغَّل الدالة مرة واحدة على البيانات، ثم مرة أخرى على مخرجاتها الخاصة.

معرّفات المعاملات (Transaction IDs). معرّف المعاملة هو قيمة تجزئة double SHA-256 لبيانات المعاملة المُسلسلة (serialized)، دون احتساب بيانات الشاهد (witness data) الخاصة بمعاملات الشاهد المنفصل (Segregated Witness - SegWit). لذا فإن معرّف المعاملة يتغيّر إذا تغيّر أي مُدخل أو مُخرج في المعاملة.

شجرة ميركل (Merkle tree). شجرة ميركل هي بنية تُكثّف العديد من قيم التجزئة إلى قيمة واحدة. تُجزّئ Bitcoin معرّفات المعاملات في أزواج، مستوى تلو الآخر، إلى أن تتبقى قيمة تجزئة واحدة. هذه القيمة هي جذر ميركل (Merkle root)، وهي تُلخّص كل معاملة في الكتلة. وترويسة الكتلة (block header) هي ملخّص للكتلة بحجم 80 بايتًا، وتحتوي على جذر ميركل.

إثبات العمل (Proof of work). في تعدين Bitcoin، يُجزّئ المُعدِّن ترويسة الكتلة. تحتوي الترويسة على رقم الإصدار، وتجزئة ترويسة الكتلة السابقة، وجذر ميركل، وطابع زمني (timestamp)، وصيغة مُرمَّزة للهدف (target)، ونونس (nonce). والنونس هو رقم يُغيّره المُعدِّن في كل محاولة. والهدف هو حدّ يُحدده نظام Bitcoin، ولا تكون الترويسة صالحة إلا إذا كانت قيمة تجزئة double SHA-256 الخاصة بها، عند قراءتها كرقم، مساوية للهدف أو أقل منه.

روابط الكتل (Block links). تربط التجزئة التشفيرية كل كتلة بالكتلة التالية لها. إذ تحتوي كل ترويسة كتلة على تجزئة ترويسة الكتلة السابقة، في حقل يُسمى "تجزئة ترويسة الكتلة السابقة"، وهذا الحقل هو ما يربط الكتل ببعضها بالترتيب.

العناوين (Addresses). تساعد التجزئة التشفيرية أيضًا في بناء العناوين. تُشتق العناوين القديمة (legacy) وعناوين SegWit ذات المفتاح الواحد عن طريق تجزئة المفتاح العام أولًا بخوارزمية SHA-256 ثم بخوارزمية RIPEMD-160. وRIPEMD-160 هي دالة تجزئة ثانية بمخرج حجمه 160 بتًا. أما عناوين تجزئة النص البرمجي (script-hash) وعناوين Taproot فتُبنى بطريقة مختلفة، لذا لا يتبع كل عنوان Bitcoin هذا النمط.

لماذا تجعل التجزئة سجل البلوكتشين قابلًا لكشف أي تلاعب به؟

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

  1. يتغيّر معرّف المعاملة، وبالتالي يتغيّر جذر ميركل لتلك الكتلة.
  2. تحتوي ترويسة الكتلة على جذر ميركل، لذا تتغيّر تجزئة تلك الترويسة.
  3. تحتفظ الكتلة التالية بتجزئة الترويسة القديمة في حقل "تجزئة ترويسة الكتلة السابقة"، ولم تعد القيمة المحفوظة مطابقة للقيمة المُعاد حسابها.
  4. لإعادة اتساق السلسلة، يجب إعادة بناء كل كتلة لاحقة، ويحتاج كل منها إلى إعادة إثبات العمل الخاص بها.

وبما أن التجزئة التشفيرية حتمية، فإن أي شخص يملك نسخًا من الكتل، بما في ذلك عقدة كاملة (full node)، يمكنه إعادة حساب تجزئة أي ترويسة ومقارنتها بالقيمة المحفوظة في الكتلة التالية. والعقدة الكاملة هي حاسوب يُشغّل برنامج Bitcoin، ويحتفظ بالسلسلة، ويتحقق من الكتل المستلمة وفقًا لقواعد الإجماع (consensus rules).

قابلية التحقق (Verifiability) هي قدرة المشاركين في الشبكة على التحقق بأنفسهم من أي معاملة أو كتلة. وتساهم التجزئة في قابلية التحقق، لأن بإمكان أي مشارك يملك نسخًا من الكتل تكرار عملية مقارنة التجزئة تلك.

عدم القابلية للتغيير (Immutability) هي مقاومة شبكة البلوكتشين للرقابة والتغيير. وتساهم التجزئة في هذه المقاومة من خلال جعل أي تغيير في السجل واضحًا للعيان.

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

ما الذي لا تُخبرك به التجزئة التشفيرية؟

يمكن للتجزئة التشفيرية أن تُظهر أن البيانات قد تغيّرت، لكنها لا تُظهر من قام بإنشائها أو تغييرها. فإثبات الهوية (authorship) هو مهمة التوقيع الرقمي.

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

صُممت دالة التجزئة التشفيرية لتكون أحادية الاتجاه ومقاومة للتصادم. وهذه أهداف تصميم، يصفها المعهد الوطني للمعايير والتقنية (NIST) بأنها خصائص متوقعة لمثل هذه الدالة، لا ضمانات مُثبَتة.

يمكن أن تضعف دالة التجزئة مع مرور الوقت، وتُعد خوارزمية SHA-1 حالة موثّقة لذلك. فقد أوقف NIST التوصية باستخدام SHA-1 عام 2011، ومنع استخدامها في التوقيعات الرقمية في نهاية عام 2013. وفي فبراير 2017، نشر باحثون من مركز Centrum Wiskunde & Informatica (CWI) في أمستردام وGoogle أول تصادم عملي لخوارزمية SHA-1. وفي ديسمبر 2022، أعلن NIST أنه ينبغي التخلص التدريجي من SHA-1 بحلول نهاية عام 2030.

حتى أكتوبر 2026، لا يزال NIST يُدرج SHA-256 ضمن الخوارزميات المعتمدة، ولا تذكر صفحته الخاصة بدوال التجزئة أي هجوم تصادم أو هجوم صورة أولية ناجح على الدالة الكاملة. وهذا سجل حتى تاريخه، وليس وعدًا بشأن المستقبل.

12 نوفمبر 2026

أخبار GoMining

قد تكون مهتمًا بـ