A computer-implemented method performed by data processing apparatus, the method comprising: receiving a first input to transfer a computer software application executing on a mobile device from a foreground state of the mobile device to a background state of the mobile device, wherein the computer software application is associated with application data; and in response to receiving the first input: - generating noise data based on the application data, comprising: -- generating a copy of the application data, and -- modifying the copy of the application data to generate the noise data, - executing an encryption mechanism on the application data using a first key resulting in a first authentication code associated with the application data, - executing the encryption mechanism on the noise data using a second key that is different from the first key resulting in a second authentication code associated with the noise data, - storing items of data including the application data, the noise data, and the first authentication code, receiving a second input to transfer the computer software application from the background state to the foreground state; and in response to receiving the second input: - requesting a key, - receiving the key, and - executing the encryption mechanism on each item of data associated with the application data using the received key, the executing resulting in an authentication code for each item of data associated with the application; - comparing each resulting authentication code with the first authentication code, - if a match is determined: -- transferring the computer software application from the background state to the foreground state and providing the application data; and -- discarding remaining stored items of data other than the application data. receiving a first input to transfer a computer software application executing on a mobile device from a foreground state of the mobile device to a background state of the mobile device, wherein the computer software application is associated with application data; and in response to receiving the first input: - generating noise data based on the application data, comprising: -- generating a copy of the application data, and -- modifying the copy of the application data to generate the noise data, - executing an encryption mechanism on the application data using a first key resulting in a first authentication code associated with the application data, - executing the encryption mechanism on the noise data using a second key that is different from the first key resulting in a second authentication code associated with the noise data, - storing items of data including the application data, the noise data, and the first authentication code, - generating noise data based on the application data, comprising: -- generating a copy of the application data, and -- modifying the copy of the application data to generate the noise data, -- generating a copy of the application data, and -- modifying the copy of the application data to generate the noise data, - executing an encryption mechanism on the application data using a first key resulting in a first authentication code associated with the application data, - executing the encryption mechanism on the noise data using a second key that is different from the first key resulting in a second authentication code associated with the noise data, - storing items of data including the application data, the noise data, and the first authentication code, receiving a second input to transfer the computer software application from the background state to the foreground state; and in response to receiving the second input: - requesting a key, - receiving the key, and - executing the encryption mechanism on each item of data associated with the application data using the received key, the executing resulting in an authentication code for each item of data associated with the application; - comparing each resulting authentication code with the first authentication code, - if a match is determined: -- transferring the computer software application from the background state to the foreground state and providing the application data; and -- discarding remaining stored items of data other than the application data. - requesting a key, - receiving the key, and - executing the encryption mechanism on each item of data associated with the application data using the received key, the executing resulting in an authentication code for each item of data associated with the application; - comparing each resulting authentication code with the first authentication code, - if a match is determined: -- transferring the computer software application from the background state to the foreground state and providing the application data; and -- discarding remaining stored items of data other than the application data. -- transferring the computer software application from the background state to the foreground state and providing the application data; and -- discarding remaining stored items of data other than the application data.