آیا این امکان وجود دارد که بدون افشای داده‌ خاصی، درست بودن چیزی را اثبات کرد؟ در‌واقع الگوریتم اثبات دانش صفر، بر این موضوع متمرکز است. در‌واقع با این الگوریتم، حریم خصوصی بیشتری به شبکه بلاک‌چین آورده شده و طرفین معامله بدون اشتراک‌گذاری اطلاعات سازنده، می‌توانند صحت اطلاعات را تایید کنند. در ادامه به ابعاد مختلف این الگوریتم نگاهی جزئی‌تر می‌اندازیم.

تعریف اثبات دانش صفر (ZKP) 

این مفهوم اولین بار در سال ۱۹۸۵ در مقاله‌ای تحت عنوان “پیچیدگی دانش سیستم های اثبات تعاملی” توسط Shafi Goldwasser و Silvio Micali گفته شد اما بعد‌ها این تعریف گسترش پیدا کرد و در حال حاضر به طور وسیع‌تری مورد استفاده قرار می‌گیرد. این الگوریتم در گذر زمان بهبود پیدا کرد و در حال حاضر در برنامه‌های کاربردی مختلفی استفاده می‌شود.

اثبات دانش صفر روشی برای احراز هویت است که در آن هیچ‌گونه رمز‌عبوری رد و بدل نمی‌شود و به همین خاطر نگرانی بابت به سرقت بردن آن‌ها وجود نخواهد داشت. این موضوع از جهات مختلفی بسیار مفید است؛ چرا‌که امنیت ارتباطات کاربران را تضمین کرده و هیچ‌کس نمی‌تواند از این ارتباطات و فایل‌های به اشتراک گذاشته شده مطلع شود.

ZKP این امکان را می‌دهد که به طرف دیگر معامله، بدون افشای اطلاعات خاصی، ثابت کنید که از موارد محرمانه‌ای اطلاع دارید. در‌واقع عبارت «صفر» در «اثبات دانش صفر» این معنی را می‌دهد که هیچ‌گونه اطلاعاتی فاش نمی‌شود؛ اما در این سیستم طرف دوم معامله باید متقاعد شود که طرف اول، از اطلاعات به خصوصی با‌خبر است. در‌واقع این الگوریتم راهی است که اثبات کننده می‌تواند صحت اطلاعاتی که در درست دارد را به تایید‌کننده اثبات کند. در اینجا اثبات کننده به شخصی گفته می‌شود که در تلاش برای اثبات ادعایی بوده و تائید کننده مسئول تایید آن ادعا است.

پیش از این نیز اشاره کردیم که از این الگوریتم در بخش‌های مختلفی استفاده می‌شود که یکی از آن‌ها، حوزه بلاک‌چین و ارزهای دیجیتال است. در ادامه با جزئیات بیشتری این کاربرد را بررسی می‌کنیم؛ اما به طور کلی ارزهای دیجیتال مبتنی بر حریم خصوصی مانند Zcash، با استفاده از این الگوریتم می‌توانند تراکنش‌های بلاک‌چین را با سطح بالا‌تری از امنیت در اختیار کاربران خود قرار دهند.

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

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

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

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

طرز کار zero knowledge proof 

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

  • کامل بودن: اگر ورودی معتبر باشد، این پروتکل بازخورد True را نشان می‌دهد. این موضوع نشان دهنده صداقت در عملکرد هر دو طرفین است و تایید کننده را متقاعد می‌کند.
  • صحت: اگر ورودی نامعتبر باشد، نمی‌توان پروتکل ZKP را فریب داد که بر‌عکس آن را نشان دهد؛ در همین راستا اثبات کننده به روش‌های دروغین، نمی‌تواند تایید کننده را فریب دهد که گزاره نامعتبره‌ای را معتبر جلوه‌ دهد.
  • دانش صفر: تایید کننده به جز درستی یا نا‌درستی عبارت، اطلاعات دیگری ندارد.

به طور کلی الگوریتم اثبات دانش صفر از سه عنصر اصلی زیر تشکیل شده است:

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

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

اثبات دانش صفر غیر تعاملی 

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

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

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

انواع اثبات دانش صفر 

ظهور اثبات دانش صفر غیر‌تعاملی، زمینه را برای توسعه سیستم‌های اثبات کننده امروزی‌، فراهم کردند. در ادامه به انواع روش‌های اثبات می‌پردازیم.

ZK-SNARKs

