Enabling communication between applications on mobile operating systems

The system allows secure communication between applications on mobile devices by generating URLs to open and connect local servers, enhancing security and reducing application size through minimal SDK integration.

JP7744366B2Active Publication Date: 2025-09-25CAPITAL ONE SERVICES LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2022570348
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-05-18
Filing Date
2021-05-14
Publication Date
2025-09-25
Estimated Expiration
2041-05-14

AI Technical Summary

Technical Problem

Mobile operating systems restrict communication and data exchange between applications registered with different developers, limiting legitimate and secure data transfer.

Method used

A first application generates a URL to open a second application, which starts a local server on a device port, and exchanges data through a connection established using a second URL specifying the port, with authentication and encryption to enhance security.

Benefits of technology

Enables secure data transfer between applications without manual entry, improving device and data security while reducing application size by requiring minimal SDK integration.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007744366000001
    Figure 0007744366000001
  • Figure 0007744366000002
    Figure 0007744366000002
  • Figure 0007744366000003
    Figure 0007744366000003
Patent Text Reader

Abstract

A system, method, and computer-readable medium for communication between applications in a mobile operating system. A first application may receive a request for data from a second application. The first application may generate a first URL to the second application, where a parameter of the first URL includes an identifier of the first application. The mobile operating system may access the first URL to open the second application. The second application may verify account credentials and start a server on a port. The second application may generate a second URL to the first application, where a parameter of the second URL includes the port. The operating system may access the second URL to open the first application. The first application may establish a connection with the server using the port specified in the second URL and receive data from the second application via the connection with the server.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Related Applications This application claims priority to U.S. utility application Ser. No. 16 / 876,549, entitled "Enabling Communication Between Applications on a Mobile Operating System," filed May 18, 2020, the contents of which are incorporated herein by reference in their entirety.

[0002] Technical Field TECHNICAL FIELD Embodiments herein relate generally to computing platforms, and more particularly to enabling communication between applications in a mobile operating system. [Background technology]

[0003] Some mobile operating systems restrict communication between two or more applications running on the same device. For example, some mobile operating systems may prevent a first application from communicating directly with a second application. Similarly, some mobile operating systems may restrict data exchange between such applications. Doing so may unnecessarily restrict legitimate and secure communication between applications. Summary of the Invention

[0004]

[0003] Embodiments disclosed herein provide a system, method, product, and computer-readable medium for communication between applications on a mobile operating system. In one example, a first application running on a processor of a device may receive a request for data from a second application on the device. The first application may generate a first URL directed to the second application. A parameter of the first URL may include an identifier of the first application. The mobile operating system running on the device may access the first URL to open the second application. The second application may verify account credentials and start a server on a port to run on the device. The second application may generate a second URL directed to the first application, the parameter of the second URL including the port. The operating system may access the second URL to open the first application. The first application may establish a connection with the server using the port specified in the second URL and receive data from the second application via the connection with the server. [Brief explanation of the drawings]

[0005] [Figure 1A] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 1B] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 1C] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 1D] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 1E] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 1F] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 2A] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 2B] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 2C] 1 illustrates an embodiment of a system for enabling communication between applications in a mobile operating system. [Figure 3A] 1 illustrates an embodiment for enabling communication between applications in a mobile operating system. [Figure 3B] 1 illustrates an embodiment for enabling communication between applications in a mobile operating system. [Figure 3C] 1 illustrates an embodiment for enabling communication between applications in a mobile operating system. [Figure 4] 1 illustrates one embodiment of a first logic flow. [Figure 5] 10 illustrates one embodiment of a second logic flow. [Figure 6A] 1 shows an example of a contactless card. [Figure 6B] 1 shows an example of a contactless card. [Figure 7] 1 illustrates an embodiment of a computing system. DETAILED DESCRIPTION OF THE INVENTION

[0006]

[0003] Embodiments disclosed herein provide techniques for secure communication between two or more applications in a mobile operating system (OS) that restricts communication between applications registered with different developers. Generally, a first application running on a device may benefit from data provided by a second application on the device. For example, the first application may be a merchant application registered with a merchant on the OS, and the second application may be an application provided by a financial institution registered with the financial institution on the OS. In such an example, a user of the merchant application may request data from the financial institution application, such as payment information, personal name information, etc., to be used in the merchant application. In response to the request, the merchant application may generate a first uniform resource locator (URL) directed to the financial institution application. A parameter of the first URL may include an identifier of the merchant application.

[0007] The merchant application may then instruct the mobile OS to open or otherwise access the first URL, which causes the mobile OS to open a financial institution application on the device. The financial institution application may then start a local server in the OS that is accessible only to applications running on the mobile device. The local server is started on a port and may be a Transmission Control Protocol / Internet Protocol (TCP / IP) server or other type of server (e.g., a Hypertext Transfer Protocol (HTTP) server). In some embodiments, the financial institution application may receive authentication credentials for an account at the financial institution before starting the server. Additionally and / or alternatively, before starting the server, the financial institution application may receive encrypted data from a contactless card associated with the account, send the encrypted data to an authentication server, and receive confirmation from the authentication server that the encrypted data was verified.

[0008] The financial institution application may generate a second URL directed to the merchant application. The second URL may be based at least in part on an identifier of the merchant application specified as a parameter of the first URL. The second URL may further specify a port of the local server as a parameter. The financial institution application may further register the local server and / or the financial institution application with the OS as a background task so that the local server and / or the financial institution application continue to run in the background of the OS while other applications (e.g., the merchant application) run in the foreground of the OS. The financial institution application may instruct the mobile OS to open or otherwise access the second URL, which causes the OS to open the merchant application in the foreground of the OS.

[0009] Once opened, the merchant application may identify the port of the local server specified in the second URL and establish a connection with the local server at the specified port of the local interface (e.g., a local loopback IP address). In some embodiments, the merchant application may provide a certificate that can be validated by the server as part of the connection establishment. Additionally and / or alternatively, the merchant application may provide a token that can be validated by the server as part of the connection establishment. Once the connection is established, the financial institution application may exchange data with the merchant application over the connection, and vice versa. For example, the financial institution application may provide account details to an authenticated account holder (e.g., payment card number, expiration date, card verification value (CVV), address information, etc.). In such an example, the merchant application may auto-populate a form with the received data, allowing the user to complete a purchase or other operation using the received data. More generally, any number and types of data may be exchanged over the connection.

[0010] Advantageously, the mobile OS may restrict access to local servers by external entities, thereby improving device and data security. Additionally, securely receiving payment data from a financial institution application increases the security of the payment data. For example, a user is not required to manually enter data, potentially compromising data security. Furthermore, in some embodiments, a financial institution may provide a framework (e.g., a software development kit (SDK)) that includes functionality necessary to perform the operations disclosed herein. This allows a third-party application (e.g., a merchant application) to integrate only the functionality it needs without requiring the full SDK and / or framework required to perform the operations disclosed herein. For example, by providing the merchant application with one or more APIs that can be used for data exchange, the SDK may reduce the size of the merchant application compared to including the full code base of the financial institution application in the merchant application to provide the functionality required for the merchant application.

