«این مقاله ترجمهای غیررسمی از محتوای منتشر شده در وبلاگ Altoros است. نسخه اصلی متعلق به نویسنده و وبلاگ Altoros میباشد.»

با استفاده از اثبات دانش صفر، یک تراکنش بلاکچین میتواند تایید شود در حالی که هویت کاربر ناشناس باقی میماند.
رمزنگاری یکی از مهمترین اجزای فناوری بلاکچین است که در چند سال گذشته به شدت گسترش یافته است. در اینجا، ما در مورد اثبات دانش صفر (ZKP) صحبت میکنیم - یک مکانیزم/پروتکل که ارتباط نزدیکی با رمزنگاری دارد. شما با مفاهیم کلی اثبات دانش صفر و اثبات دانش صفر غیرتعاملی آشنا خواهید شد، موارد استفاده از این پروتکل درون بلاکچین را مشاهده خواهید کرد، و یک نگاه عمیق به اثبات دانش صفر از دیدگاه رمزنگاری خواهید داشت.
اثبات دانش صفر چیست؟
اثبات دانش صفر یکی از مفاهیم بسیار پیچیده و جذاب در رمزنگاری کاربردی امروزی است. از استفاده احتمالی در خلع سلاح هستهای گرفته تا فراهم کردن تراکنشهای ناشناس و امن برای شبکههای عمومی بلاکچین، اثبات دانش صفر نمونهای برجسته از نوآوری در رمزنگاری است.
در رمزنگاری، اثبات دانش صفر یا پروتکل دانش صفر روشی است که طی آن یک طرف (اثباتکننده) میتواند به طرف دیگر (تاییدکننده) ثابت کند که آنها مقداری x را میدانند، بدون اینکه هیچ اطلاعاتی به جز اینکه آنها مقدار x را میدانند منتقل کنند. جوهره اثبات دانش صفر این است که اثبات اینکه کسی اطلاعات خاصی را میداند با فاش کردن آن ساده است. چالش این است که چنین دانشی را بدون فاش کردن خود اطلاعات یا هرگونه اطلاعات اضافی توجیه کنیم.
یک اثبات دانش صفر باید سه ویژگی زیر را داشته باشد:
• کامل بودن. اگر بیانیه حقیقت داشته باشد، تاییدکننده صادق - کسی که درست از پروتکل پیروی میکند - توسط اثباتکننده صادق از این واقعیت قانع خواهد شد.
• صداقت. اگر بیانیه نادرست باشد، هیچ اثباتکننده کلاهبرداری نمیتواند تاییدکننده صادق را متقاعد کند که حقیقت دارد، مگر با یک احتمال کوچک.
• دانش صفر. اگر بیانیه حقیقت داشته باشد، هیچ تاییدکنندهای چیزی یاد نمیگیرد، به جز این واقعیت که بیانیه درست است. به عبارت دیگر، فقط دانستن بیانیه (نه راز) برای تصور کردن سناریویی کافی است که نشان دهد اثباتکننده راز را میداند. این امر از طریق هر تاییدکنندهای که یک شبیهساز دارد، محقق میشود که میتواند یک گزارش را تولید کند که شبیه به تعامل بین اثباتکننده صادق و تاییدکننده باشد. شبیهساز باید بتواند گزارش را تولید کند، در حالی که فقط به بیانیهای که باید اثبات شود دسترسی دارد و نه به خود اثباتکننده.
کامل بودن و صداقت ویژگیهایی از سیستمهای اثبات تعاملی عمومیتر هستند. اضافه کردن دانش صفر است که فرایند تایید را به یک اثبات دانش صفر تبدیل میکند.
اثباتهای دانش صفر اثباتهایی در معنای ریاضی این واژه نیستند، زیرا احتمال کوچکی وجود دارد، خطای صداقت، که یک اثباتکننده کلاهبردار بتواند تاییدکننده را از یک بیانیه نادرست متقاعد کند. به عبارت دیگر، اثباتهای دانش صفر اثباتهای احتمالی هستند تا اثباتهای قطعی. با این حال، تکنیکهایی وجود دارد که خطای صداقت را به مقادیر ناچیزی کوچک کاهش دهد.
ساختار کلی یک ZKP
ساختار کلی یک اثبات دانش صفر شامل سه عمل متوالی بین شرکتکنندگان A و B است. این اعمال شاهد، چالش و پاسخ نامیده میشوند.
شاهد. این واقعیت که A راز را میداند، مجموعهای از سوالات را تعیین میکند که همیشه میتواند توسط A به درستی پاسخ داده شود. ابتدا، A به طور تصادفی هر سوالی را از مجموعه انتخاب میکند و یک اثبات محاسبه میکند. سپس، A اثبات را به B میفرستد.

چالش. پس از آن، B یک سوال از مجموعه انتخاب میکند و از A میخواهد به آن پاسخ دهد.

پاسخ. A پاسخ را محاسبه میکند و آن را به B بازمیگرداند.

پاسخ دریافت شده به B اجازه میدهد تا بررسی کند که A واقعاً راز را میداند.
این رویه را میتوان به اندازه دلخواه تکرار کرد، تا اینکه احتمال اینکه A حدس بزند به جای اینکه پاسخهای درست را بداند، به اندازه کافی پایین بیاید.
برای نشان دادن نحوه عملکرد ZKP در عمل، ویکیپدیا به داستان غار علی بابا اشاره میکند که اولین بار توسط ژان-ژاک کویسکاتر منتشر شد. در این مثال، پگی نقش اثباتکننده و ویکتور نقش تاییدکننده را دارد.
در این داستان، غار به شکل یک حلقه است. ورودی در سمت چپ قرار دارد و یک در جادویی سمت راست را مسدود میکند. پگی میخواهد به ویکتور ثابت کند که او کلمه رمز را برای باز کردن در جادویی میداند. با این حال، او نمیخواهد کلمه رمز را فاش کند.

