fairnessprovably fairdice
כן, אפשר. קוביות אונליין מוטלות על שרת שאתם לא רואים, ושום דבר לא מונע פיזית ממפעיל לשנות מספר לפני שהוא מגיע ללוח שלכם. תוצאות לבדן לעולם לא יוכיחו זאת לאף כיוון, ולכן השאלה הישרה איננה אם זיוף אפשרי, אלא אם משחק יכול להוכיח שהוא לא קרה.
אנחנו מפתחים משחק שש בש, כך שאיננו ניטרליים כאן. בדיוק בגלל זה אנחנו רוצים לענות על השאלה כמו שצריך, כולל החלקים הלא נוחים.
למה הקוביות מרגישות מזויפות בכל אתר?
כי השונות בשש בש אכזרית והזיכרון האנושי מוטה. יש שלושים ושש דרכים שבהן שתי קוביות יכולות ליפול, רצפים אינם תקלה אלא ערובה, ואיפשהו הערב שרת ישר יטיל ארבעה דאבלים ברצף נגד מישהו ששיחק כל אבן נכון. אתם זוכרים את ה-5-5 שפגע באבן החשופה שלכם. אתם לא זוכרים את ההטלה הניסית שהצילה אתכם ביום שלישי שעבר. הפסדים נדבקים, הצלות מתאדות, ואחרי שלושה משחקים גרועים ברצף הקוביות מרגישות אישיות. הן מרגישות אישיות גם על לוח אמיתי בבית קפה אמיתי. שאלו כל מי שמזיז אבנים מעץ כבר ארבעים שנה.
והנה המלכודת. משחק מזויף היה מרגיש בדיוק אותו דבר. רצפים לא מוכיחים דבר לאף כיוון, כך שאם הראיה שלכם היא איך הקוביות הרגישו, אינכם יכולים להבדיל בין שרת ישר לשרת רמאי. גם אנחנו לא. זו איננה הגנה על קוביות אונליין. זו הבעיה שלהן.
האם אתר באמת יכול לזייף את הקוביות שלו?
טכנית כן, וזה אפילו לא היה קשה. השרת רואה את כל הלוח לפני שהוא מטיל. מפעיל שרוצה לרמות היה יכול:
- להטות הטלות בודדות מכל מאה ברגעים שחשובים ביותר: ההטלה שפוגעת, הכניסה שנכשלת, הדאבל שהופך משחק אבוד.
- לשמור על משחקים צמודים באופן מלאכותי, כדי שהמפגשים יימשכו יותר וההפסדים ירגישו כמו החמצות קטנות.
- להעדיף בשקט צד אחד במשחק שיש בו למפעיל אינטרס.
- לעשות זאת מספיק לעיתים רחוקות כדי שהקוביות עדיין יעברו כל מבחן סטטיסטי ששחקן יוכל אי פעם להריץ.
איננו טוענים שאתר מסוים עושה זאת. אנחנו אומרים שהארכיטקטורה מאפשרת זאת. שרת סגור הוא חדר נעול: המפעיל מטיל בפרטיות, מדווח מספר, ומבקש מכם לקבל אותו באמון. מחוץ לדלת, מפעילים ישרים ורמאים נראים זהים.
האם מחולל מוסמך לא מוכיח שהקוביות הוגנות?
קראו מה התעודה באמת מכסה. מעבדה בודקת מחולל: אלגוריתם על שולחן בדיקות, שמייצר מיליוני מספרים העוברים בדיקות סטטיסטיות. זה מסמיך את הרכיב. זה לא אומר דבר על המסירה, כלומר האם המספר שהגיע ללוח שלכם יצא מאותו מחולל, באותו רגע, בלי ששום דבר בדרך שינה אותו. מאזניים מוסמכים בחדר האחורי לא מוכיחים שהלחם שלכם נשקל עליהם.
הסמכה היא גם תמונת רגע. שרתים חיים נפרסים מחדש כל הזמן, ונתיב הקוד בין המחולל למשחק שלכם ממשיך להשתנות הרבה אחרי שהמעבדה הלכה הביתה. כך שמחולל מוסמך עונה על שאלה שאיש לא באמת שאל. השאלה שחשובה איננה אם קוביות טובות קיימות איפשהו בבניין. אלא אם המשחק שלכם קיבל אותן, בכל הטלה, הערב.
מה התחייבות וחשיפה משנות בפועל?
הן הופכות הוגנות מהבטחה להוכחה. לפני שמשחק מתחיל, השרת מגריל זרע סודי ומפרסם את טביעת האצבע שלו, גיבוב SHA-256 שנקרא התחייבות. כל הטלה במשחק נגזרת אחר כך מאותו זרע, חישוב HMAC-SHA256 אחד לכל הטלה, לפי הסדר. כשהמשחק נגמר, השרת חושף את הזרע.
עכשיו כל אחד יכול לבדוק שני דברים. לגבב את הזרע שנחשף: הוא חייב להתאים להתחייבות שפורסמה לפני המהלך הראשון. לחשב מחדש את ההטלות: הן חייבות להתאים לכל מספר שהופיע על הלוח. אילו השרת היה משנה אפילו קובייה אחת אחרי שראה את העמדה שלכם, החשבון לא היה מסתדר. זיוף מפסיק להיות חשד שאי אפשר לבדוק והופך לשקר שאפשר לתפוס.
קוביות שננעלו לפני המשחק אינן יכולות להגיב לו.
זה לב העניין. הזיוף השימושי הוא תגובתי: לראות את האבן החשופה, להטיל את הפגיעה. התחייבות וחשיפה לוקחות מהשרת את העיניים, כי כל הרצף נקבע לפני מהלך הפתיחה וכל התערבות אחרי ההתחייבות ניתנת לגילוי מתמטית. מה שהן לא עושות הוא להפוך את הקוביות לרחומות. הרצף היה ישר, לא סלחני. עדיין תשבו על הבר ברגע הגרוע ביותר, ועכשיו תוכלו להוכיח שזה היה הוגן.
איך מאמתים משחק בפועל?
כך בנינו את זה באוריון. כל משחק על השרתים שלנו נושא התחייבות שנוצרה לפני ההטלה הראשונה, השרת מאמת כל מהלך חי במקור, ובדיקת משחק שהסתיים אורכת בערך דקה:
פתחו את המאמת. היכנסו אל orion.arthea.ai/verify מכל דפדפן. אין מה להתקין, אין חשבון לפתוח.
הזינו את מזהה המשחק. לכל משחק שרת באוריון יש אחד. הדביקו אותו.
תנו לדפדפן לעשות את החשבון. העמוד מחשב מחדש את ההתחייבות וכל הטלה עם Web Crypto, מקומית, בדפדפן שלכם. המילה שלנו איננה חלק מהבדיקה. אילו מספר אחד היה משתנה, החישוב מחדש היה אומר זאת.
המאמת חי כבר היום. המשחק עצמו גמור. הדלת ב-orion.arthea.ai/go נושאת את הקישורים ל-App Store ול-Google Play ותמיד מראה מה זמין ברגע זה. כך או כך, התשובה הישרה בעינה. כן, אפשר לזייף שש בש אונליין. התיקון איננו הבטחה יפה יותר. הוא קוביות שמראות את החשבון שלהן.