[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tolerant of plagiary?
On Sun, 21 Feb 1999, Darren Cook wrote:
> So go programmers have to try and make their important code less
> black-boxable. Some ideas:
> 1.Have it always look for data files in a hard-coded path name (not good
> for commercial programs; also hacker could alter that pathname).
> 2.The same but using the windows registry.
> 3.Have the user-interface code make a temporary file somewhere, that the
> playing code then looks for. The playing code also makes the temp files for
> later code to look for. This makes the two harder to split apart, and the
> appearance of these temp files reveal which program is running. But it also
> makes the program slightly slower.
> 4.Use a hardware key - these are sometimes used to stop illegal copying
> of expensive software.
>
> I'm sure a hacker could get round all of these, though it would mean he'd
> have to edit the playing code. Any more suggestions?
I thought about this problem once because it is a fun problem. Of course,
plagiarism itself is not fun.
Anyway, if I had made a computer go program I would probably insert a
secret "signature" into its game-playing algorithm. This signature could
be a specific reaction to a specific pattern. For example as follows: if
the first four stones black lays on the board (assuming the program plays
white) are in the four (1,1) points, the program begins to play its stones
to the center so that they form e.g. my initials there. Then, if my engine
were stolen, I could demonstrate that by playing against the program I
suspect of plagiarism, playing the first four stones to the corners and
then passing every move, waiting for the initials to appear.
This is an illustration of the approach:
X . . . . . . . . . . . . . . . . X
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . O . .
. . O . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . O O O . . . O . O . . . . . . .
. . O . O . . . O . O . . . . . . .
. . O . O . . . O . O . . . . . . .
. . O . O . . . O O O . . . . . . .
. . O O O . . . O . O . . . . . . .
. . O . O . . . O . O . . . . . . .
. . O . O . O . O . O . O . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . O . .
. . . . . . . . . . . . . . . . . .
X . . . . . . . . . . . . . . . . X
This works of course only if someone does not *really* reverse-engineer
the whole code and be able to rip those parts he or she wishes. But I
would be a funny countermeasure against lame rippers that just take the
whole algorithm.
Don't take it too seriously...
--
Antti Huima
SSH Communications Security Oy