تا به حال فکر کرده‌اید که چگونه می‌توان یک تراکنش را بدون اینکه کسی بفهمد چه چیزی در آن وجود دارد، در بلاک چین تأیید کرد؟ وقتی همه چیز در بلاک چین قابل مشاهده است، چگونه می‌توانیم از حریم خصوصی محافظت کنیم؟ الگوریتم zk-SNARK با استفاده از گواه دانش صفر، این امکان را فراهم می‌کند که بدون نیاز به فاش کردن اطلاعات، اعتبار یک ادعا یا تراکنش تأیید شود.

در این مقاله از آکادمی بیت‌پین به زبان ساده با مفاهیم پایه، نحوه عملکرد، کاربردها، مزایا و معایب zk-SNARK آشنا می‌شویم و تفاوت آن با zk-STARK را بررسی می‌کنیم.

آشنایی با مفهوم اثبات دانش صفر (Zero-Knowledge Proof)

اثبات دانش صفر (ZKP) یک مفهوم اساسی در رمزنگاری است که به یک طرف (اثبات‌کننده) اجازه می‌دهد تا طرف دیگر (تأیید کننده) را متقاعد کند که یک ادعا درست است، بدون اینکه هیچ اطلاعاتی فراتر از صحت ادعا را فاش کند.

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

تصور کنید که در کتاب‌های مصور Where’s Wally، می‌خواهید به دوست خود ثابت کنید که می‌دانید Wally در تصویر کجاست، بدون اینکه مکان دقیق او را نشان دهید.

ولی را در عکس سمت چپ پیدا کنید!

در این شرایط شما می‌توانید یک تکه کاغذ بزرگ را روی کتاب قرار دهید و فقط یک سوراخ کوچک در جایی که Wally قرار دارد ایجاد کنید. دوست شما با دیدن والی از طریق سوراخ متقاعد می‌شود که شما مکان او را می‌دانید، بدون اینکه مکان دقیق او برایش آشکار شود.

یک مثال شهودی دیگر از ZKP، تمثیل غار علی بابا است.

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

  • سارا برای اثبات دانش خود بدون افشای راز، وارد غار می‌شود و یکی از دو مسیر را انتخاب می‌کند. سعید که بیرون غار منتظر است، نمی‌داند سارا کدام مسیر را انتخاب کرده است. سپس سعید وارد غار می‌شود و از سارا می‌خواهد که از مسیر دیگر برگردد. اگر سارا کلمه رمز را بداند، می‌تواند از طریق در جادویی از مسیر دیگر برگردد.
  • این روند چندین بار تکرار می‌شود. هر بار که سارا با موفقیت از مسیر مورد نظر سعید برمی‌گردد، اطمینان وی به اینکه سارا کلمه رمز را می‌داند افزایش می‌یابد. با این حال، از آنجایی که سعید نمی‌بیند سارا چگونه این کار را انجام می‌دهد، هیچ اطلاعاتی در مورد خود کلمه رمز به دست نمی‌آورد.

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

این مفهوم اساسی در پشت فناوری‌هایی مانند zk-SNARKs قرار دارد که به کاربران امکان می‌دهد تراکنش‌ها را تأیید کنند یا ادعاها را بدون افشای اطلاعات خصوصی، ثابت کنند.

الگوریتم اثبات دانش صفر سه ویژگی اصلی دارد:

  • کامل بودن (Completeness): به این معنی که اگر ادعا درست باشد، یک اثبات‌کننده صادق می‌تواند تأییدکننده صادق را متقاعد کند؛
  • صحت (Soundness): به این معنی که اگر ادعا نادرست باشد، هیچ اثبات‌کننده متقلبی نمی‌تواند تاییدکننده صادق را متقاعد کند (به جز با احتمال بسیار کم)؛
  • دانش صفر (Zero-Knowledge): به این معنی که تاییدکننده هیچ اطلاعاتی فراتر از صحت ادعا به دست نمی‌آورد.