[0011] With general reference to the notation and nomenclature used herein, one or more portions of the detailed descriptions which follow may be presented in terms of program procedures executed on a computer or network of computers. These procedural descriptions and representations are used by those skilled in the art to most effectively convey the substance of their work to others skilled in the art. A procedure is herein, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. These operations are operations requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic, or optical signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It is sometimes convenient, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.

[0012] Further, these operations are often referred to in terms, such as adding or comparing, that are commonly associated with mental operations performed by a human operator. However, no such capability of a human operator is necessary, or desirable in most cases, for any of the operations described herein that form part of one or more embodiments. Rather, these operations are machine operations. Useful machines for performing the operations of the various embodiments include digital computers selectively activated or configured by a computer program stored therein and written in accordance with the teachings herein, and / or include specially constructed apparatus or digital computers for the required purposes. Various embodiments also relate to apparatus or systems for performing these operations. These apparatus may be specially constructed for the required purposes. The required structure for these various machines will be apparent from the description given.

[0013] Reference is now made to the drawings. Like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. However, it may be apparent that novel embodiments may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form to facilitate description thereof. The intention is to cover all modifications, equivalents, and alternatives within the scope of the claims.

[0014] 1A illustrates a schematic diagram of an exemplary system 100 consistent with disclosed embodiments. As shown, system 100 includes one or more mobile computing devices 110. Mobile device 110 is representative of any type of network-enabled computing device that runs a mobile operating system, such as a smartphone, tablet computer, wearable device, laptop, portable gaming device, etc. Mobile device 110 may include a processor 101 and memory 111. Processor 101 may be any computer processor, including, but not limited to, AMD® Athlon®, Duron®, and Opteron® processors, ARM® application, embedded, and secure processors, IBM® and Motorola® DragonBall® and PowerPC® processors, IBM and Sony® Cell processors, Intel® Celeron®, Core®, Core(2) Duo®, Itanium®, Pentium®, Xeon®, and XScale® processors, and similar processors. Processor 101 may also employ dual microprocessors, multi-core processors, and other multi-processor architectures.The memory 111 may include various types of computer-readable storage media in the form of one or more high-speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), double data rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory (e.g., one or more flash arrays), polymer memory such as ferroelectric polymer memory, ovonic memory, phase-change or ferroelectric memory, silicon oxide silicon nitride oxide (SONOS) memory, magnetic or optical cards, arrays of devices such as redundant array of independent disks (RAID) drives, solid-state memory devices (e.g., USB memory, solid-state drives (SSDs), and other types of storage media suitable for storing information).

[0015] As shown, the memory 111 of the mobile device 110 includes an instance of a mobile operating system (OS) 112. Exemplary mobile operating systems 112 include Android® and iOS® mobile operating systems. As shown, the OS 112 includes an account application 113 and one or more other applications 114. The account application 113 allows a user to perform various account-related operations, such as activating a payment card, viewing an account balance, purchasing items, and processing payments. In some embodiments, a user may authenticate using authentication credentials to access certain features of the account application 113. For example, the authentication credentials may include a username (or login) and password, biometric credentials (e.g., fingerprint, Face ID, etc.), etc. The other applications 114 are representative of any type of computing application, such as a web browser, a merchant application, a shopping application, a delivery service application, a ride-sharing application, a messaging application, a word processing application, a social media application, etc. For example, a first of the other applications 114 may be a merchant application provided by a merchant for purchasing goods, services, or any other type of item. As another example, a second one of the other applications 114 may be a ride-sharing application that allows a user to arrange and pay for transportation services. As yet another example, a third one of the other applications 114 may be a delivery service application that allows a user to purchase food for delivery.

[0016] Due to restrictions imposed by OS 112, applications registered (or assigned) to different developers (or entities) may not be able to communicate and / or exchange data. For example, with such restrictions, account application 113 (registered as a developer with a financial institution) may not be able to communicate and / or exchange data with other applications 114 (registered with an entity other than the financial institution). Similarly, a first one of the other applications 114 (registered with a first entity) may not be able to communicate with other ones of the other applications 114 (registered with a second entity different from the first entity). Registration of an application may occur when the application is submitted to an application store associated with the provider of OS 112. Advantageously, however, embodiments disclosed herein provide techniques that securely enable communication and / or data exchange between applications registered with different developers (e.g., account application 113 and one of the other applications 114, and / or any two of the other applications 114).

[0017] FIG. 1B illustrates an embodiment in which application 114-1 receives a request to communicate with account application 113. For example, application 114-1 may be an application registered with (or assigned to) a merchant. In such an example, a user may select one or more items to purchase via application 114-1. During the checkout process, application 114-1 may give the user the option to provide payment and / or personal information using account application 113. The user may then accept the option, thereby directing application 114-1 to communicate with account application 113 to receive data. In response to the request, application 114-1 may generate URL 125. URL 125 may be directed to account application 113. URL 125 may further include a parameter indicating that application 114-1 generated URL 125. URL 125 may be a universal link or any type of URL. The parameter may be any identifier suitable for uniquely identifying application 114-1, such as a unique identifier, a token, or a URL string. For example, URL 125 may be "capitalone: / / ?appid=merchantapp," where the "capitalone: / / " portion is directed to an instance of account application 113 on device 110 and "appid=merchantapp" is an identifier for application 114-1 generating URL 125. In some embodiments, the parameters are encrypted by application 114-1 and decrypted by account application 113 upon receipt.

