ایجاد جهانی مطمئن‌تر با منحنی Pedersen Commitment

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

0 75

در این دنیا ما می‌توانیم مسائل مربوط به خود را فقط برای کسانی که به ما اعتماد دارند آشکار کنیم. در این جهان، شرکت‌ها، دولت‌ها و دیگران باید برای دیدن اطلاعاتمان از ما اجازه بگیرند و فقط شرایط و ضوابط (T&C) یک طرفه را به ما تحمیل نمی‌کنند. بنابراین اگر سیستم‌های حسابرسی / رعایت قوانین داشته باشیم، می‌توانیم عوامل کور کننده‌ای ایجاد کنیم تا آن‌ها فقط بتوانند اطلاعات مورد نیاز را ببینند.

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

این تعهد، تعهد پدرسن (Pedersen Commitment) نامیده می‌شود، و جایی است که ما تعهدات خود را ایجاد می‌کنیم و سپس پیامی را مطابق با تعهد نشان می‌دهیم. در شکل اصلی آن، ما می‌توانیم تعهد پدرسن را در لگاریتم‌های گسسته [اینجا] اجرا کنیم. اما بلاکچین، IoT، Torو بسیاری از حوزه‌های کاربردی دیگر، از روش‌های منحنی بیضوی استفاده می‌کنند، بنابراین بیاید ببینیم آیا می‌توانیم با آن‌ها تعهدی ایجاد کنیم.

افزودن یک مقدار کور کننده

برای این کار می‌توانیم مقادیر موجود در یک تراکنش را با اضافه کردن یک مقدار کور کننده مخفی کنیم. فرض کنید که یک ارزش تراکنش برابر با V داشته باشیم، اکنون می‌توانیم این مقدار را به عنوان یک نقطه در منحنی بیضوی (H) تعریف کنیم:

v × H

اگر سه تراکنش (v1، v2و v3) داشته باشیم، می‌توانیم یک مجموع کلی ایجاد کنیم:

مجموع = v1 × H + v2 × H + v3 × H = (v1 + v2 + v3) × H

بنابراین می‌توانیم مجموع تراکنش‌ها را تعیین کنیم. اما در نهایت می‌توانیم مقادیر v1، v2و v3 را پیدا کنیم؛ زیرا آنها همیشه به صورت همان مقداری که در G ضرب شده‌اند ظاهر می‌شوند. اکنون می‌توانیم یک عامل کور کننده را با اضافه کردن نقطه دوم در یک منحنی بیضوی دیگر (H) و یک کلید خصوصی (r) اضافه کنیم. بنابراین (همانطور که توسط تعهد پدرسن تعریف شده) یک مقدار تراکنش برابر است با:

C = v×H+r×G

فرض کنید که شخصی به نام بابا دو مقدار ورودی (V1 و V2) و یک مقدار ورودی (V3) دارد و V3=V1+V2. می‌توانیم یک عامل کور کننده برای هر تراکنش بسازیم:

(C = (ri1×G+viH)+(riG+viH)=(roG+voH

بنابراین داریم:

ri1+ri2=ro3

در این مورد اگر بتوانیم این را اثبات کنیم، می‌توانیم این راهم اثبات کنیم که ورودی‌ها معادل خروجی‌ها هستند. یک اجرای ساده به شکل زیر است:

42840948626806857828893112378852997190784128370121817339191672098791182051629L)

Now let’s compare…
Success!

کد عبارت است از:

 

# Modular arithmetic ##########################################################

 

# Functions that work on curve points #########################################

 

# Keypair generation ################################################

 

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

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

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

متاسفانه، جهانی که ساخته‌ایم با GDPR سازگار نیست، و به CIO اجازه ندهید که چنین چیزی را به شما بگوید‌. باید این جهان را تغییر دهیم و این تغییرات را سریعا اعمال کنیم، در غیر این صورت، کل سیستم اینترنت سقوط خواهد کرد و بی اعتبارتر خواهد شد. ما باید مالکیت و موافقت داده‌ها را به دست کسانی که آن‌ها را ساخته‌اند برگردانیم… و این افراد شما هستید!

شاید از این مطالب هم خوشتان بیاید.