Da ich mich für das Thema sehr interessiere und hier leider viele haarsträubende Sachen dazu gelesen habe, wollte ich hier mal einen ganz kurzen Grundkurs verfassen, dem ich jedem ans Herz legen kann der Online-highscores plant oder sein Spiel schützen will oder whatever.
1. Benutze niemals Passwörter im Klartext
Nie nie nie nie. Der Fehler ist deshalb so ärgerlich, weil er sich problemlos vermeiden lässt, ohne viel Aufwand. Habt ihr euch schon einmal gefragt, warum die Bank euch eure PIN nicht sagen kann, wenn ihr sie vergessen habt? Ganz einfach: sie wissen sie nicht. Ein Passwort hat aus Prinzip nirgendwo zu stehen außer in den Köpfen der authorisierten Personen. Weder euer Bankberater noch eure Bank noch irgendein Bankcomputer haben eine Chance an die PIN zu kommen, und das ist auch verdammt gut so. Für diese Zwecke gibt es schon seit vielen vielen Jahren Hashfunktionen. Die sind altbewährt und schnell eingebaut.
2. Keine Security through obscurity
Auch nicht gut. Das heißt: die Sicherheit darf nicht darauf aufbauen, dass niemand das Programm decompiliert oder jemals irgendwer den Code zu Gesicht bekommt. Das hat noch nie funktioniert und wird auch nie funktionieren.
3. Der einzige Weg um Online-Highscores halbwegs abzusichern
...tja, den gibt's nicht. Ein Online-HIghscore ist sehr schön und unheimlich motivierend, doch wie stellt man fest dass derjenige nicht mogelt/cheatet/hackt? Leider gibt es dafür keine Lösung. denn das Ganze basiert darauf, dass der Server Daten von einem System empfängt, welches unter Kontrolle des Benutzers ist. Folglich kann der Benutzer machen was er will und auch beliebige Daten an den Server schicken. Es gibt allerdings ein paar Wege, das Schummeln schwierig und somit unattraktiv zu machen:
- eine Prüfsumme aus allem möglichem Zeug mitschicken. Der Client sendet dann den HIghscore, die Spielzeit und seinen Namen und zusätzlich noch den Hash aus allen drei Dingen zusammen. Der Server kann das genauso hashen und dann vergleichen. Nur Sicher solange der User nicht weiß, welcher Algorithmus benutzt wird und welche Sachen berechnet werden.
- erkannten Cheatern einen Honeypot hinstellen. Sie sehen ihren HIghscore und glauben, dass das Cheaten funktioniert hätte. Doch sie sind die Einzigen die ihren Highscore sehen können.
Bei kleineren Spielen kann man noch, anstatt den Score mitzuschicken, das Replay mitschicken und der Server berechnet daraus die Punktzahl.
4. Der einzige Weg um Raubkopien zu verhindern
ist Onlineregistrierung. Wenn du glaubst, du hast eine neue geniale Idee welche auch ohne Onlinereg. funktioniert: vergiss es. Die Spieleindustrie hat schon einige Jahre auf dem Buckel, und jedes erdenkliche System wurde geknackt. Auch Online-Registrierungen werden geknackt, doch das ist immerhin schwerer als alle andere Methoden. EIn Passwortschutz mit einem Hardcoded-Passwort hat dir jedes 11-jährige Scriptkiddie in einer Minute geknackt.
Das wars erstmal soweit, und vergesst nicht: es geht hierbei um das Verständnis der grundsätzlichen Dinge, und nicht darum ob und wie ein bestimmtes Spiel jetzt konkret gehandhabt werden soll.
Ich sage nicht dass jeder sein Spiel knallhart absichern soll. Aber jene die irgendwelche Sicherheitsmechanismen einbauen möchten, müssen das auch gleich ordentlich machen.
1. Benutze niemals Passwörter im Klartext
Nie nie nie nie. Der Fehler ist deshalb so ärgerlich, weil er sich problemlos vermeiden lässt, ohne viel Aufwand. Habt ihr euch schon einmal gefragt, warum die Bank euch eure PIN nicht sagen kann, wenn ihr sie vergessen habt? Ganz einfach: sie wissen sie nicht. Ein Passwort hat aus Prinzip nirgendwo zu stehen außer in den Köpfen der authorisierten Personen. Weder euer Bankberater noch eure Bank noch irgendein Bankcomputer haben eine Chance an die PIN zu kommen, und das ist auch verdammt gut so. Für diese Zwecke gibt es schon seit vielen vielen Jahren Hashfunktionen. Die sind altbewährt und schnell eingebaut.
2. Keine Security through obscurity
Auch nicht gut. Das heißt: die Sicherheit darf nicht darauf aufbauen, dass niemand das Programm decompiliert oder jemals irgendwer den Code zu Gesicht bekommt. Das hat noch nie funktioniert und wird auch nie funktionieren.
3. Der einzige Weg um Online-Highscores halbwegs abzusichern
...tja, den gibt's nicht. Ein Online-HIghscore ist sehr schön und unheimlich motivierend, doch wie stellt man fest dass derjenige nicht mogelt/cheatet/hackt? Leider gibt es dafür keine Lösung. denn das Ganze basiert darauf, dass der Server Daten von einem System empfängt, welches unter Kontrolle des Benutzers ist. Folglich kann der Benutzer machen was er will und auch beliebige Daten an den Server schicken. Es gibt allerdings ein paar Wege, das Schummeln schwierig und somit unattraktiv zu machen:
- eine Prüfsumme aus allem möglichem Zeug mitschicken. Der Client sendet dann den HIghscore, die Spielzeit und seinen Namen und zusätzlich noch den Hash aus allen drei Dingen zusammen. Der Server kann das genauso hashen und dann vergleichen. Nur Sicher solange der User nicht weiß, welcher Algorithmus benutzt wird und welche Sachen berechnet werden.
- erkannten Cheatern einen Honeypot hinstellen. Sie sehen ihren HIghscore und glauben, dass das Cheaten funktioniert hätte. Doch sie sind die Einzigen die ihren Highscore sehen können.
Bei kleineren Spielen kann man noch, anstatt den Score mitzuschicken, das Replay mitschicken und der Server berechnet daraus die Punktzahl.
4. Der einzige Weg um Raubkopien zu verhindern
ist Onlineregistrierung. Wenn du glaubst, du hast eine neue geniale Idee welche auch ohne Onlinereg. funktioniert: vergiss es. Die Spieleindustrie hat schon einige Jahre auf dem Buckel, und jedes erdenkliche System wurde geknackt. Auch Online-Registrierungen werden geknackt, doch das ist immerhin schwerer als alle andere Methoden. EIn Passwortschutz mit einem Hardcoded-Passwort hat dir jedes 11-jährige Scriptkiddie in einer Minute geknackt.
Das wars erstmal soweit, und vergesst nicht: es geht hierbei um das Verständnis der grundsätzlichen Dinge, und nicht darum ob und wie ein bestimmtes Spiel jetzt konkret gehandhabt werden soll.
Ich sage nicht dass jeder sein Spiel knallhart absichern soll. Aber jene die irgendwelche Sicherheitsmechanismen einbauen möchten, müssen das auch gleich ordentlich machen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p-head ()