Out-of-band call verification

A caller verification server receives a verification request message from a calling party via a data network. The verification request is associated with a communication from the calling party to a called device placed via a telephone network. The telephone network is logically separate from the data network. Thus, the verification request message travelling over the data network is said to be “out-of-band” relative to the telephone network. Responsive to receipt of the verification request message, the caller verification server generates a verification message indicating that the associated communication is verified as being from the calling party. The caller verification server sends the verification message to the called device via the data network.

BACKGROUND

1. Field of Art

The present invention generally relates to the field of telephony and specifically to verifying calls made from calling parties to called devices.

2. Background of the Invention

Nuisance telephone calls are a growing problem. Such calls include unsolicited calls from nuisance callers like telemarketers and fraudsters. Computer technology, such as “robocallers,” allows the nuisance callers to place a high volume of calls. Moreover, centralized directory services make it easier for the nuisance callers to gather large amounts of telephone numbers. The combination of these two abilities allows nuisance callers to engage in mass calling campaigns. These unwanted calls interrupt and annoy the called party, and may also lead to fraud.

In addition, technical characteristics of the telephone network make it relatively easy for a caller to spoof the telephone number from which a call is reportedly placed. Some callers take advantage of this ability for legitimate purposes. For example, a call center run by a legitimate party in which multiple different people make outbound calls may spoof the calling telephone number so that all of its calls appear to originate from a single number. Malicious callers also take advantage of the ability to spoof calling numbers. For example, a fraudulent caller can spoof the number of a legitimate caller so that the call appears legitimate. The caller may then defraud the called party by impersonating the legitimate caller.

SUMMARY

The above and other issues are addressed by a method, computer system, and computer-readable storage medium for verifying that a network communication is legitimate. An embodiment of the method includes receiving a verification request message from a calling party via a data network. The verification request is associated with a communication from the calling party to a called device placed via a telephone network. The method further includes generating, responsive to receipt of the verification request message, a verification message indicating that the associated communication is verified as being from the calling party. The method also includes sending the verification message to the called device via the data network.

An embodiment of the computer system includes a computer processor for executing computer program instructions. The system also includes a non-transitory computer-readable storage medium storing computer program instructions executable by the processor. The instructions are executable to receive a verification request message from a calling party via a data network. The verification request is associated with a communication from the calling party to a called device placed via a telephone network. The instructions are further executable to generate, responsive to receipt of the verification request message, a verification message indicating that the associated communication is verified as being from the calling party. The instructions additionally send the verification message to the called device via the data network.

An embodiment of the non-transitory computer-readable storage medium stores executable computer program instructions. The instructions are executable to receive a verification request message from a calling party via a data network. The verification request is associated with a communication from the calling party to a called device placed via a telephone network. The instructions are further executable to generate, responsive to receipt of the verification request message, a verification message indicating that the associated communication is verified as being from the calling party. The instructions additionally send the verification message to the called device via the data network.

DETAILED DESCRIPTION

FIG. 1is a high-level block diagram illustrating a computing environment100for out-of-band call verification according to one embodiment. As shown, the computing environment100includes a calling party110, a called device120, and a caller verification server130, which are connected via a telephone network105and a data network115. Only one calling party110, called device120, and caller verification server130are illustrated inFIG. 1for clarity. Embodiments of the computing environment100have many calling parties110and called devices120, and may also have multiple caller verification servers130. Likewise, the entities can be arranged in a different manner than displayed inFIG. 1.

The telephone network105enables electronic communication between the calling party110and the called device120. In one embodiment, the telephone network105routes a communication, such as a telephone call or text message, from the calling party110to the called device120. The telephone network105routes the communication using a called number provided by the calling party110. In addition, the telephone network105identifies the calling party110using a calling number. The telephone network105may provide the calling number to the called device120in association with the communication. In addition, the telephone network105may provide additional information, such as a 15-character string describing the communication, via the Caller ID Name (CNAM) service.

In one embodiment, the telephone network105uses standard communication technologies and/or protocols. For example, the telephone network105may be the public switched telephone network (PSTN). The network protocols used on the telephone network105can include Common Channel Signaling System 7 (CCSS7), SIGTRAN, the Session Initiation Protocol (SIP), etc. The telephone network105may also include cellular or other forms of networks supporting mobile telephones using attendant protocols, such as the Long Term Evolution (LTE) protocol.

