Frage

Ich arbeite an einem Client <> Server-Multiplayer-Spiel. Die Authentifizierung wird auf dem gleichen Server wie alle Spiellogik getan usw. Das bedeutet, dass mein Passwort-Authentifizierung Verschlüsselungsalgorithmus nicht zu viel Rechenzeit nehmen, da es alle anderen erforderlichen Maßnahmen verzögern würde. Wenn viele Menschen zur gleichen Zeit anmelden würde, die eine merkliche Verzögerung verursachen würde, wenn mit sehr starken Verschlüsselungsalgorithmen verwendet, die viel Zeit in Anspruch nehmen.

Das ist, warum ich für ein Gleichgewicht suchen: ein Verschlüsselungsalgorithmus, der nach wie vor zuverlässig und nicht leicht zu knacken, aber schnell genug, um auf dem gleichen Server ausgeführt werden soll. Was empfehlen Sie?

War es hilfreich?

Lösung

Zu allererst Authentifizierung durchzuführen, brauchen Sie nicht eine eine „verschlüsselte“ Passwort; ein verschlüsseltes Passwort zu speichern bringt Ihre Benutzer gefährdet und ich entmutigen es stark. Da die Benutzer unwissend sind, sind sie wahrscheinlich das gleiche Passwort für ihr Bankkonto und Ihr Spiel zu verwenden. Helfen Sie ihnen, durch die gute Betreuung dieses Passwort sicher bleiben.

Stattdessen speichern eine irreversible „hash“ des Passworts und ein zufälliges „Salz“. Es gibt viele Fragen darüber, wie dies auf Stackoverflow zu tun, und ein paar ihrer Antworten sind fast richtig.

Der Teil Ihrer Frage, die einzigartig ist, ist, dass Sie sich speziell mit der Leistung des Authentifizierungsprozesses befassen. Das ist eine interessante Frage, denn ein gutes Passwort-Schutz-Schema eigentlich ein wenig zu langsam ausgelegt ist. Dies ist einen Angreifer zu besiegen, die ein Passwort in einem „offline“ Angriff zu erraten versucht, wo er Milliarden von Passwörtern testen. Je langsamer der Algorithmus, desto weniger Versuche er machen kann.

Der Algorithmus Ich empfehle Passwörter für den Schutz ist eigentlich eine Schlüsselableitungsalgorithmus PBKDF2 (PBKDF1 würde auch) genannt, die in PKCS # 5 beschrieben. Einer der Tuning-Parameter dieser Algorithmen ist eine Anzahl von Iterationen. Sie können den Algorithmus auf dem Server, Profil und die Anzahl der Iterationen einstellen, bis Sie eine Nummer, die Ihre Leistungsanforderungen erfüllt. Sogar mein Laptop Tausende von Iterationen pro Sekunde durchführen können, so würde ich wahrscheinlich mit etwa 2000 und arbeiten von dort aus starten.

Wenn Sie sprechen, tatsächlich über den gesamten Datenverkehr zwischen Client und Server zu verschlüsseln, verwenden AES. Es wurde wegen seiner Geschwindigkeit ausgewählt, obwohl einige andere Chiffren im Wettbewerb sind wahrscheinlich sicherer zu machen. Insbesondere eine AES-Chiffre-Suite in einer SSL-Verbindung verwenden.

Die Kosten für eine sichere Verbindung ist, die Schlüsselvereinbarung (oder Schlüssel Transport), was geschieht, wenn die Sitzung eingerichtet wird. Die laufende Verschlüsselung (und Nachrichtenintegrität Berechnung) fügt sehr wenig Aufwand.

Andere Tipps

Praktisch jede Stärke von AES, richtig eingesetzt, wird wahrscheinlich Ihre Bedürfnisse. Sie können auch eine hard Karte kaufen AES radikal zu beschleunigen.

Geschwindigkeit Vergleich von populären Kryptoalgorithmen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top