اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کے بارے میں

ہم ایک طویل عرصے سے کریپٹو کرنسیوں میں گمنامی کے موضوع میں دلچسپی رکھتے ہیں اور اس علاقے میں ٹیکنالوجی کی ترقی پر عمل کرنے کی کوشش کرتے ہیں۔ ہمارے مضامین میں ہم پہلے ہی آپریشن کے اصولوں پر تفصیل سے بات کر چکے ہیں۔ خفیہ لین دین Monero میں، اور بھی کئے گئے تقابلی جائزہ اس میدان میں موجود ٹیکنالوجیز۔ تاہم، آج تمام گمنام کرپٹو کرنسیز Bitcoin کے تجویز کردہ ڈیٹا ماڈل پر بنائی گئی ہیں - غیر خرچ شدہ ٹرانزیکشن آؤٹ پٹ (اس کے بعد UTXO)۔ اکاؤنٹ پر مبنی بلاکچینز جیسے Ethereum کے لیے، گمنامی اور رازداری کو نافذ کرنے کے لیے موجودہ حل (مثال کے طور پر، مویوس یا Aztec) نے سمارٹ معاہدوں میں UTXO ماڈل کو نقل کرنے کی کوشش کی۔

فروری 2019 میں، اسٹینفورڈ یونیورسٹی اور ویزا ریسرچ کے محققین کا ایک گروپ جاری کیا پری پرنٹ "زیتھر: سمارٹ معاہدوں کی دنیا میں رازداری کی طرف۔" مصنفین سب سے پہلے تھے جنہوں نے اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کو یقینی بنانے کے لیے ایک نقطہ نظر تجویز کیا اور سمارٹ کنٹریکٹ کے دو ورژن پیش کیے: خفیہ (بیلنس اور منتقلی کی رقم چھپانے) اور گمنام (وصول کنندہ اور بھیجنے والے کو چھپانے) لین دین کے لیے۔ ہمیں مجوزہ ٹیکنالوجی دلچسپ لگتی ہے اور ہم اس کے ڈیزائن کو شیئر کرنا چاہیں گے، ساتھ ہی اس بارے میں بھی بات کریں گے کہ اکاؤنٹ پر مبنی بلاک چینز میں گمنامی کا مسئلہ کیوں بہت مشکل سمجھا جاتا ہے اور کیا مصنفین اسے مکمل طور پر حل کرنے میں کامیاب ہوئے ہیں۔

ان ڈیٹا ماڈلز کی ساخت کے بارے میں

UTXO ماڈل میں، ایک لین دین "ان پٹ" اور "آؤٹ پٹ" پر مشتمل ہوتا ہے۔ "آؤٹ پٹ" کا براہ راست اینالاگ آپ کے بٹوے میں بل ہے: ہر "آؤٹ پٹ" کا کچھ فرق ہوتا ہے۔ جب آپ کسی کو ادائیگی کرتے ہیں (لین دین کرتے ہیں) تو آپ ایک یا زیادہ "آؤٹ پٹس" خرچ کرتے ہیں، اس صورت میں وہ لین دین کے "ان پٹ" بن جاتے ہیں، اور بلاکچین انہیں خرچ کے بطور نشان زد کرتا ہے۔ اس صورت میں، آپ کی ادائیگی کا وصول کنندہ (یا آپ خود، اگر آپ کو تبدیلی کی ضرورت ہے) نئے پیدا کردہ "آؤٹ پٹ" وصول کرتا ہے۔ اس کی نمائندگی اس طرح کی جا سکتی ہے:

اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کے بارے میں

اکاؤنٹ پر مبنی بلاک چینز کی ساخت آپ کے بینک اکاؤنٹ کی طرح ہے۔ وہ صرف آپ کے اکاؤنٹ میں موجود رقم اور منتقلی کی رقم سے نمٹتے ہیں۔ جب آپ اپنے اکاؤنٹ سے کچھ رقم منتقل کرتے ہیں، تو آپ کوئی "آؤٹ پٹ" نہیں جلاتے ہیں، نیٹ ورک کو یہ یاد رکھنے کی ضرورت نہیں ہے کہ کون سے سکے خرچ ہوئے ہیں اور کون سے نہیں۔ آسان ترین صورت میں، لین دین کی توثیق بھیجنے والے کے دستخط اور اس کے بیلنس پر موجود رقم کو چیک کرنے پر آتی ہے:

اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کے بارے میں

ٹیکنالوجی کا تجزیہ

اگلا، ہم اس بارے میں بات کریں گے کہ Zether کس طرح لین دین کی رقم، وصول کنندہ، اور بھیجنے والے کو چھپاتا ہے۔ جیسا کہ ہم اس کے آپریشن کے اصولوں کو بیان کرتے ہیں، ہم خفیہ اور گمنام ورژن میں فرق کو نوٹ کریں گے۔ چونکہ اکاؤنٹ پر مبنی بلاک چینز میں رازداری کو یقینی بنانا بہت آسان ہے، اس لیے گمنامی کے ذریعے لگائی گئی کچھ پابندیاں ٹیکنالوجی کے خفیہ ورژن کے لیے متعلقہ نہیں ہوں گی۔

بیلنس اور ٹرانسفر رقوم کو چھپانا۔

Zether میں بیلنس کو خفیہ کرنے اور رقم کی منتقلی کے لیے ایک خفیہ کاری اسکیم کا استعمال کیا جاتا ہے۔ الجمال. یہ مندرجہ ذیل کام کرتا ہے۔ جب ایلس باب کو بھیجنا چاہتی ہے۔ b پتے کے حساب سے سکے (اس کی عوامی کلید) Y، وہ ایک بے ترتیب نمبر کا انتخاب کرتی ہے۔ r اور رقم کو خفیہ کرتا ہے:

اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کے بارے میں
جہاں C - خفیہ کردہ رقم، D - اس رقم کو سمجھنے کے لیے ضروری معاون قدر، G - بیضوی وکر پر ایک مقررہ نقطہ، جب خفیہ کلید سے ضرب کی جائے تو عوامی کلید حاصل ہوتی ہے۔

جب باب کو یہ اقدار مل جاتی ہیں، تو وہ انہیں اپنے انکرپٹڈ بیلنس میں اسی طرح شامل کرتا ہے، اسی لیے یہ اسکیم آسان ہے۔

اسی طرح، ایلس اسی قدروں کو اپنے توازن سے گھٹاتی ہے، صرف اسی طرح Y آپ کی عوامی کلید استعمال کرتا ہے۔

وصول کنندہ اور بھیجنے والے کو چھپا رہا ہے۔

UTXO میں "آؤٹ پٹس" کو بدلنا کرپٹو کرنسیوں کے ابتدائی دنوں کا ہے اور بھیجنے والے کو چھپانے میں مدد کرتا ہے۔ ایسا کرنے کے لیے، بھیجنے والا خود، منتقلی کرتے وقت، بلاکچین میں بے ترتیب "آؤٹ پٹ" جمع کرتا ہے اور انہیں اپنے ساتھ ملا دیتا ہے۔ اس کے بعد، وہ انگوٹھی کے دستخط کے ساتھ "آؤٹ پٹس" پر دستخط کرتا ہے - ایک خفیہ طریقہ کار جو اسے تصدیق کنندہ کو قائل کرنے کی اجازت دیتا ہے کہ بھیجنے والے کے سکے شامل "آؤٹ پٹس" میں موجود ہیں۔ مخلوط سکے خود، کورس کے، خرچ نہیں کر رہے ہیں.

تاہم، ہم وصول کنندہ کو چھپانے کے لیے جعلی آؤٹ پٹ تیار نہیں کر سکیں گے۔ لہذا، UTXO میں، ہر ایک "آؤٹ پٹ" کا اپنا الگ پتہ ہوتا ہے، اور یہ ان سکوں کے وصول کنندہ کے پتے سے خفیہ طور پر منسلک ہوتا ہے۔ اس وقت، منفرد آؤٹ پٹ ایڈریس اور وصول کنندہ کے پتے کے درمیان تعلق کو اس کی خفیہ کلیدوں کو جانے بغیر پہچاننے کا کوئی طریقہ نہیں ہے۔

اکاؤنٹ پر مبنی ماڈل میں، ہم ایک بار کے پتے استعمال نہیں کر سکتے ہیں (بصورت دیگر یہ پہلے سے ہی ایک "ایگزٹ" ماڈل ہوگا)۔ لہذا، وصول کنندہ اور بھیجنے والے کو بلاک چین میں دوسرے اکاؤنٹس میں ملایا جانا چاہیے۔ اس صورت میں، ایک خفیہ کردہ 0 سکے مخلوط کھاتوں سے ڈیبٹ کیے جاتے ہیں (یا اگر وصول کنندہ کو ملایا جاتا ہے تو 0 کو شامل کیا جاتا ہے)، حقیقت میں ان کے حقیقی توازن کو تبدیل کیے بغیر۔