همچنین ثبات‌های دانش صفر می‌توانند تعاملی (Interactive) باشند که در آن اثبات‌کننده و تاییدکننده چندین دور با یکدیگر ارتباط برقرار می‌کنند یا غیرتعاملی (Non-Interactive) باشند که در آن اثبات‌کننده یک پیام واحد را برای تاییدکننده ارسال می‌کند.

الگوریتم zk-SNARK از نوع غیرتعاملی است.

الگوریتم zk-SNARK چیست؟

الگوریتم zk-SNARK مخفف Zero-Knowledge Succinct Non-Interactive Argument of Knowledge است. بیایید هر بخش از این عبارت را با هم بررسی کنیم:

  • Zero-Knowledge: همانطور که قبلاً توضیح داده شد، این ویژگی تضمین می‌کند که هیچ اطلاعاتی فراتر از صحت ادعا فاش نمی‌شود.
  • Succinct: به این معنی است که اندازه اثبات بسیار کوچک است و صرف نظر از پیچیدگی محاسبات زیربنایی، تأیید آن به‌سرعت انجام می‌شود. این ویژگی برای مقیاس‌پذیری سیستم‌ها حیاتی است.
  • Non-Interactive: اثبات‌کننده تنها یک پیام را به تأییدکننده ارسال می‌کند و نیازی به هیچ‌گونه تعامل رفت و برگشتی نیست. این ویژگی برای سیستم‌های غیرمتمرکز و غیرهم‌زمان مانند بلاک چین بسیار مهم است.
  • Argument of Knowledge: این بخش نشان می‌دهد که اثبات‌کننده به طور محاسباتی ثابت می‌کند که دانش (شاهد) لازم برای ادعای خود را در اختیار دارد و امنیت در برابر اثبات‌کننده‌های متقلب با قدرت محاسباتی محدود تضمین می‌شود.

شاید برای شما جالب باشد که بدانید اولین استفاده گسترده و شناخته شده از zk-SNARKها در ارز دیجیتال زی‌کش (Zcash) بود.

ویژگی‌های اصلی الگوریتم zk-snark

الگوریتم zk-SNARK دارای ویژگی‌های کلیدی متعددی است که آن را برای کاربردهای مختلف جذاب می‌کند. برخی از این ویژگی‌ها شامل موارد زیر می‌شود:

ویژگی‌های الگوریتم zk-snark

  • حفظ حریم خصوصی: این الگوریتم امکان تأیید محاسبات را بدون افشای داده‌های ورودی حساس فراهم می‌کند. این ویژگی برای برنامه‌هایی که نیاز به حفظ محرمانگی دارند، بسیار ارزشمند است.
  • کارایی بالا: اثبات‌های تولید شده توسط zk-SNARKها اندازه کوچکی دارند و تأیید آن‌ها سریع است. این کارایی به مقیاس‌پذیری سیستم‌های مبتنی بر آن کمک می‌کند.
  • غیرتعاملی بودن: فرایند تأیید تنها به یک پیام از طرف اثبات‌کننده نیاز دارد، که این امر آن را برای سیستم‌های غیرمتمرکز و ناهمزمان مناسب می‌سازد.
  • صحت محاسباتی: امنیت این الگوریتم بر پایه دشواری محاسباتی شکستن فرضیات رمزنگاری قوی بنا شده است.
  • نیاز به تنظیمات مورد اعتماد (در بسیاری از ساختارها): بسیاری از پیاده‌سازی‌های zk-SNARK به یک مرحله تنظیمات مورد اعتماد اولیه نیاز دارند که در آن کلیدهای اثبات و تأیید تولید می‌شوند. این مرحله باید به صورت امن انجام شود و پارامترهای مخفی باید از بین بروند تا از جعل اثبات جلوگیری شود.
  • اتکا به رمزنگاری منحنی بیضوی (در بسیاری از ساختارها): بسیاری از طرح‌های zk-SNARK بر اساس رمزنگاری منحنی بیضوی (ECC) ساخته شده‌اند که ممکن است در برابر حملات رایانه‌های کوانتومی آسیب‌پذیر باشند.

نحوه عملکرد الگوریتم zk-SNARK

