Hashcash نظام لطوابع حسابية يعتمد على Proof of Work، أي إثبات إنجاز عمل. يبيّن الطابع أنه عُثر على نتيجة تستوفي شرطًا محددًا. وهو بحد ذاته ليس بيتكوين ولا رصيد حساب قابلًا للتحويل.
تريد آنا إرسال بريد إلكتروني إلى بافيل. إرسال نسخة إضافية لا يكلفها شيئًا يُذكر، لكن مرسل ملايين الإعلانات يتمتع بالميزة نفسها. يضيف Hashcash عقبة صغيرة: على حاسوب المرسل أن ينتج طابعًا حسابيًا أولًا. الكلفة وقت وطاقة، لا مبلغ يُدفع إلى البريد. أعلن Adam Back عن تنفيذه في 28 مارس 1997، ونشر وصفًا تقنيًا في 2002. وسبق ذلك بحثٌ قدمته Cynthia Dwork مع Moni Naor حول فكرة مشابهة في 1992. ينتمي Hashcash إلى هذه المحاولات للحد من إساءة استخدام الشبكات. [1] [12]
الهاش بصمة ذات طول ثابت تُحسب من البيانات. يغيّر برنامج آنا قيمة تجريبية داخل الطابع ويحسب البصمة مجددًا حتى تبدأ بعدد كافٍ من البتات الصفرية. البت رقم ثنائي: صفر أو واحد. إذا اشترطنا b من الأصفار، كان احتمال نجاح المحاولة الواحدة نحو 2^-b، ومتوسط المحاولات 2^b. عند b = 20 يكون المتوسط 1048576 عملية حساب، وليس عددًا إلزاميًا دقيقًا. قد يحالف البرنامج الحظ سريعًا، وقد يستغرق وقتًا أطول. يتحقق بافيل من الطابع النهائي بحساب هاش واحد، لكن عليه أيضًا فحص بياناته وشروط قبوله. [10] [11]
لو استطاعت آنا إرفاق طابع واحد بمليون رسالة لفقدت العقبة معناها. لذلك يتضمن الطابع مستلمًا أو خدمة محددة وتاريخًا. يفحص المستلم الصلاحية ويسجل الطوابع المقبولة لرفض إعادة استخدامها، وهو ما يسمى replay. التاريخ وحده، أو حتى ربط الطابع بمحتوى الرسالة، لا يمنع إرسال الرسالة نفسها مرة أخرى. لا يملك Hashcash سجل إنفاق عالميًا مشتركًا؛ تتولى الخدمة المستقبلة هذا الفحص. صحة الهاش لا تعني إذن جواز قبول الطابع مرة ثانية. [11] [12]
تحدد الخدمة المستقبلة الصعوبة المطلوبة. كل بت صفري إضافي يضاعف تقريبًا متوسط العمل. الشرط الضعيف لا يؤخر مرسل الرسائل المزعجة كثيرًا، والقوي يثقل كاهل المستخدم العادي أيضًا. لذلك فالعدد 20 مثال وليس معيار أمان أبديًا. كما أن العدد نفسه من المحاولات يستغرق وقتًا مختلفًا على هاتف قديم وحاسوب سريع. ينبغي للخدمة مراعاة أداء الأجهزة ومدة الصلاحية وقدرتها الخاصة. لا يفرض Hashcash عددًا موحدًا من الثواني على الجميع. [10] [11]
العمل الحسابي لا يميز الشخص المحترم من المهاجم. يستطيع مرسل الرسائل المزعجة الذي يملك حواسيب كثيرة أو botnet، أي شبكة أجهزة مخترقة، توزيع العمل وتحميل الآخرين جزءًا من كلفته. وفي الوقت نفسه تستهلك بطارية المستخدم العادي. يهدف Hashcash إلى تغيير كلفة الهجوم، لا ضمان زوال الرسائل المزعجة. ولا يشفّر الطابع الرسالة أو يثبت الهوية المدنية للمرسل أو يضمن وصولها. إنه شرط قبول تستطيع الخدمة جمعه مع وسائل حماية أخرى. [10]
صيغة الإصدار 1 هي 1:bits:date:resource:ext:rand:counter. تشير الحقول إلى الإصدار والصعوبة المعلنة والتاريخ والمستلم أو الخدمة والامتدادات وقيمة عشوائية وعداد متغير. يذكر حقل bits عدد البتات الصفرية في بداية البصمة وفق ما يدعيه المرسل، لا عدد المحاولات التي نفذها الحاسوب فعليا. هذه الأسماء جزء من الصيغة التقنية فلا تُترجم. يحسب التنفيذ التقليدي SHA-1 للسلسلة كاملة. يجب أن تستوفي البصمة الفعلية الشرط؛ كتابة رقم في bits لا تكفي. هذا وصف لصيغة تاريخية، وليس توصية باستخدام SHA-1 في تصميمات أمنية جديدة. يستخدم Bitcoin صيغة بيانات ودالة هاش مختلفتين. [11] [13]
نبحث هنا عن مدخل تعطي بصمته بداية محددة مسبقًا. يسمى هذا المدخل partial preimage: تستوفي بصمته الجزء المحدد من الشرط، بينما يمكن أن يأخذ باقي البصمة أي قيمة. أما التصادم فهو حصول مدخلين مختلفين على البصمة نفسها. تستخدم بعض النصوص التاريخية العبارة الأوسع partial collision، لكن التمييز ضروري لفهم العمل. الهجوم الذي يجد تصادمات SHA-1 لا يحل تلقائيًا مسألة العثور على البداية المطلوبة. ولا يجعل ذلك SHA-1 خيارًا عامًا مناسبًا للأمان اليوم. [10] [11] [13]
قدّم Hal Finney في 2004 نظام RPOW، اختصارًا لـReusable Proofs of Work. كان المستخدم يستطيع تقديم إثبات عمل والحصول على رمز جديد؛ وعند نقله لاحقًا يُبطل الرمز القديم ويُستبدل بآخر. لم تكن إعادة الاستخدام تعني نسخ الطابع نفسه بلا حدود. اعتمد النظام على خادم مزود بوحدة آمنة IBM 4758 وعلى التحقق عن بُعد من البرنامج الجاري تشغيله. قلّل ذلك الحاجة إلى الثقة بالمشغّل، لكنه أبقى افتراضات تتعلق بالأجهزة والشركة المصنعة. كان RPOW سلفًا تجريبيًا، لا إجماع Bitcoin اللامركزي. [7] [15]
يستشهد Bitcoin Whitepaper صراحةً بـHashcash الذي طوّره Back. استخدم ساتوشي الفرق نفسه: العثور على نتيجة يتطلب محاولات متكررة، بينما يسهل على الآخرين التحقق منها. يبحث معدّنو Bitcoin عن ترويسة كتلة صالحة تلخص كتلة معاملات وتشير إلى الكتلة السابقة. يستخدمون double SHA-256، أي تطبيق SHA-256 مرتين متتاليتين، ويقارنون النتيجة بحد عددي يسمى target. ليست هذه عملية وضع طابع بريد SHA-1 في محفظة. المشترك هو المبدأ، لا النظام كله. [8] [14]
الرسم البريدي يحدد كلفة طلب منفرد. لكن المال يحتاج أيضًا إلى تحديد أيّ التحويلين المتعارضين صالح. يربط Bitcoin الكتل، وتختار عقده من الفروع الصالحة السلسلة صاحبة أكبر عمل متراكم. والعقد هي الحواسيب التي تتحقق من القواعد؛ فهي تفحص المعاملات والإصدار المسموح أيضًا. حتى العمل الهائل لا يحوّل معاملة غير صالحة إلى صالحة. وفر Hashcash لبنة مهمة، لكن جمعها مع قواعد أخرى هو ما أتاح تاريخًا نقديًا مشتركًا دون مدير مركزي. [8] [9]
للحصول على صورة أوضح، اقرأ هذا المدخل مع Proof of Work, السايفربانك, Adam Back, Bitcoin Whitepaper, Bitcoin, Hash. تشير إلى هذا المدخل أيضًا السايفربانك, b-money, Bit Gold, Reusable Proofs of Work.