[0018] In some embodiments, application 114-1 uses an application programming interface (API) of OS 112 to determine whether URL 125 is valid (e.g., to indicate whether the application targeted by URL 125 is installed on device 110). For example, OS 112 may provide a “canOpenURL” API that indicates whether a URL provided as input to the API is valid. Typically, an application developer may register one or more URLs with a provider of OS 112 when submitting an application to an application store. Doing so may facilitate verification by the API provided by the OS. In such an example, application 114-1 may provide URL 125 (and / or the portion of URL 125 that points to account application 113) to the API, which indicates whether account application 113 is installed on the device and can be opened using URL 125. Doing so enhances security by verifying that the correct application is installed and by preventing attempts by third parties to provide applications masquerading as account application 113. In the latter case, third-party applications may not register with the URL provided as input to the API, thereby preventing masquerading attempts. In such an example, if the API returns an invalid response, accessing URL 125 may cause OS 112 to launch a web browser directed to a website associated with the entity registering account application 113 (e.g., a financial institution's website and / or an application store from which account application 113 may be downloaded).

[0019] Next, application 114-1 and / or OS 112 may access, open, or otherwise follow URL 125, thereby opening account application 113 in the foreground of OS 112. FIG. 1C illustrates an embodiment in which account application 113 is opened in response to accessing URL 125. In response, account application 113 may optionally receive authentication credentials for the account. Additionally and / or alternatively (and as discussed in more detail with reference to FIGS. 2A-2C), account application 113 may optionally initiate verification of encrypted data generated by the contactless card. Next, account application 113 may start local server 115 for execution on mobile device 110. Local server 115 may be any type of server, such as a TCP / IP server, an HTTP server, a Hypertext Transfer Protocol Secure (HTTPS) server, a streaming server, etc. However, only local applications (e.g., applications running on mobile device 110) may access local server 115. The OS 112 may restrict attempts to access the local server 115 from external sources (e.g., over a network). The account application 113 may start the local server 115 on a specific port number. The account application 113 may select the port according to any feasible selection scheme, such as randomly generating a port number or using a predetermined port number.

[0020] 1D illustrates an embodiment in which account application 113 generates URL 126. URL 126 may be directed to application 114-1 and may include the port number of local server 115. For example, URL 126 may be "merchantapp: / / ?port=2080," where the "merchantapp: / / " portion is directed to application 114-1 and the "port=2080" portion indicates that local server 115 is open on port 2080. Account application 113 determines the portion of URL 126 directed to application 114-1 based on the identifier of application 114-1 specified in URL 125. In some embodiments, similar to URL 125, account application 113 makes an API call to OS 112 to determine whether URL 126 is valid before accessing URL 126.

[0021] More generally, URL 126 may include any parameters sufficient to establish a connection to local server 115 on a selected port. In some embodiments, account application 113 may encrypt the port number or any additional parameters of URL 126, e.g., using an encryption or public key. In such embodiments, application 114-1 may decrypt the port number and / or additional parameters, e.g., using a corresponding decryption key, e.g., a private key. Additionally, all URL parameters exchanged between applications may be encrypted for added security.

[0022] Additionally, account application 113 may register local server 115 and / or account application 113 as background tasks with OS 112. Doing so allows local server 115 and / or account application 113 to continue running in the background of OS 112 while other applications run in the foreground of OS 112. Although local server 115 is started, in some embodiments, account application 113 may start local server 115 after generating URL 126.

[0023] FIG. 1E illustrates an embodiment in which account application 113 and / or OS 112 open URL 126 to open application 114-1, while local server 115 and / or account application 113 continue to run in the background of OS 112. In response to receiving URL 126, application 114-1 may identify the port number of local server 115 specified as a parameter of URL 126. Application 114-1 may then request to establish a connection with local server 115 on the specified port, for example, at a local loopback IP address (e.g., 127.0.0.1 for IPv4, ::1 for IPv6, etc.), a “localhost” hostname, or other predefined local IP address. The connection may be established using a protocol supported by local server 115 (e.g., TCP / IP connection establishment, etc.). As noted, if URL 126 contains encrypted data, application 114-1 may decrypt the encrypted port number (or any other relevant parameters) in URL 126. In some embodiments, application 114-1 provides a token and / or digital certificate (or signature) as part of a connection request to local server 115-1. Local server 115 may determine whether the token is valid and / or expected (e.g., the token identifies application 114-1 that may match the token received as a parameter of URL 125). Similarly, local server 115 may verify the certificate using a public key associated with application 114-1. If the token and / or certificate are valid, local server 115 may establish a connection with application 114-1. If not, local server 115 may deny the connection request.

[0024] 1E illustrates an embodiment in which a connection between application 114-1 and local server 115 has been established (local server 115 continues to run as a background task of OS 112). As shown, account application 113 may include data 117. Data 117 may be any type of data. For example, data 117 may include a payment card number (which may be a virtual account number), an expiration date, a CVV, an address, a first name, a last name, or other attributes of an account with account application 113. Advantageously, local server 115 may provide data 117 to application 114-1 while local server 115 runs in the background of OS 112 and application 114-1 runs in the foreground of OS 112.

[0025] FIG. 1F illustrates an embodiment in which application 114-1 receives data 117 from local server 115. Application 114-1 may identify data 117 and determine that data 117 includes one or more attributes of a user and / or an associated account. Application 114-1 may then pre-populate one or more form fields with data 117 and allow the user to complete checkout using the data securely received from local server 115. As noted, doing so allows data 117 to be securely transferred between applications on the same device 110. Furthermore, by requiring only a minimal set of requirements (e.g., API, minimal SDK, etc.), application 114-1 can receive any amount of data from local server 115. The size of application 114-1 would otherwise be much larger to support the disclosed functionality. Furthermore, the embodiments disclosed herein enable applications 114-1 and 114-3 to exchange data even if the applications are registered with different developers.

[0026] FIG. 2A illustrates a schematic diagram of an exemplary system 200 consistent with disclosed embodiments. As shown, the system 200 includes one or more contactless cards 201, one or more of the mobile computing devices 110, and an authentication server 220. The contactless card 201 represents any type of payment card, such as a credit card, a debit card, an ATM card, or a gift card. The contactless card 201 may include one or more communication interfaces 209, such as a radio frequency identification (RFID) chip, configured to communicate with the computing device 110 via NFC, the EMV standard, or other short-range protocols for wireless communication. While NFC is used as an exemplary communication protocol, the present disclosure is equally applicable to other types of communication, such as the EMV standard, Bluetooth, and / or Wi-Fi. The authentication server 220 represents any type of computing device, such as a server, a workstation, a computing cluster, a cloud computing platform, a virtualized computing system, or the like.

[0027] As shown, contactless card memory 202 includes applet 203, counter 204, private key 205, diversified key 206, and unique customer identifier (ID) 207. Applet 203 is executable code configured to perform the operations described herein. Counter 204, private key 205, diversified key 206, and customer ID 207 are used to provide security in system 200, as described in more detail below.

[0028] As mentioned, contactless card 201 may be used to enhance security of local server 115 and mobile device 110. For example, a user of device 110 may desire to use data from account application 113 in application 114-1. Accordingly, FIG. 2A illustrates an embodiment in which account application 114-1 has generated and accessed URL 125 directed to account application 113. OS 112 may then open account application 113, which may receive authentication credentials for the user's account. Account application 113 may then instruct the user to tap contactless card 201 to device 110. Generally, when contactless card 201 is brought within communication range of communication interface 218 (e.g., a card reader / writer) of device 110, applet 203 of contactless card 201 may generate encrypted data as part of the authentication process required to activate contactless card 201. To enable NFC data transfer between the contactless card 201 and the mobile device 110, the account application 113 may communicate with the contactless card 201 when the contactless card 201 is sufficiently close to the communication interface 218 of the mobile device 110. The communication interface 218 may be configured to read from and / or communicate with the communication interface 209 of the contactless card 201 (e.g., via NFC, Bluetooth, RFID, etc.). Thus, an exemplary communication interface 218 includes an NFC communication module, a Bluetooth communication module, and / or an RFID communication module.

[0029] As mentioned, system 100 is configured to implement key diversification to protect data, which may be referred to herein as key diversification techniques. Generally, server 220 (or other computing device) and contactless card 201 may be provisioned with the same private key 205 (also referred to as a master key or master symmetric key). More specifically, each contactless card 201 is programmed with a unique private key 205 that has a corresponding pair within (or managed by) server 220. For example, when contactless card 201 is manufactured, the unique private key 205 may be stored in memory 202 of contactless card 201. Similarly, the unique private key 205 may be stored in the customer record (or profile) associated with contactless card 201 within account data 224 of server 220 (and / or stored in another secure location, such as hardware security module (HSM) 225). The private key 205 may be kept secret from all parties other than contactless card 201 and server 220, thereby enhancing the security of system 100. In some embodiments, applet 203 of contactless card 201 may encrypt and / or decrypt data (e.g., customer ID 207) using private key 205 and the data as input to an encryption algorithm. For example, encrypting customer ID 207 with private key 205 may result in an encrypted customer ID. Similarly, authentication server 220 may encrypt and / or decrypt data associated with contactless card 201 using the corresponding private key 205.

[0030] In some embodiments, counter 204 and / or private key 205 of contactless card 201 and server 220 may be used in conjunction with counter 204 to enhance security using key diversification. Counter 204 comprises a value that is synchronized between a given contactless card 201 and server 220. Counter value 204 may comprise a number that changes each time data is exchanged between contactless card 201 and server 220 (and / or contactless card 201 and mobile device 110). When preparing to send data (e.g., to server 220 and / or mobile device 110), applet 203 of contactless card 201 may increment counter value 204. Contactless card 201 may then provide private key 205 and counter value 204 as input to an encryption algorithm, which generates diversified key 206 as output. The encryption algorithm may include an encryption algorithm, a hash-based message authentication code (HMAC) algorithm, a cipher-based message authentication code (CMAC) algorithm, etc. Non-limiting examples of encryption algorithms may include symmetric encryption algorithms such as 3DES or AES128, symmetric HMAC algorithms such as HMAC-SHA-256, and symmetric CMAC algorithms such as AES-CMAC. Examples of key diversification techniques are described in detail in U.S. Patent Application No. 16 / 205,119, filed November 29, 2018. The aforementioned patent application is incorporated herein by reference in its entirety.

[0031] Continuing with the key diversification example, contactless card 201 may encrypt data (e.g., customer ID 207 and / or any other data) using diversified key 206 and the data as inputs to an encryption algorithm. For example, encrypting customer ID 207 with diversified key 206 may result in encrypted customer ID 208. Once generated, applet 203 may transmit encrypted customer ID 208 to mobile device 110, for example, via NFC. Account application 113 may then transmit encrypted customer ID 208 to authentication server 220 via network 230.

[0032] The authentication application 223 may then attempt to authenticate the encrypted data. For example, the authentication application 223 may attempt to decrypt the encrypted customer ID 208 using a copy of the private key 205 stored by the server 220. In another example, the authentication application 223 may provide the private key 205 and the counter value 204 as inputs to an encryption algorithm, which generates the diversified key 206 as an output. The resulting diversified key 206 may correspond to the diversified key 206 of the contactless card 201, which may be used to decrypt the encrypted customer ID 208. Thus, the authentication application 223 may successfully decrypt the encrypted data, thereby verifying the encrypted customer ID 208. For example, as noted, the customer ID 207 may be used to generate the encrypted customer ID 208. In such an example, the authentication application 223 may decrypt the encrypted customer ID 208 using the private key 205 of the authentication server 220. If the decryption results in a customer ID 207 associated with an account in account data 224, authentication application 223 verifies the encrypted customer ID 208. If authentication application 223 cannot decrypt the encrypted customer ID 208 to obtain the expected result (e.g., customer ID 207 of the account associated with contactless card 201), authentication application 223 does not verify the encrypted customer ID 208. Due to a failed verification, authentication application 223 may return an error to account application 113, which may refrain from starting local server 115.

[0033] Regardless of the decryption technique used, authentication application 223 may successfully decrypt encrypted customer ID 208, thereby verifying encrypted customer ID 207 (e.g., by comparing the resulting customer ID 208 to the customer ID stored in account data 224 and / or based on an indication of successful decryption using keys 205 and / or 206). While keys 205, 206 are shown as stored in memory 222, keys 205, 206 may be stored elsewhere, such as in secure element and / or HSM 225. In such an embodiment, secure element and / or HSM 225 may use keys 205 and / or 206 and a cryptographic function to decrypt encrypted customer ID 207. Similarly, secure element and / or HSM 225 may generate diversified key 206 based on private key 205 and counter value 204, as described above.

[0034] FIG. 2B illustrates an embodiment in which authentication application 223 verifies encrypted customer ID 208. As shown, authentication application 223 may return verification 210 instructions to account application 113. Based on verification 210 and / or receipt of account authentication credentials, account application 113 may decide to start local server 115. FIG. 2C illustrates an embodiment in which account application 113 starts local server 115 on device 110. Next, account application 113 may generate a URL including the port number of local server 115, which is directed to requesting application 114-1. The URL then opens requesting application 114-1 and allows application 114-1 to establish a connection with local server 115 running in the background of OS 112. Application 114-1 may then receive data from account application 113 and / or server 115.

[0035] FIG. 3A is a schematic diagram 300 illustrating an example embodiment that enables communication between applications within a mobile operating system. As shown, FIG. 3A includes a mobile device 110 executing an example application 114. For example, application 114 may be an application that allows a user to place an order and provide payment information or an order. As shown, a graphical user interface (GUI) of application 114 includes a payment form having fields 301-305, where field 301 is a name field, field 302 is an account number field, field 303 is an expiration date field, field 304 is a CVV field, and field 305 is an address field. As shown, application 114 may output a notification 309 specifying that the user selects notification 309 to complete checkout using data from another application, e.g., account application 113.

[0036] FIG. 3B is a schematic diagram 310 illustrating an embodiment in which the user selects notification 309. In doing so, application 114 may generate a URL 125 to account application 113, where URL 125 includes the identifier of application 114 as a parameter. When opened, URL 125 causes account application 113 to open in the foreground of OS 112. As shown in FIG. 3B, account application 113 may output a notification 306 specifying that contactless card 201 be tapped to mobile device 110 to proceed with authentication. As noted, account application 113 may prompt the user to provide authentication credentials (not shown) before and / or after tapping card 201. When contactless card 201 is tapped to mobile device 110, account application 113 sends instructions to contactless card 201 via communication interface 218, generates encrypted data (e.g., encrypted customer ID 208) as described above, and sends the encrypted data to account application 113. Upon receipt, account application 113 may send the encrypted data to server 220, where authentication application 223 verifies the encrypted data using key diversification as described above. Authentication application 223 may then send verification instructions to account application 113. Additionally, authentication application 223 may send any type of data to account application 113 based on verification of the encrypted data, such as the account holder name, billing address, shipping address, etc. from account data 224.

[0037] When the account application 113 receives an indication identifying that the server 220 has verified the encrypted data, the account application 113 may start the local server 115 on the device 110. The account application 113 may then generate a URL 126 directed to the requesting application 114, where the parameters of the URL 126 include the port number of the local server 115. The application 114 may then connect to the local server 115 as described above and request relevant data, such as name, address, payment card information, expiration date, and CVV.

[0038] FIG. 3C is a schematic diagram 320 illustrating an embodiment in which application 114 receives requested data from local server 115. Application 114 may include an SDK or API that enables application 114 to request and / or receive data and parse the received data. As shown, application 114 may populate the user's name in name field 301, account number in account number field 302, expiration date in expiration date field 303, CVV in CVV field 304, and address in address field 305. The user may then complete the purchase using button 311. Doing so may complete the purchase. Additionally, the data entered into fields 301-305 may be stored in a user profile associated with application 114.

[0039] The operation of the disclosed embodiments may be further explained with reference to the following figures. Some figures may include logic flows. While such figures presented herein may include specific logic flows, it may be understood that the logic flows merely provide examples of how the general functions as described herein may be implemented. Furthermore, a given logic flow does not necessarily have to be executed in the order presented, unless otherwise specified. Furthermore, a given logic flow may be implemented by a hardware element, a software element executed by a processor, or any combination thereof. In this context, the embodiments are not limited.

[0040] 4 illustrates one embodiment of a logic flow 400. The logic flow 400 may represent some or all of the operations performed by one or more embodiments described herein. For example, the logic flow 400 may include some or all of the operations that enable communication between applications in a mobile operating system. The embodiments are not limited in this context.

[0041] As shown, logic flow 400 begins at block 405, in which device 110 outputs a first application in the foreground of OS 112. For example, the first application may be application 114-1, which may be a ride-sharing application. At block 410, the first application may receive an instruction specifying to receive data from a second application. The second application may be account application 113. For example, while attempting to order transportation services using the ride-sharing application, a user may specify to pull payment data from account application 113. At block 415, the first application generates a first URL directed to the second application. The first URL may include a unique identifier of the first application as a parameter.

[0042] At block 420, the OS 112 authorizes access to the first URL, thereby opening a second application (e.g., account application 113) in the foreground of the OS 112. At block 425, the second application may optionally receive account authentication credentials and / or encrypted data from the contactless card 201. For example, the user may provide biometric credentials and tap the contactless card 201 to the device 110, causing the card 201 to generate and transmit encrypted data. At block 430, the second application receives verification of the encrypted data from the authentication server 220. At block 435, the second application creates a local server 115 on the mobile device 110 at a specified port.

[0043] At block 440, the second application generates a second URL. The second URL may be directed to the first application. A parameter of the second URL may include a port number of the local server 115. At block 445, the second application registers the local server 115 and / or the second application with the OS 112 as a background task, thereby allowing the local server 115 and / or the second application to run in the background of the OS 112 for a period of time. At block 450, the second URL is accessed to open the first application in the foreground of the OS 112, while the local server 115 and / or the second application continues to run in the background of the OS 112.

[0044] At block 455, the first application establishes a connection with the local server 115. At block 460, the first application requests and receives data from the local server 115. At block 465, the first application processes the received data. For example, the data may be payment information from the account application 113, and the ridesharing application 114 may pre-populate the payment information into a payment form. The user may then complete a transportation request with the ridesharing application using the pre-populated payment information.

[0045] 5 illustrates one embodiment of a logic flow 500. The logic flow 500 may represent some or all of the operations performed by one or more embodiments described herein. For example, the logic flow 500 may include some or all of the operations for enabling communication between applications within a mobile operating system based on verification of encrypted data generated by the contactless card 201. The embodiments are not limited in this context.

[0046] As shown, logic flow 500 begins at block 505, where a user taps contactless card 201 to mobile device 110, causing contactless card 201 to generate and transmit encrypted data (e.g., encrypted customer ID 208). At block 510, applet 203 on contactless card 201 generates diversified key 206 by encrypting counter value 204 and master key 205 stored in contactless card memory 202. In some embodiments, applet 203 may increment counter 204 before encryption. At block 515, contactless card 201 encrypts data (e.g., customer identifier 207) using diversified key 206 and an encryption algorithm to generate encrypted data (e.g., encrypted customer ID 208).

[0047] At block 520, the contactless card 201 may send the encrypted data to the account application 113 of the mobile device 110, for example, using NFC. At block 525, the account application 113 of the mobile device 110 may send the data received from the contactless card 201 to the authentication application 223 of the server 220. At block 530, the authentication application 223 of the server 220 may use the master key 205 and the counter value 204 as inputs to an encryption algorithm to generate the diversified key 206. In one embodiment, the authentication application 223 increments the counter value 204 of the server 220 to synchronize it with the counter value 204 in the memory of the contactless card 201.

[0048] At block 535, the authentication application 223 uses the diversified key 206 to decrypt the encrypted customer ID 208 received from the contactless card 201 via the mobile device 110. Doing so may yield at least the customer ID 207. By obtaining the customer ID 207, the authentication application 223 may verify the data received from the contactless card 201 at block 540. For example, the authentication application 223 may compare the customer ID 207 with the customer identifier of the associated account in the account data 224 and verify the data based on a match. At block 545, the authentication application 223 may send an instruction to the account application 113 specifying that the encrypted data has been verified. At block 550, the account application 113 may initiate the local server 115 in response to receiving the instruction from the server at block 545.

[0049] FIG. 6A illustrates a contactless card 201, which may comprise a payment card such as a credit card, debit card, and / or gift card. As shown, the contactless card 201 may be issued by a service provider 602, which displays the card's name on the front or back. In some examples, the contactless card 201 may comprise, but is not limited to, an identification card unrelated to a payment card. In some examples, the payment card may comprise a dual-interface contactless payment card. The contactless card 201 may comprise a substrate 610, which may include a single layer or one or more laminated layers composed of plastic, metal, and other materials. Exemplary substrate materials include polyvinyl chloride, polyvinyl chloride acetate, acrylonitrile butadiene styrene, polycarbonate, polyester, anodized titanium oxide, palladium, gold, carbon, paper, and biodegradable materials. In some examples, the contactless card 201 may have physical characteristics conforming to the ID-1 format of the ISO / IEC 7810 standard; otherwise, the contactless card may conform to the ISO / IEC 14443 standard. However, it should be understood that contactless cards 201 according to the present disclosure may have different characteristics and the present disclosure does not require contactless cards to be implemented as payment cards.

[0050] The contactless card 201 may also include identification information 615 displayed on the front and / or back of the card, and a contact pad 620. The contact pad 620 may be configured to establish contact with other communication devices, such as the mobile device 110, a user device, a smartphone, a laptop, a desktop, or a tablet computer. The contactless card 201 may also include processing circuitry, an antenna, and other components not shown in FIG. 6A . These components may be located behind the contact pad 620 or elsewhere on the substrate 610. The contactless card 201 may also include a magnetic strip or tape (not shown in FIG. 6A ) that may be located on the back of the card.

[0051] 6B, contact pad 620 of contactless card 201 may include processing circuitry 625 for storing and processing information, including microprocessor 630 and memory 202. It will be understood that processing circuitry 625 may include additional components, including processors, memory, error and parity / CRC checkers, data encoders, anti-collision algorithms, controllers, command decoders, security primitives, and tamper-proof hardware, as needed to perform the functions described herein.

[0052] The memory 202 may be read-only memory, write-once read-multiple memory, or read / write memory, such as RAM, ROM, and EEPROM, and the contactless card 201 may include one or more of these memories. Read-only memory may be read-only or one-time programmable at the factory. One-time programming allows it to be written once and read many times. Write-once / read-multiple memory may be programmed at some point after the memory chip leaves the factory. Once programmed, the memory may not be rewritten, but it may be read many times. Read / write memory may be programmed and reprogrammed many times after leaving the factory. Read / write memory may be read many times after leaving the factory.

[0053] Memory 202 may be configured to store one or more applets 203, counter value 204, secret key 205, diversified key 206, and one or more customer IDs 207. One or more applets 203 may comprise one or more software applications configured to run on one or more contactless cards, such as a Java Card applet. However, it is understood that applet 203 is not limited to a Java Card applet and may instead be any software application capable of operating on a contactless card or other device with limited memory. Customer ID 207 may comprise a unique alphanumeric identifier assigned to a user of contactless card 201, which may distinguish the contactless card user from other contactless card users. In some examples, customer ID 207 may identify both the customer and the account assigned to that customer, and may further identify the contactless card associated with the customer's account. In some embodiments, applet 203 may use customer ID 207 as input to an encryption algorithm using keys 205 and / or 206 to encrypt customer ID 207. Similarly, applet 203 may construct a URL that includes encrypted customer ID 207 as a parameter.

[0054] Although the processor and memory elements of the foregoing exemplary embodiments are described with reference to contact pads, the present disclosure is not limited thereto, and it will be understood that these elements may be implemented external to, or completely separate from, the pads 620, or as additional elements in addition to the processor 630 and memory 202 elements located within the contact pads 620.

[0055] In some examples, the contactless card 201 may include one or more antennas 655. The one or more antennas 655 may be disposed within the contactless card 201 and around the processing circuit 625 of the contact pad 620. For example, the one or more antennas 655 may be integrated with the processing circuit 625, or the one or more antennas 655 may be used with an external booster coil. As another example, the one or more antennas 655 may be external to the contact pad 620 and the processing circuit 625.

[0056] In one embodiment, the coil of the contactless card 201 may function as the secondary of an air-core transformer. The terminal may communicate with the contactless card 201 by disconnecting power or amplitude modulation. The contactless card 201 may infer data transmitted from the terminal using gaps in the contactless card's power connection, which may be maintained functionally through one or more capacitors. The contactless card 201 may return communication by switching the load on the contactless card's coil or load modulation. Load modulation may be detected in the terminal's coil through interference. More generally, using the antenna 655, processing circuitry 625, and / or memory 202, the contactless card 201 provides a communication interface for communicating via NFC, Bluetooth, and / or Wi-Fi communications.

[0057] As described above, contactless card 201 may be built on a software platform operable on a memory-limited smart card or other device, such as a Java Card, and one or more applications or applets may be securely executed. The applets may be added to the contactless card to provide one-time passwords (OTPs) for multi-factor authentication (MFA) in various mobile application-based use cases. The applets may be configured to respond to one or more requests, such as near-field wireless data exchange requests, from a reader, such as a mobile NFC reader (e.g., communication interface 218 of device 110), and generate an NDEF message comprising a cryptographically secure OTP (e.g., an encrypted customer ID) encoded as an NDEF text tag.

[0058] FIG. 7 illustrates an embodiment of an exemplary computing architecture 700 comprising a computing system 702 that may be suitable for implementing various embodiments as described above. In various embodiments, computing architecture 700 may comprise or be implemented as part of an electronic device. In some embodiments, computing architecture 700 may represent, for example, a system implementing one or more components of systems 100 and / or 200. In some embodiments, computing system 702 may represent, for example, contactless card 101, mobile device 110, and authentication server 120. In this context, the embodiments are not limited. More generally, computing architecture 700 is configured to implement all logic, applications, systems, methods, apparatus, and functions described herein with reference to FIGS. 1-6B.

[0059] The terms “system,” “component,” and “module,” as used in this application, are intended to refer to any computer-related entity: hardware, a combination of hardware and software, software, or software in execution, an example of which is provided by exemplary computing architecture 700. For example, a component may be, but is not limited to, a process running on a computer processor, a computer processor, a hard disk drive, multiple storage drives (optical and / or magnetic storage media), an object, an executable, a thread of execution, a program, and / or a computer. By way of example, both an application running on a server and the server may be a component. One or more components may reside within a process and / or thread of execution, and components may be localized on one computer and / or distributed among two or more computers. Furthermore, components may be communicatively coupled to each other by various types of communication media to coordinate their operations. Coordination may include unidirectional or bidirectional exchange of information. For example, components may communicate information in the form of signals communicated over the communication media. Information may be embodied as signals assigned to various signal lines. In such assignments, each message is a signal. However, further embodiments may alternatively use data messages. Such data messages may be transmitted over a variety of connections, examples of which include parallel interfaces, serial interfaces, and bus interfaces.

[0060] Computing system 702 includes various typical computing elements, such as one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input / output (I / O) components, power supplies, etc. However, embodiments are not limited to implementation by computing system 702.

[0061] 7, computing system 702 includes a processor 704, a system memory 706, and a system bus 708. Processor 704 may be any of a variety of commercially available computer processors, including, but not limited to, AMD® Athlon®, Duron®, and Opteron® processors, ARM® application, embedded, and secure processors, IBM® and Motorola® DragonBall® and PowerPC® processors, IBM and Sony® Cell processors, Intel® Celeron®, Core®, Core(2) Duo®, Itanium®, Pentium®, Xeon®, and XScale® processors and similar processors. Dual microprocessors, multi-core processors, and other multi-processor architectures may also be used as processor 704.

[0062] The system bus 708 provides an interface from the system memory 706 to system components including, but not limited to, the processor 704. The system bus 708 may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. Interface adapters may connect to the system bus 708 through a slot architecture. Examples of slot architectures include, but are not limited to, Accelerated Graphics Port (AGP), CardBus, (Extended) Industry Standard Architecture ((E)ISA), MicroChannel Architecture (MCA), NuBus, Peripheral Component Interconnect (Expansion) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA), etc.

[0063] The system memory 706 may include various types of computer-readable storage media in the form of one or more high-speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), double data rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory (e.g., one or more flash arrays), polymer memory such as ferroelectric polymer memory, ovonic memory, phase-change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, arrays of devices such as redundant array of independent disks (RAID) drives, solid-state memory devices (e.g., USB memory, solid-state drive (SSD)), and other types of storage media suitable for storing information. In the illustrated embodiment shown in FIG. 7, the system memory 706 may include non-volatile memory 710 and / or volatile memory 712. The non-volatile memory 710 may store a basic input / output system (BIOS).

[0064] Computing system 702 may include various types of computer-readable storage media in the form of one or more low-speed memory units, including an internal (or external) hard disk drive (HDD) 714, a magnetic floppy disk drive (FDD) 716 that reads from or writes to a removable magnetic disk 718, and an optical disk drive 720 that reads from or writes to a removable optical disk 722 (e.g., a CD-ROM or DVD). HDD 714, FDD 716, and optical disk drive 720 may be connected to system bus 708 by an HDD interface 724, an FDD interface 726, and an optical drive interface 728, respectively. HDD interface 724 for external drive implementations may include at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies. Computing system 702 is generally configured to implement all of the logic, systems, methods, devices, and functions described herein with reference to FIGS. 1-6B.

