نگاهی به فرایند رمزنگاری در رمزارز زی‌کش

  • توسط سامان گراوی
  • ۱ ماه قبل
  • ۰
نگاهی به ارز دیجیتال (رمزارز) زی‌کش و الگوریتم‌های رمزنگاری آن به صورت جدی‌تر و دقیق‌تر

این مقاله به بررسی نسبتا مفصلی از روند رمزنگاری به کار رفته در زی کش، یکی از بحث‌برانگیزترین رمزارزهایی که تاکنون به جامعه رمزارزها عرضه‌شده‌اند، می‌پردازد.

به لحاظ فنی، زی‌کش را می‌توان به‌نوعی پاسخی از سوی برخی از جوامع دانشگاهی به پدیده بیت‌کوین دانست تا بلکه بتوانند با استفاده از رمزنگاری، آخرین ویژگی مهم پول نقد یعنی تعویض‌پذیری fungibility را به یک رمزارز ببخشند.
پشتوانه علمی آنها و ادعای ایجاد رمزارزی به‌عنوان جایگزین بیت‌کوین، باعث شد تا زی کش در زمان راه‌اندازی ۲۸ اکتبر ۲۰۱۶  بیشترین استقبال را از سوی اهالی جامعه رمزارزها دریافت کند.
خوش‌بینی و اطمینان به موفقیت زی کش باعث شد تا زی کش باقیمت‌های نجومی خریدوفروش شود و موقتاً به بالاترین قیمت تاکنون مبادله شده یعنی ۳,۲۹۹.۹۹  بیت‌کوین یعنی معادل ۲.۳ میلیون دلار برای هر زی کش رسید.
اگرچه امروز زی کش یک پول تثبیت‌شده است، اما دیگر خوش‌بینی و جو زدگی درباره آینده آن وجود ندارد. امروز که این شور و حال پیرامون زی کش فروکش کرده است، شاید بهتر بتوان به ظهور زی کش و جوانب رمزنگاری آن نگاه دقیق‌تر و واقع‌بینانه‌تری انداخت.

یک تاریخچه کوتاه

زی کش حاصل همکاری تیم  zerocoin از دانشگاه جانز هاپکینز با  یک متخصص علوم کامپیوتر در کلرادو به نام زوکو ویلکس (Zooko Wilcox) در سال ۲۰۱۴ است.
تیم zerocoin پیش‌تر در سال ۲۰۱۳ این کوین را راه‌اندازی کرده بودند که می‌خواستند مسئله حفظ حریم خصوصی یعنی اینکه تراکنش‌های بیت‌کوین شفاف هستند را حل کنند.
البته مونرو و دش هم هرکدام به‌نوعی تلاش کرده‌اند تا تراکنش‌های گمنام را میسر سازند. اما بنیان‌گذاران زی‌کش، که امروزه بنیاد غیرانتفاعی زی‌کش را تأسیس کرده‌اند،  تنها با رجوع به رمزنگاری این مسئله را حل  می‌کنند. ما در ادامه تلاش می‌کنیم این رمزنگاری را به زبان ساده توضیح دهیم.

بررسی رمزنگاری مورد استفاده در زی کش

اگرچه این بحث می‌تواند مفصل و پیچیده باشد، ما تلاش می‌کنیم با رجوع به رمزنگاری نشان دهیم که زی کش چگونه مسئله تعویض‌پذیری یا حفظ حریم خصوصی را حل می‌کند. پول نقد اصطلاحاً تعویض‌پذیر یا fungible  است یعنی ده دلار من با دلار شما هیچ تفاوتی ندارد.
روی یک اسکناس یک‌دلاری، نام صاحبش نوشته‌نشده است و معلوم هم نیست که این پول چطور و چقدر دست‌به‌دست شده است. اما یک بیت‌کوین همیشه بیت‌کوین متعلق به آدرس کیف‌پول یک نفر است و از این نظر مشابه حساب بانکی است. پس بیت‌کوین دقیقا مانند پول نقد تعویض‌پذیر نیست.

