Question

Je travaille sur un client < > jeu multijoueur sur serveur. L'authentification est effectuée sur le même serveur que toute la logique de jeu, etc. Cela signifie que mon algorithme de chiffrement du mot de passe d'authentification ne peut pas prendre trop de temps de calcul, car il retarderait toutes les autres actions requises. Si plusieurs personnes se connectaient en même temps, cela causerait un retard notable s’il est utilisé avec des algorithmes de cryptage très puissants, qui prennent beaucoup de temps à traiter.

C’est pourquoi je cherche un équilibre: un algorithme de chiffrement qui reste fiable et qui n’est pas facile à craquer mais qui est suffisamment rapide pour être exécuté sur le même serveur. Que recommandez-vous?

Était-ce utile?

La solution

Tout d'abord, pour effectuer l'authentification, vous n'avez pas besoin d'un " chiffré " mot de passe; le stockage d'un mot de passe crypté met vos utilisateurs en danger et je le décourage vivement. Les utilisateurs étant ignorants, ils utiliseront probablement le même mot de passe pour leur compte bancaire et votre jeu. Aidez-les à rester en sécurité en prenant bien soin de leur mot de passe.

Au lieu de cela, stockez un " hash " irréversible du mot de passe et un " sel " aléatoire. Il y a beaucoup de questions sur la façon de faire cela sur StackOverflow, et quelques réponses sont presque correctes.

La partie de votre question qui est unique est que vous êtes spécifiquement concerné par les performances du processus d'authentification. C'est une question intéressante, car un bon système de protection par mot de passe est en fait conçu pour être un peu lent. Cela consiste à vaincre un attaquant qui essaie de deviner un mot de passe dans un & "Offline &"; attaque, où il peut tester des milliards de mots de passe. Plus l'algorithme est lent, moins il peut faire de tentatives.

L'algorithme que je recommande pour la protection des mots de passe est en fait un algorithme de dérivation de clé appelé PBKDF2 (PBKDF1 fonctionnerait également), décrit dans PKCS # 5. L'un des paramètres de réglage de ces algorithmes est un nombre d'itérations. Vous pouvez profiler l'algorithme sur votre serveur et ajuster le nombre d'itérations jusqu'à ce que vous trouviez un nombre répondant à vos exigences de performances. Même mon ordinateur portable peut effectuer des milliers d'itérations par seconde, alors je commencerais probablement vers 2000 et je travaillerais à partir de là.

Si vous parlez de chiffrer tout le trafic entre le client et le serveur, utilisez AES. Il a été sélectionné en raison de sa vitesse, même si certains autres chiffreurs de la concurrence sont probablement plus sûrs. Plus précisément, utilisez une suite de chiffrement AES dans une connexion SSL.

La dépense d’une connexion sécurisée correspond à l’accord de clé (ou transport de clé) qui intervient lors de la configuration de la session. Le chiffrement en cours (et le calcul de l'intégrité des messages) n'ajoute que très peu de temps système.

Autres conseils

Pratiquement toutes les forces d’AES, utilisées correctement, répondront probablement à vos besoins. Vous pouvez également acheter une carte rigide pour accélérer radicalement l'AES.

Comparaison de la vitesse des algorithmes de chiffrement courants

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top