Systems and methods for distributed authentication of online identities
Through the composite token generated and encrypted by the issuer, the problem of difficulty in protecting online users' privacy and quickly verifying identities in the prior art is solved, and distributed and real-time authentication is realized, reducing the number of queries and network overhead, and improving security.
Patent Information
- Application Number
- CN202210704549.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-08-28
- Filing Date
- 2020-04-15
- Publication Date
- 2025-08-05
- Estimated Expiration
- 2040-04-15
AI Technical Summary
The prior art is difficult to quickly verify user identity while protecting online user privacy, and existing authentication methods are vulnerable to replay attacks and cannot verify user identity in real time and distributed manner.
The issuer generates a first-party token associated with the user and uses the private key for digital signature to generate multiple encrypted versions of composite tokens, which are only distributed to trusted third-party content item distributors. The verifier uses the corresponding public key to verify the validity of the token, and realizes distributed and real-time authentication.
Reduces the number of queries to external verification parties, reduces network overhead and verification time, and improves the real-time and security of authentication, preventing replay attacks.
Smart Images

Figure CN115242379B_ABST
Abstract
Description
[0001] This application is a divisional application of the Chinese invention patent with an application date of April 15, 2020, application number 202080002153.3, and invention name “System and method for distributed verification of online identity”.
[0002] CROSS-REFERENCE TO RELATED APPLICATIONS
[0003] This application claims priority to U.S. Patent Application No. 16 / 553,599, filed on August 28, 2019, and U.S. Provisional Application No. 62 / 840,204, filed on April 29, 2019, the contents of which are incorporated herein by reference. Background Art
[0004] In a computer network environment such as the Internet, users can interact with third-party content items. These third-party content items (e.g., advertisements) can be displayed on web pages associated with corresponding publishers. These users can provide information to publishers indicating their interactions with the third-party content items. Summary of the Invention
[0005] At least one aspect of the present disclosure provides a method for providing a digitally signed identity token, comprising: receiving, by an issuer, data including a first-party token from a client device, wherein the first-party token is associated with the issuer's domain and generated by the client device; digitally signing, by the issuer, the data using the issuer's private key to create a digitally signed token; encrypting, by the issuer, multiple instances of the digitally signed token to create multiple encrypted versions of the digitally signed token, wherein different instances of the encrypted versions of the digitally signed token are each encrypted with a different corresponding public key of a different corresponding verifier; generating, by the issuer, a composite token, wherein the composite token includes the multiple encrypted versions of the digitally signed token; and sending, by the issuer, the composite token including the multiple encrypted versions of the digitally signed token to the client device.
[0006] At least one aspect of the present disclosure also provides a system for providing a digitally signed identity token, comprising: one or more hardware processors configured to: receive data including a first-party token from a client device by an issuer, wherein the first-party token is associated with the issuer's domain and generated by the client device; digitally sign the data by the issuer using the issuer's private key to create a digitally signed token; encrypt multiple instances of the digitally signed token by the issuer to create multiple encrypted versions of the digitally signed token, wherein different instances of the encrypted version of the digitally signed token are each encrypted with a different corresponding public key of a different corresponding verifier; generate a composite token by the issuer, wherein the composite token includes the multiple encrypted versions of the digitally signed token; and send the composite token including the multiple encrypted versions of the digitally signed token to the client device by the issuer.
[0007] At least one aspect of the present disclosure also provides a method for verifying the identity of a user, comprising: receiving a composite token and a timestamp by a verifier, wherein the composite token includes multiple encrypted versions of a digitally signed token; determining by the verifier one of the multiple encrypted versions of the digitally signed token corresponding to the verifier, wherein the determination includes enumerating each of the multiple encrypted versions of the digitally signed token in the composite token; decoding by the verifier the determined encrypted version of the digitally signed token corresponding to the verifier by using the private key of the verifier; verifying by the verifier the validity of the digital signature of the digitally signed token using the public key corresponding to the issuer to generate a first-party token; and processing the first-party token by the verifier.
[0008] At least one aspect of the present disclosure also provides a system for verifying the identity of a user, comprising: one or more hardware processors configured to: receive a composite token and a timestamp by a verifier, wherein the composite token includes multiple encrypted versions of a digitally signed token; determine, by the verifier, one of the multiple encrypted versions of the digitally signed token corresponding to the verifier, wherein the determination includes enumerating each of the multiple encrypted versions of the digitally signed token in the composite token; decode, by the verifier, the determined encrypted version of the digitally signed token corresponding to the verifier by using the private key of the verifier; verify, by the verifier, the validity of the digital signature of the digitally signed token using a public key corresponding to an issuer to generate a first-party token; and process the first-party token by the verifier.
[0009] One technical problem addressed by the present disclosure is the difficulty in determining the identity of an online user while protecting the user's privacy. Furthermore, a third-party content item distributor may want to verify the identity of a user accessing the publisher's web page within a short, predetermined timeframe (e.g., 100 milliseconds). However, accurately verifying the user's identity would require multiple queries to an external source responsible for verifying the user's identity. This introduces unacceptable delays for some third-party content item distributor platforms.
[0010] The challenge addressed in the present disclosure is to provide a system that can verify the identity of online users in a distributed manner while minimizing the number of queries to third-party verifiers and at the same time maintaining the user's privacy only to trusted third-party content item distributors. Public keys are only issued to trusted third-party content item distributors, where the trusted third-party content item distributors are able to decrypt token data digitally signed by the trusted publisher to verify the user's token data in real time. This minimizes the number of queries that the verifier must make when verifying the token data, thereby reducing network overhead and verification time.
[0011] Cookie-based identity support does not support authentication by the issuer, nor does it prevent the duplication of browser sessions (also known as "replay attacks"). Thus, browser cookies are labels, not trusted identities of online users. Similarly, on devices such as connected TVs, device identifiers provide only a weak layer of protection. No other party can verify the authenticity of the device on behalf of the OEM. In these cases, replay attacks, in which browser sessions are copied to create fraudulent content item requests, cannot be detected, nor can identities be verified in real time as required by multiple third parties. Therefore, the technical solutions disclosed herein are significant improvements over existing authentication and fraud detection technologies.
[0012] The present disclosure discusses a system that includes an issuer that knows the legal identity of an online user and is responsible for authenticating and generating a digital signature corresponding to token data associated with a specific user. Through encryption, the issuer can control which third-party content distributor platforms (third-party verifiers) can process the user's token data. The system also includes verifying the parties authorized by the issuer to verify the token information associated with a specific user. Because the verification key is maintained locally by the verifier, the verification process can be performed in real time without further access to external parties. This allows real-time authentication distributed between the issuer and the third-party content item distribution platform.
[0013] At least one aspect relates to a method for providing a signed identity token. The method includes generating, by a participant, a first-party token associated with an issuer's domain. The method also includes sending, by the participant, the first-party token associated with the issuer's domain to an issuer. The method also includes receiving, by the issuer, the first-party token associated with the issuer's domain and creating a timestamp corresponding to the first-party token. The method also includes encrypting, by the issuer, the first-party token and the timestamp using the issuer's private key to create a digitally signed token. The method also includes creating, by the issuer, a plurality of digitally signed tokens, each of the plurality of digitally signed tokens corresponding to a respective verifier. The method also includes encrypting, by the issuer, each of the plurality of digitally signed tokens using a public key provided by the respective verifier. The method also includes generating, by the issuer, a composite token comprising each of the plurality of encrypted digitally signed tokens. The method also includes providing, by the issuer, the composite token to the participant responsible for generating the first-party token.
[0014] Another aspect of the present disclosure relates to a method for verifying the identity of a user. The method includes receiving a composite token and a timestamp by a verifier, wherein the composite token includes a plurality of encrypted digitally signed tokens. The method also includes enumerating, by the verifier, each of the plurality of encrypted digitally signed tokens in the composite token. The method also includes determining, by the verifier, which of the enumerated encrypted digitally signed tokens corresponds to the verifier. The method also includes decoding, by the verifier, the content of the encrypted signed token corresponding to the verifier using a private key belonging to the verifier to generate a signed token. The method also includes verifying, by the verifier, the validity of the digital signature of the signed token using a public key corresponding to the issuer to generate a valid first-party token. The method also includes processing, by the verifier, a valid first-party token generated from the signed token in response to the digital signature of the signed token being valid.
[0015] These and other aspects and implementations are discussed in detail below. The foregoing information and the following detailed description include illustrative examples of the various aspects and implementations and provide an overview or framework for understanding the nature and characteristics of the claimed aspects and implementations. The accompanying drawings provide illustration and further understanding of the various aspects and implementations and are incorporated into and constitute a part of this specification. BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The drawings are not intended to be drawn to scale. The same reference numbers and names in different drawings indicate the same elements. For clarity, not every component is labeled in every drawing. In the drawings:
[0017] Figure 1 is a block diagram depicting an example implementation of an environment for distributed real-time verification of online identities.
[0018] Figure 2 A block diagram depicting an example implementation of key manager 130 is shown, according to an illustrative implementation.
[0019] Figure 3 A flowchart of an example process for generation of a composite token is shown in accordance with an illustrative implementation.
[0020] Figure 4 A flow diagram of an example process for verification of the contents of a composite token is shown in accordance with an illustrative implementation.
[0021] Figure 5 Shown by Figure 2 The process shown generates a representation of the composite token.
[0022] Figure 6 Shown is the general architecture of an illustrative computer system that can be used to implement any of the computer systems discussed herein. DETAILED DESCRIPTION
[0023] The following is a more detailed description of various concepts related to methods, apparatuses, and systems for managing fraud resistant content item operations, and implementations of the methods, apparatuses, and systems for managing fraud resistant content item operations. The various concepts introduced above and discussed in more detail below can be implemented in any of a variety of ways, as the described concepts are not limited to any particular implementation.
[0024] Figure 1The present invention is a block diagram illustrating one implementation of an environment 100 for distributed, real-time verification of online identities. The environment 100 includes at least one client computing system 105. The client computing system 105 may include at least one processor (or processing circuit) and memory. The memory stores processor-executable instructions, which, when executed on the processor, cause the processor to perform one or more of the operations described herein. The processor may include a microprocessor, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or the like, or a combination thereof. The memory may include, but is not limited to, electronic, optical, magnetic, or any other storage or transmission device capable of providing program instructions to the processor. The memory may also include a floppy disk, a CD-ROM, a DVD, a magnetic disk, a memory chip, an ASIC, an FPGA, a read-only memory (ROM), a random-access memory (RAM), an electrically erasable programmable ROM (EEPROM), flash memory, optical media, or any other suitable memory from which the processor can read instructions. The instructions may include code from any suitable computer programming language. Client computing system 105 may include one or more computing devices or servers capable of performing various functions.
[0025] In some implementations, the client computing system 105 may include an application, such as a web browser, configured to generate a browser token. In such embodiments, the generated browser token may be associated with the domain of the issuer computer system 115 and contain information about the web browser executed by the client computing system 105. In some implementations, the client computing system 105 is configured to generate a device token. In such embodiments, the generated device token may be associated with the domain of the issuer computing system 115 and may contain device information about the client computing system 105. The client computing system 105 may be configured to send the generated token to the issuer computing system 115 via the network 110. In some implementations, the client computing system 105 is configured to communicate with the ad auction system via the content item network 155.
[0026] Network 110 can include a computer network such as the Internet, a local area network, a wide area network, a metropolitan area network, or other regional network, an intranet, a satellite network, other computer networks (such as a voice or data mobile phone communication network), and combinations thereof. In some implementations, either key distribution infrastructure 135 or content item network 155 can be the same as or part of network 110. Client computing systems 105 of environment 100 can communicate, for example, with at least one publisher computing system 115 via network 110. Network 110 can be any form of computer network that relays information between client computing systems 105 and publisher computing systems 115 and one or more content sources (e.g., web servers, ad servers, etc.). For example, network 105 can include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. The network 110 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or send data within the network 110. The network 110 may also include any number of hardwired connections and / or wireless connections. For example, the client computing system 105 may communicate wirelessly (e.g., via WiFi, cellular, radio, etc.) with a transceiver that is hardwired (e.g., via fiber optic cable, CAT5 cable, etc.) to other computing devices in the network 110.
[0027] The content item network 155 can include a computer network such as the Internet, a local area network, a wide area network, a metropolitan area network, or other regional network, an intranet, a satellite network, other computer networks (such as a voice or data mobile phone communication network), and combinations thereof. In some implementations, the content item network 155 can be the same as the network 110 or a portion of the network 110. The client computing systems 105 of the environment 100 can communicate, for example, with at least one verifier computing system 140 via the content item network 155. The content item network 155 can be any form of computer network that relays information between the client computing systems 105 and at least one verifier computing system 140 and one or more content sources (e.g., a web server, an advertising server, etc.). For example, the content item network 155 can include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. The content item network 155 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or transmit data within the content item network 155. The content item network 155 may also include any number of hardwired connections and / or wireless connections. For example, the verifier computing system 140 may communicate wirelessly (e.g., via WiFi, cellular, radio, etc.) with transceivers that are hardwired (e.g., via fiber optic cables, CAT5 cables, etc.) to other computing devices in the content item network 155.
[0028] The key distribution infrastructure network 135 can include a computer network such as the Internet, a local area network, a wide area network, a metropolitan area network, or other regional network, an intranet, a satellite network, other computer networks (such as a voice or data mobile phone communication network), and combinations thereof. In some implementations, the key distribution infrastructure 135 can be the same as or part of the network 110. The key custodian computing system 130 of the environment 100 can communicate, for example, with at least one issuer computing system 115 and / or at least one verifier computing system 140 via the key distribution infrastructure network 135. The key distribution infrastructure network 135 can be any form of computer network that relays information between the key custodian computing system 130 and at least one verifier computing system 140 or at least one issuer computing system 115 and one or more content sources (e.g., web servers, advertising servers, etc.). For example, the key distribution infrastructure network 135 can include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. The key distribution infrastructure network 135 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or transmit data within the key distribution infrastructure network 135. The key distribution infrastructure network 135 may also include any number of hardwired and / or wireless connections. For example, the key manager computing system 130 may communicate wirelessly (e.g., via WiFi, cellular, radio, etc.) with transceivers that are hardwired (e.g., via fiber optic cables, CAT5 cables, etc.) to other computing devices in the key distribution infrastructure network 135.
[0029] The issuer computing system 115 may include a server or other computing device operated by an issuer entity to authenticate token information (such as a browser token or device token received from the client computing system 105) and / or digitally sign the token information. The issuer computing device 115 may include a token signer component 120 and one or more encryption key components 125. In some implementations, the issuer computing system 115 may provide third-party content items or creatives (e.g., advertisements) for display on an information resource (such as a website or webpage that includes primary content). The issuer computing system 115 may also provide an information resource, such as a webpage that includes primary content. The issuer computing system 115 may include instructions or computing circuitry for generating a digital signature based on a token corresponding to information associated with the client computing system 105. The issuer computing system 115 may include instructions or computing circuitry for encrypting the digitally signed token corresponding to information associated with the client computing system 105. The issuer computing system 115 may generate a composite token based on the one or more encryption key components 125 and the digital signature generated by the token signer component 120. The issuer computing system 115 can generate a composite token by concatenating each of the encrypted digitally signed tokens into a single data structure. The issuer computing system 115 can provide the generated composite token to the client computing system 105 via the network 110. The issuer computing system 115 can receive, request, accept, or otherwise query both the token signer component 125 and / or the encryption key component 125 from the key custodian 130 via the key distribution infrastructure 135. In some implementations, the key custodian 130 can automatically send the token signer component 120 and / or one or more encryption key components 125 to the issuer computing system 115 via the key distribution infrastructure 135.
[0030] The verifier computing system 140 may comprise a server or other computing device operated by a content provider entity to provide verification of the authenticity of signed tokens received from the client computing system 105 via the content item network 155. In some implementations, the signed tokens received from the content item network 155 may be composite tokens. The verifier computing system 140 may comprise a token verifier component 145 and a decryption key component 150. The verifier computing system 140 may provide third-party content items or creatives (e.g., advertisements) for display on an information resource, such as a website or webpage that includes primary content on the content item network 155. The verifier computing system 140 may provide content items only in response to verification of a token associated with the client 105 using the decryption key component 150 and the token verifier component 145. One or more verifier computing systems 140 may receive composite tokens corresponding to the client computing system 105 via the content item network 155. The composite token received from the content item network 155 may include one or more encrypted digital signatures, one of which may correspond to one of the verifier computer systems 140. Each of the verifier computing systems 140 that receives the composite token may parse the composite token to enumerate a plurality of encrypted digitally signed tokens. Each of the verifier computing systems 140 may use the decryption key component 150 to decode the encrypted digitally signed token corresponding to the verifier computing system 140. If the decoded digital signature in the encrypted digitally signed token can be verified using the token verifier component 145, then the encrypted digitally signed token can be determined to correspond to the verifier computing system 140. The token verifier component 150 may verify the decoded digital signature using a public key corresponding to a private key maintained by the issuer computing system 115. In some embodiments, the verifier computing system 140 may receive, request, accept, or otherwise query the token verifier and one or more decryption keys from the key manager computing system 130 via the key distribution infrastructure 135. In some implementations, key custodian computing system 130 may automatically send token verifier component 145 and / or decryption key component 150 to verifier computing system 140 via key distribution infrastructure 135 .
[0031] The client computing system 105, the issuer computing system 115, the verifier computing system 140, and the key manager computing system 130 may include a processor and a memory, i.e., a processing circuit. The memory stores machine instructions, wherein the machine instructions, when executed on the processor, cause the processor to perform one or more operations described herein. The processor may include a microprocessor, an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or the like, or a combination thereof. The memory may include, but is not limited to, electronic, optical, magnetic, or any other storage or transmission device capable of providing program instructions to the processor. The memory may also include a floppy disk, a CD-ROM, a DVD, a magnetic disk, a memory chip, an ASIC, an FPGA, a read-only memory (ROM), a random access memory (RAM), an electrically erasable programmable ROM (EEPROM), an erasable programmable ROM (EPROM), flash memory, optical media, or any other suitable memory from which the processor can read instructions. The instructions may include code from any suitable computer programming language.
[0032] The client computing system 105, the issuer computing system 115, the verifier computing system 140, and the key custodian computing system 130 may also include one or more user interface devices. Generally, a user interface device refers to any electronic device (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.) that communicates data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, etc.) and / or converts sensory information received from a user into electronic signals. Depending on various implementations, the one or more user interface devices may be internal to the housing of the client computing system 105, the issuer computing system 115, the verifier computing system 140, and the key custodian computing system 130 (e.g., a built-in display, a microphone, etc.) or external to the housing of the client computing system 105, the issuer computing system 115, the verifier computing system 140, and the key custodian computing system 130 (e.g., a monitor connected to the client computing system 105, a speaker connected to the client computing system 105, etc.). For example, client computing system 105, issuer computing system 115, verifier computing system 140, and key custodian computing system 130 may include an electronic display that visually displays a web page using web page data received from one or more content sources via network 110, content item network 155, or key distribution infrastructure 135.
[0033] The issuer computing system 115 may include at least one server. For example, the issuer computing system 115 may include multiple servers located in at least one data center or server farm. In some implementations, the issuer computing system 115 may include information about the client computer system 105. The issuer computing system 115 may include at least one token signer component 120 and at least one encryption key component 125. The token signer component 120 and the encryption key component 125 may each include at least one processing unit, server, virtual server, circuit, engine, agent, appliance, or other logic device (such as a programmable logic array configured to communicate with other computing devices (e.g., the client computing system 105 or the key manager computing system 130) via the network 110 and / or the key distribution infrastructure 135).
[0034] The token signer component 120 and the encryption key component 125 may include or execute at least one computer program or at least one script. The token signer component 120 and the encryption key component 125 may be separate components, a single component, or part of the issuer computing system 115. The token signer component 120 and the encryption key component 125 may include a combination of software and hardware, such as one or more processors configured to execute one or more scripts.
[0035] The token signer component 120 may receive a first-party token from the client computing system 105 via the network 110. In some embodiments, the first-party token may be associated with the domain of the issuer computing system 115. In some embodiments, the first-party token may be generated by a browser executing on the client computing system 105. In some other embodiments, the first-party token may be a device token generated by the client computing system 105. In some embodiments, the token signer component 120 may receive a request to generate a first-party token from the client computing system 105 via the network 110. The request for the first-party token may include browser information corresponding to the browser executing on the client computing system 105. The request for the first-party token may include device information corresponding to the client computing system 105. In some embodiments, the token signer component 120 may generate the first-party token in response to the request from the client computing system 105. The first-party token may correspond to the domain of the issuer computing system 115. The token signer component 120 may receive a request for a composite token from the client computing system 105 via the network 110. In some embodiments, the token signer component 120 may receive a request for a digitally signed token from the client computing system 105 via the network 110. The token signer component 120 may generate a timestamp corresponding to the receipt of the first-party token from the client computing system 105. The timestamp may be generated based on a current time maintained by the issuer computing system 115. The token signer component 120 may maintain one or more private keys corresponding to the issuer computing system 115. In some embodiments, the one or more private keys are received from the key custodian computing system 130 via the key distribution infrastructure 135. The token signer component 120 may use the one or more private keys to generate a digitally signed first-party token. The token signer component 120 may provide the digitally signed first-party token to the encryption key component 125 to generate one or more encrypted digitally signed tokens. The token signer component 120 may provide the digitally signed first-party token to the encryption key component 125 to generate a composite token including the one or more encrypted digitally signed tokens.
[0036] Encryption key component 125 may receive a digitally signed first-party token from token signer component 120. In some embodiments, encryption key component 125 may receive a request for a composite token from client computing system 105 via network 110. In some embodiments, encryption key component 125 may receive a request for an encrypted, digitally signed token from client computing system 105 via network 110. Encryption key component 125 may maintain one or more encryption keys. In some embodiments, each of the one or more encryption keys is a public key corresponding to verifier computing system 140. In such embodiments, verifier computing system 140 may maintain a private key associated with the corresponding public key maintained by issuer computing system 115. The one or more encryption keys may be received from key custodian computing system 130 via key distribution infrastructure 135. In some embodiments, encryption key component 125 may receive a request from token signer component 120 to generate one or more encrypted, digitally signed first-party tokens. In such embodiments, encryption key component 125 may generate an encrypted, digitally signed token for each of the one or more encryption keys maintained by encryption key component 125. The encryption key component 125 can generate a composite token that includes the one or more encrypted digitally signed tokens. In such an embodiment, the encryption key component 125 can generate the composite token by concatenating each of the one or more encrypted digitally signed tokens into a single data structure. The encryption key component can provide the composite token to the client computing system 105. In some embodiments, the encryption key component can provide the one or more encrypted digitally signed tokens to the client computing system 105.
[0037] The verifier computing system 140 may include at least one server. For example, the verifier computing system 140 may include multiple servers located in at least one data center or server farm. In some implementations, the verifier computing system 140 may include information about the client computer system 105. The verifier computing system 140 may include at least one token verifier component 145 and at least one decryption key component 150. The token verifier component 145 and the decryption key component 150 may each include at least one processing unit, server, virtual server, circuit, engine, agent, appliance, or other logic device, such as a programmable logic array configured to communicate with other computing devices (e.g., the client computing system 105 or the key manager computing system 130) via the content item network 155 and / or the key distribution infrastructure 135.
[0038] The token validator component 145 and the decryption key component 150 may include or execute at least one computer program or at least one script. The token validator component 145 and the decryption key component 150 may be independent components, a single component, or part of the validator computing system 140. The token validator component 145 and the decryption key component 150 may include a combination of software and hardware, such as one or more processors configured to execute one or more scripts.
[0039] Decryption key component 150 may receive a composite token corresponding to client computing system 105 via content item network 155. The composite token may include one or more encrypted digitally signed tokens. In some embodiments, the composite token may include a first-party token and a timestamp, with the first-party token used to generate the encrypted digitally signed portion of the composite token. In such embodiments, decryption key component 150 may check whether the timestamp of the received composite token is recent to determine whether the composite token was sent as part of a replay attack. If the composite token is determined to be part of a replay attack, the decryption key component may ignore the composite token and halt further processing of the composite token by verifier computing system 140. Decryption key component 150 may receive a request from content item network 155 to verify the authenticity of the composite token. Decryption key component 150 may receive a request from content item network 155 to verify the one or more encrypted digitally signed tokens. Decryption key component 150 may maintain a decryption key. In some embodiments, the decryption key is a private key corresponding to verifier computing system 140. In such an embodiment, the issuer computing system 115 maintains a public key associated with a corresponding private key maintained by the verifier computing system 140 .
[0040] The decryption key may be received from the key manager computing system 130 via the key distribution infrastructure 135. The decryption key component 150 may enumerate each of the encrypted digitally signed tokens in the composite token received from the content item network 155. The decryption key component 150 may enumerate each of the encrypted digitally signed tokens received from the content item network 155. The decryption key component 150 may attempt to decode each of the enumerated encrypted digitally signed tokens using a private key maintained by the decryption key component 150 to generate a digitally signed token corresponding to the corresponding encrypted digitally signed token. In some embodiments, the decryption key component 150 may determine which of the enumerated digitally signed tokens corresponds to the verifier computing system 140. In such embodiments, the decryption key component 150 may use the private key to decrypt the encrypted digitally signed token corresponding to the verifier computing system 150 to generate a digitally signed token. The decryption key component 150 may provide one or more of the generated digitally signed tokens to the token verifier component 145.
[0041] The token verifier component 145 can receive one or more digitally signed tokens provided by the decryption key component 150. The token verifier component can receive a first-party token and a timestamp. The token verifier component 145 can maintain a public key corresponding to a private key maintained by the issuer computing system 115. In some embodiments, the token verifier component can receive the public key from the key manager computing system 130 via the key distribution infrastructure 135. The token verifier component 145 can verify the first-party token by verifying at least one of the digitally signed tokens using the public key. For example, the token verifier component 145 can use the public key to decrypt each of the digitally signed tokens received from the decryption key component 150 to generate one or more decoded token and timestamp pairs, each of the decoded token and timestamp pairs corresponding to the corresponding digitally signed token. The token verifier component 145 can then compare each of the token and timestamp pairs with the first-party token and timestamp received by the verifier computing system 140 as part of the composite token. If any one of the token and timestamp pairs matches the first-party token and timestamp received as part of the composite token, the first-party token is considered authenticated. A composite token may contain more than one encrypted digitally signed token, as each of the encrypted digitally signed tokens corresponds to a verifier computing system 140 authorized by the issuer computing system 115 to verify the authenticity of the first-party token. The digitally signed token can be used as a digital signature to verify the authenticity of the first-party token and timestamp. In some embodiments, the verifier computing system 140 may process the first-party token in response to verifying the authenticity of the first-party token.
[0042] Figure 2 A block diagram is shown depicting an example implementation of a key custodian computing system 130. The key custodian computing system 130 may include a key management service 205, a token signer binary 210, a token verifier binary 215, a verifier encryption key 220, and a verifier decryption key 225. In some implementations, the key management service 205 may be executed by an operating system of the key custodian computing system 130.
[0043] In some implementations, the key management service 205 can be an application programming interface provided by the operating system, wherein the issuer computing system 115 and the verifier computing system 140 can interface with the application programming interface to request token signer data and token verifier data. In some implementations, the issuer computing system 115 can authorize decryption keys to each verifier computing system 140 by interfacing with the key management service 205. In some implementations, the key management service can use the token signer binary 210 to provide the token signer component 120 private key to the issuer computing system 115. In such implementations, the private key can be provided to the issuer computing system 115 via the key distribution infrastructure 135. In some implementations, the key management service can use the token verifier binary 215 to provide the token verifier component 145 public key to the verifier computing system 140. In such implementations, the private key can be provided to the issuer computing system 115 via the key distribution infrastructure 135. The key management service 205 may authorize certain verifier computing systems 140 by generating specific verifier encryption keys 220 and verifier decryption keys 225. For example, the key management service 205 may receive a request from the issuer computing system 115 to authorize only certain verifier computing systems 140. The key management service 205 may then generate a verifier encryption key (e.g., a public key) and a verifier decryption key (e.g., a private key), each of the public / private key pairs corresponding to a verifier computing system 140 authorized by the issuer computing system 115. The key management service 205 may provide all of the public (encryption) keys to the encryption key component 125 of the issuer computing system 115 via the key distribution infrastructure 135. The key management service 205 may distribute each of the private (decryption) keys to the corresponding authorized verifier computing system 140.
[0044] Figure 3A flow chart of an example process 300 for generating an encrypted composite token is shown. The process 300 includes generating a first-party token 302, sending the first-party token to an issuer 304, digitally signing the first-party token using a private key 306, selecting an i-th verifier encryption key 308, creating an encrypted digitally signed token using the i-th verifier encryption key 310, determining whether i is equal to the number of verifier encryption keys 312, incrementing a register i 314, generating a composite token from the encrypted digitally signed token 316, and providing the composite token to a party responsible for generating the first-party token 318.
[0045] In further detail of step 302, the participant generates a first-party token. In some implementations, the first-party token can be associated with the domain of the issuer. In some implementations, the first-party token can include data from an application (e.g., a web browser). In some implementations, generating the first-party token includes device information from the device or system performing process 300. Generating the first-party token can include generating a request for an encrypted digitally signed token from the issuer. The issuer may also be referred to as an issuer. Generating the first-party token can include generating a request for a composite token from the issuer. In some implementations, generating the first-party token can include generating a timestamp. In such implementations, the timestamp can be a timestamp with a high resolution (e.g., millisecond or microsecond resolution, etc.).
[0046] In further detail of step 304, the party sends the first-party token to the issuer. Sending the first-party token to the issuer may include sending a timestamp generated by the party. In some embodiments, sending the first-party token may include sending a request for an encrypted digitally signed token to the issuer. In some embodiments, sending the first-party token may include sending a request for a composite token to the issuer, the composite token including at least one or more encrypted digitally signed tokens. Sending the first-party token may include sending a request for a digitally signed token from the issuer.
[0047] In further detail of step 306, the issuer digitally signs the first-party token sent in step 304 using the private key. In some embodiments, step 306 may include the issuer receiving the digitally signed token generated by the participant in step 302. In some embodiments, the issuer receiving the digitally signed token may include receiving the timestamp generated in step 302 or step 304. In some embodiments, step 306 of the process may concatenate the first-party token and the timestamp into a token-timestamp pair. In step 306, the issuer may digitally sign the first-party token using a digital signature algorithm (e.g., DSA, RSA, etc.). In some embodiments, the issuer may generate the digitally signed token by applying the digital signature algorithm to the token-timestamp pair. In some embodiments, a hash function (e.g., SHA-1, SHA-256, MD5, etc.) may be performed using the first-party token as input to generate a hashed token. In some embodiments, a hash function may be performed using the token-timestamp pair as input to generate a hashed token-timestamp pair. The issuer of process 300 may use a digital signature algorithm on the hashed token to generate a digitally signed token. In some embodiments, the issuer of process 300 may use a digital signature algorithm on the hashed token-timestamp pair to generate a signed token.
[0048] Process 300 includes selecting an i-th verifier encryption key 308. For example, this process stage can be performed by the issuer computing system 115 to encrypt a digitally signed token of all encryption keys maintained by the encryption key component 125. In some embodiments, step 308 can include receiving one or more encryption keys, wherein the one or more encryption keys each correspond to a verifier, where n is equal to the number of encryption keys. In some embodiments, the encryption keys can be received from a key manager (e.g., the key manager computing system 130). In some embodiments, the encryption keys are public keys corresponding to the respective verifiers. In a first iteration of the loop created by process 300, step 308 can select a first encryption key (i-th, i=1). It should be understood that the one or more encryption keys can be selected in any order.
[0049] In further detail at step 310, process 300 can create an encrypted digitally signed token using the i-th verifier encryption key. In some embodiments, process 300 uses an asymmetric encryption algorithm where the encryption key is a public key and the private key belongs to the verifier. Process 300 can create an encrypted digitally signed token by encrypting the digitally signed token generated in step 306 using the i-th encryption key selected in step 308. In some embodiments, the encryption key can be a private key of a public / private key pair where the public key is maintained by the verifier. In some embodiments, step 310 does not encrypt the digitally signed token generated in step 306, but simply returns the digitally signed token.
[0050] Process 300 includes creating an encrypted digitally signed token corresponding to all encryption keys maintained by the issuer. For example, encryption key component 125 of issuer computing system 115 can determine whether the currently created encrypted digitally signed token is the nth encrypted digitally signed token, where n corresponds to the number of encryption keys maintained by encryption key component 125. If not, encryption key component 125 can increment counter i 312 and select the next encryption key from the encryption keys maintained by encryption key component 125. In this manner, issuer computing system 115 can create n encrypted digitally signed tokens, where each of the n encrypted digitally signed tokens corresponds to a verifier, such as verifier computing system 140.
[0051] In further detail at step 316, process 300 may generate a composite token from the encrypted digitally signed tokens. The composite token may be generated by concatenating each of the encrypted digitally signed tokens into a single data structure. An example of such concatenation is Figure 5 In this illustrative embodiment, 506a-n represent each of the encrypted digitally signed tokens created in step 310, where each of the n digitally signed tokens corresponds to a verifier, such as one of verifier computing systems 140. In some embodiments, a composite token can be generated by concatenating each of the encrypted digitally signed tokens with the original first-party token and the timestamp into a single data structure. Figure 5 An example of the result of such a connection is shown in , where 502 is the original first-party token, 504 is the timestamp corresponding to the original first-party token, and 506a-n are each of the n encrypted digitally signed tokens. Figure 5The first-party token, timestamp, and encrypted digitally signed token are shown in a particular order, but it should be understood that any of the components may be excluded from the composite token and any of these elements may appear in the composite token in any order.
[0052] In further detail at step 318, process 300 provides the composite token to the party responsible for generating the first-party token. Process 300 can provide the composite token generated in step 316 to the party that generated the first-party token in step 302. For example, issuer computing system 115 can send the composite token generated by encryption key component 125 to client computing system 105 via network 110. In some embodiments, the issuer can provide the composite token to the party responsible for generating the first-party token via a network interface. For example, issuer computing system 115 can send the generated composite token via the network interface, and client computing system 105 can receive the composite token as part of a browser session.
[0053] Figure 4 A flow chart of an example process 400 for verifying the contents of a composite token is shown. The process 400 includes receiving a composite token 402, enumerating each of the encrypted digitally signed tokens in the composite token 404, selecting the i-th encrypted digitally signed token 408, decoding the encrypted digitally signed token to generate a digitally signed token 410, verifying the validity of the digitally signed token and generating a first-party token 412, determining whether the encrypted token corresponds to a validating party 414, determining whether i is equal to the number n of encrypted digitally signed tokens in the composite token 416, incrementing a register i 418, ignoring the composite token 420, and processing the valid first-party token 422.
[0054] In further detail at step 402, process 400 can receive a composite token that includes one or more encrypted digitally signed tokens. For example, one of verification computing systems 140 can receive the composite token from content item network 155. The composite token can include one or more encrypted digitally signed tokens. The composite token can also include a first-party token and a timestamp. Figure 5An example schematic diagram of a composite token is shown. Process 400 can be performed by a party that needs to verify the authenticity of a first-party token. In some embodiments, the composite token can be received as a single data structure. In some other embodiments, the composite token can be received as a series of data structures. For example, a validating party performing process 400 can receive encrypted digitally signed tokens one at a time and use them to create a composite token. In some embodiments, the first-party token can include a timestamp corresponding to the creation of the first-party token. In such an embodiment, the first-party token and the timestamp can be included in the composite token.
[0055] In further detail of step 404, process 400 enumerates each of the encrypted digitally signed tokens in the composite token received in step 402. In some embodiments, enumerating each of the encrypted digitally signed tokens includes extracting each encrypted digitally signed token. In such embodiments, the first party token and timestamp may also be extracted from the composite token. In such embodiments, the verifier performing process 400 may compare the timestamp in the composite token with a predetermined value. The verifier performing process 400 may compare the timestamp to check whether the composite token is recent and to defend against potential replay attacks. In some embodiments, the composite token may be a predetermined data structure known to the verifier performing process 400. In such embodiments, the verifier may extract and enumerate each of the encrypted digitally signed tokens based on a known offset in the data structure. In some embodiments, enumerating each of the encrypted digitally signed tokens may include assigning a numerical value to that corresponding to each of the encrypted digitally signed tokens. For example, referring to Figure 5 , each of the encrypted digitally signed tokens 506a-n can be assigned a numerical value corresponding to its order in the composite token. Also in this example, 506a can be assigned a value of 1, 506b can be assigned a value of 2, 506c can be assigned a value of 3, and so on. In some embodiments, the verifier performing step 404 can determine the number n of encrypted digitally signed tokens included in the composite token received in step 402.
[0056] Process 400 includes selecting the i-th encrypted digitally signed token 408. For example, this process stage can be performed by the verifier computing system 115 to decode each of the encrypted digitally signed tokens that comprise the composite token. In some embodiments, step 308 can include receiving a decryption key corresponding to the verifier performing process 400. In some embodiments, the decryption key can be received from a key manager (e.g., key manager computing system 130). In some embodiments, the decryption key is a private key corresponding to the verifier performing process 400. In such embodiments, the corresponding public key is maintained by the issuer responsible for generating the composite token. In the first iteration of the loop created by process 400, step 408 can select the first encrypted digitally signed token (i-th, i=1). It should be understood that one or more encryption keys can be selected in any order.
[0057] In further detail of step 410, process 400 decodes the selected encrypted digitally signed token to generate a digitally signed token. The verifier may decode the encrypted digitally signed token selected in step 408 and generate a digitally signed token. For example, one of the verifier computing systems 140 may use the decryption key component 150 to perform step 410 of process 400. For further example, the decryption key component 150 of the verifier computing system 140 performing process 400 may receive a decryption key from the key custodian computing system 130 via the key distribution infrastructure 135. In some embodiments, step 410 of process 400 may include receiving the decryption key from the key custodian. In some other embodiments, the decryption key may be maintained or received by the verifier performing process 400 prior to performing process 400. In some embodiments, decoding of the encrypted digitally signed token is performed using a decryption algorithm (e.g., elliptic curve, RSA, etc.).
[0058] In further detail of step 412, the digitally signed token is verified to generate a first-party token. In some embodiments, the digitally signed token is verified to generate a hash of the first-party token. The verifier performing process 400 may use a digital signature algorithm (e.g., elliptic curve, DSA, RSA, etc.) to decrypt the contents of the digitally signed token generated in step 410, wherein the decrypted contents of the digitally signed token are the first-party token and a timestamp, wherein the first-party token and timestamp can be used to verify the validity of the first-party token received in the composite token in step 402 of process 400. In some embodiments, the decrypted contents of the digitally signed token are a hash of the first-party token and the timestamp. In some embodiments, the digital signature algorithm uses the issuer's public key to decrypt the contents of the digitally signed token. For example, the key manager computing system 130 may distribute a private key to the issuer computing system 115 and a corresponding public key to the verifier computing system 140. The issuer computing system 115 may use process 300 to generate a composite key, wherein the composite key is provided to the client computing system 105. The client computing system 105 may provide the composite token to the content item network 155, which may provide the composite token to one or more verifier computing systems 140. The verifier computing system may attempt to process the first-party token contained in the composite token using process 400. In this example, the verifier computing system 140 may decrypt the digitally signed token using a public key corresponding to a private key maintained by the issuer computing system 115 in step 412 to generate the first-party token and a timestamp, or in some embodiments, a hash of the first-party token and the timestamp.
[0059] In further detail of step 414, process 400 determines whether the decrypted content of the digitally signed token corresponds to the verifier performing process 400. For example, a composite token may contain more than one encrypted digitally signed token. Each encrypted digitally signed token can only be decrypted by an authorized verifier. In this example, authorization is controlled by the distribution of decryption keys. Each decryption key can only successfully decrypt the content of at most one encrypted digitally signed token among the encrypted digitally signed tokens included in the composite token. The verifier can determine whether the encrypted digitally signed token corresponds to the verifier performing process 400 by checking whether the digital signature (i.e., the digitally signed token generated in step 410) matches the first-party token and timestamp included in the composite token received in step 402. The verifier can check whether the first-party token and timestamp generated in step 412 match the first-party token and timestamp received as part of the composite token. In some embodiments, step 412 can return a hash of the first-party token and timestamp. In such an embodiment, step 414 calculates a hash of the first-party token and timestamp received as part of the composite token using a cryptographic hash function (e.g., SHA-1, SHA-256, MD5, etc.) and compares the hash to the value returned from the decryption of the digitally signed token at step 412. If the two values match, then the encrypted digitally signed token corresponds to the verifier, and at step 422, the first-party token can be processed by the verifier. If the two values do not match, the verifier performing process 400 can determine whether the current encrypted digitally signed token is the nth encrypted digitally signed token 416. If not, the verifier performing process 400 can increment a counter i 418 and select the next encrypted digitally signed token 408. If the current encrypted digitally signed token is the nth encrypted digitally signed token, none of the encrypted digitally signed tokens in the composite token corresponds to a validator executing process 400, and the composite token is ignored 420.
[0060] In further detail at step 422, the verifier performing process 400 may process the verified first-party token. In some embodiments, the verification process 400 may be performed in real time without accessing an external server or database. In some embodiments, the processing of the first-party token includes consuming the data content of the token. For example, the token may contain browser information. By verifying the authenticity of the first-party token, the verifier may now associate the browser information contained in the first-party token with the party responsible for generating the first-party token (e.g., client computing system 105). The verification process 400 allows a verifier that may require very low latency token authentication to verify the authenticity of the first-party token within a predetermined amount of time (e.g., 100 milliseconds).
[0061] Figure 6 The overall architecture of an illustrative computer system 600 is shown, according to some implementations, which can be used to implement any of the computer systems discussed herein (including the client computing system 105, the issuer computing system 115 and its components (such as the token signer component 120 and the encryption key component 125), the verifier computing system 140 and its components (such as the token verifier component 145 and the decryption key component 150), and the key manager computing system and its components). The computer system 600 can be used to provide information for display via the network 110, the content item network 155, or the key distribution infrastructure 135. Figure 6 The computer system 600 includes one or more processors 620 communicatively coupled to a memory 625, one or more communication interfaces 605, and one or more output devices 610 (e.g., one or more display units) and one or more input devices 615. The processor 620 may be included in the client computing system 115. The processor 620 may be included in the issuer computing system 115 or other components of the issuer computing system 115, such as the token signer component 120 and the encryption key component 125. The processor 620 may be included in the verifier computing system 140 or other components of the verifier computing system 140, such as the token verifier component 145 and the decryption key component 150. The processor 620 may be included in the key custodian computing system 130 or other components of the key custodian computing system 130, such as the key management service 205.
[0062] exist Figure 6 In the computer system 600, the memory 625 may include any computer-readable storage medium and may store computer instructions (such as processor-executable instructions for implementing the various functions described herein for the corresponding system), as well as any data generated thereby or received via (multiple) communication interfaces or (multiple) input devices (if present). Figure 2The key custodian computing system 130 may include a memory 625 that stores information related to the verifier encryption key 220 and the verifier decryption key 225, among others. Figure 6 The processor(s) 620 shown in FIG. 6 may be used to execute instructions stored in the memory 625 and, in doing so, may also read from or write to the memory various information processed and / or generated according to the execution of the instructions.
[0063] Figure 6 The processor 620 of the illustrated computer system 600 may also be communicatively coupled to or control communication interface(s) 605 to send or receive various information in accordance with the execution of instructions. For example, the communication interface(s) 605 may be coupled to a wired or wireless network, bus, or other communication means, and thus may allow the computer system 600 to send information to or receive information from other devices (e.g., other computer systems). Although in Figure 6 Although not explicitly shown in the system 600, one or more communication interfaces facilitate the flow of information between components of the system 600. In some implementations, the communication interface(s) can be configured (e.g., via various hardware components or software components) to provide a website as an access portal to at least some aspects of the computer system 600. Examples of communication interface 805 include a user interface (e.g., a web page) through which a user can communicate with the data processing system 600.
[0064] For example, you can provide Figure 6 The computer system 600 is shown with output devices 610 to allow viewing or perception of various information in conjunction with the execution of instructions. For example, input device(s) 615 may be provided to allow a user to make manual adjustments, select, enter data, or interact with the processor in any of a variety of ways during the execution of instructions. Additional information related to a general computer system architecture that can be used with the various systems discussed herein is further provided.
[0065] The subject matter and implementations of the operations described in this specification may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware embodied on tangible media (including the structures disclosed in this specification and their structural equivalents), or in a combination of one or more thereof. Implementations of the subject matter described in this specification may be implemented as one or more computer programs (i.e., one or more components of computer program instructions) encoded on a computer storage medium for execution by a data processing device or for controlling the operation of the data processing device. Program instructions may be encoded on an artificially generated propagated signal (e.g., a machine-generated electrical, optical, or electromagnetic signal) generated to encode information for transmission to a suitable receiver device for execution by the data processing device. A computer storage medium may be or be included in a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more thereof. Furthermore, while a computer storage medium is not a propagated signal, a computer storage medium may include a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (eg, multiple CDs, disks, or other storage devices).
[0066] Features disclosed herein can be realized on a smart TV module (or a connected TV module, a hybrid TV module, etc.), wherein the smart TV module may include a processing module configured to integrate an internet connection with a more traditional TV program source (e.g., received via cable, satellite, air or other signals). The smart TV module may be physically incorporated into a TV, or may include separate equipment such as a set-top box, a blue-ray or other digital media player, a game console, a hotel television system and other accompanying devices. The smart TV module may be configured to allow viewers to search and find videos, movies, photos and other content on the Internet, on local cable TV channels, on satellite TV channels or stored on a local hard drive. A set-top box (STB) or a set-top unit (STU) may include an information appliance, wherein the information appliance may include a tuner and be connected to an external source of TV and signal, convert the signal into content that is then displayed on a TV screen or other display devices. The Smart TV module can be configured to provide a home screen or top-level screen that includes icons for a number of different applications, such as a web browser and multiple streaming services, connected cable or satellite media sources, other network "channels," and the like. The Smart TV module can also be configured to provide an electronic program guide to the user. A companion application for the Smart TV module can operate on the mobile computing device to provide the user with additional information about available programming, to allow the user to control the Smart TV module, and the like. In alternative implementations, these features can be implemented on a laptop or other personal computer, smartphone, other mobile phone, handheld computer, tablet PC, or other computing device.
[0067] The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0068] The terms "data processing apparatus," "data processing system," "user device," or "computing device" include all types of apparatuses, devices, and machines for processing data, including, for example, a programmable processor, a computer, a system on a chip, or multiples of the foregoing, or combinations thereof. The apparatus may include dedicated logic circuitry, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of these. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as network services, distributed computing, and grid computing infrastructures. The content request component 130, the content selection component 135, and the attribute component 150 may include or share one or more data processing apparatuses, computing devices, or processors.
[0069] A computer program (also referred to as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program may be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple collaborative files (e.g., files that store portions of one or more modules, subroutines, or code). A computer program may be deployed to execute on one computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communications network.
[0070] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can be implemented as, special purpose logic circuitry, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC).
[0071] Processors suitable for executing computer programs include, for example, both general-purpose and special-purpose microprocessors, and any one or more processors of any type of digital computer. Typically, a processor will receive instructions and data from a read-only memory or a random access memory, or both. The basic elements of a computer are a processor for performing actions according to instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include or be operably coupled to one or more mass storage devices (e.g., magnetic disks, magneto-optical disks, or optical disks) for storing data, to receive data from them or to transmit data to them, or both. However, a computer does not necessarily require such devices. In addition, a computer can be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive). Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, including, for example: semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0072] To provide for interaction with a user, implementations of the subject matter described in this specification may be implemented on a computer having a display device (e.g., a cathode ray tube (CRT), plasma, or liquid crystal display (LCD) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) through which the user can provide input to the computer. Other types of devices may also be used to provide for interaction with the user; for example, feedback provided to the user may include any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including sound, voice, or tactile input. In addition, a computer may interact with a user by sending documents to and receiving documents from a device used by the user; for example, by sending a web page to a web browser in response to a request received from the web browser on the user's client device.
[0073] Implementations of the subject matter described in this specification can be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with implementations of the subject matter described in this specification), or includes any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communications network). Examples of communications networks include local area networks (LANs) and wide area networks (WANs), interconnected networks (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0074] Computing systems such as issuer computing system 115, verifier computing system 140, client computing system 105, and key manager computing system 130 may include clients and servers. For example, issuer computing system 115, verifier computing system 140, client computing system 105, and key manager computing system 130 may include one or more servers in one or more data centers or server farms. The clients and servers are typically remote from each other and typically interact via a communication network. The client-server relationship arises through computer programs running on the respective computers and having a client-server relationship with each other. In some implementations, a server sends data (e.g., an HTML page) to a client device (e.g., to display data to a user interacting with the client device and to receive user input from the user). Data generated at the client device (e.g., a result of a user interaction) may be received at the server from the client device.
[0075] Although this specification includes a number of specific implementation details, these details should not be interpreted as limitations on any invention or the scope that may be claimed, but rather as descriptions of the features of a particular implementation of the systems and methods described herein. Certain features described in this specification in the context of separate implementations may also be implemented in combination in a single implementation. On the contrary, the various features described in the context of a single implementation may also be implemented separately in multiple implementations or in any suitable sub-combination. In addition, although features may be described above as working in certain combinations, and even initially claimed as such, in some cases, one or more features from the claimed combination may be deleted from the combination, and the claimed combination may be directed to a sub-combination or a variation of the sub-combination.
[0076] Similarly, while operations may be described in a particular order in the drawings, this should not be understood as requiring that the operations be performed in the particular order or sequential order shown, or that all illustrated operations be performed to achieve the desired results. In some cases, the actions recited in the claims can be performed in a different order and still achieve the desired results. Furthermore, the processes depicted in the drawings do not necessarily require the particular order or sequential order shown to achieve the desired results.
[0077] In some cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the above implementations should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. For example, the token signer component 120 and the encryption key component 125 can be part of the issuer computing system 115, a single module, a logical device having one or more processing modules, one or more servers, or part of a search engine.
[0078] Now that some illustrative implementations and implementations have been described, it will be apparent that the foregoing, which has been given by way of example, is illustrative and not restrictive. In particular, although many of the examples presented herein relate to specific combinations of method actions or system elements, those actions and those elements can be combined in other ways to achieve the same goals. Actions, elements, and features discussed in connection with only one implementation are not intended to be excluded from similar roles in other implementations or implementations.
[0079] The phraseology and terminology used herein are for descriptive purposes and should not be construed as limiting. The use of "including," "having," "comprising," "involving," "characterized by," and variations thereof herein is intended to encompass the items listed thereafter, their equivalents and additional items, and alternative implementations consisting solely of the items listed thereafter. In one implementation, the systems and methods described herein consist of one, each combination of more than one, or all of the described elements, actions, or components.
[0080] Any reference to the implementation or element or action of the system and method mentioned herein in the singular may also include an implementation that includes multiple of these elements, and any reference to the implementation or element or action mentioned herein in the plural may also include an implementation that includes only a single element. Reference in the singular or plural form is not intended to limit the currently disclosed system or method, its components, actions or elements to a singular or plural configuration. Reference to any action or element based on any information, action or element may include an implementation that the action or element is based at least in part on any information, action or element.
[0081] Any implementation disclosed herein may be combined with any other implementation, and references to "an implementation," "some implementations," "alternative implementations," "various implementations," "an implementation," etc. are not necessarily mutually exclusive, but are intended to indicate that a particular feature, structure, or characteristic described in connection with the implementation may be included in at least one implementation. These terms as used herein do not necessarily all refer to the same implementation. Any implementation may be combined, inclusively or exclusively, with any other implementation in any manner consistent with the aspects and implementations disclosed herein.
[0082] References to "or" may be construed as inclusive, so that any term described using "or" may mean any of a single described term, more than one described term, or all described terms.
[0083] Where technical features in the drawings, detailed description, or any claims are followed by reference numerals, the reference numerals are included for the sole purpose of enhancing the intelligibility of the drawings, detailed description, and claims. Therefore, neither the reference numerals nor their absence shall have any limiting effect on the scope of any claim element.
[0084] The system and method described herein can be implemented in other specific forms without departing from its characteristics. Although the examples provided herein relate to the display of the content of controlling information resources, the system and method described herein may include applications in other environments. The foregoing implementation is illustrative, not limiting, of the described system and method. Therefore, the scope of the system and method described herein is indicated by the appended claims rather than the preceding description, and changes falling within the meaning and scope of the equivalents of the claims are included therein.
Claims
1. A method for providing a digitally signed identity token, comprising: receiving, by an issuer from a client device, data comprising a first-party token, wherein the first-party token is associated with a domain of the issuer and generated by the client device; digitally signing the data by the issuer using the issuer's private key to create a digitally signed token; encrypting, by the issuer, multiple instances of the digitally signed token to create multiple encrypted versions of the digitally signed token, wherein different instances of the encrypted version of the digitally signed token are each encrypted with a different respective public key of a different respective verifier; generating, by the issuer, a composite token comprising the plurality of encrypted versions of the digitally signed token; and A composite token comprising the multiple encrypted versions of the digitally signed token is sent by the issuer to the client device.
2. The method according to claim 1, wherein The first-party token includes a device token generated based in part on device information of the client device.
3. The method according to claim 1, wherein The first-party token comprises a browser token generated based in part on browser information associated with the client device.
4. The method according to claim 1, wherein The data also includes a timestamp corresponding to a first party token generated by the client device.
5. The method according to claim 4, wherein The timestamp includes a high-resolution timestamp of at least 64 bits.
6. A system for providing a digitally signed identity token, comprising: One or more hardware processors configured to: receiving, by an issuer from a client device, data comprising a first-party token, wherein the first-party token is associated with a domain of the issuer and generated by the client device; digitally signing the data by the issuer using the issuer's private key to create a digitally signed token; encrypting, by the issuer, multiple instances of the digitally signed token to create multiple encrypted versions of the digitally signed token, wherein different instances of the encrypted version of the digitally signed token are each encrypted with a different respective public key of a different respective verifier; generating, by the issuer, a composite token comprising the plurality of encrypted versions of the digitally signed token; and A composite token comprising the multiple encrypted versions of the digitally signed token is sent by the issuer to the client device.
7. The system according to claim 6, wherein: The first-party token includes a device token generated based in part on device information of the client device.
8. The system according to claim 6, wherein: The first-party token comprises a browser token generated based in part on browser information associated with the client device.
9. The system according to claim 6, wherein: The data also includes a timestamp corresponding to a first party token generated by the client device.
10. The system according to claim 9, wherein: The timestamp includes a high-resolution timestamp of at least 64 bits.
11. A method for verifying the identity of a user, comprising: receiving, by a verifier, a composite token and a timestamp, wherein the composite token comprises a plurality of encrypted versions of the digitally signed token; determining, by the authenticating party, one of the plurality of encrypted versions of the digitally signed token corresponding to the authenticating party, wherein the determining comprises enumerating each of the plurality of encrypted versions of the digitally signed token in the composite token; decoding, by the authenticating party, an encrypted version of the digitally signed token determined to correspond to the authenticating party by using a private key of the authenticating party; verifying, by the verifier, the validity of the digital signature of the digitally signed token using a public key corresponding to the issuer to generate a first-party token; and The first party token is processed by the authenticating party.
12. The method according to claim 11, wherein Receiving, by the authenticator, the composite token and the timestamp includes receiving a high-resolution timestamp of at least 64 bits.
13. The method according to claim 11, wherein The first party token comprises a valid first party device token.
14. The method according to claim 11, wherein The first party token comprises a valid first party browser token.
15. The method according to claim 11, wherein Verifying, by the verifier, the validity of the digital signature of the digitally signed token using a public key corresponding to the issuer to generate a first-party token includes: The digitally signed token and the timestamp are compared to an unencrypted token in the composite token.
16. The method according to claim 11, wherein Verifying, by the verifier, the validity of the digital signature of the digitally signed token using a public key corresponding to the issuer to generate a first-party token includes: The timestamp of the composite token is compared to the timestamp of the digitally signed token.
17. A system for verifying the identity of a user, comprising: One or more hardware processors configured to: receiving, by a verifier, a composite token and a timestamp, wherein the composite token comprises a plurality of encrypted versions of the digitally signed token; determining, by the authenticating party, one of the plurality of encrypted versions of the digitally signed token corresponding to the authenticating party, wherein the determining comprises enumerating each of the plurality of encrypted versions of the digitally signed token in the composite token; decoding, by the authenticating party, an encrypted version of the digitally signed token determined to correspond to the authenticating party by using a private key of the authenticating party; verifying, by the verifier, the validity of the digital signature of the digitally signed token using a public key corresponding to the issuer to generate a first-party token; and The first party token is processed by the authenticating party.
Citation Information
Patent Citations
Dynamic token, trade information preset method and trade method based on dynamic password
CN103236009A
Local Device Authentication
CN107070863A