یکی از پروتکل‌های اثبات دانش صفر، ZK-SNARK نام دارد که از اثبات دانش صفر غیر‌تعاملی استفاده می کند؛ در ادامه به توضیح ویژگی‌های آن می‌پردازیم:

  • دانش صفر: پیش از این نیز به این ویژگی اثبات دانش صفر اشاره کردیم؛ تایید کننده بدون دانستن جزئیات، می‌تواند یکپارچگی عبارت را تایید کند. در‌واقع درست یا نا‌درست بودن اطلاعات، تنها داده‌ای است که تایید‌کننده در اختیار دارد.
  • غیر‌تعاملی: این نوع اثبات غیر‌تعاملی است؛ چرا‌که اثبات‌کننده و تایید‌کننده تنها یک مرتبه با‌هم تعامل دارند. برخلاف اثبات‌های تعاملی که نیاز به چندین دور ارتباط نیاز دارد.
  • استدلال: یکی از اصلی‌ترین شرایط این اثبات، صداقت است و با این اوصاف تقلب بسیار دور از ذهن به نظر می‌رسد.

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

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

ZK-STARKs

این پروتکل نیز مشابه ZK-SNARK است اما تفاوت‌هایی دارد که در ادامه به آن‌ها اشاره می‌کنیم:

  • مقیاس پذیری: ZK-STARK در ایجاد و تایید مدارک نسبت به ZK-SNARK سریع‌تر عمل می‌کند.
  • شفافیت: در ZK-STARK برخلاف اسنارک، برای ایجاد پارامتر‌های عمومی و استاندارد از Trusted Setup استفاده نمی‌کند و با‌وجود پارا‌متر‌های تصادفی، امنیت و شفافیت بالا‌تری ارائه می‌گردد.

یکی دیگر از تفاوت‌های این دو پروتکل این است که ZK-STARK نسبت به ZK-SNARK اثبات‌های بزرگتری تولید می‌کنند و در‌نتیجه از هزینه تولید بالا‌تری برخوردار هستند. با این حال در برخی موارد نیز ZK-STARK مقرون به صرفه‌تر از ZK-SNARK محسوب می‌شود. یکی دیگر از ویژگی‌های مثبت استارک‌ها، مقیاس‌پذیری است؛ به طوری‌که محاسبات برون زنجیره‌ای ایجاد می‌کنند و با این روش می‌توانند از حداکثر توان عملیاتی استفاده کنند.

یکی از سوال‌هایی که ممکن است در این زمینه رخ دهد، این است که کدام یک از این دو نوع پروتکل اثبات دانش صفر محبوبیت از محبوبیت بیشتری برخوردارند؟ در پاسخ به این سوال باید بگوییم که zk-SNARK‌ها در حال حاضر نسبت به ZK-STARK‌ها از محبوبیت بالا‌تری برخوردارند؛ ممکن است این امر به دلیل قدمت بیشتر و پیچیدگی کمتر آن‌ها باشد. به طوریکه بسیاری از افراد، اسنارک‌ها را آینده اثبات دانش صفر می‌دانند و استارک‌ها نیز در آینده می‌توانند به مقبولیت مورد قبولی برسند.

کاربرد های zero knowledge proof

پیش از این نیز ذکر کردیم که ورود الگوریتم اثبات دانش صفر به ارزهای دیجیتال، حریم خصوصی و مزایای بسیاری را برای آن رقم زده است. در ادامه بهتر است نگاهی به کاربردهای آن بیا‌ندازیم. پیش از آن بهتر است نگاهی به دو مورد از برنامه‌های بلاک‌چین که از این الگوریتم استفاده می‌کنند بیا‌ندازیم: ZkSync و StarkNet. این دو مورد به عنوان  ZK-rollup‌هایی شناخته می‌شوند که به مقیاس‌پذیری بیشتر شبکه اتریوم کمک می‌کنند. از‌جمله تفاوت‌های این دو، نوع پروتکلی است که استفاده می‌کنند؛ ZkSync از اثبات اسنارک و StarkNet از اثبات استارک استفاده می‌کنند.

پرداخت های ناشناس

معمولا پرداخت‌های انجام شده از طریق کارت‌های اعتباری از چند طرف، مانند ارائه دهنده پرداخت، بانک و… قابل مشاهده‌اند. درست است که شناسایی فعالیت‌های غیر‌قانونی مزایایی را به همراه دارد، اما حریم خصوصی کاربران عادی را تضعیف می‌کند.

از طرف دیگر یکی از اصلی‌ترین اهداف ارزهای دیجیتال، امکان انجام معاملات همتا‌به‌همتا و خصوصی است؛ اما با این حال عموم تراکنش‌های ارزهای دیجیتال به طور آشکار در بلاک‌چین‌های عمومی قابل مشاهده‌اند. با این حال برخی ارز‌‌های دیجیتال به نام «سکه‌های حریم خصوصی – Privacy Coins» به طور خاص برای تراکنش‌های کاملا نا‌شناس طراحی شده‌اند. این نوع شبکه‌های متمرکز بر حریم خصوصی، مانند ZCash و Monero، از اطلاعات مربوط به جزئیات تراکنش‌ها، آدرس‌ها فرستندگان و گیرندگان، نوع دارایی و… محافظت می‌کنند.

