اختيار المدخلات الوهمية
من أين تأتي المخرجات الغريبة الـ15 في الحلقة — ولماذا الأمر أصعب مما يبدو
تختار المحفظة 15 مدخلًا وهميًا (decoy) من بين جميع المخرجات على سلسلة الكتل بحيث تتوزع أعمارها كما تتوزع أعمار عمليات الإنفاق الحقيقية: الكثير منها حديث، والقليل قديم. وتستخدم لذلك توزيع غاما على لوغاريتم العمر. فإذا اختلف توزيع المدخلات الوهمية عن سلوك الناس، برز المدخل الحقيقي إحصائيًا.
لماذا لا تكفي "مخرجات عشوائية"
تخيّل أن المدخلات الوهمية تُختار بشكل منتظم من سلسلة الكتل كلها. عندها سيكون عمر المدخل الوهمي النموذجي سنوات. لكن الناس عادةً ينفقون مالًا حصلوا عليه حديثًا: منذ أيام أو أسابيع. في حلقة من 16 فيها مخرج واحد حديث و15 مخرجًا قديمًا — خمّن أيها الحقيقي.
هذا ما حدث في بدايات Monero: أظهرت دراسة عام 2017 (Miller وMöser وآخرون، "An Empirical Analysis of Traceability in the Monero Blockchain") أن قاعدة "المدخل الأحدث هو الحقيقي" كانت صائبة في أغلب الأحيان بالنسبة لحلقات تلك الحقبة.
توزيع غاما
منذ 2018 تختار المحفظة عمر المدخل الوهمي هكذا:
ثم يُحوَّل العمر إلى ارتفاع كتلة (بافتراض كتل كل دقيقتين) ويُختار مخرج عشوائي من تلك الكتلة. إضافة إلى بضع قواعد:
- لا تُستخدم المخرجات التي يقل عمرها عن 10 كتل (ولا يمكن إنفاقها أيضًا — هذه قاعدة القفل)؛
- يراعي الاختيار عدد المخرجات في كل كتلة (وإلا لاختيرت مخرجات الكتل "الفارغة" أكثر من اللازم)؛
- تُستبعد التكرارات والمخرجات المختارة مسبقًا.
ما الذي قد يسوء
أخطاء في التنفيذ
في 2021 اكتُشف خطأ في اختيار المدخلات الوهمية في wallet2: بالنسبة لبعض المخرجات كان احتمال اختيار مدخلات وهمية حديثة منخفضًا جدًا، فكانت المعاملات التي تنفق مخرجات حديثة جدًا تبرز. أُصلح الخطأ، لكن المعاملات التي أُجريت قبل الإصلاح تبقى على سلسلة الكتل إلى الأبد بهذه السمة. كما تبيّن مرارًا أن محافظ الطرف الثالث التي تطبّق اختيارها الخاص للمدخلات الوهمية "يمكن التعرف عليها".
السلوك لا يطابق النموذج
جرت مواءمة النموذج على بيانات Bitcoin لعام 2017. ومستخدمو Monero الحقيقيون يتصرفون بشكل مختلف، وكلما كبر الفرق، زادت المعلومات التي يسرّبها العمر. اقتُرحت تحسينات (مثل مواءمة التوزيع مع بيانات Monero نفسها)، لكن مع FCMP++ تختفي المشكلة من جذورها.
الإغراق
إذا أنشأ شخص ما عددًا هائلًا من المخرجات الخاصة به (وقد رُصدت حالات كهذه في 2021 و2024)، فإنها تبدأ بالظهور بكثرة في حلقات الآخرين. والمهاجم يعرف أن مخرجاته ليست حقيقية، فيشطبها ذهنيًا، مما يقلص الحجم الفعلي للحلقة.
اختيار المدخلات الوهمية ليس تشفيرًا بل إحصاء. يضمن تشفير التوقيع الحلقي أن التوقيع لا يكشف المدخل الحقيقي. لكنه لا يحمي من أي شيء يمكن استنتاجه من اختيار أعضاء الحلقة أنفسهم. في FCMP++ تصبح "الحلقة" هي جميع المخرجات، فلا يبقى شيء يُختار.