Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2021-05-15, 12:47
  #13
Medlem
Citat:
Ursprungligen postat av Telepatisk
Vad har du för krypteringsalgoritmer?

Hur då? Plaintext?

X via en krypterad kanal?

Är Y en konstant? Via en krypterad kanal?

-

Sparas klientens lösenord någonstans hos klienten eller hur görs detta?

Bara en idé, jag vet ju inte hur ditt spel ser ut. Men servern skulle ju kunna göra någon form av rimlighets-check baserat på tidigare input från klienten (om klienten skickat något annat?).

T.ex:
Klient: Klarat bana 1 med 5000 score.
Server: OK, 5000 score är inom maxgränsen för bana 1.
Klient: Klarat bana 2 med 10000 score.
Server: OK, 10000 score är inom maxgränsen för bana 2.
Klient: Dog på bana 3 med 9999999 score. Vill ha upp till highscoren med namnet "I PWN EVERYONE".
Server: Inte OK, orimlig score.

Och då menar jag att servern har en rad i sin databas för klienten under klientens själva spelande.

Ja, jag antar att det är plaintext det rör sig om. Jag skickar bara en sträng som formdata till servern som echoar ut den slumpade nyckeln. Jag har ingen erfarenhet av krypterade kanaler då jag är helt ny på sånt här, men det är säkert nödvändiga saker för 100% täta grejer.

Jag gör spelet i Fusion vilket innebär att jag kan göra enkla hashningar med sha-1 (som jag vet är förlegat och kasst). Jag har möjlighet att göra sha512 vilket ska vara extremt säkert, fast då måste jag hämta in det som ska hashas genom en fil som jag måste skicka från servern istället. Kanske är det värt och säkert att ha en tom fil i programmappen som fylls med fildata genom SFTP och sedan raderas, fast då kommer ju nyckeln ligga tillgänglig på användarens hårddisk i någon mikrosekund.

Jag har inte forskat så djupt i denna metod, kanske finns möjlighet att läsa in denna fil direkt från servern, som sagt är jag lite begränsad med Fusion då det mesta av funktionerna är tillägg.

Y är en konstant som är gömd i klienten och hos servern, den är väl lätt att luska ut om man vill. Därför hänger hela säkerheten i denna metod på användningen av engångsnyckeln X.

Autentiseringen sker hos servern som ett vanligt inloggningssystem med PDO och bundna parametrar, man loggar in i spelet på samma sätt som i en webbläsare.

Jag gillar idén med en rimlighetscheck, definitivt värt att ha i åtanke.
Citera
2021-05-15, 14:39
  #14
Medlem
Telepatisks avatar
Citat:
Ursprungligen postat av do-ob
Ja, jag antar att det är plaintext det rör sig om. Jag skickar bara en sträng som formdata till servern som echoar ut den slumpade nyckeln. Jag har ingen erfarenhet av krypterade kanaler då jag är helt ny på sånt här, men det är säkert nödvändiga saker för 100% täta grejer.
Om det är plaintext så spelar det i princip ingen roll om du har din metod, för då kan dom ju ändå bara hacka till det lite och ändra highscoren när den skickas ut.
Citat:
Ursprungligen postat av do-ob
Kanske är det värt och säkert att ha en tom fil i programmappen som fylls med fildata genom SFTP och sedan raderas, fast då kommer ju nyckeln ligga tillgänglig på användarens hårddisk i någon mikrosekund.
Jag är inte helt med, men det låter omständligt Då skulle din server behöva klara av massa SSH sessions? Låter otryggt.

Oavsett om du har din metod eller inte, om användaren har själva spelet som en binär (eller i webbläsaren) så kan personen bara ändra/"hacka" minnet i spelet och ändra highscoren innan den skickas och då spelar det inte riktigt någon roll hur highscoren sedan skickas till servern. Det här är dessutom något som går att göra på 1 minut (med Cheat Engine) så det kan vara värt att tänka på.

Utöver detta så om kommunikationen är okrypterad så kan man bara ändra paketen innan dom går ut på linan.

Jobbigt att göra spel När du kommit längre så kan du skicka spelet till mig om du vill så kan jag visa vad jag menar

Utöver rimlighets-checken så tycker jag ändå att det borde finnas någon relativt "färdig" metod för detta?
Citera
2021-05-16, 06:50
  #15
Medlem
Citat:
Ursprungligen postat av Telepatisk
Om det är plaintext så spelar det i princip ingen roll om du har din metod, för då kan dom ju ändå bara hacka till det lite och ändra highscoren när den skickas ut.

Jag är inte helt med, men det låter omständligt Då skulle din server behöva klara av massa SSH sessions? Låter otryggt.

Oavsett om du har din metod eller inte, om användaren har själva spelet som en binär (eller i webbläsaren) så kan personen bara ändra/"hacka" minnet i spelet och ändra highscoren innan den skickas och då spelar det inte riktigt någon roll hur highscoren sedan skickas till servern. Det här är dessutom något som går att göra på 1 minut (med Cheat Engine) så det kan vara värt att tänka på.