The data network115enables electronic communication between the calling party110, called device120, and caller verification server130. In one embodiment, the data network115is the Internet. The data network115supports standard Internet communications protocols such as the Transmission Control Protocol/Internet Protocol (TCP/IP). The data network115and telephone network105may share communication paths. However, the data network115is logically separate from the telephone network105and may use different communication paths and protocols. A message sent over the data network115is said to be “out-of-band” relative to the telephone network105because the message is travelling over a logically-separate network. In one embodiment, the telephone network105and the data network115operate at approximately the same speed. That is, a communication placed over the telephone network105and a communication placed over the data network115both take approximately the same amount of time to transit from the source to the destination.

The calling party110is a telephone or another electronic device with telephone-like functionality that allows one or more callers to place calls. For example, the calling party110can be an individual landline or mobile telephone used by a single person to place calls. The calling party110can also be computer operating call platform software that allows multiple people to place calls simultaneously, such as software operated by a telemarketer. The calling party110from which a call is placed has an associated calling number. The calling number may be fixed, so that all calls from the calling party110have the same calling number. The calling number may be dynamic, so that different calls from the calling party110have different calling numbers. For example, calls from a call center may originate from a same calling number associated with the telemarketer. A call originating from the calling party110also has an associated called number. The called number identifies the party to whom the call is placed.

As shown inFIG. 1, the calling party110includes a calling module112, a supplemental information module114, and a verification request module116. Some embodiments have additional and/or different modules. The functions ascribed to the modules may be distributed among the modules in a different manner than described herein.

The calling module112places communications to the called device120via the telephone network105. For example, the calling module112may place a telephone call to the called device120. The calling module112specifies the called device120using a called number. In addition, the calling module112identifies the calling party110using a calling number. The calling module112can associate different calling numbers with different placed communications. The calling module112may place communications on-demand and/or on a schedule.

The supplemental information module114associates supplemental information with communications placed by the calling module112. The supplemental information includes information about the calling party110and information about a communication placed by the calling party via the telephone network105. The supplemental information may include the name, address, image, business hours, and contact information for the calling party110. The contact information for the calling party110may include the physical and/or Internet addresses of the calling party, one or more contact telephone numbers different than the calling number, etc. The supplemental information about a communication may include the date/time that a communication was, or will be, placed, estimated duration of the communication, type of the communication (e.g., a telephone call or a text message), calling and called numbers for the communication, and the purpose of the communication. The date/time that the communication was or will be placed can be specified within a range of dates or times. The supplemental information may further include information about the called device120or a user of the called device120and/or a message for the user of the called device120.

The supplemental information module114generates the supplemental information and/or retrieves the information from a database or another source. For example, the supplemental information module114may communicate with the calling module112to detect when a communication has been or will be placed and obtain supplemental information particular to the communication, such as the time/date of the communication, the calling number, and the called number. The supplemental information module114may access a database to obtain information describing the purpose of the communication and describing the called device120.

The verification request module116sends verification request messages to the caller verification server130via the data network115. A verification request message requests that the caller verification server130verifies to the called device120that a communication placed by the calling party110is legitimate (i.e., was in fact placed by the calling party to the called device). The verification request message is sent out-of-band from the communication made by the calling module112because the request message travels over the data network115rather than the telephone network105. The verification request module116includes at least some of the supplemental information about the communication to the caller verification server130within the verification request message.

The verification request module116interacts with the calling module112and supplemental information modules114to identify placed communications and associated supplemental information. The verification request module116sends a verification request message for each, or a subset, of the communications placed by the calling module112. In one embodiment, the verification request module116sends a verification request message for a particular communication contemporaneously with when the calling module112places the communication. The verification request module116thus sends verification request messages on an ongoing basis, as communications are placed by the calling module112. The verification request module116may also send verification request messages before the calling module112places the communications. For example, the verification request module116may send a verification request message that identifies multiple communications that will be placed by the calling module112in the future, along with associated supplemental information.

