lichess.org
Donate

Anti cheating "indicators"

Hello,

I open a new thread on this forum to have an open discussion about what should be in your opinion the best "automated" or semi-automated cheating detection software, or at least the indicators to be
used into it. We can also talk about other techniques or countermeasures to be taken to avoid it as most as possible...

I think that cheating is really the biggest curse to be found on every chess playing server.

The nice point with this new website is that the creator seems to be willing quite hard to fight against this issue, and on an open basis.

Other sites such as the famous Playchess server have a detection software running and you can see from time to time (quite often actually) "red public messages" telling you that some user elo rating
has been deleted beacause he/her was caught using a chess engine. However, nobody but the authors knows how it works, and I suspect it is not working very well because I have a lot of games where I am
really suspicious on the opponent. It is for example impossible that every games are analysed on the server side as this would require too much computation power as chess engines are pretty intensive
CPU consummers. It is not done on a distributed basis either as the CPU load on the client side isn't growing up at all during games.

It's similar to cryprography... some system are based on keeping the "reciepe" secret, some others are based on a public but smart algorithm which I found a much better way.

I've already been thinking a little to this and I believe that there are several levels of action.

First, there are time cheaters which create artificial lag (I don't know how it works excatly but that exists for sure) which gives them big advantage on fast or bullet games. I think this can be
handled at server level with some kind of time seal and game cancelling in case the lag is too high. This kind of cheat is however not the biggest pain... Playing against an engine is.

One is of course to have a post-game or real time game analysis versus one or several engines and check the results...
This is not easy however as they are many engines which don't always give the same first or second move. Engins can be parameterized for intermediate strength which sometime makes small or big
blunders. There is the openning stage in which some players including me knows a little theory moves. Some players start using the engine only at a later stage on the game (usually preceeded by a
large "setup" time at a stage where the position is not necessarily so complex or already desesperate against a human player). The engines will not give the same best move depending on the time given
to them, their evaluation of the position will largely depends on the time given to evaluate and the hardware it was run onto... Complex task then that we may talk later.

Other indicators could in my opinion be based on :

- the time to move, but how to use this efficiently should be investigated
- the mouse displacement between moves
- the playing window togles / focus loss between moves

The last indicators could be used to find someone is using a software on the same computer (but not on a secondary device). I don't know if it's possible to evaluate it at web browser level... I mean
if the player is leaving the web browser window focus after each move... This should be a good clue that is looking something somewhere else.

the mose move indocator could propably be used too, if the player is using on a secondary device, it's mouse should remains exactly steady for a rather constant time between moves. Same as previous, I
don't know if it's "recordable" on a web application, but I've seen some web visits stats apps that have some click maps and mouse move maps so something should be possible I guess.

Another solution/countermeasure may be to have a few hidden bots (even using the name of a real registered human player could be a good idea) sent at supposed cheaters (or on a more random basis to
all players) and playing strong A.I. chess. Results against those should be good indicators, and loss not taken into account on the elo rating for example (you should also be informed you have been
playing a bot at the end of the game).

Of course, people getting convinced of cheating should have their elo reseted (and it's nice that points are given back here !).I my opinion, they should also be "stamped", I mean have an icon or sign
next to their name so that you know their past and avoid them if you want to.

Another idea still not perfect but all this is still discussion level right now could include having some kind af "no cheating" certification. For example, you could have a client level software
running on your computer (on a voluntary will basis) giving you access to another icon such as "trusted player". This client could for example perform some kind of computer process inspection, mouse
or windows focus recording, or even screenshots of the desktop at regular interval...
Of course there are some confidentialty inssues, but I really think that when I'm playing chess on the Internet, I would accept to have such a dogwatch running on my computer to make the other player
more confident he/she is not playing an engine. Of course if he/she is using a secondary device, this make it more difficult (there is however this mouse moves indicator idea and time to move that
could still give some clues)

Thank you for reading all that stuff, and maybe it could be a good idea to move this thread an a forum where there are some computer chess specialists such as talkchess... What do you think ?

Regards,

Mathieu
The various engine comparison is a good idea.

Tho perhaps it can be a tool for manual use on the server side, as thibault pointed out, once a game/player has been otherwise flagged for suspicion.

The basic algorithm can be used for this end, as well as player reports, using the various measures that you and others have pointed out before (taking too long in opening/endgame, improbable play, or
a vastly inconsistent record [ie. start off playing at a 1100 level for 100 games or whatever, then suddenly shoot up 500-600 pts, which we have seen here before)

the idea of client level software certification seems to be taking it a little too far, as well as being not necessarily foolproof (ie. if a player has 2 computers [2 mouses, etc.] then no amount of
software on one will be able to detect the other).

However, in this case the various engine comparison should still be able to detect such a cheat. And, I think it's important to maintain a default of trust (ie. don't make it certificate based, or
whatever). Ie. give them the benefit of the doubt until which point in time when it falls under suspicion.
or, for that matter, the engine comparison software can be distributed among us and anybody can do the analysis of games/players if suspicion arises.

That would lighten the load
My personnal "manual" method is currently by using the "error detection function" of the Fritz12 GUI which tells you when move are more than give threshold suboptimal.
This allows some flexibility as it do not relie on the move itself but on it's effect on the evaluation of the position. So if a cheater always choose first second moves you'll still see it...

Of course I do not consider it a perfect indicator... but if you have no errors at all for several games... I would not doubt too much making up my mind against someone.
right, and together with other circumstantial "evidence", ie. suspicious move times, etc., reasonable certainty can be had.

I also like the idea of having a random computer account playing suspicious players and seeing how they do.

We've found various cheaters here, and one of the things I have done is go back thru their games and see who they're losing to, for that same reason. Granted, not every cheater cheats 100% of the
time, so some discretion will have to be used.

There are many tools available, and together they offer considerable potential effectiveness against cheaters.

It won't be possible to catch them all. On the other hand, there's no substitute for the confidence that comes with winning one's own games. Cheaters cheat themselves.
@Matioupi we already have a tool against cheaters you may not be aware of. I count the number of window switches. Pondered with the game clock it gives me a suspicion level. Suspicious games appear
here http://en.lichess.org/trial/unresolved
But it's not very convenient to browse, so I also see the suspicion level directly on the game page. I've just granted mb and you the right to see it too. For example go to
http://en.lichess.org/hb0hqkt1 and look at the text at the right.

This detection algorithm based on window switch is useful but by no way reliable. If someone uses 2 computers, it won't be detected.
Also some players like to to something else on the computer while playing, which can cause false positives.

I don't like the idea of the clientside watchdog. On of the main point of lichess.org is that it's just a website. Nothing to install. And as mb says, one is innocent until proven guilty.

The serverside bot challenging people is an interresting idea but requires quite a lot of work on my side.

My favorite idea is a program that could be distributed to people and run on local machines, that takes a game and gives analysis. It allows everyone to contribute to the detection, save my server and
my time, and is the most reliable solution we can think of.
I'd like to contribute to this program even if my skills in typesafe languages is very modest. It would be awesome to use github for the code repository.

Thanks for your time guys!
to get the permission of viewing the suspicion level on game page, you must logout and login again.
Hi, thank you for the acess to that figure !

I've started to settle the framwork for a small utility to produce automated analysis of games. It will be written in C++, using multi-platform boost and fltk libraries for GUI, so it should be easy
to compile it for other plateforms than windows (i'm working on that one sorry...)

Main task will be to handle the UCI chess engine interactions and parse their outputs to further do whatever stats is required...
It would be nice if the pgn output from your site optionnlay feature the move time as it would be used to tell the engine how long to test each move... (would take real move time minus some constant
for input/output of the cheater)
That would make it easier than using the "infinite" mode of analisys and having to handle the additionnal stop interaction with the engine...
I can not really guarantee i will be fast to have something working...

This topic has been archived and can no longer be replied to.