برای اثبات اینکه پگی کلمه راز را میداند، مسیرهای چپ و راست از ورودی را به عنوان A و B علامتگذاری میکنند. ویکتور بیرون از غار منتظر میماند، در حالی که پگی وارد میشود. پگی بدون اینکه ویکتور ببیند، از مسیر A یا B میرود. سپس ویکتور وارد غار میشود و نام مسیری که میخواهد پگی از آن بازگردد - A یا B - را فریاد میزند. با توجه به اینکه پگی واقعاً کلمه راز را میداند، او به راحتی میتواند در جادویی را باز کند، اگر لازم باشد، و از مسیری که ویکتور انتخاب کرده است به ورودی بازگردد.

در صورتی که پگی کلمه راز را نداند، تنها زمانی میتواند از در به ورودی بازگردد که ویکتور مسیری را که او پس از ورود به غار انتخاب کرده است، صدا بزند. از آنجایی که مسیری که ویکتور انتخاب میکند تصادفی است، احتمال اینکه پگی کلمه راز را نداند 1/2 است. اگر فرایند را k بار تکرار کنید، احتمال به (1/2)^k میرسد. به این ترتیب، برای مثال کافی است فرایند را 20 بار تکرار کنید تا اثبات شود که پگی کلمه راز را میداند.

اگر ویکتور همه چیز را با دوربین ضبط کند، ویدیو نتیجه شاهدی برای هیچ طرف دیگری نخواهد بود، زیرا آنها میتوانند از پیش توافق کنند که پگی کجا برود. این بدان معناست که او میتواند بدون دانستن خود کلمه راز، راه درست بیرون رفتن را پیدا کند.
همانطور که میبینیم، مثال غار دارای ویژگیهای زیر است: کامل بودن، صداقت و دانش صفر.
توجه داشته باشید که تعامل بین کاربران برای یک ZKP لازم است. اگرچه تعداد تعاملات در پروتکلهای تکدورهای و ثابت کم است، اما هر دو کاربر باید به طور همزمان درگیر باشند.
اثبات دانش صفر غیرتعاملی
یک موقعیت را در نظر بگیرید که در آن کاربران P و V ریاضیدان هستند و آنها از پست عادی (پست حلزونی) برای ارتباط با یکدیگر استفاده میکنند. ریاضیدان P میخواهد به دور دنیا سفر کند و بدون فاش کردن ماهیت اثبات، قضایای جدیدی را به ریاضیدان V ثابت کند. در این سناریو، ما نیاز به ابداع یک پروتکل غیرتعاملی داریم، زیرا ریاضیدان P ممکن است آدرس ثابتی نداشته باشد و قبل از دریافت پاسخ بعدی جابجا شود.
بلوم، فلدمن و میکالی یک اثبات دانش صفر غیرتعاملی پیشنهاد کردند، جایی که کاربران P و V یک کلید راز مشترک دارند که برای اثبات اینکه P اطلاعات رازی را میداند بدون فاش کردن خود اطلاعات کافی است.
برخلاف یک اثبات دانش صفر معمولی، ساختار کلی یک اثبات دانش صفر غیرتعاملی فقط شامل یک عمل بین شرکتکنندگان P و V است و این عمل شاهد است.
P اطلاعات رازی را به عنوان یک آرگومان به یک تابع خاص - “ساخت یک اثبات” - میگذراند (تصویر زیر را ببینید). خروجی مقداری از “اثبات” است. پس از آن، P “اثبات” را به کاربر V میفرستد. سپس، V میتواند با استفاده از “اثبات” و یک تابع خاص دیگر - “بررسی یک اثبات” - بررسی کند که آیا P اطلاعات رازی را میداند یا خیر.

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

ناشناسی. گاهی اوقات، لازم است که مقداری ناشناسی در بلاکچین وجود داشته باشد. به عنوان مثال، انجام معاملات بدون فاش شدن هویت شما یا معاملاتی که مرتبط نیستند. همچنین باید امکانپذیر باشد که یک کاربر چندین معامله انجام دهد، در حالی که هویت را مخفی نگه دارد.
برای این منظورها، میتوانید از هایپرلجر فابریک استفاده کنید، شروع با نسخه 1.2، که از یک پروتکل رمزنگاری مبتنی بر ZKP خاص - میکسر هویت (Idemix) - پشتیبانی میکند.
یک ZKP یک روش رمزنگاری قدرتمند است و استفاده آن در بلاکچین در مواردی که فناوریهای بلاکچین موجود میتوانند یک ZKP را برای پاسخگویی به نیازهای خاص کسبوکار با تمرکز بر حفظ حریم خصوصی دادهها اقتباس کنند، امیدوارکننده به نظر میرسد. برای جزئیات بیشتر در مورد مفاهیم پشت اثبات دانش صفر و پیادهسازیهای آن، پست ما در مورد ZKP غیرتعاملی را بخوانید یا مقاله تحقیقات کامل را بررسی کنید.
«منبع: Altoros — “A Zero-Knowledge Proof: Improving Privacy on a Blockchain”»