عملکرد الگوریتم zk-SNARK شامل چند مرحله اصلی است:

  • تنظیمات مورد اعتماد (Trusted Setup)

 این مرحله اولیه اغلب شامل تولید کلیدهای رمزنگاری است که برای اثبات و تأیید استفاده می‌شوند. این کار معمولاً توسط یک طرف مورد اعتماد یا از طریق یک رویداد محاسبات چندجانبه امن (MPC) انجام می‌شود که در آن چندین شرکت‌کننده به تولید کلیدها کمک می‌کنند.

هدف این است که هیچ‌کس به پارامترهای مخفی که در تولید کلیدها استفاده شده، دسترسی نداشته باشد، زیرا این امر می‌تواند امکان جعل اثبات را فراهم کند.

نحوه عملکرد zk-snark

  • تولید گواه (Proof Generation)

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

برای انجام این کار، محاسبات یا ادعای مورد نظر برای اثبات اغلب ابتدا به یک مدار حسابی تبدیل می‌شود؛ سپس این محاسبات به مجموعه‌ای از معادلات چندجمله‌ای یا شکل دیگری از نمایش ریاضی تبدیل می‌شود که برای پروتکل zk-SNARK مناسب است.

  • تأیید گواه (Proof Verification)

 تاییدکننده (کسی که می‌خواهد از صحت ادعا مطمئن شود) می‌تواند از کلید تأیید همراه با ورودی عمومی و گواه تولید شده توسط اثبات‌کننده برای بررسی سریع صحت ادعا استفاده کند.

نکته کلیدی در اینجا این است که تاییدکننده نیازی به دانستن ورودی مخفی یا اجرای مجدد محاسبات ندارد. به‌طورکلی فرایند تأیید بسیار کارآمد است و به منابع محاسباتی بسیار کمی نیاز دارد.

اقتصاد رفتاری در کریپتو؛ وقتی احساسات هم در تصمیم‌های مالی نقش دارند!

