A method of transmitting data to and receiving data at a client, comprising the steps of: (a) transmitting the data to the client, wherein the data is one of a plurality of temporally spaced segments of a work that has a temporal aspect or temporal payload data and wherein each segment is encrypted using an encryption key; (b) transmitting software code containing an algorithm from a security server to the client, the algorithm having a result that is a function of the state of the client, wherein the code contains a checksum calculation into which the client's program code and/or memory image is input, and wherein the checksum calculation includes in its input a random number; (c) executing the code at the client and returning the result comprising the calculated checksum to the security server or means associated with the security server; and wherein the client encrypts the random number with a public key of the security server, and the encrypted random number is transmitted to the security server or means associated with the security server with a request for the key necessary to decrypt the data; (d) determining whether the result is indicative of an unmodified client, wherein the security server or means associated with the security server decrypts the random number and uses it to encrypt the key, the security server or means associated with the security server uses the random number to perform its own calculation of the checksum, the security server or means associated with the security server then compares the calculated checksum received from the client with its own calculation of the checksum, and wherein if, and only if, the two compared checksum calculation values are equal it is determined that the result is indicative of an unmodified client, or wherein, if the two compared checksum calculation values are not equal, it is determined that the client has been tampered with; (e) wherein if it is determined that the result if indicative of an unmodified client, transmitting the encrypted key to the client, such that the client may decrypt the key; and (f) decrypting the data at the client using the key. (a) transmitting the data to the client, wherein the data is one of a plurality of temporally spaced segments of a work that has a temporal aspect or temporal payload data and wherein each segment is encrypted using an encryption key; (b) transmitting software code containing an algorithm from a security server to the client, the algorithm having a result that is a function of the state of the client, wherein the code contains a checksum calculation into which the client's program code and/or memory image is input, and wherein the checksum calculation includes in its input a random number; (c) executing the code at the client and returning the result comprising the calculated checksum to the security server or means associated with the security server; and wherein the client encrypts the random number with a public key of the security server, and the encrypted random number is transmitted to the security server or means associated with the security server with a request for the key necessary to decrypt the data; (d) determining whether the result is indicative of an unmodified client, wherein the security server or means associated with the security server decrypts the random number and uses it to encrypt the key, the security server or means associated with the security server uses the random number to perform its own calculation of the checksum, the security server or means associated with the security server then compares the calculated checksum received from the client with its own calculation of the checksum, and wherein if, and only if, the two compared checksum calculation values are equal it is determined that the result is indicative of an unmodified client, or wherein, if the two compared checksum calculation values are not equal, it is determined that the client has been tampered with; (e) wherein if it is determined that the result if indicative of an unmodified client, transmitting the encrypted key to the client, such that the client may decrypt the key; and (f) decrypting the data at the client using the key.