[0065] The drives and associated computer-readable media provide volatile and / or nonvolatile storage of data, data structures, computer-readable instructions, computer-executable instructions, etc. For example, a number of program modules may be stored on the drives and memory units 710, 712, including an operating system 730, one or more application programs 732, other program modules 734, and program data 736. In one embodiment, the one or more application programs 2032, other program modules 734, and program data 736 may include, for example, various applications and / or components of the systems 100, 200, such as applet 203, counter 204, private key 205, diversified key 206, customer ID 207, operating system 112, account application 113, other applications 114, authentication application 223, account data 224, and / or encrypted customer ID 208.

[0066] A user may enter commands and information into the computing system 702 through one or more wired / wireless input devices, for example, a keyboard 738 and a pointing device such as a mouse 740. Other input devices may include a microphone, infrared (IR) remote control, radio frequency (RF) remote control, game pad, stylus pen, card reader, dongle, fingerprint reader, grab, graphics tablet, joystick, keyboard, retina reader, touch screen (e.g., capacitive, resistive, etc.), trackball, track pad, sensor, stylus, etc. These and other input devices are often connected to the processor 704 through an input device interface 742 coupled to the system bus 708, but may be connected by other interfaces, such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, etc.

[0067] A monitor 744 or other type of display device is also connected to the system bus 708 via an interface, such as a video adapter 746. The monitor 744 may be internal or external to the computing system 702. In addition to the monitor 744, computers typically include other peripheral output devices, such as speakers, printers, etc.

