A content distribution system comprising: a data owner device; a data producer device; a data consumer device; a content server; and a key server; the data owner device, operated by a data owner, is configured to issue an authentication token to the key server, wherein the authentication token includes one or more restrictions for a data consumer; the data consumer device, operated by the data consumer, is configured to download encrypted first content from the content server, wherein the content server received the encrypted first content from the data producer device; the key server is configured to receive, from the data producer device, encrypted second content associated with at least one key and at least one initialization vector, IV, used to encrypt the first content wherein the first content is owned by the data owner, receive a request from the data consumer device for access to key data specific to the encrypted first content, wherein the key data comprises the at least one key and the at least one IV, perform an authentication check with the data consumer device to ensure the one or more restrictions are satisfied, and download the key data to the data consumer device when the one or more restrictions are satisfied; the data consumer device is further configured to use the key data to decrypt the encrypted first content; and wherein the one or more restrictions include an attestation requirement, wherein the attestation requirement requires that the execution environment of the data consumer device is located in a certain geography location, and whereby a trustworthiness of a trusted execution environment, TEE, of the data consumer device is remotely attested between the key server and the data consumer device by: sending, by the key server, an attest X with nonce Y message to the data consumer device, wherein the X is attestation that the data consumer device has the TEE and the Y is a random nonce value, wherein a digest value of X is known by the key server; retrieving, by the data consumer device, a digest value of X by concatenating X and Y; signing, by the data consumer device, the digest value of X by using a private key which is only available in the TEE; and sending, by the data consumer device, the digest value of X, the nonce Y, a signature of the data consumer device, and an attestation certificate to the key server. a data owner device; a data producer device; a data consumer device; a content server; and a key server; the data owner device, operated by a data owner, is configured to issue an authentication token to the key server, wherein the authentication token includes one or more restrictions for a data consumer; the data consumer device, operated by the data consumer, is configured to download encrypted first content from the content server, wherein the content server received the encrypted first content from the data producer device; the key server is configured to receive, from the data producer device, encrypted second content associated with at least one key and at least one initialization vector, IV, used to encrypt the first content wherein the first content is owned by the data owner, receive a request from the data consumer device for access to key data specific to the encrypted first content, wherein the key data comprises the at least one key and the at least one IV, perform an authentication check with the data consumer device to ensure the one or more restrictions are satisfied, and download the key data to the data consumer device when the one or more restrictions are satisfied; the data consumer device is further configured to use the key data to decrypt the encrypted first content; and wherein the one or more restrictions include an attestation requirement, wherein the attestation requirement requires that the execution environment of the data consumer device is located in a certain geography location, and whereby a trustworthiness of a trusted execution environment, TEE, of the data consumer device is remotely attested between the key server and the data consumer device by: sending, by the key server, an attest X with nonce Y message to the data consumer device, wherein the X is attestation that the data consumer device has the TEE and the Y is a random nonce value, wherein a digest value of X is known by the key server; retrieving, by the data consumer device, a digest value of X by concatenating X and Y; signing, by the data consumer device, the digest value of X by using a private key which is only available in the TEE; and sending, by the data consumer device, the digest value of X, the nonce Y, a signature of the data consumer device, and an attestation certificate to the key server. sending, by the key server, an attest X with nonce Y message to the data consumer device, wherein the X is attestation that the data consumer device has the TEE and the Y is a random nonce value, wherein a digest value of X is known by the key server; retrieving, by the data consumer device, a digest value of X by concatenating X and Y; signing, by the data consumer device, the digest value of X by using a private key which is only available in the TEE; and sending, by the data consumer device, the digest value of X, the nonce Y, a signature of the data consumer device, and an attestation certificate to the key server.