اثبات دانش صفر یا پروتکل دانش صفر روشی است که در آن یک طرف می تواند بدون افشای اطلاعات راز به طرف دیگر (تأیید کننده) اثبات کند.
یکی از مهمترین و در عین حال غیرمعمول ترین، پروتکلهای رمزنگاری، اثبات دانش صفر یا پروتکلهای (دانش) است.
اثبات دانش صفر یا پروتکل دانش صفر روشی است که در آن یک طرف می تواند بدون افشای اطلاعات راز به طرف دیگر (تأیید کننده) اثبات کند. به عبارت دیگر، میتوان گفت که یک پروتکل اثبات دانش صفر به یک طرف، که معمولاً PROVER نامیده میشود، اجازه میدهد تا طرف دیگر به نام VERIFIER را متقاعد کند که PROVER برخی از حقایق را میداند (یک راز، یک اثبات یک قضیه، …) بدون اینکه هر گونه اطلاعات در مورد دانش او (راز، اثبات، …). برای تأیید کننده فاش کند.
اثبات هویت: – می توان از مدارک دانش صفر برای شناسایی استفاده کرد. طرحهای شناسایی بهطور کلی، سپس طرحهای کلید سری و کلید عمومی «سنتی» و در نهایت طرحهای دانش صفر. طرحهای شناسایی روشهایی هستند که توسط آن کاربر میتواند هویت خود را بدون افشای دانشی که ممکن است توسط استراق سمع برای جعل هویت کاربر مورد استفاده قرار گیرد، اثبات کند.
شکل سنتی شناسایی با استفاده از کلید مخفی، رمز عبور یا پین است، اما این طرح بسیار ناامن است، زیرا حدس زدن آنها، به عنوان مثال، از طریق جستجوی جامع آسان است. اخیراً از پارامترهای بیومتریک مانند اثر انگشت، اسکن شبکیه یا تشخیص چهره استفاده می شود، اما راحت نیستند و به اعضای بدن ارزش می دهند که می تواند معایب زیادی داشته باشد. یکی دیگر از روش های رایج استفاده از امضای دیجیتال و رمزنگاری کلید عمومی است.
برای آشنایی با آموزش برنامه نویسی بلاک چین پکیج آموزش برنامه نویسی بلاکچین را ملاحظه نمایید.
یک طرح شناسایی اساساً از دو مرحله مجزا تشکیل شده است:
در طرح های شناسایی کلید عمومی، در مرحله اول هر کاربر یک کلید خصوصی و یک کلید عمومی تولید می کند. یک مرجع قابل اعتماد برای اطمینان از ارتباط بین هر کاربر و کلید عمومی او لازم است. در پایان مرحله عملیات، تأیید کننده می تواند شناسایی را بپذیرد یا رد کند.
یک پروتکل Zero Knowledge باید سه شرط را برآورده کند:
کامل بودن: اگر یک عبارت درست باشد و هر دو طرف از پروتکل یکسانی به درستی پیروی کنند، به طور طبیعی تأیید کننده متقاعد می شود.
درستی: اگر عبارت نادرست باشد، تأیید کننده تقریباً مطمئناً متقاعد نخواهد شد (ساختارهای اثبات احتمالی قابل بررسی بر تکرار تکیه می کنند تا زمانی که احتمال نادرستی یا شانس برگشت سکه ساده به صفر برسد).
دانش صفر: اگر گزاره درست باشد، هیچ تایید کننده ای چیزی جز این حقیقت که عبارت درست است، نمی آموزد.
غیر از این که گفته درست است.
مثال:
بیایید یک مثال ساده برای ساده کردن اثبات دانش صفر و نحوه کار آن در نظر بگیریم، تعویض دو لیوان نوشابه است، یک لیوان با نوعی از نوشابه و دیگری با نوعی دیگر پر شده است. هر دوی این لیوانها از همه نظر یکسان هستند، هیچ راهی برای تشخیص نوشابه ها وجود ندارد.
با این حال یکی از طرفین (پروور) ادعا می کند که آنها می توانند تشخیص دهند که کدام لیوان دارای نوعی از نوشابه و کدام لیوان دارای نوع دیگر است، اما بدون اینکه نتیجه خود را فاش کند. بنابراین آنها باید به طرف مقابل (تأیید کننده) ثابت کنند که می دانند کدام لیوان حاوی نوع مورد نظر است بدون اینکه واقعاً به شما بگوید که کدام لیوان است.
یکی از راههای انجام این کار، بستن چشمهای تأییدکننده است و سپس میتوانید تصمیم بگیرید که عینک را عوض کنید یا آنها را همانطور که هستند بگذارید. پس از خاموش شدن چشم بند، بپرسید که آیا عینک روشن بوده است یا خیر. اگر آنها بتوانند تشخیص دهند که شما عینک را عوض کرده اید یا نه، به این معنی است که آنها می دانند چگونه بین این دو تمایز قائل شوند. با این حال، ممکن است یک حدس خوش شانسی باشد.
چندین بار این کار را انجام دهید و احتمال “حدس زدن” موقعیت صحیح نوشابه به 0.5 کاهش می یابد. اگر آنها همچنان آن را با موفقیت به درستی دریافت کنند، نشان میدهد که تأییدکننده در واقع میداند چگونه این دو را تشخیص دهد بدون اینکه نشان دهد چگونه این کار را انجام دادهاند.
تبادل داده: این شواهد فقط دادههایی را نشان میدهند که آلیس میخواهد فاش شود: در این مورد، حداقل موجودی به جای موجودی واقعی. در واقع چیزی که آلیس ثابت میکند این است که «من، آلیس، از صورتحساب موجودی خود (در تاریخ و زمان معین) با امضای بانکی که شما، خانه حراج، به آن اعتماد دارید، اطلاع دارم. با استفاده از این دانش، به شما ثابت میکنم که حداقل مقداری را که شما به دنبالش هستید، دارم.»
بنابراین، ZKPها به آلیس اجازه میدهند تا خواستههای یک تأییدکننده (خانه حراج) را بدون افشای اطلاعات جزئیات زندگی خصوصی خود نه در اختیار تأییدکننده یا منبع اطلاعاتی مورد اعتماد متقابل (بانک) برآورده کند.
ZK-SNARK: در حال حاضر حریم خصوصی داده ها مهمترین چیز است. بیایید در مورد ZK-SNARK صحبت کنیم. همانطور که از نام آن پیداست ZK مخفف Zero-Knowledge و SNARK مخفف “Succinct Non-Interactive Argument of Knowledge” است.
Zk-SNARK مخفف «برهان مختصر و غیر تعاملی دانش صفر دانش» است.
ZERO-KNOWLEDGE: اگر گزاره درست باشد، یک تأیید کننده چیزی فراتر از این واقعیت که عبارت درست است، نمی آموزد.
خلاصه: این نشان می دهد که اثبات دانش صفر را می توان به سرعت تأیید کرد. این شامل شواهدی با عبارات بزرگ است. با پروتکلهای دانش صفر قبلی، اثباتکننده و تأییدکننده مجبور بودند برای تأیید یک اثبات، در چندین دور ارتباط شرکت کنند.
NON-INTERACTIVE: به این معنی است که تأیید کننده برای تأیید یک اثبات دانش صفر نیازی به تعامل با Prover ندارد. در عوض، Prover میتواند از قبل مدرک خود را منتشر کند و یک تأییدکننده میتواند از صحت آن اطمینان حاصل کند.
برهان دانش: یک اثبات محاسباتی صحیح: درستی در برابر اثبات کننده ای است که از زمان چند جمله ای اهرمی می کند، یعنی. محاسبات محدود مدرک بدون دسترسی به شاهد (ورودی خصوصی مورد نیاز برای اثبات اظهارات) قابل ساخت نیست.
در ادغام zk-SNARKS در بلاک چین Zcash، تابعی که صحت یک تراکنش را مطابق با قوانین اجماع تعیین میکند، باید پاسخ معتبر بودن یا نبودن آن تراکنش را بدون افشای هیچ یک از اطلاعاتی که با آن محاسبات انجام داده است، بازگرداند. . این با کدگذاری برخی از قوانین اجماع Zcash در خود zk-SNARK انجام می شود.
Zcash از zk-SNARK استفاده می کند تا ثابت کند که شرایط یک تراکنش معتبر بدون افشای هیچ گونه اطلاعات مهمی در مورد آدرس ها یا مقادیر مربوطه برآورده شده است. فرستنده یک تراکنش محافظت شده برای نشان دادن اینکه، با احتمال زیاد، اثباتی می سازد:
مجموع مقادیر ورودی با مقادیر خروجی برای هر تراکنش است.
فرستنده ثابت می کند که کلیدهای خصوصی ورودی را در اختیار دارد، که به کاربر این اختیار را می دهد که خرج کند.
کلیدهای مخارج خصوصی ورودی به صورت رمزنگاری به امضایی مرتبط هستند که به کل تراکنش مربوط می شود، به نحوی که یک تراکنش نمی تواند توسط طرفی که این کلیدهای خصوصی را نمی دانسته تغییر دهد.
این کلیدهای خصوصی
پیشنهاد مطالعه: پروژه بلاکچین
ایجاد تراکنش های محافظت شده در Zcash تنها یک نمونه از بسیاری از کاربردهای احتمالی zk-SNARK است. از نظر تئوری، میتوانید از zk-SNARK برای تأیید هر رابطهای بدون افشای ورودیها یا افشای اطلاعات استفاده کنید.
پیادهسازی zk-SNARKهای Zcash را میتوان به هر راهحل دفتر کل توزیعشده موجود بهعنوان لایه امنیتی صفر دانش برای موارد استفاده سازمانی اضافه کرد.