اگر نمیدانید اثبات دانش صفر (ZKP) چیست، توصیه میکنیم در ابتدا با این مفهوم آشنا شوید. به همین منظور پیشنهاد میشود مقاله «اثبات دانش صفر چیست»، منتشر شده در آکادمی بیت پین را مطالعه نمایید.
بعد از آشنایی با مفهوم اثبات دانش صفر، در این مقاله میخواهیم به بررسی انواع پیادهسازیهای اصلی ZKP بپردازیم. هدف این مقاله ارائه دیدگاه عمیق فنی یا رمزنگاری نیست، بلکه بیشتر به نکات کاربردی پرداخته خواهد شد که به طور کلی به فناوریهای بلاک چین مربوط میشود.
در ابتدا، بیایید با انواع اصلی اثبات دانش صفر (ZKP) شروع کنیم.
اثبات دانش صفر تعاملی در مقابل اثبات دانش صفر غیرتعاملی
دو نوع اصلی اثبات دانش صفر، تعاملی (Interactive) و غیرتعاملی (Non-interactive) هستند. اثبات دانش صفر تعاملی (IZKP) به اثباتکننده (Prover) و تأییدکننده (Verifier) نیاز دارند که در یک مکالمه یا تعامل رفت و برگشتی شرکت میکنند و در آن اثباتکننده به سؤالات تأییدکننده پاسخ میدهد. این تعامل میتواند به صورت شخصی یا از طریق شبکهای مانند اینترنت انجام شود.
از سوی دیگر، اثبات دانش صفر غیرتعاملی (NIZKP)، نیازی به تعامل بین اثباتکننده و تأییدکننده ندارند. در عوض، اثباتکننده یک مدرک مستقل ایجاد میکند که تأییدکننده میتواند مستقلاً بدون ارتباط بیشتر تأیید کند. این میتواند راحتتر و کارآمدتر از اثبات تعاملی باشد، زیرا نیازی به آنلاین بودن همزمان اثباتکننده و تأییدکننده یا تبادل پیامهای متعدد ندارد. یکی از کلاسیکترین روشهای دستیابی به این هدف، تکنیک اکتشافی Fiat-Shamir بر اساس امضای دیجیتال است.
یکی از تفاوتهای کلیدی بین اثبات دانش صفر تعاملی و غیرتعاملی، سطح اعتماد مورد نیاز بین اثباتکننده و تأییدکننده است. در یک اثبات تعاملی، تأییدکننده باید به اثباتکننده اعتماد کند که از پروتکل پیروی میکند و پاسخهای صادقانهای به سؤالات او ارائه میدهد. از سوی دیگر، در یک اثبات غیرتعاملی، تأییدکننده به هیچ وجه نیازی به اعتماد به اثباتکننده ندارد، زیرا آنها میتوانند به طور مستقل اثبات را بدون اتکا به اطلاعات ارائه شده توسط اثباتکننده، تأیید کنند.
تفاوت دیگر بین دو نوع اثبات دانش صفر، سطح پیچیدگی محاسباتی مورد نیاز است. اثبات تعاملی نسبت به اثبات غیرتعاملی از نظر محاسباتی پیچیدهتر هستند، زیرا به اثباتکننده و تأییدکننده نیاز دارند تا چندین پیام را مبادله کنند و محاسبات اضافی را انجام دهند. از سوی دیگر، اثبات غیرتعاملی، تنها به یک محاسبات توسط تأییدکننده نیاز دارند، که باعث کارآمدی و مقیاس پذیری بیشتر میشود.
هر دو اثبات دانش صفر تعاملی و غیرتعاملی دارای مزایا و معایب خاص خود هستند و بهترین انتخاب برای یک سناریوی معین به الزامات و محدودیتهای مشخصی بستگی دارد. اثبات تعاملی ممکن است برای موقعیتهایی مناسبتر باشد که اثباتکننده و تأییدکننده به طور همزمان آنلاین هستند و میتوانند به راحتی با هم ارتباط برقرار کنند. در مقابل، اثبات غیرتعاملی ممکن است برای موقعیتهایی مناسبتر باشد که اثباتکننده و تأییدکننده به طور همزمان آنلاین نیستند یا قابل اعتماد بودن اثباتکننده نامشخص است.
محدودیتهای اثبات دانش صفر تعاملی
اثبات دانش صفر تعاملی دارای محدودیتهایی است که در ادامه به آنها میپردازیم:
اثبات دانش صفر تعاملی (IZKP) دارای محدودیتهای متعددی است که آن را گرانتر و پیچیدهتر میکند.
اثبات دانش صفر تعاملی به تعامل بین اثباتکننده و تأییدکننده نیاز دارد که میتواند ناکارآمد و وقتگیر باشد. برای تکمیل اثبات، اثباتکننده باید چندین پیام را با تأییدکننده به صورت رفت و برگشتی ارسال کند. این میتواند زمان قابل توجهی را ببرد، به خصوص اگر اثبات پیچیده یا شامل دادههای بزرگ باشد. زمانی که سرعت از اهمیت بالایی برخوردار است، مانند معاملات با فرکانس بالا یا تصمیمگیری لحظهای، این یک چالش بزرگ است.
اثبات دانش صفر تعاملی به اندازه کافی مقیاسپذیر نیست. با افزایش دادههای اثبات شده، پیچیدگی اثبات نیز افزایش مییابد و تکمیل اثبات در مدت زمان معقول را دشوار میکند. زمانی که مقادیر زیادی از دادهها نیاز به اثبات دارند، مانند مدیریت زنجیره تامین یا مراقبتهای بهداشتی، این میتواند مشکلساز باشد.
اثبات دانش صفر تعاملی بر این فرض تکیه میکنند که اثباتکننده و تأییدکننده صادق هستند و سعی در تقلب یا دستکاری در اثبات ندارند. با این حال، این فرض همیشه معتبر نیست و اثباتکننده میتواند با ارسال پیامهای نادرست یا دستکاری در اثبات، سعی کند تأییدکننده را فریب دهد. این میتواند یکپارچگی اثبات را به خطر بیندازد و کارایی آن را تضعیف کند.
اثبات دانش صفر تعاملی به تکنیکهای رمزنگاری تخصصی نیاز دارند، که پیادهسازی آن میتواند دشوار باشد و به سطح بالایی از تخصص فنی نیاز دارد. این میتواند استفاده از اثبات دانش صفر تعاملی را برای کاربران غیرفنی چالشبرانگیز و پذیرش آنها را در زمینههای خاص محدود کند.
به طور کلی، در حالی که اثبات دانش صفر تعاملی پتانسیل ارائه تضمینهای امنیتی و حریم خصوصی قوی را دارند، محدودیتهای ذکر شده، استفاده گسترده آنها را با مشکل مواجه کرده است. تکنیکهای جایگزین، مانند اثبات دانش صفر غیرتعاملی یا سیستمهای الگوریتم اثبات کار (PoW)، ممکن است در زمینههای خاص مناسبتر باشند.
حال که تفاوتهای بین اثبات دانش صفر تعاملی و غیرتعاملی را درک کردیم، زمان آن فرا رسیده است که عمیقتر به محبوبترین فناوری اخیر صنعت بلاک چین و کریپتو یعنی zkSNARKها بپردازیم. در حالی که zkSNARK توسط zkSync – به عنوان محبوبترین لایه 2 – استفاده میشود، دومین مورد نزدیک نیز zkSTARKs است که توسط Starkware به کار گرفته شده است.
zkSNARKs در مقابل zkSTARKs
zkSNARKs و zkSTARKs هر دو سیستمهای اثبات دانش صفر (ZKP) هستند که به یک طرف (اثباتکننده) اجازه میدهند به طرف دیگر (تأییدکننده) صحت یک گزاره را بدون افشای هیچ اطلاعاتی در مورد خود بیانیه ثابت کند. اثباتهای دانش صفر کاربردهای زیادی دارند، از جمله تراکنشهای حریم خصوصی در بلاک چین، محاسبات امن چندطرفه و ارتباطات ناشناس.
zkSNARKها برای اولین بار در مقالهای توسط الی بن ساسون، الساندرو کیزا، دانیل جنکین، اران ترومر، و مدرس ویرزا در سال 2014 معرفی شدند. آنها بر اساس ایده «اثبات غیرتعاملی» هستند، که به این معنی است که اثباتکننده و تأییدکننده نیازی به برقراری ارتباط با یکدیگر در طول فرایند اثبات ندارند. این باعث میشود zkSNARK ها برای استفاده در بلاکچینها مناسب باشند – جایی که ارتباط بین طرفین به دلیل نیاز به اجماع محدود شده است.
zkSNARKها از ترکیبی از کلیدهای عمومی و خصوصی برای ایجاد یک اثبات استفاده میکنند. اثباتکننده به یک کلید خصوصی دسترسی دارد که از آن برای ایجاد مدرکی برای اظهارنامهای که میخواهند بیان کند، استفاده میکند. تأییدکننده به یک کلید عمومی مربوطه دسترسی دارد که از آن برای تأیید اثبات استفاده میکند. اگر مدرک معتبر باشد، تأییدکننده میتواند به درستی آن گزاره اطمینان داشته باشد، حتی اگر اطلاعاتی در مورد خود اظهارنامه نداشته باشد.
از پیوند بلاکچین و هوش مصنوعی، به پول میرسیم؟
جوابت تو شماره ۱۴ ماهنامه دامیننسه!
مزایای zkSNARKs
یکی از مزایای اصلی zkSNARKها کارایی آنهاست. فرایند اثبات بسیار سریع است و استفاده از zkSNARKها را در سیستمهای پرتوانی مانند بلاک چین ممکن میسازد.
معایب zkSNARKs
آنها بر یک فرایند «تنظیم قابل اعتماد» تکیه میکنند، که در آن گروهی از شرکتکنندگان مجموعهای از کلیدهای عمومی و خصوصی را تولید و نابود میکنند. اگر این فرایند به درستی انجام نشود، میتواند امنیت سیستم را به خطر بیندازد.
علاوه بر این، zkSNARKها شفاف نیستند، به این معنی که تأیید صحت اثبات بدون دسترسی به کلید خصوصی غیرممکن است.
zkSTARKs در مقالهای توسط الی بن ساسون، مایکل ریابزف و نیکلاس اسپونر در سال 2018 معرفی شد. آنها را میتوان توسعه و پیشرفتی در zkSNARKs در نظر گرفت که به برخی از مسائل مربوط به طراحی اصلی میپردازند.
مانند zkSNARK ها، zkSTARKها به یک اثباتکننده اجازه میدهند تا بدون افشای هیچگونه اطلاعاتی در مورد خود عبارت، یک مدرک برای یک عبارت ایجاد کند. با این حال، zkSTARKها نیازی به فرایند راهاندازی قابل اعتماد ندارند که باعث میشود آنها ایمنتر و شفافتر شوند.
مزایای zkSTARKs
یکی از مزایای اصلی zkSTARKها شفافیت آنهاست. با zkSNARK ها، تأیید صحت اثبات بدون دسترسی به کلید خصوصی امکانپذیر نیست. با zkSTARK ها، میتوان یک «اثبات تایید» (Proof of Verification) ایجاد کرد که به هر کسی اجازه میدهد صحت اثبات را بدون دسترسی به هیچگونه اطلاعات محرمانه تأیید کند. این باعث میشود zkSTARKs برای برنامههایی که اعتماد در آنها ضروری است، انتخابی امنتر و شفافتر باشد.
یکی دیگر از مزایای zkSTARKها مقیاسپذیری آنهاست. zkSNARKها بر عملیات ریاضی پیچیدهای تکیه میکنند که منابع فشرده هستند و با افزایش اندازه اثبات کارایی آنها را کاهش میدهد.
معایب zkSTARKs
یک اشکال عمده این است که zkSTARKها فقط برای اثبات صحت انواع خاصی از عبارات مناسب هستند. به ویژه، آنها فقط میتوانند برای اثبات صحت عباراتی که به صورت چندجملهای نمایش داده میشوند، استفاده شوند، که کاربرد آنها را محدود میکند.
اشکال دیگر این است که zkSTARKها کاملاً غیرتعاملی نیستند و نیاز به یک مرحله راهاندازی قابل اعتماد دارند که در آن یک رشته مرجع مشترک (CRS) تولید میشود. این CRS باید مخفی و ایمن باشد تا اثبات zkSTARK معتبر تلقی شود. اگر CRS به خطر بیفتد، امنیت مدرک نیز به خطر میافتد.
علاوه بر این، zkSTARKها هنوز به طور گسترده مورد استفاده قرار نگرفتهاند یا به خوبی درک نشدهاند، بنابراین ممکن است آسیبپذیریهای احتمالی هنوز کشف نشده باشند. این عدمپذیرش و درک گسترده به معنای کمبود ابزار و منابع برای کار با zkSTARKها است که پیادهسازی و استفاده از آنها را در عمل دشوارتر میکند.
در نهایت، zkSTARKها در مقایسه با سایر سیستمهای اثبات دانش صفر هنوز نسبتاً جدید و آزمایش نشده هستند، به این معنی که امنیت و قابلیت اطمینان بلند مدت آنها هنوز به طور کامل تایید نشده است. این عدم قطعیت میتواند برای سازمانها یا افرادی که به دنبال روشی اثبات شده و قابل اعتماد برای تأیید صحت اظهارات هستند، یک چالش باشد.
به طور خلاصه، در حالی که zkSTARKها مزایای متعددی از نظر کارایی و امنیت ارائه میدهند، چندین اشکال نیز وجود دارد که باید هنگام تصمیمگیری در مورد استفاده از آنها در نظر گرفت. این اشکالات شامل کاربرد، نیاز به مرحله راهاندازی قابل اعتماد، عدمپذیرش و درک گسترده، و عدم اطمینان در مورد امنیت و قابلیت اطمینان طولانیمدت آنها است.
مبین حسینی
زندگی من توی کامپیوتر و دنیای دیجیتال میگذره؛ عاشق فناوری بلاکچین و تکنولوژیهای دیجیتالیام و فعالیت توی اکوسیستم و کامیونتی کریپتو رو خیلی دوست دارم. اوقات فراغتم رو یا بازی میکنم، یا به پروژههای شخصیم میرسم. هیچی بلد نیستم ولی تا دلت بخواد کنجکاو و فضولم :))