Jag ville bara nämna att det finns en slags lösning på detta problem men det är sannolikt inte tillgängligt för dig; lösningen kallas "homomorf kryptering" och det gör det möjligt för en klient att utföra en känd beräkning utan att veta exakt vilka värden de beräknar med, och en server som därför kan kontrollera strukturen för det beräknade värdet för att bevisa att klienten inte bara skicka tillbaka en slumpmässig sträng men byggde den faktiskt ut ur de angivna värdena.
Problemet är att det antingen är långsamt eller ofullständigt , med "ofullständigt" vilket betyder "inte innehåller ett komplett utbud av logiska primitiver." Mycket ofta är det ett partiellt system som tillåter vissa krypterings- och dekrypteringsoperationer E (), D (), plus en del komplicerad operation operation så att
D (E (A) ⊕ E (B)) = A + B,
eller liknande.
Så låt oss se hur detta löser problemet för vissa spel. Tänk på ett spel med "ljus ut" -typ där du trycker på N hexarna i ett sexkantigt rutnät och var och en växlar både dess tillstånd och tillstånden för dem runt det. Detta är en kommutativ algebra för dessa "pressar" och därför kommer det inte att finnas mer än N pressar totalt i en given lösning, plus varje hex beror bara på initialtillståndet plus pressarna på sin egen hex plus de 6 hexorna runt den.
Eftersom vårt homomorfa krypteringsschema endast tillåter +, inte XOR, ger vi varje hex en 3-bitars räknare för det antal gånger den har vänt. (Klientprogramvaran krymper automatiskt varje dubbeltryck av en hex till bara ett tryck.) De faktiska vändningsåtgärderna är därför bitvektorer som ser ut,
001 001 000 000 000 001 001 001 000 001 001 000 000 ... 000 00000000 00000001
Med andra ord har de 1s i vart och ett av dessa 3-bitarsfält som den vänder, plus en 1 i någon 16-bitars räknare.
Vi krypterar alla dessa med ett homomorfiskt krypteringsschema, skickar var och en av dem till klienten och klienten skickar tillbaka oss ett krypterat värde beräknat från dessa krypterade värden som vi skickade tillbaka. Vi dekrypterar sedan detta och OCH det dekrypterade värdet med bitsträngen,
001 001 001 001 ... 001 11111111 00000000
och jämför med det ursprungliga spelet -stat tillsammans med 0 för de 8 motbitarna.
Om de skickar oss ett slumpmässigt värde är deras chans att vi accepterar det 2 - (N + 8) och därför deras enda användbara sättet att klara testerna är att använda de värden som vi gav dem i någon tillåten kombination. De har tillgång till vissa drag som vi inte tillåter dem direkt på grund av heltalsspill, men vi kan alltid göra fälten bredare än 3 bitar för att göra dessa dyrare för räknaren till höger. Men vi överfördes aldrig deras enskilda knapptryckningar, mycket mindre omspelning av historien: vi accepterade en vektor som säger "här är hur jag vred på nätet", vilket är den "superosäkra sak" som alla varnar dig för, men vi gjorde det på ett sådant sätt att de inte kan göra de saker vi är oroliga för utan tillgång till en hemlig nyckel. ger inte spontant 1000 röster till Alice.