چونکہ بھیجنے والے اور وصول کنندہ دونوں کا ہمیشہ ایک مستقل پتہ ہوتا ہے، اس لیے ایک ہی پتوں پر منتقلی کے وقت اختلاط کے لیے ایک ہی گروپس کا استعمال ضروری ہو جاتا ہے۔ اس کو مثال کے ساتھ دیکھنا آسان ہے۔

آئیے کہتے ہیں کہ ایلس نے باب کے خیراتی کام میں حصہ ڈالنے کا فیصلہ کیا ہے، لیکن ترجیح دیتی ہے کہ منتقلی کسی بیرونی مبصر کو گمنام رہے۔ پھر، بھیجنے والے میدان میں بھیس بدلنے کے لیے، وہ آدم اور عدیل کے کھاتوں میں بھی داخل ہوتی ہے۔ اور باب کو چھپانے کے لیے، وصول کنندہ کے خانے میں بین اور بل کے اکاؤنٹس شامل کریں۔ اگلا حصہ ڈالتے ہوئے، ایلس نے اپنے ساتھ الیکس اور امانڈا اور باب کے آگے بروس اور بینجن لکھنے کا فیصلہ کیا۔ اس صورت میں، بلاکچین کا تجزیہ کرتے وقت، ان دو ٹرانزیکشنز میں صرف ایک دوسرے کو آپس میں ملانے والی جوڑی ہوتی ہے - ایلس اور باب، جو ان ٹرانزیکشنز کو غیر نام ظاہر کرتا ہے۔

اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کے بارے میں

لین دین کی دوڑیں۔

جیسا کہ ہم پہلے بتا چکے ہیں، اکاؤنٹ پر مبنی سسٹمز میں اپنا بیلنس چھپانے کے لیے، صارف اپنے بیلنس اور ٹرانسفر کی رقم کو خفیہ کرتا ہے۔ ساتھ ہی، اسے یہ ثابت کرنا ہوگا کہ اس کے اکاؤنٹ میں موجود بیلنس غیر منفی ہے۔ مسئلہ یہ ہے کہ ٹرانزیکشن بناتے وقت صارف اپنے کرنٹ اکاؤنٹ اسٹیٹس کے حوالے سے ایک ثبوت تیار کرتا ہے۔ کیا ہوتا ہے اگر باب ایلس کو کوئی لین دین بھیجتا ہے، اور اسے ایلس کے بھیجے ہوئے سے پہلے قبول کر لیا جاتا ہے؟ پھر ایلس کا لین دین غلط سمجھا جائے گا، کیونکہ باب کے لین دین کو قبول کرنے سے پہلے بیلنس کا ثبوت بنایا گیا تھا۔

اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کے بارے میں

ایسی صورت حال میں جو پہلا فیصلہ آتا ہے وہ یہ ہے کہ لین دین ہونے تک اکاؤنٹ کو منجمد کر دیا جائے۔ لیکن یہ نقطہ نظر مناسب نہیں ہے، کیونکہ تقسیم شدہ نظام میں اس طرح کے مسئلے کو حل کرنے کی پیچیدگی کے علاوہ، ایک گمنام اسکیم میں یہ واضح نہیں ہوگا کہ کس کا اکاؤنٹ بلاک کیا جائے۔

اس مسئلے کو حل کرنے کے لیے، ٹیکنالوجی آنے والے اور جانے والے لین دین کو الگ کرتی ہے: خرچ کا بیلنس شیٹ پر فوری اثر پڑتا ہے، جب کہ وصولیوں کا اثر تاخیر سے ہوتا ہے۔ ایسا کرنے کے لیے، "ایپوچ" کا تصور متعارف کرایا گیا ہے - ایک مقررہ سائز کے بلاکس کا ایک گروپ۔ موجودہ "ایپوچ" کا تعین بلاک کی اونچائی کو گروپ کے سائز سے تقسیم کرکے کیا جاتا ہے۔ کسی لین دین پر کارروائی کرتے وقت، نیٹ ورک فوری طور پر بھیجنے والے کے بیلنس کو اپ ڈیٹ کرتا ہے اور وصول کنندہ کے فنڈز کو اسٹوریج ٹینک میں محفوظ کرتا ہے۔ جمع شدہ فنڈز وصول کنندہ کو صرف اس وقت دستیاب ہوتے ہیں جب ایک نیا "دور" شروع ہوتا ہے۔