The caller verification server130notifies called devices120of whether communications received by the devices are from verified calling parties110. The caller verification server130receives verification request messages from a calling party110via the data network115. The caller verification server130obtains the supplemental information from the messages and uses the supplemental information to identify communications placed, or that will be placed, by the calling party110to called devices120. The caller verification server130communicates with called devices120via the data network115to verify to the called devices120that communications received by the devices are legitimate. That is, the caller verification server130uses the supplemental information to verify to a called device120that a communication received by the called device120via the telephone network105is legitimate, i.e., that the communication was placed by the calling party110that purports to have placed the communication. The caller verification server130may also provide some or all of the supplemental information to the called device120.

The called device120is a telephone or other electronic device with telephone-like functionality that allows a called party to receive a call or other communication placed by the calling party110. The called device120can be an individual landline or mobile telephone. The called device120can also be a computer executing software that allows the computer to receive communications via the telephone network105. The called device120has an associated called number. Communications sent to the associated called number via the telephone network105are received by the called device120. Although this description refers to the device as the “called device”120, the device may also have functionality allowing it to place communications to other devices. In addition, the called device120is in communication with the data network115.

The called device120includes a verification processing module122which verifies that communications received by the called device120are legitimate. The verification processing module122may be an application executing on the called device120. Alternatively, the verification processing module122may be part of an operating system executing on the called device120. In one embodiment, the verification processing module122detects when a communication, such as a call, is received by the called device120via the telephone network105. The verification processing module122communicates with the caller verification server130via the data network115to determine whether the received communication is legitimate. For example, the verification processing module122may determine the calling number associated with a received communication and query the caller verification server130to determine whether the communication is legitimate (i.e., the communication is really from the calling party associated with the calling number). In another example, the verification processing module122may receive a message from the caller verification server130via the data network115contemporaneously with when the communication is received via the telephone network105, and use the message to verify that the communication is legitimate. The verification processing module122reports the result of the verification, i.e., whether the communication is legitimate, to the user of the called device120.

The computing environment100described above thus provides security on the telephone network105by allowing users of called devices120to discriminate between calls that are verified as legitimate and other types of calls. A call from a malicious caller who is using technical characteristics of the telephone network105to spoof a legitimate calling number for a communication will fail verification. A user can use the verification, or lack thereof, as guidance as to whether to respond to a communication (e.g., answer a call) and/or to guide the sort of information that the user discloses as part of a communication. For example, a user may choose to disclose confidential information in response to a verified communication and withhold such information in response to non-verified communications. Accordingly, the computing environment100overcomes the technical security weakness in the telephone network105that allows calling parties110to spoof calling numbers.

FIG. 2is a high-level block diagram illustrating a detailed view of the caller verification server130inFIG. 1according to one embodiment. As shown inFIG. 2, the caller verification server130includes multiple modules. In some embodiments, the functions are distributed among the modules in a different manner than described herein. Moreover, the functions are performed by other entities in some embodiments.

The request receiving module212receives verification request messages from calling parties110via the data network115. In one embodiment, the request receiving module212provides a secure application program interface (API) and receives verification request messages from only authorized and identified calling parties110. The request receiving module212further parses the verification request messages to obtain the supplemental information contained therein.

A caller verification module214analyzes the supplemental information received in the verification request messages to identify verified communications placed by the calling parties110. Recall that the supplemental information includes information about calling parties and information about communications placed by the calling party on the telephone network105. For a given verification request, the caller verification module214identifies the calling party110and the called device120. In addition, the caller verification module214identifies the associated communication on the telephone network105and when the communication has been or will be placed. The communication may be placed contemporaneously with when the request receiving module212receives the verification request message, or the communication may be scheduled in the future.

The enhancement module216enhances the supplemental information received in the verification request messages to produce enhanced information. In one embodiment, the enhancement module216receives the supplemental information from the calling party110and uses the supplemental information to obtain additional information. The enhancement module216combines the additional information with the supplemental information to produce the enhanced information. The enhancement module216may obtain the additional information from a local database, from the data network115(e.g., from Internet web sites), or from other sources. For example, the supplemental information may include the name of the calling party110but not certain other information about the calling party, such as an image or business hours. The enhancement module216uses the name of the calling party110in the supplemental information to retrieve other information about the calling party from the data network115, e.g., obtains an image and business hours associated with the calling party from a web site, and combines the name, image, and business hours to form enhanced information.

