توضیحنامهی ۰۲
اثبات دانشصفر چیست؟
نسخهی روزمره
یک اثبات دانشصفر (ZK proof) راهی است برای متقاعد کردن کسی به اینکه یک گزاره درست است، بیآنکه دلیلش را فاش کنید.
چند قیاس از دنیای واقعی:
- بازرسی متصدی بار. ثابت میکنید بالای ۱۸ سال هستید، بیآنکه نام، نشانی یا تاریخ تولدتان را نشان دهید. حتی تاریخی را که این را ثابت میکند نشان نمیدهید — فقط این واقعیت که یک تاریخ معتبر وجود دارد و شما آن را میدانید.
- پاکت دربسته. یک پاکت دربسته به نگهبان میدهید. یک ماشین بیطرف کنار در، پاکت را میخواند، اگر کارت معتبر ۱۸+ داشت چراغ سبز میشود، و سپس پاکت را خرد میکند. نگهبان فقط چراغ سبز را میبیند.
- دفترچهی قفلشده. به یک دوست ثابت میکنید صفحهی ۴۷ دفترچهتان شامل کلمهی «تهران» است، بیآنکه اجازه دهید هیچ صفحهی دیگری — یا حتی صفحهی ۴۷ — را بخواند.
یک اثبات ZK نسخهی رمزنگارانهی آن پاکت است: یک قطعهی کوچک ریاضی، معمولن چند صد بایت، که یک راستیآزما میتواند در میلیثانیه آن را بررسی کند و تنها صحت ادعا را آشکار میکند، نه چیزی بیشتر.
جمهور از اثباتهای ZK برای چه بهره میبرد
ما از اثباتهای ZK بهره میبریم تا یک کاربر بتواند سه ادعا را همزمان، روی زنجیره، بدون افشای هویت اثبات کند:
- «من یک گذرنامه یا کارت ملی ایرانی اصیل در اختیار دارم.» در برابر امضای رمزنگاریشدهی سند و درخت گواهینامههای رسمی ICAO اثبات میشود.
- «من قبلن برای این رویداد ثبتنام نکردهام یا رای ندادهام.» از راه یک مقدار یکتای جبری به نام nullifier اثبات میشود — که از سند و رویداد مشتق میشود، اما به هویت قابل اتصال نیست.
- «سند من منقضی نشده و معیارهای سن / تابعیت را برآورده میکنم.» در برابر فیلدهای تاریخ تولد و انقضا درون سند اثبات میشود، بدون افشای مقادیر واقعی.
رکورد روی زنجیره فقط این است: یک شهروند معتبر ایرانی، واجد شرایط این رای، روی پیشنهاد ۴۲ «بله» داده است. نه هیچ چیز بیشتر.
سه ویژگیای که هر اثبات ZK باید داشته باشد
وقتی رمزنگاران دربارهی اثباتهای ZK حرف میزنند، همیشه منظورشان یک سیستم با سه ویژگی است. آنچه مهم است معنای کاربری هر کدام است:
| ویژگی | به زبان ساده | چرا برای جمهور مهم است |
|---|---|---|
| کاملبودن | اگر گزاره درست است، یک کاربر صادق همیشه میتواند یک اثبات معتبر تولید کند. | یک دارندهی واقعی گذرنامهی ایرانی هرگز بهاشتباه از سوی قرارداد هوشمند رد نمیشود. |
| درستی | اگر گزاره نادرست است، یک متقلب نمیتواند اثبات معتبر تولید کند — مگر با احتمالی بهقدری ناچیز که (معمولن ۱ به ۲۱۲۸). | یک مهاجم نمیتواند با حدسزدن یا با محاسبهی یک اثبات «خوششانس»، هویت جعلی ثبت کند. |
| دانشصفر | اثبات هیچ چیزی فراتر از صحت گزاره را آشکار نمیکند — نه ورودیها، نه مقادیر میانی، نه هیچ اطلاعات جانبی. | زنجیره هرگز شمارهی گذرنامه، نام، تاریخ تولد، یا اینکه هر رای متعلق به چه کسی است را یاد نمیگیرد. |
این سه با هم همان چیزی هستند که اثباتهای ZK را از یک امضا، یک هش یا یک گواهی متمایز میکنند. امضا ثابت میکند «من کلید را دارم»؛ یک اثبات ZK ثابت میکند «من ورودیهایی میدانم که یک محاسبهی مشخص را برآورده میکنند» — و تنها همین.
«درستی» در کار چگونه کار میکند
عدد ۱ به ۲۱۲۸ یک حدس نیست. از روش ساخت اثبات میآید:
- محاسبهای که میخواهیم راستیآزمایی کنیم (مثلن «امضای گذرنامه معتبر است و nullifier درست مشتق شده و سند منقضی نشده») به یک مدار حسابی غولپیکر کامپایل میشود — میلیونها جمع و ضرب روی یک میدان اول.
- اثباتکننده به هر مقدار میانی آن محاسبه با استفاده از نقاط منحنی بیضوی تعهد میسپارد.
- راستیآزما یک چالش تصادفی صادر میکند که قطعی از روی آن تعهدات مشتق میشود.
- اثباتکننده باید با مقادیری پاسخ دهد که یک هویت جبری منفرد را برآورده کنند — هویتی که تعهدات و چالش را به هم گره میزند.
یک متقلب باید مقادیری را بهشانس جعل کند که آن هویت را برآورده کنند. آن هویت در میدانی با حدود ۲۲۵۴ عضو زندگی میکند، بنابراین احتمال تقلب حتی برای قویترین حملات شناختهشده به حدود ۱ به ۲۱۲۸ فرو میرود. برای مقیاس: ۲۱۲۸ از تعداد اتمهای یک میلیارد بدن انسان بیشتر است. هر استاندارد رمزنگاری بانکی و دولتی این را «ناممکن» تلقی میکند.
«دانشصفر» در کار چه معنایی دارد
دانشصفر به این معنا نیست که «داده در جایی روی زنجیره رمزگذاری شده است». به این معناست که داده از همان ابتدا وارد اثبات نشده است.
مقایسه کنید:
- رمزگذاری. «پیام وجود دارد اما قفل است. کسی که کلید دارد، میتواند بعدن آن را بخواند.»
- دانشصفر. «پیام برای محاسبهی یک اثبات استفاده شد و سپس حذف شد. اثبات از نظر ریاضی قادر به افشای پیام نیست — کلیدی وجود ندارد، چون چیزی برای باز کردن وجود ندارد.»
برای جمهور، این به این معناست:
- شمارهی گذرنامهی شما فقط روی تلفن شما است. وارد تولیدکنندهی اثبات میشود، از سوی آن مصرف میشود، و سپس دور انداخته میشود.
- اثبات ۲۵۶ بایتیای که تلفن شما آپلود میکند، هیچ ردپای قابل بازیابی از آن ندارد.
- حتی اگر تمام قراردادهای هوشمند، تمام لاگهای رله، و کل تاریخ Rarimo L2 برای همیشه استخراج شوند، هیچکس نمیتواند شمارهی گذرنامهی شما را از آنها بازیابی کند.
تنها راهی که یک مهاجم شمارهی گذرنامهی شما را به دست میآورد، گرفتن آن از دستگاه فیزیکی شما است — همان سطح تهدید عکسها یا پیامهای واتساپ شما، و بیارتباط با هر چیزی که ما روی زنجیره منتشر میکنیم.
«شکل مدار» — معنای این عبارت
در سراسر این توضیحنامهها چیزهایی مثل «شکل مدار تعیین میکند چه چیزی قابل اثبات هست و چه چیزی نیست» میگوییم. بهطور مشخص، مدار یک برنامهی ثابت است که میگوید:
با ورودیهای خصوصی مثل بایتهای گذرنامه، امضا و اسرار، و ورودیهای عمومی مثل شناسهی رویداد، تاریخ کنونی و ریشهی ICAO:
- گروههای داده مثل DG1 و DG2 را هش کن و امضای SOD راستیآزمایی کن.
- گواهی Document Signer را در برابر ریشهی Merkle ICAO راستیآزمایی کن.
- مقدار nullifier را از poseidon(secret, event_id) مشتق کن.
- بررسی کن که current_date دستکم ۱۸ سال بعد از birth_date باشد.
- خروجیها: nullifier، تابعیت، تاریخ کنونی و ریشهی ICAO.
تلفن هر کاربر جمهور همان مدار را برای یک کلاس سند معین اجرا میکند. فقط ورودیها فرق دارند. این همان چیزی است که به یک قرارداد هوشمند اجازه میدهد اثباتهای میلیونها کاربر را با یک کلید راستیآزمایی واحد بررسی کند.
کلاسهای مختلف سند (گذرنامهی ایرانی RSA-2048-SHA256، گذرنامهی ایرانی RSA-3072-SHA1، کارت هوشمند ملی RSA-2048، گذرنامههای ECDSA آینده) از مدارهای متفاوت بهره میبرند، چون ریاضی امضا فرق دارد. به همین دلیل سرویس SSO ما یک رجیستری مدار نگه میدارد، نه یک راستیآزمای ثابت در کد.
اثباتهای ZK چه کار نمیکنند
به همان اندازه مهم است که صادق باشیم دربارهی اینکه این فناوری چه چیزی را نمیتواند حل کند.
| ZK ثابت میکند | ZK ثابت نمیکند |
|---|---|
| «من سندی در اختیار دارم که سازمان ثبت احوال ایران آن را امضا کرده.» | «سازمان ثبت احوال ایران فقط برای آدمهای واقعی امضا میکند.» |
| «یک ورودی معتبر این مدار را برآورده میکند.» | «ورودی از یک انسان زنده و راضی آمده است.» |
| «من قبلن روی رویداد X رای ندادهام.» | «من در دو رویداد همان انسان هستم.» (nullifier متفاوت در هر رویداد، عمدی است.) |
| «تاریخ تولد من پیش از ۲۰۰۸ است.» | «من دربارهی نظراتم دروغ نمیگویم.» |
بزرگترین محدودیت صادقانه: یک اثبات ZK اعتماد هر کسی را که سند را امضا کرده، به ارث میبرد. اگر کلید امضای صادرکننده بهخطر بیفتد — از سوی یک بازیگر دولتی یا غیر آن — اسناد جعلیامامعتبر میتوانند ضرب شوند و از سیستم اثبات کاملن عبور خواهند کرد. این دربارهی هر سیستم passport-ZK در جهان، از جمله ما، صادق است. زنجیرهی اعتماد گذرنامه برای سطح حملهی کامل و راهکارهای کاهش ما را ببینید.
چرا این هنوز ارزش انجام دارد
حتی با آن محدودیت صادقانه، هویت ZK در طیف قابلاستقرار از هر گزینهی دیگری بهتر است:
| رویکرد | هویت را افشا میکند؟ | در برابر سیبیل مقاوم است؟ | مقاوم در برابر سانسور؟ | هزینهی هر بررسی |
|---|---|---|---|---|
| ورود دولتی (مثل ثنا / شاهکار) | بله — همهچیز | بله | نه — سرور میتواند هر کاربر را مسدود کند | هزینهی سرور |
| نام کاربری + رمز عبور | نه، اما تضمین هویتی هم نیست | نه | به میزبان بستگی دارد | هزینهی سرور |
| امضای دیجیتال ساده با گذرنامه | بله — کل سند | بله | به میزبان بستگی دارد | هزینهی سرور |
| اثبات ZK از گذرنامه / INID | نه | بله (از راه nullifier) | بله (روی زنجیره) | ~۰٫۰۰۱ دلار |
ترکیب عدم افشای هویت، اجرای یک نفر-یک رای، و نبود سرور مرکزی توانا به حذف کاربران همان چیزی است که اثباتهای ZK را بهمثابهی عنصر اولیهی درست برای زیرساخت دموکراتیک در مقیاس مدنی، تحت شرایط خصمانه میسازد.
واژهنامه
| اصطلاح | معنا |
|---|---|
| مدار (Circuit) | برنامهی حسابی ثابت که تعیین میکند چه چیزی اثبات میشود. |
| Witness | کل مجموعهی مقادیر میانی که اثباتکننده هنگام اجرای مدار روی ورودیهایش محاسبه میکند. روی دستگاه میماند. |
| Proof | شیء رمزنگاری ۲۵۶ بایتی (Groth16) که آپلود میشود. |
| Public signals | مجموعهی کوچک خروجیهای مدار (nullifier، ریشه، تاریخ و غیره) که راستیآزما میبیند. هرگز دادهی خام سند را شامل نمیشود. |
| Nullifier | یک مقدار قطعی و مبهمکنندهی هویت برای جلوگیری از رای مضاعف. همان شخص + همان رویداد = همان nullifier؛ همان شخص + رویداد متفاوت = nullifier متفاوت. |
| Verification key | یک فایل کوچک که قرارداد هوشمند نگه میدارد و برای بررسی اثباتهای یک مدار خاص بهکاربرده میشود. یکی به ازای هر مدار. |
| خطای درستی | احتمال ریاضی موفقیت یک متقلب (~ ۲−۱۲۸ در تنظیمات ما — در کار صفر تلقی میشود). |
بعدی
در ادامه: زنجیرهی اعتماد گذرنامه — اینکه چگونه به این فرض میرسیم که «سندی که کاربر اسکن میکند واقعی است»، و دقیقن کجا این فرض دیگر صادق نیست.