معرفی کامل اثبات دانش صفر (Zero-knowledge proof) و کاربرد آن در ارزهای دیجیتال
در دنیای ارزهای دیجیتال، خرد جمعی و روش اثبات رخدادها در بلاک چین به شیوههای مختلفی حاصل میشود. هرکدام از این رویکردها بر اساس کارکرد پروژه و متناسب با ویژگیهای آن از گذشته در وایت پیپر یا سپیدنامه مشخص شده است.
با اینحال موارد جدیدی نیز دارای اهمیت شده است، به خصوص مبحث حریم خصوصی در گذر زمان جایگاه پر اهمیتی در فضای مالی پیدا کرده است. بنابراین الگوریتمهای اجماع برای پاسخگویی به این مسئله در حال تکامل هستند. برای نمونه الگوریتم اثبات سهام یا اثبات کار از پر کاربردترین روشهای رسیدن به توافق نظر جمعی در سیستمهای بلاک چین محسوب میشود، اما چالشهای مخصوص خود را دارد یا در بعضی بخشها پاسخگوی نیاز فعلی جوامع نیست.
در این میان روشهایی نو و کاربردیتر هم درحال پذیرفته شدن در سیستمهای نوظهور هستند. الگوریتم اثبات دانش صفر (Zero-knowledge proof) یکی از نمونههای موفق در این حوزه است. در این مقاله با چیستی و چگونگی کارکرد دانش صفر بیشتر آشنا خواهیم شد.
اثبات دانش صفر چیست؟
به طور ساده اثبات دانش صفر Zero-knowledge proof یا (ZK) یک پروتکل رمزنگاری است که امکان اثبات و درستی یک ادعا را بدون اینکه جزئیات خاصی از ادعا مورد نظر افشا شود برای افراد امکانپذیر میکند. در اینجا فردی که قصد اثبات موضوع را دارد اثبات کننده (Prover) نام دارد و فرد مقابل تاییدکننده (verifier) است. باید توجه داشت که اثبات دانش صفر مدلهای مختلفی دارد که در ادامه متن با انواع آن آشنا خواهیم شد.
ایده اثبات دانش صفر از کجا آغاز شد؟
شفی گلدواسر (Shafi Goldwasser) سیلویو میکالی (Silvio Micali) و چارلز راکف (Charles Rackoff) از جمله محققینی بودند که ایده اثبات دانش صفر را برای اولین بار در اوایل دهه 1980 ارائه کردند. هدف اصلی اثبات دانش صفر یا ZK-proof متقاعد کردن تأییدکننده است که تنها قبول کند یک ادعا صحت دارد و درست است بدون اینکه لازم باشد اطلاعات دیگری فاش شود.
ویژگیهایی که برای داشتن اثبات دانش صفر مورد نیاز است
برای اینکه یک اثبات دانش صفر خوب و قابل اتکا به وجود بیاید، در ابتدا باید چندین ویژگی زیر برآورده شود:
- کامل بودن: اگر گزاره درست باشد، تأیید کننده با احتمال زیاد اثبات را میپذیرد و هم اثباتکننده (Prover) و همینطور تأییدکننده (verifier) به پروتکل پایبند هستند.
- درستی: اگر یک ادعا نادرست است، هیچ اثبات کنندهای نباید موفق شود یک تأییدکننده را متقاعد کند که ادعا درست است، مگر در شرایط بسیار بعید و نزدیک به غیرممکن.
- دانش صفر: حتی پس از تعامل با اثبات کننده، شخص تأییدکننده فقط صحت گفته را درک کرده و چیز دیگری از راز نمیداند.
انواع مختلف از اثبات دانش صفر ZK-proof
همانطور که پیش از این اشاره شد، اثبات دانش صفر شکلهای مختلفی دارد و هر کدام کاربرد منحصر به خود را دارد و طبیعتا بر اساس شرایط، ممکن است نوع خاصی از آنها استفاده شود. البته شاید تعاریف کلی آنها بیش از حد پیچیده و گنگ به نظر برسد اما واقعیت کارکرد آنها بر اساس پروژهها قابل درکتر خواهد بود. در این بخش مختصرا به آنها اشاره میکنیم.
اثبات دانش صفر تعاملی (Interactive ZK-proofs)
شیوه کار اثباتهای دانش صفر تعاملی به اینگونه است که نیاز به ارتباط رفت و برگشتی میان اثباتکننده و تأیید کننده وجود دارد.
اثبات دانش صفر غیرتعاملی (Non-interactive ZK-proofs)
شیوه کار اثباتهای دانش صفر غیرتعاملی، به این شیوه است که یک مدرک محکم ارائه میشود و به همین خاطر امکان تایید یک مرحلهای ادعا به وجود میآید.
اثبات دانش صفر آماری (Statistical ZK-proofs)
اثباتهای دانش صفر آماری به طوری عمل میکنند که مدارک محاسباتی را با احتمال کمترین خطا را برای اثبات ادعا ارائه میدهند.
اثبات دانش (Proof-of-knowledge (PoK
اثبات دانش زیرمجموعهای از اثباتهای دانش صفر است که اثبات کننده، ثابت میکند دانشی درباره یک عبارت یا ادعا خاص دارد.
اثبات Proofs of shuffle and range
این نوع اثبات دانش صفر در رایگیری الکترونیکی و تراکنشهای حفظ حریم خصوصی مورد استفاده قرار میگیرد.
پروتکلهای سیگما (Sigma protocols)
پروتکلهای سیگما نیز نوعی از اثبات دانش صفر هستند که از سه بخش تشکیل شدهاند که شامل تعهد، چالش و پاسخ هستند.
اثبات بولت (Bulletproofs)
اثبات بولت برای مجموعههای بزرگی از مقادیر، حد کارآمدی از اثبات (مدارک) را ارائه میدهند.
اثباتهای دانش صفر چگونه کار میکنند؟ شرح کارکرد با بیان یک مسئله
اثباتهای دانش صفر به طور کلی باعث میشوند تا اظهارات یا ادعا یک فرد (در نقش اثباتکننده) توسط فرد دیگری (در نقش تأیید کننده) مورد قبول واقع شود و در این میان هیچ اطلاعات اضافه دیگری فاش نمیشود. اثباتکننده و تأیید کننده در چندین مرحله پروتکل با یکدیگر به تعامل میپردازند و نهایتا تأییدکننده به درستی ادعا اعتماد میکند و هیچ اطلاعات اضافی در مورد راز بدست نمیآورد.
بهتر است با یک نمونه معروف چگونگی کارکرد اثبات دانش صفر را مورد بررسی قرار دهیم. در اینجا از «مسئله سه رنگ» یا «مسئله رنگآمیزی نمودار» کمک میگیریم.
بیان مشکل
فرض کنید یک نقشه در اختیارتان قرار گرفته است که چندین ناحیه (راس) با خطوط (لبهها) به هم متصل شدهاند، و مسئله درست همین است. هدف این است که از از سه رنگ متفاوت برای رنگ آمیزی هر منطقه استفاده کنید تا هیچ دو قسمت مجاور به رنگ هم نباشند. آیا میتوانید کسی را قانع کنید که از رنگآمیزی صحیح نواحی اطلاع دارید، بدون آنکه لازم باشد رنگهای واقعی هر منطقه را برای فرد مورد نظر فاش کنید؟
حل مسئله با استفاده از پروتکل اثبات دانش صفر
بخش ابتدایی برپایی
اثباتکننده و تأییدکننده هر دو در مورد مناطق و پیوندهای نمودار (نقشه) توافق دارند.
ادعا
اثباتکننده ادعا میکند که یک الگو سه رنگ قابل اعتماد برای نمودار ارائه شده در اختیار دارد.
دور اول: تعهد (Commitment)
اثباتکننده رنگها را به صورت تصادفی برای هر مکان به صورت مخفیانه و بدون افشای آنها انتخاب میکند. در عوض، تاییدکننده یک قول رمزگذاری شده برای هر منطقه در اختیار تأیید کننده قرار میدهد. تأییدکننده نمیتواند مشاهده کند چه رنگهایی در تعهدات وجود دارد زیرا آنها مانند جعبهای که قفل دارد از دید او مخفی شدهاند.
دور دوم: چالش (Challenge)
تأیید کننده یک ناحیه تصادفی را انتخاب کرده و از اثباتکننده درخواست میکند که تعهد را برای آن منطقه خاص باز کند. اثباتکننده باید رنگ تعهد آن ناحیه را افشا کند.
دور سوم: پاسخ (Response)
پس از متعهد شدن به رنگها، تاییدکننده حال باید ثابت کند که رنگ آمیزی آشکار شده دقیق است. تاییدکننده این مسئله را از تفاوت رنگ بین بخشهای مجاور متوجه میشود. تأییدکننده پاسخ را بررسی کرده تا مطمئن شود که اثبات کننده خلاف قوانین عمل نکرده باشد.
تکرار (Iteration)
دور دوم و سوم بارها با استفاده از ناحیههای مختلف که به طور تصادفی انتخاب میشوند تکرار میشود. این رویه هر چند بار که لازم باشد تکرار میشود تا درجه بالایی از اعتماد به صحت ادعای اثبات کننده ایجاد شود.
نتیجه
اگر اثبات کننده به طور منظم برای هر دور، پاسخهای معتبری ارائه کند، تأییدکننده متقاعد میشود که اثباتکننده در واقع سه رنگ معتبر را در اختیار دارد، بدون اینکه از رنگهای واقعی استفاده شده اطلاع داشته باشد.
تأییدکننده به تدریج ظرفیت اثباتکننده را برای تشخیص سه رنگ معتبر نمودار با تکرار این روش برای ناحیههای مختلف افزایش میدهد. باید توجه کرد که ویژگی دانش صفر حفظ میشود زیرا تأیید کننده هرگز رنگهای واقعی اختصاص داده شده به هر ناحیه را در طول فرآیند کشف نمیکند.
نمونه بالا تصویری روشن از توانایی اثبات دانش صفر برای متقاعد کردن افراد است بدون اینکه لازم به ارائه دادههای بیش از حد باشد و در همین حال هویت راه حل به شکل راز حفظ میشود. بنابراین با ابزاری قدرتمند جهت افزایش حریم خصوصی و امنیت در برنامههای مختلف روبرو هستیم.
کاربردهای اثبات دانش صفر
اثباتهای دانش صفر ZK-proofs ابزارهای مفیدی هستند که کاربردهای زیادی در زمینههای مختلف دارند و تمرکز عمده آنها مسائل مرتبط با حریم خصوصی و امنیت است.
ZK-proof ها در بازار ارزهای دیجیتال برای بهبود حریم خصوصی تراکنشها و مقیاس پذیری بسیار مهم هستند. اثبات دانش صفر تراکنشهای ناشناس را بدون افشای جزئیات تراکنش یا هویت کاربران امکانپذیر میکند. این مسئله درست مثل ارزهای دیجیتال متمرکز بر حریم خصوصی مانند زیکش ZEC است.
از اثبات دانش صفر میتوان در زمینههای احراز هویت و کنترل دسترسی استفاده کرد به طوری که خود رمز عبور یا کلید رمزنگاری افشا نشود. بنابراین بهرهمندی از اثبات دانش صفر منجر به روشهای احراز هویت کاربر پسند و امنتر میشود.
اثبات دانش صفر همچنین در سیستمهای رایگیری الکترونیکی استفاده میشود، به طوری که به رایدهندگان اجازه میدهد تا علاوه بر حفظ مشروعیت رای آنها از افشای و چیستی رای آنها محافظت میکند. پس از حریم خصوصی رایدهندگان و یکپارچگی فرآیند انتخابات محافظت خواهد شد.
اثبات دانش صفر همچنین کاربردهایی برای انتقال و تأیید امن دادهها دارد و توانایی به نمایش گذاشتن دقت محاسبات روی دادههای خصوصی بدون افشای خود دادهها را دارد.
اثبات دانش صفر میتواند حریم خصوصی تراکنشها را در ارزهای دیجیتال بانک مرکزی (CBDCs) با تسهیل تراکنشهای خصوصی و حفظ اصل ناشناسی کاربران بهبود بخشد. با رعایت اصل تعادل میان حریم خصوصی و شفافیت در معاملات ارزهای دیجیتال بانک مرکزی، اثبات دانش صفر قابلیت ممیزی را بدون افشای جزئیات تراکنش امکان پذیر میکند.
مزایا پیادهسازی و تاثیر اثبات دانش صفر در پلتفرمهای بلاک چین
در حال حاضر اثبات دانش صفر در بلاک چین پیادهسازی شده است. دانش صفر یک روش قدرتمند برای افزایش کارایی، امنیت و حفظ حریم خصوصی در سیستمهای بلاک چین است.
به طور کلی زمانیکه اثبات دانش صفر در پلتفرمهای بلاک چین استفاده میشود چندین بخش در این پلتفرمها تقویت میشود.
افزایش حریم خصوصی و محرمانگی
اثبات دانش صفر تراکنشهای خصوصی را امکانپذیر میکند و به کاربران اجازه میدهد بدون افشای اطلاعات اساسی، مانند مبلغ تراکنش و آدرسهای فرستنده و گیرنده، تراکنشها را انجام دهند. بهبود حریم خصوصی کاربران در بلاک چینهای باز به این مورد وابسته است.
تایید و ممیزی
بدون افشای دادهها یا اطلاعات واقعی، از ZK-proofs میتوان برای بررسی صحت محاسبات یا ادعاهای خاص استفاده کرد. بر این اساس میتوان یکپارچگی دادهها را تضمین و روشهای ممیزی موثر نیز امکانپذیر میشود.
مقیاس پذیری
ZK-proofs میتوانند مقیاسپذیری یک پلتفرم را با ارائه شواهد مختصر برای محاسبات پیچیده افزایش دهند، این مورد باعث به حداقل رساندن فشار محاسباتی و ذخیرهسازی روی بلاک چین شود.
تأیید هویت و احراز هویت
با استفاده از ZK-proofs برای تأیید هویت و احراز هویت ایمن و در عین حال محافظت از حریم خصوصی کاربر مورد استفاده قرار گیرند. بنابراین برنامههای مبتنی بر بلاک چین ایمنتر خواهند شد.
قابلیت همکاری متقابل زنجیرهای
روشهای اثبات دانش صفر میتوانند به ارتباطات متقابل زنجیرهای و انتقال دارایی کمک کنند و همزمان با تسهیل قابلیت همکاری بین شبکههای مختلف بلاک چین از حریم خصوصی محافظت کنند.
معایب اثبات دانش صفر چیست؟
ZK-proof یا اثبات دانش صفر امتیازهای فراوانی در راستای حفظ حریم خصوصی و افزایش امنیت ارائه میدهد، اما به لحاظ محاسباتی دارای پیچیدگی است و ممکن است فشار سنگینی به شبکه بیاورد.
بنابراین برای اثباتهای پیچیدهتر منابع و محاسبات بیشتری از سیستم درگیر خواهد شد. این مسئله میتواند منجر به افزایش زمان پردازش تراکنشها و کارهای محاسباتی بیشتر شود و این امر خود مقیاس پذیری سیستمهای بلاک چین را دشوارتر میکند.
علاوه بر این، اثبات دانش صفر ممکن است یک لایه دیگر از پیچیدگی را به شبکه اضافه کند و ممکن است به این دلیل ممیزی و تأیید پروتکل دشوارتر شود و شانس به وجود آمدن خطاهای نرمافزاری و بروز مشکلات امنیتی بیشتر شود. علاوه بر این، در حالی که ZK-proofها حریم خصوصی را با پنهان کردن اطلاعات بهبود میبخشند، ممکن است فعالیت غیرقانونی را در برخی شرایط تسهیل کنند و مشکلاتی را برای انطباق با مقررات ایجاد کنند.
همچنین ممکن است اثبات دانش صفر برای تمام فعالیتها یا بخشها مناسب نباشد زیرا برای پیادهسازی صحیح، به آموزش و تجربه خاصی نیاز دارد. این مسئله شاید استفاده گسترده و پذیرش آنها را در بسیاری از زمینهها با مشکل مواجه کند.
سخن پایانی
الگوریتم اثبات دانش صفر ویژگیهای مفیدی برای حفظ حریم خصوصی و گسترش امنیت ارائه میکند، اما معایب خاص خود را نیز دارند و مستلزم مطالعه و ارزیابی دقیق پیش از پذیرش آنها در سیستمها یا برنامههای بلاک چین است. در حال حاضر پروژههای بسیاری از اثبات دانش صفر بهرهمیبرند اما برای قضاوت اثبات دانش صفر کمی زود است و باید جواب خود را در طول زمان پس دهد.