provably faircertified RNGfairness
مولد تصادفی گواهیشده یعنی یک آزمایشگاه مستقل در مقطعی مشخص یک مولد اعداد تصادفی را بررسی کرده و خروجیاش را از نظر آماری سالم دانسته است. عدالت اثباتپذیر یعنی بازی به هر بازیکن برای مسابقه خودش رسیدی رمزنگاریشده میدهد، طوری که هر پرتاب بدون اعتماد به هیچکس دوباره بررسی شود. یکی از این دو مدل ماشین را ممیزی میکند. دیگری بازی تو را اثبات میکند.
هر دو عبارت در صفحههای اعتماد بازیهای آنلاینی دیده میشود که بهجای تو تاس میریزند، و بهنظر قابل جایگزینی میآیند. نیستند. به پرسشهای متفاوتی پاسخ میدهند، به شکلهای متفاوتی شکست میخورند، و همین تفاوت تعیین میکند وقتی برای بازی مینشینی از تو خواسته میشود به چه چیزی باور کنی.
مولد گواهیشده واقعا چه چیزی را گواهی میکند؟
آزمایشگاه گواهی یک مولد را میگیرد، خروجیاش را از مجموعه آزمونهای آماری میگذراند و دنبال سوگیری میگردد: عددهایی که زیادی میآیند، الگوهایی که تکرار میشوند، دنبالههایی که منحرف میشوند. اگر میلیونها نمونه از تصادف قابل تشخیص نباشند، آزمایشگاه گواهی را امضا میکند. این کار واقعی است و مهارت میخواهد. ثابت میکند که آن مولد، به همان شکلی که آزموده شد، در همان روز، تصادفی سالم تولید میکرده است.
به آنچه گواهی نمیتواند ببیند دقت کن. گواهی در آزمایشگاه صادر شده و تاسهای تو روی یک سرور ریخته میشوند.
- اینکه آیا کد آزمودهشده همان کد مستقرشده است، ماهها و بهروزرسانیهای فراوان بعد.
- سیمکشی میان مولد و بازی تو: کدی که یک عدد تصادفی خام را به ۶ و ۴ تو تبدیل میکند.
- هیچ پرتاب مشخصی در هیچ مسابقه مشخصی. گواهی درباره مولد بهطور کلی حرف میزند، هرگز درباره بازی سهشنبهشب تو.
پس گواهی یک بند دوم خاموش هم دارد: اعتماد کن که از زمان آزمون چیزی عوض نشده، و اعتماد کن که مسیر گواهیشده همان مسیری است که بازی تو واقعا پیموده. بیشتر استودیوها به آن پایبندند. نکته این است که تو نمیتوانی بررسی کنی. این مدل یعنی بازرسی ماشین در یک لحظه، و بعد ایمان به استقرار در تمام لحظههای پس از آن.
عدالت اثباتپذیر یعنی چه؟
عدالت اثباتپذیر معامله دیگری است. بهجای اشاره به ممیزیای که هرگز ندیدهای، بازی پیش از آغاز به تصادفیبودنش متعهد میشود و پس از آن آنقدر فاش میکند که خودت هر پرتاب را دوباره حساب کنی. برهان همراه مسابقه سفر میکند. در عمل مثل یک پاکت مهر و مومشده کار میکند.
تعهد. پیش از اولین حرکت، سرور بذری محرمانه میسازد و اثر انگشت SHA-256 آن را منتشر میکند. اثر انگشت چیزی از پرتابهای آینده لو نمیدهد، اما بذر را سر جایش میخکوب میکند. بعدا حتی یک بیت از بذر را عوض کن، اثر انگشت دیگر نمیخواند.
پرتاب. در حین بازی، هر پرتاب با HMAC-SHA256 از بذر مشتق میشود، برای هر پرتاب یک محاسبه. تاسها همان لحظهای که پاکت مهر شد تعیین شده بودند. نمیشود وسط بازی عددی مهربانتر جا داد بیآنکه تعهد منتشرشده بشکند.
افشا. پس از بازی بذر فاش میشود. هرکسی میتواند آن را هش کند، با تعهد بسنجد، هر پرتاب را دوباره حساب کند و نتیجهها را کنار تاسهایی بگذارد که روی صفحه ظاهر شدند. اگر همهچیز جور دربیاید، بازی نمیتوانسته هدایت شده باشد. اگر چیزی دستکاری شده باشد، ریاضیات میگوید.
اعتماد از شرکت به حساب منتقل میشود. دیگر لازم نیست باور کنی ممیزی دقیق بوده یا استقرار وفادار مانده. لازم است SHA-256 دوام بیاورد، و این همان فرضی است که بقیه اینترنت هر روز به آن تکیه میکند.
گواهی میگوید سکه روزی که نگاه کردیم سالم بود. رسید میگوید پرتاب خودِ تو عادلانه بود، و حساب را نشان میدهد.
آیا گواهی هنوز اهمیت دارد؟
بله. تعهد و افشا ثابت میکند دقیقا همان تصادفیای را گرفتهای که به آن متعهد شده بودند. ثابت نمیکند آنچه تعهد شده از اساس خوب بوده است. یک منبع بذر ضعیف یا قابل پیشبینی باز هم رسیدهایی میسازد که بینقص تایید میشوند: تحویل اثباتپذیر تاس بد. داوری درباره کیفیت منبع دقیقا کار ممیزی و آزمون آماری است، و در صنایع تنظیمشده گواهی بهسادگی الزامی است.
این دو مدل به دو پرسش متفاوت پاسخ میدهند. ممیزی میپرسد: تصادفی خوب است؟ رسید میپرسد: بازی من واقعا از آن استفاده کرد؟ سامانهای که فقط اولی را دارد بر ایمان دائمی به استقرار میچرخد. سامانهای که فقط دومی را دارد میتواند تاس بد را وفادارانه تحویل دهد و آن را اثبات کند. قویترین سامانهها هر دو در را میبندند.
چرا یک بررسیگر عمومی مهم است؟
چون رسیدی که کسی نتواند بخواند از کسی محافظت نمیکند. بعضی بازیها تعهد منتشر میکنند اما راه عملی برای بررسی به بازیکن نمیدهند، یا بررسی را داخل همان اپلیکیشنِ مورد پرسش پنهان میکنند. این هیچ حلقهای را نمیبندد. اگر تنها ابزاری که میتواند ضامن یک سامانه باشد متعلق به خود آن سامانه باشد، دوباره به ایمان برگشتهای، فقط با چند گام اضافه.
قویترین پیادهسازیها سه چیز منتشر میکنند. تعهد، پیش از بازی. بذر، پس از آن. و راهی مستقل و عمومی برای بازمحاسبه پرتابها: یک صفحه وب ساده، رمزنگاری استانداردی که هر مرورگر از پیش دارد، بدون ورود اجباری. شکاکی که هرگز آن مسابقه را بازی نکرده هم میتواند بررسیاش کند.
اوریون را روی همین مدل ساختیم. هر مسابقه متکی به سرور پیش از اولین پرتاب با SHA-256 به تاسهایش متعهد میشود، هر پرتاب را با HMAC-SHA256 مشتق میکند، و در پایان بازی بذر را فاش میکند. بررسیگر روی orion.arthea.ai/verify امروز زنده است. کل زنجیره را با Web Crypto در مرورگر تو دوباره حساب میکند و حسابی نمیخواهد، چون برهانی که به اجازه نیاز دارد برهان نیست. سرور هر حرکت بازی زنده را هم در مبدا اعتبارسنجی میکند. تاس درستکار، تخته درستکار میطلبد.
دروازه orion.arthea.ai/go پیوندهای App Store و Google Play را در خود دارد و همیشه نشان میدهد هماکنون چه چیزی در دسترس است. پشت آن، هر مسابقه، از همان اولی، رسید خودش را دارد.