هر رمزارز باید دارای قابلیت تعویض‌پذیری (Fungibility) باشد
اگر شما بیت‌کوین خود را مبادله‌کنید، اطلاعات مربوط به تراکنش یعنی میزان پول و آدرس یا کلید عمومی شما روی بلاک‌چین قابل‌مشاهده و ردیابی است.
 پیش‌تر گفتیم که بنیان‌گذاران زی کش، زیروکوین (zerocoin) را ابداع کرده بودند. زیروکوین از روش minting  یا سوزاندن پول استفاده می‌کرد.
تصور کنید که شما از عابر بانک مقداری پول را به‌صورت اسکناس بیرون می‌کشید. ازاینجا به بعد، پول شما تعویض‌پذیر است و به‌حساب شما وابسته نیست.
فرآیند minting هم مانند همین نقد کردن پول از حساب بانکی عمل می‌کند. پس تاریخ تراکنش‌ها دیگر نامعلوم است و شما پولی گمنام در اختیار دارید که در یک آدرس جعلی قرار دارد. اما برخلاف پول نقد، شما برای خرج کردن باید بتوانید ثابت کنید که این پول را قبلاً سوزانده‌اید و یا به بیانی واقعاً از حسابتان بیرون کشیده‌اید.
برای اثبات این قضیه از گواه دانش صفر zero-knowledge proof استفاده می‌شد تا فرستنده بتواند ثابت کند که دارای یک شماره‌سریالی است که قبلاً به وی داده‌شده در مورد عابر بانک یک شماره رسید را فرض کنید، بدون اینکه این شماره سریال را به ماینر لو بدهد.
گواه دانش صفر به روشی در رمزنگاری گفته می‌شود که شما به‌طرف مقابل اثبات می‌کنید که دارای اطلاعاتی هستید بدون اینکه این اطلاعات را واقعا به وی بدهید.
 اما روش به کار رفته در رمزنگاری زیروکوین دارای مشکلات فنی بود، این روش نیازمند استفاده از ۲۵ کیلوبایت حافظه بود که برای بلاک‌چین بسیار سنگین محسوب می‌شود.
همچنین این شماره سریال لازم بود تا چند بار چک شود و این امر فرآیند تایید مبادله را بسیار وقت‌گیر می‌ساخت. زی کش برای حل این دو مشکل، از شکل دیگری از گواه دانش صفر به نام zk-SNARK استفاده می‌کند که مخفف عبارت Zero-Knowledge Succinct Non-Interactive Argument of Knowledge است.
کلمه Succinct نشان می‌دهد که اطلاعات انتقال‌یافته بسیار موجز و کوتاه است طوری که چندصد بایت کافی است.

در رمزارز (ارز دیجیتال) زی‌کش از تکنیکی به نام zK-snarks استفاده شده است

همچنین این روش غیرتعاملی یا Non-Interactive  است، یعنی گواه دانش صفر نیازمند تعامل بین اثبات‌کننده کسی که اثبات می‌کند دارای اطلاعات مربوطه است و در واقع همان ارسال‌کننده تراکنش است که ثابت می‌کند دارنده یک کلید خصوصی است و تأییدکننده یعنی کسی که بدون دانستن اطلاعات یا همان کلید خصوصی، تأیید می‌کند که آن فرد دارای یک امضای خاص دارنده آن اطلاعات یا کلید خصوصی است.

استفاده از مثال کارت سبز و کارت قرمز برای تشریح الگوریتم زی‌کش

