اثبات‌های Zero Knowledge Proofs یعنی چی؟

Sدر هر تراکنش یک اثبات‌کننده (Prover) و یک راستی‌آزما (Verifier) وجود دارد
Sدر هر تراکنش یک اثبات‌کننده (Prover) و یک راستی‌آزما (Verifier) وجود دارد


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

از آن برای بهینه‌سازی خدماتی که به شما ارائه می‌کنند استفاده می‌کنند تا جلب رضایت بهتری از شما داشته باشند و راه دیگر هم فروش این داده‌ها به شرکت‌های دیگر است.

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

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

اثبات‌های Zero-knowledge

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

هر تراکنش یک (راستی‌آزما) و یک (اثبات‌کننده) دارد. در تراکنشی که از ZKPs یا همان اثبات‌های بدون افشای اطلاعات در آنها استفاده می‌شود، اثبات‌کننده تلاش می‌کند تا بدون اینکه چیز دیگری درباره آن چیز به راستی‌آزما بگوید، آن چیز را به او اثبات کند.

اثبات‌کننده با ارائه آخرین خروجی اثبات می‌کند که می‌تواند چیزی را بدون اینکه داده‌های ورودی یا فرایند پردازش آن را افشا کند، پردازش یا رایانش کند. یک فرایند واقعی اثبات بدون افشای اطلاعات (ZKPs) بایستی ۳ ملاک و معیار زیر را داشته باشد:

۱- کامل بودن: بایستی راستی‌آزما را متقاعد کند که اثبات‌کننده چیزی را که می‌گوید می‌داند، واقعا می‌داند.

۲- بی نقص بودن: اگر اطلاعات غلط باشد نمی‌تواند راستی‌آزما را متقاعد کند که اطلاعات اثبات‌کننده درست هستند.

۳- بدون افشای اطلاعات بودن: نباید هیچ چیز دیگری را به راستی‌آزما افشا کند.


مثال: ?Where’s Waldo (والدو کجاست؟)

در کتاب کودک «?Where’s Waldo» از خواننده کتاب خواسته می‌شود که والدو را در تصویری که در آن خیل عظیمی از افراد مشغول به کارهای مختلفی هستند پیدا کند ( که عینک زده است، بلوز قرمز و سفید رنگ به تن دارد و شلوار آبی جین به پا کرده و کلاه منگوله دار به سرش است)


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

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

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

اینم Waldo!
اینم Waldo!


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


اثبات‌های بدون افشای اطلاعات تعاملی و اثبات‌های بدون افشای اطلاعات غیر‌تعاملی

دو نوع اثبات بدون افشای اطلاعات (ZKP) داریم: تعاملی و غیرتعاملی.

اثبات بدون افشای اطلاعات تعاملی:

مثال Where’s Waldo که در بالا گفته شد یک اثبات بدون افشای اطلاعات از نوع تعاملی بود چرا که من بعنوان اثبات‌کننده یک سری کارهایی انجام دادم تا شما (یعنی راستی آزما) را درباره حقیقتی متقاعد کنم. مشکلی که اثبات‌های تعاملی دارند این است که قابلیت تعمیم دادن محدودی دارند یعنی برای اینکه توانایی‌ام در پیدا‌کردن والدو را برای کس دیگری اثبات کنم و یا این توانایی‌ام را برای چندین دفعه به راستی‌آزما اثبات کنم مجبورم دوباره همه این کارها را تکرار کنم.

اثبات‌های بدون افشای اطلاعات غیر تعاملی:

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

اثبات‌های ZK-SNARKS

سرواژه‌ای از عبارت کامل Zero-Knowledge Succinct Non-interactive ARguments of Knowledge است. اثبات‌های ZK-SNARKS نوعی از اثبات‌های بدون افشای اطلاعات غیرتعاملی هستند. این اثبات‌ها از این جهت Zero-Knowledge یا بدون افشای اطلاعات هستند که هیچ اطلاعاتی را به راستی‌آزما افشا نمی‌کنند، از این نظر Succinct یا مختصر و موجز هستند که این اثبات‌ها به سرعت قابل راستی‌آزمایی هستند. از این جهت غیرتعاملی هستند که به تعامل مکرر بین اثبات‌کننده و راستی‌آزما نیازی نیست و از این جهت ARguments of Knowledge برهان و استدلال اطلاعاتی هستند که اثبات بی نقص و درستی ارائه می‌دهند.

موارد استفاده از اثبات‌های بدون افشای اطلاعات (ZKPs)

می توان از ZKPها به منظور حفظ حریم خصوصی داده‌ها در حوزه‌هایی همچون سلامت، ارتباطات، امور مالی و فناوری‌های شهروندی استفاده نمود.

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

تا کنون برجسته ترین مورد استفاده از ZKPها در رمزارز Z-Cash بوده است که امکان انجام تراکنش‌های محرمانه را فراهم می‌آورد.

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

جمع‌بندی

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


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

صفحه توییتر:

http://twitter.com/BitcoinBreads

کانال تلگرام:

https://t.me/BitcoinBreads