Εμπιστοσύνη που μετριέται

Τις ζαριές στις online παρτίδες σου μπορείς να τις ελέγξεις κι εσύ

Αν μια εφαρμογή δεν δείχνει πώς βγαίνουν τα ζάρια της, δεν μπορείς να τα ελέγξεις· στο Boardgammon μπορείς. Κάθε ζαριά μιας online παρτίδας κλειδώνεται με κρυπτογραφική δέσμευση πριν αποκαλυφθεί, και η καταγραφή της φτάνει για να την ξαναϋπολογίσεις εσύ ή οποιοσδήποτε άλλος.

1. Δέσμευση πριν από κάθε ζαριά

Κάθε ζαριά έχει τον δικό της σπόρο, έναν μυστικό τυχαίο αριθμό που ο server παράγει αποκλειστικά γι’ αυτήν. Πριν αποκαλύψει τη ζαριά, ο server δημοσιεύει μόνο το αποτύπωμα SHA-256 του σπόρου (το hash του): αυτή είναι η δέσμευση. Το αποτύπωμα δουλεύει μόνο προς τη μία κατεύθυνση· κλειδώνει τον σπόρο εκείνη τη στιγμή χωρίς να φανερώνει τίποτα γι’ αυτόν. Από εκεί και πέρα ο server δεν μπορεί να βάλει άλλον σπόρο στη θέση του, γιατί το δημοσιευμένο αποτύπωμα δεν θα ταίριαζε πια.

2. Ένας δεύτερος αριθμός μπαίνει στον υπολογισμό

Όταν ρίχνεις εσύ τα ζάρια σε ζωντανή παρτίδα, η εφαρμογή στη συσκευή σου παράγει έναν δικό της τυχαίο αριθμό και τον στέλνει στον server. Εκείνος υπολογίζει τα ζάρια με HMAC-SHA256, δηλαδή με αποτύπωμα που έχει για κλειδί τον μυστικό σπόρο· στον υπολογισμό μπαίνουν ο δεύτερος αυτός αριθμός, το αναγνωριστικό της παρτίδας, το αναγνωριστικό της ζαριάς και ένας μετρητής. Όταν τη ζαριά τη βγάζει ο ίδιος ο server, όπως σε παιχνίδι αλληλογραφίας, δίνει και τον δεύτερο αριθμό.

3. Παραγωγή χωρίς μεροληψία

Η κρυπτογραφική έξοδος μετατρέπεται σε αριθμούς 1 έως 6 με απόρριψη των τιμών που θα αλλοίωναν την κατανομή, ώστε κάθε αριθμός να έχει ακριβώς την ίδια πιθανότητα.

4. Η σελίδα ελέγχου

Μαζί με τα ζάρια ο server δείχνει κάθε φορά και τον μυστικό σπόρο. Σε κάθε ζαριά που ρίχνεις, η εφαρμογή ελέγχει στο παρασκήνιο ότι το αποτύπωμα του σπόρου ταιριάζει με τη δέσμευση και ότι ο υπολογισμός δίνει τα ίδια ζάρια. Τον έλεγχο μπορείς να τον κάνεις και χωρίς την εφαρμογή: κάθε online παρτίδα που παίζεις έχει και τη δημόσια σελίδα ελέγχου της, όπου βρίσκεις για κάθε ζαριά τη δέσμευση, τον αποκαλυμμένο σπόρο και τα ζάρια, καθώς και ένα σύντομο πρόγραμμα που μπορείς να τρέξεις εσύ.

Δίκαιο παιχνίδι, με διαιτητή τον server

Η συσκευή του παίκτη δεν παράγει ποτέ ζάρια και ο server ελέγχει κάθε κίνηση με βάση τους κανόνες. Έτσι μια πειραγμένη εφαρμογή δεν μπορεί ούτε να φτιάξει δική της ζαριά ούτε να περάσει παράνομη κίνηση. Με τη δημοσιευμένη καταγραφή ελέγχεις ότι σε κάθε ζαριά τα ζάρια προκύπτουν από τους αριθμούς της.

Τι δείχνει η καταγραφή και τι όχι

Η καταγραφή μιας ζαριάς δείχνει ότι ο αποκαλυμμένος σπόρος ταιριάζει με τη δέσμευσή του και ότι τα ζάρια προκύπτουν από τους αριθμούς που περιέχει. Όταν ρίχνεις εσύ, η εφαρμογή σου έχει πάρει τη δέσμευση πριν από τη ζαριά, οπότε μπορεί να διαπιστώσει και ότι ο σπόρος είχε κλειδωθεί πρώτα· η καταγραφή από μόνη της δεν το δείχνει αυτό. Όταν δίνει ο server και τον δεύτερο αριθμό, η καταγραφή εξακολουθεί να δείχνει ότι η ζαριά δεν άλλαξε αφότου καταγράφηκε· δεν μπορεί όμως να δείξει ότι ο server δεν ήξερε ή δεν διάλεξε τη ζαριά από πριν. Προτιμάμε να το πούμε καθαρά παρά να ισχυριστούμε περισσότερα απ’ όσα αποδεικνύει η καταγραφή.

Από το blog

Όλα τα άρθρα