دامیننس ۱۷ رو همین حالا بخون.

    کاربردهای الگوریتم zk-SNARK

    الگوریتم zk-SNARK کاربردهای گسترده‌ای در زمینه‌های مختلف، به‌ویژه در بلاک چین و سیستم‌های نیازمند حفظ حریم خصوصی دارد. در ادامه چند مورد از اصلی‌ترین کاربردهای این الگوریتم را با شما بررسی خواهیم کرد.

    استفاده در رمز ارزهایی مانند Zcash برای حفظ حریم خصوصی تراکنش‌ها

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

    به کمک این الگوریتم در شبکه زی‌کش، آدرس فرستنده، آدرس گیرنده و مقدار تراکنش رمزگذاری شده و از دید عموم پنهان می‌ماند، در حالی که اعتبار تراکنش همچنان توسط قوانین اجماع شبکه قابل تأیید است.

    زی کش
    خرید و فروش آسان زی کش در بیت‌پین
    • معامله بیش‌از ۳۰۰ کوین دیگر
    • دریافت وام و اعتبار معاملاتی
    • سرعت بالا در تکمیل سفارشات
    • بات‌های معامله‌گر متنوع
    • پشتیبانی ۲۴ ساعته
    خرید زی کش

    این امر به کاربران امکان می‌دهد تا با حفظ حریم خصوصی کامل در شبکه Zcash تراکنش انجام دهند. برای این کار، زی‌کش از آدرس‌های محافظت شده (z-addresses) در مقابل آدرس‌های شفاف (t-addresses) استفاده می‌کند.

    کاربرد در رأی‌گیری‌های آنلاین و سایر سیستم‌های نیازمند حفظ حریم خصوصی

    zk-SNARKها می‌توانند در سیستم‌های رأی‌گیری آنلاین امن مورد استفاده قرار گیرند تا اطمینان حاصل شود که رأی‌ها توسط افراد واجد شرایط داده شده و به‌درستی شمارش می‌شوند، درحالی‌که ناشناس بودن رأی‌دهندگان حفظ می‌شود.

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

    کاربرد در راهکارهای مقیاس‌پذیری (zk-Rollups)

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

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

    مزایا و معایب الگوریتم zk-SNARK

    الگوریتم zk-SNARK مانند هر فناوری دیگری، دارای مزایا و معایب خاص خود است. در جدول زیر این موارد را بررسی می‌کنیم:

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

    آینده الگوریتم zk-SNARK

    آینده الگوریتم zk-SNARK بسیار امیدوارکننده به نظر می‌رسد و تحقیقات و پیشرفت‌های مداوم در حال رفع محدودیت‌های فعلی آن است. یکی از تحولات قابل توجه، معرفی Halo 2 توسط Electric Coin Company (ECC) است که نیاز به تنظیمات مورد اعتماد را در Zcash و احتمالاً سایر بلاک چین‌ها از بین می‌برد.

    Halo 2 از ترکیب اثبات‌های بازگشتی و تکنیک‌های پیشرفته اثبات‌های رمزنگاری برای دستیابی به این مهم استفاده می‌کند. حذف نیاز به تنظیمات مورد اعتماد یک گام مهم در افزایش اعتماد و امنیت سیستم‌های مبتنی بر zk-SNARK است.

    علاوه بر این، پیشرفت‌های دیگری مانند PLONK نیز در حال توسعه هستند که تنظیمات مورد اعتماد جهانی را ارائه می‌دهند. انتظار می‌رود که zk-SNARKها در آینده در صنایع مختلف فراتر از بلاک چین، مانند راهکارهای امن برای تأیید هویت، یادگیری ماشین قابل تأیید و محاسبات محرمانه، کاربرد بیشتری پیدا کنند.

    کلام پایانی

    الگوریتم zk-SNARK یک فناوری قدرتمند در حوزه رمزنگاری است که امکان اثبات دانش یا صحت محاسبات را بدون افشای اطلاعات حساس فراهم می‌کند.

    با وجود برخی محدودیت‌ها مانند نیاز به تنظیمات مورد اعتماد در بسیاری از ساختارها و آسیب‌پذیری احتمالی در برابر رایانه‌های کوانتومی، پیشرفت‌های اخیر مانند Halo 2 و تحقیقات مداوم نشان می‌دهند که آینده این فناوری بسیار روشن است.

    به‌طورکلی zk-SNARKها نقش مهمی در افزایش حریم خصوصی و مقیاس‌پذیری در بلاک‌ چین و فراتر از آن ایفا می‌کنند و انتظار می‌رود که کاربردهای آن‌ها در سال‌های آینده به طور چشمگیری گسترش یابد.

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

    سوالات متداول

    • الگوریتم zk-SNARK چه کاربردی دارد؟

    الگوریتم zk-SNARK در زمینه‌های مختلفی کاربرد دارد، از جمله حفظ حریم خصوصی در ارزهای دیجیتال مانند ارز Zcash و… استفاده شود. علاوه بر این، الگوریتم zk-SNARK می‌تواند در بلاک چین‌های خصوصی نیز برای حفظ حریم خصوصی و محرمانه ماندن تراکنش‌ها و داده‌ها به کار رود.

    • تفاوت zk-SNARK و zk-STARK چیست؟

    تفاوت اصلی zk-SNARK و zk-STARK در نیاز به تنظیمات مورد اعتماد است؛ zk-SNARK معمولاً به آن نیاز دارد در حالی که zk-STARK ندارد. zk-SNARK اثبات‌های کوچکتر و تأیید سریع‌تری دارد، اما در برابر حملات کوانتومی آسیب‌پذیرتر است. zk-STARK در برابر حملات کوانتومی مقاوم‌تر است اما اثبات‌های بزرگتری تولید می‌کند.

    • آیا zk-SNARK امنیت را افزایش می‌دهد؟

    بله،zk-SNARK با امکان تأیید اطلاعات بدون افشای داده‌های حساس، امنیت را افزایش می‌دهد. بااین‌حال، درنظرگرفتن ملاحظات امنیتی مربوط به تنظیمات مورد اعتماد و آسیب‌پذیری احتمالی در برابر حملات کوانتومی در برخی از ساختارها نیز مهم است. پیشرفت‌هایی مانند Halo 2 در تلاش برای رفع این نگرانی‌ها هستند.