1. A method for evaluating the security of at least one remote client, comprising: providing at least one executable program to be executed by said remote client, wherein said at least one executable program is one of a plurality of possible programs and wherein said at least one executable program provides an unpredictable result; receiving a result from said at least one executable program executed by said remote client; and determining whether said remote client has been corrupted based on an evaluation of a correctness of said unpredictable result, wherein said at least one executable program is randomly generated and wherein said evaluation of said unpredictable result includes comparing an expected time to an elapsed time between when said at least one executable program is provided to said client and when said result is received, wherein said expected time is based on an expected transmission time of said unpredictable result and an expected execution time by said at least one executable program to compute said unpredictable result.