[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: computer-go: Authenticating the identity of a remote go-playing computer program



The  most important obstactle  is item 1,  getting all the programs to
play deterministically.  Some  programs change their moves after time,
and time can vary.  There are solutions but the programmers must agree
to implement them, and they have to be  implemented correctly.  In the
simplest  case, each program must have  a deterministic mode that they
"guarantee" will play   the  exact same  move,  given  the same  exact
initial  (before the game starts)  settings (and allowing for a random
seed.)  However, this might  defeat programs that use  their opponents
time to do calculatations.  There are solutions to  this too, but they
involve more protocol (yuck!!)

There  is also  the  case for hardware.     My program doesn't run  on
windows, although I know  most do.  But even if  it did, some programs
take advantage   of extra memory,  or  due to hardware   and operating
software bugs   might   even play  slightly  different  on   different
machines.

It  was already  mentioned that  programmers don't  like to send their
execuatables.  They can instead send an  md5 checksum but this doesn't
fully solve  the problem.  In the  case of disputes, the program STILL
has to sent to the organizers.

The only way I see  this working, and  maybe I'm being pessimistic, is
if the programs are required to be 100% deterministic given the intial
program settings and a random seed.  Additionally, the programs should
be  sent ahead of time  to  the organizers  for  verification and  ALL
winning programs should  be  verified whether  a dispute  is raised or
not.

If a program fails verification, is should not be viewed as a cheater,
because there are other reasons why this can happen.  In this case the
loser  could be  required  to pass the   verfication ritual, and if he
succeeds,  he is declared the  winner,  otherwise the original results
stands   (the  better cheater  wins!)   In  any case, the verification
procedure is simply a requirement to claim a win and no one is held at
fault nor is blame assigned.

Why do I think it's important to require all programs (even when there
is  no dispute) to  pass the  verification  process?  Because  it will
avoid all  the hassle  of  accusations and  proofs and disclaimers and
such.  We want to avoid the situation  where a program is suspected of
cheating, and has to "pass a test."   Instead, it is cleaner to simply
view passing the verification procedure  as a  requirement to claim  a
win.

To be honest, I don't think this is  very workable.  Assuming that you
can get everyone to send you their binaries and that they all agree to
create soundly deterministic provable programs, you still would have a
lot  of work involved in running   the verification procedures.  Is it
worth it?

But, I'll keep thinking about the  problem.  We have this same problem
in the  internet chess club but it's  reversed!  You never really know
when you are playing a human, or a computer and  humans very often use
computers for assistance.  I doubt there is a good clean solution.


Don





   I think John Aspinall and I are on the same page here. What we are trying to 
   achieve -- is to use the net to its maximal advantage to minimize the travel 
   of the contestants. All we need to truly verify is "the winners" since even 
   if the losers were spoofing the system it does not matter (it would be great 
   if the program beat a 7-dan human).

   So how do we go about verifying a program was not helped with human 
   intervention?

   1. For tournament purposes don't allow random play. Allow pseudo random play 
   based on an initial seed (to avoid predictability). For verification, the 
   seed is disclosed and the program will play identically.

   2. In order to avoid programming the game "after the fact", a copy must be 
   sent to a trusted party (prior to the tournament) which holds the 
   responsibility for verifying a programs authenticity. This can be as simple 
   as a binary comparison.

   3. The program must then duplicate its play in a controlled environment (for 
   verification) to the satisfaction of the Judges.

   OK, Shoot holes in it....

   Steve


   >From: John Tromp <John.Tromp@xxxxxxxxxxxxxxxxx>
   >Reply-To: computer-go@xxxxxxxxxxxxxxxxx
   >To: computer-go@xxxxxxxxxxxxxxxxx
   >Subject: Re: computer-go: Authenticating the identity of a remote 
   >go-playing computer program
   >Date: Tue, 5 Dec 2000 13:10:47 +0100
   >
   >On Mon, Dec 04, 2000 at 11:10:22PM +0000, Steve Pagliarulo wrote:
   > > We might be able to do this if we have the winners later "prove" it was
   > > their program that made the moves.
   >
   >That's easy: My program is
   >
   >for (;;)
   >   play(random legal move);
   >
   >and the random_number_generator includes such info as cachemisses,
   >disk seek latencies, ... (to make it REALLY random:)
   >
   >More subtle is:
   >
   >for (;;) {
   >   await opponent move;
   >   i = current_time_in_microseconds modulo number_of_legal_moves;
   >   play(i'th legal move);
   >}
   >
   >So, just what kind of proof do you desire?
   >

   _____________________________________________________________________________________
   Get more from the Web.  FREE MSN Explorer download : http://explorer.msn.com