The verification generation module218generates verification messages including at least some of the supplemental information received in verification request messages and, optionally, enhanced information produced by the enhancement module216. A verification message indicates that an associated communication placed via the telephone network105is verified as from a legitimate calling party110. A verification message may also include additional information about the communication, such as information describing the purpose of the communication, an image associated with the calling party110, and/or a sponsored message from the calling party110. For example, a verification message may include the text string “Verified call from Bank ABC,” indicating that a telephone call from a particular calling party110(“Bank ABC”) is legitimately from the identified calling party110. Another example of a verification message is “Verified call from Bank ABC about potentially fraudulent use of your credit card.” This latter message identifies the verified calling party110and describes the purpose of the communication from that party.

The verification sending module220sends out-of-band verification messages to called devices120via the data network115. The verification sending module220may use push and/or pull-based techniques to send the verification messages to the called devices120. In an embodiment using a push technique, the verification sending module220uses the supplemental information received from a calling party110to identify when a communication is being placed by the calling party to a particular called device120. Generally the communication is placed contemporaneously with when the caller verification server130receives the verification request message from the calling party110, or at a scheduled time in the future. The verification sending module220sends the verification message created by the verification generation module218for the communication to the called device120either before or contemporaneously with when the communication is being placed by the calling party110to that called device120.

In an embodiment using a pull technique, the verification sending module220receives requests for verification messages from called devices120via the data network115using a secure API. A request for a verification message identifies the called device120that made the request. The verification sending module220identifies any verification messages associated with the requesting called device120and sends all or a subset of these verification messages to the called device in response the request. The verification sending module220may send multiple verification messages for communications that are scheduled to be placed in the future to the called device120in response to the request. Alternatively, the verification sending module220may send a single verification message for a communication that was placed, or scheduled to be placed, contemporaneously with when the verification sending module220receives the request from the called device120.

Further, the request for a verification message from a called device120may include information about a communication received by the called device via the telephone network105, such as the calling number and/or CNAM information. In this case, the verification sending module220uses the information to determine whether there is a verification message associated with the communication and sends that message in response to the request. The verification sending module220may further determine whether the verification message indicates that a communication was placed from the calling number to the called number contemporaneously with when the request is received from the called device120, and send the verification only if this is the case. If there are no verification messages for the called device120, either in general or for a communication at the time of the request, the verification sending module220indicates this fact in response to the request.

FIG. 3is a high-level block diagram illustrating a detailed view of the verification processing module122of a called device120according to one embodiment. As shown inFIG. 3, the verification processing module122includes multiple modules. In some embodiments, the functions are distributed among the modules in a different manner than described herein. Moreover, the functions are performed by other entities in some embodiments.

The verification receiving module312receives verification messages from the caller verification server130via the data network115. Depending upon the embodiment, the verification receiving module312may receive verification messages pushed by the caller verification server130, and/or the verification receiving module312may pull (i.e., request) messages from the caller verification server130. In the push embodiment, the verification receiving module312provides a secure API by which it can receive verification messages from the caller verification server130at arbitrary times. Any such messages received via the API are forwarded to other modules within the verification processing module122.

In the pull embodiment, the verification receiving module312uses the API provided by the caller verification server130to request any verification messages applicable to the called device120. The verification receiving module312may make the request when the called device120receives a communication via the telephone network105and include information about the received communication, such as the calling number and/or CNAM information, in the request. The verification receiving module312may also make the request at other times. The verification receiving module312receives one or more verification messages, or an indication that there are no verification messages, for the called device120in response to the request.

The communication verification module314attempts to verify communications received via the telephone network105using the verification messages received via the data network115. The communication verification module314identifies information about a received communication. This information may include the calling and called numbers for the communication, the CNAM string received with the communication, and the time and date that the communication was received. The communication verification module314attempts to correlate the information about the communication received via the telephone network105with supplemental information in a verification message. If the information about the communication correlates with the supplemental information, then the communication verification module314verifies the communication as legitimate. Otherwise, the communication verification module314does not verify the communication as legitimate.

The communication verification module314correlates the information about the received communication with supplemental information in a verification message by comparing equivalent data in the two sets of information to determine whether the data match. For example, the communication verification module314compares the calling number of a received communication with the calling number of a verification message. The communication verification module314verifies a communication as legitimate if at least a threshold amount of data matches. The threshold amount may vary. In one embodiment, a communication is verified as legitimate if at least the calling number matches. For example, in an embodiment where the called device120receives a verification message contemporaneously with when the called device120is expected to receive the corresponding communication via the telephone network105, the communication verification module314may verify the communication if only the calling number matches. In contrast, if the caller device120receives multiple verification message in advance of when the called device is expected to receive the corresponding communications via the telephone network105, the communication verification module314may verify the communication only if the calling number and the date/time that the communication will be placed match.