این دو ویژگی موجز بودن و غیرتعاملی بودن، دو مشکل مطرح‌شده در زیروکوین را حل می‌کرد یعنی حجم اطلاعات بالا و زمان‌بر بودن.
صورت‌مسئله ساده است: بدون نیاز به سوزاندن پول یا minting، صاحب یک پول اثبات می‌کند که دارنده یک کلید خصوصی است بدون اینکه آن کلید خصوصی را لو بدهد.
به این ترتیب برای تأییدکننده اثبات می‌شود که یک امضای مشخص با یک کلید خصوصی مطابقت دارد بی‌آنکه آن کلید خصوصی را اصلا بداند. بهتر است ابتدا یک مثال ساده از گواه دانش صفر بیاوریم.
فردی را تصور کنید که کوررنگی دارد به نحوی که مطلقا قادر نیست بین دو کارت سبز  و قرمزرنگ که به‌جز در رنگ از هرجهتی با هم مشابه هستند، تمیز دهد.
اکنون تصور کنید شما می‌خواهید به وی اثبات کنید که این دو کارت باهم متفاوت هستند اما نمی‌خواهید به وی بگویید که دقیقا کدام کارت قرمز است و کدام کارت سبز رنگ. پس این می‌تواند یک نمونه از گواه دانش صفر باشد زیرا شما دانش خود به چیزی را ثابت می‌کنید بدون اینکه اطلاعاتی را لو بدهید.
برای انجام این کار، وی دو کارت را در پشت خود پنهان می‌کند و یکی از این دو کارت را بیرون می‌آورد و به شما نشان می‌دهد. سپس دوباره کارت‌ها را در پشت خود قایم کرده و این دفعه انتخاب می‌کند که آیا همان کارت را بیرون بیاورد یا کارت دیگر را.
شما با توجه به رنگ به‌راحتی می‌توانید بگویید که آیا این همان کارت قبلی است یا خیر. اگر این بازی به تعداد کافی تکرار شود، برای فرد کور رنگ اثبات می‌شود که رنگ این دو کارت متفاوت است بی‌آنکه شما به وی گفته باشید که کدام‌یک قرمز رنگ است و کدام‌یک سبز رنگ.
اما در این مثال، گواه دانش صفر نیازمند یک فرآیند تعاملی مکرر یعنی همین بازی نشان دادن کارت‌ها است. اما در مورد رمزنگاری زی‌کش باید یک روش غیرتعاملی به کاربرد یعنی اثبات‌کننده تنها یک‌بار اطلاعات کد شده را بفرستد و یکبار توسط تأییدکننده تأیید شود که وی دارنده آن اطلاعات است جدا از اینکه این باید با محاسبات ریاضی و به‌صورت خودکار و بدون تصمیم‌گیری انسانی انجام شود. اما واقعاً زی کش چگونه این مسئله را حل می کند؟ شاید کافی باشد که بگوییم که زی‌کش از روش‌های رمزنگاری استفاده می‌کند، اما خالی از لطف نخواهد بود اگر اندکی به عمق قضیه برویم.

در رمزنگاری، لازم است که از عملیات ریاضیاتی برگشت‌ناپذیر استفاده شود یعنی از خروجی، نتوان ورودی را به دست آورد. چهار عمل اصلی ریاضی یعنی جمع، تفریق، ضرب و تقسیم این ویژگی را ندارند.

اگر ۲۸ را بر ۷ تقسیم کنیم، حاصل عدد ۴ است، پس با دانستن چهار و هفت‌در این معادله ساده می‌توان با عملیات معکوس یعنی ضرب، عدد ۲۸ را دوباره به دست آورد.
بنابراین رمزنگاران معمولا از mod یا باقی‌مانده به‌عنوان یک عملیات ریاضی برگشت‌ناپذیر استفاده می‌کنند. برای مثال:۱۶ mod 5=1یعنی باقی‌مانده حاصل از تقسیم عدد ۱۶ بر ۵، عدد ۱ است. با این حال، عدد ۱ باقی‌مانده معادله‌های دیگر هم می‌تواند باشد مثلا: ۱۱mode 5=1برخلاف عملیات ضرب و تقسیم یا جمع و تفریق، در اینجا با دانستن عدد ۱ و ۵ نمی‌توانیم حدس بزنیم که عدد اصلی چیست.

