الگوریتم دانش صفر یا به اختصار ZKP یک روش در رمزنگاری است که به یک طرف (اثبات کننده) اجازه می دهد به طرف دیگر (تایید کننده) ثابت کند که یک بیانیه خاص درست است، بدون اینکه هرگونه اطلاعاتی بیشتر از حقیقت بیانیه به تایید کننده منتقل شود.
این الگوریتم بر این ایده استوار است که اثبات داشتن اطلاعات خاص با سادگی انجام می شود با این شرط که این اطلاعات را فاش کنیم؛ چالش اصلی این است که چگونه این دارایی را بدون فاش کردن اطلاعات یا هر جنبه ای از آن اثبات کنیم.
در نظر بگیرید که اثبات کننده باید تنها زمانی بتواند اثباتی از بیانیه ای ارائه دهد که اطلاعات مخفی خاصی را در ارتباط با بیانیه داشته باشد، بنابراین تایید کننده، حتی پس از اینکه متقاعد شده است که بیانیه درست است، نباید بتواند بیانیه را به طرف سومی اثبات کند.
اگر احساس کردید که هنوز متوجه نشدید اثبات دانش صفر چیست و چگونه کار میکند، نگران نباشید ما در این مقاله قصد داریم تا به زبانی ساده پیچیدگیهای گستردهای که در این مفهوم وجود دارد، توضیح دهیم. اما اول اجازه دهید ببینیم چرا اثبات دانش صفر اهمیت دارد؟
تاییدیه دیجیتال
هرچه دنیای دیجیتال گستردهتر شد، تعاملات افراد نیز پیچیدهتر شد. طی سالیان گذشته حضور افراد در فضای دیجیتال آنقدر گسترده شده است که برخی از افراد اساسا هویتی دیجیتال در کنار هویت واقعی خود ایجاد کردهاند که در بعضی مواقع با یکدیگر در تضاد هستند. در چنین تعاملات پیچیدهای که ما با غریبهها در فضای دیجیتال داریم، چیزی که اهمیت دارد، منابع حقیق و اطلاعات تایید شده است.
اطلاعات تایید شده و حقیقی نیز به راحتی ایجاد نمیشود. بسیار دشوار است که ما در مواجهه با شخصی غریبه که برای اولین بار با وی برخورد داشتهایم بتوانیم به اطلاعاتی که او میدهد اعتماد کنیم. بگذارید مثالی بزنیم.
فرض کنید برای خرید یک جفت کفش ورزشی به کفشفروشی رفته و کفش دلخواه خود را خریداری کردهاید. سپس با استفاده از کارت بانکی خود مبلغ را پرداخت کرده و فاکتور خرید کفش را دریافت میکنید. اما به ناگهان تلفن همراه شما زنگ خورده و به شما اطلاع میدهند که فرزند شما مریض شده و اکنون در بیمارستانی در نزدیکی شما بستری است.
آنقدر این خبر شوکه کننده است که فراموش میکنید کفش خریداری شده را از مغازه بردارید. به سرعت خود را به بیمارستان رسانده و متوجه میشوید که خوشبختانه حال فرزند شما چندان وخیم نیست. پس از این که از سلامت فرزندتان اطمینان حاصل میکنید، به یاد میآورید کفشی که خریداری کرده بودید، نزد کفشفروش جا مانده است.
به کفشفروشی بازگشته و از او تقاضای میکنید که کفش شما را به شما برگرداند اما او میگوید که شما کفش را در همان لحظه با خود بردهاید. شما برای اثبات حقیقت ادعای خود مجبور به ارائه شواهد هستید. فاکتوری که در دست شما است و همینطور تراکنش شما نشان میدهد که کفشی خریداری کردهاید. همچنین تصاویر ضبط شده از دوربین مداربسته نشان میدهد که هنگام خروج شما از کفش فروشی، کفشی همراه نداشتید. خوشبختانه ادعای شما اثبات میشود.
اما برای اثبات ادعای خود مجبور به ارائه تمام مدارک و شواهد موجود بودید. قاعدتا در فضای دیجیتال که نمیدانید چه افرادی ممکن است چه استفادههایی از اطلاعات شما انجام دهند، نمیتوانید با خیال راحت تمام اطلاعات خود را به اشتراک بگذارید. بنابراین اگر بخواهید به صورت دیجیتال حرف خود را اثبات کنید بدون اینکه اطلاعاتی از تراکنش خود به اشتراک بگذارید، باید چکار کنید؟
الگوریتم اثبات دانش صفر یا ZKP چیست؟
الگوریتم اثبات دانش صفر (zero knowledge proof) به زبان ساده یعنی اینکه یک بدون فاش کردن رمز یک گاو صندوق به فرد دیگر اثبات کنید که رمز عبور درست را در اختیار دارید.
بیایید به مثال قبلی بازگردیم. چگونه میتوان بدون ارائه اطلاعات دقیق، اثبات کرد که شما کفش را خریداری کردهاید؟ فرض کنید الگوریتمی خاص با پرسیدن سوالات مشخص به دنبال پاسخ صحیح باشد. سوال پرسیده میشود که آیا شما در روز گفته شده کفشی خریداری کردهاید؟ یا آیا هنگام خروج از کفش فروشی، کفشی در اختیار داشتید؟ یا آیا از زمان خرید کفش توسط شما تا امروز آن مدل کفش از انبار کفشفروشی کم شده است یا خیر. در واقع هیچ جزئیات دقیقی ارائه نمیشود اما شما میتوانید تایید کنید که آن کفش را خریداری کرده اما تحویل نگرفتهاید.
ویژگیهای اثبات دانش صفر چیست؟
حال بیایید وارد دنیای بلاکچین شویم. در جهانی هستیم که مهمترین ویژگی آن ناشناس بودن است. در این دنیا شما با افراد بسیار زیادی معامله میکنید. برای چنین معاملاتی شما یا باید به شخص مقابل اعتماد داشته باشید، که مستلزم شناخت از طرف مقابل است، یا باید به شخص ثالثی اعتماد کنید که باز هم برخلاف روح فناوری بلاکچین است. الگوریتم اثبات دانش صفر میخواهد تراکنشها را بدون نیاز به اعتماد به فرد دیگر و بدون ارائه اطلاعات دقیق، اثبات کنید. بنابراین علاوه بر اطمینان از عدم انتقال اطلاعات بین دو طرف، ZKPها باید دو شرط دیگر را رعایت کنند:
کامل بودن: اگر یک جمله درست باشد، یک تایید کننده صادق (یعنی کسی که کل پروتکل را به طور کامل دنبال میکند) توسط یک اثبات کننده صادق متقاعد شود. این بدان معنی است که سیستم هربار برای تایید اثبات یک ادعا باید کار انجام دهد.
سالم بودن: اگر یک گزاره نادرست باشد، هیچ اثبات کننده متقلبی نمیتواند یک تایید کننده صادق را متقاعد کند که گزاره درست است. در مثال کفش فروشی شما تنها زمانی میتوانید اثبات کنید که کفش را خریداری کردهاید، اگر و فقط اگر درست باشد.
یک مثال کامل از الگوریتم اثبات دانش صفر
از زمان اختراع الگوریتم ZKP توسط شفی گلدواسر، سیلیویو میکالی و چارلز راکف، در سال ۱۹۸۵، مثال محبوبی که توسط آنها برای توضیح این الگوریتم استفاده شد، همواره بهترین مثال برای توضیح این الگوریتم است.
فرض کنید دو دوست به نامهای علی و رضا میخواهند اطلاعاتی با یکدیگر رد و بدل کنند. در اینجا علی اثبات کننده است و رضا تایید کننده است. متاسفانه رضا به خاطر عارضهای مادرزادی به کوررنگی مبتلا شده و نمیتواند تفارت رنگها را تشخیص دهد. علی که از این مشکل دوستش آگاه است، دو توپ به رنگهای قرمز و سبز به وی نشان میدهد. اما رضا باور نمیکند که توپها رنگ متفاوت دارند.
علی توپها را به رضا میدهد تا هر طور که میتواند ادعای او را راستیآزمایی کند. رضا یکی از توپها را در دست راست خود و دیگری را در دست چپ خود قرار داده و پشت سرش میبرد. سپس آنها را دور از چشم علی در دستانش جابجا میکند. بعد از آن توپها را به علی نشان میدهد و میپرسد آیا توپها در دستانش جابجا شده است؟
علی تایید میکند اما رضا هنوز قانع نشده است. چرا که حتی اگر دو توپ رنگ یکسان داشت نیز علی ۵۰ درصد شانس داشت که پاسخ صحیح را بدهد. بنابراین یک بار دیگر توپها را پشت سر خود برده و جای آنها را تغییر میدهد. در این حال، اگر توپها هر دو یک رنگ باشند، غیر ممکن است که علی بتواند پاسخ صحیح بدهد.
با تمام این تفاصیل، در نهایت تنها چیزی که رضا میتواند متوجه آن شود، این است که توپها رنگ متفاوت دارند یا رنگ آنها یکسن است. رضا هرگز نمیفهمد که توپها چه رنگی دارند. اگرچه میتواند از علی بپرسد که توپها واقعا چه رنگی هستند اما حتی در صورت دانستن این اطلاعات باز هم نمیتواند از صحت گفته علی آگاه باشد.
مثال دیگر را شما حل کرده و در بخش نظرات با ما به اشتراک بگذارید. فرض کنید از یک فروشگاه آنلاین خریداری کردهاید. تراکنش انجام شده اما محصول به شما ارائه داده نشده است. چگونه میتوان با ارائه کمترین اطلاعات اثبات کرد که شما خرید را انجام دادهاید؟
انواع اثبات الگوریتم دانش صفر (zero knowledge proof)
در دنیای رمزارزها به طور کلی دو نوع ZKP وجود دارد:
اثباتهای تعاملی دانش صفر (zero knowledge proof)
به مثال علی و رضا برگردید. در این روش علی و رضا در طول اثبات به طور مداوم با یکدیگر صحبت کرده و اطلاعات را با یکدیگر بررسی میکردند. گفتگوی رفت و برگشتی میان علی و رضا به علی کمک میکرد تا ادعای خود را اثبات کرده و به رضا کمک میکرد تا متقاعد شود.
اثباتهای غیر تعاملی دانش صفر
اثباتهای غیرتعاملی دانش صفر لزوما به ارتباط دائم بین اثبات کننده و تایید کننده نیاز ندارند. به عنوان مثال هنگامی که شبکه میخواهد بفهمد آیا شما پرداخت را به کفش فروش انجام دادهاید، تنها کافی است بپرسد آیا در آن روز انتقالی از حساب شما به حساب فروشنده رخ داده یا نه؟
از آنجایی که اثباتهای غیرتعاملی تنها به یک بار تبادل اطلاعات نیاز دارند، باید قدرت محاسباتی بیشتری داشته باشند. اما به دلیل راحتی، محبوبیت بیشتری دارند.
کاربردهای اثبات الگوریتم دانش صفر (zero knowledge proof)
هویتهای غیرمتمرکز
احراز هویت در دنیای امروز بسیار اهمیت پیدا کرده است. پروتکلهای KYC که برای جلوگیری از دور زدن تحریمها توسط خزانهداری ایالات متحده ترویج میشود، بانکها و موسسات مالی را ملزم میکند تا اطلاعات هویتی زیادی را از مشتریان خود درخواست کنند تا مطمئن باشند با افرادی که در لیست تحریمی OFAC قرار دارند، مبادله نکنند. با این حال، چنین احراز هویتهایی آهشته بوده و گاها تا چند روز زمان نیاز دارد. همچنین نگرانیهایی در مورد ایمنی دادهها و استفاده نادرست از دادهها وجود دارد.
با کمک شناسههای غیرمتمرکز و الگوریتم های دانش صفر شما تنها نیاز به یک بار تایید KYC دارید و سپس میتوانید به صورت نامحدود تایید کنید که الزامات مرتبط با این پروتکل را دارید. این کار بدون افشای اطلاعات شخصی شما برای تمام ارائه کنندگان خدمات انجام میشود و میتوانید بر روی دادههای شخصی خود کنترل داشته باشید.
مقیاسپذیری بلاکچین
مقیاسپذیری یکی از بزرگترین چالشها برای فناوری بلاکچین است. این مشکل هنگامی برجسته میشود که افراد بیشتری از شبکه استفاده کنند. ازدحام شبکه اغلب منجر به افزایش کارمزد تراکنشها شده و پذیرش بیشتر پروتکلها را با مشکل مواجه میکند. ZKP میتواند مشکل مقیاس پذیری را حل کند.
رولآپهای دانش صفر یکی از راهحلهای مقیاسپذیری برای بلاکچینهای لایه ۲ هستند. این رولآبها با انجام محاسبات و تایید تراکنشها در یک زنجیره فرعی، به زنجیره اصلی کمک میکنند که بار تراکنش کمتری را تحمل کند. فرض کنید هزاران تراکنش برای انجام معاملات روی زنجیره اصلی ارسال میشود. زنجیره اصلی یا لایه یک این تراکنشها را به زنجیره فرعی رول آپ کرده و زنجیره فرعی نیز با کمترین داده تراکنش را تایید میکند. سپس تراکنش تایید شده برای ذخیره سازی به زنجیره اصلی باز میگردد.
پروتکلهای حریم خصوصی
یکی از محبوبترین دلایل استفاده از الگوریتم دانش صفر این است که نیاز به اطلاعات کمی برای تایید تراکنشها وجود دارد. یکی از کوینهای محبوب که از الگوریتم دانش صفر (zero knowledge proof) استفاده میکند، زی کش (Zcash) است. هنگامی که یک کاربر زی کش کوینهایی را برای کاربر دیگر ارسال میکند، تنها اطلاعاتی مبتنی بر تراکنش ارائه میشود و شخص ثالث هیچ اطلاعات محرمانه دیگری در مورد ماهیت معامله و طرفین معامله دریافت نمیکند.
سخن پایانی
چشمانداز اقتصاد جهانی با تکنولوژی بلاکچین زیر و رو شده است. موج گستردهای که توسط این تکنولوژی راه افتاده، ایدههای جدیدی را مطرح کرده مبنی بر اینکه چگونه با حفظ حریم خصوصی میتوان در فضای دیجیتال تعاملات خود را مدیریت کرد. همچنین حساسیتها مبنی بر حفظ حریم خصوصی نیز مزید بر علت شده است که توسعهدهندگان به دنبال راههای جدید برای بهبود حریم خصوصی در فضای مجازی باشند.
اثباتهای دانش صفر (zero knowledge proof) یکی از راهحلهای در حال ظهوری است که میتوان با استفاده از آن در عین حفظ حریم خصوصی، در فضای دیجیتال تعاملات سازندهای با سایر افراد داشت. در دو سال گذشته، علاقه به فناوری دانش صفر افزایش یافته و بودجه تحقیق و توسعه برای آن به سطح خوبی رسیده است.
با حرکت اقتصاد جهانی به سمت شکلهایی از اقتصاد غیرمتمرکز، میتوان امید داشت که الگوریتمهای دانش صفر در سالهای آینده جای خود را در بین تکنولوژیهای مطرح جهانی خصوصا در زمینه اقتصاد باز کنند. با این حال، این تکنولوژی میتواند در سایر وجود زندگی بشر از حقوق، سیاست، آموزش و… نیز نقشآفرینی کند. بنابراین لازم است در مورد این مفهوم اطلاع داشته باشیم.
سوالات متداول
الگوریتم اثبات دانش صفر چیست؟
الگوریتم دانش صفر یا به اختصار ZKP یک روش در رمزنگاری است که به یک طرف (اثبات کننده) اجازه می دهد به طرف دیگر (تایید کننده) ثابت کند که یک بیانیه خاص درست است، بدون اینکه هرگونه اطلاعاتی بیشتر از حقیقت بیانیه به تایید کننده منتقل شود.
انواع اثبات دانش صفر کدام است؟
اثبات دانش صفر به دو روش تعاملی و غیر تعاملی است. در روش تعاملی تایید کننده و اثبات کننده به صورت دائمی با یکدیگر در ارتباط هستند اما در روش غیرتعاملی لزومی به ارتباط دائم نیست.
الگوریتم اثبات دانش صفر چه کاربردی در بلاکچین دارد؟
الگوریتم اثبات دانش صفر میتواند برای بهبود امنیت، مقیاسپذیری و کارایی شبکه بلاکچین اهمیت بسیار زیادی داشته باشد.