The verification presentation module316presents the result of the verification attempt performed by the communication verification module314to the user of the called device120. In one embodiment, the verification presentation module316shows a message indicating whether a received communication is verified on a display of the called device120. The message may say “VERIFIED CALLER” or “NOT VERIFIED” for example. The verification presentation module316may also present the result of the verification using other techniques, such as by presenting an image, an audio cue (e.g., a ringtone) and/or haptic feedback.

In addition, the verification presentation module316may present supplemental information and, optionally, enhanced information, from the associated verification message in association with a verified communication. For example, the verification presentation module316may present information about the calling party110and the purpose of the call, the expected duration of the call, and/or a message sponsored by the calling party.

FIG. 4is a flowchart illustrating a method for performing out-of-band call verification according to one embodiment. In some embodiments, the method is performed by the caller verification server130, although some or all of the operations in the method may be performed by other entities in other embodiments. In some embodiments, the operations in the flow chart are performed in a different order and can include different and/or additional steps.

The caller verification server130receives410a verification request message from a calling party110. The verification request message requests that the caller verification server130verifies to a called device120that a communication placed by the calling party110to the called device120is legitimate. The verification request is sent out-of-band from the communication made by the calling module112because the request travels over the data network115rather than the telephone network105. The caller verification server130identifies and analyzes supplemental information in the verification request message to identify412the verified communication. The caller verification server130generates414a verification message for the communication. The caller verification server130sends416the verification message to the called device120that is receiving the communication.

FIG. 5is a flowchart illustrating a method for presenting a result of a verification attempt at a called device120according to one embodiment. In some embodiments, the method is performed by the called device120, although some or all of the operations in the method may be performed by other entities in other embodiments. In some embodiments, the operations in the flow chart are performed in a different order and can include different and/or additional steps.

The called device120receives510a communication allegedly from a calling party110via the telephone network105. In addition, the called device120may receive512an out-of-band verification messages from the caller verification server130. The verification message is received via the data network115, out-of-band from the telephone network105. The called device120may receive the verification message before receiving the communication or contemporaneously with receipt of the communication. The called device120also might not receive any verification messages.

The called device120attempts to verify514the communication using the verification message received from the caller verification server130. The called device120verifies the communication by correlating information about the communication with supplemental information in the verification message. If the called device120did not receive a verification message, or it cannot correlate the information, then the called device does not verify the communication. The called device120then presents516result of the verification attempt to the user of the called device120. The presentation may be a message indicating the result of the verification attempt, a sound such as a ringtone indicating the result of the verification attempt, or another type of presentation.

FIG. 6is a high-level block diagram illustrating an example of a computer for use as the calling party110, called device120, and/or caller verification server130according to one embodiment. Illustrated are at least one processor602coupled to a chipset604. The chipset604includes a memory controller hub650and an input/output (I/O) controller hub655. A memory606and a graphics adapter613are coupled to the memory controller hub650, and a display device618is coupled to the graphics adapter613. A storage device608, keyboard610, pointing device614, and network adapter616may be coupled to the I/O controller hub655. Other embodiments of the computer600have different architectures. For example, the memory606is directly coupled to the processor602in some embodiments.

The storage device608is a non-transitory computer-readable storage medium such as a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. The memory606holds instructions and data used by the processor602. The pointing device614is used in combination with the keyboard610to input data into the computer system600. The graphics adapter613displays images and other information on the display device618. In some embodiments, the display device618includes a touch screen capability for receiving user input and selections. The network adapter616couples the computer system600to a network, such as the telephone network105and/or the data network115. Some embodiments of the computer600have different and/or other components than those shown inFIG. 6. For example, the caller verification server130can be formed of multiple blade servers and lack a display device, keyboard, and other components.

The computer600is adapted to execute computer program modules for providing functionality described herein. As used herein, the term “module” refers to computer program instructions and other logic used to provide the specified functionality. Thus, a module can be implemented in hardware, firmware, and/or software. In one embodiment, program modules formed of executable computer program instructions are stored on the storage device608, loaded into the memory606, and executed by the processor602.