Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Sylence

Community-Fossil

  • »Sylence« ist der Autor dieses Themas

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

1

13.01.2013, 18:54

Client Authentifizierung ohne zentrale Stelle

Ich hab da mal ein etwas merkwürdigeres Problem.

Was ich vorhabe:
Für Gameserver möchte ich gern, dass ich in den Servereinstellungen Admins etc eintragen kann.
Die müssen sich ja natürlich irgendwie authentifizieren. Dafür habe ich mir folgendes, imho umständliches Prinzip überlegt und wollte wissen ob das nicht einfacher geht:

Der Client generiert aus der Seriennummer des Spiels ein Public-Private-Key-Pair und kann dann in den Listen der Server mit dem Public Key eingetragen werden und sich damit authentifizieren (Server verschlüsselt irgendwas mit dem Public Key und der Client muss den entschlüsselten Wert wieder an den Server übertragen)

Warum aus der Seriennummer? Naja die bekommt man als Spieler ja einmal, also ist es nicht schlimm, wenn man mal seinen Computer wechselt, das Spiel neu installiert oder sonst etwas macht, was dafür sorgen würde, dass ein zufällig generiertes Schlüsselpaar verloren geht.

Warum ich das so machen will und nicht eine zentrale Instanz erstelle die für die Authentifizierung sorgt ist einfach: Wenn die Instanz ausfällt geht halt nichts mehr und das möchte ich verhindern.

Das Problem an dem Ansatz: Ich müsste die Erzeugung des Schlüsselpaares selber machen, bzw eine offene Implementierung finden, wo ich dem Zufallsgenerator einen Seed übergeben kann, der auf der Seriennummer basiert.

Also meine Frage ist ob das nicht irgendwie mit weniger Aufwand möglich ist? Oder falls nicht ob nicht jemand eine .NET Implementierung eines assymetrischen Verschlüsselungsverfahren kennt, bei dem ich den generierten Schlüssel irgendwie von meiner Seriennummer ableiten kann?

Ich bin nämlich nicht sonderlich heiß darauf RSA selber zu implementieren...

Ich bin für jede Hilfe und jeden Denkanstoß dankbar :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

13.01.2013, 19:38

Die Schwachstelle Deiner Idee ist die Generierung des Schlüssels. Die Methode wird herausgefunden, sehr einfach. Der Key kann ebenfalls gefunden werden. Es ist quasi kein Mehrwert in der Schlüsselgenerierung. Du kannst auch direkt die Serien-Nummern als Passwörter verwenden, das wäre genauso (un)sicher.
Ich sehe auch nicht so richtig was das mit der zentralen Stelle zu tun hat, habe ich wohl nicht ganz verstanden. Die zentrale Stelle gegen Ausfall abzusichern sollte aber nicht so schwierig sein, wenn Du so eine Authentifizierung brauchst, die keine üblichen Passwörter benutzt.
An Deiner Stelle würde ich stink normale Accounts benutzen, von denen eben manche Admin-Rechte auf dem Server besitzen und einen ganz normalen Login mit RSA oder Blowfish verschlüsseln und fertig.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Sylence

Community-Fossil

  • »Sylence« ist der Autor dieses Themas

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

3

13.01.2013, 19:44

Naja ein Passwort kann man ja immer knacken. Und das man die Methode herausfinden kann ist ja nicht das eigentliche Problem. Die Sicherheit basiert ja darauf, dass man die eigene Seriennummer geheimhält.

Und wenn ich die Seriennummer als Passwort benutze, dann gibt es ja erst recht keinen Schutz dagegen, dass sich jemand als anderer Spieler ausgibt. Ich denk da vor allem an die Serveradmins, die den Key ja eintragen müssen. Und ob ich den dann hashe oder nicht macht nur einen Unterschied, ob man mit dem Schlüssel überhaupt das Spiel an sich starten könnte, aber den check kann man ja natürlich auch umgehen.

Oder überseh ich noch etwas anderes ?

EDIT:
Ok das ist wieder mal ein typisches Beispiel von "den Wald vor lauter Bäumen nicht sehen"... auf ein einfaches Benutzername/Passwort am Server bin ich nicht gekommen...
Damit hat sich das dann auch alles erledigt...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

13.01.2013, 19:50

Wo genau ist der sicherheitstechnische Unterschied von einem geheimen Passwort und einer geheimen Seriennummer? Ach ja, letzteres folgt einem Muster.

Edit: Na dann Thema erledigt ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

13.01.2013, 19:52

Statt Seriennummer solltest Du vielleicht ein ggf. ablaufendes von einem zentralen System signiertes Zertifikat nutzen, das auch den Public-Key des Spielers enthält. Das kann dann bspw. auch eine Email-Adresse oder einen Benutzernamen enthalten, so dass Du noch mehr Informationen dezentral zugänglich machen kannst. Das ist dann natürlich mehr als nur eine Seriennummer, aber ich denke wenn einem so eine Datei per Email zugesandt wird, reicht das vielleicht.

Werbeanzeige