Topic: [SUGGESTION] RSA encrypted authentifications for 0.6
Hello,
Here is a suggestion for the 0.6 version of teeworlds, and perhaps a solution to cheat, including bots.
First, I must explain you how the RSA encryption works :
There are two keys, a public one, and a linked private one.
Using those keys and the Fermat's little Theorem :
Any message A you encrypt with the private key gives you an other message B.
If you encrypt this message B with the public key, then you find the message A.
One example :
Act 1
Romeo and Juliette wanna speak together. Romeo send mails to Juliette, but Juliette wants to be sure that the mail really comes from Romeo.
Then, Romeo choose one private key X, deduce the public key Y and broadcast Y.
Act 2
1.Romeo wants to send to Juliette : "I love you".
2.Romeo crypt the message with X and gets "t sDfé P3m".
3.Romeo send to Juliette "t sDfé P3m".
4.Juliette crypt "t sDfé P3m" with Y and gets "I love you".
The End !
Actually, Romeo is the client and Juliette the server.
The server wants to verify that the client who tries to authenificate isn't a bot.
The server send a random number A to the client.
The server knows the client isn't a cheater.
You can easily deduce Y when you know X (at its creating), and RSA encryption is very quick (just a modulo, a %) , and absolutely secure (used with blues cards).
Teeworlds part
As I suggest, Teeworlds devs will choose a private key X. They will deduce the public key Y and will broadcast the sources of the server, including that public key Y.
They will release too the sources of the client, but deleting the encryption function. Then, if you try to connect to a server with a hand-compiled client, you will be considered as "non-pure".
Then, here you choose.
You can choose to allow only validated clients, that could be quickly validated by sending the final sources to a moderator or by releasing them on a topic and asking. That means that devs will need to include a command in the server to allow non-validated clients for lan testing
You can choose to broadcast in the game (while pressing tab, or behind the name) who got a non-validated client
You can choose to do not validate any client, just to broadcast who got a pure client
And of course :
You can choose to throw my idea in the oblivion of some kind of lost dungeon and forget it for ever
Awaiting feedback,
Dunedune.