نتیجے کے طور پر، صارف لین دین بھیج سکتا ہے اس سے قطع نظر کہ فنڈز کتنی بار موصول ہوتے ہیں (یقیناً جہاں تک اس کا بیلنس اجازت دیتا ہے)۔ ایپوک سائز کا تعین اس بنیاد پر کیا جاتا ہے کہ بلاکس نیٹ ورک کے ذریعے کتنی تیزی سے پھیلتے ہیں اور کتنی تیزی سے لین دین بلاک میں داخل ہوتا ہے۔

یہ حل خفیہ منتقلی کے لیے اچھا کام کرتا ہے، لیکن گمنام لین دین کے ساتھ، جیسا کہ ہم بعد میں دیکھیں گے، یہ سنگین مسائل پیدا کرتا ہے۔

ری پلے حملوں کے خلاف تحفظ

اکاؤنٹ پر مبنی بلاک چینز میں، ہر ٹرانزیکشن پر بھیجنے والے کی نجی کلید کے ذریعے دستخط ہوتے ہیں، جو تصدیق کنندہ کو یقین دلاتی ہے کہ لین دین میں کوئی تبدیلی نہیں کی گئی ہے اور اسے اس کلید کے مالک نے تخلیق کیا ہے۔ لیکن کیا ہوگا اگر کوئی حملہ آور جو ٹرانسمیشن چینل کو سن رہا تھا اس پیغام کو روکتا ہے اور بالکل وہی دوسرا پیغام بھیجتا ہے؟ تصدیق کنندہ لین دین کے دستخط کی تصدیق کرے گا اور اس کی تصنیف کا قائل ہو جائے گا، اور نیٹ ورک بھیجنے والے کے بیلنس سے وہی رقم دوبارہ لکھ دے گا۔

اس حملے کو ری پلے اٹیک کہا جاتا ہے۔ UTXO ماڈل میں، اس طرح کے حملے متعلقہ نہیں ہیں، کیونکہ حملہ آور خرچ شدہ آؤٹ پٹس کو استعمال کرنے کی کوشش کرے گا، جو بذات خود درست نہیں ہے اور نیٹ ورک نے اسے مسترد کر دیا ہے۔

ایسا ہونے سے روکنے کے لیے، لین دین میں بے ترتیب ڈیٹا کے ساتھ ایک فیلڈ بنایا گیا ہے، جسے نونس یا محض "نمک" کہا جاتا ہے۔ نمک کے ساتھ ٹرانزیکشن کو دوبارہ جمع کرتے وقت، تصدیق کنندہ یہ دیکھتا ہے کہ آیا اس سے پہلے نانس استعمال کیا گیا ہے اور، اگر نہیں، تو ٹرانزیکشن کو درست سمجھتا ہے۔ بلاکچین میں یوزر نانسز کی پوری تاریخ کو ذخیرہ نہ کرنے کے لیے، عام طور پر پہلی ہی ٹرانزیکشن میں اسے صفر کے برابر سیٹ کیا جاتا ہے، اور پھر ایک بڑھایا جاتا ہے۔ نیٹ ورک صرف اس بات کی جانچ کر سکتا ہے کہ نئی لین دین کی عدم موجودگی پچھلے ایک سے مختلف ہے۔

گمنام منتقلی اسکیم میں، لین دین کی تصدیق کا مسئلہ پیدا ہوتا ہے۔ ہم واضح طور پر نام کو بھیجنے والے کے پتے پر پابند نہیں کر سکتے، کیونکہ ظاہر ہے کہ یہ منتقلی کو غیر نام ظاہر کرتا ہے۔ ہم تمام حصہ لینے والے اکاؤنٹس کے ناننس میں ایک کو بھی شامل نہیں کر سکتے، کیونکہ یہ کارروائی کی جا رہی دیگر منتقلیوں سے متصادم ہو سکتا ہے۔