شیوه رمزنگاری در زی‌کش چگونه است و چرا به یکی از رمزارزهای محرمانه برتر تبدیل شده است
۱۶ و ۱۱ یا اعداد بسیار دیگری می‌توانند پاسخ باشند. پس عملیات باقی‌مانده یک عملیات برگشت‌ناپذیر است یعنی همان ویژگی را دارد که ما به دنبال آن هستیم. اما عملیات باقی‌مانده یک ویژگی دیگر هم دارد و آن اینکه می‌توانند گروه‌های چرخشی (cyclic groups) تشکیل دهند.
اگر بین اعداد مشخصی {۱,۲,…p}، عملیات باقی‌مانده انجام دهیم، مشخصا نتیجه همیشه عددی داخل همین گروه باقی می‌ماند. به این ترتیب، میسر خواهد بود که ما توابعی به نام Homomorphic Hiding به دست بیاوریم. این توابع چند ویژگی مهم دارند.
اول اینکه اگر ما دو تابع Ex و Ey را بدانیم، پس می‌توانیم بدون دانستن مقادیر x و y، عبارات ریاضیاتی مانند Ex+y را محاسبه کنیم زیرا:Ex+y=Ex.Eyدوم اینکه این توابع به نحوی هستند که اگر x  و y  با هم برابر نباشند، پس حتما Ex و Ey  هم باهم برابر نخواهند بود یعنی برای هر Ex یک و فقط یک x وجود دارد و سوم اینکه با دانستن   Exبه خاطر عملیات باقی‌مانده، x را نمی‌توان به دست آورد یا بسیار به‌سختی بتوان به دست آورد یعنی همان‌طور که گفتیم برگشت‌ناپذیر هستند.از طرف دیگر، عبارات ریاضی چندجمله‌ای ترکیبی خطی هستند مثل a0+a1×X+a2×X2+…+ad×Xd .
در رمزنگاری زی‌کش اطلاعات اثبات‌کننده یعنی اطلاعاتی که قرار است به تأیید برسد بدون آنکه محتوایش لو برود، به‌صورت عبارات ریاضی چندجمله‌ای در می‌آید.
اثبات‌کننده این عبارت ریاضی چندجمله‌ای برای مثال تابع P را می‌داند اما تأییدکننده از آن اطلاع ندارد، تأییدکننده فقط ضرایب چندجمله‌ای را می‌داند اما نمی‌داند که کدام ضریب به کدام متغیر درجه‌دار تعلق دارد. مطابق روش گواه دانش صفر، تأییدکننده می‌خواهد بداند که آیا وی این عبارت چندجمله‌ای را می‌داند یا خیر بی‌آنکه اثبات‌کننده لازم باشد آن را لو بدهد.
راه‌حل این به این نحو است که تأییدکننده یک مقدار s از ضرایب تابع چندجمله‌ای انتخاب می‌کند، سپس به‌جای ارسال خود عدد s، توابع E آن را E1,Es,…,Esd را برای فرستنده ارسال کند. در اینجا E  همان توابع Homomorphic Hiding هستند با همان ویژگی‌هایی که برشمردیم.
تأییدکننده از فرستنده می‌خواهد که مقدار EPs را حل کند. فرستنده از مقدار s اطلاع ندارد زیرا همان‌طور که گفتیم از این توابع به خاطر عملیات باقی‌مانده در آن نمی‌توان به مقادیر اصلی یعنیs  رسید.  اما فرستنده بدون دانستن s و تابع E می‌تواند پاسخ صحیح را محاسبه کند.
چون توابع Homomorphic Hiding  ویژگی دوم را هم دارند یعنی اگر فرستنده به‌جای s، Es را داشته باشد، بازهم می‌تواند EPs را حل کند زیرا Eax+by= Exa×Eybچون اثبات‌کننده تابع چندجمله‌ای را می‌داند پس ضرایب a و b را می‌داند و Ex و Ey هم برایش ارسال‌شده‌اند. پس فرستنده مقدار EPs را برای تأییدکننده می‌فرستد.