[0068] The computing system 702 may operate in a networked environment using logical connections via wired and / or wireless communications to one or more remote computers, such as a remote computer 748. The remote computer 748 may be a workstation, a server computer, a router, a personal computer, a portable computer, a microprocessor-based entertainment device, a peer device, or other common network node and typically includes many or all of the elements described relative to the computing system 702, although for simplicity, only a memory / storage device 750 is shown. The logical connections shown include wired / wireless connections to a local area network (LAN) 752 and / or larger networks, e.g., a wide area network (WAN) 754. Such LAN and WAN networking environments are commonplace in offices and businesses, facilitating enterprise-wide computer networks such as intranets. All of these may connect to a global communications network, e.g., the Internet. In an embodiment, the network 230 of FIG. 2 is one or more of the LAN 752 and the WAN 754.

[0069] When used in a LAN networking environment, the computing system 702 is connected to the LAN 752 through a wired and / or wireless communication network interface or adapter 756. The adapter 756 may facilitate wired and / or wireless communication to the LAN 752, which may include a wireless access point disposed thereon for communicating with the wireless functionality of the adapter 756.

[0070] When used in a WAN networking environment, the computing system 702 may include a modem 758 or have other means for establishing communications over the WAN 754, such as connected to a communications server on the WAN 754 or via the Internet. The modem 758 may be internal or external, a wired and / or wireless device, and connects to the system bus 708 via the input device interface 742. In a networked environment, program modules depicted relative to the computing system 702, or portions thereof, may be stored in the remote memory / storage device 750. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between computers may be used.