حال با استفاده از پروتکل ZKP این نوع شبکه‌های مبتنی بر حریم خصوصی، می‌توانند بدون نیاز به دسترسی به داده‌های تراکنش، آن‌ها را تایید کنند. همچنین از پروتکل‌های دانش صفر برای ناشناس ساختن تراکنش‌ در بلاک‌چین‌های عمومی استفاده می‌شود. به عنوان مثال Tornado Cash نوعی سرویس غیر‌متمرکز است که به کاربران امکان انجام تراکنش‌های خصوصی در اتریوم را می‌دهد؛ این سرویس از ZKP برای مخفی کردن جزئیات تراکنش‌ها و حفظ امنیت حریم خصوصی کاربران استفاده می‌کند.

حفاظت از اطلاعات 

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

احراز هویت

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

محاسبات قابل تایید

یکی دیگر از کاربردهای ZKP که به بهبود عملکرد شبکه بلاک‌چین کمک می‌کند، محاسبات قابل تایید است. این ویژگی امکان برون‌ سپاری محاسبات و در عین حال حفظ نتایج قابل تایید را می‌دهد. نهادی که وظیفه انجام محاسبات را به او واگذار کرده‌ایم، نتیجه و مدرکی که درست اجرا شدن برنامه را تایید کند را برای‌مان ارسال می‌کند. این موضوع به افزایش سرعت بلاک‌چین بدون کاهش امنیت، کمک می‌کند.

به طور کلی برای پیاده‌سازی راه‌حل‌های مقیاس پذیری بر زنجیره (On-Chain)، مانند شاردینگ، نیاز به اصلاح گسترده‌ای در لایه پایه بلاک‌چین وجود دارد. باید در نظر داشت که این رویکرد تا حدودی پیچیده بوده و اشتباهات در پیاده‌سازی، می‌تواند منجر به تضعیف مدل امنیتی شبکه شود.

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

معایب اثبات دانش صفر 

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

هزینه های سخت افزاری

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

هزینه های تایید اثبات

تایید اثبات نیاز به محاسبات پیچیده دارد و در‌نتیجه هزینه پیاده سازی اثبات دانش صفر در برنامه‌ها افزایش پیدا می‌کند. در‌‌واقع عمده هزینه ذکر شده عمدتا به اثبات محاسبات مرتبط است. ZK-rollups را می‌توانیم به عنوان مثال ذکر کنیم که برای تایید یک اثبات اسنارک در اتریوم، ۵۰۰،۰۰۰ گس می‌پردازد و این مقدار هزینه در استارک بیشتر است.

فرضیات اعتماد 

در ZK-SNARK پارامتر‌های عمومی یک‌بار تولید می‌شوند و برای کاربرانی که مایل به مشارکت در پروتکل دانش صفر هستند، در دسترس قرار دارند. همانطور که پیش از این نیز ذکر کردیم، پارامتر‌های عمومی از طریق گروهی از افراد قابل اعتماد و صادق ایجاد می‌شوند. اما در‌واقع کاربران راهی برای سنجش صداقت این افراد برای کاربران وجود ندارد و مجبورند حرف توسعه‌دهندگان را بر مبنای اعتماد بپذیرند.

تهدیدات کامپیوتر کوانتم

ZK-SNARK از منحنی رمزنگاری بیضوی (ECDSA) برای رمزگذاری استفاده می‌کند. این الگوریتم در حال حاضر امن است اما توسعه رایانه های کوانتومی در آینده ممکن است این امنیت را زیر سوال ببرند. از طرف دیگر ZK-STARK از هش‌های مقاوم برای رمزنگاری استفاده می‌کند و به همین‌خاطر در برابر تهدیدات کوانتوم در امان است؛ چرا‌که شکستن این هش‌ها بسیار سخت محسوب می‌شود.

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

اثبات دانش صفر توسط چه کسی ایجاد شد؟

الگوریتم اثبات دانش صفر توسط Goldasser، Micali و Rackoff در سال ۱۹۸۲ ایجاد شد و از آن زمان تا‌کنون در بسیاری از سیستم‌ها و برنامه‌ها مورد استفاده قرار گرفته است.

کدام ارز دیجیتال از ZKP استفاده می‌کند؟

در دنیای کریپتو، یکی از یکی از فعالان برجسته در زمینه ZKP، شرکت Electric Coin کوین بوده که پرایوسی کوین Zcash را ارائه داده است. علاوه بر آن، Bitcoin Private و اتریوم نمونه‌های دیگری هستند که می‌توان به آن‌ها اشاره کرد. فورکی از زی‌کش به نام Zclassic ایجاد شد و سپس نام آن به Bitcoin Private تغییر پیدا کرد. همچنین اتریوم با وارد شدن به  فاز متروپلیس، zk-SNARK را به بلاک‌چین خود اضافه کرد.