بررسی رمزارز زی‌کش از نگاه سامان گراوی

اما اینکه تأییدکننده مطمئن باشد که فرستنده عملیات را درست انجام داده است از طریق تکنیک دیگری سنجیده می‌شود که KC Test  خوانده می‌شود.
در اینجا مجال آن نیست که به بررسی این آزمون رمزنگاری بپردازیم.پس بازی به این صورت است که تأییدکننده یک ضریبی را انتخاب می‌کند و با ارزیابی کور می‌تواند بفهمد که آیا فرستنده عبارات چندجمله‌ای صحیح را در اختیار دارد یا خیر. البته باید دقت داشت آنچه در بالا گفتیم، تنها یک مثال برای درک فرآیند کار است.
به‌طور خلاصه، فرستنده از تابع P خبر دارد  و می‌تواند فرمول را بدون دانستن E محاسبه کند. تأییدکننده می‌تواند بفهمد که نتیجه صحیح است زیرا وی تابع E را در اختیار دارد بدون اینکه از فرمول چندجمله‌ای P اطلاع داشته باشد.

نتیجه‌گیری

زی‌کش به کمک رمزنگاری قادر است تا تراکنش‌های حفاظت‌شده (shielded transactions)  را به انجام برساند. با این حال، در زی‌کش شما می‌توانید مانند بیت‌کوین، تراکنش‌های شفاف هم داشته باشید و البته این تراکنش‌های شفاف پیش‌فرض هستند.
 در آن زمان مسئله حریم خصوصی مهم‌ترین مشکل پیش روی رمزارزها محسوب می‌شد. به نظر می‌رسید این آخرین محدودیت فنی برای استفاده از یک محتوای دیجیتالی به پول نقد باشد.
اما با گذشت زمان مشکلات دیگری برجسته شدند. برای مثال مسئله مقیاس‌پذیری را در نظر بگیرید. بیت‌کوین برای گسترش خود نیازمند عبور از موانع فنی مانند اندازه بلاک است.
مسائل دیگری نیز در رمزارزها مطرح هستند مانند هرز انرژی در گواه کار، مسئله تأخیر زیاد در تایید تراکنش برای پرداخت‌های خُرد، مسئله انحصار ماینینگ با توسعه ASIC ها و بسیاری از مسائل دیگر.
بنابراین زی‌کش، نتوانست با حل یک مسئله، از بیت‌کوین به‌عنوان اولین و شناخته‌شده ترین رمزارز فراتر برود. زی‌کش به پشتوانه اعتبار علمی تیم خود یا شاید جنجال‌هایی که آن‌ها توانستند در جامعه رمزارزها به وجود آورند، مورد استقبال بی‌سابقه قرار گرفت. 

اما فن‌آوری تنها با حل یک مسئله خاص پیشرفت نمی‌کند بلکه مستلزم عبور از موانع متعددی است و به‌طور کل به‌صورت آزمون و خطا پیش می‌رود. برای بسیاری از کاربران رمزارزها که صرفا در مرحله آزمون و تجربه آن هستند، مسئله حریم خصوصی و یا گمنام بودن، واجد اولویت نیست.

  • facebook
  • googleplus
  • twitter
  • linkedin
  • linkedin
  • linkedin

Anarchist | Bitcoiner

  • twitter

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Read more:
معرفی یک پروتکل جدید برای استخرهای ماینینگ بیت‌کوین
شیرجه در جدیدترین استخر ماینینگ بیت‌کوین!

یکی از توسعه‌دهندگان بیت‌کوین باهدف کاهش تمرکزگرایی و انحصار، استخر جدیدی برای ماینینگ بیت‌کوین ایجاد کرده است. ماینرها تحت کنترل...

Close