[0071] The computing system 702 is operable to communicate with wired and wireless devices or entities using the IEEE 802 family of standards, such as wireless devices operatively arranged for wireless communication (e.g., IEEE 802.16 wireless modulation techniques). This includes at least Wi-Fi (or Wireless Fidelity), WiMax, Bluetooth® wireless technologies, and the like. Thus, communication can be in a predefined structure, similar to a traditional network, or simply ad hoc communication between at least two devices. Wi-Fi networks use radio technologies called IEEE 802.11x (a, b, g, n, etc.) to provide secure, reliable, and high-speed wireless connectivity. Wi-Fi networks can be used to connect computers to each other, to the Internet, or to wired networks (using IEEE 802.3-related media and functions).

[0072] Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include a processor, a microprocessor, a circuit, a circuit element (e.g., a transistor, a resistor, a capacitor, an inductor, etc.), an integrated circuit, an application specific integrated circuit (ASIC), a programmable logic device (PLD), a digital signal processor (DSP), a field programmable gate array (FPGA), a logic gate, a register, a semiconductor device, a chip, a microchip, a chipset, etc. Examples of software may include a software component, a program, an application, a computer program, an application program, a system program, a machine program, an operating system software, a middleware, a firmware, a software module, a routine, a subroutine, a function, a method, a procedure, a software interface, an application program interface (API), an instruction set, a computing code, a computer code, a code segment, a computer code segment, a word, a value, a symbol, or any combination thereof. The decision whether an embodiment is implemented using hardware and / or software elements may vary according to any number of factors, such as desired computational speed, power level, heat tolerance, processing cycle budget, input data rate, output data rate, memory resources, data bus speed and other design or performance constraints.

[0073] One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium that represent various logic within a processor, which, when read by a machine, causes the machine to manufacture logic that performs the techniques described herein. Such representations, known as “IP cores,” are stored on tangible machine-readable media and provided to various customers or manufacturing facilities for loading into manufacturing machines that create the logic or processors. Some embodiments may be implemented using, for example, a machine-readable medium or article that may store instructions or sets of instructions that, when executed by the machine, cause the machine to perform methods and / or operations in accordance with the embodiments. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, etc., and may be implemented using any suitable combination of hardware and / or software. A machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and / or storage unit, such as memory, removable or non-removable media, erasable or non-erasable media, writable or rewritable media, digital or analog media, hard disk, floppy disk, compact disk read-only memory (CD-ROM), compact disk recordable (CD-R), compact disk rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various digital versatile disks (DVDs), tape, cassette, etc. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, etc., and may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and / or interpreted programming language.

[0074] The foregoing description of exemplary embodiments has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure to the precise form disclosed. Many modifications and variations are possible in light of this disclosure. It is intended that the scope of the disclosure be limited not by this detailed description, but by the appended claims. Future applications claiming priority to this application may claim the disclosed subject matter differently and may generally include any set of one or more limitations as variously disclosed or demonstrated herein.