Utöver detta så om kommunikationen är okrypterad så kan man bara ändra paketen innan dom går ut på linan.

Jobbigt att göra spel När du kommit längre så kan du skicka spelet till mig om du vill så kan jag visa vad jag menar

Utöver rimlighets-checken så tycker jag ändå att det borde finnas någon relativt "färdig" metod för detta?

Det låter som att jag har mer att göra än jag trodde när jag började spåna på detta Finns det något bra material att titta på när det kommer till detta som du rekommenderar?
Citera
2021-05-16, 12:33
  #16
Medlem
Telepatisks avatar
Citat:
Ursprungligen postat av do-ob
Det låter som att jag har mer att göra än jag trodde när jag började spåna på detta Finns det något bra material att titta på när det kommer till detta som du rekommenderar?
Jag vet bara hur man förstör, inte gör Nejdå, men hittade en intressant tråd om det här:
https://gamedev.stackexchange.com/qu...k-leaderboards

Verkar som många förespråkar regelbunden "rimlighets-check" typ

Här är ett exempel som visar hur enkelt det är att "hacka" highscore:
https://www.youtube.com/watch?v=NEnP2lY480Y
Citera
2021-05-16, 12:37
  #17
Medlem
Hrass avatar
Som andra användare föreslagit: allt du vill ha koll på får du förlägga på serversidan. Du kan inte lita på vad klienten rapporterar annat än rimlighetskontroller du sätter upp på serversidan. Hur mycket du lägger på klient- och serversida är ju en avvägning du får göra. Att rapportera in vilken nivå användaren är på (istället för en klump: "här kommer slutsumman!"), spara lite tidsstämplar osv. låter rimligt, t.ex. Det kan du ju använda till annan statistik också.

Många antifusk är byggda kring dessa principer + mer invasiva metoder som nästan alltid är security by obscurity. I många större multiplayerspel t.ex. sätter sig antifusket ofta som en monitorerande process (ev. drivrutin) och tar emot kommandon från en server.
"Kontrollsummera alla pages med exekverbara rättigheter och skicka kontrollsumman till servern"
Dessa kan bli ganska dynamiska i form av situ-uppdatering av klientsidan av antifusket så att spelklienten omöjligt kan ha ett i förväg förberett svar på den. Därför många bannlysningar kommer i "ban waves" där man vittjar resultatet av en serie åtgärder som man låtit rulla ut över en liten tid.

Helt irrelevant för ditt spel, men lite kontext. Rimlighetskontroller för t.ex. FPS-spel kan vara hur fort och med vilken variation en spelares kamera vrider sig när en fiende dyker upp.
__________________
Senast redigerad av Hras 2021-05-16 kl. 12:39.
Citera
2021-05-18, 15:32
  #18
Medlem
Citat:
Ursprungligen postat av Telepatisk
Jag vet bara hur man förstör, inte gör Nejdå, men hittade en intressant tråd om det här:
https://gamedev.stackexchange.com/qu...k-leaderboards

Verkar som många förespråkar regelbunden "rimlighets-check" typ

Här är ett exempel som visar hur enkelt det är att "hacka" highscore:
https://www.youtube.com/watch?v=NEnP2lY480Y

Tack, det här ska jag grotta ner mig i.

Citat:
Ursprungligen postat av Hras
Som andra användare föreslagit: allt du vill ha koll på får du förlägga på serversidan. Du kan inte lita på vad klienten rapporterar annat än rimlighetskontroller du sätter upp på serversidan. Hur mycket du lägger på klient- och serversida är ju en avvägning du får göra. Att rapportera in vilken nivå användaren är på (istället för en klump: "här kommer slutsumman!"), spara lite tidsstämplar osv. låter rimligt, t.ex. Det kan du ju använda till annan statistik också.

Många antifusk är byggda kring dessa principer + mer invasiva metoder som nästan alltid är security by obscurity. I många större multiplayerspel t.ex. sätter sig antifusket ofta som en monitorerande process (ev. drivrutin) och tar emot kommandon från en server.
"Kontrollsummera alla pages med exekverbara rättigheter och skicka kontrollsumman till servern"
Dessa kan bli ganska dynamiska i form av situ-uppdatering av klientsidan av antifusket så att spelklienten omöjligt kan ha ett i förväg förberett svar på den. Därför många bannlysningar kommer i "ban waves" där man vittjar resultatet av en serie åtgärder som man låtit rulla ut över en liten tid.

Helt irrelevant för ditt spel, men lite kontext. Rimlighetskontroller för t.ex. FPS-spel kan vara hur fort och med vilken variation en spelares kamera vrider sig när en fiende dyker upp.

Om jag lägger tyngdpunken på rimlighetsmetoder i klienten och håller mig till min lilla lösning från tidigare i tråden kanske jag är något på spåren.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback