First-Join-Needs-Time Protection
The main problem of griefers is, that they join often and with different nicknames.
A hard trick with some cryptographic implementation effort could be used to interchange time for a first time connect.
this trick is described below.
but there is one much simpler trick:
the server knows if its a new player or a player without a password who connects.
then the server should ask the player some questions the player has to answer in time.
if the player fails to answer the sequence or is too late then he is reset.
a sequence could be:
time in seconds question
0 what is 1+1
5 what is the nickname you used to join
10 please type yes and wait 30 seconds
30 please type go
if the user doesnt respond to each question within 10 seconds the sequence is reset and he is disconnected.
so the user has to spend his time on the machine answering some random questions.
if correct the user has to set his password and if he uses his username+password again this process is being skipped.
this would be very annoying for every new player, but if you have to do this process as a griefer many times you get sick.
considerations:
to make this work an admin has to be able to reset a player on ban so that this process has to be gone through again.
hard trick:
So if a user wants to connect to a server he hasnt connected before, he has to solve a high cpu intensive cryptographic question to connect.
After he has solved this, the client caches the answer to make a new connection faster next time.
So how to realize?
the question should rely on the following parameters:
the unique id of the client-machine (see my thread before), a unique id of the server (set in config file by admin), the players name.
So if a player changes his identity by name or computer or connects to a new server he has to offer his time.
How can we take time?
This could be a small e.g. DES or hash cracker or sth else, which should be choosen so that it takes about 1 minute on an i7 to run.
Considerations:
The user is able to go away from his machine and come back later.
A hard trick with some cryptographic implementation effort could be used to interchange time for a first time connect.
this trick is described below.
but there is one much simpler trick:
the server knows if its a new player or a player without a password who connects.
then the server should ask the player some questions the player has to answer in time.
if the player fails to answer the sequence or is too late then he is reset.
a sequence could be:
time in seconds question
0 what is 1+1
5 what is the nickname you used to join
10 please type yes and wait 30 seconds
30 please type go
if the user doesnt respond to each question within 10 seconds the sequence is reset and he is disconnected.
so the user has to spend his time on the machine answering some random questions.
if correct the user has to set his password and if he uses his username+password again this process is being skipped.
this would be very annoying for every new player, but if you have to do this process as a griefer many times you get sick.
considerations:
to make this work an admin has to be able to reset a player on ban so that this process has to be gone through again.
hard trick:
So if a user wants to connect to a server he hasnt connected before, he has to solve a high cpu intensive cryptographic question to connect.
After he has solved this, the client caches the answer to make a new connection faster next time.
So how to realize?
the question should rely on the following parameters:
the unique id of the client-machine (see my thread before), a unique id of the server (set in config file by admin), the players name.
So if a player changes his identity by name or computer or connects to a new server he has to offer his time.
How can we take time?
This could be a small e.g. DES or hash cracker or sth else, which should be choosen so that it takes about 1 minute on an i7 to run.
Considerations:
The user is able to go away from his machine and come back later.