Verifying device and application integrity
This disclosure relates to using trust tokens to verify the integrity of devices and applications from which data is received. In one aspect, a method includes receiving, from a client device, a request for one or more trust tokens. The request includes at least one of one or more device-level fraud detection signals obtained from the client device or data representing code of an application that initiated the request. The request also includes a respective nonce for each of the one or more trust tokens. A determination is made, based on at least one of the one or more device-level fraud signals or the data representing the code of the application, to issue the one or more trust tokens to the client device. Each trust token is generated using the nonce for the trust token. The one or more trust tokens are provided to the client device.
1 . A computer-implemented method comprising:
obtaining, by a client device, one or more trust tokens from a trust token system, wherein each of the one or more trust tokens are generated by the trust token system using a nonce received from the client device, and wherein the nonce for each trust token of the one or more trust tokens comprises a blinded nonce that is blinded using a blind signature scheme;
sending, by the client device and to the trust token system, a redemption request to redeem a trust token, the redemption request comprising the trust token and a public key of a domain to which a communication is being sent by the client device;
receiving, by the client device and from the trust token system, a signed redemption record comprising a set of data comprising the public key of the domain and a digital signature of the set of data; and
sending, by the client device, the communication with the signed redemption record to a computer of the domain.
2 . The computer-implemented method of claim 1 , wherein obtaining, by the client device, the one or more trust tokens comprises:
sending, by the client device, a request for the one or more trust tokens to the trust token system, wherein the request comprises the nonce for each of the one or more trust tokens; and
receiving, by the client device, the one or more trust tokens from the trust token system.
3 . The computer-implemented method of claim 2 , wherein the request for the one or more trust tokens comprises (i) device-level fraud detect signals for the client device, (ii) data related to an application of the client device, or (iii) both (i) and (ii).
4 . The computer-implemented method of claim 3 , wherein the data related to the application comprises a cryptographic hash of code of the application.
5 . The computer-implemented method of claim 2 , wherein each trust token of the one or more trust tokens is generated using the nonce for the trust token.
6 . The computer-implemented method of claim 2 , wherein sending, by the client device, the request for the one or more trust tokens to the trust token system comprises calling an application programming interface (API) of a trusted program of the client device.
7 . The computer-implemented method of claim 6 , wherein the trusted program comprises an operating system of the client device.
8 . The computer-implemented method of claim 1 , wherein each trust token of the one or more trust tokens comprises a blind signature of the blinded nonce.
9 . The computer-implemented method of claim 1 , wherein the trust token comprises an unblinded nonce corresponding to the blinded nonce and blind signature generated using the blinded nonce and the blind signature scheme.
10 . The computer-implemented method of claim 9 , wherein the trust token system sends the signed redemption request in response to validating the trust token using the unblinded nonce and the blind signature.
11 . A client device comprising:
one or more processors; and
one or more computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:
obtaining, by the client device, one or more trust tokens from a trust token system, wherein each of the one or more trust tokens are generated by the trust token system using a nonce received from the client device, and wherein the nonce for each trust token of the one or more trust tokens comprises a blinded nonce that is blinded using a blind signature scheme;
sending, by the client device and to the trust token system, a redemption request to redeem a trust token, the redemption request comprising the trust token and a public key of a domain to which a communication is being sent by the client device;
receiving, by the client device and from the trust token system, a signed redemption record comprising a set of data comprising the public key of the domain and a digital signature of the set of data; and
sending, by the client device, the communication with the signed redemption record to a computer of the domain.
12 . The client device of claim 11 , wherein obtaining, by the client device, the one or more trust tokens comprises:
sending, by the client device, a request for the one or more trust tokens to the trust token system, wherein the request comprises the nonce for each of the one or more trust tokens; and
receiving, by the client device, the one or more trust tokens from the trust token system.
13 . The client device of claim 12 , wherein the request for the one or more trust tokens comprises (i) device-level fraud detect signals for the client device, (ii) data related to an application of the client device, or (iii) both (i) and (ii).
14 . The client device of claim 13 , wherein the data related to the application comprises a cryptographic hash of code of the application.
15 . The client device of claim 12 , wherein each trust token of the one or more trust tokens is generated using the nonce for the trust token.
16 . The client device of claim 11 , wherein each trust token of the one or more trust tokens comprises a blind signature of the blinded nonce.
17 . One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:
obtaining, by a client device, one or more trust tokens from a trust token system, wherein each of the one or more trust tokens are generated by the trust token system using a nonce received from the client device, and wherein the nonce for each trust token of the one or more trust tokens comprises a blinded nonce that is blinded using a blind signature scheme;
sending, by the client device and to the trust token system, a redemption request to redeem a trust token, the redemption request comprising the trust token and a public key of a domain to which a communication is being sent by the client device;
receiving, by the client device and from the trust token system, a signed redemption record comprising a set of data comprising the public key of the domain and a digital signature of the set of data; and
sending, by the client device, the communication with the signed redemption record to a computer of the domain.
18 . The one or more non-transitory computer-readable media of claim 17 , wherein obtaining, by the client device, the one or more trust tokens comprises:
sending, by the client device, a request for the one or more trust tokens to the trust token system, wherein the request comprises the nonce for each of the one or more trust tokens; and
receiving, by the client device, the one or more trust tokens from the trust token system.
19 . The one or more non-transitory computer-readable media of claim 18 , wherein the request for the one or more trust tokens comprises (i) device-level fraud detect signals for the client device, (ii) data related to an application of the client device, or (iii) both (i) and (ii).
20 . The one or more non-transitory computer-readable media of claim 19 , wherein the data related to the application comprises a cryptographic hash of code of the application.