تراکنش محرمانه (Confidential transaction )
فهرست مطالب
تراکنش محرمانه روشی برای افزایش حریم شخصی
یکی از مهمترین ویژگیها برای عملکرد یک بلاک چین، شفافیت آن است. هر نود (Node ) یا گره در شبکه باید بتواند یک نسخه از بلاک چین را ذخیره و تایید کند که هیچ قانونی در شبکه نقض نشده است. برای بسیاری از دفترکل های توزیع شده (Distributed ledger ) هرکس میتواند وارد یک اکسپلورر بلاک (Block Explorer ) شده و در میان بلاکها، تراکنشها و آدرسهای ثبت شده، به جستجو بپردازد. از نظر حریم خصوصی، این موضوع ایدهآل نیست. هرچند در شبکه بیت کوین آدرسها بینام هستند و نمیتوان فهمید یک آدرس برای چه کسی است، اما به طور کامل تاریخچه تراکنشهای آن آدرس را میتوان مشاهده کرد. در سیستمی مانند بیت کوین هر تراکنش میتواند به تراکنش قبلی خودش متصل شود؛ یعنی امکان ردیابی یک کوین خرج شده در یک تراکنش وجود دارد. از نظر فنی کوینها بیمانند نیستند؛ یعنی هر کدام میتوانند به تراکنشهای خاصی مربوط شده و قابل پیگیری باشند.
هیچکس نمیتواند جلوی شما را برای فرستادن بیت کوین بگیرد؛ اما اگر آن کوین خاص از یک آدرس موجود در لیست سیاهی گذشته باشد، افراد میتوانند آن را رد کنند. در بدترین حالت، این بیمانند بودن میتواند بر روی پایه و اساس سیستم تاثیر بگذارد. کوینهای تمیز به نوعی از امتیاز ویژهای برخوردار هستند؛ در حالی که برخی کوینها با توجه به سابقهای که دارند، کم ارزشتر هستند.
اغلب در مورد بحث حریم خصوصی در بیت کوین اغراق میشود. نه تنها امکان ردیابی یک بیت کوین خاص وجود دارد؛ بلکه با روشهای پیچیده تحلیلی و با دستهبندی کردن آدرسها میتوان حتی مقداری به شخص استفاده کننده هم نزدیک شد. برای انجام تراکنش در بیت کوین، کیف پولها به نزدیکترین نود از جهت مکانی وصل میشوند و با ردیابی کوین و رسیدن به آن نود، میتوان حدس زد دارنده کیف پول احتمالا در کدام نقطه از جهان قرار دارد. البته این نهایت کاری است که میتوانند انجام دهند و شاید به این برسند که یک آدرس خاص در اروپا قرار دارد. در هر صورت ردیابی یک کوین و رسیدن به آدرسی خاص در شبکه بیت کوین شدنی است. یکی از راههایی که باعث ناشناس شدن واقعی تراکنشها میشود، تراکنشهای محرمانه است.
تراکنشهای محرمانه
تراکنشهای محرمانه اولین بار توسط آدام بک (Adam Back )، مدیرعامل بلاک استریم (Block Stream )، در سال 2013 مطرح شد. گرگوری مکسول (Gregory Maxwell )، یکی از توسعهدهندگان بیت کوین، این نوع تراکنشها را برای این رمزارز توسعه داد. مکسول به مشکلاتی که در بخش قبل خواندیم (بی مانند بودن و ناشناسی و حریم خصوصی ضعیف ) اشاره کرد و یک راهحل پیشنهاد داد. مقدار تراکنش میتواند از دید شبکه مخفی شده و فقط فرستنده و گیرنده آن را ببینند.
در شرایط عادی (وقتی که تراکنشها به طور عمومی قابل مشاهده است ) برای یک نود (ماینر ) ساده است که تایید کند مقدار بیت کوین فرستاده شده، برابر با مقدار دریافت شده است. فرض کنید مریم یک بیت کوین داشته و میخواهد 0.3 آن را برای علی بفرستند؛ در بیت کوین روش کار اینگونه است که کل موجودی به شبکه ارسال میشود. مقدار ارسالی به مقصد فرستاده شده و باقی مانده به مبدا دوباره باز میگردد. در این مثال 0.3 بیت کوین برای علی ارسال و 0.69 به کیف پول مریم باز میگردد. (0.01 بیتی کوین به عنوان مثال، کارمزد تراکنش است ).
این فرایند یک معادله ریاضی ساده برای نودهاست. یک از مجموع 0.69+ 0.3 بیشتر است، مریم قبلا این بیت کوین را خرج نکرده است، امضاها درست هستند؛ پس تراکنش معتبر تلقی میشود. اما وقتی مقادیر ارسالی و دریافتی قابل مشاهده نباشد، دیگر موضوع به این سادگی نیست. چگونه میتوان مشخص کرد که یک عدد نامشخص، برابر یا بیشتر از مجموع دو عدد دیگر است؟
روش کار تراکنش محرمانه
برای مخفی کردن یک داده، رمزنگاری راه حل ماجرا است. در روشهای سنتی، دادهها و اطلاعات را داخل یک گاو صندوق قرار میدهند و تا زمانی که قفل آن باز نشود، امکان دسترسی به آن وجود نخواهد داشت. برای بحث تراکنش محرمانه ما نیاز به فضایی داریم که دادهها درون آن قرار بگیرند و محتوای آنها توسط یک شخص ثالث قابل مشاهده نباشد؛ اما بتوانند اجزای آن را تایید کنند. پاسخ این معما در رمزنگاری همومورفیک در طرحی به اسم تعهد پدرسن (Pedersen Commitment ) است. این روش رمزگذاری به یک شخص ثالث اجازه میدهد که بر روی دادهای که به آن دسترسی ندارد، عملیات انجام دهد.
هش در تراکنش محرمانه
هش (Hash ) رشتهای از اعداد و کاراکترهای تصادفی است که نشاندهنده یک داده ورودی مشخص است. برای تصویر سازی بهتر، در ادامه یک هش ساخته شده با الگوریتم SHA256 را مشاهده کنید.
329613C37223E9938051B83B33D3C0FFA2C21D0D9B291F31D9D77AF02E20342D
میتوان یک هش معمولی را به دادهای اختصاص داد که میخواهید بعدا آن را منتشر کنید. تصور نمایید که میخواهید یک مسابقه در شبکه اجتماعی راه بیندازید که مردم نام صرافی محبوب شما را حدس بزنند و در صورت حدس درست، 0.01 بیت کوین برنده شوند. شرکتکنندگان ممکن است مشکوک شوند؛ زیرا شما به پاسخها دسترسی دارید و میتوانید بعد از پایان رقابت، ببینید که چه صرافیای حدس زده نشده و همان را اعلام کنید. کاری که میتوانید در اینجا بکنید این است که یک هش از نام صرافی مورد علاقه خود برای کاربران آماده کنید. شما نام صرافی خود را وارد یک تابع میکنید تا به یک خروجی مشخص برسید. با نگاه کردن به خروجی (رشتهای از اعداد و حروف ) هیچ ایدهای ندارید که ورودی چه چیزی بوده است و نمیتوان تابع را برای رسیدن به ورودی، برعکس کرد. این پاسخ همان مسابقهای است که فرض کردیم در شبکه اجتماعی راه انداختهاید. توجه کنید که اگر نام یک صرافی دیگر را بعدا هش کنید، خروجی با هش صرافی مورد نظر شما متفاوت خواهد بود.
به این ترتیب فالوورهای شما مطمئن خواهند بود که شما پاسخ خود را تغییر نخواهید داد و در صورتی که این کار را انجام دهید، خروجی کاملا متفاوتی تحویل میگیرید. در صورتی که در بسترهای تولید هش عبارت Rabex را وارد کنید، خواهید دید که به همین هش میرسید. اما اگر واقعبین باشیم، این کار چندان امن نیست. با اینکه دنبالکنندگان شما نمیتوانند با مهندسی معکوس از این هش به نام صرافی برسند؛ اما میتوانند لیست تمامی صرافیهای محتمل را جمعآوری کرده، همه آنها را هش کرده و به نام صرافی مورد نظر برسند. با اینکه با یک بار هش کردن محرمانگی اطلاعات بالاتر میرود اما هنوز قابل حدس زدن است.
ما میتوانیم برای کاهش احتمال این اتفاق، یک داده تصادفی به اسم “فاکتور کورکننده” به ورودیای که میخواهیم آن را هش کنیم، اضافه نماییم. به عنوان مثال اگر شما عبارت ” من صرافی X را بیشتر از هر صرافی دیگری دوست دارم، تیبخ0#$2″ را هش کنید، کار را برای افراد جهت پیدا کردن نام صرافی از طریق هش کردن، تقریبا غیر ممکن کردهاید.
در طرح تعهد پدرسن شما دقیقا همین کار را انجام میدهید. در واقع در این طرح شما میتوانید یک فاکتور کورکننده به داده اصلی خود اضافه کنید و تعهدی دهید که آن را تغییر نمیدهید. شخص ثالث تاییدکننده تراکنش با استفاده از همین تعهد، تراکنش شما را تایید میکند.
در فرمول بالا BF همان فاکتور کورکننده و D همان داده اصلی است. C همان تعهدی است که نشان میدهد دادهها را تغییر نمیدهید. اما منظور از این تعهد چیست؟
تعهد (Commitment )
کامیتمنت یا تعهد در این روش رمزنگاری، همان هش است. در واقع مانند همان مثال اگر شما قصد دارید یک تراکنش محرمانه انجام دهید، دادههای تراکنش را به همراه یک فاکتور کورکننده وارد کرده و هش به دست آمده در شبکه گذاشته میشود. حال هیچکس در شبکه نمیتواند متوجه مقدار تراکنش شما شود؛ اما شما تعهد دادهاید مقدار آن را عوض نخواهید کرد. چگونه؟ در واقع در صورتی که شما حتی یک عدد کوچک در دادهها و یا فاکتور کورکننده را عوض کنید، هش به دست آمده متفاوت خواهد شد و در هنگام تایید تراکنش، ماینرها متوجه این تفاوت هش شده و آن را نمیپذیرند. حال سوال مهمی که پیش میآید این است که ماینرها چگونه میتوانند مطمئن باشند که میزان ورودی شما کمتر یا برابر میزان خروجی شماست و تراکنش را تایید کنند؟ در اینجا به جای بررسی مجموع دادههای ورودی و مقایسه آن با دادههای خروجی، هش ورودی و خروجی مورد مقایسه قرار میگیرد.
هرکدام از این توابع زیر، یک هش در اختیار شما قرار میدهند. ماینرها صرفا با مقایسه هش خروجی با هش مجموع این دو مقدار، میتوانند تشخیص دهند که تراکنش معتبر است یا خیر.
: C(D1,BF1 ) تعهد ورودی اول
: C(D2,BF2 ) تعهد ورودی دوم
:C(D1+D2,BF1+BF2 ) خروجی
C (D1+D2, BF1+BF2 ) =C (D1, BF1 ) +C (D2, BF2 )
اگر معادله بالا درست باشد، تراکنش تایید خواهد شد.
مزایای تراکنش محرمانه
اگر ما میتوانستیم سیستم تراکنشهای محرمانه را بر روی شبکه بیت کوین پیاده کنیم، شبکهای با حریم خصوصی فوقالعاده بهتری داشتیم. هم مقادیر ورودی و هم خروجی از دید شبکه محفوظ میماند و دادههای وارد شده به بلاک چین نیز مبهم بود؛ اما با تمام این موارد نودها میتوانستند اعتبار تراکنشها را تایید کنند. با این سیستم دیگر بیمانندی بیتکوینها از بین میرفت؛ زیرا هیچکس نمیتوانست با تحلیل دادههای درون زنجیرهای، سابقه و تاریخچه یک کوین را تشخیص دهد.
محدودیتهای تراکنش محرمانه
با تمام این مزایا فعلا به نظر نمیرسد که این سیستم بر روی شبکه بیت کوین قابلیت اجرا داشته باشد.با انجام این کار، تراکنشها، بسیار بزرگتر از اندازه فعلی و محدود بلاکها شده و باعث افزایش شدید تقاضا میشود. در ابتدای امر سایز یک تراکنش محرمانه، تقریبا 16 برابر تراکنشهای عادی بیت کوین بود. با این سایز، اضافه کردن تراکنشهای محرمانه به شبکه بیت کوین بسیار سخت میشود؛ زیرا همین الان هم بیت کوین با مشکل مقیاسپذیری مواجه است. بعدها با یک بروزرسانی از طرف گرگوری مکسول، سایز این تراکنشها به 3 برابر سایز تراکنش عادی بیت کوین رسید. با این کم شدن اندازه، احتمال اضافه شدن تراکنشهای محرمانه به بیت کوین بالاتر رفت و ممکن است در آینده به عنوان یک سافت فورک به شبکه ارائه شود؛ اما اجماع بر سر این موضوع، مانع بزرگی در مسیر بیت کوین خواهد بود.
اهمیت حریم خصوصی
درست است که فعلا امکان اضافه شدن تراکنشهای محرمانه به شبکه بیت کوین وجود ندارد؛ اما ارزهایی هستند که محرمانه بودن تراکنشها را به دنیای رمزارزها آورده و بهترین نوع حریم خصوصی را برای کاربران خود فراهم کردهاند. اگر میخواهید در دنیای رمزارزها کاملا ناشناس مانده و هیچ اثری از شما باقی نماند، کسی نتواند میزان دارایی شما را ببیند و یا کوین شما تفاوتی با کوین فردی در آمریکا نداشته باشد، میتوانید از این ارزهای دیجیتال استفاده کنید. در ادامه به اختصار به معرفی دو عدد از آنها میپردازیم.
ارز دیجیتال مونرو (XMR )
ارز دیجیتال مونرو یکی از معروفترین رمزارزها در زمینه حفاظت از حریم خصوصی است. در شبکه این رمزارز با استفاده از روشهای امضای حلقهای (ring signature ) و استلس آدرس (stealth addresses ) هویت فرستنده و گیرندهی ارز دیجیتال مخفی شده و با استفاده از تراکنش محرمانه حلقهای (Ring Confidential Transaction ) مقادیر ارسالی و دریافتی نیز سانسور شده و از دید همه مخفی است.
Ring signature: یک روش رمزنگاری است که در آن امضای یک تراکنش میتواند توسط یکی از اعضای یک گروه از کاربران انجام بپذیرد که همه آنها کلید خصوصی دارند.
stealth addresses: یکی از ویژگیهای امنیتی در مونرو است که با استفاده از آن فقط فرستنده و گیرنده میدانند که آدرسهای درگیر در تراکنش کدام آدرسهاست.
برای بررسی صحبت این موضوع میتوانید به جستجوگر بلاک مونرو بروید. وقتی وارد سایت میشوید، با این صفحه روبرو خواهید شد.
بر روی یکی از بلاکهای ثبت شده در همین صفحه کلیک کنید. با این کار، وارد صفحه زیر میشوید.
در این بلاک همانطور که در تصویر میبینید، 6 تراکنش ثبت شده است. در قسمت Output total میبینید که مقدار تمام آنها محرمانه است. برای بررسی بیشتر روی تراکنش اول کلیک میکنیم.
این آدرس بیت کوین اکنون تقریبا 1323 بیت کوین دارد!
حال به سراغ مونرو میرویم و سعی میکنیم این کار را انجام دهیم؛ اما با جستجوی یک آدرس مونرو، با این صفحه مواجه خواهید شد.
یک لحظه به نظر رسید که میخواستید یک نگاهی به این آدرس مونرو بیندازید، واقعا انگار میخواستید موجودی این فرد را چک کنید: خوب جواب مونرو اینه: نه!
این پاسخ مونرو به تلاش شما برای دیدن دارایی آدرسهای دیگر است. حریم خصوصی به طور کامل حفظ شده و در تراکنشها نیز هیچکس نمیتواند مقدار ارسالی و دریافتی را مشاهده کند، با این حال تراکنشهای مونرو با کارمزدی اندک تایید میشوند.
ارز دیجیتال زی کش (ZEC )
ارز دیجیتال زیکش یکی دیگر از رمزارزهایی است که برای حفظ حریم خصوصی کاربرانش و مخفی ماندن تراکنشها در فضای کریپتو به وجود آمده است. زیکش خودش را اینگونه معرفی میکند:
“بیت کوین مانند http برای پول است، زیکش https است”
با این جمله، بر روی قدرت بالایش در حفظ حریم خصوصی و امنیت تاکید میکند. ZEC از ابزار رمزنگاری Zero knowledge proof استفاده میکند و افراد میتوانند انتخاب کنند که تراکنشهایشان محرمانه باشد یا خیر؛ یعنی آدرسها و مقدار ارسالی و دریافتی برای کسی قابل مشاهده نباشد.
Zero knowledge proof: یک روش رمزنگاری است که در آن صحت انجام تراکنش، بدون داشتن اطلاعات آن تراکنش، تایید میشود.
بیت کوین همچنان محبوبترین رمزارز بازار باقی مانده و احتمالا تا مدتی طولانی نیز باقی خواهد ماند؛ با این حال دولتها و سازمانهای دولتی در طی سالهای اخیر در ردیابی تراکنشهای بیت کوین فوقالعاده پیشرفت کرده و با دقت و جدیت در این زمینه فعالیت میکنند. کاربرانی که طرفدار حریم خصوصی بیشتر و ناشناخته بودن هستند، اغلب از رمزارزهایی مثل مونرو، زیکش و یا دش استفاده میکنند؛ زیرا دولتها اگر هم بخواهند، نمیتوانند تراکنشهای این رمزارزها را ردیابی کنند و یا برای آن قانون تعیین کنند.