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

Re: Programs that prove themselves.



Intuitively, this is akin to Godels incompleteness theorem.

Or read "What is the name of this book?" by Raymond Smulliyan.  A multitude
of interesting problems are posed, around the interaction of Knights,
Knaves and Normals.  Knights always tell the truth.  Knaves always lie. 
Normals sometimes tell the truth and sometimes lie.

A Normal can 'pretend' to be a Knight, because he is not constrained in his
answers, therefore, he can always answer as a Knight would.

Your program might be a Knight (i.e., constrained to always tell the truth)
but a 'Normal' program could always simulate your program.  It would
perform all the functions of your program with stolen code, but inside it
wouln't prove itself to itself.

It is only in the presence of some unforgeable distinguishing
characteristic recognized by a trustworthy *outside* observer, that a
bystander can tell Normal from Knight.

Sign your software and have users check the signature with a trusted
outside signature verification mechanism (e.g. a 'good' copy of PGP, or a
secure operating system).

I know this is not the information you are looking for.  I also know this
is not a pipe.

Scott Collins         | "Few people realize what tremendous power there
                      |  is in one of these things."     -- Willy Wonka
......................|................................................
BUSINESS.   voice:408.862.0540  fax:974.6094   [email protected]
Apple Computer, Inc.   1 Infinite Loop, MS 301-2C   Cupertino, CA 95014
.......................................................................
PERSONAL.   voice/fax:408.257.1746    1024/669687   [email protected]