زیتھر کے مصنفین نے "ایپوچ" کے لحاظ سے غیر خفیہ طور پر تخلیق کرنے کی تجویز پیش کی۔ مثال کے طور پر:

اکاؤنٹ پر مبنی بلاکچینز میں گمنامی کے بارے میں
یہاں x بھیجنے والے کی خفیہ کلید ہے، اور گیپوچ - عہد کے لیے ایک اضافی جنریٹر، 'Zether +' فارم کی ایک تار کو ہیش کرکے حاصل کیا جاتا ہے۔ اب مسئلہ حل ہوتا دکھائی دے رہا ہے - ہم ارسال کرنے والے کی غیر موجودگی کو ظاہر نہیں کرتے ہیں اور غیر ملوث شرکاء کے ناننس میں مداخلت نہیں کرتے ہیں۔ لیکن یہ نقطہ نظر ایک سنگین پابندی عائد کرتا ہے: ایک اکاؤنٹ فی "ایپوچ" میں ایک سے زیادہ لین دین نہیں بھیج سکتا۔ بدقسمتی سے، یہ مسئلہ حل نہیں ہوا، اور فی الحال Zether کے گمنام ورژن کو، ہماری رائے میں، استعمال کے لیے مشکل سے موزوں بناتا ہے۔

صفر علمی ثبوتوں کی پیچیدگی

UTXO میں، بھیجنے والے کو نیٹ ورک پر یہ ثابت کرنا ہوگا کہ وہ منفی رقم خرچ نہیں کر رہا ہے، ورنہ یہ ممکن ہو جاتا ہے کہ پتلی ہوا سے نئے سکے تیار کیے جائیں (یہ کیوں ممکن ہے، ہم نے پچھلے ایک میں لکھا تھا۔ مضامین)۔ اور انگوٹھی کے دستخط کے ساتھ "ان پٹس" پر بھی دستخط کریں تاکہ یہ ثابت ہو سکے کہ مکس کیے جانے والے سکوں میں اس کے فنڈز موجود ہیں۔

اکاؤنٹ پر مبنی بلاکچین کے گمنام ورژن میں، ثبوت کے لیے تاثرات بہت زیادہ پیچیدہ ہیں۔ مرسل ثابت کرتا ہے کہ:

  1. بھیجی گئی رقم مثبت ہے؛
  2. توازن غیر منفی رہتا ہے۔
  3. بھیجنے والے نے منتقلی کی رقم کو صحیح طریقے سے خفیہ کیا (بشمول صفر)؛
  4. بیلنس پر بیلنس صرف بھیجنے والے اور وصول کنندہ کے لیے تبدیل ہوتا ہے۔
  5. بھیجنے والا اپنے اکاؤنٹ کی نجی کلید کا مالک ہے اور وہ درحقیقت بھیجنے والوں کی فہرست میں شامل ہے (ان میں شامل ہیں)؛
  6. لین دین میں استعمال ہونے والا Nonce صحیح طریقے سے بنایا گیا ہے۔

اس طرح کے ایک پیچیدہ ثبوت کے لئے، مصنفین ایک مرکب کا استعمال کرتے ہیں بلٹ پروف (مصنفوں میں سے ایک، ویسے، اس کی تخلیق میں حصہ لیا) اور سگما پروٹوکولجس کو سگما گولیاں کہتے ہیں۔ اس طرح کے بیان کا باضابطہ ثبوت ایک مشکل کام ہے، اور یہ ٹیکنالوجی کو نافذ کرنے کے خواہشمند لوگوں کی تعداد کو بہت حد تک محدود کر دیتا ہے۔

نتیجہ؟

ہماری رائے میں، Zether کا وہ حصہ جو اکاؤنٹ پر مبنی بلاکچینز میں رازداری لاتا ہے اسے ابھی استعمال کیا جا سکتا ہے۔ لیکن اس وقت، ٹیکنالوجی کا گمنام ورژن اس کے استعمال پر سنگین پابندیاں عائد کرتا ہے، اور اس کے نفاذ میں اس کی پیچیدگی۔ تاہم اس میں رعایت نہیں کی جانی چاہیے کہ مصنفین نے اسے چند ماہ قبل ہی جاری کیا تھا، اور شاید کوئی اور ان مسائل کا حل تلاش کر لے جو آج موجود ہیں۔ سب کے بعد، اس طرح سائنس کیا جاتا ہے.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں