اثبات دانش صفر (ZKP) چیست؟ هر آنچه که باید بدانید
رشد محبوبیت برنامههای کاربردی اینترنت آزاد در میان میلیاردها نفر کاربر در سراسر جهان منجر به کنترل بیشتر بر روی اطلاعات و دادههای کاربران توسط شرکتهای بزرگ فناوری شده است که اغلب منجر به سوءاستفاده از حریم خصوصی کاربران میشود.
نسخه صوتی این مقاله را از اینجا بشنوید:
فناوری بلاکچین، مانند اتریوم، برای بازگرداندن کنترل به کاربرانی که صاحب این اطلاعات هستند، ایجاد شده است. بااینحال، جدا از شبه ناشناس بودن، راهحلهای زیادی برای محافظت از حریم خصوصی کاربران ارائه نداده است.
بهعنوانمثال، اگر کاربر چیزی را با آدرس کیف پول خود از شخصی خریداری کند، آدرس کیف پول او اکنون توسط شخص شناخته میشود و او همه کارهایی را که کاربر در گذشته و آینده انجام داده است، از جمله اینکه چه چیز دیگری خریده است، چقدر دارایی دارد و … اکنون میداند و این موضوع باعث ایجاد نگرانی برای حفظ حریم خصوصی و پذیرش فناوری در دنیای واقعی میشود.
برای مبارزه با این موضوع، اتریوم به دنبال پیادهسازی اثبات دانش صفر (Zero Knowledge) برای بهبود حریم خصوصی کاربران است.
در این مقاله، به تعریف اثبات دانش صفر (ZKP)، نحوه کارکرد آن و اینکه چگونه میتواند به ما کمک کند، خواهیم پرداخت.
اثبات دانش صفر (Zero Knowledge Proof) چیست؟
به زبان ساده، اثبات دانش صفر (ZKP) از رمزگذاری برای اثبات درستی چیزی استفاده میکند، بدون اینکه اطلاعاتی بیش از حد لازم فاش شود، و حریم خصوصی را تا حد زیادی بهبود میبخشد.
ZKP در سال 1985 اختراع شد و عموماً به این صورت تعریف میشود:
«پروتکل دانش صفر روشی است که توسط آن یک طرف (اثباتکننده) میتواند به طرف دیگر (تأییدکننده) ثابت کند که چیزی درست است، بدون اینکه هیچ اطلاعاتی به غیر از این واقعیت فاش شود.»
دو نوع اصلی اثبات دانش صفر وجود دارد:
- تعاملی
- غیرتعاملی
در ادامه چند نمونه از ZKP را ارائه خواهیم کرد تا درک آن آسانتر شود.
با محبوبیت فزاینده بلاکچین، ZKP به دلیل مزایای بزرگی که همراه با فناوری بلاکچین به ارمغان میآورد، محبوب شده است، زیرا حریم خصوصی، سرعت و امنیت را بدون تاثیر بر تمرکززدایی بهبود میبخشد.
اما این چقدر در زندگی واقعی موثر است و آیا میتواند پاسخی برای مسائل مربوط به حریم خصوصی دادههای ما باشد؟
ZKP نوعی شواهد رمزنگاری است که به یک «اثباتکننده» اجازه میدهد تا در صورتی که از مقادیر معینی آگاه باشد، بدون افشای پاسخ واقعی به «تأییدکننده» چیزی را نشان دهد.
دانش صفر به عنوان یک مفهوم از این واقعیت ناشی میشود که هیچ اطلاعاتی توسط اثباتکننده ارائه نمیشود، اما همچنان میتواند تأییدکننده را متقاعد کند که حقیقت گفته میشود. این ارتباط شما را ایمن میکند تا هیچکس دیگری نتواند ببیند در مورد چه چیزی صحبت میکنید یا چه فایلهایی را رد و بدل میکنید.
ازآنجاییکه ZKPها تأیید یک ادعای محاسباتی را امکانپذیر میکنند، موارد استفاده زیادی برای آن وجود دارد، از جمله، وامدهنده میتواند از تکنیکهای ZKP برای تأیید اینکه وامگیرنده مقدار کافی سرمایه در حساب بانکی خود دارد، استفاده کند تا در نهایت بدون کسب اطلاعات بیشتر، پول را بازگرداند.
این فرایند نیاز به افشای اطلاعات یا داشتن شاهد برای اثبات صحت هر ادعایی را از بین میبرد.
اثبات دانش صفر (ZKP) چگونه کار میکند؟
اثبات دانش صفر به کاربران اجازه میدهد بدون ارائه هیچ اطلاعات اضافی، صحت چیزی را ثابت کنند. برای دستیابی به این هدف، از الگوریتمهایی استفاده میکند که دادههای خاصی را به عنوان ورودی میپذیرند و «درست» یا «نادرست» را به عنوان خروجی تولید میکنند تا اعتبار ادعاهای ارائهشده توسط اثباتکننده را نشان دهد.
الزامات زیر باید توسط یک پروتکل دانش صفر برآورده شود:
-
کاملبودن (Completeness)
اگر گزاره واقعاً درست باشد و هر دو کاربر صادق باشند، تأییدکننده بدون هیچ اطلاعات اضافی متقاعد میشود.
-
صحت (Soundness)
اگر گزاره نادرست باشد، یک اثباتکننده دروغگو نباید بتواند یک تأییدکننده صادق را فریب دهد تا یک گزاره نامعتبر را معتبر بداند.
-
دانش صفر (Zero-knowledge)
تأییدکننده نمیتواند چیزی در مورد گزاره فراتر از اعتبار آن (درست از نادرست) به دست بیاورد، به این معنی که آنها هیچ اطلاعی از گزاره ندارند. این باعث میشود تا تأییدکننده نتواند بفهمد ورودی اصلی بر اساس اثبات چیست.
سه مؤلفه وجود دارد که اثبات دانش صفر را تشکیل میدهد:
- شاهد: برای نشاندادن آگاهی از برخی اطلاعات مخفی، اثباتکننده از اثبات دانش صفر استفاده میکند. «شاهد» اثبات، اطلاعات سری است و فرض اثباتکننده مبنی بر آگاهی شاهد از شواهد، مجموعهای از سؤالات را ایجاد میکند که تنها توسط طرفی که به اطلاعات دسترسی دارد، میتواند پاسخ دهد؛ بنابراین، اثباتکننده یک سؤال را به طور تصادفی انتخاب میکند، پاسخ را محاسبه میکند و سپس آن را برای تأییدکننده ارسال میکند تا فرایند اثبات را آغاز کند.
- چالش: سؤال دیگری از مجموعه به طور تصادفی توسط تأییدکننده انتخاب میشود، که سپس از اثباتکننده میخواهد که پاسخ دهد.
- پاسخ: سؤال توسط اثباتکننده پذیرفته میشود و سپس پاسخ را مشخص میکند و آن را به تأییدکننده برمیگرداند. تأییدکننده میتواند بر اساس پاسخ اثباتکننده تعیین کند که آیا اثباتکننده واقعاً به شاهد دسترسی دارد یا خیر. تأییدکننده سؤالات دیگری را برای پرسیدن انتخاب میکند تا مطمئن شود که اثباتکننده به طور تصادفی پاسخهای درست را حدس نمیزند و به آنها نمیرسد. اگر این تعامل بارها تکرار شود تا زمانی که تأییدکننده راضی شود، احتمال جعل مدرک توسط اثباتکننده به میزان قابلتوجهی کاهش مییابد.
انواع اثبات دانش صفر
دو نوع اصلی اثبات دانش صفر وجود دارد، تعاملی و غیرتعاملی (Interactive & Non-interactive)
-
اثبات دانش صفر تعاملی
ZKPهای تعاملی به اثباتکننده و تأییدکننده اجازه میدهند چندین بار با هم تعامل داشته باشند. تایید کننده، اثباتکننده را به چالش میکشد، که تا زمانی که تایید کننده متقاعد شود، به این چالشها پاسخ میدهد.
یک مثال معروف از اثبات غیرتعاملی دانش صفر «غار علیبابا» است.
در داستان، غاری با دری جادویی قفل شده وجود دارد. پگی (اثباتکننده) میخواهد به ویکتور (تأییدکننده) ثابت کند که عبارت مخفی را میداند که در غار را بدون فاش کردن این عبارت باز کند.
هر دو میدانند که این غار دارای یک مسیر دایرهایشکل با یک ورودی و خروجی است و درب جادویی در انتهای آن مسیر را از وسط مسدود میکند و تنها راه باز کردن آن گفتن عبارت جادویی است.
پگی چگونه میتواند به ویکتور ثابت کند که این عبارت جادویی را میداند بدون اینکه به او بگوید این عبارت چیست؟
آنها مسیرهای A و B را از ورودی برچسبگذاری میکنند، و ویکتور بیرون از غار منتظر میماند تا پگی وارد شود. پگی میتواند مسیر A یا B را طی کند، اما ویکتور اجازه ندارد ببیند کدام مسیر را طی میکند.
سپس ویکتور میتواند فریاد بزند که از کدام سمت مسیر میخواهد برای بازگشت تصادفی استفاده کند. اگر پگی واقعاً کلمه جادویی را بداند، این کار آسان خواهد بود، زیرا او میتواند در را باز کند و در مسیر انتخاب شده برگردد.
بااینحال، اگر پگی عبارت جادویی را نداند، 50 درصد شانس دارد که از مسیری که ویکتور انتخاب کرده است خارج شود. با تکرار آزمایش، شانس او برای فریب ویکتور به طور تصاعدی کمتر میشود و تنها راه برای تضمین اینکه او مسیر صحیح را طی میکند، دانستن عبارت جادویی است.
پس از چند بار تلاش، احتمال اینکه پگی واقعاً عبارت جادویی را بداند به 100% نزدیک میشود. اگرچه هرگز نمیتواند 100٪ باشد، ایده این است که احتمال اینکه کسی به شما دروغ بگوید به حداقل برسد.
به طور خلاصه، ZKPهای تعاملی، همان طور که از نام آن پیداست، نیاز به تعامل با اثباتکننده و تایید کننده دارند. بهعنوانمثال، ویکتور از ZKPهای تعاملی برای تأیید صحت گزاره پگی از طریق ارتباط رفتوبرگشت بین اثباتکنندهها و تأییدکنندهها استفاده میکند.
بااینحال، ZKPهای تعاملی کاربرد و قابلیت انتقال محدودی دارند، زیرا بر تعامل بین دو طرف متکی است و اثبات آن برای شخص ثالث برای تأیید در دسترس نیست.
اگر پگی دوست دیگری را به غار بیاورد، باید تمام مراحل را برای اثبات دوباره انجام دهد، که زمان بر است و مقیاسپذیر نیست.
-
اثبات دانش صفر غیرتعاملی
ZKPهای غیرتعاملی ایجاد شدند تا نشان دهند که ارائهدهنده از اطلاعات خاصی بدون افشای واقعی آن آگاه است.
یک مثال محبوب از اثبات غیرتعاملی بازی «Where’s Wally» است.
رقابتی از «Where’s Wally» را تصور کنید، حتی سازمان دهندگان نمیدانند والی کجاست. هرکسی که بتواند ثابت کند که والی وجود دارد یک جایزه دریافت میکند. شما والی را پیدا کردید اما نمیخواهید با انگشت به او اشاره کنید؛ زیرا این کار موقعیت والی را به همه نشان میدهد و بلافاصله مسابقه را پایان میدهد.
برای اثبات اینکه میدانید والی کجاست و او واقعاً وجود دارد، یک تکه کاغذ بزرگ، چندبرابر اندازه عکس والی، برمیدارید و یک سوراخ کوچک در آن ایجاد میکنید. سپس سوراخ کوچک را در بالای والی قرار دهید.
این نشان میدهد که والی وجود دارد، اما ازآنجاییکه تکه کاغذ بزرگ تمام اطلاعات زمینه را مسدود میکند، مکان والی فاش نشده است و هنوز یک راز است.
به طور خلاصه، مثال بالا فقط یک قیاس برای ZKPهای غیرتعاملی است، اما نشان میدهد که چگونه آنها غیرتعاملی هستند، زیرا هرکسی که سوراخی را که والی را نشان میدهد ببیند، موافق است که اثبات کافی برای وجود والی بدون نیاز به تکرار آن، بر خلاف روش تعاملی، است.
در واقع، با قراردادن دادههای مخفی در یک الگوریتم خاص و اجرای آن، اثبات دانش صفر غیرتعاملی ایجاد میشود. هنگامی که تأییدکننده این مدرک را دریافت میکند، از روش دیگری استفاده میکند تا مطمئن شود که اثباتکننده اطلاعات سری را میداند.
ZKPهای غیرتعاملی همچنین باعث میشوند که اثباتکننده و تأییدکننده یک کلید به اشتراک بگذارند تا تأیید توسط شخص دیگری غیر از تأییدکننده و تأییدکننده انجام شود.
ازآنجاییکه تأییدکننده میتواند اطلاعات را فقط یک بار در هر زمان معین بررسی کند، این کار نسبت به ZKPهای تعاملی قدرت پردازش بیشتری میگیرد.
اثبات دانش صفر در برنامههای بلاکچین
دو برنامه بلاکچین محبوب وجود دارد که از اثبات دانش صفر استفاده میکنند:
- ZkSync
- StarkNet
آنها ZK-rollupهایی هستند که از اثبات دانش صفر استفاده میکنند که به مقیاسپذیری شبکه اتریوم کمک میکند.
تفاوت اصلی این است که zkSync از اثبات ZK-SNARK استفاده میکند درحالیکه StarkNet از اثبات ZK-STARK استفاده میکند. (در پستی جداگانه به تعریف هر کدام از این برنامهها خواهیم پرداخت)
موارد استفاده از اثبات دانش صفر
موارد استفاده از اثبات دانش صفر را باهم بررسی میکنیم.
-
پرداختهای ناشناس
همان طور که در ابتدای مقاله ذکر شد، پرداختها بر روی بلاکچین، تراکنش و کیف پول شما را فاش میکند. اگرچه نظارت مالی برای جلوگیری از فعالیتهای مالی غیرقانونی مفید است، اما میتواند مورد سوءاستفاده قرار گیرد و همچنین حریم خصوصی شهروندان عادی را به خطر بیندازد.
در بلاکچینهای عمومی، از اثبات دانش صفر نیز برای ناشناس کردن تراکنشها استفاده میشود.
Tornado Cash نمونهای از یک سرویس غیرمتمرکز و غیرحضانتی است که کاربران را قادر میسازد تا تراکنشهای خصوصی اتریوم را با استفاده از اثبات دانش صفر برای پنهانکردن جزئیات تراکنش و اطمینان از ناشناس بودن انجام دهند.
اما متاسفانه با فعالیت غیرقانونی هم مرتبط هستند. برای غلبه بر این امر، حریم خصوصی باید به تنظیمات پیشفرض در بلاکچینهای عمومی تبدیل شود که در StarkNet انجام میشود.
-
امنیت هویت
راهحلهای مدیریت هویت موجود، دادههای حساس را در معرض خطر قرار میدهد. اثبات دانش صفر میتواند به افراد در تأیید هویت خود و درعینحال محافظت از اطلاعات حساس کمک کند.
در زمینه شناسایی غیرمتمرکز، اثبات دانش صفر بسیار مفید هستند. افرادی که دارای هویت غیرمتمرکز هستند که به آن «هویت خودمختار» نیز میگویند، میتوانند بر روی اینکه چه کسی میتواند شناسههای شخصی آنها را ببیند، کنترل داشته باشند.
یک مثال عالی از هویت غیرمتمرکز این است که بتوانید شهروندی خود را بدون اشتراکگذاری شناسه خود با استفاده از ZKP اثبات کنید.
-
احراز هویت
استفاده از خدمات اینترنتی مستلزم ایجاد حقوق شناسایی و دسترسی است. بیشتر اوقات، این به معنای دادن اطلاعات شخصی مانند نام، آدرس ایمیل، تاریخ تولد و غیره است.
بااینحال، اثبات دانش صفر میتواند احراز هویت را برای پلتفرمها و کاربران به طور یکسان ساده کند. هنگامی که یک ZK-proof با استفاده از اطلاعات عمومی (بهعنوانمثال، دادههایی که ثابت میکند کاربر عضو پلتفرم است) و خصوصی (مثلاً جزئیات کاربر) ساخته شد، کاربر میتواند بهراحتی آن را در صورت نیاز به سرویس ارسال کند تا ثابت کنند که کی هستند.
این امر تجربه کاربر را بهبود میبخشد و نیاز شرکتها به نگهداری حجم وسیعی از دادههای کاربر را از بین میبرد.
-
اثبات رمز عبور با دانش صفر
اثبات دانش صفر برای رمزهای عبور نیز قابلاستفاده است. این یک طرف (اثباتکننده) را قادر میسازد تا به طرف دیگر (تأییدکننده) نشان دهد که رمز عبور را میداند بدون اینکه چیزی را برای تأییدکننده فاش کند – به غیر از این که اثباتکننده رمز عبور را میداند.
-
محاسبات قابل تایید
یکی دیگر از موارد استفاده ZKP برای بهبود فناوری بلاکچین، محاسبات قابل تایید است. این امکان برونسپاری محاسبات را فراهم میکند درحالیکه نتایج قابل تأیید را حفظ میکند. ن
هاد نتیجه را همراه با مدرکی مبنی بر اینکه برنامه بهدرستی اجرا شده است، ارسال میکند. این برای افزایش سرعت پردازش بلاکچین بدون به خطر انداختن امنیت بسیار مهم است.
گزینههای مقیاسگذاری روی زنجیره، مانند شاردینگ، تغییرات قابلتوجهی را در لایه پایه بلاکچین ضروری میکنند. این رویکرد پیچیده است و نقصهای پیادهسازی میتواند مکانیسم امنیتی اتریوم را به خطر بیندازد.
از این رو راهحلهای مقیاسبندی خارج از زنجیره در حال بررسی هستند زیرا نیازی به بازنویسی کد اتریوم ندارند. برای افزایش توان در لایه پایه اتریوم، آنها اجرای محاسباتی را به یک زنجیره جداگانه برونسپاری میکنند که سپس نتایج را به اتریوم برمیگرداند.
این بدان معناست که اتریوم اجرا را انجام نمیدهد که باعث کاهش ازدحام شبکه میشود و پردازش تراکنش را تسریع میکند (پروتکلهای خارج از زنجیره برای اجرای سریعتر بهینه شدهاند).
بااینحال، زنجیره نیاز دارد تا تراکنشهای خارج از زنجیره را بدون محاسبه مجدد آنها اعتبارسنجی کند، در غیر این صورت هدف را شکست میدهد.
محاسبات قابل تأیید در این مرحله وارد عمل میشود. هنگامی که یک نود یک تراکنش را خارج از زنجیره اجرا میکند، یک اثبات دانش صفر را برای نشاندادن اعتبار تراکنش ارائه میکند.
این اثبات (که به عنوان اثبات اعتبار شناخته میشود) واقعی بودن یک تراکنش را تضمین میکند و به اتریوم اجازه میدهد تا فوراً نتیجه را در وضعیت خود اعمال کند بدون اینکه منتظر کسی باشد که آن را به چالش بکشد.
چالشهای اثبات دانش صفر
درحالیکه ZKPها راه حلی عالی برای حفظ حریم خصوصی در بلاکچین به نظر میرسند، اما با چالشهای متعددی همراه هستند که در زیر به آنها خواهیم پرداخت.
-
تأیید، تضمین نشده است
ZKPها اطمینان 100٪ از صحت ادعا را ارائه نمیدهند – حتی اگر احتمال تأیید در زمانی که اثباتکننده دروغ میگوید ممکن است بسیار کم باشد.
-
شدت محاسبات
هر دو ZKP تعاملی و غیرتعاملی بین اثباتکننده و تأییدکننده الگوریتمهایی دارند که به قدرت محاسباتی زیادی نیاز دارند. این به این معنی است که اثباتکننده و تأییدکننده هنگام استفاده از دستگاههایی با قدرت محاسباتی بیشتر باید هزینه بیشتری بپردازند.
بهعنوانمثال، ZK-rollups برای تأیید یک اثبات ZK-SNARK در اتریوم، 500,000 گس میپردازد، درحالیکه ZK-STARK به هزینههای بالاتری نیاز دارد.
-
سختافزار گرانقیمت
باتوجهبه محاسبات بسیار دشوار موردنیاز برای تولید ZKP، دستگاههایی که قادر به اجرای این پروتکلها هستند، گرانتر هستند و همه توان خرید آنها را ندارند.
برنامههایی که قصد استفاده از فناوری دانش صفر را دارند باید هزینههای سختافزاری را نیز در نظر بگیرند، که میتواند قیمتها را برای کاربران افزایش دهد.
نتیجهگیری
حفظ حریم خصوصی برای کسبوکارها و سازمانها برای رقابتی ماندن بسیار مهم است. ماهیت باز بودن بلاکچین و عدم استفاده آسان از ویژگیهای حریم خصوصی میتواند یکی از دلایل اصلی استفاده از فناوری بلاکچین باشد.
ایجاد راهحلهای بلاکچین با قابلیت حفظ حریم خصوصی که با اثبات دانش صفر پشتیبانی میشوند، مانند StarkNet و zkSync، بلاکچینهایی را فعال کرده است که در عین غیرمتمرکز بودن، ارزان و سریع هستند.
این امکان وجود دارد که موج بعدی پذیرش انبوه ارزهای دیجیتال آغاز شود، که ناشی از تقاضای دنیای واقعی برای راحتی است که فناوری دانش صفر میتواند هم به کاربران و هم برای کسبوکارها بدهد.
سوالات متداول
- اثبات دانش صفر (ZKP) چیست؟
به زبان ساده، اثبات دانش صفر (ZKP) از رمزگذاری برای اثبات درستی چیزی استفاده میکند، بدون اینکه اطلاعاتی بیش از حد لازم فاش شود، و حریم خصوصی را تا حد زیادی بهبود میبخشد.
- چالشهای اثبات دانش صفر چیست؟
تأیید تضمین نشده است – شدت محاسبات – سختافزار گرانقیمت
- موارد استفاده از اثبات دانش صفر چیست؟
پرداختهای ناشناس – امنیت هویت – احراز هویت – اثبات رمز عبور با دانش صفر – محاسبات قابل تایید
منبع: Coingecko
دیدگاه ارسال شده توسط شما، پس از تایید توسط مدیران سایت منتشر خواهد شد.
استفاده از کلمات و محتوای توهینآمیز و غیراخلاقی به هر شکل و هر شخص ممنوع است.
انتشار هرگونه دیدگاه غیراقتصادی، تبلیغ سایت، تبلیغ صفحات شبکههای اجتماعی، قراردادن اطلاعات تماس و لینکهای نامرتبط مجاز نیست.