Claims

1. 1. A computer-implemented method comprising: a first application executing on a processor generating a first link directed to a second application, wherein parameters of the first link include an identifier of the first application; a mobile operating system (OS) running on the processor accessing the first link to open the second application; the second application running on the processor starting a Transmission Control Protocol / Internet Protocol (TCP / IP) server on a port; the second application creating a second link directed to the first application, the parameters of the second link including the port; the OS accessing the second link and opening the first application; the first application establishing a connection with the TCP / IP server using the port specified in the second link; the first application receiving data from the second application via the connection with the TCP / IP server; A computer-implemented method comprising:

2. The computer-implemented method comprises: the first application validating at least a portion of the first link using an application programming interface (API) of the OS before the OS accesses the first link; the second application verifying at least a portion of the second link using the API of the OS before the OS accesses the second link; The computer-implemented method of claim 1 further comprising:

3. The identifier of the first application includes a token, and the computer-implemented method includes: receiving, by the TCP / IP server, a request to establish the connection from the first application, the request including the token; the TCP / IP server validating the token; The computer-implemented method of claim 1 further comprising:

4. the first link and the second link include universal link uniform locations (URLs) directed to the first and second applications, respectively; 10. The computer-implemented method of claim 1.

5. The computer-implemented method comprises: the second application registering the second application as a background task that runs in the background of the OS using an application programming interface of the OS; the OS running the TCP / IP server in the background of the OS as part of a background task; The computer-implemented method of claim 1 further comprising:

6. the first application determining that the data received from the second application includes one or more attributes of an account; the first application populating one or more form fields of the first application with the one or more attributes of the account; The computer-implemented method of claim 1 further comprising:

7. The computer-implemented method further comprises, before the second application starts the TCP / IP server: receiving a cryptogram from the contactless card by the second application; the second application transmitting the ciphertext to an authentication server; receiving, by the second application, an indication from the authentication server specifying that the authentication server has decrypted the ciphertext, and wherein the second application starts the TCP / IP server based at least in part on the indication received from the authentication server; The computer-implemented method of claim 1 further comprising:

8. 1. An apparatus comprising: a processor; and a memory storing instructions that, when executed by the processor, cause the processor to: a first application generating a first link directed to a second application, wherein parameters of the first link include an identifier of the first application; a mobile operating system (OS) accessing the first link and opening the second application; the second application starting a Transmission Control Protocol / Internet Protocol (TCP / IP) server on a port; the second application creating a second link directed to the first application, the parameters of the second link including the port; the OS accessing the second link and opening the first application; the first application establishing a connection with the TCP / IP server using the port specified in the second link; the first application receiving data from the second application via the connection with the TCP / IP server; A device that performs the following.

9. The memory stores instructions that, when executed by the processor, cause the processor to: the first application validating at least a portion of the first link using an application programming interface (API) of the OS before the OS accesses the first link; the second application verifying at least a portion of the second link using the API of the OS before the OS accesses the second link; The apparatus of claim 8 , wherein the apparatus causes the following to be executed:

10. The identifier of the first application includes a token, and the memory stores instructions that, when executed by the processor, cause the processor to, prior to the establishing of the connection: receiving, by the TCP / IP server, a request to establish the connection from the first application, the request including the token; the TCP / IP server validating the token; The apparatus of claim 8 , further comprising:

11. the first link and the second link include universal link uniform locations (URLs) directed to the first and second applications, respectively; 9. The apparatus of claim 8.

12. The memory stores instructions that, when executed by the processor, cause the processor to: the second application registering the second application as a background task that runs in the background of the OS using an application programming interface of the OS; the OS running the TCP / IP server in the background of the OS as part of the background task; The apparatus of claim 8 , wherein the apparatus causes the following to be executed:

13. The memory stores instructions that, when executed by the processor, cause the processor to: the first application determining that the data received from the second application includes one or more attributes of an account; the first application populating one or more form fields of the first application with the one or more attributes of the account; The apparatus of claim 8 , further comprising:

14. The memory stores instructions that, when executed by the processor, cause the processor to, before the second application starts the TCP / IP server: receiving a cryptogram from the contactless card by the second application; the second application transmitting the ciphertext to an authentication server; receiving, by the second application, an indication from the authentication server specifying that the authentication server has decrypted the ciphertext, the second application initiating the TCP / IP server based at least in part on the indication received from the authentication server; The apparatus of claim 8 further comprising:

15. 1. A non-transitory computer-readable storage medium containing computer-readable program code that, when executed by a processor, causes the processor to: a first application generating a first link directed to a second application, wherein parameters of the first link include an identifier of the first application; a mobile operating system (OS) running on the processor accessing the first link to open the second application; the second application starting a Transmission Control Protocol / Internet Protocol (TCP / IP) server on a port; the second application creating a second link directed to the first application, the parameters of the second link including the port; the OS accessing the second link and opening the first application; the first application establishing a connection with the TCP / IP server using the port specified in the second link; the first application receiving data from the second application via the connection with the TCP / IP server; A computer-readable storage medium that causes the computer to execute the method.

16. The computer-readable storage medium includes computer-readable program code that, when executed by the processor, causes the processor to: the first application validating at least a portion of the first link using an application programming interface (API) of the OS before the OS accesses the first link; the second application verifying at least a portion of the second link using the API of the OS before the OS accesses the second link; 16. The computer-readable storage medium of claim 15, wherein the computer-readable storage medium causes execution of the following:

17. The identifier of the first application includes a token, and the storage medium stores computer readable program code that, when executed by the processor, causes the processor to, before the establishing of the connection: receiving, by the TCP / IP server, a request to establish the connection from the first application, the request including the token; the TCP / IP server validating the token; 16. The computer-readable storage medium of claim 15, further comprising:

18. the first link and the second link include universal link uniform locations (URLs) directed to the first and second applications, respectively; 16. The computer-readable storage medium of claim 15.

19. The computer-readable storage medium includes computer-readable program code that, when executed by the processor, causes the processor to: the second application registering the second application as a background task that runs in the background of the OS using an application programming interface of the OS; the OS running the TCP / IP server in the background of the OS as part of a background task; 16. The computer-readable storage medium of claim 15, wherein the computer-readable storage medium causes execution of the following:

20. The computer-readable storage medium includes computer-readable program code that, when executed by the processor, causes the processor to: the first application determining that the data received from the second application includes one or more attributes of an account; the first application populating one or more form fields of the first application with the one or more attributes of the account; The computer-readable storage medium of claim 15 , further comprising:

Citation Information

Patent Citations

  • Data communication terminal, proxy device, data communication system, and data communication method

    JP2009253444A

  • System, program, method and server for communication

    JP2019125179A

  • Method and apparatus for realizing communication between a web page and a native application, and electronic device

    JP2019530089A

  • Using on-demand applications to generate virtual numbers for a contactless card to securely autofill forms

    US10467622B1